用于epa设备的数据传输方法、处理设备和介质

文档序号:1921449 发布日期:2021-12-03 浏览:21次 >En<

阅读说明:本技术 用于epa设备的数据传输方法、处理设备和介质 (Data transmission method, processing device and medium for EPA device ) 是由 陈建飞 张豪敏 王迎 罗丁元 于 2021-11-03 设计创作,主要内容包括:本发明提供了一种用于EPA设备的数据传输方法、处理设备和计算机可读存储介质。EPA设备通过PCIe总线与一个主机相连。该数据传输方法包括,在主机处:在主机的驱动器初始化过程中,在内存中分配接收缓冲区并且确定与接收缓冲区相对应的第一PCIe总线地址;在内存中分配发送缓冲区并且确定与发送缓冲区相对应的第二PCIe总线地址;在驱动器执行驱动释放之前,从接收缓冲区中读取来自EPA设备的设备数据,其中设备数据由EPA设备基于第一PCIe总线地址写入接收缓冲区;以及将要发送给EPA设备的主机数据写入发送缓冲区以使得EPA设备能够基于第二PCIe总线地址从发送缓冲区读取主机数据。(The invention provides a data transmission method, a processing device and a computer readable storage medium for an EPA device. The EPA device is connected to a host via the PCIe bus. The data transmission method includes, at a host: during driver initialization of a host, allocating a receive buffer in a memory and determining a first PCIe bus address corresponding to the receive buffer; allocating a transmit buffer in the memory and determining a second PCIe bus address corresponding to the transmit buffer; reading device data from the EPA device from a receive buffer before the driver performs the drive release, wherein the device data is written to the receive buffer by the EPA device based on the first PCIe bus address; and writing host data to be sent to the EPA device to the send buffer to enable the EPA device to read the host data from the send buffer based on the second PCIe bus address.)

用于EPA设备的数据传输方法、处理设备和介质

技术领域

本发明概括而言涉及通信领域,更具体地,涉及一种用于EPA设备的数据传输方法、处理设备和计算机可读存储介质。

背景技术

目前,基于EPA(Ethernet for Plant Automation,工业以太网)协议标准的产品越来越丰富,某些产品已经被用于工业生产、车辆控制等领域。一个EPA系统由多个EPA设备组成,这些EPA设备通过EPA总线相连。EPA总线是一种基于以太网物理层实现的实时以太网总线,其具有实时性强、传输延时固定的特点。EPA设备可以挂载在计算机系统上,作为计算机设备(本文中也称为主机)的对外通信设备。

EPA设备与计算机设备之间的数据传输可以使用PCIe总线。PCIe(PeripheralComponent Interconnect express,高速外设组件互连)是一种高速串行计算机扩展总线标准,它原来的名称为“3GIO”,是由英特尔在2001年提出的,旨在替代旧的PCI(PeripheralComponent Interconnect)、PCI-X(Peripheral Component Interconnect eXtended)和AGP(Accelerated Graphics Port,加速图形端口)总线标准。PCIe总线能够提供高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告,端对端的可靠性传输,热插拔以及服务质量(QOS)等功能。

使用传统的PCIe接口设计方法,从EPA设备到主机的数据(本文中也称为设备数据)传输和从主机到EPA设备的数据(本文中也称为主机数据)传输需要经历复杂的过程。

例如,对于设备数据而言,当EPA设备要发送一个包含设备数据的EPA报文时,其在事先定义的长度寄存器中写入这个报文的长度,然后向主机发送一个中断指令以告知主机有新的EPA报文到来;主机收到该中断指令后,驱动程序从长度寄存器中读取该EPA报文的长度,根据需要的长度向操作系统申请一块内存空间,对所分配的内存空间进行映射,以获得该内存空间的PCIe总线地址;主机的驱动程序随后将这个PCIe总线地址写入定义好的寄存器中以告知EPA设备,并向EPA设备的控制寄存器写入开始命令。EPA设备在接收到该开始命令后,将存储的EPA报文打包成符合PCIe协议的写存储器TLP(Transaction LayerPacket,事务层报文)。在该EPA报文发送完成后,EPA设备再次向主机发送一个中断指令,通知驱动程序该TLP发送完成并已经存入分配的内存空间中。当用户程序模块需要处理该TLP时,可以调用驱动程序读函数来将该TLP从内核态拷贝给用户态,并释放内核态中的内存空间。

又例如,对于主机数据而言,当主机需要向EPA设备发送主机数据时,主机的驱动程序先向内核申请分配得到一个缓冲区,然后对缓冲区进行映射得到对应的PCIe总线地址,再将该PCIe总线地址写到EPA设备的PCIe接口配置空间对应的寄存器,然后启动EPA设备上的PCIe接口DMA(Direct Memory Access,直接存储器访问)引擎,由EPA设备对这个PCIe总线地址发起读请求,随后由主机返回完成报文,由此完成主机数据的传输。

可以看出,不管是对于设备数据还是主机数据,从内存空间的分配、写入、中断通知等,需要经历复杂的交互流程,从而EPA设备和主机之间的数据传输延时不可避免地很高。

另一方面,EPA总线传输的实时性强、传输延时固定,因此EPA设备和主机之间的这种高延时将会使得设备数据和主机数据的整个传输延时较高,不符合EPA协议的高实时性要求。

发明内容

针对上述问题,本发明提供了一种用于EPA设备的数据传输方法,其通过在主机的驱动程序初始化阶段为EPA设备和主机之间的数据传输预先分配缓冲区,并且在驱动程序的生命周期期间利用所分配的缓冲区来缓存设备数据和主机数据,避免了每次数据收发时EPA设备和主机之间的复杂的交互过程,提高了数据传输速度,降低了数据传输延时。

根据本发明的一个方面,提供了一种用于EPA设备的数据传输方法。所述EPA设备通过PCIe总线与一个主机相连。所述数据传输方法包括,在所述主机处:在所述主机的驱动器初始化过程中,在内存中分配接收缓冲区并且确定与所述接收缓冲区相对应的第一PCIe总线地址;在所述内存中分配发送缓冲区并且确定与所述发送缓冲区相对应的第二PCIe总线地址;在所述驱动器执行驱动释放之前,从所述接收缓冲区中读取来自所述EPA设备的设备数据,其中所述设备数据由所述EPA设备基于所述第一PCIe总线地址写入所述接收缓冲区;以及将要发送给所述EPA设备的主机数据写入所述发送缓冲区以使得所述EPA设备能够基于所述第二PCIe总线地址从所述发送缓冲区读取所述主机数据。

在一些实施例中,所述方法还包括:在所述主机的驱动器初始化过程中,在操作系统中注册一个中断处理函数;以及接收所述中断处理函数的通知,所述通知用于通知所述主机的驱动器所述设备数据已被写入所述接收缓冲区。

在一些实施例中,所述方法还包括:所述驱动器通过输入输出接口写函数将所述第一PCIe总线地址和所述第二PCIe总线地址写入所述EPA设备的PCIe接口配置空间。

在一些实施例中,在内存中分配接收缓冲区并且确定与所述接收缓冲区相对应的第一PCIe总线地址包括:在所述内存中分配一个或多个接收内存页作为所述接收缓冲区;获取每个接收内存页的页结构指针;以及通过DMA映射将每个接收内存页的页结构指针映射为一个第一PCIe总线地址,所述DMA映射的方向为从所述EPA设备到所述主机。

在一些实施例中,在所述内存中分配发送缓冲区并且确定与所述发送缓冲区相对应的第二PCIe总线地址包括:在所述内存中分配另外的一个或多个发送内存页作为所述发送缓冲区;获取每个发送内存页的页结构指针;以及通过DMA映射将每个发送内存页的页结构地址映射为一个第二PCIe总线地址,所述DMA映射的方向为从所述主机到所述EPA设备。

在一些实施例中,从所述接收缓冲区中读取来自所述EPA设备的设备数据包括:在所述设备数据被所述EPA设备通过存储器写请求报文写入所述接收缓冲区之后,接收操作系统的中断处理函数的通知,其中所述存储器写请求报文的目的地址是所述第一PCIe总线地址,所述存储器写请求报文的有效数据是所述设备数据并且所述设备数据的大小小于一个内存页;以及响应于接收到所述中断处理函数的通知,从所述接收缓冲区中读取所述设备数据。

在一些实施例中,所述接收缓冲区包括一个接收内存页,并且其中响应于接收到所述中断处理函数的通知,从所述接收缓冲区中读取所述设备数据包括:如果在读取所述设备数据之前未从所述EPA设备接收到另一设备数据,从所述接收缓冲区中读取所述设备数据;以及如果在读取所述设备数据之前从所述EPA设备接收到另一设备数据,从所述接收缓冲区中读取所述另一设备数据。

在一些实施例中,所述接收缓冲区包括多个接收内存页,并且其中响应于接收到所述中断处理函数的通知,从所述接收缓冲区中读取所述设备数据包括:如果在读取所述设备数据之前未从所述EPA设备接收到另一设备数据,从所述接收缓冲区中的一个接收内存页读取所述设备数据;以及如果在读取所述设备数据之前从所述EPA设备接收到另一设备数据,从所述接收缓冲区中的一个接收内存页读取所述设备数据,并且从所述接收缓冲区中的另一接收内存页读取所述另一设备数据。

在一些实施例中,将要发送给所述EPA设备的主机数据写入所述发送缓冲区以使得所述EPA设备能够基于所述第二PCIe总线地址从所述发送缓冲区读取所述主机数据包括:将所述主机数据拷贝到所述发送缓冲区;向所述EPA设备的PCIe接口配置空间写入启动标志;从所述EPA设备接收存储器读请求报文,所述存储器读请求报文的目的地址是所述第二PCIe总线地址;以及向所述EPA设备发送完成报文,所述完成报文的有效数据是所述主机数据并且所述主机数据的大小小于一个内存页。

在一些实施例中,所述发送缓冲区包括一个发送内存页,并且其中将所述主机数据拷贝到所述发送缓冲区还包括:如果在发送所述完成报文之前从所述主机的用户程序模块接收到另一主机数据,将所述另一主机数据拷贝到所述发送缓冲区中以覆盖所述主机数据。

在一些实施例中,所述发送缓冲区包括多个发送内存页,并且其中将所述主机数据拷贝到所述发送缓冲区还包括:如果在发送所述完成报文之前从所述主机的用户程序模块接收到另一主机数据,将所述另一主机数据拷贝到所述发送缓冲区中的另一发送内存页。

根据本发明的另一个方面,提供了一种处理设备,包括:处理器和存储器,所述存储器存储有可由所述处理器运行的指令,所述处理器被配置为使得所述处理设备执行如上所述的任一方法。

根据本发明的再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序代码,该计算机程序代码在被处理器运行时执行如上所述的任一方法。

附图说明

通过参考下列附图所给出的本发明的

具体实施方式

的描述,将更好地理解本发明,并且本发明的其他目的、细节、特点和优点将变得更加显而易见。

图1示出了根据本发明的实施例的示例性EPA设备和主机的示意图。

图2示出了根据本发明的一些实施例的用于EPA设备的数据传输方法的流程图。

图3示出了根据本发明一些实施例的用于确定第一PCIe总线地址的步骤的流程图。

图4示出了根据本发明一些实施例的用于确定第二PCIe总线地址的步骤的流程图。

图5示出了根据本发明一些实施例的主机数据的传输过程的流程图。

图6示出了适合实现本发明的实施例的处理设备的方框图。

具体实施方式

下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整的传达给本领域的技术人员。

在下文的描述中,出于说明各种发明的实施例的目的阐述了某些具体细节以提供对各种发明实施例的透彻理解。但是,相关领域技术人员将认识到可在无这些具体细节中的一个或多个细节的情况来实践实施例。在其它情形下,与本申请相关联的熟知的装置、结构和技术可能并未详细地示出或描述从而避免不必要地混淆实施例的描述。

除非语境有其它需要,在整个说明书和权利要求中,词语“包括”和其变型,诸如“包含”和“具有”应被理解为开放的、包含的含义,即应解释为“包括,但不限于”。

在整个说明书中对“一个实施例”或“一些实施例”的提及表示结合实施例所描述的特定特点、结构或特征包括于至少一个实施例中。因此,在整个说明书的各个位置“在一个实施例中”或“在一些实施例”中的出现不一定全都指相同实施例。另外,特定特点、结构或特征可在一个或多个实施例中以任何方式组合。

此外,说明书和权利要求中所用的第一、第二、第三等术语,仅仅出于描述清楚起见来区分各个对象,而并不限定其所描述的对象的大小或其他顺序等,除非另有说明。

图1示出了根据本发明的实施例的示例性EPA设备10和主机20的示意图。如图1中所示,EPA设备10可以包括发送引擎12、接收引擎14和PCIe接口配置空间模块16。发送引擎12用于为要发送的设备数据构建存储器写请求报文并且执行该报文的写操作。接收引擎14用于在接收到来自主机的PCIe总线地址时,对该PCIe总线地址发起读请求,以从该PCIe总线地址中读取主机数据。发送引擎12和接收引擎14在本文中也可以统称为DMA引擎。

PCIe接口配置空间模块16可以包括发送引擎12的控制和状态寄存器以及接收引擎14的控制和状态寄存器。发送引擎12的控制和状态寄存器可以包括DMA开始、结束等控制信号,发送引擎12的状态信息,主机20的发送缓冲区对应的PCIe总线地址等。接收引擎14的控制和状态寄存器可以包括DMA开始、结束等控制信号,接收引擎14的状态信息,主机20的接收缓冲区对应的PCIe总线地址等。此外,EPA设备10还可以包括用户模块18,其用于在EPA设备10中实现由用户定义的各种功能。用户模块18可以是本文所述的EPA设备10的一部分或者可以独立于EPA设备10。注意,本文所显示和描述的EPA设备10仅仅着重于用来实现其与主机20通信的部分,而省略了其他部分。在一些实施例中,本文所述的EPA设备10的这些功能可以实现在一个FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片上,该FPGA芯片可以在被加电时从外置闪存(FLASH)中读取配置文件以对该FPGA芯片进行编程来实现本文所述的EPA设备10的功能。

主机20可以包括驱动器22和内存24。在本文中,在驱动器22初始化过程中,主机20可以在内存24中预先分配发送缓冲区和接收缓冲区,在驱动程序的生命周期期间可以利用该发送缓冲区和接收缓冲区缓存接收到的设备数据和要发送的主机数据。此外,主机20还可以包括用户程序模块26,其用于在主机10中实现由用户定义的各种功能。用户程序模块26可以是本文所述的主机20的一部分或者可以独立于主机20。

EPA设备10和主机20之间通过PCIe总线30相连,以实现设备数据从EPA设备10到主机20的传输以及主机数据从主机20到EPA设备10的传输。

图2示出了根据本发明的一些实施例的用于EPA设备10的数据传输方法200的流程图。方法200例如可以由图1中所示的EPA设备10和主机20来协同实现。在方法200开始之前,为EPA设备10和主机20上电启动,主机20的BIOS(Basic Input Output System,基本输入输出系统)可以对PCIe总线30上的设备(包括EPA设备10)进行探测和枚举,获得各个设备的PCIe节点信息,并挂载到PCIe总线树上。

如图2中所示,在步骤210,在主机20的驱动器22初始化过程中,在内存24中分配接收缓冲区并且确定与该接收缓冲区相对应的第一PCIe总线地址。

图3示出了根据本发明一些实施例的用于确定第一PCIe总线地址的步骤210的流程图。

如图3中所示,在子步骤212,主机20在内存24中分配一个或多个内存页作为接收缓冲区。例如,主机20的驱动器22可以调用内存分配函数(如get_user_page函数)来分配一个或者多个内存页作为接收缓冲区。当前,一个内存页的大小是4KB,该内存页的起始地址是4KB对齐的。在本文中,为了与下文中用作发送缓冲区的内存页进行区分,也将接收缓冲区所包含的内存页称为接收内存页,将发送缓冲区所包含的内存页称为发送内存页。然而,本领域技术人员可以理解,内存24中的任一内存页本身并不专用于接收或发送。

在子步骤214,可以获取每个接收内存页的页结构指针。例如,驱动器22可以调用内存分配函数分配接收缓冲区,并且在分配结束后函数会返回每个接收内存页的页结构指针。内存页的页结构指针用于在内存24中寻址该内存页,也可以称为页地址。

在子步骤216,通过DMA映射将每个接收内存页的页结构指针映射为一个PCIe总线地址。这里,为了区分于下面所述的发送内存页所映射的PCIe总线地址,也将接收内存页所映射的PCIe总线地址称为第一PCIe总线地址,将发送内存页所映射的PCIe总线地址称为第二PCIe总线地址。这里,DMA映射包括流式DMA映射。在流式DMA映射的情况下,需要指明该DMA映射的方向(即DMA通道中数据的方向)为从EPA设备10到主机20(如DMA_FROM_DEVICE)。

通过这种方式,在驱动器22初始化过程中,驱动程序在内存24中预先分配了一个接收缓冲区,并且为该接收缓冲区建立了到PCIe总线地址的映射关系。

然后,驱动器22可以通过输入输出接口写函数(如iowrite函数)将该接收缓冲区(更具体地,接收缓冲区的每个接收内存页)所映射的第一PCIe总线地址写入EPA设备10的PCIe接口配置空间模块16。这样,EPA设备10可以根据该第一PCIe总线地址访问该接收缓冲区。

返回图2,在步骤220,同样,在主机20的驱动器22初始化过程中,在内存24中分配发送缓冲区并且确定与该发送缓冲区相对应的第二PCIe总线地址。

图4示出了根据本发明一些实施例的用于确定第二PCIe总线地址的步骤220的流程图。

如图4中所示,在子步骤222,主机20在内存24中分配另外的一个或多个内存页(这里也称为发送内存页)作为发送缓冲区。例如,主机20的驱动器22可以调用内存分配函数(如get_user_page函数)来分配一个或者多个内存页作为发送缓冲区。

在子步骤224,可以获取每个发送内存页的页结构指针。例如,驱动器22可以调用内存分配函数分配发送缓冲区,并且在分配结束后函数会返回每个发送内存页的页结构指针。

在子步骤226,通过DMA映射将每个发送内存页的页结构指针映射为一个PCIe总线地址(也称为第二PCIe总线地址)。这里,DMA映射包括流式DMA映射。在流式DMA映射的情况下,需要指明该DMA映射的方向(即DMA通道中数据的方向)为从主机20到EPA设备10(如DMA_TO_DEVICE)。

通过这种方式,在驱动器22初始化过程中,驱动程序在内存24中预先分配了一个发送缓冲区,并且为该发送缓冲区建立了到PCIe总线地址的映射关系。

然后,驱动器22可以通过输入输出接口写函数(如iowrite函数)将该发送缓冲区(更具体地,发送缓冲区的每个发送内存页)所映射的第二PCIe总线地址写入EPA设备10的PCIe接口配置空间模块16。这样,EPA设备10可以根据该第二PCIe总线地址访问该发送缓冲区。

这里,为了避免模糊本发明的重点,在上述步骤210和220的描述中着重描述了主机20的驱动器22初始化过程中的缓冲区资源分配。事实上,驱动器初始化是一个复杂的过程,其可以由主机20的用户程序模块26调用驱动程序提供的初始化接口函数触发,由驱动软件对EPA设备10的PCIe节点进行配置,驱动软件通过操作系统函数对PCIe节点的配置空间进行配置,包括配置PCIe链接速度、总线宽度、PCIe序等。此外,在执行步骤210和220中所述的缓冲区资源分配之前,还需要建立并初始化设备描述结构体以对与PCIe总线30相连的各个设备的设备结构进行描述,并且通过PCIe总线的资源映射函数(例如pcie_resource_start、pci_resource_len函数)将PCIe BAR(Base Address Register,基地址寄存器)空间映射到操作系统的内核空间中,以使得主机20的驱动器22的驱动程序能够使用输入输出接口函数(例如包括输入输出接口写函数iowrite和输入输出接口读函数ioread)直接操作EPA设备10的PCIe接口配置空间模块16。

此外,在步骤210和220所述的驱动器22初始化过程中的缓冲区资源分配之前,作为驱动器22初始化过程的一部分,还在主机20的操作系统中注册一个中断处理函数。与现有技术中的中断处理不同,本发明中只需要一个中断,用于向主机20的驱动程序通知设备数据已经被写入到所分配的接收缓冲区中,如下面所详述。

在本发明中,上述接收缓冲区和发送缓冲区在驱动程序的生命周期期间都有效,因此,在主机20执行驱动释放(即释放驱动程序所分配的资源)之前,EPA设备10和主机20都可以利用该预先分配的发送缓冲区和接收缓冲区来持续传输设备数据和主机数据,而无需在每次数据传输之前执行复杂的中断和资源分配过程。此外,根据EPA总线规范,EPA系统中传输的数据大小小于一个内存页,因此这种预先分配的发送缓冲区和接收缓冲区能够满足EPA系统之间的设备数据和主机数据的传输。

如图2中所示,在步骤230,在驱动器22执行驱动释放之前,主机20的驱动器22从接收缓冲区中读取来自EPA设备10的设备数据,其中该设备数据由EPA设备10基于第一PCIe总线地址写入该接收缓冲区。

具体地,例如,当EPA设备10的用户模块18接收到新的EPA报文时,用户模块18可以从该EPA报文中解析出需要传输给主机20的有效数据(即设备数据),并且递交给EPA设备10的发送引擎12。发送引擎12可以基于该设备数据构建存储器写请求报文,该报文的报文头中指示该报文的目的地址是上述第一PCIe总线地址,有效数据是该设备数据。这里,存储器写请求报文可以是根据PCIe总线协议构建的TLP,其包括报文头、有效数据和校验部分(如循环冗余校验(CRC))。根据PCIe总线协议,TLP可以在发送端(这里是EPA设备10)的事务层与接收端(这里是主机20)的事务层之间传输。

发送引擎12执行该存储器写请求报文,以通过PCIe总线30将该设备数据写入到接收缓冲区中。

在将设备数据写入到接收缓冲区中之后,发送引擎12还可以例如根据PCIe接口配置空间模块16中的中断寄存器信息向主机20发送中断通知,以向主机20指示存在新的设备数据。

从主机20的角度,在该设备数据被写入接收缓冲区之后,接收操作系统的中断处理函数的通知,并且响应于接收到该中断处理函数的通知,从接收缓冲区中读取该设备数据。

这里,操作系统的中断处理函数的通知可以是如上所述由发送引擎12向主机20发送的中断通知触发的,并且从接收缓冲区中读取该设备数据可以是由主机20的用户程序模块26执行的。用户程序模块26从接收缓冲区中读取该设备数据包括将该接收缓冲区中的数据内容(即设备数据)拷贝给用户程序模块26。

然而,如果在将接收缓冲区中的数据内容拷贝给用户程序模块26之前(即没有及时拷贝给用户程序模块26),EPA设备10又向主机20的接收缓冲区执行了另一次存储器写请求,则取决于接收缓冲区是包含一个接收内存页还是多个接收内存页,主机20处可以执行不同的操作。

在一些实施例中,接收缓冲区包括一个接收内存页。在这种情况下,接收缓冲区所对应的第一PCIe总线地址只有一个,因此EPA设备10可能会以该第一PCIe总线地址为目的地址持续构建和执行存储器写请求报文以写入不同的设备数据。

如果主机20在读取该接收内存页中的设备数据之前没有从EPA设备10接收到另一设备数据,则主机20可以直接从接收缓冲区中读取该设备数据。

如果主机20在读取该接收内存页中的设备数据之前从EPA设备10接收到了另一设备数据,则主机20将从接收缓冲区中读取该另一设备数据。也就是说,该接收缓冲区中的设备数据被EPA设备10新写入的另一设备数据所覆盖,从而主机20读取的是新写入的另一设备数据而无法读取被覆盖的设备数据。根据EPA协议的特性,EPA系统中传输的数据有较高的实时性,因此该另一设备数据可能是更实时的数据,仅使用一个接收内存页是可以允许的。

