做芯片就是在算力墙、存墙、复杂度墙三个约束下,取舍固定成本、功率、面积。
想省成本 → 存墙和复杂度墙低换取算力墙高。
想性能高 → 三墙一起高,拿钱砸、拿功耗换、拿散热填。
想功耗低/能效比高 → 复杂度交给软件
硬件复杂度
- 硬件复杂度:表示芯片电路整体有多复杂 ,是芯片物理算法逻辑的总和。
- 组成:计算单元、存储单元、控制逻辑、互联、缓存一致性、接口、安全、电源管理。
增加计算单元,会拉高算力+硬件复杂度;
增加缓存、NoC、内存控制器,会拉高存力+硬件复杂度;
更复杂控制逻辑只涨硬件复杂度,峰值算力和存力不变,但能改善实际有效性能;
算力
- 算力:单位时间算术运算量(FP/INT运算),算力决定Ai模型单位时间最多能算多少;
- 指标:运算速度,算得多快
- 峰值算力(peak performance)= 硬件上限
- 有效算力(sustained performance)= 实际跑出来
- 利用率(utilization)= 有效 / 峰值(典型 AI 推理卡 30-50%,训练卡 40-60%)
存力
- 存力:单位时间芯片/系统把数据读进来、写出去、搬运流转的能力。存力决定物理上限时,实际上能用到几成。
- 存力只管搬数据,不做算术运算
- 指标:搬得多快、装得下多少
存力分为:存储容量、存储带宽、访问延迟、存储层级结构、能效。
-
容量:决定能放下多大模型、多大数据集。
片上:寄存器、L1/L2/L3缓存;
片外:DDR、HBM、SSD、磁盘。
单位:Byte。 -
带宽(最核心存力指标)单位时间读写数据总量,GB/s、TB/s。
- 片内带宽:缓存、SPM、片上网络NoC内部吞吐
- 片外带宽:HBM/DDR控制器,内存总线
-
访问延迟发起请求到拿到数据的时间,ns级别。 缓存、内存、存储介质延迟差异巨大。
-
存储架构能力(属于存力的软‑硬件属性)缓存一致性、预取、地址转换、压缩、ECC纠错、内存池化、多芯片内存共享。 这些本身不新增容量,但是决定存力能不能发挥出来。
三者:算力|存力|硬件复杂度
算力 ⇋ 存力:
算力与存力几乎互不包含。算力与存力是耦合约束——存力不足时,实际有效算力会被存力卡住(这是经典存储墙);但峰值算力由计算单元决定,存力再差也变不出算力。 存力不会产生算力,但存力决定能把百分之多少的峰值算力转化为实际有效算力(Roofline 模型)。
有几种情况:
-
- 峰值算力很高,但存力很差:芯片堆一大堆张量核,但是内存带宽很小。 芯片纸面算力爆炸,实际跑模型疯狂等待数据,有效算力暴跌。峰值算力由计算单元决定;
-
- 存力很强,算力很低:高性能内存控制器芯片,只是数据中转,几乎没有计算单元,这种没有计算需求,自然不用很多计算单元。
这就引出了芯片设计第一原则:市场定义技术栈——看清芯片卖给谁,由产品的价值推出三墙优先级。
1. 先看产品形态再定取舍
芯片设计师面对三堵墙,是在特定约束下做帕累托最优取舍,通常先定产品形态,由产品的价值推出三墙优先级:
- 硬实时、低功耗 → 以存换复杂(精简 SRAM,不搞花哨流水线)
- 数据中心训练 → 以复杂同时换算力和存力,只要能跑,工程复杂度不计代价
- 消费级 → 成本、功耗、面积三墙之间算总账,多一块单元多一笔钱,任何超过规格承诺的东西都叫“浪费”约束通常来自:成本、功耗、面积、研发周期、软件生态。
约束通常来自:成本、功耗、面积、研发周期、软件生态。
| 场景 | 核心瓶颈 | 取舍策略 |
|---|---|---|
| AI 推理加速(数据中心) | 存墙主导 | 怼 HBM、近存计算,容忍一定硬件复杂度 |
| 边缘 AI(IoT/可穿戴) | 面积/功耗墙 | 极致裁剪算力,小 SRAM + 流水线,复杂度压到最低 |
| 高性能计算 GPU | 三墙并发 | 三者全上:大算力 + 超大带宽 + 复杂调度;代价是面积、功耗、成本爆炸 |
| 手机 AP SoC | IP 集成复杂度 | 模块化异构(CPU、GPU、NPU、ISP 拼装);存墙靠缓存层级缓解;单模块算力不强,但全系统活好够用 |
| 网络交换芯片 | 存力吞吐为绝对核心 | 几乎没有通用算力单元,硬件复杂度集中在包处理流水线和缓存管理 |
2. 不能只看峰值,工程师盯“每瓦·每毫米”有效算力
- 算力墙 不是单纯堆 ALU 就能破——功率密度让芯片发热到物理极限(暗硅效应)。
设计师的策略:不等所有工人同时开工,而是搞“轮流上岗”(DVFS、时钟门控、电源域),让实际热功率安全,同时提升有效算力。 - 存墙 的解法从来不是容量与带宽二选一,而是靠多层次存储(寄存器→L1→L2→HBM→DDR)让数据尽量靠近计算单元。代价是缓存一致性和预取逻辑(复杂度)。
- 复杂度墙 的核心不是设计难,是验证难:晶体管越多,状态空间指数爆炸。现在大芯片 Tape-out 前,验证工作量超过设计本身。工程上的取舍:大量复用验证过的成熟 IP、模块化设计、减少跨时钟域。
现实工程中的三类典型权衡
专用 ASIC:算力优先,复杂度换存墙
通用 CPU:预算优先给复杂度,用血本对冲存墙
GPU / AI 训练卡:三墙顶格,烧钱也烧功耗
① 专用 ASIC:算力优先,放弃部分复杂度换存墙
推理芯片(如谷歌 TPU v1):
- 脉动阵列获得极高算力/面积比,通过数据复用降低访存次数,放弃通用缓存一致性,用大 SPM(便签存储器)由编译器显式管理数据搬运,这是缓解存墙的做法(让数据搬运更可控)
- 编译器显式SPM是把存墙从硬件模糊地带精确化到软件可控,硬件复杂度极低,但存墙压力摊给编译器团队,把存墙压力精确化,让程序员/编译器明确知道什么时候数据在哪儿
- 牺牲软件灵活性,换能效比
② 通用 CPU:复杂度永远最优先,用血本对冲存墙
高性能 CPU:
- 乱序执行、分支预测、多级缓存一致性——都是复杂度核心指标
- 单核峰值算力并不惊人,但实际有效算力靠复杂调度撑住
- 存墙靠越来越大的 L2/L3 + 提前预取缓解
- 设计团队 70% 精力在验证和调试,这堵复杂度墙无法绕过
③ GPU / AI 训练卡:三墙逼近极限,成本高+功耗高
数据中心 GPU:
- 数千个计算单元保证算力
- HBM 堆叠 + 超宽总线保证存力
- 完整调度、线程管理、显存控制器保证组织复杂度
- 代价:芯片面积特大、功耗爆炸(单卡 700W+)、系统散热成本高昂
- 取舍不在芯片内部,而在于散热成本和液冷的价格平衡点
四种典型芯片例子
| 芯片类型 | 算力 | 存力 | 硬件复杂度 | 特点总结 |
|---|---|---|---|---|
| 简单AI推理ASIC | 高 | 片上SPM带宽很高;没有复杂缓存系统 | 低 | 计算阵列简单,存储是简单SRAM,没有复杂一致性、乱序逻辑。高算力、不错存力,低硬件复杂度。 |
| 通用高性能CPU | 峰值浮点算力中等 | 缓存系统极其复杂,但片外带宽一般;单线程访存延迟优秀 | 极高 | 大量晶体管花在乱序、分支预测、缓存一致性,不是用来做计算,也不是单纯提升带宽。 |
| 主流GPU(AI显卡) | 高 | HBM带来巨大片外带宽;多级缓存、复杂NoC | 很高 | 同时堆计算单元+复杂存储互联系统;三者都强。 |
| 内存控制器/交换芯片 | 0,几乎没有运算单元 | 极高,专门做数据转发 | 中高,复杂互联逻辑 | 只有存力,几乎无算力。 |
“以存换算”与“以算换存”的辩证
- 以存换复杂:增大 SRAM,删掉预取逻辑,降低复杂度(适合嵌入式 MCU/简单 DSP)
- 以算换存:
- 1 软件预取(software prefetch):CPU 发指令提前把数据拉进缓存 → 多用算力指令换少等数据-
- 2 内存解压缩(在线解压):芯片运行时实时解压缩数据流 → 用解码算力换带宽-
- 3 着色器/AI 推理的 tile 计算:把大矩阵切成小块在 on-chip 算完 → 多用算力换少搬数据
- 以数据形态变化换存力:用计算指令模拟压缩/解压缩搬运,缓解存墙但增加算力开销(内存压缩、稀疏化、量化)
- 以复杂换算力:乱序执行用多的晶体管换有效算力,是 CPU 的核心思想
- 以复杂换存力:多级缓存一致性协议用复杂状态机换透明的高效数据存取
总结
- 算力 = 决定Ai模型单位时间最多能算多少,只管运算。
- 存力 = 硬件存储+传送数据周转逻辑体系,只管存放搬运数据。
- 硬件复杂度 = 硬件复杂度 = 物理算法逻辑 + 验证逻辑 + 软件协同逻辑的总和 。

1647

被折叠的 条评论
为什么被折叠?



