WO2020248798A1 - Method and device for intelligently identifying unreliable block in non-volatile storage medium - Google Patents

Method and device for intelligently identifying unreliable block in non-volatile storage medium Download PDF

Info

Publication number
WO2020248798A1
WO2020248798A1 PCT/CN2020/091803 CN2020091803W WO2020248798A1 WO 2020248798 A1 WO2020248798 A1 WO 2020248798A1 CN 2020091803 W CN2020091803 W CN 2020091803W WO 2020248798 A1 WO2020248798 A1 WO 2020248798A1
Authority
WO
WIPO (PCT)
Prior art keywords
block
programming
life prediction
value
bad block
Prior art date
Application number
PCT/CN2020/091803
Other languages
French (fr)
Chinese (zh)
Inventor
薛立成
Original Assignee
北京忆芯科技有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 北京忆芯科技有限公司 filed Critical 北京忆芯科技有限公司
Publication of WO2020248798A1 publication Critical patent/WO2020248798A1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0616Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • This application relates to the field of storage technology, and in particular to a method and device for identifying unreliable blocks of a non-volatile storage medium.
  • FIG. 1 shows a block diagram of a storage device in the prior art.
  • the storage device 100 is coupled with the host and is used to provide storage capabilities for the host.
  • the host and the storage device 100 can be coupled in a variety of ways, including but not limited to, for example, SATA (Serial Advanced Technology Attachment), SCSI (Small Computer System Interface, small computer system interface), SAS (Serial Attached SCSI), IDE (Integrated Drive Electronics), USB (Universal Serial Bus, Universal Serial Bus), PCIE (Peripheral Component Interconnect Express, PCIe, high-speed peripheral component interconnection), NVMe (NVM Express, high-speed non-volatile storage), Ethernet, fiber channel, wireless communication network, etc. connect the host and the storage device 100.
  • SATA Serial Advanced Technology Attachment
  • SCSI Serial Attached SCSI
  • IDE Integrated Drive Electronics
  • USB Universal Serial Bus
  • PCIE Peripheral Component Interconnect Express
  • PCIe Peripheral Component Interconnect Express
  • NVMe
  • the host may be an information processing device capable of communicating with the storage device in the above-mentioned manner, for example, a personal computer, a tablet computer, a server, a portable computer, a network switch, a router, a cellular phone, a personal digital assistant, etc.
  • the storage device 100 includes an interface 110, a control component 120, one or more NVM chips 130, and a DRAM (Dynamic Random Access Memory) 140.
  • DRAM Dynamic Random Access Memory
  • NAND flash memory phase change memory
  • FeRAM Feroelectric RAM, ferroelectric memory
  • MRAM Magnetic Random Access Memory, magnetoresistive memory
  • RRAM Resistive Random Access Memory, resistive random access memory
  • the interface 110 may be adapted to exchange data with the host through methods such as SATA, IDE, USB, PCIE, NVMe, SAS, Ethernet, and Fibre Channel.
  • the control component 120 is used to control data transmission between the interface 110, the NVM chip 130 and the DRAM 140, and is also used for storage management, physical address mapping from the host logical address to the NVM chip, erasure equalization, bad block management, and the like.
  • the control component 120 can be implemented in multiple ways of software, hardware, firmware, or a combination thereof.
  • the control component 120 can be FPGA (Field-programmable gate array), ASIC (Application Specific Integrated Circuit), and application specific Integrated circuit) or a combination thereof.
  • the control component 120 may also include a processor or a controller, in which software is executed to manipulate the hardware of the control component 120 to process IO (Input/Output) commands.
  • the control component 120 can also be coupled to the DRAM 140 and can access data of the DRAM 140. Store FTL table and/or cached IO command data in DRAM.
  • the control component 120 includes a flash memory interface controller (or referred to as a media interface, a media interface controller, or a flash channel controller).
  • the flash memory interface controller is coupled to the NVM chip 130, and transmits to the NVM chip 130 in a manner that follows the interface protocol of the NVM chip 130. 130 issues commands to operate the NVM chip 130 and receives command execution results output from the NVM chip 130.
  • Known NVM chip interface protocols include "Toggle", "ONFI" and so on.
  • a memory target is one or more logic units (LUN, Logic UNit) sharing a chip enable (CE, Chip Enable) signal in the NAND flash memory package.
  • the NAND flash memory package includes one or more dies (Die).
  • the logic unit corresponds to a single die.
  • the logic unit may include multiple planes. Multiple planes in the logic unit can be accessed in parallel, and multiple logic units in the NAND flash memory chip can execute commands and report status independently of each other.
  • NVM storage media usually stores and reads data in pages. Instead, erase data in blocks.
  • a block (also called a physical block) on the NVM storage medium contains multiple pages.
  • a page (referred to as a physical page) on the storage medium has a fixed size, for example, 17664 bytes. The physical page can also have other sizes.
  • FTL Flash Translation Layer, Flash Translation Layer
  • the logical address constitutes the storage space of the storage device as perceived by upper-layer software such as the operating system.
  • the physical address is the address used to access the physical storage unit of the solid-state storage device.
  • an intermediate address form can also be used to implement address mapping. For example, the logical address is mapped to an intermediate address, and the intermediate address is further mapped to a physical address.
  • the host that accesses the storage device provides FTL.
  • the table structure that stores the mapping information from the logical address to the physical address is called the FTL table.
  • the data items of the FTL table record the address mapping relationship in the storage device in units of data pages.
  • FIG. 2 shows a block diagram of the control part of the storage device in the prior art.
  • the control component 104 of the storage device includes a host interface 210, a front-end processing module 220, a flash management module 230, and one or more media interface controllers 240.
  • the host interface 210 is used to exchange commands and data with the host.
  • the flash memory management module 230 provides logical address to physical address mapping, wear leveling, garbage collection and other functions, and generates IO commands and sends them to the media interface controller 240.
  • the media interface controller 240 is coupled to the NVM chip 105.
  • the media interface controller 240 receives the IO command, and sends a command (read, program, erase, etc.) to the NVM chip to operate the NVM chip according to the IO command.
  • the media interface controller 240 includes an inbound queue 242 and an outbound queue 244.
  • the inbound queue 242 and the outbound queue 244 are used to couple the flash management module 230 and the media interface controller 240.
  • the media interface controller 240 receives the IO command through the inbound queue 242, and also outputs the IO command processing result through the outbound queue 244.
  • the flash memory management module 230 submits an IO command to the media interface controller 240 through the inbound queue 242, and obtains the processing result of the IO command from the outbound queue 244.
  • NAND flash memory has a fast read and write speed, and data must be erased before writing data, and the erasure is performed in blocks.
  • life span of NAND flash memory is limited. Generally speaking, the life span of NAND flash memory is defined by the number of erase and write cycles (Program and Erase cycle, PE cycle).
  • PE cycle Program and Erase cycle
  • the lifespan of common 3D TLC NAND flash memory is generally about 3000 times, which means that after about 3000 erasing and writing of a block of NAND flash memory, its life span will be exhausted and the block will no longer be used. As the lifespan approaches, the reliability of NAND flash memory blocks for storing data gradually decreases.
  • the control unit of the storage device including the NAND flash memory records whether each block of the NAND flash memory is available.
  • the identification of bad blocks in the prior art is mainly based on an afterthought strategy-based on the failure of the NAND flash memory to perform the operation, and the operated block is marked as a bad block, which leads to reading, programming and/ Or erase the command.
  • NAND flash memory needs to be erased before data can be written to it. Therefore, if a failure occurs when erasing a NAND flash memory block, the control component of the storage device marks the block where the erasing failure has occurred as a bad block, and the impact on the storage device is small. If a failure occurs during the programming operation to the NAND flash memory block, the data to be written in the programming operation may be lost, and the control unit of the storage device needs to perform complex data recovery operations (for example, using RAID technology to reconstruct the lost data from redundant data) , Both time-consuming and increased complexity. Similarly, if a failure occurs during a read operation from a NAND flash memory block, a complex data recovery operation also needs to be performed to reconstruct the data to be read, and the user will experience a longer delay, which is disadvantageous.
  • the first method for identifying unreliable blocks which includes the following steps: query the lifetime according to the time of processing the programming command and the number of erasing and writing of the block operated by the programming command
  • the prediction table obtains the life prediction value; if the life prediction value reaches or exceeds the life threshold, the block operated by the programming command is identified as a bad block, and the identification of the bad block is recorded in the bad block table.
  • the second method for identifying unreliable blocks according to the first aspect of the present application, wherein the time for processing a programming command is the amount of time each programming command is processed Time, or the time when one or more selected programming commands were processed.
  • the third method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the row header of the life prediction table records erasure Write cycle times interval, the list header of the life prediction table records the interval for processing the programming command time, and the data area of the life prediction table records the life of the block under the condition that the peer header corresponds to the content indicated by the list header.
  • the fourth method for identifying unreliable blocks according to the first aspect of the present application wherein the lifetime recorded in the data area of the lifetime prediction table is non-volatile storage The predicted value of the consumed life of the piece of media.
  • the fifth method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the time and/or programming time for processing a programming command is The number of erasing and writing of the block operated by the command is quantified as the value corresponding to the row header/list header item of the life prediction table, so as to facilitate the query of the life prediction table.
  • the sixth method for identifying unreliable blocks according to the first aspect of the present application, wherein only the block operated by the programming command If the number of erasing and writing is greater than the erasing threshold, the life prediction table is queried to obtain the life prediction value.
  • the seventh method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein, in response to identifying a bad block, generating Filling data and one or more programming commands, and using the generated one or more programming commands to write the generated filling data into the identified bad block.
  • an eighth method for identifying unreliable blocks according to the first aspect of the present application wherein, in response to identifying a bad block, Move the data that has been written on the identified bad block to other blocks.
  • a ninth method for identifying unreliable blocks according to the first aspect of the present application wherein, in response to obtaining the bearer to be written For data blocks, query the bad block table to obtain available blocks; issue programming commands to the obtained available blocks to write data, and record the time for processing the programming commands and the number of erasures and writes of the blocks operated by the programming commands.
  • a tenth method for identifying unreliable blocks according to the first aspect of the present application, wherein each of all blocks of the storage device is recorded The number of erase and write cycles experienced is used to query the life prediction table for each block to obtain the life prediction value.
  • the eleventh method for identifying unreliable blocks according to the first aspect of the present application. It is the number of erasing cycles experienced by each block group in the unit to query the life prediction table for each block group to obtain the life prediction value, wherein each block in the block group has experienced the same number of erasing cycles.
  • the twelfth method for identifying unreliable blocks according to the first aspect of this application is provided, wherein, in a laboratory or a storage device The life prediction table is generated during the use process.
  • the thirteenth method for identifying unreliable blocks according to the first aspect of the present application wherein the reference block of the non-volatile storage medium is repeatedly implemented Erase and program operations, and record the interval of the reference block processing the program command time interval with the designated erasing and writing cycle times to generate a life prediction table.
  • the fourteenth method for identifying unreliable blocks according to the first aspect of the present application wherein, for reference blocks having a designated erasing cycle number interval Draw a curve with the programming time as the horizontal axis and the number of occurrences of the actual programming time of the reference block as the vertical axis. The area enclosed by the curve and the horizontal axis is taken as 1, and the curve position represented by the specified point on the curve The area enclosed by the same horizontal axis is used as the life prediction value to generate a life prediction table.
  • the fifteenth method for identifying unreliable blocks according to the first aspect of the present application wherein the reference block is a non-volatile storage One or more blocks selected in the medium.
  • a sixteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the execution failure in response to the programming command According to the value of the data area of the bad block programming schedule, the value of the corresponding position in the data area of the life prediction table is increased accordingly to update the life prediction table, where the bad block programming schedule has the same value as the life prediction table Table Structure.
  • the sixteenth method for identifying unreliable blocks according to the first aspect of the present application wherein the row header of the bad block programming schedule records In the interval of erasing and writing cycles, the list header of the bad block programming schedule records the interval of processing the programming command time; or the bad block programming schedule corresponds to the data area of the life prediction table one-to-one.
  • the eighteenth method for identifying unreliable blocks according to the first aspect of the present application wherein, according to the failed programming command The number of erasing and writing times of the accessed block determines the corresponding row/column in the header of the bad block programming schedule; according to the block accessed by the failed programming command, query the programming schedule that records the execution time of the most recent programming command.
  • the nineteenth method for identifying unreliable blocks according to the first aspect of the present application wherein, in response to the bad block programming schedule being updated, the cycle Or under specified conditions, use the bad block programming schedule to update the life prediction table.
  • the twentieth method for identifying unreliable blocks according to the first aspect of the present application there is provided the twenty-first method for identifying unreliable blocks according to the first aspect of the present application, wherein the position of the corresponding A value of the life prediction table is reduced Other values in the column above the position of the corresponding A value, and/or add other values below the position of the corresponding A value in the column of the life prediction table.
  • the twentieth method for identifying unreliable blocks according to the first aspect of the present application there is provided the twenty-second method for identifying unreliable blocks according to the first aspect of the present application, wherein the position of the corresponding A value of the life prediction table is decreased Other values in the column.
  • the twenty-third method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the lifetime is predicted
  • Ai is the ith value in column A of the data area of the bad block programming schedule
  • i is a positive integer
  • n is the number of data in column A of the data area of the bad block programming schedule
  • LAN is the number of data in the data area of the bad block programming schedule
  • the LA column of the life prediction table corresponds to the A column of the bad block programming schedule.
  • a twenty-fourth method for identifying unreliable blocks according to the first aspect of the present application, wherein, in response to programming The command is successfully executed, and the programming timetable is updated according to the block operated by the programming command and the execution time of the programming command, so as to record the execution time of the most recent programming command of the block in the programming timetable.
  • a method for identifying unreliable blocks according to the twenty-fifth aspect of the first aspect of the present application is provided, wherein the programming schedule Including multiple lines, each line records the execution time of the block and its most recent programming command.
  • the eighteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the block most recently programmed command
  • the execution time of is the execution time of the last programming command of the block, or the statistical value of the execution time of the most recent programming commands.
  • a twenty-seventh method for identifying unreliable blocks according to the first aspect of the present application, wherein the block is After erasing, until all physical pages of the block are filled with data, the execution time of its programming command is recorded only once in the programming schedule.
  • a method for identifying unreliable blocks according to the twenty-eighth aspect of the first aspect of the present application is provided, wherein the programming schedule Record the execution time range of multiple programming commands for the same block.
  • the twenty-eighth method for identifying unreliable blocks according to the first aspect of the present application provides a twenty-ninth method for identifying unreliable blocks according to the first aspect of the present application, wherein the maximum value and the minimum value represent multiple The execution time range of the programming command.
  • a method for identifying unreliable blocks according to the thirtieth aspect of the first aspect of the present application, wherein when the block is erased Divide, or the interval in which the number of times the block is erased changes relative to the interval indicated by the life prediction table, clear the record corresponding to the block in the programming schedule, and re-record the execution of the programming command for the block in the programming schedule Time or time range.
  • a first storage device including: a control component, a DRAM, and an NVM chip; the time for the control component to process a programming command according to the NVM chip and the size of the block operated by the programming command For the number of erasing and writing, query the life prediction table stored in the DRAM or the internal memory of the control component to obtain the life prediction value; if the life prediction value reaches or exceeds the life threshold, the control component recognizes the block operated by the programming command as a bad block , And record the bad block identification in the bad block table stored in DRAM.
  • the control component in response to obtaining a block carrying data to be written, queries the bad block table to obtain available The control component issues programming commands to the available blocks in the obtained NVM chip to write data, and records the time for processing the programming command and the number of erasing and writing of the block operated by the programming command.
  • the third storage device According to the first or second storage device of the second aspect of the present application, there is provided the third storage device according to the second aspect of the present application, wherein the row header of the life prediction table records the interval of erasing cycles, and the life prediction table The header of the list records the interval for processing the programming command time, and the data area of the life prediction table records the life of the block under the condition that the peer header corresponds to the content indicated by the list header.
  • the fourth storage device according to the second aspect of the present application, wherein, in response to identifying a bad block, the control component generates padding data and one or more programming Command, using the generated one or more programming commands to write padding data into the identified bad block that has not been filled with data.
  • the fifth storage device In response to identifying a bad block, the control component will The written data is moved to other blocks of the NVM chip.
  • the sixth storage device includes: a processor, a memory, and a media interface controller; a processor; It is coupled to the media interface controller to obtain the time for the NVM chip to process the programming command and the number of erasing and writing of the block operated by the programming command, and obtain the life prediction value by querying the life prediction table stored in the memory; the processor is based on the life prediction value And the lifetime threshold to identify bad blocks, and record the identification of the bad blocks in the bad block table stored in the DRAM.
  • the seventh storage device according to the second aspect of the present application, wherein, in response to an interrupt generated by the media interface controller, the processor acquires the time for processing the programming command and the location of the programming command The number of erases and writes of the operated block.
  • the media interface controller includes: an inbound queue for receiving IO commands and an outbound queue for outputting IO command processing results ;
  • the processor obtains the processed programming command from the outbound queue to obtain the time for processing the programming command and the number of erasing and writing of the block operated by the programming command.
  • the ninth storage device according to the second aspect of the present application, wherein the control component further includes a flash memory management module that generates IO commands, and the flash memory management module identifies Bad blocks, and fill the identified bad blocks into the bad block table.
  • the flash memory management module is based on the execution result of the erase command, the number of erasing of the block and/or the slave block Bad blocks are identified in the error rate of the read data.
  • the eleventh storage device according to the second aspect of the present application, wherein the flash memory management module provides the processor with a record of suspected damage identified by the flash memory management module.
  • the monitoring block table of the block in response to the accessed block being located in the monitoring block table, the processor accesses the life prediction table to obtain the life prediction value of the block.
  • the flash memory management module sets the number of erasing times higher than the threshold, and/or read data errors Blocks with a rate higher than the threshold are regarded as suspected bad blocks and filled in the monitoring block table.
  • the flash memory management module accesses the bad block table in the DRAM to obtain available The block writes data.
  • the fourteenth storage device according to the second aspect of the present application, wherein the processor has a dedicated instruction memory to be independent of the controller Front-end processing module and/or flash management module.
  • the fifteenth storage device according to the second aspect of the present application, wherein the processor and/or the memory for recording the life prediction table is set in Inside the media interface controller.
  • the sixteenth storage device wherein the control component further includes a first data moving module and a second data moving module.
  • the first data movement module moves the data to be written in the programming command in the DRAM to the media interface controller to process the programming command
  • the second data movement module moves the data read by the media interface controller from the NVM chip to the DRAM To process the read command.
  • the seventeenth storage device according to the second aspect of the present application, wherein the error correction encoder of the first data moving module performs error correction encoding on the moved data, And provide the encoded data to the media interface controller.
  • the sixteenth storage device of the second aspect of the present application there is provided the eighteenth storage device according to the second aspect of the present application, wherein the error correction decoder of the second data movement module performs processing on the data read from the NVM chip Error correction decoding, and move the decoded data to DRAM.
  • Figure 1 shows a block diagram of a storage device in the prior art
  • Figure 2 shows a block diagram of a control component of a storage device in the prior art
  • Figure 3 shows a life prediction table according to an embodiment of the present application
  • Figure 4A shows a block diagram of a storage device according to an embodiment of the present application
  • FIG. 4B shows a flowchart of bad block identification according to an embodiment of the present application
  • Fig. 5 shows a block diagram of a storage device according to another embodiment of the present application.
  • Fig. 6 shows a block diagram of a storage device according to another embodiment of the present application.
  • Fig. 7A shows a programming schedule according to another embodiment of the present application.
  • FIG. 7B shows a bad block programming schedule according to another embodiment of the present application.
  • Fig. 7C shows a flowchart of updating the life prediction table according to an embodiment of the present application.
  • the programming operation of the NAND flash memory is usually implemented through an ISPP (Incremental-step-pulse programming) algorithm.
  • ISPP Intelligent-step-pulse programming
  • multiple programming pulses are applied to the programmed page, and it is verified whether the data is successfully written after each programming pulse. If it is found after a certain programming pulse that the data has been successfully written into the NAND flash memory, the programming process is completed.
  • the speed of NAND flash memory processing programming commands is related to the number of programming pulses/verification.
  • the speed of processing programming commands In the early stage of the block life of NAND flash memory, the speed of processing programming commands is usually relatively close. However, for the end of the life of the block, the performance of some or all of the pages deteriorates, and more programming pulses and more verification processes are required. Therefore, the time to process the programming command is larger (the speed becomes slower). Therefore, the time for the NAND flash memory to process the programming command can be used as a basis for measuring the life of the NAND flash memory block.
  • it is intended to use the time for the NAND flash memory to process the programming command to estimate whether the life of the NAND flash memory block is about to end, and to reduce the impact of the end of life block on the data reading and writing of the storage device.
  • Fig. 3 shows a life prediction table according to an embodiment of the present application.
  • each row in the first column of the life prediction table (called the header) records the time interval for processing programming commands, for example, a time interval of less than 1ms (milliseconds), a time interval of 1 ⁇ 1.5ms, 1.5 ⁇ 2ms
  • the time interval of —The first row of the life prediction table (called the row header) records the interval of the erasing cycle times, for example, 0-499 times, 500-999 times, 1000-1499 times...
  • the data area of the life prediction table in FIG. 3 records the lifespan corresponding to the interval of erasing and writing cycles indicated by the header of the same line and the programming time interval indicated by the header of the list.
  • the lifetime recorded in the data area of the lifetime prediction table is the predicted value of the consumed lifetime of the NAND flash memory block, expressed as a percentage.
  • 1% represents the lifetime of the flash memory block has been consumed 1% (99% of the lifespan has not yet been consumed)
  • 21% represents that the lifespan of the flash memory block has been consumed 21% (there are 79% of the lifespan has not been consumed)
  • 100% represents that the life of the flash memory block has been exhausted (can no longer be used).
  • the "1%" indicated by the reference numeral 310 indicates that the erasing cycle times range from 0 to 499 times at the corresponding position of the row header, and the time interval for processing the programming command at the corresponding position of the list header is less than 1ms. It represents a block whose number of erase and write cycles of NAND flash memory is 0-499 times.
  • the predicted lifetime of the block is 1%; "21%” indicated by reference numeral 320 "In the corresponding position of the row header, the range of the number of erasing and writing cycles is 0-499, and the time period of processing the programming command in the corresponding position of the list header is 3 ⁇ 4ms, which represents the number of erasing and writing cycles of the NAND flash memory is 0-499.
  • the predicted lifetime of the block is 21%; the “100%” indicated by the reference numeral 340 indicates the number of erasing cycles at the corresponding position of the row header
  • the interval is 1500-1999 times, and the time interval for processing programming commands is indicated at the corresponding position of the list head is 4 ⁇ 5ms, which represents the block with 1500-1999 times of erasing and writing cycles of NAND flash memory. If it is the time interval for processing programming commands If it is 4 to 5 ms, the predicted lifetime of the block is 100% (it is predicted that its lifetime is exhausted).
  • the life prediction table shown in FIG. 3 can be consulted to know the life prediction of the block. Further, a life threshold (for example, 95%) is set, and if the life prediction value of the block obtained by the query reaches or exceeds the life threshold, the block is marked as a bad block and no more data is written to the block (no more Perform programming operations on this block). This reduces the probability of programming failure or reading failure during the use of unreliable blocks, thereby reducing the number of times that data recovery needs to be performed.
  • interval of the number of erasing cycles represented by each column of the row header of the life prediction table and/or the interval of processing the programming operation time represented by each row of the list header may take other values.
  • a smaller interval granularity helps to improve the prediction accuracy, but increases the size of the life prediction table and table lookup overhead.
  • a larger interval granularity helps to reduce the size of the life prediction table and reduce the table lookup overhead, but the prediction accuracy is correspondingly May be reduced.
  • the control unit of the storage device also records the number of erase and write cycles that each block of its NAND flash memory has gone through. For example, the control unit records the number of erasing cycles experienced by each of all blocks of the storage device. As another example, the control component implements the erasing operation in units of block groups (including multiple blocks). Each block in the block group has experienced the same number of erasing and writing cycles, so that the control component only records its experience for each block group. The number of erase and write cycles. The number of erasing cycles experienced by a block or block group is simply referred to as the number of erasing and writing cycles of the block or block group.
  • a life prediction table during the use of the laboratory or storage equipment. For example, one or more blocks of the NAND flash memory are selected as the reference block, the erasing and programming operations are repeated on the reference block, and the programming time distribution of the reference block with the specified erasing and writing times (interval) is recorded, which is used to predict the specified erasing The predicted life of the block with the number of write times (interval) when its programming time falls within the specified time interval.
  • a curve is drawn with the programming time as the horizontal axis, and the number of times the actual programming time of the reference block appears as the vertical axis, and the area enclosed by the curve and the horizontal axis is regarded as 1.
  • the area of the area enclosed by the curve position represented by the specified point on the curve and the horizontal axis is used as the life prediction value.
  • NAND flash memory is taken as an example to describe the bad block prediction method according to the embodiment of the present application, it is understandable that the bad block prediction method according to the embodiment of the present application is also applicable to other non-volatile storage media.
  • Fig. 4A shows a block diagram of a storage device according to an embodiment of the present application.
  • the storage device 400 includes an interface 430, a control unit 450, one or more NVM chips 420, and a DRAM 410.
  • the DRAM 410 stores a bad block table 412 and a life prediction table 414.
  • the bad block table 412 records the identifiers (for example, addresses) of all bad blocks in the NVM chip 420.
  • the control component queries the bad block table 412 to ensure that no data is written to the bad block.
  • the control unit 450 issues a programming command to the NVM chip to write data to the NVM chip, and records the time when the NVM chip 420 processes the programming command. According to the number of erasing and writing of the block operated by the programming command and the time for processing the programming command, the control component 450 also queries the life prediction table 414 to obtain the life prediction value of the block. If the acquired lifetime prediction value is greater than the specified threshold value (for example, 95%), the control component 450 also records the identifier of the block in the bad block table 412.
  • the specified threshold value for example, 97%
  • the control unit 450 also generates padding data (for example, using random numbers as padding data), and The padding data is written into the block to fill all its blank pages to improve the reliability of valid data on the block. Still optionally, in response to identifying the end of the life of the block according to the life prediction table 414, the control component 450 moves the valid data stored on the block to another block as soon as possible.
  • Fig. 4B shows a flowchart of bad block identification according to an embodiment of the present application.
  • the control component of the storage device obtains the time when the NVM chip of the storage device processes the programming command (460).
  • the control component obtains the processing time of each programming command, or selects the processing time of one or more programming commands.
  • the time for processing the program command is acquired once.
  • the average time for processing multiple programming commands in a certain block after being erased represents the time for processing the programming commands in the block.
  • the control unit also obtains the number of erasing and writing of the block accessed by the programming command.
  • the life prediction table 414 (see also FIG. 4A) (470) is used to query the life prediction table 414 (see also FIG. 4A) (470) with the number of erasing and writing of the block and the time for processing the programming command to obtain the life prediction of the block.
  • the number of times of erasing and writing of the block and/or the time for processing the programming command are quantified as values corresponding to the items of the row header/list header of the life prediction table as shown in FIG. 3, so as to query the life prediction table.
  • the control component does not predict the life of all blocks. For example, referring back to the life prediction table in Fig. 3, a block whose number of erasing and writing is 0-499 times, even if it takes a long time to process the programming command (for example, greater than 10ms), the predicted life will not exceed the specified threshold. Therefore, the control unit does not query the life prediction table for blocks whose number of erasing and writing times are less than the threshold value (for example, 500 times), nor does it try to predict the life of the blocks.
  • the threshold value for example, 500 times
  • the control component compares whether the predicted life queried from the life prediction table exceeds a specified threshold (for example, 95%) (480). If the predicted life does not exceed the specified threshold, the control component does not require further processing. If the predicted life span exceeds the specified threshold, the control component recognizes the block as a bad block with an end of life, and records the block identification (490) in the bad block table 412 (see also FIG. 4A). Optionally, for the identified bad block, one or more programming commands and padding data are also generated, and the generated padding data is written into the identified bad block with the programming command (495). Still alternatively or further, for the identified bad block, the control component moves the data written on it to other blocks as soon as possible.
  • a specified threshold for example, 95%) (480). If the predicted life does not exceed the specified threshold, the control component does not require further processing. If the predicted life span exceeds the specified threshold, the control component recognizes the block as a bad block with an end of life, and records the block identification (490) in the bad block table 412 (see also FIG
  • Fig. 5 shows a block diagram of a storage device according to another embodiment of the present application.
  • the control component 500 of the storage device includes a host interface 510, a front-end processing module 520, a flash management module 530, and one or more media interface controllers 540.
  • the media interface controller 540 is coupled to the NVM chip 105.
  • the media interface controller 540 includes an inbound queue 542 and an outbound queue 544.
  • the media interface controller 540 receives the IO command through the inbound queue 542, and also outputs the IO command processing result through the outbound queue 544.
  • the control part 500 also includes a processor 550.
  • the processor 550 is coupled to the media interface controller 540.
  • the control part 500 also includes a memory storing the life prediction table 514.
  • the processor 550 has a dedicated instruction memory (not shown), and the processor 550 is independent of the front-end processing module 520 and/or the flash management module 530, so as to reduce the influence on the existing part of the control component 500.
  • the life prediction table 514 has a small size, for example, several KB or less, and is thus stored in the memory inside the control section 500.
  • the control unit 500 is also coupled to an external memory (DRAM), and the bad block table 512 is stored in the external memory.
  • the flash memory management module 530 can access the bad block table 512 in the external memory to avoid allocating bad blocks to carry the data to be written.
  • the processor 550 monitors one, multiple, or all processed programming commands on the NVM 105 to obtain the time for the NVM 105 to process the programming commands, and further obtains the life prediction of the block of the NVM 105 by querying the life prediction table 514.
  • the processor 550 is in a standby state. If a programming command is processed, the media interface controller 540 generates an interrupt, and the processor 550 responds to the interrupt and obtains the execution time of the programming command, as well as the number of erasing and writing of the block operated by the programming command. The processor 550 queries the life prediction table 514 to obtain the life prediction of the block operated by the programming command, and in response to the life prediction exceeding the specified threshold, records the block in the bad block table 512, so that the flash management module 530 The block will no longer be used.
  • the processor 550 obtains the processed programming command from the outbound queue 544, and then obtains the execution time of the programming command and the number of erasing and writing of the block operated by the programming command.
  • the processor 550 identifies bad blocks according to the execution time of the programming command, and fills the identified bad blocks into the bad block table 512, and the flash memory management module 530 also identifies the bad blocks and fills the identified bad blocks into Bad block table 512.
  • the flash memory management module 530 identifies bad blocks according to the execution result of the erase command, the number of erasing and writing of the block, and/or the error rate of data read from the block, and fills the identified bad blocks into the bad block table. 512.
  • the flash memory management module 530 also provides a monitoring block table to the processor 550.
  • the "suspected" bad blocks identified by the flash memory management module 530 are recorded in the monitoring block table.
  • the flash memory management module 330 regards the blocks with the number of erasing and writing times higher than the threshold and/or the data error rate higher than the threshold as "suspected" bad blocks, and fills them in the monitoring block table.
  • the processor 550 obtains the life prediction of the "suspected" bad block according to the monitoring block table. Therefore, the processor 550 does not need to obtain life predictions for all blocks, which reduces the workload of the processor 550.
  • Fig. 6 shows a block diagram of a storage device according to another embodiment of the present application.
  • the control component 600 of the storage device includes a host interface 610, a front-end processing module 620, a flash memory management module 330, and one or more media interface controllers 640.
  • the media interface controller 640 is coupled to the NVM chip 105.
  • the media interface controller 640 includes an inbound queue 642 and an outbound queue 644.
  • the flash memory management module 630 submits an IO command to the media interface controller 640 through the inbound queue 642, and obtains the processing result of the IO command provided by the media interface controller 640 from the outbound queue 644.
  • the control part 600 also includes a processor 650 coupled to the media interface controller 640.
  • the control unit 600 also includes a memory in which the life prediction table 614 is stored.
  • the control unit 600 is also coupled to an external memory (DRAM), and the bad block table 612 is stored in the external memory.
  • DRAM external memory
  • the control component 600 further includes a data moving module 660 and a data moving module 662.
  • the data transfer module 660 transfers the data to be written in the programming command in the DRAM to the media interface controller.
  • the data transfer module 662 transfers the data read by the media interface controller 640 from the NVM 105 to the DRAM.
  • the data movement module 660 further includes an error correction encoder, which performs error correction encoding on the moved data, and provides the encoded data to the media interface controller 640.
  • the data movement module 662 also includes an error correction decoder, which performs error correction decoding on the data read from the NVM 105, and moves the decoded data to the DRAM.
  • the processor 650 monitors one, more or all of the programmed commands processed on the NVM 105 to obtain the time for processing the programmed commands, and further obtains the life prediction of the block of the NVM 105 by querying the life prediction table 614.
  • the processor 650 obtains the life prediction of the block operated by the programming command by querying the life prediction table 614, and in response to the life prediction exceeding the specified threshold, records the block in the bad block table 612, so that the flash management module 630 The block will no longer be used.
  • the processor 650 and/or the memory of the recording lifetime prediction table 614 are provided inside the media interface controller 640.
  • Fig. 7A shows a programming schedule according to another embodiment of the present application.
  • the life prediction table is updated to make the life of the block represented by the life prediction table more accurate.
  • the programming schedule of FIG. 7A includes multiple rows, and each row records the execution time of the block and its most recent programming command.
  • a block is represented by a block number or block address.
  • the programming schedule is updated according to the block operated by the programming command and the execution time of the programming command to record the execution time of the most recent programming command of the block in the programming schedule.
  • the execution time of the most recent programming command of the block is the execution time of the most recent programming command of the block, or a statistical value of the execution time of the most recent programming commands.
  • the execution time of its programming command is recorded only once in the programming schedule to reduce the task of updating the programming schedule load.
  • the range of execution time of multiple programming commands for the same block is recorded in the programming time table, for example, the maximum value and the minimum value represent the range of execution time of multiple programming commands.
  • the programming schedule is cleared Record the corresponding record of the block, and re-record the execution time or time range of the programming command for this block in the programming schedule.
  • Fig. 7B shows a bad block programming schedule according to another embodiment of the present application.
  • the bad block programming schedule has the same or similar table structure as the life prediction table.
  • the columns of the row table header indicate multiple ranges of erasing and writing times, and the column header indicates multiple ranges of program command execution time.
  • the bad block programming schedule is updated. Determine the corresponding column in the row header of the bad block programming schedule according to the number of erasing and writing of the block accessed by the failed programming command. According to the block accessed by the failed programming command, query the programming schedule shown in FIG. 7A to obtain the execution time of the most recently successfully executed programming command of the block, and use the execution time in the bad block programming schedule of FIG. 7B The header of the list determines the corresponding row. And according to the rows and columns of the determined bad block programming schedule, the number of times is recorded in the corresponding position of the determined bad block programming schedule (for example, the value of the position of the bad block programming schedule is incremented).
  • the number of erasing and writing of the programming command is 1200, and when the block has been successfully programmed recently, the execution time of the programming command is 12ms.
  • the column indicating the number of erasing and writing in the row table header of the bad block programming schedule is 1000-1499.
  • the row indicating ">10ms" in the header of the bad block programming schedule is obtained, and the corresponding position of the bad block programming schedule (indicated by reference numeral 710) The value is incremented.
  • the life prediction table is updated with the bad block programming schedule.
  • the bad block programming schedule corresponds to the data area of the life prediction table one-to-one.
  • the value of the data area of the bad block programming schedule is increased accordingly.
  • a certain value in the data area of the bad block programming schedule is A
  • the number of programming used for each column of data used to construct the life prediction table is LN
  • the values of column A in the data area of the bad block programming schedule are A1, A2...Ai,...An in order, where i is a positive integer, and column LA corresponding to column A of the life prediction table is updated accordingly .
  • the number of programming used to obtain the LA column of the life prediction table is LAN
  • the value of the position corresponding to the Ai value of the life prediction table is incremented And update the LAN to
  • the bad block programming schedule is not used, and in response to the execution failure of the programming command, the number of erasing and writing accessed by the programming command is obtained, and the block's recent successful execution is obtained through the programming schedule of FIG. 7A Program the execution time of the command, and increase the value corresponding to the number of erasing and writing and the position of the execution time in the life prediction table.
  • other values below (after) the column corresponding to the number of erasing and writing and the position of the execution time in the life prediction table are also added.
  • Fig. 7C shows a flowchart of updating the life prediction table according to an embodiment of the present application.
  • the control unit of the storage device issues a programming command (710) to write data to the NVM chip or read data from the NVM chip.
  • the programming schedule is updated (730).
  • the control component obtains the time for the NVM chip of the storage device to process the programming command, and updates the programming schedule according to the block operated by the programming command and the execution time of the programming command to record the execution time of the most recent programming command of the block in the programming schedule.
  • the bad block programming schedule is updated (740). Determine the corresponding column in the row header of the bad block programming schedule according to the number of erasing and writing of the block accessed by the failed programming command. According to the execution time of the most recently successfully executed programming command of the block accessed by the failed programming command, the corresponding row is determined at the head of the bad block programming schedule. And according to the rows and columns of the determined bad block programming schedule, the number of times is recorded in the corresponding position of the determined bad block programming schedule (for example, the value of the position of the bad block programming schedule is incremented).
  • the life prediction table is updated with the bad block programming schedule (750).
  • the method and device of the present application can be implemented by hardware, software, firmware, and any combination of the foregoing.
  • the hardware may include digital circuits, analog circuits, digital signal processors (DSP), dedicated inheritance circuits (ASIC), and so on.
  • the software may include computer-readable programs, which, when executed by a computer, implement the methods described in this application.
  • the software of this application can also be stored in a computer-readable storage medium, such as a hard disk, an optical disc, etc., which stores a program.
  • a computer-readable storage medium such as a hard disk, an optical disc, etc.
  • the program When the program is executed by a device, the device can perform the above Methods.

Abstract

A method for intelligently identifying an unreliable block comprises: searching a service life prediction table to obtain a predicted service life value according to an amount of time required to process a programming command and the number of erase/write operations which have been performed on a block to which the programming command is directed; if the predicted service life value reaches or exceeds a service life threshold, identifying the block to which the programming command is directed as a damaged block, and recording an identifier of the damaged block in a damaged block table. The invention can effectively identify or predict that a block of a storage medium is nearing the end of service life so as to avoid writing data to said block, thereby mitigating the impact on a storage apparatus due to failure of an erase operation, a programming operation or a read operation.

Description

智能识别非易失存储介质不可靠块的方法与装置Method and device for intelligently identifying unreliable blocks of non-volatile storage medium
相关申请的交叉引用Cross references to related applications
本申请要求2019年6月14日提交的中国专利申请201910514471.7(发明名称为“智能识别非易失存储介质不可靠块的方法与装置”)的优先权,其全部内容通过引用合并于此。This application claims the priority of Chinese patent application 201910514471.7 (the title of the invention is "Method and Apparatus for Intelligently Identifying Unreliable Blocks of Non-volatile Storage Media") filed on June 14, 2019, the entire contents of which are incorporated herein by reference.
技术领域Technical field
本申请涉及存储技术领域,尤其涉及识别非易失存储介质不可靠块的方法与装置。This application relates to the field of storage technology, and in particular to a method and device for identifying unreliable blocks of a non-volatile storage medium.
背景技术Background technique
图1展示了现有技术中的存储设备的框图。存储设备100同主机相耦合,用于为主机提供存储能力。主机同存储设备100之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(Serial Attached SCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component Interconnect Express,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与存储设备100。主机可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备100包括接口110、控制部件120、一个或多个NVM芯片130以及DRAM(Dynamic Random Access Memory,动态随机访问存储器)140。Figure 1 shows a block diagram of a storage device in the prior art. The storage device 100 is coupled with the host and is used to provide storage capabilities for the host. The host and the storage device 100 can be coupled in a variety of ways, including but not limited to, for example, SATA (Serial Advanced Technology Attachment), SCSI (Small Computer System Interface, small computer system interface), SAS (Serial Attached SCSI), IDE (Integrated Drive Electronics), USB (Universal Serial Bus, Universal Serial Bus), PCIE (Peripheral Component Interconnect Express, PCIe, high-speed peripheral component interconnection), NVMe (NVM Express, high-speed non-volatile storage), Ethernet, fiber channel, wireless communication network, etc. connect the host and the storage device 100. The host may be an information processing device capable of communicating with the storage device in the above-mentioned manner, for example, a personal computer, a tablet computer, a server, a portable computer, a network switch, a router, a cellular phone, a personal digital assistant, etc. The storage device 100 includes an interface 110, a control component 120, one or more NVM chips 130, and a DRAM (Dynamic Random Access Memory) 140.
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(Magnetic Random Access Memory,磁阻存储器)、RRAM(Resistive Random Access Memory,阻变存储器)等是常见的NVM。NAND flash memory, phase change memory, FeRAM (Ferroelectric RAM, ferroelectric memory), MRAM (Magnetic Random Access Memory, magnetoresistive memory), RRAM (Resistive Random Access Memory, resistive random access memory), etc. are common NVMs.
接口110可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。The interface 110 may be adapted to exchange data with the host through methods such as SATA, IDE, USB, PCIE, NVMe, SAS, Ethernet, and Fibre Channel.
控制部件120用于控制在接口110、NVM芯片130以及DRAM 140之间的数据传输,还用于存储管理、主机逻辑地址到NVM芯片的物理地址映射、擦除均衡、坏块管理等。控制部件120可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部 件120可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制部件120也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件120的硬件来处理IO(Input/Output)命令。控制部件120还可以耦合到DRAM 140,并可访问DRAM 140的数据。在DRAM存储FTL表和/或缓存的IO命令的数据。The control component 120 is used to control data transmission between the interface 110, the NVM chip 130 and the DRAM 140, and is also used for storage management, physical address mapping from the host logical address to the NVM chip, erasure equalization, bad block management, and the like. The control component 120 can be implemented in multiple ways of software, hardware, firmware, or a combination thereof. For example, the control component 120 can be FPGA (Field-programmable gate array), ASIC (Application Specific Integrated Circuit), and application specific Integrated circuit) or a combination thereof. The control component 120 may also include a processor or a controller, in which software is executed to manipulate the hardware of the control component 120 to process IO (Input/Output) commands. The control component 120 can also be coupled to the DRAM 140 and can access data of the DRAM 140. Store FTL table and/or cached IO command data in DRAM.
控制部件120包括闪存接口控制器(或称为介质接口、介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片130,并以遵循NVM芯片130的接口协议的方式向NVM芯片130发出命令,以操作NVM芯片130,并接收从NVM芯片130输出的命令执行结果。已知的NVM芯片接口协议包括“Toggle”、“ONFI”等。The control component 120 includes a flash memory interface controller (or referred to as a media interface, a media interface controller, or a flash channel controller). The flash memory interface controller is coupled to the NVM chip 130, and transmits to the NVM chip 130 in a manner that follows the interface protocol of the NVM chip 130. 130 issues commands to operate the NVM chip 130 and receives command execution results output from the NVM chip 130. Known NVM chip interface protocols include "Toggle", "ONFI" and so on.
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(LUN,Logic UNit)。NAND闪存封装内包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元(LUN)、平面(Plane)的含义,其为现有技术的一部分。A memory target (Target) is one or more logic units (LUN, Logic UNit) sharing a chip enable (CE, Chip Enable) signal in the NAND flash memory package. The NAND flash memory package includes one or more dies (Die). Typically, the logic unit corresponds to a single die. The logic unit may include multiple planes. Multiple planes in the logic unit can be accessed in parallel, and multiple logic units in the NAND flash memory chip can execute commands and report status independently of each other. In the "Open NAND Flash Interface Specification (Revision 3.0)" available from http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx, it provides information about the target (target) The meaning of logical unit (LUN) and plane (Plane) is part of the prior art.
NVM存储介质上通常按页来存储和读取数据。而按块来擦除数据。NVM存储介质上的块(也称物理块)包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。NVM storage media usually stores and reads data in pages. Instead, erase data in blocks. A block (also called a physical block) on the NVM storage medium contains multiple pages. A page (referred to as a physical page) on the storage medium has a fixed size, for example, 17664 bytes. The physical page can also have other sizes.
在存储设备中,利用FTL(Flash Translation Layer,闪存转换层)来维护从逻辑地址到物理地址的映射信息。逻辑地址构成了操作系统等上层软件所感知到的存储设备的存储空间。物理地址是用于访问固态存储设备的物理存储单元的地址。在现有技术中还可利用中间地址形态实施地址映射。例如将逻辑地址映射为中间地址,进而将中间地址进一步映射为物理地址。可选地,访问存储设备的主机提供FTL。In the storage device, FTL (Flash Translation Layer, Flash Translation Layer) is used to maintain the mapping information from the logical address to the physical address. The logical address constitutes the storage space of the storage device as perceived by upper-layer software such as the operating system. The physical address is the address used to access the physical storage unit of the solid-state storage device. In the prior art, an intermediate address form can also be used to implement address mapping. For example, the logical address is mapped to an intermediate address, and the intermediate address is further mapped to a physical address. Optionally, the host that accesses the storage device provides FTL.
存储了从逻辑地址到物理地址的映射信息的表结构被称为FTL表。通常FTL表的数据项记录了存储设备中以数据页为单位的地址映射关系。The table structure that stores the mapping information from the logical address to the physical address is called the FTL table. Generally, the data items of the FTL table record the address mapping relationship in the storage device in units of data pages.
图2展示了现有技术中的存储设备的控制部件的框图。存储设备的控制部件104包括主机接口210、前端处理模块220、闪存管理模块230以及一个或多个介质接口控制器240。Figure 2 shows a block diagram of the control part of the storage device in the prior art. The control component 104 of the storage device includes a host interface 210, a front-end processing module 220, a flash management module 230, and one or more media interface controllers 240.
主机接口210用于同主机交换命令与数据。闪存管理模块230提供逻辑地址到物理 地址映射、磨损均衡、垃圾回收等功能,并生成IO命令发送给介质接口控制器240。介质接口控制器240耦合到NVM芯片105。可选地,介质接口控制器有一个或多个,每个接口控制器耦合到各自的NVM芯片105。介质接口控制器240接收IO命令,并根据IO命令向NVM芯片发出操作NVM芯片的命令(读、编程、擦除等命令)。The host interface 210 is used to exchange commands and data with the host. The flash memory management module 230 provides logical address to physical address mapping, wear leveling, garbage collection and other functions, and generates IO commands and sends them to the media interface controller 240. The media interface controller 240 is coupled to the NVM chip 105. Optionally, there are one or more media interface controllers, and each interface controller is coupled to a respective NVM chip 105. The media interface controller 240 receives the IO command, and sends a command (read, program, erase, etc.) to the NVM chip to operate the NVM chip according to the IO command.
介质接口控制器240包括入港队列242与出港队列244。入港队列242与出港队列244用于耦合闪存管理模块230与介质接口控制器240。介质接口控制器240通过入港队列242接收IO命令,还通过出港队列244输出IO命令处理结果。闪存管理模块230通过入港队列242向介质接口控制器240提交IO命令,并从出港队列244获取IO命令的处理结果。The media interface controller 240 includes an inbound queue 242 and an outbound queue 244. The inbound queue 242 and the outbound queue 244 are used to couple the flash management module 230 and the media interface controller 240. The media interface controller 240 receives the IO command through the inbound queue 242, and also outputs the IO command processing result through the outbound queue 244. The flash memory management module 230 submits an IO command to the media interface controller 240 through the inbound queue 242, and obtains the processing result of the IO command from the outbound queue 244.
NAND闪存读写速度快,写入数据前必须先擦除数据,且擦除是以块(Block)为单位进行的。然而NAND闪存的寿命是有限的,一般来说,NAND闪存的寿命以擦写循环次数(Program and Erase cycle,PE cycle)来定义的。常见的3D TLC NAND闪存的寿命一般在3000次左右,这意味着NAND闪存的块在经历了大约3000次擦写后,其寿命将耗尽,该块将不能再被使用。随着寿命将近,NAND闪存块存储数据的可靠性逐渐降低。包括NAND闪存的存储设备的控制部件记录其NAND闪存的各块是否可用。NAND flash memory has a fast read and write speed, and data must be erased before writing data, and the erasure is performed in blocks. However, the life span of NAND flash memory is limited. Generally speaking, the life span of NAND flash memory is defined by the number of erase and write cycles (Program and Erase cycle, PE cycle). The lifespan of common 3D TLC NAND flash memory is generally about 3000 times, which means that after about 3000 erasing and writing of a block of NAND flash memory, its life span will be exhausted and the block will no longer be used. As the lifespan approaches, the reliability of NAND flash memory blocks for storing data gradually decreases. The control unit of the storage device including the NAND flash memory records whether each block of the NAND flash memory is available.
发明内容Summary of the invention
现有技术对坏块的识别主要基于事后的策略——基于NAND闪存执行操作失败,而将被操作的块标记为坏块,这导致对一部分寿命已经耗尽的块依然发出读、编程和/或擦除的命令。The identification of bad blocks in the prior art is mainly based on an afterthought strategy-based on the failure of the NAND flash memory to perform the operation, and the operated block is marked as a bad block, which leads to reading, programming and/ Or erase the command.
NAND闪存需要先被擦除才能向其写入数据。因而,若在擦除NAND闪存块时发生失败,存储设备的控制部件将发生擦除失败的块标记为坏块,而对存储设备的影响较小。若在向NAND闪存块执行编程操作时发生失败,编程操作所要写入的数据可能丢失,存储设备的控制部件需要执行复杂的数据恢复操作(例如,用RAID技术从冗余数据中重建丢失数据),既耗时又增加了复杂度。类似地,若在从NAND闪存块执行读操作时发生失败,也需要执行复杂的数据恢复操作重建要读出的数据,并且使用户体验到更长的延迟,这是不利的。NAND flash memory needs to be erased before data can be written to it. Therefore, if a failure occurs when erasing a NAND flash memory block, the control component of the storage device marks the block where the erasing failure has occurred as a bad block, and the impact on the storage device is small. If a failure occurs during the programming operation to the NAND flash memory block, the data to be written in the programming operation may be lost, and the control unit of the storage device needs to perform complex data recovery operations (for example, using RAID technology to reconstruct the lost data from redundant data) , Both time-consuming and increased complexity. Similarly, if a failure occurs during a read operation from a NAND flash memory block, a complex data recovery operation also needs to be performed to reconstruct the data to be read, and the user will experience a longer delay, which is disadvantageous.
需要更有效的识别或预测存储介质的块的寿命将尽,以避免向寿命将尽的块写入数据。从而减少因擦除操作、编程操作或读操作失败而对存储设备的影响。也希望对寿命将近的块的识别,不会对存储设备的设计与实现带来较大影响。It is necessary to more effectively identify or predict the end of the life of the block of the storage medium to avoid writing data to the end of the life. Therefore, the impact on the storage device due to the failure of the erase operation, the program operation or the read operation is reduced. It is also hoped that the identification of blocks with a near lifetime will not have a major impact on the design and implementation of storage devices.
根据本申请的第一方面,提供了根据本申请第一方面的第一识别不可靠块的方法,包括如下步骤:根据处理编程命令的时间与编程命令所操作的块的擦写次数,查询寿命预测表获得寿命预测值;若寿命预测值达到或超过寿命阈值,则将编程命令所操作的块识别为坏块,并将坏块的标识记录于坏块表中。According to the first aspect of the present application, there is provided the first method for identifying unreliable blocks according to the first aspect of the present application, which includes the following steps: query the lifetime according to the time of processing the programming command and the number of erasing and writing of the block operated by the programming command The prediction table obtains the life prediction value; if the life prediction value reaches or exceeds the life threshold, the block operated by the programming command is identified as a bad block, and the identification of the bad block is recorded in the bad block table.
根据本申请的第一方面的第一识别不可靠块的方法,提供了根据本申请第一方面的第二识别不可靠块的方法,其中,处理编程命令的时间为每个编程命令被处理的时间,或者挑选的一个或多个编程命令被处理的时间。According to the first method for identifying unreliable blocks in the first aspect of the present application, there is provided the second method for identifying unreliable blocks according to the first aspect of the present application, wherein the time for processing a programming command is the amount of time each programming command is processed Time, or the time when one or more selected programming commands were processed.
根据本申请的第一方面的第一或第二识别不可靠块的方法,提供了根据本申请第一方面的第三识别不可靠块的方法,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。According to the first or second method for identifying unreliable blocks according to the first aspect of the present application, the third method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the row header of the life prediction table records erasure Write cycle times interval, the list header of the life prediction table records the interval for processing the programming command time, and the data area of the life prediction table records the life of the block under the condition that the peer header corresponds to the content indicated by the list header.
根据本申请的第一方面的第三识别不可靠块的方法,提供了根据本申请第一方面的第四识别不可靠块的方法,其中,寿命预测表的数据区记录的寿命是非易失存储介质的块的已被消耗的寿命预测值。According to the third method for identifying unreliable blocks according to the first aspect of the present application, there is provided the fourth method for identifying unreliable blocks according to the first aspect of the present application, wherein the lifetime recorded in the data area of the lifetime prediction table is non-volatile storage The predicted value of the consumed life of the piece of media.
根据本申请的第一方面的第三或第四识别不可靠块的方法,提供了根据本申请第一方面的第五识别不可靠块的方法,其中,将处理编程命令的时间和/或编程命令所操作的块的擦写次数量化为同寿命预测表的行表头/列表头的项对应的值,以便于查询寿命预测表。According to the third or fourth method for identifying unreliable blocks according to the first aspect of the present application, the fifth method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the time and/or programming time for processing a programming command is The number of erasing and writing of the block operated by the command is quantified as the value corresponding to the row header/list header item of the life prediction table, so as to facilitate the query of the life prediction table.
根据本申请的第一方面的第一至第五识别不可靠块的方法之一,提供了根据本申请第一方面的第六识别不可靠块的方法,其中,仅当编程命令所操作的块的擦写次数大于擦写阈值,才查询寿命预测表获得寿命预测值。According to one of the first to fifth methods for identifying unreliable blocks in the first aspect of the present application, there is provided the sixth method for identifying unreliable blocks according to the first aspect of the present application, wherein only the block operated by the programming command If the number of erasing and writing is greater than the erasing threshold, the life prediction table is queried to obtain the life prediction value.
根据本申请的第一方面的第一至第六识别不可靠块的方法之一,提供了根据本申请第一方面的第七识别不可靠块的方法,其中,响应于识别出坏块,生成填充数据和一个或多个编程命令,用生成的一个或多个编程命令将生成的填充数据写入识别出的所述坏块。According to one of the first to sixth methods for identifying unreliable blocks in the first aspect of the present application, the seventh method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein, in response to identifying a bad block, generating Filling data and one or more programming commands, and using the generated one or more programming commands to write the generated filling data into the identified bad block.
根据本申请的第一方面的第一至第七识别不可靠块的方法之一,提供了根据本申请第一方面的第八识别不可靠块的方法,,其中,响应于识别出坏块,将识别出的坏块上已被写入的数据搬移到其他块。According to one of the first to seventh methods for identifying unreliable blocks in the first aspect of the present application, an eighth method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein, in response to identifying a bad block, Move the data that has been written on the identified bad block to other blocks.
根据本申请的第一方面的第一至第八识别不可靠块的方法之一,提供了根据本申请第一方面的第九识别不可靠块的方法,其中,响应于要获取承载待写入数据的块,查询坏块表以获得可用块;向获得的可用块发出编程命令以写入数据,并记录处理编程命令的 时间和编程命令所操作的块的擦写次数。According to one of the first to eighth methods for identifying unreliable blocks in the first aspect of the present application, a ninth method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein, in response to obtaining the bearer to be written For data blocks, query the bad block table to obtain available blocks; issue programming commands to the obtained available blocks to write data, and record the time for processing the programming commands and the number of erasures and writes of the blocks operated by the programming commands.
根据本申请的第一方面的第一至第九识别不可靠块的方法之一,提供了根据本申请第一方面的第十识别不可靠块的方法,其中,记录存储设备的所有块的每个所经历的擦写循环次数,以对每个块查询寿命预测表获得寿命预测值。According to one of the first to ninth methods for identifying unreliable blocks in the first aspect of the present application, there is provided a tenth method for identifying unreliable blocks according to the first aspect of the present application, wherein each of all blocks of the storage device is recorded The number of erase and write cycles experienced is used to query the life prediction table for each block to obtain the life prediction value.
根据本申请的第一方面的第一至第九识别不可靠块的方法之一,提供了根据本申请第一方面的第十一识别不可靠块的方法,其中,记录存储设备中以块组为单位的每一块组所经历的擦写循环次数,以对每个块组查询寿命预测表获得寿命预测值,其中,块组中的各块经历了相同的擦写循环次数。According to one of the first to ninth methods for identifying unreliable blocks in the first aspect of the present application, there is provided the eleventh method for identifying unreliable blocks according to the first aspect of the present application. It is the number of erasing cycles experienced by each block group in the unit to query the life prediction table for each block group to obtain the life prediction value, wherein each block in the block group has experienced the same number of erasing cycles.
根据本申请的第一方面的第一至第十一识别不可靠块的方法之一,提供了根据本申请第一方面的第十二识别不可靠块的方法,其中,在实验室或存储设备的使用过程中生成寿命预测表。According to one of the first to eleventh methods for identifying unreliable blocks in the first aspect of this application, the twelfth method for identifying unreliable blocks according to the first aspect of this application is provided, wherein, in a laboratory or a storage device The life prediction table is generated during the use process.
根据本申请的第一方面的第十二识别不可靠块的方法,提供了根据本申请第一方面的第十三识别不可靠块的方法,其中,对非易失存储介质的参考块反复实施擦除与编程操作,并记录具有指定擦写循环次数区间的参考块处理编程命令时间的区间,以生成寿命预测表。According to the twelfth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the thirteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the reference block of the non-volatile storage medium is repeatedly implemented Erase and program operations, and record the interval of the reference block processing the program command time interval with the designated erasing and writing cycle times to generate a life prediction table.
根据本申请的第一方面的第十二识别不可靠块的方法,提供了根据本申请第一方面的第十四识别不可靠块的方法,其中,对于具有指定擦写循环次数区间的参考块,以编程时间为横轴,以参考块的实际编程时间出现的次数为纵轴绘制曲线,将所述曲线同横轴围成的面积作为1,将所述曲线上指定点所代表的曲线位置同横轴所围成的区域面积,作为寿命预测值生成寿命预测表。According to the twelfth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the fourteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein, for reference blocks having a designated erasing cycle number interval Draw a curve with the programming time as the horizontal axis and the number of occurrences of the actual programming time of the reference block as the vertical axis. The area enclosed by the curve and the horizontal axis is taken as 1, and the curve position represented by the specified point on the curve The area enclosed by the same horizontal axis is used as the life prediction value to generate a life prediction table.
根据本申请的第一方面的第十三或第十四识别不可靠块的方法,提供了根据本申请第一方面的第十五识别不可靠块的方法,其中,参考块为非易失存储介质中选取的一个或多个块。According to the thirteenth or fourteenth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the fifteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the reference block is a non-volatile storage One or more blocks selected in the medium.
根据本申请的第一方面的第一至第十五识别不可靠块的方法之一,提供了根据本申请第一方面的第十六识别不可靠块的方法,其中,响应于编程命令执行失败,根据坏块编程时间表的数据区的值的大小,使寿命预测表的数据区的对应位置的值相应增加,以更新寿命预测表,其中,坏块编程时间表同寿命预测表具有相同的表结构。According to one of the first to fifteenth methods for identifying unreliable blocks in the first aspect of the present application, there is provided a sixteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the execution failure in response to the programming command According to the value of the data area of the bad block programming schedule, the value of the corresponding position in the data area of the life prediction table is increased accordingly to update the life prediction table, where the bad block programming schedule has the same value as the life prediction table Table Structure.
根据本申请的第一方面的第十六识别不可靠块的方法,提供了根据本申请第一方面的第十七识别不可靠块的方法,其中,坏块编程时间表的行表头记录了擦写循环次数区间,坏块编程时间表的列表头记录了处理编程命令时间的区间;或者坏块编程时间表同寿命预测表的数据区一一对应。According to the sixteenth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the seventeenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the row header of the bad block programming schedule records In the interval of erasing and writing cycles, the list header of the bad block programming schedule records the interval of processing the programming command time; or the bad block programming schedule corresponds to the data area of the life prediction table one-to-one.
根据本申请的第一方面的第十六或第十七识别不可靠块的方法,提供了根据本申请第一方面的第十八识别不可靠块的方法,其中,根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的表头确定对应的行/列;依据执行失败的编程命令所访问的块,查询记录了最近的编程命令的执行时间的编程时间表,以获得该块最近的执行成功的编程命令的执行时间;用最近的执行成功的编程命令的执行时间在坏块编程时间表的表头确定对应的列/行;根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录执行失败次数,以更新坏块编程时间表。According to the sixteenth or seventeenth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the eighteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein, according to the failed programming command The number of erasing and writing times of the accessed block determines the corresponding row/column in the header of the bad block programming schedule; according to the block accessed by the failed programming command, query the programming schedule that records the execution time of the most recent programming command. Obtain the execution time of the most recently successfully executed programming command of the block; use the execution time of the most recently executed programming command to determine the corresponding column/row in the header of the bad block programming schedule; according to the determined bad block programming schedule Rows and columns, record the number of execution failures in the corresponding position of the determined bad block programming schedule to update the bad block programming schedule.
根据本申请的第一方面的第十八识别不可靠块的方法,提供了根据本申请第一方面的第十九识别不可靠块的方法,其中,响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表。According to the eighteenth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the nineteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein, in response to the bad block programming schedule being updated, the cycle Or under specified conditions, use the bad block programming schedule to update the life prediction table.
根据本申请的第一方面的第十七至第十九识别不可靠块的方法之一,提供了根据本申请第一方面的第二十识别不可靠块的方法,其中,将寿命预测表的对应A值的位置的值递增A/(A+LN),并记录LN=LN+A,以使用坏块编程时间表更新寿命预测表;其中,A为坏块编程时间表的数据区的某值,LN为用于构建寿命预测表的对应A值的位置所在的列的数据所使用的编程次数。According to one of the seventeenth to nineteenth methods for identifying unreliable blocks in the first aspect of the present application, a twentieth method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the life prediction table The value corresponding to the position of the A value is incremented by A/(A+LN), and LN=LN+A is recorded to update the life prediction table using the bad block programming schedule; where A is a certain part of the data area of the bad block programming schedule Value, LN is the number of programming used to construct the data of the column corresponding to the A value of the life prediction table.
根据本申请的第一方面的第二十识别不可靠块的方法,提供了根据本申请第一方面的第二十一识别不可靠块的方法,其中,降低寿命预测表的对应A值的位置所在列的在对应A值的位置之上的其他值,和/或增加寿命预测表的对应A值的位置所在列的在对应A值的位置之下的其他值。According to the twentieth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the twenty-first method for identifying unreliable blocks according to the first aspect of the present application, wherein the position of the corresponding A value of the life prediction table is reduced Other values in the column above the position of the corresponding A value, and/or add other values below the position of the corresponding A value in the column of the life prediction table.
根据本申请的第一方面的第二十识别不可靠块的方法,提供了根据本申请第一方面的第二十二识别不可靠块的方法,其中,递减寿命预测表的对应A值的位置所在列的其他值。According to the twentieth method for identifying unreliable blocks according to the first aspect of the present application, there is provided the twenty-second method for identifying unreliable blocks according to the first aspect of the present application, wherein the position of the corresponding A value of the life prediction table is decreased Other values in the column.
根据本申请的第一方面的第二十至第二十二识别不可靠块的方法之一,提供了根据本申请第一方面的第二十三识别不可靠块的方法,其中,将寿命预测表的对应Ai值的位置的值递增
Figure PCTCN2020091803-appb-000001
并将LAN更新为
Figure PCTCN2020091803-appb-000002
其中,Ai为坏块编程时间表的数据区的A列第i个值,i为正整数;n为坏块编程时间表的数据区的A列的数据个数;LAN为构建寿命预测表的LA列所使用的编程次数,寿命预测表的LA列与坏块编程时间表的A列相对应。
According to one of the twentieth to twenty-second methods for identifying unreliable blocks in the first aspect of the present application, the twenty-third method for identifying unreliable blocks according to the first aspect of the present application is provided, wherein the lifetime is predicted The value of the position corresponding to the Ai value of the table is incremented
Figure PCTCN2020091803-appb-000001
And update LAN to
Figure PCTCN2020091803-appb-000002
Among them, Ai is the ith value in column A of the data area of the bad block programming schedule, i is a positive integer; n is the number of data in column A of the data area of the bad block programming schedule; LAN is the number of data in the data area of the bad block programming schedule; The number of programming used in the LA column. The LA column of the life prediction table corresponds to the A column of the bad block programming schedule.
根据本申请的第一方面的第一至第十五识别不可靠块的方法之一,提供了根据本申请第一方面的第二十四识别不可靠块的方法,其中,其中,响应于编程命令被成功执行完成,根据编程命令操作的块与编程命令的执行时间更新编程时间表,以在编程时间表中 记录该块的最近编程命令的执行时间。According to one of the first to fifteenth methods for identifying unreliable blocks in the first aspect of the present application, there is provided a twenty-fourth method for identifying unreliable blocks according to the first aspect of the present application, wherein, in response to programming The command is successfully executed, and the programming timetable is updated according to the block operated by the programming command and the execution time of the programming command, so as to record the execution time of the most recent programming command of the block in the programming timetable.
根据本申请的第一方面的第十八至第二十四识别不可靠块的方法之一,提供了根据本申请第一方面的第二十五识别不可靠块的方法,其中,编程时间表包括多行,每行记录了块及其最近的编程命令的执行时间。According to one of the eighteenth to twenty-fourth methods for identifying unreliable blocks in the first aspect of the present application, a method for identifying unreliable blocks according to the twenty-fifth aspect of the first aspect of the present application is provided, wherein the programming schedule Including multiple lines, each line records the execution time of the block and its most recent programming command.
根据本申请的第一方面的第十八至第二十五识别不可靠块的方法之一,提供了根据本申请第一方面的第十八识别不可靠块的方法,其中,块最近编程命令的执行时间是该块最近一次编程命令的执行时间,或最近多次编程命令的执行时间的统计值。According to one of the eighteenth to twenty-fifth methods for identifying unreliable blocks in the first aspect of the present application, there is provided the eighteenth method for identifying unreliable blocks according to the first aspect of the present application, wherein the block most recently programmed command The execution time of is the execution time of the last programming command of the block, or the statistical value of the execution time of the most recent programming commands.
根据本申请的第一方面的第十八至第二十六识别不可靠块的方法之一,提供了根据本申请第一方面的第二十七识别不可靠块的方法,其中,在块被擦除后,到该块的所有物理页被写满数据的过程中,在编程时间表中仅记录一次其编程命令的执行时间。According to one of the eighteenth to twenty-sixth methods for identifying unreliable blocks in the first aspect of the present application, there is provided a twenty-seventh method for identifying unreliable blocks according to the first aspect of the present application, wherein the block is After erasing, until all physical pages of the block are filled with data, the execution time of its programming command is recorded only once in the programming schedule.
根据本申请的第一方面的第十八至第二十七识别不可靠块的方法之一,提供了根据本申请第一方面的第二十八识别不可靠块的方法,其中,编程时间表中记录对同一块的多个编程命令的执行时间的范围。According to one of the eighteenth to twenty-seventh methods for identifying unreliable blocks in the first aspect of the present application, a method for identifying unreliable blocks according to the twenty-eighth aspect of the first aspect of the present application is provided, wherein the programming schedule Record the execution time range of multiple programming commands for the same block.
根据本申请的第一方面的第二十八识别不可靠块的方法,提供了根据本申请第一方面的第二十九识别不可靠块的方法,其中,以最大值与最小值代表多个编程命令的执行时间的范围。The twenty-eighth method for identifying unreliable blocks according to the first aspect of the present application provides a twenty-ninth method for identifying unreliable blocks according to the first aspect of the present application, wherein the maximum value and the minimum value represent multiple The execution time range of the programming command.
根据本申请的第一方面的第十八至第二十九识别不可靠块的方法之一,提供了根据本申请第一方面的第三十识别不可靠块的方法,其中,当块被擦除,或者块被擦除的次数所在的区间相对于寿命预测表所指示的区间发生变化,清空编程时间表中同该块对应的记录,并在编程时间表重新为该块记录编程命令的执行时间或时间范围。According to one of the eighteenth to twenty-ninth methods for identifying unreliable blocks in the first aspect of the present application, there is provided a method for identifying unreliable blocks according to the thirtieth aspect of the first aspect of the present application, wherein when the block is erased Divide, or the interval in which the number of times the block is erased changes relative to the interval indicated by the life prediction table, clear the record corresponding to the block in the programming schedule, and re-record the execution of the programming command for the block in the programming schedule Time or time range.
根据本申请的第二方面,提供了根据本申请第二方面的第一存储设备,包括:控制部件、DRAM和NVM芯片;控制部件根据NVM芯片处理编程命令的时间与编程命令所操作的块的擦写次数,查询存储于DRAM或控制部件内部的存储器中的寿命预测表,以获得寿命预测值;若寿命预测值达到或超过寿命阈值,控制部件则将编程命令所操作的块识别为坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。According to a second aspect of the present application, there is provided a first storage device according to the second aspect of the present application, including: a control component, a DRAM, and an NVM chip; the time for the control component to process a programming command according to the NVM chip and the size of the block operated by the programming command For the number of erasing and writing, query the life prediction table stored in the DRAM or the internal memory of the control component to obtain the life prediction value; if the life prediction value reaches or exceeds the life threshold, the control component recognizes the block operated by the programming command as a bad block , And record the bad block identification in the bad block table stored in DRAM.
根据本申请的第二方面的第一存储设备,提供了根据本申请第二方面的第二存储设备,其中,响应于要获取承载待写入数据的块,控制部件查询坏块表以获得可用的块;控制部件向获得的NVM芯片中的可用块发出编程命令以写入数据,并记录处理编程命令的时间和编程命令所操作的块的擦写次数。According to the first storage device according to the second aspect of the present application, there is provided the second storage device according to the second aspect of the present application, wherein, in response to obtaining a block carrying data to be written, the control component queries the bad block table to obtain available The control component issues programming commands to the available blocks in the obtained NVM chip to write data, and records the time for processing the programming command and the number of erasing and writing of the block operated by the programming command.
根据本申请的第二方面的第一或第二存储设备,提供了根据本申请第二方面的第三存储设备,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记 录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。According to the first or second storage device of the second aspect of the present application, there is provided the third storage device according to the second aspect of the present application, wherein the row header of the life prediction table records the interval of erasing cycles, and the life prediction table The header of the list records the interval for processing the programming command time, and the data area of the life prediction table records the life of the block under the condition that the peer header corresponds to the content indicated by the list header.
根据本申请的第二方面的第一至第三存储设备,提供了根据本申请第二方面的第四存储设备,其中,响应于识别出坏块,控制部件生成填充数据和一个或多个编程命令,用生成的一个或多个编程命令将填充数据写入识别出的尚未被写满数据的所述坏块。According to the first to third storage devices of the second aspect of the present application, there is provided the fourth storage device according to the second aspect of the present application, wherein, in response to identifying a bad block, the control component generates padding data and one or more programming Command, using the generated one or more programming commands to write padding data into the identified bad block that has not been filled with data.
根据本申请的第二方面的第一至第四存储设备之一,提供了根据本申请第二方面的第五存储设备,响应于识别出坏块,控制部件将识别出的坏块上已被写入的数据搬移到NVM芯片的其他块。According to one of the first to fourth storage devices of the second aspect of the present application, there is provided the fifth storage device according to the second aspect of the present application. In response to identifying a bad block, the control component will The written data is moved to other blocks of the NVM chip.
根据本申请的第二方面的第一至第五存储设备之一,提供了根据本申请第二方面的第六存储设备,其中,控制部件包括:处理器、存储器和介质接口控制器;处理器耦合至介质接口控制器,以获得NVM芯片处理编程命令的时间和编程命令所操作的块的擦写次数,并且通过查询存储于存储器中的寿命预测表获得寿命预测值;处理器根据寿命预测值和寿命阈值识别坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。According to one of the first to fifth storage devices of the second aspect of the present application, there is provided the sixth storage device according to the second aspect of the present application, wherein the control component includes: a processor, a memory, and a media interface controller; a processor; It is coupled to the media interface controller to obtain the time for the NVM chip to process the programming command and the number of erasing and writing of the block operated by the programming command, and obtain the life prediction value by querying the life prediction table stored in the memory; the processor is based on the life prediction value And the lifetime threshold to identify bad blocks, and record the identification of the bad blocks in the bad block table stored in the DRAM.
根据本申请的第二方面的第六存储设备,提供了根据本申请第二方面的第七存储设备,其中,响应于介质接口控制器产生中断,处理器获取处理编程命令的时间和编程命令所操作的块的擦写次数。According to the sixth storage device of the second aspect of the present application, there is provided the seventh storage device according to the second aspect of the present application, wherein, in response to an interrupt generated by the media interface controller, the processor acquires the time for processing the programming command and the location of the programming command The number of erases and writes of the operated block.
根据本申请的第二方面的第六存储设备,提供了根据本申请第二方面的第八存储设备,其中,介质接口控制器包括:接收IO命令的入港队列和输出IO命令处理结果的出港队列;处理器从出港队列获取被处理完成的编程命令,以获取处理编程命令的时间和编程命令所操作的块的擦写次数。According to the sixth storage device of the second aspect of the present application, there is provided the eighth storage device according to the second aspect of the present application, wherein the media interface controller includes: an inbound queue for receiving IO commands and an outbound queue for outputting IO command processing results ; The processor obtains the processed programming command from the outbound queue to obtain the time for processing the programming command and the number of erasing and writing of the block operated by the programming command.
根据本申请的第二方面的第六至第八存储设备之一,提供了根据本申请第二方面的第九存储设备,其中,控制部件还包括生成IO命令的闪存管理模块,闪存管理模块识别坏块,并将识别出的坏块填入坏块表。According to one of the sixth to eighth storage devices of the second aspect of the present application, there is provided the ninth storage device according to the second aspect of the present application, wherein the control component further includes a flash memory management module that generates IO commands, and the flash memory management module identifies Bad blocks, and fill the identified bad blocks into the bad block table.
根据本申请的第二方面的第九存储设备,提供了根据本申请第二方面的第十存储设备,其中,闪存管理模块根据擦除命令的执行结果、块的擦除次数和/或从块中读出数据的错误率识别坏块。According to the ninth storage device according to the second aspect of the present application, there is provided the tenth storage device according to the second aspect of the present application, wherein the flash memory management module is based on the execution result of the erase command, the number of erasing of the block and/or the slave block Bad blocks are identified in the error rate of the read data.
根据本申请的第二方面的第九或第十存储设备,提供了根据本申请第二方面的第十一存储设备,其中,闪存管理模块向处理器提供记录了闪存管理模块识别出的疑似坏块的监视块表,响应于被访问的块位于监视块表,处理器访问寿命预测表获取该块的寿命预测值。According to the ninth or tenth storage device of the second aspect of the present application, there is provided the eleventh storage device according to the second aspect of the present application, wherein the flash memory management module provides the processor with a record of suspected damage identified by the flash memory management module. The monitoring block table of the block, in response to the accessed block being located in the monitoring block table, the processor accesses the life prediction table to obtain the life prediction value of the block.
根据本申请的第二方面的第十一存储设备,提供了根据本申请第二方面的第十二存储 设备,其中,闪存管理模块将擦除次数高于阈值,和/或读出数据的错误率高于阈值的块作为疑似坏块,并填入监视块表。According to the eleventh storage device according to the second aspect of the present application, there is provided the twelfth storage device according to the second aspect of the present application, wherein the flash memory management module sets the number of erasing times higher than the threshold, and/or read data errors Blocks with a rate higher than the threshold are regarded as suspected bad blocks and filled in the monitoring block table.
根据本申请的第二方面的第九至第十二存储设备之一,提供了根据本申请第二方面的第十三存储设备,其中,闪存管理模块访问DRAM中的坏块表,以获得可用的块写入数据。According to one of the ninth to twelfth storage devices of the second aspect of the present application, there is provided the thirteenth storage device according to the second aspect of the present application, wherein the flash memory management module accesses the bad block table in the DRAM to obtain available The block writes data.
根据本申请的第二方面的第六至第十三存储设备之一,提供了根据本申请第二方面的第十四存储设备,其中,处理器具有专用的指令存储器,以独立于控制器的前端处理模块和/或闪存管理模块。According to one of the sixth to thirteenth storage devices of the second aspect of the present application, there is provided the fourteenth storage device according to the second aspect of the present application, wherein the processor has a dedicated instruction memory to be independent of the controller Front-end processing module and/or flash management module.
根据本申请的第二方面的第六至第十四存储设备之一,提供了根据本申请第二方面的第十五存储设备,其中,处理器和/或记录寿命预测表的存储器被设置于介质接口控制器内部。According to one of the sixth to fourteenth storage devices of the second aspect of the present application, there is provided the fifteenth storage device according to the second aspect of the present application, wherein the processor and/or the memory for recording the life prediction table is set in Inside the media interface controller.
根据本申请的第二方面的第六至第十五存储设备之一,提供了根据本申请第二方面的第十六存储设备,其中,控制部件还包括第一数据搬移模块和第二数据搬移模块;第一数据搬移模块将DRAM中的编程命令待写入的数据搬移到介质接口控制器,以处理编程命令;第二数据搬移模块将介质接口控制器从NVM芯片读出的数据搬移到DRAM,以处理读命令。According to one of the sixth to fifteenth storage devices of the second aspect of the present application, there is provided the sixteenth storage device according to the second aspect of the present application, wherein the control component further includes a first data moving module and a second data moving module. Module; the first data movement module moves the data to be written in the programming command in the DRAM to the media interface controller to process the programming command; the second data movement module moves the data read by the media interface controller from the NVM chip to the DRAM To process the read command.
根据本申请的第二方面的第十六存储设备,提供了根据本申请第二方面的第十七存储设备,其中,第一数据搬移模块的纠错编码器对搬移的数据进行纠错编码,并将编码后的数据提供给介质接口控制器。According to the sixteenth storage device according to the second aspect of the present application, there is provided the seventeenth storage device according to the second aspect of the present application, wherein the error correction encoder of the first data moving module performs error correction encoding on the moved data, And provide the encoded data to the media interface controller.
根据本申请的第二方面的第十六存储设备,提供了根据本申请第二方面的第十八存储设备,其中,第二数据搬移模块的纠错解码器对从NVM芯片读出的数据进行纠错解码,并将解码后的数据搬移到DRAM。According to the sixteenth storage device of the second aspect of the present application, there is provided the eighteenth storage device according to the second aspect of the present application, wherein the error correction decoder of the second data movement module performs processing on the data read from the NVM chip Error correction decoding, and move the decoded data to DRAM.
附图说明Description of the drawings
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。In order to explain the embodiments of the present application or the technical solutions in the prior art more clearly, the following will briefly introduce the drawings that need to be used in the description of the embodiments. Obviously, the drawings in the following description are only of the present application. For some embodiments, those of ordinary skill in the art can obtain other drawings based on these drawings without creative work.
图1展示了现有技术中的存储设备的框图;Figure 1 shows a block diagram of a storage device in the prior art;
图2展示了现有技术中的存储设备的控制部件的框图;Figure 2 shows a block diagram of a control component of a storage device in the prior art;
图3展示了根据本申请实施例的寿命预测表;Figure 3 shows a life prediction table according to an embodiment of the present application;
图4A展示了根据本申请实施例的存储设备的框图;Figure 4A shows a block diagram of a storage device according to an embodiment of the present application;
图4B展示了根据本申请实施例的坏块识别的流程图;FIG. 4B shows a flowchart of bad block identification according to an embodiment of the present application;
图5展示了根据本申请又一实施例的存储设备的框图;Fig. 5 shows a block diagram of a storage device according to another embodiment of the present application;
图6展示了根据本申请又一实施例的存储设备的框图;Fig. 6 shows a block diagram of a storage device according to another embodiment of the present application;
图7A展示了根据本申请又一实施例的编程时间表;Fig. 7A shows a programming schedule according to another embodiment of the present application;
图7B展示了根据本申请又一实施例的坏块编程时间表;FIG. 7B shows a bad block programming schedule according to another embodiment of the present application;
图7C展示了根据本申请实施例的更新寿命预测表的流程图。Fig. 7C shows a flowchart of updating the life prediction table according to an embodiment of the present application.
具体实施方式Detailed ways
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。The technical solutions in the embodiments of the present application will be described clearly and completely in conjunction with the accompanying drawings in the embodiments of the present application. Obviously, the described embodiments are part of the embodiments of the present application, rather than all of them. Based on the embodiments in this application, all other embodiments obtained by those of ordinary skill in the art without creative work shall fall within the protection scope of this application.
NAND闪存的编程操作通常是通过ISPP(Incremental-step-pulse programming,增量步长脉冲编程)算法实现的。在NAND闪存的编程操作中,向被编程的页施加多个编程脉冲(逐渐增加编程的电压),并在每次编程脉冲后验证数据是否被成功写入。如果某一编程脉冲后经验证发现数据已被成功写入NAND闪存,则完成编程过程。The programming operation of the NAND flash memory is usually implemented through an ISPP (Incremental-step-pulse programming) algorithm. In the programming operation of the NAND flash memory, multiple programming pulses (gradually increasing the programming voltage) are applied to the programmed page, and it is verified whether the data is successfully written after each programming pulse. If it is found after a certain programming pulse that the data has been successfully written into the NAND flash memory, the programming process is completed.
每次施加编程脉冲和验证的时间是相似的,因此,NAND闪存处理编程命令的速度和编程脉冲/验证的次数有关。在NAND闪存的块寿命前期,处理编程命令的速度通常是比较接近的。但是对于寿命将尽的块,其中的部分或全部页的性能变差,需要更多次施加编程脉冲与更多次验证过程,因此处理编程命令的时间也就越大(速度变慢)。因此,NAND闪存处理编程命令的时间可以作为衡量NAND闪存的块的寿命的依据。根据本申请的实施例,旨在利用NAND闪存处理编程命令的时间估计NAND闪存块的寿命是否将尽,减少寿命将尽的块对存储设备的数据读写的影响。The time for each application of a programming pulse and verification is similar. Therefore, the speed of NAND flash memory processing programming commands is related to the number of programming pulses/verification. In the early stage of the block life of NAND flash memory, the speed of processing programming commands is usually relatively close. However, for the end of the life of the block, the performance of some or all of the pages deteriorates, and more programming pulses and more verification processes are required. Therefore, the time to process the programming command is larger (the speed becomes slower). Therefore, the time for the NAND flash memory to process the programming command can be used as a basis for measuring the life of the NAND flash memory block. According to the embodiments of the present application, it is intended to use the time for the NAND flash memory to process the programming command to estimate whether the life of the NAND flash memory block is about to end, and to reduce the impact of the end of life block on the data reading and writing of the storage device.
图3展示了根据本申请实施例的寿命预测表。Fig. 3 shows a life prediction table according to an embodiment of the present application.
参看图3,寿命预测表的第1列(称为列表头)的各行记录了处理编程命令的时间区间,例如,小于1ms(毫秒)的时间区间、1~1.5ms的时间区间、1.5~2ms的时间区间……寿命预测表的第1行(称为行表头)的各列,记录了擦写循环次数区间,例如,0-499次、500-999次、1000-1499次……Referring to Figure 3, each row in the first column of the life prediction table (called the header) records the time interval for processing programming commands, for example, a time interval of less than 1ms (milliseconds), a time interval of 1~1.5ms, 1.5~2ms The time interval of ……The first row of the life prediction table (called the row header) records the interval of the erasing cycle times, for example, 0-499 times, 500-999 times, 1000-1499 times...
图3的寿命预测表的数据区,记录了同行表头指示的擦写循环次数区间与列表头指示的编程时间区间对应的寿命。寿命预测表的数据区记录的寿命是NAND闪存的块的已 被消耗的寿命预测值,用百分比表示,作为举例,“1%”(由附图标记310指示)代表闪存块的寿命已被消耗1%(还有99%的寿命尚未消耗),“21%”(由附图标记320指示)代表闪存块的寿命已被消耗21%(还有79%的寿命尚未消耗),“100%”(由附图标记340指示)代表闪存块的寿命已被耗尽(不可再被使用)。The data area of the life prediction table in FIG. 3 records the lifespan corresponding to the interval of erasing and writing cycles indicated by the header of the same line and the programming time interval indicated by the header of the list. The lifetime recorded in the data area of the lifetime prediction table is the predicted value of the consumed lifetime of the NAND flash memory block, expressed as a percentage. For example, "1%" (indicated by reference numeral 310) represents the lifetime of the flash memory block has been consumed 1% (99% of the lifespan has not yet been consumed), "21%" (indicated by reference numeral 320) represents that the lifespan of the flash memory block has been consumed 21% (there are 79% of the lifespan has not been consumed), "100%" (Indicated by reference numeral 340) represents that the life of the flash memory block has been exhausted (can no longer be used).
依然作为举例,由附图标记310指示的“1%”在行表头对应位置指示擦写循环次数区间为0-499次,而在列表头对应位置指示处理编程命令的时间区间为小于1ms,其代表NAND闪存的擦写循环次数为0-499次的块,若其处理编程命令的时间区间为小于1ms,则该块的预测的寿命为1%;由附图标记320指示的“21%”在行表头对应位置指示擦写循环次数区间为0-499次,而在列表头对应位置指示处理编程命令的时间区间为3~4ms,其代表NAND闪存的擦写循环次数为0-499次的块,若其处理编程命令的时间区间为3~4ms,则该块的预测的寿命为21%;由附图标记340指示的“100%”在行表头对应位置指示擦写循环次数区间为1500-1999次,而在列表头对应位置指示处理编程命令的时间区间为4~5ms,其代表NAND闪存的擦写循环次数为1500-1999次的块,若其处理编程命令的时间区间为4~5ms,则该块的预测的寿命为100%(预测其寿命已耗尽)。Still as an example, the "1%" indicated by the reference numeral 310 indicates that the erasing cycle times range from 0 to 499 times at the corresponding position of the row header, and the time interval for processing the programming command at the corresponding position of the list header is less than 1ms. It represents a block whose number of erase and write cycles of NAND flash memory is 0-499 times. If the time interval for processing a programming command is less than 1ms, the predicted lifetime of the block is 1%; "21%" indicated by reference numeral 320 "In the corresponding position of the row header, the range of the number of erasing and writing cycles is 0-499, and the time period of processing the programming command in the corresponding position of the list header is 3~4ms, which represents the number of erasing and writing cycles of the NAND flash memory is 0-499. For the second block, if the time interval for processing the programming command is 3 to 4 ms, the predicted lifetime of the block is 21%; the “100%” indicated by the reference numeral 340 indicates the number of erasing cycles at the corresponding position of the row header The interval is 1500-1999 times, and the time interval for processing programming commands is indicated at the corresponding position of the list head is 4~5ms, which represents the block with 1500-1999 times of erasing and writing cycles of NAND flash memory. If it is the time interval for processing programming commands If it is 4 to 5 ms, the predicted lifetime of the block is 100% (it is predicted that its lifetime is exhausted).
从而,根据本申请的实施例,根据NAND闪存的块的擦写循环次数与处理编程命令的时间,通过查询图3所展示的寿命预测表,得以知晓对该块的寿命预测。进一步地,设置寿命阈值(例如,95%),若查询得到的块的寿命预测值达到或超过了寿命阈值,则将该块标记为坏块,而不再向该块写入数据(不再对该块执行编程操作)。从而减少使用不可靠块过程中出现编程失败或者读失败的几率,进而降低需要执行数据恢复的次数。Therefore, according to the embodiment of the present application, according to the number of erasing and writing cycles of the block of the NAND flash memory and the time for processing the programming command, the life prediction table shown in FIG. 3 can be consulted to know the life prediction of the block. Further, a life threshold (for example, 95%) is set, and if the life prediction value of the block obtained by the query reaches or exceeds the life threshold, the block is marked as a bad block and no more data is written to the block (no more Perform programming operations on this block). This reduces the probability of programming failure or reading failure during the use of unreliable blocks, thereby reducing the number of times that data recovery needs to be performed.
可以理解地,寿命预测表的行表头的各列所代表的擦写循环次数的区间和/或列表头的各行所代表的处理编程操作的时间的区间可以取其他值。更小的区间粒度有助于提高预测精度,但增加了寿命预测表的大小与查表开销,更大的区间粒度有助于缩小寿命预测表的大小并降低查表开销,但相应地预测精度可能降低。It is understandable that the interval of the number of erasing cycles represented by each column of the row header of the life prediction table and/or the interval of processing the programming operation time represented by each row of the list header may take other values. A smaller interval granularity helps to improve the prediction accuracy, but increases the size of the life prediction table and table lookup overhead. A larger interval granularity helps to reduce the size of the life prediction table and reduce the table lookup overhead, but the prediction accuracy is correspondingly May be reduced.
为使用寿命预测表,存储设备的控制部件还记录其NAND闪存每个块已经经历的擦写循环次数。例如,控制部件记录存储设备的所有块的每个所经历的擦写循环次数。作为又一个例子,控制部件以块组(包括多个块)为单位实施擦除操作,块组中的各块经历了相同的擦写循环次数,从而控制部件仅为各块组记录其所经历的擦写循环次数。将块或块组所经历的擦写循环次数简称为块或块组的擦写次数。For the service life prediction table, the control unit of the storage device also records the number of erase and write cycles that each block of its NAND flash memory has gone through. For example, the control unit records the number of erasing cycles experienced by each of all blocks of the storage device. As another example, the control component implements the erasing operation in units of block groups (including multiple blocks). Each block in the block group has experienced the same number of erasing and writing cycles, so that the control component only records its experience for each block group. The number of erase and write cycles. The number of erasing cycles experienced by a block or block group is simply referred to as the number of erasing and writing cycles of the block or block group.
在实验室或存储设备的使用过程中生成寿命预测表。例如,选取NAND闪存的一个或多个块作为参考块,对参考块反复实施擦除与编程操作,并记录具有指定擦写次数(区间)的参考块的编程时间分布,用于预测具有指定擦写次数(区间)的块,在其编程时间 落入指定时间区间时,该块的预测寿命。Generate a life prediction table during the use of the laboratory or storage equipment. For example, one or more blocks of the NAND flash memory are selected as the reference block, the erasing and programming operations are repeated on the reference block, and the programming time distribution of the reference block with the specified erasing and writing times (interval) is recorded, which is used to predict the specified erasing The predicted life of the block with the number of write times (interval) when its programming time falls within the specified time interval.
例如,对于具有指定擦写次数(区间)的参考块,以编程时间为横轴,以参考块的实际编程时间出现的次数为纵轴绘制曲线,将该曲线同横轴围成的面积作为1,而曲线上的指定点所代表的曲线位置同横轴所围成的区域面积,作为寿命预测值。For example, for a reference block with a specified number of erasing and writing times (intervals), a curve is drawn with the programming time as the horizontal axis, and the number of times the actual programming time of the reference block appears as the vertical axis, and the area enclosed by the curve and the horizontal axis is regarded as 1. , And the area of the area enclosed by the curve position represented by the specified point on the curve and the horizontal axis is used as the life prediction value.
虽然以NAND闪存为例描述了根据本申请实施例的坏块预测方法,可以理解地,根据本申请实施例的坏块预测方法也适用于其他非易失存储介质。Although a NAND flash memory is taken as an example to describe the bad block prediction method according to the embodiment of the present application, it is understandable that the bad block prediction method according to the embodiment of the present application is also applicable to other non-volatile storage media.
图4A展示了根据本申请实施例的存储设备的框图。Fig. 4A shows a block diagram of a storage device according to an embodiment of the present application.
存储设备400包括接口430、控制部件450、一个或多个NVM芯片420以及DRAM410。The storage device 400 includes an interface 430, a control unit 450, one or more NVM chips 420, and a DRAM 410.
DRAM 410存储了坏块表412与寿命预测表414。坏块表412记录了NVM芯片420中的所有坏块的标识(例如其地址)。在获取要承载待写入数据的块时,控制部件查询坏块表412,以确保不向坏块写入数据。The DRAM 410 stores a bad block table 412 and a life prediction table 414. The bad block table 412 records the identifiers (for example, addresses) of all bad blocks in the NVM chip 420. When acquiring the block to carry the data to be written, the control component queries the bad block table 412 to ensure that no data is written to the bad block.
控制部件450向NVM芯片发出编程命令以向NVM芯片写入数据,并记录NVM芯片420处理编程命令的时间。根据编程命令所操作的块的擦写次数与其处理编程命令的时间,控制部件450还查询寿命预测表414,以获取该块的寿命预测值。若获取的寿命预测值大于指定的阈值(例如,95%),控制部件450还在坏块表412中记录该块的标识。一些情况下,该块已被写入了数据并且尚未被写满数据(还有未被写入数据的空白页),控制部件450还生成填充数据(例如,用随机数作为填充数据),并将填充数据写入该块,以写满其所有空白页,以提高该块上的有效数据的可靠性。依然可选地,响应于根据寿命预测表414识别出块的寿命将尽,控制部件450尽快地将该块上已存储的有效数据搬移到其他块。The control unit 450 issues a programming command to the NVM chip to write data to the NVM chip, and records the time when the NVM chip 420 processes the programming command. According to the number of erasing and writing of the block operated by the programming command and the time for processing the programming command, the control component 450 also queries the life prediction table 414 to obtain the life prediction value of the block. If the acquired lifetime prediction value is greater than the specified threshold value (for example, 95%), the control component 450 also records the identifier of the block in the bad block table 412. In some cases, the block has been written with data and has not yet been filled with data (there are blank pages where data has not been written), the control unit 450 also generates padding data (for example, using random numbers as padding data), and The padding data is written into the block to fill all its blank pages to improve the reliability of valid data on the block. Still optionally, in response to identifying the end of the life of the block according to the life prediction table 414, the control component 450 moves the valid data stored on the block to another block as soon as possible.
图4B展示了根据本申请实施例的坏块识别的流程图。Fig. 4B shows a flowchart of bad block identification according to an embodiment of the present application.
存储设备的控制部件获取存储设备NVM芯片处理编程命令的时间(460)。可选地,控制部件获取每个编程命令被处理的时间,或者挑选一个或多个编程命令被处理的时间。例如,对被擦除后的块,获取一次其处理编程命令的时间。依然可选地,用被擦除后的某块处理多个编程命令的平均时间代表该块处理编程命令的时间。The control component of the storage device obtains the time when the NVM chip of the storage device processes the programming command (460). Optionally, the control component obtains the processing time of each programming command, or selects the processing time of one or more programming commands. For example, for the erased block, the time for processing the program command is acquired once. Still optionally, the average time for processing multiple programming commands in a certain block after being erased represents the time for processing the programming commands in the block.
控制部件还获取该编程命令所访问的块的擦写次数。用该块的擦写次数与其处理编程命令的时间查询寿命预测表414(也参看图4A)(470),以得到对该块的寿命预测。可选地,将该块的擦写次数和/或处理编程命令的时间量化为同如图3的寿命预测表的行表头/列表头的项对应的值,以便于查询寿命预测表。The control unit also obtains the number of erasing and writing of the block accessed by the programming command. The life prediction table 414 (see also FIG. 4A) (470) is used to query the life prediction table 414 (see also FIG. 4A) (470) with the number of erasing and writing of the block and the time for processing the programming command to obtain the life prediction of the block. Optionally, the number of times of erasing and writing of the block and/or the time for processing the programming command are quantified as values corresponding to the items of the row header/list header of the life prediction table as shown in FIG. 3, so as to query the life prediction table.
可选地,控制部件并非对所有块预测寿命。例如,返回参看图3的寿命预测表,擦写次数在0-499次的块,即使其处理编程命令的时间较长(例如,大于10ms),预测的 寿命也不会超过指定阈值。从而,控制部件对擦写次数小于阈值(例如,500次)的块,不查询寿命预测表,也不尝试预测其寿命。Optionally, the control component does not predict the life of all blocks. For example, referring back to the life prediction table in Fig. 3, a block whose number of erasing and writing is 0-499 times, even if it takes a long time to process the programming command (for example, greater than 10ms), the predicted life will not exceed the specified threshold. Therefore, the control unit does not query the life prediction table for blocks whose number of erasing and writing times are less than the threshold value (for example, 500 times), nor does it try to predict the life of the blocks.
控制部件比较从寿命预测表中查询出的预测寿命是否超过指定的阈值(例如,95%)(480)。若预测寿命不超过指定阈值,控制部件无须做进一步处理。若预测寿命超过了指定阈值,控制部件将该块识别为寿命将尽的坏块,并在坏块表412(也参看图4A)中记录该块的标识(490)。可选地,对于识别出的坏块,还生成一个或多个编程命令以及填充数据,用编程命令将生成的填充数据写入识别出的坏块(495)。依然可选地或进一步地,对于识别出的坏块,控制部件将其上已被写入的数据尽快搬移到其他块。The control component compares whether the predicted life queried from the life prediction table exceeds a specified threshold (for example, 95%) (480). If the predicted life does not exceed the specified threshold, the control component does not require further processing. If the predicted life span exceeds the specified threshold, the control component recognizes the block as a bad block with an end of life, and records the block identification (490) in the bad block table 412 (see also FIG. 4A). Optionally, for the identified bad block, one or more programming commands and padding data are also generated, and the generated padding data is written into the identified bad block with the programming command (495). Still alternatively or further, for the identified bad block, the control component moves the data written on it to other blocks as soon as possible.
图5展示了根据本申请又一实施例的存储设备的框图。Fig. 5 shows a block diagram of a storage device according to another embodiment of the present application.
存储设备的控制部件500包括主机接口510、前端处理模块520、闪存管理模块530以及一个或多个介质接口控制器540。介质接口控制器540耦合到NVM芯片105。The control component 500 of the storage device includes a host interface 510, a front-end processing module 520, a flash management module 530, and one or more media interface controllers 540. The media interface controller 540 is coupled to the NVM chip 105.
介质接口控制器540包括入港队列542与出港队列544。介质接口控制器540通过入港队列542接收IO命令,还通过出港队列544输出IO命令处理结果。The media interface controller 540 includes an inbound queue 542 and an outbound queue 544. The media interface controller 540 receives the IO command through the inbound queue 542, and also outputs the IO command processing result through the outbound queue 544.
控制部件500还包括处理器550。处理器550耦合介质接口控制器540。控制部件500还包括存储了寿命预测表514的存储器。可选地,处理器550具有专用的指令存储器(未示出),处理器550独立于前端处理模块520和/或闪存管理模块530,以降低对控制部件500的既有部分的影响。The control part 500 also includes a processor 550. The processor 550 is coupled to the media interface controller 540. The control part 500 also includes a memory storing the life prediction table 514. Optionally, the processor 550 has a dedicated instruction memory (not shown), and the processor 550 is independent of the front-end processing module 520 and/or the flash management module 530, so as to reduce the influence on the existing part of the control component 500.
寿命预测表514的尺寸较小,例如,几KB或更小,从而被存储在控制部件500内部的存储器。The life prediction table 514 has a small size, for example, several KB or less, and is thus stored in the memory inside the control section 500.
控制部件500还耦合到外部存储器(DRAM),外部存储器中存储坏块表512。闪存管理模块530可访问外部存储器中的坏块表512,以避免分配坏块来承载待写入数据。The control unit 500 is also coupled to an external memory (DRAM), and the bad block table 512 is stored in the external memory. The flash memory management module 530 can access the bad block table 512 in the external memory to avoid allocating bad blocks to carry the data to be written.
处理器550监控NVM 105上的一个、多个或所有处理完成的编程命令,以获得NVM 105处理编程命令的时间,并进一步通过查询寿命预测表514来获得NVM 105的块的寿命预测。The processor 550 monitors one, multiple, or all processed programming commands on the NVM 105 to obtain the time for the NVM 105 to process the programming commands, and further obtains the life prediction of the block of the NVM 105 by querying the life prediction table 514.
作为举例,存储设上电后,处理器550处于待机状态。如果有编程命令被处理完成,介质接口控制器540产生中断,处理器550响应中断并获取该编程命令的执行时间,以及也获取该编程命令所操作的块的擦写次数。处理器550查询寿命预测表514,以获得对该编程命令所操作的块的寿命预测,并响应于寿命预测超过了指定阈值,在坏块表512中记录该块,以使得闪存管理模块530将来不会再使用该块。As an example, after the storage device is powered on, the processor 550 is in a standby state. If a programming command is processed, the media interface controller 540 generates an interrupt, and the processor 550 responds to the interrupt and obtains the execution time of the programming command, as well as the number of erasing and writing of the block operated by the programming command. The processor 550 queries the life prediction table 514 to obtain the life prediction of the block operated by the programming command, and in response to the life prediction exceeding the specified threshold, records the block in the bad block table 512, so that the flash management module 530 The block will no longer be used.
作为另一个例子,处理器550从出港队列544获取被处理完成的编程命令,进而获取该编程命令的执行时间与该编程命令所操作的块的擦写次数。As another example, the processor 550 obtains the processed programming command from the outbound queue 544, and then obtains the execution time of the programming command and the number of erasing and writing of the block operated by the programming command.
可选地,处理器550根据编程命令的执行时间识别坏块,并将识别出的坏块填入坏块表512,而闪存管理模块530也识别坏块,并将识别出的坏块填入坏块表512。例如,闪存管理模块530根据擦除命令的执行结果、块的擦写次数和/或从块中读出数据的错误率等因素识别坏块,并将识别出的坏块也填入坏块表512。Optionally, the processor 550 identifies bad blocks according to the execution time of the programming command, and fills the identified bad blocks into the bad block table 512, and the flash memory management module 530 also identifies the bad blocks and fills the identified bad blocks into Bad block table 512. For example, the flash memory management module 530 identifies bad blocks according to the execution result of the erase command, the number of erasing and writing of the block, and/or the error rate of data read from the block, and fills the identified bad blocks into the bad block table. 512.
依然可选地,闪存管理模块530还向处理器550提供监视块表。监视块表中记录了闪存管理模块530识别出的“疑似”坏块。例如,闪存管理模块330将擦写次数高于阈值,和/或数据错误率高于阈值的块作为“疑似”坏块,并填入监视块表。处理器550根据监视块表,而获取“疑似”坏块的寿命预测。从而,处理器550无须对所有块获取寿命预测,降低了处理器550的工作负载。Still optionally, the flash memory management module 530 also provides a monitoring block table to the processor 550. The "suspected" bad blocks identified by the flash memory management module 530 are recorded in the monitoring block table. For example, the flash memory management module 330 regards the blocks with the number of erasing and writing times higher than the threshold and/or the data error rate higher than the threshold as "suspected" bad blocks, and fills them in the monitoring block table. The processor 550 obtains the life prediction of the "suspected" bad block according to the monitoring block table. Therefore, the processor 550 does not need to obtain life predictions for all blocks, which reduces the workload of the processor 550.
图6展示了根据本申请又一实施例的存储设备的框图。Fig. 6 shows a block diagram of a storage device according to another embodiment of the present application.
存储设备的控制部件600包括主机接口610、前端处理模块620、闪存管理模块330以及一个或多个介质接口控制器640。介质接口控制器640耦合到NVM芯片105。The control component 600 of the storage device includes a host interface 610, a front-end processing module 620, a flash memory management module 330, and one or more media interface controllers 640. The media interface controller 640 is coupled to the NVM chip 105.
介质接口控制器640包括入港队列642与出港队列644。闪存管理模块630通过入港队列642向介质接口控制器640提交IO命令,并从出港队列644获取介质接口控制器640提供的IO命令的处理结果。The media interface controller 640 includes an inbound queue 642 and an outbound queue 644. The flash memory management module 630 submits an IO command to the media interface controller 640 through the inbound queue 642, and obtains the processing result of the IO command provided by the media interface controller 640 from the outbound queue 644.
控制部件600还包括耦合介质接口控制器640的处理器650。控制部件600还包括存储了寿命预测表614的存储器。控制部件600还耦合到外部存储器(DRAM),外部存储器中存储坏块表612。The control part 600 also includes a processor 650 coupled to the media interface controller 640. The control unit 600 also includes a memory in which the life prediction table 614 is stored. The control unit 600 is also coupled to an external memory (DRAM), and the bad block table 612 is stored in the external memory.
控制部件600还包括数据搬移模块660与数据搬移模块662。为处理编程命令,数据搬移模块660将DRAM中的编程命令待写入数据搬移到介质接口控制器。为处理读命令,数据搬移模块662将介质接口控制器640从NVM 105读出的数据搬移到DRAM。可选地,数据搬移模块660还包括纠错编码器,对搬移的数据进行纠错编码,并将编码后的数据提供给介质接口控制器640。数据搬移模块662还包括纠错解码器,对从NVM 105读出的数据进行纠错解码,并将解码后的数据搬移到DRAM。The control component 600 further includes a data moving module 660 and a data moving module 662. To process the programming command, the data transfer module 660 transfers the data to be written in the programming command in the DRAM to the media interface controller. To process the read command, the data transfer module 662 transfers the data read by the media interface controller 640 from the NVM 105 to the DRAM. Optionally, the data movement module 660 further includes an error correction encoder, which performs error correction encoding on the moved data, and provides the encoded data to the media interface controller 640. The data movement module 662 also includes an error correction decoder, which performs error correction decoding on the data read from the NVM 105, and moves the decoded data to the DRAM.
处理器650监控NVM 105上的一个、多个或所有处理完成的编程命令,以获得处理编程命令的时间,并进一步通过查询寿命预测表614来获得NVM 105的块的寿命预测。处理器650通过查询寿命预测表614,获得对该编程命令所操作的块的寿命预测,并响应于寿命预测超过了指定阈值,在坏块表612中记录该块,以使得闪存管理模块630将来不会再使用该块。The processor 650 monitors one, more or all of the programmed commands processed on the NVM 105 to obtain the time for processing the programmed commands, and further obtains the life prediction of the block of the NVM 105 by querying the life prediction table 614. The processor 650 obtains the life prediction of the block operated by the programming command by querying the life prediction table 614, and in response to the life prediction exceeding the specified threshold, records the block in the bad block table 612, so that the flash management module 630 The block will no longer be used.
可选地,处理器650和/或记录寿命预测表614的存储器被设置于介质接口控制器640内部。Optionally, the processor 650 and/or the memory of the recording lifetime prediction table 614 are provided inside the media interface controller 640.
图7A展示了根据本申请又一实施例的编程时间表。Fig. 7A shows a programming schedule according to another embodiment of the present application.
根据本申请的实施例,在存储设备工作期间,更新寿命预测表,以使寿命预测表所代表的块的寿命更加准确。According to the embodiment of the present application, during the operation of the storage device, the life prediction table is updated to make the life of the block represented by the life prediction table more accurate.
图7A的编程时间表包括多行,每行记录了块及其最近的编程命令的执行时间。编程时间表中,用块号或块的地址代表一个块。The programming schedule of FIG. 7A includes multiple rows, and each row records the execution time of the block and its most recent programming command. In the programming time table, a block is represented by a block number or block address.
响应于编程命令被成功执行完成,根据编程命令操作的块与编程命令的执行时间,更新编程时间表,以在编程时间表中记录该块的最近编程命令的执行时间。可选地,块的最近编程命令的执行时间是该块最近一次的编程命令的执行时间,或最近多次的编程命令的执行时间的统计值。依然可选地,在块被擦除后,到该块的所有物理页被写满数据的过程中,在编程时间表中仅记录一次其编程命令的执行时间,以降低更新编程时间表的任务负载。In response to the successful execution of the programming command, the programming schedule is updated according to the block operated by the programming command and the execution time of the programming command to record the execution time of the most recent programming command of the block in the programming schedule. Optionally, the execution time of the most recent programming command of the block is the execution time of the most recent programming command of the block, or a statistical value of the execution time of the most recent programming commands. Optionally, after a block is erased, until all physical pages of the block are filled with data, the execution time of its programming command is recorded only once in the programming schedule to reduce the task of updating the programming schedule load.
依然可选地,编程时间表中记录对同一块的多个编程命令的执行时间的范围,例如以最大值与最小值代表多个编程命令的执行时间的范围。Still optionally, the range of execution time of multiple programming commands for the same block is recorded in the programming time table, for example, the maximum value and the minimum value represent the range of execution time of multiple programming commands.
进一步地,当块被擦除,或者块被擦除的次数所在的区间相对于寿命预测表所指示的区间发生变化,例如从被擦除1499次变为被擦除1500次,清空编程时间表中同该块对应的记录,并在编程时间表重新为该块记录编程命令的执行时间或时间范围。Further, when the block is erased, or the interval in which the number of times the block is erased changes relative to the interval indicated by the life prediction table, for example, from being erased 1499 times to being erased 1500 times, the programming schedule is cleared Record the corresponding record of the block, and re-record the execution time or time range of the programming command for this block in the programming schedule.
图7B展示了根据本申请又一实施例的坏块编程时间表。Fig. 7B shows a bad block programming schedule according to another embodiment of the present application.
参看图7B,坏块编程时间表同寿命预测表具有相同或相近的表结构。行表头的各列指示了擦写次数的多个范围,列表头指示了编程命令执行时间的多个范围。Referring to Figure 7B, the bad block programming schedule has the same or similar table structure as the life prediction table. The columns of the row table header indicate multiple ranges of erasing and writing times, and the column header indicates multiple ranges of program command execution time.
响应于识别出编程命令的执行失败,更新坏块编程时间表。根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的行表头确定对应的列。依据执行失败的编程命令所访问的块,查询图7A所展示的编程时间表,以获得该块最近的执行成功的编程命令的执行时间,并用该执行时间在图7B的坏块编程时间表的列表头确定对应的行。以及根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录次数(例如,使坏块编程时间表的该位置的值递增)。In response to recognizing that the execution of the programming command has failed, the bad block programming schedule is updated. Determine the corresponding column in the row header of the bad block programming schedule according to the number of erasing and writing of the block accessed by the failed programming command. According to the block accessed by the failed programming command, query the programming schedule shown in FIG. 7A to obtain the execution time of the most recently successfully executed programming command of the block, and use the execution time in the bad block programming schedule of FIG. 7B The header of the list determines the corresponding row. And according to the rows and columns of the determined bad block programming schedule, the number of times is recorded in the corresponding position of the determined bad block programming schedule (for example, the value of the position of the bad block programming schedule is incremented).
例如,识别出编程命令的执行失败,该编程命令的擦写次数为1200,通过编程时间表查询到该块最近被成功编程时,编程命令的执行时间为12ms。根据该块的擦写次数得到坏块编程时间表的行表头中指示擦写次数为1000-1499区间的列。根据该块的最近被成功编程的编程命令执行时间,得到坏块编程时间表的列表头中指示“>10ms”的行,并将坏块编程时间表的对应位置(由附图标记710指示)的值递增。For example, if it is recognized that the execution of the programming command has failed, the number of erasing and writing of the programming command is 1200, and when the block has been successfully programmed recently, the execution time of the programming command is 12ms. According to the number of erasing and writing of the block, the column indicating the number of erasing and writing in the row table header of the bad block programming schedule is 1000-1499. According to the execution time of the programming command that was successfully programmed recently for the block, the row indicating ">10ms" in the header of the bad block programming schedule is obtained, and the corresponding position of the bad block programming schedule (indicated by reference numeral 710) The value is incremented.
响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更 新寿命预测表。作为举例,坏块编程时间表同寿命预测表的数据区一一对应。根据坏块编程时间表的数据区的值的大小,使寿命预测表的数据区的对应位置的值相应增加。例如,坏块编程时间表的数据区的某值为A,而用于构建寿命预测表的每列数据所使用的编程次数为LN,则将寿命预测表的对应A值的位置的值递增A/(A+LN),以及更新LN的值为LN=LN+A。可选地或进一步地,还递减寿命预测表的对应A值的位置所在列的其他值。依然可选地,降低寿命预测表的对应A值的位置所在列的在对应A值的位置之上(之前)的其他值,和/或增加寿命预测表的对应A值的位置所在列的在对应A值的位置之下(之后)的其他值。In response to the bad block programming schedule being updated, periodically or under specified conditions, the life prediction table is updated with the bad block programming schedule. As an example, the bad block programming schedule corresponds to the data area of the life prediction table one-to-one. According to the value of the data area of the bad block programming schedule, the value of the corresponding position of the data area of the life prediction table is increased accordingly. For example, a certain value in the data area of the bad block programming schedule is A, and the number of programming used for each column of data used to construct the life prediction table is LN, then the value of the corresponding A value position of the life prediction table is incremented by A /(A+LN), and update the value of LN to LN=LN+A. Optionally or further, other values in the column where the position of the corresponding A value of the life prediction table is also decremented. Still optionally, reduce other values above (before) the position of the corresponding A value in the column of the corresponding A value of the life prediction table, and/or increase the column of the corresponding A value of the life prediction table. Other values below (after) the position corresponding to the A value.
依然可选地,坏块编程时间表的数据区的A列的值依次为A1、A2……Ai、……An,其中i为正整数,则将寿命预测表对应A列的LA列相应更新。例如,为获得寿命预测表的LA列所使用的编程次数为LAN,则将寿命预测表的对应Ai值的位置的值递增
Figure PCTCN2020091803-appb-000003
以及将LAN更新为
Figure PCTCN2020091803-appb-000004
Still optionally, the values of column A in the data area of the bad block programming schedule are A1, A2...Ai,...An in order, where i is a positive integer, and column LA corresponding to column A of the life prediction table is updated accordingly . For example, if the number of programming used to obtain the LA column of the life prediction table is LAN, the value of the position corresponding to the Ai value of the life prediction table is incremented
Figure PCTCN2020091803-appb-000003
And update the LAN to
Figure PCTCN2020091803-appb-000004
在可选的实施方式中,不使用坏块编程时间表,而响应于编程命令的执行失败,获取该编程命令所访问的擦写次数,以及通过图7A的编程时间表获得该块最近成功执行编程命令的执行时间,并且增加寿命预测表中对应于该擦写次数与该执行时间的位置的值。可选地,还增加寿命预测表中对应于该擦写次数与该执行时间的位置所在列之下(之后)的其他值。In an alternative embodiment, the bad block programming schedule is not used, and in response to the execution failure of the programming command, the number of erasing and writing accessed by the programming command is obtained, and the block's recent successful execution is obtained through the programming schedule of FIG. 7A Program the execution time of the command, and increase the value corresponding to the number of erasing and writing and the position of the execution time in the life prediction table. Optionally, other values below (after) the column corresponding to the number of erasing and writing and the position of the execution time in the life prediction table are also added.
图7C展示了根据本申请实施例的更新寿命预测表的流程图。Fig. 7C shows a flowchart of updating the life prediction table according to an embodiment of the present application.
存储设备的控制部件发出编程命令(710),以向NVM芯片中写入数据,或者从NVM芯片中读出数据。响应于控制部件识别出编程命令被成功执行完成(720),更新编程时间表(730)。The control unit of the storage device issues a programming command (710) to write data to the NVM chip or read data from the NVM chip. In response to the control unit recognizing that the programming command is successfully executed (720), the programming schedule is updated (730).
控制部件获取存储设备NVM芯片处理编程命令的时间,根据编程命令操作的块与编程命令执行的时间,更新编程时间表,以在编程时间表中记录该块的最近编程命令的执行时间。The control component obtains the time for the NVM chip of the storage device to process the programming command, and updates the programming schedule according to the block operated by the programming command and the execution time of the programming command to record the execution time of the most recent programming command of the block in the programming schedule.
响应于控制部件识别出编程命令的执行失败(720),更新坏块编程时间表(740)。根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的行表头确定对应的列。依据执行失败的编程命令所访问的块最近的执行成功的编程命令的执行时间,在坏块编程时间表的列表头确定对应的行。以及根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录次数(例如,使坏块编程时间表的该位置的值递增)。In response to the control unit recognizing that the execution of the programming command has failed (720), the bad block programming schedule is updated (740). Determine the corresponding column in the row header of the bad block programming schedule according to the number of erasing and writing of the block accessed by the failed programming command. According to the execution time of the most recently successfully executed programming command of the block accessed by the failed programming command, the corresponding row is determined at the head of the bad block programming schedule. And according to the rows and columns of the determined bad block programming schedule, the number of times is recorded in the corresponding position of the determined bad block programming schedule (for example, the value of the position of the bad block programming schedule is incremented).
响应于坏块编程时间表被更新、周期性地或者在指定条件下,用坏块编程时间表更新寿命预测表(750)。In response to the bad block programming schedule being updated, periodically or under specified conditions, the life prediction table is updated with the bad block programming schedule (750).
本申请的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。软件可以包括计算机可读程序,这些计算机可读程序在被计算机执行时,实现本申请所述的方法。The method and device of the present application can be implemented by hardware, software, firmware, and any combination of the foregoing. The hardware may include digital circuits, analog circuits, digital signal processors (DSP), dedicated inheritance circuits (ASIC), and so on. The software may include computer-readable programs, which, when executed by a computer, implement the methods described in this application.
本申请的软件还可以存储在计算机可读存储介质,例如硬盘,光盘等等中,该计算机可读存储介质存储有程序,当所述程序被一个设备执行时,使得所述设备进行上面所述的方法。The software of this application can also be stored in a computer-readable storage medium, such as a hard disk, an optical disc, etc., which stores a program. When the program is executed by a device, the device can perform the above Methods.
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。The above are only specific implementations of this application, but the protection scope of this application is not limited to this. Any person skilled in the art can easily think of changes or substitutions within the technical scope disclosed in this application. Should be covered within the scope of protection of this application. Therefore, the protection scope of this application should be subject to the protection scope of the claims.

Claims (22)

  1. 一种识别不可靠块的方法,包括如下步骤:A method for identifying unreliable blocks, including the following steps:
    根据处理编程命令的时间与编程命令所操作的块的擦写次数,查询寿命预测表获得寿命预测值;According to the time of processing the programming command and the number of erasing and writing of the block operated by the programming command, query the life prediction table to obtain the life prediction value;
    若寿命预测值达到或超过寿命阈值,则将编程命令所操作的块识别为坏块,并将坏块的标识记录于坏块表中。If the life prediction value reaches or exceeds the life threshold, the block operated by the programming command is identified as a bad block, and the identification of the bad block is recorded in the bad block table.
  2. 根据权利要求1所述的识别不可靠块的方法,其中,处理编程命令的时间为每个编程命令被处理的时间,或者挑选的一个或多个编程命令被处理的时间。The method for identifying unreliable blocks according to claim 1, wherein the time for processing the programming command is the time when each programming command is processed, or the time when one or more selected programming commands are processed.
  3. 根据权利要求1或2所述的识别不可靠块的方法,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。The method for identifying unreliable blocks according to claim 1 or 2, wherein the row header of the life prediction table records the interval of the number of erasing and writing cycles, the header of the life prediction table records the interval of processing the programming command time, and the life prediction The data area of the table records the life of the block in the case where the content indicated by the peer table header corresponds to the content indicated by the list header.
  4. 根据权利要求3所述的识别不可靠块的方法,其中,寿命预测表的数据区记录的寿命是非易失存储介质的块的已被消耗的寿命预测值。The method for identifying unreliable blocks according to claim 3, wherein the life recorded in the data area of the life prediction table is a predicted value of the consumed life of the block of the nonvolatile storage medium.
  5. 根据权利要求3或4所述的识别不可靠块的方法,其中,将处理编程命令的时间和/或编程命令所操作的块的擦写次数量化为同寿命预测表的行表头/列表头的项对应的值,以查询寿命预测表。The method for identifying unreliable blocks according to claim 3 or 4, wherein the time for processing the programming command and/or the number of erasing and writing of the block operated by the programming command is quantified as the same as the row header/list header of the life prediction table The corresponding value of the item to query the life prediction table.
  6. 根据权利要求1-5所述的识别不可靠块的方法之一,其中,仅当编程命令所操作的块的擦写次数大于擦写阈值,才查询寿命预测表获得寿命预测值。One of the methods for identifying unreliable blocks according to claims 1-5, wherein only when the number of erasing and writing of the block operated by the programming command is greater than the erasing threshold, the life prediction table is queried to obtain the life prediction value.
  7. 根据权利要求1或2所述的识别不可靠块的方法,其中,响应于识别出坏块,生成填充数据和一个或多个编程命令,用生成的一个或多个编程命令将生成的填充数据写入识别出的所述坏块。The method for identifying an unreliable block according to claim 1 or 2, wherein, in response to identifying a bad block, padding data and one or more programming commands are generated, and the generated padding data is replaced by the generated one or more programming commands Write the identified bad block.
  8. 根据权利要求1-11所述的识别不可靠块的方法之一,其中,在实验室或存储设备的使用过程中生成寿命预测表。One of the methods for identifying unreliable blocks according to claims 1-11, wherein the life prediction table is generated during the use of a laboratory or a storage device.
  9. 根据权利要求8所述的识别不可靠块的方法,其中,对非易失存储介质的参考块反复实施擦除与编程操作,并记录具有指定擦写循环次数区间的参考块处理编程命令时间的区间,以生成寿命预测表。The method for identifying unreliable blocks according to claim 8, wherein the erasing and programming operations are repeatedly performed on the reference block of the non-volatile storage medium, and the time for processing the programming command of the reference block with the specified erasing cycle number interval is recorded Interval to generate a life prediction table.
  10. 根据权利要求8或9所述的识别不可靠块的方法,其中,对于具有指定擦写循环次数区间的参考块,以编程时间为横轴,以参考块的实际编程时间出现的次数为纵轴绘制曲线,将所述曲线同横轴围成的面积作为1,将所述曲线上指定点所代表的曲线位置同横轴所围成的区域面积,作为寿命预测值生成寿命预测表。The method for identifying an unreliable block according to claim 8 or 9, wherein for a reference block with a designated erasing cycle number interval, the programming time is taken as the horizontal axis, and the actual programming time of the reference block is taken as the vertical axis. A curve is drawn, the area enclosed by the curve and the horizontal axis is taken as 1, and the area of the area enclosed by the curve position represented by the specified point on the curve and the horizontal axis is used as the life prediction value to generate a life prediction table.
  11. 根据权利要求1或2所述的识别不可靠块的方法,其中,响应于编程命令执行失败,根据坏块编程时间表的数据区的值的大小,使寿命预测表的数据区的对应位置的 值相应增加,以更新寿命预测表,其中,坏块编程时间表同寿命预测表具有相同的表结构。The method for identifying unreliable blocks according to claim 1 or 2, wherein, in response to the execution failure of the programming command, the corresponding position of the data area of the life prediction table is set to the value of the data area of the bad block programming schedule. The value is increased accordingly to update the life prediction table, where the bad block programming schedule has the same table structure as the life prediction table.
  12. 根据权利要求11所述的识别不可靠块的方法,其中,坏块编程时间表的行表头记录了擦写循环次数区间,坏块编程时间表的列表头记录了处理编程命令时间的区间;坏块编程时间表同寿命预测表的数据区一一对应。The method for identifying unreliable blocks according to claim 11, wherein the row header of the bad block programming schedule records the interval of the number of erasing cycles, and the header of the bad block programming schedule records the interval of processing the programming command time; The bad block programming schedule corresponds to the data area of the life prediction table one to one.
  13. 根据权利要求11所述的识别不可靠块的方法,其中,根据执行失败的编程命令所访问的块的擦写次数在坏块编程时间表的表头确定对应的行/列;The method for identifying unreliable blocks according to claim 11, wherein the corresponding row/column is determined in the header of the bad block programming schedule according to the number of erasing and writing of the block accessed by the failed programming command;
    依据执行失败的编程命令所访问的块,查询记录了最近的编程命令的执行时间的编程时间表,以获得该块最近的执行成功的编程命令的执行时间;According to the block accessed by the failed programming command, query the programming time table that records the execution time of the most recent programming command to obtain the execution time of the most recently executed programming command of the block;
    用最近的执行成功的编程命令的执行时间在坏块编程时间表的表头确定对应的列/行;Use the execution time of the most recently successfully executed programming command to determine the corresponding column/row in the header of the bad block programming schedule;
    根据确定的坏块编程时间表的行与列,在确定的坏块编程时间表的对应位置记录执行失败次数,以更新坏块编程时间表。According to the rows and columns of the determined bad block programming schedule, the number of execution failures is recorded in the corresponding position of the determined bad block programming schedule to update the bad block programming schedule.
  14. 根据权利要求12所述的识别不可靠块的方法,其中,将寿命预测表的对应A值的位置的值递增A/(A+LN),并记录LN=LN+A,以使用坏块编程时间表更新寿命预测表;The method for identifying unreliable blocks according to claim 12, wherein the value of the position corresponding to the A value of the life prediction table is incremented by A/(A+LN), and LN=LN+A is recorded to use bad block programming Timetable to update the life prediction table;
    其中,A为坏块编程时间表的数据区的某值,LN为用于构建寿命预测表的对应A值的位置所在的列的数据所使用的编程次数。Among them, A is a certain value in the data area of the bad block programming schedule, and LN is the number of programming used by the data in the column where the position corresponding to the A value is used to construct the life prediction table.
  15. 根据权利要求14所述的识别不可靠块的方法,其中,降低寿命预测表的对应A值的位置所在列的在对应A值的位置之上的其他值,和/或增加寿命预测表的对应A值的位置所在列的在对应A值的位置之下的其他值。The method for identifying unreliable blocks according to claim 14, wherein the position of the corresponding A value in the life prediction table is reduced by other values above the position of the corresponding A value, and/or the correspondence of the life prediction table is increased Other values below the corresponding A value position in the column where the position of the A value is located.
  16. 根据权利要求14所述的识别不可靠块的方法,其中,将寿命预测表的对应Ai值的位置的值递增
    Figure PCTCN2020091803-appb-100001
    并将LAN更新为
    Figure PCTCN2020091803-appb-100002
    The method for identifying unreliable blocks according to claim 14, wherein the value of the position corresponding to the Ai value of the life prediction table is incremented
    Figure PCTCN2020091803-appb-100001
    And update LAN to
    Figure PCTCN2020091803-appb-100002
    其中,Ai为坏块编程时间表的数据区的A列第i个值,i为正整数;n为坏块编程时间表的数据区的A列的数据个数;LAN为构建寿命预测表的LA列所使用的编程次数,寿命预测表的LA列与坏块编程时间表的A列相对应。Among them, Ai is the ith value in column A of the data area of the bad block programming schedule, i is a positive integer; n is the number of data in column A of the data area of the bad block programming schedule; LAN is the number of data in the data area of the bad block programming schedule; The number of programming used in the LA column. The LA column of the life prediction table corresponds to the A column of the bad block programming schedule.
  17. 一种存储设备,包括:控制部件、DRAM和NVM芯片;A storage device, including: control components, DRAM and NVM chips;
    控制部件根据NVM芯片处理编程命令的时间与编程命令所操作的块的擦写次数,查询存储于DRAM或控制部件内部的存储器中的寿命预测表,以获得寿命预测值;The control component queries the life prediction table stored in the DRAM or the internal memory of the control component according to the time for the NVM chip to process the programming command and the number of erasing and writing of the block operated by the programming command to obtain the life prediction value;
    若寿命预测值达到或超过寿命阈值,控制部件则将编程命令所操作的块识别为坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。If the life prediction value reaches or exceeds the life threshold, the control component recognizes the block operated by the programming command as a bad block, and records the identification of the bad block in the bad block table stored in the DRAM.
  18. 根据权利要求17所述的存储设备,其中,寿命预测表的行表头记录了擦写循环次数区间,寿命预测表的列表头记录了处理编程命令时间的区间,寿命预测表的数据区记录了同行表头与列表头指示的内容对应情况下的块的寿命。The storage device according to claim 17, wherein the row header of the life prediction table records the interval of the number of erasing and writing cycles, the header of the life prediction table records the interval of processing the programming command time, and the data area of the life prediction table records The life of the block when the content indicated by the peer header corresponds to the content indicated by the list header.
  19. 根据权利要求18所述的存储设备,其中,控制部件包括:处理器、存储器和介质接口控制器;The storage device according to claim 18, wherein the control component comprises: a processor, a memory, and a media interface controller;
    处理器耦合至介质接口控制器,以获得NVM芯片处理编程命令的时间和编程命令所操作的块的擦写次数,并且通过查询存储于存储器中的寿命预测表获得寿命预测值;The processor is coupled to the media interface controller to obtain the time for the NVM chip to process the programming command and the number of erasing and writing of the block operated by the programming command, and to obtain the life prediction value by querying the life prediction table stored in the memory;
    处理器根据寿命预测值和寿命阈值识别坏块,并将坏块的标识记录于存储于DRAM中的坏块表中。The processor identifies the bad block according to the life prediction value and the life threshold, and records the identification of the bad block in the bad block table stored in the DRAM.
  20. 根据权利要求19所述的存储设备,其中,闪存管理模块向处理器提供记录了闪存管理模块识别出的疑似坏块的监视块表,响应于被访问的块位于监视块表,处理器访问寿命预测表获取该块的寿命预测值。The storage device according to claim 19, wherein the flash memory management module provides the processor with a monitoring block table that records suspected bad blocks identified by the flash memory management module, and in response to the accessed block being located in the monitoring block table, the processor access life The prediction table obtains the life prediction value of the block.
  21. 根据权利要求20所述的存储设备,其中,闪存管理模块将擦除次数高于阈值,和/或读出数据的错误率高于阈值的块作为疑似坏块,并填入监视块表。22. The storage device according to claim 20, wherein the flash memory management module treats blocks whose erasing times are higher than the threshold and/or read data error rate higher than the threshold as suspected bad blocks, and fills them into the monitoring block table.
  22. 根据权利要求21所述的存储设备,其中,闪存管理模块访问DRAM中的坏块表,以获得可用的块写入数据。22. The storage device according to claim 21, wherein the flash memory management module accesses the bad block table in the DRAM to obtain available block write data.
PCT/CN2020/091803 2019-06-14 2020-05-22 Method and device for intelligently identifying unreliable block in non-volatile storage medium WO2020248798A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910514471.7A CN112083873B (en) 2019-06-14 2019-06-14 Method and device for intelligently identifying unreliable blocks of nonvolatile storage medium
CN201910514471.7 2019-06-14

Publications (1)

Publication Number Publication Date
WO2020248798A1 true WO2020248798A1 (en) 2020-12-17

Family

ID=73733948

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/091803 WO2020248798A1 (en) 2019-06-14 2020-05-22 Method and device for intelligently identifying unreliable block in non-volatile storage medium

Country Status (2)

Country Link
CN (2) CN116661694A (en)
WO (1) WO2020248798A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113707206A (en) * 2021-05-17 2021-11-26 深圳市国微电子有限公司 Data protection method and device of FLASH memory, electronic equipment and storage medium

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11748300B2 (en) * 2021-11-18 2023-09-05 Vmware, Inc. Reverse deletion of a chain of snapshots
CN115952113B (en) * 2023-03-15 2023-06-13 力高(山东)新能源技术股份有限公司 EEPROM storage protection method

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510445A (en) * 2009-03-19 2009-08-19 北京中星微电子有限公司 Method and apparatus for storing and reading bad block meter of memory
US20120124273A1 (en) * 2010-11-12 2012-05-17 Seagate Technology Llc Estimating Wear of Non-Volatile, Solid State Memory
CN103559115A (en) * 2013-09-29 2014-02-05 记忆科技(深圳)有限公司 SSD intelligent monitoring system based on SMART
CN104376875A (en) * 2014-11-19 2015-02-25 华为数字技术(苏州)有限公司 Methods and devices for predicting and determining life of storage device
CN106504794A (en) * 2015-09-04 2017-03-15 Hgst荷兰公司 Operating parameter for flash memory device
CN109637576A (en) * 2018-12-17 2019-04-16 华中科技大学 A kind of service life of flash memory prediction technique based on support vector regression

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101510445A (en) * 2009-03-19 2009-08-19 北京中星微电子有限公司 Method and apparatus for storing and reading bad block meter of memory
US20120124273A1 (en) * 2010-11-12 2012-05-17 Seagate Technology Llc Estimating Wear of Non-Volatile, Solid State Memory
CN103559115A (en) * 2013-09-29 2014-02-05 记忆科技(深圳)有限公司 SSD intelligent monitoring system based on SMART
CN104376875A (en) * 2014-11-19 2015-02-25 华为数字技术(苏州)有限公司 Methods and devices for predicting and determining life of storage device
CN106504794A (en) * 2015-09-04 2017-03-15 Hgst荷兰公司 Operating parameter for flash memory device
CN109637576A (en) * 2018-12-17 2019-04-16 华中科技大学 A kind of service life of flash memory prediction technique based on support vector regression

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZHU, WEITING: "Bad Block Identify and Management of NAND FLASH Memory", AUTOMATION PANORAMA, vol. 9, 30 September 2012 (2012-09-30), pages 96 - 98, XP055764696 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113707206A (en) * 2021-05-17 2021-11-26 深圳市国微电子有限公司 Data protection method and device of FLASH memory, electronic equipment and storage medium
CN113707206B (en) * 2021-05-17 2024-03-22 深圳市国微电子有限公司 Data protection method and device of FLASH memory, electronic equipment and storage medium

Also Published As

Publication number Publication date
CN112083873A (en) 2020-12-15
CN116661694A (en) 2023-08-29
CN112083873B (en) 2023-06-20

Similar Documents

Publication Publication Date Title
CN106448737B (en) Method and device for reading flash memory data and solid state drive
US9753653B2 (en) High-priority NAND operations management
KR102095471B1 (en) Data storage device with buffer tenure management
WO2020248798A1 (en) Method and device for intelligently identifying unreliable block in non-volatile storage medium
KR101560469B1 (en) Apparatus including memory system controllers and related methods
TWI601060B (en) Data transmitting method, memory storage device and memory control circuit unit
KR20190004400A (en) Operation method of memory controller and operation method of user device
US10877900B1 (en) Enabling faster and regulated device initialization times
US10223027B2 (en) Optimized garbage collection for solid-state storage devices
CN107797759B (en) Method, device and driver for accessing cache information
TWI512609B (en) Methods for scheduling read commands and apparatuses using the same
KR20180126656A (en) Data storage device and operating method thereof
TW201643721A (en) Method of accessing buffer memory, memory controller and memory storage device
CN109815157B (en) Programming command processing method and device
TWI786288B (en) Storage device, control method therefor and storage medium
CN110515861B (en) Memory device for processing flash command and method thereof
KR20200121068A (en) Data Storage Device and Operation Method Thereof, Controller Therefor
KR20200110862A (en) Data Storage Device and Operation Method Thereof, Controller Using the Same
WO2018041258A1 (en) Method for processing de-allocation command, and storage device
CN108536475B (en) Complete programming command processing method and device
CN111352865B (en) Write caching for memory controllers
CN110865945B (en) Extended address space for memory devices
CN112578993A (en) Method for processing programming error of multi-plane NVM and storage device
CN110928482A (en) Partial page stripes and memory devices using the same and methods thereof
US11941246B2 (en) Memory system, data processing system including the same, and operating method thereof

Legal Events

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

Ref document number: 20823149

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20823149

Country of ref document: EP

Kind code of ref document: A1