想象一个厨房里有一位精明的总管:他记得今天开了几个灶、烤箱是不是空烧、冰箱压缩机几点启动,还能在同一顿饭里一边大火爆炒,一边悄悄关掉没人用的炉头,最后让总电闸稳稳不跳、电费单也不难看。NPU(神经网络处理器),就是手机和AI芯片里专门干“神经网络计算”的专用厨房;而NPU功耗优化,就是给这间厨房配上一位精打细算的能源管家。 这篇文章带你完整看懂这位管家的全套手艺:先摸清电费花在哪(功耗来源解析),再学会按需使劲(精度自适应)、调火候(动态电压频率)、关闲置灶台(计算单元门控)、算总账(功耗预算管理),最后给出衡量手艺高低的标尺(移动端权衡评估)。全程用厨房故事打比方,哪怕你对芯片一无所知,也能建立一套清晰的直觉。

岗位关联

学懂NPU功耗优化,是AI芯片设计、端侧部署与算法工程师的必修课:它直接决定大模型能不能在手机上跑得动、撑得久,是AI真正落地的“最后一公里”硬门槛。

目录
  1. 可视化演示
  2. 功耗来源解析
  3. 精度自适应
  4. 动态电压频率
  5. 计算单元门控
  6. 功耗预算管理
  7. 移动端权衡评估
  8. AI 应用场景
  9. Python 演示
  10. 常见误区
  11. 面试题

可视化演示

通过精度自适应调度、DVFS动态调频与功耗预算管理三模式,展示NPU功耗优化的多层方案与策略。

本节配有交互动效(进入视口后自动加载,约 3KB)。

精度自适应调度 四级精度按算子类型动态切换,敏感层保持高精度,非敏感层降精度节能 P(save)=1-P(INT8)/P(FP32) 精度自适应最大化节能效果

功耗来源解析

拿到NPU的第一件事,不是急着开火,而是先看电费单。想象一间厨房:炒菜时灶台开火、抽油烟机轰鸣,这是看得见的耗电;可即便没人做饭,烤箱的时钟、指示灯的微光、冰箱的压缩机也在悄悄走电。NPU的功耗账单同样分成两栏:“干活时的动态功耗”和“待机时的静态功耗”。

在芯片里,动态功耗来自晶体管的翻转——0变1、1变0,每一次翻转都要给输出电容充电放电;翻转越频繁,耗电越猛。而静态功耗来自漏电流:电子像顽皮的孩子,即使没有任务,也会从紧闭的晶体管大门缝隙里溜过去,工艺越先进、芯片越烫,溜得越欢。把这两栏相加,就得到经典的CMOS功耗公式:

从公式能看出三个操控旋钮:电压 V、频率 f、活动因子 α。频率决定每秒做多少事,电压决定每件事的“单价”,α 则取决于调度器如何安排负载——负载越不饱和,α 越小。静态项则提醒我们:低频段不能无脑降,漏电不随频率走,芯片在低频空转时,静态功耗占比会陡然升高。

所以这位厨房总管的第一课,是看清电费单的两栏。想省钱,得同时盯着“炒菜的大火”和“待机的小灯”,缺一不可。

P=αCV2f+IleakV\displaystyle P = \alpha C V^{2} f + I_{\text{leak}} V
  1. 翻转因子 αα 表示每个时钟周期里平均有多少晶体管在翻转,相当于“开着的灶台比例”。负载越空闲,α 越小,动态功耗越低。
    Pdyn∝α\displaystyle P_{\text{dyn}} \propto \alpha
  2. 电压平方 V²每次充放电的能量是 $\frac{1}{2}CV^2$,电压以平方的“威力”进入公式,这正是后文DVFS“优先降压”的根本原因。
    Eswitch=12CV2\displaystyle E_{\text{switch}}=\frac{1}{2}CV^{2}
  3. 频率 ff 是每秒翻转次数。频率翻倍,动态功耗翻倍,但完成任务的速度也翻倍——它决定“花钱的速度”,而不决定“办一件事的总价”。
    Pdyn=αCV2f\displaystyle P_{\text{dyn}}=\alpha C V^{2} f
  4. 漏电项 I_leak·V晶体管不翻转时漏电流依然存在,且随温度指数上升。低频空转时,这部分静态功耗占比会明显变大。
    Pstatic=VIleak\displaystyle P_{\text{static}}=V I_{\text{leak}}

精度自适应

同样是土豆,家常便饭可以囫囵切块,宴客摆盘却要细如发丝——刀工精度随菜品价值浮动。NPU跑神经网络也遵循同样的道理:有些算子天生“好养活”,有些则“挑三拣四”。让所有算子都用最高精度,就像给土豆泥也配一位米其林刀工,纯粹是浪费。

ReLU、池化这类算子,输出对输入数值的微小扰动很不敏感,压到8bit整数也没人在意;而Softmax、LayerNorm这类算子,输入的微小误差会被指数和归一化运算放大,必须用FP16甚至FP32撑住。精度自适应,就是给每个算子动态匹配“够用就好”的位宽。这里的关键是理解量化误差与位宽的关系:

实际落地的是一个“精度调度器”:模型编译阶段先做敏感度分析,给每个算子打敏感度分;推理阶段再结合当前芯片负载和功耗余量,决定这一层用INT8还是FP16。低精度不只是省存取带宽,NPU里同样面积的乘法器,INT8的吞吐可能达到FP16的两倍——同样的功耗预算,产出直接翻倍,这也是一种“误差补偿”思想:把省下来的算力预算,留给真正需要高精度的关键层。

回到厨房:一碗土豆泥不需要米其林刀工。管家按菜下刀、按位宽调度,既保住了招牌菜的品相,又让后厨效率翻倍,这才是“会过日子”的精度管理。

ε≈12B−1\displaystyle \varepsilon \approx \frac{1}{2^{B-1}}
  1. 位宽 BB bit 的定点数共有 \(2^B\) 个量化等级,位宽越大,可表达的数值越密集。
    levels=2B=256(B=8)\displaystyle \text{levels}=2^{B}=256 \quad (B=8)
  2. 2^{B-1} 的含义有符号数需要正负各占一半,实际覆盖的动态范围只剩 \(2^{B-1}\) 个正数档位,这是误差公式的由来。
    range≈2B−1\displaystyle \text{range} \approx 2^{B-1}
  3. 误差反比关系量化步长约等于满量程除以档位数,相对误差与档位数成反比。位宽每增加1bit,档位翻倍,误差减半。
    ε=step2Xmax⁡≈12B−1\displaystyle \varepsilon = \frac{\text{step}}{2X_{\max}} \approx \frac{1}{2^{B-1}}

动态电压频率

灶台火力不是一成不变的。午市高峰期全部灶台开大火爆炒,备菜时段则留一两个灶台小火慢炖——火候跟着客流走。DVFS,全称“动态电压频率调节”,就是这位管家手里的“火力旋钮”,让芯片的电压和频率实时匹配任务负载。

DVFS的精髓在于一个反直觉的结论:能耗跟频率几乎无关,却跟电压的平方强相关。直观推导一下:功耗 \(P=\alpha C V^{2} f\),完成任务所需时间 \(T=N/f\)(N 是总周期数),总能量 \(E=P\times T=\alpha C V^{2} N\)——频率在乘除中对消了,电压却牢牢留在平方项里:

所以优秀的DVFS策略,永远是“降压优先、降频跟随”。当负载预测器发现任务队列变短,控制器先试探性下调电压,再对应下调频率;而升档时则反过来——先升频再升压,避免在低电压下冒进导致时序崩溃。调档本身有延迟:PLL锁定和稳压器响应需要几微秒,预测算法的好坏直接决定省电效果。

猛火爆炒并不会多费气——总能量由“火苗压强”(电压)决定,而不是火焰大小(频率)。管家调节火力时,真正上心的永远是那个压强阀。

E=CV2N\displaystyle E = C V^{2} N
  1. 等效电容 C每条信号线的负载电容,是“惯性”的量度。C 越大,翻转一次越费能量。
    E∝C\displaystyle E \propto C
  2. 电压平方 V²能量与电压的平方成正比。电压降为原来的0.8倍,能量直接降到0.64倍,这就是“降压省电王”的数学依据。
    V2=0.8V1⇒E2=0.64E1\displaystyle V_2=0.8V_1 \Rightarrow E_2=0.64E_1
  3. 总周期数 NN 是任务的工作量,与频率无关。同一个任务不论快跑慢跑,需要的周期数基本不变。
    N=f×T\displaystyle N = f \times T
  4. 频率的“消失”把功耗公式乘上时间 \(T=N/f\),频率在分子分母中对消。理想情况下,纯降频不省能量,必须配合降压才有意义。
    T=Nf,E=PT\displaystyle T=\frac{N}{f}, \quad E=P T

计算单元门控

