消除NAND闪存设备中的无用单元收集的制作方法

文档序号:11063423阅读:300来源:国知局
消除NAND闪存设备中的无用单元收集的制造方法与工艺

发明领域

本发明涉及用于存储和访问闪存系统中的数据的系统和方法。

发明背景

一般闪存包括很多数据块(最小可擦除单元)。每个数据块包括几个数据页面(最小可编程单元)。读和写操作可在页面级被执行。擦除操作仅在块级被执行。由于闪存的内部特征,闪存页面不能被盖写。它需要在编程操作之前被擦除。因为擦除操作是非常时间密集的(它是块级操作)且也减小闪存块寿命(每个闪存块与固定数量的擦除循环相关),闪存供应商常常执行闪存页面盖写操作,例如1)写新闪存页面,2)使旧闪存页面无效。

这导致同一页面的很多版本,一旦数据被修改,除了页面的最新版本以外的所有这些版本都是无效的。同一页面的几个无效拷贝将增加设备空间消耗,这导致写放大(WA)的增加。

具有很多无效页面的块仍然不适合于重新使用,因为有效页面不能被擦除。设备无用单元收集(GC)负责通过将有效页面移动到新块来回收无效页面,一旦块没有所有有效页面、它被擦除以及这个块现在可由即将发生的写使用。

设备GC不非常频繁地运行,因为GC过程将干扰设备吞吐量。在具有很多无效页面的很多块中,只有某些块(牺牲块)由无用单元收集过程拾取用于清理。如果块具有最大数量的无效页面,则识别牺牲块通常被完成。由于所有这些阈值和限制,所写入的物理信息的实际量是多倍的被预期写入的逻辑量。因此,写暗示由设备GC=(被写到闪存的数据/由主机写的实际数据)引起。

某些对象存储应用例如levelDB和rocksDB被设计为日志结构合并树(LSM)系统。类似于SSD(固态驱动器),这些应用具有不再被需要的对象的很多无效版本。称为压缩的过程常常运行,其将通过移除对象的无效版本来压缩数据库。在SSD上运行的这些应用将同样通过存储无效对象来创建写放大。由数据库引起的WA是(被写到闪存的数据/被写到数据库的实际数据)。系统的总WA因此是闪存驱动器的WA乘以数据库的WA。

本文公开的装置和方法提供用于避免闪存系统中的写放大的改进的方法。

附图的简要说明

为了使本发明的优点被更容易理解,将通过参考在附图中示出的特定实施方式来描写在上面简要描述的本发明的更特定的描述。理解了这些附图只描绘本发明的一般实施方式且因此不应被考虑为其范围的限制后,将通过附图的使用以额外的特殊性和细节来描述和解释本发明,其中:

图1是适合于实现根据本发明的实施方式的方法的计算系统的示意性方框图;

图2是根据现有技术的存储系统的部件的示意性方框图;

图3是根据本发明的实施方式的存储系统的示意性方框图;

图4是根据本发明的实施方式的用于执行写操作的方法的过程流程图;

图5是根据本发明的实施方式的用于删除数据块的方法的过程流程图;以及

图6是根据本发明的实施方式的用于执行读操作的方法的过程流程图;

详细描述

将容易理解,可在各种不同的配置中布置并设计如通常在本文的附图中所述和所示的本发明的部件。因此,如在附图中表示的本发明的实施方式的下面的更详细描述并不意欲限制如所主张的本发明的范围,而是仅仅代表根据本发明的目前设想的实施方式的某些例子。通过参考附图将最好地理解目前描述的实施方式,其中相似的部件始终由相似的数字表示。

响应于最新技术水平且特别是响应于在本领域中的还没有被当前可用的装置和方法完全解决的问题和需要来发展本发明。

根据本发明的实施方式可被体现为装置、方法或计算机程序产品。相应地,本发明可采取完全硬件实施方式、完全软件实施方式(包括固件、常驻软件、微代码等)或组合通常都可在本文被称为“模块”或“系统”的软件和硬件方面的实施方式的形式。此外,本发明可采取体现在任何有形表达介质中的计算机程序产品的形式,有形表达介质具有体现在介质中的计算机可用的程序代码。

可利用一个或多个计算机可用或计算机可读介质的任何组合。例如,计算机可读介质可包括便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦除可编程只读存储器(EPROM或闪存)设备、便携式光盘只读存储器(CDROM)、光学存储设备和磁性存储设备中的一个或多个。在所选择的实施方式中,计算机可读介质可包括可包含、存储、传递、传播或传送用于由或结合指令执行系统、装置或设备来使用的程序的任何非临时介质。

可以用一种或多种编程语言——包括面向对象的编程语言例如Java、Smalltalk、C++等和常规过程编程语言例如“C”编程语言或类似的编程语言——的任何组合来写用于执行本发明的操作的计算机程序代码。程序代码可完全在计算机系统上作为独立软件封装、在独立硬件单元上、部分地在与计算机间隔开某个距离的远程计算机上、或完全在远程计算机或服务器上执行。在后一情形中,远程计算机可通过任何类型的网络——包括局域网(LAN)或广域网(WAN)——连接到计算机,或到外部计算机的连接可被做出(例如使用互联网服务提供商通过互联网)。

下面参考根据本发明的实施方式的方法、装置(系统)和计算机程序产品的流程图图示和/或方框图来描述本发明。将理解,流程图图示和/或方框图的每个框和在流程图图示和/或方框图中的框的组合可由计算机程序指令或代码实现。这些计算机程序指令可被提供到通用计算机、专用计算机的处理器或其它可编程数据处理装置以产生机器,使得经由计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现在流程图和/或一个或多个方框图中规定的功能/行动的模块。

这些计算机程序指令还可存储在可指导计算机或其它可编程数据处理装置以特定的方式运行的非临时计算机可读介质中,使得存储在计算机可读介质中的指令产生制造物品,包括实现在流程图和/或一个或多个方框图中规定的功能/行动的模块。

计算机程序指令还可被装到计算机或其它可编程数据处理装置上以使一系列操作步骤在计算机或其它可编程装置上被执行以产生计算机实现的过程,使得在计算机或其它可编程装置上执行的指令提供用于实现在流程图和/或一个或多个方框图中规定的功能/行动的过程。

图1是示出示例计算设备100的方框图。计算设备100可用于执行各种过程,例如在本文讨论的过程。计算设备100可以起服务器、客户端或任何其它计算实体的作用。计算设备可执行如本文讨论的各种监控功能,并可执行一个或多个应用程序,例如本文所述的应用程序。计算设备100可以是各种计算设备例如桌上型计算机、笔记本计算机、服务器计算机、手持计算机、平板计算机等中的任一个。

计算设备100包括一个或多个处理器102、一个或多个存储器设备104、一个或多个接口106、一个或多个大容量设备108、一个或多个输入/输出(I/O)设备110和显示设备130,所有设备都耦合到总线112。处理器102包括执行存储在存储器设备104和/或大容量存储设备108中的指令的一个或多个处理器或控制器。处理器102还可包括各种类型的计算机可读介质,例如高速缓存存储器。

存储器设备104包括各种计算机可读介质,例如易失性存储器(例如随机存取存储器(RAM)114)和/或非易失性存储器(例如只读存储器(ROM)116)。存储器设备104还可包括可写ROM,例如闪存。

大容量存储设备108包括各种计算机可读介质,例如磁带、磁盘、光盘、固态存储器(例如闪存)等。如图1所示,特定的大容量存储设备是硬盘驱动器124。各种驱动器也可被包括在大容量存储设备108中以能够从各种计算机可读介质读取和/或写到各种计算机可读介质。大容量存储设备108包括可移动介质126和/或不可移动介质。

I/O设备110包括允许数据和/或其它信息被输入到计算设备100或从计算设备100取回的各种设备。示例I/O设备110包括光标控制设备、键盘、袖珍键盘、麦克风、监视器或其它显示设备、扬声器、打印机、网络接口卡、调制解调器、透镜、CCD或其它图像捕获设备等。

