首页 - 财经 - 产业观察 - 正文

CPU设计,又一次革命

关注证券之星官方微博:

(原标题:CPU设计,又一次革命)

公众号记得加星标,第一时间看推送不会错过。

来 源: 内容 编译自 venturebeat 。

三十多年来,现代CPU一直依赖推测执行来保持流水线满负荷运转。推测执行在20世纪90年代出现时,被誉为一项突破性技术——正如流水线技术和超标量执行在更早的几十年里所取得的成就一样。它们都标志着微架构的一次代际飞跃。通过预测分支指令和内存加载的结果,处理器可以避免停顿,并保持执行单元的持续运行。

但这种架构转变也带来了代价:预测失败会造成能源浪费,增加复杂性,并导致诸如 Spectre 和 Meltdown 等漏洞。这些挑战促使人们寻求另一种替代方案:确定性的、基于时间的执行模型。正如 David Patterson在 1980 年所观察到的,“RISC 架构仅仅通过更简单的设计就能提升速度。” Patterson 的简洁原则为一种新的、替代推测的方案奠定了基础:确定性的、基于时间的执行模型。

自推测执行成为主流范式以来,一种全新的方法首次被发明出来。这项突破体现在最近获得美国专利商标局(USPTO)批准的六项专利中。这些专利共同引入了一种截然不同的指令执行模型。与传统的推测执行技术截然不同,这种新型的确定性框架用基于时间、容错性强的机制取代了猜测。每条指令在流水线中都被分配一个精确的执行槽,从而形成严格有序且可预测的执行流程。这种重新设计的模型重新定义了现代处理器处理延迟和并发问题的方式,提高了效率和可靠性。

一个简单的计时器用于确定性地设定指令未来执行的确切时间。每条指令都会被分派到一个执行队列中,其执行时间根据指令的数据依赖关系和资源可用性(包括读总线、执行单元以及到寄存器文件的写总线)预先设定。每条指令都会一直排队,直到其预定的执行时间到来。这种新的确定性方法可能是自推测性架构成为标准以来,它所面临的第一个重大架构挑战。

该架构自然而然地扩展到矩阵计算领域,目前 RISC-V 指令集提案正在接受社区审查。可配置的通用矩阵乘法 (GEMM) 单元,规模从 8×8 到 64×64 不等,可以使用基于寄存器或直接内存访问 (DMA) 的操作数进行操作。这种灵活性支持广泛的人工智能和高性能计算 (HPC) 工作负载。早期分析表明,其可扩展性可与谷歌的 TPU 内核相媲美,同时保持了显著更低的成本和功耗。

与其直接与通用CPU进行比较,更准确的参考点应该是向量和矩阵引擎:传统CPU仍然依赖于推测和分支预测,而这种设计则直接将确定性调度应用于GEMM和向量单元。这种效率不仅源于可配置的GEMM模块,还源于基于时间的执行模型,在该模型中,指令会根据操作数的就绪状态和资源可用性进行解码并分配精确的执行时隙。

执行过程并非在众多候选方案中随机或启发式地选择,而是一个可预测的、预先规划的流程,确保计算资源持续处于繁忙状态。规划好的矩阵基准测试将提供与 TPU GEMM 实现的直接比较,突显其在不增加数据中心级开销的情况下提供数据中心级性能的能力。

批评者可能会认为静态调度会给指令执行带来延迟。但实际上,延迟早已存在——等待数据依赖或内存读取。传统CPU试图通过推测来掩盖这种延迟,但当预测失败时,由此产生的流水线刷新会引入延迟并浪费电力。

时间计数器方法能够识别这种延迟,并确定性地用有用的工作填充它,从而避免回滚。正如第一项专利所述,指令仍然保持乱序执行的效率:“带有用于静态分发指令的时间计数器的微处理器能够基于预测的时间而非推测性的指令发出和恢复来执行指令”,它具有预设的执行时间,但无需寄存器重命名或推测性比较器的开销。

为什么speculation停滞不前?

推测执行通过在结果未知之前进行预测来提升性能——提前执行指令,如果预测错误则丢弃这些指令。虽然这种方法可以加速工作负载,但也引入了不可预测性和能源效率低下的问题。预测错误会在流水线中注入“空操作”,导致进度停滞,并将能源浪费在永远无法完成的工作上。

在现代人工智能和机器学习工作负载中,这些问题尤为突出,因为向量和矩阵运算占据主导地位,且内存访问模式不规则。长时间的读取操作、不可缓存的加载以及未对齐的向量经常会触发推测性架构中的流水线刷新。

其结果是性能断崖式下降,且性能表现会因数据集和问题规模的不同而出现巨大差异,使得一致的调优几乎不可能实现。更糟糕的是,推测性计算的副作用暴露了系统漏洞,导致了备受瞩目的安全攻击。随着数据强度的增长和内存系统不堪重负,推测性计算难以跟上步伐,从而违背了其最初承诺的无缝加速。

基于时间的执行和确定性调度

本发明的核心是一个带有时间计数器的向量协处理器,用于静态地分发指令。指令并非依赖推测,而是仅在数据依赖关系和延迟窗口完全已知时才发出。这消除了猜测和代价高昂的流水线刷新,同时保留了乱序执行的吞吐量优势。基于此专利框架构建的架构具有深度流水线(通常跨越 12 个阶段),并结合了支持高达 8 路解码的宽前端和超过 250 个条目的大型重排序缓冲区。

如图 1 所示,该架构的顶层与传统的 RISC-V 处理器类似,指令提取和解码阶段将指令输入到执行单元。创新之处在于集成了时间计数器和寄存器记分板,它们巧妙地位于提取/解码阶段和向量执行单元之间。与依赖推测性比较器或寄存器重命名不同,该架构利用寄存器记分板和时间资源矩阵(TRM) 根据操作数就绪状态和资源可用性确定性地调度指令。


图 1:确定性处理器的高级框图。取指/译码单元和向量执行单元之间设有时间计数器和记分板,确保指令仅在操作数准备就绪时发出。

在确定性处理器上运行的典型程序,其启动方式与任何传统的 RISC-V 系统基本相同:指令从内存中取出并解码,以确定它们是标量、向量、矩阵还是自定义扩展指令。区别在于指令分发环节。处理器不再推测性地发出指令,而是使用一个周期精确的时间计数器,配合寄存器记分板,来精确决定每条指令的执行时间。这种机制提供了一种确定性的执行契约,确保指令在可预测的周期内完成,并减少指令槽的浪费。

结合寄存器记分板,时间资源矩阵将指令与执行周期关联起来,使处理器能够确定性地规划在可用资源上的调度。记分板跟踪操作数就绪状态和冲突信息,从而无需寄存器重命名或推测性比较器即可进行调度。通过监控诸如读后写 (RAW) 和写后读等依赖关系,它确保冲突得到解决,而无需进行代价高昂的流水线刷新。正如专利中所述,“在多线程微处理器中,时间计数器和记分板允许围绕缓存未命中、分支刷新和 RAW 冲突进行重新调度,而无需进行推测性回滚。”

操作数准备就绪后,指令会被分派到相应的执行单元。标量运算使用标准的算术逻辑单元 (ALU),而向量和矩阵指令则在连接到大型向量寄存器文件的宽执行单元中执行。由于指令仅在条件安全时才执行,因此这些单元能够保持高利用率,避免因预测错误而导致的浪费工作或恢复周期。

这种方法的关键在于一个简单的计时器,它根据数据就绪和资源可用性来协调执行,确保指令仅在操作数就绪且资源可用时才执行。同样的原理也适用于内存操作:该接口预测加载和存储操作的延迟窗口,使处理器能够用独立的指令填充这些延迟窗口,从而保持执行流畅。

编程模型差异

从程序员的角度来看,流程依然熟悉——RISC-V 代码的编译和执行方式与以往相同。关键区别在于执行契约:处理器不再依赖动态推测来隐藏延迟,而是保证了可预测的调度和完成时间。这既消除了推测带来的性能断崖和能量浪费,又保留了乱序执行的吞吐量优势。

这种观点强调了确定性执行如何在保留熟悉的 RISC-V 编程模型的同时,消除推测带来的不可预测性和浪费。正如John Hennessy 所说:“在运行时做可以在编译时完成的工作是愚蠢的”——这句话体现了 RISC 的基础及其前瞻性的设计理念。

RISC-V 指令集架构 (ISA) 提供自定义指令和扩展指令的操作码,包括浮点运算、DSP 运算和向量运算。因此,处理器能够确定性地执行指令,同时保留乱序执行的优势。通过消除推测运算,该设计简化了硬件,降低了功耗,并避免了流水线刷新。

在向量和矩阵运算中,这些效率提升更为显著,因为宽大的执行单元需要持续高效利用才能达到最佳性能。向量扩展需要宽寄存器文件和大型执行单元,这在推测型处理器中会导致分支预测错误,需要进行代价高昂的寄存器重命名才能恢复。而在确定性设计中,向量指令仅在提交后执行,因此无需重命名。

每条指令都根据一个精确到周期的计时器进行调度:“计时器提供了一个确定性的执行契约,确保指令在可预测的周期完成,并减少浪费的指令槽。”向量寄存器记分板在向执行流水线发出指令之前解决数据依赖关系。指令以已知的顺序在正确的周期被分派,从而使执行既可预测又高效。

向量执行单元(整数和浮点)直接连接到大型向量寄存器文件。由于指令永远不会被刷新,因此不存在重命名开销。记分板确保安全访问,而时间计数器则使执行与内存就绪状态对齐。一个专用内存块预测加载的返回周期。处理器不会停顿或推测执行,而是将独立的指令调度到延迟槽中,从而保持执行单元的繁忙状态。“带有用于静态调度指令的时间计数器的向量协处理器,可确保宽执行单元的高利用率,同时避免预测错误带来的惩罚。”

在当今的CPU中,编译器和程序员编写代码时假定硬件会动态地重新排列指令并推测性地执行分支。硬件通过寄存器重命名、分支预测和恢复机制来处理冒险。程序员可以从中受益,但代价是不可预测性和功耗。

在确定性时间架构中,指令仅在时间计数器指示其操作数准备就绪时才会被调度。这意味着编译器(或运行时系统)无需插入用于错误预测恢复的保护代码。相反,编译器调度变得更加简单,因为指令保证在正确的周期发出,无需回滚。对于程序员而言,该指令集架构 (ISA) 仍然与 RISC-V 兼容,但确定性扩展减少了对推测性安全机制的依赖。

在人工智能和机器学习中的应用

在人工智能/机器学习内核中,向量加载和矩阵运算通常会占据大部分运行时时间。在推测性CPU上,未对齐或不可缓存的加载操作可能会触发停顿或刷新,导致宽向量和矩阵单元资源不足,并将能源浪费在被丢弃的工作上。而确定性设计则以周期精确的时序来执行这些操作,从而确保高利用率和稳定的吞吐量。对于程序员而言,这意味着更少的性能断崖和更可预测的跨规模扩展。此外,由于这些专利是对RISC-V指令集架构的扩展而非替代,因此确定性处理器仍然完全兼容RVA23规范以及GCC、LLVM、FreeRTOS和Zephyr等主流工具链。

实际上,确定性模型并不会改变代码的编写方式——它仍然是 RISC-V 汇编语言或编译成 RISC-V 指令的高级语言。改变的是执行契约:程序员不再依赖于推测性的猜测,而是可以预期可预测的延迟行为和更高的效率,而无需针对微架构的特性调整代码。

行业正处于转折点。人工智能/机器学习工作负载主要由向量和矩阵运算构成,GPU 和 TPU 在这些方面表现出色——但代价是消耗大量电力并增加架构复杂性。相比之下,仍然依赖于推测执行模型的通用 CPU 则落后于时代。

确定性处理器能够在各种工作负载下提供可预测的性能,确保无论任务复杂度如何,都能保持一致的行为。消除推测执行可以提高能源效率,避免不必要的计算开销。此外,确定性设计能够自然地扩展到向量和矩阵运算,使其尤其适用于依赖高吞吐量并行性的人工智能工作负载。这种新的确定性方法可能代表着又一次飞跃:自推测执行成为标准以来,这是推测执行面临的第一个重大架构挑战。

确定性CPU能否取代主流计算中的推测运算?这还有待观察。但随着已颁发专利、创新技术得到验证以及人工智能工作负载日益增长的压力,范式转变的时机已经成熟。总而言之,这些进展预示着确定性执行将成为下一个架构飞跃——它将像推测运算曾经那样,重新定义性能和效率。

推测性标志着CPU设计领域的上一次革命;确定性很可能代表下一次革命。

https://venturebeat.com/ai/moving-past-speculation-how-deterministic-cpus-deliver-predictable-ai

*免责声明:本文由作者原创。文章内容系作者个人观点,半导体行业观察转载仅为了传达一种不同的观点,不代表半导体行业观察对该观点赞同或支持,如果有任何异议,欢迎联系半导体行业观察。

今天是《半导体行业观察》为您分享的第4214期内容,欢迎关注。

加星标第一时间看推送,小号防走丢

求推荐

微信
扫描二维码
关注
证券之星微信
APP下载
相关股票:
好投资评级:
好价格评级:
证券之星估值分析提示长和行业内竞争力的护城河较差,盈利能力良好,营收成长性较差,综合基本面各维度看,股价合理。 更多>>
下载证券之星
郑重声明:以上内容与证券之星立场无关。证券之星发布此内容的目的在于传播更多信息,证券之星对其观点、判断保持中立,不保证该内容(包括但不限于文字、数据及图表)全部或者部分内容的准确性、真实性、完整性、有效性、及时性、原创性等。相关内容不对各位读者构成任何投资建议,据此操作,风险自担。股市有风险,投资需谨慎。如对该内容存在异议,或发现违法及不良信息,请发送邮件至jubao@stockstar.com,我们将安排核实处理。如该文标记为算法生成,算法公示请见 网信算备310104345710301240019号。
网站导航 | 公司简介 | 法律声明 | 诚聘英才 | 征稿启事 | 联系我们 | 广告服务 | 举报专区
欢迎访问证券之星!请点此与我们联系 版权所有: Copyright © 1996-