WO2021106514A1 - コントローラおよび記憶装置 - Google Patents

コントローラおよび記憶装置 Download PDF

Info

Publication number
WO2021106514A1
WO2021106514A1 PCT/JP2020/041328 JP2020041328W WO2021106514A1 WO 2021106514 A1 WO2021106514 A1 WO 2021106514A1 JP 2020041328 W JP2020041328 W JP 2020041328W WO 2021106514 A1 WO2021106514 A1 WO 2021106514A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
controller
read
error correction
memory
Prior art date
Application number
PCT/JP2020/041328
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 US17/777,915 priority Critical patent/US11853162B2/en
Publication of WO2021106514A1 publication Critical patent/WO2021106514A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • 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/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature

Definitions

  • This disclosure relates to a controller and a storage device.
  • memories such as NAND flash memory that have adopted technologies such as miniaturization process, multi-level structure, and multi-level cell have been developed.
  • the state-of-the-art memory is expected to increase the capacity of the storage device.
  • the application of state-of-the-art memory is required to meet requirements such as capacity, speed, and reliability according to the application.
  • the present disclosure provides a controller and a storage device that achieve both high reliability and performance.
  • the controller writes and reads each of a plurality of data fragments including a part of the data to be written to one of the plurality of memory chips having an error correction function.
  • a processing circuit configured to read the data fragment corresponding to the data from the memory chip, and the data to be written so as to include parity in each of the data fragments so as to be encoded by an erasure correction code.
  • a first decoder configured to perform erasure correction using a portion of the data may be provided.
  • the processing circuit may be configured to refer to the signal line and read the data fragment in order from the memory chip for which error correction has been completed.
  • the first decoder is configured such that the processing circuit performs erasure correction when the data fragment is read from a part of the memory chips in which the data fragment is written. You may.
  • the first decoder may be configured to perform erasure correction using the data fragment read by the processing circuit when at least one of the memory chips is performing error correction.
  • the processing circuit may be configured to notify the host system of the completion status or success / failure of error correction of the data fragment in each of the memory chips.
  • the controller writes a plurality of data fragments including a part of the data to be written to the memory chip among the plurality of memory chips, and the data fragment corresponding to the data to be read.
  • a processing circuit configured to read the data from the memory chip, and a first encoder configured to encode the data to be written with an erasure correction code so that each of the data fragments contains parity.
  • a second encoder configured to encode the data fragment with an error correction code before the processing circuit writes the data fragment to the memory chip, and the processing circuit reading from the memory chip.
  • the second decoder configured to perform error correction of the data fragment and the data fragment corresponding to the data to be read, a part of the data fragment for which the error correction by the second decoder has been completed. It may be provided with a first decoder configured to perform erasure correction using.
  • the first decoder is such that when the second decoder is performing error correction of at least one of the data fragments, erasure correction is performed using the remaining data fragment for which the error correction has been completed. It may be configured in.
  • the storage device encodes the data with a loss correction code so that each of the plurality of memory chips having an error correction function and the data fragment obtained by dividing the data to be written contains parity, and the data is described. Is divided into a plurality of the data fragments, each of the data fragments is written to one of the plurality of memory chips, and the data fragment in each of the memory chips acquired via a signal line. Even if it is provided with a controller configured to perform loss correction using a part of the data fragments among the data fragments corresponding to the data to be read according to the completion status or success / failure of the error correction of the above. Good.
  • the controller may be configured to perform erasure correction using the read data fragment when at least one of the memory chips is performing error correction.
  • the memory chip includes a second encoder configured to encode the data fragment written by the controller with an error correction code and then save it in a memory cell, and the data fragment corresponding to the read data. It may include a second decoder configured to perform the error correction of the above and notify the controller of the completion status or success / failure of the error correction via the signal line.
  • the controller may be electrically connected to a plurality of the memory chips via individual data lines.
  • the controller may be electrically connected to a plurality of the memory chips via a common data line.
  • the memory chip may include a NAND flash memory.
  • the controller may be configured to notify the host system of the completion status or success / failure of error correction of the data fragment in each of the memory chips.
  • An interface conversion circuit configured to convert the data read by the controller into a packet that can be transferred on the network and to convert the packet received from the network into a format that can be input to the controller may be further provided. ..
  • the storage device encodes the data with a loss correction code so that each of the plurality of memory chips and the data fragment obtained by dividing the data to be written contains parity, and the data is encoded by the loss correction code.
  • the data fragment is divided into fragments, the data fragment is encoded by an error correction code, written to one of the plurality of memory chips, and when the data is read, the data fragment read from the memory chip. Even if the data fragment corresponding to the read data is provided with a controller configured to perform loss correction using a part of the data fragment for which error correction has been completed. Good.
  • the controller may be electrically connected to a plurality of the memory chips via individual data lines.
  • the controller may be electrically connected to a plurality of the memory chips via a common data line.
  • the memory chip may include a NAND flash memory.
  • An interface conversion circuit configured to convert the data read by the controller into a packet that can be transferred on the network and to convert the packet received from the network into a format that can be input to the controller may be further provided. ..
  • the block diagram which showed the example of the controller according to the modification 2 schematicly.
  • a timing chart in the case of waiting until the error correction processing of the data read from all the memory chips is completed.
  • FIG. 6 is a diagram conceptually showing a data flow at the time of reading a storage device when a data line is prepared for each memory chip in the second modification.
  • FIG. 1 shows an example of a system including a storage device according to the present disclosure.
  • the system 1 of FIG. 1 includes a host system 2 and a storage device 100 connected to the host system 2.
  • the host system 2 is, for example, an information processing device such as a computer equipped with a CPU (central processing unit).
  • the storage device 100 provides a storage area that can be used by the host system 2.
  • the storage device 100 includes a plurality of memory chips 20 and a controller 10.
  • the controller 10 is connected to the host system 2 via the bus 3.
  • Bus 3 is, for example, PCI Express, M.I. 2. U.S. 2. It is a physical interface such as Serial Attached SCSI, NVM Express, and USB (Universal Serial Bus).
  • the type of physical interface between the controller 10 and the host system 2 does not matter.
  • the memory chip 20 includes, for example, a non-volatile memory such as a NAND flash memory, a NOR flash memory, a phase change type memory, a magnetoresistive memory, and a resistance change type memory.
  • the memory chip 20 may be a combination of a plurality of types of non-volatile memories. Further, the memory chip 20 may include a volatile memory such as DRAM or SRAM.
  • the number of memory chips 20 to be mounted on the storage device 100 can be determined according to the required storage capacity, write speed, read speed, or reliability of the memory cell used.
  • FIG. 1 shows four memory chips 20.
  • the number N of the memory chips 20 mounted on the storage device 100 is not limited.
  • the storage device 100 may include components such as a battery or a capacitor capable of storing electric power. These components provide the power needed to back up the data on the volatile memory to the non-volatile memory in the event of a sudden power outage and prevent data loss.
  • FIG. 2 shows an example of a storage device connected to the host system via a network.
  • the system 1A of FIG. 2 includes a host system 2 and a storage device 100A.
  • the host system 2 can communicate with the storage device 100A via the network 5.
  • the network 5 is a communication network capable of packet communication by, for example, TCP / IP, Fiber Channel, Infiniband, or the like.
  • As the network 5, a communication network constructed by wire, wireless, or a combination of wired and wireless can be used.
  • the type of communication protocol used in network 5 does not matter.
  • the storage device 100A includes an interface conversion circuit 4 in addition to the components of the storage device 100.
  • the interface conversion circuit 4 is connected between the controller 10 and the network 5.
  • the interface conversion circuit 4 converts the data output from the controller 10 into a format (for example, a packet) that can be transferred by the network 5. Further, the interface conversion circuit 4 converts the packet transmitted from the host system 2 into data in a format that can be input to the controller 10.
  • a circuit corresponding to NVMe over Fabrics can be used as the interface conversion circuit 4, for example, a circuit corresponding to NVMe over Fabrics can be used.
  • the function of the interface conversion circuit 4 enables the host system 2 to perform read processing or write processing of the storage device via the network 5.
  • the interface conversion circuit 4 and the controller 10 are not separated into separate circuits, but a circuit in which the function corresponding to the interface conversion circuit 4 and the function corresponding to the controller 10 are integrated is used. May be good.
  • FIG. 3 schematically shows an example of a storage device according to the present disclosure.
  • FIG. 3 shows an example of wiring between the controller 10 in the storage device 100 and the plurality of memory chips 20.
  • the signal line DQ (solid line in FIG. 3) corresponds to a data line between the memory chip 20 and the controller 10.
  • one signal line DQ connected to the controller 10 is branched and connected to a plurality of memory chips 20.
  • the signal line DQ may be shared for data read and data write applications.
  • separate signal lines may be prepared for data read and data write applications.
  • the broken line in FIG. 3 indicates a signal line Read Ready that supplies a status signal indicating whether or not data read is possible in the memory chip 20 to the controller 10.
  • the controller 10 is connected to each memory chip 20 via individual signal lines Read Ready.
  • the storage device may include other signal lines not shown in FIG. Further, the wiring of the data line and the signal line Ready Ready shown in FIG. 3 is only an example. Therefore, the wiring of the data line and the signal line Read Ready may be different from this.
  • the block diagram of FIG. 4 schematically shows an example of a controller according to the present disclosure.
  • the controller 10 in FIG. 4 is, for example, a hardware circuit such as a System-on-a-chip including a microprocessor. Examples of hardware circuits include various processors, ASICs or FPGAs. However, the type of hardware circuit used to mount the controller 10 does not matter. At least some functions of the controller 10 may be executed by a program such as firmware running on the microprocessor. In this case, the controller 10 may include a program and a memory for storing data necessary for executing the program.
  • the controller 10 of FIG. 4 includes a processing circuit 11, a look-up table 12, a block management table 13, a first encoder 14, a first decoder 15, and a first interface circuit 16.
  • the controller 10 manages the correspondence between the logical address and the physical address in the plurality of memory chips 20 by using the lookup table 12.
  • a logical block address (LBA) specified by the host can be used.
  • a physical address for example, a physical block address can be used.
  • the physical block associated with the LBA is called a valid block.
  • a physical block that is not associated with any LBA is called an invalid block.
  • the controller 10 can update the lookup table 12 when the data is written or erased.
  • the controller 10 may use the block management table 13 to manage information on the number of times the memory chip 20 is erased for each physical block, the bad block of the memory chip 20, and the valid block / invalid block.
  • the controller 10 may perform wear leveling in a physical block using the lookup table 12 and the block management table 13. In wear leveling, when a data write request is received from the host, the physical block with the least number of erases is specified as the data write destination among the invalid blocks. As a result, the number of erases in the plurality of physical blocks of the memory chip 20 can be made uniform, and the deterioration of the memory cell can be delayed.
  • the controller 10 may include a write buffer that temporarily stores the data written by the host system 2. Further, the controller 10 may include a read buffer for temporarily storing the data read from the memory chip 20. As a buffer, for example, a volatile memory such as SRAM or DRAM can be used. A volatile memory arranged outside the controller 10 may be used as a write buffer or a read buffer.
  • the controller 10 can read and write data on a page-by-page basis.
  • the size of one page is, for example, 512 bytes, 1 kilobyte, 2 kilobytes, 4 kilobytes, and 8 kilobytes. However, the size of the page does not matter.
  • the controller 10 When the controller 10 receives a write request for data having a size larger than one page, the controller 10 can write to a plurality of pages in the same physical block in order. However, the controller 10 cannot overwrite the written page. Instead, the controller 10 erases the data on the NAND flash memory in blocks, which is larger than the page size.
  • One block contains, for example, pages 32 to 512. However, the number of pages contained in the block may be different.
  • the controller 10 executes a process called Read-Modify-Write in order to update the data on the NAND flash memory. For example, assume that the controller 10 receives a request to update a written file. In this case, the controller 10 reads the data of the physical block including the corresponding file and saves it in the buffer. Then, the controller 10 updates the file on the buffer. Then, the controller 10 writes the updated file in a physical block different from the physical block in which the file was previously written. At this time, when writing data to the invalid block, the physical block is erased and then the file is written.
  • a process called Read-Modify-Write in order to update the data on the NAND flash memory. For example, assume that the controller 10 receives a request to update a written file. In this case, the controller 10 reads the data of the physical block including the corresponding file and saves it in the buffer. Then, the controller 10 updates the file on the buffer. Then, the controller 10 writes the updated file in a physical block different from the physical block in which the file
  • the processing circuit 11 of the controller 10 divides the data into data fragments when the data is written, and the data fragments are divided into the respective memories in parallel. It can be written to the physical block of the chip 20.
  • the size of the data fragment can be determined depending on the type of memory used or the memory usage. For example, when using NAND flash memory, the data fragment can be sized equal to the physical block or a positive integer multiple of the physical block.
  • the controller 10 may set a continuous block address across a plurality of memory chips 20. This block address may be the same as the physical block address described above. Further, as the block address, an address obtained by converting the above-mentioned physical block address according to a predetermined rule or mathematical formula may be used.
  • the controller 10 may define a super block which is a set of physical blocks selected from each memory chip 20 in order to realize the above-mentioned processing. For example, when there are N memory chips 20, a superblock containing N physical blocks or N ⁇ i (i is a positive integer) physical blocks can be defined. In this case, the controller 10 may erase the data in units of super blocks. Further, the controller 10 may erase data in units of individual physical blocks.
  • the controller 10 can use a plurality of memory chips 20 in the same manner as the interleaved memory and the striped hard disk. Therefore, the write processing and the read processing can be speeded up as compared with the case where a single memory chip 20 is used.
  • the controller 10 does not necessarily have to write data fragments to all the memory chips 20 of the storage device. For example, when the storage device includes M memory chips 20, data fragments may be written to a smaller number of memory chips 20 than M, depending on the size of the data to be written or the state of the memory chips 20.
  • the controller 10 may perform garbage collection on a plurality of memory chips 20.
  • garbage collection process the written data that is distributed and stored on the pages in a plurality of valid blocks is read out. Then, the written data is aggregated into a smaller number of blocks than before and written to the plurality of memory chips 20. As a result, the controller 10 can secure a free block that can be used for writing data.
  • the first encoder 14 uses the erasure correction code to add parity to the data to be written.
  • the unit to which parity is added can be determined according to the size of the data written to each memory chip 20 during the write process. For example, the first encoder 14 can add parity to each data of M (M is an integer larger than 1) blocks. M may be set to a value equal to the number N of the memory chips 20. Further, M may be set to N / j (j is an integer larger than 1). Further, M may be set to a value equal to the number of physical blocks included in the above-mentioned superblock. For example, M can be set to N ⁇ i. However, the first encoder 14 may add parity in a unit different from this. For example, the first encoder 14 may add parity for each predetermined number of pages.
  • the first encoder 14 can perform coding by, for example, a BCH code, an RS code, a low density parity check (LDPC) code, or a raptor code.
  • the first encoder 14 may use any kind of error correction code (ECC) as long as erasure correction is possible.
  • ECC error correction code
  • the error correction code used by the first encoder 14 is called the first code.
  • the first decoder 15 is configured to decode data using the same type of error correction code as the first encoder 14. For example, when reading data, the first decoder 15 can perform erasure correction by the first code by using a data fragment for which error correction by the second code, which will be described later, has been completed. For example, the first decoder 15 can perform erasure correction when the error correction of Mu data fragments out of the M data fragments is completed.
  • the ability of erasure correction depends on the ratio of parity added at the time of data writing and the type of error correction code adopted. Therefore, the number u of missing data fragments allowed at the time of erasure correction can be any integer in the range of [1, M-1]. It should be noted that the first decoder 15 may be used to perform not only erasure correction but also data error correction using repeated decoding or the like.
  • the monitoring unit 17 is, for example, an internal component of the processing circuit 11.
  • the monitoring unit 17 monitors the number of data fragments for which error correction by the second code has been completed at the time of reading the data.
  • the controller 10 receives Mu data fragments that can be corrected by the first decoder 15 from the plurality of memory chips 20, the first decoder 15 Notify. As a result, the first decoder 15 can start the erasure correction.
  • the controller 10 is electrically connected to the plurality of memory chips 20 via the first interface circuit 16.
  • the controller 10 transmits a reset signal to the memory chip 20 via the signal line RESET.
  • the controller 10 supplies the differential clock to the memory chip 20 by using the signal line CK and the signal line CK #.
  • the controller 10 transmits a chip select signal to the memory chip 20 via the signal line CS.
  • the signal line DQ corresponds to a data line between the controller and the memory chip.
  • the signal line DQS and the signal line DQS # are data strobes to which a clock signal for data transfer is supplied.
  • the signal line Ready / Busy in FIG. 5 connects each memory chip 20 and the controller 10.
  • Each memory chip 20 sets the voltage of the signal line Ready / Busy to HIGH when the data stored in the memory chip 20 is being accessed.
  • each memory chip 20 sets the voltage of the signal line Ready / Busy to LOW when the data stored in the memory chip 20 is not accessed.
  • FIG. 6 shows an example of a signal line included in the interface circuit according to the present disclosure. Similar to the signal line Ready / Busy, the signal line Read Ready of FIG. 6 connects each memory chip 20 and the controller 10. The use of the signal line Ready / Ready is different from that of the signal line Ready / Busy.
  • the signal line Read Ready indicates whether or not the corresponding memory chip 20 is performing error correction processing for the data fragment. For example, the memory chip 20 sets the voltage of the signal line Read Ready to HIGH while executing the error correction processing of the data fragment. On the other hand, the memory chip 20 can set the voltage of the signal line Read Ready to LOW when the error correction processing of the data fragment is not performed.
  • the above-mentioned usage of the signal line Read Ready is only an example.
  • the voltage level in which HIGH and LOW are inverted may be used under each condition.
  • the state may be expressed by the direction of the pulse of the voltage signal or the current signal.
  • the memory chip 20 may notify the controller 10 of the success or failure of the error correction by using the signal line Read Ready.
  • the memory chip 20 may notify the controller 10 that the error correction is successful by using the signal line Read Ready.
  • the memory chip 20 may notify the controller 10 that the error correction has failed by using the signal line Read Ready.
  • the monitoring unit 17 of the controller 10 can confirm whether or not the error correction in the memory chip 20 is completed by referring to the signal line Read Ready. As a result, the monitoring unit 17 can obtain information on the processing status of the memory chip 20 by a simple method without reading the register. As a result, the processing time can be shortened. It is not always necessary to prepare a dedicated signal line as the signal line Read Ready.
  • the signal line Read Ready may be a signal line that is also used for a plurality of uses.
  • the block diagram of FIG. 7 schematically shows an example of a memory chip according to the present disclosure.
  • the memory chip 20 of FIG. 7 includes a memory 21 and a read / write circuit 22.
  • the memory 21 is, for example, a non-volatile memory such as a NAND flash memory, and provides a storage area of the memory chip 20.
  • the memory 21 may be another type of memory.
  • the memory 21 may include a layered cache area to accommodate the locality of data access.
  • the memory 21 may include a buffer memory used at the time of writing and at the time of reading.
  • the buffer memory for example, a volatile memory such as SRAM or DRAM can be used. That is, the memory 21 may include a plurality of types of memories.
  • the read / write circuit 22 includes a second interface circuit 23, a second encoder 24, and a second decoder 25.
  • the second interface circuit 23 is electrically connected to the first interface circuit 16 of the controller 10 via a plurality of signal lines (for example, the signal lines of FIG. 6).
  • the second encoder 24 uses an error correction code when the read / write circuit 22 receives a write request for the data fragment, and adds parity to the data fragment. For example, when a data fragment having a size equal to that of a physical block is written to each memory chip 20, the second encoder 24 can perform coding in units of physical blocks. Further, when a data fragment having a size equal to i physical blocks is written to each memory chip 20, the second encoder 24 may perform coding for each i physical blocks.
  • the second encoder 24 may perform coding with a particle size smaller than that of the physical block regardless of the size of the data fragment written to the memory chip 20.
  • the second encoder 24 may perform coding on a page-by-page basis or on a plurality of page-by-page basis.
  • the particle size of coding by the second encoder 24 does not matter.
  • the grain size of coding is determined according to the error occurrence rate in the memory cell, the deterioration state of the memory, the use of the storage device 100, and the like.
  • the second encoder 24 can use, for example, an error correction code such as a Hamming code, a cyclic code, a sparse graph code, or a convolutional code. However, the type of error correction code used by the second encoder 24 does not matter.
  • the error correction code used by the second encoder 24 is called the second code.
  • the second code may be the same type of code as the first code described above, or may be a different type of code.
  • the second decoder 25 corrects an error in the data fragment to be read when the read / write circuit 22 receives the data fragment read request.
  • the second decoder 25 uses the same error correction code as the second encoder 24 to decode the data fragment. For example, the second encoder 24 sets the voltage of the signal line Read Ready to HIGH during the execution of the error correction processing of the data fragment. In this case, the second encoder 24 sets the voltage of the signal line Read Ready to LOW when the error correction processing of the data fragment is completed. As described above, the second encoder 24 may notify the controller 10 of the completion status of the error correction process or the success or failure of the error correction process by a method different from this.
  • the flowchart of FIG. 8 shows an example of data write processing.
  • an example of write processing in the storage device according to the present disclosure will be described with reference to the flowchart of FIG.
  • the controller 10 receives a data write request from the host system 2 (step S101). Then, the first encoder 14 of the controller 10 encodes the data for a plurality of (for example, M) blocks by the first code (step S102). Next, the processing circuit 11 of the controller 10 divides the data encoded by the first code into a plurality of data fragments (step S103). For example, the number of data divisions (data fragment size) can be determined according to the size of the physical blocks used in the memory chip 20 and the number of physical blocks written in the same memory chip 20. The controller 10 may temporarily store the data fragment in the write buffer.
  • the controller 10 transfers each data fragment to the corresponding memory chip 20 (step S104).
  • the controller 10 may refer to the above-mentioned lookup table 12 and convert the logical block address specified by the host system 2 into the physical block address. By obtaining the physical block address, the controller 10 can identify the memory chip 20 to which the data fragment is transferred and the physical block in the memory chip 20. Further, the controller 10 may search for a physical block in which data can be written by referring to the block management table 13 described above.
  • each memory chip 20 encodes the data fragment by the second code (step S105).
  • the second encoder 24 may encode the data fragment stored in the buffer memory and add parity.
  • each memory chip 20 stores the data fragment encoded by the second code in the memory 21.
  • the coded data fragment written to the memory 21 may have a size of one physical block or a size of a plurality of physical blocks.
  • each memory chip 20 stores the data fragment encoded by the second code in the storage area in the memory 21 (step S106).
  • FIG. 9 is a timing chart showing an operation example after making a data fragment read request to a plurality of memory chips.
  • FIG. 9 shows the operation when data fragments are read from the four memory chips # 1 to # 4.
  • the timing chart C1 of FIG. 9 shows the operation in the storage device having the signal line Read / Busy of FIG.
  • the timing chart C2 of FIG. 9 shows the operation in the storage device having the signal line Read Ready of FIG.
  • the timing chart C1 shows the voltage level in the signal line Ready / Busy. On the other hand, the timing chart C1 shows the voltage level in the signal line Read Ready. In any signal line, it is assumed that LOW indicates the Ready state (readable state) of the memory chip. Further, the timing charts C1 and C2 show commands and data transferred using the signal line DQ.
  • the controller 10 transmits the Sense command to the memory chips # 1 to # 4. Then, the controller 10 sequentially transmits a RegRead command to each memory chip.
  • the controller 10 refers to the signal line Ready / Busy and transmits the RegRead command in the order in which the memory chips transition to the ready state.
  • the controller 10 can acquire the value of the register indicating the success or failure of the error correction processing by the second decoder 25 by transmitting the RegRead command.
  • the register is mounted on the read / write circuit 22 of the memory chip, for example. Then, the controller 10 refers to the value of the register and transmits a DataRead command to the memory chip that has succeeded in error correction. In the example of FIG. 9, the error correction fails in the memory chip # 3, and the error correction succeeds in the other memory chips. Therefore, the controller 10 transmits the DatRead command to the memory chips # 1, # 2, and # 4. In response to the DataRead command, memory chips # 1, # 2 and # 4 transmit data fragments (Data # 1, Data # 4 and Data # 2) to the controller 10. After receiving the data fragment from the memory chip, the controller 10 transmits a Clear command to the memory chip.
  • the controller 10 transmits the Sense command to the memory chips # 1 to # 4.
  • the controller 10 has not transmitted the RegRead command to the memory chip. Instead, the controller 10 refers to the signal line Read Ready and transmits the DatRead command to the memory chip in the order in which the error correction is completed.
  • the DatRead command is transmitted to the remaining memory chips.
  • the controller 10 receives data fragments (Data # 1, Data # 4, and Data # 2) from the remaining memory chips. After receiving the data fragment from the memory chip, the controller 10 transmits a Clear command to the memory chip.
  • the data fragment is read from the memory chip for which error correction has been completed with reference to the signal line Read Ready. Therefore, it is not necessary to read the register value to check the decoding result. It is possible to reduce the latency at the time of reading the data distributed and stored in a plurality of memory chips, and to speed up the overall read processing.
  • FIG. 10 shows an example of the state transition in the controller according to the present disclosure.
  • FIG. 10 shows the states of commands and signal lines that are conditions for transition between states. For example, when the controller 10 issues a DataRead command to a memory chip in the Ready state, the memory chip transitions to the Reading state. When the reading of the data fragment is completed, the memory chip transitions to the DataEnd state. When the controller 10 transmits a Clear command to the memory chip in the DataEnd state, the memory chip transitions to the init state. Then, the memory chip transitions to the Sensing state after a lapse of a certain period of time.
  • the controller 10 When the controller 10 sends a Sense command to the memory chip in the Sensing state, the memory chip transitions to the WaitReady state. Then, when the voltage of the signal line Read Ready changes from HIGH to LOW, the memory chip transitions to the Ready state.
  • the controller 10 can manage the state of each memory chip and maintain the consistency of processing. The state transition of the memory chip may be different from that illustrated in FIG.
  • FIG. 11 conceptually shows the data flow at the time of reading when the signal line DQ is shared by a plurality of memory chips as in the configuration of FIG.
  • error correction processing is performed on a plurality of memory chips, and sequential read processing is performed on the memory chips for which the error correction processing has been completed (step S10).
  • the controller 10 can determine the processing content based on the time elapsed from the start of the read processing and / or the number of data fragments for which error correction has been completed (step S11).
  • the processing circuit 11 of the controller 10 combines the data fragments and the data to be read. Is reconstructed (step S13). The reconstructed data is transferred to the host system 2. Further, when the error correction of the number of data fragments that can be corrected by the first encoder 14 is completed within a predetermined time from the time when the read request is received from the host system 2, the erasure correction is performed (step S12). ). The data reconstructed by the erasure correction is transferred to the host system 2. If any of the above conditions is not satisfied within a predetermined time from the time when the read request is received from the host system 2, the controller 10 interrupts the read process and notifies the host system 2 of the read failure. May be good.
  • the timing chart of FIG. 12 shows an example of the execution timing of the erasure correction process.
  • the horizontal axis of FIG. 12 indicates the time.
  • Sense commands are issued to chips # 1 to # 5.
  • the chips # 1 to # 3 and the chip # 5 complete the error correction processing by the second encoder 24 and transition to the Ready state.
  • the voltage of the signal line Read Ready becomes LOW. Therefore, the controller 10 issues a Read command to the chips # 1 to # 3 and the chip # 5.
  • the controller 10 does not issue the Read command to the chip # 4.
  • the controller 10 can read the data fragment including the parity for erasure correction from the chips # 1 to # 3 and the chip # 5.
  • the first encoder 14 of the controller 10 performs erasure correction using the read data fragment and recovers the data.
  • the recovered data is transferred to the host system 2.
  • the flowchart of FIG. 13 shows an example of data read processing.
  • an example of read processing in the storage device according to the present disclosure will be described with reference to the flowchart of FIG.
  • the controller 10 receives a data read request from the host system 2 (step S201). Then, the controller 10 refers to the lookup table 12, identifies the memory chip 20 in which a plurality of data fragments corresponding to the data to be read are stored, and the physical block, and corresponds to the plurality of memory chips. The read start of the physical block to be performed is requested (step S202). Next, the second decoder 25 of each memory chip 20 starts error correction by the second code of the data fragment in the physical block (step S203). Here, each memory chip 20 can notify the controller 10 that the error correction of the data fragment is completed via the signal line (for example, the above-mentioned signal line Read Ready or the like).
  • the signal line for example, the above-mentioned signal line Read Ready or the like.
  • the controller 10 determines whether or not the error correction of the data fragment is completed in all the target memory chips 20 (step S204). For example, when the data fragments corresponding to the data to be read are stored in all the memory chips 20 of the storage device 100, has the controller 10 completed the error correction of the data fragments in all the memory chips 20 in step S204? Check if it is not. On the other hand, when the data fragment corresponding to the data to be read is stored in a part of the memory chips 20 of the storage device 100, the controller 10 completes the error correction of the data fragment for the part of the memory chips 20 in step S204. You just have to check if you did.
  • the process branches according to the result of the determination in step S204.
  • the processing circuit 11 of the controller 10 reads out and combines the plurality of data fragments for which the error correction has been completed, and reads the target.
  • the controller 10 may read the data fragments in the order in which the completion of error correction of the data fragments is confirmed by any of the memory chips 20. However, the controller 10 may read the data fragment at a timing different from this.
  • the controller 10 can arrange a plurality of data fragments on the buffer memory or the cache memory to reconstruct the data.
  • the first decoder 15 of the controller 10 can perform error correction of the data reconstructed by the first code, if necessary (step S206). However, the controller 10 may omit the process of step S206. Finally, the controller 10 transfers the data to be read to the host system 2 (step S209).
  • the controller 10 determines whether the error correction of the data fragment is completed in the predetermined number of memory chips 20. Is determined (step S207).
  • a predetermined number the number Mu of data fragments required for the first decoder 15 to perform erasure correction can be used.
  • an integer value larger than this may be used in step S207.
  • the process branches according to the result of the determination in step S207.
  • the controller 10 executes the determination in step S204 again.
  • the controller 10 reads the data fragment for which the error correction is completed, and uses the first decoder 15 to obtain the first code.
  • Data loss correction is performed (step S208). For example, the controller 10 can arrange a data fragment on the buffer memory or the cache memory and perform erasure correction. Finally, the controller 10 transfers the lost-corrected data to the host system 2 (step S209).
  • FIG. 14 schematically shows an example of a storage device according to the first modification.
  • FIG. 14 shows a configuration example of wiring between the controller 10 in the storage device 101 and the plurality of memory chips 20.
  • the signal line DQ (solid line in FIG. 14) corresponds to a data line between the memory chip 20 and the controller 10.
  • the controller 10 is connected to each memory chip 20 via individual signal line DQ.
  • the controller 10 is connected to each memory chip 20 via individual signal lines Read Ready.
  • the controller according to the present disclosure may be connected to the plurality of memory chips 20 by individual data lines.
  • the controller 10 can transmit data to and from a plurality of memory chips in parallel.
  • the signal line DQ may be shared for data read and data write applications. Also, separate signal lines may be provided for data read and data write applications.
  • the storage device may include other signal lines not shown in FIG. Further, the wiring of the data line and the signal line Ready Ready shown in FIG. 14 is only an example. Therefore, the wiring of the data line and the signal line Read Ready may be different from this.
  • FIG. 15 conceptually shows the data flow at the time of reading when the signal line DQ is prepared for each memory chip as in the example of FIG.
  • error correction processing is performed on a plurality of memory chips, and read processing is performed on the memory chips 20 for which the error correction processing has been completed (step S10A).
  • read processing may be performed in parallel for the plurality of memory chips 20.
  • the controller 10 determines the processing content based on the time elapsed from the start of the read processing and / or the number of data fragments for which error correction has been completed (step S11).
  • the processing circuit 11 of the controller 10 combines the data fragments and the data to be read. Is reconstructed (step S13). The reconstructed data is transferred to the host system 2. Further, when the error correction of the number of data fragments that can be corrected by the first encoder 14 is completed within a predetermined time from the time when the read request is received from the host system 2, the erasure correction is performed (step S12). ). The data reconstructed by the erasure correction is transferred to the host system 2.
  • step S10A the data flow of FIG. 15 is similar to that of FIG. 11 described above.
  • the timing chart of FIG. 16 shows an example of execution timing of the erasure correction process in the storage device according to the first modification.
  • the horizontal axis of FIG. 16 indicates the time.
  • the controller 10 reads out the data fragment including the parity for erasure correction from the chips # 1 to # 3 and the chip # 5.
  • the first encoder 14 of the controller 10 performs erasure correction using the read data fragment.
  • the recovered data is transferred to the host system 2.
  • the controller according to the first modification uses a plurality of data lines (signal line DQ) and can read data fragments in parallel from a plurality of memory chips 20. Therefore, in the timing chart of FIG. 16, the required time is shorter than that of FIG. Even in a storage device in which data lines are wired as shown in FIG. 14, it is possible to perform erasure correction without waiting for reading of a data fragment from a memory chip whose processing is delayed. It is possible to reduce the influence of processing delay in some memory chips and speed up the overall read processing in the storage device.
  • the controller 10 may notify the host system 2 of the error correction status in the memory chip 20.
  • the controller 10 can notify the host system 2 of the error correction status in the plurality of memory chips 20 via the bus 3 of FIG. 1 or the network 5 of FIG.
  • the controller 10 can notify the host system 2 of the information of the memory chip 20 for which error correction has been completed or the information of the memory chip 20 for which error correction has not been completed. Further, the controller 10 may notify the host system 2 of the result of error correction in the memory chip 20.
  • the host system 2 that has received the notification can send a command to the controller 10, such as reading a data fragment from the memory chip 20, executing erasure correction, or waiting for a certain period of time. Even when at least a part of the processing executed by the controller 10 described above is executed by the host system 2, it is possible to realize a high speed of the overall read processing in the storage device.
  • the block of FIG. 17 shows a wiring example of the signal line Read Ready.
  • one signal line Read Ready connected to the controller 10 is branched and connected to a plurality of memory chips 20.
  • the completion status of error correction or the success or failure of error correction in the plurality of memory chips 20 may be notified via a common signal line.
  • each memory chip 20 can transmit a signal including an error correction completion status or an error correction success / failure to the controller 10 together with the identifier of the memory chip 20.
  • the controller may include a processing circuit, a first encoder, and a first decoder.
  • the processing circuit writes each of a plurality of data fragments including a part of the data to be written to one of a plurality of memory chips having an error correction function, and data corresponding to the data to be read. It is configured to read fragments from the memory chip.
  • the first encoder is configured to encode the data to be written with an erasure correction code so that each data fragment contains parity.
  • the first decoder uses a part of the data fragments corresponding to the read data to perform erasure correction according to the completion status or success / failure of error correction of the data fragments in each memory chip acquired via the signal line. Is configured to do.
  • the processing circuit may be configured to refer to the signal line and read data fragments in order from the memory chip for which error correction has been completed.
  • the first decoder may be configured such that the processing circuit performs erasure correction when the data fragment is read from a part of the memory chips in which the data fragment is written.
  • the first decoder may be configured to perform erasure correction using the data fragment read by the processing circuit when at least one of the memory chips is performing error correction.
  • the processing circuit may be configured to notify the host system of the completion status or success / failure of error correction of the data fragment in each memory chip.
  • the storage device may include a plurality of memory chips having an error correction function and a controller.
  • the controller encodes the data to be written with a loss correction code so that each of the divided data fragments contains parity, divides the data into multiple data fragments, and divides each of the data fragments out of multiple memory chips. , Is configured to write to either memory chip.
  • the controller uses a part of the data fragments corresponding to the data to be read according to the completion status or success / failure of the error correction of the data fragments in each memory chip acquired via the signal line. It is configured to perform erasure correction.
  • the controller may be configured to perform erasure correction using the read data fragment when at least one of the memory chips is performing error correction.
  • the memory chip may include a second encoder and a second decoder.
  • the second encoder is configured to encode the data fragment written by the controller with an error correction code and then save it in the memory cell.
  • the second decoder corrects an error in a data fragment corresponding to the data to be read, and notifies the controller of the completion status or success / failure of the error correction via a signal line.
  • the controller may be electrically connected to a plurality of memory chips via individual data lines.
  • the controller may be electrically connected to a plurality of memory chips via a common data line.
  • the memory chip may include NAND flash memory.
  • the controller may be configured to notify the host system of the completion status or success / failure of error correction of data fragments in each memory chip.
  • the storage device may further include an interface conversion circuit.
  • the interface conversion circuit is configured to convert the data read by the controller into packets that can be transferred on the network, and convert the packets received from the network into a format that can be input to the controller.
  • the block diagram of FIG. 18 schematically shows an example of a controller according to the modified example 2.
  • the controller 10A of FIG. 18 includes a second encoder 18 and a second decoder 19 in addition to the components of the controller 10 of FIG.
  • the second encoder 18 and the second decoder 19 have functions corresponding to the second encoder 24 and the second decoder 25 of the memory chip 20 of FIG. 7, respectively. That is, in the storage device according to the present disclosure, the controller may perform coding processing by the second code and error correction (decoding) processing by the second code.
  • decoding error correction
  • the controller 10A may include a plurality of pairs of the second encoder 18 and the second decoder 19.
  • the circuit block 1000 includes a pair of a second encoder 18 and a second decoder 19.
  • the controller 10A which is connected to each memory chip via a separate data line, uses a dedicated second encoder 18 / second decoder 19 for writing / reading each memory chip.
  • M circuit blocks 1000 equal to the number of memory chips 20 may be prepared. This makes it possible to prevent the second encoder 18 / second decoder 19 from becoming a processing bottleneck when parallel write / read occurs.
  • the number of the second encoder 18 and the second decoder 19 included in the controller 10A is not limited.
  • FIG. 19 schematically shows an example of a memory chip according to the second modification.
  • the memory chip 20A of FIG. 19 includes a memory 21 and a second interface circuit 23. As illustrated in FIG. 18, when the second encoder and the second decoder are arranged on the controller side, the second encoder and the second decoder on the memory chip side may be omitted.
  • the configuration and function of the memory chip 20A are the same as those of the memory chip 20 of FIG. 7, except that the second encoder 24 and the second decoder 25 are omitted.
  • the flowchart of FIG. 20 shows an example of data write processing in the second modification.
  • an example of write processing in the storage device according to the present disclosure will be described with reference to the flowchart of FIG.
  • the controller 10A receives a data write request from the host system 2 (step S111). Then, the first encoder 14 of the controller 10A encodes the data for a plurality of (for example, M) blocks by the first code (step S112). Next, the processing circuit 11 of the controller 10A divides the data encoded by the first code into a plurality of data fragments (step S113). For example, the number of data divisions (data fragment size) can be determined based on the size of the physical blocks used in the memory chip 20A and the number of physical blocks written in the same memory chip 20A. The controller 10A may temporarily store the data fragment in the write buffer.
  • the second encoder 18 of the controller 10A encodes the data fragment by the second code (step S114).
  • the particle size of coding by the second encoder 18 can be determined based on the data size written to each memory chip 20A. For example, when the data fragment written to the memory chip 20A is equal to the size of the physical block, the encoding may be performed in units of physical blocks or 1 / s times (s is an integer larger than 1) of the physical blocks. When the data fragment written to the memory chip 20A is equal to the size of i physical blocks, encoding can be performed for each i physical blocks, for each physical block, or in units of 1 / s times the physical blocks. it can. However, the particle size of coding by the second encoder 18 may be different from this.
  • the controller 10A transfers each encoded data fragment to the corresponding memory chip 20A (step S115).
  • the controller 10A may refer to the above-mentioned lookup table 12 and convert the logical block address specified by the host system 2 into the physical block address. By obtaining the physical block address, the controller 10A can specify the memory chip 20A to which the data fragment is transferred and the physical block in the memory chip 20A. Further, the controller 10A may search for a physical block in which a data fragment can be written by referring to the block management table 13 described above. Finally, each memory chip 20 writes a data fragment encoded by the second code into the memory 21 (step S116).
  • the controller 10A may be connected to a plurality of memory chips 20A via a common data line.
  • the following describes an example of read processing when a common data line is used for data transfer.
  • FIG. 21 is a timing chart in the case where the controller 10A is connected to a plurality of memory chips 20A via a common data line and waits until the error correction processing of the data read from all the memory chips is completed. is there.
  • the horizontal axis of FIG. 21 indicates the time.
  • the controller 10A sequentially reads from the memory chips # 1 to # 5.
  • the second decoder 19 of the controller 10A performs error correction processing of the read data fragment.
  • the error-corrected data fragment contains parity for erasure correction.
  • the error correction processing has not been completed for the data fragment read from the memory chip # 4.
  • the data fragment read from the memory chip # 4 after it is determined that the data fragment read from the memory chip # 4 cannot be error-corrected, the data fragment read from the memory chips # 1, # 2, # 3 and # 5 by the first decoder 15. Is used to perform erasure correction processing using the first code. Therefore, the overall read processing in the storage device is delayed due to the influence of the memory chip # 4.
  • the overall read processing may be delayed even when the error correction of the data fragment read from the memory chip # 4 is completed with a delay. Therefore, even if there is a data fragment for which error correction processing has not been completed, as in the controller and storage device according to the present disclosure, the erasure correction processing may be executed using the data fragment for which error correction has been completed.
  • FIG. 22 conceptually shows an example of the data flow at the time of reading the storage device when the common data line is used in the second modification.
  • the controller 10A sequentially reads data fragments from the plurality of memory chips 20A (step S20). Then, the controller 10A performs an error correction process using the second code for the read data fragment (step S21). As in the example of FIG. 22, the controller 10A may perform the error correction processing by the second code in parallel. Further, the controller 10A may sequentially perform the error correction processing by the second reference numeral.
  • the controller 10A can determine the processing content based on the time elapsed from the start of the read processing and / or the number of data fragments for which error correction has been completed (step S22). For example, if the error correction of all the data fragments is completed within a predetermined time from the time when the read request is received from the host system 2, the processing circuit 11 of the controller 10 combines the data fragments and the data to be read. Is reconstructed (step S24). The reconstructed data is transferred to the host system 2. Further, when the error correction of the number of data fragments that can be corrected by the first encoder 14 is completed within a predetermined time from the time when the read request is received from the host system 2, the erasure correction is performed (step S23). ).
  • the data reconstructed by the erasure correction is transferred to the host system 2. If any of the above conditions is not satisfied within a predetermined time from the time when the read request is received from the host system 2, the controller 10A interrupts the read process and notifies the host system 2 of the read failure. May be good.
  • FIG. 23 is a timing chart showing an example of read processing of the storage device when the common data line is used in the second modification.
  • the horizontal axis of FIG. 23 indicates the time.
  • the controller 10A sequentially reads from the memory chips # 1 to # 5.
  • the second decoder 19 of the controller 10A performs error correction processing of the read data fragment.
  • the error-corrected data fragment contains parity for erasure correction.
  • the error correction processing has not been completed for the data fragment read from the memory chip # 4.
  • the erasure correction process is performed when the first decoder 15 completes the erasure correction of a number of data fragments that can be erasure corrected by the first code. That is, the first decoder 15 performs the erasure correction process by the first code using the data fragments read from the memory chips # 1, # 2, # 3 and # 5.
  • the controller 10A does not wait until the error correction processing of the data fragment read from the memory chip # 4 is completed or the error correction failure determination is made. Therefore, it is possible to reduce the influence of the processing delay in some memory chips and speed up the overall read processing in the storage device.
  • controller 10A may be connected to each memory chip 20A via individual data lines.
  • individual data lines In the following, an example of read processing in the case where data transfer is performed using individual data lines will be described.
  • FIG. 24 is a timing chart in the case where the controller 10A is connected to each memory chip 20A via individual data lines and waits until the error correction processing of the data read from all the memory chips is completed. is there.
  • the horizontal axis of FIG. 24 indicates the time.
  • the controller 10A reads the memory chips # 1 to # 5 in parallel.
  • the second decoder 19 of the controller 10A performs error correction processing of the read data fragment.
  • the error correction processing by the second code is completed.
  • the error-corrected data fragment contains parity for erasure correction.
  • the error correction processing has not been completed for the data fragment read from the memory chip # 4.
  • the data fragment read from the memory chip # 4 after it is determined that the data fragment read from the memory chip # 4 cannot be error-corrected, the data fragment read from the memory chips # 1, # 2, # 3 and # 5 by the first decoder 15. Is used to perform erasure correction processing using the first code. Therefore, the overall read processing in the storage device is delayed due to the influence of the memory chip # 4.
  • the overall read processing may be delayed even when the error correction of the data fragment read from the memory chip # 4 is completed with a delay. Therefore, even if there is a data fragment whose error correction processing has not been completed as in the controller and the storage device according to the present disclosure, the erasure correction processing may be executed using the data fragment whose error correction has been completed.
  • FIG. 25 conceptually shows an example of the data flow at the time of reading the storage device in the case where the data line is prepared for each memory chip in the modification 2.
  • the controller 10A reads data fragments in parallel from the plurality of memory chips 20A (step S20A). Then, the controller 10A performs an error correction process using the second code for the read data fragment (step S21). As in the example of FIG. 22, the controller 10A may perform the error correction processing by the second code in parallel. Further, the controller 10A may sequentially perform the error correction processing by the second reference numeral.
  • the controller 10A can determine the processing content based on the time elapsed from the start of the read processing and / or the number of data fragments for which error correction has been completed (step S22). For example, if the error correction of all the data fragments is completed within a predetermined time from the time when the read request is received from the host system 2, the processing circuit 11 of the controller 10 combines the data fragments and the data to be read. Is reconstructed (step S24). The reconstructed data is transferred to the host system 2. Further, when the error correction of the number of data fragments that can be corrected by the first encoder 14 is completed within a predetermined time from the time when the read request is received from the host system 2, the erasure correction is performed (step S23). ).
  • the data reconstructed by the erasure correction is transferred to the host system 2. If any of the above conditions is not satisfied within a predetermined time from the time when the read request is received from the host system 2, the controller 10A interrupts the read process and notifies the host system 2 of the read failure. May be good.
  • FIG. 26 shows an example of read processing of the storage device when a data line is prepared for each memory chip in the second modification.
  • the horizontal axis of FIG. 26 indicates the time.
  • the controller 10A reads from the memory chips # 1 to # 5 in parallel.
  • the second decoder 19 of the controller 10A performs error correction processing of the read data fragment.
  • the error correction processing by the second code is completed.
  • the error-corrected data fragment contains parity for erasure correction.
  • the error correction processing has not been completed for the data fragment read from the memory chip # 4.
  • the erasure correction process is performed when the first decoder 15 completes the erasure correction of a number of data fragments that can be erasure corrected by the first code. That is, the first decoder 15 performs the erasure correction process by the first code using the data fragments read from the memory chips # 1, # 2, # 3 and # 5.
  • the controller 10A does not wait until the error correction processing of the data fragment read from the memory chip # 4 is completed or the error correction failure determination is made. Therefore, it is possible to reduce the influence of delay in some memory chips and speed up the overall read processing in the storage device.
  • the flowchart of FIG. 27 shows an example of data read processing in the second modification.
  • an example of read processing in the storage device according to the present disclosure will be described with reference to the flowchart of FIG. 27.
  • the controller 10A receives a data read request from the host system 2 (step S211). Then, the controller 10A refers to the lookup table 12, identifies the memory chip 20A in which a plurality of data fragments corresponding to the data to be read are stored, and the physical block, and identifies the corresponding data from the plurality of memory chips. Read the fragment (step S212). The controller 10A may sequentially read data fragments from a plurality of memory chips. Further, the controller 10A may read a plurality of data fragments in parallel from a plurality of memory chips. That is, the order and timing of reading the data fragments by the controller 10A are not limited. Next, the second decoder 19 of the controller 10A starts error correction by the second code of the data fragment read from the memory chip 20A (step S213).
  • the controller 10A determines whether or not the error correction of all the target data fragments has been completed (step S214). For example, when data fragments are read from each of the N memory chips 20A, the controller 10A confirms whether or not the error correction of the N data fragments is completed in step S204.
  • the process branches according to the result of the determination in step S214.
  • the processing circuit 11 of the controller 10A combines the plurality of data fragments for which the error correction has been completed and reconstructs the data to be read. (Step S215).
  • the controller 10A can arrange a plurality of data fragments on the buffer memory or the cache memory to reconstruct the data.
  • the first decoder 15 of the controller 10A can perform error correction of the data reconstructed by the first code, if necessary (step S216). However, the controller 10A may omit the process of step S216. Finally, the controller 10A transfers the data to be read to the host system 2 (step S219).
  • the controller 10A determines whether or not the error correction of a predetermined number of data fragments is completed (step S217).
  • a predetermined number the number Mu of data fragments required for the first decoder 15 to perform erasure correction can be used.
  • an integer value larger than this may be used in step S217.
  • the process branches according to the result of the determination in step S217.
  • the controller 10A again executes the determination in step S214.
  • the error correction of a predetermined number of data fragments is completed (YES in step S217)
  • the first decoder 15 of the controller 10A performs the data loss correction by the first code using the data fragments for which the error correction has been completed. (Step S218).
  • the controller 10A can arrange a data fragment on the buffer memory or the cache memory and perform erasure correction.
  • the controller 10A transfers the lost and corrected data to the host system 2 (step S219).
  • the controller may include a processing circuit, a first encoder, a second encoder, a second decoder, and a first decoder.
  • the processing circuit is configured to write a plurality of data fragments including a part of the data to be written to one of the plurality of memory chips and read the data fragment corresponding to the read data from the memory chip. Has been done.
  • the first encoder is configured to encode the data to be written with an erasure correction code so that each data fragment contains parity.
  • the second encoder is configured to encode the data fragment with an error correction code before the processing circuit writes the data fragment to the memory chip.
  • the second decoder is configured so that the processing circuit corrects errors in the data fragment read from the memory chip.
  • the first decoder is configured to perform erasure correction using a part of the data fragments corresponding to the data to be read that have been error-corrected by the second decoder.
  • the first decoder is configured to perform erasure correction using the remaining data fragments for which error correction has been completed when the second decoder is performing error correction for at least one of the data fragments. You may.
  • the storage device may include a plurality of memory chips and a controller.
  • the controller encodes the data with an erasure correction code so that each of the divided data fragments of the data to be written contains parity, divides the data into multiple data fragments, encodes the data fragments with an error correction code, and multiplex. It is configured to write to one of the memory chips of. Further, when reading the data, the controller corrects the error of the data fragment read from the memory chip, and among the data fragments corresponding to the read data, a part of the data fragments for which the error correction has been completed is performed. It is configured to be used for erasure correction.
  • the controller may be electrically connected to a plurality of memory chips via individual data lines.
  • the controller may be electrically connected to a plurality of memory chips via a common data line.
  • the memory chip may include NAND flash memory.
  • the storage device may further include an interface conversion circuit.
  • the interface conversion circuit is configured to convert the data read by the controller into packets that can be transferred on the network, and convert the packets received from the network into a format that can be input to the controller.
  • the technique according to the present disclosure improves the read performance of the storage device in which the data to be written is divided into data fragments and stored in a plurality of memory chips.
  • an error correction function (second encoder and second decoder) using a second code may be mounted on the memory chip side.
  • each memory chip that receives the request from the controller to start reading the data fragment reads the data fragment and starts error correction by the second code.
  • Each memory chip can notify the controller of the completion status of the error correction process or the success or failure of the error correction via a signal line connecting the memory chip and the controller.
  • the controller reads the memory fragment for which error correction has been completed. Then, even if there is a memory chip for which error correction has not been completed, the controller can start erasure correction when the reading of the number of memory fragments capable of erasure correction is completed. Further, the controller does not need to read the register mounted on the memory chip in order to confirm the result of the error correction. Therefore, the influence of the delay in some memory chips can be reduced, and the overall read speed of the storage device can be improved.
  • the storage device may be equipped with an error correction function (second encoder and second decoder) by a second code on the controller side.
  • the controller first reads the data fragment from the memory chip. Then, the controller starts error correction of the read data fragment. Even if there are data fragments for which error correction has not been completed, the controller can start erasure correction when the error correction of the number of data fragments that can be erased is completed. Therefore, even if there is a read delay in some memory chips or an error correction delay in some data fragments, the influence of the delay can be reduced and the overall read speed of the storage device can be improved. ..
  • the present technology can have the following configurations. (1) Each of a plurality of data fragments including a part of the data to be written is written to one of the plurality of memory chips having an error correction function. A processing circuit configured to read the data fragment corresponding to the read data from the memory chip, and A first encoder configured to encode the written data with an erasure correction code so that each of the data fragments contains parity. Erasure correction is performed using a part of the data fragments corresponding to the data to be read according to the completion status or success / failure of error correction of the data fragments in each of the memory chips acquired via the signal line. With a first decoder configured as controller.
  • the processing circuit is configured to refer to the signal line and read the data fragment in order from the memory chip for which error correction has been completed.
  • the first decoder makes erasure correction when the data fragment is read from a part of the memory chips in which the data fragment is written by the processing circuit. It is configured, The controller according to (1) or (2).
  • the first decoder is configured to perform erasure correction using the data fragment read by the processing circuit when at least one of the memory chips is performing error correction.
  • the controller according to any one of (1) to (3).
  • the processing circuit is configured to notify the host system of the completion status or success / failure of error correction of the data fragment in each of the memory chips.
  • a plurality of data fragments including a part of the data to be written are written to one of the plurality of memory chips, and the memory chip is written.
  • a processing circuit configured to read the data fragment corresponding to the read data from the memory chip, and A first encoder configured to encode the written data with an erasure correction code so that each of the data fragments contains parity.
  • a second encoder configured to encode the data fragment with an error correction code before the processing circuit writes the data fragment to the memory chip.
  • a second decoder configured so that the processing circuit corrects errors in the data fragment read from the memory chip.
  • the data fragment corresponding to the data to be read includes a first decoder configured to perform erasure correction using a part of the data fragment for which error correction by the second decoder has been completed. , controller.
  • the first decoder corrects erasure by using the remaining data fragment for which error correction has been completed when the second decoder corrects at least one of the data fragments. Is configured to do, The controller according to (6).
  • a plurality of memory chips having an error correction function and The data is encoded with an erasure correction code so that each of the divided data fragments of the data to be written contains parity.
  • the data is divided into a plurality of the data fragments, Each of the data fragments is written to one of the plurality of memory chips. Depending on the completion status or success / failure of error correction of the data fragment in each of the memory chips acquired via the signal line, some of the data fragments corresponding to the data to be read are used.
  • Storage device With a controller configured to perform erasure correction, Storage device. (9) The controller is configured to perform erasure correction using the read data fragment when at least one of the memory chips is performing error correction.
  • the memory chip corresponds to a second encoder configured to encode the data fragment written by the controller with an error correction code and then save it in a memory cell, and the data to be read.
  • a second decoder configured to perform error correction of the data fragment and notify the controller of the completion status or success / failure of the error correction via the signal line.
  • the controller is electrically connected to a plurality of the memory chips via individual data lines.
  • the controller is electrically connected to a plurality of the memory chips via a common data line.
  • the storage device according to any one of (8) to (11).
  • the memory chip includes a NAND flash memory.
  • the controller is configured to notify the host system of the completion status or success / failure of error correction of the data fragment in each of the memory chips.
  • An interface conversion circuit configured to convert the data read by the controller into a packet that can be transferred on the network and to convert the packet received from the network into a format that can be input to the controller is further provided.
  • the storage device according to any one of (8) to (14).
  • the data is encoded with an erasure correction code so that each of the divided data fragments of the data to be written contains parity.
  • the data is divided into a plurality of the data fragments, and the data is divided into a plurality of the data fragments.
  • the data fragment is encoded by an error correction code and written to one of the plurality of memory chips.
  • error correction of the data fragment read from the memory chip is performed.
  • the controller includes a controller configured to perform erasure correction using a part of the data fragments for which error correction has been completed.
  • Storage device 17.
  • the controller is electrically connected to a plurality of the memory chips via individual data lines.
  • the controller is electrically connected to a plurality of the memory chips via a common data line.
  • the memory chip includes a NAND flash memory.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Read Only Memory (AREA)

Abstract

[課題]高い信頼性と性能とを両立するコントローラおよび記憶装置を提供する。 [解決手段]本開示によるコントローラは、ライトされるデータの一部を含む複数のデータ断片を、それぞれ誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える。

Description

コントローラおよび記憶装置
 本開示は、コントローラおよび記憶装置に関する。
 近年、微細化プロセス、多層構造、マルチレベルセルなどの技術が採用されたNANDフラッシュメモリなどのメモリの開発が行われている。特に、最先端のメモリによって、記憶装置の大容量化が期待されている。最先端のメモリの適用においては、用途に応じた容量、速度、信頼性などの要件を満たすことが求められる。
特開2014-238871号公報 特開2010-79485号公報
 ただし、最先端のメモリでは、微細化プロセスまたはマルチレベルセルの採用に伴うビット誤り率の増大への対策が必要となる。このため、LDPC(Low Density Parity Check)符号、軟判定繰り返し符号などの誤り訂正符号の導入が進められている。これらの符号は、高い誤り訂正能力を有する反面、メモリチップ・コントローラ間のトラフィック、消費電力、レイテンシなど性能面への影響が課題となっている。
 そこで、本開示は、高い信頼性と性能とを両立するコントローラおよび記憶装置を提供する。
 本開示の一態様によるコントローラは、ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備えていてもよい。
 前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されていてもよい。
 前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されていてもよい。
 前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されていてもよい。
 前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
 本開示の一態様によるコントローラは、ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備えていてもよい。
 前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されていてもよい。
 本開示の一態様による記憶装置は、誤り訂正機能を有する複数のメモリチップと、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、前記データを複数の前記データ断片に分割し、前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備えていてもよい。
 前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されていてもよい。
 前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含んでいてもよい。
 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
 前記メモリチップは、NANDフラッシュメモリを含んでいてもよい。
 前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備えていてもよい。
 本開示の一態様による記憶装置は、複数のメモリチップと、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、前記データを複数の前記データ断片に分割し、前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備えていてもよい。
 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されていてもよい。
 前記メモリチップは、NANDフラッシュメモリを含んでいてもよい。
 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備えていてもよい。
