模拟计算在低功耗AI推理芯片设计中扮演着越来越重要的角色。与传统数字计算相比,模拟计算利用物理定律直接进行运算,在特定场景下可以实现数量级的功耗降低。本章将深入探讨模拟计算电路的设计原理、实现技术以及在AI加速器中的应用,帮助读者掌握这一前沿的低功耗设计技术。
数字计算和模拟计算代表了两种截然不同的信息处理范式。在数字领域,信息被量化为离散的二进制状态,每个比特位只能取0或1。这种离散化带来了极高的噪声容限和可靠性,但也意味着每次状态转换都需要完整的充放电过程。数字电路的动态功耗遵循经典的CMOS功耗方程:
\[P_{digital} = \alpha C V_{DD}^2 f\]其中 $\alpha$ 是活动因子,表示电路中实际发生翻转的节点比例;$C$ 是负载电容,包括门电容、互连电容等;$V_{DD}$ 是电源电压;$f$ 是时钟频率。对于一个N位乘法器,即使采用最优化的Booth编码或Wallace树结构,仍然需要 $O(N)$ 到 $O(N^2)$ 个开关操作,每个操作都消耗能量。
更深层次地看,数字计算的每个逻辑门本质上都是一个电压控制开关。以简单的反相器为例,当输入从0变为1时,PMOS管关断,NMOS管导通,输出节点的电容通过NMOS放电到地。这个放电过程消耗的能量为 $\frac{1}{2}CV_{DD}^2$,而且这些能量完全转化为热能耗散。即使是最简单的逻辑运算,如AND或OR,都需要多个晶体管的协调开关,每次开关都伴随着不可逆的能量损耗。
相比之下,模拟计算利用物理定律的内在并行性直接完成运算。在模拟域中,信息以连续的电压、电流或电荷形式存在。基本的算术运算可以通过简单的物理过程实现:
\[I_{out} = \sum_{i} V_i \cdot G_i\]这个方程展示了基尔霍夫电流定律的直接应用:多个电流汇聚到一个节点时自然完成加法运算,而欧姆定律 $I = V \cdot G$ 则实现了乘法。这些运算不需要时钟同步,不需要逐位处理,而是在物理层面瞬时完成。理论上,一个模拟乘累加单元可以在单个时间常数内(通常是RC时间常数)完成整个MAC运算,而等效的数字实现需要多个时钟周期。
这种差异的根源在于信息表示的本质不同。数字系统通过时间和空间的离散化来对抗噪声,但付出了能量代价;模拟系统则接受一定程度的不确定性,换取计算效率的大幅提升。
模拟计算的阿喀琉斯之踵是精度限制,这直接源于物理世界的噪声本质。在模拟系统中,计算精度fundamentally受限于信噪比(SNR),这个关系可以从信息论角度严格推导。
信噪比的分贝表示定义为:
\[SNR = 20\log_{10}\left(\frac{V_{signal}}{V_{noise}}\right)\]这个对数关系反映了人类感知的Weber-Fechner定律,但更重要的是,它直接关联到系统能够分辨的量化级数。对于一个理想的量化器,有效位数(Effective Number of Bits, ENOB)与SNR存在精确的关系:
\[ENOB = \frac{SNR - 1.76}{6.02}\]这个公式的推导基于量化噪声的均匀分布假设。其中1.76dB来自于正弦波峰值与有效值的关系,6.02dB则对应每增加一位所需的信噪比改善(即 $20\log_{10}(2) \approx 6.02$)。
这意味着要达到8位精度,需要约50dB的SNR;16位精度则需要98dB的SNR。这个指数级增长的要求解释了为什么高精度模拟计算极其困难。
噪声的物理起源是多样的,但热噪声(Johnson-Nyquist噪声)构成了不可逾越的基本限制。根据统计力学的涨落-耗散定理,任何处于热平衡的电阻都会产生噪声电压:
\[v_{n,thermal}^2 = 4kTR\Delta f\]其中 $k = 1.38 \times 10^{-23}$ J/K 是玻尔兹曼常数,$T$ 是绝对温度,$R$ 是电阻值,$\Delta f$ 是观测带宽。这个公式有几个深刻的含义:
温度依赖性:噪声功率与绝对温度成正比,这是为什么量子计算机需要接近绝对零度的原因之一。在室温(300K)下,热噪声是不可避免的。
带宽权衡:噪声功率与带宽成正比,这导致了速度-精度的基本权衡。降低带宽可以减少噪声,但也限制了计算速度。
阻抗影响:低阻抗电路具有更低的热噪声电压,但会增加功耗(因为需要更大的电流来产生相同的信号电压)。
除了热噪声,实际电路还面临其他噪声源:
这些噪声源的叠加使得模拟计算的精度提升面临着收益递减的困境。
模拟计算的功耗优势与精度要求之间存在着深刻的权衡关系,这个关系可以从热力学和信息论的基本原理推导得出。理解这个权衡对于选择合适的计算范式至关重要。
从信息论角度看,Landauer原理指出,在温度T下擦除一比特信息的最小能量为:
\[E_{Landauer} = kT\ln(2) \approx 2.9 \times 10^{-21} \text{ J (at 300K)}\]这是一个理论下限,实际电路要高出多个数量级。对于处理b位信息,理论最小能量为:
\[E_{min} = b \cdot kT\ln(2)\]然而,这个理论极限只考虑了信息擦除,没有考虑信息处理和传输的能量成本。在实际电路中,数字计算的能量消耗主要来自充放电过程。一个b位数字乘法器的能量消耗可以近似为:
\[E_{digital} \approx b^2 \cdot E_{gate}\]其中 $E_{gate} \approx \frac{1}{2}C_{gate}V_{DD}^2$ 是单个逻辑门的开关能量。在现代工艺中,这大约是 $10^{-15}$ J。
相比之下,模拟计算的能量消耗主要用于维持所需的信噪比。为了达到b位精度,信号功率必须比噪声功率高 $2^{2b}$ 倍:
\[\frac{P_{signal}}{P_{noise}} = 2^{2b}\]考虑到热噪声功率 $P_{noise} = kT \cdot BW$(其中BW是带宽),模拟电路的功耗可以表示为:
\[P_{analog} \propto 2^{2b} \cdot kT \cdot BW\]这导致了一个关键的洞察:模拟计算的功耗随精度指数增长,而数字计算的功耗随精度多项式增长(通常是平方关系)。因此,存在一个交叉点,低于这个精度时模拟计算更有优势,高于这个精度时数字计算更高效。
实际电路中,模拟计算的功耗优势可近似为:
\[\frac{P_{analog}}{P_{digital}} \approx \frac{1}{2^b}\]这个简化的关系表明:
8位精度:数字计算通常更高效
这解释了为什么模拟计算特别适合INT4或更低精度的AI推理。许多研究表明,对于图像分类、语音识别等任务,4-6位的权重精度往往足够,这正好落在模拟计算的”甜点”区间。
更深入的分析还需要考虑:
这些因素使得实际的功耗-精度权衡比理论分析更加复杂,需要针对具体应用进行详细的系统级优化。
模拟计算的另一个根本优势在于其内在的大规模并行性,这种并行性不是通过复制计算单元实现的,而是利用物理定律的自然并发特性。这种并行计算能力在矩阵运算中表现得尤为突出,而矩阵运算恰恰是深度学习的计算核心。
考虑一个基本的矩阵-向量乘法运算:
\[\mathbf{y} = \mathbf{W} \cdot \mathbf{x}\]其中 $\mathbf{W}$ 是 $m \times n$ 的权重矩阵,$\mathbf{x}$ 是 $n$ 维输入向量,$\mathbf{y}$ 是 $m$ 维输出向量。在数字实现中,这个运算需要:
即使使用脉动阵列或SIMD架构,仍然需要多个时钟周期才能完成。例如,Google的TPU使用256×256的脉动阵列,处理一个256×256的矩阵乘法仍需要256个时钟周期(假设完美的数据流)。
相比之下,模拟交叉开关阵列可以在单个时间常数内完成整个矩阵运算。其原理基于两个基本物理定律:
欧姆定律实现乘法:电流等于电压乘以电导 \(I_{ij} = V_j \cdot G_{ij}\)
基尔霍夫电流定律实现加法:节点电流之和为零 \(I_i = \sum_{j=1}^{n} I_{ij} = \sum_{j=1}^{n} V_j \cdot G_{ij}\)
这意味着整个矩阵运算在物理层面同时进行,不需要时序控制,不需要数据移动,计算时间仅受RC时间常数限制:
\[\tau = RC\]其中R是等效电阻,C是负载电容。在现代工艺中,这个时间常数可以做到纳秒级别。
这种并行性带来的吞吐量优势是革命性的。考虑一个具体的例子:
这是25倍的吞吐量提升,而且模拟实现的面积和功耗通常更小。
然而,这种并行性也带来了挑战:
扇入/扇出限制:大规模并行意味着大量的输入输出连接,受到物理连线和驱动能力的限制。
信号完整性:并行信号之间的串扰、电源噪声等问题在大规模阵列中变得严重。
非均匀性:工艺变化导致的非均匀性在大阵列中累积,影响计算精度。
可扩展性:随着阵列规模增大,寄生效应(如线电阻、线电容)的影响呈超线性增长。
为了充分利用模拟计算的并行优势,现代设计通常采用分块策略:将大矩阵分解为多个小块,每块用一个模拟阵列处理,然后在数字域组合结果。这种混合架构在保持高吞吐量的同时,提供了更好的可扩展性和灵活性。
更进一步,一些前沿研究正在探索三维集成技术,通过垂直堆叠多个模拟计算层,实现更高的计算密度。理论上,一个1mm²的芯片面积可以集成数百万个模拟计算单元,提供POPS(Peta Operations Per Second)级别的计算能力,这是传统数字架构难以企及的。
电流模式计算是模拟计算的一个重要分支,它利用电流的自然叠加特性实现算术运算。在深度学习加速器中,电流模式电路因其低功耗、高速度和天然的加法能力而备受关注。本节将深入探讨电流模式计算的电路实现,从基本电流镜到复杂的MAC阵列。
电流镜是电流模式计算的基石,它的功能看似简单——复制电流,但其设计中蕴含着深刻的物理原理和工程权衡。理解电流镜的工作原理对于掌握整个电流模式计算至关重要。
最简单的电流镜由两个匹配的MOS晶体管组成:
VDD
|
|-+-|
| |
M1 M2
| |
Iin Iout
| |
GND Load
在这个结构中,M1工作在二极管连接模式(栅极和漏极短接),强制其工作在饱和区。根据MOS晶体管的平方律模型:
\[I_{D} = \frac{1}{2}\mu_n C_{ox} \frac{W}{L}(V_{GS} - V_{th})^2 (1 + \lambda V_{DS})\]其中 $\mu_n$ 是电子迁移率,$C_{ox}$ 是单位面积栅氧化层电容,$W/L$ 是晶体管的宽长比,$V_{th}$ 是阈值电压,$\lambda$ 是沟道长度调制系数。
理想情况下,如果M1和M2完全匹配且 $V_{DS1} = V_{DS2}$,则 $I_{out} = I_{in}$。然而,实际电路中存在多种非理想效应:
这个效应在短沟道器件中尤为显著,可能导致5-10%的电流复制误差。
典型的 $\Delta V_{th}$ 约为5-10mV,在低过驱动电压下可能导致显著误差。
有限输出阻抗:简单电流镜的输出阻抗仅为 $r_o = 1/(\lambda I_{out})$,这限制了其作为理想电流源的能力。在负载变化时,输出电流会相应变化。
温度效应:迁移率和阈值电压都是温度的函数:
这些温度依赖性会导致电流镜的温度系数约为-3000ppm/°C。
加权电流镜是实现模拟计算中乘法运算的关键技术。通过精确控制晶体管的几何尺寸,我们可以实现任意的电流缩放因子,这在神经网络的权重实现中至关重要。
基本原理很直观:MOS晶体管的电流与其宽长比成正比。因此,通过调整镜像晶体管的尺寸,可以实现电流的缩放:
\[I_{out} = \frac{(W/L)_2}{(W/L)_1} \cdot I_{in}\]这个简单的关系使得我们可以构建各种加权电流网络。例如,二进制加权电流DAC是AI芯片中常见的结构:
\[I_{total} = \sum_{i=0}^{N-1} b_i \cdot 2^i \cdot I_{ref}\]其中 $b_i \in {0,1}$ 是二进制控制位。
然而,实现高精度的加权电流镜面临诸多挑战:
面积效率问题:对于N位精度,最大权重晶体管的尺寸是最小权重的 $2^{N-1}$ 倍。8位DAC需要128:1的尺寸比,这不仅占用大量面积,还带来严重的寄生效应差异。
匹配精度限制:根据Pelgrom模型,晶体管参数的失配与面积成反比: \(\sigma(\Delta V_{th}) = \frac{A_{Vth}}{\sqrt{WL}}\)
其中 $A_{Vth}$ 是工艺相关常数(典型值3-5 mV·μm)。小尺寸晶体管的相对失配更大,限制了最小单元的尺寸。
系统误差累积:在二进制加权结构中,MSB的误差对总输出的影响最大。1% 的MSB误差等效于整个转换范围的0.5%误差,这限制了可达到的有效位数。
为了解决这些问题,实际设计中采用多种优化技术:
分段架构:将高位用温度计编码,低位用二进制编码
高3位:7个相同的单元电流源(温度计编码)
低5位:5个二进制加权电流源
这种混合架构在面积和精度之间取得平衡。
电流分流技术:使用R-2R梯形网络或电流分流器,避免极端的晶体管尺寸比:
Iin
|
+-+-+
| |
R/2 R
| |
Iout1 Iout2
通过电阻网络实现精确的电流分配,降低对晶体管匹配的要求。
动态元件匹配(DEM):通过时间平均减少静态失配的影响。周期性地轮换使用不同的单元电流源,使失配误差在时间上平均化: \(I_{avg} = \frac{1}{T}\int_0^T I(t)dt\)
这些技术的组合使得现代电流模式DAC可以达到10-12位的精度,足以满足大多数AI推理应用的需求。
级联(Cascode)技术是提高电流镜性能的重要方法,它通过增加一级共栅晶体管,显著改善了电流源的输出阻抗和电流复制精度。在高精度模拟计算中,级联电流镜几乎是必不可少的。
基本的级联电流镜结构如下:
VDD
|
|-+-|
| |
M3 M4 (级联晶体管)
| |
M1 M2 (电流镜晶体管)
| |
Iin Iout
级联结构的核心思想是通过M3和M4稳定M1和M2的漏极电压,从而减少沟道长度调制效应的影响。让我们深入分析其工作原理:
输出阻抗分析:
在小信号模型下,级联结构的输出阻抗可以通过以下推导得出:
这比简单电流镜的输出阻抗 $r_o$ 提高了 $g_m r_o$ 倍,在现代工艺中可达到100-1000倍的改善。
精度改善机制:
级联结构对精度的改善体现在多个方面:
抑制沟道长度调制:由于M1和M2的漏极电压几乎相同(都约为 $V_{GS3}$),沟道长度调制导致的电流误差大大减少: \(\frac{\Delta I}{I} \approx \frac{\lambda \Delta V_{DS}}{g_m r_o} \ll \lambda \Delta V_{DS}\)
改善电源抑制比(PSRR):电源电压变化主要影响M4,对输出电流的影响被衰减: \(PSRR = 20\log_{10}(g_{m3}r_{o3} \cdot g_{m2}r_{o2})\)
典型值可达80-100dB。
降低噪声贡献:级联晶体管的噪声贡献被其高输出阻抗衰减,主要噪声源仍是底部的电流镜晶体管。
设计考虑:
级联结构虽然性能优异,但也带来了设计挑战:
电压裕度(Headroom)减少: 级联结构需要额外的电压裕度: \(V_{min} = V_{DS,sat1} + V_{DS,sat3} \approx 2(V_{GS} - V_{th})\)
在低电源电压下(如1.2V),这可能消耗掉大部分可用电压范围。
频率响应: 级联结构引入额外的极点和零点,可能影响稳定性: \(f_{p2} \approx \frac{g_{m3}}{2\pi C_{gs4}}\)
需要注意相位裕度的设计。
低压级联技术:
为了在低电源电压下使用级联结构,发展出多种低压级联技术:
电流模式的乘累加(MAC)运算是模拟AI加速器的核心,它利用基尔霍夫电流定律的自然特性,在单个节点实现大规模并行计算。这种方法在神经网络推理中展现出了卓越的能效优势。
基本原理与实现
电流模式MAC的基本思想极其优雅:多个加权电流源连接到同一节点,根据基尔霍夫电流定律,输出电流自然等于所有输入的和:
\[I_{out} = \sum_{i=1}^{n} W_i \cdot I_{x,i}\]其中 $W_i$ 是通过晶体管尺寸或偏置控制实现的权重,$I_{x,i}$ 是输入电流。这个运算在物理层面瞬时完成,不需要时钟控制。
一个典型的4输入电流模式MAC单元结构如下:
Ix1 Ix2 Ix3 Ix4
| | | |
W1 W2 W3 W4 (加权电流镜)
| | | |
+----+----+----+--- Iout (求和节点)
|
Load
功耗分析
电流模式MAC的功耗主要包括两部分:
静态功耗(主导): \(P_{static} = V_{DD} \cdot \sum_i I_{bias,i}\)
这是维持电流镜工作所需的偏置功耗。
动态功耗(次要): \(P_{dynamic} = f \cdot \sum_i C_i \cdot V_{swing}^2\)
来自节点电容的充放电,通常远小于静态功耗。
与数字实现对比,电流模式MAC的功耗优势显著:
这种功耗优势来自于:
精度与线性度挑战
虽然电流模式MAC在功耗上有优势,但面临精度挑战:
动态范围约60-80dB,对应10-13位精度。
实际线性度通常限制在6-8位。
失配和变化: \(\sigma(I_{out})/I_{out} = \sqrt{\sum_i (W_i \cdot \sigma(I_i)/I_i)^2}\)
随着输入数量增加,误差累积变得严重。
优化技术
为了提高电流模式MAC的性能,业界发展了多种优化技术:
差分结构: 使用差分电流 $(I^+ - I^-)$ 表示有符号数值,改善动态范围和抗干扰能力: \(I_{out}^{diff} = \sum_i W_i \cdot (I_{x,i}^+ - I_{x,i}^-)\)
VDD
|
MAC1 ← 第一层计算
|
MAC2 ← 第二层计算
|
GND
可将功耗降低N倍(N为堆叠层数)。
动态偏置: 根据输入活动动态调整偏置电流: \(I_{bias} = I_{min} + \alpha \cdot \sum_i |x_i|\)
在保持精度的同时降低平均功耗。
应用实例:二值神经网络加速
在二值神经网络(BNN)中,权重和激活都是±1,电流模式MAC可以极其高效地实现:
输入:电流方向表示符号(流入+1,流出-1)
权重:电流镜连接方向(正向+1,反向-1)
输出:净电流方向和大小
功耗可低至0.1 fJ/operation,比数字实现低1000倍以上。
这种极致的能效使得电流模式MAC成为超低功耗AI推理的关键技术,特别是在可穿戴设备和IoT应用中。
开关电容电路利用电荷守恒实现精确的模拟运算:
φ1 C1 φ2
Vin --[SW]--||--[SW]-- Vout
传输的电荷量:
\[Q = C_1 \cdot (V_{in} - V_{out})\]等效电阻:
\[R_{eq} = \frac{1}{f_s \cdot C}\]其中 $f_s$ 是开关频率。
利用可变电容实现乘法:
\[Q = V \cdot C(W)\]其中 $C(W)$ 是权重控制的电容值。实现方式包括:
二进制加权电容阵列: \(C(W) = \sum_{i=0}^{N-1} w_i \cdot 2^i \cdot C_0\)
单位电容阵列: \(C(W) = W \cdot C_{unit}\)
运算放大器积分器实现电荷累加:
C_f
--||--
| |
Vin-|-\ |
| >-+--Vout
|-/
输出电压:
\[V_{out} = -\frac{1}{C_f} \sum_i Q_i = -\frac{1}{C_f} \sum_i V_i \cdot C_i\]开关电容电路的主要噪声源:
kT/C噪声: \(v_{n,kTC}^2 = \frac{kT}{C}\)
运放噪声: \(v_{n,opamp}^2 = v_{n,in}^2 \cdot \left(1 + \frac{C_f}{C_{in}}\right)^2\)
总噪声功率:
\[v_{n,total}^2 = \frac{kT}{C_{eq}} + v_{n,opamp}^2\]为达到b位精度:
\[C_{min} = 2^{2b} \cdot kT / V_{ref}^2\]在时间域计算中,数值通过时间间隔或脉冲宽度表示:
\[Value = t_{pulse} / t_{ref}\]乘法通过AND门实现:
\[t_{out} = t_1 \cdot \frac{t_2}{t_{ref}}\]可控延迟单元实现加权:
W1 W2 Wn
↓ ↓ ↓
In --[Delay]--[Delay]--..--[Delay]-- Out
总延迟:
\[t_{delay} = \sum_{i=1}^{n} W_i \cdot \tau_{unit}\]其中 $\tau_{unit}$ 是单位延迟。
将时间间隔转换为数字值:
Start --|>--D--D--D--D--
| | | | |
Stop ---|--|--|--|--|--
↓ ↓ ↓ ↓ ↓
[Counter/Encoder]
↓
Digital Out
分辨率受限于最小延迟单元:
\[Resolution = \tau_{min} \approx t_{gate}\]现代工艺可达到皮秒级分辨率。
PWM信号表示数值:
\[x = \frac{t_{high}}{t_{period}}\]乘法通过逻辑AND实现:
\[z = x \cdot y = \frac{t_{x,high} \cap t_{y,high}}{t_{period}}\]功耗优势:
\[P_{PWM} = P_{static} + \alpha \cdot C \cdot V_{DD}^2 \cdot f_{switch}\]其中 $f_{switch} « f_{clock}$,实现低功耗运算。
开关电容积分器是精确模拟计算的核心:
φ1 C1 φ2 Cf
+--[SW]--||--[SW]--+----||----+
| | |
Vin-+ +-\ |
>-------+--Vout
+------------------+-/
|
GND
Z域传输函数:
\[H(z) = -\frac{C_1}{C_f} \cdot \frac{z^{-1}}{1-z^{-1}}\]这等效于离散时间积分器。
可编程增益放大器(PGA):
\[V_{out} = -\frac{C_{in}}{C_f} \cdot V_{in}\]通过切换反馈电容实现可变增益:
\[Gain = \frac{C_{in}}{\sum_{i} S_i \cdot C_{f,i}}\]其中 $S_i$ 是开关控制信号。
全差分结构提供更好的共模抑制:
Vin+ --[C1]--+--\
| >-- Vout+
Vin- --[C1]--+--/
|
+--\
| >-- Vout-
+--/
差分输出:
\[V_{out,diff} = (V_{out+} - V_{out-}) = -\frac{C_1}{C_f} \cdot (V_{in+} - V_{in-})\]共模增益理想为零:
\[A_{CM} = \frac{V_{out,CM}}{V_{in,CM}} \approx 0\]主要寄生效应包括:
底板寄生电容: \(C_{total} = C_{nominal} + C_{parasitic}\)
使用底板采样技术减少影响。
电荷注入: \(\Delta V = \frac{Q_{channel}}{C_{load}}\)
采用dummy开关或互补开关消除。
时钟馈通: \(\Delta V_{feedthrough} = \frac{C_{overlap}}{C_{overlap} + C_{load}} \cdot V_{clock}\)
基本差分对电路:
VDD
|
+--+--+
| |
RL1 RL2
| |
Vo- Vo+
| |
M1 M2
|\ /|
X
|/ \|
Vi+ Vi-
|
ISS
|
GND
差分增益:
\[A_d = g_m \cdot R_L\]共模增益:
\[A_{CM} = -\frac{g_m \cdot R_L}{1 + 2g_m R_{SS}}\]共模抑制比(CMRR):
\[CMRR = \left|\frac{A_d}{A_{CM}}\right| = 1 + 2g_m R_{SS}\]高质量电流源提升CMRR:
基本电流源: \(r_{out} = r_o\)
级联电流源: \(r_{out} = g_m r_o^2\)
Wilson电流源: \(r_{out} = \frac{g_m r_o^2}{2}\)
CMRR与电流源输出阻抗成正比:
\[CMRR \propto r_{out,CSS}\]两级全差分运放结构:
第一级:差分输入级
第二级:共模反馈(CMFB)
共模反馈环路稳定输出共模电压:
\[V_{out,CM} = \frac{V_{out+} + V_{out-}}{2} = V_{ref,CM}\]降低失配的版图技术:
A B B A
B A A B
交叉耦合: 减少梯度效应影响
失配对CMRR的影响:
\[CMRR_{mismatch} = \frac{1}{\sigma(\Delta A/A)}\]其中 $\sigma(\Delta A/A)$ 是增益失配标准差。
Mythic M1076采用模拟存内计算架构,实现25 TOPS的推理性能,功耗仅3W。核心创新是将闪存单元用作模拟乘法器。
关键指标:
每个闪存单元存储模拟权重值:
\[I_{cell} = \beta (V_{GS} - V_{th})^2\]其中 $V_{th}$ 由存储的电荷决定:
\[V_{th} = V_{th0} + \frac{Q_{stored}}{C_{gate}}\]通过编程不同的 $Q_{stored}$,实现可变电导:
\[G = \frac{\partial I}{\partial V} = 2\beta(V_{GS} - V_{th})\]使用交叉开关阵列实现矩阵运算:
V1 V2 V3 ... Vn
| | | |
+-+----+----+--------+-+
| G11 G12 G13 ... G1n |
+-+----+----+--------+-+
| | | |
+-+----+----+--------+-+
| G21 G22 G23 ... G2n |
+-+----+----+--------+-+
| | | |
I1 I2 I3 ... In
输出电流:
\[I_j = \sum_{i=1}^{n} V_i \cdot G_{ij}\]这直接实现了矩阵-向量乘法。
分块计算: 大矩阵分解为多个小块: \(\mathbf{Y} = \sum_{k} \mathbf{W}_k \cdot \mathbf{X}_k\)
随机计算用概率表示数值:
\[P(bit = 1) = \frac{value}{max\_value}\]乘法通过AND门实现:
\[P(Z = 1) = P(X = 1) \cdot P(Y = 1)\]加法通过MUX实现:
\[P(Z = 1) = s \cdot P(X = 1) + (1-s) \cdot P(Y = 1)\]其中 $s$ 是选择概率。
线性反馈移位寄存器(LFSR)生成伪随机序列:
+--[XOR]--+
| |
D-D-D-D-D-D-+
| | |
Tap1 Tap2 Tap3
特征多项式:
\[P(x) = x^n + c_{n-1}x^{n-1} + ... + c_1x + 1\]周期长度:$2^n - 1$(最大长度序列)
PDM信号的平均值表示模拟值:
\[Value = \frac{1}{T} \int_0^T s(t)dt\]Σ-Δ调制器产生PDM信号:
+---+
In --+Σ +-- Integrator -- Comparator -- Out
+-+-+ |
| |
+--------[-1]------------+
噪声整形特性:
\[NTF(z) = (1 - z^{-1})^n\]将量化噪声推向高频。
二值神经网络(BNN): 权重和激活都是±1: \(y = sign\left(\sum_i w_i \cdot x_i\right)\)
使用XNOR和popcount实现。
随机梯度下降: 随机舍入减少精度损失: \(\tilde{w} = \begin{cases} \lfloor w \rfloor & \text{with prob } 1-(w-\lfloor w \rfloor) \\ \lceil w \rceil & \text{with prob } (w-\lfloor w \rfloor) \end{cases}\)
概率推理: 贝叶斯网络的自然实现: \(P(A|B) = \frac{P(B|A) \cdot P(A)}{P(B)}\)
功耗优势分析:
\[E_{stochastic} \approx N \cdot E_{gate}\]其中 $N$ 是比特流长度。对于b位精度:
\[N = O(2^b)\]因此随机计算适合低精度(<4位)场景。
本章系统介绍了模拟计算在低功耗AI推理芯片中的应用。主要知识点包括:
功耗优势原理:模拟计算利用物理定律直接运算,避免了数字电路的充放电开销,在低精度场景下可实现数量级的功耗降低。功耗比约为 $P_{analog}/P_{digital} \approx 1/2^b$。
电流模式计算:通过电流镜和电流求和实现MAC运算,输出电流 $I_{out} = \sum_i W_i \cdot I_{x,i}$,适合大规模并行计算。
电荷域计算:利用开关电容技术和电荷守恒原理,实现精确的模拟运算,噪声受kT/C限制。
时间域计算:用时间间隔或脉冲宽度表示数值,通过延迟线和逻辑门实现算术运算。
差分电路技术:全差分结构提供优异的共模抑制,CMRR与电流源输出阻抗成正比。
| 共模抑制比:$CMRR = | A_d/A_{CM} | = 1 + 2g_m R_{SS}$ |
模拟存内计算正成为突破冯诺依曼瓶颈的重要方向,特别是在边缘AI应用中。未来的发展重点包括提高精度、改善良率、增强可编程性等。
习题10.1 某模拟乘法器需要达到8位精度,假设电源电压为1.8V,温度为300K,计算所需的最小电容值。
提示:考虑kT/C噪声和SNR要求
习题10.2 设计一个4位二进制加权电流DAC,参考电流为10μA,计算各支路的晶体管宽长比。
提示:电流镜的电流比等于宽长比之比
习题10.3 差分对的尾电流源为1mA,负载电阻为10kΩ,晶体管跨导为1mS,计算差分增益和共模增益(假设尾电流源输出阻抗为100kΩ)。
提示:使用本章给出的差分对增益公式
习题10.4 分析Mythic架构中,如果闪存单元的阈值电压漂移±50mV,对8位权重精度的影响。提出一种补偿方案。
提示:考虑权重的LSB对应的电压变化
习题10.5 设计一个开关电容积分器,输入频率1MHz,要求10位精度,功耗预算100μW。计算关键参数并分析功耗分配。
提示:考虑运放功耗、开关功耗和噪声要求
习题10.6 推导随机计算实现N输入加权平均的精度与比特流长度的关系。对于4个输入,要达到6位精度,需要多长的比特流?
提示:考虑统计误差和中心极限定理
习题10.7 某时间域乘法器使用100ps的单位延迟,输入范围0-1ns。分析工艺变化(延迟单元±10%变化)对计算精度的影响,并提出校准方法。
提示:考虑延迟链的累积误差
习题10.8 (开放思考题)比较模拟计算、数字计算和量子计算在AI推理中的功耗极限。考虑Landauer极限和实际工程约束,讨论各自的适用场景。
提示:从信息论、热力学和工程实现三个角度分析
错误:仅考虑热噪声,忽略1/f噪声、电源噪声等 后果:实际精度远低于设计目标 正确做法:全面的噪声预算,包括所有噪声源,留出3dB裕量
错误:假设所有晶体管完美匹配 后果:电流镜精度差,CMRR严重下降 正确做法:使用共质心布局,增加器件面积,考虑Monte Carlo仿真
错误:室温下仿真,忽略温度变化 后果:-40°C到85°C范围内性能严重退化 正确做法:全温度范围仿真,设计温度补偿电路
错误:理想模型设计,忽略寄生电容 后果:带宽不足,稳定性问题 正确做法:后仿真验证,考虑所有寄生参数
错误:理想电源假设 后果:数字噪声耦合到模拟电路 正确做法:独立电源域,充分去耦,差分结构
错误:忽略转换器的非理想特性 后果:系统精度受限于转换器 正确做法:匹配ADC/DAC精度与模拟计算精度,考虑DNL/INL
错误:忽略开关的时钟馈通效应 后果:输出偏移,精度下降 正确做法:使用底板采样,dummy开关,全差分结构
错误:只关注稳态性能 后果:上电时间长,不适合间歇工作 正确做法:优化偏置启动,使用快速建立技术