【芝能智芯——SiFive 的 P870 内核】
●执行引擎P870 具备大型的后端资源,与 ARM Cortex X 系列或 AMD Zen 4 相当。这些资源包括重新排序缓冲区、寄存器文件容量等,尽管加载和存储队列略显不足。iFive 选择了一种执行端口布局,与 ARM 的 Cortex X2 策略有一些相似之处。他们采用了小型分布式调度程序,从而产生了大量的执行端口。分布式调度程序可能很难调整,因为任何一个调度队列填满都可能导致停滞。为了解决这个问题,SiFive 采用了与苹果 Firestorm 类似的策略。每个执行集群都有一个非调度队列,以防止调度队列填满时重命名器停止。在执行单元方面,P870 共有六个端口,端口数量与 Cortex X2 相匹配,但每个端口都有一个专用的调度队列。Cortex X2 将两个端口用于处理分支操作,P870 则使其中一个分支端口也能够处理一般的 ALU 操作。●浮点运算浮点执行资源相对于整数执行资源而言较为有限。P870 具备两个浮点管道,每个管道能够处理最常见的操作。SiFive 着重强调了其浮点加法和乘法的出色性能,仅需 2 个周期的延迟。与大多数其他现代 CPU 不同,SiFive 的演示表明 P870 具备独立的浮点和矢量寄存器文件。具备不同数量的重命名寄存器,并且彼此之间不是倍数关系(减少了融合情况的可能性)。浮点和矢量寄存器文件各自可以具备较低的端口数。供给两个乘加单元所需的输入达到了六个,较低的端口数应该能够实现更节省空间的寄存器文件。●矢量执行P870 支持一对 128 位宽矢量执行管道,这在 RISC-V 领域是一大进步,P870 还引入了针对 RISC-V 的 LMUL 功能的独特机制,称为向量排序器,用于提高矢量指令的效率。P870 支持矢量执行,配备了一对 128 位宽的管道。这在 P870 的架构中是一个弱点,但在 RISC-V 世界中仍然是一大进步。与之相比,其他 RISC-V 芯片,如 Ventana 的 Veyron V1,只具有标量 FP 执行能力,根本没有矢量执行能力。一对 128 位的管道大致与 ARM 的 Neoverse N1 和 N2 上的管道相匹配,并且可以提供可接受的矢量性能。 P870 具有独特的应对机制,针对 RISC-V 的 LMUL 特性,称为矢量顺序器。疯狂的程序员可以将 LMUL 设置为大于 1 的值,使矢量指令寻址连续的寄存器块。通常,奇怪的复杂事情是由解码器将指令分割成多个微操作来处理的。但如果 LMUL 不等于 1,这样做将消耗大量的解码器和重命名器带宽。 如果 LMUL > 1,SiFive 会在管道中进一步拆分矢量指令。这样做意味着 LMUL = 2 的指令将仅消耗一个解码槽。在顺序器之后,将消耗多个调度器槽,并根据需要在多个周期内发出其微操作。对 SiFive 的管道幻灯片进行了仔细观察,表明顺序器可以在短短一个周期内分解矢量操作。矢量单元在矢量顺序器之后放置了自己的寄存器重命名阶段,因此在分割矢量操作后分配物理寄存器。与所有新的架构功能一样,我们必须拭目以待,看看 RISC-V 的 LMUL 会有多大的用处。●缓存和内存访问 P870 具有三个用于地址生成的管道,两个管道可以处理加载或存储操作,而第三个管道只处理加载操作。这种 AGU 设置与 Cortex X2、A710 和 Zen 4 上看到的类似。数据缓存访问需要四个周期。有趣的是,地址生成、标签查找和数据缓存访问在三个周期内完成。P870 额外消耗一个管道阶段(Drv)来移动数据。我想知道未来的设计是否会实现 3 个周期的加载到使用延迟。这应该是完全可行的。毕竟,AMD 的 Athlon 系列在古老的工艺节点上实现了 64 KB L1D 的 3 个周期延迟,同时以相似的频率运行。 地址翻译由 64 个条目的 DTLB 处理,并由 1024 个条目的 L2 TLB 支持。现在的 L2 TLB 有点小,但 ARM 的 Cortex A710 上也有类似大小的 L2 TLB。 L1D 缺失由共享的、非包含的 L2 缓存处理。L2 缓存是分段的,用于处理来自多个核心的访问,并具有 16 个周期的延迟。英特尔的 E-Cores 也是以四核簇的方式排列,具有共享的 L2 缓存,延迟为 20 个周期。SiFive 允许客户配置 L2 的大小,但他们以 4 MB 的 L2 配置作为示例。为了处理一致性,L2 复合体维护监听过滤器来跟踪核心私有缓存内容,其方案听起来类似于 Cortex A72 使用的方案。 P870 的 L3 缓存在簇之间共享。L3 的容量和延迟取决于具体的实现,但 SiFive 在性能估算中使用了一个 16 MB 的 L3 配置。●可靠性特征 现代 CPU 都采取各种措施来保护各种缓存和其他结构,以提高可靠性。SiFive 的 P870-A 是 P870 核心的汽车变种,特别注重错误检测和纠正。除了用于缓存和寄存器文件的标准 ECC 和奇偶校验保护集之外,SiFive 还实现了高可靠性缓存控制器和互连。CPU 通常在它们的互连中的各种队列和传输链路上都具备奇偶校验或 ECC 保护。例如,Zen 4 的可扩展数据端口(Infinity Fabric 的接口)具备奇偶校验保护,UMC(内存控制器)前面的队列具备 ECC 保护。 图片SiFive 可以将一对 P870 核心以锁步方式运行,以进一步提高可靠性,有点类似于飞机和航天器在多台计算机上运行冗余计算。随机位翻转不太可能以相同的方式影响多个核心,因此这种方法通过基本上复制所有核心结构来显着提高可靠性,但代价是计算吞吐量较低。这种锁步操作是可能的,因为每个核心在重置后都以明确定义的状态开始,并且此后的操作是确定性的。●最后RISC-V 虽然起步较晚,但增长迅速。SiFive 的 P870 展示了能力和野心,希望能与 ARM 竞争并在市场上获得份额。RISC-V 还需要发展更完善的软件生态系统来支持其发展,这是个挑战。SiFive 的 P870 内核在性能和功能方面表现出色,为 RISC-V 生态系统的进一步壮大奠定了基础。The copyright of this article belongs to the original author/organization.
The views expressed herein are solely those of the author and do not reflect the stance of the platform. The content is intended for investment reference purposes only and shall not be considered as investment advice. Please contact us if you have any questions or suggestions regarding the content services provided by the platform.