横空出世
ML Computation in Memory
接着昨天矽说针对MIT“跨越性”AI芯片解密:真的是颠覆性创新吗?的介绍,我们继续聊聊最近持续热门的AI存储器这一话题,顺带总结下ISSCC 2018 AI相关论文的思路。
随着新年钟声的敲响,ISSCC 2018的大幕已然拉上。 回顾ISSCC 2018,众所瞩目的焦点中,不可忽视的压轴大戏——Machine Learning in Memory session。怀着无比瞻仰的心态,小编挤进了大厅期待这一场Computing in memory (CIM)的盛宴。
Source: ISSCC 2018 31.1 slides,By MIT
又一件皇帝的新衣?
然而,似乎,好像,有什么不对劲的地方。首先是上述的两个潜力:(1)数据传输的需求下降。(2)用于神经网络层间内部的功耗减少。
在目前的深度学习处理器中,大部分深度学习处理器与主控的通信模式都是基于类似总线外挂的存储器接口,而数据的内部调度是不会体现在外部的传输带宽上的。比如今年Machine Learning处理器 session中的旗舰设计 13.2:
Source: ISSCC 2018 13.2 slides,By 北海道大学
其层与层间的数据通信,基本建立在了使用电感耦合堆叠在主芯片下方的SRAM中。在类似的情况下,CIM对于外部带宽的需求并没有实质提升。而实际的情况可能更糟糕,在CIM session所有发表的内容中,大部分设计均需要将CIM输出回传给host再调度以便于下一层计算,仅有13.5实现了两级全链接网络的互传。但CNN间的层间互传与重新排序比全链接复杂的多,CIM并未实质解决该问题。
Source: ISSCC 2018 31.5 slides,By 台湾清华大学
除此之外,CIM还带来了一个噩梦的芯问题——失配。在所有RAM制造过程中,面积(密度)是第一考量因素,而晶体管尺寸在能够保持功能的情况下,以更小为优化方向。换言之,RAM cell在实际制造过程中具有极高的不匹配性。由于这些失配特征,在完成多比特MAC计算时往往需要额外的抗失调与失配补偿电路。
为了缓解这一问题,MIT的“跨越性”设计提出了在global bit line上用脉冲长度调制的DAC代替原有的电流DAC,以解决IDAC的失配问题。
Source: ISSCC 2018 31.1 slides,By MIT
类似的做法,亦可以在ISSCC 2018 7.4 的设计中看到,将数字码调制成脉宽与振荡器信号叠加,实现时域上的乘法:
Source: ISSCC 2018 7.4 slides,By 佐治亚理工学院
该方法的逻辑运算复杂度低、功耗低,但是其对MAC计算速度的影响也是显而易见的。
所以,CIM for Machine Learning渴望解决的冯诺伊瓶颈并没有在今年的session被很好地诠释。而其性能上的提升,基本都来自于因为采用低精度的(二进制binary或ternary)网络导致的低位宽需求。讲白了,就是借着CIM的大名行二进制高能效模拟运算之实。然而,这一优势又在machine learning session被stanford团队用传统开关电容的方式打脸——
Source: ISSCC 2018 13.5 slides,By Stanford
该文章采用传统的SAR ADC电荷重分配原理,将基于开关电容的神经元计算能效推进到772 TOPS/W (你没有看错,这么令人恐怖的数字),已经在CIM能效的的10倍以上。
春天在哪里?
然而,CIM并非一无是处。处理器单元与存储器共享的低功耗架构,在always-on的near sensor系统有着巨大的性能优势。ISSCC 2018正好提供了两个不错的例证:首先是面向机器人增强训练(reinforcement learning)的混合型号神经模态加速器,
Source: ISSCC 2018 7.4 slides,By 佐治亚理工学院
其二是面向音频识别的模拟前端与深度学习后端处理系统:
Source: ISSCC 2018 21.2 slides,By 哥伦比亚大学
这两个例子都具有信号流与神经网络的间流水线链接模式,并不存在基于总线的host调度,同时,又是低功耗的应用场景,层间互联的需求也很明显。小编相信在这些应用中,CIM的优势将逐渐展现出来。