朱玉龙-YL
2023.09.28 05:25

【芝能智芯——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 生态系统的进一步壮大奠定了基础。

本文版权归属原作者/机构所有。

当前内容仅代表作者观点,与本平台立场无关。内容仅供投资者参考,亦不构成任何投资建议。如对本平台提供的内容服务有任何疑问或建议,请联系我们。