System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种NVMe协议IO Queue硬件管理加速方法技术_技高网

一种NVMe协议IO Queue硬件管理加速方法技术

技术编号:40200261 阅读:8 留言:0更新日期:2024-01-27 00:05
本发明专利技术公开一种NVMe协议IO Queue硬件管理加速方法,本方法首先构建硬件管理加速模块,然后基于管理加速模块管理各组Queue的Tail和Head维护,负责和主机进行交互,在硬件拿到某个Queue中的命令后,通过寄存器的方式通知FW取走命令。在FW执行完命令之后,也通过寄存器的当时通知硬件写回CQ,此流程中不包含FW对Queue的维护,极大地减少了CPU资源的耗费。通过本专利描述的方法,免除FW对IO SQ CQ的管理,减少了CPU的资源耗费,加快了命令获取和返回完成的流程。

【技术实现步骤摘要】

本专利技术涉及存储领域,具体是一种nvme协议io queue硬件管理加速方法。


技术介绍

1、nvme ssd是遵循非易失性内存主机控制器接口规范(non-volatile memoryexpress)的固态驱动器(solid state disk)。ssd由控制器和存储器组成。一个优秀的nvmessd的控制器,能够充分利用pcie通道的低延时以及并行性,在可控制的存储成本下,极大地提升固态硬盘的读写性能,降低由于ahci接口带来的高延时,彻底解放stat时代固态硬盘的极致性能。

2、在nvme ssd和host的交互中,queue是host和ssd进行命令传输和命令能完成的必要手段。控制器对于queue的管理,决定了ssd取命令的性能,进而决定了ssd处理命令的性能。传统的nvme ssd ssd中,多采用fw管理queue的方式,此种方式依赖于ssd cpu的计算性能和访存性能,且需要额外的cpu时间片去进行命令的获取,命令完成的发送,极大地耗费了cpu资源,不利于其他逻辑层业务的开展,降低了ssd的整体性能。所以queue的管理方式对于nvme ssd的性能显得尤为重要。


技术实现思路

1、针对现有技术的缺陷,本专利技术提供一种nvme协议io queue硬件管理加速方法,通过一种硬件的io queue管理的方法减少cpu对于io queue管理的耗费,显著降低命令的处理延时,提高整盘性能。

2、为了解决所述技术问题,本专利技术采用的技术方案是:一种nvme协议io queue硬件管理加速方法,包括以下步骤:

3、s01)、构建管理加速模块,管理加速模块包括sq tail doorbell寄存器、cq headdoorbell寄存器、控制器、sq tail计数器、sq head 计数器、cq tail计数器、cq head 计数器、command fifo和completion fifo,sq tail doorbell寄存器、cq head doorbell寄存器、控制器均与主机相连,控制器用于接收主机下发的命令并向主机返回完成completion,sq tail doorbell寄存器、cq head doorbell寄存器接收主机命令相关的配置,commandfifo和completion fifo连接于控制器与fw之间,用于传递命令和完成completion,sqtail计数器、sq head 计数器、cq tail计数器、cq head 计数器与控制器相连,用于对sq、cq计数;

4、s02)、主机下发创建sq/cq命令,将sq/cq进行初始化,将命令提交队列的基址告知ssd内的管理加速模块的控制器,或者下发删除sq/cq操作,将sq/cq进行资源释放;

5、s03)、控制器收到创建sq/cq命令,进行初始化操作,或者控制器收到删除sq/cq操作,进行管理加速模块资源释放;

6、s04)、主机向io命令提交队列内发送命令,控制器从命令提交队列中取命令;

7、s05)、控制器从命令提交队列中取完命令,将命令通过command fifo发送给fw;

8、s06)、控制器更新内部的sq tail 计数器和sq head 计数器;

9、s07)、fw命令完成,通过completion fifo将completion发送到管理加速模块;

10、s08)、管理加速模块收到fw的completion,将对应的sq head计数器填充到completion内,并将completion发送至主机的命令完成队列,触发中断;

11、s09)、控制器更新cq tail计数器;

12、s10)、主机收到命令完成队列中的completion之后,将completion取出处理并将cq head doorbell写到管理加速模块的cq head doorbell寄存器;

13、s11)、控制器获知cq head boorbell寄存器被更新,更新cq head计数器。

14、进一步的,步骤s02)的初始化操作包括将队列基地址记录于管理加速模块内部,将对应的sq tail计数器、sq head 计数器、cq tail计数器、cq head 计数器清空。

15、进一步的,控制器包括命令获取模块,步骤s04)中,控制器通过命令获取模块从sq中取命令。

16、进一步的,控制器包括完成发送模块,步骤s08)中,控制器通过完成发送模块将completion发送至主机的cq。

17、进一步的,步骤s04)中,主机向io命令提交队列内发送命令的同时更新sq taildoorbell寄存器,控制器获知sq tail doorbell寄存器被更新,根据sq tail doorbell的值开始从命令提交队列中取命令。

18、本专利技术的有益效果:本专利技术采用硬件的queue管理方式,省去了现有fw管理流程,硬件管理各组queue的tail和head维护,负责和主机进行交互,在硬件拿到某个queue中的命令后,通过寄存器的方式通知fw取走命令。在fw执行完命令之后,也通过寄存器的当时通知硬件写回cq,此流程中不包含fw对queue的维护,极大地减少了cpu资源的耗费。通过本专利描述的方法,免除fw对io sq cq的管理,减少了cpu的资源耗费,加快了命令获取和返回完成的流程。

本文档来自技高网...

【技术保护点】

1.一种NVMe协议IO Queue硬件管理加速方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的NVMe协议IO Queue硬件管理加速方法,其特征在于:步骤S02)的初始化操作包括将队列基地址记录于管理加速模块内部,将对应的SQ Tail计数器、SQHead 计数器、CQ Tail计数器、CQ Head 计数器清空。

3.根据权利要求1所述的NVMe协议IO Queue硬件管理加速方法,其特征在于:控制器包括命令获取模块,步骤S04)中,控制器通过命令获取模块从SQ中取命令。

4.根据权利要求1所述的NVMe协议IO Queue硬件管理加速方法,其特征在于:控制器包括完成发送模块,步骤S08)中,控制器通过完成发送模块将Completion发送至主机的CQ。

5.根据权利要求1所述的NVMe协议IO Queue硬件管理加速方法,其特征在于:步骤S04)中,主机向IO命令提交队列内发送命令的同时更新SQ Tail DoorBell寄存器,控制器获知SQ Tail DoorBell寄存器被更新,根据SQ Tail Doorbell的值开始从命令提交队列中取命令。

...

【技术特征摘要】

1.一种nvme协议io queue硬件管理加速方法,其特征在于:包括以下步骤:

2.根据权利要求1所述的nvme协议io queue硬件管理加速方法,其特征在于:步骤s02)的初始化操作包括将队列基地址记录于管理加速模块内部,将对应的sq tail计数器、sqhead 计数器、cq tail计数器、cq head 计数器清空。

3.根据权利要求1所述的nvme协议io queue硬件管理加速方法,其特征在于:控制器包括命令获取模块,步骤s04)中,控制器通过命令获取模块从sq中取命令。...

【专利技术属性】
技术研发人员:段好强吴斌乔子龙
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:

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

1