非易失性存储器装置及其垃圾收集方法与流程

文档序号:11589894阅读:242来源:国知局

本发明涉及一种存储器装置,且特别涉及一种非易失性存储器装置及其垃圾收集方法。



背景技术:

与传统的硬盘机(harddiskdrives)相比,由于快闪存储器(flashmemory)存储设备的读/写性能佳且功耗低,使得快闪存储器被广泛应用于数据存储系统中。然而,将数据写入快闪存储器的关键因素是写入放大(writeamplification,wa)。写入放大会影响快闪存储器的性能和耐久性。当主机对快闪存储器存储设备发出一个写入命令时,快闪存储器存储设备会将此主机写入命令转换(或解码)为多个内部写入动作/指令,以便完成此主机写入命令。所述“将一个主机写入命令转换为多个内部写入动作/指令”即为写入放大。写入放大主要是为了内部写入操作,例如垃圾收集(garbagecollection)、磨损平衡(wearleveling)和/或其他快闪存储器管理性写入操作,以便管理数据更新和存储耐久性(storageendurance)。

写入放大的操作主要分布于垃圾收集。垃圾收集可以将一个已写满的实体块(block,在此称为来源块)中的有效数据(validdata)搬移至另一个未写满的实体块(从自由池中取出的实体块,在此称为目标块)。完成垃圾收集后,逻辑块地址(logicalblockaddress,lba)将从来源块改映射至目标块,而此来源块将被抹除(erased)并且被丢回到自由池中。垃圾收集的主要目的是要将有效数据聚集在一起,并将无效数据所占据的记忆空间释放给新的写入请求。

垃圾收集的效率取决于主机写入工作负荷(hostwriteworkloads)。在实际的主机写入工作负荷中,通常有一些数据被更频繁地存取与更新。这些被频繁存取与更新的数据通常被称为热数据(hotdata)。相较之下,其他数据的存取与更新可能较不频繁。存取与更新较不频繁的数据通常被称为冷数据(colddata)。已知的非易失性存储器装置往往将冷数据与热数据混合在一个相同的实体块中。将冷数据与热数据混合在一个相同的实体块中,其往往导致垃圾收集的效率降低,进而导致更高的写入放大。



技术实现要素:

本发明提供一种非易失性存储器装置及其垃圾收集方法,以提升垃圾收集的效率。

本发明的实施例提供一种非易失性存储器装置。所述非易失性存储器装置包括非易失性存储器以及控制器。控制器耦接至非易失性存储器。控制器依照主机的写入命令的逻辑地址而存取非易失性存储器。控制器可以进行垃圾收集方法来释放多个无效数据所占据的空间。所述垃圾收集方法包括:依照数据的热门程度(hotness)而将非易失性存储器的多个实体块分群为多个层,将这些层中的一个较热层的一个已写满来源块中的有效数据搬移至这些层中的一个较冷层的一个未写满目标块,以及抹除所述较热层的此已写满来源块以释放空间。

本发明的实施例提供一种非易失性存储器装置的垃圾收集方法,用以释放多个无效数据所占据的空间。所述垃圾收集方法包括:依照数据的热门程度而将该非易失性存储器的多个实体块分群为多个层;将这些层中的一个较热层的一个已写满来源块中的有效数据搬移至这些层中的一个较冷层的一个未写满目标块;以及抹除所述较热层的此已写满来源块以释放空间。

基于上述,本发明实施例所述非易失性存储器装置及其垃圾收集方法,其依照数据的热门程度而将多个实体块分群为多个层。当这些层中的一个层(在此称为较热层)的一个已写满来源块需要进行垃圾收集时,控制器可以将此较热层的所述已写满来源块中的有效数据搬移至这些层中的一个较冷层的一个未写满目标块,以提升垃圾收集的效率。在此较热层的所述已写满来源块已完成垃圾收集后,控制器可以抹除此较热层的所述已写满来源块以释放空间。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

图1是依照本发明一实施例说明一种非易失性存储器装置的电路方块(circuitblock)示意图。

图2是依照本发明一实施例说明一种垃圾收集方法的流程示意图。

图3是依照本发明一实施例说明非易失性存储器120的多个实体块被分群为n个层的示意图。

