FPGA可以被视为硬件和软件领域之间的桥梁,因为它们的硬件操作可以使用代码重新编程,从而为开发人员提供了前所未有的灵活性。在AntMicro帮助其客户制造的高级产品中,这种处理并行数据的灵活性通常需要由CPU提供的更标准的顺序处理能力来补充,CPU可以运行控制软件并与用户或其他设备进行接口。
对异构计算的这种需求一直是Xilinx的Zynq/UltraScale+或英特尔的Cyclone/Stratix等FPGA SoC技术成功的根源,也是世界上第一款支持Linux的RISC-V FPGA SoC PolarFire SoC令人兴奋的原因。即将推出的用于PFSoC的ICICLE开发工具包现在也可以作为我们的模拟框架Renode中的平台使用,但是我们将很快在专门的笔记中讨论这一点。
向FPGA设计提供标准CPU处理能力的另一种方法涉及构建所谓的软核-在FPGA内部合成的CPU。虽然它们提供了很高的灵活性,但它们通常不能与高性能或软件功能联系在一起,当然不能与“真正的”FPGA SoC中的支持Linux的双核或四核CPU相提并论。
随着最近在开源ISA、HDL、软SoC框架和FPGA开发流程方面的进步,AntMicro正处于领先地位,这即将发生变化-阅读我们如何增强VexRiscv,一个开放而灵活的32位RISC-V实现,成为一个支持Linux的四核CPU,为完全在FPGA中运行的软件密集型工作负载提供更强的计算能力和多功能性。
我们越来越多的FPGA项目涉及一种名为Litex的基于Python的软SoC生成器,它可以在FPGA中为各种应用构建高度灵活的SoC。虽然它提供了许多CPU选项(涵盖RISC-V、OpenRISC、LM32或最近才出现的POWER等架构),但当与VexRiscv等灵活、高性能、支持Linux的FPGA优化CPU配合使用时,效率最高。
VexRiscv最初由Charles Papon(SpinalHDL的发明者)开发和维护,SpinalHDL是一种基于Scala的高级HDL,类似于Chisel,也用于CPU本身。VexRiscv是一种高性能的32位Linux支持的基于Spinal HDL的软RISC-V内核,针对FPGA进行了优化。它的高度可配置性允许FPGA用作一种定制的硅,使其成为CPU中的瑞士军刀。
为了进一步提高VexRiscv的能力,我们与Charles合作,为CPU添加了可扩展的多核配置,从而提供了第一个FPGA RISC-V实现,该实现提供了高性能,同时针对FPGA进行了资源优化。在FPGA设计中使用VexRiscv,再加上Litex提供的大量外围IP(如DRAM内存控制器、USB、以太网、PCIe等),即可实现所谓的“软FPGA SoC”。根据您对I/O和处理能力的需求,以及FPGA中自定义IP和加速器所需的空间大小,这种“软FPGA SoC”可以根据需要进行上下扩展,添加内核或外围设备。
为了展示一个实际的用例,我们创建了一个运行Linux的成熟的四核SMP系统(当然,如果需要的话,它也可以运行RTOS--我们还为Zephyr添加了对VexRiscv的支持)。为此,我们需要在核心之间实施通信和同步,包括:
由OS(在这种情况下为Linux)中的调度器使用的处理器间中断实现的处理器间通信,以确保任务的正确调度和中断,
总线互连,其允许所有核心访问存储器,包括无序访问以最大化CPU和存储器资源的有效性,
CPU一致性机制,以确保来自不同内核的加载和存储指令的排序。
我们与Litex和SpinalHDL的创建者合作,在Digilent的ARTYA7板(https://store.digilentinc.com/arty-a7-artix-7-fpga-development-board-for-makers-and-hobbyists/).上实现了一个测试设计。只占用35Klut FPGA的70%-Artix A35T-VexRiscv在大约4秒内启动Linux,并在所有内核上同时运行Dhrystone CPU基准测试,所有内核都通过了测试。机器模式异常由openSBI处理。CPU的多核能力也已经在更大的200T FPGA上进行了测试,它在电路资源中所占的比例要小得多。
最重要的是,这种实现现在也在Renode-AntMicro的硬件模拟和硬件/软件联合开发框架中得到支持。Renode中的RISC-V支持使您可以使用Verilator将Litex SoC与自定义FPGA设计进行联合仿真,从而为RISC-V SoC原型项目提供完整的开发/调试环境。
FPGA上的RISC-V已经达到了一个重要的里程碑,VexRiscv成为了广泛的RISC-V核心列表上的第一个具有多核能力的FPGA优化CPU,我们正在帮助维护RISC-V International。AntMicro一直在使用灵活的SoC框架提供FPGA领域的高级客户项目,并改进相关工具和实施工作流程改进,使您的FPGA开发更加便携、以软件为中心和面向未来。如果您正在从事与FPGA相关的项目,请与我们联系,以利用AntMicro在该领域的专业知识。