可扩展动态重配置的新型FPGA平台设计
全局架构如图1 所示,其组成包括:
一系列非专用(通用)处理器 (GPP)。GPP 负责支持软件线程的执行,以及包括线程调度在内的一系列操作系统服务。GPP 在指令集架构和提供的服务数量方面不必同构。
一系列动态可重配置分区(也称可重配置区域 (RR))。动态可重配置分区负责并行或串行执行一系列硬件线程。与 GPP 相似,由于采用硬件操作系统 (HwOS),RR 也支持操作系统服务的执行。这些区域对应着精粒度 (FPGA) 或粗粒度(可重配置处理器)架构。
共享着一条或多条物理通信通道的虚拟通信通道,用于控制、数据和配置。控制通道负责把操作系统服务之间的通信分配给执行单元(GPP 和 RR)。数据通道负责传输与环境(器件、传感器)有关的信息和线程之间的信息交换。配置通道负责在配置存储器和执行单元之间传输软件线程(二进制代码)和硬件线程(部分比特流)的配置。
每个处理器都有自己的本地存储器。该存储器负责存储本地数据,在适用的情况下,也可存储软件代码。连接到数据通道的共享存储器可以实现不同处理器上线程间的数据共享。每个执行单元都可以访问共享存储器上存储的数据和软件执行资源程序。每个资源还可以访问配置存储器,以保存和恢复其执行上下文。采用这种结构,可以在任何执行资源上实现任何线程或服务。
在 RR 内部,只有硬件任务需要动态重配置。负责托管任务的动态区域 (DR) 被包含操作系统服务硬件实现的静态区域 (SR) 所包围,同时在 RR 内外部提供通信介质。内部数据流通信依靠专用的片上网络。DR 和 SR 之间的接口采用总线宏并且有固定的位置。为实现该约束以及通信介质异构性的抽象,我们采用中间件方案来提供到可重配置分区的虚拟访问。RR 根据图 2 中定义的模型构建。FOSFOR 原型平台由能够直接支持这种架构模型的动态可重配置FPGA器件构成。我们选用了 Virtex-5? 器件,因为其能够重配置矩形区域。
我们根据预先测算的应用线程资源需求定义了调度/布局算法,以确保每个 RR 中FPGA元件(LUT、寄存器、分布式存储器、I/O)的高效利用。
![可重配置区域结构](http://m.amcfsurvey.com/uphotos/fetch/20130729/150244_2_0.jpg)
图2 可重配置区域结构
图中文字:
控制 上下文(比特流) 静态区域 可重配置区域 静态区域 数据 硬件操作系统 控制 动态区域 线程 数据 片上网络 硬件分区
3 操作系统、片上网络及中间件
为具备灵活性,FOSFOR 架构使用了至少两个操作系统实例:一个为运行在每个处理器上且负责处理软件线程的软件操作系统;另一个为能够管理硬件线程的硬件操作系统。为了在性能、开发时间以及标准化之间实现最佳平衡,我们使用了现有的软件操作系统和全新的硬件操作系统。
该硬件操作系统利用赛灵思 FPGA 的动态部分重配置功能,在调度硬件线程方面与传统操作系统调度软件线程一样灵活。
对软件操作系统的要求是实时行为、能够处理多个处理器并提供基本的进程间通信服务。我们选用了一个免费的开源操作系统 RTEMS。出于兼容性原因,我们选用了 LEON Sparc 软核处理器,同软件节点一样,其也是免费和开源的。
该硬件操作系统(HwOS)利用赛灵思 FPGA 的动态部分重配置功能,在调度硬件线程方面与传统操作系统调度软件线程一样灵活。硬件线程由动态和静态两大部分组成。动态部分内含一个用来执行线程功能的 IP 模块和一个用来使服务调用次序与硬件操作系统同步的有限状态机。静态部分则内含一个与硬件操作系统相连的控制接口和一个用于与其它软硬件任务进行交换数据的网络接口。
为支持多种线程间数据传输需要,我们开发出了一种灵活的片上网络 DRAFT。传统操作系统的通信服务足以支持软件线程间的通信。但在我们的设计中,操作系统还需要支持硬件线程间的通信。为此,我们专门设计了 DRAFT 网络。我们针对一个或者多个 DR 逐一综合硬件线程,同时静态地定义每个 DR 接口。
通信接口的静态定义让我们可以定义静态的片上网络。一般来说,硬件线程要求高带宽和低时延,故片上网络必须提供高性能。我们为 DRAFT 选择的拓扑是一种胖树拓扑的扩展。我们设计的主要目的是为了限制资源开销,同时实现高性能的线程间通信。
硬件平台的异构性是设计人员部署应用时面临的主要的复杂性障碍。在 FOSFOR 项目中,这种异构性不仅来自软件域中的不同嵌入式处理器,还来自在单个平台上同时集成软件和硬件计算模型的做法。
采用中间件在硬件和软件间建立抽象层,并提供同构编程模型,可以很好地解决这一问题。中间件实现了一组虚拟通道,可以在不必理会线程的实现区域的情况下进行线程间通信。这些服务跨平台分布,提供了一个灵活的可扩展抽象层,让 FOSFOR 构想臻于完善。
评论