WO2013080299A1 - データ管理装置、データコピー方法、およびプログラム - Google Patents

データ管理装置、データコピー方法、およびプログラム Download PDF

Info

Publication number
WO2013080299A1
WO2013080299A1 PCT/JP2011/077536 JP2011077536W WO2013080299A1 WO 2013080299 A1 WO2013080299 A1 WO 2013080299A1 JP 2011077536 W JP2011077536 W JP 2011077536W WO 2013080299 A1 WO2013080299 A1 WO 2013080299A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
read
storage device
ssd
data set
Prior art date
Application number
PCT/JP2011/077536
Other languages
English (en)
French (fr)
Inventor
好次 佐野
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to PCT/JP2011/077536 priority Critical patent/WO2013080299A1/ja
Publication of WO2013080299A1 publication Critical patent/WO2013080299A1/ja
Priority to US14/281,960 priority patent/US20140281316A1/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/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • 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

Definitions

  • the present invention relates to a data management device, a data copy method, and a program for copying data between storage devices.
  • a computer is equipped with a volatile storage device such as a DIMM (Dual In-line Memory Module) as a main storage device.
  • a system storage device SSU: System Storage Unit
  • UPS Uninterruptible Power Supply
  • a device equipped with a UPS when the power supply to the apparatus is interrupted due to a power failure or the like, the power supply is ensured for a certain time by the UPS.
  • the data in the volatile storage device can be protected by saving the data in the volatile storage device to the nonvolatile storage device while the power is supplied by the UPS.
  • an SSD Solid-State Drive
  • a hard disk device is used as the volatile storage device.
  • the data saved in the nonvolatile storage device is written back to the volatile storage device when the power is restored. Then, the operation of the device is resumed using the data written back to the volatile storage device.
  • a content evacuation method is also considered.
  • the reading speed of data from a nonvolatile storage device used for saving data is generally lower than that of a volatile storage device such as a DIMM.
  • a volatile storage device such as a DIMM.
  • the reliability of the data can be improved by saving in duplicate.
  • data is saved in duplicate, data is written to each of the plurality of nonvolatile storage devices in order from the data read from the volatile storage device.
  • all the data is read out from one nonvolatile storage device having a slow reading speed, and the data restoration is performed.
  • the data restoration takess time.
  • data is partially read from each of the plurality of nonvolatile storage devices, partial data in each nonvolatile storage device is read by random access. Reading data by random access takes time compared to sequential access. As described above, since it takes time to restore data from the nonvolatile storage device to the volatile storage device, for example, the time from power recovery to the resumption of operation of the device is prolonged.
  • an object of the present invention is to provide a data management device, a data copy method, and a program capable of improving the efficiency of restoration processing of data saved in a nonvolatile storage device to a volatile storage device.
  • a data management device includes a volatile storage device, a first nonvolatile storage device, a second nonvolatile storage device, a first copy means, and a second copy means.
  • the first non-volatile storage device is provided with a first continuous area that can be accessed sequentially and a second continuous area that can be accessed sequentially.
  • the second non-volatile memory device is provided with a third continuous area that can be accessed sequentially and a fourth continuous area that can be accessed sequentially.
  • the first copy means divides the data in the volatile storage device into a first data set and a second data set.
  • the first copy means reads the data of the first data set and the data of the second data set from the volatile storage device.
  • the first copying means writes the read data of the first data set to the first continuous area and the fourth continuous area, and reads the read data of the second data set to the second continuous area. Write to the third continuous area.
  • the second copy means reads the data of the first data set from the first continuous area by sequential access and the second from the third continuous area by sequential access. Reading data from the data set is executed in parallel. Then, the second copying unit writes the read data of the first data set and the data of the second data set in the volatile storage device.
  • FIG. 10 is a flowchart illustrating an example of a procedure of a DIMM data read process according to the second embodiment. It is a flowchart which shows an example of the procedure of the SSD write processing of 2nd Embodiment. It is a figure which shows an example of the time chart of the data restoration process of 2nd Embodiment. It is a figure which shows an example of the circuit structure which implement
  • restoration in a memory control circuit. 14 is a flowchart illustrating an example of a procedure of SSD data read processing according to the second embodiment.
  • 10 is a flowchart illustrating an example of a procedure of a data write process to a DIMM according to the second embodiment. It is a figure which shows an example of the procedure of the restoration
  • FIG. 14 is a flowchart illustrating an example of a procedure of SSD data read processing according to the third embodiment.
  • 14 is a flowchart illustrating an example of a procedure of a data write process to a DIMM according to the third embodiment. It is a figure explaining the data preserve
  • 15 is a flowchart illustrating an example of a procedure of SSD writing processing according to the fourth embodiment. It is a flowchart which shows an example of the SSD data read-out procedure at the time of the data restoration in 4th Embodiment. It is a flowchart which shows the procedure of the restoration
  • the data stored in the volatile storage device is saved by half in the storage area where each of the multiple nonvolatile storage devices that are duplicated can be sequentially accessed (sequential access). It is designed to shorten the time when restoring the file.
  • FIG. 1 is a diagram illustrating a functional configuration example of an apparatus according to the first embodiment.
  • the data management device 1 includes a volatile storage device 2, a first nonvolatile storage device 3, a second nonvolatile storage device 4, a first copy unit 5, and a second copy unit 6.
  • the volatile storage device 2 is, for example, a RAM (Random Access Memory).
  • the first nonvolatile storage device 3 is, for example, an SSD or an HDD (Hard Disk Drive).
  • the first non-volatile storage device 3 is provided with a first continuous area 3a that can be accessed sequentially and a second continuous area 3b that can be accessed sequentially.
  • the first nonvolatile storage device 3 has a storage capacity that is equal to or greater than the storage capacity of the volatile storage device 2.
  • the first continuous area 3a is a continuous storage area from the beginning of the storage area of the first nonvolatile storage device 3, for example.
  • the second continuous area 3b is a continuous storage area adjacent to the rear of the first continuous area 3a in the first nonvolatile storage device 3, for example.
  • the second nonvolatile storage device 4 is, for example, an SSD or an HDD.
  • the second non-volatile storage device 4 is provided with a third continuous area 4a that can be accessed sequentially and a fourth continuous area 4b that can be accessed sequentially.
  • the second nonvolatile storage device 4 has a storage capacity that is equal to or greater than the storage capacity of the volatile storage device 2.
  • the third continuous area 4a is a continuous storage area from the beginning of the storage area of the second nonvolatile storage device 4, for example.
  • the fourth continuous area 4b is a continuous storage area adjacent to the rear of the third continuous area 4a in the second nonvolatile memory device 4, for example.
  • the continuous storage area that can be accessed sequentially is, for example, a storage area in which addresses are continuous. In other words, the storage area can be accessed as a whole by counting up the address.
  • the first continuous area 3a, the second continuous area 3b, the third continuous area 4a, and the fourth continuous area 4b each have a storage capacity that is half the storage capacity of the volatile storage device 2.
  • the first copy unit 5 divides the data in the volatile storage device 2 into a first data set 7 and a second data set 8. Data and data of the second data set 8 are read from the volatile storage device 2.
  • the first copy instruction is, for example, an instruction to save data in the volatile storage device 2 to the first nonvolatile storage device 3 and the second nonvolatile storage device 4.
  • the first data set 7 is a set of data in the first memory module 2a, for example.
  • the second data set 8 is, for example, a data set in the second memory module 2b.
  • the first copying means 5 writes the read data of the first data set 7 in the first continuous area 3a and the fourth continuous area 4b. Further, the first copying means 5 writes the read data of the second data set 8 in the second continuous area 3b and the third continuous area 4a.
  • the second copy means 6 reads the data of the first data set 7 from the first continuous area 3a by sequential access and from the third continuous area 4a by sequential access.
  • the data reading of the second data set 8 is executed in parallel.
  • the second copy instruction is, for example, an instruction to restore data saved in the first nonvolatile storage device 3 and the second nonvolatile storage device 4 to the volatile storage device 2.
  • the second copy means 6 reads the data of the second data set 8 in order from the head address of the third continuous area 4a.
  • the second copy means 6 writes the read data of the first data set 7 and the data of the second data set 8 into the volatile storage device 2.
  • the second copy unit 6 writes the data of the first data set 7 to the first memory module 2a, and writes the data of the second data set 8 to the second memory module 2b.
  • the first copy unit 5 volatilizes the data in the first data set 7 and the data in the second data set 8. Read from the volatile storage device 2. Then, the first copy means 5 writes the read data of the first data set 7 into the first continuous area 3a and the fourth continuous area 4b, and the read data of the second data set 8 is The data is written in the second continuous area 3b and the third continuous area 4a.
  • the second copy means 6 reads the data of the first data set 7 in order from the head address of the first continuous area 3a, and the third continuous area.
  • the data of the second data set 8 is read in order from the top address of 4a. That is, sequential data reading is performed from both the first continuous area 3a and the third continuous area 4a. Further, the read data of the first data set 7 and the data of the second data set 8 are written into the volatile storage device 2 by the second copy means 6.
  • the data in the volatile storage device 2 is duplicated and saved in the first nonvolatile storage device 3 and the second nonvolatile storage device 4.
  • each data set is saved in a continuous area that can be accessed sequentially.
  • the volatile storage device 2 is read out sequentially from each of the first nonvolatile storage device 3 and the second nonvolatile storage device 4 in half in parallel by halving all the data saved.
  • Can restore data can be reduced to about half compared to the case where data is read from the entire one nonvolatile memory device.
  • the storage capacity of the non-volatile storage device does not increase as compared with a general technique for duplicating and saving data.
  • the first copy unit 5 and the second copy unit 6 can be realized by an electronic circuit such as a memory control circuit in the data management device 1. Further, the first copy means 5 and the second copy means 6 can be realized by a CPU.
  • the first copying unit 5 can write data to the first nonvolatile memory device 3 and the second nonvolatile memory device 4 as follows.
  • the first copy means 5 has an address addition value corresponding to a storage capacity of half or more of the storage capacity of the volatile storage device 2. Then, the first copy unit 5 writes the data of the first data set 7 read from the volatile storage device 2 in order from the top of the first nonvolatile storage device 3. The first copy means 5 uses the value obtained by adding the addition value to the write address of the data to the first nonvolatile storage device 3 as the write address to the second nonvolatile storage device 4, and uses the data as the write address. Write to the second nonvolatile memory device 4.
  • the first copy means 5 writes the data of the second data set 8 read from the volatile storage device 2 in order from the top of the second nonvolatile storage device 4.
  • the first copying means 5 uses the value obtained by adding the addition value to the write address of the data to the second nonvolatile storage device 4 as the write address to the first nonvolatile storage device 3, and the data Write to the first nonvolatile memory device 3.
  • the second copy unit 6 can read redundant data corresponding to the data.
  • the second copying means 6 performs the following processing when an uncorrectable error occurs.
  • the second copy means 6 When the second copy means 6 detects an uncorrectable error in the data read from the first nonvolatile storage device 3, the second copy means 6 stores the address of the data in the first nonvolatile storage device 3. Further, the second copy means 6 uses the address obtained by adding the added value to the stored address as a read address from the second nonvolatile memory device 4 and replaces the data in which the error is detected with the second nonvolatile memory. Data is read from the storage device 4.
  • the second copy means 6 When the second copy means 6 detects an uncorrectable error in the data read from the second nonvolatile memory device 4, it stores the address of the data in the second nonvolatile memory device 4.
  • the second copy means 6 uses the address obtained by adding the added value to the stored address as a read address from the first nonvolatile memory device 3 and replaces the data in which the error is detected with the first nonvolatile memory device. 3 reads data.
  • the second embodiment speeds up the process of restoring the data saved in the volatile storage device to the nonvolatile storage device in the SSU used in the compound computer system.
  • the SSU in the second embodiment is an example of the data management apparatus 1 shown in the first embodiment.
  • FIG. 2 is a diagram illustrating a system configuration example according to the second embodiment.
  • the SSU 100 is connected to the cluster 200.
  • the SSU 100 is equipped with a nonvolatile storage device such as a RAM.
  • a nonvolatile storage device of the SSU 100 data shared by each of the plurality of CPUs in the cluster 200 is stored.
  • FIG. 3 is a diagram illustrating an example of a hardware configuration of each device.
  • the cluster 200 includes a plurality of CPUs 211, 212, 213, a memory 220, and a system controller 230.
  • the system controller 230 performs data communication with the SSU 100.
  • the SSU 100 includes DIMMs 111 and 112, SSDs 121 and 122, a memory control circuit 130, an interface circuit 101, a UPS control circuit 102, a UPS 103, and an SSU control circuit 104.
  • the DIMMs 111 and 112 are volatile storage devices that store data used by the CPUs 211, 212, and 213 in the cluster 200. For example, RAM chips are mounted on the DIMMs 111 and 112. Each of the DIMMs 111 and 112 has a write counter and a read counter. Each time data is written to the DIMMs 111 and 112, the write counters of the DIMMs 111 and 112 are counted up by a value corresponding to the amount of data written. The values of the write counters of the DIMMs 111 and 112 indicate the addresses of the DIMMs 111 and 112 to which data is next written.
  • the read counters of the DIMMs 111 and 112 are counted up by a value corresponding to the read data amount.
  • the values of the read counters of the DIMMs 111 and 112 indicate the addresses of the DIMMs 111 and 112 to which data is next written.
  • SSDs 121 and 122 are nonvolatile storage devices used for saving data in DIMMs 111 and 112. For example, flash memories are built in the SSDs 121 and 122. Each of the SSDs 121 and 122 has a write counter and a read counter. Each time data is written to the SSDs 121 and 122, the write counters of the SSDs 121 and 122 are incremented by a value corresponding to the amount of data written. The values of the write counters of the SSDs 121 and 122 indicate the addresses of the SSDs 121 and 122 to which data is next written. Each time data is read from the SSDs 121 and 122, the read counters of the SSDs 121 and 122 are incremented by a value corresponding to the read data amount. The values of the read counters of the SSDs 121 and 122 indicate the addresses of the SSDs 121 and 122 to which data is next written.
  • the memory control circuit 130 controls input / output of data to / from the DIMMs 111 and 112 and the SSDs 121 and 122.
  • the memory control circuit 130 receives data sent from the CPUs 211, 212, and 213 of the cluster 200 via the interface circuit 101 and writes them in the DIMMs 111 and 112.
  • the memory control circuit 130 receives a read request from the CPUs 211, 212, and 213 of the cluster 200 via the interface circuit 101
  • the memory control circuit 130 reads out the data from the DIMMs 111 and 112 and transfers it to the cluster 200.
  • the memory control circuit 130 copies the data in the DIMMs 111 and 112 to the SSDs 121 and 122 while the power is supplied by the UPS 103. In addition, when the power supply from the external power supply 21 is restored, the memory control circuit 130 copies the data saved in the SSDs 121 and 122 to the DIMMs 111 and 112.
  • the interface circuit 101 performs data communication with the cluster 200.
  • the UPS control circuit 102 controls the operation of the UPS 103.
  • the UPS control circuit 102 controls the storage of electricity to the UPS 103, whether the electricity supply source is the external power source 21, the UPS 103, or the like.
  • the UPS control circuit 102 switches the power supply source to the UPS 103 and notifies the SSU control circuit 104 that the external power supply has been interrupted.
  • the UPS control circuit 102 switches the power supply source to the external power supply 21 and notifies the SSU control circuit 104 that the power supply from the external power supply 21 has been restored.
  • the UPS 103 is equipped with a battery and charges the battery with electricity while power is supplied from the external power source 21. When the power supply from the external power supply 21 is interrupted, the UPS 103 supplies the electricity stored in the battery to each circuit of the SSU 100.
  • the SSU control circuit 104 controls the operation of the SSU 100. For example, when the UPS control circuit 102 notifies that the power supply from the external power supply 21 has been interrupted, the SSU control circuit 104 transmits a data save instruction in the DIMMs 111 and 112 to the memory control circuit 130. Further, when the UPS control circuit 102 is notified that the power supply from the external power supply 21 has been restored, the SSU control circuit 104 transmits a data restoration instruction to the DIMMs 111 and 112 to the memory control circuit 130.
  • the memory control circuit 130 saves the data in the DIMMs 111 and 112 to the SSDs 121 and 122 and restores the data saved in the SSDs 121 and 122 to the DIMMs 111 and 112.
  • FIG. 4 is a diagram showing an example of an internal structure relating to a data saving / restoring function of the memory control circuit.
  • the memory control circuit 130 includes a memory configuration management circuit 131, a data save circuit 132, and a data restoration circuit 133.
  • the memory configuration management circuit 131 manages the number of DIMMs 111 and 112 and the storage capacity of each of the DIMMs 111 and 112. In addition, the memory configuration management circuit 131 calculates a boundary address used when saving data to the SSDs 121 and 122 based on the total storage capacity of the DIMMs 111 and 112. As the boundary address, for example, a value obtained by dividing the total storage capacity of the DIMMs 111 and 112 by the number of SSDs 121 and 122 is used. That is, the addresses of the DIMMs 111 and 112 and the SSDs 121 and 122 are numerical values in ascending order starting from 0, and are allocated for each byte.
  • the value obtained by dividing the total storage capacity of the DIMMs 111 and 112 in bytes by the number “2” of the SSDs 121 and 122 secures a storage area for one DIMM from the top of the SSD storage area. This corresponds to the address of the next position in the storage area.
  • the data saving circuit 132 saves the data in the DIMMs 111 and 112 to the SSDs 121 and 122 in response to the data saving instruction. For example, the data saving circuit 132 reads data from the DIMMs 111 and 112 and writes the read data to the SSDs 121 and 122 in a duplicated manner.
  • the data restoration circuit 133 restores the data saved in the SSDs 121 and 122 to the DIMMs 111 and 112 according to the data restoration instruction. For example, the data restoration circuit 133 reads data from the SSDs 121 and 122 and writes the read data to the DIMMs 111 and 112. At this time, the data restoration circuit 133 reads half of the data from the SSD 121 and the SSD 122, respectively, and restores the data of the DIMMs 111 and 112.
  • the data saving circuit 132 is an example of the first copy unit 5 of the first embodiment shown in FIG.
  • the data restoration circuit 133 is an example of the second copy unit 6 of the first embodiment shown in FIG.
  • the boundary address is an example of the added value of the address described in the first embodiment.
  • FIG. 5 is a diagram for explaining data to be saved and restored.
  • the DIMM 111 and the DIMM 112 have the same storage capacity.
  • the SSD 121 and the SSD 122 each have a storage capacity that is twice or more that of the DIMM 111.
  • the identifier of the DIMM 111 is “DIMM-A”, and the identifier of the DIMM 112 is “DIMM-B”.
  • the identifier of the SSD 121 is “SSD-A”
  • the identifier of the SSD 122 is “SSD-B”.
  • the data in the DIMM 111 is temporarily stored in the buffer 134 in the memory control circuit 130.
  • Data in the buffer 134 is stored in the SSDs 121 and 122.
  • the data of the DIMM 111 is written in both the first half upper area 121 a in the SSD 121 and the second half lower area 122 b in the SSD 122.
  • the data of the DIMM 111 is duplicated and stored in the SSDs 121 and 122.
  • the data in the DIMM 112 is temporarily stored in the buffer 135 in the memory control circuit 130.
  • Data in the buffer 135 is stored in the SSDs 121 and 122.
  • the data of the DIMM 115 is written in both the lower half lower area 121 b in the SSD 121 and the upper half upper area 122 a in the SSD 122.
  • the data of the DIMM 112 is duplicated and stored in the SSDs 121 and 122.
  • the data saved from the upper area 121 a in the first half of the SSD 121 is read out and temporarily stored in the buffer 134. Then, the data in the buffer 134 is written into the DIMM 111. Similarly, the data saved from the upper area 122 a in the first half of the SSD 122 is read out and temporarily stored in the buffer 135. Then, the data in the buffer 135 is written into the DIMM 112.
  • ECC error correcting code
  • CRC Cyclic Redundancy Check
  • the storage area in the DIMMs 111 and 112 is divided into a plurality of blocks.
  • the storage capacity per block is 512 bytes. Data is saved / restored for each block of data (block data).
  • FIG. 6 is a diagram showing an example of data saving for each block data.
  • the DIMMs 111 and 112 each have a storage capacity of 4 GB.
  • Each of the SSDs 121 and 122 has a storage capacity of 8 GB.
  • the SSDs 121 and 122 each have a storage capacity (4 GB) that is half of the total storage capacity (8 GB) of the DIMMs 111 and 112 from the top, and the subsequent areas as the lower areas.
  • the head address of the lower area is set as the boundary address.
  • the block data is indicated by alphabets “A to Z”.
  • the block data “A” at the head of the DIMM 111 is saved at the head of the upper area of the SSD 121 and the head of the lower area of the SSD 122.
  • Each block data after the block data “A” of the DIMM 111 is stored following the block data “A” of the SSDs 121 and 122.
  • the block data “B” at the head of the DIMM 112 is saved at the head of the lower area of the SSD 121 and the head of the upper area of the SSD 122.
  • Each block data after the block data “B” of the DIMM 112 is stored following the block data “B” of the SSDs 121 and 122.
  • the block data can be read sequentially and in parallel from the upper areas of the SSDs 121 and 122, and the restoration process can be speeded up.
  • the data saving format to the SSDs 121 and 122 can be the same regardless of the number of DIMMs.
  • two DIMMs 111 and 112 are mounted in the SSU 100, but there may be one DIMM.
  • block data in one DIMM is evacuated by being alternately distributed to an upper area and a lower area of each SSD.
  • FIG. 7 is a diagram showing an example of data saving when there is one DIMM.
  • data of 4 GB DIMM 111-1 is saved in two 4 GB SSDs 121-1 and 122-1. Since there is one DIMM 111-1, the total storage capacity of the DIMM 111-1 is 4 GB, the storage area for 2 GB from the top of each SSD 121-1, 122-1 is the upper area, and the subsequent areas are the lower areas.
  • the block data “A” at the head of the DIMM 111-1 is saved at the head of the upper area of the SSD 121-1 and the head of the lower area of the SSD 122-1.
  • the second block data “B” of the DIMM 111-1 is saved at the head of the lower area of the SSD 121-1 and the head of the upper area of the SSD 122-1.
  • the third block data “C” of the DIMM 111-1 is saved following the block data “A” of the SSD 121-1 and the SSD 122-1.
  • the fourth block data “D” of the DIMM 111-1 is saved following the block data “B” of the SSD 121-1 and the SSD 122-1.
  • the block data read from the DIMM 111-1 is alternately stored in the upper area and the lower area in the SSD 121-1. Further, the block data read from the DIMM 111-1 is also stored alternately in the upper area and the lower area in the SSD 122-1. However, for the SSD 121-1, data storage is started from the upper area, and for the SSD 122-1, data storage is started from the lower area.
  • FIG. 8 is a diagram showing an example of a time chart of the data saving process.
  • the upper part of FIG. 8 shows the read timing of block data from the DIMM 111 with the identifier “DIMM-A” and the DIMM 112 with the identifier “DIMM-B”.
  • the lower part of FIG. 8 shows the block data write timings of the SSD 121 with the identifier “SSD-A” and the SSD 122 with the identifier “SSD-B”.
  • the address block “A” in the DIMM 111 with the identifier “DIMM-A” and the address block “B” in the DIMM 112 with the identifier “DIMM-B” are read in parallel. If there is no error in the read data, writing to the upper area in the SSD 121 of the address block “A” with the identifier “SSD-A” and SSD 122 of the identifier “SSD-B” of the address block “B”. Writing to the upper area is executed in parallel.
  • the block data is sequentially read from the DIMMs 111 and 112, and is duplicated and saved in the SSDs 121 and 122.
  • the saving of data in the DIMMs 111 and 112 is completed.
  • the operations of the DIMMs 111 and 112 are faster than the operations of the SSDs 121 and 122. For this reason, as shown in FIG. 8, once the data of the DIMMs 111 and 112 are read, it takes time to write to the SSD. Therefore, a sufficient interval is required for reading the next DIMM data.
  • FIG. 9 is a diagram showing an example of a data array in the SSD of saved data.
  • the data stored in the DIMM 111 is stored in the same array as that stored in the DIMM 111.
  • the data stored in the DIMM 112 is stored in the same array as that stored in the DIMM 112.
  • FIG. 10 is a diagram illustrating an example of a circuit configuration for realizing data saving in the memory control circuit.
  • the data saving process is realized by the memory configuration management circuit 131 and the data saving circuit 132 in the memory control circuit 130.
  • the memory configuration management circuit 131 includes a register group 131a, a DIMM capacity calculation circuit 131b, and a boundary address calculation circuit 131c.
  • the register group 131a has a plurality of registers. In the register, the number of DIMMs mounted on the SSU 100 and the storage capacity of each DIMM are set. For example, the number of DIMMs and the storage capacity of each DIMM are automatically determined by the memory control circuit 130 when the SSU is activated, and are set in predetermined registers in the register group 131a.
  • the DIMM capacity calculation circuit 131b calculates the total storage capacity of the DIMM. For example, the DIMM capacity calculation circuit 131b acquires the storage capacity of each DIMM from the register group 131a and totals the acquired storage capacity.
  • the boundary address calculation circuit 131c calculates a boundary address when data is saved in the SSDs 121 and 122. For example, the boundary address calculation circuit 131c sets a value obtained by dividing the total storage capacity of the DIMM calculated by the DIMM capacity calculation circuit 131b by 2 as the boundary address.
  • the data saving circuit 132 has buffers 134a and 135a for temporarily storing block data read from the DIMMs 111 and 112.
  • the block data output from the DIMM 111 is input to the data check circuit 132a.
  • the data check circuit 132a performs error check by ECC. If there is no error, the data check circuit 132a transfers the block data to the buffer selection circuit 132c.
  • the buffer selection circuit 132c selects a buffer for writing the input block data. For example, the buffer selection circuit 132c acquires the number of DIMMs from the register group 131a. If the number of DIMMs is two as shown in FIG. 6, the buffer selection circuit 132c writes the input block data to the buffer 134a. Further, as shown in FIG. 7, if the number of DIMMs is one, the buffer selection circuit 132c writes the input block data alternately into the buffer 134a and the buffer 135a.
  • the block data output from the DIMM 112 is input to the data check circuit 132b.
  • an error check by ECC is performed. If there is no error, the data check circuit 132b writes the block data to the buffer 135a.
  • a write counter 132d and a read counter 132f are connected to the buffer 134a.
  • the write counter 132d is a counter indicating a data write position to the buffer 134a. Each time data is stored in the buffer 134a, the write counter 132d is incremented by a value corresponding to the stored data amount.
  • the read counter 132f is a counter that indicates the read position of data from the buffers 134a and 135a. Each time data is read from the buffers 134a and 135a, the read counter 132f is incremented by the read data amount. However, since the reading counter 132f reads the block data for one block from the buffers 134a and 135a twice, the value is returned by one block after the first reading is completed.
  • a counter comparison circuit 132h is connected to the write counter 132d and the read counter 132f.
  • a write counter 132e is connected to the buffer 135a.
  • the write counter 132e is a counter that indicates a data write position in the buffer 135a. Each time data is stored in the buffer 135a, the write counter 132e is incremented by a value corresponding to the stored data amount.
  • the counter comparison circuit 132h compares the value of the write counter 132d with the value of the read counter 132f to determine the free capacity of the buffer 134a. For example, the difference between the value of the write counter 132d and the value of the read counter 132f is the data amount stored in the buffer 134a and waiting to be read. When the free capacity is equal to block data (for example, 512 bytes), the counter comparison circuit 132h outputs a signal indicating that reading is possible to the read control circuit 132i.
  • the data saving instruction from the SSU control circuit 104 is input to the read control circuit 132i.
  • the read control circuit 132 i starts reading data for each block data from the DIMMs 111 and 112.
  • the read control circuit 132 i outputs the address of the data block to be read and the read permission signal to the DIMMs 111 and 112.
  • block data is read from the DIMMs 111 and 112.
  • the read control circuit 132i performs read control of the next data block in the DIMMs 111 and 112.
  • the data check circuit 132j performs an error check on the data stored in the buffer 134a. For example, the data check circuit 132j performs ECC error check. If there is no error in the block data stored in the buffer 134a, the data check circuit 132j outputs the block data to the write control circuit 132l.
  • the data check circuit 132k performs an error check on the data stored in the buffer 135a. For example, the data check circuit 132k performs ECC error check. If there is no error in the block data stored in the buffer 135a, the data check circuit 132k outputs the block data to the write control circuit 132l.
  • the write control circuit 132l controls the writing of the block data read from the DIMMs 111 and 112 to the SSDs 121 and 122. For example, the write control circuit 132l acquires the boundary address from the boundary address calculation circuit 131c. Then, the write control circuit 132l writes the block data read from the DIMM 111 in order from the top of the SSD 121 and also in order from the boundary address of the SSD 122. The write control circuit 132l writes the block data read from the DIMM 112 in order from the top of the SSD 122 and also in order from the boundary address of the SSD 121.
  • the write control circuit 132l acquires the total storage capacity of the DIMMs 111 and 112 from the DIMM capacity calculation circuit 131b. Then, the write control circuit 132l determines that the data saving is completed when the data writing for the total storage capacity of the DIMMs 111 and 112 is completed.
  • a CRC generation circuit 132m is provided between the write control circuit 132l and the SSD 121.
  • the CRC generation circuit 132m generates a CRC code of the block data to be written to the SSD 121 and assigns the block code to the block data. As a result, block data with a CRC code is written to the SSD 121.
  • a CRC generation circuit 132n is provided between the write control circuit 132l and the SSD 122.
  • the CRC generation circuit 132n generates a CRC code for the block data to be written to the SSD 122 and assigns the CRC code to the block data. As a result, block data with a CRC code is written to the SSD 122.
  • the line which connects between each element shown in FIG. 10 shows a part of communication path, and communication paths other than the illustrated communication path can also be set.
  • the procedure of the data saving process when the number of DIMMs is two will be described in detail. Note that the number of DIMMs and the DIMM capacity used in the SSU 100 are determined when the SSU 100 is started up, and the number of DIMMs and the DIMM capacity are set in the register of the memory control circuit 130 when the SSU 100 is started up.
  • the data saving process is roughly divided into a process of reading data from the DIMMs 111 and 112 and storing it in the buffers 134a and 135a, and a process of writing the data in the buffers 134a and 135a to the SSDs 121 and 122.
  • each process will be described in detail.
  • FIG. 11 is a flowchart illustrating an example of a procedure of a DIMM data read process according to the second embodiment. In the following, the process illustrated in FIG. 11 will be described in order of step number.
  • Step S101 When the power from the external power source 21 fails, the UPS control circuit 102 detects the power failure. When detecting a power failure, the UPS control circuit 102 starts supplying power from the UPS 103 and notifies the SSU control circuit 104 of the occurrence of the power failure. The SSU control circuit 104 transmits a data save instruction to the memory control circuit 130 in response to the notification of the occurrence of a power failure. As a result, saving of data in the DIMMs 111 and 112 to the SSDs 121 and 122 is started.
  • Step S102 The read control circuit 132i determines whether or not the buffer has enough free space to store the block data. For example, the read control circuit 132i compares the value of the write counter 132d with the value of the read counter 132f to determine the free capacity in the buffer 134a. If there is free space for block data, the read control circuit 132i advances the process to step S103. If there is no free space for block data, the read control circuit 132i repeats the process of step S102 and waits for the free space to be equal to or greater than the block data capacity.
  • the read control circuit 132i reads block data for one block from each of the DIMMs 111 and 112.
  • the block data read from the DIMM 111 is input to the data check circuit 132a.
  • the block data read from the DIMM 112 is input to the data check circuit 132b.
  • Step S104 Each of the data check circuits 132a and 132b determines whether or not an uncorrectable error has been detected in the input block data. If there is an uncorrectable ECC error (for example, a multi-bit error), the data check circuits 132a and 132b forcibly terminate the process. If there is no error, the data check circuits 132a and 132b advance the process to step S105. In addition, even if there is an error, the data check circuits 132a and 132b correct the error if the error is correctable (for example, an error of only 1 bit), and the process proceeds to step S105.
  • an uncorrectable ECC error for example, a multi-bit error
  • the data check circuits 132a and 132b forcibly terminate the process. If there is no error, the data check circuits 132a and 132b advance the process to step S105. In addition, even if there is an error, the data check circuits 132a and 132b correct the error if the error is correctable (
  • the memory control circuit 130 When the DIMM data reading is forcibly terminated due to detection of an uncorrectable ECC error, for example, the memory control circuit 130 notifies the SSU control circuit 104 of the forced termination of data saving. Then, the SSU control circuit 104 stops all the functions of the SSU 100 and stops the power supply from the UPS 103.
  • Step S105 When no ECC error is detected or the error is corrected, block data is written to the buffers 134a and 135a. For example, block data read from the DIMM 111 is written at the address position indicated by the write counter 132d in the buffer 134a. The block data read from the DIMM 112 is written at the address indicated by the write counter 132e in the buffer 135a.
  • Step S106 The read control circuit 132i determines whether all data in the DIMMs 111 and 112 have been read. When the reading of all data is completed, the DIMM data reading process ends. If there is unread data in the DIMMs 111 and 112, the read control circuit 132i advances the process to step S102.
  • FIG. 12 is a flowchart illustrating an example of the procedure of the SSD writing process according to the second embodiment. In the following, the process illustrated in FIG. 12 will be described in order of step number.
  • Step S111 The write control circuit 132l determines whether or not there is data in the buffers 134a and 135a. For example, the write control circuit 132l receives the comparison result from the counter comparison circuit 132h, and determines that there is data in the buffers 134a and 135a when there is a difference between the value of the write counter 132d and the value of the read counter 132f. If there is data in the buffers 134a and 135a, the process proceeds to step S112. If there is no data in the buffers 134a and 135a, the process of step S111 is repeated.
  • the write control circuit 132l reads data from the buffers 134a and 135a. For example, one block of block data is read from the buffer 134a, 135a from the address indicated by the read counter 132f. Data read from the buffers 134a and 135a is input to the data check circuits 132j and 132k. Note that the value of the read counter 132f is incremented by the amount of data (one block) read from one of the buffers 134a and 135a.
  • Step S113 Each of the data check circuits 132j and 132k determines whether or not an uncorrectable error has been detected in the input block data. If there is an uncorrectable ECC error (for example, a multi-bit error), the data check circuits 132j and 132k forcibly terminate the process. If there is no error, the data check circuits 132j and 132k cause the process to proceed to step S114. Further, even if there is an error, the data check circuits 132j and 132k correct the error if it is a correctable ECC error (for example, an error of only 1 bit), and the process proceeds to step S114.
  • a correctable ECC error for example, an error of only 1 bit
  • the memory control circuit 130 When the DIMM data reading is forcibly terminated due to detection of an uncorrectable ECC error, for example, the memory control circuit 130 notifies the SSU control circuit 104 of the forced termination of data saving. Then, the SSU control circuit 104 stops all the functions of the SSU 100 and stops the power supply from the UPS 103.
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the SSDs 121 and 122. For example, the write control circuit 132l writes the block data read from the DIMM 111 to the address indicated by the write counter of the SSD 121. The write control circuit 132l writes the block data read from the DIMM 112 to the address indicated by the write counter of the SSD 122. The values of the SSD write counters of the SSDs 121 and 122 are counted up by the amount of data written to the SSDs 121 and 122, respectively.
  • the CRC data is added to the block data read from the DIMM 111 by the CRC generation circuit 132m, and the block data with the CRC code is stored in the SSD 121. Similarly, the CRC data is added to the block data read from the DIMM 112 by the CRC generation circuit 132n, and the block data with the CRC code is stored in the SSD 122.
  • Step S115 The write control circuit 132l determines whether or not writing of block data for one block is completed. When the writing of the block data for one block is completed, the write control circuit 132l advances the process to step S116. If the writing of block data for one block has not been completed, the write control circuit 132l waits for the completion of writing.
  • Step S116 The write control circuit 132l decreases the value of the read counter 132f regarding the buffers 134a and 135a and the write counter of the SSDs 121 and 122 by one block (rewinds the counter).
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the SSDs 121 and 122.
  • the write control circuit 132l uses the value obtained by adding the value of the boundary address to the value of the write counter of the SSD 121 as a write address, and writes the block data read from the DIMM 112 to the SSD 121.
  • the write control circuit 132l uses the value obtained by adding the value of the boundary address to the value of the write counter of the SSD 122 as a write destination address, and writes the block data read from the DIMM 111 to the SSD 122.
  • the values of the SSD write counters of the SSDs 121 and 122 are counted up by the amount of data written to the SSDs 121 and 122, respectively.
  • the block data read from the DIMM 112 is given a CRC code by the CRC generation circuit 132m, and the block data with the CRC code is stored in the SSD 121.
  • the CRC data is added to the block data read from the DIMM 111 by the CRC generation circuit 132n, and the block data with the CRC code is stored in the SSD 122.
  • the write control circuit 132l determines whether or not saving of all data in the DIMMs 111 and 122 has been completed. For example, the write control circuit 132l determines that all data has been saved when the SSD write address of either of the SSDs 121 and 122 matches the total storage capacity of the DIMM obtained from the DIMM capacity calculation circuit 131b. The write control circuit 132l ends the SSD write process when all the data has been saved. If there is data that has not been saved, the write control circuit 132l advances the process to step S111.
  • steps S111 to S117 is repeatedly executed until all the data in the DIMMs 111 and 112 are duplicated and saved in the SSDs 121 and 122.
  • the arrangement of the saved data is as shown in FIG.
  • FIG. 13 is a diagram illustrating an example of a time chart of data restoration processing according to the second embodiment.
  • the upper part of FIG. 13 shows the read timing of block data from the SSD 121 with the identifier “SSD-A” and the SSD 122 with the identifier “SSD-B”.
  • the lower part of FIG. 13 shows the block data write timings of the DIMM 111 with the identifier “DIMM-A” and the DIMM 112 with the identifier “DIMM-B”.
  • the address block “A” in the SSD 121 with the identifier “SSD-A” and the address block “B” in the SSD 122 with the identifier “SSD-B” are read in parallel. If there is no error in the read data, writing of address block “A” into DIMM 111 with identifier “DIMM-A”, writing of address block “B” into DIMM 112 with identifier “DIMM-B”, and Are executed in parallel. As a result, the address blocks “A” and “B” are restored to the DIMMs 111 and 112.
  • block data is sequentially read from the SSDs 121 and 122 and written to the DIMMs 111 and 112.
  • the restoration of data in the DIMMs 111 and 112 is completed.
  • the restoration of the data can be completed when the boundary address (4 Gbytes) written in the SSD 121 and the SSD 122 is read.
  • FIG. 14 is a diagram illustrating an example of a circuit configuration for realizing data restoration in the memory control circuit.
  • the data restoration process is realized by the memory configuration management circuit 131 and the data restoration circuit 133 in the memory control circuit 130.
  • the internal configuration of the memory configuration management circuit 131 is as described with reference to FIG.
  • the data restoration circuit 133 has buffers 134b and 135b for temporarily storing block data read from the SSDs 121 and 122.
  • a data check circuit 133a and an ECC generation circuit 133f are provided between the SSD 121 and the buffer 134b.
  • a data check circuit 133b and an ECC generation circuit 133g are provided between the SSD 122 and the buffer 135b.
  • the data check circuits 133a and 133b check whether the CRC code of the data read from the SSDs 121 and 122 is correct. When an error occurs in the data check, the data check circuits 133a and 133b notify the error information holding circuit 133c of the occurrence of the error.
  • the data check circuit 133a transfers the data read from the SSD 121 to the ECC generation circuit 133f.
  • the data check circuit 133b transfers the data read from the SSD 122 to the ECC generation circuit 133g.
  • the ECC generation circuit 133f generates an ECC of the block data read from the SSD 121, and stores the block data to which the ECC is added in the buffer 134b.
  • the ECC generation circuit 133g generates an ECC of the block data read from the SSD 122, and stores the block data to which the ECC is added in the buffer 135b.
  • the error information holding circuit 133c holds information (error information) related to the error notified from the data check circuits 133a and 133b.
  • the error information holding circuit 133c holds the identifier of the SSD from which data that has detected an error is read, the set of a restoration error flag, the read / write address of the data that has detected an error, and the number of read / writes. If an error is detected twice or more in the same SSD, the address is not updated and the address at the time of the first error is held.
  • the error information held by the error information holding circuit 133c is referred to by the read control circuit 133e.
  • the restoration data management circuit 133d manages a range in which data is read from the SSDs 121 and 122 based on the boundary address calculated by the boundary address calculation circuit 131c. Further, the restoration data management circuit 133d receives a notification of completion of writing of block data from the write control circuits 133o and 133p to the DIMMs 111 and 112, and determines whether or not writing for the total storage capacity of the DIMMs 111 and 112 has been completed. When the writing for the total storage capacity is completed, the restoration data management circuit 133d notifies the reading control circuit 133e of the end of reading.
  • the read control circuit 133e starts reading data from the SSDs 121 and 122 in response to a data restoration instruction from the SSU control circuit 104. For example, the read control circuit 133e instructs the SSDs 121 and 122 to read data for one block from the address determined by the restoration data management circuit 133d. However, the read control circuit 133e notifies the SSU control circuit 104 of the failure of restoration when the error information indicating the occurrence of an error in a plurality of SSDs is held in the error information holding circuit 133c. Stop reading data. When the read control circuit 133e receives a read end notification from the restoration data management circuit 133d, the read control circuit 133e ends the data read from the SSDs 121 and 122.
  • a write counter 133h and a read counter 133j are connected to the buffer 134b.
  • the write counter 133h is a counter that indicates a data write position to the buffer 134b. Each time data is stored in the buffer 134b, the write counter 133h is incremented by a value corresponding to the stored data amount.
  • the read counter 133j is a counter indicating the position where data is read from the buffer 134b. Each time data is read from the buffer 134b, the read counter 133j is incremented by the read data amount.
  • a write counter 133i and a read counter 133k are connected to the buffer 135b.
  • the write counter 133i is a counter that indicates a position where data is written to the buffer 135b.
  • the write counter 133i is incremented by a value corresponding to the stored data amount.
  • the read counter 133k is a counter that indicates the position where data is read from the buffer 135b. Each time data is read from the buffer 135b, the read counter 133k is incremented by the read data amount.
  • the data read from the buffer 134b is input to the data check circuit 133l.
  • the data check circuit 133l checks whether there is an ECC error in the block data read from the buffer 134b. If there is no error, the data check circuit 133l transfers the block data to the write destination selection circuit 133n.
  • the data read from the buffer 135b is input to the data check circuit 133m.
  • the data check circuit 133m checks whether there is an ECC error in the block data read from the buffer 135b. If there is no error, the data check circuit 133m transfers the block data to the write destination selection circuit 133n.
  • the write destination selection circuit 133n selects one of the block data read from each of the buffers 134b and 135b, and transmits it to one of the write control circuits 133o and 133p. For example, when there are two DIMMs, the write destination selection circuit 133n transmits the block data read from the buffer 134b to the write control circuit 133o, and transmits the block data read from the buffer 135b to the write control circuit 133p. . When there is only one DIMM, the write destination selection circuit 133n alternately selects block data read from the buffer 134b and block data read from the buffer 135b, and transmits the block data to the write control circuit 133o.
  • the write control circuit 133o writes the block data received from the write destination selection circuit 133n to the DIMM 111. Each time the writing of the block data for one block is completed, the writing control circuit 133o notifies the restoration data management circuit 133d of the writing completion.
  • the write control circuit 133p writes the block data received from the write destination selection circuit 133n to the DIMM 112. Each time the writing of the block data for one block is completed, the writing control circuit 133p notifies the restoration data management circuit 133d of the writing completion.
  • the line which connects between each element shown in FIG. 14 shows a part of communication path, and communication paths other than the illustrated communication path can also be set.
  • Data restoration processing is broadly divided into processing for reading data from the SSDs 121 and 122 and storing the data in the buffers 134b and 135b, and processing for writing data in the buffers 134b and 135b to the DIMMs 111 and 112. Hereinafter, each process will be described in detail.
  • FIG. 15 is a flowchart illustrating an example of a procedure of the SSD data read process according to the second embodiment. In the following, the process illustrated in FIG. 15 will be described in order of step number.
  • the read control circuit 133e simultaneously reads block data for one block from each of the SSDs 121 and 122, for example, when a data restoration instruction is output from the SSU control circuit 104 due to power recovery.
  • the read block data is input to the data check circuits 133a and 133b.
  • Step S132 The block data read from the SSDs 121 and 122 are written to the buffers 134b and 135b.
  • block data read from the SSD 121 is transferred to the ECC generation circuit 133f after the data check circuit 133a checks the presence or absence of a CRC error.
  • the ECC generation circuit 133f an ECC of the block data read from the SSD 121 is generated, and the block data to which the ECC is added is stored at a position indicated by the write counter 133h in the buffer 134b.
  • the block data read from the SSD 122 is transferred to the ECC generation circuit 133g after the data check circuit 133b checks for the presence of a CRC error.
  • an ECC of the block data read from the SSD 122 is generated, and the block data to which the ECC is added is stored at a position indicated by the write counter 133i in the buffer 135b.
  • Step S133 The data check circuits 133a and 133b each determine whether or not a CRC error is detected. When the data check circuits 133a and 133b detect an error, the data check circuits 133a and 133b transmit error information to the error information holding circuit 133c, and the process proceeds to step S135. If no error is detected, the process proceeds to step S134.
  • the restored data management circuit 133d determines whether or not data reading for the storage capacity of the DIMMs 111 and 112 has been completed. For example, the restoration data management circuit 133d acquires the total storage capacity of the DIMM calculated by the DIMM capacity calculation circuit 131b. Then, the restored data management circuit 133d compares the last read address with the total storage capacity of the DIMM, and determines whether or not all the DIMM capacity has been read.
  • the restoration data management circuit 133d notifies the reading control circuit 133e of the end of reading. Based on this notification, the read control circuit 133e finishes reading data from the SSDs 121 and 122. If the data reading for the storage capacity of the DIMMs 111 and 112 has not been completed, the process proceeds to step S131, and the next block data is read.
  • the reading speeds of the SSDs 121 and 122 are slower than the writing speeds of the DIMMs 111 and 112, if the capacity of the buffers 134b and 135b is two blocks of data, it is possible to sequentially read without waiting time until the boundary address. .
  • the data amount of one block read from the SSDs 121 and 122 can be variable.
  • the error information holding circuit 133c holds error information related to the detected error.
  • the error information holding circuit 133c holds an identifier of an SSD from which block data in which an error is detected, an error count, and a read / write address. Further, the error information holding circuit 133c sets the restoration error flag to an error present state (ON). The error information holding circuit 133c does not update the address of the block data in which an error has occurred in the second and subsequent error detections in the same SSD, and holds the address of the data in which the first error is detected as it is.
  • Step S136 The read control circuit 133e determines whether an error is detected in a plurality of SSDs. If an error is detected in both the two SSDs 121 and 122, the read control circuit 133e advances the process to step S137. If an error is detected in only one SSD, the process proceeds to step S138.
  • Step S137 The read control circuit 133e notifies the SSU control circuit 104 of a data restoration failure report, and ends the data restoration process.
  • Step S138 If an error is detected in only one SSD, the error information holding circuit 133c adds the value of the read counter of the buffer corresponding to the SSD in which the error has occurred by one block. As a result, the block data in which an error has occurred is not read. That is, writing of the block data in error to the DIMMs 111 and 112 is suppressed. Thereafter, the process proceeds to step S131.
  • FIG. 16 is a flowchart illustrating an example of a procedure of a data write process to the DIMM according to the second embodiment. In the following, the process illustrated in FIG. 16 will be described in order of step number.
  • Step S141 The write control circuits 133o and 133p determine whether or not block data for one block has been written in the buffers 134b and 135b. If data has been written, the process proceeds to step S142. If data has not been written, the write control circuits 133o and 133p repeat the process of step S141 and wait for the data to be written.
  • Step S142 The write control circuits 133o and 133p read the block data written in the buffers 134b and 135b. For example, the write control circuit 133o reads data for one block from the address indicated by the read counter 133j from the buffer 134b. The read block data is sent to the write control circuit 133o via the data check circuit 133l and the write destination selection circuit 133n. At this time, the data check circuit 133l checks whether there is an ECC error in the read block data. If the error is correctable, the error is corrected by the data check circuit 133l.
  • the write control circuit 133p reads data for one block from the address indicated by the read counter 133k from the buffer 135b.
  • the read block data is sent to the write control circuit 133p via the data check circuit 133m and the write destination selection circuit 133n.
  • the data check circuit 133m checks whether there is an ECC error in the read block data. If the error is correctable, the error is corrected by the data check circuit 133m.
  • Step S143 The write control circuits 133o and 133p determine whether or not an uncorrectable error is detected in the data check circuits 133l and 133m. If an uncorrectable error is detected, the process proceeds to step S144. If an uncorrectable error is not detected, the process proceeds to step S145.
  • Step S144 The write control circuits 133o and 133p notify the SSU control circuit 104 of a data restoration failure report, and terminate the data restoration process.
  • Step S145 If an uncorrectable ECC error is not detected in the read block data, the write control circuits 133o and 133p write the read block data to the DIMMs 111 and 112, respectively.
  • the write control circuit 133o writes the block data read from the SSD 121 to the address indicated by the write counter of the DIMM 111.
  • the write control circuit 133p writes the block data read from the SSD 122 to the address indicated by the write counter of the DIMM 112.
  • Step S146 The restoration data management circuit 133d determines whether the reading of data up to the boundary addresses of the SSDs 121 and 122 and the writing of the block data read normally are completed. When the reading / writing up to the boundary address is completed, the restored data management circuit 133d advances the process to step S147. If reading / writing up to the boundary address has not been completed, the restored data management circuit 133d advances the processing to step S141. Thereby, the processing of steps S141 to S145 is repeated until the data of the SSDs 121 and 122 up to the boundary address are restored to the DIMMs 111 and 112.
  • Step S147 The read control circuit 133e determines whether or not the restoration error flag held in the error information holding circuit 133c is ON. If the restoration error flag is ON, the read control circuit 133e advances the process to step S148. If the restoration error flag is not ON, the read control circuit 133e ends the data write process to the DIMM.
  • Step S148 In the data restoration circuit 133, restoration error recovery processing is performed. Details of this processing will be described later (see FIG. 17). Thereafter, the data writing process to the DIMM is terminated. When the data writing process to the DIMM is terminated, the error information held by the error information holding circuit 133c is deleted, and the restoration error flag is also reset to “0” (a state indicating no error).
  • FIG. 17 is a diagram illustrating an example of a restoration error recovery process procedure according to the second embodiment. In the following, the process illustrated in FIG. 17 will be described in order of step number.
  • Step S151 The read control circuit 133e acquires a write address (error address) at the time of occurrence of an error, which is held in association with the SSD in which the error is detected, in the error information holding circuit 133c. Then, the read control circuit 133e updates the value of the write counter to the DIMMs 111 and 112 with the acquired write address.
  • the read control circuit 133e refers to the number of errors held in the error information holding circuit 133c, and determines whether or not the number of errors in the SSD in which the error is detected is two or more. In the error information holding circuit 133c, when the number of errors is two or more, there is a high possibility that the SSD in which the error is detected is broken. Therefore, the read control circuit 133e advances the process to step S157 in order to read block data from the SSD in which no error is detected. The error information holding circuit 133c has a high possibility of a soft error when the number of errors is one. Therefore, the read control circuit 133e advances the process to step S153 in order to read block data again from the SSD in which the error is detected.
  • the read control circuit 133e obtains a read address when an error occurs from the error information holding circuit 133c, and sets the read address from the SSD in which the error is detected.
  • Step S154 The read control circuit 133e sequentially reads the data from the read address of the SSD in which the error is detected to the boundary address in units of block data.
  • the read block data is subjected to CRC data check, ECC is added, and stored in the buffer.
  • Step S155 The data check circuit corresponding to the SSD read in step S154 determines whether or not a CRC error has been detected for the read block data. If a CRC error is detected, the process proceeds to step S156. If no CRC error is detected, the process proceeds to step S161.
  • Step S156 When a CRC error is detected, the error information holding circuit 133c holds error information regarding the detected error. For example, the error information holding circuit 133c changes the number of errors corresponding to the identifier of the SSD from which block data in which an error has been detected is read to two. Thereafter, the process proceeds to step S151, and the data restoration process is executed again by the process with the error count being 2 or more.
  • Step S157 When the number of errors is two or more, the read control circuit 133e acquires a read address (error address) when an error occurs from the error information holding circuit 133c. Then, the read control circuit 133e sets the read address from the SSD in which no error is detected as “boundary address + error address”.
  • Step S158 The read control circuit 133e sequentially reads data from the read address of the SSD from which no error is detected to the boundary address in block data units.
  • the read block data is added with ECC after the CRC error check and stored in the buffer.
  • Step S159 The data check circuit corresponding to the SSD read in step S158 determines whether or not a CRC error has been detected for the read block data. If a CRC error is detected, the process proceeds to step S160. If no CRC error is detected, the process proceeds to step S161.
  • Step S160 If an error is detected in the block data read from the SSD in which no error has been detected, the read control circuit 133e notifies the SSU control circuit 104 of a data restoration failure report, and a restoration error recovery process is performed. Exit.
  • Step S161 The write control circuit corresponding to the buffer in which the block data is written reads the block data from the buffer.
  • the block data read from the buffer is checked for an ECC error by a data check circuit corresponding to the buffer.
  • Step S162 The write control circuit that has read from the buffer determines whether or not an uncorrectable ECC error has been detected. If an uncorrectable ECC error is detected, the process proceeds to step S160, and after the restoration failure report, the restoration error recovery process is forcibly terminated. If an uncorrectable ECC error is not detected, the process proceeds to step S163.
  • Step S163 If there is no uncorrectable ECC error in the read block data, the write control circuit that has read from the buffer writes the read block data at the position of the write counter of the corresponding DIMM.
  • Step S164 The restoration data management circuit 133d determines whether or not restoration of all data to the DIMMs 111 and 112 is completed. When the restoration of all data is completed, the restoration error recovery process ends. If there is data that has not been restored, the process proceeds to step S161, and the operations of steps S160 to S163 are repeated until the restoration is completed. As a result, even when an error occurs on one side of the duplexed SSD, the data restoration operation to the DIMM can be performed in a short time.
  • data is saved so that all data of the DIMMs 111 and 112 is stored in the upper area of the SSDs 121 and 122 when the data is saved. Then, all the data in the DIMMs 111 and 112 is saved in a lower area of the SSDs 121 and 122 so that the saved data is duplicated.
  • all data can be restored by sequentially reading data only from the upper area of the SSDs 121 and 122. That is, it is not necessary to perform data read access to the lower areas of the SSDs 121 and 122, and efficient data restoration is possible.
  • FIG. 18 is a diagram illustrating a comparative example of data saving / restoring processing.
  • block data is read from the DIMM 118 and the DIMM 119 in order from the top.
  • the read block data is written in duplicate in the SSD 128 and SSD 129 in the read order.
  • the entire data is read from at least one of the SSDs 128 and 129.
  • the total storage capacity of the DIMMs 118 and 119 is 8 GB
  • the SSDs 128 and 129 are each 8 GB. Then, for example, 8 GB of data is read from the SSD 128.
  • the buffer selection circuit 132c selects a storage buffer for data read from one DIMM for each data block.
  • the read block data is stored in the selected buffer.
  • the DIMM data can be saved by the same operation as when two DIMMs are used.
  • the restoration operation data read from each SSD is written to the corresponding buffer.
  • the write destination selection circuit 133n alternately performs the read operation from the buffer, and writes the restored data to one DIMM. Since the operation of the DIMM is faster than the operation of the SSD, even in an operation in which each SSD is read in parallel and saved in one DIMM, an effect that the restoration time to the DIMM can be shortened can be obtained.
  • the third embodiment is a data saving / restoring technique applicable even when the number of DIMMs and the number of SSDs are, for example, a large number of four or more.
  • the number of DIMMs and the number of SSDs are even numbers. Both DIMM and SSD are divided into two groups. The number of sheets in each group is the same.
  • the internal configuration of the memory control circuit 130-1 in the third embodiment is obtained by adding DIMM and SSD selection circuits to the memory control circuit 130 in the second embodiment shown in FIG. is there. Therefore, in the following description, elements having the same functions as those of the second embodiment shown in FIGS. 4, 10, and 14 are denoted by the same reference numerals, and description thereof is omitted.
  • FIG. 19 is a block diagram illustrating an example of a data saving function in the memory control circuit according to the third embodiment.
  • the plurality of DIMMs are divided into two DIMM groups 113 and 114.
  • the identifier of the DIMM group 113 is “DIMM group 0”, and the identifier of the DIMM group 114 is “DIMM group 1”. Identification numbers in the groups are assigned to the DIMMs belonging to the DIMM groups 113 and 114, respectively.
  • a plurality of SSDs are divided into two SSD groups 123 and 124.
  • the identifier of the SSD group 123 is “SSD group 0”, and the identifier of the SSD group 124 is “SSD group 1”.
  • Identification numbers in the groups are assigned to the SSDs belonging to the SSD groups 123 and 124, respectively.
  • a part of the storage areas of the SSDs in the same group is collected and used as the upper areas 121a and 122a shown in FIG.
  • some storage areas of the SSDs in the same group are collected and used as lower areas 121b and 122b shown in FIG.
  • the memory control circuit 130-1 includes DIMM selection counters 141 and 142, a DIMM selection counter control circuit 143, selection circuits 144 and 145, and a read data number calculation circuit 146 as data reading circuits from the DIMM.
  • the DIMM selection counter 141 is a counter indicating the identification number of a DIMM selected as a data read target among the DIMMs belonging to the DIMM group 113.
  • the DIMM selection counter 142 is a counter indicating the identification number of a DIMM selected as a data read target among the DIMMs belonging to the DIMM group 114.
  • the DIMM selection counter control circuit 143 controls the values of the DIMM selection counters 141 and 142.
  • the selection circuit 144 selects the DIMM having the identification number indicated by the DIMM selection counter 141 in the DIMM group 113 as a reading target.
  • the selection circuit 145 selects the DIMM having the identification number indicated by the DIMM selection counter 142 in the DIMM group 114 as a reading target.
  • the read data number calculation circuit 146 counts the amount of data read from the DIMM and monitors that the block data has been read.
  • the memory control circuit 130-1 includes SSD selection counters 151 and 152, an SSD selection counter control circuit 153, selection circuits 154 and 155, and a write data number calculation circuit 156 as data write circuits to the SSD.
  • the SSD selection counter 151 is a counter indicating an identification number of an SSD selected as a data writing target among SSDs belonging to the SSD group 123.
  • the SSD selection counter 152 is a counter that indicates an identification number of an SSD that is selected as a data write target among SSDs belonging to the SSD group 124.
  • the SSD selection counter control circuit 153 controls the values of the SSD selection counters 151 and 152.
  • the selection circuit 154 selects the SSD having the identification number indicated by the SSD selection counter 151 in the SSD group 123 as a write target.
  • the selection circuit 155 selects the SSD with the identification number indicated by the SSD selection counter 152 in the SSD group 124 as a write target.
  • the write data number calculation circuit 156 counts the amount of data written to the SSD and monitors that the block data has been read.
  • the DIMM / SSD is the same as the operation of two sheets, and a selection circuit for selecting which of the plurality of DIMMs / SSDs is used is added.
  • the data read operation from each of the DIMM groups 0/1 is the same operation.
  • the data write operation for each SSD group 0/1 is the same operation.
  • FIG. 20 is a flowchart illustrating an example of a procedure of a DIMM data read process according to the third embodiment. In the following, the process illustrated in FIG. 20 will be described in order of step number.
  • the UPS control circuit 102 detects the power failure.
  • the UPS control circuit 102 starts supplying power from the UPS 103 and notifies the SSU control circuit 104 of the occurrence of the power failure.
  • the SSU control circuit 104 transmits a data save instruction to the memory control circuit 130-1. As a result, saving of data in the DIMMs belonging to the DIMM groups 113 and 114 to the SSDs belonging to the SSD groups 123 and 124 is started.
  • the DIMM selection counter control circuit 143 sets initial values for the DIMM selection counters 141 and 142. For example, when an ascending order identification number starting from “0” is given to the DIMMs in the DIMM groups 113 and 114, “0” is set in the DIMM selection counters 141 and 142. Then, in the selection circuits 144 and 145, the DIMM having the identification number selected by the DIMM selection counters 141 and 142 in the DIMM groups 113 and 114 is electrically connected to the data saving circuit 132.
  • the SSD selection counter control circuit 153 sets initial values for the SSD selection counters 151 and 152. For example, when an ascending order identification number starting from “0” is assigned to the SSDs in the SSD groups 123 and 124, “0” is set in the SSD selection counters 151 and 152, respectively. Then, the selection circuits 154 and 155 electrically connect the SSDs with the identification numbers selected by the SSD selection counters 141 and 142 in the SSD groups 123 and 124 to the data saving circuit 132.
  • Step S203 The read control circuit 132i in the data saving circuit 132 determines whether or not the buffer has enough free space to store the block data. The details of this process are the same as step S102 in FIG.
  • the read control circuit 132i in the data saving circuit 132 reads block data for one block from the selected DIMM in each of the DIMM groups 113 and 114.
  • the block data read from the DIMM in the DIMM group 113 is input to the data check circuit 132a.
  • the block data read from the DIMM in the DIMM group 114 is input to the data check circuit 132b.
  • Step S205 The read data number calculation circuit 146 counts the amount of data read from the DIMM of the DIMM group 113 and monitors the read data amount. Then, the read data number calculation circuit 146 determines whether one block of data (block data) has been read. If block data has been read, the process proceeds to step S206. If block data has not been read, the process of step S205 is repeated.
  • the DIMM selection counter control circuit 143 increments the values of the DIMM selection counters 141 and 142 by "1".
  • the DIMM selection counter control circuit 143 compares the values of the DIMM selection counters 141 and 142 with the number of DIMMs in one group, and determines whether they match. Note that the total number of DIMMs is registered in advance in the register group 131 a in the memory configuration management circuit 131.
  • the DIMM selection counter control circuit 143 obtains the total number of DIMMs from the memory configuration management circuit 131 and determines that half of the number is the number of DIMMs in one group.
  • step S209 If the values of the DIMM selection counters 141 and 142 match the number of DIMMs in one group, the process proceeds to step S209. If the values of the DIMM selection counters 141 and 142 do not match the number of DIMMs in one group, the process proceeds to step S208.
  • Step S208 If the value of the DIMM selection counters 141 and 142 does not match the number of DIMMs in one group, the DIMM selection counter control circuit 143 subtracts the value of the read counter from each of the DIMM groups 113 and 114 by one block. To do. Thereafter, the process proceeds to step S210.
  • Step S209 When the values of the DIMM selection counters 141 and 142 coincide with the number of DIMMs in one group, the DIMM selection counter control circuit 143 initializes the values of the DIMM selection counters 141 and 142 to “0”.
  • the value of the DIMM read counter increases by the amount of data read each time data is read from the DIMM. If the values of the DIMM selection counters 141 and 142 match the number of DIMMs in one group, the process of decreasing the value of the DIMM read counter (step S208) is not performed. This means that when the value of the DIMM selection counters 141 and 142 matches the number of DIMMs in one group, the value of the DIMM read counter is increased by one block.
  • Step S210 Each of the data check circuits 132a and 132b in the data saving circuit 132 determines whether or not an uncorrectable error has been detected in the input block data. If there is an uncorrectable ECC error (for example, a multi-bit error), the data check circuits 132a and 132b forcibly terminate the process. If there is no error and if there is an error that can be corrected even if there is an error, the data check circuits 132a and 132b advance the process to step S211.
  • an uncorrectable ECC error for example, a multi-bit error
  • Step S211 When the ECC error is not detected or the error is corrected, the block data is written in the buffers 134a and 135a. For example, block data read from DIMMs in the DIMM group 113 is written at the address position indicated by the write counter 132d in the buffer 134a. The block data read from the DIMM group 114 is written at the address position indicated by the write counter 132e in the buffer 135a.
  • Step S212 The read control circuit 132i determines whether all data in the DIMMs belonging to the DIMM groups 113 and 114 have been read. When the reading of all data is completed, the DIMM data reading process ends. If there is unread data, the read control circuit 132i advances the process to step S203.
  • steps S203 to S211 is repeated until all the DIMM data is read, and data is sequentially written in the buffer in the data saving circuit 132. If no error is detected in the data read from the DIMM and the read from the buffer, writing to the SSDs in the SSD groups 123 and 124 is performed. When an error is detected, the error is reported and the forced termination operation is performed as described above.
  • FIG. 21 is a flowchart illustrating an example of the procedure of the SSD writing process according to the third embodiment. In the following, the process illustrated in FIG. 21 will be described in order of step number.
  • Step S221 The write control circuit 132l determines whether or not there is data in the buffers 134a and 135a. The details of this process are the same as step S111 in FIG. If there is data in the buffers 134a and 135a, the process proceeds to step S222. If there is no data in the buffers 134a and 135a, the process of step S221 is repeated.
  • Step S222 The write control circuit 132l reads data from the buffers 134a and 135a. The details of this process are the same as step S112 in FIG. [Step S223]
  • Each of the data check circuits 132j and 132k determines whether an uncorrectable error has been detected in the input block data.
  • the data check circuits 132j and 132k forcibly terminate the processing if there is an uncorrectable ECC error (for example, a multi-bit error). If there is no error and if there is an error that can be corrected even if there is an error, the data check circuits 132j and 132k advance the process to step S224.
  • ECC error for example, a multi-bit error
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the selected SSD in the SSD groups 123 and 124. For example, the write control circuit 132l writes the block data read from the DIMM in the DIMM group 113 to the selected SSD in the SSD group 123. The write control circuit 132l writes the block data read from the DIMM in the DIMM group 114 to the selected SSD in the SSD group 124.
  • Step S225 The write control circuit 132l determines whether or not writing of block data for one block has been completed. When the writing of the block data for one block is completed, the write control circuit 132l advances the process to step S226. If the writing of block data for one block has not been completed, the writing control circuit 132l repeats step S225 and waits for the writing to be completed.
  • Step S226 The write control circuit 132l decreases the values of the read counter 132f regarding the buffers 134a and 135a and the write counter of the SSD by one block. That is, a value corresponding to the data amount of one block is subtracted from the counter value.
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the SSDs in the SSD groups 123 and 124.
  • the write control circuit 132l uses a value obtained by adding the value of the boundary address to the value of the write counter of the SSD group 123 as a write destination address, and the block read from the DIMM in the DIMM group 114 with respect to the SSD in the SSD group 123.
  • Write data The write control circuit 132l uses the value obtained by adding the boundary address value to the write counter value of the SSD group 124 as a write destination address, and the block read from the DIMM in the DIMM group 113 with respect to the SSD in the SSD group 124. Write data.
  • Step S228 The write data number calculation circuit 156 determines whether or not writing of block data for each block to the SSD groups 123 and 124 has been completed, and writing of data for two blocks has been completed. When the writing for two blocks is completed, the process proceeds to step S229. If writing of two blocks has not been completed, the process of step S228 is repeated.
  • Step S229 When the data writing for two blocks is completed, the SSD selection counter control circuit 153 increments the values of the SSD selection counters 151 and 152 by “1”.
  • the SSD selection counter control circuit 153 compares the values of the SSD selection counters 151 and 152 with the number of SSDs in one group, and determines whether or not they match. Note that the total number of SSDs is registered in advance in the register group 131 a in the memory configuration management circuit 131. The SSD selection counter control circuit 153 acquires the total number of DIMMs from the memory configuration management circuit 131, and determines that half of the number is the number of SSDs in one group.
  • step S232 If the values of the SSD selection counters 151 and 152 match the number of SSDs in one group, the process proceeds to step S232. If the values of the SSD selection counters 151 and 152 do not match the number of SSDs in one group, the process proceeds to step S231.
  • Step S231 If the values of the SSD selection counters 151 and 152 do not match the number of SSDs in one group, the SSD selection counter control circuit 153 sets the value of the data write counter to each of the SSD groups 123 and 124 to one block. Decrease by minutes. Thereafter, the process proceeds to step S233.
  • Step S232 When the values of the SSD selection counters 151 and 152 coincide with the number of SSDs in one group, the SSD selection counter control circuit 153 initializes the values of the SSD selection counters 151 and 152 to “0”.
  • the value of the SSD write counter increases by the amount of data written each time data is written to the SSD. If the values of the SSD selection counters 151 and 152 match the number of SSDs in one group, the process of decreasing the value of the SSD write counter (step S231) is not performed. This means that when the values of the SSD selection counters 151 and 152 match the number of SSDs in one group, the value of the SSD write counter is increased by one block.
  • Step S233 The write control circuit 132l determines whether or not saving of all data in the DIMM groups 113 and 114 has been completed. The write control circuit 132l ends the SSD write process when all the data has been saved. If all the data has not been saved, the write control circuit 132l advances the process to step S221.
  • the memory control circuit 130-1 when writing data to the SSD groups 123 and 124, sequentially selects each of the storage devices in the SSD group 123 or the SSD group 124. Then, the memory control circuit 130-1 writes the block data of a predetermined data amount to the selected storage device with the same write address. Further, the memory control circuit 130-1 increases the write address by the amount of block data each time the selection of each of the plurality of storage devices is completed. By such address control, data can be sequentially stored in a plurality of SSDs in the same SSD group.
  • the data stored in the DIMM in the DIMM group 113 is stored in the upper area of each SSD in the SSD group 123 and the lower area of each SSD in the SSD group 124.
  • the data stored in the DIMM in the DIMM group 114 is stored in the upper area of each SSD in the SSD group 124 and the lower area of each SSD in the SSD group 123.
  • FIG. 22 is a block diagram illustrating an example of a data restoration function in the memory control circuit according to the third embodiment.
  • the memory control circuit 130-1 includes SSD selection counters 161 and 162, an SSD selection counter control circuit 163, selection circuits 164 and 165, and a read data number calculation circuit 166 as data reading circuits from the SSD.
  • the SSD selection counter 161 is a counter indicating an identification number of an SSD selected as a data read target among SSDs belonging to the SSD group 123.
  • the SSD selection counter 162 is a counter indicating an identification number of an SSD selected as a data read target among SSDs belonging to the SSD group 124.
  • the SSD selection counter control circuit 163 controls the values of the SSD selection counters 161 and 162.
  • the selection circuit 164 selects the SSD having the identification number indicated by the SSD selection counter 161 in the SSD group 123 as a reading target.
  • the selection circuit 165 selects the SSD having the identification number indicated by the SSD selection counter 162 in the SSD group 124 as a reading target.
  • the read data number calculation circuit 166 counts the amount of data read from the SSD and monitors that the block data has been read.
  • the memory control circuit 130-1 has DIMM selection counters 171, 172, a DIMM selection counter control circuit 173, selection circuits 174, 175, and a write data number calculation circuit 176 as data write circuits to the DIMM.
  • the DIMM selection counter 171 is a counter indicating the identification number of a DIMM selected as a data write target among the DIMMs belonging to the DIMM group 113.
  • the DIMM selection counter 142 is a counter indicating the identification number of a DIMM selected as a data write target among the DIMMs belonging to the DIMM group 114.
  • the DIMM selection counter control circuit 173 controls the values of the DIMM selection counters 171 and 172.
  • the selection circuit 174 selects the DIMM having the identification number indicated by the DIMM selection counter 171 in the DIMM group 113 as a write target.
  • the selection circuit 175 selects the DIMM having the identification number indicated by the DIMM selection counter 172 in the DIMM group 114 as a write target.
  • the write data number calculation circuit 176 counts the amount of data written to the DIMM, and monitors that the block data has been read.
  • the DIMM / SSD is the same as the operation of two sheets, and a selection circuit for selecting which of a plurality of DIMMs / SSDs is used is added.
  • the data read operation from each of the SSD groups 0/1 is the same operation.
  • the data write operation for each of the DIMM groups 0/1 is the same operation.
  • FIG. 23 is a flowchart illustrating an example of a procedure of SSD data read processing according to the third embodiment. In the following, the process illustrated in FIG. 23 will be described in order of step number.
  • the SSD selection counter control circuit 163 sets initial values to the SSD selection counters 161 and 162 when, for example, a data restoration instruction is output from the SSU control circuit 104 due to power recovery. For example, when an ascending order identification number starting from “0” is given to the SSDs in the SSD groups 123 and 124, “0” is set in the SSD selection counters 161 and 162, respectively. Then, the selection circuits 164 and 165 electrically connect the SSDs with the identification numbers selected by the SSD selection counters 161 and 162 in the SSD groups 123 and 124 to the data restoration circuit 133.
  • the DIMM selection counter control circuit 173 sets initial values to the DIMM selection counters 171 and 172 when a data restoration instruction is output from the SSU control circuit 104, for example, due to power recovery. For example, when an ascending order identification number starting from “0” is given to the DIMMs in the DIMM groups 113 and 114, “0” is set in the DIMM selection counters 171 and 172, respectively. Then, the selection circuits 174 and 175 electrically connect the DIMM of the identification number selected by the DIMM selection counters 171 and 172 in the DIMM groups 113 and 114 to the data restoration circuit 133.
  • Step S242 The read control circuit 133e simultaneously reads block data for one block from the selected SSDs in the SSD groups 123 and 124, respectively.
  • the read block data is input to the data check circuits 133a and 133b.
  • Step S243 The block data read from the SSDs 121 and 122 is written to the buffers 134b and 135b.
  • Step S244 The read data number calculation circuit 166 determines whether or not block data for each block is read from each of the SSD groups 123 and 124, and reading of data for two blocks is completed. When reading of two blocks is completed, the process proceeds to step S245. If reading of two blocks has not been completed, the process of step S244 is repeated.
  • Step S245 When the reading of data for two blocks is completed, the SSD selection counter control circuit 153 increments the values of the SSD selection counters 161 and 162 by “1”.
  • the SSD selection counter control circuit 163 compares the values of the SSD selection counters 161 and 162 with the number of SSDs in one group, and determines whether or not they match. If the values of the SSD selection counters 161 and 162 match the number of SSDs in one group, the process proceeds to step S248. If the values of the DIMM selection counters 141 and 142 do not match the number of DIMMs in one group, the process proceeds to step S247.
  • Step S247 When the values of the SSD selection counters 161 and 162 do not match the number of SSDs in one group, the SSD selection counter control circuit 163 decreases the value of the read counter from each of the SSD groups 123 and 124 by one block. Let Thereafter, the process proceeds to step S249.
  • the value of the SSD read counter increases by the amount of data read each time data is read from the SSD. Further, when the values of the SSD selection counters 161 and 162 coincide with the number of SSDs in one group, the process of decreasing the value of the SSD read counter (step S247) is not performed. This means that when the values of the SSD selection counters 161 and 162 coincide with the number of SSDs in one group, the value of the SSD read counter is increased by one block.
  • Step S248 When the values of the SSD selection counters 161 and 162 coincide with the number of SSDs in one group, the SSD selection counter control circuit 163 initializes the values of the SSD selection counters 161 and 162 to “0”.
  • steps S249 to S254 is the same as the processing of steps S133 to S138 shown in FIG. In this way, the processing in steps S242 to S254 is repeated until all the DIMM data is read and written to the buffers 134b and 135b in the memory control circuit 130-1.
  • steps S242 to S254 is repeated until all the DIMM data is read and written to the buffers 134b and 135b in the memory control circuit 130-1.
  • FIG. 24 is a flowchart illustrating an example of a procedure of a data writing process to the DIMM according to the third embodiment.
  • the process illustrated in FIG. 24 will be described in order of step number. Note that the processing of steps S261 to S264 is the same as the processing of steps S141 to S144 shown in FIG. 16, respectively. Therefore, the processing after step S265 will be described below.
  • Step S265 If an uncorrectable ECC error is not detected in the read block data, the write control circuits 133o and 133p write the read block data to the selected DIMMs in the DIMM groups 113 and 114.
  • the write control circuit 133 o writes the block data read from the SSD in the SSD group 123 to the selected DIMM in the DIMM group 113.
  • the write control circuit 133p writes the block data read from the SSD in the SSD group 124 to the selected DIMM in the DIMM group 114.
  • Step S266 The write data number calculation circuit 176 determines whether or not writing of block data for each block to the DIMM groups 113 and 114 is completed and writing of data for two blocks is completed. When the writing for two blocks is completed, the process proceeds to step S267. If writing of two blocks has not been completed, the process of step S266 is repeated.
  • Step S267 When the writing of data for two blocks is completed, the DIMM selection counter control circuit 173 increments the values of the DIMM selection counters 171 and 172 by “1”.
  • Step S268 The DIMM selection counter control circuit 173 compares the values of the DIMM selection counters 171 and 172 with the number of DIMMs in one group, and determines whether or not they match. If the values of the DIMM selection counters 171 and 172 match the number of DIMMs in one group, the process proceeds to step S270. If the values of the DIMM selection counters 171 and 172 do not match the number of DIMMs in one group, the process proceeds to step S269.
  • Step S269 When the values of the DIMM selection counters 171 and 172 do not match the number of DIMMs in one group, the DIMM selection counter control circuit 173 sets the value of the DIMM write counter in each of the DIMM groups 113 and 114 for one block. Decrease. Thereafter, the process proceeds to step S271.
  • Step S270 When the values of the DIMM selection counters 171 and 172 coincide with the number of DIMMs in one group, the DIMM selection counter control circuit 173 initializes the respective values of the DIMM selection counters 171 and 172 to “0”.
  • the value of the DIMM write counter increases by the amount of data written each time data is written to the DIMM. If the values of the DIMM selection counters 171 and 172 match the number of DIMMs in one group, the process of decreasing the value of the DIMM write counter (step S269) is not performed. This means that when the values of the DIMM selection counters 171 and 172 match the number of DIMMs in one group, the value of the DIMM write counter is increased by one block.
  • steps S271 to S273 is the same as the processing of steps S146 to S148 in FIG. 16, respectively.
  • data can be saved and restored even when four or more DIMMs and SSDs are mounted.
  • all the data in the DIMM is saved in the upper area of each SSD, it is possible to restore all the data in the DIMM simply by reading the data from the upper area of the SSD. That is, it is not necessary to read data from the lower area of the SSD at the time of data restoration, and the data restoration time is shortened. That is, the efficiency of the data restoration process can be improved.
  • DIMM data is saved in the same data array in each of a plurality of SSDs.
  • FIG. 25 is a diagram for explaining data to be saved / restored in the fourth embodiment.
  • the data in the DIMM 111 is temporarily stored in the buffer 134 in the memory control circuit 130-2.
  • Data in the buffer 134 is stored in the SSDs 121 and 122.
  • the data of the DIMM 111 is written in both the first upper area 121 a in the SSD 121 and the first upper area 122 a in the SSD 122.
  • the data of the DIMM 111 is duplicated and stored in the SSDs 121 and 122.
  • the data in the DIMM 112 is temporarily stored in the buffer 135 in the memory control circuit 130-2.
  • Data in the buffer 135 is stored in the SSDs 121 and 122.
  • the data of the DIMM 112 is written to both the lower-order lower area 121 b in the SSD 121 and the latter-order lower area 122 b in the SSD 122.
  • the data of the DIMM 112 is duplicated and stored in the SSDs 121 and 122.
  • the data saved from the upper area 121 a of the SSD 121 is read out and temporarily stored in the buffer 134. Then, the data in the buffer 134 is written into the DIMM 111. Similarly, the data saved from the lower area 122 b of the SSD 122 is read out and temporarily stored in the buffer 135. Then, the data in the buffer 135 is written into the DIMM 112.
  • FIG. 26 is a flowchart illustrating an example of the procedure of the SSD writing process according to the fourth embodiment.
  • steps S301 to S303, S305, S306, and S308 are the same as steps S111 to S113, S115, S116, and S118 shown in FIG. Therefore, processing in steps S304 and S307 different from the processing in FIG. 12 will be described below.
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the SSDs 121 and 122. For example, the write control circuit 132l writes the block data read from the DIMM 111 to the address indicated by the write counter of the SSD 121. The write control circuit 132l writes the block data read from the DIMM 112 to the SSD 122 using a value obtained by adding the boundary address to the address indicated by the write counter of the SSD 122 as a write address. The values of the SSD write counters of the SSDs 121 and 122 are counted up by the amount of data written to the SSDs 121 and 122, respectively.
  • the write control circuit 132l writes the data read from the buffers 134a and 135a to the SSDs 121 and 122. For example, the write control circuit 132l writes the block data read from the DIMM 111 to the address indicated by the write counter of the SSD 122. The write control circuit 132l writes the block data read from the DIMM 112 to the SSD 121 using a value obtained by adding the boundary address to the address indicated by the write counter of the SSD 121 as a write address. The values of the SSD write counters of the SSDs 121 and 122 are counted up by the amount of data written to the SSDs 121 and 122, respectively.
  • data restoration at the time of data restoration, data is read from the first half part (upper area 121a) of the boundary address from the SSD 121, and data is read from the second half part (lower area 122b) of the boundary address from the SSD 122.
  • FIG. 27 is a flowchart illustrating an example of an SSD data read processing procedure at the time of data restoration in the fourth embodiment.
  • the processes in steps S312 to S319 are the same as the processes in steps S131 to S138 shown in FIG. Therefore, the process of step S311 different from FIG. 15 will be described.
  • Step S311 The read control circuit 133e (see FIG. 14) in the data restoration circuit 133 sets the boundary address to the value (read address) of the read counter in the SSD 122 with the identifier “SSD-B” at the start of the data restoration process. Set. Thereby, reading of the block data from the SSD 122 is started from the boundary address.
  • the value (read address) of the read counter in the SSD 121 with the identifier “SSD-A” remains the initial value “0” (minimum address). Accordingly, reading of block data from the SSD 121 is started from the head of the SSD 121.
  • the data of the DIMMs 111 and 112 can be restored. That is, as shown in FIG. 25, even if the data arrangement in the plurality of SSDs 121 and 122 is the same, when data is restored, data is read out sequentially and in parallel from half the area of each SSD 121 and 122. Restore time is reduced.
  • FIG. 28 is a flowchart illustrating a procedure of restoration error recovery processing according to the fourth embodiment.
  • the processes in steps S321 to S326 and S328 to S334 are the same as the processes in S151 to S156 and S158 to S164 shown in FIG. Therefore, the process of step S327, which is different from the process of FIG. 17, will be described below.
  • Step S327 When the number of errors is two or more, the read control circuit 133e acquires a read address (error address) when an error occurs from the error information holding circuit 133c. Then, the read control circuit 133e sets the acquired error address as a read address from the SSD in which no error is detected.
  • the error address can be used as it is.
  • FIG. 29 is a diagram illustrating a configuration example of computer hardware.
  • the computer 300 is supplied with power via the UPS 15.
  • the entire computer 300 is controlled by a CPU 301.
  • a plurality of DIMMs 302 and a plurality of peripheral devices are connected to the CPU 301 via a bus 308.
  • the plurality of DIMMs 302 are used as a main storage device of the computer 300.
  • the plurality of DIMMs 302 temporarily store at least part of an OS (Operating System) program and application programs to be executed by the CPU 301.
  • the plurality of DIMMs 302 store various data necessary for processing by the CPU 301.
  • Peripheral devices connected to the bus 308 include a plurality of SSDs 303, a graphic processing device 304, an input interface 305, an optical drive device 306, and a communication interface 307.
  • the plurality of SSDs 303 are used as secondary storage devices of the computer 300.
  • the plurality of SSDs 303 store OS programs, application programs, and various data.
  • a semiconductor storage device such as a flash memory can also be used as the secondary storage device.
  • a monitor 11 is connected to the graphic processing device 304.
  • the graphic processing device 304 displays an image on the screen of the monitor 11 in accordance with a command from the CPU 301.
  • Examples of the monitor 11 include a display device using a CRT (Cathode Ray Tube) and a liquid crystal display device.
  • the keyboard 12 and the mouse 13 are connected to the input interface 305.
  • the input interface 305 transmits a signal transmitted from the keyboard 12 or the mouse 13 to the CPU 301.
  • the mouse 13 is an example of a pointing device, and other pointing devices can also be used. Examples of other pointing devices include a touch panel, a tablet, a touch pad, and a trackball.
  • the optical drive device 306 reads data recorded on the optical disk 14 using a laser beam or the like.
  • the optical disk 14 is a portable recording medium on which data is recorded so that it can be read by reflection of light.
  • the optical disk 14 includes a DVD (Digital Versatile Disc), a DVD-RAM, a CD-ROM (Compact Disc Read Only Memory), a CD-R (Recordable) / RW (ReWritable), and the like.
  • the communication interface 307 is connected to the network 10.
  • the communication interface 307 transmits and receives data to and from other computers or communication devices via the network 10.
  • the data management apparatus 1 shown in the first embodiment can also be realized by the same hardware as the computer shown in FIG.
  • a program that describes the processing contents of the functions of the data management device 1 (see FIG. 1) or the memory control circuit 130 (see FIGS. 3 and 4) is provided. Is done.
  • the program describing the processing contents can be recorded on a computer-readable recording medium.
  • the computer-readable recording medium include a magnetic storage device, an optical disk, a magneto-optical recording medium, and a semiconductor memory.
  • the magnetic storage device include a hard disk device (HDD), a flexible disk (FD), and a magnetic tape.
  • Optical discs include DVD, DVD-RAM, CD-ROM / RW, and the like.
  • Magneto-optical recording media include MO (Magneto-Optical disk).
  • the recording medium for recording the program does not include a temporary propagation signal itself.
  • a portable recording medium such as a DVD or CD-ROM in which the program is recorded is sold. It is also possible to store the program in a storage device of a server computer and transfer the program from the server computer to another computer via a network.
  • the computer that executes the program stores, for example, the program recorded on the portable recording medium or the program transferred from the server computer in its own storage device. Then, the computer reads the program from its own storage device and executes processing according to the program. The computer can also read the program directly from the portable recording medium and execute processing according to the program. Further, each time the program is transferred from the server computer, the computer can sequentially execute processing according to the received program.
  • processing functions described above can be realized by an electronic circuit such as a DSP (Digital Signal Processor), an ASIC (Application Specific Integrated Circuit), or a PLD (Programmable Logic Device).
  • DSP Digital Signal Processor
  • ASIC Application Specific Integrated Circuit
  • PLD Programmable Logic Device

Abstract

 不揮発性記憶装置に退避したデータの揮発性記憶装置への復元処理の効率化を図る。 第1のコピー手段(5)は、第1のコピー指示に応答し、揮発性記憶装置(2)内の第1のデータ集合(7)のデータを第1の連続領域(3a)と第4の連続領域(4b)とに書き込むと共に、揮発性記憶装置(2)内の第2のデータ集合(8)のデータを第2の連続領域(3b)と第3の連続領域(4a)とに書き込む。第2のコピー手段(6)は、第2のコピー指示に応答し、順次アクセスによる第1の連続領域(3a)からの第1のデータ集合(7)のデータの読み出しと、順次アクセスによる第3の連続領域(4a)からの第2のデータ集合(8)のデータの読み出しとを並列に実行する。そして、読み出した第1のデータ集合(7)のデータと第2のデータ集合(8)のデータとを揮発性記憶装置(2)に書き込む。

Description

データ管理装置、データコピー方法、およびプログラム
 本発明は、記憶装置間でのデータのコピーを行うデータ管理装置、データコピー方法、およびプログラムに関する。
 現在、様々な機器に揮発性記憶装置が搭載されている。例えばコンピュータには、主記憶装置として、DIMM(Dual In-line Memory Module)などの揮発性記憶装置が搭載されている。また、クラスタシステムに設けられたシステム記憶装置(SSU:System Storage Unit)には、クラスタシステム内の複数のCPU(Central Processing Unit)で共有するデータの格納に使用する揮発性記憶装置が搭載されている。
 揮発性記憶装置を有する機器の中には、UPS(Uninterruptible Power Supply)を搭載するものがある。UPSを搭載する機器では、停電などにより装置への電力の供給が遮断された場合、UPSにより電力供給が一定時間確保される。UPSで電源が供給されている間に、揮発性記憶装置内のデータを不揮発性記憶装置に退避することで、揮発性記憶装置内のデータを保護することができる。揮発性記憶装置としては、例えばSSD(Solid-State Drive)やハードディスク装置などが使用される。不揮発性記憶装置に退避されたデータは、電源復旧時に、揮発性記憶装置に書き戻される。そして、揮発性記憶装置に書き戻されたデータを用いて、機器の運用が再開される。
 なお、記憶内容の退避と復旧の信頼性を向上させるために、分割単位の記憶内容を、第1の不揮発性記憶装置と第2の不揮発性記憶装置との両方に退避させる、記憶装置の記憶内容退避方式も考えられている。
特開平4-346144号公報
 しかし、データの退避に用いられる不揮発性記憶装置からのデータの読み出し速度は、一般にDIMMなどの揮発性記憶装置よりも低速であり、不揮発性記憶装置から揮発性記憶装置へのデータの復元には時間がかかる。
 例えば、揮発性記憶装置のデータを不揮発性の記憶装置に退避する場合、2重化して退避することでデータの信頼性を向上させることができる。データを2重化して退避する場合、揮発性記憶装置から読み出したデータから順に、複数の不揮発性記憶装置のそれぞれにデータが書き込まれる。このとき、一方の不揮発性記憶装置に格納されたデータに基づいて揮発性記憶装置のデータを復元しようとすると、読み出し速度の遅い1つの不揮発性記憶装置からすべてのデータ読み出すこととなり、データの復元に時間がかかる。また、複数の不揮発性記憶装置それぞれからデータを一部ずつ読み出す場合、各不揮発性記憶装置それぞれ内の部分的なデータを、ランダムアクセスによって読み出すこととなる。ランダムアクセスによるデータの読み出しは、シーケンシャルアクセスに比べ読み出しに時間がかかる。このように不揮発性記憶装置から揮発性記憶装置へのデータの復元には時間がかかることにより、例えば電源復旧から装置の運用再開までの時間が長期化している。
 1つの側面では、本発明は、不揮発性記憶装置に退避したデータの揮発性記憶装置への復元処理の効率化を図ることができるデータ管理装置、データコピー方法、およびプログラムを提供することを目的とする。
 1つの案では、揮発性記憶装置、第1の不揮発性記憶装置、第2の不揮発性記憶装置、第1のコピー手段、および第2のコピー手段を有するデータ管理装置が提供される。
 第1の不揮発性記憶装置は、順次アクセスが可能な第1の連続領域と、順次アクセスが可能な第2の連続領域とが設けられている。第2の不揮発性記憶装置は、順次アクセスが可能な第3の連続領域と、順次アクセスが可能な第4の連続領域とが設けられている。第1のコピー手段は、第1のコピー指示に応答し、揮発性記憶装置内のデータを第1のデータ集合と第2のデータ集合とに分ける。次に第1のコピー手段は、第1のデータ集合のデータと第2のデータ集合のデータとを揮発性記憶装置から読み出す。そして第1のコピー手段は、読み出した第1のデータ集合のデータを第1の連続領域と第4の連続領域とに書き込むと共に、読み出した第2のデータ集合のデータを第2の連続領域と第3の連続領域とに書き込む。第2のコピー手段は、第2のコピー指示に応答し、順次アクセスによる第1の連続領域からの第1のデータ集合のデータの読み出しと、順次アクセスによる第3の連続領域からの第2のデータ集合のデータの読み出しとを並列に実行する。そして第2のコピー手段は、読み出した第1のデータ集合のデータと第2のデータ集合のデータとを揮発性記憶装置に書き込む。
 1態様によれば、不揮発性記憶装置に退避したデータの揮発性記憶装置への復元を効率的に行うことができる。
 本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
第1の実施の形態に係る装置の機能構成例を示す図である。 第2の実施の形態のシステム構成例を示す図である。 各装置のハードウェア構成の一例を示す図である。 メモリ制御回路のデータの退避・復元機能に関する内部構造の一例を示す図である。 退避・復元されるデータを説明する図である。 ブロックデータごとのデータ退避の一例を示す図である。 DIMMが1枚の場合のデータ退避の一例を示す図である。 データ退避処理のタイムチャートの一例を示す図である。 退避データのSSD内でのデータ配列の一例を示す図である。 メモリ制御回路におけるデータ退避を実現する回路構成の一例を示す図である。 第2の実施の形態のDIMMデータの読み出し処理の手順の一例を示すフローチャートである。 第2の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。 第2の実施の形態のデータ復元処理のタイムチャートの一例を示す図である。 メモリ制御回路におけるデータ復元を実現する回路構成の一例を示す図である。 第2の実施の形態のSSDデータの読み出し処理の手順の一例を示すフローチャートである。 第2の実施の形態のDIMMへのデータ書き込み処理の手順の一例を示すフローチャートである。 第2の実施の形態の復元エラー回復処理の手順の一例を示す図である。 データ退避・復元処理の比較例を示す図である。 第3の実施の形態におけるメモリ制御回路内のデータ退避機能の一例を示すブロック図である。 第3の実施の形態のDIMMデータの読み出し処理の手順の一例を示すフローチャートである。 第3の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。 第3の実施の形態におけるメモリ制御回路内のデータ復元機能の一例を示すブロック図である。 第3の実施の形態のSSDデータの読み出し処理の手順の一例を示すフローチャートである。 第3の実施の形態のDIMMへのデータ書き込み処理の手順の一例を示すフローチャートである。 第4の実施の形態において退避・復元されるデータを説明する図である。 第4の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。 第4の実施の形態におけるデータ復元時のSSDデータ読み出し処理手順の一例を示すフローチャートである。 第4の実施の形態の復元エラー回復処理の手順を示すフローチャートである。 コンピュータのハードウェアの一構成例を示す図である。
 以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
 〔第1の実施の形態〕
 第1の実施の形態は、揮発性記憶装置のデータを半分ずつ、2重化されている複数の不揮発性記憶装置それぞれの順次アクセス(シーケンシャルアクセス)可能な記憶領域に退避することにより、退避データを復元する時の時間を短縮できるようにしたものである。
 図1は、第1の実施の形態に係る装置の機能構成例を示す図である。データ管理装置1は、揮発性記憶装置2、第1の不揮発性記憶装置3、第2の不揮発性記憶装置4、第1のコピー手段5、および第2のコピー手段6を有する。
 揮発性記憶装置2は、例えばRAM(Random Access Memory)である。
 第1の不揮発性記憶装置3は、例えばSSDやHDD(Hard Disk Drive)である。第1の不揮発性記憶装置3には、順次アクセスが可能な第1の連続領域3aと、順次アクセスが可能な第2の連続領域3bとが設けられている。なお第1の不揮発性記憶装置3は、揮発性記憶装置2の記憶容量以上の記憶容量を有する。第1の連続領域3aは、例えば第1の不揮発性記憶装置3の記憶領域の先頭から連続の記憶領域である。また第2の連続領域3bは、例えば第1の不揮発性記憶装置3における、第1の連続領域3aの後方に隣接する連続の記憶領域である。
 第2の不揮発性記憶装置4は、例えばSSDやHDDである。第2の不揮発性記憶装置4には、順次アクセスが可能な第3の連続領域4aと、順次アクセスが可能な第4の連続領域4bとが設けられている。なお第2の不揮発性記憶装置4は、揮発性記憶装置2の記憶容量以上の記憶容量を有する。第3の連続領域4aは、例えば第2の不揮発性記憶装置4の記憶領域の先頭から連続の記憶領域である。また第4の連続領域4bは、例えば第2の不揮発性記憶装置4における、第3の連続領域4aの後方に隣接する連続の記憶領域である。
 なお、順次アクセスが可能な連続記憶領域とは、例えばアドレスが連続した記憶領域である。換言すると、アドレスをカウントアップしていくことで、全体にアクセス可能な記憶領域である。また第1の連続領域3a、第2の連続領域3b、第3の連続領域4a、および第4の連続領域4bは、それぞれ揮発性記憶装置2の記憶容量の半分の記憶容量を有する。
 第1のコピー手段5は、第1のコピー指示に応答し、揮発性記憶装置2内のデータを第1のデータ集合7と第2のデータ集合8とに分け、第1のデータ集合7のデータと第2のデータ集合8のデータとを揮発性記憶装置2から読み出す。なお第1のコピー指示は、例えば揮発性記憶装置2内のデータの、第1の不揮発性記憶装置3および第2の不揮発性記憶装置4への退避指示である。また第1のデータ集合7は、例えば第1のメモリモジュール2a内のデータの集合である。第2のデータ集合8は、例えば第2のメモリモジュール2b内のデータの集合である。第1のコピー手段5は、読み出した第1のデータ集合7のデータを第1の連続領域3aと第4の連続領域4bとに書き込む。さらに第1のコピー手段5は、読み出した第2のデータ集合8のデータを第2の連続領域3bと第3の連続領域4aとに書き込む。
 第2のコピー手段6は、第2のコピー指示に応答し、順次アクセスによる第1の連続領域3aからの第1のデータ集合7のデータの読み出しと、順次アクセスによる第3の連続領域4aからの第2のデータ集合8のデータの読み出しとを並列に実行する。なお第2のコピー指示は、例えば、第1の不揮発性記憶装置3および第2の不揮発性記憶装置4に退避されたデータの、揮発性記憶装置2への復元指示である。また第2のコピー手段6は、第3の連続領域4aの先頭アドレスから順に第2のデータ集合8のデータを読み出す。
 さらに第2のコピー手段6は、読み出した第1のデータ集合7のデータと第2のデータ集合8のデータとを揮発性記憶装置2に書き込む。例えば第2のコピー手段6は、第1のデータ集合7のデータを第1のメモリモジュール2aに書き込み、第2のデータ集合8のデータを第2のメモリモジュール2bに書き込む。
 このようなデータ管理装置1によれば、第1のコピー指示が入力されると、第1のコピー手段5により、第1のデータ集合7のデータと第2のデータ集合8のデータとが揮発性記憶装置2から読み出される。そして、第1のコピー手段5により、読み出した第1のデータ集合7のデータが第1の連続領域3aと第4の連続領域4bとに書き込まれ、読み出した第2のデータ集合8のデータが第2の連続領域3bと第3の連続領域4aとに書き込まれる。
 その後、第1のコピー指示が入力されると、第2のコピー手段6により、第1の連続領域3aの先頭アドレスから順に第1のデータ集合7のデータが読み出されると共に、第3の連続領域4aの先頭アドレスから順に第2のデータ集合8のデータが読み出される。すなわち、第1の連続領域3aと第3の連続領域4aとの双方から、シーケンシャルなデータ読み出しが行われる。そして、さらに第2のコピー手段6により、読み出した第1のデータ集合7のデータと第2のデータ集合8のデータとが揮発性記憶装置2に書き込まれる。
 このように、第1の実施の形態によれば、揮発性記憶装置2内のデータを、第1の不揮発性記憶装置3と第2の不揮発性記憶装置4に対して2重化して退避する際に、データ集合ごとに、順次アクセスが可能な連続領域に退避している。これにより、第1の不揮発性記憶装置3と第2の不揮発性記憶装置4とのそれぞれから、2重化して退避した全データの半分ずつ、シーケンシャルに並列に読み出すことにより、揮発性記憶装置2にデータを復元できる。その結果、一方の不揮発性記憶装置の全体からデータの読み出しを行う場合に比べ、復元時間を半分程度まで短縮させることができる。データの復元時間が短縮されることで、例えばシステムの再立上げを高速に行うことが可能となる。しかも、データを2重化して退避する一般的な技術に比べて、不揮発性記憶装置の記憶容量が増加することもない。
 なお、第1のコピー手段5と第2のコピー手段6とは、データ管理装置1内のメモリ制御回路などの電子回路で実現することができる。また第1のコピー手段5と第2のコピー手段6とを、CPUにより実現することもできる。
 また、図1に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
 また第1のコピー手段5は、第1の不揮発性記憶装置3と第2の不揮発性記憶装置4とへのデータの書き込みを、以下のように行うことができる。
 第1のコピー手段5は、揮発性記憶装置2の記憶容量の半分以上の記憶容量に相当する、アドレスの加算値を有する。そして第1のコピー手段5は、揮発性記憶装置2から読み出した第1のデータ集合7のデータを、第1の不揮発性記憶装置3の先頭から順に書き込む。また第1のコピー手段5は、そのデータの第1の不揮発性記憶装置3への書き込みアドレスに加算値を加算した値を、第2の不揮発性記憶装置4への書き込みアドレスとして、そのデータを第2の不揮発性記憶装置4に書き込む。
 同様に第1のコピー手段5は、揮発性記憶装置2から読み出した第2のデータ集合8のデータを、第2の不揮発性記憶装置4の先頭から順に書き込む。また第1のコピー手段5は、そのデータの第2の不揮発性記憶装置4への書き込みアドレスに加算値を加算した値を、第1の不揮発性記憶装置3への書き込みアドレスとして、そのデータを第1の不揮発性記憶装置3に書き込む。
 このようなアドレス制御を行うことで、揮発性記憶装置2から読み出したデータの第1の不揮発性記憶装置3と第2の不揮発性記憶装置4とへの書き込みを実現できる。
 また第2のコピー手段6は、読み出したデータに訂正不可能なエラーがある場合、そのデータに対応する冗長データを読み出すことも可能である。例えば第2のコピー手段6は、訂正不可能なエラー発生時に、以下のような処理を行う。
 第2のコピー手段6は、第1の不揮発性記憶装置3から読み出したデータに訂正不可能なエラーを検出した場合、そのデータの第1の不揮発性記憶装置3内でのアドレスを記憶する。さらに第2のコピー手段6は、記憶したアドレスに上記の加算値を加算したアドレスを第2の不揮発性記憶装置4からの読み出しアドレスとして、エラーが検出されたデータに替えて第2の不揮発性記憶装置4からデータを読み出す。
 第2のコピー手段6は、第2の不揮発性記憶装置4から読み出したデータに訂正不可能なエラーを検出した場合、データの第2の不揮発性記憶装置4内でのアドレスを記憶する。第2のコピー手段6は、記憶したアドレスに加算値を加算したアドレスを第1の不揮発性記憶装置3からの読み出しアドレスとして、エラーが検出された該データに替えて第1の不揮発性記憶装置3からデータを読み出す。
 このようにして第1の不揮発性記憶装置3と第2の不揮発性記憶装置4とのいずれから読み出したデータに訂正不可能なエラーが発生しても、代替のデータを読み出し、揮発性記憶装置2に復元させることができる。
 〔第2の実施の形態〕
 次に第2の実施の形態について説明する。第2の実施の形態は、複合計算機システムで利用されるSSU内の不揮発性記憶装置に、揮発性記憶装置に退避しておいたデータを復元する処理を高速化するものである。なお第2の実施の形態におけるSSUは、第1の実施の形態に示すデータ管理装置1の一例である。
 図2は、第2の実施の形態のシステム構成例を示す図である。複合計算機システムでは、クラスタ200にSSU100が接続されている。SSU100には、例えばRAMなどの不揮発性記憶装置が搭載されている。SSU100の不揮発性記憶装置には、クラスタ200内の複数のCPUそれぞれが共有するデータが格納される。
 図3は、各装置のハードウェア構成の一例を示す図である。クラスタ200は、複数のCPU211,212,213、メモリ220、およびシステムコントローラ230を有している。システムコントローラ230は、SSU100との間でデータ通信を行う。
 SSU100は、DIMM111,112、SSD121,122、メモリ制御回路130、インタフェース回路101、UPS制御回路102、UPS103、およびSSU制御回路104を有する。
 DIMM111,112は、クラスタ200内のCPU211,212,213が使用するデータを格納する揮発性記憶装置である。DIMM111,112には、例えばRAMのチップが実装されている。またDIMM111,112は、それぞれ書き込みカウンタと読み出しカウンタとを有している。DIMM111,112の書き込みカウンタは、DIMM111,112にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。DIMM111,112の書き込みカウンタの値は、次にデータの書き込みを行う、DIMM111,112のアドレスを示す。DIMM111,112の読み出しカウンタは、DIMM111,112からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。DIMM111,112の読み出しカウンタの値は、次にデータの書き込みを行う、DIMM111,112のアドレスを示す。
 SSD121,122は、DIMM111,112内のデータの退避に使用する不揮発性記憶装置である。SSD121,122には、例えばフラッシュメモリが内蔵されている。またSSD121,122は、それぞれ書き込みカウンタと読み出しカウンタとを有している。SSD121,122の書き込みカウンタは、SSD121,122にデータが書き込まれるごとに、書き込まれたデータ量に応じた値だけカウントアップされる。SSD121,122の書き込みカウンタの値は、次にデータの書き込みを行う、SSD121,122のアドレスを示す。SSD121,122の読み出しカウンタは、SSD121,122からデータが読み出されるごとに、読み出されたデータ量に応じた値だけカウントアップされる。SSD121,122の読み出しカウンタの値は、次にデータの書き込みを行う、SSD121,122のアドレスを示す。
 メモリ制御回路130は、DIMM111,112とSSD121,122とに対するデータの入出力を制御する。例えばメモリ制御回路130は、クラスタ200のCPU211,212,213から送られたデータをインタフェース回路101経由で受信し、DIMM111,112に書き込む。またメモリ制御回路130は、クラスタ200のCPU211,212,213からのリード要求をインタフェース回路101経由で受信すると、DIMM111,112からデータを読み出し、クラスタ200に転送する。
 さらにメモリ制御回路130は、トラブルなどによりSSU100への外部電源21からの電源供給が途絶えた場合、UPS103によって電源が供給されている間に、DIMM111,112内のデータをSSD121,122にコピーする。またメモリ制御回路130は、外部電源21からの電源供給が回復した場合、SSD121,122に退避しておいたデータを、DIMM111,112にコピーする。
 インタフェース回路101は、クラスタ200との間のデータ通信を行う。
 UPS制御回路102は、UPS103の動作を制御する。例えばUPS制御回路102は、UPS103への電気の蓄電、電気供給元を外部電源21とするのか、UPS103とするのかなどを制御する。例えば、UPS制御回路102は、外部電源21から電源供給が途絶えると、電源の供給元をUPS103に切り替えると共に、外部電源が途絶えたことを、SSU制御回路104に通知する。またUPS制御回路102は、外部電源21からの電源供給が回復した場合、電源の供給元を外部電源21に切り替えると共に、外部電源21からの電源供給が復旧したことをSSU制御回路104に通知する。
 UPS103は、バッテリを搭載しており、外部電源21から電源が供給されている間に、バッテリに電気を充電する。またUPS103は、外部電源21からの電源供給が途絶えると、バッテリに蓄えた電気を、SSU100の各回路に供給する。
 SSU制御回路104は、SSU100の動作を制御する。例えばSSU制御回路104は、外部電源21からの電源供給が途絶えたことが、UPS制御回路102から通知されると、メモリ制御回路130に対して、DIMM111,112内のデータ退避指示を送信する。またSSU制御回路104は、外部電源21からの電源供給が復旧したことが、UPS制御回路102から通知されると、メモリ制御回路130に対してDIMM111,112へのデータ復元指示を送信する。
 このようなSSU100において、メモリ制御回路130により、DIMM111,112内のデータのSSD121,122への退避と、SSD121,122に退避したデータのDIMM111,112への復元とが行われる。
 図4は、メモリ制御回路のデータの退避・復元機能に関する内部構造の一例を示す図である。メモリ制御回路130は、メモリ構成管理回路131、データ退避回路132、およびデータ復元回路133を有する。
 メモリ構成管理回路131は、DIMM111,112の枚数や、DIMM111,112それぞれの記憶容量を管理する。またメモリ構成管理回路131は、DIMM111,112の総記憶容量に基づいて、SSD121,122にデータを退避する際に用いる境界アドレスを計算する。境界アドレスとしては、例えばDIMM111,112の総記憶容量をSSD121,122の数で除算した値が用いられる。すなわち、DIMM111,112やSSD121,122のアドレスは、0から始まる昇順の数値であり、1バイトごとに割り振られる。すると、DIMM111,112の総記憶容量をバイト単位で表した数値を、SSD121,122の数「2」で除算して得られる値は、SSDの記憶領域の先頭からDIMM1枚分の記憶領域を確保した場合の、その記憶領域の次の位置のアドレスに相当する。
 データ退避回路132は、データ退避指示に応じて、DIMM111,112内のデータを、SSD121,122に退避させる。例えばデータ退避回路132は、DIMM111,112からデータを読み出し、読み出したデータをSSD121,122に2重化して書き込む。
 データ復元回路133は、データ復元指示に応じて、SSD121,122に退避されたデータを、DIMM111,112に復元する。例えばデータ復元回路133は、SSD121,122からデータを読み出し、読み出したデータをDIMM111,112に書き込む。この際、データ復元回路133は、SSD121とSSD122とから、それぞれ半分ずつのデータを読み出し、DIMM111,112のデータを復元する。
 このように、メモリ制御回路130の制御により、データの退避と復元が行われる。なおデータ退避回路132は、図1に示す第1の実施の形態の第1のコピー手段5の一例である。またデータ復元回路133は、図1に示す第1の実施の形態の第2のコピー手段6の一例である。さらに境界アドレスは、第1の実施の形態で説明した、アドレスの加算値の一例である。
 図5は、退避・復元されるデータを説明する図である。図5の例では、DIMM111とDIMM112とは、同じ記憶容量である。またSSD121とSSD122とは、それぞれDIMM111の2倍以上の記憶容量である。また、DIMM111の識別子を「DIMM-A」、DIMM112の識別子を「DIMM-B」としている。さらにSSD121の識別子を「SSD-A」、SSD122の識別子を「SSD-B」としている。
 データを退避させる場合、DIMM111内のデータは、一旦、メモリ制御回路130内のバッファ134に格納される。そしてバッファ134内のデータが、SSD121,122に格納される。この際、DIMM111のデータは、SSD121内の前半の上位領域121aと、SSD122内の後半の下位領域122bとの両方に書き込まれる。これにより、DIMM111のデータが2重化して、SSD121,122に格納される。
 またDIMM112内のデータは、一旦、メモリ制御回路130内のバッファ135に格納される。そしてバッファ135内のデータが、SSD121,122に格納される。この際、DIMM115のデータは、SSD121内の後半の下位領域121bと、SSD122内の前半の上位領域122aとの両方に書き込まれる。これにより、DIMM112のデータが2重化して、SSD121,122に格納される。
 データを復元する場合、SSD121の前半の上位領域121aから退避されていたデータが読み出され、一旦、バッファ134に格納される。そして、バッファ134内のデータが、DIMM111に書き込まれる。同様に、SSD122の前半の上位領域122aから退避されていたデータが読み出され、一旦、バッファ135に格納される。そして、バッファ135内のデータが、DIMM112に書き込まれる。
 このように、SSD121,122の前半の上位領域121a,122aからデータをシーケンシャルに読み出して、DIMM111,112のデータを復元する。これにより、SSD121,122全体からデータを読み出す場合に比べ、約半分の時間でデータの復元が可能となる。
 なお、DIMM111,112に格納されるデータには誤り訂正符号(ECC:Error Correcting Code)が付加されており、ECCによってエラーチェックが行われる。またSSD121,122へ書き込むデータは巡回冗長検査(CRC:Cyclic Redundancy Check)の符号が付加されており、CRC符号によってエラーチェックが行われる。
 第2の実施の形態では、DIMM111,112内の記憶領域を複数のブロックに分割する。例えば1ブロック当たりの記憶容量を512バイトとする。そして、1ブロック分のデータ(ブロックデータ)ごとに、データの退避・復元が行われる。
 図6は、ブロックデータごとのデータ退避の一例を示す図である。なお図6の例では、DIMM111,112は、それぞれ4GBの記憶容量を有している。またSSD121,122は、それぞれ8GBの記憶容量を有している。SSD121,122は、それぞれ先頭からDIMM111,112の総記憶容量(8GB)の半分の記憶容量分(4GB)を上位領域、それ以降を下位領域とする。下位領域の先頭のアドレスを、境界アドレスとする。図6の例では、ブロックデータを「A~Z」のアルファベットで示している。
 DIMM111の先頭のブロックデータ「A」は、SSD121の上位領域の先頭と、SSD122の下位領域の先頭とに退避されている。DIMM111のブロックデータ「A」以降の各ブロックデータは、SSD121,122のブロックデータ「A」に続けて格納されている。
 また、DIMM112の先頭のブロックデータ「B」は、SSD121の下位領域の先頭と、SSD122の上位領域の先頭とに退避されている。DIMM112のブロックデータ「B」以降の各ブロックデータは、SSD121,122のブロックデータ「B」に続けて格納されている。
 このように各ブロックデータを退避しておくことで、DIMM111,112にデータを復元する際には、SSD121の上位領域から読み出したデータをDIMM111に格納し、SSD122の上位領域から読み出したデータをDIMM112に格納すればよい。そのため、SSD121,122それぞれの上位領域からブロックデータを、シーケンシャルにかつ並列に読み出し、復元処理を高速化することができる。
 なお、SSD121,122へのデータ退避形式はDIMM枚数に係わらず同じにできる。例えば図3~図6の例では、SSU100内に2枚のDIMM111,112が実装されているが、DIMMが1枚の場合もある。この場合、例えば、1枚のDIMM内のブロックデータが、各SSDの上位領域と下位領域とに交互に振り分けて退避される。
 図7は、DIMMが1枚の場合のデータ退避の一例を示す図である。図7の例では、4GBのDIMM111-1のデータを、4GBの2つのSSD121-1,122-1に退避する場合を想定している。DIMM111-1が1枚であるため、DIMM111-1の総記憶容量は4GBとなり、各SSD121-1,122-1の先頭から2GB分の記憶領域が上位領域となり、それ以降が下位領域となる。
 DIMM111-1の先頭のブロックデータ「A」は、SSD121-1の上位領域の先頭と、SSD122-1の下位領域の先頭とに退避されている。DIMM111-1の2つ目のブロックデータ「B」は、SSD121-1の下位領域の先頭と、SSD122-1の上位領域の先頭とに退避されている。DIMM111-1の3つ目のブロックデータ「C」は、SSD121-1とSSD122-1との、ブロックデータ「A」に続けて退避される。DIMM111-1の4つ目のブロックデータ「D」は、SSD121-1とSSD122-1との、ブロックデータ「B」に続けて退避される。
 このように、DIMM111-1が1枚だけの場合、SSD121-1には、DIMM111-1から読み出された内のブロックデータが、上位領域と下位領域とに交互に格納される。また、SSD122-1にも、DIMM111-1から読み出された内のブロックデータが、上位領域と下位領域とに交互に格納される。ただし、SSD121-1に対しては上位領域からデータ格納が開始され、SSD122-1に対しては下位領域からデータ格納が開始される。
 このようにデータ退避を行うことで、データ復元の際には、SSD121-1の上位領域と、SSD122-1の上位領域とからブロックデータをシーケンシャルに読み出せば、DIMM111-1の全データを復元できる。
 <データ退避処理>
 次に、図3~図6に示したようなDIMMが2枚の場合における、データ退避処理について詳細に説明する。
 図8は、データ退避処理のタイムチャートの一例を示す図である。図8の上段には、識別子「DIMM-A」のDIMM111と識別子「DIMM-B」のDIMM112とからのブロックデータの読み出しタイミングが示されている。また図8の下段には、識別子「SSD-A」のSSD121と識別子「SSD-B」のSSD122とのブロックデータの書き込みタイミングが示されている。
 データ退避が開始されると、識別子「DIMM-A」のDIMM111内のアドレスブロック「A」と、識別子「DIMM-B」のDIMM112内のアドレスブロック「B」とが並列に読み出される。読み出されたデータにエラーがなければ、アドレスブロック「A」の、識別子「SSD-A」のSSD121内の上位領域への書き込みと、アドレスブロック「B」の、識別子「SSD-B」のSSD122内の上位領域への書き込みとが、並列に実行される。その後、アドレスブロック「A」の、識別子「SSD-B」のSSD122内の下位領域への書き込みと、アドレスブロック「B」の、識別子「SSD-A」のSSD121内の下位領域への書き込みとが、並列に実行される。これにより、アドレスブロック「A」、「B」が、2重化して退避される。
 以後、同様にして、各DIMM111,112からブロックデータが順番に読み出され、SSD121,122に2重化して退避される。この動作がDIMM111,112の総記憶容量分繰り返されることで、DIMM111,112内のデータの退避が完了する。
 なお一般的にはDIMM111,112の動作はSSD121,122の動作より高速である。そのため、図8に示すようにDIMM111,112のデータを一旦読み出したら、SSDに書き込むための時間がかかる。従って、次のDIMMデータの読み出しには十分な間隔が必要となる。
 図9は、退避データのSSD内でのデータ配列の一例を示す図である。SSD121の上位領域121aには、DIMM111に格納されていたデータが、DIMM111に格納されていたときと同じ配列で格納されている。またSSD122の上位領域122aには、DIMM112に格納されていたデータが、DIMM112に格納されていたときと同じ配列で格納されている。
 このようにSSD121の上位領域121aとSSD122の上位領域122aとに、DIMM111,112に格納されていたデータがすべて退避される。そのため、データの復元時には、SSD121,122の先頭アドレスからシーケンシャルにデータを読み出すことで、上位領域121a,122aのみですべてのデータを読み出すことができる。すなわちSSD121,122からのデータ読み出しには、ランダムアクセスとシーケンシャルアクセスとが可能であるが、シーケンシャルアクセスの方が、ランダムアクセスより高速に実行できる。図9に示すように連続した領域に格納されたデータは、シーケンシャルアクセスによるデータ読み出しが可能であり、高速に読み出すことができる。
 次に、メモリ制御回路130におけるデータ退避を実現する回路構成について説明する。
 図10は、メモリ制御回路におけるデータ退避を実現する回路構成の一例を示す図である。データ退避処理は、メモリ制御回路130内のメモリ構成管理回路131とデータ退避回路132とによって実現される。
 メモリ構成管理回路131は、レジスタ群131a、DIMM容量計算回路131b、および境界アドレス計算回路131cを有する。
 レジスタ群131aは、複数のレジスタを有している。レジスタには、SSU100に搭載されたDIMMの枚数や、各DIMMの記憶容量が設定される。例えばDIMMの枚数や各DIMMの記憶容量は、SSUの起動時にメモリ制御回路130において自動判別され、レジスタ群131a内の所定のレジスタに設定される。
 DIMM容量計算回路131bは、DIMMの総記憶容量を計算する。例えばDIMM容量計算回路131bは、レジスタ群131aから各DIMMの記憶容量を取得し、取得した記憶容量を合計する。
 境界アドレス計算回路131cは、SSD121,122にデータを退避する際の境界アドレスを計算する。例えば境界アドレス計算回路131cは、DIMM容量計算回路131bが計算したDIMMの総記憶容量を2で除算した値を、境界アドレスとする。
 データ退避回路132は、DIMM111,112から読み出したブロックデータを一時的に格納するバッファ134a,135aを有している。DIMM111から出力されたブロックデータは、データチェック回路132aに入力される。データチェック回路132aでは、ECCによるエラーチェックが行われる。エラーがなければ、データチェック回路132aは、ブロックデータをバッファ選択回路132cに転送する。
 バッファ選択回路132cは、入力されたブロックデータを書き込むバッファを選択する。例えばバッファ選択回路132cは、レジスタ群131aからDIMMの枚数を取得する。そしてバッファ選択回路132cは、図6に示すようにDIMMの枚数が2枚であれば、入力されたブロックデータをバッファ134aに書き込む。またバッファ選択回路132cは、図7に示すようにDIMMの枚数が1枚であれば、入力されたブロックデータを、バッファ134aとバッファ135aとに交互に書き込む。
 DIMM112から出力されたブロックデータは、データチェック回路132bに入力される。データチェック回路132bでは、ECCによるエラーチェックが行われる。エラーがなければ、データチェック回路132bは、ブロックデータをバッファ135aに書き込む。
 バッファ134aには、書き込みカウンタ132dと読み出しカウンタ132fとが接続されている。書き込みカウンタ132dは、バッファ134aへのデータの書き込み位置を示すカウンタである。書き込みカウンタ132dは、バッファ134aにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ132fは、バッファ134a,135aからのデータの読み出し位置を示すカウンタである。読み出しカウンタ132fは、バッファ134a,135aからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。ただし、読み出しカウンタ132fは、バッファ134a,135aから1ブロック分のブロックデータを2回読み出すため、1回目の読み出し完了後に、1ブロック分だけ値が戻される。
 書き込みカウンタ132dと読み出しカウンタ132fとには、カウンタ比較回路132hが接続されている。バッファ135aには、書き込みカウンタ132eが接続されている。書き込みカウンタ132eは、バッファ135aへのデータの書き込み位置を示すカウンタである。書き込みカウンタ132eは、バッファ135aにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。
 カウンタ比較回路132hは、書き込みカウンタ132dの値と読み出しカウンタ132fの値とを比較して、バッファ134aの空き容量を判断する。例えば、書き込みカウンタ132dの値と読み出しカウンタ132fの値との差が、バッファ134aに格納され、読み出し待ちの状態のデータ量である。カウンタ比較回路132hは、空き容量がブロックデータ(例えば512バイト)分あれば、読み出し制御回路132iに、読み出し可能を示す信号を出力する。
 読み出し制御回路132iには、SSU制御回路104からのデータ退避指示が入力される。読み出し制御回路132iは、データ退避指示を受け取ると、DIMM111,112からのブロックデータごとのデータ読み出しを開始する。例えば読み出し制御回路132iは、DIMM111,112に対して、読み出し対象のデータブロックのアドレスと、読み出し許可信号を出力する。これにより、DIMM111,112からブロックデータが読み出される。また読み出し制御回路132iは、カウンタ比較回路132hから読み出し可能を示す信号が入力されると、DIMM111,112内の次のデータブロックの読み出し制御を行う。
 データチェック回路132jは、バッファ134aに格納されたデータのエラーチェックを行う。例えばデータチェック回路132jは、ECCのエラーチェックを行う。データチェック回路132jは、バッファ134aに格納されたブロックデータにエラーがなければ、ブロックデータを書き込み制御回路132lに出力する。データチェック回路132kは、バッファ135aに格納されたデータのエラーチェックを行う。例えばデータチェック回路132kは、ECCのエラーチェックを行う。データチェック回路132kは、バッファ135aに格納されたブロックデータにエラーがなければ、ブロックデータを書き込み制御回路132lに出力する。
 書き込み制御回路132lは、DIMM111,112から読み出されたブロックデータの、SSD121,122への書き込みを制御する。例えば書き込み制御回路132lは、境界アドレス計算回路131cから境界アドレスを取得する。そして書き込み制御回路132lは、DIMM111から読み出されたブロックデータを、SSD121の先頭から順に書き込むと共に、SSD122の境界アドレスから順に書き込む。また書き込み制御回路132lは、DIMM112から読み出されたブロックデータを、SSD122の先頭から順に書き込むと共に、SSD121の境界アドレスから順に書き込む。
 また書き込み制御回路132lは、DIMM容量計算回路131bからDIMM111,112の総記憶容量を取得する。そして書き込み制御回路132lは、DIMM111,112の総記憶容量分のデータ書き込みが完了すると、データ退避完了と判断する。
 書き込み制御回路132lとSSD121との間にはCRC生成回路132mが設けられている。CRC生成回路132mは、SSD121に書き込むブロックデータのCRC符号を生成し、そのブロックデータに付与する。これにより、CRC符号付きのブロックデータがSSD121に書き込まれる。
 書き込み制御回路132lとSSD122との間にはCRC生成回路132nが設けられている。CRC生成回路132nは、SSD122に書き込むブロックデータのCRC符号を生成し、そのブロックデータに付与する。これにより、CRC符号付きのブロックデータがSSD122に書き込まれる。
 なお、図10に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
 次に、DIMMの枚数が2枚である場合について、データ退避処理の手順を詳細に説明する。なお、SSU100で使用されているDIMM枚数およびDIMM容量はSSU100の立上げ時には確定しているものであり、SSU100立上げ時にメモリ制御回路130のレジスタ内に、DIMM枚数およびDIMM容量が設定される。
 データ退避処理は、大別して、DIMM111,112からデータを読み出し、バッファ134a,135aに格納する処理と、バッファ134a,135a内のデータのSSD121,122への書き込み処理とに分けられる。以下、それぞれの処理について詳細に説明する。
 図11は、第2の実施の形態のDIMMデータの読み出し処理の手順の一例を示すフローチャートである。以下、図11に示す処理をステップ番号に沿って説明する。
 [ステップS101]外部電源21からの電力が停電すると、UPS制御回路102が停電を検知する。UPS制御回路102は、停電を検知すると、UPS103からの電力供給を開始すると共に、SSU制御回路104に対して停電の発生を通知する。SSU制御回路104は、停電発生の通知に応答し、メモリ制御回路130に対してデータ退避指示を送信する。これにより、DIMM111,112内のデータのSSD121,122への退避が開始される。
 [ステップS102]読み出し制御回路132iは、ブロックデータを格納するだけの空き容量がバッファにあるか否かを判断する。例えば読み出し制御回路132iは、書き込みカウンタ132dの値と読み出しカウンタ132fとの値とを比較して、バッファ134aにおける空き容量を判断する。読み出し制御回路132iは、ブロックデータ分の空き容量がある場合、処理をステップS103に進める。また読み出し制御回路132iは、ブロックデータ分の空き容量がなければ、ステップS102の処理を繰り返し、空き容量がブロックデータの容量以上になるのを待つ。
 [ステップS103]読み出し制御回路132iは、各DIMM111,112から1ブロック分のブロックデータを読み出す。DIMM111から読み出されたブロックデータは、データチェック回路132aに入力される。DIMM112から読み出されたブロックデータは、データチェック回路132bに入力される。
 [ステップS104]各データチェック回路132a,132bは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路132a,132bは、訂正不可能なECCエラー(例えば複数ビットのエラー)があれば、処理を強制終了する。データチェック回路132a,132bは、エラーがない場合、処理をステップS105に進める。またデータチェック回路132a,132bは、エラーがあったとしても、訂正可能なECCエラー(例えば1ビットのみのエラー)であれば、そのエラーを訂正し、処理をステップS105に進める。
 訂正不可能なECCエラーの検出によりDIMMデータ読み出しを強制終了した場合、例えばメモリ制御回路130は、データ退避の強制終了をSSU制御回路104に通知する。すると、SSU制御回路104は、SSU100の全機能を停止させ、UPS103からの電源供給も停止させる。
 [ステップS105]ECCエラーが検出されないか、エラーが訂正された場合、ブロックデータがバッファ134a,135aに書き込まれる。例えばDIMM111から読み出されたブロックデータは、バッファ134a内の、書き込みカウンタ132dで示されるアドレスの位置に書き込まれる。DIMM112から読み出されたブロックデータは、バッファ135a内の、書き込みカウンタ132eで示されるアドレスの位置に書き込まれる。
 [ステップS106]読み出し制御回路132iは、DIMM111,112内のすべてのデータを読み出したか否かを判断する。すべてのデータの読み出しが完了した場合、DIMMデータ読み出し処理が終了する。読み出していないデータがDIMM111,112内にある場合、読み出し制御回路132iは、処理をステップS102に進める。
 このようにして、全DIMMデータが読み出されるまで、DIMM111,112からのブロックデータ単位でのデータ読み出しが繰り返される。なお、DIMM111,112から読み出すデータ量は可変にすることもできる。
 次に、バッファ134a,135aに格納されたデータの、SSD121,122への書き込み処理について説明する。
 図12は、第2の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。以下、図12に示す処理をステップ番号に沿って説明する。
 [ステップS111]書き込み制御回路132lは、バッファ134a,135aにデータがあるか否かを判断する。例えば書き込み制御回路132lは、カウンタ比較回路132hによる比較結果を受け取り、書き込みカウンタ132dの値と読み出しカウンタ132fの値とに差がある場合、バッファ134a,135aにデータがあると判断する。バッファ134a,135aにデータがある場合、処理がステップS112に進められる。バッファ134a,135aにデータがなければ、ステップS111の処理が繰り返される。
 [ステップS112]書き込み制御回路132lは、バッファ134a,135aからデータを読み出す。例えばバッファ134a,135aから、読み出しカウンタ132fで示されるアドレスから1ブロック分のブロックデータが読み出される。バッファ134a,135aから読み出されたデータは、データチェック回路132j,132kに入力される。なお読み出しカウンタ132fの値は、バッファ134a,135aの一方から読み出されたデータ量(1ブロック)分カウントアップされる。
 [ステップS113]各データチェック回路132j,132kは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路132j,132kは、訂正不可能なECCエラー(例えば複数ビットのエラー)があれば、処理を強制終了する。データチェック回路132j,132kは、エラーがない場合、処理をステップS114に進める。またデータチェック回路132j,132kは、エラーがあったとしても、訂正可能なECCエラー(例えば1ビットのみのエラー)であれば、そのエラーを訂正し、処理をステップS114に進める。
 訂正不可能なECCエラーの検出によりDIMMデータ読み出しを強制終了した場合、例えばメモリ制御回路130は、データ退避の強制終了をSSU制御回路104に通知する。すると、SSU制御回路104は、SSU100の全機能を停止させ、UPS103からの電源供給も停止させる。
 [ステップS114]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSD121,122に書き込む。例えば書き込み制御回路132lは、SSD121の書き込みカウンタで示されるアドレスに、DIMM111から読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSD122の書き込みカウンタで示されるアドレスに、DIMM112から読み出したブロックデータを書き込む。SSD121,122それぞれのSSDの書き込みカウンタの値は、SSD121,122それぞれに書き込まれたデータ量分カウントアップされる。なおDIMM111から読み出されたブロックデータには、CRC生成回路132mによってCRC符号が付与され、CRC符号付きのブロックデータがSSD121に格納される。同様に、DIMM112から読み出されたブロックデータには、CRC生成回路132nによってCRC符号が付与され、CRC符号付きのブロックデータがSSD122に格納される。
 [ステップS115]書き込み制御回路132lは、1ブロック分のブロックデータの書き込みが完了したか否かを判断する。1ブロック分のブロックデータの書き込みが完了した場合、書き込み制御回路132lは処理をステップS116に進める。1ブロック分のブロックデータの書き込みが完了していない場合、書き込み制御回路132lは、書き込み完了を待つ。
 [ステップS116]書き込み制御回路132lは、バッファ134a,135aに関する読み出しカウンタ132fと、SSD121,122の書き込みカウンタとの値を、1ブロック分減少させる(カウンタを巻き戻す)。
 [ステップS117]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSD121,122に書き込む。例えば書き込み制御回路132lは、SSD121の書き込みカウンタの値に境界アドレスの値を加算した値を書き込みアドレスとし、SSD121に対し、DIMM112から読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSD122の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、SSD122に対し、DIMM111から読み出したブロックデータを書き込む。SSD121,122それぞれのSSDの書き込みカウンタの値は、SSD121,122それぞれに書き込まれたデータ量分カウントアップされる。なおDIMM112から読み出されたブロックデータには、CRC生成回路132mによってCRC符号が付与され、CRC符号付きのブロックデータがSSD121に格納される。同様に、DIMM111から読み出されたブロックデータには、CRC生成回路132nによってCRC符号が付与され、CRC符号付きのブロックデータがSSD122に格納される。
 これにより、ステップS111~S117の処理を1回実行することにより、DIMM111,122内の1ブロック分のデータが、2重化してSSD121,122に退避されたこととなる。
 [ステップS118]書き込み制御回路132lは、DIMM111,122内のすべてのデータの退避が完了したか否かを判断する。例えば書き込み制御回路132lは、SSD121,122のいずれかのSSD書き込みアドレスと、DIMM容量計算回路131bから得られるDIMMの総記憶容量とが一致した場合、すべてのデータの退避が完了したと判断する。書き込み制御回路132lは、すべてのデータの退避が完了した場合、SSD書き込み処理を終了する。書き込み制御回路132lは、退避が完了していないデータがあれば、処理をステップS111に進める。
 このように、DIMM111,112のすべてのデータを、2重化してSSD121,122に退避するまで、ステップS111~S117の処理が繰り返し実行される。退避されたデータの配列は、図9に示した通りである。
 <データ復元処理>
 次に、データ復元処理について説明する。
 図13は、第2の実施の形態のデータ復元処理のタイムチャートの一例を示す図である。図13の上段には、識別子「SSD-A」のSSD121と識別子「SSD-B」のSSD122とからのブロックデータの読み出しタイミングが示されている。また図13の下段には、識別子「DIMM-A」のDIMM111と識別子「DIMM-B」のDIMM112とのブロックデータの書き込みタイミングが示されている。
 データ退避が開始されると、識別子「SSD-A」のSSD121内のアドレスブロック「A」と、識別子「SSD-B」のSSD122内のアドレスブロック「B」とが並列に読み出される。読み出されたデータにエラーがなければ、アドレスブロック「A」の、識別子「DIMM-A」のDIMM111への書き込みと、アドレスブロック「B」の、識別子「DIMM-B」のDIMM112への書き込みとが、並列に実行される。これにより、アドレスブロック「A」、「B」が、DIMM111,112に復元される。
 以後、同様にして、各SSD121,122からブロックデータが順番に読み出され、DIMM111,112に書き込まれる。この動作が、DIMM111,112の総記憶容量分繰り返されることで、DIMM111,112内のデータの復元が完了する。
 図13に示すように、退避したデータを復元させることにより、SSD121およびSSD122に書き込んだ境界アドレス(4Gバイト)まで読み出した時点でデータの復元が完了できる。
 また、2重化された片方のSSDのソフトエラーが発生した場合、および特定ブロックが故障している場合には、エラー検出していないSSDから復元が可能である。この場合は、SSDから読み出してCRCエラーとなったブロックデータ(512バイト)は破棄され、破棄されたブロックデータのみを正常なSSDから再度読み出しDIMMへ復元させる。この様な場合においても従来の復元動作に比べ高速に復元が可能となる。
 次に、メモリ制御回路130におけるデータ復元を実現する回路構成について説明する。
 図14は、メモリ制御回路におけるデータ復元を実現する回路構成の一例を示す図である。データ復元処理は、メモリ制御回路130内のメモリ構成管理回路131とデータ復元回路133とによって実現される。なおメモリ構成管理回路131の内部構成は、図10を参照して説明した通りである。
 データ復元回路133は、SSD121,122から読み出したブロックデータを一時的に格納するバッファ134b,135bを有している。SSD121とバッファ134bとの間には、データチェック回路133aとECC生成回路133fとが設けられている。SSD122とバッファ135bとの間には、データチェック回路133bとECC生成回路133gとが設けられている。
 データチェック回路133a,133bは、SSD121,122から読み出されたデータのCRC符号が正しいかどうかをチェックする。データチェック回路133a,133bは、データチェックでエラーが発生した場合、エラー情報保持回路133cにエラーの発生を通知する。またデータチェック回路133aは、SSD121から読み出したデータをECC生成回路133fに転送する。同様にデータチェック回路133bは、SSD122から読み出したデータをECC生成回路133gに転送する。
 ECC生成回路133fは、SSD121から読み出されたブロックデータのECCを生成し、ECCを付与したブロックデータをバッファ134bに格納する。ECC生成回路133gは、SSD122から読み出されたブロックデータのECCを生成し、ECCを付与したブロックデータをバッファ135bに格納する。
 エラー情報保持回路133cは、データチェック回路133a,133bから通知されたエラーに関する情報(エラー情報)を保持する。例えば、エラー情報保持回路133cには、エラーを検出したデータの読み出し元のSSDの識別子、復元エラーフラグのセット、エラーを検出したデータの読み出し/書き込みアドレス、および読み出し/書き込み回数が保持される。なお、同一SSDにおいて2回以上エラーが検出された場合、アドレスの更新は行われず、1回目のエラー時のアドレスが保持される。エラー情報保持回路133cで保持したエラー情報は、読み出し制御回路133eで参照される。またエラー情報保持回路133cにエラー情報が設定されると、そのエラーが発生したSSDに対応するバッファの読み出しカウンタの値が、1ブロック分加算される。これにより、エラーが発生したブロックデータのDIMMへの復元が抑止される。
 復元データ管理回路133dは、境界アドレス計算回路131cで算出された境界アドレスに基づいて、SSD121,122からデータを読み出す範囲を管理する。また復元データ管理回路133dは、書き込み制御回路133o,133pからDIMM111,112へのブロックデータの書き込み完了の通知を受け、DIMM111,112の総記憶容量分の書き込み完了の有無を判断する。総記憶容量分の書き込みが完了した場合、復元データ管理回路133dは、読み出し制御回路133eに読み出し終了を通知する。
 読み出し制御回路133eは、SSU制御回路104からのデータ復元指示に応じて、SSD121,122からのデータの読み出しを開始する。例えば読み出し制御回路133eは、SSD121,122に対して、復元データ管理回路133dが決定したアドレスから1ブロック分のデータの読み出しを指示する。ただし、読み出し制御回路133eは、エラー情報保持回路133cに、複数のSSDでのエラー発生を示すエラー情報が保持された場合、復元失敗の情報をSSU制御回路104に通知し、SSD121,122からのデータの読み出しを停止する。また読み出し制御回路133eは、復元データ管理回路133dから、読み出し終了の通知を受けると、SSD121,122からのデータ読み出しを終了する。
 バッファ134bには、書き込みカウンタ133hと読み出しカウンタ133jとが接続されている。書き込みカウンタ133hは、バッファ134bへのデータの書き込み位置を示すカウンタである。書き込みカウンタ133hは、バッファ134bにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ133jは、バッファ134bからのデータの読み出し位置を示すカウンタである。読み出しカウンタ133jは、バッファ134bからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。同様にバッファ135bには、書き込みカウンタ133iと読み出しカウンタ133kとが接続されている。書き込みカウンタ133iは、バッファ135bへのデータの書き込み位置を示すカウンタである。書き込みカウンタ133iは、バッファ135bにデータが格納されるごとに、格納されたデータ量分の値だけカウントアップされる。読み出しカウンタ133kは、バッファ135bからのデータの読み出し位置を示すカウンタである。読み出しカウンタ133kは、バッファ135bからデータが読み出されるごとに、読み出されたデータ量分だけ、カウントアップされる。
 バッファ134bから読み出されたデータは、データチェック回路133lに入力される。データチェック回路133lは、バッファ134bから読み出したブロックデータのECCエラーの有無をチェックする。データチェック回路133lは、エラーがなければ、ブロックデータを書き込み先選択回路133nに転送する。バッファ135bから読み出されたデータは、データチェック回路133mに入力される。データチェック回路133mは、バッファ135bから読み出したブロックデータのECCエラーの有無をチェックする。データチェック回路133mは、エラーがなければ、ブロックデータを書き込み先選択回路133nに転送する。
 書き込み先選択回路133nは、バッファ134b,135bそれぞれから読み出されたブロックデータのいずれかを選択し、書き込み制御回路133o,133pのいずれかに送信する。例えば書き込み先選択回路133nは、DIMMが2枚ある場合、バッファ134bから読み出されたブロックデータを書き込み制御回路133oに送信し、バッファ135bから読み出されたブロックデータを書き込み制御回路133pに送信する。またDIMMが1枚だけの場合、書き込み先選択回路133nは、バッファ134bから読み出されたブロックデータとバッファ135bから読み出されたブロックデータとを交互に選択し、書き込み制御回路133oに送信する。
 書き込み制御回路133oは、書き込み先選択回路133nから受信したブロックデータをDIMM111に書き込む。書き込み制御回路133oは、1ブロック分のブロックデータの書き込みが完了するごとに、復元データ管理回路133dに書き込み完了を通知する。書き込み制御回路133pは、書き込み先選択回路133nから受信したブロックデータをDIMM112に書き込む。書き込み制御回路133pは、1ブロック分のブロックデータの書き込みが完了するごとに、復元データ管理回路133dに書き込み完了を通知する。
 なお、図14に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
 次に、DIMMの枚数が2枚である場合について、データ復元処理の手順を詳細に説明する。データ復元処理は、大別して、SSD121,122からデータを読み出し、バッファ134b,135bに格納する処理と、バッファ134b,135b内のデータのDIMM111,112への書き込み処理とに分けられる。以下、それぞれの処理について詳細に説明する。
 図15は、第2の実施の形態のSSDデータの読み出し処理の手順の一例を示すフローチャートである。以下、図15に示す処理をステップ番号に沿って説明する。
 [ステップS131]読み出し制御回路133eは、例えば電源回復によりSSU制御回路104からのデータ復元指示が出力されると、SSD121,122それぞれから、1ブロック分のブロックデータを同時に読み出す。読み出されたブロックデータは、データチェック回路133a,133bに入力される。
 [ステップS132]SSD121,122から読み出されたブロックデータが、バッファ134b,135bに書き込まれる。例えばSSD121から読み出されたブロックデータは、データチェック回路133aでCRCのエラーの有無がチェックされた後、ECC生成回路133fに転送される。ECC生成回路133fでは、SSD121から読み出されたブロックデータのECCが生成され、ECCが付与されたブロックデータがバッファ134bの、書き込みカウンタ133hで示される位置に格納される。またSSD122から読み出されたブロックデータは、データチェック回路133bでCRCのエラーの有無がチェックされた後、ECC生成回路133gに転送される。ECC生成回路133gでは、SSD122から読み出されたブロックデータのECCが生成され、ECCが付与されたブロックデータがバッファ135bの、書き込みカウンタ133iで示される位置に格納される。
 [ステップS133]データチェック回路133a,133bは、それぞれCRCのエラーを検出したか否かを判断する。データチェック回路133a,133bは、エラーを検出した場合、エラー情報をエラー情報保持回路133cに送信し、処理をステップS135に進める。エラーが検出されていなければ、処理がステップS134に進められる。
 [ステップS134]復元データ管理回路133dは、DIMM111,112の記憶容量分のデータ読み出しが完了したか否かを判断する。例えば復元データ管理回路133dは、DIMM容量計算回路131bが計算したDIMMの総記憶容量を取得する。そして復元データ管理回路133dは、読み出した最後のアドレスと、DIMMの総記憶容量とを比較し、全DIMM容量分読み出したか否かを判断する。
 DIMM111,112の記憶容量分のデータ読み出しが完了した場合、復元データ管理回路133dから読み出し制御回路133eに読み出し終了を通知する。この通知に基づいて、読み出し制御回路133eは、SSD121,122からのデータ読み出しを終了する。DIMM111,112の記憶容量分のデータ読み出しが完了していなければ、処理がステップS131に進められ、次のブロックデータの読み出しが行われる。
 なお、SSD121,122の読み出し速度はDIMM111,112の書き込み速度より遅いため、バッファ134b,135bの容量が2ブロックデータ分あれば境界アドレスまで、待ち時間を挟まずにシーケンシャルに読み出すことが可能である。SSD121,122から読み出す1ブロックのデータ量は可変にすることもできる。
 [ステップS135]データチェック回路133a,133bの少なくともいずれか一方でCRCエラーが検出された場合、エラー情報保持回路133cは、検出されたエラーに関するエラー情報を保持する。例えばエラー情報保持回路133cは、エラーが検出されたブロックデータの読み出し元のSSDの識別子、エラー回数、および読み出し/書き込みアドレスを保持する。またエラー情報保持回路133cは、復元エラーフラグを、エラー有りの状態(ON)にセットする。なおエラー情報保持回路133cは、同一SSDにおける2回目以降のエラー検出では、エラーが発生したブロックデータのアドレスの更新は行わず、1回目のエラーを検出したデータのアドレスをそのまま保持する。
 [ステップS136]読み出し制御回路133eは、複数のSSDでエラーが検出されたか否かを判断する。2つのSSD121,122両方でエラーが検出された場合、読み出し制御回路133eは処理をステップS137に進める。一方のSSDのみでエラーが検出されたのであれば、処理がステップS138に進められる。
 [ステップS137]読み出し制御回路133eは、データの復元失敗報告をSSU制御回路104に通知し、データ復元処理を終了する。
 [ステップS138]一方のSSDのみでエラーが検出されている場合、エラー情報保持回路133cは、エラーが発生したSSDに対応するバッファの読み出しカウンタの値を、1ブロック分加算する。これにより、エラーが発生したブロックデータの読み出しは行われなくなる。すなわち、エラーとなったブロックデータのDIMM111,112への書き込みが抑止される。その後、処理がステップS131に進められる。
 このように、複数のSSDでエラーが発生し、強制終了される場合を除き、ブロックデータごとのSSD121,122からのデータの読み出しが、全DIMM容量分繰り返される。
 次に、DIMMへのデータ書き込み処理の手順について詳細に説明する。
 図16は、第2の実施の形態のDIMMへのデータ書き込み処理の手順の一例を示すフローチャートである。以下、図16に示す処理をステップ番号に沿って説明する。
 [ステップS141]書き込み制御回路133o,133pは、バッファ134b,135bに1ブロック分のブロックデータが書き込まれたか否かを判断する。データが書き込まれた場合、処理がステップS142に進められる。データが書き込まれていなければ、書き込み制御回路133o,133pはステップS141の処理を繰り返し、データが書き込まれるのを待つ。
 [ステップS142]書き込み制御回路133o,133pは、バッファ134b,135bに書き込まれたブロックデータを読み出す。例えば書き込み制御回路133oは、読み出しカウンタ133jで示されるアドレスから1ブロック分のデータを、バッファ134bから読み出す。読み出されたブロックデータは、データチェック回路133lおよび書き込み先選択回路133nを介して書き込み制御回路133oに送られる。この際、データチェック回路133lにおいて、読み出されたブロックデータのECCのエラーの有無がチェックされる。訂正可能なエラーであれば、データチェック回路133lによってエラーが訂正される。
 同様に書き込み制御回路133pは、読み出しカウンタ133kで示されるアドレスから1ブロック分のデータを、バッファ135bから読み出す。読み出されたブロックデータは、データチェック回路133mおよび書き込み先選択回路133nを介して書き込み制御回路133pに送られる。この際、データチェック回路133mにおいて、読み出されたブロックデータのECCのエラーの有無がチェックされる。訂正可能なエラーであれば、データチェック回路133mによってエラーが訂正される。
 [ステップS143]書き込み制御回路133o,133pは、データチェック回路133l,133mにおいて訂正不可能なエラーが検出されたか否かを判断する。訂正不可能なエラーが検出された場合、処理がステップS144に進められる。訂正不可能なエラーが検出されていなければ、処理がステップS145に進められる。
 [ステップS144]書き込み制御回路133o,133pは、データの復元失敗報告をSSU制御回路104に通知し、データ復元処理を終了する。
 [ステップS145]書き込み制御回路133o,133pは、読み出したブロックデータに訂正不可能なECCエラーが検出されなければ、読み出したブロックデータをDIMM111,112に書き込む。例えば書き込み制御回路133oは、SSD121から読み出されたブロックデータを、DIMM111の書き込みカウンタで示されるアドレスに書き込む。書き込み制御回路133pは、SSD122から読み出されたブロックデータを、DIMM112の書き込みカウンタで示されるアドレスに書き込む。
 [ステップS146]復元データ管理回路133dは、SSD121,122それぞれの境界アドレスまでのデータの読み出しと、正常に読み出されたブロックデータの書き込みとが完了したか否かを判断する。境界アドレスまでの読み出し/書き込みが完了した場合、復元データ管理回路133dは、処理をステップS147に進める。境界アドレスまでの読み出し/書き込みが完了していなければ、復元データ管理回路133dは、処理をステップS141に進める。これにより、境界アドレスまでのSSD121,122のデータをDIMM111,112に復元するまで、ステップS141~S145の処理が繰り返される。
 [ステップS147]読み出し制御回路133eは、エラー情報保持回路133cが保持している復元エラーフラグがONか否かを判断する。読み出し制御回路133eは、復元エラーフラグがONであれば、処理をステップS148に進める。また読み出し制御回路133eは、復元エラーフラグがONでなければ、DIMMへのデータ書き込み処理を終了する。
 [ステップS148]データ復元回路133において、復元エラー回復処理が行われる。この処理の詳細は後述する(図17参照)。その後、DIMMへのデータ書き込み処理を終了する。なおDIMMへのデータ書き込み処理を終了する際には、エラー情報保持回路133cが保持しているエラー情報は消去され、復元エラーフラグも「0」(エラーなしを示す状態)にリセットされる。
 次に、復元エラー回復処理の手順について説明する。
 図17は、第2の実施の形態の復元エラー回復処理の手順の一例を示す図である。以下、図17に示す処理をステップ番号に沿って説明する。
 [ステップS151]読み出し制御回路133eは、エラー情報保持回路133cにおいて、エラーが検出されたSSDに対応付けて保持されている、エラー発生時の書き込みアドレス(エラーアドレス)を取得する。そして読み出し制御回路133eは、DIMM111,112への書き込みカウンタの値を、取得した書き込みアドレスに更新する。
 [ステップS152]読み出し制御回路133eは、エラー情報保持回路133cで保持されているエラー回数を参照し、エラーが検出されたSSDにおけるエラー回数が2回以上か否かを判断する。エラー情報保持回路133cは、エラー回数が2回以上の場合はエラーが検出されたSSDは故障している可能性が高い。そこで、読み出し制御回路133eは、エラーが検出されていないSSDからブロックデータを読み出すため、処理をステップS157に進める。またエラー情報保持回路133cは、エラー回数が1回の場合はソフトエラーの可能性が高い。そこで、読み出し制御回路133eは、エラーが検出されたSSDから再度ブロックデータを読み出すため、処理をステップS153に進める。
 [ステップS153]読み出し制御回路133eは、エラー情報保持回路133cからエラー発生時の読み出しアドレスを取得し、そのアドレスを、エラーを検出したSSDからの読み出しアドレスとする。
 [ステップS154]読み出し制御回路133eは、エラーが検出されたSSDの読み出しアドレスから境界アドレスまでのデータを、ブロックデータ単位で順次読み出す。読み出されたブロックデータは、CRCのデータチェック後、ECCが付加されバッファに格納される。
 [ステップS155]ステップS154で読み出しが行われたSSDに対応するデータチェック回路は、読み出したブロックデータについてCRCエラーを検出したか否かを判断する。CRCエラーを検出した場合、処理がステップS156に進められる。CRCエラーを検出していなければ、処理がステップS161に進められる。
 [ステップS156]CRCエラーを検出された場合、エラー情報保持回路133cは、検出されたエラーに関するエラー情報を保持する。例えばエラー情報保持回路133cは、エラーが検出されたブロックデータの読み出し元のSSDの識別子に対応するエラー回数を、2回に変更する。その後、処理がステップS151に進められ、再度エラー回数が2回以上での処理によるデータ復元処理が実行される。
 [ステップS157]エラー回数が2回以上の場合、読み出し制御回路133eは、エラー情報保持回路133cからエラー発生時の読み出しアドレス(エラーアドレス)を取得する。そして読み出し制御回路133eは、エラーが検出されていないSSDからの読み出しアドレスを、「境界アドレス+エラーアドレス」とする。
 [ステップS158]読み出し制御回路133eは、エラーが検出されていないSSDの読み出しアドレスから境界アドレスまでのデータを、ブロックデータ単位で順次読み出す。読み出されたブロックデータは、CRCのエラーチェック後、ECCが付加されバッファに格納される。
 [ステップS159]ステップS158で読み出しが行われたSSDに対応するデータチェック回路は、読み出したブロックデータについてCRCエラーを検出したか否かを判断する。CRCエラーを検出した場合、処理がステップS160に進められる。CRCエラーを検出していなければ、処理がステップS161に進められる。
 [ステップS160]エラーが検出されていなかったSSDから読み出したブロックデータにおいてもエラーが検出された場合、読み出し制御回路133eは、データの復元失敗報告をSSU制御回路104に通知し、復元エラー回復処理を終了する。
 [ステップS161]ブロックデータが書き込まれたバッファに対応する書き込み制御回路が、そのバッファからブロックデータを読み出す。バッファから読み出されたブロックデータは、そのバッファに対応するデータチェック回路でECCエラーの有無がチェックされる。
 [ステップS162]バッファからの読み出しを行った書き込み制御回路は、訂正不可能なECCエラーが検出されたか否かを判断する。訂正不可能なECCエラーが検出された場合、処理がステップS160に進められ、復元失敗報告後に、復元エラー回復処理が強制終了する。訂正不可能なECCエラーが検出されていなければ、処理がステップS163に進められる。
 [ステップS163]読み出したブロックデータに訂正不可能なECCエラーがなければ、バッファからの読み出しを行った書き込み制御回路は、対応するDIMMの書き込みカウンタの位置に、読み出したブロックデータを書き込む。
 [ステップS164]復元データ管理回路133dは、すべてのデータのDIMM111,112への復元が完了したか否かを判断する。すべてのデータの復元が完了した場合、復元エラー回復処理が終了する。復元が完了していないデータがある場合、処理がステップS161に進められ、ステップS160~S163の動作が復元完了まで繰り返される。その結果、2重化されたSSDの片側でエラーが起きた場合においても、DIMMへのデータ復元動作を短時間で行う事が可能となる。
 以上説明したように、第2の実施の形態では、データ退避時に、DIMM111,112のすべてのデータが、SSD121,122の上位領域に格納されるように、データを退避する。そして、DIMM111,112のすべてのデータを、SSD121,122の下位領域に退避することで、退避したデータの2重化を図る。このようなデータ退避を行うことで、データ復元時には、SSD121,122の上位領域からのみデータをシーケンシャルに読み出すことで、すべてのデータの復元が可能となる。すなわち、SSD121,122の下位領域に対するデータ読み出しのアクセスを行わずに済み、効率的なデータ復元が可能となる。
 例えば比較例として、DIMMから読み出した順に、SSDにブロックデータを格納した場合について説明する。
 図18は、データ退避・復元処理の比較例を示す図である。図18の例では、データ退避時には、DIMM118とDIMM119とのそれぞれから、上位から順にブロックデータが読み出されている。そして読み出されたブロックデータは、読み出された順に、SSD128とSSD129とに2重化して書き込まれている。
 このようなデータ退避処理を行った場合、データを復元する際には、SSD128,129の少なくともいずれか一方について、全体のデータ読み出しを行うこととなる。図18の例では、DIMM118,119の全記憶容量が8GBであり、SSD128,129もそれぞれ8GBである。すると、例えばSSD128から8GB分のデータ読み出しが行われる。
 一方、図6に示したように、第2の実施の形態では、SSD121とSSD122との上位領域に、退避したデータのすべてが格納されている。この場合、SSD121とSSD122とそれぞれから、4GB分ずつデータを並列に読み出せば、DIMMのデータを復元できる。その結果、データ復元時間を約半分に短縮することができる。
 なお、以上の説明は、DIMMが2枚の場合の処理手順であるが、図7に示すようにDIMM1枚の場合にも適用できる。1枚のDIMMのデータを2重化されたSSDに退避する場合は、例えばデータブロックごとに1枚のDIMMから読み出したデータの格納バッファを、バッファ選択回路132cが選択する。読み出されたブロックデータは、選択されたバッファに格納される。これにより、1枚のDIMMから読み出されたデータが複数のバッファに振り分けられる。以降はDIMMが2枚の時と同じ動作で、DIMMデータの退避が可能である。復元動作は、各SSDから読み出したデータが対応するバッファに書き込まれる。そして、書き込み先選択回路133nが、バッファからの読み出し動作を交互に行い1枚のDIMMに復元データの書き込みを行う。DIMMの動作はSSDの動作より高速であるために各SSDの読み出しを並列に行い、1枚のDIMMに退避させる動作においても、DIMMへの復元時間が短縮可能な効果が得られる。
 〔第3の実施の形態〕
 次に第3の実施の形態について説明する。第3の実施の形態は、DIMM枚数とSSD枚数が、例えば4枚以上の多数の場合にも適用可能なデータ退避・復元技術である。
 第3の実施の形態では、DIMM枚数、SSD枚数は偶数とする。そしてDIMM・SSDとも2つのグループにグループ分けする。各グループ内の枚数は同じ枚数とする。
 なお、第3の実施の形態におけるメモリ制御回路130-1の内部構成は、図4に示す第2の実施の形態のメモリ制御回路130に対して、DIMMおよびSSDの選択回路を追加したものである。そこで以下の説明において、図4、図10、図14で示した第2の実施の形態の要素と同じ機能の要素には同じ符号を付し、説明を省略する。
 図19は、第3の実施の形態におけるメモリ制御回路内のデータ退避機能の一例を示すブロック図である。
 複数のDIMMは、2つのDIMMグループ113,114に分けられている。DIMMグループ113の識別子を「DIMMグループ0」、DIMMグループ114の識別子を「DIMMグループ1」とする。DIMMグループ113,114それぞれに属するDIMMには、グループ内における識別番号が付与されている。
 同様に複数のSSDは、2つのSSDグループ123,124に分けられている。SSDグループ123の識別子を「SSDグループ0」、SSDグループ124の識別子を「SSDグループ1」とする。SSDグループ123,124それぞれに属するSSDには、グループ内における識別番号が付与されている。同一グループのSSDそれぞれの一部の記憶領域を纏められ、図9に示す上位領域121a,122aとして使用される。同様に同一グループのSSDそれぞれの一部の記憶領域が纏められ、図9に示す下位領域121b,122bとして使用される。
 メモリ制御回路130-1は、DIMMからのデータ読み出し回路として、DIMM選択カウンタ141,142、DIMM選択カウンタ制御回路143、選択回路144,145、および読み出しデータ数計算回路146を有する。
 DIMM選択カウンタ141は、DIMMグループ113に属するDIMMのうちの、データ読み出し対象として選択するDIMMの識別番号を示すカウンタである。DIMM選択カウンタ142は、DIMMグループ114に属するDIMMのうちの、データ読み出し対象として選択するDIMMの識別番号を示すカウンタである。DIMM選択カウンタ制御回路143は、DIMM選択カウンタ141,142の値を制御する。選択回路144は、DIMMグループ113内の、DIMM選択カウンタ141で示される識別番号のDIMMを、読み出し対象として選択する。選択回路145は、DIMMグループ114内の、DIMM選択カウンタ142で示される識別番号のDIMMを、読み出し対象として選択する。読み出しデータ数計算回路146は、DIMMから読み出されたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
 またメモリ制御回路130-1は、SSDへのデータ書き込み回路として、SSD選択カウンタ151,152、SSD選択カウンタ制御回路153、選択回路154,155、書き込みデータ数計算回路156を有する。
 SSD選択カウンタ151は、SSDグループ123に属するSSDのうちの、データ書き込み対象として選択するSSDの識別番号を示すカウンタである。SSD選択カウンタ152は、SSDグループ124に属するSSDのうちの、データ書き込み対象として選択するSSDの識別番号を示すカウンタである。SSD選択カウンタ制御回路153は、SSD選択カウンタ151,152の値を制御する。選択回路154は、SSDグループ123内の、SSD選択カウンタ151で示される識別番号のSSDを、書き込み対象として選択する。選択回路155は、SSDグループ124内の、SSD選択カウンタ152で示される識別番号のSSDを、書き込み対象として選択する。書き込みデータ数計算回路156は、SSDに書き込まれたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
 次に、DIMM/SSDが複数枚ある場合のデータ退避動作の説明をする。基本はDIMM/SSDが2枚の動作と同じであり、複数枚あるDIMM/SSDのどれを使用するのかを選択する選択回路が追加される。DIMMグループ0/1それぞれからのデータ読み出し動作は同一の動作である。またSSDグループ0/1それぞれに対するデータ書き込み動作は同一の動作である。
 図20は、第3の実施の形態のDIMMデータの読み出し処理の手順の一例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。
 [ステップS201]外部電源21からの電力が停電すると、UPS制御回路102が停電を検知する。UPS制御回路102は、停電を検知すると、UPS103からの電力供給を開始すると共に、SSU制御回路104に対して停電の発生を通知する。SSU制御回路104は、停電発生の通知に応答し、メモリ制御回路130-1に対してデータ退避指示を送信する。これにより、DIMMグループ113,114に属するDIMM内のデータのSSDグループ123,124に属するSSDへの退避が開始される。
 [ステップS202]DIMM選択カウンタ制御回路143は、DIMM選択カウンタ141,142に対して、初期値を設定する。例えば、DIMMグループ113,114それぞれ内のDIMMに対して、「0」から開始される昇順の識別番号が付与されている場合、DIMM選択カウンタ141,142に「0」が設定される。すると、選択回路144,145では、DIMMグループ113,114内の、DIMM選択カウンタ141,142で選択された識別番号のDIMMを、データ退避回路132に電気的に接続する。
 同様にSSD選択カウンタ制御回路153は、SSD選択カウンタ151,152に対して、初期値を設定する。例えば、SSDグループ123,124それぞれ内のSSDに対して、「0」から開始される昇順の識別番号が付与されている場合、SSD選択カウンタ151,152に「0」が設定される。すると、選択回路154,155では、SSDグループ123,124内の、SSD選択カウンタ141,142で選択された識別番号のSSDを、データ退避回路132に電気的に接続する。
 [ステップS203]データ退避回路132内の読み出し制御回路132iは、ブロックデータを格納するだけの空き容量がバッファにあるか否かを判断する。この処理の詳細は、図11のステップS102と同様である。
 [ステップS204]データ退避回路132内の読み出し制御回路132iは、各DIMMグループ113,114内の選択されたDIMMから1ブロック分のブロックデータを読み出す。DIMMグループ113内のDIMMから読み出されたブロックデータは、データチェック回路132aに入力される。DIMMグループ114内のDIMMから読み出されたブロックデータは、データチェック回路132bに入力される。
 [ステップS205]読み出しデータ数計算回路146は、DIMMグループ113のDIMMから読み出されたデータ量をカウントし、読み出されたデータ量を監視する。そして、読み出しデータ数計算回路146は、1ブロック分のデータ(ブロックデータ)が読み出されたか否かを判断する。ブロックデータが読み出された場合、処理がステップS206に進められる。ブロックデータが読み出されていない場合、ステップS205の処理が繰り返される。
 [ステップS206]ブロックデータが読み出されると、DIMM選択カウンタ制御回路143は、DIMM選択カウンタ141,142の値を「1」インクリメントする。
 [ステップS207]DIMM選択カウンタ制御回路143は、DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とを比較し、一致するか否かを判断する。なお、全DIMM枚数は、メモリ構成管理回路131内のレジスタ群131aに予め登録されている。DIMM選択カウンタ制御回路143は、メモリ構成管理回路131から全DIMM枚数を取得し、その枚数の半分を、1グループ内DIMM枚数と判断する。
 DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致した場合、処理がステップS209に進められる。DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致しない場合、処理がステップS208に進められる。
 [ステップS208]DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致しない場合、DIMM選択カウンタ制御回路143は、各DIMMグループ113,114からの読み出しカウンタの値を、1ブロック分減算する。その後、処理がステップS210に進められる。
 [ステップS209]DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致した場合、DIMM選択カウンタ制御回路143は、DIMM選択カウンタ141,142それぞれの値を「0」に初期化する。
 なお、DIMM読み出しカウンタの値は、DIMMからデータが読み出されるごとに、読み出されたデータ量だけ増加する。また、DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致した場合には、DIMM読み出しカウンタの値を減少させる処理(ステップS208)が行われない。これは、DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致した場合に、DIMM読み出しカウンタの値を1ブロック分増加させることを意味する。
 [ステップS210]データ退避回路132内の各データチェック回路132a,132bは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路132a,132bは、訂正不可能なECCエラー(例えば複数ビットのエラー)があれば、処理を強制終了する。データチェック回路132a,132bは、エラーがない場合、およびエラーがあったとしても訂正可能なECCエラーであれば、処理をステップS211に進める。
 [ステップS211]ECCエラーが検出されないか、エラーが訂正された場合、ブロックデータがバッファ134a,135aに書き込まれる。例えばDIMMグループ113内のDIMMから読み出されたブロックデータは、バッファ134a内の、書き込みカウンタ132dで示されるアドレスの位置に書き込まれる。DIMMグループ114から読み出されたブロックデータは、バッファ135a内の、書き込みカウンタ132eで示されるアドレスの位置に書き込まれる。
 [ステップS212]読み出し制御回路132iは、DIMMグループ113,114に属するDIMM内のすべてのデータを読み出したか否かを判断する。すべてのデータの読み出しが完了した場合、DIMMデータ読み出し処理が終了する。読み出していないデータがある場合、読み出し制御回路132iは、処理をステップS203に進める。
 このようにして、全てのDIMMデータを読み出すまで、ステップS203~S211の処理が繰り返され、順次、データ退避回路132内のバッファにデータが書き込まれる。DIMMから読み出されたデータおよびバッファからの読み出しでエラーが検出されない場合は、SSDグループ123,124内のSSDへの書き込みが行われる。エラーが検出された場合には、前記しているようにエラー報告して強制終了動作となる。
 次に、バッファ134a,135aに格納されたデータの、SSDグループ123,124内のSSDへの書き込み処理について説明する。
 図21は、第3の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。
 [ステップS221]書き込み制御回路132lは、バッファ134a,135aにデータがあるか否かを判断する。この処理の詳細は、図12のステップS111と同様である。バッファ134a,135aにデータがある場合、処理がステップS222に進められる。バッファ134a,135aにデータがなければ、ステップS221の処理が繰り返される。
 [ステップS222]書き込み制御回路132lは、バッファ134a,135aからデータを読み出す。この処理の詳細は、図12のステップS112と同様である。
 [ステップS223]各データチェック回路132j,132kは、入力されたブロックデータの訂正不可能なエラーを検出したか否かを判断する。データチェック回路132j,132kは、訂正不可能なECCエラー(例えば複数ビットのエラー)があれば、処理を強制終了する。データチェック回路132j,132kは、エラーがない場合、およびエラーがあったとしても訂正可能なECCエラーであれば、処理をステップS224に進める。
 [ステップS224]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSDグループ123,124内の選択されているSSDに書き込む。例えば書き込み制御回路132lは、SSDグループ123内の選択されているSSDに、DIMMグループ113内のDIMMから読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSDグループ124内の選択されているSSDに、DIMMグループ114内のDIMMから読み出したブロックデータを書き込む。
 [ステップS225]書き込み制御回路132lは、1ブロック分のブロックデータの書き込みが完了したか否かを判断する。1ブロック分のブロックデータの書き込みが完了した場合、書き込み制御回路132lは処理をステップS226に進める。1ブロック分のブロックデータの書き込みが完了していない場合、書き込み制御回路132lはステップS225を繰り返し、書き込み完了を待つ。
 [ステップS226]書き込み制御回路132lは、バッファ134a,135aに関する読み出しカウンタ132fと、SSDの書き込みカウンタとの値を、1ブロック分減少させる。すなわちカウンタの値から、1ブロックのデータ量分の値を減算する。
 [ステップS227]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSDグループ123,124内のSSDに書き込む。例えば書き込み制御回路132lは、SSDグループ123の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、SSDグループ123内のSSDに対し、DIMMグループ114内のDIMMから読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSDグループ124の書き込みカウンタの値に境界アドレスの値を加算した値を書き込み先のアドレスとし、SSDグループ124内のSSDに対し、DIMMグループ113内のDIMMから読み出したブロックデータを書き込む。
 [ステップS228]書き込みデータ数計算回路156は、SSDグループ123,124それぞれに対する1ブロックずつのブロックデータの書き込みが行われ、合わせて2ブロック分のデータの書き込みが完了したか否かを判断する。2ブロック分の書き込みが完了した場合、処理がステップS229に進められる。2ブロック分の書き込みが完了していなければ、ステップS228の処理が繰り返される。
 [ステップS229]2ブロック分のデータの書き込みが完了すると、SSD選択カウンタ制御回路153は、SSD選択カウンタ151,152の値を「1」だけインクリメントする。
 [ステップS230]SSD選択カウンタ制御回路153は、SSD選択カウンタ151,152の値と1グループ内SSD枚数とを比較し、一致するか否かを判断する。なお、全SSD枚数は、メモリ構成管理回路131内のレジスタ群131aに予め登録されている。SSD選択カウンタ制御回路153は、メモリ構成管理回路131から全DIMM枚数を取得し、その枚数の半分を、1グループ内SSD枚数と判断する。
 SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致した場合、処理がステップS232に進められる。SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致しない場合、処理がステップS231に進められる。
 [ステップS231]SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致しない場合、SSD選択カウンタ制御回路153は、各SSDグループ123,124へのデータの書き込みカウンタの値を、1ブロック分減少させる。その後、処理がステップS233に進められる。
 [ステップS232]SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致した場合、SSD選択カウンタ制御回路153は、SSD選択カウンタ151,152それぞれの値を「0」に初期化する。
 なお、SSD書き込みカウンタの値は、SSDにデータの書き込みが行われるごとに、書き込みが行われたデータ量だけ増加する。また、SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致した場合には、SSD書き込みカウンタの値を減少させる処理(ステップS231)が行われない。これは、SSD選択カウンタ151,152の値と1グループ内SSD枚数とが一致した場合に、SSD書き込みカウンタの値を1ブロック分増加させることを意味する。
 [ステップS233]書き込み制御回路132lは、DIMMグループ113,114内のすべてのデータの退避が完了したか否かを判断する。書き込み制御回路132lは、すべてのデータの退避が完了した場合、SSD書き込み処理を終了する。書き込み制御回路132lは、すべてのデータの退避が完了していなければ、処理をステップS221に進める。
 このようにメモリ制御回路130-1は、SSDグループ123,124にデータを書き込む場合、SSDグループ123またはSSDグループ124内の複数の記憶装置それぞれを順番に選択する。そしてメモリ制御回路130-1は、同一書き込みアドレスのまま、所定のデータ量のブロックデータずつ選択した記憶装置に書き込む。またメモリ制御回路130-1は、複数の記憶装置のそれぞれの選択が一巡するごとに、書き込みアドレスをブロックデータのデータ量分増加させる。このようなアドレス制御によって、同一SSDグループ内の複数のSSDにデータを順番に格納することができる。
 このようにして、DIMMやSSDが4枚以上であっても、データを2重化させて退避することができる。このとき、DIMMグループ113内のDIMMに格納されていたデータは、SSDグループ123内の各SSDの上位領域と、SSDグループ124内の各SSDの下位領域とに格納される。またDIMMグループ114内のDIMMに格納されていたデータは、SSDグループ124内の各SSDの上位領域と、SSDグループ123内の各SSDの下位領域とに格納される。
 次に第3の実施の形態におけるデータ復元機能について説明する。
 図22は、第3の実施の形態におけるメモリ制御回路内のデータ復元機能の一例を示すブロック図である。
 メモリ制御回路130-1は、SSDからのデータ読み出し回路として、SSD選択カウンタ161,162、SSD選択カウンタ制御回路163、選択回路164,165、および読み出しデータ数計算回路166を有する。
 SSD選択カウンタ161は、SSDグループ123に属するSSDのうちの、データ読み出し対象として選択するSSDの識別番号を示すカウンタである。SSD選択カウンタ162は、SSDグループ124に属するSSDのうちの、データ読み出し対象として選択するSSDの識別番号を示すカウンタである。SSD選択カウンタ制御回路163は、SSD選択カウンタ161,162の値を制御する。選択回路164は、SSDグループ123内の、SSD選択カウンタ161で示される識別番号のSSDを、読み出し対象として選択する。選択回路165は、SSDグループ124内の、SSD選択カウンタ162で示される識別番号のSSDを、読み出し対象として選択する。読み出しデータ数計算回路166は、SSDから読み出されたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
 またメモリ制御回路130-1は、DIMMへのデータ書き込み回路として、DIMM選択カウンタ171,172、DIMM選択カウンタ制御回路173、選択回路174,175、書き込みデータ数計算回路176を有する。
 DIMM選択カウンタ171は、DIMMグループ113に属するDIMMのうちの、データ書き込み対象として選択するDIMMの識別番号を示すカウンタである。DIMM選択カウンタ142は、DIMMグループ114に属するDIMMのうちの、データ書き込み対象として選択するDIMMの識別番号を示すカウンタである。DIMM選択カウンタ制御回路173は、DIMM選択カウンタ171,172の値を制御する。選択回路174は、DIMMグループ113内の、DIMM選択カウンタ171で示される識別番号のDIMMを、書き込み対象として選択する。選択回路175は、DIMMグループ114内の、DIMM選択カウンタ172で示される識別番号のDIMMを、書き込み対象として選択する。書き込みデータ数計算回路176は、DIMMに書き込まれたデータ量をカウントし、ブロックデータ分読み出したことを監視する。
 次に、DIMM/SSDが複数枚ある場合のデータ復元動作の説明をする。基本はDIMM/SSDが2枚の動作と同じであり、複数枚あるDIMM/SSDのどれを使用するかを選択する選択回路が追加される。SSDグループ0/1それぞれからのデータ読み出し動作は同一の動作である。またDIMMグループ0/1それぞれに対するデータ書き込み動作は同一の動作である。
 図23は、第3の実施の形態のSSDデータの読み出し処理の手順の一例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。
 [ステップS241]SSD選択カウンタ制御回路163は、例えば電源回復によりSSU制御回路104からのデータ復元指示が出力されると、SSD選択カウンタ161,162に対して、初期値を設定する。例えば、SSDグループ123,124それぞれ内のSSDに対して、「0」から開始される昇順の識別番号が付与されている場合、SSD選択カウンタ161,162に「0」が設定される。すると、選択回路164,165では、SSDグループ123,124内の、SSD選択カウンタ161,162で選択された識別番号のSSDを、データ復元回路133に電気的に接続する。
 同様にDIMM選択カウンタ制御回路173は、例えば電源回復によりSSU制御回路104からのデータ復元指示が出力されると、DIMM選択カウンタ171,172に対して、初期値を設定する。例えば、DIMMグループ113,114それぞれ内のDIMMに対して、「0」から開始される昇順の識別番号が付与されている場合、DIMM選択カウンタ171,172に「0」が設定される。すると、選択回路174,175では、DIMMグループ113,114内の、DIMM選択カウンタ171,172で選択された識別番号のDIMMを、データ復元回路133に電気的に接続する。
 [ステップS242]読み出し制御回路133eは、SSDグループ123,124それぞれ内の選択されたSSDから、1ブロック分のブロックデータを同時に読み出す。読み出されたブロックデータは、データチェック回路133a,133bに入力される。
 [ステップS243]SSD121,122から読み出されたブロックデータが、バッファ134b,135bに書き込まれる。
 [ステップS244]読み出しデータ数計算回路166は、SSDグループ123,124それぞれから1ブロックずつのブロックデータの読み出しが行われ、合わせて2ブロック分のデータの読み出しが完了したか否かを判断する。2ブロック分の読み出しが完了した場合、処理がステップS245に進められる。2ブロック分の読み出しが完了していなければ、ステップS244の処理が繰り返される。
 [ステップS245]2ブロック分のデータの読み出しが完了すると、SSD選択カウンタ制御回路153は、SSD選択カウンタ161,162の値を「1」だけインクリメントする。
 [ステップS246]SSD選択カウンタ制御回路163は、SSD選択カウンタ161,162の値と1グループ内SSD枚数とを比較し、一致するか否かを判断する。SSD選択カウンタ161,162の値と1グループ内SSD枚数とが一致した場合、処理がステップS248に進められる。DIMM選択カウンタ141,142の値と1グループ内DIMM枚数とが一致しない場合、処理がステップS247に進められる。
 [ステップS247]SSD選択カウンタ161,162の値と1グループ内SSD枚数とが一致しない場合、SSD選択カウンタ制御回路163は、各SSDグループ123,124からの読み出しカウンタの値を、1ブロック分減少させる。その後、処理がステップS249に進められる。
 なお、SSD読み出しカウンタの値は、SSDからデータが読み出されるごとに、読み出されたデータ量だけ増加する。また、SSD選択カウンタ161,162の値と1グループ内SSD枚数とが一致した場合には、SSD読み出しカウンタの値を減少させる処理(ステップS247)が行われない。これは、SSD選択カウンタ161,162の値と1グループ内SSD枚数とが一致した場合に、SSD読み出しカウンタの値を1ブロック分増加させることを意味する。
 [ステップS248]SSD選択カウンタ161,162の値と1グループ内SSD枚数とが一致した場合、SSD選択カウンタ制御回路163は、SSD選択カウンタ161,162それぞれの値を「0」に初期化する。
 以降、ステップS249~S254の処理は、図15に示すステップS133~S138の処理と同様である。
 このようにして、ステップS242~S254の処理が、全てのDIMMデータが読み出されるまで繰り返えされ、メモリ制御回路130-1内のバッファ134b,135bに書き込まれる。SSDグループ123,124からのデータ読み出しや、バッファからのデータ読み出しで訂正不可能なエラーが検出されない場合は、DIMMグループ113,114内のDIMMへの書き込みが行われる。エラーが検出された場合にはエラー報告して強制終了動作となるか、2重化されているSSDの正常側で復元動作が継続される。
 図24は、第3の実施の形態のDIMMへのデータ書き込み処理の手順の一例を示すフローチャートである。以下、図24に示す処理をステップ番号に沿って説明する。なお、ステップS261~S264の処理は、それぞれ図16に示したステップS141~S144の処理と同様である。そこで、ステップS265以降の処理について、以下に説明する。
 [ステップS265]書き込み制御回路133o,133pは、読み出したブロックデータに訂正不可能なECCエラーが検出されなければ、読み出したブロックデータをDIMMグループ113,114内の選択されたDIMMにデータを書き込む。例えば書き込み制御回路133oは、SSDグループ123内のSSDから読み出されたブロックデータを、DIMMグループ113内の選択されたDIMMに書き込む。書き込み制御回路133pは、SSDグループ124内のSSDから読み出されたブロックデータを、DIMMグループ114内の選択されたDIMMに書き込む。
 [ステップS266]書き込みデータ数計算回路176は、DIMMグループ113,114それぞれに対する1ブロックずつのブロックデータの書き込みが行われ、合わせて2ブロック分のデータの書き込みが完了したか否かを判断する。2ブロック分の書き込みが完了した場合、処理がステップS267に進められる。2ブロック分の書き込みが完了していなければ、ステップS266の処理が繰り返される。
 [ステップS267]2ブロック分のデータの書き込みが完了すると、DIMM選択カウンタ制御回路173は、DIMM選択カウンタ171,172の値を「1」だけインクリメントする。
 [ステップS268]DIMM選択カウンタ制御回路173は、DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とを比較し、一致するか否かを判断する。DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致した場合、処理がステップS270に進められる。DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致しない場合、処理がステップS269に進められる。
 [ステップS269]DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致しない場合、DIMM選択カウンタ制御回路173は、各DIMMグループ113,114内のDIMM書き込みカウンタの値を、1ブロック分減少させる。その後、処理がステップS271に進められる。
 [ステップS270]DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致した場合、DIMM選択カウンタ制御回路173は、DIMM選択カウンタ171,172それぞれの値を「0」に初期化する。
 なお、DIMM書き込みカウンタの値は、DIMMにデータの書き込みが行われるごとに、書き込みが行われたデータ量だけ増加する。また、DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致した場合には、DIMM書き込みカウンタの値を減少させる処理(ステップS269)が行われない。これは、DIMM選択カウンタ171,172の値と1グループ内DIMM枚数とが一致した場合に、DIMM書き込みカウンタの値を1ブロック分増加させることを意味する。
 以降、ステップS271~S273の処理は、それぞれ図16のステップS146~S148の処理と同様である。
 このように、第3の実施の形態によれば、DIMMおよびSSDが4枚以上搭載されている場合でも、データ退避および復元が可能である。しかも、DIMMの全データは、各SSDの上位領域に退避されるため、SSDの上位領域からデータを読み出すだけで、DIMMの全データの復元が可能となる。すなわちデータ復元時にSSDの下位領域からのデータの読み出しを行わずに済み、データ復元時間が短くなる。すなわち、データ復元処理の効率化を図ることができる。
 〔第4の実施の形態〕
 次に第4の実施の形態について説明する。第4の実施の形態は、DIMMのデータを、複数のSSDそれぞれに同じデータ配列で退避するものである。
 図25は、第4の実施の形態において退避・復元されるデータを説明する図である。図25の例では、データを退避させる場合、DIMM111内のデータは、一旦、メモリ制御回路130-2内のバッファ134に格納される。そしてバッファ134内のデータが、SSD121,122に格納される。この際、DIMM111のデータは、SSD121内の前半の上位領域121aと、SSD122内の前半の上位領域122aとの両方に書き込まれる。これにより、DIMM111のデータが2重化して、SSD121,122に格納される。
 またDIMM112内のデータは、一旦、メモリ制御回路130-2内のバッファ135に格納される。そしてバッファ135内のデータが、SSD121,122に格納される。この際、DIMM112のデータは、SSD121内の後半の下位領域121bと、SSD122内の後半の下位領域122bとの両方に書き込まれる。これにより、DIMM112のデータが2重化して、SSD121,122に格納される。
 データを復元する場合、SSD121の上位領域121aから退避されていたデータが読み出され、一旦、バッファ134に格納される。そして、バッファ134内のデータが、DIMM111に書き込まれる。同様に、SSD122の下位領域122bから退避されていたデータが読み出され、一旦、バッファ135に格納される。そして、バッファ135内のデータが、DIMM112に書き込まれる。
 このように、第4の実施の形態では、データ復元の際に、SSD121の上位領域121aとSSD122の下位領域122bとからデータを読み出して、DIMM111,112のデータを復元する。これにより、SSD121,122全体からデータを読み出す場合に比べ、約半分の時間でデータの復元が可能となる。
 このように、SSD-A/Bに対して同じ配列でデータを退避させても、データ復元時の工夫により、短時間でのデータ復元が可能となる。
 データ退避時の処理のうち、DIMMからのデータ読み出し処理は、図11に示した第2の実施の形態の処理と同じである。SSDへのデータ書き込み処理は、図12に示した第2の実施の形態の処理と一部異なる。
 図26は、第4の実施の形態のSSD書き込み処理の手順の一例を示すフローチャートである。図26に示す処理のうちステップS301~S303,S305,S306,S308の処理は、それぞれ図12に示すステップS111~S113,S115,S116,S118の処理と同じである。そこで、図12の処理と異なるステップS304,S307の処理について以下に説明する。
 [ステップS304]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSD121,122に書き込む。例えば書き込み制御回路132lは、SSD121の書き込みカウンタで示されるアドレスに、DIMM111から読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSD122の書き込みカウンタで示されるアドレスに境界アドレスを加算した値を書き込みアドレスとして、DIMM112から読み出したブロックデータをSSD122に書き込む。SSD121,122それぞれのSSDの書き込みカウンタの値は、SSD121,122それぞれに書き込まれたデータ量分カウントアップされる。
 [ステップS307]書き込み制御回路132lは、バッファ134a,135aから読み出したデータを、SSD121,122に書き込む。例えば書き込み制御回路132lは、SSD122の書き込みカウンタで示されるアドレスに、DIMM111から読み出したブロックデータを書き込む。また書き込み制御回路132lは、SSD121の書き込みカウンタで示されるアドレスに境界アドレスを加算した値を書き込みアドレスとして、DIMM112から読み出したブロックデータをSSD121に書き込む。SSD121,122それぞれのSSDの書き込みカウンタの値は、SSD121,122それぞれに書き込まれたデータ量分カウントアップされる。
 データ復元の際には、データ復元時に、SSD121からは境界アドレスの前半部分(上位領域121a)からデータが読み出され、SSD122からは境界アドレスの後半部分(下位領域122b)からデータが読み出される。
 以下、第4の実施の形態におけるデータ復元処理について説明する。なお、第4の実施の形態のSSUの構成は、図3、図4、図10、図14に示した第2の実施の構成と同様である。
 図27は、第4の実施の形態におけるデータ復元時のSSDデータ読み出し処理手順の一例を示すフローチャートである。図27に示す処理のうちステップS312~S319の処理は、それぞれ図15に示すステップS131~S138の処理と同じである。そこで、図15と異なるステップS311の処理について説明する。
 [ステップS311]データ復元回路133内の読み出し制御回路133e(図14参照)は、データ復元処理の開始時に、境界アドレスを、識別子「SSD-B」のSSD122における読み出しカウンタの値(読み出しアドレス)に設定する。これにより、SSD122からのブロックデータの読み出しは、境界アドレスから開始される。
 なお、識別子「SSD-A」のSSD121における読み出しカウンタの値(読み出しアドレス)は、初期値「0」(最小のアドレス)のままである。従って、SSD121からのブロックデータの読み出しは、SSD121の先頭から開始される。
 このように、SSD121の上位領域からのデータ読み出しと、SSD122の下位領域からのデータ読み出しとを行えば、DIMM111,112のデータを復元できる。すなわち図25に示すように複数のSSD121,122内のデータ配列が同じであっても、データ復元時には、それぞれのSSD121,122の半分の領域からシーケンシャルにかつ並列にデータ読み出しを行うことで、データ復元時間が短縮される。
 図27の処理によりSSDからバッファに書き込まれたデータのDIMMへの書き込み処理は、図16に示した処理とほぼ同じである。異なるのは、ステップS148の復元エラー回復処理である。
 以下、第4の実施の形態における復元エラー回復処理について説明する。
 図28は、第4の実施の形態の復元エラー回復処理の手順を示すフローチャートである。図28に示す処理のうちステップS321~S326、S328~S334の処理は、それぞれ図17に示すS151~S156、S158~S164の処理と同様である。そこで図17の処理と異なる、ステップS327の処理について以下に説明する。
 [ステップS327]エラー回数が2回以上の場合、読み出し制御回路133eは、エラー情報保持回路133cからエラー発生時の読み出しアドレス(エラーアドレス)を取得する。そして読み出し制御回路133eは、取得したエラーアドレスを、エラーが検出されていないSSDからの読み出しアドレスに設定する。
 このように、SSD121とSSD122とのそれぞれに退避されたデータの配列が同じであれば、一方のSSDでエラーが発生し、他方のSSDからデータを読み出す場合でも、他方のSSDからデータ読み出しにおいてもエラーアドレスをそのまま使用できる。
 以上のように、2つのSSD121,122に同じデータ配列でデータを退避しても、双方のSSD121,122から、半分ずつのデータを並列でシーケンシャルに読み出すことができる。その結果、データ復元処理の効率化を図ることができる。
 〔その他の実施の形態〕
 なお、上記の各実施の形態に示した処理機能は、コンピュータによって実現することができる。
 図29は、コンピュータのハードウェアの一構成例を示す図である。コンピュータ300には、UPS15を介して電源が供給されている。コンピュータ300は、CPU301によって装置全体が制御されている。CPU301には、バス308を介して複数のDIMM302と複数の周辺機器が接続されている。
 複数のDIMM302は、コンピュータ300の主記憶装置として使用される。複数のDIMM302には、CPU301に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、複数のDIMM302には、CPU301による処理に必要な各種データが格納される。
 バス308に接続されている周辺機器としては、複数のSSD303、グラフィック処理装置304、入力インタフェース305、光学ドライブ装置306、および通信インタフェース307がある。
 複数のSSD303は、コンピュータ300の二次記憶装置として使用される。複数のSSD303には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお、二次記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
 グラフィック処理装置304には、モニタ11が接続されている。グラフィック処理装置304は、CPU301からの命令に従って、画像をモニタ11の画面に表示させる。モニタ11としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
 入力インタフェース305には、キーボード12とマウス13とが接続されている。入力インタフェース305は、キーボード12やマウス13から送られてくる信号をCPU301に送信する。なお、マウス13は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
 光学ドライブ装置306は、レーザ光などを利用して、光ディスク14に記録されたデータの読み取りを行う。光ディスク14は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク14には、DVD(Digital Versatile Disc)、DVD-RAM、CD-ROM(Compact Disc Read Only Memory)、CD-R(Recordable)/RW(ReWritable)などがある。
 通信インタフェース307は、ネットワーク10に接続されている。通信インタフェース307は、ネットワーク10を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
 以上のようなハードウェア構成によって、上記各実施の形態の処理機能を実現することができる。なお、第1の実施の形態に示したデータ管理装置1も、図29に示したコンピュータと同様のハードウェアにより実現することができる。
 コンピュータで上記各実施の形態の処理機能を実現する場合、データ管理装置1(図1参照)またはメモリ制御回路130(図3、図4等参照)が有する機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、DVD、DVD-RAM、CD-ROM/RWなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。なおプログラムを記録する記録媒体には、一時的な伝搬信号自体は含まれない。
 プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CD-ROMなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
 プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
 また、上記の処理機能の少なくとも一部を、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現することもできる。
 上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
 1 データ管理装置
 2 揮発性記憶装置
 2a 第1のメモリモジュール
 2b 第2のメモリモジュール
 3 第1の不揮発性記憶装置
 3a 第1の連続領域
 3b 第2の連続領域
 4 第2の不揮発性記憶装置
 4a 第3の連続領域
 4b 第4の連続領域
 5 第1のコピー手段
 6 第2のコピー手段
 7 第1のデータ集合
 8 第2のデータ集合

Claims (11)

  1.  揮発性記憶装置と、
     順次アクセスが可能な第1の連続領域と、順次アクセスが可能な第2の連続領域とが設けられた第1の不揮発性記憶装置と、
     順次アクセスが可能な第3の連続領域と、順次アクセスが可能な第4の連続領域とが設けられた第2の不揮発性記憶装置と、
     第1のコピー指示に応答し、前記揮発性記憶装置内のデータを第1のデータ集合と第2のデータ集合とに分け、前記第1のデータ集合のデータと前記第2のデータ集合のデータとを前記揮発性記憶装置から読み出し、読み出した前記第1のデータ集合のデータを前記第1の連続領域と前記第4の連続領域とに書き込むと共に、読み出した前記第2のデータ集合のデータを前記第2の連続領域と前記第3の連続領域とに書き込む第1のコピー手段と、
     第2のコピー指示に応答し、順次アクセスによる前記第1の連続領域からの前記第1のデータ集合のデータの読み出しと、順次アクセスによる前記第3の連続領域からの前記第2のデータ集合のデータの読み出しとを並列に実行し、読み出した前記第1のデータ集合のデータと前記第2のデータ集合のデータとを前記揮発性記憶装置に書き込む第2のコピー手段と、
     を有するデータ管理装置。
  2.  前記第1の連続領域、前記第2の連続領域、前記第3の連続領域、および前記第4の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
     前記第1の連続領域は、前記第1の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
     前記第2の連続領域は、前記第1の不揮発性記憶装置における、前記第1の連続領域の後方に隣接する連続の記憶領域であり、
     前記第3の連続領域は、前記第2の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
     前記第4の連続領域は、前記第2の不揮発性記憶装置における、前記第3の連続領域の後方に隣接する連続の記憶領域であり、
     前記第1のコピー手段は、
     前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
     前記揮発性記憶装置から読み出した前記第1のデータ集合のデータを、前記第1の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第1の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第2の不揮発性記憶装置への書き込みアドレスとして、該データを前記第2の不揮発性記憶装置に書き込み、
     前記揮発性記憶装置から読み出した前記第2のデータ集合のデータを、前記第2の不揮発性記憶装置の先頭から順に書き込むと共に、該データの前記第2の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第1の不揮発性記憶装置への書き込みアドレスとして、該データを前記第1の不揮発性記憶装置に書き込む、
     ことを特徴とする請求の範囲第1項記載のデータ管理装置。
  3.  前記第2のコピー手段は、
     前記第1の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第1の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第2の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第2の不揮発性記憶装置からデータを読み出し、
     前記第2の不揮発性記憶装置から読み出したデータに訂正不可能なエラーを検出した場合、該データの前記第2の不揮発性記憶装置内でのアドレスを記憶し、該アドレスに前記加算値を加算したアドレスを前記第1の不揮発性記憶装置からの読み出しアドレスとして、エラーが検出された該データに替えて前記第1の不揮発性記憶装置からデータを読み出す、
     ことを特徴とする請求の範囲第1項または第2項のいずれかに記載のデータ管理装置。
  4.  前記揮発性記憶装置は、第1のメモリモジュールと第2のメモリモジュールとを有しており、
     前記第1のコピー手段は、前記第1のメモリモジュール内のデータを前記第1のデータ集合とし、前記第2のメモリモジュール内のデータを前記第2のデータ集合とし、
     前記第2のコピー手段は、前記第1のデータ集合のデータを前記第1のメモリモジュールに書き込み、前記第2のデータ集合のデータを前記第2のメモリモジュールに書き込む、
     ことを特徴とする請求の範囲第1項乃至第3項のいずれかに記載のデータ管理装置。
  5.  前記揮発性記憶装置は、複数のメモリモジュールを有しており、
     前記第1のコピー手段は、前記複数のメモリモジュールを第1のグループと第2のグループとに分け、前記第1のグループのメモリモジュール内のデータを前記第1のデータ集合とし、前記第2のグループのメモリモジュール内のデータを前記第2のデータ集合とし、
     前記第2のコピー手段は、前記第1のデータ集合のデータを前記第1のグループのメモリモジュールに書き込み、前記第2のデータ集合のデータを前記第2のグループのメモリモジュールに書き込む、
     ことを特徴とする請求の範囲第1項乃至第3項のいずれかに記載のデータ管理装置。
  6.  前記第1の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第1の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第2の連続領域を構成し、
     前記第2の不揮発性記憶装置は、複数の記憶装置を有し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第3の連続領域を構成し、該複数の記憶装置それぞれの一部の記憶領域を纏めて前記第4の連続領域を構成し、
     前記第1のコピー手段は、前記第1の不揮発性記憶装置または前記第2の不揮発性記憶装置にデータを書き込む場合、前記第1の不揮発性記憶装置または前記第2の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一書き込みアドレスのまま、所定のデータ量のブロックデータずつ選択した記憶装置に書き込み、前記複数の記憶装置のそれぞれの選択が一巡するごとに、書き込みアドレスをブロックデータのデータ量分増加させ、
     前記第2のコピー手段は、前記第1の不揮発性記憶装置または前記第2の不揮発性記憶装置からデータを読み出す場合、前記第1の不揮発性記憶装置または前記第2の不揮発性記憶装置内の複数の記憶装置それぞれを順番に選択し、同一読み出しアドレスのまま、選択した記憶装置から所定のデータ量のブロックデータずつ読み出し、前記複数の記憶装置のそれぞれの選択が一巡するごとに、読み出しアドレスをブロックデータのデータ量分増加させる、
     ことを特徴とする請求の範囲第1項乃至第5項のいずれかに記載のデータ管理装置。
  7.  前記揮発性記憶装置は、1枚のメモリモジュールを有しており、
     前記第1のコピー手段は、前記メモリモジュール内のデータを、処理のデータ量のブロックデータに分割し、前記メモリモジュールの先頭からブロックデータを読み出すごとに、読み出したブロックデータを、前記第1のデータ集合と前記第2のデータ集合とに交互に振り分け、
     前記第2のコピー手段は、前記第1の不揮発性記憶装置からの前記第1のデータ集合のブロックデータの読み出しと、前記第2の不揮発性記憶装置からの前記第2のデータ集合のブロックデータの読み出しとを並列に実行し、前記第1のデータ集合のブロックデータと前記第2のデータ集合のブロックデータとを、交互に前記揮発性記憶装置に書き込む、
     ことを特徴とする請求の範囲第1項乃至第3項のいずれかに記載のデータ管理装置。
  8.  前記第1の連続領域、前記第2の連続領域、前記第3の連続領域、および前記第4の連続領域は、それぞれ前記揮発性記憶装置の記憶容量の半分の記憶容量を有し、
     前記第1の連続領域は、前記第1の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
     前記第2の連続領域は、前記第1の不揮発性記憶装置における、前記第1の連続領域の後方に隣接する連続の記憶領域であり、
     前記第4の連続領域は、前記第2の不揮発性記憶装置の記憶領域の先頭から連続の記憶領域であり、
     前記第3の連続領域は、前記第2の不揮発性記憶装置における、前記第4の連続領域の後方に隣接する連続の記憶領域であり、
     前記第1のコピー手段は、
     前記揮発性記憶装置の記憶容量の半分の記憶容量に相当する、アドレスの加算値を有し、
     前記揮発性記憶装置から前記第1のデータ集合のデータと前記第2のデータ集合のデータとを並列に読み出し、
     前記揮発性記憶装置から読み出した前記第1のデータ集合のデータを、前記第1の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第1の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第2の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第2のデータ集合のデータを、前記第2の不揮発性記憶装置に書き込み、
     前記揮発性記憶装置から読み出した前記第1のデータ集合のデータを、前記第2の不揮発性記憶装置に対して、先頭から順に書き込むと共に、該データの前記第2の不揮発性記憶装置への書き込みアドレスに前記加算値を加算した値を、前記第1の不揮発性記憶装置への書き込みアドレスとして、該データと並列に読み出した前記第2のデータ集合のデータを、前記第1の不揮発性記憶装置に書き込む、
     ことを特徴とする請求の範囲第1項記載のデータ管理装置。
  9.  前記第2のコピー手段は、
     前記第1の不揮発性記憶装置の最小のアドレスを、前記第1の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第1のデータ集合のデータを読み出し、
     前記第2の不揮発性記憶装置における前記加算値と等しいアドレスを、前記第3の連続領域の先頭アドレスとして、該先頭アドレスから順次アクセスにより前記第2のデータ集合のデータを読み出す、
     ことを特徴とする請求の範囲第8項記載のデータ管理装置。
  10.  第1のコピー指示に応答し、揮発性記憶装置内のデータを第1のデータ集合と第2のデータ集合とに分け、前記第1のデータ集合のデータと前記第2のデータ集合のデータとを前記揮発性記憶装置から読み出し、
     前記揮発性記憶装置から読み出した前記第1のデータ集合のデータを、第1の不揮発性記憶装置内の順次アクセスが可能な第1の連続領域と、第2の不揮発性記憶装置内の順次アクセスが可能な第4の連続領域とに書き込み、
     前記揮発性記憶装置から読み出した前記第2のデータ集合のデータを、前記第1の不揮発性記憶装置内の順次アクセスが可能な第2の連続領域と、前記第2の不揮発性記憶装置内の順次アクセスが可能な第3の連続領域とに書き込み、
     第2のコピー指示に応答し、順次アクセスによる前記第1の連続領域からの前記第1のデータ集合のデータの読み出しと、順次アクセスによる前記第3の連続領域からの前記第2のデータ集合のデータの読み出しとを並列に実行し、
     前記第1の連続領域から読み出した前記第1のデータ集合のデータと、前記第3の連続領域から読み出した前記第2のデータ集合のデータとを前記揮発性記憶装置に書き込む、
     ことを特徴とするデータコピー方法。
  11.  コンピュータに、
     第1のコピー指示に応答し、揮発性記憶装置内のデータを第1のデータ集合と第2のデータ集合とに分け、前記第1のデータ集合のデータと前記第2のデータ集合のデータとを前記揮発性記憶装置から読み出し、
     前記揮発性記憶装置から読み出した前記第1のデータ集合のデータを、第1の不揮発性記憶装置内の順次アクセスが可能な第1の連続領域と、第2の不揮発性記憶装置内の順次アクセスが可能な第4の連続領域とに書き込み、
     前記揮発性記憶装置から読み出した前記第2のデータ集合のデータを、前記第1の不揮発性記憶装置内の順次アクセスが可能な第2の連続領域と、前記第2の不揮発性記憶装置内の順次アクセスが可能な第3の連続領域とに書き込み、
     第2のコピー指示に応答し、順次アクセスによる前記第1の連続領域からの前記第1のデータ集合のデータの読み出しと、順次アクセスによる前記第3の連続領域からの前記第2のデータ集合のデータの読み出しとを並列に実行し、
     前記第1の連続領域から読み出した前記第1のデータ集合のデータと、前記第3の連続領域から読み出した前記第2のデータ集合のデータとを前記揮発性記憶装置に書き込む、
     処理を実行させるプログラム。
PCT/JP2011/077536 2011-11-29 2011-11-29 データ管理装置、データコピー方法、およびプログラム WO2013080299A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2011/077536 WO2013080299A1 (ja) 2011-11-29 2011-11-29 データ管理装置、データコピー方法、およびプログラム
US14/281,960 US20140281316A1 (en) 2011-11-29 2014-05-20 Data management device and method for copying data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/077536 WO2013080299A1 (ja) 2011-11-29 2011-11-29 データ管理装置、データコピー方法、およびプログラム

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/281,960 Continuation US20140281316A1 (en) 2011-11-29 2014-05-20 Data management device and method for copying data

Publications (1)

Publication Number Publication Date
WO2013080299A1 true WO2013080299A1 (ja) 2013-06-06

Family

ID=48534824

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2011/077536 WO2013080299A1 (ja) 2011-11-29 2011-11-29 データ管理装置、データコピー方法、およびプログラム

Country Status (2)

Country Link
US (1) US20140281316A1 (ja)
WO (1) WO2013080299A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015172863A (ja) * 2014-03-12 2015-10-01 日本電気株式会社 記憶装置、記憶装置の制御方法、及び、そのプログラム

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013048493A1 (en) * 2011-09-30 2013-04-04 Intel Corporation Memory channel that supports near memory and far memory access
US9235470B2 (en) * 2013-10-03 2016-01-12 SanDisk Technologies, Inc. Adaptive EPWR (enhanced post write read) scheduling
US10002042B2 (en) * 2015-10-22 2018-06-19 Sandisk Technologies Llc Systems and methods of detecting errors during read operations and skipping word line portions
CN107203476B (zh) * 2016-03-18 2021-08-31 慧荣科技股份有限公司 数据储存装置、存储器控制器及其数据管理方法
KR20210119678A (ko) * 2020-03-25 2021-10-06 에스케이하이닉스 주식회사 멀티 칩 패키지 및 그것의 테스트 방법

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62140154A (ja) * 1985-12-16 1987-06-23 Hitachi Ltd 記憶装置のデ−タ保持方式
JPH04346144A (ja) * 1991-05-24 1992-12-02 Nec Corp 記憶装置の記憶内容退避方式
JPH05100965A (ja) * 1991-10-04 1993-04-23 Hitachi Ltd 不揮発性メモリ制御方法及び装置
WO2009107212A1 (ja) * 2008-02-28 2009-09-03 富士通株式会社 ストレージ装置、ストレージ制御装置およびストレージ制御方法
JP2010224685A (ja) * 2009-03-19 2010-10-07 Fujitsu Ltd データバックアップ方法及び情報処理装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7293138B1 (en) * 2002-06-27 2007-11-06 Adaptec, Inc. Method and apparatus for raid on memory

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62140154A (ja) * 1985-12-16 1987-06-23 Hitachi Ltd 記憶装置のデ−タ保持方式
JPH04346144A (ja) * 1991-05-24 1992-12-02 Nec Corp 記憶装置の記憶内容退避方式
JPH05100965A (ja) * 1991-10-04 1993-04-23 Hitachi Ltd 不揮発性メモリ制御方法及び装置
WO2009107212A1 (ja) * 2008-02-28 2009-09-03 富士通株式会社 ストレージ装置、ストレージ制御装置およびストレージ制御方法
JP2010224685A (ja) * 2009-03-19 2010-10-07 Fujitsu Ltd データバックアップ方法及び情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015172863A (ja) * 2014-03-12 2015-10-01 日本電気株式会社 記憶装置、記憶装置の制御方法、及び、そのプログラム

Also Published As

Publication number Publication date
US20140281316A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
US8560772B1 (en) System and method for data migration between high-performance computing architectures and data storage devices
US10180866B2 (en) Physical memory fault mitigation in a computing environment
EP2732373B1 (en) Method and apparatus for flexible raid in ssd
CN102929750B (zh) 非易失性介质肮脏区段跟踪
US8266475B2 (en) Storage management device, storage management method, and storage system
JP5464528B2 (ja) 同時読み出し及び書き込みメモリ動作を実行する方法及び装置
US20090327803A1 (en) Storage control device and storage control method
CN112543909B (zh) 用于媒体持久和诊断的增强码字
CN103793182A (zh) 可扩展存储保护
US20100199126A1 (en) Disk array apparatus, data distribution and management method, and data distribution and management program
WO2013080299A1 (ja) データ管理装置、データコピー方法、およびプログラム
US20140026013A1 (en) Storage control apparatus and error correction method
US10503620B1 (en) Parity log with delta bitmap
JP2006139478A (ja) ディスクアレイシステム
US9378092B2 (en) Storage control apparatus and storage control method
US20230251931A1 (en) System and device for data recovery for ephemeral storage
US20050193273A1 (en) Method, apparatus and program storage device that provide virtual space to handle storage device failures in a storage system
US10860224B2 (en) Method and system for delivering message in storage system
CN112612639A (zh) 操作存储器系统的方法、操作主机的方法和计算系统
US7130973B1 (en) Method and apparatus to restore data redundancy and utilize spare storage spaces
CN112119380B (zh) 带有旁路的奇偶校验记录
JPH06230903A (ja) ディスクアレイ装置の障害回復方法、およびディスクアレイ装置
US10740189B2 (en) Distributed storage system
US20210349781A1 (en) Systems, methods, and devices for data recovery using parity space as recovery space
US11055190B1 (en) System and method for facilitating storage system operation with global mapping to provide maintenance without a service interrupt

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: 11876726

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2013546877

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 11876726

Country of ref document: EP

Kind code of ref document: A1