一种低功耗的FPGA部分可重构方法和装置与流程

文档序号:24527898发布日期:2021-04-02 10:05阅读:106来源:国知局
一种低功耗的FPGA部分可重构方法和装置与流程
本发明涉及可重构计算领域,并特别涉及一种低功耗的fpga部分可重构方法和装置。
背景技术
:计算机的系统结构对于其信息处理能力有着至关重要的影响。然而,很难存在一种对所有运算任务都是最优解的通用计算架构。例如,在机器学习、数据库、图像处理、通信和金融运算等场景领域,不同属性的计算任务有其相适应的计算架构,这往往需要设计专用的定制芯片架构以获取最佳性能。由于专用计算芯片的研发成本高、生产周期长,业界近年来一直在探索如何使用更为灵活的方案解决此问题。可重构计算的思想源于上世纪60年代,最初由ucla的geraldestrin提出。estrin团队的fixed-plus-variable系统被业界认为是可重构计算的原型机。在estrin最初的设想中,可重构计算包括一个作为中央控制单元的标准cpu,以及众多可重构的运算单元。这些可重构计算单元由中央cpu控制,在执行相应任务(如图像处理,模式识别,科学运算等等)时配置成对应的最优架构(即硬件编程)。然而受限于当时的电子技术水平,直到数十年后,这种设计思想才伴随以fpga为代表的可编程器件的发展得以真正实现。到2001年,虽然可重构计算使用的运算单元(fpga)时钟频率远低于同期的cpu,但是可重构计算的综合运算能力却可以超越cpu数倍,而功耗也远小于cpu。fpga(fieldprogrammablegatearrays,现场可编程门阵列)是基于通过可编程互连连接的可配置逻辑块矩阵的半导体器件。此类芯片在制造完成后,依旧可以被重新编程,从而满足用户所需的应用程序或功能要求。此特性使得fpga与专用集成电路(asic)区别开来,后者是为特定设计任务而定制生产的。目前主流的fpga主要基于sram技术工艺,开发者可以根据设计需求的变化,对其进行重新编程。pr(partialreconfiguration,部分可重构)允许开发人员动态地重构fpga的特定区域部分,而其余的fpga设计继续正常运行。这种方法在具有多个功能、并且各个功能模块可以时分复用的系统中非常有效。这些功能模块可以分时共享相同的fpga器件资源,并根据场景需求动态实时切换。很多fpga厂商已经可以提供较为完整的部分可重构解决方案。pr使实现更复杂、更加弹性灵活的fpga系统成为了可能。部分可重构的方案需要将fpga的逻辑资源划分为静态逻辑区和动态逻辑区两个区域。借助于部分可重构的技术框架,fpga系统可根据设计者的需要,对动态逻辑区域进行调整、划分,并在系统运行过程中实时切换动态区的逻辑模块,动态地调整系统自身的硬件架构,从而实现了可重构计算的构想。目前主流的云服务提供商借助部分可重构等相关技术,通过将其自研的静态逻辑区框架与整体的云平台框架进行有效整合,向外部用户开放fpga的动态逻辑区。在这种使用模式中,fpga部署于服务器端,作为加速设备对外提供服务;用户借助网络远程上传自己设计的逻辑模块,并在云服务器端的fpga设备中直接运行并进行相关测试。部分可重构的方案需要将fpga的逻辑资源划分为静态逻辑区和动态逻辑区两个区域,其中静态逻辑区将提供对外通信接口、板载ddr3/ddr4/hbm等存储器的控制器接口、动态重构控制cpu等必要模块,动态逻辑区则预留出各项逻辑资源向用户提供服务。静态逻辑区与动态逻辑区通过片内配置通道接口(例如xilinxfpga的icap/pcap等原语模块)连接。这些原语模块是部分可重构比特流由静态区向动态区进行配置的通道。在业界现有的fpga部分可重构方案中,静态区逻辑,尤其是静态区逻辑的控制cpu往往仅需要在动态区的部分可重构期间工作,而在其他时间往往处于闲置状态。考虑到fpga系统的绝大部分时间均工作在动态区稳定运行阶段而非部分可重构阶段,因此大部分时间,静态区cpu功耗可以认为是浪费的。此外,考虑到动态区逻辑所有可能的需求,静态区逻辑往往需要尽可能实现并提供所有的外部接口,包括fpga片外板载ddr的访问控制模块,高速以太网模块,pcie、srio、aurora等各类高速总线接口。以ddr4存储器控制模块接口为例,由于需要以高频率重复对dram单位进行刷新,因此一旦开启不得不维持在较高能耗的状态。持续工作于较高时钟频率下的静态逻辑区,同样也加重了设备散热的负担,长期过高的工作温度也必然影响fpga器件及其周边电子元件的稳定性与寿命。现有技术只考虑了动态区逻辑配置的性能,忽略了功耗平衡,因而未对静态逻辑区进行灵活调整。至目前为止,国内外相关研究机构和企业均没有提出完整的降低fpga部分可重构系统功耗的可行方案。综上所述,业界目前的fpga部分可重构系统的功耗设计,尤其是静态区功耗设计,仍存在改进空间。技术实现要素:发明人在进行fpga部分可重构设计的研究中,发现现有技术只考虑了动态区逻辑配置的性能,忽略了功耗平衡,因而未对静态逻辑区进行灵活调整。本发明的目的是解决现有技术中存在的fpga部分可重构无效功耗过多的问题。本发明基于静态区逻辑的裁剪及重构切换技术与动态时钟管理调控技术,设计了一种在不影响功能,不降低性能的前提下节省功耗的fpga部分可重构系统装置。具体来说本发明提供了一种低功耗的fpga部分可重构方法,其中包括:步骤1、根据预设的接口类别,裁剪对外接口逻辑的完整静态区框架,得到多个分别对应特定接口类别的静态区逻辑,并将所有该静态区逻辑以fpga静态区逻辑配置文件的形式放置于fpga片外用于上电启动配置的非易失闪存中;步骤2、根据用户动态重构指令中动态区逻辑特性,得到用户逻辑运行所需接口,并根据该用户逻辑运行所需接口所属的接口类别,选择该非易失闪存中包含有相应接口的fpga静态区逻辑配置文件,再根据该用户动态重构指令进行fpga片内动态区配置。所述的低功耗的fpga部分可重构方法,其中该步骤2包括:在完成fpga片内动态区配置后,设置重构的动态时钟单元用于对该fpga片内静态逻辑区的cpu软核及相关逻辑模块进行动态时钟调整。所述的低功耗的fpga部分可重构方法,其中该步骤2包括:根据该fpga片内动态逻辑区对各外部存储器的使用状态,向外部存储器的控制器接口模块发送控制指令,使得指定存储系统工作在自刷新状态或掉电休眠状态。所述的低功耗的fpga部分可重构方法,其中该步骤2包括:选择该非易失闪存中静态区逻辑的初始缺省镜像,在该初始缺省镜像的引导下进行二次重构以引导fpga进入多重启动镜像切换状态,对fpga片内静态区的逻辑进行重构,若重构失败中断,将自动回退到初始状态。本发明还提出了一种低功耗的fpga部分可重构系统,其中包括:模块1、用于根据预设的接口类别,裁剪对外接口逻辑的完整静态区框架,得到多个分别对应特定接口类别的静态区逻辑,并将所有该静态区逻辑以fpga静态区逻辑配置文件的形式放置于fpga片外用于上电启动配置的非易失闪存中;模块2、用于根据用户动态重构指令中动态区逻辑特性,得到用户逻辑运行所需接口,并根据该用户逻辑运行所需接口所属的接口类别,选择该非易失闪存中包含有相应接口的fpga静态区逻辑配置文件,再根据该用户动态重构指令进行fpga片内动态区配置。所述的低功耗的fpga部分可重构系统,其中该模块2包括:在完成fpga片内动态区配置后,设置重构的动态时钟单元用于对该fpga片内静态逻辑区的cpu软核及相关逻辑模块进行动态时钟调整。所述的低功耗的fpga部分可重构系统,其中该模块2包括:根据该fpga片内动态逻辑区对各外部存储器的使用状态,向外部存储器的控制器接口模块发送控制指令使得指定存储系统工作在自刷新状态或掉电休眠状态。所述的低功耗的fpga部分可重构系统,其中该模块2包括:选择该非易失闪存中静态区逻辑的初始缺省镜像,在该初始缺省镜像的引导下进行二次重构以引导fpga进入多重启动镜像切换状态,对fpga片内静态区的逻辑进行重构,若重构失败中断,将自动回退到初始状态。由以上方案可知,本发明的优点在于:相比业界原有的技术方案,本发明方案所述的系统装置,通过结合fpga静态区逻辑的裁剪及重构切换技术与动态时钟管理单元的时钟频率实时调整机制,有效地降低了fpga静态逻辑区的无效功耗,同时也进一步避免了静态逻辑区长期工作在高频率状态带来的散热与稳定性问题。附图说明图1为fpga部分可重构整体框架示意图;图2为fpga静态区逻辑的裁剪及重构切换技术示意图;图3为基于动态时钟管理单元的时钟频率实时调整机制示意图;图4为本发明一具体实施例的流程图。具体实施方式发明人对静态逻辑区和动态逻辑区的配置方案、静态区功耗组成进行了分析,提出降低无效功耗可从两个方面解决:第一个方面,动态降低静态区逻辑的时钟频率,以降低因不必要的高运行频率所产生的电路动态功耗,即通过设置动态可重构的时钟单元来替换目前业界方案中的静态时钟单元,对静态逻辑区的cpu进行动态时钟调整,降低其空闲状态下的功耗;第二个方面,灵活降低静态区逻辑中外部控制器接口的闲置功耗。这里根据云服务的提供方式,又分为两类子场景:在整体fpga面向单一用户提供服务的场景中,通过多重启动镜像可切换模式方式,在fpga初始化配置的片外norflash上划分多个独立的静态区逻辑配置方案,每个配置方案都不同的静态区接口,例如在某个时段动态逻辑区不需要访问外部ddr3、ddr4时,可以首先将静态逻辑区初始化配置为没有ddr4控制器接口的框架,再进行动态区配置,从而有效降低了因外部控制器接口闲置而带来的额外功耗。即对静态区逻辑进行直接裁剪,并根据需要选择性加载裁剪后的特定配置文件。在fpga的动态区资源通过划分,面向多用户共享的服务场景中,虽然需要考虑到多个用户需求的集合(一般只能选择最完整的、拥有全部接口模块的静态区逻辑框架,且时间上也不适合频繁加载裁剪后的静态区逻辑镜像),但这种场景中仍可以通过结合动态区工作需求,调整相关静态区模块(如ddr存储器控制接口等)状态,使这些模块在不需要工作时自动切换至休眠模式。即对静态区逻辑无法裁剪切换的情况,针对某些模块,控制其切换为休眠模式。具体来说,基于上述构思,本发明包括以下关键技术点:关键点1:本发明方案首先设计了一套包含用于部分可重构控制的软核cpu,以及完整的对外通信接口(包括srio、高速以太网、aurora等高速协议接口)、对外访存控制接口(包括ddr3、ddr4、hbm等)逻辑的静态区框架,并将这一包含全部接口的静态区逻辑框架的比特流文件作为系统缺省初始化镜像,放置于fpga片外用于上电启动配置的非易失闪存norflash中。同时,基于上述包含完整对外接口逻辑的静态区框架进行分类裁剪,生成仅包含某一或某些特定接口的静态区逻辑,放置于norflash的其他地址段,并记录保存这些经过裁剪的静态区框架比特流文件在norflash中存储的首地址信息。实际运行阶段,在整体fpga面向单一用户提供服务的场景中,根据用户上传的动态区逻辑特性,以及用户逻辑运行所需的接口环境,选择norflash中相应的静态区框架配置比特流文件。例如,云服务运维中心的管理程序通过对用户所需要运行的动态逻辑进行分析,如果动态逻辑的运行与测试不需要访问外部存储,只需访问外部网络,则通过多重启动镜像切换模式的方式,将裁剪后仅保留了以太网接口和部分可重构控制软核cpu等必要部件的静态区逻辑加载到fpga系统,以此为基础再对动态区逻辑的相应区域进行部分可重构工作。而在fpga动态区资源需通过划分以面向多用户共享的云服务场景中,则可以通过部分可重构控制软核cpu向ddr3、ddr4或hbm等外部存储器的控制器接口模块发送低功耗模式的指令,例如通过发送相关控制指令使得存储系统工作在自刷新模式甚至掉电休眠模式,从而在不裁剪静态区逻辑的前提下,仍然能够动态地降低功耗。技术效果:通过针对不同用户的需求,选择性地提供经裁剪的静态区逻辑框架,避免了冗余接口逻辑的持续耗电问题。尤其是对于某些用户逻辑并不需访问任何外部存储器和外部通信接口,仅需通过标准的片内系统总线(如果arm的amba协议)完成所有指令与数据交互的场景,针对性地提供经裁剪的静态区逻辑,相比直接统一提供完整对外接口的静态区逻辑,功耗方面有显著的降低。关键点2:通过动态时钟控制单元对部分可重构流程的状态进行检测,当动态逻辑区完成配置,开始进入稳定运行阶段,动态时钟控制单元将对静态区中的cpu软核等模块的时钟信号发生单元进行重构,使其工作在较低的时钟频率下。当下次部分可重构开始时,动态时钟管理单元再次重构静态区的相应时钟发生单元,使其恢复到高时钟频率输出状态,从而确保软核cpu等系列模块能够高效地完成部分可重构工作。技术效果:由于fpga部分可重构系统的绝大部分时间均工作在动态逻辑区稳定运行的阶段,因此通过动态时钟降频的方式可以显著降低静态区逻辑的无效功耗。fpga的功耗分为静态功耗与动态功耗,其中动态功耗主要来源于芯片电路中电容的高频充放电动作,可以公式化地描述为:其中:pd_avg是平均动态功耗;cn指第n个模块电路的等效负载电容;fn指第n个模块电路开关动作的平均频率;v指电路供电电压。可见,fpga的动态功耗基本与电路运行时所参考的时钟频率成正比。为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。如图1和图4所示为本发明的fpga部分可重构整体框架示意图。本发明方案所述的系统装置从两个方面进行功耗控制:一、基于fpga静态区逻辑的裁剪及重构切换技术;二、基于动态时钟管理单元的时钟频率实时调整机制。通过结合上述两个方面,有效地降低了fpga静态逻辑区的无效功耗。下面以xilinxfpga芯片(型号:xcvu37p)为例进行本发明实施例的描述。如图2所示,为fpga静态区逻辑的裁剪及重构切换技术。首先,我们通过对近几年来的fpga云服务器用户的需求进行了一定调查了解,发现大部分用户所上传的逻辑模块仅需要某一到两种对外接口,甚至有部分用户逻辑模块只需要通过片内的axi4接口总线即可完成所有的指令与数据交互。因此,虽然提供一套包含完整的各类对外通信接口与存储器控制接口的静态区逻辑可以保证不同用户的需求,但这种方式往往也存在一定程度上的资源与功耗浪费。例如,对于不需要访问外部ddr3、ddr4等存储器的用户逻辑,当这些逻辑被配置到fpga的动态逻辑区中并开始运行时,其数据交互或缓存需求可以直接通过片内总线和片内存储器满足,尽管如此,静态区仍然因需要不间断地保持ddr3、ddr4的刷新率,而不得不继续维持静态区逻辑中的相应存储器控制模块的运行。这样持续长时间的无意义功耗的累计将带来显著的浪费和散热负担。为此,不同于业界目前基于单一的、固定的静态区框架方案,本发明对静态区框架内的各个对外接口模块进行了逐项裁剪,产生了拥有多个不同对外接口组合的静态区逻辑框架镜像,并将这些框架镜像所对应的比特流配置文件,分别存储在fpga片外用于上电启动配置的norflash中的不同地址段。如图所示,在norflash的0x00000000首地址处,将存放未经过裁剪、拥有所有对外接口的完整静态区逻辑框架镜像的比特流配置文件,当fpga系统重新上电启动时,将自动加载这一完整框架镜像的比特流文件并完成静态区框架的初始化配置工作。当静态区框架的首次初始化配置完成后,云服务器管理程序将用户准备上传提交的逻辑模块信息进行分析,如果用户逻辑此时需要所有类型的对外接口才能进行工作和测试,管理程序将直接基于完整的静态区逻辑框架,对fpga系统传输用户逻辑所对应的部分可重构比特流文件,进而对动态区进行配置。如果经分析,认为用户逻辑不需要访问所有的对外接口,仅需要某一或某些接口,甚至不需要任何接口而仅依靠片内总线和片内存储资源即可完成运行和测试工作时,管理程序将对fpga系统提供其运行所需的最小对外接口资源的裁剪后静态区框架配置镜像,提供该配置镜像在norflash中存储的首地址信息,引导fpga进入多重启动镜像可切换模式,重新加载裁剪后的配置比特流,对静态区逻辑进行重构。若因偶然因素导致静态区逻辑重构出现错误而失败中断,系统将自动回退到初始状态,以确保fpga至少能够继续运行并提供部分可重构服务。重构完成后,静态区将工作在提供用户所需的最小资源状态,并以此为基础进行后续动态区逻辑的部分可重构工作。可选的,对于将要长时间重复运行的用户逻辑,除加载配置上述经裁剪的静态区逻辑外,还可以通过云服务器管理程序,对板级硬件的相关部件的电源进行管理,例如适度关闭某些板载通信与存储的硬件电源等方式,来进一步地压缩整体系统功耗。但由于这一方法可能会扰乱服务器系统的硬件上电复位时序,需要根据实际情况进行。而在fpga动态区资源需通过划分以面向多用户共享的云服务场景中,当fpga系统内的所有用户在一段时间内都不需要访问外部存储时,则可以通过部分可重构控制软核cpu向ddr3、ddr4或hbm等外部存储器的控制器接口模块发送低功耗模式的指令(例如通过发送相关控制指令使得存储系统工作在自刷新模式甚至掉电休眠模式)从而在不裁剪静态区逻辑,保持静态区框架完整性的前提下,仍能动态地降低功耗。如图3所示,基于动态时钟管理单元的时钟频率实时调整机制。部分可重构过程中,比特流需经过icap等通道进行配置,本发明方案在icap传输控制状态机中加入了对部分可重构状态的反馈机制。当动态时钟控制单元检测到动态逻辑区完成配置开始进入稳定运行阶段的反馈信号后,动态时钟控制单元将对静态区中的cpu软核和相关逻辑模块的专属时钟发生单元进行重构,使其工作在较低的时钟频率下,相关逻辑模块包括:cpu软核的片内局部存储器模块、存储交互总线及控制单元等。当下次部分可重构开始时,动态时钟管理单元再次重构静态区的相应时钟单元,使其恢复到高时钟频率输出状态。在不同时钟频率的切换过程中,通过在cpu软核和片内互联交换单元(英文一般称为crossbar)直接插入异步时钟fifo来解决跨时钟域问题。通过动态地调整相关模块的时钟频率,确保软核cpu等系列模块能够高效地完成部分可重构工作。实测案例:在对本发明所属方案及装置的实验测试中,我们首先对fpga静态区框架中设置了必要的单元,包括用于部分可重构控制的cpu软核及其所配置的片上localram、icap通道单元及控制逻辑、spi接口标准的norflash控制接口模块和crossbar单元以及必要的fifo模块,同时也加入了ddr4控制器、以太网控制器、串口等外部接口。通过vivado等eda工具对布局布线后的设计进行详细的评估发现:对于未集成封装hbm的fpga系列型号,ddr4控制器的功耗约1.501~1.609w,大致占据整体静态区框架的22%~28%。对于集成封装hbm的fpga系列型号,hbm相关组件在闲置状态时,hbm存储器颗粒的功耗约为0.240~0.253w,在工作状态时,hbm存储器颗粒功耗约为0.833~0.890w,与此同时位于fpga片内的hbm控制器逻辑功耗约为1.155~1.167w,约占整体静态区框架的16%~17%。同时考虑到xcvu37p器件属于拥有多个slr(superlogicregion,超级逻辑区域)的ssi(stackedsiliconinterconnect,堆叠硅片互联技术)器件,而为了提高fpga整体系统性能,静态区框架和icap通道往往集中布局在主slr区域,即slr0中,这一布局方式也可能导致其长期工作出现片内局部温度过高的问题。通过本发明所述的技术,对这一实测案例进行裁剪,并生成了一套低功耗的fpga部分可重构系统。对于不需要对外访问ddr4存储器的用户逻辑,可能降低功耗:静态区中不同类型的cpu软核所对应的功耗不同。在本发明工作的测试阶段中,以microblaze软核及其附属片上存储、总线等模块为例,在较高时钟频率下运行时(200mhz)此时静态区逻辑框架中的cpu软核及其附属模块的功耗,与经过动态时钟管理单元降频至25mhz后,静态区逻辑框架中的cpu软核及其附属模块的功耗分别为:时钟频率200mhz25mhz软核功耗0.241w0.030w软核所需片内局部存储器模块功耗0.211w0.026w软核axi4总线功耗0.092w0.029w此外,由于静态区逻辑框架的主控制cpu以及片内总线频率均以降低,crossbar模块的功耗也由0.336w降至0.148w,节省55.95%的功耗,为0.188w;而且静态区备用的片内存储localram及其控制模块功耗也从0.752w降至0.148w,节省80.32%的功耗,为0.604w。综合其他各个逻辑模块,静态区逻辑框架总体的功耗由3.601w降低至2.135w,节省功耗1.466w,相比无时钟动态调整方案的功耗降低了40.71%,效果显著。综上,本发明所述方案,通过将fpga静态区逻辑的裁剪及重构切换技术或控制器接口模块低功耗模式调整技术与动态时钟管理单元的时钟频率实时调整机制相结合,有效地降低了fpga静态逻辑区的无效功耗,对于某些不需访问片外存储器的用户逻辑,综合上述技术甚至可以将静态区框架的功耗降低40%以上。同时本发明所述方案对功耗的降低效果,也使得fpga系统有效地避免了静态逻辑区长期工作在高频率状态所带来的散热与稳定性问题。以下为与上述方法实施例对应的系统实施例,本实施方式可与上述实施方式互相配合实施。上述实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在上述实施方式中。本发明还提出了一种低功耗的fpga部分可重构系统,其中包括:模块1、用于根据预设的接口类别,裁剪对外接口逻辑的完整静态区框架,得到多个分别对应特定接口类别的静态区逻辑,并将所有该静态区逻辑以fpga静态区逻辑配置文件的形式放置于fpga片外用于上电启动配置的非易失闪存中;模块2、用于根据用户动态重构指令中动态区逻辑特性,得到用户逻辑运行所需接口,并根据该用户逻辑运行所需接口所属的接口类别,选择该非易失闪存中包含有相应接口的fpga静态区逻辑配置文件,再根据该用户动态重构指令进行fpga片内动态区配置。所述的低功耗的fpga部分可重构系统,其中该模块2包括:在完成fpga片内动态区配置后,设置重构的动态时钟单元用于对该fpga片内静态逻辑区的cpu软核及相关逻辑模块进行动态时钟调整。所述的低功耗的fpga部分可重构系统,其中该模块2包括:根据该fpga片内动态逻辑区对各外部存储器的使用状态,向外部存储器的控制器接口模块发送控制指令使得指定存储系统工作在自刷新状态或掉电休眠状态。所述的低功耗的fpga部分可重构系统,其中该模块2包括:选择该非易失闪存中静态区逻辑的初始缺省镜像,在该初始缺省镜像的引导下进行二次重构以引导fpga进入多重启动镜像切换状态,对fpga片内静态区的逻辑进行重构,若重构失败中断,将自动回退到初始状态。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1