关于 CPU 物理和 CPU 周期

2026-06-13 1 阅读 signa11
6IT.Dev Hare 关于软件 6IT Hare 关于软件 类别类别书籍:MOG 的 D&D 目录 第 1 卷第 1 版测试版。第一卷 I-III 第一测试版。 IV-VI 第 1 卷测试版。 VII-IX On.System 架构 需求分析 设计决策 分布式系统 (Re)Actors On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Programming Tips and Tricks On.Hardware MCU Wi-Fi On.Security Best Practices Fraud Prevention Research On.Development野兔背后为我们写下 H.A.R.E.和 Bunnylore 关于 CPU 物理和 CPU 周期 2026 年 6 月 10 日,作者:“No Bugs”Bunny • 由 Sherry Ignatchenko 翻译 “No Bugs”Bunny 讽刺架构师 爱好:大声思考、与经理争论、惹恼 HR、直言不讳、保持言不由衷 这是第 4 章第一部分的草稿 - 关于 CPU 物理和 CPU 周期, Sherry Ignatchenko 和 Dmytro Ivanchykhin 即将出版的书“现代 64 位 CPU 的高效 C++ 编程”的第 1 卷。请随意发表评论 - 特别是如果您发现一些事实不一致的地方,我们将很乐意修复它们。追求效率的另一个好处是,这个过程迫使你更深入地理解问题——Alex Stepanov,原始 STL 的作者现在,让我们开始讨论一些细节。让我们看一下图 1 中的“代表性”主板示意图,该主板具有“代表性”CPU 芯片,而 CPU 芯片又具有“代表性”CPU 内核。在这里,我们故意不提及任何特定的主板或 CPU 设计,只是说它们具有“代表性”,因为“在 2026 年的 CPU 中或多或少会看到类似的东西”。在深入研究图片中所有令人兴奋的细节之前,让我们假设一件事:我们的电信号在物理上传输得越远,我们的访问速度就越慢。电子信号的特征时间受到所谓的寄生电容的限制,寄生电容通常与连接的长度成正比。这是精心设计的电子领域中的一个非常普遍的定律;然而,对于较小的距离,它与光速施加的基本限制没有直接关系。事实上,光穿过仅仅 0.5 毫米并返回只需 3e-12 秒;实际上,即使是 R-R 操作也需要 3e-10 秒,多两个数量级。相反,至少对于CPU内核来说,距离和速度之间的这种关系是一种观察的表现,即电子信号的特征时间受到所谓的寄生电容的限制,而寄生电容通常与连接的长度成正比。 Core 现在,详细了解图 1。通常,当我们写 a += b; 之类的东西时,它是寄存器-寄存器 (R-R) 操作,因此数据必须从寄存器到 ALU(或 SIMD)并返回。然而,我们所有的 64 位 CPU 实际上都是流水线的,因此当 ALU 需要这些信息时,它通常已经在 ALU 入口处,因此在大多数情况下我们可以避免从寄存器到 ALU 并返回的延迟损失。加减法、按位运算等简单运算,占用 1 个 CPU 周期;乘法大约需要 3-6 个周期,除法 – 最多 20 个周期(请注意,与 [Fog] 相比,64 位除法需要多达 100 个以上的 CPU 周期,在过去几年中,除法时间有了显着改善,请参阅下面冷硬数字部分中的表格)。图 1 L1D/L1I L1 缓存通常分为 L1 数据缓存 (L1D) 和 L1 指令缓存 (L1I)。从图中可以看出,关于 ALU 的一件有趣的事情是,通常有多个 ALU(也有多个 SIMD 单元);这表明我们的 CPU 是超标量 CPU,可以同时处理多个 ALU 级操作 1 反过来,这意味着完全有可能在同一个 CPU 周期内完成多个操作;这可能会导致一些反直觉的观察结果,即在微基准测试中,某些操作可能需要一些非整数周期数(例如 0.75);这并不意味着某些操作实际上花费了不到一个周期;相反,从统计上来说,CPU 已设法安排事物,使其平均在 3 个周期内执行 4 次操作。更一般地说,现代超标量 CPU 可以拥有高达 10-12 条所谓的每周期退休指令 (RIPC),尽管在 RL 中达到 4 条都是相当大的挑战,并且通常仅限于 ALU 限制的算法(与 RAM 限制的算法相反)。如果我们需要访问CPU寄存器之外的一些信息——CPU必须访问内存,但由于内存是缓存的,它首先会访问最近的L1(实际上是L1D)缓存;如今,从 L1D 缓存读取数据通常需要 3 个 CPU 周期。但请注意