用于垃圾收集的有效性跟踪的制作方法

文档序号:12304871阅读:283来源:国知局
用于垃圾收集的有效性跟踪的制作方法与工艺

本公开涉及存储设备,例如固态驱动器。



背景技术:

固态驱动器(solid-statedrives,ssd)可以用在期望相对低的延迟和高容量存储的应用中的计算机中。在一些示例中,存储设备的控制器可以回收由存储设备存储的无效数据。例如,在存储器的块集存储有效数据和无效(例如,过时)数据的情况下,控制器可以通过从块集读取有效数据,擦除整个块集,并在相同或不同的物理位置将有效数据写回存储设备来移除无效数据。



技术实现要素:

在一些示例中,一种方法包括由存储设备的控制器接收对所述存储设备的第一块集执行垃圾收集操作的命令,所述第一块集至少包括与存储设备的第一物理块地址相关联的第一块。该方法还包括响应于接收到对第一块集执行垃圾收集操作的命令,由控制器并且基于存储在非易失性存储器中的有效性表,确定存储在第一块集的第一块处的数据是否有效。该方法还包括响应于确定存储在第一块集的第一块中的数据有效,由控制器使得来自第一块的数据被写入存储设备的第二块集的第二块。该方法还包括由控制器响应于使得来自第一块的数据被写入到第二块而修改有效性表以指示存储在第一块中的数据无效,并且指示存储在第二块中的数据有效。

在一些示例中,存储设备包括逻辑上划分为多个块集的至少一个存储设备和控制器。所述控制器被配置以接收用以对所述多个块集中的第一块集执行垃圾收集操作的命令,所述第一块集至少包括与所述存储设备的第一物理块地址相关联的第一块。响应于接收到对第一块集执行垃圾收集操作的命令,控制器还被配置为基于存储在非易失性存储器中的有效性表来确定存储在第一块集的第一块处的数据是否有效。响应于确定存储在第一块集的第一块中的数据有效,控制器还被配置为使得来自第一块的数据被写入到多个块集中的第二块集的第二块。响应于使得来自第一块的数据被写入第二块,控制器还被配置为修改有效性表以指示存储在第一块中的数据无效,并且指示存储在第二块中的数据有效。

在一些示例中,一种包括指令的计算机可读存储媒体,所述指令在被执行时配置存储设备的一个或一个以上处理器以接收对所述存储设备的第一块集执行垃圾收集操作的命令,所述第一块集至少包括与存储设备的第一物理块地址相关联的第一块。响应于接收到对第一块集执行垃圾收集操作的命令,所述指令还配置存储设备的一个或多个处理器,以基于存储在非易失性存储器中的有效性表来确定存储在确定存储在第一块集的第一块中的数据有效,响应于第一块集的第一块有效,使得来自第一块的数据被写入存储设备的第二块集的第二块,并且响应于使得来自第一块的数据被写入第二块,修改有效性表以指示存储在第一块中的数据无效并且指示存储在第二块中的数据有效。

在一些示例中,一种系统包括用于接收对存储设备的第一块集执行垃圾收集操作的命令的装置,所述第一块集至少包括与存储设备的第一物理块地址相关联的第一块。该系统还包括用于基于存储在非易失性存储器中的有效性表来确定存储在第一块集的第一块处的数据是否有效的装置。该系统还包括用于响应于确定存储在第一块集的第一块中的数据有效而使来自第一块的数据被写入存储设备的第二块集的第二块的装置。该系统还包括用于响应于使得来自第一块的数据被写入第二块而修改有效性表以指示存储在第一块中的数据无效并且指示存储在第二块中的数据有效的装置。

在附图和下面的描述中阐述了一个或多个示例的细节。从说明书和附图以及从权利要求书中,其它特征、目的和优点将是清楚的。

附图说明

图1是示出包括连接到主机设备的存储设备的示例系统的概念和示意框图。

图2是说明包含多个块集的示例存储器器件12aa的概念框图,其中每一块集包括多个块。

图3是示出示例控制器的概念和示意框图。

图4是示出块的分布和相应的有效性表的示例绘图。

图5是示出用于对块集执行垃圾收集操作的示例技术的流程图。

图6是示出用于执行写入操作的示例技术的流程图。

具体实施方式

本公开描述了用于在诸如固态驱动器的存储设备中进行有效性跟踪的技术。在一些示例中,可以在存储设备的垃圾收集操作期间利用有效性跟踪技术。例如,存储设备(例如,nand固态驱动器)可以包括多个块集。另外,每个块集可以包括多个块,每个块可以包括多个数据扇区。在一些示例中,存储设备的控制器可以仅在擦除先前存储在块中的数据之后才将数据写入块。此外,这样的存储设备可以仅允许擦除块的整个块集。为了适应这种小的写入粒度和大的擦除粒度,存储设备可以使用回收块集的垃圾收集处理。更具体地,可以在擦除块集之前将块集的有效块迁移到另一块集,以防止丢失存储在有效块处的数据。一旦擦除,控制器可以使用块集来存储新数据。

一些垃圾收集处理可以使用间接系统来跟踪块集的块是否包含有效数据。例如,存储在块集中的数据可以包括列出用于块集的逻辑块地址的物理清单。间接系统可以包括将每个逻辑块地址映射到块的物理块地址的逻辑到物理表。使用物理清单和逻辑到物理表,控制器可以实现垃圾收集技术并且确定块是否包含有效数据。更具体地,如果物理清单中指示的逻辑块地址被逻辑到物理表映射到特定物理块地址,则控制器可以确定在特定物理块地址处的块有效。然而,使用物理清单的有效性跟踪可能需要物理清单和逻辑到物理表以使能正确的垃圾收集。此外,物理清单可以被附加以包括新的逻辑块地址,而不去除无效的逻辑块地址。因此,这样的垃圾收集处理在计算上可能是低效的,因为即使大多数条目可能是无效的,控制器也可能检查物理清单中的每个条目。由于这样的复杂性,使用间接系统来跟踪块是否包含有效数据的存储设备可能使用复杂的固件控制算法,其对于存储设备的通用处理器来说是相当大的负担。

根据本发明的技术,控制器可实施垃圾收集技术,其使用有效性表来跟踪块集的块是否含有有效数据。例如,有效性表可以指示由存储设备的每个物理块存储的数据的有效性。例如,逻辑“1”可以指示相应块存储了有效数据,逻辑“0”可以指示相应块存储了无效数据。在一些示例中,存储设备的控制器可以在写入操作期间更新有效性表。例如,响应于从主机接收指示存储器器件将与逻辑块地址相关联的数据写入存储设备的指令,存储设备可以将数据存储到存储设备的块,并且将有效性表中的对应于该块的有效性位置位为指示有效数据(例如,逻辑“1”)。然后,响应于从主机设备接收与逻辑块地址相关联的更新数据,存储设备可以将更新的数据存储到新块,置位在有效性表中的与该新块对应有效性位为指示有效数据(例如,逻辑“1”),并清除有效性表中的与旧块对应的有效性位以指示无效数据(例如,逻辑“0”)。这样的处理可以适应不同的间接系统和物理清单,因为数据有效性处理可以与间接系统和物理清单脱离或分离。此外,使用有效性表的垃圾收集处理可以是对存储设备的通用处理器上的低负担,因为简单的比特查找可以用于确定数据是否有效,而不是使用间接表、物理清单或两者的更复杂的算法。在一些示例中,使用有效性表的垃圾收集处理可以在硬件中实现,以甚至进一步减少存储设备的通用处理器上的负担。例如,响应于硬件加速器引擎从控制器接收物理块地址(例如,块集)的范围,硬件加速器引擎可以将物理块地址范围内的包含有效数据的物理块地址输出到控制器。

图1是示出包括连接到主机设备15的存储设备2的示例系统1的概念和示意框图。主机设备15可以利用包括在存储设备2中的存储设备来存储和检索数据。如图1所示,主机设备15可以经由接口10与存储设备2通信。主机设备15可以包括任何计算设备,包括例如计算机服务器、网络附接存储(nas)单元、台式计算机、笔记本(例如,膝上型计算机)、平板计算机,机顶盒、诸如“智能”电话的移动计算设备、电视、相机、显示设备、数字媒体播放器、视频游戏控制台、视频流设备等。

如图1所示,存储设备2可以包括控制器4\非易失性存储器阵列6(nvma6),高速缓存8和接口10。在一些示例中,存储设备2可以包括图1中未示出的附加组件,为清楚起见。例如,存储设备2可以包括功率输送部件,包括例如电容器、超级电容器或电池;存储设备2的部件被机械附接到其上且包括使得存储设备2的部件电互连的导电迹线的印刷电路板(pb);或类似物。

