关注老石谈芯,一起探究芯片本质
微信的推送规则进行了调整
如果文章对你有用,请在文末点击“在看”,“分享”和“
这样就不会错过老石的每一篇推送了
8月19日,英特尔召开了一年一度的架构日(Intel Architecture Day 2021)。在这场两个多小时的活动里,英特尔详细分享了包括Alder Lake SoC, Sapphire Rapids、Xe HPG GPU、Ponte Vecchio、Mount Evans等一系列芯片和系统的架构细节,同时也深入介绍了包括AMX、XeSS、oneAPI等指令集和软件框架的最新进展。
从2018年英特尔第一次举办架构日开始,这就是我每年必追的重要技术活动,因为它能从芯片架构师的视角,带我们深入探究这些驱动下一代技术革新的最新进展,而不是单纯的产品发布或展示,这也能极大地帮助我们提升视野,并从中看清未来技术发展的大方向。
总体来说,这次的架构日发布的11个技术内容可以分成三个大类,分别是客户端CPU、数据中心CPU和IPU、以及GPU。接下来我也会通过三篇文章,分别介绍每个大类的具体技术细节,今天就先从客户端CPU Alder Lake、以及最新的性能核+能效核混合架构开始说起。
我用思维导图的形式,总结了本文涉及的全部技术要点,请在公众号后台回复“架构日”获取。
1、什么是架构
在开始具体的技术解析之前,我们值得先明确“架构”的定义,以及现代芯片的架构设计思路。
在今年架构日的演讲中,英特尔首席架构师Raja Koduri提出了一个对于性能的“灵魂拷问”,那就是如何在四年时间内,将芯片性能提升1000倍?
如果从半导体工艺制程的角度来看,单纯靠晶体管尺寸的缩减所带来的收益,远远无法满足人们对电路性能与功耗的严苛需求。所以除了摩尔定律的不断延续之外,还需要考虑如何更好地利用这些不断增加的晶体管,并基于此构建更加高效的架构。
对于某种芯片来说,它的架构可以分成很多层级,从最底层的晶体管、到基础逻辑单元、再到更复杂的模块和系统,这些都是芯片“纵向”的架构分层。除此之外,电路架构也可以横向扩展,比如针对计算、存储、互连的单元,也都有各自的架构和层级。这些不同的电路结构混合在一起,就可以构成更加复杂,但也能更好地兼顾更多样化应用需求的异构计算模式。
Raja和他的老朋友Jim Keller曾经说过,晶体管尺寸每缩小10倍,就会衍生出一种全新的计算模式。基于此,他将英特尔现有的计算模式分成了标量计算、向量计算、矩阵计算和空间计算四类,分别对应基于CPU、GPU、ASIC和FPGA的计算模式。通过对这四种计算类型的组合,就有可能提供超越线性的性能提升。
现在业界架构设计的一个大趋势,就是根据特定应用,针对性的设计芯片结构,并且对不同的计算模式取长补短,以取得系统性能与功耗的平衡及优化。这也是接下来将会介绍的性能核+能效核架构、以及下一代客户端处理器Alder Lake的主要设计思路。
2、高能效x86内核 Gracemont
之前的文章里介绍过,现代CPU的微架构可以分成前端和后端两个部分,其中前端主要实现“取指”和“解码”这两个操作,后端主要实现“执行”和“写回”这两个操作。
对于前端来说,它要尽可能多地从内存里获取指令,并且把它们解码成后端能够直接执行的微操作。也就是说,它的主要任务就是为后端提供充足的弹药。前端的另外一个重要任务就是进行分支预测,也就是保证获取的弹药是有价值的,而不至于错给机关枪输送了手枪的子弹。
基于这个思路,前端在做架构设计时有两个主要目标,一个是要有足够的深度,也就是可以缓存足够多的指令,这样才能减少数据从内存传输到CPU的等待时间,也能降低频繁访问内存带来的功耗。另外一个就是分支判断时要足够准确,特别是遇到循环、跳转等语句时,要尽可能预测出正确的后续动作,避免因为预测错误而冲刷流水线,从而带来巨大的性能损失。
在这次架构日里,英特尔发布了代号为Gracemont的高能效内核微架构(下称“能效核”,或“E-core”)。它的前端就包含了64KB的指令缓存,以及进一步优化的分支预测单元。
能效核前端的另外一个重要特点,就是包含了两个3宽度的乱序解码器,这个实际上是继承了它的前任、也就是两年前的Tremont低功耗内核。有了这两个乱序解码器,不仅可以单周期完成高达六个指令的解码,还可以在这两个解码器集群之间做负载均衡和乱序执行,从而进一步提升解码操作的并行性。
能效核的后端也经过了大幅改进。后端优化最主要的目的就是要尽可能多地提升“宽度”,也就是让更多解码后的微指令可以并行、乱序执行,这就需要更多的发射端口、更多乱序执行窗口、更多算术逻辑单元ALU等等。在这次发布的能效核后端,就包含17个端口、256个乱序窗口,还有多个整型、浮点型、向量运算单元,可并行支持不同类型的运算和指令集扩展。
值得注意的是,这次发布的Gracemont内核并没有采用之前一直使用的“低功耗”内核这个说法,而是改成了“高能效核”这种命名,这代表着Gracemont可以更好地平衡“性能”和“功耗”这两个同等重要、但貌似相互矛盾的设计指标。
比如和经典的Skylake架构相比,能效核的单核单线程可以在同等功耗水平的情况下将性能提升40%;或者在同等性能要求的情况下,把功耗降低40%。对于多核多线程来说,能效核的性能提升或功耗减少也可分别达到80%。这也受益于架构设计时对于可扩展性的考虑,使得不同类型的应用可以采用不同数量的能效核,从而对性能进行线性扩展。这个在接下来分析Alder Lake的时候会详细展开。
实事求是的说,Skylake使用的是14纳米工艺,而能效核采用了Intel 7工艺,这肯定会在一定程度上帮助Gracemont取得能效的提升。但前面分析的这些架构升级和优化,才是帮助其能效大幅提升的更重要因素。 
3、高性能x86内核
如果说Gracemont的设计需求是尽量平衡性能和功耗,那么这次发布的代号为Golden Cove的内核微架构就只有一个主要目的,那就是对单线程性能的极致扩展。
之前的文章里介绍过,现代高性能CPU架构设计的主要思路,是以通用计算性能升级为主,同时兼顾部分专用领域的加速,比如人工智能、加密和安全等等。“通用”和“专用”就像两条螺旋结构一样,共同组成了现代CPU的DNA。
从通用性的角度来说,CPU不仅要能应对各种不同的应用场景,还应该有足够高的扩展性。也就是说,相同的内核架构可以适用于不同的设备,小到笔记本、再到桌面级PC、再到数据中心服务器,这就特别需要进行模块化的设计,同时对多核间的互联、缓存管理、资源分配等等一系列技术问题提出了挑战。
从专用性的角度来说,以人工智能为代表的应用正不断兴起和普及,这就需要架构师考虑是否需要设计新的指令集或者处理单元,从而更加高效地承载和加速这些特定应用。
与能效核的改进类似,这次发布的高性能内核架构(下称性能核,或P-core)的整体优化原则也是针对前端和后端分别进行,稍微有所差别的是,性能核不论是前端,还是后端,都同时变得更宽和更深了。这里不仅指的是前后端的流水线、执行单元、乱序窗口,还包括片上缓存和存储系统。
另外值得注意的是,性能核的前、后端也变得更加“智能”,比如前端的分支预测单元就使用了机器学习的方法,可以根据代码量动态调整缓存大小。后端也可以在分配微指令的时候预先执行一些简单指令,从而快速释放后端执行流水线的资源,提升系统吞吐量。其存储单元也可以学习程序的读写模式,从而判断数据间的依赖程度,并以此作为进出缓存的依据。
根据英特尔的数据,性能核的通用性能和前一代Cypress Cove相比,平均提升了19%
除了通用计算性能之外,更加吸引我的是英特尔提出了一个全新的指令集扩展AMX – Advanced Matrix Extensions。它专门为数据中心里的AI训练和推理应用设计,主要用来加速矩阵操作,特别是矩阵乘法运算。和英特尔现在的VNNI(Vector Neural Network Instructions)相比,AMX可以在每核心每周期内完成2048次INT8操作,性能提升达8倍。AMX可以作为专门的AI协处理器来使用,集成到数据中心CPU里,这个在下篇文章介绍Sapphire Rapids的时候再深入探讨。
4、下一代客户端SoC – Alder Lake
Alder Lake是本次架构日的重头戏之一,也是很多人最为关注的产品。和之前所有客户端CPU不同的是,Alder Lake采用了统一的芯片架构,将会涵盖包括超轻薄笔记本、商用机和高性能游戏PC在内的所有的客户端产品。它也是英特尔首个采用性能核和能效核混合架构的CPU产品,会根据不同的终端应用场景选择不同数量的能效核与性能核进行搭配。
比如,对于桌面端CPU,Alder Lake可以使用8个性能核、8个能效核、高速PCIe接口、以及可选的Xe集成GPU。对于移动端CPU,就可搭配6个性能核、8个能效核、更多处理单元的Xe集显,以及更多的Thunderbolt接口。这种基于模块化的混合设计,能极大提升了架构的可扩展性,也能更灵活地应对不同终端的实际需求。
根据英特尔公布的数据,Alder Lake最高可以支持16个混合内核、24个线程、以及30MB的L3缓存,同时支持DDR5-4800、16通道PCIe 5.0、Thunderbolt 4、Wi-Fi 6E等等这些最新的接口、存储和数据传输技术。Alder Lake将基于Intel 7工艺制造,并将于今年秋天正式面世
特别值得一提的是,为了实现线程和任务在不同类型的内核之间进行高效调度,英特尔特别提出了名为线程调度器(Thread Director)的硬件架构。它存在于操作系统和内核架构之间,可以监测线程和内核的运行情况,并且把这些信息传递给操作系统,为OS里的线程调度提供支持。
比如,一些对性能要求比较高的应用就会被优先放在性能核上运行,一些后台任务则会被放在能效核上运行。如果有优先级更高的高性能应用出现,线程调度器也可以帮助操作系统决定,将性能核上的哪些线程转移到能效核上运行。也就是说,这些调度全部都是动态完成,并不依赖于具体的软件或静态调度方法
事实上,这是一个典型的架构选择问题。我们可以选择纯软件的方式来完成线程调度,但这会极大增加操作系统的压力,并且会让软件开发者不得不修改既有代码,才能决定程序运行的位置。同时由于是软件操作,不同内核调度的延时和准确性也无法保证。这些也是推动硬件级线程调度器产生的原因。
在架构日上,英特尔表示正在和微软合作,优化线程调度器在Windows11上的支持,这也将是Windows11的一个重要特性。在架构日之后的技术交流环节,我也问了关于其他操作系统的支持情况,英特尔说Linux的支持也在开发中,但目前Win11是主要优先支持的目标
小结
采用不同种类的内存进行CPU设计,在手机领域已经是非常常见的方法了。英特尔在Alder Lake里首次尝试采用高性能核+高能效核的混合模式设计SoC,其实也是不断突破性能与能效极限的必然选择。我们也能从这次发布的内核与芯片里,看到很多计算机架构设计发展的大趋势和新思路,它们将会引导未来芯片与半导体技术的发展,这些或许比某种具体的产品实现更为重要。
我用思维导图的形式,总结了本文涉及的全部技术要点,请在公众号后台回复“架构日”获取。
在下篇文章中,我会继续解读英特尔2021架构日发布的数据中心芯片,包括下一代数据中心处理器Sapphire Rapids、以及数据中心基础设施处理器(IPU)Mount Evans等产品,谢谢关注。
(注:本文仅代表作者个人观点,与任职单位无关。)
更多芯片技术解读和资料分享,并与老石一对一交流,欢迎加入知识星球:“老石谈芯-进阶版”,一个关乎技术与观点的互动社区。
往期精选
如何设计一个高性能CPU?
什么是CPU在人工智能时代的独特优势
英特尔新任CEO的“开挂”人生
继续阅读
阅读原文