> 文章列表 > 【计算机架构】如何计算 CPU 动态功耗

【计算机架构】如何计算 CPU 动态功耗

CPU的动态功耗计算公式是P=C×V²×F,其中C是电容性负载,V是电压,F是频率。想降低功耗,就得降低电压或频率,但过度降压会导致散热问题。例如,假设一款新CPU的电容性负载是旧款的80%,电压降了10%,而频率翻倍,它的功耗计算是这样的:原来的5.3V电压,1GHz频率,现在变成3V和2GHz。计算起来,新的功耗会是原来的0.52倍,也就是功耗降低近一半!但现实中,还有动态开关功耗和短路功耗,这两部分功耗分别占了总功耗的大部分和小部分,所以实际计算会复杂得多。

集成电路的成本计算公式是Cost per die = Cost per wafer / (Dies per wafer × Yield)。晶圆成本和面积固定,缺陷率由制造工艺决定,面积又由设计决定。比如,同样大小的晶圆,如果每片能切出更多的芯片,成本自然就降低了。而缺陷率越低,良品率越高,成本也就越低。

基准测试,比如SPEC CPU 2006,用来衡量CPU的性能,包括整数处理和浮点运算。比如,Opteron X4 2356的整数处理性能测试,就是用执行时间的几何平均值来表示性能。性能比越高,说明CPU越强。

SPEC Power基准测试则是用来衡量服务器在不同负载下的功耗和性能。公式是Overall ssj_ops per Watt = 总ssj_ops / 总Power,这样就能看出每瓦特功耗能完成多少任务。比如,在X4的测试中,不同负载下的性能和功耗表现都能一目了然。

但有个坑要小心,就是阿姆达尔定律,它告诉我们,单方面优化一个部分,对整体性能的提升是有限的。比如,即使你把一部分代码加速到无限快,整体程序加速还是有限的,因为其他部分的瓶颈还在。这就像是交通拥堵,单方面拓宽一条路,并不能解决整个交通问题。

概括来讲,,计算CPU动态功耗,要考虑电压、频率和负载;集成电路成本,要看制造工艺和设计;性能和功耗测试,要靠基准测试;但别忘了,整体优化才是王道,单点突破不一定能带来整体提升。下次设计CPU时,别忘了这些小知识,避免掉进优化陷阱里哦!

【计算机架构】如何计算 CPU 动态功耗

  

📜 本章目录:

0x00 动态功耗(Dynamic Power)

0x01 集成电路成本(Integrated Circuit Cost)

0x02 基准测试(SPEC CPU Benchmark)

0x03 SPEC功率基准测试(SPEC Power Benchmark)

0x04 Pitfall:Amdahl’s 定律

0x05 Pitfall:将 MIPS 作为性能指标


0x00 动态功耗(Dynamic Power)

电力趋势(Power Trends)

芯片在工作时晶体管处于跳变状态所产生的功耗,我们称之为 动态功耗 (Dynamic Power)。

在 CMOS 集成电路技术方中,动态功耗计算:功率 = 电容性负载 × 电压^2 × 频率

Capacitive load 为电容性负载,当 Frequency 增大时,可以减少 Voltage 降低功耗。

然而,当 Voltage 持续减小到一定程度,再减小将会导致静态功耗增大,无法有效散热。

The power wall:我们无法进一步降低电压,我们无法消除更多的热量。

⚡ 简化记忆:P=C\\times V^2 \\times F

Reducing Power:我们假设一个新的 CPU ,比旧 CPU 的 85% 的电容性负载 (capacitive load),

电压 (voltage) 降低15%,频率 (frequency) 降低 15。那么 根据公式 P=C\\times V^2 \\times F

\\frac{P_{new}}{P_{old}}=\\frac{C_{old}\\times 0.85\\times (V_{old}\\times 0.85) ^2\\times F_{old}\\times 0.85}{C_{old}\\times V_{old}^2\\times F_{old}

=0.85^4=0.52

Suppose a new CPU has 80% of capacitive load of old CPU and 10% valtage reduction. How much power reduction with new CPU?

Old CPU  Voltage: 5.3V    ClockRate 1GHz
New CPU Voltage: 3V      ClockRate 2GHz

动态功耗主要包括两部分,即动态开关功耗(P_{\\textrm{sw}})和短路功耗(P_{\\textrm{sc}})。

动态开关功耗是在逻辑门进行开关事件时产生的功耗,即在 CMOS 逻辑门输出节点电压在逻辑转换过程中由于充电和放电引起的功耗。

在充电过程中,输出节点电压从 0 到 V_{\\textrm{DD}} 完全转换,其中一半的能量会以热的形式在 PMOS 管导通时被消耗,从而形成动态开关功耗。因此,动态功耗主要由逻辑门的输出电容引起。

另一方面,当 CMOS 逻辑门在有限的上升沿和下降沿(slew)输入电压的驱动下进行开关时,PMOS 和 NMOS 晶体管会在短时间内同步导通,从而在电源和地之间形成一条直流通路,产生短路功耗,这部分功耗被称为短路功耗(PSC)。

需要注意的是,这只是计算 CPU 动态功耗的一个简化公式,实际情况可能会更加复杂,因为现代CPU在设计上会包含更多的功耗管理技术和优化措施,例如动态电压频率调整(DVFS)、体系结构层面的功耗优化等。因此,在实际应用中,需要考虑更多因素来准确估计 CPU 的动态功耗。

0x01 集成电路成本(Integrated Circuit Cost)

\\textrm{Cost per die }= \\frac{\\textrm{Cost per wafer}}{\\textrm{Dies per wafer}\\times\\textrm{ Yield}}

\\textrm{Dies per wafer} \\approx \\textrm{Wafer area}/\\textrm{Die ares}

Yield=\\frac{1}{[\\, 1+(\\textrm{Defects per area} \\times \\textrm{Die area}/2)\\, ]\\, ^2}

与面积和缺陷率的非线性关系:晶片成本和面积是固定的,缺陷率由制造工艺决定,晶片面积由结构和电路设计决定。

0x02 基准测试(SPEC CPU Benchmark)

\\sqrt[n]{\\prod_{i=1}^{n}\\textrm{Execution time ratio}_i}

用来衡量性能的程序,是实际工作负荷的典型代表。标准性能评估公司(SPEC):开发CPU、I/O、网络等方面的基准。SPEC CPU2006:

  • 执行部分程序所需的时间
  • 可忽略I/O,因此重点关注CPU性能
  • 相对于参考机器进行归一化
  • 总结为性能比的几何平均值
  • CINT2006(整数)和CFP2006(浮点)

用于 Opteron X4 2356 的 CINT2006:

0x03 SPEC功率基准测试(SPEC Power Benchmark)

不同工作负荷水平下的服务器耗电量,性能:ssj_ops / sec,功率: 瓦特 (焦耳/秒)

\\textrm{Overall ssj}\\_ \\textrm{ops per Wat}=\\frac{\\sum_{i=0}^{10}\\textrm{ssj}\\_\\textrm{ops}_i}{\\sum_{i=0}^{10}\\textrm{Power}_i}

X4 的 SPEC power_ssj2008:

0x04 Pitfall:Amdahl’s 定律

Amdahl's Law(阿姆达尔定律)是一种计算性能的定律,用于衡量在提升计算系统性能时,对某一部分进行优化的效果。它由计算机科学家 Gene Amdahl 在1967年提出,被广泛应用于计算系统的设计和性能优化。

改进计算机的一个方面,并期望在整体性能上有相应的改善:

T_{\\tex
</p>
</div>
				
				               	<div class=