在一些示例中,存储设备2的物理尺寸和连接器配置可以符合一个或多个标准形式因素。一些示例标准形式因素包括但不限于3.5”硬盘驱动器(hdd)、2.5”hdd、1.8”hdd、外围组件互连(pci)、pci扩展(pci-x)、pciexpress(pcie)(例如,pciex1、x4、x8、x16、pcie迷你卡、minipci等)。在一些示例中,存储设备2可以直接耦合(例如,直接焊接)到主机设备15的母板。

接口10可以将存储设备2与主机设备15电连接。例如,接口10可以包括用于与主机设备15交换数据的数据总线和用于与主机设备15交换命令的控制总线中的一个或两个。接口10可以根据任何合适的协议来操作。例如,接口10可以根据以下协议中的一个或多个来操作:高级技术附件(ata)(例如,串行ata(sata)和并行ata(pata))、光纤通道、小型计算机系统接口(scsi)、串行连接的scsi(sas)、外围组件互连(pci)、pci-express和非易失性存储器快速(nvme)。接口10(例如,数据总线、控制总线或两者)的电连接可以电连接到控制器4,提供主机设备15和控制器4之间的电连接,允许数据在主机设备15和控制器4之间交换。在一些示例中,接口10的电连接还可以允许存储设备2从主机设备15接收电力。

存储设备2包括控制器4,其可以管理存储设备2的一个或多个操作。例如,控制器4可以管理从存储器器件12aa-12nn(统称为“存储器器件12”)读取数据和/或将数据写入存储器器件12aa-12nn。在一些示例中,尽管在图1中未示出,存储设备2还可以包括读通道、写通道或两者,其还可以管理存储设备2的一个或多个操作。例如,作为一个示例,读通道管理从存储器器件12,并且作为一个示例,写通道可以管理对存储器器件12的写入。在一些示例中,读通道可以执行本公开的技术,诸如确定由存储器器件12的存储器单元存储的相应位的值。

nvma6可以包括每个可以被配置为存储和/或检索数据的存储器器件12aa-12nn(统称为“存储器器件12”)。例如,存储器器件12的存储器器件可以从控制器4接收指示存储器器件存储数据的数据和消息。类似地,存储器器件12的存储器器件可以从控制器4接收指示存储器器件检索数据的消息。在一些示例中,存储器器件12中的每一者可被称为裸芯。在一些示例中,单个物理芯片可以包括多个裸芯(即,多个存储器器件12)。在一些示例中,每个存储器器件12可以被配置为存储相对大量的数据(例如,256mb、512mb、1gb、2gb、4gb、8gb、16gb、32gb、64gb、128gb、256gb、512gb、1tb等)。

在一些示例中,存储器器件12可以包括任何类型的非易失性存储设备。存储器器件12的一些示例包括但不限于闪存器件、相变存储器(pcm)装置、电阻式随机存取存储器(reram)装置、磁阻随机存取存储器(mram)装置、铁电随机存取存储器存取存储器(f-ram)、全息存储器器件和任何其它类型的非易失性存储器器件。

闪存器件可以包括基于nand或nor的闪存器件,并且可以基于包含在每个闪存单元的晶体管的浮置栅极中的电荷来存储数据。在nand闪存器件中,闪存器件可划分为多个块集,每一块集可被划分为多个块(例如,页)。图2是说明示例存储器器件12aa的概念框图,所述示例存储器器件12aa包括块集16a-16n(统称为“块集16”),其中每一者被划分为块18aa-18nm(统称为“块18”)。特定存储器器件(例如,存储器器件12aa)内的块18的每一块可包含多个闪存单元。在nand闪存器件中,可使用字线电连接若干行闪存单元以界定块18的块。块18中的每一者中的各单元可电连接到相应位线。控制器4可以在块级别向nand闪存器件写入数据和从nand闪存器件读取数据,并在块集级别从nand闪存器件擦除数据。

在一些示例中,控制器4单独连接到存储器器件12的每个存储器器件可能是不实际的。这样,存储器器件12和控制器4之间的连接可以被多路复用。作为示例,存储器器件12可以被分组成通道。分组到每个通道中的存储器器件12可以共享与控制器4的一个或多个连接。例如,分组到第一通道中的存储器器件12可以附接到公共i/o总线和公共控制总线。存储设备2可以包括用于通道的每个相应通道的公共i/o总线和公共控制总线。

