CN112486585B - 恢复fpga芯片中的逻辑的方法、系统和fpga设备 - Google Patents

恢复fpga芯片中的逻辑的方法、系统和fpga设备 Download PDF

Info

Publication number
CN112486585B
CN112486585B CN202011210974.4A CN202011210974A CN112486585B CN 112486585 B CN112486585 B CN 112486585B CN 202011210974 A CN202011210974 A CN 202011210974A CN 112486585 B CN112486585 B CN 112486585B
Authority
CN
China
Prior art keywords
logic
memory
loading
fpga
instruction
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
Application number
CN202011210974.4A
Other languages
English (en)
Other versions
CN112486585A (zh
Inventor
吕跃强
侯新宇
罗浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202011210974.4A priority Critical patent/CN112486585B/zh
Publication of CN112486585A publication Critical patent/CN112486585A/zh
Application granted granted Critical
Publication of CN112486585B publication Critical patent/CN112486585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)

Abstract

一种恢复或升级FPGA芯片中的逻辑的方法。在FPGA设备中引入了第一存储器和第二存储器两个存储器。通常,无论是用户修改的逻辑还是管理面升级的逻辑都是先写入第二存储器,而第一存储器中保存的则是修改或升级之前的逻辑。如果用户修改后的逻辑或管理面升级的逻辑加载到FPGA芯片后枚举不成功,则可利用第一存储器中的第一逻辑还原FPGA芯片中的逻辑。虽然静态逻辑因为开放给用户而可能带来风险,但是利用上述方法可以快速地恢复FPGA芯片中的逻辑。从而保证了FPGA芯片的有效运行。

Description

恢复FPGA芯片中的逻辑的方法、系统和FPGA设备
技术领域
本发明实施例涉及计算机技术,特别是一种恢复FPGA芯片中的逻辑的方法、系统和FPGA设备。
背景技术
历史上,受益于半导体技术的持续演进,计算机体系结构的吞吐量和系统性能不断提高,处理器的性能每18个月就能翻倍(众所周知的“摩尔定律”),使得处理器的性能可以满足应用软件的需求。但是,近几年半导体技术改进达到了物理极限,处理器性能再无法按照摩尔定律进行增长,另一方面数据增长对计算性能要求超过了按“摩尔定律”增长的速度。处理器本身无法满足高性能计算(HPC:High Performance Compute)和并行计算(图形,图像和人工智能)应用软件的性能需求,导致需求和性能之间出现了缺口。为了弥补该缺口,一种解决方法是通过硬件加速,采用专用协处理器的异构计算方式来提升处理性能。
现场可编程门阵列(Field Programmable Gate Array,FPGA)因其可编程性、低功耗等优势在异构计算上得到广泛使用。比如,在公有云中,当引入FPGA时,云服务商通常会把FPGA的逻辑分为静态部分和动态部分。其中,静态部分通常用于实现一些基础功能,比如,DDR、DMA等,而动态逻辑则用于实现一些业务逻辑,比如图片编解码、加解密等。从安全的角度出发,静态部分逻辑通常不给用户开放,而由云服务商收集需求,根据需求进行普适性设计;而动态部分则可以开放给用户,用户可以自己编写与更改静态部分的逻辑。随着使用云服务的用户增多,为满足用户的需求,FPGA中的静态部分需要实现的基础功能会越来越多。由于静态逻辑通常采用的是通用接口,布线布局比较复杂,从而导致FPGA的运行效率降低。
如果将静态逻辑也开放给用户,由用户自己根据需求编写和更改,那么FPGA设备的安全性就无法保障。因此,如何能够将静态逻辑开放给用户的同时,又能保证FPGA设备的安全性,成为一个急需要解决的问题。
发明内容
有鉴于此,本申请提供了一种恢复FPGA芯片中的逻辑的方法、系统和FPGA设备,以恢复FPGA芯片中的逻辑。
本申请的第一方面提供了一种恢复FPGA芯片中的逻辑的方法,该方法应用于FPGA设备。所述FPGA设备包括所述FGPA芯片、第一存储器、第二存储器,其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有所述第二逻辑。该方法包括如下步骤:所述FPGA设备接收BMC发送的第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片;所述FPGA设备根据所述第一加载指令断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道;所述FPGA设备通过所述数据通道将所述第一逻辑加载到所述FPGA芯片。
在上述的FPGA设备中引入了第一存储器和第二存储器两个存储器。其中,无论是用户修改的逻辑还是管理面升级的逻辑都是先写入第二存储器,而第一存储器中保存的则是修改或升级之前的逻辑。如果用户修改后的逻辑或管理面升级的逻辑加载到FPGA芯片后枚举不成功,则可利用第一存储器中的第一逻辑还原FPGA芯片中的逻辑。虽然静态逻辑因为开放给用户而可能带来风险,但是利用上述方法可以快速地恢复FPGA芯片中的逻辑。从而保证了FPGA芯片的有效运行。
在所述第一方面的一种可能的实现中,所述FPGA设备还包括读写控制器和多路复用器MUX。其中,由所述读写控制器接收所述第一加载指令。然后,所述读写控制器根据所述第一加载指令向所述MUX发送第一通道切换指令,所述第一通道切换指令用于指示所述MUX进行通道切换。也即,切换所述MUX与第一及第二存储器之间的数据通道。所述MUX接收到所述第一通道切换指令之后,根据所述第一通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道。也就是将通道切换到第一存储器。所述读写控制器在通道切换完成后向所述FPGA芯片发送第一加载信号,所述第一加载信号用于触发所述FPGA芯片加载逻辑。所述FPGA芯片根据所述第一加载信号通过所述FPGA芯片与所述第一存储器的数据通道,将所述第一逻辑加载到FPGA芯片中。
在这个具体的实现中,FPGA设备巧妙地利用了读写控制器与多路复用器的配合来实现通道之间的切换。是一种高效实用的方式。
结合第一方面的第一种实现,在第一方面的第二种实现中,读写控制器接收所述BMC发送的重置指示。读写控制器根据所述重置指示,向所述多路复用器发送第二通道切换指令,所述第二通道切换指令用于指示所述MUX切换所述MUX与所述第一和第二存储器之间的数据通道。所述MUX根据所述第二通道切换指令,断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。
可以理解的是,当FPGA芯片会到修改前的逻辑后,本申请的实施例中,还将通道切换回第二存储器,为再次加载第二逻辑或者用户的继续修改提供基础。提高了修改FPGA芯片的灵活性。
结合第一方面的第二种实现,在第一方面的第三种实现中,所述FPGA芯片接收第二加载指令,并根据所述第二加载指令向所述读写控制器发送加载请求信号,所述第二加载指令指示FPGA芯片加载存储器中的逻辑。所述读写控制器接收所述加载请求信号,并响应所述加载请求信号向所述FPGA芯片返回第二加载信号,所述第二加载信号用于触发FPGA加载逻辑。所述FPGA芯片根据所述第二加载信号,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
由于加载失败的原因是不可预知的,当通道切回第二存储器的时候,用户可以需要再次得加载第二逻辑,避免因为偶然因素使得第二逻辑无法实施。
结合第一方面的第三种实现,在第一方面的第四种实现中,所述第一逻辑和所述第二逻辑为PCIe静态逻辑。而该方法还包括下述步骤。所述FPGA芯片在所述第二逻辑完成后,向CPU发送加载完成信号。相应地,所述CPU接收到加载完成信号后,枚举所述FPGA芯片与所述CPU之间的PCIe通道。枚举成功后,所述FPGA芯片通过与所述CPU之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。
在PCIe静态逻辑加载完成后,通过带内方式将剩下的静态逻辑以及动态逻辑加载到FPGA芯片上,极大地提高了加载的速度。
结合第一方面的第三种实现,在第一方面的第五种实现中,当所述第一存储器设置有写保护时,该方法还包括如下步骤。所述读写控制器接收第一写数据指令,所述第一写数据指令指示有数据要写入所述第一存储器,根据所述第一写数据指令向所述多路复用器发送第三通道切换指令并向所述第一存储器发送关闭写保护的指令。所述MUX根据所述通道切换指令,断开所述FPGA芯片与所述第二储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道。所述第一存储器根据所述关闭写保护的指令,关闭写保护。
为避免对第一逻辑的恶意篡改,在该实现中,第一存储器设置有写保护,当写入管理面的数据时,才将其写保护关闭。
结合第一方面的上述第二至五种实现中,所述读控制器为CPLD,所述MUX为SPIMUX,所述数据通道为SPI通道。
本申请的第二方面提供了一种FPGA设备,所述FPGA设备包括FGPA芯片、第一存储器、第二存储器、读写控制器和多路复用器。其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有所述第二逻辑。所述读写控制器用于接收第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片,并根据所述第一加载指令向多路复用器发送第一通道切换指令以及在通道切换完成后向所述FPGA芯片发送第一加载信号,其中,所述第一通道切换指令用于指示所述MUX切换所述MUX与第一及第二存储器之间的数据通道,所述第一加载信号用于触发所述FPGA芯片加载逻辑。所述MUX用于根据所述第一通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道。所述FPGA芯片,用于根据所述第一加载信号通过所述FPGA芯片与所述第一存储器之间的数据通道,将所述第一逻辑加载到FPGA芯片中。
结合第二方面的一种可能实现中,所述读写控制器还用于接收重置指示,根据所述重置指示向所述多路复用器发送第二通道切换指令,所述第二通道切换指令用于指示所述MUX切换所述MUX与所述第一和第二存储器之间的数据通道。且所述MUX还用于根据所述第二通道切换指令,断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。
结合第二方面的第一种可能的实现,在第二方面的第二种可能的实现中,所述FPGA芯片用于接收第二加载指令,根据所述第二加载指令向所述读写控制器发送加载请求信号,所述第二加载指令指示FPGA芯片加载存储器中的逻辑。所述读写控制器还用于接收加载请求信号,并响应所述加载请求信号向所述FPGA芯片返回第二加载信号,所述第二加载信号触发FPGA加载逻辑。所述读写控制器向所述FPGA芯片发送加载信号,所述加载信号触发FPGA加载逻辑。所述FPGA芯片根据所述第二加载信号,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
结合第二方面的第二种可能的实现,在第二方面的第三种可能的实现中,所述第一逻辑和所述第二逻辑为PCIe静态逻辑,所述第二逻辑加载成功后,所述FPGA芯片还用于向CPU发送加载完成信号,并在所述CPU枚举成功后,通过所述FPGA芯片与CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。
结合第二方面的第三种可能的实现,在第二方面的第四种可能的实现中,当所述第一存储器设置了写保护时,所述读写控制器还用于接收第一写数据指令,所述第一写数据指令指示有数据要写入所述第一存储器,根据所述第一写数据指令向所述多路复用器发送第三通道切换指令并向所述第一存储器发送关闭写保护的指令。所述MUX还用于根据所述第三通道切换指令,断开所述FPGA芯片与所述第二储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道。所述第一存储器还用于根据所述关闭写保护的指令,关闭写保护。
本申请的第三方面提供了一种计算机系统,该计算机系统包括中央处理单元CPU、主板管理控制器BMC和现场可编程门阵列FPGA设备。所述FPGA设备包括所述FGPA芯片、第一存储器、第二存储器,其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有所述第二逻辑,所述第二逻辑是第一逻辑更新后的逻辑。所述CPU用于在枚举所述CPU与FPGA设备之间的PCIe通道失败后,向BMC发送枚举失败的消息。所述BMC用于根据所述枚举失败的消息向FPGA设备发送第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片。所述FPGA设备用于接收第一加载指令,根据所述第一加载指令断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并通过所述数据通道将所述第一逻辑加载到所述FPGA芯片。
可替代地,上述实现方式中,所述CPU向BMC发送的是逃生指令,所述逃生指令用于指示加载所述第一存储器中的逻辑;相应地,所述BMC用于根据所述逃生指令向所述FPGA设备发送第一加载指令。
结合第三方面的一种可能的实现方式中,所述FPGA设备还用于在加载完所述第一逻辑后,向所述CPU发送第一加载完成信号。所述CPU还用于接收到所述第一加载完成信号之后,枚举所述CPU与FPGA设备之间的PCIe通道,并在枚举成功后向所述BMC发送枚举成功的消息。所述BMC,还用于根据所述枚举成功的消息向所述FPGA设备发送重置指示。所述FPGA设备,还用于根据所述重置指示断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。
可替代地,在这一种实现方式中,枚举成功后,所述CPU向所述BMC发送的是恢复原连接的指示,相应地,所述BMC还用于根据所述恢复原连接的指示向所述FPGA设备发送重置指示。
结合第三方面的第一种实现,在第三方面的第二种实现中,所述BMC还用于从所述FPGA设备接收重置成功响应,并向所述CPU发送确认信号以确认所述数据通道已切换好。所述CPU还用于根据所述确认信号向所述FPGA设备发送第二加载指令,指示所述FPGA设备加载存储器中的逻辑。所述FPGA设备还用于在接收到所述第二加载指令之后,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
结合第三方面的第二种实现,在第三方面的第三种实现中,所述FPGA设备还用于在第二逻辑加载完成后,向所述CPU发送第二加载完成信号,并在枚举成功后,通过与所述CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。所述CPU还用于在接收到所述第二加载完成信号后,枚举所述FPGA设备与所述CPU之间的PCIe通道。
结合第三方面的第二种实现或者第三种实现,在第三方面的第四种实现中,所述BMC还用于根据接收到的第三加载完成信号,向所述FPGA设备发送第一写数据指令以指示有数据要写入所述第一存储器,并根据从所述FPGA设备接收到的确认信号向CPU发送第二写数据指令。所述CPU还用于在所述FPGA设备加载所述第二逻辑并枚举成功后,向所述BMC发送所述第三加载完成信号,并根据从BMC接收到的所述第二写数据指令,向所述第一存储器写入所述第二逻辑。所述FPGA设备还用于根据所述第一写数据指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并在切换完成后向所述BMC发送确认信号。
结合第三方面的第四种实现,在第三方面的第五种实现中,当所述第一存储器设置了写保护时,所述BMC还用于根据所述第三加载完成信号,向所述FPGA设备发送写保护关闭指令。所述FPGA设备还用于根据所述写保护关闭指令,关闭所述第一存储器的写保护,并且切换完成且写保护关闭后向所述BMC发送所述确认信号。在上述的FPGA设备中引入了第一存储器和第二存储器两个存储器。其中,用户修改的逻辑还是管理面升级的逻辑可以先写入第二存储器,而第一存储器中保存的则可以是修改或升级之前的逻辑。如果用户修改后的逻辑或管理面升级的逻辑加载到FPGA芯片后枚举不成功,则可利用第一存储器中的第一逻辑还原FPGA芯片中的逻辑。虽然静态逻辑因为开放给用户而可能带来风险,但是利用上述方法可以快速地恢复FPGA芯片中的逻辑。从而保证了FPGA芯片的有效运行。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍。
图1是本发明实施例涉及的一种云结构示意图;
图2是本发明实施例涉及的一种计算机系统结构示意图;
图3是本发明实施例涉及的一种恢复FPGA芯片中的逻辑的流程示意图;
图4是本发明实施例涉及的一种升级FPGA芯片中的逻辑的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例提供的技术方案进行描述。
以公有云为例,如图1所示的,公有云网络包括多个客户端、多个服务器组成的云环境,这些客户端通过互联网连接到云环境中,由云环境中服务器提供服务。示例性的,云环境中的服务器(比如服务器1)可以如图2所示(其中,实线是数据通道,虚线则是信令),包括:FPGA设备,CPU,主板管理控制器(baseboard management controller,BMC),读写控制器,其中,FPGA设备包括FPGA芯片、第一存储器和第二存储器,第一存储器中存储有第一逻辑,第二存储器中存储有第二逻辑,第二逻辑是第一逻辑更新后的版本。
实际上,在初始阶段,管理面通过互联网接入云环境中,使用云环境的Portal定义一些数字计算任务。然后,该任务在云环境中被编译成包含元器件连接方式等信息的配置文件或比特流加载到FPGA芯片中。至此,完成对FPGA芯片的初始化配置。为了描述方便,下文中我们将这一类配置文件或者比特流称为逻辑,包括静态逻辑和动态逻辑。其中,静态逻辑包括PCIe静态逻辑和非PCIe静态逻辑。其中的初始PCIe静态逻辑被写入上述第一存储器和第二存储器中。可以先通过FPGA芯片与第二存储器之间的数据通道将初始PCIe静态逻辑先写入第二存储器中,具体写入的过程可以参考下述步骤302-304;写完之后,CPU向BMC发送完成指示,表明数据写入的操作已完成。BMC接收到该完成指示后,指示FPGA设备切换FPGA芯片与第一第二存储器之间的连接,也就是说将FPGA芯片连接到第一存储器上;然后,再通过FPGA芯片与所述第一存储器之间的连接,将初始PCIe静态逻辑写入到第一存储器上,这里写入的过程参考下述步骤302-304,不同的是,此时,数据写入的是第一存储器。也就是说,初始阶段,第一存储器和第二存储器上保存的都是初始PCIe静态逻辑。
另外,上述写入第一存储器和第二存储器的顺序可以调换,本发明实施例中不作限制。需要注意的是,如果是后写入第一存储器的,那么当写完之后,还需要FPGA芯片与第一存储器的通道断开,而将FPGA芯片与第二存储器之间的通道打开。这样,当用户想要修改FPGA芯片的逻辑时或者管理面想要更新FPGA芯片的逻辑时,可以通过FPGA芯片与第二存储器之间的通道将更新后的PCIe静态逻辑写入到第二存储器中,同时又避免用户对第一存储器中的逻辑进行修改。为了更好的保证第一存储器上的逻辑不被恶意篡改,还可以在初始PCIe静态逻辑写入到第一存储器上之后,将第一存储器的写保护打开。相应的,如果后续需要写入数据,也需要先把写保护关闭。
可以理解的是,上述管理面发布的初始PCIe静态逻辑是所述第一逻辑的一个例子,而上述用户或者管理面提供的更新后的PCIe静态逻辑则是第二逻辑的一个例子。
当第二逻辑加载到FPGA芯片后,照例,CPU会枚举所述CPU与FPGA设备之间的PCIe通道。在本发明实施例提供的服务器,可以在上述CPU枚举失败后,尽快地恢复FPGA芯片上的PCIe静态逻辑。
具体而言,所述服务器中的CPU用于在枚举所述CPU与FPGA设备之间的PCIe通道失败后,向BMC发送枚举失败的消息。所述BMC用于根据该枚举失败的消息向FPGA设备发送第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片。因为BMC接收到该枚举失败的消息后,知道需要将FPGA芯片的逻辑恢复到第一逻辑,所以向FPGA设备发送了上述的第一加载指令。可替代地,也可以是枚举失败之后,CPU向BMC发送逃生指令,该逃生指令用于指示加载所述第一存储器中的逻辑,也即第一逻辑,而后BMC根据所述逃生指令向所述FPGA设备发送第一加载指令。所述FPGA设备用于接收所述第一加载指令,根据所述第一加载指令断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并通过所述数据通道将所述第一逻辑加载到所述FPGA芯片。该FPGA设备还可以在加载完所述第一逻辑后,向CPU发送加载完成信号,以便于CPU收到该加载完成信号后执行PCIe枚举。通过枚举的方法,CPU确定该CPU跟FPGA芯片之间的PCIe通道是否可以正常通信。
通过上述的方案,尽管用户可以根据需要修改FPGA芯片的逻辑,包括修改其中的静态逻辑,但是当加载更新后的PCIe静态逻辑失败时,可以方便迅速地将FPGA芯片上的PCIe静态逻辑恢复到初始的PCIe静态逻辑上。同样,上述的方案也适用于管理面升级FPGA芯片逻辑的场景,管理面升级后的新版PCIe静态逻辑可以先写入到第二存储器中,当加载新版PCIe静态逻辑失败后,通过上述的方案迅速地将FPGA芯片上的PCIe静态逻辑恢复到管理面发布的上一版本的PCIe静态逻辑上。
在具体的应用场景中,上述的FPGA设备还包括读写控制器和多路复用器(Multiplexer,MUX),可以通过读写控制器以及MUX来实现第一存储器和第二存储器之间的切换。切换的过程如下:
所述读写控制器用于接收第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片,并根据所述第一加载指令向多路复用器发送第一通道切换指令以及向所述FPGA芯片发送第一加载信号,其中,所述第一通道切换指令用于指示所述MUX切换所述MUX与第一及第二存储器之间的数据通道,所述第一加载信号用于触发所述FPGA芯片加载逻辑。所述MUX用于根据所述第一通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道。所述FPGA芯片,用于根据所述第一加载信号通过所述FPGA芯片与所述第一存储器的数据通道,将所述第一逻辑加载到FPGA芯片中。
为了确定CPU是否能够跟恢复到第一逻辑后的FPGA芯片通信,该FPGA芯片还需要在加载完所述第一逻辑后,向CPU发送第一加载完成信号,以便于CPU收到该第一加载完成信号后执行PCIe枚举。如果枚举成功,则意味着CPU跟FPGA芯片可以正常通信。在这之后,用户或者管理面可以维持现状,使用初始的逻辑。用户或者管理面也可以继续加载之前的更新版本,后者对之前加载失败的逻辑做修改,包括修订其中的PCIe静态逻辑部分,在修改之后形成新的更新版本,并加载该新的更新版本。相对于管理面发布的初始的PCIe静态逻辑,这些版本都是更新后的版本,下文中统一称为更新后的PCIe静态逻辑。由于用户提供的PCIe静态逻辑是存在第二存储器中的,管理面升级后的PCIe静态逻辑也是先存在第二存储器中,因此,为了将更新后的PCIe静态逻辑加载到FPGA芯片上,需要将FPGA芯片连接到第二存储器。
也就是说,CPU还用于在所述CPU与FPGA设备之间的PCIe通道枚举成功后,向BMC发送枚举成功的消息。所述BMC还用于根据所述枚举成功的消息向FPGA发送重置指示。可替代地,CPU向BMC发送的是一个恢复原连接的指示,所述BMC根据所述恢复原连接的指示向FPGA发送所述重置指示。这里的原连接也就是FPGA芯片与第二存储器的连接。所述FPGA设备,还用于根据所述重置指示断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。具体到FPGA设备内部,所述读写控制器还用于接收重置指示,根据所述重置指示向所述多路复用器发送第二通道切换指令,所述第二通道切换指令用于指示所述MUX切换所述MUX与所述第一和第二存储器之间的数据通道。所述MUX根据还用于根据所述第二通道切换指令,断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA芯片与所述第二存储器之间的数据通道。
当所述FPGA芯片已连接到第二存储器后,可以再次加载第二存储器上的逻辑。因此,本发明实施例的一个可能实现中,所述BMC还用于从所述FPGA设备接收重置成功响应,并向所述CPU发送确认信号以确认所述数据通道已切换好。所述CPU还用于根据所述确认信号向所述FPGA设备发送第二加载指令,指示所述FPGA设备加载存储器中的逻辑。所述FPGA设备还用于在接收到所述第二加载指令之后,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
具体到FPGA设备内部,当用户或管理面需要重新加载第二存储器中的第二逻辑时,所述FPGA芯片还用于接收第二加载指令,根据所述第二加载指令向所述读写控制器发送加载请求信号,所述第二加载指令指示FPGA芯片加载存储器中的逻辑。其中,该第二加载指令可以是所述CPU根据BMC发送的确认信号后向所述FPGA设备发送的。该确认信号可以是所述BMC从所述FPGA设备接收到所述重置成功响应后向所述CPU发送的。相应地,所述读写控制器还用于接收加载请求信号,并响应所述加载请求信号向所述FPGA芯片返回第二加载信号,所述第二加载信号触发FPGA加载逻辑。所述FPGA芯片根据所述第二加载信号,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
进一步地,所述FPGA设备还用于在第二逻辑加载完成后,向所述CPU发送第二加载完成信号。所述CPU还用于在接收到所述第二加载完成信号后,枚举所述FPGA芯片与所述CPU之间的PCIe通道。所述FPGA设备还用于在枚举成功后,通过与所述CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。具体到FPGA设备内部,所述FPGA芯片还用于向CPU发送所述第二加载完成信号,并在所述CPU枚举成功后,通过所述FPGA芯片与CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。至此,用户完成了对FPGA中逻辑的修改或升级。对于管理面而言,除了升级第二存储器中的逻辑,还需要升级第一存储器中的逻辑。
进一步地,所述BMC还用于根据接收到的第三加载完成信号,向所述FPGA设备发送第一写数据指令以指示有数据要写入所述第一存储器,并根据从所述FPGA设备接收到的确认信号向CPU发送第二写数据指令。所述CPU还用于在所述FPGA设备加载所述第二逻辑并枚举成功后,向所述BMC发送所述第三加载完成信号,并根据从BMC接收到的所述第二写数据指令,向所述第一存储器写入所述第二逻辑。所述FPGA设备还用于根据所述第一写数据指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并在切换完成后向所述BMC发送确认信号。
当所述第一存储器设置了写保护时,所述BMC还用于根据接收到的所述第三加载完成信号,向所述FPGA设备发送写保护关闭指令。所述FPGA设备还用于根据所述写保护关闭指令,关闭所述第一存储器的写保护,并且切换完成且写保护关闭后向所述BMC发送所述确认信号。
在一个具体的实现中,上述读写控制器可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),上述多路复用器则可以是串行外设接口多路复用器(Serial Peripheral Interface Multiplexer,SPI MUX),而上述的数据通道可以是SPI通道,第一存储器和第二存储器可以是闪存(Flash Memory)。
上述的BMC和CPU可以是从非易失性存储设备中读取程序来实现上述的功能。由于CPLD是一种可编辑的逻辑器件,可以通过编辑其中的逻辑来实现上述的功能。
本发明实施例还提供了一种恢复FPGA芯片中的逻辑的方法。该方法应用于图2中的服务器中。正如上所言,初始阶段,第一存储器Flash A和第二存储器FlashB中存储了管理面发布的初始PCIe静态逻辑。并且,在初始阶段,SIP MUX跟Flash B之间的SPI通道连通,这样FlashB可以供用户保存修改后的逻辑。而SPI MUX跟Flash A之间的SPI通道关闭,用户无法访问。为了更好的保证用户无法随意写入数据到FlashA中,BMC可以发指令给CPLD,指令CPLD将FlashA的写保护打开。这样,就无法写数据到FlashA。如果用户有需要,可以修改FPGA的逻辑并将修改后的PCIe静态逻辑写入Flash B中。此时,Flash B中存储的不再是初始PCIe静态逻辑而是用户修改后的PCIe静态逻辑。如图3所示。本实施例提供的方法包括如下步骤:
302,CPU调用FPGA驱动程序和PCIe驱动程序,找到FPGA芯片并通过PCIe通道向FPGA芯片发送写数据指令,该数据指令中携带待写入的数据。这里的数据可以是前面提到过的由用户提供的PCIe静态逻辑,也可以是由管理面提供的PCIe静态逻辑。在实际应用中,可能需要通过多次写数据指令,才能将PCIe静态逻辑全部写入到FPGA芯片中。
304,FPGA芯片接收到数据写入指令后,将接收到的数据缓存在存储设备中,比如,双极只读存储器(bipolar read only memory,BROM)中,等到BROM中的数据达到一定的量后,FPGA芯片中的控制逻辑,将该BROM中的数据,通过FPGA芯片与SPI MUX之间的SPI通道以及SIP MUX与Flash B的通道将数据写入到Flash B中。将接收到的数据都写入到Flash B中之后,FPGA芯片向CPU返回一个中断。CPU收到中断后,将PCIe静态逻辑的其余部分以此方式陆续写入到Flash B中。
306,当需要加载Flash中的PCIe静态逻辑时,CPU通过PCIe通道向FPGA发送加载指令。其中,加载指令中指示FPGA芯片加载Flash中的逻辑。由于初始阶段,SIP MUX跟Flash B之间的SPI通道连通,所以,此处加载也就是FlashB中的逻辑,即,更新后的PCIe静态逻辑。
为了区分更新是由用户发起的,还是管理面发起的,该加载指令中还可以包括用于指代发起方的指示信息。从而指示CPU加载完成PCIe静态逻辑之后,是继续加载非PCIe静态逻辑
308,FPGA接收到所述加载指令之后,通过通用输入输出(general-purposeinput/output,GPIO)接口向CPLD发送一个读取信号。
310,CPLD接收到该读取信号之后,通过触发program B管脚向FPGA芯片发送加载信号。该加载信号用于指示FPGA芯片加载Flash中的逻辑。
312,FPGA芯片接收到所述加载信号后,通过FPGA芯片与所述Flash B之间的SPI通道加载数据。
其中,FPGA芯片是通过SPI MUX与Flash相连的。FPGA芯片与SPI MUX之间有SPI通道,且SPI MUX与Flash之间也有SPI通道。SPI MUX与Flash之间的SPI通道是可以事先设置。比如,在本实施例中,初始阶段,SPI MUX与Flash B之间的SPI通道处于连通状态。此时,FPGA芯片从Flash B加载修改后的PCIe静态逻辑。
314,当FPGA芯片从Flash B的数据加载完成后,向所述CPU发送加载完成信号,CPU收到该加载完成信号后执行PCIe枚举。也就是说,CPU检测通过PCIe通道与CPU连接的设备。本实施例中,如果CPU扫描到FPGA芯片通过PCIe通道连接在CPU上的话,说明CPU可以跟FPGA芯片通信。
316,如果CPU检测不到FPGA芯片,说明CPU与FPGA芯片之间的通信连接断开,无法继续加载非PCIe静态逻辑以及动态逻辑。这种情况下,CPU发送枚举失败的消息给BMC,指示BMC所述CPU与FPGA芯片之间无法通信。
318,BMC根据接收到的枚举失败的消息,向CPLD发送加载指令,指示CPLD从FlashA中加载管理面发布PCIe静态逻辑。
可替代地,步骤316中,也可以是枚举失败之后,CPU向BMC发送逃生指令,该逃生指令用于指示加载所述第一存储器中的逻辑,也即第一逻辑。而步骤318中,BMC根据所述逃生指令向所述CPLD发送所述加载指令。
320,CPLD接收到BMC的加载指令后,向SPI MUX发送通道切换指令以指示SPI MUX切换该SPI MUX与存储器之间的通道。
322,SPI MUX根据接收到的该通道切换指令,将SPI MUX与Flash B之间的通道关闭,而将该SPI MUX与Flash A之间的通道连通。也就是说,原来SPI MUX与Flash B之间连通的通道被关闭,而SPI MUX与Flash A之间原本关闭的通道被连通。当SPI MUX切换完成之后,向CPLD返回确认信号以表明通道切换已完成。
324,CPLD接收到该确认信号,获知通道切换已完成后,触发Program_B管脚向FPGA芯片发送加载信号。跟上述步骤310一样,该加载信号用于指示FPGA芯片从Flash中加载数据。
可替代地,当CPLD接收到该确认信号后,也可以将该确认信号返回给BMC,由所述BMC向CPU返回重新加载的指令,指令CPU为FPGA芯片加载逻辑。当CPU接收到该重新加载的指令后,会按照步骤306-312来加载数据。
由于在发送加载指令之前,CPLD已经将通道切换好,可以理解的是,本次FPGA芯片从Flash A中加载逻辑。
326,FPGA芯片接收到通过CPLD与SPI MUX之间的SPI通道以及SPI MUX与Flash A之间的通道从Flash A加载管理面发布的PCIe静态逻辑。
328,当FPGA芯片将Flash A中的数据加载完成后,向CPU发送加载完成信号,CPU收到该加载完成信号后执行PCIe枚举。
330,本实施例中,如果CPU扫描到FPGA芯片通过PCIe通道连接在CPU上的话,也就是枚举成功,则说明CPU与FPGA芯片之间的通信恢复,CPU发送枚举成功的消息给BMC。
332,BMC根据接收到的枚举成功的消息,向CPLD发送重置指示,指示CPLD将数据通道切换回初始连接的第二存储器。
可替代地,步骤330中,CPU向BMC发送的是一个恢复原连接的指示。而步骤332中,所述BMC根据所述恢复原连接的指示向FPGA发送所述重置指示。这里的原连接也就是FPGA芯片与第二存储器的连接。
334,CPLD接收到BMC的重置指示后,向SPI MUX发送通道切换指令以指令SPI MUX切换该SPI MUX与第一和第二存储器之间的SPI通道。
336,SPI MUX根据接收到的切换通道的指令,将SPI MUX与Flash A之间的SPI通道关闭且打开SPI MUX与Flash B之间的SPI通道。
SPI MUX切换完成之后,向CPLD返回确认信号以确认通道切换已完成,该CPLD则向BMC返回重置成功响应。BMC接收到该重置成功响应后,向CPU返回确认信号,该确认信号指示通道已切换好(这些步骤在图中没有示出)。实际上,此时通道已切换回初始连接的FlashB。这之后,CPU可以接受用户重新加载的请求,或者根据配置自动触发重新加载Flash B中的逻辑。重新加载Flash B中的逻辑的过程参考上述步骤306-314。当步骤314中枚举成功,则说明用户修改后的PCIe静态逻辑被成功加载到FPGA芯片,执行步骤338。如果枚举失败,则继续步骤316,将Flash A中的管理面发布的PCIe静态逻辑加载到FPGA芯片中。
338,CPU通过PCIe通道向FPGA芯片写入用户的非PCIe静态逻辑,写完非PCIe静态逻辑之后,再通过PCIe通道向FPGA芯片写入动态逻辑。或者CPU也可以将用户的非PCIe静态逻辑和动态逻辑一起通过PCIe通道写入FPGA。在上述的实施例中,引入了两个存储器,也就是Flash A和Flash B。用户修改的逻辑先写入Flash B,而Flash A中保存的则是用户修改之前的逻辑。如果用户修改后的逻辑加载到FPGA芯片后枚举不成功,则可利用Flash A中存储的逻辑还原FPGA芯片中的逻辑。虽然静态逻辑因为开放给用户而可能带来风险,但是利用本发明实施例的方案,利用Flash A中的逻辑可以快速地恢复FPGA中的逻辑。从而保证了FPGA的有效运行。
需要注意的是,如果是管理面需要升级FGPA的逻辑,更新后的逻辑也是先写入Flash B,同样的,如果管理面发布的更新后的逻辑加载到FPGA芯片后枚举不成功,也可利用Flash A中存储的逻辑快速恢复FPGA芯片中的逻辑。具体过程,可以参照上述的步骤302-304将管理面更新后的PCIe静态逻辑写入到Flash B中。然后参照上述步骤306-336,将Flash B中的更新后的PCIe静态逻辑加载到FPGA芯片,如果加载Flash B中的更新后的PCIe静态逻辑后无法成功枚举PCIe通道,则利用Flash A保存的更新之前的PCIe静态逻辑恢复FPGA芯片中的逻辑。不同之处在于,步骤314枚举成功后,则说明管理面修改后的PCIe静态逻辑被成功加载到FPGA芯片。之后,可以先将更新后的PCIe静态逻辑写入Flash A中,待更新后的PCIe静态逻辑写入Flash A中之后,再执行步骤338。也可以先执行步骤338,而后再将更新后的PCIe静态逻辑写入Flash A中。其中,将更新后的PCIe静态逻辑写入Flash A的过程参考图4,包括如下步骤。
S1,FPGA芯片加载Flash B中的更新后的PCIe静态逻辑并枚举PCIe通道成功后,CPU发送加载完成信号给BMC,以表明管理面发布的PCIe静态逻辑已加载成功。
S2,BMC根据接收到加载完成信号之后,确定管理面发布的PCIe静态逻辑加载到PFGA芯片成功,BMC据此向CPLD发送第一写数据指令,指示有数据要写入Flash A。
如果第一存储器设置了写保护,那么,此处所述BMC还用于向所述CPLD发送关闭所述第一存储器的写保护的指令。可以是由第一写数据指令同时作为关闭写保护的指令,也可以另外一个单独的指令来作为关闭写保护的指令,本发明不作限定。
S3,CPLD接收到写数据指令之后,向SPI MUX发送通道切换指令以指示SPI MUX切换该SPI MUX与存储器之间的通道。
可选地,若CPLD也接收到了写保护关闭的指令,则CPLD向Flash A发送关闭写保护指令。
S4,SPI MUX根据接收到的该通道切换指令,将SPI MUX与Flash B之间的通道关闭,而将该SPI MUX与Flash A之间的通道连通。也就是说,原来SPI MUX与Flash B之间连通的通道被关闭,而SPI MUX与Flash A之间原本关闭的通道被连通。
S5,通道切换完成后,SPI MUX向CPLD返回确认信号以确认通道切换完成,CPLD收到该确认信号后向BMC发送所述确认信号。
若上述S3中CPLD也向Flash A发送了关闭写保护的指令,那么CPLD等收到SPI MUX返回的切换完成的确认信号以及Flash A返回的写保护关闭确认信号后,再向BMC返回确认信号以确认Flash A写保护关闭且通道切换完成。
S6,所述BMC向所述CPU发送第二写数据指令,指示CPU向Flash中写入数据。
S7,所述CPU调用FPGA驱动程序和PCIe驱动程序找到FPGA芯片,并通过PCIe通道向FPGA芯片发送数据指令,FPGA芯片通过FPGA芯片与SPI MUX之间的SPI通道以及SIP MUX与Flash A的通道数据写入到Flash A中。具体过程参考步骤302-304。
可以理解的是,写完Flash A后,CPU还可以向BMC发送完成指示以表明数据已写完。这时候BMC会通知CPLD将数据通道切换回第二存储器。也就是说,FPGA芯片连通第二存储器的状态。
可见,本发明实施例的方案也可以为管理面升级FPGA芯片的PCIe静态逻辑提供保障。
在另外一种情况下,也就是,当用户对FPGA的修改或者使用权限到期,云服务提供商回收虚拟机时,也需要将FPGA芯片上的逻辑还原为管理面发布的初始PCIe静态逻辑。在这种情况下,BMC向CPLD发送加载指令,指示CPLD从Flash A中加载管理面发布的PCIe静态逻辑。而后,CPLD根据接收到的加载指令通知SPI MUX切换通道,然后通过切换后的通道将Flash A中管理面发布的PCIe静态逻辑加载到FPGA芯片上。具体的过程参考上述步骤318-328。若步骤328中枚举成功,则Flash A中管理面发布的PCIe静态逻辑已成功加载到FPGA芯片上。
最后应说明的是:上述的实施例以公有云中的服务器来展开,而实际上上述实施例的方案并不限于公有云,其他远程提供硬件服务给用户的网络中照样适用。比如,私有云,混合云等等。也就是说以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。

Claims (18)

1.一种恢复FPGA芯片中的逻辑的方法,所述方法应用于FPGA设备,其特征在于,所述FPGA设备包括所述FPGA芯片、第一存储器、第二存储器,其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有第二逻辑,所述第一逻辑和所述第二逻辑为PCIe静态逻辑,所述方法包括:
所述FPGA设备接收BMC发送的第一加载指令,所述第一加载指令在所述BMC接收到枚举失败的消息后发送,用于指示将所述第一逻辑加载到所述FPGA芯片,所述枚举为所述第二逻辑加载完成后,CPU对所述FPGA芯片与所述CPU之间的PCIe通道的枚举;
所述FPGA设备根据所述第一加载指令断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道;
所述FPGA设备通过所述数据通道将所述第一逻辑加载到所述FPGA芯片。
2.如权利要求1所述的方法,其特征在于,所述FPGA设备还包括读写控制器和多路复用器MUX,其中,
所述读写控制器接收所述第一加载指令;
所述读写控制器根据所述第一加载指令向所述MUX发送第一通道切换指令,所述第一通道切换指令用于指示所述MUX切换所述MUX与第一及第二存储器之间的数据通道;
所述MUX根据所述第一通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道;
所述读写控制器在通道切换完成后向所述FPGA芯片发送第一加载信号,所述第一加载信号用于触发所述FPGA芯片加载逻辑;
所述FPGA芯片根据所述第一加载信号通过所述FPGA芯片与所述第一存储器的数据通道,将所述第一逻辑加载到FPGA芯片中。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
所述读写控制器接收所述BMC发送的重置指示;
所述读写控制器根据所述重置指示,向所述多路复用器发送第二通道切换指令,所述第二通道切换指令用于指示所述MUX切换所述MUX与所述第一存储器和所述第二存储器之间的数据通道;
所述MUX根据所述第二通道切换指令,断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA芯片与所述第二存储器之间的数据通道。
4.如权利要求3所述的方法,其特征在于,所述的方法还包括:
所述FPGA芯片接收第二加载指令,并根据所述第二加载指令向所述读写控制器发送加载请求信号,所述第二加载指令指示FPGA芯片加载存储器中的逻辑;
所述读写控制器接收所述加载请求信号,并响应所述加载请求信号向所述FPGA芯片返回第二加载信号,所述第二加载信号用于触发FPGA加载逻辑;
所述FPGA芯片根据所述第二加载信号,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
5.如权利要求4所述的方法,其特征在于,所述的方法还包括:
所述第二逻辑完成后,所述FPGA芯片向CPU发送加载完成信号,以便于所述CPU枚举所述FPGA芯片与所述CPU之间的PCIe通道;
在枚举成功后,所述FPGA芯片通过与所述CPU之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。
6.如权利要求4所述的方法,其特征在于,当所述第一存储器设置有写保护时,所述方法还包括:
所述读写控制器接收第一写数据指令,所述第一写数据指令指示有数据要写入所述第一存储器,根据所述第一写数据指令向所述多路复用器发送第三通道切换指令并向所述第一存储器发送关闭写保护的指令;
所述MUX根据所述第三通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道;
所述第一存储器根据所述关闭写保护的指令,关闭写保护。
7. 如权利要求2-6任意一项所述的方法,其特征在于,所述读写控制器为CPLD,所述MUX为SPI MUX,所述数据通道为SPI 通道。
8.一种FPGA设备,所述FPGA设备包括FPGA芯片、第一存储器、第二存储器、读写控制器和多路复用器MUX,其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有第二逻辑,所述第一逻辑和所述第二逻辑为PCIe静态逻辑,其特征在于:
所述读写控制器用于接收第一加载指令,所述第一加载指令在BMC接收到枚举失败的消息后发送,用于指示将所述第一逻辑加载到所述FPGA芯片;并根据所述第一加载指令向多路复用器发送第一通道切换指令以及在通道切换完成后向所述FPGA芯片发送第一加载信号,其中,所述第一通道切换指令用于指示所述MUX切换所述MUX与第一及第二存储器之间的数据通道,所述第一加载信号用于触发所述FPGA芯片加载逻辑,所述枚举为所述第二逻辑加载完成后,CPU对所述FPGA芯片与所述CPU之间的PCIe通道的枚举;
所述MUX 用于根据所述第一通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA与所述第一存储器之间的数据通道;
所述FPGA芯片,用于根据所述第一加载信号通过所述FPGA芯片与所述第一存储器之间的数据通道,将所述第一逻辑加载到FPGA芯片中。
9.如权利要求8所述的设备,其特征在于,
所述读写控制器还用于接收重置指示,根据所述重置指示向所述多路复用器发送第二通道切换指令,所述第二通道切换指令用于指示所述MUX切换所述MUX与所述第一存储器和所述第二存储器之间的数据通道;
所述MUX还用于根据所述第二通道切换指令,断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。
10.如权利要求9所述的设备,其特征在于,
所述FPGA芯片用于接收第二加载指令,根据所述第二加载指令向所述读写控制器发送加载请求信号,所述第二加载指令指示FPGA芯片加载存储器中的逻辑;
所述读写控制器还用于接收加载请求信号,并响应所述加载请求信号向所述FPGA芯片返回第二加载信号,所述第二加载信号触发FPGA加载逻辑;
所述FPGA芯片根据所述第二加载信号,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
11.如权利要求10所述的设备,其特征在于,所述第二逻辑加载成功后,
所述FPGA芯片还用于向CPU发送加载完成信号,并在所述CPU枚举成功后,通过所述FPGA芯片与CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑。
12. 如权利要求10 所述的设备,当所述第一存储器设置了写保护时,其特征在于,
所述读写控制器还用于接收第一写数据指令,所述第一写数据指令指示有数据要写入所述第一存储器,根据所述第一写数据指令向所述多路复用器发送第三通道切换指令并向所述第一存储器发送关闭写保护的指令;
所述MUX还用于根据所述第三通道切换指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道;
所述第一存储器还用于根据所述关闭写保护的指令,关闭写保护。
13.一种计算机系统,所述计算机系统包括中央处理单元CPU、主板管理控制器BMC和现场可编程门阵列FPGA设备,所述FPGA设备包括FGPA芯片、第一存储器、第二存储器,其中,所述第一存储器存储有第一逻辑,所述第二存储器中存储有第二逻辑,其特征在于:
所述CPU用于在枚举所述CPU与所述FPGA设备之间的PCIe通道失败后,向所述BMC发送逃生指令,所述逃生指令在所述BMC接收到枚举失败的消息后发送,用于指示加载所述第一存储器中的逻辑,所述枚举为所述第二逻辑加载完成后,CPU对所述FPGA芯片与所述CPU之间的PCIe通道的枚举;
所述BMC用于根据所述逃生指令向所述FPGA设备发送第一加载指令,所述第一加载指令用于指示将所述第一逻辑加载到所述FPGA芯片;
所述FPGA设备用于接收第一加载指令,根据所述第一加载指令断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并通过所述数据通道将所述第一逻辑加载到所述FPGA芯片。
14.如权利要求13所述的计算机系统,其特征在于,
所述FPGA设备还用于在加载完所述第一逻辑后,向所述CPU发送第一加载完成信号;
所述CPU还用于接收到所述第一加载完成信号之后,枚举所述CPU与所述FPGA设备之间的PCIe通道,并在枚举成功后向所述BMC发送恢复原连接的指示;
所述BMC还用于根据所述恢复原连接的指示向所述FPGA设备发送重置指示;
所述FPGA设备还用于根据所述重置指示断开所述FPGA芯片与所述第一存储器之间的数据通道,连接所述FPGA与所述第二存储器之间的数据通道。
15.如权利要求14所述的计算机系统,其特征在于,
所述BMC还用于从所述FPGA设备接收重置成功响应,并向所述CPU发送确认信号以确认所述数据通道已切换好;
所述CPU还用于根据所述确认信号向所述FPGA设备发送第二加载指令,指示所述FPGA设备加载存储器中的逻辑;
所述FPGA设备还用于在接收到所述第二加载指令之后,通过所述FPGA与所述第二存储器之间的数据通道,将所述第二逻辑加载到所述FPGA芯片上。
16.如权利要求15所述的计算机系统,其特征在于,
所述FPGA设备还用于在第二逻辑加载完成后,向所述CPU发送第二加载完成信号,并在所述枚举成功后,通过与所述CPU的之间的PCIe通道加载非PCIe静态逻辑以及动态逻辑;
所述CPU还用于在接收到所述第二加载完成信号后,枚举所述FPGA设备与所述CPU之间的PCIe通道。
17.如权利要求15或16所述的计算机系统,其特征在于,
所述BMC还用于根据接收到的第三加载完成信号,向所述FPGA设备发送第一写数据指令以指示有数据要写入所述第一存储器,并根据从所述FPGA设备接收到的确认信号向CPU发送第二写数据指令;
所述CPU还用于在所述FPGA设备加载所述第二逻辑并枚举成功后,向所述BMC发送所述第三加载完成信号,并根据从BMC接收到的所述第二写数据指令,向所述第一存储器写入所述第二逻辑;
所述FPGA设备还用于根据所述第一写数据指令,断开所述FPGA芯片与所述第二存储器之间的数据通道,连接所述FPGA芯片与所述第一存储器之间的数据通道,并在切换完成后向所述BMC发送确认信号。
18.如权利要求17所述的计算机系统,其特征在于,当所述第一存储器设置了写保护时,
所述BMC还用于根据所述第三加载完成信号,向所述FPGA设备发送写保护关闭指令;
所述FPGA设备还用于根据所述写保护关闭指令,关闭所述第一存储器的写保护,并且在切换完成且写保护关闭后向所述BMC发送所述确认信号。
CN202011210974.4A 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备 Active CN112486585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011210974.4A CN112486585B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201780075589.3A CN110073333B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备
PCT/CN2017/109359 WO2019084916A1 (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备
CN202011210974.4A CN112486585B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201780075589.3A Division CN110073333B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备

Publications (2)

Publication Number Publication Date
CN112486585A CN112486585A (zh) 2021-03-12
CN112486585B true CN112486585B (zh) 2024-01-02

Family

ID=66331238

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780075589.3A Active CN110073333B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备
CN202011210974.4A Active CN112486585B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201780075589.3A Active CN110073333B (zh) 2017-11-03 2017-11-03 恢复fpga芯片中的逻辑的方法、系统和fpga设备

Country Status (2)

Country Link
CN (2) CN110073333B (zh)
WO (1) WO2019084916A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515773A (zh) * 2019-08-27 2019-11-29 北京中科晶上科技股份有限公司 配置文件的更新方法及装置、系统
CN110557693A (zh) * 2019-09-26 2019-12-10 上海欣诺通信技术股份有限公司 光网络协议分析仪
CN111142013B (zh) * 2019-12-31 2021-12-07 无锡市同飞科技有限公司 基于max7000系列cpld逻辑还原方法
WO2021179297A1 (en) 2020-03-13 2021-09-16 Telefonaktiebolaget Lm Ericsson (Publ) Apparatus and method for implementing user plane function
CN111538695A (zh) * 2020-04-22 2020-08-14 上海御渡半导体科技有限公司 一种基于fpga实现的pcie与spi转换适配器及方法
CN112306536B (zh) * 2020-11-25 2023-09-29 山东云海国创云计算装备产业创新中心有限公司 一种主板及其芯片以及芯片升级方法
CN112580069B (zh) * 2020-12-05 2023-04-07 西安翔腾微电子科技有限公司 一种主机在线加载配置表权限获取的方法
CN112506839B (zh) * 2020-12-07 2023-02-03 天津津航计算技术研究所 一种一对多spi总线切换方法及装置
CN112925569A (zh) * 2021-02-24 2021-06-08 深圳市信锐网科技术有限公司 一种固件数据处理方法、装置、设备及存储介质
CN113657061B (zh) * 2021-08-19 2023-08-18 无锡中微亿芯有限公司 可实现不同配置应用过程间数据传递的fpga
CN114115955B (zh) * 2021-10-19 2024-04-12 苏州浪潮智能科技有限公司 服务器资源盒子fpga固件升级方法、系统、终端及存储介质
CN114201784A (zh) * 2021-12-09 2022-03-18 青岛海信宽带多媒体技术有限公司 一种光模块

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529938A (zh) * 2001-06-20 2004-09-15 艾利森电话股份有限公司 通过数据通信网使现场可编程门阵列升级的终端和方法
CN1987787A (zh) * 2006-12-06 2007-06-27 华为技术有限公司 一种在线升级逻辑器件的方法和系统
CN102308281A (zh) * 2011-07-21 2012-01-04 华为技术有限公司 对芯片进行动态升级的方法、系统及基板管理控制器
CN103617056A (zh) * 2013-11-25 2014-03-05 广东威创视讯科技股份有限公司 Fpga逻辑代码的在线升级方法和装置
CN104166566A (zh) * 2014-08-12 2014-11-26 福建星网锐捷网络有限公司 一种fpga配置文件升级方法及系统
CN105119768A (zh) * 2015-06-26 2015-12-02 华为技术有限公司 一种现场可编程门阵列fpga及数据存储方法
CN105468390A (zh) * 2014-09-05 2016-04-06 中兴通讯股份有限公司 Boot在线升级装置及方法
WO2017013799A1 (ja) * 2015-07-23 2017-01-26 株式会社日立製作所 計算機及び計算機の制御方法
CN106406936A (zh) * 2016-08-31 2017-02-15 中国船舶重工集团公司第七〇二研究所 一种fpga程序多版本管理装置及方法
CN106445613A (zh) * 2016-10-11 2017-02-22 北京北方烽火科技有限公司 一种代码升级方法及系统
CN106843983A (zh) * 2017-02-09 2017-06-13 深圳市风云实业有限公司 远程升级现场可编程门阵列的系统及方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050093572A1 (en) * 2003-11-03 2005-05-05 Macronix International Co., Ltd. In-circuit configuration architecture with configuration on initialization function for embedded configurable logic array
US7353491B2 (en) * 2004-05-28 2008-04-01 Peter Pius Gutberlet Optimization of memory accesses in a circuit design
CN102033767B (zh) * 2010-12-08 2015-08-12 中兴通讯股份有限公司 一种单板及单板在线升级的方法
CN102360302B (zh) * 2011-10-13 2014-01-22 福建星网锐捷网络有限公司 一种fpga配置文件在线升级方法及装置
CN103530164A (zh) * 2013-10-30 2014-01-22 广东威创视讯科技股份有限公司 一种fpga配置文件远程更新的方法及装置
CN103605542A (zh) * 2013-11-18 2014-02-26 曙光信息产业(北京)有限公司 Fpga配置文件的在线升级装置
US9177634B1 (en) * 2014-02-04 2015-11-03 Xilinx, Inc. Two gate pitch FPGA memory cell
CN105468387A (zh) * 2014-09-03 2016-04-06 华为技术有限公司 升级处理方法、装置和系统
CN106293786A (zh) * 2015-05-25 2017-01-04 特变电工新疆新能源股份有限公司 一种fpga配置文件更新方法及设备

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1529938A (zh) * 2001-06-20 2004-09-15 艾利森电话股份有限公司 通过数据通信网使现场可编程门阵列升级的终端和方法
CN1987787A (zh) * 2006-12-06 2007-06-27 华为技术有限公司 一种在线升级逻辑器件的方法和系统
CN102308281A (zh) * 2011-07-21 2012-01-04 华为技术有限公司 对芯片进行动态升级的方法、系统及基板管理控制器
CN103617056A (zh) * 2013-11-25 2014-03-05 广东威创视讯科技股份有限公司 Fpga逻辑代码的在线升级方法和装置
CN104166566A (zh) * 2014-08-12 2014-11-26 福建星网锐捷网络有限公司 一种fpga配置文件升级方法及系统
CN105468390A (zh) * 2014-09-05 2016-04-06 中兴通讯股份有限公司 Boot在线升级装置及方法
CN105119768A (zh) * 2015-06-26 2015-12-02 华为技术有限公司 一种现场可编程门阵列fpga及数据存储方法
WO2017013799A1 (ja) * 2015-07-23 2017-01-26 株式会社日立製作所 計算機及び計算機の制御方法
CN106406936A (zh) * 2016-08-31 2017-02-15 中国船舶重工集团公司第七〇二研究所 一种fpga程序多版本管理装置及方法
CN106445613A (zh) * 2016-10-11 2017-02-22 北京北方烽火科技有限公司 一种代码升级方法及系统
CN106843983A (zh) * 2017-02-09 2017-06-13 深圳市风云实业有限公司 远程升级现场可编程门阵列的系统及方法

Also Published As

Publication number Publication date
CN110073333B (zh) 2020-11-17
CN112486585A (zh) 2021-03-12
WO2019084916A1 (zh) 2019-05-09
CN110073333A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
CN112486585B (zh) 恢复fpga芯片中的逻辑的方法、系统和fpga设备
US9619270B2 (en) Remote-direct-memory-access-based virtual machine live migration
JP6140303B2 (ja) 仮想マシンのライブマイグレーション方法、仮想マシンのメモリデータ処理方法、サーバ及び仮想マシンシステム
US8521929B2 (en) Virtual serial port management system and method
US9678682B2 (en) Backup storage of vital debug information
US10725674B2 (en) Providing service address space for diagnostics collection
US10068068B2 (en) Trusted timer service
KR20120052406A (ko) 펌웨어 이미지 갱신 및 관리
US9886408B2 (en) Data access protection for computer systems
CN114879828A (zh) 具有持久性存储器存储装置的固件接口
CN114741233A (zh) 快速启动方法
US11137995B2 (en) Updating firmware of a microcontroller
US10203973B2 (en) High availability service virtual machine in virtualization environment
CN103678163A (zh) 数据流的切换方法、装置及系统
CN109154895A (zh) 上下文数据控制
US10761892B2 (en) Method and electronic device for executing data reading/writing in volume migration
CN113535215B (zh) 一种虚拟机热升级方法、装置、设备以及存储介质
CN108270832B (zh) 一种故障重放方法和装置
WO2022022442A1 (zh) 数据处理方法、装置、智能网卡和服务器
US10614231B1 (en) Integrated out-of-band security for high security embedded systems
CN114115703A (zh) 裸金属服务器在线迁移方法以及系统
CN116802635A (zh) 电子装置bios更新
CN113419884B (zh) 防止bmc镜像文件损坏的方法、装置、终端及存储介质
CN112988638B (zh) 一种键盘接口复用方法和电子设备
US20160364144A1 (en) System and method for optimization of operating system restore

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20211229

Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province

Applicant after: xFusion Digital Technologies Co., Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd.

GR01 Patent grant
GR01 Patent grant