WO2007010829A1 - 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 - Google Patents

不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 Download PDF

Info

Publication number
WO2007010829A1
WO2007010829A1 PCT/JP2006/313978 JP2006313978W WO2007010829A1 WO 2007010829 A1 WO2007010829 A1 WO 2007010829A1 JP 2006313978 W JP2006313978 W JP 2006313978W WO 2007010829 A1 WO2007010829 A1 WO 2007010829A1
Authority
WO
WIPO (PCT)
Prior art keywords
error
data
read
information
block
Prior art date
Application number
PCT/JP2006/313978
Other languages
English (en)
French (fr)
Inventor
Toshiyuki Honda
Kunihiro Maki
Shigekazu Kogita
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to JP2007525978A priority Critical patent/JP4950886B2/ja
Priority to US11/995,600 priority patent/US9092361B2/en
Priority to CN200680029679.0A priority patent/CN101243417B/zh
Publication of WO2007010829A1 publication Critical patent/WO2007010829A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk

Definitions

  • Nonvolatile storage device Nonvolatile storage device, memory controller and defective area detection method
  • the present invention relates to a non-volatile memory device using an error correction function for improving the reliability of data recorded in the non-volatile memory, which is not accidental caused by a defect in the non-volatile memory, and is not a read error Nonvolatile memory device, memory memory controller, and method for detecting a defective area.
  • Patent Document 1 proposes a method of counting error occurrence information in read and write and not using a degraded area. Further, Patent Document 2 proposes a method of performing alternative processing for an area where read errors continue.
  • Patent Document 1 Japanese Patent Application Laid-Open No. 11-53266
  • Patent Document 2 WO0lZ022232
  • non-volatile memories including flash memories
  • flash memories have the ability to keep holding data without applying energy such as bias to the memory cells. This indicates that holding the data, the state is stable. It is completely different from the volatile memory SRAM holding data by the application of energy. Therefore, in order to rewrite data in the non-volatile memory, it is necessary to apply energy to the memory cell in a stable state, and at this time the memory cell is slightly degraded.
  • a NAND flash memory which is a typical non-volatile memory representative, has been commercialized on the premise of error correction using an ECC circuit. That is because accidental bit errors can not be avoided in non-volatile memory. Therefore, the memory controller of the memory card using the NAND flash memory has a function of generating an ECC code and a function of detecting and correcting an error. The memory controller corrects accidental bit errors using the ECC circuit and reuses the physical block in which the error occurred. This improves the substantial reliability of the memory card.
  • bit errors may occur during reading due to defects fixedly present in physical blocks due to deterioration of memory cells and the like. is there.
  • a NAND flash memory with low enough occurrence of bit errors with high reliability, it occurs like a conventional memory controller Limiting the use of physical blocks without determining whether bit errors are accidental or fixed does not cause problems in flash memory usage.
  • the frequency of occurrence of bit errors is higher than ever due to miniaturization of flash memory processes and multi-value processing. From this, it is necessary to allow the presence of a bit error on the premise that the error correction is performed, and it is necessary to correct the error and continue to use the flash memory even if a bit error occurs.
  • the cause of the bit error is due to a fixed failure of the memory cell, the physical block in which the fixed failure exists causes frequent read errors of the memory card.
  • a fixed error existing in a physical block of a memory card may cause a data error, making it impossible to view a still image captured by a digital camera.
  • the still image data is deleted on the digital camera system, the same block is reused for the still images to be captured thereafter, and a data error occurs again. In this way, still images can not be seen, and cases often occur.
  • the non-volatile storage device of the present invention is a non-volatile storage device including a non-volatile memory and a memory controller, and the non-volatile memory is a physical block which is an erase unit. A plurality of physical pages each of which is a write unit, and the memory controller includes an arithmetic processing unit that performs overall control in the memory controller, and the non-volatile memory.
  • An error correction circuit having a function of detecting an error with respect to data read from a memory and a function of correcting the error if correction is possible, and managing the data stored in the non-volatile memory And an address table for holding a table necessary for the memory controller, wherein the memory controller's address table Whether data has already been written to an error table having a plurality of error records, which are information on the read error regarding the physical block for which the correction circuit detected a read error, and each physical block of the non-volatile memory And an logical-to-physical address specified by an external device of the host device, and a logical-to-physical conversion table indicating conversion information of the physical block address of the non-volatile memory;
  • the processing unit registers and updates the error record of the error table based on the error detection from the error correction circuit, and determines whether to use the physical block in which the read error is detected.
  • the address table of the memory controller further includes a defective block table for recording information on an address of a physical block which prohibits the writing and reading of data, and the error record of the error table is the non-volatile memory.
  • error block information for recording information indicating the address of the physical block that has generated the error and information indicating that the error has occurred is recorded.
  • Error information and error block erase information for recording information indicating that data in the physical block has been written and new data has been written after the error occurs, and the error block erase information.
  • the arithmetic processing unit After the information is recorded, an error indicating that a read error has been detected again on the same physical block A chromatography recurrence information, the arithmetic processing unit, the data when writing to the nonvolatile memory, by referring to the error tape Le writes data physical block Nitsu, at least the error block information Te If there is the error record in which the error reoccurrence information is recorded, the information on the address of the physical block to which the data is written may be recorded in the defective block table.
  • the error record of the error table may further include error page information in which the address of the physical page for which the error correction circuit has detected a read error is written.
  • the arithmetic processing unit records and updates information in the error record of the error table only when the read error detected by the error correction circuit can not be corrected by the error correction circuit. ⁇ ⁇ .
  • the arithmetic processing unit records and updates information in the error record of the error table only when the read error detected by the error correction circuit can not be corrected by the error correction circuit. ⁇ ⁇ .
  • the address table of the memory controller further includes a defective block table for recording information on an address of a physical block which prohibits writing and reading of data, and an error record of the error table is the non-volatile memory.
  • error correction circuit detects an error in the data read from the memory, error block information that records information indicating the address of the physical block that generated the error, and an error that is information that indicates the number of times a read error has occurred
  • the information processing apparatus may further include counter information and error block erase counter information indicating the number of times the physical pattern in which the read error has occurred is physically erased.
  • the arithmetic processing unit may write the data to the non-volatile memory.
  • the error counter information and the error block erase information are compared, and the error block erase information indicates a predetermined number of times and the error counter information
  • the error block erasure information has a larger value, information regarding the address of the physical block to which the data is to be written may be recorded in the defective block table.
  • the error record of the error table further includes error page information in which the address of the physical page for which the error correction circuit has detected a read error is written. You may
  • the arithmetic processing unit registers and updates the error record of the error table regardless of whether the correction by the error correction circuit is possible or not. Oh.
  • the operation processing unit registers and updates the error record of the error table regardless of whether the error correction circuit corrects the error. Oh.
  • the error record of the error table is error block information in which the address of the physical block in which the error correction circuit detects a read error is written, and the physical page in which the error correction circuit detects the read error.
  • an error bit counter that records information indicating the number of bits of the read error, and the arithmetic processing unit is configured to reduce the number of error bits that can be corrected by the error correction circuit.
  • the data of the physical block corresponding to the error record of the error table for which the information of the error bit counter is equal to or more than the correction threshold value is read using a predetermined correction threshold value.
  • the error correction circuit is made to correct the error of the read data, and the corrected data is transmitted to another physical block. It may be written to.
  • the arithmetic processing unit has a value equal to or less than the number of error bits correctable by the error correction circuit when data read processing is not performed on the non-volatile memory of an external force.
  • the data of the physical block corresponding to the error record of the error table for which the information of the error bit counter is equal to or more than the correction threshold value is read using the predetermined correction threshold value and read out to the error correction circuit. It is also possible to correct an error of one data and write the corrected data to another physical block.
  • the error record of the error table is error block information for recording information indicating the address of the physical block for which the error correction circuit has detected a read error, and the physical condition for which the error correction circuit has detected a read error.
  • Error page information for recording information indicating a page address, and a value less than the number of error bits correctable by the error correction circuit, indicating that a read error more than a predetermined correction threshold has occurred.
  • Error occurrence information for recording information the arithmetic processing unit reads out data of a physical block corresponding to an error record of the error table in which the error occurrence information is recorded, and reads it to the error correction circuit. Let me correct the data error and write the corrected data to another physical block.
  • the arithmetic processing unit is processed to read data in the non-volatile memory, and a physical block corresponding to an error record in the error table in which the error occurrence information is recorded.
  • the read data may be read, the error correction circuit may be made to correct an error in the read data, and the corrected data may be written to another physical block.
  • a memory controller comprises a plurality of physical blocks which are erase units, and the physical blocks are nonvolatile memories each having a plurality of physical pages which are write units.
  • a memory controller that controls reading and writing of data, an arithmetic processing unit that performs overall control in the memory controller, a function of detecting an error in data read from the non-volatile memory, and And an error correction circuit having a function of correcting the error if correction is possible, and holding a table necessary for managing data stored in the nonvolatile memory.
  • An address table wherein the address table is for the physical block for which the error correction circuit has detected a read error.
  • An error table having a plurality of error records, which are information related to output errors, and an entry table having information on whether data has been written or erased for each physical block of the non-volatile memory, and A logical unit address specified by the host device to the external unit, and a rotary object conversion table indicating conversion information of the physical block address of the non-volatile memory, and the arithmetic processing unit includes an error of the error correction circuit. Based on the detection, the error record of the error table is registered and updated, and it is determined whether to use the physical block in which the read error is detected.
  • the address table further includes a defective block table for recording information on an address of a physical block which prohibits writing and reading of data, and the error record of the error table is generated from the non-volatile memory. Error of read data
  • error block information for recording information indicating the address of the physical block in which the error occurred
  • error information for recording information indicating the occurrence of the error
  • the error occurred After the information is recorded in the error block erase information for recording information indicating that the data in the physical block is erased and the new data is written, and in the error block erase information, the same physical block is used.
  • the physical processing block is provided with error reoccurrence information indicating that a read error has been detected again, and the arithmetic processing unit refers to the error table when writing data to the nonvolatile memory, and writes the data to the physical block.
  • the error record in which at least the error block information and the error reoccurring information are recorded.
  • the information about the address of the writing physical block the data may be recorded in the defective block table.
  • the error record of the error table may further include error page information in which the address of the physical page for which the error correction circuit has detected a read error is written.
  • the arithmetic processing unit records and updates information in the error record of the error table only when the read error detected by the error correction circuit can not be corrected by the error correction circuit. ⁇ ⁇ .
  • the arithmetic processing unit records and updates information in the error record of the error table only when the read error detected by the error correction circuit can not be corrected by the error correction circuit. ⁇ ⁇ .
  • the address table further includes a defective block table for recording information on an address of a physical block which prohibits writing and reading of data, and an error record of the error table is generated from the non-volatile memory.
  • error correction circuit detects an error in the read data, error block information that records information indicating the address of the physical block that has generated an error, and error counter information that is information that indicates the number of times a read error has occurred And error block erase counter information indicating the number of times the physical block in which the read error has occurred is physically erased.
  • the arithmetic processing unit refers to the error table when writing data in the non-volatile memory.
  • the error counter information and the error block erase information are compared, and the error block erase information indicates a predetermined number of times. And, when the error counter information has a larger value than the error block erasure information, information on an address of a physical block to which the data is to be written may be recorded in the defective block table.
  • the error record of the error table may further include error page information in which the address of the physical page for which the error correction circuit has detected a read error is written.
  • the arithmetic processing unit registers and updates the error record of the error table regardless of whether the correction by the error correction circuit is possible or not. Oh.
  • the arithmetic processing unit registers and updates the error record of the error table regardless of whether or not the error correction circuit corrects the error. Oh.
  • the error record of the error table is error block information in which the address of the physical block for which the error correction circuit has detected a read error is written, and the physical page for which the error correction circuit has detected the read error.
  • an error bit counter for recording information indicating the number of bits of the read error, wherein the arithmetic processing unit is configured to correct the number of error bits correctable by the error correction circuit. Reading the data of the physical block corresponding to the error record of the error table for which the information of the error bit counter is equal to or more than the correction threshold value using the following values and a predetermined correction threshold value, The error correction circuit is made to correct the error of the read data, and the corrected data is transmitted to another physical block. It may be written to click.
  • the arithmetic processing unit has a value equal to or less than the number of error bits correctable by the error correction circuit when the data reading process is not performed on the nonvolatile memory of the external force. And an error record of the error table in which the information of the error bit counter is equal to or more than the correction threshold value using a predetermined correction threshold value. It is also possible to read out the data of the physical block corresponding to the data, make the error correction circuit correct the error of the read data, and write the corrected data to another physical block.
  • the error record of the error table is error block information for recording information indicating the address of the physical block for which the error correction circuit has detected a read error, and the physical condition for which the error correction circuit has detected a read error.
  • Error page information for recording information indicating a page address, and information indicating that a read error having a value equal to or less than the number of error bits correctable by the error correction circuit and equal to or greater than a predetermined correction threshold has occurred.
  • the arithmetic processing unit reads the data of the physical block corresponding to the error record of the error table in which the error occurrence information is recorded, and the data read out to the error correction circuit. Correct the error of the error and write the corrected data to another physical block. ,.
  • the arithmetic processing unit is processed to read data in the non-volatile memory.
  • the physical processing unit corresponds to an error record in the error table in which the error occurrence information is recorded.
  • the read data may be read, the error correction circuit may be made to correct an error in the read data, and the corrected data may be written to another physical block.
  • a defective area detection method of the present invention comprises a plurality of physical blocks as erase units, and the physical blocks have a plurality of physical pages as write units.
  • An error correction circuit having a function of detecting an error with respect to read data from the non-volatile memory and a function of correcting the error if correction is possible; and reading the physical block in which the read error is detected.
  • a method of detecting a defective area of a non-volatile storage device comprising: a memory controller having an error table holding a plurality of error records, which are information on errors; To determine the physical block force data corresponding to the physical address, If there are correctable E error to chromatography data, and output to the outside to correct the error, it is to register the physical address to the E error table.
  • E error E error to chromatography data
  • the data of the physical block whose physical address is registered in the error table is rewritten, information indicating that the data has been rewritten is registered in the error table, and the data is rewritten.
  • an error block erase counter indicating the number of times the data is rewritten is registered in the error table, and If there is a correctable error in the read data, then the error is corrected and output to the outside, and an error power indicating the number of times an error has occurred after the data has been rewritten.
  • the counter may be registered in the error table, and when the error counter indicates a predetermined value or more, writing and reading of data to the physical block in which the error counter is registered may be inhibited.
  • a defective area detection method includes a plurality of physical blocks as erase units, and the physical block includes a plurality of physical pages as write units.
  • An error correction circuit having a function of detecting an error with respect to read data from the non-volatile memory and a function of correcting the error if correction is possible; and reading the physical block in which the read error is detected.
  • a memory controller having an error table holding a plurality of error records, which are information related to errors, and a method of detecting a defective area of a non-volatile storage device comprising: determining a physical address from an externally designated logical address to read data.
  • the information on the number of errors registered in the error table indicates a predetermined value or more, a copying step of copying the data written in the physical block to another physical block is performed. It is possessed.
  • the copying step may be performed between the data reading step and the data output step.
  • the copying step may be performed at the same time by executing external data writing and reading on the non-volatile storage device.
  • the copying step may be performed immediately after the non-volatile storage device is turned on.
  • a non-volatile storage device can be provided.
  • FIG. 1 is a block diagram showing the configuration of a nonvolatile memory device according to a first embodiment.
  • Figure 2 is a block diagram showing the internal configuration of the flash memory.
  • FIG. 3 is a block diagram showing an internal configuration of a physical block 201.
  • Figure 4 is a diagram showing the configuration of the BB table 112.
  • Figure 5 is a diagram showing the configuration of the ECC error table 111.
  • FIG. 6 shows the ECC error record of the first embodiment and the change in information stored in the ECC error record.
  • FIG. 7 is a flowchart of readout in the first embodiment.
  • FIG. 8 is a flowchart of ECC error table registration of the first embodiment.
  • FIG. 9 is a flowchart of the ECC error table update at the time of physical erase in the first embodiment.
  • FIG. 10 shows an ECC error record of the second embodiment.
  • FIG. 11 is a flowchart of ECC error table registration of the second embodiment.
  • Figure 12 is stored in the ECC error record and ECC error record of the third embodiment. Diagram showing changes in information.
  • FIG. 13 is a flowchart of ECC error table registration of the third embodiment.
  • FIG. 14 is a flowchart of the ECC error table update at the time of physical erase in the third embodiment.
  • FIG. 15 is a flowchart of readout in the fourth embodiment.
  • Figure 16 is a diagram showing the progress of progressive errors.
  • FIG. 17 is a block diagram showing the configuration of the nonvolatile memory device of the fifth embodiment.
  • FIG. 18 is a block diagram showing the internal configuration of the flash memory.
  • FIG. 19 is a block diagram showing an internal configuration of a physical block 201.
  • FIG. 20 is a diagram showing the configuration of an ECC error table 111.
  • FIG. 21 shows an ECC error record of the fifth embodiment.
  • FIG. 22 is a flowchart of readout according to the fifth embodiment.
  • FIG. 23 is a flowchart of ECC error table registration of the fifth embodiment.
  • FIG. 24 is a flowchart of data correction copying processing of the fifth embodiment.
  • FIG. 25 is a flowchart of readout of the sixth embodiment.
  • FIG. 26 is a flowchart of data correction copying processing of the sixth embodiment.
  • FIG. 1 is a block diagram showing the configuration of the non-volatile storage device of the first embodiment.
  • Memory power The memory 101 includes a memory controller 102 and a flash memory 103 which is a non-volatile memory.
  • FIG. 2 is a block diagram showing an internal configuration of the flash memory 103.
  • a flash memory having a capacity of 1 Gbit will be described.
  • the inside of the flash memory 103 consists of 1024 physical blocks of PBO to PB1023.
  • a physical block is the minimum unit of data erase in the flash memory 103.
  • One physical block capacity is 128kB + 4kB, which is not a power of two and has a capacity slightly larger than a power of two.
  • the expression of 128 kB + 4 kB instead of the expression of 132 kB means that the capacity of data that can be written to one physical block is 128 kB, and in addition to this, an ECC code or the like is recorded in an area of 4 kB. This is to indicate that management data such as the logical address value of the physical block is to be written.
  • FIG. 3 is a block diagram showing an internal configuration of a physical block.
  • Each physical block in the flash memory 103 comprises 64 physical pages PPO to PP63.
  • a physical page is the smallest unit of data writing in flash memory 103.
  • the capacity of one physical page is 2kB + 64B. This representation shows that the capacity of data that can be written to one physical page is 2 kB, and the remaining 64 B writes management data including ECC, as in the case of the physical block described above.
  • the memory controller 102 has a host interface 104, an address table 106, a flash interface 107, a buffer memory 108, an ECC circuit 109, and an MPU (small operation unit) 105.
  • the host interface 104 controls an interface with a host device connected to the outside of the memory card 101.
  • the address table 106 is a table having management information of data stored in the flash memory 103, and includes a logical / physical conversion table 110, an ECC error table 111, an entry table 113, and a BB (bad block). And table 112). These tapes are kept in volatile memory.
  • the logical-physical conversion table 110 shows the correspondence between the address of the logical block which is a logical address which specifies the external power of the memory card 101 and the address of the physical block which is a physical address inside the flash memory 103. It is a table.
  • the logical-physical conversion table 110 is for obtaining the physical address corresponding to the logical block from the logical address.
  • the ECC error table 111 has information such as physical address of physical block where read error occurred, history of physical erase of data, history of read error after physical erase, etc. Used for the detection of
  • the entry table 113 is a table having information indicated by one bit as to whether data has been written to or erased from each physical block of the flash memory 103. For example, a physical block to which data has been written is represented by a bit '0', and an erased physical block is represented by a bit '1'.
  • the structure of the BB table 112 is shown in FIG.
  • Each BB record i has a one-to-one correspondence with a physical block, and has an address of the corresponding physical block. Furthermore, it has information indicated by one bit as to whether or not the corresponding physical block is a bad block.
  • the physical block of the bad block is displayed as bit "0" and the non-bad physical block as bit "1" in the BB record i, where the BB table 112 does not have the BB record i for all physical blocks. You may carry BB records i only for bad blocks.
  • Flash interface 107 writes data of buffer memory 108 to flash memory 103, writes data of flash memory 103 to buffer memory 108, or erases data of flash memory 103 under the control of MPU 105 described later.
  • the buffer memory 108 is a volatile memory for temporarily holding data when writing and reading data between an external host device and the flash memory 103.
  • the ECC circuit 109 generates an ECC code to be added to the write data transferred from the buffer memory 108 to the flash memory 103. Also, the ECC circuit 109 performs an ECC operation on the data read to the flash memory 103 power buffer memory 108, detects an error, and if the error is a correctable error, It is an error correction circuit that corrects the data of the knock out memory 108.
  • the MPU 105 is a microcomputer that controls the entire memory controller 102.
  • the host interface 104, the ECC circuit 109, the flash interface 107, and the address table 106 Control directly.
  • the MPU 105 refers to the information in the ECC error table 111 in the address table 106 and updates the ECC error table 111 as necessary.
  • the MPU 105 records the information of the physical block in the BB record i of the BB table 112 and updates the BB table 112. Furthermore, the MPU 105 updates the entry table according to the contents of the updated BB table.
  • FIG. 5 shows the structure of the ECC error table 111.
  • the ECC error table 111 is composed of 16 ECC error records #i represented by hexadecimal numbers # 0 to #F.
  • FIG. 6 is a diagram showing changes in information stored in the fino record of ECC error record #i and ECC error record #i.
  • Each ECC error record #i includes an error block 601, error occurrence information 602, error block erasure information 603, and error reoccurrence information 604.
  • the error block 601 stores the physical address of the physical block 201 in which the read error has occurred.
  • Error occurrence information 602 is information indicating that the first read error has occurred.
  • the error block erase information 603 is information indicating that physical erase has been performed on the physical block 201 after the first read error occurs.
  • the error reoccurrence information 604 is information indicating that the read error has occurred again in the same physical block even if the physical erase is performed after the occurrence of the first read error.
  • FIG. 7 is a flowchart of data reading in the nonvolatile memory device of this embodiment.
  • the external host device When reading data from the external host device memory card 101, the external host device sends a read command and a start address to the memory card 101. Receiving this command and the start address, the host interface 104 notifies the MPU 105 of the reception.
  • the flowchart in FIG. 7 shows the processing after receiving this notification.
  • the MPU 105 obtains the physical block address from the logical-physical conversion table 110 by using the start address, with the upper address part corresponding to 128 kB unit as the logical block address. The lower address part corresponding to 128 kB or less shall be the same as the logical page as the logical page address.
  • the MPU 105 instructs the flash memory interface 107 the address of the physical block to be read and the address of the physical page, and reads data from the flash memory 103 (S 701).
  • the ECC circuit 109 determines whether a read error has occurred in the data read in S701 (S702). If the read error is not detected, the MPU 105 instructs the host interface 104 to output data to the external host device (S 705). After that, as long as reading is continued (S706), the process proceeds to S701 with the address being increased in units of reading, and the data reading process is continued.
  • the ECC circuit 109 determines whether the read error can be corrected (S703). If correction is possible, the read error is corrected (S704). After correcting the read error, the process transitions to step S705 to output read data. If the correction of the read error is not possible, the ECC error table is registered (S 707), and after the registration, the read process is ended.
  • the MPU 105 searches the registration state of the ECC error tape 111 (S801). Specifically, it is checked whether the physical address of the physical block that has caused the read error matches the value of one of the error blocks 601 of the ECC error record #i.
  • the MPU 105 determines whether or not the read error power generated after the physical erase is performed (S804). If the error block erase information 603 in the ECC error record #i registered in the error block 601 is "0", it is not a read error that occurred after the physical erase, so the update of the ECC error record #i and the ECC error table 1 The registration process is ended without performing registration of 11. If a read error occurs and "1" is registered in the error occurrence information 602 and then the number of occurrences of the read error is counted, as long as the same data of the same block is read, the generated error is an accidental force, Improper fixing It can not be judged. Therefore, the registration process ends without updating the ECC error record #i.
  • the error record #i is in the state shown in FIG. 6 (c) in S804, it is understood that the error block erase information 603 is “1”, which is a read error that has occurred after physical erase. .
  • the error reoccurrence information 604 is rewritten to "1", and then the registration process is ended (S805). That is, the contents of ECC error record #i should be updated Read error is a read error that occurs even after the newly written data after performing physical erase on the physical block where the read error occurred. It is.
  • FIG. 9 is a flowchart of ECC error table update and defective block registration in the physical erase performed prior to the writing of data.
  • the external host device sends a write command and a write start address to the memory card 101.
  • the MPU 105 searches the registration status of the ECC error table 111 (S901). Specifically, it is checked whether the address of the physical block to be written matches the value of the error block 601 of the ECC error record.
  • the error block deletion information 603 is recorded (S9). 04). From this, it can be understood that no errors have occurred in the write after physical erase, although an error has occurred before. That is, it is determined that the first error occurred is an accidental error. In that case, delete the registration of the corresponding ECC error record #i
  • the update of the table 111 is completed (S906). The registration deletion is performed by setting the value of the error block 601 of the ECC error #i in FIG. 6 (a) as an invalid value.
  • the bad block registration in S 905 is to register a bid '0' in the BB record i corresponding to the address of the physical block in the BB table 112. Registration of the BB record i This is not enough to limit the use of a bad block, so register the bit '0' in the entry table 113 for the physical block registered as bit 0 in the BB record i. . If Bid '0' is registered in the entry table 113, the bad block is treated as a written block, so the use of the bad block can be restricted.In any case, the entry for the physical block registered in the BB record i as a bad block Registering a bid '0' in the table prevents the use of bad blocks.
  • the ECC error table has information for determining whether an error that has occurred is due to accidental force or fixed failure. That is, if the data in the physical block is physically erased after the first read error occurs and the read error does not occur in the newly written data, it can be determined that the first error is accidental.
  • the configuration of the non-volatile memory device in the present embodiment is shown in FIG.
  • the memory card 101 includes a memory controller 102 and a flash memory 103 which is a non-volatile memory.
  • the components included in the memory controller 102 are the same as those described in the first embodiment.
  • FIG. 2 is a block diagram showing an internal configuration of the flash memory 103, and the inside of the flash memory 103 is composed of 1024 physical blocks of PBO to PB1023.
  • FIG. 3 is a block diagram showing the internal configuration of the physical block, and each physical block comprises 64 physical pages PPO to PP63. These are similar to those described in the first embodiment.
  • the ECC error table 111 shown in FIG. 5 includes a plurality of ECC error records #i, which are similar to those described in the first embodiment.
  • ECC error record #i The configuration of the ECC error record #i of this embodiment is shown in FIG. In FIG. 10, an error page 1001 is provided in addition to the error block 601, the error occurrence information 602, the error block erasure information 603, and the error reoccurrence information 604 shown in FIG. 6 of the first embodiment. Since this error page 1001 has the address of the physical page in which the read error is detected as information, ECC error record #i can be configured in units of physical page.
  • Reading of data in the non-volatile storage device of this embodiment is performed according to the flowchart shown in FIG. 7, and the processing in each step except S 707 is the same as that of the first embodiment. .
  • the ECC error table registration of S707 performed when the error correction is impossible in S703 will be described with reference to FIG.
  • the MPU 105 searches the registration status of the ECC error table 111, holds the address of the physical block where the read error occurred in the error block 601, and sets the address of the physical page where the error occurred in the error page 101. Look for the ECC error record #i to have (S 1101).
  • the MPU 105 determines that the ECC error record # i is not registered (S 1102), and the error occurrence information is an ECC error Newly register to record #i (S1103).
  • the address of the physical block in which the page in which the error occurred exists is an error block 601
  • the read error occurrence “1” is indicated in the error occurrence information 602
  • the physical page address of the page in which the error occurs is an error Complete by writing on page 1001.
  • register “0” indicating the initial value.
  • the MPU 105 determines whether it is a read error after physical erase (S1104). That is, if the error block erase information 603 of the ECC error record #i that has been registered is “0”, the MPU 105 determines that the physical erase has not been performed yet and that it is not a read error after physical erase. End without updating ECC error record #i. As long as the same data on the same physical page is read, this judgment can not be used to determine whether it is an accidental error or an error due to a fixed failure, even if the read error occurs many times. ! /.
  • FIG. 9 is a flowchart showing ECC error table updating and defective block registration at the time of physical erasure.
  • the processing of S 901 is different from that of the first embodiment, and therefore will be described. If the S901 search is performed based on the physical block address, which is the unit of physical erase, some ECC error records #i with the same physical block address but different physical page addresses may be detected. . That is, a plurality of ECC error records #i having the same value of the error block 601 but different values of the error page 1001 are detected (S901). Since a plurality of detected ECC error single records #i are to be processed in the next step in the order detected in S901, the processes after S902 are the same as in the first embodiment.
  • the method of defective block registration and the method of preventing use of defective blocks by registration in the entry table are the same as in the first embodiment.
  • the present embodiment is characterized in that an error page 1001 is provided in the configuration of the ECC error record #i, and the ECC error record #i is newly registered for each physical page address. In this way, even if errors occur continuously in the same physical block, it is possible to distinguish between forces that occurred in different physical pages and whether they occurred in the same physical page, and accidental errors It is possible to determine with high accuracy whether it is an error due to a fixed defect or not.
  • the unit of pages to be read is the physical unit, which is the minimum unit of writing. Even if it uses the unit of reading of the system to be configured or the unit of adding ECC code as a page, error management with higher accuracy than error management in physical block unit can be performed. The registration and update of the ECC error table may be performed regardless of the read error correction.
  • the configuration of the non-volatile memory device in the present embodiment is shown in FIG.
  • the memory card 101 includes a memory controller 102 and a flash memory 103 which is a non-volatile memory.
  • the components included in the memory controller 102 are the same as those described in the first embodiment.
  • FIG. 2 is a block diagram showing an internal configuration of the flash memory 103.
  • the flash memory 103 includes 1024 physical blocks PBO to PB1023.
  • FIG. 3 is a block diagram showing the internal configuration of the physical block, and each physical block comprises 64 physical pages PPO to PP63. These are similar to those described in the first embodiment.
  • the ECC error table 111 shown in FIG. 5 includes a plurality of ECC error records #i, and is similar to that described in the first embodiment.
  • the structure of the ECC error record #i of this embodiment is shown in FIG. Figure 12 shows the change in the information stored in the ECC error record # i field and the ECC error record # i! / ⁇ .
  • the error block 1201 stores the physical address of the physical block where the error occurred.
  • the error counter 1202 stores the number of times a read error has occurred. If a read error occurs on the newly written data after the physical erase of the physical block, the number of errors in the error counter 1202 is increased by one.
  • the error block erase counter 1203 indicates the number of times the physical block in which the read error has occurred is physically erased.
  • Reading of data in the non-volatile storage device of the present embodiment is performed according to the flowchart shown in FIG. 7, and the processing in each step except S 707 is the same as that of the first embodiment.
  • the ECC error table registration of S707 which is performed when the error correction is impossible in S703, will be described.
  • An ECC error table registration process is shown in FIG. First, the MPU 105 searches for the registration status of the ECC error table 111 (S1301). Specifically, a read error occurred It is a search for looking for ECC error record #i which has physical block address in error block 601.
  • the MPU 105 determines that there is no registration (S1302), and newly registers the ECC error record #i (S1303).
  • the state after new registration is shown in Fig. 12 (b).
  • the error block 1201 the address of the physical block in which the read error has occurred is written as a valid value.
  • the error counter 1202 "1" is written to indicate that a read error has occurred once.
  • the error block erase counter 1203, "0" is written to indicate that the number of times of physical erase after an error occurs is zero.
  • the MPU 105 refers to the registered ECC error record # 1 and determines whether or not the first error power generated after the physical erase (S1304). Specifically, the error counter 1202 of the ECC error record #i detected in S1301 is compared with the error block erase counter 1203. If the error counter 1202 has a value larger than the erasure counter 1203, it is determined that the update immediately before the ECC error record #i is an increase in the error counter 1202 due to the occurrence of a read error. Since physical erasure is not performed after a read error occurs, registration of the ECC error table 111 is ended without updating the ECC error record #i.
  • the error counter 1202 has been registered or updated, as long as the physical block 201 is not physically erased, no matter how many read errors occur, whether it is an error due to accidental error or a fixation failure? You can not cut a half IJ. Therefore, if the error counter 1202 has a larger value than the error block erase counter 1203, the error counter 1202 is not further increased.
  • the MPU 105 determines that the read error has occurred after the physical erase, and transitions to S1305. Then, in FIG. 12, as shown in (c) to (d) and (e) to (f), the information in the error counter 1202 is increased by one and rewritten, and the updating of the table also ends.
  • EC cError record The read error for updating the contents of #i is a read error that occurs even after the newly written data after performing physical erase on the physical block where the read error occurred. .
  • FIG. 14 is a flow chart of an ECC error table update at the time of physical erase prior to data write.
  • the MPU 105 searches the registration state of the ECC error table 111 (S1401). Specifically, it is a search for finding an ECC error record having an address of the physical block of the flash memory 103 which is the target of physical erase in the error block 1201.
  • the MP U 105 determines that there is no registration (S 1402) and ends without updating the ECC error table 111. If the corresponding ECC error record #i exists in the search of S1401, it is determined that the registration is present (S1402).
  • the MPU 105 refers to the ECC error record #i, and determines whether an error after physical erasure has occurred (S 1403). Specifically, if the error counter 1202 and the error block erase counter 1203 are compared and both have the same value, the update immediately before the ECC error record #i is an increase of the error block erase counter 1203 due to physical erase. , It is determined that no error has occurred after erasing. From this, it is determined that the read error that occurred before the physical erase was an accidental error. After this determination, the MPU 105 deletes the registration of the ECC error record #i (S1404), and ends the update of the ECC error table 111. Registration can be canceled by setting the value of the error block 1201 to an invalid value as shown in Fig. 12 (a).
  • the ECC error record #i The update immediately before is the increase of the error counter 1202 due to the occurrence of an error, and it can be determined in S1403 that an error after erasure has occurred.
  • the MP U 105 refers to the error counter 1202 (S1405), and determines whether or not the force is within a predetermined number of times set in advance. Since it is not necessary to register a defective block within the specified number of times, the value of the error block erase counter 1203 in the ECC error table 111 is increased by one.
  • the updating of the ECC error table 111 is finished. If the number of errors exceeds the specified number in S1405, the block is regarded as a physical block having a fixed defect and defective block registration is performed. The defective block registration is registered in the BB record i corresponding to the address of the physical block (S1407). After registration of the bad block, the registration of the ECC error record #i of the physical block is deleted (S 1404).
  • the method of defective block registration and the method of preventing use of defective blocks by registration in the entry table are the same as in the first embodiment.
  • the error table may be registered in units of physical pages by adding error page information for recording a physical block page to the ECC error record #i of this embodiment. Also, registration and updating of the ECC error table will be performed regardless of whether the read error can be corrected.
  • the configuration of the non-volatile memory device in the present embodiment is shown in FIG.
  • the memory card 101 includes a memory controller 102 and a flash memory 103 which is a non-volatile memory.
  • the components included in the memory controller 102 are the same as those described in the first embodiment.
  • FIG. 2 is a block diagram showing an internal configuration of the flash memory 103, and the inside of the flash memory 103 consists of 1024 physical blocks of PBO to PB1023.
  • FIG. 3 is a block diagram showing the internal configuration of the physical block, and each physical block comprises 64 physical pages PPO to PP63. These are similar to those described in the first embodiment.
  • the ECC error table 111 shown in FIG. 5 includes a plurality of ECC error records #i, and is similar to that described in the first embodiment.
  • FIG. 15 is a flowchart of data read in the nonvolatile memory device of this example.
  • the process in S1501 is the same process as S701 in the first embodiment.
  • the ECC circuit 109 determines whether or not a read error has occurred in the read data (S1502). If a read error has not occurred, the MPU 105 instructs the host interface 104 to output data to the external host device (S1506). Thereafter, as long as reading is continued (S1507), the process proceeds to S1501 with the address being increased in units of reading, and the data reading process continues.
  • S1502 It is determined whether or not a read error has occurred (S1502). If a read error has occurred, registration of an ECC error record #i is performed in the ECC error table 111 (S1503). When registration in the ECC error table 111 is completed, the ECC circuit 109 determines whether the read error can be corrected (S 1504), and if correctable, corrects the read error (S 1505). After the read error correction, read data is output, and it is determined whether or not the data read continues (S1507). If correction of the read error is not possible (S 1504), the read is immediately terminated.
  • the ECC error table update and defective block registration at the time of physical erase performed prior to the writing of data are the same as in the first embodiment, as shown in FIG.
  • the method of defective block registration and the method of preventing use of a defective block by registration in the entry table are the same as in the first embodiment.
  • the error table may be registered in units of physical pages by adding error page information for recording a physical block page to the ECC error record #i of this embodiment. Also, registration and updating of the ECC error table will be performed regardless of whether the read error can be corrected.
  • FIG. 16 shows how bit errors increase as the number of readings is repeated when data written to a certain physical block is read repeatedly.
  • the mesh pattern represents the number of bits of the error that occurred, and as the number of readings increases, it increases toward the broken line of the number of ECC correctable bits that represents the correction capability of the ECC circuit.
  • Such an error occurs because the bit written to the memory cell changes due to the voltage applied to the memory cell for data reading. In this embodiment, such an error is called a progressive error.
  • the location represented by EZW in FIG. 16 represents the erasing and writing of data, and indicates that the physical block data has been erased and then new data has been written to the same physical block. doing. Immediately after the EZW, the progressive error disappears. If the number of data reading increases, the number of progressive error bits gradually increases, and the ECC circuit's correction capability loses its capacity. It is not desirable that errors in the number of bits exceeding the correction capability of the ECC circuit occur by repeatedly reading data in this state. Therefore, a correction threshold is provided below the correctable number of bits of the ECC circuit, and if an error of the number of bits above the correction threshold is detected in the read data of a certain physical block, the detected error is corrected and corrected. Write the data to another physical block.
  • FIG. 17 is a block diagram showing the configuration of the nonvolatile memory device of this embodiment.
  • the memory card 701 includes a memory controller 702 and a flash memory 703 which is a non-volatile memory.
  • FIG. 18 is a block diagram showing an internal configuration of flash memory 703.
  • a flash memory having a capacity of 1 Gbit will be described.
  • the inside of the flash memory 703 consists of 1024 physical blocks of PB0 to PB1023.
  • the physical block is the smallest unit of data erasure in the flash memory 703.
  • One physical block capacity is represented by 128 kB + 4 kB. This indicates that the data capacity of one physical block is 128 kB, and furthermore, management data such as the ECC code and the logical address value of the physical block are written in the 4 kB area.
  • FIG. 19 is a block diagram showing an internal configuration of a physical block.
  • Each physical block in the flash memory 703 comprises 64 physical pages PP0 to PP63.
  • the physical page is the smallest unit of data writing in flash memory 703.
  • the capacity of one physical page is 2kB + 64B. This indicates that the amount of data that can be written to one physical page is 2 kB, and the remaining 64 B is to be written with management data including ECC.
  • the memory controller 702 has a host interface 704, an address table 706, a flash interface 707, a no-flop memory 708, an ECC circuit 709, and an MPU (small operation unit) 705.
  • the host interface 704 controls an interface with a host device connected to the outside of the memory card 701.
  • Address table 706 is a table having management information of data stored in flash memory 703, and has logical / physical conversion table 710, ECC error table 711 and entry table 712. . These tables are held in volatile memory.
  • the logical-physical conversion table 710 shows the correspondence between the address of the logical block, which is a logical address that also specifies the external power of the memory card 701, and the address of the physical block, which is a physical address inside the flash memory 703. It is a table.
  • the logical-physical conversion table 710 is for obtaining the physical address corresponding to the logical block from the logical address.
  • the ECC error table 711 contains information such as a physical address of a physical block in which a read error has occurred, a history of physical erase of data, and a history of occurrence of read errors after physical erase. It is used to detect physical blocks of fixed failure.
  • the entry table 712 is a table having information indicated by one bit as to whether data has been written to or erased from each physical block of the flash memory 703. For example, a physical block to which data has been written is represented by a bit '0', and an erased physical block is represented by a bit '1'.
  • the flash interface 707 writes data in the flash memory 708 in the flash memory 703 under control of the MPU 705 described later, writes data in the flash memory 703 into the buffer memory 708, and erases data in the flash memory 703.
  • the buffer memory 708 is a volatile memory for temporarily holding data when writing and reading data between an external host device and the flash memory 703.
  • the ECC circuit 709 generates an ECC code to be added to the write data transferred from the buffer memory 708 to the flash memory 703. Also, the ECC circuit 709 performs ECC operation on data read from the flash memory 703 to the buffer memory 708 to detect an error, and if the error is a correctable error, the data in the cache memory 708 It is an error correction circuit that corrects
  • the MPU 705 is a microcomputer that controls the entire memory controller 702.
  • the host interface 704, the ECC circuit 709, the flash interface 707, and the address table 706 are directly controlled.
  • the MPU 705 refers to the information in the ECC error table 711 in the address table 706 and updates the ECC error table 711 as necessary. Furthermore, the MPU 705 also updates the entry table according to the content of the BB table after the update.
  • FIG. 20 shows a structure of the ECC error table 711.
  • the ECC error table 7 11 is composed of 16 ECC error records #i represented by hexadecimal numbers # 0 to #F.
  • FIG. 21 shows the configuration of the ECC error record #i of this embodiment.
  • the ECC error record # i in this embodiment is an error block 601 that stores the address of the physical block in which the error occurred and an error page 1001 that stores the address of the physical page in which the error occurred.
  • an error bit count 1601 that stores the number of bits of the error that occurred.
  • the error bit count 1601 has the number of read error bits as information and represents the degree of bit error that occurred in the ECC error record #i.
  • FIG. 22 is a flowchart of data read in the non-volatile storage device of this embodiment.
  • the MPU 705 instructs the flash memory interface 707 the address of the physical block to be read and the address of the physical page, and reads data from the flash memory 703 (S 1701).
  • the ECC circuit 709 determines whether a read error occurs with respect to the read data (S1702). A read error has occurred.
  • the MPU 705 instructs the host interface 704 to output data to the external host device (S1707). Thereafter, as long as reading is continued (S1708), the process of reading data is continued by looping to S1701 while incrementing the address in units of reading.
  • the read error is corrected (S1705). After the read error correction, data correction copy processing is performed (S1706), and read data is output (S1707). After that, it is determined whether the reading continues (S1708)
  • the MPU 705 searches the registration state of the ECC error table 711 (S 1801). Specifically, the physical address of the physical block and physical page where the read error occurred, ECC error table 711! Any ECC error record # i, does it match the value of error block 601 and error page 1001? Find out. Next, if there is no corresponding ECC error record #i in the search of S1801, it is judged that the registration is not performed (S1802). Subsequently, the values of the error block 601, the error page 1002, and the error bit number 1603 are newly registered in the vacant ECC error record #i (S1803).
  • the error bit count to be registered in the ECC error record #i can not be determined. Register the value that can be divided. For example, if the maximum correction capability of the EC C circuit 709 is 4 bits, 5 which is a value exceeding that may be registered.
  • the MPU 705 determines whether the bit count of the error that has occurred this time is more than the error bit count of ECC error record # i ( S 1804). If the error bit count 1601 of the ECC error record # i that has been registered is compared with the error bit count in this read and the bit count has not increased, the process ends without updating the ECC error record. If it has increased, the error bit count 1601 is rewritten to the value after the increase, and the registration of the ECC error table is ended (S1805).
  • the MPU 705 After correcting the correctable error (S1705), the MPU 705 determines whether the data of the physical page read this time may be read continuously. In other words, if data is read continuously from now on, it is highly likely that an uncorrectable bit error will occur!
  • the ECC error record # also obtains the value of the error bit count 1601 (S 1901). Next, it is determined whether the acquired error bit count is 4 bits or more of the correction threshold (S 1902). If the error bit count is less than 4 bits of the correction threshold value, it is judged that the uncorrectable read error will not occur immediately even if the error bit increases, and the data correction copying process is ended.
  • the value is equal to the correction threshold value, and thus the data after correction is written (S1903).
  • the corrected data in the MPU 705, for example, the buffer memory 708 is written to any physical block of the flash memory 703.
  • the physical blocks that write data to are the physical blocks other than the physical block from which the data was read.
  • the registration of the ECC error record #i for the physical block in which the error occurred is deleted (S1904).
  • the data correction copying process (S 1706) is performed. Not performed.
  • the data after error correction is stored in the flash memory 103. Write to another physical block.
  • the ECC error record # i of the ECC error tape No 711 and the error bit count 1601 are provided.
  • the effect of the present invention can be realized by using a flag as error occurrence information indicating whether it is the correction threshold or more.
  • registration of the ECC error table may be performed only when an error that is equal to or higher than the correction threshold and that can be corrected is generated.
  • an error bit count 1601 is used.
  • a symbol correctable error correction circuit such as Reed-Solomon code
  • a memory card 701 includes a memory controller 702 and a flash memory 703 which is a non-volatile memory.
  • the components included in the memory controller 702 are the same as those described in the fifth embodiment.
  • FIG. 18 is a block diagram showing an internal configuration of flash memory 103, and a flash memo
  • the interior of the library 703 consists of 1024 physical blocks of PBO to PB1023.
  • FIG. 19 is a block diagram showing an internal configuration of the physical block, and each physical block in the flash memory 703 comprises 64 physical pages PP0 to PP63. These are the same as those described in the fifth embodiment.
  • the ECC error table 711 has a plurality of ECC error records #i. Also, the configuration of the ECC error record #i of this embodiment is as shown in FIG.
  • the ECC error record #i contains an error block 601 that stores the address of the physical block where the error occurred and an error page 1001 that stores the address of the physical page where the error occurred, and the error bit that occurred. It has an error bit force 1601 that stores the number. These are the same as in the fifth embodiment.
  • FIG. 25 is a flowchart of data reading in the nonvolatile memory device of this embodiment.
  • the address of the physical block to be read and the address of the physical page are instructed to the flash memory interface 707 to read data from the flash memory 703 (S2001).
  • the ECC circuit 709 determines whether a read error has occurred in the read data (S2002). If a read error has not occurred, the MP U 705 instructs the host interface 704 to output data to the external host device (S2006). Thereafter, as long as reading is continued (S2007), the process of reading data is continued by looping to S2001 while increasing the address in units of reading.
  • the ECC error table is registered (S2004).
  • the ECC error table here is registered in the same manner as the process described in FIG. 23 of the fifth embodiment.
  • the error is corrected in the buffer memory 708 (S 2005), and the MPU 705 instructs the host interface 704 to output data to the external host device (S 2006).
  • the process is looped to S2001 while the address is increased in units of reading, and the reading process is performed.
  • the data correction copying process performed in the fifth embodiment is not included in the flowchart of data reading. That is to prevent writing of data to the flash memory 703 during the data read process in the present embodiment.
  • the write time of the flash memory takes a long time compared to the read time, if such time intensive write processing is performed during data read, processing performance may be degraded. Therefore, writing to the flash memory 703 is not performed during reading of data.
  • the data correction copying process is performed during an idle time when no other process is performed. After the memory card 701 external power data is written and read, and the memory card 701 is powered on, the memory card 701 external power data It is a period of time until processing of 'write' and 'read' is performed.
  • the MPU 705 searches an error record of the ECC error table 711 in free time, and selects an ECC error record #i in which an error bit count 1601 is 4 bits greater than the correction threshold (S2101). At this time, if there is no corresponding error record (S2102), the data correction copying process is ended.
  • the physical block and physical page addresses are acquired from the error block 601 of the error record #i and the error page 1001 (S2103). Then, the data belonging to the acquired address is read out to the buffer memory 708 (S2104). Subsequently, the error is corrected by the ECC circuit 109 (S2105), and the corrected data is written in any physical block of the flash memory 703 (S2106). The physical block to which data is written at this time is a physical block other than the physical block registered in the error record #i. Finally, the registration of the corresponding error record #i is deleted and the processing is ended (S2107).
  • the ECC error record # i of the ECC error tape No 711 # ⁇ error bit count 1601 is not limited to this, and it may be any one that indicates the degree of error. For example, even if it is not a specific number of bits, it can be easily conceived that the effects of the present invention can be realized using a flag as error occurrence information indicating whether the correction threshold has been exceeded. Furthermore, registration of the ECC error table may be performed only when an error that is equal to or higher than the correction threshold and that can be corrected is generated.
  • an error bit count 1601 is used.
  • a symbol correctable error correction circuit such as Reed-Solomon code
  • the non-volatile storage device can detect a fixing failure of the non-volatile memory and thereafter limit the use of the block, thereby reducing read errors.
  • a memory card system using a non-volatile memory requiring error correction by ECC, for example, a storage memory for storing still images of digital cameras.

