CN115826872A - 完全硬件卸载的NVMe存储加速系统 - Google Patents
完全硬件卸载的NVMe存储加速系统 Download PDFInfo
- Publication number
- CN115826872A CN115826872A CN202211684098.8A CN202211684098A CN115826872A CN 115826872 A CN115826872 A CN 115826872A CN 202211684098 A CN202211684098 A CN 202211684098A CN 115826872 A CN115826872 A CN 115826872A
- Authority
- CN
- China
- Prior art keywords
- nvme
- command
- queue
- management
- module
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种完全硬件卸载的NVMe存储加速系统,包含一个由ARM软件处理器和FPGA硬件处理器组成的异构加速卡,在ARM中设置了管理模块,实现NVMe管理命令的处理,在FPGA中设置了命令抓取模块、虚拟队列绑定模块、I/O处理模块和I/O带宽公平调度模块,实现NVMe I/O命令的硬件加速处理和I/O带宽公平调度。经测试,本发明提出的系统具备比已有系统快4.65/4.92倍的读/写速度且将I/O带宽公平调度的CPU成本降低为0,本发明解决了以前设计方案中读/写速度慢,I/O带宽公平调度与CPU强绑定的问题,更好地满足多用户/应用共享的需求。
Description
技术领域
本发明涉及计算机软硬件架构、非易失存储系统技术领域,具体地,涉及一种完全硬件卸载的NVMe存储加速系统。
背景技术
基于闪存的solid-state disks(SSDs)非易失存储(NVM)作为一种具备高I/O性能(例如低功耗、低延迟和高吞吐量)的存储类存储器(SCM)已经成为数据中心的首选数据持久化存储器。Non-Volatile memory express(NVMe)的加持更是巩固了SSD在存储系统中的地位。近年来,海量数据的不断增长以及越来越多的云用户和云服务需求不仅促进了SSD的发展也促进了NVMe的优化。此外,为了满足数据密集型应用以及云服务的多租户、低延迟和高吞吐量需求,一些更高性能的SCM逐渐涌现,例如3D XPoint、相变RAM(PCM)、电阻RAM(ReRAM)和磁阻RAM(MRAM)等等。
以NAND Flash SSD为例,它内部的芯片数量和Flash通道不断增长,为数据中心和云平台中的数据密集型应用提供了更高的吞吐量、更高的带宽以及更低的延迟。为了充分利用SSD内部固有的并行能力,NVMe协议替代了为传统硬盘驱动器(HDD)设计的串行连接SCSI(SAS)协议和串行高级技术附件(SATA),成为了SSD的标配组件之一。NVMe是一种基于peripheral component interconnect express(PCIe)的高性能存储协议,它采用多I/O队列机制以充分挖掘NVMe SSD内部的并行性。NVMe支持多达64K个I/O队列且每个队列又分别支持64K个I/O命令条目,这意味着主机可以通过提交大量的并发I/O请求来充分发挥SSD的低延迟、高吞吐量和高带宽的特性。
NVMe的多队列机制赋予了SSD同时为多个用户/应用提供服务的能力。如何在多个租户或应用之间公平地分配SSD的带宽同时又确保相互独立的挑战也随之涌现。不幸的是,NVMe是一种内核级别的驱动。每一次NVMe I/O的触发都会经过主机端复杂的I/O堆栈,同时引起用户态和内核态之间的上下文切换。与此同时,将带宽公平调度策略嵌入至内核/NVMe驱动是目前为共享单个SSD的多租户或应用提供性能保障的普遍解决方案。考虑到NVMe的多队列并发I/O的特性,这无疑会加剧主机CPU的负担。此外,多I/O队列并发机制还促进了SSD在虚拟化和云环境中的部署。I/O带宽的公平分配对于这类SSD来说是十分重要的,因为相比于本地的SSD,它们被要求必须被共享。
专利文献CN105426120A(申请号:CN201510726309.3)公开了一种基于NVME的混合加速系统,包括业务应用池、PCIe交换池、网络通讯池以及至少两个管理模块,所述业务应用模块、所述PCIe交换模块与所述数据通讯模块同时通过I2C总线以及以太网与所述管理模块相连接,所述I2C总线用于获取各模块的底层核心器件信息,业务应用模块包括多个NVME磁盘阵列和PCIe交换单元,PCIe交换池与所述业务应用池相连接,用于使PCIe数据在所述业务应用模块间传输,设计至少两个管理模块对各模块进行管理,且同时采用I2C和以太网的双管理链路设计,冗余设计防止单个管理模块或链路出现故障,整个架构用PCIe传输技术作为核心的数据传输网络,实现针对NVME磁盘阵列的物理底层资源的池化和其他模块的池化,便于集中的部署及管理。
现有的研究工作已经证明高性能的SSD正在将系统的性能瓶颈由SSD转向CPU,驱动级的I/O带宽公平调度不仅会导致高CPU开销,还会引起长I/O延迟和低I/O性能。将I/O带宽公平调度策略卸载到设备是一种新颖的应对该挑战的解决方案。国外研究者已经成功地利用NVMe设备的加权轮询(WRR)特性,将带宽公平调度的仲裁卸载到了设备,而驱动层只需要完成命令的提交和调度。然而,这虽然降低了CPU开销,缓解了I/O调度对延迟和性能的不利影响,但驱动层仍然被修改以完成除了仲裁之外的调度负载,例如虚拟时间的计算、命令的重定向提交和权重比的动态调整。这表明随着现代SSD的性能的不断提升,I/O带宽公平调度遗留在驱动层的附加工作很可能会再次成为性能瓶颈。更重要的是I/O带宽公平调度的性能即I/O带宽公平调度引入的额外延迟的量仍然与CPU成本紧耦合。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种完全硬件卸载的NVMe存储加速系统。
根据本发明提供的完全硬件卸载的NVMe存储加速系统,包括一张由一个ARM软件处理器和一个现场可编程逻辑门阵列硬件处理器组成的异构加速卡,所述异构加速卡通过高速串行总线与主机连接;
所述异构加速卡包括:
ARM软件处理器,其内设有一个管理模块,用于处理NVMe管理命令,包括I/O队列创建、删除;
FPGA硬件处理器,其内设有一个命令抓取模块,用于并行且批量地传输主机提交的NVMe管理和NVMe I/O命令;同时也用于并行且批量地传输加速卡生成的NVMe管理和NVMeI/O完成命令;
虚拟队列绑定模块,用于将加速卡本地内存中I/O提交队列中的不同用户/应用的NVMe I/O命令分派至加速卡本地内存中指定的虚拟I/O提交队列中;
I/O处理模块池,包括16个I/O处理模块,用于处理NVMe I/O命令;
I/O带宽公平调度模块,用于实施不同用户/应用之间的I/O带宽公平调度;
一个管理提交队列,被设置在加速卡本地内存中,用于向主机公开一个管理提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe管理命令;
一个管理完成队列,被设置在加速卡本地内存中,用于向主机公开一个管理完成队列,与此同时,它也被用于缓存管理模块生成的NVMe管理完成命令;
八个I/O提交队列,被设置在加速卡本地内存中,用于向主机公开八个I/O提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe I/O命令;
八个I/O完成队列,被设置在加速卡本地内存中,用于向主机公开八个I/O完成队列,与此同时,它也被用于缓存I/O处理模块生成的NVMe I/O完成命令;
八个虚拟I/O提交队列池,被设置在加速卡本地内存中,八个虚拟I/O提交队列池与加速卡本地内存中的八个I/O提交队列一一对应,用于缓存八个I/O提交队列中存储的不同用户/应用提交的NVMe I/O命令。
优选的,所述管理模块通过内存读写控制的方式从加速卡本地内存中的管理提交队列中读取NVMe管理命令并处理,处理完成后管理模块生成对应的NVMe管理完成命令并通过内存读写控制的方式将NVMe管理完成命令写入加速卡本地内存中的管理完成队列。
优选的,所述命令抓取模块通过直接内存访问的方式获取主机内存中管理提交队列中的NVMe管理命令和I/O提交队列中的NVMe I/O命令,并通过直接内存访问的方式将NVMe管理命令和NVMe I/O命令写入加速卡本地内存中的管理提交队列和对应的I/O提交队列;与此同时,命令抓取模块通过直接内存访问的方式获取加速卡本地内存中管理完成队列中的NVMe管理完成命令和I/O完成队列中的NVMe I/O完成命令,并通过直接内存访问的方式将NVMe管理完成命令和NVMe I/O完成命令写入主机内存中的管理完成队列和对应的I/O完成队列。
优选的,所述虚拟队列绑定模块通过内存读写控制的方式从加速卡本地内存中的I/O提交队列读取NVMe I/O命令并解析命令中的用户ID字段,随后根据用户ID将NVMe I/O命令通过内存读写控制的方式写入加速卡本地内存中指定的虚拟I/O提交队列;
所述I/O处理模块通过内存读写控制的方式从加速卡本地内存中的虚拟I/O提交队列中读取NVMe I/O命令并处理,处理完成后I/O处理模块生成对应的NVMe I/O完成命令并通过内存读写控制的方式将NVMe I/O完成命令写入加速卡本地内存中对应的I/O完成队列。
优选的,所述I/O带宽公平调度模块通过寄存器读取的方式实时获取每个用户/应用已经传输的数据量,并通过寄存器写入的方式将数据量累加到每个用户/应用对应的带宽累加寄存器中,随后I/O带宽公平调度模块利用带宽累加寄存器中的值实时获取每个用户/应用已经获得的I/O带宽并选取已获得I/O带宽最小的用户,最后I/O带宽公平调度模块根据被选取用户的用户ID将加速卡本地内存中对应的虚拟I/O提交队列设置为活动状态,而将其他用户ID对应的虚拟I/O提交队列设置为静默状态,从而限制大带宽用户的I/O命令处理速度,加快小带宽用户的I/O命令处理速度。
优选的,所述管理模块包括队列处理子模块、数据处理子模块和完成处理子模块;
队列处理子模块通过内存读写控制的方式从加速卡本地内存中的管理提交队列中读取NVMe管理命令并对NVMe管理命令进行识别和译码,随后根据识别的NVMe管理命令类型选择性保留译码结果或将译码结果流向数据处理子模块;数据处理子模块在接收到译码结果后进行地址解析和翻译以获得数据的源地址和目的地址,并通过直接内存访问的方式将数据从源地址传输至目的地址,当队列处理子模块完成保留译码结果的处理或数据处理子模块完成数据的传输时,表示NVMe管理命令的处理已经完成,完成处理子模块随后生成NVMe管理完成命令并通过内存读写控制的方式将NVMe管理完成命令写入加速卡本地内存中的管理完成队列。
优选的,所述命令抓取模块实时监测主机内存中的一个管理提交队列和八个I/O提交队列,同时它也实时监测加速卡本地内存中的一个管理完成队列和八个I/O完成队列;当主机内存中的一个管理提交队列和八个I/O提交队列中有新的NVMe管理命令和NVMe I/O命令时,命令抓取模块通过直接内存访问的方式将NVMe管理命令传输至加速卡本地内存中的管理提交队列,将NVMe I/O命令传输至加速卡本地内存中对应的I/O提交队列;当加速卡本地内存中的一个管理完成队列和八个I/O完成队列中有新的NVMe管理完成命令和NVMeI/O完成命令时,命令抓取模块通过直接内存访问的方式将NVMe管理完成命令传输至主机内存中的管理完成队列,将NVMe I/O完成命令传输至主机内存中对应的I/O完成队列。
优选的,所述虚拟队列绑定模块包括用户ID解析子模块和用户ID绑定子模块;
用户ID解析子模块通过内存读写控制的方式从加速卡本地内存中的八个I/O提交队列中读取NVMe I/O命令并提取命令中的用户ID,随后用户ID被传入用户ID绑定子模块;用户ID绑定子模块使用用户ID在加速卡本地内存中对应于I/O提交队列的虚拟I/O提交队列池中搜索具备相同用户ID的虚拟I/O提交队列;当虚拟I/O提交队列被找到,用户ID绑定子模块把NVMe I/O命令派发到该虚拟I/O提交队列中;反之,用户ID绑定子模块在该虚拟I/O提交队列池中分配一个新的虚拟I/O提交队列,并把NVMe I/O命令提交到新创建的虚拟I/O提交队列。
优选的,所述I/O处理模块池包含16个I/O处理模块,它们被均匀地分配给八个虚拟I/O提交队列池,即两个I/O处理模块并行地处理一个虚拟I/O提交队列池中的NVMe I/O命令;
每个I/O处理模块包括队列处理子模块、数据处理子模块和完成处理子模块;
队列处理子模块通过内存读写控制的方式从加速卡本地内存中的虚拟I/O提交队列池中的状态为活动的虚拟I/O提交队列中读取NVMe I/O命令,随后对NVMe I/O命令进行识别和译码并将译码结果流向数据处理子模块;数据处理子模块在接收到译码结果后进行地址解析和翻译以获得数据的源地址和目的地址,并通过直接内存访问的方式将数据从源地址传输至目的地址;当数据处理子模块完成数据的传输时,表示NVMe I/O命令的处理已经完成,完成处理子模块随后生成NVMe I/O完成命令并通过内存读写控制的方式将NVMeI/O完成命令写入加速卡本地内存中对应的I/O完成队列。
优选的,所述I/O带宽公平调度模块包括八个命令选择子模块、八个带宽累加子模块和一个公平调度子模块;
命令选择子模块通过内存读写控制的方式根据公平调度子模块指定的用户ID从加速卡本地内存中对应的虚拟I/O提交队列池中的匹配用户ID的虚拟I/O提交队列中读取NVMe I/O命令;随后将NVMe I/O命令传输给I/O处理模块池中对应的I/O处理模块进行处理;与此同时,带宽累加子模块实时监测NVMe I/O命令处理过程中所产生的数据传输量并根据NVMe I/O命令的户ID字段将其累加到匹配用户ID的带宽累加寄存器中;随后公平调度子模块通过寄存器读写控制的方式实时读取所有带宽累加寄存器中的值并进行从小到大排序;当排序完成时,公平调度子模块选取值最小的带宽累加寄存器并通过寄存器读写的方式读取它的用户ID;最后公平调度子模块根据读取的用户ID生成公平调度信号;该公平调度信号会被传输给命令选择子模块,其中命令选择子模块会根据公平调度信号将虚拟I/O提交队列池中匹配用户ID的虚拟I/O提交队列设置为活动状态,而不匹配用户ID的虚拟I/O提交队列设置为静默状态。
与现有技术相比,本发明具有如下的有益效果:
本发明提供了一种完全硬件卸载的NVMe存储加速系统,具备比已有系统快4.65/4.92倍的读/写速度且将I/O带宽公平调度的CPU使用率降低为0;与已有的Linux内核自带I/O带宽公平调度(BFQ)和最先进的I/O带宽公平调度(D2FQ)相比,本发明所述系统提供的I/O带宽公平调度分别平均节省了84.65%和18.40%的CPU成本;解决了现有的基于CPU的I/O带宽公平调度系统无法满足高性能NVMe SSD存储系统在多用户/应用共享时的高性能、低CPU成本和低CPU依赖性的要求。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明系统框图;
图2为本发明实施例的系统框图;
图3为本发明实施例的管理模块的处理流程框图;
图4为本发明实施例的命令抓取模块的处理流程框图;
图5为本发明实施例的虚拟队列绑定模块的处理流程框图;
图6为本发明实施例的I/O处理模块的处理流程框图;
图7为本发明实施例的I/O带宽公平调度模块的处理流程框图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例:
如图1和2所示,本实施例的加速卡采用搭载赛灵思xczu19eg-ffvc1760-2-e异构处理芯片的自研开发板,它由一个软件处理器和一个硬件处理器两部分组成。此外,它还搭载了一些常用的外设设备,本实施例使用到的外设设备有PCIe Gen3×8总线接口和本地内存BRAM。其中软件处理器对应一个4核心ARM A53处理器,其内设有一个管理模块;硬件处理器对应现场可编程逻辑门阵列(FPGA),其内设有一个命令抓取模块、一个管理提交队列、一个管理完成队列、八个I/O提交队列、八个I/O完成队列、一个虚拟队列绑定模块、八个虚拟I/O提交队列池、一个I/O处理模块池和一个I/O带宽公平调度模块。位于硬件处理器中的命令抓取模块通过直接内存访问的方式经PCIe Gen3×8总线接口从主机(服务器/台式电脑)内存中获取NVMe管理命令和NVMe I/O命令,并通过直接内存访问的方式将NVMe管理命令写入本地内存BRAM中的管理提交队列,将NVMe I/O命令写入本地内存BRAM中对应的I/O提交队列。随后位于软件处理器中的管理模块通过内存读写控制的方式从管理提交队列读取NVMe管理命令并进行实时处理,包括队列处理、数据处理和完成处理等步骤。待NVMe管理命令处理完成后,管理模块生成对应的NVMe完成命令并通过内存读写控制的方式写入本地内存BRAM中的管理完成队列。最后,命令抓取模块通过直接内存访问的方式经PCIe Gen3×8总线接口将NVMe完成命令从本地内存BRAM中的管理完成队列传输至主机(服务器/台式电脑)内存中的管理完成队列以完成整个NVMe管理命令的处理流程。其中管理模块使用C软件编程语言编码的方式实现在软件处理器的一个核心中即一个ARM A53核心中,而命令抓取模块使用Verilog硬件编程语言编码的方式实现在硬件处理器中即FPGA中。
与此同时,位于硬件处理器中的虚拟队列绑定模块通过内存读写控制的方式并行地从本地内存BRAM中的八个I/O提交队列读取NVMe I/O命令并利用NVMe I/O命令中的用户ID字段将其分派到本地内存BRAM中对应的虚拟I/O提交队列池中的用户ID相匹配的虚拟I/O提交队列以实现不同用户/应用提交的NVMe I/O命令与特定虚拟I/O提交队列的绑定以及相互隔离,包括用户ID解析和用户ID绑定等步骤。随后位于硬件处理器中的I/O处理模块池中的I/O处理模块通过内存读写控制的方式从对应的虚拟I/O提交队列池中读取处于“活动”状态的虚拟I/O提交队列中的NVMe I/O命令并处理,包括队列处理、数据处理和完成处理等步骤。其中I/O处理模块池中共有16个I/O处理模块,它们被均匀地分配给8个虚拟I/O提交队列池,即相邻的两个I/O处理模块并行地处理同一个虚拟I/O提交队列池中处于“活动”状态的虚拟I/O提交队列中的NVMe I/O命令。待I/O处理模块完成一个NVMe I/O命令的处理后,I/O处理模块生成对应的NVMe I/O完成命令并通过内存读写控制的方式写入本地内存BRAM中对应的I/O完成队列。最后,命令抓取模块通过直接内存访问的方式经PCIeGen3×8总线接口将NVMe I/O完成命令从本地内存BRAM中的I/O完成队列传输至主机(服务器/台式电脑)内存中对应的I/O完成队列以完成整个NVMe I/O命令的处理流程。其中虚拟队列绑定模块、I/O处理模块池和I/O处理模块使用Verilog硬件编程语言编码的方式实现在硬件处理器中即FPGA中。
位于硬件处理器中的I/O带宽公平调度模块在I/O处理模块处理NVMe I/O命令时实时采集每条NVMe I/O命令所传输的数据量并利用NVMe I/O命令中的用户ID字段将数据量实时地累加到用户ID相匹配的带宽累加寄存器中,随后I/O带宽公平调度模块对带宽累加寄存器进行值排序并选择值最小的带宽累加寄存器,使用其用户ID生成I/O带宽公平调度信号。I/O带宽公平调度信号会被传输到本地内存BRAM中的八个虚拟I/O提交队列池中的每个虚拟I/O提交队列。用户ID与I/O带宽公平调度信号相匹配的虚拟I/O提交队列会被置为“活动”状态,反正虚拟I/O提交队列会被置为“静默”状态。其中I/O带宽公平调度模块使用Verilog硬件编程语言编码的方式实现在硬件处理器中即FPGA中。
此外,为了克服现有的基于CPU的I/O带宽公平调度系统无法满足高性能NVMe SSD存储系统在多用户/应用共享时的高性能、低CPU成本和低CPU依赖性的缺点,上述处理流程都采用了队列间的粗粒度并行架构和队列内的细粒度流水线架构从而提供低延时和高吞吐量。更重要的是,I/O带宽公平调度模块被嵌入到了并行和流水线的处理流程中以提供低额外延迟和低CPU成本的I/O带宽公平调度。
如图3所示,是本实施例的管理模块的处理流程框图。本实施例将管理模块以C代码软件的形式实现在ARM A53软件处理器的一个核心中。队列处理子模块、数据处理子模块和完成处理子模块是管理模块的三个主要子模块,被用于NVMe管理命令的处理。队列处理子模块会率先从本地内存BRAM中的管理提交队列中读取NVMe管理命令并处理。在队列处理子模块中,读功能被用于使用内存读写控制的方式从本地内存BRAM中的管理提交队列中读取NVMe管理命令并完成对管理提交队列头指针的更新。解码功能负责对NVMe管理命令的识别和译码并根据命令的类型将译码的结果分别流向队列处理子模块中的处理功能或数据处理子模块。处理功能接收并处理诸如I/O提交/完成队列创建和I/O提交/完成队列删除等NVMe管理命令的译码结果。例如它在接收到用于I/O提交/完成队列创建的NVMe管理命令的译码结果后,8个硬件I/O提交/完成队列会被创建。与此同时,这些I/O提交/完成队列的参数例如I/O提交队列基地址、I/O提交队列ID、I/O完成队列基地址和I/O完成队列ID也会被写入FPGA硬件处理器中的预留的寄存器中。
诸如命名空间的信息的获取等有关NVMe控制器的信息的获取与设置的NVMe管理命令的译码结果会被传输到数据处理子模块中。数据处理子模块中的地址解析功能随后执行地址解析和翻译以获得数据的源地址和目的地址。它们将被直接内存访问(DMA)控制器用于DMA的控制,完成数据的无CPU干预的传输。值得注意的是,因为有关NVMe控制器的信息的数据量有限,不会占用大量的存储资源,因此它们被保存在FPGA硬件处理器中的本地内存BRAM中,称之为控制器信息存储区域。当NVMe管理命令处理完毕,所需的结果和其他数据会被传输到完成处理子模块。完成处理子模块利用这些中间数据构建NVMe管理完成命令。其中,编码功能将数据编码成一条可被主机端(服务器/台式电脑)NVMe驱动识别的NVMe管理完成命令。下一步,写功能通过内存读写控制的方式将生成的NVMe管理完成命令写入本地内存BRAM中的管理完成队列并实施管理完成队列尾指针的更新。
如图4所示,是本实施例的命令抓取模块的处理流程框图。低时延是NVMe存储系统的重要优势之一。不幸的是I/O带宽公平调度会隐藏低延时的优势。因此为了尽可能地消除这种不利影响,提升I/O带宽公平调度的效率是最为直接的措施。此外,提升NVMe管理/I/O命令由主机(服务器/台式电脑)到NVMe设备的传输速度,使它们尽可能快的到达NVMe设备以供处理也能降低一定的延时。无论是内核级还是硬件级,I/O带宽公平调度对时延的增加是不可避免的。但这种时延可以通过提升I/O带宽公平调度的效率以及NVMe管理/I/O命令的其他处理流程的速度得到缓解。因此,命令抓取模块被设置在本实施例的FPGA硬件处理器中,以实现不同队列的命令的并行抓取。命令的并行抓取不仅能缩短NVMe管理/I/O到达设备的时间更能为I/O带宽公平调度模块提供足够的处理时间。
本实施例为每一对(管理/I/O)提交队列/完成队列都装备了一对命令抓取模块。不同对的提交队列/完成队列的命令抓取模块实现不同对的提交队列/完成队列在主机(服务器/台式电脑)内存和加速卡本地内存BRAM之间的并行映射。而一对提交队列/完成队列内部的两个命令抓取模块分别实现提交队列和完成队列的并行映射。一个命令抓取模块由一个监控功能和一个DMA控制器组成。监控功能被用于实时地监控主机(服务器/台式电脑)内存中的提交队列或加速卡本地内存BRAM中的完成队列是否有新的命令被注入。每当有新的命令被提交至提交队列或完成队列时,DMA控制器便会被通知以控制DMA将提交队列中的命令从主机(服务器/台式电脑)内存传输至加速卡本地内存BRAM中对应的提交队列或将完成队列中的命令从加速卡本地内存BRAM传输至主机(服务器/台式电脑)内存中对应的完成队列。此外,在加速卡本地内存BRAM中,不同对的提交队列/完成队列之间采用相互隔离的内存区域。它们被提前分配以静态分区的策略为不同对的提交队列/完成队列提供内存隔离。
如图5所示,是本实施例的虚拟队列绑定模块的处理流程框图。虚拟队列绑定模块被用于在本实施例中为不同用户/应用的NVMe I/O命令提供虚拟I/O提交队列的隔离。用户ID解析子模块和用户ID绑定子模块是它的两个硬件子模块。首先,用户ID解析子模块从本地内存BRAM中的I/O提交队列中读取NVMe I/O命令,并提取它的用户ID字段(字节8~字节11)中的数据。随后,被提取的用户ID会被传入用户ID绑定子模块中。用户ID绑定子模块使用用户ID在本地内存BRAM中对应于I/O提交队列的虚拟I/O提交队列池中搜索具备相同用户ID的虚拟I/O提交队列。当该虚拟I/O提交队列被找到,用户ID绑定子模块把NVMe I/O命令派发到该虚拟I/O提交队列中。反之,用户ID绑定子模块会分配一个新的虚拟I/O提交队列,把NVMe I/O命令提交到新创建的虚拟I/O提交队列中并用用户ID配置虚拟I/O提交队列的用户ID寄存器。本实施例为本地内存BRAM中的每一个I/O提交队列都装备了虚拟队列绑定模块,以实现不同I/O提交队列之间的并行处理。
如图6所示,是本实施例的I/O处理模块的处理流程框图。本实施例将16个I/O处理模块以Verilog硬件代码的形式实现在FPGA硬件处理器中以构成一个I/O处理模块池。16个I/O处理模块被均匀地分配给8个虚拟I/O提交队列池,即两个I/O处理模块并行地处理一个虚拟I/O提交队列池中的NVMe I/O命令。队列处理子模块、数据处理子模块和完成处理子模块是I/O处理模块的三个主要子模块,被用于NVMe I/O命令的处理。队列处理子模块会率先从本地内存BRAM中的虚拟I/O提交队列池中的状态为“活动”的虚拟I/O提交队列中读取NVMe I/O命令并处理。在队列处理子模块中,读功能被用于使用内存读写控制的方式从本地内存BRAM中的虚拟I/O提交队列池中的状态为“活动”的虚拟I/O提交队列中读取NVMe I/O命令并完成对虚拟I/O提交队列头指针的更新。解码功能负责对NVMe I/O命令的识别和译码并将译码的结果流向数据处理子模块。数据处理子模块中的地址解析功能随后执行地址解析和翻译以获得数据的源地址和目的地址。它们将被直接内存访问(DMA)控制器用于DMA的控制,完成数据的无CPU干预的传输。当NVMe I/O命令处理完毕,所需的结果和其他数据会被传输到完成处理子模块。完成处理子模块利用这些中间数据构建NVMe I/O完成命令。其中,编码功能将数据编码成一条可被主机端(服务器/台式电脑)NVMe驱动识别的NVMe I/O完成命令。下一步,写功能通过内存读写控制的方式将生成的NVMe I/O完成命令写入本地内存BRAM中对应的I/O完成队列并实施I/O完成队列尾指针的更新。
如图7所示,是本实施例的I/O带宽公平调度模块的处理流程框图。I/O带宽公平调度模块被以Verilog硬件代码的形式实施在FPGA硬件处理器中,它为每一个虚拟I/O提交队列池都设置了一个命令选择子模块。命令选择子模块通过内存读写控制的方式从本地内存BRAM中对应的虚拟I/O提交队列池中的虚拟I/O提交队列中读取NVMe I/O命令。被命令选择子模块读取的NVMe I/O命令会被提交至I/O处理模块池中对应的I/O处理模块执行。在I/O处理模块处理NVMe I/O命令的同时,NVMe I/O命令中的用户ID和数据传输量会被提取并递交给带宽累加子模块。带宽累加子模块根据用户ID将I/O处理模块输出的数据传输量累加到用户ID相匹配的带宽累加寄存器中。带宽累加寄存器是一个64位的寄存器,这对于计量SSD的带宽来说是足够的。
为了最小化I/O带宽公平调度引起的延时和性能惩罚,从命令选择子模块读取NVMe I/O命令到将数据传输量累加到带宽累加寄存器中的执行流是以虚拟I/O提交队列池为粒度划分的。即8个虚拟I/O提交队列池的执行流是相互独立且并行的。此外,同一个执行流中的命令选择子模块、I/O处理模块和带宽累加子模块等以流水线的工作模式被组织。接下来,公平调度子模块会实时读取每个带宽累加寄存器中的数值以实现实时的I/O带宽公平调度功能。公平调度子模块包含比较功能、选择功能和决策功能等三个主要功能。比较功能比较每个带宽累加寄存器中的数值大小并对它们进行升序排序。选择功能根据比较功能的排序结果选取值最小的带宽累加寄存器并通过寄存器读写控制的方式读取它的用户ID,用户ID会被用于通知决策功能。决策功能根据接收到的用户ID生成公平调度信号。该公平调度信号会被递送至每个虚拟I/O提交队列池的命令选择子模块,随后命令选择子模块根据公平调度信号传递的用户ID实时地将每个虚拟I/O提交队列池中用户ID相匹配的虚拟I/O提交队列设置为“活动”状态,而用户ID不匹配的虚拟I/O提交队列设置为“静默”状态,命令选择子模块只会从状态为“活动”的虚拟I/O提交队列中读取NVMe I/O命令,从而实现跨用户/应用的实时I/O带宽公平调度,这是一个简单的全局最小值追踪策略。此外,每当I/O带宽公平调度模块完成一轮调度,所有带宽累加寄存器以及公平调度信号的值都会被清零,以防止寄存器溢出,同时为下一轮调度做准备。
最后,使用赛灵思的Vivado开发工具基于搭载了赛灵思xczu19eg-ffvc1760-2-e异构处理芯片的自研开发板搭建了本实施例的软件和硬件处理系统。
本发明的目的是为了解决现有的基于CPU的I/O带宽公平调度系统无法满足高性能NVMe SSD存储系统在多用户/应用共享时的高性能、低CPU成本和低CPU依赖性的要求,而公开的一种完全硬件卸载的NVMe存储加速系统。
针对本发明公开的一种完全硬件卸载的NVMe存储加速系统,进行了相关实验,并对实验结果进行了分析。其中本发明的系统原型被实现在一块自主研发的开发板上。该开发板是一款配备了赛灵思xczu19eg-ffvc1760-2-e异构处理芯片以及PCIe互联接口、DDR4内存模块和QSFP高速网络接口等多种外设的自研异构计算加速平台。xczu19eg-ffvc1760-2-e是一颗由4核心ARM A53和FPGA构成的异构处理核心。本发明的软件处理系统被设置在xczu19eg-ffvc1760-2-e的一个ARM A53软件处理器核心中,而硬件处理系统被设置在xczu19eg-ffvc1760-2-e的FPGA硬件处理器中。PCIe互联接口被设置为Gen3×8的工作模式以便于与其他系统对比。开发板通过PCIe互联接口与主机相连,在本发明的相关实验中该主机配备了一个AMD Ryzen 5 5600X 6-Core处理器,一个容量为2TB的Intel SSD DCP4600,一个容量为1TB的Western Digital HDD,一个仅用于显示的显卡。此外,主机的内存容量为16GB,由2条容量为8GB,频率为2666MHz的DDR4构成。在主机中,具备Linux 5.9.0内核的Ubuntu 20.04.4LTS操作系统被安装。为了保证与现有系统之间的对比是公平的,开源测试工具FIO被作为主要测试器以生成一系列测试负载从而完成对本发明所述系统的验证。
如表1和表2所示,是对本发明公开的一种完全硬件卸载的NVMe存储加速系统的实验验证结果,其中表1展示的是本发明与现有NVMe存储加速系统在I/O读写速度上的对比结果,而表2展示的是本发明与现有I/O带宽公平调度系统在CPU使用率(CPU成本)以及I/O延迟上的对比结果。
表1完全硬件卸载的NVMe存储加速系统(本发明)的I/O读写速度测试结果
表2完全硬件卸载的NVMe存储加速系统(本发明)的I/O带宽公平调度测试结果
由实验结果可得,本发明公开的一种完全硬件卸载的NVMe存储加速系统在开源测试工具FIO生成的工作负载下具备1.14us的读延迟和1.301us的写延迟,1702KIOPS的读吞吐量和1551KIOPS的写吞吐量,7.304GB/s的读带宽和7.593GB/s的写带宽,它的I/O读/写速度比现有最快的NVMe存储加速系统(NVMeCHA)快4.65/4.92倍。此外,本发明公开的一种完全硬件卸载的NVMe存储加速系统在实施I/O带宽公平调度时具备0%的CPU使用率即CPU成本为0并且没有引入过多的I/O延迟即I/O延迟增长百分比小于等于0.50%,优于现有的I/O带宽公平调度系统。故本发明公开的一种完全硬件卸载的NVMe存储加速系统能更好地满足高性能NVMe SSD存储系统在多用户/应用共享时的高性能、低CPU成本和低CPU依赖性的需求。解决了现有的基于CPU的I/O带宽公平调度系统无法满足高性能NVMe SSD存储系统在多用户/应用共享时的高性能、低CPU成本和低CPU依赖性的问题,具备一定是创新性和实用价值。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种完全硬件卸载的NVMe存储加速系统,其特征在于,包括一张由一个ARM软件处理器和一个现场可编程逻辑门阵列硬件处理器组成的异构加速卡,所述异构加速卡通过高速串行总线与主机连接;
所述异构加速卡包括:
ARM软件处理器,其内设有一个管理模块,用于处理NVMe管理命令,包括I/O队列创建、删除;
FPGA硬件处理器,其内设有一个命令抓取模块,用于并行且批量地传输主机提交的NVMe管理和NVMe I/O命令;同时也用于并行且批量地传输加速卡生成的NVMe管理和NVMeI/O完成命令;
虚拟队列绑定模块,用于将加速卡本地内存中I/O提交队列中的不同用户/应用的NVMeI/O命令分派至加速卡本地内存中指定的虚拟I/O提交队列中;
I/O处理模块池,包括16个I/O处理模块,用于处理NVMe I/O命令;
I/O带宽公平调度模块,用于实施不同用户/应用之间的I/O带宽公平调度;
一个管理提交队列,被设置在加速卡本地内存中,用于向主机公开一个管理提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe管理命令;
一个管理完成队列,被设置在加速卡本地内存中,用于向主机公开一个管理完成队列,与此同时,它也被用于缓存管理模块生成的NVMe管理完成命令;
八个I/O提交队列,被设置在加速卡本地内存中,用于向主机公开八个I/O提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe I/O命令;
八个I/O完成队列,被设置在加速卡本地内存中,用于向主机公开八个I/O完成队列,与此同时,它也被用于缓存I/O处理模块生成的NVMe I/O完成命令;
八个虚拟I/O提交队列池,被设置在加速卡本地内存中,八个虚拟I/O提交队列池与加速卡本地内存中的八个I/O提交队列一一对应,用于缓存八个I/O提交队列中存储的不同用户/应用提交的NVMe I/O命令。
2.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述管理模块通过内存读写控制的方式从加速卡本地内存中的管理提交队列中读取NVMe管理命令并处理,处理完成后管理模块生成对应的NVMe管理完成命令并通过内存读写控制的方式将NVMe管理完成命令写入加速卡本地内存中的管理完成队列。
3.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述命令抓取模块通过直接内存访问的方式获取主机内存中管理提交队列中的NVMe管理命令和I/O提交队列中的NVMe I/O命令,并通过直接内存访问的方式将NVMe管理命令和NVMe I/O命令写入加速卡本地内存中的管理提交队列和对应的I/O提交队列;与此同时,命令抓取模块通过直接内存访问的方式获取加速卡本地内存中管理完成队列中的NVMe管理完成命令和I/O完成队列中的NVMe I/O完成命令,并通过直接内存访问的方式将NVMe管理完成命令和NVMeI/O完成命令写入主机内存中的管理完成队列和对应的I/O完成队列。
4.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述虚拟队列绑定模块通过内存读写控制的方式从加速卡本地内存中的I/O提交队列读取NVMe I/O命令并解析命令中的用户ID字段,随后根据用户ID将NVMe I/O命令通过内存读写控制的方式写入加速卡本地内存中指定的虚拟I/O提交队列;
所述I/O处理模块通过内存读写控制的方式从加速卡本地内存中的虚拟I/O提交队列中读取NVMe I/O命令并处理,处理完成后I/O处理模块生成对应的NVMe I/O完成命令并通过内存读写控制的方式将NVMe I/O完成命令写入加速卡本地内存中对应的I/O完成队列。
5.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述I/O带宽公平调度模块通过寄存器读取的方式实时获取每个用户/应用已经传输的数据量,并通过寄存器写入的方式将数据量累加到每个用户/应用对应的带宽累加寄存器中,随后I/O带宽公平调度模块利用带宽累加寄存器中的值实时获取每个用户/应用已经获得的I/O带宽并选取已获得I/O带宽最小的用户,最后I/O带宽公平调度模块根据被选取用户的用户ID将加速卡本地内存中对应的虚拟I/O提交队列设置为活动状态,而将其他用户ID对应的虚拟I/O提交队列设置为静默状态,从而限制大带宽用户的I/O命令处理速度,加快小带宽用户的I/O命令处理速度。
6.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述管理模块包括队列处理子模块、数据处理子模块和完成处理子模块;
队列处理子模块通过内存读写控制的方式从加速卡本地内存中的管理提交队列中读取NVMe管理命令并对NVMe管理命令进行识别和译码,随后根据识别的NVMe管理命令类型选择性保留译码结果或将译码结果流向数据处理子模块;数据处理子模块在接收到译码结果后进行地址解析和翻译以获得数据的源地址和目的地址,并通过直接内存访问的方式将数据从源地址传输至目的地址,当队列处理子模块完成保留译码结果的处理或数据处理子模块完成数据的传输时,表示NVMe管理命令的处理已经完成,完成处理子模块随后生成NVMe管理完成命令并通过内存读写控制的方式将NVMe管理完成命令写入加速卡本地内存中的管理完成队列。
7.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述命令抓取模块实时监测主机内存中的一个管理提交队列和八个I/O提交队列,同时它也实时监测加速卡本地内存中的一个管理完成队列和八个I/O完成队列;当主机内存中的一个管理提交队列和八个I/O提交队列中有新的NVMe管理命令和NVMe I/O命令时,命令抓取模块通过直接内存访问的方式将NVMe管理命令传输至加速卡本地内存中的管理提交队列,将NVMeI/O命令传输至加速卡本地内存中对应的I/O提交队列;当加速卡本地内存中的一个管理完成队列和八个I/O完成队列中有新的NVMe管理完成命令和NVMe I/O完成命令时,命令抓取模块通过直接内存访问的方式将NVMe管理完成命令传输至主机内存中的管理完成队列,将NVMe I/O完成命令传输至主机内存中对应的I/O完成队列。
8.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述虚拟队列绑定模块包括用户ID解析子模块和用户ID绑定子模块;
用户ID解析子模块通过内存读写控制的方式从加速卡本地内存中的八个I/O提交队列中读取NVMe I/O命令并提取命令中的用户ID,随后用户ID被传入用户ID绑定子模块;用户ID绑定子模块使用用户ID在加速卡本地内存中对应于I/O提交队列的虚拟I/O提交队列池中搜索具备相同用户ID的虚拟I/O提交队列;当虚拟I/O提交队列被找到,用户ID绑定子模块把NVMe I/O命令派发到该虚拟I/O提交队列中;反之,用户ID绑定子模块在该虚拟I/O提交队列池中分配一个新的虚拟I/O提交队列,并把NVMe I/O命令提交到新创建的虚拟I/O提交队列。
9.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述I/O处理模块池包含16个I/O处理模块,它们被均匀地分配给八个虚拟I/O提交队列池,即两个I/O处理模块并行地处理一个虚拟I/O提交队列池中的NVMe I/O命令;
每个I/O处理模块包括队列处理子模块、数据处理子模块和完成处理子模块;
队列处理子模块通过内存读写控制的方式从加速卡本地内存中的虚拟I/O提交队列池中的状态为活动的虚拟I/O提交队列中读取NVMe I/O命令,随后对NVMe I/O命令进行识别和译码并将译码结果流向数据处理子模块;数据处理子模块在接收到译码结果后进行地址解析和翻译以获得数据的源地址和目的地址,并通过直接内存访问的方式将数据从源地址传输至目的地址;当数据处理子模块完成数据的传输时,表示NVMe I/O命令的处理已经完成,完成处理子模块随后生成NVMe I/O完成命令并通过内存读写控制的方式将NVMe I/O完成命令写入加速卡本地内存中对应的I/O完成队列。
10.根据权利要求1所述的完全硬件卸载的NVMe存储加速系统,其特征在于,所述I/O带宽公平调度模块包括八个命令选择子模块、八个带宽累加子模块和一个公平调度子模块;
命令选择子模块通过内存读写控制的方式根据公平调度子模块指定的用户ID从加速卡本地内存中对应的虚拟I/O提交队列池中的匹配用户ID的虚拟I/O提交队列中读取NVMeI/O命令;随后将NVMe I/O命令传输给I/O处理模块池中对应的I/O处理模块进行处理;与此同时,带宽累加子模块实时监测NVMe I/O命令处理过程中所产生的数据传输量并根据NVMeI/O命令的户ID字段将其累加到匹配用户ID的带宽累加寄存器中;随后公平调度子模块通过寄存器读写控制的方式实时读取所有带宽累加寄存器中的值并进行从小到大排序;当排序完成时,公平调度子模块选取值最小的带宽累加寄存器并通过寄存器读写的方式读取它的用户ID;最后公平调度子模块根据读取的用户ID生成公平调度信号;该公平调度信号会被传输给命令选择子模块,其中命令选择子模块会根据公平调度信号将虚拟I/O提交队列池中匹配用户ID的虚拟I/O提交队列设置为活动状态,而不匹配用户ID的虚拟I/O提交队列设置为静默状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211684098.8A CN115826872A (zh) | 2022-12-27 | 2022-12-27 | 完全硬件卸载的NVMe存储加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211684098.8A CN115826872A (zh) | 2022-12-27 | 2022-12-27 | 完全硬件卸载的NVMe存储加速系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115826872A true CN115826872A (zh) | 2023-03-21 |
Family
ID=85518548
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211684098.8A Pending CN115826872A (zh) | 2022-12-27 | 2022-12-27 | 完全硬件卸载的NVMe存储加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115826872A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483286A (zh) * | 2023-06-16 | 2023-07-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
CN116909484A (zh) * | 2023-08-02 | 2023-10-20 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
-
2022
- 2022-12-27 CN CN202211684098.8A patent/CN115826872A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116483286A (zh) * | 2023-06-16 | 2023-07-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
CN116483286B (zh) * | 2023-06-16 | 2023-08-25 | 北京得瑞领新科技有限公司 | NVMe SSD的IO资源管理方法、装置、存储介质及设备 |
CN116909484A (zh) * | 2023-08-02 | 2023-10-20 | 中科驭数(北京)科技有限公司 | 数据处理方法、装置、设备及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115826872A (zh) | 完全硬件卸载的NVMe存储加速系统 | |
CN102597971B (zh) | 具有多个虚拟队列的地址转换单元 | |
US11604594B2 (en) | Apparatus, system and method for offloading data transfer operations between source and destination storage devices to a hardware accelerator | |
US11029746B2 (en) | Dynamic power management network for memory devices | |
US11907814B2 (en) | Data path for GPU machine learning training with key value SSD | |
Kim et al. | Optimized I/O determinism for emerging NVM-based NVMe SSD in an enterprise system | |
US11810618B2 (en) | Extended memory communication | |
CN109983443B (zh) | 实现分叉非易失性存储器快速驱动器的技术 | |
CN113900710B (zh) | 扩展存储器组件 | |
US9442759B2 (en) | Concurrent execution of independent streams in multi-channel time slice groups | |
Zou et al. | DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing | |
CN117631974A (zh) | 跨越基于存储器的通信队列的多信道接口的存取请求重新排序 | |
US10664396B2 (en) | Systems, methods and apparatus for fabric delta merge operations to enhance NVMeoF stream writes | |
US11550736B1 (en) | Tensorized direct memory access descriptors | |
Qiu et al. | A high-performance and scalable NVMe controller featuring hardware acceleration | |
US11500802B1 (en) | Data replication for accelerator | |
Bougioukou et al. | Prototyping and performance evaluation of a dynamically adaptable block device driver for PCIe-based SSDs | |
KR20230026423A (ko) | 확장 메모리 뉴로모픽 컴포넌트 | |
Choi et al. | Towards high-performance san with fast storage devices | |
KR20210108487A (ko) | 저장 디바이스 동작 오케스트레이션 | |
CN1910562A (zh) | 经由流动id方法的dmac发布机制 | |
US11481317B2 (en) | Extended memory architecture | |
CN114127852B (zh) | 扩展存储器接口 | |
KR20230023563A (ko) | 스토리지 장치의 메모리 액세스를 위한 시스템, 방법 및 장치 | |
CN117631976A (zh) | 用于基于存储器的通信队列的存取请求重新排序 |
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 |