火锅店下午打烊,后厨三排炉灶绝不会全开着烧空锅。NPU里有几十上百个计算单元,接不到任务时,闲置单元如果仍通着时钟、供着电,就等于白烧空锅。门控技术,就是那位主动“关火”的帮手。

门控技术分两档。时钟门控:把空闲单元的时钟暂停,让晶体管不再翻转,动态功耗归零,但漏电还在——像把灶火拧到“有火苗、不加热”,重新点火很快。电源门控:直接切断单元供电,连漏电都断了——像关掉煤气总阀,最省气,但重新开火要等气压上来,唤醒延迟从纳秒级涨到微秒级。门控能省多少,用一个简单公式估算:

工程上要权衡门控粒度:粒度太细,空闲检测和唤醒开关本身耗电、占面积;粒度太粗,一块大区域里有几个单元活跃,整块区域都没法关。常见做法是分级:短时空闲只做时钟门控,长时空闲才切电源门控,配合实时空闲计数器动态决策。

好管家不会让任何一个空闲灶台白白烧着,但也不会频繁开关煤气阀——门控的学问,在于“什么时候关、关到什么程度”。

Psaved=Pidle×Ridle×η\displaystyle P_{\text{saved}} = P_{\text{idle}} \times R_{\text{idle}} \times \eta
  1. 空闲功耗 P_idle单元空闲时的功耗(动态+静态),是能被门控“收割”的基数。如果空闲时本来就耗电少,门控意义就不大。
    Pidle=Pdyn,idle+Pstatic\displaystyle P_{\text{idle}}=P_{\text{dyn,idle}}+P_{\text{static}}
  2. 空闲占比 R_idle负载越低、空闲时间比例越高,门控收益越大。任务排满的NPU,门控几乎无用武之地。
    Ridle=TidleTtotal\displaystyle R_{\text{idle}}=\frac{T_{\text{idle}}}{T_{\text{total}}}
  3. 门控效率 η时钟门控只能“收割”动态部分且切换开销小;电源门控能连漏电一起省,但唤醒和切换开销大,η 是综合折扣系数。
    η=PgatedPidle\displaystyle \eta = \frac{P_{\text{gated}}}{P_{\text{idle}}}

功耗预算管理

再精明的厨房,也抵不过总电闸一跳。手机SoC里,CPU、GPU、NPU、基带共享一块电池和同一套散热系统,谁都不能无节制用电。系统级功耗预算管理,就是给整机定一条动态红线。

芯片出厂时标定TDP(热设计功耗)——在保证不烧坏的前提下,满负载能持续消耗的最高功率。运行中,一个功耗管理器周期性汇总各子系统的实时功耗,跟“当前温度对应的预算上限”比对。温度越高,允许的总功耗越低,防止热失控:

温度是预算函数的关键自变量:芯片越烫,能分给NPU的预算越紧。于是调度器会把重负载任务跟其他模块错峰——NPU跑大模型时,GPU先歇一歇;NPU空闲时,再放GPU去渲染。预算、温度、性能三者形成闭环,像管家按电价峰谷安排洗衣做饭。

总电闸的容量是有限的。管家真正厉害的地方,不是发明电,而是把“谁先用电、用多少电”安排得明明白白。

∑i=1nPi(t)≤Pbudget(T)\displaystyle \sum_{i=1}^{n} P_{i}(t) \le P_{\text{budget}}(T)
  1. 每个子系统功耗 P_i(t)CPU、GPU、NPU等各自的瞬时功耗,随时间波动。它们是等号左边的一个个“灶台电耗”。
    Pi(t),i=1,…,n\displaystyle P_{i}(t),\quad i=1,\dots,n
  2. 求和汇总所有正在工作的模块同时耗电,加起来必须被约束。NPU多耗一分,其他模块就得少耗一分。
    Ptotal(t)=∑i=1nPi(t)\displaystyle P_{\text{total}}(t)=\sum_{i=1}^{n}P_{i}(t)
  3. 温度相关预算预算上限不是固定值,而是温度 T 的函数。芯片越烫,预算越紧,形成“温度-功耗”闭环保护。
    Pbudget(T)=Pmax⋅fderate(T)\displaystyle P_{\text{budget}}(T)=P_{\text{max}} \cdot f_{\text{derate}}(T)

移动端权衡评估

用户真正关心的不是某一刻省了几毫瓦,而是:手机能不能撑到晚上、发热会不会烫手、App启动够不够快。NPU功耗优化的最终成绩单,要在这三项之间打分。厨房再好,如果为了省电把菜做得又慢又难吃,一样不及格。

