完全硬件卸载的NVMe存储加速系统技术方案

技术编号:36928891 阅读:11 留言:0更新日期:2023-03-22 18:51
本发明专利技术提供了一种完全硬件卸载的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强绑定的问题,更好地满足多用户/应用共享的需求。更好地满足多用户/应用共享的需求。更好地满足多用户/应用共享的需求。

【技术实现步骤摘要】
完全硬件卸载的NVMe存储加速系统


[0001]本专利技术涉及计算机软硬件架构、非易失存储系统
,具体地,涉及一种完全硬件卸载的NVMe存储加速系统。

技术介绍

[0002]基于闪存的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)等等。
[0003]以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的低延迟、高吞吐量和高带宽的特性。
[0004]NVMe的多队列机制赋予了SSD同时为多个用户/应用提供服务的能力。如何在多个租户或应用之间公平地分配SSD的带宽同时又确保相互独立的挑战也随之涌现。不幸的是,NVMe是一种内核级别的驱动。每一次NVMe I/O的触发都会经过主机端复杂的I/O堆栈,同时引起用户态和内核态之间的上下文切换。与此同时,将带宽公平调度策略嵌入至内核/NVMe驱动是目前为共享单个SSD的多租户或应用提供性能保障的普遍解决方案。考虑到NVMe的多队列并发I/O的特性,这无疑会加剧主机CPU的负担。此外,多I/O队列并发机制还促进了SSD在虚拟化和云环境中的部署。I/O带宽的公平分配对于这类SSD来说是十分重要的,因为相比于本地的SSD,它们被要求必须被共享。
[0005]专利文献CN105426120A(申请号:CN201510726309.3)公开了一种基于NVME的混合加速系统,包括业务应用池、PCIe交换池、网络通讯池以及至少两个管理模块,所述业务应用模块、所述PCIe交换模块与所述数据通讯模块同时通过I2C总线以及以太网与所述管理模块相连接,所述I2C总线用于获取各模块的底层核心器件信息,业务应用模块包括多个NVME磁盘阵列和PCIe交换单元,PCIe交换池与所述业务应用池相连接,用于使PCIe数据在所述业务应用模块间传输,设计至少两个管理模块对各模块进行管理,且同时采用I2C和以太网的双管理链路设计,冗余设计防止单个管理模块或链路出现故障,整个架构用PCIe传输技术作为核心的数据传输网络,实现针对NVME磁盘阵列的物理底层资源的池化和其他模
块的池化,便于集中的部署及管理。
[0006]现有的研究工作已经证明高性能的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成本紧耦合。

技术实现思路

[0007]针对现有技术中的缺陷,本专利技术的目的是提供一种完全硬件卸载的NVMe存储加速系统。
[0008]根据本专利技术提供的完全硬件卸载的NVMe存储加速系统,包括一张由一个ARM软件处理器和一个现场可编程逻辑门阵列硬件处理器组成的异构加速卡,所述异构加速卡通过高速串行总线与主机连接;
[0009]所述异构加速卡包括:
[0010]ARM软件处理器,其内设有一个管理模块,用于处理NVMe管理命令,包括I/O队列创建、删除;
[0011]FPGA硬件处理器,其内设有一个命令抓取模块,用于并行且批量地传输主机提交的NVMe管理和NVMe I/O命令;同时也用于并行且批量地传输加速卡生成的NVMe管理和NVMe I/O完成命令;
[0012]虚拟队列绑定模块,用于将加速卡本地内存中I/O提交队列中的不同用户/应用的NVMe I/O命令分派至加速卡本地内存中指定的虚拟I/O提交队列中;
[0013]I/O处理模块池,包括16个I/O处理模块,用于处理NVMe I/O命令;
[0014]I/O带宽公平调度模块,用于实施不同用户/应用之间的I/O带宽公平调度;
[0015]一个管理提交队列,被设置在加速卡本地内存中,用于向主机公开一个管理提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe管理命令;
[0016]一个管理完成队列,被设置在加速卡本地内存中,用于向主机公开一个管理完成队列,与此同时,它也被用于缓存管理模块生成的NVMe管理完成命令;
[0017]八个I/O提交队列,被设置在加速卡本地内存中,用于向主机公开八个I/O提交队列,与此同时,它也被用于缓存从主机内存中获取的NVMe I/O命令;
[0018]八个I/O完成队列,被设置在加速卡本地内存中,用于向主机公开八个I/O完成队列,与此同时,它也被用于缓存I/O处理模块生成的NVMe I/O完成命令;
[0019]八个虚拟I/O提交队列池,被设置在加速卡本地内存中,八个虚拟I/O提交队列池与加速卡本地内存中的八个I/O提交队列一一对应,用于缓存八个I/O提交队列中存储的不同用户/应用提交的NVMe I/O命令。
[0020]优选的,所述管理模块通过内存读写控制的方式从加速卡本地内存中的管理提交
队列中读取NVMe管理命令并处理,处理完成后管理模块生成对应的NVMe管理完成命令并通过内存读写控制的方式将NVMe管理完成命令写入加速卡本地内存中的管理完成队列。
[0021]优选的,所述命令抓取模块本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种完全硬件卸载的NVMe存储加速系统,其特征在于,包括一张由一个ARM软件处理器和一个现场可编程逻辑门阵列硬件处理器组成的异构加速卡,所述异构加速卡通过高速串行总线与主机连接;所述异构加速卡包括:ARM软件处理器,其内设有一个管理模块,用于处理NVMe管理命令,包括I/O队列创建、删除;FPGA硬件处理器,其内设有一个命令抓取模块,用于并行且批量地传输主机提交的NVMe管理和NVMe I/O命令;同时也用于并行且批量地传输加速卡生成的NVMe管理和NVMe I/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命令。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管理完成命令和NVMe I/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...

【专利技术属性】
技术研发人员:姚建国王文杰黄益人唐杰彭博
申请(专利权)人:益思芯科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1