卷 IV · 通CH 18深度 18/24

从汉明到二维码、SSD 和 5G

卷 IV 收尾。这一章把前四章的理论接到你今天摸得到的东西上,并给出一行式子——它解释了为什么 WiFi 二十年的演进是那个样子,而不是别的样子。

Shannon–Hartley带宽 vs 功率突发错误

▷ 先猜一下

一个 20 MHz、信噪比 30 dB 的无线链路。下面两个改动,哪个提速更多?

A 发射功率翻倍(+3 dB)B 带宽翻倍到 40 MHz(总功率不变,所以每赫兹的功率减半)C 差不多

从「翻位率」到「信噪比」

前四章的信道模型是「每一位有 p 的概率翻」。但真实的无线电波不是这样——它是一个连续的电压波形,混着热噪声。

香农和哈特利给出的连续信道版本是:

◆ 香农–哈特利定理
C = B · log₂( 1 + S/N )

C = 容量,比特/秒
B = 带宽,赫兹
S = 信号功率
N = 噪声功率(在带宽 B 内)

注意这两个变量在式子里的位置完全不同。

B 在括号外面,是线性的。带宽翻倍,容量翻倍。

S/N 在 log 里面,是对数的。信噪比翻倍,容量只多 1 比特每赫兹。

这个位置差别,就是那道题的全部答案:

方案容量提升
20 MHz,30 dB(基准)199.3 Mbps
功率翻倍(20 MHz,33 dB)219.3 Mbps+10.0%
带宽翻倍(40 MHz,27 dB)358.9 Mbps+80.0%

注意第三行那个 27 dB:带宽翻倍时,总功率不变意味着每赫兹的功率减半(−3 dB)。就算付出了这个代价,它还是赢了 8 倍。

▸ 在现实里:WiFi 二十年的路线图就是这一行式子
标准年份信道带宽它主要动了什么
802.11b199922 MHz
802.11n(WiFi 4)200940 MHz带宽翻倍 + MIMO
802.11ac(WiFi 5)201380 / 160 MHz带宽再翻 + 更多流
802.11ax(WiFi 6)2019160 MHzOFDMA,把信道切给多用户
802.11be(WiFi 7)2024320 MHz6 GHz 频段,带宽再翻

一路都在加带宽,从来没有靠加功率。(发射功率还受法规限制,而且加功率会缩短电池续航、增加干扰——它在每个维度上都是糟糕的选择。)

MIMO 值得单独说:多天线不是「喊得更大声」,它是开出多条在空间上互相独立的信道。在理想条件下,n 根发射天线配 n 根接收天线,容量近似乘 n——这相当于在「带宽」和「功率」之外找到了第三个可以线性增长的维度,所以它是过去二十年无线通信最大的一次跃升。

同一个道理解释了 5G 毫米波:60 GHz 附近有巨大的连续频谱可用(带宽),代价是穿墙能力极差(信噪比)。它是一次典型的「用信噪比换带宽」的交易,而这笔交易在算术上通常是划算的。

另一种错误:突发的

前面所有的模型都假设错误是独立随机的。现实里常常不是。

◆ 突发错误:错误扎堆出现

CD 上的一道划痕会连续毁掉几千个比特。无线链路的一次深衰落会连续吃掉一整段。闪存的一个坏块是整块坏。

汉明码对这种错误毫无办法——7 位里错 2 位它就崩了,更别说连错几千位。

解决办法有两个,而且通常一起用:

  1. 交织(interleaving):把数据打散再发。发的时候按列写、按行读,收到之后再转回来。于是一段连续的突发错误,被摊成了很多个孤立的单错——正好是汉明码这类码擅长的。
  2. 符号级的码(Reed–Solomon):不以「位」为单位,以「字节」为单位。一个字节里错几位都算「这个字节坏了一个」。于是突发错误天然被限制在少数几个符号里。

交织这个技巧值得单独记住,因为它体现了一个很通用的思路:如果你的工具擅长处理 A 型问题,而你面对的是 B 型,有时候最好的办法不是换工具,是把 B 变形成 A。

Reed–Solomon:活得最久的那个码

▸ 在现实里:RS 码在你身边的位置
  • CD / DVD / 蓝光。CD 用的是交叉交织 RS 码(CIRC)。标称能修复约 2.5 mm 的连续划痕——这就是为什么 CD 划一道还能放。
  • 二维码。四个纠错等级 L/M/Q/H,分别能恢复大约 7% / 15% / 25% / 30% 的损坏。H 级下你可以在二维码正中间盖一个 logo,它照样扫得出来。(那个 logo 不是「留白」,它就是被当成损坏处理然后被 RS 码修回来的。)
  • RAID-6 / 纠删码存储。把一个文件切成 n 块 + m 块校验,任意丢 m 块都能恢复。云存储的「11 个 9 的持久性」就建在这上面。而这本质上和 CD 修划痕是同一件事,只是「符号」从字节变成了整块硬盘。
  • 深空通信。旅行者号用卷积码 + RS 级联。它现在在两百多亿公里外,信号功率到地球时只有约 10⁻¹⁶ 瓦,而我们仍然在接收数据。

SSD:一个每天都在悬崖边上的例子

▸ 在现实里:你的 SSD 原始错误率高得吓人

闪存单元靠在浮栅里存电荷来记录数据。这些电荷会随时间泄漏,会被相邻单元的读写干扰,而且单元本身会随着擦写次数增加而磨损

QLC 闪存(一个单元存 4 比特,要区分 16 个电压等级)在寿命后期的原始误码率可以达到 10⁻³ 甚至更差的量级——每一千个比特就有一个是错的。

而你看到的 SSD 未纠正错误率是 10⁻¹⁵ 到 10⁻¹⁷ 的量级。

中间那十几个数量级,全部由主控里的 LDPC 译码器顶着。而且它是分级的:先用快速的硬判决译码,不行再上慢的软判决(读多次、拿到每一位的置信度),再不行才报错。所以一块「老化」的 SSD 会先变慢,然后才坏——变慢就是它在反复重读、在软判决译码上花时间。

这件事很值得琢磨:整个消费级存储行业的经济性,建立在「可以用不可靠的介质 + 强大的编码,造出可靠的产品」这个香农式的判断上。没有这层码,QLC 闪存根本不可能上市。

✗ 这个直觉是错的
「信号弱就把功率开大点。」 功率在 log 里面。信噪比每翻一倍,容量只多 1 比特每赫兹每秒。而且加功率通常还会加大对别人的干扰,让整体变糟。

这个误解在实际生活里有具体后果:

  • WiFi 路由器摆位比功率重要得多。穿一堵墙可能损失 10–15 dB,而你能调的发射功率范围通常也就那么大。把路由器挪出柜子,比换一个「大功率」型号管用。
  • 信号满格但网速慢,通常不是功率问题,是信道拥挤(相当于噪声 N 变大)或者带宽被限制。换个不拥挤的信道(尤其是 5 GHz / 6 GHz)比什么都有效。
  • 「大功率信号放大器」这类产品,在多数场景下改善有限,而且它同时放大了噪声。
∑ 一个漂亮的极限:功率不是万能的,但带宽也不是

如果带宽无限大呢?容量会无限大吗?不会。

因为噪声功率 N = N₀·B正比于带宽的(热噪声在每赫兹上都有)。代进去取极限:

C = B · log₂(1 + S/(N₀B))

B → ∞ 时:
C → S / (N₀ · ln2)  ≈  1.44 · S/N₀

# 容量收敛到一个有限值,只取决于【信号功率和噪声谱密度之比】。

把它变形,得到一个通信工程里最有名的常数:

每传一个比特,最少需要的能量:

  E_b / N₀  ≥  ln2  =  0.693  =  【−1.59 dB】

# 这叫【香农极限】,是所有通信系统的绝对下界。
# 现代 LDPC / Turbo 码已经能跑到离它 0.5 dB 以内。

注意这个式子的形状:「传一个比特最少要多少能量」——它有一个 ln2。

而第 22 章那个「擦掉一个比特最少要多少能量」,答案是 k·T·ln2同一个 ln2。这两件事看起来毫不相干(一个是通信,一个是热力学),却共用同一个常数——因为它们量的是同一样东西:一个比特在这个宇宙里的物理代价。

◇ 结账
B:带宽翻倍,+80%;而功率翻倍只有 +10%

而且带宽那一边还付出了信噪比减半的代价,仍然赢了 8 倍。

这道题的价值不在这个具体数字,在这个读式子的习惯:看到一个公式,先看每个变量在括号里面还是外面、在指数上还是在底数上。那决定了「花力气改它值不值」。

这个习惯在别处一样管用。比如深度学习里的 scaling law:loss 随参数量和数据量是幂律下降的——幂律意味着要让 loss 减半,规模要涨好几倍。看清楚这一点,你对「再堆十倍算力能带来什么」的预期就会现实很多。

这一章的一句话

C = B·log₂(1+S/N)。带宽在括号外,功率在 log 里——这一个位置差别,决定了整个无线通信二十年往哪个方向走。

卷 IV 结束。你现在有了一套完整的「一对一传输」理论:怎么把消息压到最小(卷 II、III),怎么在有噪声的线上可靠地送过去(卷 IV)。

卷 V 换一个问题。前面所有章节里,「信息」都是从一个地方流到另一个地方。但还有一种问法:两样东西之间「共享」多少信息?

这个问法会给出决策树砍第一刀的依据、解释为什么电影里那句「放大,增强」是假的,还会给「一条内幕消息值多少钱」一个用钱做单位的答案——而那个答案的公式,你在第 14 章已经见过了。