WO2014038073A1 - 記憶装置システム - Google Patents

記憶装置システム Download PDF

Info

Publication number
WO2014038073A1
WO2014038073A1 PCT/JP2012/072961 JP2012072961W WO2014038073A1 WO 2014038073 A1 WO2014038073 A1 WO 2014038073A1 JP 2012072961 W JP2012072961 W JP 2012072961W WO 2014038073 A1 WO2014038073 A1 WO 2014038073A1
Authority
WO
WIPO (PCT)
Prior art keywords
control circuit
write
data
write data
storage
Prior art date
Application number
PCT/JP2012/072961
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 JP2014534130A priority Critical patent/JP5820078B2/ja
Priority to PCT/JP2012/072961 priority patent/WO2014038073A1/ja
Priority to US14/423,384 priority patent/US20150186056A1/en
Publication of WO2014038073A1 publication Critical patent/WO2014038073A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems

Definitions

  • the present invention relates to a storage device system, for example, a control technique in an external storage device (storage) such as an SSD (Solid State Drive).
  • storage such as an SSD (Solid State Drive).
  • SSD Solid State Drive
  • NAND flash memory has an upper limit on the number of times of erasure and the data write size and the data erase size are greatly different.
  • Patent Document 1 discloses a technology that realizes hierarchical capacity virtualization and reduces the number of erasures in the entire storage system. Specifically, there is shown a technique for performing so-called static wear leveling in which the number of times of erasure is leveled by appropriately moving data that has already been written.
  • Patent Document 2 discloses a management method for a storage system using a flash memory.
  • Patent Document 3 discloses a control technique at the time of power-off of a storage system.
  • Patent Document 4 discloses an SSD control technique.
  • Patent Document 5 discloses a data transfer technique between an SSD and an HDD.
  • the present inventors examined a method for controlling a NAND flash memory used for storage such as an SSD (Solid State Drive) or a memory card.
  • a NAND flash memory used for storage such as an SSD (Solid State Drive) or a memory card.
  • the minimum data unit at the time of erasing is, for example, 1 Mbyte
  • the minimum data unit at the time of writing is, for example, 4 Kbytes. That is, in order to write 4K bytes of data, it is necessary to secure an erased memory area of 1M bytes. In order to secure this 1 Mbyte erased memory area, an operation called garbage collection is required inside the SSD.
  • the SSD first reads the currently effective data from the already written 1 Mbyte nonvolatile memory areas A and B, collects these data, and writes them to the RAM. Next, the nonvolatile memory areas A and B are erased. Finally, the data written in the RAM is collectively written in the nonvolatile memory area A.
  • the 1-Mbyte nonvolatile memory area B becomes an erased memory area, and new data can be written to the nonvolatile memory area B.
  • this garbage collection operation causes data movement from one nonvolatile positive memory area to another nonvolatile memory area within the SSD.
  • the data size is larger than the write data size requested from the host controller to the SSD.
  • a large data size is written. For this reason, the reliability and life of the SSD may be reduced.
  • a storage controller that controls a large number of SSDs can perform garbage collection operations or wear leveling that each SSD performs independently. The actual write data amount including the increased write data amount cannot be grasped. For this reason, there is a risk that the reliability and life of the storage system (storage device system) may be reduced.
  • the storage device system includes a plurality of memory modules and a first control circuit that controls the plurality of memory modules.
  • Each of the plurality of memory modules includes a plurality of nonvolatile memories and a second control circuit for controlling them.
  • the second control circuit grasps the second write data amount actually written to the plurality of nonvolatile memories, and appropriately notifies the second control data amount to the first control circuit.
  • the first control circuit grasps, for each of the plurality of memory modules, a first write data amount associated with a write command that has already been issued to the plurality of memory modules, and a ratio between the first write data amount and the second write data amount, The first ratio is calculated for each of the plurality of memory modules. Then, the first control circuit selects the memory module that issues the next write command from the plurality of memory modules, reflecting the calculation result.
  • FIG. 1 is a block diagram showing a schematic configuration example of an information processing system to which the storage device system according to Embodiment 1 of the present invention is applied.
  • FIG. 2 is a block diagram illustrating a detailed configuration example of a storage controller in FIG. 1.
  • FIG. 3 is a flowchart showing an example of a write operation performed by a storage module control circuit in FIGS. 1 and 2.
  • FIG. 4 is a supplementary diagram of FIG. 3 and is a diagram showing an example of contents held in a table (MGTBL) held by a storage module control circuit.
  • FIG. 4 is a supplementary diagram of FIG. 3 and is a diagram showing an example of other stored contents of a table (MGTBL) held by the storage module control circuit.
  • FIG. 3 is a diagram illustrating an example of contents held in a table (STGTBL) held by the storage module control circuit of FIG. 2. It is a figure which shows an example of the other held content of the table (STGTBL) which the control circuit for storage modules of FIG. 2 has.
  • FIG. 10 is a diagram showing an example of still another held content of a table (STGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 10 is a diagram showing an example of still another held content of a table (STGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 2 is a block diagram illustrating a detailed configuration example of a storage module in FIG. 1. It is a flowchart which shows an example of the wear leveling method performed within the storage module of FIG.
  • FIG. 2 is a flowchart showing an example of a read operation performed by a storage module control circuit and a storage control circuit in FIG. 1.
  • 5 is a flowchart showing an example of a write operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to Embodiment 2 of the present invention.
  • FIG. 11 is a supplementary diagram of FIG. 10, illustrating an example of contents held in a table (MGTBL) held by the storage module control circuit.
  • FIG. 11 is a supplementary diagram of FIG. 10, illustrating an example of another held content of a table (MGTBL) held by the storage module control circuit.
  • FIG. 7 is a flowchart showing an example of a write operation and a garbage collection management operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to Embodiment 3 of the present invention.
  • FIG. 13 is a supplementary diagram of FIG. 12, showing an example of contents held in a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 13 is a supplementary diagram of FIG. 12, illustrating an example of other held contents of the table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 13 is a supplementary diagram of FIG. 12, and is a diagram illustrating an example of still another held content of a table (MGTBL) possessed by the storage module control circuit of FIG. 2.
  • FIG. 13 is a supplementary diagram of FIG.
  • FIG. 13 is a supplementary diagram of FIG. 12, showing an example of other held contents of a table (GETBL) held by the storage module control circuit of FIG. 2.
  • FIG. 13 is a supplementary diagram of FIG. 12, and is a diagram showing an example of still another held content of a table (GETBL) held by the storage module control circuit of FIG. 2.
  • 7 is a flowchart showing an example of a write operation and an erase operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage device system according to Embodiment 4 of the present invention.
  • FIG. 16 is a supplementary diagram of FIG.
  • FIG. 16 is a supplementary diagram of FIG. 15, illustrating an example of contents held in a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 16 is a supplementary diagram of FIG. 15, illustrating an example of other held contents of the table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 16 is a supplementary diagram of FIG. 15, and is a diagram showing an example of still another held content of a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • 7 is a flowchart illustrating an example of a write operation and a garbage collection management operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage device system according to the fifth embodiment of the present invention.
  • FIG. 18 is a supplementary diagram of FIG.
  • FIG. 18 is a supplementary diagram of FIG. 17, illustrating an example of contents held in a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 18 is a supplementary diagram of FIG. 17, illustrating an example of other held contents of a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 18 is a supplementary diagram of FIG. 17, and is a diagram showing an example of still another held content of a table (MGTBL) held by the storage module control circuit of FIG. 2.
  • FIG. 11 is an explanatory diagram showing an example of a read operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage device system according to the fifth embodiment of the present invention.
  • FIG. 11 is an explanatory diagram showing an example of a read operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage device system according to the fifth embodiment of the present invention.
  • FIG. 11 is an explanatory diagram showing an example of data retention characteristics of a storage module in a storage system according to Embodiment 2 of the present invention. It is a figure which shows an example which prescribed
  • FIG. 9 is a block diagram showing a detailed configuration example of a storage module in FIG. 1 in a storage device system according to Embodiment 6 of the present invention.
  • FIG. 8 is a supplementary diagram for schematically explaining the flow of FIG. 7.
  • FIG. 9 is a supplementary diagram for schematically explaining the flow of FIG. 8.
  • the constituent elements are not necessarily indispensable unless otherwise specified or apparently indispensable in principle.
  • the shapes when referring to the shapes, positional relationships, etc. of the components, etc., the shapes are substantially the same unless otherwise specified, or otherwise apparent in principle. And the like are included. The same applies to the above numbers and the like (including the number, numerical value, quantity, range, etc.).
  • FIG. 1 is a block diagram showing a schematic configuration example of an information processing system to which the storage device system according to Embodiment 1 of the present invention is applied.
  • the information processing system shown in FIG. 1 includes information processing devices SRV0 to SRVm and a storage system (storage device system) STRGSYS.
  • the STRGSYS includes a plurality of storage modules (memory modules) STG0 to STGn + 4 and a storage controller STRGCONT that controls the STG0 to STGn + 4 in response to requests from the SRV0 to SRVm.
  • the information processing devices SRV0 to SRVm and the storage controller STRGCONT are connected by an interface signal H2S_IF, and the storage controller STRGCONT and the storage modules STG0 to STGn + 4 are connected by an interface signal H2D_IF.
  • a serial interface signal method for example, a serial interface signal method, a parallel interface signal method, an optical interface signal method, or the like can be used.
  • Typical interface signal systems include SCSI (Small Computer System Interface), SATA (Serial Advanced Technology Attachment), SAS (Serial Attached SCSI), and FC (Fibre Channel). Can be used.
  • the information processing apparatuses SRV0 to SRVm are server apparatuses, for example, and are apparatuses that execute various applications on various OSs.
  • Each of SRV0 to SRVm includes a processor unit CPU having a plurality of processor cores CPUCR0 to CPUCRk, a random access memory RAM, a backplane interface circuit BIF, and a storage system interface circuit STIF.
  • the BIF is a circuit for performing communication between the SRV0 to SRVm via the backplane BP.
  • the STIF makes various requests (write requests) to the storage system (storage device system) STRGSYS using the interface signal H2S_IF. (WQ), read request (RQ), etc.).
  • Storage modules (memory modules) STG0 to STGn + 4 store data, applications, OSs, and the like necessary for the information processing apparatuses SRV0 to SRVm.
  • STG0 to STGn + 4 are not particularly limited, but correspond to, for example, SSD (Solid State Drive).
  • SSD Solid State Drive
  • Each of STG0 to STGn + 4 has the same configuration.
  • STG0 will be described as a representative example.
  • Nonvolatile memories NVM0 to NVM7, random access memory RAMst, and a storage control circuit STCT0 for controlling access to these memories. It has.
  • a NAND flash memory, a NOR flash memory, a phase change memory, a resistance change memory, a magnetic memory, a ferroelectric memory, and the like can be applied.
  • the information processing apparatuses SRV0 to SRVm issue a read request (RQ) of a necessary program or data to the storage controller STRGCONT when executing an application, for example.
  • SRV0 to SRVm issue a write request (write command) (WQ) to the storage controller STRGCONT in order to store their execution results and data.
  • the read request (RQ) includes a logical address (LAD), a data read command (RD), a sector count (SEC), and the write request (WQ) includes a logical address (LAD) and a data write command (WRT). ), Sector count (SEC), write data (WDATA), and the like.
  • the storage controller STRGCONT includes internal memories including cache memories CM0 to CM3 and random access memories RAM0 to RAM3, host control circuits HCTL0 and HCTL1, and storage module control circuits DKCTL0 and DKCTL1.
  • the STRGCONT includes a storage system interface circuit STIF (00, 01,..., M0, m1) and a storage module interface circuit SIFC (00, 01,..., N0, n1).
  • the host control circuits HCTL0 and HCTL1 mainly receive communications with the information processing devices SRV0 to SRVm (for example, accept various requests (such as read request (RQ) and write request (WQ)) from SRV0 to SRVm, and , Responses to SRV0 to SRVm, etc.).
  • the interface circuit STIF performs protocol conversion according to the communication method of the interface signal H2S_IF.
  • the storage module control circuits DKCTL0 and DKCTL1 are circuits that mainly perform communication such as access requests to the storage modules STG0 to STGn + 4 in response to various requests from SRV0 to SRVm received by HCTL0 and HCTL1. .
  • the interface circuit SIFC performs protocol conversion corresponding to the communication method of the interface signal H2D_IF.
  • the host control circuits HCTL0 and HCTL1 are provided in two systems, and one (for example, HCTL1) is provided as a spare when the other (for example, HCTL0) fails.
  • the storage module control circuits DKCTL0 and DKCTL1 are provided as spares for the other to improve fault tolerance.
  • the configuration is such that five storage modules (memory modules) (herein, STG0 to STG4) are connected to one SIFC (for example, SIFC00). This number should be determined appropriately in consideration of, for example, RAID (Redundant Arrays of Inexpensive Disks) specifications, etc. (for example, data is divided into four STGs and the parity is written to the remaining one). Is possible.
  • the control circuits HCTL0 and HCTL1 for the host send read requests (RQ), write requests (write commands) (WQ), etc. from the information processing apparatuses SRV0 to SRVm to the storage system interface circuits STIF (00, 01,..., M0). , M1).
  • RQ read request
  • WQ write commands
  • the host control circuits HCTL0 and HCTL1 read the data (RDATA) from the CM0 to CM3, and the interface circuit STIF ( The data is transferred to the information processing devices SRV0 to SRVm through the interface signal H2S_IF).
  • the HCTL0 and HCTL1 notify the storage module control circuits DKCTL0 and DKCTL1.
  • DKCTL0 and DKCTL1 issue read access requests (RREQ) to the storage modules (memory modules) STG0 to STGn + 4 via the interface circuit SIFC (00, 01,..., N0, n1) (interface signal H2D_IF). To do. Thereafter, DKCTL0 and DKCTL1 transfer data (RDATA) read from STG0 to STGn + 4 to CM0 to CM3, and further transfer to SRV0 to SRVm through HCTL0, HCTL1 and STIF (H2S_IF).
  • RDATA read access requests
  • the host control circuits HCTL0 and HCTL1 When the host control circuits HCTL0 and HCTL1 receive a write request (WQ) from the information processing apparatuses SRV0 to SRVm, first, the logical address (LAD) included in the write request (WQ) is stored in the cache memory CM0. It is determined whether it matches any of the logical addresses (LAD) entered in CM3. Here, if they match, that is, if they are hits, the HCTL0 and HCTL1 write the write data (WDATA) included in the write request (WQ) to CM0 to CM3.
  • WQ write request
  • HCTL0 and HCTL1 for example, write data (WDT) for the logical address (LAD) used the oldest among CM0 to CM3 to random access memories RAM0 to RAM3 once. Then, write data (WDATA) is written to CM0 to CM3. Thereafter, HCTL0 and HCTL1 notify DKCTL0 and DKCTL1, and in response, DKCTL0 and DKCTL1 issue write access requests (write commands) (WREQ) to storage modules (memory modules) STG0 to STGn + 4. .
  • write commands write commands
  • the write data (WDT) transferred to the RAM0 to RAM3 in response to the write access request (WREQ) is transferred to the STG0 to STGn + 4 via the interface circuit SIFC (00, 01,..., N0, n1) (interface signal H2D_IF). Write to (write back).
  • FIG. 2 is a block diagram showing a detailed configuration example of the storage controller STRGCONT in FIG.
  • the storage controller STRGCONT shown in FIG. 2 shows a detailed configuration example regarding the host control circuits HCTL0 and HCTL1 and the storage module control circuits DKCTL0 and DKCTL1 shown in FIG.
  • Each of HCTL0 and HCTL1 includes a cache control circuit CMCTL, a read control circuit HRDCTL, a write control circuit HWTCTL, and a diagnostic circuit HDIAG.
  • the cache control circuit CMCTL performs hit / miss hit determination of the cache memories CM0 to CM3, access control of the CM0 to CM3, and the like.
  • the read control circuit HRDCTL When receiving a read request (RQ) from the information processing devices (hosts) SRV0 to SRVm, the read control circuit HRDCTL performs various processes accompanying the read request (RQ) as described in FIG. 1 together with CMCTL.
  • the write control circuit HWTCTL accepts a write request (WQ) from SRV0 to SRVm, it performs various processes associated with the write request (WQ) as shown in FIG. 1 together with CMCTL.
  • the diagnostic circuit HDIAG has a function of testing whether its various functions are normal in order to improve the fault tolerance described in FIG. For example, when an abnormality is detected in the HDIAG in the control circuit HCTL0, the HDIAG notifies the control circuit HCTL1, thereby deactivating the regular HCTL0 and activating the spare HCTL
  • Each of the control circuits DKCTL0 and DKCTL1 includes a write control circuit WTCTL, a read control circuit RDCTL, a data erase control circuit ERSCTL, a garbage collection control circuit GCCTL, a diagnostic circuit DIAG, and three tables MGTBL, STGTBL, and GETBL.
  • DIAG has a function of testing its own internal function as in the case of the diagnostic circuit HDIAG in HCTL0 and HCTL1, and the activation / deactivation of DKCTL0 and DKCTL1 is switched according to the result.
  • the various tables MGTBL, STGTBL, and GETBL are stored information in the random access memories RAM0 to RAM3, for example, and the control circuits DKCTL0 and DKCTL1 manage the various tables.
  • Wstg indicates the data size that each storage module (memory module) STG0 to STGn + 4 actually wrote to its own nonvolatile memory NVM0 to NVM7.
  • Wh2d indicates a data size at which the control circuits DKCTL0 and DKCTL1 have already issued a write access request (write command) (WREQ) to each of the storage modules STG0 to STGn + 4.
  • the data size Wh2d is equal to the size of the write data (WDT) transferred to the random access memories RAM0 to RAM3 when the cache memories CM0 to CM3 are missed, and as a result, the information processing devices SRV0 to SRV0 It is equal to the size of the write data (WDATA) included in the write request (WQ) from SRVm.
  • NtW indicates the data size of the write data (WDT) included in the next write access request (write command) (WREQ).
  • Ret indicates the data retention time of each storage module STG0 to STGn + 4.
  • Esz indicates the number of physical blocks in the erased state included in each of the storage modules STG0 to STGn + 4.
  • the write control circuit WTCTL uses these tables as appropriate to issue a write access request (write command) (WREQ) to STG0 to STGn + 4.
  • the read control circuit RDCTL issues a read access request (RREQ)
  • the data erase control circuit ERSCTL issues an erase access request
  • the garbage collection control circuit GCCTL issues a garbage collection request.
  • the non-volatile memories NVM0 to NVM7 used for the respective storage modules (memory modules) STG0 to STGn + 4 have a limit on the number of rewrites, and a specific number in a specific non-volatile memory When writing to the address concentrates, the life of STG0 to STGn + 4 is shortened.
  • the storage control circuit STCT manages the number of writes of NVM0 to NVM7 in a certain data size unit, and writes to NVM0 to NVM7 so as to equalize the number of writes. Is going.
  • control circuit STCT uses, for example, a method called static wear leveling described in the cited document 1 or the like to change from one nonvolatile memory to another nonvolatile memory. Data may be moved. In this case, in the nonvolatile memory, a size larger than the size of the write data (WDT) requested from the control circuits DKCTL0 and DKCTL1 is written.
  • WDT write data
  • the control circuit STCT may perform a garbage collection operation. In this garbage collection operation, the STCT, for example, first reads the currently valid data from the already written 1 Mbyte nonvolatile memory areas “A” and “B”, and collects these data. Write to the random access memory RAMst.
  • the nonvolatile memory areas “A” and “B” are erased. Finally, the data written to the RAMst is collectively written to the nonvolatile memory area “A”. As a result, the 1-Mbyte nonvolatile memory area “B” becomes the erased memory area, and new data can be written to the nonvolatile memory area “B”. However, in this case, data is moved from a certain nonvolatile positive memory area to another nonvolatile memory area. Therefore, in the nonvolatile memory, the size is larger than the size of the write data (WDT) requested from the control circuits DKCTL0 and DKCTL1. The size will be written.
  • WDT write data
  • each storage module STG0 to STGn + 4 has an error such as parity data generated for the write data together with the write data (WDT) requested from the control circuits DKCTL0 and DKCTL1.
  • a detection / correction code may be written.
  • a size larger than the size of the write data (WDT) requested from the control circuits DKCTL0 and DKCTL1 is written.
  • the data size Wstg actually written to the nonvolatile memories NVM0 to NVM7 is the write data (WDT) requested by the control circuits DKCTL0 and DKCTL1 to STG0 to STGn + 4.
  • WDT write data
  • data size Wh2d data size Wh2d
  • how much the data size Wstg actually written increases with respect to the data size Wh2d accompanying the write access request (write command) (WREQ) depends on, for example, the write request (WQ) (write access request (WREQ)).
  • WQ write request
  • WREQ write access request
  • Varies depending on the locality of the address since the address is appropriately assigned to any one of STG0 to STGn + 4, the extent to which the data size Wstg increases with respect to the data size Wh2d may vary greatly between STG0 to STGn + 4. is there.
  • the storage controller STRGCONT predicts the write data amount that is actually written based on the write data amount in the write access request (WREQ) that is the current processing target, and the predicted write data amount is small.
  • a function is provided for selecting a storage module and issuing the write access request (WREQ) thereto.
  • WREQ write access request
  • a function for performing dynamic wear leveling between storage modules is provided.
  • dynamic wear leveling is different from so-called static wear leveling, which performs leveling (wear leveling) by moving data that has already been written as appropriate, and leveling by appropriately selecting the writing destination when writing data. It is a method to perform.
  • FIG. 3 is a flowchart showing an example of a write operation performed by the storage module control circuit in FIGS. 1 and 2.
  • 4A and 4B are supplementary diagrams of FIG. 3, and are diagrams illustrating an example of contents held in a table (MGTBL) held by the storage module control circuit.
  • 5A, FIG. 5B, FIG. 5C, and FIG. 5D are diagrams showing examples of contents held in a table (STGTBL) held by the storage module control circuit of FIG.
  • ntW is the data size of the write data (WDT) included in the write access request (write command) (WREQ) that is the current processing target.
  • Wh2d is the data size of the write data (WDT) accompanying the write access request (WREQ) already issued to the predetermined storage module by the control circuit DKCTL0.
  • Wstg is the data size that each storage module STG0 to STG3 actually writes to its own nonvolatile memory.
  • the data size Wstg can be recognized by the STCT because the control circuit STCT in the storage module STG in FIG. 1 actually writes data to the nonvolatile memories NVM0 to NVM7, and DKCTL0 is The data size can be recognized by acquiring from the STCT.
  • the values of Wh2d and Wstg are updated cumulatively, for example, from the first use of the storage module until the end of its life.
  • STCT is a write access request from DKCTL0 (for example, when a garbage collection operation (+ wear leveling operation) as described later in FIG. 8 is performed, or when a static wear leveling operation is performed).
  • the value of Wstg is increased irrespective of the write command (WREQ).
  • the static wear leveling operation is not particularly limited, and examples thereof include a method for reducing a difference between the number of writes at a physical address where data is valid and the number of writes at a physical address where data is invalid.
  • a physical address for which data is valid continues to be valid unless a write command for the physical address is subsequently generated, and as a result, the number of writes at the physical address does not increase, but the physical address for which data is invalid Becomes a candidate for the write destination after being erased, and the number of times of writing at the physical address increases.
  • the difference may increase between the number of valid physical address writes and the number of invalid physical address writes.
  • the logical address (LAD) included in the write access request (write command) (WREQ) and the storage module STG0 storing the data of the LAD are stored.
  • ⁇ STG3 number (STG No) and valid information VLD indicating whether the LAD data is valid or invalid are stored.
  • the logical address (LAD) included in the write access request (WREQ) is equal to the logical address included in the write request (write command) (WQ) from the information processing devices (hosts) SRV0 to SRVm, or the write request (WQ) ) Is uniquely determined from the logical address included in If the valid information VLD is “1”, the LAD data means valid, and if it is “0”, it means invalid.
  • the control circuit DKCTL0 issues a notification request for the data sizes Wstg and Wh2d to the storage modules STG0 to STG3 through the interface signal H2D_IF as necessary (for example, immediately after turning on the power to the storage controller STRGCONT).
  • the storage modules STG0 to STG3 have the data sizes Wstg (Wstg0 (40), Wstg1 (15), Wstg2 (10), Wstg3 (20)) and Wh2d (Wh2d0 (10), Wh2d1 (5), Wh2d2 (5), Wh2d3 (10)) is returned to DKCTL0 (FIG. 3: Step 1, FIG. 4A).
  • Wstg0 (40) as an example, here, the number “40” in parentheses represents the necessary information (in this case, the data size).
  • DKCTL0 sets these data sizes Wstg and Wh2d in the table MGTBL and updates them (FIG. 3: Step 2, FIG. 4A).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [1]) of data size ntW1 (here, 10) and a logical address (here, 123). ) (WREQ [1]).
  • the write control circuit WTCTL in DKCTL0 uses Wstg and Wh2d in MGTBL to determine the write data size ratio WAF for each of STG0 to STG3, and in addition to this, the expected write data size eWd using ntW1 Is set in MGTBL and updated (FIG. 3: Step 3, FIG. 4A).
  • the write control circuit WTCTL in the control circuit DKCTL0 selects the storage module (here, STG2) in which the expected write data size eWd is the minimum value (Min.) (FIG. 3: Step 4, FIG. 4A).
  • STG2 the storage module in which the expected write data size eWd is the minimum value (Min.)
  • Step 4A the storage module in which the expected write data size eWd is the minimum value (Min.)
  • a write access request (write command) (WREQ [1]) is issued (FIG. 4A).
  • the storage module STG2 notifies the control circuit DKCTL0 of the data size Wstg (Wstg2 (30)) (FIG. 3: Step 8, FIG. 4B) and returns to Step 2. .
  • the data size “20” is written by the garbage collection operation or the static wear leveling operation. As a result, a total value of “30” is notified as Wstg2.
  • the write control circuit WTCTL of the control circuit DKCTL0 sets and updates the notified data size Wstg (Wstg2 (30)) in the table MGTBL (FIG. 3: Step 2, FIG. 4B).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [2]) of data size ntW2 (here, 10) and a logical address (here, 535). ) (WREQ [2]).
  • the WTCTL uses the data sizes Wstg and Wh2d in the MGTBL to obtain the write data size ratio WAF for each of the storage modules STG0 to STG3, and in addition to this, obtains the expected write data size eWd using ntW2.
  • MGTBL is set and updated (FIG. 3: Step 3, FIG. 4B).
  • the write control circuit WTCTL in the control circuit DKCTL0 selects the storage module (here, STG3) whose expected write data size eWd is the minimum value (Min.) (FIG. 3: Step 4, FIG. 4B).
  • STG3 the storage module whose expected write data size eWd is the minimum value (Min.)
  • Step 4B the minimum value
  • a write access request (write command) (WREQ [2]) is issued (FIG. 4B).
  • Wh2d is updated from “10” to “20” in STG3 in MGTBL of FIG. 4B.
  • Step 6 in the storage module (in this case, STG2 and STG3) from which the write access request (WREQ) is issued, the logical address LAD included in the write access request (WREQ) is changed to the physical addresses (NVM0 to NVM7). PAD) and write data is written to the converted physical address (PAD).
  • Step 1 the control circuit DKCTL0 obtains the values of Wstg and Wh2d by making a notification request for the data sizes Wstg and Wh2d to the storage modules STG0 to STG3.
  • the values of Wstg and Wh2d are updated as needed without depending on the notification request. That is, for example, for Wh2d, DKCTL0 itself updates the value while grasping it as needed (Step 7).
  • DKCTL0 saves the value of Wh2d to STG0 to STG3, for example, when the power is shut off.
  • Step 1 A case was assumed where it is read at the next power-on (Step 1). Also, for example, for Wstg, STG0 to STG3 update their values as needed, and automatically send the value of Wstg to DKCTL0 when the write operation associated with the write access request (WREQ) is completed (Step 8). DKCTL0 assumed a case where the value of Wstg is grasped from this transmitted value (Step 2). In this case, actually, STG0 to STG3 can stock a plurality of write access requests (WREQ) by an internal buffer, and for example, the value of Wstg may be transmitted continuously.
  • Step 5 is provided.
  • the control circuit DKCTL0 immediately before issuing the write access request (WREQ), the control circuit DKCTL0 issues a Wstg notification request to the STG0 to STG3, and the STG0 to STG3 return the value of Wstg only when the notification request is received.
  • DKCTL0 can make a flow for selecting a storage module that issues a WREQ.
  • STG0 to STG3 transmit the Wstg value to DKCTL0 not only at the time of completion of writing accompanying the write access request (WREQ) but also at the time of completion of writing accompanying garbage collection operation or the like (that is, Wstg) It is also possible to make a flow in which DKCTL0 sequentially updates the values of the table MGTBL in response to this.
  • FIG. 6 is a block diagram illustrating a detailed configuration example of the storage module in FIG.
  • the storage module STG is used as the storage modules STG0 to STGn + 4 in FIG.
  • the storage module STG shown in FIG. 6 includes nonvolatile memories NVM0 to NVM7, a random access memory RAMst, a storage control circuit STCT0 that controls the NVM0 to NVM7 and RAMst, and a battery backup device BBU.
  • NVM0 to NVM7 have, for example, the same configuration and performance.
  • the RAMst is not particularly limited, but is a DRAM or the like, for example.
  • the BBU has a large capacity inside, and is a device for securing a power source for saving data in the RAMst to the NVM0 to NVM7 for a certain period, for example, when the power supply is unexpectedly shut off.
  • the storage module STG Immediately after the power is turned on, the storage module STG performs an initialization operation (so-called power-on reset) of the internal nonvolatile memories NVM0 to NVM7, the random access memory RAMst, and the control circuit STCT0. Further, the STG initializes the internal NVM0 to NVM7, RAMst, and STCT0 when it receives a reset signal from the control circuit DKCTL0.
  • the STCT0 includes an interface circuit HOST_IF, buffers BUF0 to BUF3, an arbitration circuit ARB, an information processing circuit MNGER, a memory control circuit RAMC, and NVCT0 to NVCT7.
  • the memory control circuit RAMC directly controls the random access memory RAMst, and the memory control circuits NVCT0 to NVCT7 directly control the nonvolatile memories NVM0 to NVM7, respectively.
  • the random access memory RAMst holds an address conversion table (LPTBL), an erase count table (ERSTBL), a physical block table (PBKTBL), a physical address table (PADTBL), and various other information.
  • the address conversion table (LPTBL) shows the correspondence between the logical address (LAD) and the physical addresses (PAD) of NVM0 to NVM7.
  • the erase count table (ERSTBL) the erase count for each physical block is shown.
  • PBKTBL physical block table
  • the state of each physical block such as whether the physical block is in the erased state, partially written, or completely written, and the invalid physical address of each physical block
  • the total number (INVP) is indicated.
  • the physical address table indicates whether the data of each physical address is valid or invalid, or whether each physical address is in an erased state.
  • the physical block represents an erasing unit area, and each physical block is composed of a plurality of physical addresses serving as a writing unit area.
  • various other information in the random access memory RAMst includes the number of physical blocks in the erased state (Esz) in the storage module STG, the data sizes Wstg, Wh2d, and the like.
  • FIG. 7 is a flowchart showing an example of a wear leveling method performed in the storage module of FIG.
  • FIG. 7 shows an example of a write processing procedure performed in STG0 to STGn + 4 when a write access request (write command) (WREQ) is issued from the control circuit DKCTL0 in FIG. 1 to the storage modules STG0 to STGn + 4.
  • An example of a wear leveling (ie, dynamic wear leveling) method performed during writing is shown.
  • the flow of FIG. 7 is mainly executed by the information processing circuit MNGER of FIG.
  • MNGER assigns one physical address (PAD) in units of 512-byte main data and 16-byte redundant data, and writes to the physical addresses (PAD) of the non-volatile memories NVM0 to NVM7. Yes.
  • FIG. 22 is a supplementary diagram for schematically explaining the flow of FIG. If the flow of FIG. 7 is used, operation
  • the physical block PBK [0] is composed of three physical addresses PAD [0] to PAD [2], and similarly, the physical blocks PBK [1] and PBK [2] are each three.
  • the erasure counts of PBK [0], PBK [1], and PBK [2] are 10, 9, and 8 respectively, and PBK [1] and PBK [2] are in the erased state (E).
  • write data WDT0, WDT1, and WDT2 of logical addresses LAD [0], LAD [1], and LAD [2] are written in PAD [0], PAD [1], and PAD [2], respectively. [0], PAD [1], and PAD [2] (WDT0, WDT1, WDT2) are all valid "1".
  • a write access request (write command) (WREQ [3]) including the logical address LAD [0] and the write data WDT3 is input.
  • the information processing circuit MNGER first changes the physical address PAD [0] corresponding to LAD [0] from valid “1” to invalid “0”, and writes a new WDT3 for the LAD [0].
  • a valid physical address At this time, the physical block having the smallest erase count value (PBK [2] in this case) is selected among the physical blocks in the erased state or partially written.
  • WDT3 is written to the first physical address (PAD [6] in this case) that is in the erased state in the physical block (PBK [2]), and the PAD [6] is enabled “1”.
  • MNGER similarly disables PAD [6] to “0”.
  • a physical block in this case, PBK [2]
  • WDT4 is written to the first physical address (PAD [7] in this example) that is in the erased state in the physical block (PBK [2]), and the PAD [7] is enabled “1”.
  • a logical address value for example, LAD [0]
  • a data write command WRT
  • 512-byte write data for example, WDT3
  • write access request write command
  • STCT0 The control circuit HOST_IF in FIG. 6 takes out the clock information embedded in the write access request (WREQ [3]), converts the write access request (WREQ [3]) converted into serial data into parallel data, and buffers BUF0. Then, the information is transferred to the information processing circuit MNGER (Step 1).
  • the information processing circuit MNGER uses the current physical address value (for example, PAD [0]) stored at the address of the logical address value (LAD [0]) and the physical address value (PAD [0]).
  • the value of the corresponding valid flag PVLD is read (Step 2). Further, if the valid flag PVLD value is “1 (valid)”, it is set to “0 (invalid)”, and the address translation table (LPTBL) and the physical address table (PADTBL) are updated. (Step 3).
  • the information processing circuit MNGER extracts an erased state or a partially written physical block from the physical block table (PBKTBL) in the random access memory RAMst, and further, the erase count value is included in the extracted physical block.
  • the smallest physical block for example, PBK [2]
  • the erase count table (ERSTBL) in RAMst.
  • the MNGER uses the physical address table (for example, PAD [6]) among the physical addresses in which data has not been written yet (in the erased state) in the selected physical block. (PADTBL) is selected (Step 4).
  • the information processing circuit MNGER writes 512-byte write data (WDT3) to the physical address (PAD [6]) (Step 5). Subsequently, MNGER updates the address translation table (LPTBL) and the physical address table (PADTBL) (Step 6). Further, MNGER recalculates the data size Wstg (and Wh2d) and stores it in the random access memory RAMst (Step 7). Finally, MNGER transmits the latest value of the data size Wstg to the control circuit DKCTL0 through the control circuit HOST_IF and the interface signal H2D_IF (Step 8).
  • leveling is performed by sequentially writing data from the physical address having the smallest erase count value. Therefore, by using together with the leveling between the storage modules STG as described in FIG. 3 and the like, further leveling of the entire storage system (storage device system) STRGSYS in FIG. 1 can be realized.
  • FIG. 8 is a flowchart showing an example of a garbage collection and wear leveling method performed in the storage module of FIG.
  • FIG. 23 is a supplementary diagram for schematically explaining the flow of FIG. 8.
  • the flow in FIG. 8 is mainly executed by the information processing circuit MNGER in FIG. If data is continuously written to the nonvolatile memories NVM0 to NVM7, the number of erased physical addresses (number of physical blocks) decreases. When the number of physical addresses (the number of physical blocks) in the erased state becomes 0, the storage module STG can no longer write. Therefore, a garbage collection operation is required to increase the number of erased physical addresses (the number of physical blocks). In the garbage collection operation, it is desirable to perform a wear leveling operation together. Therefore, it is beneficial to execute the flow of FIG.
  • the information processing circuit MNGER in FIG. 6 first reads the number of physical blocks Esz in the erased state stored in the random access memory RAMst (Step 1). Next, the threshold values DERCth and Esz of the number of physical blocks in a predetermined erase state are compared (Step 2). If Esz ⁇ DERCth, the process proceeds to Step 1, and if Esz ⁇ DERCth, the process proceeds to Step 3. In Step 3, MNGER reads the erase count table (ERSTBL), physical block table (PBKTBL), and physical address table (PADTBL) stored in RAMst.
  • ESDBL erase count table
  • PBKTBL physical block table
  • PADTBL physical address table
  • ERSTBL The number of times of erasing for each physical block is found by ERSTBL, and the state of each physical block (erased state, partly written, all written) and the number of invalid physical addresses (INVP) for each physical block are found by PBKTBL. , PADTBL reveals whether each physical address is valid or invalid.
  • the information processing circuit MNGER has written all the written physical blocks until the sum of the number of invalid physical addresses (INVP) is equal to or larger than the size of the physical block in ascending order of the erase count value.
  • Physical blocks are sequentially selected (Step 4).
  • the physical block PBK [0] includes three physical addresses PAD [0] to PAD [2].
  • the physical blocks PBK [1], PBK [2], and PBK [3] Are composed of three physical addresses PAD [3] to PAD [5], PAD [6] to PAD [8] and PAD [9] to PAD [11], respectively.
  • PBK [0], PBK [1], PBK [2], and PBK [3] is 7, 8, 9, and 10, respectively, and PBK [3] is in the erased state (E). To do. Also, write data WDT0 to WDT8 are written in PAD [0] to PAD [8], respectively, and PAD [0], PAD [3], and PAD [6] (WDT0, WDT3, WDT6) among them are written. It is assumed that it is invalid “0”.
  • the physical blocks PBK [0], PBK [1], and PBK [2] are selected in Step 4 of FIG.
  • the information processing circuit MNGER reads data of a valid physical address in the selected physical block and temporarily stores it in the random access memory RAMst.
  • the information processing circuit MNGER writes the write data once stored in the random access memory RAMst back to the erased physical blocks in the nonvolatile memories NVM0 to NVM7.
  • a garbage collection operation is realized.
  • the writing back is performed by selecting in order from the physical block having the smallest erase count value among the physical blocks in the erased state.
  • a wear leveling operation is realized in parallel with the garbage collection operation.
  • t 3
  • two physical blocks PBK [0] and PBK [1] are selected in ascending order of erase count value, and write data WDT1 and WDT2 in the RAMst are selected in the physical block.
  • WDT4, WDT5, WDT7, WDT8 are written back.
  • one more erased physical block (here, PBK [2]) is generated.
  • the information processing circuit MNGER includes an address conversion table (LPTBL), an erase count table (ERSTBL), a physical block table (PBKTBL), and a physical address table (PADTBL) in the random access memory RAMst.
  • LPTBL address conversion table
  • ERSTBL erase count table
  • PBKTBL physical block table
  • PADTBL physical address table
  • the number of erases in the storage module (memory module) STG is leveled together with the dynamic wear leveling operation as shown in FIG. Can be realized.
  • this may cause variations in the number of erasures between the storage modules STG.
  • FIG. 3 the storage system
  • FIG. 3 the storage system
  • FIG. 3SYS the storage system
  • FIG. 3SYS the storage system
  • FIG. 9 is a flowchart showing an example of a read operation performed by the storage module control circuit and the storage control circuit in FIG. 1, after DKCTL0 receives a read request (RQ) in response to a notification from HCTL0. An operation example is shown.
  • the read control circuit RDCTL checks whether or not the read valid flag VLD is “1” (Step 2).
  • VLD is “0”
  • LAD logical address value
  • the RDCTL notifies the control circuit HCTL0 that an error has occurred (Step 10).
  • VLD is “1”
  • the interface circuit HOST_IF in the storage module STG3 extracts the clock information embedded in the read access request (RREQ) issued from the control circuit DKCTL0, converts the RREQ converted into serial data into parallel data, The data is transferred to BUF0 and the information processing circuit MNGER (Step 4).
  • Various information is read with reference to the address conversion table LPTBL.
  • the MNGER inputs the converted address to the non-volatile memories NVM0 to NVM7 through the arbitration circuit ARB and the memory control circuits NVCT0 to NVCT7, and the data (RDATA) stored in the NVM0 to NVM7 is read (Step 7). .
  • the read data (RDATA) includes main data (DArea) and redundant data (RArea), and the redundant data (RArea) includes an ECC code (ECC). Therefore, the information processing circuit MNGER uses the ECC code (ECC) to check whether there is an error in the main data (DArea), corrects the error, and passes the data (RDATA) through the interface circuit HOST_IF.
  • the data is transmitted to the control circuit DKCTL0 (Step 8).
  • DKCTL0 transfers the transmitted data (RDATA) to the cache memories CM0 to CM3, and further transmits them to the information processing devices SRV0 to SRVm through the control circuit HCTL0 and the interface signal H2S_IF (Step 9).
  • the entire storage device system can realize the leveling of the number of erasures (and as a result, the leveling of the number of writings), and is reliable. It is possible to improve the performance and extend the service life.
  • the data retention time (i.e., how long can the written data be retained correctly as the number of erases (or the number of writes) increases) ) May decrease.
  • the data retention time is not particularly limited, but is, for example, 10 years when the number of times of writing is small.
  • the degree to which the data retention time depends on the number of erases (or the number of writes) varies depending on what kind of nonvolatile memory is used for the storage module. For example, it may differ depending on whether a flash memory or a phase change memory is used as the nonvolatile memory, or what memory cell structure is used even when a flash memory is used.
  • FIG. 20A is an explanatory diagram showing an example of data retention characteristics of the storage module in the storage system according to Embodiment 2 of the present invention.
  • FIG. 20A shows the dependency (function) between the physical block erase count (or write count) (nERS) and data retention time (data retention time) Ret.
  • nERS physical block erase count
  • RetSTG0 to RetSTG3 represent dependency relationships (functions) in the storage modules STG0 to STG3, respectively.
  • Each of the storage modules (memory modules) STG0 to STG3 has its own erase count (or write count) and data retention time dependency (function) in advance in the non-volatile memories NVM0 to NVM7 as a mathematical expression.
  • the mathematical formula is transferred to the random access memory RAMst.
  • the information processing circuit MNGER in the storage control circuit STCT obtains the maximum value of the number of erasures in each physical block in the NVM0 to NVM7. Each time this maximum value changes, MNGER reads the mathematical formula from RAMst, calculates the data retention time (data retention time) Ret using the maximum value (nERS) of the erase count as an argument, and stores it in RAMst. To do. Furthermore, each of STG0 to STG3 transfers the calculated data retention time Ret to the storage controller STRGCONT as necessary.
  • FIG. 20B is a diagram showing an example in which the data retention characteristics of FIG. 20A are defined on a table.
  • the data retention time Ret is calculated by preliminarily defining the dependency (function) with a mathematical expression, but instead, a table RetTBL like FIG. 20B that discretely represents the mathematical expression is preliminarily defined. It is also possible to calculate the data retention time Ret.
  • FIG. 20B shows a table RetTBL held by one storage module STG. In the RetTBL, the dependency between the physical block erase count (or write count) (nERS) and the data retention time Ret ( Function).
  • nERS physical block erase count
  • nERS data retention time Ret
  • Each of the storage modules STG0 to STG3 has a table RetTBL corresponding to its characteristics in the non-volatile memories NVM0 to NVM7 in advance, and immediately after the power of the STG0 to STG3 is turned on, the table RetTBL is transferred to the random access memory RAMst. To do.
  • the information processing circuit MNGER in the storage control circuit STCT obtains the maximum value of the number of erasures in each physical block in the NVM0 to NVM7. Then, every time the maximum value changes, MNGER searches the table RetTBL and acquires the data retention time (data retention time) Ret. Furthermore, each of STG0 to STG3 transfers the acquired data retention time Ret to the storage controller STRGCONT as necessary.
  • the data retention time Ret of the storage module is different for each storage module, and further decreases based on a predetermined dependency (function) every time the number of erases (or the number of writes) (nERS) increases. I will do it.
  • the data retention time Ret represents the remaining life of the corresponding storage module, and when the time becomes smaller than a predetermined value, the life of the storage module is exhausted. Therefore, even if the number of times of erasure (or the number of times of writing) is equalized between the storage modules using the method of the first embodiment, as can be seen from FIG. 20A, from the viewpoint of the data retention time Ret, between the storage modules. In some cases, variations may occur. As a result, the life of the entire storage device system may be reduced.
  • a threshold value of data retention time (remaining life) Ret is provided, the threshold value is controlled as appropriate, and the data retention time Ret of each storage module is always kept above the threshold value.
  • the number of erasures between storage modules may be leveled. For example, in FIG. 20A, if the number of times of erasure (nERS) of the storage modules STG0 and STG3 is the same, and the data retention time Ret of STG3 reaches a threshold value in this state, for STG3 for the time being What is necessary is just to write / erase STG0, without performing writing / erasing.
  • FIG. 10 is a flowchart showing an example of a write operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to the second embodiment of the present invention.
  • FIG. 11A and FIG. 11B are supplementary diagrams of FIG. 10 and show an example of the contents held in the table MGTBL held by the storage module control circuit.
  • the table MGTBL shown in FIGS. 11A and 11B includes the data size ntW shown in FIG.
  • the data retention time Ret for each STG0 to STG3 is held.
  • the control circuit DKCTL0 sends a notification request for the data retention time Ret and the data sizes Wstg and Wh2d to the storage modules STG0 to STG3 through the interface signal H2D_IF as necessary (for example, immediately after turning on the power to the storage controller STRGCONT). Issue.
  • each of the storage modules STG0 to STG3 returns a data retention time Ret (Ret0 (8), Ret1 (6), Ret2 (9), Ret3 (7)) to DKCTL0.
  • DKCTL0 sets and updates these data retention times Ret and data sizes Wstg and Wh2d in the table MGTBL (FIG. 10: Step 2, FIG. 11A).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [1]) of data size ntW1 (here, 10) and a logical address (here, 123). ) (WREQ [1]).
  • the write control circuit WTCTL in DKCTL0 uses Wstg and Wh2d in MGTBL to determine the write data size ratio WAF for each of STG0 to STG3, and in addition to this, the expected write data size eWd using ntW1 Is set in MGTBL and updated (FIG. 10: Step 3, FIG. 11A).
  • the write control circuit WTCTL includes life information (dLife (here, 4.5)) of the storage system (storage device system) STRGSYS and data retention times Ret (Ret0 (8), Ret1) of the storage modules STG0 to STG3. (6), Ret2 (9), Ret3 (7)) are compared. Then, the WTCTL selects a storage module having a data retention time (residual lifetime) Ret that is equal to or longer than the storage system lifetime information (dLife) (FIG. 10: Step 4, FIG. 11A).
  • the write control circuit WTCTL further selects a storage module (here, STG2) in which the expected write data size eWd is the minimum value (Min.) From the storage modules selected in Step 4 (FIG. 10: Step 5, FIG. 11A).
  • STG2 a storage module in which the expected write data size eWd is the minimum value (Min.) From the storage modules selected in Step 4
  • Step 2 Steps 2 to 5 are executed again.
  • Step 7 FIG. 10: Step 6
  • Command) (WREQ [1]) is issued (FIG. 11A).
  • the storage module STG2 notifies the control circuit DKCTL0 of the data retention time Ret (8.9) and the data size Wstg (Wstg2 (30)) (FIG. 10). : Step 9, FIG. 11B), return to Step 2.
  • the data size “20” is written by the garbage collection operation or the static wear leveling operation. As a result, a total value of “30” is notified as Wstg2. Further, as described in FIGS.
  • the data retention time Ret (8.9) is calculated by the information processing circuit MNGER.
  • the data retention time Ret (8.9) is changed from “9” in FIG. 11A according to the garbage collection operation. It is reduced to “8.9” in 11B.
  • the write control circuit WTCTL sets and updates the notified data retention time Ret (8.9) and data size Wstg (Wstg2 (30)) in the table MGTBL (FIG. 10: Step 2, FIG. 11B).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [2]) of data size ntW2 (here, 10) and a logical address (here, 535). ) (WREQ [2]).
  • the WTCTL uses the data sizes Wstg and Wh2d in the MGTBL to obtain the write data size ratio WAF for each of the storage modules STG0 to STG3, and in addition to this, obtains the expected write data size eWd using ntW2.
  • MGTBL is set and updated (FIG. 10: Step 3, FIG. 11B).
  • the life information (residual life threshold value) dLife is not changed, but is actually variably controlled as appropriate.
  • the write control circuit WTCTL takes into account the increase in the use period of the system (in other words, the decrease in the remaining life) based on the specifications of the storage system, and reflects this remaining life over time. It is possible to set lifetime information (residual lifetime threshold value) dLife that decreases gradually. In this case, in the storage system, it is possible to secure the minimum remaining life required in accordance with the usage period, and it is possible to improve the reliability and extend the life.
  • WTCTL sets dLife so that, for example, every time the data retention time Ret of most storage modules reaches the life information (residual life threshold) dLife, the value is gradually decreased. Is also possible. In this case, the data retention time Ret can be leveled between the storage systems, so that the reliability can be improved and the life can be extended.
  • the write control circuit WTCTL further selects a storage module (here, STG3) in which the expected write data size eWd is the minimum value (Min.) From the storage modules selected in Step 4 (FIG. 10: Step 5, FIG. 11B).
  • STG3 a storage module in which the expected write data size eWd is the minimum value (Min.) From the storage modules selected in Step 4
  • Step 2 Steps 2 to 5 are executed again.
  • Step 7 FIG. 10: Step 6
  • a write access request (write command) (WREQ [2]) is issued (FIG. 11B).
  • Wh2d is updated from “10” to “20” in STG3 in MGTBL in FIG. 11B.
  • Step 7 in the storage module (in this case, STG2 and STG3) from which the write access request (WREQ) is issued, the logical address LAD included in the write access request (WREQ) is changed to the physical addresses (NVM0 to NVM7). PAD) and write data is written to the converted physical address (PAD).
  • the entire storage device system equalizes the number of times of erasure (and results in writing as a result). (Equalization of the number of times) can be realized, and it becomes possible to improve reliability, extend the service life, and the like. Furthermore, management of data retention time (residual life) makes it possible to further improve reliability, extend the life, and the like.
  • the storage module control circuit DKCTL0 manages the garbage collection in addition to the execution of the inter-storage module wear leveling described in FIG. 3, FIG. 4A, and FIG. 4B of the first embodiment. The case will be described.
  • FIG. 12 is a flowchart showing an example of a write operation and a garbage collection management operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage device system according to the third embodiment of the present invention.
  • 13A, 13B, and 13C are supplementary diagrams of FIG.
  • FIG. 12 is diagrams illustrating an example of contents held in the table MGTBL held by the storage module control circuit DKCTL0 in FIG. 14A, 14B, and 14C are supplementary diagrams of FIG. 12, and are diagrams illustrating an example of contents held in the table GETBL held by the storage module control circuit DKCTL0 of FIG.
  • the table MGTBL shown in FIGS. 13A, 13B, and 13C includes the data size ntW shown in FIG. 4 and the like, the data sizes Wh2d and Wstg for each storage module STG0 to STG3, the write data size ratio WAF, and the expected write data. In addition to the size eWd, the number of erased physical blocks Esz for each STG0 to STG3 is held.
  • the table GETBL shown in FIGS. 14A, 14B, and 14C holds a garbage collection execution state GCv and an erasure execution state ERSv for each storage module STG0 to STG3,... Having each number (STG No).
  • GCv means that the garbage collection operation is being executed when “1”, and means that it is not being executed when “0”.
  • ERSv means that the erase operation is being executed when “1”, and means that it is not being executed when “0”.
  • the control circuit DKCTL0 when necessary (for example, immediately after turning on the power to the storage controller STRGCONT), sends the physical block count Esz and the data size to the storage modules STG0 to STG3 via the interface signal H2D_IF.
  • a notification request for Wstg and Wh2d is issued.
  • each of the storage modules STG0 to STG3 returns the number of physical blocks in the erased state Esz (Esz0 (90), Esz1 (100), Esz2 (140), Esz3 (120)) to DKCTL0.
  • Wstg (Wstg0 (40), Wstg1 (15), Wstg2 (10), Wstg3 (20)) and Wh2d (Wh2d0 (10), Wh2d1 (5), Wh2d2 (5), Wh2d3 (10)) are set. Reply to DKCTL0.
  • control circuit DKCTL0 issues a garbage collection operation and erasure operation confirmation request to the storage modules STG0 to STG3 through the interface signal H2D_IF as necessary.
  • each storage module STG0 to STG3 receives the garbage collection status Gst (Gst0 (0), Gst1 (0), Gst2 (0), Gst3 (0)) and the erase status Est (Est0 (0), Est1 ( 0), Est2 (0), Est3 (0)) are returned to DKCTL0 (FIG. 12: Step1, FIG. 13A).
  • control circuit DKCTL0 sets and updates the number of physical blocks Esz and the data sizes Wstg and Wh2d in the erased state in the table MGTBL. Furthermore, DKCTL0 sets and updates these garbage collection status Gst and erase status Est in the garbage collection execution state GCv and the erase execution state ERSv of the table GETBL (FIG. 12: Step 2, FIG. 13A, FIG. 14A).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [1]) of data size ntW1 (here, 10) and a logical address (here, 123). ) (WREQ [1]).
  • write control circuit WTCTL in DKCTL0 uses Wstg and Wh2d in MGTBL to determine the write data size ratio WAF for each of STG0 to STG3, and in addition to this, the expected write data size eWd using ntW1 Is set in MGTBL and updated (FIG. 12: Step 3, FIG. 13A).
  • FIG. 12 Step 3, FIG. 13A
  • the garbage collection control circuit GCCTL reads the table GETBL (FIG. 14A) and selects the storage modules STG0 to STG4 that are not currently performing the garbage collection operation or the erasure operation as the storage modules to be garbage collected (FIG. 12: Step 4, FIG. 13A). Subsequently, the GCCTL includes a preset threshold value ESZth of the number of physical blocks in the erased state (91 here) and the number of physical blocks in the erased state Esz (Esz0 (90)) for each of the storage modules STG0 to STG3 selected in Step 4. , Esz1 (100), Esz2 (140), Esz3 (120)).
  • the garbage collection control circuit GCCTL issues a garbage collection request (GCrq) to the storage module STG0 selected as the garbage collection target in Step 5, and updates the table GETBL. That is, as shown in FIG. 14B, the value of the garbage collection execution state GCv corresponding to the storage module number (STG No) “0” is “1”, and the storage module STG0 is currently executing the garbage collection operation. It is shown that there is (FIG. 12: Step 11, FIG. 13A, FIG. 14B).
  • the storage module STG0 that has received the garbage collection request (GCrq) executes garbage collection using the processing of Step 3 to Step 8 of FIG. That is, in FIG. 8, the storage module itself determines whether to execute the garbage collection operation by the processing of Step 1 and Step 2, but in the flow of FIG. Is determined by the garbage collection control circuit GCCTL in the control circuit DKCTL0.
  • DKCTL0 can issue a write access request (WREQ), a read access request (RREQ), or the like for a storage module that is not executing a garbage collection operation, thereby improving the efficiency of a write operation, a read operation, or the like. It becomes possible.
  • the write control circuit WTCTL selects a storage module (in this case, STG2) in which the expected write data size eWd is the minimum value (Min.) From among the storage modules selected as the write and read target storage modules in Step 5. Select (FIG. 12: Step 6, FIG. 13A). Next, if there is a notification of the data size Wstg from the storage modules STG0 to STG3, the process proceeds to Step 2, and Steps 2 to 6 are executed again. On the other hand, if there is no notification of Wstg from STG0 to STG3, the process proceeds to Step 8 (FIG. 12: Step 7).
  • Command (WREQ [1]) is issued (FIG. 13A).
  • the storage module STG2 notifies the control circuit DKCTL0 of the number of physical blocks in the erased state Esz (Esz2 (139)) and the data size Wstg (Wstg2 (30)).
  • FIG. 12: Step 10, FIG. 13B the process returns to Step 2.
  • a total value of “30” is notified as Wstg2.
  • DKCTL0 is currently a write access request (write command) including write data (WDT [2]) of data size ntW2 (here, 10) and a logical address (here, 535). ) (WREQ [2]).
  • the WTCTL uses the data sizes Wstg and Wh2d in the MGTBL to obtain the write data size ratio WAF for each of the storage modules STG0 to STG3, and in addition to this, obtains the expected write data size eWd using ntW2.
  • MGTBL is set and updated (FIG. 12: Step 3, FIG. 13B).
  • ESZth 91
  • the GCCTL selects the storage modules STG1 to STG3 as the storage modules to be written and read (FIG. 12: Step 5, FIG. 13B).
  • the write control circuit WTCTL selects a storage module (in this case, STG3) in which the expected write data size eWd is the minimum value (Min.) From among the storage modules selected as the write and read target storage modules in Step 5. Select (FIG. 12: Step 6, FIG. 13B). Next, if there is a notification of the data size Wstg from the storage modules STG0 to STG3, the process proceeds to Step 2, and Steps 2 to 6 are executed again. On the other hand, if there is no notification of Wstg from STG0 to STG3, the process proceeds to Step 8 (FIG. 12: Step 7).
  • a write access request (write command) (WREQ [2]) is issued (FIG. 13B).
  • Step 10 the process proceeds to Step 2.
  • Step 8 in the storage module (in this case, STG2 and STG3) from which the write access request (WREQ) is issued, the logical address LAD included in the write access request (WREQ) is changed to the physical addresses (NVM0 to NVM7). PAD) and write data is written to the converted physical address (PAD).
  • the storage module STG0 that has received the garbage collection request (GCrq) in Step 11 completes the garbage collection operation after the write operation of the write data (WDT [2]) by the storage module STG3 is completed. Will be described.
  • the storage module STG0 transmits the number of physical blocks Esz (Esz0 (100)) and the data size Wstg (Wstg0 (70)) after the garbage collection operation to the control circuit DKCTL0 (FIG. 12: Step 12, FIG. 13C).
  • the garbage collection control circuit GCCTL in the control circuit DKCTL0 updates the table GETBL upon completion of the garbage collection operation.
  • the value of the garbage collection execution state GCv corresponding to the storage module number (STG No) “0” becomes “0”, so that the storage module STG0 is not executing the garbage collection operation. Is shown.
  • the write control circuit WTCTL in the control circuit DKCTL0 sets and updates the number of physical blocks in the erased state Esz (Esz0 (100)) and the data size Wstg (Wstg0 (70)) in the table MGTBL (FIG. 12: Step 2, FIG. 13C).
  • WTCTL uses the data sizes Wstg and Wh2d of the storage module STG0 to obtain the write data size ratio WAF and the expected write data size eWd of the storage module STG0, and sets and updates the table MGTBL (FIG. 12: Step 3, FIG. 13C).
  • the entire storage device system equalizes the number of times of erasure (and results in writing as a result). (Equalization of the number of times) can be realized, and it becomes possible to improve reliability, extend the service life, and the like. Furthermore, by managing the garbage collection operation with the storage controller STRGCONT, it is possible to know which storage module is executing the garbage collection operation and which storage module can be written to and read from. The write and read operations can be executed in parallel. As a result, the storage system can be speeded up while leveling.
  • the storage module control circuit DKCTL0 performs the erase operation in addition to the execution of the write operation (inter-storage module wear leveling) described in FIG. 3, FIG. 4A, FIG. The case of performing will be described.
  • FIG. 15 is a flowchart showing an example of a write operation and an erase operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to the fourth embodiment of the present invention.
  • 16A, FIG. 16B, and FIG. 16C are supplementary diagrams of FIG. 15, and show an example of the contents held in the table MGTBL held by the storage module control circuit DKCTL0 of FIG.
  • the control circuit DKCTL0 passes the interface signal H2D_IF to the storage modules STG0 to STG3 to determine the number of physical blocks Esz and the data size.
  • a notification request for Wstg and Wh2d is issued.
  • each of the storage modules STG0 to STG3 returns the number of physical blocks in the erased state Esz (Esz0 (90), Esz1 (100), Esz2 (140), Esz3 (120)) to DKCTL0.
  • Wstg (Wstg0 (40), Wstg1 (15), Wstg2 (10), Wstg3 (20)) and Wh2d (Wh2d0 (10), Wh2d1 (5), Wh2d2 (5), Wh2d3 (10)) are set. Reply to DKCTL0.
  • control circuit DKCTL0 issues a garbage collection operation and erasure operation confirmation request to the storage modules STG0 to STG3 through the interface signal H2D_IF as necessary.
  • each storage module STG0 to STG3 receives the garbage collection status Gst (Gst0 (0), Gst1 (0), Gst2 (0), Gst3 (0)) and the erase status Est (Est0 (0), Est1 ( 0), Est2 (0), Est3 (0)) are returned to DKCTL0 (FIG. 15: Step1, FIG. 16A).
  • control circuit DKCTL0 sets and updates the number of physical blocks Esz and the data sizes Wstg and Wh2d in the erased state in the table MGTBL. Furthermore, DKCTL0 sets and updates these garbage collection status Gst and erase status Est in the garbage collection execution state GCv and erase execution state ERSv of the table GETBL (FIG. 15: Step 2, FIG. 16A, FIG. 14A).
  • DKCTL0 is currently a write access request (write command) including write data (WDT [1]) of data size ntW1 (here, 10) and a logical address (here, 123). ) (WREQ [1]).
  • write control circuit WTCTL in DKCTL0 uses Wstg and Wh2d in MGTBL to determine the write data size ratio WAF for each of STG0 to STG3, and in addition to this, the expected write data size eWd using ntW1 Is set in MGTBL and updated (FIG. 15: Step 3, FIG. 16A).
  • FIG. 15 Step 3, FIG. 16A
  • Step 4 the storage controller STRGCONT checks whether there is a data erase request (EQ) from the information processing devices SRV0 to SRVm, and if there is a data erase request (EQ), executes Step 5, If not, Step 6 is executed. That is, for example, from SRV0 to SRVm, a data erasure request (EQ) for erasing data of the logical address LAD of “1000 to 2279” is input to the STRGCONT interface circuits STIF00 to STIFm1. This data erasure request (EQ) is notified to the data erasure control circuit ERSCTL of the control circuit DKCTL0 through the control circuit HCTL0 (FIG. 15: Step 4), and then Step 5 is executed.
  • EQ data erase request
  • ERSrq data erasure access request
  • the write control circuit WTCTL selects a storage module (in this case, STG2) having the expected write data size eWd of the minimum value (Min.) From among the storage modules STG1 to STG3 other than the erase operation target in Step 5 (FIG. 15: Step 6, FIG. 16A).
  • STG2 the storage module having the expected write data size eWd of the minimum value (Min.) From among the storage modules STG1 to STG3 other than the erase operation target in Step 5
  • Step 2 Steps 2 to 4 and Step 6 are executed again.
  • Step 8 FIG. 15: Step 7
  • Command (WREQ [1]) is issued (FIG. 16A).
  • the storage module STG2 notifies the control circuit DKCTL0 of the number of physical blocks in the erased state Esz (Esz2 (139)) and the data size Wstg (Wstg2 (30)). (FIG. 15: Step 10, FIG. 16B), the process returns to Step 2.
  • a total value of “30” is notified as Wstg2.
  • DKCTL0 is currently a write access request (write command) including write data (WDT [2]) of data size ntW2 (here, 10) and a logical address (here, 535). ) (WREQ [2]).
  • the WTCTL uses the data sizes Wstg and Wh2d in the MGTBL to obtain the write data size ratio WAF for each of the storage modules STG0 to STG3, and in addition to this, obtains the expected write data size eWd using ntW2.
  • MGTBL is set and updated (FIG. 15: Step 3, FIG. 16B).
  • Step 4 the storage controller STRGCONT checks whether there is a data erase request (EQ) from the information processing devices SRV0 to SRVm, and if there is a data erase request (EQ), executes Step 5, If not, Step 6 is executed. In this case, since there is no data erasure request (EQ), Step 6 is executed. Subsequently, the write control circuit WTCTL selects a storage module (in this case, STG3) having the expected write data size eWd of the minimum value (Min.) From among the storage modules STG1 to STG3 other than the erase operation target in Step 5 ( FIG. 15: Step 6, FIG. 16B).
  • a storage module in this case, STG3 having the expected write data size eWd of the minimum value (Min.) From among the storage modules STG1 to STG3 other than the erase operation target in Step 5 ( FIG. 15: Step 6, FIG. 16B).
  • Step 2 if there is a notification of the data size Wstg from the storage modules STG0 to STG3, the process proceeds to Step 2, and Steps 2 to 4 and Step 6 are executed again. On the other hand, if there is no notification of Wstg from STG0 to STG3, the process proceeds to Step 8 (FIG. 15: Step 7).
  • a write access request (write command) (WREQ [2]) is issued (FIG. 16B).
  • Step 10 the process proceeds to Step 2.
  • Step 8 in the storage module (in this case, STG2 and STG3) from which the write access request (WREQ) is issued, the logical address LAD included in the write access request (WREQ) is changed to the physical addresses (NVM0 to NVM7). PAD) and write data is written to the converted physical address (PAD).
  • the storage module STG0 that has received the data erase access request (ERSrq) in Step 11 completes the erase operation after the write operation of the write data (WDT [2]) by the storage module STG3 is completed.
  • the storage module STG0 transmits the number of physical blocks Esz (Esz0 (100)) and the data size Wstg (Wstg0 (40)) after the erase operation to the control circuit DKCTL0 (FIG. 15: Step 12, FIG. 16C).
  • the data erasure control circuit ERSCTL in the control circuit DKCTL0 updates the table GETBL in response to the completion of the erasure operation. That is, as shown in FIG. 14A, the value of the erase execution state ERSv corresponding to the storage module number (STG No) “0” is “0”, which indicates that the storage module STG0 is not executing the erase operation. It is.
  • the write control circuit WTCTL in the control circuit DKCTL0 sets the number of erased physical blocks Esz (Esz0 (100)) and the data size Wstg (Wstg0 (40)) in the table MGTBL and updates them (FIG. 15: Step 2, FIG. 16C).
  • WTCTL uses the data sizes Wstg and Wh2d of the storage module STG0 to determine the write data size ratio WAF and the expected write data size eWd of the storage module STG0, and sets and updates the table MGTBL (FIG. 15: Step 3, FIG. 16C).
  • the entire storage device system can level the number of erases (and write as a result). (Equalization of the number of times) can be realized, and it becomes possible to improve reliability, extend the service life, and the like. Furthermore, by controlling the erase operation in the storage controller STRGCONT, it is possible to grasp which storage module is executing the erase operation and to which storage module can be written or read. Read operations can be executed in parallel. As a result, the storage system can be speeded up while leveling.
  • the storage controller STRGCONT performs management of the garbage collection operation and control of the erasing operation for each storage module STG.
  • the storage control circuit STCT0 of FIG. 6 may manage the garbage collection operation and control the erase operation for each of the nonvolatile memories NVM0 to NVM7. That is, information (GCnvm) indicating which NVM0 to NVM7 is performing the garbage collection operation and information indicating which NVM0 to NVM7 is performing the erasing operation in the random access memory RAMst of FIG. (ERSnvm) or the like may be included.
  • GCnvm information indicating which NVM0 to NVM7 is performing the garbage collection operation
  • information indicating which NVM0 to NVM7 is performing the erasing operation in the random access memory RAMst of FIG. (ERSnvm) or the like may be included.
  • FIG. 17 is a flowchart showing an example of a write operation and a garbage collection management operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to the fifth embodiment of the present invention.
  • 18A, 18B, and 18C are supplementary diagrams of FIG. 17, and are diagrams illustrating an example of contents held in the table MGTBL held by the storage module control circuit DKCTL0 of FIG.
  • Step 1a of FIG. 17 the control circuit DKCTL0 uses the interface signal H2D_IF to supply the storage modules STG0 to STG3 with the number of physical blocks Esz and the data size as needed (for example, immediately after powering on the storage controller STRGCONT).
  • a notification request for Wstg and Wh2d is issued.
  • each of the storage modules STG0 to STG3 returns the number of physical blocks in the erased state Esz (Esz0 (90), Esz1 (100), Esz2 (140), Esz3 (120)) to DKCTL0.
  • Wstg Wstg0 (40), Wstg1 (15), Wstg2 (10), Wstg3 (20)) and Wh2d (Wh2d0 (10), Wh2d1 (5), Wh2d2 (5), Wh2d3 (10)) are set. It returns to DKCTL0 (FIG. 18A).
  • Step 1b of FIG. 17 the control circuit DKCTL0 issues a garbage collection operation and erasure operation confirmation request to the storage modules STG0 to STG3 through the interface signal H2D_IF as necessary.
  • each storage module STG0 to STG3 receives the garbage collection status Gst (Gst0 (0), Gst1 (0), Gst2 (0), Gst3 (0)) and the erase status Est (Est0 (0), Est1 ( 0), Est2 (0), Est3 (0)) are returned to DKCTL0 (FIG. 18A).
  • the write control circuit WTCTL first divides the write data (WDT [A]) of the data size ntW_A (here, 20) held in the random access memories RAM0 to RAM3. .
  • the data is divided into write data (WDT [A1]) having a data size of ntW_A1 (here, 10) and write data (WDT [A2]) having a data size of ntW_A2 (here, 10).
  • WTCTL generates parity data (PA12) of data size ntW_PA12 (here, 10) from the divided write data (WDT [A1]) and write data (WDT [A2]) (FIG. 18A).
  • a write access request (WREQ [A2]) including the WDT [A2] and a predetermined logical address (here, 224) is generated.
  • control circuit DKCTL0 sets the number of erased physical blocks Esz and the data sizes Wstg and Wh2d associated with Step 1a in the table MGTBL and updates them. Furthermore, DKCTL0 sets and updates the garbage collection status Gst and the erase status Est associated with Step 1a in the garbage collection execution state GCv and the erase execution state ERSv of the table GETBL (FIG. 17: Step 2, FIG. 18A, FIG. 14A).
  • the garbage collection control circuit GCCTL reads the table GETBL (FIG. 14A) and selects the storage modules STG0 to STG4 that are not currently performing the garbage collection operation or the erasure operation as the storage modules to be garbage collected (FIG. 17: Step 4, FIG. 18A). Subsequently, the GCCTL includes a preset threshold value ESZth of the number of physical blocks in the erased state (91 here) and the number of physical blocks in the erased state Esz (Esz0 (90)) for each of the storage modules STG0 to STG3 selected in Step 4. , Esz1 (100), Esz2 (140), Esz3 (120)).
  • the garbage collection control circuit GCCTL issues a garbage collection request (GCrq) to the storage module STG0 selected as the garbage collection target in Step 5, and updates the table GETBL. That is, as shown in FIG. 14B, the value of the garbage collection execution state GCv corresponding to the storage module number (STG No) “0” is “1”, and the storage module STG0 is currently executing the garbage collection operation. This is shown (FIG. 17: Step 11, FIG. 18A, FIG. 14B).
  • the storage module STG0 that has received the garbage collection request (GCrq) executes garbage collection using the processing of Step 3 to Step 8 of FIG. That is, in FIG. 8, the storage module itself determines whether or not to execute the garbage collection operation by the processing of Step 1 and Step 2, but in the flow of FIG. Is determined by the garbage collection control circuit GCCTL in the control circuit DKCTL0.
  • DKCTL0 can issue a write access request (WREQ), a read access request (RREQ), or the like for a storage module that is not executing a garbage collection operation, thereby improving the efficiency of a write operation, a read operation, or the like. It becomes possible.
  • the write control circuit WTCTL has three storage modules (in this case, STG2, STG3, and STG1) in ascending order of the expected write data size eWd from the storage modules selected as the storage modules to be written and read in Step 5. (FIG. 17: Step 6, FIG. 18A).
  • Step 2 the process proceeds to Step 2
  • Steps 2 to 6 are executed again.
  • Step 8 the process proceeds to Step 8 (FIG. 17: Step 7).
  • the write control circuit WTCTL sends the write access request (write command) (WREQ [A1], WREQ [A2], WREQ [PA12] described in Step 1a to the storage modules STG2, STG3, and STG1 selected in Step 6, respectively. ) Is issued (FIG. 18B).
  • the WTCTL updates the table STGTBL based on the correspondence relationship between the logical addresses LAD (223, 224, 225) accompanying each write access request and STG2, STG3, STG1 (FIG. 17: Step 9),
  • the data size Wh2d of MGTBL is updated (FIG. 17: Step 9, FIG. 18B). That is, in STGTBL as shown in FIG.
  • Wh2d is updated to “15”, “15”, and “20”, respectively.
  • Step 10 when the writing of the write data (WDT [A1]) is completed, the storage module STG2 completes the erased physical block number Esz (Esz2 (139)) and the data size Wstg (Wstg2 (30) to the control circuit DKCTL0. )) Further, when the write of the write data (WDT [A2]) is completed, the storage module STG3 passes the erasure state physical block number Esz (Esz3 (119)) and the data size Wstg (Wstg3 (40)) to DKCTL0.
  • the storage module STG1 notifies the DKCTL0 of the erased physical block number Esz (Esz1 (100)) and the data size Wstg (Wstg1 (45)) (FIG. 18C). .
  • Step 10 the process returns to Step 1b, and the write control circuit WTCTL divides write data and generates parity data for the next write data (WDT [B]) of the data size ntW_B (here, 20).
  • the data is divided into write data (WDT [B1]) of data size ntW_B1 (here 10) and write data (WDT [B2]) of data size ntW_B2 (here 10), and data size ntW_PB12 ( Parity data (PB12) of 10) is generated (FIG. 18C).
  • the WTCTL generates a write access request (write command) including each of these write data and parity data.
  • the information notified in Step 10 is reflected in MGTBL in Step 2 (FIG. 18C).
  • the storage module STG0 that has received the garbage collection request (GCrq) at Step 11 completes the garbage collection operation.
  • the STG0 transmits the erased physical block number Esz (Esz0 (100)) and the data size Wstg (Wstg0 (70)) after the garbage collection operation to the control circuit DKCTL0 (FIG. 17: Step 12, FIG. 18C).
  • the garbage collection control circuit GCCTL in the control circuit DKCTL0 updates the table GETBL in response to the completion of the garbage collection operation.
  • the value of the garbage collection execution state GCv corresponding to the storage module number (STG No) “0” becomes “0”, so that the storage module STG0 is not executing the garbage collection operation. Is shown.
  • the write control circuit WTCTL in the control circuit DKCTL0 sets and updates the number of physical blocks in the erased state Esz (Esz0 (100)) and the data size Wstg (Wstg0 (70)) in the table MGTBL (FIG. 17: Step 2, FIG. 18C).
  • FIG. 19 is an explanatory diagram showing an example of a read operation performed by the storage module control circuit in FIGS. 1 and 2 in the storage system according to Embodiment 5 of the present invention.
  • data A is composed of data A1 and A2
  • data A1 is stored in the storage module STG2
  • data A2 is stored in the storage module STG3.
  • the parity data PA12 generated from the data A1 and A2 is stored in the storage module STG1.
  • Data B is composed of data B1 and B2, data B1 is stored in the storage module STG1, and data B2 is stored in the storage module STG2. Further, the parity data PB12 generated from the data B1 and B2 is stored in the storage module STG0.
  • Data C is composed of data C1 and C2, data C1 is stored in the storage module STG0, and data C2 is stored in the storage module STG1.
  • the parity data PC12 generated from the data C1 and C2 is stored in the storage module STG3.
  • Data D is composed of data D1 and D2, data D1 is stored in storage module STG2, and data D2 is stored in storage module STG3.
  • the parity data PD12 generated from the data D1 and D2 is stored in the storage module STG0.
  • a garbage collection request (GCrq) is issued from the garbage collection control circuit GCCTL in the control circuit DKCTL0 to the storage module STG1, and the read control circuit RDCTL is being executed while the STG1 is executing a garbage collection operation accordingly.
  • the RDCTL can grasp that the storage module STG1 is executing the garbage collection operation from the table GETBL as described in FIG.
  • RDCTL indicates that data B1 and B2 are stored in storage modules STG1 and STG2 and parity data PB12 is stored in storage module STG0 according to the table STGTBL as described in FIG. It can be grasped from the corresponding logical address LAD.
  • the read control circuit RDCTL reads data B2 stored in the storage module STG2 and parity data PB12 stored in the storage module STG0 other than the storage module STG1 that is executing the garbage collection operation.
  • RDCTL restores data B using data B2 and parity data PB12 (restores data B1 and restores data B from data B1 and B2).
  • STRGCONT control circuit DKCTL
  • the storage device system of the fifth embodiment typically, the entire number of erasures in the entire storage device system ( As a result, it is possible to realize the leveling of the number of times of writing), and it is possible to improve the reliability and extend the life.
  • the garbage collection operation in the storage controller STRGCONT it is possible to grasp which storage module is executing the garbage collection operation and to which storage module can be written and read. The write and read operations can be executed in parallel. As a result, the storage system can be speeded up while leveling. In addition to this, it is possible to further improve the reliability by realizing the RAID function in the storage controller STRGCONT (control circuit DKCTL).
  • FIG. 21 is a block diagram showing a detailed configuration example of the storage module in FIG. 1 in the storage system according to Embodiment 6 of the present invention.
  • the storage module (memory module) STG shown in FIG. 21 replaces the random access memory RAMst of FIG. 6 with a nonvolatile memory NVMEMst instead of deleting the battery backup device BBU of FIG. The point is different.
  • the configuration is the same as in the case of FIG.
  • the non-volatile memory NVMEMst is a memory that can perform a write operation faster than the NAND flash memory and can be accessed in small units (for example, byte units).
  • small units for example, byte units.
  • PCM phase change memory
  • SPRAM Spin transfer torque RAM
  • MRAM Magneticoresistive RAM
  • FRAM Feroelectric RAM
  • ReRAM resistance change memory
  • RAM Resistive
  • the storage controller predicts each storage module from the amount of write data to be written next.
  • the amount of write data can be obtained.
  • the storage controller can write the next data to the storage module having the smallest predicted write data amount.
  • the storage controller In addition to the amount of write data actually written to the non-volatile memory by a plurality of storage modules, the storage controller notifies the storage controller of the above-mentioned predicted write data amount by remaining the storage system. It can be obtained for storage modules that have a lifespan that is longer than the life. Then, the storage controller can write the next data into the storage module having the smallest predicted write data amount in the target storage module. As a result, while maintaining the product life of the storage system, the number of writes between the plurality of storage modules can be leveled with high efficiency, and a highly reliable and long-life storage system can be realized.
  • the present invention made by the present inventor has been specifically described based on the embodiment.
  • the present invention is not limited to the embodiment, and various modifications can be made without departing from the scope of the invention.
  • the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to one having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment. .
  • ARB arbitration circuit BBU battery backup device BIF interface circuit BP backplane BUF buffer CM cache memory CMCTL cache control circuit CPU processor unit CPUCR processor core DIAG diagnostic circuit DKCTL control circuit ERSCTL data erase control circuit ERSv erase execution state Estz erase state Esz Number of physical blocks GCCTL garbage collection control circuit GCv garbage collection execution state Gst garbage collection status H2D_IF interface signal H2S_IF interface signal HCTL control circuit HDIAG diagnostic circuit HOST_IF interface circuit HRDCTL read control circuit HWTCTL write control circuit L D Logical address MGTBL, STGTBL, GETBL Table MNGER Information processing circuit NVM Non-volatile memory NVMEMst Non-volatile memory PAD Physical address PBK Physical block RAM, RAMst Random access memory RAMC, NVCT0 to NVCT7 Memory control circuit RDCTL Read control circuit Ret Data retention time ( Remaining life) RetTBL table SIFC interface circuit SRV Information processing device (host) STCT control circuit STG Storage module (memor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

 不揮発性メモリを含むメモリモジュールを複数備えた記憶装置システムにおいて、信頼性の向上や長寿命化等を実現する。このため、複数のメモリモジュール(STG)は、実際にその内部の不揮発性メモリに書き込んだライトデータ量(Wstg)を制御回路DKCTL0へ通達する。制御回路DKCTL0は、当該ライトデータ量(Wstg)と、複数のメモリモジュールに向けて既に発行済みの書き込み命令に伴うライトデータ量(Wh2d)と、次の書き込み命令に伴うライトデータ量(ntW)とから、各メモリモジュール毎の予測ライトデータ量(eWd)を求める。そして、この予測ライトデータ量が最小のメモリモジュールへ次の書き込み命令を発行する。

Description

記憶装置システム
 本発明は、記憶装置システムに関し、例えば、SSD(Solid State Drive)等の外部記憶装置(ストレージ)における制御技術に関する。
 近年、複数のNAND型フラッシュメモリと、コントローラから構成されるSSD(Solid State Drive)がストレージシステム、サーバー機器およびLaptop PC等に利用されている。NAND型フラッシュメモリには、消去回数に上限があり、データ書き込みサイズとデータ消去サイズが大きく異なることが広く知られている。
 特許文献1には、階層的な容量仮想化を実現すると共に、ストレージシステム全体での消去回数の偏りを軽減する技術が開示されている。具体的には、既に書き込まれたデータを対象に、それを適宜移動することで消去回数を平準化するという所謂スタティックウエアレベリングを行う技術が示されている。また、特許文献2にはフラッシュメモリを利用したストレージシステムの管理方法について開示されている。特許文献3には、ストレージシステムの電源遮断時の制御技術が開示されている。特許文献4にはSSDの制御技術が開示されている。特許文献5にはSSDとHDD間でのデータ転送技術が開示されている。
国際公開第2011/010344号 特開2011-3111号公報 特開2011-138273号公報 特開2011-90496号公報 特開2007-115232号公報
 本発明者らは、本願に先立ち、SSD(Solid State Drive)やメモリカードなどのストレージへ利用されているNAND型フラッシュメモリの制御方法について検討した。
 NAND型フラッシュメモリに代表される不揮発性メモリは、あるメモリ領域へデータを書き込むためには、予め、そのメモリ領域のデータを消去する必要がある。この消去時の最小データ単位は例えば1Mバイト等であり、書き込み時の最小データ単位は例えば4Kバイト等である。つまり、4Kバイトのデータを書くために、1Mバイトの消去済メモリ領域を確保する必要がある。この1Mバイトの消去済メモリ領域を確保するために、SSD内部ではガーベージコレクションと呼ばれる動作が必要となる。
 このガーベージコレクション動作では、SSDは、先ず、既に書き込み済の1Mバイトの不揮発性メモリ領域AおよびBから、現時点で有効なデータを読み出し、これらのデータを集めて、RAMへ書き込む。次に、不揮発性メモリ領域AおよびBを消去する。最後に、RAMへ書き込まれたデータをまとめて不揮発性メモリ領域Aへ書き込む。このガーベージコレクション動作によって、1Mバイトの不揮発性メモリ領域Bが消去済メモリ領域となり、この不揮発性メモリ領域Bへ新たなにデータを書き込むことができる。
 しかしながら、このガーベージコレクション動作によって、SSD内部では、ある不揮発正メモリ領域から他の不揮発性メモリ領域へのデータの移動が発生し、この際に、ホストコントローラからSSDへ要求されたライトデータサイズよりも、大きなデータサイズの書き込みが行われる。このため、SSDの信頼性や寿命が低下する恐れがある。さらに、例えばNAND型フラッシュメモリを利用したSSDを多数利用してストレージシステムを構築する場合、多数のSSDを制御するストレージコントローラは、各SSDが内部で自立的に行うガーベージコレクション動作やウエアレベリングなどによって増加したライトデータ量を含んだ実際のライトデータ量を把握できない。このため、ストレージシステム(記憶装置システム)としての信頼性や寿命が低下する恐れがある。
 本発明は、このようなことを鑑みてなされたものであり、本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
 本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
 本実施の形態による記憶装置システムは、複数のメモリモジュールと、複数のメモリモジュールを制御する第1制御回路とを備える。複数のメモリモジュールのそれぞれは、複数の不揮発性メモリとこれらを制御する第2制御回路を備える。第2制御回路は、複数の不揮発性メモリに対して実際に書き込みを行った第2書き込みデータ量を把握し、当該第2書き込みデータ量を第1制御回路に適宜通達する。第1制御回路は、複数のメモリモジュールに対して既に発行済みの書き込み命令に伴う第1書き込みデータ量を複数のメモリモジュール毎に把握し、第1書き込みデータ量と第2書き込みデータ量の比率となる第1比率を複数のメモリモジュール毎に計算する。そして、第1制御回路は、当該計算結果を反映して、複数のメモリモジュールの中から次の書き込み命令を発行するメモリモジュールを選択する。
 本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、不揮発性メモリを含むメモリモジュールを複数備えた記憶装置システムにおいて、信頼性の向上や長寿命化等が実現可能になる。
本発明の実施の形態1による記憶装置システムにおいて、それを適用した情報処理システムの概略構成例を示すブロック図である。 図1におけるストレージコントローラの詳細な構成例を示すブロック図である。 図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。 図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の更に他の保持内容の一例を示す図である。 図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の更に他の保持内容の一例を示す図である。 図1におけるストレージモジュールの詳細な構成例を示すブロック図である。 図1のストレージモジュール内で行われるウエアレベリング方法の一例を示すフロー図である。 図1のストレージモジュール内で行われるガーベージコレクションおよびウエアレベリング方法の一例を示すフロー図である。 図1におけるストレージモジュール用の制御回路およびストレージ用の制御回路が行う読み出し動作例を示すフロー図である。 本発明の実施の形態2による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。 図10の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図10の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 本発明の実施の形態3による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の他の保持内容の一例を示す図である。 図12の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(GETBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態4による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作および消去動作の一例を示すフローチャートである。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図15の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の他の保持内容の一例を示す図である。 図17の補足図であり、図2のストレージモジュール用の制御回路が持つテーブル(MGTBL)の更に他の保持内容の一例を示す図である。 本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う読み出し動作の一例を示す説明図である。 本発明の実施の形態2による記憶装置システムにおいて、ストレージモジュールのデータ保持特性の一例を示す説明図である。 図20Aのデータ保持特性をテーブル上で規定した一例を示す図である。 本発明の実施の形態6による記憶装置システムにおいて、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。 図7のフローを概略的に説明する補足図である。 図8のフローを概略的に説明する補足図である。
 以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明する。特に明示した場合を除き、それらは互いに無関係ではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
 さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数等(個数、数値、量、範囲等を含む)についても同様である。
 以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一または関連する符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
 (実施の形態1)
 《情報処理システムの概要》
 図1は、本発明の実施の形態1による記憶装置システムにおいて、それを適用した情報処理システムの概略構成例を示すブロック図である。図1に示す情報処理システムは、情報処理装置SRV0~SRVmと、ストレージシステム(記憶装置システム)STRGSYSを備える。STRGSYSは、複数のストレージモジュール(メモリモジュール)STG0~STGn+4と、SRV0~SRVmからの要求に応じてSTG0~STGn+4の制御を行うストレージコントローラSTRGCONTとを備えている。情報処理装置SRV0~SRVmとストレージコントローラSTRGCONTはインターフェース信号H2S_IFにて接続されており、ストレージコントローラSTRGCONTとストレージモジュールSTG0~STGn+4はインターフェース信号H2D_IFにて接続されている。
 インターフェース信号H2S_IFおよびH2D_IFの通信方式には、例えば、シリアルインターフェース信号方式、パラレルインターフェース信号方式、光インターフェース信号方式などを利用できる。代表的なインターフェース信号方式には、SCSI(Small Computer System Interface)、SATA(Serial Advanced Technology Attachment)、SAS(Serial Attached SCSI)、FC(Fibre Channel)などがあり、いうまでもなく、全ての方式を利用することができる。
 情報処理装置SRV0~SRVmは、例えばサーバー装置等であり、様々なOS上で、様々なアプリケーションを実行する装置である。SRV0~SRVmのそれぞれは、複数のプロセッサコアCPUCR0~CPUCRkを持つプロセッサユニットCPUと、ランダムアクセスメモリRAMと、バックプレーン用のインターフェース回路BIFおよびストレージシステム用のインターフェース回路STIFを備える。BIFは、各SRV0~SRVm間でバックプレーンBPを介して通信を行うための回路であり、STIFは、ストレージシステム(記憶装置システム)STRGSYSに対して、インターフェース信号H2S_IFを用いて各種要求(ライト要求(WQ)、リード要求(RQ)等)を行うための回路である。
 ストレージモジュール(メモリモジュール)STG0~STGn+4には、情報処理装置SRV0~SRVmで必要なデータ、アプリケーションおよびOSなどが格納される。STG0~STGn+4は、特に限定しないが、例えばSSD(Solid State Drive)等に該当するものである。STG0~STGn+4は、それぞれ同様の構成を備えており、例えばSTG0を代表に説明すると、不揮発性メモリNVM0~NVM7と、ランダムアクセスメモリRAMstと、これらに対するアクセス等の制御を行うストレージ用の制御回路STCT0を備えている。NVM0~NVM7には、例えば、NAND型フラッシュメモリ、NOR型フラッシュメモリ、相変化型メモリ、抵抗変化型メモリ、磁気メモリ、強誘電体メモリなどを適用可能である。
 情報処理装置SRV0~SRVmは、例えば、アプリケーションを実行する際に、必要なプログラムやデータのリード要求(RQ)をストレージコントローラSTRGCONTへ発行する。また、SRV0~SRVmは、自身の実行結果やデータを格納するためにライト要求(書き込み命令)(WQ)をストレージコントローラSTRGCONTへ発行する。リード要求(RQ)には論理アドレス(LAD)、データ読み出し命令(RD)、セクタカウント(SEC)などが含まれ、また、ライト要求(WQ)には論理アドレス(LAD)、データ書込み命令(WRT)、セクタカウント(SEC)および書き込みデータ(WDATA)などが含まれる。
 ストレージコントローラSTRGCONTは、キャッシュメモリCM0~CM3およびランダムアクセスメモリRAM0~RAM3を含む内部メモリと、ホスト用の制御回路HCTL0,HCTL1と、ストレージモジュール用の制御回路DKCTL0,DKCTL1を備える。加えて、STRGCONTは、ストレージシステム用のインターフェース回路STIF(00,01,…,m0,m1)とストレージモジュール用のインターフェース回路SIFC(00,01,…,n0,n1)を備える。
 ホスト用の制御回路HCTL0,HCTL1は、主に、情報処理装置SRV0~SRVmとの間の通信(例えばSRV0~SRVmからの各種要求(リード要求(RQ)やライト要求(WQ)等)の受け付けや、SRV0~SRVmに向けた応答等)を制御する回路である。このHCTL0,HCTL1とSRV0~SRVmとの間の通信に際し、インターフェース回路STIFは、インターフェース信号H2S_IFの通信方式に応じたプロトコル変換を行う。ストレージモジュール用の制御回路DKCTL0,DKCTL1は、主に、HCTL0,HCTL1によって受け付けられたSRV0~SRVmからの各種要求に応じて、ストレージモジュールSTG0~STGn+4に対してアクセス要求等の通信を行う回路である。このアクセス要求等の通信に際し、インターフェース回路SIFCは、インターフェース信号H2D_IFの通信方式に応じたプロトコル変換を行う。
 なお、特に限定はしないが、ここでは、ホスト用の制御回路HCTL0,HCTL1は、2系統設けられ、一方(例えばHCTL1)は他方(例えばHCTL0)が故障した際の予備用として備わっている。ストレージモジュール用の制御回路DKCTL0,DKCTL1、インターフェース回路STIF(例えばSTIF00とSTIF01)、インターフェース回路SIFC(例えばSIFC00とSIFC01)も同様に、耐障害性の向上のため、一方は他方の予備用として備わっている。また、特に限定はしないが、ここでは、1個のSIFC(例えばSIFC00)に5個のストレージモジュール(メモリモジュール)(ここではSTG0~STG4)が接続される構成となっている。この数は、例えば、RAID(Redundant Arrays of Inexpensive Disks)の仕様等(例えばデータを4個のSTGに分割して書き込み、それらのパリティを残りの1個に書き込む等)を考慮して適宜定めることが可能である。
 次に、図1の情報処理システムの全体動作について簡単に説明する。ホスト用の制御回路HCTL0,HCTL1は、情報処理装置SRV0~SRVmからのリード要求(RQ)やライト要求(書き込み命令)(WQ)等をストレージシステム用のインターフェース回路STIF(00,01,…,m0,m1)を介して受け付ける。例えば、リード要求(RQ)を受け付けた場合、HCTL0,HCTL1は、先ず、リード要求(RQ)に含まれる論理アドレス(LAD)のデータ(RDATA)が内部に備わったキャッシュメモリCM0~CM3に格納されているかをチェックする。
 ここで、キャッシュメモリCM0~CM3にデータ(RDATA)が格納されていれば、つまりヒットの場合、ホスト用の制御回路HCTL0,HCTL1は、CM0~CM3からデータ(RDATA)を読み出し、インターフェース回路STIF(インターフェース信号H2S_IF)を通じて情報処理装置SRV0~SRVmへ転送する。一方、CM0~CM3にデータ(RDATA)が格納されていなければ、つまりミスヒットの場合、HCTL0,HCTL1は、ストレージモジュール用の制御回路DKCTL0,DKCTL1に通知を行う。これを受けて、DKCTL0,DKCTL1は、インターフェース回路SIFC(00,01,…,n0,n1)(インターフェース信号H2D_IF)を介してストレージモジュール(メモリモジュール)STG0~STGn+4にリードアクセス要求(RREQ)を発行する。その後、DKCTL0,DKCTL1は、STG0~STGn+4から読み出されたデータ(RDATA)をCM0~CM3へ転送し、さらに、HCTL0,HCTL1およびSTIF(H2S_IF)を通じてSRV0~SRVmへ転送する。
 また、ホスト用の制御回路HCTL0,HCTL1は、情報処理装置SRV0~SRVmからのライト要求(WQ)を受け付けた場合、先ず、ライト要求(WQ)に含まれる論理アドレス(LAD)が、キャッシュメモリCM0~CM3にエントリされている論理アドレス(LAD)の中のいずれかと一致するかを判定する。ここで、一致した場合、つまりヒットの場合、HCTL0,HCTL1は、ライト要求(WQ)に含まれるライトデータ(WDATA)をCM0~CM3へ書き込む。一方、不一致の場合、つまりミスヒットの場合、HCTL0,HCTL1は、例えばCM0~CM3の中で最も古く利用された論理アドレス(LAD)に対するライトデータ(WDT)を、いったんランダムアクセスメモリRAM0~RAM3へ転送し、次いで、ライトデータ(WDATA)をCM0~CM3へ書き込む。その後、HCTL0,HCTL1からDKCTL0,DKCTL1に対して通知が行われ、これを受けて、DKCTL0,DKCTL1は、ストレージモジュール(メモリモジュール)STG0~STGn+4にライトアクセス要求(書き込み命令)(WREQ)を発行する。すなわち、当該ライトアクセス要求(WREQ)によって、RAM0~RAM3に転送されたライトデータ(WDT)を、インターフェース回路SIFC(00,01,…,n0,n1)(インターフェース信号H2D_IF)を介してSTG0~STGn+4へ書き込む(ライトバックする)。
 図2は、図1におけるストレージコントローラSTRGCONTの詳細な構成例を示すブロック図である。図2に示すストレージコントローラSTRGCONTでは、図1に示したホスト用の制御回路HCTL0,HCTL1およびストレージモジュール用の制御回路DKCTL0,DKCTL1に関する詳細な構成例が示されている。HCTL0,HCTL1のそれぞれは、キャッシュ制御回路CMCTL、リード制御回路HRDCTL、ライト制御回路HWTCTL、および診断回路HDIAGを備える。
 キャッシュ制御回路CMCTLは、キャッシュメモリCM0~CM3のヒット・ミスヒットの判定や、CM0~CM3のアクセス制御などを行う。リード制御回路HRDCTLは、情報処理装置(ホスト)SRV0~SRVmからのリード要求(RQ)を受け付けた際に、図1で述べたようなリード要求(RQ)に伴う各種処理をCMCTLと共に行う。ライト制御回路HWTCTLは、SRV0~SRVmからのライト要求(WQ)を受け付けた際に、図1で述べたようなライト要求(WQ)に伴う各種処理をCMCTLと共に行う。診断回路HDIAGは、図1で述べた耐障害性の向上のため、自身の各種機能が正常か否かをテストする機能を備える。例えば、制御回路HCTL0内のHDIAGにおいて異常が検出された際、当該HDIAGは制御回路HCTL1に対して通知を行い、これによって正規用のHCTL0が非活性化され、代わりに予備用のHCTL1が活性化される。
 制御回路DKCTL0,DKCTL1のそれぞれは、ライト制御回路WTCTL、リード制御回路RDCTL、データ消去制御回路ERSCTL、ガーベージコレクション制御回路GCCTL、診断回路DIAG、および3個のテーブルMGTBL,STGTBL,GETBLを備えている。DIAGは、HCTL0,HCTL1内の診断回路HDIAGの場合と同様に、自己の内部機能をテストする機能を備え、その結果によってDKCTL0とDKCTL1の活性化・非活性化が切り替えられる。各種テーブルMGTBL,STGTBL,GETBLは、例えばランダムアクセスメモリRAM0~RAM3内の記憶情報が実体となっており、制御回路DKCTL0,DKCTL1は、当該各種テーブルの管理を行う。
 テーブルMGTBLでは、詳細は図4を始めとして以降にて適宜説明するが、各ストレージモジュール(メモリモジュール)毎の各種情報(Wstg,Wh2d,ntW,WAF,eWd,Ret,Esz等)が管理される。Wstgは、各ストレージモジュール(メモリモジュール)STG0~STGn+4が自身の不揮発性メモリNVM0~NVM7へ実際に書き込んだデータサイズを示す。Wh2dは、制御回路DKCTL0,DKCTL1が各ストレージモジュールSTG0~STGn+4に対して既にライトアクセス要求(書き込み命令)(WREQ)を発行したデータサイズを示す。すなわち、データサイズWh2dは、前述したように、キャッシュメモリCM0~CM3のミスヒット時にランダムアクセスメモリRAM0~RAM3へ転送されたライトデータ(WDT)のサイズに等しく、結果的に、情報処理装置SRV0~SRVmからのライト要求(WQ)に含まれるライトデータ(WDATA)のサイズに等しい。
 ntWは、次のライトアクセス要求(書き込み命令)(WREQ)に含まれるライトデータ(WDT)のデータサイズを示す。WAFは、データサイズ(Wh2d)とデータサイズ(Wstg)のライトデータサイズ比率(=Wstg/Wh2d)を示す。eWdは、予想ライトデータサイズ(=Wstg+ntWxWAF)を示す。Retは、各ストレージモジュールSTG0~STGn+4のデータリテンション時間を示す。Eszは、各ストレージモジュールSTG0~STGn+4に含まれる消去状態の物理ブロック数を示す。
 テーブルSTGTBLでは、詳細は図5等で説明するが、論理アドレス(LAD)をストレージモジュール(メモリモジュール)STG0~STGn+4内のどの番号に割り当てたかが管理される。テーブルGETBLでは、詳細は図14等で説明するが、各ストレージモジュールSTG0~STGn+4がガーベージコレクション動作中かデータ消去動作中かといったステータスが管理される。また、詳細は後述するが、ライト制御回路WTCTLは、これらの各テーブルを適宜利用し、STG0~STGn+4に対してライトアクセス要求(書き込み命令)(WREQ)を発行する。同様に、各テーブルを利用して、リード制御回路RDCTLはリードアクセス要求(RREQ)を発行し、データ消去制御回路ERSCTLは消去アクセス要求を発行し、ガーベージコレクション制御回路GCCTLはガーベージコレクション要求を発行する。
 図1および図2のような構成において、各ストレージモジュール(メモリモジュール)STG0~STGn+4に利用されている不揮発性メモリNVM0~NVM7には書き換え回数の制限があり、特定の不揮発性メモリ内の特定のアドレスへ書き込みが集中するとSTG0~STGn+4の寿命が短くなってしまう。一方、各ストレージモジュールSTG0~STGn+4において、ストレージ用の制御回路STCTは、NVM0~NVM7の書き込み回数をあるデータサイズ単位で管理しており、この書き込み回数を平準化するようにNVM0~NVM7に書き込みを行っている。この書き込み回数を平準化するために、制御回路STCTは、例えば、引用文献1等にも記載されているようなスタティックウエアレベリングと呼ばれる方式を用いて、ある不揮発性メモリから他の不揮発性メモリへデータを移動させる場合がある。この場合、不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
 また、NAND型フラッシュメモリに代表される不揮発性メモリは、あるメモリ領域へデータを書き込むためには、予め、そのメモリ領域のデータを消去する必要があり、この消去時の最小データ単位は例えば1Mバイトで、書込み時の最小データ単位は例えば4Kバイトである。つまり、4Kバイトのデータを書くために、1Mバイトの消去済メモリ領域を確保する必要がある。この1Mバイトの消去済メモリ領域を確保するために、制御回路STCTは、ガーベージコレクション動作を行う場合がある。このガーベージコレクション動作の際に、STCTは、例えば、先ず、既に書き込み済の1Mバイトの不揮発性メモリ領域「A」および「B」から、現時点で有効なデータを読みだし、これらのデータを集めて、ランダムアクセスメモリRAMstへ書き込む。次に、不揮発性メモリ領域「A」および「B」を消去する。最後に、RAMstへ書き込まれたデータをまとめて不揮発性メモリ領域「A」へ書き込む。これによって、1Mバイトの不揮発性メモリ領域「B」が消去済メモリ領域となり、この不揮発性メモリ領域「B」へ新たなデータを書き込むことが可能になる。ただし、この場合、ある不揮発正メモリ領域から他の不揮発性メモリ領域へデータの移動が発生するため、不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
 さらに、RAID等に代表されるように、各ストレージモジュールSTG0~STGn+4には、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)と共に、当該ライトデータに対して生成されたパリティデータ等のエラー検出・訂正符号が書き込まれる場合がある。この場合においても、STG0~STGn+4内の不揮発性メモリでは、制御回路DKCTL0,DKCTL1から要求されたライトデータ(WDT)のサイズよりも大きなサイズが書き込まれることになる。
 このように、各ストレージモジュール(メモリモジュール)STG0~STGn+4内において、不揮発性メモリNVM0~NVM7に実際に書き込まれるデータサイズWstgは、制御回路DKCTL0,DKCTL1がSTG0~STGn+4へ要求したライトデータ(WDT)のサイズ(すなわちデータサイズWh2d)より大きくなり得る。この際に、ライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズWh2dに対して実際に書き込まれるデータサイズWstgがどの程度増大するかは、例えばライト要求(WQ)(ライトアクセス要求(WREQ))に伴うアドレスの局所性等に応じて変化する。ここで、当該アドレスは、STG0~STGn+4のいずれかに対して適宜割り当てられるため、このデータサイズWh2dに対してデータサイズWstgがどの程度増大するかは、STG0~STGn+4同士の間で大きく異なる場合がある。
 そこで、詳細は後述するが、ストレージコントローラSTRGCONTは、現在の処理対象であるライトアクセス要求(WREQ)におけるライトデータ量を基に実際に書き込まれるライトデータ量を予測し、この予測ライトデータ量が少ないストレージモジュールを選択し、そこへ当該ライトアクセス要求(WREQ)を発行する機能を備える。言い換えれば、ストレージモジュール間でダイナミックウエアレベリングを行う機能を備える。これによって、各ストレージモジュール内で書き換え回数が平準化されるのみならず、各ストレージモジュール間でも書き換え回数が平準化され、図1のストレージモジュール(メモリモジュール)STG0~STGn+4全体として寿命の向上が図れる。なお、ダイナミックウエアレベリングとは、既に書き込まれたデータを適宜移動することで平準化(ウエアレベリング)を行う所謂スタティックウエアレベリングと異なり、データを書き込む際にその書き込み先を適宜選択することで平準化を行う方式である。
 《ストレージモジュール間ウエアレベリング》
 以下、説明を分かり易くするため、図1において4個のストレージモジュール(メモリモジュール)STG0~STG3を備える場合を例とし、ストレージモジュール用の制御回路DKCTL0が行う書き込み動作について図3~図5を用いて説明する。図3は、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。図4Aおよび図4Bは、図3の補足図であり、ストレージモジュール用の制御回路が持つテーブル(MGTBL)の保持内容の一例を示す図である。図5A、図5B、図5Cおよび図5Dは、図2のストレージモジュール用の制御回路が持つテーブル(STGTBL)の保持内容の一例を示す図である。
 図4Aおよび図4Bには、制御回路DKCTL0とストレージモジュールSTG0~STG3の間で行われる動作と、この動作に伴い、DKCTL0内のテーブルMGTBLの値がどのように遷移するかが示されている。MGTBL内には、データサイズntWと、各ストレージモジュールSTG0~STG3毎の、データサイズWh2d、データサイズWstg、ライトデータサイズ比率WAF(=Wstg/Wh2d)、および予想ライトデータサイズeWd(=Wstg+ntWxWAF)とが保持されている。図2で述べたように、ntWは、現在の処理対象となっているライトアクセス要求(書き込み命令)(WREQ)に含まれるライトデータ(WDT)のデータサイズである。Wh2dは制御回路DKCTL0が所定のストレージモジュールに対して既に発行したライトアクセス要求(WREQ)に伴うライトデータ(WDT)のデータサイズである。Wstgは、各ストレージモジュールSTG0~STG3が、実際に自身の不揮発性メモリに書き込みを行ったデータサイズである。
 データサイズWh2dに関しては、制御回路DKCTL0自身が各ストレージモジュールSTG0~STG3に対して実際に送信しているライトデータ(WDT)のサイズ(ホストからのライト要求(WQ)に含まれるライトデータ(WDATA)のサイズに等しい)であるため、DKCTL0自身によって認識することができる。データサイズWstgに関しては、図1のストレージモジュールSTG内の制御回路STCTが不揮発性メモリNVM0~NVM7に対して実際に書き込みを行ったデータのサイズであるため、STCTによって認識することができ、DKCTL0は、当該データサイズを、STCTから取得することで認識することができる。Wh2d,Wstgの値は、例えばストレージモジュールを初めて使用した時からその寿命が尽きるまで累積的に更新される。ここで、STCTは、例えば、図8で後述するようなガーベージコレクション動作(+ウエアレベリング動作)を行った際や、あるいは、スタティックウエアレベリング動作を行った際などで、DKCTL0からのライトアクセス要求(書き込み命令)(WREQ)とは関係なくWstgの値を増大させていくことになる。
 スタティックウエアレベリング動作は、特に限定しないが、例えば、データが有効な物理アドレスにおける書き込み回数と、データが無効な物理アドレスにおける書き込み回数との間の差分を低減する為のものなどが挙げられる。すなわち、データが有効な物理アドレスは、当該物理アドレスを対象としたライト命令がその後に生じない限り有効であり続け、その結果、当該物理アドレスにおける書き込み回数は増大しないが、データが無効な物理アドレスは、消去されたのちに書き込み先の候補となるため当該物理アドレスにおける書き込み回数は増大していく。その結果、有効な物理アドレスの書き込み回数と、無効な物理アドレスの書き込み回数との間で差分が増大していく場合がある。そこで、スタティックウエアレベリング動作を用いて、例えば、定期的に、有効かつ書き込み回数が少ない物理アドレスのデータを、無効かつ書き込み回数が多い物理アドレスに移動し、当該データ移動元の有効かつ書き込み回数が少ない物理アドレスを無効とし、さらに、当該データの移動先の無効かつ書き込み回数が多い物理アドレスを有効にすれば、全体として書き込み回数を平準化することが可能になる。
 図5A、図5B、図5Cおよび図5Dに示すテーブルSTGTBLには、ライトアクセス要求(書き込み命令)(WREQ)に含まれる論理アドレス(LAD)と、当該LADのデータが格納されているストレージモジュールSTG0~STG3の番号(STG No)と、当該LADのデータが有効か無効かを示す有効情報VLDが格納される。ライトアクセス要求(WREQ)に含まれる論理アドレス(LAD)は、情報処理装置(ホスト)SRV0~SRVmからのライト要求(書き込み命令)(WQ)に含まれる論理アドレスに等しいか、あるいはライト要求(WQ)に含まれる論理アドレスから一義的に定められる。有効情報VLDが“1”であれば、そのLADのデータは有効を意味し、“0”であれば無効を意味する。例えば、図5Aを例とすると、論理アドレスLADの「0」に対応するデータは、有効であり(有効情報VLD=“1”)、ストレージモジュールの番号「0」(すなわちSTG0)に格納されていることを示す。また、論理アドレスLADの「1」に対応するデータは、有効であり(有効情報VLD=“1”)、ストレージモジュールの番号「1」(すなわちSTG1)に格納されていることを示す。
 ここで、図3のフローチャートについて説明する。まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0~STG3は、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図3:Step1、図4A)。Wstg0(40)を例として、ここでは、括弧内の数字「40」が必要な情報(ここではデータサイズ)を表している。
 続いて、制御回路DKCTL0は、これらデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する(図3:Step2、図4A)。ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図3:Step3、図4A)。図4Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
 次に、制御回路DKCTL0内のライト制御回路WTCTLは、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図3:Step4、図4A)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step4を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step6へ進む(図3:Step5)。
 Step6において、制御回路DKCTL0内のライト制御回路WTCTLは、Step4で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図4A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図3:Step7、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図3:Step7、図4B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図4BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
 その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へデータサイズWstg(Wstg2(30))を通達し(図3:Step8、図4B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、ガーベージコレクション動作やスタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。
 続いて、制御回路DKCTL0のライト制御回路WTCTLは、通達されたデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図3:Step2、図4B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図3:Step3、図4B)。図4Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
 次に、制御回路DKCTL0内のライト制御回路WTCTLは、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図3:Step4、図4B)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step4を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step6へ進む(図3:Step5)。
 Step6において、制御回路DKCTL0内のライト制御回路WTCTLは、Step4で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図4B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図3:Step7、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図3:Step7)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図示は省略するが、図4BのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
 そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へデータサイズWstgを通達し(図3:Step8)、Step2へ進み、以降同様の処理が繰り返される。なお、Step6において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0~NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
 ここで、図3のフローチャートでは、Step1(例えば電源投入直後)において、制御回路DKCTL0がストレージモジュールSTG0~STG3に対してデータサイズWstg,Wh2dの通達要求を行うことでWstg,Wh2dの値を取得し、以降は、当該通達要求に依らずにWstg,Wh2dの値が随時更新されるような例を示した。すなわち、例えば、Wh2dに関してはDKCTL0自身がその値を随時把握しながら更新し(Step7)、その一方で、DKCTL0は、例えば電源遮断時等の際に、Wh2dの値をSTG0~STG3に退避し、次の電源投入時にそれを読み出す(Step1)ような場合を想定した。また、例えば、Wstgに関しては、STG0~STG3がその値を随時更新すると共に、ライトアクセス要求(WREQ)に伴う書き込み動作の完了時に自動的にWstgの値をDKCTL0に向けて送信し(Step8)、DKCTL0は、この送信された値によってWstgの値を把握する(Step2)ような場合を想定した。この場合、実際には、STG0~STG3は、内部のバッファにより複数のライトアクセス要求(WREQ)をストックすることができ、これに伴い例えばWstgの値を連続して送信するようなことがあるため、ここではStep5を設けている。
 ただし、勿論、このようなフローチャートに限定されるものではなく、適宜変更することが可能である。例えば、制御回路DKCTL0はライトアクセス要求(WREQ)を発行する直前にSTG0~STG3に対してWstgの通達要求を出し、STG0~STG3は当該通達要求を受けた際のみでWstgの値を返信し、これを受けて、DKCTL0はWREQを発行するストレージモジュールを選択するようなフローとすることも可能である。また、例えば、STG0~STG3は、ライトアクセス要求(WREQ)に伴う書き込みの完了時に限らず、ガーベージコレクション動作等に伴う書き込みの完了時等でもWstgの値をDKCTL0に向けて送信し(すなわちWstgの値を更新する毎に送信し)、これを受けてDKCTL0がテーブルMGTBLの値を逐次更新するようなフローとすることも可能である。いずれにしても、DKCTL0が時系列的に変化するWstgおよびWh2dの値を把握し、この情報(すなわちWAF(=Wstg/Wh2d))に基づいてライトアクセス要求(WREQ)を発行するストレージモジュールを選択するフローであればよく、望ましくは、より最新の実状を反映したWAFに基づいて選択するフローであればよい。
 《ストレージモジュール(メモリモジュール)の構成》
 図6は、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。当該ストレージモジュールSTGは、図1におけるストレージモジュールSTG0~STGn+4として利用される。図6に示すストレージモジュールSTGは、不揮発性メモリNVM0~NVM7と、ランダムアクセスメモリRAMstと、NVM0~NVM7およびRAMstを制御するストレージ用の制御回路STCT0と、バッテリバックアップ装置BBUを備える。NVM0~NVM7は、例えば同じ構成および性能を備えている。RAMstは、特に限定しないが、例えばDRAM等である。BBUは、内部に大きな容量等を備え、例えば、予期せぬ電源遮断時等において、RAMst内のデータをNVM0~NVM7に退避するための電源を一定期間確保するための装置である。
 電源投入直後に、ストレージモジュールSTGは、内部の不揮発性メモリNVM0~NVM7と、ランダムアクセスメモリRAMstと、制御回路STCT0の初期化の動作(所謂パワーオンリセット)を行う。さらに、STGは、制御回路DKCTL0からのリセット信号を受けた際にも、内部のNVM0~NVM7、RAMst、およびSTCT0の初期化を行う。STCT0は、インターフェース回路HOST_IFと、バッファBUF0~BUF3と、調停回路ARBと、情報処理回路MNGERと、メモリ制御回路RAMC、NVCT0~NVCT7を備える。メモリ制御回路RAMCは、ランダムアクセスメモリRAMstを直接制御し、メモリ制御回路NVCT0~NVCT7は、不揮発性メモリNVM0~NVM7をそれぞれ直接制御する。
 ランダムアクセスメモリRAMstには、アドレス変換テーブル(LPTBL)、消去回数テーブル(ERSTBL)、物理ブロックテーブル(PBKTBL)、および物理アドレステーブル(PADTBL)と、その他の各種情報が保持される。アドレス変換テーブル(LPTBL)では、論理アドレス(LAD)とNVM0~NVM7の物理アドレス(PAD)との対応関係が示される。消去回数テーブル(ERSTBL)では、物理ブロック毎の消去回数が示される。物理ブロックテーブル(PBKTBL)では、物理ブロックが、消去状態であるか、一部書き込み済であるか、全部書き込み済であるかといった各物理ブロックの状態や、各物理ブロック毎の無効な物理アドレスの総数(INVP)が示される。物理アドレステーブル(PADTBL)では、各物理アドレスのデータが有効であるか無効であるか、又は各物理アドレスが消去状態であるかが示される。ここでは、物理ブロックとは、消去の単位領域を表し、各物理ブロックは、書き込みの単位領域となる複数の物理アドレスによって構成される。また、ランダムアクセスメモリRAMst内のその他の各種情報の中には、ストレージモジュールSTG内の消去状態の物理ブロック数(Esz)や、前述したデータサイズWstg,Wh2d等が含まれる。
 《ストレージモジュール内のウエアレベリング》
 図7は、図1のストレージモジュール内で行われるウエアレベリング方法の一例を示すフロー図である。図7には、図1の制御回路DKCTL0からストレージモジュールSTG0~STGn+4へライトアクセス要求(書き込み命令)(WREQ)が発行された際に、STG0~STGn+4内で行われる書き込み処理手順の一例と、当該書き込みの際に行われるウエアレベリング(すなわちダイナミックウエアレベリング)方法の一例が示されている。また、図7のフローは、主に図6の情報処理回路MNGERによって実行される。MNGERは、特に限定しないが512バイトのメインデータと16バイトの冗長データを単位として1個の物理アドレス(PAD)を割り当て、不揮発性メモリNVM0~NVM7の当該物理アドレス(PAD)へ書き込みを行っている。
 図22は、図7のフローを概略的に説明する補足図である。図7のフローを用いると、概略的には図22に示すような動作が行われる。図22の例では、物理ブロックPBK[0]が3個の物理アドレスPAD[0]~PAD[2]で構成され、同様に、物理ブロックPBK[1]およびPBK[2]が、それぞれ3個の物理アドレスPAD[3]~PAD[5]およびPAD[6]~PAD[8]で構成されるものとする。PBK[0],PBK[1],PBK[2]の消去回数は、それぞれ、10,9,8とし、PBK[1],PBK[2]は、消去状態(E)であるものとする。また、PAD[0],PAD[1],PAD[2]には、それぞれ、論理アドレスLAD[0],LAD[1],LAD[2]のライトデータWDT0,WDT1,WDT2が書き込まれ、PAD[0],PAD[1],PAD[2](WDT0,WDT1,WDT2)は全て有効“1”であるものとする。
 このような状態(t=1)から、例えば、t=2において、論理アドレスLAD[0]およびライトデータWDT3を含んだライトアクセス要求(書き込み命令)(WREQ[3])が入力されたものとする。この場合、情報処理回路MNGERは、まず、LAD[0]に対応する物理アドレスPAD[0]を有効“1”から無効“0”に変更し、当該LAD[0]のWDT3を書き込むための新たな物理アドレスを決定する。この際には、消去状態かあるいは一部書き込みが行われている物理ブロックを対象として、その中でも消去回数値が最も小さい物理ブロック(ここではPBK[2])を選択する。そして、当該物理ブロック(PBK[2])内で消去状態となっている最初の物理アドレス(ここではPAD[6])に対してWDT3の書き込みを行い、当該PAD[6]を有効“1”とする。その後、例えば、t=3において、LAD[0]およびライトデータWDT4を含んだライトアクセス要求(WREQ[4])が入力された場合、MNGERは、同様にして、PAD[6]を無効“0”とし、一部書き込みが行われていると共に消去回数値が最も小さい物理ブロック(ここではPBK[2])を選択する。そして、当該物理ブロック(PBK[2])内で消去状態となっている最初の物理アドレス(ここではPAD[7])に対してWDT4の書き込みを行い、当該PAD[7]を有効“1”とする。
 このような動作は図7のフローを用いて行われる。図7では、まず、制御回路DKCTL0から論理アドレス値(例えばLAD[0])、データ書き込み命令(WRT)、セクタカウント値(例えばSEC=1)、および512バイトのライトデータ(例えばWDT3)が含まれるライトアクセス要求(書き込み命令)(WREQ[3])が制御回路STCT0へ入力される。図6の制御回路HOST_IFは、ライトアクセス要求(WREQ[3])に埋め込まれているクロック情報を取り出し、シリアルデータ化されたライトアクセス要求(WREQ[3])をパラレルデータに変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step1)。
 次に、情報処理回路MNGERは、論理アドレス値(LAD[0])、データ書き込み命令(WRT)及びセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAMst内のアドレス変換テーブル(LPTBL)を検索する。これにより、情報処理回路MNGERは、論理アドレス値(LAD[0])の番地に格納されている現在の物理アドレス値(例えばPAD[0])と、この物理アドレス値(PAD[0])に対応した有効フラグPVLDの値を読み出す(Step2)。さらに、この有効フラグPVLD値が“1(有効)”であれば、これを“0(無効)”とし、アドレス変換テーブル(LPTBL)および物理アドレステーブル(PADTBL)を更新する。(Step3)。
 続いて、情報処理回路MNGERは、ランダムアクセスメモリRAMst内の物理ブロックテーブル(PBKTBL)から消去状態又は一部書き込み済の物理ブロックを抽出し、更に、当該抽出した物理ブロックの中で消去回数値が最も小さい物理ブロック(例えばPBK[2])をRAMst内の消去回数テーブル(ERSTBL)を用いて選択する。そして、MNGERは、当該選択された物理ブロックの中で、いまだデータが書き込まれていない(消去状態の)物理アドレスの中で、最も小さな物理アドレス(例えばPAD[6])を、物理アドレステーブル(PADTBL)を用いて選択する(Step4)。
 次に、情報処理回路MNGERは、512バイトのライトデータ(WDT3)を物理アドレス(PAD[6])へ書き込む(Step5)。続いて、MNGERは、アドレス変換テーブル(LPTBL)および物理アドレステーブル(PADTBL)を更新する(Step6)。更に、MNGERは、データサイズWstg(およびWh2d)を再計算し、ランダムアクセスメモリRAMstへ格納する(Step7)。最後に、MNGERは、最新のデータサイズWstgの値を制御回路HOST_IFおよびインターフェース信号H2D_IFを通じて、制御回路DKCTL0へ送信する(Step8)。
 以上のように、ストレージモジュール(メモリモジュール)STG内部においては、消去回数値の小さな物理アドレスから順にデータの書き込みが行われることで、平準化がなされる。したがって、図3等で述べたようなストレージモジュールSTG間での平準化と併用することで、図1のストレージシステム(記憶装置システム)STRGSYS全体としての更なる平準化が実現可能となる。
 《ストレージモジュール内のガーベージコレクション(+ウエアレベリング)》
 図8は、図1のストレージモジュール内で行われるガーベージコレクションおよびウエアレベリング方法の一例を示すフロー図である。図23は、図8のフローを概略的に説明する補足図である。図8のフローは、主に図6の情報処理回路MNGERによって実行される。不揮発性メモリNVM0~NVM7へデータを書き込み続けると、消去状態の物理アドレス数(物理ブロック数)が減少してしまう。この消去状態の物理アドレス数(物理ブロック数)が0になると、ストレージモジュールSTGはこれ以上書き込みを行えなくなってしまう。そこで、消去状態の物理アドレス数(物理ブロック数)を増やすためのガーベージコレクション動作が必要とされる。そして、このガーベージコレクション動作の際には、併せてウエアレベリング動作を行うことが望ましい。そこで、図8のフローを実行することが有益となる。
 図8において、図6の情報処理回路MNGERは、まず、ランダムアクセスメモリRAMst内に格納される消去状態の物理ブロック数Eszを読み出す(Step1)。次に、予め定めた消去状態の物理ブロック数の閾値DERCthとEszとを比較し(Step2)、Esz≧DERCthの場合はStep1へ進み、Esz<DERCthの場合はStep3へ進む。Step3では、MNGERは、RAMst内に格納されている消去回数テーブル(ERSTBL)と、物理ブロックテーブル(PBKTBL)と、物理アドレステーブル(PADTBL)を読み出す。ERSTBLにより各物理ブロック毎の消去回数が判明し、PBKTBLにより各物理ブロックの状態(消去状態、一部書き込み済み、全部書き込み済み)や各物理ブロック毎の無効な物理アドレス数(INVP)が判明し、PADTBLにより各物理アドレスが有効か無効かが判明する。
 次に、情報処理回路MNGERは、全部書き込み済の物理ブロックを対象に、消去回数値の小さい順に、無効な物理アドレス数(INVP)の総和が物理ブロックのサイズ以上になるまで、全部書き込み済の物理ブロックを順次選択する(Step4)。ここで、例えば、図23のような場合を想定する。図23の例では、物理ブロックPBK[0]が3個の物理アドレスPAD[0]~PAD[2]で構成され、同様に、物理ブロックPBK[1]、PBK[2]およびPBK[3]が、それぞれ3個の物理アドレスPAD[3]~PAD[5]、PAD[6]~PAD[8]およびPAD[9]~PAD[11]で構成されるものとする。PBK[0],PBK[1],PBK[2],PBK[3]の消去回数は、それぞれ、7,8,9,10とし、PBK[3]は、消去状態(E)であるものとする。また、PAD[0]~PAD[8]には、それぞれ、ライトデータWDT0~WDT8が書き込まれ、この内のPAD[0],PAD[3],PAD[6](WDT0,WDT3,WDT6)が無効“0”であるものとする。
 このような状態(t=1)において、例えば、消去状態の物理ブロック数が2以上必要であった場合(図8:Step2)、ガーベージコレクション動作が実行される。図23の例では、図8のStep4により、物理ブロックPBK[0],PBK[1],PBK[2]が選択されることになる。続いて、図8のStep5において、情報処理回路MNGERは、当該選択された物理ブロック内の有効な物理アドレスのデータを読み出し、一旦ランダムアクセスメモリRAMstへ格納する。図23の例では、ライトデータWDT1,WDT2,WDT4,WDT5,WDT7,WDT8がRAMstへ格納される。その後、MNGERは、当該選択された物理ブロックを消去する(図8:Step6、図23のt=2)。
 その後、図8のStep7において、情報処理回路MNGERは、ランダムアクセスメモリRAMstへ一旦格納していたライトデータを不揮発性メモリNVM0~NVM7内の消去状態の物理ブロックに書き戻す。これによってガーベージコレクション動作が実現される。更に、書き戻しの際には、消去状態の物理ブロックの中で、消去回数値の最も小さな物理ブロックから順に選択して書き戻しが行われる。これによってガーベージコレクション動作と並行してウエアレベリング動作が実現される。図23の例では、t=3に示すように、消去回数値が小さい順に2個の物理ブロックPBK[0],PBK[1]が選択され、当該物理ブロックにRAMst内のライトデータWDT1,WDT2,WDT4,WDT5,WDT7,WDT8が書き戻される。その結果、物理ブロックPBK[3]に加えて更に1個の消去状態の物理ブロック(ここではPBK[2])が生成されることになる。
 次に、図8のStep8において、情報処理回路MNGERは、ランダムアクセスメモリRAMst内のアドレス変換テーブル(LPTBL)、消去回数テーブル(ERSTBL)、物理ブロックテーブル(PBKTBL)、および物理アドレステーブル(PADTBL)と、消去状態の物理ブロック数Eszを更新する。更に、ストレージモジュールSTGが実際に不揮発性メモリNVM0~NVM7へライトしたデータサイズとなるRAMst内のデータサイズWstgを更新する。最後に、MNGERは、最新のデータサイズWstgをインターフェース回路HOST_IFおよびインターフェース信号H2D_IFを通じて、制御回路DKCTL0へ転送する(Step9)。
 以上のようなガーベージコレクション動作およびウエアレベリング動作(言うなればスタティックウエアレベリング動作)を行うことで図7に示したようなダイナミックウエアレベリング動作と共にストレージモジュール(メモリモジュール)STG内での消去回数の平準化が実現可能となる。ただし、これによってストレージモジュールSTG間で消去回数のばらつきが生じる場合が有るが、これは、図3等に示したような動作によって平準化することが可能となり、その結果、図1のストレージシステム(記憶装置システム)STRGSYS全体としての更なる平準化が実現可能となる。
 《読み出し方法》
 前述したように、ストレージコントローラSTRGCONT内のホスト用の制御回路HCTL0は、情報処理装置(ホスト)SRV0~SRVmからのリード要求(RQ)を受け付け、それに対応するデータ(RDATA)がキャッシュメモリCM0~CM3へ格納されていない場合に、ストレージモジュール用の制御回路DKCTL0へ通達を行う。図9は、図1におけるストレージモジュール用の制御回路およびストレージ用の制御回路が行う読み出し動作例を示すフロー図であり、DKCTL0がHCTL0からの通達に応じてリード要求(RQ)を受け付けた以降の動作例を示すものである。
 まず、ストレージコントローラSTRGCONT内の制御回路DKCTL0は、制御回路HCTL0を介して、論理アドレス値(例えばLAD=535)、データ読み出し命令(RD)、セクタカウント値(SEC=1)が含まれるリードリクエスト(RQ)を受け付ける。これを受けて、DKCTL0内のリード制御回路RDCTLは、テーブルSTGTBLより論理アドレス値(LAD=535)に対応するストレージモジュール番号(STG No)と、有効フラグVLDを読み出す(Step1)。図5Bの例では、ストレージモジュール番号「3」とVLD=“1”が読み出される。
 次に、リード制御回路RDCTLは、読み出した有効フラグVLDが“1”であるかどうかをチェックする(Step2)。ここで、VLDが“0”の場合、RDCTLは、当該論理アドレス値(LAD=535)にはストレージモジュールSTGが割り当てられていないことを認識する。この場合、ストレージモジュールSTGからデータを読み出すことができないため、RDCTLは、エラーが発生したことを制御回路HCTL0へ伝える(Step10)。一方、VLDが“1”の場合、RDCTLは、当該論理アドレス値(LAD=535)にはストレージモジュールSTG3が対応していると判断し、STG3へリードアクセス要求(RREQ)を発行する(Step3)。
 続いて、ストレージモジュールSTG3内のインターフェース回路HOST_IFは、制御回路DKCTL0から発行されたリードアクセス要求(RREQ)に埋め込まれているクロック情報を取り出し、シリアルデータ化されたRREQをパラレルデータへ変換し、バッファBUF0および情報処理回路MNGERへ転送する(Step4)。情報処理回路MNGERは、当該リードアクセス要求(RREQ)に含まれる論理アドレス値(LAD=535)、データ読み出し命令(RD)およびセクタカウント値(SEC=1)を解読し、ランダムアクセスメモリRAMstへ保存されているアドレス変換テーブルLPTBLを参照して、各種情報を読み出す。具体的には、LPTBLにおいて、論理アドレスLADの535番地に格納されている物理アドレス値(例えばPAD=33)と、この物理アドレスPADに対応した有効フラグPVLDを読み出す(Step5)。次に、読み出した有効フラグPVLDが“1”であるかどうかをチェックする(Step6)。
 ここで、有効フラグPVLDが“0”の場合、情報処理回路MNGERは、当該論理アドレス値(LAD=535)には物理アドレスPADが割り当てられていないことを認識する。この場合、不揮発性メモリNVM0~NVM7からデータを読み出すことができないため、MNGERは、エラーが発生したことをインターフェース回路HOST_IFを通じて制御回路DKCTL0内のリード制御回路RDCTLへ伝える(Step11)。一方、有効フラグPVLDが“1”の場合、MNGERは、当該論理アドレス値(LAD=535)には物理アドレス値(PAD=33)が対応していると判断する。
 次いで、情報処理回路MNGERは、論理アドレス値(LAD=535)に対応している物理アドレス値(PAD=33)を、不揮発性メモリNVM0~NVM7のチップアドレス(CHIPA)、バンクアドレス(BK)、ロウアドレス(ROW)、およびカラムアドレス(COL)へ変換する。そして、MNGERは、当該変換後のアドレスを、調停回路ARBおよびメモリ制御回路NVCT0~NVCT7を通じて不揮発性メモリNVM0~NVM7へ入力し、NVM0~NVM7内に格納されたデータ(RDATA)が読み出す(Step7)。
 ここでは、読み出されたデータ(RDATA)には、メインデータ(DArea)と冗長データ(RArea)が含まれ、さらに冗長データ(RArea)にはECCコード(ECC)が含まれている。そこで、情報処理回路MNGERは、ECCコード(ECC)を利用して、メインデータ(DArea)にエラーがあるかをチェックし、エラーがあれば訂正を行い、インターフェース回路HOST_IFを通じて、データ(RDATA)を制御回路DKCTL0へ送信する(Step8)。DKCTL0は、送信されたデータ(RDATA)をキャッシュメモリCM0~CM3へ転送し、さらに、制御回路HCTL0およびインターフェース信号H2S_IFを通じて情報処理装置SRV0~SRVmへ送信する(Step9)。
 以上のように、本実施の形態1の記憶装置システムを用いることで、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。
 (実施の形態2)
 本実施の形態2では、実施の形態1の図3、図4Aおよび図4B等で述べたストレージモジュール間ウエアレベリング方法の変形例として、前述した予想ライトデータサイズeWdに加えて更にデータリテンション時間Retを利用した方法について説明する。
 《データリテンション時間の概要》
 不揮発性メモリ(特にフラッシュメモリのように破壊書き込み方式のメモリ)では、消去回数(または書き込み回数)が増加するほどデータリテンション時間(すなわち書き込まれたデータをどの程度の期間に渡って正しく保持できるか)が低下していく場合がある。データリテンション時間は、特に限定しないが、例えば、書き込み回数が少ない場合には10年等である。このデータリテンション時間が消去回数(または書き込み回数)にどの程度依存するかは、ストレージモジュールへどのような不揮発性メモリを利用するかによって変化する。例えば、不揮発性メモリとしてフラッシュメモリを用いるかあるいは相変化メモリを用いるかや、フラッシュメモリを用いる場合でもどのようなメモリセル構造を用いるかなどによって異なり得る。
 図20Aは、本発明の実施の形態2による記憶装置システムにおいて、ストレージモジュールのデータ保持特性の一例を示す説明図である。図20Aには、物理ブロックの消去回数(あるいは書き込み回数)(nERS)とデータ保持時間(データリテンション時間)Retの依存関係(関数)が示されている。図20Aにおいて、RetSTG0~RetSTG3は、それぞれ、ストレージモジュールSTG0~STG3における依存関係(関数)を表している。
 ストレージモジュール(メモリモジュール)STG0~STG3のそれぞれは、自身の消去回数(あるいは書き込み回数)とデータ保持時間の依存関係(関数)を数式として不揮発性メモリNVM0~NVM7に予め保有しており、STG0~STG3の電源投入直後に、その数式をランダムアクセスメモリRAMstへ転送する。ストレージ用の制御回路STCT内の情報処理回路MNGERは、NVM0~NVM7内の各物理ブロックにおける消去回数の最大値を求める。そして、MNGERは、この最大値が変化する毎に、数式をRAMstから読み出し、当該消去回数の最大値(nERS)を引数としてデータ保持時間(データリテンション時間)Retを計算し、それをRAMstへ格納する。さらに、STG0~STG3のそれぞれは、必要に応じて、計算したデータリテンション時間RetをストレージコントローラSTRGCONTへ転送する。
 図20Bは、図20Aのデータ保持特性をテーブル上で規定した一例を示す図である。図20Aでは予め依存関係(関数)を数式で規定することでデータリテンション時間Retの算出を行ったが、その代わりに、当該数式を離散的に表す図20BのようなテーブルRetTBLを予め規定することでデータリテンション時間Retの算出を行うことも可能である。図20Bには、1つのストレージモジュールSTGが保有しているテーブルRetTBLが示されており、当該RetTBLには、物理ブロックの消去回数(あるいは書き込み回数)(nERS)とデータリテンション時間Retの依存関係(関数)が規定されている。
 ストレージモジュールSTG0~STG3のそれぞれは、自身の特性に対応するテーブルRetTBLを不揮発性メモリNVM0~NVM7に予め保有しており、STG0~STG3の電源投入直後に、当該テーブルRetTBLをランダムアクセスメモリRAMstへ転送する。ストレージ用の制御回路STCT内の情報処理回路MNGERは、NVM0~NVM7内の各物理ブロックにおける消去回数の最大値を求める。そして、MNGERは、この最大値が変化する毎に、テーブルRetTBLを検索し、データ保持時間(データリテンション時間)Retを取得する。さらに、STG0~STG3のそれぞれは、必要に応じて、取得したデータリテンション時間RetをストレージコントローラSTRGCONTへ転送する。
 図20Aに示すように、ストレージモジュールのデータリテンション時間Retは、ストレージモジュール毎に異なり、更に、消去回数(あるいは書き込み回数)(nERS)が増大する毎に所定の依存関係(関数)に基づいて減少していく。データリテンション時間Retは、対応するストレージモジュールの残存寿命を表しており、その時間が所定の値より小さくなると、当該ストレージモジュールの寿命は尽きることになる。したがって、仮に、実施の形態1の方式を用いてストレージモジュール間で消去回数(あるいは書き込み回数)の平準化を行ったとしても、図20Aから判るように、データリテンション時間Retの観点ではストレージモジュール間でばらつきが生じる場合が有る。その結果、記憶装置システム全体としての寿命が低下する恐れがある。
 そこで、例えば、データリテンション時間(残存寿命)Retのしきい値を設け、当該しきい値を適宜制御すると共に、各ストレージモジュールのデータリテンション時間Retが当該しきい値以上を常に保てるような状態で、実施の形態1で述べたようなストレージモジュール間での消去回数の平準化を行えばよい。例えば、図20Aにおいて、ストレージモジュールSTG0とSTG3の消去回数(nERS)が同じであったとして、この状態でSTG3のデータリテンション時間Retがしきい値に達したような場合、STG3に対しては当分書き込み・消去を行わず、STG0に対して書き込み・消去を行えばよい。
 《ストレージモジュール間ウエアレベリング(変形例)》
 以下に、特に限定しないが、4個のストレージモジュールSTG0~STG3を備える場合を例として、制御回路DKCTL0が実行する書き込み動作について図10、図11に加えて図5A、図5Bを用いて説明する。図10は、本発明の実施の形態2による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作の一例を示すフローチャートである。図11Aおよび図11Bは、図10の補足図であり、ストレージモジュール用の制御回路が持つテーブルMGTBLの保持内容の一例を示す図である。図11Aおよび図11Bに示すテーブルMGTBLには、図4等に示したデータサイズntWと、各ストレージモジュールSTG0~STG3毎のデータサイズWh2d,Wstg、ライトデータサイズ比率WAF、および予想ライトデータサイズeWdに加えて、各STG0~STG3毎のデータリテンション時間Retが保持されている。
 まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へデータリテンション時間RetとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0~STG3は、データリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(9)、Ret3(7))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図10:Step1、図11A)。
 続いて、制御回路DKCTL0は、これらのデータリテンション時間RetとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する(図10:Step2、図11A)。ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図10:Step3、図11A)。図11Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
 次に、ライト制御回路WTCTLは、ストレージシステム(記憶装置システム)STRGSYSの寿命情報(dLife(ここでは4.5))と、各ストレージモジュールSTG0~STG3のデータリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(9)、Ret3(7))とを比較する。そして、WTCTLは、ストレージシステムの寿命情報(dLife)以上のデータリテンション時間(残存寿命)Retを持つストレージモジュールを選択する(図10:Step4、図11A)。
 続いて、ライト制御回路WTCTLは、Step4で選択されたストレージモジュールの中から、更に、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図10:Step5、図11A)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step5を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step7へ進む(図10:Step6)。
 Step7において、ライト制御回路WTCTLは、Step5で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図11A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図10:Step8、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図10:Step8、図11B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図11BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
 その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へデータリテンション時間Ret(8.9)とデータサイズWstg(Wstg2(30))を通達し(図10:Step9、図11B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、ガーベージコレクション動作やスタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、データリテンション時間Ret(8.9)は、図20Aおよび図20Bで述べたように、情報処理回路MNGERによって算出され、ここでは、当該ガーベージコレクション動作等に伴い図11Aの「9」から図11Bの「8.9」に減っている。
 続いて、ライト制御回路WTCTLは、通達されたデータリテンション時間Ret(8.9)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図10:Step2、図11B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図10:Step3、図11B)。図11Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
 次に、ライト制御回路WTCTLは、ストレージシステムの寿命情報dLife(=4.5)と、各ストレージモジュールSTG0~STG3のデータリテンション時間Ret(Ret0(8)、Ret1(6)、Ret2(8.9)、Ret3(7))を比較する。そして、WTCTLは、ストレージシステムの寿命情報dLife(4.5)以上のデータリテンション時間Retを持つストレージモジュールを選択する(図10:Step4、図11B)。
 なお、ここでは、寿命情報(残存寿命のしきい値)dLifeは、変化していないが、実際には適宜可変制御される。特に限定はしないが、ライト制御回路WTCTLは、例えば、ストレージシステムの仕様に基づき、当該システムの使用期間の増大(逆に言えば残存寿命の減少)を考慮し、この残存寿命を反映して経時的に減少していく寿命情報(残存寿命のしきい値)dLifeを設定することが可能である。この場合、ストレージシステムにおいて、使用期間に応じて最低限必要とされる残存寿命を確保でき、信頼性の向上や長寿命化等が図れる。また、WTCTLは、例えば、大半のストレージモジュールのデータリテンション時間Retが寿命情報(残存寿命のしきい値)dLifeに達する毎に、その値を段階的に減少させていくようにdLifeを設定することも可能である。この場合、ストレージシステム間でデータリテンション時間Retの平準化を行うことが可能になり、信頼性の向上や長寿命化等が図れる。
 続いて、ライト制御回路WTCTLは、Step4で選択されたストレージモジュールの中から、更に、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図10:Step5、図11B)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step5を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step7へ進む(図10:Step6)。
 Step7において、制御回路DKCTL0内のライト制御回路WTCTLは、Step5で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図11B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図10:Step8、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図10:Step8)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図示は省略するが、図11BのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
 そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へデータサイズWstgを通達し(図10:Step9)、Step2へ進み、以降同様の処理が繰り返される。なお、Step7において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0~NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
 以上のように、本実施の形態2の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、データリテンション時間(残存寿命)の管理により、更なる信頼性の向上や長寿命化等が実現可能になる。
 (実施の形態3)
 本実施の形態3では、ストレージモジュール用の制御回路DKCTL0が、実施の形態1の図3、図4Aおよび図4B等で述べたストレージモジュール間ウエアレベリングの実行に加えて、ガーベージコレクションの管理を行う場合について説明する。
 《ストレージモジュール間ウエアレベリング+ガーベージコレクション管理》
 以下に、特に限定しないが、4個のストレージモジュールSTG0~STG3を備える場合を例とし、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、ガーベージコレクション制御回路GCCTLが実行するガーベージコレクションの要求動作について、図12~図14に加えて図5A、図5Bを用いて説明する。図12は、本発明の実施の形態3による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。図13A、図13Bおよび図13Cは、図12の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。図14A、図14Bおよび図14Cは、図12の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルGETBLの保持内容の一例を示す図である。
 図13A、図13Bおよび図13Cに示すテーブルMGTBLには、図4等に示したデータサイズntWと、各ストレージモジュールSTG0~STG3毎のデータサイズWh2d,Wstg、ライトデータサイズ比率WAF、および予想ライトデータサイズeWdに加えて、各STG0~STG3毎の消去状態の物理ブロック数Eszが保持されている。図14A、図14Bおよび図14Cに示すテーブルGETBLには、各番号(STG No)を持つストレージモジュールSTG0~STG3,…毎の、ガーベージコレクション実行状態GCvと消去実行状態ERSvが保持されている。GCvは、“1”の場合にガーベージコレクション動作を実行中であることを意味し、“0”の場合に実行中でないことを意味する。ERSvは、“1”の場合に消去動作を実行中であることを意味し、“0”の場合に実行中でないことを意味する。
 図12において、まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0~STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する。
 さらに、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0~STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図12:Step1、図13A)。
 続いて、制御回路DKCTL0は、これらの消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、これらのガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図12:Step2、図13A、図14A)。
 ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図12:Step3、図13A)。図13Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
 次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0~STG4をガーベージコレクション対象のストレージモジュールとして選択する(図12:Step4、図13A)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(ここでは91)と、Step4にて選択されたストレージモジュールSTG0~STG3毎の消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))を比較する。そして、GCCTLは、消去状態の物理ブロック数の閾値ESZth(=91)より小さな物理ブロック数Eszを持つストレージモジュール(ここではSTG0)をガーベージコレクション対象のストレージモジュールとして選択する。更に、消去状態の物理ブロック数の閾値ESZth(=91)以上の物理ブロック数Eszを持つストレージモジュールSTG1~STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図12:Step5、図13A)。
 続いて、ガーベージコレクション制御回路GCCTLは、Step5でガーベージコレクション対象として選択されたストレージモジュールSTG0へガーベージコレクション要求(GCrq)を発行し、テーブルGETBLを更新する。つまり、図14Bに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“1”となり、これによってストレージモジュールSTG0がガーベージコレクション動作の実行中であることが示される(図12:Step11、図13A、図14B)。
 ここで、ガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0は、図8のStep3~Step8の処理を用いてガーベージコレクションを実行する。すなわち、図8においては、Step1およびStep2の処理により、ガーベージコレクション動作を実行するか否かをストレージモジュール自身が判断していたが、図12のフローでは、ストレージモジュール自身が判断する代わりにその上位に位置する制御回路DKCTL0内のガーベージコレクション制御回路GCCTLが判断している。これによって、DKCTL0は、ガーベージコレクション動作を実行中でないストレージモジュールを対象として、ライトアクセス要求(WREQ)やリードアクセス要求(RREQ)等を発行できるため、書き込み動作や読み出し動作等の効率を高めることが可能になる。
 続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図12:Step6、図13A)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step6を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step8へ進む(図12:Step7)。
 Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図13A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図12:Step9、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図13B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図13BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
 その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達し(図12:Step10、図13B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、スタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、STG2において、ライトアクセス要求(書き込み命令)(WREQ[1])の書き込みに伴い図13Aにおける消去状態の物理ブロック数Esz(=140)から図13Bにおける消去状態の物理ブロック数Esz(=139)に減少している。
 続いて、ライト制御回路WTCTLは、通達された消去状態の物理ブロック数Esz(=139)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図12:Step2、図13B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図12:Step3、図13B)。図13Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
 次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14B)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG1~STG3をガーベージコレクション対象のストレージモジュールとして選択する(図12:Step4、図13B)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(=91)と、Step4にて選択されたストレージモジュールSTG1~STG3毎の消去状態の物理ブロック数Esz(Esz1(100)、Esz2(140)、Esz3(120))を比較する。ここでは、消去状態の物理ブロック数の閾値ESZth(=91)よりも小さな物理ブロック数Eszを持つストレージモジュールは存在しない。そこで、GCCTLは、ストレージモジュールSTG1~STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図12:Step5、図13B)。
 続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図12:Step6、図13B)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step6を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step8へ進む(図12:Step7)。
 Step8において、制御回路DKCTL0内のライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図13B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図12:Step9、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図13C)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図13CのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
 そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))およびデータサイズWstg(Wstg3(40))を通達し(図12:Step10)、Step2へ進む。なお、Step8において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0~NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
 ここで、前述したように、Step11でガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0が、ストレージモジュールSTG3によるライトデータ(WDT[2])の書き込み動作の完了後に、ガーベージコレクション動作を完了した場合について説明する。ストレージモジュールSTG0は、ガーベージコレクション動作を完了すると、当該ガーベージコレクション動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))を制御回路DKCTL0へ送信する(図12:Step12、図13C)。
 制御回路DKCTL0内のガーベージコレクション制御回路GCCTLは、ガーベージコレクション動作が完了したことを受けてテーブルGETBLへを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“0”となり、これによってストレージモジュールSTG0がガーベージコレクション動作を実行中でないことが示される。
 また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))をテーブルMGTBLへ設定し更新する(図12:Step2、図13C)。次に、WTCTLは、ストレージモジュールSTG0のデータサイズWstgおよびWh2dを利用し、ストレージモジュールSTG0のライトデータサイズ比率WAFおよび予想ライトデータサイズeWdを求め、テーブルMGTBLへ設定し更新する(図12:Step3、図13C)。図13Cでは、WAF=7となり、仮に次のライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズntW3を「10」とすると、eWd0=140となる。
 以上のように、本実施の形態3の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、ストレージコントローラSTRGCONTにて、ガーベージコレクション動作を管理することで、どのストレージモジュールがガーベージコレクション動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、ガーベージコレクション動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化行いつつ、ストレージシステムの高速化等が図れる。
 (実施の形態4)
 本実施の形態4では、ストレージモジュール用の制御回路DKCTL0が、実施の形態1の図3、図4Aおよび図4B等で述べた書き込み動作(ストレージモジュール間ウエアレベリング)の実行に加えて、消去動作を行う場合について説明する。
 《ストレージモジュール間ウエアレベリング+消去動作》
 以下に、特に限定しないが、4個のストレージモジュールSTG0~STG3を備える場合を例とし、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、データ消去制御回路ERSCTLが実行する消去の要求動作について、図15、図16に加えて図5C、図5D、図14A、図14Cを用いて説明する。図15は、本発明の実施の形態4による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作および消去動作の一例を示すフローチャートである。図16A、図16Bおよび図16Cは、図15の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。
 図15において、まず、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0~STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する。
 さらに、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0~STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図15:Step1、図16A)。
 続いて、制御回路DKCTL0は、これらの消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、これらのガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図15:Step2、図16A、図14A)。
 ここで、前提として、DKCTL0は、現在、データサイズntW1(ここでは10とする)のライトデータ(WDT[1])と論理アドレス(ここでは123とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[1])を処理対象としているものとする。この場合、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW1を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図15:Step3、図16A)。図16Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
 次のStep4では、特に限定しないが、ストレージコントローラSTRGCONTは、情報処理装置SRV0~SRVmからのデータ消去要求(EQ)があるかをチェックし、データ消去要求(EQ)があればStep5を実行し、無ければStep6を実行する。すなわち、例えば、SRV0~SRVmから、「1000~2279」の論理アドレスLADのデータを消去するデータ消去要求(EQ)がSTRGCONTのインターフェース回路STIF00~STIFm1へ入力される。このデータ消去要求(EQ)は、制御回路HCTL0を通じて制御回路DKCTL0のデータ消去制御回路ERSCTLへ通達され(図15:Step4)、その後Step5が実行される。
 次に、データ消去制御回路ERSCTLは、図5Cに示すテーブルSTGTBLの中で、論理アドレスLAD=1000~2279を検索し、論理アドレスLAD=1000~2279のデータは全てストレージモジュールSTG0へ保存されていることを把握する。さらに、ERSCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0を消去動作対象のストレージモジュールとして選択する(図15:Step5、図16A)。
 続いて、データ消去制御回路ERSCTLは、ストレージモジュールSTG0に対して、論理アドレスLAD=1000~2279のデータを消去するデータ消去アクセス要求(ERSrq)を発行し、テーブルGETBLを更新する。つまり、図14Cに示すように、ストレージモジュールの番号(STG No)が「0」に対応する消去実行状態ERSvの値が“1”となり、これによってSTG0が消去動作の実行中であることが示される(図15:Step11、図16A、図14C)。
 次いで、ライト制御回路WTCTLは、Step5の消去動作対象以外のストレージモジュールSTG1~STG3の中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG2)を選択する(図15:Step6、図16A)。次に、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step4およびStep6を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step8へ進む(図15:Step7)。
 Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2へ、データサイズntW1(=10)のライトデータ(WDT[1])と論理アドレスLAD(=123)を含んだライトアクセス要求(書き込み命令)(WREQ[1])を発行する(図16A)。次いで、WTCTLは、当該LAD(=123)とSTG2の対応関係に基づいて、テーブルSTGTBLを更新し(図15:Step9、図5A)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図15:Step9、図16B)。すなわち、図5AのSTGTBL内のLAD(=123)において、ストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、図16BのMGTBL内のSTG2において、Wh2dが「5」から「15」に更新される。
 その後、ストレージモジュールSTG2は、ライトデータ(WDT[1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達し(図15:Step10、図16B)、Step2へ戻る。この例では、STG2において、例えば、データサイズntW1(=10)のライトデータ(WDT[1])を書き込む前の期間で、スタティックウエアレベリング動作等によりデータサイズ「20」の書き込みが行われており、これによってWstg2として計「30」の値が通達されている。また、STG2において、ライトアクセス要求(書き込み命令)(WREQ[1])の書き込みに伴い図16Aにおける消去状態の物理ブロック数Esz(=140)から図16Bにおける消去状態の物理ブロック数Esz(=139)に減少している。
 続いて、ライト制御回路WTCTLは、通達された消去状態の物理ブロック数Esz(=139)およびデータサイズWstg(Wstg2(30))をテーブルMGTBLへ設定し更新する(図15:Step2、図16B)。ここで、前提として、DKCTL0は、現在、データサイズntW2(ここでは10とする)のライトデータ(WDT[2])と論理アドレス(ここでは535とする)とを含んだライトアクセス要求(書き込み命令)(WREQ[2])を処理対象としているものとする。この場合、WTCTLは、MGTBL内のデータサイズWstgおよびWh2dを利用し、各ストレージモジュールSTG0~STG3毎のライトデータサイズ比率WAFを求め、これに加えてntW2を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図15:Step3、図16B)。図16Bの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=50、eWd3=40となる。
 次のStep4では、特に限定しないが、ストレージコントローラSTRGCONTは、情報処理装置SRV0~SRVmからのデータ消去要求(EQ)があるかをチェックし、データ消去要求(EQ)があればStep5を実行し、無ければStep6を実行する。この場合、データ消去要求(EQ)が無いためStep6が実行される。続いて、ライト制御回路WTCTLは、Step5の消去動作対象以外のストレージモジュールSTG1~STG3の中から、予想ライトデータサイズeWdが最小値(Min.)であるストレージモジュール(ここではSTG3)を選択する(図15:Step6、図16B)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step4およびStep6を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step8へ進む(図15:Step7)。
 Step8において、制御回路DKCTL0内のライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG3へ、データサイズntW2(=10)のライトデータ(WDT[2])と論理アドレスLAD(=535)を含んだライトアクセス要求(書き込み命令)(WREQ[2])を発行する(図16B)。次いで、WTCTLは、当該LAD(=535)とSTG3の対応関係に基づいて、テーブルSTGTBLを更新し(図15:Step9、図5B)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図12:Step9、図16C)。すなわち、図5BのSTGTBL内のLAD(=535)において、ストレージモジュールの番号(STG No)が「3」に更新され、有効情報VLDが“1”に更新される。また、図16CのMGTBL内のSTG3において、Wh2dが「10」から「20」に更新される。
 そして、ストレージモジュールSTG3がライトデータ(WDT[2])の書き込みを完了すると、STG3は制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))およびデータサイズWstg(Wstg3(40))を通達し(図15:Step10)、Step2へ進む。なお、Step8において、ライトアクセス要求(WREQ)が発行されたストレージモジュール(ここではSTG2,STG3)では、当該ライトアクセス要求(WREQ)に含まれる論理アドレスLADを不揮発性メモリNVM0~NVM7の物理アドレス(PAD)へ変換し、この変換された物理アドレス(PAD)へライトデータを書き込む。
 ここで、前述したように、Step11でデータ消去アクセス要求(ERSrq)を受け取ったストレージモジュールSTG0が、ストレージモジュールSTG3によるライトデータ(WDT[2])の書き込み動作の完了後に消去動作を完了した場合について説明する。ストレージモジュールSTG0は、消去動作を完了すると、当該消去動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(40))を制御回路DKCTL0へ送信する(図15:Step12、図16C)。
 制御回路DKCTL0内のデータ消去制御回路ERSCTLは、消去動作が完了したことを受けてテーブルGETBLへを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応する消去実行状態ERSvの値が“0”となり、これによってストレージモジュールSTG0が消去動作を実行中でないことが示される。
 また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(40))をテーブルMGTBLへ設定し更新する(図15:Step2、図16C)。次に、WTCTLは、ストレージモジュールSTG0のデータサイズWstgおよびWh2dを利用し、ストレージモジュールSTG0のライトデータサイズ比率WAFおよび予想ライトデータサイズeWdを求め、テーブルMGTBLへ設定し更新する(図15:Step3、図16C)。図16Cでは、WAF=4のままであり、仮に次のライトアクセス要求(書き込み命令)(WREQ)に伴うデータサイズntW3を「10」とすると、eWd0=80となる。
 以上のように、本実施の形態4の記憶装置システムを用いることで、実施の形態1の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。さらに、ストレージコントローラSTRGCONTにて、消去動作を制御することで、どのストレージモジュールが消去動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、消去動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化を行いつつ、ストレージシステムの高速化等が図れる。
 なお、本実施の形態4および前述した実施の形態3では、ストレージコントローラSTRGCONTが各ストレージモジュールSTGを対象としてガーベージコレクション動作の管理や消去動作の制御を行う例を示した。これと同様に、図6のストレージ用の制御回路STCT0は、各不揮発性メモリNVM0~NVM7を対象としてガーベージコレクション動作の管理や消去動作の制御を行ってもよい。すなわち、図6のランダムアクセスメモリRAMst内に、どのNVM0~NVM7にてガーベージコレクション動作が行われているかを示す情報(GCnvm)や、どのNVM0~NVM7にて消去動作が行われているかを示す情報(ERSnvm)等が含まれていてもよい。これによって、ストレージコントローラの場合と同様の効果が得られる。
 (実施の形態5)
 本実施の形態5では、図1のストレージシステムSTRGSYSがRAID機能(例えばRAID5等)を備える場合について説明する。そして、当該RAID機能を前提として、ストレージモジュール用の制御回路DKCTL0が、実施の形態3の図12、図13A、図13Bおよび図13C等で述べたような書き込み動作(ストレージモジュール間ウエアレベリング)やガーベージコレクション管理等を行う場合について説明する。
 《RAID適用時のストレージモジュール間ウエアレベリング+ガーベージコレクション管理》
 以下に、特に限定しないが、4個のストレージモジュールSTG0~STG3を備える場合を例とする。そして、この場合において、図2に示した制御回路DKCTL0内のライト制御回路WTCTLが実行する書き込み動作と、ガーベージコレクション制御回路GCCTLが実行するガーベージコレクションの要求動作について、図17、図18に加えて図14A、図14Bを用いて説明する。図17は、本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う書き込み動作およびガーベージコレクションの管理動作の一例を示すフローチャートである。図18A、図18Bおよび図18Cは、図17の補足図であり、図2のストレージモジュール用の制御回路DKCTL0が持つテーブルMGTBLの保持内容の一例を示す図である。
 図17のStep1aにおいて、制御回路DKCTL0は、必要に応じて(例えばストレージコントローラSTRGCONTへの電源投入直後などで)、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へ消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dの通達要求を発行する。これに応じて各ストレージモジュールSTG0~STG3は、消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))をDKCTL0へ返信する。更に、データサイズWstg(Wstg0(40)、Wstg1(15)、Wstg2(10)、Wstg3(20))およびWh2d(Wh2d0(10)、Wh2d1(5)、Wh2d2(5)、Wh2d3(10))をDKCTL0へ返信する(図18A)。
 さらに、図17のStep1bにおいて、制御回路DKCTL0は、必要に応じて、インターフェース信号H2D_IFを通じて、ストレージモジュールSTG0~STG3へガーベージコレクション動作および消去動作の確認要求を発行する。これに応じて、各ストレージモジュールSTG0~STG3は、ガーベージコレクションステータスGst(Gst0(0)、Gst1(0)、Gst2(0)、Gst3(0))および消去ステータスEst(Est0(0)、Est1(0)、Est2(0)、Est3(0))をDKCTL0へ返信する(図18A)。
 続いて、図17のStep1bにおいて、ライト制御回路WTCTLは、まず、ランダムアクセスメモリRAM0~RAM3に保持しているデータサイズntW_A(ここでは20とする)のライトデータ(WDT[A])を分割する。この例では、データサイズntW_A1(ここでは10とする)のライトデータ(WDT[A1])とデータサイズntW_A2(ここでは10とする)のライトデータ(WDT[A2])に分割する。次に、WTCTLは、分割されたライトデータ(WDT[A1])とライトデータ(WDT[A2])からデータサイズntW_PA12(ここでは10とする)のパリティデータ(PA12)を生成する(図18A)。その後、WTCTLは、データサイズntW_A1(=10)のWDT[A1]と所定の論理アドレス(ここでは223とする)を含んだライトアクセス要求(WREQ[A1])と、データサイズntW_A2(=10)のWDT[A2]と所定の論理アドレス(ここでは224とする)を含んだライトアクセス要求(WREQ[A2])を生成する。加えて、WTCTLは、データサイズntW_PA12(=10)のPA12と所定の論理アドレス(ここでは225とする)を含んだライトアクセス要求(WREQ[PA12])を生成する。
 次に、制御回路DKCTL0は、Step1aに伴う消去状態の物理ブロック数EszとデータサイズWstgおよびWh2dをテーブルMGTBLへ設定し更新する。さらに、DKCTL0は、Step1aに伴うガーベージコレクションステータスGstおよび消去ステータスEstをテーブルGETBLのガーベージコレクション実行状態GCvおよび消去実行状態ERSvに設定し、更新する(図17:Step2、図18A、図14A)。
 続いて、DKCTL0内のライト制御回路WTCTLは、MGTBL内のWstgおよびWh2dを利用して、STG0~STG3毎のライトデータサイズ比率WAFを求める。更に、これに加えてデータサイズntW_A1=ntW_A2=ntW_PA12=10を利用して予想ライトデータサイズeWdを求め、MGTBLへ設定し更新する(図17:Step3、図18A)。図18Aの例では、STG0、STG1、STG2、STG3のWAF(=Wstg/Wh2d)は、それぞれ、WAF0=4、WAF1=3、WAF2=2、WAF3=2となる。また、STG0、STG1、STG2、STG3のeWd(=Wstg+ntW×WAF)は、それぞれ、eWd0=80、eWd1=45、eWd2=30、eWd3=40となる。
 次に、ガーベージコレクション制御回路GCCTLは、テーブルGETBL(図14A)を読み出し、現在、ガーベージコレクション動作や消去動作を行っていないストレージモジュールSTG0~STG4をガーベージコレクション対象のストレージモジュールとして選択する(図17:Step4、図18A)。続いて、GCCTLは、予め設定した消去状態の物理ブロック数の閾値ESZth(ここでは91)と、Step4にて選択されたストレージモジュールSTG0~STG3毎の消去状態の物理ブロック数Esz(Esz0(90)、Esz1(100)、Esz2(140)、Esz3(120))を比較する。そして、GCCTLは、消去状態の物理ブロック数の閾値ESZth(=91)より小さな物理ブロック数Eszを持つストレージモジュール(ここではSTG0)をガーベージコレクション対象のストレージモジュールとして選択する。更に、消去状態の物理ブロック数の閾値ESZth(=91)以上の物理ブロック数Eszを持つストレージモジュールSTG1~STG3を書き込みおよび読み出し対象のストレージモジュールとして選択する(図17:Step5、図18A)。
 続いて、ガーベージコレクション制御回路GCCTLは、Step5でガーベージコレクション対象として選択されたストレージモジュールSTG0へガーベージコレクション要求(GCrq)を発行し、テーブルGETBLを更新する。つまり、図14Bに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“1”となり、これによってストレージモジュールSTG0がガーベージコレクション動作の実行中であることが示される(図17:Step11、図18A、図14B)。
 ここで、ガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0は、図8のStep3~Step8の処理を用いてガーベージコレクションを実行する。すなわち、図8においては、Step1およびStep2の処理により、ガーベージコレクション動作を実行するか否かをストレージモジュール自身が判断していたが、図17のフローでは、ストレージモジュール自身が判断する代わりにその上位に位置する制御回路DKCTL0内のガーベージコレクション制御回路GCCTLが判断している。これによって、DKCTL0は、ガーベージコレクション動作を実行中でないストレージモジュールを対象として、ライトアクセス要求(WREQ)やリードアクセス要求(RREQ)等を発行できるため、書き込み動作や読み出し動作等の効率を高めることが可能になる。
 続いて、ライト制御回路WTCTLは、Step5で書き込みおよび読み出し対象のストレージモジュールとして選択されたストレージモジュールの中から、予想ライトデータサイズeWdが小さい順に3個のストレージモジュール(ここではSTG2、STG3、STG1)を選択する(図17:Step6、図18A)。次いで、もし、ストレージモジュールSTG0~STG3からのデータサイズWstgの通達があれば、Step2へ進み、再度、Step2~Step6を実行する。一方、STG0~STG3からのWstgの通達が無ければ、Step8へ進む(図17:Step7)。
 Step8において、ライト制御回路WTCTLは、Step6で選択したストレージモジュールSTG2,STG3,STG1へ、それぞれ、Step1aで述べたライトアクセス要求(書き込み命令)(WREQ[A1],WREQ[A2],WREQ[PA12])を発行する(図18B)。次いで、WTCTLは、各ライトアクセス要求に伴う論理アドレスLAD(223,224,225)とSTG2,STG3,STG1との対応関係に基づいて、テーブルSTGTBLを更新し(図17:Step9)、さらに、テーブルMGTBLのデータサイズWh2dを更新する(図17:Step9、図18B)。すなわち、図5AのようなSTGTBLにおいて、図示は省略するが、LAD(=223)のストレージモジュールの番号(STG No)が「2」に更新され、有効情報VLDが“1”に更新される。また、LAD(=224)のSTG Noが「3」に、VLDが“1”にそれぞれ更新され、LAD(=225)のSTG Noが「1」に、VLDが“1”にそれぞれ更新される。更に、図18BのMGTBL内のSTG2,STG3,STG1において、Wh2dが「15」、「15」、「20」にそれぞれ更新される。
 次に、Step10において、ストレージモジュールSTG2は、ライトデータ(WDT[A1])の書き込みを完了すると、制御回路DKCTL0へ消去状態の物理ブロック数Esz(Esz2(139))とデータサイズWstg(Wstg2(30))を通達する。また、ストレージモジュールSTG3は、ライトデータ(WDT[A2])の書き込みを完了すると、DKCTL0へ消去状態の物理ブロック数Esz(Esz3(119))とデータサイズWstg(Wstg3(40))を通達する。更に、ストレージモジュールSTG1は、パリティデータ(PA12)の書き込みを完了すると、DKCTL0へ消去状態の物理ブロック数Esz(Esz1(100))とデータサイズWstg(Wstg1(45))を通達する(図18C)。
 Step10の後は、Step1bへ戻り、ライト制御回路WTCTLは、データサイズntW_B(ここでは20とする)の次のライトデータ(WDT[B])を対象にして、ライトデータの分割やパリティデータの生成を行う。ここでは、データサイズntW_B1(ここでは10とする)のライトデータ(WDT[B1])とデータサイズntW_B2(ここでは10とする)のライトデータ(WDT[B2])に分割し、データサイズntW_PB12(ここでは10とする)のパリティデータ(PB12)を生成する(図18C)。そして、WTCTLは、これらの各ライトデータおよびパリティデータを含んだライトアクセス要求(書き込み命令)をそれぞれ生成する。なお、Step10で通達された情報は、Step2においてMGTBLに反映される(図18C)。
 ここで、前述したように、Step11でガーベージコレクション要求(GCrq)を受け取ったストレージモジュールSTG0が、ガーベージコレクション動作を完了した場合について説明する。STG0は、ガーベージコレクション動作を完了すると、当該ガーベージコレクション動作後における消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))を制御回路DKCTL0へ送信する(図17:Step12、図18C)。
 制御回路DKCTL0内のガーベージコレクション制御回路GCCTLは、ガーベージコレクション動作が完了したことを受けてテーブルGETBLを更新する。つまり図14Aに示すように、ストレージモジュールの番号(STG No)が「0」に対応するガーベージコレクション実行状態GCvの値が“0”となり、これによってストレージモジュールSTG0がガーベージコレクション動作を実行中でないことが示される。また、制御回路DKCTL0内のライト制御回路WTCTLは、消去状態の物理ブロック数Esz(Esz0(100))およびデータサイズWstg(Wstg0(70))をテーブルMGTBLへ設定し更新する(図17:Step2、図18C)。
 《RAID適用時の読み出し方法》
 図19は、本発明の実施の形態5による記憶装置システムにおいて、図1および図2におけるストレージモジュール用の制御回路が行う読み出し動作の一例を示す説明図である。図19の例では、データAはデータA1とA2から構成され、データA1はストレージモジュールSTG2へ保存され、データA2はストレージモジュールSTG3へ保存されている。また、データA1とA2から生成されたパリティデータPA12はストレージモジュールSTG1へ保存されている。
 データBはデータB1とB2から構成され、データB1はストレージモジュールSTG1へ保存され、データB2はストレージモジュールSTG2へ保存されている。また、データB1とB2から生成されたパリティデータPB12はストレージモジュールSTG0へ保存されている。データCはデータC1とC2から構成され、データC1はストレージモジュールSTG0へ保存され、データC2はストレージモジュールSTG1へ保存されている。また、データC1とC2から生成されたパリティデータPC12はストレージモジュールSTG3へ保存されている。データDはデータD1とD2から構成され、データD1はストレージモジュールSTG2へ保存され、データD2はストレージモジュールSTG3へ保存されている。また、データD1とD2から生成されたパリティデータPD12はストレージモジュールSTG0へ保存されている。
 ここで、例えば、制御回路DKCTL0内のガーベージコレクション制御回路GCCTLからストレージモジュールSTG1に対してガーベージコレクション要求(GCrq)が発行され、これに応じてSTG1がガーベージコレクション動作を実行中に、リード制御回路RDCTLが、データBの読み出し動作を行う場合を例とする。この場合、RDCTLは、図14で述べたようなテーブルGETBLにより、ストレージモジュールSTG1がガーベージコレクション動作を実行中であることを把握できる。また、RDCTLは、図5で述べたようなテーブルSTGTBLにより、データB1およびB2はストレージモジュールSTG1およびSTG2へ保存され、また、パリティデータPB12はストレージモジュールSTG0へ保存されていることを、各データに対応する論理アドレスLADから把握できる。
 そのため、リード制御回路RDCTLは、ガーベージコレクション動作を実行中のストレージモジュールSTG1以外の、ストレージモジュールSTG2へ保存されているデータB2と、ストレージモジュールSTG0へ保存されているパリティデータPB12を読み出す。次に、RDCTLは、データB2とパリティデータPB12を利用して、データBを復元する(データB1を復元し、データB1,B2からデータBを復元する)。このように、ストレージコントローラSTRGCONT(制御回路DKCTL)にて、RAID機能を実現することにより、ガーベージコレクション動作の完了を待つことなく、データを読み出すことができ、ストレージシステムの信頼性の向上と動作の高速化を実現できる。
 以上のように、本実施の形態5の記憶装置システムを用いることで、実施の形態1や実施の形態3の場合と同様に、代表的には、記憶装置システム全体で消去回数の平準化(およびその結果として書き込み回数の平準化)を実現でき、信頼性の向上や長寿命化等が実現可能になる。また、ストレージコントローラSTRGCONTにて、ガーベージコレクション動作を管理することで、どのストレージモジュールがガーベージコレクション動作を実行中で、どのストレージモジュールに書き込みや読み出しが可能かを把握することができ、ガーベージコレクション動作と、書き込みおよび読み出し動作を並行して実行可能になる。その結果、平準化を行いつつ、ストレージシステムの高速化等が図れる。これに加えて、ストレージコントローラSTRGCONT(制御回路DKCTL)にてRAID機能を実現することで、信頼性の更なる向上が実現可能になる。
 (実施の形態6)
 本実施の形態6では、実施の形態1の図6に示したストレージモジュール(メモリモジュール)STGの変形例について説明する。
 《ストレージモジュール(メモリモジュール)の構成(変形例)》
 図21は、本発明の実施の形態6による記憶装置システムにおいて、図1におけるストレージモジュールの詳細な構成例を示すブロック図である。図21に示すストレージモジュール(メモリモジュール)STGは、図6の構成例と比較して、図6のバッテリバックアップ装置BBUを削除する代わりに、図6のランダムアクセスメモリRAMstを不揮発性メモリNVMEMstに置き換えた点が異なっている。これに以外に構成に関しては、図6の場合と同様であるため詳細な説明は省略する。
 不揮発性メモリNVMEMstには、NAND型フラッシュメモリよりも高速な書き込み動作が可能で、かつ小単位(例えばバイト単位等)でのアクセスが可能なメモリが用いられる。代表的には、例えば、相変化型メモリ(PCM:Phase Change Memory)、SPRAM(Spin transfer torque RAM)、MRAM(Magnetoresistive RAM)、FRAM(Ferroelectric RAM)(登録商標)、抵抗変化型メモリ(ReRAM:Resistive RAM)などが挙げられる。このようなNVMEMstを用いることで、NVMEMst内に保持されるテーブル等を迅速に更新することができ、更に、急な電源遮断の際などでも直前のテーブル等の情報を保持することが可能になる。
 《本実施の形態による代表的な効果の纏め》
 以上に説明した各実施の形態によって得られる代表的な効果を纏めると以下の通りである。
 第1に、複数のストレージモジュール(メモリモジュール)が実際に不揮発性メモリへ書き込んだライトデータ量をストレージコントローラへ通達することにより、ストレージコントローラは、次に書き込むライトデータ量から、各ストレージモジュールの予測ライトデータ量を求めることができる。そして、ストレージコントローラは、この予測ライトデータ量が最小のストレージモジュールへ次のデータを書き込むことができる。これによって、ストレージシステム(記憶装置システム)内の複数のストレージモジュール間での書き込み回数の平準化が、高効率で行え、高信頼かつ長寿命のストレージシステムが実現できる。
 第2に、複数のストレージモジュールが、実際に不揮発性メモリへ書き込んだライトデータ量に加えて寿命をストレージコントローラへ通達することにより、ストレージコントローラは、前述した予測ライトデータ量を、ストレージシステムの残存寿命以上の寿命を持つストレージモジュールを対象として求めることができる。そして、ストレージコントローラは、この対象としたストレージモジュール内で、予測ライトデータ量が最小のストレージモジュールへ次のデータを書込むことができる。これによって、ストレージシステムの製品寿命を守った上で、複数のストレージモジュール間での書き込み回数の平準化が、高効率で行え、高信頼および長寿命のストレージシステムが実現できる。
 以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 ARB 調停回路
 BBU バッテリバックアップ装置
 BIF インターフェース回路
 BP バックプレーン
 BUF バッファ
 CM キャッシュメモリ
 CMCTL キャッシュ制御回路
 CPU プロセッサユニット
 CPUCR プロセッサコア
 DIAG 診断回路
 DKCTL 制御回路
 ERSCTL データ消去制御回路
 ERSv 消去実行状態
 Est 消去ステータス
 Esz 消去状態の物理ブロック数
 GCCTL ガーベージコレクション制御回路
 GCv ガーベージコレクション実行状態
 Gst ガーベージコレクションステータス
 H2D_IF インターフェース信号
 H2S_IF インターフェース信号
 HCTL 制御回路
 HDIAG 診断回路
 HOST_IF インターフェース回路
 HRDCTL リード制御回路
 HWTCTL ライト制御回路
 LAD 論理アドレス
 MGTBL,STGTBL,GETBL テーブル
 MNGER 情報処理回路
 NVM 不揮発性メモリ
 NVMEMst 不揮発性メモリ
 PAD 物理アドレス
 PBK 物理ブロック
 RAM,RAMst ランダムアクセスメモリ
 RAMC,NVCT0~NVCT7 メモリ制御回路
 RDCTL リード制御回路
 Ret データリテンション時間(残存寿命)
 RetTBL テーブル
 SIFC インターフェース回路
 SRV 情報処理装置(ホスト)
 STCT 制御回路
 STG ストレージモジュール(メモリモジュール)
 STIF インターフェース回路
 STRGCONT ストレージコントローラ
 STRGSYS ストレージシステム(記憶装置システム)
 VLD 有効情報
 WAF ライトデータサイズ比率
 WDT ライトデータ
 WTCTL ライト制御回路
 Wstg,Wh2d,ntW データサイズ
 dLife 寿命情報(残存寿命のしきい値)
 eWd 予想ライトデータサイズ
 

