本公開涉及集成電路設(shè)計,尤其是一種雙端口存算一體單元電路、雙端口存算一體陣列電路、芯片及電子設(shè)備。
背景技術(shù):
1、存算一體,又稱存內(nèi)運算(computing-in-memory,cim),是指將計算與存儲結(jié)合,在存儲器內(nèi)部直接嵌入算法的技術(shù)。簡單說來,是將輸入神經(jīng)網(wǎng)絡(luò)中的數(shù)據(jù)與預(yù)先存儲在內(nèi)存單元中的權(quán)重參數(shù)進(jìn)行運算,實現(xiàn)了對輸入數(shù)據(jù)的帶權(quán)重累加,也就是卷積運算。卷積運算是深度學(xué)習(xí)算法的核心組成單元,占據(jù)了當(dāng)前大部分人工智能(artificialintelligent,ai)芯片中90%以上的運算。這就意味著,通過存算一體這種新型架構(gòu),可以將90%甚至更高占比的運算,由存儲器直接完成并輸出。
2、存算一體解決了存在已久的“存儲墻”和“功耗墻”的問題,徹底消除了訪存延遲,大大降低了數(shù)據(jù)搬運功耗,表現(xiàn)為超高的算力和能效比,是比馮諾依曼架構(gòu)更適合ai計算的架構(gòu)。
3、當(dāng)前常見的存算一體存儲器一般為單端口存算一體存儲器(single-portcomputing-in-memory,sp-cim),即提供一個端口對存儲器進(jìn)行訪問。該架構(gòu)提供一個時鐘、一組地址信號線。當(dāng)寫使能、計算禁止時,cim進(jìn)入寫模式,通過時鐘和上述一組地址信號線控制寫入權(quán)重數(shù)據(jù)的次序及確定寫入權(quán)重數(shù)據(jù)的地址,從而進(jìn)行常規(guī)寫操作;當(dāng)計算使能、寫禁止時,cim進(jìn)入計算模式,通過時鐘和上述一組地址信號線控制計算的次序及確定參與計算的權(quán)重數(shù)據(jù)的地址,通過時鐘控制輸入神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)的次序,使輸入神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)與cim中預(yù)先存儲的權(quán)重數(shù)據(jù)進(jìn)行計算后輸出結(jié)果。
4、在神經(jīng)網(wǎng)絡(luò)的計算中,由于數(shù)據(jù)處理主要是以矩陣形式,而非以單行或單列形式進(jìn)行的。而每次寫操作僅能寫入一行權(quán)重數(shù)據(jù),這就意味著,在計算之前,至少需要通過y次寫操作,保證cim中的存儲單元陣列寫滿權(quán)重數(shù)據(jù),上述y為存儲單元陣列的總行數(shù)。
5、然而sp-cim僅有一個端口,無法支持同時寫和計算操作。向sp-cim寫入大量數(shù)據(jù)所耗費的時間較長,較長的寫入時間會中斷計算過程。因此sp-cim不可能長時間保持峰值算力,進(jìn)而影響最終的計算效率。
技術(shù)實現(xiàn)思路
1、本公開的實施例提供了一種雙端口存算一體單元電路,該電路包括:兩個存儲單元、寫選擇單元、計算選擇單元和計算單元;寫選擇單元用于根據(jù)輸入的寫選擇信號,從兩個存儲單元中選擇一個存儲單元作為輸入數(shù)據(jù)存儲單元,并將當(dāng)前輸入的權(quán)重數(shù)據(jù)存入輸入數(shù)據(jù)存儲單元;計算選擇單元用于根據(jù)輸入的計算選擇信號,從兩個存儲單元中選擇一個存儲單元作為計算數(shù)據(jù)存儲單元;計算單元用于將計算數(shù)據(jù)存儲單元中已存儲的權(quán)重數(shù)據(jù)與輸入的待計算數(shù)據(jù)進(jìn)行計算,得到計算結(jié)果并輸出計算結(jié)果。
2、在一些實施例中,計算選擇單元包括第一控制開關(guān)和第二控制開關(guān);第一控制開關(guān)用于接收計算選擇信號,以及在計算選擇信號為第一信號時,將第一信號對應(yīng)的計算數(shù)據(jù)存儲單元中的第一權(quán)重數(shù)據(jù)輸入計算單元;第二控制開關(guān)用于接收計算選擇信號,以及在計算選擇信號為第二信號時,將第一信號對應(yīng)的計算數(shù)據(jù)存儲單元中的第二權(quán)重數(shù)據(jù)輸入計算單元。
3、在一些實施例中,計算單元包括乘法器,用于接收輸入的待計算數(shù)據(jù),并利用第一權(quán)重數(shù)據(jù)或第二權(quán)重數(shù)據(jù)對待計算數(shù)據(jù)進(jìn)行乘法計算并輸出結(jié)果。
4、在一些實施例中,第一反相器用于在計算選擇信號為第一信號時,對第一權(quán)重數(shù)據(jù)進(jìn)行反相操作,得到第一反相權(quán)重數(shù)據(jù),并將第一反相權(quán)重數(shù)據(jù)輸入或非門;第二反相器用于在計算選擇信號為第二信號時,對第二權(quán)重數(shù)據(jù)進(jìn)行反相操作,得到第二反相權(quán)重數(shù)據(jù),并將第二反相權(quán)重數(shù)據(jù)輸入或非門;第三反相器用于對待計算數(shù)據(jù)進(jìn)行反相運算,得到反相待計算數(shù)據(jù);或非門用于在計算選擇信號為第一信號時,對反相待計算數(shù)據(jù)和輸入的第一反相權(quán)重數(shù)據(jù)進(jìn)行或非運算,輸出待計算數(shù)據(jù)和第一權(quán)重數(shù)據(jù)的乘法計算結(jié)果;在計算選擇信號為第二信號時,對反相待計算數(shù)據(jù)和輸入的第二反相權(quán)重數(shù)據(jù)進(jìn)行或非運算,輸出待計算數(shù)據(jù)和第二權(quán)重數(shù)據(jù)的乘法計算結(jié)果。
5、在一些實施例中,第一控制開關(guān)包括第一開關(guān)元件和第二開關(guān)元件,第一開關(guān)元件用于在計算選擇信號為第一信號時,將第一反相器與表示第一數(shù)據(jù)的電平接通,第二開關(guān)元件用于在計算選擇信號為第一信號時,將第一反相器與表示第二數(shù)據(jù)的電平接通;第二控制開關(guān)包括第三開關(guān)元件和第四開關(guān)元件,第三開關(guān)元件用于在計算選擇信號為第二信號時,將第二反相器與表示第一數(shù)據(jù)的電平接通,第四開關(guān)元件用于在計算選擇信號為第二信號時,將第二反相器與表示第二數(shù)據(jù)的電平接通。
6、在一些實施例中,計算單元進(jìn)一步用于:響應(yīng)于接收到讀數(shù)據(jù)模式選擇信號,生成讀控制信號;基于讀控制信號,將計算選擇單元當(dāng)前選擇的存儲單元中存儲的權(quán)重數(shù)據(jù)輸出。
7、根據(jù)本公開實施例的另一個方面,提供了一種雙端口存算一體陣列電路,該電路包括:控制器和雙端口存算模塊陣列;雙端口存算模塊陣列包括第一預(yù)設(shè)數(shù)量個雙端口存算模塊組,每個雙端口存算模塊組包括第二預(yù)設(shè)數(shù)量個雙端口存算模塊,每個雙端口存算模塊包括上述雙端口存算一體單元電路;控制器用于向每個雙端口存算模塊包括的寫選擇單元發(fā)送寫選擇信號,由寫選擇單元將輸入的權(quán)重數(shù)據(jù)存入寫選擇信號對應(yīng)的輸入數(shù)據(jù)存儲單元;控制器還用于向每個雙端口存算模塊包括的計算選擇單元發(fā)送計算選擇信號,由計算選擇單元選擇與輸入的待計算數(shù)據(jù)進(jìn)行計算的計算數(shù)據(jù)存儲單元,并由對應(yīng)的計算單元對待計算數(shù)據(jù)和計算數(shù)據(jù)存儲單元輸出的權(quán)重數(shù)據(jù)進(jìn)行計算,得到計算結(jié)果。
8、在一些實施例中,該電路還包括加法樹和移位累加器;加法樹用于對每個雙端口存算模塊組中的位于相同位置的雙端口存算模塊輸出的計算結(jié)果進(jìn)行累加,得到第一累加結(jié)果;移位累加器用于將得到的各個第一累加結(jié)果進(jìn)行移位累加,得到第二累加結(jié)果。
9、在一些實施例中,該電路還包括第一預(yù)設(shè)數(shù)量個字線組,第一預(yù)設(shè)數(shù)量個字線組分別對應(yīng)一個雙端口存算模塊組,每個字線組包括第一字線和第二字線;對于第一預(yù)設(shè)數(shù)量個雙端口存算模塊組中的每個雙端口存算模塊組,該雙端口存算模塊組對應(yīng)的字線組包括第一字線和第二字線,該第一字線和第二字線分別對應(yīng)于該雙端口存算模塊組中的每個雙端口存算模塊包括的第一存儲單元和第二存儲單元;雙端口存算模塊組中的每個雙端口存算模塊包括的寫選擇單元進(jìn)一步用于:根據(jù)接收的寫選擇信號,從雙端口存算模塊組對應(yīng)的字線組包括的第一字線和第二字線中,選擇目標(biāo)字線,并將輸入的權(quán)重數(shù)據(jù)存入目標(biāo)字線對應(yīng)的存儲單元中。
10、根據(jù)本公開實施例的另一個方面,提供了一種芯片,該芯片包括上述雙端口存算一體單元電路或雙端口存算一體陣列電路。
11、根據(jù)本公開實施例的另一個方面,提供了一種電子設(shè)備,該電子設(shè)備包括上述芯片。
12、本公開上述實施例提供的雙端口存算一體單元電路及雙端口存算一體陣列電路、芯片及電子設(shè)備,在基本的雙端口存算模塊中設(shè)置兩個存儲單元、寫選擇單元、計算選擇單元、計算單元,寫選擇單元根據(jù)輸入的寫選擇信號,從兩個存儲單元中選擇輸入數(shù)據(jù)存儲單元,并將權(quán)重數(shù)據(jù)存入輸入數(shù)據(jù)存儲單元,計算選擇單元根據(jù)輸入的計算選擇信號,從兩個存儲單元中選擇計算數(shù)據(jù)存儲單元,計算單元對計算數(shù)據(jù)存儲單元中的權(quán)重數(shù)據(jù)和輸入的待計算數(shù)據(jù)進(jìn)行計算,輸出計算結(jié)果。本公開實施例提供的電路,可以同時對兩個存儲單元分別進(jìn)行數(shù)據(jù)寫入操作和數(shù)據(jù)計算操作,相比于現(xiàn)有的單端口存算一體存儲器,可以在向存算陣列中的一部分存儲單元寫入權(quán)重數(shù)據(jù)的同時,從另一部分存儲單元提取存儲的權(quán)重數(shù)據(jù)與輸入的待計算數(shù)據(jù)進(jìn)行運算,實現(xiàn)了權(quán)重數(shù)據(jù)的寫入和利用權(quán)重數(shù)據(jù)進(jìn)行計算各自獨立且互不干擾,運算效率大大提高。電路具有更長的峰值算力保持時間,具有更高的有效算力,更靈活的設(shè)計空間以及更廣闊的應(yīng)用范圍。
13、下面通過附圖和實施例,對本公開的技術(shù)方案做進(jìn)一步的詳細(xì)描述。