System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及存储领域,具体是一种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、为了解决所述技术问题,本专利技术采用的技术方案是:一种
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 Doorb
...【技术特征摘要】
1.一种nvme协议io queue硬件管理加速方法,其特征在于:包括以下步骤:
2.根据权利要求1所述的nvme协议io queue硬件管理加速方法,其特征在于:步骤s02)的初始化操作包括将队列基地址记录于管理加速模块内部,将对应的sq tail计数器、sqhead 计数器、cq tail计数器、cq head 计数器清空。
3.根据权利要求1所述的nvme协议io queue硬件管理加速方法,其特征在于:控制器包括命令获取模块,步骤s04)中,控制器通过命令获取模块从sq中取命令。...
【专利技术属性】
技术研发人员:段好强,吴斌,乔子龙,
申请(专利权)人:山东华芯半导体有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。