計算單元間數據共享的電路結構和計算方法
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]
以上所述僅是本發明的優選實施方式,雖然本發明已以較佳實施例披露如上,然而并非用以限定本發明。任何熟悉本領域的技術人員,在不脫離本發明技術方案范圍情況
下,都可利用上述揭示的方法和技術內容對本發明技術方案做出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發明技術方案的內容,依據本發明的技術實質對以上實施例所做的任何的簡單修改、等同變化及修飾,均仍屬于本發明技術方案保護的范圍內。
