计算单元间数据共享的电路结构和计算方法
1.本发明属于集成电路领域,更具体地,涉及集成电路计算芯片的体系架构和工作方式。
背景技术:
2.随着物联网与云计算的发展,计算任务的复杂性与日俱增,给计算芯片带来更大的压力。其中,计算芯片的主要性能指标可以分为功耗和算力指标。无论是在物联网等供能受限的场景还是云计算等消耗大量能量的场景中,功耗指标都是十分关键的。因此,如何在提供给定算力的前提下,进一步降低芯片功耗,是计算芯片的重要研究方向。
3.计算芯片的功耗主要来自两部分操作,一是数据读写,二是数据计算。对于特定计算,如深度神经网络中涉及的推理和训练计算,会出现大量的数据读写操作。数据读写的目标存储器可以分为片上存储和片外存储。由于片上存储广泛采用静态随机存储器(sram),其密度较低,因此其存储容量往往较小。当遇到大量数据读写操作时,就需要对片外存储进行访问。考察数据读写操作,对互连线周围寄生电容的充放电是其主要能耗来源。而片外存储通过较大间距的互连线和引脚进行数据访问,会产生相比片上存储大得多的能耗。针对这一现象,将数据尽可能地部署在片上存储中,并进一步降低对片上存储的数据访问是优化计算芯片能效的重要策略。
4.存算一体化架构就是其中的一个具体实现。这一架构通过构造基于忆阻器的高密度计算单元,可以将计算数据部分固化在计算单元内,从而减少了对于数据的访问操作。同时,由于采用模拟计算的方式,它对于存储数据有一定的鲁棒性,因而可以实现更大规模的片上存储。一种典型的计算方式是,在电导值为矩阵g的忆阻器阵列一侧通过数字-模拟转换器(dac)输入电压向量v,通过测量正交的另一侧的输出电流向量i,既可以实现i=gv的矩阵-向量乘法计算。其中,在神经网络推理的计算场景中,g对应网络权重,更新较少,v对应数据的特征图,更新较多。由于dac本身需要进行数据写入,对于dac的频繁更新占据了相当比重的能量消耗。同时,如果采用串行控制模式,依次更新阵列上数百个dac也会消耗大量的计算时间。因此,减少dac的数据更新将对提升计算系统能效产生较大帮助。
技术实现要素:
5.本发明的目的在于针对当前计算系统中数据复用困难的问题,提出一种能够实现计算单元间数据共享的电路结构,一种使用这一结构优化多个计算单元间计算性能和能效的工作方式以及一种基于上述多个计算单元间组合的可拓展计算系统。
6.本发明的目的是通过以下技术方案实现的:
7.第一方面,提供一种计算单元间数据共享的电路结构,所述电路结构具有数据端口;
8.所述数据端口能够实现向多个计算单元同时提供数据,且多个计算单元能够同时对该数据进行访问并执行计算;
9.所述数据端口能够独立配置,即各数据端口能够以不同的方式与计算单元连接;
10.所述连接关系与一个输入数据存在复用的计算操作相对应;
11.所述电路能够在一个时钟周期内覆盖多次所述计算操作中的部分或全部计算。
12.进一步地,所述数据端口以连线的方式向所述计算单元提供数据,所述计算单元以连线的方式进行所述数据的接收并不进行缓存或者寄存。
13.进一步地,所述数据端口是数字-模拟转换器,所述数据是模拟信号,所述数字-模拟转换器的模拟信号输出形式为时间、电荷、电流或者电压。
14.进一步地,所述计算单元以模拟形式输出计算结果信号,并且多个计算单元输出的计算结果信号之间在进行叠加后进一步输出。
15.进一步地,所述计算单元采用模拟计算的方式实现计算过程,所述输出计算结果信号由模拟电路给出;所述数据端口的输出形式是电压,所述模拟计算采用忆阻器实现,所述输出计算结果信号的形式是电流。
16.第二方面,提供一种使用第一方面所述电路结构以优化多个计算单元间计算性能和能效的工作方式,所述工作方式包括:
17.对于固定的一个计算过程,表述如下:
18.y=g(f1(a1,b1),f2(a2,b2),
…
,fi(ai,bi),
…
,fn(an,bn))
19.其中,n是参与计算的计算单元个数,{a1,a2,
…
,an}是输入数据集合,{b1,b2,
…
,bn}是权重数据集合,ai是计算单元i的输入数据,bi是存储在计算单元i中的权重数据;fi是计算单元i实现的计算过程,g是多个所述计算单元输出结果间的计算过程;
20.定义利用n个输入数据ai所能构造的所有并集中,满足没有相同元素这一条件的最大集合为无重合并集c,无重合并集c的长度记为nc;
21.对于上述计算过程,以如下方式将其映射到所述电路结构上:
22.将c对应到nc个数据端口上;
23.将a1所对应的数据端口提供给第一个计算单元,也即含有权重数据b1的计算单元;
24.将a2所对应的数据端口提供给第二个计算单元,也即含有权重数据b2的计算单元;
25.如此类推,将a1,a2,
…
,an提供给n个计算单元;
26.利用n个计算单元的输出结果实现计算g,并将结果y输出。
27.进一步地,所述计算过程fi是卷积操作,所述计算过程g是逐点加法,所述c是输入特征图,所述bi是卷积核,所述y是输入特征图c和n个卷积核bi之间的卷积计算结果。
28.进一步地,所述电路结构一次进行三个连续的卷积操作,每个数据端口与三个计算单元相连并在这三个计算单元间进行数据共享。
29.进一步地,所述电路结构的连接关系存在两种以上的配置;所述工作方式中,计算时周期性地使用上述连接配置,以将部分数据端口在不进行数据刷新的情况下连接到需要该数据的不同的计算单元。
30.第三方面,提供一种基于第一方面所述电路结构的可拓展计算系统,该系统采用多个所述电路结构;
31.多个所述电路结构间能够进行数据交换;
32.多个所述电路结构的所述数据端口能够独立配置。
33.本发明的有益效果是:通过本发明可以实现计算过程中数据的复用和共享,降低
对于数据反复且重复的读写操作,从而提升计算系统能效。
34.本领域的技术人员在阅读以下具体实施方式并看到附图时将会认识到附加的特征和和优势。
附图说明
35.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
36.图1示出了一种能够实现2个3*2阵列间计算单元数据共享的电路;
37.图2示出了一种能够实现2个3*2阵列间计算单元数据共享的电路;
38.图3示出了一种能够实现2个3*2阵列间计算单元数据共享的电路;
39.图4示出了一种能够实现2个3*2阵列间计算单元数据共享的电路;
40.图5示出了一种基于忆阻器阵列的计算模式;
41.图6示出了一种2*2的计算阵列及其计算电路;
42.图7示出了卷积神经网络的输入特征图和卷积核;
43.图8示出了卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
44.图9示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
45.图10示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
46.图11示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
47.图12示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
48.图13示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的输入特征图其中三行和一个卷积核之间的计算过程;
49.图14示出了卷积神经网络的同一深度的输入特征图其中三行和三个卷积核之间的计算过程;
50.图15示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,具体地,卷积神经网络的同一深度的输入特征图其中三行和三个卷积核之间的计算过程;图16示出了卷积神经网络的不同深度的输入特征图中三行和9个卷积核之间的计算过程;
51.图17示出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能
和能效的工作方式,具体地,卷积神经网络的不同深度的输入特征图其中三行和9个卷积核之间的计算过程;
52.图18示出了一种不同列间加和的电路结构和工作方式;
53.图19示出了一种基于上述多个计算单元间组合的3*3可拓展计算系统;
54.图20示出了一种基于上述多个计算单元间组合的3*3可拓展计算系统。
具体实施方式
55.在下面的具体实施方式中,参考形成本发明的一部分的附图,其中通过图解的方式示出可实施本发明的具体实施方式。应理解,在不脱离本发明的范围的情况下,可利用其它实施方式且可进行结构或逻辑的改变。例如,对于一个实施方式而示出或描述的特征可用于或结合其它实施方式以产生又一实施方式。其目的在于本发明包括这些修改和变化。使用特定的语言(其不应被解释为限制所附权利要求书的范围)描述实施方式。附图未按比例绘制且仅供说明之用。
56.本发明要求实际解决的技术问题在于:如何减少某一计算过程中的数据的读写操作次数。针对这一问题,本发明通过对计算过程进行分解,分析其公用数据,创造性地提出了将同一数据端口传递给多个计算单元的计算方式。
57.为实现这一方式,本发明需要进一步解决的问题是:如何通过电路结构实现多个计算单元对同一数据端口的共享。针对这一问题,本发明通过创造性地构建和计算模式相匹配的信号连线结构,实现指定模式的数据传输。
58.参考图1所示,本技术实施例一提出了一种能够实现2个3*2阵列间计算单元数据共享的电路,包括:
59.数字信号输入端口,101,102,103;
60.阵列排布的计算单元,例如111,112,113等;
61.路由模块,104,105;
62.在路由模块的分配下,将数字信号输入端口与计算单元进行连接的第一类信号线,11a,11b,以及11c;
63.将不同计算单元进行连接的第二类信号线,例如119;
64.通过第二类信号线的连接接收计算单元输出数据的数字信号输出端口,例如117,118等;
65.具体地,数据在阵列110和阵列120间共享。
66.参考图2所示,本技术实施例二提出了一种能够实现2个3*2阵列间计算单元数据共享的电路,包括:
67.数字-模拟转换器输入端口,201,202,203;
68.阵列排布的计算单元,例如211,212,213等;
69.路由模块,204,205;
70.在路由模块的分配下,将数字-模拟转换器输入端口与计算单元进行连接的第一类信号线,21a,21b,以及21c;
71.将不同计算单元进行连接的第二类信号线,例如219;
72.通过第二类信号线的连接接收计算单元输出数据的模拟-数字转换器输出端口,
例如217,218等;
73.具体地,数据在阵列210和阵列220间共享。
74.参考图3所示,本技术实施例三提出了一种能够实现2个3*2阵列间计算单元数据共享的电路,包括:
75.数字-模拟转换器输入端口,301,302,303;
76.阵列排布的计算单元,例如311,312,313等;
77.根据预定的电路设计,将数字-模拟转换器输入端口与阵列310中计算单元进行连接的第一类信号线,31a,31b,以及31c;
78.根据预定的电路设计,将数字-模拟转换器输入端口与阵列320中计算单元进行连接的第一类信号线,32a,32b,以及32c;
79.将不同计算单元进行连接的第二类信号线,例如319;
80.通过第二类信号线的连接接收计算单元输出数据的模拟-数字转换器输出端口,例如317,318等;
81.具体地,数据在阵列310和阵列320间共享。
82.参考图4所示,本技术实施例四提出了一种能够实现2个3*2阵列间计算单元数据共享的电路,包括:
83.数字-模拟转换器输入端口,401,402,403;
84.阵列排布的计算单元,例如411,412,413等;
85.控制数字-模拟转换器输入端口是否和某一阵列中所对应计算单元连接的选通单元,例如404,405,以及407等;
86.对选通单元进行控制的第一类信号线,例如41d等;
87.根据选通单元的控制,将数字-模拟转换器输入端口与阵列410中计算单元进行连接的第二类信号线,例如41a,41b,41c等;
88.将不同计算单元进行连接的第三类信号线,例如419;
89.通过第三类信号线的连接接收计算单元输出数据的模拟-数字转换器输出端口,例如417,418等;
90.具体地,数据在阵列410和阵列420间共享。
91.在上述实施例中,计算单元可以是如图5、6所示的忆阻器。如图5所示,忆阻器阵列通过电阻特性(欧姆定律)实现乘法,通过电流连续性实现加法。如图6所示,对于一个2*2的忆阻器阵列,在计算过程中,通过运放617,618将信号线61a,61b的电压固定在0v,并通过电阻的反馈回路进行电压采样。
92.参考图7-18所示,本技术实施例五提出了一种使用本技术所提出的电路结构,以优化多个计算单元间计算性能和能效的工作方式,工作方式包括:
93.如图7所示,在卷积神经网络中,输入特征图710宽度为w,高度为h,深度为d,卷积核720宽度为k,高度为k,深度为m。卷积核(变量filter)对输入特征图(变量input)的卷积操作并得到输出特征图(变量output)的过程可以表示为如下所示多重循环:
[0094][0095][0096]
对于图7中输入特征图数据的其中三行711,以及卷积核中其中一层数据721,其对应操作如图8所示。其中,数字表示输入特征图数据,字母表示卷积核数据。此外,如标准卷积定义,数据重合的部分表示相对应相乘,乘积完成后所有数据需要进行相加。在第一个时钟周期,对应关系如810所示;在第二个时钟周期,对应关系如820所示;以此类推,810~890示出了所有计算过程。
[0097]
如图9所示,考察输入特征图数据910和卷积核数据920。电路结构930表示了一种计算单元间数据共享方式。其中,输入数据端口932被三个计算阵列931,933,934共享。具体共享方式由箭头表示,其物理对应是集成电路中的互连线。比如,输入7被931中存储a的计算单元,933中存储g的计算单元,以及934中存储d的计算单元共享。其基本原理在于,如图8所示,计算周期810,820,830均使用了数据7,其中,在计算周期810,数据7与数据g相乘,在计算周期820,数据7与数据d相乘,在计算周期830,数据7与数据a相乘。由于数据7被使用了三次,所以可以通过同时向3个计算单元共享数据,而不是分别读取数据7三次,来实现效率的提升。
[0098]
在一些实施例中,如图10所示,可以通过计算阵列位置的变化简化互连线的走线。
[0099]
进一步地,如图11所示,一个完整的输入数据1100和卷积核1110的卷积过程中,对于给定的互连线关系和计算单元中数据,通过更新输入数据端口状态可以实现计算过程。计算周期1120中,在输入数据端口状态1121下,实现了计算周期810,820,830的计算操作;计算周期1130中,在输入数据端口状态1131下,实现了计算周期840,850,860的计算操作;计算周期1140中,在输入数据端口状态1141下,实现了计算周期870,880,890的计算操作。可以看到,输入数据端口共进行了15*3,即45次刷新。而对于传统的计算方式,需要为每次计算进行数据刷新,也即需要9*9,即81次刷新。
[0100]
在一些实施例中,如图12所示,可以通过互连线的走线的变化使得计算单元中具有一致的数据存储。
[0101]
进一步地,如图13所示,可以通过定义两种数据共享的互连线走线,达到进一步降
低数据载入刷新次数的目的。具体地,在计算周期1320中,共进行了15次数据导入;在计算周期1330中,通过切换数据共享的互连线走线结构,可以复用数据10~15,进而只进行9次数据端口刷新;在计算周期1340中,通过切换数据共享的互连线走线结构,可以复用数据19~24,进而只进行9次数据端口刷新。综上,共进行33次数据端口刷新,相比上述的45次得到了进一步降低。此外,计算周期1320和1340使用了相同的数据共享的互连线走线结构。这说明这一方式对应周期性的互连线走线结构切换,也即对应更大的输入特征图维度,随着计算不断进行,只需要上述两种互连线走线结构就可以获得上述优势。
[0102]
如图14所示,对于同一深度的输入特征图数据1412(1412,1422,1432完全相同),其需要分别和对应的多个卷积核1411,1421,1431进行卷积计算。
[0103]
如图15所示,这一过程可以通过将卷积核数据构造在同一计算阵列中实现。在同一计算阵列1540中,同一行的计算单元通过该行的源线进行天然的数据共享。比如,和位线1541相连的a1,和位线1542相连的a2,以及和位线1543相连的a3,可以通过同一行的源线1531对数据端口1530中的数据1进行共享。
[0104]
如图16所示,对于不同深度的输入特征图数据1612(1612,1622,1632不相同),每一深度的输入特征图数据均需要和对应的多个卷积核进行卷积计算。如上述伪代码所表示的,不同深度的输出数据需要进一步加和。具体地,对于输入维度为3,输出维度为3的神经网络卷积层,是3个输入特征图和9个卷积核计算,并输出3个特征图到下一层网络。
[0105]
如图17所示,这一过程可以通过将卷积核数据构造在同一计算阵列中实现,并进一步将输入数据端口1731,1732,1733堆叠实现。
[0106]
在一些实施例中,同一深度的输入特征图在和不同的卷积核卷积并需要将结果相加时,可以通过如图18所示的方式实现。具体地,可以在1842的结构下,逐列计算后再相加,也可以在1852的结构下,通过构造相连的位线,直接进行模拟相加后再进行采样输出。
[0107]
参考图19所示,本技术实施例六提出了一种基于上述多个计算单元间组合的3*3可拓展计算系统,包括:
[0108]
控制和输入数据缓存1941;
[0109]
控制和输出数据缓存1942;
[0110]
控制和输入数据缓存1941与控制和输出数据缓存1942间通信信号线1943;
[0111]
共享数据端口的多个计算单元1911~1919;
[0112]
共享数据端口的多个计算单元1911~1919间总线1921,1922,1931和1932;
[0113]
通过在二维或者三维方向进一步增加计算阵列的数目,可以实现该系统的扩展。
[0114]
在一些实例中,如图20所示,可以通过在总线2021,2022,2031,2032间使用路由进行信号索引,从而实现更丰富的控制逻辑和数据交互。此外,2041可以同时实现输入和输出。
[0115]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0116]
以上所述仅是本发明的优选实施方式,虽然本发明已以较佳实施例披露如上,然而并非用以限定本发明。任何熟悉本领域的技术人员,在不脱离本发明技术方案范围情况
下,都可利用上述揭示的方法和技术内容对本发明技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。