CN111831226A - 一种自主输出nvme协议命令加速处理方法 - Google Patents

一种自主输出nvme协议命令加速处理方法 Download PDF

Info

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
Application number
CN202010643442.3A
Other languages
English (en)
Other versions
CN111831226B (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
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shandong Sinochip Semiconductors Co Ltd filed Critical Shandong Sinochip Semiconductors Co Ltd
Priority to CN202010643442.3A priority Critical patent/CN111831226B/zh
Publication of CN111831226A publication Critical patent/CN111831226A/zh
Application granted granted Critical
Publication of CN111831226B publication Critical patent/CN111831226B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-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协议命令处理领域,具体地说,是一种自主输出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中读取主机命令。
CN202010643442.3A 2020-07-07 2020-07-07 一种自主输出nvme协议命令加速处理方法 Active CN111831226B (zh)

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)

* Cited by examiner, † Cited by third party
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的数据读取方法、装置及系统

Patent Citations (9)

* Cited by examiner, † Cited by third party
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