存储设备2还包括高速缓存8,其可以存储由控制器4使用的用于控制存储设备2的操作的数据。高速缓存8可以存储由控制器4用于间接系统以管理存储在nvma6中的数据的信息。例如,控制器4可以将存储在高速缓存8中的逻辑到物理表中的一组逻辑块地址的每个逻辑块地址与nvma6的块的对应物理块地址进行映射。高速缓存8可以存储用于间接系统的任何合适的信息,例如,高速缓存8可以存储标识nvma6的命名空间的信息。在一些示例中,用于间接系统的信息可以存储在易失性存储器中。例如,逻辑到物理表可以存储在高速缓存8的易失性存储器中。在一些示例中,用于间接系统的信息可以存储在非易失性存储器中。例如,逻辑到物理表可以存储在高速缓存8的非易失性存储器中。高速缓存8可以包括例如随机存取存储器(ram)、动态随机存取存储器(dram)、静态ram(sram)和同步动态ram(sdram(例如,ddr1、ddr2、ddr3、ddr3l、lpddr3、ddr4))等。

控制器4可以管理存储设备2的一个或多个操作。控制器4可以经由接口10与主机设备15通信并且管理存储在存储器器件12中的数据。例如,响应于控制器4从主机设备15接收数据和逻辑块地址,控制器4可以使nvma6将数据写入存储器器件12aa的物理块地址,并在存储在高速缓存8中的逻辑到物理表中将该物理块地址映射到该逻辑块地址。控制器4可以包括微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它数字逻辑电路。

根据本公开的技术,控制器4可以在高速缓存8中存储有效性表(例如,物理有效性表)。当对nvma6执行垃圾收集操作时,控制器4可以利用有效性表。例如,响应于控制器4从主机装置15接收到对块集(例如,nvma6的存储器器件12aa的块16a)执行垃圾收集操作的命令,控制器4可以基于有效性表而不是使用间接系统确定每一块(例如,块18aa-18am)是否有效(即,存储有效数据)。更具体地,如果存储在高速缓存8中的有效性表包括其中置位了位的第一块的条目,则控制器4可以确定块集的第一块有效。然后,控制器4可以使得来自第一块的数据被写入nvma6的另一个块集的第二块。例如,控制器4可以指示nvma6将数据从第一块迁移到第二块,并且控制器4可以更新存储在高速缓存8中的逻辑到物理表,使得由逻辑到物理表先前映射到第一块的逻辑块地址被映射到第二块。接下来,控制器4可以更新高速缓存8的有效性表,以指示存储在第一块中的数据无效并且指示存储在第二块中的数据有效。例如,控制器4可以置位有效性表中与第二块相对应的位,并清除有效性表中的与第一块相对应的位。一旦所有有效数据从特定块集的相应有效块被迁移,并且有效性表中与特定块集相对应的每个位被清除,则控制器4可以指示nvma6擦除该块集。以这种方式,控制器4可以回收块集而不需要在间接系统中的前向搜索以确定由块集中的块存储的数据是否有效。

在一些示例中,高速缓存8可以包括非易失性存储器,使得保持有效性表而不向高速缓存8提供电力,允许在存储设备2的重置之后确定存储设备2的每个块的有效性。这种非易失性存储器可以是具有随机字节粒度读取和写入容量的任何合适的介质。非易失性存储器的示例可以包括例如相变存储器(pcm)、静态ram(sram)、磁阻随机存取存储器(mram)等。在一些示例中,有效性表可以相对较小(例如,32mb),使得可以使用快速和/或昂贵的存储器来存储有效性表。例如,使用单个位来指示1tb存储设备的每个4kb间接单元(例如,块)的有效性可以仅使用32mb的高速缓存8。在一些示例中,高速缓存8可以包括易失性存储器,且来自高速缓存8的数据可以在功率丢失事件期间迁移到永久存储器。例如,在功率丢失事件期间,控制器4可以将有效性表从高速缓存8的易失性存储器(例如,dram)移动到非易失性存储器(例如,nvma6,高速缓存8的非易失性存储器等)。

