NVMe协议处理器及其处理方法技术

技术编号:15191503 阅读:231 留言:0更新日期:2017-04-20 09:14
本发明专利技术公开了一种NVMe协议处理器及NVMe协议处理方法,所述NVMe协议处理器包括CPU子系统、共享存储器、Gather DMA模块、Scatter DMA模块、主机存取模块、独立Doorbell寄存器和Doorbell检测模块。Gather DMA模块与共享存储器连接,用于将外部主机的数据通过PCIe控制器搬移到共享存储器;Scatter DMA模块与共享存储器连接,用于将共享存储器的数据通过PCIe控制器搬移到外部主机;主机存取模块通过PCIe控制器连接在共享存储器和外部主机之间,以访问共享存储器;独立Doorbell寄存器连接在主机存取模块和Doorbell检测模块之间,用于存储Doorbell指针;所述Doorbell检测模块用于检测Doorbell指针的更新。本发明专利技术易于在NVMe协议升级或扩展时进行适应性修改,无需重新设计NVMe协议处理器的硬件电路,方便易用,适应性强。

【技术实现步骤摘要】

本专利技术涉及固态存储设备(SolidStorageDevice,SSD),更具体地,本专利技术涉及存储器控制器中用于处理NVMe(NonVolatileMemoryexpress,非易失存储器)协议的NVMe协议处理器及NVMe协议处理方法。
技术介绍
NVMe协议的处理流程一般为:1.命令提交(1)主机向提交队列(SubmissionQueue,SQ)写入NVMe命令;(2)主机写入更新后的SQ队列尾指针,作为Doorbell(门铃)通知NVMe协议处理器有新命令要处理;2.命令处理(1)NVMe协议处理器从主机的SQ队列取得NVMe命令;(2)NVMe协议处理器处理NVMe命令;3.命令完成(1)NVMe协议处理器向完成队列(CompletionQueue,CQ)队尾写入数据,指示命令处理完成;(2)NVMe协议处理器生成MSI-X中断,指示主机处理;(3)主机处理CQ中的数据;(4)主机写入更新后的完成队列CQ的头指针,作为Doorbell通知NVMe协议处理器。现有技术中主要以全硬件方式实现对NVMe协议的处理,当NVMe协议升级时,或者对NVMe协议进行扩展时,例如增加功能,需要修改硬件设计才能实现对升级或扩展后的NVMe协议的处理。如果用全硬件方式实现NVMe协议,假设需要支持三条NVMe命令A,B和C,并实现了对应的命令处理功能。但是,如果NVMe协议升级,需要支持5条命令,那么多出来的两条命令D和E就得通过增加硬件电路的方式来实现。而对于ASIC(ApplicationSpecificIntegratedCircuit,专用集成电路),增加硬件电路就需要重新进行前后端设计、仿真验证,会带来高昂的研发成本。
技术实现思路
本专利技术的目的是为解决目前采用全硬件方式实现NVMe协议处理器不能很好地适应NVMe协议升级或扩展的技术问题。为了实现上述专利技术目的,一方面,本专利技术提供了一种NVMe协议处理器,所述NVMe协议处理器第一种实现方案如下:包括:CPU子系统、共享存储器、GatherDMA模块、ScatterDMA模块、主机存取模块和PCIe控制器;所述CPU子系统包括一个或多个CPU,所述CPU耦合到所述共享存储器;所述GatherDMA模块与所述共享存储器连接,用于将外部主机的数据通过所述PCIe控制器搬移到所述共享存储器;所述ScatterDMA模块与所述共享存储器连接,用于将所述共享存储器的数据通过所述PCIe控制器搬移到外部主机;所述主机存取模块通过所述PCIe控制器耦合在所述共享存储器和外部主机之间,以使外部主机访问所述共享存储器;所述共享存储器中设有Doorbell寄存器,用于存储Doorbell指针;所述PCIe控制器用于在所述外部主机与所述NVMe协议处理器之间交换数据。进一步地,还包括Doorbell检测模块,所述Doorbell检测模块与所述Doorbell寄存器相耦合,用于检测所述Doorbell寄存器的更新。进一步地,所述GatherDMA模块和所述ScatterDMA模块还分别耦合到外部的SDD控制器。所述NVMe协议处理器第二种实现方案如下:包括:CPU子系统、共享存储器、GatherDMA模块、ScatterDMA模块、主机存取模块、独立Doorbell寄存器、Doorbell检测模块和PCIe控制器;所述CPU子系统包括一个或多个CPU,所述CPU连接到所述共享存储器;所述GatherDMA模块与所述共享存储器连接,用于将外部主机的数据通过所述PCIe控制器搬移到所述共享存储器;所述ScatterDMA模块与所述共享存储器连接,用于将所述共享存储器的数据通过所述PCIe控制器搬移到外部主机;所述主机存取模块通过所述PCIe控制器连接在所述共享存储器和外部主机之间,以访问所述共享存储器;所述独立Doorbell寄存器连接在所述主机存取模块和Doorbell检测模块之间,用于存储Doorbell指针;所述Doorbell检测模块用于检测所述独立Doorbell寄存器的更新;所述GatherDMA模块和所述ScatterDMA模块还分别耦合到外部的SDD控制器。另一方面,本专利技术还提供了一种NVMe协议处理方法,第一种实现方案如下:包括如下步骤:(1)主机将NVMe命令写入NVMe协议处理器的共享存储器;(2)所述NVMe协议处理器的CPU处理所述共享存储器中的NVMe命令;(3)所述NVMe协议处理器依据处理完成的NVMe命令,填充所述主机的完成队列(CQ);(4)所述主机从所述完成队列(CQ)中取出数据并处理,并告知所述NVMe协议处理器完成队列(CQ)的处理情况。所述NVMe协议处理方法,第二种实现方案如下:包括如下步骤:(1)主机向NVMe协议处理器发送Doorbell指针值;(2)所述NVMe协议处理器的CPU获知Doorbell值的更新;(3)所述NVMe协议处理器的CPU配置GatherDMA模块从所述主机的提交队列(SQ)取得NVMe命令,并存入共享存储器;(4)所述NVMe协议处理器的CPU处理共享存储器中的NVMe命令;(5)所述NVMe协议处理器的CPU依据处理完成的NVMe命令,配置ScatterDMA模块,指示ScatterDMA模块将数据写入主机的完成队列(CQ),该数据指示处理完成的NVMe命令;(6)所述主机从完成队列(CQ)中取出数据并处理,并将所述完成队列(CQ)对应的Doorbell指针值发送给所述NVMe协议处理器;(7)所述NVMe协议处理器的CPU获知Doorbell值的更新并完成NVMe命令的处理。所述NVMe协议处理方法,第三种实现方案如下:包括:检查对应于提交队列(SQ)的第一Doorbell寄存器是否被更新;若第一Doorbell寄存器被更新,配置GatterDMA模块来将主机的提交队列(SQ)中的NVMe命令传送到共享存储器;对共享存储器中的NVMe命令进行处理,将指示NVMe命令处理结果的数据写入共享存储器,并通过配置ScatterDMA模块,将共享存储器中的指示NVMe命令处理结果的数据传送到主机的完成队列(CQ);检查对应于完成队列(CQ)的第二Doorbell寄存器是否被更新;若第二Doorbell寄存器被更新,完成所述NVMe命令的处理。进一步地,所述第一Doorbell寄存器与第二Doorbell寄存器位于所述共享存储器的存储空间。进一步地,所述检查对应于提交队列(SQ)的第一Doorbell寄存器是否被更新,包括:轮询所述Doorbell寄存器以确定所述第一Doorbell寄存器被更新。所述NVMe协议处理方法,第四种实现方案如下:包括:响应于接收到指示对应于提交队列(SQ)的第一Doorbell寄存器被更新的中断请求,配置GatterDMA模块来将主机的提交队列(SQ)中的NVMe命令传送到共享存储器;对共享存储器中的NVMe命令进行处理,将指示NVMe命令处理结果的数据写入共享存储器,并通过配置ScatterDMA模块,将共享存储器中的指示NVMe命令处理结果的数据传送到主机的完成队列(CQ);检查对应于完成队列(CQ)的第二Doorbell寄存器是否被更新;若第二Doorbell寄存器被更本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201510887865.html" title="NVMe协议处理器及其处理方法原文来自X技术">NVMe协议处理器及其处理方法</a>

【技术保护点】
NVMe协议处理器,其特征在于,包括:CPU子系统、共享存储器、Gather DMA模块、Scatter DMA模块、主机存取模块和PCIe控制器;所述CPU子系统包括一个或多个CPU,所述CPU耦合到所述共享存储器;所述Gather DMA模块与所述共享存储器连接,用于将外部主机的数据通过所述PCIe控制器搬移到所述共享存储器;所述Scatter DMA模块与所述共享存储器连接,用于将所述共享存储器的数据通过所述PCIe控制器搬移到外部主机;所述主机存取模块通过所述PCIe控制器耦合在所述共享存储器和外部主机之间,以使外部主机访问所述共享存储器;所述共享存储器中设有Doorbell寄存器,用于存储Doorbell指针;所述PCIe控制器用于在所述外部主机与所述NVMe协议处理器之间交换数据。

【技术特征摘要】
2015.10.10 CN 20151065215811.NVMe协议处理器,其特征在于,包括:CPU子系统、共享存储器、GatherDMA模块、ScatterDMA模块、主机存取模块和PCIe控制器;所述CPU子系统包括一个或多个CPU,所述CPU耦合到所述共享存储器;所述GatherDMA模块与所述共享存储器连接,用于将外部主机的数据通过所述PCIe控制器搬移到所述共享存储器;所述ScatterDMA模块与所述共享存储器连接,用于将所述共享存储器的数据通过所述PCIe控制器搬移到外部主机;所述主机存取模块通过所述PCIe控制器耦合在所述共享存储器和外部主机之间,以使外部主机访问所述共享存储器;所述共享存储器中设有Doorbell寄存器,用于存储Doorbell指针;所述PCIe控制器用于在所述外部主机与所述NVMe协议处理器之间交换数据。2.根据权利要求1所述的NVMe协议处理器,其特征在于,还包括Doorbell检测模块,所述Doorbell检测模块与所述Doorbell寄存器相耦合,用于检测所述Doorbell寄存器的更新。3.根据权利要求1或2所述的NVMe协议处理器,其特征在于,所述GatherDMA模块和所述ScatterDMA模块还分别耦合到SDD控制器。4.NVMe协议处理器,其特征在于,包括:CPU子系统、共享存储器、GatherDMA模块、ScatterDMA模块、主机存取模块、Doorbell寄存器、Doorbell检测模块和PCIe控制器;所述CPU子系统包括一个或多个CPU,所述CPU连接到所述共享存储器;所述GatherDMA模块与所述共享存储器连接,用于将外部主机的数据通过所述PCIe控制器搬移到所述共享存储器;所述ScatterDMA模块与所述共享存储器连接,用于将所述共享存储器的数据通过所述PCIe控制器搬移到外部主机;所述主机存取模块通过所述PCIe控制器连接在所述共享存储器和外部主机之间,以使外部主机访问所述共享存储器;所述Doorbell寄存器连接在所述主机存取模块和Doorbell检测模块之间,用于存储Doorbell指针;所述Doorbell检测模块用于检测所述Doorbell寄存器的更新;所述GatherDMA模块和所述ScatterDMA模块还分别耦合到外部的SDD控制器。5.NVMe协议处理方法,其特征在于,包括如下步骤:(1)主机将NVMe命令写入NVMe协议处理器的共享存储器;(2)所述NVMe协议处理器的CPU处理所述共享存储器中的NVMe命令;(3)所述NVMe协议处理器依据处理完成的NVMe命令,填充完成队列...

【专利技术属性】
技术研发人员:王晨阳王祎磊
申请(专利权)人:北京忆芯科技有限公司
类型:发明
国别省市:北京;11

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

1