一种NVMe协议管理命令处理的硬件卸载方法与流程

文档序号:20682951发布日期:2020-05-08 18:34阅读:569来源:国知局
一种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接口发送命令到固态盘存储器中,发送的命令如创建i/o提交命令等管理命令;

(2)固态盘控制器通过pcieip核接收主机下发的管理命令;

(3)固态盘控制器命令分析模块分析主机下发的命令类型,识别命令和其他管理命令处理有所不同,在处理模块中区别对待;

(4)控制器中命令处理模块接收命令分析模块的指令,如果是识别命令,从rom中读取数据结构,通过pcie模块发送;如果是其他模块,直接写相应的寄存器,处理完成通知主机。

其中命令分析模块直接从命令接收模块的缓存命令fifo中读取nvme管理命令,取出其中的操作码进行分析,针对不同的nvme管理命令,发送不同的标识指令到命令处理模块

如图1所示,固态盘控制器利用硬件卸载的思想,单独采用硬件专用电路处理nvme管理命令,无需cpu参与,从而提高nvme管理命令的处理速度。硬件模块调用pcieip核,命令接收模块接收来自pcieip核的nvme管理命令,接收到的命令存储在本地缓存命令fifo中;命令分析模块检测该fifo的空标志,如果该fifo不为空,则读取该fifo中的命令,读取完成之后,提取管理命令中的操作码,参照nvme协议,识别出不同的nvme管理命令,交由命令处理模块进行处理;命令处理模块接收来自命令分析模块中分析的指令,针对不同指令处理不同的nvme管理命令。

如图2所示,命令分析模块采用状态机的方式实现功能。该模块状态机由6个状态描述,分别是空闲状态、读取缓存命令fifo状态、提取操作码状态、判断命令状态、发送识别命令状态和发送其他指令状态。

在空闲状态下,检测命令接收模块中缓存命令fifo的空标志,如果该fifo为空,则表示没有收到nvme管理命令,状态保持在空闲状态;当缓存命令fifo不为空,则表示有nvme管理命令待处理,状态跳转到读取fifo状态;

在读取缓存命令fifo状态下,读取nvme管理命令。缓存命令fifo位宽为128位,读取一次提交命令需要4个时钟,所以该状态持续4个时钟,然后状态跳转到提取操作码状态;

在提取操作码状态,提取nvme管理提交命令中的操作码,提取完成之后,状态跳转到判断命令状态;

在判断命令状态下,判断nvme管理命令是否为识别命令。识别命令涉及到从rom中读取识别命令字段,需要命令处理模块与rom交互,所以分开处理;如果为识别命令,则状态跳转到发送识别命令状态;如果不是识别命令,则状态跳转到发送其他指令状态;

在发送识别命令状态下,向命令处理模块发送操作码和pcie地址,发送完成之后,状态跳转到空闲状态;

在发送其他指令状态下,向命令处理模块发送其他指令,该指令中包含操作码等信息,发送完成之后,状态跳转到空闲状态。

如图3所示,命令处理模块采用状态机的方式实现功能。该模块由10个状态描述,分别是空闲状态、提取有效数据状态、判断命令类型状态、rom读状态、pcie请求状态、等待pcie应答状态、pcie写数据状态、判断命令是否完成状态、命令完成状态和写寄存器状态。

在空闲状态下,判断是否有效命令标志为高,如果为高,则状态跳转到提取有效数据状态;否则状态不变;

在提取有效数据状态下,提取操作码、pcie地址、标识号等信息,状态跳转到判断命令类型状态;

在判断命令类型状态下,判断命令是否为识别命令,如果是,则状态跳转到rom读状态;否则状态跳转到写寄存器状态;

在写寄存器状态下,将提取出来的有效信息写入相应寄存器中,状态跳转到命令完成状态;

在rom读状态下,向缓存识别命令数据的rom发起读请求,状态跳转到pcie写请求状态;

在pcie写请求状态下,向pcie模块发起请求使用发送通道资源的信号,状态跳转到等待pcie应答信号状态;

在等待pcie应答信号状态下,判断pcie模块是否返回应答信号,如果有,则状态跳转到pcie写数据状态,否则在该状态等待;

在pcie写数据状态下,将缓存识别命令数据的rom块中的数据填入字段中写出去,状态跳转到命令是否完成状态;

在命令是否完成状态下,判断剩余数据长度是否为0,如果是,则状态跳转到命令完成状态;否则状态跳转到rom读状态;

在命令完成状态下,向主机发送完成报文,状态跳转到空闲状态。

本发明采用一种nvme协议管理命令处理的硬件卸载方法,可以极大提高nvme管理命令的响应处理时间,同时释放一部分cpu资源,能够提高大容量固态盘的能效比。

本发明在固态盘控制器内部引入硬件卸载的思想,将命令分析模块和命令处理模块下放到硬件中实现,更加靠近命令源,缩短了命令的处理路径。把原本由cpu与专用电路协同处理的nvme管理命令完全卸载到硬件电路中实现。相比传统的协同处理方式,该方法无需cpu参与,减轻了cpu的资源消耗,减少cpu与专用电路之间的总线交互,提高了大容量固态盘的稳定性;专用电路直接从内部模块读取nvme管理命令,提高了nvme管理命令的响应速度和分析速度,提升了固态盘的能效比。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1