一种NVMe接口磁盘存储方法、系统、终端及存储介质与流程

文档序号:34138556发布日期:2023-05-12 20:08阅读:76来源:国知局
本发明涉及存储,尤其涉及一种nvme接口磁盘存储方法、系统、终端及存储介质。
背景技术
::1、在企业存储市场,sata磁盘凭借其在容量、持久性和成本上的优势,其在保有量上长期占据相当的份额。另一方面,计算机主机出于对存储设备速率的无止境的需求,其在接口选择上又不得不放弃sata接口。在计算机与存储设备的软件交互上,更倾向于采用nvme传输协议作为存储设备的数据传输协议。2、nvme(non-volatilememoryexpress,非易失性内存主机控制器接口规范)磁盘在物理介质上提高了磁盘的性能,但是在原有的ahci(advancedhostcontrollerinterface,高级主机控制器接口)规范中,只定义了一个交互队列,那么主机与磁盘之间的数据交互只能通过一个队列通信,也就是多核处理器也只能通过一个队列与磁盘进行数据交互,无法更好地发挥nvme磁盘的物理特性。而nvme协议可以最多有64k个队列,每个cpu(centralprocessingunit,中央处理器)或者核心都可以有一个队列,这样并发程度大大提升,性能也自然更高了。3、那么设计一种上行接口为nvme协议,下行接口为sata协议的存储设备,即可以迎合nvme协议接口的高速率、定制性强等优点,也可以迎合sata磁盘的,特别是sata机械磁盘的大容量、低成本和高稳定性等优点,此类存储设备尤其存在的价值。4、其中,作为此类存储设备,如何把主机的nvme协议请求转换为对sata磁盘的请求就是一个关键问题,本发明重点公开了此问题的解决方案。5、按照nvme协议的规定,其数据包可以用prp list进行描述。在存储设备内部管理的数据出于便利性,其数据也由定制化prp list描述(cprp list,customer prp list)。此处,我们可以认为nvme协议规定的prp list属于cprp list的一个特殊情况。6、类似地,在存储设备内部,面向磁盘的数据io请求用dd(data descriptor,数据描述符)来描述。dd中除了cprp list的描述信息外,其亦定义了数据io的类型(读、写)、磁盘标识、起始地址、数据长度等命令信息的定义,另外还定义一些补充信息,比如是否使能参考数据列表等。7、按照ahci规范,发送到ahci控制器sata命令使用command table描述,其主要包括有cfis和prdt列表两个部分。其中prdt列表部分描述了该sata命令的数据信息,如图1所示。8、sata磁盘挂载在ahci控制器的某一个端口上,ahci控制器为每个端口准备了最多32个sata命令槽位,用于存放即将被执行的sata命令。sata命令若要存放在某个槽位,则其命令信息就当写入到槽位号对应的command table内存区域。写入就绪后,把槽位号通知ahci控制器,说明槽位号对应的command table中cfis和prdt列表都已就绪,后续执行由ahci控制。9、把cb描述的数据请求下发到sata磁盘,其中如下三个步骤涉及软硬件交互较多,对cpu性能消耗大:10、prdt列表构造,即把cb中通过cprp list描述的数据转换为sata磁盘控制器的数据描述格式。按照ahci规范,sata磁盘控制器的数据描述格式为prdt格式。具体地,其用一个prdt列表来描述一个sata命令(即一次sata磁盘交互)的数据,每个列表元素描述一个数据段,包括数据分包的指针和数据长度。所有数据段一起构成了sata命令的完整数据描述。11、prdt列表构造就是循环地从cprp list中找到各个数据段的数据指针及其长度,写入到prdt的相应元素中相应位置,直到处理完所有数据段。12、cfis构造,即提取cb中的命令信息以及cmd descriptor中的数据长度信息,按照sata命令规范要求进行cfis的填写,并按照ahci规范填写到相应command table的cfis内存区域。13、命令下发。command table填写完整后,需要通过把槽位号写入sata磁盘控制器的完成命令下发。后续的sata命令的执行由sata磁盘控制器自主完成。14、在软件上,把数据从cprp list转换为prdt列表,构造cfis,触发sata控制器执行sata命令等工作不存在编写困难。但由于存在多次软硬件交互,cpu性能受到很大影响,尤其在sata磁盘数量较多时,cpu性能受到影响巨大。15、由上所述,nvme协议到sata协议的转换需要经过复杂的软件流程和软硬件交互过程,需要考虑的软硬件设计问题也是多方面的;主要是一方面对硬件加速引擎通道的浪费,另一方面是缓存带来的延时增大的副作用。技术实现思路1、为了解决上述现有技术中存在的一方面对硬件加速引擎通道的浪费,另一方面是缓存带来的延时增大的副作用的技术问题,本发明提供了一种nvme接口磁盘存储方法、系统、终端及存储介质,本发明关于加速引擎,其定义了两个部分,通道组和加速引擎。通道组由多个通道组成,加速引擎与通道一一对应。通道负责接收软件的cmd descriptor配置信息和一个或多个dd信息,其同时记录本通道的工作状态。加速引擎解析通道传递过来的cmddescriptor和dd(data descriptor),并据此进行prdt列表的构造、cfis构造和命令下发,命令下发后同步更新对应通道的工作状态。各通道及其引擎独立工作。2、其中,以实现nvme接口sata存储系统为目的的软硬件架构设计,以及工作流程为本发明的核心技术点。3、为实现上述目的,本发明实施例提供了如下的技术方案:4、第一方面,在本发明提供的一个实施例中,一种nvme接口磁盘存储方法,所述nvme接口的sata磁盘存储方法包括:5、s10、nvme队列中工作任务的聚合处理;6、s20、在通道组中寻找空闲通道;7、s30、对空闲的通道配置cmd descriptor;8、s40、配置通道的dd,若有多个dd就配置多次;9、s50、解析cmd descriptor,解析出本次sata命令使用的槽位号及其对应的command table地址;10、s60、构造prdt列表,并写入到command table中相应的位置;11、s70、构造cfis;12、s80、通过槽位号触发该sata命令;13、s90、标记通道为“完成”状态。14、作为本发明的进一步方案,所述槽位号触发该sata命令包括:15、s81、解析cmd descriptor中的sata命令槽位号、command table地址和数据长度;16、s82、解析dd中的cprp list和参考cprp list;17、s83、依次读取cprp list的数据指针及其数据长度;18、s84、若使能参考cprp list,使用参考cprp list中数据指针相关字段的描述处理数据指针及其长度;19、s85、依次写入command table中的prdt列表中的元素;cprp list数据指针与prdt列表中的元素一一对应,并写入内容包括数据指针和数据长度;20、s86、判断cprp list是否处理完毕,如果是,则执行s87,如果否,则执行s83;21、s87、判断sata命令的数据长度与prdt列表中已填写的数据长度是否相等,如果是,则执行s88,如果否,则执行s83;22、s88、触发该sata命令,把sata命令使用的槽位号写入到ahci触发寄存器,完成命令触发;23、s89、通知通道完成命令触发。24、作为本发明的进一步方案,所述数据指针相关字段的描述处理中,把数据指针做偏移,即在指针上加或减固定值;把部分数据指针替换为固定值;跳过部分数据指针。25、作为本发明的进一步方案,把64bit参考指针低8bit作为操作码,高56bit存放一个或多个操作数。26、作为本发明的进一步方案,所述通道具有四个状态,包括空闲、忙、完成、异常。27、作为本发明的进一步方案,硬件上电复位后,通道处于空闲状态;当cmddescriptor配置后,通道处于忙状态;当加速引擎完成sata命令下发,答复完成信号给通道后,处于完成状态;若处于完成状态时,软件读取一次后,通道回到空闲状态;通道处于忙态后,引擎超时未完成sata命令下发,触发超时进入异常状态。软件读取状态后,通道回到空闲状态。28、第二方面,在本发明提供的又一个实施例中,提供了一种nvme接口磁盘存储系统,所述nvme接口的sata磁盘存储系统包括通道扫描模块、通道配置模块、解析模块、构造模块和触发模块;29、通道扫描模块,用于在通道组中寻找空闲通道;30、通道配置模块,用于对空闲的通道进行配置cmd descriptor;和通道的dd,若有多个dd就配置多次;31、解析模块,用于解析cmd descriptor,解析出本次sata命令使用的槽位号及其对应的command table地址;32、构造模块,用于构造prdt列表,写入到command table中相应的位置,并构造cfis;33、触发模块,通过槽位号触发该sata命令;并标记通道为“完成”状态。34、第三方面,在本发明提供的又一个实施例中,提供了一种终端,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器加载并执行所述计算机程序时实现所述nvme接口的sata磁盘存储方法的步骤。35、第四方面,在本发明提供的再一个实施例中,提供了一种存储介质,存储有计算机程序,所述计算机程序被处理器加载并执行时实现所述nvme接口的sata磁盘存储方法的步骤。36、本发明提供的技术方案,具有如下有益效果:37、1、本发明存在缓存机制,nvme协议上位机的io,按照name space队列进行缓存;排队聚合机制,针对缓存的io进行聚合排队处理;减少软硬件交互,聚合排队后的io由独立的加速引擎进行sata命令构造下发;针对不适合聚合的小io直接走软件下发。该方案通过把大量小io聚合成大io,再用加速引擎进行大io加速处理,大大提升了存储设备的性能。是否适合聚合可由聚合参数进行配置,可配置性也增强了该系统的广泛的应用场景。38、2、在nvme协议io请求入口处,建立缓存机制,对上位机io按照name space队列进行缓存,减少小io对sata接口的性能压力和瞬态压力;对缓存的io进行排队聚合,把大量的小io变为少量的大io;硬件加速引擎,把大量的软硬件交互给cpu造成的负载进行卸载,解决cpu性能瓶颈问题;不适合聚合io走软件下发流程。39、其中缓存机制是应对nvme接口低时延、高并发与sata接口高时延、低并发的性能不对等。硬件加速引擎实现了cprp list到prdt列表的转换、cfis构造和sata命令下发来达到卸载cpu负载,解决cpu性能瓶颈的目的。io的排队聚合机制是为了提升硬件加速引擎的工作效率。不适合聚合io走软件下发流程,一方面避免对硬件加速引擎通道的浪费,另一方面解决io缓存带来的延时增大的副作用。40、本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1