WO2016035451A1 - 記憶制御装置、記憶装置、および、記憶制御方法 - Google Patents

記憶制御装置、記憶装置、および、記憶制御方法 Download PDF

Info

Publication number
WO2016035451A1
WO2016035451A1 PCT/JP2015/069716 JP2015069716W WO2016035451A1 WO 2016035451 A1 WO2016035451 A1 WO 2016035451A1 JP 2015069716 W JP2015069716 W JP 2015069716W WO 2016035451 A1 WO2016035451 A1 WO 2016035451A1
Authority
WO
WIPO (PCT)
Prior art keywords
errors
storage
page
predetermined
storage unit
Prior art date
Application number
PCT/JP2015/069716
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/505,674 priority Critical patent/US10338984B2/en
Publication of WO2016035451A1 publication Critical patent/WO2016035451A1/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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • 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
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0407Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals on power on

Definitions

  • This technology relates to a storage device. Specifically, the present invention relates to a storage control device that manages defective pages in a storage device, a storage device, a processing method therefor, and a program that causes a computer to execute the method.
  • DRAM Dynamic Random Access Memory
  • the DRAM is usually a volatile memory, and the stored contents are lost when the supply of power is stopped.
  • NVM non-volatile memory
  • This non-volatile memory is roughly divided into flash memory that supports data access in units of large size and non-volatile random access memory (NVRAM: Non-VolatileolaRAM) that allows high-speed random access in small units. Is done.
  • NVRAM Non-VolatileolaRAM
  • NVRAM Non-VolatileolaRAM
  • NVRAM Non-VolatileolaRAM
  • a NAND flash memory is a typical example of the flash memory.
  • examples of the nonvolatile random access memory include ReRAM (Resistance RAM), PCRAM (Phase-Change RAM), MRAM (Magnetoresistive RAM) and the like.
  • Non-Patent Document 1 a ReRAM in which an error caused by a reset operation for shifting from a low resistance state (LRS: Low Resistive State) to a high resistance state (HRS: High Resistive State) is dominant (see, for example, Non-Patent Document 1). .
  • ReRAM in which an error caused by a set operation for transitioning from a high resistance state (HRS) to a low resistance state (LRS) is dominant (see, for example, Non-Patent Document 2).
  • the present technology has been created in view of such a situation, and an object thereof is to detect a defective cell in a memory in consideration of a difference in error characteristics depending on a storage state.
  • the present technology has been made to solve the above-described problems, and a first aspect of the present technology is that the number of errors in a predetermined one of a reset operation or a set operation for a memory cell of a nonvolatile memory is a predetermined reference. And a storage control method including the determination unit that determines a storage unit exceeding the storage unit as a storage unit suspected of being defective. This brings about the effect that the storage unit suspected of being defective is determined in consideration of the difference in error characteristics depending on the storage state.
  • the determination unit is configured such that a total value of the number of errors in the reset operation and the set operation exceeds a predetermined reference, and the number of errors in the predetermined one exceeds a predetermined reference.
  • the storage unit may be determined as a storage unit suspected of being defective. This brings about the effect that the storage unit suspected of being defective is determined from the storage unit in which the write error has occurred.
  • the determination unit is configured such that a total value of the number of errors of the reset operation and the set operation exceeds a predetermined reference by a predetermined number of times and an error in the predetermined one at the end of the predetermined number of times.
  • a storage unit whose number exceeds a predetermined criterion may be determined as a storage unit suspected of being defective. This brings about the effect
  • the determination unit is configured such that a total value of the number of errors in the reset operation and the set operation exceeds a predetermined reference, and the number of errors in the predetermined one does not exceed a predetermined reference. If it is determined that a write error has occurred in the storage unit, it may be determined. As a result, the storage unit that has not been defective is determined to be a normal write error.
  • the determination unit may determine the storage unit suspected of being defective as an unusable storage unit.
  • the information processing apparatus may further include a management unit that performs reconfirmation on the storage unit determined as the storage unit suspected of being defective and manages the storage unit as unusable according to the result. This brings about the effect of managing whether or not a storage unit that is suspected of being defective can be used.
  • the management unit may perform the reconfirmation for the storage unit when the storage unit determined as the storage unit suspected of being defective exceeds a certain number. This brings about the effect
  • the determination unit determines a storage unit in which the number of errors in the predetermined one exceeds a reference higher than the predetermined reference as a storage unit suspected of being defective. You may make it determine as. This brings about the effect of making it difficult to handle as a defect in reconfirmation.
  • the determination unit may select the predetermined criterion for the number of errors in the predetermined one from a plurality of candidates. Thereby, the effect
  • the determination unit may select the predetermined criterion from the plurality of candidates according to the time-lapse state in which the nonvolatile memory is used. This brings about the effect
  • the determination unit may select the predetermined criterion from the plurality of candidates according to a predetermined identifier of the nonvolatile memory. This brings about the effect that the defect is determined based on a criterion corresponding to a predetermined identifier such as a manufacturing lot number.
  • the determination unit stores each of the number of errors in the reset operation and the set operation exceeding a predetermined reference, and the number of errors in the predetermined one exceeds a predetermined reference.
  • the unit may be determined as a storage unit suspected of being defective. As a result, the number of errors in the reset operation and the set operation is independently evaluated.
  • the determination unit has a weighted addition value of the number of errors of the reset operation and the set operation exceeding a predetermined reference, and the number of errors in the predetermined one of the predetermined operation satisfies a predetermined reference.
  • the exceeding storage unit may be determined as a storage unit suspected of being defective. As a result, the evaluation is performed based on the balance according to the device characteristics of the memory.
  • the determination unit transitions the storage unit to a storage unit suspected of being defective when the number of errors in the predetermined one is in a certain state not exceeding the predetermined reference. It may be determined that there is a possibility. This brings about the effect of notifying that the state is in the near side of becoming defective.
  • the determination unit processes an erasure request for erasing all bits of the storage unit, the number of errors in the predetermined one exceeds a reference lower than the predetermined reference. In such a case, it may be determined that the storage unit is suspected of being defective. As a result, the erase request for erasing all the bits in the storage unit can be easily determined as defective.
  • a storage unit in which the number of errors in a predetermined one of a reset operation or a set operation with respect to a memory cell of a nonvolatile memory and the memory cell exceeds a predetermined reference is suspected of being defective.
  • a determination unit that determines a certain storage unit brings about the effect that the storage unit that is suspected of being defective is determined in consideration of the difference in the nature of the error depending on the storage state of the memory cell in the storage device.
  • a counter for counting the number of errors in the reset operation and the set operation may be further provided. Thereby, the number of errors is counted in the storage device and used for defect determination.
  • the present technology it is possible to obtain an excellent effect that a defective cell in a memory can be detected in consideration of a difference in error characteristics depending on a storage state.
  • the effects described here are not necessarily limited, and may be any of the effects described in the present disclosure.
  • FIG. 3 is a diagram for explaining a drive voltage of a memory cell 330 according to an embodiment of the present technology.
  • FIG. It is a figure showing an example of functional composition of an information processing system in a 1st embodiment of this art.
  • 5 is a flowchart illustrating an example of a read operation of the storage control device 200 according to the embodiment of the present technology.
  • 5 is a flowchart illustrating an example of a write operation of the storage control device 200 according to the embodiment of the present technology.
  • 3 is a flowchart illustrating an example of an error processing operation of the storage control device 200 according to the first embodiment of the present technology.
  • 12 is a flowchart illustrating an operation example of a reading process of the memory 300 according to the embodiment of the present technology.
  • FIG. 5 is a flowchart illustrating an operation example of a read process of the memory 300 according to the first embodiment of the present technology.
  • 12 is a flowchart illustrating an operation example of a setting operation (step S975) of the memory 300 according to the embodiment of the present technology.
  • 14 is a flowchart illustrating an operation example of a reset operation (step S977) of the memory 300 according to the embodiment of the present technology.
  • It is a flowchart which shows the operation example of the bad page finalization process of the storage control apparatus 200 in embodiment of this technique. It is a figure showing an example of functional composition of an information processing system in a 2nd embodiment of this art.
  • 12 is a flowchart illustrating an example of an error processing operation of the storage control device 200 according to the second embodiment of the present technology.
  • 12 is a flowchart illustrating an operation example of a read process of the memory 300 according to the second embodiment of the present technology.
  • FIG. 1 is a diagram illustrating a configuration example of an information processing system according to an embodiment of the present technology.
  • the information processing system includes a host computer 100, a storage control device 200, and a memory 300.
  • the host computer 100 is a device that executes each process in the information processing system.
  • the memory 300 is a memory that stores data necessary for processing of the host computer 100. As the memory 300, a nonvolatile memory is assumed.
  • the memory 300 stores an error correcting code (ECC) together with data to improve data retention characteristics.
  • ECC error correcting code
  • the storage control device 200 is connected between the host computer 100 and the memory 300, and controls the memory 300 in response to a request from the host computer 100.
  • the error correction code also includes an error (error) detection function, and may be referred to as an error detection code, an error detection code, an error detection code, or the like.
  • the storage control device 200 includes a host interface 210, a memory interface 230, a control unit 240, a ROM 250, a RAM 260, and an ECC processing unit 270. These are connected to each other via a bus 290.
  • the host interface 210 is an interface circuit that performs communication with the host computer 100.
  • the memory interface 230 is an interface circuit that performs communication with the memory 300.
  • the control unit 240 is a processing device that executes various processes in the storage control device 200.
  • the ROM 250 is a read-only memory that stores programs executed in the control unit 240 and parameters necessary for the execution.
  • the RAM 260 is a memory that stores a work area necessary for processing in the control unit 240.
  • the ECC processing unit 270 performs processing related to an error correction code stored in the memory 300. As will be described later, the ECC processing unit 270 includes a function of generating an error correction code and a function of performing error correction from data read from the memory 300 and the error correction code.
  • the access space of the memory 300 is managed by dividing it into fixed-length physical pages. Each physical page of memory 300 is mapped to a logical page.
  • the host computer 100 is basically accessed by a logical address. In the following, it is assumed that the data size of the logical page is 256 bytes, and 256 bytes of data and 16 bytes of error correction code are stored in the physical page. However, these sizes are examples, and the present technology is not limited to this.
  • FIG. 2 is a diagram illustrating a schematic example of a memory map of the RAM 260 according to the embodiment of the present technology.
  • the RAM 260 stores an empty page table 261, an address conversion table 262, a data buffer 263, a logical page image area 266, and a physical page image area 267.
  • a program executed in the control unit 240 and an area used for the execution are also secured in the RAM 260.
  • the free page table 261 is a table for managing the usage status of physical pages in the memory 300.
  • this free page table 261 as will be described later, the usage status of the physical page corresponding to each physical page address is held.
  • the address conversion table 262 is a table for converting a logical address supplied from the host computer 100 into a physical page address of the memory 300. In the address conversion table 262, as will be described later, a physical page address corresponding to each logical page address is held.
  • the data buffer 263 is a buffer for holding write data from the host computer 100 to the memory 300. In this embodiment, it is assumed that at least data equal to the maximum size of the write data constituting the write command instructed from the host computer 100 is held.
  • the logical page image area 266 is an area for holding an image of a logical page grasped from the host computer 100.
  • the physical page image area 267 is an area for holding an image of a physical page on the memory 300 side.
  • the logical page image area 266 is an area of 256 bytes that is the same as the size of the logical page
  • the physical page image area 267 is an area of 272 bytes that is the same as the size of the physical page.
  • the two types of tables are stored at predetermined positions in the memory 300 while the power is turned off.
  • the storage control device 200 reads these two types of tables from a predetermined position and temporarily stores them in the RAM 260 in the initialization process when the power is turned on.
  • the storage control device 200 receives a power-off notice from the host computer 100, it writes these two types of tables in a predetermined location in the memory 300.
  • a process of writing these two types of tables into the memory 300 is performed at every milestone such as a fixed time elapse or a fixed number of processes.
  • FIG. 3 is a diagram illustrating a configuration example of the memory 300 according to the embodiment of the present technology.
  • the memory 300 includes a control interface 310, a word line decoder 320, a memory cell 330, a bit line selector 340, a driver 350, an OTP memory 360, and a control unit 380. These are connected to each other via a bus 390.
  • the control interface 310 is an interface circuit that exchanges data with the storage control device 200.
  • the control interface 310 inputs information and data transferred from the storage control device 200 and outputs information and data transferred to the storage control device 200.
  • the memory cell 330 is a storage element, and a nonvolatile memory is assumed here.
  • the memory cell 330 has a structure in which single memory cells for recording 1-bit data are two-dimensionally arranged. For example, it is configured by arranging 272 bytes of single memory cells of a physical page in the horizontal direction along the physical page address in the vertical direction.
  • the word line decoder 320 decodes the physical page address input from the control interface 310 and drives one word line corresponding to the physical page.
  • One word line is wired between the word line decoder 320 and the memory cell 330 for every physical page. That is, the physical page address and the word line have a one-to-one correspondence.
  • the physical page corresponding to the word line driven in memory cell 330 becomes active.
  • the bit line selector 340 is a buffer having the same size as the physical page of the memory cell 330.
  • the bit line selector 340 exchanges data with the physical page that has become active in the memory cell 330.
  • the driver 350 is a driver that supplies a bit line voltage to the bit line selector 340 and also supplies a plate voltage to the bit line selector 340 and the memory cell 330. That is, the driver 350 supplies a drive voltage between the plate and the bit line.
  • the OTP (One Time Programming) memory 360 is a memory that stores a startup program (bootstrap program) of the control unit 380 and parameters necessary for the operation of the control unit 380.
  • the OTP memory 360 is realized by an antifuse or the like, and is recorded at a manufacturing factory when the memory 300 is shipped, for example. In this embodiment, two types of threshold values (TH_PASS and TH_BAD_PAGE) described later are recorded, and reading from the OTP memory 360 is performed when the memory 300 is activated.
  • the control unit 380 controls the entire memory 300.
  • the control unit 380 supplies the physical page address transferred to the control interface 310 to the word line decoder 320 and activates the designated physical page on the memory cell 330.
  • the control unit 380 creates mask data used in the set operation and the reset operation from the data read from the designated physical page and the write data.
  • the control unit 380 supplies mask data to the bit line selector 340 and operates the driver 350 and the bit line selector 340 to apply a voltage bias in the set operation and the reset operation to the active physical page. Thus, writing is performed on the active physical page.
  • the control unit 380 When the instruction from the storage control device 200 is read, the control unit 380 inputs the physical page address transferred to the control interface 310 to the word line decoder 320, and sets the designated physical page on the memory cell 330 as active. To do. Further, the control unit 380 operates the driver 350 and the bit line selector 340 to apply a voltage bias in the read operation to the active physical page. As a result, the active physical page is read and supplied to the bit line selector 340. The control unit 380 supplies the data read to the bit line selector 340 to the control interface 310 and transfers the data to the storage controller 200 via the control interface 310.
  • the logical address specified by the host computer 100 and the logical page address handled in the storage controller 200 are described by a hexadecimal description method starting with “0x”, and the physical page address is expressed in decimal. Describe in.
  • FIG. 4 is a diagram illustrating an example of a page structure in the memory 300 according to the embodiment of the present technology.
  • the size of the physical page stored in the memory cell 330 is 272 bytes.
  • the 272 bytes of physical page is converted into 256 bytes of data and 16 bytes of parity. use.
  • FIG. 5 is a diagram illustrating a configuration example of the empty page table 261 according to the embodiment of the present technology.
  • This empty page table 261 holds the usage status of the physical page corresponding to each physical page address.
  • Each entry (row) of the empty page table 261 is composed of two elements, “physical page address” and “usage status”.
  • the “usage status” mainly indicates a state relating to use in which a physical page in the memory cell 330 is not used (can be used) or is used (in use).
  • this “usage” it is not recommended that this “usage” be used after a write error has occurred (write error has occurred), a bad page error has occurred (defective page has occurred), or a bad page ( Indicates a status related to an error such as (unusable) A page determined to have a bad page is in an observable state, and it is necessary to determine whether it can be subsequently used or cannot be used.
  • the entries are arranged in ascending order of the numerical value of “physical page address”.
  • the number of entries registered in the free page table 261 is equal to the number of physical pages included in the memory cell 330 in the memory 300.
  • the numerical value of “physical page address” in the empty page table 261 is a numerical value starting from 0 and increasing by 1, and can be easily calculated from the entry number. Therefore, it is also possible to delete the “physical page address” from the entry item and make the entry component only “usage status”.
  • FIG. 6 is a diagram illustrating a configuration example of the address conversion table 262 according to the embodiment of the present technology.
  • This address conversion table 262 holds a physical page address corresponding to each logical page address.
  • this address conversion table 262 shows the correspondence between the logical addresses used with the host computer 100 and the physical page addresses used in the storage controller 200 and the memory 300.
  • logical addresses designated by the host computer 100 are managed in units of logical page addresses.
  • the logical page and the physical page have a one-to-one relationship, and one physical page is allocated to one logical page.
  • the size of the logical page is 256 bytes, which is equal to 256 bytes, which is the sum of the data in the physical page.
  • the quotient obtained by dividing the logical address designated by the host computer 100 by the logical page size is the logical page address.
  • the offset address is always 0.
  • Each entry of the address conversion table 262 is constituted by three elements of “logical page address”, “allocation status”, and “physical page address”. Whether the physical page is allocated to the logical page indicated by “logical page address” in each entry (“allocated”) or not (“unallocated”) is indicated in “allocation status”. Then, for a logical page whose “allocation status” is “allocated”, the address of the corresponding physical page is indicated in “physical page address”.
  • the entries are arranged in ascending order of the numerical value of “logical page address”.
  • the number of entries registered in the address conversion table 262 is obtained by dividing the size (in bytes) of the logical address space that the storage controller 200 discloses to the host computer 100 by 256 bytes, which is the size of the logical page. Is equal to the quotient
  • the number of entries registered in the address conversion table 262 is smaller than the number of physical pages provided in the memory cell 330 in the memory 300. As shown in the explanation of the free page table 261, the number of physical pages has a sufficient margin with respect to the number of logical pages because the physical page may be disabled due to an error or the like. Because it is.
  • the numerical value of the “logical page address” in the address conversion table 262 is a numerical value starting from 0 and incrementing by 1, and can be easily calculated from the entry number. Therefore, it is also possible to delete the “logical page address” from the entry item, and make the entry components “allocation status” and “physical page address”.
  • FIG. 7 is a diagram illustrating an internal configuration example of the memory 300 according to the embodiment of the present technology.
  • the memory block 301 includes a word line decoder 320, a memory cell 330, a bit line selector 340, and a driver 350.
  • the memory cell 330 has an access transistor and a variable resistance element at the intersections of a plurality of word lines (WL: Word Lines) and a plurality of bit lines (BL: Bit Lines), respectively.
  • the memory cell 330 includes a number of word lines equal to the number of physical page addresses, a number of bit lines equal to the number of bits of the physical page size, and a plate terminal.
  • the word line is connected to the word line decoder 320.
  • the bit line is connected to the bit line selector 340.
  • the plate terminal is connected to the plate voltage output of the driver 350.
  • the variable resistance element of the memory cell 330 records 1-bit information in two states, a high resistance state (HRS: High Resistive State) and a low resistance state (LRS: Low Resistive State).
  • HRS High Resistive State
  • LRS Low Resistive State
  • the association between each state and the logical value is arbitrary, but in the following, it is defined that the logical value “1” is expressed using the low resistance state and the logical value “0” is expressed using the high resistance state.
  • an operation for performing a transition between two states is referred to as a bit inversion operation.
  • the bit inversion operation consists of two types, a set operation and a reset operation.
  • the bit in the high resistance state is transitioned to the low resistance state by the set operation, and the bit in the low resistance state is transitioned to the high resistance state by the reset operation. That is, the bit having the logical value “0” is changed to the logical value “1” by the set operation, and the bit having the logical value “1” is changed to the logical value “0” by the reset operation.
  • the set operation and the reset operation are performed in order, but the order may be any first.
  • the word line decoder 320 receives the word line designation from the control unit 380 and controls the word line of the memory cell 330. That is, the word line decoder 320 has a function of driving a word line designated by the control unit 380 with a logical value “H” and driving other word lines with a logical value “L”. When the word line designation is not performed or when the word line designation is canceled, the word line decoder 320 drives all the word lines with the logical value “L”.
  • the bit line selector 340 exchanges read data read from the memory cell 330 and write data for writing with the control unit 380.
  • the bit line selector 340 receives a voltage for driving the bit line from the driver 350.
  • the bit line selector 340 has two functions when roughly divided. First, the bit line selector 340 functions as a sense amplifier when the memory cell 330 is read. Specifically, the bit line selector 340 determines whether the selected variable resistance element is in the low resistance state or the high resistance state by measuring the amount of current flowing through the bit line, and determines each bit. A logical value “0” or “1” for the line is determined. The determined logical value is output to the control unit 380.
  • the bit line selector 340 has a function of selecting a drive voltage for each bit line based on designation by the control unit 380 when the memory cell 330 is written. Specifically, the bit line selector 340 selectively supplies either a plate voltage or a bit line voltage supplied from the driver 350 to each bit line.
  • FIG. 8 is a diagram illustrating an example of the structure of the memory cell 330 according to the embodiment of the present technology.
  • a cross section along one word line WL_0 is schematically shown, but the other word lines have the same structure. Only the first 8 bit lines are shown.
  • a field effect transistor (FET) 332 that is an access transistor and a variable resistance element 331 are connected.
  • the word line WL_0 is connected to the gate terminals of the eight FETs 332, and the eight bit lines (BL_0 to BL_7) are connected to the drain terminals of the corresponding FETs 332, respectively.
  • the source terminals of the eight FETs are connected to the plate 333 via variable resistance elements 331, respectively.
  • FIG. 9 is a diagram for explaining the drive voltage of the memory cell 330 in the embodiment of the present technology.
  • As an operation for the variable resistance element 331 of the memory cell 330 there is a read operation for reading the state of the variable resistance element 331 in addition to the above-described setting operation and resetting operation. In these three operations, that is, the read operation, the set operation, and the reset operation, the drive voltage between the plate 333 and the bit line BL_0 is different.
  • the voltage bias is set so that the plate 333 has a potential of “+ Vset” with respect to the bit line.
  • the voltage bias is set so that the bit line has a potential of “+ Vreset” with respect to the plate 333.
  • the voltage bias is set so that the bit line has a voltage of “+ Vread” with respect to the plate 333.
  • FIG. 10 is a diagram illustrating a functional configuration example of the information processing system according to the first embodiment of the present technology.
  • the memory 300 includes an error detection unit 381 and an error page determination unit 384.
  • the storage control device 200 includes a page management unit 245.
  • the error detection unit 381 detects an error that has occurred in a physical page of the memory 300 and counts the number of errors (number of bits) that have occurred in the physical page.
  • the error detection unit 381 includes a reset error counter 382 and a set error counter 383.
  • the reset error counter 382 is a counter that counts the number of errors generated in the reset operation as the number of reset errors.
  • the set error counter 383 is a counter that counts the number of errors generated in the set operation as the number of set errors.
  • the error page determination unit 384 determines an error occurrence state in units of pages based on the number of errors detected by the error detection unit 381. For example, if the total value of the number of reset errors and the number of set errors is less than a threshold value (TH_PASS), it is determined that no error has occurred. On the other hand, when the total number of reset errors and set errors is equal to or greater than a threshold (TH_PASS), if the number of reset errors is equal to or greater than the threshold (TH_BAD_PAGE), it is determined that a defective page error has occurred.
  • TH_PASS threshold value
  • TH_BAD_PAGE if the number of reset errors is equal to or greater than the threshold
  • the error page determination unit 384 is an example of a determination unit described in the claims.
  • the page management unit 245 manages the empty page table 261.
  • the page management unit 245 stores “bad page occurrence” in the usage status of the free page table 261 of the corresponding physical page.
  • “write error occurrence” is stored in the usage status of the free page table 261 of the corresponding physical page.
  • the page management unit 245 is an example of a management unit described in the claims.
  • the page management unit 245 reconfirms a physical page having the attribute of “bad page occurrence” when the number of entries recorded as “bad page occurrence” in the empty page table 261 exceeds a certain number. For example, when writing is performed on a physical page having the attribute of “bad page occurrence” and, as a result, the occurrence of a bad page error is notified from the memory 300, the usage status of the free page table 261 of the physical page is set to “ "Unusable” is memorized. On the other hand, when the occurrence of the bad page error is not notified from the memory 300, “usable” is stored in the usage status of the free page table 261 of the physical page.
  • a physical page having the attribute of “bad page occurrence” is reconfirmed and a page in which a bad page error has occurred is determined to be “unusable”.
  • the generated page may be “unusable”.
  • FIG. 11 is a flowchart illustrating an example of a read operation of the storage control device 200 according to the embodiment of the present technology.
  • a read command issued from the host computer 100 is input to the storage controller 200 via the host interface 210.
  • the read command includes a “read address” and a “read data size”.
  • “Read address” is a logical address of data to be read.
  • the position indicated by the read address is limited to the top of the logical page.
  • the read data size is limited to a multiple of the logical page size.
  • the control unit 240 divides the “read address” and “read data size” constituting the read command into logical page units (step S911).
  • step S912 it is determined whether or not the unprocessed read process remains among the logical page units divided in step S911 (step S912). If there is no remaining logical page read process (step S912: No), the host computer 100 is notified of the completion of the read command process, and the read operation is terminated (step S922).
  • step S912 when the reading process in units of logical pages remains (step S912: Yes), one is selected from the remaining reading processes in units of logical pages (step S913).
  • the logical page addresses are selected in ascending order. Then, information on the logical page corresponding to the read processing in units of the selected logical page is acquired from the address conversion table 262 (step S914).
  • step S915 it is confirmed whether or not a physical page is allocated to the logical page to be processed. That is, if the “allocation status” is “unallocated”, the process proceeds to step S919, and if it is “allocated”, the process proceeds to step S916.
  • step S915 When the “allocation status” is “unallocated” (step S915: No), the physical page for the logical page to be read is not allocated, and data to be notified to the host computer 100 is prepared ( Step S919). Specifically, the logical page image area 266 is cleared to zero.
  • initialization may be performed using periodic data such as “0x00” and “0xFF” or predetermined specific data. In this example, initialization is performed every time step S919 is performed, but a special area for initialization is prepared in the RAM 260 when power is turned on, and physical pages are allocated. It is also possible to notify special area data when there is a read to a non-logical page.
  • step S915 If the “allocation status” is “allocated” (step S915: Yes), data corresponding to the logical page is read (step S916).
  • the physical page address at this time is the “physical page address” read from the address conversion table 262 in step S914.
  • the storage control device 200 notifies the memory 300 of a read instruction and a physical page address as a read request.
  • the memory 300 reads the content of the physical page corresponding to the designated physical page address and transfers it to the storage controller 200.
  • the storage controller 200 stores the physical page data transferred from the memory 300 in the physical page image area 267.
  • the ECC processing unit 270 performs error correction (step S917).
  • the ECC processing unit 270 is given the start address of the physical page image area 267 and an error correction instruction.
  • the ECC processing unit 270 reads out 272 bytes from the top address of the physical page image area 267, interprets it as a 16-byte parity added to 256-byte user data, and performs error correction processing. Then, the result is written back to the same position in the physical page image area 267.
  • control unit 240 extracts data from the physical page image area 267 and transfers it to the logical page image area 266 (step S918). Specifically, 256 bytes are read from the top of the physical page image area 267 and transferred to the logical page image area 266.
  • step S918 or S919 the data in the logical page image area 266 is transferred to the host computer 100 (step S921). That is, “logical page” transfer is performed from the top position of the logical page image area 266. Thereafter, the processing from step S912 is repeated.
  • data copying is performed in the data extraction process (step S918) and the transfer process to the host computer 100 (step S921).
  • the data may be directly transferred from the physical page image area 267. Good.
  • FIG. 12 is a flowchart showing a write operation example of the storage control device 200 according to the embodiment of the present technology.
  • a write command instructed from the host computer 100 is input to the storage controller 200 via the host interface 210.
  • the write command is composed of “write address”, “write data size”, and “write data”.
  • “write data” is temporarily stored in the data buffer 263 of the RAM 260.
  • the “write address” is a logical address of data to be written.
  • the position indicated by the write address is limited to the top of the logical page.
  • the write data size is limited to a multiple of the logical page size.
  • the control unit 240 divides the “write address” and “write data size” constituting the write command into logical page units as described above (step S931). In addition, the control unit 240 calculates all the top addresses of the respective areas decomposed for each logical page for the write data given from the host computer 100 and temporarily stored in the data buffer 263. The following processes after step S932 are repeated for the logical page units divided at step S931.
  • step S931 it is determined whether or not the unprocessed write process still remains (step S932). If there is no logical page unit write process remaining (step S932: No), the host computer 100 is notified of the end of the write command process, and the write operation is ended (step S945).
  • step S933 when the logical page unit write process remains (step S932: Yes), one is selected from the remaining logical page unit write processes (step S933).
  • the logical page addresses are selected in ascending order. Then, the information of the logical page corresponding to the read processing of the selected logical page unit is acquired from the address conversion table 262 (step S934).
  • step S935 it is confirmed whether or not a physical page is allocated to the logical page to be processed. That is, when the “allocation status” is “allocated” (step S935: Yes), the process proceeds to step S938, and when it is “unallocated” (step S935: No), the process proceeds to step S936.
  • step S936 If the “allocation status” is “unallocated”, an available physical page is secured based on the free page table 261 (step S936). Specifically, an entry whose “usage status” is “available” or “write error occurred” is searched, and a value of “in use” is substituted into the “usage status”. As described above, when the “usage status” indicates “write error occurred”, it means that a write error has occurred in the previous write to the physical page, but since a write error occurs with a certain probability, There is a possibility that writing can be performed without problems in the next writing. Although there is a method of selecting an entry of “write error occurred” after the entries indicating “available” are exhausted, the description is omitted here.
  • Step S937 When a physical page is secured, “allocation status” is set to “allocated” in the corresponding entry of the address conversion table 262, and the secured physical page address is set to “physical page address”. (Step S937). If there is no available physical page in the free page table 261, processing such as notifying the host computer 100 to that effect is performed, but the description is omitted here.
  • step S938 the data in the data buffer 263 is transferred to the logical page image area 266 (step S938). Specifically, 256 bytes for the logical page are transferred to the logical page image area 266 from the top address of each area obtained by dividing the write data temporarily stored in the data buffer 263 for each logical page. Note that the start address of each area is the one calculated in step S931.
  • the physical page image area 267 is formed based on the logical page image area 266 prepared by the processing so far (step S941). Specifically, 256 bytes are read from the top of the logical page image area 266 and transferred to the physical page image area 267.
  • the ECC processing unit 270 performs error correction code generation processing (step S942). At that time, the ECC processing unit 270 is given a head address of the physical page image area 267 and an instruction to generate an error correction code (parity). The ECC processing unit 270 reads 256 bytes from the top of the physical page image area 267, calculates a 16-byte parity, writes back to the physical page image area 267, and completes the physical page image area 267.
  • parity error correction code
  • step S943 The contents of the physical page image area 267 completed in this way are written into the memory 300 (step S943).
  • the control unit 240 outputs the write instruction and the physical page address as a write request to the memory 300 via the memory interface 230.
  • the physical page address is the address of the physical page read in step S934 or the physical page newly allocated in step S936.
  • the memory 300 writes the received write data to the physical page specified by the physical page address. After writing the write data, the following error processing is performed (step S950).
  • FIG. 13 is a flowchart illustrating an operation example of error processing of the storage control device 200 according to the first embodiment of the present technology.
  • the control unit 240 waits for the end of the write operation in the memory 300, and acquires the post-execution status as the return value (step S951). Then, the control unit 240 confirms whether or not the return value is “write error” (step S952).
  • step S952 When the return value is “write error” (step S952: Yes), the control unit 240 writes the value of “write error occurred” to the entry corresponding to the corresponding physical page in the empty page table 261 (step S954). ).
  • step S952 If the return value is not “write error” (step S952: No), the control unit 240 checks whether or not the return value is “bad page error” (step S953). If the return value is not “bad page error” (step S953: No), the error process is terminated, and the processes after step S932 are repeated.
  • step S953: Yes When the return value is “bad page error” (step S953: Yes), the control unit 240 writes the value of “bad page occurrence” to the entry corresponding to the corresponding physical page in the empty page table 261 (step S953: Yes). S955).
  • step S956 After the occurrence of an error is written in the free page table 261 in step S954 or S955, the control unit 240 secures an available physical page based on the free page table 261 (step S956).
  • “allocation status” is set to “allocated”, and the reserved physical page address is set to “physical page address” (step S957).
  • the contents of the physical page image area 267 are written into the memory 300 (step S958).
  • steps S956 to S958 are the same as the processes in steps S936, S937, and S943.
  • FIG. 14 is a flowchart illustrating an operation example of the reading process of the memory 300 according to the embodiment of the present technology.
  • the word line number WL_0 is designated as a physical page address which is a component of a read request from the storage control device 200 to the memory 300.
  • control unit 380 acquires a physical page address that is a component of the read request from the control interface 310 (step S961).
  • the word line number WL_0 is acquired as the physical page address.
  • the control unit 380 instructs the driver 350 to generate a voltage bias in the read operation (step S962). Specifically, the setting is performed so that the bit line voltage is “+ Vread” with respect to the plate voltage.
  • the plate 333 of the memory cell 330 is driven by the plate voltage supplied from the driver 350.
  • the control unit 380 instructs the bit line selector 340 to drive all the bit lines with the bit line voltage (step S963).
  • the bit line selector 340 supplies the bit line voltage supplied from the driver 350 to all the bit lines in accordance with an instruction from the control unit 380.
  • the control unit 380 sets the physical page address (word line number WL_0) specified in the read request in the word line decoder 320 and instructs the bit line selector 340 to start a read operation (step S964).
  • the word line decoder 320 drives the word line (WL_0) corresponding to the designated physical page address (word line number WL_0) with a logical value “H”.
  • the access transistor connected to WL_0 becomes conductive, and the voltage bias in the read operation generated by the driver 350 is applied to the variable resistance element. Therefore, a current corresponding to the high resistance state or the low resistance state of each element flows into the bit line selector 340 through the bit line.
  • the bit line selector 340 determines the logic “0” or “1” corresponding to each variable resistance element by measuring the amount of current that flows. As a result, the logical state of the variable resistance element connected to the designated physical page address (WL_0) is read by the bit line selector 340.
  • the control unit 380 instructs the bit line selector 340 to stop the reading operation (step S966). That is, the setting of the physical page address for the word line decoder 320 is canceled, the bit line drive instruction for the bit line selector 340 is canceled, and the driver 350 is instructed to stop generating the voltage bias.
  • the read completion timing may be determined by a clock included in the control unit 380 or the like, or may be determined by confirming that a sufficient amount of current has been secured in the bit line selector 340. However, detailed description is omitted here.
  • the control unit 380 instructs the control interface 310 to output the data read by the bit line selector 340 (step S967). Then, the control unit 380 instructs the control interface 310 to notify the storage controller 200 of the read data (step S968).
  • FIG. 15 is a flowchart illustrating an operation example of the writing process of the memory 300 according to the first embodiment of the present technology.
  • WL_0 is designated as the physical page address that is a component of the write request from the storage control device 200 to the memory 300
  • the value “6” (“00000110” in binary notation) is designated as the data to be written. Is assumed.
  • the control unit 380 acquires the physical page address, which is a component of the write request, and the data to be written from the control interface 310 (step S971).
  • WL_0 is acquired as the physical page address.
  • the control unit 380 performs the processing of steps S962 to S966 described with reference to FIG. 14, and reads the value currently recorded in the bit corresponding to the designated physical page address (WL_0) (step S972).
  • the control unit 380 accesses the bit line selector 340 and acquires data read from the memory cell 330 (step S973).
  • the control unit 380 compares the data read from the memory cell 330 with the write data to be written, and determines a bit to be set and a bit to be reset (step S974). That is, in this step, the control unit 380 generates a binary representation number “00000100” in which the value “1” is assigned only to BL_2 as a bit pattern (set mask) to be set. Further, a binary expression number “00000001” is generated by assigning the value “1” only to BL_0 as a bit pattern (reset mask) to be reset.
  • control unit 380 performs a setting operation (step S975).
  • the execution processing procedure of this set operation will be described later.
  • the control unit 380 compares the read data with a bit pattern (set mask) to be set.
  • the number of bits that have not been normally set is counted and temporarily stored as the set error number (step S976). Further, the set mask is corrected so that only the bits that have not been normally set remain in the set mask.
  • control unit 380 performs a reset operation (step S977).
  • the execution processing procedure of this reset operation will be described later.
  • the control unit 380 compares the read data with a bit pattern (reset mask) to be reset.
  • the number of bits for which the reset operation has not been normally performed is counted and temporarily held as the reset error number (step S978).
  • the reset mask is corrected so that only bits for which the reset operation has not been normally performed remain in the reset mask.
  • the control unit 380 calculates the sum (total value) of the number of set errors generated in step S976 and the number of reset errors generated in step S978, and checks whether this value is less than a preset threshold value (TH_PASS). (Step S979). When the sum value is less than the threshold (step S979: Yes), the storage controller 200 is notified via the control interface 310 that the write command has been normally completed (step S983). In this case, the write operation is terminated normally because the sum of the set error number and the reset error number is less than the threshold value (TH_PASS) after three or less write attempts.
  • TH_PASS preset threshold value
  • TH_PASS threshold value
  • step S979: No the control unit 380 checks whether or not the passage of this loop is the third time (step S981). When the loop passes the first time or the second time (step S981: No), the process returns to step S975 and is repeated. If the loop passes for the third time (step S981: Yes), the criteria could not be satisfied even after three write attempts, so no further write attempts are made and the process proceeds to step S982.
  • the control unit 380 compares the number of reset errors generated in step S978 with a preset threshold value (TH_BAD_PAGE) (step S982). If the number of reset errors is less than the threshold value (step S982: No), it is determined that it is a simple write error, and the storage controller 200 is notified via the control interface 310 that a write error has occurred (step S985). In this case, three write attempts were made, but the sum of the set error count and the reset error count was equal to or greater than the threshold (TH_PASS), and the reset error count was less than the threshold (TH_BAD_PAGE), which is a write error. However, it is determined that the physical page is not defective.
  • TH_BAD_PAGE a preset threshold value
  • step S982 if the number of reset errors is equal to or greater than the threshold (step S982: Yes), it is determined that the page indicated by the corresponding physical page address is defective, and storage control is performed via the control interface 310 to indicate that a defective page has occurred.
  • the apparatus 200 is notified (step S984). In this case, three write attempts have been made, and the total number of set errors and reset errors is equal to or greater than a threshold (TH_PASS), and the number of reset errors is equal to or greater than a threshold (TH_BAD_PAGE). Judged to be a bad page.
  • TH_PASS threshold
  • TH_BAD_PAGE the number of reset errors is equal to or greater than a threshold
  • FIG. 16 is a flowchart illustrating an operation example of the setting operation (step S975) of the memory 300 according to the embodiment of the present technology.
  • the control unit 380 instructs the driver 350 to generate a voltage bias in the set operation (step S811). Specifically, the setting is performed so that the plate voltage becomes “+ Vset” with respect to the bit line voltage. The plate of the memory cell 330 is driven by the plate voltage supplied from the driver 350.
  • the control unit 380 gives a cell pattern to be set to the bit line selector 340, the bit line corresponding to the value “1” is a bit line voltage, and the bit line corresponding to the value “0” is a plate voltage.
  • An instruction is given to drive (step S812).
  • the bit line selector 340 supplies the bit line voltage or plate voltage supplied from the driver 350 in accordance with an instruction from the control unit 380.
  • the cell pattern to be set when step S812 is executed for the first time is the set mask “00000100” generated in step S974. That is, only BL_2 is driven with a bit line voltage, and the other bit lines (BL_7 to BL_3, BL_1, BL_0) are driven with a plate voltage.
  • step S812 is executed for the second and subsequent times, a set mask is used in which only the bits that are found not to have been normally set in step S976 are set to “1”.
  • the control unit 380 sets the physical page address (WL_0) designated in the write request in the word line decoder 320 (step S813).
  • the word line decoder 320 drives the word line (WL_0) corresponding to the designated physical page address (WL_0) with a logical value “H”. As a result, the access transistor connected to WL_0 becomes conductive.
  • the plate 333 of the memory cell 330 is driven by the plate voltage supplied from the driver 350, and BL_2 is driven by the bit line voltage according to the setting performed in step S812. Since this is a voltage bias necessary for the set operation, the set operation is performed on the variable resistance element connected to the intersection of WL_0 and BL_2. On the other hand, BL_7 to BL_3, BL_1, and BL_0 are driven by the plate voltage according to the setting performed in step S812. Therefore, even if the access transistor is turned on, no potential difference occurs between both ends of the variable resistance element, and bit inversion operation is performed. Is not done.
  • the control unit 380 cancels the setting of the physical page address for the word line decoder 320, cancels the bit line drive instruction for the bit line selector 340, and instructs the driver 350 to stop generating the voltage bias (step S814). Note that the timing of completion of the setting operation may be determined by a clock included in the control unit 380 or the like, but detailed description thereof is omitted here.
  • the control unit 380 performs the same process as step S972 in FIG. 15, and reads the value currently recorded in the bit corresponding to the designated physical page address (WL_0) (step S815).
  • the control unit 380 accesses the bit line selector 340 and acquires data read from the memory cell 330 (step S816).
  • FIG. 17 is a flowchart illustrating an operation example of the reset operation (step S977) of the memory 300 according to the embodiment of the present technology.
  • the control unit 380 instructs the driver 350 to generate a voltage bias in the reset operation (step S821). Specifically, the setting is performed such that the bit line voltage is “+ Vreset” with respect to the plate voltage.
  • the plate of the memory cell 330 is driven by the plate voltage supplied from the driver 350.
  • the control unit 380 gives a cell pattern to be reset to the bit line selector 340, the bit line corresponding to the value “1” is a bit line voltage, and the bit line corresponding to the value “0” is a plate voltage.
  • An instruction is given to drive (step S822).
  • the bit line selector 340 supplies the bit line voltage or the plate voltage supplied from the driver 350 in accordance with an instruction from the control unit 380.
  • step S822 when step S822 is executed for the first time, the cell pattern to be reset is the reset mask “00000001” generated in step S974. That is, only BL_0 is driven by the bit line voltage, and the other bit lines (BL_7 to BL_1) are driven by the plate voltage.
  • step S822 is executed for the second and subsequent times, a reset mask is used in which only the bits that are found not to have been reset normally in step S978 are set to “1”.
  • the control unit 380 sets the physical page address (WL_0) specified in the write request in the word line decoder 320 (step S823).
  • the word line decoder 320 drives the word line (WL_0) corresponding to the designated physical page address (WL_0) with a logical value “H”.
  • the access transistor connected to WL_0 becomes conductive.
  • the plate 333 of the memory cell 330 is driven by the plate voltage supplied from the driver 350, and BL_0 is driven by the bit line voltage according to the setting performed in step S822. Since this is a voltage bias necessary for the reset operation, the reset operation is performed on the variable resistance element connected to the intersection of WL_0 and BL_0.
  • BL_7 to BL_1 are driven by the plate voltage according to the setting performed in step S822. Therefore, even if the access transistor is turned on, no potential difference occurs between both ends of the variable resistance element, and the bit inversion operation is not performed. .
  • the control unit 380 cancels the setting of the physical page address for the word line decoder 320, cancels the bit line drive instruction for the bit line selector 340, and instructs the driver 350 to stop generating the voltage bias (step S824). Note that the timing of completion of the reset operation may be determined by a clock included in the control unit 380 or the like, but detailed description thereof is omitted here.
  • the control unit 380 performs the same process as step S972 in FIG. 15, and reads the value currently recorded in the bit corresponding to the designated physical page address (WL_0) (step S825).
  • the control unit 380 accesses the bit line selector 340 and acquires data read from the memory cell 330 (step S826).
  • FIG. 18 is a flowchart illustrating an operation example of the defective page determination process of the storage control device 200 according to the embodiment of the present technology.
  • the control unit 240 of the storage control device 200 reconfirms a physical page having the attribute of “bad page occurrence” when the number of entries recorded as “bad page occurrence” in the free page table 261 exceeds a certain number. . That is, it is determined whether the physical page is “unusable” or “reusable” and is “usable”. As the timing of this determination, the timing designated by the host computer 100 or the timing determined as free time in the storage control device 200 can be considered.
  • the control unit 240 selects one entry recorded as “bad page occurrence” in the empty page table 261 (step S831). In this embodiment, it is preferable to select one entry by a random selection method from a plurality of entries recorded as “bad page occurrence”.
  • the controller 240 sets all bits constituting the physical page image area 267 to “1” for the physical page of the entry selected in step S831 (step S832). That is, “0xFF” is filled in all 272 bytes. Thereafter, the control unit 240 writes the contents of the physical page image area 267 into the memory 300 (step S833). This writing process is the same as the process in step S943.
  • the control unit 240 waits for the end of the write operation in the memory 300, and acquires the post-execution status as the return value (step S834). Then, the control unit 240 confirms whether or not the return value is “write error” (step S835).
  • step S835 If it is a write error (step S835: Yes), this defective page determination process is terminated without changing the empty page table 261. When it is not a writing error (step S835: No), it progresses to step S836. Note that in the writing in step S833, the reset operation does not occur because all the bits of the write data are “1”. Therefore, a defective page error associated with the reset operation does not occur.
  • control unit 240 sets all bits constituting the physical page image area 267 to “0” for the physical page of the entry selected in step S831 (step S836). That is, “0x00” is filled in all 272 bytes. Thereafter, the control unit 240 writes the contents of the physical page image area 267 into the memory 300 (step S837). This writing process is the same as the process in step S943.
  • the control unit 240 waits for the end of the write operation in the memory 300, and acquires the post-execution status as the return value (step S838). Then, the control unit 240 confirms whether or not the return value is “write error” (step S839).
  • step S839: Yes If it is a write error (step S839: Yes), this defective page determination process is terminated without changing the empty page table 261. If it is not a write error (step S839: No), the control unit 240 checks whether or not the return value is a “bad page error” (step S841).
  • step S841 When it is a bad page error (step S841: Yes), the control part 240 sets "unusable” to the applicable entry of the empty page table 261 (step S842). On the other hand, when it is not a bad page error (step S841: No), the control part 240 sets "usable" to the applicable entry of the empty page table 261 (step S843).
  • step S835: Yes or step S839: Yes the corresponding physical page is maintained with the record of “bad page occurrence”. . In this case, the determination is made again in the defective page determination process to be performed in the future.
  • a procedure is used in which after all bits have written data “1”, all bits have data “0” written.
  • This is a procedure for performing a reset operation on all bits.
  • the set operation is performed on the bit of the value “0” of the corresponding physical page and “1” is written (step S833), and the reset operation is performed on all the bits of the corresponding physical page. “0” is written (step S837). That is, it is determined whether or not the page is determined to be a bad page based on the number of reset errors when a reset operation is performed on all bits of the physical page.
  • the threshold value (TH_BAD_PAGE) can be changed from the storage control device 200, it is conceivable that the threshold value is set slightly higher prior to the writing in step S837, and is returned to the original threshold value after the completion. This is because when the threshold value for detecting a defective page candidate in normal writing is compared with the threshold value for determining a defective page in the defective page determination process, a lower threshold value is used in order to make it easier to determine the former as a defective page. It is based on the idea that it should be. In other words, in this defective page determination process, it is harder to be determined as a defective page than when a defective page candidate is detected in normal writing, and it is determined whether or not it is a defective page based on a high standard.
  • the instruction “invert the value of the designated physical address and notify the number of reset errors” is given to the memory 300 twice, and the two reset error numbers notified by the two instructions are added.
  • a method of determining whether or not the page is a defective page is also conceivable.
  • the number of reset errors is counted in the memory 300, and a defective page candidate is detected based on the counted number of reset errors. It can be determined whether or not it can be used.
  • occurrence of a defective page is detected by paying attention to the number of reset errors, but similar detection may be performed paying attention to the number of set errors.
  • Second Embodiment> In the first embodiment described above, the number of reset errors is counted in the memory 300 to detect defective page candidates. On the other hand, in the second embodiment, the storage control device 200 determines a defective page.
  • the basic hardware configuration is the same as that described above, and a detailed description thereof will be omitted.
  • FIG. 19 is a diagram illustrating a functional configuration example of an information processing system according to the second embodiment of the present technology.
  • the basic functional configuration is the same as that of the first embodiment described above, except that the storage control device 200 includes an error page determination unit 244.
  • the number of reset errors and the number of set errors counted by the error detection unit 381 are notified from the memory 300 to the storage control device 200.
  • the error page determination unit 244 that has received the number of errors detected by the error detection unit 381 determines the state of error occurrence in units of pages based on the number of errors.
  • the determination result by the error page determination unit 244 is supplied to the page management unit 245, and the page management unit 245 reflects the determination result in the empty page table 261.
  • a threshold value For example, when the total number of reset errors and set errors counted by the error detection unit 381 is equal to or greater than a threshold value (TH_PASS), the fact that the writing has failed and the number of reset errors and set errors are stored from the memory 300. The control device 200 is notified. When the fact that the writing has failed is notified and the last number of reset errors is equal to or greater than the threshold (TH_BAD_PAGE), the error page determination unit 244 determines that a defective page error has occurred. On the other hand, if the last reset error count is less than the threshold (TH_BAD_PAGE), the error page determination unit 244 determines that a simple write error has occurred.
  • the page management unit 245 reflects the determination result by the error page determination unit 244 in the empty page table 261.
  • the error page determination unit 244 is an example of a determination unit described in the claims.
  • the page management unit 245 reconfirms a physical page having the attribute “occurrence of defective page”, as in the first embodiment. As a result, it is possible to determine whether or not subsequent use is possible for the page once the defective page is generated.
  • the basic processing procedure of the read operation and the write operation is the same as that of the first embodiment described above.
  • the error processing in step S950 in the storage control device 200 and the write request processing in the memory 300 are different from those in the first embodiment.
  • FIG. 20 is a flowchart illustrating an operation example of error processing of the storage control device 200 according to the second embodiment of the present technology.
  • the control unit 240 waits for the end of the write operation in the memory 300, and acquires the post-execution status as its return value (step S851). Then, the control unit 240 confirms whether or not the return value is “write failure” (step S852). If it is not “write failure” (step S852: No), the error processing is terminated, and the processing after step S932 is repeated.
  • step S853 the third (final) number of reset errors is compared with a threshold (TH_BAD_PAGE) (step S853).
  • a threshold T_BAD_PAGE
  • step S853: No it is determined that it is a simple write error, and the control unit 240 performs “write error occurrence” for the entry corresponding to the corresponding physical page in the empty page table 261. Is written (step S854).
  • step S853: Yes the controller 240 determines that the page is a bad page, and the control unit 240 sets “bad page error” for the entry corresponding to the physical page in the empty page table 261. The value of “occurrence” is written (step S855).
  • step S856 is the same as the process after the above-mentioned step S956.
  • the defective page and the simple write error are determined by focusing only on the third (last) reset error number, but the reset error number for three times, or the reset error number for three times and set It can also be determined using the number of errors.
  • the third (last) reset error count is less than a threshold (TH_BAD_PAGE), but if the first or second reset error count is larger than a predetermined threshold, it is determined that the page is defective.
  • the storage control device 200 can be performed independently.
  • FIG. 21 is a flowchart illustrating an operation example of the reading process of the memory 300 according to the second embodiment of the present technology.
  • the processes of steps S871 to S875, S877, S879, S881 and S883 are the same as the processes of steps S971 to S975, S977, S979, S981 and S983 described above.
  • step S875 the control unit 380 compares the read data with a bit pattern (set mask) to be set. Then, the number of bits for which the set operation has not been performed normally is counted and stored as the set error number together with the loop count (step S876). Further, the set mask is corrected so that only the bits that have not been normally set remain in the set mask.
  • step S976 the number of set errors was only temporarily stored, but in step S876, it is stored together with the number of loops. Thereby, the maximum number of set errors for three times is stored together with the number of loops.
  • step S877 the control unit 380 compares the read data with the bit pattern (reset mask) to be reset. Then, the number of bits for which the reset operation has not been normally performed is counted and stored as the number of reset errors together with the number of loops (step S878). In addition, the reset mask is corrected so that only bits for which the reset operation has not been normally performed remain in the reset mask.
  • step S978 described above the number of reset errors is only temporarily stored, but in step S878, it is stored together with the number of loops. Thereby, the maximum number of reset errors for three times is stored together with the number of loops.
  • step S881 If the loop has passed the third time (step S881: Yes), the control unit 380 notifies the storage control device 200 that the write request has failed via the control interface 310 (step S884). At this time, the control unit 380 notifies the storage controller 200 of a total of six values of the number of set errors for three times and the number of reset errors for three times via the control interface 310 (step S884).
  • the number of set errors for three times and the number of reset errors for three times are notified here, the number may be limited to the parameters used in the storage control device 200. For example, the number of reset errors or the last number of reset errors for three times may be notified.
  • the storage controller 200 can be notified of the loop count, the maximum number of set errors and the reset error for three times in Step 883.
  • the storage control device 200 that has received such information examines the number of loops and the number of set errors and reset errors for a maximum of three times, and may determine that it is a write error or a bad page error at the judgment of the storage control device 200. it can. For example, the number of errors at the third time is small because writing has succeeded in three loops, but if the number of errors at the first time and the second time is larger than a predetermined threshold, it is determined as a defective page. It is possible for the storage control device 200 to make such a determination independently.
  • the number of reset errors is counted in the memory 300, and based on this, the generation of a defective page and the availability of the page can be determined in the storage control device 200. it can.
  • the page management unit 245 is provided outside the memory 300 in the first embodiment described above, and the error page determination unit 244 is further provided outside the memory 300 in the second embodiment. did.
  • a configuration corresponding to the page management unit 245 and the error page determination unit 244 may be built in the memory 300, and the memory 300 itself may be configured to manage defective pages.
  • TH_PASS and TH_BAD_PAGE are read from the OTP memory 360 when the memory 300 is activated (steps S979 and S982), but the threshold values may be set by other methods. Good.
  • a plurality of sets of threshold values may be recorded in the OTP memory 360, and the storage control device 200 may select and use any one set.
  • three sets of two types of threshold values TH_PASS and TH_BAD_PAGE
  • the three sets of threshold values correspond to the initial, middle, or late period of the memory usage over time.
  • the storage control device 200 reads three sets of two threshold values from the memory 300 when the memory system is started up, and sets from one set to three sets according to parameters such as the total startup time and the total number of writes counted in the storage control device 200.
  • a threshold is selected and set in the memory 300.
  • a parameter that specifies any one of the three threshold groups may be set in the memory 300 without reading and setting the threshold.
  • a predetermined identifier such as a production lot number of the memory 300 may be recorded in the OTP memory 360, and the threshold value may be determined based on this.
  • a driver for handling the memory system in the host computer 100 obtains in advance information indicating a combination of a predetermined identifier and a threshold value using means such as the Internet connection.
  • the host computer 100 supplies the combination information to the storage control device 200 when the storage control device 200 is activated.
  • the storage control device 200 reads out a lot number from the memory 300 when the memory system is activated and compares it with the combination information, thereby selecting an appropriate threshold value and setting it in the memory 300.
  • the threshold (TH_PASS) is compared using the sum of the number of set errors and the number of reset errors (step S979), but both may be handled as different conditions.
  • the conditions of step S979 are “number of set errors ⁇ threshold TH_PASS_SET” and “number of reset errors ⁇ threshold TH_PASS_RESET”.
  • the control unit 380 compares the number of set errors generated in step S976 and the number of reset errors generated in step S978 with the respective threshold values TH_PASS_SET and TH_PASS_RESET.
  • step S979: Yes the process proceeds to step S983. If at least one of “the number of set errors ⁇ threshold TH_PASS_SET” or “the number of set errors ⁇ threshold TH_PASS_RESET” is not satisfied (step S979: No), the process proceeds to step S981.
  • step S979 the condition of step S979 is “number of set errors ⁇ 2 + number of set errors ⁇ threshold TH_PASS”.
  • the control unit 380 adds the number of reset errors generated in step S978 to the number obtained by doubling the number of set errors generated in step S976, and determines whether this value is less than a preset threshold value (TH_PASS). Confirmation is made (step S979). If the sum is less than the threshold (step S979: Yes), the process proceeds to step S983. If the sum is greater than or equal to the threshold (step S979: No), the process proceeds to step S981.
  • step S981 two threshold values TH_BAD_PAGE1 and TH_BAD_PAGE2 (TH_BAD_PAGE1 ⁇ TH_BAD_PAGE2) are prepared in advance. If it is determined in step S981 that the loop has passed the third time, that is, if the criteria of step S979 cannot be satisfied after three write attempts (step S981: Yes), the following processing is performed.
  • step S984 when “TH_BAD_PAGE2 ⁇ the number of reset errors” is satisfied, the storage controller 200 is notified of “bad page occurrence”. This notification is the same as in step S984.
  • “reset error number ⁇ TH_BAD_PAGE1” When “reset error number ⁇ TH_BAD_PAGE1” is satisfied, “write error” is notified. This notification is the same as in step S985.
  • “TH_BAD_PAGE1 ⁇ the number of reset errors ⁇ TH_BAD_PAGE2” is satisfied, “notice bad page” is notified to the storage control device 200. This notification is specific to this modification.
  • the storage control device 200 can perform control such as placing data with little rewrite (cold data) on the page.
  • the read data is compared with the bit pattern (set mask) to be set (step S976), and the read data is compared with the bit pattern (reset mask) to be reset. (Step S978).
  • write data can be used as follows.
  • step S976 the control unit 380 compares the read data with the write data to be written, determines the bit pattern to be set as in step S974, and updates the set mask. Further, the number of “1” s constituting the set mask is counted and temporarily stored as the set error number.
  • step S978 the control unit 380 compares the read data with the write data to be written, determines the bit pattern to be reset as in step S974, and updates the reset mask. Further, the number of “1” s constituting the reset mask is counted and temporarily stored as the number of reset errors.
  • 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.
  • Storage control including a determination unit that determines a storage unit in which the number of errors in a predetermined one of a reset operation or a set operation for a memory cell of a nonvolatile memory exceeds a predetermined reference as a storage unit suspected of being defective apparatus.
  • the determination unit suspects that a storage unit in which the total number of errors in the reset operation and the set operation exceeds a predetermined reference and the number of errors in the predetermined one exceeds a predetermined reference is defective.
  • the storage control device according to (1), wherein the storage control device is determined as a certain storage unit.
  • the determination unit is configured such that a total value of the number of errors of the reset operation and the set operation exceeds a predetermined reference a predetermined number of times, and the number of errors in the predetermined one at the end of the predetermined number of times satisfies a predetermined reference.
  • the storage control device according to (1), wherein an excess storage unit is determined as a storage unit suspected of being defective.
  • the storage control device according to (1), wherein it is determined that a write error has occurred in a storage unit.
  • the storage control device determines the storage unit suspected of being defective as an unusable storage unit.
  • the above (1) to (5) further comprising a management unit that performs reconfirmation on the storage unit determined as the storage unit suspected of being defective and manages the storage unit as unusable according to the result.
  • the storage control device according to any one of the above.
  • the management unit performs writing again for the storage unit and manages the storage unit as unusable when it is determined again as a storage unit suspected of being defective.
  • the storage control device according to 6).
  • the storage control device (11) The storage control device according to (10), wherein the determination unit selects the predetermined reference from the plurality of candidates according to a time-lapse state in which the nonvolatile memory is used. (12) The storage control device according to (10), wherein the determination unit selects the predetermined reference from the plurality of candidates according to a predetermined identifier of the nonvolatile memory. (13) The determination unit may suspect that a storage unit in which each of the number of errors in the reset operation and the set operation exceeds a predetermined reference and the number of errors in the predetermined one exceeds a predetermined reference is defective.
  • the storage control device which is determined as a certain storage unit.
  • the determination unit determines a defective storage unit in which a weighted addition value of the number of errors in the reset operation and the set operation exceeds a predetermined reference and the number of errors in the predetermined one exceeds a predetermined reference
  • the storage control device according to (1), wherein the storage unit is determined as a storage unit suspected of (15)
  • the determination unit may transition the storage unit to a storage unit suspected of being defective when the number of errors in the predetermined one is in a certain state that does not exceed the predetermined reference.
  • the storage control device determines a suspicious storage unit.
  • a memory cell of a nonvolatile memory a determination unit that determines a storage unit in which the number of errors in a predetermined one of a reset operation or a set operation for the memory cell exceeds a predetermined reference as a storage unit suspected of being defective.
  • the storage device further including a counter that counts the number of errors in the reset operation and the set operation.
  • a procedure for acquiring the number of errors in a predetermined one of a reset operation or a set operation for a memory cell of a nonvolatile memory comprising: determining a storage unit in which the number of errors in the predetermined one exceeds a predetermined reference as a storage unit suspected of being defective.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

 記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出する。 判定部は、不揮発性メモリのメモリセルについて記憶単位ごとに不良の疑いがあるか否かを判定する。不揮発性メモリに対しては、低抵抗状態(LRS:Low Resistive State)から高抵抗状態(HRS:High Resistive State)に遷移させるリセット操作、または、高抵抗状態から低抵抗状態に遷移させるセット操作が行われる。判定部は、リセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する。

