一种NVMe接口磁盘存储方法、系统、终端及存储介质技术方案

技术编号:37555949 阅读:15 留言:0更新日期:2023-05-15 07:39
本发明专利技术涉及存储技术领域,尤其涉及一种NVMe接口磁盘存储方法、系统、终端及存储介质。所述NVMe接口的SATA磁盘存储方法包括:NVMe队列中工作任务的聚合等处理。处理后数据的处理由SATA ACC处理,包括,在通道组中寻找空闲通道。对空闲的通道配置Cmd Descriptor。配置通道的DD,若有多个DD就配置多次。解析Cmd Descriptor,解析出本次SATA命令使用的槽位号及其对应的Command Table地址。构造PRDT列表,并写入到Command Table中相应的位置。构造CFIS。通过槽位号触发该SATA命令。本发明专利技术该方案通过把大量小IO聚合成大IO,大大提升了存储设备的性能,用硬件实现SATA ACC进一步提升处理性能。增强了该系统的广泛的应用场景。理性能。增强了该系统的广泛的应用场景。理性能。增强了该系统的广泛的应用场景。

【技术实现步骤摘要】
一种NVMe接口磁盘存储方法、系统、终端及存储介质


[0001]本专利技术涉及存储
,尤其涉及一种NVMe接口磁盘存储方法、系统、终端及存储介质。

技术介绍

[0002]在企业存储市场,SATA磁盘凭借其在容量、持久性和成本上的优势,其在保有量上长期占据相当的份额。另一方面,计算机主机出于对存储设备速率的无止境的需求,其在接口选择上又不得不放弃SATA接口。在计算机与存储设备的软件交互上,更倾向于采用NVMe传输协议作为存储设备的数据传输协议。
[0003]NVMe(Non

VolatileMemoryexpress,非易失性内存主机控制器接口规范)磁盘在物理介质上提高了磁盘的性能,但是在原有的AHCI(AdvancedHostControllerInterface,高级主机控制器接口)规范中,只定义了一个交互队列,那么主机与磁盘之间的数据交互只能通过一个队列通信,也就是多核处理器也只能通过一个队列与磁盘进行数据交互,无法更好地发挥NVMe磁盘的物理特性。而NVMe协议可以最多有64K个队列,每个CPU(CentralProcessingUnit,中央处理器)或者核心都可以有一个队列,这样并发程度大大提升,性能也自然更高了。
[0004]那么设计一种上行接口为NVMe协议,下行接口为SATA协议的存储设备,即可以迎合NVMe协议接口的高速率、定制性强等优点,也可以迎合SATA磁盘的,特别是SATA机械磁盘的大容量、低成本和高稳定性等优点,此类存储设备尤其存在的价值。
[0005]其中,作为此类存储设备,如何把主机的NVMe协议请求转换为对SATA磁盘的请求就是一个关键问题,本专利技术重点公开了此问题的解决方案。
[0006]按照NVMe协议的规定,其数据包可以用PRP List进行描述。在存储设备内部管理的数据出于便利性,其数据也由定制化PRP List描述(CPRP List,Customer PRP List)。此处,我们可以认为NVMe协议规定的PRP List属于CPRP List的一个特殊情况。
[0007]类似地,在存储设备内部,面向磁盘的数据IO请求用DD(Data Descriptor,数据描述符)来描述。DD中除了CPRP List的描述信息外,其亦定义了数据IO的类型(读、写)、磁盘标识、起始地址、数据长度等命令信息的定义,另外还定义一些补充信息,比如是否使能参考数据列表等。
[0008]按照AHCI规范,发送到AHCI控制器SATA命令使用Command Table描述,其主要包括有CFIS和PRDT列表两个部分。其中PRDT列表部分描述了该SATA命令的数据信息,如图1所示。
[0009]SATA磁盘挂载在AHCI控制器的某一个端口上,AHCI控制器为每个端口准备了最多32个SATA命令槽位,用于存放即将被执行的SATA命令。SATA命令若要存放在某个槽位,则其命令信息就当写入到槽位号对应的Command Table内存区域。写入就绪后,把槽位号通知AHCI控制器,说明槽位号对应的Command Table中CFIS和PRDT列表都已就绪,后续执行由AHCI控制。
[0010]把CB描述的数据请求下发到SATA磁盘,其中如下三个步骤涉及软硬件交互较多,对CPU性能消耗大:
[0011]PRDT列表构造,即把CB中通过CPRP List描述的数据转换为SATA磁盘控制器的数据描述格式。按照AHCI规范,SATA磁盘控制器的数据描述格式为PRDT格式。具体地,其用一个PRDT列表来描述一个SATA命令(即一次SATA磁盘交互)的数据,每个列表元素描述一个数据段,包括数据分包的指针和数据长度。所有数据段一起构成了SATA命令的完整数据描述。
[0012]PRDT列表构造就是循环地从CPRP List中找到各个数据段的数据指针及其长度,写入到PRDT的相应元素中相应位置,直到处理完所有数据段。
[0013]CFIS构造,即提取CB中的命令信息以及Cmd Descriptor中的数据长度信息,按照SATA命令规范要求进行CFIS的填写,并按照AHCI规范填写到相应Command Table的CFIS内存区域。
[0014]命令下发。Command Table填写完整后,需要通过把槽位号写入SATA磁盘控制器的完成命令下发。后续的SATA命令的执行由SATA磁盘控制器自主完成。
[0015]在软件上,把数据从CPRP List转换为PRDT列表,构造CFIS,触发SATA控制器执行SATA命令等工作不存在编写困难。但由于存在多次软硬件交互,CPU性能受到很大影响,尤其在SATA磁盘数量较多时,CPU性能受到影响巨大。
[0016]由上所述,NVMe协议到SATA协议的转换需要经过复杂的软件流程和软硬件交互过程,需要考虑的软硬件设计问题也是多方面的;主要是一方面对硬件加速引擎通道的浪费,另一方面是缓存带来的延时增大的副作用。

