CN111488118B - 管理闪存模块的方法及相关的闪存控制器与电子装置 - Google Patents

管理闪存模块的方法及相关的闪存控制器与电子装置 Download PDF

Info

Publication number
CN111488118B
CN111488118B CN201910221067.0A CN201910221067A CN111488118B CN 111488118 B CN111488118 B CN 111488118B CN 201910221067 A CN201910221067 A CN 201910221067A CN 111488118 B CN111488118 B CN 111488118B
Authority
CN
China
Prior art keywords
flash memory
blocks
block
time information
specific
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.)
Active
Application number
CN201910221067.0A
Other languages
English (en)
Other versions
CN111488118A (zh
Inventor
杜建东
蔡璧如
杨宗杰
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
Publication of CN111488118A publication Critical patent/CN111488118A/zh
Application granted granted Critical
Publication of CN111488118B publication Critical patent/CN111488118B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/0658Controller construction arrangements
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/0608Saving storage space on 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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]
    • 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/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/81Threshold
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • 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
    • 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

Abstract

本发明公开了管理闪存模块的方法,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一区块包括多个数据页,所述方法包括:使用一时间管理电路来产生目前的时间信息;当数据被写入至所述多个区块中任一区块时,记录所述时间管理电路所产生的所述时间信息;以及根据每一区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。本发明通过根据每一区块的无效数据页数量和区块的时间信息来决定垃圾收集操作的区块选择其优先级,可让同时具有无效数据页数量较多、可能有数据保存或是读取干扰问题的区块优先进行垃圾收集操作,以提升有效存储空间和改善数据质量。

Description

