Enzian: An Open, General, CPU/FPGA Platform for Systems Software Research

原文地址: doi/10.1145/3503222.3507742

背景

  • 过去的系统研究主要基于商用成品服务器,而随着越来越多的新型特化、异构的硬件架构在各类平台上部署,成品服务器无法满足探索新架构的需求。
  • 现有的 CPU-FPGA 系统主要可分为以下几类:
    • 基于 PCIe 的加速器:FPGA 和 CPU 之间用大吞吐量的 PCIe 总线连接,但不适合细粒度的负载。编程接口通常类似 GPU。CCIX 和 CXL 等协议强化了内存和缓存一致性方面的能力。
    • 完全缓存一致协议:FPGA 和 CPU 直接通过缓存一致协议互联,FPGA 能够访问连接到 CPU 的内存,但自身几乎没有直连内存。适合细粒度的工作负载。
    • 智能网卡:主要用于处理网络包。用途相对单一。
    • 单芯片混合平台 MPSoC :在 FPGA 内集成 CPU 核,FPGA 可以和 CPU 通过片内总线互联,嵌入 CPU 的内存子系统,但内嵌的 CPU 核通常性能较弱,难以运行真实负载。

设计

面向研究的平台需要满足两个重要的标准:

  1. 高覆盖率:能够模拟替换更多的特化系统,还能覆盖尽可能多的未来潜在的设计
  2. 性能充足:与现有的特化的系统的性能相当,便于对比。

Enzian 主要遵循以下设计原则:

  • 不要过度担心每台单元的成本
  • 不确定的时候就过度设计
  • 倾向于大带宽而不是容量
  • 避免被现有标准限制
  • 暴露更多的底层控制和测量接口
  • 不只考虑单个单元,而要考虑多台互联组成更大的系统

Enzian 硬件上主要架构是双槽 NUMA 系统,CPU 是 Marvell Cavium ThunderX-1 ARMv8, FPGA 是 Xilinx XCVU9P ,二者通过原生的一致性互联协议连接,此外还有丰富的内存、网络、存储等接口。在 FPGA 一侧采用了自行设计的 ECI 一致性接口,能够与 CPU 的 CCPI 协议互相操作。

基板管理器 (BMC) 部分硬件采用了基于 Zynq 7000 的设计,软件采用 OpenBMC ,能够精细灵活地调控基板上大量的电源轨配置、上电时序、时钟分布等内容。Enzian 中有 25 个电压调节芯片,提供 30 个电源轨,其中大部分可以通过 PMBus 协议控制和监测,可以用于研究供电异常等场景下的系统行为。

评估

主要评估了以下场景:缓存一致互联、网络、PCIe 加速器应用、定制内存控制器、功耗监测。

评价

很多研究致力于解决现实应用中遇到的问题,但是解决研究过程本身遇到的问题的工作相对较少。尽管 Enzian 的设计原则很大程度上与工业产品的实践相悖,但最终呈现的系统的完成度却相当高,不像某些只能作为实验室里的小玩具。