图4是依照本发明一实施例说明依据地址分类(数据分类)的结果来将主机数据写入对应层的流程示意图。

图5是依照本发明另一实施例说明依据地址分类(数据分类)的结果来将主机数据写入对应层的流程示意图。

图6是依照本发明另一实施例说明一种非易失性存储器装置的电路方块(circuitblock)示意图。

【符号说明】

10:主机

100、600:非易失性存储器装置

110、110’:控制器

111:中央处理单元

112:存储器控制电路

113:存储器缓冲器

114:数据分类电路

115:错误校验纠正(ecc)电路

120:非易失性存储器

301、303、305:已写满来源块

302、304、306:未写满目标块

s210~s230、s410~s450、s510~s560:步骤

t[1]:第1层

t[2]:第2层

t[n]:第n层

具体实施方式

在本申请说明书全文(包括权利要求书)中所使用的“耦接(或连接)”一词可指任何直接或间接的连接手段。举例而言,若文中描述第一装置耦接(或连接)于第二装置,则应该被解释成该第一装置可以直接连接于该第二装置,或者该第一装置可以通过其他装置或某种连接手段而间接地连接至该第二装置。另外,凡可能之处,在图式及实施方式中使用相同标号的元件/构件/步骤代表相同或类似部分。不同实施例中使用相同标号或使用相同用语的元件/构件/步骤可以相互参照相关说明。

图1是依照本发明一实施例说明一种非易失性存储器装置100的电路方块(circuitblock)示意图。依照设计需求,非易失性存储器装置100可以是随身碟、固态硬盘(solidstatedisc,ssd)或是其他存储装置。非易失性存储器装置100可以耦接至主机(host)10。此主机10可以是计算机、手持式电话、多媒体播放器、相机或是其他电子装置。非易失性存储器装置100包括控制器110以及非易失性存储器120。依照设计需求,非易失性存储器120可以是与非快闪存储器(nandflashmemory)或是其他非易失性存储电路/元件。

控制器110耦接至非易失性存储器120。控制器110可以依照主机10的写入命令(writecommand)的逻辑地址而存取非易失性存储器120。在一些实施例中,所述逻辑地址信息可以是逻辑块地址(logicalblockaddress,lba)或是其他逻辑地址。控制器110可以对存取非易失性存储器120进行“垃圾收集方法”,来释放无效数据所占据的空间。在图1所示实施例中,控制器110包括中央处理单元111、存储器控制电路112、存储器缓冲器113、数据分类电路114与错误校验纠正(errorcheckingandcorrecting,以下称ecc)电路115。中央处理单元111经由通信接口耦接至主机10。依照设计需求,所述通信接口包括小型计算机系统接口(smallcomputersysteminterface,scsi)、串行连接小型计算机系统接口(serialattachedscsi,sas)、增强型小型装置接口(enhancedsmalldiskinterface,esdi)、串行先进技术连接(serialadvancedtechnologyattachment,sata)、快速周边元件互连(peripheralcomponentinterconnectexpress,pci-express)、整合式电子装置(integrateddriveelectronics,ide)接口、通用串行总线(universalserialbus,usb)、雷电(thunderbolt)接口或其他接口。本实施例并没有限制主机10与非易失性存储器装置100之间的接口结构。

当主机10发出写入命令时,待写入的数据可以被暂存于存储器缓冲器113,而中央处理单元111可以将主机10的写入命令(包含逻辑地址)转换/解码为对应的内部控制信号(包含非易失性存储器120的物理地址),并将内部控制信号提供给存储器控制电路112和/或存储器缓冲器113。存储器缓冲器113的例子包括动态随机存取存储器(dynamicrandomaccessmemory,dram)、静态随机存取存储器(staticrandomaccessmemory,sram)或是其他易失性存储器(volatilememory)。ecc电路115可以执行ecc算法,以便将暂存于存储器缓冲器113的数据加以编码为码字(codeword)。在一些实施例中,ecc电路115可以执行bch(bose-chaudhuri-hocquengh)码算法、低密度同位校验(lowdensityparitycheck,ldpc)码算法或是其他ecc算法。依照内部控制信号,存储器控制电路112可以定址/控制非易失性存储器120,以便将码字写入非易失性存储器120。

当主机10发出读取命令时,中央处理单元111可以将主机10的读取命令(包含逻辑地址)转换/解码为对应的内部控制信号(包含非易失性存储器120的物理地址)。依照内部控制信号,存储器控制电路112可以定址/控制非易失性存储器120,以便将非易失性存储器120内的码字读出。ecc电路115可以执行ecc算法,以便将码字解码为数据,并将经解码的数据暂存于存储器缓冲器113。然后,中央处理单元111可以将暂存于存储器缓冲器113的数据回传给主机10。

图2是依照本发明一实施例说明一种垃圾收集方法的流程示意图。本实施例所提出的想法是基于层(tierbased)的垃圾收集方法。请参照图1与图2,控制器110的中央处理单元111可以依照数据的热门程度(hotness,亦即数据被更新的机率),而将非易失性存储器120的多个实体块分群为多个层(步骤s210)。中央处理单元111可以依照某一算法来决定在非易失性存储器120的所有实体块中,哪一个已写满实体块需要进行垃圾收集。本实施例并不限定所述某一算法的实施方式。举例来说,中央处理单元111可以采用已知算法,来决定在非易失性存储器120中的哪一个已写满实体块需要进行垃圾收集。当这些层中的一个层(在此称为较热层)的一个已写满来源块需要进行垃圾收集时,控制器110的中央处理单元111可以将此较热层的所述已写满来源块中的有效数据搬移至这些层中的另一层(较冷层)的一个未写满目标块(步骤s220)。其中,在所述较热层中的实体块的数据被存取机率(被存取频率)大于在所述较冷层中的实体块的数据被存取机率。在此较热层的所述已写满来源块已完成垃圾收集后,控制器110的中央处理单元111可以抹除(erasing)此较热层的所述已写满来源块(步骤s230),以释放无效数据所占据的空间。

如果已写满的来源块具有较少有效数据(或此来源块包含更多的热数据),则垃圾收集的效率会更高。所述多个层可以依照数据的热门程度(被存取频率)而分群非易失性存储器120的所有实体块。在较热层的已写满来源块中因为具有热数据(频繁被更新的数据)而没有冷数据,使得这个已写满来源块具有较多的无效数据,因此可以提升垃圾收集的效率。在垃圾收集的过程中,从较热层的已写满来源块中收集而来的有效数据一般可以视为热门程度较低的数据。因此,中央处理单元111可以将较热层的这个已写满来源块中的有效数据搬移至较冷层的一个未写满目标块。

图3是依照本发明一实施例说明非易失性存储器120的多个实体块被分群为n个层的示意图。在图3中,多个方块(例如图3所示301~306)表示非易失性存储器120的多个实体块。控制器110的中央处理单元111可以依照数据的热门程度(hotness)而将非易失性存储器120的多个实体块分群为n个层,例如图3所示第1层t[1]、第2层t[2]、…、第n层t[n]。依据设计需求,n为大于1的任意整数。这些层t[1]~t[n]的排序是由数据的热门程度来决定的。例如,在第1层t[1]中的实体块的数据被存取机率(被存取频率)大于在第2层t[2]中的实体块的数据被存取机率。以此类推,在第2层t[2]中的实体块的数据被存取机率(被存取频率)大于在第n层t[n]中的实体块的数据被存取机率。因此,第1层t[1]是用于存放最热的数据,而第n层t[n]用于存放最冷的数据。

当这些层t[1]~t[n]中的一个第i层(较热层)t[i]的一个已写满来源块需要进行垃圾收集时,控制器110的中央处理单元111可以将此第i层t[i]的所述已写满来源块中的有效数据搬移至这些层t[1]~t[n]中的一个第j层(较冷层)t[j]的一个未写满目标块。其中,i、j为整数,0<i<n,0<j≤n,且i<j。在图3所示实施例中,j=i+1。在其他实施例中,j可以是i+2、i+3或是更大的数。

举例来说,请参照图3,当第1层t[1]的一个已写满来源块301需要进行垃圾收集时,控制器110的中央处理单元111可以将此第1层t[1](较热层)的所述已写满来源块301中的有效数据搬移至第2层t[2](较冷层)的一个未写满目标块302。在第1层t[1]的所述已写满来源块301已完成垃圾收集后,控制器110的中央处理单元111可以抹除(erasing)此第1层t[1]的所述已写满来源块301,以释放无效数据所占据的空间。以此类推,当第2层t[2]的一个已写满来源块303需要进行垃圾收集时,控制器110的中央处理单元111可以将此第2层t[2](较热层)的所述已写满来源块303中的有效数据搬移至第3层t[3](较冷层,未绘示)的一个未写满目标块(未绘示)。当第n-1层t[n-1](未绘示)的一个已写满来源块(未绘示)需要进行垃圾收集时,控制器110的中央处理单元111可以将此第n-1层t[n-1](较热层,未绘示)的所述已写满来源块(未绘示)中的有效数据搬移至第n层t[n](较冷层)的一个未写满目标块304。当第n层t[n]的一个已写满来源块305需要进行垃圾收集时,控制器110的中央处理单元111可以将第n层t[n]的已写满来源块305中的有效数据搬移至第n层t[n]的一个未写满目标块(例如未写满目标块304或是第n层t[n]的其他未写满目标块)。

当主机10发出一个写入命令给非易失性存储器装置100时,控制器110可以进行“地址分类方法”,来决定来自主机10的写入命令的逻辑地址是否为热数据(hotdata)地址。所谓“热数据”是指近期很可能被修改/更新的数据。在主机10的写入命令的逻辑地址被判定为热数据地址(或者非热数据地址)后,控制器110可以依据判定结果,以及依据此写入命令的逻辑地址,来将主机10的数据写入非易失性存储器120中的对应层的未写满目标块中。因为在将数据写入非易失性存储器120的过程中,“所写入数据是否为热数据”已被考虑,因此可以有效降低写入放大(writeamplification,wa)。例如,基于热数据地址的判定而将冷数据与热数据分别写入非易失性存储器120的不同层的未写满目标块中,因此垃圾回收操作的效率可以被提升。

当主机10请求写入操作时,请求写入的数据将被确定为热数据或冷数据。图4是依照本发明一实施例说明依据地址分类(数据分类)的结果来将主机数据写入对应层的流程示意图。在主机10发出写入命令要求进行写入操作(步骤s410)后,控制器110的中央处理单元111可以依据写入命令的逻辑地址进行地址分类方法(步骤s420),来判定来自主机10的写入命令的逻辑地址是否为热数据地址(步骤s430)。本实施例并不限制步骤s420进行的地址分类方法的实施细节。在一些实施例中,步骤s420可以进行任何的地址分类方法,以便判定来自主机10的数据是热数据或是冷数据。在另一些实施例中,主机10可以发送热/冷数据信息(或暗示)给非易失性存储器装置100,而控制器110可以依据所述热/冷数据信息而得知来自主机10的数据是热数据或是冷数据。在又一些实施例中,步骤s420可以进行其他的地址分类方法(容后详述)。

请参照图3与图4。当步骤s430将主机10的逻辑地址判定为热数据地址时,控制器110的中央处理单元111可以进行步骤s440以便将主机10的写入命令的数据被写入第1层t[1]的一个未写满目标块306。当步骤s430将主机10的逻辑地址判定为非热数据地址时,控制器110的中央处理单元111可以进行步骤s450以便将主机10的写入命令的数据写入其他层t[2]~t[n]中的一个对应层的一个未写满目标块。举例来说(但不限于此),在另一些实施例中,中央处理单元111可以将主机10的非热数据写入第2层t[2]中的未写满目标块302(或是第2层t[2]中的其他未写满目标块)。在另一些实施例中,中央处理单元111可以将主机10的非热数据写入第n层t[n]中的未写满目标块304(或是第n层t[n]中的其他未写满目标块)。

在另一些实施例中,所述地址分类方法可以将主机10的逻辑地址判定为m种数据地址的其中一种,其中m为大于2的整数,且m≤n。举例来说(但不限于此),所述m种数据地址可以包括热数据地址、次热数据地址、次冷数据地址以及冷数据地址。

图5是依照本发明另一实施例说明依据地址分类(数据分类)的结果来将主机数据写入对应层的流程示意图。在主机10发出写入命令要求进行写入操作(步骤s510)后,控制器110的中央处理单元111可以依据写入命令的逻辑地址进行地址分类方法,来判定来自主机10的写入命令的逻辑地址是否为热数据地址(步骤s520)。

详而言之,控制器110的数据分类电路114可以提供数据集合(dataset),所述数据集合可以快速暂存(cache)一组或多组数据项目信息(dataentryinformation),以识别热数据。其中,所述数据集合包括多个数据项目,而每一个数据项目各自包括逻辑地址信息、计数器(counter)值vc与计时器(timer)值vt。在一些实施例中,所述逻辑地址信息可以是逻辑块地址(logicalblockaddress,lba)或是其他逻辑地址。中央处理单元111可以直接使用主机10的写入命令的逻辑块地址而在所述数据集合寻找具有相同逻辑块地址的数据项目。在另一些实施例中,所述逻辑地址信息可以是一种具唯一性的识别码。中央处理单元111可以将主机10的写入命令的逻辑地址转换为对应的识别码,然后使用此对应的识别码而在所述数据集合寻找具有相同识别码的数据项目。

计数器值vc用于追踪某一个逻辑地址的数据频率信息(datafrequencyinformation),亦即这个逻辑地址的被写入频率。计时器值vt用于追踪某一个逻辑地址的数据是否最近被存取,亦即这个逻辑地址在目前时间窗中是否曾被更新数据。中央处理单元111可以依照主机10的写入命令的逻辑地址来更新对应计数器值vc与对应计时器值vt。当所述数据集合中的一个对应数据项目的逻辑地址信息吻合主机10的写入命令的逻辑地址时,控制器110的数据分类电路114可以将此对应数据项目的对应计数器值vc累进加一来追踪数据的写入频率,以及将此对应数据项目的对应计时器值vt设置为第一逻辑态(例如逻辑1)以表示最近被存取。因此,控制器110可以依据对应计数器值vc与对应计时器值vt来决定主机10的写入命令的逻辑地址是否为热数据地址。

在主机10发出写入命令后,主机命令计数值host_write_count被累进加一,以便计数主机10的写入命令的数量。当主机命令计数值host_write_count大于等于阈值时,控制器110的数据分类电路114可以将每一个数据项目的计数器值vc分别除以一个参数f,以及将每一个数据项目的计时器值vt重置为第二逻辑态(例如为逻辑0),以及将主机命令计数值host_write_count重置为0。上述参数f可以依照设计需求来决定。举例来说,上述阈值可以是8192或是其他整数,而上述参数f可以是2或是其他实数。因此,在每8192个主机写入请求时,每一个数据项目的计数器值vc分别被除以2,且每一个数据项目的定时器值vt被重置为第二逻辑态(例如为逻辑0)。

在主机10发出写入命令后,中央处理单元111可以依据写入命令的逻辑地址查找数据分类电路114的所述数据集合,以获得对应的数据项目。中央处理单元111可以从所述对应的数据项目中获得对应计数器值vc与对应计时器值vt。当对应计数器值vc超出预设范围且该对应计时器值vt为第一逻辑态(例如逻辑1)时,控制器110的中央处理单元111在步骤s520中将主机10的写入命令的逻辑地址判定为“热数据地址”。依照设计需求,所述预设范围可以是单边界范围或是双边界范围。举例来说,在一些实施例中,步骤s520可以校验对应计数器值vc是否大于阈值th1(对应计数器值vc大于阈值th1表示超出预设范围),其中阈值th1可以依照设计需求来决定。在另一些实施例中,步骤s520可以校验对应计数器值vc是否小于阈值th2(对应计数器值vc小于阈值th2表示超出预设范围),其中阈值th2可以依照设计需求来决定。依照设计需求,所述第一逻辑态可以是逻辑1或是逻辑0。举例来说,在一些实施例中,步骤s520可以校验对应计时器值vt是否为逻辑1,而以逻辑1表示对应的逻辑地址在目前时间窗中曾被更新数据。在另一些实施例中,步骤s520可以校验对应计时器值vt是否为逻辑0,而以逻辑0表示对应的逻辑地址在目前时间窗中曾被更新数据。

当对应计数器值vc超出预设范围且对应计时器值vt为第二逻辑态(例如逻辑0)时,控制器110的中央处理单元111在步骤s520中将主机10的写入命令的逻辑地址判定为“次热数据地址”。当对应计数器值vc不超出预设范围且对应计时器值vt为第一逻辑态(例如逻辑1)时,控制器110的中央处理单元111在步骤s520中将主机10的写入命令的逻辑地址判定为“次冷数据地址”。当对应计数器值vc不超出预设范围且对应计时器值vt为第二逻辑(例如逻辑0)态时,控制器110的中央处理单元111在步骤s520中将主机10的写入命令的逻辑地址判定为“冷数据地址”。

当在步骤s520中主机10的逻辑地址被判定为“热数据地址”时,主机10的写入命令的数据在步骤s530中被写入这些层t[1]~t[n]中的第1层t[1]的一个未写满目标块。当在步骤s520中主机10的逻辑地址被判定为“次热数据地址”时,主机10的写入命令的数据在步骤s540中被写入这些层t[1]~t[n]中的第2层t[2]的一个未写满目标块。当在步骤s520中主机10的逻辑地址被判定为“次冷数据地址”时,主机10的写入命令的数据在步骤s550中被写入这些层t[1]~t[n]中的第3层t[3]的一个未写满目标块。当在步骤s520中主机10的逻辑地址被判定为“冷数据地址”时,主机10的写入命令的数据在步骤s560中被写入这些层t[1]~t[n]中的第4层t[4]的一个未写满目标块。

值得注意的是,在不同的应用情境中,上述控制器110、中央处理单元111、存储器控制电路112、数据分类电路114和/或ecc电路115的相关功能可以利用一般的编程语言(programminglanguages,例如c或c++)、硬件描述语言(hardwaredescriptionlanguages,例如veriloghdl或vhdl)或其他合适的编程语言来实现为软件、固件或硬件。可执行所述相关功能的软件(或固件)可以被布置为任何已知的计算机可存取介质(computer-accessiblemedias),例如磁带(magnetictapes)、半导体(semiconductors)存储器、磁盘(magneticdisks)或光盘(compactdisks,例如cd-rom或dvd-rom),或者可通过互联网(internet)、有线通信(wiredcommunication)、无线通信(wirelesscommunication)或其它通信介质传送所述软件(或固件)。所述软件(或固件)可以被存放在计算机的可存取介质中,以便于由计算机的处理器来存取/执行所述软件(或固件)的编程码(programmingcodes)。另外,本发明的装置和方法可以通过硬件和软件的组合来实现。

举例来说,图6是依照本发明另一实施例说明一种非易失性存储器装置600的电路方块(circuitblock)示意图。非易失性存储器装置600包括控制器110’以及非易失性存储器120。在图6所示实施例中,控制器110’包括中央处理单元111、存储器控制电路112、存储器缓冲器113与ecc电路115。图6所示非易失性存储器装置600、控制器110’、非易失性存储器120、中央处理单元111、存储器控制电路112、存储器缓冲器113与ecc电路115可以参照图1所示非易失性存储器装置100、控制器110、非易失性存储器120、中央处理单元111、存储器控制电路112、存储器缓冲器113与ecc电路115的相关说明来类推,故不再赘述。在图6所示实施例中,数据分类电路114已被省略,而数据分类电路114的功能可以利用固件和/或软件方式实现于中央处理单元111中。

综上所述,上述诸实施例所述非易失性存储器装置及其垃圾收集方法,其依照数据的热门程度而将多个实体块分群为多个层。根据数据的热门程度,控制器可以将数据存储到这些层t[1]~t[n]的对应层。当这些层t[1]~t[n]中的第i层t[i](在此称为较热层)的一个已写满来源块需要进行垃圾收集时,控制器可以将此第i层t[i](较热层)的所述已写满来源块中的有效数据搬移至这些层t[1]~t[n]中的第j层t[j](在此称为较冷层)的一个未写满目标块。藉由分离冷数据与热数据,上述诸实施例所述非易失性存储器装置及其垃圾收集方法可以提升垃圾收集的效率。因此,系统可以达到更低的写入放大(writeamplification,wa),进而获得更好的效能和耐久性。

虽然本发明已以实施例公开如上,然其并非用以限定本发明,本领域技术人员在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附权利要求书界定范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1