Timer-based apparatus and method for fault-tolerant booting of a storage controller
First Claim
1. An apparatus for automatically selectively booting from redundant copies of a stored program in a storage-controller to tolerate a fault in up to all but one of the copies, the controller having a processor that begins fetching instructions of the stored program each time the processor is reset, the apparatus comprising:
- a timer, coupled to the processor, configured to commence running when the processor is reset a first time, and to reset the processor a second time if said timer expires, wherein said timer is further configured to recommence runing when resetting the processor said second time, and to reset the processor a third time if said timer expires after re-commencing; and
selection logic, coupled to the processor, configured to select a first of the redundant copies for provision to the processor in response to said first reset, and to select a second of the redundant copies other than said first of the redundant copies for provision to the processor in response to said second reset, wherein said selection logic is further configured to select said first of the redundant copies for provision to the processor when said timer resets the processor said third time, wherein the storage controller comprises a redundant array of inexpensive disks (RAID) controller, wherein the stored program comprises a program for controlling a redundant array of inexpensive disks.
2 Assignments
0 Petitions
Accused Products
Abstract
A fault tolerant storage controller having a processor, redundant copies of a stored program, and a timer that automatically runs when the processor is reset is disclosed. Selection logic selects a first copy of the program to boot on the processor. If the timer expires before the first copy successfully boots, the timer resets the processor and re-enables itself to run again. This time, selection logic selects a second copy of the stored program. In one embodiment, the program comprises separate loader and application programs, each having a redundant copy. The loader re-enables the timer when jumping to the first copy of the application code. If the timer expires before the first application copy successfully boots, the timer resets the processor and re-enables itself to run again. This time, the loader selects a second copy of the application program. In one embodiment, the redundant copies are stored in separate FLASH devices; in another, in distinct regions of the same FLASH device.
76 Citations
81 Claims
-
1. An apparatus for automatically selectively booting from redundant copies of a stored program in a storage-controller to tolerate a fault in up to all but one of the copies, the controller having a processor that begins fetching instructions of the stored program each time the processor is reset, the apparatus comprising:
-
a timer, coupled to the processor, configured to commence running when the processor is reset a first time, and to reset the processor a second time if said timer expires, wherein said timer is further configured to recommence runing when resetting the processor said second time, and to reset the processor a third time if said timer expires after re-commencing; and selection logic, coupled to the processor, configured to select a first of the redundant copies for provision to the processor in response to said first reset, and to select a second of the redundant copies other than said first of the redundant copies for provision to the processor in response to said second reset, wherein said selection logic is further configured to select said first of the redundant copies for provision to the processor when said timer resets the processor said third time, wherein the storage controller comprises a redundant array of inexpensive disks (RAID) controller, wherein the stored program comprises a program for controlling a redundant array of inexpensive disks. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37)
-
-
38. A storage controller for providing an improved probability of successfully booting, comprising:
-
first and second copies of a stored program; a microprocessor, coupled to selectively boot said first and second copies of said stored program; selection logic, coupling said microprocessor to said first and second stored program copies, wherein said selection logic initially selects said first stored program copy for said microprocessor to boot; and a timer, coupled to the microprocessor, configured to reset said microprocessor a first time prior to said selection logic initially selecting said first stored program copy for said microprocessor to boot, said timer further configured to reset said microprocessor a second time if said microprocessor fails to boot said first stored program copy within a predetermined time and to update said selection logic to select said second stored program copy for said microprocessor to boot, said timer further configured to reset said microprocessor a third time if said microprocessor fails to boot said second stored program copy within a predetermined time and to update said selection logic to select said first stored program copy for said microprocessor to boot, wherein the storage controller comprises a redundant array of inexpensive disks (RAID) controller, wherein the stored program comprises a program for controlling a redundant array of inexpensive disks. - View Dependent Claims (39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61)
-
-
62. A method for improving the probability of a microprocessor of a storage controller successfully booting a program stored therein, the method comprising:
-
starting a timer a first time in response to the microprocessor being reset a first time; resetting the microprocessor a second time, after said starting the timer the first time, if the timer expired a first time before the microprocessor successfully boots a first copy of the stored program; starting the timer a second time in response to said resetting the microprocessor the second time; causing the microprocessor to attempt to boot a second copy of the stored program after said resetting the microprocessor the second time if the timer expired, the first time, wherein the storage controller comprises a redundant array of inexpensive disks (RAID) controller, wherein the program comprises a program for controlling a redundant array of inexpensive disks; resetting the microprocessor a third time, after said starting the timer the second time, if the timer expired a second time before the microprocessor successfully boots the second copy of the stored program; and causing the microprocessor to attempt to boot the first copy of the stored program after said resetting the microporcessor the third time. - View Dependent Claims (63, 64, 65, 66, 67, 68, 69, 70, 71)
-
-
72. A method for improving the probability of a microprocessor of a storage controller successfully booting a program stored thereon, the method comprising:
-
attempting to boot a first copy of the stored program; determining whether the first copy of the stored program failed to boot; attempting to boot a second copy of the stored program, in response to determining the first copy of the stored program failed to boot, wherein the storage controller comprises a redundant array of inexpensive disks (RAID) controller, wherein the program comprises a program for controlling a redundant array of inexpensive disks; determining whether the second copy of the stored program failed to boot; and attempting to boot the first copy of hte stored program, in response to determining the second copy of the stored program failed to boot. - View Dependent Claims (73, 74, 75, 76, 77, 78, 79, 80, 81)
-
Specification