显示设备130包括能够向计算设备100的一个或多个用户显示信息的任何类型的设备。显示设备130的例子包括监视器、显示终端、视频投影设备等。

接口106包括允许计算设备100与其它系统、设备或计算环境交互作用的各种接口。示例接口106包括任何数量的不同网络接口120,例如本地局域网(LAN)、广域网(WAN)、无线网络和互联网的接口。其它接口包括用户接口118和外围设备接口122。接口106还可包括一个或多个用户接口元件118。接口106还可包括一个或多个外围接口,例如打印机、指示设备(鼠标、跟踪板等)、键盘等的接口。

总线112允许处理器102、存储器设备104、接口106、大容量存储设备108和I/O设备110与彼此以及耦合到总线112的其它设备或部件通信。总线112代表几种类型的总线结构中的一种或多种,例如系统总线、PCI总线、IEEE 1394总线、USB总线等。

为了说明的目的,程序和其它可执行程序部件在本文被示为分立的块,但是应理解,这样的程序和部件可在各种时间存在于计算设备100的不同存储部件中,并由处理器102执行。可选地,本文所述的系统和过程可在硬件或硬件、软件和/或固件的组合中实现。例如,一个或多个专用集成电路(ASIC)可被编程以执行本文所述的一个或多个系统和过程。

参考图2,包括固态驱动器(SSD)200的闪存系统200一般可包括多个NAND闪存设备202。一个或多个NAND设备202可与NAND接口204通过接口连接,NAND接口204与SSD控制器206交互作用。SSD控制器206可从主机接口208接收读和写指令,主机接口208在主机设备例如包括计算设备100的一些或所有属性的设备上或为主机设备实现。主机接口208可以是数据总线、存储器控制器或计算设备例如图1的计算设备100的输入/输出系统的其它部件。在常规系统中,无用单元收集由NAND接口204或SSD控制器206执行。如上面提到的,这导致由于无用单元收集和数据库管理功能引起的写放大。

图3示出根据本发明的实施方式的改进的存储系统。特别是,SSD控制器206可以相对于现有技术的SSD控制器极大地简化。SSD控制器206可包括常规部件,例如用于存储来自主机系统的指令的队列300、从队列300取回命令并通过NAND接口204以常规方式执行它们的命令处理器302。

在所示实施方式中,SSD控制器206留存逻辑到物理块映射306和空闲块池308。SSD控制器206可将逻辑块标识符分配到在NAND闪存202内的存储器块。相应地,SSD控制器206可存储将每个逻辑块标识符映射到物理块标识符、即在NAND闪存202中的物理块的地址的逻辑到物理块映射306。

SSD控制器206还可维持空闲块池308。特别是,在存储器块被擦除之后,对那个存储器块的引用(例如逻辑标识符或物理地址)可被添加到空闲块池308。当接收到写指令时,条目由SSD控制器206从空闲块池308删除,且在写指令中的数据块然后将在由所删除的条目引用的存储器块处被写到NAND闪存202。

SSD控制器206可从主机接口208接收指令。主机接口208可包括输入/输出(I/O)模块310和高速缓存器312。高速缓存器312可缓存来自一个或多个应用的指令,且I/O模块310可将这些指令提交到SSD控制器206,接收对指令的响应(例如写操作的确认、响应于读操作的数据读取等)。

访问NAND闪存202的应用可具有应用314的一些或所有功能。应用314可有利地是数据库应用。如上面提到的,很多数据库应用具有显著的写放大。相应地,如由本文公开的系统和方法提供的在SSD控制器206处的写放大的消除在提高数据库应用的性能方面特别有帮助。

应用314可以是从存储器读取并由计算机系统的中央处理单元或处理单元组执行的应用。应用314不是固件、基本输入输出系统(BIOS)的部分、由SSD控制器206或介于主机系统的中央处理单元和NAND闪存202之间的其它设备执行的固件的部分。应用314可定义用于接收用户指令并将信息(例如在显示器130上)输出给用户的用户接口。应用314可定义被编程为接收输入和呈现包括用户界面元件并向用户显现信息的界面的图形用户界面。

