CN111831227B - 一种nvme协议命令加速处理系统 - Google Patents

一种nvme协议命令加速处理系统 Download PDF

Info

Publication number
CN111831227B
CN111831227B CN202010643458.4A CN202010643458A CN111831227B CN 111831227 B CN111831227 B CN 111831227B CN 202010643458 A CN202010643458 A CN 202010643458A CN 111831227 B CN111831227 B CN 111831227B
Authority
CN
China
Prior art keywords
command
nvme
host
sram
storage sram
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010643458.4A
Other languages
English (en)
Other versions
CN111831227A (zh
Inventor
孙中琳
刘奇浩
粟如发
段好强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Sinochip Semiconductors Co Ltd
Original Assignee
Shandong Sinochip Semiconductors Co Ltd
Filing date
Publication date
Application filed by Shandong Sinochip Semiconductors Co Ltd filed Critical Shandong Sinochip Semiconductors Co Ltd
Priority to CN202010643458.4A priority Critical patent/CN111831227B/zh
Publication of CN111831227A publication Critical patent/CN111831227A/zh
Application granted granted Critical
Publication of CN111831227B publication Critical patent/CN111831227B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开一种一种NVME协议命令加速处理系统,包括设置于NVME子系统中的NVME控制器、命令处理模块和CPU,所述命令处理模块包括命令存储SRAM和总线协议转换模块,命令存储SRAM通过RAM总线与NVME控制器相连,用于接收来自NVME控制器的主机命令,总线协议转换模块将RAM总线转换为AXI总线,使CPU通过AXI总线读取命令存储SRAM中待执行的主机命令;命令存储SRAM采用队列方式实现,其中NVME控制器使用Tail入口指针向该队列中提交主机命令,CPU使用Head入口指针从该队列中获得主机命令。本发明能够减少了CPU读取操作次数,降低时延,提高性能。

Description

一种NVME协议命令加速处理系统
技术领域
本发明涉及一种NVME协议命令加速处理系统,属于存储技术领域。
背景技术
NVM Express(NVME):非易失性内存主机控制器接口规范主要面向PCIe SSD 开发的一套接口标准。NVME定义了系统接口、队列、寄存器和命令集,优势在于延迟更低,性能更好,功耗更低。
现有NVME命令的处理流程中,首先是主机阶段,主机向提交队列(SubmissionQueue,SQ)写入NVME命令,主机通过更新NVME子系统控制器中的寄存器SQ Tail Doorbell通知控制器提取NVME命令;第二阶段是NVME子系统控制器阶段,控制器从SQ提取NVME命令,执行该命令,执行命令结束后,将完成状态写入CQ,并且更新CQ Tail Pointer寄存器;第三阶段是主机阶段,主机检查CQ中的命令完成状态和完成信息,处理完成后更新控制器内部寄存器CQ Head Doorbell。从上述流程中,可以看出NVME协议详细的规定了HOST和控制器之间的处理操作,对于控制器得到NVME命令到执行该命令,却没有过多描述。现有的方案是控制器得到NVME命令,并将该命令写入控制器内部的寄存器,控制器内部CPU通过读取寄存器得到该命令,但一条NVME命令为64Byte,而单个寄存器数据量仅为4byte,因此CPU需要连续读取16次寄存器才能够得到一条NVME命令,该方案存在CPU操作频繁,长期占用CPU资源,时延消耗大等缺点。而且现有的执行命令方式为轮询,存在命令响应延迟的问题,一方面没有及时响应HOST发送的管理命令,另一方面降低了读写性能。
发明内容
本发明要解决的技术问题是提供一种NVME协议命令加速处理系统,减少了CPU读取操作次数,降低时延,提高性能。
为了解决所述技术问题,本发明采用的技术方案是:一种NVME协议命令加速处理系统,包括设置于NVME子系统中的NVME控制器、命令处理模块和CPU,所述命令处理模块包括命令存储SRAM和总线协议转换模块,命令存储SRAM通过RAM总线与NVME控制器相连,用于接收来自NVME控制器的主机命令,总线协议转换模块将RAM总线转换为AXI总线,使CPU通过AXI总线读取命令存储SRAM中待执行的主机命令;命令存储SRAM采用队列方式实现,其中NVME控制器使用Tail入口指针向该队列中提交主机命令,CPU使用Head入口指针从该队列中获得主机命令。
进一步的,Tail和Head是NVME控制器的内部寄存器,Tail寄存器为NVME 控制器可写、CPU只读;Head寄存器为NVME控制器只读、CPU可写。
进一步的,命令存储SRAM的数据位宽、深度支持参数配置。
进一步的,命令存储SRAM的数据宽度与AXI总线保持一致。
进一步的,命令处理模块还包括仲裁模块,命令处理模块通过RAM总线接收到主机命令后,仲裁模块执行以下仲裁机制:首先解析命令中优先级的配置,如果是轮询,在主机命令之前增加相同的Tag数值,当命令存储SRAM非满时,将Tag数值和主机命令写入命令存储SRAM;如果是具有优先级的命令,按照优先级设置Tag数值,数值越低优先级越高,当命令存储SRAM非满时,从命令存储SRAM中第一条命令的Tag值开始,将准备写入的主机命令对应的Tag值与命令存储SRAM中已存储命令的Tag值进行比较,如果准备写入的主机命令对应的Tag数值大于命令存储SRAM中已存储命令的Tag值,则继续与命令存储SRAM中下一条命令的Tag值比较,直到准备写入的主机命令对应的Tag数值小于或者等于命令存储SRAM中已存储命令的Tag值,此时在命令存储SRAM中将该条和该条以后的命令以及它们对应的Tag值后移,将准备写入的命令和其对应的Tag数值一并写入后移产生的位置。
进一步的,按照优先级设置Tag数值的规则为:管理命令优先级最大,Tag设置为0,读写命令有两个优先级,优先级高的,Tag设置为1,优先级低的,Tag设置为2。
进一步的,命令存储SRAM为空的条件是Head指针等于Tail指针,命令存储SRAM为满的条件是Head指针等于Tail指针加1;当Tail指针等于SRAM深度时,则自动回0;当命令存储SRAM不满时,NVME 控制器接收主机命令向命令存储SRAM写入;当命令存储SRAM不空时,NVME子系统中的CPU通过总线从SRAM中读取主机命令。
本发明的有益效果:
1、NVME 控制器通过RAM总线将主机命令写入命令存储SRAM中,RAM 总线信号精简、时序简单,提高了NVME 命令写传输性能,并且在写传输过程中不占用AXI总线,提高了NVME子系统对AXI总线的利用率,降低整个系统的功耗;
2、命令存储SRAM的数据宽度支持参数配置,适配多种数据位宽的AXI总线,可将命令存储SRAM的数据宽度与AXI总线保持一致,减少数据位宽转换处理,提高系统的兼容性,提升数据传输效率;
3、命令存储SRAM的深度支持参数配置,NVME子系统CPU可单次从命令存储SRAM中读取N条NVME命令,单次读取数据量增加至N*64Byte,提高CPU访问效率,并且减少了CPU操作次数,使整个NVME子系统具有高性能、高带宽、低延时的特性;
4、在利用命令存储SRAM存储命令过程中,完成按照优先级高低存放,NVME子系统的CPU只需依次读取即可,减少软件的操作流程,提高效率;
5、NVME子系统按照HOST配置命令的优先级执行,减少了HOST对高优先级命令的等待延迟,并且区分管理命令和读写命令的优先级,更快的响应HOST的命令,提高NVME子系统性能。
附图说明
图1为基于PCIe接口NVME控制器示意图;
图2为NVME命令处理模块的结构框图;
图3为命令存储SRAM的空状态示意图;
图4为命令存储SRAM的满状态示意图;
图5为命令存储SRAM中存储内容的示意图;
图6为仲裁机制的流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
实施例1
本实施例公开一种NVME协议命令加速处理系统,如图1所示,包括NVME控制器(NVME Controller)、命令处理模块(Command handle)和CPU,NVME控制器(NVMEController)、命令处理模块(Command handle)和CPU均设置于NVME子系统中。NVME控制器通过PCIE接口与主机(HOST)相连,主机命令通过PCIE接口发送至NVME控制器,NVME控制器通过RAM接口将主机命令发送至命令处理模块,NVME子系统内部CPU通过AXI总线访问命令处理模块中的命令。
如图2所示,命令处理模块包括命令存储SRAM和总线协议转换模块,命令存储SRAM通过RAM总线与NVME控制器相连,用于接收来自NVME控制器的主机命令,总线协议转换模块将RAM总线转换为AXI总线,使CPU通过AXI总线读取命令存储SRAM中待执行的主机命令。
命令存储SRAM采用队列方式实现,由NVME控制器和NVME子系统中CPU的固件共同维护。NVME控制器作为该队列的生产者,通过PCIe接口获得主机命令(HOST command),再将主机命令通过RAM接口写入命令存储SRAM中,固件作为该队列的消费者,NVME子系统中的CPU通过总线读取命令存储SRAM获得待执行的NVME 命令。NVME控制器使用Tail入口指针向该队列中提交主机命令,固件使用Head入口指针从该队列中获得主机命令。Tail和Head是NVME 控制器内部寄存器,Tail寄存器为NVME控制器可写、固件只读;Head寄存器为NVME控制器只读、固件可写。
本实施例中,命令存储SRAM的数据位宽、深度支持参数配置。命令存储SRAM可储存N条主机命令,由于一条主机命令为64Byte,因此该SRAM大小为N*64Byte。命令存储 SRAM的数据位宽和深度支持可配置,数据位宽可以与AXI总线位宽保持一致,如数据位宽为16Byte,一条主机命令需要读取或者写入64Byte/16Byte次命令存储SRAM,SRAM深度为N*(64Byte/16Byte)。当NVME 控制器写入I条主机命令时,Tail指针等于I*(64Byte/16Byte),当固件读取J条主机命令时,Head指针等于J*(64Byte/16Byte)。
本实施例中,命令处理模块还包括仲裁模块,命令处理模块通过RAM总线接收到主机命令后,如图6所示,仲裁模块执行以下仲裁机制:首先解析命令中优先级的配置,如果是轮询,在主机命令之前增加相同的Tag数值,当命令存储SRAM非满时,将Tag数值和主机命令写入命令存储SRAM;如果是具有优先级的命令,如图5所示,按照优先级设置Tag数值,数值越低优先级越高,当命令存储SRAM非满时,从命令存储SRAM中第一条命令的Tag值开始,将准备写入的主机命令对应的Tag值与命令存储SRAM中已存储命令的Tag值进行比较,如果准备写入的主机命令对应的Tag数值大于命令存储SRAM中已存储命令的Tag值,则继续与命令存储SRAM中下一条命令的Tag值比较,直到准备写入的主机命令对应的Tag数值小于或者等于命令存储SRAM中已存储命令的Tag值,此时在命令存储SRAM中将该条和该条以后的命令以及它们对应的Tag值后移,将准备写入的命令和其对应的Tag数值一并写入后移产生的位置。
本实施例中,按照优先级设置Tag数值的规则为:管理命令优先级最大,Tag设置为0,读写命令有两个优先级,优先级高的,Tag设置为1,优先级低的,Tag设置为2。
本实施例中,如图3所示,命令存储SRAM为空的条件是Head指针等于Tail指针。如图4所示,命令存储SRAM为满的条件是Head指针等于Tail指针加1。当Tail指针等于SRAM深度时,则自动回0。当命令存储SRAM不满时,NVME 控制器接收主机命令向命令存储SRAM写入;当命令存储SRAM不空时,NVME子系统中的CPU通过总线从SRAM中读取主机命令。
本发明在子系统中增加一个SRAM,将NVME命令通过RAM接口写入到SRAM中,CPU读取SRAM获得NVME命令,不仅可以在不占用总线的情况下高性能的将NVME命令写入SRAM,而且增加CPU单次读取NVME命令个数,减少了CPU读取操作次数,降低时延,提高性能。并且在内部存储NVME命令时,支持三种仲裁机制,包含轮询、管理命令和读写命令不同的优先级、IO Queue不同的优先级进行仲裁,根据仲裁结果排列命令,保证CPU读取命令时,优先级高的命令先被执行,降低高优先级的响应延迟,提升读写性能。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。

Claims (6)

1.一种NVME协议命令加速处理系统,其特征在于:包括设置于NVME子系统中的NVME控制器、命令处理模块和CPU,所述命令处理模块包括命令存储SRAM和总线协议转换模块,命令存储SRAM通过RAM总线与NVME控制器相连,用于接收来自NVME控制器的主机命令,总线协议转换模块将RAM总线转换为AXI总线,使CPU通过AXI总线读取命令存储SRAM中待执行的主机命令;命令存储SRAM采用队列方式实现,其中NVME控制器使用Tail入口指针向该队列中提交主机命令,CPU使用Head入口指针从该队列中获得主机命令;Tail和Head是NVME 控制器内部寄存器,Tail寄存器为NVME控制器可写、CPU只读;Head寄存器为NVME控制器只读、CPU可写。
2.根据权利要求1所述的NVME协议命令加速处理系统,其特征在于:命令存储SRAM的数据位宽、深度支持参数配置。
3.根据权利要求1或2的NVME协议命令加速处理系统,其特征在于:命令存储SRAM的数据宽度与AXI总线保持一致。
4.根据权利要求1所述的NVME协议命令加速处理系统,其特征在于:命令处理模块还包括仲裁模块,命令处理模块通过RAM总线接收到主机命令后,仲裁模块执行以下仲裁机制:首先解析命令中优先级的配置,如果是轮询,在主机命令之前增加相同的Tag数值,当命令存储SRAM非满时,将Tag数值和主机命令写入命令存储SRAM;如果是具有优先级的命令,按照优先级设置Tag数值,数值越低优先级越高,当命令存储SRAM非满时,从命令存储SRAM中第一条命令的Tag值开始,将准备写入的主机命令对应的Tag值与命令存储SRAM中已存储命令的Tag值进行比较,如果准备写入的主机命令对应的Tag数值大于命令存储SRAM中已存储命令的Tag值,则继续与命令存储SRAM中下一条命令的Tag值比较,直到准备写入的主机命令对应的Tag数值小于或者等于命令存储SRAM中已存储命令的Tag值,此时在命令存储SRAM中将该条和该条以后的命令以及它们对应的Tag值后移,将准备写入的命令和其对应的Tag数值一并写入后移产生的位置。
5.根据权利要求4所述的NVME协议命令加速处理系统,其特征在于:按照优先级设置Tag数值的规则为:管理命令优先级最大,Tag设置为0,读写命令有两个优先级,优先级高的,Tag设置为1,优先级低的,Tag设置为2。
6.根据权利要求4所述的NVME协议命令加速处理系统,其特征在于:命令存储SRAM为空的条件是Head指针等于Tail指针,命令存储SRAM为满的条件是Head指针等于Tail指针加1;当Tail指针等于SRAM深度时,则自动回0;当命令存储SRAM不满时,NVME 控制器接收主机命令向命令存储SRAM写入;当命令存储SRAM不空时,NVME子系统中的CPU通过总线从SRAM中读取主机命令。
CN202010643458.4A 2020-07-07 一种nvme协议命令加速处理系统 Active CN111831227B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010643458.4A CN111831227B (zh) 2020-07-07 一种nvme协议命令加速处理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010643458.4A CN111831227B (zh) 2020-07-07 一种nvme协议命令加速处理系统

Publications (2)

Publication Number Publication Date
CN111831227A CN111831227A (zh) 2020-10-27
CN111831227B true CN111831227B (zh) 2024-07-16

Family

ID=

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统
CN107608909A (zh) * 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536701A (zh) * 2014-12-23 2015-04-22 记忆科技(深圳)有限公司 一种nvme协议多命令队列的实现方法及系统
CN107608909A (zh) * 2017-09-19 2018-01-19 记忆科技(深圳)有限公司 一种NVMe固态硬盘写加速的方法

Similar Documents

Publication Publication Date Title
USRE48736E1 (en) Memory system having high data transfer efficiency and host controller
CN104520932B (zh) 闪存存储器控制器
CN110109626B (zh) 一种基于FPGA的NVMe SSD命令处理方法
CN103034454B (zh) 柔性闪存命令
CN112256601A (zh) 数据存取控制方法、嵌入式存储系统及嵌入式设备
CN110941395B (zh) 动态随机存取存储器、内存管理方法、系统及存储介质
CN111563052B (zh) 降低读延时的缓存方法、装置、计算机设备及存储介质
CN115113799A (zh) 主机命令的执行方法及装置
CN109062857B (zh) 一种能高速实现多处理器间通信的新型消息控制器及其通信方法
CN110941582A (zh) 一种bmc芯片的usb总线结构及其通信方法
CN116893991B (zh) 一种axi协议下的存储模块转换接口及其转换方法
CN111831227B (zh) 一种nvme协议命令加速处理系统
CN111221754A (zh) 一种自带防读写冲突功能的存储装置
CN115952116A (zh) 一种基于FPGA的嵌入式NVMe固态硬盘存储系统
CN112732176B (zh) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN212084122U (zh) 一种NVMe控制器
CN111831227A (zh) 一种nvme协议命令加速处理系统
CN113821175B (zh) 基于存储内容优先的ssd指令调度方法及系统
CN113220608B (zh) 一种NVMe命令处理器及其处理方法
CN112711442A (zh) 一种主机命令写入方法、设备、系统及可读存储介质
CN111831226B (zh) 一种自主输出nvme协议命令加速处理方法
CN210155649U (zh) 一种固态硬盘
CN110413234B (zh) 一种固态硬盘
CN114625307A (zh) 计算机可读存储介质、闪存芯片的数据读取方法及装置
CN208077160U (zh) 基于spi模式的sd卡驱动器

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant