CN114244790A - PCIe设备与主机设备的通信方法、系统及设备 - Google Patents
PCIe设备与主机设备的通信方法、系统及设备 Download PDFInfo
- Publication number
- CN114244790A CN114244790A CN202210169494.0A CN202210169494A CN114244790A CN 114244790 A CN114244790 A CN 114244790A CN 202210169494 A CN202210169494 A CN 202210169494A CN 114244790 A CN114244790 A CN 114244790A
- Authority
- CN
- China
- Prior art keywords
- queue buffer
- ipc
- pcie
- ipc request
- memory
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9031—Wraparound memory, e.g. overrun or underrun detection
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Systems (AREA)
Abstract
本发明公开了一种PCIe设备与主机设备的通信方法、系统及设备,其中该方法包括:PCIe设备在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据消息长度和该当前可用长度确定第一环形队列缓冲区的当前深度;根据该当前深度确定可写入第一环形队列缓冲区中IPC请求消息的第一数量;将第一数量的消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;第一环形队列缓冲区为将通过PCIe共享的仅能被PCIe访问的预设空间大小的内存配置成的缓冲区;主机设备在接收到第一中断信息时从第一环形队列缓冲区中获取IPC请求消息进行处理。本发明可以保证PCIe设备与主机设备高效安全地进行通信。
Description
技术领域
本发明涉及数据通信技术领域,尤其涉及一种PCIe设备与主机设备的通信方法、系统及设备。
背景技术
本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
目前主机系统对PCIe设备的通信,主要通过以下两种方式:
1. 将PCIe(PCI-Express,peripheral component interconnect express,高速串行计算机扩展总线标准)设备的寄存器空间地址映射到PCIe BAR(Base AddressRegisters,基址寄存器)空间,使设备寄存器空间,暴露在主机侧,然后主机通过对映射的BAR空间进行相关的读写来达到与PCIe设备通信的目的。由于设备寄存器空间暴露在主机端,对于某些敏感寄存器,比如复位、重启等,攻击者可以通过写BAR空间对设备进行一定的攻击,导致PCIe设备异常。
2. 主机访问通过PCIe通道,实现硬件IPC(Inter-Process Communication,进程间通信)通信机制进行获取配置。
上述两种通信方式存在的问题是:
1. 针对PCIe BAR完全映射方式,PCIe设备资源不安全,会被随意篡改。
2. 针对硬件IPC方式:硬件实现的IPC深度小,IPC消息长度固定,使用不方便,导致通信效率低;同时,为了确保通信同步性,一次只能发送一个信息,也会导致通信效率低。
发明内容
本发明实施例提供一种PCIe设备与主机设备的通信方法,用以保证PCIe设备与主机设备高效安全地进行通信,该方法包括:
高速串行计算机扩展总线标准PCIe设备在进程间通信IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
本发明实施例还提供一种PCIe设备与主机设备的通信方法,用以保证PCIe设备与主机设备高效安全地进行通信,该方法应用于PCIe设备,该方法包括:
在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;
将第一数量的IPC请求消息写入第一环形队列缓冲区;
生成第一中断信息发送至主机设备。
本发明实施例还提供一种PCIe设备与主机设备的通信方法,用以保证PCIe设备与主机设备高效安全地进行通信,该方法应用于主机设备,该方法包括:
在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
本发明实施例还提供一种PCIe设备与主机设备的通信系统,用以保证PCIe设备与主机设备高效安全地进行通信,该系统包括:
PCIe设备,用于在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
主机设备,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
本发明实施例还提供一种PCIe设备,用以保证PCIe设备与主机设备高效安全地进行通信,该PCIe设备包括:
第一深度确定单元,用于在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
第一数量确定单元,用于根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中IPC请求消息的第一数量;
第一写入单元,用于将第一数量的IPC请求消息写入第一环形队列缓冲区;
第一中断单元,用于生成第一中断信息发送至主机设备。
本发明实施例还提供一种主机设备,用以保证PCIe设备与主机设备高效安全地进行通信,该主机设备包括:
第二获取单元,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
处理单元,用于对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述PCIe设备与主机设备的通信方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述PCIe设备与主机设备的通信方法。
首先,与现有技术中针对PCIe BAR完全映射方式,PCIe设备资源不安全的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方案中,将通过PCIe共享的预设空间大小的内存作为IPC通信的共享内存,将预设空间大小的内存配置成环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问,基于该预先配置的第一环形队列缓冲区进行PCIe设备与主机设备的通信,可以保证PCIe设备与主机设备之间通信的安全性。
其次,与现有技术中针对硬件IPC方式,硬件实现的IPC深度小,IPC消息长度固定,使用不方便,同时为了确保通信同步性,一次只能发送一个信息,导致通信效率低的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方案中,IPC请求消息长度不固定,PCIe设备根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度,由此可见,第一环形队列缓冲区的深度是实时计算出来的,是弹性深度,根据该弹性深度,将第一数量的IPC请求消息写入第一环形队列缓冲区,支持IPC消息弹性深度和长度;同时,在PCIe设备将第一数量的IPC请求消息写入第一环形队列缓冲区后,触发中断,主机设备在接收到中断后及时查询环形队列缓冲区,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,因此,通过上述可知,本发明实施例保证了PCIe设备与主机设备之间通信的高效性。
综上,本发明实施例提供的PCIe设备与主机设备的通信方案可以保证PCIe设备与主机设备高效安全地进行通信。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中应用于系统的PCIe设备与主机设备的通信方法的流程示意图;
图2为本发明实施例中环形队列缓冲区示意图;
图3为本发明实施例中PCIe设备与主机设备的通信原理示意图;
图4为本发明实施例中应用于PCIe设备的通信方法的流程示意图;
图5为本发明实施例中应用于主机设备的通信方法的流程示意图;
图6为本发明实施例中PCIe设备与主机设备的通信系统的结构示意图;
图7为本发明实施例中PCIe设备的结构示意图;
图8为本发明实施例中主机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
图1为本发明实施例中应用于系统的PCIe设备与主机设备的通信方法的流程示意图,如图1所示,该方法包括如下步骤:
步骤100:高速串行计算机扩展总线标准PCIe设备在进程间通信IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
步骤200:主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
首先,与现有技术中针对PCIe BAR完全映射方式,PCIe设备资源不安全的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方法中,将通过PCIe共享的预设空间大小的内存作为IPC通信的共享内存,将预设空间大小的内存配置成环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问,基于该预先配置的第一环形队列缓冲区进行PCIe设备与主机设备的通信,可以保证PCIe设备与主机设备之间通信的安全性。
其次,与现有技术中针对硬件IPC方式:硬件实现的IPC深度小,IPC消息长度固定,使用不方便,同时为了确保通信同步性,一次只能发送一个信息,导致通信效率低的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方法中,IPC请求消息长度不固定,PCIe设备根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度,由此可见,第一环形队列缓冲区的深度是实时计算出来的,是弹性深度,根据该弹性深度,将第一数量的IPC请求消息写入第一环形队列缓冲区,支持IPC消息弹性深度和长度;同时,在PCIe设备将第一数量的IPC请求消息写入第一环形队列缓冲区后,触发中断,主机设备在接收到中断后及时查询环形队列缓冲区,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,因此,通过上述可知,本发明实施例保证了PCIe设备与主机设备之间通信的高效性。
综上,本发明实施例提供的PCIe设备与主机设备的通信方法可以保证PCIe设备与主机设备高效安全地进行通信。
PCIe(PCI-Express)是最新的总线和接口标准,越来越多的外置高速设备都使用PCIe接口与主机通信。这些通过PCIe接口与主机通信的外置高速设备可以被统称为PCIe设备(例如:显卡、视频加速卡和千兆网卡等),本发明主要以PCIe设备为显卡为例进行说明。下面结合图2和图3,对本发明实施例提供的PCIe设备与主机设备的通信方法进行详细介绍。
具体实施时,在上述步骤100之前的预先配置的步骤中,PCIe BAR映射所有PCIe设备(例如显卡,其GPU)的内存空间(SRAM + DDR),可以通过GPU设备安全配置寄存器配置将内存空间设置为安全和非安全两种,安全即通过PCIe无法访问,非安全则PCIe能够访问。通过PCIe共享一块不涉及安全(预设空间大小的内存仅能被PCIe设备访问)的小内存(预设空间大小的内存,例如4K)作为IPC通信的共享内存,软件的方式将这块小内存配置成环形队列缓冲区;其中:
(1)对于共享一块不涉及安全的小内存,这块小内存可以是芯片内部SRAM(StaticRandom-Access Memory,静态随机存取存储器),也可以是外部的DDR(Double Data RateSDRAM,双倍速率的SDRAM)上某一个区域,可以通过安全控制寄存器和相关的软件配合动态配置。
(2)经过配置后,对于分配出来的作为环形队列缓冲区的内存区域,可通过PCIeBAR读写,其他安全内存区域读写,都会被强制回复全F的值。
具体实施时,在上述步骤100中,通信双方各自有生产者和消费者,环形队列缓冲区深度可按照消息长度变化,弹性深度;具体地:
环形队列缓冲区深度可以理解为环形队列缓冲区可以放多少个IPC消息,存放多少消息是弹性的,根据消息长度来确定,不会在软件建立环形缓冲区时候就定。弹性深度与发生IPC消息通信当时的场景需求相关,场景比如:
(1)发送消息长度接近或者等于环形队列缓冲区最大长度场景,这时候深度就为1,只能存一个消息
(2)发送消息长度特别短场景,那这时深度就为环形队列缓冲区最大长度除上发送消息长度
(3)混合消息长度场景,这时候的深度不确定,需要图2的头指针和尾指针的差值计算缓冲区剩余的长度,来确定缓冲区是否满足下一个消息发送。
为了便于更好地理解本发明如何实施,下面对环形缓冲区数据结构进行介绍。
如图2所示,头指针:指向第一个消息起始地方,每取出一个消息,头指针加上取走消息长度,更新头指针;尾指针:指向最后一个消息结束地方,每写入一个消息,尾指针加上写入消息长度,更新尾指针;环形缓冲区指针,指向缓冲区开始地方。消息:由消息头和消息内容构成,其中,消息头如下表1所示。
表1
具体实施时,通信双方互相发送信息时候,IPC消息可灵活封装实现:
(1)IPC消息长度小于分配环形队列缓冲区最大长度时,可以将消息放入环形缓冲区进行发送。
(2)IPC消息长度大于软件分配环形队列缓冲区时,IPC消息在环形缓冲区只传送显存或者系统内存的地址,通过GPU DMA进行传输。比如分配环形队列缓冲区最大长度为4K,但是发送消息长度为1M,这时候装不下1M数据,可通过如下步骤:
通过上述可知,在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:
PCIe设备在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内,将存放地址写入第一环形队列缓冲区;
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址,将直接存储器访问DMA的目的地址设为所述存放地址,触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
具体实施时,本发明实施例实现SGI中断,通过中断实现IPC消息实时收发,一次可处理多笔IPC消息。
(1)SGI中断也称为软件生成中断,是可以通过软件来触发的一种硬件中断机制。
(2)由于GPU的内存全部都分配给PCIe BAR,且安全控制寄存器将SGI的寄存器配置空间设置为非安全,主机设备就可以通过软件方式配置SGI寄存器产生中断给GPU设备,GPU设备反之也可以通过软件方式配置,通过PCIe MSI产生中断给主机设备。
(3)这种中断机制比设备轮询,有实时性效果,双方可以及时收到中断去查询环形队列缓冲区数据结构,如图2所示。
(4)如图2所示,根据环形缓冲区数据结构头指针、尾指针和消息头的消息内容长度,可以取一个或者多个消息。
在一个实施例中,在上述步骤200中,主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,可以包括:
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,在判断IPC请求消息为同步消息时,在预设时长内处理所述同步消息,得到IPC请求消息的处理结果。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,在判断IPC请求消息为异步消息时,将异步消息放入预先配置的待处理队列,在满足预设处理条件后处理所述异步消息,得到IPC请求消息的处理结果。
具体实施时,支持IPC消息同步和异步模式。
(1)同步消息模式,用于紧急消息、时效性高的消息,需要马上执行,例如,通过IPC消息去获取设备告警温度、功耗、时间戳等。
(2)异步消息模式,用于不紧急消息,时效性不高消息,耗费资源消息,例如通过IPC消息 更新16M flash、获取加密算法处理结果等。
在一个实施例中,主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,可以包括:
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,可以包括:
主机设备根据高优先级同步消息、低优先级同步消息、高优先级异步消息和低优先级异步消息的处理顺序,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
具体实施时,支持IPC优先级处理,根据消息的优先级不同,处理不同优先级别的IPC消息请求。
(1)如图2所示,每个消息的消息头信息中设置有消息优先级,实现了8个同步消息优先级、8个异步消息各优先级和优先级链表,比如当前环形缓冲区中有7个不同优先级别的IPC 消息时,在收到SGI中断后,取出全部消息,对于同步消息,则直接处理并回复;对于异步消息,根据消息优先级分别插入到优先级链表,之后,再根据优先级链表逐个优先级处理。
(2)对于优先级处理顺序:高优先级同步消息>低优先级同步消息>高优先级异步消息>低优先级异步消息。
在一个实施例中,如图3所示,上述PCIe设备与主机设备的通信方法还可以包括:
主机设备在处理完IPC请求消息后,判断IPC请求消息需要回复时,在IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中的IPC答复消息的第二数量,将第二数量的IPC答复消息写入第二环形队列缓冲区;生成第二中断信息发送至PCIe设备;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
PCIe设备在接收到第二中断信息时,从第二环形队列缓冲区中获取第二数量的IPC答复消息。
图3中1-18为设备A给设备B发送一次消息处理过程。设备B给设备A发送消息时候也是同样操作。图3中的设备A可以是主机设备,设备B可以是PCIe设备;或者,设备B可以是主机设备,设备A可以是PCIe设备。另外,为了便于理解本发明如何实施,关于图3中的IPC消息,再做阐述如下:IPC消息可以包括IPC请求消息和IPC答复消息,IPC请求消息可以包括同步消息和异步消息两种。其中:同步请求消息可以是请求获取时间戳、设备温度阈值、风扇转速等实时性高的业务请求消息,这时候同步请求消息对应的IPC答复消息也为同步消息,需要及时答复,实时返回温度和时间戳等信息。异步消息可以是获取固件升级结果、设备日志、开机日志等信息,这种信息时效性不是很高,所以异步消息对应的IPC的答复消息也是异步的,消息回复快慢不影响设备的正常运行。
本发明实施例提供的PCIe设备与主机设备的通信方法通过PCIe BAR映射小内存作为共享内存,通过软件环形缓冲区、SGI中断、security control等方式,实现对GPU的安全实时通信。具体地:
1. SGI中断保证实时性同时,减少硬件复杂度;即软硬件结合,保证实时性同时,不需要硬件复杂实现简单且安全。
2. 弹性深度和长度,支持IPC深度可软件定制;支持不同长度IPC消息;即,软件环形缓冲区管理,支持IPC消息弹性深度和长度。
3. 中断实时处理的同时,支持IPC消息优先级处理和同步异步处理。
本发明实施例中还提供了一种应用于PCIe设备的通信方法,如下面的实施例所述。由于该应用于PCIe设备的通信方法解决问题的原理与应用于系统的PCIe设备与主机设备的通信方法相似,因此该应用于PCIe设备的通信方法的实施可以参见应用于系统的PCIe设备与主机设备的通信方法的实施,重复之处不再赘述。
图4为本发明实施例中应用于PCIe设备的通信方法的流程示意图,如图4所示,该方法包括如下步骤:
步骤101:在进程间通信IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区(图3中的环形缓冲区0)的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
步骤102:根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;
步骤103:将第一数量的IPC请求消息写入第一环形队列缓冲区;
步骤104:生成第一中断信息发送至主机设备。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:
在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内;
将存放地址写入第一环形队列缓冲区。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:在接收到第二中断信息时,从第二环形队列缓冲区(图3中的环形缓冲区1)中获取第二数量的IPC答复消息。
本发明实施例中还提供了一种应用于主机设备的通信方法,如下面的实施例所述。由于该应用于主机设备的通信方法解决问题的原理与应用于系统的PCIe设备与主机设备的通信方法相似,因此该应用于主机设备的通信方法的实施可以参见应用于系统的PCIe设备与主机设备的通信方法的实施,重复之处不再赘述。
图5为本发明实施例中应用于主机设备的通信方法的流程示意图,如图5所示,该方法包括如下步骤:
步骤201:在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
步骤202:对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:
在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址;
将直接存储器访问DMA的目的地址设为所述存放地址;
触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
在一个实施例中,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,可以包括:
在判断IPC请求消息为同步消息时,在预设时长内处理所述同步消息,得到IPC请求消息的处理结果。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:在判断IPC请求消息为异步消息时,将异步消息放入预先配置的待处理队列,在满足预设处理条件后处理所述异步消息,得到IPC请求消息的处理结果。
在一个实施例中,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,包括:
根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,可以包括:
根据高优先级同步消息、低优先级同步消息、高优先级异步消息和低优先级异步消息的处理顺序,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,上述PCIe设备与主机设备的通信方法还可以包括:
在处理完IPC请求消息后判断IPC请求消息需要回复,IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中的IPC答复消息的第二数量;
将第二数量的IPC答复消息写入第二环形队列缓冲区;
生成第二中断信息发送至PCIe设备。
本发明实施例中还提供了一种PCIe设备与主机设备的通信系统,如下面的实施例所述。由于该系统解决问题的原理与应用于系统的PCIe设备与主机设备的通信方法相似,因此该系统的实施可以参见应用于系统的PCIe设备与主机设备的通信方法的实施,重复之处不再赘述。
图6为本发明实施例中PCIe设备与主机设备的通信系统的结构示意图,如图6所示,该系统包括:
PCIe设备01,用于在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
主机设备02,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,所述PCIe设备还用于在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存,将存放地址写入第一环形队列缓冲区;
在一个实施例中,所述主机设备还用于在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址,将直接存储器访问DMA的目的地址设为所述存放地址,触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
在一个实施例中,所述主机设备还用于在处理完IPC请求消息后判断IPC请求消息需要回复时,在IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中的IPC答复消息的第二数量,将第二数量的IPC答复消息写入第二环形队列缓冲区;生成第二中断信息发送至PCIe设备;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
所述PCIe设备还用于在接收到第二中断信息时,从第二环形队列缓冲区中获取第二数量的IPC答复消息。
本发明实施例中还提供了一种PCIe设备,如下面的实施例所述。由于该PCIe设备解决问题的原理与应用于系统的PCIe设备与主机设备的通信方法相似,因此该PCIe设备的实施可以参见应用于系统的PCIe设备与主机设备的通信方法的实施,重复之处不再赘述。
图7为本发明实施例中PCIe设备的结构示意图,如图7所示,该PCIe设备包括:
第一深度确定单元011,用于在进程间通信IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
第一数量确定单元012,用于根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中IPC请求消息的第一数量;
第一写入单元013,用于将第一数量的IPC请求消息写入第一环形队列缓冲区;
第一中断单元014,用于生成第一中断信息发送至主机设备。
在一个实施例中,上述PCIe设备还可以包括:第一获取单元,用于在接收到第二中断信息时,从第二环形队列缓冲区中获取第二数量的IPC答复消息。
在一个实施例中,上述PCIe设备还可以包括:
存储单元,用于在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内;
所述第一写入单元还用于将所述存放地址写入第一环形队列缓冲区。
本发明实施例中还提供了一种主机设备,如下面的实施例所述。由于该主机设备解决问题的原理与应用于系统的PCIe设备与主机设备的通信方法相似,因此该主机设备的实施可以参见应用于系统的PCIe设备与主机设备的通信方法的实施,重复之处不再赘述。
图8为本发明实施例中主机设备的结构示意图,所述主机设备与PCIe设备进行通信,如图8所示,该主机设备包括:
第二获取单元021,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
处理单元022,用于对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,所述第二获取单元还用于在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址;
所述主机设备还可以包括:
地址设置单元,用于将直接存储器访问DMA的目的地址设为所述存放地址;
数据搬移单元,用于触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
在一个实施例中,所述处理单元具体用于:在判断IPC请求消息为同步消息时,在预设时长内处理所述同步消息,得到IPC请求消息的处理结果。
在一个实施例中,所述处理单元还用于在判断IPC请求消息为异步消息时,将异步消息放入预先配置的待处理队列,在满足预设处理条件后处理所述异步消息,得到IPC请求消息的处理结果。
在一个实施例中,所述处理单元具体用于:根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,所述处理单元具体用于:根据高优先级同步消息、低优先级同步消息、高优先级异步消息和低优先级异步消息的处理顺序,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
在一个实施例中,上述主机设备还可以包括:
第二深度确定单元,用于在处理完IPC请求消息后判断IPC请求消息需要回复,IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
第二数量确定单元,用于根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中IPC答复消息的第二数量;
第二写入单元,用于将第二数量的IPC答复消息写入第二环形队列缓冲区;
第二中断单元,用于生成第二中断信息发送至PCIe设备。
本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述PCIe设备与主机设备的通信方法。
本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述PCIe设备与主机设备的通信方法。
首先,与现有技术中针对PCIe BAR完全映射方式,PCIe设备资源不安全的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方案中,将通过PCIe共享的预设空间大小的内存作为IPC通信的共享内存,将预设空间大小的内存配置成环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问,基于该预先配置的第一环形队列缓冲区进行PCIe设备与主机设备的通信,可以保证PCIe设备与主机设备之间通信的安全性。
其次,与现有技术中针对硬件IPC方式:硬件实现的IPC深度小,IPC消息长度固定,使用不方便,同时为了确保通信同步性,一次只能发送一个信息,导致通信效率低的技术方案相比,本发明实施例提供的PCIe设备与主机设备的通信方案中,IPC请求消息长度不固定,PCIe设备根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度,由此可见,第一环形队列缓冲区的深度是实时计算出来的,是弹性深度,根据该弹性深度,将第一数量的IPC请求消息写入第一环形队列缓冲区,支持IPC消息弹性深度和长度;同时,在PCIe设备将第一数量的IPC请求消息写入第一环形队列缓冲区后,触发中断,主机设备在接收到中断后及时查询环形队列缓冲区,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,因此,通过上述可知,本发明实施例保证了PCIe设备与主机设备之间通信的高效性。
综上,本发明实施例提供的PCIe设备与主机设备的通信方案可以保证PCIe设备与主机设备高效安全地进行通信。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (21)
1.一种PCIe设备与主机设备的通信方法,其特征在于,包括:
高速串行计算机扩展总线标准PCIe设备在进程间通信IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
2.如权利要求1所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:
PCIe设备在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内,将存放地址写入第一环形队列缓冲区;
主机设备在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址,将直接存储器访问DMA的目的地址设为所述存放地址,触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
3.如权利要求1所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:
主机设备在处理完IPC请求消息后判断IPC请求消息需要回复时,在IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中的IPC答复消息的第二数量,将第二数量的IPC答复消息写入第二环形队列缓冲区;生成第二中断信息发送至PCIe设备;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
PCIe设备在接收到第二中断信息时,从第二环形队列缓冲区中获取第二数量的IPC答复消息。
4.一种PCIe设备与主机设备的通信方法,其特征在于,该方法应用于PCIe设备,该方法包括:
在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;
将第一数量的IPC请求消息写入第一环形队列缓冲区;
生成第一中断信息发送至主机设备。
5.如权利要求4所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:
在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内;
将存放地址写入第一环形队列缓冲区。
6.如权利要求4所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:在接收到第二中断信息时,从第二环形队列缓冲区中获取第二数量的IPC答复消息。
7.一种PCIe设备与主机设备的通信方法,其特征在于,该方法应用于主机设备,该方法包括:
在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
8.如权利要求7所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:
在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址;
将DMA的目的地址设为所述存放地址;
触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
9.如权利要求7所述的PCIe设备与主机设备的通信方法,其特征在于,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,包括:
在判断IPC请求消息为同步消息时,在预设时长内处理所述同步消息,得到IPC请求消息的处理结果。
10.如权利要求9所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:在判断IPC请求消息为异步消息时,将异步消息放入预先配置的待处理队列,在满足预设处理条件后处理所述异步消息,得到IPC请求消息的处理结果。
11.如权利要求7所述的PCIe设备与主机设备的通信方法,其特征在于,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,包括:
根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
12.如权利要求11所述的PCIe设备与主机设备的通信方法,其特征在于,根据IPC请求消息的同步异步标识和优先级标识,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果,包括:
根据高优先级同步消息、低优先级同步消息、高优先级异步消息和低优先级异步消息的处理顺序,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
13.如权利要求7所述的PCIe设备与主机设备的通信方法,其特征在于,还包括:
在处理完IPC请求消息后判断IPC请求消息需要回复,IPC请求消息对应的IPC答复消息长度小于或等于预先配置的第二环形队列缓冲区的当前可用长度时,根据IPC答复消息长度和第二环形队列缓冲区的当前可用长度,确定第二环形队列缓冲区的当前深度;所述第二环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;所述IPC答复消息为IPC请求消息的处理结果;
根据第二环形队列缓冲区的当前深度,确定可写入第二环形队列缓冲区中的IPC答复消息的第二数量;
将第二数量的IPC答复消息写入第二环形队列缓冲区;
生成第二中断信息发送至PCIe设备。
14.一种PCIe设备与主机设备的通信系统,其特征在于,包括:
PCIe设备,用于在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中的IPC请求消息的第一数量;将第一数量的IPC请求消息写入第一环形队列缓冲区;生成第一中断信息发送至主机设备;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
主机设备,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息,对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
15.一种PCIe设备,其特征在于,所述PCIe设备与主机设备进行通信,所述PCIe设备包括:
第一深度确定单元,用于在IPC请求消息长度小于或等于预先配置的第一环形队列缓冲区的当前可用长度时,根据IPC请求消息长度和第一环形队列缓冲区的当前可用长度,确定第一环形队列缓冲区的当前深度;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
第一数量确定单元,用于根据第一环形队列缓冲区的当前深度,确定可写入第一环形队列缓冲区中IPC请求消息的第一数量;
第一写入单元,用于将第一数量的IPC请求消息写入第一环形队列缓冲区;
第一中断单元,用于生成第一中断信息发送至主机设备。
16.如权利要求15所述PCIe设备,其特征在于,还包括:存储单元,用于在IPC请求消息长度大于第一环形队列缓冲区的当前可用长度时,将IPC请求消息的内容存放在PCIe设备的内存或系统内存内;
所述第一写入单元还用于将存放地址写入第一环形队列缓冲区。
17.一种主机设备,其特征在于,所述主机设备与PCIe设备进行通信,所述主机设备包括:
第二获取单元,用于在接收到第一中断信息时,从第一环形队列缓冲区中获取第一数量的IPC请求消息;所述第一环形队列缓冲区为将通过PCIe共享的预设空间大小的内存预先配置成的环形队列缓冲区,所述预设空间大小的内存仅能被PCIe设备访问;
处理单元,用于对第一数量的IPC请求消息进行处理,得到IPC请求消息的处理结果。
18.如权利要求17所述的主机设备,其特征在于,所述第二获取单元还用于在接收到第一中断信息时,从第一环形队列缓冲区中获取存放地址;
所述主机设备还包括:
地址设置单元,用于将DMA的目的地址设为所述存放地址;
数据搬移单元,用于触发DMA搬移,将IPC请求消息的内容搬移到预设地址的内存内。
19.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13任一所述方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至13任一所述方法。
21.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至13任一所述方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169494.0A CN114244790B (zh) | 2022-02-24 | 2022-02-24 | PCIe设备与主机设备的通信方法、系统及设备 |
CN202210667664.8A CN114945009B (zh) | 2022-02-24 | 2022-02-24 | PCIe总线连接的设备间进行通信的方法、设备及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210169494.0A CN114244790B (zh) | 2022-02-24 | 2022-02-24 | PCIe设备与主机设备的通信方法、系统及设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210667664.8A Division CN114945009B (zh) | 2022-02-24 | 2022-02-24 | PCIe总线连接的设备间进行通信的方法、设备及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114244790A true CN114244790A (zh) | 2022-03-25 |
CN114244790B CN114244790B (zh) | 2022-07-12 |
Family
ID=80747942
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210169494.0A Active CN114244790B (zh) | 2022-02-24 | 2022-02-24 | PCIe设备与主机设备的通信方法、系统及设备 |
CN202210667664.8A Active CN114945009B (zh) | 2022-02-24 | 2022-02-24 | PCIe总线连接的设备间进行通信的方法、设备及系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210667664.8A Active CN114945009B (zh) | 2022-02-24 | 2022-02-24 | PCIe总线连接的设备间进行通信的方法、设备及系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114244790B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116303130A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 存储设备异步事件上报方法及其应用设备 |
WO2023201987A1 (zh) * | 2022-04-19 | 2023-10-26 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168259B (zh) * | 2022-09-06 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种数据存取方法、装置、设备和计算机可读存储介质 |
CN117743248A (zh) * | 2023-12-22 | 2024-03-22 | 成都北中网芯科技有限公司 | 一种实现PCIe配置空间的方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106470A1 (en) * | 2007-10-23 | 2009-04-23 | Brocade Communications Systems, Inc. | Host bus adapter with multiple hosts |
CN102255794A (zh) * | 2010-05-17 | 2011-11-23 | 塔塔咨询服务有限公司 | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 |
US20170046202A1 (en) * | 2014-04-30 | 2017-02-16 | Huawei Technologies Co.,Ltd. | Computer, control device, and data processing method |
US20190303223A1 (en) * | 2018-04-02 | 2019-10-03 | Micron Technology, Inc. | Grouping Requests to Reduce Inter-Process Communication in Memory Systems |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1286038C (zh) * | 2003-10-17 | 2006-11-22 | 中兴通讯股份有限公司 | 基于双环形队列、非中断式pci通信方法 |
KR20110072023A (ko) * | 2009-12-22 | 2011-06-29 | 삼성전자주식회사 | 휴대 단말기의 프로세서 간 데이터 통신 방법 및 장치 |
US8745291B2 (en) * | 2011-10-04 | 2014-06-03 | Qualcomm Incorporated | Inter-processor communication apparatus and method |
CN107368379B (zh) * | 2017-07-14 | 2020-07-10 | 中南大学 | 面向EVP的跨Guest OS进程间通信方法及系统 |
US10789110B2 (en) * | 2018-09-28 | 2020-09-29 | Apple Inc. | Methods and apparatus for correcting out-of-order data transactions between processors |
CN109508241B (zh) * | 2018-11-20 | 2021-04-20 | 中国电子科技集团公司第五十四研究所 | 一种进程间数据交换方法 |
CN113742269B (zh) * | 2021-11-03 | 2022-02-22 | 浙江国利信安科技有限公司 | 用于epa设备的数据传输方法、处理设备和介质 |
-
2022
- 2022-02-24 CN CN202210169494.0A patent/CN114244790B/zh active Active
- 2022-02-24 CN CN202210667664.8A patent/CN114945009B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090106470A1 (en) * | 2007-10-23 | 2009-04-23 | Brocade Communications Systems, Inc. | Host bus adapter with multiple hosts |
CN102255794A (zh) * | 2010-05-17 | 2011-11-23 | 塔塔咨询服务有限公司 | 远程消息收发吞吐量优化和等待时间缩短用系统和方法 |
US20170046202A1 (en) * | 2014-04-30 | 2017-02-16 | Huawei Technologies Co.,Ltd. | Computer, control device, and data processing method |
US20190303223A1 (en) * | 2018-04-02 | 2019-10-03 | Micron Technology, Inc. | Grouping Requests to Reduce Inter-Process Communication in Memory Systems |
Non-Patent Citations (2)
Title |
---|
徐健等: "基于PCIE非透明桥的嵌入式异构平台设计", 《微电子学与计算机》 * |
王元强等: "一种基于FPGA的PCIe总线高速异步传输系统", 《单片机与嵌入式系统应用》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023201987A1 (zh) * | 2022-04-19 | 2023-10-26 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN116303130A (zh) * | 2023-05-16 | 2023-06-23 | 苏州浪潮智能科技有限公司 | 存储设备异步事件上报方法及其应用设备 |
CN116303130B (zh) * | 2023-05-16 | 2023-08-15 | 苏州浪潮智能科技有限公司 | 存储设备异步事件上报方法及其应用设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114945009B (zh) | 2023-04-25 |
CN114244790B (zh) | 2022-07-12 |
CN114945009A (zh) | 2022-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114244790B (zh) | PCIe设备与主机设备的通信方法、系统及设备 | |
US8332866B2 (en) | Methods, systems, and apparatus for object invocation across protection domain boundaries | |
CN112612734B (zh) | 文件传输方法、装置、计算机设备及存储介质 | |
US11095626B2 (en) | Secure in-line received network packet processing | |
CN112650558B (zh) | 数据处理方法、装置、可读介质和电子设备 | |
US20140006668A1 (en) | Performing Emulated Message Signaled Interrupt Handling | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
CN114281484B (zh) | 数据传输方法、装置、设备及存储介质 | |
US11010165B2 (en) | Buffer allocation with memory-based configuration | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
EP3644182A1 (en) | Container isolation method and device for netlink resource | |
EP3465450B1 (en) | Improving throughput in openfabrics environments | |
CN109857553B (zh) | 内存管理方法及装置 | |
CN114297129A (zh) | 一种基于zynq7010的面向报文双核通信实现方法 | |
CN112306693B (zh) | 数据包的处理方法和设备 | |
CN113407357B (zh) | 进程间数据搬移的方法及装置 | |
US11038856B2 (en) | Secure in-line network packet transmittal | |
US11093405B1 (en) | Shared mid-level data cache | |
US9378163B2 (en) | Method to accelerate message signaled interrupt processing | |
US11036643B1 (en) | Mid-level instruction cache | |
CN115002840A (zh) | 设备数据传输方法、装置、电子设备及存储介质 | |
KR20150048028A (ko) | 데이터 전송 관리 방법 | |
CN116455849B (zh) | 一种面向众核处理器的并发通信方法、装置、设备和介质 | |
WO2023207456A1 (zh) | 命令传输方法和装置 | |
US20230106923A1 (en) | Storage system |
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 |