一、硬件加速概述

1.1 什么是硬件加速

硬件加速,说白了就是「用专门的电路干专门的活」。

我们平时写软件,CPU 一条一条地取指令、译码、执行,这叫通用计算。通用计算的好处是灵活,什么都能干。但坏处也明显——效率低。你想想看,CPU 处理一个像素点,可能要经过几十条指令,每条指令都要走一遍取指-译码-执行的流水线。

硬件加速的思路完全不同。它把固定的算法直接做成电路。数据进来,电路自动处理,结果出去。没有指令,没有流水线停顿,没有分支预测失败。我做过一个图像滤波的加速器,同样的算法,软件跑 30 帧,硬件直接干到 120 帧。

核心思想:用空间换时间。把算法映射成电路,让数据在电路中流动,而不是在 CPU 里排队等指令。

为什么会这样?因为硬件电路是并行的。一个乘法器,输入给进去,一个时钟周期就出结果。CPU 呢?得先加载数据,再执行乘法指令,中间还可能被中断打断。我刚开始做加速器时,总觉得软件能搞定的事何必折腾硬件。直到有一次项目 deadline 压得紧,软件优化到极限还是差 3 倍性能,最后用 FPGA 做了个流水线加速器,一周搞定。嗯,从那以后我再也不敢小看硬件加速了。

1.2 FPGA 与 ASIC 对比

很多刚入行的朋友问我:「FPGA 和 ASIC 到底选哪个?」我的回答是:看场景。

FPGA 是可编程的。你可以今天烧录一个视频编解码器,明天换成神经网络加速器。ASIC 是固定的,流片出来是什么就是什么,改不了。

我整理了一个对比表,方便你理解:

对比维度 FPGA ASIC
开发周期 几周到几个月 半年到两年
成本 中低(无流片费) 极高(流片费百万起)
性能 中等(受限于 LUT 和布线) 高(全定制优化)
功耗 较高(可编程结构开销大) 低(固定电路无冗余)
灵活性 高(可反复烧录) 低(一次流片定终身)
量产 适合小批量 适合大批量(百万片以上)

我个人习惯是:原型验证用 FPGA,量产用 ASIC。我在项目中遇到过一家做 AI 芯片的公司,他们先用 FPGA 搭了原型,验证算法没问题后才去流片。结果流片回来发现有个 bug,还好 FPGA 原型上已经验证过大部分功能,改起来不费劲。要是直接流片,那损失可就大了。

我的建议:如果你不确定算法是否成熟,或者产品量不大(几千片以内),老老实实用 FPGA。别为了省钱去流片,流片失败的代价远高于 FPGA 方案。

1.3 硬件加速的应用场景

硬件加速不是万能的,但在某些场景下,它确实能带来质的飞跃。我挑三个最常见的场景聊聊。

AI 推理

AI 推理是硬件加速最火的应用。神经网络里全是矩阵乘法和卷积,这些运算天然适合并行。CPU 算一个矩阵乘法要循环嵌套,硬件加速器可以一个周期算完一整块。

我曾经参与过一个边缘端的 AI 加速项目,要在 5W 功耗内跑 YOLOv5。CPU 方案只能跑到 5fps,功耗还超标。换成 FPGA 加速器后,直接干到 30fps,功耗才 3.2W。为什么?因为 FPGA 把卷积层做成了流水线,数据从输入到输出一路流过去,中间没有停顿。

关键点:AI 推理加速的核心是「数据复用」。权重存一次,反复用;输入数据流式处理,减少访存。我见过很多新手一上来就堆乘法器,结果带宽不够,乘法器大部分时间在空转。

视频编解码

视频编解码是另一个典型的硬件加速场景。H.264、H.265、VP9 这些标准,算法复杂但固定。软件解码 4K 视频,CPU 占用率轻松飙到 80% 以上。硬件解码器呢?几乎不占 CPU。

我记得有一次调试一个 8K 视频播放器,软件解码卡成幻灯片。后来用 FPGA 实现了硬件解码流水线,帧率直接从 5fps 跳到 60fps。这里有个坑要注意:视频编解码的时序要求很严格,帧率、分辨率、码率都要满足。我曾经因为没处理好帧同步信号,导致画面撕裂,查了两天才找到问题。

避坑指南:做视频加速器时,一定要先搞清楚「帧同步」和「行同步」的时序关系。我曾经在项目中忽略了行消隐区的处理,结果画面边缘出现花屏,排查了整整三天。

网络加速

网络加速,说白了就是让数据包处理得更快。传统的网络协议栈在 CPU 上跑,每个包都要经过中断、协议解析、内存拷贝,延迟高得吓人。硬件加速器可以在网卡上直接处理数据包,甚至实现「零拷贝」。

我做过一个 100G 以太网的加速器,软件方案延迟在 10 微秒级别,硬件加速后直接降到 1 微秒以内。怎么做到的?把 TCP/IP 协议栈的部分功能做到 FPGA 里,数据包进来直接解析,不需要经过 CPU。

这里有个知识点:网络加速的关键是「流水线并行」。一个包在解析头部,另一个包在查路由表,第三个包已经在封装了。三个包同时处理,吞吐量自然上去了。

个人经验:做网络加速时,别想着把所有协议都硬件化。把最耗时的部分(比如哈希查找、校验和计算)硬件加速,控制逻辑留给软件。这样既快又灵活。

知识体系结构图

下面这张图展示了本章的核心逻辑:硬件加速的本质、FPGA 与 ASIC 的定位、以及三大应用场景的关系。

硬件加速知识体系 硬件加速 本质:用专用电路替代通用指令 实现方式:FPGA vs ASIC FPGA 可编程、灵活、适合原型 ASIC 高性能、低功耗、适合量产 三大应用场景 AI 推理 矩阵乘法、卷积加速 视频编解码 H.264/H.265 流水线 网络加速 协议卸载、零拷贝

这张图把本章的内容串起来了。从硬件加速的本质出发,到 FPGA 和 ASIC 两种实现方式,再到三大典型应用场景。你想想看,不管是 AI 推理、视频编解码还是网络加速,核心思路都是一样的:把软件里最耗时的部分,用硬件电路并行化、流水线化。

好了,这一章就聊到这里。硬件加速的概念说复杂也复杂,说简单也简单——就是「用空间换时间,用并行换性能」。下一章我们会深入 FPGA 的内部结构,看看那些 LUT、FF、BRAM 到底是怎么工作的。

可可精品资料库