掌桥专利:专业的专利平台
掌桥专利
首页

一种FPGA裸金属服务器的实现方法及系统

文献发布时间:2024-04-18 19:53:33


一种FPGA裸金属服务器的实现方法及系统

技术领域

本发明涉及支持FPGA异构加速的云计算技术领域与数据中心体系架构技术领域,并特别涉及一种。

背景技术

FPGA(FieldProgrammableGateArray)是一种专用硬件可编程芯片。用户可面向应用需求,自主设计专用的硬件逻辑架构并编程(配置)部署到FPGA芯片中,以便获得更好的应用处理性能。同时,因使用比传统冯·诺伊曼计算机体系结构更加专用且精简的硬件逻辑架构,在FPGA实现的应用专用加速器可确保较低的能耗开销,提升应用的能效比,可灵活高效地突破现有应用处理所面临的“性能墙”和“能耗墙”。

微软于2014年首次将FPGA在内部数据中心部署使用,加速其搜索引擎Web服务,引发众多互联网公司开始在数据中心内部署FPGA来加速互联网应用。随着数据中心内FPGA的部署规模不断增长,将FPGA作为一类可共享使用的公有云计算资源,供租户按需租用成为可能。亚马逊AWS于2016年首次推出可租用的FPGA计算实例,供云用户按需定制应用加速;国内的阿里云、腾讯云、华为云等头部企业纷纷跟进,推出FPGA公有云基础设施及租用服务。

图1为现有技术中基于PCIe的FPGA云环境架构示意图。现有主流公有云环境中通常以挂接在物理或虚拟PCIExpress(PCIe)标准总线接口上的I/O设备形式对云FPGA资源进行抽象描述。无论是公有云的资源管理平台,还是公有云租户,都需要在x86通用云主机内,通过物理或虚拟的PCIExpress总线接口,部署、访问和控制云FPGA资源。

现有主流公有云环境中,仍按I/O设备的方式对云FPGA资源进行抽象描述,从而造成云FPGA资源管理和使用的方式存在如下问题:

1)云FPGA硬件板卡作为x86服务器(包括物理机或虚拟机)等通用资源的一种附属资源形式进行管理。云FPGA板卡的工作状态与运行状态与所在的x86服务器深度绑定,从而造成云资源管理平台无法直接获取各FPGA板卡的设备状态信息,需在云平台资源管理框架中额外定制设计专用的FPGA设备管理组件,降低了FPGA资源管理的技术通用性,增加云FPGA资源管理系统的研发成本。

2)租户在使用过程中,需要申请装配有云FPGA硬件资源的通用x86云主机,并在此x86云主机中通过标准PCI-Express(PCIe)总线,部署、控制和访问云FPGA硬件资源。租户无法按通用云计算资源访问方式直接且灵活地访问异构云FPGA加速资源。

云FPGA资源的管理和使用方式具体包括:

1)云资源管理(管理平面):借助通用x86服务器物理机的PCIExpress(PCIe)发现其所有可见的云FPGA板卡,以外部I/O设备的形式进行管理;在使用过程中,通过x86服务器物理机的虚拟化技术(如PCIePassthrough),将若干云FPGA硬件板卡与某一个云租户虚拟机绑定。这样云租户就可以在虚拟机中访问FPGA可编程逻辑资源。

2)FPGA硬件编程配置(管理平面):将FPGA硬件逻辑资源划分为静态区和动态区。静态区包含PCIe接口在内的内存与外设接口,属于固定逻辑,在租户使用过程中不会发生变化;动态区用于部署用户的应用加速逻辑,可根据云租户的需要进行动态调整。在进行云FPGA硬件编程配置时,云租户向云FPGA管理员申请并传输动态区的配置文件bitstream。云管理员通过FPGA厂商提供的基于PCIe的FPGA配置接口(如XilinxVirtualCable,即XVC),对云FPGA的动态区进行动态可重构编程。

3)租户加速应用(数据平面):云租户在x86虚拟机中,通过PCIe虚拟化接口和定制的FPGA驱动程序,将待处理的原始数据传输到云FPGA板卡上的内存中;同时通过PCIe虚拟化接口访问FPGA提供的内存映射I/O寄存器,启动FPGA动态区中的应用加速器,开始对原始数据进行处理。在应用处理完成后,FPGA硬件逻辑通过中断或I/O寄存器通知的方式,通知x86虚拟机上运行的租户应用程序将计算结果从云FPGA板卡上的内存中读出计算结果。

发明内容

本发明的目的是解决上述现有技术中云FPGA资源的抽象描述方法仅从I/O外部设备的角度考虑,导致抽象描述层次较低,限制云FPGA的资源管理和租户使用方式灵活性的问题,提出一种将公有云中的FPGA抽象描述为裸金属服务器资源的方法,使得云FPGA资源与x86云主机具有类似使用方式的通用云计算资源的方法,1)无需定制开发新的云FPGA资源管理组件,简化云FPGA资源的管理方法,降低资源管理的复杂度;2)使云租户按需直接申请、部署和使用FPGA主机,无需配套申请x86等通用计算资源,是提升云FPGA管理和使用灵活性,并降低对通用x86计算资源依赖的一种可行方式。

具体来说,本发明提出了一种FPGA裸金属服务器的实现方法,其中包括:

步骤1、构建由基板管理单元和多个与其相连的裸金属服务器构成的云服务系统,该裸金属服务器包括FPGA板卡;

步骤2、为该基板管理单元构建用于启动该FPGA板卡的设备驱动层,将位于该基板管理单元操作系统内核态的设备对象暴露到用户接口,并封装为驻留在该操作系统后台运行的服务程序守护进程,以随时接收并处理上层管理软件的资源管控请求;

步骤3、利用RESTful接口,将该裸金属服务器以网络URL地址的形式呈现给该基板管理单元上层的资源管理软件,并将该FPGA板卡的操作封装为该URL地址下的具体属性;

步骤4、将待FPGA逻辑配置的镜像文件上传到镜像存储系统,并通过该URL地址对该裸金属服务器完成上电,上电后的该裸金属服务器从该镜像存储系统读取并执行该镜像文件以完成FPGA逻辑配置,客户端通过数据网络将计算任务及其所需数据传入该裸金属服务器,并通过网络启动该裸金属服务器上的计算部件开始运行,得到执行结果。

所述的FPGA裸金属服务器的实现方法,其中该FPGA板卡为具有标准PCIe接口的FPGA板卡,该步骤4包括:

该镜像文件为bitstream镜像文件,通过修改该基板管理单元上运行的管理软件,通过该URL地址对该裸金属服务器完成上电,该基板管理单元软件将该bitstream镜像文件通过PCIe设备驱动程序,配置到对应的该裸金属服务器动态区中,并将该裸金属服务器的FPGA动态区与静态区之间的管理寄存器设置为工作状态,使该裸金属服务器的FPGA板卡进入工作状态;

当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现方法,其中该FPGA板卡为自定义接口设计的私有SoC-FPGA板卡,该步骤4包括:

该镜像文件为bitstream镜像文件,客户端将该bitstream镜像文件作为装机initrd上传到云计算管理平台的镜像存储系统中;

通过修改该基板管理单元上运行的管理软件,为该基板管理单元管理的每一台裸金属服务器提供启动模式设置的URL;

通过URL提供的POST方法,将启动模式进行设置为NETWORK网络启动;当该基板管理单元管理的该裸金属服务器对应的启动模式URL被设置为“NETWORK”字符串,该基板管理单元将修改对应该裸金属服务器节点的BIOS EEPROM;

客户端对该裸金属服务器进行上电操作,该基板管理单元通过GPIO设备驱动程序,直接控制该裸金属服务器的电源管理接口,使该裸金属服务器上电;上电后的该裸金属服务器按照BIOSEEPROM设置启动,自动抓取并运行该装机initrd;

根据装机initrd,将要安装的该任务文件直接写入该裸金属服务器上的存储系统;写入完成后,将启动模式修改为本地,并重启该裸金属服务器;

裸金属服务器重启后,从本地裸金属服务器的存储系统中自动加载该任务文件;当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现方法,其中该计算任务为FPGA可支持的加速应用,包括深度神经网络、数据加解密和数据压缩/解压缩任务。

本发明还提出了一种FPGA裸金属服务器的实现系统,其中包括:

初始模块,用于构建由基板管理单元和多个与其相连的裸金属服务器构成的云服务系统,该裸金属服务器包括FPGA板卡;

启动模块,用于为该基板管理单元构建用于启动该FPGA板卡的设备驱动层,将位于该基板管理单元操作系统内核态的设备对象暴露到用户接口,并封装为驻留在该操作系统后台运行的服务程序守护进程,以随时接收并处理上层管理软件的资源管控请求;

配置模块,用于利用RESTful接口,将该裸金属服务器以网络URL地址的形式呈现给该基板管理单元上层的资源管理软件,并将该FPGA板卡的操作封装为该URL地址下的具体属性;

运行模块,用于将待FPGA逻辑配置的镜像文件上传到镜像存储系统,并通过该URL地址对该裸金属服务器完成上电,上电后的该裸金属服务器从该镜像存储系统读取并执行该镜像文件以完成FPGA逻辑配置,客户端通过数据网络将计算任务及其所需数据传入该裸金属服务器,并通过网络启动该裸金属服务器上的计算部件开始运行,得到执行结果。

所述的FPGA裸金属服务器的实现系统,其中该FPGA板卡为具有标准PCIe接口的FPGA板卡,该运行模块包括:

该镜像文件为bitstream镜像文件,通过修改该基板管理单元上运行的管理软件,通过该URL地址对该裸金属服务器完成上电,该基板管理单元软件将该bitstream镜像文件通过PCIe设备驱动程序,配置到对应的该裸金属服务器动态区中,并将该裸金属服务器的FPGA动态区与静态区之间的管理寄存器设置为工作状态,使该裸金属服务器的FPGA板卡进入工作状态;

当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现系统,其中该FPGA板卡为自定义接口设计的私有SoC-FPGA板卡,该运行模块包括:

该镜像文件为bitstream镜像文件,客户端将该bitstream镜像文件作为装机initrd上传到云计算管理平台的镜像存储系统中;

通过修改该基板管理单元上运行的管理软件,为该基板管理单元管理的每一台裸金属服务器提供启动模式设置的URL;

通过URL提供的POST方法,将启动模式进行设置为NETWORK网络启动;当该基板管理单元管理的该裸金属服务器对应的启动模式URL被设置为“NETWORK”字符串,该基板管理单元将修改对应该裸金属服务器节点的BIOS EEPROM;

客户端对该裸金属服务器进行上电操作,该基板管理单元通过GPIO设备驱动程序,直接控制该裸金属服务器的电源管理接口,使该裸金属服务器上电;上电后的该裸金属服务器按照BIOSEEPROM设置启动,自动抓取并运行该装机initrd;

根据装机initrd,将要安装的该任务文件直接写入该裸金属服务器上的存储系统;写入完成后,将启动模式修改为本地,并重启该裸金属服务器;

裸金属服务器重启后,从本地裸金属服务器的存储系统中自动加载该任务文件;当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现系统,其中该计算任务为FPGA可支持的加速应用,包括深度神经网络、数据加解密和数据压缩/解压缩任务。

本发明还提出了一种存储介质,用于存储执行所述任意一种FPGA裸金属服务器的实现方法的程序。

本发明还提出了一种客户端,用于所述任意一种FPGA裸金属服务器的实现系统。

由以上方案可知,本发明的优点在于:

为解决现有云FPGA资源仅能作为I/O外部设备附属资源的问题,本发明提出一种提升云FPGA抽象描述层次的方法,将异构FPGA资源转换为与x86通用计算资源具有相同标准化接口的裸金属云服务器资源。通过提高异构计算资源的抽象层次可使:

1)FPGA异构计算资源与x86通用计算资源具有相同的接口视图,使用现有的通用x86裸金属服务器管理接口即可对异构FPGA资源进行管理,无需定制开发新的云FPGA资源管理组件;

2)FPGA异构计算资源可作为独立的云主机供云租户直接申请使用,可在不依赖x86通用计算资源的情况下向租户提供服务;并通过简单的资源管理接口功能扩展,即可允许用户部署编程。

附图说明

图1为现有技术中基于PCIe的FPGA云环境架构示意图;

图2为现有技术云服务的抽象框图;

图3为本发明云服务的抽象框图

图4为机框级抽象框图;

图5为BMC上设计的软件栈架构图。

具体实施方式

现有技术中云FPGA的资源管理和租户使用方式欠缺灵活性,无法与通用云计算资源(如x86服务器)的管理和使用方式兼容。产生该问题的核心是由于现有云FPGA资源的抽象描述方法仅从I/O外部设备的角度考虑,将FPGA作为通用云服务器的附属计算资源(SecondaryResources),从而限制了云FPGA资源像x86云服务器一样作为公有云计算可共享使用的一等(First Class)计算资源。现阶段仅能将云FPGA作为x86通用云服务器的附属计算资源的原因是仍然沿用FPGA在非云计算环境中的传统使用方式,只能通过与x86服务器或PC机连接,完成FPGA的编程部署和应用处理,并未针对云和数据中心这一新的应用场景提出FPGA资源新的抽象方式。

发明人在设计与构建自研FPGA云计算平台并定制自研FPGA云服务器体系结构时发现,解决现有云FPGA资源仅能作为I/O外部设备附属资源的关键是提升云FPGA的抽象层次,将FPGA抽象描述为裸金属云服务器资源。传统FPGA资源在原有模式下并不能被抽象为一类独立的机器(无论是虚拟机还是裸金属服务器),只是附属在机器上的I/O设备。本发明想法是把FPGA直接作为一种云上的机器,即裸金属服务器(云上的物理机服务器),进行资源管理和使用。FPGA裸金属服务器可降低管理开销,使云资源管理员使用和通用计算资源相同的接口进行管理,无需开发额外的FPGA资源管理软件。

通过提高异构计算资源的抽象层次可使:

1)FPGA异构计算资源与x86通用计算资源具有相同的接口视图,使用现有的通用x86裸金属服务器管理接口即可对异构FPGA资源进行管理,无需定制开发新的云FPGA资源管理组件;

2)FPGA异构计算资源可作为独立的云主机供云租户直接申请使用,可在不依赖x86通用计算资源的情况下向租户提供服务;并通过简单的资源管理接口功能扩展,即可允许用户部署编程。

具体开说本申请包括如下关键技术点:

关键点1:对云FPGA资源进行裸金属云服务器抽象描述的方法,可通过主机(System)和机框(Chassis)两个层次的抽象方式,实现对云FPGA资源进行远程管理和状态监控;

关键点2:对FPGA裸金属服务器进行远程管理(如云FPGA板卡上下电操作、硬件编程、操作系统安装等)的流程方法,为用户远程部署和使用云FPGA提供标准访问接口;

为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。

1.FPGA裸金属云服务器抽象方法

首先,本发明提出将云FPGA的管理平面和数据平面分离的方法,打破现有云FPGA资源的管理平面和数据平面全部紧耦合在PCIe物理接口上的情况,缓解云资源管理和应用加速过程对x86通用计算资源的绝对依赖。该方法通过物理上完全隔离使用的控制平面与数据平面硬件接口,将云FPGA资源管理与数据交互解耦到不同的物理接口,从而为实现资源管理和数据交互平面的解耦提供物理支持。

本发明适合于FPGA公有云环境(具有标准PCIe接口的FPGA板卡)、自定义接口设计的FPGA云等云环境,具体实施例包括:

针对现有FPGA公有云环境,可利用标准PCIe总线(及配套的I2C总线)接口作为云FPGA的控制平面物理接口,仅处理FPGA资源管理、配置管理和状态监控相关操作。同时,现有云FPGA往往具有高速以太网接口,并通过网络交换机形成独立于PCIe的辅助互连。因此,本发明使用标准以太网互连接口作为数据平面的物理接口,从而将数据平面物理接口与控制平面物理接口分离。

对于使用自定义接口设计的FPGA云服务器(如IBMcloudFPGA和已授权专利ZL2020100190139),可使用自定义接口(包括电源管理接口、I2C总线等接口连线)作为云FPGA的控制平面物理接口。同时,可使用高速以太网通路(如IBMcloudFPGA)或SoC-FPGA紧耦合芯片(如XilinxZynq系列FPGA芯片)的片上互连接口(如专利ZL2020100190139)作为数据平面接口。

在此基础上,本发明提出将控制平面物理接口使用的通用处理器抽象为基板管理单元(BaseboardManagementController,BMC),可通过部署通用或定制的BMC基板管理软件(如开源的OpenBMC基板管理软件)。具体的实现方式包括:

针对现有FPGA公有云环境,可使用通用x86处理器作为BMC,管理部署在同一个物理服务器机框内的云FPGA板卡,如图2所示,本发明把x86处理器抽象为基板管理单元BMC,对下通过PCIe实现对不同FPGA板卡的状态监控与资源管理,对上(云资源管理框架)提供RESTfulAPI接口。

对于使用自定义接口设计的FPGA云服务器(如已授权专利ZL2020100190139),可使用自定义接口控制底板上使用的SoC-FPGA紧耦合芯片作为BMC,管理FPGA云服务器内的所有云FPGA板卡节点。

其次,基于上述分离的控制平面和BMC抽象,本发明进一步提出在BMC中运行的基板管理软件中,对BMC所管理的云FPGA物理板卡进行云FPGA裸金属服务器抽象描述的方法,具体包括:

主机(Systems)级抽象:描述独立运行的各云FPGA裸金属服务器主机的基本属性,包括处理单元情况、内存情况、电源状态/操作、启动方式等。针对不同类型的云FPGA芯片及板卡类型,具体抽象方式如下:

1.针对现有FPGA公有云环境下使用的单纯FPGA芯片及板卡,可利用BMC可见的不同PCIe总线设备号,对云FPGA裸金属服务器进行区分。

单纯FPGA芯片及板卡进行裸金属服务器抽象的难点在于通过使用电源状态来表示FPGA硬件资源的编程配置情况。对裸金属服务器主机进行上电操作表示通过BMC主机的PCIe接口对FPGA动态区进行动态可重构编程,并使能FPGA动态区与静态区之间的管理接口(如XilinxPartialReconfiguration Decoupler)。对裸金属服务器主机进行下电操作表示通过BMC主机的PCIe接口关闭FPGA动态区与静态区之间的管理接口,从而使动态区进入复位状态,不再进行应用加速处理。

2.针对使用自定义接口设计的FPGA云服务器(如已授权专利ZL2020100190139),BMC可利用自定义物理接口对云服务器中的SoC-FPGA板卡节点进行区分和管理。其中,基于自定义管理接口,可通过BMC基板管理软件中的GPIO控制软件,实现对SoC-FPGA裸金属服务器的上下电管理,如图3所示。

对SoC-FPGA板卡进行裸金属服务器抽象的难点也在于如何利用BMC基板管理软件进行FPGA动态区的动态可重构配置。本发明通过BMC基板管理软件的EEPROM读写驱动及应用接口,可将SoC-FPGA裸金属服务器的启动方式配置为网络启动。启动过程中,使SoC-FPGA上运行的装机代理操作系统镜像配合OpenStackIronic资源管理框架提供的装机流程,进行FPGA动态区的部分可重构配置。在用户使用完毕后,可直接通过BMC上下电管理接口将SoC-FPGA下电,无效当前FPGA动态区配置。FPGA动态区的动态可重构配置具体过程包括:

1.云资源管理框架(如OpenStack)可通过BMC基板管理软件提供的访问接口,远程控制一个SoC-FPGA板卡(即一台裸金属服务器节点)。

2.云资源管理框架通过上述访问接口,将SoC-FPGA板卡启动状态设置为网络启动。

3.SoC-FPGA板卡启动后,SoC部分从网络上加载装机代理操作系统镜像并运行。运行后,与云资源管理框架通过网络进行通信。

4.云资源管理框架向装机操作系统传输动态区bitstream文件。

5.装机操作系统接收到完整的bitstream文件后,通过SoC-FPGA的配置接口(如XilinxMCAP接口)驱动程序,将动态区bitstream写入FPGA动态区,完整可重构配置。

机框(Chassis)级抽象:如图4所示,描述云FPGA裸金属服务器硬件板卡的工作状态,包括服务器的电压、电流、功率、电源管理、温度、风扇转速等指标值,并管理监控这些工作状态的传感器硬件或电路板级模块。对现有FPGA公有云或自定义FPGA云服务器,BMC都可以通过I2C软硬件访问接口,管控传感器或硬件电路模块。

2.FPGA裸金属服务器云化管理流程。为实现FPGA裸金属服务器资源云化管理,需要在本发明抽象的基板管理单元BMC上设计如图5所示的软件栈架构,具体包括:

Linux设备驱动层:运行在基板管理单元BMC上的软件。BMC本身并不知道它在对一个FPGA板卡节点进行管理,因此不感知FPGA的存在。Linux设备驱动层用于对云FPGA硬件板卡启动运行的关键硬件部件进行管理,具体包括FPGA板卡的电源管理模块(PCIe设备驱动或GPIO设备驱动)、FPGA板卡的温度/电气传感器等硬件资源(I2C设备驱动)、FPGA启动BIOS存储介质(I2CEEPROM设备驱动)、FPGA硬件逻辑编程配置接口(GPIO设备驱动)等。

用户态设备接口层:通过Linux的sysfs文件系统或专用的设备访问库函数(如libgpiod),将位于BMC操作系统内核态的设备对象暴露到用户接口,供上层应用程序使用。

服务程序层:将用户态设备接口层暴露的外设访问接口,进一步封装为驻留在BMC操作系统后台运行的服务程序守护进程,随时接收并处理上层管理软件的资源管控请求。

裸金属服务器管理接口层:利用基板管理单元BMC上运行的管理软件,向云资源管理框架(如OpenStack)提供的管理控制RESTful接口,将裸金属服务器以网络URL地址的形式(如https://IP地址/Systems/裸金属服务器ID编号)呈现给BMC上层的资源管理软件;并将FPGA板卡上下电等关键操作封装为URL地址下面的某个具体属性(如https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset),通过RESTful接口提供的POST方法修改属性值,实现对裸金属服务器的管控。其中POST为RESTful接口的一种API,用于更新资源属性或新建资源。

在此基础上,结合OpenStackIronic裸金属服务器部署接口,针对不同类型的FPGA云,实现特定的软硬件部署安装接口及流程:

针对现有FPGA公有云环境下使用的单纯FPGA芯片及板卡,裸金属服务器的硬件编程配置启动流程如下:

1.用户通过OpenStack管理界面,将待配置的bitstream镜像文件上传到OpenStack的镜像存储系统中。bitstream文件负责进行FPGA逻辑配置。具体计算任务可通过数据网络,由用户将计算任务所需的原始数据传入FPGA,并通过网络启动FPGA上的计算部件开始运行。可运行的计算任务包括各类加速应用,如深度神经网络、数据加解密、数据压缩/解压缩等FPGA可支持的加速应用。

2.修改BMC(x86服务器物理CPU)上运行的管理软件,为BMC管理的每一台FPGA裸金属服务器提供启动模式设置的URL(https://IP地址/Systems/裸金属服务器ID编号/Actions/BootSource)。

OpenStackIronic裸金属服务器管理框架可通过上述URL提供的POST方法,对启动模式进行设置,默认的设置值是“BIT”字符串。当BMC管理的某一台FPGA裸金属服务器对应的启动模式URL被设置为“BIT”字符串,BMC将主动向OpenStack镜像存储系统发起访问请求,将步骤1中预先上传的bitstream配置文件存储到BMC文件系统的固定路径下。

3.用户可通过OpenStackIronic裸金属服务器管理框架对步骤2中已修改启动模式的FPGA裸金属服务器进行上电操作(对https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset执行POST操作,写入字符串“On”)。此时BMC软件将获取步骤2中获取的bitstream文件通过PCIe设备驱动程序,配置到对应的FPGA裸金属服务器动态区中,并将FPGA动态区与静态区之间的管理寄存器设置为工作状态,使FPGA进入应用加速的正常工作状态。

4.当应用加速任务停止后,用户可通过OpenStackIronic裸金属服务器管理框架进行下电操作(对https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset执行POST操作,写入字符串“ForceOff”)。BMC接收到下电命令后,通过PCIe接口,将FPGA动态区与静态区之间的管理寄存器设置为关闭状态,从而使动态区复位,不再进行应用加速处理。

针对使用自定义接口设计的FPGA云服务器(如已授权专利ZL2020100190139),面向紧耦合SoC-FPGA芯片及板卡的裸金属服务器远程操作系统软件部署启动及FPGA硬件编程配置的流程如下:

1.用户通过OpenStack管理界面,将待部署的操作系统镜像文件上传到OpenStack的镜像存储系统中;同时设置好OpenStackIronic的网络装机服务镜像(装机initrd)。

2.修改定制云服务器主板上的BMC芯片上运行的管理软件,为BMC管理的每一台FPGA裸金属服务器提供启动模式设置的URL(https://IP地址/Systems/裸金属服务器ID编号/Actions/BootSource)。

OpenStackIronic裸金属服务器管理框架可通过上述URL提供的POST方法,将启动模式进行设置为“NETWORK”字符串(即网络启动)。当BMC管理的某一台FPGA裸金属服务器对应的启动模式URL被设置为“NETWORK”字符串,BMC将修改对应SoC-FPGA裸金属服务器节点的BIOSEEPROM。

3.用户可通过OpenStackIronic裸金属服务器管理框架控制器(Conductor)对步骤2中已修改启动方式的FPGA裸金属服务器进行上电操作(对https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset执行POST操作,写入字符串“On”)。此时BMC将通过GPIO设备驱动程序,直接控制SoC-FPGA裸金属服务器的电源管理接口,使SoC-FPGA裸金属服务器上电。上电后,SoC-FPGA裸金属服务器将按照步骤2中BIOSEEPROM设置的启动模式从网络启动,自动抓取并启动运行步骤1中已部署的装机initrd,启动后将自动连接OpenStackIronic控制器。

4.OpenStackIronic控制器直接控制SoC-FPGA裸金属服务器上运行的装机initrd,通过远程拷贝的方式,将要安装的操作系统镜像直接写入SoC-FPGA裸金属服务器上的存储系统中(如NVMeSSD硬盘)。写入完成后,用户通过OpenStackIronic控制器,将启动模式(https://IP地址/Systems/裸金属服务器ID编号/Actions/BootSource)修改为“LOCAL”,并重启裸金属服务器(对https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset执行POST操作,写入字符串“ForceReset”)。

5.裸金属服务器重启后,将自动加载步骤4中已部署安装到存储系统中的操作系统,并启动网络服务。租户可通过网络直接访问租用并部署好的裸金属服务器。

6.在租户使用期间,可在裸金属服务器SoC部分运行的操作系统内,动态配置紧耦合的FPGA硬件逻辑。

7.用户可通过OpenStackIronic裸金属服务器管理框架进行下电操作(对https://IP地址/Systems/裸金属服务器ID编号/Actions/ComputerSystem.Reset执行POST操作,写入字符串“ForceOff”)。BMC接收到下电命令后,将通过GPIO设备驱动程序,直接控制SoC-FPGA裸金属服务器的电源管理接口,使SoC-FPGA裸金属服务器下电。

以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。

本发明还提出了一种FPGA裸金属服务器的实现系统,其中包括:

初始模块,用于构建由基板管理单元和多个与其相连的裸金属服务器构成的云服务系统,该裸金属服务器包括FPGA板卡;

启动模块,用于为该基板管理单元构建用于启动该FPGA板卡的设备驱动层,将位于该基板管理单元操作系统内核态的设备对象暴露到用户接口,并封装为驻留在该操作系统后台运行的服务程序守护进程,以随时接收并处理上层管理软件的资源管控请求;

配置模块,用于利用RESTful接口,将该裸金属服务器以网络URL地址的形式呈现给该基板管理单元上层的资源管理软件,并将该FPGA板卡的操作封装为该URL地址下的具体属性;

运行模块,用于将待FPGA逻辑配置的镜像文件上传到镜像存储系统,并通过该URL地址对该裸金属服务器完成上电,上电后的该裸金属服务器从该镜像存储系统读取并执行该镜像文件以完成FPGA逻辑配置,客户端通过数据网络将计算任务及其所需数据传入该裸金属服务器,并通过网络启动该裸金属服务器上的计算部件开始运行,得到执行结果。

所述的FPGA裸金属服务器的实现系统,其中该FPGA板卡为具有标准PCIe接口的FPGA板卡,该运行模块包括:

该镜像文件为bitstream镜像文件,通过修改该基板管理单元上运行的管理软件,通过该URL地址对该裸金属服务器完成上电,该基板管理单元软件将该bitstream镜像文件通过PCIe设备驱动程序,配置到对应的该裸金属服务器动态区中,并将该裸金属服务器的FPGA动态区与静态区之间的管理寄存器设置为工作状态,使该裸金属服务器的FPGA板卡进入工作状态;

当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现系统,其中该FPGA板卡为自定义接口设计的私有SoC-FPGA板卡,该运行模块包括:

该镜像文件为bitstream镜像文件,客户端将该bitstream镜像文件作为装机initrd上传到云计算管理平台的镜像存储系统中;

通过修改该基板管理单元上运行的管理软件,为该基板管理单元管理的每一台裸金属服务器提供启动模式设置的URL;

通过URL提供的POST方法,将启动模式进行设置为NETWORK网络启动;当该基板管理单元管理的该裸金属服务器对应的启动模式URL被设置为“NETWORK”字符串,该基板管理单元将修改对应该裸金属服务器节点的BIOS EEPROM;

客户端对该裸金属服务器进行上电操作,该基板管理单元通过GPIO设备驱动程序,直接控制该裸金属服务器的电源管理接口,使该裸金属服务器上电;上电后的该裸金属服务器按照BIOSEEPROM设置启动,自动抓取并运行该装机initrd;

根据装机initrd,将要安装的该任务文件直接写入该裸金属服务器上的存储系统;写入完成后,将启动模式修改为本地,并重启该裸金属服务器;

裸金属服务器重启后,从本地裸金属服务器的存储系统中自动加载该任务文件;当任务执行完毕后,客户端通过该URL地址对该裸金属服务器完成下电。

所述的FPGA裸金属服务器的实现系统,其中该计算任务为FPGA可支持的加速应用,包括深度神经网络、数据加解密和数据压缩/解压缩任务。

本发明还提出了一种存储介质,用于存储执行所述任意一种FPGA裸金属服务器的实现方法的程序。

本发明还提出了一种客户端,用于所述任意一种FPGA裸金属服务器的实现系统。

相关技术
  • 一种基于智能网卡的裸金属服务器实现方法及系统
  • 一种裸金属服务器网络系统及其实现方法
技术分类

06120116336433