首页> 中国专利> 用于存储设备的用低预留空间实现低写入放大的方法

用于存储设备的用低预留空间实现低写入放大的方法

摘要

一种固态硬盘(SSD)包括SSD控制模块,被配置为确定与关联于所述SSD的相应的逻辑地址中所存储的数据多长时间被更新一次所对应的频率并且根据所述频率形成所述逻辑地址的群组;以及存储器控制模块,被配置为基于所述群组将所述数据重新写入至SSD存储区的区块中的物理地址。

著录项

  • 公开/公告号CN103562842A

    专利类型发明专利

  • 公开/公告日2014-02-05

    原文格式PDF

  • 申请/专利权人 马维尔国际贸易有限公司;

    申请/专利号CN201280024279.6

  • 发明设计人 L·阮;P·尼奥斯;L·汤-萨特;

    申请日2012-05-02

  • 分类号G06F3/06(20060101);G06F12/02(20060101);

  • 代理机构11256 北京市金杜律师事务所;

  • 代理人酆迅

  • 地址 巴巴多斯圣米加勒

  • 入库时间 2024-02-19 22:57:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-05-19

    专利权的转移 IPC(主分类):G06F3/06 登记生效日:20200429 变更前: 变更后: 申请日:20120502

    专利申请权、专利权的转移

  • 2018-09-14

    授权

    授权

  • 2014-06-11

    实质审查的生效 IPC(主分类):G06F3/06 申请日:20120502

    实质审查的生效

  • 2014-02-05

    公开

    公开

说明书

相关申请的交叉引用

本申请要求于2012年5月2日提交的美国专利申请第13/461,899号的优先权以及于2011年5月24日提交的美国临时申请第61/489,628号的权益。通过引用上述申请的全文而将上述申请的公开并入于此。

技术领域

本公开涉及使得存储设备中的写入放大最小化。

背景技术

这里所提供的背景技术的描述是出于总体上呈现本公开的背景的目的。当前署名的发明人的工作(到该背景技术中所描述的工作的程度)以及在提交时可能无法以其它方式作为现有技术的衡量的说明书的各方面,既非明确地也非隐含地承认是本公开的现有技术。

诸如固态硬盘(SSD)之类的存储设备可以包括一个或多个闪存设备。仅作为示例,闪存设备可以包括基于NAND的闪存。通常,闪存的存储区按区块进行布置,其中每个区块被划分为可寻址的页面。在区块内数据以逐个页面为基础而写入并存储在闪存之中。相反地,为了重写或擦除数据,整个相对应的区块都被擦除。

当在特定页面中存储的数据被更新时,区块中所有的有效数据(即,对没有改变或更新的数据进行存储的任何页面)都需要被擦除并重写。无效数据(即,对已经被改变或更新的数据进行存储并因此已经在其它地方被重写的页面)可以简单地被擦除。例如,向存储设备进行写入的主机将数据写入到诸如逻辑块地址(LBA)之类的逻辑地址。相反地,存储设备将该数据映射并写入到对应于该逻辑地址的物理地址。当存储设备需要在特定物理地址中(即,区块中的一个或多个页面中)对数据进行更新时,整个区块都被擦除并且被写入到相同或不同的区块,但是相对应的逻辑地址仍然保持相同。因此,包括该存储设备的系统执行比主机更大数目的写入操作。

换句话说,物理写入的数目大于逻辑写入的数目。物理写入的数目与逻辑写入的数目之比可以被称之为写入放大(writeamplification,WA)。相对高的写入放大(例如,5或更大的WA)在存储设备上导致更多的磨损,并且因此缩短存储设备的寿命。相反地,相对低的写入放大(例如,接近1的WA)对存储设备的性能和寿命有所改善。

存储设备可以实施磨损均衡(wear-leveling)和预留空间(overprovisioning)以使得写入放大最小化。例如,预留空间是指在存储设备中提供比与主机相关联的逻辑地址(即,主机的逻辑容量)相对应的数目更大数目的物理位置。换句话说,存储设备包括比主机所包括的逻辑位置更多的物理位置。剩余的物理位置为存储设备提供了额外的物理容量。存储设备的额外物理容量与存储设备的总体物理容量(和主机的逻辑容量)之比被称作预留空间比(OPR)。例如,如果存储设备具有100吉字节(GB)的总体物理容量和75GB的逻辑容量,则OPR为25:100或25%。

存储设备的OPR可以与存储设备的写入放大直接相关。例如,当闪存数据的单个页面中所存储的数据被更新时,该数据能够被写入该闪存的不同区块中的额外物理位置中的空页面而不是擦除当前存储数据的整个区块。存储数据的原始页面可以简单地被标记为陈旧或无效,而避免整个区块被完全重写。这能够针对附加的写入进行重复直至整个区块充满无效数据或者无效数据与有效数据之比大于阈值,和/或根据清理和融合操作(例如,垃圾回收)进行重复。因此,由于能够避免附加的重写的数目,所以随着存储设备的OPR增大,存储设备的写入放大减小。仅作为示例,10%的OPR可以对应于大约5的写入放大,25%的OPR可以对应于大约2的写入放大,以及50%的OPR可以对应于大约1的写入放大。

发明内容

一种固态硬盘(SSD)包括SSD控制模块,被配置为确定与关联于所述SSD的相应的逻辑地址中所存储的数据多长时间被更新一次所对应的频率并且根据所述频率形成所述逻辑地址的群组;以及存储器控制模块,被配置为基于所述群组将所述数据重新写入至SSD存储区的区块中的物理地址。

一种操作固态硬盘(SSD)的方法,所述方法包括确定与关联于所述SSD的相应的逻辑地址中所存储的数据多长时间被更新一次所对应的频率,根据所述频率形成所述逻辑地址的群组,以及基于所述群组将所述数据重新写入至SSD存储区的区块中的物理地址。

本公开另外的可应用领域将从详细的说明书、权利要求和附图变得显而易见。详细的说明书和具体示例仅旨在出于说明性的目的而并非旨在对本公开的范围进行限制。

附图说明

本发明将从详细的说明书和附图变得更为全面地理解,其中:

图1是根据本公开的原理的存储驱动系统的功能框图;

图2是根据本公开的原理的固态硬盘控制模块的功能框图;

图3A和图3B图示了根据本公开的原理的逻辑地址区域列表的示例;

图4A和图4B图示了在并未根据区域列表重新安排数据的情况下存储数据的闪存区块;

图5A和图5B图示了根据区域列表存储数据的闪存区块;以及

图6图示了根据本公开的原理的固态硬盘控制方法。

具体实施方式

根据本公开的系统减小了存储设备(例如,固态硬盘或SSD,包括基于NAND的闪存)的写入放大(WA)同时也减小了预留空间。仅作为示例,在实现相对低的1.1的写入放大时,该存储设备可以向主机提供一太字节(TB)的逻辑容量同时仅包括16吉字节(GB)的额外物理容量,这对应于的预留空间比(OPR)。

该系统向存储设备中更为动态的(即,被频繁写入和重写的)逻辑区分配更多的额外物理空间。相反地,该系统向存储设备中更为静态的(即,不频繁重写的)的逻辑区分配较少的额外物理空间。结果,OPR可能对于更为动态的逻辑区而言相对高,并且对于相对静态的逻辑区而言相对低,这可以不需要明显的预留空间并且因此对于写入放大并无明显贡献。该系统可以基于主机的使用模式对每个逻辑区动态地调节OPR。例如,该使用模式可以基于主机操作系统、主机应用以及与特定逻辑区的使用相关联的其它因素而变化。

虽然本公开关于SSD对系统进行了描述,但是该系统的原理也可以利用其它存储设备诸如硬盘(HHD)来实施,以改善写入性能,减少清理/融合开销,并且降低与预留空间相关联的成本。

现在参考图1,存储驱动系统100包括固态硬盘(SSD)104,其经由主机接口112与主机108进行通信。主机接口112(例如,经由写入操作)从主机108接收要在SSD104上存储的数据,并且将在SSD 104上存储的数据(例如,经由读取操作)传送至主机108。

