第三章 NPU设计目标与规格定义

好,咱们进入正题。这一章聊的是NPU设计的“起跑线”——目标与规格定义。说白了,就是你在动手画架构之前,得先想清楚:这块芯片到底要干多重的活?能吃多少电?花多少钱?

我见过不少团队,一上来就追高算力,结果功耗爆了,面积炸了,最后流片回来只能降频跑。嗯,这种坑我踩过,所以今天咱们把这事掰开揉碎了讲清楚。

3.1 性能目标:TOPS与GOPS的“数字游戏”

先讲最直观的——算力。你肯定听过“这块NPU有100TOPS”这种说法。TOPS是Tera Operations Per Second,即每秒万亿次操作。GOPS则是十亿次。

但这里有个坑:TOPS到底算的是什么操作?

我习惯把算力分成两类:

  • 峰值算力:理论最大值,通常用MAC(乘加运算)次数来算。比如一个MAC阵列每周期做1024次乘加,频率1GHz,那峰值就是1024 GOPS = 1.024 TOPS。
  • 有效算力:实际跑模型时能拿到的算力。受限于数据搬运、带宽、控制流等因素,通常只有峰值的60%-80%。

重要提醒: 别被厂商的“峰值TOPS”忽悠了。我建议你定规格时,先问清楚:这个TOPS是在INT8精度下算的,还是FP16?是稀疏化后的理论值,还是稠密矩阵的实测值?

举个例子。我在做某款边缘芯片时,客户要求“至少20TOPS”。结果一细问,他们指的是INT8稠密矩阵的持续算力。那我们设计时,MAC阵列就得按25TOPS的峰值来留余量,因为实际跑起来会有各种损耗。

怎么定算力目标?我一般这么算:

  1. 先确定目标应用场景(比如实时视频分析、语音识别、自动驾驶)
  2. 跑一遍典型模型的FLOPs需求(比如ResNet-50一次推理需要约8GFLOPs)
  3. 乘以帧率要求(比如30fps,那就是240GFLOPs)
  4. 加上30%-50%的余量,应对未来模型复杂度增长

我的小技巧: 定算力目标时,别只看TOPS。要同时看“每TOPS能处理多少有效数据”。有些架构算力高但带宽低,数据喂不进去,算力全浪费了。这叫“算力虚胖”。

3.2 功耗墙与能效比:芯片的“紧箍咒”

算力定好了,接下来就是功耗。你想想看,一块芯片算力再高,如果功耗100W,那手机里根本放不下。自动驾驶芯片更是如此,散热条件有限,功耗就是硬约束。

我习惯把功耗墙分成三个层次:

  • 芯片级功耗墙:封装能散多少热?通常消费级芯片在2-5W,手机SoC在5-10W,自动驾驶芯片在30-50W。
  • 系统级功耗墙:整机散热能力。比如边缘盒子可能只有10W的散热预算。
  • 电池续航墙:移动设备尤其敏感。每多1W,续航可能少半小时。

能效比,就是每瓦能提供多少算力,单位是TOPS/W。这是NPU设计的核心指标之一。

应用场景 典型功耗预算 目标能效比(INT8)
可穿戴设备 0.1-0.5W 5-10 TOPS/W
智能手机 2-5W 3-8 TOPS/W
边缘计算 5-15W 2-5 TOPS/W
自动驾驶 30-50W 1-3 TOPS/W
云端推理 75-300W 0.5-1 TOPS/W

我曾经踩过的坑: 有一款芯片,我们为了追求极致能效比,把MAC阵列电压压得很低。结果流片回来,低温下能跑,高温下时序全崩。后来才明白,能效比不能只看典型工况,得覆盖全温度范围。从那以后,我定功耗目标时一定会留20%的电压余量。

怎么优化能效比?我建议从三个方向入手:

  • 架构层面:数据复用、稀疏化计算、近存计算
  • 电路层面:多电压域、时钟门控、电源门控
  • 工艺层面:先进工艺(7nm、5nm)能显著降低动态功耗

3.3 精度选择:INT8、FP16还是BF16?

精度选择,说白了就是“用多少比特来表示一个数”。比特越多,精度越高,但功耗和面积也越大。

我一般这么选:

  • INT8:推理的主力。大部分模型量化到INT8后精度损失在1%以内,但功耗和面积只有FP16的1/4。我做的芯片里,90%的推理任务都用INT8。
  • FP16:训练和推理的“安全牌”。精度够用,动态范围大。但功耗比INT8高不少。
  • BF16:Google搞出来的,动态范围和FP32一样,但精度只有7位。适合训练,推理场景用得少。

我的建议: 如果只做推理,INT8就够了。如果要做训练或微调,至少支持FP16或BF16。别贪心全支持,每多一种精度,硬件复杂度就翻倍。

举个例子。我在设计一款边缘NPU时,只支持INT8和FP16两种精度。INT8跑推理,FP16跑模型微调。这样MAC阵列设计简单,面积也省了30%。

精度选择还有个隐藏问题:量化误差。我曾经遇到一个模型,INT8量化后精度掉了5%。查了半天,发现是某个层的激活值分布太宽,8比特不够用。后来加了“每通道量化”才解决。

避坑指南: 定精度规格前,先拿目标模型跑一遍量化仿真。如果精度损失超过1%,要么换精度,要么改量化策略。别等流片回来才发现问题。

3.4 面积与成本约束:芯片的“紧日子”

最后聊钱的事。芯片面积直接决定成本——面积越大,良率越低,每颗芯片的成本就越高。

我习惯把面积分成三块:

  • 计算阵列:MAC单元、累加器、激活函数。通常占40%-50%的面积。
  • 存储与数据通路:SRAM、DMA、总线。占30%-40%。
  • 控制与接口:控制器、PCIe、DDR接口。占10%-20%。

怎么在面积和性能之间找平衡?我一般这么干:

  1. 先定算力目标,算出MAC阵列的最小面积
  2. 加上存储(至少能放下一个层的权重和激活值)
  3. 留20%的余量给控制逻辑和接口
  4. 如果超了预算,就砍MAC阵列数量,或者用更小的SRAM

注意: 别为了省面积把SRAM砍得太狠。数据搬不进来,算力再高也是白搭。我见过一个设计,MAC阵列利用率不到30%,就是因为SRAM太小,数据一直在等搬运。

成本约束还有个维度:工艺节点。28nm成本低但功耗大,7nm性能好但流片贵。我建议根据量产规模来选:

  • 百万级量产:用先进工艺(7nm/5nm),摊薄流片成本
  • 十万级量产:用成熟工艺(28nm/22nm),控制单颗成本
  • 千级量产:用FPGA或现有SoC,别流片了

好了,这一章的内容就这些。总结一下:定NPU规格时,算力、功耗、精度、面积这四个维度要一起看,别单追一个指标。下一章咱们聊MAC阵列的微架构设计,那才是真正动手的地方。