CN109558250A - 一种基于fpga的通信方法、设备、主机及异构加速系统 - Google Patents
一种基于fpga的通信方法、设备、主机及异构加速系统 Download PDFInfo
- Publication number
- CN109558250A CN109558250A CN201811302945.3A CN201811302945A CN109558250A CN 109558250 A CN109558250 A CN 109558250A CN 201811302945 A CN201811302945 A CN 201811302945A CN 109558250 A CN109558250 A CN 109558250A
- Authority
- CN
- China
- Prior art keywords
- request command
- queue
- virtual memory
- work queue
- fpga
- 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
Links
Classifications
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种基于FPGA的通信方法、设备、主机及异构加速系统。本申请实施例中,在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。
Description
技术领域
本申请涉及数据传输技术领域,尤其涉及一种基于FPGA的通信方法、设备、主机及异构加速系统。
背景技术
随着大数据、人工智能的发展,计算需求迅猛上涨,软件工作负荷急速增长,这要求处理器在面对高强度数据处理任务时能够提供更好的性能。但是,通用处理器需要兼顾计算和控制,这导致通用处理器的计算通用性强,但计算性能一般。为解决这一困境,可使用现场可编程门阵列(Field-Programmable Gate Array,FPGA)作为通用处理器的协处理器进行异构加速。
异构加速的主要原理为:多处理器间进行数据共享和搬移,以及请求控制信息的交换。然而,由于不同处理器的时延、吞吐等性能差别很大,因此,如何实现多处理器间高效协同工作成为异构加速的关键。
发明内容
本申请的多个方面提供一种基于FPGA的通信方法、设备、主机及异构加速系统,以实现多处理器高效协同工作,提高异构加速效率。
本申请实施例提供一种基于FPGA的通信方法,适用于异构加速系统中的主机,所述异构加速系统还包括基于FPGA的加速设备,所述方法包括:
根据应用程序的处理需求生成请求命令;
将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;
从所述完成队列中读取所述请求命令的已完成状态信息;
基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。
本实施例还提供一种基于FPGA的通信方法,适用于异构加速系统中基于FPGA的加速设备,所述异构加速系统还包括主机,所述方法包括:
接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;
根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;
根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。
本申请实施例还提供一种基于FPGA的加速设备,适用于异构加速系统,所述加速设备包括:接口单元、队列管理单元和数据处理单元;
所述接口单元,用于接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;
所述队列管理单元,用于根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;
所述数据处理单元,用于根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。
本申请实施例还提供一种主机,适用于异构加速系统,所述主机包括:接口单元和CPU单元;
所述接口单元,用于与异构加速系统中的基于FPGA的加速设备连接;
所述CPU单元,用于根据应用程序的处理需求生成请求命令;
将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理;从完成队列中读取所述基于FPGA的加速设备写入的所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息,获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。
本申请实施例还提供一种异构加速系统,包括:主机和基于FPGA的加速设备;
所述主机,用于根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备;从完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令;
所述基于FPGA的加速设备,用于接收所述主机提供的所述请求命令在工作队列中的位置信息;根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入所述完成队列中。
在本申请实施例中,在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一实施例提供的一种异构加速系统的结构示意图;
图2为本申请一实施例提供的一种工作队列的结构示意图;
图3为本申请一实施例提供的一种请求命令的结构示意图;
图4为本申请一实施例提供的一种已完成状态信息的结构示意图;
图5为本申请另一实施例提供的一种基于FPGA的加速设备的结构示意图;
图6为本申请又一实施例提供的主机的结构示意图;
图7为本申请又一实施例提供的一种基于FPGA的通信方法的流程示意图;
图8为本申请又一实施例提供的另一种基于FPGA的通信方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在现有技术中,由于不同处理器的时延、吞吐等性能差别很大,多处理器之间的异构加速效率并不高。针对该技术问题,本申请实施例提供一种解决方案,主要原理是:在异构加速系统中主机和基于FPGA的加速设备之间采用工作队列和完成队列的机制进行协同工作,简化了交互流程;且来自主机的请求命令和来自加速设备的已完成状态信息存储在不同工作队列,即不同存储区域中,避免了主机和基于FPGA的加速设备通信过程中对同一存储区域的同时读或同时写造成的读写竞争,可有效提高通信效率。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一实施例提供的一种异构加速系统的结构示意图。如图1所示,该异构加速系统包括:主机10和基于FPGA的加速设备11。
主机10,用于根据应用程序的处理需求,生成请求命令;将请求命令写入一工作队列12中,并向基于FPGA的加速设备11提供请求命令在工作队列12中的位置信息,以供基于FPGA的加速设备11对工作队列12中的请求命令进行处理,并将请求命令的已完成状态信息写入完成队列;以及从完成队列13中读取请求命令的已完成状态信息;基于请求命令的已完成状态信息,获取请求命令对应的数据处理结果,并在工作队列12中删除请求命令。其中,应用程序是指运行于主机10上的上层应用,例如可以是购物类应用程序、游戏类应用程序、理财类应用程序等等。
基于FPGA的加速设备11,用于接收主机10提供的请求命令在工作队列12中的位置信息,请求命令是主机10根据应用程序的处理需求生成并写入工作队列12中的;根据请求命令在工作队列12中的位置信息从工作队列12中读取请求命令;根据请求命令进行数据处理,并在数据处理完成后,将请求命令的已完成状态信息写入完成队列13中。
本申请实施例中,主机10可以是基于x86CPU或者是ARM的主机设备,相应地,异构加速系统可以是x86CPU+FPGA形式的系统结构,也可以是ARM+FPGA形式的系统架构。当然,主机10还可以是基于其它通用处理器的主机设备,异构加速系统也可是其它形式的系统架构,本实施例对此不做限定。另外,本实施例提供的异构加速系统可以应用的加速场景包括但不限于处理器间内存数据搬移、算法加速。
本实施例中,主机10和基于FPGA的加速设备11之间通过接口单元连接。在一些场景中,主机10和基于FPGA的加速设备11之间的接口单元可采用高速串行计算机扩展接口实现,当然也可采用其它类型的接口实现。在另一些场景中,主机10和基于FPGA的加速设备11之间的接口单元还可通过无线通信端口实现。本实施例对此不做限定。
在一些可选实施方式中,在主机10上可以安装设备驱动程序,主机10执行设备驱动程序可实现上述功能。可选地,主机10上除了运行有设备驱动程序之外,还可以运行其它应用程序。其它应用程序可以是上文提及的上层应用程序,这些应用程序可以和用户进行交互,可以向主机10下发处理任务,也可将处理结果反馈给用户。设备驱动程序用于对基于FPGA的加速设备11进行初始化配置,以及将应用程序的请求转化为基于FPGA的加速设备11能够理解的命令。设备驱动程序可对主机10或基于FPGA的加速设备11上的数据进行封装,并将封装后的数据在两者之间传递。
主机10可根据基于FPGA的加速设备11的处理能力,确定工作队列12和完成队列13的数量和规格。例如,可根据基于FPGA的加速设备11上的缓存空间大小,确定工作队列12和完成队列13的队列深度,还可根据基于FPGA的加速设备11上的数据处理单元的处理速度确定工作队列12和完成队列13的最大数量。设备驱动程序运行后,可在主机10内存上创建工作队列12和完成队列13,并将队列信息初始化配置到基于FPGA的加速设备11上,队列信息主要包括队列的类型、编号、寻址信息等等。
可选地,工作队列12和完成队列13位于主机10内存中,基于FPGA的加速设备11可根据主机10在其上初始化配置的队列信息,访问工作队列12或完成队列13,例如,可通过直接内存存取DMA方式向主机10内存中的工作队列12或完成队列13请求或发送队列数据。
工作队列12和完成队列13均可采用环形先入先出队列FIFO的队列形式。队列的基本单元为基块,每个队列可包含若干基块。对于工作队列12来说,每个工作队列12中可包含若干个请求指令,每个请求命令可占用多个基块。而对完成队列13来说,每个完成队列13中也可包含若干条已完成状态信息,每条已完成状态信息仅需占用一个基块。其中,队列中的头指针等同于FIFO中的读指针,头指针指向当前的应读位置;队列中的尾指针等同于FIFO中的写指针,尾指针指向当前的应写位置。主机10可以将队列信息初始化配置到基于FPGA的加速设备11上时,队列中的头指针和尾指针均初始化为0。
图2为本申请实施例提供的一种工作队列12的结构示意图,如图2所示,工作队列12中包含多个基块,根据使用状态的不同,可将基块划分为可用基块,已完成待回收的请求命令基块,处理中的请求命令基块及待处理的请求命令基块,图中分别用不同图形表示不同状态的基块。其中,头指针(图中的head ptr)指向当前的应读位置,尾指针(图中的tailptr)指向当前的应写位置。
本实施例中,主机10负责工作队列12的写处理,并维护工作队列12的尾指针;基于FPGA的加速设备11负责工作队列12的读处理,并维护工作队列12的头指针;主机10负责完成队列13的读处理,并维护完成队列13的头指针;基于FPGA的加速设备11负责完成队列13的写处理,并维护完成队列13的尾指针。主机10可将工作队列12的尾指针的更新情况提供给基于FPGA的加速设备11,而基于FPGA的加速设备11则在本地自行更新工作队列12的头指针。基于FPGA的加速设备可将完成队列13的尾指针的更新情况提供给主机10,而主机10在本地自行更新完成队列13的头指针。通过工作队列12和完成队列13的指针同步,可实现主机10和基于FPGA的加速设备11的协同工作。
以下将以主机10上运行的某一应用程序为例,对异构加速系统中主机10和基于FPGA的加速设备11的通信过程进行描述。应当理解的是,不同的应用程序在主机10上运行时,主机10和基于FPGA的加速设备11之间的通信过程类似。
应用程序将其处理需求通知主机10上的设备驱动程序。其中应用程序的处理需求可包括应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息等。例如,word应用程序请求对一word文件进行修改处理,则可将该word文件包含的数据块作为待处理数据块。设备驱动程序可基于应用程序的处理需求封装请求命令,应用程序可将封装后的请求命令写入一工作队列12中。其中,请求控制信息可包含请求命令的唯一标识、命令类型等信息。值得说明的是,应用程序可能对应有多个处理需求,对此,设备驱动程序可将多个处理需求分别封装为请求命令,并将封装后的多个请求命令写入一个或多个工作队列12中。应用程序可按实际需要确定向基于FPGA的加速设备11提供请求命令在工作队列中的位置信息的时机,例如,可在将多个请求命令写入工作队列12后向基于FPGA的加速设备11提供多个请求命令在工作队列2中的位置信息,也可在将一个请求命令写入工作队列12后向基于FPGA的加速设备11提供该请求命令在工作队列中的位置信息,当然还可以采用其它规则,本实施例对此不做限定。
对基于FPGA的加速设备11来说,当接收到主机10发送的请求命令在工作队列中的位置信息时,可根据位置信息对应的工作队列12以及初始化配置的该工作队列12的队列信息,确定位置信息对应的工作队列12的存储位置,并根据工作队列12中包含的待处理的请求命令的个数及本地初始化配置的队列信息,从主机10内存中以DMA的方式读取待处理的请求命令。可选地,基于FPGA的加速设备11可在本地设置请求命令缓存cache,并进行请求命令的预取,以减少访问主机10内存的等待,提高处理效率。
读取到待处理的请求命令后,基于FPGA的加速设备11解析待处理的请求命令,获取请求命令中的至少一个待处理数据块在虚拟内存空间中的存储地址和请求控制信息,根据请求命令中的至少一个待处理数据块在虚拟内存空间中的存储地址通过DMA的方式读取主机10内存中的至少一个待处理数据块,并根据请求命令中的请求控制信息,对读取到的至少一个待处理数据块进行数据处理。在数据处理完成后,基于FPGA的加速设备11可将数据处理结果写入应用程序对应的虚拟内存空间中供主机10读取,并可根据初始化配置的完成队列13的队列信息,将请求命令的已完成状态信息写入一完成队列13中。基于FPGA的加速设备11可根据本地初始化配置的队列信息,确定完成队列13在主机10上的存储位置,并可以DMA的方式将请求命令的已完成状态信息写入该完成队列13中。其中,该完成队列13可以是与请求命令在工作队列中的位置信息中涉及的工作队列12有对应关系的完成队列13,工作队列12和完成队列13的对应关系可由设备驱动程序初始化配置到队列信息中。例如,工作队列12和完成队列13可基于队列编号进行绑定,多个工作队列12可对应同一完成队列13。
可选地,基于FPGA的加速设备11可根据请求命令在工作队列中的位置信息中涉及的工作队列12是否为空状态判断工作队列12中是否包含待处理的请求命令。工作队列12的空满规则可设定为:当工作队列12的头指针等于尾指针时,队列为空状态;当尾指针比头指针小1时,队列为将满状态。由于队列空状态和满状态时,工作队列12的头指针都等于尾指针,为了避免基于FPGA的加速设备11对队列状态造成误判,不对工作队列12定义满状态。基于FPGA的加速设备11可根据请求命令在工作队列中的位置信息对应的工作队列12的头指针和尾指针,判断工作队列12是否为非空状态,当工作队列12为非空状态时,确定工作队列12中包含待处理的请求命令。
在将请求命令的已完成状态信息写入完成队列13后,在一种实现方式中,基于FPGA的加速设备11可将该完成队列13对应的中断上报至主机10,主机10可根据中断请求解析该完成队列13中的请求命令的已完成状态信息。
在另一种实现方式中,主机10可采用轮询的方式监听主机10内存中各个完成队列13的更新情况,当监听到完成队列13中包含新的已完成状态信息时解析该完成队列13中的请求命令的已完成状态信息。在该实现方式中,主机10判断完成队列13中包含新的已完成状态信息时,可在本地维护一个计数器,该计数器的计数位宽为log2depth+1,其中,depth为队列深度,主机10每读一个已完成状态信息,计数器加1。主机10将cnt[log2depth]作为本地标志位,基于FPGA的加速设备11向完成队列13中写入已完成状态信息时,该已完成状态信息也可携带标志位。
可选地,可将cnt[log2depth-1:0]作为完成队列13的头指针,约定完成队列13中的内容初始化为0,即初始状态时,完成队列13中包含的已完成状态信息都是旧的;同时,约定主机10的本地标志位初始化为1,基于FPGA的加速设备11的标志位初始化为1,即主机10和基于FPGA的加速设备11上的标志为保持一致。则,当基于FPGA的加速设备11向完成队列13中写入新的已完成状态信息时,该新的已完成状态信息将携带有基于FPGA的加速设备的标志位,因此,该新的已完成状态信息的标志位将与主机10的本地标志位一致。
据此,主机10可根据完成队列13中的已完成状态信息携带的标志位判断该已完成状态信息是否为新的,从而可避免误判,尤其是针对同一请求命令的标志循环使用的情形,可有效避免误判。其中,完成队列13中的已完成状态信息写完一圈后,可将基于FPGA的加速设备11及主机10的标志位分别翻转,循环往复使用。值得说明的是,主机10的本地标志位的初始值以及基于FPGA的加速设备的标志位的初始值还可以约定为其它值,只要主机10的本地标志位初始值与完成队列13中内容的初始值相反,即默认完成队列13中内容是旧的;且主机10和基于FPGA的加速设备11的标志位一致即可。
主机10解析完成队列13中请求命令的已完成状态信息后,可获取基于FPGA的加速设备11发送的该请求命令对应的数据处理结果,并在工作队列12中删除该请求命令,也即释放该请求命令在工作队列12中占用的队列空间及在主机10中占用的内存空间。
在本申请实施例中,异构加速系统中主机10和基于FPGA的加速设备11之间采用工作队列12和完成队列13的机制进行协同工作,简化了交互流程;且工作队列12中的请求命令和完成队列13中的已完成状态信息存储在不同存储区域,避免了主机10和基于FPGA的加速设备11通信过程中对同一存储区域的同时读或同时写,可有效提高通信效率。
在上述或下述实施例中,主机10可为应用程序分配虚拟内存空间。主机10上的设备驱动程序在接收到应用程序的内存注册请求后,可为应用程序分配虚拟内存空间。并将虚拟内存空间的key、handle等信息返回给应用程序,以便应用程序根据虚拟内存空间的地址将至少一个待处理数据块存储到虚拟内存空间中。为了便于待处理数据块的地址映射,应用程序可将待处理数据块存储在一段连续的虚拟内存空间中,这样,针对任一待处理数据块而言,虽然其可能被存储在分散的物理地址中,但其对应的虚拟地址是连续的。其中,在为应用程序分配虚拟内存空间后,主机10可通过其MMU对应用程序对应的虚拟内存空间执行地址映射处理,从空闲的物理空间中确定应用程序的虚拟内存空间可映射的物理空间并通知应用程序,应用程序可据此确定出一段连续的虚拟地址所对应的物理空间。
根据应用程序分配到的虚拟内存空间,设备驱动程序可从应用程序的处理需求中,获取应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息;根据数据处理结果所需存储空间的大小信息,从应用程序对应的虚拟内存空间中为数据处理结果分配存储地址;根据至少一个待处理数据块在虚拟内存空间中的存储地址、数据处理结果在虚拟内存空间中的存储地址以及请求控制信息,生成请求命令。其中,数据处理结果是指基于FPGA的加速设备对待处理数据块进行数据处理后产生的结果,数据处理结果可以是日志文件,也可以是结果数据,本实施例对此不做限定。例如,当通过基于FPGA的设备执行修改word文件的处理时,修改后的word文件可作为数据处理结果。
本实施例中,将应用程序的虚拟内存空间划分为两部分,分别为用于存储至少一个待处理数据块的存储区域和用于存储至少一个待处理数据块对应的数据处理结果的存储区域。设备驱动程序在封装请求命令时,将至少一个待处理数据块在虚拟内存空间中的存储地址、数据处理结果在虚拟内存空间中的存储地址以及请求控制信息封装至请求命令中,据此,当基于FPGA的加速设备11在解析请求命令后,可获取到该请求命令中,至少一个待处理数据块对应的数据处理结果在应用程序的虚拟内存空间中的存储地址,基于FPGA的加速设备11可据此将数据处理结果回传至正确的位置,以便主机10可成功获取到数据处理结果。
本实施例中,应用程序对应的虚拟内存空间可以包括多个虚拟内存块,也即该虚拟内存空间可包括多个不连续的存储区块。每个虚拟内存块内的虚拟地址连续即可。设备驱动程序还将为每个虚拟内存块分配唯一的索引标识,并将每个虚拟内存块的索引标识以及其他属性信息返回给应用程序,以便至少一个待处理数据块存储到虚拟内存空间后,可针对每个待处理数据块,将待处理数据块所处的虚拟内存块的索引标识及待处理数据块在其所处的虚拟内存块中的虚拟地址等信息携带在待处理数据块在虚拟内存空间中的存储地址中并发送至设备驱动程序。据此,设备驱动程序封装后的请求命令中可携带至少一个待处理数据块各种所处的虚拟内存块的索引标识及至少一个待处理数据块在各自所处的虚拟内存块中的虚拟地址。
值得说明的是,应用程序的一个处理需求可对应至少一个待处理数据块,至少一个待处理数据块可存储在应用程序的虚拟内存空间中的多个虚拟内存块内;同样,至少一个待处理数据块对应的数据处理结果的存储地址也可配置在多个虚拟内存块中。该处理需求对应的请求命令中将携带有至少一个待处理数据块各自所在的虚拟内存块的索引标识及虚拟地址及数据处理结果所在的虚拟内存块的索引标识及虚拟地址。基于FPGA的加速设备11可通过解析请求命令获知至少一个待处理数据块各自所在的虚拟内存块的索引标识及虚拟地址及数据处理结果所在的虚拟内存块的索引标识及虚拟地址,并据此从主机10中读取数据或向主机10回传数据。
图3为本申请实施例提供的一种请求命令的结构示意图。如图3所示,该请求命令包括三部分:ctrl_segment控制块信息,携带请求控制信息;多个send_segment待处理数据块信息(图3中仅示出1个),携带待处理数据块的存储地址等信息;多个receive_segment结果数据块信息(图3中仅示出1个),携带数据处理结果的存储地址等信息。每个控制块信息可根据需要确定占用几个基块,例如,图2中所示的最后一个请求命令基块中,控制块信息(图2中的Ctrl_seg)占用了两个基块,当然,在其它场景中,控制块信息也可只占用一个基块,本实施例对此不做限定。每个待处理数据块信息和每个结果数据块信息分别占用1个基块。其中,每个待处理数据块信息和每个结果数据块信息中均携带有其所对应的虚拟内存块的索引标识(图3中的密钥key)。
设备驱动程序还可建立每个虚拟内存块对应的虚拟地址与物理地址的映射关系,并将每个虚拟内存块对应的虚拟地址与物理地址的映射关系分别存储至每个虚拟内存块对应的地址转换表中。应用程序对应的每个虚拟内存块都将获得一地址转换表,可选地,地址转换表中可包含对应的虚拟内存块的索引标识。地址转换表存储在主机10内存中。
设备驱动程序还可将每个虚拟内存块的属性信息分别配置到基于FPGA的加速设备11中,其中,虚拟内存块的属性信息中至少包括虚拟内存块的索引标识、起始地址、页大小及对应的地址转换表的寻址信息。设备驱动程序可在基于FPGA的加速设备11的内存中创建针对每个虚拟内存块的环境context空间,并将虚拟内存块的属性信息初始化配置到对应的context空间中。该Context空间可分为2级,第一级位于基于FPGA的加速设备11的本地RAM中,第一级存储空间较小;第二级位于基于FPGA的加速设备11的主存或外接DDR中,根据最大支持的虚拟内存块个数进行预分配,第二级存储空间较大。当虚拟内存块个数规格较小时也可只用第一级存储。设备驱动程序可优先将虚拟内存块的属性信息配置到第一级存储中的context空间中。这样可以提高context空间的访问效率。另外,基于FPGA的加速设备11最大支持的虚拟内存块个数取决于第二级存储,而由于基于FPGA的加速设备11的主存或外接DDR的容量一般比较大,因此,context空间的可扩展性好,可存储足够多的context空间。
在完成基于FPGA的加速设备11上的context空间的配置后,基于FPGA的加速设备11可承担地址转换的工作。基于FPGA的加速设备11可接收来自不同通道的地址转换请求:
当地址转换请求为在根据请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址,获取至少一个待处理数据块过程中产生的时,基于FPGA的加速设备11可从请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址中,获取每个待处理数据块所处的虚拟内存块的索引标识及每个待处理数据块在其所处的虚拟内存块中的虚拟地址;根据每个待处理数据块所处的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得每个待处理数据块所处的虚拟内存块所对应的地址转换表;根据每个待处理数据块所处的虚拟内存块所对应的地址转换表以及每个待处理数据块在其所处的虚拟内存块中的虚拟地址,确定每个待处理数据块对应的物理地址;根据每个待处理数据块对应的物理地址,从相应物理存储空间中获取至少一个待处理数据块。
当地址转换请求为在根据请求命令中携带的数据处理结果在虚拟内存空间中的存储地址将数据处理结果写入应用程序对应的虚拟内存空间中过程中产生的时,基于FPGA的加速设备11可从请求命令中携带的数据处理结果在虚拟内存空间中的存储地址中,确定用于存储数据处理结果的虚拟内存块的索引标识以及虚拟内存块中用于存储数据处理结果的虚拟地址;根据用于存储数据处理结果的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得用于存储数据处理结果的虚拟内存块的所对应的地址转换表;根据用于存储数据处理结果的虚拟内存块的所对应的地址转换表以及虚拟内存块中用于存储数据处理结果的虚拟地址,确定用于存储数据处理结果的物理存储空间的物理地址;根据用于存储数据处理结果的物理存储空间的物理地址,将数据处理结果写入用相应的物理存储空间中。
本实施例中,基于FPGA的加速设备11可根据地址转换请求中携带的虚拟内存块的索引标识,访问该虚拟内存块对应的context空间,并从context空间解析出该虚拟内存块的属性信息,然后根据该属性信息中该虚拟内存块的起始地址及地址转换请求中携带的虚拟地址,确定地址转换请求中携带的虚拟地址相对于该虚拟内存块的起始地址的偏移量;根据偏移量及虚拟内存块的页大小,定位地址转换请求中的虚拟地址在该虚拟内存块对应的地址转换表中的目标页;查询对应的地址转换表中的目标页,以确定出地址转换请求中包含的虚拟地址对应的物理地址,完成地址转换。
例如,基于FPGA的加速设备11在解析请求命令后,可获取到请求命令中携带的至少一个待处理数据块在虚拟内存空间中的存储地址,基于FPGA的加速设备11可根据至少一个待处理数据块在虚拟内存空间中的存储地址携带的至少一个虚拟内存块的索引标识,访问每个虚拟内存块对应的context空间,并从context空间解析出每个虚拟内存块的属性信息,然后根据该属性信息查询对应的地址转换表中的目标页,以确定出地址转换请求中包含的虚拟地址对应的物理地址,完成地址转换。
又例如,基于FPGA的加速设备11在完成请求命令的处理并生成该请求命令的至少一个待处理数据对应的数据处理结果后,可根据请求命令中携带的至少一个待处理数据块对应的数据处理结果的虚拟地址,确定数据处理结果对应的至少一个虚拟内存块的索引标识,访问每个虚拟内存块对应的context空间,并从context空间解析出每个虚拟内存块的属性信息,然后根据该属性信息查询对应的地址转换表中的目标页,以确定出地址转换请求中包含的虚拟地址对应的物理地址,完成地址转换。
其中,基于FPGA的加速设备11可在本地创建地址转换表cache,在接受到地址转换请求时,可先在cache中查找是否存在所需的目标页,如果不存在,可通过DMA方式从主机10内存中取回目标页,还可在取回目标页的基础上,根据cache的存储空间大小,取回目标页后续的若干页,以备用。根据内存访问的空间局部性和时间局部性特点,这可极大提高地址转换效率。
在上述或下述实施例中,为了保证基于FPGA的加速设备11可及时接收到主机10发送的请求命令在工作队列中的位置信息,可在基于FPGA的加速设备11上设定一用户可访问区域(User Accessible Region),后文中称之为UAR寄存器。UAR寄存器可映射至应用程序的虚拟内存空间,应用程序可直接访问基于FPGA的加速设备11上的UAR寄存器。
本实施例中,设备驱动程序在封装完请求命令后,根据本地的工作队列12的尾指针的当前位置,将封装完的请求命令写入尾指针指向的当前应写入位置,应用程序将工作队列12的尾指针移动至下一写入位置。在设备驱动程序对请求命令的写入处理完成后,应用程序可向基于FPGA的加速设备11发送请求命令在工作队列中的位置信息,该请求命令在工作队列中的位置信息中携带有工作队列12中移动后的尾指针的位置,根据该请求命令在工作队列中的位置信息,该工作队列12中移动后的尾指针的位置将被写入基于FPGA的加速设备11中与该工作队列12对应的UAR寄存器中;基于FPGA的加速设备11将根据本地维护的该工作队列12的头指针的位置以及请求命令在工作队列中的位置信息中该工作队列12中移动后的尾指针的位置,确定该工作队列12中是否包含待处理的请求命令,并对待处理的请求命令进行处理。
本实施例中,应用程序将工作队列12中移动后的尾指针的位置写入基于FPGA的加速设备11中的UAR寄存器的实现方式有多种。
在一种实现方式中,基于FPGA的加速设备11上为每个队列分配一UAR寄存器,应用程序根据其当前操作的工作队列12,将该工作队列12中移动后的尾指针的位置写入该工作队列12对应的UAR寄存器中,也即是,更新该工作队列12对应的UAR寄存器中保存的尾指针的位置至最新位置。
该实现方式中,针对不同的任务需求,应用程序每次操作的工作队列12可能各不相同,这导致应用程序可能需要面对多个UAR寄存器,处理过程比较复杂,而且,可能存在多个应用程序共用一个UAR寄存器的情况,安全性和处理效率都比较低。
在另一种实现方式中,为进一步提高数据处理的安全和处理效率,设备驱动程序可为每个应用程序分配唯一的身份标识,应用程序对应的工作队列12将绑定该应用程序的身份标识。设备驱动程序可将每个应用程序的身份标识初始化配置到基于FPGA的加速设备11上。基于FPGA的加速设备11则为每个应用程序分配一UAR空间,每个UAR空间可绑定其对应的应用程序的身份标识。其中,UAR空间是指基于FPGA的加速设备11中的一存储空间。为了方便地址映射,每个UAR空间的大小可以设定为4kb。UAR空间可以页表的形式存放空间地址,页表中可包含若干空间项,每个空间项可用来存放物理地址及该物理地址所属的UAR寄存器,当然,本实施例对此不作限定。每个UAR空间内至少包含工作队列对应的UAR寄存器,工作队列对应的UAR寄存器用于存储工作队列12的指针位置。可选地,每个UAR空间内还可包含完成队列对应的UAR寄存器,完成队列对应的UAR寄存器用于存储完成队列13的指针位置,还可包含事件队列对应的UAR寄存器,事件队列对应的UAR寄存器用于存储事件队列的指针位置。UAR空间将被映射到其对应的应用程序在主机10内存上的虚拟内存空间,对每个应用程序来说,其无法访问到其它应用程序对应的UAR空间。
本实现方式中,应用程序可将工作队列12的编号、工作队列对应的UAR寄存器的寻址信息及工作队列12中移动后的尾指针的位置发送至基于FPGA的加速设备,基于FPGA的加速设备11根据工作队列对应的UAR寄存器寻址信息确定应用程序期望访问的UAR寄存器,根据工作队列12的编号确定期望更新的工作队列12,进而确定该工作队列12绑定的应用程序;之后可判断该请求命令在工作队列中的位置信息对应的工作队列12绑定的应用程序与当前被请求的UAR寄存器所属的UAR空间绑定的应用程序是否一致。当判断结果为一致时,允许应用程序将工作队列12中移动后的尾指针的位置写入至UAR空间中的工作对了对应的UAR寄存器中。应用程序可根据工作队列12的编号和UAR寄存器寻址信息,将工作队列12中移动后的尾指针的位置写入确定出的UAR寄存器中,也即,更新确定出的UAR寄存器中对应编号的工作队列12中的尾指针至最新位置。其中,UAR寄存器寻址信息可采用:PCIe BAR基地址+身份标识+UAR空间的形式。
本实现方式中,每个应用程序对应唯一的UAR空间,且每个应用程序只能访问其对应的UAR空间,这实现了用户隔离,提高了安全性。同时,对于每个应用程序来说,与其相关的所有工作队列12都将写入其对应的UAR空间中的工作队列对应的UAR寄存器,多个工作队列12共享同一UAR寄存器,优化了UAR空间,且简化了应用软件的处理过程。
在上述或下述实施例中,对于基于FPGA的加速设备11来说,可在数据处理完成后,生成待处理的请求命令对应的已完成状态信息,其中,已完成状态信息中携带有请求命令的唯一标识;根据工作队列12与完成队列13的对应关系,将请求命令对应的已完成状态信息写入请求命令所在的工作队列12对应的完成队列13中。
图4为本申请实施例提供的一种已完成状态信息的结构示意图。如图4所示,已完成状态信息中可携带请求命令的唯一标识(图4中的命令索引号)、请求命令所在工作队列12的编号(图4中的工作队列号)、数据处理结果的长度以及前述实施例中提及的用于证明已完成状态信息新旧状态的标志位等信息。
本实施例中,基于FPGA的加速设备11将请求命令的唯一标识携带在请求命令对应的已完成状态信息中,这使得基于FPGA的加速设备11可乱序处理请求命令,也即是,基于FPGA的加速设备11无需按照工作队列12中的请求命令的顺序进行工作,而是可以乱序处理,而且可并行处理多个请求命令,这可大大提高数据处理速度。
在上述或下述实施例中,基于FPGA的加速设备11还可在基于FPGA的加速设备11中发生预设事件时,生成预设事件对应的事件描述信息;将事件描述信息写入一事件队列中并通知至主机10,以供主机10在获知预设事件后执行对策处理。
本实施例中,事件队列可采用与完成队列13相似的结构,即每个事件描述信息占用事件队列的一个基块,事件描述信息中可携带相关的工作队列12的编号、事件内容等信息。其中,基于FPGA的加速设备11中的预设事件可由设备驱动程序预先配置,当然也可由基于FPGA的加速设备11自身根据处理能力进行预先配置。本实施例对此不做限定。
本实施例中,采用专门的事件队列,将基于FPGA的加速设备11上发生的异常事件或需要主机10干预的事件通知主机10,这使得主机10可及时干预相关的事件,保证异构加速系统的正常运行。
图5为本申请另一实施例提供的一种基于FPGA的加速设备的结构示意图。如图5所示,该加速设备包括:接口单元50、队列管理单元51和数据处理单元52;
接口单元50,用于接收主机提供的待处理的请求命令在工作队列中的位置信息,请求命令是主机根据应用程序的处理需求生成并写入工作队列中的;
队列管理单元51,用于根据请求命令在工作队列中的位置信息从工作队列中读取请求命令;
数据处理单元52,用于根据请求命令进行数据处理,并在数据处理完成后,将请求命令的已完成状态信息写入完成队列中,以供主机基于完成队列中请求命令的已完成状态信息获取请求命令对应的数据处理结果并在工作队列中删除请求命令。
在一可选实施例中,请求命令包括:应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果在虚拟内存空间中的存储地址,数据处理单元52在根据请求命令进行数据处理时,用于:
根据请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址,获取至少一个待处理数据块;
根据请求命令中携带的请求控制信息对至少一个待处理数据块进行数据处理以得到数据处理结果,并根据请求命令中携带的数据处理结果在虚拟内存空间中的存储地址将数据处理结果写入应用程序对应的虚拟内存空间中。
在一可选实施例中,数据处理单元52在根据请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址,获取至少一个待处理数据块时,用于:
从请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址中,获取每个待处理数据块所处的虚拟内存块的索引标识及每个待处理数据块在其所处的虚拟内存块中的虚拟地址;
根据每个待处理数据块所处的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得每个待处理数据块所处的虚拟内存块所对应的地址转换表;
根据每个待处理数据块所处的虚拟内存块所对应的地址转换表以及每个待处理数据块在其所处的虚拟内存块中的虚拟地址,确定每个待处理数据块对应的物理地址;
根据每个待处理数据块对应的物理地址,从相应物理存储空间中获取至少一个待处理数据块;
数据处理单元52在根据请求命令中携带的数据处理结果在虚拟内存空间中的存储地址将数据处理结果写入应用程序对应的虚拟内存空间中时,用于:
从请求命令中携带的数据处理结果在虚拟内存空间中的存储地址中,确定用于存储数据处理结果的虚拟内存块的索引标识以及虚拟内存块中用于存储数据处理结果的虚拟地址;
根据用于存储数据处理结果的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得用于存储数据处理结果的虚拟内存块的所对应的地址转换表;
根据用于存储数据处理结果的虚拟内存块的所对应的地址转换表以及虚拟内存块中用于存储数据处理结果的虚拟地址,确定用于存储数据处理结果的物理存储空间的物理地址;
根据用于存储数据处理结果的物理存储空间的物理地址,将数据处理结果写入用相应的物理存储空间中。
在一可选实施例中,数据处理单元52在数据处理完成后,将请求命令的已完成状态信息写入完成队列中时,用于:
在数据处理完成后,生成请求命令的已完成状态信息;
根据工作队列与完成队列的对应关系,将请求命令的已完成状态信息写入请求命令所在的工作队列对应的完成队列中。
在一可选实施例中,数据处理单元52在接收到主机提供的待处理的请求命令在工作队列中的位置信息时,用于:
接收主机发送的写请求,写请求用于向基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中写入的工作队列的尾指针的位置;
判断工作队列绑定的应用程序与UAR寄存器所属的UAR空间绑定的应用程序是否一致;
当判断结果为一致时,允许主机将工作队列的尾指针的位置写入至UAR寄存器;
数据处理单元52在根据请求命令在工作队列中的位置信息从工作队列中读取请求命令时,用于:
根据写入UAR寄存器中的工作队列的尾指针的位置确定工作队列中是否包含待处理的请求命令,并在工作队列中包含待处理的请求命令时,从工作队列中读取待处理的请求命令。
在一可选实施例中,数据处理单元52还用于:
在基于FPGA的加速设备中发生预设事件时,生成预设事件对应的事件描述信息;
将事件描述信息写入事件队列中并通知至主机,以供主机在获知预设事件后执行对策处理。
图6为本申请又一实施例提供的主机的结构示意图。如图6所示,该主机包括:接口单元60和CPU单元61;
接口单元60,用于与异构加速系统中的基于FPGA的加速设备连接;
CPU单元61,用于根据应用程序的处理需求生成请求命令;
将请求命令写入工作队列中,并将请求命令在工作队列中的位置信息提供给基于FPGA的加速设备,以供基于FPGA的加速设备对工作队列中的请求命令进行处理;从完成队列中读取基于FPGA的加速设备写入的请求命令的已完成状态信息;基于请求命令的已完成状态信息,获取请求命令对应的数据处理结果并在工作队列中删除请求命令。
在一可选实施例中,CPU单元61根据应用程序的处理需求,生成请求命令时,用于:
从应用程序的处理需求中,获取应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息;
根据数据处理结果所需存储空间的大小信息,从应用程序对应的虚拟内存空间中为数据处理结果分配存储地址;
根据至少一个待处理数据块在虚拟内存空间中的存储地址、数据处理结果在虚拟内存空间中的存储地址以及请求控制信息,生成请求命令。
在一可选实施例中,CPU单元61在从应用程序的处理需求中,获取应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息之前,还用于:
根据应用程序发送的内存注册请求,为应用程序分配包括多个虚拟内存块的虚拟内存空间,并为虚拟内存空间中的每个虚拟内存块分配唯一的索引标识;
建立每个虚拟内存块对应的虚拟地址与物理地址的映射关系,并将每个虚拟内存块对应的虚拟地址与物理地址的映射关系分别存储至每个虚拟内存块对应的地址转换表中;
将每个虚拟内存块的索引标识、起始地址、页大小及对应的地址转换表的寻址信息作为每个虚拟内存块的属性信息,分别配置到基于FPGA的加速设备中。
在一可选实施例中,CPU单元61在将请求命令写入工作队列中时,用于:
将请求命令写入工作队列的尾指针指向的当前写入位置,并将工作队列的尾指针移动至下一写入位置;
CPU单元61在将请求命令在工作队列中的位置信息提供给基于FPGA的加速设备,以供基于FPGA的加速设备对工作队列中的请求命令进行处理时,用于:
将工作队列中移动后的尾指针的位置写入基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中,以触发基于FPGA的加速设备对工作队列中的请求命令进行处理。
在一可选实施例中,CPU单元61在将工作队列中移动后的尾指针的位置写入基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中之前,还用于:
在基于FPGA的加速设备中为应用程序分配UAR空间,UAR空间中包含与工作队列对应的UAR寄存器;
将应用程序与UAR寄存器的对应关系配置到基于FPGA的加速设备中。
图7为本申请又一实施例提供的一种基于FPGA的通信方法的流程示意图,适用于异构加速系统中的主机,该方法包括:
700、根据应用程序的处理需求生成请求命令;
701、将请求命令写入工作队列中,并将请求命令在工作队列中的位置信息提供给基于FPGA的加速设备,以供基于FPGA的加速设备对工作队列中的请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;
702、从完成队列中读取请求命令的已完成状态信息;
703、基于请求命令的已完成状态信息,获取请求命令对应的数据处理结果,并在工作队列中删除请求命令。
在一可选实施例中,步骤700,包括:
从应用程序的处理需求中,获取应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息;
根据数据处理结果所需存储空间的大小信息,从应用程序对应的虚拟内存空间中为数据处理结果分配存储地址;
根据至少一个待处理数据块在虚拟内存空间中的存储地址、数据处理结果在虚拟内存空间中的存储地址以及请求控制信息,生成请求命令。
在一可选实施例中,在从应用程序的处理需求中,获取应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息之前,该方法还包括:
根据应用程序发送的内存注册请求,为应用程序分配包括多个虚拟内存块的虚拟内存空间,并为虚拟内存空间中的每个虚拟内存块分配唯一的索引标识;
建立每个虚拟内存块对应的虚拟地址与物理地址的映射关系,并将每个虚拟内存块对应的虚拟地址与物理地址的映射关系分别存储至每个虚拟内存块对应的地址转换表中;
将每个虚拟内存块的索引标识、起始地址、页大小及对应的地址转换表的寻址信息作为每个虚拟内存块的属性信息,分别配置到基于FPGA的加速设备中。
在一可选实施例中,步骤701,包括:
将请求命令写入工作队列的尾指针指向的当前写入位置,并将工作队列的尾指针移动至下一写入位置;
步骤将请求命令在工作队列中的位置信息提供给基于FPGA的加速设备,以供基于FPGA的加速设备对工作队列中的请求命令进行处理,包括:
将工作队列中移动后的尾指针的位置写入基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中,以触发基于FPGA的加速设备对工作队列中的请求命令进行处理。
在一可选实施例中,在将工作队列中移动后的尾指针的位置写入基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中之前,该方法还包括:
在基于FPGA的加速设备中为应用程序分配UAR空间,UAR空间中包含与工作队列对应的UAR寄存器;
将应用程序与UAR寄存器的对应关系配置到基于FPGA的加速设备中。
图8为本申请又一实施例提供的另一种基于FPGA的通信方法的流程示意图,该方法适用于异构加速系统中基于FPGA的加速设备,该方法包括:
800、接收主机提供的待处理的请求命令在工作队列中的位置信息,请求命令是主机根据应用程序的处理需求生成并写入工作队列中的;
801、根据请求命令在工作队列中的位置信息从工作队列中读取请求命令;
802、根据请求命令进行数据处理,并在数据处理完成后,将请求命令的已完成状态信息写入完成队列中,以供主机基于完成队列中请求命令的已完成状态信息获取请求命令对应的数据处理结果并在工作队列中删除请求命令。
在一可选实施例中,请求命令包括:应用程序请求处理的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址、对至少一个待处理数据块进行数据处理所需的请求控制信息以及至少一个待处理数据块对应的数据处理结果在虚拟内存空间中的存储地址,则在根据请求命令进行数据处理时,该方法包括:
根据请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址,获取至少一个待处理数据块;
根据请求命令中携带的请求控制信息对至少一个待处理数据块进行数据处理以得到数据处理结果,并根据请求命令中携带的数据处理结果在虚拟内存空间中的存储地址将数据处理结果写入应用程序对应的虚拟内存空间中。
在一可选实施例中,步骤根据请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址,获取至少一个待处理数据块,包括:
从请求命令中携带的至少一个待处理数据块在应用程序对应的虚拟内存空间中的存储地址中,获取每个待处理数据块所处的虚拟内存块的索引标识及每个待处理数据块在其所处的虚拟内存块中的虚拟地址;
根据每个待处理数据块所处的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得每个待处理数据块所处的虚拟内存块所对应的地址转换表;
根据每个待处理数据块所处的虚拟内存块所对应的地址转换表以及每个待处理数据块在其所处的虚拟内存块中的虚拟地址,确定每个待处理数据块对应的物理地址;
根据每个待处理数据块对应的物理地址,从相应物理存储空间中获取至少一个待处理数据块;
步骤根据请求命令中携带的数据处理结果在虚拟内存空间中的存储地址将数据处理结果写入应用程序对应的虚拟内存空间中,包括:
从请求命令中携带的数据处理结果在虚拟内存空间中的存储地址中,确定用于存储数据处理结果的虚拟内存块的索引标识以及虚拟内存块中用于存储数据处理结果的虚拟地址;
根据用于存储数据处理结果的虚拟内存块的索引标识查询主机预先配置的虚拟内存空间包含的每个虚拟内存块的属性信息,以获得用于存储数据处理结果的虚拟内存块的所对应的地址转换表;
根据用于存储数据处理结果的虚拟内存块的所对应的地址转换表以及虚拟内存块中用于存储数据处理结果的虚拟地址,确定用于存储数据处理结果的物理存储空间的物理地址;
根据用于存储数据处理结果的物理存储空间的物理地址,将数据处理结果写入用相应的物理存储空间中。
在一可选实施例中,在数据处理完成后,将请求命令的已完成状态信息写入完成队列中时,该方法包括:
在数据处理完成后,生成请求命令的已完成状态信息;
根据工作队列与完成队列的对应关系,将请求命令的已完成状态信息写入请求命令所在的工作队列对应的完成队列中。
在一可选实施例中,步骤801包括:
接收主机发送的写请求,写请求用于向基于FPGA的加速设备中与工作队列对应的用户可访问区域UAR寄存器中写入的工作队列的尾指针的位置;
判断工作队列绑定的应用程序与UAR寄存器所属的UAR空间绑定的应用程序是否一致;
当判断结果为一致时,允许主机将工作队列的尾指针的位置写入至UAR寄存器;
在根据请求命令在工作队列中的位置信息从工作队列中读取请求命令时,该方法包括:
根据写入UAR寄存器中的工作队列的尾指针的位置确定工作队列中是否包含待处理的请求命令,并在工作队列中包含待处理的请求命令时,从工作队列中读取待处理的请求命令。
在一可选实施例中,该方法还包括:
在基于FPGA的加速设备中发生预设事件时,生成预设事件对应的事件描述信息;
将事件描述信息写入一事件队列中并通知至主机,以供主机在获知预设事件后执行对策处理。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU单元)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (14)
1.一种基于FPGA的通信方法,适用于异构加速系统中的主机,所述异构加速系统还包括基于FPGA的加速设备,其特征在于,所述方法包括:
根据应用程序的处理需求生成请求命令;
将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,并将所述请求命令的已完成状态信息写入完成队列;
从所述完成队列中读取所述请求命令的已完成状态信息;
基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。
2.根据权利要求1所述的方法,其特征在于,所述根据应用程序的处理需求生成请求命令,包括:
从所述应用程序的处理需求中,获取所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息;
根据所述数据处理结果所需存储空间的大小信息,从所述应用程序对应的虚拟内存空间中为所述数据处理结果分配存储地址;
根据所述至少一个待处理数据块在所述虚拟内存空间中的存储地址、所述数据处理结果在所述虚拟内存空间中的存储地址以及所述请求控制信息,生成所述请求命令。
3.根据权利要求2所述的方法,其特征在于,在从所述应用程序的处理需求中,获取所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果所需存储空间的大小信息之前,还包括:
根据所述应用程序发送的内存注册请求,为所述应用程序分配包括多个虚拟内存块的虚拟内存空间,并为所述虚拟内存空间中的每个虚拟内存块分配唯一的索引标识;
建立每个虚拟内存块对应的虚拟地址与物理地址的映射关系,并将每个虚拟内存块对应的虚拟地址与物理地址的映射关系分别存储至对应的虚拟内存块对应的地址转换表中;
将每个虚拟内存块的索引标识、起始地址、页大小及对应的地址转换表的寻址信息作为对应的虚拟内存块的属性信息,分别配置到所述基于FPGA的加速设备中。
4.根据权利要求1-3任一所述的方法,其特征在于,所述将所述请求命令写入工作队列中,包括:
将所述请求命令写入所述工作队列的尾指针指向的当前写入位置,并将所述工作队列的尾指针移动至下一写入位置;
所述将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理,包括:
将所述工作队列中移动后的尾指针的位置写入所述基于FPGA的加速设备中与所述工作队列对应的用户可访问区域UAR寄存器中,以触发所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理。
5.根据权利要求4所述的方法,其特征在于,在将所述工作队列中移动后的尾指针的位置写入所述基于FPGA的加速设备中与所述工作队列对应的用户可访问区域UAR寄存器中之前,还包括:
在所述基于FPGA的加速设备中为所述应用程序分配UAR空间,所述UAR空间中包含与所述工作队列对应的UAR寄存器;
将所述应用程序与所述UAR寄存器的对应关系配置到所述基于FPGA的加速设备中。
6.一种基于FPGA的通信方法,适用于异构加速系统中基于FPGA的加速设备,所述异构加速系统还包括主机,其特征在于,所述方法包括:
接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;
根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;
根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。
7.根据权利要求6所述的方法,其特征在于,所述请求命令包括:所述应用程序请求处理的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址、对所述至少一个待处理数据块进行数据处理所需的请求控制信息以及所述至少一个待处理数据块对应的数据处理结果在所述虚拟内存空间中的存储地址,则所述根据所述请求命令进行数据处理,包括:
根据所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址,获取所述至少一个待处理数据块;
根据所述请求命令中携带的请求控制信息对所述至少一个待处理数据块进行数据处理以得到数据处理结果,并根据所述请求命令中携带的数据处理结果在所述虚拟内存空间中的存储地址将所述数据处理结果写入所述应用程序对应的虚拟内存空间中。
8.根据权利要求7所述的方法,其特征在于,所述根据所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址,获取所述至少一个待处理数据块,包括:
从所述请求命令中携带的至少一个待处理数据块在所述应用程序对应的虚拟内存空间中的存储地址中,获取每个待处理数据块所处的虚拟内存块的索引标识及每个待处理数据块在其所处的虚拟内存块中的虚拟地址;
根据每个待处理数据块所处的虚拟内存块的索引标识查询所述主机预先配置的所述虚拟内存空间包含的每个虚拟内存块的属性信息,以获得每个待处理数据块所处的虚拟内存块所对应的地址转换表;
根据每个待处理数据块所处的虚拟内存块所对应的地址转换表以及每个待处理数据块在其所处的虚拟内存块中的虚拟地址,确定每个待处理数据块对应的物理地址;
根据所述每个待处理数据块对应的物理地址,从相应物理存储空间中获取所述至少一个待处理数据块;
所述根据所述请求命令中携带的数据处理结果在所述虚拟内存空间中的存储地址将所述数据处理结果写入所述应用程序对应的虚拟内存空间中,包括:
从所述请求命令中携带的数据处理结果在所述虚拟内存空间中的存储地址中,确定用于存储所述数据处理结果的虚拟内存块的索引标识以及所述虚拟内存块中用于存储所述数据处理结果的虚拟地址;
根据用于存储所述数据处理结果的虚拟内存块的索引标识查询所述主机预先配置的所述虚拟内存空间包含的每个虚拟内存块的属性信息,以获得用于存储所述数据处理结果的虚拟内存块的所对应的地址转换表;
根据所述用于存储所述数据处理结果的虚拟内存块的所对应的地址转换表以及所述虚拟内存块中用于存储所述数据处理结果的虚拟地址,确定用于存储所述数据处理结果的物理存储空间的物理地址;
根据用于存储所述数据处理结果的物理存储空间的物理地址,将所述数据处理结果写入用相应的物理存储空间中。
9.根据权利要求6-8任一所述的方法,其特征在于,所述在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,包括:
在数据处理完成后,生成所述请求命令的已完成状态信息;
根据工作队列与完成队列的对应关系,将所述请求命令的已完成状态信息写入所述请求命令所在的工作队列对应的完成队列中。
10.根据权利要求6-8任一所述的方法,其特征在于,所述根据所述请求命令在工作队列中的位置信息所述接收到所述主机提供的待处理的请求命令在工作队列中的位置信息,包括:
接收所述主机发送的写请求,所述写请求用于向所述基于FPGA的加速设备中与所述工作队列对应的用户可访问区域UAR寄存器中写入的所述工作队列的尾指针的位置;
判断所述工作队列绑定的应用程序与所述UAR寄存器所属的UAR空间绑定的应用程序是否一致;
当判断结果为一致时,允许所述主机将所述工作队列的尾指针的位置写入至所述UAR寄存器;
所述根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令,包括:
根据写入所述UAR寄存器中的所述工作队列的尾指针的位置确定所述工作队列中是否包含待处理的请求命令,并在所述工作队列中包含待处理的请求命令时,请求命令在工作队列中的位置信息从所述工作队列中读取所述待处理的请求命令。
11.根据权利要求6-8任一所述的方法,其特征在于,还包括:
在所述基于FPGA的加速设备中发生预设事件时,生成所述预设事件对应的事件描述信息;
将所述事件描述信息写入事件队列中并通知至主机,以供所述主机在获知所述预设事件后执行对策处理。
12.一种基于FPGA的加速设备,适用于异构加速系统,其特征在于,所述加速设备包括:接口单元、队列管理单元和数据处理单元;
所述接口单元,用于接收所述主机提供的待处理的请求命令在工作队列中的位置信息,所述请求命令是所述主机根据应用程序的处理需求生成并写入所述工作队列中的;
所述队列管理单元,用于根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;
所述数据处理单元,用于根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入完成队列中,以供所述主机基于所述完成队列中所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果并在所述工作队列中删除所述请求命令。
13.一种主机,适用于异构加速系统,其特征在于,所述主机包括:接口单元和CPU单元;
所述接口单元,用于与异构加速系统中的基于FPGA的加速设备连接;
所述CPU单元,用于根据应用程序的处理需求生成请求命令;
将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备,以供所述基于FPGA的加速设备对所述工作队列中的所述请求命令进行处理;从完成队列中读取所述基于FPGA的加速设备写入的所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息,获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令。
14.一种异构加速系统,其特征在于,包括:主机和基于FPGA的加速设备;
所述主机,用于根据应用程序的处理需求生成请求命令;将所述请求命令写入工作队列中,并将所述请求命令在所述工作队列中的位置信息提供给所述基于FPGA的加速设备;从完成队列中读取所述请求命令的已完成状态信息;基于所述请求命令的已完成状态信息获取所述请求命令对应的数据处理结果,并在所述工作队列中删除所述请求命令;
所述基于FPGA的加速设备,用于接收所述主机提供的所述请求命令在工作队列中的位置信息;根据所述请求命令在工作队列中的位置信息从所述工作队列中读取所述请求命令;根据所述请求命令进行数据处理,并在数据处理完成后,将所述请求命令的已完成状态信息写入所述完成队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811302945.3A CN109558250A (zh) | 2018-11-02 | 2018-11-02 | 一种基于fpga的通信方法、设备、主机及异构加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811302945.3A CN109558250A (zh) | 2018-11-02 | 2018-11-02 | 一种基于fpga的通信方法、设备、主机及异构加速系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109558250A true CN109558250A (zh) | 2019-04-02 |
Family
ID=65865824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811302945.3A Pending CN109558250A (zh) | 2018-11-02 | 2018-11-02 | 一种基于fpga的通信方法、设备、主机及异构加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109558250A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058816A (zh) * | 2019-04-10 | 2019-07-26 | 中国人民解放军陆军工程大学 | 一种基于ddr的高速多用户队列管理器及方法 |
CN113722090A (zh) * | 2021-07-26 | 2021-11-30 | 浪潮电子信息产业股份有限公司 | 一种任务管理方法、装置、设备及计算机可读存储介质 |
CN113835831A (zh) * | 2021-09-01 | 2021-12-24 | 南京南瑞继保电气有限公司 | 一种数据内存映射方法、装置、电子设备和存储介质 |
CN113868164A (zh) * | 2021-09-28 | 2021-12-31 | 歌尔科技有限公司 | 一种双机通信方法、装置和系统 |
CN114513545A (zh) * | 2022-04-19 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080098269A1 (en) * | 2006-09-29 | 2008-04-24 | Bhavsar Dilip K | Mechanism for concurrent testing of multiple embedded arrays |
US8914799B2 (en) * | 2009-06-30 | 2014-12-16 | Oracle America Inc. | High performance implementation of the OpenMP tasking feature |
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN106502935A (zh) * | 2016-11-04 | 2017-03-15 | 郑州云海信息技术有限公司 | Fpga异构加速系统、数据传输方法及fpga |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
CN107402902A (zh) * | 2017-07-31 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种异构计算平台与基于异构计算平台的加速方法 |
CN107491342A (zh) * | 2017-09-01 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种基于fpga的多虚拟卡使用方法及系统 |
-
2018
- 2018-11-02 CN CN201811302945.3A patent/CN109558250A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080098269A1 (en) * | 2006-09-29 | 2008-04-24 | Bhavsar Dilip K | Mechanism for concurrent testing of multiple embedded arrays |
US8914799B2 (en) * | 2009-06-30 | 2014-12-16 | Oracle America Inc. | High performance implementation of the OpenMP tasking feature |
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN106502935A (zh) * | 2016-11-04 | 2017-03-15 | 郑州云海信息技术有限公司 | Fpga异构加速系统、数据传输方法及fpga |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
CN107402902A (zh) * | 2017-07-31 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种异构计算平台与基于异构计算平台的加速方法 |
CN107491342A (zh) * | 2017-09-01 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种基于fpga的多虚拟卡使用方法及系统 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110058816A (zh) * | 2019-04-10 | 2019-07-26 | 中国人民解放军陆军工程大学 | 一种基于ddr的高速多用户队列管理器及方法 |
CN110058816B (zh) * | 2019-04-10 | 2020-09-18 | 中国人民解放军陆军工程大学 | 一种基于ddr的高速多用户队列管理器及方法 |
CN113722090A (zh) * | 2021-07-26 | 2021-11-30 | 浪潮电子信息产业股份有限公司 | 一种任务管理方法、装置、设备及计算机可读存储介质 |
CN113835831A (zh) * | 2021-09-01 | 2021-12-24 | 南京南瑞继保电气有限公司 | 一种数据内存映射方法、装置、电子设备和存储介质 |
CN113835831B (zh) * | 2021-09-01 | 2024-08-20 | 南京南瑞继保电气有限公司 | 一种数据内存映射方法、装置、电子设备和存储介质 |
CN113868164A (zh) * | 2021-09-28 | 2021-12-31 | 歌尔科技有限公司 | 一种双机通信方法、装置和系统 |
CN114513545A (zh) * | 2022-04-19 | 2022-05-17 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
CN114513545B (zh) * | 2022-04-19 | 2022-07-12 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
WO2023201987A1 (zh) * | 2022-04-19 | 2023-10-26 | 苏州浪潮智能科技有限公司 | 请求处理方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109558250A (zh) | 一种基于fpga的通信方法、设备、主机及异构加速系统 | |
JP4908017B2 (ja) | Dmaデータ転送装置及びdmaデータ転送方法 | |
CN102681952A (zh) | 将数据写入存储设备的方法与存储设备 | |
US9086920B2 (en) | Device for managing data buffers in a memory space divided into a plurality of memory elements | |
US11048447B2 (en) | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data | |
JP2016513846A (ja) | ネットワークを介したメモリー共有 | |
CN102693198A (zh) | Dma传输方法及系统 | |
US11863469B2 (en) | Utilizing coherently attached interfaces in a network stack framework | |
KR20180087925A (ko) | 논리 어드레스와 물리 어드레스 사이에서 해싱 기반 변환을 수행하는 스토리지 장치 | |
CN105408875B (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
CN105786589A (zh) | 一种云渲染系统、服务器及方法 | |
US20190004968A1 (en) | Cache management method, storage system and computer program product | |
CN105094691B (zh) | 一种数据操作的方法、设备和系统 | |
CN111309649A (zh) | 一种数据传输和任务处理方法、装置及设备 | |
WO2023201987A1 (zh) | 请求处理方法、装置、设备及介质 | |
CN110007877A (zh) | 主机与双控存储设备间数据传输方法、装置、设备及介质 | |
CN110427386A (zh) | 数据处理方法、装置及计算机存储介质 | |
CN103345429A (zh) | 基于片上ram的高并发访存加速方法、加速器及cpu | |
US20240241644A1 (en) | Storage device and storage system | |
CN113343045A (zh) | 一种数据缓存方法及网络设备 | |
CN113296691B (zh) | 数据处理系统、方法、装置以及电子设备 | |
US8868800B2 (en) | Accelerator buffer access | |
KR20210094629A (ko) | 정보 처리 방법, 장치, 전자 디바이스 및 기록 매체 | |
CN102520879B (zh) | 基于优先级的文件信息存储方法、装置及系统 | |
JP7056870B2 (ja) | 情報処理装置、情報処理方法及びプログラム |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190402 |