掌桥专利:专业的专利平台
掌桥专利
首页

混合SSD数据缓存预取系统及方法

文献发布时间:2024-04-18 20:00:50


混合SSD数据缓存预取系统及方法

技术领域

本发明属于缓存数据管理技术领域,具体涉及一种基于历史访问分析的混合SSD数据缓存预取系统及方法。

背景技术

随着闪存(Flash Memory,闪速存储器)技术的不断发展,存储领域呈现了基于NAND闪存的固态硬盘(Solid State Drive,SSD)替代硬盘(Hard Disk Drive,HDD)的趋势。闪存是一种高速、低功耗、小体积的芯片级存储介质,相较于基于机械旋转结构HHD,具有更宽阔的应用前景。基于NAND闪存的SSD一般由主机接口层、缓冲区管理层(BufferManagement Layer,BML)、闪存转换层(Flash Translation Layer,FTL)和NAND闪存阵列层组成,闪存阵列层可以支持同质芯片、异质芯片和芯片内异质(片内物理块block可以采用不同的介质)。其中,主流的介质包含SLC、MLC、TLC、QLC。这四种介质的主要区别在于其单个介质的存储容量依次递增,但读写速度依次递减。所以,在混合SSD中如何进行数据操作和布局,对于混合SSD的整体性能具有决定性影响。

目前,在FTL和BML设计方面已经存在大量工作,这些工作一般从工作负载的微观特性入手,针对性的优化FTL、BML性能,实现混合SSD性能和使用寿命的提升。但是,目前的混合SSD性能优化目标主要是写入性能提升以及使用寿命的提升,而忽略了读取性能,导致在以读取请求为主的工作负载环境中,无法充分利用混合SSD的硬件性能,进而造成读取速率低下。具体地,现有技术存在以下不足之处:

(1)SSD缓存是一个小容量的DRAM,用来缓存从主机端接收来的写入数据以及从NAND Flash读入的数据。基于访问数据的局部性特征,缓存的这些数据一般都是采用LRU、FIFO等基础策略进行数据的替换的,用以在DRAM上尽可能缓存访问热数据来实现频繁访问的快速响应。对于写入数据,目前研究有将分析数据热度信息,进而减少写入混合SSD的写延迟以及延长混合SSD使用寿命。但针对于读入数据,还是采用基础的策略进行数据的替换。在数据库等读取请求居多的工作负载环境中,缓存命中率低下,高速DRAM设备没有得到充分利用。

(2)由于混合SSD的缓存命中率低下,大部分的读取请求都需要直接去NAND Flash上进行读取,并将数据加载到DRAM缓存中,之后再从DRAM将数据传递给主机端。这一读取请求流程的时间开销要远远高于DRAM缓存命中,数据直接从DRAM传递给主机端的时间开销,即混合SSD读取性能低下。

混合SSD上读取数据缓存策略的好坏与SSD的读取操作性能是强相关,现有的SSD缓存策略,采用短期被动式缓存方式(例如最近最少使用,LRU),即只有在缓存容量大小内的时序访问数据存在重复式访问才会在缓存中被命中。同时缓存容量大小内从来没有访问过的数据,第一次读取请求是不可能命中的,只有缓存未命中一次之后,在缓存容量大小这个空间内再次访问才会命中。

发明内容

本发明的目的是为了解决上述混合SSD缓存针对读取请求偏多的负载应用情况下较低命中率以及高读取响应延迟的问题,提出了一种基于历史访问分析的混合SSD数据缓存预取系统及方法。

为了实现上述发明目的,本发明采用如下技术方案:

一种混合SSD数据缓存预取系统,包括主机设备端和混合SSD设备端;

主机设备端包括运行在内存中的文件系统层FSL和主机接口层HIL,FSL用于向混合SSD设备端发送数据读取请求,并负责维护、更新内存中文件数据;HIL用于连接混合SSD设备端和主机设备端;

混合SSD设备端,包括缓冲区管理层BML、闪存转换层FTL和NAND闪存阵列层,BML运行在混合SSD设备端的DRAM缓存中,用于管理缓存数据,包括来自FSL的写入请求数据以及来自NAND闪存阵列层的读取请求数据,BML中维护了一个DRAM数据块的元数据LRU队列,用于感知在DRAM中数据块对应的逻辑地址和踢出顺序;FTL用于将逻辑地址翻译成闪存芯片内物理地址,当接收到地址关联感知的读写指令时,FTL将指令传递给NAND闪存阵列层的闪存控制器;闪存控制器根据相应的闪存芯片内地址,读写相应数据。

作为优选方案,所述HIL的主机接口标准包括SATA协议、PCIe协议、NVMe协议中的至少一种。

作为优选方案,所述BML包括历史访问分析模块和数据预取模块,历史访问分析模块用于记录历史访问信息并在记录满时对历史访问进行分析整合,并构建地址空间划分类,地址空间划分类用于保存前后具有相关性的地址数据;数据预取模块用于存储预取数据。

作为优选方案,每个闪存芯片中包含多个block、每个block包含多个数据页page;

其中,同一个闪存芯片包括SLC介质的block、TLC介质的block,TLC block中包含数量相同的三种页面:LSB、CSB、MSB。

本发明还提供如上任一项方案所述的混合SSD数据缓存预取系统的混合SSD数据缓存预取方法,包括以下步骤:

步骤1:BML维护一个固定长度的LRU页面元数据队列,用于分配缓存给读取请求数据页以及预取数据页;BML维护一个固定长度的历史访问记录以及固定空间大小的地址空间划分类,用于预取操作;

步骤2:当主机设备端需要从混合SSD设备端中读取数据时,其将请求发送给HIL;

步骤3:HIL通过解析来自FSL的读取请求,依照NVMe协议指令格式,重写指令,并将读取指令传输给混合SSD设备端的BML中;

步骤4:BML接收到读取请求时,查看当前请求的数据是否在DRAM中,若在则缓存命中,将数据直接从DRAM中读取到主机设备端;否则,BML将读取请求发送给FTL,让FTL来完成读取操作;

步骤5:FTL接收到读取请求,将请求读取的逻辑地址转换成混合SSD中的内部物理地址,并将请求发往NAND闪存阵列层中的闪存芯片;

步骤6:NAND闪存阵列层中芯片接收到请求将指定数据返回给FTL;

步骤7:FTL将数据返回给BML;BML接收到FTL返回的数据加入到DRAM中,并将其元数据加入到LRU队列中;加入到LRU后,再将数据返回给主机设备端,一次读取请求完成;

步骤8:BML完成一次读取请求之后,将本次访问请求添加到历史访问记录中;当历史访问记录满时,需要进行历史访问分析,跳转步骤9;若没满,直接进行数据预取,跳转到步骤10;

步骤9:历史访问分析模块开始进行分析构建地址空间划分类,为下一个历史访问记录周期进行数据预取提供依据;构建好地址空间划分类后清空历史访问记录,进入下一个历史访问记录周期;开始进行数据预取操作,跳转到步骤10;

步骤10:BML中的数据预取模块开始进行数据预取操作,根据当前完成的访问请求,查找上一个历史访问记录周期地址空间划分类归属;若有归属,则直接将其地址空间划分类所涉及的数据预取到DRAM中,更新LRU元数据信息;若没有归属,则遍历短期访问历史,看是否有归属的地址空间划分类,并预取其地址空间划分类的前后固定大小的数据到DRAM中,更新LRU元数据信息;

步骤11:重复上述步骤2到步骤10。

与现有技术相比,本发明的有益效果是:

本发明针对现有对于读取请求优化缺失的BML、FTL设计进行了补充,提出了一种基于历史访问分析的混合SSD数据缓存预取方法。现有BML、FTL设计主要考虑写入请求的优化,以达到减少写入延迟和延长SSD使用寿命的目标,但是忽略了在以读取请求为主的工作负载下,缓存命中率底下的问题,进而造成了硬件资源的浪费以及系统读取请求高响应延迟。本发明通过分析历史访问的地址空间以及前后地中空间的相关性关系(局部性特征),预知当前读取请求后未来大概率会被访问地址数据,并提前预取到DRAM中,以达到未来读取请求的低响应延迟以及高缓存命中率的效果。

附图说明

图1为混合SSD设备结构图;

图2为专利整体框架图;

图3为构建地址空间划分类示意图;

图4为数据预取操作示意图;

图5为本方法的流程示意图;

图6为本发明所涉及的工作负载相关信息;

图7为本发明与传统LRU方法的缓存命中率对比;

图8为本发明与传统LRU方法的读取响应延迟对比;

图9为本发明与传统LRU方法的写入响应延迟对比。

具体实施方式

以下结合附图对本发明作进一步说明,具体的实施步骤如下。

本发明提出了一种基于历史访问分析的混合SSD数据缓存预取系统,其使用的场景是面向以读取请求为主的工作负载,在混合SSD的DRAM缓存上进行数据预取。混合SSD设备基本结构如图1所示,每个SSD控制器通过若干个通道与闪存芯片实现交互,每个芯片内部封装了若干个闪存晶粒(Die),每个晶粒由若干个存储矩阵(Plane)组成。每个存储矩阵包含大量的异构矩阵块,包括SLC block和TLC block。每个物理块又封装了大量的物理页。闪存读写操作的单位是一个物理页。如图2所示,系统的整体架构,包括主机设备端和混合SSD设备端,分别包含文件系统层、主机接口层、缓冲区管理层(包括历史访问分析模块、数据预取模块)、闪存转换层、NAND闪存阵列层。

(1)文件系统层(FSL)

FSL运行在主机设备端的内存中,是一个负责维护、更新内存中文件数据的模块。在文件系统中,一个文件是由多个文件块组成,并且每个文件块由若干个4KB大小的数据块组成。在读取请求较多的工作负载中,FSL会频繁向混合SSD设备端发送文件块读取请求,请求一般由请求时间、进程ID、起始逻辑地址(逻辑地址:在计算机中,每个数据块都会被分配一个唯一的逻辑地址,用于到外部存储设备中进行读取写入操作)、请求大小以及读写类型组成。这一层会向混合SSD设备端发送数据读取请求。

FSL是发起文件块读取写入请求的源头,在主机设备端会源源不断地对文件数据进行读取写入操作,文件系统层中的读写请求一般在是绑定到具体的文件的,这些请求传送给主机接口层。

(2)主机接口层(HIL)

HIL是连接混合SSD设备端和主机设备端之间的接口,其负责传输数据和控制信号,使得计算机系统能够与SSD进行通信和数据交换。目前,主流的主机接口标准包括SATA(Serial Advanced Technology Attachment)、PCIe(Peripheral ComponentInterconnect Express)、NVMe(Non-Volatile Memory Express)。这里采用了NVMe协议,它可以充分发挥混合SSD的性能潜力,提供尽可能低的延迟和更高的吞吐量。

主机接口层根据文件系统层传来的请求,转换成NVMe协议的指令格式,即<时间戳,进程ID,起始地址,请求大小,读写标记>。时间戳表示请求到来的时间,进程ID是系统内进程唯一标识,起始地址是请求开始地址(逻辑地址,LBA),请求大小表示需要读写的数据大小(以扇区为单位,即512B),读写标记指出当前指令是读取操作还是写入操作。最后,HIL将NVMe指令下传到混合SSD设备端的缓冲区管理层。(3)缓冲区管理层(BML)

BML运行在混合SSD设备端的DRAM缓存中,用于管理缓存数据,包括来自FSL的写入请求数据以及来自NAND闪存阵列层的读取请求数据。BML中维护了一个DRAM数据块的元数据LRU队列,用于感知在DRAM中数据块对应的逻辑地址和踢出顺序。本发明在这一层实现两个功能模块。其一是历史访问分析模块,用于记录历史访问信息并在记录满时对历史访问进行分析整合,并构建地址空间划分类(一个地址空间划分类保存了一些前后相关性很高的地址数据,即其中一个地址数据被访问,那么和它在一个地址空间划分类的数据未来很可能会被访问),为下一时间段的数据预取提供依据。其二是数据预取模块,用于存储预取数据,以便提高后续读取请求的缓存命中率。利用DRAM设备的快速IO性能,可以实现读取请求的快速响应。

BML在SSD中的DRAM中维护了历史访问记录、地址空间划分类以及对应的数据元数据的LRU队列(用于管理数据的换入换出)。BML接收到来自主机设备端中主机接口传下来的NVMe读取指令,其会执行相应的数据读取返回操作,这里包含了从DRAM直接返回数据和向FTL发送读写请求。同时会记录历史访问信息,并更新地址划分类。最后执行相应的数据预取操作,将数据读入DRAM中并将元数据加入到LRU中。

具体地,对于历史访问分析模块,本模块会记录每一个HIL下传到BML的读请求,记录的格式为<起始地址,结束地址,时间戳>,其中结束地址=起始地址+请求大小。当记录空间满了,开始执行地址空间划分,如图3所示。将历史记录按照起始地址从小到大排序,之后遍历排序后的记录,如果前后两个记录的访问空间,即[起始地址,结束地址]存在交集,则认为是属于同一个地址空间类,并合并到一起形成一个地址类,如图中地址类a和地址类b。遍历整个历史记录序列后,会形成若干个地址空间类,为后续数据预取模块提供预取依据。

