CN111831226A - 一种自主输出nvme协议命令加速处理方法 - Google Patents
一种自主输出nvme协议命令加速处理方法 Download PDFInfo
- Publication number
- CN111831226A CN111831226A CN202010643442.3A CN202010643442A CN111831226A CN 111831226 A CN111831226 A CN 111831226A CN 202010643442 A CN202010643442 A CN 202010643442A CN 111831226 A CN111831226 A CN 111831226A
- Authority
- CN
- China
- Prior art keywords
- nvme
- dtcm
- cpu
- controller
- subsystem
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Abstract
本发明公开一种自主输出NVME协议命令加速处理方法,本方法在NVME子系统的CPU中集成一个或多个数据紧耦合内存单元DTCM,在NVME控制器增加一个AXI MASTER接口,所述AXI MASTER接口接入AXI总线,地址访问空间为CPU内部的DTCM地址;NVME控制器通过AXI MASTER接口将NVME命令写入DTCM,NVME子系统中的CPU内核直接访问DTCM;并且NVME子系统根据namespace ID,将namespace ID不同的所有命令写入相应的DTCM中。本发明减少了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资源,时延消耗大等缺点。
另外,为了支持不同类型的应用层,NVME协议支持多namespace,一个空间可以对应若干个逻辑空间,每个namespace都有一个ID,HOST通过ID来区分不同的namespace,不同的namespace可以有不同的数据结构和相关设置,但支持多namespace的同时,会增加软件对不同namespace的处理开销和设计难度。
发明内容
本发明要解决的技术问题是提供一种自主输出NVME协议命令加速处理方法,减少了CPU读取操作次数,降低时延,提高性能。
为了解决所述技术问题,本发明采用的技术方案是:一种自主输出NVME协议命令加速处理方法,包括以下步骤:
S01)、在NVME子系统的CPU中集成一个或多个数据紧耦合内存单元DTCM,在NVME控制器增加一个AXI MASTER接口,所述AXI MASTER接口接入AXI总线,地址访问空间为CPU内部的DTCM地址;
S02)、NVME控制器通过AXI MASTER接口将NVME命令写入DTCM,NVME子系统中的CPU内核直接访问DTCM;
S03)、NVME子系统根据namespace ID,将namespace ID为i的所有命令通过AXI MASTER接口将NVME 命令写入DTCMi中,i=1,2,…,n:
S04)每个DTCM都采用队列方式实现,由NVME控制器和NVME子系统中的CPU共同维护,NVME控制器作为本队列的生产者,通过PCIe接口获得主机命令,再将主机命令通过AXIMASTER接口写入DTCM中,CPU作为该队列的消费者,NVME子系统中的CPU直接读取DTCM,获得待执行的主机命令。
进一步的,NVME控制器使用Tail入口指针向DTCM队列提交主机命令,CPU使用Head入口指针从DTCM队列获得主机命令。
进一步的,Tail、Head是NVME控制器的内部寄存器,Tail寄存器为NVME控制器可写、CPU只读,Head寄存器为NVME控制器只读、CPU可写。
进一步的,NVME子系统中系统总线、NVME控制器、CPU与系统总线接口的数据宽度支持参数配置。
进一步的,DTCM大小为N*64Byte。
进一步的,NVME子系统的CPU为多核CPU,每个CPU内核均集成一个DTCM。
进一步的,每个DTCM与NVME控制器、CPU的通信并行进行。
进一步的,DTCM为空的条件是Head指针等于Tail指针,DTCM为满的条件是Head指针等于Tail指针加1,当Tail指针等于DTCM深度时,则自动回0.
进一步的,当DTCM不满时,NVME控制器接收的主机命令通过AXI MASTER接口向DTCM写入;当DTCM不空时,NVME子系统中的CPU从DTCM中读取主机命令。
本发明提供一种自主输出NVME协议命令加速处理方法,有以下有益效果:
1、NVME 控制器通过AXI MASTER接口将主机命令写入DTCM中,具有AXI总线高性能、高带宽、低延时等优势,提高系统总线的数据传输高效性;
2、NVME 控制器跟据namespace ID将每个namespace的命令写入不同的DTCM中,利用多核CPU,NVME子系统支持并行处理命令,提高系统的高效性;
3、NVME子系统中系统总线、NVME 控制器、CPU与总线接口的数据宽度可用参数配置,将数据宽度配置为N*64Byte,NVME 控制器可单次将N条主机命令写入CPU内部TCM中,单次写入数据量增加至N*64Byte,并且CPU单次大批量从DTCM中读取主机命令,减少了CPU操作次数,解决了之前CPU单次访问NVME 控制器寄存器只读取4Byte数据量的问题,提高了NVME子系统带宽和性能;
4、将主机命令存储在DTCM中,CPU内核可直接访问DTCM,访问速度极快,提高CPU访问效率,使整个NVME子系统具有高性能、高带宽、低延时的特性。
附图说明
图1为基于PCIe接口NVME控制器示意图;
图2为DTCM空状态示意图;
图3为DTCM满状态示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步的说明。
实施例1
本实施例公开一种自主输出NVME协议命令加速处理方法,包括以下步骤:
S01)、如图1所示,在NVME子系统的CPU中集成一个或多个数据紧耦合内存单元DTCM(Data Tightly Coupled Memory),在NVME控制器增加一个AXI MASTER接口,所述AXIMASTER接口接入AXI总线,地址访问空间为CPU内部的DTCM地址;
S02)、NVME控制器通过AXI MASTER接口将NVME命令写入DTCM,NVME子系统中的CPU内核直接访问DTCM;
S03)、NVME子系统根据namespace ID,将namespace ID为i的所有命令通过AXI MASTER接口将NVME 命令写入DTCMi中,i=1,2,…,n:
S04)每个DTCM都采用队列方式实现,由NVME控制器和NVME子系统中的CPU共同维护,NVME控制器作为本队列的生产者,通过PCIe接口获得主机命令,再将主机命令通过AXIMASTER接口写入DTCM中,CPU作为该队列的消费者,NVME子系统中的CPU直接读取DTCM,获得待执行的主机命令。
本实施例中,NVME控制器使用Tail入口指针向DTCM队列提交主机命令,CPU使用Head入口指针从DTCM队列获得主机命令。具体的,Tail、Head是NVME控制器的内部寄存器,Tail寄存器为NVME控制器可写、CPU只读,Head寄存器为NVME控制器只读、CPU可写。
本实施例中,NVME子系统中系统总线、NVME控制器、CPU与系统总线接口的数据宽度支持参数配置。DTCM可存储N条主机命令,由于一条主机命令为64Byte,因此DTCM大小为N*64Byte。将系统总线的数据宽度置为N*64Byte,NVME控制器可单次将N条NVME命令写入CPU内部DTCM中,单次写入数据量增加至N*64Byte,并且CPU单次大批量从DTCM中读取主机命令,减少了CPU操作次数,解决了之前CPU单次访问NVME控制器寄存器只读取4Byte数据量的问题,提高了NVME子系统带宽和性能。
本实施例中,DTCM数据位宽为16Byte,一条主机命令需要读取或者写入64Byte/16Byte次DTCM,DTCM深度为N*(64Byte/16Byte)。当NVME控制器写入I条主机命令时,Tail指针等于I*(64Byte/16Byte),当CPU读取J条主机命令时,Head指针等于J*(64Byte/16Byte)。
本实施例中,NVME子系统的CPU为双核CPU,每个CPU内核均集成一个DTCM,如图1所示,CPU中集成了两个DTCM,分别为DTCM0和DTCM1。每个DTCM与NVME控制器、CPU的通信并行进行。
如图2所示,DTCM为空的条件是Head指针等于Tail指针,如图3所示,DTCM为满的条件是Head指针等于Tail指针加1,当Tail指针等于DTCM深度时,则自动回0。
当DTCM不满时,NVME控制器接收的主机命令通过AXI MASTER接口向DTCM写入;当DTCM不空时,NVME子系统中的CPU从DTCM中读取主机命令。
本发明提出一种自主输出NVME协议命令加速处理的方法,将NVME命令写入DTCM中,CPU需要读取NVME命令时直接访问DTCM,不用消耗时间访问外部的寄存器或者RAM。NVME命令处理模块接口配置为主机端接口,访问地址空间为NVME子系统中CPU内部的DTCM,NVME命令处理模块通过系统总线可直接将NVME命令写入到DTCM中,CPU读取DTCM获得NVME命令,由于DTCM被直接集成在CPU芯片中,缩短了CPU获得NVME命令的时间延时,另一方面,由于NVME命令处理模块一次性可将NVME命令大批量写入DTCM中,减少了CPU读取操作次数,提高NVME命令传输高效性。并且利用多核CPU芯片中,每个核都对应有一个DTCM,将不同namespace的NVME命令放在不同核的DTCM中,实现多核CPU对多namespace的NVME命令的执行,提高多namespace的读写性能。
以上描述的仅是本发明的基本原理和优选实施例,本领域技术人员根据本发明做出的改进和替换,属于本发明的保护范围。
Claims (9)
1.一种自主输出NVME协议命令加速处理方法,其特征在于:包括以下步骤:
S01)、在NVME子系统的CPU中集成一个或多个数据紧耦合内存单元DTCM,在NVME控制器增加一个AXI MASTER接口,所述AXI MASTER接口接入AXI总线,地址访问空间为CPU内部的DTCM地址;
S02)、NVME控制器通过AXI MASTER接口将NVME命令写入DTCM,NVME子系统中的CPU内核直接访问DTCM;
S03)、NVME子系统根据namespace ID,将namespace ID为i的所有命令通过AXI MASTER接口将NVME 命令写入DTCMi中,i=1,2,…,n:
S04)每个DTCM都采用队列方式实现,由NVME控制器和NVME子系统中的CPU共同维护,NVME控制器作为本队列的生产者,通过PCIe接口获得主机命令,再将主机命令通过AXIMASTER接口写入DTCM中,CPU作为该队列的消费者,NVME子系统中的CPU直接读取DTCM,获得待执行的主机命令。
2.根据权利要求1所述的自主输出NVME协议命令加速处理方法,其特征在于:NVME控制器使用Tail入口指针向DTCM队列提交主机命令,CPU使用Head入口指针从DTCM队列获得主机命令。
3.根据权利要求2所述的自主输出NVME协议命令加速处理方法,其特征在于:Tail、Head是NVME控制器的内部寄存器,Tail寄存器为NVME控制器可写、CPU只读,Head寄存器为NVME控制器只读、CPU可写。
4.根据权利要求1所述的自主输出NVME协议命令加速处理方法,其特征在于:NVME子系统中系统总线、NVME控制器、CPU与系统总线接口的数据宽度支持参数配置。
5.根据权利要求1所述的自主输出NVME协议命令加速处理方法,其特征在于:DTCM大小为N*64Byte。
6.根据权利要求1所述的自主输出NVME协议命令加速处理方法,其特征在于:NVME子系统的CPU为多核CPU,每个CPU内核均集成一个DTCM。
7.根据权利要求6所述的自主输出NVME协议命令加速处理方法,其特征在于:每个DTCM与NVME控制器、CPU的通信并行进行。
8.根据权利要求2所述的自主输出NVME协议命令加速处理方法,其特征在于:DTCM为空的条件是Head指针等于Tail指针,DTCM为满的条件是Head指针等于Tail指针加1,当Tail指针等于DTCM深度时,则自动回0。
9.根据权利要求1所述的自主输出NVME协议命令加速处理方法,其特征在于:当DTCM不满时,NVME控制器接收的主机命令通过AXI MASTER接口向DTCM写入;当DTCM不空时,NVME子系统中的CPU从DTCM中读取主机命令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010643442.3A CN111831226B (zh) | 2020-07-07 | 2020-07-07 | 一种自主输出nvme协议命令加速处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010643442.3A CN111831226B (zh) | 2020-07-07 | 2020-07-07 | 一种自主输出nvme协议命令加速处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831226A true CN111831226A (zh) | 2020-10-27 |
CN111831226B CN111831226B (zh) | 2023-09-29 |
Family
ID=72901222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010643442.3A Active CN111831226B (zh) | 2020-07-07 | 2020-07-07 | 一种自主输出nvme协议命令加速处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831226B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312068A (zh) * | 2007-05-23 | 2008-11-26 | 三星电子株式会社 | 半导体存储器系统及控制其非易失性存储器的操作的方法 |
CN103970688A (zh) * | 2013-02-04 | 2014-08-06 | Lsi公司 | 缩短数据存储系统中写入等待时间的方法和系统 |
CN104238954A (zh) * | 2013-06-20 | 2014-12-24 | 联想(北京)有限公司 | 一种电子设备及信息处理方法 |
CN104536701A (zh) * | 2014-12-23 | 2015-04-22 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
CN108121685A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种嵌入式多核cpu固件运行方法 |
CN109597577A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种处理nvme协议读写命令的方法、系统及相关装置 |
CN111095231A (zh) * | 2018-06-30 | 2020-05-01 | 华为技术有限公司 | 一种基于NVMe的数据读取方法、装置及系统 |
-
2020
- 2020-07-07 CN CN202010643442.3A patent/CN111831226B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312068A (zh) * | 2007-05-23 | 2008-11-26 | 三星电子株式会社 | 半导体存储器系统及控制其非易失性存储器的操作的方法 |
US20080291727A1 (en) * | 2007-05-23 | 2008-11-27 | Samsung Electronics Co., Ltd. | Semiconductor memory system having volatile memory and non-volatile memory that share bus, and method of controlling operation of non-volatile memory |
CN103970688A (zh) * | 2013-02-04 | 2014-08-06 | Lsi公司 | 缩短数据存储系统中写入等待时间的方法和系统 |
US20140223071A1 (en) * | 2013-02-04 | 2014-08-07 | Lsi Corporation | Method and system for reducing write latency in a data storage system by using a command-push model |
CN104238954A (zh) * | 2013-06-20 | 2014-12-24 | 联想(北京)有限公司 | 一种电子设备及信息处理方法 |
CN104536701A (zh) * | 2014-12-23 | 2015-04-22 | 记忆科技(深圳)有限公司 | 一种nvme协议多命令队列的实现方法及系统 |
CN108121685A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种嵌入式多核cpu固件运行方法 |
CN111095231A (zh) * | 2018-06-30 | 2020-05-01 | 华为技术有限公司 | 一种基于NVMe的数据读取方法、装置及系统 |
CN109597577A (zh) * | 2018-12-03 | 2019-04-09 | 郑州云海信息技术有限公司 | 一种处理nvme协议读写命令的方法、系统及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111831226B (zh) | 2023-09-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108549610B (zh) | 一种NVMe扩展的实现方法及固态硬盘 | |
CN103034454B (zh) | 柔性闪存命令 | |
GB2396711A (en) | Memory controller with programmable timing and control registers for data transfers which have a distinct sequence of phases. | |
CN102981984A (zh) | 使用完成者对存储器区域排序要求的知识来修改事务属性 | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
CN107463126A (zh) | 无人机双核控制系统及数据读取与写入方法 | |
CN106776458B (zh) | 基于fpga和hpi的dsp间的通信装置及通信方法 | |
US8943240B1 (en) | Direct memory access and relative addressing | |
EP4202704A1 (en) | Interleaving of heterogeneous memory targets | |
CN102789424B (zh) | 基于fpga的外扩ddr2的读写方法及基于fpga的外扩ddr2颗粒存储器 | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
US10853255B2 (en) | Apparatus and method of optimizing memory transactions to persistent memory using an architectural data mover | |
CN111831226B (zh) | 一种自主输出nvme协议命令加速处理方法 | |
CN218068843U (zh) | 一种axi主端口转apb从端口的桥接电路结构及一种soc系统 | |
CN206975631U (zh) | 一种通用输入输出时序处理器 | |
CN110765065A (zh) | 片上系统 | |
CN111831227A (zh) | 一种nvme协议命令加速处理系统 | |
EP4266185A1 (en) | Microcontroller chip containing multi-protocol communication interface peripheral and operation method therefor | |
CN112565474B (zh) | 面向分布式共享spm的批量数据传输方法 | |
JP3431025B2 (ja) | データ転送システム | |
CN108536475B (zh) | 完整编程命令处理方法与装置 | |
CN111221754A (zh) | 一种自带防读写冲突功能的存储装置 | |
CN112732176B (zh) | 基于fpga的ssd访问方法及装置、存储系统及存储介质 | |
TWI814655B (zh) | 記憶裝置、快閃記憶體控制器及其控制方法 | |
CN117827725B (zh) | 一种基于fpga的emc接口扩展模块、系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |