CN110888834B - 一种pcie设备中fpga功能动态重构的方法及系统 - Google Patents
一种pcie设备中fpga功能动态重构的方法及系统 Download PDFInfo
- Publication number
- CN110888834B CN110888834B CN201911078289.8A CN201911078289A CN110888834B CN 110888834 B CN110888834 B CN 110888834B CN 201911078289 A CN201911078289 A CN 201911078289A CN 110888834 B CN110888834 B CN 110888834B
- Authority
- CN
- China
- Prior art keywords
- pcie
- fpga
- host machine
- pcie equipment
- equipment
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- 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
Abstract
本发明实施例提供一种PCIE设备中FPGA功能动态重构的方法及系统。该方法包括:PCIE设备上电后,加载第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,若宿主机加载PCIE设备的第二业务功能时,通知微处理器选取第二FPGA逻辑文件,使用第二逻辑目标码对FPGA进行全局动态重构;待全局动态重构完成后,与宿主机建立二次链接。本发明实施例通过使用初始逻辑不同功能逻辑目标码,对FPGA进行全局动态重构,宿主机和PCIE设备均无需重启,两者通过二次建链重新恢复正常通信,提供新的功能服务,使设备能够在正常工作过程中,动态替换为新的已知或未知功能,更加通用、灵活,扩展性更强,适用场景更加丰富。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种PCIE设备中FPGA功能动态重构的方法及系统。
背景技术
在PCIE设备领域,为有效降低设备的尺寸、功耗及成本,同时兼顾设备的计算性能,通常将采用单片FPGA芯片实现PCIE接口及板卡主要功能的设计作为优选方案,而如何更好的发挥该方案的工作效能,在资源受限的情况下,实现对设备功能的按需动态更替,提升设备的通用性、灵活性和扩展性,是PCIE设备研制厂商长久以来一直在关注的问题。
针对基于单芯片FPGA设计的PCIE设备,主要通过FPGA逻辑动态加载来实现设备功能的动态更替,通常的方法是使用FPGA逻辑局部动态加载方式,该方式主要缺点在于只能对有限个已预置功能模块进行切换,扩展性有限,而采用FPGA逻辑全局动态加载方式虽可以面向未知功能,但同时面临加载后设备通信中断的问题。
而传统的FPGA逻辑升级模式,主要采用FPGA主动加载PROM内存储的新逻辑目标码实现,虽然针对升级场景效率较高,但在需要多个逻辑频繁切换时,存在存储空间分配与反复擦写等问题。
发明内容
本发明实施例提供一种PCIE设备中FPGA功能动态重构的方法及系统,用以解决现有技术中实现设备功能动态更新时,仅通过使用FPGA局部动态加载方式,扩展性较差,且灵活度不高的缺陷。
第一方面,本发明实施例提供一种PCIE设备中FPGA功能动态重构的方法,包括:
待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;
若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;
待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
优选地,所述使用所述第二逻辑目标码对FPGA进行全局动态重构,之前还包括:
通知所述宿主机停止对所述PCIE设备的全部功能调用,并中断与所述PCIE设备的通信。
优选地,所述与宿主机建立首次链接,具体包括:
由所述FPGA内置的flash芯片加载所述第一FPGA逻辑文件,所述第一FPGA逻辑文件包含PCIE接口IP核;
通过所述PCIE接口IP核扫描RC控制器下的所述PCIE设备,为所述PCIE设备分配总线资源,建立所述首次链接,并记录所述PCIE设备的总线信息;
待所述首次链接完成,通过驱动程序将所述PCIE设备的BAR空间寄存器的完整内容记录至系统全局变量。
优选地,所述全局动态重构,具体包括:
由所述微处理器配置所述FPGA,使所述FPGA被动加载所述第二逻辑目标码,所述第二逻辑目标码包含所述PCIE接口IP核;
通过所述第二逻辑目标码查找到所述第二FPGA逻辑文件,由所述第二FPGA逻辑文件执行所述全局动态重构。
优选地,所述宿主机使用Windows操作系统或使用Linux操作系统。
优选地,当所述宿主机使用Windows操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,调用所述Windows操作系统的API接口获取所述宿主机的全部设备信息;
调用Windows操作系统接口枚举设备信息,通过总线信息号获取PCIE设备句柄;
通过所述PCIE设备句柄实现对所述PCIE设备的停用控制和启用控制,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备的功能调用。
优选地,当所述宿主机使用Linux操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,遍历sysfs文件子系统,通过总线信息号获取PCIE设备文件路径;
通过所述PCIE设备文件路径中的卸载命令对所述PCIE设备进行卸载;
重新扫描所述总线信息号,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备功能的调用。
第二方面,本发明实施例提供一种PCIE设备中FPGA功能动态重构的系统,包括:
第一处理模块,用于待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;
重构模块,用于若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;
第二处理模块,用于待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
第三方面,本发明实施例提供一种电子设备,包括:
存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任一项所述PCIE设备中FPGA功能动态重构的方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现任一项所述PCIE设备中FPGA功能动态重构的方法的步骤。
本发明实施例提供的PCIE设备中FPGA功能动态重构的方法及系统,通过使用和初始逻辑不同的功能逻辑目标码,对FPGA进行全局动态重构,宿主机和PCIE设备均无需重启,两者通过二次建链重新恢复正常通信,提供新的功能服务,使设备能够在正常工作过程中,动态替换为新的已知或未知功能,更加通用、灵活,扩展性更强,适用场景更加丰富。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种PCIE设备中FPGA功能动态重构的方法流程图;
图2为本发明实施例提供的PCIE设备系统结构示意图;
图3为本发明实施例提供的一种PCIE设备中FPGA功能动态重构的系统结构图;
图4为本发明实施例提供的电子设备的结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种PCIE设备中FPGA功能动态重构的方法流程图,如图1所示,包括:
S1,待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;
S2,若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;
S3,待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
具体地,步骤S1中,宿主机系统上电后,PCIE设备也上电,设定当前PCIE设备处于执行第一业务功能状态下,默认加载PCIE网卡和第一业务功能对应的第一FPGA逻辑文件,此时与宿主机建立了首次链接,此处,加载的第一FPGA逻辑文件包含了第一逻辑目标码;等待宿主机应用系统运行后,根据对该PCIE设备的使用需求,与PCIE设备通信,确认设备当前的工作形态;
步骤S2中,若宿主机预备进行业务功能的切换,即准备加载第二业务功能,通知微处理器MCU选取第二业务功能对应的第二FPGA逻辑文件,同样第二FPGA逻辑文件包含第二逻辑目标码,通过该第二逻辑目标码对FPGA进行全局动态重构;
步骤S3中,在FPGA逻辑重构完成后,无需重启宿主机,通过宿主机与PCIE设备进行二次建链,动态恢复功能的正常调用,即开始执行第二业务功能。
本发明实施例通过使用和初始逻辑不同的功能逻辑目标码,对FPGA进行全局动态重构,宿主机和PCIE设备均无需重启,两者通过二次建链重新恢复正常通信,提供新的功能服务,使设备能够在正常工作过程中,动态替换为新的已知或未知功能,更加通用、灵活,扩展性更强,适用场景更加丰富。
基于上述实施例,所述使用所述第二逻辑目标码对FPGA进行全局动态重构,之前还包括:
通知所述宿主机停止对所述PCIE设备的全部功能调用,并中断与所述PCIE设备的通信。
具体地,FPGA在进行逻辑功能全局动态重构前,通知宿主机停止对PCIE设备的所有功能调用,中断与PCIE设备的通信。
本发明实施例通过在执行全局动态重构前,由宿主机停止和PCIE的通信和功能调用,有效地避免了PCIE接口阻塞。
基于上述任一实施例,所述与宿主机建立首次链接,具体包括:
由所述FPGA内置的flash芯片加载所述第一FPGA逻辑文件,所述第一FPGA逻辑文件包含PCIE接口IP核;
通过所述PCIE接口IP核扫描RC控制器下的所述PCIE设备,为所述PCIE设备分配总线资源,建立所述首次链接,并记录所述PCIE设备的总线信息;
待所述首次链接完成,通过驱动程序将所述PCIE设备的BAR空间寄存器的完整内容记录至系统全局变量。
具体地,在PCIE设备上电运行时,FPGA芯片加载自带FLASH芯片内的初始逻辑,即第一FPGA逻辑文件,该逻辑包含PCIE接口IP核,宿主机系统启动过程中,扫描RC控制器下的PCIE设备,为该PCIE设备分配总线资源,实现与上位机的首次建链,并记录下该PCIE设备的总线信息。在PCIE设备在首次建链完成时,通过驱动程序将PCIE设备BAR空间寄存器的完整内容记录至系统全局变量。
基于上述任一实施例,所述全局动态重构,具体包括:
由所述微处理器配置所述FPGA,使所述FPGA被动加载所述第二逻辑目标码,所述第二逻辑目标码包含所述PCIE接口IP核;
通过所述第二逻辑目标码查找到所述第二FPGA逻辑文件,由所述第二FPGA逻辑文件执行所述全局动态重构。
具体地,当需要加载或更换PCIE设备的新功能时,通过PCIE设备上的微处理器MCU配置FPGA,使其被动加载第二逻辑目标码,并实现逻辑功能全局动态重构。PCIE设备上的微处理器MCU预先获取相应新功能的第二逻辑目标码,且该第二逻辑目标码中需包含与第一逻辑目标码相同的PCIE接口IP核。
基于上述任一实施例,所述宿主机使用Windows操作系统或使用Linux操作系统。
具体地,本发明实施例提供的动态重构方案适用于常用的操作系统宿主机,包括Windows操作系统或Linux操作系统。
基于上述任一实施例,当所述宿主机使用Windows操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,调用所述Windows操作系统的API接口获取所述宿主机的全部设备信息;
调用Windows操作系统接口枚举设备信息,通过总线信息号获取PCIE设备句柄;
通过所述PCIE设备句柄实现对所述PCIE设备的停用控制和启用控制,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备的功能调用。
具体地,等待FPGA逻辑动态加载完成后,调用Windows系统自带API接口获取本地计算机所有设备信息;调用Windows系统接口枚举设备信息,通过总线资源对应的总线信息号查找到该PCIE设备句柄;再通过该PCIE设备句柄实现对PCIE设备的停用控制和启用控制,驱动程序重新加载时会使用系统全局变量,对PCIE设备BAR空间的寄存器进行重新配置。此处BAR空间为PCIE的地址空间。等待设备重新启用后,宿主机即可正常调用该PCIE设备的新功能,即第二业务功能。
基于上述任一实施例,当所述宿主机使用Linux操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,遍历sysfs文件子系统,通过总线信息号获取PCIE设备文件路径;
通过所述PCIE设备文件路径中的卸载命令对所述PCIE设备进行卸载;
重新扫描所述总线信息号,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备功能的调用。
具体地,等待FPGA逻辑动态加载完成后,遍历sysfs文件子系统,通过总线资源对应的总线信息号获取该PCIE设备文件路径;通过文件路径下的卸载命令对PCIE设备进行卸载;对总线信息号进行重新扫描,驱动程序重新加载时会使用系统全局变量,对PCIE设备BAR空间的寄存器进行重新配置,等待设备重新挂载成功后,宿主机即可正常调用该PCIE设备的新功能,即第二业务功能。
下面通过一个具体的实施例来说明本发明的方案,优先设定该PCIE设备的不同功能,例如:PCIE加密卡/PCIE认证卡/PCIE数据采集卡/PCIE网卡等,该PCIE设备默认为PCIE网卡。此处,PCIE设备具备不同的业务功能之间进行切换,满足不同的业务需求,系统之间的结构和接口关系参见图2。具体实现步骤如下:
第一步,宿主机系统上电后,PCIE设备上电,默认加载PCIE网卡的FPGA逻辑文件,BIOS为该设备分配总线信息号。
第二步,等待系统启动后,加载PCIE设备驱动,并在驱动里面采用记录下该FPGA的PCIE核BAR空间的所有寄存器值。
第三步,等待宿主机应用系统运行后,根据对该PCIE设备的使用需求,与PCIE设备通信,确认设备当前的工作形态。
第四步,当应用系统需要更换PCIE设备功能时(以PCIE网卡更换为PCIE加密卡为例),应用系统将指令发送给PCIE设备的MCU微处理器,MCU查找到PCIE加密卡对应的逻辑文件,执行FPGA的全局动态加载。
第五步,等待FPGA加载完成后,应用系统根据宿主机操作系统分别Windows操作系统或Linux操作系统。
第六步,该PCIE设备可以作为PCIE加密卡为应用系统提供服务。
第七步,如果需要该PCIE加密卡作为PCIE认证数据采集卡提供服务时,重复执行第四到第六步即可。
图3为本发明实施例提供的一种PCIE设备中FPGA功能动态重构的系统结构图,如图3所示,包括:第一处理模块31、重构模块32和第二处理模块33;其中:
第一处理模块31用于待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;重构模块32用于若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;第二处理模块33用于待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
本发明实施例提供的系统用于执行上述对应的方法,其具体的实施方式与方法的实施方式一致,涉及的算法流程与对应的方法算法流程相同,此处不再赘述。
本发明实施例通过使用和初始逻辑不同的功能逻辑目标码,对FPGA进行全局动态重构,宿主机和PCIE设备均无需重启,两者通过二次建链重新恢复正常通信,提供新的功能服务,使设备能够在正常工作过程中,动态替换为新的已知或未知功能,更加通用、灵活,扩展性更强,适用场景更加丰富。
基于上述任一实施例,该系统还包括停止模块34,所述停止模块34用于通知所述宿主机停止对所述PCIE设备的全部功能调用,并中断与所述PCIE设备的通信。
本发明实施例通过在执行全局动态重构前,由宿主机停止和PCIE的通信和功能调用,有效地避免了PCIE接口阻塞。
基于上述任一实施例,所述第一处理模块31包括第一加载子模块311、分配子模块312和记录子模块313;其中:
第一加载子模块311用于由所述FPGA内置的flash芯片加载所述第一FPGA逻辑文件,所述第一FPGA逻辑文件包含PCIE接口IP核;分配子模块312用于通过所述PCIE接口IP核扫描RC控制器下的所述PCIE设备,为所述PCIE设备分配总线资源,建立所述首次链接,并记录所述PCIE设备的总线信息;记录子模块313用于待所述首次链接完成,通过驱动程序将所述PCIE设备的BAR空间寄存器的完整内容记录至系统全局变量。
基于上述任一实施例,所述重构子模块32包括第二加载子模块321和执行子模块322;其中:
第二加载子模块321用于由所述微处理器配置所述FPGA,使所述FPGA被动加载所述第二逻辑目标码,所述第二逻辑目标码包含所述PCIE接口IP核;执行子模块322用于通过所述第二逻辑目标码查找到所述第二FPGA逻辑文件,由所述第二FPGA逻辑文件执行所述全局动态重构。
基于上述任一实施例,所述宿主机使用Windows操作系统或使用Linux操作系统。
当所述宿主机使用Windows操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,调用所述Windows操作系统的API接口获取所述宿主机的全部设备信息;
调用Windows操作系统接口枚举设备信息,通过总线信息号获取PCIE设备句柄;
通过所述PCIE设备句柄实现对所述PCIE设备的停用控制和启用控制,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备的功能调用。
当所述宿主机使用Linux操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,遍历sysfs文件子系统,通过总线信息号获取PCIE设备文件路径;
通过所述PCIE设备文件路径中的卸载命令对所述PCIE设备进行卸载;
重新扫描所述总线信息号,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述PCIE设备功能的调用。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行如下方法:待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;若所述宿主机加载所述PCIE设备的第二业务功能时,通知微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;待所述全局动态重构完成后,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (6)
1.一种PCIE设备中FPGA功能动态重构的方法,其特征在于,包括:
待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;
若所述宿主机加载所述PCIE设备的第二业务功能时,通知所述PCIE设备的微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;
待所述全局动态重构完成后,宿主机和PCIE设备均无需重启,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用;
所述与宿主机建立首次链接,具体包括:
由所述FPGA内置的flash芯片加载所述第一FPGA逻辑文件,所述第一FPGA逻辑文件包含PCIE接口IP核;
通过所述PCIE接口IP核扫描RC控制器下的所述PCIE设备,为所述PCIE设备分配总线资源,建立所述首次链接,并记录所述PCIE设备的总线信息;
待所述首次链接完成,通过驱动程序将所述PCIE设备的BAR空间寄存器的完整内容记录至系统全局变量;
所述宿主机使用Windows操作系统或使用Linux操作系统;
当所述宿主机使用Windows操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,调用所述Windows操作系统的API接口获取所述宿主机的全部设备信息;
调用Windows操作系统接口枚举设备信息,通过总线信息号获取PCIE设备句柄;
通过所述PCIE设备句柄实现对所述PCIE设备的停用控制和启用控制,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述第二业务功能的调用;
当所述宿主机使用Linux操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,遍历sysfs文件子系统,通过总线信息号获取PCIE设备文件路径;
通过所述PCIE设备文件路径中的卸载命令对所述PCIE设备进行卸载;
重新扫描所述总线信息号,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述第二业务功能的调用。
2.根据权利要求1所述的PCIE设备中FPGA功能动态重构的方法,其特征在于,所述使用所述第二逻辑目标码对FPGA进行全局动态重构,之前还包括:
通知所述宿主机停止对所述PCIE设备的全部功能调用,并中断与所述PCIE设备的通信。
3.根据权利要求1所述的PCIE设备中FPGA功能动态重构的方法,其特征在于,所述全局动态重构,具体包括:
由所述微处理器配置所述FPGA,使所述FPGA被动加载所述第二逻辑目标码,所述第二逻辑目标码包含所述PCIE接口IP核;
通过所述第二逻辑目标码查找到所述第二FPGA逻辑文件,由所述第二FPGA逻辑文件执行所述全局动态重构。
4.一种PCIE设备中FPGA功能动态重构的系统,其特征在于,包括:
第一处理模块,用于待PCIE设备上电后,加载所述PCIE设备的第一业务功能对应的第一FPGA逻辑文件,与宿主机建立首次链接,所述第一FPGA逻辑文件包含第一逻辑目标码;
重构模块,用于若所述宿主机加载所述PCIE设备的第二业务功能时,通知所述PCIE设备的微处理器选取所述第二业务功能对应的第二FPGA逻辑文件,所述第二FPGA逻辑文件包含第二逻辑目标码,使用所述第二逻辑目标码对FPGA进行全局动态重构;
第二处理模块,用于待所述全局动态重构完成后,宿主机和PCIE设备均无需重启,与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用;
所述第一处理模块中的所述与宿主机建立首次链接,具体包括:
由所述FPGA内置的flash芯片加载所述第一FPGA逻辑文件,所述第一FPGA逻辑文件包含PCIE接口IP核;
通过所述PCIE接口IP核扫描RC控制器下的所述PCIE设备,为所述PCIE设备分配总线资源,建立所述首次链接,并记录所述PCIE设备的总线信息;
待所述首次链接完成,通过驱动程序将所述PCIE设备的BAR空间寄存器的完整内容记录至系统全局变量;
所述宿主机使用Windows操作系统或使用Linux操作系统;
当所述宿主机使用Windows操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,调用所述Windows操作系统的API接口获取所述宿主机的全部设备信息;
调用Windows操作系统接口枚举设备信息,通过总线信息号获取PCIE设备句柄;
通过所述PCIE设备句柄实现对所述PCIE设备的停用控制和启用控制,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述第二业务功能的调用;
当所述宿主机使用Linux操作系统时,所述与所述宿主机建立二次链接,所述宿主机完成对所述第二业务功能的调用,具体包括:
待所述全局动态重构完成后,遍历sysfs文件子系统,通过总线信息号获取PCIE设备文件路径;
通过所述PCIE设备文件路径中的卸载命令对所述PCIE设备进行卸载;
重新扫描所述总线信息号,并通过所述系统全局变量重新加载所述驱动程序,对所述BAR空间寄存器进行重新配置;
待所述PCIE设备重新启用后,所述宿主机完成对所述第二业务功能的调用。
5.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述PCIE设备中FPGA功能动态重构的方法的步骤。
6.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至3任一项所述PCIE设备中FPGA功能动态重构的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078289.8A CN110888834B (zh) | 2019-11-06 | 2019-11-06 | 一种pcie设备中fpga功能动态重构的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911078289.8A CN110888834B (zh) | 2019-11-06 | 2019-11-06 | 一种pcie设备中fpga功能动态重构的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110888834A CN110888834A (zh) | 2020-03-17 |
CN110888834B true CN110888834B (zh) | 2022-05-31 |
Family
ID=69746979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911078289.8A Active CN110888834B (zh) | 2019-11-06 | 2019-11-06 | 一种pcie设备中fpga功能动态重构的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110888834B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858461A (zh) * | 2020-07-10 | 2020-10-30 | 浪潮电子信息产业股份有限公司 | Fpga异构加速平台部分重置、系统、设备及介质 |
CN112131176B (zh) * | 2020-09-29 | 2023-12-12 | 中国船舶集团有限公司第七二四研究所 | 一种基于pcie的fpga快速局部重构方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286738A (zh) * | 2008-05-15 | 2008-10-15 | 华为技术有限公司 | 一种根据设备信息加载逻辑文件的方法、装置和系统 |
CN103064695A (zh) * | 2011-10-21 | 2013-04-24 | 上海湾流仪器技术有限公司 | 现场可编程门阵列的动态加载系统及其加载方法 |
CN106569858A (zh) * | 2016-10-31 | 2017-04-19 | 锐捷网络股份有限公司 | 一种配置文件的更新方法以及电路板 |
US10031993B1 (en) * | 2017-06-12 | 2018-07-24 | Intel Corporation | Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA) |
CN108804232A (zh) * | 2018-06-26 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种支持云端fpga部署的方法、主机服务器及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10282330B2 (en) * | 2016-09-29 | 2019-05-07 | Amazon Technologies, Inc. | Configurable logic platform with multiple reconfigurable regions |
-
2019
- 2019-11-06 CN CN201911078289.8A patent/CN110888834B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101286738A (zh) * | 2008-05-15 | 2008-10-15 | 华为技术有限公司 | 一种根据设备信息加载逻辑文件的方法、装置和系统 |
CN103064695A (zh) * | 2011-10-21 | 2013-04-24 | 上海湾流仪器技术有限公司 | 现场可编程门阵列的动态加载系统及其加载方法 |
CN106569858A (zh) * | 2016-10-31 | 2017-04-19 | 锐捷网络股份有限公司 | 一种配置文件的更新方法以及电路板 |
US10031993B1 (en) * | 2017-06-12 | 2018-07-24 | Intel Corporation | Application store model for dynamic reconfiguration of a field-programmable gate array (FPGA) |
CN108804232A (zh) * | 2018-06-26 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种支持云端fpga部署的方法、主机服务器及系统 |
Non-Patent Citations (2)
Title |
---|
FPGA Dynamic and Partial Reconfiguration:A Survey of Architectures,Methods,and Applications;Kizheppatt Vipin;《ACM Computing Surveys》;20190731;第51卷(第4期);1-39 * |
FPGA动态可重构技术及其应用研究;李昆吉;《中国优秀硕士论文电子期刊.信息科技辑》;20140331;135-290 * |
Also Published As
Publication number | Publication date |
---|---|
CN110888834A (zh) | 2020-03-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10768960B2 (en) | Method for affinity binding of interrupt of virtual network interface card, and computer device | |
US10990540B2 (en) | Memory management method and apparatus | |
US8719639B2 (en) | Virtual machine control program, virtual machine control system, and dump capturing method | |
CN110134446B (zh) | 启动pcie设备扫描的方法 | |
US11360803B2 (en) | Method and apparatus for executing non-maskable interrupt | |
US20140325043A1 (en) | Network Switching Method, Version Upgrade Method, and Terminal Device | |
CN110888834B (zh) | 一种pcie设备中fpga功能动态重构的方法及系统 | |
EP3879875A1 (en) | Resource change method and device, apparatus, and storage medium | |
CN106339458B (zh) | 一种基于弹性分布式数据集的Stage划分方法和终端 | |
US20190377612A1 (en) | VCPU Thread Scheduling Method and Apparatus | |
US9098392B1 (en) | Systems and methods for changing fencing modes in clusters | |
US11321109B2 (en) | Container engine for selecting driver based on container metadata | |
CN110362394B (zh) | 任务处理方法及装置、存储介质、电子装置 | |
CN111045789B (zh) | 一种虚拟机开机方法、装置及电子设备和存储介质 | |
CN110753040B (zh) | 一种请求处理的方法及装置 | |
CN117075983A (zh) | 基于多核异构的实时多任务处理方法、芯片系统和设备 | |
CN112153628A (zh) | 码号资源的激活管理、指令处理、重启管理方法、装置 | |
US20220365822A1 (en) | Data Processing Method and Computer Device | |
EP3697025B1 (en) | Equipment upgrading method and device | |
US20190065527A1 (en) | Information processing device and information processing system | |
US20230032581A1 (en) | Method and Apparatus for Processing Virtual Machine Component | |
CN112912743A (zh) | 算力的控制方法、装置、设备及存储介质 | |
EP2750033A1 (en) | Portable modem communication device and Method to provide connectivity capabilities to a computing device | |
CN114064128B (zh) | 内核重启方法 | |
CN114416148A (zh) | 一种虚拟机管理程序热升级方法、装置及存储介质 |
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 |