用于对等高速外围组件互联存储传输的系统和方法
【技术领域】
[0001]本公开涉及用于对等PCIe存储传输的系统和方法。
【背景技术】
[0002]高速非易失性存储器(NVMe)规范是一种访问固态设备(SSD)和通过高速外围组件互联(PCIe)总线连接的其他目标设备的规范。高速非易失性存储器(NVMe)规范定义了一种基于单个管理指令集和完成队列以及多个操作输入/输出(I/O)指令集和完成队列的命令接口。管理队列用于诸如队列创建和删除、设备状态询问和特征配置的任务,而I/O队列用于所有与存储相关的传输,诸如块读取和写入。然而,NVMe规范在一定程度上依靠用于命令和控制的主机资源,这可呈现出在系统性能中的瓶颈或阻碍。
[0003]根据NVMe规范,仅仅一个系统的主CPU能够发送存储命令至NVMe控制器。此外,PC1-Express系统架构面临两个典型的性能约束。第一,具有高设备扇出(例如企业存储底板)的典型的PC1-Express构造的总上行带宽(从PC1-Express开关上行至主机)比下行带宽(从同一 PC1-Express开关下行至所有连接的存储器控制器)小。这表示过多提供了该开关的下行带宽,当仅仅被允许的流量在主机和末端NVMe控制器之间流动时它不能被完全利用。第二,在仅允许主机生成至所有控制器的存储流量的系统中,主机的资源(特别是计算能力/(PU和存储/动态随机存取存储器(DRAM))是整个系统性能的瓶颈。该系统的全部延迟和吞吐量受到主机能力的束缚。延迟问题对诸如高性能计算平台等应用尤其不利,其中计算设备诸如图形处理单元(GPU)期望访问存储介质上的大量数据,然而无法在主机不用作一种媒介以初始化从驱动器至主DRAM的存储传输且然后进一步从主DRAM下行至GPU的存储传输的情况下访问它。
[0004]解决这种问题的较早的尝试包括供应商独特和专有的解决方案,它们并不解决访问非专门设计的NVM控制器的问题。然而,这并不能够使得与这种供应商独特或专有的解决方案不兼容的设备能够产生这种流量,此外它并不兼容NVM Express协议,这是因为NVMExpress仅允许系统主机产生流量。
[0005]由此可见,可以理解可能存在与目前用于对等PCIe存储传输的技术相关的重要问题和缺陷。
【发明内容】
[0006]公开了用于对等PCIe存储传输的技术。在一些实施例中,该技术可实现为提供在高速外围组件互联(PCIe)设备之间进行对等存储传输的方法,包括在第一 PCIe设备的存储器中提供用于在第一 PCIe设备和目标PCIe设备之间通信的数据的队列,在第一 PCIe设备处接收从通信地耦合至第一 PCIe设备和目标PCIe设备的主设备传输的队列存储器分配信息,以及使用第一 PCIe设备的计算机处理器生成存储命令。
[0007]根据此示例性实施例的其他方面,该对等存储传输可包括至或从高速非易失性存储器(NVMe)兼容的目标设备的存储传输。
[0008]根据此示例性实施例的再一方面,该队列可被分配至由PCIe枚举器在第一 PCIe设备的初始化时刻分配的高速外围组件互联(PCIe)存储区域。
[0009]根据此示例性实施例的其他方面,该队列可为用于将存储命令发送至目标PCIe设备的I/O (输入/输出)提交队列。
[0010]根据此示例性实施例的再一方面,该队列可为用于从目标PCIe设备接收存储命令完成的指示的I/o (输入/输出)完成队列。
[0011]根据此示例性实施例的其他方面,该技术可进一步包括在第一 PCIe设备的存储器中提供用于在第一 PCIe设备和目标PCIe设备之间通信数据的第二队列,并在第一 PCIe设备处接收用于第二队列的来自主机设备的队列存储器分配信息。
[0012]根据此示例性实施例的其他方面,该第二队列可包括下述队列的至少一个:用于将存储命令发送至目标PCIe设备的I/O (输入/输出)提交队列以及用于从目标PCIe设备接收存储命令完成的指示的I/O (输入/输出)完成队列。
[0013]根据此示例性实施例的再一方面,该技术可进一步包括在第一 PCIe设备的存储器中提供数据缓存。
[0014]根据此示例性实施例的其他方面,可在主机设备的存储器中提供一队列以用于下述内容的至少一个:管理提交、管理完成、I/O提交、I/O完成。
[0015]根据此示例性实施例的其他方面,该技术可进一步包括在主机设备的存储器中提供数据缓存。
[0016]根据此示例性实施例的再一方面,该技术可进一步包括基于下述一个或多个因素确定多个队列以在第一 PCIe设备上利用以及多个队列以在主机设备上利用,一个或多个因素包括:第一 PCIe设备上可用的存储器数量,主机设备上可用的存储器数量,主机设备的利用水平,第一 PCIe设备的利用水平,在高速外围组件互联(PCIe)开关和主机设备之间可用的带宽量,在高速外围组件互联(PCIe)开关和第一PCIe设备之间可用的带宽量,以及在高速外围组件互联(PCIe)开关和目标PCIe设备之间可用的带宽量。
[0017]根据此示例性实施例的其他方面,该技术可进一步包括在第三PCIe设备的存储器中提供用于在第一 PCIe设备和目标PCIe设备之间通信的数据的第二队列,并在第一PCIe设备处接收用于第二队列的来自主机设备的队列存储器分配信息。
[0018]根据此示例性实施例的其他方面,该技术可进一步包括由第一 PCIe设备通过将产生的存储传输命令存储在I/o提交队列中开始存储传输命令,发出对等存储器写入至目标PCIe设备的门铃寄存器,在第一 PCIe设备处接收来自目标PCIe设备的存储器读取命令以获取该存储传输命令,并在第一 PCIe设备和目标PCIe设备之间传输数据。
[0019]根据此示例性实施例的其他方面,该技术可进一步包括接收在I/O完成队列中由目标PCIe设备写入的完成指示,接收来自目标PCIe设备的中断,由第一 PCIe设备从该I/O完成队列中获取完成;以及更新目标PCIe设备的门铃。
[0020]根据此示例性实施例的再一方面,目标PCIe设备可为MS1-X(消息信号中断扩展)兼容的并且该中断可从目标PCIe设备发送至第一 PCIe设备的存储器中的一地址(举例来说,在诸如第一 PCIe设备的PCIe Bar空间的PCIe存储器映射中的地址)。在一些实施例中,对于中断来说在第一 PCIe设备中可能并不需要存储器,并且硬件处理逻辑可通过MS1-X中断的PCIe存储器写入事务层包(TLP)触发。[0021 ] 根据此示例性实施例的其他方面,目标PCIe设备可以不为MS1-X (消息信号中断扩展)兼容的并且该中断可以从目标PCIe设备发送至主机并且其中该主机将该中断转发至第一 PCIe设备的存储器中的一地址(举例来说,在诸如第一 PCIe设备的PCIe Bar空间的PCIe存储器映射中的地址)。在一些实施例中,对于中断来说在第一 PCIe设备中可能并不需要存储器,并且硬件处理逻辑可通过MS1-X中断的PCIe存储器写入事务层包(TLP)触发。
[0022]根据此示例性实施例的其他方面,主机设备可包括以下内容的至少一个:企业服务器、数据库服务器、工作站、以及计算机。
[0023]根据此示例性实施例的其他方面,目标PCIe设备可包括以下内容的至少一个:图形处理单元、音频/视频捕获卡、硬盘、主机总线适配器以及高速非易失性存储器(NVMe)控制器。根据一些实施例,该目标设备可为NVMe兼容的设备。
[0024]在一些实施例中,用于对等PCIe存储传输的技术可实现为计算机程序产品,它包括可在计算机上执行的一系列指令,该计算机程序产品执行用于对等高速外围组件互联(PCIe)存储传输的过程。该计算机程序可执行以下步骤:在第一 PCIe设备的存储器中提供用于在第一 PCIe设备和目标PCIe设备之间通信的数据的队列,在第一 PCIe设备处接收从通信地耦合至第一 PCIe设备和目标PCIe设备的主设备传输的队列存储器分配信息,以及使用第一 PCIe设备的计算机处理器生成存储命令。
[0025]在一些实施例中,用于对等PCIe存储传输的技术可实现为用于对等高速外围组件互联(PCIe)存储传输的系统。该系统可包括主机设备、第一高速外围组件互联(PCIe)设备、目标高速外围组件互联(PCIe)设备、以及通信地耦合第一 PCIe设备、目标PCIe设备和主机的高速外围组件互联(PCIe)开关。在一些实施例中,PCIe根复合体功能(rootcomplex funct1nality)或PCIe构造可提供代替PCIe开关的连接。第一 PCIe设备可包括存储在存储器中的存储的高速非易失性存储器(NVMe)命令提交指令,该指令包括用于I/O提交的在第一 PCIe设备的存储器中的队列的地址,以及用于生成NVMe命令的指令。
[0026]现在将参考如附图所示的其示例性实施例更详细地描述本公开。虽然下文参考示例性实施例对本公开进行描述,然而应当理解本公开并不限于此。已经领会本文教导的本领域技术人员将认识到处于如本文所述的本公开范围内的其他实现方式、修改和实施例,以及应用的其他领域,并且就这些方面而言,本公开可能具有重要用途。
【附图说明】
[0027]为了便于更完整地理解本公开,现在参考下述附图,其中相同的元件使用相同的数字参考。这些附图不应被理解为限制本公开,而是意欲仅给出示例。
[0028]图1示出了根据本公开一个实施例的描述与主机设备通信的多个PCIe设备的示例框图。
[0029]图2示出了根据本公开一个实施例的描述与主机设备通信的多个PCIe设备的示例框图。
[0030]图3描述了根据本公开一个实施例的用于对等PCIe存储传输的示例模块。