1. 核心设计权衡:PPA(功耗、性能、面积)
- 在工程项目中有一句名言:“更便宜、更快、更好:只能选两个”。这源自1990年代美国宇航局(NASA)的口号。
- 在计算机硬件设计中,这体现为 PPA 权衡,即功耗(Power)、性能(Performance)和面积(Area)。
- 优化的核心原则是:固定其中两个参数,最大化第三个参数。
- 对于一个产品,通常会设定最大功耗预算、平均功耗预算以及面积预算。设计目标通常是在满足这些预算限制的前提下,尽可能最大化性能。
- 芯片的面积通常被作为成本的代理指标。随着预算和底层实现技术的改变,系统的最优设计点也会随之发生变化。
2. 功耗(Power)与能量(Energy)的基础
- 功耗以瓦特(Watts)为单位进行测量。设备的平均功耗决定了其电池寿命。设备的最大功耗则与最大电流消耗以及电压调节要求直接相关。平均功耗和最大功耗共同决定了系统的散热(冷却)需求。
- 能量以焦耳(Joules)为单位进行测量,其计算公式为能量等于功耗乘以时间。
- 在图表中,功耗表现为时间-功率曲线的高度,而能量则是该曲线下方的总面积,代表完成某项操作所需的总能量。
- 在给定的运行频率下,如果能降低能耗,就意味着执行单次计算所需的平均功耗降低了。
2.1 总功耗的组成部分
- 芯片的总功耗耗散由静态功耗和动态功耗两部分构成,其公式为 $E=\int_{0}^{t}(CV^{2}{DD}f{c}+V_{DD}I_{leak})dt$。
- 静态功耗:主要由晶体管的漏电流($I_{leak}$)引起。可以通过降低工作电压以及减少产生漏电的晶体管数量来最小化漏电流。
- 动态功耗:主要由开关电流($I_{switch}$)引起,公式可表示为 $P_{dyn}=\frac{1}{2}\alpha f C V_{dd}^{2}$。可以通过以下方式最小化动态功耗:
- 降低工作电压($V_{dd}$)。
- 减小开关电容($C$),例如使用尺寸更小的晶体管。
- 降低开关活动率($\alpha$),可以通过使用时钟门控(Clock gating)技术或优化等效设计来实现。
- 降低频率($f$),即让系统运行得更慢。
- 降低电压的双重效应:降低工作电压($V_{dd}$)是对抗高功耗极其有效的手段,因为它不仅能以平方级别降低动态功耗,同时通常还会导致运行频率同步下降,从而使总功耗近似按照电压的三次方($P \sim V^3$)比例骤减。
2.2 优化功耗与能量的策略
- 并行化:通过并行处理,可以在将频率减半($f/2$)且电压减半($V_{dd}/2$)的情况下维持性能。根据公式,这可以使执行任务的总能量消耗降低 50%,但不可避免的代价是需要占用两倍的芯片面积,并且会产生更多的漏电流。
- 动态电压和频率调节(DVFS / DVS):传统的电源管理往往只在系统没有任何任务时才去优化功耗(如进入睡眠模式)。而高级的活动模式能量管理则在系统运行任务时进行优化,策略是确保系统仅以“刚好能满足截止时间”的速度运行。这是因为以过高的频率完成任务后进入闲置状态,反而会浪费大量由于维持高电压而产生的能量。
- 全美达(Transmeta)公司的 Crusoe 处理器(曾用于索尼 PictureBook)在2000年独树一帜,率先从硬件底层支持了动态电压和频率缩放,并内置了其特有的 LongRun 预测性算法来实时调节。
3. 功耗与性能的综合评估指标
为了衡量不同架构在权衡性能与功耗时的真实效益,学术界引入了以下指标:
- PDP(功耗延迟积,Power-delay Product):等于平均功耗乘以时间($P_{avg} \times t$)。它衡量了每个开关事件消耗的平均能量。
- EDP(能量延迟积,Energy-delay Product):等于 PDP 乘以时间。该指标兼顾了设计者在现实中往往愿意用略长的延迟来换取大幅更低的能量消耗这一考量。
- EDDP(能量延迟平方积,Energy-delay² Product):等于 EDP 乘以时间。
- 引入这些复杂公式的核心目的,是为了寻求一种与电压无关的效率指标。在比较微架构改进(例如,某项会导致 IPC 下降 10% 但使得功耗降低 20% 的缓存优化方案)时,简单的性能功耗比(MIPS/W)容易产生误导。通过与其他单纯对芯片执行降压降频(DVFS)所获得的数据相比较,才能证明一项特定的微架构设计是否在绝对效率上获得了实质提升。
4. 面积(Area)与生产成本限制
- 面积是芯片制造成本最直接的代理指标:集成的晶体管越多,不仅设计成本越高,裸片(Die)尺寸变大也会显著降低芯片的预期良率(Yield),同时拉高封装成本。
- 芯片的最大物理尺寸严格受制于“掩模版限制”(Reticle limit),即光刻机刻制电路图案的主模板最大可用面积。例如,目前的 EUV 掩模版限制为 26mm x 33mm,而下一代高数值孔径(High-NA)EUV 将缩小至 26mm x 16.5mm。
5. 帕累托前沿(Pareto Front)
- 在包含多个权衡目标的测试中,存在一系列最优的设计选择,被称为帕累托前沿。
- 处于前沿上的设计点意味着:如果要在这个点上继续提升某一项关键指标,就必须以牺牲另一项指标为代价。
- 只有不被其他任何可行方案“严格支配”(即在所有指标上都劣于其他方案)的点,才能被认为落在帕累托前沿上。
6. 性能评估与基准测试(Benchmarking)
- 管理学大师彼得·德鲁克曾指出:“如果无法测量它,就无法改进它。”。
6.1 性能定义的差异与矛盾
- 计算机性能通常存在两个容易混淆的定义:
- 延迟(Latency / 执行时间):完成单个固定任务所需的总时间。延迟通常难以直接通过增加并行计算单元来改善。
- 吞吐量(Throughput / 带宽):在固定时间段内系统能够完成的任务总数。吞吐量可以充分利用并行性得到成倍提升。
- 这两项优化目标在许多场景下是相互矛盾的:对其中一个指标进行深度优化,往往会导致另一个指标恶化。所以在进行性能评估时,必须首先明确测量的核心业务目标。
6.2 衡量处理器的经典法则:“性能铁律”
- 评估程序的执行性能有一个经典法则:执行时间 = 程序总指令数 × 每条指令的平均周期数(CPI) × 时钟周期耗时。
- 若仅依赖 MIPS(每秒百万指令数)或主频来比较不同微架构处理器,往往是极具误导性的。因为这种比较无视了优秀编译器可以大幅降低指令总数,以及更优的架构设计可以减少单条指令周期的事实。
6.3 性能均值的数学选择标准
- 算术平均数(Arithmetic mean):仅适用于聚合与物理时间成正比的单位(例如延迟时间)。
- 调和平均数(Harmonic mean):适用于聚合与物理时间成反比的单位(例如吞吐量、处理速率)。
- 几何平均数(Geometric mean):适用于聚合无单位的比率(例如加速比)。
6.4 基准测试套件的发展与争议
- Dhrystone:作为早期的合成基准测试(衍生出 DMIPS 标准),它当前已不适用。因其代码体量过小能够完全驻留在现代缓存中、指令组合已经过时、不受控的源代码极易被现代编译器通过特殊技巧进行“作弊”式优化,从而产生虚高的跑分结果。
- SPEC 体系的建立:为了消除旧基准的固有缺陷,SPEC 应运而生。
- SPECCPU:专注于衡量单核处理任务的速度与延迟极限。
- SPECRate:专注于测试多核系统在并发情况下的整体吞吐量表现。
- 围绕几何平均数的长期争议:SPEC 官方选择并坚持使用几何平均数来发布综合跑分,因为几何平均数对于长运行时间程序的异常值免疫能力较强,且能保持权重一致。然而,自1988年 Jim Smith 等学者便提出严厉的批评指出:由于计算机性能本质是消耗时间的函数,用几何平均数来汇总时间或速率数据在数学逻辑上是站不住脚的。真实的聚合速率数据应当始终使用调和平均数来计算。
6.5 用单一数字定义性能的谬误
- 试图用单一的综合得分数字(Single-number performance characterization)来完全评价一台计算机的性能,本质上是一种一厢情愿的谬误。
- 就如同冯·诺伊曼(Neumann)和摩根斯特恩(Morgenstern)在博弈论著作中所指出的:“为最大多数人谋求最大利益”这句话表面正确但在数学上是自相矛盾的,因为不存在可以同时最大化两个互相制约变量的函数解。在集成电路设计中也是如此,同时追求绝对的最高性能、最低功耗和最小面积是不可能的,所有顶尖的工程成果必然是在冲突的多变量中寻找到的最佳妥协方案。