一种NVMe协议管理命令处理的硬件卸载方法技术

技术编号:24090657 阅读:55 留言:0更新日期:2020-05-09 07:55
本发明专利技术涉及一种NVMe协议管理命令处理的硬件卸载方法,其中,包括:将硬件逻辑分为命令接收模块、命令分析模块以及命令处理模块;命令接收模块接收来自PCIe IP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令。本发明专利技术可以提高NVMe管理命令的响应处理时间,能够提高大容量固态盘的能效比。

A hardware unloading method for nvme protocol management command processing

【技术实现步骤摘要】
一种NVMe协议管理命令处理的硬件卸载方法
本专利技术涉及高能效固态存储领域,特别涉及NVMe协议管理命令处理的硬件卸载方法。
技术介绍
现有固态盘控制器通常采用CPU与专用电路协同处理主机下发的NVMe管理命令,其处理流程在命令分析阶段有所不同,专用电路收到NVMe管理命令之后,CPU检测标志位,通过片上总线从专用电路中读取NVMe管理命令,读取完之后,在CPU上对这些命令进行分析,针对不同命令,给专用电路下发不同的处理命令,处理这些管理命令。固态盘控制器CPU与专用电路交互一次需要消耗多个时钟周期,每个提交命令有64字节,总线位宽32位,需要消耗16次交互,总的交互时间已经达到us级,再加上CPU对NVMe管理命令的分析处理,时间消耗较大;而且固态盘控制器的CPU任务较多,需要不断巡检专用硬件电路中命令有无的标志位,消耗CPU的处理资源,不利于固态盘提高性能。
技术实现思路
本专利技术涉及一种NVMe协议管理命令处理的硬件卸载方法,用于解决NVMe管理命令处理占用CPU资源,同时提高NVMe管理命令的响应速度的问题。本专利技术一种NVMe协议管理命令处理的硬件卸载方法,其中,包括:将硬件逻辑分为命令接收模块、命令分析模块以及命令处理模块;命令接收模块接收来自PCIeIP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,命令分析模块采用状态机的方式实现,由6个状态描述,分别是空闲状态、读取缓存命令FIFO状态、提取操作码状态、判断命令状态、发送识别命令状态和发送其他指令状态。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,在空闲状态下,检测命令接收模块中缓存命令FIFO的空标志,如果该FIFO为空,则表示没有收到NVMe管理命令,状态保持在空闲状态;当缓存命令FIFO不为空,则表示有NVMe管理命令待处理,状态跳转到读取FIFO状态;在读取缓存命令FIFO状态下,读取NVMe管理命令,缓存命令FIFO位宽为128位,该状态持续至读取一次提交命令的时间,然后状态跳转到提取操作码状态;在提取操作码状态,提取NVMe管理提交命令中的操作码,提取完成之后,状态跳转到判断命令状态;在判断命令状态下,判断NVMe管理命令是否为识别命令,如果为识别命令,则状态跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;在发送识别命令状态下,向命令处理模块发送操作码和PCIe地址,发送完成之后,状态跳转到空闲状态;在发送其他指令状态下,向命令处理模块发送其他指令,该其他指令中包含操作码等信息,发送完成之后,状态跳转到空闲状态。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,命令处理模块采用状态机的方式实现,由10个状态描述,分别是空闲状态、提取有效数据状态、判断命令类型状态、ROM读状态、PCIe请求状态、等待PCIe应答状态、PCIe写数据状态、判断命令是否完成状态、命令完成状态和写寄存器状态。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,在空闲状态下,判断是否有效命令标志为高,如果为高,则状态跳转到提取有效数据状态,否则状态不变;在提取有效数据状态下,提取操作码、PCIe地址以及标识号,状态跳转到判断命令类型状态;在判断命令类型状态下,判断命令是否为识别命令,如果是,则状态跳转到ROM读状态,否则状态跳转到写寄存器状态;在写寄存器状态下,将提取出来的有效信息写入相应寄存器中,状态跳转到命令完成状态;在ROM读状态下,向缓存识别命令数据的ROM发起读请求,状态跳转到PCIe写请求状态;在PCIe写请求状态下,向PCIe模块发起请求使用发送通道资源的信号,状态跳转到等待PCIe应答信号状态;在等待PCIe应答信号状态下,判断PCIe模块是否返回应答信号,如果有,则状态跳转到PCIe写数据状态;在PCIe写数据状态下,将缓存识别命令数据的ROM块中的数据填入字段中写出去,状态跳转到命令是否完成状态;在命令是否完成状态下,判断剩余数据长度是否为0,如果是,则状态跳转到命令完成状态;否则状态跳转到ROM读状态;在命令完成状态下,向主机发送完成报文,状态跳转到空闲状态。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,管理命令包括:(1)删除I/O提交队列;(2)创建I/O提交队列;(3)删除I/O完成队列;(4)创建I/O完成队列;以及(5)识别。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,在发送其他指令状态下,向命令处理模块发送其他指令,该指令中包含操作码,发送完成之后,状态跳转到空闲状态。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,命令分析模块分析主机下发的命令类型,识别命令和其他管理命令处理有所不同,在处理模块中区别对待。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,命令处理模块接收命令分析模块的指令,如果是识别命令,从ROM中读取数据结构,通过PCIe模块发送;如果是其他模块,直接写相应的寄存器,处理完成通知主机。根据本专利技术的NVMe协议管理命令处理的硬件卸载方法的一实施例,其中,其中命令分析模块直接从命令接收模块的缓存命令FIFO中读取NVMe管理命令,取出其中的操作码进行分析,针对不同的NVMe管理命令,发送不同的标识指令到命令处理模块。本专利技术一种NVMe协议管理命令处理的硬件卸载方法,该方法通过硬件电路实现NVMe协议管理命令,无需CPU参与,以提高运行效率。该硬件电路包括命令接收模块、命令分析模块和命令处理模块。另外,为提高命令执行效率,在硬件中增加存放识别命令数据的ROM。该硬件电路工作流程为管理命令经PCIe模块,由命令接收模块接收,命令分析模块和命令处理模块直接在硬件中对其进行处理,缩短命令处理时间。该方法可以用于高能效固态盘控制器的设计中。附图说明图1为NVMe管理命令卸载示意图;图2为NVMe控制器管理命令分析模块处理流程图;图3为NVMe控制器管理命令处理模块流程图。具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。图1为NVMe管理命令卸载示意图,图2为NVMe控制器管理命令分析模块处理流程图,图3为NVMe控制器管理命令处理模块流程图,如图1至图3所示,本专利技术一种NVMe协议管理命令处理的硬件卸载方法,步骤如下:(1)主机的标准NVMe驱动通过PCIe接口发送命令到固态盘存储本文档来自技高网...