Claims (15)

  1.  複数のメモリモジュールと、
     前記複数のメモリモジュールを制御する第1制御回路とを備え、
     前記複数のメモリモジュールのそれぞれは、複数の不揮発性メモリおよび前記複数の不揮発性メモリを制御する第2制御回路を備え、
     前記第2制御回路は、前記複数の不揮発性メモリに対して実際に書き込みを行った第2書き込みデータ量を把握し、前記第2書き込みデータ量を前記第1制御回路に通達し、
     前記第1制御回路は、前記複数のメモリモジュールに対して発行済みの書き込み命令に伴う第1書き込みデータ量を前記複数のメモリモジュール毎に把握し、前記第1書き込みデータ量と前記第2書き込みデータ量の比率となる第1比率を前記複数のメモリモジュール毎に計算し、当該計算結果を反映して、前記複数のメモリモジュールの中から次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  2.  請求項1記載の記憶装置システムにおいて、
     前記第1制御回路は、前記次の書き込み命令に伴う第3書き込みデータ量に前記第1比率を乗算したデータ量と前記第2書き込みデータ量との加算結果となる第4書き込みデータ量を前記複数のメモリモジュール毎に計算し、当該計算結果に基づいて、前記複数のメモリモジュールの中から前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  3.  請求項2記載の記憶装置システムにおいて、
     前記第1制御回路は、前記複数のメモリモジュール毎に計算した前記第4書き込みデータ量の中で、最小のデータ量を持つメモリモジュールを選択し、当該選択したメモリモジュールに前記次の書き込み命令を発行する記憶装置システム。
  4.  請求項1記載の記憶装置システムにおいて、
     前記第2制御回路は、更に、前記複数の不揮発性メモリにおける消去回数あるいは書き込み回数と残存寿命との依存関係を保持しており、前記依存関係に基づいて得られる前記残存寿命を前記第1制御回路に通達し、
     前記第1制御回路は、更に、前記第2制御回路から通達された前記複数のメモリモジュール毎の前記残存寿命を反映して、前記複数のメモリモジュールの中から前記次の書き込み命令の発行先の候補を定め、当該候補の中から前記第1比率の計算結果を反映して前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  5.  請求項4記載の記憶装置システムにおいて、
     前記第1制御回路は、前記残存寿命の第1しきい値を保持しており、前記第1しきい値以上の前記残存寿命を持つ単数または複数のメモリモジュールを前記次の書き込み命令の発行先の候補として定める記憶装置システム。
  6.  請求項5記載の記憶装置システムにおいて、
     前記第1制御回路は、前記第1しきい値を可変制御する記憶装置システム。
  7.  請求項6記載の記憶装置システムにおいて、
     前記第1制御回路は、前記次の書き込み命令に伴う第3書き込みデータ量に前記第1比率を乗算したデータ量と前記第2書き込みデータ量との加算結果となる第4書き込みデータ量を前記複数のメモリモジュール毎に計算し、当該計算結果に基づいて、前記次の書き込み命令の発行先の候補の中から前記次の書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  8.  請求項7記載の記憶装置システムにおいて、
     前記第1制御回路は、前記複数のメモリモジュール毎に計算した前記第4書き込みデータ量の中で、最小のデータ量を持つメモリモジュールを選択し、当該選択したメモリモジュールに前記次の書き込み命令を発行する記憶装置システム。
  9.  請求項1記載の記憶装置システムにおいて、
     前記第2制御回路は、前記複数の不揮発性メモリを対象にウエアレベリングおよびガーベージコレクションを実行する記憶装置システム。
  10.  請求項9記載の記憶装置システムにおいて、
     前記第2制御回路は、更に、前記複数の不揮発性メモリに含まれる消去状態の物理ブロック数を前記第1制御回路に通達し、
     前記第1制御回路は、更に、前記消去状態の物理ブロック数の第2しきい値を保持しており、前記消去状態の物理ブロック数が前記第2しきい値以下であるメモリモジュールに対して前記ガーベージコレクションの実行命令を発行することで前記ガーベージコレクションを実行中であるメモリモジュールを把握し、前記次の書き込み命令を発行するメモリモジュールを選択する際には、前記ガーベージコレクションを実行中であるメモリモジュール以外の中から選択する記憶装置システム。
  11.  請求項9記載の記憶装置システムにおいて、
     前記第2制御回路は、前記第1制御回路からの前記書き込み命令に応じて行った前記複数の不揮発性メモリに対する実際の書き込みが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  12.  請求項9記載の記憶装置システムにおいて、
     前記第2制御回路は、前記複数の不揮発性メモリを対象に行った前記ウエアレベリングが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  13.  請求項9記載の記憶装置システムにおいて、
     前記第2制御回路は、前記複数の不揮発性メモリを対象に行った前記ガーベージコレクションが完了する毎に前記第2書き込みデータ量を前記第1制御回路に通達する記憶装置システム。
  14.  複数のメモリモジュールと、
     第1テーブルを持ち、ホストからの第1書き込み命令を受けて、前記第1書き込み命令に伴うデータの書き込み先を前記複数のメモリモジュールの中から前記第1テーブルに基づいて選択し、当該選択したメモリモジュールに第2書き込み命令を発行する第1制御回路とを有し、
     前記複数のメモリモジュールのそれぞれは、複数の不揮発性メモリおよび前記複数の不揮発性メモリを制御する第2制御回路を備え、
     前記第2制御回路は、前記複数の不揮発性メモリに対して、前記第2書き込み命令に伴う書き込みと、ウエアレベリングまたはガーベージコレクションに伴う書き込みを行い、前記第2書き込み命令に伴う書き込みと、前記ウエアレベリングまたは前記ガーベージコレクションに伴う書き込みによって生じる第2書き込みデータ量を把握し、前記第2書き込みデータ量を前記第1制御回路に通達し、
     前記第1テーブルには、前記第2書き込みデータ量と、既に発行済みの前記第2書き込み命令に伴う第1書き込みデータ量とが前記複数のメモリモジュール毎に保持され、
     前記第1制御回路は、前記第1テーブルに基づいて、前記第1書き込みデータ量と前記第2書き込みデータ量の比率となる第1比率を前記複数のメモリモジュール毎に計算し、当該計算結果を反映して、前記複数のメモリモジュールの中から次の前記第2書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
  15.  請求項14記載の記憶装置システムにおいて、
     前記第2制御回路は、更に、前記複数の不揮発性メモリにおける消去回数あるいは書き込み回数と残存寿命との依存関係を保持しており、前記依存関係に基づいて得られる前記残存寿命を前記第1制御回路に通達し、
     前記第1テーブルには、更に、前記残存寿命が前記複数のメモリモジュール毎に保持され、
     前記第1制御回路は、更に、前記第1テーブル内の前記残存寿命を反映して、前記複数のメモリモジュールの中から次の前記第2書き込み命令の発行先の候補を定め、当該候補の中から前記第1比率の計算結果を反映して次の前記第2書き込み命令を発行するメモリモジュールを選択する記憶装置システム。
