为了实现高效率,我们在紧邻可重配置区的硬件中实现操作系统服务。我们在异构操作系统内核之间实现了一个通信层,以确保从应用角度看服务是同构的。因此,将操作系统当作大量模块和执行单元部署在架构上,可以充分发挥虚拟化机制的优势,从而使应用线程在未预知任务的情况下运行和通信。
从编程人员的角度来看,该应用只是个线程集。我们可以利用赛灵思FPGA 的动态重配置功能来提议这种硬件线程的新概念,同时也可采用与软件线程相同的方式来实现这一概念。我们的实现方式充分发挥了专用计算 IP 模块的性能优势。
除了要考虑到多处理器 SoC 中的执行单元,存储器结构还必须满足以下几项要求:应用线程需要的数据存储、每个线程执行上下文的存储以及线程间的数据交换。对于执行上下文的存储,我们认为有多种可能性。一种方式是集中存储执行上下文,这样为将其分配到不同执行单元提供介质。我们可以确认平台内的三种通信流:应用数据、控制信号和重配置/执行上下文。对于硬件线程之间的高带宽数据路径,我们使用专用的片上网络 (NoC)。
图 1:通用 FOSFOR 架构
图中文字:
灵活的操作系统 软件 线程 应用 中间件(虚拟化、分布、灵活性) 操作系统 1(X 服务) 操作系统 n(Y 服务) 硬件抽象层 (HAL) 软件通信单元 硬件通信单元 硬件 软件节点 (GPP) 硬件节点(可重配置区域) 片上网络 共享存储器
全局架构
全局架构如图 1 所示,其组成包括: