掌桥专利:专业的专利平台
掌桥专利
首页

NVMe主机、硬盘与内存之间的数据传输方法及系统

文献发布时间:2024-04-18 19:59:31


NVMe主机、硬盘与内存之间的数据传输方法及系统

技术领域

本申请涉及高速存储技术领域,尤其涉及NVMe主机、硬盘与内存之间的数据传输方法及系统。

背景技术

固态硬盘(Solid State Disk或Solid State Drive,简称SSD)是用固态电子存储芯片阵列制成的硬盘。目前,传统的存储架构是固态硬盘作为一个PCIe Endpoint(EP)通过PCIe连接根复合体(Root Complex,简称RC),然后根复合体连接CPU和内存,NVMe协议的处理都是依靠CPU的软件来完成的。

然而,随着网络数量传输速度越来越高,储存的速率也随之增长,储存对CPU的占用率和内存的消耗也在剧增。另外CPU通过软件来完成固态硬盘的读写也会受到CPU性能、软件优化等影响。因此,亟需设计一种能够替代CPU的硬件设备来基于NVMe协议实现固态硬盘和内存之间的数据传输。

发明内容

鉴于此,本申请实施例提供了NVMe主机、硬盘与内存之间的数据传输方法及系统,以消除或改善现有技术中存在的一个或更多个缺陷。

本申请的一个方面提供了一种NVMe主机,所述NVMe主机用于在CPU外部基于NVMe协议接收微处理器发送的用户命令,将所述用户命令写入本地的用户提交队列,并在该用户提交队列被写入后触发门铃,以使外部的根复合体提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘与内存之间进行数据传输,而后返回各个用户命令各自对应的写入完成数据;

所述NVMe主机还用于接收并存储所述根复合体发送的各个所述用户命令各自对应的写入完成数据,以使所述微处理器根据各个所述用户命令各自对应的写入完成数据获知所述用户命令对应的完成状态信息。

在本申请的一些实施例中,包括:依次通信连接的寄存器、用户提交队列状态机和用户提交队列缓存;

所述寄存器用于在CPU外部基于NVMe协议接收并存储微处理器发送的用户命令及硬件状态数据,并将所述用户命令发送至所述用户提交队列状态机;

所述用户提交队列状态机用于将所述用户命令转发至所述用户提交队列缓存,并记录所述用户提交队列缓存中的用户提交队列的状态数据;

所述用户提交队列缓存用于存储所述用户提交队列。

在本申请的一些实施例中,还包括:与所述用户提交队列状态机之间通信连接的门铃状态机;

所述用户提交队列状态机还用于根据记录的所述用户提交队列的状态数据判断该用户提交队列当前是否被写入,若是,则向所述门铃状态机发送第一触发指令;

所述门铃状态机用于根据所述用户提交队列状态机发送的所述第一触发指令触发门铃,以使外部的根复合体提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘与内存之间进行数据传输,而后返回各个所述用户命令各自对应的写入完成数据。

在本申请的一些实施例中,还包括:通信连接的用户完成队列缓存和用户完成队列状态机;

所述用户完成队列缓存与所述根复合体之间通信连接,所述用户完成队列状态机分别与所述寄存器和所述门铃状态机之间通信连接;

所述用户完成队列缓存用于接收所述根复合体发送各个所述用户命令各自对应的写入完成数据,并将各个所述用户命令各自对应的写入完成数据存储至本地的用户完成队列;

所述用户完成队列状态机用于记录所述用户完成队列缓存中的所述用户完成队列的状态数据,并根据记录的所述用户完成队列的状态数据判断该用户完成队列当前是否被写入,若是,则向所述门铃状态机发送第二触发指令;

所述门铃状态机还用于根据所述用户完成队列状态机发送的所述第二触发指令触发门铃,以使所述寄存器自所述用户完成队列状态机获取所述用户完成队列的状态数据;

所述寄存器还用于将自所述用户完成队列状态机获取所述用户完成队列的状态数据转发至所述微处理器,以使所述微处理器基于所述用户完成队列的状态数据获知所述用户命令对应的完成状态信息。

在本申请的一些实施例中,还包括:通信连接的管理者队列状态机和管理者提交队列缓存;

所述管理者队列状态机与所述寄存器之间通信连接;

所述寄存器还用于在CPU外部基于NVMe协议接收并存储微处理器发送的管理者命令及硬件状态数据,并将所述管理者命令发送至所述管理者提交队列状态机;

