JΛY*_*DΞV 33 cpu cpu-architecture cpu-cores
我观看了2021 年 8 月发布的英特尔 2021 年架构日(撰写本文时为上个月)。在观看了英特尔有关其新 CPU 的视频后,老实说,我对 \xe2\x80\x94 \xe2\x80\x94 有点困惑。我猜想新的微处理器将不再具有 2 比 1 的线程与核心比率。据说 i5 将有 10 个核心和 16 个线程,i7 和 i9 很相似,我只是不记得它们到底是什么了。但据我了解,新的核心与线程比率是专用核心的结果。如果我没猜错的话,一些核心是“效率核心”,并且它们已被命名,Efficiency Cores
而 CPU 中的其余核心是“性能核心”,这 \xe2\x80\x94 毫不奇怪 \xe2\x80\x94已被命名Performance Cores
。
当新的微处理器发布时,很难知道哪些名称和数字实际上是基于计算机科学的,哪些只是为了让芯片看起来不错而进行的营销尝试。换句话说,我想知道的是:
\n性能和效率核心实际上有什么作用,还是只是一种营销策略?如果这两个核心不仅仅是一种营销策略,并且拥有效率核心和性能核心将会产生影响,那么效率核心到底会做什么与性能核心不同的事情呢?
\nPet*_*des 45
这是ARM 的 big.LITTLE的 Intel 版本。你有一些具有非常好的单线程性能的大核心(但在宽/深乱序执行上花费了大量的能量),以及一些更简单的小核心,它们不能运行得那么快,但每次工作使用的能量更少。例如,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 。)
Efficiency (E) 核心是Gracemont,它是最新一代的 Silvermont 系列、 Intel 的低功耗 CPU。
最早的 Silvermont 系列 CPU 相当低端,具有乱序执行功能(仅适用于整数,不适用于 FP/SIMD),但用于查找指令级并行性的“窗口”要小得多,而且管道也要窄得多(并行解码或执行的指令更少)。它们是原始 Atom 的后继产品,用于上网本和一些服务器设备,例如 NAS 盒。
但随着Tremont和现在的 Gracemont,他们的规模显着扩大,ROB 大小(无序执行的重新排序缓冲区)显然为 256,而 Tremont 为 208(而 Silvermont 为 32;参见David Kanter 的深度文章)深入研究它,与Haswell相比)。相比之下,Skylake 的 ROB 为 224 个条目,而 Golden Cove 的 ROB 为 512 个。 尽管如此,Tremont 的目标是低功耗“微服务器”和类似的设备;他们不生产带有大量此类内核的芯片1。
Gracemont有相当多的SIMD和整数执行单元,以及5宽的管道(在最窄点,分配/重命名),与Ice Lake相同的宽度!(但缓存占用的面积较少,最大时钟速度较低。)4 个整数 ALU 端口、每个时钟 2 倍负载和 2 倍存储、2 个/时钟 SIMD FP 和 3 个/时钟 SIMD 整数 ALU(与 Ice Lake 相同)。所以这比老式的 Silvermont(2 宽)要强大得多。
我不清楚的是 Gracemont 与 Ice Lake 相比如何节省电力!也许它的其他一些乱序执行资源不太强大,例如用于跟踪尚未执行的微指令的调度程序(保留站)大小,为每个已准备好输入的端口选择最旧的微指令。(如果后面的大部分指令是独立的,那么大的 ROB 可以长时间隐藏一个缓存未命中的延迟,但是需要一个大的 RS 来将长依赖链与周围的代码重叠。例如,请参阅 Skylake 上的微基准实验,以及更早的关于 OoO exec 的文章。)大型 RS 非常耗电,uop 以不可预测的顺序进入和离开它,这与 ROB 不同,ROB 可以是一个大型循环缓冲区,指令按程序顺序发出和退出。2021 年英特尔架构日幻灯片似乎没有提及 RS 大小的数字。(它可能是针对不同端口的单独调度队列,这与英特尔大核心中大多数统一的调度程序不同,因为功率随大小的变化而不是线性变化。)
(如果这听起来像是技术问题,但您想了解有关 CPU 架构的更多信息,请查看《现代微处理器 90 分钟指南》!如果您已经了解什么是指令,以及 CPU 获取、解码的含义) ,然后执行一个。)
脚注 1:(除了现已停产的Xeon Phi计算卡;Knight's Landing 基本上由 72 个 Silvermont 核心组成,并配有 AVX-512、网状互连以及一些快速缓存和本地内存。)
桌面上的很多事情(例如播放视频、动画 UI、滚动网页、在键入时运行拼写检查,或者运行显示广告的所有蹩脚 javascript)只需要非常频繁的时间间隔占用一点 CPU ,因此唤醒一个高效核心来做同样的事情比唤醒一个大核心做同样的事情花费更少的总能量。
效率核心针对每个芯片面积的吞吐量进行了优化。提高核心的单线程性能会带来收益递减(例如,每个核心的大型缓存),但当前计算中的很多事情都很难并行化(或者根本就没有并行化,因为它仍然很重要)。
良好的单线程性能对于交互使用来说还是非常重要的。对于纯粹的网页浏览,我会选择 5GHz 最大睿频双核 Ice Lake,而不是巨大的 40 核 2.4GHz 最大睿频 Xeon 系统。(这可能有点不切实际,因为如果其余核心闲置,大多数大型 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 选项。)
效率核心的存在意味着性能核心可以进一步推动以功耗和面积为代价追逐单线程性能的收益递减,因为不需要的工作负载可以在效率核心上运行。
尽管Intel在没有任何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()
)必须选择一个任务在该核心上运行。调度是一种分布式算法,而不是一个将线程分配给核心的主控制程序。)
由于内核并不完全相同,因此线程运行的位置很重要。做出正确的决策可以受益于来自硬件的有关线程正在执行什么类型的操作的一些信息,例如,在大内核上,如果它的运行接近每个时钟的管道宽度最大微指令,那么它就完全受益于那里。但如果它因缓存丢失太多而停滞,则事实并非如此。(OTOH,在 L2 由 4 个核心共享的 E 核心上,情况可能会更糟。)英特尔没有让操作系统像 for 那样使用 PMU 事件(性能监控单元)perf stat
,而是为操作系统添加了一种新机制来向 CPU 询问相关信息像这样:Intel Thread Director是硬件和软件。(不幸的是,最初只有 Windows 11 对此有良好的支持。下面链接的 Anandtech 文章提到 Linux 最初不会对此有很好的支持;英特尔尚未完成 Linux 补丁的工作以发送上游。所以我们可能有幼稚的线程在 Alder Lake Linux 系统上调度一段时间:(.)
https://www.anandtech.com/show/16881/a-deep-dive-into-intels-alder-lake-microarchitectures/2有一些细节。(如果您想了解更多有关 Alder Lake 的信息,整篇文章写于 2021 年 8 月,值得一读。)
还相关:https://download.intel.com/newsroom/2021/client-computing/intel-architecture-day-2021-presentation.pdf,我已经在这个答案中链接了几次以获取微架构细节。
Ram*_*und 22
\n\n如果我没猜错的话,有些核心是“效率核心”,它们被命名为“效率核心”,而 CPU 中的其余核心是“性能核心”,\xe2\x80\x94 毫不奇怪 \xe2\ x80\x94 已被命名为性能核心。
\n
Alder Lake 处理器将有两种类型的内核。只有性能核心才具有超线程功能。这就是您可以拥有支持 16 线程的 10 核处理器的原因。在这种情况下,Core i5-12600K,
它有 6 个 P 核和 4 个 E 核。
\n\n性能和效率核心实际上有什么作用,还是只是一种营销策略?
\n
由于该产品尚未发布,因此无法进行实际性能基准测试,但来自用户和工程样本的泄漏数据表明性能提升是真实的。
\n\n\n如果这两个核心不仅仅是一种营销策略,拥有效率核心和性能核心将会产生影响,那么效率核心到底会做什么与性能核心不同的事情呢?
\n
效率核心的目的是它们将执行后台任务,当然,如果没有利用这些核心的操作系统,它们只会被明确使用它们的软件使用。处理 Chrome 更新的服务最终可能会使用这些核心,从而允许性能核心来处理浏览器的主线程。
\n\n图片来源:Intel 的 Alder Lake 将“性能”和“效率”CPU 核心结合在一颗芯片上
\nARM 架构拥有性能和效率核心已经有一段时间了。
\n\n我怀疑英特尔决定引入效率核心的真正原因是,你只能将核心缩小到某个点,而处理器所需的功率只会增加。因此,通过引入效率核心,您可以显着提高处理器的性能,但保持处理器的大小大致相同。当您能够缩小处理器的芯片尺寸时,这种性能提升将会扩大,这是一种避免缩小 32 个性能核心并避免可怕产量的方法。
\n为了让您了解,Core i9-12900K 的预期 TDP 约为 125 W。i9-11900K 的 TDP 也是 125 W,但核心数少了 16 个。
\nAlder Lake 预计将采用 Intel 7 工艺制造,之前称为 10 nm 增强型 SuperFin (ESF)。(多年来,工艺节点名称一直与现实一样具有市场意义,而英特尔改用甚至不假装为纳米的名称只是强化了这一点)。无论晶体管密度如何,效率核心比性能核心占用的总面积(芯片尺寸)更小,因为两种类型的核心(以及将它们连接成多核 CPU 的“非核心”逻辑)都是同一个核心的一部分一块硅,全部使用相同的晶体管。
\n(英特尔正在规划 2023 年的“小芯片”,其中每个核心都可以单独制造,因此一个核心的缺陷不会毁掉整个 CPU 核心的价值。Alder Lake 并没有这样做。)
\n