一种基于光电计算阵列的矩阵向量乘法器的运算优化方法与流程

文档序号:18740650发布日期:2019-09-21 01:44阅读:274来源:国知局
一种基于光电计算阵列的矩阵向量乘法器的运算优化方法与流程

本发明涉及一种基于光电计算阵列的矩阵向量乘法器运算优化方法,属于计算领域和光电探测领域。



背景技术:

传统的计算机大多采取冯诺依曼架构,然而,因为冯诺依曼架构存储单元和运算单元的分立,导致了在数据传输上产生了极大的能量消耗,并且影响运算速度。光电计算单元为一种可以独立运算或者与目前电子计算技术相结合来进行运算的计算器件,其特点为:单器件即可实现“存-算一体功能”、集成度好、能效比高、兼容性强,因此非常适合加速以神经网络算法、CT算法为代表的一系列需要大量运算矩阵向量乘法的算法。

矩阵向量乘运算如果在采用冯诺依曼架构的硬件上运行,比如CPU、GPU、FPGA,则需要大量的数据传输过程,对于规模很大的矩阵,计算速度比数据传输的速度要快得多,优化计算速度不能够加快整个系统的速度。如果矩阵向量乘运算在非冯架构上运行,比如忆阻器阵列RRAM,虽然解决了之前的问题,但是生产工艺良率低,阵列的规模较小。

此外,在矩阵向量乘运算中,对于矩阵系数为负数的情况,以忆阻器阵列为例,通常的处理办法是采用正负矩阵的方法,将原有的系数矩阵拆分为正矩阵和负矩阵,分别进行矩阵向量乘运算,再将两个结果向量相减,但这样所消耗的运算阵列就是原本的2倍。



技术实现要素:

为了克服以上现有技术中存在的缺陷,本发明提供一种基于光电计算阵列的矩阵向量乘法器的运算优化方法。

本发明采用的技术方案如下:

一种基于光电计算阵列的矩阵向量乘法器的运算优化方法,其特征在于,光电计算阵列由多个光电计算单元周期性排列组成,每个光电计算单元包括发光单元和计算单元,发光单元发出的光入射到计算单元中;每个计算单元包括载流子控制区、耦合区、以及光生载流子收集区和读出区;所述运算优化方法的具体步骤如下:

(1)将光电计算单元排列成m行和n+1列的阵列,其中,m为待乘矩阵的行数,n为待乘矩阵的列数;阵列中,每一列计算单元的光生载流子收集区和读出区中的读出区依次相连,每一行计算单元的载流子控制区依次相连;

(2)采用零点列法对所述待乘矩阵进行修正:对于所述待乘矩阵中的负数矩阵,首先给矩阵中的每一个数都加上一个零点值,使得矩阵中不再含有负数;然后在矩阵中再添加一列为第一列,并且此列的每一个值均为零点值,得到修正后的矩阵,其中零点值为某一固定位宽下的数据下限的绝对值;

(3)所述发光单元发出被设置为修正后的矩阵中数据的光信号,并入射到对应的计算单元的光生载流子收集区和读出区,为矩阵向量乘法器的矩阵数据输入端;每一行计算单元的载流子控制区输入被设置为代表向量中各个元素的载流子,为矩阵向量乘法器的向量数据输入端;其中,所述向量中各个元素的数据被转化为二进制后,按照比特位串行地将代表二值化后数据的载流子输入到各个行的载流子控制区中;

(4)计算单元的光生载流子收集区和读出区中的读出区输出端输出受矩阵数据和向量数据共同作用后的载流子,并在固定电压的驱动下以电流的形式输出,电流信号按列汇聚后经过AD转换,按输入的比特位进行移位操作然后累加,得到中间结果向量;

(5)对于得到的中间结果向量,用数字减法器将从第二列开始的每一列结果均减去第一列的结果,即得到最终结果向量。

进一步地,所述光电计算单元的数量大于等于六个。

进一步地,由多个所述光电计算阵列组成并行矩阵向量乘法器,所述光电计算阵列的个数和向量中元素的位宽相等。

进一步地,所述步骤(4)中,每一列计算单元输出的电流信号分别输入到一个模数转换器中,或者多列计算单元输出的电流信号共同输入到一个模数转换器。

本发明基于光电计算阵列提出了一种零点列法的矩阵向量乘法器运算优化方法,即对于负数矩阵权值的计算,通过添加零点列的方式,避免了负数矩阵的使用,从而在完成原有计算任务的基础下,可以减少一半的光电计算阵列,即节省一半的面积和功耗。

附图说明

图1是计算单元的多功能区框图。

图2是光电计算阵列的结构示意图,其中:1-发光阵列,2-计算阵列。

图3是实施例1计算单元结构的(a)截面图和(b)立体图。

图4是实施例2计算单元结构的(a)截面图和(b)立体图。

图5是实施例3计算单元的(a)结构示意图和(b)多功能区示意图。

图6是零点列串行矩阵向量乘法器的框图。

图7是零点列法处理中间结果向量的计算示意图。

图8是零点列并行矩阵向量乘法器的计算示意图。

图9是零点列并行矩阵向量乘法器的框图。

具体实施方式

本发明光电计算单元中的计算单元为包括三大功能区的多功能区结构,如图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的计算单元组成零点列串行矩阵向量乘法器,来实现维度符合矩阵向量乘法规则的一个矩阵和一个向量的乘法运算。

以计算向量A和矩阵W的乘法运算A*W为例,其中A为1*n向量,W为n*m矩阵,如式(1),计算示意图如图6所示,图中标有V字符的方框单元即代表采用第一种实施方案的计算单元,其中向量A中的元素通过电输入端输入,矩阵Wc中的元素通过光输入端输入,Wc为W经过式(2)修正过矩阵,经过修正后的矩阵元素中没有负值,Oc为向量A与修正过的矩阵Wc进行矩阵向量乘的结果向量,长度为m+1。

l取决于矩阵W中每个元素的位宽,即:

-2l-1≤Wi,j<2l-1 (3)

首先,采用串行的电输入方式,将A每一个的元素在控制系统中进行二进制转化:

k取决于向量A中单个元素的位宽。

将光电计算单元按照如图6所示的形式排列成阵列,其中阵列的行数为n,列数为m+1,并且将阵列的所有同一行的计算单元的作为载流子控制区的控制栅极都相连,输入同样的电输入数据;将阵列的所有同一列的计算单元的作为载流子收集和读出区的P型衬底的输出端都相连,使得输出的电流汇聚相加。

输入时,将矩阵中的n*(m+1)个数据,通过发光单元依次输入到n*(m+1)个计算单元中;将向量中的元素从同行单元相连的控制栅极上串行输入,同一元素不同比特位的二值数据分时依次输入,当控制栅上输入的是最低比特位的数据时,矩阵中的元素和向量中元素的最低比特位的二值数据进行对应位的相乘,即等于进行了运算(5):

电流汇聚前,n*(m+1)的计算单元阵列,每一个单元的计算结果分别为:

再经每一列的输出端都相连的输出电流电路,即等于进行了按列相加运算,结果(6)经汇聚相加后,最下方的矩阵向量乘法输出端输出为:

此结果即为式(5)的运算结果,完成了向量最低比特位和矩阵的矩阵向量乘法运算。

将计算结果(7)经过AD转换后输入控制系统,因为其为最低比特位故而左移0位,再将向量的次低比特位作为电输入端数据输入控制栅极,得到向量次高比特位和矩阵的矩阵向量乘法结果,输入控制系统后左移1位,并与之前向量最低比特位和矩阵乘法结果进行向量加法,以此类推,串行输入完向量的所有比特位二值数据,在控制系统中依次移位和累加后,即得到中间的矩阵向量运算结果,等同于进行了如下运算:

之后在控制系统中,如图7所示,将所得1*(m+1)中间矩阵向量运算结果中,除第一列外所有列的结果减去第一列的结果,得到最终的1*m矩阵向量运算结果,即:

控制系统可以采用数字电路,也可以采用计算机、单片机、FPGA等多种逻辑控制单元。

实施例5

本实施例使用多个发光单元和实施例1的计算单元组成零点列并行矩阵向量乘法器,来实现维度符合矩阵向量乘法规则的一个矩阵和一个向量的乘法运算。本实施例和实施例4的零点列串行矩阵向量乘法器的区别在于使用更多的计算单元和发光单元组成阵列,通过并行输入的方式输入向量中元素的二值化数据,运算速度更高,但是需要更多的光电计算单元。

以计算向量A和矩阵W的乘法运算A*W为例,其中A为1*n向量,W为n*m矩阵,如式(1),计算示意图如图6所示,图中标有V字符的方框单元即代表采用第一种实施方案的计算单元,其中向量A中的元素通过电输入端输入,矩阵Wc中的元素通过光输入端输入,Wc为W经过式(2)修正过矩阵,经过修正后的矩阵元素中没有负值。

首先,采用并行的电输入方式,利用公式(4)将向量A每一个的元素在控制系统中进行二进制转化。将k*n*(m+1)个光电计算单元分成k组,每组的计算单元有n*(m+1)个,将每一组的单元排列成和实施例4的串行矩阵向量乘法器阵列相同的阵列,即按照图6所示的形式排列成阵列,总共k个上述阵列,每个阵列的行数为n,列数为m,并且将所有组的所有阵列的所有同一行的计算单元的作为载流子控制区的控制栅极都相连,输入同样的电输入数据;将所有组的所有阵列的所有同一列的计算单元的作为载流子收集和读出区的P型衬底的输出端都相连,使得输出的电流汇聚相加。

输入时,将矩阵中的n*(m+1)个数据,通过光输入端依次输入到每一组的n*(m+1)个计算单元中,所有组的阵列输入相同的光输入端数据;将向量中的元素从同行单元相连的控制栅极上并行输入。向量中各元素的第1比特位,即[A11A21…An1]。将上述二值矩阵的每一个元素分别输入第1组阵列的各行的控制栅上,同样,后续第i比特位,输入到第i组阵列的控制栅上,将二值化后的向量数据一一并行输入到k组阵列的全部控制栅上。对于第1组阵列,矩阵中的元素和向量中元素的第1比特位的二值数据进行对应位的相乘,即等于进行了公式(5)的运算。电流汇聚前,第1组n*(m+1)的计算单元阵列每一个单元的计算结果分别为公式(6),再经每一列的输出端都相连的输出电流电路,即等于进行了按列相加运算,结果公式(6)经汇聚相加后,最下方的第1组阵列输出端输出为公式(7),此结果即为式(5)的运算结果,完成了向量第1比特位和矩阵的矩阵向量乘法运算。

和上述第1组阵列的计算过程相似,其他第2到第k组阵列分别从每一行的控制栅上输入向量第2比特位到第k比特位的二值化数据,分别输出相应的矩阵向量乘法结果后从输出端输出,再将k组的计算结果经过AD转换后输入控制系统,第i组阵列的结果向量所有元素左移i-1位,然后在控制系统中将完成移位后的所有组的输出结果按照向量加法的规则累加,即得到中间的矩阵向量运算结果,等同于进行了公式(8)的运算。

之后在控制系统中,如图7所示,将所得1*(m+1)中间矩阵向量运算结果中,除第一列外所有列的结果减去第一列的结果,得到最终的1*m矩阵向量运算结果,即公式(9)。运算的过程,如图8所示,其中图中的每一个中间写有“零点列串行矩阵向量乘法器”的方框即代表一个n*(m+1)的单元阵列,装置的示意图,大致如图9所示。

控制系统可以采用数字电路,也可以采用计算机、单片机、FPGA等多种逻辑控制单元。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1