SSD 104包括存储器控制模块120、SSD控制模块124以及诸如闪存阵列128的SSD存储区。在写入操作期间,存储器控制模块120将数据从主机108写入闪存阵列128。例如,写入操作可以将数据写入诸如逻辑块地址(LBA)之类的逻辑地址。存储器控制模块120将每个LBA映射到闪存阵列中的物理地址,并且将数据写入到相对应的物理地址。仅作为示例,易失性存储器132、非易失性存储器136或(例如存储器控制模块120内的存储器)的其它存储器可以对将每个LBA与物理地址相关联的映射信息进行存储。相反地,在读取操作期间,主机108从LBA请求数据并且存储器控制模块120从闪存阵列128中相对应的物理地址读取数据。SSD104中诸如主机接口112、存储器控制模块120、SSD控制模块124、易失性存储器132和非易失性存储器136的一个或多个组件可以位于片上系统(SOC)上。

闪存阵列128可以包括一个或多个闪存设备140-1、140-2、...和140-n,它们共同称之为闪存设备140。每个闪存设备140在多个区块中存储数据,并且每个区块包括多个可寻址页面。每个可寻址页面是对应于物理地址的物理存储器位置,该物理地址进而与LBA相关联。因此,被写入主机108的或被主机108读取的每个LBA对应于闪存设备之一中根据可寻址页面之一进行访问的物理位置。仅作为示例,闪存设备140可以实施基于NAND的闪存单元。

SSD控制模块124根据本公开的原理实施预留空间分配。SSD控制模块124确定哪些LBA是相对静态的而哪些LBA是相对动态的。换句话说,相对静态的LBA更新(例如,被写入和重写)得更不频繁,而相对动态的LBA则更新得更为频繁。仅作为示例,相对静态的LBA可以对应于诸如程序或应用文件以及照片、音乐或其它多媒体文件之类的数据。相反地,相对动态的LBA可以对应于被用户频繁更新的数据。

SSD控制模块124可以维护根据更新频率而排列的所有LBA的列表。该列表可以在正常操作期间在易失性存储器132中存储并且周期性地在非易失性存储器136中存储以避免数据丢失。该列表可以将LBA安排到不同区域之中,其中每个区域对应于不同的更新频率。每个区域包括多个LBA。仅作为示例,该列表可以包括10个区域,其中每个区域包括10%的LBA。或者,该列表可以包括100个区域,其中每个区域包括1%的LBA。SSD控制模块124基于相对应区域对LBA进行重新排列。仅作为示例,SSD控制模块124可以包括执行非易失性存储器136上所存储的固件的一个或多个处理器。

现在参考图2,SSD控制模块200的示例包括LBA区域控制模块204和最近最少使用(LRU)模块208。LBA区域控制模块204基于每个LBA多长时间被主机108更新一次而确定哪些LBA处于每个区域之中。当SSD控制模块200将LBA重新映射到闪存阵列128中的相对应物理地址时,SSD控制模块200根据区域对闪存阵列128的区块内的LBA进行排列。

例如,SSD控制模块200可以在垃圾回收或其它维护过程期间定期指示存储器控制模块212基于LBA到物理区域的映射来重新排列闪存阵列128中所存储的任意有效数据。重新排列数据可以包括将数据的一个或多个第一区块中的部分(即,对应于有效数据的部分)重新写入到第二区块并且擦除第一区块的数据。因此,在闪存阵列128中的特定物理位置中存储的有效数据保持相同的LBA,但是该LBA可以被映射到新的物理位置。

LBA区域控制模块204例如基于从LRU模块208所接收的信息来确定哪个LBA被分配至哪个区域。LRU模块208可以实施LRU引擎或算法以基于每个LBA最近如何被最后使用而在有序LRU列表中对LBA进行排列。例如,处于LRU列表顶端的LBA可以对应于最近最少被写入的LBA,而处于LRU列表底部的LBA可以对应于最近经常被写入的LBA。仅作为示例,当LBA被写入时,该LBA可以下降至LRU列表的底部。以这种方式,最近最多写入的LBA将趋向于LRU列表的底部,并且对应于相对动态的LBA。相反地,最近最少写入的LBA将趋向于LRU列表的顶端,并且对应于相对静态的LBA。LRU模块208可以将LRU列表存储在存储器216中和/或将LRU列表传输至LBA区域控制模块204。仅作为示例,存储器216可以对应于图1所示的易失性存储器132和/或非易失性存储器136。

