← Back to Patent Explorer
US5526482A Expired / Lapsed US ⏱️ 0.0 years remaining

Storage device array architecture with copyback cache

Assignee: EMC Corp
•
Filing: 1993-08-26
•
Granted: 1996-06-11
•
Expires: 2013-08-26
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A fault-tolerant storage device array using a copyback cache storage unit for temporary storage. When a Write occurs to the RAID system, the data is immediately written to the first available location in the copyback cache storage unit. Upon completion of the Write to the copyback cache storage unit, the host CPU is immediately informed that the Write was successful. Thereafter, further storage unit accesses by the CPU can continue without waiting for an error-correction block update for the data just written. In a first embodiment of the invention, Read-Modify-Write operations are performed during idle time. In a second embodiment of the invention, normal Read-Modify-Write operation by the RAID system controller continue use Write data in the controller's buffer memory. In a third embodiment, at least two controllers, each associated with one copyback cache storage unit, copy Write data from controller buffers to the associated copyback cache storage unit. If a copyback cache storage unit fails, more than one controller share a single copyback storage unit. In a fourth embodiment, Write data is copied from a controller buffer to a reserved area of each storage unit comprising the array.

Inventors

  • 👤 David C. Stallmo
  • 👤 William A. Brant

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-02 21:42
CPC Classifications
G; G06; G06F; G06F11/00; G06F11/07; G06F11/16; G06F11/1666; G06F11/08; G06F11/10; G06F11/1076; G06F11/14; G06F11/1402; G06F11/1415; G06F11/1435; G06F11/20; G06F11/2053; G06F11/2056; G06F11/2087; G06F11/2094; G06F12/00; G06F12/02; G06F12/08; G06F12/0802; G06F12/0804; G11; G11B; G11B20/00; G11B20/10; G11B20/18; G11B20/1833; G06F11/1441; G06F11/2089; G06F12/0866; G06F2211/00; G06F2211/10; G06F2211/1002; G06F2211/1019; G06F2211/1059

Claims Analysis

Total Claims: 23
Claim 1
Independent Claim 213 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each controller having a corresponding unique logical area in each copyback cache storage unit and including a controller buffer, each storage unit controller for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area of the copyback cache storage unit; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the controller buffer; (2) accessing at least one of the plurality of failure independent storage units and reading information corresponding to each read pending data block; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and associated error-correction block to a stripe of the idle storage units.
Claim 2
Dependent Claim 213 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each controller having a corresponding unique logical area in each copyback cache storage unit and including a controller buffer, each storage unit controller for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area of the copyback cache storage unit; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the controller buffer; (2) accessing at least one of the plurality of failure independent storage units and reading information corresponding to each read pending data block; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and associated error-correction block to a stripe of the idle storage units.
Claim 3
Dependent Claim 39 words
The fault tolerant storage device array of claim 1, wherein: (a) the storage unit controller acknowledges that each data block has been written to the array immediately after each pending data block is written to the copyback cache unit.
Claim 4
Dependent Claim 40 words
The fault-tolerant storage device array of claim 1, wherein each storage unit controller and the corresponding unique logical areas in each of the copyback cache storage units are associated with a unique logical array of the failure independent storage units.
Claim 5
Dependent Claim 78 words
The fault-tolerant storage device array of claim 3, wherein: (a) each storage unit controller is associated with a unique copyback cache storage unit; (b) each storage unit controller writes pending data blocks to a corresponding copyback cache storage unit if the corresponding copyback cache storage unit is available; if the corresponding copyback cache storage unit is unavailable, each storage unit controller writes pending data blocks to the corresponding unique logical area within another available copyback cache storage unit.
Claim 6
Dependent Claim 72 words
The fault-tolerant storage device array of claim 3, wherein: (a) at least one stripe of each logical array of the failure independent storage units is dedicated for storing pending data blocks, each logical array having a corresponding array controller selected from the at least two storage unit controllers; and (b) pending data blocks are written by each array controller to one such dedicated stripe if no copyback cache storage units are available.
Claim 7
Dependent Claim 22 words
The fault-tolerant storage device array of claim 4, wherein at least one copyback cache storage unit is used as a hot spare.
Claim 8
Dependent Claim 70 words
The fault-tolerant storage device array of claim 1, wherein: (a) the copyback cache storage unit includes a track buffer for receiving data blocks to be written to the copyback cache storage unit; and (b) the storage unit controller is further for acknowledging that each data block has been written to the array immediately upon completely writing a pending data block to a track buffer within a copyback cache storage unit.
Claim 9
Dependent Claim 258 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units logically configured as redundant logical arrays for storing information as stripes of blocks, including data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each storage unit controller associated with a unique one of the logical areas and including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area within the at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one read pending data block from the associated logical area of the at least one copyback cache storage unit, the associated logical area being associated with a reading storage unit controller; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle storage units.
Claim 10
Dependent Claim 258 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units logically configured as redundant logical arrays for storing information as stripes of blocks, including data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each storage unit controller associated with a unique one of the logical areas and including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area within the at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one read pending data block from the associated logical area of the at least one copyback cache storage unit, the associated logical area being associated with a reading storage unit controller; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle storage units.
Claim 11
Dependent Claim 308 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units logically configured as redundant logical arrays for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated to temporarily storing pending data blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each storage unit controller associated with a unique one of the logical areas and including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area within the at least one copyback cache storage unit if the copyback cache storage unit is available; if the copyback cache storage unit is unavailable, writing received data blocks into a dedicated stripe within the plurality of storage units; (iii) during idle time of at least some of the plurality of storage units: (1) reading at least one pending data block from the associated logical area of the copyback cache storage unit if the copyback cache storage unit is available, the logical area being associated with a reading storage unit controller; if the copyback cache storage unit is unavailable, reading at least one pending data block from the dedicated stripe; (2) accessing the storage units and reading information corresponding to each read pending data block; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units.
Claim 12
Dependent Claim 308 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units logically configured as redundant logical arrays for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated to temporarily storing pending data blocks; (b) at least one copyback cache storage unit, divided into logical areas, for temporarily storing data blocks; (c) at least two storage unit controllers, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, each storage unit controller associated with a unique one of the logical areas and including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one associated logical area within the at least one copyback cache storage unit if the copyback cache storage unit is available; if the copyback cache storage unit is unavailable, writing received data blocks into a dedicated stripe within the plurality of storage units; (iii) during idle time of at least some of the plurality of storage units: (1) reading at least one pending data block from the associated logical area of the copyback cache storage unit if the copyback cache storage unit is available, the logical area being associated with a reading storage unit controller; if the copyback cache storage unit is unavailable, reading at least one pending data block from the dedicated stripe; (2) accessing the storage units and reading information corresponding to each read pending data block; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and associated error-correction block to a corresponding stripe of the idle storage units.
Claim 13
Dependent Claim 82 words
The fault-tolerant storage device array of claim 9, wherein: (a) the at least one copyback cache storage unit includes a track buffer for receiving data blocks to be written to the at least one copyback cache storage unit; and (b) the at least two storage unit controllers are further for acknowledging that each data block has been written to the fault-tolerant storage device array immediately upon completely writing each pending data block to a track buffer within a copyback cache storage unit.
Claim 14
Dependent Claim 202 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated for temporarily storing pending data blocks; (b) a storage unit controller, coupled to the plurality of storage units, including a controller buffer for receiving pending data blocks and control means, coupled to the controller buffer, for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the at least one dedicated stripe, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one read pending data block from at least one dedicated stripe; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle failure independent storage units.
Claim 15
Dependent Claim 202 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated for temporarily storing pending data blocks; (b) a storage unit controller, coupled to the plurality of storage units, including a controller buffer for receiving pending data blocks and control means, coupled to the controller buffer, for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the at least one dedicated stripe, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one read pending data block from at least one dedicated stripe; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle failure independent storage units.
Claim 16
Dependent Claim 76 words
The fault-tolerant storage device array of claim 11, wherein: (b) at least one of the plurality of storage units includes a track buffer for receiving data blocks to be written to the at least one storage unit; and (c) the storage unit controller is further for acknowledging that each data block has been written to the fault-tolerant storage device array immediately upon completely writing each pending data block to a track buffer within a storage unit.
Claim 17
Dependent Claim 201 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated to temporarily storing pending data blocks; (b) a storage unit controller, coupled to the plurality of storage units, including a controller buffer for receiving pending data blocks and control means, coupled to the controller buffer, for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one dedicated stripe, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of the failure independent storage units: (1) reading at least one read pending data block from the controller buffer; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a corresponding stripe of the idle failure independent storage units.
Claim 18
Dependent Claim 201 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least one stripe comprising data blocks and associated error-correction blocks and at least one stripe dedicated to temporarily storing pending data blocks; (b) a storage unit controller, coupled to the plurality of storage units, including a controller buffer for receiving pending data blocks and control means, coupled to the controller buffer, for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into at least one dedicated stripe, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) during idle time of at least some of the plurality of the failure independent storage units: (1) reading at least one read pending data block from the controller buffer; (2) accessing the failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a corresponding stripe of the idle failure independent storage units.
Claim 19
Dependent Claim 73 words
The fault-tolerant storage device array of claim 13, wherein: (a) at least one of the plurality of storage units includes a track buffer for receiving data blocks to be written to the at least one storage unit; and (b) the storage unit controller is further for acknowledging that each data block has been written to the array immediately upon completely writing each pending data block to a track buffer within a storage unit.
Claim 20
Dependent Claim 268 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit for temporarily storing data blocks, including a track buffer for receiving data to be stored in the copyback cache storage unit; (c) a storage unit controller, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the track buffer of at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) immediately acknowledging that a data block has been written to the fault-tolerant storage device array each time a pending data block is completely received in the track buffer of the at least one copyback cache storage unit; (iv) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the at least one copyback cache storage unit; (2) accessing the plurality of failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle storage units.
Claim 21
Dependent Claim 268 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit for temporarily storing data blocks, including a track buffer for receiving data to be stored in the copyback cache storage unit; (c) a storage unit controller, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the track buffer of at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) immediately acknowledging that a data block has been written to the fault-tolerant storage device array each time a pending data block is completely received in the track buffer of the at least one copyback cache storage unit; (iv) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the at least one copyback cache storage unit; (2) accessing the plurality of failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a stripe of the idle storage units.
Claim 22
Dependent Claim 264 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit for temporarily storing data blocks, including a track buffer for receiving data to be stored in the copyback cache storage unit; (c) a storage unit controller, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the track buffer of at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) immediately acknowledging that a data block has been written to the fault-tolerant storage device array each time a pending data block is completely received in the track buffer of the at least one copyback cache storage unit; (iv) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the controller buffer; (2) accessing the plurality of failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a corresponding stripe of the idle storage units.
Claim 23
Dependent Claim 264 words
A fault-tolerant storage device array including: (a) a plurality of failure independent storage units for storing information as stripes of blocks, including at least data blocks and associated error-correction blocks; (b) at least one copyback cache storage unit for temporarily storing data blocks, including a track buffer for receiving data to be stored in the copyback cache storage unit; (c) a storage unit controller, coupled to the plurality of failure independent storage units and to the at least one copyback cache storage unit, including a controller buffer and control means, the control means being adapted for: (i) receiving data blocks into the controller buffer as pending data blocks; (ii) writing each pending data block into the track buffer of at least one copyback cache storage unit, thereby establishing read pending data blocks, each read pending data block having corresponding information; (iii) immediately acknowledging that a data block has been written to the fault-tolerant storage device array each time a pending data block is completely received in the track buffer of the at least one copyback cache storage unit; (iv) during idle time of at least some of the plurality of failure independent storage units: (1) reading at least one pending data block from the controller buffer; (2) accessing the plurality of failure independent storage units and reading the corresponding information of the read pending data blocks; (3) generating an associated error-correction block from the read information and each read pending data block; (4) writing each such read pending data block and the associated error-correction block to a corresponding stripe of the idle storage units.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-06-11 1999-12-11 2000-06-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-06-11 2003-12-11 2004-06-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-06-11 2007-12-11 2008-06-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag