CN110083484B - Fpga重加载方法、设备、存储介质及系统 - Google Patents
Fpga重加载方法、设备、存储介质及系统 Download PDFInfo
- Publication number
- CN110083484B CN110083484B CN201810079214.0A CN201810079214A CN110083484B CN 110083484 B CN110083484 B CN 110083484B CN 201810079214 A CN201810079214 A CN 201810079214A CN 110083484 B CN110083484 B CN 110083484B
- Authority
- CN
- China
- Prior art keywords
- fpga module
- port
- network device
- fpga
- reload
- 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
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000015654 memory Effects 0.000 claims description 58
- 238000004891 communication Methods 0.000 claims description 23
- 230000008569 process Effects 0.000 claims description 23
- 230000002411 adverse Effects 0.000 abstract description 10
- 230000000694 effects Effects 0.000 abstract description 10
- 230000001960 triggered effect Effects 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 14
- 238000005516 engineering process Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 238000004590 computer program Methods 0.000 description 7
- 230000005291 magnetic effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000005236 sound signal Effects 0.000 description 4
- QFTYEBTUFIFTHD-UHFFFAOYSA-N 1-[6,7-dimethoxy-1-[1-(6-methoxynaphthalen-2-yl)ethyl]-3,4-dihydro-1H-isoquinolin-2-yl]-2-piperidin-1-ylethanone Chemical compound C1=CC2=CC(OC)=CC=C2C=C1C(C)C(C1=CC(OC)=C(OC)C=C1CC1)N1C(=O)CN1CCCCC1 QFTYEBTUFIFTHD-UHFFFAOYSA-N 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1438—Restarting or rejuvenating
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请实施例提供一种FPGA重加载方法、设备、存储介质及系统。在本申请实施例中,当部署于网络设备中的FPGA模块需要重加载时,通过配置重加载指令触发FPGA模块在与网络设备断开连接期间执行重加载操作,并通过关闭网络设备上与FPGA模块连接的端口,将网络设备与该FPGA模块之间的连接断开,使得FPGA模块可以在与网络设备断开连接期间完成重加载,此间,网络设备不会感知到FPGA模块的重加载操作,因此不需要因为FPGA重加载而重启网络设备,克服重启给网络设备带来的不良影响。
Description
技术领域
本申请涉及电子技术领域,尤其涉及一种FPGA重加载方法、设备、存储介质及系统。
背景技术
现场可编程门阵列(FieldProgrammable Gate Array,FPGA)是一种可编程器件,可以高速外设部件互连(Peripheral Component Interconnect Express,PCIE)标卡的形态部署在服务器上,实现各种业务的硬件加速。
在FPGA板卡使用过程中,有时需要对FPGA板卡进行重加载。例如,FPGA板卡的配置文件升级时,或者FPGA板卡出现严重功能错误而且复位无法恢复时,都需要对FPGA板卡进行重加载,以便于FPGA板卡能够按照正确的逻辑执行操作。
在现有技术中,重加载FPGA板卡需要重启服务器,这会给服务器带来一些不良影响,例如丢失数据,影响服务器的工作效率和使用寿命等。
发明内容
本申请的多个方面提供一种FPGA重加载方法、设备、存储介质及系统,用以在不重启服务器的情况完成FPGA重加载操作,克服重启服务器带来的不良影响。
本申请实施例提供一种FPGA重加载方法,包括:
向网络设备中的第一FPGA模块配置重加载指令,以触发所述第一FPGA模块在与所述网络设备断开连接期间执行重加载操作;
关闭所述网络设备上与所述第一FPGA模块连接的第一端口,以断开所述网络设备与所述第一FPGA模块之间的连接;以及
在所述第一FPGA模块完成重加载后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的连接。
本申请实施例还提供一种FPGA重加载方法,包括:
接收网络设备配置的重加载指令,所述重加载指令指示第一FPGA模块在与所述网络设备之间断开连接期间执行重加载操作;
确定所述第一FPGA模块与所述网络设备之间的连接断开,并对所述第一FPGA模块进行重加载。
本申请实施例还提供一种网络设备,包括:存储器、处理器、至少一个槽位以及与所述至少一个槽位对应的至少一个端口;其中,所述至少一个槽位中的第一槽位承载有第一FPGA模块,所述第一FPGA模块通过所述第一槽位对应的第一端口与所述处理器连接;
所述存储器包括:程序存储空间,所述程序存储空间存储有所述第一FPGA模块的驱动程序;所述处理器,与所述存储器耦合,用于执行所述驱动程序,以实现:
向所述第一FPGA模块配置重加载指令,以触发所述第一FPGA模块在与所述网络设备断开连接期间执行重加载操作;关闭所述第一端口,以断开所述网络设备与所述第一FPGA模块之间的连接;以及在所述第一FPGA模块完成重加载后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的连接。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有FPGA模块的驱动程序,所述驱动程序被计算机执行时可实现前述FPGA重加载方法中的步骤。
本申请实施例还提供一种FPGA模块,包括:FPGA芯片、端口以及片外存储器;所述FPGA芯片通过所述端口与网络设备连接,并与所述片外存储器连接;
所述FPGA芯片,用于接收网络设备发送的重加载指令,并根据所述重加载指令的指示在确定与所述网络设备之间断开连接期间执行重加载操作。
本申请实施例还提供一种通信系统,包括:前述实施例提供的网络设备以及至少一个前述实施例提供的FPGA模块;所述至少一个FPGA模块插接于所述网络设备的槽位中。
在本申请实施例中,当部署于网络设备中的FPGA模块需要重加载时,通过向FPGA模块配置重加载指令触发FPGA模块在与网络设备断开连接期间执行重加载操作;接着关闭网络设备上与该FPGA模块连接的端口,断开网络设备与该FPGA模块之间的连接,为FPGA模块执行重加载提供时间,以及在FPGA模块完成重加载后通过重启相应端口重新建立网络设备与FPGA模块之间的连接。在整个过程中,FPGA模块在与网络设备断开连接期间执行重加载操作,网络设备不会感知到FPGA模块的重加载操作,因此不需要因为FPGA重加载而重启网络设备,克服了重启给网络设备带来的不良影响。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的一种通信系统的架构示意图;
图2为本申请另一示例性实施例提供的另一种通信系统的架构示意图;
图3a为本申请又一示例性实施例提供的一种FPGA重加载方法的流程示意图;
图3b为本申请又一示例性实施例提供的另一种FPGA重加载方法的流程示意图;
图3c为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图;
图4a为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图;
图4b为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图;
图5a为本申请又一示例性实施例提供的FPGA重加载装置的结构示意图;
图5b为本申请又一示例性实施例提供的网络设备的结构示意图;
图6为本申请又一示例性实施例提供的FPGA模块的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对现有技术中FPGA重加载需要重启服务器的技术问题,本申请实施例提供一种解决方案,主要原理是:当部署于网络设备中的FPGA模块需要重加载时,通过配置重加载指令触发FPGA模块在与网络设备断开连接期间执行重加载操作,并通过关闭网络设备上与FPGA模块连接的端口,将网络设备与该FPGA模块之间的连接断开,使得FPGA模块可以在与网络设备断开连接期间完成重加载,此间,网络设备不会感知到FPGA模块的重加载操作,因此不需要因为FPGA重加载而重启网络设备,克服重启给网络设备带来的不良影响。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的一种通信系统的架构示意图。如图1所示,该通信系统10包括:网络设备11以及部署于网络设备11上的FPGA模块12。FPGA模块12具有一定的物理形态。例如,在一些实施方式中,FPGA模块12可以实现为卡片结构,例如FPGA板卡。在其它一些实施方式中,FPGA模块12也可以实现为非卡片结构。
在实现形式上,网络设备11可以是支持FPGA模块的服务器,例如常规服务器、云服务器、云主机、虚拟中心等。服务器的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。在其他实施方式中,网络设备11也可以是支持FPGA模块的智能手机、平板电脑、个人电脑、穿戴设备等终端设备。
如图1所示,网络设备11包括至少一个槽位,主要用于承载网络设备11所需的各种功能模块;FPGA模块12插接于网络设备11的槽位中。用于插接FPGA模块12的槽位的结构与FPGA模块12的物理形态相匹配。例如,如果FPGA模块12实现为板卡形态,则用于插接FPGA模块12的槽位需要具有能够承载该板卡的结构,具有这种结构形态的槽位可简称为板卡槽位。其中,每个槽位在同一时间可承载一个FPGA模块12。通信系统10所能支持的FPGA模块12的数量受限于网络设备11上槽位的数量。一般来说,通信系统10所能支持FPGA模块的最大数量不超过网络设备11上槽位的数量。
如图1所示,网络设备11还包括CPU 13、存储器14以及与至少一个槽位15对应的至少一个端口16。其中,CPU 13和存储器14的数量取决于网络设备11的配置和类型。FPGA模块12通过其所在槽位15对应的端口16与网络设备11的CPU 13连接。CPU 13主要负责网络设备11中的运算逻辑和控制逻辑。存储器14内存储有操作系统(Operating System,OS),OS包括FPGA模块的驱动程序。除此之外,存储器14内还存储有一个或多个应用程序,也可以存储有程序数据等。存储器14可以包括易失性的,例如RAM,也可以包括非易失性的,例如只读存储器(Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型的。
可选地,根据网络设备11的配置、类型和实现形式的不同,网络设备11还可以包括一些基本配置17,例如网卡芯片、IO总线、音视频组件等。可选地,网络设备11还可以包括一些外围设备18,例如键盘、鼠标、输入笔、打印机等。这些外围设备在本领域中是总所周知的,在此不做赘述。
在通信系统10中,FPGA模块12作为硬件加速器,可实现网络设备11中各业务的硬件加速。在FPGA模块12使用过程中,有时需要对FPGA模块12进行重加载。例如,FPGA模块12的配置文件升级时,或者FPGA模块12出现严重功能错误而且复位无法恢复时,都需要对FPGA模块12进行重加载,以便于FPGA模块12能够按照正确的逻辑执行操作。
其中,对部署于网络设备11中的各FPGA模块12来说,其重加载过程均相同,为便于描述和区分,本实施例以第一FPGA模块为例,说明FPGA模块的重加载过程。
在通信系统10中,当需要重加载第一FPGA模块时,可由网络设备11的CPU与第一FPGA模块相配合完成重加载第一FPGA模块的任务。为简化描述,后续均以网络设备11为主体进行描述,本领域技术人员可以识别后续某些描述中的网络设备11实际上是网络设备11的CPU。
当需要重加载第一FPGA模块时,网络设备11基于第一FPGA模块与网络设备11之间的连接,向第一FPGA模块配置重加载指令。该重加载指令主要用于触发第一FPGA模块在其与网络设备11断开连接期间执行重加载操作,而不是在其与网络设备11保持连接的情况下立即执行重加载操作。
为了便于第一FPGA模块能够在其与网络设备11断开连接期间执行重加载操作,可通过关闭网络设备11上与第一FPGA模块连接的端口来断开网络设备11与第一FPGA模块之间的连接。为便于区分和描述,将网络设备11上与第一FPGA模块连接的端口称为第一端口。对第一FPGA模块来说,可采用任何方式确定其与网络设备11之间的连接断开,并在确定其与网络设备11之间的连接断开后执行重加载操作。当第一FPGA模块完成重加载后,网络设备11可以重新开启第一端口,以重新建立网络设备11与第一FPGA模块之间的连接,使得第一FPGA能够继续以新的逻辑执行操作。
在上述过程中,第一FPGA模块执行重加载操作时,需要先将第一FPGA模块中原有的配置文件擦除,然后再往第一FPGA模块中烧录新的配置文件。配置文件中记载有第一FPGA模块的执行逻辑。在第一FPGA模块与网络设备11正常连接的情况下,将第一FPGA模块中原有的配置文件擦除会造成第一FPGA模块突然断开与网络设备11的连接,这种突然断开行为会产生高等级中断,这种高等级中断会导致网络设备11重启。而在本通信系统10中,由于在第一FPGA模块执行重加载操作之前,已经断开了网络设备11与第一FPGA模块之间的连接,所以网络设备11不会感知第一FPGA模块的重加载操作,因此第一FPGA模块的重加载不会引起网络设备11重启,可以克服重启网络设备11所带来的不良影响。
在重加载第一FPGA模块的过程中,对第一FPGA模块来说,需要识别其与网络设备11之间的连接是否断开,以便于确定是否执行重加载操作。该识别操作可由多种实施方式,下面给出几种示例性实施方式:
方式1:第一FPGA模块设有端口,该端口用于与网络设备11上的端口相连接。一般来说,对于第一FPGA模块上的端口来说,其电信号值(例如电压值或电流值),在第一FPGA模块与网络设备11连接的情况下和第一FPGA模块未与网络设备11连接的情况下是不同的。基于此,在方式1中,第一FPGA模块可检测其端口上的电信号值的变化情况,来确定第一FPGA模块与网络设备11之间的连接是否断开。假设在第一FPGA模块与网络设备11连接的情况下,第一FPGA模块上的端口的电信号值为高电平,在第一FPGA模块未与网络设备11连接的情况下,第一FPGA模块上的端口的电信号值为低电平,基于此,第一FPGA模块可在检测其端口上的电信号值由高电平变为低电平时,确定第一FPGA模块与网络设备11之间的连接断开,并执行重加载操作。
方式2:在方式2中,可以结合网络设备11的配置、类型以及实现形式等因素,预估网络设备11一侧执行相应操作以将网络设备11与第一FPGA模块之间的连接成功断开所需的最短时长,记为T1,并依据时长T1在第一FPGA模块内配置一时长Tb。其中,Tb≥T1。基于此,第一FPGA模块在接收到重加载指令时,可以对时长Tb进行计时,以等待网络设备11一侧完成相应操作从而成功断开网络设备11与第一FPGA模块之间的连接,并在计时结束后,执行重加载操作。
在重加载第一FPGA模块的过程中,网络设备11需要识别第一FPGA模块是否完成重加载操作,以便于及时重新建立网络设备11与第一FPGA模块之间的连接。该识别操作可由多种实施方式,下面给出几种示例性实施方式:
方式A:在方式A中,第一FPGA模块在完成重加载操作之后,可以发出可被网络设备11感知的提示信息,例如可以发出特定的提示音,或者可以通过第一FPGA模块上的发光器件(例如发光二极管)发出特定的光信号等。基于此,网络设备11可以监测第一FPGA模块发出的提示信息,当监测到第一FPGA模块发出的提示信息后,确定第一FPGA模块完成重加载操作,进而可以重新开启网络设备11上与第一FPGA模块连接的第一端口,以便于重新建立网络设备11与第一FPGA模块之间的连接。
方式B:在方式B中,可结合第一FPGA模块的实现结构、性能等因素,预估第一FPGA模块完成重加载所需的最短时长,记为T2,并依据时长T2在网络设备11内配置一时长Ta。其中,Ta≥T2。基于此,网络设备11可以自断开网络设备11与第一FPGA模块之间的连接开始计时时长Ta,以等待第一FPGA模块在时长Ta的计时过程中完成重加载操作;进而在计时结束后,重新开启网络设备11上与第一FPGA模块连接的第一端口,以便于重新建立网络设备11与第一FPGA模块之间的连接。
在一些应用场景中,可以从存储器中为每个端口分配一些存储空间,用于存储与端口及FPGA模块相关的一些信息。可选地,端口的存储空间包括配置空间,用于存储连接于端口上的FPGA模块的设备信息,以便于CPU基于配置空间中的设备信息通过该端口与对应的FPGA模块进行通信。其中,FPGA模块的设备信息可以包括FPGA模块的标识,例如设备ID,以及与网络设备11进行通信所需的一些信息,例如所支持的最大负载数据包长度(简称为最大包长)、格式等。
在一些情况下,第一FPGA模块重加载之后,新的配置文件不会改变第一FPGA模块的设备信息。而在另一些情况下,第一FPGA模块重加载之后,新的配置文件会改变第一FPGA模块的设备信息。例如,在与网络设备11重新协商第一FPGA模块所支持的最大包长的情况下,需要重加载第一FPGA模块,并且在第一FPGA模块重加载之后,第一FPGA模块所支持的最大包长也会发生变化。如果第一端口的配置空间中的设备信息未能及时更新,可能导致网络设备11无法与第一FPGA模块进行通信。
为解决在第一FPGA模块重加载之后网络设备11无法与第一FPGA模块进行通信的问题,网络设备11除了关闭网络设备11上与第一FPGA模块连接的第一端口之外,还可以在第一FPGA模块完成重加载之前将第一FPGA模块的设备信息从第一端口的配置空间中移除,以便于在第一FPGA模块完成重加载之后重新配置最新版本的设备信息。相应地,在第一FPGA模块完成重加载之后,除了重新开启第一端口之外,还将第一FPGA模块的设备信息重新配置到第一端口的配置空间中。这样可以保证第一端口的配置空间中存储的是第一FPGA模块的最新版本的设备信息,使得网络设备11可基于第一端口的配置空间中的设备信息成功地与第一FPGA模块进行通信。
值得说明的是,在实际实施时,并不限定上述关闭第一端口的操作与上述移除第一FPGA模块的设备信息的操作之间的先后顺序。相应地,在实际实施时,也不限定上述重新开启第一端口的操作与上述重配置第一FPGA模块的设备信息的操作之间的先后顺序。
可选地,一种将第一FPGA模块的设备信息重新配置到第一端口的配置空间中的实施方式包括:可以在重新开启第一端口后,通过扫描第一端口来确定第一FPGA模块已与第一端口连接,并针对第一FPGA模块进行初始化,以将第一FPGA模块的设备信息配置到第一端口的配置空间中。
可选地,在将第一FPGA模块的设备信息从第一端口的配置空间中移除之前,可以先将第一FPGA模块的设备信息从第一端口的配置空间中备份至指定空间中。基于此,另一种将第一FPGA模块的设备信息重新配置到第一端口的配置空间中的实施方式包括:从该指定空间中获取第一FPGA模块的设备信息,并重新配置到第一端口的配置空间中。其中,指定空间可以是网络设备11的存储器中的部分空间。
在一些示例性实施例中,网络设备11支持一些命令字,例如用于端口的命令字setpci、用于端口的配置空间的命令字echo 1等。这些命令字配置不同的指令标记,可以对网络设备11中的端口进行不同的操作或控制。例如,0x50是关闭指令标记,表示关闭端口;0x40是开启指令标记,表示开启端口;remove是移除指令标记,表示移除配置空间中的设备信息。
基于上述,网络设备11在关闭与第一FPGA模块连接的第一端口时,可以根据第一端口的端口号和关闭指令标记,生成关闭指令,例如setpci-s 0000:00:01.0 0xa0.b=0x50,0000:00:01.0是第一端口的端口号;继而通过运行该关闭指令关闭第一端口,以断开网络设备11与第一FPGA模块之间的连接。相应地,网络设备11在重新开启第一端口时,可以根据第一端口的端口号和开启指令标记,生成开启指令,例如setpci-s 0000:00:01.00xa0.b=0x40;通过运行该开启指令开启第一端口,以重新建立网络设备11与第一FPGA模块之间的连接。
另外,网络设备11在将第一FPGA模块的设备信息从第一端口的配置空间中移除时,可以根据第一端口的端口号和移除指令标记,生成移除指令,例如echo 1>/sys/bus/pci/devices/0000:01:00.0/remove;通过运行该移除指令将第一FPGA模块的设备信息从第一端口的配置空间中移除。
在重加载第一FPGA模块的过程中,网络设备11需确定需要进行重加载的第一FPGA模块。该确定操作可采用多种实施方式,下面给出几种示例性实施方式:
第一种方式:在该方式中,可以预先设定重加载周期或重加载时间点,并重加载周期或重加载时间点配置到FPGA模块上,例如可以配置到FPGA模块的片内存储器或片外存储器内。当重加载周期到达或重加载时间点到达时,FPGA模块可以确定自身需要进行重加载,于是向网络设备11发送重加载请求。对网络设备11来说,当接收到FPGA模块发送的重加载请求时,可确定发送重加载请求的FPGA模块即为需要进行重加载的第一FPGA模块。
第二种方式:在该方式中,可以预先设定需要重加载的FPGA模块以及该FPGA模块对应的重加载周期或重加载时间点,并将该FPGA模块的标识和对应的重加载周期或重加载时间点配置到网络设备11内。当重加载周期到达或重加载时间点到达时,网络设备11可以根据预先配置的FPGA模块的标识确定需要进行重加载的FPGA模块,即第一FPGA模块。
第三种方式:在该方式中,网络设备11可以面向用户提供人机交互界面。用户通过该人机交互界面可以按需向网络设备11发出重加载配置命令,并在重加载配置命令中包含需要进行重加载的第一FPGA模块的标识。基于此,网络设备11可响应于重加载配置命令,基于重加载配置命令中第一FPGA模块的标识,确定第一FPGA模块继而向第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备11断开连接期间执行重加载操作。本申请实施例并不限定人机交互界面的实现形式,例如可以是web页面、命令行界面等。
根据网络设备的配置、类型以及实现形式的不同,网络设备与FPGA模块之间进行互联的端口可以采用不同类型的端口。例如,可以采用通用异步串行口(UniversalAsynchronous Receiver/Transmitter,UART)、外设部件互连(Peripheral ComponentInterconnect,PCI)端口以及PCIE端口。
以网络设备与FPGA模块之间通过PCIE端口进行互联为例,一种详细的通信系统20的架构如图2所示。在图2所示架构中,FPGA模块可以实现为FPGA板卡。如图2所示,在网络设备21内部,CPU23与根组件(Root Complex)29连接,根组件29用于CPU 23与存储器24、基本设备27以及FPGA板卡22之间的连接。如图2所示,根组件29包括多个PCIE端口26,图2中的小方块表示PCIE端口26。FPGA板卡22插接于板卡槽位25中,并通过PCIE端口26与网络设备21的CPU 23连接。如图2所示,网络设备21还可以包括外围设备28,例如键盘、鼠标、输入笔、打印机等。这些外围设备在本领域中是总所周知的,在此不做赘述。
在图2所示系统架构中,以重加载第一FPGA板卡为例,重加载FPGA板卡的过程主要包括:
当需要重加载第一FPGA板卡时,网络设备21基于第一FPGA板卡与网络设备21之间的连接,向第一FPGA板卡配置重加载指令。该重加载指令主要用于触发第一FPGA板卡在其与网络设备21断开连接期间执行重加载操作。
接着,关闭网络设备21上与第一FPGA板卡连接的PCIE端口来断开网络设备21与第一FPGA板卡之间的连接。为便于区分和描述,将网络设备11上与第一FPGA板卡连接的PCIE端口称为第一PCIE端口。
对第一FPGA板卡来说,可采用任何方式确定其与网络设备21之间的连接断开,并在确定其与网络设备21之间的连接断开后执行重加载操作。第一FPGA板卡执行重加载操作时,可先将第一FPGA板卡中原有的配置文件擦除,然后再往第一FPGA板卡中烧录新的配置文件。
当第一FPGA板卡完成重加载后,网络设备21可以重新开启第一PCIE端口,以重新建立网络设备21与第一FPGA板卡之间的连接,使得第一FPGA能够继续以新的逻辑执行操作。
关于重加载第一FPGA板卡的过程中的其它相关描述可参见其它实施例,在此不再赘述。
图3a为本申请又一示例性实施例提供的一种FPGA重加载方法的流程示意图。该方法主要从网络设备的角度进行描述,如图3a所示,该方法包括:
31a、向网络设备中的第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
32a、关闭网络设备上与第一FPGA模块连接的第一端口,以断开网络设备与第一FPGA模块之间的连接。
33a、在第一FPGA模块完成重加载后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在本实施例中,网络设备支持FPGA模块,其可以是支持FPGA模块的服务器,例如常规服务器、云服务器、云主机、虚拟中心等。在其他实施方式中,网络设备也可以是支持FPGA模块的智能手机、平板电脑、个人电脑、穿戴设备等终端设备。
FPGA模块作为硬件加速器,可实现网络设备中各业务的硬件加速。在FPGA模块使用过程中,有时需要对FPGA模块进行重加载。对部署于网络设备中的各FPGA模块来说,其重加载过程均相同,为便于描述和区分,本实施例以第一FPGA模块为例,说明FPGA模块的重加载过程。
当需要重加载第一FPGA模块时,基于第一FPGA模块与网络设备之间的连接,向第一FPGA模块配置重加载指令。该重加载指令主要用于触发第一FPGA模块在其与网络设备断开连接期间执行重加载操作,而不是在其与网络设备保持连接的情况下立即执行重加载操作。
为了便于第一FPGA模块能够在其与网络设备断开连接期间执行重加载操作,可通过关闭网络设备上与第一FPGA模块连接的端口来断开网络设备与第一FPGA模块之间的连接。为便于区分和描述,将网络设备上与第一FPGA模块连接的端口称为第一端口。对第一FPGA模块来说,可采用任何方式确定其与网络设备之间的连接断开,并在确定其与网络设备之间的连接断开后执行重加载操作。当第一FPGA模块完成重加载后,网络设备可以重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接,使得第一FPGA能够继续以新的逻辑执行操作。
在上述过程中,第一FPGA模块执行重加载操作时,需要先将第一FPGA模块中原有的配置文件擦除,然后再往第一FPGA模块中烧录新的配置文件。配置文件中记载有第一FPGA模块的执行逻辑。在第一FPGA模块与网络设备正常连接的情况下,将第一FPGA模块中原有的配置文件擦除会造成第一FPGA模块突然断开与网络设备的连接,这种突然断开行为会产生高等级中断,这种高等级中断会导致网络设备重启。而在实施例中,由于在第一FPGA模块执行重加载操作之前,已经断开了网络设备与第一FPGA模块之间的连接,所以网络设备不会感知第一FPGA模块的重加载操作,因此第一FPGA模块的重加载不会引起网络设备重启,可以克服重启网络设备所带来的不良影响。
图3b为本申请又一示例性实施例提供的另一种FPGA重加载方法的流程示意图。该方法主要从网络设备的角度进行描述,如图3b所示,该方法包括:
31b、向网络设备中的第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
32b、关闭网络设备上与第一FPGA模块连接的第一端口,以断开网络设备与第一FPGA模块之间的连接。
33b、自断开网络设备与第一FPGA模块之间的连接开始计时时长Ta;其中,第一FPGA模块在时长Ta的计时过程中执行重加载操作。
34b、在计时结束后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
关于步骤31b和32b可参见图3a所示实施例中的描述,在此不再赘述。
在本实施例中,可结合第一FPGA模块的实现结构、性能等因素,预估第一FPGA模块完成重加载所需的最短时长,记为T2,并依据时长T2在网络设备内配置一时长Ta。其中,Ta≥T2。基于此,可以自断开网络设备与第一FPGA模块之间的连接开始计时时长Ta,以等待第一FPGA模块在时长Ta的计时过程中完成重加载操作;进而在计时结束后,重新开启网络设备上与第一FPGA模块连接的第一端口,以便于重新建立网络设备与第一FPGA模块之间的连接。
在一些示例性实施例中,在第一FPGA模块完成重加载之前,将第一FPGA模块的设备信息从第一端口的配置空间中移除;以及在第一FPGA模块完成重加载之后,将第一FPGA模块的设备信息重新配置到第一端口的配置空间中。这样可以保证第一端口的配置空间中存储的是第一FPGA模块的最新版本的设备信息,使得网络设备可基于第一端口的配置空间中的设备信息成功地与第一FPGA模块进行通信。
可选地,一种将第一FPGA模块的设备信息重新配置到第一端口的配置空间中的方式包括:在重新开启第一端口后,通过扫描第一端口确定第一FPGA模块已与第一端口连接;针对第一FPGA模块进行初始化,以将第一FPGA模块的设备信息配置到第一端口的配置空间中。
除此之外,也可以采用其他方式将第一FPGA模块的设备信息配置到第一端口的配置空间中,如图3c所示实施例提供的方式。
图3c为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图。该方法主要从网络设备的角度进行描述,如图3c所示,该方法包括:
31c、向网络设备中的第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
32c、将第一FPGA模块的设备信息从第一端口的配置空间中备份至指定空间中。
33c、将第一FPGA模块的设备信息从第一端口的配置空间中移除。
34c、关闭网络设备上与第一FPGA模块连接的第一端口,以断开网络设备与第一FPGA模块之间的连接。
35c、自断开网络设备与第一FPGA模块之间的连接开始计时时长Ta;其中,第一FPGA模块在时长Ta的计时过程中执行重加载操作。
36c、在计时结束后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
37c、从指定空间中获取第一FPGA模块的设备信息,并重新配置到第一端口的配置空间中。
关于步骤31c、34c-36c可参见图3b所示实施例中的描述,在此不再赘述。
在本实施例中,在将第一FPGA模块的设备信息从第一端口的配置空间中移除之前,可以先将第一FPGA模块的设备信息从第一端口的配置空间中备份至指定空间中。在第一FPGA模块完成重加载之后,可以从该指定空间中获取第一FPGA模块的设备信息,并重新配置到第一端口的配置空间中。其中,指定空间可以是网络设备的存储器中的部分空间。这样可以保证第一端口的配置空间中存储的是第一FPGA模块的最新版本的设备信息,使得网络设备可基于第一端口的配置空间中的设备信息成功地与第一FPGA模块进行通信。
在一些示例性实施例中,向网络设备中的第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作,包括:响应于重加载配置命令,重加载配置命令包含第一FPGA模块的标识;基于第一FPGA模块的标识,向第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
图4a为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图。该方法主要从FPGA模块的角度进行描述,如图4a所示,该方法包括:
41a、接收网络设备配置的重加载指令,该重加载指令指示第一FPGA模块在与网络设备之间断开连接期间执行重加载操作。
41b、确定第一FPGA模块与网络设备之间的连接断开,并对第一FPGA模块进行重加载。
在本实施例中,第一FPGA部署于网络设备上,并且需要进行重加载。第一FPGA模块可接收网络设备配置的重加载指令,据此获知需要在其与网络设备断开连接期间执行重加载操作,而不是在其与网络设备保持连接的情况下立即执行重加载操作。于是,确定与网络设备之间的连接断开,并对第一FPGA模块进行重加载。由于第一FPGA模块在其与网络设备断开连接期间执行重加载操作,因此不会引起网络设备重启,可以克服重启网络设备所带来的不良影响。
图4b为本申请又一示例性实施例提供的又一种FPGA重加载方法的流程示意图。该方法主要从FPGA模块的角度进行描述,如图4b所示,该方法包括:
41b、接收网络设备配置的重加载指令,该重加载指令指示第一FPGA模块在与网络设备之间断开连接期间执行重加载操作。
42b、自接收到重加载指令开始计时时长Tb,网络设备与第一FPGA模块之间的连接在时长Tb的计时过程中被断开。
43b、在计时结束后,确定第一FPGA模块与网络设备之间的连接断开,并对第一FPGA模块进行重加载。
在本实施例中,可以结合网络设备的配置、类型以及实现形式等因素,预估网络设备一侧执行相应操作以将网络设备与第一FPGA模块之间的连接成功断开所需的最短时长,记为T1,并依据时长T1在第一FPGA模块内配置一时长Tb。其中,Tb≥T1。基于此,第一FPGA模块在接收到重加载指令时,可以对时长Tb进行计时,以等待网络设备一侧完成相应操作从而成功断开网络设备与第一FPGA模块之间的连接,并在计时结束后,执行重加载操作。
值得说明的是,第一FPGA模块在其与网络设备断开连接期间执行重加载操作可以采用以下任一方式:
(1)如果第一FPGA模块的片外闪存(flash)中存在新版本的配置文件,则可以从flash中读取新版本的配置文件并自动烧录到第一FPGA模块的FPGA芯片内。
(2)如果第一FPGA模块的片外flash中不存在新版本的配置文件,则可以使用JTAG将新版本的配置文件烧录到flash,再从flash中读取新版本的配置文件并自动烧录到第一FPGA模块的FPGA芯片内。
(3)手动使用JTAG直接将新版本的配置文件烧录到第一FPGA模块的FPGA芯片内。
(4)对于第一FPGA模块有外接电源的情况,可以对第一FPGA模块进行下电上电操作,从而触发第一FPGA模块从flash中读取新版本的配置文件并自动烧录到第一FPGA模块的FPGA芯片内。
在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如31a、32a等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图5a为本申请又一示例性实施例提供的FPGA重加载装置的结构示意图。如图5a所示,该装置包括:配置模块51、关闭模块52以及开启模块53。
配置模块51,用于向网络设备中的第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
关闭模块52,用于关闭网络设备上与第一FPGA模块连接的第一端口,以断开网络设备与第一FPGA模块之间的连接。
开启模块53,用于在第一FPGA模块完成重加载后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,开启模块53具体用于:自断开网络设备与第一FPGA模块之间的连接开始计时时长Ta;其中,第一FPGA模块在时长Ta的计时过程中执行重加载操作;在计时结束后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,配置模块51还用于:在第一FPGA模块完成重加载之前,将第一FPGA模块的设备信息从第一端口的配置空间中移除,以及在第一FPGA模块完成重加载之后,将第一FPGA模块的设备信息重新配置到第一端口的配置空间中。
进一步,配置模块51在将第一FPGA模块的设备信息重新配置到第一端口的配置空间中时,具体用于:在重新开启第一端口后,通过扫描第一端口确定第一FPGA模块已与第一端口连接;针对第一FPGA模块进行初始化,以将第一FPGA模块的设备信息配置到第一端口的配置空间中。
可选地,配置模块51还用于:在将第一FPGA模块的设备信息从第一端口的配置空间中移除之前,将第一FPGA模块的设备信息从第一端口的配置空间中备份至指定空间中。基于此,配置模块51在将第一FPGA模块的设备信息重新配置到第一端口的配置空间中时,具体用于:从指定空间中获取第一FPGA模块的设备信息,并重新配置到第一端口的配置空间中。
在一可选实施方式中,关闭模块52具体用于:根据第一端口的端口号和关闭指令标记,生成关闭指令;通过运行关闭指令关闭第一端口,以断开网络设备与第一FPGA模块之间的连接;
在一可选实施方式中,开启模块53具体用于:根据第一端口的端口号和开启指令标记,生成开启指令;通过运行开启指令开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,配置模块51在向网络设备中的第一FPGA模块配置重加载指令时,具体用于:响应于重加载配置命令,重加载配置命令包含第一FPGA模块的标识;基于第一FPGA模块的标识,向第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
以上描述了FPGA重加载装置的内部功能和结构,如图5b所示,实际中,该FPGA重加载装置可实现为网络设备,包括:存储器501、处理器502至少一个槽位503以及与至少一个槽位503对应的至少一个端口504。其中,至少一个槽位503中的第一槽位承载有第一FPGA模块,第一FPGA模块通过第一槽位对应的第一端口与处理器502连接。
存储器501包括程序存储空间,程序存储空间存储有第一FPGA模块的驱动程序。处理器502,与存储器501耦合,用于执行驱动程序,以实现:
向第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作;关闭第一端口,以断开网络设备与第一FPGA模块之间的连接;以及在第一FPGA模块完成重加载后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,处理器502在重新开启第一端口时,具体用于:自断开网络设备与第一FPGA模块之间的连接开始计时时长Ta;其中,第一FPGA模块在时长Ta的计时过程中执行重加载操作;在计时结束后,重新开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,存储器501还包括:各端口的配置空间。其中,第一端口的配置空间用于存储第一FPGA模块的设备信息。基于此,处理器502还用于:在第一FPGA模块完成重加载之前,将第一FPGA模块的设备信息从第一端口的配置空间中移除,以及在第一FPGA模块完成重加载之后,将第一FPGA模块的设备信息重新配置到第一端口的配置空间中。
进一步,处理器502在将第一FPGA模块的设备信息重新配置到第一端口的配置空间中时,具体用于:在重新开启第一端口后,通过扫描第一端口确定第一FPGA模块已与第一端口连接;针对第一FPGA模块进行初始化,以将第一FPGA模块的设备信息配置到第一端口的配置空间中。
可选地,处理器502还用于:在将第一FPGA模块的设备信息从第一端口的配置空间中移除之前,将第一FPGA模块的设备信息从第一端口的配置空间中备份至指定空间中。基于此,处理器502在将第一FPGA模块的设备信息重新配置到第一端口的配置空间中时,具体用于:从指定空间中获取第一FPGA模块的设备信息,并重新配置到第一端口的配置空间中。
在一可选实施方式中,处理器502在关闭第一端口时,具体用于:根据第一端口的端口号和关闭指令标记,生成关闭指令;通过运行关闭指令关闭第一端口,以断开网络设备与第一FPGA模块之间的连接。相应地,处理器502在重新开启第一端口时,具体用于:根据第一端口的端口号和开启指令标记,生成开启指令;通过运行开启指令开启第一端口,以重新建立网络设备与第一FPGA模块之间的连接。
在一可选实施方式中,处理器502在向网络设备中的第一FPGA模块配置重加载指令时,具体用于:响应于重加载配置命令,重加载配置命令包含第一FPGA模块的标识;基于第一FPGA模块的标识,向第一FPGA模块配置重加载指令,以触发第一FPGA模块在与网络设备断开连接期间执行重加载操作。
进一步,如图5b所示,该网络设备还包括:通信组件505、显示器506、电源组件507、音频组件508等其它组件。图5b中仅示意性给出部分组件,并不意味着网络设备只包括图5b所示组件。
其中,存储器还可被配置为存储其它各种数据以支持在所属设备上的操作。这些数据的示例包括用于在存储器所属设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
其中,通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
其中,显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
其中,电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
其中,音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本实施例的网络设备,通过配置重加载指令触发FPGA模块在与网络设备断开连接期间执行重加载操作,并通过关闭网络设备上与FPGA模块连接的端口,将网络设备与该FPGA模块之间的连接断开,使得FPGA模块可以在与网络设备断开连接期间完成重加载,此间,网络设备不会感知到FPGA模块的重加载操作,因此不需要因为FPGA重加载而重启网络设备,克服重启给网络设备带来的不良影响。
相应地,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有FPGA模块的驱动程序,所述驱动程序被计算机执行时可实现上述FPGA重加载方法实施例中与网络设备相关的步骤或操作。
图6为本申请又一示例性实施例提供的FPGA模块的结构示意图。如图6所示,该FPGA模块包括:FPGA芯片601、端口602以及片外存储器603;所述FPGA芯片601通过所述端口602与网络设备连接,并与所述片外存储器603连接。可选地,如图6所示,片外存储器603包括但不限于:DDR、flash等。
FPGA芯片601,用于接收网络设备发送的重加载指令,并根据所述重加载指令的指示在确定与所述网络设备之间断开连接期间执行重加载操作。除此之外,FPGA芯片601还会执行其他业务逻辑,以实现网络设备的各种业务的硬件加速。
在一可选实施方式中,FPGA芯片601具体用于:自接收到所述重加载指令开始计时时长Tb,所述网络设备与所述第一FPGA模块之间的连接在所述时长Tb的计时过程中被断开;在计时结束后,确定所述第一FPGA模块与所述网络设备之间的连接断开。
本实施例提供的FPGA模块具有一定的物理形态。例如,在一些实施方式中,FPGA模块可以实现为卡片结构,例如FPGA板卡。在其它一些实施方式中,FPGA模块也可以实现为非卡片结构。
本实施例提供的FPGA模块,与前述实施例提供的FPGA重加载装置或网络设备相配合,可与网络设备之间断开连接期间执行重加载操作,使得网络设备不会感知到FPGA模块的重加载操作,因此FPGA模块的重加载不会引起网络设备重启,可以克服重启网络设备所带来的不良影响。
相应地,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有重加载文件,所述重加载文件被FPGA模块加载并执行时可实现上述FPGA重加载方法实施例中与FPGA模块相关的步骤或操作。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (17)
1.一种FPGA重加载方法,其特征在于,应用于网络设备,所述网络设备与第一FPGA模块通过总线连接,所述方法包括:
向所述第一FPGA模块配置重加载指令,以触发所述第一FPGA模块在与所述网络设备断开总线连接期间执行重加载操作;
关闭所述网络设备上与所述第一FPGA模块总线连接的第一端口,以断开所述网络设备与所述第一FPGA模块之间的总线连接,以及在所述第一FPGA模块完成重加载后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接,从而实现所述第一FPGA模块执行的重加载操作不会被所述网络设备感知。
2.根据权利要求1所述的方法,其特征在于,所述在所述第一FPGA模块完成重加载后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接,包括:
自断开所述网络设备与所述第一FPGA模块之间的总线连接开始计时时长Ta;其中,所述第一FPGA模块在所述时长Ta的计时过程中执行重加载操作;
在计时结束后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接。
3.根据权利要求1所述的方法,其特征在于,还包括:
在所述第一FPGA模块完成重加载之前,将所述第一FPGA模块的设备信息从所述第一端口的配置空间中移除;以及
在所述第一FPGA模块完成重加载之后,将所述第一FPGA模块的设备信息重新配置到所述第一端口的配置空间中。
4.根据权利要求3所述的方法,其特征在于,所述将所述第一FPGA模块的设备信息重新配置到所述第一端口的配置空间中,包括:
在重新开启所述第一端口后,通过扫描所述第一端口确定所述第一FPGA模块已与所述第一端口连接;
针对所述第一FPGA模块进行初始化,以将所述第一FPGA模块的设备信息配置到所述第一端口的配置空间中。
5.根据权利要求3所述的方法,其特征在于,在将所述第一FPGA模块的设备信息从所述第一端口的配置空间中移除之前,所述方法还包括:
将所述第一FPGA模块的设备信息从所述第一端口的配置空间中备份至指定空间中;
所述将所述第一FPGA模块的设备信息重新配置到所述第一端口的配置空间中,包括:
从所述指定空间中获取所述第一FPGA模块的设备信息,并重新配置到所述第一端口的配置空间中。
6.根据权利要求1所述的方法,其特征在于,所述关闭所述网络设备上与所述第一FPGA模块连接的第一端口,以断开所述网络设备与所述第一FPGA模块之间的总线连接,包括:
根据所述第一端口的端口号和关闭指令标记,生成关闭指令;
通过运行所述关闭指令关闭所述第一端口,以断开所述网络设备与所述第一FPGA模块之间的总线连接;
所述重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接,包括:
根据所述第一端口的端口号和开启指令标记,生成开启指令;
通过运行所述开启指令开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接。
7.根据权利要求1-6任一项所述的方法,其特征在于,向网络设备中的第一FPGA模块配置重加载指令,以触发所述第一FPGA模块在与所述网络设备断开总线连接期间执行重加载操作,包括:
响应于重加载配置命令,所述重加载配置命令包含所述第一FPGA模块的标识;
基于所述第一FPGA模块的标识,向所述第一FPGA模块配置所述重加载指令,以触发所述第一FPGA模块在与所述网络设备断开总线连接期间执行重加载操作。
8.一种FPGA重加载方法,其特征在于,应用于FPGA模块,所述FPGA模块与网络设备通过总线连接,所述方法包括:
接收所述网络设备配置的重加载指令,所述重加载指令指示FPGA模块在与所述网络设备之间断开总线连接期间执行重加载操作;所述网络设备在向所述FPGA模块配置所述重加载指令后,会关闭所述网络设备上与所述FPGA模块总线连接的第一端口,以断开所述网络设备与所述FPGA模块之间的总线连接,以使所述FPGA模块能够在与所述网络设备断开连接期间执行重加载操作,以及所述网络设备在所述FPGA模块完成重加载后,会重新开启所述第一端口,以重新建立所述网络设备与所述FPGA模块之间的总线连接,从而实现所述FPGA模块执行的重加载操作不会被所述网络设备感知;
确定所述FPGA模块与所述网络设备之间的总线连接断开,并对所述FPGA模块进行重加载。
9.根据权利要求8所述的方法,其特征在于,所述确定所述FPGA模块与所述网络设备之间的总线连接断开,包括:
自接收到所述重加载指令开始计时时长Tb,所述网络设备与所述FPGA模块之间的总线连接在所述时长Tb的计时过程中被断开;
在计时结束后,确定所述FPGA模块与所述网络设备之间的总线连接断开。
10.一种网络设备,其特征在于,包括:存储器、处理器、至少一个槽位以及与所述至少一个槽位对应的至少一个端口;其中,所述至少一个槽位中的第一槽位承载有第一FPGA模块,所述第一FPGA模块通过所述第一槽位对应的第一端口与所述处理器通过总线连接;
所述存储器包括:程序存储空间,所述程序存储空间存储有所述第一FPGA模块的驱动程序;
所述处理器,与所述存储器耦合,用于执行所述驱动程序,以实现:
向所述第一FPGA模块配置重加载指令,以触发所述第一FPGA模块在与所述网络设备断开总线连接期间执行重加载操作;
关闭所述第一端口,以断开所述网络设备与所述第一FPGA模块之间的总线连接,以及在所述第一FPGA模块完成重加载后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接,从而实现所述第一FPGA模块执行的重加载操作不会被所述网络设备感知。
11.根据权利要求10所述的网络设备,其特征在于,所述处理器在重新开启所述第一端口时,具体用于:
自断开所述网络设备与所述第一FPGA模块之间的总线连接开始计时时长Ta;其中,所述第一FPGA模块在所述时长Ta的计时过程中执行重加载操作;
在计时结束后,重新开启所述第一端口,以重新建立所述网络设备与所述第一FPGA模块之间的总线连接。
12.根据权利要求10所述的网络设备,其特征在于,所述存储器还包括所述第一端口的配置空间,所述第一端口的配置空间用于存储所述第一FPGA模块的设备信息;
所述处理器还用于:在断开所述网络设备与所述第一FPGA模块之间的总线连接的过程中,将所述第一FPGA模块的设备信息从所述第一端口的配置空间中移除,以及在重新建立所述网络设备与所述第一FPGA模块之间的总线连接的过程中,将所述第一FPGA模块的设备信息重新配置到所述第一端口的配置空间中。
13.根据权利要求10-12任一项所述的网络设备,其特征在于,所述处理器在向所述第一FPGA模块配置重加载指令时,具体用于:
响应于重加载配置命令,所述重加载配置命令包含所述第一FPGA模块的标识;
基于所述第一FPGA模块的标识,向所述第一FPGA模块配置所述重加载指令,以触发所述第一FPGA模块在与所述网络设备断开总线连接期间执行重加载操作。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有FPGA模块的驱动程序,所述驱动程序被计算机执行时可实现权利要求1-7任一项所述方法中的步骤。
15.一种FPGA模块,其特征在于,包括:FPGA芯片、端口以及片外存储器;所述FPGA芯片通过所述端口与网络设备通过总线连接,并与所述片外存储器连接;
所述FPGA芯片,用于接收所述网络设备发送的重加载指令,所述重加载指令指示所述FPGA模块在与所述网络设备之间断开总线连接期间执行重加载操作;所述网络设备在向所述FPGA模块配置所述重加载指令后,会关闭所述网络设备上与所述FPGA模块总线连接的第一端口,以断开所述网络设备与所述FPGA模块之间的总线连接,以使所述FPGA模块能够在与所述网络设备断开连接期间执行重加载操作,以及所述网络设备在所述FPGA模块完成重加载后,会重新开启所述第一端口,以重新建立所述网络设备与所述FPGA模块之间的总线连接,从而实现所述FPGA模块执行的重加载操作不会被所述网络设备感知;
所述FPGA芯片,还用于确定所述FPGA模块与所述网络设备之间的总线连接断开,并对所述FPGA模块进行重加载。
16.根据权利要求15所述的FPGA模块,其特征在于,所述FPGA芯片具体用于:
自接收到所述重加载指令开始计时时长Tb,所述网络设备与所述FPGA模块之间的总线连接在所述时长Tb的计时过程中被断开;
在计时结束后,确定所述FPGA模块与所述网络设备之间的总线连接断开。
17.一种通信系统,其特征在于,包括:权利要求10-13任一项所述的网络设备以及至少一个权利要求15-16任一项所述的FPGA模块;所述至少一个FPGA模块插接于所述网络设备的槽位中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810079214.0A CN110083484B (zh) | 2018-01-26 | 2018-01-26 | Fpga重加载方法、设备、存储介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810079214.0A CN110083484B (zh) | 2018-01-26 | 2018-01-26 | Fpga重加载方法、设备、存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110083484A CN110083484A (zh) | 2019-08-02 |
CN110083484B true CN110083484B (zh) | 2024-03-08 |
Family
ID=67412749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810079214.0A Active CN110083484B (zh) | 2018-01-26 | 2018-01-26 | Fpga重加载方法、设备、存储介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110083484B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309521B (zh) * | 2020-01-19 | 2024-02-09 | 深圳市恒扬数据股份有限公司 | Fpga重加载方法、fpga卡式设备和主机 |
CN117009128B (zh) * | 2023-09-14 | 2023-12-22 | 飞腾信息技术有限公司 | 一种错误上报方法及计算机系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521065A (zh) * | 2011-12-30 | 2012-06-27 | 四川九洲电器集团有限责任公司 | 一种fpga动态加载配置文件的方法 |
CN102609286A (zh) * | 2012-02-10 | 2012-07-25 | 株洲南车时代电气股份有限公司 | 一种基于处理器控制的fpga配置程序远程更新系统及其方法 |
CN103685890A (zh) * | 2013-12-05 | 2014-03-26 | 华南理工大学 | 动态重配置图像处理功能的智能相机及其动态重配置方法 |
CN103971732A (zh) * | 2014-04-30 | 2014-08-06 | 浙江大学 | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 |
CN105279133A (zh) * | 2015-10-20 | 2016-01-27 | 电子科技大学 | 基于SoC在线重构的VPX并行DSP信号处理板卡 |
CN106201590A (zh) * | 2016-06-29 | 2016-12-07 | 瑞斯康达科技发展股份有限公司 | 一种fpga配置文件加载方法和系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7610366B2 (en) * | 2001-11-06 | 2009-10-27 | Canon Kabushiki Kaisha | Dynamic network device reconfiguration |
CN103957130B (zh) * | 2014-04-08 | 2017-07-18 | 迈普通信技术股份有限公司 | 故障检测及恢复方法和系统 |
CN107241254B (zh) * | 2017-05-19 | 2020-06-05 | 北京知道创宇信息技术股份有限公司 | 一种网络连接设备、网络系统和组网方法 |
CN107332697B (zh) * | 2017-06-16 | 2020-07-07 | 北京华为数字技术有限公司 | 一种故障检测方法及装置 |
CN107450948B (zh) * | 2017-07-28 | 2019-10-08 | 西安电子科技大学 | 一种低功耗的fpga自适应加载方法及系统 |
CN110069366B (zh) * | 2018-01-24 | 2023-09-26 | 阿里巴巴集团控股有限公司 | 一种重加载方法、装置及服务器 |
-
2018
- 2018-01-26 CN CN201810079214.0A patent/CN110083484B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521065A (zh) * | 2011-12-30 | 2012-06-27 | 四川九洲电器集团有限责任公司 | 一种fpga动态加载配置文件的方法 |
CN102609286A (zh) * | 2012-02-10 | 2012-07-25 | 株洲南车时代电气股份有限公司 | 一种基于处理器控制的fpga配置程序远程更新系统及其方法 |
CN103685890A (zh) * | 2013-12-05 | 2014-03-26 | 华南理工大学 | 动态重配置图像处理功能的智能相机及其动态重配置方法 |
CN103971732A (zh) * | 2014-04-30 | 2014-08-06 | 浙江大学 | 监控fpga的单粒子翻转效应并纠正重加载的方法及系统 |
CN105279133A (zh) * | 2015-10-20 | 2016-01-27 | 电子科技大学 | 基于SoC在线重构的VPX并行DSP信号处理板卡 |
CN106201590A (zh) * | 2016-06-29 | 2016-12-07 | 瑞斯康达科技发展股份有限公司 | 一种fpga配置文件加载方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110083484A (zh) | 2019-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094903B (zh) | 对固件进行升级的方法及装置 | |
US10007530B2 (en) | Electronic device having an external memory and method for operating the same | |
US10318328B2 (en) | Method for managing operating system and electronic device supporting the same | |
EP3352449B1 (en) | Electronic device and photographing method | |
CN106933593B (zh) | 一种基于移动终端的系统切换方法和装置 | |
EP3121700B1 (en) | Electronic device and method for managing objects in recommended folders | |
EP3479243A2 (en) | Fault-tolerant variable region repaving during firmware over the air update | |
CN105335178B (zh) | 一种启动控制方法,及装置 | |
CN110764825B (zh) | 一种开机方法及终端设备 | |
CN107911319B (zh) | 一种多安全模块的路由方法、nfc控制器及nfc设备 | |
US11016853B2 (en) | Method for displaying time information in low power state and electronic device including the same | |
US10146557B2 (en) | Method and electronic device for initializing memory and updating firmware | |
KR20170098110A (ko) | 임베디드 심 운용 지원 방법 및 이를 지원하는 전자 장치 | |
CN110083484B (zh) | Fpga重加载方法、设备、存储介质及系统 | |
CN105468504B (zh) | 程序测试方法及装置 | |
CN115328563B (zh) | 系统启动方法及电子设备 | |
CN112445766A (zh) | 一种终端碎片整理方法、装置以及终端 | |
US20190205863A1 (en) | Electronic device and method for providing payment service | |
EP3131031A1 (en) | Content security processing method and electronic device supporting the same | |
CN111158987A (zh) | 微服务架构的健康检查方法及装置 | |
CN113672297A (zh) | 一种recovery模式升级过程中的重启方法及终端 | |
CN111381892A (zh) | 一种数据处理方法、装置、设备和机器可读介质 | |
CN111726848B (zh) | 设备绑定方法、目标启动装置、固定终端及存储介质 | |
US10007529B2 (en) | Data terminal running mode switching method, device, and data terminal | |
CN116382791B (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 |