发明内容
本发明的目的在于克服传统器件卷积计算能力的不足,提供一种高计算力、高计算能效的基于光电计算阵列的卷积运算加速器。本发明的另外一个目的是提供该卷积运算加速器的运算方法。
本发明装置采用的技术方案如下:
一种基于光电计算阵列的卷积运算加速器,包括:数据存储模块,用于数据的读写和传输;数据分发模块,用于将从数据存储模块中读取的权重矩阵展开成列向量的形式并组成新的权重矩阵传输给光电计算阵列,以及用于将从数据存储模块中读取的激活值数据拆分成单比特的形式并传输给光电计算阵列;光电计算阵列,用于对输入数据进行乘法运算;A/D转换模块,用于将光电计算阵列的计算结果由模拟信号转化为数字信号;累加器模块,用于对经A/D转换后的计算结果进行移位累加,并最终输出计算结果。
进一步地,所述光电计算阵列由多个光电计算单元周期性排列组成,每个光电计算单元包括发光单元和计算单元,发光单元发出的光入射到计算单元中;每个计算单元包括载流子控制区、耦合区、以及光生载流子收集区和读出区;所述载流子控制区用于控制并调制光生载流子收集区和读出区内的载流子;所述光生载流子收集区和读出区中的收集区用于吸收发光单元发射的光子并收集产生的光生载流子;所述载流子控制区或者光生载流子收集区和读出区中的读出区与电信号连接,读出区用于输出被所述光生载流子和所述电信号作用后的载流子;所述耦合区连接收集区和读出区。
本发明一种基于光电计算阵列的卷积运算加速器的运算方法,包括如下步骤:
所述数据分发模块一方面从数据存储模块中读取至少两个权重矩阵,并将每一个权重矩阵都展开成列向量的形式,然后将展开的权重列向量组成新的权重矩阵发送给光电计算阵列;另一方面将从数据存储模块中读取的每一个激活值数据按二进制拆分成单比特的形式,然后将拆分后的多个单比特数据依次发送给光电计算阵列;
所述光电计算阵列接收数据分发模块传递的权重矩阵后,先将权重矩阵存储在光电计算阵列中,然后在收到数据分发模块发送的单比特数据后,对单个激活值和权重矩阵直接进行乘法运算;接着将乘法运算结果转化为数字信号后输入所述累加器模块中进行移位累加;最后输出计算结果。
本发明采用光电计算单元取代传统硬件的乘法计算单元,在相同芯片面积的条件下,本发明光电计算阵列可以集成更丰富的光电计算单元,拥有更为强大的计算力。因此,本发明的卷积运算加速器拥有巨大的计算能效,在相同操作数的情况下,比传统计算器件更为节省功耗。
具体实施方式
本发明光电计算单元中的计算单元为包括三大功能区的多功能区结构,如图1所示,三大功能区为:载流子控制区、耦合区、光生载流子收集区和读出区,具体功能分别如下:
载流子控制区:负责控制并调制光电计算单元内的载流子,并且作为计算单元的电输入端口,输入其中一个运算量作为电输入量;或者只控制并调制计算单元内的载流子,通过其他区域输入电输入量。
耦合区:负责连接光生载流子收集区和读出区,使得光子入射产生的光生载流子作用于光电计算单元内的载流子,形成运算关系。
光生载流子收集区和读出区:其中收集区负责吸收入射的光子并收集产生的光生载流子,并且作为计算单元的光输入端口,输入其中一个运算量作为光输入量;读出区可以作为计算单元的电输入端口,输入其中一个运算量作为电输入量,并且作为计算单元的输出端口,输出被光输入量和电输入量作用后的载流子作为单元输出量;或者通过其他区域输入电输入量,读出区只作为计算单元的输出端口,输出被光输入量和电输入量作用后的载流子,作为单元输出量。
发光单元发出的光作为入射计算单元光生载流子收集和读出区的光子,参与运算。光电计算阵列包括发光阵列1和计算阵列2,结构如图2所示。发光阵列1由多个发光单元周期性排列组成,计算阵列2由多个计算单元周期性排列组成。
实施例1
如图3所示,本实施例的计算单元包括:作为载流子控制区的控制栅极、作为耦合区的电荷耦合层,以及作为光生载流子收集区和读出区的P型衬底,P型衬底中分为左侧收集区和右侧读出区,其中右侧读出区中包括浅槽隔离、通过离子注入形成的N型源端和N型漏端。浅槽隔离位于半导体衬底中部、收集区和读出区的中间,浅槽隔离通过刻蚀并填充入二氧化硅来形成,以用于隔离收集区和读出区的电信号。N型源端位于读出区内靠近底层介质层的一侧,通过离子注入法掺杂而形成。N型漏端位于半导体衬底中靠近底层介质层与N型源端相对的另一侧,同样通过离子注入法进行掺杂法形成。应理解,本文中提及的左侧、右侧、上方以及下方只代表在通过图中所示视角观察下的相对位置随观察视角变化而变化,并不理解为对具体结构的限制。
在收集区的衬底上施加一个电压范围为负压的脉冲,或在控制栅上施加一个电压范围为正压的脉冲,使得收集区衬底中产生用于光电子收集的耗尽层,并通过右侧读出区读出收集的光电子数量,作为光输入端的输入量。读出时,在控制栅极上施加一正电压,使N型源端和收集区N型漏端间形成导电沟道,再通过在N型源端和N型漏端间施加一个偏置脉冲电压,使得导电沟道内的电子加速形成源漏之间的电流。源漏之间沟道内形成电流的载流子,受到控制栅电压、源漏间电压和收集区收集的光电子数量共同作用,作为被光输入量和电输入量共同作用后的电子,以电流的形式进行输出,其中控制栅电压、源漏间电压可以作为器件的电输入量,光电子数量则为器件的光输入量。
耦合区的电荷耦合层用于连接收集区和读出区,使收集区衬底内耗尽区开始收集光电子以后,收集区衬底表面势就会受到收集的光电子数量影响;通过电荷耦合层的连接,使得读出区半导体衬底表面势受到收集区半导体衬底表面势影响,进而影响读出区源漏间电流大小,从而通过判断读出区源漏间电流来读出收集区收集的光电子数量;
载流子控制区的控制栅,用以在其上施加一个脉冲电压,使得在P型半导体衬底读出区中产生用于激发光电子的耗尽区,同时也可以作为电输入端,输入其中一位运算量。
此外,P型半导体衬底和电荷耦合层之间存在用于隔离的底层介质层;电荷耦合层和控制栅之间亦存在用于隔离的顶层介质层。
实施例2
如图4所示,本实施例的计算单元包括:作为载流子控制区的控制栅极、作为耦合区的电荷耦合层,以及作为光生载流子收集区和读出区的P型半导体衬底,其中P型衬底中包含通过离子注入形成的N型源端和漏端。P型半导体衬底可以同时承担感光和读出的工作。N型源端位于读出区内靠近底层介质层的一侧,通过离子注入法掺杂而形成。N型漏端位于半导体衬底中靠近底层介质层与所述N型源端相对的另一侧,同样通过离子注入法进行掺杂法形成。
感光时,在P型半导体衬底上施加一个电压范围为负压的脉冲,同时在作为载流子控制区的控制栅极上施加一个电压范围为正压的脉冲,使得P型衬底中产生用于光电子收集的耗尽层,产生在耗尽区内的电子在控制栅极和P型衬底两端之间的电场作用下被加速,并在到达获得足够高的能量,穿过P型衬底和电荷耦合层之间的底层介质层势垒,进入电荷耦合层并储存于此,电荷耦合层中的电荷数量,会影响器件开启时的阈值,进而影响读出时的源漏间电流大小;读出时,在控制栅极上施加一脉冲电压,使N型源端和N型漏端间形成导电沟道,再通过在N型源端和N型漏端间施加一个脉冲电压,使得导电沟道内的电子加速形成源漏之间的电流。源漏之间的电流受到控制栅脉冲电压、源漏间电压和电荷耦合层中存储的电子数量共同作用,作为被光输入量和电输入量共同作用后的电子,以电流的形式进行输出,其中控制栅电压、源漏间电压可以作为器件的电输入量,电荷耦合层中存储的光电子数量则为器件的光输入量。
耦合区的电荷耦合层用于储存进入其中的光电子,并改变读出时器件阈值大小,进而影响读出区源漏间电流,从而通过判断读出区源漏间电流来读出感光时产生并且进入电荷耦合层中的光电子数量。
载流子控制区的控制栅,用以在其上施加一个脉冲电压,使得在P型半导体衬底读出区中产生用于激发光电子的耗尽区,同时也可以作为电输入端,输入其中一位运算量。
此外,P型半导体衬底和电荷耦合层之间存在一层用于隔离的底层介质层;电荷耦合层和控制栅之间亦存在一层用于隔离的顶层介质层。
实施例3
如图5所示,本实施例的计算单元包括:作为光生载流子收集和读出区的光电二极管和读出管,其中,光电二极管通过离子掺杂形成,负责感光。光电二极管的N区通过作为耦合区的光电子耦合引线连接到读出管的控制栅和复位管的源端上,读出管的漏端施加一正电压脉冲,作为读出电流的驱动电压;曝光前,复位管打开,复位管漏端电压施加到光电二极管上,使作为收集区的光电二极管处于反偏状态,产生耗尽层;曝光时,复位管关断,光电二极管被电学上隔离,光子入射光电二极管耗尽区后产生光电子,并在二极管中积累,二极管的N区和在电学上通过作为耦合区的光电子耦合引线和N区连接的读出管控制栅电势开始下降,进而影响读出管沟道内的电子浓度。读出管负责读出,其漏端施加一正脉冲电压,源端和选址管漏端连接,读出时,打开选址管,读出管中产生电流电流,电流大小受到复位管漏端电压、读出管漏端电压和入射光子数共同影响,读出管沟道内的电子,作为被光输入量和电输入量共同作用后的电子,以电流的形式输出,其中复位管漏端电压、读出管漏端电压可以作为器件的电输入量,电入射光子数则为器件的光输入量。
耦合区的光电子耦合引线用于连接作为光生载流子收集和读出区中收集区的光电二极管和作为读出区的读出管,将光电二极管N区电势施加到读出管控制栅上。
作为载流子控制区的复位管,通过其漏端输入一个正电压作用于光电二极管,当复位管打开时,正电压即会作用在光电二极管上,使光电二极管产生耗尽区并感光,同时也可以作为电输入端,输入其中一位运算量。
此外,选址管用于控制整个运算器件作为输出量的输出电流的输出,可以在光电计算单元组成阵列时行列选址使用。
实施例4
本实施例使用多个发光单元和实施例1、2或3的计算单元结构组成光电计算阵列,来实现卷积的运算。
如图6所示,本实施例的基于光电计算阵列的卷积运算加速器包括数据存储模块、数据分发模块、光电计算阵列和A/D转换模块。权重矩阵和激活值数据均保存在数据存储模块,并输入给数据分发模块。权重矩阵在数据分发模块中调整顺序后输入给光电计算阵列,激活值数据在数据分发模块中进行单比特分离后发送给光电计算阵列。光电计算阵列计算出权重矩阵和激活值数据的乘法运算结果,结果数据在经过A/D转换后发送给累加器模块,累加器对A/D转换后的结果进行移位累加,输出计算结果。
如图7所示,光电计算阵列是执行O=A×W的矩阵向量乘操作,其中A=[A
1,A
2,…,A
N],A
1=(a1
7a1
6…a1
0)
2,A
2=(a2
7a2
6…a2
0)
2,…,A
n=(an
7an
6…an
0)
2,2表示每个操作数是用2进制表示,
当加速卷积运算时,首先从数据存储模块中取出m个权重矩阵
每一个权重矩阵按行展开为一个n列的权重列向量W
i=[W
1,W
2,…,W
n]
T,其中1≤i≤m,n=K×K。然后将m个n列权重列向量W
i组合成新的权重矩阵
将权重矩阵W发送给光电计算阵列,光电计算阵列会自动保存权重值。再从数据存储模块中,取出待计算数据块/>
并按行展开成向量A=[A
1,A
2,…,A
n],其中n=M×M。然后将向量A的每一个元素在数据分发模块中分离成8个单比特数据,其中A
1=(a1
7a1
6a1
5a1
4a1
3a1
2a1
1a1
0),……,A
n=(an
7an
6an
5an
4an
3an
2an
1an
0)。接着分8次(T
0,T
1,…,T
7),将n个单比特数据(a1
0,a2
0,…,an
0),(a1
1,a2
1,…,an
1),…,(a1
7,a2
7,…,an
7)发送给光电计算阵列和存在计算单元上的权重数据W进行计算。计算方式是:/>
图7中的ADC表示模拟/数字转换模块,“<<”表示向左移位。
计算后的结果数据首先经过A/D转换,将模拟信号转换为数字信号。转换后的数字信号发送到累加器模块。累加器是对A/D转换后的数据进行移位累加。具体移位方式是对于图7中a10,a20,…,an0和权重矩阵相乘的结果O10,O20,…,Om0向左移位0位,a11,a21,…,an1和权重矩阵相乘的结果O11,O21,…,Om1向左移位1位,然后和前面的计算结果累加,依次类推,直到最高位a17,a27,…,an7权重矩阵相乘的结果O17,O27,…,Om7向左移位7位后,和前面的计算结果累加后输出。