Description

記憶制御装置、記憶装置、および、記憶制御方法
 本技術は、記憶装置に関する。詳しくは、記憶装置における不良ページを管理する記憶制御装置、記憶装置、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
 情報処理システムにおいては、ワークメモリとしてDRAM(Dynamic Random Access Memory)等が用いられる。このDRAMは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ(NVM:Non-Volatile Memory)が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
 従来、このような不揮発性メモリについて、メモリアクセスに伴う不良を生じたページ(不良ページ)を判定する際、書込み操作または消去操作により生じたエラーをカウントすることが行われる。例えば、書込み操作または消去操作により生じたエラー数を記憶装置からメモリコントローラに通知し、不良判断をメモリコントローラにおいて行う記憶装置が提案されている(例えば、特許文献1参照。)。
 一方、ある種の不揮発性メモリにおいては、書換えを繰り返した際のセルの摩耗によるエラーの分布が、書換え後の記憶状態によって異なる特性を示すことが知られている。例えば、低抵抗状態(LRS:Low Resistive State)から高抵抗状態(HRS:High Resistive State)に遷移させるリセット操作によるエラーが支配的なReRAMが知られている(例えば、非特許文献1参照。)。また、高抵抗状態(HRS)から低抵抗状態(LRS)に遷移させるセット操作によるエラーが支配的なReRAMも知られている(例えば、非特許文献2参照。)。
特開2005-056394号公報
Scott Sills et al.: "A Copper ReRAM Cell for Storage Class Memory Applications", 2014 Symposium on VLSI Technology Digest of Technical Papers, pp.64-65, IEEE (2014) Shuhei Tanakamaru et al.: "Hybrid Storage of ReRAM/TLC NAND Flash with RAID-5/6 for Cloud Data Centers", 2014 IEEE International Solid-State Circuits Conference, IEEE (2014)
 上述の従来技術では、LRS状態とHRS状態のエラーの性質差を考慮せずにエラービットをカウントしているため、デバイスによっては不良ページを検出できず、また、不良ではないページを不良として検出してしまうという問題が生じ得る。
 本技術はこのような状況に鑑みて生み出されたものであり、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することを目的とする。
 本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置およびその記憶制御方法である。これにより、記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、書込みエラーを発生した記憶単位から不良の疑いがある記憶単位を判定するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、上記所定回数の最後の上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、時間的に最も近い結果を用いて不良の疑いがある記憶単位を判定するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の合計値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定するようにしてもよい。これにより、不良に至っていない記憶単位については通常の書込みエラーと判定するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記不良の疑いがある記憶単位を使用不能な記憶単位として判定してもよい。また、上記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備してもよい。これにより、不良の疑いがある記憶単位について使用可能であるか否かを管理するという作用をもたらす。
 この場合において、上記管理部は、上記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について上記再確認を行うようにしてもよい。これにより、一定数ごとに記憶単位をまとめて再確認を行うという作用をもたらす。
 また、上記判定部は、上記管理部が上記再確認を行う際には、上記所定の一方におけるエラー数が上記所定の基準よりも高い基準を超えた記憶単位を上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、再確認においては不良として扱い難くなるようにするという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記所定の一方におけるエラー数の上記所定の基準を複数の候補の中から選択するようにしてもよい。これにより、条件に応じた基準により不良を判定するという作用をもたらす。
 この場合において、上記判定部は、上記不揮発性メモリが使用された経時状態に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、経時状態に応じた基準により不良を判定するという作用をもたらす。
 また、上記判定部は、上記不揮発性メモリの所定の識別子に応じて上記複数の候補の中から上記所定の基準を選択するようにしてもよい。これにより、製造ロット番号等の所定の識別子に応じた基準により不良を判定するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、リセット操作およびセット操作のエラー数を独立して評価するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記リセット操作および上記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、上記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定するようにしてもよい。これにより、メモリのデバイス特性に応じたバランスにより評価するという作用をもたらす。
 また、この第1の側面において、上記判定部は、上記所定の一方におけるエラー数が上記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定するようにしてもよい。これにより、不良となる手前の状態となっている旨を知らせるという作用をもたらす。
 また、この第1の側面において、上記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、上記所定の一方におけるエラー数が上記所定の基準よりも低い基準を超えた場合に上記不良の疑いがある記憶単位として判定するようにしてもよい。これにより、記憶単位の全てのビットを消去する消去リクエストについては不良と判定し易くするという作用をもたらす。
 また、本技術の第2の側面は、不揮発性メモリのメモリセルと、上記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部とを具備する記憶装置である。これにより、記憶装置におけるメモリセルの記憶状態によるエラーの性質差を考慮して不良の疑いがある記憶単位を判定するという作用をもたらす。
 また、この第2の側面において、上記リセット操作および上記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備してもよい。これにより、記憶装置においてエラー数を計数して不良判定に利用するという作用をもたらす。
 本技術によれば、記憶状態によるエラーの性質差を考慮して、メモリにおける不良セルを検出することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