在另一些实施例中,接收缓冲区可以包括多个接收内存页。在这种情况下,接收缓冲区所对应的第一PCIe总线地址有多个,即每个接收内存页一个,因此EPA设备10可以分别以不同的第一PCIe总线地址为目的地址来构建和执行存储器写请求报文以写入不同的设备数据。

在这种情况下,不管主机20在读取该设备数据之前是否从EPA设备10接收到另一设备数据,其都可以从该接收缓冲区中的一个接收内存页读取该设备数据。如果在读取该设备数据之前还从EPA设备10接收到了另一设备数据,则主机20还可以从该接收缓冲区中的另一接收内存页读取该另一设备数据。在这种情况下,EPA设备10和主机20可以为该另一设备数据单独执行上述操作,以使得EPA设备10能够基于该另一接收内存页所对应的第一PCIe总线地址读取该另一设备数据。也就是说,对不同的设备数据分别执行独立的传输过程。

对于主机设备的传输,如图2中所示,在步骤240,在驱动器22执行驱动释放之前,主机20将要发送给EPA设备10的主机数据写入发送缓冲区以使得EPA设备10能够基于第二PCIe总线地址从发送缓冲区读取该主机数据。

图5示出了根据本发明一些实施例的主机数据的传输过程的流程图。

如图5中所示,在子步骤242,主机20(例如主机20的用户程序模块26)将主机数据拷贝到发送缓冲区。

在子步骤244,主机20的驱动器22向EPA设备10的PCIe接口配置空间模块16写入启动标志。

PCIe接口配置空间模块16响应于该启动标志,通知接收引擎14,以使得接收引擎14能够根据第二PCIe总线地址向发送缓冲区发起存储器读请求报文。该存储器读请求报文的报文头中指示该报文的目的地址是上述第二PCIe总线地址。

在一些实施例中,发送缓冲区仅包括一个发送内存页,其对应的第二PCIe总线地址可以在步骤220中确定之后被驱动器22写入PCIe接口配置空间模块16。在这种情况下,PCIe接口配置空间模块16响应于该启动标志,根据第二PCIe总线地址向发送缓冲区发起存储器读请求报文。

在另一些实施例中,发送缓冲区包括多个发送内存页,每个发送内存页对应的第二PCIe总线地址可以在步骤220中确定之后被驱动器22写入PCIe接口配置空间模块16。在这种情况下,在子步骤244,驱动器22除了向PCIe接口配置空间模块16写入启动标志之外,还应当写入该主机数据所位于的发送内存页的地址信息。这里,地址信息可以包括该主机数据所位于的发送内存页的特定第二PCIe总线地址,或者可以包括该主机数据所位于的发送内存页相对于发送缓冲区的首地址的偏移。PCIe接口配置空间模块16响应于该启动标志和该地址信息,以对应的第二PCIe总线地址作为目的地址向发送缓冲区发起存储器读请求报文。

在上述实施例中,存储器读请求报文不包括要读取的数据的长度,在这种情况下,驱动器22将对整个发送内存页进行读取,有可能造成资源的浪费。对此,在一些实施例中,在子步骤244,主机20的驱动器22向EPA设备10的PCIe接口配置空间模块16除了写入启动标志之外,还可以写入主机数据的数据长度。PCIe接口配置空间模块16响应于该启动标志和该数据长度,根据第二PCIe总线地址向发送缓冲区发起存储器读请求报文,并且该存储器读请求报文中包括该主机数据的数据长度。通过这种方式,驱动器22可以响应于该存储器读请求报文,仅在对应的发送内存页读取该数据长度的主机数据。

在子步骤246,主机20的驱动器22可以从EPA设备10的接收引擎14接收该存储器读请求报文。这里,该存储器读请求报文例如可以是经由主机20的根复合体(rootcomplex)传输给驱动器22的。

在子步骤248,主机20的驱动器22响应于该存储器读请求报文,向EPA设备10发送完成报文。其中,完成报文的有效数据是该主机数据。这里,类似地,存储器读请求报文和完成报文也都可以是根据PCIe总线协议构建的TLP,其包括报文头、有效数据和校验部分。

EPA设备10的接收引擎14在接收到该完成报文时,可以对该完成报文进行解析以提取其中的有效数据(即主机数据)。进一步地,该主机数据还可以被发送给用户模块18以由EPA设备10处理或进一步通过EPA总线传输给EPA系统中的其他EPA设备。

类似地,如果在将发送缓冲区中的数据内容发送给EPA设备10之前,又从用户程序模块26接收了另一主机数据,则取决于发送缓冲区是包含一个发送内存页还是多个发送内存页,主机20处可以执行不同的操作。

在一些实施例中,发送缓冲区包括一个发送内存页。在这种情况下,如果在发送完成报文之前从该主机20的用户程序模块26接收到另一主机数据,则驱动器22可以将该另一主机数据拷贝到发送缓冲区中以覆盖之前的主机数据。此时,完成报文中包含的有效数据将是该另一主机数据而不是之前的主机数据。

在另一些实施例中,发送缓冲区可以包括多个发送内存页。在这种情况下,如果在发送完成报文之前从主机20的用户程序模块26接收到另一主机数据,则驱动器22可以将该另一主机数据拷贝到发送缓冲区中的另一发送内存页。在这种情况下,驱动器22可以为该另一主机数据单独执行上述子步骤244至248的操作,以使得EPA设备10能够基于该另一发送内存页所对应的第二PCIe总线地址读取该另一主机数据。也就是说,对不同的主机数据分别执行独立的传输过程。

以上结合图2至图5对根据本发明的实施例的用于EPA设备的数据传输方法200进行了描述。本领域技术人员可以理解,上述示出和描述的各个步骤的顺序仅仅是示例性的而不用于限制本发明的范围。例如,上述步骤220可以在步骤210之前、之后或同时执行,上述步骤240可以在步骤230之前、之后或同时执行。

图6示出了适合实现本发明的实施例的处理设备600的方框图。处理设备600可以用来实现如图1中所示的EPA设备10或者主机20。

如图所示,处理设备600可以包括处理器610。处理器610控制处理设备600的操作和功能。例如,在某些实施例中,处理器610可以借助于与其耦合的存储器620中所存储的指令630来执行各种操作。存储器620可以是适用于本地技术环境的任何合适的类型,并且可以利用任何合适的数据存储技术来实现,包括但不限于基于半导体的存储器件、磁存储器件和系统、光存储器件和系统。尽管图6中仅仅示出了一个存储器620,但是本领域技术人员可以理解,处理设备600可以包括更多个物理上不同的存储器620。

处理器610可以是适用于本地技术环境的任何合适的类型,并且可以包括但不限于通用计算机、专用计算机、微处理器、数字信号处理器(DSP)以及基于处理器的多核处理器架构中的一个或多个多个。处理设备600也可以包括多个处理器610。处理器610与收发器640耦合,收发器640可以借助于通信接口和/或其他部件来实现信息的接收和发送。

当处理设备600执行上述各种功能时,处理器610和收发器640可以在存储器620中的指令630的控制下配合操作,以实现上文参考图2至图5描述的方法中的EPA设备10或主机20的功能。上文参考图1至图5所描述的所有特征均适用于处理设备600,在此不再赘述。

本发明可以实现为方法、装置、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明的各个方面的计算机可读程序指令。

在一个或多个示例性设计中,可以用硬件、软件、固件或它们的任意组合来实现本发明所述的功能。例如,如果用软件来实现,则可以将所述功能作为一个或多个指令或代码存储在计算机可读介质上,或者作为计算机可读介质上的一个或多个指令或代码来传输。

本文公开的装置的各个单元可以使用分立硬件组件来实现,也可以集成地实现在一个硬件组件,如处理器上。例如,可以用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑、分立硬件组件或用于执行本文所述的功能的任意组合来实现或执行结合本发明所描述的各种示例性的逻辑块、模块和电路。

本领域普通技术人员还应当理解,结合本发明的实施例描述的各种示例性的逻辑块、模块、电路和算法步骤可以实现成电子硬件、计算机软件或二者的组合。

本发明的以上描述用于使本领域的任何普通技术人员能够实现或使用本发明。对于本领域普通技术人员来说,本发明的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本发明的精神和保护范围的情况下应用于其它变形。因此,本发明并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。

16页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种芯片级联并行计算系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!