用于操作NAND闪存物理空间以扩展存储器容量的方法和系统与流程

文档序号:18413896发布日期:2019-08-13 19:05阅读:177来源:国知局
用于操作NAND闪存物理空间以扩展存储器容量的方法和系统与流程

本公开一般地涉及数据存储的领域。更具体地,本公开涉及用于操作nand闪存物理空间以扩展服务器的存储器容量的方法和系统。



背景技术:

因特网和电子商务的激增继续产生大量的数字内容。已创建了各种存储系统和服务器来访问并存储这种数字内容。存储系统或服务器可包括易失性存储器(例如,动态随机存取存储器(dram)和多个驱动器(例如,固态驱动器(ssd))。驱动器可包括用于持久存储的非易失性存储器(例如,nand闪存)。服务器中的存储器在存储系统的性能和容量中起着至关重要的作用。因为当前应用要求增加量的存储器,所以服务器中的存储器(例如,dram)的量可限制系统的整体性能。例如,单个中央处理器(cpu)插口仅可支持有限数量的双列直插存储器模块(dimm)插槽,并且单个dimm基于有限的容量。此外,dram的有限供应可导致成本增加,这可影响可用于在数据中心中使用的dram供应和总拥有成本(tco)两者。

因此,服务器中的存储器的有限的可用性和容量可以在服务器的性能方面产生瓶颈,并且还可能由于数据中心的规模增加而对降低的tco产生挑战。



技术实现要素:

一个实施例有利于非易失性存储器的操作。在操作期间,系统通过闪存转换层模块确定与指示要读取的数据的第一请求相关联的物理块地址,其中,所述非易失性存储器被划分成单独的物理区,其中,所述物理块地址与第一物理区相关联,并且其中,所述单独的物理区中的每一个均具有专用应用来读取数据或者向其写入数据。

在一些实施例中,所述系统将所述非易失性存储器划分成所述单独的物理区。单独的物理区包括一个或更多个nand裸片,并且应用对应于唯一物理区。

在一些实施例中,所述系统通过所述闪存转换层模块确定与指示要写入的数据的第二请求相关联的另一物理块地址,其中,所述另一物理块地址与当前不在处理读取操作或擦除操作的第三物理区相关联。

在一些实施例中,所述方法响应于以下步骤而被执行:针对在所述易失性存储器中与所请求的数据相关联的现有物理块地址在转换检测缓冲器中执行不成功的第一次搜索;以及针对所述现有物理块地址在页面表中执行不成功的第二次搜索。

在一些实施例中,响应于在所述转换检测缓冲器中执行成功的第一次搜索,或者响应于在所述转换检测缓冲器中执行不成功的第一次搜索并且在所述页面表中执行成功的第二次搜索,所述系统基于与所述易失性存储器中的所述现有物理块地址相关联的数据执行所述请求。

在一些实施例中,在所述易失性存储器中获得所述空闲页面帧是响应于在所述易失性存储器中成功地分配可用页面帧。

在一些实施例中,获得所述空闲页面帧并且将所述数据从所述非易失性存储器加载到所述空闲页面帧是响应于在所述易失性存储器中未成功地分配可用页面帧。

在一些实施例中,所述系统确定易失性存储器中的冷页面,其中,所述冷页面是具有小于预定阈值的访问历史的页面,并且其中,所述预定阈值是基于已在预定时间段内访问了所述页面的次数。所述系统通过将数据从所述易失性存储器中的所述冷页面写入到第二物理区来在所述易失性存储器中获得空闲页面帧。所述系统基于所述物理块地址将数据从所述非易失性存储器加载到所述空闲页面帧。所述系统基于加载到所述空闲页面帧中的所述数据执行所述请求。

在一些实施例中,所述系统确定易失性存储器中的热页面,其中,所述热页面是具有大于预定阈值的访问历史的页面,并且其中,所述预定阈值是基于已在预定时间段内访问了所述页面的次数。所述系统基于所述非易失性存储器中的所述热页面的物理块地址,将数据从所述非易失性存储器加载到所述易失性存储器。

在一些实施例中,所述闪存转换层模块在用户空间中操作。

附图说明

图1图示依照本申请的实施例的有利于非易失性存储器的操作的示例性环境。

图2a图示依照现有技术的示例性存储器分配。

图2b图示依照现有技术的描绘若干常规ssd的读取延迟分布的图表。

图3图示依照现有技术的有利于非易失性存储器的操作的示例性架构。

图4图示依照本申请的实施例的有利于非易失性存储器的操作的示例性环境。

图5a呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作的方法的流程图。

图5b呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作的方法的流程图。

图5c呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作(包括将冷页面从易失性存储器移动到非易失性存储器)的方法的流程图。

图6图示依照本申请的实施例的有利于非易失性存储器的操作的示例性计算机系统。

图7图示依照本申请的实施例的有利于非易失性存储器的操作的示例性装置。

在图中,相似的附图标记指代相同的图元素。

具体实施方式

以下描述被呈现来使得本领域的技术人员能够做出并使用实施例,并且是在特定应用及其要求的背景下提供的。对所公开的实施例的各种修改对于本领域的技术人员而言将是容易地显而易见的,并且在不脱离本公开的精神和范围的情况下,可以将本文所定义的一般原理应用于其他实施例和应用。因此,本文所描述的实施例不限于所示出的实施例,而是将符合与本文所公开的原理和特征一致的最宽范围。

概述

本文所描述的实施例提供通过扩展服务器的存储器容量来解决由服务器中的有限的存储器(例如,dram)产生的性能瓶颈的问题的系统。因为当前应用要求增加存储器的量,所以服务器存储器(例如,dram)的可用性和容量可显著地影响系统的整体性能和成本。有限的dram可在服务器的性能方面产生瓶颈,并且还可随着数据中心的规模继续增加而在降低tco时导致挑战。

本文所描述的实施例通过操作服务器的驱动器的非易失性存储器(例如,nand)来解决这些低效率。系统将nand物理介质划分成单独的物理区以处理应用特定请求。系统还实现基于主机的闪存转换层(ftl)(例如,在用户空间中),所述基于主机的ftl将逻辑块地址(lba)映射到物理块地址(pba)(“lba→pba映射”),并且使用该映射来操作非易失性存储器,这扩展服务器的存储器容量。

为了处理传入读取请求,系统可检查转换检测缓冲器(tlb),并且如果需要,检查页面表,以确定所请求的数据是否是在dram中,并且直接地从dram中检索所请求的数据。如果在tlb或页面表中未找到所请求的数据,则系统可生成页面错误,并且用户空间ftl可确定与所请求的数据相对应的pba(例如,针对所请求的数据基于lba→pba映射)。pba与nand物理介质的第一物理区相关联。用户空间ftl然后可将所请求的数据从第一物理区加载到dram。作为此过程的一部分,系统必须分配足够的dram空间以加载所请求的数据。如果在dram中不存在足够的空间,则系统可确定“冷”页面并将它们从dram移动到nand以释放或者提供要将所请求的数据写入到的页面帧。在一些实施例中,系统还可确定“热”页面并将它们从nand移动到dram。冷页面可以是具有小于预定阈值的访问历史的页面,然而热页面可以是具有大于预定阈值的访问历史的页面。此阈值可基于各种因素,例如,已在预定时间段内访问了页面的次数。

此外,如果系统确定要将冷页面从dram移动到nand以便将所请求的数据加载到dram,则系统可将冷页面数据移动到nand中的第二物理区。第二物理区与和读取请求相关联的第一物理区分开。通过使这些区保持分开,两个操作(从nand中的pba读取数据以及将冷页面数据从dram写入到nand)可并行发生。

因此,本文所描述的实施例提供改进存储系统的效率和性能的系统。通过在用户空间中实现ftl并且通过将物理介质划分成应用特定区,系统允许用户空间ftl执行存储器扩展和页面转换功能性。单独的物理区允许系统与(将数据从dram中的冷页面移动到nand的)写入操作并行处理(对位于非易失性存储器(例如,nand)中的数据的)传入读请求,这释放dram空间以用于从nand加载所请求的数据。因此,系统可避免由存储系统的服务器中的有限的dram容量所产生的瓶颈。

示例性环境和网络

图1图示依照本申请的实施例的有利于非易失性存储器的操作的示例性环境100。环境100可包括计算设备102和关联的用户104。计算设备102可经由网络110与存储服务器112、114和116进行通信,所述存储服务器112、114和116可以是分布式存储系统的一部分并且经由客户端服务器(未示出)访问。存储服务器可包括多个存储驱动器,并且每个驱动器可包括控制器和用于数据存储的多个物理介质。例如,服务器116可包括网络接口卡(nic)122、cpu124、dramdimm126以及分别具有控制器134、138、142和146的ssd132、136、140和144。

驱动器可包括已被划分成单独的物理区的物理介质,这允许不同的物理区中的并发操作实现,并且消除在同一物理nand裸片中占用等待并发操作的系统资源的需要。例如,ssd140的ssd控制器142可包括主机接口152、基于设备的ftl模块154、数据恢复模块156、纠错(ecc)编解码器模块158、加密与循环冗余校验(crc)模块160以及通道管理模块162。

ssd140还可包括nand裸片172、174和176,所述nand裸片172、174和176各自与单独的且不同的物理区相关联。系统可确定将要对与将执行其他并发操作的区不同的区中的物理介质执行请求的读取操作(例如,如在下面关于用于将冷页面数据从dram移动到nand的图5c所描述的)。系统还可确定将要对与正在处理正在进行的读取操作的区不同的区中的物理介质执行后续编程或擦除操作。

在操作期间,主机空间中的ftl模块可处理页面错误和页面交换(如在下面关于图3和图4所描述的),而不涉及ssd140的基于设备的ftl154。主机接口152可与主机(例如,用户空间ftl)进行通信以获得具体pba,并且通道管理162可发送要对其具体区中的具体pba执行的命令。应用可被指派给具体区或者与具体区相关联。例如:应用a171可与区1相关联,所述区1可包括nand裸片172并且经由通信182被访问;应用b173可与区2相关联,所述区2可包括nand裸片174并且经由通信184被访问;并且应用x175可与区3相关联,所述区3可包括nand裸片176并且经由通信186被访问。因此,基于主机的ftl可使用lba→pba映射(即,给定pba)来基于与给定pba相关联的具体区直接地对物理介质进行操作。

图2a图示依照现有技术的示例性存储器分配。使用的存储器通过空白框(例如,使用的存储器240)来指示,而空闲或可用存储器通过对角条纹线(例如,空闲存储器242)来指示。存储器请求/分配通过粗线(例如,246)来指示。不同的应用(例如,应用202、204和206)可以对存储器发起请求,这可使系统在服务器的易失性存储器(例如,ram210)中分配一定量的存储器。当在易失性存储器中不再有足够的空间时,系统可在驱动器的非易失性存储器(例如,nand闪存220)中分配存储器。例如,应用202可发送请求232,这导致存储器分配并且导致数据被存储在ram210中。应用204可发送请求234,这导致存储器分配并且导致一些数据被存储在ram210中以及来自应用204的数据的剩余部分被存储在nand闪存220中(经由请求236)。应用206可发送请求238,这导致存储器分配并且导致来自应用206的所有数据被存储在nand闪存220中。

然而,在将数据写入到ssd(例如,nand闪存220的物理介质)时涉及的延迟可以是在将数据写入到dram(例如,ram210)时涉及的延迟的大致三到四倍。此外,因为ssd可能不和dram一样稳定,所以这可导致性能问题,其中一些i/o操作很可能经历显著更长的延迟,如在下面关于图2b所描述的。

图2b图示依照现有技术的描绘若干常规ssd的读取延迟分布的图表250。图表250包括服务质量(qos)252(x轴)和时间254(y轴),并且遍及qos指示时间(以毫秒为单位)。如图表250中所描绘的,每条线对应于常规ssd。长尾延迟对这些常规ssd中的每一个来说都存在,并且主要是由于同一物理nand模块上的操作冲突而导致的。因此,在一个操作正在进行中的同时,不能对同一物理nand介质模块并行执行另一操作。

用于有利于非易失性存储器的操作的示例性架构和环境中的通信

本文所描述的实施例提供解决在将数据写入到ssd时涉及的长延迟(如图2a和图2b中所示)的系统。系统在用户空间中实现ftl,并且还将ssd的物理介质(例如,非易失性存储器的nand裸片)划分成单独的物理区。这允许一个物理区中的操作与单独的物理区中的另一操作并行发生。

图3图示依照现有技术的有利于非易失性存储器的操作的示例性架构300。架构300可包括cpu302、转换检测缓冲器(tlb)304、页面表306、用户空间dram存储器310、用户空间闪存转换层(ftl)312和nand320-330。在操作期间,cpu302可接收指示要读取的数据的请求(经由例如通信340)。cpu302可确定所请求的数据当前是否被存储在dram310中(经由通信342)。系统可针对在dram310中与所请求的数据相关联的现有pba在tlb304中执行第一次搜索(经由例如通信350)。如果tlb搜索成功,则系统可直接地从dram310中检索数据(如通过tlb命中352通信所指示的)。如果tlb搜索不成功,则系统可针对在dram310中与所请求的数据相关联的现有pba在页面表306中执行第二次搜索(经由例如tlb未命中354通信)。如果页面表搜索成功,则系统可直接地从dram310中检索数据(如通过页面命中356通信所指示的)。如果页面表搜索不成功,则系统可生成页面错误(经由例如通信358),并且从ftl312请求数据。

ftl312可直接地通过基于给定pba与nand320-330进行通信来对nand320-330进行操作。例如,ftl312可搜索其lba→pba映射以确定与所请求的数据相关联的物理块地址是nand320的一部分,该部分被指派给具体物理区(“第一物理区”)。

系统还可分配dram310中的足够的空间(例如,可用或空闲页面帧),以经由ftl312从nand320加载所请求的数据。分配足够的空间可包括确定dram310中的一个或更多个冷页面、将数据从冷页面移动到与第一物理区不同的物理区(“第二物理区”)、提供冷页面的页面帧以及将所请求的数据从nand320移动到dram310中的可用页面帧(如在下面关于图5c所描述的)。因此,系统维护非易失性存储器的单独的物理区:在nand320上读取所请求数据的第一物理区;以及从dram310加载冷页面数据的第二物理区,其中第二物理区是不包括nand320的区。通过将非易失性存储器划分成单独的物理区,系统可确保两个同时地发生的操作不会试图访问同一nand裸片,从而减少冲突并且减小在等待并访问同一nand裸片时涉及的延迟。

图4图示依照本申请的实施例的有利于非易失性存储器的操作的示例性环境400。环境400描绘可包括主机410(例如,用户空间)、控制器430(例如,ssd的)和介质440(例如,nand闪存442)的系统层次。主机410可包括应用402、存储器扩展/交换转换模块404、基于主机的闪存转换层(lba→pba)406以及非易失性存储器快速(nvme)驱动器408。控制器430可包括基于设备的闪存转换层432(用对角线示出以指示它未被使用)和基于设备的介质管理434。

在操作期间,存储器扩展/交换转换模块404和基于主机的ftl406可执行关于图3的用户空间ftl312所描述的功能性,包括:在dram中搜索所请求的数据;以及,如果数据不在dram中但是在nand中,则确定lba→pba映射,通过将冷页面移出到nand来在dram中提供足够的空间,并且基于所确定的pba将数据从nand写入到dram。在一些实施例中,系统还可识别“热”页面并将它们从nand移动到dram以得到更高效的访问以为后续i/o请求服务,这可改进系统的性能。

因此,环境400描绘系统如何可绕过基于设备的ftl432(例如,经由可按需传递所确定的pba的通信452),并且进一步使nand闪存直接地暴露于主机410(例如,经由通信454)。注意的是,控制器430使用基于设备的介质管理434来确保介质440的寿命和高效使用。这使得本机ssd能够在绕过基于设备的ftl432的同时适当地起作用。因此,具有存储器扩展功能性(406)的基于主机的ftl(404)使得系统能够直接地对所暴露的闪存介质进行管理和操作。

用于有利于非易失性存储器的操作的方法

图5a呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作的方法的流程图500。在操作期间,系统通过闪存转换层模块确定与指示要读取的数据的第一请求相关联的物理块地址,其中,非易失性存储器被划分成单独的物理区,并且其中,物理块地址与第一物理区相关联(操作502)。单独的物理区中的每一个均具有专用应用来读取数据或者向其写入数据。系统通过将数据从易失性存储器中的冷页面写入到第二物理区来在易失性存储器中获得空闲页面帧,其中,冷页面是具有小于预定阈值的访问历史的页面(操作504)。系统基于物理地址将数据从非易失性存储器加载到空闲页面帧(操作506)。系统基于加载到空闲页面帧中的数据执行请求(操作508)。

图5b呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作的方法的流程图520。在操作期间,系统接收指示要读取的数据的第一请求(操作522)。系统针对在易失性存储器中与所请求的数据相关联的现有物理块地址在转换检测缓冲器(tlb)中执行第一次搜索(操作524)。如果tlb搜索成功(判定526)(即,指示tlb命中),则系统指向易失性存储器中的现有物理块地址(操作532)。如果tlb搜索不成功(判定526)(即,指示tlb未命中),则系统针对在易失性存储器中与所请求的数据相关联的现有物理块地址在页面表中执行第二次搜索(操作528)。如果页面表搜索不成功(判定530)(即,指示页面错误),则操作像图5c的标签a所描述的那样继续。如果页面表搜索成功(判定530)(即,指示页面命中),则系统指向易失性存储器中的现有物理块地址(操作532)。系统基于与易失性存储器中的物理块地址相关联的数据执行请求(操作534)。

图5c呈现依照本申请的实施例的图示用于有利于非易失性存储器的操作(包括将冷页面从易失性存储器移动到非易失性存储器)的方法的流程图550。在操作期间,系统通过闪存转换层模块确定与所请求的数据相关联的物理块地址(操作522),其中,非易失性存储器被划分成单独的物理区,并且其中,物理块地址与第一物理区相关联(操作552)。系统在易失性存储器中分配(例如,malloc)可用页面帧(操作554)。如果malloc操作成功(判定556),则系统基于物理块地址将数据从非易失性存储器的第一物理区加载到可用页面帧(操作566)。如果malloc操作不成功(判定556),则系统确定易失性存储器中的冷页面(操作558)。系统可确定易失性存储器中的一个或更多个冷页面。冷页面是具有小于预定阈值的访问历史的页面,所述预定阈值可基于已在预定时间段内访问了页面的次数。

系统将数据从冷页面写入到第二物理区(操作560)。第二物理区与第一物理区分开。系统将与冷页面相对应的页面帧标记为空闲的(操作562)。系统指派空闲页面帧以用于处理页面错误(操作564)(例如,用于处理操作556的不成功malloc)。系统基于物理块地址将数据从非易失性存储器的第一物理区加载到空闲页面帧(操作566)。系统基于加载到空闲页面帧中的数据执行请求(操作568,其与操作534类似)。

示例性计算机系统和装置

图6图示依照本申请的实施例的有利于非易失性存储器的操作的示例性计算机系统600。计算机系统600包括处理器602、存储器604和存储设备608。计算机系统600可以是计算设备或存储设备。易失性存储器604可包括用作受管理存储器的存储器(例如,ram),并且可用于存储一个或更多个存储器池。非易失性存储器606可包括被用于持久存储的存储器(例如,nand闪存)。此外,计算机系统600可联接到显示设备610、键盘612和指点设备614。存储设备608可存储操作系统616、内容处理系统618和数据632。

内容处理系统618可包括指令,所述指令当由计算机系统600执行时,可使计算机系统600执行本公开中描述的方法和/或过程。例如,内容处理系统618可包括用于接收并发送数据分组(包括写入或者读取数据的请求、要编码并存储的数据或数据的块或页面)的指令。

内容处理系统618可进一步包括用于通过闪存转换层模块确定与指示要读取的数据的第一请求相关联的物理块地址的指令(pba管理模块622)。内容处理系统618可包括用于通过将数据从易失性存储器中的冷页面写入到第二物理区来在易失性存储器中获得空闲页面帧的指令(易失性存储器管理模块628)。内容处理系统618还可包括用于基于物理块地址将数据从非易失性存储器加载到空闲页面帧的指令(通信模块620)。内容处理系统618可包括用于基于加载到空闲页面帧中的数据执行请求的指令(请求执行模块630)。

内容处理系统618可附加地包括用于将非易失性存储器划分成单独的物理区的指令(区划分模块626)。内容处理系统618可包括用于针对现有pba在tlb中执行第一次搜索并且针对现有pba在页面表中执行第二次搜索的指令(易失性存储器管理模块628)。内容处理系统618还可包括用于确定易失性存储器中的一个或更多个冷页面的指令(页面状态确定模块624)。

内容处理系统618可进一步包括用于确定非易失性存储器中的一个或更多个热页面的指令(页面状态确定模块624),以及用于基于非易失性存储器中的热页面的物理块地址将数据从非易失性存储器加载到易失性存储器的指令(通信模块620)。内容处理系统618还可包括用于通过闪存转换层模块确定与指示要写入的数据的第二请求相关联的另一物理块地址的指令(pba管理模块622)。

数据632可包括被需求作为输入或者通过本公开中描述的方法和/或过程被生成为输出的任何数据。具体地,数据632可存储至少:要存储、写入、加载、移动、检索或者复制的数据;数据的块;请求;指示要读取或者写入的数据的请求;逻辑块地址(lba);物理块地址(pba);页面或页面帧的状态的指示器;物理区;物理区的指示器;转换检测缓冲器;页面表;用户空间中的ftl;冷页面;热页面;预定阈值;预定时间段;以及已在预定时间段内访问了页面的次数。

图7图示依照本申请的实施例的有利于非易失性存储器的操作的示例性装置700。装置700可包括可以经由有线、无线、量子光或电通信信道彼此进行通信的多个单元或装置。装置700可以使用一个或更多个集成电路来实现,并且可以包括比图7中所示出的那些单元或装置更少或更多的单元或装置。进一步地,装置700可以被集成在计算机系统中,或者作为能够与其他计算机系统和/或设备进行通信的单独的装置被实现。具体地,装置700可包括执行与图7的计算机系统700的模块620-630类似的功能或操作的单元702-712,包括:通信单元802;pba管理单元804;页面状态确定单元706;区划分单元708;易失性存储器管理单元710;以及请求执行单元712。

在此详细描述中描述的数据结构和代码通常被存储在计算机可读存储介质上,所述计算机可读存储介质可以是可存储代码和/或数据以供由计算机系统使用的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、诸如磁盘驱动器、磁带、cd(紧致盘)、dvd(数字通用盘或数字视频盘)的磁和光学存储设备,或能够存储现在已知或以后开发的计算机可读介质的其他介质。

可将在具体实施方式部分中描述的方法和过程具体实现为代码和/或数据,所述代码和/或数据可被存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行被具体实现为数据结构和代码并且存储在计算机可读存储介质内的方法和过程。

此外,上述的方法和过程可被包括在硬件模块中。例如,硬件模块可包括但不限于专用集成电路(asic)芯片、现场可编程门阵列(fpga)以及现在已知或以后开发的其他可编程逻辑器件。当硬件模块被激活时,硬件模块将执行包括在硬件模块内的方法和过程。

已经出于图示和描述的目的呈现了本文所描述的前面的实施例。它们不旨在为详尽的或者将本文所描述的实施例限于所公开的形式。因此,许多修改和变化对于本领域的技术人员而言将是显而易见的。附加地,以上公开内容不旨在限制本文所描述的实施例。本文所描述的实施例的范围由所附权利要求来限定。

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