WO2009098777A1 - バックアップ方法、格納方法、及びディスクアレイ装置 - Google Patents

バックアップ方法、格納方法、及びディスクアレイ装置 Download PDF

Info

Publication number
WO2009098777A1
WO2009098777A1 PCT/JP2008/052145 JP2008052145W WO2009098777A1 WO 2009098777 A1 WO2009098777 A1 WO 2009098777A1 JP 2008052145 W JP2008052145 W JP 2008052145W WO 2009098777 A1 WO2009098777 A1 WO 2009098777A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
defect management
nonvolatile memory
management table
volatile memory
Prior art date
Application number
PCT/JP2008/052145
Other languages
English (en)
French (fr)
Inventor
Tomoharu Muro
Nina Tsukamoto
Yuji Hanaoka
Yoko Okuno
Original Assignee
Fujitsu Limited
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 Fujitsu Limited filed Critical Fujitsu Limited
Priority to EP08711024.3A priority Critical patent/EP2249244B1/en
Priority to PCT/JP2008/052145 priority patent/WO2009098777A1/ja
Priority to JP2009552365A priority patent/JP5398551B2/ja
Publication of WO2009098777A1 publication Critical patent/WO2009098777A1/ja
Priority to US12/849,354 priority patent/US8074104B2/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • 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/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2015Redundant power supplies
    • 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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2089Redundant storage control functionality

