WO2009107213A1 - ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法 - Google Patents

ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法 Download PDF

Info

Publication number
WO2009107213A1
WO2009107213A1 PCT/JP2008/053494 JP2008053494W WO2009107213A1 WO 2009107213 A1 WO2009107213 A1 WO 2009107213A1 JP 2008053494 W JP2008053494 W JP 2008053494W WO 2009107213 A1 WO2009107213 A1 WO 2009107213A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
size
stripe
saving
save
Prior art date
Application number
PCT/JP2008/053494
Other languages
English (en)
French (fr)
Inventor
新菜 塚本
貞之 大山
祐司 花岡
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2008/053494 priority Critical patent/WO2009107213A1/ja
Priority to EP08720989.6A priority patent/EP2261806B1/en
Priority to JP2010500488A priority patent/JP5099212B2/ja
Priority to EP13150344.3A priority patent/EP2595062B1/en
Publication of WO2009107213A1 publication Critical patent/WO2009107213A1/ja
Priority to US12/923,005 priority patent/US8448047B2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD

Definitions

  • the present invention relates to a storage device, a storage control device, a data transfer integrated circuit, and a storage control method.
  • the storage device forms a RAID (Redundant Arrays of Independent (Inexpensive) Disks) group by a plurality of hard disk devices (storage media) to improve the reliability of the data to be handled.
  • RAID Redundant Arrays of Independent (Inexpensive) Disks
  • Storage devices generally improve access performance by performing a write processing (write processing) method called a write-back method. Specifically, when a data write command is received from a host computer that is a host device, the storage device notifies the host computer that the write processing is completed when the data is stored in the cache memory. Thereafter, when a predetermined condition is satisfied, the data stored in the cache memory is stored in the hard disk device.
  • write processing write processing
  • a storage device that employs such a write-back method has a power supply that is turned off without a normal termination operation due to a power failure (hereinafter referred to as a normal termination operation). In some cases, the data stored in the volatile cache memory is not lost.
  • the data on the cache memory is saved to a non-volatile memory while power is being supplied from a large-capacity capacitor, battery, etc. Data saved in the volatile memory is restored to the cache memory. As a result, even if the data stored in the cache memory is abnormally terminated without being stored in the hard disk device, the data is not lost.
  • NAND flash memory is often used as the nonvolatile memory for saving data.
  • stored data may be damaged or lost due to cell deterioration or the like. If a situation occurs in which the data stored in the nonvolatile memory is damaged or lost, the storage device may read the wrong data from the nonvolatile memory at the time of startup after abnormal termination and restore the data accurately. become unable.
  • a large-scale data input / output device such as a storage device is often used in an important computer system, and the fact that user data and system data stored in a cache memory cannot be accurately restored is a big problem. For this reason, even when a read response is not made from the nonvolatile memory, it has become an important issue how to correctly restore the data saved in the nonvolatile memory to the cache memory. .
  • An object of the present invention is to provide a storage device, a storage control device, a data transfer integrated circuit, and a storage control method that can be performed.
  • the storage device disclosed in the present application stores the save target data that is data stored in the cache memory and the error data of the save target data at the time of abnormal termination.
  • a storage device having a data transfer unit for storing data to be transferred in which an error detection code for detecting error data is added to parity data for correction in a nonvolatile memory, and the storage device ends abnormally
  • the data reading means reads out a stripe that is data divided by a predetermined stripe size, and the data reading means causes the stripe to If the stripe is not read within a predetermined time, the stripe Whether there is error data in the stripe based on the additional data adding means for adding additional data and the error detection code given to the stripe read by the data reading means until the size becomes the stripe size Error data checking means for checking whether or not, and when the error data is detected by the error data checking means, using the strip
  • the storage device disclosed in the present application even when no data read response is made from the nonvolatile memory, the data saved in the nonvolatile memory can be restored to the cache memory.
  • FIG. 1 is a diagram illustrating a schematic configuration of a storage apparatus according to the first embodiment.
  • FIG. 2A is a diagram illustrating a configuration and a data format of the flash memory 141.
  • FIG. 2-2 is a diagram showing the configuration and data format of the page shown in FIG.
  • FIG. 3A is a schematic diagram illustrating an overview of data saving processing performed by the storage apparatus according to the first embodiment.
  • FIG. 3-2 is a schematic diagram illustrating an overview of data recovery processing performed by the storage apparatus according to the first embodiment.
  • FIG. 3-3 is a diagram for explaining the outline of the data recovery processing by the storage apparatus according to the first embodiment.
  • FIG. 4 is a diagram illustrating a configuration of a CM included in the storage apparatus according to the first embodiment.
  • FIG. 5 is a diagram showing the configuration of the data transfer DMA shown in FIG.
  • FIG. 6 is a diagram showing a configuration of the write DMA shown in FIG.
  • FIG. 7 is a diagram showing a configuration of the read DMA shown in FIG.
  • FIG. 8 is a sequence diagram illustrating the flow of the data saving process performed by the storage apparatus according to the first embodiment.
  • FIG. 9 is a flowchart showing a data saving processing procedure by the write DMA.
  • FIG. 10 is a sequence diagram illustrating the flow of data recovery processing by the storage apparatus according to the first embodiment.
  • FIG. 11 is a flowchart showing a data recovery processing procedure by read DMA.
  • FIG. 12A is a schematic diagram illustrating an overview of a data saving process performed by the storage apparatus according to the second embodiment.
  • FIG. 12-2 is a schematic diagram illustrating an overview of data recovery processing performed by the storage apparatus according to the second embodiment.
  • FIG. 13 is a diagram illustrating a configuration of a CM included in the storage apparatus according to the second embodiment.
  • FIG. 14 is a flowchart showing a save data area calculation processing procedure by the save data area calculation unit shown in FIG.
  • FIG. 1 is a diagram illustrating a schematic configuration of the storage apparatus 1 according to the first embodiment.
  • the storage apparatus 1 shown in the figure has a duplex configuration in order to ensure high reliability, and each component is divided into two systems (in the figure, distinguished by A and B added to the reference numerals). Is provided. Since the components of each system have the same functions, the components will be described only for one system below.
  • the storage apparatus 1 includes a CE (Controller Enclosure) mainly equipped with each unit that controls the storage apparatus 1 and a communication module that handles communication between the storage apparatus 1 and a host computer that is a host apparatus.
  • the controller enclosure) 10 and the DE (Device Enclosure) 20 mainly equipped with the hard disk device are divided into housings.
  • CE 10 is connected to a host computer via a fiber channel via a channel adapter (not shown), and connected to DE 20 via expanders 120A and 120B.
  • the DE 20 includes a hard disk device (hereinafter abbreviated as “HDD: Hard Disk Drive”) 21, and is connected to other DEs by using the expanders 220 ⁇ / b> A and 220 ⁇ / b> B directly or via a router. Individual connection is possible.
  • HDD Hard Disk Drive
  • the CE 10 includes CMs (Controller Modules) 100A and 100B for controlling the storage device 1, and a plurality of hard disk devices 11 connected to the CMs 100A and 100B.
  • CMs Controller Modules
  • the HDD 11 is a storage device in which data is read and written redundantly by the CM 100A.
  • the storage device connected to the CM 100A is not limited to the hard disk device, and may be another storage device such as a thermomagnetic disk device, a magneto-optical disk device, or a semiconductor disk using a semiconductor nonvolatile memory.
  • the CM 100A is a storage control device that controls the storage device 1, and includes an interface (hereinafter abbreviated as “I / F”) unit 110A, an expander 120A, a cache memory 130A, flash memories 141A and 142A, data It has a transfer DMA (Direct Memory Access) 150A and a RAID-on-Chip (hereinafter abbreviated as “RoC”) 160A.
  • I / F interface
  • the I / F unit 110A is an interface for connecting to a network such as a LAN (Local Area Network).
  • the expander 120 ⁇ / b> A is a relay device that relays data transmitted and received between the RoC 160 ⁇ / b> A and the HDD 11.
  • the cache memory 130 ⁇ / b> A is a memory that temporarily stores data transferred between the host computer and the HDD 11.
  • the flash memories 141A and 142A are nonvolatile memories, for example, NAND flash memories.
  • a OneNAND flash memory is used for the flash memories 141A and 142A.
  • the configuration and data format of the OneNAND flash memories 141A and 142A will be described. Since the flash memories 141A and 142A have the same configuration and data format, only the configuration and data format of the flash memory 141A will be described here.
  • FIG. 2-1 is a diagram showing the configuration and data format of the flash memory 141A. Note that the storage capacity of the flash memory 141A is 2 [GB (gigabytes)]. As shown in the figure, the flash memory 141A has four memory banks # 00 to # 03. Memory bank # 00 to memory bank # 03 are a collection of memories, each having a die # 0 and a die # 1.
  • Die # 0 and die # 1 are flash memories of several millimeters square, and each has Block # 0 to Block # 2047. Blocks # 0 to # 2047 have page (page) # 0 to page # 63, respectively. The page is a minimum access unit to the flash memory 141.
  • FIG. 2-2 is a diagram showing the configuration and data format of the page shown in FIG. As shown in the figure, the page has a main area and a spare area.
  • the main area is a storage area of 2 [KB (kilobytes)] in which user data is stored, and has four sectors # 0 to # 3.
  • the spare area is a storage area of 64 [bytes] mainly storing system data for managing data, and has four spares # 0 to # 3.
  • One spare (for example, spare # 0) constituting the spare area has a system area, an ECC (Error Correcting Code) area, a reserved area, and a user area as shown in FIG. .
  • ECC Error Correcting Code
  • the system area is a storage area for storing various information such as bad sector information.
  • the ECC area is an area in which ECC generated by the flash memory 141A is stored.
  • the flash memory 141A performs an error check using this ECC, and when an error is detected, notifies the fact that an ECC check error has occurred.
  • the reserved area is a spare area.
  • the user area is a storage area in which data necessary for data management is stored by a system that stores data in the flash memory 141A.
  • the data transfer DMA 150A is a DMA circuit that performs data transmission / reception between the cache memory 130A and the flash memories 141A and 142A by DMA.
  • the data transfer DMA 150A is realized by, for example, an FPGA (Field Programmable Gate Array).
  • the RoC 160A is a control device that controls the CM 100A as a whole, and controls the interface with the host computer and manages the cache memory 130A.
  • the RoC 160A receives a data write command from the host computer, the RoC 160A stores the data in the cache memory 130A. Then, the RoC 160A notifies the host computer that the write process has been completed when the data is stored in the cache memory 130A. Thereafter, when a predetermined condition is satisfied, the data stored in the cache memory 130A is written into the HDD 11.
  • the RoC 160A causes the data transfer DMA 150A to save the data stored in the cache memory 130A to the flash memories 141A and 142A (hereinafter referred to as “data save process”) when the storage apparatus 1 is abnormally terminated. ).
  • the RoC 160A causes the data transfer DMA 150A to restore the data saved in the flash memories 141A and 142A to the cache memory 130A when the storage apparatus 1 after abnormal termination is activated (hereinafter referred to as “data restoration process”). )).
  • FIG. 3A is a schematic for explaining an outline of the data saving process performed by the storage apparatus 1 according to the first embodiment.
  • reference numerals A and B added in FIG. 1 are not provided. That is, for example, the cache memory 130 illustrated in FIG. 3A corresponds to the cache memory 130A or 130B illustrated in FIG.
  • the cache memory 130 stores 53 [KB] of data D1 as shown in FIG. 3-1.
  • the RoC 160 instructs the data transfer DMA 150 to save the data D1.
  • the data transfer DMA 150 that has received this instruction reads the data D1 from the cache memory 130.
  • data on the cache memory 130 that is saved by the data transfer DMA 150 when the storage device 1 is abnormally terminated is referred to as “save target data”.
  • the data transfer DMA 150 divides the data D1 every 28 [KB]. Specifically, as shown in the figure, the data transfer DMA 150 divides the data D1 into 28 [KB] data D10 and 25 [KB] data D20. Note that the size (in the above example, 28 [KB]) in which the data transfer DMA 150 divides the save target data (in the above example, data D1) is determined in advance by the system, and in the following, this size is referred to as “boundary size”. One data of the save target data divided by the boundary size is called “boundary data”. In the storage apparatus 1 according to the first embodiment, the boundary size is determined to be 28 [KB].
  • the data transfer DMA 150 divides the data D10 every 2 [KB]. Specifically, as shown in the figure, the data transfer DMA 150 divides the data D10 into 14 pieces of data D101 to D114. Note that the size (in the above example, 2 [KB] in the above example) by which the data transfer DMA 150 divides the boundary data (in the above example, the data D10 and D20) is determined in advance by the system, and the storage apparatus 1 according to the first embodiment. Now, it is assumed that this size is determined to be 2 [KB].
  • one piece of boundary data (data D101 or the like) divided every 2 [KB] will be referred to as “evacuation target unit data”, and a number for identifying the save target unit data will be referred to as “evacuation target unit data”. It will be called a “unit data number”.
  • the numerical part of the reference sign attached to the save target unit data is the save target unit data number.
  • the save target unit data number of the data D101 is “101”.
  • the data transfer DMA 150 performs an exclusive OR (hereinafter referred to as “XOR”) operation of seven data D101, D103,..., D113 whose save target unit data numbers are odd numbers, and generates parity data P115. To do.
  • the data transfer DMA 150 performs an XOR operation on the seven data D102, D104,..., D114 having an even number of save target unit data numbers to generate parity data P116.
  • the size of the parity data P115 and P116 is 2 [KB], which is the same as the size of the data D101 to D114. That is, the sum of the size of the data D10 divided into the boundary size 28 [KB] and the sizes of the parity data P115 and P116 generated from the data D10 is 32 [KB].
  • the parity data is also referred to as “evacuation target unit data”.
  • the data transfer DMA 150 generates a CRC (Cyclic Redundancy Check) for each of the data D101 to D114. Similarly, the data transfer DMA 150 generates a CRC for each parity data P115 and P116. Then, the data transfer DMA 150 assigns the generated CRC to the data D101 to D114 and the parity data P115 and P116.
  • CRC Cyclic Redundancy Check
  • the data transfer DMA 150 uses identification numbers (hereinafter referred to as “AID: Area Identification”) for identifying the data D101 to D114 and the parity data P115 and P116, the data D101 to D114, the parity data P115 and P116, and To grant.
  • AID Area Identification
  • the data transfer DMA 150 writes the data D101 to D114 to which the CRC and AID are assigned and the parity data P115 and P116 to which the CRC and AID are assigned to the flash memory 141. That is, the data transfer DMA 150 writes 16 save target unit data (14 pieces of data D101 to D114 and two pieces of parity data P115 and P116) to the flash memory 141.
  • the data transfer DMA 150 writes four save target unit data to the four memory banks # 00 to # 03 of the flash memory 141. At this time, the data transfer DMA 150 writes two save target unit data to the two dies # 0 and # 1 of the memory bank # 00 to the memory bank # 03. At this time, the data transfer DMA 150 has the save target unit data having an odd save target unit data number and the save target unit data number for two predetermined blocks of the die # 0 and the die # 1. Write even-numbered save target unit data one by one.
  • an area on the flash memory 141 in which the data transfer DMA 150 writes 16 save target unit data is referred to as a “small area”.
  • This “small area” corresponds to, for example, the small area SA1 shown in FIG.
  • the data writing process of the data transfer DMA 150 will be described by taking as an example the case where the data D101 to D114 and the parity data P115 and P116 are written in the small area AS1 shown in FIG.
  • “memory bank # P / die # Q / Block # R / page # S” is described when “page #S of Block #R of die #Q of memory bank #P” is indicated. I will do it.
  • the data transfer DMA 150 writes the data D101 in the main area of the memory bank # 00 / die # 0 / Block # 2 / page # 1 in the small area SA1. Then, the data transfer DMA 150 writes the data D102 to the main area of the memory bank # 00 / die # 0 / Block # 3 / page # 1, and writes the data D103 to the memory bank # 00 / die # 1 / Block # 2 / Write to page # 1 main area.
  • the data transfer DMA 150 writes the data D104 to D113, writes the data D114 to the memory bank # 03 / die # 0 / Block # 3 / page # 1, and stores the parity data P115 in the memory bank # 03 / die # 1 / Block # 2 / page # 1 and parity data P116 is written to memory bank # 03 / die # 1 / Block # 3 / page # 1.
  • the data transfer DMA 150 writes the CRC assigned to each save target unit data in the user area in the page spare area.
  • the data transfer DMA 150 stores the CRC of the data D101 in the memory bank # 00 / Write to the user area of spare # 0 of die # 0 / Block # 2 / page # 1.
  • the data transfer DMA 150 also writes the data D102 to D114 and the CRC of the parity data P115 and P116 in the user area of the page.
  • the data transfer DMA 150 writes the AID assigned to each save target unit data in the user area in the spare area of the page.
  • the data transfer DMA 150 sets the AID of the data D101. Then, write to the user area of spare # 1 in memory bank # 00 / die # 0 / Block # 2 / page # 1.
  • the data transfer DMA 150 also writes the data D102 to D114 and the AID of the parity data P115 and P116 in the user area of the page.
  • the data transfer DMA 150 writes the 16 save target unit data to the small area.
  • all the data stored in one page in the small area (unit data to be saved, CRC, AID, etc.) will be referred to as “stripes”, and numbers for identifying the stripes in the small area It will be referred to as “stripe number”.
  • the last two digits of the reference numeral attached to the save target unit data is the stripe number.
  • the stripe number of the stripe stored in the page storing the data D101 is “1”
  • the stripe number of the stripe stored in the page storing the parity data P115 is “15”.
  • the stripe with the stripe number “N” is simply referred to as a stripe S “N”.
  • a rectangle describing “D101”, “P115”, and the like in the flash memory 141 indicates a main area of the page, and a rectangle indicated by hatching after the main area is Indicates a spare area of page. That is, in the figure, for example, the combination of the main area in which “D101” is described and the spare area shown after the main area is the stripe S1.
  • the data transfer DMA 150 writes the data D20 to the flash memory 142. Specifically, the data transfer DMA 150 divides the data D20 every 2 [KB]. At this time, since the size of the data D20 is 25 [KB] and is less than the boundary size of 28 [KB], the data transfer DMA 150 has 3 [KB] so that the size of the data D20 becomes 28 [KB]. Add a predetermined value of. Hereinafter, this predetermined value is referred to as a “boundary adjustment value”. The reason for adding the boundary adjustment value when the size of the boundary data is less than the boundary size is to enable generation of parity data.
  • the data transfer DMA 150 divides the data D20 to which the boundary adjustment value is added every 2 [KB]. Specifically, as shown in the figure, the data transfer DMA 150 divides the data D20 added with the boundary adjustment value of 3 [KB] into 14 pieces of data D201 to D214.
  • the subsequent processing is the same as the processing for writing the data D10 to the flash memory 141, and the data transfer DMA 150 generates parity data P215 and P216, generates CRC such as data D201, and the data D201 to D214.
  • the parity data P215 and P216, CRC, and AID are written to the flash memory 142.
  • the data transfer DMA 150 writes the data D10 to the flash memory 141 and the data D20 to the flash memory 142 out of the data D1 stored in the cache memory 130.
  • the data transfer DMA 150 can write data in parallel to a plurality of small areas.
  • the data transfer DMA 150 simultaneously writes data to a maximum of 64 small areas.
  • the 64 small areas are referred to as “areas”. This “area” corresponds to, for example, the area A1 shown in FIG.
  • the above-described AID is an identification number for identifying a stripe included in one area.
  • the AID is calculated by the RoC 160, and the data transfer DMA 150 receives the AID from the RoC 160.
  • FIG. 3-2 and FIG. 3-3 are diagrams for explaining the outline of the data recovery processing by the storage apparatus 1 according to the first embodiment. It is assumed that the data saved by the data transfer DMA 150 shown in FIG. 3A is stored in the flash memory 141 shown in FIGS. 3B and 3C.
  • the data transfer DMA 150 reads stripes from the flash memory 141 in units of small areas. Specifically, the data transfer DMA 150 reads the stripes S1 to S16 from the flash memory 141.
  • the data transfer DMA 150 does not accept a read response from the flash memory 141 while reading the stripe S3. If the stripe S3 cannot be read even after a predetermined time has elapsed, the data transfer DMA 150 detects that a timeout has occurred for the stripe S3.
  • the data transfer DMA 150 stops the reading process of the stripe S3 in which the timeout has occurred, and gives a predetermined value for the size that could not be read to the stripe S3 (hereinafter, this predetermined value is referred to as “additional data”).
  • additional data For example, when a read response is not accepted from the flash memory 141 when the stripe S3 for 1 [KB] is read, the data transfer DMA 150 adds 1 [KB] additional data to the read 1 [KB] data. The data of 2 [KB] to which is added is defined as a stripe S3. Thereafter, the data transfer DMA 150 resumes the data reading process and reads the stripes S4 to S16 from the flash memory 141.
  • the data transfer DMA 150 performs CRC check, AID check, and XOR operation while reading the stripes S1 to S16. Specifically, the data transfer DMA 150 uses the CRC in the read stripes S1 to 16 to check whether error data exists in the stripes S1 to S16. Further, the data transfer DMA 150 uses the AIDs in the stripes S1 to S16 to check whether or not all the stripes S1 to S16 are prepared. Further, the data transfer DMA 150 performs an XOR operation of the stripes S1, S3,..., S15 having an odd stripe number to generate correction data T11, and stripes S2, S4,. The XOR operation of S16 is performed to generate correction data T12.
  • the data transfer DMA 150 detects the presence of error data in the CRC check of the stripe S3 in which the additional data is set. If a timeout occurs before the AID included in the stripe S3 is read, additional data is set in the AID. Therefore, the data transfer DMA 150 lacks the data D103 in the AID inspection of the stripe S3. There is a possibility that it will be detected.
  • the data transfer DMA 150 detects a data error only for the stripe S3 and does not detect an error in the CRC check and the AID check for the stripes S1, S2, and S4 to S16.
  • the data transfer DMA 150 After reading all the stripes S1 to S16, the data transfer DMA 150 writes the data D101 and D102 included in the stripes S1 and S2 in which no error is detected in the CRC check and the AID check to the cache memory 130. Then, the data transfer DMA 150 corrects the error data of the data D103 by using the stripes S1, S5, S7,..., S15 having the odd stripe number and the correction data T11 for the stripe S3 in which the error is detected. Thus, the corrected data D103 is written into the cache memory 130. Then, the data transfer DMA 150 writes the data D104 to D114 included in the stripes S4 to S14 in which no error has been detected, to the cache memory 130.
  • the data transfer DMA 150 does not write the parity data P115 and P116 included in the stripes S15 and S16 to the cache memory 130. In this way, the data transfer DMA 150 restores the data D10 to the cache memory 130.
  • the data transfer DMA 150 performs CRC inspection, AID inspection, and XOR operation while reading out the stripes S1 to S16 from the flash memory 142 after the restoration processing of the data D10 is completed, and performs correction data T21 and T22 is generated.
  • the data transfer DMA 150 did not time out during the read processing of the stripes S1 to S16 from the flash memory 142.
  • the data transfer DMA 150 does not detect an error in the CRC check and the AID check of the stripes S1 to S16.
  • the data transfer DMA 150 After reading all the stripes S1 to S16, the data transfer DMA 150 writes the data D201 to D212 included in the stripes S1 to S12 to the cache memory 130. Then, the data transfer DMA 150 writes the data D213 obtained by removing the boundary adjustment value of 1 [KB] from the data D213 included in the stripe S13 into the cache memory 130. Note that the data D214 included in the stripe S14 are all boundary adjustment values, so the data transfer DMA 150 does not write the data D214 to the cache memory 130.
  • the storage apparatus 1 generates the parity data of the save target data during the data save process, and stores the save target data and the parity data to which the CRC or AID is assigned to the flash memory 141 or 142.
  • the write and data recovery process if the data read process from the flash memory 141 or 142 is not completed within a predetermined time, the data read process is stopped, the additional data is set, and the error data is corrected using the parity data. Since the data is written in the cache memory 130, the data saved in the flash memory 141 or 142 can be restored to the cache memory 130 even when no data read response is made from the flash memory 141 or 142.
  • the storage device 1 generates parity data using the save target unit data whose save target unit data number is an odd number, and uses the save target unit data whose save target unit data number is an even number. Parity data is generated, and the save target unit data whose save target unit data number is odd and the save target unit data whose save target unit data number is even are written to one die in the small area. Since configured, even if one die fails, the data stored in the failed die can be corrected. That is, even if one die fails, the data saved in the flash memory 141 or 142 can be restored to the cache memory 130.
  • FIG. 4 is a diagram illustrating the configuration of the CM 100 included in the storage apparatus 1 according to the first embodiment. In the figure, only the configuration related to the data saving process and the data recovery process is shown.
  • the CM 100 is connected to the power supply unit 12, and includes a cache memory 130, flash memories 141 and 142, a data transfer DMA 150, and a RoC 160.
  • the power supply unit 12 is a device that supplies power to the CM 100 when the storage device 1 ends abnormally, and is, for example, a large-capacity capacitor or a battery.
  • the CM 100 shows an example in which the CM 100 is supplied with power by the power supply unit 12 provided outside, the CM 100 may include the power supply unit 12.
  • the cache memory 130 is a memory that temporarily stores data to be transferred between the host computer and the HDD 11.
  • the flash memories 141 and 142 are nonvolatile memories, and data stored in the cache memory 130 is saved by the data transfer DMA 150 when the storage apparatus 1 is abnormally terminated.
  • the data transfer DMA 150 is a DMA circuit that performs data transmission / reception between the cache memory 130 and the flash memories 141 and 142 in accordance with instructions to the RoC 160. Specifically, the data transfer DMA 150 performs a data saving process for saving the data stored in the cache memory 130 to the flash memories 141 and 142 when the storage apparatus 1 is abnormally terminated. Further, the data transfer DMA 150 performs data recovery processing for recovering the data saved in the flash memories 141 and 142 to the cache memory 130 when the storage apparatus 1 is powered on after abnormal termination. The configuration of the data transfer DMA 150, the data saving process and the data recovery process by the data transfer DMA 150 will be described in detail later.
  • the RoC 160 is a control device that controls the entire CM 100, and includes a save data area calculation unit 161, a save instruction unit 162, and a recovery instruction unit 163.
  • the save data area calculation unit 161 is a processing unit that calculates various types of information required when instructing the data transfer DMA 150 to perform data save processing when the storage apparatus 1 ends abnormally.
  • the save data area calculation unit 161 determines the size of the data to be saved by the data transfer DMA 150 based on the size of the save target data, the storage location (address) of the save target data in the cache memory 130, and the data transfer. The storage position of the data saved by the DMA 150, the size of the boundary adjustment value, and the like are calculated.
  • the save instruction unit 162 is a processing unit that instructs the data transfer DMA 150 to perform data save processing. Specifically, the save instruction unit 162 generates an instruction (hereinafter referred to as “data save descriptor”) for instructing data save processing when the storage apparatus 1 is abnormally terminated, and sends it to the data transfer DMA 150. Send.
  • data save descriptor an instruction for instructing data save processing when the storage apparatus 1 is abnormally terminated
  • the data save descriptor includes various types of information calculated by the save data area calculation unit 161. Specifically, the data save descriptor includes the first storage position (head address) of the save target data in the cache memory 130, the size of the save target data, the size of the boundary adjustment value, the AID, and the like.
  • the recovery instruction unit 163 is a processing unit that instructs the data transfer DMA 150 to perform data recovery processing. Specifically, the recovery instruction unit 163 generates an instruction (hereinafter referred to as “data recovery descriptor”) that instructs to perform data recovery processing when the storage apparatus 1 is powered on after abnormal termination. Transmit to the data transfer DMA 150.
  • This data recovery descriptor includes the size of the boundary adjustment value to be removed.
  • the recovery instruction unit 163 generates an instruction (hereinafter referred to as “erase descriptor”) for erasing data stored in the flash memories 141 and 142 when the data recovery processing by the data transfer DMA 150 is completed. Transmit to the data transfer DMA 150.
  • FIG. 5 is a diagram showing a configuration of the data transfer DMA 150 shown in FIG.
  • the data transfer DMA 150 includes a PCI (Peripheral Component Interconnect) bus I / F 510, memory I / Fs 521 and 522, a descriptor holding register 530, a write DMA 541 and 542, a read DMA 550, and an erase DMA 561. And 562.
  • PCI Peripheral Component Interconnect
  • the PCI bus I / F 510 is an interface that transmits and receives data between the data transfer DMA 150 and the cache memory 130.
  • the memory I / F 521 is an interface that performs data transmission / reception between the data transfer DMA 150 and the flash memory 141, and the memory I / F 522 is an interface that performs data transmission / reception between the data transfer DMA 150 and the flash memory 142.
  • the descriptor holding register 530 is a register that stores various descriptors received from the RoC 160. Specifically, the descriptor holding register 530 stores a data save descriptor, a data recovery descriptor, an erase descriptor, and the like.
  • Write DMAs 541 and 542 are DMA circuits that perform data saving processing. Specifically, when the write DMA 541 receives a data save descriptor from the descriptor holding register 530, the write DMA 541 acquires data stored in the cache memory 130 via the PCI bus I / F 510. Then, the write DMA 541 writes the acquired data to the flash memory 141 via the memory I / F 521. Similarly, when the write DMA 542 receives a data save descriptor from the descriptor holding register 530, the write DMA 542 acquires data stored in the cache memory 130 and writes the acquired data to the flash memory 142.
  • Write DMAs 541 and 542 perform processing for transferring data from the cache memory 130 to the flash memory 141 or 142 in parallel.
  • the write DMA 541 performs a process of writing the data D10 to the flash memory 141
  • the write DMA 542 performs a process of writing the data D20 to the flash memory 142.
  • Data save processing by the write DMAs 541 and 542 is performed in parallel.
  • the storage apparatus 1 includes the two systems of the flash memories 141 and 142 and the two systems of the write DMAs 541 and 542, and allows the write DMAs 541 and 542 to perform the data saving process in parallel. As a result, the storage apparatus 1 can efficiently perform the data saving process, and realizes the data saving process to be completed within a short time when power is supplied from the power supply unit 12.
  • the read DMA 550 is a DMA circuit that performs data recovery processing. Specifically, when the read DMA 550 receives a data recovery descriptor from the descriptor holding register 530, the read DMA 550 acquires the data stored in the flash memory 141 and stores the acquired data in the cache memory 130. Similarly, when the read DMA 550 receives a data recovery descriptor, the read DMA 550 acquires data stored in the flash memory 142 and stores the acquired data in the cache memory 130.
  • the storage apparatus 1 causes the two systems of write DMAs 541 and 542 to perform the data saving process while the data recovery process is performed to one system of the read DMA 550 will be described. This is because the data saving process has a restriction that it must be completed within a short time when power is supplied from the power supply unit 12, whereas the data recovery process does not have such a restriction. is there.
  • the number of write DMAs and read DMAs included in the data transfer DMA 150 is not limited to the example shown in FIG.
  • the data transfer DMA 150 may include, for example, three write DMAs or ten read DMAs.
  • the erase DMA 561 is a DMA circuit that erases data stored in the flash memory 141 when an erase descriptor is received from the descriptor holding register 530.
  • the erase DMA 562 is a DMA circuit that erases data stored in the flash memory 142 when an erase descriptor is received from the descriptor holding register 530.
  • FIG. 6 shows a configuration of write DMAs 541 and 542 shown in FIG. Since the configuration of the write DMAs 541 and 542 is the same, only the configuration of the write DMA 541 will be described here.
  • the write DMA 541 includes a data reading unit 541a, a boundary adjustment unit 541b, a parity generation unit 541c, a saved data buffer 541d, a parity buffer 541e, and a data writing unit 541f.
  • the data reading unit 541a is a processing unit that reads data of a predetermined size from the cache memory 130. Specifically, the data reading unit 541a reads data corresponding to the size of the save target data from the start address of the save target data included in the data save descriptor.
  • the boundary adjustment unit 541b is a processing unit that adds a boundary adjustment value to the save target data read by the data reading unit 541a. Specifically, the boundary adjustment unit 541b adds a boundary adjustment value corresponding to the size of the boundary adjustment value included in the data save descriptor to the save target data.
  • the parity generation unit 541c is a processing unit that generates parity data using the save target data read by the data reading unit 541a. Specifically, the parity generation unit 541c divides the save target data into boundary data for each boundary size 28 [KB], and further, the boundary data is 2 [KB] which is a size determined in advance by the system. Separate each.
  • the parity generation unit 541c generates parity data using the seven save target unit data whose odd number is the save target unit data number, and the seven save target unit data whose even number is the save target unit data number. Is used to generate parity data. Then, the save target data read by the data reading unit 541a is stored in the save data buffer 541d, and the generated parity data is stored in the parity buffer 541e.
  • the save data buffer 541d is a storage device that primarily stores data. As described above, the save data is stored by the parity generation unit 541c.
  • the parity buffer 541e is a storage device that primarily stores data, and as described above, the parity data is stored by the parity generation unit 541c.
  • the data writing unit 541f is a processing unit that reads the save target unit data and the parity data from the save data buffer 541d and the parity buffer 541e and writes them to the flash memory 141, and includes a CRC adding unit 541g and an AID adding unit 541h.
  • the CRC adding unit 541g generates a CRC for each save target unit data read from the save data buffer 541d and generates a CRC for each parity data read from the parity buffer 541e.
  • the CRC assigning unit 541g assigns the generated CRC to the save target unit data and parity data.
  • the AID assigning unit 541h assigns AID to the save target unit data read from the save data buffer 541d and assigns AID to the parity data read from the parity buffer 541e.
  • the AID assigning unit 541h obtains an AID from the data save descriptor.
  • the data writing unit 541f writes the save target unit data and the parity data to which the CRC and the AID are assigned in this way into the flash memory 141.
  • FIG. 7 shows a configuration of read DMA 550 shown in FIG.
  • the read DMA 550 includes a selector 550a, a data reading unit 550b, a timeout detection unit 550c, an error detection unit 550d, a recovery data buffer 550e, an XOR operation unit 550f, and a CRC check unit 550g.
  • the selector 550a is a selector circuit that selects and outputs only one input signal from a plurality of input signals.
  • the selector 550a outputs a stripe stored in the flash memory 141 to the data reading unit 550b or outputs additional data as data. Or output to the reading unit 550b. Whether the selector 550a outputs a stripe or additional data will be described later.
  • the data reading unit 550b reads a small area stripe from the flash memory 141 via the selector 550a, and stores the read stripe in the recovery data buffer 550e. At this time, the data reading unit 550b notifies the time-out detection unit 550c of the time when the data reading process is started.
  • the timeout detection unit 550c is a processing unit that monitors whether the data reading process by the data reading unit 550b is completed within a predetermined time based on the start time of the data reading process received from the data reading unit 550b.
  • timeout detection unit 550c determines that data reading unit 550b is in the process of reading when the data reading process by data reading unit 550b is not completed even after a predetermined time has elapsed from the start time of the data reading process. Detect that a timeout has occurred for a stripe. Then, the timeout detection unit 550c notifies the selector 550a of a timeout detection including the stripe number of the stripe that has detected the timeout.
  • the processing of the selector 550a that has received the timeout detection notification will be described.
  • the selector 550a stops the stripe reading process indicated by the stripe number included in the timeout detection notification, and outputs additional data for the size of the stripe that could not be read to the data reading unit 550b. Thereafter, the selector 550a resumes the reading process of the next stripe.
  • the error detection unit 550d is a processing unit that performs ECC error notification to the selector 550a when receiving notification that an ECC check error has occurred from the flash memory 141.
  • the selector 550a that has received the ECC error notification stops the stripe reading process during the reading process, and outputs additional data for the size of the stripe that could not be read to the data reading unit 550b. Thereafter, the selector 550a resumes the reading process of the next stripe.
  • the recovery data buffer 550e is a storage device that primarily stores data. As described above, the data reading unit 550b stores a stripe or a stripe in which additional data is set.
  • the XOR operation unit 550f is a processing unit that generates correction data using the stripe read by the data reading unit 550b. Specifically, the XOR operation unit 550f generates correction data using seven stripes having an odd stripe number, and generates correction data using seven stripes having an even stripe number. Then, the XOR operation unit 550f stores the generated correction data in the correction data buffer 550i.
  • the CRC checking unit 550g is a processing unit that checks whether there is error data in the stripe read by the data reading unit 550b. Specifically, the CRC checking unit 550g checks, for each stripe, whether there is error data using the CRC in the stripe read by the data reading unit 550b. When error data exists, that is, when an error is detected, the CRC checking unit 550g stores the stripe number of the stripe where the error is detected in the log holding register 550j.
  • the AID inspection unit 550h is a processing unit that inspects whether all the stripes read by the data reading unit 550b are prepared. Specifically, the AID inspection unit 550h uses the AID in the stripe read by the data reading unit 550b to inspect whether all the stripes in the small area are prepared. When it is detected that all stripes are not aligned, that is, when an error is detected, the AID inspection unit 550h stores the stripe number of the missing stripe in the log holding register 550j.
  • the correction data buffer 550i is a storage device that primarily stores data, and the correction data is stored by the XOR operation unit 550f as described above.
  • the log holding register 550j is a storage device that primarily stores data. As described above, the stripe number of the stripe in which an error is detected by the CRC checker 550g or the AID checker 550h is stored.
  • the selector 550k is a selector circuit, and based on various data stored in the recovery data buffer 550e, the correction data buffer 550i, and the log holding register 550j, the stripe stored in the recovery data buffer 550e is converted into the data The data is output to the writing unit 550m, or the stripe whose error data is corrected is output to the data writing unit 550m.
  • the selector 550k outputs the stripe stored in the recovery data buffer 550e to the data writing unit 550m for the stripe for which the stripe number is not stored in the log holding register 550j.
  • the selector 550k uses various data stored in the recovery data buffer 550e and the correction data buffer 550i for the stripe whose stripe number is stored in the log holding register 550j (hereinafter referred to as “error detection stripe”).
  • error detection stripe data stored in the recovery data buffer 550e and the correction data buffer 550i for the stripe whose stripe number is stored in the log holding register 550j
  • the boundary adjustment unit 550l is a processing unit that removes the boundary adjustment value from the small area unit stripe received from the selector 550k. Specifically, the boundary adjustment unit 550l removes the boundary adjustment value corresponding to the size of the boundary adjustment value included in the data recovery descriptor from the small area unit stripe.
  • the data writing unit 550m is a processing unit that writes the save target unit data included in the small area unit stripe from which the boundary adjustment value is removed by the boundary adjustment unit 550l to the cache memory 130. Note that the data writing unit 550m does not write parity data to the cache memory 130.
  • FIG. 8 is a sequence diagram illustrating the flow of the data saving process performed by the storage apparatus 1 according to the first embodiment.
  • step S101 when the save data area calculation unit 161 of the RoC 160 detects that the storage apparatus 1 has ended abnormally (step S101), it calculates various information necessary to generate the data save descriptor. .
  • the save instruction unit 162 generates a data save descriptor for causing the write DMA 541 to perform the data save process based on various information calculated by the save data area calculation unit 161 and stores the data save descriptor in the descriptor holding register 530. (Step S102).
  • the save instruction unit 162 uses the data D10 as a data save descriptor for causing the write DMA 541 to perform data save processing.
  • a data save descriptor including the head address of the data D10, the size 28 [KB] of the data D10, the size 0 [KB] of the boundary adjustment value, the AID, and the like is generated.
  • the save instruction unit 162 generates a data save descriptor for causing the write DMA 542 to perform data save processing, and stores the data save descriptor in the descriptor holding register 530 (step S103).
  • the save instruction unit 162 serves as a data save descriptor for causing the write DMA 542 to perform data save processing, the start address of the data D20, the size of the data D20 of 25 [KB], and the size of the boundary adjustment value of 3 [ KB] and a data save descriptor including AID and the like are generated.
  • the save instruction unit 162 activates the write DMA 541 (step S104), activates the write DMA 542 (step S105), and causes the write DMA 541 and the write DMA 542 to perform data save processing in parallel.
  • the write DMA 541 activated by the save instruction unit 162 performs data save processing (step S106), and when the data save processing is completed, notifies the RoC 160 that the data save processing is completed (step S107).
  • the write DMA 542 performs data saving processing (step S108), and when the data saving processing is completed, notifies the RoC 160 that the data saving processing is complete (step S109).
  • Data saving processing by the write DMAs 541 and 542 is performed in parallel.
  • the save instruction unit 162 causes the storage apparatus 1 to end abnormally.
  • a data save descriptor may be generated. For example, if the size or the like of the save target data is acquired in advance while the storage apparatus 1 is activated, a data save descriptor can be generated before the storage apparatus 1 ends abnormally.
  • FIG. 9 is a flowchart showing a data save processing procedure by the write DMAs 541 and 542. Since the data save processing procedure by the write DMAs 541 and 542 is the same, only the data save processing procedure by the write DMA 541 will be described here.
  • the write DMA 541 activated by the RoC 160 reads the data save descriptor from the descriptor holding register 530 (step S201). Then, the data reading unit 541a of the write DMA 541 reads data of a predetermined size from the cache memory 130 (step S202). At this time, the data reading unit 541a reads data corresponding to the size of the save target data from the start address of the save target data included in the data save descriptor.
  • the boundary adjustment unit 541b adds the boundary adjustment value for the size of the boundary adjustment value included in the data save descriptor to the save target data read by the data read unit 541a (step S203).
  • the parity generation unit 541c divides the save target data into boundary data for each boundary size, and further divides the boundary data every 2 [KB], which is a size determined in advance by the system.
  • the parity generation unit 541c generates parity data using the seven save target unit data whose odd number is the save target unit data number, and the seven save target unit data whose even number is the save target unit data number. Is used to generate parity data (step S204).
  • the CRC adding unit 541g generates a CRC for each save target unit data, generates a CRC for each parity data, and assigns the generated CRC to the save target unit data and the parity data (step S205).
  • the AID assigning unit 541h assigns an AID to the save target unit data and the parity data (step S206).
  • the data writing unit 541f writes the save target unit data and the parity data to which the CRC and the AID are assigned to the flash memory 141 (Step S207).
  • FIG. 10 is a sequence diagram illustrating the flow of data recovery processing by the storage apparatus 1 according to the first embodiment.
  • the recovery instruction unit 163 of the RoC 160 detects that the storage apparatus 1 has started after abnormal termination (step S301)
  • the data stored in the flash memory 141 is transferred to the read DMA 550.
  • a data recovery descriptor for recovery to the cache memory 130 is generated and stored in the descriptor holding register 530 (step S302).
  • the recovery instruction unit 163 activates the read DMA 550 (step S303).
  • the read DMA 550 activated by the recovery instruction unit 163 performs data recovery processing for recovering the data stored in the flash memory 141 to the cache memory 130 (step S304).
  • the read DMA 550 notifies the RoC 160 that the data recovery process is completed (step S305).
  • the recovery instruction unit 163 generates a data recovery descriptor for recovering the data stored in the flash memory 142 to the cache memory 130 with respect to the read DMA 550, and stores the data recovery descriptor in the descriptor holding register 530 (step S110). S306). Thereafter, the recovery instruction unit 163 activates the read DMA 550 (step S307).
  • the read DMA 550 activated by the recovery instruction unit 163 performs a data recovery process for recovering data stored in the flash memory 142 to the cache memory 130 (step S308).
  • the read DMA 550 notifies the RoC 160 that the data recovery process is completed (step S309).
  • the RoC 160 performs a restoration process (flashback) for storing the data restored in the cache memory 130 in the HDD 11 (step S310).
  • flashback a restoration process for storing the data restored in the cache memory 130 in the HDD 11
  • the recovery instruction unit 163 generates an erase descriptor and stores it in the data transfer DMA 150 (step S311). Then, the recovery instruction unit 163 activates the erase DMAs 561 and 562 (step S312), and causes the erase DMAs 561 and 562 to erase the data stored in the flash memories 141 and 142.
  • the erase DMAs 561 and 562 activated by the recovery instruction unit 163 read the erase descriptor from the descriptor holding register 530 (step S313) and perform an erase process (step S314). When the erase process is completed, the erase DMAs 561 and 562 notify the RoC 160 that the erase process is completed (step S315). Then, the RoC 160 that has received the notification that the erase process has been completed activates the storage apparatus 1 (step S316).
  • FIG. 11 is a flowchart showing a data recovery processing procedure by the read DMA 550.
  • the read DMA 550 activated by the RoC 160 reads the data recovery descriptor from the descriptor holding register 530 (step S401).
  • the data reading unit 550b of the read DMA 550 reads a small area stripe from the flash memory 141 via the selector 550a (step S402). If the data reading process by the data reading unit 550b is not completed within a predetermined time (No at Step S403), the time-out detecting unit 550c indicates that a time-out has occurred for the stripe being read by the data reading unit 550b. Is detected. Then, the timeout detection unit 550c sends a timeout detection notification to the selector 550a.
  • the selector 550a that has received the timeout detection notification stops the reading process of the stripe indicated by the stripe number included in the timeout detection notification and outputs additional data corresponding to the size of the stripe that could not be read to the data reading unit 550b ( Step S404). In this manner, the data reading unit 550b reads a small area stripe from the flash memory 141.
  • the XOR operation unit 550f generates correction data using the stripe read by the data reading unit 550b (step S405).
  • the CRC checking unit 550g checks whether there is error data in the stripe read by the data reading unit 550b, and the AID checking unit 550h checks that all the stripes read by the data reading unit 550b are all present. It is inspected whether or not they are aligned (step S406).
  • the selector 550k reads the stripe read by the data reading unit 550b and the correction data generated by the XOR operation unit 550f. Based on, the error data of the stripe in which the error is detected is corrected (step S408).
  • the boundary adjustment unit 550l removes the boundary adjustment value for the size of the boundary adjustment value included in the data recovery descriptor from the small area stripe read by the data reading unit 550b (step S409).
  • the data writing unit 550m writes the save target unit data included in the small area stripe from which the boundary adjustment value has been removed by the boundary adjustment unit 550l to the cache memory 130 (step S410). At this time, the data writing unit 550m does not write parity data to the cache memory 130.
  • the read DMA 550 If the read DMA 550 has not read all the data stored in the flash memory 141 (No in step S411), the read DMA 550 repeatedly performs the above-described processing procedure (steps S401 to S410) until all the data is read from the flash memory 141. .
  • the storage apparatus 1 generates parity data of data to be saved during the data saving process, and stores the data to be saved and the parity data to which the CRC or AID is assigned as the flash memory 141 or 142.
  • the data recovery process if the data read process from the flash memory 141 or 142 is not completed within a predetermined time, the data read process is stopped, additional data is set, and error data is corrected using the parity data. Since the read data is written to the cache memory 130, the data saved in the flash memory 141 or 142 is restored to the cache memory 130 even when the data read response from the flash memory 141 or 142 is not made. Can be made.
  • the write DMAs 541 and 542 generate one parity data for the seven save target unit data during the data save process.
  • the ratio of the number of parity data is not limited to this.
  • the write DMAs 541 and 542 may generate one parity data for two save target unit data, or generate one parity data for ten save target unit data. Also good.
  • the write DMAs 541 and 542 generate parity data using the save target unit data whose save target unit data number is an odd number, and the save target unit data whose save target unit data number is an even number.
  • the write DMAs 541 and 542 may configure parity data using a predetermined number of save target unit data regardless of the save target unit data number.
  • the boundary process which is a process of adding the boundary adjustment value to the boundary data whose data size is less than the boundary size.
  • the boundary process may not be performed. Therefore, in the second embodiment, an example will be described in which boundary processing is not performed even when data read from the cache memory 130 is not divided for each boundary size.
  • the schematic configuration of the storage apparatus 2 according to the second embodiment is the same as the schematic configuration of the storage apparatus 1 shown in FIG.
  • FIG. 12-1 is a diagram for explaining the outline of the data saving process by the storage apparatus 2 according to the second embodiment. As shown in the figure, it is assumed that the cache memory 130 stores 210 [KB] of data D3. In this state, when the storage apparatus 2 is abnormally terminated, the data D3 is divided into data D31 to D38 for each boundary size 28 [KB].
  • the RoC (referred to as RoC 260) of the storage apparatus 2 according to the second embodiment uses the data D4 (data D31 to D34) out of the data D3 stored in the cache memory 130 to the write DMA 541. Instructs to perform evacuation processing.
  • the RoC 260 instructs the write DMA 542 to perform the data saving process for the data D5 (data D34-2 and data D35 to D38) among the data D3 stored in the cache memory 130.
  • the RoC 260 with respect to the write DMA 541, has four boundary data (data D31, D32, D33, D34 shown in the figure) from the head address that is the head storage position of the data D3 in the cache memory 130. Instructs to perform data save processing.
  • the RoC 260 with respect to the write DMA 542, has four boundary data (data D54, D53, D52 shown in the figure) from the last address, which is the last storage position of the data D3 in the cache memory 130, in the head address direction. , D51) is instructed to perform the data saving process.
  • the write DMA 541 that has received such an instruction can divide the data D4 into data D31 to D34 for each boundary size 28 [KB]. Further, the write DMA 542 can divide the data D5 into data D51 to D54 for each boundary size 28 [KB]. That is, the storage apparatus 2 according to the second embodiment can perform the data saving process without performing the boundary process.
  • FIG. 12-2 is a schematic diagram illustrating an overview of data recovery processing performed by the storage apparatus 2 according to the second embodiment. It is assumed that the flash memories 141 and 142 shown in FIG. 12-2 store data saved by the write DMA 541 and the write DMA 542 shown in FIG. 12-1.
  • the read DMA 550 When the storage apparatus 2 is started after abnormal termination, the read DMA 550 performs various inspections (CRC inspection or the like) while reading the data D31 from the flash memory 141, and then writes the data in the cache memory 130. The read DMA 550 performs the same process for the data D32 to D34, and restores the data D4 to the cache memory 130.
  • CRC inspection CRC inspection or the like
  • the read DMA 550 performs various inspections (CRC inspection or the like) while reading the data D51 from the flash memory 142, and then writes the data D51 in the cache memory 130.
  • CRC inspection CRC inspection or the like
  • the read DMA 550 overwrites the portion of the data D34-2 when writing the data D51.
  • the read DMA 550 sequentially reads the data D52 to D54 from the flash memory 142 and restores the data D5 to the cache memory 130.
  • the read DMA 550 writes all the data stored in the flash memories 141 and 142 to the cache memory 130, the data D3 can be restored to the cache memory 130.
  • the storage apparatus 2 has a predetermined number of write DMAs 541 and 542 of the two systems of write DMAs 541 from a start address that is a start storage position in the cache memory 130 of save target data.
  • the number of boundary data is subjected to data save processing, and the other write DMA 542 is made to have a predetermined number of boundary data in the direction of the start address from the last address that is the last storage position of the save target data in the cache memory 130. Since the data saving process is performed on the data, the DMAs 541 and 542 can divide the data saved in the flash memory 141 or 142 by the boundary data, and as a result, the data saving process is performed without performing the boundary process. This Can.
  • FIG. 13 is a diagram illustrating the configuration of the CM 200 included in the storage apparatus 2 according to the second embodiment.
  • parts having the same functions as those shown in FIG. 4 are denoted by the same reference numerals, and detailed description thereof is omitted.
  • the save data area calculation unit 261 shown in the figure first determines the data to be saved by the write DMA 541 based on the size of the save target data stored in the cache memory 130 when the storage apparatus 2 ends abnormally.
  • the start address BA1 and the size DS1 are calculated, and then the start address BA2 and the size DS2 of the data saved by the write DMA 542 are calculated.
  • the save data area calculation unit 261 obtains a start address and a final address indicating the storage location of the save target data in the cache memory 130 when the storage apparatus 2 ends abnormally. Then, the save data area calculation unit 261 determines the acquired start address as the start address BA1 of the data saved by the write DMA 541.
  • the save data area calculation unit 261 obtains a size “X” obtained by dividing the size of the save target data by 2.
  • the size of the save target data is 210 [KB]. Therefore, the save data area calculation unit 261 calculates 105 [KB] as 210 by dividing 210 [KB] by 2 as the size X.
  • the save data area calculation unit 261 uses the write DMA 541 to calculate a value obtained by multiplying the minimum value of the integer N satisfying the expression (1) “28 [KB] ⁇ N> size X [KB]” by 28 [KB].
  • the size of the data to be saved is determined as DS1.
  • the size X is 105 [KB]
  • the minimum value of N that satisfies Equation (1) is “4”. Therefore, the saved data area calculation unit 261 is a value obtained by multiplying 4 by 28 [KB]. 112 [KB] is determined as the data size DS1 to be saved by the write DMA 541.
  • the save data area calculation unit 261 obtains a value “Y” obtained by adding the data size DS1 saved by the write DMA 541 to the start address of the save target data. This Y corresponds to the final address of the data saved by the write DMA 541. Then, the save data area calculation unit 261 obtains a value “Z” obtained by subtracting Y from the final address of the save target data. This Z corresponds to a size obtained by subtracting the size DS1 of the data saved by the write DMA 541 from the size of the save target data.
  • the size of the save target data is 210 [KB]
  • the size DS1 is 112 “KB”. Therefore, the save data area calculation unit 261 uses the size Z as 210 [KB] to 112 [KB]. ] Is subtracted from 98 [KB].
  • the save data area calculation unit 261 determines that the write DMA 542 uses a value obtained by multiplying the minimum value of the integer N satisfying the equation (2) “28 [KB] ⁇ N> size Z [KB]” by 28 [KB].
  • the size of the data to be saved is determined as DS2.
  • the size Z is 98 [KB]
  • the minimum value of N that satisfies Expression (2) is “4”. Therefore, the saved data area calculation unit 261 is a value obtained by multiplying 4 by 28 [KB]. 112 [KB] is determined as the data size DS2 to be saved by the write DMA 542.
  • the save data area calculation unit 261 determines a value obtained by subtracting the size DS2 of the data saved by the write DMA 542 from the final address of the save target data as the start address BA2 of the data saved by the write DMA 542.
  • the save data area calculation unit 261 calculates the start address BA1 and size DS1 of the data saved by the write DMA 541 and the start address BA2 and size DS2 of the data saved by the write DMA 542.
  • the save instruction unit 262 shown in FIG. 13 generates a data save descriptor and transmits it to the data transfer DMA 150 to instruct the write DMAs 541 and 542 to perform data save processing.
  • the save instruction unit 262 generates a data save descriptor including the above-described start address BA1 and size DS1, and instructs the write DMA 541 to perform data save processing based on the data save descriptor. To do. Further, the save instruction unit 262 generates a data save descriptor including the above-described start address BA2 and size DS2, and instructs the write DMA 542 to perform data save processing based on the data save descriptor. Note that the data save descriptor generated by the save instruction unit 262 does not include the size of the boundary adjustment value.
  • FIG. 14 is a flowchart showing a save data area calculation processing procedure by the save data area calculation unit 261 shown in FIG.
  • the save data area calculation unit 261 obtains a start address and a final address indicating the storage position of the save target data in the cache memory 130 (step S501).
  • the save data area calculation unit 261 determines the acquired start address as the start address of the data saved by the write DMA 541 (step S502). Subsequently, the save data area calculation unit 261 obtains a size X obtained by dividing the size of the save target data by 2 (step S503).
  • the saved data area calculation unit 261 obtains the minimum value of the integer N that satisfies the formula (1) “28 [KB] ⁇ N> size X [KB]” (step S504).
  • the minimum value N obtained here is referred to as a “first reference value”.
  • the saved data area calculation unit 261 determines a value obtained by multiplying the first reference value by 28 [KB] as the size of data to be saved by the write DMA 541 (step S505).
  • the save data area calculation unit 261 obtains a size Z obtained by subtracting the size of the data saved by the write DMA 541 from the size of the save target data (step S506). Subsequently, the saved data area calculation unit 261 obtains the minimum value of the integer N that satisfies the formula (2) “28 [KB] ⁇ N> size Z [KB]” (step S507). Hereinafter, the minimum value N obtained here is referred to as a “second reference value”. Then, the save data area calculation unit 261 determines a value obtained by multiplying the second reference value by 28 [KB] as the size of the data to be saved by the write DMA 542 (step S508).
  • the save data area calculation unit 261 obtains a value obtained by subtracting the size of the data to be saved by the write DMA 542 from the final address of the save target data (step S509), and uses the obtained value for the data to be saved by the write DMA 542.
  • the head address is determined (step S510).
  • the storage apparatus 2 is configured so that the save data area calculation unit 261 obtains the start address and size of the data saved by the write DMAs 541 and 542. Therefore, the DMAs 541 and 542
  • the data to be saved in the flash memory 141 or 142 can be divided by the boundary data. As a result, even if no data read response is made from the flash memory 141 or 142, the flash memory is not subjected to the boundary processing.
  • the data saved in 141 or 142 can be restored to the cache memory 130.
  • the storage apparatus 2 it is not necessary to perform the boundary process, so that the saved data area calculation unit 261 does not need to calculate the size of the boundary adjustment value.
  • the processing load on the saved data area calculation unit 261 can be reduced, and the speed of the data saving process can be increased. That is, at the time of abnormal termination, the data saving process can be performed for a large amount of data within a short time during which power is supplied from the power supply unit 12.
  • a circuit for performing boundary processing can be deleted from the write DMAs 541 and 542 and the read DMA 550, and the write DMAs 541 and 542 can be deleted.
  • the scale of the read DMA 550 can be reduced.
  • the boundary adjustment unit 541b can be deleted from the write DMA 541 shown in FIG. 6, and the boundary adjustment unit 550l can be deleted from the read DMA 550 shown in FIG.
  • the costs for the write DMAs 541 and 542 and the read DMA 550 can be reduced.
  • the save data area calculation unit 261 calculates the start address and size of the data saved by the write DMAs 541 and 542.
  • the save data area calculation unit 261 calculates the start address and size of the data saved by each write DMA so as not to perform boundary processing. May be.
  • the save data area calculation unit 261 performs a predetermined number of boundary data in the head address direction from the last address of the save target data for the fourth write DMA. Therefore, the start address and size of the data saved by the fourth write DMA are calculated so that the data saving process is performed.
  • the boundary size is set to 28 [KB]
  • the size for dividing the boundary data is set to 2 [KB]
  • the number of pages in the area is set to 1024
  • the number of pages in the small area is set.
  • the boundary size may be 56 [KB]
  • the boundary data may be divided into 4 [KB]
  • the number of pages in the area may be 2048
  • the number of pages in the small area may be 32.
  • each component of each illustrated apparatus is functionally conceptual, and does not necessarily need to be physically configured as illustrated. That is, the specific form of distribution and integration of each device is not limited to the one shown in the figure, and all or a part thereof is functionally or physically distributed in arbitrary units according to various loads or usage conditions. Can be integrated and configured. Further, all or any part of each processing function performed in each device is realized by a CPU (Central Processing Unit) and a program analyzed and executed by the CPU, or hardware by wired logic. Can be realized as
  • CPU Central Processing Unit

Abstract

 不揮発性メモリから読み出し応答がなされない場合であっても、不揮発性メモリに退避させたデータを、キャッシュメモリに復旧させることを目的とする。データ退避処理時に、退避対象データのパリティデータを生成して、CRCやAIDを付与した退避対象データおよびパリティデータをフラッシュメモリ141または142に書き込み、データ復旧処理において、フラッシュメモリ141または142から所定の時間内にデータ読出処理が完了しない場合に、データ読出処理を中止して付加データを設定し、パリティデータを用いて誤りデータを訂正した退避対象データをキャッシュメモリ130に書き込む。

Description

ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法
 本発明は、ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法に関する。
 従来、大規模なコンピュータシステムでは、ホストコンピュータと別体に構成された専用のデータ入出力装置を用いてデータを管理している。このデータ入出力装置の中でも、ストレージ装置は、複数のハードディスク装置(記憶媒体)によってRAID(Redundant Arrays of Independent(Inexpensive) Disks)グループを構成して、取り扱うデータの信頼性を向上させている。
 ストレージ装置は、一般に、ライトバック方式と呼ばれるライト処理(書込処理)方式を行うことで、アクセス性能を向上させている。具体的には、ストレージ装置は、上位装置であるホストコンピュータからデータのライト命令を受け付けた場合に、キャッシュメモリにデータを記憶した時点で、ライト処理が完了した旨をホストコンピュータへ通知する。その後、所定の条件を満たした時点で、キャッシュメモリに記憶したデータをハードディスク装置へ記憶させる。
 このようなライトバック方式を採用するストレージ装置には、停電などによって正常な終了操作が行われることなく電源が落とされた場合であっても(以下、正常な終了操作が行われることなく電源が落とされることを「異常終了」という)、揮発性のキャッシュメモリに記憶されているデータが消失しないように構成されているものがある。
 具体的には、異常終了した場合に、大容量のコンデンサやバッテリー等から電力供給されている間に、キャッシュメモリ上のデータを不揮発性メモリに退避させ、異常終了後に電源投入された場合に不揮発性メモリに退避したデータをキャッシュメモリに復旧させる。これにより、キャッシュメモリに記憶されているデータがハードディスク装置に記憶されていない状態で異常終了した場合であっても、データを消失させないことを実現している。
 ところで、データを退避させる不揮発性メモリは、一般的に、NAND型のフラッシュメモリが用いられることが多い。NAND型のフラッシュメモリは、セル劣化等によって記憶しているデータを破損や消失してしまうことがある。不揮発性メモリに記憶されているデータが破損や消失する状況が発生すると、ストレージ装置は、異常終了後の起動時に、不揮発性メモリから誤ったデータを読み出してしまい、正確にデータを復旧させることができなくなる。
 そこで、記憶媒体に記憶されているデータのエラーを検出し、エラー検出時にデータ訂正を行う技術(例えば、特許文献1および2を参照)を用いることが考えられる。このような技術を用いれば、異常終了後の起動時に、不揮発性メモリに退避させたデータを、キャッシュメモリに復旧させることが可能になる。
