指令的有效吞吐量是否取决于它所操作的数据?

Does effective throughput of an instruction depend on the data it operates on?

提问人:VoidStar 提问时间:11/11/2023 最后编辑:VoidStar 更新时间:11/16/2023 访问量:82

问:

根据评论,答案是:是的

替代(等效)问题:指令的热量产生(能量)是否取决于数据?

现代芯片的时钟速度通常受到指令产生的热量的限制,从而受到环境冷却芯片的能力的限制。在某些情况下,在进行整数算术时,原则上可以选择是否使用包含比 0 更多的 1 的二进制表示。

对具有大量 1 位的数据进行操作的指令是否会消耗更多的能量,从而产生更多的热量? 真正重要的是位状态的变化,请参阅注释。

考虑以下两个 16 位寄存器的 OR-ing 示例:

2 bits being set - low energy use?

   1000000000000000
OR 0000000000000001
-------------------
   1000000000000001


16 bits being set - high energy use?

   1010101010101010
OR 0101010101010101
-------------------
   1111111111111111 

凭直觉,我预计存在差异,因为典型的晶体管具有很高的开关能量损耗。(请参阅 ee.SE 上的“为什么开关会导致功率耗散?

对于浮点运算,人们可能无法使用这样的效果,因为尾数的二进制表示或多或少是随机的。

CPU-架构 物理 能量

评论

0赞 Simon Goater 11/11/2023
使用逻辑 or 等操作,您仍然需要对每对位执行 or。我认为你的问题如果与算术运算有关,特别是乘法和除法,会更有趣。
0赞 Peter Cordes 11/11/2023
@SimonGoater:当逻辑门的输出从低电平变为高电平时,CMOS逻辑会产生热量,反之亦然。(为什么开关会导致功率耗散?除了除法之外,ALU 没有“提前出局”,可以在特殊情况下跳过一些工作,但我预计 64 位或 FP 或(全零尾数和不变指数)可能会比随机数据使用更少的能量。也许即使重复使用完全相同的输入进行任何 FMA,也会使处于完全流水线乘法器状态的逻辑门不改变状态。0 * 00.0 * 0.01.0 * 1.0
0赞 Peter Cordes 11/11/2023
@SimonGoater:如果除了 SIMD 之外什么都不做,这可能是现代 x86 上所有控制逻辑背景之上的可测量水平。其他操作可能会产生这种影响,但不会达到可衡量的水平,尤其是对于像 OR 这样非常便宜的东西,甚至是 SIMD 512 位 .vpord
0赞 Peter Cordes 11/11/2023
重要的不是位数,而是比特的变化(在 ALU 内部)。在CMOS逻辑中,无需电流即可维持逻辑状态或状态,这就是为什么CPU使用CMOS逻辑,而不是基于双极晶体管的TTL或ECL等较旧的高功率技术,这些技术具有更高的静态功耗,而CMOS中只有泄漏。将结果写入物理寄存器文件条目将根据物理寄存器的先前内容(而不是架构寄存器)更改位。110
0赞 Peter Cordes 11/12/2023
吞吐量?仅可能间接(通过 CPU 频率更改)用于功耗太高而无法维持最大睿频的工作负载。也许对于像 Prime95 这样将所有时间都花在 256 位 SIMD FMA 上的工作负载来说,功率差异可能足以让某些笔记本电脑或服务器芯片以稍高的频率运行。甚至可能对于某些台式机。对于大多数其他工作负载,控制逻辑和无序执行机制(如前端、RAT、调度程序、ROB)将使数据差异的功率差异相形见绌。尤其是按位布尔值。

答: 暂无答案