对于数据预取模块,本模块在BML完成每次读取请求之后触发,将当前读取请求信息加入到历史访问记录中,如图4中②。根据当前读取请求所涉及的地址空间,到上一个记录周期所得到的地址划分类中查找,看是否有所属类,若有所归属,则进行向FTL发送预取请求执行与去操作,将数据加入到DRAM中,并更新LRU元数据信息。如图4中③④⑤所示。如果没有归属,则需要查看本记录周期的近期访问历史,按照历史访问分析模块中分析的方式一样,合并交集的读取请求地址空间,之后查看当前读取请求属于哪一地址类。若有所归属,假如归属类为[x,y],则预取固定大小的当前地址类前后相邻地址空间,如图4中的⑥,其中要确保预取的地址空间与[x,y]相邻且不相交;若没有归属,直接预取当前读取请求地址空间的前后相邻地址空间,如图4中的⑥,start_LBA应该在[5000,5016]之外,并且保证预取数据的<起始地址,结束地址>与[5000,5016]相邻。

(4)闪存转换层(FTL)

FTL运行在混合SSD设备端,是一个将逻辑地址翻译成闪存芯片内物理地址的模块。当接收到地址关联感知的缓存管理器的读写指令时,翻译层会将其传过来的数据逻辑地址翻译成需要写回到的NAND闪存芯片内地址,并将指令传递给NAND闪存阵列层中相应的闪存控制器。

FTL接收到BML发来的读写请求,将逻辑地址转换成相应的SSD内部物理地址,并读取相应地址空间上的数据并返还给FTL或将数据写入相应地址空间。

(5)NAND闪存阵列层

NAND闪存阵列层存在于混合SSD设备端,是一个确切执行数据读写的设备层。当接收到读写请求指令时,闪存控制器根据相应的芯片内地址,读写相应数据。这里,每个闪存芯片中包含多个block、每个block包含多个数据页page。并且,同一个闪存芯片即包括SLC介质的block、也包括TLC介质的block。TLC block中包含数量相同的三种页面,即LSB、CSB、MSB,读写延迟依次递增,但都比SLC页面读写延迟高。

NAND闪存阵列层是执行具体读写请求的物理层。通过FTL提供的具体SSD物理地址,找到数据并依次读出返回到FTL。

基于上述混合SSD数据缓存预取系统,如图5所示,本发明实施例还提供基于历史访问分析的混合SSD数据缓存预取方法,包括以下步骤:

步骤1:BML维护一个固定长度的LRU页面元数据队列,用于分配缓存给读取请求数据页以及预取数据页;BML维护一个固定长度的历史访问记录以及固定空间大小的地址空间划分类,用于预取操作;

步骤2:当主机设备端需要从混合SSD设备端中读取数据时,其将请求发送给HIL;

步骤3:HIL通过解析来自FSL的读取请求,依照NVMe协议指令格式,重写指令,并将读取指令传输给混合SSD设备端的BML中;

步骤4:BML接收到读取请求时,查看当前请求的数据是否在DRAM中,若在则缓存命中,将数据直接从DRAM中读取到主机设备端;否则,BML将读取请求发送给FTL,让FTL来完成读取操作;

步骤5:FTL接收到读取请求,将请求读取的逻辑地址转换成混合SSD中的内部物理地址,并将请求发往NAND闪存阵列层中的闪存芯片;

步骤6:NAND闪存阵列层中芯片接收到请求将指定数据返回给FTL;

步骤7:FTL将数据返回给BML;BML接收到FTL返回的数据加入到DRAM中,并将其元数据加入到LRU队列中;加入到LRU后,再将数据返回给主机设备端,一次读取请求完成;

步骤8:BML完成一次读取请求之后,将本次访问请求添加到历史访问记录中;当历史访问记录满时,需要进行历史访问分析,跳转步骤9;若没满,直接进行数据预取,跳转到步骤10;

步骤9:历史访问分析模块开始进行分析构建地址空间划分类,为下一个历史访问记录周期进行数据预取提供依据;构建好地址空间划分类后清空历史访问记录,进入下一个历史访问记录周期;开始进行数据预取操作,跳转到步骤10;

步骤10:BML中的数据预取模块开始进行数据预取操作,根据当前完成的访问请求,查找上一个历史访问记录周期地址空间划分类归属;若有归属,则直接将其地址空间划分类所涉及的数据预取到DRAM中,更新LRU元数据信息;若没有归属,则遍历短期访问历史,看是否有归属的地址空间划分类,并预取其地址空间划分类的前后固定大小的数据到DRAM中,更新LRU元数据信息;

步骤11:重复上述步骤2到步骤10。

对于一具体实际应用案例,上述混合SSD数据缓存预取方法具体流程如下:

步骤1:文件系统发起IO请求,将请求传输给HIL。

步骤2:HIL接收到IO请求指令,解析其文件关联的逻辑地址,再通过偏移量得到请求的确切逻辑地址。最后,依照NVMe协议的规定,构成<时间戳,进程ID,起始地址,请求大小,读写标记>指令格式传送给混合SSD设备端的BML。

步骤3:BML接收到NVMe IO请求指令,根据读写标记查看是读取请求还是写入指令,如果是写入指令则正常执行,若为读取指令,BML判断DRAM维护的中的LRU中是否有当前读取请求对应的逻辑地址块。若有,BML则将命中的数据块返回给主机设备端,并更新数据块元数据在LRU中的位置;若没有,则到NAND闪存阵列中读取数据,并将数据读到DRAM中,并将元数据更新到LRU中,之后再从DRAM中将数据返还给主机设备端。

步骤4:BML记录读取请求信息到历史访问记录,记录格式<起始地址,结束地址,时间戳>。

步骤5:记录一次读取访问记录后,判断当前记录空间是否满了,若满了,更新地址换分类,再查看是否有对应的地址划分类;若未满,直接查找是否有对应的地址划分类。

步骤6:若有对应的地址划分类,将对应的地址划分类数据预取到DRAM中,并更新LRU元数据信息;若没有,则遍历近期访问历史记录,跳转步骤7。

步骤7:若近期访问历史记录中,存在与当前读取请求相邻或相交的空间,则合并两个空间,并预取这个空间的前后两个固定大小地址空间数据到DRAM中,更新LRU元数据;不存在,则直接预取当前读取请求的固定大小的相邻地址空间数据到DRAM中,更新LRU元数据。

步骤8:重复步骤1到7。

为了验证本发明的效果,从三个方面与现有方法进行了对比,分别是与传统LRU方法的混合SSD缓存命中率对比、与传统LRU方法的读取响应延迟对比、与传统LRU方法的写入响应延迟对比。实验平台为128GB的SSD、划分2MB的DRAM空间作为读取数据缓存、4KB的页面大小、8通道数、SLC block与TLC block数量比例是92:676、SLC block与TLC block包含的页面数分别为128和384。对比试验,设计方面选用了基于LRU策略的DRAM和基于历史访问分析的缓存预取策略的DRAM。其中,我们在计算缓存命中率时所采用的I/O负载是来源于MSRCambridge(MSRC)发布的开源I/O负载集合,共15个。工作负载信息如附图6所示,其中HM_1、PRN_1、PROJ_1、PROJ_3、PROJ_4为以读取请求为主工作负载。

混合SSD读取请求缓存命中率效果:如图7所示,15个工作负载采用本发明预取方法,其混合SSD DRAM缓存命中率相较于传统LRU的缓存策略均有提升,DRAM缓存命中率平均提升命中率36.324%,其中USR_0工作负载的缓存命中率提升最高,提升了63.081%

混合SSD读取请求延迟效果:如图8所示,15个工作负载的混合SSD平均4KB页面读取延迟均小于传统LRU的缓存策略,平均减少4KB读取延迟为54.619%。其中,针对于PRN_1、PROJ_1、PROJ_3、PROJ_4等以读取请求为主工作负载,4KB页面读取延迟降低明显,最多减少80.096%。

混合SSD写入请求延迟效果:如图9所示,本发明在降低读取响应延迟的情况下,对于写入响应延迟的影响几乎为零。在15个工作负载中,对于写入响应延迟最大的是PROJ_1工作负载,增加了4.321%写入延迟时间。

以上所述仅是对本发明的优选实施例及原理进行了详细说明,对本领域的普通技术人员而言,依据本发明提供的思想,在具体实施方式上会有改变之处,而这些改变也应视为本发明的保护范围。

相关技术
  • 一种预拌砂浆生产加工用预混合设备
  • 一种环保型预拌砂浆制备工艺及环保型预拌砂浆
技术分类

06120116543393