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

一款被誉为“无所不能”的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指令缓存和微操作缓存。

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.

登录免费注册