互联网资讯 / 手机数码 · 2024年2月17日 0

一款被誉为“无所不能”的CPU架构

为数众多的半导体初创公司希望打入市场,它们要么拥有一些大型 AI 训练芯片,要么拥有一些超快速的小型推理设备,或者可能是针对一个特定问题的 HPC 专注设计。一些公司资金充裕,其中不乏融资超过1亿美元的公司,还有一些资金支持超过10亿美元。在本文中,我们着眼于 TachyuM,这是一家美国/欧盟芯片初创公司,它于2018年首次出现在我们的视野中,其高性能、高频率的处理器设计令人惊叹,涵盖了诸多细分市场。在2022年的今天,他们已经修改了早期的设计,总而言之,它看起来更像是一个可以真正打破常规的计算架构。

我们所要讨论的是拥有128核、每核2×1024位向量、5.7 GHz、1 TB/秒的DRAM的庞然大物。有人说我们的数据中心的热余量用完了,这显然是错误的,TachyuM证明了这一点。在本文中,我们将介绍新设计与旧设计的比较,以及我们可以从TachyuM的披露中收集到哪些信息。

今天,TachyuM仍然称他们的架构为“Prodigy”。但他们已经根据客户的反馈对其进行了彻底改革。VLIW捆绑包被更传统的ISA取代,硬件调度功能更强大,提高了每个时钟的性能。缓存层次结构也发生了重大变化。2022 Prodigy的变化足够广泛,以至于对2018年Prodigy所做的大部分分析都不再适用。

在高层次上,2022 Prodigy仍然是一个非常广泛的架构,具有巨大的向量单元:

与2018 Prodigy一样,2022 Prodigy的目标是极高的时钟速度和高内核数。事实上,这些目标已经被提高了,时钟速度从4 GHz提高到5.7 GHz,内核数从64增加到128。本文中我们将更深入地了解细节。

TachyuM最初试图通过将指令集与底层硬件实现紧密联系来简化CPU设计。VLIW包允许非常简单的解码和映射逻辑。编译器协助调度,它会设置“停止位”来标记可以并行发布的指令组。这种方案表面上类似于NVIDIA在KepleR和后来的GPU架构中使用静态调度,并让内核跳过硬件中的依赖检查。

但是将ISA绑定到硬件会产生前向兼容性问题。例如,如果新架构具有不同的指令延迟,则必须设置不同的停止位。TachyuM的潜在客户不会接受产品世代之间的ISA更改。在实践中,像将ARM支持添加到复杂的软件项目这样“简单”的事情可能需要18个月以上的时间。支持新的ISA必须是一次性投资,而不是每次CPU升级都会重复的投资。

最新的Prodigy架构通过放弃原来的VLIW方案转而采用更传统的ISA来解决这个问题。指令有四个或八个字节长。编码不再包含“停止位”,这意味着现在Prodigy在硬件中进行依赖性检查,而不是依赖硬件来标记独立指令组。

尽管放弃了VLIW设置,Prodigy仍然可以维持每个周期8条指令——对于目标为5.7 GHz的CPU来说,这是一项了不起的成就。根据Rado所说,这个内核宽度对于在AI和HPC负载中实现最大性能是必要的。在整数工作负载中,4宽的内核就足够了,而增加到8宽的内核只会将性能提高7-8%。但是,AI或HPC程序中的一次循环迭代可能会执行两条向量指令、两次加载、递增循环计数器并有条件地分支。将内核宽度提高到8宽将使Prodigy在每个周期完成一个循环迭代。

为了保持这种吞吐量,Prodigy可以从L1指令高速缓存中提取每个周期128字节。考虑到64个字节足以包含8条指令,这绝对是大材小用。TachyuM可能选择了更多的获取带宽,以在所占用的分支周围保持高吞吐量。Prodigy没有大的L0BTB,因此与Zen 3和Golden COVe相比,它可能会在所采用的分支周围遇到更多的指令获取停顿问题。通过一次获取128B字节,前端可以在BTB延迟丢失一个周期后“赶上”。

Prodigy的分支预测器也得到了改进。BTB容量翻倍至2048条,预测算法是2018Prodigy中gshaRe one的改进版。但总的来说,Prodigy的预测器与最新的AMD、ARM和Intel高性能内核中的预测器不同。AMD的Zen 3有一个6656入口的主BTB。ARM的NeOVeRse V1拥有8192个BTB入口,而英特尔的Golden COVe拥有令人难以置信的12K入口BTB。BTB容量并不是唯一的缺点。Prodigy继续使用绑定到指令缓存的BTB。这简化了设计,因为无需进行单独的BTB查找——L1i查找为您提供指令字节和分支目标。AMD的Athlon也做了类似的事情,ARM在2010年代中期使用了这个方案。但是来自AMD、ARM和Intel的现代内核已经转移到解耦BTB,允许它们在代码占用量超过L1i容量时保持高指令带宽。对于耦合的BTB,L1i未命中意味着BTB未命中。并且不知道下一个分支将去哪里,这大大降低了在指令缓存未命中后您可以有效预取的距离。但是TachyuM正在使用标准单元库,并以非常高的时钟速度为目标,而使用这些标准单元库的解耦BTB被认为过于昂贵。

为了解决这个问题,TachyuM将L1i容量增加到64KB,是2018年Prodigy的四倍,以确保L1i失误减少。Rado指出,specint2017中的64KB L1i未命中率低于0.5%。我们对AMpeReAltRa的64KB L1i的观察大致一致。更大的L1i还有助于提高电源效率,并最大限度地减少与L2带宽上的数据端的争用。

ARM采用了更大的64KB L1i高速缓存,效果极佳,并且L1i未命中率低。

2022Prodigy还继续依赖于相当过时和基本的gshaRe预测算法,而现代CPU则使用更复杂的技术,可以在给定的存储预算下实现更好的预测精度。TachyuM考虑构建更高级的分支预测器,但同样,标准单元库意味着实现tagE预测器会过多地降低时钟速度。由于高时钟速度要求,除了感知器预测器 – 您可以想象在一个时钟周期内汇总一批权重需要做很多事情。包含本地历史的方案也不可行,因为高获取带宽意味着每个周期必须执行多个预测。具有本地历史的多个预测将需要每个周期进行多次历史表查找。因此,TachyuM坚持使用基于全局历史的预测器,并且每块8条指令进行预测。这使分支预测器保持简单,同时让它跟上Prodigy内核宽度所需的预测带宽。

Rado提到Prodigy的未来版本可以使用自定义单元,这将让他们考虑更高级的分支预测器,同时仍然以非常高的时钟速度为目标。相比之下,英特尔似乎在分支预测器中使用了在内核其他地方看不到的自定义SRAM单元。AMD采用了不同的方法,将相同的SRAM单元用于分支预测器存储、L1指令缓存和微操作缓存。