CN114138702B - 计算系统、pci设备管理器及其初始化方法 - Google Patents
计算系统、pci设备管理器及其初始化方法 Download PDFInfo
- Publication number
- CN114138702B CN114138702B CN202210111761.9A CN202210111761A CN114138702B CN 114138702 B CN114138702 B CN 114138702B CN 202210111761 A CN202210111761 A CN 202210111761A CN 114138702 B CN114138702 B CN 114138702B
- Authority
- CN
- China
- Prior art keywords
- pci
- pci device
- memory
- data
- host
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开涉及一种计算系统、PCI设备管理器及其初始化方法。该PCI设备管理器用于实现PCI设备之间的点对点数据传输,包括:DMA引擎模块,通过DMA方式实现与主机和PCI设备之间的数据和命令通信;设备内存;内存映射模块,将设备内存的数据缓存空间映射到主机内存的物理地址空间,以便在运行过程中经由DMA引擎模块与PCI设备进行数据通信和/或命令通信;处理器,通过DMA引擎模块向主机发送PCI设备配置指令,并为主机发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信。由此,在PCI设备之间进行数据传输时,可以释放主机昂贵的CPU和内存资源,同时还可以提高PCI设备间的数据传输性能。
Description
技术领域
本公开涉及PCI(外围设备互联)设备之间的点对点(P2P,Peer-to-Peer)直接通信技术。
背景技术
近年来,随着摩尔定律的接近失效,CPU单核处理能力的增长遇到了瓶颈。
而与此同时,IO(输入/输出,本公开中主要涉及对存储器的读和写)设备的性能却呈现出一种指数增长的趋势,例如现有一种NVMe(NVM Express,高速非易失性存储器)规范的PCIe(PCI Express,高速外围设备互联)设备的IOPS(每秒读写次数)从800K提升到了1500K,约有1倍的性能提升。而作为对比,CPU单核的处理能力约1000K左右。长此以往,CPU单核所能服务的外部设备将会越来越少。
同时,大规模的数据也消耗了大量的主机端内存资源。这给数据中心的服务器架构带来了极大的挑战。
因此,使IO设备之间直接通信的PCIeP2P技术引起了工业界和学术界的广泛关注。
通过P2P技术,可以使设备与其它设备之间直接进行通信,而不需要主机端CPU和内存的参与。这样,就可以降低主机端CPU和内存的利用率,缓解CPU性能与IO性能增长速率的不对称。
目前业内已经有一些解决方案通过PCIe P2P技术来降低IO数据传输在CPU侧的开销,同时缩短IO数据传输路径,提升IO数据传输性能。例如,现有的一些网卡,能够支持NoF(NVMe over Fabric,基于NVMe的网络存储协议)场景,直接将网卡收到的存储数据P2P传输给主机的SSD,中间无需主机端CPU的参与,不占用任何主机端的CPU资源,极大地降低了CPU的开销。
但是该类方案需要对主机端的NVMe驱动和网卡驱动进行定制修改,主机侧仍然需要加载运行P2P的两个设备的驱动程序,其代码需要进行定制修改才能支持P2P数据传输,通用性不足。同时,该方案虽然避免了数据传输在主机的处理,但是仍然需要占用主机的内存资源和带宽,影响主机上的应用的内存性能。
因此,仍然需要一种改进的PCI设备之间的点对点(P2P)直接通信方案。
发明内容
本公开要解决的一个技术问题是提供一种改进的PCI设备之间的点对点(P2P)直接通信方案,其能够进一步减少对主机CPU和内存资源的占用和依赖。
根据本公开的第一个方面,提供了一种PCI设备管理器,用于实现PCI设备之间的点对点数据传输,包括:直接存储器存取DMA引擎模块,连接到主机总线,以通过DMA方式实现与主机和PCI设备之间的数据和命令通信;设备内存;内存映射模块,在例如初始化过程中,将设备内存的数据缓存空间映射到主机内存的物理地址空间,以便在运行过程中经由DMA引擎模块与PCI设备进行数据通信和/或命令通信;处理器,在例如初始化过程中,处理器通过DMA引擎模块向主机发送PCI设备配置指令,并为主机例如通过PCI枚举操作发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信。
可选地,为所发现的PCI设备分别创建PCI设备对象包括:在设备内存中为所发现的PCI设备分别配置数据缓存空间;以及/或者在设备内存中为所发现的PCI设备分别注册相应的队列。
可选地,对于请求访问数据的PCI设备,队列包括工作队列,处理器从工作队列读取其对应的PCI设备写入的数据访问命令;并且/或者队列包括完成队列,处理器通过在设备内存中为PCI设备注册的完成队列中写入完成队列元素来向PCI设备通知命令执行完成。
可选地,对于存储数据的PCI设备,队列包括工作队列,处理器将数据访问命令写入设备内存中为PCI设备注册的工作队列;并且/或者队列包括工作队列,处理器通过向PCI设备的门铃寄存器写入通知消息,以通知PCI设备从设备内存中为其注册的工作队列读取数据访问命令;并且/或者队列包括完成队列,PCI设备通过在设备内存中为其注册的完成队列中写入完成队列元素,来向PCI设备管理器通知命令执行完成。
可选地,数据访问命令指定设备内存中本次数据访问操作所要使用的数据缓存地址。
可选地,当第一PCI设备请求读取第二PCI设备上存储的数据时:由第一PCI设备在设备内存中为其注册的第一工作队列中写入针对第二PCI设备的第一读命令,第一读命令包括请求读取的数据信息和设备内存中的指定数据缓存地址;处理器将第一数据读命令转换为对应于第二PCI设备的第二读命令,第二读命令包括请求读取的数据信息和设备内存中的指定数据缓存地址;将第二读命令写入设备内存中为第二PCI设备注册的第二工作队列;通过DMA引擎模块在第二PCI设备的门铃寄存器中写入通知消息,以通知第二PCI设备从第二工作队列读取第二读命令;由第二PCI设备响应于通知消息将请求读取的数据写入到指定数据缓存区;响应于第二PCI设备数据发送操作完成,通过DMA引擎模块在第一PCI设备的门铃寄存器中写入通知消息,以通知第一PCI设备从指定数据缓存区读取数据。
可选地,当第一PCI设备请求将数据写入第二PCI设备时:由第一PCI设备在设备内存中为其注册的第一工作队列中写入针对第二PCI设备的第一写命令,第一写命令包括设备内存中的指定数据缓存地址;由第一PCI设备在设备内存中的指定数据缓存地址中写入数据;处理器将第一写命令转换为对应于第二PCI设备的第二写命令,第二写命令包括设备内存中的指定数据缓存地址;将第二写命令写入设备内存中为第二PCI设备注册的第二工作队列;通过DMA引擎模块在第二PCI设备的门铃寄存器中写入通知消息,以通知第二PCI设备从第二工作队列读取第二写命令。
可选地,第一PCI设备是网络接口控制器,第二PCI设备是固态硬盘。
根据本公开的第二个方面,提供了一种计算系统,包括:主机,主机包括主机内存、主机CPU以及主机总线;多个PCI设备,连接到主机总线;以及根据上述第一方面的PCI设备管理器,连接到主机总线,多个PCI设备之间通过PCI设备管理器实现数据和命令的通信。
根据本公开的第三个方面,提供了一种PCI设备管理器初始化方法,适于在根据上述第二方面的计算系统中的主机CPU执行,该方法包括:通过主机的PCI基地址寄存器空间,将PCI设备管理器中的设备内存注册到主机内存的物理地址空间中;接收PCI设备管理器的处理器上运行的程序发送的PCI设备配置指令;执行PCI设备枚举指令,以发现连接到主机总线的PCI设备;将所发现的PCI设备的信息发送给PCI设备管理器;以及向所发现的PCI设备下发PCI设备配置指令。
根据本公开的第四个方面,提供了一种PCI设备管理器初始化方法,适于在根据上述第二方面的计算系统中的PCI设备管理器的处理器执行,该方法包括:向主机发送PCI设备配置指令;以及基于从主机返回的例如通过PCI枚举操作发现的PCI设备的信息,为所发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信。
根据本公开的第五个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第三或第四方面所述的方法。
根据本公开的第六个方面,提供了一种计算机程序产品,包括可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如上述第三或第四方面所述的方法。
根据本公开的第七个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第三或第四方面所述的方法。
由此,在PCI设备之间进行数据传输时,可以释放主机昂贵的CPU和内存资源,同时还可以提高PCI设备间的数据传输性能。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了根据本公开的计算系统的示意性结构框图。
图2示出了根据本公开的PCI设备管理器的初始化方法的示意性流程图。
图3示出了第一PCI设备如网络接口控制器(NIC)请求读取第二PCI设备如固态硬盘(SSD)上存储的数据时的数据和命令流示意图。
图4示出了第一PCI设备如网络接口控制器(NIC)请求将数据写入第二PCI设备如固态硬盘(SSD)时的数据和命令流示意图。
图5示出了根据本发明一实施例可用于实现本公开的方法的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本公开的发明人提出,在计算系统中添加专门的PCI设备管理器,其具有内存和CPU,用来管理和实现计算系统中各PCI设备之间的点对点(P2P)数据传输。
由此,本公开提出了一种实现通用PCI设备间P2P数据传输的方法。使用专用的PCI设备管理器来管理主机上的各种PCI设备(例如网卡、SSD等),利用主机端的代理程序(初始化程序)对其它PCI设备进行枚举,从而使得任何PCI设备都能被该PCI设备管理器枚举和初始化,从而实现PCI设备管理器与主机PCI设备之间进行P2P数据传输的目的。根据本公开的通用PCI设备间P2P架构,仅需要在服务器新插入PCI设备管理器,无需修改P2P设备的主机驱动就能实现对P2P架构的支持。专用的设备管理器包含P2P直接存储器读取(DMA)引擎,主机与设备管理器的内存映射机制,能够非常方便地实现该PCI设备管理器和其它PCI设备的P2P传输。由此,可以完全释放服务器昂贵的CPU和内存资源,同时提高设备间数据传输性能。
仅为了与主机上的内存和CPU相区分的目的,在本公开的上下文中,将PCI设备管理器上的内存和CPU,分别称为“设备内存”和“设备CPU”。其中的术语“设备”仅用于区分,而不用于对内存或CPU本身的属性加以限定。
另外,在本公开的实施例中,以在PCI设备管理器上设置CPU来执行相应程序为例进行了描述。应当理解,设备CPU也可以由各种其它处理器或控制器替代,只要能够运行相应程序即可。
应当理解,本公开的技术方案可以适用于包括PCIe设备在内的各种PCI设备。
PCI设备管理器自身的物理形态也可以是PCI(或PCIe)设备,可以由例如基于FPGA(现场可编程门阵列)和嵌入式ARM片上系统(SoC)形成。PCI设备管理器可以包含定制硬件和通用CPU模块,可以插入主机的标准PCIe插槽。
PCI设备管理器与需要进行P2P通信的其它PCIe设备都位于主机的PCIe总线上,相互之间独立,没有其它物理上的耦合和连接。
本公开通过使用PCI设备管理器上的设备内存和设备CPU,替代主机内存和主机CPU,来实现PCI设备之间的P2P数据传输,减少了对主机内存和主机CPU的占用,
图1示出了根据本公开的计算系统的示意性结构框图。
如图1所示,该计算系统包括主机CPU、PCI设备和PCI设备控制器。CPU、PCI设备和PCI设备控制器均连接到PCI总线。
图1中示出的PCI设备有网络接口控制器(NIC)和固态硬盘(SSD)。应当理解,计算系统中可以包括的PCI设备不限于此。
网络接口控制器(NIC),也可以称为“网卡组件”,主要负责向远端发送或从远端接收数据。接收数据时,网卡会将从远端接收的数据包进行拆包和解析的工作,并将解析后的数据保存在PCI设备管理器的设备内存中。发送数据时,网卡会从PCI设备管理器的设备内存中读取数据,并将数据根据网络传输协议封装成数据包,发送到远端。
固态硬盘(SSD)例如可以是NVMe(NVM Express,高速非易失性存储器)SSD组件,负责存储数据。当读写数据时,PCI设备管理器将NVMe命令保存到PCI设备管理器的设备内存中的NVMe队列中,通过写NVMe SSD的Doorbell寄存器通知SSD取数据。NVMe SSD会从PCI设备管理器的设备内存中取出NVMe命令。
往SSD写数据时,NVMe SSD会根据NVMe命令从指示的设备内存中缓存数据的地址读取数据并存储。从SSD读数据时,NVMe SSD会根据NVMe命令向所指示的设备内存地址中写入要读取的SSD中保存的数据。
主机的CPU上可以运行PCI设备管理器的初始化程序。该初始化程序可以负责将PCI设备管理器的设备内存注册到主机内存的物理地址空间中,并与设备管理器的PCI模拟程序建立通信,接收来自设备管理器的初始化命令,下发相关命令,并返回相关结果。
如图1所示,PCI设备管理器可以包括设备内存、设备CPU、内存映射模块和DMA引擎模块。
DMA引擎模块连接到主机总线,以通过DMA方式实现与主机和PCI设备之间的数据和命令通信。
DMA引擎模块可以是可编程的DMA引擎模块。它可以被PCI设备管理器的设备CPU上运行的PCI模拟程序使用,可以用来访问主机端的PCI设备基地址寄存器(BAR)空间和主机内存,实现PCI设备管理器对主机和其它PCI设备的配置和使用。BAR是PCI配置空间中若干个寄存器,例如从0x10到0x24的6个register,用来定义PCI设备所需要的配置空间大小以及PCI设备占用的地址空间等信息。
设备CPU负责执行设备管理器上的应用程序(APP)、设备驱动程序和PCI设备模拟程序的执行。
在初始化过程中,内存映射模块将设备内存的数据缓存空间映射到主机内存的物理地址空间,以便在运行过程中经由DMA引擎模块与PCI设备进行数据通信和/或命令通信。
内存映射模块可以由PCI设备管理器的物理功能(PF)/虚拟功能(VF)模块实现,通过PCI基地址寄存器(BAR)空间实现设备管理器和主机相互访问内存物理地址空间,将设备管理器的设备内存映射到主机的物理内存地址空间,相当于实现了访问设备内存的路由。
另外,在初始化过程中,设备CPU通过DMA引擎模块向主机发送PCI设备配置指令,并为主机例如通过PCI枚举操作发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信。应当理解,主机可以通过各种方法来发现连接到主机总线的PCI设备,而不限于通过执行PCI枚举操作。
PCI设备对象是加载上层网络和NVMe等PCI设备的驱动程序的基础。
这里,创建PCI设备对象至少可以包括以下两个方面。
一方面,在设备内存中为所发现的PCI设备分别配置数据缓存空间。后续运行过程,PCI设备可以访问为其配置的数据缓存空间。
另一方面,在设备内存中为所发现的PCI设备分别注册相应的队列。
队列可以包括工作队列(WQ,WorkQueue)和完成队列(CQ,CompletionQueue)。工作队列用于写入需要传送的命令,完成队列用于写入表示命令执行完成的完成队列元素(CQE,CompletionQueueElement)。
例如,当PCI设备为网络接口控制器(NIC)时,工作队列可以包括发送队列(SQ,sendQueue)和接收队列(RQ,ReceiveQueue)。NIC向SQ或RQ写入相应的读或写命令(SQE/RQE),PCI设备管理器向CQ写入CQE。
又例如,当PCI设备为固态硬盘(SSD)时,工作队列可以包括提交队列(SQ,SubmissionQueue)。PCI设备管理器向SQ写入读或写命令,SSD向CQ写入CQE。
下面进一步描述本公开的PCI设备管理器的初始化过程和使用该PCI设备管理器实现PCI设备间点对点通信的方案。
图2示出了根据本公开的PCI设备管理器的初始化方法的示意性流程图。
PCI设备管理器的初始化过程由主机CPU上运行的PCI设备管理器初始化程序(下文中简称为“主机端程序”)和PCI设备的设备CPU上运行的程序(下文中简称为“管理器端程序”)共同完成。在完成初始化过程之后,在通过使用PCI设备管理器实现PCI设备之间的点对点通信的运行过程中,将不再需要使用主机CPU。
首先在步骤S110,主机端通过主机的PCI基地址寄存器空间,将PCI设备管理器中的设备内存注册到主机内存的物理地址空间中。首先将设备管理器的设备内存注册到主机内存的物理地址空间中。
然后,主机端在步骤S120,管理器端在步骤S210,在主机端程序和设备端程序之间建立通信连接。这里的设备端程序例如可以是PCI设备模拟程序。下面描述的枚举和配置过程就相当于PCI设备模拟过程。
建立连接后,PCI设备管理器的PCI设备模拟程序会进行PCI枚举操作,并下发PCI设备配置指令,其中例如可以包括PCI设备枚举指令。
在步骤S220,管理器端程序向主机端程序发送PCI设备配置指令。
在步骤S130,主机端程序从管理器端程序接收PCI设备配置指令。
相应地,在步骤S140,主机端程序执行PCI设备枚举指令,以发现连接到所述主机总线的PCI设备。
然后,在步骤S150,主机端程序将所发现的PCI设备的信息发送给管理器端程序。
在步骤S160,主机端程序向所发现的PCI设备下发所述PCI设备配置指令。
在步骤S230,管理器端程序接收所发现的PCI设备的信息。
在步骤S240,管理器端程序基于所发现的PCI设备的信息,为所发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据和命令通信。
如上文所述,创建PCI设备对象至少可以包括两个方面:在设备内存中为所发现的PCI设备分别配置数据缓存空间,并且分别注册相应的队列。
这里,创建PCT设备对象的操作例如可以由PCI设备管理器的设备CPU中运行的设备驱动程序执行。
例如可以设备驱动程序将NVMe SSD、网卡NIC等PCI设备的队列注册在设备管理器的设备内存中。
完成上述操作后,系统初始化过程完成。
由此,在本公开的P2P数据传输方案中,通过利用主机端程序执行PCI设备枚举指令,使得总线上连接的任何PCI设备都能被该PCI设备管理器枚举和初始化(配置),从而能够实现PCI设备管理器与主机PCI设备之间的P2P数据传输。
下面,描述PCI设备管理器初始化完成后,PCI设备管理器与其它PCI设备之间的数据和命令通信方式,以及通过PCI设备管理器实现PIC设备之间的数据传输的方案。
PCI设备可以是请求访问其它PCI设备上存储的数据的设备,例如网络接口控制器(NIC),也可以是存储数据而被其它PCI设备访问的设备。
对于请求访问数据的PCI设备,其会在设备内存中为其注册的工作队列中写入数据访问命令。PCI设备管理器的设备CPU从该工作队列中读取所写入的数据访问命令。数据访问命令可以指定设备内存中本次数据访问操作所要使用的数据缓存地址。
相应地,在数据访问操作执行完成后,设备CPU通过在设备内存中为该PCI设备注册的完成队列中写入完成队列元素CQE,来向PCI设备通知命令执行完成。
对于存储数据的PCI设备,例如固态硬盘(SSD),当存在针对该PCI设备的数据访问网命令时,设备CPU将数据访问命令写入设备内存中为该PCI设备注册的工作队列。同样地,数据访问命令可以指定设备内存中本次数据访问操作所要使用的数据缓存地址。
设备CPU可以通过向PCI设备的门铃寄存器写入通知消息,以通知PCI设备从设备内存中为其注册的工作队列读取数据访问命令。
PCI设备通过在设备内存中为其注册的完成队列中写入完成队列元素,来向PCI设备管理器通知命令执行完成。
如上文所述,在本公开的PCI设备间传输方案中,在初始化过程中,PCI设备管理器中的设备驱动程序将NVMe SSD、网卡等PCI设备的队列注册在设备管理器的设备内存中。同时,设备内存通过PCI BAR空间暴露给主机,使得PCI设备能够通过DMA引擎模块访问该设备内存。
由此,在运行过程中,能够实现在IO过程中数据传输和命令传输都旁路绕过主机CPU和主机内存。
PCI设备管理器中的设备CPU通过PCI BAR写NVMe SSD、网卡等PCI设备的Doorbell寄存器,以通知相关设备取设备内存中队列的请求。
下面参考图3和图4,描述通过PCI设备管理器实现两个PCI设备之间的数据传输的方案。其中,以第一PCI设备为支持远程直接数据存取(RDMA)的网络接口控制器(NIC),第二PCI设备为NVMe固态硬盘(SSD)的情形为例进行描述,描述NoF(基于NVMe的网络存储协议)远程存储访问的场景。
上述初始化流程完成之后,PCI设备管理器可以看到网络接口控制器(NIC)和固态硬盘(SSD)。PCI设备管理器正常加载NVMe驱动完成初始化,并在设备内存中创建NVMe队列。PCI设备管理器启动NoF服务,NoF服务会为网络接口控制器(NIC)创建NoF队列。
图3示出了第一PCI设备如网络接口控制器(NIC)请求读取第二PCI设备如固态硬盘(SSD)上存储的数据时的数据和命令流示意图。其中,括号中的数字(步骤序号)表示数据和命令流的顺序。
在远端用户发起数据读请求的情况下,NIC收到NoF的数据读命令,于是NIC请求读取SSD上存储的数据。
如图3所示,在步骤1,由NIC例如通过DRM引擎模块以P2P通信方式,在设备内存中为NIC注册的第一工作队列(RDMA队列的RQ队列)中写入针对SSD的第一读命令。第一读命令可以包括请求读取的数据信息和设备内存中的指定数据缓存地址。
设备CPU中的例如NoF服务对第一数据读命令(NoF读命令)进行解析,将其转换为对应于SSD的第二读命令(NVMe命令)。第二读命令包括请求读取的数据信息和设备内存中的指定数据缓存地址。
然后,在步骤2,设备CPU将第二读命令写入设备内存中为SSD注册的第二工作队列(NVMe队列对的SQ队列)。
在步骤3,设备CPU通过DMA引擎模块在SSD的门铃寄存器中写入通知消息,以通知SSD从设备内存中的第二工作队列(NVMe队列对的SQ队列)读取第二读命令(NVMe命令)。
在步骤4,SSD响应于门铃寄存器中写入的通知消息,从第二工作队列(NVMe队列对的SQ队列)读取第二读命令(NVMe读命令)。
在步骤5,由SSD响应于通知消息将请求读取的数据写入到指定数据缓存区。
在步骤6,在SSD数据发送操作完成后,由SSD在设备内存中NVMe队列对的CQ队列中写入CQE,表示命令执行完成。
在步骤7,响应于通过CQE获知SSD数据发送操作完成,通过DMA引擎模块在NIC的门铃寄存器中写入通知消息,以通知NIC从指定数据缓存区读取数据,从而发起RDMA(远程直接数据存取)请求以向远端发送数据。
在步骤8,由NIC到设备内存中的指定数据缓存区读取数据。
在完成数据发送后,在步骤9,设备CPU在第一队列的CQ队列中写入CQE,从而设备管理器中的NoF服务通过RDMA向远端发送NVMe的CQE,通知远端数据读请求完成。
图4示出了NIC如网络接口控制器(NIC)请求将数据写入SSD如固态硬盘(SSD)时的数据和命令流示意图。其中,括号中的数字(步骤序号)表示数据和命令流的顺序。
在远端用户发起数据写请求的情况下,NIC收到NoF的数据写命令,于是NIC请求将数据写入SSD。
在步骤1,由NIC在设备内存中为其注册的第一工作队列(RDMA队列的SQ队列)中写入针对SSD的第一写命令(NoF写命令),第一写命令包括设备内存中的指定数据缓存地址。
在步骤2,由NIC在设备内存中的指定数据缓存地址缓存NIC发来的数据。
设备CPU将第一写命令转换为对应于SSD的第二写命令(NVMe写命令),第二写命令包括设备内存中的指定数据缓存地址,并在步骤3,将第二写命令写入设备内存中为SSD注册的第二工作队列(NVMe队列对的SQ队列)。
在步骤4,设备CPU通过DMA引擎模块在SSD的门铃寄存器中写入通知消息,以通知SSD从第二工作队列读取第二写命令。
在步骤5,由SSD响应于门铃寄存器中的通知消息,从第二工作队列(NVMe队列对的SQ队列)读取第二写命令。
在步骤6,由SSD从数据缓存区的指定数据缓存地址读取数据并存储。
在步骤7,在SSD存储数据操作完成后,由SSD在设备内存中NVMe队列对的CQ队列中写入CQE,表示命令执行完成。
在步骤8,设备CPU在第一队列的CQ队列中写入CQE,从而设备管理器中的NoF服务通过RDMA向远端发送NVMe的CQE,通知远端数据写请求完成。
至此,本公开提出了一种实现通用P2P架构的方法。通过PCI设备管理器和主机端的初始化程序,实现了在不修改主机端和设备管理器端运行标准的PCI设备驱动的情况下进行PCIe设备间P2P数据传输,实现了通用P2P架构。
通过在PCI设备管理器使用PCI设备模拟程序和在主机端使用初始化程序的方法,实现PCI设备管理器对主机端PCI设备的枚举和访问。
通过PCI设备管理器这个通用的软硬件平台,实现了PCI设备管理器与其它所有的PCI设备的无需修改PCI设备驱动就能实现的P2P数据传输,大大简化了P2P的实现难度以及在生产环境的无侵入支持。
本公开提出通过在主机系统的PCI总线插槽中插入专用硬件(PCI设备管理器)并安装相关软件模块实现通用P2P架构的方法。硬件模块包括设备CPU、DMA引擎模块、内存映射模块和设备内存。软件模块包括主机端初始化程序和硬件模块中运行的程序。主机端初始化程序会在初始化时会将硬件模块的设备内存暴露给主机,并通过初始化程序使需要执行P2P的PCI设备可以被设备管理器枚举和访问,从而能让PCI设备管理器在无需修改主机侧目标P2P设备驱动的情况下,与主机侧其它的PCI设备直接实现P2P数据传输。硬件模块中的程序负责处理所有设备间的数据传输。数据传输过程完全旁路了主机端CPU和内存,并兼容各种PCI设备,实现通用的P2P架构。
通过主机CPU上运行的初始话程序和可编程DMA引擎,实现了PCI设备管理器直接访问其它PCI设备的配置空间和BAR空间,从而无需主机侧的设备驱动修改就可以以P2P方式访问其它PCI设备,整个过程完全旁路主机端的CPU和内存资源,很好地解决了现有P2P通信方案中对主机端CPU和内存资源占用的问题。
由于专用硬件部署的灵活性,本公开提出的方案不需要对现有服务器硬件架构进行其它改造,避免现有P2P通信方案中需要对服务器网络进行改造的问题。
同时,由于采用了PCI设备模拟(枚举)的方法,在PCI设备管理器中可以使用标准的PCI设备驱动操作设备,避免了需要针对每一个PCI设备开发专用驱动而导致通用性差的问题。
图5示出了根据本发明一实施例可用于实现上述PCI设备管理器初始化方法以及实现PCI设备间P2P数据传输的方法的计算设备的结构示意图。
参见图5,计算设备500包括存储器510和处理器520。
处理器520可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器520可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(GPU)、数字信号处理器(DSP)等等。在一些实施例中,处理器520可以使用定制的电路实现,例如特定用途集成电路(ASIC,Application Specific Integrated Circuit)或者现场可编程逻辑门阵列(FPGA,Field Programmable Gate Arrays)。
存储器510可以包括各种类型的存储单元,例如系统内存、只读存储器(ROM),和永久存储装置。其中,ROM可以存储处理器520或者计算机的其它模块需要的静态数据或者指令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器510可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(DRAM,SRAM,SDRAM,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器510可以包括可读和/或写的可移除的存储设备,例如激光唱片(CD)、只读数字多功能光盘(例如DVD-ROM,双层DVD-ROM)、只读蓝光光盘、超密度光盘、闪存卡(例如SD卡、min SD卡、Micro-SD卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
存储器510上存储有可执行代码,当可执行代码被处理器520处理时,可以使处理器520执行上文述及的PCI设备管理器初始化方法以及实现PCI设备间P2P数据传输的方法。
上文中已经参考附图详细描述了根据本发明的PCI设备管理器以及实现PCI设备间P2P数据传输的方法。
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (11)
1.一种PCI设备管理器,用于实现PCI设备之间的点对点数据传输,包括:
直接存储器存取DMA引擎模块,连接到主机总线,以通过DMA方式实现与主机和PCI设备之间的数据和命令通信;
设备内存;
内存映射模块,将所述设备内存的数据缓存空间映射到主机内存的物理地址空间,以便在运行过程中经由DMA引擎模块与PCI设备进行数据通信和/或命令通信;
处理器,通过DMA引擎模块向主机发送PCI设备配置指令,并为主机发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信,
其中,为主机发现的PCI设备分别创建PCI设备对象包括:
在设备内存中为所发现的PCI设备分别配置数据缓存空间;以及
在设备内存中为所发现的PCI设备分别注册相应的队列。
2.根据权利要求1所述的PCI设备管理器,其中,对于请求访问数据的PCI设备,
所述队列包括工作队列,处理器从所述工作队列读取其对应的PCI设备写入的数据访问命令;并且/或者
所述队列包括完成队列,处理器通过在所述设备内存中为PCI设备注册的完成队列中写入完成队列元素来向PCI设备通知命令执行完成。
3.根据权利要求1所述的PCI设备管理器,其中,对于存储数据的PCI设备,
所述队列包括工作队列,所述处理器将数据访问命令写入设备内存中为所述PCI设备注册的工作队列;并且/或者
所述队列包括工作队列,处理器通过向所述PCI设备的门铃寄存器写入通知消息,以通知所述PCI设备从所述设备内存中为其注册的工作队列读取数据访问命令;并且/或者
所述队列包括完成队列,所述PCI设备通过在所述设备内存中为其注册的完成队列中写入完成队列元素,来向PCI设备管理器通知命令执行完成。
4.根据权利要求2或3所述的PCI设备管理器,其中,
所述数据访问命令指定所述设备内存中本次数据访问操作所要使用的数据缓存地址。
5.根据权利要求1所述的PCI设备管理器,其中,当第一PCI设备请求读取第二PCI设备上存储的数据时:
由第一PCI设备在设备内存中为其注册的第一工作队列中写入针对第二PCI设备的第一读命令,所述第一读命令包括请求读取的数据信息和所述设备内存中的指定数据缓存地址;
所述处理器将第一数据读命令转换为对应于第二PCI设备的第二读命令,所述第二读命令包括请求读取的数据信息和所述设备内存中的所述指定数据缓存地址;
将第二读命令写入设备内存中为第二PCI设备注册的第二工作队列;
通过DMA引擎模块在第二PCI设备的门铃寄存器中写入通知消息,以通知第二PCI设备从第二工作队列读取第二读命令;
由第二PCI设备响应于所述通知消息将请求读取的数据写入到所述指定数据缓存区;
响应于第二PCI设备数据发送操作完成,通过DMA引擎模块在第一PCI设备的门铃寄存器中写入通知消息,以通知第一PCI设备从所述指定数据缓存区读取数据。
6.根据权利要求1所述的PCI设备管理器,其中,当第一PCI设备请求将数据写入第二PCI设备时:
由第一PCI设备在设备内存中为其注册的第一工作队列中写入针对第二PCI设备的第一写命令,所述第一写命令包括所述设备内存中的指定数据缓存地址;
由第一PCI设备在所述设备内存中的指定数据缓存地址中写入数据;
所述处理器将第一写命令转换为对应于第二PCI设备的第二写命令,所述第二写命令包括所述设备内存中的所述指定数据缓存地址;
将第二写命令写入设备内存中为第二PCI设备注册的第二工作队列;
通过DMA引擎模块在第二PCI设备的门铃寄存器中写入通知消息,以通知第二PCI设备从第二工作队列读取第二写命令。
7.根据权利要求5或6所述的PCI设备管理器,其中,
第一PCI设备是网络接口控制器,第二PCI设备是固态硬盘。
8.一种计算系统,包括:
主机,所述主机包括主机内存、主机CPU以及主机总线;
多个PCI设备,连接到主机总线;以及
根据权利要求1至7中任何一项所述的PCI设备管理器,连接到主机总线,
其中,所述多个PCI设备之间通过所述PCI设备管理器实现数据和命令的通信。
9.一种PCI设备管理器初始化方法,适于在根据权利要求8所述的计算系统中的主机CPU执行,该方法包括:
通过主机的PCI基地址寄存器空间,将PCI设备管理器中的设备内存注册到主机内存的物理地址空间中;
接收PCI设备管理器的处理器上运行的程序发送的PCI设备配置指令;
执行PCI设备枚举指令,以发现连接到所述主机总线的PCI设备;
将所发现的PCI设备的信息发送给PCI设备管理器;以及
向所发现的PCI设备下发所述PCI设备配置指令。
10.一种PCI设备管理器初始化方法,适于在根据权利要求8所述的计算系统中的PCI设备管理器的处理器执行,该方法包括:
向所述主机发送PCI设备配置指令;以及
基于从所述主机返回的主机所发现的PCI设备的信息,为所发现的PCI设备分别创建PCI设备对象,以便在运行过程中通过PCI设备对象实现与PCI设备之间的数据通信和/或命令通信。
11.一种非暂时性机器可读存储介质,其上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求9或10所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210111761.9A CN114138702B (zh) | 2022-01-29 | 2022-01-29 | 计算系统、pci设备管理器及其初始化方法 |
PCT/CN2023/073541 WO2023143504A1 (zh) | 2022-01-29 | 2023-01-28 | 计算系统、pci设备管理器及其初始化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210111761.9A CN114138702B (zh) | 2022-01-29 | 2022-01-29 | 计算系统、pci设备管理器及其初始化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114138702A CN114138702A (zh) | 2022-03-04 |
CN114138702B true CN114138702B (zh) | 2022-06-14 |
Family
ID=80381898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210111761.9A Active CN114138702B (zh) | 2022-01-29 | 2022-01-29 | 计算系统、pci设备管理器及其初始化方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114138702B (zh) |
WO (1) | WO2023143504A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138702B (zh) * | 2022-01-29 | 2022-06-14 | 阿里云计算有限公司 | 计算系统、pci设备管理器及其初始化方法 |
CN114389947B (zh) * | 2022-03-24 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 数据传输方法、系统及计算机可读存储介质 |
CN115080479B (zh) * | 2022-06-14 | 2024-03-26 | 阿里巴巴(中国)有限公司 | 传输方法、服务器、设备、裸金属实例及基板管理控制器 |
CN115858160B (zh) * | 2022-12-07 | 2023-12-05 | 江苏为是科技有限公司 | 远程直接内存访问虚拟化资源分配方法及装置、存储介质 |
CN115904520B (zh) * | 2023-03-13 | 2023-06-06 | 珠海星云智联科技有限公司 | 基于pcie拓扑状态变更的配置保存方法及相关设备 |
CN117234998B (zh) * | 2023-09-12 | 2024-06-07 | 中科驭数(北京)科技有限公司 | 一种多主机数据访问方法及系统 |
CN117290263B (zh) * | 2023-09-27 | 2024-10-18 | 中科驭数(北京)科技有限公司 | 一种用于大容量bar空间的大页映射实现方法及系统 |
CN117170744B (zh) * | 2023-11-03 | 2024-01-23 | 珠海星云智联科技有限公司 | DPU的OptionRom功能实现方法及相关装置 |
CN118519586A (zh) * | 2024-07-19 | 2024-08-20 | 芯潮流(珠海)科技有限公司 | 一种实现固态硬盘数据通道虚拟化的方法和装置 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1193393A (zh) * | 1995-06-15 | 1998-09-16 | 英特尔公司 | 集成pci至pci桥的i/o处理器的体系结构 |
CN102981892A (zh) * | 2008-12-08 | 2013-03-20 | 辉达公司 | 用于不同种类处理单元的集中式设备虚拟化层 |
CN103885900A (zh) * | 2012-12-20 | 2014-06-25 | 北京华为数字技术有限公司 | 数据访问处理方法、PCIe设备和用户设备 |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和系统 |
CN109710548A (zh) * | 2018-12-21 | 2019-05-03 | 荆门博谦信息科技有限公司 | 一种dma控制数据传输方法、系统及设备 |
CN111133425A (zh) * | 2018-01-02 | 2020-05-08 | 英特尔公司 | 输入/输出(i/o)存储器管理单元的基于硬件的虚拟化 |
CN112416826A (zh) * | 2020-11-20 | 2021-02-26 | 成都海光集成电路设计有限公司 | 专用计算芯片、dma数据传输系统及方法 |
CN112925737A (zh) * | 2021-03-30 | 2021-06-08 | 上海西井信息科技有限公司 | Pci异构系统数据融合方法、系统、设备及存储介质 |
CN113296691A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法、装置以及电子设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7457900B2 (en) * | 2006-06-20 | 2008-11-25 | Intel Corporation | Method for discovering and partitioning PCI devices |
US8225019B2 (en) * | 2008-09-22 | 2012-07-17 | Micron Technology, Inc. | SATA mass storage device emulation on a PCIe interface |
JP2014063497A (ja) * | 2012-09-21 | 2014-04-10 | Plx Technology Inc | 論理装置の機能を有するpciエクスプレススイッチ |
US9311230B2 (en) * | 2013-04-23 | 2016-04-12 | Globalfoundries Inc. | Local direct storage class memory access |
US8949486B1 (en) * | 2013-07-17 | 2015-02-03 | Mellanox Technologies Ltd. | Direct memory access to storage devices |
US9304690B2 (en) * | 2014-05-07 | 2016-04-05 | HGST Netherlands B.V. | System and method for peer-to-peer PCIe storage transfers |
CN107992436B (zh) * | 2016-10-26 | 2021-04-09 | 华为技术有限公司 | 一种NVMe数据读写方法及NVMe设备 |
CN112463714B (zh) * | 2020-11-30 | 2022-12-16 | 成都海光集成电路设计有限公司 | 远程直接内存访问方法、异构计算系统及电子设备 |
CN114138702B (zh) * | 2022-01-29 | 2022-06-14 | 阿里云计算有限公司 | 计算系统、pci设备管理器及其初始化方法 |
-
2022
- 2022-01-29 CN CN202210111761.9A patent/CN114138702B/zh active Active
-
2023
- 2023-01-28 WO PCT/CN2023/073541 patent/WO2023143504A1/zh unknown
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1193393A (zh) * | 1995-06-15 | 1998-09-16 | 英特尔公司 | 集成pci至pci桥的i/o处理器的体系结构 |
CN102981892A (zh) * | 2008-12-08 | 2013-03-20 | 辉达公司 | 用于不同种类处理单元的集中式设备虚拟化层 |
CN103885900A (zh) * | 2012-12-20 | 2014-06-25 | 北京华为数字技术有限公司 | 数据访问处理方法、PCIe设备和用户设备 |
CN105159742A (zh) * | 2015-07-06 | 2015-12-16 | 北京星网锐捷网络技术有限公司 | 一种虚拟机pci设备透传方法和系统 |
CN111133425A (zh) * | 2018-01-02 | 2020-05-08 | 英特尔公司 | 输入/输出(i/o)存储器管理单元的基于硬件的虚拟化 |
CN109710548A (zh) * | 2018-12-21 | 2019-05-03 | 荆门博谦信息科技有限公司 | 一种dma控制数据传输方法、系统及设备 |
CN113296691A (zh) * | 2020-07-27 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理系统、方法、装置以及电子设备 |
CN112416826A (zh) * | 2020-11-20 | 2021-02-26 | 成都海光集成电路设计有限公司 | 专用计算芯片、dma数据传输系统及方法 |
CN112925737A (zh) * | 2021-03-30 | 2021-06-08 | 上海西井信息科技有限公司 | Pci异构系统数据融合方法、系统、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
PCIE高速数据传输系统设计;赵珊珊;《电脑知识与技术》;20170228(第04期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114138702A (zh) | 2022-03-04 |
WO2023143504A1 (zh) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114138702B (zh) | 计算系统、pci设备管理器及其初始化方法 | |
CN110647480B (zh) | 数据处理方法、远程直接访存网卡和设备 | |
EP3796179A1 (en) | System, apparatus and method for processing remote direct memory access operations with a device-attached memory | |
US11829309B2 (en) | Data forwarding chip and server | |
KR102471219B1 (ko) | NVMe 기반의 데이터 판독 방법, 장치, 및 시스템 | |
CN115495389B (zh) | 存储控制器、计算存储装置以及计算存储装置的操作方法 | |
US7672828B2 (en) | Memory access to virtual target device | |
US11907814B2 (en) | Data path for GPU machine learning training with key value SSD | |
CN113742269B (zh) | 用于epa设备的数据传输方法、处理设备和介质 | |
US11741039B2 (en) | Peripheral component interconnect express device and method of operating the same | |
WO2023174146A1 (zh) | 卸载卡命名空间管理、输入输出请求处理系统和方法 | |
CN110865868A (zh) | 一种低延迟控制方法、装置及其设备 | |
TWI797022B (zh) | 儲存控制器、計算儲存裝置以及計算儲存裝置的操作方法 | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
CN117591450B (zh) | 一种数据处理系统、方法、设备及介质 | |
CN117555832A (zh) | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 | |
US20150326684A1 (en) | System and method of accessing and controlling a co-processor and/or input/output device via remote direct memory access | |
US11386031B2 (en) | Disaggregated switch control path with direct-attached dispatch | |
KR20050080704A (ko) | 프로세서간 데이터 전송 장치 및 방법 | |
US20140052879A1 (en) | Processor, information processing apparatus, and interrupt control method | |
KR20090128605A (ko) | 버스트 전송이 가능한 프로세서간 통신 장치, 프로세서간통신 장치를 포함하는 시스템 및 프로세서간 통신 장치를구동하기 위한 디바이스 드라이버 | |
CN118519586A (zh) | 一种实现固态硬盘数据通道虚拟化的方法和装置 | |
CN117971135B (zh) | 存储设备的访问方法、装置、存储介质和电子设备 | |
WO2023226885A1 (zh) | 一种内存访问方法及相关设备 | |
Liu et al. | Development of the Embedded Multi Media Card Platform Based on FPGA |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40070779 Country of ref document: HK |