Landscapes

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

Abstract

 本発明は、フラッシュメモリ内で固定不良を発生した物理ブロックの使用を制限するために、当該物理ブロックを適確に検出することを目的とする。  ECCエラーレコードに、物理ブロックのエラーの発生履歴や、物理消去の履歴を記録し、発生したエラーが偶発的なものか、固定不良によるものかを判断する。最初の読出しエラー発生後、物理消去して書換えたデータでエラーが再発しないのなら最初のエラーは偶発的であり、なおエラーが発生するのであれば、固定不良によるエラーであると判断する。このようなECCエラーレコードを用いることで、偶発的なエラーか、固定不良によるエラーかを適確に判断できる。その判断にもとづき固定不良の物理ブロックを使わないことで、読出しエラーを低減させるという効果を生む。

Description

明 細 書
不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
技術分野
[0001] 本発明は、不揮発性メモリに記録したデータの信頼性を向上させるための誤り訂正 機能を用いた不揮発性記憶装置において、不揮発性メモリの不良により発生する偶 発的ではな 、読出しエラーを低減するための不揮発性記憶装置、メモリメモリコント口 ーラ及び不良領域検出方法に関する。
背景技術
[0002] 近年、不揮発性メモリを搭載したメモリカードは、デジタルカメラや携帯電話のメモリ カードとして巿場を拡大している。しかし、不揮発性メモリは、データを書きかえる度に メモリセルが徐々に劣化し、最終的には書込みや読出しのエラーが起こる。もちろん 十分に信頼性が高ぐ書換えによるメモリセルの劣化をほぼ無視できるのであれば、 たとえ 10年間の使用においてもなんら問題はない。しかし、実際にはそうではないこ ともあり、不揮発性メモリを制御するシステムに ECC (Error Check and Correct )回路などの誤り訂正回路を搭載することで、実質的に信頼性の高いメモリカードが 実現されている。
[0003] し力し、プロセスの微細化によってメモリセルのサイズを小さくすることや、大容量化 のための多値ィ匕によりメモリセル単体の信頼性を保つことが困難となっている。また、 大容量ィ匕が進むとともにメモリのパターンが増加し、製品検査の時間も増えるので、 デバイスを十分に精度高く検査することは困難になっている。
[0004] フラッシュメモリの書込みや読出しのエラーを管理する方法として、特許文献 1には 読出し、書込みにおけるエラー発生情報をカウントして、劣化した領域は使用しない ようにする方法が提案されている。また特許文献 2には、読出しエラーが連続する領 域につ 1ヽて代替処理を行う方法が提案されて!ヽる。
特許文献 1:特開平 11― 53266号公報
特許文献 2 :WO0lZ022232
発明の開示 発明が解決しょうとする課題
[0005] フラッシュメモリを含む大部分の不揮発性メモリは、メモリセルにバイアス等のエネル ギーを印加することなくデータを保持し続けるという性能を有している。これは、デー タを保持して 、る状態が安定であると 、うことを示して 、る。揮発性のメモリである SR AMがエネルギーの印加によってデータを保持していることとは全く異なっている。従 つて不揮発性メモリのデータを書換えるには安定状態にあるメモリセルにエネルギー を印加する必要があるので、この際にわずかではあるがメモリセルの劣化が起こる。
[0006] フラッシュメモリなどの不揮発性メモリで発生する、メモリセルの劣化を原因とするェ ラーは、データの書換えに大きく起因しており、データの読出しによる影響は小さい。 このことを考慮することでエラー発生時の処理を適切に行うことができる力 特許文献 1や特許文献 2に記載の不揮発性記憶装置では、書換えと読出しによる不揮発性メ モリの劣化が十分には考慮されて 、な 、。またデータの読出しによるエラー発生への 影響は書換えに比べると極めて小さいが、同じデータに対する読出しを数多く繰り返 す場合には、メモリセルの劣化ではなぐ徐々に進行するデータ自身の劣化が見られ るので、データ読出しの影響も無視できない。しかし、特許文献 1や特許文献 2に記 載の不揮発性記憶装置は、このような進行性のデータの劣化を十分に考慮したもの ではない。
[0007] 例えば、一般的な不揮発性メモリの代表である NAND型フラッシュメモリは、 ECC 回路による誤り訂正を前提として製品化されている。それは偶発的なビットエラーが、 不揮発性メモリにおいて回避できないからである。そのために、 NAND型フラッシュメ モリを使用しているメモリカードのメモリコントローラは、その内部に ECC符号を生成 する機能や誤りを検出して訂正する機能を持っている。メモリコントローラは、 ECC回 路を用いて偶発的なビットエラーを訂正して、エラーが発生した物理ブロックを再利 用する。これによりメモリカードの実質的な信頼性が向上する。
[0008] し力しながら、偶発的なビットエラーに比べると頻度は低いものの、メモリセルの劣 化等の原因で物理ブロックに固定的に存在する不良により、読出し時にビットエラー が発生することがある。信頼性が十分高ぐビットエラーの発生頻度が低い NAND型 フラッシュメモリを使用している場合には、従来のメモリコントローラのように、発生した ビットエラーを偶発的なものか固定不良によるものかを判断することなぐ物理ブロッ クの使用を制限しても、フラッシュメモリの使用において問題は起こらない。しかし、フ ラッシュメモリのプロセスの微細化や多値ィ匕により、ビットエラーの発生頻度は従来よ り高くなつている。このことから、誤り訂正を行うことを前提として、ビットエラーの存在 を許容する必要があり、ビットエラーが発生しても誤りを訂正してフラッシュメモリを使 用し続ける必要がある。ところが、ビットエラーの要因がメモリセルの固定不良に起因 する場合には、固定不良が存在する物理ブロックはメモリカードの読み出しエラーを 頻発させる。
[0009] 例えば、メモリカードの物理ブロックに存在する固定不良によりデータエラーが発生 して、デジタルカメラで撮影した静止画を見ることができない場合がある。この場合に 静止画のデータをデジタルカメラのシステム上で削除すると、以降撮影する静止画に 対して同一のブロックが再利用されて、データエラーが再度発生してしまう。このよう にして静止画を見られな 、ケースが頻発する。
[0010] また、固定不良ではなくても、同じデータに対して非常に多くの回数の読み出しを 繰り返すと、徐々にではあるがビットエラーが増加し、データが劣化していく場合があ る。この場合でも、信頼性が十分高ぐビットエラーの発生頻度が低い NAND型フラ ッシュメモリを使用している場合には、従来のメモリコントローラのようにビットエラーの 発生によって物理ブロックの使用を制限してもよい。しかし、誤り訂正を行うことが前 提となっている場合、即ちビットエラーの存在を許容する必要がある場合には、ビット エラーが発生しても誤りを訂正してフラッシュメモリを使用し続ける必要がある。そのた めにデータの劣化によるビットエラーのビット数が誤り訂正能力を超えてしまい、訂正 不可能な読出しエラーが発生する結果を招く。これらのことを受けて、読出しエラーを 低減させるメモリカードの開発が課題となっている。
[0011] 本発明は、フラッシュメモリ内で固定不良が存在していると推測される、又は読出し によるビット不良が累積して誤り訂正能力を超えると推測される物理ブロックを適確に 検出する。さらに、その物理ブロックに対する書込みまたは読出しを制限又は回避す ることにより信頼性の高い不揮発性記憶装置を提供することを目的とする。
課題を解決するための手段 [0012] この課題を解決するために、本発明の不揮発性記憶装置は、不揮発性メモリとメモ リコントローラを具備する不揮発性記憶装置であって、前記不揮発性メモリは、消去 単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物理べ ージを複数有してなるものであり、前記メモリコントローラは、前記メモリコントローラ内 部における全体の制御を行う演算処理ユニットと、前記不揮発性メモリから読出した データに対して、エラーを検出する機能と、エラーの訂正が可能である場合には訂正 をする機能とを備える誤り訂正回路と、前記不揮発性メモリに格納されているデータ を管理するために必要なテーブルを保持しているアドレステーブルと、を備え、前記 メモリコントローラのアドレステーブルは、前記誤り訂正回路が読出しエラーを検出し た物理ブロックについての前記読出しエラーに関する情報であるエラーレコードを、 複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対して、デー タが書込み済みであるか、消去済みであるかの情報を持つエントリテーブルと、ホスト 機器が外部力 指定する論理ブロックアドレスと、前記不揮発性メモリの物理ブロック アドレスの変換情報を示す論物変換テーブルとを有し、前記演算処理ユニットは、前 記誤り訂正回路からの誤り検出に基づき前記エラーテーブルのエラーレコードを登 録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどうかを決めるも のである。
[0013] ここで前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを 禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを 更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出し たデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理プロ ックのアドレスを示す情報を記録するエラーブロック情報と、前記エラーが発生したこ とを示す情報を記録するエラー情報と、前記エラーが発生した後に、前記物理ブロッ クのデータを消去して新たなデータを書込んだことを示す情報を記録するエラープロ ック消去情報と、前記エラーブロック消去情報に情報が記録された後、同一の物理ブ ロックで再度読出しエラーを検出したことを示すエラー再発生情報とを備え、前記演 算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテープ ルを参照し、データを書込む物理ブロックにつ 、て少なくとも前記エラーブロック情報 と前記エラー再発生情報とが記録された前記エラーレコードが存在したときは、前記 データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに 記録するようにしてもよ ヽ。
[0014] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるよう にしてもよい。
[0015] ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前 記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコー ドに情報を記録及び更新するようにしてもょ ヽ。
[0016] ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前 記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコー ドに情報を記録及び更新するようにしてもょ ヽ。
[0017] ここで前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを 禁止する物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを 更に備え、前記エラーテーブルのエラーレコードは、前記不揮発性メモリから読出し たデータのエラーを前記誤り訂正回路が検出したときに、エラーを発生した物理プロ ックのアドレスを示す情報を記録するエラーブロック情報と、読出しエラーが発生した 回数を示す情報であるエラーカウンタ情報と、前記読出しエラーの発生した物理プロ ックを物理消去した回数を示すエラーブロック消去カウンタ情報とを備え、前記演算 処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラーテーブル を参照し、データを書込む物理ブロックについて前記エラーブロック情報が記録され た前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記エラーブロッ ク消去情報とを比較して、前記エラーブロック消去情報が所定の回数を示しかつ前 記エラーカウンタ情報が前記エラーブロック消去情報より大きな値であるときに、前記 データを書込む物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに 記録するようにしてもよ ヽ。
[0018] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるよう にしてもよい。
[0019] ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、 前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコ ードを登録及び更新するようにしてもょ 、。
[0020] ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、 前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコ ードを登録及び更新するようにしてもょ 、。
[0021] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した物理ブロックのアドレスが書かれたエラーブロック情報と、前記誤り訂正回 路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情 報と、前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備 え、前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数 以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタ の情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対 応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラ 一を訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。
[0022] ここで前記演算処理ユニットは、外部力 の前記不揮発性メモリに対してデータ読 出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービッ ト数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウ ンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコード に対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータの エラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよ い。
[0023] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記 誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記 録するエラーページ情報と、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す 情報を記録するエラー発生情報とを備え、前記演算処理ユニットは、前記エラー発 生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロック のデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該 訂正されたデータを別の物理ブロックに書込むようにしてもょ 、。
[0024] ここで前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行わ れて 、な 、ときに、前記エラー発生情報が記録された前記エラーテーブルのエラー レコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出した データのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むよう にしてもよい。
[0025] この課題を解決するために、本発明のメモリコントローラは、消去単位である物理ブ ロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有してな る不揮発性メモリに対して、データの読出し及び書込みを制御するメモリコントローラ であって、前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、 前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラー の訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、前記不揮 発性メモリに格納されて ヽるデータを管理するために必要なテーブルを保持して ヽる アドレステーブルと、を備え、前記アドレステーブルは、前記誤り訂正回路が読出しェ ラーを検出した物理ブロックについての前記読出しエラーに関する情報であるエラー レコードを、複数有するエラーテーブルと、前記不揮発性メモリの各物理ブロックに対 して、データが書込み済みであるか、消去済みであるかの情報を持つエントリテープ ルと、ホスト機器が外部カゝら指定する論理ブロックアドレスと、前記不揮発性メモリの 物理ブロックアドレスの変換情報を示す輪物変換テーブルとを有し、前記演算処理 ユニットは、前記誤り訂正回路力 の誤り検出に基づき前記エラーテーブルのエラー レコードを登録、更新し、前記読出しエラーを検出した物理ブロックを使用するかどう かを決めるものである。
[0026] ここで前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロッ クのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラ 一テーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを 前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す 情報を記録するエラーブロック情報と、前記エラーが発生したことを示す情報を記録 するエラー情報と、前記エラーが発生した後に、前記物理ブロックのデータを消去し て新たなデータを書込んだことを示す情報を記録するエラーブロック消去情報と、前 記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読出 しエラーを検出したことを示すエラー再発生情報とを備え、前記演算処理ユニットは 、前記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、デー タを書込む物理ブロックについて少なくとも前記エラーブロック情報と前記エラー再 発生情報とが記録された前記エラーレコードが存在したときは、前記データを書込む 物理ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにし てもよい。
[0027] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるよう にしてもよい。
[0028] ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前 記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコー ドに情報を記録及び更新するようにしてもょ ヽ。
[0029] ここで前記演算処理ユニットは、前記誤り訂正回路が検出した読出しエラーが、前 記誤り訂正回路により訂正ができないときにだけ前記エラーテーブルのエラーレコー ドに情報を記録及び更新するようにしてもょ ヽ。
[0030] ここで前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロッ クのアドレスについての情報を記録する不良ブロックテーブルを更に備え、前記エラ 一テーブルのエラーレコードは、前記不揮発性メモリから読出したデータのエラーを 前記誤り訂正回路が検出したときに、エラーを発生した物理ブロックのアドレスを示す 情報を記録するエラーブロック情報と、読出しエラーが発生した回数を示す情報であ るエラーカウンタ情報と、前記読出しエラーの発生した物理ブロックを物理消去した 回数を示すエラーブロック消去カウンタ情報とを備え、前記演算処理ユニットは、前 記不揮発性メモリにデータを書込むときに、前記エラーテーブルを参照し、データを 書込む物理ブロックについて前記エラーブロック情報が記録された前記エラーレコー ドが存在したときは、前記エラーカウンタ情報と前記エラーブロック消去情報とを比較 して、前記エラーブロック消去情報が所定の回数を示しかつ前記エラーカウンタ情報 が前記エラーブロック消去情報より大きな値であるときに、前記データを書込む物理 ブロックのアドレスに関する情報を前記不良ブロックテーブルに記録するようにしても よい。
[0031] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した前記物理ページのアドレスが書かれたエラーページ情報を更に備えるよう にしてもよい。
[0032] ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、 前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコ ードを登録及び更新するようにしてもょ 、。
[0033] ここで前記演算処理ユニットは、前記誤り訂正回路が読出しエラーを検出すれば、 前記誤り訂正回路による訂正の可否にかかわらず前記エラーテーブルのエラーレコ ードを登録及び更新するようにしてもょ 、。
[0034] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した物理ブロックのアドレスが書かれたエラーブロック情報と、前記誤り訂正回 路が前記読出しエラーを検出した物理ページのアドレスが書かれたエラーページ情 報と、前記読出しエラーのビット数を示す情報を記録するエラービットカウンタと、を備 え、前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数 以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタ の情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対 応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラ 一を訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよい。
[0035] ここで前記演算処理ユニットは、外部力 の前記不揮発性メモリに対してデータ読 出し処理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービッ ト数以下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウ ンタの情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコード に対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータの エラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むようにしてもよ い。
[0036] ここで前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラー を検出した物理ブロックのアドレスを示す情報を記録するエラーブロック情報と、前記 誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情報を記 録するエラーページ情報と、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であって予め定められた訂正閾値以上の読出しエラーが発生したことを示す 情報を記録するエラー発生情報とを備え、前記演算処理ユニットは、前記エラー発 生情報が記録された前記エラーテーブルのエラーレコードに対応する物理ブロック のデータを読出して、前記誤り訂正回路に読出したデータのエラーを訂正させて、該 訂正されたデータを別の物理ブロックに書込むようにしてもょ 、。
[0037] ここで前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行わ れて 、な 、ときに、前記エラー発生情報が記録された前記エラーテーブルのエラー レコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出した データのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込むよう にしてもよい。
[0038] この課題を解決するために、本発明の不良領域検出方法は、消去単位である物理 ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有して なる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出 する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正 回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する 情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラ と、を具備する不揮発性記憶装置の不良領域検出方法において、データを読み出 すときに外部力 指定された論理アドレス力 物理アドレスを決定し、前記物理アドレ スに対応する物理ブロック力 データを読出し、当該読出したデータに訂正可能なェ ラーがある場合は、前記エラーを訂正して外部に出力し、前記物理アドレスを前記ェ ラーテーブルに登録するものである。 [0039] ここで前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書 換えられたときに、前記データが書換えられたこと示す情報を前記エラーテーブルに 登録し、前記データが書き換えられた物理ブロック力 読出したデータに訂正可能な エラーがある場合は、当該エラーを訂正して外部に出力すると共に、前記データが 書き換えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテ 一ブルに登録し、前記エラー再発生情報が前記エラーテーブルに登録されて!ヽる物 理ブロックに対し、データの書込み及び読出しを禁止するようにしてもよ 、。
[0040] ここで前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書 換えられたときに、前記データが書換えられた回数を示すエラーブロック消去カウン タを前記エラーテーブルに登録し、前記データが書き換えられた物理ブロック力 読 出したデータに訂正可能なエラーがある場合は、当該エラーを訂正して外部に出力 すると共に、前記データが書き換えられた後にエラーが発生した回数を示すエラー力 ゥンタを前記エラーテーブルに登録し、前記エラーカウンタが所定の値以上を示した ときに、前記エラーカウンタが登録された物理ブロックへのデータの書込み及び読出 しを禁止するようにしてもよ 、。
[0041] この課題を解決するために、本発明の不良領域検出方法は、消去単位である物理 ブロックを複数備え、前記物理ブロックは書込み単位である物理ページを複数有して なる不揮発性メモリと、前記不揮発性メモリからの読出しデータに対してエラーを検出 する機能及びエラーの訂正が可能である場合には訂正をする機能を備える誤り訂正 回路と、読出しエラーを検出した物理ブロックについての前記読出しエラーに関する 情報であるエラーレコードを複数保持するエラーテーブルを備えるメモリコントローラ と、を具備する不揮発性記憶装置の不良領域検出方法において、外部から指定され た論理アドレスから物理アドレスを決定してデータを読出す物理ブロックを特定する 特定ステップと、前記物理ブロック力 データを読出すデータ読出しステップと、当該 読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外部に出 力するデータ出力ステップと、前記訂正可能なエラーを発生した物理ブロックの物理 アドレスとエラー数に関する情報とを前記エラーテーブルに登録するエラー数登録ス テツプと、を有するものである。 [0042] ここで前記エラーテーブルに登録されたエラー数に関する情報が、所定の値以上 を示したときに、前記物理ブロックに書込まれているデータを別の物理ブロックに複 写する複写ステップを有するものである。
[0043] ここで前記複写ステップを、前記データ読出しステップと前記データ出力ステップの 間に行なうようにしてもよい。
[0044] ここで前記複写ステップを、前記不揮発性記憶装置に対して、外部からのデータ書 込み及び読出しを実行して 、な 、ときに行なうようにしてもょ 、。
[0045] ここで前記複写ステップを、前記不揮発性記憶装置に対して電源が投入した直後 に行なうようにしてもよい。
発明の効果
[0046] 本発明によれば、エラーの発生する確率が高いと想定される物理ブロックを適切に 推定することで、当該物理ブロックのデータの書込みまたは読出しを制限又は回避 することができ、信頼性の高!、不揮発性記憶装置を提供することができる。
図面の簡単な説明
[0047] [図 1]図 1は第 1の実施例の不揮発性記憶装置の構成を示したブロック図。
[図 2]図 2はフラッシュメモリの内部の構成を示したブロック図。
[図 3]図 3は物理ブロック 201の内部の構成を示したブロック図。
[図 4]図 4は BBテーブル 112の構成を示した図。
[図 5]図 5は ECCエラーテーブル 111の構成を示した図。
[図 6]図 6は第 1の実施例の ECCエラーレコードと ECCエラーレコードに格納する情 報の変化にっ 、て示した図。
[図 7]図 7は第 1の実施例の読出しのフローチャート。
[図 8]図 8は第 1の実施例の ECCエラーテーブル登録のフローチャート。
[図 9]図 9は第 1の実施例の物理消去時の ECCエラーテーブル更新のフローチャート
[図 10]図 10は第 2の実施例の ECCエラーレコードを示した図。
[図 11]図 11は第 2の実施例の ECCエラーテーブル登録のフローチャート。
[図 12]図 12は第 3の実施例の ECCエラーレコードと ECCエラーレコードに格納する 情報の変化について示した図。
[図 13]図 13は第 3の実施例の ECCエラーテーブル登録のフローチャート。
[図 14]図 14は第 3の実施例の物理消去時の ECCエラーテーブル更新のフロ ート。
[図 15]図 15は第 4の実施例の読出しのフローチャート。
圆 16]図 16は進行性エラーの発生状況を表す図。
圆 17]図 17は第 5の実施例の不揮発性記憶装置の構成を示したブロック図。
[図 18]図 18はフラッシュメモリの内部の構成を示したブロック図。
[図 19]図 19は物理ブロック 201の内部の構成を示したブロック図。
[図 20]図 20は ECCエラーテーブル 111の構成を示した図。
[図 21]図 21は第 5の実施例の ECCエラーレコードを示した図。
[図 22]図 22は第 5の実施例の読出しのフローチャート。
[図 23]図 23は第 5の実施例の ECCエラーテーブル登録のフローチャート。
[図 24]図 24は第 5の実施例のデータ訂正複写処理のフローチャート。
[図 25]図 25は第 6の実施例の読出しのフローチャート。
[図 26]図 26は第 6の実施例のデータ訂正複写処理のフローチャート。
符号の説明
101 メモリカード
102 メモリコントローラ
103 フラッシュメモリ
104 ホストインターフェース
105 MPU
106 アドレステーブル
107 フラッシュインターフェース
108 ノ ッファメモリ
109 ECC回路
110 論物変換テーブル
111 ECCエラーテーブル 112 BBテーブル
113 エントリテーブル
501 ECCエラーレコード
601 エラーブロック
602 エラー発生情報
603 エラーブロック消去情報
604 エラー再発生情報
701 メモリカード
702 メモリコントローラ
703 フラッシュメモリ
704 ホストインターフェース
705 MPU
706 アドレステーブル
707 フラッシュインターフェース
708 ノ ッファメモリ
709 ECC回路
710 論物変換テーブル
711 ECCエラーテーブル
712 エントリテーブル
801 ECCエラーレコード
1001 エラーページ
1201 エラーブロック
1202 エラーカウンタ
1203 エラーブロック消去カウンタ
1601 エラービットカウンタ
発明を実施するための最良の形態
(実施例 1)
図 1は、第 1の実施例の不揮発性記憶装置の構成を示すブロック図である。メモリ力 ード 101は、メモリコントローラ 102と不揮発性メモリであるフラッシュメモリ 103とを備 えている。
[0050] 図 2は、フラッシュメモリ 103の内部の構成を示すブロック図である。ここでは、 1Gビ ットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ 103の内部は、 PBO〜PB1023の 1024個の物理ブロックからなる。物理ブロックは、フラッシュメモリ 103においてデータ消去の最小単位である。ひとつの物理ブロック容量は 128kB + 4kBであり、 2の累乗の値ではなく 2の累乗よりも少し大きい容量を持つ。ここで 132k Bと表現せずに 128kB+4kBと表現しているのは、ひとつの物理ブロックに書込みで きるデータの容量は 128kBであり、これに加えてさらに 4kBの領域に ECC符号や当 該物理ブロックの論理アドレス値等の管理データを書込むことを示すためである。
[0051] 図 3は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ 103内 の各物理ブロックは 64個の物理ページ PPO〜PP63を備える。物理ページは、フラッ シュメモリ 103においてデータ書込みの最小単位である。ひとつの物理ページの容 量は 2kB + 64Bである。この表現は、前述した物理ブロックの場合と同様に、ひとつ の物理ページに書込みできるデータの容量は 2kBであり、残りの 64Bには ECCを含 む管理データを書込むことを示して 、る。
[0052] メモリコントローラ 102は、ホストインターフェース 104と、アドレステーブル 106と、フ ラッシュインターフェース 107と、バッファメモリ 108と、 ECC回路 109と、 MPU (小型 演算ユニット) 105とを有している。ホストインターフェース 104は、メモリカード 101の 外部に接続されるホスト機器とのインターフェースを制御する。
[0053] アドレステーブル 106は、フラッシュメモリ 103に格納されているデータの管理情報 を持つテーブルであり、論物変換テーブル 110と、 ECCエラーテーブル 111と、ェン トリテーブル 113と、 BB (不良ブロック)テーブル 112とを有している。これらのテープ ルは揮発性メモリに保持される。
[0054] 論物変換テーブル 110は、メモリカード 101の外部力 指定する論理アドレスであ る論理ブロックのアドレスと、フラッシュメモリ 103の内部の物理アドレスである物理ブ ロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル 110は論理 アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。 [0055] ECCエラーテーブル 111は、読出しエラーが発生した物理ブロックの物理アドレス や、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情 報を持ち、固定不良の物理ブロックの検出に用いられる。
[0056] エントリテーブル 113は、フラッシュメモリ 103の各々の物理ブロックに対してデータ が書込み済みであるか、消去済みであるかについて、それぞれ 1ビットで示す情報を 持つテーブルである。例えばデータ書込み済みの物理ブロックはビッド '0"で、消去 済みの物理ブロックはビッド '1"で表す。
[0057] BBテーブル 112の構成を図 4に示す。 BBテーブル 112は、フラッシュメモリ 103の 物理ブロックと同数の BBレコード i(i=0〜1023)を備えている。 BBレコード iは、そ れぞれ物理ブロックと 1対 1に対応しており、対応する物理ブロックのアドレスを有して いる。さらに、対応する物理ブロックが不良ブロックであるか否かについて、 1ビットで 示す情報を有している。不良ブロックの物理ブロックはビット" 0"、不良でない物理ブ ロックはビッド '1"として、 BBレコード iに表示する。ここで BBテーブル 112は、全ての 物理ブロックに対して BBレコード iを持たなくてもよい。不良ブロックだけについて BB レコード iを持って ヽてもよ ヽ。
[0058] フラッシュインターフェース 107は、後述する MPU105の制御によりフラッシュメモリ 103にバッファメモリ 108のデータを書込んだり、フラッシュメモリ 103のデータをバッ ファメモリ 108に書込んだり、フラッシュメモリ 103のデータを消去したりする。バッファ メモリ 108は、外部のホスト機器とフラッシュメモリ 103との間でのデータの書込み、読 出しの際にデータを一時保持するための揮発性メモリである。
[0059] ECC回路 109は、バッファメモリ 108からフラッシュメモリ 103へ転送される書込み データに付加する ECCの符号を生成する。また ECC回路 109は、フラッシュメモリ 1 03力 バッファメモリ 108に読み出されたデータにつ!、て、 ECC演算を行 、誤りを検 出し、その誤りが訂正可能な誤りであった場合には、ノ ッファメモリ 108のデータを訂 正する誤り訂正回路である。
[0060] MPU105は、メモリコントローラ 102全体の制御を行うマイクロコンピュータである。
ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース 10 4と、 ECC回路 109と、フラッシュインターフェース 107と、アドレステーブル 106とを 直接に制御する。特に読出しデータにエラーがあった場合、 MPU105は、アドレス テーブル 106内の ECCエラーテーブル 111の情報を参照し、必要に応じて ECCェ ラーテーブル 111の更新を行う。その結果、使用を禁止すべき物理ブロックがあれば 、 MPU105は、 BBテーブル 112の BBレコード iに当該物理ブロックの情報を記録し 、 BBテーブル 112を更新する。さらに MPU105は、更新後の BBテーブルの内容に 従ってエントリテーブルの更新も行う。
[0061] 図 5は、 ECCエラーテーブル 111の構成を示す図である。 ECCエラーテーブル 11 1は、 16進数で表される # 0〜# Fの 16個の ECCエラーレコード #iで構成されてい る。図 6は、 ECCエラーレコード #iのフィーノレドと ECCエラーレコード #iに格糸内する 情報の変化を示した図である。各 ECCエラーレコード #iは、エラーブロック 601と、 エラー発生情報 602と、エラーブロック消去情報 603と、エラー再発生情報 604とを 備えている。エラーブロック 601は、読出しエラーの発生した物理ブロック 201の物理 アドレスを格納する。エラー発生情報 602は、最初の読出しエラーが発生したことを 示す情報である。エラーブロック消去情報 603は、最初の読出しエラーが発生した後 に当該物理ブロック 201に対して物理消去が行われたことを示す情報である。エラー 再発生情報 604は、最初の読出しエラーが発生した後に物理消去を行ってもなお、 同じ物理ブロックで読出しエラーが再発したことを示す情報である。
[0062] 図 7は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートであ る。外部ホスト機器カ^モリカード 101からデータを読み出す時には、外部ホスト機器 が読出しコマンドと開始アドレスをメモリカード 101に送る。このコマンドと開始アドレス を受信し、ホストインターフェース 104は MPU105に対してその受信を通知する。図 7のフローチャートは、この通知を受けてから後の処理を示して 、る。
[0063] MPU105は、開始アドレスを用いて、 128kB単位に対応する上位のアドレス部分 を論理ブロックアドレスとして、論物変換テーブル 110から物理ブロックアドレスを得る 。 128kB以下に対応する下位のアドレス部分は論理ページアドレスとして論理ぺー ジとそのまま同じものとする。次に MPU105は、読出しを行う物理ブロックのアドレス と物理ページのアドレスをフラッシュメモリインターフェース 107に指示して、フラッシ ュメモリ 103からデータを読出す (S701)。 [0064] 続いて ECC回路 109は、 S701で読出したデータに対して読出しエラーが発生して いるかどうかを判定する(S702)。読出しエラーが検出されな力つた場合、 MPU105 はホストインターフェース 104に対して外部ホスト機器へのデータの出力を指示する( S705)。その後読出しが継続する限り(S706)、読出しの単位でアドレスを増加させ ながら S701へとループしてデータの読み出し処理は継続する。
[0065] S702で読出しエラーが検出された場合、 ECC回路 109は、その読出しエラーが訂 正可能であるかどうかを判断する(S703)。訂正可能である場合には読出しエラーを 訂正する(S704)。読出しエラーの訂正後、 S705へと遷移して読出しデータを出力 する。読出しエラーの訂正が不可能である場合、 ECCエラーテーブルの登録を行い (S707)、登録後に読出し処理を終了する。
[0066] ここで、 ECCエラーテーブルの登録処理(S707)を図 8のフローチャートを用いて 説明する。読出しエラーの訂正が不可能であれば、 MPU105が ECCエラーテープ ル 111の登録状態を検索する(S801)。具体的には、読出しエラーを発生した物理 ブロックの物理アドレスが、 ECCエラーレコード #iのいずれかのエラーブロック 601 の値と一致するかを調べる。
[0067] 次に、 S801の検索で一致する ECCエラーレコード #iがないときは、登録なしと判 断される(S802)。続いて MPU105は、エラーブロック 601とエラー発生情報 602と を新規登録する(S803)。図 6 (b)は新規登録後の状態を示している。エラーブロック 601には読出しエラーの発生した物理ブロックのアドレスが有効値として書込まれて いる。エラー発生情報 602には読出しエラーが発生したことを示す情報" 1"が、エラ 一ブロック消去情報 603とエラー再発生情報 604には" 0"が書込まれている。
[0068] S802において登録があった場合は、物理消去後に発生した読出しエラー力どうか を、 MPU105が判断する(S804)。エラーブロック 601に登録のあった ECCエラー レコード #iのエラーブロック消去情報 603が" 0"であれば、物理消去後に発生した 読出しエラーではないので、 ECCエラーレコード #iの更新と ECCエラーテーブル 1 11の登録を行わずに登録処理を終了する。読出しエラーが発生してエラー発生情 報 602に" 1"を登録した後に読出しエラーの発生回数をカウントしても、同じブロック の同じデータを読み出す限りは、発生したエラーが偶発的なもの力、固定不良による ものかを判断することはできない。よって ECCエラーレコード #iの更新を行わずに登 録処理を終了する。
[0069] S804において、エラーレコード # iが、図 6 (c)に示す状態であれば、エラーブロッ ク消去情報 603が" 1"であり、物理消去後に発生した読出しエラーであることがわか る。このときは、図 6 (d)に示すように、エラー再発生情報 604を" 1"に書き換えてから 登録処理を終了する(S805)。つまり、 ECCエラーレコード #iの内容を更新すべき 読出しエラーとは、ー且読み出しエラーが発生した物理ブロックに対して物理消去を 行った後に新たに書込んだデータでもなお発生する読出しエラーのことである。
[0070] 図 9は、データの書込みに先立って行なわれる物理消去の際の、 ECCエラーテー ブル更新と不良ブロック登録のフローチャートである。外部ホスト機器カ モリカード 1 01にデータを書込むときは、外部ホスト機器が書込みコマンドと書込み開始アドレス をメモリカード 101に対して送る。このコマンドと開始アドレスを受けると、 MPU105は ECCエラーテーブル 111の登録状態を検索する(S901)。具体的には、書込み対 象の物理ブロックのアドレスが、 ECCエラーレコードのエラーブロック 601の値と一致 するかどうかを調べる。
[0071] S901の検索で、書込み対象の物理ブロックに一致する ECCエラーレコード #iが ない場合には登録なしと判断して(S902)、 ECCエラーテーブル 111の登録を行わ ずに登録処理を終了する。反対に、一致する ECCエラーレコード #iがある場合には 登録ありと判定する(S902)。そして、エラー発生情報 602だけ力 でエラーブロッ ク消去情報 603とエラー再発生情報 604が" 0"のときは、エラー発生情報 602にの み記録があることになる。読出しエラーが発生した後の最初の物理消去であると判断 する(S903)。その場合は、エラーブロック消去情報 603に" 1"を登録して ECCエラ 一テーブル 111の更新を終了する(S907)。
[0072] 次に、エラー発生情報 602とエラーブロック消去情報 603とが" 1"で、エラー再発生 情報 604が" 0"のときは、エラーブロック消去情報 603まで記録があることになる(S9 04)。このことから以前エラーが発生したものの物理消去を行った後の書込みではェ ラーが発生していないことがわかる。即ち最初に発生したエラーは偶発的なエラーで あつたと判断する。その場合、当該 ECCエラーレコード #iの登録を抹消して ECCェ ラーテーブル 111の更新は終了する(S906)。登録の抹消は、図 6 (a)の ECCエラ 一レコード #iのエラーブロック 601の値を無効値とすることにより行なう。
[0073] また図 6 (d)のように、エラー発生情報 602とエラーブロック消去情報 603だけでなく エラー再発生情報 604までが全て" 1"のときは、以前読出しエラーが発生しており、 当該物理ブロックに対して物理消去を行った後に書込んだデータでもなお読出しェ ラーが発生していたことがわかる。この場合は、固定不良に起因するエラーであると 判断し、エラーが発生した物理ブロックを不良ブロックとして登録する(S905)。続い て、当該物理ブロックの ECCエラーレコード #iの登録を抹消して ECCエラーテープ ル 111の更新を終了する(S906)。
[0074] 先に説明したとおり S905の不良ブロック登録とは、 BBテーブル 112において、当 該物理ブロックのアドレスに対応した BBレコード iにビッド '0"を登録することである。 B Bレコード iの登録で不良ブロックの登録が完了する力 これだけでは不良ブロックの 使用を制限することはできない。そこで、 BBレコード iにビット 0として登録した物理ブ ロックについて、エントリテーブル 113上でビッド '0"を登録する。エントリテーブル 11 3にビッド '0"を登録すると、不良ブロックは書込み済みブロックとして扱われるので、 不良ブロックの使用を制限できる。いずれにしても、不良ブロックとして BBレコード iに 登録した物理ブロックについてエントリテーブルにビッド '0"を登録することで、不良ブ ロックの使用を防ぐことができる。
[0075] 本実施例は、発生した読出しエラーが訂正不可能なときにだけ ECCエラーテープ ルの登録、更新を行い、 ECCエラーテーブル内の ECCエラーレコードを物理ブロッ クアドレス単位で仕訳をし、同一の物理ブロックで、物理消去を挟んで 2回のエラー が連続して発生したときに不良ブロック登録をすることを特徴として 、る。本実施例で は、 ECCエラーテーブルは、発生したエラーが偶発的なもの力、固定不良によるもの かを判断するための情報を持つ。つまり、最初の読出しエラー発生後当該物理ブロッ クのデータを物理消去して新たに書込んだデータで読出しエラーが発生しないので あれば、最初のエラーは偶発的なものであると判断できる。最初の読出しエラー発生 後、当該物理ブロックのデータを物理消去して新たに書込んだデータでもなお、読み 出しエラーが発生するのであれば、固定不良によるエラーであると判断できる。このよ うに本実施例は偶発的なエラーか、固定不良によるエラーかを適確に判断できるも のである。また、その判断にもとづき固定不良の物理ブロックを使わないことで、読出 しエラーを低減させると 、う効果を生む。
[0076] (実施例 2)
本実施例における不揮発性メモリ装置の構成は図 1に示される。メモリカード 101は 、メモリコントローラ 102と不揮発性メモリであるフラッシュメモリ 103とを備えている。メ モリコントローラ 102に含まれる各構成要素は、第 1の実施例で説明したものと同様で ある。
[0077] 図 2は、フラッシュメモリ 103の内部の構成を示すブロック図であり、フラッシュメモリ 103の内部は、 PBO〜PB1023の 1024個の物理ブロックからなる。図 3は、物理ブ ロックの内部の構成を示すブロック図であり、各物理ブロックは 64個の物理ページ P PO〜PP63を備える。これらは、第 1の実施例で説明したものと同様である。
[0078] 図 5に示す ECCエラーテーブル 111は複数の ECCエラーレコード # iを備えており 、第 1の実施例で説明したものと同様である。
[0079] 本実施例の ECCエラーレコード #iの構成を、図 10に示す。図 10では、第 1の実施 例の図 6で示したエラーブロック 601、エラー発生情報 602、エラーブロック消去情報 603、エラー再発生情報 604に加えて、エラーページ 1001が備わる。このエラーべ ージ 1001は、読出しエラーが検出された物理ページのアドレスを情報として持って いるので、 ECCエラーレコード #iは物理ページを単位として構成することができる。
[0080] 本実施例の不揮発性記憶装置におけるデータの読出しは、図 7に示すフローチヤ ートに準じて行なわれ、 S707を除く各ステップでの処理は、第 1の実施例と同様であ る。ここでは図 11を用いて、 S703でエラー訂正が不可能なときに行う S707の ECC エラーテーブル登録について説明する。まず MPU105は、 ECCエラーテーブル 11 1の登録状態を検索し、読出しエラーを発生した物理ブロックのアドレスをエラープロ ック 601に持ち、かつ当該エラーを発生した物理ページのアドレスをエラーページ 10 01にもつ ECCエラーレコード #iを探す (S 1101)。
[0081] S1101の検索で該当する ECCエラーレコード # ない場合、 MPU105は、 ECC エラーレコード # iの登録がな 、と判断し (S1102)、エラー発生の情報を ECCエラー レコード #iに新規に登録する(S1103)。この登録は、エラーを発生したページが存 在する物理ブロックのアドレスをエラーブロック 601に、読出しエラーの発生を示す" 1 "をエラー発生情報 602に、エラーを発生したページの物理ページアドレスをエラー ページ 1001に書込むことで完了する。今回の登録では必要がないエラーブロック消 去情報 603、エラー再発生情報 604には初期値を示す" 0"を登録する。
[0082] S1102で登録があると判断した場合、 MPU105が物理消去後の読出しエラーか どうかを判断する(S 1104)。つまり MPU105は、登録のあった ECCエラーレコード #iのエラーブロック消去情報 603が" 0"であれば、まだ物理消去を行っておらず、物 理消去後の読出しエラーではないと判断して、 ECCエラーレコード #iの更新を行わ ずに終了する。この判断は、同じ物理ページの同じデータを読み出す限りは、何度 読み出しエラーが発生しても、偶発的なエラーか、固定不良によるエラーかを判断す ることはできな 、ことを根拠にして!/、る。
[0083] 図 9は、物理消去時の ECCエラーテーブル更新と不良ブロック登録を示すフロー チャートである力 第 1の実施例とは S901の処理が異なるので説明する。 S901の検 索を、物理消去の単位である、物理ブロックアドレスをもとに行うと、物理ブロックアド レスが同じで、物理ページアドレスが違う ECCエラーレコード #iがいくつか検出され ることがある。つまり、エラーブロック 601の値が同じで、エラーページ 1001の値が異 なる ECCエラーレコード #iが複数検出される(S901)。検出された複数の ECCエラ 一レコード #iは S901で検出された順に次のステップでの処理対象となるので、 S90 2以降の処理は第 1の実施例と同じである。
[0084] また不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの 使用を防ぐ方法とは、第 1の実施例と同じである。
[0085] 本実施例は、 ECCエラーレコード #iの構成にエラーページ 1001を備え、物理べ ージのアドレスごとに ECCエラーレコード #iを新規登録することが特徴となっている 。このことで、同一物理ブロック内で連続してエラーが発生した場合でも、異なる物理 ページで発生したものである力、同一の物理ページで発生したものかを区別すること ができ、偶発的なエラーか固定不良によるエラーかを精度高く判断できる。
[0086] なお本実施例では、読出しを行うページの単位を、書込みの最小単位である物理 ページとした力 構成するシステムの読出しの単位もしくは ECC符号を付加する単位 を用いても、物理ブロック単位でのエラー管理よりも精度の高いエラー管理ができる。 ECCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行つ てもよい。
[0087] (実施例 3)
本実施例における不揮発性メモリ装置の構成は図 1に示される。メモリカード 101は 、メモリコントローラ 102と不揮発性メモリであるフラッシュメモリ 103とを備えている。メ モリコントローラ 102に含まれる各構成要素は、第 1の実施例で説明したものと同様で ある。
[0088] 図 2は、フラッシュメモリ 103の内部の構成を示すブロック図であり、フラッシュメモリ 103の内部は、 PBO〜PB1023の 1024個の物理ブロックからなる。図 3は、物理ブ ロックの内部の構成を示すブロック図であり、各物理ブロックは 64個の物理ページ P PO〜PP63を備える。これらは、第 1の実施例で説明したものと同様である。
[0089] 図 5に示す ECCエラーテーブル 111は、複数の ECCエラーレコード #iを備えてお り、第 1の実施例で説明したものと同様である。
[0090] 本実施例の ECCエラーレコード #iの構成を、図 12に示す。図 12は、 ECCエラー レコード # iのフィールドと ECCエラーレコード # iに格納する情報の変化を示して!/ヽ る。エラーブロック 1201は、エラーが発生した物理ブロックの物理アドレスを格納する 。エラーカウンタ 1202は、読出しエラーが発生した回数を格納する。当該物理ブロッ クの物理消去を経て新しく書込まれたデータでさらに読出しエラーが発生すれば、ェ ラーカウンタ 1202のエラーの回数を 1回分増やす。エラーブロック消去カウンタ 120 3は読出しエラーの発生した物理ブロックを物理消去した回数を示す。
[0091] 本実施例の不揮発性記憶装置におけるデータの読出しは、図 7に示すフローチヤ ートに準じて行なわれ、 S707を除く各ステップでの処理は第 1の実施例と同様である 。ここでは S703でエラー訂正が不可能なときに行う S707の ECCエラーテーブル登 録について説明する。
[0092] ECCエラーテーブルの登録処理を図 13に示す。まず MPU105が ECCエラーテ 一ブル 111の登録状態を検索する(S1301)。具体的には、読出しエラーを発生した 物理ブロックのアドレスをエラーブロック 601にもつ ECCエラーレコード #iを探すた めの検索である。
[0093] S1301の検索で、物理アドレスの一致する ECCエラーレコード #iがない場合、 M PU105は、登録なしと判断し(S1302)、 ECCエラーレコード #iを新規に登録する( S1303)。新規登録後の状態を図 12 (b)に示す。エラーブロック 1201には、読出し エラーの発生した物理ブロックのアドレスが有効値として書込まれる。エラーカウンタ 1202には、読出しエラーが 1回発生したことを示す" 1"が書込まれる。エラーブロック 消去カウンタ 1203には、エラー発生後の物理消去回数が 0回であることを示す" 0" が書込まれる。
[0094] S1302で登録ありと判断したときは、 MPU105は、登録されている ECCエラーレコ 一ド#1を参照して、物理消去後に発生した最初のエラー力どうかを判断する(S130 4)。具体的には、 S1301で検出した ECCエラーレコード #iのエラーカウンタ 1202と エラーブロック消去カウンタ 1203とを比較する。エラーカウンタ 1202力 ェラーブ口 ック消去カウンタ 1203よりも大きい値であれば、 ECCエラーレコード #iの直前の更 新が読み出しエラー発生によるエラーカウンタ 1202の増加であると判断する。読み 出しエラーが発生した後に物理消去が行われていないことになるので、 ECCエラー レコード #iの更新をせずに ECCエラーテーブル 111の登録を終了する。ー且エラ 一カウンタ 1202を登録もしくは更新した後は、当該物理ブロック 201の物理消去が 行われない限り、何度読出しのエラーが発生しても偶発的なエラー力、固定不良によ るエラーかを半 IJ断することはできない。よって、エラーカウンタ 1202がエラーブロック 消去カウンタ 1203よりも大きい値であれば、さらにエラーカウンタ 1202を増加させる ことはない。
[0095] 次に、エラーカウンタ 1202とエラーブロック消去カウンタ 1203の値が同じであれば 、ECCエラーレコード #iの直前の更新が物理消去によるエラーブロック消去カウンタ 1203の増加であると判断する。エラーが発生した後に物理消去をおこなったことに なるので、 MPU105は、物理消去後に読み出しエラーが発生したと判断して S1305 へ遷移する。そして図 12において、(c)から(d)、(e)から(f)への変化のように、エラ 一カウンタ 1202の情報を 1増加して書き換えて力もテーブルの更新を終了する。 EC cエラーレコード #iの内容を更新すべき読出しエラーとは、ー且読み出しエラーが発 生した物理ブロックに対して物理消去を行った後に、新たに書込んだデータでもなお 発生する読み出しエラーである。
[0096] 図 14は、データ書込みに先立つ物理消去時の ECCエラーテーブル更新のフロー チャートである。まず MPU105が、 ECCエラーテーブル 111の登録状態を検索する (S1401)。具体的には、物理消去の対象であるフラッシュメモリ 103の物理ブロック のアドレスをエラーブロック 1201に持つ ECCエラーレコードを探すための検索である
[0097] S1401の検索で物理アドレスの一致する ECCエラーレコード #iがない場合、 MP U105は、登録なしと判定して(S 1402)、 ECCエラーテーブル 111を更新せずに終 了する。 S1401の検索で該当する ECCエラーレコード #iがある場合には登録ありと 判定する(S 1402)。
[0098] 続いて MPU105は、 ECCエラーレコード #iを参照して、物理消去後のエラーが発 生しているかどうかを判定する(S1403)。具体的には、エラーカウンタ 1202とエラー ブロック消去カウンタ 1203とを比較して両者が同じ値であれば、 ECCエラーレコード #iの直前の更新が、物理消去によるエラーブロック消去カウンタ 1203の増加であり 、消去後にエラーが発生していないと判断する。このことから、物理消去前に発生し た読み出しエラーは偶発的なエラーであつたと判断する。この判断の後、 MPU105 は、 ECCエラーレコード #iの登録を抹消して(S1404) ECCエラーテーブル 111の 更新を終了する。図 12 (a)のようにエラーブロック 1201の値を無効値とすることで登 録を抹消できる。
[0099] また、 ECCエラーレコード #iのエラーカウンタ 1202とエラーブロック消去カウンタ 1 203とを比較して、エラーカウンタ 1202がエラーブロック消去カウンタ 1203よりも大き い値であれば、 ECCエラーレコード #iの直前の更新がエラー発生によるエラーカウ ンタ 1202の増加であり、 S1403で消去後のエラーが発生していると判断できる。 MP U105は、エラーカウンタ 1202を参照し(S1405)、予め定めた規定回数以内である 力どうかを判断する。規定回数以内であれば不良ブロック登録を行う必要は無いの で、 ECCエラーテーブル 111のエラーブロック消去カウンタ 1203の値を 1だけ増や して(S 1406)、 ECCエラーテーブル 111の更新を終了する。 S 1405でエラーが規 定回数を超えている場合には、固定不良を有する物理ブロックであるとみなして、不 良ブロック登録を行う。不良ブロック登録とは、当該物理ブロックのアドレスに対応す る BBレコード iに登録する(S1407)。不良ブロックの登録後、当該物理ブロックの EC Cエラーレコード # iの登録を抹消する(S 1404)。
[0100] 不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用 を防ぐ方法は、第 1の実施例と同様である。
[0101] 多値のフラッシュメモリのように偶発的なビットエラーの発生頻度が高 、フラッシュメ モリを用いた記憶装置の場合、同一の物理ブロックまたはページで、物理消去を挟 んで、偶発的なビットエラーが連続して発生することもある。この場合、固定不良を有 して 、な 、この物理ブロックを不良ブロックとして登録してしま 、、当該物理ブロックの 使用を制限するのは適当ではない。そこで本実施例は、不良ブロック登録をするまで のエラーの発生回数を、 3回以上の回数で任意に設定できるようにしている。不良ブ ロック登録をするまでのエラー発生回数の規定値を大きくとることで、適確に固定不 良を検出することができる。
[0102] 尚、本実施例の ECCエラーレコード #iに物理ブロックページを記録するエラーべ ージ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、 E CCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行って ちょい。
[0103] (実施例 4)
本実施例における不揮発性メモリ装置の構成は図 1に示される。メモリカード 101は 、メモリコントローラ 102と不揮発性メモリであるフラッシュメモリ 103とを備えている。メ モリコントローラ 102に含まれる各構成要素は、第 1の実施例で説明したものと同様で ある。
[0104] 図 2は、フラッシュメモリ 103の内部の構成を示すブロック図であり、フラッシュメモリ 103の内部は、 PBO〜PB1023の 1024個の物理ブロックからなる。図 3は、物理ブ ロックの内部の構成を示すブロック図であり、各物理ブロックは 64個の物理ページ P PO〜PP63を備える。これらは、第 1の実施例で説明したものと同様である。 [0105] 図 5に示す ECCエラーテーブル 111は、複数の ECCエラーレコード #iを備えてお り、第 1の実施例で説明したものと同様である。
[0106] 図 15は、本実施例の不揮発性記憶装置における、データ読出しのフローチャート である。 S1501での処理は、第 1の実施例での S701と同じ処理である。
[0107] S1501に続いて、 ECC回路 109は、読出したデータに対して読出しエラーが発生 しているかどうかを判定する(S 1502)。読出しエラーが発生していない場合、 MPU 105は、ホストインターフェース 104に対して外部ホスト機器へのデータの出力を指 示する(S1506)。その後読出しが継続する限り(S1507)、読出しの単位でアドレス を増加させながら S1501へとループしてデータの読み出し処理は継続する。
[0108] 読み出しエラーが発生しているかどうかを判定し (S1502)、読出しエラーが発生し て 、た場合には、 ECCエラーテーブル 111に対して ECCエラーレコード # iの登録 を行う(S1503)。 ECCエラーテーブル 111への登録が終わると、 ECC回路 109が、 その読出しエラーについて訂正可能であるかどうかを判断し (S 1504)、訂正可能で ある場合には読出しエラーを訂正する(S1505)。読出しエラー訂正後、読出しデー タを出力し、データの読み出しが継続するかどうかを判定する(S1507)。尚、読出し エラーの訂正が不可能である場合には(S 1504)、直ちに読出しを終了する。
[0109] 本実施例では、読出しエラーを検出すればエラー訂正の可、不可にかかわらず、 E CCエラーテーブル 111の登録を行う。 ECCエラーテーブル 111の登録方法は、第 1 の実施例と同じであり、図 8に示すとおりである。
[0110] データの書込みに先立って行なわれる物理消去時の ECCエラーテーブル更新と 不良ブロック登録は、第 1の実施例と同じであり、図 9に示すとおりである。
[0111] 不良ブロック登録の方法と、エントリテーブルへの登録によって不良ブロックの使用 を防ぐ方法は、第 1の実施例と同じである。
[0112] 二値のフラッシュメモリのように偶発的なビットエラーの発生頻度が低いフラッシュメ モリ 103でメモリカードを構成した場合、訂正不可能なエラーが、物理消去を挟んで 2 回続いて発生する頻度は非常に低ぐほとんどのエラーは訂正可能なものである。固 定不良に起因するエラーであっても訂正可能であることが多いので、エラー訂正が 不可能な場合にのみ ECCエラーテーブルの登録をしていたのでは、固定不良の存 在する物理ブロックを適確に検出することができない。これに対して本実施例は、ビッ トエラーを検出すると、エラー訂正の可、不可にかかわらず ECCエラーテーブルに E CCエラーレコード # iを登録するので、偶発的なビットエラーの発生頻度が低 、フラ ッシュメモリでも適切に固定不良の存在する物理ブロックの使用を制限できる。
[0113] 尚、本実施例の ECCエラーレコード #iに物理ブロックページを記録するエラーべ ージ情報を付加して、エラーテーブルを物理ページ単位で登録してもよい。また、 E CCエラーテーブルの登録、更新は読出しエラーの訂正の可否にかかわらず行って ちょい。
[0114] (実施例 5)
図 16は、ある一つの物理ブロックに書込まれているデータを繰り返し読み出すと、 読出しの回数に応じてビットエラーが増カロしていく様子を表している。図中、網目模 様は発生したエラーのビット数を表しており、読み出し回数が増えるにつれて、 ECC 回路の訂正能力を表す ECC訂正可能ビット数の破線に向かって増加している。デー タ読出しのためにメモリセルに印加される電圧などが原因でメモリセルに書込まれた ビットが変化してしまい、このようなエラーが発生する。本実施例では、このようなエラ 一を進行性エラーと呼ぶ。
[0115] 図 16の EZWで表される箇所は、データの消去と書込みを表しており、物理ブロッ クのデータを消去してから、その同じ物理ブロックに新たなデータを書込んだことを示 している。 EZWの直後は進行性エラーがー且無くなる力 データの読出し回数が増 えると、漸次進行性エラーのビット数が増加するため、 ECC回路の訂正能力に余力 がなくなる。このままの状態でデータの読み出しを繰り返して、 ECC回路の訂正能力 を超えるビット数のエラーが発生するのは好ましくない。そこで、 ECC回路の訂正可 能ビット数以下に訂正閾値を設け、ある物理ブロック力 読み出したデータに訂正閾 値以上のビット数のエラーが検出されると、検出されたエラーを訂正して、訂正された 当該データを別の物理ブロックに書込む。こうすることで進行性エラーがー且無くなり 、データの安全性が確保されるとともに、 ECC回路の訂正能力に余力が取り戻される 。尚、本実施例では、 ECC回路の訂正可能ビット数、訂正閾値ともに 4ビットとする。 本実施例では、上記の事情に対応するための方法を以下に説明する。 [0116] 以下に、本実施例について説明する。図 17は、本実施例の不揮発性記憶装置の 構成を示すブロック図である。メモリカード 701は、メモリコントローラ 702と不揮発性メ モリであるフラッシュメモリ 703とを備えている。
[0117] 図 18は、フラッシュメモリ 703の内部の構成を示すブロック図である。ここでは、 1G ビットの容量を持つフラッシュメモリについて説明する。フラッシュメモリ 703の内部は 、 PB0〜PB1023の 1024個の物理ブロックからなる。物理ブロックは、フラッシュメモ リ 703においてデータ消去の最小単位である。ひとつの物理ブロック容量は 128kB +4kBで表される。これは、ひとつの物理ブロックのデータ容量は 128kBであり、さら に 4kBの領域に ECC符号や当該物理ブロックの論理アドレス値等の管理データが 書込まれることを示す。
[0118] 図 19は、物理ブロックの内部の構成を示すブロック図である。フラッシュメモリ 703 内の各物理ブロックは 64個の物理ページ PP0〜PP63を備える。物理ページは、フ ラッシュメモリ 703にお!/、てデータ書込みの最小単位である。ひとつの物理ページの 容量は 2kB + 64Bである。これは、ひとつの物理ページに書込みできるデータの容 量は 2kBであり、残りの 64Bには ECCを含む管理データが書込まれることを示す。
[0119] メモリコントローラ 702は、ホストインターフェース 704と、アドレステーブル 706と、フ ラッシュインターフェース 707と、ノ ッファメモリ 708と、 ECC回路 709と、 MPU (小型 演算ユニット) 705とを有している。ホストインターフェース 704は、メモリカード 701の 外部に接続されるホスト機器とのインターフェースを制御する。
[0120] アドレステーブル 706は、フラッシュメモリ 703に格納されているデータの管理情報 を持つテーブルであり、論物変換テーブル 710と、 ECCエラーテーブル 711と、ェン トリテーブル 712とを有している。これらのテーブルは揮発性メモリに保持される。
[0121] 論物変換テーブル 710は、メモリカード 701の外部力も指定する論理アドレスであ る論理ブロックのアドレスと、フラッシュメモリ 703の内部の物理アドレスである物理ブ ロックのアドレスとの対応関係を示すテーブルである。論物変換テーブル 710は論理 アドレスから当該論理ブロックに対応する物理アドレスを得るためのものである。
[0122] ECCエラーテーブル 711は、読出しエラーが発生した物理ブロックの物理アドレス や、データの物理消去の履歴や、物理消去後の読出しエラーの発生履歴などの情 報を持ち、固定不良の物理ブロックの検出に用いられる。
[0123] エントリテーブル 712は、フラッシュメモリ 703の各々の物理ブロックに対してデータ が書込み済みであるか、消去済みであるかについて、それぞれ 1ビットで示す情報を 持つテーブルである。例えばデータ書込み済みの物理ブロックはビッド '0"で、消去 済みの物理ブロックはビッド '1"で表す。
[0124] フラッシュインターフェース 707は、後述する MPU705の制御によりフラッシュメモリ 703にノ ッファメモリ 708のデータを書込んだり、フラッシュメモリ 703のデータをバッ ファメモリ 708に書込んだり、フラッシュメモリ 703のデータを消去したりする。バッファ メモリ 708は、外部のホスト機器とフラッシュメモリ 703との間でのデータの書込み、読 出しの際にデータを一時保持するための揮発性メモリである。
[0125] ECC回路 709は、バッファメモリ 708からフラッシュメモリ 703へ転送される書込み データに付加する ECCの符号を生成する。また ECC回路 709は、フラッシュメモリ 7 03からバッファメモリ 708に読み出されたデータについて、 ECC演算を行い誤りを検 出し、その誤りが訂正可能な誤りであった場合には、ノ ッファメモリ 708のデータを訂 正する誤り訂正回路である。
[0126] MPU705は、メモリコントローラ 702全体の制御を行うマイクロコンピュータである。
ホスト機器との間でデータの書込み、読出しを行う際には、ホストインターフェース 70 4と、 ECC回路 709と、フラッシュインターフェース 707と、アドレステーブル 706とを 直接に制御する。特に読出しデータにエラーがあった場合、 MPU705は、アドレス テーブル 706内の ECCエラーテーブル 711の情報を参照し、必要に応じて ECCェ ラーテーブル 711の更新を行う。さらに MPU705は、更新後の BBテーブルの内容 に従ってエントリテーブルの更新も行う。
[0127] 図 20は、 ECCエラーテーブル 711の構成を示す図である。 ECCエラーテーブル 7 11は、 16進数で表される # 0〜 # Fの 16個の ECCエラーレコード #iで構成されて いる。
[0128] 図 21は、本実施例の ECCエラーレコード #iの構成を示している。本実施例の EC Cエラーレコード # iは、エラーが発生した物理ブロックのアドレスを格納するェラーブ ロック 601と、エラーが発生した物理ページのアドレスを格納するエラーページ 1001 とにカ卩えて、発生したエラーのビット数を格納するエラービットカウント 1601を備える 。このエラービットカウント 1601は、発生した読出しエラーのビット数を情報として持つ ており、 ECCエラーレコード # iで発生したビットエラーの程度を表すことになる。
[0129] 図 22は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートで ある。 MPU705は、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフ ラッシュメモリインターフェース 707に指示して、フラッシュメモリ 703からデータを読出 す(S1701)。 S1701に続いて、 ECC回路 709は読出したデータに対して読出しェ ラーが発生して 、るかどうかを判定する(S 1702)。読出しエラーが発生して 、な!/、場 合、 MPU705は、ホストインターフェース 704に対して外部ホスト機器へのデータの 出力を指示する(S1707)。その後読出しが継続する限り(S1708)、読出しの単位 でアドレスを増加させながら S1701へとループしてデータ読み出しの処理は継続す る。
[0130] S1702での判定で読出しエラーが発生していた場合には、 ECCエラーテーブル 7 11への登録を行う(S1703)。 ECCエラーテーブル 711への登録が終わると、 ECC 回路 709が、その読出しエラーについて訂正可能な 4ビット以下であるかどうかを判 断する(S 1704)。読出しエラーの訂正が不可能な場合は(S 1704)、直ちにデータ の読出しを終了する。
[0131] 訂正可能である場合は、読出しエラーを訂正する(S1705)。読出しエラー訂正後 、データ訂正複写処理を行ない(S 1706)、読出しデータを出力する(S 1707)。その 後、読み出しが継続するかどうかを判定する(S1708)
[0132] 本実施例では、読出しエラーを検出すれば訂正の可、不可にかかわらず、 ECCェ ラーテーブルの登録を行う。ここで、 ECCエラーテーブルの登録(S 1703)の処理を 、図 23のフローチャートを用いて説明する。
[0133] 読出しエラーを検出した場合、 MPU705が、 ECCエラーテーブル 711の登録状態 を検索する(S1801)。具体的には、読出しエラーを発生した物理ブロックおよび物 理ページの物理アドレス力 ECCエラーテーブル 711の!、ずれかの ECCエラーレコ 一ド # iのエラーブロック 601およびエラーページ 1001の値と一致するかどうかを調 ベる。 [0134] 次に S1801の検索で該当する ECCエラーレコード #iがないときは、登録なしと判 断する(S1802)。続いて、エラーブロック 601とエラーページ 1002とエラービット力 ゥント 1603のそれぞれの値を空きの ECCエラーレコード #iに新規登録する(S180 3)。この時に ECC回路 709の訂正能力を超える 5ビット以上のエラーが発生してい れば、 ECCエラーレコード #iに登録するエラービットカウントを決めることができない ので、この場合には、訂正不可能であるということが分力る値を登録する。例えば EC C回路 709の最大訂正能力が 4ビットであれば、それを超える値である 5を登録すれ ばよい。
[0135] S1802において ECCエラーレコード # iの登録が検出された場合、 MPU705は、 ECCエラーレコード # iのエラービットカウントよりも、今回発生したエラーのビットカウ ントが多!、かどうかを判断する(S 1804)。登録のあった ECCエラーレコード # iのェ ラービットカウント 1601と今回の読出しでのエラービットカウントを比較してビットカウ ントが増加していなければ、 ECCエラーレコードの更新を行わずに終了する。増加し ている場合は、エラービットカウント 1601を増加後の値に書き換えて、 ECCエラーテ 一ブルの登録を終了する(S1805)。
[0136] 次に、図 24のフローチャートを用いて、データ訂正複写処理(S 1706)を説明する
。訂正可能なエラーの訂正(S1705)後、 MPU705は、今回読み出した物理ページ のデータを今後も継続して読み出してよいかどうかの判定を行う。つまり、今後も継続 してデータの読出しを行った場合に、訂正不可能なビットエラーが発生する可能性が 高!、かどうかを判定し、適切な処理を行うためである。
[0137] まず ECCエラーレコード # もエラービットカウント 1601の値を取得する(S1901 )。次に取得したエラービットカウントが訂正閾値の 4ビット以上力どうかを判定する(S 1902)。エラービットカウントが訂正閾値の 4ビット未満であれば、今後エラービットが 増加しても、直ちに訂正不可能な読出しエラーに至る事はないと判断しデータ訂正 複写処理を終了する。
[0138] エラービットカウントが 4ビットの時には訂正閾値と等しい値であるので訂正後デー タの書込み(S1903)を行う。具体的には、 MPU705力 例えばバッファメモリ 708に ある訂正後のデータをフラッシュメモリ 703の任意の物理ブロックに書込む。このとき にデータを書込む物理ブロックは、該データを読み出した物理ブロック以外の物理ブ ロックである。最後に、エラーを発生した物理ブロックについての ECCエラーレコード # iの登録を抹消する(S 1904)。
[0139] 以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデ ータは、今後訂正不可能な読出しエラーに発展する可能性があると判断し、訂正可 能なうちに訂正をし、訂正済みのデータを別の物理ブロックの物理ページに書込む。
[0140] 本実施例は、発生したビットエラーの数が 5ビットや 6ビットなどで、 ECC回路の訂正 能力を超えており、エラーの訂正が不可能なときにはデータ訂正複写処理 (S 1706) を行わない。エラーの訂正が可能なときには、そのエラーのビット数が、 ECC回路 70 9で訂正可能な範囲で、かつ訂正閾値以上の 4ビットであるときに、誤り訂正後のデ ータをフラッシュメモリ 103の別の物理ブロックに書込む。
[0141] なお、ここでは、 ECCエラーテープノレ 711の ECCエラーレコード # i〖こエラービット カウント 1601を設けている力 これに限らず、エラーの程度を示すものであればよい 。例えば具体的なビット数でなくても、訂正閾値以上かどうかを表すエラー発生情報 としてのフラグを用 V、て本発明の効果を実現できることは容易に想到できる。さらに、 ECCエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能なエラーの発生時に のみ行なうようにしても構わな 、。
[0142] また本実施例では、ビット訂正の可能な ECC回路を前提として 、るので、エラービ ットカウント 1601を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンポ ル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにェ ラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要があ る。
[0143] (実施例 6)
本実施例における不揮発性メモリ装置の構成は、図 17に示される。メモリカード 70 1はメモリコントローラ 702と不揮発性メモリであるフラッシュメモリ 703とを備えている。 メモリコントローラ 702に含まれる各構成要素は、第 5の実施例で説明したものと同様 である。
[0144] 図 18は、フラッシュメモリ 103の内部の構成を示すブロック図であり、フラッシュメモ リ 703の内部は、 PBO〜PB1023の 1024個の物理ブロックからなる。図 19は、物理 ブロックの内部の構成を示すブロック図であり、フラッシュメモリ 703内の各物理ブロッ クは 64個の物理ページ PP0〜PP63を備える。これらは、第 5の実施例で説明したも のと同様である。図 20に示すように、 ECCエラーテーブル 711は複数の ECCエラー レコード #iを備えている。また、本実施例の ECCエラーレコード #iの構成は図 21に 示すとおりである。 ECCエラーレコード #iは、エラーが発生した物理ブロックのァドレ スを格納するエラーブロック 601と、エラーが発生した物理ページのアドレスを格納す るエラーページ 1001とにカ卩えて、発生したエラーのビット数を格納するエラービット力 ゥント 1601を備える。これらは、第 5の実施例と同様である。
[0145] 図 25は、本実施例の不揮発性記憶装置におけるデータ読出しのフローチャートで ある。まず、読出しを行う物理ブロックのアドレスと物理ページのアドレスをフラッシュメ モリインターフェース 707に指示して、フラッシュメモリ 703からデータを読出す(S20 01)。 S2001に続いて、 ECC回路 709は読出したデータに対して読出しエラーが発 生しているかどうかを判定する(S2002)。読出しエラーが発生していない場合、 MP U705は、ホストインターフェース 704に対して外部ホスト機器へのデータの出力を指 示する(S2006)。その後読出しが継続する限り(S2007)、読出しの単位でアドレス を増加させながら S2001へとループしてデータ読み出しの処理は継続する。
[0146] 読出しエラーがあると判定 (S2002)した場合、そのエラーが訂正可能力どうかを判 定する(S2003)。訂正不可能と判定した場合には、直ちに読出し処理を終了する。
[0147] 訂正可能と判断した場合には、 ECCエラーテーブルの登録を行う(S2004)。ここ での ECCエラーテーブルは第 5の実施例の図 23で説明した処理と同様に登録され る。 ECCエラーテーブルの登録後エラーをバッファメモリ 708内で訂正し(S 2005)、 MPU705は、ホストインターフェース 704に対して外部ホスト機器へのデータの出力 を指示する(S2006)。その後読出しが «続する限り(S2007)、読出しの単位でアド レスを増加させながら S2001へとループして読み出し処理を行う。
[0148] 本実施例では、第 5の実施例で行って 、たデータ訂正複写処理を、データ読出し のフローチャートには含まない。それは、本実施例ではデータの読出し処理中にフラ ッシュメモリ 703へのデータの書込みを行わないようにするためである。一般的にフラ ッシュメモリの書込み時間は読み出し時間に比べて長くかかるので、そのような時間 の力かる書込み処理をデータの読出し中に行うと処理性能の低下を招いてしまう。よ つて、データの読み出し中にフラッシュメモリ 703への書込みは行わない。
[0149] 従って、本実施例では、他の処理が行なわれていない、空いている時間にデータ 訂正複写処理を行う。空いている時間とはメモリカード 701外部力 のデータの書込 み ·読み出しの処理が行われて ヽな 、期間、またはメモリカード 701に電源が投入さ れて後、メモリカード 701外部力 のデータの書込み'読み出しの処理が行われるま での期間である。
[0150] 空き時間に行うデータ訂正複写処理を図 26のフローチャートを用いて説明する。
MPU705は、空き時間に ECCエラーテーブル 711のエラーレコードを検索し、エラ 一ビットカウント 1601が訂正閾値以上の 4ビットとなっている ECCエラーレコード #i を選択する(S2101)。このとき該当するエラーレコードがなければ (S2102)、データ 訂正複写処理を終了する。
[0151] 該当するエラーレコード #iがある場合にはエラーレコード # iのエラーブロック 601 とエラーページ 1001から物理ブロックと物理ページのアドレスを取得する(S2103) 。そして取得したアドレスに属するデータをバッファメモリ 708に読み出す (S2104)。 続いて ECC回路 109によりエラーを訂正し (S2105)、訂正後のデータをフラッシュメ モリ 703の任意の物理ブロックに書込む(S2106)。このときにデータを書込む物理 ブロックは、該エラーレコード # iに登録された物理ブロック以外物理ブロックである。 最後に該当するエラーレコード #iの登録を抹消して処理を終了する(S2107)。
[0152] 以上のようにして、訂正閾値以上のエラービットカウントが発生した物理ページのデ ータは、今後訂正不可能な読出しエラーに発展する可能性があると判断されるので、 上述のように空き時間を利用して、エラーの訂正をし、訂正済みのデータを別の物理 ブロックの物理ページに書込む。このように、一度書込まれたデータに対して読出し を繰り返すと、不良ビットは増加していくが、当該データを訂正して、別の物理ブロッ クに書きかえる事で、訂正不可能な読出しエラーを回避することが可能になる。
[0153] 本実施例においても、発生したビットエラーが訂正不可能なときには、 ECCエラー テーブルの登録を行なわな 、のでデータ訂正複写処理を行わな 、。ある物理ページ のデータを読み出した際にエラーが発生し、そのエラーのエラービット数力 ECC回 路 709で誤り訂正可能な範囲で、かつ訂正閾値を超えたときにのみ、今後当該物理 ページ力ものデータの読出しを行わなくてもよ 、ように、誤り訂正後のデータをフラッ シュメモリ 703の別の物理ブロックに書込み、読み出しに用いる。
[0154] なお、ここでは、 ECCエラーテープノレ 711の ECCエラーレコード # i〖こエラービット カウント 1601を設けている力 これに限らず、エラーの程度を示すものであればよい 。例えば具体的なビット数でなくても、訂正閾値を越えたかどうかを表すエラー発生 情報としてのフラグを用いて本発明の効果を実現できることは容易に想到できる。さら に、 ECCエラーテーブルの登録は訂正閾値以上かつ誤り訂正可能なエラーの発生 時にのみ行なうようにしても構わない。
[0155] また本実施例では、ビット訂正の可能な ECC回路を前提として 、るので、エラービ ットカウント 1601を用いた。しかし、ビット訂正ではなくリードソロモン符号等のシンポ ル訂正可能な誤り訂正回路を前提とした場合には、エラービットカウントの変わりにェ ラーの発生したシンボル数の情報をエラーシンボルカウントとして適用する必要があ る。
産業上の利用可能性
[0156] 本発明に係わる不揮発性記憶装置は、不揮発性メモリの固定不良を検出して、以 降そのブロックの使用を制限することで読出しエラーの低減を図ることができるので、
ECCによる誤り訂正が必要な不揮発性メモリを使用したメモリカードシステム、例えば デジタルカメラの静止画保存用のストレージメモリ等に使用することができる。

Claims

請求の範囲
[1] 不揮発性メモリとメモリコントローラを具備する不揮発性記憶装置であって、
前記不揮発性メモリは、消去単位である物理ブロックを複数備え、前記物理ブロッ クは書込み単位である物理ページを複数有してなるものであり、
前記メモリコントローラは、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、 前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラー の訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されて 、るデータを管理するために必要なテーブルを 保持しているアドレステーブルと、を備え、
前記メモリコントローラのアドレステーブルは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しェ ラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消 去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部力 指定する論理ブロックアドレスと、前記不揮発性メモリの物理 ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテ 一ブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを 使用するかどうかを決める不揮発性記憶装置。
[2] 前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止す る物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備 え、
前記エラーテープノレのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したと きに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック 情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、 前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを 書込んだことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読 出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラ 一テーブルを参照し、データを書込む物理ブロックにつ 、て少なくとも前記エラーブ ロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したと きは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロック テーブルに記録する請求項 1に記載の不揮発性記憶装置。
[3] 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出 した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項 2 に記載の不揮発性記憶装置。
[4] 前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができ ないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請 求項 2に記載の不揮発性記憶装置。
[5] 前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができ ないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請 求項 3に記載の不揮発性記憶装置。
[6] 前記メモリコントローラのアドレステーブルは、データの書込み及び読出しを禁止す る物理ブロックのアドレスについての情報を記録する不良ブロックテーブルを更に備 え、
前記エラーテープノレのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したと きに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック 情報と、
読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、 前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロッ ク消去カウンタ情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラ 一テーブルを参照し、データを書込む物理ブロックにつ 、て前記エラーブロック情報 が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記 エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を 示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値である ときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロッ クテーブルに記録する請求項 1に記載の不揮発性記憶装置。
[7] 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出 した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項 6 に記載の不揮発性記憶装置。
[8] 前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の 可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項
6に記載の不揮発性記憶装置。
[9] 前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の 可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項
7に記載の不揮発性記憶装置。
[10] 前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたェ ラーブロック情報と、
前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれ たエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタとを備え、 前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの 情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応 する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラー を訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 1に記載の 不揮発性記憶装置。
[11] 前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処 理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの 情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応 する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラー を訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 10に記載の 不揮発性記憶装置。
[12] 前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を 記録するエラーブロック情報と、
前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情 報を記録するエラーページ情報と、
前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定めら れた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生 情報とを備え、
前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブル のエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に 読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書 込む請求項 1に記載の不揮発性記憶装置。
[13] 前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われて いないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコ ードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデー タのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 1
2に記載の不揮発性記憶装置。
[14] 消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物 理ページを複数有してなる不揮発性メモリに対して、データの読出し及び書込みを 制御するメモリコントローラであって、
前記メモリコントローラ内部における全体の制御を行う演算処理ユニットと、 前記不揮発性メモリから読出したデータに対して、エラーを検出する機能と、エラー の訂正が可能である場合には訂正をする機能とを備える誤り訂正回路と、
前記不揮発性メモリに格納されて 、るデータを管理するために必要なテーブルを 保持しているアドレステーブルと、を備え、
前記アドレステーブルは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックについての前記読出しェ ラーに関する情報であるエラーレコードを、複数有するエラーテーブルと、
前記不揮発性メモリの各物理ブロックに対して、データが書込み済みであるか、消 去済みであるかの情報を持つエントリテーブルと、
ホスト機器が外部力 指定する論理ブロックアドレスと、前記不揮発性メモリの物理 ブロックアドレスの変換情報を示す論物変換テーブルとを有し、
前記演算処理ユニットは、前記誤り訂正回路からの誤り検出に基づき前記エラーテ 一ブルのエラーレコードを登録、更新し、前記読出しエラーを検出した物理ブロックを 使用するかどうかを決めるメモリコントローラ。
[15] 前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのァ ドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテープノレのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したと きに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック 情報と、
前記エラーが発生したことを示す情報を記録するエラー情報と、
前記エラーが発生した後に、前記物理ブロックのデータを消去して新たなデータを 書込んだことを示す情報を記録するエラーブロック消去情報と、
前記エラーブロック消去情報に情報が記録された後、同一の物理ブロックで再度読 出しエラーを検出したことを示すエラー再発生情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラ 一テーブルを参照し、データを書込む物理ブロックにつ 、て少なくとも前記エラーブ ロック情報と前記エラー再発生情報とが記録された前記エラーレコードが存在したと きは、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロック テーブルに記録する請求項 14に記載のメモリコントローラ。
[16] 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出 した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項 15 に記載のメモリコントローラ。
[17] 前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができ ないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請 求項 15に記載のメモリコントローラ。
[18] 前記演算処理ユニットは、
前記誤り訂正回路が検出した読出しエラーが、前記誤り訂正回路により訂正ができ ないときにだけ前記エラーテーブルのエラーレコードに情報を記録及び更新する請 求項 16に記載のメモリコントローラ。
[19] 前記アドレステーブルは、データの書込み及び読出しを禁止する物理ブロックのァ ドレスについての情報を記録する不良ブロックテーブルを更に備え、
前記エラーテープノレのエラーレコードは、
前記不揮発性メモリから読出したデータのエラーを前記誤り訂正回路が検出したと きに、エラーを発生した物理ブロックのアドレスを示す情報を記録するエラーブロック 情報と、
読出しエラーが発生した回数を示す情報であるエラーカウンタ情報と、
前記読出しエラーの発生した物理ブロックを物理消去した回数を示すエラーブロッ ク消去カウンタ情報とを備え、
前記演算処理ユニットは、前記不揮発性メモリにデータを書込むときに、前記エラ 一テーブルを参照し、データを書込む物理ブロックにつ 、て前記エラーブロック情報 が記録された前記エラーレコードが存在したときは、前記エラーカウンタ情報と前記 エラーブロック消去情報とを比較して、前記エラーブロック消去情報が所定の回数を 示しかつ前記エラーカウンタ情報が前記エラーブロック消去情報より大きな値である ときに、前記データを書込む物理ブロックのアドレスに関する情報を前記不良ブロッ クテーブルに記録する請求項 14に記載のメモリコントローラ。
[20] 前記エラーテーブルのエラーレコードは、前記誤り訂正回路が読出しエラーを検出 した前記物理ページのアドレスが書かれたエラーページ情報を更に備える請求項 19 に記載のメモリコントローラ。
[21] 前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の 可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項
19に記載のメモリコントローラ。
[22] 前記演算処理ユニットは、
前記誤り訂正回路が読出しエラーを検出すれば、前記誤り訂正回路による訂正の 可否にかかわらず前記エラーテーブルのエラーレコードを登録及び更新する請求項
20に記載のメモリコントローラ。
[23] 前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスが書かれたェ ラーブロック情報と、
前記誤り訂正回路が前記読出しエラーを検出した物理ページのアドレスが書かれ たエラーページ情報と、
前記読出しエラーのビット数を示す情報を記録するエラービットカウンタと、を備え、 前記演算処理ユニットは、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの 情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応 する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラー を訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 14に記載の メモリコン卜ローラ。
[24] 前記演算処理ユニットは、外部からの前記不揮発性メモリに対してデータ読出し処 理が行われていないときに、前記誤り訂正回路によって訂正可能なエラービット数以 下の値であってかつ予め定められた訂正閾値を用いて、前記エラービットカウンタの 情報が前記訂正閾値以上となっている前記エラーテーブルのエラーレコードに対応 する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデータのエラー を訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 23に記載の メモリコン卜ローラ。
[25] 前記エラーテーブルのエラーレコードは、
前記誤り訂正回路が読出しエラーを検出した物理ブロックのアドレスを示す情報を 記録するエラーブロック情報と、
前記誤り訂正回路が読出しエラーを検出した前記物理ページのアドレスを示す情 報を記録するエラーページ情報と、
前記誤り訂正回路によって訂正可能なエラービット数以下の値であって予め定めら れた訂正閾値以上の読出しエラーが発生したことを示す情報を記録するエラー発生 情報とを備え、
前記演算処理ユニットは、前記エラー発生情報が記録された前記エラーテーブル のエラーレコードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に 読出したデータのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書 込む請求項 14に記載のメモリコントローラ。
[26] 前記演算処理ユニットは、前記不揮発性メモリのデータを読出す処理が行われて いないときに、前記エラー発生情報が記録された前記エラーテーブルのエラーレコ ードに対応する物理ブロックのデータを読出して、前記誤り訂正回路に読出したデー タのエラーを訂正させて、該訂正されたデータを別の物理ブロックに書込む請求項 2 5に記載のメモリコントローラ。
[27] 消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物 理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデー タに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をす る機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前 記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを 備えるメモリコントローラと、を具備する不揮発性記憶装置において、
データを読み出すときに外部力 指定された論理アドレス力 物理アドレスを決定し 前記物理アドレスに対応する物理ブロック力 データを読出し、
当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外 部に出力し、
前記物理アドレスを前記エラーテーブルに登録する不良領域検出方法。
[28] 前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えら れたときに、前記データが書換えられたこと示す情報を前記エラーテーブルに登録し 前記データが書き換えられた物理ブロック力 読出したデータに訂正可能なエラー 力 Sある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換 えられた後にエラーが発生したことを示すエラー再発生情報を前記エラーテーブル に登録し、
前記エラー再発生情報が前記エラーテーブルに登録されている物理ブロックに対 し、データの書込み及び読出しを禁止する請求項 27に記載の不良領域検出方法。
[29] 前記エラーテーブルに物理アドレスが登録された物理ブロックのデータが書換えら れたときに、前記データが書換えられた回数を示すエラーブロック消去カウンタを前 記エラーテーブルに登録し、
前記データが書き換えられた物理ブロック力 読出したデータに訂正可能なエラー 力 Sある場合は、当該エラーを訂正して外部に出力すると共に、前記データが書き換 えられた後にエラーが発生した回数を示すエラーカウンタを前記エラーテーブルに 登録し、
前記エラーカウンタが所定の値以上を示したときに、前記エラーカウンタが登録され た物理ブロックへのデータの書込み及び読出しを禁止する請求項 27に記載の不良 領域検出方法。
[30] 消去単位である物理ブロックを複数備え、前記物理ブロックは書込み単位である物 理ページを複数有してなる不揮発性メモリと、前記不揮発性メモリからの読出しデー タに対してエラーを検出する機能及びエラーの訂正が可能である場合には訂正をす る機能を備える誤り訂正回路と、読出しエラーを検出した物理ブロックについての前 記読出しエラーに関する情報であるエラーレコードを複数保持するエラーテーブルを 備えるメモリコントローラと、を具備する不揮発性記憶装置において、
外部から指定された論理アドレスから物理アドレスを決定してデータを読出す物理 ブロックを特定する特定ステップと、
前記物理ブロック力 データを読出すデータ読出しステップと、
当該読出したデータに訂正可能なエラーがある場合は、前記エラーを訂正して外 部に出力するデータ出力ステップと、
前記訂正可能なエラーを発生した物理ブロックの物理アドレスとエラー数に関する 情報とを前記エラーテーブルに登録するエラー数登録ステップと、を有する不良領域 検出方法。
[31] 前記エラーテーブルに登録されたエラー数に関する情報が、所定の値以上を示し たときに、前記物理ブロックに書込まれているデータを別の物理ブロックに複写する 複写ステップを有する請求項 30記載の不良領域検出方法。
[32] 前記複写ステップを、前記データ読出しステップと前記データ出力ステップの間に 行なう請求項 31に記載の不良領域検出方法。
[33] 前記複写ステップを、前記不揮発性記憶装置に対して、外部からのデータ書込み 及び読出しを実行していないときに行なう請求項 31に記載の不良領域検出方法。
[34] 前記複写ステップを、前記不揮発性記憶装置に対して電源が投入した直後に行な う請求項 33に記載の不良領域検出方法。
PCT/JP2006/313978 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法 WO2007010829A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007525978A JP4950886B2 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
US11/995,600 US9092361B2 (en) 2005-07-15 2006-07-13 Nonvolatile storage device, memory controller, and defective region detection method
CN200680029679.0A CN101243417B (zh) 2005-07-15 2006-07-13 非易失性存储装置、存储控制器以及不良区域检测方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-207198 2005-07-15
JP2005207198 2005-07-15

Publications (1)

Publication Number Publication Date
WO2007010829A1 true WO2007010829A1 (ja) 2007-01-25

Family

ID=37668709

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/313978 WO2007010829A1 (ja) 2005-07-15 2006-07-13 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法

Country Status (4)

Country Link
US (1) US9092361B2 (ja)
JP (1) JP4950886B2 (ja)
CN (1) CN101243417B (ja)
WO (1) WO2007010829A1 (ja)

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198020A (ja) * 2007-02-14 2008-08-28 Toshiba Corp 半導体メモリ情報蓄積装置とその不良部位対処方法
JP2008250671A (ja) * 2007-03-30 2008-10-16 Yokogawa Electric Corp 情報処理装置および情報処理方法
JP2008262614A (ja) * 2007-04-10 2008-10-30 Mega Chips Corp 不揮発性半導体記憶装置
US20090070529A1 (en) * 2007-09-12 2009-03-12 Mee Bryan J Data protection after possible write abort or erase abort
US20090132875A1 (en) * 2007-11-21 2009-05-21 Jun Kitahara Method of correcting error of flash memory device, and, flash memory device and storage system using the same
WO2009078145A1 (ja) * 2007-12-14 2009-06-25 Kabushiki Kaisha Toshiba 制御装置
JP2009187214A (ja) * 2008-02-05 2009-08-20 Fujitsu Ltd 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
TWI381391B (zh) * 2008-08-05 2013-01-01 Transcend Information Inc 可自我檢測使用狀態的儲存裝置及其檢測方法
CN102880562A (zh) * 2011-05-20 2013-01-16 株式会社东海理化电机制作所 闪存装置
JP2013054409A (ja) * 2011-08-31 2013-03-21 Toshiba Corp 情報記憶装置および情報記憶方法
JP2014041644A (ja) * 2007-08-22 2014-03-06 Micron Technology Inc フラッシュメモリ中のエラースキャニング
JP2014048744A (ja) * 2012-08-29 2014-03-17 Denso Corp 電子制御装置
US9043675B2 (en) 2012-02-17 2015-05-26 Kabushiki Kaisha Toshiba Storage device
TWI650763B (zh) * 2018-05-14 2019-02-11 慧榮科技股份有限公司 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統
CN111324283A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020072B2 (en) * 2006-10-25 2011-09-13 International Business Machines Corporation Method and apparatus for correcting data errors
WO2008057557A2 (en) * 2006-11-06 2008-05-15 Rambus Inc. Memory system supporting nonvolatile physical memory
JP2008287404A (ja) * 2007-05-16 2008-11-27 Hitachi Ltd 読み出しによる非アクセスメモリセルのデータ破壊を検出及び回復する装置、及びその方法
JP5265883B2 (ja) * 2007-05-24 2013-08-14 株式会社メガチップス メモリアクセスシステム
US7765426B2 (en) * 2007-06-07 2010-07-27 Micron Technology, Inc. Emerging bad block detection
JP2009087509A (ja) 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
US7941692B2 (en) * 2007-12-31 2011-05-10 Intel Corporation NAND power fail recovery
TWI381390B (zh) * 2008-04-10 2013-01-01 Phison Electronics Corp 快閃記憶體的損壞區塊辨識方法、儲存系統及其控制器
US8122308B2 (en) * 2008-06-25 2012-02-21 Intel Corporation Securely clearing an error indicator
CN101859604B (zh) * 2009-04-10 2012-10-24 国民技术股份有限公司 闪存坏块的利用方法
CN102460383A (zh) * 2009-06-30 2012-05-16 松下电器产业株式会社 数据处理方法、半导体集成电路
US8140763B2 (en) 2009-07-16 2012-03-20 International Business Machines Corporation Techniques for managing data in a write cache of a storage controller
CN101615145B (zh) * 2009-07-24 2011-12-07 中兴通讯股份有限公司 一种提高存储器数据缓存可靠性的方法和装置
US8453021B2 (en) 2009-07-29 2013-05-28 Stec, Inc. Wear leveling in solid-state device
US8266481B2 (en) * 2009-07-29 2012-09-11 Stec, Inc. System and method of wear-leveling in flash storage
CN102004701B (zh) * 2009-08-28 2013-01-09 炬才微电子(深圳)有限公司 一种次级内存的分配方法和装置
US8312349B2 (en) 2009-10-27 2012-11-13 Micron Technology, Inc. Error detection/correction based memory management
JP2011107851A (ja) * 2009-11-13 2011-06-02 Toshiba Corp メモリシステム
KR101648531B1 (ko) * 2010-02-12 2016-08-17 삼성전자주식회사 불휘발성 메모리 시스템과 이의 동작 방법
CN102208212B (zh) * 2010-03-30 2014-10-22 群联电子股份有限公司 错误校正方法、存储器控制器与存储器储存系统
US9268632B2 (en) 2010-09-24 2016-02-23 Rambus Inc. Memory device with ECC history table
TWI447731B (zh) * 2010-12-01 2014-08-01 Phison Electronics Corp 資料讀取方法、記憶體儲存裝置及其控制器
TWI479495B (zh) * 2011-06-02 2015-04-01 Phison Electronics Corp 資料讀取方法、記憶體控制器及記憶體儲存裝置
DE112012003493T5 (de) * 2011-08-24 2014-05-08 Mitsubishi Electric Corporation Fehlerkorrigierender Dekodierer
KR20130049332A (ko) * 2011-11-04 2013-05-14 삼성전자주식회사 메모리 시스템 및 그것의 동작 방법
US8996936B2 (en) * 2011-12-08 2015-03-31 Sandisk Technologies Inc. Enhanced error correction in memory devices
EP2608211A1 (en) * 2011-12-22 2013-06-26 Fluiditech IP Limited Method of testing a flash memory
US9418700B2 (en) 2012-06-29 2016-08-16 Intel Corporation Bad block management mechanism
EP3333853A1 (en) * 2013-03-07 2018-06-13 Charles I. Peddle High speed flash controllers
KR101467309B1 (ko) * 2013-03-11 2014-12-02 전자부품연구원 에러 검출 테이블 생성에 의한 스토리지 관리 방법 및 이를 적용한 시스템
US9244852B2 (en) * 2013-05-06 2016-01-26 Globalfoundries Inc. Recovering from uncorrected memory errors
US9299457B2 (en) * 2014-02-23 2016-03-29 Qualcomm Incorporated Kernel masking of DRAM defects
TWI527037B (zh) * 2014-04-10 2016-03-21 群聯電子股份有限公司 資料儲存方法、記憶體控制電路單元與記憶體儲存裝置
CN105022695A (zh) * 2014-04-21 2015-11-04 群联电子股份有限公司 数据存储方法、存储器控制电路单元与存储器存储装置
US9478315B2 (en) * 2014-06-03 2016-10-25 Sandisk Technologies Llc Bit error rate mapping in a memory system
US9477548B2 (en) * 2014-08-01 2016-10-25 Freescale Semiconductor, Inc. Error repair location cache
JP6332134B2 (ja) * 2014-09-16 2018-05-30 株式会社デンソー メモリ診断回路
TWI537966B (zh) * 2014-10-03 2016-06-11 群聯電子股份有限公司 錯誤處理方法、記憶體儲存裝置及記憶體控制電路單元
CN105575440B (zh) * 2014-10-15 2018-11-23 群联电子股份有限公司 错误处理方法、存储器储存装置及存储器控制电路单元
US9703629B2 (en) * 2014-10-29 2017-07-11 Sandisk Technologies Llc Approach to correct ECC errors using duplicate copies of data
US9934872B2 (en) * 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9043638B1 (en) * 2014-11-14 2015-05-26 Quanta Computer Inc. Method for enhancing memory fault tolerance
KR20160146332A (ko) * 2015-06-12 2016-12-21 에스케이하이닉스 주식회사 복수의 저장 영역들을 포함하는 메모리 시스템 및 그것의 동작 방법
US10665305B2 (en) * 2015-09-09 2020-05-26 Toshiba Memory Corporation Host device connectable to memory device performing patrol read and memory device performing patrol read
US10304560B2 (en) 2016-09-02 2019-05-28 International Business Machines Corporation Performing error correction in computer memory
US10297335B2 (en) 2016-09-02 2019-05-21 International Business Machines Corporation Tracking address ranges for computer memory errors
US10338999B2 (en) * 2016-09-02 2019-07-02 International Business Machines Corporation Confirming memory marks indicating an error in computer memory
US10353669B2 (en) 2016-09-02 2019-07-16 International Business Machines Corporation Managing entries in a mark table of computer memory errors
CN106445716A (zh) * 2016-09-19 2017-02-22 北京新能源汽车股份有限公司 一种故障功能测试方法及装置
KR20180090422A (ko) * 2017-02-02 2018-08-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
CN107402725B (zh) * 2017-03-20 2020-08-25 威盛电子股份有限公司 非易失性存储装置及其数据去重复方法
JP6797727B2 (ja) 2017-03-21 2020-12-09 キオクシア株式会社 半導体記憶装置
CN108958961B (zh) * 2017-05-22 2021-11-30 上海宝存信息科技有限公司 数据储存装置以及数据错误管理方法
US10402272B2 (en) * 2017-05-25 2019-09-03 Micron Technology, Inc. Memory device with dynamic programming calibration
US10140040B1 (en) 2017-05-25 2018-11-27 Micron Technology, Inc. Memory device with dynamic program-verify voltage calibration
US10452480B2 (en) 2017-05-25 2019-10-22 Micron Technology, Inc. Memory device with dynamic processing level calibration
CN110265083B (zh) * 2018-03-12 2021-07-27 旺宏电子股份有限公司 存储器装置的数据探测方法
US10566063B2 (en) 2018-05-16 2020-02-18 Micron Technology, Inc. Memory system with dynamic calibration using a trim management mechanism
US10664194B2 (en) 2018-05-16 2020-05-26 Micron Technology, Inc. Memory system with dynamic calibration using a variable adjustment mechanism
US10990466B2 (en) 2018-06-20 2021-04-27 Micron Technology, Inc. Memory sub-system with dynamic calibration using component-based function(s)
US11188416B2 (en) 2018-07-12 2021-11-30 Micron Technology, Inc. Enhanced block management for a memory sub-system
US11113129B2 (en) 2018-07-13 2021-09-07 Micron Technology, Inc. Real time block failure analysis for a memory sub-system
KR102554418B1 (ko) * 2018-10-01 2023-07-11 삼성전자주식회사 메모리 컨트롤러 및 이를 포함하는 스토리지 장치
US10936246B2 (en) 2018-10-10 2021-03-02 Micron Technology, Inc. Dynamic background scan optimization in a memory sub-system
US11507443B2 (en) * 2020-04-10 2022-11-22 Micron Technology, Inc. Memory fault map for an accelerated neural network

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153266A (ja) * 1997-08-06 1999-02-26 Oki Electric Ind Co Ltd 半導体記憶装置およびその制御方法
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU7313600A (en) 1999-09-17 2001-04-24 Hitachi Limited Storage where the number of error corrections is recorded
JP4601119B2 (ja) * 2000-05-02 2010-12-22 株式会社アドバンテスト メモリ試験方法・メモリ試験装置
JP4004811B2 (ja) * 2002-02-06 2007-11-07 株式会社東芝 不揮発性半導体記憶装置
JP3906825B2 (ja) * 2003-06-17 2007-04-18 日本電気株式会社 計算機システム、計算機システム起動方法およびプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1153266A (ja) * 1997-08-06 1999-02-26 Oki Electric Ind Co Ltd 半導体記憶装置およびその制御方法
JP2003015929A (ja) * 2001-06-28 2003-01-17 Matsushita Electric Ind Co Ltd 不揮発性メモリの制御方法
JP2003058432A (ja) * 2001-08-09 2003-02-28 Hitachi Ltd メモリカード及びメモリコントローラ

Cited By (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008198020A (ja) * 2007-02-14 2008-08-28 Toshiba Corp 半導体メモリ情報蓄積装置とその不良部位対処方法
JP2008250671A (ja) * 2007-03-30 2008-10-16 Yokogawa Electric Corp 情報処理装置および情報処理方法
JP2008262614A (ja) * 2007-04-10 2008-10-30 Mega Chips Corp 不揮発性半導体記憶装置
JP2014041644A (ja) * 2007-08-22 2014-03-06 Micron Technology Inc フラッシュメモリ中のエラースキャニング
US20090070529A1 (en) * 2007-09-12 2009-03-12 Mee Bryan J Data protection after possible write abort or erase abort
US8533562B2 (en) * 2007-09-12 2013-09-10 Sandisk Technologies Inc. Data protection after possible write abort or erase abort
US8473923B2 (en) 2007-09-12 2013-06-25 Sandisk Technologies Inc. Pointers for write abort handling
US20090132875A1 (en) * 2007-11-21 2009-05-21 Jun Kitahara Method of correcting error of flash memory device, and, flash memory device and storage system using the same
US8972823B2 (en) 2007-11-21 2015-03-03 Hitachi, Ltd. Error correcting for improving reliability by combination of storage system and flash memory device
US8612830B2 (en) * 2007-11-21 2013-12-17 Hitachi, Ltd. Method of correcting error of flash memory device, and, flash memory device and storage system using the same
WO2009078145A1 (ja) * 2007-12-14 2009-06-25 Kabushiki Kaisha Toshiba 制御装置
US8145951B2 (en) 2007-12-14 2012-03-27 Kabushiki Kaisha Toshiba Control device
JP5269810B2 (ja) * 2007-12-14 2013-08-21 株式会社東芝 制御装置
JP2009187214A (ja) * 2008-02-05 2009-08-20 Fujitsu Ltd 不良メモリを検出する電子機器、不良メモリ検出方法およびそのためのプログラム
TWI381391B (zh) * 2008-08-05 2013-01-01 Transcend Information Inc 可自我檢測使用狀態的儲存裝置及其檢測方法
CN102880562A (zh) * 2011-05-20 2013-01-16 株式会社东海理化电机制作所 闪存装置
US9021184B2 (en) 2011-05-20 2015-04-28 Kabushiki Kaisha Tokai Rika Denki Seisakusho Flash memory device
CN102880562B (zh) * 2011-05-20 2015-08-05 株式会社东海理化电机制作所 闪存装置
JP2013054409A (ja) * 2011-08-31 2013-03-21 Toshiba Corp 情報記憶装置および情報記憶方法
US9043675B2 (en) 2012-02-17 2015-05-26 Kabushiki Kaisha Toshiba Storage device
JP2014048744A (ja) * 2012-08-29 2014-03-17 Denso Corp 電子制御装置
TWI650763B (zh) * 2018-05-14 2019-02-11 慧榮科技股份有限公司 用來進行記憶裝置的頁可用性管理之方法、記憶裝置及電子裝置以及頁可用性管理系統
US10811120B2 (en) 2018-05-14 2020-10-20 Silicon Motion, Inc. Method for performing page availability management of memory device, associated memory device and electronic device, and page availability management system
CN111324283A (zh) * 2018-12-14 2020-06-23 北京兆易创新科技股份有限公司 一种存储器
CN111324283B (zh) * 2018-12-14 2024-02-20 兆易创新科技集团股份有限公司 一种存储器

Also Published As

Publication number Publication date
US9092361B2 (en) 2015-07-28
JP4950886B2 (ja) 2012-06-13
JPWO2007010829A1 (ja) 2009-01-29
CN101243417A (zh) 2008-08-13
US20090055680A1 (en) 2009-02-26
CN101243417B (zh) 2011-05-04

Similar Documents

Publication Publication Date Title
JP4950886B2 (ja) 不揮発性記憶装置、メモリコントローラ及び不良領域検出方法
US8271515B2 (en) System and method for providing copyback data integrity in a non-volatile memory system
US8453021B2 (en) Wear leveling in solid-state device
US7613982B2 (en) Data processing apparatus and method for flash memory
EP2367110B1 (en) Emerging bad block detection
JP4073799B2 (ja) メモリシステム
JP4323707B2 (ja) フラッシュメモリの欠陥管理方法
JP4722839B2 (ja) メモリ制御回路、不揮発性記憶装置及びメモリ制御方法
US8479062B2 (en) Program disturb error logging and correction for flash memory
TWI633428B (zh) 資料儲存裝置與記憶體裝置之資料處理方法
JP4866107B2 (ja) 不揮発性記憶装置及びその書き込み判定方法
JP6080180B2 (ja) 不揮発性メモリでのマーカプログラミング
JP2010079486A (ja) 半導体記録装置
US9910729B1 (en) Restoring ECC syndrome in non-volatile memory devices
CN107992268B (zh) 一种坏块标记的方法及相关装置
US20100042900A1 (en) Write Failure Handling of MLC NAND
JP4866114B2 (ja) メモリコントローラ、不揮発性記憶装置、不揮発性記憶システム及びメモリ制御方法
JP2010140261A (ja) 情報処理装置、エラー訂正方法及びプログラム
CN113934370A (zh) 非易失性存储器的耗损均衡方法、设备及介质
TWI417887B (zh) 資料儲存系統與方法
JP2017097909A (ja) 半導体メモリの制御装置及び制御方法
JP2005141417A (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びに、フラッシュメモリの制御方法
JP2014235499A (ja) 半導体メモリの制御装置及び制御方法

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680029679.0

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007525978

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 11995600

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 06768192

Country of ref document: EP

Kind code of ref document: A1