本技術の実施の形態における情報処理システムの一構成例を示す図である。 本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。 本技術の実施の形態におけるメモリ300の一構成例を示す図である。 本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。 本技術の実施の形態における空きページテーブル261の一構成例を示す図である。 本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。 本技術の実施の形態におけるメモリ300の内部構成例を示す図である。 本技術の実施の形態におけるメモリセル330の構造の一例を示す図である。 本技術の実施の形態におけるメモリセル330のドライブ電圧を説明するための図である。 本技術の第1の実施の形態における情報処理システムの機能構成例を示す図である。 本技術の実施の形態における記憶制御装置200の読出し動作例を示す流れ図である。 本技術の実施の形態における記憶制御装置200の書込み動作例を示す流れ図である。 本技術の第1の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。 本技術の第1の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300のセット操作(ステップS975)の動作例を示す流れ図である。 本技術の実施の形態におけるメモリ300のリセット操作(ステップS977)の動作例を示す流れ図である。 本技術の実施の形態における記憶制御装置200の不良ページ確定処理の動作例を示す流れ図である。 本技術の第2の実施の形態における情報処理システムの機能構成例を示す図である。 本技術の第2の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。 本技術の第2の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。
 以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
 1.第1の実施の形態(不良ページの発生をメモリにおいて判定する例)
 2.第2の実施の形態(不良ページの発生を記憶制御装置において判定する例)
 3.変形例
 <1.第1の実施の形態>
 [情報処理システムの構成]
 図1は、本技術の実施の形態における情報処理システムの一構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、記憶制御装置200と、メモリ300とを備えている。ホストコンピュータ100は、この情報処理システムにおける各処理を実行する装置である。メモリ300は、ホストコンピュータ100の処理に必要なデータを記憶するメモリである。このメモリ300としては、不揮発性メモリを想定する。このメモリ300は、データとともにエラー訂正コード(ECC:Error Correcting Code)を記憶することにより、データ保持特性の改善を図る。記憶制御装置200は、ホストコンピュータ100とメモリ300の間に接続され、ホストコンピュータ100からのリクエストに応じてメモリ300の制御を行う装置である。なお、エラー訂正コードはエラー(誤り)検出の機能も包含しているため、誤り検出符号、エラー検出符号、エラー検出コードなどと呼称する場合もある。
 記憶制御装置200は、ホストインターフェース210と、メモリインターフェース230と、制御部240と、ROM250と、RAM260と、ECC処理部270とを備えている。これらはバス290を介して相互に接続されている。
 ホストインターフェース210は、ホストコンピュータ100との間のやりとりを行うインターフェース回路である。メモリインターフェース230は、メモリ300との間のやりとりを行うインターフェース回路である。
 制御部240は、記憶制御装置200における種々の処理を実行する処理装置である。ROM250は、制御部240において実行されるプログラムやその実行に必要なパラメータなどを記憶する読出し専用のメモリである。RAM260は、制御部240における処理に必要な作業領域を記憶するメモリである。
 ECC処理部270は、メモリ300に記憶されるエラー訂正コードに関する処理を行うものである。このECC処理部270は、後述するように、エラー訂正コードを生成する機能およびメモリ300から読み出されたデータとエラー訂正コードとからエラー訂正を行う機能を含む。
 メモリ300のアクセス空間は固定長の物理ページに区分けして管理される。メモリ300の物理ページの各々は論理ページにマッピングされる。ホストコンピュータ100からは、基本的には論理アドレスによりアクセスされる。以下では、論理ページのデータサイズを256バイトとし、物理ページには256バイトのデータおよび16バイトのエラー訂正コードが記憶されるものとする。ただし、これらのサイズは一例であり、本技術はこれに限定されるものではない。
 図2は、本技術の実施の形態におけるRAM260のメモリマップの概要例を示す図である。ここでは、RAM260には、空きページテーブル261と、アドレス変換テーブル262と、データバッファ263と、論理ページイメージ領域266と、物理ページイメージ領域267とが記憶されている。なお、制御部240において実行されるプログラムならびにその実行の際に使用される領域等もRAM260の内部に確保される。
 空きページテーブル261は、メモリ300内の物理ページの使用状況を管理するテーブルである。この空きページテーブル261では、後述するように、物理ページアドレスごとに対応する物理ページの使用状況が保持される。
 アドレス変換テーブル262は、ホストコンピュータ100から供給された論理アドレスをメモリ300の物理ページアドレスに変換するためのテーブルである。このアドレス変換テーブル262では、後述するように、論理ページアドレスごとに対応する物理ページアドレスが保持される。
 データバッファ263は、ホストコンピュータ100からメモリ300に対するライトデータを保持するためのバッファである。この実施の形態では、少なくとも、ホストコンピュータ100から指示されるライトコマンドを構成するライトデータの最大サイズと等しいデータを保持するものとする。
 論理ページイメージ領域266は、ホストコンピュータ100から把握される論理ページのイメージを保持するための領域である。物理ページイメージ領域267は、メモリ300側における物理ページのイメージを保持するための領域である。この実施の形態では、論理ページイメージ領域266は論理ページのサイズと同じ256バイトの領域であり、物理ページイメージ領域267は物理ページのサイズと同じ272バイトの領域である。
 空きページテーブル261、アドレス変換テーブル262の2種類のテーブルは、電源が断たれている間はメモリ300の予め決められた位置に記憶されている。記憶制御装置200は電源投入時の初期化処理において、予め決められた位置からこれら2種類のテーブルを読み出し、RAM260内に一時的に蓄積する。記憶制御装置200はホストコンピュータ100から電源断の予告を受けると、これら2種類のテーブルをメモリ300の予め決められた位置に書き込む。また、予期せぬ電源遮断による影響を最小限に抑えるため、一定時間経過または一定回数の処理などの節目ごとに、これら2種類のテーブルをメモリ300に書き込む処理を行う。
 図3は、本技術の実施の形態におけるメモリ300の一構成例を示す図である。このメモリ300は、制御インターフェース310と、ワードラインデコーダ320と、メモリセル330と、ビットラインセレクタ340と、ドライバ350と、OTPメモリ360と、制御部380とを備えている。これらはバス390を介して相互に接続されている。
 制御インターフェース310は、記憶制御装置200との間のやりとりを行うインターフェース回路である。この制御インターフェース310は、記憶制御装置200から転送される情報やデータの入力、および、記憶制御装置200に転送する情報やデータの出力を行う。
 メモリセル330は記憶素子であり、ここでは不揮発性メモリを想定する。このメモリセル330は、1ビットのデータを記録する単メモリセルが二次元に配列された構造を有する。例えば、水平方向に物理ページの272バイト分の単メモリセルを並べたものを、垂直方向に物理ページアドレスに沿って並べることにより構成される。
 ワードラインデコーダ320は、制御インターフェース310から入力された物理ページアドレスをデコードして、物理ページに対応する一本のワードラインをドライブする。ワードラインデコーダ320とメモリセル330の間には全ての物理ページに対して一本ずつのワードラインが配線されている。すなわち、物理ページアドレスとワードラインは1対1に対応する。メモリセル330においてドライブされたワードラインに対応する物理ページがアクティブとなる。
 ビットラインセレクタ340は、メモリセル330の物理ページと同一のサイズを持つバッファである。このビットラインセレクタ340は、メモリセル330においてアクティブとなった物理ページとの間でデータのやりとりを行う。
 ドライバ350は、ビットラインセレクタ340にビットライン電圧を供給するとともに、ビットラインセレクタ340およびメモリセル330にプレート電圧を供給するドライバである。すなわち、このドライバ350は、プレートとビットラインとの間のドライブ電圧を供給する。
 OTP(One Time Programming)メモリ360は、制御部380の起動用プログラム(ブートストラッププログラム)や、制御部380の動作に必要なパラメータを記憶するメモリである。このOTPメモリ360は、アンチヒューズ等により実現され、例えばメモリ300が出荷される際に製造工場において記録が行われる。この実施の形態においては、後述の2種類の閾値(TH_PASSおよびTH_BAD_PAGE)が記録されており、メモリ300の起動時にこのOTPメモリ360からの読出しが行われる。
 制御部380は、メモリ300の全体を制御するものである。制御部380は、記憶制御装置200からの指示がライトの場合には、制御インターフェース310に転送された物理ページアドレスをワードラインデコーダ320に供給し、メモリセル330上の指定された物理ページをアクティブにする。さらに、制御部380は、指定された物理ページから読み出したデータとライトデータからセット操作およびリセット操作で用いるマスクデータを作成する。制御部380は、マスクデータをビットラインセレクタ340に供給するとともに、ドライバ350およびビットラインセレクタ340を操作して、アクティブになっている物理ページに対しセット操作およびリセット操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページに対して書込みが行われる。
 制御部380は、記憶制御装置200からの指示がリードの場合には制御インターフェース310に転送された物理ページアドレスをワードラインデコーダ320に入力し、メモリセル330上の指定された物理ページをアクティブとする。さらに、制御部380は、ドライバ350およびビットラインセレクタ340を操作して、アクティブになっている物理ページに対してリード操作における電圧バイアスを印加する。これによりアクティブとなっている物理ページが読み出されてビットラインセレクタ340に供給される。制御部380は、ビットラインセレクタ340に読み出されたデータを制御インターフェース310に供給して、制御インターフェース310を介して記憶制御装置200へ転送する。
 なお、以下の説明では、ホストコンピュータ100から指定される論理アドレス、および、記憶制御装置200内部で扱う論理ページアドレスを"0x"で始まる16進数の記述方法で記述し、物理ページアドレスを10進数で記述する。
 [ページ構造]
 図4は、本技術の実施の形態のメモリ300におけるページ構造の一例を示す図である。同図におけるaに示すように、この実施の形態ではメモリセル330に記憶される物理ページのサイズを272バイトとしている。そして、この物理ページに256バイトのデータと16バイトのエラー訂正コード(パリティ)を記憶する場合、同図におけるbに示すように、272バイトの物理ページを256バイトのデータと16バイトのパリティとして使用する。
 [テーブル構成]
 図5は、本技術の実施の形態における空きページテーブル261の一構成例を示す図である。この空きページテーブル261は、物理ページアドレスごとに対応する物理ページの使用状況を保持している。この空きページテーブル261のそれぞれのエントリ(行)は、「物理ページアドレス」と「使用状況」の二つの要素により構成されている。
 この空きページテーブル261では、各エントリ中の「物理ページアドレス」において示される物理ページの状況が「使用状況」に示される。ここで、「使用状況」は、主に、メモリセル330における物理ページが使われていない(使用可能)、または、使われている(使用中)という使用に関する状態を示す。また、この「使用状況」は、書込みエラーが発生した(書込みエラー発生)、不良ページエラーが発生した(不良ページ発生)、不良ページであることが確定して今後も使われることが推奨されない(使用不能)といったエラーに関する状態を示す。不良ページ発生と判定されたページは要観察状態であり、その後に使用可能であるか使用不能とするかについては判断が必要になる。すなわち、書込みエラーは一定の確率で発生するため、「書込みエラー発生」という状態のページは次回以降の書込みで全く問題なく書込みが行える可能性がある。不良ページエラーは書換えを繰り返した結果のセルの摩耗による劣化の可能性のあるページにて発生するため、「不良ページ発生」という状態のページは取扱いに注意を必要とする。
 この空きページテーブル261は、各エントリを「物理ページアドレス」の数値の昇順に並べている。空きページテーブル261に登録されているエントリの数は、メモリ300内のメモリセル330が備える物理ページの数と等しい。
 なお、空きページテーブル261における「物理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「物理ページアドレス」を削除して、エントリの構成要素を「使用状況」のみとすることも可能である。
 図6は、本技術の実施の形態におけるアドレス変換テーブル262の一構成例を示す図である。このアドレス変換テーブル262は、論理ページアドレスごとに対応する物理ページアドレスを保持している。すなわち、このアドレス変換テーブル262は、ホストコンピュータ100との間で使用される論理アドレスと、記憶制御装置200およびメモリ300において使用される物理ページアドレスとの対応関係を示している。
 この実施の形態における記憶制御装置200内部では、ホストコンピュータ100から指定される論理アドレスを論理ページアドレス単位で管理している。ここで、論理ページと物理ページは1対1の関係を有しており、1つの論理ページに1つの物理ページが割り当てられる。論理ページのサイズは256バイトであり、これは物理ページ内のデータの合計である256バイトと等しい。ホストコンピュータ100から指定される論理アドレスを論理ページサイズで除した商が論理ページアドレスとなる。なお、この実施の形態では、ホストコンピュータ100が発行するライトコマンドまたはリードコマンドを構成するライトアドレスまたはリードアドレスの示す位置を論理ページの先頭に制限しているため、オフセットアドレスは常に0となる
 アドレス変換テーブル262のそれぞれのエントリは「論理ページアドレス」と、「割当状況」と、「物理ページアドレス」の3つの要素によって構成されている。各エントリ中の「論理ページアドレス」で示される論理ページに、物理ページが割り当てられている("割当済")か、否("未割当")かが「割当状況」に示される。そして、「割当状況」が"割当済"の論理ページについては、対応する物理ページのアドレスが「物理ページアドレス」に示される。
 同図の例では、「論理ページアドレス」が"0x0000-0002"のエントリでは、「割当状況」が"未割当"となっているため、「物理ページアドレス」の値に意味がない。このため、このエントリに対する「物理ページアドレス」の値は"-"を示している。
 アドレス変換テーブル262は、各エントリを「論理ページアドレス」の数値の昇順に並べている。アドレス変換テーブル262に登録されているエントリの数は、記憶制御装置200がホストコンピュータ100に対して公開している論理アドレス空間の大きさ(バイト単位)を論理ページのサイズである256バイトで除した商に等しい。
 アドレス変換テーブル262に登録されているエントリの数は、メモリ300内のメモリセル330に備えられた物理ページの数より小さい。空きページテーブル261の説明で示したように、物理ページがエラー等の理由により使用不能とされることがあるなどの理由により、物理ページの数は論理ページの数に対して十分な余裕を確保してあるためである。
 なお、アドレス変換テーブル262における「論理ページアドレス」の数値は0から始まり1ずつ増加する数値であり、エントリ番号から容易に計算することが可能である。したがって、エントリの項目から「論理ページアドレス」を削除して、エントリの構成要素を「割当状況」と「物理ページアドレス」とすることも可能である。
 [メモリ内部構成]
 図7は、本技術の実施の形態におけるメモリ300の内部構成例を示す図である。ここでは、メモリブロック301に、ワードラインデコーダ320、メモリセル330、ビットラインセレクタ340およびドライバ350を備える構成となっている。
 メモリセル330は、複数のワードライン(WL:Word Lines)と複数のビットライン(BL:Bit Lines)の交点にそれぞれアクセストランジスタと可変抵抗素子を有する。メモリセル330は、物理ページアドレスの数と等しい本数のワードラインと、物理ページサイズのビット数と等しい本数のビットラインと、プレート端子とを備える。ワードラインは、ワードラインデコーダ320に接続される。ビットラインは、ビットラインセレクタ340に接続される。プレート端子は、ドライバ350のプレート電圧出力に接続される。
 メモリセル330の可変抵抗素子は、高抵抗状態(HRS:High Resistive State)と低抵抗状態(LRS:Low Resistive State)の2状態で1ビットの情報を記録する。各状態と論理値との対応付けは任意であるが、以下では低抵抗状態を用いて論理値「1」を表現し、高抵抗状態を用いて論理値「0」を表現するものと定義する。また、2つの状態間の遷移を行う操作をビット反転操作と呼ぶ。ビット反転操作はセット操作とリセット操作の2種類で構成される。以下では、セット操作により高抵抗状態のビットを低抵抗状態に遷移させ、リセット操作により低抵抗状態のビットを高抵抗状態に遷移させる。すなわち、セット操作により論理値「0」のビットを論理値「1」に遷移させ、リセット操作により論理値「1」のビットを論理値「0」に遷移させる。ライト処理においては、セット操作およびリセット操作が順番に行われるが、その順序は何れが先であっても構わない。
 ワードラインデコーダ320は、制御部380からのワードライン指定を受け取り、メモリセル330のワードラインを制御する。すなわち、ワードラインデコーダ320は、制御部380によって指定されたワードラインを論理値「H」でドライブし、それ以外のワードラインを論理値「L」でドライブする機能を有する。ワードライン指定が行われていない場合、または、ワードライン指定が取り消された場合には、ワードラインデコーダ320は全てのワードラインを論理値「L」でドライブする。
 ビットラインセレクタ340は、制御部380との間で、メモリセル330から読み出したリードデータ、および、書込みを行うためのライトデータをやりとりする。また、このビットラインセレクタ340は、ドライバ350からビットラインをドライブするための電圧を受け取る。
 このビットラインセレクタ340は、大きく分けると2つの機能を有する。第1に、ビットラインセレクタ340は、メモリセル330の読出し時にはセンスアンプとしての機能を有する。具体的には、ビットラインセレクタ340は、ビットラインを流れる電流量を計測することにより、選択している可変抵抗素子が低抵抗状態または高抵抗状態の何れであるかを判別し、それぞれのビットラインに対する論理値「0」または「1」を決定する。決定された論理値は、制御部380に対して出力される。
 第2に、このビットラインセレクタ340は、メモリセル330の書込み時には、制御部380による指定に基づいてビットライン毎のドライブ電圧を選択する機能を有する。具体的には、ビットラインセレクタ340は、各ビットラインに対して、ドライバ350から供給されるプレート電圧またはビットライン電圧のいずれかを選択的に供給する。
 図8は、本技術の実施の形態におけるメモリセル330の構造の一例を示す図である。この図では、1本のワードラインWL_0に沿った断面を模式的に表しているが、他のワードラインについても同様の構造を有する。またビットラインは先頭の8本のみを示している。ワードラインWL_0と8本のビットライン(BL_0乃至BL_7)の交点には、アクセストランジスタであるFET(Field effect transistor:電界効果トランジスタ)332と、可変抵抗素子331が接続されている。
 ワードラインWL_0は8つのFET332のゲート端子に接続されており、8本のビットライン(BL_0乃至BL_7)はそれぞれ対応するFET332のドレイン端子に接続される。8つのFETのソース端子はそれぞれ可変抵抗素子331を経由してプレート333に接続される。
 図9は、本技術の実施の形態におけるメモリセル330のドライブ電圧を説明するための図である。メモリセル330の可変抵抗素子331に対する操作としては、上述のセット操作およびリセット操作の他に、可変抵抗素子331の状態を読み出すためのリード操作がある。これら3つの操作、すなわちリード操作、セット操作およびリセット操作において、プレート333とビットラインBL_0との間のドライブ電圧は異なるものとなる。
 セット操作の場合には、プレート333がビットラインに対して「+Vset」の電位となるように電圧バイアスを設定する。リセット操作の場合には、ビットラインがプレート333に対して「+Vreset」の電位となるように電圧バイアスを設定する。また、リード操作の場合には、ビットラインがプレート333に対して「+Vread」の電圧になるように電圧バイアスを設定する。
 [機能構成]
 図10は、本技術の第1の実施の形態における情報処理システムの機能構成例を示す図である。ここでは、メモリ300は、エラー検出部381と、エラーページ判定部384とを備えている。また、記憶制御装置200は、ページ管理部245を備えている。
 エラー検出部381は、メモリ300の物理ページにおいて発生したエラーを検出して、その物理ページにおいて発生したエラー数(ビット数)を計数するものである。このエラー検出部381は、リセットエラーカウンタ382およびセットエラーカウンタ383を備えている。リセットエラーカウンタ382は、リセット操作において生じたエラー数をリセットエラー数として計数するカウンタである。セットエラーカウンタ383は、セット操作において生じたエラー数をセットエラー数として計数するカウンタである。
 エラーページ判定部384は、エラー検出部381において検出されたエラー数に基づいてページ単位でエラー発生の状態を判定するものである。例えば、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)未満であれば、エラーは発生していないものと判定する。一方、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合において、リセットエラー数が閾値(TH_BAD_PAGE)以上であれば、不良ページエラーが発生したものと判定する。また、リセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合において、リセットエラー数が閾値(TH_BAD_PAGE)未満であれば、単なる書込みエラーが発生したものと判定する。なお、エラーページ判定部384は、特許請求の範囲に記載の判定部の一例である。
 ページ管理部245は、空きページテーブル261を管理するものである。このページ管理部245は、エラーページ判定部384から不良ページエラーの発生を通知された場合には、該当する物理ページの空きページテーブル261の使用状況に「不良ページ発生」を記憶する。一方、エラーページ判定部384から書込みエラーの発生を通知された場合には、該当する物理ページの空きページテーブル261の使用状況に「書込みエラー発生」を記憶する。なお、ページ管理部245は、特許請求の範囲に記載の管理部の一例である。
 また、このページ管理部245は、空きページテーブル261に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。例えば、「不良ページ発生」の属性を持つ物理ページについて書込みを行い、その結果、メモリ300から不良ページエラーの発生が通知された場合には、その物理ページの空きページテーブル261の使用状況に「使用不能」を記憶する。一方、メモリ300から不良ページエラーの発生が通知されなかった場合には、その物理ページの空きページテーブル261の使用状況に「使用可能」を記憶する。このようにして、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。なお、この実施の形態では、「不良ページ発生」の属性を持つ物理ページを再確認して不良ページエラーが発生したページを「使用不能」としたが、再確認を経ることなく不良ページエラーが発生したページを「使用不能」としてもよい。
 [情報処理システムの動作]
 図11は、本技術の実施の形態における記憶制御装置200の読出し動作例を示す流れ図である。まず、ホストコンピュータ100から発行されたリードコマンドは、ホストインターフェース210を介して記憶制御装置200に入力される。リードコマンドは、「リードアドレス」および「リードデータサイズ」から構成されている。「リードアドレス」は、読出し対象データの論理アドレスである。ここで、リードアドレスの示す位置は論理ページの先頭に限定する。また、リードデータサイズを論理ページサイズの倍数に限定する。
 制御部240は、リードコマンドを構成する「リードアドレス」および「リードデータサイズ」を、論理ページ単位に分割する(ステップS911)。
 そして、ステップS911において分割された論理ページ単位のうち、読出し処理が未処理のものが未だ残っているか否かが判定される(ステップS912)。論理ページ単位の読出し処理が残っていない場合には(ステップS912:No)、リードコマンドの処理終了をホストコンピュータ100に通知して、読出し動作を終了する(ステップS922)。
 一方、論理ページ単位の読出し処理が残っている場合には(ステップS912:Yes)、残っている論理ページ単位の読出し処理の中から、一つを選択する(ステップS913)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262から取得する(ステップS914)。
 そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS915)。すなわち、「割当状況」が"未割当"であった場合には、ステップS919に進み、"割当済"であった場合にはステップS916に進む。
 「割当状況」が"未割当"であった場合(ステップS915:No)、リード対象の論理ページに対する物理ページが割り当てられていない状況であるため、ホストコンピュータ100に通知すべきデータを準備する(ステップS919)。具体的には、論理ページイメージ領域266をゼロクリアする。ここで、ゼロクリアではなく、"0x00"、"0xFF"等の周期的なデータや予め定められた特定のデータを用いて初期化してもよい。また、この例ではステップS919を通るたびに初期化するということになっているが、電源投入時等に初期化を行う特別な領域をRAM260に用意しておいて、物理ページの割当てがなされていない論理ページへの読出しがあった場合に、特別な領域のデータを通知することも可能である。
 また、物理ページの割り当てられていない論理ページへの読出しに対して、メモリ300内の予め割り当てられた物理ページを読み出してホストコンピュータ100に転送することも可能である。予め割り当てられた物理ページに予め書込みを行うことで、メモリごとに異なるデータをホストコンピュータ100に転送することができる。
 「割当状況」が"割当済"であった場合(ステップS915:Yes)、その論理ページに対応するデータの読出しを行う(ステップS916)。このときの物理ページアドレスは、ステップS914においてアドレス変換テーブル262から読み出した「物理ページアドレス」である。このとき、記憶制御装置200はメモリ300に対して、読出しの指示および物理ページアドレスをリードリクエストとして通知する。メモリ300は、指定された物理ページアドレスに対応する物理ページの内容を読み出して、記憶制御装置200に転送する。記憶制御装置200は、メモリ300から転送された物理ページのデータを物理ページイメージ領域267に格納する。
 次に、ECC処理部270が、エラー訂正を行う(ステップS917)。その際、ECC処理部270には物理ページイメージ領域267の先頭アドレスと、エラー訂正の指示とが与えられる。ECC処理部270は、物理ページイメージ領域267の先頭アドレスから272バイトを読み出し、256バイトのユーザデータに16バイトのパリティが付加されているものと解釈してエラー訂正処理を行う。そして、その結果を物理ページイメージ領域267の同じ位置に書き戻す。
 次に、制御部240が、物理ページイメージ領域267からデータを抜き出して、論理ページイメージ領域266に転送する(ステップS918)。具体的には、物理ページイメージ領域267の先頭から256バイトを読み出して、論理ページイメージ領域266に転送する。
 これらによって論理ページイメージ領域266が準備されると(ステップS918またはS919)、論理ページイメージ領域266のデータはホストコンピュータ100に転送される(ステップS921)。すなわち、論理ページイメージ領域266の先頭の位置から「論理ページ」分の転送が行われる。その後、ステップS912からの処理を繰り返す。
 なお、この実施の形態では、データ抜き出し処理(ステップS918)およびホストコンピュータ100への転送処理(ステップS921)においてそれぞれデータコピーを行っているが、物理ページイメージ領域267から直接転送するようにしてもよい。
 図12は、本技術の実施の形態における記憶制御装置200の書込み動作例を示す流れ図である。まず、ホストコンピュータ100から指示されたライトコマンドは、ホストインターフェース210を介して記憶制御装置200に入力される。ライトコマンドは、「ライトアドレス」、「ライトデータサイズ」、および「ライトデータ」から構成される。このうち「ライトデータ」は、RAM260のデータバッファ263に一時的に格納される。また、「ライトアドレス」は、書込み対象データの論理アドレスである。ここで、ライトアドレスの示す位置は論理ページの先頭に限定する。また、ライトデータサイズを論理ページサイズの倍数に限定する。
 制御部240は、ライトコマンドを構成する「ライトアドレス」と「ライトデータサイズ」を、上述のように論理ページ単位に分割する(ステップS931)。また、制御部240は、ホストコンピュータ100から与えられてデータバッファ263に一時格納されたライトデータについて、論理ページごとに分解したそれぞれの領域の先頭アドレスをすべて計算する。以下のステップS932以降の処理は、ステップS931で分割された論理ページ単位に対して繰り返し行われる。
 ステップS931において分割された論理ページ単位のうち、書込み処理が未処理のものが未だ残っているか否かが判定される(ステップS932)。論理ページ単位の書込み処理が残っていない場合には(ステップS932:No)、ライトコマンドの処理終了をホストコンピュータ100に通知して、書込み動作を終了する(ステップS945)。
 一方、論理ページ単位の書込み処理が残っている場合には(ステップS932:Yes)、残っている論理ページ単位の書込み処理の中から、一つを選択する(ステップS933)。ここでは、論理ページアドレスの若い順に選択することを想定する。そして、選択された論理ページ単位の読出し処理に対応する論理ページの情報を、アドレス変換テーブル262から取得する(ステップS934)。
 そして、処理を行うべき論理ページに物理ページが割り当てられているか否かを確認する(ステップS935)。すなわち、「割当状況」が"割当済"であった場合(ステップS935:Yes)にはステップS938に進み、"未割当"であった場合(ステップS935:No)にはステップS936に進む。
 「割当状況」が"未割当"であった場合、空きページテーブル261に基づいて利用可能な物理ページを確保する(ステップS936)。具体的には「使用状況」が"使用可能"または"書込みエラー発生"であるエントリを検索して、その「使用状況」に"使用中"の値を代入する。上述のように、「使用状況」が"書込みエラー発生"を示す場合にはその物理ページに対する前回の書込みにおいて書込みエラーが発生したことを意味するが、書込みエラーは一定の確率で発生するため、次回の書込みでは問題なく書込みが行える可能性がある。なお、"使用可能"を示すエントリが枯渇した後に、"書込みエラー発生"のエントリを選択する等の方法があるが、ここでは説明を省略する。また、物理ページが確保されると、アドレス変換テーブル262の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される(ステップS937)。なお、空きページテーブル261において利用可能な物理ページが存在しない場合には、その旨をホストコンピュータ100に通知する等の処理が行われるが、ここでは説明を省略する。
 次に、データバッファ263のデータが論理ページイメージ領域266に転送される(ステップS938)。具体的には、データバッファ263に一時格納されたライトデータを論理ページごとに分解したそれぞれの領域の先頭アドレスから、論理ページ分の256バイトが論理ページイメージ領域266に転送される。なお、それぞれの領域の先頭アドレスはステップS931において計算されたものである。
 ここまでの処理によって準備された論理ページイメージ領域266に基づいて、物理ページイメージ領域267が形成される(ステップS941)。具体的には論理ページイメージ領域266の先頭から256バイトを読み出して物理ページイメージ領域267に転送する。
 次に、ECC処理部270が、エラー訂正コードの生成処理を行う(ステップS942)。その際、ECC処理部270には、物理ページイメージ領域267の先頭アドレスと、エラー訂正コード(パリティ)生成の指示とが与えられる。ECC処理部270は、物理ページイメージ領域267の先頭から256バイトを読み出し、16バイトのパリティを計算し、物理ページイメージ領域267に書き戻して、物理ページイメージ領域267を完成する。
 このようにして完成した物理ページイメージ領域267の内容は、メモリ300に書き込まれる(ステップS943)。その際、制御部240は、書込み指示および物理ページアドレスをライトリクエストとして、メモリインターフェース230を経由してメモリ300に出力する。ここで、物理ページアドレスは、ステップS934において読み出された物理ページまたはステップS936において新たに割り当てられた物理ページのアドレスである。メモリ300は、物理ページアドレスにおいて指定された物理ページに対して、受け取ったライトデータを書き込む。ライトデータの書込み後、以下に示すエラー処理が行われる(ステップS950)。
 図13は、本技術の第1の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。
 制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS951)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS952)。
 戻り値が「書込みエラー」である場合(ステップS952:Yes)には、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む(ステップS954)。
 戻り値が「書込みエラー」でない場合(ステップS952:No)には、制御部240は戻り値が「不良ページエラー」であるか否かを確認する(ステップS953)。戻り値が「不良ページエラー」でない場合(ステップS953:No)には、エラー処理を終了して、ステップS932以降の処理を繰り返す。
 戻り値が「不良ページエラー」である場合(ステップS953:Yes)には、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「不良ページ発生」の値を書き込む(ステップS955)。
 ステップS954またはS955において空きページテーブル261にエラーの発生が書き込まれた後、制御部240は空きページテーブル261に基づいて利用可能な物理ページを確保する(ステップS956)。そして、アドレス変換テーブル262の対応するエントリにおいて、「割当状況」が"割当済"に設定されるとともに、確保された物理ページアドレスが「物理ページアドレス」に設定される(ステップS957)。その後、物理ページイメージ領域267の内容がメモリ300に書き込まれる(ステップS958)。これらステップS956乃至S958の処理は、ステップS936、S937およびS943の処理と同様である。
 図14は、本技術の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。ここでは、記憶制御装置200からメモリ300に対するリードリクエストの構成要素である物理ページアドレスとして、ワードライン番号WL_0が指定されたことを想定する。
 まず、制御部380は、制御インターフェース310からリードリクエストの構成要素である物理ページアドレスを取得する(ステップS961)。ここでは、上述のとおり、物理ページアドレスとしてワードライン番号WL_0が取得される。
 制御部380は、ドライバ350に対してリード操作における電圧バイアスの発生を指示する(ステップS962)。具体的には、ビットライン電圧がプレート電圧に対して「+Vread」となるように設定を行う。ドライバ350から供給されたプレート電圧により、メモリセル330のプレート333がドライブされる。
 制御部380は、ビットラインセレクタ340に対して全てのビットラインをビットライン電圧でドライブするように指示を行う(ステップS963)。ビットラインセレクタ340は制御部380からの指示に従って、全てのビットラインに対してドライバ350から供給されたビットライン電圧を供給する。
 制御部380は、リードリクエストにおいて指定された物理ページアドレス(ワードライン番号WL_0)をワードラインデコーダ320に設定するとともに、ビットラインセレクタ340に対して読出し動作の開始を指示する(ステップS964)。ワードラインデコーダ320は、指定された物理ページアドレス(ワードライン番号WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となり、ドライバ350で発生したリード操作における電圧バイアスが可変抵抗素子に印可される。そのため、それぞれの素子の高抵抗状態あるいは低抵抗状態に応じた電流がビットラインを通じてビットラインセレクタ340に流入する。ビットラインセレクタ340は、流入した電流量を測定することにより、それぞれの可変抵抗素子に対応する論理「0」あるいは「1」を決定する。これにより、指定された物理ページアドレス(WL_0)に接続された可変抵抗素子の論理状態が、ビットラインセレクタ340により読み出される。
 読出しが完了すると、制御部380は、ビットラインセレクタ340に対する読出し動作の停止を指示する(ステップS966)。すなわち、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する。なお、読出し完了のタイミングは、制御部380などが内部に有する時計によって決定される場合や、ビットラインセレクタ340において十分な電流量が確保できたことを確認することによって決定される場合などが考えられるが、ここでは詳細な説明を省略する。
 制御部380は、ビットラインセレクタ340が読み出したデータを制御インターフェース310に対して出力するように指示する(ステップS967)。そして、制御部380は、制御インターフェース310に指示して、読み出したデータを記憶制御装置200に通知する(ステップS968)。
 図15は、本技術の第1の実施の形態におけるメモリ300の書込み処理の動作例を示す流れ図である。ここでは、記憶制御装置200からメモリ300に対するライトリクエストの構成要素である物理ページアドレスとしてWL_0が指定され、書込みを行うデータとして値「6」(2進数表記で「00000110」)が指定されたことを想定する。
 また、書込みを行う以前の状況として、メモリセル330のWL_0に対応するビット群には値「3」(2進数表記で「00000011」)が記録されているものとする。これらをビットごとに観察すると、BL_0に対応するビットは現状の論理値「1」を論理値「0」に変更することが必要である。BL_1に対応するビットは現状の論理値「1」のままで変更する必要はない。BL_2に対応するビットは現状の論理値「0」を論理値「1」に変更することが必要である。BL_7乃至BL_3に対応するビットは現状の論理値「0」のままで変更する必要はない。
 ReRAMを含めて不揮発性メモリに対する書込みでは、不要なビット反転や上書きを防ぐために、記録されている情報と書込みを行う情報とを比較し、必要最小限のビット反転のみを行うという方法がよく用いられる。すなわち、この例の場合には、BL_0に対応するビットおよびBL_2に対応するビットのみにビット反転操作を行い、その他のビットに関しては現状を維持することが好ましい。このため、以下の実施の形態では、書込みを行う位置の情報をまず読み出し、反転を行うべきビットを決定し、その決定したビットに対してのみビット反転操作を行う。
 制御部380は、制御インターフェース310からライトリクエストの構成要素である物理ページアドレスおよび書込みを行うデータを取得する(ステップS971)。ここでは、上述のとおり、物理ページアドレスとしてWL_0が取得される。
 制御部380は、図14において説明したステップS962乃至S966の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS972)。制御部380はビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS973)。
 制御部380は、メモリセル330から読み出したデータと、書込みを行うライトデータとを比較し、セット操作を行うべきビットとリセット操作を行うべきビットを決定する(ステップS974)。すなわち、このステップにおいて制御部380は、セット操作を行うべきビットパターン(セットマスク)としてBL_2のみに値「1」を割り当てた2進数表現の数「00000100」を生成する。また、リセット操作を行うべきビットパターン(リセットマスク)としてBL_0のみに値「1」を割り当てた2進数表現の数「00000001」を生成する。
 その後、制御部380はセット操作を行う(ステップS975)。このセット操作の実行処理手順については後述する。制御部380は、読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較する。正常にセット操作が行われなかったビット数をカウントし、セットエラー数として一時保持しておく(ステップS976)。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。
 また、制御部380はリセット操作を行う(ステップS977)。このリセット操作の実行処理手順については後述する。制御部380は、読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較する。正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数として一時保持しておく(ステップS978)。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。
 制御部380はステップS976において生成したセットエラー数とステップS978において生成したリセットエラー数の和(合計値)を計算し、この値があらかじめ設定した閾値(TH_PASS)未満であるか否かを確認する(ステップS979)。和の値が閾値未満の場合(ステップS979:Yes)、制御インターフェース310を介して、ライトコマンドが正常に終了したことを記憶制御装置200に通知する(ステップS983)。この場合、3回以下の書込み試行を経て、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)未満であったことにより、正常終了としている。
 なお、ステップS979における閾値(TH_PASS)を「1」にすることにより、書込みエラーの数が0となった場合に正常終了と判断することができる。また、「1」以外の数値、すなわちECCで訂正可能であるエラー数を設定することもできる。例えば3回の書込み試行後のエラー数の合計が2であっても、ECCにより訂正可能であるため書込みが正常終了したと判断するようにしてもよい。
 和の値が閾値以上(ステップS979:No)の場合、制御部380は、このループの通過が3回目であるか否かを確認する(ステップS981)。ループの通過が1回目または2回目である場合(ステップS981:No)には、ステップS975に戻り処理を繰り返す。ループの通過が3回目である場合(ステップS981:Yes)には、3回の書込み試行によっても基準を満足できなかったことになるため、それ以上は書込みを試行せずにステップS982に進む。
 制御部380は、ステップS978において生成したリセットエラー数とあらかじめ設定した閾値(TH_BAD_PAGE)とを比較する(ステップS982)。リセットエラー数が閾値未満である場合(ステップS982:No)、単なる書込みエラーと判断して、制御インターフェース310を介して、書込みエラーが発生したことを記憶制御装置200に通知する(ステップS985)。この場合、3回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)以上であり、リセットエラー数が閾値(TH_BAD_PAGE)未満であったことにより、書込みエラーではあるが、物理ページ不良ではないと判断している。
 一方、リセットエラー数が閾値以上である場合(ステップS982:Yes)、該当物理ページアドレスの示すページが不良であると判断して、制御インターフェース310を介して、不良ページが発生したことを記憶制御装置200に通知する(ステップS984)。この場合、3回の書込み試行を行ったが、セットエラー数とリセットエラー数の合計が閾値(TH_PASS)以上であり、リセットエラー数が閾値(TH_BAD_PAGE)以上であったことにより、該当物理ページを不良ページであると判断している。
 図16は、本技術の実施の形態におけるメモリ300のセット操作(ステップS975)の動作例を示す流れ図である。
 制御部380は、ドライバ350に対してセット操作における電圧バイアスの発生を指示する(ステップS811)。具体的には、プレート電圧がビットライン電圧に対して「+Vset」となるように設定を行う。ドライバ350から供給されたプレート電圧によりメモリセル330のプレートがドライブされる。
 制御部380は、ビットラインセレクタ340に対してセット操作を行うべきセルパターンを与え、値「1」に対応するビットラインをビットライン電圧で、値「0」に対応するビットラインをプレート電圧でドライブするように指示を行う(ステップS812)。ビットラインセレクタ340は、制御部380からの指示に従って、ドライバ350から供給されたビットライン電圧またはプレート電圧を供給する。
 ここで、ステップS812を1回目に実行する場合のセット操作を行うべきセルパターンとは、ステップS974において生成したセットマスク「00000100」である。すなわち、BL_2のみがビットライン電圧でドライブされ、それ以外のビットライン(BL_7乃至BL_3、BL_1、BL_0)はプレート電圧でドライブされる。ステップS812を2回目以降に実行する場合には、ステップS976において正常にセット操作が行われなかったことが判明したビットのみを「1」としたセットマスクが使用される。
 制御部380は、ライトリクエストにおいて指定された物理ページアドレス(WL_0)をワードラインデコーダ320に設定する(ステップS813)。ワードラインデコーダ320は、指定された物理ページアドレス(WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となる。
 このとき、メモリセル330のプレート333はドライバ350から供給されたプレート電圧でドライブされており、BL_2はステップS812において行った設定によりビットライン電圧でドライブされている。これはセット操作に必要な電圧バイアスであるため、WL_0とBL_2の交点に接続された可変抵抗素子に対してセット操作が行われる。一方、BL_7乃至BL_3、BL_1およびBL_0は、ステップS812において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
 制御部380は、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する(ステップS814)。なお、セット操作完了のタイミングは、制御部380などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
 制御部380は、図15におけるステップS972と同様の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS815)。制御部380は、ビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS816)。
 図17は、本技術の実施の形態におけるメモリ300のリセット操作(ステップS977)の動作例を示す流れ図である。
 制御部380はドライバ350に対してリセット操作における電圧バイアスの発生を指示する(ステップS821)。具体的には、ビットライン電圧がプレート電圧に対して「+Vreset」となるように設定を行う。ドライバ350から供給されたプレート電圧によりメモリセル330のプレートがドライブされる。
 制御部380は、ビットラインセレクタ340に対してリセット操作を行うべきセルパターンを与え、値「1」に対応するビットラインをビットライン電圧で、値「0」に対応するビットラインをプレート電圧でドライブするように指示を行う(ステップS822)。ビットラインセレクタ340は、制御部380からの指示に従って、ドライバ350から供給されたビットライン電圧あるいはプレート電圧を供給する。
 ここで、ステップS822を1回目に実行する場合には、リセット操作を行うべきセルパターンとはステップS974において生成したリセットマスク「00000001」である。すなわち、BL_0のみがビットライン電圧でドライブされ、それ以外のビットライン(BL_7乃至BL_1)はプレート電圧でドライブされる。ステップS822を2回目以降に実行する際には、ステップS978において正常にリセット操作が行われなかったことが判明したビットのみを「1」としたリセットマスクが使用される。
 制御部380は、ライトリクエストにおいて指定された物理ページアドレス(WL_0)をワードラインデコーダ320に設定する(ステップS823)。ワードラインデコーダ320は、指定された物理ページアドレス(WL_0)に対応するワードライン(WL_0)を論理値「H」でドライブする。これにより、WL_0に接続されたアクセストランジスタが導通状態となる。このとき、メモリセル330のプレート333はドライバ350から供給されたプレート電圧でドライブされており、BL_0はステップS822において行った設定によりビットライン電圧でドライブされている。これはリセット操作に必要な電圧バイアスであるため、WL_0とBL_0の交点に接続された可変抵抗素子に対してリセット操作が行われる。一方、BL_7乃至BL_1は、ステップS822において行った設定によりプレート電圧でドライブされているため、アクセストランジスタが導通状態となっても可変抵抗素子の両端に電位差が生じず、ビット反転操作は行われない。
 制御部380は、ワードラインデコーダ320に対する物理ページアドレスの設定を取り消し、ビットラインセレクタ340に対するビットラインのドライブ指示を取り消し、ドライバ350に対する電圧バイアスの発生の停止を指示する(ステップS824)。なお、リセット操作完了のタイミングは、制御部380などが内部に有する時計によって決定されることなどが考えられるが、ここでは詳細な説明を省略する。
 制御部380は、図15におけるステップS972と同様の処理を行い、指定された物理ページアドレス(WL_0)に対応するビットに現在記録されている値を読み出す(ステップS825)。制御部380は、ビットラインセレクタ340にアクセスし、メモリセル330から読み出したデータを取得する(ステップS826)。
 図18は、本技術の実施の形態における記憶制御装置200の不良ページ確定処理の動作例を示す流れ図である。記憶制御装置200の制御部240は、空きページテーブル261に「不良ページ発生」として記録されたエントリが一定数を超えた場合などに、「不良ページ発生」の属性を持つ物理ページを再確認する。すなわち、その物理ページを「使用不能」とするか、または、「再利用可能」であると判断して「使用可能」とするかを判断する。この判断のタイミングとしては、ホストコンピュータ100から指定されたタイミング、または、記憶制御装置200において空き時間と判断したタイミングが考えられる。
 制御部240は、空きページテーブル261において「不良ページ発生」として記録されたエントリを1つ選択する(ステップS831)。この実施の形態では、複数存在する「不良ページ発生」と記録されたエントリから、ランダムな選択方法により1つのエントリを選択することが好ましい。
 制御部240は、ステップS831において選択したエントリの物理ページについて、物理ページイメージ領域267を構成する全てのビットを「1」に設定する(ステップS832)。すなわち、272バイト全てに「0xFF」をフィルする。その後、制御部240は、物理ページイメージ領域267の内容をメモリ300に書き込む(ステップS833)。この書込み処理は、ステップS943における処理と同様である。
 制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS834)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS835)。
 書込みエラーである場合(ステップS835:Yes)、空きページテーブル261を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合(ステップS835:No)、ステップS836に進む。なお、ステップS833における書込みにおいては、書込みデータの全てのビットが「1」であるため、リセット操作は発生しない。したがって、リセット操作に伴う不良ページエラーは発生しない。
 次に、制御部240は、ステップS831において選択したエントリの物理ページについて、物理ページイメージ領域267を構成する全てのビットを「0」に設定する(ステップS836)。すなわち272バイト全てに「0x00」をフィルする。その後、制御部240は、物理ページイメージ領域267の内容をメモリ300に書き込む(ステップS837)。この書込み処理は、ステップS943における処理と同様である。
 制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS838)。そして、制御部240は、その戻り値が「書込みエラー」であるか否かを確認する(ステップS839)。
 書込みエラーである場合(ステップS839:Yes)、空きページテーブル261を変更することなく、この不良ページ確定処理を終了する。書込みエラーでない場合(ステップS839:No)、制御部240は、その戻り値が「不良ページエラー」であるか否かを確認する(ステップS841)。
 不良ページエラーである場合(ステップS841:Yes)、制御部240は、空きページテーブル261の該当するエントリに「使用不能」を設定する(ステップS842)。一方、不良ページエラーでない場合(ステップS841:No)、制御部240は、空きページテーブル261の該当するエントリに「使用可能」を設定する(ステップS843)。
 ここで、空きページテーブル261を変更することなく不良ページ確定処理を終了した場合(ステップS835:Yes、または、ステップS839:Yes)、該当物理ページは「不良ページ発生」の記録のまま維持される。この場合、将来行われる不良ページ確定処理において再度の判断が行われることになる。
 ここでは、全てのビットが「1」のデータを書いた後に全てのビットが「0」のデータを書くという手順を用いている。これは、全てのビットに対してリセット操作を行うための手順である。メモリ300においては該当物理ページの値「0」のビットに対してセット操作が行われて「1」が書き込まれ(ステップS833)、該当物理ページの全てのビットに対してリセット操作が行われて「0」が書き込まれる(ステップS837)。すなわち、該当物理ページの全てのビットに対してリセット操作が行われた際のリセットエラー数により、不良ページと確定するか否かを決定している。
 なお、記憶制御装置200から閾値(TH_BAD_PAGE)が変更可能である場合、ステップS837の書込みに先立って閾値を少し高めに設定し、終了後に元の閾値に戻すことが考えられる。これは通常の書込みにおいて不良ページ候補を検出する閾値と、不良ページ確定処理において不良ページを決定する閾値とを比較すると、前者の方が不良ページと判断され易くするために、低い閾値を使用すべきという考え方によるものである。すなわち、この不良ページ確定処理においては、通常の書込みにおいて不良ページ候補を検出する場合よりも不良ページと判断され難い、高い基準により不良ページか否かが判断される。
 また、メモリ300に対して、「指定した物理アドレスの値を反転し、リセットエラー数を通知せよ」という指示を2回行い、2回の指示で通知された2つのリセットエラー数を加算することにより、不良ページか否かを判断するという方法も考えられる。
 このように、本技術の第1の実施の形態では、メモリ300においてリセットエラー数をカウントして、これに基づいて不良ページの候補を検出することにより、その後、記憶制御装置200においてそのページの使用可否を判断することができる。なお、この第1の実施の形態ではリセットエラー数に着目して不良ページの発生を検出したが、セットエラー数に着目して同様の検出を行うようにしてもよい。
 <2.第2の実施の形態>
 上述の第1の実施の形態では、メモリ300においてリセットエラー数をカウントして不良ページの候補を検出していた。これに対し、この第2の実施の形態では記憶制御装置200において不良ページを判断する。なお、基本的なハードウェア構成については上述のものと同様であるため、詳細な説明は省略する。
 [機能構成]
 図19は、本技術の第2の実施の形態における情報処理システムの機能構成例を示す図である。基本的な機能構成は上述の第1の実施の形態と同様であるが、記憶制御装置200がエラーページ判定部244を備える点が異なっている。
 すなわち、この第2の実施の形態では、エラー検出部381において計数されたリセットエラー数およびセットエラー数は、メモリ300から記憶制御装置200に通知される。そして、エラー検出部381において検出されたエラー数を受けたエラーページ判定部244は、これらエラー数に基づいてページ単位でエラー発生の状態を判定する。このエラーページ判定部244による判定結果がページ管理部245に供給され、ページ管理部245はその判定結果を空きページテーブル261に反映する。
 例えば、エラー検出部381において計数されたリセットエラー数およびセットエラー数の合計値が閾値(TH_PASS)以上である場合には、書込みに失敗した旨とともにリセットエラー数およびセットエラー数がメモリ300から記憶制御装置200に通知される。書込みに失敗した旨が通知された場合において、最後のリセットエラー数が閾値(TH_BAD_PAGE)以上であれば、エラーページ判定部244は不良ページエラーが発生したものと判定する。一方、最後のリセットエラー数が閾値(TH_BAD_PAGE)未満であれば、エラーページ判定部244は単なる書込みエラーが発生したものと判定する。ページ管理部245は、エラーページ判定部244による判定結果を空きページテーブル261に反映する。なお、エラーページ判定部244は、特許請求の範囲に記載の判定部の一例である。
 また、このページ管理部245は、第1の実施の形態と同様に、「不良ページ発生」の属性を持つ物理ページを再確認する。これにより、いったん不良ページ発生となったページについて、その後の使用が可能か否かを判断することができる。
 [情報処理システムの動作]
 この第2の実施の形態では、読出し動作および書込み動作の基本的な処理手順は上述の第1の実施の形態と同様である。ただし、以下に示すように、記憶制御装置200におけるステップS950のエラー処理、および、メモリ300におけるライトリクエスト処理が第1の実施の形態とは異なる。
 図20は、本技術の第2の実施の形態における記憶制御装置200のエラー処理の動作例を示す流れ図である。
 制御部240は、メモリ300における書込み動作の終了を待って、その戻り値として実行後ステータスを取得する(ステップS851)。そして、制御部240は、その戻り値が「書込み失敗」であるか否かを確認する(ステップS852)。「書込み失敗」でない場合(ステップS852:No)には、エラー処理を終了して、ステップS932以降の処理を繰り返す。
 戻り値が「書込み失敗」である場合(ステップS852:Yes)、3回目の(最後の)リセットエラー数と閾値(TH_BAD_PAGE)とを比較する(ステップS853)。リセットエラー数が閾値未満である場合(ステップS853:No)、単なる書込みエラーであると判断して、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「書込みエラー発生」の値を書き込む(ステップS854)。一方、リセットエラー数が閾値以上である場合(ステップS853:Yes)、不良ページであると判断して、制御部240は空きページテーブル261の該当物理ページに対応するエントリに対して「不良ページエラー発生」の値を書き込む(ステップS855)。
 なお、ステップS856以降の処理は、上述のステップS956以降の処理と同様である。
 ここでは、3回目の(最後の)リセットエラー数のみに着目することによって不良ページと単なる書込みエラーとを判断しているが、3回分のリセットエラー数、または、3回分のリセットエラー数およびセットエラー数を用いて判断することもできる。例えば3回目の(最後の)リセットエラー数は閾値(TH_BAD_PAGE)未満であるが、1回目または2回目のリセットエラー数が予め定めた閾値に比較して大きい場合は不良ページとするなどの判断を記憶制御装置200が独自に行うことが可能となる。
 図21は、本技術の第2の実施の形態におけるメモリ300の読出し処理の動作例を示す流れ図である。この図において、ステップS871乃至S875、S877、S879、S881およびS883の処理は、上述のステップS971乃至S975、S977、S979、S981およびS983の処理と同様である。
 セット操作(ステップS875)が行われた後、制御部380は読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較する。そして、正常にセット操作が行われなかったビット数をカウントし、セットエラー数としてループ回数とともに格納しておく(ステップS876)。また、正常にセット操作が行われなかったビットのみがセットマスクに残るようにセットマスクを修正する。上述のステップS976ではセットエラー数を一時格納しておくだけであったが、このステップS876ではループ回数とともに格納しておく。これにより、最大3回分のセットエラー数がループ回数とともに格納される。
 リセット操作(ステップS877)が行われた後、制御部380は読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較する。そして、正常にリセット操作が行われなかったビット数をカウントし、リセットエラー数としてループ回数とともに格納しておく(ステップS878)。また、正常にリセット操作が行われなかったビットのみがリセットマスクに残るようにリセットマスクを修正する。上述のステップS978ではリセットエラー数を一時格納しておくだけであったが、このステップS878ではループ回数とともに格納しておく。これにより、最大3回分のリセットエラー数がループ回数とともに格納される。
 ループの通過が3回目である場合(ステップS881:Yes)には、制御部380は制御インターフェース310を介して、ライトリクエストが失敗した旨を記憶制御装置200に通知する(ステップS884)。また、このとき制御部380は制御インターフェース310を介して、3回分のセットエラー数および3回分のリセットエラー数の合計6つの値を記憶制御装置200に通知する(ステップS884)。
 なお、ここでは3回分のセットエラー数および3回分のリセットエラー数を通知しているが、記憶制御装置200で使用するパラメータに限定してもよい。例えば、3回分のリセットエラー数または最後のリセットエラー数を通知するようにしてもよい。
 また、ライトリクエストが正常に終了した場合においても、ステップ883においてループ回数と最大3回分のセットエラー数およびリセットエラーを記憶制御装置200に通知することができる。これらの情報を受け取った記憶制御装置200は、ループ回数と最大3回分のセットエラー数およびリセットエラー数を吟味し、記憶制御装置200の判断で書込みエラーまたは不良ページエラーであると決定することができる。例えば、3回のループで書込みが成功しているため3回目のエラー数は少ないが、1回目および2回目のエラー数が予め定めた閾値に比較して大きい場合は不良ページであると決定するなどの判断を記憶制御装置200が独自に行うことが可能となる。
 このように、本技術の第2の実施の形態では、メモリ300においてリセットエラー数をカウントして、これに基づいて記憶制御装置200において不良ページの発生およびそのページの使用可否を判断することができる。
 なお、上述の第1の実施の形態においてはページ管理部245がメモリ300の外部に設けられ、第2の実施の形態においてはさらにエラーページ判定部244がメモリ300の外部に設けられることを想定した。しかし、ページ管理部245およびエラーページ判定部244に相当する構成をメモリ300に内蔵し、メモリ300自身が不良ページの管理を行うように構成してもよい。
 <3.変形例>
 [閾値の設定]
 上述の実施の形態では、2種類の閾値(TH_PASSおよびTH_BAD_PAGE)をメモリ300の起動時にOTPメモリ360から読み出す構成としているが(ステップS979およびS982)、その他の方法により閾値を設定するようにしてもよい。
 すなわち、OTPメモリ360に複数組の閾値を記録しておき、記憶制御装置200が何れか1組を選択して使用するようにしてもよい。例えば、メモリ300のOTPメモリ360に、2種類の閾値(TH_PASSおよびTH_BAD_PAGE)を3組記録しておくことを想定する。3組の閾値は、メモリ使用の経時状態として、初期、中期、または、後期のそれぞれに対応している。記憶制御装置200は、メモリシステムの起動時にメモリ300から3組の2種類の閾値を読み出し、記憶制御装置200内でカウントした総起動時間や総書込回数などのパラメータにより3組から1組の閾値を選択してメモリ300に設定する。または、閾値の読出しと設定を行わずに、3組の閾値群の何れか(初期、中期、後期)を特定するパラメータをメモリ300に設定するようにしてもよい。
 また、OTPメモリ360にメモリ300の製造ロット番号等の所定の識別子を記録しておいて、これに基づいて閾値を決定するようにしてもよい。ホストコンピュータ100においてメモリシステムを取り扱うためのドライバは、所定の識別子と閾値の組合せを示した情報をインターネット接続等の手段を用いて予め入手しておく。ホストコンピュータ100は、記憶制御装置200の起動時にその組合せ情報を記憶制御装置200に供給する。記憶制御装置200は、メモリシステムの起動時にメモリ300からロット番号を読み出して組合せ情報と照らし合わせることにより、適切な閾値を選択してメモリ300に設定する。
 [エラー数の判断条件]
 上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値(TH_PASS)と比較を行っていたが(ステップS979)、両者を異なる条件として扱ってもよい。この変形例では、ステップS979の条件を、「セットエラーの数<閾値TH_PASS_SET」かつ「リセットエラーの数<閾値TH_PASS_RESET」とする。この場合、制御部380は、ステップS976において生成したセットエラー数およびステップS978において生成したリセットエラー数を、それぞれの閾値TH_PASS_SETおよびTH_PASS_RESETと比較する。「セットエラーの数<閾値TH_PASS_SET」かつ「セットエラーの数<閾値TH_PASS_RESET」が成立する場合(ステップS979:Yes)には、ステップS983に進む。また、「セットエラーの数<閾値TH_PASS_SET」または「セットエラーの数<閾値TH_PASS_RESET」の少なくとも一方が成立しない場合(ステップS979:No)には、ステップS981に進む。
 [エラー数の重み付き加算]
 上述の実施の形態では、セットエラー数とリセットエラー数の和を用いて閾値(TH_PASS)と比較を行っていたが(ステップS979)、その際、両者の重みを均等に扱っていた。これに対し、両者を異なる重みにより加算することにより、セットエラー数とリセットエラー数の感度を変更することができる。この変形例では、ステップS979の条件を、「セットエラーの数×2+セットエラーの数<閾値TH_PASS」とする。この場合、制御部380は、ステップS976において生成したセットエラー数を2倍した数に、ステップS978で生成したリセットエラー数を加算し、この値があらかじめ設定した閾値(TH_PASS)未満であるかを確認する(ステップS979)。和が閾値未満の場合(ステップS979:Yes)にはステップS983に進み、和が閾値以上の場合(ステップS979:No)にはステップS981に進む。
 [不良ページ通知の細分化]
 上述の実施の形態では、リセットエラー数が予め設定した閾値(TH_BAD_PAGE)以上である場合には、不良ページが発生したことを記憶制御装置200に通知していた。この閾値を2段階にして、2種類の「不良ページ判定」を通知することにより、以下のように、より細やかな通知を行うことが可能となる。
 例えば、2つの閾値TH_BAD_PAGE1およびTH_BAD_PAGE2(TH_BAD_PAGE1<TH_BAD_PAGE2)を予め準備しておく。ステップS981においてループの通過が3回目である場合、すなわち3回の書込み試行ではステップS979の基準を満足できなかった場合(ステップS981:Yes)には、以下の処理を行う。
 まず、「TH_BAD_PAGE2≦リセットエラー数」を満たす場合には、「不良ページ発生」を記憶制御装置200に通知する。この通知はステップS984と同様である。また、「リセットエラー数<TH_BAD_PAGE1」を満たす場合には、「書込みエラー」を通知する。この通知はステップS985と同様である。一方、「TH_BAD_PAGE1≦リセットエラー数<TH_BAD_PAGE2」を満たす場合には、「不良ページ注意」を記憶制御装置200に通知する。この通知はこの変形例特有のものである。
 このような「不良ページ注意」の通知を行うことによって、記憶制御装置200は、書換えの少ないデータ(コールドデータ)をそのページに配置するなどの制御を行うことが可能になる。
 [ライトデータとの比較]
 上述の実施の形態では、読み出したデータとセット操作を行うべきビットパターン(セットマスク)とを比較し(ステップS976)、読み出したデータとリセット操作を行うべきビットパターン(リセットマスク)とを比較していた(ステップS978)。このような比較対象として、以下のように、書込みデータを用いることも可能である。
 すなわち、ステップS976において、制御部380は読み出したデータと書込みを行うライトデータとを比較し、ステップS974と同様にセット操作を行うべきビットパターンを決定してセットマスクを更新する。さらに、セットマスクを構成する「1」の数をカウントして、セットエラー数として一時保持しておく。また、ステップS978において、制御部380は読み出したデータと書込みを行うライトデータとを比較し、ステップS974と同様にリセット操作を行うべきビットパターンを決定してリセットマスクを更新する。さらに、リセットマスクを構成する「1」の数をカウントして、リセットエラー数として一時保持しておく。
 [消去リクエストにおける不良ページ判断]
 上述の実施の形態では、記憶制御装置200から指示されたライトリクエストをメモリ300が処理する際に生じたエラーに着目したが、ここではライトリクエスト以外に消去リクエストが設けられている場合を想定する。この消去リクエストは、指定された物理アドレスの全てのビットに「0」を書き込むためのリクエストである。この消去リクエストについては、ライトリクエストよりも閾値を小さい値にすることにより、消去リクエストにおける不良ページ判断をより厳しくすることが望ましい。すなわち、消去リクエストはライトリクエストとは異なり、将来の記録に対して準備するという意味合いから、より低い基準で不良ページと判断され易くした方がよいと考えられるからである。
 なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
 また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
 なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
 なお、本技術は以下のような構成もとることができる。
(1)不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
(2)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(3)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(4)前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する前記(1)に記載の記憶制御装置。
(5)前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する前記(1)に記載の記憶制御装置。
(6)前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する前記(1)から(5)のいずれかに記載の記憶制御装置。
(7)前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する前記(6)に記載の記憶制御装置。
(8)前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う前記(6)または(7)に記載の記憶制御装置。
(9)前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する前記(6)から(8)のいずれかに記載の記憶制御装置。
(10)前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する前記(6)から(9)のいずれかに記載の記憶制御装置。
(11)前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する前記(10)に記載の記憶制御装置。
(12)前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する前記(10)に記載の記憶制御装置。
(13)前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(14)前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(15)前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する前記(1)に記載の記憶制御装置。
(16)前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する前記(1)に記載の記憶制御装置。
(17)不揮発性メモリのメモリセルと、
 前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
を具備する記憶装置。
(18)前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する前記(17)に記載の記憶装置。
(19)不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
 前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
を具備する記憶制御方法。
 100 ホストコンピュータ
 200 記憶制御装置
 210 ホストインターフェース
 230 メモリインターフェース
 240 制御部
 244 エラーページ判定部
 245 ページ管理部
 250 ROM
 260 RAM
 261 空きページテーブル
 270 ECC処理部
 290 バス
 300 メモリ
 310 制御インターフェース
 320 ワードラインデコーダ
 330 メモリセル
 331 可変抵抗素子
 333 プレート
 340 ビットラインセレクタ
 350 ドライバ
 360 OTPメモリ
 380 制御部
 381 エラー検出部
 382 リセットエラーカウンタ
 383 セットエラーカウンタ
 384 エラーページ判定部
 390 バス

Claims (19)

  1.  不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部を具備する記憶制御装置。
  2.  前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  3.  前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を所定回数超え、かつ、前記所定回数の最後の前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  4.  前記判定部は、前記リセット操作および前記セット操作のエラー数の合計値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えなかった場合には、その記憶単位において書込みエラーが発生したと判定する請求項1記載の記憶制御装置。
  5.  前記判定部は、前記不良の疑いがある記憶単位を使用不能な記憶単位として判定する請求項1記載の記憶制御装置。
  6.  前記不良の疑いがある記憶単位として判定された記憶単位について再確認を行ってその結果に応じてその記憶単位を使用不能として管理する管理部をさらに具備する請求項1記載の記憶制御装置。
  7.  前記管理部は、前記再確認を行う際、その記憶単位について再度書込みを行って不良の疑いがある記憶単位として再び判定された場合にはその記憶単位を使用不能として管理する請求項6記載の記憶制御装置。
  8.  前記管理部は、前記不良の疑いがある記憶単位として判定された記憶単位が一定数を超えたときに、その記憶単位について前記再確認を行う請求項6記載の記憶制御装置。
  9.  前記判定部は、前記管理部が前記再確認を行う際には、前記所定の一方におけるエラー数が前記所定の基準よりも高い基準を超えた記憶単位を前記不良の疑いがある記憶単位として判定する請求項6記載の記憶制御装置。
  10.  前記判定部は、前記所定の一方におけるエラー数の前記所定の基準を複数の候補の中から選択する請求項1記載の記憶制御装置。
  11.  前記判定部は、前記不揮発性メモリが使用された経時状態に応じて前記複数の候補の中から前記所定の基準を選択する請求項10記載の記憶制御装置。
  12.  前記判定部は、前記不揮発性メモリの所定の識別子に応じて前記複数の候補の中から前記所定の基準を選択する請求項10記載の記憶制御装置。
  13.  前記判定部は、前記リセット操作および前記セット操作のエラー数のそれぞれが所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  14.  前記判定部は、前記リセット操作および前記セット操作のエラー数の重み付き加算値が所定の基準を超え、かつ、前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  15.  前記判定部は、前記所定の一方におけるエラー数が前記所定の基準を超えない一定の状態である場合にその記憶単位を不良の疑いがある記憶単位に遷移する可能性があるものとして判定する請求項1記載の記憶制御装置。
  16.  前記判定部は、記憶単位の全てのビットを消去する消去リクエストを処理する際には、前記所定の一方におけるエラー数が前記所定の基準よりも低い基準を超えた場合に前記不良の疑いがある記憶単位として判定する請求項1記載の記憶制御装置。
  17.  不揮発性メモリのメモリセルと、
     前記メモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する判定部と
    を具備する記憶装置。
  18.  前記リセット操作および前記セット操作のエラー数をそれぞれ計数するカウンタをさらに具備する請求項17記載の記憶装置。
  19.  不揮発性メモリのメモリセルに対するリセット操作またはセット操作のうち所定の一方におけるエラー数を取得する手順と、
     前記所定の一方におけるエラー数が所定の基準を超えた記憶単位を不良の疑いがある記憶単位として判定する手順と
    を具備する記憶制御方法。
PCT/JP2015/069716 2014-09-03 2015-07-09 記憶制御装置、記憶装置、および、記憶制御方法 WO2016035451A1 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US15/505,674 US10338984B2 (en) 2014-09-03 2015-07-09 Storage control apparatus, storage apparatus, and storage control method

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2014179109A JP2016053808A (ja) 2014-09-03 2014-09-03 記憶制御装置、記憶装置、および、記憶制御方法
JP2014-179109 2014-09-03

Publications (1)

Publication Number Publication Date
WO2016035451A1 true WO2016035451A1 (ja) 2016-03-10

Family

ID=55439521

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/069716 WO2016035451A1 (ja) 2014-09-03 2015-07-09 記憶制御装置、記憶装置、および、記憶制御方法

Country Status (3)

Country Link
US (1) US10338984B2 (ja)
JP (1) JP2016053808A (ja)
WO (1) WO2016035451A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7242233B2 (ja) * 2018-09-28 2023-03-20 キヤノン株式会社 情報処理装置及びその制御方法とプログラム
US11461623B2 (en) 2018-10-18 2022-10-04 Taiwan Semiconductor Manufacturing Co., Ltd. Method and apparatus for defect-tolerant memory-based artificial neural network
CN115237333A (zh) * 2021-04-23 2022-10-25 伊姆西Ip控股有限责任公司 用于管理盘的方法、电子设备和计算机程序产品
WO2024059132A1 (en) * 2022-09-13 2024-03-21 Fort Robotics, Inc. Method for decreasing probability of undetected errors on large messages over a black channel

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060388A (ja) * 2009-09-11 2011-03-24 Toshiba Corp 不揮発性メモリ装置
JP2011187144A (ja) * 2010-03-11 2011-09-22 Toshiba Corp 半導体記憶装置
JP2012038387A (ja) * 2010-08-06 2012-02-23 Toshiba Corp 半導体記憶装置
JP2014235773A (ja) * 2013-05-31 2014-12-15 株式会社東芝 不揮発性記憶装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005056394A (ja) 2003-07-18 2005-03-03 Toshiba Corp 記憶装置及びメモリカード
JP6497394B2 (ja) * 2014-11-26 2019-04-10 ソニー株式会社 メモリシステム、記憶装置、および、メモリシステムの制御方法
TWI649748B (zh) * 2015-01-14 2019-02-01 財團法人工業技術研究院 電阻式隨機存取記憶體與其控制方法
JP6520576B2 (ja) * 2015-08-27 2019-05-29 ソニー株式会社 メモリ、情報処理システムおよびメモリの制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011060388A (ja) * 2009-09-11 2011-03-24 Toshiba Corp 不揮発性メモリ装置
JP2011187144A (ja) * 2010-03-11 2011-09-22 Toshiba Corp 半導体記憶装置
JP2012038387A (ja) * 2010-08-06 2012-02-23 Toshiba Corp 半導体記憶装置
JP2014235773A (ja) * 2013-05-31 2014-12-15 株式会社東芝 不揮発性記憶装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
SHUHEI TANAKAMARU ET AL.: "Hybrid Storage of ReRAM/TLC NAND Flash with RAID-5/6 for Cloud Data Centers", 2014 IEEE INTERNATIONAL SOLID- STATE CIRCUITS CONFERENCE DIGEST OF TECHNICAL PAPERS (ISSCC, pages 336 - 337 *

Also Published As

Publication number Publication date
US10338984B2 (en) 2019-07-02
US20170255502A1 (en) 2017-09-07
JP2016053808A (ja) 2016-04-14

Similar Documents

Publication Publication Date Title
JP5853899B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
US10445005B2 (en) Memory system and operating method thereof
EP2800097B1 (en) Storage control device, storage device, information processing system, and processing methods therefor
JP5929790B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2014142931A5 (ja)
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP5929456B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP6034183B2 (ja) 半導体記憶装置
JP5768654B2 (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
JP2014086062A (ja) 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
EP2799998A1 (en) Storage control device, storage device, information processing system, and processing methods in same
JP6711281B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
TWI648739B (zh) 記憶體管理方法與儲存控制器
JP2012248244A (ja) 半導体記憶装置
US9396769B1 (en) Memory device and operating method of same
JP2013205872A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2014022004A (ja) 記憶制御装置、記憶装置、および、それらにおける処理方法
WO2016056290A1 (ja) メモリコントローラ、メモリシステム、記憶装置、情報処理システムおよび記憶制御方法
WO2017073127A1 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
WO2017010147A1 (ja) 不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
JP2013101455A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2017043149A1 (ja) メモリコントローラ、メモリおよびメモリシステム
KR20150122493A (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: 15838814

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 15505674

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

Country of ref document: EP

Kind code of ref document: A1