硬件加速基础:CPU、GPU、FPGA、ASIC 的架构对比与选型

做实时 AI 加速,选对硬件等于成功了一半。

我见过太多团队,算法调得飞起,一上板子就卡成幻灯片。为什么?硬件没选对。CPU、GPU、FPGA、ASIC,这四种芯片各有脾气。今天咱们就掰开揉碎,看看它们到底谁适合干什么。

先看一张全景图

下面这张图,是我自己总结的硬件加速四象限。你一看就明白。

硬件加速四象限:CPU、GPU、FPGA、ASIC 硬件加速四象限:CPU / GPU / FPGA / ASIC CPU 通用控制 · 低延迟 · 串行 适合:控制流、小批量、调度 算力密度:★☆☆☆ 灵活性:★★★★ GPU 大规模并行 · 高吞吐 适合:矩阵运算、训练、推理 算力密度:★★★★ 灵活性:★★★☆ FPGA 可重构流水线 · 硬实时 适合:定制流水线、低延迟 算力密度:★★★☆ 灵活性:★★★★ ASIC 极致能效 · 固定功能 适合:量产、固定算法、低功耗 算力密度:★★★★★ 灵活性:★☆☆☆ 选型核心:算力密度 vs 灵活性,永远在博弈

这张图我画了很多遍。每次给团队讲选型,我都先亮这张图。四个角,四种哲学。

CPU:老大哥,但不是干粗活的料

CPU 是冯·诺依曼架构的经典代表。它擅长的是「控制」和「串行计算」。你想想看,操作系统调度、网络协议栈、文件读写,这些活儿离了 CPU 不行。

但做实时 AI 推理呢?CPU 就吃力了。一个时钟周期只能处理几条指令,碰上卷积、矩阵乘法这种大规模并行计算,CPU 得排队慢慢来。

CPU 在 AI 加速中的定位:

  • 做控制面:管理数据流、触发推理任务
  • 做预处理:图像缩放、格式转换、数据打包
  • 做后处理:非极大值抑制(NMS)、结果解析
  • 跑轻量模型:MobileNet、TinyML 场景

我记得有一次做智能摄像头项目,团队一开始用 CPU 跑 YOLOv3。结果呢?1080P 图像一帧要 2 秒。客户直接说「这哪是实时,这是幻灯片」。后来我们把推理挪到 GPU 上,CPU 只负责取流和显示,延迟降到 30ms。

我的建议:别让 CPU 干卷积。让它管调度、管数据搬运。这才是它的强项。

GPU:并行怪兽,吞吐为王

GPU 天生为并行而生。一个 GPU 有几千个 CUDA 核心,可以同时处理几千个像素、几千个神经元。说白了,它就是为矩阵运算量身定做的。

做深度学习训练,GPU 是王者。推理场景呢?如果对延迟不敏感、批量大,GPU 也香。但实时系统有个痛点——延迟抖动。

我曾经踩过的坑:用 GPU 做实时视频流推理。帧率确实高,但偶尔会卡一下。查了半天,发现是 GPU 驱动在做上下文切换。实时系统里,这种「偶尔卡一下」是不能接受的。后来我加了 GPU 独占模式和锁页内存,才稳住。

GPU 的另一个问题是功耗。一块 RTX 3090 满载 350W,数据中心里散热成本比卡本身还贵。所以边缘端很少用 GPU,除非你不在乎电费。

FPGA:可重构的硬流水线

FPGA 是我个人最喜欢的加速器件。为什么?因为它「软硬通吃」。

FPGA 内部是一堆逻辑单元(LUT)、触发器(FF)、DSP 块和 BRAM。你可以把它们编程成任意数字电路。想做一个 8 级流水线的卷积器?写几行 Verilog,烧进去,它就变成了硬件。

FPGA 的核心优势:

  • 硬实时:没有操作系统调度,延迟确定到纳秒级
  • 流水线:数据流式处理,一拍接一拍,吞吐极高
  • 可重构:算法变了?重新烧 bitstream,不用换板子
  • 低功耗:同等算力下,功耗只有 GPU 的 1/5 到 1/10

我做过一个项目:雷达信号处理。要求延迟 < 1ms,帧率 1000fps。GPU 做不到,CPU 更没戏。最后用 Xilinx Zynq FPGA,把 FFT、CFAR 检测、聚类全部做成硬件流水线。延迟 0.3ms,功耗才 8W。

但 FPGA 也有门槛:开发周期长。写 RTL 比写 Python 慢多了。好在现在有 HLS(高层次综合),可以用 C/C++ 写算法,自动生成硬件。我建议新手从 HLS 入手,别一上来就撸 Verilog。

ASIC:极致能效,但只干一件事

ASIC 是专用集成电路。说白了,就是为某个算法量身定做的芯片。比如 Google 的 TPU、华为的昇腾、寒武纪的 MLU。

ASIC 的能效比是最高的。同样做一次矩阵乘法,ASIC 的功耗可能只有 GPU 的 1/10。为什么?因为 ASIC 没有多余的控制逻辑,没有指令取指、译码的开销,数据通路是固定的。

ASIC 的适用场景:

  • 算法已经稳定,不再频繁迭代
  • 出货量巨大(百万级),摊薄 NRE 成本
  • 对功耗和面积有极致要求(手机、IoT、汽车)

但 ASIC 有个致命缺点:不灵活。算法一改,芯片就废了。我见过一家公司,花 2000 万流片做 AI 芯片,结果一年后 Transformer 火了,CNN 芯片直接没人要。嗯,这就是 ASIC 的风险。

选型决策表

下面这张表,是我做项目选型时必查的。你直接拿去用。

维度 CPU GPU FPGA ASIC
算力密度 低 高 中高 极高
延迟确定性 中(受 OS 影响) 低(抖动大) 极高(纳秒级) 极高
功耗效率 中 低 高 极高
灵活性 极高 高 高(可重构) 低(固定)
开发周期 短(天级) 中(周级) 长(月级) 极长(年级)
单位算力成本 高 中 中高 低(量产时)
典型场景 控制、调度、预处理 训练、批量推理 实时流水线、信号处理 量产终端、手机、汽车

我的选型心法

做了十几年加速系统,我总结了一个「三问选型法」:

  1. 延迟要求多硬? 如果必须 < 1ms 且确定,FPGA 或 ASIC。如果 10ms 以内,GPU 可以。如果 100ms 都行,CPU 凑合。
  2. 算法变不变? 还在频繁改?别碰 ASIC。用 FPGA 或 GPU。算法冻结了?考虑 ASIC。
  3. 量有多大? 一年卖几百台?用 FPGA 或 GPU。一年百万台?ASIC 摊薄成本后最划算。

我曾经犯过的错:有个项目,算法还没定型,我就拍板用 ASIC。结果流片回来,算法改了,芯片废了。200 万打水漂。从那以后,我坚持「算法先冻结,再谈 ASIC」。

小结

没有最好的芯片,只有最合适的芯片。CPU 做控制,GPU 做吞吐,FPGA 做实时,ASIC 做极致。选型的关键,是搞清楚你的系统到底要什么。