本開示による記憶装置を含むシステムの例を示した図。 ネットワークを介してホストシステムに接続された記憶装置の例を示す図。 本開示による記憶装置の例を概略的に示したブロック図。 本開示によるコントローラの例を概略的に示したブロック図。 インタフェース回路が有する信号線の例を示す図。 本開示によるインタフェース回路が有する信号線の例を示す図。 本開示によるメモリチップの例を概略的に示したブロック図。 データのライト処理の例を示したフローチャート。 複数のメモリチップにデータ断片の読み出し要求を行った後における動作の例を示したタイミングチャート。 コントローラにおける状態遷移の例を示す図。 リード時におけるデータフローを概念的に示した図。 消失訂正処理の実行タイミングの例を示した図。 データのリード処理の例を示したフローチャート。 変形例1による記憶装置の例を概略的に示したブロック図。 変形例1による記憶装置の読み出し処理の例を示したフロー図。 変形例1による記憶装置における消失訂正処理の実行タイミングの例を示したタイミングチャート。 信号線Read Readyの配線例を示したブロック図。 変形例2によるコントローラの例を概略的に示したブロック図。 変形例2によるメモリチップの例を概略的に示したブロック図。 変形例2におけるデータのライト処理の例を示したフローチャート。 すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャート。 変形例2で共通のデータ線が使われる場合における記憶装置のリード時のデータフローを概念的に示した図。 変形例2で共通のデータ線が使われる場合における記憶装置のリード処理の例を示すタイミングチャート。 すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャート。 変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード時のデータフローを概念的に示した図。 変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード処理の例を示すタイミングチャート。 変形例2におけるデータのリード処理の例を示したフローチャート。
 以下に添付図面を参照しながら、本開示の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
 図1は、本開示による記憶装置を含むシステムの例を示している。図1のシステム1は、ホストシステム2と、ホストシステム2に接続された記憶装置100とを含んでいる。ホストシステム2は、例えば、CPU(中央処理装置)を備えたコンピュータなどの情報処理装置である。記憶装置100は、ホストシステム2が利用可能な記憶領域を提供する。
 記憶装置100は、複数のメモリチップ20と、コントローラ10とを備える。コントローラ10は、バス3を介してホストシステム2に接続されている。バス3は、例えば、PCI Express、M.2、U.2、Serial Attached SCSI、NVM Express、USB(Universal Serial Bus)などの物理インタフェースである。コントローラ10と、ホストシステム2との間の物理インタフェースの種類については、問わない。メモリチップ20は、例えば、NANDフラッシュメモリ、NORフラッシュメモリ、相変化型メモリ、磁気抵抗メモリ、抵抗変化型メモリなどの不揮発性メモリを含む。なお、メモリチップ20は、複数の種類の不揮発性メモリを組み合わせたものであってもよい。また、メモリチップ20は、DRAM、SRAMなどの揮発性メモリを含んでいてもよい。
 要求される記憶容量、ライト速度、リード速度または使われるメモリセルの信頼性に応じて記憶装置100に実装するメモリチップ20の数を決めることができる。図1には、4つのメモリチップ20が示されている。ただし、記憶装置100に実装されるメモリチップ20の数Nについては、限定しない。なお、記憶装置100は、バッテリーまたはキャパシタなど電力を蓄えることが可能な構成要素を備えていてもよい。これらの構成要素は、突然の電源断時に、揮発性メモリ上のデータを不揮発性メモリにバックアップするために必要な電力を供給し、データの損失を防止する。
 図2は、ネットワークを介してホストシステムに接続された記憶装置の例を示している。図2のシステム1Aは、ホストシステム2と、記憶装置100Aとを含んでいる。ホストシステム2は、ネットワーク5を介して記憶装置100Aと通信することが可能である。ネットワーク5は、例えば、TCP/IP、Fibre Channel、Infinibandなどによるパケット通信が可能な通信ネットワークである。ネットワーク5として、有線、無線または有線と無線の組み合わせによって構築された通信ネットワークを使うことができる。ネットワーク5で使われる通信プロトコルの種類については、問わない。
 記憶装置100Aは、記憶装置100の構成要素に加え、インタフェース変換回路4を備えている。インタフェース変換回路4は、コントローラ10と、ネットワーク5との間に接続されている。インタフェース変換回路4は、コントローラ10から出力されるデータをネットワーク5で転送可能な形式(例えば、パケット)に変換する。また、インタフェース変換回路4は、ホストシステム2から送信されたパケットをコントローラ10に入力可能な形式のデータに変換する。インタフェース変換回路4として、例えば、NVMe over Fabricsに対応した回路を使うことができる。
 インタフェース変換回路4の機能によって、ホストシステム2は、ネットワーク5を介して記憶装置のリード処理またはライト処理を行うことが可能となる。なお、図2の例のようにインタフェース変換回路4と、コントローラ10とを別個の回路に分けず、インタフェース変換回路4に相当する機能と、コントローラ10に相当する機能とを統合した回路を使ってもよい。
 図3のブロック図は、本開示による記憶装置の例を概略的に示している。図3は、記憶装置100におけるコントローラ10と、複数のメモリチップ20との間の配線の例を示している。信号線DQ(図3の実線)は、メモリチップ20とコントローラ10との間のデータ線に相当している。図3の構成では、コントローラ10に接続された1本の信号線DQが分岐し、複数のメモリチップ20に接続されている。信号線DQは、データリードとデータライトの用途で共用されるものであってもよい。また、データリードとデータライトの用途で別個の信号線が用意されていてもよい。一方、図3の破線は、メモリチップ20におけるデータリードの可否を示す状態信号をコントローラ10に供給する信号線Read Readyを示している。図3では、コントローラ10が個別の信号線Read Readyを介してそれぞれのメモリチップ20に接続されている。
 なお、本開示による記憶装置は、図3に示されていないその他の信号線を備えていてもよい。また、図3に示したデータ線および信号線Read Readyの配線は、一例にしかすぎない。したがって、データ線および信号線Read Readyの配線は、これとは異なっていてもよい。
 図4のブロック図は、本開示によるコントローラの例を概略的に示している。図4のコントローラ10は、例えば、マイクロプロセッサを含むSystem-on-a-chipなどのハードウェア回路である。ハードウェア回路の例としては、各種のプロセッサ、ASICまたはFPGAが挙げられる。ただし、コントローラ10を実装するために使われるハードウェア回路の種類については、問わない。コントローラ10の少なくとも一部の機能は、マイクロプロセッサ上で動作するファームウェアなどのプログラムによって実行されていてもよい。この場合、コントローラ10は、プログラムおよびプログラムの実行に必要なデータを保存するメモリを備えていてもよい。図4のコントローラ10は、処理回路11と、ルックアップテーブル12と、ブロック管理テーブル13と、第1符号化器14と、第1復号器15と、第1インタフェース回路16とを備えている。
 コントローラ10は、ルックアップテーブル12を使って、論理アドレスと、複数のメモリチップ20における物理アドレスとの対応関係を管理する。論理アドレスとして、例えば、ホストから指定される論理ブロックアドレス(LBA)を使うことができる。また、物理アドレスとして、例えば、物理ブロックアドレスを使うことができる。ルックアップテーブル12において、LBAと関連付けられている物理ブロックは、有効ブロックとよばれる。一方、ルックアップテーブル12において、いずれのLBAとも関連付けられていない物理ブロックは、無効ブロックとよばれる。コントローラ10は、データのライトまたは消去が行われるときに、ルックアップテーブル12を更新することができる。
 コントローラ10は、ブロック管理テーブル13を使って、メモリチップ20の物理ブロックごとの消去回数、メモリチップ20の不良ブロック、有効ブロック/無効ブロックの情報を管理してもよい。コントローラ10は、ルックアップテーブル12およびブロック管理テーブル13を使って、物理ブロックにおけるウェアレベリングを行ってもよい。ウェアレベリングでは、ホストからデータのライト要求を受信した場合、無効ブロックのうち、消去回数の最も少ない物理ブロックをデータのライト先に指定する。これにより、メモリチップ20の複数の物理ブロックにおける消去回数を均一化し、メモリセルの劣化を遅らせることができる。
 コントローラ10は、ホストシステム2がライトするデータを一時的に保存するライトバッファを備えていてもよい。また、コントローラ10は、メモリチップ20からリードされたデータを一時的に保存するリードバッファを備えていてもよい。バッファとして、例えば、SRAMまたはDRAMなどの揮発性メモリを使うことができる。ライトバッファまたはリードバッファとして、コントローラ10の外部に配置された揮発性メモリを使ってもよい。
 メモリチップ20でNANDフラッシュメモリが使われている場合、コントローラ10は、データのリードおよびライトをページ単位で行うことができる。1ページのサイズは、例えば、512バイト、1キロバイト、2キロバイト、4キロバイト、8キロバイトである。ただし、ページのサイズについては、問わない。
 コントローラ10は、1ページより大きいサイズのデータのライト要求を受けた場合、同一物理ブロック内の複数のページへ順番に書き込みを行うことができる。ただし、コントローラ10は、ライト済みのページに上書きをすることができない。この代わり、コントローラ10は、NANDフラッシュメモリ上のデータをページより大きい粒度である、ブロックの単位で消去する。1ブロックは、例えば、32ページ~512ページを含む。ただし、ブロックに含まれるページ数は、これとは異なっていてもよい。
 コントローラ10は、NANDフラッシュメモリ上のデータを更新するために、Read-Modify-Writeとよばれる処理を実行する。例えば、コントローラ10がライト済みのファイルを更新する要求を受けた場合を想定する。この場合、コントローラ10は、該当するファイルを含む物理ブロックのデータを読み出し、バッファ内に保存する。そして、コントローラ10は、バッファ上でファイルの更新を行う。そして、コントローラ10は、以前ファイルがライトされていた物理ブロックとは異なる物理ブロック内に更新後のファイルと書き込む。このとき、無効ブロックにデータを書き込む場合には、物理ブロックの消去を行ってからファイルの書き込みを行う。
 本開示のように、複数のメモリチップ20を備えた記憶装置を使う場合、コントローラ10の処理回路11は、データのライト時に、データをデータ断片に分割し、データ断片を並列的にそれぞれのメモリチップ20の物理ブロックに書き込むことができる。データ断片のサイズは、使用するメモリの種類またはメモリの使用に応じて決めることができる。例えば、NANDフラッシュメモリを使う場合には、データ断片を物理ブロックに等しいサイズまたは物理ブロックの正の整数倍に等しいサイズにすることができる。
 コントローラ10は、複数のメモリチップ20に跨って連続的なブロックアドレスを設定してもよい。このブロックアドレスは、上述の物理ブロックアドレスと同一のアドレスであってもよい。また、このブロックアドレスとして、上述の物理ブロックアドレスを所定の規則または数式などによって変換して得られるアドレスを使ってもよい。コントローラ10は、上述の処理を実現するために、それぞれのメモリチップ20から選択された物理ブロックの集合であるスーパーブロックを定義してもよい。例えば、メモリチップ20がN個ある場合、N個の物理ブロックまたはN×i(iは、正の整数)個の物理ブロックを含むスーパーブロックを定義することができる。この場合、コントローラ10は、スーパーブロック単位でデータの消去を行ってよい。また、コントローラ10は、個別の物理ブロック単位でデータの消去を行ってもよい。
 コントローラ10は、インターリーブされたメモリおよびストライピングされたハードディスクと同じように、複数のメモリチップ20を使うことが可能である。このため、単一のメモリチップ20を使う場合と比べてライト処理およびリード処理を高速化することが可能となる。コントローラ10は、必ず記憶装置のすべてのメモリチップ20に対してデータ断片を書き込まなくてよい。例えば、記憶装置がM個のメモリチップ20を備える場合、ライト対象のデータのサイズまたはメモリチップ20の状態に応じて、Mより少ない数のメモリチップ20にデータ断片を書き込んでもよい。
 コントローラ10は、複数のメモリチップ20におけるガベージコレクションを行ってもよい。ガベージコレクションの処理では、複数の有効ブロック内のページに分散されて保存されているライト済みのデータが読み出される。そして、ライト済みのデータが以前より少ない数のブロックに集約されて、複数のメモリチップ20に書き込まれる。これにより、コントローラ10は、データの書き込みに使用可能なフリーブロックを確保することができる。
 第1符号化器14は、消失訂正符号を使い、ライト対象のデータにパリティを付加する。ライト処理時にそれぞれのメモリチップ20に書き込まれるデータサイズに応じて、パリティが付加される単位を決めることができる。例えば、第1符号化器14は、M(Mは、1より大きい整数)ブロック分のデータごとに、パリティを付加することができる。Mは、メモリチップ20の個数Nに等しい値に設定してもよい。また、MをN/j(jは、1より大きい整数)に設定してもよい。さらに、Mを上述のスーパーブロックに含まれる物理ブロック数に等しい値に設定してもよい。例えば、MをN×iに設定することができる。ただし、第1符号化器14は、これとは異なる単位でパリティを付加してもよい。例えば、第1符号化器14は、所定のページ数ごとにパリティを付加してもよい。
 第1符号化器14は、例えば、BCH符号、RS符号、低密度パリティ検査(LDPC)符号、またはラプター符号による符号化を行うことができる。第1符号化器14は、消失訂正が可能であれば、どの種類の誤り訂正符号(ECC)を使ってもよい。第1符号化器14が使用する誤り訂正符号を第1符号とよぶものとする。
 第1復号器15は、第1符号化器14と同じ種類の誤り訂正符号を使い、データの復号を行うように構成されている。例えば、第1復号器15は、データのリード時に、後述の第2符号による誤り訂正が完了したデータ断片を使い、第1符号による消失訂正を行うことができる。例えば、第1復号器15は、M個のデータ断片のうち、M-u個のデータ断片の誤り訂正が完了したときに、消失訂正を行うことができる。消失訂正の能力は、データライト時に付加されるパリティの比率および採用される誤り訂正符号の種類に依存する。このため、消失訂正時に許容される欠損データ断片の数uは、[1,M-1]の範囲の任意の整数をとりうる。なお、第1復号器15を使って消失訂正だけでなく、繰り返し復号などを用いたデータの誤り訂正を行ってもよい。
 監視部17は、例えば、処理回路11の内部の構成要素である。監視部17は、データのリード時に、第2符号による誤り訂正が完了したデータ断片の数を監視する。図4の構成の場合、監視部17は、コントローラ10が複数のメモリチップ20より第1復号器15による消失訂正が可能なM-u個のデータ断片を受信したときに、第1復号器15に通知を行う。これにより、第1復号器15は、消失訂正を開始することができる。
 図5および図6は、第1インタフェース回路16が有する信号線の例を示している。このように、コントローラ10は、第1インタフェース回路16を介して複数のメモリチップ20と電気的に接続されている。はじめに、図5および図6で共通している信号線について説明する。コントローラ10は、信号線RESETを介してメモリチップ20にリセット用の信号を送信する。コントローラ10は、信号線CKおよび信号線CK#を使って、メモリチップ20に差動クロックを供給する。コントローラ10は、信号線CSを介して、メモリチップ20にチップセレクト信号を送信する。
 信号線DQ、信号線DQSおよび信号線DQS#では、コントローラ10と、メモリチップ20との間で双方向の通信が可能となっている。信号線DQは、コントローラとメモリチップ間のデータ線に相当する。信号線DQSおよび信号線DQS#は、データ転送用のクロック信号が供給されるデータストローブである。図3の構成のように、1本の信号線DQが複数のメモリチップ20で共有される場合、異なるメモリチップ20から読み出されたデータは、シリアルに転送される。
 図5の信号線Ready/Busyは、それぞれのメモリチップ20と、コントローラ10との間を接続する。それぞれのメモリチップ20は、当該メモリチップ20に格納されたデータへのアクセスが行われているときに、信号線Ready/Busyの電圧をHIGHにする。一方、それぞれのメモリチップ20は、当該メモリチップ20に格納されたデータへのアクセスが行われていないときに、信号線Ready/Busyの電圧をLOWにする。
 一方、図6は、本開示によるインタフェース回路が有する信号線の例を示している。図6の信号線Read Readyは、信号線Ready/Busyと同様、それぞれのメモリチップ20と、コントローラ10との間を接続する。信号線Read Readyの用途は、信号線Ready/Busyと異なっている。信号線Read Readyは、該当するメモリチップ20でデータ断片の誤り訂正処理が行われているか否かを示す。例えば、メモリチップ20は、データ断片の誤り訂正処理の実行中に、信号線Read Readyの電圧をHIGHにする。一方、メモリチップ20は、データ断片の誤り訂正処理を行っていないときに、信号線Read Readyの電圧をLOWにすることができる。
 上述の信号線Read Readyの使用方法は、一例にしかすぎない。例えば、それぞれの条件において上述のHIGHとLOWが反転した電圧レベルを使ってもよい。また、電圧信号のパルスまたは電流信号の向きによって状態を表現してもよい。
 上述では、メモリチップ20が信号線Read Readyを使って誤り訂正処理の完了状況をコントローラ10に通知する場合を例に説明した。ただし、メモリチップ20は、信号線Read Readyを使って誤り訂正の成否をコントローラ10に通知してもよい。例えば、メモリチップ20は、信号線Read Readyを使って誤り訂正が成功した旨をコントローラ10に通知してもよい。また、メモリチップ20は、信号線Read Readyを使って誤り訂正が失敗した旨をコントローラ10に通知してもよい。
 コントローラ10の監視部17は、信号線Read Readyを参照すれば、メモリチップ20における誤り訂正が完了したか否かを確認することができる。これにより、監視部17は、レジスタの読み出しを行わずに、簡易な方法でメモリチップ20における処理状況に関する情報を得ることができる。これにより、処理時間を短縮することができる。なお、信号線Read Readyとして、必ず専用の信号線を用意しなくてもよい。例えば、信号線Read Readyは、複数の用途のために兼用される信号線であってもよい。
 図7のブロック図は、本開示によるメモリチップの例を概略的に示している。図7のメモリチップ20は、メモリ21と、リードライト回路22とを備えている。メモリ21は、例えば、NANDフラッシュメモリなどの不揮発性メモリであり、メモリチップ20の記憶領域を提供する。ただし、メモリ21は、その他の種類のメモリであってもよい。データアクセスの局所性に対応するために、メモリ21は、階層化されたキャッシュ領域を含んでいてもよい。また、メモリ21は、ライト時およびリード時に使われるバッファメモリを含んでいてもよい。バッファメモリとして、例えば、SRAMまたはDRAMなどの揮発性メモリを使うことができる。すなわち、メモリ21は、複数の種類のメモリを含んでいてもよい。リードライト回路22は、第2インタフェース回路23と、第2符号化器24と、第2復号器25とを含んでいる。第2インタフェース回路23は、複数の信号線(例えば、図6の信号線)を介して、コントローラ10の第1インタフェース回路16と電気的に接続されている。
 第2符号化器24は、リードライト回路22がデータ断片のライト要求を受信したときに誤り訂正符号を使い、データ断片にパリティを付加する。例えば、それぞれのメモリチップ20に物理ブロックと等しいサイズのデータ断片が書き込まれる場合、第2符号化器24は、物理ブロック単位で符号化を行うことができる。また、それぞれのメモリチップ20にi個の物理ブロックと等しいサイズのデータ断片が書き込まれる場合、第2符号化器24は、i個の物理ブロックごとに符号化を行ってもよい。
 さらに、第2符号化器24は、メモリチップ20に書き込まれるデータ断片のサイズに関わらず、物理ブロックより小さい粒度で符号化を行ってもよい。例えば、第2符号化器24は、ページ単位または複数ページ単位で符号化を行ってもよい。ただし、第2符号化器24による符号化の粒度については、問わない。一般に、符号化の粒度は、メモリセルにおけるエラー発生率、メモリの劣化状態、記憶装置100の用途などに応じて決められる。
 第2符号化器24は、例えば、ハミング符号、巡回符号、疎グラフ符号または、畳み込み符号などの誤り訂正符号を使うことができる。ただし、第2符号化器24が使用する誤り訂正符号の種類については、問わない。第2符号化器24が使用する誤り訂正符号を第2符号とよぶものとする。第2符号は、上述の第1符号と同じ種類の符号であってもよいし、異なる種類の符号であってもよい。
 第2復号器25は、リードライト回路22がデータ断片の読み出し要求を受信したときに、読み出されるべきデータ断片の誤り訂正を行う。第2復号器25は、第2符号化器24と、同一の誤り訂正符号を使って、データ断片の復号を行うものとする。例えば、第2符号化器24は、データ断片の誤り訂正処理の実行中に信号線Read Readyの電圧をHIGHにする。この場合、第2符号化器24は、データ断片の誤り訂正処理が完了したら、信号線Read Readyの電圧をLOWにする。上述のように第2符号化器24は、これとは異なる方法で誤り訂正処理の完了状況または誤り訂正処理の成否をコントローラ10に通知してもよい。
 図8のフローチャートは、データのライト処理の例を示している。以下では、図8のフローチャートを参照しながら、本開示による記憶装置におけるライト処理の例を説明する。
 はじめに、コントローラ10は、ホストシステム2よりデータのライト要求を受信する(ステップS101)。そして、コントローラ10の第1符号化器14は、複数(例えば、M)ブロック分のデータごとに、第1符号による符号化を行う(ステップS102)。次に、コントローラ10の処理回路11は、第1符号によって符号化されたデータを複数のデータ断片に分割する(ステップS103)。例えば、メモリチップ20で使われている物理ブロックのサイズ、同一のメモリチップ20に書き込まれる物理ブロック数に応じて、データの分割数(データ断片のサイズ)を決めることができる。コントローラ10は、データ断片を一時的にライトバッファに保存してもよい。
 そして、コントローラ10は、それぞれのデータ断片を対応するメモリチップ20に転送する(ステップS104)。ここで、コントローラ10は、上述のルックアップテーブル12を参照し、ホストシステム2から指定された論理ブロックアドレスを物理ブロックアドレスに変換してもよい。コントローラ10は、物理ブロックアドレスを得ることにより、データ断片の転送先となるメモリチップ20および当該メモリチップ20内の物理ブロックを特定することができる。また、コントローラ10は、上述のブロック管理テーブル13を参照し、データのライトが可能な物理ブロックを探索してもよい。
 次に、それぞれのメモリチップ20の第2符号化器24は、第2符号によってデータ断片を符号化する(ステップS105)。第2符号化器24は、バッファメモリ上に保存されたデータ断片を符号化し、パリティを付加してもよい。そして、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内に保存する。メモリ21に書き込まれる符号化後のデータ断片は、1物理ブロックサイズであってもよいし、複数物理ブロックのサイズであってもよい。最後に、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内の記憶領域に保存する(ステップS106)。
 ここまでは、本開示による記憶装置におけるライト処理について説明した。以下では、本開示による記憶装置におけるリード処理について述べる。
 図9は、複数のメモリチップにデータ断片の読み出し要求を行った後の動作例を示すタイミングチャートである。図9は、メモリチップ#1~#4の4個のメモリチップからデータ断片が読み出されたときの動作を示している。図9のタイミングチャートC1は、図5の信号線Read/Busyを有する記憶装置における動作を示している。一方、図9のタイミングチャートC2は、図6の信号線Read Readyを有する記憶装置における動作を示している。
 タイミングチャートC1には、信号線Ready/Busyにおける電圧レベルが示されている。一方、タイミングチャートC1には、信号線Read Readyにおける電圧レベルが示されている。いずれの信号線においても、LOWがメモリチップのReady状態(リードが可能な状態)を示しているものとする。また、タイミングチャートC1およびC2には、信号線DQを使って転送されるコマンドおよびデータが示されている。
 タイミングチャートC1において、コントローラ10は、Senseコマンドをメモリチップ#1~#4に送信している。そして、コントローラ10は、それぞれのメモリチップへシーケンシャルにRegReadコマンドを送信している。図9の例において、コントローラ10は、信号線Ready/Busyを参照し、メモリチップがready状態に遷移した順序でRegReadコマンドを送信している。
 コントローラ10は、RegReadコマンドを送信することにより、第2復号器25による誤り訂正処理の成否を示すレジスタの値を取得することができる。レジスタは、例えば、メモリチップのリードライト回路22に実装される。そして、コントローラ10は、レジスタの値を参照し、誤り訂正に成功しているメモリチップに対して、DatReadコマンドを送信する。図9の例では、メモリチップ#3において、誤り訂正が失敗し、その他のメモリチップにおいて、誤り訂正が成功している。したがって、コントローラ10は、メモリチップ#1、#2および#4に対して、DatReadコマンドを送信している。DatReadコマンドへの応答として、メモリチップ#1、#2および#4は、データ断片(Data #1、Data#4およびData#2)をコントローラ10に送信している。コントローラ10は、メモリチップからデータ断片を受信した後、メモリチップにClearコマンドを送信する。
 タイミングチャートC2においても、コントローラ10は、Senseコマンドをメモリチップ#1~#4に送信している。ただし、コントローラ10は、メモリチップにRegReadコマンドを送信していない。その代わりに、コントローラ10は、信号線Read Readyを参照し、誤り訂正が完了した順序でメモリチップにDatReadコマンドを送信している。図9の例では、メモリチップ#3における誤り訂正処理が遅延しているため、残りのメモリチップに対してDatReadコマンドが送信されている。コントローラ10は、応答として、残りのメモリチップからデータ断片(Data #1、Data#4およびData#2)を受信している。コントローラ10は、メモリチップからデータ断片を受信した後、メモリチップにClearコマンドを送信する。
 本開示による記憶装置では、信号線Read Readyを参照し、誤り訂正の完了したメモリチップよりデータ断片の読み出しを行う。このため、復号結果を確認するためにレジスタの値を読み出す必要がなくなる。複数のメモリチップに分散して保存されたデータのリード時におけるレイテンシを減らし、全体的なリード処理を高速化することが可能となる。
 図10は、本開示によるコントローラにおける状態遷移の例を示している。図10では、状態間の遷移の条件となるコマンドおよび信号線の状態を示している。例えば、コントローラ10がReady状態にあるメモリチップに対してDatReadコマンドを発行すると、当該メモリチップは、Reading状態に遷移する。データ断片の読み出しが完了すると、メモリチップは、DataEnd状態に遷移する。コントローラ10がDataEnd状態のメモリチップにClearコマンドを送信すると、メモリチップは、init状態に遷移する。そして、メモリチップは、一定期間の経過後、Sensing状態に遷移する。
 コントローラ10がSensing状態のメモリチップにSenseコマンドを送信すると、メモリチップは、WaitReady状態に遷移する。そして、信号線Read Readyの電圧がHIGHからLOWに変化すると、メモリチップは、Ready状態に遷移する。コントローラ10は、それぞれのメモリチップの状態を管理し、処理の整合性を保つことができる。なお、メモリチップの状態遷移は、図10に例示したものとは異なるものであってもよい。
 図11は、図3の構成のように、信号線DQが複数のメモリチップで共有されている場合におけるリード時のデータフローを概念的に示している。はじめに、複数のメモリチップで誤り訂正処理が行われ、誤り訂正処理の完了したメモリチップについて、シーケンシャルな読み出し処理が行われる(ステップS10)。そして、コントローラ10は、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS11)。
 例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS13)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS12)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10は、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
 図12のタイミングチャートは、消失訂正処理の実行タイミングの例を示している。図12の横軸は、時刻を示している。図12には、チップ#1~#5に対して、Senseコマンドが発行されている。チップ#1~#5のうち、チップ#1~#3およびチップ#5は、第2符号化器24による誤り訂正処理が完了し、Ready状態に遷移する。このとき、信号線Read Readyの電圧は、LOWになる。このため、コントローラ10は、チップ#1~#3およびチップ#5に対して、Readコマンドを発行する。一方、チップ#4は、Ready状態に遷移しないため、信号線Read Readyの電圧がHIGHのままとなる。このため、コントローラ10は、チップ#4に対してReadコマンドを発行しない。
 この結果、コントローラ10は、チップ#1~#3およびチップ#5から消失訂正用のパリティを含むデータ断片を読み出すことができる。コントローラ10の第1符号化器14は、読み出されたデータ断片を使って消失訂正を行い、データのリカバリを行う。リカバリしたデータは、ホストシステム2に転送される。
 このように、処理が遅延しているメモリチップからのデータ断片の読み出しを待たずに消失訂正を行うことにより、一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理の高速化を実現することができる。
 図13のフローチャートは、データのリード処理の例を示している。以下では、図13のフローチャートを参照しながら、本開示による記憶装置におけるリード処理の例を説明する。
 はじめに、コントローラ10は、ホストシステム2よりデータのリード要求を受信する(ステップS201)。そして、コントローラ10は、ルックアップテーブル12を参照し、リード対象のデータに相当する複数のデータ断片が保存されているメモリチップ20と、物理ブロックとを特定し、複数のメモリチップに対して該当する物理ブロックの読み出し開始を要求する(ステップS202)。次に、それぞれのメモリチップ20の第2復号器25は、物理ブロックにあるデータ断片の第2符号による誤り訂正を開始する(ステップS203)。ここで、それぞれのメモリチップ20は、信号線(例えば、上述の信号線Read Readyなど)を介して、データ断片の誤り訂正が完了した旨をコントローラ10に通知することができる。
 そして、コントローラ10は、対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了したか否かを判定する(ステップS204)。例えば、リード対象のデータに相当するデータ断片が記憶装置100のすべてのメモリチップ20に保存されている場合、コントローラ10は、ステップS204ですべてのメモリチップ20においてデータ断片の誤り訂正が完了したか否かを確認する。一方、リード対象のデータに相当するデータ断片が記憶装置100の一部のメモリチップ20に保存されている場合、コントローラ10は、ステップS204で一部のメモリチップ20についてデータ断片の誤り訂正が完了したか否かを確認すればよい。
 ステップS204における判定の結果に応じて、処理が分岐する。対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了した場合(ステップS204のYES)、コントローラ10の処理回路11は、誤り訂正の完了した複数のデータ断片を読み出して結合し、リード対象のデータを再構成する(ステップS205)。例えば、コントローラ10は、図9のタイミングチャートC2で例示したように、いずれかのメモリチップ20でデータ断片の誤り訂正の完了が確認された順に、データ断片を読み出してもよい。ただし、コントローラ10は、これとは異なるタイミングでデータ断片を読み出してもよい。なお、それぞれのメモリチップ20からデータ断片がシーケンシャルに読み出される場合、データ断片が読み出される順序については、問わない。例えば、コントローラ10は、バッファメモリまたはキャッシュメモリ上に複数のデータ断片を配置し、データの再構成を行うことができる。
 そして、コントローラ10の第1復号器15は、必要に応じて、第1符号によって再構成されたデータの誤り訂正を行うことができる(ステップS206)。ただし、コントローラ10は、ステップS206の処理を省略してもよい。最後に、コントローラ10は、リード対象のデータをホストシステム2に転送する(ステップS209)。
 対象となるすべてのメモリチップ20においてデータ断片の誤り訂正が完了していない場合(ステップS204のNO)、コントローラ10は、所定の数のメモリチップ20においてデータ断片の誤り訂正が完了したか否かを判定する(ステップS207)。ここで、所定の数として、第1復号器15が消失訂正を行うために必要なデータ断片の数M-uを使うことができる。ただし、ステップS207でこれより大きい整数値を使ってもよい。
 ステップS207における判定の結果に応じて、処理が分岐する。データ断片の誤り訂正が完了したメモリチップ20の数が所定の数に満たない場合(ステップS207のNO)、コントローラ10は、再びステップS204の判定を実行する。所定の数のメモリチップ20においてデータ断片の誤り訂正が完了した場合(ステップS207のYES)、コントローラ10は、誤り訂正の完了したデータ断片を読み出し、第1復号器15を使って第1符号によるデータの消失訂正を行う(ステップS208)。例えば、コントローラ10は、バッファメモリまたはキャッシュメモリ上にデータ断片を配置し、消失訂正を行うことができる。最後に、コントローラ10は、消失訂正したデータをホストシステム2に転送する(ステップS209)。
 図14のブロック図は、変形例1による記憶装置の例を概略的に示している。図14は、記憶装置101におけるコントローラ10と、複数のメモリチップ20との間の配線の構成例を示している。信号線DQ(図14の実線)は、メモリチップ20とコントローラ10との間のデータ線に相当する。図14では、コントローラ10が個別の信号線DQを介してそれぞれのメモリチップ20に接続されている。また、図3の記憶装置100と同様、コントローラ10は、個別の信号線Read Readyを介してそれぞれのメモリチップ20に接続されている。このように、本開示によるコントローラは、個別のデータ線によって複数のメモリチップ20と接続されていてもよい。図14の構成を採用すると、コントローラ10は、並列で複数のメモリチップとの間でデータ伝送を行うことができる。信号線DQは、データリードとデータライトの用途で共用されるものであってもよい。また、データリードとデータライトの用途のために別個の信号線が用意されていてもよい。
 なお、本開示による記憶装置は、図14に示されていないその他の信号線を備えていてもよい。また、図14に示したデータ線および信号線Read Readyの配線は、一例にしかすぎない。したがって、データ線および信号線Read Readyの配線は、これとは異なっていてもよい。
 図15は、図14の例のように、メモリチップごとに信号線DQが用意されている場合におけるリード時のデータフローを概念的に示している。はじめに、複数のメモリチップで誤り訂正処理が行われ、誤り訂正処理の完了したメモリチップ20について読み出し処理が行われる(ステップS10A)。ステップS10Aでは、複数のメモリチップ20について、並列的に読み出し処理が行われてもよい。そして、コントローラ10は、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定する(ステップS11)。
 例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS13)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS12)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10は、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。ステップS10Aを除けば、図15のデータフローは、上述の図11と同様である。
 図16のタイミングチャートは、変形例1による記憶装置における消失訂正処理の実行タイミングの例を示している。図16の横軸は、時刻を示している。図16のタイミングチャートでは、図12の例と同様に、チップ#4のみ、Ready状態に遷移せず、信号線Read Readyの電圧がHIGHのままとなっている。このため、コントローラ10は、チップ#1~#3およびチップ#5から消失訂正用のパリティを含むデータ断片を読み出す。コントローラ10の第1符号化器14は、読み出したデータ断片を使って消失訂正を行う。リカバリされたデータは、ホストシステム2に転送される。
 変形例1によるコントローラは、複数のデータ線(信号線DQ)を使い、複数のメモリチップ20から並列でデータ断片を読み出すことができる。このため、図16のタイミングチャートでは、図12と比べて所要時間が短くなっている。データ線が図14のように配線された記憶装置においても、処理が遅延しているメモリチップからのデータ断片の読み出しを待たずに消失訂正を行うことが可能である。一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することができる。
 上述では、メモリチップ20からコントローラ10に、第2符号による誤り訂正の状況が通知される場合を例に説明した。ただし、コントローラ10は、メモリチップ20における誤り訂正の状況をホストシステム2に通知してもよい。
 例えば、不揮発性メモリの効率的な活用または記憶装置の性能向上などの目的のために、ホストシステム2側で、ブロック管理またはメモリチップ20の制御の少なくとも一部を行う場合がありうる。このような場合、コントローラ10は、図1のバス3または図2のネットワーク5を介して、複数のメモリチップ20における誤り訂正の状況をホストシステム2に通知することができる。例えば、コントローラ10は、ホストシステム2に誤り訂正の完了したメモリチップ20の情報または誤り訂正の完了していないメモリチップ20の情報をホストシステム2に通知することができる。また、コントローラ10は、ホストシステム2に、メモリチップ20における誤り訂正の結果を通知してもよい。
 そして、通知を受けたホストシステム2は、コントローラ10に対してメモリチップ20からのデータ断片の読み出し、消失訂正の実行、または一定期間の待機などの指令を送信することができる。上述のコントローラ10が実行していた処理の少なくとも一部がホストシステム2によって実行される場合においても、記憶装置における全体的なリード処理の高速化を実現することが可能である。
 図17のブロックは、信号線Read Readyの配線例を示している。図17の記憶装置102では、コントローラ10に接続された1本の信号線Read Readyが分岐し、複数のメモリチップ20に接続されている。このように、複数のメモリチップ20における誤り訂正の完了状況または誤り訂正の成否は、共通の信号線を介して通知されてもよい。図17の構成が採用される場合、それぞれのメモリチップ20は、メモリチップ20の識別子とともに誤り訂正の完了状況または誤り訂正の成否を含む信号をコントローラ10に送信することができる。
 以下では、本開示によるコントローラの構成の概要を説明する。
 本開示によるコントローラは、処理回路と、第1符号化器と、第1復号器とを備えていてもよい。処理回路は、ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかのメモリチップに書き込み、リードされるデータに相当するデータ断片をメモリチップより読み出すように構成されている。第1符号化器は、それぞれのデータ断片がパリティを含むよう、ライトされるデータを消失訂正符号によって符号化するように構成されている。第1復号器は、信号線を介して取得したそれぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否に応じ、リードされるデータに相当するデータ断片のうち、一部を使って消失訂正を行うように構成されている。
 処理回路は、信号線を参照し、誤り訂正の完了したメモリチップから順にデータ断片を読み出すように構成されていてもよい。第1復号器は、処理回路がデータ断片の書き込まれたメモリチップのうち、一部のメモリチップからデータ断片が読み出されたときに消失訂正を行うように構成されていてもよい。第1復号器は、少なくともいずれかのメモリチップが誤り訂正を行っているときに、処理回路が読み出したデータ断片を使って消失訂正を行うように構成されていてもよい。処理回路は、それぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
 また、本開示による記憶装置の構成の概要も説明する。
 本開示による記憶装置は、誤り訂正機能を有する複数のメモリチップと、コントローラとを備えていてもよい。コントローラは、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、データを消失訂正符号によって符号化し、データを複数のデータ断片に分割し、データ断片のそれぞれを複数のメモリチップのうち、いずれかのメモリチップに書き込むように構成されている。また、コントローラは、信号線を介して取得されたそれぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否に応じ、リードされるデータに相当するデータ断片のうち、一部のデータ断片を使って消失訂正を行うように構成されている。コントローラは、少なくともいずれかのメモリチップが誤り訂正を行っているときに、読み出したデータ断片を使って消失訂正を行うように構成されていてもよい。
 本開示による記憶装置において、メモリチップは、第2符号化器と、第2復号器とを含んでいてもよい。第2符号化器は、コントローラが書き出したデータ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成されている。第2復号器は、リードされるデータに相当するデータ断片の誤り訂正を行い、信号線を介して誤り訂正の完了状況または成否をコントローラに通知するように構成されている。
 本開示による記憶装置において、コントローラは、個別のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。コントローラは、共通のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。メモリチップは、NANDフラッシュメモリを含んでいてもよい。コントローラは、それぞれのメモリチップにおけるデータ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されていてもよい。
 本開示による記憶装置は、インタフェース変換回路をさらに備えていてもよい。インタフェース変換回路は、コントローラがリードしたデータをネットワークで転送可能なパケットに変換し、ネットワークより受信したパケットをコントローラに入力可能な形式に変換するように構成されている。
 以下では、符号化器および復号器の配置が上述と異なる記憶装置の例について説明する。
 図18のブロック図は、変形例2によるコントローラの例を概略的に示している。図18のコントローラ10Aは、図4のコントローラ10の構成要素に加え、第2符号化器18と、第2復号器19とを備えている。第2符号化器18と、第2復号器19は、それぞれ図7のメモリチップ20の第2符号化器24と、第2復号器25に相当する機能を備える。すなわち、本開示による記憶装置では、コントローラ側で第2符号による符号化の処理および第2符号による誤り訂正(復号)の処理が行われてもよい。なお、第2符号による符号化の処理および第2符号による誤り訂正処理がコントローラ側で実行される場合、メモリチップとコントローラとの間の信号線Read Readyを省略することが可能である。
 コントローラ10Aは、第2符号化器18と第2復号器19のペアを複数個備えていてもよい。図18では、回路ブロック1000が第2符号化器18と、第2復号器19のペアを含んでいる。例えば、個別のデータ線を介してそれぞれのメモリチップに接続されているコントローラ10Aが、それぞれのメモリチップのライト/リードのために、専用の第2符号化器18/第2復号器19を使用できるよう、メモリチップ20の数に等しいM個の回路ブロック1000を用意してもよい。これにより、並列的なライト/リードが発生するときに、第2符号化器18/第2復号器19が処理上のボトルネックとなることを防ぐことができる。ただし、コントローラ10Aが備える第2符号化器18および第2復号器19の個数については、限定しない。
 図19のブロック図は、変形例2によるメモリチップの例を概略的に示している。図19のメモリチップ20Aは、メモリ21と、第2インタフェース回路23とを備えている。図18に例示したように、コントローラ側に第2符号化器および第2復号器が配置されている場合、メモリチップ側の第2符号化器および第2復号器を省略してもよい。第2符号化器24および第2復号器25が省略されている点を除けば、メモリチップ20Aの構成および機能は、図7のメモリチップ20と同様である。
 図20のフローチャートは、変形例2におけるデータのライト処理の例を示している。以下では、図20のフローチャートを参照しながら、本開示による記憶装置におけるライト処理の例を説明する。
 はじめに、コントローラ10Aは、ホストシステム2よりデータのライト要求を受信する(ステップS111)。そして、コントローラ10Aの第1符号化器14は、複数(例えば、M)ブロック分のデータごとに、第1符号による符号化を行う(ステップS112)。次に、コントローラ10Aの処理回路11は、第1符号によって符号化されたデータを複数のデータ断片に分割する(ステップS113)。例えば、メモリチップ20Aで使われている物理ブロックのサイズ、同一のメモリチップ20Aに書き込まれる物理ブロック数に基づいてデータの分割数(データ断片のサイズ)を決めることができる。コントローラ10Aは、データ断片を一時的にライトバッファに保存してもよい。
 そして、コントローラ10Aの第2符号化器18は、第2符号によりデータ断片を符号化する(ステップS114)。それぞれのメモリチップ20Aに書き込まれるデータサイズに基づき、第2符号化器18による符号化の粒度を決めることができる。例えば、メモリチップ20Aに書き込まれるデータ断片が物理ブロックのサイズに等しい場合、物理ブロック単位または物理ブロックの1/s倍(sは、1より大きい整数)の単位で符号化を行ってもよい。また、メモリチップ20Aに書き込まれるデータ断片がi個の物理ブロックのサイズに等しい場合、i個の物理ブロックごと、物理ブロックごと、または物理ブロックの1/s倍の単位で符号化を行うことができる。ただし、第2符号化器18による符号化の粒度は、これとは異なっていてもよい。
 次に、コントローラ10Aは、それぞれの符号化されたデータ断片を対応するメモリチップ20Aに転送する(ステップS115)。ここで、コントローラ10Aは、上述のルックアップテーブル12を参照し、ホストシステム2から指定された論理ブロックアドレスを物理ブロックアドレスに変換してもよい。コントローラ10Aは、物理ブロックアドレスを得ることにより、データ断片の転送先となるメモリチップ20Aおよび当該メモリチップ20A内の物理ブロックを特定することができる。また、コントローラ10Aは、上述のブロック管理テーブル13を参照し、データ断片の書き込みが可能な物理ブロックを探索してもよい。最後に、それぞれのメモリチップ20は、第2符号によって符号化されたデータ断片をメモリ21内に書き込む(ステップS116)。
 図18および図19のコントローラ10Aと、複数のメモリチップ20Aとの間の信号線の構成には、複数のパターンがありうる。例えば、図3の例のように、コントローラ10Aは、共通のデータ線を介して複数のメモリチップ20Aと接続されていてもよい。以下では、データ転送に共通のデータ線が使われる場合におけるリード処理の例を説明する。
 図21は、コントローラ10Aが共通のデータ線を介して複数のメモリチップ20Aと接続されており、すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャートである。図21の横軸は、時刻を示している。図21の例で、コントローラ10Aは、メモリチップ#1~#5よりシーケンシャルに読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
 図21の例では、メモリチップ#4から読み出したデータ断片の誤り訂正ができないと判定されてから、第1復号器15がメモリチップ#1、#2、#3および#5から読み出したデータ断片を使い、第1符号による消失訂正処理を行っている。したがって、メモリチップ#4に影響されて記憶装置における全体的なリード処理が遅延している。図21の処理が行われる場合、メモリチップ#4から読み出したデータ断片の誤り訂正が遅れて完了する場合にも、全体的なリード処理が遅延するおそれがある。そこで、本開示によるコントローラおよび記憶装置のように、誤り訂正処理が未完了のデータ断片があっても、誤り訂正の完了したデータ断片を使って消失訂正処理を実行してもよい。
 図22は、変形例2で共通のデータ線が使われる場合における記憶装置のリード時のデータフローの例を概念的に示している。はじめに、コントローラ10Aは、複数のメモリチップ20Aからシーケンシャルにデータ断片を読み出す(ステップS20)。そして、コントローラ10Aは、読み出したデータ断片について、第2符号による誤り訂正処理を行う(ステップS21)。図22の例のように、コントローラ10Aは、第2符号による誤り訂正処理を並列的に行ってもよい。また、コントローラ10Aは、第2符号による誤り訂正処理をシーケンシャルに行ってもよい。
 そして、コントローラ10Aは、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS22)。例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS24)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS23)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10Aは、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
 図23は、変形例2で共通のデータ線が使われる場合における記憶装置のリード処理の例を示すタイミングチャートである。図23の横軸は、時刻を示している。図23の例でも、コントローラ10Aは、メモリチップ#1~#5よりシーケンシャルに読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
 図23の例では、第1復号器15が第1符号による消失訂正が可能な数のデータ断片の消失訂正が完了したときに消失訂正処理を行っている。すなわち、第1復号器15は、メモリチップ#1、#2、#3および#5から読み出したデータ断片を使って第1符号による消失訂正処理を行っている。コントローラ10Aは、メモリチップ#4から読み出したデータ断片の誤り訂正処理の完了または誤り訂正の失敗判定がされるまで待たない。したがって、一部のメモリチップにおける処理遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することが可能である。
 また、図14の例のように、コントローラ10Aは、個別のデータ線を介してそれぞれのメモリチップ20Aに接続されていてもよい。以下では、個別のデータ線と使ってデータ転送が行われる場合におけるリード処理の例を説明する。
 図24は、コントローラ10Aが個別のデータ線を介してそれぞれのメモリチップ20Aに接続されており、すべてのメモリチップから読み出されたデータの誤り訂正処理が完了するまで待機する場合におけるタイミングチャートである。図24の横軸は、時刻を示している。図24の例で、コントローラ10Aは、メモリチップ#1~#5の並列的な読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出されたデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
 図24の例では、メモリチップ#4から読み出したデータ断片の誤り訂正ができないと判定されてから、第1復号器15がメモリチップ#1、#2、#3および#5から読み出したデータ断片を使い、第1符号による消失訂正処理を行っている。したがって、メモリチップ#4に影響されて記憶装置における全体的なリード処理が遅延している。図24の処理が行われる場合、メモリチップ#4から読み出したデータ断片の誤り訂正が遅れて完了する場合にも、全体的なリード処理が遅延するおそれがある。そこで、本開示によるコントローラおよび記憶装置のように、誤り訂正処理が未完了のデータ断片があっても、誤り訂正の完了したデータ断片を使って消失訂正処理を実行してもよい。
 図25は、変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード時のデータフローの例を概念的に示している。はじめに、コントローラ10Aは、複数のメモリチップ20Aから並列でデータ断片を読み出す(ステップS20A)。そして、コントローラ10Aは、読み出したデータ断片について、第2符号による誤り訂正処理を行う(ステップS21)。図22の例のように、コントローラ10Aは、第2符号による誤り訂正処理を並列的に行ってもよい。また、コントローラ10Aは、第2符号による誤り訂正処理をシーケンシャルに行ってもよい。
 そして、コントローラ10Aは、リード処理の開始時より経過した時間および/または誤り訂正が完了したデータ断片数に基づき、処理内容を決定することができる(ステップS22)。例えば、ホストシステム2からリード要求を受けたときから所定の時間内に、すべてのデータ断片の誤り訂正が完了した場合、コントローラ10の処理回路11は、データ断片を結合し、リードされるべきデータを再構成する(ステップS24)。再構成されたデータは、ホストシステム2に転送される。また、ホストシステム2からリード要求を受けたときから所定の時間内に、第1符号化器14による消失訂正が可能な数のデータ断片の誤り訂正が完了した場合、消失訂正を行う(ステップS23)。消失訂正によって再構成されたデータは、ホストシステム2に転送される。なお、ホストシステム2からリード要求を受けたときから所定の時間内に、上述のいずれの条件も満たされない場合、コントローラ10Aは、リード処理を中断し、ホストシステム2にリード失敗の通知を行ってもよい。
 図26は、変形例2でメモリチップごとにデータ線が用意されている場合における記憶装置のリード処理の例を示している。図26の横軸は、時刻を示している。図26の例でも、コントローラ10Aは、メモリチップ#1~#5より並列で読み出しを行っている。そして、コントローラ10Aの第2復号器19は、読み出したデータ断片の誤り訂正処理を行う。メモリチップ#1、#2、#3および#5から読み出したデータ断片については、第2符号による誤り訂正処理が完了している。誤り訂正済みのデータ断片は、消失訂正用のパリティを含んでいる。一方、メモリチップ#4から読み出したデータ断片については、誤り訂正処理が完了していない。
 図26の例では、第1復号器15が第1符号による消失訂正が可能な数のデータ断片の消失訂正が完了したときに消失訂正処理を行っている。すなわち、第1復号器15は、メモリチップ#1、#2、#3および#5から読み出したデータ断片を使って第1符号による消失訂正処理を行っている。コントローラ10Aは、メモリチップ#4から読み出したデータ断片の誤り訂正処理の完了または誤り訂正の失敗判定がされるまで待たない。したがって、一部のメモリチップにおける遅延の影響を軽減し、記憶装置における全体的なリード処理を高速化することができる。
 図27のフローチャートは、変形例2におけるデータのリード処理の例を示している。以下では、図27のフローチャートを参照しながら、本開示による記憶装置におけるリード処理の例を説明する。
 はじめに、コントローラ10Aは、ホストシステム2よりデータのリード要求を受信する(ステップS211)。そして、コントローラ10Aは、ルックアップテーブル12を参照し、リード対象のデータに相当する複数のデータ断片が保存されているメモリチップ20Aと、物理ブロックとを特定し、複数のメモリチップより該当するデータ断片を読み出す(ステップS212)。コントローラ10Aは、複数のメモリチップよりデータ断片をシーケンシャルに読み出してよい。また、コントローラ10Aは、複数のメモリチップより複数データ断片を並列的に読み出してもよい。すなわち、コントローラ10Aによるデータ断片の読み出しの順序およびタイミングについては、限定しない。次に、コントローラ10Aの第2復号器19は、メモリチップ20Aから読み出したデータ断片の第2符号による誤り訂正を開始する(ステップS213)。
 そして、コントローラ10Aは、対象となるすべてのデータ断片の誤り訂正が完了したか否かを判定する(ステップS214)。例えば、N個のメモリチップ20Aのそれぞれよりデータ断片を読み出した場合、コントローラ10Aは、ステップS204でN個のデータ断片の誤り訂正が完了したか否かを確認する。
 ステップS214における判定の結果に応じて、処理が分岐する。対象となるすべてのデータ断片の誤り訂正が完了した場合(ステップS214のYES)、コントローラ10Aの処理回路11は、誤り訂正の完了した複数のデータ断片を結合し、リード対象のデータを再構成する(ステップS215)。例えば、コントローラ10Aは、バッファメモリまたはキャッシュメモリ上に複数のデータ断片を配置し、データの再構成を行うことができる。
 そして、コントローラ10Aの第1復号器15は、必要に応じて、第1符号によって再構成されたデータの誤り訂正を行うことができる(ステップS216)。ただし、コントローラ10Aは、ステップS216の処理を省略してもよい。最後に、コントローラ10Aは、リード対象のデータをホストシステム2に転送する(ステップS219)。
 対象となるすべてのデータ断片の誤り訂正が完了していない場合(ステップS214のNO)、コントローラ10Aは、所定の数のデータ断片の誤り訂正が完了したか否かを判定する(ステップS217)。ここで、所定の数として、第1復号器15が消失訂正を行うために必要なデータ断片の数M-uを使うことができる。ただし、ステップS217でこれより大きい整数値を使ってもよい。
 ステップS217における判定の結果に応じて、処理が分岐する。誤り訂正が完了したデータ断片の数が所定の数に満たない場合(ステップS217のNO)、コントローラ10Aは、再びステップS214の判定を実行する。所定の数のデータ断片の誤り訂正が完了した場合(ステップS217のYES)、コントローラ10Aの第1復号器15は、誤り訂正の完了したデータ断片を使って第1符号によるデータの消失訂正を行う(ステップS218)。例えば、コントローラ10Aは、バッファメモリまたはキャッシュメモリ上にデータ断片を配置し、消失訂正を行うことができる。最後に、コントローラ10Aは、消失訂正したデータをホストシステム2に転送する(ステップS219)。
 以下では、本開示によるコントローラの構成の概要を説明する。
 本開示によるコントローラは、処理回路と、第1符号化器と、第2符号化器と、第2復号器と、第1復号器とを備えていてもよい。処理回路は、ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかのメモリチップに書き込み、リードされるデータに相当するデータ断片をメモリチップより読み出すように構成されている。第1符号化器は、それぞれのデータ断片がパリティを含むよう、ライトされるデータを消失訂正符号によって符号化するように構成されている。第2符号化器は、処理回路がデータ断片をメモリチップに書き込む前に、データ断片を誤り訂正符号によって符号化するように構成されている。第2復号器は、処理回路がメモリチップより読み出したデータ断片の誤り訂正を行うように構成されている。第1復号器は、リードされるデータに相当するデータ断片のうち、第2復号器による誤り訂正が完了した一部のデータ断片を使って消失訂正を行うように構成されている。
 第1復号器は、第2復号器が少なくともいずれかのデータ断片の誤り訂正を行っているときに、誤り訂正が完了している残りのデータ断片を使って消失訂正を行うように構成されていてもよい。
 また、本開示による記憶装置の構成の概要も説明する。
 本開示による記憶装置は、複数のメモリチップと、コントローラとを備えていてもよい。コントローラは、ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、データを消失訂正符号によって符号化し、データを複数のデータ断片に分割し、データ断片を誤り訂正符号によって符号化し、複数のメモリチップのうち、いずれかのメモリチップに書き込むように構成されている。また、コントローラは、データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、リードされるデータに相当するデータ断片のうち、誤り訂正の完了した一部のデータ断片を使って消失訂正を行うように構成されている。
 本開示による記憶装置において、コントローラは、個別のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。コントローラは、共通のデータ線を介して複数のメモリチップと電気的に接続されていてもよい。メモリチップは、NANDフラッシュメモリを含んでいてもよい。
 本開示による記憶装置は、インタフェース変換回路をさらに備えていてもよい。インタフェース変換回路は、コントローラがリードしたデータをネットワークで転送可能なパケットに変換し、ネットワークより受信したパケットをコントローラに入力可能な形式に変換するように構成されている。
 上述のように、本開示による技術は、ライト対象のデータがデータ断片に分割されて複数のメモリチップに保存される記憶装置のリード性能を向上させるものである。
 本開示による記憶装置では、メモリチップ側に第2符号による誤り訂正機能(第2符号化器および第2復号器)が実装されていてもよい。この場合、コントローラからデータ断片のリード開始の要求を受けたそれぞれのメモリチップは、データ断片を読み出し、第2符号による誤り訂正を開始する。それぞれのメモリチップは、メモリチップとコントローラとの間を接続する信号線を介して、コントローラに誤り訂正処理の完了状況または誤り訂正の成否を通知することができる。コントローラは、誤り訂正の完了したメモリ断片を読み出す。そして、コントローラは、誤り訂正の完了していないメモリチップがあっても、消失訂正が可能な数のメモリ断片の読み出しを完了したときに、消失訂正を開始することができる。また、コントローラは、誤り訂正の結果を確認するために、メモリチップに実装されるレジスタを読み出す必要がなくなる。このため、一部のメモリチップにおける遅延の影響を軽減し、記憶装置の全体的なリード速度を改善することができる。
 また、本開示による記憶装置は、コントローラ側に第2符号による誤り訂正機能(第2符号化器および第2復号器)が実装されていてもよい。この場合、コントローラは、はじめにメモリチップよりデータ断片を読み出す。そして、コントローラは、読み出したデータ断片の誤り訂正を開始する。コントローラは、誤り訂正の完了していないデータ断片があっても、消失訂正が可能な数のデータ断片の誤り訂正が完了したときに、消失訂正を開始することができる。このため、一部のメモリチップにおける読み出しの遅延または一部のデータ断片の誤り訂正の遅延があったとしても、遅延による影響を軽減し、記憶装置の全体的なリード速度を改善することができる。
 上述のように、記憶装置の分野では、NANDフラッシュメモリにおける微細化プロセスまたはマルチレベルセルの採用に伴うビット誤り率の増大、誤り訂正符号によるメモリチップ・コントローラ間のトラフィック、システムの消費電力およびレイテンシの増大などが課題となっていた。本開示によるコントローラおよび記憶装置を使うと、高い信頼性と性能とを両立し、これらの課題を解決することが可能となる。
 なお、本技術は、以下のような構成をとることができる。
