高校和私企正在应用分布式平台,而不是安装速度更快、耗电更大的超级计算机来解决日益复杂的科学算法,针对SE TI @home 这样的项目,他们则使用数以千计的个人计算机来计算它们的数据。[1,2] 当前的分布式计算网络一般用CPU 或 GPU 来计算项目数据。
FPGA 也正被像 COPACOBANA这样的项目所采用,该项目使用 120个赛灵思 FPGA 通过暴力处理来破解DES 加密文件。[3] 不过在这个案例中,FPGA 都被集中布置在一个地方,这种方案不太适合那些预算紧张的大学或企业。目前并未将 FPGA 当作分布式计算工具,这是因为它们的使用需要借助 PC,才能用新的比特流不断地重新配置整个 FPGA。但是现在有了赛灵思部分重配置技术,为分布式计算网络设计基于 FPGA 的客户端完全可行。
我们汉堡应用技术大学的研究小组为这样的客户端创建了一个原型,并将其实现在单个 FPGA 上。我们的设计由静态和动态两大部分组成。其中静态部分在 FPGA 启动时加载,与此同时用静态部分实现的处理器从网络服务器下载动态部分。动态部分属部分重配置区域,提供共享的 FPGA资源。[4] 采用这种配置,FPGA 可以位于世界上的任何地方,用较低的预算就能够为计算项目提供强大的计算能力。
分布式 SOC 网络
由于具有信号并行处理能力,FPGA能够使用比微处理器慢 8 倍的时钟,低 8 倍的功耗实现比其快三倍的数据吞吐量。[5] 为利用该强大的计算能力实现高数据输入速率,设计人员一般将算法实现为流水线,比如 DES 加密。[3] 我们开发分布式 SoC 网络 (DSN)原型的目的是加快算法的速度和使用分布式 FPGA 资源处理大型数据集。我们的网络设计采用“客户端- 代理-服务器”架构,故我们可以将所有注册的片上系统 (SoC) 客户端分配给每一个网络参与方的计算项目(如图 1所示)。这在将每一个 SoC 客户端连接到唯一的项目的“客户端- 服务器”架构中是无法实现的。
另外,我们选择“代理- 服务器”架构可以将每个 FPGA 的 TCP/IP 连接数量减少到一个。DSN FPGA 负责运算使用专用数据集的算法,而“代理-服务器”则负责管理 SoC 客户端和项目客户端。代理调度连接的 SoC 客户端,让每个项目在相同的时间几乎拥有相同的计算能力,或者在 SoC 的数量少于计算请求的项目时分时复用soc客户端。
项目客户端提供部分重配置模块(PRM) 和激励输入数据集。在连接到“代理- 服务器”之后,项目客户端将PRM 比特文件发送给服务器,然后由服务器将它们分配给带有空闲的部分可重配置区域 (PRR) 的 SoC 客户端。SoC 客户端的静态部分是一个基于MicroBlazeTM 的微控制器,用接收到的 PRM 动态重新配置 PRR。接下来,项目客户端开始通过“代理- 服务器”发送数据集并从 SoC 客户端接收计算的结果。根据项目客户端的需要,举例来说,它可以比较不同的计算结果,或根据计算目的评估计算结果。
MicroBlaze 处理器负责运行客户端软件,客户端软件管理部分重配置以及比特流和数据交换。
SOC 客户端
我们为随 ML605 评估板配套提供的赛灵思 Virtex®-6 FPGA(XC6VLX240T)开发了 SoC 客户端。MicroBlazeTM 处理器负责运行客户端软件,客户端软件负责管理部分可重配置以及比特流和数据交换(如图 2 所示)。用户逻辑封装PRR 的处理器本地总线 (PLB) 外设用以连接静态部分和动态部分。在动态部分驻留的是接收到的 PRM 提供的加速器 IP 核使用的 FPGA 共享资源。为存储接收到的数据和计算完成的数据,我们选择了 DDR3 存储器而非CompactFlash,因为 DDR 存储器有更高的数据吞吐量和无限制的写入访问次数。PRM 存储在专用数据段内,以控制其大小,避免与其它数据集发生冲突。该数据段大小为 10 MB,足以存储完整的 FPGA 配置。因此每一个PRM 都应该与这个数据段的大小匹配。
我们还为接收及结果数据集创建了不同的数据段。这些数据段的大小有 50 MB,能够为比如图像或加密文本文件等提供足够的寻址空间。管理这些数据段主要依靠 10 个管理结构。该管理结构包括每个数据集对的起始/ 终点地址,以及指示结果数据集的标志。