稀疏感知硬件设计:从编码到MAC的AI能效优化实践
1. 项目概述与核心挑战
在人工智能硬件,特别是边缘侧和移动端的机器学习加速器设计中,我们这些做芯片和系统的人,每天都在和两个“电老虎”搏斗:一个是内存带宽,另一个是乘累加运算。前者决定了数据喂给计算核心的速度,后者则是神经网络推理和训练中最核心、最耗电的操作。传统的解决方案往往把这两块分开看:用高速SerDes(串行器/解串器)IP来搞定内存接口,用数字或模拟电路来设计MAC单元。但这样做,总感觉有点“隔靴搔痒”,没有真正触及问题的本质——数据本身。
我们手里的数据,尤其是经过剪枝和优化的神经网络权重,并不是一串均匀分布的0和1。它们具有高度的稀疏性,可能80%甚至更多的值都是零。这些零值在传统的NRZ(不归零)编码链路中,依然需要消耗与“1”几乎相同的能量来驱动线路。在计算单元里,零乘以任何数结果还是零,但传统的MAC电路在处理零输入时,其内部动态功耗可能并没有按比例降低。这就造成了巨大的能量浪费。我一直在想,能不能设计一套硬件,让它能“看懂”数据的稀疏性,只在传输和处理有效信息时才消耗能量?这正是我们这次要深入探讨的“稀疏感知”设计思路。它不是一个孤立的优化点,而是一套从链路到计算、贯穿始终的系统级能效提升方案。
2. 稀疏感知信号链路设计:从“盲发”到“聪明传”
2.1 传统AC耦合链路的困境与编码选择
在深入我们的方案之前,得先理解为什么内存接口喜欢用交流耦合。简单来说,处理器核心和内存通常采用不同的工艺节点和供电电压。处理器为了追求高性能和低功耗,电压越来越低;而DRAM等存储器件由于技术限制,电压相对较高。直接直流耦合会带来复杂的电平转换和直流偏置问题。交流耦合通过在链路中串联一个电容,阻断了直流分量,让双方可以工作在自己的最佳电压域,只交流信号成分。
但交流耦合引入了一个高通滤波器,会衰减信号的低频分量,导致严重的“直流漂移”,眼图闭合。传统做法是使用一个大电容(>500 pF)来降低高通滤波器的截止频率,但这玩意儿太大了,没法集成到芯片里,只能放在板级或封装上,严重限制了互连密度和集成度。另一种思路是通过编码,人为地让信号频谱在直流附近形成“空洞”,这样即使高通滤波器的截止频率高一些,也不会滤掉有用的信号能量。
于是,业界出现了几种编码方案:曼彻斯特编码、1-D编码、部分响应IV类(PR-IV)等。曼彻斯特编码每个比特位中间都有跳变,频谱效率减半,还需要两倍采样率,功耗高。1-D编码(比如8b/10b)虽然能保证直流平衡,但它的能量集中在信道损耗较大的高频区域,对均衡器要求高。PR-IV频谱效率最高,但编解码逻辑复杂。更重要的是,这些编码都是“信息无关”的,它们不关心你传的是“11111111”还是“00000000”,功耗几乎不变。
2.2 过渡编码:为稀疏数据而生的信号方案
我们的目标很明确:设计一种编码,它既要能适应AC耦合(频谱在DC处为0),又要能利用数据的稀疏性来节能,同时实现还不能太复杂。我们提出的方案叫“过渡编码”。
它的核心思想非常直观:只有数据发生跳变(0->1或1->0)时才驱动差分线产生完整的电压摆幅;如果数据连续相同(0->0或1->1),则让差分线短接在一起,输出零差分电压。
具体映射规则如下:
D(n)D(n-1) = “01” 或 “10”(发生跳变):驱动差分线输出+Vtx或-Vtx。D(n)D(n-1) = “00” 或 “11”(无跳变):通过开关将差分线短接,输出0 V差分电压。
电路实现与节能原理在发射端,我们采用了一种改进的电压模驱动器。与传统始终从电源抽取电流的驱动器不同,我们的驱动器有三种状态:
- 正驱动状态:PMOS打开连接到VDD,NMOS关闭,输出正电压。
- 负驱动状态:NMOS打开连接到GND,PMOS关闭,输出负电压。
- 零驱动状态:一个额外的传输门开关将差分线短接,同时PMOS和NMOS都关闭,完全切断从电源到地的直流路径。
关键在于第三种状态。当传输连续的“0”或“1”时,驱动器进入零驱动状态。此时,虽然为了匹配阻抗,端接电阻仍然连接,但驱动器本身不从电源抽取电流来产生电压摆幅。信号线上维持着一个共模电压,但差分为零。对于接收端来说,它只需要检测这三个电平(+V, 0, -V)并解码回原始比特流。
节能效果量化分析对于一个随机的、0和1等概率出现的数据流,比特跳变的概率大约是50%。因此,理想情况下,过渡编码的驱动器平均有一半的时间处于零电流状态,相比传统NRZ,信号功耗直接减半。 但当传输稀疏的神经网络权重矩阵时,假设其中80%是零值,那么出现连续“0”(即“00”)的概率会非常高。在这种情况下,驱动器处于零电流状态的时间比例远大于50%,信号功耗的降低可能达到5倍甚至更多。在我们的实测中,对于稀疏数据,信号效率从随机数据下的0.1875 pJ/bit提升到了惊人的0.0375 pJ/bit。
注意:这里的“零电流”指的是驱动器的信号电流。驱动器本身的编解码逻辑、控制开关的时钟树仍然会产生动态功耗。但这部分功耗与工艺尺寸强相关,随着工艺进步可以不断降低。而信号电流受限于信道损耗、端接电阻和所需信噪比,降低起来困难得多。因此,即使算上逻辑开销,净节能效果依然非常显著。
2.3 频谱优势与接收机简化
过渡编码带来的好处不仅仅是省电。观察它的功率谱密度会发现,它的能量天然集中在奈奎斯特频率附近,在直流和低频处能量很弱。这完美匹配了AC耦合信道的高通特性。这意味着:
- 片上集成成为可能:由于对低频衰减不敏感,所需的耦合电容可以减小到5 pF以下,这个尺寸的电容器完全可以集成在芯片内部,实现了真正的全集成AC耦合接口,省去了昂贵的外置元件。
- 均衡器大幅简化:因为编码本身对码间干扰有抑制作用(从单比特响应看,后续拖尾很小),接收端所需的均衡强度大大降低。实测中,在一个20dB损耗的信道上,仅需一个提供4-10dB增益的连续时间线性均衡器就足以在25Gb/s速率下打开眼图。这省去了复杂的判决反馈均衡器或多抽头前馈均衡器,进一步降低了接收机功耗和复杂度。
- 支持有源端接:由于信号摆幅减小(例如从NRZ的600mVpp降到200mVpp),可以在接收端采用有源端接。我们使用了一种gm倍增结构,在提供100Ω差分输入阻抗的同时,还能对信号产生
(RL/RT)倍的电压增益,提升了接收信噪比。
解码与时钟恢复接收机需要识别三种电平。我们采用了一种类似1-tap speculative DFE(判决反馈均衡器)的结构,用两个比较器来判决当前信号是正、负还是零。解码逻辑很简单:如果比较器输出指示为正或负,则当前比特与前一比特相反;如果指示为零,则当前比特与前一比特相同。 对于稀疏数据,长串的“0”会导致长时间没有跳变,这会给传统的基于数据跳变的时钟数据恢复电路带来挑战。我们采用了时钟转发方案:单独使用一个链路,持续发送“1010”模式的时钟参考信号。接收端用这个参考时钟来采样数据,并通过一个可调延迟线对每个数据通道的偏移进行单独补偿。这样既解决了稀疏数据下的时钟恢复难题,又避免了复杂CDR环路带来的功耗和面积开销。
3. 混合信号MAC加速器:在相位域中做计算
3.1 从电压域到相位域的计算迁移
数字MAC单元虽然精度高、设计成熟,但每一次全精度的乘法和加法都需要大量的晶体管开关活动,能效有天花板。模拟计算利用物理定律(如欧姆定律、电荷守恒)直接进行乘加运算,有望实现更高的能效,但受限于非线性、噪声和工艺偏差。 我们探索了一条中间道路:电流域乘法,相位域累加。核心是利用压控振荡器或电流控制振荡器的相位随时间积分的特性。
基本原理拆解一个理想VCO的输出相位是其振荡频率对时间的积分:Φ(t) = 2π ∫ f(Vctrl) dt。如果f(Vctrl)与输入电压Vctrl呈线性关系(f = f0 + Kvco * Vctrl),那么在一段时间Δt内累积的相位差就正比于Vctrl的积分。 我们可以让Vctrl正比于输入向量X和权重向量W的乘积。这样,VCO在Δt时间内积累的相位,就直接代表了Σ(X*W)的结果。最后,我们只需要一个时间数字转换器将相位差转换成数字输出即可。
3.2 晶体管级实现与稀疏性利用
我们的具体电路实现如图10所示(注:此处为文字描述,对应论文中图10):
乘法部分:采用一个差分对作为跨导放大器。其差模输出电流
i_diff = gm * v_id。- 权重
W映射为电压v_id:通过一个电容数模转换器阵列实现。权重值控制有多少个单元电容连接到差分对的一端,通过电荷共享产生与权重值成正比的差分电压v_id。 - 输入
X映射为跨导gm:差分对的尾电流源采用二进制加权电流镜阵列。输入向量X控制哪些电流镜开启,从而调整尾电流I_SS。对于MOS管,gm ∝ sqrt(μ*Cox*(W/L)*I_SS),因此通过控制I_SS可以近似线性地调节gm。 - 这样,差分对输出的
i_diff就正比于W * X,完成了模拟乘法。
- 权重
累加部分:将上述差分电流直接注入一对环形电流控制振荡器。CCO的振荡频率受控于输入电流。因此,两个CCO在计算周期内的相位差
ΔΦ,就正比于注入电流的积分,即Σ(i_diff) ∝ Σ(W*X)。数模转换:使用一个高分辨率的TDC来测量两个CCO之间的相位差。我们利用环形振荡器的多相位输出,结合参考时钟采样,实现了超过12位的有效分辨率。
如何利用稀疏性?在这个架构中,稀疏性从两个方面带来节能:
- CDAC切换功耗:当权重
W为零时,对应的电容开关不会动作,节省了CDAC的充电/放电功耗。 - CCO动态功耗:如果一部分乘法结果为零,那么注入CCO的差分电流就会减小,从而降低CCO的振荡频率和动态功耗。虽然CCO始终在运行,但其功耗与频率(即控制电流)直接相关。
实测表明,对于稀疏数据,该混合信号MAC单元的能效相比非稀疏情况有40%的提升。
3.3 非理想因素与校准策略
模拟/混合信号设计永远绕不开非理想因素。我们的MAC单元主要面临三个挑战:
- VCO失配与PVT变化:两个CCO的固有频率
f_nom必须高度匹配,否则会在输出中引入固定的相位偏移(误差项A)。此外,工艺、电压、温度变化都会影响Kvco和f_nom。 - 跨导线性度:
gm与尾电流I_SS的平方根关系是非线性的。输入电压v_id过大也会导致差分对进入非线性区。 - VCO的频率-电流非线性:CCO的
Kvco(MHz/μA)可能不是常数,这会导致累加过程的非线性。
我们的校准与校正方案:
- 启动校准与实时跟踪:上电时,将输入置于共模,进行一轮精细校准,通过修调CCO的负载电容来匹配两个振荡器的频率并消除初始偏移。在工作过程中,使用稳压器最小化电压波动。对于缓慢的温度漂移,我们周期性插入少量校准周期(例如每N个计算周期插入n个校准周期)进行跟踪补偿,开销很小。
- 限制输入摆幅:设计时确保
v_id的最大摆幅不超过共模电压的1/5,让差分对工作在线性区。 - 数字查找表校正:对于VCO非线性等带来的确定性误差,我们测量了不同输入和权重组合下的输出误差,并将其存储为一个查找表。在数字后端,用TDC输出的原始结果减去LUT中存储的预测误差,即可得到校正后的结果。实测表明,经过LUT校正后,MAC的精度得到了大幅改善。
4. 芯片实现、测试与性能对标
4.1 原型芯片与关键模块
我们在65nm CMOS工艺上实现了包含两个稀疏感知链路的完整原型芯片,并集成了混合信号MAC单元。
- 发射机:集成了过渡编码器、三态电压模驱动器。
- 接收机:包含有源端接、CTLE、双比较器判决电路和解码逻辑。
- 时钟:独立的时钟转发通道,用于发送参考时钟。
- MAC单元:包含CDAC、IDAC、双CCO、TDC以及数字校正逻辑。
4.2 链路性能实测
我们在不同数据速率下测试了链路的性能:
- 眼图与BER:在25 Gb/s速率下,经过一个20dB损耗的通道和简单的CTLE均衡后,眼图清晰张开。误码率测试满足
<1E-12的要求。这验证了过渡编码在AC耦合、高损耗信道下的优异性能。 - 能效:在16 Gb/s速率下,传输随机数据时,链路信号效率为0.1875 pJ/bit。当传输具有80%稀疏度的数据时,信号效率提升至0.0375 pJ/bit,实现了5倍的能效提升。
- 面积与电容:得益于过渡编码,AC耦合电容得以集成在片内(<5pF),节省了封装或板级面积。
4.3 MAC单元性能实测与推理精度验证
我们系统性地测量了MAC单元的性能:
- 精度与线性度:扫描了不同的输入
X和权重W向量,绘制了MAC输出误差曲面。原始模拟输出存在明显的非线性误差模式,但经过前述的LUT校正后,误差被显著压制。 - 配置灵活性:MAC的精度和速度可以通过调整DAC更新频率
f_DAC和CCO振荡频率f_OSC来权衡。根据公式N_TDC ≈ log2(N_phase * f_OSC / f_DAC),更高的f_OSC或更多的相位N_phase能带来更高的TDC分辨率(即计算精度),但功耗也会增加。我们的设计在5MHz输入更新率、5GHz CCO频率下,实现了超过12位的有效分辨率。 - 神经网络推理验证:这是最关键的验证。我们将实测的MAC单元性能(包括非线性、噪声、分辨率)建模,集成到一个软件模拟的卷积神经网络中。在MNIST手写数字数据集上进行测试。令人振奋的是,即使权重精度只有5位,并且使用了存在非理想性的模拟MAC单元,网络依然达到了超过94%的推理准确率。这证明了神经网络对计算误差具有一定的容错能力。当然,在更复杂的CIFAR-10数据集上,原始模拟MAC的性能下降明显,但经过数字校正后,其性能可以逼近全数字MAC的实现。
4.4 与现有技术的对比
我们将本工作的关键指标与近期发表的其他先进工作进行了对比(见表1和表2):
- 在链路方面:我们的稀疏感知链路在25Gb/s速率、20dB损耗下,实现了1.125 pJ/bit(随机数据)和0.0375 pJ/bit(稀疏数据)的能效,在支持AC耦合的同类方案中处于领先地位。其频谱效率和高集成度优势明显。
- 在MAC方面:我们的混合信号相位域MAC实现了速度与精度的良好平衡,并通过复用乘法器电流到CCO、利用稀疏性等方式优化了能效。与纯开关电容或纯数字方案相比,在特定精度和速度范围内展现了优势。
5. 设计心得与未来展望
做完这个项目,我对于软硬件协同设计以及“面向数据特征优化”有了更深的理解。过去我们追求的是通用、规整的硬件,但AI工作负载,尤其是推理,其数据模式是高度特异化的。强行用通用硬件去跑,就像用货轮送快递,不是不行,但效率太低。
几点实操中的深刻体会:
- 系统级权衡是关键:过渡编码省了驱动器的功耗,但增加了编解码逻辑和时钟转发通道。混合信号MAC省了数字开关的能量,但引入了校准和校正的复杂度。必须建立精确的能量模型,在系统层面评估这些“代价”是否值得。我们的经验是,对于稀疏度高于70%的典型AI负载,这些优化带来的净收益是非常可观的。
- 模拟设计的精度管理:混合信号MAC的核心挑战不是做出一个能工作的电路,而是做出一个在PVT变化下性能可预测、可校正的电路。LUT校正虽然有效,但存储和查表本身有开销。我们后来在思考,是否可以用更轻量级的在线学习电路,动态地建模并补偿VCO的非线性,这可能是下一代设计的方向。
- 与算法团队的紧密沟通:硬件能利用多少稀疏性,很大程度上取决于算法模型剪枝和压缩的程度。我们需要告诉算法同事,硬件对“结构化稀疏”和“非结构化稀疏”的处理效率是不同的。比如,我们的CDAC更擅长利用连续为零的权重块。推动算法团队产出更“硬件友好”的稀疏模式,能带来额外的收益。
- 测试验证的复杂性:测试一个信息感知的链路比测试传统链路更麻烦。你不能只用PRBS(伪随机比特序列)来测,必须构造符合真实稀疏分布的测试向量,才能准确评估节能效果。我们开发了一套脚本,能从训练好的神经网络中直接导出权重矩阵作为测试激励。
未来的方向: 这套稀疏感知的理念可以进一步延伸。例如,链路是否可以与MAC单元更深度地耦合?当链路检测到长串的零时,能否直接通知MAC单元进入低功耗休眠状态?另一方面,随着存算一体架构的兴起,内存和计算之间的物理界限变得模糊,这种稀疏感知的信号技术或许可以直接应用于存算一体芯片内部的核心互联网络上,从另一个维度破解“内存墙”问题。
这个项目让我看到,在摩尔定律逐渐放缓的今天,通过深入理解上层应用的数据特性,在电路和架构层面进行定制化创新,依然是提升能效、释放AI算力的有效途径。它不再是无差别的性能军备竞赛,而是一场针对特定任务的、精巧的“外科手术”。