(1) ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
 リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
 それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
 信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える、
 コントローラ。
(2) 前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されている、
 (1)に記載のコントローラ。
(3) 前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されている、
 (1)または(2)に記載のコントローラ。
(4) 前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されている、
 (1)ないし(3)のいずれか一項に記載のコントローラ。
(5) 前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
 (1)ないし(4)のいずれか一項に記載のコントローラ。
(6) ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
 リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
 それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
 前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、
 前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、
 リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備える、
 コントローラ。
(7) 前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されている、
 (6)に記載のコントローラ。
(8) 誤り訂正機能を有する複数のメモリチップと、
 ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
 前記データを複数の前記データ断片に分割し、
 前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
 信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
 記憶装置。
(9) 前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されている、
 (8)に記載の記憶装置。
(10) 前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含む、
 (8)または(9)に記載の記憶装置。
(11) 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
 (8)ないし(10)のいずれか一項に記載の記憶装置。
(12) 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
 (8)ないし(11)のいずれか一項に記載の記憶装置。
(13) 前記メモリチップは、NANDフラッシュメモリを含む、
 (8)ないし(12)のいずれか一項に記載の記憶装置。
(14) 前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
 (8)ないし(13)のいずれか一項に記載の記憶装置。
(15) 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
 (8)ないし(14)のいずれか一項に記載の記憶装置。
