首页> 中国专利> 一种面向多核的NVM存储设备模拟器及设计方法

一种面向多核的NVM存储设备模拟器及设计方法

摘要

本发明提出了一种面向多核的NVM存储设备模拟器及设计方法,依据NVM存储设备的地址空间进行存储分区大小的划分,将存储空间分解为多个可以并发访问的分区;针对NVM存储设备内部具有多个级别并发的特性,设置多个访问请求处理线程,在NVM存储设备内模拟出多个并行访问通道;将访问请求分解为一系列的元操作,并使用四元组表示,分别对应NVM模拟器中能并发访问的不同存储空间;并给出了一种面向多核的NVM存储设备模拟器结构,对NVM存储空间做了更精细化的划分,模拟出NVM存储设备内部的并行性,提高NVM模拟器的吞吐率,并能适应多核环境中I/O访问请求冲突率较高的特性,提高NVM模拟器执行I/O访问请求的效率,同时提高系统在多核间的扩展性。

著录项

  • 公开/公告号CN112506425A

    专利类型发明专利

  • 公开/公告日2021-03-16

    原文格式PDF

  • 申请/专利权人 江苏大学;

    申请/专利号CN202011298618.2

  • 申请日2020-11-19

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

  • 代理机构

  • 代理人

  • 地址 212013 江苏省镇江市京口区学府路301号

  • 入库时间 2023-06-19 10:16:30

说明书

技术领域

本发明属于计算机存储技术领域,具体涉及一种面向多核的NVM存储设备模拟器及设计方法。

背景技术

NVM存储设备具有嵌入式处理能力,低延迟、支持字节寻址和接近内存的读写速度等特性,主要有相变存储器、阻抗式存储器和3D-XPoint等。当前的NVM存储设备模拟器还主要是模拟执行访问请求的流程,缺乏对NVM存储设备内部多个并行I/O通道的模拟,也难以模拟在多核环境中NVM存储设备的真实方式和I/O性能;并未充分考虑多核处理器带来的挑战,仍然使用存储设备驱动等中常用的单处理队列等方式,难以高效完成多核环境中冲突较多的大量访问请求。在Filebench的Webserver负载用来模拟用户访问Web服务器的情况时,在每次I/O大小为4KB,线程数量为1、2、4、6、8、10、12和14的情况下,开源的PMEM会在线程数为8时达到IOPS的最大峰值,随着线程数的继续增加,会产生越来越多的访问请求冲突,单处理队列影响了访问请求的执行,吞吐率值会开始逐渐下降。

发明内容

为了解决上述问题,本发明提出一种面向多核的NVM存储设备模拟器,通过融合分区与条带化的空间管理策略和基于元操作的访问请求分解策略,减小访问请求冲突后锁的粒度,增加执行I/O访问请求的并发度,并提高NVM存储设备模拟器的吞吐率以及执行I/O访问请求的效率。而本发明则在模拟出NVM存储设备中多个可以并发的I/O通道的前提下进一步优化NVM存储设备模拟器中访问请求的执行方式,相比PMEM的吞吐率值提高了11.9%~15.6%,在线程数为12时,NVM存储设备模拟器相比PMEM所提高吞吐率值的比例最高达到了15.6%。

为了实现上述目的,本发明的技术方案为:一种面向多核的NVM存储设备模拟器设计方法,包括以下步骤:

步骤1)依据非易失性存储器NVM存储设备的地址空间进行存储分区大小的划分,将存储空间分解为多个可以并发访问的分区;

步骤2)针对NVM存储设备内部具有多个级别并发的特性,设置多个访问请求处理线程,在NVM存储设备内模拟出多个并行访问通道;

步骤3)将访问请求分解为一系列的元操作,并使用四元组表示,分别对应NVM模拟器中能并发访问的不同存储空间。

进一步,所述步骤1)具体步骤如下:

步骤1.1:定义一个分区存储空间的大小范围,作为待划分NVM存储空间的分区依据,其中将每一个分区存储空间大小定义为一个固定值,将连续的存储空间中每固定值作为一个分区,得到一组连续的分区;

步骤1.2:增加分区字段标识P_id作为每个分区的标记,并记录NVM存储空间的起始地址,第一个分区的起始地址为P_start,则下一个分区的起始地址为P_start+固定值,以此类推。

进一步,所述步骤2),具体步骤如下:

步骤2.1:在NVM驱动设备初始化模块中添加多通道的初始化函数cpu_list_init(),cpu_list_init()是创建的函数名,其中包含使用多线程创建出多个链表队列的功能,模拟多通道的执行,使用内核线程kthread初始化空的双链表结构队列io_queue,模拟出并行访问的多个I/O通道;

步骤2.2:同时给队列设置Q_id字段标识,将分区字段P_id的值赋给Q_id,设置多个访问请求处理线程并发处理对NVM存储设备模拟器的大量访问请求;

步骤2.3:增加多通道队列向上层获取访问请求的函数get_request_from_list(struct list_head*head,int list_type),get_request_from_list(struct list_head*head,int list_type)函数是从链表中获取请求的函数,struct list_head*head是用链表头指针获取链表的第一个请求,int list_type为链表的类型定义;当上层请求队列不为空时,通过多线程从上层队列获取到访问请求R。

进一步,所述步骤3),具体步骤如下:

步骤3.1:获取访问请求R所访问区域的地址;

步骤3.2:将访问请求R所访问区域的地址与NVM存储设备模拟器中分区的地址区域进行比较;

步骤3.3:如果访问请求R所访问区域全部位于某一个分区内,则直接将该访问请求R转变为一个元操作AR,使用四元组AR(Req_id,P_id,Start_add,Length)表示,其中,Req_id是访问请求R的标识,P_id表示所对应的存储空间分区编号,Start_add是元操作所访问存储空间的起始位置,Length表示元操作所访问存储空间的长度;并将分区的标识写入对应AR中的P_id中,AR中Start_add和Length值为访问请求R的起始地址和长度;否则需要对访问请求R进行分解。

进一步,所述步骤3.3),具体步骤如下:

步骤3.3.1:检查访问请求R与NVM存储设备模拟器分区i是否有重叠;

步骤3.3.2:如果有,则将访问请求R与分区i的重叠部分,构成一个元操作;否则,转到步骤3.3.3;

步骤3.3.3:如果分区i是NVM存储设备模拟器中的最后一个分区,则结束访问请求分解流程;否则,转到下一个NVM存储设备模拟器分区i+1,并转到步骤3.3.1继续执行。

本发明的面向多核的NVM存储设备模拟器,包括融合分区与条带化的空间管理策略和基于元操作的访问请求分解策略模块;上述模块是在Linux内核地址的尾部预留40GB的空间作为PMEM的存储地址空间,并在其内核代码中进行修改来模拟NVM存储设备,基于软件编程实现的融合分区与条带化的空间管理策略和基于元操作的访问请求分解策略模块;融合分区与条带化的空间管理策略模块,可以模拟出NVM存储设备内部的多个并行数据访问通道,同时面向多核环境优化存储空间的管理;由此能改变当前NVM存储模拟器仅能模拟访问请求执行流程而缺乏并发机制的缺陷,也为在多核环境中提高处理不同核心所发出访问请求的执行效率提供一个基础;基于元操作的访问请求分解策略模块,负责面向多核环境NVM存储设备模拟器内部特性,对收到的访问请求进行分解,并完成相应的访问请求;从而减少NVM存储设备模拟器在执行访问请求时的锁粒度和加锁次数,增加执行访问请求执行的并发度,降低多核环境中大量访问请求冲突对NVM存储设备模拟器I/O性能和带宽的影响。

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

1.引入条带化存储空间管理的思想,在模拟NVM存储设备内多个并行访问通道的基础上,将NVM存储设备模拟器中的存储空间划分为多个可以并发访问的分区,提高NVM存储设备模拟器的吞吐率,也为提高NVM存储设备模拟器执行访问请求的并发度奠定基础;

2.将I/O访问请求分解为多个I/O元操作,分别对应NVM存储设备模拟器中能并发访问的不同存储空间,从而适应多核环境中I/O访问请求冲突率较高的特性,通过缩小访问请求冲突后锁的粒度,增加执行I/O访问请求的并发度,提高NVM存储设备模拟器执行I/O访问请求的效率。

附图说明

图1为本发明的访问请求执行流程结构示意图;

图2为本发明中访问请求R位于单个分区内分解执行图;

图3为本发明中访问请求R位于多个分区内分解执行图。

具体实施方式

为了能够更清楚地理解本发明的技术内容,下面将结合附图和具体实施案例对本发明做进一步的说明,须指出的是,所描述出的实施案例旨在便于对本发明的理解,而对其没有任何先定要求。

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

本发明的面向多核的NVM存储设备模拟器,包括融合分区与条带化的空间管理策略和基于元操作的访问请求分解策略模块;上述模块是在Linux内核地址的尾部预留40GB的空间作为PMEM的存储地址空间,并在其内核代码中进行修改来模拟NVM存储设备,基于软件编程实现的融合分区与条带化的空间管理策略和基于元操作的访问请求分解策略模块;融合分区与条带化的空间管理策略模块,可以模拟出NVM存储设备内部的多个并行数据访问通道,同时面向多核环境优化存储空间的管理;由此能改变当前NVM存储模拟器仅能模拟访问请求执行流程而缺乏并发机制的缺陷,也为在多核环境中提高处理不同核心所发出访问请求的执行效率提供一个基础;基于元操作的访问请求分解策略模块,负责面向多核环境NVM存储设备模拟器内部特性,对收到的访问请求进行分解,并完成相应的访问请求;从而减少NVM存储设备模拟器在执行访问请求时的锁粒度和加锁次数,增加执行访问请求执行的并发度,降低多核环境中大量访问请求冲突对NVM存储设备模拟器I/O性能和带宽的影响。

本发明依据将分配给NVM存储模拟器的存储空间分解为多个分区,以此来模拟NVM存储设备中能并行访问的多个I/O通道,从而将现有NVM存储模拟器中单一的逻辑存储空间转变为多个能并行读写的区域;针对NVM存储设备模拟器中空间分区和条带化后存储管理的特点,将访问请求分解为一系列的元操作,使用四元组AR(Req_id,P_id,Start_add,Length)表示,其中,Req_id是访问请求R的标识,P_id表示所对应的存储空间分区编号,Start_add是元操作所访问存储空间的起始位置,Length表示元操作所访问存储空间的长度;从而减小访问请求冲突后锁的粒度,增加执行I/O访问请求的并发度,并提高NVM存储设备模拟器的吞吐率以及执行I/O访问请求的效率。

实施例1

如图1所示为本发明的访问请求执行流程结构示意图,本发明为一种面向多核的NVM存储设备模拟器,包括以下步骤:

步骤1:依据NVM存储设备的地址空间进行存储分区大小的划分,将存储空间分解为多个可以并发访问的分区;

步骤2:定义一个分区存储空间的大小范围为10GB,为PMEM的存储地址空间预留40GB大小作为待划分的NVM存储空间,将连续的存储空间划分为四个分区,得到一组连续的分区,标记为分区0、分区1、分区2以及分区3;

步骤3:增加分区字段标识P_id作为每个分区的标记,对于分区0的P_id=0,分区1的P_id=1,以此类推,并记录NVM存储空间的起始地址,第一个分区的起始地址为P_start[0]为0,第二个分区的起始地址为P_start[1]为大小10G时的地址,以此类推。

步骤4:针对NVM存储设备内部具有多个级别并发的特性,设置四个访问请求处理线程,在NVM存储设备内模拟出多个并行访问通道;

步骤5:在NVM驱动设备初始化模块中添加多通道的初始化函数cpu_list_init(),使用内核线程kthread初始化空的双链表结构队列io_queue,模拟出并行访问的多个I/O通道;

步骤6:同时给队列设置Q_id字段标识,将分区字段P_id的值赋给Q_id,设置多个访问请求处理线程并发处理对NVM存储设备模拟器的大量访问请求;

步骤7:当上层请求队列不为空时,利用多通道队列向上层获取访问请求的函数get_request_from_list(struct list_head*head,int list_type),通过多线程从上层队列链表中获取一个访问请求R。

步骤8:获取访问请求R所访问区域的地址;

步骤9:将访问请求R所访问区域的地址与NVM存储设备模拟器中分区的地址区域进行比较;

步骤10:检查访问请求R与NVM存储设备模拟器分区0是否有重叠;

步骤11:访问请求R所访问区域全部位于分区0内,则直接将该访问请求R转变为一个元操作AR,并将分区的标识写入对应AR中的P_id中,AR中Start_add和Length值为访问请求R的起始地址和长度,转到步骤7;

步骤12:访问请求R与NVM存储设备模拟器分区1有重叠,将访问请求R与分区1的重叠部分,构成一个元操作,否则,转到步骤10;

步骤13:分区1不是NVM存储设备模拟器中的最后一个分区,转到下一个NVM存储设备模拟器分区i+1,并转到步骤12继续执行;

步骤14:分区3是NVM存储设备模拟器中的最后一个分区,结束分解流程。

步骤15:获取每个元操作中的P_id字段值;

步骤16:根据元操作四元组中P_id字段的值确定所对应的分区请求队列;

步骤17:设置多个访问请求处理线程,由多个执行队列分别获取该元操作,并将元操作插入到其P_id值所对应的分区请求队列链表中处理执行。

实施例2

如图2所示,一种面向多核的NVM存储设备模拟器,访问请求R(标识为R_j)所访问区域全部位于NVM存储设备模拟器分区i内的情况,此时访问请求R转变为一个元操作AR,P_id的值设置为分区i的标识,Start_add和Length值为访问请求R的起始地址(R_start)和长度(R_length),所生成的元操作AR四元组是(R_j,i,R_start,R_length)。

实施例3

如图3所示,一种面向多核的NVM存储设备模拟器,当访问请求R(标识为R_j)所访问区域位于NVM存储设备模拟器中i和i+1两个分区时,此时执行基于元操作的分解策略,将访问请求R分解为两个元操作AR

步骤1:访问请求R与NVM存储设备模拟器分区i有重叠;

步骤2:将重叠部分构成一个元操作,元操作AR

步骤3:访问请求R与下一个NVM存储设备模拟器分区i+1有重叠;

步骤4:将重叠部分构成一个元操作,元操作AR

步骤5:到NVM存储设备模拟器中的最后一个分区没有重叠,结束访问请求的分解;

步骤6:分别用四元组表示分解得到的元操作AR

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号