特表2004-506256号公報 特開2007-193449号公報
 しかしながら、上記特許文献1および2に開示されているような技術を用いても、不揮発性メモリから読み出し応答がなされない場合には、不揮発性メモリに退避させたデータを、正確にキャッシュメモリに復旧させることができないという問題があった。不揮発性メモリの劣化状態によっては、不揮発性メモリから読み出し応答がなされないことがあり、かかる状態では、ハングアップ状態となりデータ訂正処理が実行されないためである。
 ストレージ装置のような大規模なデータ入出力装置は、重要なコンピュータシステムに用いられることが多く、キャッシュメモリに記憶されているユーザデータやシステムデータを正確に復旧できないことは、大きな問題となる。このようなことから、不揮発性メモリから読み出し応答がなされない場合であっても、不揮発性メモリに退避させたデータを、いかにして正確にキャッシュメモリに復旧させるかが重要な課題となっていた。
 本発明は、上述した従来技術による課題を解消するためになされたものであり、不揮発性メモリから読み出し応答がなされない場合であっても、不揮発性メモリに退避させたデータを、キャッシュメモリに復旧させることができるストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法を提供することを目的とする。
 上述した課題を解決し、目的を達成するために、本願に開示するストレージ装置は、異常終了時に、キャッシュメモリに記憶されているデータである退避対象データ、および、前記退避対象データの誤りデータを訂正するためのパリティデータに、誤りデータを検出するための誤り検出符号を付与した転送対象データを、不揮発性メモリへ記憶させるデータ転送部を有するストレージ装置であって、当該のストレージ装置が異常終了後に電源投入された場合に、前記不揮発性メモリから、前記転送対象データが所定のサイズであるストライプサイズごとに区切られたデータであるストライプを読み出すデータ読出手段と、前記データ読出手段によって前記ストライプが所定の時間内に読み出されない場合に、該ストライプに、該ストライプのサイズがストライプサイズになるまで、付加データを付与する付加データ付与手段と、前記データ読出手段によって読み出されたストライプに付与されている誤り検出符号に基づいて、ストライプに誤りデータが存在しているか否かを検査する誤りデータ検査手段と、前記誤りデータ検査手段によって誤りデータが検出された場合に、前記データ読出手段によって読み出されたストライプを用いて、誤りデータを訂正するデータ訂正手段と、前記誤りデータ検査手段によって誤りデータが検出されなかったストライプに含まれる退避対象データを前記キャッシュメモリに書き込むとともに、前記データ訂正手段によって誤りデータが訂正されたストライプに含まれる退避対象データを前記キャッシュメモリに書き込むデータ書込手段とを備えたことを要件とする。
 なお、本願に開示するストレージ装置の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも、他の態様として有効である。
 本願に開示したストレージ装置によれば、不揮発性メモリからデータの読出応答がなされない場合であっても、不揮発性メモリに退避させたデータを、キャッシュメモリに復旧させることができるという効果を奏する。
図1は、実施例1に係るストレージ装置の概略構成を示す図である。 図2-1は、フラッシュメモリ141の構成およびデータフォーマットを示す図である。 図2-2は、図2-1に示したpageの構成およびデータフォーマットを示す図である。 図3-1は、実施例1に係るストレージ装置によるデータ退避処理の概要を説明するための図である。 図3-2は、実施例1に係るストレージ装置によるデータ復旧処理の概要を説明するための図である。 図3-3は、実施例1に係るストレージ装置によるデータ復旧処理の概要を説明するための図である。 図4は、実施例1に係るストレージ装置が有するCMの構成を示す図である。 図5は、図4に示したデータ転送DMAの構成を示す図である。 図6は、図5に示したライトDMAの構成を示す図である。 図7は、図5に示したリードDMAの構成を示す図である。 図8は、実施例1に係るストレージ装置によるデータ退避処理の流れを示すシーケンス図である。 図9は、ライトDMAによるデータ退避処理手順を示すフローチャートである。 図10は、実施例1に係るストレージ装置によるデータ復旧処理の流れを示すシーケンス図である。 図11は、リードDMAによるデータ復旧処理手順を示すフローチャートである。 図12-1は、実施例2に係るストレージ装置によるデータ退避処理の概要を説明するための図である。 図12-2は、実施例2に係るストレージ装置によるデータ復旧処理の概要を説明するための図である。 図13は、実施例2に係るストレージ装置が有するCMの構成を示す図である。 図14は、図13に示した退避データ領域算出部による退避データ領域算出処理手順を示すフローチャートである。
符号の説明
 1、2      ストレージ装置
 10       CE
 11       HDD
 12       電力供給部
 20       DE
 100、200  CM
 110      I/F部
 120、220  エクスパンダ
 130      キャッシュメモリ
 141、142  フラッシュメモリ
 150      データ転送DMA
 160、260  RoC
 161、261  退避データ領域算出部
 162、262  退避指示部
 163      復旧指示部
 510      PCIバスI/F
 521、522  メモリI/F
 530      ディスクリプタ保持レジスタ
 541、542  ライトDMA
 541a     データ読出部
 541b     バウンダリ調整部
 541c     パリティ生成部
 541d     退避データバッファ
 541e     パリティバッファ
 541f     データ書込部
 541g     CRC付与部
 541h     AID付与部
 550      リードDMA
 550a     セレクタ
 550b     データ読出部
 550c     タイムアウト検出部
 550d     エラー検出部
 550e     復旧データバッファ
 550f     XOR演算部
 550g     CRC検査部
 550h     AID検査部
 550i     訂正データバッファ
 550j     ログ保持レジスタ
 550k     セレクタ
 550l     バウンダリ調整部
 550m     データ書込部
 561、562  イレースDMA
 以下に、本発明にかかるストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
 まず、実施例1に係るストレージ装置の概略構成について説明する。図1は、実施例1に係るストレージ装置1の概略構成を示す図である。同図に示したストレージ装置1は、高信頼性を確保するために二重化構成が採られており、各構成要素が2系統ずつ(同図中、参照符号に付加したA、Bによって区別する)備えられている。それぞれの系統の構成要素は互いに同等の機能を有するため、以下では一方の系統についてのみ構成要素の説明をする。
 同図に示すように、ストレージ装置1は、ストレージ装置1を制御する各部や、ストレージ装置1と上位装置であるホストコンピュータとの間の通信を担う通信モジュールなどを主に搭載するCE(Controller Enclosure:コントローラ エンクロージャ)10と、ハードディスク装置を主に搭載するDE(Device Enclosure:デバイス エンクロージャ)20とに、筐体が分けられている。
 CE10は、図示しないチャネルアダプタ経由でファイバチャネルを介してホストコンピュータと接続され、エクスパンダ120Aおよび120B経由でDE20と接続されている。DE20は、ハードディスク装置(以下、「HDD:Hard Disk Drive」と略記する)21を有し、エクスパンダ220Aおよび220Bを直接、もしくは、ルータ(Router)を経由するなどして、他のDEと複数個接続することが可能である。
 また、CE10は、ストレージ装置1を制御するためのCM(Controller Module:コントローラ モジュール)100Aおよび100Bと、CM100Aおよび100Bに接続される複数のハードディスク装置11とを有する。
 HDD11は、CM100Aによってデータが冗長に読み書きされる記憶装置である。なお、CM100Aに接続される記憶装置は、ハードディスク装置に限られず、熱磁気ディスク装置や光磁気ディスク装置、または、半導体不揮発メモリを用いた半導体ディスクのような他の記憶装置であってもよい。
 CM100Aは、ストレージ装置1を制御するストレージ制御装置であり、インタフェース(以下、「I/F」と略記する)部110Aと、エクスパンダ120Aと、キャッシュメモリ130Aと、フラッシュメモリ141Aおよび142Aと、データ転送DMA(Direct Memory Access)150Aと、RAID-on-Chip(以下、「RoC」と略記する)160Aとを有する。
 I/F部110Aは、LAN(Local Area Network)などのネットワークへ接続するためのインタフェースである。エクスパンダ120Aは、RoC160AとHDD11との間で送受信されるデータを中継する中継装置である。
 キャッシュメモリ130Aは、ホストコンピュータとHDD11との間で転送が行われるデータを一時的に記憶するメモリである。フラッシュメモリ141Aおよび142Aは、不揮発性メモリであり、例えば、NAND型のフラッシュメモリである。実施例1に係るストレージ装置1では、フラッシュメモリ141Aおよび142Aに、OneNAND(ワンナンド)型のフラッシュメモリを用いることとする。
 ここで、OneNAND型のフラッシュメモリ141Aおよび142Aの構成およびデータフォーマットについて説明する。なお、フラッシュメモリ141Aおよび142Aの構成およびデータフォーマットは同一であるため、ここでは、フラッシュメモリ141Aの構成およびデータフォーマットについてのみ説明する。
 図2-1は、フラッシュメモリ141Aの構成およびデータフォーマットを示す図である。なお、フラッシュメモリ141Aの記憶容量は、2[GB(ギガバイト)]であるとする。同図に示すように、フラッシュメモリ141Aは、4つのメモリバンク#00~メモリバンク#03を有する。メモリバンク#00~メモリバンク#03は、メモリの集合体であり、それぞれがダイ#0およびダイ#1を有する。
 ダイ#0およびダイ#1は、数ミリ角のフラッシュメモリであり、それぞれがBlock#0~Block#2047を有する。また、Block#0~#2047は、それぞれがpage(ページ)#0~page#63を有する。pageが、フラッシュメモリ141への最小アクセス単位となる。
 pageの構成およびデータフォーマットについて説明する。図2-2は、図2-1に示したpageの構成およびデータフォーマットを示す図である。同図に示すように、pageは、メイン領域と、スペア領域とを有する。
 メイン領域は、ユーザデータが記憶される2[KB(キロバイト)]の記憶領域であり、4個のセクタ#0~セクタ#3を有する。スペア領域は、主にデータを管理するためのシステムデータ等が記憶される64[byte(バイト)]の記憶領域であり、4個のスペア#0~#3を有する。
 スペア領域を構成する1つのスペア(例えば、スペア#0)は、同図に示すように、システム領域と、ECC(Error Correcting Code:誤り訂正符号)領域と、リザーブ領域と、ユーザ領域とを有する。
 システム領域は、不良セクタ情報等の各種情報が記憶される記憶領域である。ECC領域は、フラッシュメモリ141Aによって生成されるECCが記憶される領域である。フラッシュメモリ141Aは、このECCを用いてエラーチェックを行い、エラーを検出した場合に、ECCチェックエラーが発生した旨を通知する。リザーブ領域は、予備領域である。ユーザ領域は、フラッシュメモリ141Aにデータを記憶させるシステムによってデータ管理上必要となるデータが記憶される記憶領域である。
 図1の説明に戻って、データ転送DMA150Aは、キャッシュメモリ130Aと、フラッシュメモリ141Aおよび142Aとの間におけるデータ送受信をDMAにより行うDMA回路である。このデータ転送DMA150Aは、例えば、FPGA(Field Programmable Gate Array)によって実現される。
 RoC160Aは、CM100Aを全体制御する制御装置であり、ホストコンピュータとのインタフェースを制御したり、キャッシュメモリ130Aの管理を行ったりする。また、RoC160Aは、ホストコンピュータからデータのライト命令を受け付けた場合に、かかるデータをキャッシュメモリ130Aに記憶する。そして、RoC160Aは、キャッシュメモリ130Aにデータを記憶した時点で、ライト処理が完了した旨をホストコンピュータへ通知する。その後、所定の条件を満たした時点で、キャッシュメモリ130Aに記憶したデータをHDD11に書き込みする。
 また、RoC160Aは、ストレージ装置1が異常終了した場合に、データ転送DMA150Aに対して、キャッシュメモリ130Aに記憶されているデータをフラッシュメモリ141Aおよび142Aに退避させる処理(以下、「データ退避処理」という)を行うように指示する。また、RoC160Aは、異常終了後のストレージ装置1が起動した場合に、データ転送DMA150Aに対して、フラッシュメモリ141Aおよび142Aに退避したデータをキャッシュメモリ130Aに復旧させる処理(以下、「データ復旧処理」という)を行うように指示する。
 次に、図3-1~図3-3を用いて、実施例1に係るストレージ装置1によるデータ退避処理およびデータ復旧処理の概要について説明する。図3-1は、実施例1に係るストレージ装置1によるデータ退避処理の概要を説明するための図である。なお、以下では、図1中に付加した参照符号のAおよびBを付与せずに説明する。すなわち、例えば、図3-1に示したキャッシュメモリ130は、図1に示したキャッシュメモリ130Aまたは130Bに対応する。
 図3-1に示すように、キャッシュメモリ130には、53[KB]のデータD1が記憶されているものとする。この状態で、ストレージ装置1が異常終了したため、RoC160が、データ転送DMA150に対して、データD1を退避するように指示したとする。かかる指示を受け付けたデータ転送DMA150は、キャッシュメモリ130からデータD1を読み出す。なお、以下では、ストレージ装置1が異常終了した時に、データ転送DMA150によって退避されるキャッシュメモリ130上のデータを「退避対象データ」と呼ぶこととする。
 そして、データ転送DMA150は、データD1を、28[KB]ごとに区切る。具体的には、同図に示すように、データ転送DMA150は、データD1を、28[KB]のデータD10と、25[KB]のデータD20とに区切る。なお、データ転送DMA150が退避対象データ(上記例ではデータD1)を分割するサイズ(上記例では、28[KB])は、予めシステムで決められており、以下では、このサイズを「バウンダリサイズ」と呼び、バウンダリサイズによって区切られた退避対象データの1つのデータを「バウンダリデータ」と呼ぶこととする。実施例1に係るストレージ装置1では、バウンダリサイズが28[KB]に決定されていることとする。
 そして、データ転送DMA150は、データD10を、2[KB]ごとに区切る。具体的には、同図に示すように、データ転送DMA150は、データD10を、14個のデータD101~D114に区切る。なお、データ転送DMA150がバウンダリデータ(上記例では、データD10およびD20)を分割するサイズ(上記例では、2[KB])は、予めシステムで決められており、実施例1に係るストレージ装置1では、このサイズが、2[KB]に決定されていることとする。以下では、2[KB]ごとに区切られたバウンダリデータの1つのデータ(データD101等)を、「退避対象単位データ」と呼ぶこととし、退避対象単位データを識別するための番号を「退避対象単位データ番号」と呼ぶこととする。本明細書では、退避対象単位データに付した参照符号の数字部分を退避対象単位データ番号とする。例えば、データD101の退避対象単位データ番号は、「101」である。
 そして、データ転送DMA150は、退避対象単位データ番号が奇数である7個のデータD101、D103、・・、D113の排他的論理和(以下、「XOR」という)演算を行ってパリティデータP115を生成する。また、データ転送DMA150は、退避対象単位データ番号が偶数である7個のデータD102、D104、・・、D114のXOR演算を行ってパリティデータP116を生成する。
 このパリティデータP115およびP116のサイズは、データD101~D114のサイズと同様の2[KB]となる。すなわち、バウンダリサイズ28[KB]に区切られたデータD10のサイズと、かかるデータD10から生成されたパリティデータP115およびP116のサイズの合計は、32[KB]となる。なお、以下では、パリティデータも「退避対象単位データ」と呼ぶこととする。
 その後、データ転送DMA150は、データD101~D114ごとに、CRC(Cyclic Redundancy Check)を生成する。同様に、データ転送DMA150は、パリティデータP115およびP116ごとに、CRCを生成する。そして、データ転送DMA150は、生成したCRCを、データD101~D114と、パリティデータP115およびP116とに付与する。
 また、データ転送DMA150は、データD101~D114と、パリティデータP115およびP116とを識別するための識別番号(以下、「AID:Area Identification」という)をデータD101~D114と、パリティデータP115およびP116とに付与する。このAIDについては、後に詳述する。
 そして、データ転送DMA150は、CRCおよびAIDが付与されたデータD101~D114と、CRCおよびAIDが付与されたパリティデータP115およびP116とをフラッシュメモリ141に書き込む。すなわち、データ転送DMA150は、16個の退避対象単位データ(14個のデータD101~D114と、2個のパリティデータP115およびP116)を、フラッシュメモリ141に書き込む。
 このとき、データ転送DMA150は、フラッシュメモリ141が有する4個のメモリバンク#00~メモリバンク#03に対して、退避対象単位データを4個ずつ書き込む。また、このとき、データ転送DMA150は、メモリバンク#00~メモリバンク#03が有する2個のダイ#0およびダイ#1に対して、退避対象単位データを2個ずつ書き込む。また、このとき、データ転送DMA150は、ダイ#0およびダイ#1が有する所定の2個のBlockに対して、退避対象単位データ番号が奇数である退避対象単位データと、退避対象単位データ番号が偶数である退避対象単位データとを1個ずつ書き込む。
 以下では、データ転送DMA150が、16個の退避対象単位データを書き込むフラッシュメモリ141上の領域を「小エリア」と呼ぶこととする。この「小エリア」は、例えば、図2-1に示した小エリアSA1に該当する。
 ここで、データ転送DMA150のデータ書込処理について、データD101~D114と、パリティデータP115およびP116とを、図2-1に示した小エリアAS1に書き込む場合を例に挙げて説明する。なお、以下では、「メモリバンク#Pのダイ#QのBlock#Rが有するpage#S」を示す場合に、「メモリバンク#P/ダイ#Q/Block#R/page#S」と記載することとする。
 かかる場合、データ転送DMA150は、例えば、データD101を、小エリアSA1内のメモリバンク#00/ダイ#0/Block#2/page#1のメイン領域に書き込む。そして、データ転送DMA150は、データD102を、メモリバンク#00/ダイ#0/Block#3/page#1のメイン領域に書き込み、データD103を、メモリバンク#00/ダイ#1/Block#2/page#1のメイン領域に書き込む。このようにして、データ転送DMA150は、データD104~D113を書き込んでいき、データD114を、メモリバンク#03/ダイ#0/Block#3/page#1に書き込み、パリティデータP115を、メモリバンク#03/ダイ#1/Block#2/page#1に書き込み、パリティデータP116を、メモリバンク#03/ダイ#1/Block#3/page#1に書き込む。
 そして、データ転送DMA150は、各退避対象単位データに付与したCRCをpageのスペア領域内のユーザ領域に書き込む。上記例のように、データD101を、メモリバンク#00/ダイ#0/Block#2/page#1のメイン領域に書き込んだ場合、データ転送DMA150は、データD101のCRCを、メモリバンク#00/ダイ#0/Block#2/page#1のスペア#0のユーザ領域に書き込む。同様に、データ転送DMA150は、データD102~D114と、パリティデータP115およびP116のCRCについても、pageのユーザ領域に書き込む。
 また、データ転送DMA150は、各退避対象単位データに付与したAIDをpageのスペア領域内のユーザ領域に書き込む。上記例のように、データD101のCRCを、メモリバンク#00/ダイ#0/Block#2/page#1のスペア#0のユーザ領域に書き込んだ場合、データ転送DMA150は、データD101のAIDを、メモリバンク#00/ダイ#0/Block#2/page#1のスペア#1のユーザ領域に書き込む。同様に、データ転送DMA150は、データD102~D114と、パリティデータP115およびP116のAIDについても、pageのユーザ領域に書き込む。
 このようにして、データ転送DMA150は、16個の退避対象単位データを、小エリアに書き込む。以下では、小エリア内の1つのpageに記憶されている全てのデータ(退避対象単位データやCRCやAID等)を「ストライプ」と呼ぶこととし、小エリア内でストライプを識別するための番号を「ストライプ番号」と呼ぶこととする。本明細書では、退避対象単位データに付した参照符号の数字下2桁部分をストライプ番号とする。例えば、データD101を記憶するpageに記憶されているストライプのストライプ番号は「1」であり、パリティデータP115を記憶するpageに記憶されているストライプのストライプ番号は「15」である。以下では、ストライプ番号「N」のストライプを、単に、ストライプS「N」と呼ぶこととする。
 なお、図3-1に示したフラッシュメモリ141内の「D101」や「P115」等を記載した矩形は、pageのメイン領域を示し、かかるメイン領域の後に斜線を付して示した矩形は、pageのスペア領域を示す。すなわち、同図では、例えば、「D101」を記載したメイン領域と、かかるメイン領域の後に示したスペア領域との組合せがストライプS1であることを示す。
 同様にして、データ転送DMA150は、データD20をフラッシュメモリ142に書き込む。具体的には、データ転送DMA150は、データD20を2[KB]ごとに区切る。このとき、データ転送DMA150は、データD20のサイズが25[KB]であり、バウンダリサイズの28[KB]に満たないので、データD20のサイズが28[KB]になるように、3[KB]の所定の値を加える。以下では、この所定の値を「バウンダリ調整値」と呼ぶこととする。バウンダリデータのサイズがバウンダリサイズに満たない場合に、バウンダリ調整値を加える理由は、パリティデータを生成できるようにするためである。
 そして、データ転送DMA150は、バウンダリ調整値を加えたデータD20を2[KB]ごとに区切る。具体的には、同図に示すように、データ転送DMA150は、3[KB]のバウンダリ調整値を加えたデータD20を、14個のデータD201~D214に区切る。
 その後の処理は、上述したデータD10をフラッシュメモリ141に書き込む処理と同様であり、データ転送DMA150は、パリティデータP215およびP216を生成して、データD201等のCRCを生成して、データD201~D214と、パリティデータP215およびP216と、CRCと、AIDとをフラッシュメモリ142に書き込む。
 このようにして、データ転送DMA150は、キャッシュメモリ130に記憶されているデータD1のうち、データD10をフラッシュメモリ141に書き込み、データD20をフラッシュメモリ142に書き込む。
 なお、データ転送DMA150は、複数の小エリアに対して、データを並行して書き込むことが可能である。実施例1に係るストレージ装置1では、データ転送DMA150が、最大で64個の小エリアに対して同時にデータを書き込むこととする。以下では、この64個の小エリアを「エリア」と呼ぶこととする。この「エリア」は、例えば、図2-1に示したエリアA1に該当する。上述したAIDは、1個のエリア内に含まれるストライプを識別するための識別番号である。このAIDは、RoC160によって算出され、データ転送DMA150は、RoC160からAIDを受け付ける。
 次に、実施例1に係るストレージ装置1によるデータ復旧処理の概要について説明する。図3-2および図3-3は、実施例1に係るストレージ装置1によるデータ復旧処理の概要を説明するための図である。図3-2および図3-3に示したフラッシュメモリ141には、図3-1に示したデータ転送DMA150によって退避されたデータが記憶されているものとする。
 まず、図3-2を用いて、図3-1に示したデータD10をキャッシュメモリ130に復旧させる処理について説明する。ここでは、図3-2に示したフラッシュメモリ141に記憶されているデータD103の一部が、フラッシュメモリ141のセル劣化等の原因により破損しているものとする。そして、フラッシュメモリ141は、データD103の読出要求を受け付けると、かかる読出要求に対する応答ができなくなるものとする。
 かかる状態で、ストレージ装置1が異常終了後に起動した場合、データ転送DMA150は、フラッシュメモリ141から、小エリア単位でストライプを読み出す。具体的には、データ転送DMA150は、フラッシュメモリ141から、ストライプS1~S16を読み出す。
 そして、データ転送DMA150は、ストライプS3を読み出している途中で、フラッシュメモリ141から読出応答を受け付けなくなる。所定の時間が経過してもストライプS3を読み出せない場合、データ転送DMA150は、ストライプS3に対してタイムアウトが発生したことを検出する。
 そして、データ転送DMA150は、タイムアウトが発生したストライプS3の読出処理を中止して、ストライプS3に、読み出しできなかったサイズ分の所定の値(以下、この所定の値を「付加データ」という)を設定する。例えば、1[KB]分のストライプS3を読み出した時点で、フラッシュメモリ141から読み出し応答を受け付けなくなった場合、データ転送DMA150は、読み出し済みの1[KB]のデータに1[KB]の付加データを加えた2[KB]のデータをストライプS3とする。その後、データ転送DMA150は、データの読出処理を再開して、フラッシュメモリ141から、ストライプS4~S16を読み出す。
 また、データ転送DMA150は、ストライプS1~16を読み出しながら、CRC検査、AID検査およびXOR演算を行う。具体的には、データ転送DMA150は、読み出したストライプS1~16内のCRCを用いて、ストライプS1~16に誤りデータが存在するか否かを検査する。また、データ転送DMA150は、ストライプS1~16内のAIDを用いて、ストライプS1~16がすべて揃っているか否かを検査する。また、データ転送DMA150は、ストライプ番号が奇数であるストライプS1、S3、・・、S15のXOR演算を行い、訂正データT11を生成するとともに、ストライプ番号が偶数であるストライプS2、S4、・・、S16のXOR演算を行い、訂正データT12を生成する。
 図3-2に示した例では、データ転送DMA150は、付加データが設定されているストライプS3のCRC検査において、誤りデータが存在することを検出する。なお、ストライプS3に含まれるAIDを読み出す前に、タイムアウトが発生した場合には、AIDには付加データが設定されているため、データ転送DMA150は、ストライプS3のAID検査において、データD103が欠如していると検出する可能性もある。ここでは、データ転送DMA150は、ストライプS3に対してのみデータ誤りを検出し、ストライプS1、S2、S4~S16に対しては、CRC検査およびAID検査においてエラーを検出しなかったものとする。
 すべてのストライプS1~16を読み出した後、データ転送DMA150は、CRC検査およびAID検査においてエラーが検出されなかったストライプS1およびS2に含まれるデータD101およびD102をキャッシュメモリ130に書き込む。そして、データ転送DMA150は、エラーが検出されたストライプS3については、ストライプ番号が奇数であるストライプS1、S5、S7、・・、S15および訂正データT11を用いて、データD103の誤りデータを訂正して、訂正済みのデータD103をキャッシュメモリ130に書き込む。そして、データ転送DMA150は、エラーが検出されなかったストライプS4~S14に含まれるデータD104~D114をキャッシュメモリ130に書き込む。なお、ストライプS15およびS16はパリティデータであるため、データ転送DMA150は、ストライプS15およびS16に含まれるパリティデータP115およびP116をキャッシュメモリ130に書き込まない。このようにして、データ転送DMA150は、データD10をキャッシュメモリ130に復旧する。
 続いて、図3-3を用いて、図3-1に示したデータD20をキャッシュメモリ130に復旧させる処理について説明する。同図に示すように、データ転送DMA150は、データD10の復旧処理が終了した後、フラッシュメモリ142から、ストライプS1~S16を読み出しながら、CRC検査、AID検査およびXOR演算を行い、訂正データT21およびT22を生成する。ここでは、データ転送DMA150は、フラッシュメモリ142からストライプS1~S16の読出処理中に、タイムアウトが発生しなかったものとする。また、データ転送DMA150は、ストライプS1~S16のCRC検査およびAID検査においてエラーを検出しなかったものとする。
 すべてのストライプS1~16を読み出した後、データ転送DMA150は、ストライプS1~S12に含まれるデータD201~D212をキャッシュメモリ130に書き込む。そして、データ転送DMA150は、ストライプS13に含まれるデータD213から1[KB]のバウンダリ調整値を除去したデータD213をキャッシュメモリ130に書き込む。なお、ストライプS14に含まれるデータD214は、すべてバウンダリ調整値であるため、データ転送DMA150は、データD214をキャッシュメモリ130に書き込まない。
 以上のように、実施例1に係るストレージ装置1は、データ退避処理時に、退避対象データのパリティデータを生成して、CRCやAIDを付与した退避対象データおよびパリティデータをフラッシュメモリ141または142に書き込み、データ復旧処理において、フラッシュメモリ141または142から所定の時間内にデータ読出処理が完了しない場合に、データ読出処理を中止して付加データを設定し、パリティデータを用いて誤りデータを訂正したデータをキャッシュメモリ130に書き込むので、フラッシュメモリ141または142からデータの読出応答がなされない場合であっても、フラッシュメモリ141または142に退避させたデータを、キャッシュメモリ130に復旧させることができる。
 また、実施例1に係るストレージ装置1は、退避対象単位データ番号が奇数である退避対象単位データを用いてパリティデータを生成するとともに、退避対象単位データ番号が偶数である退避対象単位データを用いてパリティデータを生成し、小エリア内の1つのダイには、退避対象単位データ番号が奇数である退避対象単位データと、退避対象単位データ番号が偶数である退避対象単位データとを書き込むように構成したので、1個のダイが故障した場合であっても、かかる故障したダイに記憶されていたデータを訂正することができる。すなわち、1個のダイが故障した場合であっても、フラッシュメモリ141または142に退避させたデータを、キャッシュメモリ130に復旧させることができる。
 次に、実施例1に係るストレージ装置1が有するCM100の構成について説明する。図4は、実施例1に係るストレージ装置1が有するCM100の構成を示す図である。なお、同図では、データ退避処理およびデータ復旧処理に関連する構成のみを図示している。
 同図に示すように、CM100は、電力供給部12と接続されており、キャッシュメモリ130と、フラッシュメモリ141および142と、データ転送DMA150と、RoC160とを有する。
 電力供給部12は、ストレージ装置1が異常終了した場合に、CM100に対して電力供給を行う装置であり、例えば、大容量のコンデンサやバッテリー等である。なお、同図では、CM100が外部に備えられた電力供給部12によって電力供給される例を示しているが、CM100は、電力供給部12を有してもよい。
 キャッシュメモリ130は、上述したように、ホストコンピュータとHDD11との間で転送が行われるデータを一時的に記憶するメモリである。フラッシュメモリ141および142は、不揮発性メモリであり、ストレージ装置1の異常終了時にデータ転送DMA150によって、キャッシュメモリ130に記憶されているデータが退避される。
 データ転送DMA150は、RoC160に指示に従って、キャッシュメモリ130と、フラッシュメモリ141および142との間におけるデータ送受信を行うDMA回路である。具体的には、データ転送DMA150は、ストレージ装置1が異常終了した場合に、キャッシュメモリ130に記憶されているデータを、フラッシュメモリ141および142に退避させるデータ退避処理を行う。また、データ転送DMA150は、ストレージ装置1が異常終了後に電源投入された場合に、フラッシュメモリ141および142に退避したデータをキャッシュメモリ130に復旧するデータ復旧処理を行う。なお、データ転送DMA150の構成、データ転送DMA150によるデータ退避処理およびデータ復旧処理については、後に詳述する。
 RoC160は、CM100を全体制御する制御装置であり、退避データ領域算出部161と、退避指示部162と、復旧指示部163とを有する。退避データ領域算出部161は、ストレージ装置1が異常終了した場合に、データ転送DMA150にデータ退避処理を行うように指示する際に必要となる各種情報を算出する処理部である。
 具体的には、退避データ領域算出部161は、退避対象データのサイズや、退避対象データのキャッシュメモリ130における記憶位置(アドレス)に基づいて、データ転送DMA150が退避するデータのサイズや、データ転送DMA150が退避するデータの記憶位置や、バウンダリ調整値のサイズ等を算出する。
 退避指示部162は、データ転送DMA150に対して、データ退避処理を行うように指示する処理部である。具体的には、退避指示部162は、ストレージ装置1が異常終了した場合に、データ退避処理を行うように指示する命令(以下、「データ退避ディスクリプタ」という)を生成して、データ転送DMA150に送信する。
 このデータ退避ディスクリプタには、退避データ領域算出部161によって算出された各種情報が含まれる。具体的には、データ退避ディスクリプタには、退避対象データのキャッシュメモリ130における先頭の記憶位置(先頭アドレス)や、退避対象データのサイズや、バウンダリ調整値のサイズや、AID等が含まれる。
 復旧指示部163は、データ転送DMA150に対して、データ復旧処理を行うように指示する処理部である。具体的には、復旧指示部163は、ストレージ装置1が異常終了後に電源投入された場合に、データ復旧処理を行うように指示する命令(以下、「データ復旧ディスクリプタ」という)を生成して、データ転送DMA150に送信する。このデータ復旧ディスクリプタには、除去するバウンダリ調整値のサイズ等が含まれる。
 また、復旧指示部163は、データ転送DMA150によるデータ復旧処理が完了した場合に、フラッシュメモリ141および142に記憶されているデータを消去する命令(以下、「イレースディスクリプタ」という)を生成して、データ転送DMA150に送信する。
 次に、データ転送DMA150の構成について説明する。図5は、図4に示したデータ転送DMA150の構成を示す図である。同図に示すように、データ転送DMA150は、PCI(Peripheral Component Interconnect)バスI/F510と、メモリI/F521および522と、ディスクリプタ保持レジスタ530と、ライトDMA541および542と、リードDMA550と、イレースDMA561および562とを有する。
 PCIバスI/F510は、データ転送DMA150とキャッシュメモリ130との間のデータ送受信を行うインタフェースである。メモリI/F521は、データ転送DMA150とフラッシュメモリ141との間のデータ送受信を行うインタフェースであり、メモリI/F522は、データ転送DMA150とフラッシュメモリ142との間のデータ送受信を行うインタフェースである。
 ディスクリプタ保持レジスタ530は、RoC160から受信した各種ディスクリプタを記憶するレジスタである。具体的には、ディスクリプタ保持レジスタ530は、データ退避ディスクリプタや、データ復旧ディスクリプタや、イレースディスクリプタ等を記憶する。
 ライトDMA541および542は、データ退避処理を行うDMA回路である。具体的には、ライトDMA541は、ディスクリプタ保持レジスタ530からデータ退避ディスクリプタを受け取った場合に、PCIバスI/F510を介してキャッシュメモリ130に記憶されているデータを取得する。そして、ライトDMA541は、取得したデータを、メモリI/F521を介してフラッシュメモリ141に書き込む。同様に、ライトDMA542は、ディスクリプタ保持レジスタ530からデータ退避ディスクリプタを受け取った場合に、キャッシュメモリ130に記憶されているデータを取得し、取得したデータを、フラッシュメモリ142に書き込む。
 ライトDMA541および542は、キャッシュメモリ130からフラッシュメモリ141または142にデータを転送する処理を並行して行う。図3-1に示した例において、例えば、ライトDMA541がデータD10をフラッシュメモリ141へ書き込む処理を行い、ライトDMA542がデータD20をフラッシュメモリ142へ書き込む処理を行う。そして、このライトDMA541および542によるデータ退避処理が並行して行われる。
 このように、ストレージ装置1は、2系統のフラッシュメモリ141および142と、2系統のライトDMA541および542とを有して、ライトDMA541および542に対してデータ退避処理を並行して行わせる。これにより、ストレージ装置1は、データ退避処理を効率よく行うことが可能となり、電力供給部12から電力供給される短い時間内にデータ退避処理を完了させることを実現している。
 リードDMA550は、データ復旧処理を行うDMA回路である。具体的には、リードDMA550は、ディスクリプタ保持レジスタ530から、データ復旧ディスクリプタを受け取った場合に、フラッシュメモリ141に記憶されているデータを取得し、取得したデータを、キャッシュメモリ130に記憶させる。同様に、リードDMA550は、データ復旧ディスクリプタを受け取った場合に、フラッシュメモリ142に記憶されているデータを取得し、取得したデータを、キャッシュメモリ130に記憶させる。
 実施例1に係るストレージ装置1が、データ退避処理を2系統のライトDMA541および542に行わせるのに対して、データ復旧処理を1系統のリードDMA550に行わせる理由について説明する。これは、データ退避処理には、電力供給部12から電力供給される短い時間内に完了させなければならないという制約があるのに対して、データ復旧処理には、このような制約がないためである。
 ただし、データ転送DMA150が有するライトDMAやリードDMAの数は、図5に示した例に限られない。例えば、データ転送DMA150は、例えば、3個のライトDMAを有してもよいし、10個のリードDMAを有してもよい。
 イレースDMA561は、ディスクリプタ保持レジスタ530からイレースディスクリプタを受け取った場合に、フラッシュメモリ141に記憶されているデータを消去するDMA回路である。同様に、イレースDMA562は、ディスクリプタ保持レジスタ530からイレースディスクリプタを受け取った場合に、フラッシュメモリ142に記憶されているデータを消去するDMA回路である。
 次に、ライトDMA541および542の構成について説明する。図6は、図5に示したライトDMA541および542の構成を示す図である。なお、ライトDMA541および542の構成は同一であるため、ここでは、ライトDMA541の構成についてのみ説明する。
 同図に示すように、ライトDMA541は、データ読出部541aと、バウンダリ調整部541bと、パリティ生成部541cと、退避データバッファ541dと、パリティバッファ541eと、データ書込部541fとを有する。
 データ読出部541aは、キャッシュメモリ130から所定のサイズのデータを読み出す処理部である。具体的には、データ読出部541aは、データ退避ディスクリプタに含まれている退避対象データの先頭アドレスから、退避対象データのサイズ分のデータを読み出す。
 バウンダリ調整部541bは、データ読出部541aによって読み出された退避対象データにバウンダリ調整値を加える処理部である。具体的には、バウンダリ調整部541bは、退避対象データに、データ退避ディスクリプタに含まれているバウンダリ調整値のサイズ分のバウンダリ調整値を加える。
 パリティ生成部541cは、データ読出部541aによって読み出された退避対象データを用いて、パリティデータを生成する処理部である。具体的には、パリティ生成部541cは、退避対象データを、バウンダリサイズ28[KB]ごとのバウンダリデータに区切って、さらに、バウンダリデータを、予めシステムで決められているサイズである2[KB]ごとに区切る。
 そして、パリティ生成部541cは、退避対象単位データ番号が奇数である7個の退避対象単位データを用いてパリティデータを生成するとともに、退避対象単位データ番号が偶数である7個の退避対象単位データを用いてパリティデータを生成する。そして、データ読出部541aによって読み出された退避対象データを、退避データバッファ541dに記憶させるとともに、生成したパリティデータをパリティバッファ541eに記憶させる。
 退避データバッファ541dは、データを一次記憶する記憶装置であり、上述したように、パリティ生成部541cによって退避対象データが記憶される。パリティバッファ541eは、データを一次記憶する記憶装置であり、上述したように、パリティ生成部541cによってパリティデータが記憶される。
 データ書込部541fは、退避データバッファ541dおよびパリティバッファ541eから、退避対象単位データおよびパリティデータを読み出してフラッシュメモリ141に書き込む処理部であり、CRC付与部541gとAID付与部541hとを有する。
 CRC付与部541gは、退避データバッファ541dから読み出した退避対象単位データごとにCRCを生成するとともに、パリティバッファ541eから読み出したパリティデータごとにCRCを生成する。そして、CRC付与部541gは、生成したCRCを、退避対象単位データおよびパリティデータに付与する。
 AID付与部541hは、退避データバッファ541dから読み出した退避対象単位データに、AIDを付与するとともに、パリティバッファ541eから読み出したパリティデータに、AIDを付与する。なお、AID付与部541hは、データ退避ディスクリプタからAIDを取得する。
 データ書込部541fは、このようにしてCRCおよびAIDが付与された退避対象単位データおよびパリティデータを、フラッシュメモリ141に書き込む。
 次に、リードDMA550の構成について説明する。図7は、図5に示したリードDMA550の構成を示す図である。同図に示すように、リードDMA550は、セレクタ550aと、データ読出部550bと、タイムアウト検出部550cと、エラー検出部550dと、復旧データバッファ550eと、XOR演算部550fと、CRC検査部550gと、AID検査部550hと、訂正データバッファ550iと、ログ保持レジスタ550jと、セレクタ550kと、バウンダリ調整部550lと、データ書込部550mとを有する。
 セレクタ550aは、複数の入力信号の中から1つの入力信号のみを選択して出力するセレクタ回路であり、フラッシュメモリ141に記憶されているストライプをデータ読出部550bに出力したり、付加データをデータ読出部550bに出力したりする。セレクタ550aが、ストライプまたは付加データのいずれを出力するかは、後に説明する。
 データ読出部550bは、セレクタ550aを介して、フラッシュメモリ141から、小エリアのストライプを読み出して、読み出したストライプを復旧データバッファ550eに記憶させる。このとき、データ読出部550bは、データ読出処理を開始した時刻をタイムアウト検出部550cに通知する。
 タイムアウト検出部550cは、データ読出部550bから受け付けたデータ読出処理の開始時刻に基づいて、データ読出部550bによるデータ読出処理が所定の時間内に完了するか否かを監視する処理部である。
 具体的には、タイムアウト検出部550cは、データ読出部550bによるデータ読出処理が、データ読出処理の開始時刻から所定の時間を経過しても完了しない場合に、データ読出部550bが読取処理中のストライプに対してタイムアウトが発生したことを検出する。そして、タイムアウト検出部550cは、タイムアウトを検出したストライプのストライプ番号を含むタイムアウト検出通知をセレクタ550aに対して行う。
 ここで、タイムアウト検出通知を受け付けたセレクタ550aの処理について説明する。タイムアウト検出通知を受け付けたセレクタ550aは、タイムアウト検出通知に含まれるストライプ番号が示すストライプの読出処理を中止して、かかるストライプの読み出しできなかったサイズ分の付加データをデータ読出部550bに出力する。その後、セレクタ550aは、次のストライプの読出処理を再開する。
 エラー検出部550dは、フラッシュメモリ141からECCチェックエラーが発生した旨の通知を受け付けた場合に、ECCエラー通知をセレクタ550aに対して行う処理部である。
 ここで、ECCエラー通知を受け付けたセレクタ550aの処理について説明する。ECCエラー通知を受け付けたセレクタ550aは、読出処理中のストライプの読出処理を中止して、かかるストライプの読み出しできなかったサイズ分の付加データをデータ読出部550bに出力する。その後、セレクタ550aは、次のストライプの読出処理を再開する。
 復旧データバッファ550eは、データを一次記憶する記憶装置であり、上述したように、データ読出部550bによって、ストライプまたは付加データが設定されているストライプが記憶される。
 XOR演算部550fは、データ読出部550bによって読み出されたストライプを用いて訂正データを生成する処理部である。具体的には、XOR演算部550fは、ストライプ番号が奇数である7個のストライプを用いて訂正データを生成するとともに、ストライプ番号が偶数である7個のストライプを用いて訂正データを生成する。そして、XOR演算部550fは、生成した訂正データを訂正データバッファ550iに記憶させる。
 CRC検査部550gは、データ読出部550bによって読み出されたストライプに誤りデータが存在するか否かを検査する処理部である。具体的には、CRC検査部550gは、データ読出部550bによって読み出されたストライプ内のCRCを用いて、誤りデータが存在するか否かを、ストライプごとに検査する。そして、誤りデータが存在する場合、すなわち、エラーを検出した場合、CRC検査部550gは、エラーを検出したストライプのストライプ番号をログ保持レジスタ550jに記憶させる。
 AID検査部550hは、データ読出部550bによって読み出されたストライプがすべて揃っているか否かを検査する処理部である。具体的には、AID検査部550hは、データ読出部550bによって読み出されたストライプ内のAIDを用いて、小エリア内のストライプがすべて揃っているか否かを検査する。そして、ストライプがすべて揃っていないことを検出した場合、すなわち、エラーを検出した場合、AID検査部550hは、欠如しているストライプのストライプ番号をログ保持レジスタ550jに記憶させる。
 訂正データバッファ550iは、データを一次記憶する記憶装置であり、上述したように、XOR演算部550fによって、訂正データが記憶される。ログ保持レジスタ550jは、データを一次記憶する記憶装置であり、上述したように、CRC検査部550gまたはAID検査部550hによって、エラーが検出されたストライプのストライプ番号が記憶される。
 セレクタ550kは、セレクタ回路であり、復旧データバッファ550eと、訂正データバッファ550iと、ログ保持レジスタ550jとに記憶されている各種データに基づいて、復旧データバッファ550eに記憶されているストライプを、データ書込部550mに出力したり、誤りデータを訂正したストライプをデータ書込部550mに出力したりする。
 具体的には、セレクタ550kは、ログ保持レジスタ550jにストライプ番号が記憶されていないストライプについては、復旧データバッファ550eに記憶されているストライプを、データ書込部550mに出力する。また、セレクタ550kは、ログ保持レジスタ550jにストライプ番号が記憶されているストライプ(以下、「エラー検出ストライプ」という)については、復旧データバッファ550eおよび訂正データバッファ550iに記憶されている各種データを用いて、かかるエラー発生ストライプの誤りデータを訂正してデータ書込部550mに出力する。
 バウンダリ調整部550lは、セレクタ550kから受け付けた小エリア単位のストライプからバウンダリ調整値を除去する処理部である。具体的には、バウンダリ調整部550lは、小エリア単位のストライプから、データ復旧ディスクリプタに含まれるバウンダリ調整値のサイズ分のバウンダリ調整値を除去する。
 データ書込部550mは、バウンダリ調整部550lによってバウンダリ調整値が除去された小エリア単位のストライプに含まれる退避対象単位データをキャッシュメモリ130に書き込む処理部である。なお、データ書込部550mは、パリティデータについてはキャッシュメモリ130に書き込まない。
 次に、実施例1に係るストレージ装置1によるデータ退避処理について説明する。図8は、実施例1に係るストレージ装置1によるデータ退避処理の流れを示すシーケンス図である。
 同図に示すように、RoC160の退避データ領域算出部161は、ストレージ装置1が異常終了したことを検出した場合(ステップS101)、データ退避ディスクリプタを生成するために必要となる各種情報を算出する。
 そして、退避指示部162は、退避データ領域算出部161によって算出された各種情報に基づいて、ライトDMA541にデータ退避処理を行わせるためのデータ退避ディスクリプタを生成して、ディスクリプタ保持レジスタ530に記憶させる(ステップS102)。
 例えば、図3-1に示した例のように、キャッシュメモリ130にデータD1が記憶されている場合、退避指示部162は、ライトDMA541にデータ退避処理をさせるためのデータ退避ディスクリプタとして、データD10の先頭アドレスと、データD10のサイズ28[KB]と、バウンダリ調整値のサイズ0[KB]と、AID等を含むデータ退避ディスクリプタを生成する。
 同様に、退避指示部162は、ライトDMA542にデータ退避処理をさせるためのデータ退避ディスクリプタを生成して、ディスクリプタ保持レジスタ530に記憶させる(ステップS103)。
 上述例の場合、退避指示部162は、ライトDMA542にデータ退避処理をさせるためのデータ退避ディスクリプタとして、データD20の先頭アドレスと、データD20のサイズ25[KB]と、バウンダリ調整値のサイズ3[KB]と、AID等を含むデータ退避ディスクリプタを生成する。
 その後、退避指示部162は、ライトDMA541を起動させるとともに(ステップS104)、ライトDMA542を起動させて(ステップS105)、ライトDMA541およびライトDMA542に対して、データ退避処理を並行して行わせる。
 退避指示部162によって起動されたライトDMA541は、データ退避処理を行い(ステップS106)、データ退避処理が完了した場合に、データ退避処理が完了した旨をRoC160に対して通知する(ステップS107)。同様に、ライトDMA542は、データ退避処理を行い(ステップS108)、データ退避処理が完了した場合に、データ退避処理が完了した旨をRoC160に対して通知する(ステップS109)。ライトDMA541および542によるデータ退避処理は、並行して行われる。
 なお、上述したデータ退避処理の流れでは、ストレージ装置1が異常終了した後に、退避指示部162がデータ退避ディスクリプタを生成する例を説明したが、退避指示部162は、ストレージ装置1が異常終了する前に、データ退避ディスクリプタを生成してもよい。例えば、ストレージ装置1の起動中に、退避対象データのサイズ等を予め取得しておけば、ストレージ装置1の異常終了前にデータ退避ディスクリプタを生成することができる。
 次に、ライトDMA541および542によるデータ退避処理について説明する。図9は、ライトDMA541および542によるデータ退避処理手順を示すフローチャートである。なお、ライトDMA541および542によるデータ退避処理手順は同一であるため、ここでは、ライトDMA541によるデータ退避処理手順についてのみ説明する。
 同図に示すように、RoC160によって起動されたライトDMA541は、ディスクリプタ保持レジスタ530からデータ退避ディスクリプタを読み出す(ステップS201)。そして、ライトDMA541のデータ読出部541aは、キャッシュメモリ130から、所定のサイズのデータを読み出す(ステップS202)。このとき、データ読出部541aは、データ退避ディスクリプタに含まれている退避対象データの先頭アドレスから、退避対象データのサイズ分のデータを読み出す。
 続いて、バウンダリ調整部541bは、データ読出部541aによって読み出された退避対象データに、データ退避ディスクリプタに含まれているバウンダリ調整値のサイズ分のバウンダリ調整値を加える(ステップS203)。
 続いて、パリティ生成部541cは、退避対象データを、バウンダリサイズごとのバウンダリデータに区切って、さらに、バウンダリデータを、予めシステムで決められているサイズである2[KB]ごとに区切る。そして、パリティ生成部541cは、退避対象単位データ番号が奇数である7個の退避対象単位データを用いてパリティデータを生成するとともに、退避対象単位データ番号が偶数である7個の退避対象単位データを用いてパリティデータを生成する(ステップS204)。
 続いて、CRC付与部541gは、退避対象単位データごとにCRCを生成するとともに、パリティデータごとにCRCを生成して、生成したCRCを、退避対象単位データおよびパリティデータに付与する(ステップS205)。続いて、AID付与部541hは、退避対象単位データおよびパリティデータに、AIDを付与する(ステップS206)。そして、データ書込部541fは、CRCおよびAIDが付与された退避対象単位データおよびパリティデータを、フラッシュメモリ141に書き込む(ステップS207)。
 次に、実施例1に係るストレージ装置1によるデータ復旧処理について説明する。図10は、実施例1に係るストレージ装置1によるデータ復旧処理の流れを示すシーケンス図である。
 同図に示すように、RoC160の復旧指示部163は、異常終了後にストレージ装置1が起動したことを検出した場合(ステップS301)、リードDMA550に対して、フラッシュメモリ141に記憶されているデータをキャッシュメモリ130へ復旧する旨のデータ復旧ディスクリプタを生成して、ディスクリプタ保持レジスタ530に記憶させる(ステップS302)。その後、復旧指示部163は、リードDMA550を起動させる(ステップS303)。
 復旧指示部163によって起動されたリードDMA550は、フラッシュメモリ141に記憶されているデータをキャッシュメモリ130へ復旧させるデータ復旧処理を行う(ステップS304)。かかるデータ復旧処理が完了した場合に、リードDMA550は、データ復旧処理が完了した旨をRoC160に対して通知する(ステップS305)。
 続いて、復旧指示部163は、リードDMA550に対して、フラッシュメモリ142に記憶されているデータをキャッシュメモリ130へ復旧する旨のデータ復旧ディスクリプタを生成して、ディスクリプタ保持レジスタ530に記憶させる(ステップS306)。その後、復旧指示部163は、リードDMA550を起動させる(ステップS307)。
 復旧指示部163によって起動されたリードDMA550は、フラッシュメモリ142に記憶されているデータをキャッシュメモリ130へ復旧させるデータ復旧処理を行う(ステップS308)。かかるデータ復旧処理が完了した場合に、リードDMA550は、データ復旧処理が完了した旨をRoC160に対して通知する(ステップS309)。
 続いて、RoC160は、キャッシュメモリ130に復旧されたデータを、HDD11に記憶させるリストア処理(フラッシュバック)を行う(ステップS310)。これにより、HDD11に書き込みされていないキャッシュメモリ130上のデータはなくなる。
 続いて、復旧指示部163は、イレースディスクリプタを生成して、データ転送DMA150に記憶させる(ステップS311)。そして、復旧指示部163は、イレースDMA561および562を起動させて(ステップS312)、イレースDMA561および562に対して、フラッシュメモリ141および142に記憶されているデータを消去させる。
 復旧指示部163によって起動されたイレースDMA561および562は、ディスクリプタ保持レジスタ530から、イレースディスクリプタを読み出して(ステップS313)、イレース処理を行う(ステップS314)。かかるイレース処理が完了した場合に、イレースDMA561および562は、イレース処理が完了した旨をRoC160に対して通知する(ステップS315)。そして、イレース処理が完了した旨の通知を受け付けたRoC160は、ストレージ装置1を起動させる(ステップS316)。
 次に、リードDMA550によるデータ復旧処理について説明する。図11は、リードDMA550によるデータ復旧処理手順を示すフローチャートである。同図に示すように、RoC160によって起動されたリードDMA550は、ディスクリプタ保持レジスタ530からデータ復旧ディスクリプタを読み出す(ステップS401)。
 そして、リードDMA550のデータ読出部550bは、セレクタ550aを介して、フラッシュメモリ141から、小エリアのストライプを読み出す(ステップS402)。このデータ読出部550bによるデータ読出処理が所定の時間内に完了しない場合(ステップS403否定)、タイムアウト検出部550cは、データ読出部550bによって読取処理されているストライプに対して、タイムアウトが発生したことを検出する。そして、タイムアウト検出部550cは、タイムアウト検出通知をセレクタ550aに対して行う。
 タイムアウト検出通知を受け付けたセレクタ550aは、タイムアウト検出通知に含まれるストライプ番号が示すストライプの読出処理を中止して、かかるストライプの読み出しできなかったサイズ分の付加データをデータ読出部550bに出力する(ステップS404)。このようにして、データ読出部550bは、フラッシュメモリ141から小エリアのストライプを読み出す。
 続いて、XOR演算部550fは、データ読出部550bによって読み出されたストライプを用いて訂正データを生成する(ステップS405)。続いて、CRC検査部550gは、データ読出部550bによって読み出されたストライプに誤りデータが存在するか否かを検査し、AID検査部550hは、データ読出部550bによって読み出されたストライプがすべて揃っているか否かを検査する(ステップS406)。
 CRC検査部550g、または、AID検査部によってエラーが検出された場合(ステップS407肯定)、セレクタ550kは、データ読出部550bによって読み出されたストライプ、および、XOR演算部550fによって生成された訂正データに基づいて、エラーが検出されたストライプの誤りデータを訂正する(ステップS408)。
 続いて、バウンダリ調整部550lは、データ読出部550bによって読み出された小エリアのストライプから、データ復旧ディスクリプタに含まれるバウンダリ調整値のサイズ分のバウンダリ調整値を除去する(ステップS409)。
 そして、データ書込部550mは、バウンダリ調整部550lによってバウンダリ調整値が除去された小エリアのストライプに含まれる退避対象単位データを、キャッシュメモリ130に書き込む(ステップS410)。なお、このとき、データ書込部550mは、パリティデータについてはキャッシュメモリ130に書き込まない。
 リードDMA550は、フラッシュメモリ141に記憶されている全てのデータを読み出していない場合(ステップS411否定)、フラッシュメモリ141から全てのデータを読み出すまで、上述した処理手順(ステップS401~S410)を繰り返し行う。
 上述してきたように、実施例1に係るストレージ装置1は、データ退避処理時に、退避対象データのパリティデータを生成して、CRCやAIDを付与した退避対象データおよびパリティデータをフラッシュメモリ141または142に書き込み、データ復旧処理において、フラッシュメモリ141または142から所定の時間内にデータ読出処理が完了しない場合に、データ読出処理を中止して付加データを設定し、パリティデータを用いて誤りデータを訂正したデータをキャッシュメモリ130に書き込むように構成したので、フラッシュメモリ141または142からデータの読出応答がなされない場合であっても、フラッシュメモリ141または142に退避させたデータを、キャッシュメモリ130に復旧させることができる。
 なお、上記実施例1では、データ退避処理時に、ライトDMA541および542が、7個の退避対象単位データに対して、1個のパリティデータを生成する例を示したが、退避対象単位データの数と、パリティデータの数の比率はこれに限らない。例えば、ライトDMA541および542は、2個退避対象単位データに対して、1個のパリティデータを生成してもよいし、10個退避対象単位データに対して、1個のパリティデータを生成してもよい。
 また、上記実施例1では、ライトDMA541および542が、退避対象単位データ番号が奇数である退避対象単位データを用いてパリティデータを生成するとともに、退避対象単位データ番号が偶数である退避対象単位データを用いてパリティデータを生成する例を示したが、ライトDMA541および542は、退避対象単位データ番号に関わらず、所定の数の退避対象単位データを用いてパリティデータを構成してもよい。
 ところで、上記実施例1では、データサイズがバウンダリサイズに満たないバウンダリデータに、バウンダリ調整値を加える処理であるバウンダリ処理を行う例を示したが、バウンダリ処理を行わないようにしてもよい。そこで、実施例2では、キャッシュメモリ130から読み出したデータをバウンダリサイズごとに区切れない場合であっても、バウンダリ処理を行わない例について説明する。
 まず、実施例2に係るストレージ装置2によるデータ退避処理の概要を説明する。なお、実施例2に係るストレージ装置2の概略構成は、図1に示したストレージ装置1の概略構成と同様であるため、その説明を省略する。
 図12-1は、実施例2に係るストレージ装置2によるデータ退避処理の概要を説明するための図である。同図に示すように、キャッシュメモリ130には、210[KB]のデータD3が記憶されているものとする。この状態で、ストレージ装置2が異常終了した場合、データD3は、バウンダリサイズ28[KB]ごとにデータD31~D38に区切られる。
 ここで、実施例2に係るストレージ装置2のRoC(RoC260とする)は、ライトDMA541に対して、キャッシュメモリ130に記憶されているデータD3のうち、データD4(データD31~D34)について、データ退避処理を行うように指示する。
 さらに、RoC260は、ライトDMA542に対して、キャッシュメモリ130に記憶されているデータD3のうち、データD5(データD34-2と、データD35~D38)について、データ退避処理を行うように指示する。
 つまり、RoC260は、ライトDMA541に対して、データD3のキャッシュメモリ130における先頭の記憶位置である先頭アドレスから4個分のバウンダリデータ(同図に示したデータD31、D32、D33、D34)について、データ退避処理を行うように指示する。また、RoC260は、ライトDMA542に対して、データD3のキャッシュメモリ130における最後の記憶位置である最終アドレスから、先頭アドレス方向に4個分のバウンダリデータ(同図に示したデータD54、D53、D52、D51)について、データ退避処理を行うように指示する。
 このような指示を受け付けたライトDMA541は、データD4を、バウンダリサイズ28[KB]ごとにデータD31~D34に区切ることができる。また、ライトDMA542は、データD5を、バウンダリサイズ28[KB]ごとにデータD51~D54に区切ることができる。すなわち、実施例2に係るストレージ装置2は、バウンダリ処理を行うことなく、データ退避処理を行うことができる。
 次に、実施例2に係るストレージ装置2によるデータ復旧処理の概要について説明する。図12-2は、実施例2に係るストレージ装置2によるデータ復旧処理の概要を説明するための図である。図12-2に示したフラッシュメモリ141および142には、図12-1に示したライトDMA541およびライトDMA542によって退避されたデータが記憶されているものとする。
 ストレージ装置2が異常終了後に起動した場合、リードDMA550は、フラッシュメモリ141からデータD31を読み出しながら各種検査(CRC検査等)を行った後、キャッシュメモリ130に書き込む。また、リードDMA550は、同様の処理を、データD32~D34についても行い、キャッシュメモリ130にデータD4を復旧させる。
 その後、リードDMA550は、フラッシュメモリ142からデータD51を読み出しながら各種検査(CRC検査等)を行った後、キャッシュメモリ130に書き込む。このとき、キャッシュメモリ130には、フラッシュメモリ141から読み出したデータD34-2が書き込み済みであるので、リードDMA550は、データD51を書き込む場合、データD34-2の部分については上書きすることとなる。
 そして、リードDMA550は、フラッシュメモリ142からデータD52~D54を順に読み出して、キャッシュメモリ130にデータD5を復旧させる。リードDMA550が、フラッシュメモリ141および142に記憶されているデータをすべてキャッシュメモリ130に書き込むと、キャッシュメモリ130にデータD3を復旧することができる。
 このように、実施例2に係るストレージ装置2は、2系統のライトDMA541および542のうち、一方のライトDMA541に対して、退避対象データのキャッシュメモリ130における先頭の記憶位置である先頭アドレスから所定の数のバウンダリデータについて、データ退避処理を行わせるとともに、他方のライトDMA542に対して、退避対象データのキャッシュメモリ130における最後の記憶位置である最終アドレスから、先頭アドレス方向に所定の数のバウンダリデータについて、データ退避処理を行わせるので、DMA541および542が、フラッシュメモリ141または142に退避するデータを、バウンダリデータで割り切れることができ、その結果、バウンダリ処理を行うことなく、データ退避処理を行うことができる。
 次に、実施例2に係るストレージ装置2が有するCM200の構成について説明する。図13は、実施例2に係るストレージ装置2が有するCM200の構成を示す図である。ここでは、図4に示した構成部位と同様の機能を有する部位には同一符号を付すこととして、その詳細な説明を省略する。
 同図に示した退避データ領域算出部261は、ストレージ装置2が異常終了した場合に、キャッシュメモリ130に記憶されている退避対象データのサイズ等に基づいて、まず、ライトDMA541が退避するデータの開始アドレスBA1およびサイズDS1を算出し、次に、ライトDMA542が退避するデータの開始アドレスBA2およびサイズDS2を算出する。
 以下に、図12-1に示した例を用いつつ、退避データ領域算出部261による退避データ領域算出処理について、より具体的に説明する。まず、退避データ領域算出部261は、ストレージ装置2が異常終了した場合に、退避対象データのキャッシュメモリ130における記憶位置を示す先頭アドレスおよび最終アドレスを取得する。そして、退避データ領域算出部261は、取得した先頭アドレスを、ライトDMA541が退避するデータの開始アドレスBA1に決定する。
 続いて、退避データ領域算出部261は、退避対象データのサイズを2で除算したサイズ「X]を求める。図12-1に示した例では、退避対象データのサイズが210[KB]であるので、退避データ領域算出部261は、サイズXとして、210[KB]を2で除算した105[KB]を求める。
 続いて、退避データ領域算出部261は、式(1)「28[KB] × N > サイズX[KB]」を満たす整数Nの最小値に28[KB]を乗算した値を、ライトDMA541が退避するデータのサイズDS1に決定する。上記例では、サイズXが105[KB]であり、式(1)を満たすNの最小値は「4」となるので、退避データ領域算出部261は、4に28[KB]を乗算した値である112[KB]を、ライトDMA541が退避するデータのサイズDS1に決定する。
 続いて、退避データ領域算出部261は、退避対象データの先頭アドレスに、ライトDMA541が退避するデータサイズDS1を加算した値「Y」を求める。このYは、ライトDMA541が退避するデータの最終アドレスに該当する。そして、退避データ領域算出部261は、退避対象データの最終アドレスからYを減算した値「Z」を求める。このZは、退避対象データのサイズから、ライトDMA541が退避するデータのサイズDS1を減算したサイズに該当する。
 すなわち、上記例では、退避対象データのサイズが210[KB]であり、サイズDS1が112「KB」であるので、退避データ領域算出部261は、サイズZとして、210[KB]から112[KB]を減算した98[KB]を求める。
 続いて、退避データ領域算出部261は、式(2)「28[KB]×N > サイズZ[KB]」を満たす整数Nの最小値に28[KB]を乗算した値を、ライトDMA542が退避するデータのサイズDS2に決定する。上記例では、サイズZが98[KB]であり、式(2)を満たすNの最小値は「4」となるので、退避データ領域算出部261は、4に28[KB]を乗算した値である112[KB]を、ライトDMA542が退避するデータのサイズDS2に決定する。
 続いて、退避データ領域算出部261は、退避対象データの最終アドレスから、ライトDMA542が退避するデータのサイズDS2を減算した値を、ライトDMA542が退避するデータの先頭アドレスBA2に決定する。
 このようにして、退避データ領域算出部261は、ライトDMA541が退避するデータの開始アドレスBA1およびサイズDS1と、ライトDMA542が退避するデータの開始アドレスBA2およびサイズDS2を算出する。
 図13に示した退避指示部262は、データ退避ディスクリプタを生成して、データ転送DMA150に送信することで、ライトDMA541および542に対して、データ退避処理を行うように指示する。
 具体的には、退避指示部262は、上述した開始アドレスBA1およびサイズDS1を含むデータ退避ディスクリプタを生成して、かかるデータ退避ディスクリプタに基づいてデータ退避処理を行うようにライトDMA541に対して指示をする。また、退避指示部262は、上述した開始アドレスBA2およびサイズDS2を含むデータ退避ディスクリプタを生成して、かかるデータ退避ディスクリプタに基づいてデータ退避処理を行うようにライトDMA542に対して指示をする。なお、退避指示部262が生成するデータ退避ディスクリプタには、バウンダリ調整値のサイズを含まない。
 次に、図13に示した退避データ領域算出部261による退避データ領域算出処理について説明する。図14は、図13に示した退避データ領域算出部261による退避データ領域算出処理手順を示すフローチャートである。
 図14に示すように、退避データ領域算出部261は、退避対象データのキャッシュメモリ130における記憶位置を示す先頭アドレスおよび最終アドレスを取得する(ステップS501)。
 そして、退避データ領域算出部261は、取得した先頭アドレスを、ライトDMA541が退避するデータの開始アドレスに決定する(ステップS502)。続いて、退避データ領域算出部261は、退避対象データのサイズを2で除算したサイズXを求める(ステップS503)。
 続いて、退避データ領域算出部261は、式(1)「28[KB] × N > サイズX[KB]」を満たす整数Nの最小値を求める(ステップS504)。以下では、ここで求めた最小値Nを「第一の基準値」と呼ぶこととする。そして、退避データ領域算出部261は、第一の基準値に28[KB]を乗算した値を、ライトDMA541が退避するデータのサイズに決定する(ステップS505)。
 続いて、退避データ領域算出部261は、退避対象データのサイズから、ライトDMA541が退避するデータのサイズを減算したサイズZを求める(ステップS506)。続いて、退避データ領域算出部261は、式(2)「28[KB] × N > サイズZ[KB]」を満たす整数Nの最小値を求める(ステップS507)。以下では、ここで求めた最小値Nを「第二の基準値」と呼ぶこととする。そして、退避データ領域算出部261は、第二の基準値に28[KB]を乗算した値を、ライトDMA542が退避するデータのサイズに決定する(ステップS508)。
 続いて、退避データ領域算出部261は、退避対象データの最終アドレスから、ライトDMA542が退避するデータのサイズを減算した値を求め(ステップS509)、求めた値を、ライトDMA542が退避するデータの先頭アドレスに決定する(ステップS510)。
 上述してきたように、実施例2に係るストレージ装置2は、退避データ領域算出部261が、ライトDMA541および542が退避するデータの開始アドレスおよびサイズを求めるように構成したので、DMA541および542は、フラッシュメモリ141または142に退避するデータを、バウンダリデータで割り切れることができ、その結果、フラッシュメモリ141または142からデータの読出応答がなされない場合であっても、バウンダリ処理を行うことなく、フラッシュメモリ141または142に退避させたデータを、キャッシュメモリ130に復旧させることができる。
 また、実施例2に係るストレージ装置2では、バウンダリ処理を行う必要がないので、退避データ領域算出部261がバウンダリ調整値のサイズを算出する必要がなくなる。その結果、退避データ領域算出部261にかかる処理負荷を軽減することができ、データ退避処理の高速化を図ることができる。すなわち、異常終了時に、電力供給部12から電力供給される短い時間内に、大容量のデータについて、データ退避処理を行うことができる。
 また、実施例2に係るストレージ装置2では、バウンダリ処理を行う必要がないので、ライトDMA541および542と、リードDMA550から、バウンダリ処理を行うための回路を削除することができ、ライトDMA541および542と、リードDMA550の規模を小さくすることができる。例えば、実施例2に係るストレージ装置2では、図6に示したライトDMA541からバウンダリ調整部541bを削除することができ、図7に示したリードDMA550からバウンダリ調整部550lを削除することができる。その結果、ライトDMA541および542と、リードDMA550にかかるコストを軽減することができる。
 なお、上記実施例2では、ストレージ装置2が2系統のライトDMA541および542を有することを前提として、退避データ領域算出部261が、ライトDMA541および542が退避するデータの開始アドレスおよびサイズを算出する例を示したが、3系統以上のライトDMAを有するストレージ装置においても、バウンダリ処理を行わないように、退避データ領域算出部261が、各ライトDMAが退避するデータの開始アドレスおよびサイズを算出してもよい。例えば、ストレージ装置が4個のライトDMAを有する場合、退避データ領域算出部261は、4個目のライトDMAに対して、退避対象データの最終アドレスから、先頭アドレス方向に所定の数のバウンダリデータについて、データ退避処理を行わせるように、4個目のライトDMAが退避するデータの開始アドレスおよびサイズを算出する。
 また、上記実施例1および2では、バウンダリサイズを28[KB]とし、バウンダリデータを区切るサイズを2[KB]とし、エリア内のpageの数を1024個とし、小エリア内のpageの数を16個とする例を示したが、これらの規定値は、上記例に限られない。例えば、バウンダリサイズを56[KB]とし、バウンダリデータを区切るサイズを4[KB]とし、エリア内のpageの数を2048個とし、小エリア内のpageの数を32個としてもよい。
 また、上記実施例1および2では、異常終了時にデータを退避する記憶領域として、OneNAND型のフラッシュメモリを用いる例を示したが、異常終了時にデータを退避する記憶領域は、OneNAND型のフラッシュメモリ以外の不揮発性メモリであってもよい。
 また、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散、統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散、統合して構成することができる。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPU(Central Processing Unit)および当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。

Claims (17)

  1.  異常終了時に、キャッシュメモリに記憶されているデータである退避対象データ、および、前記退避対象データの誤りデータを訂正するためのパリティデータに、誤りデータを検出するための誤り検出符号を付与した転送対象データを、不揮発性メモリへ記憶させるデータ転送部を有するストレージ装置であって、
     当該のストレージ装置が異常終了後に電源投入された場合に、前記不揮発性メモリから、前記転送対象データが所定のサイズであるストライプサイズごとに区切られたデータであるストライプを読み出すデータ読出手段と、
     前記データ読出手段によって前記ストライプが所定の時間内に読み出されない場合に、該ストライプに、該ストライプのサイズがストライプサイズになるまで、付加データを付与する付加データ付与手段と、
     前記データ読出手段によって読み出されたストライプに付与されている誤り検出符号に基づいて、ストライプに誤りデータが存在しているか否かを検査する誤りデータ検査手段と、
     前記誤りデータ検査手段によって誤りデータが検出された場合に、前記データ読出手段によって読み出されたストライプを用いて、誤りデータを訂正するデータ訂正手段と、
     前記誤りデータ検査手段によって誤りデータが検出されなかったストライプに含まれる退避対象データを前記キャッシュメモリに書き込むとともに、前記データ訂正手段によって誤りデータが訂正されたストライプに含まれる退避対象データを前記キャッシュメモリに書き込むデータ書込手段と
     を備えたことを特徴とするストレージ装置。
  2.  当該のストレージ装置が異常終了した場合に、前記退避対象データのキャッシュメモリにおける先頭の記憶位置を示す先頭アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第一のデータ退避手段と、
     当該のストレージ装置が異常終了した場合に、前記退避対象データのキャッシュメモリにおける最終の記憶位置を示す最終アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第二のデータ退避手段とをさらに備えることを特徴とする請求項1に記載のストレージ装置。
  3.  当該のストレージ装置が異常終了した場合に、前記退避対象データの先頭アドレスを、前記第一のデータ退避手段によりキャッシュメモリから最初に読み出されるデータの記憶位置である第一の開始アドレスに決定し、所定のサイズであるバウンダリサイズに整数Nを乗算した値が、前記退避対象データを2で除算した値よりも大きくなるNの最小値である第一の基準値を算出して、該第一の基準値に前記バウンダリサイズを乗算した値を、前記第一のデータ退避手段によりキャッシュメモリから読み出されるデータのサイズである第一のデータ退避サイズに決定し、前記バウンダリサイズに整数Nを乗算した値が、前記退避対象データのサイズから前記第一のデータ退避サイズを減算した値よりも大きくなるNの最小値である第二の基準値を算出して、該第二の基準値に前記バウンダリサイズを乗算した値を、前記第二のデータ退避手段によりキャッシュメモリから読み出されるデータのサイズである第二のデータ退避サイズに決定し、前記退避対象データの最終アドレスと前記第一のデータ退避サイズとに基づいて、前記第二のデータ退避手段によりキャッシュメモリから最初に読み出されるデータの記憶位置である第二の開始アドレスを算出する退避データ領域算出手段をさらに備え、
     前記第一のデータ退避手段は、前記退避対象データのうち、前記退避データ領域算出手段によって算出された第一の開始アドレスから、前記退避データ領域算出手段によって算出された第一のデータ退避サイズ分のデータを不揮発性メモリへ記憶させ、
     前記第二のデータ退避手段は、前記退避対象データのうち、前記退避データ領域算出手段によって算出された第二の開始アドレスから、前記退避データ領域算出手段によって算出された第二のデータ退避サイズ分のデータを不揮発性メモリへ記憶させることを特徴とする請求項2に記載のストレージ装置。
  4.  前記誤りデータ検査手段は、前記ストライプに付与されているCRC(Cyclic Redundancy Check)に基づいて、前記ストライプに誤りデータが存在しているか否かを検査することを特徴とする請求項1~3のいずれか一つに記載のストレージ装置。
  5.  前記誤りデータ検査手段は、前記ストライプに付与されている前記ストライプを識別するためのストライプ識別番号に基づいて、前記ストライプがすべて存在しているか否かを検査することを特徴とする請求項1~3のいずれか一つに記載のストレージ装置。
  6.  異常終了時に、キャッシュメモリに記憶されているデータである退避対象データ、および、前記退避対象データの誤りデータを訂正するためのパリティデータに、誤りデータを検出するための誤り検出符号を付与した転送対象データを、不揮発性メモリへ記憶させるデータ転送部を有するストレージ装置を制御するストレージ制御装置であって、
     前記ストレージ装置が異常終了後に電源投入された場合に、前記不揮発性メモリから、前記転送対象データが所定のサイズであるストライプサイズごとに区切られたデータであるストライプを読み出すデータ読出手段と、
     前記データ読出手段によって前記ストライプが所定の時間内に読み出されない場合に、該ストライプに、該ストライプのサイズがストライプサイズになるまで、付加データを付与する付加データ付与手段と、
     前記データ読出手段によって読み出されたストライプに付与されている誤り検出符号に基づいて、ストライプに誤りデータが存在しているか否かを検査する誤りデータ検査手段と、
     前記誤りデータ検査手段によって誤りデータが検出された場合に、前記データ読出手段によって読み出されたストライプを用いて、誤りデータを訂正するデータ訂正手段と、
     前記誤りデータ検査手段によって誤りデータが検出されなかったストライプに含まれる退避対象データを前記キャッシュメモリに書き込むとともに、前記データ訂正手段によって誤りデータが訂正されたストライプに含まれる退避対象データを前記キャッシュメモリに書き込むデータ書込手段と
     を備えたことを特徴とするストレージ制御装置。
  7.  前記ストレージ装置が異常終了した場合に、前記退避対象データのキャッシュメモリにおける先頭の記憶位置を示す先頭アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第一のデータ退避手段と、
     前記ストレージ装置が異常終了した場合に、前記退避対象データのキャッシュメモリにおける最終の記憶位置を示す最終アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第二のデータ退避手段とをさらに備えることを特徴とする請求項6に記載のストレージ制御装置。
  8.  前記ストレージ装置が異常終了した場合に、前記退避対象データの先頭アドレスを、前記第一のデータ退避手段によりキャッシュメモリから最初に読み出されるデータの記憶位置である第一の開始アドレスに決定し、所定のサイズであるバウンダリサイズに整数Nを乗算した値が、前記退避対象データを2で除算した値よりも大きくなるNの最小値である第一の基準値を算出して、該第一の基準値に前記バウンダリサイズを乗算した値を、前記第一のデータ退避手段によりキャッシュメモリから読み出されるデータのサイズである第一のデータ退避サイズに決定し、前記バウンダリサイズに整数Nを乗算した値が、前記退避対象データのサイズから前記第一のデータ退避サイズを減算した値よりも大きくなるNの最小値である第二の基準値を算出して、該第二の基準値に前記バウンダリサイズを乗算した値を、前記第二のデータ退避手段によりキャッシュメモリから読み出されるデータのサイズである第二のデータ退避サイズに決定し、前記退避対象データの最終アドレスと前記第一のデータ退避サイズとに基づいて、前記第二のデータ退避手段によりキャッシュメモリから最初に読み出されるデータの記憶位置である第二の開始アドレスを算出する退避データ領域算出手段をさらに備え、
     前記第一のデータ退避手段は、前記退避対象データのうち、前記退避データ領域算出手段によって算出された第一の開始アドレスから、前記退避データ領域算出手段によって算出された第一のデータ退避サイズ分のデータを不揮発性メモリへ記憶させ、
     前記第二のデータ退避手段は、前記退避対象データのうち、前記退避データ領域算出手段によって算出された第二の開始アドレスから、前記退避データ領域算出手段によって算出された第二のデータ退避サイズ分のデータを不揮発性メモリへ記憶させることを特徴とする請求項7に記載のストレージ制御装置。
  9.  前記誤りデータ検査手段は、前記ストライプに付与されているCRCに基づいて、前記ストライプに誤りデータが存在しているか否かを検査することを特徴とする請求項6~8のいずれか一つに記載のストレージ制御装置。
  10.  前記誤りデータ検査手段は、前記ストライプに付与されている前記ストライプを識別するためのストライプ識別番号に基づいて、前記ストライプがすべて存在しているか否かを検査することを特徴とする請求項6~8のいずれか一つに記載のストレージ制御装置。
  11.  キャッシュメモリに記憶されているデータである退避対象データ、および、前記退避対象データの誤りデータを訂正するためのパリティデータに、誤りデータを検出するための誤り検出符号を付与した転送対象データを、不揮発性メモリへ記憶させるデータ転送集積回路であって、
     前記不揮発性メモリから、前記転送対象データが所定のサイズであるストライプサイズごとに区切られたデータであるストライプを読み出すデータ読出手段と、
     前記データ読出手段によって前記ストライプが所定の時間内に読み出されない場合に、該ストライプに、該ストライプのサイズがストライプサイズになるまで、付加データを付与する付加データ付与手段と、
     前記データ読出手段によって読み出されたストライプに付与されている誤り検出符号に基づいて、ストライプに誤りデータが存在しているか否かを検査する誤りデータ検査手段と、
     前記誤りデータ検査手段によって誤りデータが検出された場合に、前記データ読出手段によって読み出されたストライプを用いて、誤りデータを訂正するデータ訂正手段と、
     前記誤りデータ検査手段によって誤りデータが検出されなかったストライプに含まれる退避対象データを前記キャッシュメモリに書き込むとともに、前記データ訂正手段によって誤りデータが訂正されたストライプに含まれる退避対象データを前記キャッシュメモリに書き込むデータ書込手段と
     を備えたことを特徴とするデータ転送集積回路。
  12.  前記退避対象データのキャッシュメモリにおける先頭の記憶位置を示す先頭アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第一のデータ退避手段と、
     前記退避対象データのキャッシュメモリにおける最終の記憶位置を示す最終アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第二のデータ退避手段とをさらに備えることを特徴とする請求項11に記載のデータ転送集積回路。
  13.  異常終了時に、キャッシュメモリに記憶されているデータである退避対象データ、および、前記退避対象データの誤りデータを訂正するためのパリティデータに、誤りデータを検出するための誤り検出符号を付与した転送対象データを、不揮発性メモリへ記憶させるデータ転送部を有するストレージ装置を制御するストレージ制御方法であって、
     前記ストレージ装置が、
     異常終了後に電源投入された場合に、前記不揮発性メモリから、前記転送対象データが所定のサイズであるストライプサイズごとに区切られたデータであるストライプを読み出すデータ読出工程と、
     前記データ読出工程によって前記ストライプが所定の時間内に読み出されない場合に、該ストライプに、該ストライプのサイズがストライプサイズになるまで、付加データを付与する付加データ付与工程と、
     前記データ読出工程によって読み出されたストライプに付与されている誤り検出符号に基づいて、ストライプに誤りデータが存在しているか否かを検査する誤りデータ検査工程と、
     前記誤りデータ検査工程によって誤りデータが検出された場合に、前記データ読出工程によって読み出されたストライプを用いて、誤りデータを訂正するデータ訂正工程と、
     前記誤りデータ検査工程によって誤りデータが検出されなかったストライプに含まれる退避対象データを前記キャッシュメモリに書き込むとともに、前記データ訂正工程によって誤りデータが訂正されたストライプに含まれる退避対象データを前記キャッシュメモリに書き込むデータ書込工程と
     を含んだことを特徴とするストレージ制御方法。
  14.  前記ストレージ装置は、
     異常終了した場合に、前記退避対象データのキャッシュメモリにおける先頭の記憶位置を示す先頭アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第一のデータ退避工程と、
     異常終了した場合に、前記退避対象データのキャッシュメモリにおける最終の記憶位置を示す最終アドレスから所定のサイズ分のデータを不揮発性メモリへ記憶させる第二のデータ退避工程とをさらに含んだことを特徴とする請求項13に記載のストレージ制御方法。
  15.  前記ストレージ装置は、
     異常終了した場合に、前記退避対象データの先頭アドレスを、前記第一のデータ退避工程によりキャッシュメモリから最初に読み出されるデータの記憶位置である第一の開始アドレスに決定し、所定のサイズであるバウンダリサイズに整数Nを乗算した値が、前記退避対象データを2で除算した値よりも大きくなるNの最小値である第一の基準値を算出して、該第一の基準値に前記バウンダリサイズを乗算した値を、前記第一のデータ退避工程によりキャッシュメモリから読み出されるデータのサイズである第一のデータ退避サイズに決定し、前記バウンダリサイズに整数Nを乗算した値が、前記退避対象データのサイズから前記第一のデータ退避サイズを減算した値よりも大きくなるNの最小値である第二の基準値を算出して、該第二の基準値に前記バウンダリサイズを乗算した値を、前記第二のデータ退避工程によりキャッシュメモリから読み出されるデータのサイズである第二のデータ退避サイズに決定し、前記退避対象データの最終アドレスと前記第一のデータ退避サイズとに基づいて、前記第二のデータ退避工程によりキャッシュメモリから最初に読み出されるデータの記憶位置である第二の開始アドレスを算出する退避データ領域算出工程をさらに含み、
     前記第一のデータ退避工程は、前記退避対象データのうち、前記退避データ領域算出工程によって算出された第一の開始アドレスから、前記退避データ領域算出工程によって算出された第一のデータ退避サイズ分のデータを不揮発性メモリへ記憶させ、
     前記第二のデータ退避工程は、前記退避対象データのうち、前記退避データ領域算出工程によって算出された第二の開始アドレスから、前記退避データ領域算出工程によって算出された第二のデータ退避サイズ分のデータを不揮発性メモリへ記憶させることを特徴とする請求項14に記載のストレージ制御方法。
  16.  前記誤りデータ検査工程は、前記ストライプに付与されているCRCに基づいて、前記ストライプに誤りデータが存在しているか否かを検査することを特徴とする請求項13~15のいずれか一つに記載のストレージ制御方法。
  17.  前記誤りデータ検査工程は、前記ストライプに付与されている前記ストライプを識別するためのストライプ識別番号に基づいて、前記ストライプがすべて存在しているか否かを検査することを特徴とする請求項13~15のいずれか一つに記載のストレージ制御方法。
