一种NVMe协议管理命令处理的硬件卸载方法转让专利
申请号 : CN201911271813.3
文献号 : CN111124959B
文献日 : 2021-08-27
发明人 : 冯志华 , 裴可 , 安东博 , 万星 , 李艳婷 , 原晋杰 , 梁书铭 , 余仲
申请人 : 北京计算机技术及应用研究所
摘要 :
权利要求 :
1.一种NVMe协议管理命令处理的硬件卸载方法,其特征在于,包括:将硬件逻辑分为命令接收模块、命令分析模块以及命令处理模块;
命令接收模块接收来自PCIe IP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令;
命令处理模块接收命令分析模块的指令,如果是识别命令,从ROM中读取数据结构,通过PCIe模块发送;如果是其他指令,直接写相应的寄存器,处理完成通知主机。
2.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,命令分析模块采用状态机的方式实现,由6个状态描述,分别是空闲状态、读取缓存命令FIFO状态、提取操作码状态、判断命令状态、发送识别命令状态和发送其他指令状态。
3.如权利要求2所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,在空闲状态下,检测命令接收模块中缓存命令FIFO的空标志,如果该FIFO为空,则表示没有收到NVMe管理命令,状态保持在空闲状态;当缓存命令FIFO不为空,则表示有NVMe管理命令待处理,状态跳转到读取缓存命令FIFO状态;
在读取缓存命令FIFO状态下,读取NVMe管理命令,缓存命令FIFO位宽为128位,该读取缓存命令FIFO状态持续至读取一次提交命令的时间,然后状态跳转到提取操作码状态;
在提取操作码状态,提取NVMe管理提交命令中的操作码,提取完成之后,状态跳转到判断命令状态;
在判断命令状态下,判断NVMe管理命令是否为识别命令,如果为识别命令,则状态跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;
在发送识别命令状态下,向命令处理模块发送操作码和PCIe地址,发送完成之后,状态跳转到空闲状态;
在发送其他指令状态下,向命令处理模块发送其他指令,该其他指令中包含操作码信息,发送完成之后,状态跳转到空闲状态。
4.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,命令处理模块采用状态机的方式实现,由10个状态描述,分别是空闲状态、提取有效数据状态、判断命令类型状态、ROM读状态、PCIe请求状态、等待PCIe应答状态、PCIe写数据状态、判断命令是否完成状态、命令完成状态和写寄存器状态。
5.如权利要求4所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,在空闲状态下,判断是否有效命令标志为高,如果为高,则状态跳转到提取有效数据状态,否则状态不变;
在提取有效数据状态下,提取操作码、PCIe地址以及标识号,状态跳转到判断命令类型状态;
在判断命令类型状态下,判断命令是否为识别命令,如果是,则状态跳转到ROM读状态,否则状态跳转到写寄存器状态;
在写寄存器状态下,将提取出来的有效信息写入相应寄存器中,状态跳转到命令完成状态;
在ROM读状态下,向缓存识别命令数据的ROM发起读请求,状态跳转到PCIe请求状态;
在PCIe写请求状态下,向PCIe模块发起请求使用发送通道资源的信号,状态跳转到等待PCIe应答状态;
在等待PCIe应答信号状态下,判断PCIe模块是否返回应答信号,如果有,则状态跳转到PCIe写数据状态;
在PCIe写数据状态下,将缓存识别命令数据的ROM块中的数据填入字段中写出去,状态跳转到判断命令是否完成状态;
在命令是否完成状态下,判断剩余数据长度是否为0,如果是,则状态跳转到命令完成状态;否则状态跳转到ROM读状态;
在命令完成状态下,向主机发送完成报文,状态跳转到空闲状态。
6.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,管理命令包括:
(1)删除I/O提交队列;
(2)创建I/O提交队列;
(3)删除I/O完成队列;
(4)创建I/O完成队列;以及
(5)识别。
7.如权利要求1或3所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,在发送其他指令状态下,向命令处理模块发送其他指令,该其他指令中包含操作码,发送完成之后,状态跳转到空闲状态。
8.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,命令分析模块分析主机下发的命令类型,识别命令和其他管理命令处理有所不同,在处理模块中区别对待。
9.如权利要求1所述的NVMe协议管理命令处理的硬件卸载方法,其特征在于,其中命令分析模块直接从命令接收模块的缓存命令FIFO中读取NVMe管理命令,取出其中的操作码进行分析,针对不同的NVMe管理命令,发送不同的标识指令到命令处理模块。
说明书 :
一种NVMe协议管理命令处理的硬件卸载方法
技术领域
背景技术
通过片上总线从专用电路中读取NVMe管理命令,读取完之后,在CPU上对这些命令进行分
析,针对不同命令,给专用电路下发不同的处理命令,处理这些管理命令。
管理命令的分析处理,时间消耗较大;而且固态盘控制器的CPU任务较多,需要不断巡检专
用硬件电路中命令有无的标志位,消耗CPU的处理资源,不利于固态盘提高性能。
发明内容
管理命令,接收到的命令存储在本地缓存命令FIFO中;命令分析模块检测该FIFO的空标志,
如果该FIFO不为空,则读取该FIFO中的命令,读取完成之后,提取管理命令中的操作码,并
参照NVMe协议,识别出不同的NVMe管理命令,交由命令处理模块进行处理;命令处理模块接
收来自命令分析模块中分析的指令,针对不同指令处理不同的NVMe管理命令。
提取操作码状态、判断命令状态、发送识别命令状态和发送其他指令状态。
NVMe管理命令,状态保持在空闲状态;当缓存命令FIFO不为空,则表示有NVMe管理命令待处
理,状态跳转到读取FIFO状态;在读取缓存命令FIFO状态下,读取NVMe管理命令,缓存命令
FIFO位宽为128位,该状态持续至读取一次提交命令的时间,然后状态跳转到提取操作码状
态;在提取操作码状态,提取NVMe管理提交命令中的操作码,提取完成之后,状态跳转到判
断命令状态;在判断命令状态下,判断NVMe管理命令是否为识别命令,如果为识别命令,则
状态跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;在发
送识别命令状态下,向命令处理模块发送操作码和PCIe地址,发送完成之后,状态跳转到空
闲状态;在发送其他指令状态下,向命令处理模块发送其他指令,该其他指令中包含操作码
等信息,发送完成之后,状态跳转到空闲状态。
断命令类型状态、ROM读状态、PCIe请求状态、等待PCIe应答状态、PCIe写数据状态、判断命
令是否完成状态、命令完成状态和写寄存器状态。
态不变;在提取有效数据状态下,提取操作码、PCIe地址以及标识号,状态跳转到判断命令
类型状态;在判断命令类型状态下,判断命令是否为识别命令,如果是,则状态跳转到ROM读
状态,否则状态跳转到写寄存器状态;在写寄存器状态下,将提取出来的有效信息写入相应
寄存器中,状态跳转到命令完成状态;在ROM读状态下,向缓存识别命令数据的ROM发起读请
求,状态跳转到PCIe写请求状态;在PCIe写请求状态下,向PCIe模块发起请求使用发送通道
资源的信号,状态跳转到等待PCIe应答信号状态;在等待PCIe应答信号状态下,判断PCIe模
块是否返回应答信号,如果有,则状态跳转到PCIe写数据状态;在PCIe写数据状态下,将缓
存识别命令数据的ROM块中的数据填入字段中写出去,状态跳转到命令是否完成状态;在命
令是否完成状态下,判断剩余数据长度是否为0,如果是,则状态跳转到命令完成状态;否则
状态跳转到ROM读状态;在命令完成状态下,向主机发送完成报文,状态跳转到空闲状态。
成队列;以及(5)识别。
态跳转到空闲状态。
区别对待。
发送;如果是其他模块,直接写相应的寄存器,处理完成通知主机。
进行分析,针对不同的NVMe管理命令,发送不同的标识指令到命令处理模块。
析模块和命令处理模块。另外,为提高命令执行效率,在硬件中增加存放识别命令数据的
ROM。该硬件电路工作流程为管理命令经PCIe模块,由命令接收模块接收,命令分析模块和
命令处理模块直接在硬件中对其进行处理,缩短命令处理时间。该方法可以用于高能效固
态盘控制器的设计中。
附图说明
具体实施方式
理命令处理的硬件卸载方法,步骤如下:
主机。
块
令接收模块接收来自PCIe IP核的NVMe管理命令,接收到的命令存储在本地缓存命令FIFO
中;命令分析模块检测该FIFO的空标志,如果该FIFO不为空,则读取该FIFO中的命令,读取
完成之后,提取管理命令中的操作码,参照NVMe协议,识别出不同的NVMe管理命令,交由命
令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令
处理不同的NVMe管理命令。
命令状态和发送其他指令状态。
管理命令待处理,状态跳转到读取FIFO状态;
跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;
PCIe应答状态、PCIe写数据状态、判断命令是否完成状态、命令完成状态和写寄存器状态。
协同处理的NVMe管理命令完全卸载到硬件电路中实现。相比传统的协同处理方式,该方法
无需CPU参与,减轻了CPU的资源消耗,减少CPU与专用电路之间的总线交互,提高了大容量
固态盘的稳定性;专用电路直接从内部模块读取NVMe管理命令,提高了NVMe管理命令的响
应速度和分析速度,提升了固态盘的能效比。
也应视为本发明的保护范围。