基于FPGA的多处理器片上系统运行时软硬件重构
2015-05-15叶林锋谢国波曾碧
叶林锋,谢国波,曾碧
(广东工业大学计算机学院,广州 510006)
基于FPGA的多处理器片上系统运行时软硬件重构
叶林锋,谢国波,曾碧
(广东工业大学计算机学院,广州 510006)
可重构系统可以根据应用程序运行时的需要动态地选择不同配置硬件加速方案。动态可重构多处理器片上系统是一种面向多种应用/标准之间资源共享、减少能源损耗和提升系统性能(专用DSP或者定制协处理器)的有效方法。提出一种根据应用不同需求进行动态软硬件重构的方法。
动态部分可重构;离线可重构;可重构计算;智能计算;按需计算
0 引言
随着半导体工艺和计算机技术的不断发展,嵌入式计算机系统渗透到越来越多的应用领域。同时,嵌入式系统的多样性又阻碍了它在标准化和集成化方面的发展,人们希望可以将这些经过不同应用“剪裁”的嵌入式系统整合成“大而专”的嵌入式系统。日益增加的半导体数量和不断改进的计算机系统结构虽然使得嵌入式系统拥有了前所未有的数据处理能力和吞吐能力,但面对数不胜数并且不断变化的应用需求,传统硬件无论是在定制化还是通用化的道路上都处于相对落后的位置。近年来,为了追赶市场的步伐,越来越多的嵌入式系统采用通用处理器+专用处理模块的架构(例如:GPP+GPU,GPP+DSP,GPP+协处理器等)。这样就不用为每个产品重新设计整套方案,提高了设计的可重用性,也缩减了产品的研发周期。然而,这些额外的固定加速模块会在一定程度上增加系统的芯片利用率、面积和功耗,尤其是当系统中有多个加速模块的时候,能效比就会变得很低。
动态可重构多处理器片上系统(Dynamic Reconfigurable MPSoC)是一种由多个混杂处理器和可重构硬件模块组成的片上系统架构,分为固定部分和可变部分。固定部分主要用于完成一些通用的计算处理、输入输出管理和任务调度等工作,而可变部分将根据所运行应用的不同需求进行硬件改造并完成关键计算任务。近十年来,有关R-MPSoC的研究很多,不少的研究结果都证明了可重构计算在性能方面的巨大潜力,但在这样一些硬件可重构的平台上开发软件仍然是非常具有挑战性的工作。本文主要就是在此问题的基础上探讨自适应MPSoC架构上的软硬件自适应重构流程。
1 相关工作
动态局部重构(Dynamic Partial Reconfiguration)技术使得硬件可以在运行过程中实现局部逻辑功能的重构。但由于系统中硬件相关的软件(Hardware-dependent Software)的存在,重构之后的硬件将需要重新加载相应的HdS软件才能正常运行。本文主要探讨在整个重构的过程中,HdS软件与重构硬件如何实现无缝切换的方法。通过本文所提出动态重构流程,用户可以通过设计不同的重构决策算法为不同的应用场景提供更为智能和高效的软硬件管理方案。
Fahmy[1]提出了一种在FPGA上实现运行时自适应应用程序硬件重构的系统框架,它把控制运行和处理机制分离以及抽离掉系统设计者重新配置硬件的细节。在此框架下,系统模型和软件结构体系被用来简化基于FPGA的自适应应用程序设计。这与本文的工作非常类似,但是Fahmy[1]论文主要是研究具体的软件架构,而本文侧重于通用的软硬件重构流程。实时重构嵌入式系统的整体方案(hArtes[2])是可重构平台的设计流程,它包括三个阶段:算法的探索和翻译(AET)、设计空间探索(DSE)和系统综合(SS)。AET用C语言发展或翻译应用程序,DSE阶段包含任务划分,任务优化和分配给适合的硬件单元。SS阶段实现嵌入式硬件/软件协同设计和HDL生成及编译执行。hArtes设计流程的实验结果表明,生成的设计提供了3.8倍的全面应用加速。然而,这种设计流程只适用于编译时可重构的系统,这是因为它使用了Molen[3]编译器作为主程序编译器。
Hthreads[4]是一个用来指定应用程序线程在计算机处理单元(CPU)/现场可编程门阵列(FPGA)并行运行的混合程序模型。Hthreads的处理方法是通过互斥锁来调度决策和恢复执行线程。简单接口可重构计算(SIRC)[5]工程提供了简单、可移植和可扩展的开源通信和同步API。它允许C++代码在主机上运行过程中,与基于Verilog的映射在FPGA的电路进行通信,并通过内在软件接口和内在硬件接口进行软硬件同步。Eustache[6]提出了一个统一的配置和通信接口(UCCI)的软、硬件解决方案,当任务在处理器上运行时它通过软件API调用来实现,当任务被映射到硬件加速单元时通过HDL代码生成的硬件来实现。
Huang[7]提出了一种基于应用历史记录的在线算法,并充分考虑了各种重配置的开销。这项研究工作采用了内存冲突模型和涉及关键接口与电路问题的预定义重构区域。在线算法计算出的“总收益”是决定是否将新方案加载到FPGA协处理器的主要依据。这项研究工作提出了运行前重构方案,这是因为重新配置的决策是在应用程序执行前作出的。对于数据相关的应用程序来说,程序运行过程中的数据变化会导致系统性能瓶颈的转移,所以此类应用需要在程序运行过程中通过算法发现和调整软硬件方案。
由于大部分消费电子类产品都需要考虑产品上市时间,而这些产品很强调人机交互和产品体验,因此对于这些产品研发而言,他们除了关注系统性能外,更关注产品开发人员能否快速地在基础平台上开发应用。相对于传统的应用开发,基于可重构系统的应用开发需要软硬件的协同设计,如果可以将软硬件的关联隐藏起来,使得软件设计人员不需要考虑硬件的因素,将能大大简化可重构应用程序的开发流程和复杂度。本文主要从嵌入式消费类电子产品的设计开发角度,探索可重构系统[8~9]的运行时软硬件重构方法和流程。为了证明使本文所提方法的可行性,在FPGA上演示了多处理器片上系统的运行时软硬件重构应用程序。
2 运行时软硬件重构流程
运行时重构的主要目的是在应用程序运行过程中能修改程序或硬件配置而无需停止或重新启动。本文方法适用于可以被分解为一系列具有软件和硬件功能序列的应用程序,目标是为基于标准化接口的嵌入式系统应用,并根据不同的应用需求动态适应硬件资源进行优化架构的应用程序在R-MPSoC的开发。以下是本文使用到的相关术语:
●XManager:一个通用处理器(GPP),主要负责整个可重构多处理器系统的资源管理、任务调度、软硬件重构和输入/输出。
●XWorker:一个具有可定制化指令的处理器,主要用于执行指定的计算任务。
●数据流:需要处理或者移动的数据集合。
●指令流:需要处理或者移动的指令序列。
●配置流:硬件配置所需要的二进制数据(例如:FPGA的bitstream)。
本文采用了与指定代理[10]和BORPH[11]中ghost处理器相当的方法实现软硬件的动态重构管理。XManager负责给系统中的每个XWorker指派计算任务并在所需要的时候采集它们的计算结果,XWorker一般会被指派完成图像处理、加密处理、音频处理或者视频处理等计算密集型任务。运行Linux系统的XManager是整个多处理器系统的唯一管理者,图1是XManager进行软硬件动态重构的完整流程。
R-MPSoC系统上电后自动地从非易失存储器(如Flash)加载基于当前FPGA芯片的硬件方案(配置),然后分别为XManager加载操作系统和为XWorker加载启动程序。XManager启动含有重构算法的任务管理进程。如果没有特定配置请求或新的重构决策,XManager就如一般的单处理器一样执行应用任务。根据系统和配置存储来计算分配的资源计算出更合适的配置策略后,XManager任务管理进程将做出一个重构系统的决定。XManager根据决定将新的硬件配置文件加载到系统主存中。XManager收到“READY”信号后先执行FPGA的硬件重构,然后从本地存储器寻找和任务匹配的软件程序并给XWorker发送复位信号来执行软件安装。安装完毕后重新启动XWorker。当XWorker准备就绪后,应用程序就可以在不同处理器和协处理器上运行。
在图1的动态重构流程中,Mx代表在XManager上的执行步骤,Wx代表在XWorker上的执行步骤,Dx代表局部重构的执行步骤。本文的方法中,所有的局部重构步骤都由XManager执行。
以下是XManager上的执行步骤:
a)XManager从Flash等非易失性存储设备中加载启动文件;(M0)
b)根据启动文件中的硬件部分对FPGA进行配置和初始化;(M1)
c)根据启动文件中的软件部分进行软件环境安装和设置,本例中将启动petalinux操作系统;(M2)
d)XManager自动加载动态重构管理进程;(M3)
e)动态重构管理进程采用特定的算法(本文后半部分将介绍算法的例子)输出重构决定,如果需要重构就跳转到j,否则继续到f;(M4)
f)XManager加载通过函数调用或者线程加载新的指令序列;(M5)
g)XManager根据指定的输入和输出参数完成计算任务;(M6)
h)XManager完成了所有本地执行的计算任务后,查询XWorker的任务完成情况,如果XWorker状态标志位DONE为1,则表示指派给XWorker的任务已经完成,否则等待;(M7)
i)XManager检查是否任务已经完成,如果完成就跳转到z结束此次的应用程序,否则就跳转d继续循环执行;(M8)
j)XManager检查硬件加速函数表中是否已经有合适的硬件解决方案;(D0)
k)如果硬件没有准备好就跳转到l步骤开始重构,否则就将ENABLE标志位置1,并跳转到f步骤继续执行;(D1)
l)XManager从缓存、Flash和服务器等不同的存储层次加载新的软硬件配置文件;(D2)
m)XManager将ENABLE标志位置0,确保XWorker在重构流程结束前不会被指派新的任务;(D3)
n)XManager等待XWorker将当前的任务完成,只有XWorker为就绪状态(DONE=1时)才能继续下一步操作;(D4)
o)XManager对可重构区域进行硬件的局部重构;(D5)
p)重构完成后,XManager将相应的软件执行代码加载到指定位置;(D6)
q)XManager更新系统的硬件加速函数表,并跳转到d步骤继续执行;(D7)
r)程序结束。
以下是XWorker上的执行步骤:
s)XWorker从Flash等非易失性存储设备中加载启动文件;(W0)
t)查询ENABLE,如果为1则跳转到u步骤继续执行,否则跳转到u步骤执行;(W1)
u)XWorker从默认的地址加载任务信息,包括输入输出参数和地址,所执行的二进制代码位置等;(W2)
v)XWorker开始执行计算任务并将结果输出到指定的地址空间;(W3)
w)XWorker将状态改为就绪(DONE=1),等待新任务或者下一个数据块的到来;(W4)
3 动态重构决策算法
在本文所提出的运行时软硬件重构流程中,XManager通过对系统软硬件的资源情况和预期性能增益来决定是否进行重构。这个决策过程通常由监控、决策和重构三个环节组成。监控环节是指XManager通过对系统中所有的计算任务完成情况和时间进行记录,决策环节是指XManager每隔一定时间就启动决策算法计算当前系统瓶颈并寻找更优的软硬件配置方案,重构环节中XManager将对系统进行软硬件重构。
图1 离线重构流程图
在实际的多处理器可重构系统中,硬件的更换所引发软硬件进程(或者说任务)的动态切换将产生额外的系统负载和延迟,如何在多个约束条件下最优化利用有限的物理逻辑资源是一个典型的多维背包问题,因此很难在多项式时间内获得最优解。本文采用的”先到先得”算法,由于不需要考虑替换策略,只按照任务的先后次序分配硬件资源,所以大大降低了重构决策的复杂度,可以在极短的时间内做出相对优化的重构决定。
先到先得算法(FCFS:First-Come-First-Served)的输入是硬件加速函数表(指针)和待处理数据量(无符号整数),算法的详细过程如图2所示。XManager通过GetFreeXWorker函数获取系统中空闲XWorker的ID号,如果该ID号有效,则通过CalculateGain评估其加速的最大增益,如果这个增益大于系统指定的阈值(本文中的阈值是一个设定的常量,一般来说与器件进行重构的时间相关),则找出该XWorker中的可重构模块ID并调用动态软硬件重构函数,最后使用XTaskCreateSC创建该硬件配置的计算任务。本算法的核心思想是,只考虑空闲的XWorker和XModule的重构方案,如果没有空闲资源,就不考虑软硬件的重构。
图2 先到先得算法
4 实验结果
为了演示本文所描述的运行时重构流程,在XPSoC-M0W2架构编译运行了Crypto-PGM应用。在这个演示中,采用的运行时重构决策算法是先到先得算法。这个算法只考虑了当前状态下所需要的决策和重构时间,因此这很容易实现,并且可以取得显而易见的性能优化。
本次实验中,XManager用XTasks和XFunc-API生成并指派计算任务XTasks给XWorker。XWorker首先在没有任何硬件加速的情况下执行这些XTasks。在XWorker执行XTasks期间,XManager将阻塞直至XTasks完成后,才去读取需要的结果。这种尝试主要为了方便获得线性的执行时间,并因此计算出由于XTask通信、决策和软硬件重构所产生的额外花销。本例中的加密算法是数据相关的,因此每个计算任务处理时间与数据相关。
图3是基于先到先得算法进行运行时重构的运行情况,本例的几组特征描述如下:
●XPSoC-M0S2体系结构模型
●阻塞型XTask
●指令粒度:XFunction
●数据粒度:修复粒度
●决策算法:先到先进行
●基于文件解决方案:F5+F6
●重构粒度:最多两个协处理器
●重构频率(Fr):每次迭代一次
图3 基于先到先得算法的运行时重构
●观测和决策人物频率(F):每XTask一次
5 结语
本文提出了基于FPGA的软硬件运行时重构流程和决策算法,通过任务观察、增益决策和重新配置三个环节实现应用程序运行过程中的动态软硬件重构,笔者也提出因软硬件重构所带来的额外花销,尤其是决策、通信和重构等带来的延时问题不容忽视。最后通过一个图像加密应用演示了完整的运行时软硬件重构流程。但笔者也意识到,由于现有算法暂无考虑硬件的替换,存在着一定的局限性。在以后的研究中,将继续深入研究动态重构算法的优化问题。
[1] S.Fahmy,J.Lotze,J.Noguera,L.Doyle,and R.Esser.Generic Software Framework for Adaptive Applications on FPGAs.Field Programmable Custom Computing Machines,2009.FCCM’09.17th IEEE Symposium on,pages 55~62,2009
[2] M.Rashid,F.Ferrandi,and K.Bertels.hArtes Design Flow for Heterogeneous Platforms.2009
[3] S.Vassiliadis,S.Wong,G.Gaydadjiev,K.Bertels,G.Kuzmanov,and E.Panainte.The MOLEN Polymorphic Processor.IEEE Transactions on Computers,pages 1~13,Sep 2004
[4] D.Andrews,R.Sass,E.Anderson,J.Agron,W.Peck,J.Stevens,F.Baijot,and E.Komp.Achieving Programming Model Abstractions for Recongurable Computing.Pages 1~11,Nov 2009
[5] K.Eguro.SIRC:An Extensible Recongurable Computing Communication API.Field-Programmable Custom Computing Machines(FC CM),2010 18th IEEE Annual International Symposium on,pages 135~138,2010
[6] Y.Eustache and J-Ph.Diguet.Reconguration Management in the Context of RTOS-Based HW/SW Embedded Systems.EURASIP Journal on Embedded Systems,2008:1~11,Jan 2008
[7] C.Huang and F.Vahid.Transmuting Coprocessors:Dynamic Loading of FPGA Coprocessors.Design Automation Conference,2009.DAC '09.46th ACM/IEEE,pages 848~851,2009
[8] J-Ph.Diguet,L.Ye,Y.Eustache,J.Crenne,P.Bomel,G.Gogniat,J.Vidal,and F.De Lamotte.Networked Self-Adaptive Systems:An Opportunity for Conguring in the Large.In ERSA'09,pages 81~90,2009
[9] L.Ye,J-Ph.Diguet,and G.Gogniat.Rapid Application Development on Multi-Processor Recongurable Systems.In FPL,Milano,Italy, 2010
[10] Y.Eustache and J-Ph.Diguet.Reconguration Management in the Context of RTOS-Based HW/SW Embedded Systems.EURASIP Journal on Embedded Systems,2008:1~11,Jan 2008
[11] H.So.Borph:An Operating System for FPGA-based Recongurable Computers.Citeseer,Jan 2007
Multiprocessor System on Chip Runtime Software and Hardware Reconfigurable Based on FPGA
YE Lin-feng,XIE Guo-bo,ZENG bi
(College of Computer,Guangdong University of Technology,Guangzhou 510006)
Determines precisely when the running application needs to be accelerated.The dynamic reconfigurable MPSoC is an interesting approach to optimize the sharing of resources between different applications/standards,minimize energy consumption and optimize system performance(DSP specific or coprocessor specific).Presents an adaptive method to perform on-the-fly HW/SW reconfiguration,according to application requirements to optimize performances.
Dynamically Partial Reconfiguration;Offline Reconfiguration;Reconfigurable Computing;Intelligent Computing;On-Demand Computing
1007-1423(2015)04-0053-06
10.3969/j.issn.1007-1423.2015.04.015
叶林锋(1979-),男,广东广州人,博士研究生,讲师研究方向为高性能计算、可重构计算和并行计算
谢国波(1977-),男,广东人,博士研究生,教授,研究方向为网络与分布式系统
2014-12-23
2015-01-25
广东省自然科学基金(No.S2012040007326)、广东省教育部产学研合作专项资金(No.2012B091100191)
曾碧(1963-),女,广东人,博士研究生,教授,研究方向为嵌入式系统和智能技术