一块GPU是如何设计的

从“要做一颗什么样的 GPU?”一直到“把 RTL 冻结准备流片(tape-out)”。


产品定义(Product Definition & PRD/PRS)

目标:确定这代 GPU 要解决谁的什么问题。

核心决策:

目标市场:游戏/创作、AI 训练/推理、工作站、数据中心。

性能指标:FP32/FP16/INT8/TFLOPS,光追 RT/Tensor 性能,显存带宽,显示/编解码能力。

功耗/热设计:TGP/TDP 目标、峰值/持续功耗、散热与噪音红线。

成本与制程:3/4/5nm?是否采用 2.5D/HBM(CoWoS/SoIC)?芯片尺寸与良率目标。

上市窗口与生态:驱动、编译器、CUDA/ROCm、DirectX/Vulkan、PyTorch/TensorFlow 版本节奏。

产出物:产品需求规格(PRS/PRD)、性能/功耗/成本目标表、里程碑计划。


1. 体系结构(Architecture)

目标:定义 GPU 的“功能与模块分解”。

主要内容:

计算单元(SM/CU):SIMT 宽度(如 32-lane warp),流水线深度,向量/矩阵(Tensor Core)单元比例。

图形流水线:光栅、纹理(TMU)、ROP/像素输出、几何/光追加速(BVH/RT Core)。

片上互连(NoC):SM ↔ L2 ↔ 内存控制器,带宽与拓扑(环形/网格/跨栏式)。

缓存层次:寄存器文件、共享内存(scratchpad)、L0/L1/L2 容量与一致性策略、压缩/预取。

内存/IO:GDDR6/X 或 HBM2e/3e 通道数与速率;PCIe/CXL 版本;显示/编解码引擎。

电源/时钟域:DVFS、时钟门控、功耗岛、故障域与复位策略。

安全可靠性:ECC、RAS(纠错/重试/下电域保护)、安全启动/固件签名。

方法:高层性能建模(见下一节)、瓶颈分析与 roofline、功耗初算。

产出物:块级架构图、带宽/容量/时延预算、PPA 目标分解到每个大模块。


2. 性能建模与容量规划(Performance Modeling)

目标:用模型在流片前验证“架构是否够快/够省/够大”。

做法:

指令/内核回放与统计:复现实 workloads(游戏/渲染/AI 训练与推理/视频),统计指令 mix、访存模式、并行度。

模拟器:功能级(functional)、周期级(cycle-accurate)或事件驱动(event-driven)模拟;关键路径做精细模型。

带宽/延迟预算:算出 L1/L2 命中率对性能的敏感度,NoC 饱和点、显存带宽是否成为瓶颈。

热与功耗估算:基于活动率(toggle rate)与库/PDK 预估功耗曲线,评估 DVFS 策略收益。

产出物:性能预测报告、容量与带宽表、瓶颈排序与架构改版建议。


3. 微架构(Micro-architecture)

目标:把“功能块”细化成“可实现的流水线、状态机与缓冲队列”。

关键设计(以 SM 为例):

前端:取指/解码、分派到 warp schedulers,warp/线程上下文管理。

调度:多发射(issue width)、hazard 检测、scoreboard;长延迟指令隐藏(多 warp 轮转)。

执行阵列:标量/向量/矩阵计算单元(例如 FP32 ALU、Tensor Core 的 MMA 阵列)。

寄存器文件:端口数 × 频率 × 宽度 → 面积与功耗大户,需 banking/operand collect。

共享内存/L1:一致性协议、冲突与银行化、原子操作与屏障。

纹理与采样:滤波/采样器流水线、缓存协同。

异常/错误路径:溢出、NaN、越界、保护异常;性能与复杂度平衡。

电源时钟:门控粒度、时钟域交叉、功耗岛进/出状态机。

产出物:模块级微架构规格(MAS)、接口/时序表、corner case 行为说明。


4. RTL 设计(Register-Transfer Level)

目标:用 Verilog/SystemVerilog/VHDL 实现微架构。

要点:

清晰的接口(valid/ready、AXI/ACE/CHI 等),背压与仲裁。

可综合(synthesizable)编码风格、CDC(跨时钟域)同步。

参数化与可配置性(不同 SKU 的裁剪/拼配)。

断言(SVA)嵌入,方便静态/形式验证。

低功耗插桩(UPF/CPF):隔离、保持、关断单元。

产出物:模块/顶层 RTL、仿真 testbench、UPF/时钟/复位规范。


5. 设计验证(DV:Verification & Validation)

目标:在硅片前尽可能找出功能 bug。

方法组合:

UVM 随机约束验证:覆盖率驱动(功能/断言/代码覆盖),环境含 driver/monitor/scoreboard。

形式验证(Formal):安全/活性属性、死锁/互斥/等价性(RTL vs 修订)。

系统级验证:全芯片仿真 + 加速(仿真机/FPGA 原型),跑真实驱动/游戏 demo/AI 内核。

软件协同:编译器、驱动、固件同场拉通;早期 bring-up 脚本与诊断指令。

故障注入与 RAS:软错误(SEU)翻转、链路错误、显存 ECC 场景。

退出标准:覆盖率达标、严重/阻断级 bug 清零或有明确规避,签发“验证通过”报告。


6. 可测性设计(DFT)与量产可测(DFA)

目标:保证未来晶圆与封装后的芯片可被高效测试。

内容:

扫描链(Scan)、BIST(存储器/逻辑)、边界扫描(JTAG/1149.1/1500)。

HSIO 环回测试:GDDR/HBM PHY、PCIe/CXL/Display PHY 的内建 PRBS/眼图测试。

熔丝/OTP:SKU 配置、修复位、序列号、安全密钥注入路径。

现网诊断:RAS 计数器、错误日志寄存器、掉电快照。

产出物:DFT 规范、测试向量/模式库、ATE(量测机)计划。


7. 物理约束意识的 RTL/时钟/电源规划(Physical-Aware)

目标:为后续物理实现(布局布线)打下可达成的时序与功耗基础。

要点:

时钟树架构:分区/层级、时钟门控单元插入策略、抖动与偏斜预算。

复位/上电序列:多电源域/多时钟域的一致上电、掉电保护。

面积/层级划分:floorplan 约束(区域/通道/keep-out)、宏单元(SRAM、PHY)摆放。

时序收敛前置:关键路径打拍/重计流水线深度;多角多模式(MMMC)约束准备。

功耗:活动率估计、门控粒度、状态保留单元策略;热热点的流量/算力迁移。

产出物:Synthesis 约束(SDC)、时钟/复位/电源规划文档、floorplan 约束草案。


8. 第三方/复用 IP 选型与集成

目标:把自研与外采 IP 拼成完整 SoC /GPU。

常见外采 IP:PCIe/CXL 控制器 + PHY、HBM/GDDR PHY、显示/编码解码器、SerDes、PLL、LDO。

挑战:

PDK/制程版本匹配、版图宏(hard macro)尺寸与通道对齐。

协议一致性(例如 CXL.mem/PCIe Gen5/6)、电气与信号完整性预算。

许可证与安全(黑盒)、时序/功耗黑洞的隔离与门控。

产出物:IP 清单、版本与 errata、集成适配层(wrapper)、IP-XACT/接口文档。


9. 软件/编译器/驱动/固件协同设计

目标:保证“硬件能被用好”。

层次:

ISA/虚拟 ISA:图形(着色器模型)与通用计算(CUDA/ROCm)抽象。

编译器后端:寄存器分配、指令选择/调度、张量核映射、warp 级优化(例如指令交错隐藏延迟)。

运行时与驱动:内存管理、调度/抢占、上下文隔离与 QoS、安全与多租户(数据中心)。

固件/微码:引导、功耗管理、错误处理、硬件监控。

产出物:软硬接口(ABI)与编程指南、驱动里程碑、bring-up/诊断套件。


10. 合成(Synthesis)与早期时序/功耗收敛

目标:把 RTL 变成门级网表并初步评估 PPA。

步骤:

逻辑综合(target library/VT 组合)、面积/频率平衡、门级时序分析(STA,setup/hold)。

功耗估算(切换率 SAIF/VCD + 库),门级仿真(GLS)与等价性检查(LEC)。

与物理实现团队闭环:发现长线/拥塞/跨区路径,回推 RTL 重新打拍或分层。

产出物:门级网表、时序/功耗报告、优化方案清单。


11. 物理实现前的封装/硅-封联动(Package -Aware Arch)

目标:在设计阶段就考虑封装与系统。

关键点:

HBM/CoWoS/2.5D:中介层走线长度/层数、热阻、供电网络、HBM 堆栈数量与布局。

供电完整性(IR/EM):电源平面、去耦、电感环路;高电流热点位置。

热:芯片热源分布、热点迁移策略、风道/液冷协同。

产出物:封装初版叠层与球图(ball-map)、PDN/热仿真初报、系统功耗预算。


12. 签核前的“设计完成度判定”(Tape-out Readiness)

目标:为后续版图/流片把一切准备齐。

清单(设计侧):

架构/微架构 spec 冻结、RTL 冻结(RTL freeze)。

验证覆盖率达标、阻断级 bug 归零;DFT/UPF/SDC 完整。

IP 版本与 errata 已处理;软件栈基本可跑关键用例。

性能模型与实测(在仿真机/FPGA)一致性在容差内。

产出物:Tape-out 包(RTL/netlist、时钟/电源/UPF、DFT/测试模式、文档),移交物理实现团队继续布局布线与最终签核(DRC/LVS/STA/IR/EM/SI ……这些属于“制造前”的下一阶段了)。


关键权衡与工程“算账表”

1. 算力 vs 显存带宽

粗略经验:想喂饱 (X) TFLOPS 的阵列,需要 L2/显存体系提供足够 字/秒;若 L1/L2 命中率低,NoC/显存会成瓶颈 → 性能靠不住。

2. 寄存器文件与共享内存

RF 端口 × 频率 × 宽度 → 面积/功耗巨兽;banking、重命名与指令调度可降压。

3. 时钟频率 vs 流水线深度

加深流水线易提频,但会增大控制复杂度、气泡与功耗/延迟;多 warp 隐藏延迟是 GPU 的“主武器”。

4. DVFS 收益

低电压区效率高但容易掉时序/增不确定性;要有稳健的传感器与闭环控制。

5. RAS/ECC 成本

数据中心/HBM 必备,但带来面积/功耗/时序开销;需要分层策略(关键块强 RAS,非关键块轻量化)。


常见坑

片上互连拥塞:SM→L2 热点集中,NoC 选型/仲裁策略欠考虑;带宽“算赢”了但延迟“输光”。

CDC/复位时序:跨时钟域同步器/复位释放次序不严谨,硅上偶发死锁。

DFT 早期缺位:后补 scan/BIST 侵入式大、时序炸裂。

UPF/隔离:电源域切换状态机与软件不一致,产生诡异寄存器镜像。

模型-实物偏差:编译器/驱动优化没落地,性能模型过于“理想”。

封装热/PDN:设计后期才发现 IR/EM/热瓶颈,导致频率/电压被迫“腰斩”。


一个微型“SM/Tensor 子系统”尺寸/带宽快速估算示例

目标:每 SM 每拍发射 2×FMA(FP16),阵列宽度 64 lanes,主频 2.0 GHz。

峰值算力(单 SM):( 64 \text{ lanes} \times 2 \text{ FMA/cycle} \times 2.0 \text{ GHz} = 256 \text{ GFMA/s} )
若 FP16 FMA 2 FLOPs → 512 GFLOPS/SM。

寄存器读写:假设每条指令读 2 操作数、写 1 结果,等效 3 操作数/拍/lanes →
每拍每 SM 需要 (64 \times 3 \times 16\text{bit} \approx 3,072\text{ bit}) 的 RF 访问宽度(不含多发射/转发/旁路开销)。这会直逼 RF 端口与能耗极限 → 需要 banking + 矩阵指令的片上重用 来“省带宽”。

L1/共享内存:若 tile-based MMA,数据块在共享内存复用 N 次,等效把对 L2/显存的带宽需求放大 N 倍利用率;tile 尺寸需要与 bank 宽/对齐/冲突 协同设计。

(这种“回算”在架构阶段每天都要做,帮助你决定:阵列多大、RF 多宽、L1/SMEM 多大、NoC 与 L2/显存多粗。)


团队与里程碑

A 架构/性能建模:T0~T0+3 个月,冻结 v1 架构 spec。

B 微架构/RTL:T0+2~T0+9 个月,模块逐步可仿。

C DV/形式/系统级:T0+4~T0+12 个月,覆盖率爬坡→冻结。

D DFT/UPF/约束:贯穿始终,里程碑与 RTL freeze 同步。

E 合成/物理前置闭环:T0+7~T0+12 个月,进入实现与签核阶段。

注:数据中心级大芯片常跨 12–18 个月甚至更久;中途会基于模型与仿真结果做 2–3 次“回架构”。


版权声明:本文为CSDN博主「10%光速」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:ttps://blog.csdn.net/m0_66858441/article/details/154175991

最新文章