管理闪存模块的方法及相关的闪存控制器与电子装置
技术领域
本发明是关于闪存控制器的改善。
背景技术
随着闪存技术的演进,闪存芯片中的记忆单元由平面排列的方式改变为多层堆栈的模式,以使得单一芯片可以包括更多的记忆单元,以提升闪存芯片的容量。然而,上述立体闪存(3D flash memory)会遭遇到数据保存(data retention)上的问题,也就是说,当数据写入到闪存芯片后不久,其数据质量便会大幅下滑,而可能使得数据无法被正确地读取。此外,若是区块内的数据太常被读取,则也有可能会受到读取干扰(read disturbance)的问题,以使得数据质量变差。因此,如何提出一种有效率的管理方法来避免数据保存上的问题是一个重要的技术方向。
发明内容
因此,本发明提出了一种管理闪存的方法,其可以在决定垃圾收集操作的优先级的判断上加入区块在存储数据时的时间信息,以有效率地解决区块的数据保存以及读取干扰上的问题。
在本发明的一个实施例中,公开了一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一个区块包括多个数据页,且所述闪存控制器包括有一只读存储器、一微处理器以及一时间管理电路。所述只读存储器用来存储一程序代码,所述微处理器用来执行所述程序代码以控制对所述闪存模块的存取,且所述时间管理电路用以产生目前的一时间信息,其中当所述微处理器将数据写入至所述多个区块中任一区块时,所述微处理器记录所述时间管理电路所产生的所述时间信息;以及所述微处理器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
在本发明的另一个实施例中,公开了一种管理一闪存模块的方法,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一个区块包括多个数据页,且所述方法包括有以下步骤:使用一时间管理电路来产生目前的一时间信息;当数据被写入至所述多个区块中任一区块时,记录所述时间管理电路所产生的所述时间信息;以及根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
在本发明的另一个实施例中,公开了一种包括一闪存模块以及一闪存控制器的电子装置,其中所述闪存模块,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,且每一个区块包括多个数据页,且所述闪存控制器用以存取所述闪存模块。在所述电子装置的操作中,所述闪存控制器产生目前的一时间信息,且当所述闪存控制器将数据写入至所述多个区块中任一区块时,所述闪存控制器记录所述时间管理电路所产生的所述时间信息;以及所述闪存控制器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
附图说明
图1为依据本发明一第一实施例的一种记忆装置的示意图。
图2为依据本发明一实施例的闪存模块中一区块的示意图
图3为区块与数据页的示意图。
图4为根据本发明一实施例的时间信息对照表的示意图。
图5为根据本发明一实施例的无效数据页数量对照表的示意图。
图6为根据本发明一实施例的一种管理一闪存模块的方法的流程图。
其中,附图标记说明如下:
100 记忆装置
110 闪存控制器
112 微处理器
112C 程序代码
112M 只读存储器
114 控制逻辑
116 缓冲存储器
118 接口逻辑
119 时间管理电路
120 闪存模块
130 主装置
132 编码器
134 解码器
N1、N2 特定接脚
200、B1~BN 区块
202 浮闸晶体管
BL1、BL2、BL3 位线
WL0~WL2、WL4~WL6 字线
P1~PN 数据页
400 时间信息对照表
TS1~TS10 时间戳记
500 无效数据页数量对照表
600~606 步骤
具体实施方式
图1为依据本发明一第一实施例的一种记忆装置100的示意图。记忆装置100包括有一闪存(Flash Memory)模块120以及一闪存控制器110,且闪存控制器110用来存取闪存模块120。在本实施例中,闪存控制器110包括一微处理器112、一只读存储器(Read OnlyMemory,ROM)112M、一控制逻辑114、一缓冲存储器116、一接口逻辑118以及一时间管理电路119。只读存储器112M是用来存储一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存模块120的存取(Access)。控制逻辑114包括了一编码器132以及一解码器134,其中编码器132用来对写入到闪存模块120中的数据进行编码以产生对应的校验码(或称,错误更正码(Error Correction Code),ECC),而解码器134用来将从闪存模块120所读出的数据进行解码。
于典型状况下,闪存模块120包括了多个闪存芯片,而每一个闪存芯片包括多个区块(block),而闪存控制器110对闪存模块120进行抹除数据运作是以区块为单位来进行。另外,一区块可记录特定数量的数据页(page),其中闪存控制器110对闪存模块120进行写入数据的运作是以数据页为单位来进行写入。在本实施例中,闪存模块120为一立体NAND型闪存(3D NAND-type flash)模块。
实作上,通过微处理器112执行程序代码112C的闪存控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存模块120的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)130沟通。此外,时间管理电路119通过闪存控制器的一特定接脚N1与主装置的一特定接脚N2连接。缓冲存储器116是以随机存取存储器(Random Access Memory,RAM)来实施,例如,缓冲存储器116可以是静态随机存取存储器(Static RAM,SRAM),但本发明不限于此。
在一实施例中,记忆装置100可以是可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡),且主装置130为一可与记忆装置连接的电子装置,例如手机、笔记本电脑、桌面计算机…等等。而在另一实施例中,记忆装置100可以是固态硬盘或符合通用闪存存储(Universal Flash Storage,UFS)或嵌入式多媒体记忆卡(Embedded Multi Media Card,EMMC)规格的嵌入式存储装置,以设置在一电子装置中,例如设置在手机、笔记本电脑、桌面计算机之中,而此时主装置130可以是所述电子装置的一处理器。
图2为依据本发明一实施例的闪存模块120中一区块200的示意图,其中闪存模块120为立体NAND型闪存。如图2所示,区块200包括了多个记忆单元(例如图标的浮闸晶体管202或是其他的电荷捕捉(charge trap)组件),其通过多条位线(图示仅绘示了BL1~BL3)及多条字线(例如图示WL0~WL2、WL4~WL6)来构成立体NAND型闪存架构。在图2中,以最上面的一个平面为例,字线WL0上的所有浮闸晶体管构成了至少一数据页,字线WL1上的所有浮闸晶体管构成了另至少一数据页,而字线WL2的所有浮闸晶体管构成了再另至少一数据页…以此类堆。此外,根据闪存写入方式的不同,字线WL0与数据页(逻辑数据页)之间的定义也会有所不同,详细来说,当使用单层式存储(Single-Level Cell,SLC)的方式写入时,字线WL0上的所有浮闸晶体管仅对应到单一逻辑数据页;当使用双层式存储(Multi-LevelCell,MLC)的方式写入时,字线WL0上的所有浮闸晶体管对应到两个逻辑数据页;当使用三层式存储(Triple-Level Cell,TLC)的方式写入时,字线WL0上的所有浮闸晶体管对应到三个逻辑数据页;以及当使用四层式存储(Quad-Level Cell,QLC)的方式写入时,字线WL0上的所有浮闸晶体管对应到四个逻辑数据页。由于本技术领域中具有通常知识者应能了解立体NAND型闪存的结构以及字线及数据页之间的关系,故相关的细节在此不予赘述。
在图2所绘示的架构仅是简单说明立体闪存的基本架构,而在实际的制造上会具有更多层的堆栈以达到更高密度的存储容量。由于立体闪存采用图2所示的堆栈架构,因此数据在存储上会遭遇到很严重的数据保存(data retention)问题,也就是当数据写入到区块200之后,经过了一段时间其中的记忆单元便会遭遇数据写入位准变化、临界电压漂移…等等数据质量上的问题,因而使得区块200内的数据在后续读取时可能会遭遇的解码上的困难、或甚至无法成功完成解码而造成数据遗失。此外,上述堆栈架构也会使得读取干扰的情形也变严重。因此,本实施例提出了一种闪存模块120的管理方法,其可以在闪存控制器110中设置一时间管理电路119,以有效率地记录每一个区块的时间信息,以供微处理器112在建立垃圾收集操作的优先级时的参考,其具体操作内容详述如下。
图3绘示了区块200包括了多个数据页P0~PN的示意图。当闪存控制器110需要将来自主装置130的数据、或是将闪存模块120内其他区块的数据、及/或将闪存控制器110本身所暂存的数据写入至区块200时,闪存控制器110会依序将这些数据由第一个数据页P0依序往下写入至最后一个数据页PN。在本实施例中,当闪存控制器110准备将数据写入至最后一个数据页PN、或是准备将数据写入至最后多个数据页时,时间管理电路119会通过特定接脚N1发送一个请求指令至主装置130中,以要求主装置130提供目前的时间信息,而由于主装置130本身有连接到操作系统,故可以提供目前的时间信息(例如,月、日、分、秒等信息)至时间管理电路119。在时间管理电路119接收到时间信息之后,便会将此时间信息提供给微处理器112,以供微处理器112通过编码器132的处理后连同其他数据一起写入至数据页PN中。
由于区块200的最后一个数据页PN所记录的是绝对时间(例如,时间戳记),因此,微处理器112可以随时轻易地判断出区块200的数据已经存储了多久的时间,以作为后续建立垃圾收集操作的优先级时的参考。然而,需注意的是,虽然在图3所示的实施例中,区块200的最后一个数据页PN记录了最后一笔数据写入的时间点,但此一特征并非是作为本发明的限制。在其他的实施例中,时间信息并非一定要被在最后一个数据页PN,且区块200所存储的时间信息可以是区块200开始存储数据的时间点、或是任何数据写入至区块200的时间点,只要时间信息可以反映出区块200中数据写入的时间信息即可。
在本发明的另一个实施例中,除了在每一个区块的最后一个数据页PN写入时间信息的外,微处理器112另建立如图4所示的一时间信息对照表400,其记录了每一个区块(例如,图4的区块B1~B10)所被写入的时间信息(例如,图4的时间戳记TS1~TS10)。在本实施例中,时间信息对照表400可以暂存在一外部的动态随机存取存储器或是闪存控制器110内部的缓冲存储器116中,以供闪存控制器110在不需要读取闪存模块120的每一个区块的情形下,快速地判断每一个区块的内的数据已经存储了多久的时间,并进行适当的后续处置。
另外,当闪存控制器110准备关机或是存储器需要释放空间时,时间信息对照表400可以被写入到闪存模块120中的适当地址,以避免数据遗失。
在另一实施例中,为了更有效率地使用存储器空间,时间信息对照表400的内容可以被整合至其他的对照表/映射表中,例如逻辑地址至实体地址映射表(logical addressto physical address mapping table)或是实体地址至逻辑地址映射表(physicaladdress to logical address mapping table)中。
需注意的是,在图1所示的实施例中,时间管理电路119是直接自主装置130取得目前的时间信息以供写入至区块200的最后一个数据页PN中,但此一特征并非是本发明的限制。在本发明的其他实施例中,时间管理电路119可以通过定时器或其他的方式来计算出目前的时间信息。
另一方面,在闪存控制器110将数据写入至闪存模块120的过程中,微处理器112也会根据写入至闪存模块120的数据以建立/更新如图5所示的一无效数据页数量对照表500,其记录了每一个区块(例如,图5的区块B1~B10)以及内部所包括的无效数据页的数量。举例说明无效数据页数量对照表500的更新操作,假设目前区块B2的数据页P2存储了具有一第一逻辑地址的数据,而此时微处理器112接收到来自主装置130的一写入命令,其中所述写入命令包括了所述第一逻辑地址及相关的数据,则由于所述写入命令是用来更新区块B2的数据页P2所存储的内容(更新后的数据会被写入到另一个区块中),故区块B2的数据页P2之后会被标记为无效数据页,且此时微处理器112便可以将无效数据页数量对照表500内所记录的区块B2的无效数据页数量加上“1”。
由于时间信息对照表400记录了每一个区块的时间信息,而区块的时间信息可以反映出区块是否有可能遭遇到数据保存或是读取干扰的问题,因此,通过参考时间信息对照表400以及无效数据页数量对照表500来选择出需要进行垃圾收集(garbagecollection)操作的多个特定区块,并决定其进行垃圾收集操作的优先级,可以在有效释放存储器空间的情形下,一并解决区块可能遭遇到数据保存或是读取干扰的问题。
具体来说,当闪存控制器110空闲的时候,或是闪存控制器110因为遇到某些触发条件而需要进行垃圾收集操作时(例如,闪存模块120的空间不足),微处理器112会根据时间信息对照表400以及无效数据页数量对照表500来选择出需要进行垃圾收集操作的多个特定区块及其优先级,并据以进行垃圾收集操作。在第一个例子中,微处理器112可以先参考无效数据页数量对照表500选择无效数据页数量高于一临界值的一部份区块以作为所述多个特定区块,以临界值“50”来做为说明,微处理器112可以选择区块B3、B4、B5、B7来预备进行垃圾收集操作。接着,微处理器112再根据时间信息对照表400来决定出区块B3、B4、B5、B7进行垃圾收集操作的优先级,在一例子中,微处理器112根据区块B3、B4、B5、B7所对应到的时间戳记TS3、TS4、TS5、TS7来决定其排序,而时间戳记越早的区块具有越高的优先级,也就是说,对应较早时间戳记的特定区块可以较优先地进行垃圾收集操作。
在第二个例子中,微处理器112可以先参考时间信息对照表400来选择所对应到的时间信息早于一时间点的一部份区块以作为所述多个特定区块,举例来说,假设所述时间点为20天,则微处理器112可以自时间信息对照表400中选择时间戳记早于20天前的区块来作为所述多个特定区块,在以下的说明中是假设所述多个特定区块为B2、B3、B4、B7。之后,微处理器112再根据无效数据页数量对照表500来决定区块B2、B3、B4、B7进行垃圾收集操作的优先级,在一例子中,微处理器112根据区块B2、B3、B4、B7所对应到的无效数据页数量来决定其排序,以图5为例,进行垃圾收集操作的优先级依序为B7、B4、B3、B2。
在第三个例子中,微处理器112可以先参考时间信息对照表400来选择所对应到的时间信息早于一时间点的一部份区块,举例来说,假设所述时间点为20天,则微处理器112可以自时间信息对照表400中选择时间戳记早于20天前的区块,例如区块B2、B3、B4、B7。之后,微处理器112再参考无效数据页数量对照表500已自所述一部分区块中选择无效数据页数量高于一临界值的区块以作为所述多个特定区块,以临界值“50”来做为说明,微处理器112可以自区块B2、B3、B4、B7中选择出区块B3、B4、B7来预备进行垃圾收集操作。
需注意的是,以上三个实施例仅是作为范例说明,而并非是本发明的限制。在其他的实施例中,只要垃圾收集操作的优先级可以根据每一个区块的无效数据页数量以及区块的时间信息来决定,相关设计上的变化应隶属于本发明的范畴。
在本发明的其他实施例中,微处理器112可以在任意适当的时间根据以上实施例的内容建立出需要进行垃圾收集操作的区块的优先级,并等待后续进行垃圾操作收集时使用。
图6为根据本发明一实施例的一种管理一闪存模块的方法的流程图。参考以上实施例所述的内容,流程如下所述。
步骤600:流程开始。
步骤602:使用一时间管理电路来产生目前的一时间信息。
步骤604:当数据被写入至闪存模块中多个区块中任一区块时,记录所述时间管理电路所产生的所述时间信息。
步骤606:根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的多个特定区块,并决定出所述多个特定区块进行垃圾收集操作的优先级。
简要归纳本发明,在本发明的闪存控制器中,通过根据每一个区块的无效数据页数量以及区块的时间信息来决定垃圾收集操作的区块选择其优先级,可以让同时具有无效数据页数量较多、可能有数据保存或是读取干扰问题的区块优先进行垃圾收集操作,以有效率地改善闪存模块的有效存储空间与数据质量。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (20)

1.一种闪存控制器,其中所述闪存控制器是用来存取一闪存模块,所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一个区块包括多个数据页,所述闪存控制器的特征在于,包括有:
一只读存储器,用来存储一程序代码;以及
一微处理器,用来执行所述程序代码以控制对所述闪存模块的存取;
一时间管理电路,耦接于所述微处理器,用以产生目前的一时间信息;其中当所述微处理器将数据写入至所述多个区块中任一区块时,所述时间管理电路会通过一接脚发送一请求指令至一主装置中,以要求所述主装置提供所述时间信息;所述时间管理电路接收到所述时间信息之后,会将所述时间信息提供给所述微处理器;所述微处理器记录所述时间管理电路所产生的所述时间信息;以及所述微处理器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
2.如权利要求1所述的闪存控制器,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述微处理器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以决定出所述多个特定区块在进行垃圾收集操作时的优先级。
3.如权利要求1所述的闪存控制器,其特征在于,当所述微处理器将数据写入至所述多个区块中任一区块时,所述微处理器将所述时间信息写入至所述区块中。
4.如权利要求1所述的闪存控制器,其特征在于,所述微处理器另建立一时间信息对照表,其记录了每一个区块所对应的所述时间信息,并将所述时间信息对照表暂存在一动态随机存取存储器或是所述闪存控制器内部的一缓冲存储器中。
5.如权利要求1所述的闪存控制器,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述微处理器先自所述多个区块中选择无效数据页数量高于一临界值的一部份区块以作为所述多个特定区块,再根据所述多个特定区块所对应到的所述时间信息,以决定出所述多个特定区块进行垃圾收集操作的优先级。
6.如权利要求5所述的闪存控制器,其特征在于,对应到较早时间信息的特定区块具有较优先进行的垃圾收集操作。
7.如权利要求1所述的闪存控制器,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述微处理器先自所述多个区块中选择所对应到的时间信息早于一时间点的一部份区块以作为所述多个特定区块,再根据所述多个特定区块中无效数据页的数量以决定出所述多个特定区块进行垃圾收集操作的优先级。
8.如权利要求7所述的闪存控制器,其特征在于,对应到较多无效数据页的特定区块具有较优先进行的垃圾收集操作。
9.如权利要求1所述的闪存控制器,其特征在于,所述微处理器先自所述多个区块中选择所对应到的时间信息早于一时间点的一部份区块,再自所述部份区块中选择无效数据页的数量高于一临界值的所述至少一个特定区块。
10.一种管理一闪存模块的方法,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一个区块包括多个数据页,且所述方法的特征在于,包括有:
当数据被写入至所述多个区块中任一区块时,使用一时间管理电路通过一接脚发送一请求指令至一主装置中,以要求所述主装置提供一时间信息;以及记录所述时间管理电路自所述主装置所接收的所述时间信息;以及
根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
11.如权利要求10所述的方法,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述方法还包括有:
根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以决定出所述多个特定区块在进行垃圾收集操作时的优先级。
12.如权利要求10所述的方法,其特征在于,当所述数据被写入至所述多个区块中任一区块时,记录所述时间管理电路所产生的所述时间信息的步骤包括有:
当所述数据被写入至所述多个区块中任一区块时,将所述时间信息写入至所述区块中。
13.如权利要求10所述的方法,其特征在于,还包括有:
建立一时间信息对照表,其记录了每一个区块所对应的所述时间信息,并将所述时间信息对照表暂存在一动态随机存取存储器或是一缓冲存储器中。
14.如权利要求10所述的方法,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述方法还包括有:
先自所述多个区块中选择无效数据页数量高于一临界值的一部份区块以作为所述多个特定区块,再根据所述多个特定区块所对应到的所述时间信息,以决定出所述多个特定区块进行垃圾收集操作的优先级。
15.如权利要求14所述的方法,其特征在于,对应到较早时间信息的特定区块具有较优先进行的垃圾收集操作。
16.如权利要求10所述的方法,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述方法还包括有:
先自所述多个区块中选择所对应到的时间信息早于一时间点的一部份区块以作为所述多个特定区块,再根据所述多个特定区块中无效数据页的数量以决定出所述多个特定区块进行垃圾收集操作的优先级。
17.如权利要求16所述的方法,其特征在于,对应到较多无效数据页的特定区块具有较优先进行的垃圾收集操作。
18.如权利要求10所述的方法,其特征在于,还包括有:
先自所述多个区块中选择所对应到的时间信息早于一时间点的一部份区块,再自所述部份区块中选择无效数据页的数量高于一临界值的所述至少一个特定区块。
19.一种电子装置,其特征在于,包括有:
一闪存模块,其中所述闪存模块包括了多个闪存芯片,每一个闪存芯片包括了多个区块,每一个区块包括多个数据页;以及
一闪存控制器,用以存取所述闪存模块;
其中所述闪存控制器产生目前的一时间信息,且当所述闪存控制器将数据写入至所述多个区块中任一区块时,所述闪存控制器会通过一接脚发送一请求指令至一主装置中,以要求所述主装置提供所述时间信息;所述闪存控制器记录来自所述主装置的所述时间信息;以及
所述闪存控制器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以选择出需要进行垃圾收集操作的至少一个特定区块。
20.如权利要求19所述的电子装置,其特征在于,所述至少一个特定区块包括了多个特定区块,且所述闪存控制器另根据每一个区块内无效数据页的数量以及每一个区块所对应的所述时间信息,以决定出所述多个特定区块在进行垃圾收集操作时的优先级。
CN201910221067.0A 2019-01-29 2019-03-22 管理闪存模块的方法及相关的闪存控制器与电子装置 Active CN111488118B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
TW108103265A TWI759580B (zh) 2019-01-29 2019-01-29 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
TW108103265 2019-01-29

Publications (2)

Publication Number Publication Date
CN111488118A CN111488118A (zh) 2020-08-04
CN111488118B true CN111488118B (zh) 2023-06-20

Family

ID=71732595

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910221067.0A Active CN111488118B (zh) 2019-01-29 2019-03-22 管理闪存模块的方法及相关的闪存控制器与电子装置

Country Status (3)

Country Link
US (1) US11210209B2 (zh)
CN (1) CN111488118B (zh)
TW (1) TWI759580B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI696074B (zh) * 2019-01-24 2020-06-11 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107403640A (zh) * 2016-04-27 2017-11-28 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN107943710A (zh) * 2016-10-13 2018-04-20 大心电子股份有限公司 存储器管理方法及使用所述方法的存储控制器

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100005225A1 (en) * 2006-07-26 2010-01-07 Panasonic Corporation Nonvolatile memory device, nonvolatile memory system, and host device
KR100789406B1 (ko) * 2006-11-03 2007-12-28 삼성전자주식회사 플래시 메모리 시스템 및 그것의 가비지 컬렉션 방법
US8261136B2 (en) * 2009-06-29 2012-09-04 Sandisk Technologies Inc. Method and device for selectively refreshing a region of a memory of a data storage device
US8463826B2 (en) * 2009-09-03 2013-06-11 Apple Inc. Incremental garbage collection for non-volatile memories
US8458417B2 (en) * 2010-03-10 2013-06-04 Seagate Technology Llc Garbage collection in a storage device
JP2012033002A (ja) * 2010-07-30 2012-02-16 Toshiba Corp メモリ管理装置およびメモリ管理方法
KR20120028581A (ko) * 2010-09-15 2012-03-23 삼성전자주식회사 비휘발성 메모리 장치, 이의 동작 방법, 및 이를 포함하는 장치들
TWI587136B (zh) * 2011-05-06 2017-06-11 創惟科技股份有限公司 快閃記憶體系統及其快閃記憶體無效資料頁資訊之管理方法與回收方法
KR101907059B1 (ko) * 2011-12-21 2018-10-12 삼성전자 주식회사 비휘발성 메모리 장치의 블록 관리 방법 및 블록 관리 시스템
US8938597B2 (en) 2012-10-23 2015-01-20 Seagate Technology Llc Restoring virtualized GCU state information
US9430376B2 (en) * 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
CN104102600B (zh) * 2013-04-03 2018-01-12 慧荣科技股份有限公司 存储器控制器
US9639463B1 (en) * 2013-08-26 2017-05-02 Sandisk Technologies Llc Heuristic aware garbage collection scheme in storage systems
US10409526B2 (en) * 2014-12-17 2019-09-10 Violin Systems Llc Adaptive garbage collection
US20170220623A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Hot-Spot Adaptive Garbage Collection
US20170228191A1 (en) * 2016-02-08 2017-08-10 Western Digital Technologies, Inc. Systems and methods for suppressing latency in non-volatile solid state devices
US10496293B2 (en) * 2017-03-14 2019-12-03 International Business Machines Corporation Techniques for selecting storage blocks for garbage collection based on longevity information
KR20190123990A (ko) * 2018-04-25 2019-11-04 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10635346B2 (en) * 2018-06-11 2020-04-28 Western Digital Technologies, Inc. Self-trimming of data stored in non-volatile memory using data storage controller
US10838859B2 (en) * 2018-09-25 2020-11-17 Western Digital Technologies, Inc. Recency based victim block selection for garbage collection in a solid state device (SSD)
KR102645142B1 (ko) * 2018-10-25 2024-03-07 삼성전자주식회사 예측된 유효 페이지들을 이용하여 가비지 콜렉션을 수행하는 스토리지 장치들, 방법들 및 불휘발성 메모리 장치들

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107403640A (zh) * 2016-04-27 2017-11-28 慧荣科技股份有限公司 存取闪存模块的方法及相关的闪存控制器与记忆装置
CN107943710A (zh) * 2016-10-13 2018-04-20 大心电子股份有限公司 存储器管理方法及使用所述方法的存储控制器

Also Published As

Publication number Publication date
TWI759580B (zh) 2022-04-01
TW202028984A (zh) 2020-08-01
CN111488118A (zh) 2020-08-04
US20200242026A1 (en) 2020-07-30
US11210209B2 (en) 2021-12-28

Similar Documents

Publication Publication Date Title
US8332576B2 (en) Data reading method for flash memory and controller and storage system using the same
US8055873B2 (en) Data writing method for flash memory, and controller and system using the same
CN111475425B (zh) 管理闪存模块的方法及相关的闪存控制器与电子装置
US8055834B2 (en) Method for preventing read-disturb happened in non-volatile memory and controller thereof
US20190227926A1 (en) Method for managing flash memory module and associated flash memory controller and electronic device
US20180059934A1 (en) Memory management method, memory control circuit unit and memory storage device
US20150058531A1 (en) Data writing method, memory control circuit unit and memory storage apparatus
CN111399751B (zh) 闪存控制器、管理闪存模块的方法及相关的电子装置
CN110069362B (zh) 数据储存装置与数据处理方法
TWI748542B (zh) 電子裝置、快閃記憶體控制器及快閃記憶體模組進行垃圾收集操作的方法
CN113903383A (zh) 存储装置、快闪存储器控制器及其存取方法
CN111488118B (zh) 管理闪存模块的方法及相关的闪存控制器与电子装置
CN111159069B (zh) 闪存控制器、管理闪存模块的方法及相关的电子装置
CN113495801A (zh) 存取闪存模块的方法及相关的闪存控制器与电子装置
US11487655B2 (en) Method for managing flash memory module and associated flash memory controller and electronic device based on timing of dummy read operations
TWI781886B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置
US11249676B2 (en) Electronic device, flash memory controller and associated control method
TWI823649B (zh) 快閃記憶體控制器的控制方法、快閃記憶體控制器以及電子裝置
TWI769100B (zh) 管理快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant