2、计算硬件基础:CPU、GPU、NPU、FPGA架构对比,计算单元与内存层次结构

各位同学,咱们今天聊聊硬件的底子。说实话,搞AI推理优化,不懂硬件就像开车不看仪表盘——能跑,但迟早要出问题。我这些年踩过的坑,十有八九都是对硬件特性理解不够深。

CPU、GPU、NPU、FPGA,这四种架构,说白了就是四种不同的“干活思路”。咱们一个一个拆开看。

2.1 CPU:通用计算的“老黄牛”

CPU的设计哲学是“什么活都能干,但一次干不了太多”。它的计算单元(Core)数量少,但每个核都很大、很复杂。为什么?因为它要处理分支预测、乱序执行、缓存一致性这些杂事。

计算单元特点:

  • 少量大核(通常4-16个)
  • 每个核有独立的L1/L2缓存
  • 支持SIMD向量指令集(AVX、SSE等)
  • 控制逻辑占比高(约40%面积)

内存层次结构:

层级容量延迟带宽
L1 Cache32KB-64KB~1ns极高
L2 Cache256KB-1MB~5ns
L3 Cache8MB-32MB~15ns
DDR4/DDR58GB-128GB~100ns50-100GB/s

核心观点:CPU适合做控制密集型和延迟敏感型任务。比如模型加载、数据预处理、小批量推理。我见过有人拿CPU跑大模型推理,结果内存带宽成了瓶颈,GPU闲着等数据——这就是典型的“木桶效应”。

2.2 GPU:并行计算的“肌肉男”

GPU的设计思路完全相反——它有很多小核,每个核能力一般,但数量多到吓人。NVIDIA的A100有6912个CUDA核心,H100更是达到了18432个。

计算单元特点:

  • 大量小核(SM单元,每个SM包含多个CUDA core)
  • SIMT执行模型(单指令多线程)
  • 计算单元占比高(约70%面积)
  • Tensor Core专门做矩阵乘法(AI推理的关键)

内存层次结构:

层级容量延迟带宽
L1/Shared Memory128KB-256KB per SM~5ns极高
L2 Cache40MB-60MB~20ns
HBM2e/HBM340GB-80GB~200ns2-3.35TB/s

个人经验:我建议你在做推理优化时,优先关注GPU的显存带宽。为什么?因为Transformer模型的计算强度(Compute Intensity)很高,但带宽往往才是真正的瓶颈。我曾经把一个模型的batch size从1调到32,吞吐量提升了8倍,但延迟只增加了2倍——这就是带宽利用率的威力。

2.3 NPU:专用推理的“特种兵”

NPU(神经网络处理器)是专门为AI推理设计的。它不像GPU那样“什么都能算”,而是把矩阵乘法、卷积、激活函数这些操作固化在硬件里。

计算单元特点:

  • 脉动阵列(Systolic Array)——典型的NPU核心结构
  • 支持INT8、INT4等低精度计算
  • 硬件加速器(卷积引擎、池化单元)
  • 片上SRAM容量大(几十MB)

内存层次结构:

层级容量延迟带宽
片上SRAM8MB-64MB~2ns极高
LPDDR58GB-16GB~80ns50-100GB/s

避坑指南:我曾经在部署一个BERT模型到NPU时,发现推理速度比GPU还慢。排查了半天,原来是模型里有个LayerNorm操作,NPU没有硬件支持,只能用CPU模拟。嗯,这里要注意:NPU虽然快,但只对“它认识的操作”快。如果你的模型里有特殊算子,一定要提前确认硬件支持情况。

2.4 FPGA:可定制的“变形金刚”

FPGA介于CPU和ASIC之间。它没有固定的计算单元,而是由可编程的逻辑块(LUT、DSP、BRAM)组成。你可以“画”出你想要的硬件电路。

计算单元特点:

  • LUT(查找表)——实现任意逻辑函数
  • DSP Slice——专门做乘加运算
  • BRAM(块RAM)——片上存储
  • 可编程布线资源

内存层次结构:

层级容量延迟带宽
BRAM几MB~1ns极高
URAM几十MB~3ns极高
DDR4/HBM4GB-16GB~100ns50-500GB/s

核心观点:FPGA的优势在于“低延迟”和“可定制”。你想想看,GPU的延迟通常在毫秒级,但FPGA可以做到微秒级。我做过一个实时语音识别的项目,GPU的延迟是15ms,换成FPGA后降到了2ms——这对实时交互来说是天壤之别。

2.5 四种架构的对比总结

咱们用一张表来对比一下,这样更直观:

特性CPUGPUNPUFPGA
计算单元少量大核大量小核脉动阵列可编程逻辑
并行度极高中高
灵活性极高极高
能效比中高
延迟极低
典型场景控制、预处理训练、批量推理端侧推理实时处理

我个人习惯在做推理优化时,先问自己三个问题:

  1. 延迟要求有多高?——微秒级选FPGA,毫秒级选GPU/NPU
  2. 模型是否固定?——固定模型选NPU,频繁更新选GPU
  3. 功耗预算多少?——低功耗选NPU/FPGA,高性能选GPU

一个小技巧:如果你在做边缘端部署,我建议优先考虑NPU。为什么?因为它的能效比是GPU的5-10倍。我做过一个智能摄像头项目,用GPU功耗是35W,换成NPU后只有5W,而且推理速度还快了20%。

好了,这一章的内容就到这里。下一章咱们会深入讲“计算强度与内存带宽的匹配”,这是做推理优化的核心数学基础。你想想看,如果连硬件怎么算、怎么存都不清楚,优化就只能是瞎蒙了。