应用314可包括存储管理模块316。存储管理模块可包括映射模块318。映射模块318可将应用内的数据对象映射到数据对象被存储于的逻辑块,即相应于数据对象被存储于的物理存储器块的逻辑块。然而,映射模块318优选地不维持逻辑存储器块到相应的物理存储器块的映射。同样,映射模块可例如以在逻辑块内的偏移的形式将数据的页面映射到在逻辑块内的存储器的页面。相应地,引用页面或其它数据对象的读和写操作可由映射模块318映射到在逻辑块内的地址。映射模块318可接着对于每个读和写操作输出引用逻辑块和在逻辑块内的位置的相应的读和写操作。相应的读和写操作可接着例如通过主机接口208被输入到SSD控制器206。

存储管理模块316可包括写聚集模块320。在一些实施方式中,写仅对数据的完整块执行。相应地,写聚集模块320可聚集由应用314在其执行期间调用的写命令,每个写命令包括数据对象。写聚集模块320可聚集写命令,直到所聚集的写命令的数据对象足以填充数据的至少一个块为止。在那时,写聚集模块322可接着向SSD控制器206发出写命令,写命令包括足以占据整个存储器块的所聚集的写命令的数据对象。

存储管理模块316可包括修剪模块(trim module)322。修剪模块322可在应用314的执行期间检测删除数据对象的指令。修剪模块322可存储对所删除的对象的引用,即指示所删除的对象是无效的条目。一旦在存储器块例如相应于逻辑块标识符的存储器块中的所有对象被确定为无效的,修剪模块322就可接着发送引用那个逻辑块标识符的修剪命令。修剪命令指示SSD控制器206擦除由逻辑块标识符引用的存储器的物理块。SSD控制器206可将修剪命令加入队列并根据使修剪命令与更紧急读和写命令交错的算法来执行它们,以便提高SSD控制器206的吞吐量。

图4示出可由应用314和SSD控制器206执行的方法400。方法400可包括接收写命令402。写命令可由应用314、即应用314的某个部件、功能或模块调用并由存储管理模块316接收。应用314例如通过在缓冲器中创建描述写命令的条目来缓存写命令404。该条目可包括待写入的数据,即页面或其它数据对象或对调用写命令的功能或模块的引用。方法400可包括评估缓冲器是否包括关于足以至少占据整个存储器块的数据对象的写命令406。如果否,则该方法在步骤402以接收随后的写命令而继续。

如果缓冲器被发现包括关于足以占据整个存储器块的数据对象的写命令,则在步骤408应用314将写命令调用到SSD控制器206,写命令包括在缓冲器中的写命令的数据对象。写命令可包括单个写命令,其包括在写命令中的所有数据对象,或可包括单独的写命令的集合。

响应于例如通过主机接口208接收到在步骤408调用的写命令,SSD控制器206可从空闲块池308选择一存储器块410。可使用逻辑或物理块标识符在池308中引用存储器的空闲块。在任一情况下,来自步骤408的写命令的数据被写到相应于在步骤410选择的逻辑或物理块标识符的存储器的物理块412。将数据写到物理块412可包括对数据编码(例如使用纠错码(ECC)编码),且所编码的数据接着被写入412。

相应于存储器的物理块的逻辑块标识符可接着返回(步骤414)到应用314,其接收逻辑块标识符416并将写命令的数据映射到那个逻辑块标识符418。特别是,在步骤402接收的写命令中包括的数据对象由应用314映射到在步骤416接收的逻辑块标识符418。例如,每个数据对象的变量名称或其它引用可映射到逻辑块标识符和可能映射到存储每个数据对象的由逻辑块标识符引用的存储器块内的偏移418。数据对象被存储在存储器块内的偏移可由SSD控制器206返回或由应用314确定,即遵循在步骤408发送的写命令中的数据对象的排序。

参考图5,所示方法500可由应用314和SSD控制器206执行,以便擦除存储器块。方法500可包括接收删除或以其他方式无效化数据对象(在下文中“所删除的数据对象”)的命令502。删除命令可由应用314、即应用314的某个部件、功能或模块调用,并由存储管理模块316接收。响应于在步骤502接收的命令,使在命令中引用的数据对象无效504。例如,在数据对象到逻辑块标识符和相应于逻辑块标识符的存储器块内的位置的映射中,可在所删除的数据对象的映射中设置标志以指示所删除的数据对象是无效的。

方法500可包括评估数据对象被映射到的逻辑块标识符是否包含任何有效的数据对象506。如果包含,则该方法可在步骤502以接收另一删除命令而继续。如果逻辑块标识符被发现没有被映射到其的任何有效的数据对象506,则方法500可包括输出引用该逻辑块标识符的修剪命令508。修剪命令可例如通过主机接口208被输出到SSD控制器206。

当接收到修剪命令510时,SSD控制器206可识别相应于在修剪命令中的逻辑块标识符的物理块标识符。引用那个物理块标识符的修剪命令可接着被加入队列并最终由SSD控制器206执行514。如上面提到的,当修剪命令被执行时,可由在读和写命令和任何未决的修剪命令当中区分优先次序的优先化算法确定。当擦除相应于逻辑块标识符的存储器的物理块时,存储器的物理块返回(步骤516)到空闲块池308,即引用所擦除的存储器块的物理或逻辑块标识符被添加到空闲块池308。

如在图5中明显的,SSD控制器206不执行无用单元收集,以便擦除存储器的物理块。在一些实施方式中,应用314可通过将有效数据对象从逻辑块移动,使得逻辑块不再包含任何有效的数据对象,并可在修剪命令中被引用来执行无用单元收集。例如,逻辑块可由应用314识别为包含小于阈值的多个有效数据对象或大于阈值的多个无效对象,并且作为响应,将有效对象移动到新逻辑块并为所识别的逻辑块调用修剪命令。

从SSD控制器206的功能移除无用单元收集提高了SSD控制器206的性能,特别是其吞吐量。在现有技术SSD控制器中,执行很多优先化以管理无用单元收集,以便提高设备的性能并延长它的寿命。通过从SSD控制器206移除无用单元收集,对这些复杂过程的需要被消除了,从而提高性能。

参考图6,所示方法600可由应用314和SSD控制器206执行,以便从NAND闪存读取数据。方法600可包括接收引用数据对象的读命令(在下文中“读数据对象”)600。读命令可由应用314、即应用314的某个部件、功能或模块调用并由存储管理模块316接收。响应于在步骤602接收的读命令,应用314传输引用读数据对象的读命令604。例如,应用314可使用映射模块318来识别逻辑块标识符和在相应于数据对象的逻辑块标识符内的偏移。应用314可接着例如通过主机接口208将引用那个逻辑块标识符和偏移的读指令传输到SSD控制器206。

SSD控制器206接收在步骤604传输的读命令606并识别由读命令的逻辑块标识符引用的存储器的物理块608。SSD控制器206接着执行关于NAND闪存202的读命令610以取回在被包括在读命令中的偏移处的数据对象,并将数据对象返回(步骤612)到应用314。执行读命令610可包括从在读命令中引用的位置读取所编码的数据以及将所编码的数据解码以得到所存储的数据。将所编码的数据解码可包括将ECC编码数据解码,使得可能出现的误差使用在所编码的数据中的信息例如使用在本领域中已知的任何ECC方案被校正。应用314接收所读取的数据614并将它返回到在步骤602调用读命令的应用的部件、功能、模块或其它实体。

本发明可体现在其它特定的形式中而不偏离它的精神或基本特征。所述实施方式应在所有方面中被考虑为仅仅例证性的而不是限制性的。特别是,虽然关于NAND闪存SSD描述了方法,其它SSD设备或非易失性存储设备例如硬盘驱动器也可受益于本文公开的方法。本发明的范围因此由所附权利要求而不是由前述描述指示。出现在权利要求的等效形式的含义和范围内的所有变化应被包括在它们的范围内。

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