PCT/JP2008/053494 2008-02-28 2008-02-28 ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法 WO2009107213A1 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
PCT/JP2008/053494 WO2009107213A1 (ja) 2008-02-28 2008-02-28 ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法
EP08720989.6A EP2261806B1 (en) 2008-02-28 2008-02-28 Storage device, storage controller, data transfer integrated circuit, and method of controlling storage
JP2010500488A JP5099212B2 (ja) 2008-02-28 2008-02-28 ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法
EP13150344.3A EP2595062B1 (en) 2008-02-28 2008-02-28 Storage device, storage control device, data transfer integrated circuit, and storage control method
US12/923,005 US8448047B2 (en) 2008-02-28 2010-08-27 Storage device, storage control device, data transfer intergrated circuit, and storage control method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/053494 WO2009107213A1 (ja) 2008-02-28 2008-02-28 ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/923,005 Continuation US8448047B2 (en) 2008-02-28 2010-08-27 Storage device, storage control device, data transfer intergrated circuit, and storage control method

Publications (1)

Publication Number Publication Date
WO2009107213A1 true WO2009107213A1 (ja) 2009-09-03

Family

ID=41015627

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/053494 WO2009107213A1 (ja) 2008-02-28 2008-02-28 ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法

Country Status (4)

Country Link
US (1) US8448047B2 (ja)
EP (2) EP2595062B1 (ja)
JP (1) JP5099212B2 (ja)
WO (1) WO2009107213A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210847A (ja) * 2012-03-30 2013-10-10 Fujitsu Ltd ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
WO2015097752A1 (ja) * 2013-12-24 2015-07-02 株式会社日立製作所 ストレージシステム
US9857994B2 (en) 2013-12-18 2018-01-02 Fujitsu Limited Storage controller, control method, and computer product
US10642674B2 (en) 2017-02-10 2020-05-05 Fujitsu Limited Storage control device with power failure processing and abnormality processing

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8514630B2 (en) 2010-07-09 2013-08-20 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays: current based approach
US8432732B2 (en) 2010-07-09 2013-04-30 Sandisk Technologies Inc. Detection of word-line leakage in memory arrays
US8719520B1 (en) * 2010-12-14 2014-05-06 Datadirect Networks, Inc. System and method for data migration between high-performance computing architectures and data storage devices with increased data reliability and integrity
US8379454B2 (en) 2011-05-05 2013-02-19 Sandisk Technologies Inc. Detection of broken word-lines in memory arrays
KR20120129239A (ko) * 2011-05-19 2012-11-28 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 메모리 시스템
US8750042B2 (en) 2011-07-28 2014-06-10 Sandisk Technologies Inc. Combined simultaneous sensing of multiple wordlines in a post-write read (PWR) and detection of NAND failures
US8775901B2 (en) 2011-07-28 2014-07-08 SanDisk Technologies, Inc. Data recovery for defective word lines during programming of non-volatile memory arrays
US8726104B2 (en) 2011-07-28 2014-05-13 Sandisk Technologies Inc. Non-volatile memory and method with accelerated post-write read using combined verification of multiple pages
JP2013131192A (ja) * 2011-12-22 2013-07-04 Fujitsu Ltd ストレージ装置及びストレージ装置の制御方法
US8730722B2 (en) 2012-03-02 2014-05-20 Sandisk Technologies Inc. Saving of data in cases of word-line to word-line short in memory arrays
JP5942512B2 (ja) * 2012-03-19 2016-06-29 富士通株式会社 ストレージ制御装置およびストレージシステム
US9600359B2 (en) 2012-05-31 2017-03-21 Hewlett Packard Enterprise Development Lp Local error detection and global error correction
JP5910356B2 (ja) * 2012-06-29 2016-04-27 富士通株式会社 電子装置、電子装置制御方法及び電子装置制御プログラム
KR101925383B1 (ko) 2012-07-23 2018-12-05 삼성전자주식회사 불휘발성 메모리 장치 및 그것의 데이터 관리 방법
US9229825B2 (en) 2013-06-28 2016-01-05 International Business Machines Corporation Quick failover of blade server
US20150006815A1 (en) * 2013-06-28 2015-01-01 Lsi Corporation Backup of cached dirty data during power outages
US9165683B2 (en) 2013-09-23 2015-10-20 Sandisk Technologies Inc. Multi-word line erratic programming detection
US9484086B2 (en) 2014-07-10 2016-11-01 Sandisk Technologies Llc Determination of word line to local source line shorts
US9443612B2 (en) 2014-07-10 2016-09-13 Sandisk Technologies Llc Determination of bit line to low voltage signal shorts
US9514835B2 (en) 2014-07-10 2016-12-06 Sandisk Technologies Llc Determination of word line to word line shorts between adjacent blocks
US9460809B2 (en) 2014-07-10 2016-10-04 Sandisk Technologies Llc AC stress mode to screen out word line to word line shorts
US9240249B1 (en) 2014-09-02 2016-01-19 Sandisk Technologies Inc. AC stress methods to screen out bit line defects
US9202593B1 (en) 2014-09-02 2015-12-01 Sandisk Technologies Inc. Techniques for detecting broken word lines in non-volatile memories
US9449694B2 (en) 2014-09-04 2016-09-20 Sandisk Technologies Llc Non-volatile memory with multi-word line select for defect detection operations
US9588857B2 (en) * 2015-06-22 2017-03-07 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Raid logical stripe backup to non-volatile memory in response to raid storage device media errors
US9659666B2 (en) 2015-08-31 2017-05-23 Sandisk Technologies Llc Dynamic memory recovery at the sub-block level
US11886295B2 (en) 2022-01-31 2024-01-30 Pure Storage, Inc. Intra-block error correction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160594A (ja) * 1993-12-06 1995-06-23 Hitachi Ltd 情報処理装置
JP2004506256A (ja) 2000-06-23 2004-02-26 インテル・コーポレーション 不揮発性キャッシュ
JP2004531814A (ja) * 2001-04-19 2004-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーション ライトバック・キャッシュ情報の信頼性を改善するための方法および装置
JP2007193449A (ja) 2006-01-17 2007-08-02 Toshiba Corp 情報記録装置及びその制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619690A (en) 1993-06-21 1997-04-08 Hitachi, Ltd. Computer system including a computer which requests an access to a logical address in a secondary storage system with specification of a local address in the secondary storage system
JP3747788B2 (ja) 1993-06-21 2006-02-22 株式会社日立製作所 計算機システムおよび二次記憶装置
US5774643A (en) * 1995-10-13 1998-06-30 Digital Equipment Corporation Enhanced raid write hole protection and recovery
US7200715B2 (en) * 2002-03-21 2007-04-03 Network Appliance, Inc. Method for writing contiguous arrays of stripes in a RAID storage system using mapped block writes
US7096316B1 (en) * 2003-06-30 2006-08-22 Veritas Operating Corporation Multi-host environment with coordinated distributed logging for writes to a raid storage volume
JP4634157B2 (ja) 2005-01-17 2011-02-16 株式会社日立製作所 ストレージシステム
JP4401305B2 (ja) 2005-02-09 2010-01-20 富士通株式会社 デイスクアレイ装置の構成定義設定方法及びデイスクアレイ装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07160594A (ja) * 1993-12-06 1995-06-23 Hitachi Ltd 情報処理装置
JP2004506256A (ja) 2000-06-23 2004-02-26 インテル・コーポレーション 不揮発性キャッシュ
JP2004531814A (ja) * 2001-04-19 2004-10-14 インターナショナル・ビジネス・マシーンズ・コーポレーション ライトバック・キャッシュ情報の信頼性を改善するための方法および装置
JP2007193449A (ja) 2006-01-17 2007-08-02 Toshiba Corp 情報記録装置及びその制御方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013210847A (ja) * 2012-03-30 2013-10-10 Fujitsu Ltd ストレージシステム、ストレージ制御方法およびストレージ制御プログラム
US9857994B2 (en) 2013-12-18 2018-01-02 Fujitsu Limited Storage controller, control method, and computer product
WO2015097752A1 (ja) * 2013-12-24 2015-07-02 株式会社日立製作所 ストレージシステム
US9348704B2 (en) 2013-12-24 2016-05-24 Hitachi, Ltd. Electronic storage system utilizing a predetermined flag for subsequent processing of each predetermined portion of data requested to be stored in the storage system
US10642674B2 (en) 2017-02-10 2020-05-05 Fujitsu Limited Storage control device with power failure processing and abnormality processing

Also Published As

Publication number Publication date
EP2261806A1 (en) 2010-12-15
US8448047B2 (en) 2013-05-21
EP2261806B1 (en) 2018-08-29
EP2595062A3 (en) 2013-07-17
JPWO2009107213A1 (ja) 2011-06-30
EP2595062A2 (en) 2013-05-22
US20100325522A1 (en) 2010-12-23
EP2595062B1 (en) 2016-12-28
EP2261806A4 (en) 2012-06-27
JP5099212B2 (ja) 2012-12-19

Similar Documents

Publication Publication Date Title
JP5099212B2 (ja) ストレージ装置、ストレージ制御装置、データ転送集積回路、および、ストレージ制御方法
US8286028B2 (en) Backup method and disk array apparatus
JP4901968B2 (ja) 半導体記憶装置
US8479045B2 (en) Controller for disk array device, data transfer device, and method of power recovery process
EP2811392B1 (en) Method and device for reducing read delay
US8578110B2 (en) Memory data backup system and memory data backup control method
JP5426711B2 (ja) メモリコントローラ及び不揮発性記憶装置
US20150248249A1 (en) Redundant backup using non-volatile memory
US7606971B2 (en) Storage control apparatus and external storage apparatus
US8839072B2 (en) Access control apparatus, storage apparatus, and method
US20190189239A1 (en) Flash memory module, storage system, and method of controlling flash memory
JP2011170589A (ja) ストレージ制御装置、ストレージ装置およびストレージ制御方法
US20150248322A1 (en) Memory controller and memory system
TWI473103B (zh) 快閃記憶體儲存裝置及其不良儲存區域的判定方法
JP2009301194A (ja) 半導体記憶装置の制御システム
KR20130069364A (ko) 비휘발성 반도체 기억 장치 및 그 관리 방법
US8074104B2 (en) Controlling apparatus and controlling method
US7653831B2 (en) Storage system and data guarantee method
CN113835923A (zh) 一种复位系统、数据处理系统以及相关设备
WO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム
US20010052100A1 (en) Data read/write controlling method, disk array apparatus, and recording medium for recording data read/write controlling program
CN109343986B (zh) 处理内存故障的方法与计算机系统
WO2023208228A1 (zh) 存储装置及数据处理方法
WO2023020031A1 (zh) 一种内存故障恢复方法、系统以及内存
JP2008217811A (ja) 不揮発メモリを使用したディスク制御装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08720989

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2010500488

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2008720989

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE