US20220066641A1 - Write management on flash memory - Google Patents

Write management on flash memory Download PDF

Info

Publication number
US20220066641A1
US20220066641A1 US17/500,966 US202117500966A US2022066641A1 US 20220066641 A1 US20220066641 A1 US 20220066641A1 US 202117500966 A US202117500966 A US 202117500966A US 2022066641 A1 US2022066641 A1 US 2022066641A1
Authority
US
United States
Prior art keywords
block
erased block
controller
blocks
flash memory
Prior art date
Legal status (The legal status 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 status listed.)
Abandoned
Application number
US17/500,966
Inventor
Jian-Dong Du
Chia-Jung HSIAO
Tsung-Chieh Yang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Silicon Motion Inc
Original Assignee
Silicon Motion Inc
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 Silicon Motion Inc filed Critical Silicon Motion Inc
Priority to US17/500,966 priority Critical patent/US20220066641A1/en
Publication of US20220066641A1 publication Critical patent/US20220066641A1/en
Abandoned legal-status Critical Current

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/061Improving I/O performance
    • 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/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • 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/0653Monitoring storage devices or systems
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7204Capacity control, e.g. partitioning, end-of-life degradation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Definitions

  • the present invention relates to a flash memory, and more particularly, to a method for managing blocks in a flash memory that are going to be written, and an associated controller and storage device.
  • the flash memory controller searches for an available erased block in the flash memory according to the writing command delivered by the host, in order to perform data writing.
  • the flash memory unit may suffer from some unrecoverable physical damages. Therefore, there is a need for a novel writing management scheme to prevent the above problem.
  • an objective of the present invention is to provide a writing management scheme of a flash memory.
  • the present invention uses a portion of blocks divided from a flash memory as a spare pool.
  • the controller selects blocks from the spare pool for data writing in order to complete the writing command delivered by the host.
  • the aforementioned spare pool only preserves very a limited amount of erased blocks, and the rest of space are used to preserve written blocks (e.g. programmed blocks).
  • the controller When the controller receives writing commands from the host, the controller will search for erased blocks preserved in the spare pool in order to write data into them. After the writing is finished, the controller will perform erasing operations on one or more written blocks in the spare pool, and take them as new preserved blocks. In this way, the amount of erased blocks within the blocks of the flash memory can be decreased.
  • the controller creates the time file (e.g. the timestamp) thereof for each erased block preserved in the spare pool, in order to for monitor the duration the block remains in the erase state. Once the duration of said erased block exceeds a specific threshold, the controller will perform writing on this erased block, and choose one or more blocks among the written blocks in the spare pool, in order to reduce the extent of physical damages.
  • time file e.g. the timestamp
  • An embodiment of the present invention proposes a method for managing a flash memory module.
  • the flash memory module comprises a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool.
  • the method comprises: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • An embodiment of the present invention proposes a controller for managing a flash memory module, wherein the flash memory module comprises a plurality of blocks, a portion of the plurality of blocks belongs to a spare pool.
  • the controller comprises a storage unit and a processing unit.
  • the storage unit is arranged to store a program code.
  • the processing unit is coupled to the storage unit, and is arranged to read the program code from the storage unit in order to execute the program code to perform following operations: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • An embodiment of the present invention proposes a storage device which comprises a flash memory module and a controller.
  • the flash memory module comprises a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool.
  • the controller is arranged to access the flash memory module, and comprises a storage unit and a processing unit.
  • the storage unit is arranged to store a program code.
  • the processing unit is coupled to the storage unit, wherein the processing unit is arranged to read the program code from the storage unit in order to execute the program code, and thereby performs following operations: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • FIG. 1 is a diagram illustrating the architecture of a storage device, an associated controller and a flash memory module according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating the interactions between a flash memory module and a spare pool according to an embodiment of the present invention.
  • FIG. 3 is a flowchart illustrating a method for managing the writing of blocks of a flash memory according to an embodiment of the present invention.
  • FIG. 4 is a diagram illustrating the interactions between a main control command and a memory-operating command according to an embodiment of the present invention.
  • any examples or illustrations given herein are not to be regarded in anyway as restrictions on, limits to, or express definitions of any term or terms with which they are utilized. Instead, these examples or illustrations are to be regarded as being described with respect to one particular embodiment and as being illustrative only. Those of ordinary skill in the art will appreciate that any term or terms with which these examples or illustrations are utilized will encompass other embodiments which may or may not be given therewith or elsewhere in the specification and all such embodiments are intended to be included within the scope of that term or terms. Language designating such non-limiting examples and illustrations includes, but is not limited to: “for example,” “for instance,” “e.g.,” and “in one embodiment.”
  • each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s).
  • each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
  • These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • FIG. 1 illustrates the architecture of a storage device 100 , an associated controller 120 and a flash memory module 130 according to an embodiment of the present invention.
  • the storage device 100 comprises a controller 120 and a flash memory module 130 , and is controlled by a host device 200 , wherein the storage device 100 may be part of the host device 200 .
  • the host device 200 may comprise at least one central processing unit (CPU) (not shown) to control operations of the host device 200 via operating an operating system (OS) and an application, in order to interact with peripheral devices.
  • the storage device 100 may provide storage space for the host device 200 as well as program codes and the data necessary for the storing operations of the OS and various applications.
  • Examples of the host device 50 may comprise (but are not limited to): a multifunctional mobile phone, tablet, wearable device and personal computer (such as a desktop or laptop computer).
  • Examples of the storage device 100 may comprise (but are not limited to): solid state drives (SSD) and various types of embedded storage devices (e.g. the storage devices that conform to the UFS or EMMC specifications).
  • the controller 120 may access the flash memory module 130 .
  • the flash memory module 130 may be a stereo (also dubbed as 3D) NAND flash, and may comprise at least one flash memory chip, but this is not meant to be a limitation of the present invention.
  • Each flash memory chip may comprises a plurality of blocks, and the controller 120 may use “block” as the unit of performs data erasing on the flash memory module 130 . Further, a block may record a specific number of pages, and the controller 120 may use “page” as the unit to write data into the flash memory module 130 .
  • the controller 120 may comprise a processing circuit (e.g. the microprocessor 122 and the storage unit 124 ), such as a read only memory (ROM).
  • ROM read only memory
  • the ROM 124 is mainly used for storing program codes and specific data
  • the microprocessor 122 is used for executing program codes to control the access of the flash memory module 130 .
  • the controller 120 may comprise one or more interface logics for assisting the operations described later, such as control logics, buffers, etc., but those elements are omitted here for brevity.
  • the host device 200 may indirectly access the storage device 100 by transmitting a host command and the corresponding logic address to the controller 120 .
  • the controller 120 receives the host command (e.g. a reading command or a writing command) as well as the logic address, and translates the host command into a memory-operating command and then uses the operating command to control the flash memory module 130 to perform reading, writing, programing or erasing on memory units, pages or blocks of a specific physical address in the flash memory module 130 .
  • the controller 120 may also execute the program code, and/or execute a series of operations according to data in the storage unit 124 in order to perform a series of operations to implement the specific operation mentioned in the follows.
  • FIG. 2 is a diagram illustrating the interactions between a flash memory module and a spare pool according to an embodiment of the present invention.
  • the flash memory module 130 comprises multiple blocks, and these blocks may be distributed in the flash memory chips 130 _ 1 - 130 _N.
  • some blocks in the flash memory module 130 may be categorized as a spare pool 138 .
  • the spare pool 138 may comprise the blocks SB 0 -SBQ, and theses blocks may either store no data or may store invalid data (e.g. which is also stored in other blocks and does not need to be further updated).
  • all the writing commands issued from the host device 200 will trigger the controller 120 to select one or more blocks from the spare pool 138 and perform writing (e.g.
  • the controller 120 will preserve at least one erased block (e.g. block SB_ 0 ) which is in the erase state in the spare pool 138 , and this is because erasing a block may consume a considerable amount of time. However, the lagging resulted from the writing operation may be mitigated by performing erasing operations.
  • the controller 120 will write the data issued from the host into the erased block SB_ 0 which is preserved in the spare poop 138 . Further, before the host device 200 issues the next writing command to the controller 120 , the controller 120 will seek for at least one block (e.g. the block SB_ 3 ) from the written/programmed blocks SB_ 1 -SB_Q in the spare poop 138 , and then erase the at least one block for follow-up writing operations.
  • FIG. 3 is a flowchart illustrating a method for managing writing of blocks of a flash memory according to an embodiment of the present invention, and can be summarized as follows:
  • Step 210 Preserve at least one erased block.
  • Step 220 Create a timestamp of the at least one erased block.
  • Step 230 Determine whether the erasing period of the at least one erased block exceeds a threshold.
  • Step 240 Write the at least one erased block.
  • Step 250 Select at least one written block for replacing the erased block.
  • Step 210 the controller 120 performs erasing an operation on at least one written block in the spare poop 138 , to make the at least one written block (e.g. SB_ 7 ) be converted into an erase state from a written dfcstate (e.g. a programmed state), as a preparation for future writing operations. Step 210 may take place before the host device 200 issues a writing command, or after the controller 120 performs writing on another erased block.
  • Step 220 the controller 120 creates a timestamp of the at least one erased block.
  • Step 230 the controller 120 refers to the time information and system time in the timestamp to determine whether the time the at least one erased block is in the erase state exceeds a threshold.
  • Step 230 This step is meant to protect erased blocks from suffering, to prevent it from suffering unrecoverable physical damage. If the determination result in Step 230 is “Yes”, the flow goes to Step 230 ; if not, the flow stays in the current step. In Step 240 , since the controller 120 already finds that the erasing period of the at least one erased block has exceeded the threshold, which suggests that the erased block is in danger of being damaged, the controller 120 will perform writing on the at least one erased block to convert the block from the erase state to the written state, in order to prevent some potential damages.
  • the controller 120 may utilize the opportunity of writing to erased blocks, and perform a garbage collection operation in the meantime.
  • the controller 120 writes to the at least one erased block according to the data collected from the valid pages of the blocks DB 0 -DBK, in order to convert the at least one erased block into a written block.
  • the controller 120 will search for at least one written block (e.g. SB_ 4 ) in the spare poop 138 to replace the aforementioned at least one erased block, and then the flow goes back to Step 210 to perform erasing operation on the block, as preparations for the follow-up writing command.
  • the present invention may effectively protect the memory unit in the flash memory module 130 , in order to prevent it from being damaged due to staying in the erase state for too long.
  • the present invention since the present invention has preserved the erased block in the spare pool, the latency of writing data can be reduced, that is, there is no need for further waiting for the time of erasing the written block.
  • FIG. 4 is a diagram illustrating the interactions between a main control commands and a memory-operating command according to an embodiment of the present invention.
  • the controller 120 may access the flash memory chips 130 _ 1 - 130 _N in the flash memory module 130 according to the access types, addresses and related data comprised in the main control command and converting the above information into a corresponding memory-operating command.
  • the management on the erased block is independent from the main control command of the host device 200 , and is performed according to the timestamp of erased blocks. Hence, even if the host device 200 does not issue the main control command to the controller 120 , events (such as an alternative operation of the erased blocks as well as the garbage collection operation) may still be triggered due to the timestamp of the erased blocks in the spare pool 138 exceeding the threshold. Hence, in an embodiment, the controller 120 may issue the following consecutive command sequences to the flash memory chip 130 _ 1 - 130 _N without receiving any access command from the host device 200 :
  • Step 240 in the aforementioned process will be triggered to write to erased blocks.
  • writing to erased blocks may also trigger the garbage collection operation in the meantime.
  • the first reading command in the aforementioned command sequence is to perform the garbage collection operation, in order to read data from the valid pages in the blocks DB 0 -DBK that located outside the spare pool 138 .
  • the readout data will later be transmitted to the controller 120 to be processed with error correction.
  • the processed data i.e. the second written command in the aforementioned command sequence
  • the processed data i.e. the second written command in the aforementioned command sequence
  • Step 250 the flow goes to Step 250 to select another block from the spare pool to erase, as an alternative of the erased blocks, i.e. the third erase command in the aforementioned command sequence.
  • the main control command may trigger the controller 120 to generate associated the memory-operating command, but the controller 120 will remain periodically generating spontaneous memory-operating commands. Therefore, a feature of the present invention lies in that even if the host device 200 has not yet to issue an access command to the controller 120 , the controller 120 can nonetheless spontaneously issue successive command sequences (such as those for reading, writing and erasing) to the flash memory module 130 .
  • the present invention may effectively reduce the latency of writing data (by preserving at least one erased block in the spare pool), and may also prevent potential physical damages (by limiting the time the blocks stay in the erase state). Meanwhile, the management mechanism may further combine with the garbage collection operation to perform more suitable writing on the erased blocks or to displace them.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)
  • Memory System (AREA)

Abstract

A method for use in management of a flash memory module is provided. The flash memory module has a plurality of blocks, wherein a portion of the blocks belong to a spare pool. The method includes: preserving at least one erased block in the spare pool for a write operation; monitoring an erasing period regarding the at least one erased block; and performing a replacement operation to replace the at least one erased block when the erase time exceeds a threshold.

Description

    CROSS REFERENCE TO RELATED APPLICATIONS
  • This application is a continuation application of U.S. application Ser. No. 16/735,709, filed on 2020 Jan. 7, the contents of which are incorporated herein by reference.
  • BACKGROUND OF THE INVENTION 1. Field of the Invention
  • The present invention relates to a flash memory, and more particularly, to a method for managing blocks in a flash memory that are going to be written, and an associated controller and storage device.
  • 2. Description of the Prior Art
  • In general, the flash memory controller searches for an available erased block in the flash memory according to the writing command delivered by the host, in order to perform data writing. However, if being under the erase state for too long, the flash memory unit may suffer from some unrecoverable physical damages. Therefore, there is a need for a novel writing management scheme to prevent the above problem.
  • SUMMARY OF THE INVENTION
  • In view of the above, an objective of the present invention is to provide a writing management scheme of a flash memory. The present invention uses a portion of blocks divided from a flash memory as a spare pool. The controller selects blocks from the spare pool for data writing in order to complete the writing command delivered by the host. Note that the aforementioned spare pool only preserves very a limited amount of erased blocks, and the rest of space are used to preserve written blocks (e.g. programmed blocks). When the controller receives writing commands from the host, the controller will search for erased blocks preserved in the spare pool in order to write data into them. After the writing is finished, the controller will perform erasing operations on one or more written blocks in the spare pool, and take them as new preserved blocks. In this way, the amount of erased blocks within the blocks of the flash memory can be decreased.
  • In another aspect, the controller creates the time file (e.g. the timestamp) thereof for each erased block preserved in the spare pool, in order to for monitor the duration the block remains in the erase state. Once the duration of said erased block exceeds a specific threshold, the controller will perform writing on this erased block, and choose one or more blocks among the written blocks in the spare pool, in order to reduce the extent of physical damages.
  • An embodiment of the present invention proposes a method for managing a flash memory module. The flash memory module comprises a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool. The method comprises: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • An embodiment of the present invention proposes a controller for managing a flash memory module, wherein the flash memory module comprises a plurality of blocks, a portion of the plurality of blocks belongs to a spare pool. The controller comprises a storage unit and a processing unit. The storage unit is arranged to store a program code. The processing unit is coupled to the storage unit, and is arranged to read the program code from the storage unit in order to execute the program code to perform following operations: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • An embodiment of the present invention proposes a storage device which comprises a flash memory module and a controller. The flash memory module comprises a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool. The controller is arranged to access the flash memory module, and comprises a storage unit and a processing unit. The storage unit is arranged to store a program code. The processing unit is coupled to the storage unit, wherein the processing unit is arranged to read the program code from the storage unit in order to execute the program code, and thereby performs following operations: preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block; monitoring an erasing period of the at least one erased block; and when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
  • These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • FIG. 1 is a diagram illustrating the architecture of a storage device, an associated controller and a flash memory module according to an embodiment of the present invention.
  • FIG. 2 is a diagram illustrating the interactions between a flash memory module and a spare pool according to an embodiment of the present invention.
  • FIG. 3 is a flowchart illustrating a method for managing the writing of blocks of a flash memory according to an embodiment of the present invention.
  • FIG. 4 is a diagram illustrating the interactions between a main control command and a memory-operating command according to an embodiment of the present invention.
  • DETAILED DESCRIPTION
  • In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present embodiments. It will be apparent, however, to one having ordinary skill in the art that the specific detail need not be employed to practice the present embodiments. In other instances, well known materials or methods have not been described in detail in order to avoid obscuring the present embodiments.
  • Additionally, any examples or illustrations given herein are not to be regarded in anyway as restrictions on, limits to, or express definitions of any term or terms with which they are utilized. Instead, these examples or illustrations are to be regarded as being described with respect to one particular embodiment and as being illustrative only. Those of ordinary skill in the art will appreciate that any term or terms with which these examples or illustrations are utilized will encompass other embodiments which may or may not be given therewith or elsewhere in the specification and all such embodiments are intended to be included within the scope of that term or terms. Language designating such non-limiting examples and illustrations includes, but is not limited to: “for example,” “for instance,” “e.g.,” and “in one embodiment.”
  • The flowchart and block diagrams in the flow diagrams illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present embodiments. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It will also be noted that each block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions. These computer program instructions may also be stored in a computer-readable medium that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable medium produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
  • FIG. 1 illustrates the architecture of a storage device 100, an associated controller 120 and a flash memory module 130 according to an embodiment of the present invention. As shown in FIG. 1, the storage device 100 comprises a controller 120 and a flash memory module 130, and is controlled by a host device 200, wherein the storage device 100 may be part of the host device 200. The host device 200 may comprise at least one central processing unit (CPU) (not shown) to control operations of the host device 200 via operating an operating system (OS) and an application, in order to interact with peripheral devices. The storage device 100 may provide storage space for the host device 200 as well as program codes and the data necessary for the storing operations of the OS and various applications. Examples of the host device 50 may comprise (but are not limited to): a multifunctional mobile phone, tablet, wearable device and personal computer (such as a desktop or laptop computer). Examples of the storage device 100 may comprise (but are not limited to): solid state drives (SSD) and various types of embedded storage devices (e.g. the storage devices that conform to the UFS or EMMC specifications).
  • The controller 120 may access the flash memory module 130. In one embodiment, the flash memory module 130 may be a stereo (also dubbed as 3D) NAND flash, and may comprise at least one flash memory chip, but this is not meant to be a limitation of the present invention. Each flash memory chip may comprises a plurality of blocks, and the controller 120 may use “block” as the unit of performs data erasing on the flash memory module 130. Further, a block may record a specific number of pages, and the controller 120 may use “page” as the unit to write data into the flash memory module 130.
  • The controller 120 may comprise a processing circuit (e.g. the microprocessor 122 and the storage unit 124), such as a read only memory (ROM). The ROM 124 is mainly used for storing program codes and specific data, and the microprocessor 122 is used for executing program codes to control the access of the flash memory module 130. Further, the controller 120 may comprise one or more interface logics for assisting the operations described later, such as control logics, buffers, etc., but those elements are omitted here for brevity. After reading the following contents, one skilled in the art should be readily to know how to properly combine well known circuits with the circuit elements and architectures disclosed in the present invention, and can thereby implement various operations and associated applications mentioned in the embodiments of the present invention.
  • In this embodiment, the host device 200 may indirectly access the storage device 100 by transmitting a host command and the corresponding logic address to the controller 120. The controller 120 receives the host command (e.g. a reading command or a writing command) as well as the logic address, and translates the host command into a memory-operating command and then uses the operating command to control the flash memory module 130 to perform reading, writing, programing or erasing on memory units, pages or blocks of a specific physical address in the flash memory module 130. Moreover, the controller 120 may also execute the program code, and/or execute a series of operations according to data in the storage unit 124 in order to perform a series of operations to implement the specific operation mentioned in the follows.
  • FIG. 2 is a diagram illustrating the interactions between a flash memory module and a spare pool according to an embodiment of the present invention. As shown in FIG. 2, the flash memory module 130 comprises multiple blocks, and these blocks may be distributed in the flash memory chips 130_1-130_N. In addition, some blocks in the flash memory module 130 may be categorized as a spare pool 138. The spare pool 138 may comprise the blocks SB0-SBQ, and theses blocks may either store no data or may store invalid data (e.g. which is also stored in other blocks and does not need to be further updated). In the present invention, all the writing commands issued from the host device 200 will trigger the controller 120 to select one or more blocks from the spare pool 138 and perform writing (e.g. writing data into one or more pages of a block) according to the data comprised in the writing commands that are issued from the host device 200. When one or more blocks are written due to the writing commands issued from the host device 200, those blocks will be removed from the spare pool 138, and then the controller 120 will select one or more blocks storing invalid data among the blocks DB0-DBK which are not currently included in the spare pool 138, in order to compensate the spare pool 138.
  • In the present invention, the controller 120 will preserve at least one erased block (e.g. block SB_0) which is in the erase state in the spare pool 138, and this is because erasing a block may consume a considerable amount of time. However, the lagging resulted from the writing operation may be mitigated by performing erasing operations. When the host device 200 issues writing commands to the controller 120, the controller 120 will write the data issued from the host into the erased block SB_0 which is preserved in the spare poop 138. Further, before the host device 200 issues the next writing command to the controller 120, the controller 120 will seek for at least one block (e.g. the block SB_3) from the written/programmed blocks SB_1-SB_Q in the spare poop 138, and then erase the at least one block for follow-up writing operations.
  • As mentioned above, however, if a block stays in the erase state too long, units thereof might suffer from irreversible physical damages. Hence, the method of the present invention may manage the erased blocks in the spare pool, and after a certain amount of time, those erased blocks will be written with data so as to prevent potential damages. Please refer to the FIG. 3, which is a flowchart illustrating a method for managing writing of blocks of a flash memory according to an embodiment of the present invention, and can be summarized as follows:
  • Step 210: Preserve at least one erased block.
  • Step 220: Create a timestamp of the at least one erased block.
  • Step 230: Determine whether the erasing period of the at least one erased block exceeds a threshold.
  • Step 240: Write the at least one erased block.
  • Step 250: Select at least one written block for replacing the erased block.
  • In Step 210, the controller 120 performs erasing an operation on at least one written block in the spare poop 138, to make the at least one written block (e.g. SB_7) be converted into an erase state from a written dfcstate (e.g. a programmed state), as a preparation for future writing operations. Step 210 may take place before the host device 200 issues a writing command, or after the controller 120 performs writing on another erased block. In Step 220, the controller 120 creates a timestamp of the at least one erased block. In Step 230, the controller 120 refers to the time information and system time in the timestamp to determine whether the time the at least one erased block is in the erase state exceeds a threshold. This step is meant to protect erased blocks from suffering, to prevent it from suffering unrecoverable physical damage. If the determination result in Step 230 is “Yes”, the flow goes to Step 230; if not, the flow stays in the current step. In Step 240, since the controller 120 already finds that the erasing period of the at least one erased block has exceeded the threshold, which suggests that the erased block is in danger of being damaged, the controller 120 will perform writing on the at least one erased block to convert the block from the erase state to the written state, in order to prevent some potential damages.
  • Further, according to an embodiment, the controller 120 may utilize the opportunity of writing to erased blocks, and perform a garbage collection operation in the meantime. The controller 120 writes to the at least one erased block according to the data collected from the valid pages of the blocks DB0-DBK, in order to convert the at least one erased block into a written block. After that, the flow goes to Step 250, the controller 120 will search for at least one written block (e.g. SB_4) in the spare poop 138 to replace the aforementioned at least one erased block, and then the flow goes back to Step 210 to perform erasing operation on the block, as preparations for the follow-up writing command.
  • As can be seen from the above, the present invention may effectively protect the memory unit in the flash memory module 130, in order to prevent it from being damaged due to staying in the erase state for too long. In another aspect, since the present invention has preserved the erased block in the spare pool, the latency of writing data can be reduced, that is, there is no need for further waiting for the time of erasing the written block.
  • Moreover, a feature of the present invention is about how the controller 120 controls the flash memory module 130, which can be referred to FIG. 4. FIG. 4 is a diagram illustrating the interactions between a main control commands and a memory-operating command according to an embodiment of the present invention. When the host device 200 issues a main control command (e.g. a read command or a write command) to the controller 120, the controller 120 may access the flash memory chips 130_1-130_N in the flash memory module 130 according to the access types, addresses and related data comprised in the main control command and converting the above information into a corresponding memory-operating command.
  • In the present invention, the management on the erased block is independent from the main control command of the host device 200, and is performed according to the timestamp of erased blocks. Hence, even if the host device 200 does not issue the main control command to the controller 120, events (such as an alternative operation of the erased blocks as well as the garbage collection operation) may still be triggered due to the timestamp of the erased blocks in the spare pool 138 exceeding the threshold. Hence, in an embodiment, the controller 120 may issue the following consecutive command sequences to the flash memory chip 130_1-130_N without receiving any access command from the host device 200:
  • Read: 00h ALE 30h
  • Write: 80h ALE 10h
  • Erase: 60h ALE D0h
  • Initially, if the timestamp of an erased block exceeds a duration limit, Step 240 in the aforementioned process will be triggered to write to erased blocks. As mentioned above, writing to erased blocks may also trigger the garbage collection operation in the meantime. Hence, the first reading command in the aforementioned command sequence is to perform the garbage collection operation, in order to read data from the valid pages in the blocks DB0-DBK that located outside the spare pool 138. The readout data will later be transmitted to the controller 120 to be processed with error correction. Next, the processed data (i.e. the second written command in the aforementioned command sequence) will be written to erased blocks. Lastly, the flow goes to Step 250 to select another block from the spare pool to erase, as an alternative of the erased blocks, i.e. the third erase command in the aforementioned command sequence. As can be further seen from the timing diagram in bottom of FIG. 4, the main control command may trigger the controller 120 to generate associated the memory-operating command, but the controller 120 will remain periodically generating spontaneous memory-operating commands. Therefore, a feature of the present invention lies in that even if the host device 200 has not yet to issue an access command to the controller 120, the controller 120 can nonetheless spontaneously issue successive command sequences (such as those for reading, writing and erasing) to the flash memory module 130.
  • As mentioned above, via proper management for the spare pool, the present invention may effectively reduce the latency of writing data (by preserving at least one erased block in the spare pool), and may also prevent potential physical damages (by limiting the time the blocks stay in the erase state). Meanwhile, the management mechanism may further combine with the garbage collection operation to perform more suitable writing on the erased blocks or to displace them.
  • Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.

Claims (15)

What is claimed is:
1. A method for managing a flash memory module, the flash memory module comprises a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool, and the method comprises:
preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block;
monitoring an erasing period of the at least one erased block; and
when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
2. The method of claim 1, wherein the step of monitoring the erasing period of the at least one erased block comprises:
creating a timestamp associated with the at least one erased block; and
periodically performing comparison on the threshold according to time information in the timestamp.
3. The method of claim 1, wherein when the erasing period exceeds the threshold, the method further comprises:
choosing a first block from the plurality of written blocks in the spare pool, and performing an erasing operation on the first block; and
adding a second block storing invalid data to the spare pool after the at least one erased block is removed.
4. The method of claim 1, further comprising:
performing a garbage collection operation on a plurality of blocks in the flash memory module; and
when the erasing period exceeds the threshold, utilizing recycled data outputted by the garbage collection operation to perform writing on the at least one erased block.
5. The method of claim 1, further comprising:
if an access command delivered by a host is not received, automatically reading specific data from the flash memory module, and writing the specific data back to the flash memory module.
6. A controller for managing a flash memory module, wherein the flash memory module comprises a plurality of blocks, a portion of the plurality of blocks belongs to a spare pool, and the controller comprises:
a storage unit, arranged to store a program code; and
a processing unit, coupled to the storage unit, the processing unit arranged to read the program code from the storage unit in order to execute the program code to perform following operations:
preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block;
monitoring an erasing period of the at least one erased block; and
when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
7. The controller of claim 6, wherein the processing unit executes the program code to create a timestamp associated with the at least one erased block and periodically perform comparison on the threshold according to time information in the timestamp.
8. The controller of claim 6, wherein when the erasing period exceeds the threshold, the processing unit executes the program code to choose a first block from the plurality of written blocks in the spare pool in order to perform an erasing operation on the first block; and when the erasing period exceeds the threshold, the processing unit executes the program code to add a second block storing invalid data to the spare pool after the at least one erased block is removed.
9. The controller of claim 6, wherein the processing unit executes the program code to perform a garbage collection operation on a plurality of blocks in the flash memory module; and when the erasing period exceeds the threshold, the processing unit utilizes recycled data outputted by the garbage collection operation to perform writing on the at least one erased block to execute the alternative operation.
10. The controller of claim 6, wherein the controller is controlled by a host, and the processing unit executes the program code to automatically read specific data from the flash memory module when an access command delivered by the host is not received, and write the specific data back to the flash memory module.
11. A storage device, comprising:
a flash memory module, comprising a plurality of blocks, wherein a portion of the plurality of blocks belongs to a spare pool; and
a controller, arranged to access the flash memory module, and comprising:
a storage unit, arranged to store a program code; and
a processing unit, coupled to the storage unit, wherein the processing unit is arranged to read the program code from the storage unit in order to execute the program code, and thereby perform following operations:
preserving at least one erased block in the spare pool to facilitate a writing operation, wherein the spare pool comprises at least one erased block and a plurality of written blocks with invalid data, and a number of the written blocks is greater than a number of the at least one erased block;
monitoring an erasing period of the at least one erased block; and
when the erasing period exceeds a threshold, moving valid data stored in a certain block that does not belong to the spare pool to the at least one erased block and removing the at least one erased block from the spare pool.
12. The storage device of claim 11, wherein the controller is arranged to create a timestamp associated with the at least one erased block; and the controller periodically performs comparison on the threshold according to time information in the timestamp.
13. The storage device of claim 11, wherein when the erasing period exceeds the threshold, the controller is arranged to choose a first block from the plurality of written blocks in the spare pool in order to perform an erasing operation on the first block; and when the erasing period exceeds the threshold, the controller is arranged to add a second block storing invalid data to the spare pool after the at least one erased block is removed.
14. The storage device of claim 13, wherein when the erasing period exceeds the threshold, the controller performs a garbage collection operation on a plurality of blocks in the flash memory module; and the controller utilizes recycled data outputted by the garbage collection operation to perform writing on the at least one erased block.
15. The storage device of claim 14, wherein the controller is controlled by a host, and when an access command delivered by the host is not received, the controller automatically reads specific data from the flash memory module, and writes the specific data back to the flash memory module.
US17/500,966 2019-04-01 2021-10-14 Write management on flash memory Abandoned US20220066641A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US17/500,966 US20220066641A1 (en) 2019-04-01 2021-10-14 Write management on flash memory

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
TW108111476A TWI718516B (en) 2019-04-01 2019-04-01 Write mangement for protecting erased blocks in flash memory
TW108111476 2019-04-01
US16/735,709 US11175841B2 (en) 2019-04-01 2020-01-07 Write management of flash memory
US17/500,966 US20220066641A1 (en) 2019-04-01 2021-10-14 Write management on flash memory

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US16/735,709 Continuation US11175841B2 (en) 2019-04-01 2020-01-07 Write management of flash memory

Publications (1)

Publication Number Publication Date
US20220066641A1 true US20220066641A1 (en) 2022-03-03

Family

ID=72604604

Family Applications (2)

Application Number Title Priority Date Filing Date
US16/735,709 Active 2040-01-12 US11175841B2 (en) 2019-04-01 2020-01-07 Write management of flash memory
US17/500,966 Abandoned US20220066641A1 (en) 2019-04-01 2021-10-14 Write management on flash memory

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US16/735,709 Active 2040-01-12 US11175841B2 (en) 2019-04-01 2020-01-07 Write management of flash memory

Country Status (3)

Country Link
US (2) US11175841B2 (en)
CN (1) CN111767007B (en)
TW (1) TWI718516B (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230075055A1 (en) * 2021-09-08 2023-03-09 Quanta Computer Inc. Method and system for providing life cycle alert for flash memory device
US11914882B2 (en) * 2022-04-06 2024-02-27 Dell Products L.P. Data protection against mass deletion based on data storage period

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7089349B2 (en) * 2003-10-28 2006-08-08 Sandisk Corporation Internal maintenance schedule request for non-volatile memory system
US8706990B2 (en) * 2003-10-28 2014-04-22 Sandisk Technologies Inc. Adaptive internal table backup for non-volatile memory system
US7441071B2 (en) * 2006-09-28 2008-10-21 Sandisk Corporation Memory systems for phased garbage collection using phased garbage collection block or scratch pad block as a buffer
JP4461170B2 (en) * 2007-12-28 2010-05-12 株式会社東芝 Memory system
US8040744B2 (en) * 2009-01-05 2011-10-18 Sandisk Technologies Inc. Spare block management of non-volatile memories
US8694754B2 (en) * 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
CN102981966B (en) * 2012-11-09 2016-04-06 青岛海信宽带多媒体技术有限公司 A kind of date storage method of equilibrium assignment Flash storage block
CN103488578B (en) * 2012-12-28 2016-05-25 晶天电子(深圳)有限公司 Virtual memory facilities (VMD) application/driver
US9965199B2 (en) * 2013-08-22 2018-05-08 Sandisk Technologies Llc Smart dynamic wear balancing between memory pools
US9329797B2 (en) * 2013-12-30 2016-05-03 Sandisk Technologies Inc. Method and system for adjusting block erase or program parameters based on a predicted erase life
TWI539461B (en) * 2014-06-11 2016-06-21 晶豪科技股份有限公司 The method of prevent write time degradation for non-volatile bits long-term cycling
US20150379678A1 (en) * 2014-06-25 2015-12-31 Doa'a M. Al-otoom Techniques to Compose Memory Resources Across Devices and Reduce Transitional Latency
US9990279B2 (en) * 2014-12-23 2018-06-05 International Business Machines Corporation Page-level health equalization
US10339044B2 (en) * 2016-03-30 2019-07-02 Sandisk Technologies Llc Method and system for blending data reclamation and data integrity garbage collection
CN108874309B (en) * 2018-05-25 2021-07-23 新华三技术有限公司 Method and device for managing physical blocks in solid state disk

Also Published As

Publication number Publication date
US20200310648A1 (en) 2020-10-01
CN111767007A (en) 2020-10-13
US11175841B2 (en) 2021-11-16
CN111767007B (en) 2023-12-22
TW202038100A (en) 2020-10-16
TWI718516B (en) 2021-02-11

Similar Documents

Publication Publication Date Title
US10031698B2 (en) Method of wear leveling for data storage device
US8392649B2 (en) Memory storage device, controller, and method for responding to host write commands triggering data movement
US9280460B2 (en) Data writing method, memory control circuit unit and memory storage apparatus
CN109933545B (en) Data storage device and data processing method of memory device
US20220066641A1 (en) Write management on flash memory
US9772797B2 (en) Buffer memory management method, memory control circuit unit and memory storage device
JP2013225368A (en) Storage control device, storage device, information processing system, and processing method in them
US8667209B2 (en) Non-volatile memory access method and system, and non-volatile memory controller
US10203899B2 (en) Method for writing data into flash memory apparatus, flash memory apparatus, and storage system
US20140372668A1 (en) Data writing method, memory controller and memory storage apparatus
US20200349065A1 (en) Data storage devices and data processing methods
US11573734B2 (en) Method for improving read-retry of flash memory and related controller and storage device
US8819332B2 (en) Nonvolatile storage device performing periodic error correction during successive page copy operations
US20120191938A1 (en) Information processing apparatus and write control method
US9304906B2 (en) Memory system, controller and control method of memory
US20160110112A1 (en) Data writing method, memoey control circuit unit and memory storage apparatus
US10346040B2 (en) Data merging management method based on data type, memory storage device and memory control circuit unit
US11580018B2 (en) Method and apparatus for page validity management and related storage system
US10191659B2 (en) Buffer memory management method, memory control circuit unit and memory storage device
CN103389943A (en) Control device, storage device, and storage control method
TWI771854B (en) Write mangement for protecting erased blocks in flash memory
US10846019B2 (en) Semiconductor device
CN101692211A (en) Method for managing Flash data
US20140281160A1 (en) Non-volatile semiconductor storage apparatus
US11809314B2 (en) Method and apparatus for performing access control of memory device with aid of multi-stage garbage collection management

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION

STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION