我观看了英特尔于 2021 年 8 月发布的 2021 年架构日(撰写本文时的上个月)。看完英特尔关于他们的新 CPU 的视频后,老实说,我有点困惑。我猜新的微处理器不会再有 2 比 1 的线程与内核比率了。据说 i5 将有 10 核和 16 线程,而 i7 和 i9 是相似的,我只是不记得它们会是什么。不过据我了解,新的核心与线程比率是专用核心的结果。如果我猜对了,一些核心是“效率核心”,它们已经被命名Efficiency Cores
,而 CPU 中的其余核心是“性能核心”,毫不奇怪,它们被命名为Performance Cores
。
当新的微处理器发布时,很难知道哪些名称和数字实际上是基于计算机科学的,哪些只是为了使芯片看起来更好的营销尝试。换句话说,我想知道的是:
性能和效率核心实际上有什么问题,还是只是一种营销策略?如果这两个核心不仅仅是一种营销策略,并且拥有效率核心和性能核心将会产生影响,那么效率核心究竟会做什么与性能核心不同呢?
这是英特尔版本的ARM big.LITTLE。您有一些具有非常好的单线程性能的大内核(但它们在宽/深无序执行上花费了大量的功率),以及一些更简单的小内核,它们运行速度不快,但每次工作消耗的能量更少。例如,2 GHz 的效率核心可能与 1 GHz 的性能核心差不多快,但仍然使用更少的功率。(这些数字完全是虚构的,甚至不是对 Alder Lake 的猜测。英特尔有一些营销图表)。
性能 (P) 核心是下一代 Ice Lake核心,就像在主流台式机/笔记本电脑/服务器中一样。具体来说,Golden Cove(与 Sapphire Rapids Xeon 相同),但禁用了 AVX-512 支持。(除非 BIOS 选项禁用了 E 内核,或者您购买了没有任何 E 内核的桌面 Alder Lake [ pcworld ]。)
(混合芯片是新的,x86 硬件/软件生态系统无法让进程发现只有某些内核可以运行 AVX-512 而不会出现故障,如果可用,libc memcpy 将倾向于在每个进程中使用 AVX-512,所以最不坏的选择是将所有内核减少到它们的最低公分母。Gracemont 确实支持一堆像 AVX2 这样的东西,所以它没有低于 Haswell 基线,但它比 Ice Lake 和 Tiger Lake CPU 退了一步。请参阅说明套装:Alder Lake在最近 Anandtech 文章的 BIG Way 部分中转储 AVX-512。)
效率 (E) 内核是Gracemont,最新一代 Silvermont 系列,英特尔的低功耗 CPU。
最早的 Silvermont 系列 CPU 是相当低端的,具有乱序执行(仅用于整数,而不是 FP/SIMD),但查找指令级并行性的“窗口”要小得多,流水线要窄得多(并行解码或执行的指令更少)。它们是原始 Atom 的继承者,用于上网本和一些服务器设备,例如 NAS 盒。
但是有了Tremont和现在的 Gracemont,它们的规模显着扩大,显然 ROB 大小(ReOrder Buffer for out-of-order exec)为 256,高于 Tremont 的 208(与 Silvermont 的 32 相比;见David Kanter 的深潜入它,与哈斯韦尔)。相比之下,Skylake 的 ROB 是 224 个条目,而 Golden Cove 的 ROB 是 512。不过,Tremont 的目标是低功耗“微服务器”等;他们不会制造带有大量这些内核的芯片1。
Gracemont 有相当多的 SIMD 和整数执行单元,以及 5 宽的管道(在最窄处,分配/重命名),与 Ice Lake 的宽度相同!(但在缓存上花费的区域更少,最大时钟速度更低。)还有 4 个整数 ALU 端口,每个时钟 2x 加载和 2x 存储,2/clock SIMD FP,和 3/clock SIMD integer ALU(与 Ice Lake 相同)。所以这比老式的 Silvermont(2 宽)要强大得多。
我不清楚的是 Gracemont 如何与冰湖相比节电!也许它的其他一些乱序执行资源没有那么强大,例如用于跟踪尚未执行的微指令的调度程序(保留站)大小,为每个准备好输入的端口选择最旧的微指令。(如果后面的大部分指令都是独立的,那么一个大的 ROB 可以长时间隐藏一次缓存未命中的延迟,但是需要一个大的 RS 来将长依赖链与周围的代码重叠。例如,请参阅Skylake 上的这个微基准测试,以及这个更早的关于 OoO exec 的文章。)一个大的 RS 非常耗电,并且微指令以不可预测的顺序进入和离开它,这与 ROB 不同,ROB 可以是一个大的循环缓冲区,指令按程序顺序发出和退出。这2021 年英特尔架构日幻灯片似乎没有提到 RS 大小的数字。(而且它可能是用于不同端口的独立调度队列,这与英特尔大内核中的大多数统一调度程序不同,因为功率随大小线性扩展。)
(如果这听起来像是技术问题,但您想了解更多关于 CPU 架构的信息,请查看现代微处理器 90 分钟指南!如果您已经了解指令是什么,以及 CPU 获取、解码意味着什么,并执行一个。)
脚注 1:(除了现已停产的Xeon Phi计算卡;Knight's Landing 基本上是 72 个 Silvermont 内核和 AVX-512 螺栓连接,具有网状互连和一些快速缓存和本地内存。)
异构多核 CPU 的动机
桌面上的很多事情(比如播放视频、动画 UI、滚动网页或在您键入时运行拼写检查,或运行所有显示广告的蹩脚 javascript)只需要非常频繁的时间间隔占用一点 CPU ,所以唤醒一个高效的核心来做这件事比唤醒一个大的核心做同样的事情花费更少的总能量。
效率内核针对每个裸片面积的吞吐量进行了优化。提高一个核心的单线程性能会带来递减的回报(例如,每个核心的大缓存),但是当前计算中的很多东西都很难并行化(或者根本就没有并行化,因为它仍然很重要)。
良好的单线程性能对于交互式使用仍然非常重要。对于网页浏览,我会在一个巨大的 40 核 2.4GHz-max-turbo Xeon 系统上使用 5GHz-max-turbo 双核 Ice Lake。(这可能有点不切实际,因为大多数大型 Xeon 可以将一个或几个核心加速到高于 2.4GHz,如果其余部分处于空闲状态,但可以说是 40 个效率核心。)
GPU 与主流大核 CPU 完全相反:单线程性能几乎无用,但整体吞吐量非常好,但一些计算工作不容易在 GPU 上运行。(例如,运行编译器,即使如果您有多个需要重建的源文件,并行性也很大。)
拥有一堆效率核心对于确实具有一些并行性的东西来说应该很棒,就像一个大的编译工作一样。并且凭借其大量的 SIMD / FP 执行单元,可能还有视频编码,甚至像矩阵乘法这样的数字内容。(Gracemont 确实添加了 AVX2 以匹配“大”核心)。
因此,您至少需要几个性能核心用于单线程的东西,尤其是用于交互式使用。
但是,一旦您拥有 4 个 Golden Cove 核心,可以在另外 4 个 Golden Cove 核心或添加 16 个 Gracemont 核心之间进行选择,如果吞吐量不差的话,拥有 Gracemont 核心是非常有吸引力的。(事实并非如此。)根据英特尔的说法,显然 4:1 的面积比是正确的。
(除非这意味着您不能使用作为 Golden Cove 核心一部分的 AVX-512 硬件,所以这对于可以从 AVX-512 中受益的工作负载来说是一个很大的缺点。虽然与 Skylake-X 不同,我认为 Ice Lake 只拥有一个 512 位 FMA 单元(由两个 256 位 FMA 单元组成),因此最大 FMA 吞吐量与 Ice Lake (Sunny Cove) / Tiger Lake 上的 AVX 或 AVX-512 相同。可能还有 Golden Cove基于 AVX-512 的 CPU,如 Sapphire Rapids。但 AVX-512 出于许多其他原因很好,而且 SIMD 整数的高吞吐量不依赖于一个 FMA 端口。)
(更新:如果您在启动时禁用 E 内核,则可以使用 AVX-512。除非您购买的台式机一开始没有任何 E 内核,否则这可能不会对代码的整体吞吐量有利可以很好地扩展到更多内核。最好的情况可能是仅 AVX-512 的新指令有很大帮助的事情,例如按位布尔值
vpternlogd
,或者部分受聚合内存带宽的限制。但它对于测试/调整代码可能很有用在带有 AVX-512 的服务器上运行。不过,一些主板/笔记本电脑供应商可能不包括该 BIOS 选项。)效率内核的存在意味着性能内核可以进一步推动以功率和面积为代价追逐单线程性能的收益递减,因为不需要的工作负载可以在效率内核上运行。
尽管英特尔仍然在没有任何 E 内核的 CPU 中使用相同的 Golden Cove 微架构(例如 Sapphire Rapids Xeon),但他们不能在这里完全发疯。事实上,Sapphire Rapids 的每个 Golden Cove 核心都有 2 MiB 的二级缓存,而客户端芯片中只有 1.25 MiB。(https://download.intel.com/newsroom/2021/client-computing/intel-architecture-day-2021-presentation.pdf)。(这是有道理的,因为服务器更经常运行多个 CPU 密集型的东西,因此 L3 缓存的竞争更糟,而且随着更多内核之间的较慢互连,它的延迟也更糟。)
在 Alder Lake 中,每组四个 E 内核共享一个高达 4 MiB 的 L2 缓存。
将线程调度到内核
操作系统必须决定哪个线程应该在哪个内核上运行。(或者更准确地说,在每个内核上,一个函数(例如 Linux 的
schedule()
)必须选择一个任务在这个内核上运行。调度是一种分布式算法,而不是一个主控制程序将线程分配给内核。)由于内核并不完全相同,因此线程运行的位置很重要。做出好的决定可以从硬件中获得一些关于线程正在做什么的信息中受益,例如,如果它在一个大内核上运行,如果它运行的速度接近每个时钟的流水线宽度,那么它就可以从那里充分受益。但是,如果它在缓存未命中的情况下停滞不前,则不是。英特尔没有让操作系统使用像 for 那样的 PMU 事件(性能监控单元) ,而是为操作系统
perf stat
添加了一种新机制来向 CPU 询问类似这样的事情:英特尔线程控制器是硬件和软件。(不幸的是,最初只有 Windows 11 会对此提供良好的支持。下面链接的 Anandtech 文章提到 Linux 最初不会对其提供良好的支持;英特尔尚未完成向上游发送 Linux 补丁的工作。所以我们可能有幼稚的线程在 Alder Lake Linux 系统上调度一段时间 :(.)https://www.anandtech.com/show/16881/a-deep-dive-into-intels-alder-lake-microarchitectures/2有一些细节。(整篇文章写于 2021 年 8 月,如果您想了解更多关于 Alder Lake 的信息,值得一读。)
也相关:https ://download.intel.com/newsroom/2021/client-computing/intel-architecture-day-2021-presentation.pdf我已经在这个答案中链接了几次微架构细节。
Alder Lake 处理器将有两种类型的内核。只有性能核心具有超线程能力。这就是您可以拥有支持 16 线程的 10 核处理器的原因。在这种情况下,
Core i5-12600K,
它有 6 个 P 核和 4 个 E 核。鉴于该产品尚未发布,实际的性能基准是不可能的,但来自用户工程样本的泄漏数据表明性能提升是真实的。
效率核心的意图是它们将执行后台任务,当然,如果没有利用这些核心的操作系统,它们只会被明确使用它们的软件使用。处理更新 Chrome 的服务最终可能会使用这些内核,允许性能内核处理浏览器的主线程。
图片来源:英特尔的 Alder Lake 在一个芯片上结合了“性能”和“效率”CPU 内核
ARM 架构拥有性能和效率核心已经有一段时间了。
我怀疑英特尔决定引入效率内核的真正原因是,您只能将内核缩小到某个点,而他们的处理器所需的功率只会增加。因此,通过引入效率内核,您可以显着提高处理器的性能,但保持处理器的大小大致相同。这种性能提升将随着您能够缩小处理器的裸片尺寸而扩展,这是一种避免不得不缩小 32 个性能内核并产生可怕产量的方法。
为了让您了解,Core i9-12900K 的预期 TDP 约为 125 W。i9-11900K 的 TDP 也是 125 W,但内核数量减少了 16 个。
Alder Lake 预计将采用 Intel 7 工艺制造,之前称为 10 nm 增强型 SuperFin (ESF)。(多年来,工艺节点名称一直在市场上与现实一样重要,英特尔改用甚至不假装是纳米的名称只是强化了这一点)。无论晶体管密度如何,效率内核占用的总面积(裸片尺寸)都比性能内核要小,因为这两种类型的内核(以及将它们连接成多核 CPU 的“非内核”逻辑)都是相同的一部分一块硅,都使用相同的晶体管。
(英特尔计划在 2023 年推出“小芯片”,每个内核都可以单独制造,因此一个缺陷不会破坏整个 CPU 的内核价值。Alder Lake没有这样做。)
效率核心远小于性能核心。事实上,它们占用的空间大约是性能核心的四分之一。下图显示了具有 8 个性能内核和 8 个效率内核的设置。
P-Core = 性能核心,E-Cores = 效率核心。资源
这转化为更简单的内核,每秒可以处理更少的指令,并且指令集能力有限。但这样做的好处是它们使用的功率更少,我们可以容纳更多的它们。
那么性能核心是怎么回事,为什么它们要大得多呢?
性能核心具有更多针对特定用例的功能。它们的设计目的是尽可能多地消耗功率,将它们的频率调到最大,以尝试尽快完成大任务。
如果您还没有听说过 AVX-512,这是一个相对较新的指令,它从 Rocket Lake 开始被添加到主流台式机 Intel CPU 中。它主要用于科学应用和人工智能。这是AnandTech 的引述,描述了使用它产生的热量。
仅 AVX-512 指令就占用了芯片上的大量空间。你可以打赌它包含在性能核心中。
为什么效率核心如此漂亮,甚至可以提升繁重的工作负载?
这里有两件主要的事情。尺寸和工作频率。它归结为增加的核心数量。
尺寸
因为内核更小,我们可以将更多的内核装入芯片中。
工作频率
由于这些内核的最大频率被限制得较低,因此在狭小的空间内拥有这么多内核并不是问题,因为它们会产生更易于管理的热量。
这两个属性允许我们在一个芯片上拥有更多的内核。更多内核意味着可以并行完成更多工作。较新的程序喜欢将额外的工作分配给更多的处理器线程(如果有的话)。
在较高频率下使用较少的内核对于热裕量的效率要低得多,因为每次频率提升所需的功率量不会按比例增加。并行增加高效核心是可行的方法。