清华大学微纳电子系的尹首一等人于2018年发表论文《A 1.06-to-5.09 TOPS/W Reconfigurable Hybrid-Neural-Network Processor for Deep Learning Applications 》,介绍了他们的面向深度学习人工智能算法的AI芯片架构及性能参数。
这是大学的AI芯片,代表了学术界的一种想法。
下面分析一下其内部结构。当然,主要还是看其内部乘加逻辑的设计。
(所有图片来自论文截图)
1、整体逻辑架构
这款AI芯片的整体逻辑架构如下图2所示。
可以看出,内部采用了2个PE阵列,其实就是2个脉动阵列,与谷歌的TPU比较像。不过,这里的脉动阵列的行为比较复杂,与谷歌TPU的脉动阵列并不相同。
这里的每个PE阵列可以最多配置成四个子阵列。
整体来说,权重存储在一个buffer中,data存储在另外一个buffer中,思路与寒武纪的DianNao、英伟达的NVDLA、谷歌的TPU等主流AI芯片一致。
既然是脉动阵列,自然要重复利用数据和权重。
论文提到,同一行的PE共享数据,同一列的PE共享权重。
奇怪的是,除了有个脉动阵列外,没有其他的激活、BN、add、pooling等模块。
仔细一看,原来这些功能都放在了PE中。
下面来看看PE的结构。
2、PE
PE的结构图如下图所示。
PE比较复杂呀。
首先PE要分2种,一种是普通PE,一种是super PE。
普通PE,只执行卷积和全连接。
super PE,只存在于最下面,执行包括pooling,激活,以及乘法,加法等RNN中的操作。
这么多PE,每个PE又这么复杂,那如何一起工作的?
下面来看看论文给的例子。
3、配置PE,计算LRCN
图5给出了两种计算的数据流程图。
分别为:
(1)CNN -> FC -> RNN
(2)Conv -> pool -> FCN/RNN
可以看出,计算卷积,全连接,pooling,RNN的特殊操作等,可以配置不同数量的PE,灵活处理,最大化提升效率。
下面再看看这样设计带来的性能提升。
4、性能比较
清华的这款AI芯片的实际频率是200MHz。
可以看出,在与另外2款芯片比较时,清华的吞吐量几乎是其他的6倍,能效也更好。
还是非常不错的设计。
5、总结
整体来看,这个AI芯片的结构,利用了脉动阵列的优点,大量复用数据和权重,又结合了可重构的思路,使得PE资源灵活配置,最大限度提升效率。
不过,可以看出,与谷歌TPU比较,这里的PE结构非常复杂,内部path走线非常多,另外一些资源的分配有欠缺,比如每个普通PE中只有relu激活,没有其他的激活函数,那么当卷积需要别的激活函数,怎么办?还能高效处理么?
特殊的激活函数,目前只有super PE中有,这也限制了PE资源的配置及效率。
假如,卷积用的激活是特殊激活函数,那么,就只有最下面的PE才能完成正确的激活,这样,岂不是又限制了计算速度?
存疑。