x86 - 单个内核可以一次执行多个比较/添加操作吗?
问题描述
我想知道一个 CPU 内核是否可以进行多个 x86 比较并同时并行添加操作。
所以如果我写了类似的东西
Compare X y
Compare y z
Add X y
Add q p
比较会同时运行吗?添加会同时运行吗?
解决方案
可以,前提是CPU有2个空闲比较器/2个加法器,数据相互独立,指令调度器可以同时给两个单元下发。这就是超标量 CPU的工作方式。P5 Pentium 的所有 x86 CPU 以及所有现代 CPU 都是超标量的。
这就是即使时钟周期和内核数量保持不变,新微架构比旧微架构运行得更快的原因之一,因为它们可以有更多的执行单元、更大的单元、更大的缓存,同时运行更多的指令以及大量其他改进。例如
当前的 x86 处理器每个时钟周期可以提供 3 条指令。然而,Conroe 的架构可以同时获取、分派、执行和撤销多达四个完整指令,比 Pentium 4 CPU 提供 33% 的提升
https://hexus.net/tech/tech-explained/cpu/17976-intel-core-2-duo-conroe/
由于使用了微操作和宏融合,很难定义一个明确的值。然而,粗略的比较一下,Sandy Bridge 每个周期能够实现 6 个微操作。例如,对于一个由两条指令组成的循环,它可以维持每个时钟吞吐量 1 次迭代,该add
指令具有内存源、一个乘法和一个宏融合的 dec-and-branch。
也可以看看
- 乱序执行
- 处理器可以同时进行内存和算术运算吗?
- 现代 CPU 到底有多“快”?
- CPU如何在每个时钟周期执行多条指令?
- 超标量和多核之间的区别?
- 超标量和 VLIW
- 每个周期的指令
- 每条汇编指令需要多少个 CPU 周期?
- CPU如何在每个周期提供多条指令?
- 超标量处理器
- 现代微处理器 90 分钟指南!一篇很好的文章,介绍了流水线,然后是超标量,然后是乱序执行。
- David Kanter 的 Sandybridge 微架构深入研究,带有框图。(他为早期的 Intel uarches 和 Haswell 写过文章。以及一些 AMD 微架构。)