Definitions

  • the present invention relates to backup control of a disk array device represented by RAID.
  • RAID has a backup unit (battery) in case power cannot be supplied from the outside of the system such as a power failure.
  • a power failure occurs, RAID supplies power from the backup unit to the volatile memory in order to protect the data held in the volatile memory mounted on the controller module.
  • the backup unit continues to supply power to the volatile memory until the RAID recovers from the power failure. As a result, the volatile memory continues to hold data.
  • the power supply capacity of the backup unit is limited. Therefore, the data guarantee of the volatile memory depends on the electric capacity of the backup unit. If the capacity of the backup unit is increased, the reliability of data guarantee can be increased accordingly.
  • RAID increases the number of backup units, new problems such as an increase in cost and an increase in the size of the RAID device occur. Further, since the backup cannot be guaranteed until the backup unit is recharged after recovery from the power failure, the RAID system is in a write-through state (reports completion when writing to the disk). As a result, there is a problem that the processing capability of the RAID system is significantly reduced.
  • a backup method for saving the data held in the volatile memory to the nonvolatile memory is considered for the controller module, and how to securely save the data to the nonvolatile memory becomes a problem.
  • the backup method in the present embodiment is a backup in which a disk array device is controlled, and a controller having a volatile memory and a nonvolatile memory saves data held in the volatile memory to the nonvolatile memory.
  • an error detection code is added to information of a plurality of defect management tables indicating a defect area in the nonvolatile memory, a plurality of defect management tables to which the error detection code is added are stored in the nonvolatile memory, and the plurality of defects are stored.
  • the presence / absence of an error in one of the management tables selected from the management table is determined by the error detection code, and when it is determined that there is an error, the error management table that has not been selected is used and held in the volatile memory.
  • Data is saved in the nonvolatile memory. (The invention's effect) According to the backup method according to the present embodiment, the data held in the volatile memory of the disk controller is transferred to the nonvolatile memory.
  • the disk controller generates a defect management table indicating a defective block of the nonvolatile memory, and multiplexes and stores it in the nonvolatile memory.
  • the disk controller reads the other defect management table that has been multiplexed, and stores the data in the nonvolatile memory, so that the backup of the disk array device can be made highly reliable. it can.
  • FIG. 1 is a configuration diagram of a disk array device 100 according to an embodiment.
  • FIG. It is a hardware block diagram of FPGA114 which concerns on a present Example. It is a figure which shows the structure of the non-volatile memory 115 which concerns on a present Example. 4 is a detailed diagram of Banks 305 to 308 related to the nonvolatile memory 115 according to the embodiment. It is a block diagram of the small area 501 of the non-volatile memory 115 based on a present Example. It is a block diagram of Page600 which concerns on a present Example. It is a block diagram of the spare sector 700 which concerns on a present Example. It is a hardware block diagram of Die313 which concerns on a present Example.
  • FIG. 6 is a conceptual diagram of area (AREA) 0 to area (AREA) 1023 according to the present embodiment. It is a process flowchart of the data transfer part 202 which concerns on a present Example. It is a construction
  • Data write-back part 205 ... Communication information management part 206 ... Table management part 207 ... Table management part 208 ... Transfer control part 209 Transfer control unit 210 Memory control unit 211 Memory control unit 212 Data conversion control unit 213 Data conversion control unit 214 PCI-X interface 215 Buffer 216 Buffer 217 Buffer 218 Defect management table 219 Defect management Table 220 ... Register
  • FIG. 1 is a configuration diagram of a disk array device 100 according to the present embodiment.
  • the disk array device 100 includes power supply units 101 and 102, backup units 103 and 104, CMs (controller modules) 105 and 106, and disks 107, 108, 109, and 110. Yes.
  • the CMs 105 and 106 access the disks 107 to 110 and execute data writing / reading by write / read commands from a host computer (not shown).
  • the disk array apparatus 100 has two AC / DC power supply units, ie, power supply units 101 and 102. This is because even if one power supply unit fails, power is supplied to the disk array device 100 from an external power supply. In other words, the disk array device 100 can cope with a failure in the power supply unit by adopting a redundant configuration of the power supply units 101 and 102.
  • the power supply units 101 and 102 generate a standby power supply and a system power supply.
  • the standby power supply is a 5 V (volt) power supply that supplies the minimum power necessary to start the disk array device 100.
  • the system power supply is a 12 V (volt) power supply that supplies power necessary for operating the disk array device 100.
  • the power supply units 101 and 102 When the disk array device 100 is not normally operated, the power supply units 101 and 102 output only the standby power supply in order to reduce power, and the disk array device 100 is in a standby state.
  • the power supply units 101 and 102 When the disk array device 100 is in normal operation, the power supply units 101 and 102 output standby power and system power.
  • the power supply units 101 and 102 are charged by supplying power to the backup units 103 and 104 from an external power supply.
  • the power supply unit 101 When a power failure occurs and power supply from the external power supply to the disk array device 100 is stopped, the power supply unit 101 notifies the CM 105 that the system power supply is cut off. Similarly, the power supply unit 102 notifies the CM 106 that the system power supply is cut off.
  • the control circuits 111 and 117 mounted on the CMs 105 and 106 respectively determine that the power supply units 101 and 102 are not supplied from an external power source.
  • the control circuits 111 and 117 notify the CPUs 112 and 118 that a power failure has occurred, and the control circuits 111 and 117 instruct the backup units 103 and 104 to supply power.
  • the backup unit 103 supplies power to the CM 105, and the backup unit 104 supplies power to the CM 106.
  • the CM 105 uses the power supplied from the backup unit 103 to save the data held in the volatile memory 113 to the nonvolatile memory 115 when a power failure occurs.
  • the CM 106 uses the power supplied from the backup unit 104 to save the data held in the volatile memory 119 to the nonvolatile memory 121 when a power failure occurs.
  • the backup units 103 and 104 also have a redundant configuration.
  • the backup unit 103 in this embodiment supplies power to the CM 105.
  • the backup unit 103 does not supply power to the CM 106.
  • the backup unit 104 in this embodiment supplies power to the CM 106.
  • the backup unit 104 does not supply power to the CM 105.
  • the backup unit 103 supplies power to the CM 105, and the backup unit 104 supplies power to the CM 106. This is because a large amount of power is supplied to the CMs 105 and 106 by the backup units 103 and 104, respectively.
  • both the backup units 103 and 104 are configured to supply power to the CMs 105 and 106, there are the following problems. If one of the backup units 103 and 104 fails and cannot supply power to the CMs 105 and 106, the remaining one backup unit alone cannot supply sufficient power to both the CMs 105 and 106 at once. As a result, the data held in the volatile memories 113 and 119 cannot be saved in the non-volatile memories 115 and 121 because both CMs 105 and 106 have insufficient power.
  • the backup units 103 and 104 and the CMs 105 and 106 have a one-to-one relationship so that even if any of the backup units 103 and 104 fails, the remaining backup units can reliably supply power to the corresponding CMs. Connect to the correspondence.
  • the backup units 103 and 104 are capacitors and can discharge a large amount of power at a time.
  • the backup units 103 and 104 are capacitors, and the backup units 103 and 104 can be recharged in a short time.
  • the disk array device 100 can be charged within 2 minutes from a state in which the backup units 103 and 104 are charged to 0% to a fully charged state.
  • the backup unit 104 is charged after the backup unit 103 is charged.
  • the disk array device 100 performs control so that the time during which the backup unit 103 is charged and the time during which the 104 is charged do not overlap.
  • the power supply units 101 and 102 become the backup units 103 and 104, respectively. This is because the current supplied to each of them may exceed the allowable amount.
  • the order in which the disk array device 100 is charged may be from the backup unit 103 or the backup unit 104.
  • the disk array device 100 can greatly reduce the time period in which it is executed in the write-through state. .
  • the CM 105 includes a control circuit 111, a CPU (central processing unit) 112, a volatile memory 113, an FPGA (Field Programmable Gate Array) 114, a non-volatile memory (non-volatile memory) 115, a DE port 116. , EEPROM 181.
  • DE is an abbreviation for drive enclosure.
  • the CM 105 includes a control circuit 117, a CPU 118, a volatile memory 119, an FPGA 120, a nonvolatile memory 121, and a DE port 122.
  • the volatile memories 113 and 119 are cache memories
  • the nonvolatile memories 115 and 121 are NAND flash memories.
  • the volatile memories 113 and 119 are not limited to the cache memory, but may be any memory as long as the stored contents are lost when the power supply is cut off.
  • the nonvolatile memories 115 and 121 are not limited to the flash memory, and may be any memory that does not lose the stored contents even when the power supply is cut off.
  • Control circuits 111, 117 During normal operation, the external power supply supplies power to the control circuits 111 and 117 via the power supply units 101 and 102, respectively.
  • the power supply units 101 and 102 generate standby power and system power. Further, during a power failure, the external power source cannot supply power to the power supply units 101 and 102. Therefore, the backup units 103 and 104 supply power to the control circuits 111 and 119, respectively.
  • the mounting units (control circuits 111 and 117, CPUs 112 and 118, volatile memories 113 and 119, FPGAs 114 and 120, nonvolatile memories 115 and 121, DE ports 116 and 122) constituting the CMs 105 and 106 are connected to the power supply line. Power is supplied by the power line.
  • the power supply units 101 and 102 notify the CMs 105 and 106 that the power supply of the system power supply is cut off.
  • the control circuit 111 is supplied with power from the backup units 103 and 104 as the voltage of the power supply units 101 and 102 that notifies the CPU 112 that a power failure has occurred.
  • the control circuit 117 is supplied with power from the backup units 103 and 104 in accordance with the voltage drop of the power supply units 101 and 102 that notifies the CPU 118 of a power failure state. .
  • the CPU 112 turns on the power failure flag stored in the EEPROM 181 connected to the CPU 112 (sets the power failure flag to “1”).
  • the fact that the power failure flag is ON means that the disk array device 100 is in a power failure state. Since the EEPROM 181 is connected to the CPU 112, the CPU 112 can access the EEPROM 181 at high speed.
  • the timing for starting the power supply from the backup units 103 and 104 is when the voltages in the CMs 105 and 106 become below a certain threshold.
  • the voltage value (threshold value) can be changed according to the amount of power required by the disk array device 100.
  • the CPU 112 is a unit that controls processing executed by the CM 105.
  • the CPU 118 is a unit that controls processing executed by the CM 105.
  • the CPU 112 performs control to write data for which a write command has been issued from the host computer to the disks 107 to 110 via the DE port 116.
  • the CPU 112 may write data to all of the disks 107 to 110 or a part of the disks 107 to 110 in accordance with a write command from the host computer. Further, the CPU 112 performs control to read data from the disks 107 to 110 through the DE port 116 for which a read command has been issued from the host computer.
  • the CPU 118 performs control to write the data for which a write command has been issued from the host computer to the disks 107 to 110 via the DE port 122.
  • the destination to which the CPU 118 writes data may be all of the disks 107 to 110 or a part of the disks 107 to 110 in accordance with a write command from the host computer.
  • the CPU 118 performs control to read from the disks 107 to 110 data that has been read from the host computer via the DE port 122.
  • the CM 105 and the CM 106 have a redundant configuration.
  • the CM 105 and the CM 106 have a master-slave relationship.
  • the CM 105 is a master and the CM 106 is a slave.
  • the CM 105 writes data to the disks 107 to 110 or reads data from the disks 107 to 110.
  • the CM 105 synchronizes with the CM 106, notifies the CM 106 of data processed by the CM 105, and copies it to the volatile memory 119.
  • the CPU 102 When the CM 105 fails, the CPU 102 notifies the CPU 118 that the CM 105 has failed, and the CM 106 performs a process of writing data to the disks 107 to 110 or a process of reading data from the disks 107 to 110.
  • the CPU 112 controls the saving process of the data held in the volatile memory 113.
  • the CPU 112 instructs the communication unit 201 of the FPGA 114 to save the data in the volatile memory 113 to the nonvolatile memory 115.
  • the CPU 118 controls the saving process of the data held in the volatile memory 119.
  • the CPU 118 instructs the communication unit 201 of the FPGA 120 to save the data in the volatile memory 119 to the nonvolatile memory 121.
  • the CPU 112 controls the FPGA 114 to save the data in the volatile memory 113 to the nonvolatile memory 115.
  • the CPU 118 controls the FPGA 120 to save the data in the volatile memory 119 to the nonvolatile memory.
  • the volatile memory 113 temporarily holds data for which a write command is issued from the host computer or data for which a read command is issued from the host computer.
  • the CM 105 sends a completion response to the host computer at the stage of writing data in the volatile memory 113.
  • the CM 105 can perform a so-called write-back operation that writes data on the volatile memory 113 to the disks 107 to 110 asynchronously with the operation of the host computer, and can perform data processing at high speed. .
  • the CM 106 also sends a completion response to the host computer at the stage of writing data in the volatile memory 119. Since the CM 106 has the volatile memory 119, it can perform a write-back operation and can process data at high speed.
  • FIG. 2 is a hardware block diagram of the FPGA 114 according to the present embodiment.
  • the FPGA 114 includes a communication unit (PCL) 201, data transfer units (TRN) 202 and 203, a data write back unit (RCV) 204, a communication information management unit (DQR) 205, table management units (TBM) 206 and 207, transfer control. Sections (UCE) 208 and 209, memory control sections (ONC) 210 and 211, and data conversion control sections (NFC) 212 and 213.
  • the FPGA 120 has the same configuration. Hereinafter, the hardware configuration of the FPGA 114 will be described.
  • the communication unit 201 controls the PCI-X interface 214.
  • the communication unit 201 controls data transfer between the CPU 112 and the FPGA 114.
  • the FPGA 114 transfers data with the CPU 112 using the PCI-X interface 214.
  • the communication unit 201 detects an error that has occurred in data transfer between the CPU 112 and the FPGA 114.
  • the communication unit 201 receives an instruction to save data in the volatile memory 113 to the nonvolatile memory 115 from the CPU 112.
  • the communication unit 201 has a register 220.
  • the register 220 stores data processed by the FPGA 114, setting items for processing executed by the FPGA 114, communication information managed by the communication information management unit 205, and the like.
  • the FPGA 114 controls data transfer between the CPU 112 and the nonvolatile memory 115 using these data (data processed by the FPGA 114, setting items for processing executed by the FPGA 114, and the like).
  • TRN Data transfer unit
  • the data transfer unit 202 has a buffer 215.
  • the data transfer unit 203 has a buffer 216.
  • the data transfer unit 202 transfers the data held in the volatile memory 113 to the data conversion unit 212 via the buffer 215.
  • the data transfer unit 203 transfers the data held in the volatile memory 113 to the data conversion unit 213 via the buffer 216.
  • the data transfer unit 202 generates parity data and CRC data.
  • the data transfer unit 203 also generates parity data and CRC data.
  • the parity data is data obtained by calculating an exclusive OR (EXOR) of seven Page data, which is a predetermined unit (Page) for storing data in the nonvolatile memory 115.
  • “Page” in the present embodiment is a data unit for managing data on the nonvolatile memory 115.
  • the Page data is data of the size of the Page unit. More specifically, the Page data is data stored in “Page” shown in FIG. In this embodiment, the page data is 2 kBytes.
  • the data transfer unit 202 temporarily stores the page data received from the CPU 112 via the PCI-X interface 214 in the buffer 215. Subsequently, the data transfer unit 202 receives the next page data received from the CPU 112, calculates an exclusive OR of the page data held in the buffer 215 and the next page data, and calculates an intermediate result. The data transfer unit 202 holds the calculated intermediate result in the buffer 215. Further, the data transfer unit 202 receives the Page data from the CPU 112, calculates an exclusive OR of the Page data and the intermediate result held in the buffer 215, and calculates a new intermediate result. The data transfer unit 202 updates to a new intermediate result held in the buffer 215.
  • the exclusive OR of the page data received by the data transfer unit 202 and the intermediate result is calculated, and as a result, the parity data which is the exclusive OR of the seven page data is calculated.
  • the data transfer unit 203 also calculates parity data by the same procedure as the data transfer unit 202.
  • the data transfer unit 202 generates CRC data for checking the consistency of the four main data in the Page data received from the CPU 112.
  • the data transfer unit 203 also generates CRC data for checking the consistency of the four main data in the Page data received from the CPU 112.
  • the CRC data has a size of 2 bytes, and is added to the main data and managed as Page data.
  • the CRC data is data generated by the data transfer units 202 and 203 calculating in units of Page data.
  • CRC data is data indicating whether or not an error has occurred in the transfer of the corresponding page data. That is, CRC data is data for checking the consistency of the four main data in the Page data. [2.5.3.1. [Page 600], the configuration of the Page 600 will be described with reference to FIG.
  • the FPGA 114 includes two data transfer units 202 and 203. This is to realize saving the data held in the volatile memory 113 to the nonvolatile memory 115 at a higher speed in a shorter time.
  • FIG. 11 is a process flowchart of the data transfer unit (TRN) 202 according to the present embodiment.
  • the data transfer unit 202 reads the transfer length and the address of the volatile memory from the setting values stored in the communication information management unit 205. Then, the data transfer unit 202 designates an area to write data from the pointer of the defect management table 218 in the table management unit 206 (step S1101).
  • the area designated by the data transfer unit 202 is any one of the areas 0 to 585 in the logical area 1001 shown in FIG.
  • the defect management table 218 includes a Dirty flag 901 and an Invalid flag 902.
  • the Dirty flag 901 is a flag for identifying the presence / absence of “an error other than device (hardware itself) failure” in each of the 1024 “areas” of the memory chips 301 and 302. “1” in the Dirty flag 901 indicates that there is “an error other than device (hardware itself) breakage”, and “0” indicates that there is no “error other than device (hardware itself) breakage”.
  • the “error other than device (hardware itself) failure” is an error that may succeed if the FPGA 114 fails to write data (error) and retry writing.
  • the invalid flag 902 is a flag for identifying the presence / absence of an “error due to device (hardware) breakage” in each of the 1024 “areas” of the memory chips 301 and 302. “1” of the Invalid flag 902 indicates that “an error caused by a broken device (hardware itself)” and “0” indicates that there is no “an error caused by broken device (hardware itself)”. “Error due to device (hardware itself) breakage” is an error that is unlikely to succeed even if the FPGA 114 retries writing data.
  • the Dirty flag 901 or Invalid flag 902 corresponding to the designated area is “1”
  • the data transfer unit 202 determines that data cannot be written to the designated area.
  • both the Dirty flag 901 and the Invalid flag 902 corresponding to the designated area are “0”, the data transfer unit 202 determines that data can be written to the designated area.
  • the data transfer unit 202 determines that data cannot be written in the designated area (NO in step S1102), the data transfer unit 202 refers to the defect management table 218 again and newly designates an area to write data (step S1101). ).
  • the “next area” of the area determined to be unwritable is designated.
  • the “next area” is an “area” as a result of incrementing AID indicating an area that is determined to be unwritable.
  • the area is “number”, and incrementing means adding “1”.
  • the data transfer unit 202 determines that data can be written in the designated area (YES in step S1102)
  • the data transfer unit 202 transfers the data to the data conversion unit 212 via the buffer 215 and writes the data to the nonvolatile memory 115.
  • the data transfer unit 202 writes data to the volatile memory 115 in units of “Page”.
  • the data transfer unit 202 writes the page data in the designated area of the nonvolatile memory 115.
  • the state machines constituting the Dies 313 to 320 store the Page data transferred by the data transfer unit 202 in the nonvolatile memory array.
  • FIG. 8 is a specific configuration diagram of the Die 313.
  • Each of the Dies 313 to 320 has two data buffers (data buffers 805 and 806), and the state machines of the Dies 313 to 320 store the page data transferred by the data transfer unit 202 through these data buffers in a nonvolatile manner. Store in memory array.
  • the data transfer unit 202 determines whether or not an error has occurred in writing the page data (step S1104).
  • the data transfer unit 202 determines whether or not an error has occurred depending on whether or not an error notification has been received from the state machines of the Dies 313 to 320.
  • the data transfer unit 202 receives an error notification from the communication unit 201 and detects an error between the nonvolatile memory 113 and the FPGA 114.
  • step S1104 If the data transfer unit 202 determines that there is no error (NO in step S1104), the Dirty flag 901 and Invalid flag 902 corresponding to the area specified in the defect management table 218 are set to “0” (step S1105). .
  • the Dirty flag 901 and the Invalid flag 902 corresponding to the designated area are both “0”. Therefore, the Dirty flag 901 and the Invalid flag 902 are not changed.
  • the data transfer unit 202 determines whether or not the page data written in the nonvolatile memory 115 is the last page data to be written in the designated area (step S1106). When the data transfer unit 202 determines that it is not the last page data (NO in step S1106), the data transfer unit 202 writes the next page data in the designated area (step 1103).
  • An area (“Page”) in which the data transfer unit 202 writes “next page data” is associated with a data buffer different from the data buffer used to store the page data that has been written immediately before in the specified area. Region (“Page”).
  • the data buffer is a data buffer included in the Dies 313 to 320. When the data transfer unit 202 determines that it is the last page data (step S1106: YES), the data transfer unit 202 ends the process.
  • step S1106 if the data transfer unit 202 determines that “there is an error” (YES in step S1104), it is further determined whether or not the errored data can be restored (step S1107).
  • the data transfer unit 202 determines whether or not error data can be restored depending on whether or not data can be restored using parity data and CRC data.
  • the data transfer unit 202 determines whether or not error data can be restored based on whether or not error data (other page data) already exists in the stripe formed by the page data.
  • Specific configuration examples of the stripes are stripes 501 and 502 shown in FIG.
  • step S1107 If the data transfer unit 202 can restore the error data (YES in step S1107), the data transfer unit 202 does not have to write back to the other area (exchange area 1002) from the first data started to be written by the CPU 112. I'm sorry. In other words, by determining whether or not the data transfer unit 202 can restore the error, there is no need to provide a replacement area for saving data to be written in the area including the recoverable error, so the capacity of the replacement area 1002 is reduced. can do.
  • the data transfer unit 202 determines that the error data can be restored (YES in step S1107), the data transfer unit 202 marks the error that can be restored by destroying the CRC data. Here, the data transfer unit 202 does not update the defect management table 218. The data transfer unit 202 updates the defect management table 218 when data is written back (step S1108). Whether the Dirty flag 901 or the Invalid flag 902 is set to “1” is as follows. If the error is not due to the failure of the hardware of the nonvolatile memory 115, the data transfer unit 202 sets the Dirty flag 901 of the designated area to “1”.
  • the data transfer unit 202 sets the invalid flag 902 of the designated area to “1”. Then, the data transfer unit 202 determines whether or not the page data is the last page data (step S1106).
  • the data transfer unit 202 determines that the error data cannot be restored (NO in step S1107), the data transfer unit 202 selects either the Dirty flag 901 or the Invalid flag 902 corresponding to the area specified in the defect management table 218. Is set to “1” (step S1109). Whether the Dirty flag 901 or the Invalid flag 902 is set to “1” is the same standard as described above. Then, the data transfer unit 202 newly designates an area in the exchange area 1002 (step 1110). The data transfer unit 202 refers to the defect management table 218 stored in the table management unit 206, and determines whether or not data can be written in the area specified in step S1110 (step S1111).
  • the data transfer unit 202 determines that data cannot be written in the designated area (NO in step S1111), the data transfer unit 202 refers to the defect management table 218 again and newly designates an area to write data (step S1110). ).
  • the data transfer unit 202 determines whether data can be written in the designated area (YES in step S1111)
  • the data transfer unit 202 transfers the data to the data conversion unit 212 via the buffer 215 and writes the data to the nonvolatile memory 115 ( Step S1112).
  • the data transfer unit 202 determines whether an error has occurred in the writing of the Page data, and performs the same processing as steps 1104 to 1109 (not shown). Specifically, when the data transfer unit 202 determines “no error”, each of the Dirty flag 901 and the Invalid flag 902 corresponding to the designated area of the defect management table 218 is set to “0”. When the data transfer unit 202 determines that “there is an error”, it further determines whether or not the errored data can be restored.
  • the data transfer unit 202 determines that the error data can be restored, the data transfer unit 202 marks the error that can be restored by destroying the CRC data. The data transfer unit 202 does not update the defect management table 218. The data transfer unit 202 updates the defect management table 218 when data is written back. When the data transfer unit 202 determines that the error data cannot be restored, the data transfer unit 202 sets either the Dirty flag 901 or the Invalid flag 902 corresponding to the area specified in the defect management table 218 to “1”. To do. Whether the Dirty flag 901 or the Invalid flag 902 is set to “1” is the same standard as described above. Then, the data transfer unit 202 designates an area in the exchange area 1002 again.
  • the data transfer unit 202 determines whether or not the page data written in the nonvolatile memory 115 is the last page data to be written in the designated area (step S1113). If the data transfer unit 202 determines that it is not the last page data (NO in step S1113), the data transfer unit 202 writes the next page data in the designated area (step 1112). When the data transfer unit 202 determines that the data is the last page data (YES in step S1113), the data transfer unit 202 ends the process.
  • step S1104 If the data transfer unit 202 determines that “there is an error” in step S1104 (YES in step S1104), the data transfer unit 202 sets either the Dirty flag 901 or the Invalid flag 902 to “1” and the defect management table 218. Update. Then, the transfer control unit 208 writes the updated defect management table 218 in the nonvolatile memory 115.
  • the step in which the data transfer unit 202 determines that “there is an error” in step S1104 (YES in step S1104) is a step corresponding to step S1607 illustrated in FIG. [2.4.3. Data Write Back Unit (RCV) 204]
  • the data write-back unit 204 performs control to transfer data from the nonvolatile memory 115 to the volatile memory 113 at the time of power recovery.
  • the CPU 112 instructs the FPGA 114 (more specifically, the data write-back unit 204 in the FPGA 114) to write back the data saved in the nonvolatile memory 115 to the volatile memory 113.
  • the data write back unit 204 receives an instruction from the CPU 112, and the data write back unit 204 executes data transfer control (data transfer control from the nonvolatile memory 115 to the volatile memory 113).
  • the data write back unit 204 has a buffer 217.
  • the data write back unit 204 transfers the data held in the nonvolatile memory 115 to the communication unit 201 via the buffer 217. Then, the communication unit 201 transfers the data to the volatile memory 113 via the CPU 112.
  • the data write-back unit 204 detects an error in the page data received from the nonvolatile memory 115 via the memory control units 210 and 211 and the data conversion control units 212 and 213.
  • the data write back unit 204 checks the CRC data and checks the consistency between the data written by the data transfer units 202 and 203 in the nonvolatile memory 115 and the data read by the data write back unit 204.
  • the data write-back unit 204 detects an error in the CRC data check, it determines whether the detected error data can be restored using the corresponding parity data.
  • the data write back unit 204 restores the error data using the parity data corresponding to the error data.
  • CRC data is data generated by the data transfer units 202 and 203 for each page data.
  • the fact that the data write-back unit 204 detects an error in the CRC data check means that the data read from the nonvolatile memory 115 by the data write-back unit 204 is consistent with the data written by the data transfer units 202 and 203 to the nonvolatile memory 115. It is because it is not taken.
  • the communication information management unit 205 holds communication information used for processing control of the data transfer units 202 and 203 and the data write back unit 204.
  • the data transfer units 202 and 203 and the data write-back unit 204 read communication information from the communication information management unit 205 and execute respective processing controls.
  • the communication information includes a command issued to execute processing, a memory address in the volatile memory 113 and the non-volatile memory 115, an amount of data transferred at a time between the volatile memory 113 and the non-volatile memory 115 (transfer length: transfer length), It consists of AID (Area ID).
  • the communication information includes a command issued to execute processing, a memory address in the volatile memory 113 and the non-volatile memory 115, an amount of data transferred at a time between the volatile memory 113 and the non-volatile memory 115 (transfer length: transfer length), It consists of a volatile memory address (memory address).
  • the transfer length (the amount of data transferred at a time) is information that can be set using the FPGA 114 in consideration of the relationship between the volatile memory 113 and the nonvolatile memory 115.
  • the data transfer units 202 and 203 and the data write-back unit 204 refer to the defect management tables 218 and 219, respectively, and sequentially write data or read data for each area.
  • the AID is an ID for identifying an “area” added for each area. This prevents “missing area accessed by the FPGA 114”.
  • the “missing area accessed by the FPGA 114” means that the order of the areas accessed by the data transfer units 202 and 203 and the data write-back unit 204 is not a predetermined order.
  • the data transfer units 202 and 203 set an initial value of AID, and generate an AID by incrementing the initial value of AID according to a command issued by the CPU 112.
  • the data transfer units 202 and 203 store the generated AID in the User area of the nonvolatile memory 115.
  • the User area is an area equivalent to the User area 706 constituting the spare sector 700 shown in FIG.
  • Table management unit (TBM) 206, 207 The table management unit 206 controls the defect management table 218.
  • the defect management table 218 is a table that the FPGA 114 (the data transfer unit 202 and the data write-back unit 204) refers to in order to determine whether the FPGA 114 can write data to the “area” and read data from the “area”. is there.
  • the area where an error has been managed by the defect management table 218 is an area identified by area.
  • the FPGA 114 data transfer unit 202, data write back unit 204 detects an error in the “area” in which the FPGA 114 writes data to the nonvolatile memory 115 based on a single instruction from the CPU 112, table management is performed.
  • the unit 206 writes a flag indicating that there is an error in the area in the defect management table 218.
  • FIG. 9 is an example of the defect management table 218 according to the present embodiment.
  • the defect management table 218 includes a Dirty flag 901 and an Invalid flag 902.
  • the “areas” managed by the table management unit 206 using the defect management table 218 are 1024 “areas” of the memory chips 301 and 302.
  • the Dirty flag 901 is a flag for identifying the presence / absence of “error other than device (hardware) failure” in each of the 1024 “areas” of the memory chips 301 and 302. “1” in the Dirty flag 901 indicates that there is “an error other than device (hardware itself) breakage”, and “0” indicates that there is no “error other than device (hardware itself) breakage”.
  • the “error other than device (hardware itself) failure” is an error that may succeed if the FPGA 114 fails to write data (error) and retry writing.
  • the invalid flag 902 is a flag for identifying the presence / absence of an “error due to device (hardware) breakage” in each of the 1024 “areas” of the memory chips 301 and 302. “1” of the Invalid flag 902 indicates that “an error caused by a broken device (hardware itself)” and “0” indicates that there is no “an error caused by broken device (hardware itself)”. “Error due to device (hardware itself) breakage” is an error that is unlikely to succeed even if the FPGA 114 retries writing data.
  • the table management unit 207 also controls the defect management table 219 indicating the area where the data read / write error has occurred in the nonvolatile memory 115.
  • the “areas” managed by the table management unit 207 using the defect management table 219 are 1024 “areas” of the memory chips 303 and 304.
  • the defect management table 219 is also composed of a Dirty flag and an Invalid flag corresponding to the Dirty flag 901 and the Invalid flag 902.
  • CRC data 903 is added to the defect management table 218 in the present embodiment.
  • the transfer control unit 208 adds the CRC data 903 to the defect management table 218.
  • CRC data 903 is data generated by the transfer control unit 208 using the defect management table 218 to calculate.
  • CRC data 903 is data indicating whether or not an error has occurred in the transfer between the FPGA 114 and the nonvolatile memory 115 in the defect management table 218. That is, the CRC data 903 is data indicating whether or not the defect management table 218 is not broken in the transfer between the FPGA 114 and the nonvolatile memory 115.
  • Transfer control unit (UCE) 208, 209 The transfer control units 208 and 209 perform command (CMD) issue control to the nonvolatile memory 115.
  • CMD command
  • the transfer control unit 208 writes the failure management table 218 of the table management unit 206 into the nonvolatile memory 115.
  • the transfer control unit 208 generates CRC data 903 corresponding to the defect management table 218 based on the defect management table 218, and adds the CRC data 903 to the defect management table 218.
  • the transfer control unit 208 duplicates the defect management table 218 to which the CRC 903 is added and stores it in the nonvolatile memory 115.
  • the area in which the transfer control unit 208 writes the defect management table 218 in duplicate is “Block 0” shown in FIG.
  • the area “Block 0” in which the transfer control unit 208 writes the defect management table 218 is eight “Block 0” that configures the Banks 305 to 308. Of these eight “Block 0”, the transfer control unit 208 writes the defect management table 218 in duplicate in two “Block 0”.
  • the table management unit 206 updates the defect management table 218.
  • the FPGA 114 data transfer unit 202, data write-back unit 204 detects an error, and the table management unit 206 writes a flag indicating that there is an error in the area to the defect management table 218, and updates the defect management table 218. I do.
  • the four-generation defect management table 218 is stored in eight “Block 0” of the nonvolatile memory 115. Since there are eight “Block 0” configuring the Banks 305 to 308, the transfer control unit 208 leaves the defect management table 218 before the update in “Block 0” of the nonvolatile memory 115. The difference in generation is whether the defect management table 218 is before or after the update. That is, the eight “Block 0” of Banks 305 to 308 include the latest defect management table 218, the defect management table 218 immediately before the update, the defect management table 218 immediately before the update, and the previous defect management table immediately before the update. 218 four generation defect management tables 218 are stored in duplicate. When the table management unit 206 newly updates the defect management table 218, the transfer control unit 208 updates the defect management table updated to two “Block 0” in which the defect management table 218 having the oldest generation is stored. Write 218 in duplicate.
  • the CPU 112 updates the generation information. That is, since the latest defect management table 218 is stored in “Block 0” in which the oldest defect management table 218 was stored, the CPU 112 stores the defect management table stored in eight “Block 0” in the generation information. Update the order of 218 generations.
  • the transfer control unit 208 reads the latest defect management table 218 from the nonvolatile memory 115 with reference to the generation information.
  • the transfer control unit 209 writes the failure management table 219 of the table management unit 207 in the nonvolatile memory 115. Also at this time, the transfer control unit 209 generates CRC data corresponding to the defect management table 219 based on the defect management table 219, and adds the CRC data to the defect management table 219.
  • the area in which the transfer control unit 209 writes the defect management table 219 in duplicate is “Block 0” of Banks 309 to 312.
  • the transfer control unit 209 doubles and writes the defect management table 219 in two “Block 0” out of the eight “Block 0” of the Banks 309 to 312.
  • the eight “Block 0” of Banks 309 to 312 include the latest defect management table 219, the defect management table 219 immediately before the update, the defect management table 219 immediately before the update, and the previous defect management table 218 immediately before the update.
  • the four generation defect management tables 219 are duplicated and stored.
  • generation information for managing which generation of defect management table 219 is stored in which “Block 0” is also stored in the EEPROM 182 connected to the CPU 118.
  • the CPU 112 updates the generation information. Since the EEPROM 182 is connected to the CPU 118, the CPU 118 can access the EEPROM 182 at a higher speed than the nonvolatile memory 121.
  • the transfer control unit 208 performs control to read the defect management table 218 held in the nonvolatile memory 115 to the table management unit 206.
  • the transfer control unit 209 performs control to read the defect management table 219 held in the nonvolatile memory 115 to the table management unit 207.
  • FIG. 12 is a sequence diagram of construction of the defect management table 218 according to the present embodiment.
  • the sequence of construction of the defect management table 219 is a similar sequence diagram, and is omitted.
  • the non-volatile memory 115 When shipped from the factory, the non-volatile memory 115 usually already has a bad sector. For example, information (bad sector information) indicating whether or not the main sector corresponding to the spare sector 700 is defective when the nonvolatile memory 115 is shipped from the factory is stored in the Invalid area 701 shown in FIG.
  • the transfer control unit 208 constructs a defect management table 218 from the defective sector information in the nonvolatile memory 115.
  • the CPU 112 instructs the FPGA 114 (more specifically, the transfer control unit 208) to start the transfer control unit 208 (step S1201).
  • the transfer control unit 208 is activated, reads bad sector information from the nonvolatile memory 115 (Read), and checks (Check) the bad sector in the nonvolatile memory 115 (Step S1202).
  • the CPU 112 waits for a process completion notification from the transfer control unit 208 (step S1203).
  • the transfer control unit 208 notifies the CPU 112 that the processing of reading out the bad sector information and checking the bad sector is completed, and the transfer control unit 208 notifies the CPU 112 of the read out bad sector information (step 1204).
  • the CPU 112 constructs a defect management table 218 from the bad sector information received from the transfer control unit 208 (step S1205).
  • the CPU 112 instructs the transfer control unit 208 to update the built defect management table 218 (step S1206).
  • the transfer control unit 208 updates the defect management table 218 (step S1207). More specifically, the transfer control unit 208 instructs the table management unit 206 to update the defect management table 218, and the table management unit 206 writes a flag indicating that there is an error in the area in the defect management table 218.
  • the CPU 112 instructs the transfer control unit 208 to perform a process for canceling the prohibition of writing to the nonvolatile memory 115 (step S1208).
  • the nonvolatile memory 115 is in a write-protected state (write-protected state).
  • the transfer control unit 208 issues an Unlock command to the nonvolatile memory 115 to release the write prohibition of the nonvolatile memory 115 (step S1209).
  • the CPU 112 waits for a process completion notification from the transfer control unit 208 (step 1210).
  • the CPU 112 instructs the transfer control unit 208 to erase the nonvolatile memory 115 (step S1211).
  • the erase process here is a process of initializing “Block 0”, and is a process of setting “Block 0” storing the defect management table 218 to a state in which no data is stored.
  • the transfer control unit 208 issues an erase command and performs an erase process (step S1212).
  • the CPU 112 waits for an erase process completion notification from the transfer control unit 208 (step S1213).
  • the CPU 112 instructs the transfer control unit 208 to write the defect management table 218 in “Block 0” of the nonvolatile memory 115 (step S1214).
  • the transfer control unit 208 stores the defect management table 218 in eight “Block 0” of the Banks 305 to 308 (write) (step S1215).
  • the same (same generation) defect management table 218 is stored in all eight “Block 0” of the Banks 305 to 308 that can store the four generation defect management tables 218.
  • FIG 13 and 14 are diagrams related to the processing sequence of the defect management table 218 according to the present embodiment.
  • the transfer control unit 208 stores the defect management table 218 in eight “Block 0” of Banks 305 to 308.
  • 13 and 14 are sequence diagrams executed by the CPU 112 and the FPGA 114 when the disk array device 100 is turned off and then turned on again later.
  • the FPGA 114 When the disk array device 100 is powered off, the FPGA 114 does not hold the defect management table 218. In this case, the defect management table 218 is stored only in the nonvolatile memory 115.
  • the FPGA 114 reads the defect management table 218 from the nonvolatile memory 208 and expands it on the FPGA 114. More specifically, the transfer control unit 208 reads the defect management table 208 from “Block 0” in the nonvolatile memory 115 and develops it on the table management unit 206. This is because the CPU 112 and the FPGA 114 save the data held in the volatile memory 113 to the nonvolatile memory 115 during a power failure. That is, the FPGA 114 manages defective sectors in the nonvolatile memory 115 and reliably saves the data held in the volatile memory 113 in the event of a power failure.
  • the CPU 112 instructs the FPGA 114 to activate the transfer control unit 208 (step S1301).
  • the transfer control unit 208 issues an Unlock command to the nonvolatile memory 115 to release the write prohibition of the nonvolatile memory 115 (step S1302).
  • the CPU 112 waits for a notification of completion of write prohibition release from the transfer control unit 208 (step S1303).
  • the CPU 112 receives a write prohibition release completion notification from the transfer control unit 208, and instructs the transfer control unit 208 to read the defect management table 218 from the nonvolatile memory 115 (step S1304).
  • the transfer control unit 208 reads the defect management table 218 from the nonvolatile memory 115 (step S1305).
  • the CPU 112 waits for notification of completion of reading of the defect management table 218 from the transfer control unit 208 (step S1306).
  • FIG. 15 is a flowchart regarding the reading process of the defect management table 218 (the process of step S1305).
  • the CPU 112 receives a read completion notification of the defect management table 218 from the transfer control unit 208, and performs an erase confirmation of “Block 0” that stores the next-generation defect management table 218 of the read defect management table 218 to the transfer control unit 208.
  • An instruction is given (step S1307).
  • the transfer control unit 208 issues an erase confirmation command and performs erase confirmation (step S1308). This is because when the table management unit 206 updates the defect management table 218, the defect management table 218 (the next-generation defect management table 218) updated efficiently is stored.
  • the CPU 112 waits for an erase confirmation completion notification from the transfer control unit 208 (step S1309).
  • the CPU 112 determines that “Block 0” storing the next-generation defect management table 218 is not erased, the CPU 112 instructs the transfer control unit 208 to perform the erase processing of “Block 0” (step S1310).
  • the erase process is a process of erasing data stored in “Block 0” storing the next-generation defect management table 218.
  • the transfer control unit 208 issues an erase command and erases “Block 0” storing the next-generation defect management table 218 (step S1311).
  • the CPU 112 waits for a notification of erase completion from the transfer control unit 208 (step S1312).
  • the CPU 112 determines that “Block 0” storing the next-generation defect management table 218 is erased, the CPU 112 does not instruct the transfer control unit 208 to perform the erase process.
  • the power failure flag is a flag indicating whether or not a power failure has occurred.
  • the CPU 112 and the transfer control unit 208 execute a power recovery process. That is, the CPU 112 determines whether or not the power is turned on after recovering from the power failure, depending on whether or not the power failure flag is set when the power of the disk array device 100 is turned on.
  • the CPU 112 performs transfer control to confirm whether or not the nonvolatile memory 115 has been erased.
  • the unit 208 is instructed (step S1313).
  • the transfer control unit 208 issues an erase process confirmation command, and performs a confirmation process as to whether or not the nonvolatile memory 115 has been erased (step S1314).
  • the erase process here is a process of erasing data in an area from “Block 1” to “Block 2047” excluding “Block 0” constituting the nonvolatile memory 115.
  • the CPU 112 waits for an erase process confirmation completion notification from the transfer control unit 115 (step S1315).
  • the CPU 112 determines that the data from “Block 1” to “Block 2047” has not been erased, the CPU 112 instructs the transfer control unit 208 to perform the erase processing from “Block 1” to “Block 2047” (step S1). S1316).
  • the transfer control unit 208 issues an erase process command, and erases the data stored in “Block 2047” from “Block 1” (step S1317).
  • the CPU 112 waits for an erase process completion notification from the transfer control unit 208 (step S1318).
  • the CPU 112 constructs communication information (step S1319).
  • the communication information includes a command issued to execute processing, a memory address in the volatile memory 113 and the non-volatile memory 115, an amount of data transferred at a time between the volatile memory 113 and the non-volatile memory 115 (transfer length: transfer length), It consists of AID (Area ID).
  • the communication information management unit 205 writes the communication information in the register 202 (step S1320).
  • FIG. 15 is a read sequence diagram of the defect management table 218 of the transfer control unit 208 according to the present embodiment according to the present embodiment.
  • the eight defect management tables 218 stored in the Banks 305 to 308 are referred to as defect management tables 171 to 178.
  • FIG. 17 is a conceptual diagram of Banks 305 to 308 according to the present embodiment. It shows that defect management tables 171 to 178 are stored in eight “Block 0” of Banks 305 to 308.
  • the latest defect management tables 171 and 172 are duplicated and stored in “Block 0” of Bank 305.
  • the defect management tables 173 and 174 one generation before the defect management tables 171 and 172 are stored in “Block 0” of the Bank 306.
  • the defect management tables 175 and 176 one generation before the defect management tables 173 and 174 are stored in “Block 0” of the Bank 307.
  • the defect management tables 177 and 178 of the previous generation of the defect management tables 175 and 176 are stored in “Block 0” of the bank 308.
  • the transfer control unit 208 refers to the generation information stored in the EEPROM 181 and reads the latest defect management table 171 from “Block 0” of the Bank 305 (step S1501). Then, the transfer control unit 208 checks the CRC data added to the defect management table 171 (step S1502), and determines whether or not the defect management table 171 is broken (step S1503). When the transfer control unit 208 determines that the defect management table 171 is not broken (step S1503, YES), the transfer control unit 208 notifies the CPU 112 of completion of reading the defect management table 171 (END).
  • the transfer control unit 208 determines that the defect management table 171 is broken (NO in step S1503), the transfer control unit 208 reads the defect management table 172 (step S1504).
  • the defect management table 172 is the same data as the defect management table 171 and is data obtained by making the defect management table 171 redundant. Then, the transfer control unit 208 checks the CRC data added to the defect management table 172 (step S1505) and determines whether the defect management table 172 is not broken (step S1506). When the transfer control unit 208 determines that the defect management table 172 is not broken (YES in step S1506), the transfer control unit 208 notifies the CPU 112 of completion of reading the defect management table 172 (END).
  • the transfer control unit 208 determines that the defect management table 172 is broken (NO in step S1506), the transfer control unit 208 reads the defect management table 173 of the previous generation of the defect management tables 171 and 172 (step S1506). S1507). Then, the transfer control unit 208 checks the CRC data added to the defect management table 173 (step S1508), and determines whether or not the defect management table 173 is broken (step S1509). When the transfer control unit 208 determines that the defect management table 173 is not broken (YES in step S1509), the transfer control unit 208 notifies the CPU 112 of completion of reading the defect management table 173 (END).
  • the transfer control unit 208 determines that the defect management table 173 is broken (NO in step S1509), the transfer control unit 208 reads the defect management table 174 (step S1510).
  • the transfer control unit 208 checks the CRC data and determines that there is an unbroken failure management table
  • the transfer control unit 208 sequentially checks the failure management tables 174, 175, 176, 177, and 178.
  • the CPU 112 is notified of completion of reading the non-broken defect management table (in the flowchart shown in FIG. 15, the CRC check and reading steps of the defect management tables 174, 175, 176, 177, and 178 are omitted).
  • the transfer control unit 208 may check CRC data by simultaneously reading out the defect management tables of the same generation of the defect management tables 171 and 172.
  • FIG. 16 is a sequence diagram of the CPU 112 and the FPGA 114 when a power failure occurs according to this embodiment.
  • FIG. 11 shows a processing flow of saving data to the nonvolatile memory 115 when a power failure occurs.
  • Data stored in the volatile memory 113 by the data transfer unit 202 is saved in the nonvolatile memory 115. Therefore, FIG. 11 shows details of the data write processing in steps S1601 to S1606 and steps S1614 to S1616 in FIG.
  • the CPU 112 instructs the transfer control units 202 and 203 to save the data held in the volatile memory 113 to the nonvolatile memory 115. (Steps S1601 and 1602).
  • the data transfer units 202 and 203 execute transfer control of data held in the volatile memory 113 to the nonvolatile memory 115 (steps S1603 and 1604).
  • the CPU 112 waits for a data save completion notification from the data transfer units 202 and 203 (steps S1605 and 1606).
  • the data transfer unit 203 completes the data saving.
  • the data transfer unit 202 detects an error during data saving (step S1607).
  • the data transfer unit 202 detects an error and notifies the CPU 112 of an error (step S1608).
  • the CPU 112 requests the data transfer unit 202 to collect an error log (step S1610).
  • the CPU 112 reads the error log from the register of the nonvolatile memory 115 (such as the register 802 shown in FIG. 8) and transfers it to the CPU 112 (step S1609).
  • the CPU 112 collects an error log (step S1610).
  • the CPU 112 requests the data transfer unit 202 to transfer information (address, etc.) of the sector having an error (step S1611).
  • the data transfer unit 202 reads out information (address, etc.) of the sector in error from the register and transfers it to the CPU 112 (step S1612).
  • the CPU 112 checks the sector having an error (step S1611).
  • the CPU 112 updates the defect management table 218 from the check result in step S1613 (step S1613).
  • the data transfer unit 202 writes the update history in the register (step S1614).
  • the CPU 112 again instructs the data transfer unit 202 to save the data held in the volatile memory 113 to the nonvolatile memory 115 (step S1615).
  • the data transfer unit 202 saves the data to the nonvolatile memory 115 again (step S1616).
  • the CPU 112 instructs the transfer control unit 208 to write back the defect management table 218 (step S1618).
  • the transfer control unit 208 stores the updated defect management table 218 in “Block 0” of the nonvolatile memory 115 (step S1619).
  • the CPU 112 waits for a notification of completion of the write-back process in the defect management table 218 (step S1620).
  • the memory control units 210 and 211 control the interface of the nonvolatile memory 115.
  • the memory control units 210 and 211 write data to the nonvolatile memory 115 and read data from the nonvolatile memory 115.
  • the memory control units 210 and 211 control the processing of the nonvolatile memory 115 to write data into the nonvolatile memory 115 and read data from the nonvolatile memory 115.
  • the data conversion control units 212 and 213 control the IP of the nonvolatile memory 115.
  • the data conversion control units 212 and 213 execute processing for ensuring data consistency between the volatile memory 113 and the nonvolatile memory 115.
  • the data conversion control unit 212 converts the data into a format that can be stored in the nonvolatile memory 115 and transfers the data to the memory control unit 210.
  • the data conversion control unit 212 receives data from the memory control unit 210
  • the data conversion control unit 212 converts the data into a format that can be stored in the volatile memory 113 and transfers the data to the data write-back unit 204.
  • the data conversion control unit 213 converts the data into a format that can be stored in the nonvolatile memory 115 and transfers the data to the memory control unit 211.
  • the data conversion control unit 213 converts the data into a format that can be stored in the volatile memory 113 and transfers the data to the data write-back unit 204.
  • Nonvolatile memory 115, 121 Next, in this embodiment, the nonvolatile memories 115 and 121 for saving the data held in the volatile memory 113 will be described.
  • the FPGA 114 saves data held in the volatile memory 113 to the nonvolatile memory 115 in accordance with an instruction from the CPU 112.
  • the FPGA 120 saves the data held in the volatile memory 119 to the nonvolatile memory 121 in accordance with an instruction from the CPU 118.
  • the non-volatile memory 115 is a storage medium that saves and stores data held by the volatile memory 113 during a power failure.
  • the nonvolatile memory 121 is a storage medium that saves and stores data held by the volatile memory 119 during a power failure.
  • the nonvolatile memory 115 is connected to the FPGA 114.
  • the volatile memory 113 and the FPGA 114 are connected to the CPU 112.
  • the nonvolatile memory 115 has a defect management table.
  • the area in which the defect management table is stored is an area in which the number of data writes in the nonvolatile memory 115 is guaranteed more than that in other areas.
  • the area for storing the defect management table is “Block 0” shown in FIG.
  • the data transfer unit 202 transfers the defect management table 218 stored in the table management unit 206 to the nonvolatile memory 115 and stores it in “Block 0” of the memory chips 301 and 302.
  • the data transfer unit 203 also transfers the failure management table 219 stored in the table management unit 207 to the nonvolatile memory 115 and stores it in “Block 0” of the memory chips 303 and 304.
  • the nonvolatile memory 121 is connected to the FPGA 120.
  • the volatile memory 119 and the FPGA 120 are connected to the CPU 118.
  • the nonvolatile memory 119 has a defect management table.
  • the configuration of the nonvolatile memory 121 is the same as that of the nonvolatile memory 115.
  • the configuration of the nonvolatile memory 115 will be described in detail.
  • FIG. 3 is a diagram illustrating a configuration of the nonvolatile memory 115 according to the present embodiment.
  • the non-volatile memory 115 includes memory chips 301, 302, 303, and 304.
  • the memory chips 301, 302, 303, and 304 are units for dividing and managing data stored in the nonvolatile memory 115.
  • the memory chip 301 is composed of Banks 305 and 306.
  • the memory chip 302 includes Banks 307 and 308.
  • the memory chip 303 is composed of Banks 309 and 310.
  • the memory chip 304 is composed of Banks 311 and 312.
  • Banks 305 to 312 are also units for dividing and managing data in the nonvolatile memory 115.
  • FIG. 4 is a detailed diagram of the Banks 305 to 308 related to the nonvolatile memory 115 according to the present embodiment. Since the memory chips 303 and 304 (Banks 309 to 312) have the same configuration as the memory chips 301 and 302 (Banks 305 to 308), description thereof is omitted.
  • Bank 305 includes Dies 313 and 314.
  • Die 313 is composed of 2048 Blocks from Block 0 to Block 2047.
  • the Die 314 is also composed of 2048 Blocks from Block 0 to Block 2047.
  • Blocks 0 to 2047 of Die 313 and 314 are composed of 64 pages from Page 0 to Page 63, respectively.
  • “Die”, “Block”, and “Page” are also units of an area for storing data in the nonvolatile memory.
  • Die is a unit (unit of hardware configuration) for storing physically separated data in the nonvolatile memory 115. In this embodiment, “Page” is 2 kBytes.
  • FIG. 6 is a diagram of the hardware configuration of the Die 313.
  • the non-volatile memory array 810 of the Die 313 is 2048 “Block 0 to Block 2047” illustrated in FIG. Therefore, the nonvolatile memory 115 includes 16 nonvolatile memory arrays. Since each of the Dies 313 to 320 includes two data buffers (such as the data buffers 805 and 806 described in FIG. 6), the nonvolatile memory 115 includes 32 data buffers.
  • the state machine 807 of the Die 313 stores the data (Page data) transferred from the FPGA 114 in the nonvolatile memory array 810.
  • the other Dies 314 to 320 also have state machines, and these state machines store the data (Page data) transferred from the FPGA 114 in the nonvolatile memory arrays included in the Dies 314 to 320, respectively.
  • Bank 306 is composed of Dies 315 and 316.
  • Each of the Dies 315 and 316 is composed of 2048 Blocks from Block 0 to Block 2047.
  • Blocks 0 to 2047 of Die 315 and 316 are composed of 64 pages from Page 0 to Page 63, respectively.
  • Bank 307 is composed of Dies 317 and 318.
  • Each of the Die 317 and 318 is also composed of 2048 Blocks from Block 0 to Block 2047.
  • Blocks 0 to 2047 of Dies 317 and 318 are each composed of 64 pages from Page 0 to Page 63.
  • Bank 308 is composed of Dies 319 and 320.
  • Each of the Dies 319 and 320 is composed of 2048 Blocks from Block 0 to Block 2047.
  • Blocks 0 to 2047 of Die 319 and 320 are composed of 64 pages from Page 0 to Page 63, respectively.
  • this “area” is composed of 16 “Blocks”.
  • the 16 “Blocks” are data stored in the nonvolatile memory 115 via the 16 data buffers (data buffers 805 and 806 shown in FIG. 6) provided in the memory chips 301 and 302 (Die 313 to 320), respectively.
  • the “area” is an area for storing a certain amount of data transferred to the nonvolatile memory 115 via different data buffers included in the nonvolatile memory 115.
  • the FPGA 114 performs data transfer control from the volatile memory 113 to the nonvolatile memory 115 in units of “area”. In this embodiment, the CPU 112 instructs the FPGA 114 to transfer data for each “area”.
  • the “area (AREA)” of the nonvolatile memory 115 includes a “logical area (LOGICAL AREA)” and a “replacement area (REPLACEMENT AREA)”.
  • FIG. 10 is a conceptual diagram of “area (AREA) 0 to area (AREA) 1023” in the memory chips 301 and 302 of the nonvolatile memory 115 according to the present embodiment.
  • the logical area (LOGICAL AREA) 1001 is composed of area 0 to area 585
  • the replacement area (REPLACEMENT AREA) 1002 is composed of area 586 to area 1023.
  • the memory chips 303 and 304 are also composed of “logical area” and “exchange area”.
  • the FPGA 114 saves (transfers data) the data held in the volatile memory 113 to the logical area (LOGICAL AREA) 1001 of the nonvolatile memory 115. While the FPGA 114 is writing data to a specific area of the areas (area 0 to area 585) constituting the logical area 1001, it is determined that the error data generated by the FPGA 114 cannot be restored. In this case, the FPGA 114 rewrites the data that was to be written in the specific area in any one of the areas 586 to 1023 constituting the exchange area 1002. The FPGA 114 performs “determination of whether or not error data can be restored” depending on whether or not the data can be restored by the parity data generated by the FPGA 114. In addition, [2.4.2. As described in the data transfer units (TRN) 202, 203], the data transfer units 202, 203 of the FPGA 114 generate parity data.
  • TRN data transfer units
  • the FPGA 114 stores data stored in the volatile memory 113 on the basis of writing data in “area (AREA) 0 to area (AREA) 1023” in the memory chips 301 and 302. Write.
  • “Writing standard” means “determination of whether or not error data can be restored” and “rewrite to the replacement area when it is judged that error data cannot be restored”.
  • FIG. 5 is a configuration diagram of the small area 501 of the nonvolatile memory 115 according to the present embodiment.
  • the small area 501 is composed of 16 “Pages”.
  • the size of the small area 501 is 32 kBytes.
  • Each “area” of the nonvolatile memory 115 is composed of 64 small areas (such as the small area 501).
  • the page data 504 to 510, 512 to 518 and the parity data 511 and 519 stored in the 16 “Pages” of the small area 501 constitute stripes 502 and 503.
  • the stripe 502 is composed of Page data 504 to 510 and parity data 511.
  • the stripe 503 is composed of Page data 512 to 518 and parity data 519.
  • the stripe 502 has a so-called (7 + 1) RAID 5 configuration based on the Page data 504 to 510 and the parity data 511.
  • the stripe 502 is configured by page data 504 to 510 and parity data 511 stored in “Page” in an area (“area”) in which the FPGA 114 writes data to the nonvolatile memory 115 according to a single instruction from the CPU 112. Yes.
  • the stripe 502 is a stripe that forms RAID 5 with Page data stored in a predetermined “Page” in each of “Die 313 to 320” indicating physically separated units. In other words, the “Page” storing the Page data 504 to 510 and the parity data 511 constituting the stripe 502 is physically separated (as a hardware configuration).
  • nonvolatile memory 115 is a NAND flash memory
  • errors such as data writing failure are likely to occur in units of Dies separated as a hardware configuration.
  • it is more advantageous to form a RAID 5 stripe by using the Page data stored in “Pages” belonging to different “Dies” as described above.
  • the page data 504 to 510 and the parity data 511 constituting the stripe 502 are a plurality of data buffers provided in the nonvolatile memory 115 and transferred via different data buffers.
  • the stripe 503 has a (7 + 1) RAID 5 configuration based on the Page data 512 to 518 and the parity data 519.
  • the stripe 503 is also composed of page data 512 to 518 and parity data 519 stored in “Page” in an area (“area”) in which the FPGA 114 writes data to the nonvolatile memory 115 in response to a single instruction from the CPU 112. Yes.
  • the stripe 503 is a stripe that configures RAID 5 with Page data stored in a predetermined “Page” in each of “Die 313 to 320” indicating physically separated units.
  • FIG. 6 is a configuration diagram of the Page 600 according to the present embodiment.
  • Page 600 is an area equivalent to “Page” shown in FIGS. 4 and 5, and is an area in the nonvolatile memory 115.
  • the page 600 includes main sectors (main-sectors) 601 to 604 and spare sectors (spare-sectors) 605 to 608.
  • Main data indicating the original user information of the Page data is stored in each of the main sectors 601 to 604.
  • the page 600 stores four main data.
  • the size of the main data is 512 bytes.
  • Each of spare sectors (spare-sectors) 605 to 608 stores spare data relating to the consistency of main data.
  • the page 600 stores four spare data.
  • the size of the spare data is 16 bytes.
  • FIG. 7 is a configuration diagram of a spare sector 700 according to the present embodiment.
  • the spare sector 700 is an area equivalent to the spare sectors 605 to 608 shown in FIG. 6, and is an area in the nonvolatile memory 115.
  • the spare sector 700 includes an invalid area 701, a logical sector 702, a reserve area 703 and 705, an ECC area 704, and a user area 706.
  • the invalid area 701 stores information indicating whether or not the main sector corresponding to the spare sector 700 is defective when the nonvolatile memory 115 is shipped from the factory.
  • the logical sector (Logical-sector) 702 stores information for identifying the spare sector 700.
  • the Reserve areas 703 and 705 are spare empty areas.
  • the ECC area 704 is an area for storing ECC data generated in the nonvolatile memory 115.
  • the ECC data is data for correcting a bit error of the main data.
  • the User area 706 stores CRC data or AID data.
  • FIG. 8 is a hardware configuration diagram of the Die 313 according to the present embodiment.
  • the other Dies 314 to 320 have the same hardware configuration as the Die 313.
  • Die 313 is a portion surrounded by a dotted line in FIG. The Die 313 performs data transfer with the FPGA 114 via the host interface 801.
  • the Die 313 includes a register (Internal Registers) 802, a buffer memory (Buffer RAM) 803, a state machine (State Machine) 807, an error correction circuit (Error Correction Logic) 809, and a nonvolatile memory array 810.
  • the buffer memory 803 includes a boot buffer (Boot RAM) 804 and data buffers (Data RAM) 805 and 806.
  • the state machine 807 holds a boot loader 808.
  • the boot loader 808 is a program for starting the Die 313 by reading the control program from the register 802 into the state machine 807 when the Die 313 starts data transfer control.
  • the register 802 stores an address, a command, a configuration (setting information), an error log for data writing / reading, and the like.
  • the state machine 807 reads these addresses, commands, and configurations from the register 802 and performs transfer control.
  • the address is an address of data in the nonvolatile memory array 810.
  • the command is an instruction command issued by the Die 313 when controlling data transfer.
  • the nonvolatile memory array 810 is composed of 2048 “Blocks” shown in FIG. 4 and is a data storage unit.
  • the Die 313 stores data via the data buffer 805 in Block 0, Block 2, Block 4, Block 6,..., Block 2046 (a part of the nonvolatile memory array 810) belonging to the Die 313 in FIG.
  • the Die 313 stores data in the Block 1, Block 3, Block 5, Block 7,..., Block 2047 belonging to the Die 313 in FIG. This means that the Die 313 stores data via the data buffer 805 for even-numbered blocks. For odd-numbered blocks, Die 313 means that data is stored via the data buffer 806.
  • the Die 313 stores data in the nonvolatile memory array 810 using two buffers of data buffers 805 and 806.
  • the Die 313 holds data in the data buffers 805 and 806 in units of “Page” shown in FIG.
  • the state machine 807 of the Die 313 transfers data to the nonvolatile memory array 810 via the data buffers 805 and 806. In other words, the Die 313 transfers data to the nonvolatile memory array 810 via the data buffers 805 and 806 in units of “Page”.
  • the state machine 807 transfers data to the nonvolatile memory array 810 via the data buffer 805, and the state machine 807 holds data to be transferred next to the nonvolatile memory array 810 in the data buffer 806.
  • the Die 313 can efficiently store data in the nonvolatile memory array 810.
  • “the next data to be transferred to the non-volatile memory array 810” means “after the state machine 807 has completed transferring the data held in the data buffer 805 to the non-volatile memory array 810, the state machine 807 subsequently transfers the non-volatile memory. Data to be transferred to the array 810 ”.
  • the state machine 807 transfers data to the nonvolatile memory array 810 via the data buffer 806, and the state machine holds data to be transferred to the nonvolatile memory array 810 in the data buffer 805.
  • the other Dies 314 to 320 also include a data buffer corresponding to the data buffers 805 and 806 and a nonvolatile memory array corresponding to the nonvolatile memory array 810, respectively. Each of the Dies 314 to 320 also transfers the data in units of “Page” to the nonvolatile memory arrays included in each of the Dies 314 to 320 by using the data buffers provided therein.
  • the non-volatile memory 115 has RAID 5 stripes (stripes 502, 503, etc.) based on page data and parity data stored in a predetermined “Page” in each of “Die 313 to 320” indicating physically separated units. Configure. That is, the nonvolatile memory 115 makes redundant data (Page data) transferred via physically different data buffers (configuration of RAID 5). The nonvolatile memory 115 forms a RAID 5 stripe (stripe 502, 503, etc.) in a predetermined data unit, so that even if one data (Page data) in the stripe (stripe 502, 503, etc.) has an error, it can be restored. .
  • the FPGA 114 when the FPGA 114 can restore the error data from the redundant configuration of data in the nonvolatile memory 115, even if an error occurs in the process of transferring the data from the volatile memory 113 to the nonvolatile memory 115, the FPGA 114 may Data (about 2 MBytes of data) can be transferred to the nonvolatile memory 115 without newly writing back the data that has started to be transferred from the beginning. This is because after the FPGA 114 completes writing the data into the nonvolatile memory 115, the error data may be restored.
  • the boot buffer 804 is a storage area for temporarily storing information for starting the Die 313.
  • the error correction circuit 809 is a circuit that corrects data having a transfer error in the Die 313.
  • the nonvolatile memory 115 includes a plurality of data buffers. An area (area for storing data) in the nonvolatile memory 115 is allocated to each data buffer.
  • the FPGA 114 stores data in an area (an area for storing data) of the nonvolatile memory 115 allocated to each data buffer via the plurality of data buffers included in the nonvolatile memory 115.
  • the FPGA 114 continuously writes (stores) a certain amount of data in the nonvolatile memory 115 in accordance with an instruction from the CPU 112.
  • the time required for the FPGA 114 to write data in the nonvolatile memory 115 can be shortened. This is because there are fewer instructions from the CPU 112 to the FPGA 114 in order for the FPGA 114 to write more data into the nonvolatile memory 115.
  • the FPGA 114 writes more data to the nonvolatile memory 115 by one instruction, the higher the probability that an error will occur in the data writing process.
  • the FPGA 114 rewrites the data from the beginning according to the instruction again. For this reason, if the write back increases due to the occurrence of an error, it takes much time for the FPGA 114 to write (save) the data to the nonvolatile memory 115.
  • the FPGA 114 writes data back to the original area of the nonvolatile memory 115 again, it is data that has started to be written to the nonvolatile memory 115 according to an instruction from the CPU 112 and has been successfully written.
  • the deleted data must be deleted from the nonvolatile memory 115 and then written back again. Therefore, it takes time for the FPGA 114 to delete (erase) data that has been successfully written from the nonvolatile memory 115 before the error occurred.
  • the FPGA 114 performs data write management for each instruction. The FPGA 114 writes data to the nonvolatile memory 115 for every fixed amount of data. When an error occurs, the FPGA 114 deletes data that has been successfully written within the range of the fixed data amount in which the error has occurred.
  • the FPGA 114 has a redundant configuration in a certain data unit (stripe unit such as stripes 502 and 503) in the data continuously written in the nonvolatile memory 115 by the instruction from the CPU 112. That is, the FPGA 114 generates parity data for each fixed amount of data transferred to the nonvolatile memory 115, stores the data in the nonvolatile memory 115, and stores the parity data in the nonvolatile memory 115.
  • stripe unit such as stripes 502 and 503
  • the FPGA 114 continuously writes a certain amount of data to the nonvolatile memory 115 in accordance with an instruction from the CPU 112. Even if an error occurs in the process of writing data to the nonvolatile memory 115 by the FPGA 114, if the FPGA 114 can restore the error data by using the parity data, the FPGA 114 rewrites from the first data that is started to be written by the instruction from the CPU 112. Do not return. The FPGA 114 continuously writes the remaining data instructed by the CPU 112 to the nonvolatile memory 115 even after the error is detected.
  • the FPGA 114 determines that an error that occurred during the process of writing data to the nonvolatile memory 115 cannot be restored using the parity data, the FPGA 114 uses another area of the nonvolatile memory 115 (this embodiment is described in FIG. 10). In the “exchange area 1002” etc.), the data is rewritten from the beginning.
  • the disk array device 100 can reduce data rewriting due to an error in the middle of data writing without reducing the amount of data continuously written to the nonvolatile memory 115 by the FPGA 114 according to an instruction from the CPU 112. Furthermore, the disk array device 100 can also reduce the time for deleting (erasing) data that has been successfully written before the occurrence of an error. The disk array device 100 can save data held in the volatile memory 113 of the disk controller 105 at high speed by the nonvolatile memory 115.
  • the FPGA 114 multiplexes the defect management table 218 and writes it in “Block 0” of the nonvolatile memory 115. Then, the FPGA 114 stores and manages a plurality of generations of defect management tables 218 in the nonvolatile memory 115. Then, when the FPGA 114 saves the data in the volatile memory 113 to the nonvolatile memory 115, the FPGA 114 (more specifically, the transfer control unit 208) reads the defect management table 218 from the nonvolatile memory 115. The transfer control unit 208 checks the CRC data 903 of the read defect management table 218 to determine whether or not the defect management table 218 is broken.
  • the transfer control unit 218 reads another multiplexed defect management table 218 and checks the CRC data.
  • the transfer control unit 202 checks the CRC data of all the defect management tables 218 multiplexed and determines that all the defect management tables 218 are broken, the previous generation defect management table is read.
  • the transfer control unit 218 checks the CRC data of the previous generation defect management table to determine whether or not the previous generation defect management table is broken.
  • the transfer control unit 208 checks the defect management table until it determines that there is an unbroken defect management table by checking the CRC data, and reads the unbroken defect management table.
  • the FPGA 114 can surely read the defect management table from the nonvolatile memory 115, the data held in the volatile memory 113 can be surely saved in the nonvolatile memory 115.
  • the DE port 116 is connected to the disks 107 to 110.
  • the DE port 122 is also connected to the disks 107-110.
  • the DE port 116 is a port for expanding a DE (drive enclosure).
  • the DE port 116 can connect a maximum of nine DEs in a cascaded manner. For example, six disks can be connected to one DE. Therefore, the DE port 116 can connect a maximum of 120 disks via the DE.
  • the disks 107 to 110 connected to the DE port 116 are representatively shown.
  • the CPU 112 instructs the data write back unit 204 to write back the data saved in the nonvolatile memory 115 to the volatile memory 113.
  • the data write-back unit 204 transfers the data held in the nonvolatile memory 115 to the communication unit 201 via the buffer 217. Then, the communication unit 201 transfers the data to the volatile memory 113 via the CPU 112.
  • the table management unit 206 After the data write-back unit 204 completes transferring data from the nonvolatile memory 115 to the volatile memory 113, the table management unit 206 resets the Dirty flag 901 of the defect management table 218 (all the flags constituting the Dirty flag 901 are set to “0”). return). Similarly, the table management unit 207 resets the Dirty flag of the defect management table 219. As a result, the disk array device 100 according to the present embodiment can effectively use the resources (capacity) of the nonvolatile memory 115.
  • the area where the Dirty flag is “1” is an area where the data transfer units 202 and 203 have failed to write data due to other than the breakage of the hardware of the nonvolatile memory 115.
  • the area where the Dirty flag is “1” is an area where data can be written if the data transfer units 202 and 203 try to write data again. Therefore, when the table management units 206 and 207 reset the Dirty flag to “1” at the time of recovery from the power failure, when the power failure occurs again, the data transfer units 202 and 203 have the Dirty flag set to “1”. Data can also be written (evacuated) to other areas.
  • the backup method according to the present embodiment is a backup method for a disk array device. Therefore, the backup method according to the present embodiment is extremely useful for saving data in the volatile memory mounted on the controller module when a power failure occurs.