(16) 複数のメモリチップと、
 ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
 前記データを複数の前記データ断片に分割し、
 前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
 前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、
 リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
 記憶装置。
(17) 前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
 (16)に記載の記憶装置。
(18) 前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
 (16)または(17)に記載の記憶装置。
(19) 前記メモリチップは、NANDフラッシュメモリを含む、
 (16)ないし(18)のいずれか一項に記載の記憶装置。
(20) 前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
 (16)ないし(19)のいずれか一項に記載の記憶装置。
 本開示の態様は、上述した個々の実施形態に限定されるものではなく、当業者が想到しうる種々の変形も含むものであり、本開示の効果も上述した内容に限定されない。すなわち、特許請求の範囲に規定された内容およびその均等物から導き出される本開示の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
1、1A システム
2 ホストシステム
3 バス
4 インタフェース変換回路
5 ネットワーク
10、10A コントローラ
14 第1符号化器
15 第1復号器
16 第1インタフェース回路
17 監視部
18、24 第2符号化器
19、25 第2復号器
20、20A メモリチップ
21 メモリ
22 リードライト回路
23 第2インタフェース回路
100、101、102 記憶装置
1000 回路ブロック

Claims (20)

  1.  ライトされるデータの一部を含む複数のデータ断片のそれぞれを、誤り訂正機能を備えた複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
     リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
     それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
     信号線を介して取得したそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部を使って消失訂正を行うように構成された第1復号器とを備える、
     コントローラ。
  2.  前記処理回路は、前記信号線を参照し、誤り訂正の完了した前記メモリチップから順に前記データ断片を読み出すように構成されている、
     請求項1に記載のコントローラ。
  3.  前記第1復号器は、前記処理回路が前記データ断片の書き込まれた前記メモリチップのうち、一部の前記メモリチップから前記データ断片が読み出されたときに消失訂正を行うように構成されている、
     請求項1に記載のコントローラ。
  4.  前記第1復号器は、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、前記処理回路が読み出した前記データ断片を使って消失訂正を行うように構成されている、
     請求項1に記載のコントローラ。
  5.  前記処理回路は、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
     請求項1に記載のコントローラ。
  6.  ライトされるデータの一部を含む複数のデータ断片を複数のメモリチップのうち、いずれかの前記メモリチップに書き込み、
     リードされる前記データに相当する前記データ断片を前記メモリチップより読み出すように構成された処理回路と、
     それぞれの前記データ断片がパリティを含むよう、ライトされる前記データを消失訂正符号によって符号化するように構成された第1符号化器と、
     前記処理回路が前記データ断片を前記メモリチップに書き込む前に、前記データ断片を誤り訂正符号によって符号化するように構成された第2符号化器と、
     前記処理回路が前記メモリチップより読み出した前記データ断片の誤り訂正を行うように構成された第2復号器と、
     リードされる前記データに相当する前記データ断片のうち、前記第2復号器による誤り訂正が完了した一部の前記データ断片を使って消失訂正を行うように構成された第1復号器とを備える、
     コントローラ。
  7.  前記第1復号器は、前記第2復号器が少なくともいずれかの前記データ断片の誤り訂正を行っているときに、誤り訂正が完了している残りの前記データ断片を使って消失訂正を行うように構成されている、
     請求項6に記載のコントローラ。
  8.  誤り訂正機能を有する複数のメモリチップと、
     ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
     前記データを複数の前記データ断片に分割し、
     前記データ断片のそれぞれを複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
     信号線を介して取得されたそれぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否に応じ、リードされる前記データに相当する前記データ断片のうち、一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
     記憶装置。
  9.  前記コントローラは、少なくともいずれかの前記メモリチップが誤り訂正を行っているときに、読み出した前記データ断片を使って消失訂正を行うように構成されている、
     請求項8に記載の記憶装置。
  10.  前記メモリチップは、前記コントローラが書き出した前記データ断片を誤り訂正符号によって符号化してからメモリセルに保存するように構成された第2符号化器と、リードされる前記データに相当する前記データ断片の誤り訂正を行い、前記信号線を介して誤り訂正の完了状況または成否を前記コントローラに通知するように構成された第2復号器とを含む、
     請求項8に記載の記憶装置。
  11.  前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
     請求項8に記載の記憶装置。
  12.  前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
     請求項8に記載の記憶装置。
  13.  前記メモリチップは、NANDフラッシュメモリを含む、
     請求項8に記載の記憶装置。
  14.  前記コントローラは、それぞれの前記メモリチップにおける前記データ断片の誤り訂正の完了状況または成否をホストシステムに通知するように構成されている、
     請求項8に記載の記憶装置。
  15.  前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
     請求項8に記載の記憶装置。
  16.  複数のメモリチップと、
     ライトされるデータを分割したデータ断片のそれぞれがパリティを含むよう、前記データを消失訂正符号によって符号化し、
     前記データを複数の前記データ断片に分割し、
     前記データ断片を誤り訂正符号によって符号化し、複数の前記メモリチップのうち、いずれかの前記メモリチップに書き込み、
     前記データをリードするときに、前記メモリチップより読み出した前記データ断片の誤り訂正を行い、
     リードされる前記データに相当する前記データ断片のうち、誤り訂正の完了した一部の前記データ断片を使って消失訂正を行うように構成されたコントローラとを備える、
     記憶装置。
  17.  前記コントローラは、個別のデータ線を介して複数の前記メモリチップと電気的に接続されている、
     請求項16に記載の記憶装置。
  18.  前記コントローラは、共通のデータ線を介して複数の前記メモリチップと電気的に接続されている、
     請求項16に記載の記憶装置。
  19.  前記メモリチップは、NANDフラッシュメモリを含む、
     請求項16に記載の記憶装置。
  20.  前記コントローラがリードした前記データをネットワークで転送可能なパケットに変換し、ネットワークより受信した前記パケットを前記コントローラに入力可能な形式に変換するように構成されたインタフェース変換回路をさらに備える、
     請求項16に記載の記憶装置。
PCT/JP2020/041328 2019-11-28 2020-11-05 コントローラおよび記憶装置 WO2021106514A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/777,915 US11853162B2 (en) 2019-11-28 2020-11-05 Controller and storage device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2019-215091 2019-11-28
JP2019215091A JP2021086406A (ja) 2019-11-28 2019-11-28 コントローラおよび記憶装置

Publications (1)

Publication Number Publication Date
WO2021106514A1 true WO2021106514A1 (ja) 2021-06-03

Family

ID=76087848

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2020/041328 WO2021106514A1 (ja) 2019-11-28 2020-11-05 コントローラおよび記憶装置

Country Status (3)

Country Link
US (1) US11853162B2 (ja)
JP (1) JP2021086406A (ja)
WO (1) WO2021106514A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022009935A1 (ja) 2020-07-07 2022-01-13 Agc株式会社 リチウムイオン二次電池に用いられる硫化物系固体電解質、及びその製造方法並びにリチウムイオン二次電池
JPWO2022009934A1 (ja) 2020-07-07 2022-01-13
JP2023042992A (ja) * 2021-09-15 2023-03-28 キオクシア株式会社 メモリシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011203878A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 半導体記憶装置
JP2012128660A (ja) * 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
JP2018160166A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム及び抵抗変化型メモリ

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7322002B2 (en) * 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
JP2010079485A (ja) 2008-09-25 2010-04-08 Panasonic Corp 半導体記録装置
TWI456579B (zh) * 2010-03-26 2014-10-11 Silicon Motion Inc 提昇錯誤更正能力之方法以及相關之記憶裝置及其控制器
JP2014238871A (ja) 2014-08-01 2014-12-18 マイクロン テクノロジー, インク. 単一の仮想化されたeccアルゴリズムを提供するコントローラと、このコントローラを含む記憶システム、及びこの記憶システムを管理する方法
US10621035B2 (en) * 2017-10-18 2020-04-14 Intel Corporation Techniques for correcting data errors in memory devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011203878A (ja) * 2010-03-24 2011-10-13 Toshiba Corp 半導体記憶装置
JP2012128660A (ja) * 2010-12-15 2012-07-05 Toshiba Corp 半導体記憶装置
JP2018160166A (ja) * 2017-03-23 2018-10-11 東芝メモリ株式会社 メモリシステム及び抵抗変化型メモリ

Also Published As

Publication number Publication date
US11853162B2 (en) 2023-12-26
US20220405168A1 (en) 2022-12-22
JP2021086406A (ja) 2021-06-03

Similar Documents

Publication Publication Date Title
WO2021106514A1 (ja) コントローラおよび記憶装置
KR101660150B1 (ko) 물리 페이지, 논리 페이지, 및 코드워드 대응
US9213633B2 (en) Flash translation layer with lower write amplification
US9135112B2 (en) Policy for read operations addressing on-the-fly decoding failure in non-volatile memory
US9552290B2 (en) Partial R-block recycling
KR101454807B1 (ko) 상위-레벨 리던던시 정보 계산
US8601347B1 (en) Flash memory device and storage control method
CN115114059B (zh) 使用区来管理归因于存储装置故障的容量减小
CN108399109B (zh) 软解码调度
CN111081308A (zh) 用于混合非易失性存储系统的系统和方法
WO2012075200A2 (en) Dynamic higher-level redundancy mode management with independent silicon elements
US9477406B2 (en) Locating data in non-volatile memory
KR20210040463A (ko) 오류 정정 및 메모리 테스트 동작을 수행하기 위한 인-패키지 시퀀서를 포함하는 메모리 서브 시스템
US11487609B2 (en) Separating parity data from host data in a memory sub-system
US20240086282A1 (en) Multi-layer code rate architecture for copyback between partitions with different code rates
KR20220045343A (ko) 데이터 처리 시스템 내 데이터 전송에서 발생한 에러를 정정하는 장치 및 방법
KR20220072398A (ko) 메모리 장치 및 메모리 시스템
US20230082008A1 (en) Parity protection in non-volatile memory
CN110383698B (zh) 数据访问方法及闪存设备
CN115167758A (zh) 存储器的存取控制方法、存储系统及计算机可读存储介质
CN115114055A (zh) 管理归因于存储装置故障的容量减小和恢复
CN115114054A (zh) 管理发生故障的多层级存储器单元的存储空间减小和再用
CN117992282A (zh) 异常断电后的编码方法和存储器存储装置
CN118796532A (zh) 数据检查方法、存储器存储装置及存储器控制电路单元
CN115114061A (zh) 管理归因于存储装置故障的容量减小

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20893608

Country of ref document: EP

Kind code of ref document: A1