技术实现思路

[0017]为了解决上述现有技术中存在的一方面对硬件加速引擎通道的浪费,另一方面是缓存带来的延时增大的副作用的技术问题,本专利技术提供了一种NVMe接口磁盘存储方法、系统、终端及存储介质,本专利技术关于加速引擎,其定义了两个部分,通道组和加速引擎。通道组由多个通道组成,加速引擎与通道一一对应。通道负责接收软件的Cmd Descriptor配置信息和一个或多个DD信息,其同时记录本通道的工作状态。加速引擎解析通道传递过来的Cmd Descriptor和DD(Data Descriptor),并据此进行PRDT列表的构造、CFIS构造和命令下发,命令下发后同步更新对应通道的工作状态。各通道及其引擎独立工作。
[0018]其中,以实现NVMe接口SATA存储系统为目的的软硬件架构设计,以及工作流程为本专利技术的核心技术点。
[0019]为实现上述目的,本专利技术实施例提供了如下的技术方案:
[0020]第一方面,在本专利技术提供的一个实施例中,一种NVMe接口磁盘存储方法,所述NVMe接口的SATA磁盘存储方法包括:
[0021]S10、NVMe队列中工作任务的聚合处理;
[0022]S20、在通道组中寻找空闲通道;
[0023]S30、对空闲的通道配置Cmd Descriptor;
[0024]S40、配置通道的DD,若有多个DD就配置多次;
[0025]S50、解析Cmd Descriptor,解析出本次SATA命令使用的槽位号及其对应的Command Table地址;
[0026]S60、构造PRDT列表,并写入到Command Table中相应的位置;
[0027]S70、构造CFIS;
[0028]S80、通过槽位号触发该SATA命令;
[0029]S90、标记通道为“完成”状态。
[0030]作为本专利技术的进一步方案,所述槽位号触发该SATA命令包括:
[0031]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种NVMe接口磁盘存储方法,其特征在于,所述NVMe接口的SATA磁盘存储方法包括:S10、NVMe队列中工作任务的聚合处理;S20、在通道组中寻找空闲通道;S30、对空闲的通道配置Cmd Descriptor;S40、配置通道的DD,若有多个DD就配置多次;S50、解析Cmd Descriptor,解析出本次SATA命令使用的槽位号及其对应的Command Table地址;S60、构造PRDT列表,并写入到Command Table中相应的位置;S70、构造CFIS;S80、通过槽位号触发该SATA命令;S90、标记通道为“完成”状态。2.根据权利要求1所述的一种NVMe接口磁盘存储方法,其特征在于,所述槽位号触发该SATA命令包括:S81、解析Cmd Descriptor中的SATA命令槽位号、Command Table地址和数据长度;S82、解析DD中的CPRP List和参考CPRP List;S83、依次读取CPRP List的数据指针及其数据长度;S84、若使能参考CPRP List,使用参考CPRP List中数据指针相关字段的描述处理数据指针及其长度;S85、依次写入Command Table中的PRDT列表中的元素;CPRP List数据指针与PRDT列表中的元素一一对应,并写入内容包括数据指针和数据长度;S86、判断CPRP List是否处理完毕,如果是,则执行S87,如果否,则执行S83;S77、判断SATA命令的数据长度与PRDT列表中已填写的数据长度是否相等,如果是,则执行S88,如果否,则执行S83;S78、触发该SATA命令,把SATA命令使用的槽位号写入到AHCI触发寄存器,完成命令触发;S79、通知通道完成命令触发。3.根据权利要求2所述的一种NVMe接口磁盘存储方法,其特征在于,所述数据指针相关字段的描述处理中,把数据指针做偏移,即在指针上加或减固定值;把部分数据指针替换为固定值;跳过部分数据指针。4.根据权...

【专利技术属性】
技术研发人员:程广亮李幸远崔健沈欣舞吴睿振
申请(专利权)人:山东云海国创云计算装备产业创新中心有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1