LBA区域控制模块204可以基于从LRU模块208所接收的LRU列表来维护区域列表。例如,区域列表可以包括10个区域,每个区域包括10%的LBA。仅作为示例,LBA中的对应于前10%的最近最少写入的LBA(即,处于LRU列表顶端的10%的LBA)可以被分配至区域1。接下来10%的最近最少写入的LBA可以被分配至区域2。相反地,最后10%(即处于LRU列表底部的10%的LBA)可以被分配至区域10。

图3A中示出了包括10个区域的区域列表300的示例。图3B示出了包括100个区域的区域列表320的示例。能够认识到,可以使用任意数目的区域。例如,区域列表可以仅包括两个区域,其中一个区域表示静态区域而另一个区域则表示动态区域。另外,LBA可以以任意比例被分配至区域。换句话说,每个区域并非必然要包括相同数目的LBA。例如,如果区域列表仅包括两个区域,则表示静态区域的第一区域可以包括75%的LBA。相反地,表示动态区域的第二区域可以包括25%的LBA。

现在参考图4A和4B,示出了在并未根据区域列表对数据进行重新排列的情况下存储数据的闪存区块400、404、408和412。为了简单,仅使用了两个区域(区域1和区域2),但是可以使用任意数目的区域。类似地,虽然仅示出了均具有九个可寻址页面的四个区块,但是可以使用具有任意数目的可寻址页面的任意数目的区块。

如图4A所示,区块400可以存储包括1A、1B和1C的区域1数据,以及最初包括2A和2B的区域2数据。区域2数据随后可以被更新并且因此被重写为2A’和2B’。相应地,对应于2A和2B的页面存储无效数据。如果区域2数据被更新并再次重写为2A”和2B”,则对应于2A’和2B’的页面也存储无效数据。因此,在区域2数据的若干次重写之后,区块400就会满但是却包括四个页面的无效数据。

类似地,区块404可以存储包括1D、1E和1F的区域1数据,以及最初包括2C、2D和2E的区域2数据。区域2数据随后可以被更新并重写为2C’、2D’和2E’,它们分别对应于与2C、2D和2E相同的逻辑地址。因此,对应于2C、2D和2E的页面存储无效数据。相应地,在区域2数据的一次或多次重写之后,区块404会满但是包括三个页面的无效数据。区块408和412是空的,并且可以被用作针对区块400和404的预留空间。换句话说,如果在清理/融合操作之前对区块400和404中的任何区域2数据执行额外的重写,则区域2数据会被重写至区块408和412同时仍然存储区块400和404中有效的区域1数据和无效的区域2数据。

现在参考图4B,区块400和404中所存储的有效数据可以被重写至区块408和412,并且区块400和404被完全擦除。因此,即使是区域1数据和有效的区域2数据也被擦除和重写。然而,针对区域2数据的后续更新将利用新的区域2数据和无效的区域2数据相对快速地填充区块408和412。这样,将需要额外的预留空间来容纳该重写,并且将可能需要多个区块来容纳预留空间。另外,尽管区域1数据是静态且有效的,但是区域1数据的每个页面也在经更新的区域2数据每次填充区块之一时被擦除和重写。

虽然如所示出的,来自两个区块的数据被重写至两个不同的区块,但是来自两个或更多区块的数据能够被组合在单个区块中或者为了进行最优存储而以其它方式进行重写排列。

现在参考图5A和5B,示出了根据区域列表存储数据的闪存区块500、504、508和512。如图5A所示,区块500可以存储包括1A、1B和1C的区域1数据,以及最初包括2A和2B的区域2数据。区域2数据随后可以被更新并且因此被重写为2A’和2B’。相应地,对应于2A和2B的页面存储无效数据。如果区域2数据被更新并再次重写为2A”和2B”,则对应于2A’和2B’的页面也存储无效数据。因此,在区域2数据的若干次重写之后,区块500就会满但是却包括四个页面的无效数据。

类似地,区块504可以存储包括1D、1E和1F的区域1数据,以及最初包括2C、2D和2E的区域2数据。区域2数据随后可以被更新并重写为2C’、2D’和2E’。因此,对应于2C、2D和2E的页面存储无效数据。相应地,在区域2数据的一次或多次重写之后,区块504就会满但是包括三个页面的无效数据。区块508和512是空的,并且可以被用作针对区块500和504的预留空间。换句话说,如果在清理/融合操作之前对区块500和504中的任何区域2数据执行额外的重写,则区域2数据会被重写至区块508和512同时仍然存储区块500和504中有效的区域1数据和无效的区域2数据。

现在参考图5B,区块500和504中所存储的有效数据可以被重写至区块508和512,并且区块500被504被完全擦除。然而,与图4A和4B中所示的示例相比,该数据根据区域列表而被重新排列。例如,区域1数据基于如图2和3所示的LRU列表和区域列表在区块508中被存储在一起。相反地,区域2数据基于LRU列表和区域列表在区块512中被存储在一起。

因此,区块508中存储的静态区域1数据与对区域1数据和区域2数据二者进行存储的区块相比可以持续避免重写和预留空间更大部分的时间。例如,某些类型的区域1数据可能永不会更新。在其它区块的后续写入操作或重写期间,额外的区域1数据可以被写入区块508中的空页面。然而,能够理解,针对区块508的预留空间有所减少。更具体地,由于在区块508中存储的数据仅是静态的区域1数据,更新是不频繁的。因此,区块508明显不太可能被无效数据所填充并且需要预留的存储空间。

相反地,在区块512中存储的动态区域2数据可能被更为频繁地更新。因此,区块512更可能被无效数据所填充并且需要预留的存储空间。然而,由于区块508不可能需要预留空间,所以可以仅需要空的区块500和504之一来为区块512提供预留空间和/或存储动态区域2数据的额外区块。因此,可以提供较少的额外容量并且使得OPR最小化,以及将预留的存储空间更多地分配给动态区域中的LBA。例如,OPR可能小于5%。仅作为示例,OPR可以大约为1.5%并且实现大约1.1的写入放大。

现在参考图6,在604开始SSD控制方法600。在608,方法600确定多频繁地使用每个逻辑地址。例如,方法600针对逻辑地址生成并维护LRU列表。在612,方法600基于LRU列表在不同区域中安排逻辑地址。每个区域对应于相应逻辑地址更新(即,被写入)得有多频繁。例如,方法600针对逻辑地址生成并维护区域列表。在616,方法600对闪存的多个区块执行清理/融合或其它维护操作。在620,该方法600基于该区域列表对多个区块中所存储的数据进行重写。例如,方法600将对应于相同区域中的逻辑地址的数据存储到相同的区块。该方法600在624结束。

以上描述在本质仅是说明性的并且不旨在对本公开、其应用或使用进行限制。本公开的宽泛教导能够以各种形式来实施。因此,虽然本公开包括特定示例,但是因为其它修改形式通过研习附图、说明书和随后的权利要求而将是显而易见,所以本公开的实际范围并不应当被如此限制。出于清楚的原因,将在附图中使用相同的附图标记来标示相似要素。如这里所使用的,短语A、B和C中的至少一个应当被理解为表示使用非排他性逻辑或的逻辑(A或B或C)。应当理解的是,方法内的一个或多个步骤可以以不同顺序(或同时)执行而并不改变本公开的原理。

如这里所使用的,术语模块可以是指:作为应用特定集成电路(ASIC)的一部分或包括应用特定集成电路(ASIC)、电子电路、组合逻辑电路、现场可编程门阵列(FPGA)、执行代码的处理器(共享、专用或分组)、提供所描述功能的其它适当硬件组件;或者是诸如片上系统中的以上一些或所有的组合。术语模块可以包括存储由处理器所执行的代码的存储器(共享、专用或分组)。

如以上所使用的,术语代码可以包括软件、固件和/或微代码,并且可以是指程序、例程、函数、类和/或对象。如以上所使用的,术语共享意味着来自多个模块的一些或所有代码可以使用单个(共享)处理器来执行。此外,来自多个模块的一些或所有代码可以由单个(共享)存储器进行存储。如以上所使用的,术语群组意味着来自单个模块的一些或所有代码可以使用处理器的群组来执行。此外,来自单个模块的一些或所有代码可以使用存储器的群组进行存储。

