作者:PatriceBrossard,EMEA垂直部门经理(FPGA和ASIC),富昌电子
阅读本文以了解:
将FPGA和多核处理器功能结合在一个PolarFireSoCFPGA芯片中的优势
PolarFire器件的多核架构如何支持确定性操作
为支持PolarFire器件的FPGA和处理器部分的单独开发而提供的工具链
多年来,半导体集成化的不可阻挡的进步一直在模糊不同类型元器件之间的界限。通过在不同类型的IP上加载一种类型的元器件,传感器可以成为机器学习推理引擎,微控制器可以像应用处理器一样运行,或者非易失性存储器可以提供安全的硬件信任根(一种通常需要专用安全元件来实现的功能)。
年末,随着两种具有几乎完全不同的属性集的系统类型(FPGA和在Linux操作环境中运行实时应用程序的处理器)的合并,这种模糊又向前迈进了一步。FPGA是一种可编程硬件结构,支持并行处理多个并发任务,而处理器是执行固定指令集架构(ISA)的硬件平台,并支持指令线程的串行处理。
年推出的MicrochipPolarFireSoCFPGA将这两种元器件类型结合在一起,创建了一个单一的片上系统,它提供:
中等密度FPGA的预期资源,包括多达k逻辑元件、多达1,个18x18数学块、多达33Mb的用户SRAM、8个完全可配置的PLL、高达1.6Gbps的高速DDR4接口能力,以及带有两个硬连线PCIeGen2端点/根端口、以高达12.7Gbps的数据速率运行的多协议收发器。它采用成熟的低功耗SONOS28nm工艺制造,可实现显著的低功耗。
一个多核应用处理器,包含一个四核64位RISC-V内核集群(RV64GC应用内核:64位RISC-V,带有2x32kBL1高速缓存,带纠错码(ECC)和虚拟内存支持),以及一个单独的64位RISC-V监视器内核RV64IMAC:支持32位整数寄存器、乘法/除法、原子和压缩模式的64位RISC-V。所有五个内核都以高达MHz的速度运行。直接处理器I/O功能包括两个千兆以太网控制器、一个USB2.0On-The-Go控制器和两个CAN接口。
这意味着电子系统架构师现在可以选择既具有FPGA的低功耗、高热效率和国防级安全性,又具有快速处理器的确定性执行能力的单芯片。
这种混合架构显然需要一个系统设计工程团队来跨越FPGA和微处理器这两个世界。那么,将这两种类型的硬件系统集成到一个单一、可靠的最终产品设计中会遇到哪些挑战?这种混合SoC平台在以下应用中提供了独特的功能和优势:
在极端温度环境中运行的系统
边缘的人工智能(AI)推理
具有安全意识的应用程序
航空航天和国防系统
通信基础设施
但是,为了获得这些优势,将这两种产品类型结合起来的困难值得接受吗?
了解混合处理器/FPGA架构
PolarFireSoCFPGA的核心是一个由4+1RISC-V内核组成的确定性、连贯的CPU集群,如图1所示。RISC-V是针对处理器ISA的免费开放功能规范,并得到了不断增长的开发专业人员、规范、软件和其他资源的生态系统的支持。
对于PolarFireSoC中的CPU集群,Microchip与SiFive合作开发了自己的硬件架构。Microchip方案的一个独特功能是可以自由关闭CPU分支预测,并使存储器子系统具有完全确定性。
这消除了执行时间的所有变化,同时保持了四个RISC-V内核提供的高处理器性能,并利用了PolarFireFPGA的确定性特性。
第五个内核,即监控内核,用于管理引导过程和系统配置。与应用程序处理内核不同,它不包括虚拟存储器支持。
图1:PolarFireSoC架构结合了独立的FPGA硬件和CPU集群(图片来源:Microchip)
所有SoC的存储器都具有ECC和单一错误检测功能,可提供非常高水平的数据完整性,这是安全关键型应用(例如航空航天系统)的强制性要求。
PolarFireSoCFPGA的一个标志是其极低的功耗:图2显示了PolarFireSoC功耗(CoreMark处理器负载的函数)与传统ArmCortex-A微处理器内核功耗的比较。
图2:PolarFireSoC和ArmCortex-A微处理器内核的功耗比较(图片来源:Microchip)
这在电池供电系统中显然是有利的,但不仅如此:在任何系统中,低功耗都可以消除对散热器或风扇的需求,从而降低系统成本、尺寸和重量,并提高其可靠性。
存储器分区支持实时Linux操作
除了PolarFireSoC的中等密度FPGA部分,Microchip还实施了一种架构,可提供实时确定性多处理能力。要在多核系统上运行操作系统软件,MPU制造商可以选择以下两种类型的多处理架构之一:
在对称多处理(SMP)中,所有内核将共享主存储器。SMP中的内核是同质的,操作系统平等对待每个内核。这种架构使制造商能够通过添加相同的内核来提高单核器件的性能。
在非对称多处理(AMP)中,操作系统对内核的处理方式不同,它们不共享存储器和外设。这使得系统设计人员能够将某些类型的任务分配给一个内核,同时让另一个内核自由运行操作系统。
典型SMP架构的某些特性(例如分支预测和缓存未命中)使SoC无法确定性地运行。执行时间不一致且无法保证,因为每个内核都会受到周期性中断的影响。
相比之下,AMP使用户能够切出一部分高速缓存,并将其保留供实时应用程序专用。PolarFireSoC支持SMP和AMP模式,用户可以自由选择其中一种,甚至可以在现场更新期间更改模式。
一旦在PolarFireSoC中配置了AMP模式,实时应用程序就可以在其中一个应用程序内核上运行,这是一个已关闭分支预测的实时内核,如图3所示。
这种硬件结构支持实时功能的完全确定性操作以及Linux操作系统。此外,中断服务路由(ISR)的执行时间是确定性的,对于在基于ArmCortex-A技术的等效四核微处理器上实现的SMP架构来说,这是无法实现的。
图3:在PolarFireSoC的AMP架构中,实时功能直接访问L2高速缓存的专用部分(图片来源:Microchip)
掌握混合FPGA/MPU系统设计
混合FPGA/MPUSoC提供了一种独特的能力,可以通过单个芯片满足某些类型的应用的要求。例如,基于机器学习模型同时执行本地推理、并实时控制安全关键电机运行的应用可以在PolarFireSoCFPGA中实现AI功能,并在多核处理器上实现安全关键型控制。
然而,FPGA和MPU在同一芯片上的存在意味着系统设计团队必须在两个独立的设计环境中工作。两个PolarFireSoC工具链都输入到配置器中,该配置器生成:
“软件”配置,用于初始化存储器映射的C数据结构,将在SoftConsole集成开发环境(IDE)中使用
“硬件”配置,即所谓的组件,将在LiberoFPGAIDE中使用
两个IDE之间的交互如图4所示。
图4:用于FPGA的LiberoIDE和用于MPU的SoftConsoleIDE之间的关系(图片来源:Microchip)
单独的工具也支持设计仿真:Renode用于在多核处理器部分上运行的软件,ModelSim用于SoC
的
FPGA部分。Microchip还为调试将在PolarFireSoC上运行的复杂应用程序做好了准备。其片上调试机制通过JTAG接口与调试工具进行通信:
可以使用传统的openOCD调试器调试C代码
FPGA调试工具更加专业化,因为在组件中默认嵌入了调试机制,可以动态访问FPGA矩阵的任何内部节点。专用工具Smartdebug使用此内部调试电路提供一种直观的方法来调试应用中基于FPGA的部分。
有趣的是,将应用程序移植到RISC-V环境的条件与在Arm环境中的条件相似。没有两个基于Arm内核的器件具有相同的存储器映射,同样地,没有两个基于RISC-V的系统将共享相同的存储器映射。因此,从一个Arm内核移植到另一个内核与从Arm内核移植到RISC-V内核的工作量原则上相同。
设计友好的操作和开发环境
因此,PolarFireSoC提供了将可编程硬件功能和用于软件应用的高性能多核平台集成在单个芯片中的优势。这种混合架构确实需要并行使用两个开发环境,但Microchip非常