Abstract

  (課題) 本実施例に係るバックアップ方法は、ディスクコントローラの揮発メモリに保持しているデータを不揮発メモリに確実に退避し、バックアップの高信頼化を図ることを目的とする。 (解決手段) 本本実施例におけるバックアップ方法は、ディスクアレイ装置を制御し、揮発メモリと不揮発メモリを有するコントローラが、該揮発メモリに保持するデータを該不揮発メモリに退避するバックアップ方法において、前記不揮発メモリにおける不良領域を示す複数の不良管理テーブルの情報に誤り検出符号を付加し、前記誤り検出符号を付加した複数の不良管理テーブルを該不揮発メモリに格納し、前記複数の不良管理テーブルのうち選択した一つの前記不良管理テーブルにおけるエラーの有無を前記誤り検出符号により判別し、前記エラーがあると判別した場合、選択していない不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避することを特徴とする。  

Description

バックアップ方法、格納方法、及びディスクアレイ装置
 本発明は、RAIDに代表されるディスクアレイ装置のバックアップ制御に関する。
 RAIDは、停電などのシステム外部から電力供給ができなくなった場合に備えてバックアップユニット(バッテリー)を有している。停電が発生した場合、コントローラモジュールに搭載する揮発メモリに保持しているデータを保護するため、RAIDはバックアップユニットから揮発メモリに電力供給する。バックアップユニットは、RAIDが停電から復旧するまでの間、揮発メモリに電力を供給し続ける。それによって揮発メモリはデータを保持し続ける。
 しかしながらバックアップユニットの電源容量には限りがある。そのため揮発メモリのデータ保証は、バックアップユニットの電気容量に左右される。バックアップユニットの容量を増大すれば、それに応じてデータ保証の信頼度を増すことはできる。しかしながらRAIDがバックアップユニットの数を増やすと、コストの増大、RAID装置の大型化といった問題が新たに発生する。また停電から復旧後、バックアップユニットを再充電するまでの間、バックアップの保証ができないため、RAIDシステムはライトスルー状態(ディスクに書き込めたら完了の報告をする)となる。その結果RAIDシステムの処理能力が著しく低下するといった問題もある。
 したがって、コントローラモジュールは、揮発メモリに保持しているデータを不揮発メモリに退避するバックアップ方法が考えられており、不揮発メモリにいかにして確実にデータを退避するかが問題となる。
 RAIDシステムのバックアップ制御に関して以下の特許文献が存在する。