根据本公开的技术,控制器4可实施垃圾收集技术,其使用存储在高速缓存8中的有效性表来跟踪nvma6的块集的块是否含有有效数据,而无需使用间接表、物理清单或两者的复杂算法。例如,控制器4可以通过存储在高速缓存8中的有效性表的简单位查找来确定由nvma6的每个物理块存储的数据的有效性。另外,控制器4可以适应不同的间接系统和物理清单,因为数据有效性处理可以与间接系统和物理清单脱离或分离。

图3是示出示例控制器4的概念和示意框图。如所示,控制器4可以包括写入模块22、维护模块24、读取模块26、地址转换模块28和有效性模块30。在一些示例中,控制器4可以可选地包括垃圾收集硬件加速器32。

地址转换模块28可以将主机设备15使用的逻辑块地址与nvma6的物理块地址相关联。例如,响应于地址转换模块28从主机设备15接收逻辑块地址作为读取或写入命令的一部分,地址转换模块28可使用间接系统(例如,存储在高速缓存8中的虚拟或逻辑到物理表)来确定与该逻辑块地址相对应的nvma6的物理块地址。

读取模块26可以从主机设备15接收命令以从nvma6检索数据。例如,响应于读取模块26从主机设备15接收到在逻辑块地址处读取数据的命令,读取模块26可以从nvma6检索数据。

写入模块22可以从主机设备15接收命令以将数据写入nvma6。例如,响应于写入模块22从主机设备15接收到将数据写入逻辑块地址的命令,写入模块22可以将数据写入与物理块地址相关联的nvma6的可用块。在一些示例中,写入模块22可以例如但不限于从主机设备15、从控制器4的另一模块(例如地址转换模块28)或类似物接收与nvma6的可用块相关联的物理块地址。在一些示例中,写入模块22可以确定与nvma6的可用块相关联的物理块地址。

有效性模块30可以使用存储在高速缓存8中的有效性表来确定存储在nvma6中的数据是有效还是无效。例如,有效性模块30可以在高速缓存8中存储的有效性表中置位对应于包含更新数据的块,以及在高速缓存8中存储的有效性表中清除与包含旧数据的块相对应的有效性值。然后,有效性模块30可以通过有效性值的简单位查找来确定块是否包含有效数据。在一些示例中,有效性模块30可以使用存储在高速缓存8中的有效性表来确定块集的每个块是否包含有效数据。在一些示例中,有效性模块30可以当块的至少一个数据扇区包含有效数据时确定该块含有有效数据。以这种方式,有效性模块30可以减少控制器4的处理器上的计算负担。

维护模块24可以重新定位有效数据(例如,不过时的)以回收块集16。例如,响应于有效性模块30使用存储在高速缓存8中的有效性表来确定只有块集16a的数据集18aa和18am包含有效数据,维护模块24可使读取模块26和写入模块22重新定位存储在块18aa和18am中的数据,以允许回收块集16a。

在控制器4包括垃圾收集硬件加速器32的情况下,垃圾收集硬件加速器32可以执行一个或多个垃圾收集处理,而不是控制器4的通用处理器,以减少控制器4的计算负担。例如,垃圾收集硬件加速器32可使用存储在高速缓存8中的有效性表来确定存储在块中的数据是否有效。垃圾收集硬件加速器32可包括微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它数字逻辑电路。

在一些情况下,控制器4可以接收对块集执行垃圾收集操作的命令。例如,主机设备15可以向存储设备2发送命令,指令存储设备2对存储设备2的块集16a执行垃圾收集操作。作为另一个示例,控制器4可以执行确定何时对块集执行垃圾收集操作的固件。

响应于控制器4接收到执行垃圾收集操作的命令,有效性模块30可以确定存储在第一块集的第一块处的数据是否有效。在一些示例中,有效性模块30可以基于指示有效值的有效性值来确定存储在第一块处的数据是否有效。例如,响应于有效性模块30确定由高速缓存8的有效性表映射到与块集16a的块18aa相关联的物理位置的有效性值指示有效值(例如,被置位),有效性模块30可以确定存储在块18aa处的数据有效。

响应于有效性模块30确定存储在第一块集的第一块处的数据有效,维护模块24可使得来自第一块集的第一块的数据被写入到第二块块集中的第二块。例如,响应于有效性模块30确定块18aa包含有效数据,维护模块24可以将存储在块集16a的块18aa处的数据重新定位到块集16b的块18ba。更具体地,维护模块24可以使得读取模块26读取存储在块集16a的块18aa处的数据,并使写入模块22将由读取模块26读取的数据写入块集16b的块18ba。

响应于维护模块24使得来自第一块集的第一块的数据被写入第二块集的第二块,有效性模块30可以修改存储在高速缓存8中的有效性表,以指示存储在第一块中的数据无效并且指示存储在第二块中的数据有效。例如,有效性模块30可以修改存储在高速缓存8中的有效性表,以指示存储在块18aa中的数据无效,并且指示存储在块18ba中的数据有效。更具体地,有效性模块30可以清除由高速缓存8中存储的有效性表映射到与块18aa相关联的物理块地址的有效性值,并置位由高速缓存8中存储的有效性表映射到与块18ab相关联的物理块地址的有效性值。

在一些示例中,维护模块24还可以更新逻辑到物理表以将逻辑块地址与nvma6的块相关联。例如,响应于维护模块24使得来自第一块集的第一块的数据被写入第二块集的第二块,则维护模块24可更新高速缓存8的逻辑到物理表以将先前与第一块(例如,块18aa)相关联的逻辑块地址与第二块(例如,块18ba)相关联。更具体地,维护模块24可更新高速缓存8的逻辑到物理表以将逻辑块地址映射到与第二块(例如,块18ba)相关联的物理块地址。尽管上述示例示出了块集中的单个有效块,但是应当理解,在一些示例中,可以对于块集的每个块类似地重复上述技术。以这种方式,控制器4可以处理块集,使得保留所有有效数据。

在一些示例中,一种方法包括由存储设备2的控制器4接收对存储设备2的块集16a执行垃圾收集操作的命令,其中块集16a至少包括与第一物理块地址相关联的块18aa。该方法进一步包括,响应于接收到对第一块集执行垃圾收集操作的命令,通过控制器4并基于存储在高速缓存8中的有效性表,确定存储在块集16a的块18aa处的数据是否有效。该方法还包括响应于确定存储在块集16a的块18aa中的数据有效,通过控制器4使得来自块18aa的数据被写入存储设备2的块集16b的块18ba。该方法还包括响应于使得来自块18aa的数据被写入块18ba,由控制器4修改有效性表以指示存储在块18aa中的数据无效,并且指示存储在块18ba中的数据有效。

在控制器4包括垃圾收集硬件加速器32的情况下,垃圾收集硬件加速器32可以执行一个或多个垃圾收集处理,而不是控制器4的处理器执行模块,以减少控制器的通用处理器上的计算负担。例如,垃圾收集硬件加速器32可以确定存储在第一块中的数据是否有效。例如,垃圾收集硬件加速器32可以查找由高速缓存8的有效性表映射到与块集16a的块18aa相关联的物理位置的有效性值。然后,响应于垃圾收集硬件加速器32确定由高速缓存8的有效性表映射到与块集16a的块18aa相关联的物理位置的有效性值指示有效值(例如,被置位),垃圾收集硬件加速器32可以确定在块18aa处存储的数据有效。尽管上述示例示出了确定存储在第一块中的数据是否有效,但是应当理解,在一些示例中,可以对块集的每个块类似地重复上述技术。

垃圾收集硬件加速器32可以向控制器4输出用于垃圾收集的物理块地址的列表。例如,响应于垃圾收集硬件加速器32从控制器4接收物理块地址的一个范围,垃圾收集硬件加速器32可以向控制器4输出物理块地址的该范围内的有效的块。更具体地,如果该块与存储在高速缓存8中的物理有效性表中的逻辑“1”相关联,则垃圾收集硬件加速器32可以确定具有在从控制器4提供的物理块地址的该范围内的物理块地址的块有效。然后,垃圾收集硬件加速器32可以向控制器4输出物理块地址的该范围中的与物理有效性表中的逻辑“1”相关联的所有物理块地址的列表。以这种方式,垃圾收集硬件加速器32可以减少控制器4的通用处理器上的负担。

在一些示例中,垃圾收集硬件加速器32可以向控制器4提供准备写入数据和对应的逻辑块地址的列表。例如,垃圾收集硬件加速器32可以使nvma6读取块集的物理清单,并且垃圾收集硬件加速器32可以使用物理清单来确定与块集的块相关联的逻辑块地址。然后,垃圾收集硬件加速器32可以向控制器4(例如,维护模块24)提供将块移动到另一物理块地址、并且用从物理清单确定的逻辑块地址更新高速缓存8的逻辑到物理表的请求。以这种方式,重新定位数据以回收块集可以由垃圾收集硬件加速器32基本上自动化,从而进一步减少控制器4的通用处理器上的计算负担。

图4是示出块40的分布和对应的有效性表42的示例图。在一些示例中,有效性表42可以包括作为单个比特的有效性值44。如图所示,有效性表42将清除位(例如,逻辑'0')与块50、块51、块55和块57相关联。也就是说,块50、块51、块55和块57可以包含无效数据(例如,过时(stale)数据)。过时数据的示例可以包括其中数据的更新版本存储在其他物理块中的实例。如图所示,有效性表42将置位的位(例如,逻辑'1')与块52、块53、块54和块56相关联。也就是说,块52、块53、块54和块56可以包含有效数据。以这种方式,有效性模块30和/或垃圾收集硬件加速器32可以使用有效性表42的简单位查找来确定存储在nvma6中的数据的有效性。如上所述,在一些示例中,单个位可以为每个块(例如,块40)指示有效性值(例如,逻辑“1”用于有效,逻辑“0”用于无效),其可允许有效性表42利用相对较少的存储器空间来允许使用快速存储器(例如,sram)。另外,控制器(例如,图3的控制器4)可以适应不同的间接系统和物理清单,因为数据有效性处理可以使用有效性表42,而不是与间接系统和物理清单相关联的信息(例如,逻辑到物理表)。此外,使用有效性表42的垃圾收集处理可以是存储设备(例如,图1的存储设备2)的通用处理器上的低负担,因为简单的比特查找可以用于确定数据是否有效,而不是使用间接表、物理清单或两者的更复杂的算法。此外,使用有效性表42的垃圾收集处理可在硬件(例如,垃圾收集硬件加速器32)中实施以甚至进一步减少存储设备(例如,图1的存储设备2)的通用处理器上的负担。

图5是示出用于对块集执行垃圾收集操作的示例技术的流程图。将同时参考图1的示例系统1和图3的控制器4来描述图5的技术,以便于描述。

存储设备2可以接收用于对第一块集执行垃圾收集操作的命令(102)。例如,维护模块24可以从主机设备15接收对第一块集执行垃圾收集操作的命令。作为另一示例,维护模块24可以确定对第一块集执行垃圾收集操作。然后,有效性模块30可以读取由有效性表映射到第一块集的第一块的有效性值(104)。例如,有效性模块30可以查找由高速缓存8的有效性表与第一块集的第一块相对应的物理块地址相关联的位。或者,垃圾收集硬件加速器32可读取由有效性表映射到第一块集的第一块的有效性值。

在有效性模块30确定有效性值指示存储在该块处的数据无效(106的“否”分支)的情况下,处理针对下一位(116)重新开始。例如,可以对第一块集的每个块重复该处理。

另一方面,在有效性模块30确定有效性值指示存储在第一块处的数据有效(106的“是”分支)的情况下,有效性模块30将有效块的指示传送到写入模块22,并且写入模块22将数据从第一块写入第二块集的第二块(108)。例如,写入模块22可以从维护模块24或地址转换模块28接收与可用(当前不存储数据)的第二块相关联的物理块地址。然后,读取模块26检索存储在第一块处的数据,写入模块22将数据写入第二块。

一旦写入模块22将数据写入第二块,有效性模块30将第一块的有效性值清除为逻辑'0'(110)。例如,有效性模块30可以清除由高速缓存8中存储的有效性表映射到由存储在高速缓存8中的间接表与第一块相关联的第一物理块地址的位。另外,有效性模块30将第二块的有效性值置位为逻辑“1”(112)。例如,有效性模块30可以置位由存储在高速缓存8中的有效性表映射到由存储在高速缓存8中的间接表与第二块相关联的第二物理块地址的位。在一些示例中,有效性模块30可清除映射到第一物理块地址的位,且同时(例如,以原子方式)置位映射到第二物理块地址的位。

响应于写入模块22将数据写入第二物理块地址,维护模块24还可更新间接表以指示存储在与逻辑块地址相关联的第二块处的数据(114)。例如,维护模块24可以通过存储在高速缓存8中的间接表来更新映射,以将逻辑块地址与第二物理块地址而不是第一物理块地址相关联,该第二物理块地址与第二块相关联。在一些示例中,维护模块24可以同时(例如,以原子方式)更新间接表,且有效性模块30清除映射到第一物理块地址的位和/或置位映射到第二物理块地址的位。一旦维护模块24更新逻辑到物理表,该处理针对下一位重新开始(116),直到块集的每个有效块被重新定位以允许块集被回收。

图6是示出用于执行写入操作的示例技术的流程图的技术。将同时参考图1的示例系统1和图3的控制器4来描述图6,以便于描述。

存储设备2可以接收将数据写入逻辑块地址的指令(202)。例如,写入模块22可以从主机设备15接收将数据写入逻辑块地址的指令。然后,地址转换模块28使用逻辑到物理表来确定与逻辑块地址相对应的第一物理块地址(204)。例如,地址转换(translation)模块28可以通过高速缓存8的逻辑到物理表中的逻辑块地址的查找来确定第一物理块地址。然后,写入模块22接收第二物理块地址(206)。例如,主机设备15可以向写入模块22输出可用物理块地址的列表。响应于写入模块22接收到第二物理块地址,写入模块22可以将数据从第一块写入第二物理块地址(208)。

响应于写入模块22将数据写入第二物理块地址,有效性模块30可将第一物理块地址的有效性值清除为逻辑'0'(210)。例如,有效性模块30可以清除与第一物理块地址相对应的位。另外,有效性模块30可将第二物理块地址的有效性值置位为逻辑'1'(212)。例如,有效性模块30可以置位与第二物理块地址相对应的位。在一些示例中,有效性模块30可以将第一物理块地址的有效性值清除为逻辑'0',并且同时(例如以原子方式)将第二物理块地址的有效性值置位为逻辑'1'。

响应于写入模块22将数据写入第二物理块地址,维护模块24可更新逻辑到物理表以将逻辑块地址与第二物理块地址相关联(214)。例如,维护模块24可以将逻辑块地址与第二物理块地址映射。在一些示例中,维护模块24可更新逻辑到物理表以将逻辑块地址与第二物理块地址相关联,同时(例如,以原子方式)有效性模块30将第一物理块地址的有效性值清除为逻辑“0”和/或将第二物理块地址的有效性值置位为逻辑“1”。

本公开中描述的技术可以至少部分地在硬件、软件、固件或其任何组合中实现。例如,所描述的技术的各个方面可以在一个或多个处理器内实现,该一个或多个处理器包括一个或多个微处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或任何其它等效集成或离散逻辑电路、以及这些组件的任何组合。术语“处理器”或“处理电路”通常可以指代任何前述逻辑电路,单独地或与其他逻辑电路组合或任何其它等效电路。包括硬件的控制单元还可以执行本公开的一个或多个技术。

这样的硬件、软件和固件可以在相同的设备内或在单独的设备内实现,以支持本公开中描述的各种技术。另外,所描述的单元、模块或组件中的任何一个可以一起或单独实现为离散但可互操作的逻辑设备。将不同特征描述为模块或单元旨在突出不同的功能方面,并且不一定意味着这样的模块或单元必须由单独的硬件、固件或软件组件实现。相反,与一个或多个模块或单元相关联的功能可以由单独的硬件、固件或软件组件来执行,或者集成在公共或单独的硬件、固件或软件组件内。

本发明中所描述的技术还可在包括编码有指令的计算机可读存储媒体的制品中实施或编码。嵌入或编码在包括编码的计算机可读存储介质的制品中的指令可以使得一个或多个可编程处理器或其他处理器实现本文描述的技术中的一个或多个,诸如当包括或编码在计算机可读存储介质中的指令由所述一个或多个处理器执行时。计算机可读存储介质可以包括随机存取存储器(ram)、只读存储器(rom)、可编程只读存储器(prom)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)硬盘、光盘rom(cd-rom)、软盘、盒式磁带、磁性介质、光学介质或其他计算机可读介质。在一些示例中,制品可以包括一个或多个计算机可读存储介质。

在一些示例中,计算机可读存储介质可以包括非暂时性介质。术语“非暂时性”可以指示存储介质未被包含在载波或传播信号中。在某些示例中,非暂时性存储介质可以存储随时间可以改变(例如,在ram或高速缓存中)的数据。

已经描述了各种示例。这些和其它示例在所附权利要求的范围内。

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