这里所描述的装置和方法可以由一个或多个处理器所执行的一个或多个计算机程序来实施。计算机程序包括在非瞬时的有形计算机可读介质上存储的处理器可执行指令。计算机程序还可以包括所存储的数据。非瞬时的有形计算机可读介质的非限制性示例是非易失性存储器、磁性存储和光学存储。

权利要求书(按照条约第19条的修改)

1.一种固态硬盘(SSD),包括:

SSD控制模块,被配置为确定与关联于所述SSD的相应的逻辑地址中所存储的数据多长时间被更新一次所对应的频率并且根据所述频率形成所述逻辑地址的群组,其中形成群组包括:

生成所述逻辑地址的最近最少使用(LRU)列表,其中所述LRU列表指示所述逻辑地址中的每个逻辑地址中所存储的所述数据多长时间被更新一次,以及

基于所述LRU列表生成包括多个区域的区域列表,其中所述多个区域中的每个区域对应于所述LRU列表中的所述逻辑地址的不同的范围,并且所述多个区域中的每个区域包括至少一个所述逻辑地址;以及

存储器控制模块,被配置为基于所述群组将所述数据重新写入至SSD存储区的区块中的物理地址。

2.根据权利要求1所述的SSD,其中所述SSD控制模块包括:

LRU模块,被配置为生成所述LRU列表;以及

区域控制模块,被配置为生成所述区域列表。

3.根据权利要求1所述的SSD,其中所述逻辑地址包括逻辑区块地址(LBA)。

4.根据权利要求1所述的SSD,其中所述存储器控制模块被配置为在所述SSD存储区的第一区块中重写与所述多个区域中的第一区域相关联的第一逻辑地址中的第一数据,并且在所述SSD存储区的第二区块中重写与所述多个区域中的第二区域相关联的第二逻辑地址中的第二数据。

5.根据权利要求1所述的SSD,其中所述SSD存储区包括闪存阵列。

6.根据权利要求1所述的SSD,其中所述SSD控制模块包括被配置为执行固件的处理器。

7.根据权利要求1所述的SSD,其中所述LRU列表和所述区域列表在易失性存储器和非易失性存储器中的至少一个之中存储。

8.根据权利要求1所述的SSD,其中:

与所述SSD相关联的物理地址的第一数目大于所述逻辑地址的第二数目;以及

所述第一数目和所述第二数目之差与所述第二数目之比小于5%。

9.根据权利要求8所述的SSD,其中与所述SSD相关联的写入放大大约是1.1。

10.一种操作固态硬盘(SSD)的方法,所述方法包括:

确定与关联于所述SSD的相应的逻辑地址中所存储的数据多长时间被更新一次所对应的频率;

根据所述频率形成所述逻辑地址的群组,其中所述形成所述群组包括:

生成与所述SSD相关联的逻辑地址的最近最少使用(LRU)列表,其中所述LRU列表指示所述逻辑地址中的每个逻辑地址中所存储的所述数据多长时间被更新一次;

基于所述LRU列表生成包括多个区域的区域列表,其中所述多个区域中的每个区域对应于所述LRU列表中的所述逻辑地址的不同的范围,并且所述多个区域中的每个区域包括至少一个所述逻辑地址;以及

基于所述群组将所述数据重新写入至SSD存储区的区块中的物理地址。

11.根据权利要求10所述的方法,其中所述逻辑地址包括逻辑区块地址(LBA)。

12.根据权利要求10所述的方法,还包括在所述SSD存储区的第一区块中重写与所述多个区域中的第一区域相关联的第一逻辑地址中的第一数据,并且在所述SSD存储区的第二区块中重写与所述多个区域中的第二区域相关联的第二逻辑地址中的第二数据。

13.根据权利要求10所述的方法,其中所述SSD存储区包括闪存阵列。

14.根据权利要求10所述的方法,其中所述LRU列表和所述区域列表在易失性存储器和非易失性存储器中的至少一个之中存储。

15.根据权利要求10所述的方法,其中:

与所述SSD相关联的物理地址的第一数目大于所述逻辑地址的第二数目;以及

所述第一数目和所述第二数目之差与所述第二数目之比小于5%。

16.根据权利要求15所述的方法,其中与所述SSD相关联的写入放大大约是1.1。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号