业界常用的综合指标是EDP——能量延迟积。E 是完成一次推理消耗的总能量(续航维度),T 是端到端延迟(性能维度),两者相乘得到一个“既怕慢又怕费电”的综合分。同样是跑一遍YOLO,方案A省电但慢一倍、方案B费电但快三倍,EDP能帮我们客观比较优劣:

衡量收益的标准动作是画“能耗-精度”曲线:横轴是模型的量化配置,纵轴是完成一次任务的能量,再叠加准确率等值线。它能直观看出,在保持准确率不掉的约束下,功耗优化方案把能耗拉低了百分之多少;配合温度遥测数据,还能确认优化没有把散热逼到墙角。

对管家来说,最好的夸奖不是“省电”,而是“同样的菜,更快、更香、电费更少、厨房还不热”——这才是NPU功耗优化的终极目标。

EDP=E×T=PT2\displaystyle \text{EDP} = E \times T = P T^{2}
  1. 能量 E一次推理消耗的总焦耳数,直接关联续航。省电的最终目标是降低 E,而不是只看瞬时功率。
    E=Pavg×T\displaystyle E = P_{\text{avg}} \times T
  2. 延迟 T端到端耗时,直接关联用户手感。T 越长,用户越不耐烦,这也是NPU不能一味低频的原因。
    T=Nf\displaystyle T = \frac{N}{f}
  3. 乘积的意义EDP同时惩罚“耗能”和“耗时”。两个方案一个省电一个快时,EDP小的一方综合更优。
    EDP=E T\displaystyle \text{EDP} = E\,T

AI 应用场景

手机端AIGC出图优化

阶段:推理部署优化

解决的问题:手机NPU跑Stable Diffusion轻量化模型(如SD Tiny)时,传统做法全模型统一FP16,电压频率恒定,出图慢且机身发烫。通过精度自适应(卷积层压INT8、Softmax保FP16)叠加任务级DVFS,出图延迟从8秒降到6秒,整机功耗下降约30%。

具体案例:某旗舰手机相册的“AIGC魔法消除”功能,用户圈选物体后NPU在后台推理。优化前连续消除10张图片机身温度升至43°C触发降频;优化后相同任务温度稳定在39°C,且单次消除能耗从12.6J降到8.8J。

智能座舱语音助手常开监听

阶段:系统级功耗管理

解决的问题:车载语音助手需要7×24小时常开监听唤醒词,NPU一直满负荷工作会加剧座舱散热压力。通过“时钟门控+电源门控”分级:短时空闲只停时钟,长时空闲切电源,配合功耗预算管理把NPU待机功耗从瓦级压到百毫瓦级。

具体案例:某新能源车型的座舱域控制器中,NPU唤醒词检测模块功耗从1.2W降至0.18W,整车休眠状态下电池耗电显著下降,解决了“停一晚掉电3%”的用户投诉。

电池门铃摄像头人形检测

阶段:任务级调度与精度权衡

解决的问题:电池供电的智能门铃依赖NPU做移动侦测和人形识别,功耗直接决定换电池周期。传统固定帧率、固定精度方案续航只有3个月;通过负载预测DVFS——白天光照好、画面简单时低频低精度跑,夜间复杂场景才拉高频高精度——续航延长到9个月。

具体案例:某AIoT厂商的电池门铃,利用NPU空闲时间占比高达70%的特点,配合空闲检测门控,将日均功耗从280mWh压到95mWh,同时人形识别的误报率没有上升。

Python 演示

python49 行
import math  class DVFSController:    def __init__(self):        self.freq_steps = [0.4, 0.6, 0.8, 1.0]        self.volt_steps = [0.65, 0.75, 0.85, 1.0]        self.fixed_mode = False        self.energy = 0.0     def select_level(self, load):        if self.fixed_mode:            return len(self.freq_steps) - 1        for i, f in enumerate(self.freq_steps):            if load <= f * 0.9 + 0.1:                return i        return len(self.freq_steps) - 1     def run_task(self, cycles, load):        i = self.select_level(load)        f = self.freq_steps[i]        v = self.volt_steps[i]        power = load * f * v * v        time = cycles / f        self.energy += power * time        return f, v, power, time  def simulate(fixed_mode):    ctrl = DVFSController()    ctrl.fixed_mode = fixed_mode    loads = [0.2, 0.9, 0.5, 0.3, 0.85, 0.6, 0.25, 0.75]    for load in loads:        f, v, p, t = ctrl.run_task(100, load)        print("load=%.2f freq=%.2f volt=%.2f power=%.2f time=%.2f" % (load, f, v, p, t))    return ctrl.energy  def main():    print("--- fixed mode (always max freq) ---")    fixed = simulate(fixed_mode=True)    print("--- dvfs mode (adaptive) ---")    dvfs = simulate(fixed_mode=False)    print("fixed energy: %.2f, dvfs energy: %.2f" % (fixed, dvfs))    print("dvfs saving: %.1f%%" % ((1 - dvfs / fixed) * 100))  if __name__ == "__main__":    main()
目的:用简化功耗模型 \(P=\alpha f V^2\) 仿真DVFS控制器,对比“恒定最高频”与“负载自适应调频调压”两种策略的总能量消耗,直观演示压降频带来的节能收益。
  1. self.freq_steps = [0.4, 0.6, 0.8, 1.0]定义四档频率,对应硬件DVFS的档位表。
  2. self.volt_steps = [0.65, 0.75, 0.85, 1.0]每个频率档配套的电压档,体现“降频必降压”的原则。
  3. def select_level(self, load)根据当前负载选档,是DVFS的核心决策逻辑。
  4. power = load * f * v * v用简化公式估算瞬时功耗,体现电压平方的作用。
  5. time = cycles / f频率越高,完成任务耗时越短。
  6. self.energy += power * time累加能量,复现 \(E = P \times T\)。
  7. ctrl.fixed_mode = fixed_mode一键切换“固定最高频”与“DVFS自适应”两种模式。

常见误区

误区我把NPU频率直接调到最低,功耗应该会一直往下掉吧?频率降了那么多,电一定省很多。

正解理想CMOS模型里 \(E=CV^2N\),频率根本不在能量公式中。只降频会拉长执行时间,动态功耗按比例下降但漏电还在,总能量几乎没变甚至略微上升。真正的省电杠杆是电压的平方——降频必须配合降压才有效,而且低频段的静态功耗占比升高问题也不可忽视。

为何常见:大家直觉上把“功耗”和“频率”划等号,忽略了“功耗×时间=能量”这个积分关系,也忽略了电压平方这个更关键的项。

误区INT8比FP32省存取又省算力,那把整个模型所有算子都压到INT8,不是更省电吗?

正解Softmax、LayerNorm等算子对数值精度非常敏感,强行低位宽会导致精度崩塌,严重时触发重算甚至推理失败。正确做法是先做敏感度分析,给不同算子分配不同位宽(混合精度),而不是一刀切。这就像切菜:土豆泥可以粗切,但寿司刺身必须精雕细琢。

为何常见:只看到低精度“便宜”,没看到低精度可能引入“返工”成本,以及关键层对精度的刚性需求。

误区给空闲单元做了时钟门控,它就不耗电了,应该跟彻底关机一样省电吧?

正解时钟门控只停掉时钟翻转,动态功耗归零,但漏电流造成的静态功耗依然存在。想连漏电也省掉,必须用电源门控把供电切断。代价是唤醒延迟从纳秒级变成微秒级,所以要分级决策:短空闲用时钟门控,长空闲才用电源门控。

为何常见:把“不干活”和“不耗电”混为一谈,忽略了静态功耗这个躲在待机灯后面的隐形吞电者。

误区负载一上来,DVFS马上就能把频率顶上去,应该没有延迟吧?

正解DVFS调档涉及PLL重锁、稳压器电压爬升,整套动作需要几微秒到几十微秒。如果预测不准、频繁调档,切换开销可能抵消省下的能量。所以现代DVFS都依赖负载预测器做前瞻调度,而不是等负载变化后才被动响应。

为何常见:把软件里“立即生效”的直觉带到了硬件时序中,忽略了电压和时钟稳定需要真实的物理时间。

误区芯片设计好功耗就定了,我写代码、训模型的人操什么心?

正解同样的NPU,算子布局、量化配置、任务调度、DVFS触发策略不同,实测能耗可能差出30%~50%。软硬协同才是移动端功耗优化的常态。算法工程师的一次INT8改造、一次负载削峰,效果不亚于芯片改版。

为何常见:把系统看作静态的,没意识到功耗是运行时行为,取决于软件怎么“用”这块芯片。

面试题

Q1. CMOS芯片中,动态功耗与核心电压的关系是?

单选题 · easy

  • A.与电压成正比
  • B.与电压的平方成正比← 正确答案
  • C.与电压的平方根成正比
  • D.与电压无关

答案:B。动态功耗公式 \(P=\alpha CV^2f\) 中,电压以平方形式出现。这意味着电压下降10%,动态功耗约下降19%,是DVFS优先调压的物理根基。

Q2. DVFS调节中,为什么降低频率通常会伴随降低电压?

单选题 · mid

  • A.频率降低后不再需要高电压撑时序← 正确答案
  • B.高电压下耗电增加功耗下降
  • C.降低频率必须提高电压补偿
  • D.电压只影响静态功耗不影响动态

答案:A。频率降低意味着翻转变慢,时序裕量变大,可以下调电压而不出错。能耗 \(E=CV^2N\) 与频率无关、与电压平方强相关,因此“降频+降压”才能最大化节能。

Q3. 关于时钟门控与电源门控,下列说法正确的有?

多选题 · mid

  • A.时钟门控主要节省动态功耗← 正确答案
  • B.电源门控可以切断静态漏电← 正确答案
  • C.电源门控唤醒速度比时钟门控快
  • D.时钟门控唤醒时间为纳秒级← 正确答案

答案:ABD。时钟门控停时钟翻转,省动态功耗,唤醒快(纳秒级);电源门控断电,连漏电也省,但唤醒慢(微秒级以上)。选项C说反了,所以不选。

Q4. 晶体管不翻转时仍然存在的功耗称为?

单选题 · easy

  • A.动态功耗
  • B.静态功耗← 正确答案
  • C.开关功耗
  • D.峰值功耗

答案:B。静态功耗源于漏电流,即使晶体管不工作也在消耗,且随温度指数上升。动态功耗来自翻转时的充放电,两者共同构成芯片总功耗。

Q5. 将算子从FP32改为INT8推理,最需要关注的问题是?

单选题 · mid

  • A.模型文件变大
  • B.精度损失引发结果错误← 正确答案
  • C.推理速度必然变慢
  • D.功耗必然增加

答案:B。INT8量化步长更大,对Softmax、LayerNorm这类敏感算子的误差会被放大,严重时准确率崩塌甚至触发重算。应先做敏感度分析,再决定哪些算子适合低精度。

Q6. 系统级功耗预算管理包含哪些手段?

多选题 · hard

  • A.温度升高时下调预算额度← 正确答案
  • B.将高功耗任务错峰调度← 正确答案
  • C.强制所有核都满频运行
  • D.给各子系统设置TDP上限← 正确答案

答案:ABD。功耗预算管理用温度传感器闭环调额度、把高功耗任务错开、并给每部分设定TDP上限。强制满频运行恰恰违背预算管理思想,所以不选。

Q7. EDP(能量延迟积)中,E和T分别代表?

单选题 · easy

  • A.能耗与延迟← 正确答案
  • B.电压与频率
  • C.效率与功耗
  • D.误差与精度

答案:A。EDP = E×T,把能耗和延迟相乘,用来度量“又快又省电”的综合表现。它同时惩罚耗能与耗时,是NPU方案对比的常用指标。

Q8. 理想情况下降频但不降压,总能耗如何变化?

单选题 · hard

  • A.能耗升高因为时间变长
  • B.能耗基本保持不变← 正确答案
  • C.能耗一定翻倍增长
  • D.能耗随频率线性降低

答案:B。理想CMOS下 \(E=CV^2N\),N是任务周期数,与频率无关。只降频会拉长时间,总能量在理想模型中不变;现实中因静态功耗存在,总能量还会略微上升。

Q9. 以下哪些是NPU功耗优化的常用手段?

多选题 · mid

  • A.对不敏感算子使用INT8← 正确答案
  • B.空闲计算单元施加门控← 正确答案
  • C.根据负载动态调压调频← 正确答案
  • D.无条件提高芯片电压

答案:ABC。精度自适应、门控和DVFS都是正文讲到的优化手段。无条件提高电压只会让功耗按平方飙升,属于错误操作。

Q10. 为什么低频任务段的静态功耗占比会变大?

单选题 · mid

  • A.静态功耗随频率成正比上升
  • B.动态功耗降低而漏电仍在← 正确答案
  • C.门控导致漏电成倍增加
  • D.电压上调压器效率降低

答案:B。频率降低后动态功耗按 f 线性下降,但漏电功耗与频率无关、基本不变,所以低频空转时静态功耗占比越来越高。这也是“纯降频不划算”的原因之一。