PCT/JP2012/072961 2012-09-07 2012-09-07 記憶装置システム WO2014038073A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2014534130A JP5820078B2 (ja) 2012-09-07 2012-09-07 記憶装置システム
PCT/JP2012/072961 WO2014038073A1 (ja) 2012-09-07 2012-09-07 記憶装置システム
US14/423,384 US20150186056A1 (en) 2012-09-07 2012-09-07 Storage device system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/072961 WO2014038073A1 (ja) 2012-09-07 2012-09-07 記憶装置システム

Publications (1)

Publication Number Publication Date
WO2014038073A1 true WO2014038073A1 (ja) 2014-03-13

Family

ID=50236720

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2012/072961 WO2014038073A1 (ja) 2012-09-07 2012-09-07 記憶装置システム

Country Status (3)

Country Link
US (1) US20150186056A1 (ja)
JP (1) JP5820078B2 (ja)
WO (1) WO2014038073A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015087651A1 (ja) * 2013-12-12 2015-06-18 株式会社フィックスターズ メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
US10237159B2 (en) 2016-06-16 2019-03-19 Hitachi, Ltd. Computer system and method of controlling computer system

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9383926B2 (en) * 2014-05-27 2016-07-05 Kabushiki Kaisha Toshiba Host-controlled garbage collection
WO2019062231A1 (zh) * 2017-09-27 2019-04-04 北京忆恒创源科技有限公司 垃圾回收方法及其存储设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
JP2007265265A (ja) * 2006-03-29 2007-10-11 Hitachi Ltd フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2010015222A (ja) * 2008-07-01 2010-01-21 Panasonic Corp メモリカード
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP2012118587A (ja) * 2010-11-29 2012-06-21 Canon Inc 管理装置及びその制御方法、並びにプログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7568075B2 (en) * 2005-09-22 2009-07-28 Hitachi, Ltd. Apparatus, system and method for making endurance of storage media
JP4933861B2 (ja) * 2005-09-22 2012-05-16 株式会社日立製作所 ストレージ制御装置、データ管理システムおよびデータ管理方法
KR100909902B1 (ko) * 2007-04-27 2009-07-30 삼성전자주식회사 플래쉬 메모리 장치 및 플래쉬 메모리 시스템
US9195588B2 (en) * 2010-11-02 2015-11-24 Hewlett-Packard Development Company, L.P. Solid-state disk (SSD) management
US8918595B2 (en) * 2011-04-28 2014-12-23 Seagate Technology Llc Enforcing system intentions during memory scheduling
US9405670B2 (en) * 2011-06-09 2016-08-02 Tsinghua University Wear leveling method and apparatus
US20140032820A1 (en) * 2012-07-25 2014-01-30 Akinori Harasawa Data storage apparatus, memory control method and electronic device with data storage apparatus

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007013372A1 (ja) * 2005-07-29 2007-02-01 Matsushita Electric Industrial Co., Ltd. メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及び不揮発性メモリのアドレス管理方法
JP2007265265A (ja) * 2006-03-29 2007-10-11 Hitachi Ltd フラッシュメモリを用いた記憶装置、その消去回数平準化方法、及び消去回数平準化プログラム
JP2010015222A (ja) * 2008-07-01 2010-01-21 Panasonic Corp メモリカード
JP2011003111A (ja) * 2009-06-22 2011-01-06 Hitachi Ltd フラッシュメモリを用いたストレージシステムの管理方法及び計算機
JP2012118587A (ja) * 2010-11-29 2012-06-21 Canon Inc 管理装置及びその制御方法、並びにプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015087651A1 (ja) * 2013-12-12 2015-06-18 株式会社フィックスターズ メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
US10237159B2 (en) 2016-06-16 2019-03-19 Hitachi, Ltd. Computer system and method of controlling computer system

Also Published As

Publication number Publication date
JP5820078B2 (ja) 2015-11-24
JPWO2014038073A1 (ja) 2016-08-08
US20150186056A1 (en) 2015-07-02

Similar Documents

Publication Publication Date Title
US10459808B2 (en) Data storage system employing a hot spare to store and service accesses to data having lower associated wear
US9552290B2 (en) Partial R-block recycling
US9569118B2 (en) Promoting consistent response times in a data storage system having multiple data retrieval mechanisms
US9785575B2 (en) Optimizing thin provisioning in a data storage system through selective use of multiple grain sizes
US8850114B2 (en) Storage array controller for flash-based storage devices
US9367469B2 (en) Storage system and cache control method
US9304685B2 (en) Storage array system and non-transitory recording medium storing control program
JP6062060B2 (ja) ストレージ装置、ストレージシステム、及びストレージ装置制御方法
JP2021089733A (ja) ストレージ装置、及び該ストレージ装置の動作方法
WO2016172235A1 (en) Method and system for limiting write command execution
KR102649131B1 (ko) 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치
CN113126907B (zh) 用于存储器装置的异步电力损失恢复
US11157402B2 (en) Apparatus and method for managing valid data in memory system
KR20140113211A (ko) 비휘발성 메모리 시스템, 이를 포함하는 시스템 및 상기 비휘발성 메모리 시스템의 적응적 사용자 저장 영역 조절 방법
KR20210057193A (ko) 소계 기입 카운터에 기초한 하이브리드 웨어 레벨링 동작 수행
US9390003B2 (en) Retirement of physical memory based on dwell time
US11775389B2 (en) Deferred error-correction parity calculations
JP5820078B2 (ja) 記憶装置システム
US11169920B2 (en) Cache operations in a hybrid dual in-line memory module
Ware et al. Architecting a hardware-managed hybrid DIMM optimized for cost/performance
US10817435B1 (en) Queue-based wear leveling of memory components
US11966638B2 (en) Dynamic rain for zoned storage systems
CN112346658B (zh) 在具有高速缓存体系结构的存储设备中提高数据热量跟踪分辨率
US20240231708A1 (en) Dynamic rain for zoned storage systems
KR20230115196A (ko) 메모리 블록을 할당 해제하는 스토리지 컨트롤러, 그것의 동작하는 방법, 및 그것을 포함하는 스토리지 장치의 동작하는 방법

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

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014534130

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14423384

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 12884162

Country of ref document: EP

Kind code of ref document: A1