文献调研-存算一体的实现

接上一篇,找了两篇具体实现来了解架构。

Ref8:RRAM存算一体化乘法器的集成电路设计-安徽大学

基于表决器逻辑的运算方法(MIG,Majority-Inverter Graph)
原因:逻辑层面表决器逻辑证明比传统的与或非逻辑具有更快的速度和更小的功耗;痛死表决器逻辑与RRAM有更好的匹配性
目前研究的主流新型存储器有:铁电存储器、相变存储器、磁存储器和阻变存储器。
阻变存储器RRAM有点:结构简单、与CMOS工艺良好的兼容性、器件尺寸可缩小-》最可能替代FLASH存储器的新兴存储器之一。
RRAM是一个二端器件,MIM结构:上电极、下编辑、中间绝缘介质(电阻转变功能层),通过自身阻态的大小来判断存储的数据。
RRAM主流研究方向:存储器、逻辑运算、神经突触系统网络。但RRAM其间会随着时间的增加阻值发生变化,造成RRAM阵列阻值不均匀
1、RRAM存储单元结构
1R:无源,最简单面积最小,与CMOS工艺兼容但存在串扰现象
1D1R:无源串联、用于解决串扰 但D的存在使得单元只能单向导通
1T1R:有源NMOS+R 解决串扰但面积很大
2、MIG逻辑分析
多数表决即为通过。用于实现与 或逻辑,缺少非逻辑
3、基于RRAM的几种运算逻辑
IMP:蕴含逻辑
MAGIC:Memristor Aided Logic 实现与、或、非、与非、或非
MRL:Memristor Ratioed Logic
4、乘法器设计
乘法器:乘数与被乘数的中间乘积移位相加完成的->全加器+表决器
全加器:完成带有低金位数的两个二进制数相加并输出和数与高进位数组合逻辑
乘法器:通过移位和加法实现->华莱士树
5、表决器的硬件电路实现
数字控制模块:verilog+modelsim
模拟硬件模块:cadence IC51 包括:电源模块、阻变存储器阵列、BL开关阵列、SL开关阵列和灵敏放大器
数字模块:6个输入信号 两个乘数、clock,reset,start,Sa灵敏放大器
4个输出信号 Ctr地址信号(待译码),R-E,W-E+数据线
单个单元的write-verify->状态机设计全加器->基于全加器实现乘法器
写验证数字模块设计->1bit全加器->4bit乘法器
模拟模块:RRAM存储阵列、译码电路、BL/SL开关阵列、电源模块、RRAM读电路、
6、集成模块的物理设计-物理实现+测试电路的搭建

Ref9:面向大数据处理的应用性能优化方法研究-浙江大学

基于忆阻器的卷积神经网络加速方法
-设计专用模块对卷积神经网络计算所需要的操作进行支持(聚焦加速模块空间和时间利用率)

1、神经网络加速架构

二维阵列加速-脉动阵列,处理单元纵横分布、处理单元进行乘累加同时将数据传递给相邻的处理单元
乘加树结构-三级流水分别完成乘法、加法以及非线性运算,控制单元负责协调各个模块之间的协作
存算一体架构-数据处理在数据存储的本地进行,以消除数据移动带来的开销。关键:架构设计以及算法与架构的映射适配

2、忆阻器计算+存储的解读

忆阻器阵列具有融合计算和存储的特性,将一组输入作为电压加载在字线上,另一组输入作为电阻存储在忆阻器单元中,在位线上得到的电流即为两组输入的乘累加计算结果。该过程利用了忆阻器的电阻特性,根据基尔霍夫定律,当加载在字线上的电压通过电阻时,相当于与其电导相乘然后在在位线上进行累加,最终得到两组输入的乘累加结果。
因此忆阻器阵列可以方便的实现向量乘法乃至矩阵乘法运算,而无需额外的计算单元。
文献调研-存算一体的实现_第1张图片
忆阻器阵列和忆阻器阵列的计算形式

3、基于忆阻器的卷积神经网络加速

以忆阻器交叉阵列为基础的计算结构-PRIME,ISAAC,PipeLayer (2016-2017工作)
PRIME:修改阵列外围电路,支持计算和存储两种模式
ISAAC:流水线处理,每个神经网络层由特定的忆阻器阵列负责计算
PipeLayer:聚焦对CNN训练的支持,训练时部分忆阻器阵列负责前向计算,部分负责偏导数计算+基于经验利用权重复制缓解流水线气泡问题
本文聚焦CNN应用时(也就是前向推理时),设计了:
(1)全功能设计的计算阵列。每个计算阵列包含一系列功能模块,同时支持计算核存储模式的切换,只需将部分计算阵列切换为存储模式作为数据华黁,其余计算阵列用于CNN计算
(2)针对卷积核计算特性的混合映射和流水优化。利用卷积操作中卷积核、输入通道、输出数据之间的数据秉性关系,提高忆阻器单元利用率

4、存算一体加速模块设计

处理器负责流程控制和一些特殊层(如softmax层)的计算
存储模块由忆阻器构成,负责提供内存空间
整个加速系统无需额外的处理单元,二是将存储模块的一部分配置为加速模块。加速模块中存储了神经网络的权重数据,数据在加速模块中流动的同时即可完成相应的神经网络计算,从而消除了加速器与存储模块之间的数据移动,转而替代为存储模块内部的高效数据移动。
文献调研-存算一体的实现_第2张图片文献调研-存算一体的实现_第3张图片

加速模块结构-支持卷积、激活、池化、全连接
乘累加(包括卷积操作和全连接计算),由忆阻器阵列和相应的译码和输入输出模块共同组成;
加法树负责对多个计算范媛的计算结果进行叠加;
激活单元负责计算激活函数,输入的是加法树的输出;
池化缓冲用于临时保存需要进行池化操作的数据;
池化单元则负责池化计算

加速模块结构图
(1)MAC计算单元-负责输入和权重的乘累加,包括4part:输入、忆阻器阵列、地址译码电路、输出模块
由于忆阻器阻值只能表示数值为正的数据,而网络权重一般有正有负,因此一个计算单元中需要有两个忆阻器阵列分别存储正负权重;
地址译码电路包括字线译码电路和位线译码电路;输出负责将位线上的电流信号转换为输出数据,涉及魔术转换电路和减法电路
(2)加法树-二叉树将多个计算单元的计算结果进行累加,首先叠加两两相邻的计算单元的位线结果,然后依次对叠加结果进行了你按直至得到最终结果
(3)激活单元:常用ReLU可直接根据输入数据的符号位选择输出自身还是0,其他激活函数用查找表实现。
(4)池化单元+池化缓冲-完成最大池化,寄存器保存池化窗口内较大的输入值,数据采用行缓冲降低存储需求
(5)计算阵列模式切换-计算模式和存储模式-储存层间数据,此时加法树、激活单元、池化单元等电路结构被旁路,计算单元切换为读写单元,根据层间数据的存储需求进行配置

5、卷积神经网络映射

(1)权重映射:权重数据展开映射到忆阻器阵列中与同一条位线相连的忆阻器单元中,输入加载到忆阻器阵列的字线上,好处是输入数据可被卷积核共享达到数据复用;进一步将卷积核权重复制到空闲位线的忆阻器中,进一步并行处理多个输入图像块
(2)全连接映射:主要做矩阵向量乘积,因此按行划分每一行映射到同一条位线上的忆阻器,每一条位线的输出为最终输出相连的一个元素。由于FC一般权重矩阵规模大,实际需要映射到多个计算阵列中。 加偏置的操作:偏置数据映射到忆阻器阵列的最后一行,大小设为“1”
文献调研-存算一体的实现_第4张图片

6、实验设计及结果分析

8bit量化精度,探究面积、功耗、实验确定忆阻器阵列的大小、计算阵列中计算单元的数量以及计算单元的输出并行度、最终的加速性能评估。

计算阵列配置vs面积、功耗等、输出并行度、加速性能、功耗和能效

接下来会根据推荐的会议找一些In-storage computing的论文进行学习。(ISSCC、IEDM、Symposium on VLSI、JSSC、Flash Memory Summit)

你可能感兴趣的