一种应用于NVMeSSD的DMA传输系统与方法与流程

文档序号:28808711发布日期:2022-02-09 03:18阅读:516来源:国知局
一种应用于NVMeSSD的DMA传输系统与方法与流程
一种应用于nvme ssd的dma传输系统与方法
技术领域
1.本发明属于计算机数据传输领域,更具体涉及一种应用于nvme ssd。


背景技术:

2.nvme ssd是遵循非易失性内存主机控制器接口规范(non-volatile memory express)的固态驱动器(solid state disk)。ssd由控制器和存储器组成。一个优秀的nvme ssd的控制器,能够充分利用pcie通道的低延时以及并行性,在可控制的存储成本下,极大地提升固态硬盘的读写性能,降低由于ahci接口带来的高延时,彻底解放stat时代固态硬盘的极致性能。
3.在nvme ssd和host的数据交互中,dma是不可或缺的数据传输方式。控制器dma的方式决定了ssd的性能。传统的nvme ssd controller中,多采用单笔nvme io命令配置单笔dma,且都是等dma传输完成后,再由软件层面的固件操作向host回复completion消息,此方式对于命令处理有较大的延时,加上每笔nvme io需要单独配置dma,不能够连续自行传输,对于总线带宽的利用达不到最佳,数据传输效率低下。


技术实现要素:

4.为了解决上述问题,本发明需要提供可以显著降低命令的处理延时,提高整盘性能的系统和方法。
5.本发明提出的技术方案如下:一种应用于nvme ssd的dma传输系统,包括主机、设备、系统总线和dma控制器, dma控制器的dma描述符(dma descriptor)在发起数据传输之前配置有sq identifier、sq head pointer和command id信息。
6.优选的,dma描述符在发起数据传输之前还配置有主机内存地址、ssd内部内存地址和传输数据长度信息。
7.优选的,dma描述符是由多个单一dma描述符形成的dma描述符链。
8.优选的,dma描述符链中的dma描述符中还配置有next descriptor信息。
9.相对应的一种应用于nvme ssd的dma传输方法,包括步骤:a)dma描述符首先配置sq identifier、sq head pointer和command id信息;b)dma控制器发起一笔nvme io命令的数据传输;c)dma引擎进行completion消息的传递。
10.优选的,步骤a)还包括:dma描述符配置主机内存地址、ssd内部内存地址和传输数据长度信息。
11.优选的,步骤a)还包括:在dword最后配置next descriptor信息;所述步骤b)还包括:dma引擎传输完一个dma描述符后,根据本dma描述符所描述的next descriptor,来启动下一个dma描述符的传输,直到dma引擎取到的next descriptor为空,则停止dma传输。
12.本发明利用dma在硬件层面的优势,完成描述符的优先配置,使数据传输结束后dma可以自行进行完成消息的传递,免除了每条nvme io命令都需要单独启动dma engine的动作,无需经过软件层面的固件操作,每条命令能够自动回复completion消息,也极大地缩短了每条命令的处理延时,提高了iops。
13.另外,本发明可以按照描述符链的设置自动进行多笔nvme io命令的数据传输,提高了多nvme io命令并行时的总线带宽利用率。
附图说明
14.图1为实施例2中dma描述符的结构示意图;图2为实施例2中dma描述符链结构示意图。
具体实施方式
15.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
16.实施例1本发明提供一种应用于nvme ssd的dma传输方法,在发起一笔nvme io命令的数据传输之前,dma首先将prp、command id、sq identifier、sq head pointer等信息配置到dma描述符(dma descriptor)中,等nvme io命令的数据传输发起后进行数据传输,在dma完成本笔数据传输后,会自动向host发送completion消息,不需要利用固件等待dma完成后再向host发起本次nvme io命令的completion消息。
17.实施例2在实施例1的基础上,可以将dma描述符扩展为dma描述符链(dma description chain),如图2所示。
18.每个dma描述符的配置结构如图1所示,dword0配置为sq identifier,dword1配置为sq head pointer,dword2配置为command id,dword3-4、dword5-6分别配置为prp1、prp2(host内存地址),dword7-8配置为local address(ssd内部内存地址),dword9配置为length(要传输的数据长度),dword10-11配置为next descriptor(下一描述符),最后一环dma描述符的next descriptor内容为空。
19.在启动某个描述符时,dma引擎会按照描述符中所描述的prp1,prp2,local address,length来进行数据传输,比如一笔nvme io read命令,则dma引擎要进行的数据传输为从local address读出数据并写入到prp1和prp2所指向的host内存地址,长度为length。
20.在本描述符的数据传输完毕后,dma引擎会根据sq identifier,sq head pointer,command id进行completion消息的传递。
21.在dma引擎传输完成一个dma描述符之后,将根据本描述符所描述的next descriptor,来启动下一个dma描述符的传输,直到dma引擎取到的next descriptor为空,则停止dma传输。
22.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。


技术特征:
1.一种应用于nvme ssd的dma传输系统,包括主机、设备、系统总线和dma控制器,其特征在于,所述dma控制器的dma描述符在发起数据传输之前配置有sq identifier、sq head pointer和command id信息。2.根据权利要求1所述的应用于nvme ssd的dma传输系统,其特征在于,所述dma描述符在发起数据传输之前还配置有主机内存地址、ssd内部内存地址和传输数据长度信息。3.根据权利要求1所述的应用于nvme ssd的dma传输系统,其特征在于,所述dma描述符是由多个单一dma描述符形成的dma描述符链。4.根据权利要求3所述的应用于nvme ssd的dma传输系统,其特征在于,所述dma描述符链中的dma描述符中还配置有next descriptor信息。5.一种应用于nvme ssd的dma传输方法,其特征在于,包括步骤:a)dma描述符首先配置sq identifier、sq head pointer和command id信息;b)dma控制器发起一笔nvme io命令的数据传输;c)dma引擎进行completion消息的传递。6.根据权利要求5所述的应用于nvme ssd的dma传输方法,其特征在于,步骤a)还包括:dma描述符配置主机内存地址、ssd内部内存地址和传输数据长度信息。7.根据权利要求5所述的应用于nvme ssd的dma传输方法,其特征在于,所述步骤a)还包括:在dword最后配置next descriptor信息;所述步骤b)还包括:dma引擎传输完一个dma描述符后,根据本dma描述符所描述的next descriptor,来启动下一个dma描述符的传输,直到dma引擎取到的next descriptor为空,则停止dma传输。

技术总结
本发明利用DMA在硬件层面的优势,令DMA描述符首先配置SQ Identifier、SQ Head Pointer和Command ID信息,使数据传输结束后DMA可以自行进行完成消息的传递,免除了每条NVME IO命令都需要单独启动DMA Engine的动作,无需经过软件层面的固件操作,每条命令能够自动回复Completion消息,也极大地缩短了每条命令的处理延时,提高了IOPS。提高了IOPS。提高了IOPS。


技术研发人员:段好强 李瑞东 王璞 吴斌 乔子龙
受保护的技术使用者:山东华芯半导体有限公司
技术研发日:2021.11.09
技术公布日:2022/2/8
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1