所述管理者提交队列状态机用于将所述管理者命令转发至所述管理者提交队列缓存,并记录所述管理者提交队列缓存中的管理者提交队列的状态数据;

所述管理者提交队列缓存用于存储所述管理者提交队列。

在本申请的一些实施例中,还包括:与所述根复合体之间通信连接的管理者队列存储空间;

所述管理者队列状态机还与所述门铃状态机之间通信连接;

所述管理者提交队列状态机还用于根据记录的所述管理者提交队列的状态数据判断该管理者提交队列当前是否被写入,若是,则向所述门铃状态机发送第三触发指令;

所述门铃状态机用于根据所述管理者提交队列状态机发送的所述第三触发指令触发门铃,以使外部的根复合体提取所述管理者提交队列并将所述管理者提交队列对应的管理者队列数据写入所述管理者队列存储空间,而后返回各个所述管理者命令各自对应的写入完成数据;

所述管理者队列存储空间用于存储所述管理者提交队列对应的管理者队列数据。

在本申请的一些实施例中,还包括:分别与所述管理者队列状态机和所述根复合体之间通信连接的管理者完成队列缓存;

所述管理者完成队列缓存用于接收所述根复合体发送各个所述管理者命令各自对应的写入完成数据,并将各个所述管理者命令各自对应的写入完成数据存储至本地的管理者完成队列;

所述管理者完成队列状态机用于记录所述管理者完成队列缓存中的所述管理者完成队列的状态数据,并根据记录的所述管理者完成队列的状态数据判断该管理者完成队列当前是否被写入,若是,则向所述门铃状态机发送第四触发指令;

所述门铃状态机还用于根据所述管理者完成队列状态机发送的所述第四触发指令触发门铃,以使所述寄存器自所述管理者完成队列状态机获取所述管理者完成队列的状态数据;

所述寄存器还用于将自所述管理者完成队列状态机获取所述管理者完成队列的状态数据转发至所述微处理器,以使所述微处理器基于所述管理者完成队列的状态数据获知所述管理者命令对应的完成状态信息。

在本申请的一些实施例中,还包括:分别与所述寄存器、所述根复合体和所述管理者队列状态机之间通信连接的初始化状态机;

所述寄存器还用于在CPU外部基于NVMe协议接收并存储微处理器发送的用于复位后初始化NVMe系统的管理者命令及硬件状态数据,并将所述用于复位后初始化NVMe系统的管理者命令发送至所述初始化状态机;

所述初始化状态机用于将所述用于复位后初始化NVMe系统的管理命令写入所述管理者提交队列缓存。

本申请的另一个方面提供了一种硬盘与内存之间的数据传输方法,包括:

采用所述的NVMe主机在CPU外部基于NVMe协议接收微处理器发送的用户命令,将所述用户命令写入本地的用户提交队列,并在该用户提交队列被写入后触发门铃,以使外部的根复合体提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘与内存之间进行数据传输,而后返回各个用户命令各自对应的写入完成数据;

采用所述NVMe主机接收并存储所述根复合体发送的各个所述用户命令各自对应的写入完成数据,以使所述微处理器根据各个所述用户命令各自对应的写入完成数据获知所述用户命令对应的完成状态信息。

本申请的第三个方面提供了一种硬盘与内存之间的数据传输系统,包括:微处理器、根复合体以及所述NVMe主机;

所述NVMe主机、所述微处理器和CPU之间依次通信连接;

所述NVMe主机与所述根复合体之间通信连接;

所述根复合体还分别与固态硬盘和内存之间通信连接。

本申请提供的NVMe主机,用于在CPU外部基于NVMe协议接收微处理器发送的用户命令,将所述用户命令写入本地的用户提交队列,并在该用户提交队列被写入后触发门铃,以使外部的根复合体提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘与内存之间进行数据传输,而后返回各个用户命令各自对应的写入完成数据;所述NVMe主机还用于接收并存储所述根复合体发送的各个所述用户命令各自对应的写入完成数据,以使所述微处理器根据各个所述用户命令各自对应的写入完成数据获知所述用户命令对应的完成状态信息,采用硬件替代CPU实现基于NVMe协议的硬盘与内存之间的数据传输,不需要CPU处理NVMe协议相关的操作,CPU只需配置硬件和检查硬件状态,能够有效降低主机CPU的占用率及资源消耗;同时硬件实现在处理速度和时延上有更大的优势,能够有效提高NVMe用户命令的处理效率,增加吞吐量;并能够提高固态硬盘访问的并行性,能够充分利用NVMe多队列的优势。

本申请的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本申请的实践而获知。本申请的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。

本领域技术人员将会理解的是,能够用本申请实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本申请能够实现的上述和其他目的。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,并不构成对本申请的限定。附图中的部件不是成比例绘制的,而只是为了示出本申请的原理。为了便于示出和描述本申请的一些部分,附图中对应部分可能被放大,即,相对于依据本申请实际制造的示例性装置中的其它部件可能变得更大。在附图中:

图1为本申请一实施例中的NVMe主机与其他部件之间的连接关系示意图。

图2为本申请一实施例中的NVMe主机的第一种结构示意图。

图3为本申请一实施例中的NVMe主机的第二种结构示意图。

图4为本申请一实施例中的NVMe主机的第三种结构示意图。

图5为本申请一实施例中的硬盘与内存之间的数据传输方法的流程示意图。

图6为本申请一实施例中的硬盘与内存之间的数据传输系统的架构示意图。

图7为本申请一应用实例中的传统存储架构和硬件实现的存储架构的对比示意图。

图8为本申请一应用实例中的硬盘与内存之间的数据传输系统的一种举例示意图。

图9为本申请一应用实例中的NVMe主机的一种内部模块举例示意图。

图10为本申请一应用实例中的初始化工作流程示意图。

图11为本申请一应用实例中的管理者队列工作流程示意图。

图12为本申请一应用实例中的用户队列工作流程示意图。

附图标记:

100、NVMe主机;

101、寄存器;

102、用户提交队列状态机;

103、用户提交队列缓存;

104、门铃状态机;

105、用户完成队列缓存;

106、用户完成队列状态机;

107、管理者队列状态机;

108、管理者提交队列缓存;

109、管理者队列存储空间;

110、管理者完成队列缓存;

111、初始化状态机;

200、微处理器;

300、根复合体;

400、NVMe oF单元;

500、RDMA单元;

600、CPU;

700、固态硬盘;

800、内存。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本申请做进一步详细说明。在此,本申请的示意性实施方式及其说明用于解释本申请,但并不作为对本申请的限定。

在此,还需要说明的是,为了避免因不必要的细节而模糊了本申请,在附图中仅仅示出了与根据本申请的方案密切相关的结构和/或处理步骤,而省略了与本申请关系不大的其他细节。

应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。

在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。

在下文中,将参考附图描述本申请的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。

当今是一个真正的数据大爆炸时代,而这些数据都是存储在云服务器上。云服务器的核心就是存储介质。随着数据呈爆炸式增长,对数据存储介质在速度上、容量上有更高的要求,传统存储介质已经不能胜任,固态硬盘的出现刚好可以满足这个需求。固态硬盘使用电子芯片存储数据,没有机械硬盘(Hard Disk Drive,HDD)的机械式部件,因此在速度、时延、功耗、抗震等方面,与机械硬盘相比有碾压式优势。

机械硬盘和早期的固态硬盘绝大多数都是使用SATA(Serial ATA)硬盘接口,跑的是高级主机控制器接口AHCI(Advanced Host Controller Interface)。AHCI支持原生命令序列NCQ(Native Command Queuing)功能和热插拔技术。NCQ最大深度为32,即主机最多可以发32条命令给机械硬盘或者固态硬盘执行,跟之前硬盘只能逐条命令执行相比,硬盘性能大幅提升,在机械硬盘时代或者固态硬盘早期,AHCI协议和SATA接口足够满足系统性能需求。

随着固态硬盘技术的飞速发展,固态硬盘的性能飙升,底层闪存带宽越来越宽,介质访问延时越来越低,系统性能瓶颈已经由下转移到上面的接口和协议处。AHCI和SATA已经不能满足高性能和低延时需求,因此固态硬盘迫切需要更快、更高效的协议和接口。在这样的背景下,非易失性内存主机控制器接口规范NVMe(NVM Express)横空出世。相比于传统的SATA等形式的固态硬盘,NVMe具有队列多(64K)、深度大(64K)、无需加锁等特点,充分利用非易失存储介质NVM(Non Volatile Memory)的特点,具有更低的延时,更高的带宽。

然而,现有的硬盘与内存之间的数据传输方式对CPU的占用率和内存的消耗在剧增,也影响固态硬盘的读写效率。尽管其他现有方式中已经提出采用包含有NVMe命令子系统和多个NVM子系统的方式实现NVMe控制器执行命令时,能够实现不再需要与ARM核之间进行交互,但该方式并不适用于硬盘与内存之间的数据传输。而还有其他的现有方式利用FPGA内嵌PCIE硬核,以RTL逻辑实现NVMe主机控制器,并搭建整体系统实现对数据流的高速读写以及SSD管理控制,但该种方式无法避免的需要操作系统的参与,会增大处理过程复杂度以及FPGA资源的消耗。

基于此,为了解决现有的硬盘与内存之间的数据传输方式对CPU的占用率和内存的消耗在剧增,也影响固态硬盘的读写效率的这一问题,同时能够避免操作系统的参与,本申请实施例分别提供一种NVMe主机、该NVMe主机实现的硬盘与内存之间的数据传输方法、包含有所述NVMe主机的一种硬盘与内存之间的数据传输系统,能够适用于硬盘与内存之间的数据传输场景,且采用硬件替代CPU实现基于NVMe协议的硬盘与内存之间的数据传输,能够有效降低主机CPU的占用率及资源消耗,并能够有效提高NVMe用户命令的处理效率,增加吞吐量;可完全使用FPGA实现了NVMe HOST的功能,无需操作系统的参与,只需简单的配置寄存器即可实现NVMe的ADMIN队列和IO队列,可以做到更高效更节省FPGA资源。

具体通过下述实施例进行详细说明。

基于此,本申请实施例提供一种NVMe主机,参见图1,所述NVMe主机100、微处理器200与CPU600之间依次通信连接,且该NVMe主机100基于根复合体300分别与固态硬盘700和内存800之间通信连接;

所述NVMe主机100用于基于NVMe协议对所述微处理器200发送的用户命令进行处理,进而使得所述根复合体300用于基于所述NVMe主机100的用户命令处理结果实现所述固态硬盘700和内存800之间的数据传输。

具体来说,所述NVMe主机100用于在CPU600外部基于NVMe协议接收微处理器200发送的用户命令,将所述用户命令写入本地的用户提交队列,并在该用户提交队列被写入后触发门铃,以使外部的根复合体300提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘700与内存800之间进行数据传输,而后返回各个用户命令各自对应的写入完成数据;

所述NVMe主机100还用于接收并存储所述根复合体300发送的各个所述用户命令各自对应的写入完成数据,以使所述微处理器200根据各个所述用户命令各自对应的写入完成数据获知所述用户命令对应的完成状态信息。

在本申请的一个或多个实施例中,所述内存可以采用双倍速率同步动态随机存储器,可简写为DDR。

在本申请的一个或多个实施例中,所述用户指令可以写为NVMe用户指令,是后续实施例提到的NVMe指令中的一种用户根据自身需求提出的特定用户命令。

在本申请的一个或多个实施例中,所述微控制器可以采用片上系统SOC,主要负责用户指令的输入和硬件状态的获取。

从上述描述可知,本申请实施例提供的NVMe主机,采用硬件替代CPU实现基于NVMe协议的硬盘与内存之间的数据传输,不需要CPU处理NVMe协议相关的操作,CPU只需配置硬件和检查硬件状态,能够有效降低主机CPU的占用率及资源消耗;同时硬件实现在处理速度和时延上有更大的优势,能够有效提高NVMe用户命令的处理效率,增加吞吐量;并能够提高固态硬盘访问的并行性,能够充分利用NVMe多队列的优势。

为了进一步提高NVMe主机基于NVMe协议实现固态硬盘与内存之间数据传输的可靠性及效率,在本申请提供的NVMe主机的实施例中,参见图2,所述NVMe主机具体包含有如下内容:

依次通信连接的寄存器101、用户提交队列状态机102和用户提交队列缓存103;

所述寄存器101用于在CPU600外部基于NVMe协议接收并存储微处理器200发送的用户命令及硬件状态数据,并将所述用户命令发送至所述用户提交队列状态机102;

所述用户提交队列状态机102用于将所述用户命令转发至所述用户提交队列缓存103,并记录所述用户提交队列缓存103中的用户提交队列的状态数据;

所述用户提交队列缓存103用于存储所述用户提交队列。

也就是说,寄存器101主要负责寄存用户指令和保存硬件状态;用户提交队列状态机102主要用来处理用户提交队列的状态;用户提交队列缓存103主要用来存储用户提交队列。

为了进一步提高NVMe主机基于NVMe协议实现固态硬盘与内存之间数据传输的可靠性及效率,在本申请提供的NVMe主机的实施例中,参见图2,所述NVMe主机还具体包含有如下内容:

与所述用户提交队列状态机102之间通信连接的门铃状态机104;

所述用户提交队列状态机102还用于根据记录的所述用户提交队列的状态数据判断该用户提交队列当前是否被写入,若是,则向所述门铃状态机104发送第一触发指令;

所述门铃状态机104用于根据所述用户提交队列状态机102发送的所述第一触发指令触发门铃,以使外部的根复合体300提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘700与内存800之间进行数据传输,而后返回各个所述用户命令各自对应的写入完成数据。

也就是说,门铃状态机104主要用来处理门铃。

为了进一步提高NVMe主机基于NVMe协议实现固态硬盘与内存之间数据传输的可靠性及效率,在本申请提供的NVMe主机的实施例中,参见图2,所述NVMe主机还具体包含有如下内容:

通信连接的用户完成队列缓存105和用户完成队列状态机106;

所述用户完成队列缓存105与所述根复合体300之间通信连接,所述用户完成队列状态机106分别与所述寄存器101和所述门铃状态机104之间通信连接;

所述用户完成队列缓存105用于接收所述根复合体300发送各个所述用户命令各自对应的写入完成数据,并将各个所述用户命令各自对应的写入完成数据存储至本地的用户完成队列;

所述用户完成队列状态机106用于记录所述用户完成队列缓存105中的所述用户完成队列的状态数据,并根据记录的所述用户完成队列的状态数据判断该用户完成队列当前是否被写入,若是,则向所述门铃状态机104发送第二触发指令;

所述门铃状态机104还用于根据所述用户完成队列状态机106发送的所述第二触发指令触发门铃,以使所述寄存器101自所述用户完成队列状态机106获取所述用户完成队列的状态数据;

所述寄存器101还用于将自所述用户完成队列状态机106获取所述用户完成队列的状态数据转发至所述微处理器200,以使所述微处理器200基于所述用户完成队列的状态数据获知所述用户命令对应的完成状态信息。

也就是说,用户完成队列缓存105主要用来存放用户完成队列,用户完成队列状态机106主要用来处理用户完成队列的状态。

基于上述寄存器101、用户提交队列状态机102、用户提交队列缓存103、门铃状态机104、用户完成队列缓存105、用户完成队列状态机106,能够实现用户队列工作流程:用户根据自身需求将特定用户命令写入用户提交队列缓存;用户提交队列写完后用户提交队列状态机敲门铃通知根复合体300来取用户提交队列;根复合体300从用户提交队列缓存中取走提交队列;根复合体300根据用户提交队列的内容将用户数据从固态硬盘中取出并写入到内存中,或者将内存的数据写入固态硬盘中;根复合体300写完数据后再往用户完成队列缓存里面写入完成队列;用户完成队列状态机将用户完成队列状态写入寄存器模块,微处理器200可以通过寄存器实时获取用户队列完成状态。

为了进一步提高NVMe协议实现固态硬盘与内存之间数据传输的有效性及可靠性,在本申请提供的NVMe主机的实施例中,参见图3,所述NVMe主机还具体包含有如下内容:

通信连接的管理者队列状态机107和管理者提交队列缓存108;

所述管理者队列状态机107与所述寄存器101之间通信连接;

所述寄存器101还用于在CPU600外部基于NVMe协议接收并存储微处理器200发送的管理者命令及硬件状态数据,并将所述管理者命令发送至所述管理者提交队列状态机;

所述管理者提交队列状态机用于将所述管理者命令转发至所述管理者提交队列缓存108,并记录所述管理者提交队列缓存108中的管理者提交队列的状态数据;

所述管理者提交队列缓存108用于存储所述管理者提交队列。

也就是说,管理者队列状态机107主要负责处理管理者提交队列和管理者完成队列的状态;管理者提交队列缓存108主要用来存放管理者提交队列。

为了进一步提高NVMe协议实现固态硬盘与内存之间数据传输的有效性及可靠性,在本申请提供的NVMe主机的实施例中,参见图3,所述NVMe主机还具体包含有如下内容:

与所述根复合体300之间通信连接的管理者队列存储空间109;

所述管理者队列状态机107还与所述门铃状态机104之间通信连接;

所述管理者提交队列状态机还用于根据记录的所述管理者提交队列的状态数据判断该管理者提交队列当前是否被写入,若是,则向所述门铃状态机104发送第三触发指令;

所述门铃状态机104用于根据所述管理者提交队列状态机发送的所述第三触发指令触发门铃,以使外部的根复合体300提取所述管理者提交队列并将所述管理者提交队列对应的管理者队列数据写入所述管理者队列存储空间109,而后返回各个所述管理者命令各自对应的写入完成数据;

所述管理者队列存储空间109用于存储所述管理者提交队列对应的管理者队列数据。

也就是说,管理者队列存储空间109用来存放管理者队列数据。可以理解的是,本申请实施例中还可以设有用户队列存储空间,该用户队列存储空间的功能与所述管理者队列存储空间109类似,用于存储用户队列数据。

为了进一步提高NVMe协议实现固态硬盘与内存之间数据传输的有效性及可靠性,在本申请提供的NVMe主机的实施例中,参见图3,所述NVMe主机还具体包含有如下内容:

分别与所述管理者队列状态机107和所述根复合体300之间通信连接的管理者完成队列缓存110;

所述管理者完成队列缓存110用于接收所述根复合体300发送各个所述管理者命令各自对应的写入完成数据,并将各个所述管理者命令各自对应的写入完成数据存储至本地的管理者完成队列;

所述管理者完成队列状态机用于记录所述管理者完成队列缓存110中的所述管理者完成队列的状态数据,并根据记录的所述管理者完成队列的状态数据判断该管理者完成队列当前是否被写入,若是,则向所述门铃状态机104发送第四触发指令;

所述门铃状态机104还用于根据所述管理者完成队列状态机发送的所述第四触发指令触发门铃,以使所述寄存器101自所述管理者完成队列状态机获取所述管理者完成队列的状态数据;

所述寄存器101还用于将自所述管理者完成队列状态机获取所述管理者完成队列的状态数据转发至所述微处理器200,以使所述微处理器200基于所述管理者完成队列的状态数据获知所述管理者命令对应的完成状态信息。

基于上述寄存器101、门铃状态机104、管理者队列状态机107、管理者提交队列缓存108、管理者队列存储空间109以及管理者完成队列缓存110,能够实现管理者队列工作流程:管理者根据自身需求将特定管理者命令写入管理者提交队列缓存;管理者提交队列写完后管理者队列状态机敲门铃通知根复合体300来取管理者提交队列;根复合体300从管理者提交队列缓存中取走提交队列;根复合体300根据管理者提交队列的内容将管理者队列数据写入到管理者队列存储空间中;根复合体300写完数据后再往管理者完成队列缓存里面写入完成队列;管理者队列状态机将管理者完成队列状态写入寄存器模块,微处理器200可以通过寄存器实时获取管理者队列完成状态。

为了进一步提高NVMe协议实现固态硬盘与内存之间数据传输的有效性及可靠性,在本申请提供的NVMe主机的实施例中,参见图4,所述NVMe主机还具体包含有如下内容:

分别与所述寄存器101、所述根复合体300和所述管理者队列状态机107之间通信连接的初始化状态机111;

所述寄存器101还用于在CPU600外部基于NVMe协议接收并存储微处理器200发送的用于复位后初始化NVMe系统的管理者命令及硬件状态数据,并将所述用于复位后初始化NVMe系统的管理者命令发送至所述初始化状态机111;

所述初始化状态机111用于将所述用于复位后初始化NVMe系统的管理命令写入所述管理者提交队列缓存108。

基于上述寄存器101、门铃状态机104、管理者队列状态机107、管理者提交队列缓存108、管理者队列存储空间109、管理者完成队列缓存110以及初始化状态机111,能够实现初始化工作流程:系统复位后初始化状态机将NVMe系统必需的管理者命令写入管理者提交队列缓存;管理者提交队列写完后管理者队列状态机敲门铃通知根复合体300来取管理者提交队列;根复合体300从管理者提交队列缓存中取走提交队列;根复合体300根据管理者提交队列的内容将管理者队列数据写入到管理者队列存储空间中;根复合体300写完数据后再往管理者完成队列缓存里面写入完成队列;管理者队列状态机将管理者完成队列状态写入寄存器模块,SOC可以通过寄存器实时获取管理者队列完成状态。

基于前述NVMe主机的实施例,本申请还提供一种硬盘与内存之间的数据传输方法的实施例,参见图5,所述硬盘与内存之间的数据传输方法具体包含有如下内容:

步骤10:采用所述NVMe主机在CPU外部基于NVMe协议接收微处理器发送的用户命令,将所述用户命令写入本地的用户提交队列,并在该用户提交队列被写入后触发门铃,以使外部的根复合体提取所述用户提交队列并根据所述用户提交队列中的各个用户命令在固态硬盘与内存之间进行数据传输,而后返回各个用户命令各自对应的写入完成数据;

步骤20:采用所述NVMe主机接收并存储所述根复合体发送的各个所述用户命令各自对应的写入完成数据,以使所述微处理器根据各个所述用户命令各自对应的写入完成数据获知所述用户命令对应的完成状态信息。

可以理解的是,本实施例中提及的NVMe主机的具体结构及功能均参照前述NVMe主机实施例,不再赘述。

从上述描述可知,本申请实施例提供的硬盘与内存之间的数据传输方法,采用硬件替代CPU实现基于NVMe协议的硬盘与内存之间的数据传输,不需要CPU处理NVMe协议相关的操作,CPU只需配置硬件和检查硬件状态,能够有效降低主机CPU的占用率及资源消耗;同时硬件实现在处理速度和时延上有更大的优势,能够有效提高NVMe用户命令的处理效率,增加吞吐量;并能够提高固态硬盘访问的并行性,能够充分利用NVMe多队列的优势。

基于前述NVMe主机和/或硬盘与内存之间的数据传输方法的实施例,本申请还提供一种硬盘与内存之间的数据传输系统的实施例,参见图6,所述硬盘与内存之间的数据传输系统具体包含有如下内容:

微处理器200、根复合体300以及NVMe主机100;

所述NVMe主机100、所述微处理器200和CPU600之间依次通信连接;

所述NVMe主机100与所述根复合体300之间通信连接;

所述根复合体300还分别与固态硬盘700和内存800之间通信连接。

进一步来说,所述硬盘与内存之间的数据传输系统中的所述NVMe主机100还连接一NVMe oF单元400,该NVMe oF单元400与一RDMA单元500连接,所述RDMA单元500分别与所述NVMe oF单元400和所述内存800之间通信连接,用于实现NVMe命令与RDMA命令之间的相互转换,以及NVMe主机100中用户提取队列的提交和用户完成队列的获取。

可以理解的是,本实施例中提及的NVMe主机的具体结构及功能均参照前述NVMe主机实施例,不再赘述。

从上述描述可知,本申请实施例提供的硬盘与内存之间的数据传输系统,采用硬件替代CPU实现基于NVMe协议的硬盘与内存之间的数据传输,不需要CPU处理NVMe协议相关的操作,CPU只需配置硬件和检查硬件状态,能够有效降低主机CPU的占用率及资源消耗;同时硬件实现在处理速度和时延上有更大的优势,能够有效提高NVMe用户命令的处理效率,增加吞吐量;并能够提高固态硬盘访问的并行性,能够充分利用NVMe多队列的优势。

为了进一步说明上述NVMe主机、硬盘与内存之间的数据传输方法以及硬盘与内存之间的数据传输系统的实施例,本申请还提供一种NVMe落盘的硬件实现的应用实例。传统的基于软件实现方案与硬件实现方案对比如图7所示,采用硬件实现SSD访问的实现方案,数据落盘侧不需要CPU处理NVMe协议相关的操作,CPU只需配置硬件和检查硬件状态,极大的降低了CPU的性能消耗,同时硬件实现在处理速度和时延上有更大的优势。

硬盘与内存之间的数据传输系统的一种举例如图8所示,主要包括7个模块,作为系统的微处理器的SOC、RDMA、NVMe of、SSD控制器(该SSD控制器即为根复合体,可简写为RC)部分、处理NVMe协议的NVMe主机(可写为NVMe HOST)、用于数据共享的内存(可写为DDR)以及作为数据存储介质的固态硬盘(可写为SSD)。

其中,SOC部分主要作用是系统状态的获取和硬件的监控、NVMe的admin指令的下发和处理。

RDMA网络部分主要是处理网络的数据。

SSD用来存储数据。

RC连接NVMe HOST和SSD以及DDR,最终通过PCIE在SSD和DDR之间搬移数据。

DDR用来存储来自RDMA、SOC、SSD的临时数据实现数据传输及共享。

NVMe of实现NVMe命令和RDMA命令的相互转换,以及NVMe HOST部分IO命令中SQ的提交和CQ的获取。

处理NVMe协议的NVMe HOST通过硬件来实现NVMe协议。

在上述硬盘与内存之间的数据传输系统中,NVMe主机的一种内部模块举例参见图9,各个模块的作用和具体工作流程如下:

(1)SOC主要负责用户指令的输入和硬件状态的获取。

(2)寄存器模块(也可以写为寄存器或REGIDTERS)主要负责寄存用户指令和保存硬件状态。

(3)初始化状态机(也可以写为INITIALIZATION STATE MACHINE)主要负责系统初始化时候的管理者命令的执行。

(4)管理者提交队列缓存(也可以写为ADMIN SQ FIFO)主要用来存放管理者提交队列。

(5)管理者完成队列缓存(也可以写为ADMIN CQ FIFO)主要用来存放管理者完成队列。

(6)管理者队列状态机(也可以写为ADMIN STATE MACHINE)主要负责处理管理者提交队列和完成队列的状态。

(7)未在图9中示出的管理者队列存储空间(也可以写为ADMIN MEM)用来存放管理者队列数据;以及用户队列存储空间,在用户队列的时候用来存放图9中的物理区域页链表(PRP LIST)。

(8)门铃状态机(也可以写为DOORBELL STATE MACHINE)模块8为门铃状态机模块,主要用来处理门铃。

(9)用户提交队列缓存(也可以写为NVMe SQ FIFO)主要用来存放用户提交队列。

(10)用户完成队列缓存(也可以写为NVMe CQ FIFO)主要用来存放用户完成队列。

(11)用户提交队列状态机(也可以写为SQ STATE MACHINE)主要用来处理用户提交队列的状态。

(12)用户完成队列状态机(也可以写为CQ STATE MACHINE)主要用来处理用户完成队列的状态。

(13)DDR为内存,主要负责用户队列的数据缓存搬移。

(14)根复合体(Root Complex),主要负责与NVMe主机之间的队列交互和SSD的读写。

(15)硬盘(SSD)主要负责数据的永久存储。可以理解的是,本申请的一个或多个实施例中提及的硬盘是固态硬盘的简称。

其中,AXl_LITE和AX14均是FPGA的AXI工作中的接口,数据可以在主机和从机中双向传输,AXl_LITE不支持突发读写;AX14支持最大256突发读写。

基于上述内容,本申请应用实例分别提供初始化工作流程、管理队列工作流程以及用户队列工作流程,具体说明如下:

其一,参见图10,所述初始化工作流程具体包含有如下内容:

S1:写ADMIN SQ:系统复位后初始化状态机将NVMe系统必需的管理者命令写入管理者提交队列缓存。

S2:敲门铃:管理者提交队列写完后管理者队列状态机敲门铃通知RC来取管理者提交队列。

S3:取ADMIN SQ:RC从管理者提交队列缓存中取走提交队列。

S4:写ADMIN数据:RC根据管理者提交队列的内容将管理者队列数据写入到管理者队列存储空间中。

S5:写ADMIN CQ:RC写完数据后再往管理者完成队列缓存里面写入完成队列。

S6:读ADMIN CQ状态:管理者队列状态机将管理者完成队列状态写入寄存器模块,SOC可以通过寄存器实时获取管理者队列完成状态。

其二,参见图11,所述管理队列工作流程具体包含有如下内容:

S1:写ADMIN SQ:用户根据自身需求将特定管理者命令写入管理者提交队列缓存。

S2:敲门铃:管理者提交队列写完后管理者队列状态机敲门铃通知RC来取管理者提交队列。

S3:取ADMIN SQ:RC从管理者提交队列缓存中取走提交队列。

S4:写ADMIN数据:RC根据管理者提交队列的内容将管理者队列数据写入到管理者队列存储空间中。

S5:写ADMIN CQ:RC写完数据后再往管理者完成队列缓存里面写入完成队列。

S6:读ADMIN CQ状态:管理者队列状态机将管理者完成队列状态写入寄存器模块,SOC可以通过寄存器实时获取管理者队列完成状态。

其三,参见图12,所述用户队列工作流程具体包含有如下内容:

S1:写IO SQ:用户根据自身需求将特定用户命令写入用户提交队列缓存;可以理解的是,IO SQ也可以写为NVMe SQ。

S2:敲门铃:用户提交队列写完后用户提交队列状态机敲门铃通知RC来取用户提交队列。

S3:取IO SQ:RC从用户提交队列缓存中取走提交队列。

S4:写IO数据:RC根据用户提交队列的内容将用户队列数据从DDR中取出并写入到SSD中或者将SSD的数据写入都DDR中。

S5:写IO CQ:RC写完数据后再往用户完成队列缓存里面写入完成队列;IO CQ也可以写为NVMe CQ。

S6:读IO CQ状态:用户完成队列状态机将用户完成队列状态写入寄存器模块,SOC可以通过寄存器实时获取用户队列完成状态。

领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、系统和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。

需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。

本申请中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。

以上所述仅为本申请的优选实施例,并不用于限制本申请,对于本领域的技术人员来说,本申请实施例可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

技术分类

06120116521652