WO2016084497A1 - メモリシステム、記憶装置、および、メモリシステムの制御方法 - Google Patents

メモリシステム、記憶装置、および、メモリシステムの制御方法 Download PDF

Info

Publication number
WO2016084497A1
WO2016084497A1 PCT/JP2015/078610 JP2015078610W WO2016084497A1 WO 2016084497 A1 WO2016084497 A1 WO 2016084497A1 JP 2015078610 W JP2015078610 W JP 2015078610W WO 2016084497 A1 WO2016084497 A1 WO 2016084497A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
read
memory
refresh
reread
Prior art date
Application number
PCT/JP2015/078610
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 US15/527,374 priority Critical patent/US10031865B2/en
Priority to JP2016561448A priority patent/JP6497394B2/ja
Publication of WO2016084497A1 publication Critical patent/WO2016084497A1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1441Resetting or repowering
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/56Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
    • G11C11/5685Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using storage elements comprising metal oxide memory material, e.g. perovskites
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • G11C2013/0054Read is performed on a reference element, e.g. cell, and the reference sensed value is used to compare the sensed value of the selected cell

Definitions

  • the present technology relates to a memory system, a storage device, and a memory system control method. Specifically, the present invention relates to a memory system, a storage device, and a memory system control method for detecting an error in read data.
  • a non-volatile memory may be used as an auxiliary storage device or storage.
  • This non-volatile memory is broadly divided into flash memory that supports data access in units of large size and non-volatile random access memory (NVRAM: Non-Volatile RAM) that allows high-speed random access in small units.
  • NVRAM Non-Volatile random access memory
  • examples of the nonvolatile random access memory include ReRAM (Resistive RAM), PCRAM (Phase-Change RAM), MRAM (Magnetoresistive RAM), and the like.
  • the above-mentioned conventional memory controller detects an error, but does not distinguish between error types such as an RTN error and an RD error. Therefore, in the conventional system, the memory cell is refreshed every time an error occurs regardless of the type of error. However, refresh may not be necessary depending on the type of error. For example, an RTN error is a primary change in state and recovers spontaneously, so there is little need to refresh the memory cell in which the error occurred. Even in such a case, if refreshing is performed, there is a possibility that deterioration of the memory cell may proceed due to unnecessary rewriting.
  • This technology has been created in view of such a situation, and aims to suppress deterioration of memory cells in a nonvolatile memory.
  • a first aspect of the present technology is a read process for performing a read process of reading read data from each of a plurality of memory cells with a first threshold as a reference.
  • An error detection unit that detects presence or absence of an error in the read data and identifies the erroneous memory cell among the plurality of memory cells, and a second threshold value different from the first threshold value.
  • a reread processing unit that performs a reread process for reading data from the specified memory cell as reread data, and a memory cell in which the value of the reread data is different from the read data among the specified memory cells.
  • a memory system including a refresh processing unit for performing rewriting of data to reread data as refresh processing, and a control method thereof That. This brings about the effect that the refresh process is performed on the memory cell whose reread data value is different from that of the read data.
  • the first aspect further includes a refresh control unit that causes the reread unit to execute the reread processing on a memory cell in which the error of a predetermined pattern among the specified memory cells occurs. May be. As a result, the reread process is performed in the memory cell in which the error of the predetermined pattern has occurred.
  • the first aspect further includes an address holding unit that holds an address assigned to the erroneous memory cell, and the refresh control unit holds the address when a predetermined condition is satisfied.
  • the read address may be read out, the address specified, and the read processor may execute the read process. As a result, the read processing is executed at the held address.
  • the predetermined condition may be that the number of the held addresses exceeds a predetermined number.
  • the read processing is performed when the number of held addresses exceeds a predetermined number.
  • the predetermined condition may be that the refresh control unit has received a refresh command instructing execution of the refresh process. As a result, when the refresh command is received, the read process is performed.
  • the plurality of memory cells are divided into a plurality of sections each of which is assigned one of the plurality of addresses, and the refresh control unit performs a refresh process for performing the refresh process.
  • each of the plurality of addresses may be specified in order to cause the read processing unit to execute the read processing.
  • each of the plurality of addresses is sequentially specified and the read process is executed.
  • the refresh control unit generates the error of the predetermined pattern among the specified memory cells when the number of errors of the predetermined pattern exceeds an allowable value.
  • the reread processing may be performed on the memory cell by the reread unit. Thereby, when the number of errors of the predetermined pattern exceeds the allowable value, the reread process is performed.
  • each of the plurality of memory cells holds data including a plurality of bits
  • each of the first and second thresholds includes a plurality of thresholds. Good.
  • data including a plurality of bits is held in each memory cell.
  • the characteristic value of the memory cell changes in a specific direction every time data is read, and the second threshold value is changed from the first threshold value to the specific direction. It may be a value. This brings about the effect that the value changed from the first threshold value in the specific direction is set as the second threshold value.
  • a read processing unit that performs a read process of reading read data from each of the plurality of memory cells with a first threshold as a reference, and a second threshold different from the first threshold
  • a reread processing unit for performing reread processing for reading data from each of the memory cells having an error in the read data as reread data, and the reread data of the memory cells having an error in the read data.
  • the memory device includes a refresh processing unit that performs rewriting of data to the reread data as a refresh process for a memory cell having a value different from that of the read data.
  • the present technology it is possible to obtain an excellent effect that the deterioration of the memory cell in the nonvolatile memory can be suppressed.
  • the effects described here are not necessarily limited, and may be any of the effects described in the present disclosure.
  • FIG. 1 is an overall view showing a configuration example of a memory system according to a first embodiment.
  • 3 is a block diagram illustrating a configuration example of a memory controller according to the first embodiment.
  • FIG. 3 is a block diagram illustrating a functional configuration example of a memory controller according to the first embodiment.
  • FIG. It is a block diagram showing an example of 1 composition of nonvolatile memory in a 1st embodiment.
  • FIG. 3 is a block diagram illustrating a configuration example of a memory control unit according to the first embodiment. It is a table
  • FIG. 6 is a diagram illustrating an example of read data and a bit select signal in the first embodiment.
  • FIG. 3 is a flowchart illustrating an example of a storage operation according to the first embodiment.
  • 4 is a flowchart illustrating an example of a controller-side read / refresh process according to the first embodiment.
  • 3 is a flowchart illustrating an example of a memory-side read / refresh process according to the first embodiment.
  • FIG. 6 is a sequence diagram illustrating an example of a storage operation according to the first embodiment.
  • It is a block diagram which shows the function structural example of the memory controller in 2nd Embodiment. 10 is a flowchart illustrating an example of a storage operation according to the second embodiment. It is a flowchart which shows an example of the controller side read process in 2nd Embodiment. It is a flowchart which shows an example of the controller side refresh process in 2nd Embodiment. It is a block diagram which shows the function structural example of the memory controller in 3rd Embodiment. 14 is a flowchart illustrating an example of storage operation according to the third embodiment. It is a flowchart which shows an example of the controller side read process in 3rd Embodiment.
  • First embodiment (example of re-reading and refreshing with different threshold values) 2.
  • Second Embodiment (Example of Rereading by Changing the Threshold from the Stored Address and Refreshing) 3.
  • Third Embodiment (Example in which refresh is performed by changing the threshold value in the refresh mode and refreshing) 4).
  • Fourth Embodiment (Example in which when the number of errors in a certain pattern is large, the threshold is changed and reread is performed and refresh is performed) 5.
  • Fifth Embodiment (Example in which a threshold value is changed and reread is performed in a multilevel memory cell and refreshed)
  • FIG. 1 is a block diagram illustrating a configuration example of the memory system according to the first embodiment.
  • This memory system includes a host computer 100 and a storage 200.
  • the host computer 100 controls the entire memory system. Specifically, the host computer 100 generates commands and data and supplies them to the storage 200 via signal lines 108 and 109. Further, the host computer 100 receives the read data from the storage 200 via the signal line 109.
  • the command is for controlling the storage 200 and includes, for example, a write command for instructing data writing and a read command for instructing data reading.
  • the storage 200 includes a memory controller 300 and a nonvolatile memory 400.
  • the memory controller 300 controls the nonvolatile memory 400.
  • ECC error detection and correction code
  • the memory controller 300 converts (that is, encodes) data into a code word composed of the data and parity.
  • the memory controller 300 writes the encoded data by accessing the nonvolatile memory 400 via the signal lines 308 and 309.
  • the memory controller 300 accesses the nonvolatile memory 400 via the signal line 308 and reads the encoded data via the signal line 309. Then, the memory controller 300 converts (that is, decodes) the encoded data into original data before encoding. The memory controller 300 detects and corrects errors in the data based on the ECC. The memory controller 300 supplies the corrected data to the host computer 100.
  • the non-volatile memory 400 stores data according to the control of the memory controller 300.
  • ReRAM is used as the nonvolatile memory 400.
  • the nonvolatile memory 400 includes a plurality of memory cells, and these memory cells are divided into a plurality of blocks.
  • the block is an access unit of the nonvolatile memory 400 and is also called a word.
  • Each block is assigned a physical address.
  • ReRAM NAND-type or NOR-type flash memory, PCRAM, MRAM, STT-RAM (Spin-Transfer-Torque-RAM), or the like may be used as the nonvolatile memory 400.
  • the nonvolatile memory 400 is an example of a storage device described in the claims.
  • FIG. 2 is a block diagram illustrating a configuration example of the memory controller 300 according to the first embodiment.
  • the memory controller 300 includes a RAM (Random Access Memory) 302, a CPU (Central Processing Unit) 303, an ECC processing unit 304, and a ROM (Read Only Memory) 305.
  • the memory controller 300 includes a host interface 301, a bus 306, and a memory interface 307.
  • the RAM 302 temporarily holds data necessary for processing executed by the CPU 303.
  • the CPU 303 controls the entire memory controller 300.
  • the ROM 305 stores programs executed by the CPU 303.
  • the host interface 301 exchanges data with the host computer 100.
  • a bus 306 is a common path for the RAM 302, the CPU 303, the ECC processing unit 304, the ROM 305, the host interface 301, and the memory interface 307 to exchange data with each other.
  • the memory interface 307 exchanges data with the nonvolatile memory 400.
  • the ECC processing unit 304 encodes data to be encoded, and decodes the encoded data. In data encoding, the ECC processing unit 304 encodes data in a predetermined unit by adding parity to the data to be encoded. Then, the ECC processing unit 304 supplies the encoded data as write data to the nonvolatile memory 400 via the bus 306.
  • the ECC processing unit 304 decodes the encoded read data into the original data. In this decoding, the ECC processing unit 304 uses the parity to detect and correct an error in the read data. The ECC processing unit 304 supplies the decrypted original data to the host computer 100 via the bus 306.
  • FIG. 3 is a block diagram illustrating a functional configuration example of the memory controller 300 according to the first embodiment.
  • the memory controller 300 includes a write control unit 310, a read control unit 320, an ECC processing unit 304, and a refresh control unit 330.
  • the write control unit 310 in FIG. 3 is realized by the RAM 302, the CPU 303, the ROM 305, the host interface 301, the bus 306, the memory interface 307, and the like in FIG. The same applies to the read control unit 320 and the refresh control unit 330.
  • the write control unit 310 causes write data to be written in the nonvolatile memory 400 in accordance with a write command.
  • the write control unit 310 converts a logical address designated by the write command into a physical address.
  • the logical address is an address allocated for each access unit area when the host computer 100 accesses the storage 200 in the address space defined by the host computer 100.
  • the physical address is an address assigned for each access unit in the nonvolatile memory 400 as described above.
  • the write control unit 310 divides the write command when the access units of the host computer 100 and the nonvolatile memory 400 are different.
  • the write control unit 310 logically converts the address, and supplies each of the write commands divided as necessary to the nonvolatile memory as a write request.
  • the read control unit 320 causes the nonvolatile memory 400 to read the read data in accordance with the read command.
  • the read control unit 320 logically converts the address of the read command and supplies each read command divided as necessary to the nonvolatile memory as a read request.
  • the read control unit 320 supplies the converted physical address to the refresh control unit 330.
  • the ECC processing unit 304 When the ECC processing unit 304 receives data as encoding target data from the host computer 100, the ECC processing unit 304 encodes the encoding target data into a code word. In encoding, the data to be encoded is encoded into a binary BCH code, for example. The ECC processing unit 304 supplies the code word to the nonvolatile memory 400 as write data.
  • the ECC processing unit 304 encodes the data to be encoded into a binary BCH code, but it may be encoded into a code other than the BCH code as long as the code has error correction capability.
  • the ECC processing unit 304 may encode, for example, an RS (Reed-Solomon) code or a convolutional code. Further, the ECC processing unit 304 may encode the code into a higher-order code.
  • the ECC processing unit 304 decodes the received word.
  • the ECC processing unit 304 supplies the decoded data to the host computer 100 and the refresh control unit 330 as decoded data.
  • the parity is removed from the decoded data supplied to the host computer 100.
  • the ECC processing unit 304 is an example of an error detection unit described in the claims.
  • the refresh control unit 330 causes the nonvolatile memory 400 to rewrite data for the memory cell in which an error has occurred.
  • the refresh control unit 330 receives read data before decoding from the nonvolatile memory 400 and receives decoded data from the ECC processing unit 304.
  • the refresh control unit 330 compares the read data and the decoded data to obtain a corrected error number (correction number), and issues a refresh request when the error number is equal to or greater than a predetermined allowable value N.
  • This refresh request is a request for requesting data rewriting by specifying a physical address from which read data is read.
  • the refresh control unit 330 specifies a memory cell in which an error of a predetermined pattern has occurred, and generates a bit select signal for selecting the memory cell as a rewrite target. For example, when the fourth and eighth from the top of the eight memory cells corresponding to a word are to be rewritten, a bit select signal having a value of “0x11” (binary number “b00010001”) is generated.
  • the memory cells of the nonvolatile memory 400 are binary memory cells each holding a logical value “0” or a logical value “1”.
  • Examples of patterns of errors that occur in the binary memory cell include a pattern in which “0” is inverted to “1” and a pattern in which “1” is inverted to “0”.
  • the characteristic value for example, resistance value
  • the resistance value changes from the low resistance side to the high resistance side as RD progresses.
  • the refresh control unit 330 identifies the memory cell in which “1” is inverted to “0”, and generates a bit select signal for selecting the memory cell.
  • the refresh control unit 330 supplies the issued refresh request and the generated bit select signal to the nonvolatile memory 400.
  • the refresh control unit 330 issues a refresh request when the number of corrections is N or more, but may issue a refresh request when an error is detected regardless of the number of corrections. However, in the configuration in which a refresh request is issued each time even one error is detected, the access efficiency may be reduced. Therefore, the refresh control unit 330 may issue a refresh request when the number of corrections is N or more. desirable.
  • the refresh control unit 330 rewrites only a memory cell in which an error of a pattern in which an RD error is assumed (such as a pattern in which “1” is inverted to “0”) occurs, but is not limited to this configuration.
  • the refresh control unit 330 may generate a bit select signal for rewriting all memory cells in which an error has occurred. However, if all the memory cells in which an error has occurred are to be rewritten, the data is rewritten in the memory cell corresponding to the error that is not the RD error, and deterioration proceeds. For this reason, it is desirable that only a memory cell in which an error of a pattern in which an RD error is assumed occurs is to be rewritten.
  • FIG. 4 is a block diagram illustrating a configuration example of the nonvolatile memory according to the first embodiment.
  • the nonvolatile memory 400 includes a data buffer 410, a memory cell array 420, a driver 430, an address decoder 440, a bus 450, a control interface 460, and a memory control unit 470.
  • the data buffer 410 holds write data and read data in units of access under the control of the memory control unit 470.
  • the memory cell array 420 includes a plurality of memory cells arranged in a matrix. Nonvolatile memory elements are used as these memory cells. Specifically, NAND-type or NOR-type flash memory, ReRAM, PCRAM, STT-RAM, MRAM, or the like is used as a storage element.
  • the access unit of the nonvolatile memory 400 is, for example, a word consisting of 8 bits. For example, when 8 ⁇ 256 memory cells are provided in the memory cell array 420, data of 256 words is held. Each of these words is assigned a physical address.
  • the driver 430 writes data to or reads data from the memory cell selected by the address decoder 440.
  • the driver 430 writes “1” or “0” by applying one of two voltage pulses having different polarities to the memory cell.
  • the operation of writing “1” is defined as “set”, and the voltage pulse at that time is referred to as “set pulse”.
  • the operation of writing “0” is defined as “reset”, and the voltage pulse at that time is referred to as “reset pulse”.
  • the driver 430 In reading data, the driver 430 applies a current pulse to the memory cell, and compares the voltage generated between the electrodes of the memory cell with a predetermined reference voltage Vref . The driver 430 reads this comparison result as a read data value. This operation is defined as “sense”, and the current pulse at that time is hereinafter referred to as “sense pulse”.
  • the driver 430 can select, reset, or sense only the memory cell by selecting a memory cell in bit units according to the control of the memory control unit 470 in each of set, reset, and sense.
  • the address decoder 440 analyzes the address specified by the request and selects a memory cell corresponding to the address. For example, when an address of “0x0F” (decimal number 15) is analyzed, 8 memory cells corresponding to the 16th address from the head are selected from 256 addresses.
  • the bus 450 is a common path for the data buffer 410, the memory cell array 420, the address decoder 440, the memory control unit 470, and the control interface 460 to exchange data with each other.
  • the control interface 460 is an interface for the memory controller 300 and the nonvolatile memory 400 to exchange data with each other.
  • the memory control unit 470 controls the driver 430 and the address decoder 440 to write or read data.
  • FIG. 5 is a block diagram illustrating a configuration example of the memory control unit 470 according to the first embodiment.
  • the memory control unit 470 includes a request decoder 471, a write processing unit 472, a read processing unit 473, a reread processing unit 474, and a refresh processing unit 475.
  • the request decoder 471 interprets (decodes) a request from the memory controller 300.
  • the request decoder 471 supplies the write request decoding result to the write processing unit 472 and supplies the read request decoding result to the read processing unit 473.
  • the request decoder 471 supplies the refresh request decoding result to the reread processing unit 474.
  • the write processing unit 472 controls the driver 430 and the address decoder 440 to write data.
  • the write processing unit 472 supplies a control signal for instructing address decoding to the address decoder 440.
  • the write processing unit 472 supplies the driver 430 with a bit select signal for selecting all bits and a sense signal for instructing sensing. Note that the control signal to the address decoder 440 and the bit select signal to the driver 430 are omitted in FIG.
  • the driver 430 reads data written at the address specified by the request as pre-read data in accordance with the sense signal and the bit select signal.
  • the write processing unit 472 compares the write data with the pre-read data in bit units, and sets “1” in the write data and “0” in the pre-read data as a set target.
  • the write processing unit 472 supplies the driver 430 with a bit select signal indicating the set target bit and a set signal instructing the set.
  • the write processing unit 472 compares the write data with the pre-read data after the set processing in units of bits, and resets the bit of “0” in the write data and “1” in the pre-read data And
  • the write processing unit 472 supplies the driver 430 with a bit select signal indicating the reset target bit and a reset signal instructing the reset.
  • Driver 430 writes data in accordance with a bit select signal, a set signal, and a reset signal.
  • the read processing unit 473 controls the driver 430 and the address decoder 440 to read data.
  • the read processing unit 473 supplies a control signal instructing address decoding to the address decoder 440. Further, the read processing unit 473 sets the reference voltage V ref to V ref1 and supplies a sense signal and a bit select signal to the driver 430. In this bit select signal, all memory cells are selected, and for example, “1” is set in all bits of the bit select signal.
  • the reread processing unit 474 controls the driver 430 and the address decoder 440 to read data again.
  • the re-read processing unit 474 supplies a control signal for instructing address decoding to the address decoder 440.
  • the reread processing unit 474 sets V ref2 to the reference voltage V ref and supplies a sense signal to the driver 430.
  • a bit select signal from the memory controller 300 is transferred to the driver 430.
  • Driver 430 reads data as reread data in accordance with the sense signal and the bit select signal. No sense pulse is applied to memory cells that are not selected by the bit select signal.
  • the reference resistance value corresponding to the reference voltage V ref1 when reading the read data is R ref1
  • the reference resistance value corresponding to the reference voltage V ref2 when reading the re-read data is R ref 2. If the resistance value of the memory cell increases with the progress of RD is, R ref2 is higher than R ref1, R difference ref1 and R ref2 are one to be greater than the amount of change in the resistance value by the read V ref1 and V ref2 are set.
  • the reference resistance value R ref1 is an example of a first threshold value recited in the claims
  • the reference resistance value R ref2 is an example of a second threshold value recited in the claims.
  • the reread processing unit 474 compares the reread data and the bit select signal in bit units, and corrects the bit select signal based on the comparison result.
  • the bits having the same value as the read data among the bits to be rewritten by the bit select signal are excluded from the objects to be rewritten. For example, if only the memory cell in which “1” is inverted to “0” is the target of rewriting with the bit select signal, the “0” bit in the reread data is the same as the value of the read data. Excluded from the target.
  • the reread processing unit 474 supplies the corrected bit select signal to the driver 430 as a corrected bit select signal, and notifies the refresh processing unit 475 that the reread data has been read. By this modified bit select signal, only memory cells having different values in the read data and reread data are rewritten.
  • the refresh processing unit 475 controls the driver 430 to rewrite data.
  • the refresh processing unit 475 When the reread data is read, the refresh processing unit 475 generates one of a set signal and a reset signal and supplies it to the driver 430. For example, when a memory cell in which “1” is inverted to “0” is to be rewritten with a bit select signal, a set signal is generated.
  • FIG. 6 is a table showing an operation example of the nonvolatile memory 400 for each request in the first embodiment.
  • the non-volatile memory 400 sequentially performs setting and resetting to write the write data to the memory cell.
  • the nonvolatile memory 400 reads the read data based on the reference voltage V ref1 and outputs the read data to the memory controller 300.
  • the nonvolatile memory 400 reads the reread data with reference to the reference voltage Vref2 , and sets only the bit whose read value is “1”.
  • FIG. 7 is a diagram illustrating an example of the resistance distribution of the memory cell before RD occurs, that is, immediately after rewriting, in the first embodiment.
  • the vertical axis in the figure is the number of memory cells, and the horizontal axis is the resistance value.
  • R ref1 resistance threshold value
  • the resistance distribution is divided into two with a resistance threshold value (R ref1 or the like) as a boundary. These distributions are referred to as a low-resistance state (LRS) and a high-resistance state (HRS). For example, a logical value “1” is assigned to the LRS, and “0” is assigned to the HRS.
  • LRS low-resistance state
  • HRS high-resistance state
  • FIG. 8 is a diagram illustrating an example of the resistance distribution of the memory cell after repeating the reading in the first embodiment.
  • the vertical axis in the figure is the number of memory cells, and the horizontal axis is the resistance value.
  • a dotted curve in the figure shows the state of the memory cell immediately after rewriting
  • a solid curve shows the state of the memory cell that has changed due to repeated reading by the sense signal.
  • RD Due to the RD, the right skirt of the solid curve exceeds the threshold (R ref1 ), and as a result, an RD error in which “0” is read from the bit in which “1” is written occurs.
  • the hatched portion in the figure is a portion where an RD error occurs.
  • FIG. 9 is a diagram illustrating an example of a change in resistance value with an increase in the number of readings according to the first embodiment.
  • the vertical axis represents the resistance value
  • the horizontal axis represents the number of readings.
  • a case where “1” corresponding to LRS is written in a certain memory cell is considered.
  • the resistance value is lower than the reference resistance value R ref1 and the value “1” is normally read.
  • the resistance value increases discontinuously due to RTN.
  • an RTN error occurs in which the value “0” corresponding to the HRS is erroneously read.
  • the memory controller 300 detects an error from the m-th read data and issues a refresh request, and the nonvolatile memory 400 changes the reference resistance value to R ref2 and performs m + 1-th re-reading. Since the RTN error is not resolved until a certain amount of time has elapsed, the read value does not change even if the reference resistance value is changed, and the value “0” is read again. In this case, since the values of the read data and the reread data are the same, the memory cell is not refreshed.
  • the memory controller 300 detects an error from the nth read data
  • the memory controller 300 issues a refresh request to eliminate the error
  • the nonvolatile memory 400 changes the reference resistance value to R ref2 to change the n + 1th time. Is read again.
  • the resistance value slightly increases due to RD, but R ref2 is set so that the difference between R ref1 and R ref2 is larger than the amount of increase, and thus does not exceed R ref2 . Therefore, the correct logical value “1” is read at the (n + 1) th time.
  • the nonvolatile memory 400 applies a set pulse to the memory cell because “1” is read at the (n + 1) th time.
  • the resistance value of the memory cell is lower than R ref1, so the correct logic value is read by both of the reference resistance value R ref1 and R ref2.
  • the RD error can be recovered by reapplying the set pulse.
  • the RTN error is a temporary change in state, and is recovered spontaneously, so there is no need to perform refresh by reapplying the set pulse (or reset pulse).
  • the set pulse or reset pulse.
  • refresh is performed by reapplying a set pulse when the m-th RTN error occurs, excessive setting is performed in the high-resistance memory cell even though the effect of RTN disappears when reapplying. A pulse is applied, and the cell characteristics deteriorate. For this reason, in a memory system such as Patent Document 2 in which refreshing is also performed for an RTN error, there is a possibility that the deterioration of the memory cell progresses due to unnecessary refreshing and the life of the nonvolatile memory 400 is shortened.
  • the nonvolatile memory 400 refreshes in the case of an RD error, but does not refresh in the case of an RTN error, so that deterioration of the memory cell can be suppressed.
  • FIG. 10 is a diagram illustrating an example of read data and a bit select signal in the first embodiment.
  • a is an example of read data read by the reference voltage Vref1 .
  • This read data includes a bit string of “b11100000”, for example.
  • b in the figure is an example of decoded data.
  • This decoded data includes a bit string of “b11100011”, for example.
  • C in FIG. 10 is an example of a bit select signal.
  • the bit select signal “0” indicates a bit not to be rewritten, and “1” indicates a bit to be rewritten by setting. From the results of a and b in the figure, a bit select signal including “b0000011” designating the seventh bit and the eighth bit where an RD error or an RTN error is assumed is generated.
  • the nonvolatile memory 400 selects the seventh bit and the eighth bit according to the bit select signal, and reads the reread data on the basis of the reference resistance value R ref2 .
  • D in FIG. 10 is an example of re-read data.
  • “ ⁇ ” indicates a bit to which no sense pulse is applied.
  • the seventh bit of the reread data is “0” and the eighth bit is “1”.
  • the value of the 7th bit cell is the same as that of the read data, but the value of the 8th bit is different.
  • the 7th bit error is an RTN error and the 8th bit error is an RD error. Therefore, the nonvolatile memory 400 corrects the bit select signal so that the seventh bit corresponding to the RTN error is not subject to rewriting.
  • E in the figure is an example of a modified bit select signal. In this modified bit select signal, the seventh bit out of the seventh bit and the eighth bit in which an error is detected is corrected to “0”. As a result, the memory cell of the 8th bit is refreshed by setting.
  • FIG. 11 is a flowchart illustrating an example of the operation of the storage 200 according to the first embodiment. This operation starts, for example, when the storage 200 is turned on or when the host computer 100 instructs the initialization.
  • the memory controller 300 initializes the nonvolatile memory 400 (step S901). Further, the memory controller 300 decodes a command from the host computer 100 (step S902). When the command is a write command (step S903: Yes), the memory controller 300 issues a write request according to the write command (step S904). Further, the nonvolatile memory 400 writes the write data to the memory cell in accordance with the write request (step S905).
  • step S903 when the access command is a read command (step S903: No), the memory controller 300 executes a controller-side read / refresh process (step S910). Further, the nonvolatile memory 400 executes a memory side read / refresh process (step S920). After step S905 or after both steps S910 and S920 are completed, the storage 200 returns to step S902.
  • FIG. 12 is a flowchart illustrating an example of the controller-side read / refresh process according to the first embodiment.
  • the memory controller 300 issues a read request (step S911), and when the read data is read, the data is decoded (step S912). If the number of errors is less than the error correction capability of ECC, decoding is successful.
  • the memory controller 300 determines whether or not the decoding is successful (step S913). If the decoding is successful (step S913: Yes), the memory controller 300 outputs the decoded data to the host computer 100 (step S914), and determines whether or not the number of corrections is N or more (step S915). On the other hand, when the decryption fails (step S913: No), the memory controller 300 outputs a read error to the host computer 100 (step S917).
  • step S915: Yes When the number of corrections is greater than or equal to N (step S915: Yes), the memory controller 300 generates a bit select signal for rewriting a memory cell in which a predetermined pattern error has occurred, and issues a refresh request ( Step S916).
  • step S915: No When the number of corrections is less than N (step S915: No), or after step S916 or after step S917, the memory controller ends the controller-side read / refresh process.
  • FIG. 13 is a flowchart illustrating an example of the memory-side read / refresh process in the first embodiment.
  • the nonvolatile memory 400 reads the read data based on the reference voltage V ref1 according to the read request (step S921).
  • the nonvolatile memory 400 determines whether or not a refresh request has been received from the memory controller 300 within a certain period (step S922).
  • the refresh request is received (step S922: Yes)
  • the nonvolatile memory 400 reads the reread data based on the reference voltage Vref2 according to the request (step S923).
  • the nonvolatile memory 400 corrects the bit select signal so that only memory cells having different values of reread data and read data are to be rewritten (step S924).
  • the nonvolatile memory 400 performs a set operation for the memory cell indicated by the modified bit select signal (step S925).
  • step S922 when the refresh request is not received (step S922: No), or after step S925, the nonvolatile memory 400 ends the memory-side read / refresh process.
  • FIG. 14 is a sequence diagram illustrating an example of the operation of the storage 200 according to the first embodiment.
  • the nonvolatile memory 400 reads the read data based on the reference voltage V ref1 in accordance with the request (step S921).
  • the memory controller 300 decodes the read data (step S912), and if the number of errors is N or more, transmits a refresh request and a bit select signal to the nonvolatile memory 400.
  • the nonvolatile memory 400 reads the reread data based on the reference voltage Vref2 according to the refresh request and the bit select signal (step S923). Then, the non-volatile memory 400 modifies the bit select signal so that only the bits having different reread data and read data values are to be rewritten (step S924), and the rewrite target is refreshed by setting (step S925). .
  • the memory cells having different values of the read data based on the first threshold and the reread data based on the second threshold are refreshed.
  • the memory cells having the same value can be refreshed except for them. This eliminates unnecessary refresh for memory cells that are likely to have an RTN error, so that the progress of deterioration of the memory cells can be suppressed.
  • the memory controller 300 performs refreshing at the address every time the number of errors exceeds a predetermined allowable value in the read process.
  • the non-volatile memory 400 cannot execute another request. Therefore, if the refresh process is performed each time an error is detected, the access speed may decrease. For this reason, it is desirable that the memory controller 300 suppresses the issue of refresh requests until a certain condition is satisfied, and issues a write request or a read request with priority. Examples of the fixed condition include that the host computer 100 has instructed refreshing and that the number of addresses to be refreshed exceeds a predetermined number.
  • the memory controller 300 of the second embodiment is different from the first embodiment in that a refresh request is issued when a certain condition is satisfied.
  • FIG. 15 is a block diagram illustrating a functional configuration example of the memory controller 300 according to the second embodiment.
  • the memory controller 300 according to the second embodiment includes a read control unit 321 and a refresh control unit 331 instead of the read control unit 320 and the refresh control unit 330, and further includes an address register 340. And different.
  • the read control unit 321 receives the read data and the decoded data from the ECC processing unit 304 and causes the address register 340 to hold the address each time an error equal to or greater than the allowable value N is detected.
  • the address register 340 holds a plurality of addresses.
  • the address register 340 is an example of an address holding unit described in the claims.
  • the refresh control unit 331 when the refresh control unit 331 receives a refresh command from the host computer 100, the refresh control unit 331 issues a read request by sequentially specifying the addresses held in the address register 340. Alternatively, when the number of addresses held in the address register 340 becomes M (M is an integer) or more, the refresh control unit 331 issues a read request by designating those addresses in order. If the number of corrections is N or more, the refresh control unit 332 supplies a refresh request and a bit select signal to the nonvolatile memory 400.
  • the host computer 100 issues a refresh command when the access frequency drops below a certain level, for example.
  • FIG. 16 is a flowchart illustrating an example of the operation of the storage 200 according to the second embodiment.
  • the memory controller 300 decodes the command after initialization of the nonvolatile memory 400 (step S901) (step S902).
  • the memory controller 300 determines whether or not the command is a write command (step S903), and if it is a write command (step S903: Yes), executes steps S904 and S905.
  • step S903 when the command is not a write command (step S903: No), the memory controller 300 determines whether the command is a read command (step S906). If it is a read command (step S906: Yes), the memory controller 300 executes a controller-side read process (step S930). The nonvolatile memory 400 reads the read data based on V ref1 according to the write request (step S921).
  • the nonvolatile memory 400 determines whether or not the number of addresses held in the address register is M or more (step S907).
  • step S906 If the command is a refresh command (step S906: No), or if the number of addresses is M or more (step S907: Yes), the memory controller 300 executes a controller-side refresh process (step S940). Further, the nonvolatile memory 400 executes a memory side read / refresh process (step S920). When the number of addresses is less than M (step S907: No), or after both steps S940 and S920 are completed, the storage 200 returns to step S902.
  • FIG. 17 is a flowchart illustrating an example of the controller-side read process according to the second embodiment.
  • the controller-side read process is the same as the controller-side read / refresh process illustrated in FIG. 12 except that step S931 is executed instead of step S916.
  • step S915: Yes the memory controller 300 holds the address specified by the read request in the address register 340 (step S931).
  • FIG. 18 is a flowchart illustrating an example of the controller-side refresh process according to the second embodiment.
  • the memory controller 300 extracts one of the addresses from the address register 340 and deletes the address from the address register 340 (step S941).
  • the memory controller 300 issues a read request designating the extracted address (step S942).
  • the memory controller 300 decodes the read data that has been read (step S943).
  • the memory controller 300 determines whether or not the decoding is successful (step S944). If the decoding is successful (step S944: Yes), the memory controller 300 outputs the decoded data to the host computer 100 (step S945), and determines whether or not the number of corrections is N or more (step S946).
  • step S946 When the number of corrections is N or more (step S946: Yes), the memory controller 300 generates a bit select signal, issues a refresh request, and supplies it to the nonvolatile memory 400 (step S947).
  • step S944 When decryption fails (step S944: No), the memory controller 300 outputs a read error to the host computer 100 (step S948). When the number of corrections is less than N (step S946: No), or after step S947 or after step S948, the memory controller 300 determines whether there is an address in the register (step S949). . If there is an address (step S949: Yes), the memory controller 300 returns to step S941, and if there is no address (step S949: No), the memory controller 300 ends the controller-side refresh process.
  • the memory controller 300 decodes the read data in both the controller-side read process and the controller-side refresh process. However, the memory controller 300 may be configured not to perform the decoding in the controller-side refresh process. However, since the held address may be accessed and the RD may proceed between the end of the controller-side read process and the start of the controller-side refresh process, it is desirable to perform decoding also in the controller-side refresh process. .
  • the memory controller 300 holds an address where an error has occurred, and performs refreshing at the address when a certain condition is satisfied later. Access efficiency can be improved.
  • the memory controller 300 performs refresh at the address when the number of errors in the read data is equal to or greater than a predetermined allowable value at each read.
  • the host computer 100 may set the refresh mode when the access frequency decreases, and the memory controller 300 may perform the refresh in the refresh mode.
  • the memory system according to the third embodiment is different from the first embodiment in that the memory controller 300 performs refresh when the access frequency decreases and the refresh mode is set.
  • FIG. 19 is a block diagram illustrating a functional configuration example of the memory controller 300 according to the third embodiment.
  • the memory controller 300 according to the third embodiment is different from the first embodiment in that a refresh controller 332 is provided instead of the refresh controller 330.
  • the refresh control unit 332 receives a mode switching signal from the host computer 100.
  • This mode switching signal is a signal for instructing switching to either the normal mode or the refresh mode.
  • the normal mode is a mode for performing reading and writing.
  • the refresh control unit 332 issues a read request by designating all the addresses of the nonvolatile memory 400 in order. If the number of corrections is N or more, the refresh control unit 332 supplies a refresh request and a bit select signal to the nonvolatile memory 400.
  • the host computer 100 switches to the refresh mode when the access frequency drops below a certain level, for example, and switches to the normal mode otherwise.
  • FIG. 20 is a flowchart illustrating an example of the operation of the storage 200 according to the third embodiment.
  • the operation of the storage 200 in the third embodiment is the same as that in the second embodiment, except that step S908 is executed instead of step S907.
  • step S906 determines whether or not the mode has been switched to the refresh mode (step S908).
  • step S908: Yes the memory controller 300 executes steps S940 and S920.
  • step S908 No
  • step S940 the memory controller 300 returns to step S902.
  • FIG. 21 is a flowchart illustrating an example of a controller-side read process according to the third embodiment.
  • the controller-side read process in the third embodiment is the same as the controller-side read / refresh process in the first embodiment, except that steps S915 and S916 are not executed.
  • FIG. 22 is a flowchart illustrating an example of the controller-side refresh process according to the third embodiment.
  • the controller-side refresh process of the third embodiment is the same as that of the second embodiment except that steps S950, S951, and S952 are executed instead of steps S941 and S949.
  • the memory controller 300 sets the top address of the nonvolatile memory 400 as a read address (step S950), and executes steps S942 to S948. If the number of corrections is less than N (step S946: No), or after step S947 or step S948, the memory controller 300 determines whether the read address is the last address of the nonvolatile memory 400. (Step S951). If it is not the last address (step S951: No), the memory controller 300 sets the next address as the read address (step S952) and returns to step S942. On the other hand, if it is the last address (step S951: Yes), the memory controller 300 ends the controller-side refresh process.
  • the memory controller 300 performs refresh when set to the refresh mode, so that the access efficiency can be improved.
  • the memory controller 300 issues a refresh request when the number of errors exceeds a predetermined allowable value.
  • the error includes RD error and RTN error types.
  • the RD error only a certain pattern such as “1” is inverted to “0” can be seen. For this reason, if refresh is performed when the number of errors becomes N or more regardless of the error pattern, a refresh request may be issued even if only an error that is not an RD error occurs, resulting in a decrease in access efficiency. is there. For this reason, it is desirable that the memory controller 300 issue a refresh request when the number of errors in a certain pattern in which an RD error is assumed is equal to or greater than a predetermined allowable value.
  • the memory controller 300 according to the fourth embodiment is different from the first embodiment in that the memory controller 300 issues a refresh request when the number of errors in a certain pattern becomes N ′ or more.
  • FIG. 23 is a flowchart illustrating an example of a controller-side read / refresh process according to the fourth embodiment.
  • the controller-side read / refresh process of the fourth embodiment differs from that of the first embodiment in that step S918 is executed instead of step S915.
  • the memory controller 300 determines whether or not the number of errors corrected from “0” to “1” is greater than or equal to the allowable value N ′ (N ′ is an integer) (Ste S918). If the number of corrections is greater than or equal to N ′ (step S918: Yes), the memory controller 300 executes step S916. On the other hand, if the number of corrections is less than N ′ (step S918: No), or after step S917, the memory controller 300 ends the controller-side read / refresh process.
  • the memory controller 300 performs refresh when the number of errors in a certain pattern is equal to or greater than an allowable value. Can be refreshed except. Thereby, unnecessary refresh can be suppressed and deterioration of the memory cell can be prevented.
  • a binary memory cell is assumed as the nonvolatile memory 400, but a multilevel memory cell may be provided.
  • the memory system according to the fifth embodiment is different from the first embodiment in that the nonvolatile memory 400 includes multilevel memory cells.
  • FIG. 24 is a block diagram illustrating a configuration example of the nonvolatile memory 400 according to the fifth embodiment.
  • the nonvolatile memory 400 according to the fifth embodiment is different from the first embodiment in that a memory cell array 421 is provided instead of the memory cell array 420.
  • the memory cell array 421 is different from the first embodiment in that a plurality of multi-value memories are provided in a two-dimensional lattice shape. Each multi-level memory cell holds a plurality of bits.
  • FIG. 25 is a diagram illustrating an example of the resistance distribution of the memory cell after the reading in the fifth embodiment is repeated.
  • the vertical axis in the figure is the number of memory cells, and the horizontal axis is the resistance value.
  • the resistance distribution is divided into three distributions with two threshold values (R ref1 _H and R ref1 _L, etc.) as a boundary. These are called, for example, a low resistance state (LRS), a middle resistance state (MRS), and a high resistance state (HRS).
  • LRS low resistance state
  • MRS middle resistance state
  • HRS high resistance state
  • the dotted curve in FIG. 25 shows the state of the memory cell immediately after rewriting
  • the solid line curve shows the state of the memory cell that has changed due to repeated reading by the sense signal.
  • the resistance value shifts to the high resistance side.
  • This RD generates an RD error in which “2” corresponding to MRS is read from the bit in which “1” is written.
  • an RD error occurs in which “0” corresponding to HRS is read from the bit in which “2” is written.
  • the hatched portion in the figure indicates a portion where an RD error has occurred.
  • FIG. 26 is a diagram illustrating an example of a change in resistance value with an increase in the number of readings according to the fifth embodiment.
  • the vertical axis represents the resistance value
  • the horizontal axis represents the number of readings.
  • a in the figure is a figure which shows the change of the resistance value of the memory cell in which "1" corresponding to LRS was written.
  • the resistance value is lower than the reference resistance value R ref1 _L, and the value “1” is normally read.
  • R ref1 _L the resistance value “1” is normally read.
  • an RD error in which the value “2” corresponding to MRS is erroneously read occurs.
  • the memory controller 300 When the memory controller 300 detects an error from the m′-th read data, it issues a refresh request, and the non-volatile memory 400 changes the reference resistance value to R ref2 _L and R ref2 _H, and performs the m ′ + 1-th re-read. Read. If it is an RD error, the correct logical value “1” is read at m ′ + 1 time. In this case, the nonvolatile memory 400 rewrites the memory cell to “1”.
  • b in FIG. 26 is a diagram showing a change in the resistance value of the memory cell in which “2” corresponding to MRS is written.
  • the resistance value is between the reference resistance values R ref1 _H and R ref1 _L, and the value “2” is normally read out.
  • the resistance value increases due to RD as the reading is repeated, and exceeds the reference resistance value R ref1 —H at the n′th time.
  • an RD error occurs in which the value “0” corresponding to the HRS is erroneously read.
  • the memory controller 300 When the memory controller 300 detects an error from the n′-th read data, the memory controller 300 issues a refresh request.
  • the nonvolatile memory 400 changes the reference resistance value to R ref2 _L and R ref2 _H, and performs the n ′ + 1-th re-read. Read. If it is an RD error, the correct logical value “2” is read out n ′ + 1 times. In this case, the nonvolatile memory 400 rewrites the memory cell to “2”.
  • the nonvolatile memory 400 reads the read data for each memory cell with reference to a plurality of threshold values, and reads the reread data by changing the threshold values.
  • a multi-value memory cell can be used as a memory cell.
  • the processing procedure described in the above embodiment may be regarded as a method having a series of these procedures, and a program for causing a computer to execute these series of procedures or a recording medium storing the program. You may catch it.
  • a recording medium for example, a CD (Compact Disc), an MD (MiniDisc), a DVD (Digital Versatile Disc), a memory card, a Blu-ray disc (Blu-ray (registered trademark) Disc), or the like can be used.
  • this technique can also take the following structures.
  • a read processing unit that performs a read process of reading read data from each of a plurality of memory cells with a first threshold as a reference;
  • An error detection unit that detects presence or absence of an error in the read data and identifies the erroneous memory cell among the plurality of memory cells;
  • a reread processing unit that performs a reread process of reading data from the specified memory cell as reread data with reference to a second threshold different from the first threshold;
  • a memory system comprising: a refresh processing unit for performing rewriting of data to the reread data as a refresh process for a memory cell having a value of the reread data different from the read data among the specified memory cells.
  • the refresh control unit according to (1) further including a refresh control unit that causes the reread unit to execute the reread processing on a memory cell in which the error of a predetermined pattern occurs among the specified memory cells.
  • Memory system. (3) further comprising an address holding unit for holding an address assigned to the erroneous memory cell; The memory system according to (2), wherein when the predetermined condition is satisfied, the refresh control unit reads the held address, designates the address, and causes the read processing unit to execute the read processing.
  • the predetermined condition is that the number of held addresses exceeds a predetermined number.
  • the memory system according to (2) or (3), wherein the predetermined condition is that the refresh control unit has received a refresh command instructing execution of the refresh process.
  • the plurality of memory cells are divided into a plurality of sections to which any of the plurality of addresses is assigned,
  • the refresh control unit according to (2) wherein when a refresh mode for performing the refresh processing is set, the refresh processing unit sequentially designates each of the plurality of addresses and causes the read processing unit to execute the read processing.
  • Memory system When the number of the errors of the predetermined pattern exceeds an allowable value, the refresh control unit applies the memory to the memory cell in which the error of the predetermined pattern has occurred among the specified memory cells.
  • the memory system according to any one of (2) to (5), wherein the reread unit executes the reread processing.
  • Each of the plurality of memory cells holds data including a plurality of bits, The memory system according to any one of (1) to (7), wherein each of the first and second threshold values includes a plurality of threshold values. (9) The characteristic value of the memory cell changes in a specific direction every time data is read, The memory system according to any one of (1) to (8), wherein the second threshold value is a value that is changed from the first threshold value in the specific direction.
  • (10) a plurality of memory cells;
  • a read processing unit that performs a read process of reading read data from each of the plurality of memory cells based on a first threshold;
  • a reread processing unit that performs a reread process of reading data from each of the memory cells having an error in the read data as reread data with reference to a second threshold different from the first threshold;
  • a refresh processing unit for performing rewriting of data to the reread data as a refresh process for a memory cell having a value of the reread data different from the read data among the memory cells having an error in the read data;
  • (11) a read processing procedure in which the read processing unit performs a read process of reading read data from each of the plurality of memory cells based on the first threshold;
  • An error detection procedure wherein an error detection procedure is performed to detect the presence or absence of an error in the read data and identify the erroneous memory cell among the identified memory cells;
  • a reread processing procedure in which a reread processing unit performs a reread process of reading data from the specified memory cell as reread data on the basis of a second threshold different from the first threshold;
  • a refresh processing section wherein a refresh processing procedure is performed in which rewriting of data to the reread data is performed as a refresh processing for a memory cell having a value of the reread data different from the read data among the specified memory cells.
  • Host computer 100 Host computer 200 Storage 300 Memory controller 301 Host interface 302 RAM 303 CPU 304 ECC processing unit 305 ROM 306, 450 Bus 307 Memory interface 310 Write controller 320, 321 Read controller 330, 331, 332 Refresh controller 340 Address register 400 Non-volatile memory 410 Data buffer 420, 421 Memory cell array 430 Driver 440 Address decoder 460 Control interface 470 Memory Control unit 471 Request decoder 472 Write processing unit 473 Read processing unit 474 Reread processing unit 475 Refresh processing unit

Abstract

 不揮発性メモリにおけるメモリセルの劣化を抑制する。 リード処理部は、第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行う。誤り検出部は、リードデータの誤りの有無を検出して複数のメモリセルのうち誤りのあるメモリセルを特定する。再リード処理部は、第1の閾値と異なる第2の閾値を基準として特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う。リフレッシュ処理部が、特定されたメモリセルのうち再リードデータの値がリードデータと異なるメモリセルに対して再リードデータへのデータの書き換えをリフレッシュ処理として行う。

Description

メモリシステム、記憶装置、および、メモリシステムの制御方法
 本技術は、メモリシステム、記憶装置、および、メモリシステムの制御方法に関する。詳しくは、リードデータの誤りを検出するメモリシステム、記憶装置、および、メモリシステムの制御方法に関する。
 近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
 これらの不揮発性メモリにおいては、メモリセル内の電流の揺らぎや、アクセスの繰り返しによるメモリセルの特性の変化などの各種の原因により、書き込んだデータにエラーが発生することが知られている。前者の現象はランダムテレグラフノイズ(RTN:Random Telegraph Noise)と呼ばれ、後者はリードディスターブ(RD:Read Disturb)と呼ばれている。また、RTNによるエラーは「RTNエラー」と呼ばれ、RDによるエラーは「RDエラー」と呼ばれる。これらのエラーの有無をECC(Error detection and Correction Code)を用いて検出および訂正するメモリコントローラが提案されている(例えば、特許文献1参照。)。また、エラーが生じたメモリセルにおいてデータを書き換える処理をリフレッシュ処理として行うメモリシステムが提案されている(例えば、特許文献2参照。)。このリフレッシュ処理により、メモリセルのエラーを回復することができる。
特開2013-125527号公報 特開平6-110793号公報
 上述の従来のメモリコントローラはエラーを検出してはいるが、RTNエラーやRDエラーなどのエラーの種類を区別していない。このため、従来のシステムでは、エラーの種類に関わらず、エラーが生じるたびにメモリセルがリフレッシュされる。しかしながら、エラーの種類によっては、リフレッシュが必要でない場合がある。例えば、RTNエラーは、一次的な状態の変化であり、自然に回復するものであるため、そのエラーの生じたメモリセルをリフレッシュする必要性に乏しい。このような場合にもリフレッシュを行うと、不要な書き換えによってメモリセルの劣化が進行するおそれがある。
 本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリにおけるメモリセルの劣化を抑制することを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、上記リードデータの誤りの有無を検出して上記複数のメモリセルのうち上記誤りのあるメモリセルを特定する誤り検出部と、上記第1の閾値と異なる第2の閾値を基準として上記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、上記特定されたメモリセルのうち上記再リードデータの値が上記リードデータと異なるメモリセルに対して上記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部とを具備するメモリシステム、および、その制御方法である。これにより、再リードデータの値がリードデータと異なるメモリセルに対してリフレッシュ処理が行われるという作用をもたらす。
 また、この第1の側面において、前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備してもよい。これにより、所定のパターンの誤りが生じたメモリセルにおいて前記再リード処理が実行されるという作用をもたらす。
 また、この第1の側面において、前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させてもよい。これにより、保持されたアドレスにおいてリード処理が実行されるという作用をもたらす。
 また、この第1の側面において、前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることであってもよい。これにより、保持されたアドレスの個数が所定個数を超えるとリード処理が実行されるという作用をもたらす。
 また、この第1の側面において、上記所定の条件は、上記リフレッシュ処理の実行を指示するリフレッシュコマンドを上記リフレッシュ制御部が受信したことであってもよい。これにより、リフレッシュコマンドが受信されるとリード処理が行われるという作用をもたらす。
 また、この第1の側面において、前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させてもよい。これにより、リフレッシュモードが設定された場合には複数のアドレスのそれぞれが順に指定されてリード処理が実行されるという作用をもたらす。
 また、この第1の側面において、前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させてもよい。これにより、所定のパターンの誤りの個数が許容値を超える場合には再リード処理が実行されるという作用をもたらす。
 また、この第1の側面において、上記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、上記第1および第2の閾値のそれぞれは、複数の閾値を含むものであってもよい。これにより、メモリセルのそれぞれに複数のビットを含むデータが保持されるという作用をもたらす。
 また、この第1の側面において、上記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、上記第2の閾値は、上記第1の閾値から上記特定の方向へ変化させた値であってもよい。これにより、第1の閾値から上記特定の方向へ変化させた値が第2の閾値に設定されるという作用をもたらす。
 また、本技術の第2の側面は、第1の閾値を基準として上記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、上記第1の閾値と異なる第2の閾値を基準として上記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、上記リードデータに誤りのある上記メモリセルのうち上記再リードデータの値が上記リードデータと異なるメモリセルに対して上記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部とを具備する記憶装置である。これにより、所定の条件が満たされた場合には保持されたアドレスに対応するメモリセルについてリード処理が行われるという作用をもたらす。
 本技術によれば、不揮発性メモリにおけるメモリセルの劣化を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
第1の実施の形態におけるメモリシステムの一構成例を示す全体図である。 第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第1の実施の形態における不揮発性メモリの一構成例を示すブロック図である。 第1の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。 第1の実施の形態におけるリクエストごとの不揮発性メモリの動作例を示す表である。 第1の実施の形態におけるRDが生じる前のメモリセルの抵抗分布の一例を示す図である。 第1の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。 第1の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。 第1の実施の形態におけるリードデータおよびビットセレクト信号の一例を示す図である。 第1の実施の形態におけるストレージの動作の一例を示すフローチャートである。 第1の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。 第1の実施の形態におけるメモリ側リード・リフレッシュ処理の一例を示すフローチャートである。 第1の実施の形態におけるストレージの動作の一例を示すシーケンス図である。 第2の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第2の実施の形態におけるストレージの動作の一例を示すフローチャートである。 第2の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。 第2の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。 第3の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第3の実施の形態におけるストレージの動作の一例を示すフローチャートである。 第3の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。 第3の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。 第4の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。 第5の実施の形態における不揮発性メモリの一構成例を示すブロック図である。 第5の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。 第5の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(閾値を変えて再リードし、リフレッシュする例)
 2.第2の実施の形態(保持したアドレスから閾値を変えて再リードし、リフレッシュする例)
 3.第3の実施の形態(リフレッシュモードにおいて閾値を変えて再リードし、リフレッシュする例)
 4.第4の実施の形態(一定パターンのエラー数が多いと閾値を変えて再リードし、リフレッシュする例)
 5.第5の実施の形態(多値メモリセルにおいて閾値を変えて再リードし、リフレッシュする例)
 <1.第1の実施の形態>
 [メモリシステムの構成例]
 図1は、第1の実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ100およびストレージ200を備える。
 ホストコンピュータ100は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ100は、コマンドおよびデータを生成してストレージ200に信号線108および109を介して供給する。また、ホストコンピュータ100は、信号線109を介してストレージ200から、読み出されたデータを受け取る。ここで、コマンドは、ストレージ200を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読み出しを指示するリードコマンドを含む。
 ストレージ200は、メモリコントローラ300および不揮発性メモリ400を備える。このメモリコントローラ300は、不揮発性メモリ400を制御するものである。メモリコントローラ300は、ホストコンピュータ100からライトコマンドおよびデータを受け取った場合には、そのデータから誤り検出訂正符号(ECC:Error detection and Correction Code)を生成する。具体的には、メモリコントローラ300は、データを、そのデータおよびパリティからなる符号語に変換(すなわち、符号化)する。メモリコントローラ300は、不揮発性メモリ400に信号線308および309を介してアクセスして符号化したデータを書き込む。
 また、ホストコンピュータ100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線308を介してアクセスして符号化されたデータを信号線309を介して読み出す。そして、メモリコントローラ300は、符号化されたデータを、符号化前の元のデータに変換(すなわち、復号)する。また、メモリコントローラ300は、ECCに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正したデータをホストコンピュータ100に供給する。
 不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。この不揮発性メモリ400は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ400のアクセス単位であり、ワードとも呼ばれる。ブロックのそれぞれには物理アドレスが割り当てられている。なお、ReRAMの代わりに、NAND型やNOR型のフラッシュメモリ、PCRAM、および、MRAM、STT-RAM(Spin Transfer Torque RAM)などを不揮発性メモリ400として用いてもよい。なお、不揮発性メモリ400は、特許請求の範囲に記載の記憶装置の一例である。
 [メモリコントローラの構成例]
 図2は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、RAM(Random Access Memory)302、CPU(Central Processing Unit)303、ECC処理部304およびROM(Read Only Memory)305を備える。また、メモリコントローラ300は、ホストインターフェース301、バス306およびメモリインターフェース307を備える。
 RAM302は、CPU303が実行する処理において必要となるデータを一時的に保持するものである。CPU303は、メモリコントローラ300全体を制御するものである。ROM305は、CPU303が実行するプログラム等を記憶するものである。ホストインターフェース301は、ホストコンピュータ100との間でデータを相互に交換するものである。バス306は、RAM302、CPU303、ECC処理部304、ROM305、ホストインターフェース301およびメモリインターフェース307が相互にデータを交換するための共通の経路である。メモリインターフェース307は、不揮発性メモリ400との間でデータを相互に交換するものである。
 ECC処理部304は、符号化対象のデータを符号化し、また、符号化されたデータを復号するものである。データの符号化においてECC処理部304は、符号化対象データにパリティを付加することにより所定の単位で符号化する。そして、ECC処理部304は、符号化したデータをライトデータとして不揮発性メモリ400にバス306を介して供給する。
 また、ECC処理部304は、符号化されたリードデータを元のデータに復号する。この復号において、ECC処理部304は、パリティを使用して、リードデータのエラーを検出および訂正する。ECC処理部304は、復号した元のデータをホストコンピュータ100にバス306を介して供給する。
 図3は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、ライト制御部310、リード制御部320、ECC処理部304およびリフレッシュ制御部330を備える。図3におけるライト制御部310は、図2におけるRAM302、CPU303、ROM305、ホストインターフェース301、バス306およびメモリインターフェース307などにより実現される。リード制御部320およびリフレッシュ制御部330についても同様である。
 ライト制御部310は、ライトコマンドに従って、不揮発性メモリ400にライトデータを書き込ませるものである。このライト制御部310は、ライトコマンドの指定する論理アドレスを物理アドレスに変換する。
 ここで、論理アドレスは、ホストコンピュータ100が定義するアドレス空間において、ホストコンピュータ100がストレージ200にアクセスする際のアクセス単位の領域ごとに割り振られたアドレスである。また、物理アドレスは、前述したように不揮発性メモリ400においてアクセス単位ごとに割り当てられたアドレスである。
 また、ライト制御部310は、ホストコンピュータ100と不揮発性メモリ400とのアクセス単位が異なる場合に、ライトコマンドを分割する。ライト制御部310は、アドレスを論物変換し、必要に応じて分割したライトコマンドのそれぞれをライトリクエストとして不揮発性メモリに供給する。
 リード制御部320は、リードコマンドに従って、不揮発性メモリ400にリードデータの読み出しを行わせるものである。このリード制御部320は、リードコマンドのアドレスを論物変換し、必要に応じて分割したリードコマンドのそれぞれをリードリクエストとして不揮発性メモリに供給する。また、リード制御部320は、変換した物理アドレスをリフレッシュ制御部330に供給する。
 ECC処理部304は、ホストコンピュータ100からデータを符号化対象データとして受け取った場合に、その符号化対象データを符号語に符号化する。符号化において符号化対象データは、例えば、2元のBCH符号に符号化される。ECC処理部304は、その符号語をライトデータとして不揮発性メモリ400に供給する。
 なお、ECC処理部304は、符号化対象データを2元のBCH符号に符号化しているが、誤り訂正能力を持つ符号であれば、BCH符号以外の符号に符号化してもよい。ECC処理部304は、例えば、RS(Reed-Solomon)符号や畳込み符号に符号化してもよい。また、ECC処理部304は、2元より高い次元の符号に符号化してもよい。
 また、ECC処理部304は、符号語に対応する受信語をリードデータとして不揮発性メモリ400から受け取った場合に、その受信語を復号する。ECC処理部304は、復号したデータを復号データとしてホストコンピュータ100およびリフレッシュ制御部330に供給する。ただし、ホストコンピュータ100へ供給される復号データからは、パリティが除かれる。なお、ECC処理部304は、特許請求の範囲に記載の誤り検出部の一例である。
 リフレッシュ制御部330は、エラーの生じたメモリセルについて、不揮発性メモリ400にデータを書き換えさせるものである。このリフレッシュ制御部330は、復号前のリードデータを不揮発性メモリ400から受信し、また、ECC処理部304から復号データを受け取る。リフレッシュ制御部330は、それらのリードデータおよび復号データを比較して訂正されたエラー数(訂正数)を求め、そのエラー数が所定の許容値N以上である場合にリフレッシュリクエストを発行する。このリフレッシュリクエストは、リードデータが読み出された物理アドレスを指定して、データの書き換えを要求するリクエストである。
 また、リフレッシュ制御部330は、所定のパターンのエラーが生じたメモリセルを特定して、そのメモリセルを書き換え対象として選択するビットセレクト信号を生成する。例えば、ワードに対応する8個のメモリセルのうち先頭から4番目および8番目を書き換え対象とする場合、「0x11」(2進数で「b00010001」)の値のビットセレクト信号が生成される。
 ここで、不揮発性メモリ400のメモリセルは、それぞれ、論理値「0」または論理値「1」を保持する2値メモリセルであるものとする。この2値メモリセルに生じるエラーのパターンとしては、「0」が「1」に反転するパターンと「1」が「0」に反転するパターンとが挙げられる。RDが進行すると、一般に、そのメモリセルの特性値(例えば、抵抗値)がRDの進行に伴って一定の方向に変化する。例えば、ReRAMをメモリセルとして用いる場合、その抵抗値はRDが進行するほど、低抵抗側から高抵抗側の方へ変化する。このため、低抵抗状態に「1」を、高抵抗状態に「0」を割り当てていた場合には、メモリセルのRDにより「1」が「0」に反転するパターンのRDエラーが生じうる。リフレッシュ制御部330は、その「1」が「0」に反転したメモリセルを特定し、そのメモリセルを選択するビットセレクト信号を生成する。リフレッシュ制御部330は、発行したリフレッシュリクエストと、生成したビットセレクト信号とを不揮発性メモリ400に供給する。
 なお、リフレッシュ制御部330は、訂正数がN以上の場合にリフレッシュリクエストを発行しているが、訂正数に関わらず、エラーが検出された場合にリフレッシュリクエストを発行してもよい。ただし、エラーが1つでも検出されるたびにリフレッシュリクエストを発行する構成ではアクセス効率が低下するおそれがあるため、リフレッシュ制御部330は、訂正数がN以上の際にリフレッシュリクエストを発行することが望ましい。
 また、リフレッシュ制御部330は、RDエラーが想定されるパターン(「1」が「0」に反転したパターンなど)のエラーが生じたメモリセルのみを書き換え対象としているが、この構成に限定されない。リフレッシュ制御部330は、エラーが生じたメモリセルの全てを書き換え対象とするビットセレクト信号を生成してもよい。ただし、エラーが生じたメモリセル全てを書き換え対象とすると、RDエラーでないエラーに対応するメモリセルにおいてもデータが書き換えられて劣化が進行してしまう。このため、RDエラーが想定されるパターンのエラーが生じたメモリセルのみを書き換え対象とすることが望ましい。
 [不揮発性メモリの構成例]
 図4は、第1の実施の形態における不揮発性メモリの一構成例を示すブロック図である。この不揮発性メモリ400は、データバッファ410、メモリセルアレイ420、ドライバ430、アドレスデコーダ440、バス450、制御インターフェース460、および、メモリ制御部470を備える。
 データバッファ410は、メモリ制御部470の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ420は、マトリックス状に配列された複数のメモリセルを備える。これらのメモリセルとして、不揮発性の記憶素子が用いられる。具体的には、NAND型やNOR型のフラッシュメモリ、ReRAM、PCRAM、STT-RAM、または、MRAMなどが記憶素子として用いられる。
 また、これらのメモリセルは、論理値「1」または「0」を保持する2値メモリセルである。また、不揮発性メモリ400のアクセス単位は、例えば、8ビットからなるワードである。例えば、メモリセルアレイ420に8×256個のメモリセルを設けた場合、256ワードのデータが保持される。これらのワードのそれぞれに物理アドレスが割り当てられる。
 ドライバ430は、アドレスデコーダ440により選択されたメモリセルに対してデータの書込み、または、データの読み出しを行うものである。データの書込みにおいては、ドライバ430は、極性の異なる2つの電圧パルスのいずれかをメモリセルに印加して「1」または「0」を書き込む。以下、「1」を書き込む動作を「セット」と定義し、その際の電圧パルスを「セットパルス」と称する。一方、「0」を書き込む動作を「リセット」と定義し、その際の電圧パルスを「リセットパルス」と称する。
 また、データの読み出しにおいては、ドライバ430は、メモリセルに電流パルスを印加し、メモリセルの電極間に生じる電圧と、所定の参照電圧Vrefとを比較する。ドライバ430は、この比較結果をリードデータの値として読み出す。この動作を「センス」と定義し、その際の電流パルスを以下、「センスパルス」と称する。また、ReRAMでは、参照電圧Vrefは、次式により表される。
  Vref=I×Rref
上式において、Iは、センスパルスの電流値であり、Rrefは、参照抵抗値である。
 また、ドライバ430は、セット、リセットおよびセンスのそれぞれにおいて、メモリ制御部470の制御に従ってビット単位でメモリセルを選択して、そのメモリセルのみをセット、リセットまたはセンスすることができる。
 アドレスデコーダ440は、リクエストにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。例えば、「0x0F」(10進数で15)のアドレスが解析された場合、256個のアドレスのうち、先頭から16番目のアドレスに対応する8個のメモリセルが選択される。
 バス450は、データバッファ410、メモリセルアレイ420、アドレスデコーダ440、メモリ制御部470および制御インターフェース460が相互にデータを交換するための共通の経路である。制御インターフェース460は、メモリコントローラ300と不揮発性メモリ400とがデータを相互に交換するためのインターフェースである。
 メモリ制御部470は、ドライバ430およびアドレスデコーダ440を制御して、データの書込み、または、読み出しを行わせるものである。
 [メモリ制御部の構成例]
 図5は、第1の実施の形態におけるメモリ制御部470の一構成例を示すブロック図である。このメモリ制御部470は、リクエストデコーダ471、ライト処理部472、リード処理部473、再リード処理部474およびリフレッシュ処理部475を備える。
 リクエストデコーダ471は、メモリコントローラ300からのリクエストを解釈(デコード)するものである。このリクエストデコーダ471は、ライトリクエストのデコード結果をライト処理部472に供給し、リードリクエストのデコード結果をリード処理部473に供給する。また、リクエストデコーダ471は、リフレッシュリクエストのデコード結果を再リード処理部474に供給する。
 ライト処理部472は、ドライバ430およびアドレスデコーダ440を制御して、データの書込みを行わせるものである。このライト処理部472は、デコード結果を受け取ると、アドレスのデコードを指示する制御信号をアドレスデコーダ440に供給する。また、ライト処理部472は、全ビットを選択するビットセレクト信号とセンスを指示するセンス信号とをドライバ430に供給する。なお、アドレスデコーダ440への制御信号とドライバ430へのビットセレクト信号とは、図5において省略されている。ドライバ430は、センス信号およびビットセレクト信号に従って、リクエストの指定するアドレスに書き込まれているデータをプレリードデータとして読み出す。
 そして、ライト処理部472は、ライトデータとプレリードデータとをビット単位で比較し、ライトデータにおいて「1」であり、かつ、プレリードデータにおいて「0」のビットをセット対象とする。ライト処理部472は、そのセット対象のビットを示すビットセレクト信号と、セットを指示するセット信号とをドライバ430に供給する。
 次に、ライト処理部472は、ライトデータとセット処理後のプレリードデータとをビット単位で比較し、ライトデータにおいて「0」であり、かつ、プレリードデータにおいて「1」のビットをリセット対象とする。ライト処理部472は、そのリセット対象のビットを示すビットセレクト信号と、リセットを指示するリセット信号とをドライバ430に供給する。ドライバ430は、ビットセレクト信号、セット信号およびリセット信号に従ってデータの書込みを行う。
 リード処理部473は、ドライバ430およびアドレスデコーダ440を制御して、データの読み出しを行わせるものである。このリード処理部473は、アドレスのデコードを指示する制御信号をアドレスデコーダ440に供給する。また、リード処理部473は、参照電圧VrefにVref1を設定してドライバ430にセンス信号およびビットセレクト信号を供給する。このビットセレクト信号では、全てのメモリセルが選択され、例えば、ビットセレクト信号の全ビットに「1」が設定される。
 再リード処理部474は、ドライバ430およびアドレスデコーダ440を制御して、データの再度の読み出しを行わせるものである。この再リード処理部474は、デコード結果を受け取ると、アドレスのデコードを指示する制御信号をアドレスデコーダ440に供給する。また、再リード処理部474は、参照電圧VrefにVref2を設定して、センス信号をドライバ430に供給する。また、メモリコントローラ300からのビットセレクト信号はドライバ430に転送される。ドライバ430は、センス信号およびビットセレクト信号に従ってデータを再リードデータとして読み出す。ビットセレクト信号により選択されていないメモリセルにはセンスパルスは印加されない。
 ここで、リードデータを読み出す際の参照電圧Vref1に対応する参照抵抗値をRref1とし、再リードデータを読み出す際の参照電圧Vref2に対応する参照抵抗値をRref2とする。メモリセルの抵抗値がRDの進行に伴い高くなる場合には、Rref2がRref1よりも高く、Rref1およびRref2の差分が、1回の読み出しによる抵抗値の変化量よりも大きくなるように、Vref1およびVref2が設定される。なお、参照抵抗値Rref1は、特許請求の範囲に記載の第1の閾値の一例であり、参照抵抗値Rref2は、特許請求の範囲に記載の第2の閾値の一例である。
 そして、再リード処理部474は、再リードデータおよびビットセレクト信号をビット単位で比較して、その比較結果に基づいてビットセレクト信号を修正する。修正においては、ビットセレクト信号で書き換え対象とされたビットのうち、リードデータと値が同じビットが、書き換え対象から除外される。例えば、「1」が「0」に反転したメモリセルのみがビットセレクト信号で書き換え対象とされていた場合、再リードデータにおいて「0」のビットは、リードデータの値と同じであるため、書き換え対象から除外される。再リード処理部474は、修正したビットセレクト信号を修正ビットセレクト信号としてドライバ430に供給し、再リードデータを読み出した旨をリフレッシュ処理部475に通知する。この修正ビットセレクト信号により、リードデータおよび再リードデータにおいて値の異なるメモリセルのみが書き換えられる。
 リフレッシュ処理部475は、ドライバ430を制御して、データの書き換えを行わせるものである。このリフレッシュ処理部475は、再リードデータが読み出されると、セット信号およびリセット信号の一方を生成してドライバ430に供給する。例えば、「1」が「0」に反転したメモリセルがビットセレクト信号で書き換え対象とされた場合、セット信号が生成される。
 図6は、第1の実施の形態におけるリクエストごとの不揮発性メモリ400の動作例を示す表である。ライトリクエストおよびライトデータが入力された場合に不揮発性メモリ400は、セットおよびリセットを順に行ってライトデータをメモリセルに書き込む。一方、リードリクエストが入力された場合に不揮発性メモリ400は、参照電圧Vref1を基準としてリードデータを読み出してメモリコントローラ300に出力する。
 また、リフレッシュリクエストおよびビットセレクト信号が入力された場合に不揮発性メモリ400は、参照電圧Vref2を基準として再リードデータを読み出し、その読み出した値が「1」のビットのみをセットする。
 図7は、第1の実施の形態におけるRDの生じる前、すなわち書き換え直後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。ReRAMの2値メモリセルでは、その抵抗分布は、抵抗の閾値(Rref1など)を境に2つに分けられている。これらの分布は、低抵抗状態(LRS:Low-Resistance State)および高抵抗状態(HRS:High-Resistance State)と呼ばれる。LRSには、例えば、「1」の論理値が割り当てられ、HRSには「0」が割り当てられる。この閾値が変更された場合には、その変更後の閾値を基準としてデータの値が判断される。
 なお、LRSに「1」をHRSに「0」を割り当てているが、逆に、LRSに「0」をHRSに「1」を割り当ててもよい。この場合には、「0」から「1」に反転したメモリセルが書き換え対象とされ、Rref2を基準として「0」が読み出されたメモリセルが「0」にリセットされる。
 図8は、第1の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。また、同図における点線の曲線は、書き換え直後のメモリセルの状態を示し、実線の曲線は、センス信号による読み出しの繰り返しにより変化したメモリセルの状態を示す。同図に例示するように、読み出しを繰り返すと抵抗値が高抵抗側へずれる現象が知られている。この現象は、RDと呼ばれる。RDにより、実線の曲線の右裾が、閾値(Rref1)を超え、その結果、「1」を書き込んだビットから、「0」が読み出されるRDエラーが発生してしまう。同図における斜線部分は、RDエラーが生じる部分である。
 図9は、第1の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。同図における縦軸は、抵抗値であり、横軸は読み出し回数を示す。ここでは、あるメモリセルに、LRSに対応する「1」が書き込まれた場合を考える。左端の1回目の読み出しでは、抵抗値が参照抵抗値Rref1より低く、「1」の値が正常に読み出される。しかし、m回目の読み出しにおいては、RTNにより抵抗値が不連続に上昇している。この結果、HRSに対応する「0」の値が誤って読み出されるRTNエラーが生じる。この現象は、例えば、「T.O.Iwasaki, et al, “Stability Conditioning to Enhance Read Stability 10x in 50nm AlxOy ReRAM”, IEEE International Memory Workshop 2013」などに記載されている。メモリコントローラ300は、m回目のリードデータからエラーを検出してリフレッシュリクエストを発行し、不揮発性メモリ400は、参照抵抗値をRref2に変更して、m+1回目の再読み出しを行う。RTNエラーは、ある程度の時間が経過しないと解消しないため、参照抵抗値を変更しても読み出される値が変化せず、再度「0」の値が読み出される。この場合、リードデータおよび再リードデータの値が同一であるため、メモリセルはリフレッシュされない。
 m+1回目以降、読み出しの繰り返しに伴ってRDにより抵抗値が上昇し、n回目において参照抵抗値Rref1を超えたものとする。この結果、HRSに対応する「0」の値が誤って読み出されるRDエラーが生じる。RDエラーが発生した際には、リフレッシュを行わない限り、RDの影響が消失することはなく、その後の読み出しにおいても誤った「0」の値が読み出されてしまう。
 そこで、メモリコントローラ300は、n回目のリードデータからエラーを検出すると、そのエラーを解消するためにリフレッシュリクエストを発行し、不揮発性メモリ400は、参照抵抗値をRref2に変更して、n+1回目の再読み出しを行う。n+1回目では、RDにより抵抗値がわずかに上昇するが、Rref1およびRref2の差分がその上昇量よりも大きくなるようにRref2が設定されているため、Rref2を超えない。このため、n+1回目では、正しい論理値「1」が読み出される。不揮発性メモリ400は、n+1回目で「1」が読み出されたため、そのメモリセルにセットパルスを印加する。これにより、メモリセルの抵抗値は、Rref1より低くなり、参照抵抗値Rref1およびRref2の双方で正しい論理値が読み出されるようになる。このように、RDエラーはセットパルスの再印加により回復することができる。
 一方、RTNエラーは、RDエラーと異なり一時的な状態の変化であり、自然に回復するため、セットパルス(あるいはリセットパルス)の再印加によりリフレッシュを行う必要はない。例えば、m回目のRTNエラー発生時に、セットパルスを再印加してリフレッシュを行うと、再印加の際にはRTNの影響が消失しているにもかかわらず、高抵抗のメモリセルに過剰なセットパルスが印加されてしまい、セル特性が劣化してしまう。このため、RTNエラーについてもリフレッシュを行う特許文献2などのメモリシステムでは、不要なリフレッシュにより却ってメモリセルの劣化が進行して不揮発性メモリ400の寿命が短くなるおそれがある。
 これに対して、不揮発性メモリ400は、RDエラーの際にリフレッシュを行う一方、RTNエラーの際にはリフレッシュを行わないため、メモリセルの劣化を抑制することができる。
 図10は、第1の実施の形態におけるリードデータおよびビットセレクト信号の一例を示す図である。同図におけるaは、参照電圧Vref1により読み出されたリードデータの一例である。このリードデータは、例えば、「b11100000」のビット列を含む。また、同図におけるbは、復号データの一例である。この復号データは、例えば、「b11100011」のビット列を含む。これらのリードデータおよび復号データをビット単位で比較すると、先頭から7ビット目と8ビット目とにおいてエラーが生じている。これらのビットでは復号前が「0」で復号後が「1」であるから、「1」が「0」に反転したパターンのエラーが発生している。前述したように、ReRAMでは、読み出し回数が多くなるほど、抵抗値が増加する傾向にあるため、LRSに「1」が割り当てられている場合、「1」が「0」に反転するRDエラーが発生しうる。ただし、RTNエラーによっても「1」が「0」に反転する可能性がある。この時点では、「1」が「0」に反転したエラーが、RDエラーであるのか、RTNエラーであるのか断定することができない。
 図10におけるcは、ビットセレクト信号の一例である。ビットセレクト信号において、「0」は、書き換え対象でないビットを示し、「1」はセットにより書き換える対象のビットを示す。同図におけるaおよびbの結果から、RDエラーまたはRTNエラーが想定される7ビット目および8ビット目を指定した「b0000011」を含むビットセレクト信号が生成される。不揮発性メモリ400は、ビットセレクト信号に従って、7ビット目および8ビット目を選択して、参照抵抗値Rref2を基準として再リードデータを読み出す。
 図10におけるdは、再リードデータの一例である。同図のdにおいて、「-」は、センスパルスが印加されないビットを示す。例えば、この再リードデータの7ビット目が「0」で、8ビット目が「1」であるものとする。書き換え対象とされたメモリセルのうち、7ビット目のセルは、リードデータと値が変わらないが、8ビット目は値が異なる。この場合、7ビット目のエラーはRTNエラーであり、8ビット目のエラーはRDエラーであると考えられる。したがって、不揮発性メモリ400は、RTNエラーに対応する7ビット目を書き換え対象としないように、ビットセレクト信号を修正する。同図におけるeは、修正ビットセレクト信号の一例である。この修正ビットセレクト信号では、エラーが検出された7ビット目および8ビット目のうち7ビット目が「0」に修正される。これにより、8ビット目のメモリセルがセットによりリフレッシュされる。
 [ストレージの動作例]
 図11は、第1の実施の形態におけるストレージ200の動作の一例を示すフローチャートである。この動作は、例えば、ストレージ200に電源が投入されたときや、ホストコンピュータ100により初期化が指示されたときに開始する。
 メモリコントローラ300は、不揮発性メモリ400を初期化する(ステップS901)。また、メモリコントローラ300は、ホストコンピュータ100からのコマンドをデコードする(ステップS902)。コマンドがライトコマンドである場合に(ステップS903:Yes)、メモリコントローラ300は、そのライトコマンドに応じてライトリクエストを発行する(ステップS904)。また、不揮発性メモリ400は、そのライトリクエストに従ってライトデータをメモリセルに書き込む(ステップS905)。
 一方、アクセスコマンドがリードコマンドである場合に(ステップS903:No)、メモリコントローラ300は、コントローラ側リード・リフレッシュ処理を実行する(ステップS910)。また、不揮発性メモリ400は、メモリ側リード・リフレッシュ処理を実行する(ステップS920)。ステップS905の後、または、ステップS910およびS920の両方が終了した後、ストレージ200はステップS902に戻る。
 図12は、第1の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。メモリコントローラ300は、リードリクエストを発行し(ステップS911)、リードデータが読み出されると、そのデータを復号する(ステップS912)。エラー数がECCの誤り訂正能力以下であれば、復号は成功する。
 メモリコントローラ300は、復号に成功したか否かを判断する(ステップS913)。復号に成功した場合には(ステップS913:Yes)、メモリコントローラ300は、復号データをホストコンピュータ100に出力し(ステップS914)、訂正数がN以上であるか否かを判断する(ステップS915)。一方、復号に失敗した場合には(ステップS913:No)、メモリコントローラ300は、リードエラーをホストコンピュータ100に出力する(ステップS917)。
 訂正数がN以上である場合には(ステップS915:Yes)、メモリコントローラ300は、所定のパターンのエラーの生じたメモリセルを書き換え対象とするビットセレクト信号を生成し、リフレッシュリクエストを発行する(ステップS916)。訂正数がNに満たない場合(ステップS915:No)、または、ステップS916の後、もしくはステップS917の後、メモリコントローラは、コントローラ側リード・リフレッシュ処理を終了する。
 図13は、第1の実施の形態におけるメモリ側リード・リフレッシュ処理の一例を示すフローチャートである。不揮発性メモリ400は、リードリクエストに従って参照電圧Vref1を基準としてリードデータを読み出す(ステップS921)。不揮発性メモリ400は、一定期間内に、メモリコントローラ300からリフレッシュリクエストを受信したか否かを判断する(ステップS922)。リフレッシュリクエストを受信した場合に(ステップS922:Yes)、不揮発性メモリ400は、そのリクエストに従って参照電圧Vref2を基準として再リードデータを読み出す(ステップS923)。そして、不揮発性メモリ400は、再リードデータおよびリードデータの値が異なるメモリセルのみを書き換え対象とするようにビットセレクト信号を修正する(ステップS924)。不揮発性メモリ400は、修正ビットセレクト信号の示すメモリセルについて、セット動作を行う(ステップS925)。
 一方、リフレッシュリクエストを受信しなかった場合(ステップS922:No)、または、ステップS925の後、不揮発性メモリ400は、メモリ側リード・リフレッシュ処理を終了する。
 図14は、第1の実施の形態におけるストレージ200の動作の一例を示すシーケンス図である。メモリコントローラ300がリードリクエストを発行して不揮発性メモリ400に送信すると、不揮発性メモリ400は、そのリクエストに従って参照電圧Vref1を基準としてリードデータを読み出す(ステップS921)。メモリコントローラ300は、そのリードデータを復号し(ステップS912)、エラー数がN以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ400に送信する。
 不揮発性メモリ400は、リフレッシュリクエストおよびビットセレクト信号に従って参照電圧Vref2を基準として再リードデータを読み出す(ステップS923)。そして、不揮発性メモリ400は、再リードデータおよびリードデータの値が異なるビットのみを書き換え対象とするようにビットセレクト信号を修正し(ステップS924)、その書き換え対象をセットによりリフレッシュする(ステップS925)。
 このように、本技術の第1の実施の形態によれば、第1の閾値を基準とするリードデータと第2の閾値を基準とする再リードデータとの値が異なるメモリセルをリフレッシュするため、それらの値が同一のメモリセルを除いてリフレッシュすることができる。これにより、RTNエラーの可能性が高いメモリセルに対する不要なリフレッシュが無くなるため、メモリセルの劣化の進行を抑制することができる。
  <2.第2の実施の形態>
 上述の第1の実施の形態では、メモリコントローラ300は、リード処理においてエラー数が所定の許容値以上となるたびに、そのアドレスにおいてリフレッシュを行っていた。しかし、リフレッシュ処理の間、不揮発性メモリ400は、他のリクエストを実行することができないため、エラー検出のたびにリフレッシュ処理を行うとアクセス速度が低下するおそれがある。このため、メモリコントローラ300は、一定の条件が満たされるまでリフレッシュリクエストの発行を抑制し、ライトリクエストやリードリクエストを優先して発行することが望ましい。一定の条件としては、例えば、ホストコンピュータ100によりリフレッシュが指示されたことや、リフレッシュ対象のアドレスの個数が所定個数を超えたことなどが挙げられる。この第2の実施の形態のメモリコントローラ300は、一定の条件が満たされた場合にリフレッシュリクエストを発行する点において第1の実施の形態と異なる。
 図15は、第2の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。第2の実施の形態のメモリコントローラ300は、リード制御部320およびリフレッシュ制御部330の代わりにリード制御部321およびリフレッシュ制御部331を備え、さらにアドレスレジスタ340を備える点において第1の実施の形態と異なる。
 リード制御部321は、リードデータおよび復号データをECC処理部304から受け取り、許容値N以上のエラーが検出されるたびに、そのアドレスをアドレスレジスタ340に保持させる。図15では、記載の便宜上、ECC処理部304および不揮発性メモリ400からリード制御部321へのリードデータおよび復号データは、省略されている。アドレスレジスタ340は、複数のアドレスを保持するものである。なお、アドレスレジスタ340は、特許請求の範囲に記載のアドレス保持部の一例である。
 また、リフレッシュ制御部331は、ホストコンピュータ100からリフレッシュコマンドを受信した場合に、アドレスレジスタ340に保持されたアドレスを順に指定してリードリクエストを発行する。あるいは、リフレッシュ制御部331は、アドレスレジスタ340に保持されたアドレス数がM(Mは、整数)個以上となった場合に、それらのアドレスを順に指定してリードリクエストを発行する。そして、リフレッシュ制御部332は、訂正数がN以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ400に供給する。
 また、第2の実施の形態のホストコンピュータ100は、例えば、アクセス頻度が一定以下に低下した場合にリフレッシュコマンドを発行する。
 図16は、第2の実施の形態におけるストレージ200の動作の一例を示すフローチャートである。メモリコントローラ300は、不揮発性メモリ400の初期化(ステップS901)の後、コマンドをデコードする(ステップS902)。メモリコントローラ300は、コマンドがライトコマンドであるか否かを判断し(ステップS903)、ライトコマンドであれば(ステップS903:Yes)、ステップS904およびS905を実行する。
 一方、ライトコマンドでない場合に(ステップS903:No)、メモリコントローラ300は、コマンドがリードコマンドであるか否かを判断する(ステップS906)。リードコマンドである場合に(ステップS906:Yes)、メモリコントローラ300は、コントローラ側リード処理を実行する(ステップS930)。また、不揮発性メモリ400は、ライトリクエストに従ってVref1を基準としてリードデータを読み出す(ステップS921)。
 ステップS905の後、または、ステップS930およびS921の両方が終了した後に、不揮発性メモリ400は、アドレスレジスタに保持されたアドレス数がM個以上であるか否かを判断する(ステップS907)。
 コマンドがリフレッシュコマンドである場合(ステップS906:No)、または、アドレス数がM個以上である場合(ステップS907:Yes)、メモリコントローラ300は、コントローラ側リフレッシュ処理を実行する(ステップS940)。また、不揮発性メモリ400は、メモリ側リード・リフレッシュ処理を実行する(ステップS920)。アドレス数がM個未満である場合(ステップS907:No)、または、ステップS940およびS920の両方が終了した後、ストレージ200はステップS902に戻る。
 図17は、第2の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。コントローラ側リード処理は、ステップS916の代わりにステップS931を実行する点以外は、図12に例示したコントローラ側リード・リフレッシュ処理と同様である。訂正数がN以上である場合に(ステップS915:Yes)、メモリコントローラ300は、リードリクエストにより指定されたアドレスをアドレスレジスタ340に保持する(ステップS931)。
 図18は、第2の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。メモリコントローラ300は、アドレスレジスタ340から、いずれかのアドレスを取り出して、そのアドレスをアドレスレジスタ340から削除する(ステップS941)。メモリコントローラ300は、取り出したアドレスを指定するリードリクエストを発行する(ステップS942)。そして、メモリコントローラ300は、読み出されたリードデータを復号する(ステップS943)。
 メモリコントローラ300は、復号に成功したか否かを判断する(ステップS944)。復号に成功した場合に(ステップS944:Yes)、メモリコントローラ300は、復号データをホストコンピュータ100へ出力し(ステップS945)、訂正数がN以上であるか否かを判断する(ステップS946)。
 訂正数がN以上である場合に(ステップS946:Yes)、メモリコントローラ300は、ビットセレクト信号を生成し、リフレッシュリクエストを発行して不揮発性メモリ400に供給する(ステップS947)。
 復号に失敗した場合に(ステップS944:No)、メモリコントローラ300は、リードエラーをホストコンピュータ100に出力する(ステップS948)。また、訂正数がN未満である場合(ステップS946:No)、または、ステップS947の後、もしくはステップS948の後、メモリコントローラ300は、レジスタにアドレスがあるか否かを判断する(ステップS949)。アドレスがある場合(ステップS949:Yes)、メモリコントローラ300はステップS941に戻り、アドレスがない場合(ステップS949:No)、メモリコントローラ300はコントローラ側リフレッシュ処理を終了する。
 なお、メモリコントローラ300は、コントローラ側リード処理とコントローラ側リフレッシュ処理との両方で、リードデータの復号を行っているが、コントローラ側リフレッシュ処理において復号を行わない構成としてもよい。ただし、コントローラ側リード処理の終了から、コントローラ側リフレッシュ処理の開始までの間に、保持させたアドレスがアクセスされてRDが進行するおそれがあるため、コントローラ側リフレッシュ処理においても復号を行うことが望ましい。
 このように、本技術の第2の実施の形態によれば、メモリコントローラ300は、エラーが生じたアドレスを保持しておき、後に一定の条件が満たされると、そのアドレスにおいてリフレッシュを行うため、アクセス効率を向上させることができる。
  <3.第3の実施の形態>
 上述の第1の実施の形態では、メモリコントローラ300は、リードのたびに、リードデータのエラー数が所定の許容値以上であれば、そのアドレスにおいてリフレッシュを行っていた。しかし、リードのたびにエラー数に応じてリフレッシュを行うのでなく、リードやライトのアクセス頻度が低下したときにまとめてリフレッシュを行った方が、アクセス効率を向上させることができる。例えば、アクセス頻度が低下した際にホストコンピュータ100がリフレッシュモードを設定し、そのリフレッシュモードの際にメモリコントローラ300がリフレッシュを行う構成であってもよい。この第3の実施の形態のメモリシステムは、アクセス頻度が低下してリフレッシュモードに設定された際にメモリコントローラ300がリフレッシュを行う点において第1の実施の形態と異なる。
 図19は、第3の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。第3の実施の形態のメモリコントローラ300は、リフレッシュ制御部330の代わりにリフレッシュ制御部332を備える点において第1の実施の形態と異なる。
 リフレッシュ制御部332は、ホストコンピュータ100からモード切替信号を受け取る。このモード切替信号は、通常モードおよびリフレッシュモードのいずれかへの切り替えを指示する信号である。ここで、通常モードは、リードやライトを行うためのモードである。リフレッシュ制御部332は、モード切替信号によりリフレッシュモードに切り替えられた場合に、不揮発性メモリ400の全アドレスを順に指定してリードリクエストを発行する。そして、リフレッシュ制御部332は、訂正数がN以上であれば、リフレッシュリクエストおよびビットセレクト信号を不揮発性メモリ400に供給する。
 また、第3の実施の形態のホストコンピュータ100は、例えば、アクセス頻度が一定以下に低下した場合にリフレッシュモードに切り替え、そうでない場合に通常モードに切り替える。
 図20は、第3の実施の形態におけるストレージ200の動作の一例を示すフローチャートである。第3の実施の形態におけるストレージ200の動作は、ステップS907の代わりにステップS908を実行する点以外は、第2の実施の形態と同様である。
 コマンドがリードコマンドでない場合(ステップS906:No)、または、ステップS905の後、もしくは、ステップS930およびS921の後、メモリコントローラ300は、リフレッシュモードに切り替えられたか否かを判断する(ステップS908)。リフレッシュモードに切り替えられた場合に(ステップS908:Yes)、メモリコントローラ300は、ステップS940およびS920を実行する。
 リフレッシュモードに切り替えられていない場合に(ステップS908:No)、または、ステップS940およびS920の両方が終了した後、メモリコントローラ300は、ステップS902に戻る。
 図21は、第3の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。第3の実施の形態におけるコントローラ側リード処理は、ステップS915およびS916を実行しない点以外は、第1の実施の形態のコントローラ側リード・リフレッシュ処理と同様である。
 図22は、第3の実施の形態におけるコントローラ側リフレッシュ処理の一例を示すフローチャートである。第3の実施の形態のコントローラ側リフレッシュ処理は、ステップS941およびS949の代わりにステップS950、S951およびS952を実行する点以外は、第2の実施の形態と同様である。
 メモリコントローラ300は、不揮発性メモリ400の先頭アドレスをリードアドレスに設定し(ステップS950)、ステップS942乃至S948を実行する。そして、訂正数がNに満たない場合(ステップS946:No)、または、ステップS947もしくはステップS948の後、メモリコントローラ300は、リードアドレスが不揮発性メモリ400の最後のアドレスであるか否かを判断する(ステップS951)。最後のアドレスでない場合に(ステップS951:No)、メモリコントローラ300は、次のアドレスをリードアドレスに設定し(ステップS952)、ステップS942に戻る。一方、最後のアドレスである場合に(ステップS951:Yes)、メモリコントローラ300は、コントローラ側リフレッシュ処理を終了する。
 このように、本技術の第3の実施の形態によれば、メモリコントローラ300は、リフレッシュモードに設定された際にリフレッシュを行うため、アクセス効率を向上させることができる。
  <4.第4の実施の形態>
 上述の第1の実施の形態では、メモリコントローラ300は、エラー数が所定の許容値以上となった場合にリフレッシュリクエストを発行していた。しかし、エラーには、RDエラーやRTNエラーの種類があり、RDエラーでは、「1」が「0」に反転するなどの一定のパターンしか見られない。このため、エラーのパターンに関わらず、エラー数がN個以上になった際にリフレッシュを行うと、RDエラーでないエラーしか生じなかった際にもリフレッシュリクエストが発行されてアクセス効率が低下するおそれがある。このため、RDエラーが想定される一定のパターンのエラー数が所定の許容値以上の際にメモリコントローラ300がリフレッシュリクエストを発行することが望ましい。この第4の実施の形態のメモリコントローラ300は、一定のパターンのエラー数がN’個以上になった際にメモリコントローラ300がリフレッシュリクエストを発行する点において第1の実施の形態と異なる。
 図23は、第4の実施の形態におけるコントローラ側リード・リフレッシュ処理の一例を示すフローチャートである。第4の実施の形態のコントローラ側リード・リフレッシュ処理は、ステップS915の代わりにステップS918を実行する点において第1の実施の形態と異なる。
 復号データの出力(ステップS914)の後、メモリコントローラ300は、「0」から「1」に訂正されたエラー数が許容値N’(N’は整数)以上であるか否かを判断する(ステップS918)。訂正数がN’以上である場合には(ステップS918:Yes)、メモリコントローラ300は、ステップS916を実行する。一方、訂正数がN’未満である場合(ステップS918:No)、または、ステップS917の後、メモリコントローラ300は、コントローラ側リード・リフレッシュ処理を終了する。
 このように、本技術の第4の実施の形態によれば、メモリコントローラ300は、一定のパターンのエラー数が許容値以上である場合にリフレッシュを行うため、そのパターン以外のエラーのメモリセルを除いてリフレッシュすることができる。これにより、不要なリフレッシュを抑制して、メモリセルの劣化を防止することができる。
  <5.第5の実施の形態>
 上述の第1の実施の形態では、不揮発性メモリ400として2値メモリセルを想定していたが多値メモリセルを設けてもよい。この第5の実施の形態のメモリシステムは、不揮発性メモリ400として、多値メモリセルを備える点において第1の実施の形態と異なる。
 図24は、第5の実施の形態における不揮発性メモリ400の一構成例を示すブロック図である。第5の実施の形態の不揮発性メモリ400は、メモリセルアレイ420の代わりにメモリセルアレイ421を備える点において第1の実施の形態と異なる。
 メモリセルアレイ421は、二次元格子状に複数の多値メモリが設けられた点において第1の実施の形態と異なる。多値メモリセルのそれぞれには、複数のビットが保持される。
 図25は、第5の実施の形態における読み出しを繰り返した後のメモリセルの抵抗分布の一例を示す図である。同図における縦軸は、メモリセルのセル数であり、横軸は、抵抗値である。ReRAMの多値メモリセルでは、その抵抗分布は、2つの閾値(Rref1_HおよびRref1_Lなど)を境に3つの分布に分かれている。これらは、例えば、低抵抗状態(LRS)、中抵抗状態(MRS:Middle-Resistance State)、および、高抵抗状態(HRS)と呼ばれる。LRSには、例えば、「1」の値が割り当てられ、MRSには「2」が割り当てられ、HRSには「0」が割り当てられる。
 また、図25における点線の曲線は、書き換え直後のメモリセルの状態を示し、実線の曲線は、センス信号による読み出しの繰り返しにより変化したメモリセルの状態を示す。同図に例示するように、読み出しが繰り返されると抵抗値が高抵抗側へずれてしまう。このRDにより、「1」を書き込んだビットから、MRSに対応する「2」が読み出されるRDエラーが発生してしまう。あるいは、「2」を書き込んだビットから、HRSに対応する「0」が読み出されるRDエラーが発生してしまう。同図における斜線部分は、RDエラーが生じた部分を示す。
 図26は、第5の実施の形態における読み出し回数の増加に伴う抵抗値の変化の一例を示す図である。同図における縦軸は、抵抗値であり、横軸は読み出し回数を示す。同図におけるaは、LRSに対応する「1」が書き込まれたメモリセルの抵抗値の変化を示す図である。左端の1回目の読み出しでは、抵抗値が参照抵抗値Rref1_Lより低く、「1」の値が正常に読み出される。そして、読み出しの繰り返しに伴ってRDにより抵抗値が上昇し、m’回目において参照抵抗値Rref1_Lを超えたものとする。この結果、MRSに対応する「2」の値が誤って読み出されるRDエラーが生じる。
 メモリコントローラ300は、m’回目のリードデータからエラーを検出するとリフレッシュリクエストを発行し、不揮発性メモリ400は、参照抵抗値をRref2_LおよびRref2_Hに変更して、m’+1回目の再読み出しを行う。RDエラーであれば、m’+1回目では、正しい論理値「1」が読み出される。この場合に不揮発性メモリ400は、そのメモリセルを「1」に書き換える。
 また、図26におけるbは、MRSに対応する「2」が書き込まれたメモリセルの抵抗値の変化を示す図である。左端の1回目の読み出しでは、抵抗値が参照抵抗値Rref1_HおよびRref1_Lの間であり、「2」の値が正常に読み出される。そして、読み出しの繰り返しに伴ってRDにより抵抗値が上昇し、n’回目において参照抵抗値Rref1_Hを超えたものとする。この結果、HRSに対応する「0」の値が誤って読み出されるRDエラーが生じる。
 メモリコントローラ300は、n’回目のリードデータからエラーを検出するとリフレッシュリクエストを発行し、不揮発性メモリ400は、参照抵抗値をRref2_LおよびRref2_Hに変更して、n’+1回目の再読み出しを行う。RDエラーであれば、n’+1回目では、正しい論理値「2」が読み出される。この場合に不揮発性メモリ400は、そのメモリセルを「2」に書き換える。
 このように、本技術の第5の実施の形態によれば、不揮発性メモリ400が、複数の閾値を基準としてリードデータをメモリセルごとに読み出し、それらの閾値を変えて再リードデータを読み出すため、多値メモリセルをメモリセルとして用いることができる。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
 前記リードデータの誤りの有無を検出して前記複数のメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出部と、
 前記第1の閾値と異なる第2の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
 前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備するメモリシステム。
(2)前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備する
前記(1)記載のメモリシステム。
(3)前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、
 前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させる
前記(2)記載のメモリシステム。
(4)前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることである前記(2)または(3)記載のメモリシステム。
(5)前記所定の条件は、前記リフレッシュ処理の実行を指示するリフレッシュコマンドを前記リフレッシュ制御部が受信したことである
前記(2)または(3)記載のメモリシステム。
(6)前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、
 前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させる
前記(2)に記載のメモリシステム。
(7)前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させる
前記(2)から(5)のいずれかに記載のメモリシステム。
(8)前記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、
 前記第1および第2の閾値のそれぞれは、複数の閾値を含む
前記(1)から(7)のいずれかに記載のメモリシステム。
(9)前記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、
 前記第2の閾値は、前記第1の閾値から前記特定の方向へ変化させた値である
前記(1)から(8)のいずれかに記載のメモリシステム。
(10)複数のメモリセルと、
 第1の閾値を基準として前記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
 前記第1の閾値と異なる第2の閾値を基準として前記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
 前記リードデータに誤りのある前記メモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
を具備する記憶装置。
(11)リード処理部が、第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理手順と、
 誤り検出部が、前記リードデータの誤りの有無を検出して前記特定されたメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出手順と、
 再リード処理部が、前記第1の閾値と異なる第2の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理手順と、
 リフレッシュ処理部が、前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理手順と
を具備するメモリシステムの制御方法。
 100 ホストコンピュータ
 200 ストレージ
 300 メモリコントローラ
 301 ホストインターフェース
 302 RAM
 303 CPU
 304 ECC処理部
 305 ROM
 306、450 バス
 307 メモリインターフェース
 310 ライト制御部
 320、321 リード制御部
 330、331、332 リフレッシュ制御部
 340 アドレスレジスタ
 400 不揮発性メモリ
 410 データバッファ
 420、421 メモリセルアレイ
 430 ドライバ
 440 アドレスデコーダ
 460 制御インターフェース
 470 メモリ制御部
 471 リクエストデコーダ
 472 ライト処理部
 473 リード処理部
 474 再リード処理部
 475 リフレッシュ処理部

Claims (11)

  1.  第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
     前記リードデータの誤りの有無を検出して前記複数のメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出部と、
     前記第1の閾値と異なる第2の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
     前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
    を具備するメモリシステム。
  2.  前記特定されたメモリセルのうち所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させるリフレッシュ制御部をさらに具備する
    請求項1記載のメモリシステム。
  3.  前記誤りのあるメモリセルに割り当てられたアドレスを保持するアドレス保持部をさらに具備し、
     前記リフレッシュ制御部は、所定の条件が満たされた場合には前記保持されたアドレスを読み出して当該アドレスを指定して前記リード処理部に前記リード処理を実行させる
    請求項2記載のメモリシステム。
  4.  前記所定の条件は、前記保持されたアドレスの個数が所定個数を超えることである
    請求項2記載のメモリシステム。
  5.  前記所定の条件は、前記リフレッシュ処理の実行を指示するリフレッシュコマンドを前記リフレッシュ制御部が受信したことである
    請求項2記載のメモリシステム。
  6.  前記複数のメモリセルは、前記複数のアドレスのいずれかが各々に割り当てられた複数の区画に分割され、
     前記リフレッシュ制御部は、前記リフレッシュ処理を行うためのリフレッシュモードが設定された場合には前記複数のアドレスのそれぞれを順に指定して前記リード処理部に前記リード処理を実行させる
    請求項2記載のメモリシステム。
  7.  前記リフレッシュ制御部は、前記所定のパターンの前記誤りの個数が許容値を超える場合には前記特定されたメモリセルのうち前記所定のパターンの前記誤りが生じたメモリセルに対して前記再リード部に前記再リード処理を実行させる
    請求項6記載のメモリシステム。
  8.  前記複数のメモリセルのそれぞれは、複数のビットを含むデータを保持し、
     前記第1および第2の閾値のそれぞれは、複数の閾値を含む
    請求項1記載のメモリシステム。
  9.  前記メモリセルの特性値は、データが読み出されるたびに特定の方向へ変化し、
     前記第2の閾値は、前記第1の閾値から前記特定の方向へ変化させた値である
    請求項1記載のメモリシステム。
  10.  複数のメモリセルと、
     第1の閾値を基準として前記複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理部と、
     前記第1の閾値と異なる第2の閾値を基準として前記リードデータに誤りのあるメモリセルの各々からデータを再リードデータとして読み出す再リード処理を行う再リード処理部と、
     前記リードデータに誤りのある前記メモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理部と
    を具備する記憶装置。
  11.  リード処理部が、第1の閾値を基準として複数のメモリセルの各々からリードデータを読み出すリード処理を行うリード処理手順と、
     誤り検出部が、前記リードデータの誤りの有無を検出して前記特定されたメモリセルのうち前記誤りのあるメモリセルを特定する誤り検出手順と、
     再リード処理部が、前記第1の閾値と異なる第2の閾値を基準として前記特定されたメモリセルからデータを再リードデータとして読み出す再リード処理を行う再リード処理手順と、
     リフレッシュ処理部が、前記特定されたメモリセルのうち前記再リードデータの値が前記リードデータと異なるメモリセルに対して前記再リードデータへのデータの書き換えをリフレッシュ処理として行うリフレッシュ処理手順と
    を具備するメモリシステムの制御方法。
PCT/JP2015/078610 2014-11-26 2015-10-08 メモリシステム、記憶装置、および、メモリシステムの制御方法 WO2016084497A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/527,374 US10031865B2 (en) 2014-11-26 2015-10-08 Memory system, storage device, and method for controlling memory system
JP2016561448A JP6497394B2 (ja) 2014-11-26 2015-10-08 メモリシステム、記憶装置、および、メモリシステムの制御方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014-239060 2014-11-26
JP2014239060 2014-11-26

Publications (1)

Publication Number Publication Date
WO2016084497A1 true WO2016084497A1 (ja) 2016-06-02

Family

ID=56074075

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/078610 WO2016084497A1 (ja) 2014-11-26 2015-10-08 メモリシステム、記憶装置、および、メモリシステムの制御方法

Country Status (3)

Country Link
US (1) US10031865B2 (ja)
JP (1) JP6497394B2 (ja)
WO (1) WO2016084497A1 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015038794A (ja) * 2013-08-19 2015-02-26 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP2018163720A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 メモリシステム
JP2019102117A (ja) * 2017-12-05 2019-06-24 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ装置及びその動作方法
US10796776B2 (en) 2018-09-03 2020-10-06 Toshiba Memory Corporation Nonvolatile memory and memory system
US11789659B2 (en) 2021-12-09 2023-10-17 SK Hynix Inc. Method for dynamically managing host read operation and read refresh operation in a storage device, storage device, and storage medium

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016053808A (ja) * 2014-09-03 2016-04-14 ソニー株式会社 記憶制御装置、記憶装置、および、記憶制御方法
US10885991B2 (en) * 2017-04-04 2021-01-05 Sandisk Technologies Llc Data rewrite during refresh window

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128577A (ja) * 2005-11-01 2007-05-24 Toshiba Corp 記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム
JP2012256392A (ja) * 2011-06-09 2012-12-27 Sharp Corp 半導体記憶装置
WO2013105414A1 (ja) * 2012-01-12 2013-07-18 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110793A (ja) 1992-09-30 1994-04-22 Toshiba Corp 不揮発性半導体記憶装置
JP2012133642A (ja) * 2010-12-22 2012-07-12 Sony Corp メモリ装置、メモリ制御方法、およびプログラム
JP5740296B2 (ja) 2011-12-16 2015-06-24 株式会社東芝 半導体記憶装置、半導体記憶装置の制御方法、制御プログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007128577A (ja) * 2005-11-01 2007-05-24 Toshiba Corp 記憶媒体再生装置、記憶媒体再生方法および記憶媒体再生プログラム
JP2012256392A (ja) * 2011-06-09 2012-12-27 Sharp Corp 半導体記憶装置
WO2013105414A1 (ja) * 2012-01-12 2013-07-18 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015038794A (ja) * 2013-08-19 2015-02-26 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP2018163720A (ja) * 2017-03-24 2018-10-18 東芝メモリ株式会社 メモリシステム
JP2019102117A (ja) * 2017-12-05 2019-06-24 三星電子株式会社Samsung Electronics Co.,Ltd. メモリ装置及びその動作方法
JP7097792B2 (ja) 2017-12-05 2022-07-08 三星電子株式会社 メモリ装置及びその動作方法
US10796776B2 (en) 2018-09-03 2020-10-06 Toshiba Memory Corporation Nonvolatile memory and memory system
US11004523B2 (en) 2018-09-03 2021-05-11 Toshiba Memory Coiporation Nonvolatile memory and memory system
US11789659B2 (en) 2021-12-09 2023-10-17 SK Hynix Inc. Method for dynamically managing host read operation and read refresh operation in a storage device, storage device, and storage medium

Also Published As

Publication number Publication date
JP6497394B2 (ja) 2019-04-10
US20170329724A1 (en) 2017-11-16
US10031865B2 (en) 2018-07-24
JPWO2016084497A1 (ja) 2017-08-31

Similar Documents

Publication Publication Date Title
JP6497394B2 (ja) メモリシステム、記憶装置、および、メモリシステムの制御方法
JP6686892B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
US9361952B2 (en) Storage controlling apparatus, memory system, information processing system and storage controlling method
US8510633B2 (en) Semiconductor storage device and method of operating the same
US11537465B2 (en) Memory system
JP6891817B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
KR101602316B1 (ko) 반도체 메모리 장치 및 그것의 데이터 처리 방법
JP6958363B2 (ja) メモリコントローラ、不揮発性メモリおよびメモリコントローラの制御方法
KR20140113100A (ko) 레퍼런스 셀을 포함하는 불휘발성 메모리 장치 및 그것의 데이터 관리 방법 및
KR20180000593A (ko) 데이터의 오류를 정정하는 방법 및 이를 이용하는 반도체장치
WO2016153965A1 (en) One time programmable memory
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
US20140025907A1 (en) Storage control apparatus, storage apparatus, and processing methods thereof
KR102599046B1 (ko) 리커버리 동작을 수행하는 메모리 컨트롤러, 이의 동작 방법 및 이를 포함하는 메모리 시스템
KR102133209B1 (ko) 데이터 복호화 장치 및 데이터 복호화 방법
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
KR20210010718A (ko) 메모리 시스템 및 메모리 시스템에서의 에러정정방법
JPWO2020031435A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
KR20090048142A (ko) 불휘발성 메모리 장치의 ecc 처리부
KR20180024218A (ko) 쓰기 디스터번스 에러를 줄이기 위한 pcm 시스템 및 그의 제어 방법
WO2017026998A1 (en) Mapping resistance level states to multi-bit data values
KR20150098254A (ko) 불휘발성 메모리 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15862276

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2016561448

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15527374

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15862276

Country of ref document: EP

Kind code of ref document: A1