CN111831227B - 一种nvme协议命令加速处理系统 - Google Patents
一种nvme协议命令加速处理系统 Download PDFInfo
- 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
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 13
- 238000006243 chemical reaction Methods 0.000 claims abstract description 8
- 230000007246 mechanism Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000034 method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
Abstract
本发明公开一种一种NVME协议命令加速处理系统,包括设置于NVME子系统中的NVME控制器、命令处理模块和CPU,所述命令处理模块包括命令存储SRAM和总线协议转换模块,命令存储SRAM通过RAM总线与NVME控制器相连,用于接收来自NVME控制器的主机命令,总线协议转换模块将RAM总线转换为AXI总线,使CPU通过AXI总线读取命令存储SRAM中待执行的主机命令;命令存储SRAM采用队列方式实现,其中NVME控制器使用Tail入口指针向该队列中提交主机命令,CPU使用Head入口指针从该队列中获得主机命令。本发明能够减少了CPU读取操作次数,降低时延,提高性能。
Description
技术领域
本发明涉及一种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中读取主机命令。
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)
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)
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 |