【技术保护点】
1.一种NVMe协议管理命令处理的硬件卸载方法,其特征在于,包括:/n将硬件逻辑分为命令接收模块、命令分析模块以及命令处理模块;/n命令接收模块接收来自PCIe IP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令。/n

【技术特征摘要】
1.一种NVMe协议管理命令处理的硬件卸载方法,其特征在于,包括:
将硬件逻辑分为命令接收模块、命令分析模块以及命令处理模块;
命令接收模块接收来自PCIeIP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令。


2.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,命令分析模块采用状态机的方式实现,由6个状态描述,分别是空闲状态、读取缓存命令FIFO状态、提取操作码状态、判断命令状态、发送识别命令状态和发送其他指令状态。


3.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,
在空闲状态下,检测命令接收模块中缓存命令FIFO的空标志,如果该FIFO为空,则表示没有收到NVMe管理命令,状态保持在空闲状态;当缓存命令FIFO不为空,则表示有NVMe管理命令待处理,状态跳转到读取FIFO状态;
在读取缓存命令FIFO状态下,读取NVMe管理命令,缓存命令FIFO位宽为128位,该状态持续至读取一次提交命令的时间,然后状态跳转到提取操作码状态;
在提取操作码状态,提取NVMe管理提交命令中的操作码,提取完成之后,状态跳转到判断命令状态;
在判断命令状态下,判断NVMe管理命令是否为识别命令,如果为识别命令,则状态跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;
在发送识别命令状态下,向命令处理模块发送操作码和PCIe地址,发送完成之后,状态跳转到空闲状态;
在发送其他指令状态下,向命令处理模块发送其他指令,该其他指令中包含操作码等信息,发送完成之后,状态跳转到空闲状态。


4.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,命令处理模块采用状态机的方式实现,由10个状态描述,分别是空闲状态、提取有效数据状态、判断命令类型状态、ROM读状态、PCIe请求状态、等待PCIe应答状态、PCIe写数据状态、判断命令是否完成状态、命令完成状态和写寄存器状态。


5.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,
在空闲状态下...

【专利技术属性】
技术研发人员:冯志华裴可安东博万星李艳婷原晋杰梁书铭余仲
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

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

1