特開平05-346889号公報 特開2006-277395号公報 特開2004-318465号公報 特開平09-305491号公報
(発明が解決しようとする課題)
 そこで本発明に係るバックアップ方法は、ディスクコントローラの揮発メモリに保持しているデータを不揮発メモリに確実に退避し、バックアップの高信頼化を図ることを目的とする。
(課題を解決するための手段)
 本実施例の一観点によれば、本実施例におけるバックアップ方法は、ディスクアレイ装置を制御し、揮発メモリと不揮発メモリを有するコントローラが、該揮発メモリに保持するデータを該不揮発メモリに退避するバックアップ方法において、前記不揮発メモリにおける不良領域を示す複数の不良管理テーブルの情報に誤り検出符号を付加し、前記誤り検出符号を付加した複数の不良管理テーブルを該不揮発メモリに格納し、前記複数の不良管理テーブルのうち選択した一つの前記不良管理テーブルにおけるエラーの有無を前記誤り検出符号により判別し、前記エラーがあると判別した場合、選択していない不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避することを特徴とする。
(発明の効果)
 本実施例に係るバックアップ方法によれば、ディスクコントローラの揮発メモリに保持するデータを不揮発メモリに転送する。ディスクコントローラは不揮発メモリの不良ブロックを示す不良管理テーブルを生成し、不揮発メモリに多重化して格納する。ディスクコントローラは、読み出した不良管理テーブルが壊れている場合、多重化してある他の不良管理テーブルを読み出して、データを不揮発メモリに格納することによって、ディスクアレイ装置のバックアップ高信頼化を図ることができる。
本実施例に係るディスクアレイ装置100の構成図である。 本実施例に係るFPGA114のハードブロック図である 本実施例に係る不揮発メモリ115の構成を示す図である。 本実施例に係る不揮発メモリ115に係るBank305~308の詳細図である。 本実施例に係る不揮発メモリ115の小エリア501の構成図である。 本実施例に係るPage600の構成図である。 本実施例に係るスペアセクタ700の構成図である 本実施例に係るDie313のハード構成図である。 本実施例に係る不良管理テーブル218の一例である 本実施例に係るエリア(AREA)0~エリア(AREA)1023の概念図である。 本実施例に係るデータ転送部202の処理フローチャートである。 本実施例に係る不良管理テーブル218の構築シーケンス図である。 本実施例に係る不良管理テーブル218の処理シーケンスに係る図である。 本実施例に係る不良管理テーブル218の処理シーケンスに係る図である。 本実施例に係る本実施例に係る転送制御部208の不良管理テーブル218の読み出しシーケンス図である。 本実施例に係る停電した場合のCPU112とFPGA114のシーケンス図である。 本実施例に係るBank305~308の概念図である。
符号の説明
  100…ディスクアレイ装置
  101…電源ユニット
  102…電源ユニット
  103…バックアップユニット
  104…バックアップユニット
  105…コントローラモジュール(CM)
  106…コントローラモジュール(CM)
  107…ディスク
  108…ディスク
  109…ディスク
  110…ディスク
  111…制御回路
  112…CPU
  113…不揮発メモリ
  114…FPGA
  115…不揮発メモリ
  116…DEポート
  117…制御回路
  118…CPU
  119…揮発メモリ
  120…FPGA
  121…不揮発メモリ
  122…DEポート
  201…通信部
  202…データ転送部
  203…データ転送部
  204…データ書き戻し部
  205…通信情報管理部
  206…テーブル管理部
  207…テーブル管理部
  208…転送制御部
  209…転送制御部
  210…メモリ制御部
  211…メモリ制御部
  212…データ変換制御部
  213…データ変換制御部
  214…PCI-Xインターフェース
  215…バッファ
  216…バッファ
  217…バッファ
  218…不良管理テーブル
  219…不良管理テーブル
  220…レジスタ
 [1.ディスクアレイ装置100]
 図1は本実施例に係るディスクアレイ装置100の構成図である。
 ディスクアレイ装置100は電源ユニット(power supply unit)101、102、バックアップユニット(backup unit)103、104、CM(controller module)105、106、ディスク(disk)107、108、109、110から構成されている。
 CM105、106はホストコンピュータ(図示せず)からの書き込み/読み出し命令により、ディスク107~110にアクセスし、データの書き込み/読み出しを実行する。
 [1.1.電源ユニット101、102]
 外部電源(external source)は電源ユニット101、102を介して、ディスクアレイ装置100に電力を供給する。ディスクアレイ装置100は電源ユニット101、102の二つのAC/DC電源ユニットを有している。これは一方の電源ユニットが故障してもディスクアレイ装置100に外部電源から電力を供給するためである。つまりディスクアレイ装置100は電源ユニット101、102の冗長構成をとることによって、ディスクアレイ装置100は電源ユニットにおける障害に対応することができる。また電源ユニット101、102はスタンバイ電源とシステム電源を生成している。スタンバイ電源はディスクアレイ装置100を起動するために必要最小限の電力を供給する5V(ボルト)の電源である。システム電源はディスクアレイ装置100を運転するために必要な電力を供給する12V(ボルト)電源である。ディスクアレイ装置100が通常運用していない場合は電力を削減するため、電源ユニット101、102はスタンバイ電源のみ出力し、ディスクアレイ装置100は待機状態となっている。ディスクアレイ装置100が通常運用時である場合、電源ユニット101、102はスタンバイ電源とシステム電源を出力する。そして電源ユニット101、102はバックアップユニット103、104に外部電源から電力を供給し、充電している。
 [1.1.1.停電発生時]
 停電が発生して外部電源からディスクアレイ装置100への電力供給がなくなると、電源ユニット101はシステム電源を断つことをCM105に通知する。同様に電源ユニット102はシステム電源を断つことをCM106に通知する。
 CM105、106それぞれに搭載する制御回路(control circuit)111、117は、電源ユニット101、102に外部電源から供給がないことを判別する。そして制御回路111、117は、CPU112、118に停電状態であることを通知すると共に、制御回路111、117はバックアップユニット103、104に対して、電力供給することを指示する。バックアップユニット103はCM105に電力を供給し、バックアップユニット104はCM106に電力を供給する。
 CM105は、バックアップユニット103から供給される電力を用いて、停電発生時に揮発メモリ113が保持するデータを不揮発メモリ115に退避する。同様にしてCM106は、バックアップユニット104から供給される電力を用いて、停電発生時に揮発メモリ119が保持するデータを不揮発メモリ121に退避する。
 [1.2.バックアップユニット103、104]
 またディスクアレイ装置100は、バックアップユニット103、104も冗長構成をとっている。本実施例におけるバックアップユニット103はCM105に電力を供給する。バックアップユニット103はCM106に電力を供給しない。また本実施例におけるバックアップユニット104はCM106に電力を供給する。バックアップユニット104はCM105に電力を供給しない。本実施例におけるディスクアレイ装置100では、バックアップユニット103がCM105に電力を供給し、バックアップユニット104がCM106に電力を供給する。これはバックアップユニット103、104それぞれがCM105、106に供給する電力量は大きい。つまりバックアップユニット103、104の双方がCM105、106に電力を供給する構成にすると以下の問題ある。バックアップユニット103、104のいずれか一方のバックアップユニットが故障してCM105、106に電力供給できなくなると、残りのバックアップユニット1つだけではCM105、106の両方に一度に十分に電力を供給できない。その結果CM105、106の両方が電力不足で揮発メモリ113、119に保持するデータを不揮発メモリ115、121に退避できなくなってしまう。そのため本実施例ではバックアップユニット103、104のいずれかが故障しても残りのバックアップユニットが対応するCMに確実に電力を供給できるように、バックアップユニット103、104とCM105、106は1対1の対応関係に接続する。
 バックアップユニット103、104はコンデンサであり、一度に多くの電力を放出できる。またバックアップユニット103、104はコンデンサであり、バックアップユニット103、104は、再充電を短時間で行うことができる。具体的にはディスクアレイ装置100は、バックアップユニット103、104の充電量が0%の状態から満充電の状態まで2分以内で充電することができる。本実施例のディスクアレイ装置100がバックアップユニット103、104を再充電する場合、バックアップユニット103を充電した後、バックアップユニット104を充電する。つまりディスクアレイ装置100は、バックアップユニット103を充電する間の時間と、104を充電する時間とが重ならないように制御する。ディスクアレイ装置100はコンデンサであるバックアップユニット103、104を急速充電するため、ディスクアレイ装置100がバックアップユニット103、104それぞれを充電する時間が重なると、電源ユニット101、102それぞれがバックアップユニット103、104それぞれに供給する電流が許容量を超えてしまうおそれがあるからである。もちろんディスクアレイ装置100が充電する順序は、バックアップユニット103からでもバックアップユニット104からでもよい。
 また仮にディスクアレイ装置100が鉛蓄バッテリー、ニッケル水素バッテリー、又はリチウムイオンバッテリーで同じ電気容量を充電する場合には、鉛蓄バッテリーの充電量が0%の状態から満充電の状態まで数時間かかってしまう。したがって上記二次バッテリーに比べて、再充電にかかる時間が短いコンデンサをバックアップユニット103、104に適用することによって、ディスクアレイ装置100はライトスルー状態で実行する時間帯を大幅に低減することができる。
 [2.CM105、106]
  本実施例に係るCM105は制御回路111、CPU(central processingunit)112、揮発メモリ(volatile memory)113、FPGA(Field Programmable Gate Array)114、不揮発メモリ(nonvolatile memory)115、DEポート(DE port)116、EEPROM181から構成されている。なおDEはドライブエンクロージャーの略称である。同様にしてCM105は制御回路117、CPU118、揮発メモリ119、FPGA120、不揮発メモリ121、DEポート122から構成されている。なお具体的には、本実施例において揮発メモリ113、119はキャッシュメモリであり、不揮発メモリ115、121はNAND型フラッシュメモリである。
  揮発メモリ113、119はキャッシュメモリに限らず、電力供給を断つと記憶内容が失われるメモリであればあればよい。同様に不揮発メモリ115、121もフラッシュメモリに限られることはなく、電力供給を断っても記憶内容を失わないメモリであればよい。
 [2.1.制御回路111、117]
 通常運転時、外部電源は電源ユニット101、102を介してそれぞれ、制御回路111、117に電力を供給する。電源ユニット101、102はスタンバイ電源とシステム電源を生成している。また停電時には、外部電源は、電源ユニット101、102に電力を供給できない。そのためバックアップユニット103、104はそれぞれ、制御回路111、119に電力を供給する。CM105、106を構成する搭載ユニット(制御回路111、117、CPU112、118、揮発メモリ113、119、FPGA114、120、不揮発メモリ115、121、DEポート116、122)は電源ラインに接続されており、電源ラインによって電力供給されている。
 停電が発生して外部電源からディスクアレイ装置への電力供給がなくなると、電源ユニット101、102が生成するスタンバイ電源、システム電源がなくなる。これにより一定時間経つと、電源ラインの電圧は12Vよりも低下する。それに伴ってCM105、106の電圧も低下する。
 電源ユニット101、102はCM105、106にシステム電源の電力供給を断つことを通知する。制御回路111は、CM105内の電圧が11V以下になった場合、CPU112に停電状態である旨を通知する電源ユニット101、102の電圧低下に伴い、バックアップユニット103、104から電力供給される。同様に制御回路117は、CM106内の電圧が11V以下になった場合、CPU118に停電状態である旨を通知する電源ユニット101、102の電圧低下に伴い、バックアップユニット103、104から電力供給される。CPU112はCPU112に接続するEEPROM181に格納している停電フラグをONにする(停電フラグを「1」にする)。停電フラグがONであることはディスクアレイ装置100が停電状態であることを意味する。EEPROM181はCPU112に接続しているため、CPU112がEEPROM181に高速にアクセスすることができる。バックアップユニット103、104からの電力供給を開始するタイミングは、CM105、106内の電圧が一定の閾値以下になったときである。この電圧の値(閾値)は、ディスクアレイ装置100が必要とする電力量に応じて変えることが可能である。
 [2.2.CPU112、118]
 CPU112は、CM105が実行する処理を制御するユニットである。同様にCPU118も、CM105が実行する処理を制御するユニットである。CPU112は、DEポート116を介して、ホストコンピュータから書き込み命令のあったデータをディスク107~110に書き込む制御を行う。CPU112がデータを書き込む先は、ホストコンピュータからの書き込み命令に応じて、ディスク107~110のすべての場合もあれば、ディスク107~110のうちの一部分の場合もある。またCPU112は、DEポート116を介して、ホストコンピュータから読み出し命令のあったデータをディスク107~110から読み出す制御を行う。同様にしてCPU118は、DEポート122を介して、ホストコンピュータから書き込み命令のあったデータをディスク107~110に書き込む制御を行う。CPU118がデータを書き込む先は、ホストコンピュータからの書き込み命令に応じて、ディスク107~110のすべての場合もあれば、ディスク107~110のうちの一部分の場合もある。またCPU118は、DEポート122を介して、ホストコンピュータから読み出し命令のあったデータをディスク107~110から読み出す制御を行う。
 本実施例において、CM105とCM106は冗長構成になっている。本実施例ではCM105とCM106は主従の関係になっている。本実施例では例えばCM105がマスターであり、CM106がスレーブである。CM105とCM106が正常に稼動している場合、CM105がディスク107~110にデータを書き込み、またはディスク107~110からデータを読み出す。そしてCM105はCM106と同期をとり、CM105が処理したデータをCM106に通知して、揮発メモリ119にコピーする。
 CM105が故障した場合、CPU102は、CM105が故障の旨をCPU118に通知して、CM106はディスク107~110へデータの書き込む処理、またはディスク107~110からデータを読み出す処理をする。
 またCPU112は、制御回路111からディスクアレイ装置100が停電である旨の通知を受けると、揮発メモリ113に保持されているデータの退避処理を制御する。CPU112は、FPGA114の通信部201に揮発メモリ113内のデータを不揮発メモリ115に退避することを指示する。同様にCPU118は、制御回路117からディスクアレイ装置100が停電である旨の通知を受けると、揮発メモリ119に保持されているデータの退避処理を制御する。CPU118は、FPGA120の通信部201に揮発メモリ119内のデータを不揮発メモリ121に退避することを指示する。CPU112は、FPGA114を制御して揮発メモリ113のデータを不揮発メモリ115に退避する。同様にしてCPU118はFPGA120を制御して揮発メモリ119のデータを不揮発メモリに退避する。
 [2.3.揮発メモリ113、119]
 揮発メモリ113は、ホストコンピュータから書き込み命令のあったデータ、又はホストコンピュータから読み出し命令のあったデータを一時的に保持する。CM105は、揮発メモリ113にデータを書き込んだ段階で、ホストコンピュータに完了応答する。CM105は揮発メモリ113を有することによって、ホストコンピュータの動作とは非同期に揮発メモリ113上のデータをディスク107~110に書き込むいわゆるライトバック動作を行うことができ、高速にデータ処理をすることができる。
 同様にしてCM106も、揮発メモリ119にデータを書き込んだ段階で、ホストコンピュータに完了応答する。CM106は揮発メモリ119を有することによって、ライトバック動作するとこができ高速にデータ処理することができる。
 [2.4.FPGA114、120]
 図2は本実施例に係るFPGA114のハードブロック図である。
 FPGA114は、通信部(PCL)201、データ転送部(TRN)202、203、データ書き戻し部(RCV)204、通信情報管理部(DQR)205、テーブル管理部(TBM)206、207、転送制御部(UCE)208、209、メモリ制御部(ONC)210、211、データ変換制御部(NFC)212、213から構成されている。FPGA120も同様の構成をしている。以下、FPGA114のハード構成について説明する。
 [2.4.1.通信部(PCL)201]
 通信部201は、PCI-Xインターフェース214の制御を行う。そして通信部201は、CPU112とFPGA114のデータ転送の制御を行う。FPGA114は、PCI-Xインターフェース214を用いて、CPU112とデータの転送を行う。通信部201は、CPU112とFPGA114との間でのデータ転送で発生したエラーを検出する。また通信部201は、CPU112から揮発メモリ113内のデータを不揮発メモリ115に退避する指示を受信する。
 また通信部201はレジスタ220を有している。レジスタ220には、FPGA114が処理するデータ、FPGA114が実行する処理の設定事項、通信情報管理部205で管理する通信情報などが格納されている。FPGA114は、これらのデータ(FPGA114が処理するデータ、FPGA114が実行する処理の設定事項等)を用いてCPU112と不揮発メモリ115とのデータ転送を制御する。
 [2.4.2.データ転送部(TRN)202、203]
 CM105への電力供給が外部電源からバックアップユニット103に切り替わった場合、データ転送部202、203は揮発メモリ113に保持するデータを不揮発メモリ115に転送制御を実行する。データ転送部202、203は通信部201を介して、CPU112からデータ退避の指示を受信し、データ転送部202、203はデータの転送制御を実行する。
 データ転送部202は、バッファ215を有している。同様にデータ転送部203は、バッファ216を有している。データ転送部202は、揮発メモリ113が保持するデータを、バッファ215を介してデータ変換部212に転送する。同様にデータ転送部203は、揮発メモリ113が保持するデータを、バッファ216を介してデータ変換部213に転送する。
 またデータ転送部202は、パリティデータとCRCデータを生成する。同様にデータ転送部203も、パリティデータとCRCデータを生成する。パリティデータは、不揮発メモリ115にデータを格納する所定の単位(Page)である7つのPageデータの排他的論理和(EXOR)を計算したデータである。本実施例でいう「Page」は、不揮発メモリ115上でデータを管理するためのデータの単位である。そしてPageデータは、そのPage単位の大きさのデータである。より具体的には、Pageデータは図4中に示す「Page」に格納されるデータである。本実施例においてPageデータは2kByteである。
 データ転送部202は、CPU112からPCI-Xインターフェース214を介して受信するPageデータをバッファ215に一時的に保持する。続いてデータ転送部202は、CPU112から受信する次のPageデータを受信し、バッファ215に保持しているPageデータと次のPageデータの排他的論理和を計算して中間結果を算出する。データ転送部202は、算出した中間結果をバッファ215に保持する。さらにデータ転送部202はCPU112からPageデータを受信し、そのPageデータとバッファ215に保持する中間結果との排他的論理和を計算し、新たな中間結果を算出する。データ転送部202はバッファ215に保持する新たな中間結果に更新する。以下同様にしてデータ転送部202が受信するPageデータと中間結果の排他的論和を計算してゆき、結果として7つのPageデータの排他的論理和であるパリティデータを算出する。データ転送部203もデータ転送部202と同様の手順によりパリティデータを算出する。
 またデータ転送部202はCPU112から受信するPageデータ内の4つのmainデータの整合性をチェックするためのCRCデータを生成する。同様にデータ転送部203もCPU112から受信するPageデータ内の4つのmainデータの整合性をチェックするためのCRCデータを生成する。本実施例においてCRCデータは2Byteの大きさであり、mainデータに付加してPageデータとして管理する。CRCデータは、データ転送部202、203がPageデータ単位で演算して生成するデータである。CRCデータは、対応するPageデータの転送においてエラーが発生しているか否かを示すデータである。つまりCRCデータは、Pageデータ内の4つのmainデータの整合性をチェックするためのデータである。なお[2.5.3.1.Page600]において、図6を用いてPage600の構成を説明する。
 また本実施例において、FPGA114は2つのデータ転送部202、203を有している。これは揮発メモリ113に保持するデータをより高速に、短時間で不揮発メモリ115に退避することを実現するためである。
 図11は本実施例に係るデータ転送部(TRN)202の処理フローチャートである。
 データ転送部202は、通信情報管理部205に格納される設定値の中から転送長と揮発性メモリのアドレスを読み出す。そしてデータ転送部202は、テーブル管理部206内の不良管理テーブル218のポインタから、データを書き込むエリアを指定する(ステップS1101)。データ転送部202が指定するエリアは図10に示す論理エリア1001内のエリア0~アリア585のいずれかである。
 そしてデータ転送部202は、テーブル管理部206に格納される不良管理テーブル218を参照して、ステップS1101で指定したエリアにデータを書き込み可能であるか否かを判別する(ステップS1102)。不良管理テーブル218はDirtyフラグ901とInvalidフラグ902で構成されている。Dirtyフラグ901は、メモリチップ301、302の1024個の「エリア」それぞれにおける「デバイス(ハード自身)壊れ以外のエラー」の有無を識別するフラグである。Dirtyフラグ901の「1」は「デバイス(ハード自身)壊れ以外のエラー」があることを示し、「0」は「デバイス(ハード自身)壊れ以外のエラー」がないことを示す。「デバイス(ハード自身)壊れ以外のエラー」は、FPGA114がデータの書き込みを失敗(エラー)しても、書き込みをリトライすれば成功する可能性があるエラーのことである。
 Invalidフラグ902は、メモリチップ301、302の1024個の「エリア」それぞれにおける「デバイス(ハード自身)壊れに起因するエラー」の有無を識別するフラグである。Invalidフラグ902の「1」は「デバイス(ハード自身)壊れに起因するエラー」があることを示し、「0」は「デバイス(ハード自身)壊れに起因するエラー」がないことを示す。「デバイス(ハード自身)壊れに起因するエラー」は、FPGA114がデータの書き込みをリトライしても成功する可能性がないエラーのことである。指定したエリアに対応するDirtyフラグ901とInvalidフラグ902のいずれかが「1」である場合、データ転送部202はその指定したエリアにデータを書き込みできないと判別する。指定したエリアに対応するDirtyフラグ901とInvalidフラグ902のいずれもが「0」である場合、データ転送部202はその指定したエリアにデータを書き込みできると判別する。
 データ転送部202が、指定したエリアにデータを書き込みできないと判別する場合(ステップS1102 NO)、データ転送部202は再び不良管理テーブル218を参照してデータを書き込むエリアを新たに指定する(ステップS1101)。本実施例では、書き込みできないと判別したエリアの「次のエリア」を指定する。「次のエリア」とは、書き込みできないと判別したエリアを示すAIDをインクリメントした結果の「エリア」のことである。本実施例ではエリアは「数」であり、インクリメントするとは、「1」付加することである。
 データ転送部202が、指定したエリアにデータを書き込めると判別する場合(ステップS1102 YES)、データ転送部202はバッファ215を介してデータ変換部212に転送して、不揮発メモリ115にデータを書き込む。本実施例においてデータ転送部202は、「Page」単位でデータを揮発メモリ115に書き込む。換言すればデータ転送部202はPageデータを不揮発メモリ115の指定したエリアに書き込んでいく。より詳細には、Die313~320を構成するステートマシンが、データ転送部202が転送するPageデータを不揮発メモリアレイに格納する。なお図8がDie313の具体的な構成図である。Die313~320は、それぞれ2個のデータバッファ(データバッファ805、806)を有しており、Die313~320のステートマシンは、これらデータバッファを介して、データ転送部202が転送するPageデータを不揮発メモリアレイに格納する。
 そしてデータ転送部202は、そのPageデータの書き込みにおいてエラーが発生したか否かを判別する(ステップS1104)。データ転送部202は、Die313~320のステートマシンからのエラー通知を受信したか否かによってエラーの発生の有無を判別している。またデータ転送部202は、通信部201からのエラー通知を受信して、不揮発メモリ113とFPGA114間でのエラーを検出する。
 データ転送部202が「エラーなし」と判別する場合(ステップS1104 NO)には、不良管理テーブル218の指定したエリアに対応するDirtyフラグ901とInvalidフラグ902それぞれを「0」とする(ステップS1105)。ここでデータ転送部202が、指定したエリアにPageデータを書き込み開始した時点では、指定したエリアに対応するDirtyフラグ901とInvalidフラグ902はそれぞれ「0」である。そのためDirtyフラグ901とInvalidフラグ902の変更はない。
 データ転送部202は、不揮発メモリ115に書き込んだPageデータがその指定したエリアに書き込む最後のPageデータであるか否かを判別する(ステップS1106)。データ転送部202が最後のPageデータでないと判別する場合には(ステップS1106 NO)、データ転送部202は次のPageデータを指定したエリアに書き込む(ステップ1103)。データ転送部202が「次のPageデータ」を書き込む領域(「Page」)は、指定したエリア内において直前に書き込み完了したPageデータを格納するために用いたデータバッファとは異なるデータバッファに対応付けられた領域(「Page」)である。データバッファはDie313~320が有するデータバッファである。データ転送部202が最後のPageデータであると判別する場合には(ステップS1106 YES)、データ転送部202は処理を終了する。
 ステップS1106において、データ転送部202が「エラーあり」と判別する場合(ステップS1104 YES)には、さらにそのエラーしたデータが復元可能か否かを判別する(ステップS1107)。データ転送部202はエラーデータが復元可能か否かを、パリティデータ、CRCデータを用いてデータを復元可能か否かによって判別する。データ転送部202は、エラーデータが復元可能か否かの判別を、Pageデータが構成するストライプ中にすでにエラーデータ(他のPageデータ)があるか否かによって判別する。ストライプの具体的な構成例は図5に示すストライプ501、502である。データ転送部202がエラーデータを復元可能であれば(ステップS1107 YES)、データ転送部202は、他の領域(交換エリア1002)にCPU112から指示で書き込み開始した最初のデータから再び書き戻さなくてすむ。つまりデータ転送部202がエラーの復元可能か否かを判別することにより、復元可能なエラーを含む領域に書き込むデータを退避する交換エリアの領域を設ける必要がないので、交換エリア1002の容量を削減することができる。
 データ転送部202がエラーデータを復元可能と判別する場合には(ステップS1107 YES)、データ転送部202はCRCデータを壊して復元可能なエラーをマーキングしておく。ここでデータ転送部202は不良管理テーブル218を更新しない。データ転送部202は、データを書き戻すときに不良管理テーブル218を更新する(ステップS1108)。Dirtyフラグ901、又はInvalidフラグ902のいずれかを「1」にするかは、次のとおりである。エラーが不揮発メモリ115のハード自体の壊れに因るものでないのであれば、データ転送部202は指定したエリアのDirtyフラグ901を「1」とする。エラーが不揮発メモリ115のハード自体の壊れに因るものであれば、データ転送部202は指定したエリアのInvalidフラグ902を「1」とする。そしてデータ転送部202はそのPageデータが最後のPageデータであるか否かを判別する(ステップS1106)。
 またデータ転送部202がエラーデータを復元不可能と判別する場合も(ステップS1107 NO)、データ転送部202は不良管理テーブル218の指定したエリアに対応するDirtyフラグ901、又はInvalidフラグ902のいずれかを「1」とする(ステップS1109)。Dirtyフラグ901、又はInvalidフラグ902のいずれかを「1」にするかは、上記と同じ基準である。そしてデータ転送部202は交換エリア1002内のエリアを新たに指定する(ステップ1110)。データ転送部202は、テーブル管理部206に格納される不良管理テーブル218を参照して、ステップS1110で指定したエリアにデータを書き込み可能であるか否かを判別する(ステップS1111)。
 データ転送部202が、指定したエリアにデータを書き込みできないと判別する場合(ステップS1111 NO)、データ転送部202は再び不良管理テーブル218を参照してデータを書き込むエリアを新たに指定する(ステップS1110)。
 データ転送部202が、指定したエリアにデータを書き込めると判別する場合(ステップS1111 YES)、データ転送部202はバッファ215を介してデータ変換部212に転送して、不揮発メモリ115にデータを書き込む(ステップS1112)。ここでもデータ転送部202は、そのPageデータの書き込みにおいてエラーが発生したか否かを判別し、ステップ1104~1109と同等の処理をする(不図示)。具体的にはデータ転送部202が「エラーなし」と判別する場合には、不良管理テーブル218の指定したエリアに対応するDirtyフラグ901とInvalidフラグ902それぞれを「0」とする。データ転送部202が「エラーあり」と判別する場合には、さらにそのエラーしたデータが復元可能か否かを判別する。データ転送部202がエラーデータを復元可能と判別する場合には、データ転送部202はCRCデータを壊して復元可能なエラーをマーキングしておく。データ転送部202は不良管理テーブル218を更新しない。データ転送部202は、データを書き戻すときに不良管理テーブル218を更新する。またデータ転送部202がエラーデータを復元不可能と判別する場合も、データ転送部202は不良管理テーブル218の指定したエリアに対応するDirtyフラグ901、又はInvalidフラグ902のいずれかを「1」とする。Dirtyフラグ901、又はInvalidフラグ902のいずれかを「1」にするかは、上記と同じ基準である。そしてデータ転送部202は交換エリア1002内のエリアを再び指定する。
 データ転送部202は、不揮発メモリ115に書き込んだPageデータがその指定したエリアに書き込む最後のPageデータであるか否かを判別する(ステップS1113)。データ転送部202が最後のPageデータでないと判別する場合には(ステップS1113 NO)、データ転送部202は次のPageデータを指定したエリアに書き込む(ステップ1112)。データ転送部202が最後のPageデータであると判別する場合には(ステップS1113 YES)、データ転送部202は処理を終了する。
 またステップS1104においてデータ転送部202が「エラーあり」と判別する場合(ステップS1104 YES)、データ転送部202は、Dirtyフラグ901、又はInvalidフラグ902のいずれかを「1」として、不良管理テーブル218を更新する。そして転送制御部208は、更新した不良管理テーブル218を不揮発メモリ115に書き込む。ステップS1104においてデータ転送部202が「エラーあり」と判別するステップ(ステップS1104 YES)は、図16に記載のステップS1607に相当するステップである。
[2.4.3.データ書き戻し部(RCV)204]
 データ書き戻し部204は、復電時に不揮発メモリ115から揮発メモリ113にデータを転送する制御を行う。
 ディスクアレイ装置100が復電すると、CPU112は、FPGA114(より具体的にはFPGA114内のデータ書き戻し部204)に対して、不揮発メモリ115に退避したデータを揮発メモリ113に書き戻すことを指示する。そしてデータ書き戻し部204はCPU112から指示を受信して、データ書き戻し部204はデータの転送制御(不揮発メモリ115から揮発メモリ113へのデータ転送制御)を実行する。
 データ書き戻し部204はバッファ217を有している。データ書き戻し部204は、不揮発メモリ115が保持するデータを、バッファ217を介して通信部201に転送する。そして通信部201は、CPU112を介して、そのデータを揮発メモリ113に転送する。
 またデータ書き戻し部204は、不揮発メモリ115からメモリ制御部210、211、及びデータ変換制御部212、213を介して受信するPageデータのエラーを検出する。データ書き戻し部204はCRCデータをチェックして、データ転送部202、203が不揮発メモリ115に書き込んだデータとデータ書き戻し部204が読み出したデータとの整合性をチェックする。データ書き戻し部204がCRCデータのチェックにおいてエラーを検出した場合、検出したエラーデータを対応するパリティデータを用いて復元できるか判別する。データ書き戻し部204がエラーデータをパリティデータを用いて復元できると判別する場合には、データ書き戻し部204はエラーデータに対応するパリティデータを用いてそのエラーデータを復元する。
 ここでCRCデータはPageデータ毎にデータ転送部202、203が生成するデータである。データ書き戻し部204がCRCデータのチェックにおいてエラーを検出するということは、データ書き戻し部204が不揮発メモリ115から読み出したデータはデータ転送部202、203が不揮発メモリ115に書き込んだデータと整合性がとれていないということであるからである。
 [2.4.4.通信情報管理部(DQR)205]
 通信情報管理部205は、データ転送部202、203、及びデータ書き戻し部204の処理制御に使用する通信情報を保持する。データ転送部202、203、及びデータ書き戻し部204は、通信情報管理部205から通信情報を読み出して、それぞれの処理制御を実行する。
 通信情報は、処理を実行するために発行するコマンド、揮発メモリ113と不揮発メモリ115におけるメモリアドレス、揮発メモリ113と不揮発メモリ115との間で一度に転送するデータ量(転送長:transfer length)、AID(Area ID)から構成されている。
 通信情報は、処理を実行するために発行するコマンド、揮発メモリ113と不揮発メモリ115におけるメモリアドレス、揮発メモリ113と不揮発メモリ115との間で一度に転送するデータ量(転送長:transfer length)、揮発性メモリのアドレス(メモリアドレス)から構成されている。
 転送長(一度に転送するデータ量)は、揮発メモリ113と不揮発メモリ115との関係を考慮してFPGA114を用いて設定することができる情報である。
 データ転送部202、203、及びデータ書き戻し部204はそれぞれ、不良管理テーブル218、219を参照して、順々に領域毎にデータの書き込み又はデータの読み出しを行う。AIDはエリア毎に付加する「エリア」を識別するIDである。これにより「FPGA114がアクセスする領域の抜け」を防止することができる。「FPGA114がアクセスする領域の抜け」とは、データ転送部202、203、及びデータ書き戻し部204がアクセスする領域の順番が、予め定められた順番でないことである。データ転送部202、203はAIDの初期値を設定し、CPU112が発行するコマンドに応じて、AIDの初期値をインクリメントしてAIDを生成する。データ転送部202、203は生成したAIDを不揮発メモリ115のUser領域に格納する。User領域は、図7に示すスペアセクタ700を構成するUser領域706と同等の領域である。
 [2.4.5.テーブル管理部(TBM)206、207]
 テーブル管理部206は、不良管理テーブル218の制御を行う。
 不良管理テーブル218は、FPGA114が「エリア」へのデータ書き込み、及び「エリア」からのデータ読み出しの可否を判別するために、FPGA114(データ転送部202、データ書き戻し部204)が参照するテーブルである。
 本実施例において不良管理テーブル218で管理するエラーの発生した領域はエリアで識別する領域である。換言すれば、CPU112からの1回の指示に基づきFPGA114が不揮発メモリ115にデータを書き込む「エリア」内において、FPGA114(データ転送部202、データ書き戻し部204)がエラーを検出した場合、テーブル管理部206はその領域内にエラーがあることを示すフラグを不良管理テーブル218に書き込む。なお「エリア」の構成については、[2.5.2.不揮発メモリ115の構成2]で説明する
 [2.4.5.1.不良管理テーブル218]
 図9は本実施例にかかる不良管理テーブル218の一例である。
 不良管理テーブル218はDirtyフラグ901とInvalidフラグ902から構成されている。テーブル管理部206が不良管理テーブル218によって管理する「エリア」はメモリチップ301、302の1024個の「エリア」である。
 Dirtyフラグ901は、メモリチップ301、302の1024個の「エリア」それぞれにおける「デバイス(ハード自身)壊れ以外のエラー」の有無を識別するフラグである。Dirtyフラグ901の「1」は「デバイス(ハード自身)壊れ以外のエラー」があることを示し、「0」は「デバイス(ハード自身)壊れ以外のエラー」がないことを示す。「デバイス(ハード自身)壊れ以外のエラー」は、FPGA114がデータの書き込みを失敗(エラー)しても、書き込みをリトライすれば成功する可能性があるエラーのことである。
 Invalidフラグ902は、メモリチップ301、302の1024個の「エリア」それぞれにおける「デバイス(ハード自身)壊れに起因するエラー」の有無を識別するフラグである。Invalidフラグ902の「1」は「デバイス(ハード自身)壊れに起因するエラー」があることを示し、「0」は「デバイス(ハード自身)壊れに起因するエラー」がないことを示す。「デバイス(ハード自身)壊れに起因するエラー」は、FPGA114がデータの書き込みをリトライしても成功する可能性がないエラーのことである。
 同様にテーブル管理部207も、不揮発メモリ115においてデータの読み出し、データの書き込みのエラーが発生した領域を示す不良管理テーブル219の制御を行う。テーブル管理部207が不良管理テーブル219によって管理する「エリア」はメモリチップ303、304の1024個の「エリア」である。そして不良管理テーブル219もDirtyフラグ901とInvalidフラグ902に相当するDirtyフラグとInvalidフラグから構成される。
 そして本実施例における不良管理テーブル218にはCRCデータ903が付加されている。転送制御部208がCRCデータ903を不良管理テーブル218に付加する。CRCデータ903は、転送制御部208が不良管理テーブル218を用いて演算し、生成するデータである。CRCデータ903は、不良管理テーブル218のFPGA114と不揮発メモリ115との間の転送においてエラーが発生しているか否かを示すデータである。つまりCRCデータ903は、FPGA114と不揮発メモリ115との間の転送において、不良管理テーブル218が壊れていないか否かを示すデータである。
 [2.4.6.転送制御部(UCE)208、209]
 転送制御部208、209は、不揮発メモリ115へのコマンド(CMD)発行制御を行う。本実施例において転送制御部の数は転送制御部208、209の2つであり、これは不揮発メモリ115へデータを転送するバス(bus)の数と対応している。
 停電時に、転送制御部208はテーブル管理部206の不良管理テーブル218を不揮発メモリ115に書き込む。このとき転送制御部208は、不良管理テーブル218に基づき、不良管理テーブル218に対応するCRCデータ903を生成し、不良管理テーブル218にCRCデータ903を付加する。転送制御部208は、CRC903を付加した不良管理テーブル218を二重化して不揮発メモリ115に格納する。
 転送制御部208が不良管理テーブル218を二重化して書き込む領域は図4に示す「Block0」である。本実施例において、転送制御部208が不良管理テーブル218を書き込む領域「Block0」は、Bank305~308を構成する8つの「Block0」である。この8つの中「Block0」うち2つの「Block0」に、転送制御部208は不良管理テーブル218を二重化して書き込む。
 そしてテーブル管理部206が不良管理テーブル218の更新を行う。FPGA114(データ転送部202、データ書き戻し部204)がエラーを検出し、テーブル管理部206がその領域内にエラーがあることを示すフラグを不良管理テーブル218に書き込んで、不良管理テーブル218の更新を行う。
 本実施例では、4世代の不良管理テーブル218を不揮発メモリ115の8つの「Block0」に格納する。Bank305~308を構成する「Block0」は8つであるため、転送制御部208は、更新する前の不良管理テーブル218を不揮発メモリ115の「Block0」に残す。世代の違いは、不良管理テーブル218が更新前か後か違いである。つまりBank305~308の8つの「Block0」には、最新の不良管理テーブル218、更新直前の不良管理テーブル218、更新直前のさらに前の不良管理テーブル218、更新直前のさらに前の前の不良管理テーブル218の4世代の不良管理テーブル218がそれぞれ二重化して格納されている。そしてテーブル管理部206が新たに不良管理テーブル218を更新した場合、転送制御部208は、一番世代が古い不良管理テーブル218が格納されている2つの「Block0」にその更新された不良管理テーブル218を二重化して書き込む。
 どの世代の不良管理テーブル218がどの「Block0」に格納されているかを管理する世代情報は、CPU112に接続するEEPROM181に格納されている。EEPROM181はCPU112に接続しているため、CPU112は不揮発メモリ115に比べ、EEPROM181に高速にアクセスすることができる。CPU112が当該世代情報の更新を行う。つまり一番古い不良管理テーブル218が格納されていた「Block0」に最新の不良管理テーブル218が格納されることになるため、CPU112は、世代情報における8つの「Block0」に格納される不良管理テーブル218の世代の順序を更新する。転送制御部208は世代情報を参照して、最新の不良管理テーブル218を不揮発メモリ115から読み出す。
 同様に停電時に、転送制御部209はテーブル管理部207の不良管理テーブル219を不揮発メモリ115に書き込む。このときも転送制御部209は、不良管理テーブル219に基づき、不良管理テーブル219に対応するCRCデータを生成し、不良管理テーブル219にCRCデータを付加する。
 転送制御部209が不良管理テーブル219を二重化して書き込む領域はBank309~312の「Block0」である。転送制御部209はBank309~312の8つの中「Block0」うち2つの「Block0」に、不良管理テーブル219を二重化して書き込む。
 Bank309~312の8つの「Block0」には、最新の不良管理テーブル219、更新直前の不良管理テーブル219、更新直前のさらに前の不良管理テーブル219、更新直前のさらに前の前の不良管理テーブル218の4世代の不良管理テーブル219がそれぞれ二重化して格納されている。またどの世代の不良管理テーブル219がどの「Block0」に格納されているかを管理する世代情報も、CPU118に接続するEEPROM182に格納されている。CPU112が当該世代情報の更新を行う。EEPROM182はCPU118に接続しているため、不揮発メモリ121に比べ、CPU118がEEPROM182に高速にアクセスすることができる。
 また復電時に、転送制御部208は不揮発メモリ115に保持する不良管理テーブル218をテーブル管理部206に読み出す制御を行う。同様に復電時に、転送制御部209は不揮発メモリ115に保持する不良管理テーブル219をテーブル管理部207に読み出す制御を行う。
 また図12は本実施例に係る不良管理テーブル218の構築のシーケンス図である。ここで不良管理テーブル219の構築のシーケンスも同様のシーケンス図であり、省略する。
 工場出荷時、不揮発メモリ115は通常、すでに不良セクタを有している。例えば図7に示すInvalid領域701に、スペアセクタ700に対応するメインセクタが不揮発メモリ115の工場出荷時に不良か否かを情報(不良セクタ情報)が格納されている。転送制御部208は不揮発メモリ115の不良セクタ情報から不良管理テーブル218を構築する。
 まずディスクアレイ装置100の電源を初めてONすると、CPU112は転送制御部208の起動をFPGA114(より具体的には転送制御部208)に指示する(ステップS1201)。転送制御部208は起動して、不揮発メモリ115から不良セクタ情報を読み出して(Read)、不揮発メモリ115の不良セクタをチェック(Check)する(ステップS1202)。CPU112は転送制御部208からの処理完了の通知を待つ(ステップS1203)。転送制御部208は不良セクタ情報の読み出し、及び不良セクタのチェックの処理が完了したことをCPU112に通知して、転送制御部208は読み出した不良セクタ情報をCPU112に通知する(ステップ1204)。
 CPU112は転送制御部208から受信した不良セクタ情報から不良管理テーブル218を構築する(ステップS1205)。
 CPU112は、転送制御部208に対して、構築した不良管理テーブル218の更新を指示する(ステップS1206)。CPU112から指示を受けると転送制御部208は不良管理テーブル218を更新する(ステップS1207)。より具体的には転送制御部208が不良管理テーブル218を更新をテーブル管理部206に指示し、テーブル管理部206はその領域内にエラーがあることを示すフラグを不良管理テーブル218に書き込む。
 CPU112は、転送制御部208に対して、不揮発メモリ115への書き込み禁止を解除する処理をすることを指示する(ステップS1208)。工場出荷時点では、不揮発メモリ115は、書き込み禁止の状態(ライトプロテクト状態)となっている。転送制御部208は、不揮発メモリ115にUnlockコマンドを発行して、不揮発メモリ115の書き込み禁止を解除する(ステップS1209)。CPU112は転送制御部208から処理完了の通知を待つ(ステップ1210)。
 CPU112は、転送制御部208に対して、不揮発メモリ115のイレース処理を指示する(ステップS1211)。ここで言うイレース処理は、「Block0」を初期化する処理であり、不良管理テーブル218を格納する「Block0」をデータ未格納の状態にする処理である。転送制御部208は、イレースコマンドを発行し、イレース処理を行う(ステップS1212)。CPU112は、転送制御部208からのイレース処理完了の通知を待つ(ステップS1213)。
 そしてCPU112は、転送制御部208に対して、不良管理テーブル218を不揮発メモリ115の「Block0」に書き込むことを指示する(ステップS1214)。転送制御部208は、不良管理テーブル218をBank305~308の8つの「Block0」に格納する(write)(ステップS1215)。これより工場出荷時においては、4世代の不良管理テーブル218を格納可能なBank305~308の8つすべての「Block0」に同一(同世代)の不良管理テーブル218が格納されることとなる。
 図13、14は本実施例に係る不良管理テーブル218の処理シーケンスに係る図である。
 図12において転送制御部208が不良管理テーブル218をBank305~308の8つの「Block0」に格納する。図13、14はその後、ディスクアレイ装置100の電源をOFFして、あとで再び電源をONしたときに、CPU112とFPGA114が実行するシーケンス図である。
 ディスクアレイ装置100が電源OFFの場合、FPGA114は不良管理テーブル218を保持しない。この場合、不良管理テーブル218は不揮発メモリ115にのみ格納されている。ディスクアレイ装置100の電源をOFFからONにすると、FPGA114は、不良管理テーブル218を不揮発メモリ208から読み出してFPGA114上に展開する。より具体的には転送制御部208が不良管理テーブル208を不揮発メモリ115の「Block0」から読み出し、テーブル管理部206上に展開する。停電時にCPU112、FPGA114が揮発メモリ113に保持するデータを不揮発メモリ115に退避するためである。つまりFPGA114が不揮発メモリ115の不良セクタを管理しておき、停電時に揮発メモリ113に保持するデータを不揮発メモリ115に確実に退避するためである。
 まずディスクアレイ装置100の電源がONになると、CPU112がFPGA114に対して、転送制御部208を起動することを指示する(ステップS1301)。転送制御部208は、不揮発メモリ115に対して、Unlockコマンドを発行して、不揮発メモリ115の書き込み禁止を解除する(ステップS1302)。CPU112は転送制御部208から書き込み禁止解除の完了通知を待つ(ステップS1303)。
 CPU112は転送制御部208から書き込み禁止解除の完了通知を受け、転送制御部208に対して、不揮発メモリ115から不良管理テーブル218を読み出すことを指示する(ステップS1304)。転送制御部208は不揮発メモリ115から不良管理テーブル218を読み出す(ステップS1305)。CPU112は転送制御部208から不良管理テーブル218の読み出し完了の通知を待つ(ステップS1306)。不良管理テーブル218の読み出し処理(ステップS1305の処理)に関するフローチャートは図15に示す。
 CPU112は、転送制御部208から不良管理テーブル218の読み出し完了通知を受け、転送制御部208に対して読み出した不良管理テーブル218の次世代の不良管理テーブル218を格納する「Block0」のイレース確認を指示する(ステップS1307)。転送制御部208はイレース確認コマンドを発行し、イレース確認を行う(ステップS1308)。テーブル管理部206が不良管理テーブル218を更新した場合に、効率的に更新した不良管理テーブル218(次世代の不良管理テーブル218)を格納するためである。CPU112は転送制御部208からイレース確認の完了通知を待つ(ステップS1309)。
 CPU112が次世代の不良管理テーブル218を格納する「Block0」がイレースされていないと判別した場合には、CPU112は転送制御部208に対して、その「Block0」のイレース処理を指示する(ステップS1310)。ここでイレース処理は、次世代の不良管理テーブル218を格納する「Block0」に格納してあるデータを消去する処理のことである。転送制御部208はイレースコマンドを発行し、次世代の不良管理テーブル218を格納する「Block0」をイレース処理する(ステップS1311)。CPU112は転送制御部208からイレース完了の通知を待つ(ステップS1312)。
 CPU112は、次世代の不良管理テーブル218を格納する「Block0」がイレースされていると判別した場合には、CPU112は転送制御部208に対してイレース処理の指示は行わない。
 そしてCPU112はEEPROM181に保持する停電フラグを参照する。停電フラグは停電があったか否かを示すフラグである。停電フラグが立っている場合には、CPU112、転送制御部208は復電処理を実行する。つまりディスクアレイ装置100の電源がONになったときに停電フラグが立っているか否かにより、停電から復旧して電源ONになったか否かを、CPU112は判別する。
 CPU112が停電フラグを確認した結果、ディスクアレイ装置100が停電からの復旧ではなく、通常の電源ONであると判別すると、CPU112は不揮発メモリ115がイレース処理してあるか否かの確認を転送制御部208に指示する(ステップS1313)。転送制御部208はイレース処理確認のコマンドを発行し、不揮発メモリ115がイレース処理してあるか否かの確認処理を行う(ステップS1314)。ここでいうイレース処理は、不揮発メモリ115を構成する「Block0」を除く「Block1」から「Block2047」の領域のデータを消去する処理である。CPU112は転送制御部115からイレース処理確認の完了通知を待つ(ステップS1315)。
 CPU112が「Block1」から「Block2047」のデータがイレース処理されていないと判別した場合には、CPU112は転送制御部208に対して、その「Block1」から「Block2047」のイレース処理を指示する(ステップS1316)。転送制御部208はイレース処理のコマンドを発行し、「Block1」から「Block2047」に格納されたデータを消去する(ステップS1317)。CPU112は転送制御部208からイレース処理の完了通知を待つ(ステップS1318)。
 そしてCPU112は、通信情報を構築する(ステップS1319)。
 通信情報は、処理を実行するために発行するコマンド、揮発メモリ113と不揮発メモリ115におけるメモリアドレス、揮発メモリ113と不揮発メモリ115との間で一度に転送するデータ量(転送長:transfer length)、AID(Area ID)から構成されている。
 通信情報管理部205は、レジスタ202に通信情報を書き込む(ステップS1320)。
 図15は本実施例に係る本実施例に係る転送制御部208の不良管理テーブル218の読み出しシーケンス図である。ここで説明便宜のため、Bank305~308に格納する8つの不良管理テーブル218を不良管理テーブル171~178と呼ぶ。図17は、本実施例に係るBank305~308の概念図である。Bank305~308の8つの「Block0」に不良管理テーブル171~178を格納していることを示している。
 Bank305の「Block0」に最新の不良管理テーブル171、172が二重化されて格納されている。不良管理テーブル171、172の1世代前の不良管理テーブル173、174がBank306の「Block0」に格納されている。不良管理テーブル173、174の1世代前の不良管理テーブル175、176がBank307の「Block0」に格納されている。そして不良管理テーブル175、176の1世代前の不良管理テーブル177、178がBank308の「Block0」に格納されている。
 転送制御部208は、EEPROM181に格納する世代情報を参照し、Bank305の「Block0」から最新の不良管理テーブル171を読み出す(ステップS1501)。そして転送制御部208はその不良管理テーブル171に付加してあるCRCデータをチェックし(ステップS1502)、不良管理テーブル171が壊れていないか否かを判別する(ステップS1503)。転送制御部208が、不良管理テーブル171は壊れていないと判別した場合には(ステップS1503 YES)、転送制御部208はCPU112に対して、不良管理テーブル171の読み出し完了通知をする(END)。
 転送制御部208が、不良管理テーブル171は壊れていると判別した場合には(ステップS1503 NO)、転送制御部208は不良管理テーブル172を読み出す(ステップS1504)。不良管理テーブル172は、不良管理テーブル171と同一のデータであり、不良管理テーブル171を冗長化したデータである。そして転送制御部208はその不良管理テーブル172に付加してあるCRCデータをチェックし(ステップS1505)、不良管理テーブル172が壊れていないか否かを判別する(ステップS1506)。転送制御部208が、不良管理テーブル172は壊れていないと判別した場合には(ステップS1506 YES)、転送制御部208はCPU112に対して、不良管理テーブル172の読み出し完了通知をする(END)。
 転送制御部208が、不良管理テーブル172は壊れていると判別した場合には(ステップS1506 NO)、転送制御部208は不良管理テーブル171、172の1世代前の不良管理テーブル173を読み出す(ステップS1507)。そして転送制御部208はその不良管理テーブル173に付加してあるCRCデータをチェックし(ステップS1508)、不良管理テーブル173が壊れていないか否かを判別する(ステップS1509)。転送制御部208が、不良管理テーブル173は壊れていないと判別した場合には(ステップS1509 YES)、転送制御部208はCPU112に対して、不良管理テーブル173の読み出し完了通知をする(END)。
 転送制御部208が、不良管理テーブル173は壊れていると判別した場合には(ステップS1509 NO)、転送制御部208は不良管理テーブル174を読み出す(ステップS1510)。
 以下同様にして、転送制御部208は、CRCデータのチェックをして壊れていない不良管理テーブルがあると判別するまで、不良管理テーブル174、175、176、177、178の順にチェックしていき、壊れていない不良管理テーブルを読み出し完了した通知をCPU112にする(図15に記載のフローチャートでは、不良管理テーブル174、175、176、177、178のCRCチェック、読み出しステップは省略している。)。なお本実施例において転送制御部208は不良管理テーブル171、172の同世代の不良管理テーブルを同時に読み出してCRCデータのチェックをしてもよい。
 図16は本実施例に係る停電した場合のCPU112とFPGA114のシーケンス図である。
 停電した場合の不揮発メモリ115へのデータ退避の処理フローは、図11に示す。データ転送部202が揮発メモリ113に保持するデータを不揮発メモリ115に退避する。そのため図16におけるステップS1601~ステップS1606、及びステップS1614~ステップS1616のデータ書き込み処理の詳細は図11に示す。
 まずCM105への電力供給が外部電源からバックアップユニット103に切り替わった場合(停電した場合)、CPU112は転送制御部202、203に揮発メモリ113に保持するデータを不揮発メモリ115に退避することを指示する(ステップS1601、1602)。データ転送部202、203は揮発メモリ113に保持するデータを不揮発メモリ115に転送制御を実行する(ステップS1603、1604)。CPU112はデータ転送部202、203からデータ退避完了の通知を待つ(ステップS1605、1606)。
 そして本実施例においてデータ転送部202のデータ退避中にエラーが発生し、不良管理テーブル218を更新する場合について説明する。データ退避中にエラーが発生しない場合は、データ転送部202、203が揮発メモリ113に保持するデータを不揮発メモリ115に退避することによって、ディスクアレイ装置100のバックアップ処理を完了する。
 データ転送部203はデータ退避を完了する。そしてデータ転送部202は、データ退避中にエラーを検出する(ステップS1607)。データ転送部202は、CPU112にエラー検出して異常である旨を通知する(ステップS1608)。CPU112はエラーログの採取をデータ転送部202に依頼する(ステップS1610)。CPU112は不揮発メモリ115のレジスタ(図8に記載のレジスタ802など)からエラーログを読み出し、CPU112に転送する(ステップS1609)。CPU112はエラーログを採取する(ステップS1610)。CPU112はエラーのあったセクタのチェックするために、エラーのあったセクタの情報(アドレスなど)の転送をデータ転送部202に依頼する(ステップS1611)。データ転送部202はレジスタからエラーのあったセクタの情報(アドレスなど)読み出し、CPU112に転送する(ステップS1612)。CPU112はエラーのあったセクタのチェックする(ステップS1611)。
 CPU112はステップS1613のチェック結果から、不良管理テーブル218を更新する(ステップS1613)。データ転送部202はレジスタに更新履歴を書き込む(ステップS1614)。
 そしてCPU112は再び、データ転送部202に揮発メモリ113に保持するデータを不揮発メモリ115に退避することを指示する(ステップS1615)。データ転送部202は再びデータを不揮発メモリ115に退避する(ステップS1616)。
 CPU112は、転送制御部208に対して、不良管理テーブル218の書き戻し処理を指示する(ステップS1618)。転送制御部208は、更新した不良管理テーブル218を不揮発メモリ115の「Block0」に格納する(ステップS1619)。CPU112は、不良管理テーブル218の書き戻し処理完了の通知を待つ(ステップS1620)。
 [2.4.7.メモリ制御部(ONC)210、211]
 メモリ制御部210、211は不揮発メモリ115のインターフェースの制御を行う。メモリ制御部210、211は、不揮発メモリ115へデータの書き込み、不揮発メモリ115からデータの読み出しを行う。メモリ制御部210、211は、不揮発メモリ115の処理を制御することによって、不揮発メモリ115へデータの書き込み、不揮発メモリ115からデータの読み出しを行う。
 [2.4.8.データ変換制御部(NFC)212、213]
 データ変換制御部212、213は、不揮発メモリ115のIPの制御を行う。データ変換制御部212、213は、揮発メモリ113と不揮発メモリ115のデータの整合性をとる処理を実行する。データ変換制御部212は、データ転送部202からデータを受信すると、データを不揮発メモリ115に格納可能な形式に変換してメモリ制御部210へ転送する。またデータ変換制御部212は、メモリ制御部210からデータを受信すると、データを揮発メモリ113に格納可能な形式に変換してデータ書き戻し部204に転送する。同様にしてデータ変換制御部213は、データ転送部203からデータを受信すると、データを不揮発メモリ115に格納可能な形式に変換してメモリ制御部211へ転送する。またデータ変換制御部213は、メモリ制御部211からデータを受信すると、データを揮発メモリ113に格納可能な形式に変換してデータ書き戻し部204に転送する。
 [2.5.不揮発メモリ115、121]
 次に本実施例において、揮発メモリ113が保持しているデータを退避するための不揮発メモリ115、121について説明する。
 本実施例に係るFPGA114は、CPU112の指示によって、揮発メモリ113が保持するデータを不揮発メモリ115に退避する。FPGA120は、CPU118の指示によって、揮発メモリ119が保持するデータを不揮発メモリ121に退避する。
 不揮発メモリ115は、停電時に揮発メモリ113が保持するデータを退避して格納する記憶媒体である。同様に不揮発メモリ121は、停電時に揮発メモリ119が保持するデータを退避して格納する記憶媒体である。不揮発メモリ115はFPGA114に接続している。揮発メモリ113、FPGA114はCPU112に接続している。不揮発メモリ115は不良管理テーブルを有している。不良管理テーブルが格納されている領域は、不揮発メモリ115においてデータの書き込み回数が他の領域に比べて多く保証されている領域である。この不良管理テーブルを格納しておく領域は、図4に示す「Block0」である。データ転送部202が、テーブル管理部206に格納する不良管理テーブル218を不揮発メモリ115に転送して、メモリチップ301、302の「Block0」に格納する。同様にデータ転送部203も、テーブル管理部207に格納する不良管理テーブル219を不揮発メモリ115に転送して、メモリチップ303、304の「Block0」に格納する。
 同様に不揮発メモリ121はFPGA120に接続している。揮発メモリ119、FPGA120はCPU118に接続している。不揮発メモリ119は不良管理テーブルを有している。不揮発メモリ121の構成は不揮発メモリ115の構成と同等である。以下、不揮発メモリ115の構成について詳細について説明する。
 [2.5.1.不揮発メモリ115の構成1]
 図3は本実施例に係る不揮発メモリ115の構成を示す図である。
 不揮発メモリ115は、メモリチップ301、302、303、304から構成されている。メモリチップ301、302、303、304は、不揮発メモリ115に格納するデータを分割して管理する単位である。
 メモリチップ301は、Bank305、306から構成されている。同様にメモリチップ302は、Bank307、308から構成されている。メモリチップ303は、Bank309、310から構成されている。メモリチップ304は、Bank311、312から構成されている。
 Bank305~312も、不揮発メモリ115にデータを分割して管理する単位である。以下図4を用いて、不揮発メモリ115の一部(メモリチップ301、302:Bank305~308)の詳細の構成を説明する。図4は本実施例に係る不揮発メモリ115に係るBank305~308の詳細図である。なおメモリチップ303、304(Bank309~312)はメモリチップ301、302(Bank305~308)と同等の構成であるあるため説明を省略する。
 Bank305は、Die313、314から構成されている。Die313はBlock0~Block2047までの2048個のBlockから構成されている。Die314もBlock0~Block2047までの2048個のBlockから構成されている。そしてDie313、314のBlock0~Block2047はそれぞれPage0~Page63までの64個のPageから構成されている。「Die」、「Block」、及び「Page」も不揮発メモリにおいてデータを格納する領域の単位である。「Die」が、不揮発メモリ115において物理的に分離したデータを格納する単位(ハード構成の単位)である。本実施例において、「Page」は2kByteである。図6はDie313のハード構成の図である。Die313の不揮発メモリアレイ810は図4に記載の2048個の「Block0~Block2047」である。そのため不揮発メモリ115は不揮発メモリアレイを16個備えている。そしてDie313~320それぞれが2つのデータバッファ(図6に記載のデータバッファ805、806など)を備えているので、不揮発メモリ115は32個のデータバッファを備えている。そしてDie313のステートマシン807がFPGA114から転送されたデータ(Pageデータ)を不揮発メモリアレイ810に格納する。他のDie314~320もステートマシンを有しており、それらのステートマシンがDie314~320それぞれが備える不揮発メモリアレイに、FPGA114から転送されたデータ(Pageデータ)を格納する。
 同様にBank306は、Die315、316から構成されている。Die315、316もまたそれぞれ、Block0~Block2047までの2048個のBlockから構成されている。そしてDie315、316のBlock0~Block2047はそれぞれPage0~Page63までの64個のPageから構成されている。
 同様にBank307は、Die317、318から構成されている。Die317、318もまたそれぞれ、Block0~Block2047までの2048個のBlockから構成されている。そしてDie317、318のBlock0~Block2047はそれぞれPage0~Page63までの64個のPageから構成されている。
 同様にBank308は、Die319、320から構成されている。Die319、320もまたそれぞれ、Block0~Block2047までの2048個のBlockから構成されている。そしてDie319、320のBlock0~Block2047はそれぞれPage0~Page63までの64個のPageから構成されている。
 [2.5.2.不揮発メモリ115の構成2]
 またFPGA114がデータを書き込む単位での不揮発メモリ115の構成について説明する。不揮発メモリ115の一部(メモリチップ301、302)は1024個の「エリア」から構成されている。つまり不揮発メモリ115は2048個の「エリア」から構成されている。「エリア」は、CPU112からの1回の指示によって、FPGA114が不揮発メモリ115にデータを書き込む領域である。FPGA114は不良管理テーブル218、219によって「エリア」を識別して管理する。
 本実施例において、この「エリア」は16個の「Block」で構成されている。16個の「Block」はメモリチップ301、302(Die313~320)が備える16個のデータバッファ(図6に記載のデータバッファ805、806など)それぞれを介して不揮発メモリ115に格納されるデータの「Block」である。換言すれば、「エリア」は、不揮発メモリ115が備える異なるデータバッファを介して、不揮発メモリ115に転送される一定量のデータを格納する領域である。FPGA114は揮発メモリ113から不揮発メモリ115へ「エリア」単位でデータの転送制御を行う。本実施例ではCPU112がFPGA114に「エリア」ごとにデータ転送を指示する。
 そして不揮発メモリ115の「エリア(AREA)」は、「論理エリア(LOGICAL AREA)」と「交換エリア(REPLACEMENT AREA)」から構成されている。
 図10は本実施例に係る不揮発メモリ115のメモリチップ301、302における「エリア(AREA)0~エリア(AREA)1023」の概念図である。本実施例では、論理エリア(LOGICAL AREA)1001は、エリア0~エリア585から構成され、交換エリア(REPLACEMENT AREA)1002はエリア586~エリア1023から構成されている。メモリチップ303、304も「論理エリア」と「交換エリア」から構成される。
 FPGA114は、揮発メモリ113が保持するデータを不揮発メモリ115の論理エリア(LOGICAL AREA)1001に退避する(データ転送する)。FPGA114が、論理エリア1001を構成するエリア(エリア0~エリア585)のうちある特定のエリアにデータを書き込んでいる途中、FPGA114がデータの書き込みで発生したエラーデータを復元することができないと判別した場合、FPGA114は交換エリア1002を構成するエリア586~エリア1023のいずれかのエリアに、その特定のエリアに書き込む予定であったデータを再び書き直す。FPGA114は、FPGA114が生成するパリティデータによって復元できるか否かによって、「エラーデータの復元可否の判別」する。なお[2.4.2.データ転送部(TRN)202、203]で記載したように、FPGA114のデータ転送部202、203がパリティデータを生成する。
 同様にFPGA114は、メモリチップ303、304における「エリア」においても、メモリチップ301、302における「エリア(AREA)0~エリア(AREA)1023」にデータを書き込む基準で、揮発メモリ113に保持データを書き込む。「書き込む基準」とは、「エラーデータの復元可否の判別」、「エラーデータを復元不可能と判別する場合には、交換エリアに書き直す」ことを意味する。
 [2.5.3.小エリア501]
 図5は本実施例に係る不揮発メモリ115の小エリア501の構成図である。
 小エリア501は、16個の「Page」から構成される。小エリア501の大きさは32kByteである。なお不揮発メモリ115の各「エリア」は64個の小エリア(小エリア501など)から構成されている。
 また小エリア501の16個の「Page」に格納されるPageデータ504~510、512~518、及びパリティデータ511、519は、ストライプ502、503を構成している。ストライプ502はPageデータ504~510、及びパリティデータ511から構成される。同様にストライプ503はPageデータ512~518、及びパリティデータ519から構成される。
 ストライプ502は、Pageデータ504~510、及びパリティデータ511により、いわゆる(7+1)のRAID5の構成になっている。ストライプ502は、CPU112からの1回の指示によって、FPGA114が不揮発メモリ115にデータを書き込む領域(「エリア」)内の「Page」に格納するPageデータ504~510、及びパリティデータ511で構成されている。またストライプ502は、物理的に分離した単位を示す「Die313~320」それぞれにおける所定の「Page」に格納するPageデータでRAID5を構成するストライプである。つまりストライプ502を構成するPageデータ504~510、及びパリティデータ511を格納する「Page」それぞれは、物理的に(ハード構成としては)分離している。
 ここで同一のハード構成上の「Page」に格納するPageデータによりストライプを形成した場合を考える。そのストライプにおける2つ以上のPageデータがエラーする確率に比べて、ストライプ502を構成するPageデータ504~510、及びパリティデータ511のうち2つ以上がエラーする確率は低い。ストライプ502を構成するPageデータ504~510、及びパリティデータ511を格納する「Page」が物理的に分離しているからである。
 特に不揮発メモリ115がNAND型フラッシュメモリである場合は、ハード構成として分離したDie単位で、データの書き込み失敗などのエラーが発生しやすい。そのため上記したように異なる「Die」に属する「Page」に格納するPageデータによってRAID5のストライプを構成したほうが有益である。
 またストライプ502を構成するPageデータ504~510、及びパリティデータ511は、不揮発メモリ115が備える複数のデータバッファであって異なるデータバッファを介して転送されるデータである。
 同様にストライプ503もPageデータ512~518、及びパリティデータ519により、(7+1)のRAID5の構成になっている。ストライプ503も、CPU112からの1回の指示によって、FPGA114が不揮発メモリ115にデータを書き込む領域(「エリア」)内の「Page」に格納するPageデータ512~518、及びパリティデータ519で構成されている。またストライプ503は、物理的に分離した単位を示す「Die313~320」それぞれにおける所定の「Page」に格納するPageデータでRAID5を構成するストライプである。
 [2.5.3.1.Page600]
 図6は本実施例に係るPage600の構成図である。Page600は、図4、5に示す「Page」と同等の領域であり、不揮発メモリ115内の領域である。Page600は、メインセクタ(main-sector)601~604、及びスペアセクタ(spare-sector)605~608から構成される。
 メインセクタ(main-sector)601~604それぞれには、Pageデータ本来のユーザ情報など示すmainデータが格納される。本実施例ではPage600には4つのmainデータが格納される。mainデータの大きさは、512Byteである。スペアセクタ(spare-sector)605~608それぞれは、mainデータの整合性などに関するspareデータなどが格納される。本実施例ではPage600には4つのspareデータが格納される。spareデータの大きさは、16Byteである。
 [2.5.3.2.スペアセクタ700]
 図7は本実施例に係るスペアセクタ700の構成図である。スペアセクタ700は図6に記載のスペアセクタ605~608と同等の領域であり、不揮発メモリ115内の領域である。スペアセクタ700は、Invalid領域701、論理セクタ(Logical-sector)702、Reserve領域703、705、ECC領域704、User領域706から構成される。
 Invalid領域701には、スペアセクタ700に対応するメインセクタが不揮発メモリ115の工場出荷時に不良か否かを情報が格納されている。
 論理セクタ(Logical-sector)702は、スペアセクタ700を識別する情報が格納されている。Reserve領域703、705は、予備の空き領域である。ECC領域704には、不揮発メモリ115において生成するECCデータを格納する領域である。ECCデータは、mainデータのビットエラーを訂正するためのデータである。User領域706には、CRCデータまたはAIDデータが格納される。
 [2.5.4.Die313~320]
 図8は本実施例に係るDie313のハード構成図である。他のDie314~320もDie313と同様のハード構成である。
 Die313は、図8における点線で囲まれた部分である。Die313は、ホストインタフェース(Host Interface)801を介して、FPGA114とデータの転送を行う。
 Die313は、レジスタ(Internal Registers)802、バッファメモリ(Buffer RAM)803、ステートマシン(State Machine)807、エラー訂正回路(Error Correction Logic)809、不揮発メモリアレイ810から構成される。バッファメモリ803はブートバッファ(Boot RAM)804、データバッファ(Data RAM)805、806から構成される。またステートマシン807は、ブート・ローダ(Boot loader)808を保持している。ブート・ローダ808は、Die313がデータの転送制御を開始するに際して、レジスタ802から制御プログラムをステートマシン807に読み込んでDie313を起動するプログラムである。
 レジスタ802には、アドレス、コマンド、コンフィグ(設定情報)、データ書き込み読み出しにおけるエラーログなどが格納されている。ステートマシン807は、レジスタ802からこれらアドレス、コマンド、コンフィグを読み出して転送制御を行う。アドレスは不揮発メモリアレイ810におけるデータのアドレスである。コマンドはDie313がデータの転送制御に際して発行する命令コマンドである。
 不揮発メモリアレイ810は、図4に示す2048個の「Block」から構成されており、データの記憶部である。そしてDie313は、図4のDie313に属するBlock0、Block2、Block4、Block6、・・・、Block2046(不揮発メモリアレイ810の一部分)に、データバッファ805を介して、データを格納する。またDie313は、図4のDie313に属するBlock1、Block3、Block5、Block7、・・・、Block2047に、データバッファ806を介して、データを格納する。このことは、偶数番のBlockに対してDie313は、データバッファ805を介して、データを格納することを意味する。奇数番のBlockに対してDie313は、データバッファ806を介して、データを格納することを意味する。
 Die313はデータバッファ805、806の2つのバッファを用いて不揮発メモリアレイ810にデータを格納している。Die313は、データバッファ805、806内に図4に示す「Page」単位でデータを保持する。そしてDie313のステートマシン807は、データバッファ805、806を介して、不揮発メモリアレイ810にデータを転送する。換言すれば、Die313は「Page」単位でデータバッファ805、806を介して不揮発メモリアレイ810にデータを転送する。
 ステートマシン807は、データバッファ805を介して、不揮発メモリアレイ810にデータを転送すると共に、ステートマシン807は次に不揮発メモリアレイ810に転送するデータをデータバッファ806に保持する。これによりDie313は効率的に不揮発メモリアレイ810にデータを格納することができる。ここで「次に不揮発メモリアレイ810に転送するデータ」とは、「ステートマシン807が、データバッファ805に保持するデータを不揮発メモリアレイ810に転送完了した後に、続いてステートマシン807が、不揮発メモリアレイ810に転送するデータ」のことである。そしてステートマシン807が、データバッファ806を介して、不揮発メモリアレイ810にデータを転送すると共に、ステートマシンは不揮発メモリアレイ810に転送するデータをデータバッファ805に保持する。
 他のDie314~320も、それぞれデータバッファ805、806に相当するデータバッファ、及び不揮発メモリアレイ810に相当する不揮発メモリアレイを備えている。そしてDie314~320もそれぞれ、それぞれが備えているデータバッファを用いて、データを「Page」単位で、Die314~320それぞれが有する不揮発メモリアレイに転送する。
 不揮発メモリ115は、図5に示すように物理的に分離した単位を示す「Die313~320」それぞれにおける所定の「Page」に格納するPageデータ、パリティデータによりRAID5のストライプ(ストライプ502、503など)を構成する。つまり不揮発メモリ115は物理的に異なるデータバッファを介して転送するデータ(Pageデータ)を冗長化(RAID5の構成)する。不揮発メモリ115が、所定のデータ単位でRAID5のストライプ(ストライプ502、503など)を構成することによって、ストライプ(ストライプ502、503など)内で1つのデータ(Pageデータ)がエラーしても復元できる。これにより不揮発メモリ115内におけるデータの冗長構成からFPGA114がエラーデータを復元できる場合には、FPGA114は揮発メモリ113から不揮発メモリ115にデータを転送する過程でエラーが発生しても、CPU112の命令により転送開始したデータをはじめから新たに書き戻すことなく、データ(約2MByteのデータ)を不揮発メモリ115に転送することができる。FPGA114がデータを不揮発メモリ115に書き込み完了した後に、エラーしたデータを復元すればよいからである。
 またブートバッファ804は、Die313を起動するための情報を一次的に保持しておく記憶領域である。またエラー訂正回路809は、Die313において転送のエラーがあったデータを訂正する回路である。
 以上ことは、次のように換言することができる。不揮発メモリ115は複数のデータバッファを備えている。そしてそれぞれのデータバッファに対して不揮発メモリ115における領域(データを格納する領域)が割り当てられている。FPGA114は、不揮発メモリ115が備える当該複数のデータバッファを介して、それぞれのデータバッファに割り当てられた不揮発メモリ115の領域(データを格納する領域)にデータを格納する。
 FPGA114は、CPU112から指示によって、一定量のデータを連続して不揮発メモリ115に書き込む(格納する)。CPU112からの1回の指示によって、FPGA114が不揮発メモリ115により多くのデータを書き込むほうが、FPGA114が不揮発メモリ115にデータを書き込む時間は短くてすむ。FPGA114が不揮発メモリ115により多くのデータを書き込むために、CPU112からのFPGA114への指示が少なくてよいからである。
 一方で、1回の指示によって、FPGA114が不揮発メモリ115により多くのデータを書き込むほど、データの書き込みの過程でエラーが発生する確率が高くなる。データの書き込みの過程でエラーが発生した場合、FPGA114は、再びその指示により、データを最初から書き直す。そのためエラーの発生により書き戻しが多くなればそれに伴い、FPGA114がデータを不揮発メモリ115に書き込む(退避する)のに多くの時間がかかる。さらにデータの書き込み途中でエラーが発生して、再びFPGA114が不揮発メモリ115の元の領域にデータを書き戻す場合には、CPU112からの指示で不揮発メモリ115に書き込み始めたデータであって書き込みの成功したデータを不揮発メモリ115から削除した上で、再び書き戻しを行わなければならない。そのためFPGA114が不揮発メモリ115からエラー発生以前に書き込みの成功したデータを削除(イレース)する時間もかかる。なおCPUからの指示が複数回ある場合には、FPGA114はその指示ごとにデータの書き込み管理を行う。FPGA114は一定のデータ量ごとに不揮発メモリ115にデータを書き込む。エラーが発生した場合に、FPGA114は、エラーの発生したその一定のデータ量の範囲において、書き込みが成功したデータを削除する。
 そのため本実施例では、FPGA114がCPU112から指示によって、不揮発メモリ115に連続して書き込むデータにおいて、一定のデータ単位(ストライプ502、503などのストライプ単位)で冗長構成とする。つまりFPGA114は不揮発メモリ115に転送する一定のデータ量ごとにパリティデータを生成し、データを不揮発メモリ115に格納すると共にパリティデータも不揮発メモリ115に格納する。
 FPGA114がCPU112から指示によって、連続して一定量のデータを不揮発メモリ115に書き込む。そしてFPGA114がデータを不揮発メモリ115へ書き込む過程でエラーが発生しても、FPGA114がパリティデータによって、そのエラーデータを復元できる場合には、FPGA114はCPU112から指示で書き込み開始した最初のデータから再び書き戻さない。FPGA114は、エラー検出後も続けてCPU112から指示があった残りのデータを不揮発メモリ115に書き込む。
 FPGA114が、データを不揮発メモリ115へ書き込む過程で発生したエラーがパリティデータを用いて復元できないと判別する場合には、FPGA114は、不揮発メモリ115の別の領域(本実施例は図10に記載の「交換エリア1002」など)に、再びデータを最初から書き直す。
 これよりディスクアレイ装置100は、FPGA114がCPU112から指示によって、不揮発メモリ115に連続して書き込むデータの量を減らさずに、データの書き込み途中におけるエラーに起因するデータの書き直しを減らすことができる。さらにディスクアレイ装置100は、エラー発生以前に書き込みの成功したデータを削除(イレース)する時間も削減できる。ディスクアレイ装置100はディスクコントローラ105の揮発メモリ113に保持するデータを不揮発メモリ115により高速に退避することができる。
 さらに本実施例に係るFPGA114は、不良管理テーブル218を多重化して不揮発メモリ115の「Block0」に書き込む。そしてFPGA114は、複数の世代の不良管理テーブル218を不揮発メモリ115に格納して管理する。そしてFPGA114が不揮発メモリ115に揮発メモリ113内のデータを退避するに際して、FPGA114(より具体的には転送制御部208)は不良管理テーブル218を不揮発メモリ115から読み出す。転送制御部208は、読み出した不良管理テーブル218のCRCデータ903をチェックして、不良管理テーブル218が壊れているか否かを判別する。転送制御部218は、不良管理テーブル218が壊れていると判別した場合には、多重化した他の不良管理テーブル218を読み出し、そのCRCデータをチェックする。転送制御部202が多重化したすべての不良管理テーブル218のCRCデータをチェックして、それらすべての不良管理テーブル218が壊れていると判別した場合は、前世代の不良管理テーブルを読み出す。転送制御部218は前世代の不良管理テーブルのCRCデータをチェックし、前世代の不良管理テーブルが壊れているか否かを判別する。以下、転送制御部208は、CRCデータのチェックをして壊れていない不良管理テーブルがあると判別するまで、不良管理テーブルをチェックしていき、壊れていない不良管理テーブルを読み出す。
 これによりFPGA114は、不良管理テーブルを不揮発メモリ115から確実に読み出すことができるため、揮発メモリ113に保持するデータを不揮発メモリ115に確実に退避することができる。
 [2.6.DEポート116、122]
 DEポート116はディスク107~110に接続されている。同様にDEポート122もディスク107~110に接続されている。
 DEポート116は、DE(ドライブエンクロージャー)を拡張するためのポートである。本実施例ではDEポート116は、最大9個のDEをカスケード接続で多段接続することができる。1つのDEには例えば6本のディスクを接続することができる。そのためDEポート116は、DEを介して、最大で120本のディスクを接続することができる。本実施例では代表して、DEポート116に接続されるディスク107~110を記載している。
[2.7.ディスクアレイ装置100の復旧]
 ディスクアレイ装置100が停電から復旧すると、FPGA114は不揮発メモリ115に退避したデータを揮発メモリ113に書き戻す。より具体的には、データ書き戻し部204が不揮発メモリ115に退避したデータを揮発メモリ113に書き戻す。CPU112は、データ書き戻し部204に対して、不揮発メモリ115に退避したデータを揮発メモリ113に書き戻すことを指示する。データ書き戻し部204は、不揮発メモリ115が保持するデータを、バッファ217を介して通信部201に転送する。そして通信部201は、CPU112を介して、そのデータを揮発メモリ113に転送する。
 データ書き戻し部204がデータを不揮発メモリ115から揮発メモリ113に転送完了した後、テーブル管理部206は不良管理テーブル218のDirtyフラグ901をリセットする(Dirtyフラグ901を構成するフラグすべて「0」に戻す)。同様にテーブル管理部207は不良管理テーブル219のDirtyフラグをリセットする。これにより本実施例におけるディスクアレイ装置100は不揮発メモリ115の資源(容量)を有効に用いることが可能である。Dirtyフラグが「1」であったエリアは、不揮発メモリ115のハード自体の壊れ以外に起因してデータ転送部202、203がデータの書き込みをエラーした領域である。つまりDirtyフラグが「1」であったエリアは、データ転送部202、203がデータを再び書き込みトライすれば、書き込むことができる領域である。そのため停電から復旧した段階でテーブル管理部206、207がDirtyフラグを「1」にリセットしておくことによって、再び停電が発生した場合、データ転送部202、203はDirtyフラグが「1」であったエリアにもデータを書き込む(退避する)ことができる。
 本実施例によるバックアップ方法は、ディスクアレイ装置にバックアップ方法である。したがって、本実施例によるバックアップ方法は、停電が発生した場合に、コントローラモジュールが搭載する揮発メモリ内のデータを退避するうえで極めて有用である。

Claims (8)

  1. ディスクアレイ装置を制御し、揮発メモリと不揮発メモリを有するコントローラが、該揮発メモリに保持するデータを該不揮発メモリに退避するバックアップ方法において、
     前記不揮発メモリにおける不良領域を示す複数の不良管理テーブルの情報に誤り検出符号を付加し、
     前記誤り検出符号を付加した複数の不良管理テーブルを該不揮発メモリに格納し、
     前記複数の不良管理テーブルのうち選択した一つの前記不良管理テーブルにおけるエラーの有無を前記誤り検出符号により判別し、
     前記エラーがあると判別した場合、選択していない不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避する
     ことを特徴とするバックアップ方法。
  2. 請求項1に記載のバックアップ方法において、
     前記不揮発メモリにおける不良領域を示す不良管理テーブルを複数生成することを特徴とするバックアップ方法。
  3. 請求項1に記載のバックアップ方法において、
    新たに前記不揮発メモリに不良領域が発生した場合は、前記不良管理テーブルを更新し、
    更新前の不良管理テーブルも前記不揮発メモリに格納することを特徴とするバックアップ方法。
  4. 請求項3に記載のバックアップ方法において、
    前記複数すべての不良管理テーブルにおいてエラーがあると判別した場合には、前記更新前の不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避することを特徴とするバックアップ方法。
  5. 請求項4に記載のバックアップ方法において、
    前記不良管理テーブル、及び前記更新前の不良管理テーブルを格納する前記不揮発メモリにおける領域を示す世代情報を前記不揮発メモリと異なる記憶部に格納することを特徴とするバックアップ方法。
  6. 不揮発メモリにデータを格納する格納方法において、
     前記不揮発メモリにおける不良領域を示す複数の不良管理テーブルの情報に誤り検出符号を付加し、
     前記誤り検出符号を付加した複数の不良管理テーブルを該不揮発メモリに格納し、
     前記複数の不良管理テーブルのうち選択した一つの前記不良管理テーブルにおいて前記誤り検出符号によりエラーの有無を判別し、
     該エラーがあると判別した場合、選択していない不良管理テーブルを用いてデータを該不揮発メモリに格納する
     ことを特徴とする格納方法。
  7. データを保持する揮発メモリと、
     不揮発メモリと、
     制御部からなるディスクアレイ装置であって、
     前記制御部は、前記不揮発メモリにおける不良領域を示す複数の不良管理テーブルの情報に誤り検出符号を付加し、前記誤り検出符号を付加した不良管理テーブルを該不揮発メモリに格納し、前記誤り検出符号により前記不良管理テーブルにおけるエラーの有無を判別し、前記エラーがあると判別した場合、選択していない不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避することを特徴とするディスクアレイ装置。
  8. ディスクアレイ装置を制御し、揮発メモリと不揮発メモリを有するコントローラが、該揮発メモリに保持するデータを該不揮発メモリに退避するバックアップ方法において、
     前記不揮発メモリにおける不良領域を示す不良管理テーブルを複数保持し、
     新たに前記不揮発メモリに不良領域が発生した場合は、前記複数の不良管理テーブルを更新し、
     前記複数の不良管理テーブルを該不揮発メモリに格納し、
     前記揮発メモリに保持するデータを該不揮発メモリに退避する際に、有効な不良管理テーブルを判別し、
     選択した有効な不良管理テーブルを用いて該揮発メモリに保持するデータを該不揮発メモリに退避する
     ことを特徴とするバックアップ方法。
     
PCT/JP2008/052145 2008-02-08 2008-02-08 バックアップ方法、格納方法、及びディスクアレイ装置 WO2009098777A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
EP08711024.3A EP2249244B1 (en) 2008-02-08 2008-02-08 Backup method, storage method, and disc array device
PCT/JP2008/052145 WO2009098777A1 (ja) 2008-02-08 2008-02-08 バックアップ方法、格納方法、及びディスクアレイ装置
JP2009552365A JP5398551B2 (ja) 2008-02-08 2008-02-08 バックアップ方法、コントローラ、及びディスクアレイシステム
US12/849,354 US8074104B2 (en) 2008-02-08 2010-08-03 Controlling apparatus and controlling method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2008/052145 WO2009098777A1 (ja) 2008-02-08 2008-02-08 バックアップ方法、格納方法、及びディスクアレイ装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/849,354 Continuation US8074104B2 (en) 2008-02-08 2010-08-03 Controlling apparatus and controlling method

Publications (1)

Publication Number Publication Date
WO2009098777A1 true WO2009098777A1 (ja) 2009-08-13

Family

ID=40951865

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2008/052145 WO2009098777A1 (ja) 2008-02-08 2008-02-08 バックアップ方法、格納方法、及びディスクアレイ装置

Country Status (4)

Country Link
US (1) US8074104B2 (ja)
EP (1) EP2249244B1 (ja)
JP (1) JP5398551B2 (ja)
WO (1) WO2009098777A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203862A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd 退避処理装置、及び、退避処理方法
WO2020217928A1 (ja) * 2019-04-25 2020-10-29 日立オートモティブシステムズ株式会社 電子制御装置

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158687B2 (en) * 2013-03-04 2015-10-13 Dot Hill Systems Corporation Method and apparatus for processing fast asynchronous streams
JP2017041182A (ja) 2015-08-21 2017-02-23 ファナック株式会社 数値制御装置
US10649896B2 (en) * 2016-11-04 2020-05-12 Samsung Electronics Co., Ltd. Storage device and data processing system including the same
US10528264B2 (en) * 2016-11-04 2020-01-07 Samsung Electronics Co., Ltd. Storage device and data processing system including the same
US10833703B2 (en) 2017-12-13 2020-11-10 Canon Kabushiki Kaisha DMA transfer apparatus, method of controlling the same, communication apparatus, method of controlling the same, and non-transitory computer-readable storage medium

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04245072A (ja) * 1991-01-31 1992-09-01 Fujitsu Ltd 媒体上にデ−タ管理情報領域を備えたディスク装置
JPH05346889A (ja) 1992-06-15 1993-12-27 Hitachi Ltd キャッシュ制御方法およびキャッシュ制御装置
JPH06309234A (ja) * 1993-02-15 1994-11-04 Toshiba Corp ディスク制御装置
JPH09305491A (ja) 1996-05-20 1997-11-28 Toshiba Corp ディスクキャッシュシステム及びディスクキャッシュ方法
JP2000122909A (ja) * 1998-10-19 2000-04-28 Hitachi Ltd 不揮発性メモリを使用した外部記憶装置
WO2002054247A1 (fr) * 2000-12-28 2002-07-11 Sony Corporation Enregistreur de donnees et procede d'enregistrement de donnees dans une memoire flash
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
JP2004102539A (ja) * 2002-09-06 2004-04-02 Hitachi Communication Technologies Ltd 記憶装置
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2004318465A (ja) 2003-04-16 2004-11-11 Matsushita Electric Ind Co Ltd 電子機器
JP2006277395A (ja) 2005-03-29 2006-10-12 Matsushita Electric Ind Co Ltd 情報処理装置及び情報処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0392895B1 (en) * 1989-04-13 1995-12-13 Sundisk Corporation Flash EEprom system
GB2256735B (en) * 1991-06-12 1995-06-21 Intel Corp Non-volatile disk cache
US5586291A (en) * 1994-12-23 1996-12-17 Emc Corporation Disk controller with volatile and non-volatile cache memories
US6243795B1 (en) * 1998-08-04 2001-06-05 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Redundant, asymmetrically parallel disk cache for a data storage system
US6792518B2 (en) * 2002-08-06 2004-09-14 Emc Corporation Data storage system having mata bit maps for indicating whether data blocks are invalid in snapshot copies
EP1897635B1 (en) 2005-06-13 2015-04-22 Sintokogio, Ltd. A method for making flaskless upper and lower molds, an apparatus therefor, and a method for placing a core.
JP2007199977A (ja) * 2006-01-26 2007-08-09 Yokogawa Denshikiki Co Ltd データ記憶装置及びデータ記憶方法
JP4930555B2 (ja) * 2009-07-09 2012-05-16 富士通株式会社 制御装置、制御方法およびストレージシステム

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04245072A (ja) * 1991-01-31 1992-09-01 Fujitsu Ltd 媒体上にデ−タ管理情報領域を備えたディスク装置
JPH05346889A (ja) 1992-06-15 1993-12-27 Hitachi Ltd キャッシュ制御方法およびキャッシュ制御装置
JPH06309234A (ja) * 1993-02-15 1994-11-04 Toshiba Corp ディスク制御装置
JPH09305491A (ja) 1996-05-20 1997-11-28 Toshiba Corp ディスクキャッシュシステム及びディスクキャッシュ方法
JP2000122909A (ja) * 1998-10-19 2000-04-28 Hitachi Ltd 不揮発性メモリを使用した外部記憶装置
WO2002054247A1 (fr) * 2000-12-28 2002-07-11 Sony Corporation Enregistreur de donnees et procede d'enregistrement de donnees dans une memoire flash
JP2004021811A (ja) * 2002-06-19 2004-01-22 Hitachi Ltd 不揮発メモリを使用したディスク制御装置
JP2004102539A (ja) * 2002-09-06 2004-04-02 Hitachi Communication Technologies Ltd 記憶装置
JP2004310650A (ja) * 2003-04-10 2004-11-04 Renesas Technology Corp メモリ装置
JP2004318465A (ja) 2003-04-16 2004-11-11 Matsushita Electric Ind Co Ltd 電子機器
JP2006277395A (ja) 2005-03-29 2006-10-12 Matsushita Electric Ind Co Ltd 情報処理装置及び情報処理方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012203862A (ja) * 2011-03-28 2012-10-22 Fujitsu Ltd 退避処理装置、及び、退避処理方法
WO2020217928A1 (ja) * 2019-04-25 2020-10-29 日立オートモティブシステムズ株式会社 電子制御装置
JPWO2020217928A1 (ja) * 2019-04-25 2020-10-29
CN113711209A (zh) * 2019-04-25 2021-11-26 日立安斯泰莫株式会社 电子控制装置
US11726853B2 (en) 2019-04-25 2023-08-15 Hitachi Astemo, Ltd. Electronic control device

Also Published As

Publication number Publication date
JPWO2009098777A1 (ja) 2011-05-26
EP2249244B1 (en) 2014-12-17
US20100299565A1 (en) 2010-11-25
US8074104B2 (en) 2011-12-06
JP5398551B2 (ja) 2014-01-29
EP2249244A1 (en) 2010-11-10
EP2249244A4 (en) 2013-12-11

Similar Documents

Publication Publication Date Title
JP5466953B2 (ja) バックアップ方法及びディスクアレイシステム
JP5398551B2 (ja) バックアップ方法、コントローラ、及びディスクアレイシステム
US8826098B2 (en) Data signatures to determine successful completion of memory backup
CN102662790B (zh) 维持固态存储系统中的数据冗余的系统和方法
US8448047B2 (en) Storage device, storage control device, data transfer intergrated circuit, and storage control method
US8838918B2 (en) Information processing apparatus and data backup method
US7739544B2 (en) Disk array system and rebuild method thereof
JP3682256B2 (ja) ディスクアレイ装置及び同装置におけるパリティ処理方法
US8479045B2 (en) Controller for disk array device, data transfer device, and method of power recovery process
US20110225345A1 (en) Storage System Having Volatile Memory and Non-Volatile Memory
JP2004021989A (ja) データをバックアップする方法
US6816981B2 (en) Disk array device including a memory with backup power supply and method thereof
JP5286956B2 (ja) 制御方法、ディスクアレイ装置
JP2008204041A (ja) ストレージ装置及びデータ配置制御方法
CN101923446B (zh) 存储阵列辅助架构
EP2466464A2 (en) Data manipulation at power fail
JP2010086009A (ja) 記憶装置およびメモリ制御方法
JP5691311B2 (ja) 退避処理装置、退避処理方法および退避処理プログラム
US20200319977A1 (en) Method for backing up and restoring digital data stored on a solid-state storage device and a highly secure solid-state storage device
JP5360287B2 (ja) データ制御方法およびシステム
JP2007058873A (ja) 不揮発メモリを使用したディスク制御装置
JP2020077248A (ja) ストレージシステム、データ管理方法、及びデータ管理プログラム
JP3590015B2 (ja) ディスクアレイ装置および冗長データをもつ論理ドライブの一貫性回復方法
JP2008217811A (ja) 不揮発メモリを使用したディスク制御装置
JPH04125725A (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: 08711024

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2009552365

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2008711024

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE