CN116150056A - 基于PCIe的数据传输方法和装置 - Google Patents

基于PCIe的数据传输方法和装置 Download PDF

Info

Publication number
CN116150056A
CN116150056A CN202310070869.2A CN202310070869A CN116150056A CN 116150056 A CN116150056 A CN 116150056A CN 202310070869 A CN202310070869 A CN 202310070869A CN 116150056 A CN116150056 A CN 116150056A
Authority
CN
China
Prior art keywords
data
memory
processor
read
cache
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
Application number
CN202310070869.2A
Other languages
English (en)
Inventor
戴月华
朱千斌
周文强
巩云峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Original Assignee
Samsung China Semiconductor Co Ltd
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung China Semiconductor Co Ltd, Samsung Electronics Co Ltd filed Critical Samsung China Semiconductor Co Ltd
Priority to CN202310070869.2A priority Critical patent/CN116150056A/zh
Publication of CN116150056A publication Critical patent/CN116150056A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供了一种基于外围组件互连高速(Peripheral Component Interconnect express,PCIe)的数据传输方法和装置。所述方法包括:从基于PCIe与端点(Endpiont,EP)连接的根复合体RC接收门铃DB消息;所述EP的处理器以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息;响应于接收到所述读请求消息,所述DMA控制器从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。

Description

基于PCIe的数据传输方法和装置
技术领域
本申请涉及数据传输技术领域,更具体地,涉及一种基于外围组件互连快件(Peripheral Component Interconnect express,PCIe)的数据传输方法和装置。
背景技术
PCIe作为第三代总线技术规范,它具备高带宽、低延时、灵活扩展、支持热插拔、错误处理和错误报告等特点,因此PCIe总线被广泛地用于实现外设之间以及外设与主机之间的高速数据传输。
然而,当基于PCIe总线传输数据量大的包时,虽然传输带宽接近原始带宽,但传输时延大;传输小数据量的数据时,传输带宽低,并且同时存在频繁响应中断信号和初始化直接内存访问(Direct Memory Access,DMA)控制器的现象,这导致CPU开销增大。
因此,如何进一步提高基于PCIe的数据传输性能是亟需解决的问题。
发明内容
本发明的目的在于提供一种能够在提高基于PCIe的数据传输性能的同时,降低实施成本的基于PCIe的数据传输方法和装置。所述方法和装置通过以轮询的方式通知DMA控制器从根复合体(Root Complex,RC)的内存中读取数据,并以轮询方式确定RC的内存中是否存在DMA控制器写入的数据来提高基于PCIe的数据传输性能。
根据本公开的示例性实施例的一方面,提供了一种基于外围组件互连高速PCIe的数据传输方法,包括:从基于PCIe与端点(Endpoint,EP)连接的根复合体RC接收门铃DB消息;所述EP的处理器以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息;响应于接收到所述读请求消息,所述DMA控制器从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
根据本公开的实施例,当接收到DB消息时,EP的处理器即轮询通知DMA控制器从RC的内存中读取数据,这样,即便有DB消息丢失,由于DMA控制器被轮询通知从RC端的内存中读取数据,因此,与丢失的DB消息相应的数据也会被DMA控制器读取到,从而避免了数据丢失。另外,由于DMA控制器被轮询通知从RC端的内存中读取数据,这样避免了DMA控制器的频繁初始化,同时也不用频繁去响应后续的DB消息,因为处理器在轮询通知DMA控制器读取RC的内存中的数据,即便不响应后续DB消息,与后续DB消息相应的数据也会被DMA控制器读取,这减少了频繁中断上下文切换带来的处理器额外开销和占用率,降低了数据传输的延迟。
可选地,所述方法还包括:当确定所述RC的内存中不再存在所述待传输的数据时,所述EP的处理器停止向所述DMA控制器发送读请求消息。
可选地,所述方法还包括:当从所述RC的内存中读取的数据中包括数据结束符时,所述EP的处理器确定所述RC的内存中不再存在所述待传输的数据。
根据本公开的实施例,当从RC的内存读取到数据结束符时,说明书RC内存中已经不存在待传输的数据,因此可以停止向所述DMA控制器发送读请求消息,从而避免不必要的轮询发送读请求消息的操作。
可选地,所述EP的处理器在可缓存模式下运行,所述方法还包括:响应于读取的数据被写入所述EP的内存,所述EP的处理器将所述EP的处理器的第一缓存中的数据置为无效后,将所述读取的数据从所述EP的内存写入所述第一缓存;和\或响应于接收到发送数据的请求,所述EP的处理器将待发送的数据写入所述EP的处理器的第二缓存;所述EP的处理器将所述待发送的数据从所述第二缓存刷入所述EP的内存;所述DMA控制器将所述待发送的数据从所述EP的内存写入所述RC的内存。
根据本公开的实施例,在将EP的内存中的数据写入EP的缓存之前,将EP的缓存中的数据置无效,可以保证从EP的缓存中获取到的数据是来自EP的内存中的最新数据。另外,在发送数据时,将EP的处理器的第二缓存中的数据刷入EP的内存,可以保证第二缓存中的数据被写入到RC的内存中。
可选地,所述方法还包括:在将待发送的数据写入所述EP的缓存后,所述EP的处理器将数据结束符写入所述EP的处理器的第二缓存,以及将所述数据结束符从所述第二缓存刷入所述EP的内存。
根据本公开的实施例,由于第二缓存中的数据会被传输到RC的内存,因此通过将数据结束符写入第二缓存,这样RC的处理器从RC的内存中读取数据时,当读取到该数据结束符时,可确定RC的内存中不再存在数据,从而停止从RC的内存中读取数据。
可选地,所述DMA控制器从所述RC的内存中读取数据的步骤包括:所述DMA控制器以预设长度读取所述RC的内存中的数据包;其中,所述方法还包括:确定读取的数据包的计数是否是预定数量的整数倍,如果读取的数据包的计数是预定数量的整数倍,确定所述预设长度是否大于最近读取的预定数量的数据包中的具有最大长度的数据包的长度,当确定所述预设长度大于读取的预定数量的数据包中的具有最大长度的数据包的长度时,将所述预定长度更新为所述最大长度,如果读取的数据包的计数不是预定数值的整数倍,由所述EP的处理器基于读取的所述数据包的数据确定所述数据包的数据长度是否大于预设长度,当确定所述数据包的数据长度大于所述预设长度时,将所述预设长度更新为所述数据包的数据长度,以及当确定所述数据包的数据长度大于所述预设长度时,所述DMA控制器以所述数据包的数据长度重新读取所述数据包。
根据本公开的实施例,通过更新预设长度,可以提高读取数据的效率。
根据本公开的实施例的另一方面,提供了一种基于外围组件互连高速PCIe的数据传输方法,包括:接收从基于PCIe与根复合体RC连接的端点EP发送的消息信号中断MSI消息;所述RC的处理器以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
根据本公开的实施例,由于RC的处理器响应于MSI消息以轮询的方式从RC的内存中读取数据,这可以避免即便MSI消息丢失,与该MSI消息相应的数据也会被RC的处理器读取。另外,由于处理器轮询读取RC的内存中的数据,因此,可以不用频繁响应后续的MSI消息,从而节省处理器开销,提高数据传输性能。
可选地,所述方法还包括:当确定所述RC的内存中不再存在数据时,所述RC的处理器停止以轮询的方式读取数据。
可选地,所述方法还可包括:当所述RC的处理器从所述RC的内存中读取的数据包括数据结束符时,所述RC的处理器确定所述RC的内存中不再存在数据。
可选地,所述RC的处理器在可缓存模式下运行,所述方法还包括:响应于以轮询的方式读取所述RC的内存中的数据,所述RC的处理器将RC的处理器的第三缓存中的数据置为无效后,将所述读取的数据写入所述第三缓存中;和\或响应于接收到发送数据的请求,所述RC的处理器将待发送的数据写入所述RC的处理器的第四缓存中;所述RC的处理器将所述待发送的数据从所述RC的第四缓存刷入所述RC的内存;所述RC的处理器向所述EP发送门铃DB消息。
根据本公开的实施例,在将RC的内存中的数据写入RC的第三缓存之前,将RC的第三缓存中的数据置无效,可以保证从RC的第三缓存中获取到的数据是来自RC的内存的最新数据。另外,在发送数据时,将RC的处理器的第四缓存中的数据输入RC的内存,可以保证第四缓存中的数据能够被写入到EP的内存中。
可选地,所述方法还包括:在将所述数据写入所述RC的第四缓存后,所述RC的处理器将数据结束符写入所述RC的第四缓存,以及将所述数据结束符从所述第四缓存刷入RC的内存。
根据本公开的实施例,由于第四缓存中的数据会被传输到RC的内存,因此通过将数据结束符写入第四缓存,这样DMA从RC的内存中读取数据时,当读取到该数据结束符时,可确定RC的内存中不再存在数据,此时DMA而停止从RC的内存中读取数据。
根据本公开的实施例的另一方面,提供了一种端点EP,所述EP基于外围组件互连高速PCIe与根复合体RC连接,其中,所述EP包括:接收单元,被配置为从基于PCIe与端点EP连接的根复合体RC接收门铃DB消息;处理器,被配置为以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息;所述DMA控制器,被配置为响应于接收到所述读请求消息,从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
可选地,所述处理器还被配置为:当确定所述RC的内存中不再存在所述待传输的数据时,停止向所述DMA控制器发送读请求消息。
可选地,所述处理器还被配置为:当从所述RC的内存中读取的数据中包括数据结束符时,确定所述RC的内存中不再存在所述待传输的数据。
可选地,所述处理器在可缓存模式下运行,所述处理器还被配置为:响应于读取的数据被写入所述EP的内存,将所述处理器的第一缓存中的数据置为无效后,将所述读取的数据从所述EP的内存写入所述第一缓存;和\或响应于接收到发送数据的请求,将待发送的数据写入所述处理器的第二缓存,将所述待发送的数据从所述第二缓存刷入所述EP的内存,以及其中,所述DMA控制器还被配置为:将所述待发送的数据从所述EP的内存写入所述RC的内存。
可选地,所述处理器还被配置为:在将待发送的数据写入所述EP的处理器的第二缓存后,将数据结束符写入所述EP的处理器的第二缓存,以及将所述数据结束符从所述第二缓存输入所述EP的内存。
可选地,所述DMA控制器被配置为:以预设长度读取所述RC的内存中的数据包;以及其中,所述处理器还被配置为:确定读取的数据包的计数是否是预定数量的整数倍,如果读取的数据包的计数是预定数量的整数倍,确定所述预设长度是否大于最近读取的预定数量的数据包中的具有最大长度的数据包的长度,当确定所述预设长度大于读取的预定数量的数据包中的具有最大长度的数据包的长度时,将所述预定长度更新为所述最大长度,如果读取的数据包的计数不是预定数值的整数倍,基于读取的所述数据包的数据确定所述数据包的数据长度是否大于预设长度,当确定所述数据包的数据长度大于所述预设长度时,将所述预设长度更新为所述数据包的数据长度,以及其中,所述DMA控制器还被配置为:当确定所述数据包的数据长度大于所述预设长度时,以所述数据包的数据长度重新读取所述数据包。
根据本公开的实施例的另一方面,提供了一种根复合体RC,所述RC基于外围组件互连高速PCIe与端点EP连接,其中,所述RC包括:接收单元,被配置为:接收从所述EP发送的消息信号中断MSI消息;处理器,被配置为以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
可选地,所述处理器还被配置为:当确定所述RC的内存中不再存在数据时,停止以轮询的方式读取数据。
可选地,所述处理器在可缓存模式下运行,所述处理器还被配置为:响应于以轮询的方式读取所述RC的内存中的数据,将RC的处理器的第三缓存中的数据置为无效后,将所述读取的数据写入所述第三缓存中;和\或响应于接收到发送数据的请求,将待发送的数据写入所述RC的处理器的第四缓存中;将所述待发送的数据从所述RC的第四缓存刷入所述RC的内存;以及向所述EP发送门铃DB消息。
可选地,所述处理器还被配置为:在将所述数据写入所述RC的第四缓存后,将数据结束符写入所述RC的第四缓存,以及将所述数据结束符从所述第四缓存刷入所述RC的内存。
可选地,所述处理器还被配置为:当所述RC的处理器从所述RC的内存中读取的数据包括数据结束符时,确定所述RC的内存中不再存在数据。
根据本公开的实施例的另一方面,提供了一种一种存储有计算机程序的非暂时性计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器执行如上所述的基于PCIe的数据传输方法。
根据本公开的实施例的另一方面,提供了一种电子装置,包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如上所述的基于PCIe的数据传输方法。
附图说明
通过下面结合示例性地示出实施例的附图进行的描述,本发明的上述和其他目的和特点将会变得更加清楚,其中:
图1示出了基于PCIe的数据传输示意图;
图2示出了根据本公开的实施例的基于PCIe的数据传输方法的流程图;
图3示出了根据本公开的实施例的EP的消息模块状态变化的示意图;
图4示出了DMA控制器按照读请求消息和写请求消息的接收时间的先后顺序响应请求消息和写请求消息的步骤的示例的示意图;
图5是示出根据本公开的实施例的数据包结构的示意图;
图6示出了根据本公开的实施例的基于PCIe的数据传输方法的流程图;
图7示出了根据本公开的实施例的RC的消息模块的状态变化的示意图;
图8示出了根据本公开的实施例的基于PCIe传输数据的方法的示意图;
图9是示出根据本公开的实施例的EP的结构的框图;以及
图10是示出根据本公开的实施例的RC的结构的框图。
具体实施方式
在下文中,参照附图对本公开的各种示例性实施例进行描述,其中,相同的标号用于表示相同或相似的元件、特征和结构。然而,不旨在由本文所述的各种实施例将本公开限制于具体实施例,并且旨在于:本公开覆盖本公开的所有修改、等同物和/或替代物,只要它们在所附权利要求及其等同物的范围内。在以下说明书和权利要求书中使用的术语和词语不限于它们的词典含义,而是仅被用于使得能够清楚和一致地理解本公开。因此,对于本领域技术人员应显而易见的是:提供本公开的各种实施例的以下描述仅用于说明的目的,而不是为了限制由所附权利要求和它们的等同物限定的本公开的目的。
应理解,除非上下文另外明确指出,否则单数形式包括复数形式。本文使用的术语“包括”、“包含”和“具有”指示公开的功能、操作或元件的存在,但不排除其它功能、操作或元件。
例如,表述“A或B”、或“A和/或B中的至少一个”可指示A和B、A或者B。例如,表述“A或B”或“A和/或B中的至少一个”可指示(1)A、(2)B或(3)A和B两者。
在本公开的各种实施例中,意图是:当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“耦接”或“连接”或者被“耦接”或者“连接”到另一组件(例如,第二组件)时,所述组件可被直接连接到所述另一组件,或者可通过另一组件(例如,第三组件)被连接。相比之下,当组件(例如,第一组件)被称为与另一组件(例如,第二组件)“直接耦接”或“直接连接”或者被直接耦接到或直接连接到另一组件(例如,第二组件)时,在所述组件和所述另一组件之间不存在另一组件(例如,第三组件)。
在描述本公开的各种实施例中使用的表述“被配置为”可以例如根据情况与诸如“适用于”、“具有…的能力”、“被设计为”、“适合于”、“被制造为”和“能够”的表述互换使用。术语“被配置为”可不一定指示按照硬件“被专门设计为”。相反,在一些情况下的表述“被配置为...的装置”可指示所述装置和另一装置或者部分“能够…”。例如,表述“被配置为执行A、B和C的处理器”可指示用于执行相应操作的专用处理器(例如,嵌入式处理器)或用于通过执行存储在存储器装置中的至少一个软件程序来执行相应的操作的通用处理器(例如,中央处理单元CPU或应用处理器(AP))。
本文使用的术语在于描述本公开的某些实施例,但并不旨在限制其它实施例的范围。除非本文另外指出,否则本文使用的所有术语(包括技术或科学术语)可具有与本领域技术人员通常理解的含义相同含义。通常,词典中定义的术语应被视为具有与相关领域中的上下文含义相同的含义,并且,除非本文明确地定义,否则不应被不同地理解或被理解为具有过于正式的含义。在任何情况下,本公开中定义的术语也不旨在被解释为排除本公开的实施例。
图1示出了基于PCIe的数据传输示意图。
参照图1,数据从基于PCIe连接的两端中的一端发送到另一端,需要执行3次数据拷贝:
第一次数据拷贝:发送端(或发送端(例如,RC端)的处理器)可通过PCIe软件栈的接口模块将数据从发送端用户内存拷贝到发送端的内存,其中,发送端的内存可指发送端的处理器的内存或者发送端的PCIe控制器的内存;
第二次数据拷贝:接收端(或接收端(例如,EP端)的处理器)通过DMA控制器将数据从发送端的内存拷贝到接收端的内存,其中,接收端的内存可指接收端的处理器的内存或者接收端的PCIe控制器的内存;
第三次数据拷贝:接收端(或接收端(例如,EP端)的处理器)通过PCIe软件栈的接口模块将数据从接收端的内存拷贝到接收端的用户内存。
由于基于PCIe传输数据时,接收端或发送端的处理器(或PCIe控制器)的缓存和内存的数据不同步,因此,接收端或发送端的处理器或PCIe控制器在不可缓存模式下运行时,数据不能从处理器的缓存拷贝到内存,而只能从用户内存逐字节拷贝到处理器的内存中,这样使得数据传输带宽远低于原始PCIe的传输带宽。
另外,在RC端向EP端发送数据时,在一些场景中,DMA控制器仅存在于EP端,RC端通过PCIe软件栈的消息模块发送DB消息(或DB中断)到EP端,EP接收RC端的PCIe栈中的消息模块发送的DB消息,通知DMA控制器执行读操作,DMA控制器将RC端的PCIe控制器内存中的数据读取到EP端PCIe控制器的内存。由于RC端每发送一个数据需要向EP端发送一个DB消息,因此,可能存在如下问题:
(1)RC发送的DB消息可能丢失,在这种情况下,由于EP未接收到该DB消息,因此DMA控制器不会去读取RC内存中的数据,从而导致数据丢失。
(2)EP的处理器频繁的响应DB中断时,中断上下文切换会增加EP的处理器的开销。
同样地,当EP端向RC端发送MSI(Message Signaled Interrupt,消息发出信号中断)消息时,同样可能存在MSI消息丢失以及频繁响应MSI消息的问题。
本申请提出的基于PCIe的数据传输方法和装置至少可以避免在丢失DB消息和/或MSI消息时保证数据传输的可靠性,同时能够提升数据传输速度。
本领域技术人员应当理解,本申请所述的RC和EP指示基于PCIe连接的两个电子装置,其中,RC指示不具有DMA控制器的一个电子装置,EP指示具有DMA控制器的另一电子装置。
另外,本领域技术人员应当理解,本文所述的RC可包括处理器(或PCIe控制器)、缓存(处理器的缓存或PCIe控制器的缓存)、内存(PCIe控制器的内存或处理器的内存)。EP可包括处理器(或PCIe控制器)、缓存(处理器的缓存或PCIe控制器的缓存)、内存(PCIe控制器的内存或处理器的内存)和DMA控制器。
本领域技术人员应当理解,当RC向EP发送数据时,需要RC将待发送数据写入RC的内存中,当从EP接收数据时,由EP的DMA控制器将EP的内存中的数据写到RC的内存。本领域技术人员应当理解,发送数据时使用的RC的内存和接收数据时使用的RC的内存可以是RC的不同内存、同一内存或者RC的同一内存的不同区域。
当EP向RC发送数据时,需要EP将待发送数据写入EP的内存中,当从RC接收数据时,由EP的DMA控制器将RC的内存中的数据读取到EP的内存。本领域技术人员应当理解,发送数据时使用的EP的内存和接收数据时使用的EP的内存可以是EP的不同内存、同一内存或者EP的同一内存的不同区域。
图2示出了根据本公开的实施例的由EP执行的数据传输方法的流程图。
参照图2,在步骤S201,从基于PCIe与端点EP连接的根复合体RC接收门铃DB消息。
在步骤S202,所述EP的处理器以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息。。
本领域技术人员应当理解,轮询的间隔时间可为预定值。
作为示例,EP的处理器可以通过PCIe软件栈中的消息模块来以轮询的方式向所述DMA控制器发送读请求消息。
在步骤S203,响应于接收到所述读请求消息,所述DMA控制器从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
本领域技术人员应当理解,RC的内存中可存储需要由EP端的DMA控制器读取到EP端的数据。
根据本公开的实施例,当接收到DB消息时,EP的处理器即轮询通知DMA控制器从RC的内存中读取数据,这样,即便有DB消息丢失,由于DMA控制器被轮询通知从RC端的内存中读取数据,因此,与丢失的DB消息相应的数据也会被DMA控制器读取到,从而避免了数据丢失。另外,由于DMA控制器被轮询通知从RC端的内存中读取数据,这样避免了DMA控制器的频繁初始化,同时也不用频繁去响应后续的DB消息,因为处理器在轮询通知DMA控制器读取RC的内存中的数据,即便不响应后续DB消息,与后续DB消息相应的数据也会被DMA控制器读取,这减少了频繁中断上下文切换带来的处理器额外开销和占用率,降低了数据传输的延迟。作为示例,所述方法还包括:当确定所述RC的内存中不再存在所述待传输的数据时,所述EP的处理器停止向所述DMA控制器发送读请求消息。
作为示例,当从所述RC的内存中读取的数据中包括数据结束符时,所述EP的处理器确定所述RC的内存中不再存在所述待传输的数据。
根据本公开的实施例,当从RC的内存读取到数据结束符时,说明书RC内存中已经不存在待传输的数据,因此可以停止向所述DMA控制器发送读请求消息,从而避免不必要的轮询发送读请求消息的操作。
作为示例,所述EP的处理器在可缓存模式下运行,所述方法还包括:响应于读取的数据被写入所述EP的内存,所述EP的处理器将所述EP的处理器的第一缓存中的数据置为无效后,将所述读取的数据从所述EP的内存写入所述第一缓存;和\或响应于接收到发送数据的请求,所述EP的处理器将待发送的数据写入所述EP的处理器的第二缓存;所述EP的处理器将所述待发送的数据从所述第二缓存刷入所述EP的内存;所述DMA控制器将所述待发送的数据从所述EP的内存写入所述RC的内存。
由于EP的处理器在可缓存模式下运行,因此,当EP的内存中有数据时,EP的内存中的数据可以以缓存行为单位被拷贝到EP的缓存。此外,在将EP的内存中的数据写入EP的缓存之前,将EP的缓存中的数据置无效,可以保证从EP的缓存中获取到的数据是来自EP的内存中的最新数据。另外,在发送数据时,将EP的处理器的第二缓存中的数据输入EP的内存,可以保证第二缓存中的数据被写入到RC的内存中。本领域技术人员应当理解,第一缓存和第二缓存可以是EP的不同缓存、同一缓存的不同区域或者同一缓存。
图3示出了根据本公开的实施例的EP的消息模块状态变化的示意图。
参照图3,当接收到DB中断时,EP的消息模块从睡眠状态进入轮询状态,当确定RC的内存中存在数据时,继续轮序,当确定RC的内存中不存在数据时,进入睡眠状态。本领域技术人员应当理解,这里RC的内存中的数据指的是RC的内存中的需要从RC传输到EP的数据。
作为示例,所述方法还可包括:在将待发送的数据写入所述EP的处理器的第二缓存后,所述EP的处理器将数据结束符写入所述EP的处理器的第二缓存,以及将所述数据结束符从所述第二缓存输入所述EP的内存。
由于第二缓存中的数据会被传输到RC的内存,因此通过将数据结束符写入第二缓存,这样RC的处理器从RC的内存中读取数据时,当读取到该数据结束符时,可确定RC的内存中不再存在数据,从而停止从RC的内存中读取数据。
作为示例,所述方法还包括:由所述DMA控制器接收读请求消息和写请求消息,并按照读请求消息和写请求消息的接收时间的先后顺序响应请求消息和写请求消息,其中,读请求消息是由所述EP的处理器发送给所述DMA控制器的用于指令所述DMA控制器将所述RC的内存中的待读取数据读取到EP的内存的消息,写请求消息是由所述EP的处理器发送给所述DMA控制器的用于指令所述DMA控制器将所述EP的内存中的待发送数据写入到所述RC的内存的消息。
本领域技术人员应当理解,由于DMA控制器仅存在于EP端,因此,DMA控制器不仅要响应读请求消息,而且要响应写请求消息,为了在两端互发数据时合理分配带宽,可以根据DMA接收到消息的时间来响应消息,从而执行与接收到的消息相应的读操作或者写操作。
作为示例,由所述DMA控制器按照读请求消息和写请求消息的接收时间的先后顺序响应请求消息和写请求消息的步骤包括:由所述DMA控制器将写请求消息中的具有最早接收时间的写请求消息的接收时间和读请求消息中的具有最早接收时间的读请求消息的接收时间进行比较;当所述写请求消息的最早接收时间和所述读请求消息的最早接收时间不同时,所述DMA控制器响应接收时间早的一个消息,并将所述一个消息删除;当所述写请求消息的最早接收时间和所述读请求消息的最早接收时间相同时,所述DMA控制随机地响应所述写请求消息和所述读请求消息中的一个,然后再响应另一个。
根据本公开的实施例,可以优先响应接收时间早的读请求消息或写请求消息,当两个接收时间最早的读请求消息和写请求消息的接收时间相同时,通过随机地先后响应该两个消息,可以保证数据传输的公平性。本领域技术人员应当理解,当两个接收时间最早的读请求消息和写请求消息的接收时间相同时,还可以预先指定先响应读请求消息还是先响应写请求消息。
图4示出了DMA控制器按照读请求消息和写请求消息的接收时间的先后顺序响应请求消息和写请求消息的步骤的示例的示意图。
参照图4,由所述DMA控制器采用两个无锁队列管理写请求消息和读请求消息,其中,写请求消息队列由所述EP的处理器发送给所述DMA控制器的指令所述DMA控制器将所述EP的内存中的待发送数据写入到所述RC的内存的写请求消息构成,读请求消息队列由所述EP的处理器发送给所述DMA控制器的指令所述DMA控制器将所述RC的内存中待传输数据读取到所述EP的内存的读请求消息构成;由所述DMA控制器将写请求消息队列中的具有最早接收时间的写请求消息的接收时间和读请求消息队列中的具有最早接收时间的读请求消息的接收时间进行比较;当所述写请求消息的最早接收时间和所述读请求消息的最早接收时间不同时,所述DMA控制器响应接收时间早的一个消息,并将所述一个消息从队列中删除;当所述写请求消息的最早接收时间和所述读请求消息的最早接收时间相同时,所述DMA控制器随机地响应所述写请求消息和所述读请求消息中的一个,然后再响应另一个。
本领域技术人员应当理解,如果具有最早接收时间的读请求消息和写请求消息的接收时间不同,则在执行具有较早时间的消息后,将该消息删除,然而对剩余的读请求消息和写请求消息进行比较;如果具有最早接收时间的读请求消息和写请求消息的接收时间相同,则在执行随机地先后执行完该两个消息后,将该两个消息删除,然而对剩余的读请求消息和写请求消息进行重复的步骤。例如,对于按接收时间先后顺序排列的写请求消息队列中的第一写请求消息和接收时先后顺序排列的读请求消息队列中的第一读请求消息,如果第一写请求消息早于第一读请求消息的接收时间,则响应第一写请求消息,DMA控制器执行将EP的内存中的数据写到RC的内存中的操作,然后第一写请求消息被删除,接下来,比较更新后的队列中的第一读请求消息和第一写请求消息(该第一写请求消息在队列未更新前为第二写请求消息)的接收时间,并根据更新后的队列的第一读请求消息和第二写请求消息的接收时间确定先响应哪个消息。
本技术人员应当理解,DMA控制器可通过运行软件栈中的带宽分配管理模块来管理读请求消息和写请求消息。
作为示例,待发送的数据可以以数据包的形式被写入EP的缓存和内存。
作为示例,参照图5,数据包可由包头(Header)和有效数据(Payload)组成,其中,包头指示有效数据的数据长度(即数据包的数据长度)。
作为示例,在待发送的数据通过EP的缓存以数据包的形式写入EP的内存后,可将有效数据为结束符的数据包通过EP的缓存以数据包的形式写入EP的内存,并且在待发送的数据由DMA控制器发送到RC的内存后,将所述有效数据为结束符的数据包发送到RC的内存。
作为示例,当EP有数据需要发送时,EP端可调用PCIe_read接口将数据封装为“包头(数据长度)+数据”格式的数据包发送到EP的内存中,同时以信号量的方式通知EP端的消息模块。当无数据发送时,在无数据的位置写入一个数据结束符。消息模块感知到EP的内存中有数据需要发送时,通知DMA控制器执行写操作将EP的内存中的数据写入RC的内存。
本领域技术人员应当理解,每当EP的内存中的一个数据包中的数据被DMA控制器写入RC的内存后,由EP向RC发送MSI消息以通知RC从RC的内存中读取数据。
作为示例,当确定EP的内存中存在数据时,可调用PCIe_write接口向用户发送数据。此外,调用PCIe_write接口向用户发送数据之前需要执行对EP的缓存执行无效操作以保证EP端用户读取到的数据与EP的内存中的数据一致。
所述DMA控制器从所述RC的内存中读取数据的步骤包括:所述DMA控制器以预设长度读取所述RC的内存中的数据包;其中,所述方法还包括:确定读取的数据包的计数是否是预定数量的整数倍,如果读取的数据包的计数是预定数量的整数倍,确定所述预设长度是否大于最近读取的预定数量的数据包中的具有最大长度的数据包的长度,当确定所述预设长度大于读取的预定数量的数据包中的具有最大长度的数据包的长度时,将所述预定长度更新为所述最大长度,如果读取的数据包的计数不是预定数值的整数倍,由所述EP的处理器基于读取的所述数据包的数据确定所述数据包的数据长度是否大于预设长度,当确定所述数据包的数据长度大于所述预设长度时,将所述预设长度更新为所述数据包的数据长度,以及当确定所述数据包的数据长度大于所述预设长度时,所述DMA控制器以所述数据包的数据长度重新读取所述数据包作为示例,读取的数据包的计数可考虑当前正在读取的数据包或者不考虑当前正在读取的数据包。例如,如果正在读取的数据包是第99个数据包,则读取的数据包的计数可以是99或者98。
在现有技术中,当DMA控制器从RC的内存读取数据时,由于不清楚RC的内存中的待传输的数据包的长度,通常以最大数据包长度来读取数据。例如,RC的内存被划分为大小为65535字节的块(即数据包的最大长度为65535字节),在这种情况下,DMA控制器以65535字节为单位去读取RC的内存中的数据包,然而当RC的内存中的数据包的数据长度远小于65535字节时,显然仍然以65535字节为单位读取内存中的数据包会导致带宽浪费。
而根据本申请的技术方案,可以以小于65535字节的单位长度读取RC的内存中的数据包,根据读取到的数据可判断读取的数据包的长度,例如根据读取到的头部信息,可知晓读取的数据包的数据长度(根据读取到的数据包的头部信息判断),如果数据包的数据长度大于该单位长度,说明书数据包中的数据未被全部读取,此时可以重新以数据包的数据长度为单位来重新读取该数据包,这样可把数据包中的全部数据读取到。
此外,随着时间的推移,传输的数据包的大小可能发生变化,因此,如果从RC的内存中读取数据包的单位长度可以相应变化,显然能够提高数据的传输性能。
根据本公开的实施例,可以根据最近获得的预定数量的数据包的长度来更新用于从RC的内存读取数据包的单位长度。
作为示例,还可以将所述预设长度更新为大于所述最大长度一个增量,所述增量可以为预设值。
图6示出了根据本公开的实施例的由RC执行的数据传输方法的流程图。
参照图6,在步骤S601,接收从基于PCIe与根复合体RC连接的端点EP发送的消息信号中断MSI消息。
在步骤S602,所述RC的处理器以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
根据本公开的实施例,由于处理器响应于MSI消息以轮询的方式读取RC的内存中的数据,这可以即便MSI消息丢失,与该MSI消息相应的数据也会被从RC的内存读取。另外,由于处理器轮询确定RC的内存中是否存在数据,因此,可以不用频繁响应后续的MSI消息,从而节省处理器开销,提高数据传输性能。
作为示例,RC的处理器可通过运行软件栈中的消息模块来执行所述轮询操作。
图7示出了根据本公开的实施例的RC的消息模块的状态变化的示意图。
参照图7,当接收到MSI消息时,消息模块从睡眠状态进入轮询状态,当确定第RC的内存中存在待读取数据时,继续轮序,当确定RC的内存中不存在待读取数据时,进入睡眠状态。
作为示例,所述方法还包括:当确定所述RC的内存中不再存在数据时,所述RC的处理器停止以轮询的方式读取数据。
作为示例,所述方法还包括:当从所述RC的内存中读取的数据中包括数据结束符时,所述RC的处理器确定所述RC的内存中不再存在待读取的数据。
根据本公开的实施例,当从RC的内存读取到数据结束符时,说明书RC内存中已经不存在待读取的数据,因此可以停止从RC的内存读取数据,从而避免不必要的轮询读操作。
作为示例,所述RC的处理器在可缓存模式下运行,所述方法还包括:响应于以轮询的方式读取所述RC的内存中的数据,所述RC的处理器将RC的处理器的第三缓存中的数据置为无效后,将所述读取的数据写入所述第三缓存中;和\或响应于接收到发送数据的请求,所述RC的处理器将待发送的数据写入所述RC的处理器的第四缓存中;所述RC的处理器将所述待发送的数据从所述RC的第四缓存刷入所述RC的内存;以及所述RC的处理器向所述EP发送门铃DB消息。
根据本公开的实施例,在将RC的内存中的数据写入RC的第三缓存之前,将RC的第三缓存中的数据置无效,可以保证从RC的第三缓存中获取到的数据是来自RC的内存的最新数据。另外,在发送数据时,将RC的处理器的第四缓存中的数据输入RC的内存,可以保证第四缓存中的数据能够被写入到EP的内存中。
作为示例,所述方法还可包括:在将所述数据写入所述RC的第四缓存后,所述RC的处理器将数据结束符写入所述RC的第四缓存,以及将所述数据结束符从所述第四缓存刷入所述RC的内存。
本领域技术人员应当理解,第三缓存和第四缓存可以是RC的不同缓存、同一缓存或者同一缓存的不同区域。
根据本公开的实施例,由于第四缓存中的数据会被传输到RC的内存,因此通过将数据结束符写入第四缓存,这样DMA从RC的内存中读取数据时,当读取到该数据结束符时,可确定RC的内存中不再存在待传输的数据,此时DMA而停止从RC的内存中读取数据。
作为示例,RC端的消息模块轮询RC的内存发现有待读取数据时,消息模块通过信号量通知PCIe_write接口。PCIe_write接口会调用读数据函数kernel_write,将RC的内存中的数据去除包头后发送给用户。为了获得正确的数据,在调用读数据函数之前需要对处理器的缓存执行置无效操作。这可以保证用户从缓存中获取的数据与RC的内存中的数据一致。
作为示例,当RC端有数据要发送给时,RC端用户调用PCIe_read接口将数据发送到RC的内存中,同时以信号量的方式通知RC端的消息模块。RC将数据包写入到到RC的内存后,其消息模块会在下一个待写入位置的头部写结束符,以标记无数据。
图8示出了根据本公开的实施例的基于PCIe传输数据的方法的示意图。
参照图8,用户内存和处理器(或PCIe控制器)的内存通过处理器(例如,CPU)的缓存(例如,EP的缓存或RC的缓存)来交换数据。因此,数据可以以缓存行为单元进行传输,从而提高了数据传输效率。此外,在将处理器的内存的数据拷贝到处理器的缓存之前将处理器的缓存中的数据置无效(Invalidate),可保证处理器将PCIe控制器内存中的数据正确地传递给用户内存。相应地,在将发送端处理器的内存中的数据发送到接收端处理器的内存之前,将发送端处理器的缓存中的数据刷入(Flush)到发送端的处理器的内存中,可以保证处理器的缓存和处理器的内存数据的一致性,从而保证数据传输的准确性。
如上所述,本公开在提高数据的传输性能时,并未增加硬件,而是通过现有硬件(例如,处理器和DMA控制器)来运行软件栈中的程序来实现数据可靠性传输和传输性能的提高。
以上参照图1至图8对根据本公开的实施例的基于外围组件互连高速PCIe的数据传输方法进行了描述,下面参照图9-图10对根据本公开的实施例的EP和RC进行描述。
图9示出了根据本公开的实施例的EP的结构的框图。
参照图9,EP 900可包括:接收单元901、处理器902和DMA控制器903。本领域技术人员应当理解,EP 900可另外包括其他组件,并且EP 900中的至少一个组件可被拆分、组合或被省略。
作为示例,接收单元901可被配置为从基于PCIe与端点EP连接的根复合体RC接收门铃DB消息。
作为示例,处理器902可被配置为以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息。
作为示例,DMA控制器903可被配置为响应于接收到所述读请求消息,从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
作为示例,处理器902还可被配置为:当确定所述RC的内存中不再存在所述待传输的数据时,停止向所述DMA控制器发送读请求消息。
作为示例,处理器902还可被配置为:当从所述RC的内存中读取的数据中包括数据结束符时,确定所述RC的内存中不再存在所述待传输的数据。
作为示例,处理器902可在可缓存模式下运行,并且还可被配置为:响应于读取的数据被写入所述EP的内存,将所述处理器的第一缓存中的数据置为无效后,将所述读取的数据从所述EP的内存写入所述第一缓存;和\或响应于接收到发送数据的请求,将待发送的数据写入所述处理器的第二缓存,将所述待发送的数据从所述第二缓存刷入所述EP的内存。
作为示例,DMA控制器903还可被配置为:将所述待发送的数据从所述EP的内存写入所述RC的内存。
作为示例,处理器902还可被配置为:在将待发送的数据写入所述EP的处理器的第二缓存后,将数据结束符写入所述EP的处理器的第二缓存,以及将所述数据结束符从所述第二缓存输入所述EP的内存。
作为示例,DMA控制器903还可被配置为:以预设长度读取所述RC的内存中的数据包。
作为示例,处理器902还可被配置为:确定读取的数据包的计数是否是预定数量的整数倍,如果读取的数据包的计数是预定数量的整数倍,确定所述预设长度是否大于最近读取的预定数量的数据包中的具有最大长度的数据包的长度,当确定所述预设长度大于读取的预定数量的数据包中的具有最大长度的数据包的长度时,将所述预定长度更新为所述最大长度,如果读取的数据包的计数不是预定数值的整数倍,基于读取的所述数据包的数据确定所述数据包的数据长度是否大于预设长度,当确定所述数据包的数据长度大于所述预设长度时,将所述预设长度更新为所述数据包的数据长度。
作为示例,DMA控制器903还可被配置为:当确定所述数据包的数据长度大于所述预设长度时,以所述数据包的数据长度重新读取所述数据包。
图10示出了根据本公开的实施例的RC的结构的框图。
参照图10,RC 1000可包括:接收单元1001和处理器1002。RC 1000可另外包括其他组件,并且RC 1000中的至少一个组件可被拆分、组合或被省略。
作为示例,接收单元1001可被配置为:接收从所述EP发送的消息信号中断MSI消息。
作为示例,处理器1002可被配置为以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
作为示例,处理器1002还可被配置为:当确定所述RC的内存中不再存在数据时,停止以轮询的方式读取数据。
作为示例,处理器1002可在可缓存模式下运行,并且还可被配置为:响应于以轮询的方式读取所述RC的内存中的数据,将RC的处理器的第三缓存中的数据置为无效后,将所述读取的数据写入所述第三缓存中;和\或响应于接收到发送数据的请求,将待发送的数据写入所述RC的处理器的第四缓存中;将所述待发送的数据从所述RC的第四缓存刷入所述RC的内存;以及向所述EP发送门铃DB消息。
作为示例,处理器1002还可被配置为:在将所述数据写入所述RC的第四缓存后,将数据结束符写入所述RC的第四缓存,以及将所述数据结束符从所述第四缓存刷入所述RC的内存。
作为示例,处理器1002还可被配置为:当所述RC的处理器从所述RC的内存中读取的数据包括数据结束符时,确定所述RC的内存中不再存在数据。
根据本公开的实施例,提供了一种电子装置,包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如本文所述的基于PCIe的数据传输方法。
根据本公开的实施例,提供了一种存储有计算机程序的非暂时性计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器执行如本文所述的基于PCIe的数据传输方法。
这里的计算机可读存储介质的示例包括:只读存储器(ROM)、随机存取可编程只读存储器(PROM)、电可擦除可编程只读存储器(EEPROM)、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪存、非易失性存储器、CD-ROM、CD-R、CD+R、CD-RW、CD+RW、DVD-ROM、DVD-R、DVD+R、DVD-RW、DVD+RW、DVD-RAM、BD-ROM、BD-R、BD-R LTH、BD-RE、蓝光或光盘存储器、硬盘驱动器(HDD)、固态硬盘(SSD)、卡式存储器(诸如,多媒体卡、安全数字(SD)卡或极速数字(XD)卡)、磁带、软盘、磁光数据存储装置、光学数据存储装置、硬盘、固态盘以及任何其他装置,所述任何其他装置被配置为以非暂时性方式存储计算机程序以及任何相关联的数据、数据文件和数据结构并将所述计算机程序以及任何相关联的数据、数据文件和数据结构提供给处理器或计算机使得处理器或计算机能执行所述计算机程序。上述计算机可读存储介质中的计算机程序可在诸如客户端、主机、代理装置、服务器等计算机设备中部署的环境中运行,此外,在一个示例中,计算机程序以及任何相关联的数据、数据文件和数据结构分布在联网的计算机系统上,使得计算机程序以及任何相关联的数据、数据文件和数据结构通过一个或多个处理器或计算机以分布式方式存储、访问和执行。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

Claims (15)

1.一种基于外围组件互连高速PCIe的数据传输方法,包括:
从基于PCIe与端点EP连接的根复合体RC接收门铃DB消息;
所述EP的处理器以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息;
响应于接收到所述读请求消息,所述DMA控制器从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
2.如权利要求1所述的方法,其中,所述方法还包括:
当确定所述RC的内存中不再存在所述待传输的数据时,所述EP的处理器停止向所述DMA控制器发送读请求消息。
3.如权利要求2所述的方法,还包括:
当从所述RC的内存中读取的数据中包括数据结束符时,所述EP的处理器确定所述RC的内存中不再存在所述待传输的数据。
4.如权利要求1所述的方法,其中,所述EP的处理器在可缓存模式下运行,所述方法还包括:
响应于读取的数据被写入所述EP的内存,所述EP的处理器将所述EP的处理器的第一缓存中的数据置为无效后,将所述读取的数据从所述EP的内存写入所述第一缓存;和\或
响应于接收到发送数据的请求,所述EP的处理器将待发送的数据写入所述EP的处理器的第二缓存;
所述EP的处理器将所述待发送的数据从所述第二缓存刷入所述EP的内存;
所述DMA控制器将所述待发送的数据从所述EP的内存写入所述RC的内存。
5.如权利要求4所述的方法,还包括:在将待发送的数据写入所述EP的处理器的第二缓存后,所述EP的处理器将数据结束符写入所述EP的处理器的第二缓存;以及
将所述数据结束符从所述第二缓存输入所述EP的内存。
6.如权利要求1所述的方法,所述DMA控制器从所述RC的内存中读取数据的步骤包括:
所述DMA控制器以预设长度读取所述RC的内存中的数据包;
其中,所述方法还包括:
确定读取的数据包的计数是否是预定数量的整数倍,
如果读取的数据包的计数是预定数量的整数倍,确定所述预设长度是否大于最近读取的预定数量的数据包中的具有最大长度的数据包的长度,
当确定所述预设长度大于读取的预定数量的数据包中的具有最大长度的数据包的长度时,将所述预定长度更新为所述最大长度,
如果读取的数据包的计数不是预定数值的整数倍,由所述EP的处理器基于读取的所述数据包的数据确定所述数据包的数据长度是否大于预设长度,
当确定所述数据包的数据长度大于所述预设长度时,将所述预设长度更新为所述数据包的数据长度,以及
当确定所述数据包的数据长度大于所述预设长度时,所述DMA控制器以所述数据包的数据长度重新读取所述数据包。
7.一种基于外围组件互连高速PCIe的数据传输方法,包括:
接收从基于PCIe与根复合体RC连接的端点EP发送的消息信号中断MSI消息;
所述RC的处理器以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
8.如权利要求7所述的方法,所述方法还包括:
当确定所述RC的内存中不再存在数据时,所述RC的处理器停止以轮询的方式读取数据。
9.如权利要求8所述的方法,其中,所述RC的处理器在可缓存模式下运行,所述方法还包括:
响应于以轮询的方式读取所述RC的内存中的数据,所述RC的处理器将RC的处理器的第三缓存中的数据置为无效后,将所述读取的数据写入所述第三缓存中;和\或
响应于接收到发送数据的请求,所述RC的处理器将待发送的数据写入所述RC的处理器的第四缓存中;
所述RC的处理器将所述待发送的数据从所述RC的第四缓存刷入所述RC的内存;以及
所述RC的处理器向所述EP发送门铃DB消息。
10.如权利要求9所述的方法,还包括:
在将所述数据写入所述RC的第四缓存后,所述RC的处理器将数据结束符写入所述RC的第四缓存,以及将所述数据结束符从所述第四缓存刷入所述RC的内存。
11.如权利要求8所述的方法,还包括:
当所述RC的处理器从所述RC的内存中读取的数据包括结束符时,所述RC的处理器确定所述RC的内存中不再存在数据。
12.一种端点EP,所述EP基于外围组件互连高速PCIe与根复合体RC连接,其中,所述EP包括:
接收单元,被配置为从基于PCIe与端点EP连接的根复合体RC接收门铃DB消息;
处理器,被配置为以轮询的方式向所述EP的直接内存访问DMA控制器发送读请求消息;
所述DMA控制器,被配置为响应于接收到所述读请求消息,从所述RC的内存中读取待传输的数据,并将读取的数据写入所述EP的内存。
13.一种根复合体RC,所述RC基于外围组件互连高速PCIe与端点EP连接,其中,所述RC包括:
接收单元,被配置为:接收从所述EP发送的消息信号中断MSI消息;
处理器,被配置为以轮询的方式读取所述RC的内存中的数据,其中,所述RC的内存中的数据由所述EP的直接内存访问DMA控制器写入。
14.一种存储有计算机程序的非暂时性计算机可读存储介质,其中,当所述计算机程序被处理器执行时使得所述处理器执行如权利要求1-11中的任一项所述的基于PCIe的数据传输方法。
15.一种电子装置,包括:处理器;存储器,存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1-11中的任一项所述的基于PCIe的数据传输方法。
CN202310070869.2A 2023-01-19 2023-01-19 基于PCIe的数据传输方法和装置 Pending CN116150056A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310070869.2A CN116150056A (zh) 2023-01-19 2023-01-19 基于PCIe的数据传输方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310070869.2A CN116150056A (zh) 2023-01-19 2023-01-19 基于PCIe的数据传输方法和装置

Publications (1)

Publication Number Publication Date
CN116150056A true CN116150056A (zh) 2023-05-23

Family

ID=86373053

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310070869.2A Pending CN116150056A (zh) 2023-01-19 2023-01-19 基于PCIe的数据传输方法和装置

Country Status (1)

Country Link
CN (1) CN116150056A (zh)

Similar Documents

Publication Publication Date Title
US11636052B2 (en) Non-volatile memory express (NVMe) data processing method and system
US20210263645A1 (en) NVMe Controller Memory Manager
US11403227B2 (en) Data storage method and apparatus, and server
US11397668B2 (en) Data read/write method and apparatus, and storage server
WO2020015670A1 (zh) 文件发送方法、文件接收方法和文件收发装置
WO2020087927A1 (zh) 一种内存数据迁移的方法及装置
JP2004157966A (ja) エンドポイント・メモリ制御方法、エンドポイント・メモリ制御装置、usb装置および記憶媒体
AU2015402888B2 (en) Computer device and method for reading/writing data by computer device
US20220222016A1 (en) Method for accessing solid state disk and storage device
CN110858188A (zh) 具有分布式信箱结构的多处理器系统及其沟通方法
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
CN107453845B (zh) 应答确认方法及设备
CN109614264B (zh) 一种数据备份方法、装置及系统
CN114579480A (zh) 一种缺页处理方法、装置、系统、电子设备及存储介质
US20060039405A1 (en) Systems and methods for frame ordering in wide port SAS connections
US10949095B2 (en) Method, network adapters and computer program product using network adapter memory to service data requests
CN116150056A (zh) 基于PCIe的数据传输方法和装置
EP4040279A1 (en) Method and apparatus for accessing solid state disk
JPWO2018037510A1 (ja) 計算機システム、通信デバイス、及び、記憶制御方法
CN111858256B (zh) 命令队列监控电路、数据交换方法及其设备
CN116601616A (zh) 一种数据处理装置、方法及相关设备
CN115203102A (zh) 预测usb扩展环境中的空闲缓冲区空间
CN113093994A (zh) 一种数据处理方法及装置
CN117453147B (zh) 固态硬盘垃圾回收方法、装置及电子设备
CN117171059A (zh) 一种基于rdma的持久性内存存储方法和系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication