CN116737618B - Fpga架构、器件、数据处理方法、系统及存储介质 - Google Patents
Fpga架构、器件、数据处理方法、系统及存储介质 Download PDFInfo
- Publication number
- CN116737618B CN116737618B CN202311013808.9A CN202311013808A CN116737618B CN 116737618 B CN116737618 B CN 116737618B CN 202311013808 A CN202311013808 A CN 202311013808A CN 116737618 B CN116737618 B CN 116737618B
- Authority
- CN
- China
- Prior art keywords
- algorithm
- module
- algorithm module
- virtual function
- interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 35
- 238000013507 mapping Methods 0.000 claims abstract description 448
- 230000003068 static effect Effects 0.000 claims abstract description 91
- 230000006870 function Effects 0.000 claims description 513
- 238000000034 method Methods 0.000 claims description 50
- 230000003863 physical function Effects 0.000 claims description 49
- 238000012545 processing Methods 0.000 claims description 20
- 230000002093 peripheral effect Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 4
- 230000000694 effects Effects 0.000 abstract description 7
- 238000000926 separation method Methods 0.000 abstract description 5
- 238000004883 computer application Methods 0.000 abstract description 2
- 230000001133 acceleration Effects 0.000 description 14
- 238000013461 design Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 101100004179 Schizophyllum commune BAR2 gene Proteins 0.000 description 4
- 210000001503 joint Anatomy 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明在计算机应用技术领域,公开了一种FPGA架构、器件、数据处理方法、系统及存储介质。在本发明提供的FPGA架构中,划分静态区和动态区,可实现动静分离,基于映射表,又可将静态区中的虚拟功能与动态区的算法模块实现动态结合。虚拟功能的特定访问接口和通用访问接口可以实现与外部主机相对接,基于映射表,可以确定虚拟功能与算法模块的映射关系,因而,基于该FPGA架构可以在算法模块与虚拟功能松耦合即动态结合的情况下,实现VF功能。本发明所提供的FPGA器件、数据处理方法、系统及可读存储介质具有上述技术效果。
Description
技术领域
本发明涉及计算机应用技术领域,特别是涉及FPGA架构、器件、数据处理方法、系统及存储介质。
背景技术
为支持单个异构加速设备可被多个虚拟机共享且保证高性能,通常基于SR-IOV(Single Root I/O Virtualization,单根IO虚拟化)设备虚拟化技术,可使得单个异构加速设备,可以创建出1个物理功能设备(PF,Physical Function)和多个虚拟功能设备(VF,Virtual Function),VF间彼此独立,可以分别分配给不同的虚拟机。
对于FPGA(Field-Programmable Gate Array,即现场可编程门阵列)异构加速设备,由于FPGA的可重构特性,其所包含的算法功能类型(如图像转换、数据压缩等)可根据需求对其进行重配置而发生变化。
面向FPGA异构加速设备,在基于SR-IOV技术做设计,当需要更换FPGA异构加速设备所包含的算法时,须对FPGA整体重配置,耗时较长。另外,如果此FPGA异构加速设备部署在云端,为让整体重配置的FPGA算法功能生效,须对设备所在的服务器进行重启以重新扫描设备,但重启会影响运行在此服务器上的业务,代价较大,有时是不可接受的。
综上所述,如何有效地解决加速设备中算法更换等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本发明的目的是提供一种FPGA架构、器件、数据处理方法、系统及可读存储介质,可以使得加速设备中的算法在无需进行整体重配置或服务器重启的情况下进行,更为方便快捷。
为解决上述技术问题,本发明提供如下技术方案:
一种FPGA架构,包括:静态区和动态区;
所述静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;
所述路由模块用于基于所述映射表确定请求的路由路径;
所述仲裁模块用于基于所述映射表对所述请求进行仲裁放行;
所述动态区包括算法模块,所述算法模块通过访问接口和中断接口与所述仲裁模块相连接;
所述映射表用于记录所述虚拟功能与所述算法模块的映射关系;
所述虚拟功能包括特定访问接口和通用访问接口,所述特定访问接口用于供主机访问算法特定的寄存器,所述通用访问接口用于访问与算法不相关或算法通用的寄存器。
优选地,包括:
所述物理功能从主机中获取算法文件后,基于所述算法文件对所述映射表进行更新,对所述动态区中的算法模块进行更新,以完成算法模块与虚拟功能的动态结合。
优选地,包括:
所述虚拟功能接收主机中虚拟机发送的寄存器访问请求;其中,所述寄存器访问请求包括虚拟功能的识别号,请求访问特定寄存器的地址偏移;
所述路由模块在所述映射表中查询所述识别号,确定请求访问的算法模块;
所述仲裁模块将所述寄存器访问请求发送给请求访问的算法模块;
所述算法模块,根据地址偏移,访问所述特定寄存器。
优选地,包括:
所述算法模块产生中断请求后,所述仲裁模块,将所述中断请求传递给所述路由模块;
所述路由模块,读取所述中断请求中携带的功能号,并查询所述映射表,确定与所述算法模块具有映射关系的虚拟功能;
将所述中断请求发送给查找确定的虚拟功能,并由该虚拟功能对主机发出所述中断号对应的中断信号。
优选地,所述特定访问接口对应一个基地址寄存器,所述通用访问接口对应另一个基地址寄存器;其中,所述基地址寄存器为外设部件互连标准规范中定义的。
优选地,所述仲裁模块包括寄存器访问仲裁模块和中断仲裁模块;
所述寄存器访问仲裁模块用于对主机发送的寄存器访问请求进行仲裁放行;
所述中断仲裁模块用于对所述算法模块的中断请求进行仲裁放行。
优选地,所述路由模块包括寄存器访问路由模块和中断路由模块;
所述寄存器访问路由模块用于基于所述映射表确定处理寄存器访问请求的路由路径;
所述中断路由模块用于基于所述映射表确定中断请求的路由路径。
一种数据处理方法,应用于如上述的FPGA架构,包括:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于所述映射表,确定与所述第一虚拟功能具有映射关系的第一算法模块,利用所述第一算法模块响应所述寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于所述映射表,确定与所述第二算法模块具有映射关系的第二虚拟功能,利用所述第二虚拟功能响应所述中断请求。
优选地,所述通过第一虚拟功能接收主机发送的寄存器访问请求,基于所述映射表,确定与所述第一虚拟功能具有映射关系的第一算法模块,利用所述第一算法模块响应所述寄存器访问请求,包括:
通过所述第一虚拟功能的特定访问接口,接收所述主机中的虚拟机发送的所述寄存器访问请求;
利用路由模块从所述映射表中查询与所述第一虚拟功能具有映射关系的所述第一算法模块;
通过仲裁模块将所述寄存器访问请求发送给所述第一算法模块;
利用所述第一算法模块对所述寄存器访问请求进行响应。
优选地,所述利用路由模块从所述映射表中查询与所述第一虚拟功能具有映射关系的所述第一算法模块,包括:
利用寄存器访问路由模块从所述寄存器访问请求中读取所述第一虚拟功能的识别号和特定寄存器的地址偏移;
从所述映射表中查询与所述识别号对应的映射记录;
将所述映射记录对应的算法模块确定为所述第一算法模块。
优选地,通过仲裁模块将所述寄存器访问请求发送给所述第一算法模块,包括:
通过寄存器访问仲裁模块,将所述地址偏移发送给所述第一算法模块;
相应地,利用所述第一算法模块对所述寄存器访问请求进行响应,包括:
利用所述第一算法模块,基于所述地址偏移访问所述特定寄存器。
优选地,还包括:
若所述映射记录中的有效位为无效标识,则反馈请求错误。
优选地,所述在第二算法模块产生中断请求的情况下,基于所述映射表,确定与所述第二算法模块具有映射关系的第二虚拟功能,利用所述第二虚拟功能响应所述中断请求,包括:
在所述第二算法模块产生所述中断请求,并通过所述第二算法模块的中断接口,将所述中断请求发送给仲裁模块;
所述仲裁模块将所述中断请求传递给路由模块;
利用所述路由模块从所述映射表中查询与所述第二算法模块具有映射关系的所述第二虚拟功能;
通过所述第二虚拟功能的中断接口,向所述主机中的虚拟机触发中断。
优选地,所述利用所述路由模块从所述映射表中查询与所述第二算法模块具有映射关系的所述第二虚拟功能,包括:
利用所述中断路由模块从所述中断请求中读取中断号和所述第二算法模块的功能号;
在所述映射表中查询所述功能号,得到对应的映射记录;
将所述映射记录对应的虚拟功能确定为所述第二虚拟功能。
优选地,通过所述第二虚拟功能的中断接口,向所述主机中的虚拟机触发中断,包括:
所述中断路由模块将所述中断号发送给所述第二虚拟功能;
通过所述第二虚拟功能的中断接口,向所述虚拟机触发所述中断号对应的中断。
优选地,所述基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从所述主机中读取所述算法文件,并解析所述算法文件,得到算法模块和算法信息;
利用所述算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能;
在动态区配置所述算法模块,并在所述映射表中写入每个所述算法模块与对应选择待使用的虚拟功能的映射记录。
优选地,利用所述算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照所述算法模块所需中断数量和所述待选虚拟功能支持的中断数量,为每个所述算法模块选择待使用的虚拟功能。
优选地,解析所述算法文件,得到算法模块和算法信息,包括;
从所述算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
优选地,在所述映射表中写入每个所述算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取所述算法模块的片选号;
依次将每个所述算法模块的所述片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入所述映射表。
优选地,获取所述算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在所述取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若所述功能号为空,则确定当前片选号无对应算法模块;
若所述功能号不为空,则确定当前选中的算法模块对应当前片选号。
优选地,所述依次将每个所述算法模块的所述片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入所述映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入所述映射表中;
在所述映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
优选地,在所述映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断所述映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在所述有效位中写入有效标识;
如果否,则在所述有效位中写入无效标识。
优选地,还包括:
物理功能获取新算法文件,并解析所述新算法文件,得到新算法模块和新算法信息;
利用所述新算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能;
在动态区配置所述新算法模块,并获取所述新算法模块的片选号;
依次将每个所述新算法模块的所述片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对所述静态区的映射表进行更新。
一种FPGA器件,具有如上述的FPGA架构,在所述FPGA架构中实现如上述数据处理方法的步骤。
一种数据处理系统,包括:主机和如上述的FPGA器件,所述主机中的管理应用与FPGA器件中的物理功能对接,所述主机中的虚拟机与所述FPGA器件中的虚拟功能对接;
通过所述管理应用,向所述物理功能提供算法文件;
所述物理功能基于所述算法文件,对所述FPGA器件中的映射表进行更新,对算法模块进行更新,实现虚拟功能与算法模块的动态结合;
基于所述映射表,所述虚拟机通过所述虚拟功能实现对算法模块的特定寄存器进行访问;
基于所述映射表,所述算法模块通过所述虚拟功能实现向所述虚拟机触发中断。
一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
本发明提供了一种FPGA架构,包括:静态区和动态区;静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;路由模块用于基于映射表确定请求的路由路径;仲裁模块用于基于映射表对请求进行仲裁放行;
动态区包括算法模块,算法模块通过访问接口和中断接口与仲裁模块相连接;映射表用于记录虚拟功能与算法模块的映射关系;虚拟功能包括特定访问接口和通用访问接口,特定访问接口用于供主机访问算法特定的寄存器,通用访问接口用于访问与算法不相关或算法通用的寄存器。
在本发明提供的FPGA架构中,划分静态区和动态区,可实现动静分离,基于映射表,又可将静态区中的虚拟功能与动态区的算法模块实现动态结合。虚拟功能的特定访问接口和通用访问接口可以实现与外部主机相对接,基于映射表,可以确定虚拟功能与算法模块的映射关系,因而,基于该FPGA架构可以在算法模块与虚拟功能松耦合即动态结合的情况下,实现VF功能。
在FPGA器件中应用本发明提供的数据处理方法中,包括:物理功能,基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求;路由模块,从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;通过仲裁模块,将寄存器访问请求发送给第一算法模块;第一算法模块,对寄存器访问请求进行响应;第二算法模块,产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;仲裁模块,将中断请求传递给路由模块;路由模块,从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
FPGA器件中的算法功能可以基于算法文件,将算法模块配置到动态区,将算法模块与虚拟功能的映射关系记载到映射表中。如此,当第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求后,路由模块,便可从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;然后,通过仲裁模块,将寄存器访问请求发送给第一算法模块;第一算法模块,对寄存器访问请求进行响应。当第二算法模块产生中断请求,可通过第二算法模块的中断接口,将中断请求发送给仲裁模块;仲裁模块,可将中断请求传递给路由模块;路由模块,从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;最终,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
综上,本发明的技术效果:在配置/更换算法过程中,仅需要将算法文件中的算法模块配置到动态区,并将算法模块与虚拟功能的映射关系,记载到静态区的映射表中即可,而无需对加速设备进行全盘更新,也可以完成算法配置,也无需加速设备所在的服务器进行重启,即可使得更新后的算法配置生效。
相应地,本发明实施例还提供了与上述FPGA架构、数据处理方法相对应的数据处理系统、FPGA器件和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种FPGA架构的示意图;
图2为本发明实施例中一种FPGA架构的详细示意图;
图3为本发明实施例中一种数据处理方法的流程图;
图4为本发明实施例中一种数据处理方法中具体流程示意图;
图5为本发明实施例中一种FPGA器件的示意图;
图6为本发明实施例中一种数据处理系统示意图;
图7为本发明实施例中一种可读存储介质示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例中一种FPGA架构的示意图,在该FPGA架构中包括:静态区和动态区;
静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;
路由模块用于确定请求的路由路径;
仲裁模块用于对请求进行仲裁放行;
动态区包括算法模块,算法模块通过访问接口和中断接口与仲裁模块相连接;
映射表用于记录虚拟功能与算法模块的映射关系;
虚拟功能包括特定访问接口和通用访问接口,特定访问接口用于供主机访问算法特定的寄存器,通用访问接口用于访问与算法不相关或算法通用的寄存器。
具体的,映射表分别与物理功能、路由模块相连接;
物理功能分别与虚拟功能、仲裁模块相连接;
路由模块分别与虚拟功能、仲裁模块相连接;
在本实施例中,请求可以为基于虚拟功能接收到的主机端的寄存器访问请求,也可以为算法模块的中断请求。
路由路径,即明确请求的需要传递到何处。具体的,对于寄存器访问请求,即由路由模块确定最终由哪个算法模块来进行处理,即需要将寄存器访问请求传递到哪个算法模块;对于中断请求,即由路由模块确定最终由哪个虚拟功能来进行处理,即需要将中断请求传递到哪个虚拟功能。
其中,物理功能即可视为物理接口,虚拟功能可以视为与主机虚拟机相连接的虚拟接口。例如,用于接收主机发送的特定寄存器访问请求的接口即为特定访问接口。通用访问接口是主机用于访问或配置与算法不相关或通用的相关信息,如中断配置表。
映射表中可以记载虚拟功能与算法模块的映射关系的一个表,路由模块可基于映射关系,以及请求携带的内容,确定请求的路由连接,仲裁模块即对汇总的多个请求进行有序的分发,算法模块即为具有相关算法功能的算法对应在电路区域。
由于物理功能、虚拟功能、映射表、路由模块、仲裁模块和算法模块等组件都是存在于FPGA架构中,因而物理功能、虚拟功能、映射表、路由模块、仲裁模块和算法模块等组件都可视为具有相关逻辑功能的电路结构。
从整体上看,在本发明所提供的FPGA架构中,分成两部分:静态区和动态区。
其中,动态区包括实现的各种类型算法如压缩、图像算法等算法模块。此区域通过FPGA部分重配置技术,可以实现动态配置。
其中,在静态区中实现SR-IOV技术,创建PF和多个VF,并添加相关模块如路由模块、仲裁模块、VF与算法映射表等实现VF与算法功能动态结合。在动态区配置更新的过程中,除更新映射表中映射关系之外,此区域保持不变。
在本发明中的一种具体实施方式中,虚拟功能接收主机中虚拟机发送的寄存器访问请求;其中,寄存器访问请求包括虚拟功能的识别号,请求访问特定寄存器的地址偏移;
路由模块在映射表中查询识别号,确定请求访问的算法模块;
仲裁模块将寄存器访问请求发送给请求访问的算法模块;
算法模块,根据地址偏移,访问特定寄存器。
也就是说,对于主机发送的寄存器访问请求,FPGA架构中的虚拟功能可以接收该请求,然后,由路由模块从映射表中查询该请求中携带的识别号,即可确定请求访问的算法模块,通过仲裁模块可将该请求发送给所请求访问的算法模块,最终算法模块可以根据地址偏移,对特定寄存器进行访问。即,在该FPGA架构中,可以对主机的寄存器访问请求进行响应。
在本发明中的一种具体实施方式中,具体的,算法模块产生中断请求后,仲裁模块,将中断请求传递给路由模块;
路由模块,读取中断请求中携带的功能号,并查询映射表,确定与算法模块具有映射关系的虚拟功能;
将中断请求发送给查找确定的虚拟功能,并由该虚拟功能对主机发出中断号对应的中断信号。
也就是说,当算法模块产生了中断请求的情况下,算法模块可将中断请求传递给仲裁模块,然后,仲裁模块将中断请求发送给路由模块,路由模块通过读取中断请求中携带的功能号,便可查询映射表,从算法模块中确定出与该算法模块具有映射关系的虚拟功能。将中断请求发送给该虚拟功能,由该虚拟功能对主机触发该中断号对应的中断信号,即触发中断。
请参考图2,图2为本发明实施例中一种FPGA架构的详细示意图。即仲裁模块包括寄存器访问仲裁模块和中断仲裁模块;
其中,寄存器访问仲裁模块用于对主机发送的寄存器访问请求进行仲裁放行;
中断仲裁模块用于对算法模块的中断请求进行仲裁放行。
具体的,算法模块通过访问接口与寄存器访问仲裁模块相连接,算法模块通过中断接口与中断仲裁模块相连接。
路由模块包括寄存器访问路由模块和中断路由模块;
其中,寄存器访问路由模块用于基于映射表确定处理寄存器访问请求的路由路径;
中断路由模块用于基于映射表确定中断请求的路由路径。
具体的,虚拟功能通过特定访问接口与寄存器访问路由模块相连接;虚拟功能通过中断接口与中断路由模块相连接。
其中,中断路由模块与虚拟功能的中断接口相连,中断接口会基于中断配置表存储的信息比如中断向量,触发中断。
也就是说,将路由模块和仲裁模块基于寄存器访问与中断处理,进行分开设计,基于寄存器访问路由模块和中断路由模块两个模块来实现两种场景下的路由功能,基于寄存器访问仲裁模块和中断仲裁模块两个模块来实现两种场景下的仲裁功能,可以使得寄存器访问和中断处理更为便捷高效。
在本发明中的一种具体实施方式中,特定访问接口对应一个基地址寄存器,通用访问接口对应另一个基地址寄存器;其中,基地址寄存器为外设部件互连标准规范中定义的。具体的,为实现VF与算法功能相分离并可动态结合,VF的接口须不面向特定算法设计,具有一定的普适性。同时算法模块也须有一致的接口设计,才能与任何VF相结合。从使用算法的用户角度看,主要关心三种接口,分别是:
1、算法寄存器访问接口,用于访问属于此算法的寄存器;
2、中断接口,可接收算法产生的中断;
3、DMA数据传输接口,用于主机端和设备端DDR(Double Data Rate,双倍速率同步动态随机存储器)间传输大块数据。
VF呈现的接口主要有PCI配置空间和6个寄存器内存地址访问空间[BAR0,BAR5]。本发明规定在VF接口设计时须遵循一个原则,即与算法特定相关的寄存器占用一个独立的寄存器内存地址访问空间,其中不包含与算法不相关或算法通用的寄存器。基于上述原则,针对三种接口,VF的接口设计如下:
1、从6个BAR空间中选取一个特定的BAR空间如BAR2,用于访问算法特定寄存器;
2、中断接口存在于PCI配置空间的MSI/MSIX Capability结构中,其中指明了此VF可支持的中断数目;
3、因为所有算法都需具备DMA数据传输能力,所以从6个BAR空间中额外选取一个BAR空间如BAR0,用于存放DMA相关的寄存器。
综上,本发明设计的VF接口包括:两个BAR寄存器,其中一个用于访问算法特定的寄存器BAR_X,另一个用于访问与算法不相关或算法通用的寄存器BAR_Y。X和Y取值范围为[0,5],且不同;MSI和MSI-X两个Capability都可支持,其中MSI-X除了对应的Capability外,还有两个须放置在BAR空间中的表结构MSI-X Table和Pending Table,因为每个算法都有中断,所以它们放置在BAR_Y中。本发明支持每个VF的中断数目可以不同。
因为动态区算法模块的数目随着动态配置会发生变化,而静态区VF的数目默认保持不变,所以静态区在设计VF的数目时会选取一个合理的较大值N(例如可选择大于10的数值,或其他数值),不小于动态区可支持的最大算法模块数目M。N大于等于M;
对于算法模块的接口设计,本发明对寄存器访问接口和中断接口做了统一规范,具体如下:
1、对于寄存器访问接口,(PF0读取)读取地址0(可选),则算法模块须提供此算法对应的算法类型ID信息。
2、对于中断接口,若算法想触发中断,须发送两部分信息,此算法的算法ID信息和中断编号信息。所谓中断编号信息指的是若此算法支持N个中断,则其每个中断编号分别为[0,N-1]。
在本发明提供的FPGA架构中,划分静态区和动态区,可实现动静分离,基于映射表,又可将静态区中的虚拟功能与动态区的算法模块实现动态结合。虚拟功能的特定访问接口和通用访问接口可以实现与外部主机相对接,基于映射表,可以确定虚拟功能与算法模块的映射关系,因而,基于该FPGA架构可以在算法模块与虚拟功能松耦合即动态结合的情况下,实现VF功能。
在本发明中的一种具体实施方式中,物理功能从主机中获取算法文件后,基于算法文件对映射表进行更新,对动态区中的算法模块进行更新,以完成算法模块与虚拟功能的动态结合。具体的,物理功能可获取到算法文件,然后对算法文件进行解析,从而得到算法模块和算法信息。基于算法信息,可以从静态区域中为每个算法模块选择带实验的虚拟功能,然后,将算法模块配置到动态区,并获取该算法模块的片选号。然后,将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入到静态区的映射表中,直到每个算法模块与虚拟功能的映射记录都记载到了映射表中。如此,在完成映射记录之后,便可基于映射表,并利用静态区域中的目标虚拟功能对目标算法模块的请求进行响应。也就是说,在配置算法过程中,仅需要将算法文件中的算法模块配置到动态区,并将算法模块与虚拟功能的映射关系,记载到静态区的映射表中即可,而无需对加速设备进行全盘更新,也可以完成算法配置,也无需加速设备所在的服务器进行重启,即可使得更新后的算法配置生效。
请参考图3,图3为本发明实施例中一种数据处理方法的流程图,该方法可以应用于如图1所示的FPGA架构中,该方法包括:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求。
需要注意的是,本发明中的第一算法模块、第二算法模块仅用于区别算法模块在不同的处理流程所处的角色不同,为了便于区别而进行的限定,因而,第一算法模块和第二算法模块本质上可以为任意一个算法模块,即,二者可以为同一个模块在不同的流程中的角色情况,也可以为同一个时间段,同时发生的两个流程中的两个不同算法模块。相应地,第一虚拟功能和第二虚拟功能也如此,在此不再一一赘述。第一算法模块与第一虚拟功能具有映射关系,第二算法模块与第二虚拟功能具有映射关系。
为了便于说明上述若干步骤,下面将上述步骤,分为配置流程、寄存器访问流程和中断流程3个流程部分进行详细说明。
在分配流程中,物理功能占据主导地址,即物理功能可基于算法文件,在动态区部署算法模块,从而实现更新映射表,在该映射表中,记载有动态结合虚拟功能与算法模块的映射关系。在本实施例中,一个算法模块与一个虚拟功能之间的映射关系可以由一条映射记录来记载,在映射记录中需表明算法模块的唯一标识和虚拟功能的唯一标识,例如,记载算法模块的算法ID,记载虚拟功能的VF号。
在寄存器访问流程中,包括:
通过第一虚拟功能的特定访问接口,接收主机中的虚拟机发送的寄存器访问请求;
利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;
通过仲裁模块将寄存器访问请求发送给第一算法模块;
利用第一算法模块对寄存器访问请求进行响应。
即,可由第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求;然后,路由模块,可从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;通过仲裁模块,将寄存器访问请求发送给第一算法模块;最终,由第一算法模块,对寄存器访问请求进行响应。
在中断流程中,包括:
在第二算法模块产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;
仲裁模块将中断请求传递给路由模块;
利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;
通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
即,第二算法模块,产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;仲裁模块,将中断请求传递给路由模块;路由模块,从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
在FPGA架构中应用本发明提供的数据处理方法,包括:基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求;在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求。
FPGA器件中的算法功能可以基于算法文件,将算法模块配置到动态区,将算法模块与虚拟功能的映射关系记载到映射表中。如此,当第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求后,路由模块,便可从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;然后,通过仲裁模块,将寄存器访问请求发送给第一算法模块;第一算法模块,对寄存器访问请求进行响应。当第二算法模块产生中断请求,可通过第二算法模块的中断接口,将中断请求发送给仲裁模块;仲裁模块,可将中断请求传递给路由模块;路由模块,从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;最终,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
综上,本发明的技术效果:在配置/更换算法过程中,仅需要将算法文件中的算法模块配置到动态区,并将算法模块与虚拟功能的映射关系,记载到静态区的映射表中即可,而无需对加速设备进行全盘更新,也可以完成算法配置,也无需加速设备所在的服务器进行重启,即可使得更新后的算法配置生效。
在本发明中的一种具体实施方式中,为提高处理效率,可以将路由模块具体设计为中断路由模块和寄存器访问路由模块,将仲裁模块和具体设计为寄存器访问仲裁模块和诊断仲裁模块。相应地,利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能,包括:
利用中断路由模块从中断请求中读取中断号和第二算法模块的功能号;
在映射表中查询功能号,得到对应的映射记录;
将映射记录对应的虚拟功能确定为第二虚拟功能。
为便于描述,下面将上述三个步骤结合起来进行说明。
具体的,在本实施例中,可以预先对算法模块的中断请求进行规范,即要求中断请求中必须携带中断号和当前的算法模块的功能号。
如此,在第一算法模块通过中断接口将中断请求发送给中断路由模块之后,该中断路由模块便可从中断请求中读取到中断号和第二算法模块的功能号。基于功能号可以从映射表中查询到与第二算法模块对应的第二虚拟功能。
相应地,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断,包括:
中断路由模块,将中断号发送给第二虚拟功能;
通过第二虚拟功能的中断接口,向虚拟机触发中断号对应的中断。
为便于描述,下面将上述两个步骤结合起来进行说明。
中断路由模块在发送中断请求时,可以仅将中断号发送给第二虚拟功能,即可使得第二虚拟功能对外触发相应地的中断。
相应地,利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块,包括:
利用寄存器访问路由模块从寄存器访问请求中读取第一虚拟功能的识别号和特定寄存器的地址偏移;
从映射表中查询与识别号对应的映射记录;
将映射记录对应的算法模块确定为第一算法模块。
为便于描述,下面将上述三个步骤结合起来进行说明。
在本发明实施例中,可以预先规定寄存器访问请求中需携带具体的虚拟功能的识别号,以及需要访问的特定寄存器的地址偏移。
如此,在寄存器访问请求传递到寄存器访问路由模块之后,能够从寄存器访问请求中读取到第一虚拟功能的识别号和特定寄存器的地址偏移。
然后,便可从映射表中查询该识别号对应的映射记录,即可明确第一算法模块是哪个。
相应地,通过仲裁模块将寄存器访问请求发送给第一算法模块,包括:
通过寄存器访问仲裁模块,将地址偏移发送给第一算法模块;
相应地,利用第一算法模块对寄存器访问请求进行响应,包括:
利用第一算法模块,基于地址偏移访问特定寄存器。
即,寄存器访问仲裁模块在发送寄存器访问请求时,可以仅向第一算法模块发送地址偏移,如此,第一算法模块可直接基于地址偏移访问特定寄存器。
在本发明中的一种具体实施方式中,还可在映射表中设置一个有效位,有效位用于表示对应的映射记录是否有效,以便快速明确当前的绑定关系是否有效。即,若映射记录中的有效位为无效标识,则反馈请求错误。当然,在有效位为有效标识时,则可直接基于映射记录明确映射关系。
在本发明中的一种具体实施方式中,基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从主机中读取算法文件,并解析算法文件,得到算法模块和算法信息;
利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置算法模块,并在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录。
为便于描述,下面将上述三个步骤结合起来进行说明。
当主机需要对FPGA进行配置时,可以生成算法文件,在该算法文件中记录即将需要配置的算法内容(算法模块需要实现的算法),以及算法的信息。
如此,物理功能便可从主机中读取到算法文件,然后解析算法文件得到算法模块和算法信息。
基于算法你看和算法信息,可以为每一个算法模块选择对应要求使用的虚拟功能,也即想建立映射关系的虚拟功能。
然后,在动态区中将算法模块落盘,并在映射表中写入每个算法模块与对应选择使用的虚拟功能的映射记录,从而实现算法模块与虚拟功能动态结合。
在本发明中的一种具体实施方式中,利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照算法模块所需中断数量和待选虚拟功能支持的中断数量,为每个算法模块选择待使用的虚拟功能。
也就是说,在为每个算法模块绑定虚拟功能时,需要基于虚拟功能支持的中断数量以及算法模块所需的中断数量,来选择对应要使用的虚拟功能。
例如,若算法模块需要2个中断,则需要选择支持的中断数量大于等于2的虚拟功能。
在本发明中的一种具体实施方式中,解析算法文件,得到算法模块和算法信息,包括;
从算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
即,算法模块所需的中断数目可以直接从算法文件中解析获得。也即,在算法文件中可以预先为每一个算法模块记录所需的诊断数目。
在本发明中的一种具体实施方式中,在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取算法模块的片选号;
依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表。
其中,片选号即为每一个算法模块确定的唯一标识。
具体的,获取算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若功能号为空,则确定当前片选号无对应算法模块;
若功能号不为空,则确定当前选中的算法模块对应当前片选号。
也就是说,虚拟功能的数量即为算法模块的片选号的取值范围。然后,在给算法模块确定片选号是,可以直接在取值范围内依次中一个算法模块,基于功能号的内容算法为空,即可为将当前片选号进行分配。即,使得每一个功能号不为空的算法模块都能分配到片选号。后续便可基于片选号来明确动态区内的算法模块。
在本发明中的一种具体实施方式中,依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入映射表中;
在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
即在映射表中记录映射记录时,可以直接将算法模块与虚拟功能是否结合成功的标识写入到有效位中。如此,基于该有效位不仅可以判断配置是否完成,在实施寄存器访问流程和中断处理流程时,也可以直接基于有效位对当前的映射关系是否有效进行判决。
在本发明中的一种具体实施方式中,在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在有效位中写入有效标识;
如果否,则在有效位中写入无效标识。
例如,可以在明确结合成功之后,在有效位写入1,否则,在有效位写入0。判断虚拟功能与算法模块是否结合成功,可以在主机中产生对该算法模块的特定寄存器进行访问的寄存器访问请求,若该请求能够被正常响应,则确定结合成功,否则即未结合成功。
在本发明中的一种具体实施方式中,当需要对FPGA芯片/设备中的算法进行重配置的情况下,可以向FPGA传递新算法文件,实现重配置。具体的实现过程如下:
物理功能获取新算法文件,并解析新算法文件,得到新算法模块和新算法信息;
利用新算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置新算法模块,并获取新算法模块的片选号;
依次将每个新算法模块的片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对静态区的映射表进行更新。
通过上述四个步骤描述,可以发现,在需要重新配置算法时,仅需向FPGA器件提供新的算法文件即可自动实现算法重配置。且在配置过程中,仅针对FPGA器件中动态区更新算法模块,以及静态区中的映射表进行更新即可完成,而不必对FPGA器件进行整体重配置,也不需要FPGA所连接的主机重启。
请参考图4,图4为本发明实施例中一种数据处理方法中具体流程示意图,配置流程包括以下步骤:
S101、获取算法文件,并解析算法文件,得到算法模块和算法信息。
具体的,该算法文件可以为包括算法比特流的文件。
在本发明实施例中,FPGA器件中的PH可以读取到算法文件,并对算法文件进行解析,从而得到算法模块和算法信息。
其中,算法模块即算法,算法信息即算法模块的相关信息。
在本发明中的一种具体实施方式中,解析算法文件,得到算法模块和算法信息,包括;
步骤一、从算法文件中解析出每个算法模块;
步骤二、从解析得到算法模块中读取每个算法模块所需中断数目;
步骤三、将每个算法模块所需中断数目确定为算法信息。
对于具体如何从算法文件中解析得到算法模块,可以通过自定义算法文件的格式来进行解析,也可以采用算法文件对应的协议来进行解析,从而获得算法模块。在算法模块中可以预先记载每个算法模块所需中断数目,因而可以直接从算法模块中读取到该算法模块所需的中断数目。
此外,算法信息还包括算法模块的数量、每个算法模块的功能号和每个算法模块所需中断数目。例如,算法模块的数目,每一个算法模块的功能号(即算法ID),每一个算法模块所需的中断数量等信息。
在算法文件中,可以包括1个或多个算法模块,本发明实施例对算法文件中所具有的算法模块的数量、种类等均不做限定,对于算法模块需要多少个中断,也不做限定。
S102、利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能。
需要注意的是,在本发明实施例中,在FPGA中划分出静态区和动态区,其中,静态区在设置或更换算法过程中,仅更新映射表(VF与算法映射表),动态区即配置算法模块的区域,该动态区域随着算法部署的更新而更新。
当明确了算法信息之后,便可从静态区中为每一个算法模块选择待使用的虚拟功能。
例如,当算法模块共有3个,分别为算法模块1、算法模块2和算法模块3,静态区中共有10个虚拟功能,则从这10个虚拟功能中选出3个虚拟功能,分别供算法模块1、算法模块2和算法模块3这3个算法模块使用。
在本发明中的一种具体实施方式中,利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能,包括:
步骤一、获取待选虚拟功能支持的中断数量;
步骤二、按照算法模块所需中断数量和待选虚拟功能支持的中断数量,为每个算法模块选择待使用的虚拟功能。
为便于描述,下面将上述两个步骤结合起来进行说明。
具体的,可以先获取每一个虚拟功能支持的中断数量,然后,按照算法模块所需中断数量和待选虚拟功能支持的中断数量,来为每一个算法模块选择对应的虚拟功能。即,可以将虚拟功能支持的中断数量大于或等于算法模块所需的中断数量作为衡量标准,进行虚拟功能查找,从而实现为每一个算法模块选出相应的虚拟功能。例如,如某一个算法模块需要两个中断,则选择至少支持2个中断的VF。
S103、在动态区配置算法模块,并获取算法模块的片选号。
完成了虚拟功能的选择之后,可以在动态区配置该算法模块。即,将算法模块的算法逻辑,由静态区实现。
在本发明中的一种具体实施方式中,在动态区配置算法模块,包括:将算法模块写入动态区。也就是,将算法模块存进动态区内。
在将算法模块配置到动态区域之后,便可获取算法模块的片选号。即为算法模块分配唯一识别标识,片选号,也即片选ID,片选ID被静态区的寄存器访问仲裁模块使用,在某一算法模块的访问寄存器前,须先使用片选ID选中模块,随后再发起寄存器访问。
具体的,可以直接为每一个算法模块生成一个唯一识别标识,也可以根据当前的静态区的虚拟功能被选中的情况明确每一个算法模块的唯一识别标识。
在本发明中的一种具体实施方式中,获取算法模块的片选号,包括:
步骤一、基于静态区的虚拟功能数量确定片选号的取值范围;
步骤二、在取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
步骤三、若功能号为空,则确定当前片选号无对应算法模块;
步骤四、若功能号不为空,则确定当前选中的算法模块对应当前片选号。
为便于描述,下面将上述四个步骤结合起来进行说明。
其中,读取该算法模块的功能号,具体的,可从算法模块中的指定地址中,读取功能号。例如,指定地址可以为地址为0寄存器。
获取各个算法模块的片选ID方法,对于N个VF,片选ID的取值范围为[0,N-1],依次设置片选ID为0到N-1,并逐个选中算法模块,然后读取地址0寄存器获取算法ID,算法ID为空(可具体采用0或无内容表示),则表明此片选ID没有对应算法模块,算法ID不为空(即算法ID有具体的算法ID号码),则可知晓此片选ID对应算法模块的算法ID,如此,便可为每个算法模块确定片选ID。
S104、依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入静态区的映射表中。
在明确了每一个算法模块的片选ID之后,便可将算法模块与虚拟功能的绑定关系写入到静态区的映射表中。
具体的,在映射表中,一天映射记录表示一个虚拟功能的绑定情况。
对应绑定了算法模块的虚拟功能,则对应的映射表中的映射记录中写入对应算法模块的片选号、虚拟功能的识别号。完成逐一填写全部的算法模块对应的映射记录。
在本发明中的一种具体实施方式中,依次每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入静态区的映射表中,包括:
步骤一、将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入映射表中;
步骤二、在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
为便于描述,下面将上述两个步骤结合起来进行说明。
在填写映射记录时,可以逐条填写,即将一个算法模块的片选号和算法模块对应的虚拟功能的识别号作为一条记录写入到映射表中。为了便于后面明确算法模块与虚拟功能算法结合成功,可以在映射记录中的有效位中写入算法结合成功的标识。
其中,在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
步骤1、判断映射记录对应的算法模块与虚拟功能是否结合成功;
步骤2、如果是,则在有效位中写入有效标识;
步骤3、如果否,则在有效位中写入无效标识。
具体的,通过算法模块发起请求,是否被具有映射关系的虚拟功能所响应,从而明确算法模块与虚拟功能是否结合成功。如果能被对应的虚拟功能所响应,则可确定二者结合成功,可在有效位中写入1,即有效标识可以用1来表示结合成功,反之,则可在有效位中写入0来表示结合失败,即有效标识可以用0表示。在实际应用中,可以在初始的映射表中,将全部的有效位置0,来表明虚拟功能无映射关系的算法模块。当然,也可以在更新算法时,首先将全部的有效位置0,以便重新定义算法模块与虚拟功能的映射关系。
当然,在实际应用中,也可以使用其他数值来表示算法模块与虚拟功能是否结合成功,这里列举的0和1仅是个例。
在本发明中的一种具体实施方式中,一条映射记录包括一条映射记录包括有效位、具有映射关系的算法模块的功能号、片选号和虚拟功能的识别号。即,在映射表结构中,可针对每个VF都有一个条目,每个条目包含4部分,分别是:
1、VF识别号:用于标识特定VF,通常使用分配给VF的功能号;
2、算法ID:指示与此VF相结合的算法模块;
3、片选ID:此算法模块对应的片选ID;
4、有效位,标识VF是否已成功与算法模块相结合,1为成功,0为失败。
举例说明:假设一款FPGA芯片资源最多能支持4个算法模块,则设定静态区实现的VF数量为4,VF分配的功能号分别为0到3,VF0和VF1支持的中断数量为1,VF2和VF3支持的中断数量为2,每个VF都有两个BAR空间,BAR0用于访问与算法不相关或算法通用的寄存器,BAR2用于访问算法特定的寄存器。VF与算法映射表的条目数目为4,每个条目的有效位默认初始为0,标明VF未与任何算法模块相结合。寄存器访问仲裁模块中的片选信号占用2bit,可取值0到3。
通过FPGA部分重配置技术,下载包含算法模块的比特流文件以更新动态区,假设此比特流文件包含两个算法模块A和B,A算法模块的算法ID为0x1A2A3A4A并需要1个中断,B算法模块的算法ID为0x1B2B3B4B并需要2个中断。根据读取的算法信息,选择VF0和VF2可满足要求。待重配置成功后,通过设定片选ID为0到3,确定算法模块对应的片选ID,假设算法模块A对应的片选ID为1,算法模块B对应的片选ID为3。则更新后的VF与算法映射表如下表1所示:
表1 一种写入了映射记录的映射表
即,在表1中,可针对每个VF都有一个条目,每个条目包含4部分,分别是:
1、VF识别号:用于标识特定VF,通常使用分配给VF的功能号;
2、算法ID:指示与此VF相结合的算法模块;
3、片选ID:此算法模块对应的片选ID;
4、有效位,标识VF是否已成功与算法模块相结合,1为成功,0为失败。
S105、基于映射表,并利用静态区中的目标虚拟功能,对目标算法模块的请求进行响应。
在将算法模块配置到动态区域,将映射记录写入到了静态区域之后,便可基于该映射表,利用静态区域中的目标虚拟功能,对目标算法模块的请求进行响应。目标算法模块可以为动态区域配置的任意一个算法模块,目标虚拟功能可以为静态区中与该目标算法模块具有映射关系的虚拟功能。
其中,目标虚拟功能与目标算法模块对应映射表中的同一条映射记录,也即,目标虚拟功能与目标算法模块具体映射关系。
在本发明中的一种具体实施方式中,基于映射表,并利用静态区中的目标虚拟功能,对目标算法模块的请求进行响应,包括:
在目标算法模块产生请求后,读取请求中的功能号;
在映射表中查询功能号,得到对应的映射记录;
若映射记录中的有效位显示有效,则将映射记录中识别号对应的虚拟功能确定为目标虚拟功能,并利用目标虚拟功能对请求进行响应;
若映射记录中的有效位显示无效,则反馈请求错误。
为便于描述,下面将上述四个步骤结合起来进行说明。
在目标算法模块产生请求后,可以先读取到请求中的功能号。然后,在映射表中查询到该功能号,便可得到相应的映射记录。
若该映射记录中的有效位显示有效,则可将映射记录中对应的虚拟高耗能确定为目标虚拟功能,并利用该目标虚拟功能对该请求进行响应。
若该映射记录中的有效位显示无效,则可反馈请求错误。
在本发明中的一种具体实施方式中,基于映射表,并利用静态区中的目标虚拟功能,对目标算法模块的请求进行响应,包括:基于映射表,并利用静态区中的目标虚拟功能,对目标算法模块的中断请求进行响应。
步骤1、目标算法模块产生中断请求后,利用静态区的中断接口仲裁模块,将中断请求传递给静态区的中断路由模块;
步骤2、利用中断路由模块,读取中断请求中携带的路由信息;
步骤3、查询映射表,明确与路由信息对应的目标虚拟功能;
步骤4、将中断请求发送给目标虚拟功能,以便目标虚拟功能对外触发中断请求对应的中断。
在本发明实施例中,对每一个算法模块发出中断请求进行规范,即该中断请求中需携带路由信息。该路由信息可被用于明确由哪个虚拟功能来触发中断。具体的,路由信息可以具体为指明算法模块的唯一标识的信息,以及想要触发的中断类型。
其中,读取中断请求中携带的路由信息,包括:读取中断请求携带的片选号和中断号;将片选号和中断号确定为路由信息。也就是说,路由信息可以具体包括片选号和中断号。
相应地,查询映射表,明确与路由信息对应的目标虚拟功能,包括:从映射表中查询中断请求携带的片选号,明确与目标算法模块具有映射关系的目标虚拟功能。
其中,中断接口仲裁模块可用于仲裁多个算法模块产生的中断请求被执行的先后顺序。中断路由模块用于明确中断请求需要由哪个虚拟功能来执行。
将中断请求发送给目标虚拟功能,包括:将中断请求发送给目标虚拟功能,以便利用目标虚拟功能对外触发中断请求携带的中断号对应中断。即,中断号可以明确当虚拟功能支持多个中断时,应当触发哪个中断信号。
对于寄存器访问请求,则基于映射表,并利用动态区中的算法模块,对寄存器访问请求进行响应,包括:
步骤1、主机产生寄存器访问请求后,利用静态区的虚拟功能的中断接口进行接收,将中断请求传递给静态区的寄存器访问路由模块;利用寄存器访问路由模块,读取寄存器访问请求中携带的路由信息;
步骤2、查询映射表,明确与路由信息对应的目标算法模块;
步骤3、将中断请求发送给目标算法模块,以便目标算法模块对相关寄存器进行访问。
其中,寄存器访问请求中携带的路由信息与中断请求中携带的路由信息类似,但比中断请求中携带的路由信息少一个中断号。
其中,利用寄存器访问路由模块,读取寄存器访问请求中携带的路由信息,包括:利用寄存器访问路由模块,读取寄存器访问请求中携带的片选号;将寄存器访问请求中携带的片选号确定为路由信息。
其中,查询映射表,明确与路由信息对应的目标算法模块,包括:从映射表中查询寄存器访问请求中携带的片选号,明确目标算法模块。
举例说明:以上表1对应映射表为例,通过VF0读取算法模块A特定的寄存器如下,假设此特定寄存器的地址偏移为0x4,则主机端应该访问的地址为VF0 BAR2空间的基地址加偏移0x4,此访问请求到达FPGA端后,可从请求报文中提取出VF的功能号和地址偏移。随后,根据功能号,查询映射表可得到其对应的片选ID号为1。然后,进入寄存器访问仲裁模块,寄存器访问仲裁模块即可根据片选ID选择算法模块A,算法模块A根据地址偏移0x4访问特定寄存器。
算法B包含2个中断,其触发1号中断的流程:首先算法B通过其中断接口向中断接口仲裁模块发送两部分消息,算法B的算法ID和中断编号1。中断接口仲裁模块确认收到完整消息后,转发到中断路由模块。中断路由模块根据算法ID查询映射表,确定其对应的VF为VF2,并根据中断编号1触发VF2的1号中断,最终中断传递到主机端。
相应于上述实施例所描述的FPGA架构和数据处理方法,本发明实施例还提供了一种FPGA器件,具有如上述的FPGA架构,在FPGA架构中实现如上述数据处理方法的步骤,并相应具有该FPGA架构的技术效果,以及该数据处理方法的技术效果。
具体的,该FPGA器件如图5所示,在该FPGA器件中具有如下FPGA架构:
静态区和动态区;
静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;
路由模块用于基于映射表确定请求的路由路径;
仲裁模块用于基于映射表对请求进行仲裁放行;
动态区包括算法模块,算法模块通过访问接口和中断接口与仲裁模块相连接;
映射表用于记录虚拟功能与算法模块的映射关系;
虚拟功能包括特定访问接口和通用访问接口,特定访问接口用于供主机访问算法特定的寄存器,通用访问接口用于访问与算法不相关或算法通用的寄存器。
其中,映射表分别与物理功能、路由模块相连接;
物理功能分别与虚拟功能、仲裁模块相连接;
路由模块分别与虚拟功能、仲裁模块相连接;
动态区包括算法模块,算法模块通过访问接口和中断接口与仲裁模块相连接。
在本发明中的一种具体实施方式中,物理功能从主机中获取算法文件后,基于算法文件对映射表进行更新,对动态区中的算法模块进行更新,以完成算法模块与虚拟功能的动态结合。
在本发明中的一种具体实施方式中,虚拟功能接收主机中虚拟机发送的寄存器访问请求;其中,寄存器访问请求包括虚拟功能的识别号,请求访问特定寄存器的地址偏移;
路由模块在映射表中查询识别号,确定请求访问的算法模块;
仲裁模块将寄存器访问请求发送给请求访问的算法模块;
算法模块,根据地址偏移,访问特定寄存器。
在本发明中的一种具体实施方式中,算法模块产生中断请求后,仲裁模块,将中断请求传递给路由模块;
路由模块,读取中断请求中携带的功能号,并查询映射表,确定与算法模块具有映射关系的虚拟功能;
将中断请求发送给查找确定的虚拟功能,并由该虚拟功能对主机发出中断号对应的中断信号。
在本发明中的一种具体实施方式中,特定访问接口对应一个基地址寄存器,通用访问接口对应另一个基地址寄存器;其中,基地址寄存器为外设部件互连标准规范中定义的。
在本发明中的一种具体实施方式中,仲裁模块包括寄存器访问仲裁模块和中断仲裁模块;
寄存器访问仲裁模块用于对主机发送的寄存器访问请求进行仲裁放行;
中断仲裁模块用于对算法模块的中断请求进行仲裁放行。
其中,算法模块通过访问接口与寄存器访问仲裁模块相连接,算法模块通过中断接口与中断仲裁模块相连接。
在本发明中的一种具体实施方式中,路由模块包括寄存器访问路由模块和中断路由模块;寄存器访问路由模块用于基于映射表确定处理寄存器访问请求的路由路径;
中断路由模块用于基于映射表确定中断请求的路由路径。
其中,虚拟功能通过特定访问接口与寄存器访问路由模块相连接;
虚拟功能通过中断接口与中断路由模块相连接。
在该FPGA器件中,可实现以下数据处理方法的步骤:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求。
在本发明中的一种具体实施方式中,通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求,包括:
通过第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求;
利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;
通过仲裁模块将寄存器访问请求发送给第一算法模块;
利用第一算法模块对寄存器访问请求进行响应。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块,包括:
利用寄存器访问路由模块从寄存器访问请求中读取第一虚拟功能的识别号和特定寄存器的地址偏移;
从映射表中查询与识别号对应的映射记录;
将映射记录对应的算法模块确定为第一算法模块。
在本发明中的一种具体实施方式中,通过仲裁模块将寄存器访问请求发送给第一算法模块,包括:
通过寄存器访问仲裁模块,将地址偏移发送给第一算法模块;
相应地,利用第一算法模块对寄存器访问请求进行响应,包括:
利用第一算法模块,基于地址偏移访问特定寄存器。
在本发明中的一种具体实施方式中,还包括:
若映射记录中的有效位为无效标识,则反馈请求错误。
在本发明中的一种具体实施方式中,在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求,包括:
在第二算法模块产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;
仲裁模块将中断请求传递给路由模块;
利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;
通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能,包括:
利用中断路由模块从中断请求中读取中断号和第二算法模块的功能号;
在映射表中查询功能号,得到对应的映射记录;
将映射记录对应的虚拟功能确定为第二虚拟功能。
在本发明中的一种具体实施方式中,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断,包括:
中断路由模块将中断号发送给第二虚拟功能;
通过第二虚拟功能的中断接口,向虚拟机触发中断号对应的中断。
在本发明中的一种具体实施方式中,基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从主机中读取算法文件,并解析算法文件,得到算法模块和算法信息;
利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置算法模块,并在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录。
在本发明中的一种具体实施方式中,利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照算法模块所需中断数量和待选虚拟功能支持的中断数量,为每个算法模块选择待使用的虚拟功能。
在本发明中的一种具体实施方式中,解析算法文件,得到算法模块和算法信息,包括;
从算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
在本发明中的一种具体实施方式中,在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取算法模块的片选号;
依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表。
在本发明中的一种具体实施方式中,获取算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若功能号为空,则确定当前片选号无对应算法模块;
若功能号不为空,则确定当前选中的算法模块对应当前片选号。
在本发明中的一种具体实施方式中,依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入映射表中;
在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
在本发明中的一种具体实施方式中,在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在有效位中写入有效标识;
如果否,则在有效位中写入无效标识。
在本发明中的一种具体实施方式中,还包括:
物理功能获取新算法文件,并解析新算法文件,得到新算法模块和新算法信息;
利用新算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置新算法模块,并获取新算法模块的片选号;
依次将每个新算法模块的片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对静态区的映射表进行更新。
可见,在该FPGA器件中,整体分成两部分,静态区和动态区。在动态区包含实现的各种类型算法如压缩、图像算法等。静态区实现SR-IOV技术,创建PF和多个VF,并添加相关模块如算法寄存器访问模块、VF与算法映射表等实现VF与算法功能动态结合。在动态区配置更新的过程中,此区域处映射表中的内容进行更新,其余部分保持不变。
为实现VF与算法功能相分离并可动态结合,VF的接口须不面向特定算法设计,具有一定的普适性。同时算法模块也须有一致的接口设计,才能与任何VF相结合。
具体的,从使用算法的用户角度看,主要关心三种接口,分别是:
1、算法寄存器访问接口,用于访问属于此算法的寄存器;
2、中断接口,可接收算法产生的中断;
3、DMA数据传输接口,用于主机端和设备端DDR间传输大块数据。
VF呈现的接口主要有PCI配置空间和6个寄存器内存地址访问空间[BAR0,BAR5]。本发明规定在VF接口设计时须遵循一个原则,即与算法特定相关的寄存器占用一个独立的寄存器内存地址访问空间,其中不包含与算法不相关或算法通用的寄存器。
基于上述原则,针对三种接口,VF的接口设计如下:
1、从6个BAR空间中选取一个特定的BAR(Base Address Register,基地址寄存器)空间如BAR2,用于访问算法特定寄存器;
2、中断接口存在于PCI配置空间的MSI/MSIX Capability结构中,其中指明了此VF可支持的中断数目;
3、因为所有算法都需具备DMA数据传输能力,所以从6个BAR空间中额外选取一个BAR空间如BAR0,用于存放DMA(Direct Memory Access,直接内存访问,一种数据传输机制)相关的寄存器。
综上,FPGA器件中的VF接口包含:两个BAR寄存器,其中一个用于访问算法特定的寄存器BAR_X,另一个用于访问与算法不相关或算法通用的寄存器BAR_Y。X和Y取值范围为[0,5],且不同;
MSI(Message Signal Interrupt,消息信号中断)和MSI-X(Message SignalInterrupt-eXtend,消息信号中断扩展)两个Capability(能力)都可支持,其中MSI-X除了对应的Capability外,还有两个须放置在BAR空间中的表结构MSI-X Table和PendingTable,因为每个算法都有中断,所以它们放置在BAR_Y中。本发明支持每个VF的中断数目可以不同。
其中,对于PCI(Peripheral Component Interconnect,外设部件互连标准)/PCIe(peripheral component interconnect express,一种高速串行计算机扩展总线标准)设备来说,在其配置空间有一些必要的基础信息如BAR、设备类型等信息,还有一些可选的能力信息,比如设备支持MSI中断,则在其配置空间包含MSI capability,描述此设备MSI中断相关信息,比如需要的中断数目。如果设备不支持MSI中断,则在其配置空间就不需要有MSIcapability。即本文中的Capability用于对设备能力信息的描述。
因为动态区算法模块的数目随着动态配置会发生变化,而静态区VF的数目默认保持不变,所以静态区在设计VF的数目时会选取一个合理的较大值N(例如,可取大于等于10的数值),不小于动态区可支持的最大算法模块数目M。需要注意的是,N需要大于等于M,否则,即无法实现,并进行报错。
对于算法模块的接口设计,本发明对寄存器访问接口和中断接口做了统一规范,其一:对于寄存器访问接口,PF读取地址0,则算法模块须提供此算法对应的算法类型ID信息(即算法ID);其二,对于中断接口,若算法想触发中断,须发送两部分信息,此算法的算法ID信息和中断编号信息(即中断号)。所谓中断编号信息指的是若此算法支持N个中断,则其每个中断编号分别为[0,N-1]。
相应于上述实施例所描述的FPGA器件,本发明实施例还提供了一种数据处理系统,下文所描述的数据处理系统可与上述实施例相互参照,由于在该数据处理系统中具有上述实施例所描述的FPGA器件,因而也同样具有该FPGA器件的技术效果。
请参考图6,图6为本发明实施例中一种数据处理系统示意图,该系统包括:
主机和如上述的FPGA器件,主机中的管理应用与FPGA器件中的物理功能对接,主机中的虚拟机与FPGA器件中的虚拟功能对接;
通过管理应用,向物理功能提供算法文件;
物理功能基于算法文件,对FPGA器件中的映射表进行更新,对算法模块进行更新,实现虚拟功能与算法模块的动态结合;
基于映射表,虚拟机通过虚拟功能实现对算法模块的特定寄存器进行访问;
基于映射表,算法模块通过虚拟功能实现向虚拟机触发中断。
由于数据处理系统中具有本发明实施例所提出的FPGA器件,因而在该FPGA器件中,具有如下的FPGA架构,包括:
静态区和动态区;
静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;
映射表分别与物理功能、路由模块相连接;
物理功能分别与虚拟功能、仲裁模块相连接;
路由模块分别与虚拟功能、仲裁模块相连接;
动态区包括算法模块,算法模块通过访问接口和中断接口与仲裁模块相连接;
映射表用于记录虚拟功能与算法模块的映射关系;
虚拟功能包括特定访问接口和通用访问接口,特定访问接口用于供主机访问算法特定的寄存器,通用访问接口用于访问与算法不相关或算法通用的寄存器。
在本发明中的一种具体实施方式中,包括:
物理功能从主机中获取算法文件后,基于算法文件对映射表进行更新,对动态区中的算法模块进行更新,以完成算法模块与虚拟功能的动态结合。
在本发明中的一种具体实施方式中,包括:
虚拟功能接收主机中虚拟机发送的寄存器访问请求;其中,寄存器访问请求包括虚拟功能的识别号,请求访问特定寄存器的地址偏移;
路由模块在映射表中查询识别号,确定请求访问的算法模块;
仲裁模块将寄存器访问请求发送给请求访问的算法模块;
算法模块,根据地址偏移,访问特定寄存器。
在本发明中的一种具体实施方式中,包括:
算法模块产生中断请求后,仲裁模块,将中断请求传递给路由模块;
路由模块,读取中断请求中携带的功能号,并查询映射表,确定与算法模块具有映射关系的虚拟功能;
将中断请求发送给查找确定的虚拟功能,并由该虚拟功能对主机发出中断号对应的中断信号。
在本发明中的一种具体实施方式中,特定访问接口对应一个基地址寄存器,通用访问接口对应另一个基地址寄存器;其中,基地址寄存器为外设部件互连标准规范中定义的。
在本发明中的一种具体实施方式中,仲裁模块包括寄存器访问仲裁模块和中断仲裁模块;
算法模块通过访问接口与寄存器访问仲裁模块相连接,算法模块通过中断接口与中断仲裁模块相连接。
在本发明中的一种具体实施方式中,路由模块包括寄存器访问路由模块和中断路由模块;
虚拟功能通过特定访问接口与寄存器访问路由模块相连接;
虚拟功能通过中断接口与中断路由模块相连接。
由于数据处理系统中具有本发明所提出的FPGA器件,因而,在该数据处理系统中,可以实现以下数据处理方法的步骤:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求。
在本发明中的一种具体实施方式中,通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求,包括:
通过第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求;
利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;
通过仲裁模块将寄存器访问请求发送给第一算法模块;
利用第一算法模块对寄存器访问请求进行响应。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块,包括:
利用寄存器访问路由模块从寄存器访问请求中读取第一虚拟功能的识别号和特定寄存器的地址偏移;
从映射表中查询与识别号对应的映射记录;
将映射记录对应的算法模块确定为第一算法模块。
在本发明中的一种具体实施方式中,通过仲裁模块将寄存器访问请求发送给第一算法模块,包括:
通过寄存器访问仲裁模块,将地址偏移发送给第一算法模块;
相应地,利用第一算法模块对寄存器访问请求进行响应,包括:
利用第一算法模块,基于地址偏移访问特定寄存器。
在本发明中的一种具体实施方式中,还包括:
若映射记录中的有效位为无效标识,则反馈请求错误。
在本发明中的一种具体实施方式中,在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求,包括:
在第二算法模块产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;
仲裁模块将中断请求传递给路由模块;
利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;
通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能,包括:
利用中断路由模块从中断请求中读取中断号和第二算法模块的功能号;
在映射表中查询功能号,得到对应的映射记录;
将映射记录对应的虚拟功能确定为第二虚拟功能。
在本发明中的一种具体实施方式中,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断,包括:
中断路由模块将中断号发送给第二虚拟功能;
通过第二虚拟功能的中断接口,向虚拟机触发中断号对应的中断。
在本发明中的一种具体实施方式中,基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从主机中读取算法文件,并解析算法文件,得到算法模块和算法信息;
利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置算法模块,并在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录。
在本发明中的一种具体实施方式中,利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照算法模块所需中断数量和待选虚拟功能支持的中断数量,为每个算法模块选择待使用的虚拟功能。
在本发明中的一种具体实施方式中,解析算法文件,得到算法模块和算法信息,包括;
从算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
在本发明中的一种具体实施方式中,在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取算法模块的片选号;
依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表。
在本发明中的一种具体实施方式中,获取算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若功能号为空,则确定当前片选号无对应算法模块;
若功能号不为空,则确定当前选中的算法模块对应当前片选号。
在本发明中的一种具体实施方式中,依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入映射表中;
在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
在本发明中的一种具体实施方式中,在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在有效位中写入有效标识;
如果否,则在有效位中写入无效标识。
在本发明中的一种具体实施方式中,还包括:
物理功能获取新算法文件,并解析新算法文件,得到新算法模块和新算法信息;
利用新算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置新算法模块,并获取新算法模块的片选号;
依次将每个新算法模块的片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对静态区的映射表进行更新。
相应于上面的方法实施例,本发明实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的一种数据处理方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的数据处理方法的步骤。
如图7所示,具体的,该可读存储介质602中存储的计算机程序601被执行时,可以实现以下数据处理方法的步骤:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求。
在本发明中的一种具体实施方式中,通过第一虚拟功能接收主机发送的寄存器访问请求,基于映射表,确定与第一虚拟功能具有映射关系的第一算法模块,利用第一算法模块响应寄存器访问请求,包括:
通过第一虚拟功能的特定访问接口,接收主机中虚拟机发送的寄存器访问请求;
利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块;
通过仲裁模块将寄存器访问请求发送给第一算法模块;
利用第一算法模块对寄存器访问请求进行响应。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第一虚拟功能具有映射关系的第一算法模块,包括:
利用寄存器访问路由模块从寄存器访问请求中读取第一虚拟功能的识别号和特定寄存器的地址偏移;
从映射表中查询与识别号对应的映射记录;
将映射记录对应的算法模块确定为第一算法模块。
在本发明中的一种具体实施方式中,通过仲裁模块将寄存器访问请求发送给第一算法模块,包括:
通过寄存器访问仲裁模块,将地址偏移发送给第一算法模块;
相应地,利用第一算法模块对寄存器访问请求进行响应,包括:
利用第一算法模块,基于地址偏移访问特定寄存器。
在本发明中的一种具体实施方式中,还包括:
若映射记录中的有效位为无效标识,则反馈请求错误。
在本发明中的一种具体实施方式中,在第二算法模块产生中断请求的情况下,基于映射表,确定与第二算法模块具有映射关系的第二虚拟功能,利用第二虚拟功能响应中断请求,包括:
在第二算法模块产生中断请求,并通过第二算法模块的中断接口,将中断请求发送给仲裁模块;
仲裁模块将中断请求传递给路由模块;
利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能;
通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断。
在本发明中的一种具体实施方式中,利用路由模块从映射表中查询与第二算法模块具有映射关系的第二虚拟功能,包括:
利用中断路由模块从中断请求中读取中断号和第二算法模块的功能号;
在映射表中查询功能号,得到对应的映射记录;
将映射记录对应的虚拟功能确定为第二虚拟功能。
在本发明中的一种具体实施方式中,通过第二虚拟功能的中断接口,向主机中的虚拟机触发中断,包括:
中断路由模块将中断号发送给第二虚拟功能;
通过第二虚拟功能的中断接口,向虚拟机触发中断号对应的中断。
在本发明中的一种具体实施方式中,基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从主机中读取算法文件,并解析算法文件,得到算法模块和算法信息;
利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置算法模块,并在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录。
在本发明中的一种具体实施方式中,利用算法信息,从静态区中为每个算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照算法模块所需中断数量和待选虚拟功能支持的中断数量,为每个算法模块选择待使用的虚拟功能。
在本发明中的一种具体实施方式中,解析算法文件,得到算法模块和算法信息,包括;
从算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
在本发明中的一种具体实施方式中,在映射表中写入每个算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取算法模块的片选号;
依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表。
在本发明中的一种具体实施方式中,获取算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若功能号为空,则确定当前片选号无对应算法模块;
若功能号不为空,则确定当前选中的算法模块对应当前片选号。
在本发明中的一种具体实施方式中,依次将每个算法模块的片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入映射表中;
在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
在本发明中的一种具体实施方式中,在映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在有效位中写入有效标识;
如果否,则在有效位中写入无效标识。
在本发明中的一种具体实施方式中,还包括:
物理功能获取新算法文件,并解析新算法文件,得到新算法模块和新算法信息;
利用新算法信息,从静态区中为每个算法模块选择待使用的虚拟功能;
在动态区配置新算法模块,并获取新算法模块的片选号;
依次将每个新算法模块的片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对静态区的映射表进行更新。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (25)
1.一种FPGA架构,其特征在于,包括:静态区和动态区;
所述静态区包括物理功能、虚拟功能、映射表、路由模块和仲裁模块;其中,所述物理功能为物理接口,所述虚拟功能为与主机虚拟机相连接的虚拟接口;
所述路由模块用于基于所述映射表确定请求的路由路径;
所述仲裁模块用于基于所述映射表对所述请求进行仲裁放行;
所述动态区包括算法模块,所述算法模块通过访问接口和中断接口与所述仲裁模块相连接;
所述映射表用于记录所述虚拟功能与所述算法模块的映射关系;
所述虚拟功能包括特定访问接口和通用访问接口,所述特定访问接口用于供主机访问算法特定的寄存器,所述通用访问接口用于访问与算法不相关或算法通用的寄存器;
所述物理功能从主机中获取算法文件后,基于所述算法文件对所述映射表进行更新,对所述动态区中的算法模块进行更新,以完成算法模块与虚拟功能的动态结合。
2.根据权利要求1所述的FPGA架构,其特征在于,包括:
所述虚拟功能接收主机中虚拟机发送的寄存器访问请求;其中,所述寄存器访问请求包括虚拟功能的识别号,请求访问特定寄存器的地址偏移;
所述路由模块在所述映射表中查询所述识别号,确定请求访问的算法模块;
所述仲裁模块将所述寄存器访问请求发送给请求访问的算法模块;
所述算法模块,根据地址偏移,访问所述特定寄存器。
3.根据权利要求1所述的FPGA架构,其特征在于,包括:
所述算法模块产生中断请求后,所述仲裁模块,将所述中断请求传递给所述路由模块;
所述路由模块,读取所述中断请求中携带的功能号,并查询所述映射表,确定与所述算法模块具有映射关系的虚拟功能;
将所述中断请求发送给查找确定的虚拟功能,并由该虚拟功能对主机发出所述中断号对应的中断信号。
4.根据权利要求1所述的FPGA架构,其特征在于,所述特定访问接口对应一个基地址寄存器,所述通用访问接口对应另一个基地址寄存器;其中,所述基地址寄存器为外设部件互连标准规范中定义的。
5.根据权利要求1至4任一项所述的FPGA架构,其特征在于,所述仲裁模块包括寄存器访问仲裁模块和中断仲裁模块;
所述寄存器访问仲裁模块用于对主机发送的寄存器访问请求进行仲裁放行;
所述中断仲裁模块用于对所述算法模块的中断请求进行仲裁放行。
6.根据权利要求1至4任一项所述的FPGA架构,其特征在于,所述路由模块包括寄存器访问路由模块和中断路由模块;
所述寄存器访问路由模块用于基于所述映射表确定处理寄存器访问请求的路由路径;
所述中断路由模块用于基于所述映射表确定中断请求的路由路径。
7.一种数据处理方法,其特征在于,应用于如权利要求1至6任一项所述的FPGA架构,包括:
基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表;
通过第一虚拟功能接收主机发送的寄存器访问请求,基于所述映射表,确定与所述第一虚拟功能具有映射关系的第一算法模块,利用所述第一算法模块响应所述寄存器访问请求;
在第二算法模块产生中断请求的情况下,基于所述映射表,确定与所述第二算法模块具有映射关系的第二虚拟功能,利用所述第二虚拟功能响应所述中断请求。
8.根据权利要求7所述的数据处理方法,其特征在于,所述通过第一虚拟功能接收主机发送的寄存器访问请求,基于所述映射表,确定与所述第一虚拟功能具有映射关系的第一算法模块,利用所述第一算法模块响应所述寄存器访问请求,包括:
通过所述第一虚拟功能的特定访问接口,接收所述主机中的虚拟机发送的所述寄存器访问请求;
利用路由模块从所述映射表中查询与所述第一虚拟功能具有映射关系的所述第一算法模块;
通过仲裁模块将所述寄存器访问请求发送给所述第一算法模块;
利用所述第一算法模块对所述寄存器访问请求进行响应。
9.根据权利要求8所述的数据处理方法,其特征在于,所述利用路由模块从所述映射表中查询与所述第一虚拟功能具有映射关系的所述第一算法模块,包括:
利用寄存器访问路由模块从所述寄存器访问请求中读取所述第一虚拟功能的识别号和特定寄存器的地址偏移;
从所述映射表中查询与所述识别号对应的映射记录;
将所述映射记录对应的算法模块确定为所述第一算法模块。
10.根据权利要求9所述的数据处理方法,其特征在于,通过仲裁模块将所述寄存器访问请求发送给所述第一算法模块,包括:
通过寄存器访问仲裁模块,将所述地址偏移发送给所述第一算法模块;
相应地,利用所述第一算法模块对所述寄存器访问请求进行响应,包括:
利用所述第一算法模块,基于所述地址偏移访问所述特定寄存器。
11.根据权利要求9所述的数据处理方法,其特征在于,还包括:
若所述映射记录中的有效位为无效标识,则反馈请求错误。
12.根据权利要求7所述的数据处理方法,其特征在于,所述在第二算法模块产生中断请求的情况下,基于所述映射表,确定与所述第二算法模块具有映射关系的第二虚拟功能,利用所述第二虚拟功能响应所述中断请求,包括:
在所述第二算法模块产生所述中断请求,并通过所述第二算法模块的中断接口,将所述中断请求发送给仲裁模块;
所述仲裁模块将所述中断请求传递给路由模块;
利用所述路由模块从所述映射表中查询与所述第二算法模块具有映射关系的所述第二虚拟功能;
通过所述第二虚拟功能的中断接口,向所述主机中的虚拟机触发中断。
13.根据权利要求12所述的数据处理方法,其特征在于,所述利用所述路由模块从所述映射表中查询与所述第二算法模块具有映射关系的所述第二虚拟功能,包括:
利用所述中断路由模块从所述中断请求中读取中断号和所述第二算法模块的功能号;
在所述映射表中查询所述功能号,得到对应的映射记录;
将所述映射记录对应的虚拟功能确定为所述第二虚拟功能。
14.根据权利要求12所述的数据处理方法,其特征在于,通过所述第二虚拟功能的中断接口,向所述主机中的虚拟机触发中断,包括:
所述中断路由模块将所述中断号发送给所述第二虚拟功能;
通过所述第二虚拟功能的中断接口,向所述虚拟机触发所述中断号对应的中断。
15.根据权利要求7所述的数据处理方法,其特征在于,所述基于算法文件,在动态区部署算法模块,更新动态结合虚拟功能与算法模块的映射表,包括:
利用物理功能从所述主机中读取所述算法文件,并解析所述算法文件,得到算法模块和算法信息;
利用所述算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能;
在动态区配置所述算法模块,并在所述映射表中写入每个所述算法模块与对应选择待使用的虚拟功能的映射记录。
16.根据权利要求15所述的数据处理方法,其特征在于,利用所述算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能,包括:
获取待选虚拟功能支持的中断数量;
按照所述算法模块所需中断数量和所述待选虚拟功能支持的中断数量,为每个所述算法模块选择待使用的虚拟功能。
17.根据权利要求15所述的数据处理方法,其特征在于,解析所述算法文件,得到算法模块和算法信息,包括;
从所述算法文件中解析出每个算法模块;
从解析得到算法模块中读取每个算法模块所需中断数目;
将每个算法模块所需中断数目确定为算法信息。
18.根据权利要求15所述的数据处理方法,其特征在于,在所述映射表中写入每个所述算法模块与对应选择待使用的虚拟功能的映射记录,包括:
获取所述算法模块的片选号;
依次将每个所述算法模块的所述片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入所述映射表。
19.根据权利要求18所述的数据处理方法,其特征在于,获取所述算法模块的片选号,包括:
基于静态区的虚拟功能数量确定片选号的取值范围;
在所述取值范围内依次选中一个算法模块,并读取该算法模块的功能号;
若所述功能号为空,则确定当前片选号无对应算法模块;
若所述功能号不为空,则确定当前选中的算法模块对应当前片选号。
20.根据权利要求18所述的数据处理方法,其特征在于,所述依次将每个所述算法模块的所述片选号和该算法模块对应待使用虚拟功能的识别号作为一条映射记录写入所述映射表,包括:
将一个算法模块的片选号和该算法模块对应的虚拟功能的识别号作为一条映射记录写入所述映射表中;
在所述映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识。
21.根据权利要求20所述的数据处理方法,其特征在于,在所述映射记录的有效位中写入对应的算法模块与虚拟功能是否结合成功的标识,包括:
判断所述映射记录对应的算法模块与虚拟功能是否结合成功;
如果是,则在所述有效位中写入有效标识;
如果否,则在所述有效位中写入无效标识。
22.根据权利要求7至21任一项所述的数据处理方法,其特征在于,还包括:
物理功能获取新算法文件,并解析所述新算法文件,得到新算法模块和新算法信息;
利用所述新算法信息,从静态区中为每个所述算法模块选择待使用的虚拟功能;
在动态区配置所述新算法模块,并获取所述新算法模块的片选号;
依次将每个所述新算法模块的所述片选号和该新算法模块对应待使用虚拟功能的识别号作为一条新映射记录,对所述静态区的映射表进行更新。
23.一种FPGA器件,其特征在于,具有如权利要求1至6任一项所述的FPGA架构,在所述FPGA架构中实现如权利要求7至22任一项所述数据处理方法的步骤。
24.一种数据处理系统,其特征在于,包括:主机和如权利要求23所述的FPGA器件,所述主机中的管理应用与FPGA器件中的物理功能对接,所述主机中的虚拟机与所述FPGA器件中的虚拟功能对接;
通过所述管理应用,向所述物理功能提供算法文件;
所述物理功能基于所述算法文件,对所述FPGA器件中的映射表进行更新,对算法模块进行更新,实现虚拟功能与算法模块的动态结合;
基于所述映射表,所述虚拟机通过所述虚拟功能实现对算法模块的特定寄存器进行访问;
基于所述映射表,所述算法模块通过所述虚拟功能实现向所述虚拟机触发中断。
25.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求7至22任一项所述数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311013808.9A CN116737618B (zh) | 2023-08-14 | 2023-08-14 | Fpga架构、器件、数据处理方法、系统及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311013808.9A CN116737618B (zh) | 2023-08-14 | 2023-08-14 | Fpga架构、器件、数据处理方法、系统及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116737618A CN116737618A (zh) | 2023-09-12 |
CN116737618B true CN116737618B (zh) | 2023-11-14 |
Family
ID=87906421
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311013808.9A Active CN116737618B (zh) | 2023-08-14 | 2023-08-14 | Fpga架构、器件、数据处理方法、系统及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116737618B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117369734B (zh) * | 2023-12-08 | 2024-03-08 | 浪潮电子信息产业股份有限公司 | 一种存储资源管理系统、方法及存储虚拟化系统 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102413036A (zh) * | 2011-08-22 | 2012-04-11 | 复旦大学 | 一种实时部分动态可重构系统 |
US9698794B1 (en) * | 2015-12-22 | 2017-07-04 | Altera Corporation | Systems and methods for coalescing regions on a virtualized programmable logic device |
CN110569042A (zh) * | 2019-08-19 | 2019-12-13 | 苏州浪潮智能科技有限公司 | 一种支持虚拟机内更新fpga功能的系统,方法,设备及存储介质 |
CN111414329A (zh) * | 2020-03-06 | 2020-07-14 | 苏州浪潮智能科技有限公司 | 一种云端数据中心的fpga架构 |
CN112486895A (zh) * | 2019-09-12 | 2021-03-12 | 阿里巴巴集团控股有限公司 | 一种fpga芯片及其互联控制方法 |
CN112997145A (zh) * | 2018-08-27 | 2021-06-18 | 领汇仪器有限公司 | 使用部分重配置对现场可编程门阵列进行编程的改进的过程 |
CN113448608A (zh) * | 2021-07-14 | 2021-09-28 | 浙江国利网安科技有限公司 | 一种基于区域切片技术的fpga增量升级方法及装置 |
CN114968487A (zh) * | 2022-05-24 | 2022-08-30 | 中国科学院计算技术研究所 | 一种在虚拟机中进行fpga动态部分可重构配置方法和系统、存储介质、电子设备 |
CN116107962A (zh) * | 2022-12-28 | 2023-05-12 | 中科亿海微电子科技(苏州)有限公司 | 一种动态可重构的装箱方法及可重构模块、fpga芯片 |
CN116126459A (zh) * | 2022-12-15 | 2023-05-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向异构计算环境的fpga虚拟化实现方法 |
CN116400300A (zh) * | 2023-02-08 | 2023-07-07 | 北京理工雷科电子信息技术有限公司 | 一种面向雷达系统的fpga动态重配置方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7613847B2 (en) * | 2006-05-16 | 2009-11-03 | Hewlett-Packard Development Company, L.P. | Partially virtualizing an I/O device for use by virtual machines |
US20070283311A1 (en) * | 2006-05-30 | 2007-12-06 | Theodore Karoubalis | Method and system for dynamic reconfiguration of field programmable gate arrays |
DE102015118129A1 (de) * | 2015-10-23 | 2017-04-27 | Dspace Digital Signal Processing And Control Engineering Gmbh | Verfahren zum Ermitteln der Leistungsaufnahme eines programmierbaren Logikbausteins |
CN110659061B (zh) * | 2019-09-03 | 2021-03-16 | 苏州浪潮智能科技有限公司 | Fpga动态重配置方法、装置、设备及可读存储介质 |
-
2023
- 2023-08-14 CN CN202311013808.9A patent/CN116737618B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102413036A (zh) * | 2011-08-22 | 2012-04-11 | 复旦大学 | 一种实时部分动态可重构系统 |
US9698794B1 (en) * | 2015-12-22 | 2017-07-04 | Altera Corporation | Systems and methods for coalescing regions on a virtualized programmable logic device |
CN112997145A (zh) * | 2018-08-27 | 2021-06-18 | 领汇仪器有限公司 | 使用部分重配置对现场可编程门阵列进行编程的改进的过程 |
CN110569042A (zh) * | 2019-08-19 | 2019-12-13 | 苏州浪潮智能科技有限公司 | 一种支持虚拟机内更新fpga功能的系统,方法,设备及存储介质 |
CN112486895A (zh) * | 2019-09-12 | 2021-03-12 | 阿里巴巴集团控股有限公司 | 一种fpga芯片及其互联控制方法 |
CN111414329A (zh) * | 2020-03-06 | 2020-07-14 | 苏州浪潮智能科技有限公司 | 一种云端数据中心的fpga架构 |
CN113448608A (zh) * | 2021-07-14 | 2021-09-28 | 浙江国利网安科技有限公司 | 一种基于区域切片技术的fpga增量升级方法及装置 |
CN114968487A (zh) * | 2022-05-24 | 2022-08-30 | 中国科学院计算技术研究所 | 一种在虚拟机中进行fpga动态部分可重构配置方法和系统、存储介质、电子设备 |
CN116126459A (zh) * | 2022-12-15 | 2023-05-16 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向异构计算环境的fpga虚拟化实现方法 |
CN116107962A (zh) * | 2022-12-28 | 2023-05-12 | 中科亿海微电子科技(苏州)有限公司 | 一种动态可重构的装箱方法及可重构模块、fpga芯片 |
CN116400300A (zh) * | 2023-02-08 | 2023-07-07 | 北京理工雷科电子信息技术有限公司 | 一种面向雷达系统的fpga动态重配置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116737618A (zh) | 2023-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209644B (zh) | 一种数据处理方法以及NVMe存储器 | |
EP3110068B1 (en) | Device management method | |
CN116737618B (zh) | Fpga架构、器件、数据处理方法、系统及存储介质 | |
JP5558982B2 (ja) | アトミックなセマフォ操作を行う方法および装置 | |
CN108984465B (zh) | 一种消息传输方法及设备 | |
US9489328B2 (en) | System on chip and method for accessing device on bus | |
US8615586B2 (en) | Discovery of logical images at storage area network endpoints | |
RU2641251C1 (ru) | Способ и устройство для автоматического обмена сигналами между встроенными мультиплатами центрального процессора | |
US11829309B2 (en) | Data forwarding chip and server | |
CN110532106B (zh) | 进程间的通讯方法、装置、设备和存储介质 | |
JP2002342299A (ja) | クラスタシステム、コンピュータ及びプログラム | |
EP3441884A1 (en) | Method for managing translation lookaside buffer and multi-core processor | |
US20240168911A1 (en) | PCIe DEVICE | |
EP4187813A1 (en) | Resource distribution method for cloud service and related device | |
CN113934674B (zh) | 基于pcie总线的命令传输方法及片上系统 | |
EP2704009A2 (en) | Information processing apparatus, information processing method, and program | |
CN115827524A (zh) | 一种数据传输方法以及装置 | |
CN101751352A (zh) | 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 | |
CN115080479B (zh) | 传输方法、服务器、设备、裸金属实例及基板管理控制器 | |
CN114201268A (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN115203110A (zh) | PCIe功能及其操作方法 | |
US10437750B2 (en) | Relative data width indication for read responses routed by an interconnect | |
CN114238184A (zh) | 一种多功能dma的传输方法、装置及存储介质 | |
CN110737618B (zh) | 内嵌处理器进行快速数据通信的方法、装置及存储介质 | |
JP2002323988A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |