WO2018003050A1 - 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法 - Google Patents

不揮発メモリデバイスを有する装置、および、誤り訂正制御方法 Download PDF

Info

Publication number
WO2018003050A1
WO2018003050A1 PCT/JP2016/069380 JP2016069380W WO2018003050A1 WO 2018003050 A1 WO2018003050 A1 WO 2018003050A1 JP 2016069380 W JP2016069380 W JP 2016069380W WO 2018003050 A1 WO2018003050 A1 WO 2018003050A1
Authority
WO
WIPO (PCT)
Prior art keywords
read
data
transitions
read threshold
error correction
Prior art date
Application number
PCT/JP2016/069380
Other languages
English (en)
French (fr)
Inventor
森野 東海
彬史 鈴木
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to PCT/JP2016/069380 priority Critical patent/WO2018003050A1/ja
Publication of WO2018003050A1 publication Critical patent/WO2018003050A1/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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory

Definitions

  • the present invention generally relates to error correction of data read from an electrically rewritable nonvolatile memory.
  • a flash memory is generally known as an electrically rewritable nonvolatile memory.
  • the flash memory has a first characteristic in which the stored data gradually changes according to an elapsed time after data storage, and a second characteristic in which the read data gradually changes by reading data a plurality of times. Has characteristics.
  • a semiconductor storage device including a flash memory as a storage medium generally adds an ECC (Error Correcting Code) having a correction capability of multiple bits at the time of writing and stores the data in the flash memory.
  • ECC Error Correcting Code
  • this ECC can be used to correct an error bit changed from the original data. In this way, the semiconductor memory device can realize accurate data retention.
  • a method for reducing the number of errors in data to be read there is a method of changing a read threshold (threshold voltage).
  • a read threshold threshold voltage
  • the stored data is scrambled to eliminate interference between cells, and the number of “1” and “0” is substantially equal.
  • a method for optimizing the read threshold is disclosed.
  • a flash memory (typically a NAND flash memory) generally has a plurality of blocks, and each block has a plurality of pages. Data is erased in units of blocks, and data is written and read in units of pages.
  • the non-volatile memory device reads data from the read source area of the non-volatile memory using a set read threshold value, and executes error correction on the data. If the error correction fails, the non-volatile memory device determines the read threshold used based on the number of transitions for the type of read threshold used, out of the number of transitions for each of the one or more read threshold types. Optimize.
  • the read threshold value type is a threshold value between corresponding voltage distribution levels.
  • the number of transitions for the read threshold value type is the number of values that have changed between voltage distribution levels corresponding to the read threshold value type.
  • the schematic block diagram of the apparatus containing FM device. 1 is a schematic configuration diagram of an FM (flash memory) chip.
  • FIG. The schematic block diagram of a block.
  • the figure which shows an example of a reading threshold value change table. 10 is a flowchart of second read processing.
  • a flash memory (FM) is adopted as an electrically rewritable nonvolatile memory, and an FM device having FM is adopted as a storage device having the nonvolatile memory.
  • FM flash memory
  • non-volatile memories other than FM such as PRAM (Phase-change Random Access Memory), MRAM (Magnetoresistive Random Access Memory), ReRAM (Resistive Random Access Memory) or FeRAM (Ferroelectric Random Access Memory) may be employed.
  • the “interface unit” includes one or more interfaces.
  • the one or more interfaces may be one or more similar interface devices (for example, one or more NIC (Network Interface Card)) or two or more different interface devices (for example, NIC and HBA (Host Bus Adapter)). There may be.
  • NIC Network Interface Card
  • HBA Home Bus Adapter
  • the “storage unit” includes one or more memories.
  • the at least one memory may be a volatile memory or a non-volatile memory.
  • the storage unit is mainly used during processing by the processor unit.
  • the “processor unit” includes one or more processors.
  • the at least one processor is typically a CPU (Central Processing Unit).
  • the processor may include a hardware circuit that performs part or all of the processing.
  • information may be described using an expression such as “xxx table”, but the information may be expressed in any data structure. That is, in order to show that the information does not depend on the data structure, the “xxx table” can be referred to as “xxx information”.
  • the configuration of each table is an example, and one table may be divided into two or more tables, or all or part of the two or more tables may be a single table. Good.
  • the “read threshold” is a voltage used at the time of reading.
  • the read threshold value may be one parameter in a so-called read option (an option associated with one or more parameters) used at the time of reading.
  • FIG. 1 is a schematic configuration diagram of an apparatus including an FM device.
  • the device 2001 includes a plurality of (or one) FM device 1 and a host device 2002 connected to them.
  • the FM device 1 is an example of a storage device.
  • the device 2001 is a storage device that executes data I / O (write / read) in response to an I / O (Input / Output) request from a computer.
  • the plurality of FM devices 1 may be a RAID (Redundant Array of Independent (or Inexpensive) Disks) group.
  • the host device 2002 may be a storage controller that processes I / O requests from computers.
  • the device 2001 may be a computer such as a server. In this case, the host device 2001 may be a processor unit in the computer.
  • the FM device 1 includes a control circuit 10, a plurality (or one) DRAM (Dynamic Random Access Memory) 15, one (or a plurality) ROM (Read Only Memory) 17, and a plurality (or one) FM 19. .
  • DRAM Dynamic Random Access Memory
  • ROM Read Only Memory
  • FM 19 is an example of a nonvolatile memory.
  • management information is stored in the DRAM 15.
  • the management information is information related to management of the FM device 1, and includes, for example, the number of times of erasing each block of the FM 19, a conversion table between the logical address and physical address of the FM 19, and a physical area configuration (for example, the relationship between the FM 19, the block, and the page).
  • Information including information indicating at least one of the correspondence between the physical address and the physical area (for example, page).
  • the ROM 19 stores programs and the like.
  • the control circuit 10 includes a host interface 11, a CPU 12, a buffer (internal buffer memory) 13, a DRAM controller 14, a ROM controller 16, an FM controller 18, an error correction circuit 20, and a correction bit count circuit 21. They are connected to the internal bus 22 in the control circuit 10.
  • the host interface 11 is an example of a host interface.
  • the FM controller 18 is an example of a lower interface.
  • the error correction circuit 20 corrects the data by using the ECC associated with the data if there is an error in the data.
  • the error correction circuit 20 is a circuit that performs correction using an LLR (log likelihood ratio).
  • LLR log likelihood ratio
  • the present invention can also be applied to error correction other than correction using LLR (Log-likelihood ratio).
  • LLRs are typically used in corrections using LDPC (Low Density Parity Check) codes.
  • the correction bit count circuit 21 determines the number of 1 ⁇ 0 bits (the number of bits corrected from “1” to “0”) and 0 ⁇ 1 for each read threshold type (for each threshold between threshold voltage distribution levels). The number of bits (the number of bits corrected from “0” to “1”) is counted. As a result, the correction bit count circuit 21 counts the first to sixth transition numbers described later.
  • the host interface 11 mediates communication of commands and data with the host device 2002.
  • the CPU 12 reads a program stored in the ROM 17 via the ROM controller 16, controls each module connected to the internal bus 22 in accordance with a command from the host device 2002, generates a command response and data, Transfer to device 2002.
  • a plurality of FMs 19 are connected to the FM controller 18.
  • the FM device 1 receives write data and a write command from the host device 2002
  • the following processing is performed. That is, the write data and the write command are temporarily stored in the internal buffer 13 via the host interface 11.
  • the CPU 12 interprets the write command stored in the internal buffer 13.
  • the CPU 12 transfers the write data to the error correction circuit 20 based on the interpretation result.
  • the CPU 12 generates an ECC (Error-Correcting Code) based on the interpretation result and transfers the ECC to the DRAM 15 via the DRAM controller 14.
  • the CPU 12 determines a write data write destination area (a page in the FM 19) based on the management information in the DRAM 15, and controls the FM controller 18 to store the write data and ECC stored in the DRAM 15 in the FM 19. Write to the write destination area and return a write completion response (response to the write command) to the host device 2002.
  • ECC is an example of parity data necessary for error correction.
  • the FM device 1 receives a read command from the higher-level device 2002
  • the following processing is performed. That is, the read command is temporarily stored in the internal buffer 13 via the host interface 11.
  • the CPU 12 interprets the read command stored in the internal buffer 13.
  • the CPU 12 specifies a read source area (a physical area (a page in the FM 19) where read data according to the read command is stored) based on the interpretation result and the management information in the DRAM 15.
  • the CPU 12 controls the FM controller 18. Then, read data is read from the specified read source area, and the read data read is transferred to the error correction circuit 20 by the CPU 12.
  • the error correction circuit 20 An error is corrected using the ECC associated with the read data, and the read data (read data corrected if there is an error) is stored in the DRAM 15 by the CPU 12.
  • the correction bit count circuit 21 For each read threshold type, count the number of 1 ⁇ 0 bits and the number of 0 ⁇ 1 bits. Tosuru.
  • CPU12 transfers the read data in the DRAM15 to the host device 2002.
  • FM19 has a plurality of FM chips. A schematic configuration of the FM chip will be described.
  • FIG. 2 is a schematic configuration diagram of the FM chip.
  • the FM chip 101 has a storage area composed of a plurality of blocks (physical blocks) 111.
  • the erase unit of the FM chip 101 is a block unit.
  • the FM chip 101 has an I / O register 102 as an interface with the outside. Write data and read data are transmitted via the I / O register 102.
  • the I / O register has a storage capacity larger than the page size.
  • FIG. 3 is a schematic configuration diagram of the block of FM19.
  • the block 111 has a storage area composed of a plurality of pages 121.
  • the writing unit of the FM chip 101 is a page unit.
  • MLC Multi-Level Cell
  • each page has a pair of page pairs as shown in FIG.
  • the “page pair” is composed of two pages that are paired.
  • page 1 and page 3 constitute a page pair.
  • Page 1 stores LSB (Least Significant Bit) data
  • Page 3 stores MSB (Most Significant Bit) data.
  • Page 1 is an example of an LSB page
  • page 3 is an example of an MSB page.
  • a page storing LSB data can be called an “LSB page”, and a page storing MSB data can be called an “MSB page”.
  • a page pair is composed of the LSB page and the MSB page. In a page pair, one page is a pair page of the other page. For example, page 1 is a pair page of page 3, and page 3 is a pair page of page 1.
  • FIG. 4 is a schematic configuration diagram of a page of FM19.
  • the page 121 stores a plurality (or one) of ECC CW (ECC Code Word) 141.
  • ECC CW is an example of a unit of error correction.
  • the ECC CW includes data 131 and an ECC 132 for the data 131.
  • the read threshold (threshold voltage) for the LSB page is referred to as “LSB read threshold”, and the read threshold for the MSB page is referred to as “MSB read threshold”.
  • FIG. 5 is a schematic diagram of cell threshold voltage distribution in MLC-FM.
  • the threshold voltage distribution is divided into four levels.
  • the four levels are L11 (LSB “1” and MSB “1”), L01 (LSB “1” and MSB “0”), L00 (LSB “0” and MSB “0”), from the lowest voltage.
  • L10 LSB “0” and MSB “1”.
  • the LSB read threshold value Vth0 is between L01 and L00.
  • the first MSB read threshold Vth1 is between L11 and L01
  • the second MSB read threshold Vth2 is between L00 and L10.
  • the distribution of each level is completely separated. When an appropriate read threshold is set, the number of error bits at the time of reading is zero.
  • the distributions of the respective levels partially overlap each other, and are observed as errors during reading. That is, in the case of the LSB page, a portion of the L00 distribution to the left of the LSB read threshold Vth0 (low voltage side portion) and a portion of the L01 distribution to the right of the LSB read threshold Vth0 (high voltage side portion). An error is observed for. Further, this distribution overlap increases as the number of times of writing and erasing increases, and as a result, the oxide film that is the insulating layer of the floating gate deteriorates.
  • FIG. 6 is a diagram showing a state in which the LSB read threshold is shifted.
  • a portion 161 observed as an error of L00 is a portion on the left side of the LSB read threshold Vth0 in the distribution of L00.
  • a portion 162 observed as an error of L01 is a portion on the right side of the LSB read threshold Vth0 in the distribution of L01.
  • the state shown in FIG. 6 is a state in which the LSB read threshold value Vth0 is deviated when time passes after writing and the distribution of each level moves to the left. At this time, the portion 161 is larger than the portion 162. If the distribution shape of each level is symmetrical and the number of cells belonging to each level is equal, the number of error bits is minimized when the portion 161 and the portion 162 are equal.
  • the portion 161 is larger than the portion 162, it is possible to reduce errors by setting the LSB read threshold value Vth0 to the left side, that is, a small value, and performing reading with the changed threshold value Vth0.
  • the number of 0 ⁇ 1 bits is larger than the number of 1 ⁇ 0 bits during error correction.
  • the larger the ratio of 0 ⁇ 1 bit number the larger the deviation of the LSB read threshold value Vth0.
  • LLR for example, its absolute value
  • the absolute value of the LLR is corrected as the importance. For this reason, it is possible to improve the correction capability by optimizing the LLR (that is, setting the LLR appropriately) instead of or in addition to the optimization of the read threshold.
  • ⁇ n0 which is an LLR when the read data is “0”, is a positive value
  • the larger the absolute value the smaller the probability of error.
  • ⁇ n1 which is an LLR when the read data is “1”
  • the correction capability can be obtained by making the absolute value of ⁇ n1 as the LLR when the read data is “1” smaller than the absolute value of ⁇ n0 as the LLR when the read data is “0”. Can be raised.
  • FIG. 7 is a flowchart of the inspection lead process.
  • the inspection lead process is executed once a day, for example.
  • the inspection lead may be performed periodically, or may be performed irregularly such as when the FM device 10 is activated or when access to the FM device 10 is low.
  • the inspection target read source
  • the inspection target is all pages, but some pages may be used. Reading data for inspection from one inspection target page can be called “inspection lead”.
  • inspection lead is performed for each inspection target page.
  • the CPU 12 initializes the numbers of chips, blocks, and pages to be inspected.
  • the CPU 12 reads data from the inspection target page. That is, inspection lead is performed.
  • the inspection lead is performed using a set read threshold value.
  • a common LSB reading threshold value and first and second reading threshold values are set for all pages.
  • the LSB read threshold value and the first and second read threshold values may be set for each storage area unit in the FM device 1 (for example, for each chip, each block, and each page).
  • the read threshold is set for each page
  • the LSB read threshold is set for the LSB page
  • the first or second MSB read threshold is set for the MSB page.
  • the error correction circuit 20 performs error correction on each of all the ECCs CW in the read data.
  • the correction bit count circuit 21 counts the number of 1 ⁇ 0 bits and the number of 0 ⁇ 1 bits for each read threshold type.
  • control circuit 10 (for example, the CPU 12) updates the error transition number table based on the result of S103 (count value).
  • the CPU 12 updates the numbers of chips, blocks, and pages to be inspected.
  • the CPU 12 determines whether or not the inspection read has been completed for the blocks and pages of all the chips. If the determination result is false (S106: No), the process returns to S102 and the inspection lead process continues. If the determination result is true (S106: Yes), the inspection lead process ends.
  • the above is the inspection lead processing.
  • the error transition number table is updated by the inspection read process.
  • the blocks and pages of all chips may be inspection targets.
  • the inspection target page is the same as the read source page according to the read command from the host apparatus 2002, the performance of the FM device 2001 is affected. Therefore, the inspection target in one inspection lead process may be only a part of blocks or pages in the FM device 1.
  • error transition number table is a table representing the number of error transitions.
  • Error transition number means either the number of bits corrected (transitioned) from “0” to “1” or the number of bits corrected from “1” to “0”.
  • the number of error transitions includes a first transition number to a sixth transition number, which will be described later.
  • the error transition number table may be information included in the above-described management information stored in the DRAM 15.
  • FIG. 8 is a diagram showing an example of an error transition number table indicating the number of error transitions for each ECC-CW.
  • an error transition number table 201 indicating the number of error transitions for each ECCECCW includes a chip number 211, a block number 212, a page pair number 213, an ECC CW number 214, transition numbers 215 to 220, and , State 221 is held.
  • Chip number 221 represents the number of the chip storing ECCECCW.
  • the block number 212 represents the number of the block that stores ECC CW.
  • the page pair number 213 represents the number of the page pair to which the page storing ECC CW belongs.
  • the ECC CW number 214 represents the number of ECC CW.
  • the transition number 215 represents the first transition number, that is, the number of bits corrected (transitioned) from “1” to “0” with respect to the LSB read threshold.
  • the number of transitions 216 represents the second number of transitions, that is, the number of bits corrected from “0” to “1” with respect to the LSB read threshold.
  • the transition number 217 represents the third transition number, that is, the number of bits corrected from “1” to “0” with respect to the first MSB read threshold.
  • the transition number 218 represents the fourth transition number, that is, the number of bits corrected from “0” to “1” for the first MSB read threshold.
  • the number of transitions 219 represents the third number of transitions, that is, the number of bits corrected from “1” to “0” for the second MSB read threshold.
  • the transition number 220 represents the fourth transition number, that is, the number of bits corrected from “0” to “1” for the second MSB read threshold.
  • Each of the transition numbers 215 to 220 represents the total number of bits counted for the corresponding ECC CW.
  • the state 221 indicates whether correction has failed in error correction.
  • the states 221 include correction success, LSB correction impossible (correction failure for LSB), MSB correction impossible (correction failure for MSB), and correction failure (correction failure for both LSB and MSB).
  • the table 201 is generated, for example, when error correction is performed in units of pages in S104 of FIG.
  • the table 201 is updated according to the number of error transitions for the ECC CW to be corrected.
  • the table 201 is stored in, for example, the DRAM 15, but the table 201 has a record size for each ECCWCW, so the table size is enormous. For this reason, when the inspection read processing in a certain storage area range unit (for example, block unit) is completed, the storage area range corresponds to a predetermined error situation (for example, a certain number of errors or uncorrectable errors). Only in the case of the storage area range unit, a table indicating the number of error transitions for each ECC / CW may be stored in the DRAM 15.
  • FIG. 9 is a diagram showing an example of an error transition table indicating the number of error transitions for each page pair.
  • an error transition number table 231 indicating the number of error transitions for each page pair includes a chip number 241, a block number 242, a page pair number 243, transition numbers 244 to 249, and a reference table 250 for each page pair. Hold.
  • Chip number 241 represents the number of a chip having a page pair.
  • the block number 242 represents the number of a block having a page pair.
  • the page pair number 243 represents a page pair number.
  • the transition numbers 244 to 249 represent the first to sixth transition numbers, respectively. The number represented by each of the transition numbers 244 to 249 may be the total number of bits counted for the corresponding page pair.
  • the reference table 250 represents an address to the above-described table 201 that holds information about the corresponding page pair.
  • a record is added when error correction is performed in units of pages in S ⁇ b> 104 of FIG. 7, and the table 231 corresponds to the number of error transitions for the page pair corresponding to the added record. Is updated.
  • the table 231 is stored in, for example, the DRAM 15, but the table 231 has a record for each page pair W, so the table size is large. For this reason, when the inspection read in a certain storage area range unit (for example, block unit) is completed, the storage area range corresponds to a predetermined error situation (for example, a certain number of errors or uncorrectable errors exist). Only when the page pair record may be held in the table 231 for the storage area range unit.
  • FIG. 10 is a diagram showing an example of an error transition number table indicating the number of error transitions for each block.
  • an error transition number table 261 representing the number of error transitions for each block holds a chip number 271, a block number 272, transition numbers 273 to 278, and a reference table 279 for each block.
  • Chip number 271 represents the number of a chip having a block.
  • the block number 272 represents a block number.
  • the transition numbers 273 to 278 represent the first to sixth transition numbers, respectively.
  • the number represented by each of the transition numbers 273 to 278 is a plurality corresponding to a plurality of storage area ranges in the corresponding block (here, ECC CW, but other ranges such as page pairs may be used).
  • the total number of bits counted for the corresponding block may be used.
  • the reference table 279 is information that is retained when at least one of the tables 201 and 231 that retain information about the corresponding block exists, and is information that represents an address to the table.
  • the number of transitions of the LSB read threshold (that is, the first and the first) Only 2 transition numbers) may be recorded. That is, the inspection lead may be only the LSB page.
  • the inspection target is only the LSB page, as shown in FIG. 5, since there is only one LSB read threshold value as the read threshold type, the set LSB read threshold may be used for the inspection lead.
  • the inspection target is only the MSB page, as shown in FIG.
  • FIG. 11 is a schematic configuration diagram of the correction bit count circuit 21.
  • the correction bit count circuit 21 includes an uncorrected LSB buffer 321 that stores uncorrected LSB data, an uncorrected MSB buffer 322 that stores MSB data before correction, an corrected LSB buffer 323 that stores corrected LSB data, and a correction.
  • Comparator for inputting and comparing one bit at a time from the corrected MSB buffer 324 for storing the subsequent MSB data, the pre-correction LSB buffer 321, the pre-correction MSB buffer 322, the post-correction LSB buffer 323, and the post-correction MSB buffer 324 331 to 336, a counter register 341 to 346 that counts the number that is true as a result of comparison, a pre-correction LSB buffer 321, a pre-correction MSB buffer 322, a post-correction LSB buffer 323, a post-correction MSB buffer 324, and a counter register 341-346 entered And an interface 311 for performing power.
  • the operation of the correction bit count circuit 21 is as follows, for example. That is, the correction bit count circuit 21 stores the LSB data from the LSB page in the pre-correction LSB buffer 321 and stores the MSB data from the MSB page (a pair page of the LSB page) in the pre-correction MSB buffer 322.
  • the correction bit count circuit 21 stores the corrected LSB data (the LSB data stored in the buffer 321 corrected by the error correction circuit 20) in the corrected LSB buffer 323, and the corrected MSB data (buffer 322). Stored in the MSB buffer 322 after correction). Then, the correction bit count circuit 21 transfers data from the buffers 321 to 324 to the comparators 331 to 336 bit by bit.
  • Comparators 331 to 336 respectively compare the input data. Each of the comparators 331 to 336 adds 1 to the count value in the counter register (any one of the registers 341 to 346) corresponding to the comparator when the comparison result is true. In addition, the count value in each of the counter registers 341 to 346 is reset to a predetermined value (for example, 0) before starting the processing. For example, in the comparator 333 and the counter register 341, the data before correction is “01” (LSB data is “1” and MSB data is “0”), but the data after correction is “00” (LSB data is The number of “0” and MSB data “0”) is counted. That is, the number of cells in the portion 161 in FIG. 6 is counted.
  • the correction bit count circuit 21 is independent of the error correction circuit 20, but the correction bit count circuit 21 may be integrated with the error correction circuit 20. In this embodiment, both the error correction and the correction bit count are performed by hardware such as the circuits 20 and 21, but at least one of the error correction and the correction bit count is executed by the CPU 12 executing the program. It may be done.
  • FIG. 12 is a flowchart of the first read process.
  • the first read process is started when a read command is received from the host device 102.
  • the reading source is specified by the above-described processing.
  • the CPU 12 controls the FM controller 18 to read data from the read source page.
  • the CPU 12 performs this reading using a reading threshold value of a type corresponding to the page type (LSB page or MSB page) of the reading source page.
  • the read threshold type used is referred to as “target threshold type” in the description of FIG.
  • the CPU 12 transfers the read data (data composed of one or more ECC CW) to the error correction circuit 20. Error correction is performed by the error correction circuit 20.
  • the CPU 12 determines whether or not the error correction in S202 is successful.
  • S203 If the determination result in S203 is true (S203: Yes), the process proceeds to S221.
  • S ⁇ b> 221 the CPU 12 transfers data (for example, data from which ECC has been removed) to the higher-level device 102.
  • the CPU 12 refers to an error transition number table (for example, at least one of the tables 261, 231 and 201 described above), and transitions corresponding to the corresponding ECC CW (ECC CW of correction failure) and the target threshold type.
  • the number of transitions (that is, two transition numbers (0 ⁇ 1, 1 ⁇ 0)) is specified. If the table 201 does not have the information on the number of transitions corresponding to the relevant ECC CW and the target threshold type, the CPU 12 reads the page pair including the relevant ECC CW from the upper table 231 of the table 201. If the information of the transition number set corresponding to the target threshold value type is found, S204 ends. When there is no information, the CPU 12 specifies a transition number set corresponding to the block including the relevant ECC CW and the target threshold type from the upper table 261 of the table 231.
  • the CPU 12 executes LLR optimization. That is, the CPU 12 calculates the 0 ⁇ 1 ratio based on the transition number set specified in S204, and optimizes the LLR according to the calculated 0 ⁇ 1 ratio.
  • the “0 ⁇ 1 ratio” is the ratio of the number of transitions (0 ⁇ 1), specifically, for example, the ratio of the number of transitions (0 ⁇ 1) to the total of the specified transition number set.
  • CPU 12 increases the absolute value of the LLR corresponding to the data “1” and decreases the absolute value of the LLR corresponding to the data “0” for the target threshold type.
  • LLR optimization for example, adjustment of the absolute value of the LLR
  • FIG. 13 is a diagram illustrating an example of the LLR conversion table.
  • the LLR conversion table 401 may be information included in the management information described above, and may be stored in the DRAM 15, for example.
  • the LLR conversion table 401 may be prepared for each read threshold type, or may be common to all read threshold types.
  • the LLR conversion table 401 holds a 0 ⁇ 1 ratio range 411, an “1” LLR 412, and an “0” LLR 413 for each 0 ⁇ 1 ratio range.
  • the 0 ⁇ 1 ratio range 411 represents a range of 0 ⁇ 1 ratio.
  • the “1” LLR 412 represents an LLR corresponding to the data “1”.
  • An LLR 413 of “0” represents an LLR corresponding to data of “0”.
  • the smaller the 0 ⁇ 1 ratio the larger the absolute value of the LLR corresponding to the data “1” and the smaller the absolute value of the LLR corresponding to the data “0”.
  • the LLR corresponding to the data “1” is set to “ ⁇ 7”, and the LLR corresponding to the data “0” is “2”. "Is set.
  • ECC CW is the LSB page of chip number 1, block number 2, page pair number 2, ECC CW number 3, there is a record including chip number 1 and block number 2 in the table 261 of FIG.
  • “addr1” is stored as the reference table 279.
  • the “addr1” indicates the upper table 231 of the table 216.
  • the table 231 stores a reference table 250 “addr3” corresponding to chip number 1, block number 2, and page pair number 2.
  • “Addr3” indicates the upper table 201 of the table 231. From the table 201, it is specified from the record L203 storing the chip number 1, the block number 2, the page pair number 2, and the ECC CW number 3.
  • the first and second transition numbers are specified.
  • the first transition number (1 ⁇ 0) is “2”
  • the second transition number (0 ⁇ 1) is “25”. Therefore, the ratio of 0 ⁇ 1 is about 93% (100 ⁇ 25 / (2 + 25)).
  • the LLR corresponding to the data “1” is “ ⁇ 2”
  • the LLR corresponding to the data “0” is “7”.
  • the absolute value of the LLR of “1” becomes small and the absolute value of the LLR of “0” becomes large in this S205. .
  • the LLR optimization is executed by referring to the information on the number of transitions of the pair page (MSB page) or the information on the number of transitions corresponding to other ECC CW numbers that have been successfully corrected. It's okay.
  • transition number information referred to with the successful correction corresponds to the area closest to the reading source area (for example, the area where the EEC CW is stored or the reading source page including the area). Transition number information may be used. This is because a closer transition region (threshold voltage distribution) is expected in a closer region.
  • 0 ⁇ 1 ratio is a ratio of 1 ⁇ 0, that is, a ratio of the number of transitions (0 ⁇ 1) with respect to the total of the number of transition sets.
  • the error correction circuit 20 executes error correction again using the LLR optimized by the CPU 12 in S205.
  • S207 the CPU 12 determines whether or not the error correction in S206 is successful. If the determination result in S206 is true (S207: Yes), the process proceeds to S221. If the determination result in S207 is false (S207: No), the process proceeds to S208.
  • the CPU 12 executes read threshold optimization. That is, the CPU 12 optimizes the read threshold according to the 0 ⁇ 1 ratio calculated in S205. For example, when the 0 ⁇ 1 ratio decreases, the CPU 12 shifts the read threshold value of the target threshold value type in the positive direction (that is, increases the threshold value). Conversely, for example, when the 0 ⁇ 1 ratio increases, the CPU 12 shifts the read threshold value of the target threshold value type in the negative direction (that is, decreases the threshold value).
  • FIG. 14 is a diagram illustrating an example of the read threshold value change table.
  • the read threshold value change table 421 may be information included in the management information described above, and may be stored in the DRAM 15, for example.
  • the read threshold change table 421 may be prepared for each read threshold type, or may be common to all read threshold types.
  • the read threshold value change table 421 may be prepared in advance based on information such as FM chip characteristics.
  • the read threshold update table 421 holds a 0 ⁇ 1 ratio range 431 and a read threshold offset 432 for each 0 ⁇ 1 ratio range.
  • the read threshold offset 432 represents the shift direction and shift width of the read threshold. According to the example of FIG. 14, for example, when the 0 ⁇ 1 ratio is 80%, the read threshold value is shifted by 80 mV in the negative direction.
  • the CPU 12 reads data from the same read source page using the read threshold optimized in S208 (changed read threshold), and transfers the read data to the error correction circuit 20. . Error correction is performed by the error correction circuit 20.
  • the CPU 12 determines whether or not the error correction in S209 is successful. If the determination result in S203 is true (S210: Yes), the process proceeds to S221. If the determination result in S210 is false (S210: No), the process proceeds to S211.
  • the CPU 12 determines whether or not the readout threshold used in S209 can be finely adjusted. Specifically, for example, the CPU 12 determines whether or not fine adjustment according to the fine adjustment definition can be executed.
  • the fine adjustment definition is a definition related to fine adjustment, for example, a threshold range in which fine adjustment is possible, a direction in which the readout threshold is shifted by the fine adjustment (positive direction or negative direction), and a width to be shifted (added to or added to the threshold). Value to be subtracted).
  • the fine adjustment definition may be determined in advance, or may be determined by the CPU 12 based on some value such as the 0 ⁇ 1 ratio calculated in S205.
  • S212 the CPU 12 finely adjusts the read threshold used in S209 according to the fine adjustment definition. Thereafter, in S209, reading using the read threshold after fine adjustment is executed.
  • S208 is executed when S207 is No (that is, LLR optimization is performed only once), but when S207 is No, the LLR is adjusted. Thereafter, the data read from the DRAM 15 may be corrected using the adjusted LLR, and the success or failure of the correction may be determined again. If the determination result is false, S208 may be executed. A loop that repeats the adjustment of the LLR and the determination of the success or failure of the next correction N times at most (N is a natural number) may be executed. When the correction success / failure determination result is true, the loop may be terminated and S221 may be executed. If the correction success / failure determination result remains false even after repeating N times, S208 may be executed.
  • the read threshold is changed with a predetermined shift width in a predetermined shift direction, and reading and correction success / failure determination are executed each time the change is made.
  • the reading threshold value may be changed from the beginning to the end of the reading threshold range.
  • the shift direction and the shift width of the read threshold differ depending on the transition state (an example is a ratio of 0 ⁇ 1). For this reason, the read threshold value may be greatly changed or slightly changed by one optimization. Since such read threshold optimization is performed according to the transition status, the number of read threshold changes (optimization) for setting a read threshold for successful correction can be reduced. Therefore, the frequency of occurrence of reads can be reduced, and as a result, read latency can be reduced.
  • Example 2 will be described. At that time, differences from the first embodiment will be mainly described, and description of common points with the first embodiment will be omitted or simplified.
  • the second read process is adopted instead of the first read process in the first embodiment.
  • FIG. 15 is a flowchart of the second read process.
  • S301 to S306 are the same as S202 to S207 in FIG.
  • the second error correction process is a process composed of S303 to S311.
  • the CPU 12 determines whether the pair page of the read source page is in a predetermined state. For example, when the read source page is an LSB page, the first condition that the data stored in the pair page (MSB page) is stored as cache data in the DRAM 15 is satisfied, or the host device 2002 It is determined whether a second condition that a read command (hereinafter referred to as a target read command) having a pair page (MSB page) as a read source is accumulated in a queue in which the read command is accumulated is satisfied.
  • a target read command a read command having a pair page (MSB page) as a read source
  • the reason why the first condition is adopted is as follows. That is, data in the DRAM (MSB data) can be transferred to the error correction circuit 20, and no new reading to the FM 19 occurs.
  • the reason why the second condition is adopted is as follows. That is, the fact that the target read command is accumulated in the queue means that the read for the pair page will be performed. Therefore, if the read according to the target read command is performed at this stage (before the processing order of the target read command is reached), the response performance of the target read command may be reduced, but the response performance of the target read command is improved. As a result, a decrease in the response performance of the FM device 1 can be reduced overall.
  • the CPU 12 performs LLR optimization.
  • the read source page is an LSB page
  • the pair page is an MSB page
  • the 0 ⁇ 1 ratio is large (for example, the 0 ⁇ 1 ratio calculated in S304 is larger than the previous one).
  • the CPU 12 sets the absolute value of the LLR of L01 to a small value.
  • the read source page is an MSB page
  • the pair page is also an MSB page
  • the 0 ⁇ 1 ratio is large for the first MSB read threshold and the 0 ⁇ 1 ratio is small for the second MSB read threshold.
  • the CPU 12 sets the absolute value of the LLR of L11 and L00 to a small value.
  • the ratio of the read source page (read source according to the read command being processed), the type of the pair page, and the read threshold type corresponding to the type of the read source page and the pair page 0 ⁇ 1 ratio.
  • the level at which the error rate increases is specified based on the magnitude of the LLR, and the absolute value of the LLR at the specified level is reduced.
  • the error correction circuit 20 executes error correction again using the LLR optimized by the CPU 12 in S309.
  • the data subject to error correction is data according to the read command being processed, that is, data read in S301.
  • S311 the CPU 12 determines whether the error correction in S310 is successful. If the determination result in S310 is true (S311: Yes), the process proceeds to S321. S321 is the same process as S221. If the determination result in S311 is false (S311: No), S208 to S212 are performed.
  • the second embodiment by using pair page data in addition to the read source page data, it is possible to determine which level of the four levels, and to set the LLR value more accurately, and the error correction capability. Will improve.
  • reading of data from the pair page is limited to when a read command is received from the host device 2002, the time required for reading is not wasted even if correction fails.
  • the FM storing 2 bits in one cell has been described.
  • the present invention can also be applied to a nonvolatile memory storing a number of bits larger than 2 bits.
  • At least one of the read threshold value and the LLR may be prepared for each storage area range unit (for example, ECC CW, page, block, cell, FM chip, or die), or a plurality of storage areas It may be common to a range (for example, all storage area ranges). If both the read threshold and the LLR are in each small storage area range unit, it is considered that the probability of successful correction increases. However, in that case, there are many read thresholds and LLRs as management targets, and therefore the size of management information is large. On the other hand, if both the read threshold value and the LLR are common to many or wide storage area ranges, the read threshold value and LLR as management targets are small, and therefore the size of the management information is small.
  • both the read threshold value and the LLR can be efficiently changed (optimized). That is, in both optimization of the read threshold and the LLR, the change width (the magnitude of the value to be increased or decreased) differs depending on the 0 ⁇ 1 ratio (transition status) corresponding to the target threshold type. That is, it can be expected that the read threshold and LLR that can be corrected successfully are obtained with a small amount of optimization (preferably one optimization). For this reason, it is possible to reduce the frequency of reading with respect to the FM.
  • the optimization of the LLR is executed prior to the optimization of the read threshold, and if the correction is successful as a result of the optimization of the LLR, the optimization of the read threshold is skipped. As a result, it is possible to further reduce the frequency of occurrence of reading with respect to the FM.
  • error transition number table may be updated in the normal read process instead of or in addition to the inspection read process.
  • the optimization target LLR is an LLR used for error correction of the data read in S202 or S301 (data read from the read source page).
  • a non-volatile memory device having non-volatile memory with a plurality of voltage distribution levels;
  • a host device that is a device for transmitting a read command to the nonvolatile memory device;
  • the non-volatile memory device is (A) Reading data from a read source area according to the read command in the nonvolatile memory using a set read threshold, (B) performing error correction using a log likelihood ratio on the read data; (C) If the error correction fails, based on the number of transitions for the type of read threshold used when reading data from the read source area, of the number of transitions for each of one or more read threshold types.
  • Each of the one or more read threshold types is a threshold between corresponding voltage distribution levels;
  • the number of transitions for each of the one or more read threshold types is the number of values transitioned between voltage distribution levels corresponding to the read threshold types. apparatus.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

不揮発メモリデバイスが、不揮発メモリのうちの読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、そのデータについて誤り訂正を実行する。その誤り訂正に失敗した場合、不揮発メモリデバイスが、1以上の読み出し閾値種類の各々についての遷移数のうちの、使用された読み出し閾値の種類についての遷移数を基に、使用された読み出し閾値を最適化する。読み出し閾値種類は、対応する電圧分布レベル間の閾値である。読み出し閾値種類についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である。

Description

不揮発メモリデバイスを有する装置、および、誤り訂正制御方法
 本発明は、概して、電気的に書き換え可能な不揮発メモリから読み出されたデータの誤り訂正に関する。
 電気的に書き換え可能な不揮発メモリとして、一般に、フラッシュメモリが知られている。フラッシュメモリは、データ記憶後の経過時間に応じてその記憶されたデータが徐々に変化する第1の特性と、複数回のデータの読み出しによってその読み出されたデータが徐々に変化する第2の特性を持つ。
 このため、フラッシュメモリを記憶媒体として備える半導体記憶デバイスは、一般に、ライト時には複数ビットの訂正能力を持つECC(Error Correcting Code)をデータに付加してフラッシュメモリに格納する。これにより、リード時には、このECCを用いて、元データから変化した誤りビットを訂正することができる。このようにして、半導体記憶デバイスは、正確なデータ保持の実現を可能としている。
 また、読み出すデータのエラー数を減らすための方法として、読み出し閾値(閾値電圧)を変化させる方法がある。特許文献1には、格納されるデータはセル間の干渉をなくすためスクランブルが施され、“1”と“0”の数がほぼ等しいとして、“1”と“0”の数の変化により、読み出し閾値を最適化する方法が開示されている。
特開2014-154169号公報
 フラッシュメモリ(典型的にはNANDフラッシュメモリ)は、一般に、複数のブロックを有し、各ブロックは、複数のページを有する。ブロック単位でデータの消去が行われ、ページ単位でデータの書き込みおよび読み出しが行われる。
 特許文献1で開示されている技術では、相対的に大きなデータ単位(例えばブロック単位又はそれより大きな単位)であれば、読み出し閾値の最適化の効果が期待できる。
 しかし、相対的に小さなデータ単位(例えば、誤り訂正の単位又はページ単位)では、“1”と“0”の数を保証するスクランブルは困難であり、故に、読み出し閾値の最適化は困難であり、その最適化の効果は期待できない。
 この種の問題は、フラッシュメモリ以外の不揮発メモリにもあり得る。
 不揮発メモリデバイスが、不揮発メモリのうちの読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、そのデータについて誤り訂正を実行する。その誤り訂正に失敗した場合、不揮発メモリデバイスが、1以上の読み出し閾値種類の各々についての遷移数のうちの、使用された読み出し閾値の種類についての遷移数を基に、使用された読み出し閾値を最適化する。読み出し閾値種類は、対応する電圧分布レベル間の閾値である。読み出し閾値種類についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である。
 読み出し閾値の最適化のための読み出しを少なくすることが可能となる。
FMデバイスを含んだ装置の概略構成図。 FM(フラッシュメモリ)チップの概略構成図。 ブロックの概略構成図。 ページの概略構成図。 MLC FMにおけるセルの閾値電圧分布の模式図。 LSB読み出し閾値がずれた状態を示す図。 検査リード処理のフローチャート。 ECC CW毎のエラー遷移数を表すエラー遷移数テーブルの一例を示す図。 ページペア毎のエラー遷移数を表すエラー遷移数テーブルの一例を示す図。 ブロック毎のエラー遷移数を表すエラー遷移数テーブルの一例を示す図。 訂正ビットカウント回路の概略構成図。 第1のリード処理のフローチャート。 LLR変換テーブルの一例を示す図。 読み出し閾値変更テーブルの一例を示す図。 第2のリード処理のフローチャート。
 以下、幾つかの実施例を説明する。
 なお、以下の実施例では、電気的に書き換え可能な不揮発メモリとして、フラッシュメモリ(FM)が採用され、不揮発メモリを有する記憶デバイスとして、FMを有するFMデバイスが採用される。しかし、FM以外の不揮発メモリ、例えばPRAM(Phase-change Random Access Memory)、MRAM(Magnetoresistive Random Access Memory)、ReRAM(Resistive Random Access Memory)又はFeRAM(Ferroelectric Random Access Memory)が採用されてもよい。
 また、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
 また、以下の説明では、「記憶部」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶部は、主に、プロセッサ部による処理の際に使用される。
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
 また、以下の説明では、「xxxテーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
 また、「読み出し閾値」は、読み出しのときに使用される電圧である。読み出し閾値は、読み出しのときに使用されるいわゆるリードオプション(1以上のパラメータが関連付けられたオプション)における1つのパラメータでよい。
 (1-1)FMデバイスの構成
 図1は、FMデバイスを含んだ装置の概略構成図である。
 装置2001は、複数(又は1つ)のFMデバイス1の他に、それらに接続された上位装置2002を有する。FMデバイス1が、記憶デバイスの一例である。
 本実施例では、装置2001は、計算機からのI/O(Input/Output)要求に応答してデータのI/O(書き込み/読み出し)を実行するストレージ装置である。複数のFMデバイス1が、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループでよい。上位装置2002は、計算機からのI/O要求を処理するストレージコントローラでよい。なお、装置2001は、サーバのような計算機であってもよく、その場合、上位装置2001は、計算機内のプロセッサ部でよい。
 FMデバイス1は、制御回路10、複数(又は1つ)のDRAM(Dynamic Random Access Memory)15、1つ(又は複数)のROM(Read Only Memory)17、複数(又は1つ)のFM19を有する。DRAM15およびROM17のうちの少なくとも1つが、制御回路10にとっての外部メモリの一例である。FM19が、不揮発メモリの一例である。
 DRAM15には、例えば管理情報が格納される。管理情報は、FMデバイス1の管理に関する情報であり、例えば、FM19の各ブロックの消去回数、FM19の論理アドレスと物理アドレスとの変換テーブル、物理領域構成(例えば、FM19、ブロックおよびページの関係)、物理アドレスと物理領域(例えばページ)との対応関係のうちの少なくとも1つを表す情報を含んだ情報である。
 ROM19には、プログラム等が格納される。
 制御回路10は、ホストインターフェース11、CPU12、バッファ(内部バッファメモリ)13、DRAMコントローラ14、ROMコントローラ16、FMコントローラ18、誤り訂正回路20、および、訂正ビットカウント回路21を有する。それらが、制御回路10において、内部バス22に接続されている。ホストインターフェース11が、上位インターフェースの一例である。FMコントローラ18が、下位インターフェースの一例である。
 誤り訂正回路20は、データに誤りがあればそのデータに関連付いたECCを用いてそのデータを訂正する。本実施例では、誤り訂正回路20は、LLR(対数尤度比)を用いた訂正を行う回路である。しかし、本発明は、LLR(Log-likelihood ratio)を用いた訂正以外の誤り訂正にも適用可能である。LLRは、典型的には、LDPC(低密度パリティチェック)コードを用いた訂正において使用される。
 訂正ビットカウント回路21は、読み出し閾値種類毎(閾値電圧分布レベル間の閾値毎)に、1→0ビット数(“1”から“0”に訂正されたビットの数)、および、0→1ビット数(“0”から“1”に訂正されたビットの数)をカウントする。結果として、訂正ビットカウント回路21は、後述の第1~第6遷移数をカウントする。
 ホストインターフェース11は、上位装置2002とのコマンドやデータの通信を仲介する。CPU12は、ROM17に格納されたプログラム等をROMコントローラ16経由で読み出し、上位装置2002からのコマンドに従い、内部バス22に接続された各モジュールを制御して、コマンドの応答やデータを生成し、上位装置2002に転送する。また、FMコントローラ18には、複数のFM19が接続される。
 例えば、FMデバイス1が上位装置2002からライトデータおよびライトコマンドを受信した場合、次の処理が行われる。すなわち、ホストインターフェース11を介して、ライトデータおよびライトコマンドが一旦内部バッファ13に格納される。CPU12は、内部バッファ13に格納されたライトコマンドを解釈する。CPU12は、解釈の結果に基づき、誤り訂正回路20にライトデータを転送する。また、CPU12は、解釈の結果に基づき、ECC(Error-Correcting Code)を生成し、そのECCをDRAM15にDRAMコントローラ14を介して転送する。次に、CPU12は、DRAM15内の管理情報を基に、ライトデータの書き込み先領域(FM19におけるページ)を決定し、FMコントローラ18を制御して、DRAM15に格納されたライトデータとECCをFM19における書き込み先領域に書き込み、上位装置2002に書き込み完了の応答(ライトコマンドに対する応答)を返す。なお、ECCは、誤り訂正に必要なパリティデータの一例である。
 また、例えば、FMデバイス1が上位装置2002からリードコマンドを受信した場合、次の処理が行われる。すなわち、ホストインターフェース11を介して、リードコマンドが一旦内部バッファ13に格納される。CPU12は、内部バッファ13に格納されたリードコマンドを解釈する。CPU12は、解釈の結果と、DRAM15内の管理情報とに基づき、読み出し元領域(リードコマンドに従うリードデータが格納されている物理領域(FM19におけるページ)を特定する。CPU12は、FMコントローラ18を制御して、特定された読み出し元領域からリードデータを読み出す。読み出されたリードデータは、CPU12により誤り訂正回路20に転送される。誤り訂正回路20は、そのリードデータに誤りがあれば、そのリードデータに関連付いたECCを用いて誤りを訂正する。リードデータ(誤りがあればそれが訂正されたリードデータ)が、CPU12により、DRAM15に格納される。このとき、訂正ビットカウント回路21が、読み出し閾値種類毎に、1→0ビット数、および、0→1ビット数をカウントする。誤り訂正が正常に行われたら、CPU12が、DRAM15内のリードデータを上位装置2002に転送する。
 FM19は、複数のFMチップを有する。FMチップの概略構成について説明する。
 図2は、FMチップの概略構成図である。
 FMチップ101は、複数のブロック(物理ブロック)111で構成された記憶領域を有している。FMチップ101の消去単位は、ブロック単位となる。また、FMチップ101は、外部とのインターフェースとしてI/Oレジスタ102を有している。ライトデータおよびリードデータは、このI/Oレジスタ102を介して行われる。I/Oレジスタは、ページサイズ以上の記憶容量を持っている。
 次に、FM19のブロックについて説明する。
 図3は、FM19のブロックの概略構成図である。
 ブロック111は、複数のページ121で構成された記憶領域を有している。FMチップ101の書き込み単位は、ページ単位となる。また、MLC(Multi-Level Cell)においては、1つのセルに2ビットの情報を記憶できるため、図3に示すように、各ページには、対をなすページペアが存在する。本実施例において、「ページペア」は、対となった2つのページで構成されている。例えば、ページ1とページ3はページペアを構成している。ページ1は、LSB(Least significant bit)データを格納しており、ページ3は、MSB(Most significant bit)データを格納している。ページ1は、LSBページの一例であり、ページ3は、MSBページの一例である。LSBデータを格納したページを「LSBページ」と呼び、MSBデータを格納したページを「MSBページ」と呼ぶことができる。LSBページとMSBページでページペアが構成される。ページペアにおいて、一方のページは、他方のページのペアページである。例えば、ページ1は、ページ3のペアページであり、ページ3は、ページ1のペアページである。
 次に、FM19のページについて説明する。
 図4は、FM19のページの概略構成図である。
 ページ121には、複数(又は1つ)のECC CW(ECC Code Word)141が格納される。ECC CWは、誤り訂正の単位の一例である。ECC CWは、データ131とそのデータ131用のECC132で構成される。
 (1-2)誤り訂正の最適化
 次に、MLC FMのエラーについて説明する。なお、以下の説明では、LSBページの読み出し閾値(閾値電圧)を、「LSB読み出し閾値」と呼び、MSBページの読み出し閾値を「MSB読み出し閾値」と呼ぶ。
 図5は、MLC FMにおけるセルの閾値電圧分布の模式図である。
 MLCの場合、閾値電圧の分布は、4つのレベルに分かれる。4つのレベルは、電圧の低い方から、L11(LSB“1”およびMSB“1”)、L01(LSB“1”およびMSB“0”)、L00(LSB“0”およびMSB“0”)、および、L10(LSB“0”およびMSB“1”)である。このような場合、LSB読み出し閾値Vth0は、L01とL00間にある。一方で、MSB読み出し閾値は2つあり、第1のMSB読み出し閾値Vth1は、L11とL01間にあり、第2のMSB読み出し閾値Vth2は、L00とL10間にある。各レベルの分布が完全に分かれている。適切な読み出し閾値が設定された場合は、読み出し時のエラービット数は0となる。しかし、実際には、図5に示すように、各レベルの分布は一部か重なっており、読み出し時のエラーとして観測される。つまり、LSBページの場合は、L00の分布のうちLSB読み出し閾値Vth0より左の部分(低電圧側の部分)と、L01の分布のうちLSB読み出し閾値Vth0より右の部分(高電圧側の部分)について、エラーが観測される。また、この分布の重なりは、書き込み回数および消去回数が増えるごとに、フローティングゲートの絶縁層である酸化膜が劣化し、結果として、大きくなる。そのほかに、酸化膜の劣化によりフローティングゲートに格納された電子が抜けることで、分布自体が左側に移動し、読み出し閾値がずれることでも、エラービットが増加する。また、読み出し時に、読み出し元となるページ以外に電圧が印加されるが、この電圧により、ごく弱い書き込み状態となり、フローティングゲートに電子が注入されることで、分布自体が右側に移動し、読み出し閾値電圧がずれることでも、エラービットが増加する。更に、温度の影響でこれらの状態の変化が加速されたりする。このように、様々な要因でエラーが増加され、FMチップ101毎、ブロック111毎、又は、ページ121毎に、エラービットの増減は異なることになる。
 読み出し時のエラービットを最小にするためには、正確な読み出し閾値を設定することが重要となる。
 図6は、LSB読み出し閾値がずれた状態を示す図である。
 L00のエラーとして観測される部分161は、L00の分布のうちLSB読み出し閾値Vth0より左の部分である。L01のエラーとして観測される部分162は、L01の分布のうちLSB読み出し閾値Vth0より右の部分である。図6に示した状態は、書き込みから時間が経過して、各レベルの分布が、左方向に移動した場合で、LSB読み出し閾値Vth0がずれた状態である。この時、部分161は、部分162より大きい。各レベルの分布の形状が左右対称かつ各レベルに属するセルの数が等しければ、エラービットの数が最も少なくなるのは、部分161と部分162が等しいときである。したがって、部分161は、部分162より大きい場合は、LSB読み出し閾値Vth0を左側すなわち小さい値に設定し変更後の閾値Vth0で読み出しを行うことで、エラーを少なくすることが可能となる。また、図6のような場合、誤り訂正時には、0→1ビット数が、1→0ビット数より多くなる。また、0→1ビット数の比率が大きくなるほど、LSB読み出し閾値Vth0のずれが大きい。
 また、LLRを用いた訂正では、訂正がLLRという値(例えばその絶対値)を基に行われる。例えば、LLRの絶対値が重要度として訂正が行われる。このため、読み出し閾値の最適化に代えて又は加えて、LLRの最適化(つまりLLRを適正に設定すること)により訂正能力を上げることが可能である。LLRは、下記に示す式を用いる。
λn0= ln{(1-p01)/p01}   yn=0 のとき    (式1)
λn1= ln{p10/(1-p10)}   yn=1 のとき    (式2)
但し、p01は、“0”が“1”になる確率である。p10は、“1”が“0”になる確率である。ynは、読み出したデータの値である。
 読み出したデータが“0”の場合のLLRであるλn0は、正の値となり絶対値が大きい方が誤る確率は小さい。読み出したデータが“1”の場合のLLRであるλn1は、負の値となる。絶対値が大きい方が誤る確率は小さい。誤る確率が正確なほど訂正の能力を上げることが可能となる。図6の場合は、読み出したデータが“1”の場合のLLRであるλn1の絶対値を、読み出したデータが“0”の場合のLLRであるλn0の絶対値より小さくすることで、訂正能力を上げることができる。
 (1-3)検査リード処理
 次に、検査リード処理について説明する。
 図7は、検査リード処理のフローチャートである。
 検査リード処理は、例えば1日に1度実行される。なお、検査リードは定期的に行ってもよいし、FMデバイス10の起動時やFMデバイス10へのアクセスが低いときなど不定期に行ってもよい。1回の検査リード処理において、検査の対象(読み出し元)は、全てのページであるが、一部のページでもよい。1つの検査対象ページから検査のためにデータを読み出すことを、「検査リード」と呼ぶことができる。1回の検査リード処理では、各検査対象ページについて検査リードが行われる。
 S101では、CPU12は、検査対象となるチップ、ブロックおよびページの番号を初期化する。
 S102では、CPU12は、検査対象ページからデータを読み出す。つまり、検査リードが行われる。検査リードは、設定されている読み出し閾値を用いて行われる。本実施例では、全ページに共通のLSB読み出し閾値、第1および第2の読み出し閾値が設定されている。しかし、それに代えて、FMデバイス1における記憶領域単位毎に(例えば、チップ毎、ブロック毎、ページ毎)に、LSB読み出し閾値、第1および第2の読み出し閾値が設定されてもよい。ページ毎に読み出し閾値が設定されている場合、LSBページについてはLSB読み出し閾値が設定されており、MSBページについては第1または第2のMSB読み出し閾値が設定されている。
 S103では、読み出したデータにおける全てのECC CWの各々について、誤り訂正回路20により、誤り訂正が実行される。訂正ビットカウント回路21が、読み出し閾値種類毎に、1→0ビット数、および、0→1ビット数をカウントする。
 S104では、制御回路10(例えばCPU12)が、S103の結果(カウント値)に基づき、エラー遷移数テーブルの更新を行う。
 S105では、CPU12が、検査の対象となるチップ、ブロック、ページの番号の更新を行う。
 S106では、CPU12が、全チップのブロック、ページについて検査リードが終了したかを判断する。判断結果が偽の場合(S106:No)、S102に戻り検査リード処理が継続する。判断結果が真であれば(S106:Yes)、検査リード処理が終了する。
 以上が、検査リード処理である。検査リード処理により、エラー遷移数テーブルが更新される。なお、上述したように、全チップのブロック、ページが検査対象でよいがが、検査対象ページが、上位装置2002からのリードコマンドに従う読み出し元ページと同じ場合、FMデバイス2001の性能に影響が出るため、1回の検査リード処理における検査対象は、FMデバイス1における一部のブロックやページだけでもよい。
 次に、図8~10を用いてエラー遷移数テーブルについて説明する。「エラー遷移数テーブル」とは、エラー遷移数を表すテーブルである。「エラー遷移数」とは、“0”から“1”へ訂正(遷移)されたビット数と“1”から“0”へ訂正されたビット数のいずれかを意味する。エラー遷移数として、本実施例では、後述の第1遷移数~第6遷移数がある。また、エラー遷移数テーブルは、DRAM15に格納される上述の管理情報に含まれる情報でよい。
 図8は、ECC CW毎のエラー遷移数を表すエラー遷移数テーブルの一例を示す図である。
 図8において、ECC CW毎のエラー遷移数を表すエラー遷移数テーブル201は、ECC CW毎に、チップ番号211、ブロック番号212、ページペア番号213、ECC CW番号214、遷移数215~220、および、状態221を保持する。
 チップ番号221は、ECC CWを格納したチップの番号を表す。ブロック番号212は、ECC CWを格納したブロックの番号を表す。ページペア番号213は、ECC CWを格納したページが属するページペアの番号を表す。ECC CW番号214は、ECC CWの番号を表す。遷移数215は、第1遷移数、すなわち、LSB読み出し閾値について“1”から“0”に訂正(遷移)されたビットの数を表す。遷移数216は、第2遷移数、すなわち、LSB読み出し閾値について“0”から“1”に訂正されたビットの数を表す。遷移数217は、第3遷移数、すなわち、第1のMSB読み出し閾値について“1”から“0”に訂正されたビットの数を表す。遷移数218は、第4遷移数、すなわち、第1のMSB読み出し閾値について“0”から“1”に訂正されたビットの数を表す。遷移数219は、第3遷移数、すなわち、第2のMSB読み出し閾値について“1”から“0”に訂正されたビットの数を表す。遷移数220は、第4遷移数、すなわち、第2のMSB読み出し閾値について“0”から“1”に訂正されたビットの数を表す。遷移数215~220の各々は、対応するECC CWについてカウントされた総ビット数を表す。状態221は、誤り訂正において訂正が失敗したかである。状態221としては、訂正成功、LSB訂正不可(LSBについて訂正失敗)、MSB訂正不可(MSBについて訂正失敗)、および、訂正不可(LSB及びMSBのどちらについても訂正失敗)がある。
 テーブル201は、例えば、図7のS104において、ページ単位での誤り訂正が行われた場合に生成される。訂正対象のECC CWについてのエラー遷移数に応じて、テーブル201が更新される。また、テーブル201は、例えばDRAM15に格納されるが、テーブル201はECC CW毎にレコードを有するためテーブルサイズが膨大である。このため、或る記憶領域範囲単位(例えばブロック単位)での検査リード処理が終了した時に、その記憶領域範囲について、所定の誤り状況に該当する場合(例えば、一定数以上の誤りや訂正不可があった場合)にのみ、その記憶領域範囲単位について、ECC・CW毎のエラー遷移数を表すテーブルがDRAM15に格納されてもよい。
 図9は、ページペア毎のエラー遷移数を表すエラー遷移テーブルの一例を示す図である。
 図9において、ページペア毎のエラー遷移数を表すエラー遷移数テーブル231は、ページペア毎に、チップ番号241、ブロック番号242、ページペア番号243、遷移数244~249、および、参照テーブル250を保持する。
 チップ番号241は、ページペアを有するチップの番号を表す。ブロック番号242は、ページペアを有するブロックの番号を表す。ページペア番号243は、ページペアの番号を表す。遷移数244~249は、それぞれ、第1遷移数~第6遷移数を表す。遷移数244~249の各々が表す数は、対応するページペアについてカウントされた総ビット数でよい。参照テーブル250は、該当するページペアについての情報を保持した上述のテーブル201へのアドレスを表す。なお、該当するページペアについて情報を保持したテーブル201が存在しない場合でも、そのページペアについて所定の誤り状況が検出された場合(例えば、そのページペア内の全てのECC CWについて訂正に失敗した場合)、その旨の情報がテーブル201に書き込まれ且つ参照テーブル250が保持されてもよいし、その旨の情報が参照テーブル250として保持されてもよい。
 テーブル231は、例えば、図7のS104において、ページ単位での誤り訂正が行われた場合にレコードが追加され、その追加されたレコードに対応したページペアについてのエラー遷移数に応じて、テーブル231が更新される。また、テーブル231は、例えばDRAM15に格納されるが、テーブル231はページペアW毎にレコードを有するためテーブルサイズが大きい。このため、或る記憶領域範囲単位(例えばブロック単位)での検査リードが終了した時に、その記憶領域範囲について、所定の誤り状況に該当する場合(例えば、一定数以上の誤りや訂正不可があった場合)にのみ、その記憶領域範囲単位について、ページペアのレコードがテーブル231に保持されてもよい。
 図10は、ブロック毎のエラー遷移数を表すエラー遷移数テーブルの一例を示す図である。
 図10において、ブロック毎のエラー遷移数を表すエラー遷移数テーブル261は、ブロック毎に、チップ番号271、ブロック番号272、遷移数273~278、および、参照テーブル279を保持する。
 チップ番号271は、ブロックを有するチップの番号を表す。ブロック番号272は、ブロックの番号を表す。遷移数273~278は、それぞれ、第1遷移数~第6遷移数を表す。遷移数273~278の各々が表す数は、本実施例では、対応するブロックにおける複数の記憶領域範囲(ここではECC CWであるがページペアのように他の範囲でもよい)にそれぞれ対応した複数の値(遷移数)の平均であるが、それに代えて、対応するブロックについてカウントされた総ビット数でもよい。参照テーブル279は、該当するブロックについて情報を保持したテーブル201及び231のうちの少なくとも1つが存在する場合に保持される情報であって、そのテーブルへのアドレスを表す情報である。
 上述したエラー遷移数テーブル201、231および261の全てがあることが望ましいが、処理量が多くなり性能に影響が出る可能性があるため、例えば、LSB読み出し閾値の遷移数(つまり第1および第2遷移数)のみが記録されてもよい。つまり、検査リードの対象は、LSBページのみでもよい。検査対象がLSBページだけの場合、図5に示すように、読み出し閾値種類はLSB読み出し閾値の1つしかないため、検査リードでは、設定されているLSB読み出し閾値が使用されればよい。一方、検査対象がMSBページだけの場合、図5に示すように、読み出し閾値種類は第1および第2MSB読み出し閾値の2つであるが、検査対象のMSBページだけでは、2つのMSB読み出し閾値の区別をすることが出来ない。その区別をするためには、LSBページのデータも読み出す必要がある。本実施例では、LSBページの読み出し閾値種類が1つしかない例を説明したが、FMの種類によっては、MSBページの読み出し閾値種類が1つしかない場合もあり、その場合は、MSBページのみを検査対象とすることもできる。
 次に、訂正ビットカウント回路21について説明する。
 図11は、訂正ビットカウント回路21の概略構成図である。
 訂正ビットカウント回路21は、訂正前のLSBデータを格納する訂正前LSBバッファ321、訂正前のMSBデータを格納する訂正前MSBバッファ322、訂正後のLSBデータを格納する訂正後LSBバッファ323、訂正後のMSBデータを格納する訂正後MSBバッファ324、訂正前LSBバッファ321と訂正前MSBバッファ322と訂正後LSBバッファ323と訂正後MSBバッファ324からデータを1ビットずつ入力して比較を行う比較器331~336、比較の結果、真であった数をカウントするカウンタレジスタ341~346、および、訂正前LSBバッファ321と訂正前MSBバッファ322と訂正後LSBバッファ323と訂正後MSBバッファ324およびカウンタレジスタ341~346の入出力を行うインターフェース311を有する。
 訂正ビットカウント回路21の動作は、例えば次の通りである。すなわち、訂正ビットカウント回路21は、LSBページからのLSBデータを訂正前LSBバッファ321に格納し、MSBページ(当該LSBページのペアページ)からのMSBデータを訂正前MSBバッファ322に格納する。訂正ビットカウント回路21は、訂正されたLSBデータ(バッファ321に格納されるLSBデータが誤り訂正回路20により訂正されたもの)を訂正後LSBバッファ323に格納し、訂正されたMSBデータ(バッファ322に格納されるMSBデータが誤り訂正回路20により訂正されたもの)を、訂正後MSBバッファ322に格納する。そして、訂正ビットカウント回路21は、バッファ321~324からそれぞれ1ビットずつ比較器331~336にデータを転送する。比較器331~336が、それぞれ、入力されたデータの比較を行う。比較器331~336の各々は、比較の結果が真であった場合に、その比較器に対応したカウンタレジスタ(レジスタ341~346のいずれか)におけるカウント値に1を加算する。また、カウンタレジスタ341~346の各々におけるカウント値は、処理を始める前に所定値(例えば0)にリセットされている。例えば、比較器333とカウンタレジスタ341では、訂正前のデータが“01”(LSBデータが“1”、MSBデータが“0”)であったが訂正後のデータが“00”(LSBデータが“0”、MSBデータが“0”)となった数をカウントする。つまり、図6における部分161のセルの数をカウントすることになる。このような構成及び動作により、読み出し閾値種類毎の遷移数をカウントすることが可能である。本実施例では、訂正ビットカウント回路21は、誤り訂正回路20と独立しているが、訂正ビットカウント回路21は、誤り訂正回路20と一体であってもよい。また、本実施例では、誤り訂正も訂正ビットカウントも、回路20及び21のようなハードウェアにより行われるが、誤り訂正も訂正ビットカウントのうちの少なくとも1つが、CPU12がプログラムを実行することにより行われてもよい。
 (1-4)第1のリード処理
 次に、第1のリード処理について説明する。
 図12は、第1のリード処理のフローチャートである。第1のリード処理は、上位装置102からリードコマンドを受信した場合に、開始される。リードコマンドを受信した場合、上述した処理により、読み出し元が特定される。
 S202では、CPU12は、FMコントローラ18を制御して、読み出し元ページからデータを読み出す。CPU12は、この読み出しを、読み出し元ページのページ種類(LSBページまたはMSBページ)に対応した種類の読み出し閾値を用いて行う。使用される読み出し閾値種類を、図12の説明において、「対象閾値種類」と呼ぶ。CPU12は、読み出されたデータ(1以上のECC CWで構成されたデータ)を、誤り訂正回路20に転送する。誤り訂正回路20により、誤り訂正が実行される。
 S203では、CPU12は、S202での誤り訂正が成功か否かを判断する。
 S203の判断結果が真の場合(S203:Yes)、S221に進む。S221では、CPU12は、上位装置102にデータ(例えばECCが除かれたデータ)を転送する。
 S203の判断結果が偽の場合(S203:No)、第1の誤り訂正処理、すなわち、S204~S212が実行される。
 S204では、CPU12は、エラー遷移数テーブル(例えば、上述したテーブル261、231および201のうちの少なくとも1つ)を参照し、該当ECC CW(訂正失敗のECC CW)且つ対象閾値種類に対応した遷移数セット(つまり2つの遷移数(0→1、1→0)を特定する。具体的には、例えば、テーブル201に該当ECC CW且つ対象閾値種類に対応した遷移数セットの情報があれば、S204は終了する。もし、テーブル201に該当ECC CW且つ対象閾値種類に対応した遷移数セットの情報がない場合は、CPU12は、テーブル201の上位テーブル231から、該当ECC CWを含んだページペアと対象閾値種類とに対応した遷移数セットの情報を探す。その情報があれば、S204は終了する。その情報がない場合は、CPU12は、テーブル231の上位テーブル261から、該当ECC CWを含んだブロックと対象閾値種類とに対応した遷移数セットを特定する。
 S205では、CPU12は、LLR最適化を実行する。すなわち、CPU12は、S204で特定された遷移数セットを基に、0→1比率を算出し、算出された0→1比率に従い、LLRを最適化する。「0→1比率」とは、遷移数(0→1)の比率、具体的には、例えば、特定された遷移数セットの合計に対する、遷移数(0→1)の比率である。例えば、対象閾値種類についての0→1比率が、所定の比率低下状況の場合(例えば、0→1比率が基準値以下となった場合、または、0→1比率の低下幅が一定値を超えた場合)、CPU12は、対象閾値種類について、“1”のデータに対応するLLRの絶対値を大きくし、“0”のデータに対応するLLRの絶対値を小さくする。このようなLLR最適化(例えば、LLRの絶対値の調整)は、0→1比率の低下状況に応じて計算により算出されてもよいが、本実施例では、LLR変換テーブルを参照することにより行われる。
 図13は、LLR変換テーブルの一例を示す図である。
 LLR変換テーブル401は、上述した管理情報に含まれる情報でよく、例えばDRAM15に格納されてよい。LLR変換テーブル401は、例えば、読み出し閾値種類毎に用意されてもよいし、全ての読み出し閾値種類に共通であってもよい。LLR変換テーブル401は、0→1比率範囲毎に、0→1比率範囲411、“1”のLLR412、および、“0”のLLR413を保持する。0→1比率範囲411は、0→1比率の範囲を表す。“1”のLLR412は、“1”のデータに対応するLLRを表す。“0”のLLR413は、“0”のデータに対応するLLRを表す。
 図13の例によれば、0→1比率が小さいほど、“1”のデータに対応するLLRの絶対値が大きく、“0”のデータに対応するLLRの絶対値が小さい傾向にある。図13の例によれば、0→1比率が、1%未満の場合、“1”のデータに対応するLLRは“-7”に設定され、“0”のデータに対応するLLRは“2”に設定される。
 図8~10を用いた例で説明する。誤り訂正の対象ECC CWがチップ番号1、ブロック番号2、ページペア番号2、ECC CW番号3のLSBページの場合、図10のテーブル261に、チップ番号1及びブロック番号2を含んだレコードがあり、そのレコードに、参照テーブル279として“addr1”が格納されている。その“addr1”は、テーブル216の上位のテーブル231を指す。テーブル231には、チップ番号1、ブロック番号2、ページペア番号2に対応した参照テーブル250“addr3”が格納されている。“addr3”は、テーブル231の上位のテーブル201を指す。テーブル201から、チップ番号1、ブロック番号2、ページペア番号2、および、ECC CW番号3を格納したレコードL203から特定される。レコードL203から、第1および第2遷移数が特定される。図8のレコードL203によれば、第1遷移数(1→0)は、“2”であり、第2遷移数(0→1)は、“25”である。そのため、0→1比率は、約93%(100x25/(2+25))となる。0→1比率が93%の場合、“1”のデータに対応するLLRは“-2”であり、“0”のデータに対応するLLRが“7”である。例えば、前回の0→1比率が1%未満のように小さかった場合、今回のS205において、結果として、“1”のLLRの絶対値が小さくなり、“0”のLLRの絶対値が大きくなる。また他の例では、ECC CW番号2を格納したレコードL202(図8参照)によれば、検査リードで、LSBページについて訂正が不可であったため、LSBページの遷移数の情報がない。このような場合は、ペアページ(MSBページ)の遷移数の情報、または、訂正が成功している他のECC CW番号に対応した遷移数の情報を参照して、LLRの最適化が実行されてよい。
 なお、訂正成功が関連付いた参照される遷移数情報は、読出し元領域(例えば、当該EEC CWが格納されている領域、または、その領域を含んだ読み出し元ページ)から最も近い領域に対応した遷移数情報でよい。近い領域ほど同様の遷移状況(閾値電圧分布)であることが期待されるためである。
 また、「0→1比率」は、見方を変えれば、1→0比率、すなわち、遷移数セットの合計に対する、遷移数(0→1)の比率である。
 さて、次に、S206では、誤り訂正回路20は、S205でCPU12により最適化されたLLRを用いて再度誤り訂正を実行する。
 S207では、CPU12は、S206での誤り訂正が成功か否かを判断する。S206の判断結果が真の場合(S207:Yes)、S221に処理が進む。S207の判断結果が偽の場合(S207:No)、S208に処理が進む。
 S208では、CPU12は、読み出し閾値最適化を実行する。すなわち、CPU12は、S205で算出された0→1比率に従い、読み出し閾値を最適化する。例えば、0→1比率が小さくなった場合、CPU12は、対象閾値種類の読み出し閾値を正の方向にシフトする(つまり閾値を大きくする)。逆に、例えば、0→1比率が大きくなった場合、CPU12は、対象閾値種類の読み出し閾値を負の方向にシフトする(つまり閾値を小さくする)。
 図14は、読み出し閾値変更テーブルの一例を示す図である。
 読み出し閾値変更テーブル421は、上述した管理情報に含まれる情報でよく、例えばDRAM15に格納されてよい。読み出し閾値変更テーブル421は、例えば、読み出し閾値種類毎に用意されてもよいし、全ての読み出し閾値種類に共通であってもよい。読み出し閾値変更テーブル421は、FMチップ特性のような情報を基に予め用意されてもよい。読み出し閾値更新テーブル421は、0→1比率範囲毎に、0→1比率範囲431、および、読み出し閾値オフセット432を保持する。読み出し閾値オフセット432は、読み出し閾値のシフト方向とシフト幅を表す。図14の例によれば、例えば、0→1比率が80%の場合は、読み出し閾値が負の方向に80mVシフトする。
 さて、次に、S209では、CPU12は、S208で最適化された読み出し閾値(変更した読み出し閾値)を用いて、同一の読み出し元ページからデータを読み出し、読み出したデータを誤り訂正回路20に転送する。誤り訂正回路20により、誤り訂正が実行される。
 S210では、CPU12は、S209での誤り訂正が成功か否かを判断する。S203の判断結果が真の場合(S210:Yes)、S221に処理が進む。S210の判断結果が偽の場合(S210:No)、S211に処理が進む。
 S211で、CPU12は、S209で使用した読み出し閾値を微調整可能な否かを判断する。具体的には、例えば、CPU12は、微調整定義に従う微調整の実行が可能か否かを判断する。微調整定義は、微調整に関する定義であり、例えば、微調整可能な閾値範囲、微調整によって読出し閾値がシフトする方向(正の方向または負の方向)、および、シフトする幅(閾値に加算又は減算される値)、のうちの少なくとも1つを含む。微調整定義は、あらかじめ決められておいてもよいし、S205で算出された0→1比率のような何らかの値を基にCPU12により決定されてもよい。
 S211の判断結果が真の場合(S211:Yes)、S212で、CPU12は、S209で使用した読み出し閾値を、微調整定義に従い微調整する。その後、S209で、微調整後の読み出し閾値を用いた読み出しが実行される。
 一方、S211の判断結果が偽の場合(S211:No)、リード不可として処理が終了する。訂正不可だったためである。この場合、CPU12は、上位装置に対してエラーを通知する。
 以上が、第1のリード処理の説明である。
 なお、第1のリード処理では、S207:Noの場合にS208が実行されるが(すなわち、LLR最適化は1度しか行われないが)、S207:NoであったときにLLRの調整が行われ、その後、調整後のLLRを用いて、DRAM15内の読み出されたデータの訂正が実行され、再度、訂正の成否が判断されてもよい。その判断結果が偽の場合に、S208が実行されてもよい。LLRの調整とその次の訂正成否の判断を最大N回繰り返すループが実行されてよい(Nは自然数)。訂正成否の判断結果が真となったら、そのループが終了し、S221が実行されてよい。N回繰り返しても訂正成否の判断結果が偽のままであったら、S208が実行されてよい。
 (1-5)実施例1の効果
 一比較例によれば、読み出し閾値は、所定のシフト方向に所定のシフト幅で変更され、変更の都度に、リードと訂正成否判断とが実行される。読み出し閾値の変更は、読み出し閾値範囲の先頭から終端にかけて行われることもあり得る。
 一方、実施例1によれば、遷移状況(一例が、0→1比率)に応じて読み出し閾値のシフト方向およびシフト幅が異なる。このため、読み出し閾値は、一回の最適化で、大きく変更されることもあれば、わずかに変更されることもある。このような読み出し閾値最適化が遷移状況に応じて行われるため、訂正成功のための読み出し閾値を設定するための読み出し閾値変更(最適化)の回数を削減することができる。故に、リードの発生頻度を削減することができ、結果として、読み出しのレイテンシを小さくすることが可能となる。
 以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 実施例2では、実施例1の第1のリード処理に代えて、第2のリード処理が採用される。
 図15は、第2のリード処理のフローチャートである。
 S301~S306は、図12のS202~S207とそれぞれ同じである。なお、第2の誤り訂正処理は、S303~S311で構成された処理である。
 S307では、CPU12は、読み出し元ページのペアページが所定の状態か否かを判断する。例えば、読み出し元ページがLSBページの場合、ペアページ(MSBページ)に格納されているデータがキャッシュデータとしてDRAM15に格納されているという第1の条件が満たされているか、あるいは、上位装置2002からのリードコマンドが蓄積されるキューにペアページ(MSBページ)を読み出し元としたリードコマンド(以下、対象リードコマンド)が蓄積されているという第2の条件が満たされているかを判断する。
 第1の条件が採用されている理由は、次の通りである。すなわち、DRAM内のデータ(MSBデータ)を誤り訂正回路20に転送可能だからであり、また、FM19に対する新たな読み出しは発生しないからである。
 第2の条件が採用されている理由は、次の通りである。すなわち、キューに対象リードコマンドが蓄積されているということは、ペアページに対するリードがいずれ行われるということである。故に、この段階で(対象リードコマンドの処理順番になる前に)、対象リードコマンドに従う読み出しが行われれば、処理中のリードコマンドの応答性能は低下し得るものの、対象リードコマンドの応答性能は向上することになり、結果として、全体的には、FMデバイス1の応答性能の低下を削減できるからである。
 S307の判断結果が偽の場合(S307:No)、リード処理が終了する。S307の判断結果が真の場合(S307:Yes)、S308に処理が進む。
 S308では、ペアページ(MSBページ)に格納されているデータがキャッシュデータとしてDRAM15にある場合、CPU12は、DRAM15からペアページのデータを誤り訂正回路20に転送する。対象リードコマンドがキューに蓄積されている場合は、CPU12は、対象リードコマンドに従い、ペアページからデータを読み出し、読み出したデータを誤り訂正回路20に転送する。
 次に、S309では、CPU12は、LLR最適化を行う。例えば、読み出し元ページがLSBページであり、ペアページがMSBページであり、0→1比率が大きいとする(例えば、S304で算出された0→1比率が前回よりも大きいとする)。この場合、L00からL01への遷移が多いため(図5参照)、L01の誤り率が大きくなることになる。したがって、CPU12は、L01のLLRの絶対値を小さい値にする。また、例えば、読み出し元ページがMSBページであり、ペアページもMSBページであり、第1のMSB読み出し閾値について0→1比率が大きく、第2のMSB読み出し閾値について0→1比率が小さいとする。この場合、L11とL00に含まれる誤り率が大きくなることになる。したがって、CPU12は、L11とL00のLLRの絶対値を小さい値にする。このように、S309では、読出し元ページ(処理中のリードコマンドに従う読み出し元)の種類と、ペアページの種類と、読出し元ページ及びペアページの種類に対応した読み出し閾値種類についての0→1比率の大きさと、に基づいて、誤り率が大きくなるレベル(閾値電圧分布におけるレベル)が特定され、特定されたレベルのLLRの絶対値が小さくされる。
 次に、S310では、誤り訂正回路20は、S309でCPU12により最適化されたLLRを用いて再度誤り訂正を実行する。なお、この誤り訂正の対象となるデータは、処理中のリードコマンドに従うデータ、すなわち、S301で読み出されたデータである。
 S311では、CPU12は、S310での誤り訂正が成功か否かを判断する。S310の判断結果が真の場合(S311:Yes)、S321に処理が進む。S321は、S221と同じ処理である。S311の判断結果が偽の場合(S311:No)、S208~S212が行われる。
 以上が、第2のリード処理である。
 実施例2によれば、読み出し元ページデータの他にペアページのデータを用いることで、4つのレベルのどのレベルかが判断できより正確にLLRの値を設定することが可能となり、誤り訂正能力が向上する。また、ペアページからのデータの読み出しも、上位装置2002からリードコマンドがあった場合に限られるので、訂正に失敗した場合でも、読み出しにかかる時間を無駄にすることがない。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
 例えば、上述の本実施例では、1つのセルに2ビットを格納するFMについて説明したが、2ビットより多くのビット数を格納する不揮発メモリにも本発明を適用可能である。
 また、読み出し閾値とLLRとのうちの少なくとも1つは、記憶領域範囲単位(例えば、ECC CW、ページ、ブロック、セル、FMチップ、あるいはダイ)毎に用意されてもよいし、複数の記憶領域範囲(例えば全ての記憶領域範囲)に共通であってもよい。読み出し閾値もLLRも、小さな記憶領域範囲単位毎にあれば、訂正成功の確率が高まると考えられる。しかし、その場合、管理対象としての読み出し閾値およびLLRが多く、故に、管理情報のサイズが大きい。一方、読み出し閾値もLLRも、多くの又は広い記憶領域範囲に共通であれば、管理対象としての読み出し閾値およびLLRが少なく、故に、管理情報のサイズが小さい。しかし、読み出し閾値およびLLRについて変更の回数が多くなり得る。上述したいずれの実施例でも、読み出し閾値およびLLRのいずれも、変更(最適化)を、効率的に行うことができる。すなわち、読み出し閾値とLLRのいずれの最適化においても、対象閾値種類に対応した0→1比率(遷移状況)に応じて、変化幅(増減する値の大きさ)が異なる。つまり、少ない最適化(好ましくは一回の最適化)で、訂正成功可能な読み出し閾値およびLLRを取得することが期待できる。このため、FMに対する読み出しの発生頻度を削減できる。さらに、いずれの実施例でも、読み出し閾値の最適化よりも先にLLRの最適化が実行され、LLRの最適化の結果として訂正が成功すれば、読み出し閾値の最適化はスキップされる。結果として、一層、FMに対する読み出しの発生頻度を削減できる。
 また、例えば、エラー遷移数テーブルは、検査リード処理に代えて又は加えて、通常のリード処理において更新されてもよい。
 また、図12及び15の説明において、最適化対象のLLRは、S202又はS301で読み出されたデータ(読み出し元ページから読み出されたデータ)の誤り訂正で使用されるLLRである。
 また、上述の説明によれば、例えば、下記の表現が可能である。
複数の電圧分布レベルがある不揮発メモリを有する不揮発メモリデバイスと、
前記不揮発メモリデバイスにリードコマンドを送信する装置である上位装置と
を有し、
前記不揮発メモリデバイスが、
(A)前記不揮発メモリのうちの前記リードコマンドに従う読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、
(B)前記読み出されたデータについて、対数尤度比を用いた誤り訂正を実行し、
(C)前記誤り訂正に失敗した場合、1以上の読み出し閾値種類の各々についての遷移数のうちの、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数を基に、前記対数尤度比を最適化し、
前記1以上の読み出し閾値種類の各々は、対応する電圧分布レベル間の閾値であり、
前記1以上の読み出し閾値種類の各々についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である、
装置。
1…フラッシュメモリデバイス

Claims (13)

  1.  複数の電圧分布レベルがある不揮発メモリを有する不揮発メモリデバイスと、
     前記不揮発メモリデバイスにリードコマンドを送信する装置である上位装置と
    を有し、
     前記不揮発メモリデバイスが、
      (A)前記不揮発メモリのうちの前記リードコマンドに従う読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、
      (B)前記読み出されたデータについて誤り訂正を実行し、
      (C)前記誤り訂正に失敗した場合、
        (c11)1以上の読み出し閾値種類の各々についての遷移数のうちの、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数を基に、その使用された読み出し閾値を最適化し、
          前記1以上の読み出し閾値種類の各々は、対応する電圧分布レベル間の閾値であり、
          前記1以上の読み出し閾値種類の各々についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である、
    装置。
  2.  (c11)の最適化前後の読み出し閾値の差は、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数によって異なる、
    請求項1記載の装置。
  3.  前記不揮発メモリデバイスは、
      (c12)(c11)の最適化後の読み出し閾値を用いて、前記読み出し元領域から、データを読み出し、
      (c13)(c12)で読み出されたデータについて誤り訂正を実行し、
     前記誤り訂正は、対数尤度比を用いた誤り訂正であり、
     (C)において、前記不揮発メモリデバイスが、
      (c00)前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数を基に、前記読み出し元領域から読み出されたデータの誤り訂正で使用される対数尤度比を最適化し、
      (c01)(c00)での最適化後の対数尤度比を用いて、前記読み出し元領域から読み出されたデータについて誤り訂正を実行し、
     前記不揮発メモリデバイスは、(c01)の誤り訂正に失敗した場合、(c11)を実行する、
    請求項2記載の装置。
  4.  前記不揮発メモリデバイスは、(c01)の誤り訂正に失敗した場合、
      (c31)前記読出し元領域から読み出されたデータの誤り訂正で使用される対数尤度比を、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数の他に、前記不揮発メモリのうちの前記読み出し元領域のペア領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数に基づいて、最適化し、
      (c32)(c31)での最適化後の対数尤度比を用いて、前記読出し元領域から読み出されたデータについて誤り訂正を実行し、
     前記不揮発メモリデバイスは、(c32)の誤り訂正に失敗した場合、(c11)を実行する、
    請求項3記載の装置。
  5.  (c31)では、誤り率が大きくなる電圧分布レベルについての対数尤度比の絶対値が小さくされ、
      前記誤り率が大きくなる電圧分布レベルは、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数と、前記ペア領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数とに従う、
    請求項4記載の装置。
  6.  前記不揮発メモリデバイスは、前記ペア領域からデータを読み出すリードコマンドである対象リードコマンドがリードコマンドのキューに蓄積されている場合に、(c31)を実行する、
    請求項4記載の装置。
  7.  前記不揮発メモリデバイスは、前記ペア領域から読み出されたデータがキャッシュデータとして存在する場合に、(c31)を実行する、
    請求項4記載の装置。
  8.  (c31)の最適化前後の対数尤度比の差は、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数と、前記ペア領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数とによって異なる、
    請求項4記載の装置。
  9.  (c00)の最適化前後の対数尤度比の差は、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数によって異なる、
    請求項3記載の装置。
  10.  (c00)の最適化は、遷移元の電圧分布レベルに対応した対数尤度比と遷移先の電圧分布レベルに対応した対数尤度比とのうちの少なくとも1つの絶対値を変更することである、
    請求項3記載の装置。
  11.  前記不揮発メモリデバイスは、検査リード処理を実行し、
     前記検査リード処理は、
      前記不揮発メモリのうちの複数の検査対象領域の各々からデータを読み出すことと、
      前記不揮発メモリのうちの複数の検査対象領域の各々について、読み出されたデータの誤り訂正を実行することと、
      前記不揮発メモリのうちの複数の検査対象領域の各々についての誤り訂正の結果に基づき、前記1以上の読み出し閾値種類の各々についての遷移数を記録することと
    を含み、
     (c11)において、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数は、前記検査リード処理において記録された遷移数である、
    請求項1記載の装置。
  12.  複数の電圧分布レベルがある不揮発メモリから読み出されたデータの誤り訂正制御の方法であって、
     (A)前記不揮発メモリのうちの読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、
     (B)前記読み出されたデータについて誤り訂正を実行し、
     (C)前記誤り訂正に失敗した場合、
      (c11)1以上の読み出し閾値種類の各々についての遷移数のうちの、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数を基に、その使用された読み出し閾値を最適化し、
        前記1以上の読み出し閾値種類の各々は、対応する電圧分布レベル間の閾値であり、
        前記1以上の読み出し閾値種類の各々についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である、
    方法。
  13.  複数の電圧分布レベルがある不揮発メモリと、
     前記不揮発メモリに接続されたコントローラと
    を有し、
     前記コントローラが、
      (A)前記不揮発メモリのうちの読み出し元領域から、設定されている読み出し閾値を用いて、データを読み出し、
      (B)前記読み出されたデータについて誤り訂正を実行し、
      (C)前記誤り訂正に失敗した場合、
        (c11)1以上の読み出し閾値種類の各々についての遷移数のうちの、前記読み出し元領域からデータを読み出すときに使用された読み出し閾値の種類についての遷移数を基に、その使用された読み出し閾値を最適化し、
          前記1以上の読み出し閾値種類の各々は、対応する電圧分布レベル間の閾値であり、
          前記1以上の読み出し閾値種類の各々についての遷移数は、その読み出し閾値種類に対応した電圧分布レベル間で遷移した値の数である、
    不揮発メモリデバイス。
PCT/JP2016/069380 2016-06-30 2016-06-30 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法 WO2018003050A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/069380 WO2018003050A1 (ja) 2016-06-30 2016-06-30 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/069380 WO2018003050A1 (ja) 2016-06-30 2016-06-30 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法

Publications (1)

Publication Number Publication Date
WO2018003050A1 true WO2018003050A1 (ja) 2018-01-04

Family

ID=60786239

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2016/069380 WO2018003050A1 (ja) 2016-06-30 2016-06-30 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法

Country Status (1)

Country Link
WO (1) WO2018003050A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019194841A (ja) * 2018-04-09 2019-11-07 インテル・コーポレーション 片側ソフト読み出し
JP2020047318A (ja) * 2018-09-14 2020-03-26 キオクシア株式会社 メモリシステム
US11817154B2 (en) 2021-03-23 2023-11-14 Western Digital Technologies, Inc. Optimized threshold translation from serialized pipeline

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011203833A (ja) * 2010-03-24 2011-10-13 Toshiba Corp メモリシステム
US8351258B1 (en) * 2010-01-22 2013-01-08 Marvell International Ltd. Adapting read reference voltage in flash memory device
WO2014113402A1 (en) * 2013-01-21 2014-07-24 Sandisk Technologies Inc. Systems and methods of updating read voltages
US20140347923A1 (en) * 2013-05-23 2014-11-27 Seagate Technology Llc Threshold voltage calibration using reference pattern detection

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8351258B1 (en) * 2010-01-22 2013-01-08 Marvell International Ltd. Adapting read reference voltage in flash memory device
JP2011203833A (ja) * 2010-03-24 2011-10-13 Toshiba Corp メモリシステム
WO2014113402A1 (en) * 2013-01-21 2014-07-24 Sandisk Technologies Inc. Systems and methods of updating read voltages
US20140347923A1 (en) * 2013-05-23 2014-11-27 Seagate Technology Llc Threshold voltage calibration using reference pattern detection

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019194841A (ja) * 2018-04-09 2019-11-07 インテル・コーポレーション 片側ソフト読み出し
JP7321717B2 (ja) 2018-04-09 2023-08-07 タホ リサーチ リミテッド 片側ソフト読み出し
JP2020047318A (ja) * 2018-09-14 2020-03-26 キオクシア株式会社 メモリシステム
JP7158965B2 (ja) 2018-09-14 2022-10-24 キオクシア株式会社 メモリシステム
US11817154B2 (en) 2021-03-23 2023-11-14 Western Digital Technologies, Inc. Optimized threshold translation from serialized pipeline

Similar Documents

Publication Publication Date Title
US10896123B2 (en) Enhancing the effectiveness of read scan performance and reliability for non-volatile memory
US9858996B2 (en) Memory access module for performing sensing operations on storage cells of a storage device to obtain soft information and executing a program mode to control access to the storage device
CN112783685B (zh) 快速收敛的低密度奇偶校验码的位翻转解码器
US8332726B2 (en) Non-volatile semiconductor memory device
US10545819B1 (en) Soft-decision input generation for data storage systems
US9092350B1 (en) Detection and handling of unbalanced errors in interleaved codewords
US9502117B2 (en) Cell-level statistics collection for detection and decoding in flash memories
US20100251075A1 (en) Memory controller and semiconductor memory apparatus
US10108490B1 (en) Decoding method, memory storage device and memory control circuit unit
JP7039298B2 (ja) メモリシステム
US10803973B2 (en) Memory management method and storage controller
JP2021111826A (ja) 復号装置及び復号方法
CN112860474B (zh) 快速收敛的低密度奇偶校验码的软位翻转解码器
JP2018163707A (ja) 半導体記憶装置及びそのリード制御方法
WO2018003050A1 (ja) 不揮発メモリデバイスを有する装置、および、誤り訂正制御方法
US11057058B2 (en) Quality of service of an adaptive soft decoder
US9009576B1 (en) Adaptive LLR based on syndrome weight
US20210407598A1 (en) Dual Sense Bin Balancing In NAND Flash
US9959166B2 (en) Error correction for non-volatile memory
TW201435892A (zh) 具有受配置以防止過度校正之錯誤校正的記憶體
US11349495B2 (en) Recovering from hard decoding errors by remapping log likelihood ratio values read from NAND memory cells
US11146295B1 (en) Decoding method, memory storage device, and memory controlling circuit unit
WO2018119900A1 (zh) 数据读取方法及闪存设备
CN107025940B (zh) 非易失性存储器装置及其实时自适应读取电压调整方法
US20240103727A1 (en) Out-of-order bit-flipping decoders for non-volatile memory devices

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

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

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP