TW202331552A - 迭代混合矩陣乘法器 - Google Patents
迭代混合矩陣乘法器 Download PDFInfo
- Publication number
- TW202331552A TW202331552A TW111150340A TW111150340A TW202331552A TW 202331552 A TW202331552 A TW 202331552A TW 111150340 A TW111150340 A TW 111150340A TW 111150340 A TW111150340 A TW 111150340A TW 202331552 A TW202331552 A TW 202331552A
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- value
- product
- bit
- storage circuit
- Prior art date
Links
- 239000011159 matrix material Substances 0.000 title claims description 53
- 238000009825 accumulation Methods 0.000 claims abstract description 86
- 239000003990 capacitor Substances 0.000 claims description 70
- 238000010586 diagram Methods 0.000 description 22
- 238000000034 method Methods 0.000 description 19
- 238000004364 calculation method Methods 0.000 description 14
- 239000013598 vector Substances 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 238000007792 addition Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- CVRALZAYCYJELZ-UHFFFAOYSA-N O-(4-bromo-2,5-dichlorophenyl) O-methyl phenylphosphonothioate Chemical compound C=1C=CC=CC=1P(=S)(OC)OC1=CC(Cl)=C(Br)C=C1Cl CVRALZAYCYJELZ-UHFFFAOYSA-N 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008021 deposition Effects 0.000 description 2
- 229910052738 indium Inorganic materials 0.000 description 2
- 239000013641 positive control Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/48—Indexing scheme relating to groups G06F7/48 - G06F7/575
- G06F2207/4802—Special implementations
- G06F2207/4814—Non-logic devices, e.g. operational amplifiers
Abstract
一種混合分時迭代乘法累加電路,包括:乘積存儲電路;乘法電路,其可操作以接收第一輸入值,接收第二輸入值,產生第一輸入值和第二輸入值的乘積,並在乘積存儲電路中存儲乘積;累加器存儲電路,用於存儲累加值;以及累加開關,其將乘積存儲電路連接到累加器存儲電路,該累加開關可操作以將乘積存儲電路和累加器存儲電路並聯電連接或者將乘積存儲電路與累加器存儲電路電斷開。
Description
本發明總體上涉及用於矩陣乘法的處理架構、裝置和方法,尤其涉及混合乘法累加電路。
矩陣乘法是許多數學計算中的重要運算。例如,線性代數可以使用矩陣乘法來求解線性方程組,例如,微分方程。這種數學計算應用於例如模式匹配、人工智能、解析幾何、工程、物理、自然科學、計算機科學、計算機動畫和經濟學。
通常在執行存儲程序的數字計算機中進行矩陣乘法。程序描述了要執行的運算和計算機中的硬體,例如,執行運算的數字乘法器和加法器。在一些計算系統中,專門設計的硬體可以加快計算速度。在某些應用中,實時處理對於在有用的時間量內提供有用的輸出是必要的,特別是對於安全關鍵任務。此外,便攜式裝置中的應用僅具有有限的可用功率。儘管有這樣的加速計算系統,但是大矩陣和高數據速率的問題可能需要更長的時間來解決,並使用比預期更多的功率。因此,需要能夠以更高速率和更低功率執行矩陣乘法的計算硬體加速器。
有鑑於此,吾等發明人乃潛心進一步研究,並著手進行研發及改良,期以一較佳發明以解決上述問題,且在經過不斷試驗及修改後而有本發明之問世。
本發明的實施例尤其可以提供使用乘法累加運算來執行矩陣乘法的混合計算硬體加速器。本發明的計算硬體加速器包括具有模擬累加器的數字二進制單位乘法器。單位乘法器的數據值均存儲在數字存儲器中,單位乘法結果作為電荷存儲在電容器中。電容器電荷組合,以將這些值求和(累加),從而提供乘法累加運算。通過組合電容器電荷,求和運算幾乎是瞬間完成的,依賴於導體中電荷的流動速率,不需要外部電源。因此,本發明的實施例可以提供非常高速且低功率的乘法累加電路。因為在電子系統中電荷被表示為Q,所以每個單位乘法累加電路在本文被稱為qmac,並且是使用數字乘法和模擬累加的混合電路。
根據本發明的實施例,一種混合乘法累加電路包括單位乘法累加電路的陣列,每個單位乘法累加電路包括:(i)第一存儲元件,用於存儲第一單位值;(ii)第二存儲元件,用於存儲第二單位值;(iii)位乘法電路,用於將第一單位值乘以第二單位值,以計算乘積;以及(iv)模擬存儲電路,其中,位乘法電路可操作以將表示乘積的電荷存儲在模擬存儲電路中。單位乘法累加電路的陣列可一起操作,以組合存儲在每個模擬存儲電路中的電荷,以提供表示乘積之和的累加電荷。模擬存儲電路可以是電容器。
根據一些實施例,混合乘法累加電路包括開關電路,其連接到位乘法電路和模擬存儲電路,該開關電路可在第一模式下操作,以將電荷從位乘法電路傳輸到模擬存儲電路,並且可在第二模式下操作,以將位乘法電路與模擬存儲電路隔離並且將陣列中的模擬存儲電路連接在一起,以提供累加電荷。一些實施例包括連接到陣列的模擬存儲電路的清除電路,該清除電路可操作,以從陣列中的模擬存儲電路移除電荷。在一些實施例中,位乘法電路是功能AND門,或者執行AND門的功能。
在本發明的一些實施例中,混合乘法累加電路包括模數轉換器,用於將連接到陣列中的模擬存儲電路的累加電荷轉換成數字累加值。一些實施例包括移位電路或移位電連接,以將數字累加值乘以2的冪。一些實施例包括數字加法器,該數字加法器可操作以將數字累加值相加,以產生數字矩陣值。數字加法器可以是流水線式的。
在一些實施例中,不存在用於轉換並聯qmacs 10的模擬存儲電路16的輸出的模數轉換器,並且由模擬加法器執行混合乘法累加電路陣列的輸出的相加,該模擬加法器可操作以將累加電荷相加,以產生模擬矩陣值。一些實施例包括連接到陣列中的模擬存儲電路的電壓乘法器,以將累加電荷乘以2的冪。可以由運算放大器執行這種加法和乘法,該運算放大器被配置為加法器,其中,運算放大器輸入連接到模擬存儲電路,這些模擬存儲電路可操作以提供模擬矩陣值。運算放大器的運算放大器輸入可以被配置為將運算放大器輸入乘以或除以2的冪。一些實施例包括模數轉換器,用於轉換模擬矩陣值,以產生數字矩陣值,從而將運算放大器的輸出數字化。
在一些實施例中,位乘法電路包括串聯連接的開關(例如,包括MOS晶體管對的串聯開關電路)、由正控制信號控制的第一MOS晶體管以及由同一控制信號的反相(負)版本控制的第二MOS晶體管。串聯連接的開關之一可以由權重值控制,而另一個可以由表示權重值和輸入值的矩陣乘法的輸入值控制。
根據本發明的實施例,混合矩陣乘法器包括:數字存儲元件,每個數字存儲元件可操作以存儲數字值;乘法電路,用於將存儲的數字值相乘,以產生乘積;以及模擬存儲電路,其可操作以存儲乘積。電壓連接可以提供功率,以操作數字存儲元件、乘法電路和模擬存儲電路。在一些實施例中,功率連接提供功率,以操作數字存儲元件、乘法電路和模擬存儲電路,並且具有不大於1V的電壓(例如,不大於500mV、不大於100mV、不大於50mV或不大於10mV)。乘法電路可以包括串聯連接的開關,這些開關包括MOS晶體管對。
根據本發明的實施例,一種分時乘法累加電路包括:乘積存儲電路;乘法電路,其可操作以接收第一輸入值,接收第二輸入值,產生第一輸入值和第二輸入值的乘積,並且將乘積存儲在乘積存儲電路中;累加器存儲電路,用於存儲累加值;以及累加開關,其將乘積存儲電路連接到累加器存儲電路,累加開關可操作以將乘積存儲電路和累加器存儲電路並聯電連接或者將乘積存儲電路與累加器存儲電路電斷開。
分時乘法累加電路的一些實施例包括第一多路複用器,第一多路複用器可操作以選擇輸入到第一多路複用器的多個第一輸入值中的一個,並且其中,乘法電路可操作以從第一多路複用器接收多個第一輸入值中所選擇的一個,接收第二輸入值,並且產生多個第一輸入值中所選擇的一個和第二輸入值的乘積。一些實施例包括第二多路複用器,第二多路複用器可操作以選擇輸入到第二多路複用器的多個第二輸入值中的一個,並且其中,乘法電路可操作以從第二多路複用器接收第二輸入值中所選擇的一個,並且產生多個第一輸入值中所選擇的一個和第二輸入值中所選擇的一個的乘積。
根據本發明的一些實施例,乘積存儲電路和累加器存儲電路是存儲電荷的模擬存儲電路。乘積存儲電路和累加器存儲電路可以是電容器。
根據本發明的一些實施例,乘法電路是用於將兩個二進制位相乘的單位乘法電路。乘法電路可以包括串聯連接的串聯開關電路。累加開關可以是與乘法電路的串聯開關電路串聯連接的串聯開關電路。乘法電路可以包括串聯連接的串聯開關電路,並且乘法電路和累加開關的一個或多個串聯開關電路可以是差動開關。
根據本發明的一些實施例,操作累加開關以並聯連接乘積存儲電路和累加器存儲電路,將累加器存儲電路中的累加值與乘積存儲電路中的乘積組合,以提供存儲在乘積存儲電路和累加器存儲電路中的組合值。
混合分時矩陣乘法器的一些實施例包括控制電路,控制電路可操作以依次(i)向乘法器提供第一輸入值和第二輸入值,並且切換累加開關,以在乘積存儲電路中存儲乘積,以及(ii)切換累加開關,以將乘積存儲電路和累加器存儲電路並聯電連接,並且將乘積存儲電路中的乘積與累加值組合,以提供存儲在乘積存儲電路和累加器存儲電路中的組合值。
根據本發明的實施例,混合矩陣乘法器包括多個分時乘法累加電路和用於將多個分時乘法累加電路的累加值相加的加法器。累加值可以是模擬值,並且一些實施例可以包括用於將累加值轉換成數字值的模數轉換器,並且加法器可以是數字加法器。在一些實施例中,累加值是模擬值,並且加法器是模擬加法器。
根據本發明的實施例,矩陣乘法的混合方法包括:
a)提供具有N位的多位值;
b)提供混合分時迭代乘法累加電路;
c)提供多位值的輸入位,向乘法器提供第二輸入位,並且設置累加開關,以將乘積存儲電路連接到分時乘法累加電路,並且將乘積存儲電路與累加器存儲電路斷開;
d)將多位值的輸入位乘以第二輸入位,以形成存儲在乘積存儲電路中的位乘積;
e)切換累加開關,以將乘積存儲電路與分時乘法累加電路斷開,並且將乘積存儲電路連接到累加器存儲電路,並且將乘積存儲電路中的乘積與累加值組合,以在累加器存儲電路中產生組合值;以及
f)重複步驟c)-e)N次,直到按位順序提供多位值的所有位,以產生多位值和第二輸入位的乘積。
根據本發明的實施例,矩陣乘法的混合方法包括:
a)提供具有N位的第一多位值和具有M位的第二多位值;
b)提供根據請求項1所述的M個分時乘法累加電路;
c)向M個分時乘法累加電路中的每一個的乘法器提供第一多位值的輸入位並且提供第二多位值的不同的第二輸入位,並且設置累加開關,以將乘積存儲電路連接到分時乘法累加電路,並且將乘積存儲電路與M個分時乘法累加電路中的每一個的累加器存儲電路斷開;
d)將多位值的輸入位乘以第二輸入位,以與M個分時乘法累加電路中的每一個形成存儲在乘積存儲電路中的位乘積;
e)切換累加開關,以將乘積存儲電路與分時乘法累加電路斷開,並且將乘積存儲電路連接到累加器存儲電路,並且將乘積存儲電路中的乘積與累加值組合,以在M個分時乘法累加電路中的每一個的累加器存儲電路中產生組合值;
f)對第一多位值的N位中的每一位重複步驟c)-e),直到按位順序提供第一多位值的所有位;
g)縮放M個分時乘法累加電路中的每一個的累加值;以及
h)將M個縮放的分時乘法累加電路中的每一個的累加值相加,以產生乘積。
根據本發明的實施例,矩陣乘法的混合方法包括:
a)提供具有N位的第一多位值和具有M位的第二多位值;
b)提供根據請求項1所述的分時乘法累加電路;
c)向乘法器提供第一多位值的輸入位並且提供第二多位值的第二輸入位,並且設置累加開關,以將乘積存儲電路連接到分時乘法累加電路,並且將乘積存儲電路與分時乘法累加電路的累加器存儲電路斷開;
d)將第一多位值的輸入位乘以第二多位值的第二輸入位,以形成存儲在乘積存儲電路中的位乘積;
e)切換累加開關,以將乘積存儲電路與分時乘法累加電路斷開,並且將乘積存儲電路連接到累加器存儲電路,並且將乘積存儲電路中的乘積與累加值組合,以在M個分時乘法累加電路中的每一個的累加器存儲電路中產生組合值;
f)對第一多位值的N位中的每一位重複步驟c)-e),直到按位順序提供第一多位值的所有位;
g)縮放分時乘法累加電路的累加值,以產生縮放值;
h)將縮放值與多位乘積相加;以及
i)重複步驟c)-h),以產生多位乘積。
根據本發明的實施例,混合矩陣乘法器包括:混合分時迭代乘法累加電路;存儲電路,用於存儲累加值;以及控制電路,其可操作以:
a)反復並且依次(i)向乘法器提供第一輸入值並且提供第二輸入值,設置累加開關,以將乘積存儲電路連接到乘法器,並且將乘積存儲電路與累加器存儲電路斷開,以及(ii)切換累加開關,以將乘積存儲電路與分時乘法累加電路電斷開,並且將乘積存儲電路電連接到累加器存儲電路,以將乘積存儲電路中的乘積與累加值組合,並且提供存儲在累加器存儲電路和乘積存儲電路中的組合值;以及
b)將累加值存儲在存儲電路中。
本發明的一些實施例包括:存儲電路,每個存儲電路用於存儲累加值;以及加法器,用於將存儲電路中的累加值相加。控制電路可操作以提供不同的第一輸入值,並且提供不同的第二輸入值,並且將累加值存儲在每個存儲電路中。
根據本發明的一些實施例,一種分時乘法累加電路包括:乘法電路,其可操作以接收第一輸入值,接收第二輸入值,並且產生第一輸入值和第二輸入值的乘積;累加數字存儲電路,其可操作以存儲累加的數字值;以及數字位累加器,其可操作以接收乘積,將乘積與存儲在累加數字存儲電路中的累加數字值組合,並且輸出累加數字值。將乘積與累加數字值組合可以包括(i)如果乘積是1並且累加數字值是0,則將值存儲在累加數字存儲電路中,(ii)如果乘積是1並且累加數字值是非0,則保持相同的累加數字值,或者(iii)如果乘積是0,則將累加數字值縮放2。本發明的一些實施例包括:乘積存儲電路,其可操作以接收乘積;以及一位模數轉換器,其連接到乘積存儲電路和數字位累加器。乘積存儲電路可操作以將乘積提供給一位模數轉換器,一位模數轉換器可操作以接收乘積,將乘積轉換成數字位乘積,並且將數字位乘積提供給數字位累加器。
本發明的實施例提供了快速、高效、低功率和小型的混合硬體加速器,其使用乘法累加運算來執行矩陣乘法。
關於吾等發明人之技術手段,茲舉數種較佳實施例配合圖式於下文進行詳細說明,俾供 鈞上深入瞭解並認同本發明。
本發明的某些實施例涉及單位混合乘法累加電路(每個為qmac),其包括:兩個數字單位二進制存儲元件,每個存儲元件存儲單位值;乘法器,用於將兩個單位值相乘,以計算乘積;以及模擬電荷存儲元件,例如,電容器,用於將乘積存儲為電荷(或電壓)。qmacs的一維陣列可以計算單位乘積的一維陣列(向量)並且對其求和。qmacs的二維陣列可以計算兩個多位數字被乘數的乘積。(被乘數是要與另一個被乘數相乘以計算乘積的值。)用於計算多位被乘數的qmacs的二維陣列的大小可以是N+M-1,其中,N是兩個數字被乘數之一的位數,M是兩個數字被乘數中另一個的位數。具有M個值的兩個線性向量(一維數字陣列)的向量矩陣乘法和累加可以用M個二維陣列來計算,並作為單個值累加。
如圖1A所示,計算C=AxB是矩陣乘法,其中,A、B和C是矩陣。如果A是m×n矩陣,B是n×p矩陣,則C是m×p矩陣,其中,C
ij=
A
ik B
kj,其中,k=1至n,i=1至m,j=1至p。對於k = 1到N的A和B的乘積的求和運算是一種乘法累加(mac)運算。因此,矩陣乘法是大小為k的一系列(i×j)乘法累加運算,每個乘法累加運算提供矩陣C的一個值。圖1B示出了計算C=AxB,其中,p=1,使得C和B是線性(例如,一維或向量)矩陣。圖1C是示出圖1A的矩陣計算的簡化軟體程序,而圖1D是示出圖1D的矩陣計算的簡化軟體程序。“對於k=0到(n-1)”循環是乘法累加運算,需要n次乘法和n次加法。
根據本發明的實施例並且如圖2和圖3所示,混合乘法累加運算可以由qmac 10的陣列來執行,其中,每個qmac 10包括用於存儲第一位A的第一數字單位二進制存儲元件12、用於存儲第二位B的第二數字單位二進制存儲元件12、用於將被乘數A和B相乘的位乘法器14(位乘法電路14),產生作為電荷存儲在位電容器16(模擬存儲電路16)中的乘積。在一些實施例中,存儲元件12是SRAM單元、DRAM單元、觸發器(例如,D觸發器)或一對輸入連接到輸出的反相器,如圖2插圖所示。在一些實施例中,位乘法器14是AND門,僅當A和B都為正(例如,1)時提供正值(例如,1),從而提供乘法。如圖2所示,AND門可以被實現為晶體管,其源極連接到A的存儲元件12,柵極連接到B的存儲元件12(反之亦然),當被乘數A和B的乘積為1值時,提供存儲在位電容器16中的電荷Q。如果A或B的值對於不同的qmac 10是相同的,則常數的存儲元件12可以由多個qmac 10共享(例如,單個存儲元件12可以向多個qmac 10提供輸入值,如下面討論的圖7所示)。模擬和數字電路設計領域的技術人員將會理解,圖2和圖3是簡化的設計,包括更複雜的設計,作為本發明的實施例,例如,下面討論的圖13和圖14中所示的那些設計,這些設計可以在非常低的電壓和功率下工作。例如,沉積在位電容器16上的電流量可以非常小,以降低qmac 10使用的功率並提高電路速度。位電容器16可以非常小,以減小集成電路實施例中位電容器16的面積。因此,在一些實施例中,位乘法器14隨時間非常精確地控制當前在位電容器16上沉積的電荷,以保持乘法累加運算的準確度和精確度。因此,位乘法器14可以被設計成非常精確地控制沉積在位電容器16上的電荷量,例如,響應於仔細校準的定時信號和電壓。
圖3示出了四個qmac 10,具有並聯連接的位電容器16(模擬存儲電路16),以在混合乘法累加電路20中對四個乘積求和。四個並聯qmac 10為四個單位A值提供乘法累加運算,每個單位A值乘以一個單位B值。單位B值可以相同,也可以不同。因此,圖3示出了用於對四個單位二進制值執行乘法累加運算的電路(例如,在圖1A-1D的數學圖示中k=4)。因此,單位乘法累加電路10的陣列可一起操作以組合每個模擬存儲電路16中存儲的電荷,以提供表示qmac 10的乘積之和的累加電荷。
並聯連接的位電容器16上的總電荷提供模擬累加值輸出O,該輸出可以用模數轉換器(ADC)30轉換成數字值,或者用作進一步計算的模擬值。電壓或電荷的絕對值(輸出O)必須根據電容器的數量n來縮放,因為並聯電容器的電容等於並聯電容器的電容之和。由於電容器上的電荷等於電壓乘以電容(Q=CV),所以如果電容在固定電荷下增加,則電壓將相應降低。例如,如果每個電容器存儲相當於1值的電荷Q,則這些值的總和將是4(在圖3的圖示中),但是電壓將保持1,因為四個電容器並聯電連接。因此,電壓輸出必須根據電容器的數量來縮放(例如,圖3的圖示中的4倍)。
混合乘法累加電路比數字等效電路需要更少的功率,例如,使用數字加法器。來自小位電容器16的淨電流或電荷洩漏可以非常小,並且模擬存儲電路16和其他模擬運算可以在非常低的電壓下操作,例如,不大於1伏(例如,不大於500mV、不大於100mV、不大於50mV或不大於10mV)並且低於用於傳統數字邏輯的電壓(例如,5V、3.6V、3.3V或1.65V)。本發明的一些實施例可以在大致10mV下操作。
圖2和圖3的電路是qmac 10的簡化表示及其在乘法累加陣列中的實現方式。如上所述,精確控制位電容器16上的電荷沉積有助於保持乘法累加的準確度和精確度。如圖4A所示,用於qmac 10的更複雜的電路控制qmac 10陣列中的qmac 10與連接到位乘法器14的輸出和位電容器16的開關電路18(在圖中也表示為S)之間的電連接。當開關電路18接通時,表示位A和B的乘積的電荷Q通過開關電路18的左晶體管沉積在位電容器16上。當開關電路18斷開時,左晶體管關閉,包括開關電路18中的中心晶體管的反相器將正信號施加到包括開關電路18的右晶體管的連接開關,並聯連接位電容器16。
圖4A的開關電路18是簡化的電路,並且可以實現更複雜的電路以提供開關功能,並且包括在本發明中。因此,在第一模式中,獨立並且單獨地施加開關電路18接通,並且位乘法器14相乘的乘積,以將電荷傳輸到每個qmac 10中的位電容器16。在第二模式中,開關電路18斷開,位電容器16並聯連接,並且每個qmac 10中的位電容器16上的電荷Q與位乘法器14隔離,並且被求和,以提供累加值輸出O。在位電容器16上連接的清除電路19(在圖中也表示為C)可以移除位電容器16上的電荷Q,並使qmac 10準備好執行與新的單位數字值A和B的下一次相乘。圖4B示出了圖4A的單位乘法累加電路10的抽象,其中,A和B是單位數字存儲元件12,M是位乘法器14,S是開關電路18,C是清除電路19。
圖4C示出了qmac 10的乘法累加週期。負荷信號A和B被設置為在存儲元件12中存儲相應的值,例如,由計算機或其他狀態機控制器提供的值,並由位乘法器14相乘。同時,清除信號為高,開關信號為低,以隔離和清除位電容器16。一旦清除位電容器16,清除信號被設置為低,並且開關信號可以被設置為高,以將表示A和B的乘積的電荷Q存儲在位電容器16中。一旦電荷Q被加載到位電容器16中,開關信號被設置為低,以將位乘法器14與位電容器16隔離,並且並聯連接所有位電容器16,從而對位電容器16上的電荷Q求和,以提供累加值輸出O。等於輸出O的求和的電荷Q經過適當的縮放,可以用模數轉換器30轉換成數字值,或者作為模擬值用於進一步的計算。當開關電路18從第一模式變為第二模式時,可以在兩個週期內完成整個操作。
圖5示出了使用圖4B的抽象表示形成混合乘法累加電路20的qmac 10的陣列。在一些實施例中,當開關電路18斷開時,單個清除電路19可用於清除來自所有連接的位電容器16的電荷,但是在位電容器16之間連接的開關電路18會干擾所有位電容器16的電荷移除。在一些實施例中,為每個qmac 10提供清除電路19,並且在混合乘法累加電路20中共同控制清除電路19,如同開關電路18一樣。
圖6示出了兩個二進制、多位數、多位值的完整乘法。圖6示出了具有四位的值的情況,但是任意數量的位可以用於混合乘法累加電路20,該混合乘法累加電路具有與相乘的位數相對應的數量的qmac 10。每個混合乘法累加電路20中qmac 10的數量對應於A中的位數,混合乘法累加電路20的數量對應於同時要進行的乘法累加計算的數量。在qmac 10的數量少於A中的位數或者同時要進行的乘法累加計算的數量少於B中的位數的情況下,可以執行部分計算,並且在外部計算機或控制器(例如,狀態機)的控制下存儲和組合乘積。
如圖6的4位示例所示,所示的每一行乘積是值B的一位乘以值A的位。在圖6中,各行在空間上相對於彼此移位,以表示每行乘積的相對幅度(位置),如同傳統的手工寫在紙上的乘法一樣。每列21乘積(具有相同的幅度或位置)的乘積(乘積值)在每個混合乘法累加電路20中求和,以形成如圖5所示的累加結果(求和輸出值O)。每列21的乘積可以用不同的混合乘法累加電路20來計算和求和。混合乘法累加電路20的累加結果(輸出值O)然後求和(加在一起),以提供多位乘法的最終值。
每列21乘積的乘法和累加可以由qmac 10的一維陣列來執行。如圖7所示,每列qmac 10形成共享公共B存儲元件12的混合乘法累加電路20。每個混合乘法累加電路20中的qmac 10陣列(在該示例中對應於圖6所示的乘法)計算並求和列21的乘積,作為輸出值O。用單獨的混合乘法累加電路20計算每列21乘積。每個混合乘法累加電路20的輸出值O可以加在一起。因為每列乘積21具有不同的位值(相對幅度),所以每列乘積21中的值必須縮放,以在這些值相加之前,將這些值乘以其位值,例如,乘以1到6位,以將這些值乘以2、4、8、16、32或64。可以執行多個乘法運算,而不需要重新加載位值(B存儲元件12),其中,位不改變,例如,如果位值表示多個輸入值相乘所共有的權重。
形成混合多位乘法器22的混合乘法累加電路20的陣列提供了極快的操作,具有比傳統數字電路少得多的週期。此外,用於對輸出值O求和的加法步驟(如果以數字方式完成的話)可以被分成多個階段(例如,一次將成對的值相加)並且被流水線化,使得操作甚至更快,並且不同值的乘法累加運算可以在時間上重疊,例如,在計算機或狀態機控制器的控制下。
在本發明的一些實施例中,在數字上計算來自混合乘法累加電路20的輸出值O的相加。在一些實施例中,使用模擬電路來計算來自混合乘法累加電路20的輸出值O的相加。如圖7所示,用模數轉換器30轉換輸出值,以提供存儲在例如寄存器或其他存儲器中的數字位值,例如,通過將數字位值相對於彼此移位(每次移位對應於2的冪)來縮放數字位值,並且使用數字加法器對縮放後的位值求和。
如圖8所示,每個混合乘法累加運算(qmac 10的列)的模擬求和結果是電壓(或電荷),該電壓乘以對應於模擬和的位置的量(例如,通過電壓乘法器VM),並且例如使用模擬加法器將相乘的模擬和相加在一起,並且使用模數轉換器30將最終的總和轉換成數字值。在這樣的實施例中,整個計算可以在兩個開關週期內完成(不包括任何清除或加載週期),與傳統實現相比提供了非常快的操作。圖8示出了每個qmac 10具有單獨存儲元件12的實施例。
在一些實施例中,模擬電壓乘法和求和可以使用以求和模式配置的運算放大器(op amps)40來實現。圖9示出了反相求和(加法)運算放大器40。運算放大器40的輸出Vo等於每個電壓V
1到V
N的總和乘以R'/R
n的比值,其中,n是特定的列,N是要相加的乘積的列21的數量(例如,在圖7的示例中是7)。每個電壓對應於一列qmac 10的輸出O。例如,R1可以對應於要求和的最低位值,因此R'/R
1=1/64,R'/R
2=1/32,R'/R
3=1/16,R'/R
4=1/8,R'/R
5=1/4,R'/R
6=1/1,R'/R
7=1。可以使用模數轉換器30將運算放大器40的反相輸出轉換成數字值,並進行適當的縮放。
圖10示出了非反相求和(加法)運算放大器40。運算放大器40的輸出Vo等於每個電壓V
1到V
N的總和乘以比率R'/R,其中,R'-R
n均相等。電壓值V
1-V
N可以用通過電阻器實現的分壓器來縮放。例如,連接到V
1的電阻器可以具有63:1的比值,連接到V
2的電阻器可以具有31:1的比值,連接到V
3的電阻器可以具有15:1的比值,以此類推,將電壓至多縮放到對應於相加的值的位置。運算放大器40的輸出可以通過(R+ R')/R(例如,64)的比值來縮放,並使用模數轉換器30轉換成數字值。
具有模擬求和的圖7和8的實施例可以提供更快的操作,而具有數字求和的圖6的實施例可以提供更高的精確度。本發明的實施例不受所示的位數的限制。例如,混合乘法累加器電路20可具有64、128、256、512、1024、2048、4096、8192或16384個qmac 10或更多個qmac,並且可在陣列中採用相等數量的混合乘法累加電路20來提供具有許多位的高速乘法。本發明的實施例可以作為硬體加速器提供給傳統計算機或圖形處理器。數據可以以流水線方式提供給硬體加速器,在輸入端和輸出端有兩個或多個移位寄存器。混合乘法累加電路20陣列的任何硬體實現都必須調整大小,以有效地適應輸入向量的大小。如果混合乘法累加電路20陣列對於該任務來說太大,則沒有使用大部分電路(例如,qmac 10的數量太大)。如果混合乘法累加電路20陣列太小,則向量乘法必須分解成更小的向量;過多的小向量同樣會導致效率低下。
如圖6所示,單位乘法累加電路10的二維乘法陣列可以執行多位乘法(例如,如圖7和8所示)。混合多位乘法器22包括如圖8和圖9所示的多個陣列,形成混合矩陣乘法累加電路24,可以計算整個向量乘法。向量乘法累加的每個多位乘法(例如,如圖1B所示)可以產生數字乘積(如圖7所示或者在模擬總和輸出值O的模數轉換之後),並且可以使用數字加法器將數字乘積在數字上相加。在一些實施例中,向量乘法累加的每個多位乘法(例如,如圖1B所示)可以產生模擬乘積(如圖8所示的輸出值O),並且可以使用如圖1-6所示的類似電路將模擬乘積相加。模擬乘積P(圖8所示)可以使用類似於位乘法器14的沉積電路沉積在電容器中(例如,類似於位電容器16,但是對於更大的電荷具有更大的存儲容量)。如圖12所示,類似於圖5的開關和清除電路18、19可以在電容器上沉積電荷Q,並且可以通過並聯連接電容器來對電荷求和,然後用模數轉換器30轉換求和的電荷,以在一個週期中提供完整的向量矩陣乘法。圖11A示出了混合矩陣乘法累加電路24,而圖11B將混合多位乘法器22與向量乘法累加計算中的被乘數相關聯。
本發明的實施例可以提供非常低電壓的乘法累加電路10,例如,使用從10mV到1V的電壓。這種低電壓提供低功率操作。使用傳統AND門的位乘法器14可能需要例如六個在較高電壓下工作的較大晶體管來實現位乘法電路,該位乘法電路可以充分地控制沉積在模擬存儲電路16上的電荷Q(例如,從1.65-5V)。相反,如圖13所示,本發明的位乘法器14可以包括串聯連接的串聯開關電路15,這些串聯開關電路可以在較低電壓(例如,不大於1V並且低至10mV)和低功率下工作,並且可以例如僅用四個較小晶體管來充分控制沉積在模擬存儲電路16上的電荷Q。
如圖13所示,一系列三個串聯開關電路15和模擬存儲電路16可以實現功能上類似於圖4A和4B所示的電路的qmac 10。每個串聯開關電路15具有兩個差動電壓輸入(V和具有橫杠的V,其中,Vbar是V的反相值)、兩個電壓輸入(In和具有橫杠In,其中,Inbar是In的反相值)以及輸出O。因此,圖13和圖14中的信號A、B和開關(下面更詳細地討論)中的每一個都是差分信號。串聯中的第一串聯開關電路15具有作為兩個電壓輸入的參考電壓V
REFP(例如,V
REF,諸如10mV等高值或正值)及其反相值V
REFN(例如,諸如0mV等低值或負值)以及作為兩個輸入值的值A(例如,權重值)及其反相值Abar。如串聯開關電路15A的圖13插圖所示,如果A為高(例如,正或10mV)並且Abar因此為低(例如,0mV),則輸出O為V
REF,如非虛線連接所示。如串聯開關電路15B的圖13插圖所示,如果A為低(例如,負或0mV)並且Abar因此為高(例如,10mV),則輸出O為V
REFN,如非虛線所示。因此,如果A為正,則O為正,並且如果A為負,則O為負。串聯中的第二串聯開關15具有輸入值B及其反相Bbar,將來自第一串聯開關15的值O作為V
REFP正值,並且將V
REFN作為反相電壓值(例如,0伏)。因此,如果O為低(負),則無論B具有什麼值,第二串聯開關電路15的輸出P都將為低(負)。如果O為高(正),並且如果B為高(正),則第二串聯開關電路15的輸出O將為高(正),並且如果B為低,則第二串聯開關電路15的輸出P將為低(負)。因此,前兩個串聯開關電路15以減少的電路和功率執行AND功能。
第三串聯開關電路15可以用於實現開關電路18,並且具有輸入開關值及其反相(對應於圖4A、4B的開關值),將來自第二串聯開關15的值O作為V
REF值,並且將公共V
SUM連接作為反相電壓值。因此,如果開關為高,則輸出O對模擬存儲電路16充電。如果開關為低,則模擬存儲電路16上的電荷Q通常連接到qmac 10陣列中的任何其他模擬存儲電路16(例如,如圖3所示,作為模擬qmac 10陣列輸出),從而提供求和操作。
圖14示出了包括三個串聯連接的串聯開關電路15的低壓qmac 10的一些實施例。每個開關電路15包括一對簡單的MOS(金屬氧化物半導體)晶體管,具有單獨的差分輸入和公共輸出。這對簡單MOS晶體管中的一個由正控制信號控制,而另一個由相同控制信號的反相(負)版本控制,例如,任何單位存儲元件12的正和負輸出(例如,參照圖2所示和所述的D觸發器或反相器對)。該電路的功能如上關於圖13所述。這種一系列串聯開關電路15可以需要更少、更簡單的晶體管,這些晶體管在低得多的電壓下工作(例如,百分之一或小於百分之一,例如,0.624%,或者10mV,而不是1.65伏),因此需要少得多的功率。模擬存儲電路16上的組合(相加)電壓可以是:
V
SUM= ((n * V
REFP) + (N-n)* V
REFN)) / N。
其中,V
REFN=0伏:
V
SUM=(n*V
REFP)/N,
其中,n是電容器的數量,N是連接成一行的qmac 10的數量。然後,可以如上所述對V
SUM進行縮放或轉換。(圖14不包括清除電路19。)
因此,根據本發明的一些實施例,混合矩陣乘法器包括:數字存儲元件12,每個數字存儲元件12可操作以存儲數字值;乘法電路14,用於將存儲的數字值相乘,以產生乘積;模擬存儲電路16,其可操作以存儲乘積;以及電源連接(例如,V
REFP和V
REFN),用於提供電源,以操作數字存儲元件12、乘法電路14和模擬存儲電路16。電源連接的電壓可以不大於1V、不大於500mV、不大於100mV、不大於50mV或不大於10mV。位乘法電路14可以包括串聯連接的開關15。
在一些實施例中,混合矩陣乘法累加電路24、混合多位乘法器22或混合乘法累加電路20的硬體實現與特定應用所需的計算並不完全匹配。對於這樣的應用,計算可以被分成子問題,這些子問題與可用的硬體更好地匹配,並且結果組合,以提供期望的計算。子問題可以在時間上依次完成,使得硬體是分時的或時間複用的。一些值(例如,被乘數B的位)可以存儲在存儲元件12中,用於多個硬體操作,從而減少硬體中使用的功率和時間。
本發明的實施例使得能夠使用非常少的能量以非常高的速率進行向量乘法累加計算。需要程序的n個循環(例如,如圖1C和1D所示),每個循環需要多個機器代碼週期來執行程序,整個計算在單個週期中完成。例如,在機器學習應用中,許多大型矩陣運算在矩陣中具有許多零值,並且需要相對較低的位精確度來迭代匹配問題的解決方案。因此,本發明的實施例為這種應用提供了有效的電路。
在本發明的一些實施例中,在單個步驟中執行多位數字乘法,例如,在混合乘法累加電路20中使用多個單位乘法累加電路10,如圖2和3所示。使用如圖6-8所示的混合乘法累加電路20的陣列,可以在單個步驟中將兩個多位數字值相乘。在這種混合多位乘法器中,通過仔細匹配位乘法電路14(例如,包括一系列串聯開關電路15)的操作性能來提供增加的精確度,使得每個位乘法電路14存儲的電荷是相同的,並且來自並聯連接的模擬存儲電路16的模擬總和是正確的,至少在任何模數轉換器30的誤差內。
在本發明的一些實施例中,並非與位乘法電路14的操作性能匹配,而是重複使用單位乘法電路14(例如,隨著時間迭代,使得單位乘法電路14隨著時間共享)來在累加器存儲電路17中累加位乘積,並且不需要電路匹配。雖然重複需要時間,但是單位乘法電路14和累加器乘積電路17可以非常小(例如,包括三個晶體管(如圖14所示)和一個附加的累加器電容器)。因此,與現有的數字乘法器相比,可以在集成電路中構建數百萬甚至數十億個這樣的電路,並且以相對較少的能量使用提供非常快速的矩陣乘法。
圖15A示出了簡單的混合迭代單位乘法累加電路11(iqmac 11),其包括單位乘法累加電路10,其中,乘積存儲電路16(電容器16)通過用作累加開關60的開關18與累加器存儲電路17(例如,具有與單位乘法累加電路10的乘積存儲電路16相同電容的電容器17)並聯電連接。累加開關60可以與單位乘法累加電路10的差動開關18相同、大致相似或等同,如圖16中更詳細所示。圖16示出了圖14的單位乘法電路14,增加了累加器存儲電路17,形成迭代單位乘法累加電路11。可選地,累加器存儲電路17的輸出可以通過可選的開關18連接到模數轉換器30。
圖15A示出了存儲在兩個相應的單位存儲元件12中的兩個單位值的乘法。當開關18設置為乘法模式(第一模式)時,乘積P存儲在乘積存儲電路16(電容器16)中,如上面關於圖2和14所述。當開關18被設置為累加模式(第二模式)時,存儲在乘積存儲電路16中的任何電荷與存儲在累加器存儲電路17中的任何電荷共享(組合),類似於圖3所示的累加總和,除了在迭代單位乘法累加電路11中僅存在兩個電容器16、17。通過在存儲元件12中反復提供位,將開關18設置為乘法模式,將表示存儲元件12的位乘積的電荷存儲在乘積存儲電路16中,並且將開關18設置為累加模式以組合電容器16和電容器17中的電荷,可以在兩個電容器中累加多個位乘積。
圖15B示出了簡單的混合迭代單位乘法累加電路11(iqmac 11),其包括單位乘法累加電路10,該單位乘法累加電路提供存儲在乘積存儲電路16(電容器16)中的位乘積,該位乘積的值被模數轉換器30數字化(數字化為1或0數字位乘積)。在一些實施例中,如圖15C所示,單位乘法累加電路10實際上產生的電壓是數字電壓,在這種情況下,不需要乘積存儲電路16和單獨的模數轉換器30。數字位累加器32接收每個數字位乘積,並且將其與累加數字存儲電路34(例如,存儲器或寄存器)中的多位累加數字值組合。每個組合包括縮放累加數字存儲電路34中的累加數字值。將數字位乘積與累加數字值組合可以包括:如果數字位乘積是1並且累加數字值是0,則將值存儲在累加數字存儲電路中;如果數字位乘積是1並且累加數字值是非0,則保持相同的累加數字值;或者如果乘積是0,則將累加數字值縮放2,如下面進一步描述的。該組合可以用簡單的數字電路來實現,例如,具有數字移位電路36的狀態機(例如,二次分頻電路)。這種混合迭代單位乘法累加電路11不需要匹配的電容器16和17。在一些實施例中,例如,與圖15A的電容器16和17以及多位ADC 30相比,具有數字移位電路36和累加數字存儲電路34的合適狀態機的尺寸可以相對較小。特別地,在諸如圖15B和15C等實施例中,不需要多位ADC 30,減小了iqmac 11的電路尺寸並減少了操作所需的時間和功率。
如圖16所示,通過將單個位B施加到位乘法電路14的一個輸入,並且將多位值A的位(在這個示例中為A
0到A
3)連續施加到位乘法電路14的另一個輸入,可以將單個位乘以多位值中的多個位。通過將多位值存儲在寄存器(存儲器)56中,連續多路複用來自寄存器56的連續位,並且在控制電路70的控制下將多路複用的位應用到位乘法電路14,連續位應用可以按照從低位到高位的位順序,該控制電路可以為多路複用器50提供位選擇值,並且在寄存器56中提供多位值A。
如圖17所示,通過首先在步驟100提供iqmac 11,然後在步驟110清除乘積存儲電路16和累加器存儲電路17(例如,將其值設置為零,例如,通過用清除電路C將其接地,如圖4A-4C所示),可以將單位B乘以多位值A。在步驟102中,控制電路70向存儲元件12提供單位值B,並在寄存器56中提供多位值A,並在步驟115中將位計數值N設置為零。步驟102和110可以以任何順序進行。在步驟120中,多路複用器50選擇多位值A的位N,並且在步驟125中,在控制電路70的控制下,開關18被設置為乘法(第一)模式。在步驟130中,位乘法器14將多位值A的位N乘以位B,並且將乘積存儲在乘積存儲電路16中。然後,在步驟135中,開關18被設置為累加(第二)模式,並聯連接存儲電路,使得在步驟140中,乘積存儲電路16和累加器存儲電路17中的任何電荷組合並在乘積和累加器存儲電路16、17之間共享。然後在步驟145中測試位計數N,以發現多位值A的所有位是否都乘以了位B。如果多位值A的所有位都沒有乘以位B,則在步驟150中遞增N(例如,通過控制電路70)。如果多位值A的所有位都乘以了位B(測試步驟145),則該過程完成,並且對應於乘積的值存儲在累加器存儲電路17中。可選地,在開關18的控制下,在步驟155,模數轉換器30將累加的乘積轉換成數字值。例如,迭代單位乘法累加電路11的輸出(V
ACC)本身可以切換,例如,使用串聯開關電路15,並被施加到模數電路30。如果A的所有位沒有乘以位B,則位計數N遞增,並且重複步驟120到145,直到A的所有位都相乘。然後可以進行新的乘法。
在一些實施例中,可以為第二多位值B的每個位以及同時相乘的第二多位值B中的每個位提供迭代單位乘法累加電路11。每個迭代單位乘法累加電路11然後累加對應於圖6中每行或乘積的總和。因此,在這個示例中,四個迭代單位乘法累加電路11均累加對應於圖6所示的一行計算的值。圖18示出了累加乘積的模擬求和。每個累加的乘積(對應於圖6的一行)例如用電壓乘法器縮放(乘以對應於該行的2的冪),然後相加,例如,如圖7-9所示。如圖19所示,每個累加的乘積可以用模數轉換器30數字化,用移位電路縮放,然後使用數字加法器54在數字上求和。頂行縮放(乘以)2
0=1或移位0位,下一行縮放(乘以)2
1=2或移位1位,隨後的一行縮放(乘以)2
2=4或移位2位,最後一行縮放(乘以)2
3=8或移位3位。
根據本發明的一些實施例,通過迭代地將iqmac 11應用於多位值B的每個位,多位值B可以乘以多位值A,使得僅一個迭代的單位乘法累加電路11用於計算整個乘積。圖20示出了在控制電路70的控制下用多路複用器50代替圖16中的位B的存儲元件12的有用電路。控制電路70可以將多位值B存儲在寄存器56中,利用多路複用器50選擇多位值B的位M,並且將所選擇的位施加到iqmac 11。多位值B的位M乘以多位值A的每個單位乘法迭代地進行,如關於圖17的流程圖所述(例如,在步驟200中)。
如圖21所示,通過首先在步驟100中提供iqmac 11,然後在步驟105中將位計數器M設置為零,可以將多位值B乘以多位值A。然後,步驟200(圖17)的方法針對多位值A和多位值b的所選擇的位M進行。如果多位值B的所有位沒有乘以多位值A(在步驟160中確定),則在步驟165中存儲累加的位乘積,例如,如果該值是電荷,則存儲在電容器中,如果該值是數字的(例如,在步驟155中由模數轉換器30轉換),則存儲在寄存器中,並且位計數值M在步驟175中遞增。多位值B的每個位乘以多位值A的乘積對應於圖6所示的一行多位乘積值。一旦多位值B的所有位都乘以了多位值A,多位值B和多位值A的每個位的乘積可以在步驟175中求和,如參考圖7和8所描述的(例如,利用模擬或數字求和,在對結果求和之前適當注意縮放多位值B的每個位的乘積)。
圖22示出了使用迭代單位乘法累加電路11將兩個8位數字值迭代相乘的混合電路。如圖22所示,控制電路70控制開關18和多路複用器50,以循環通過多位值A和多位值B的位,如圖20和21所示。多位值B和多位值A的位的每個乘積被轉換成數字值,縮放,然後被數字移位累加器52累加(加到現有值上)。如圖23所示,數字移位累加器52可以包括:響應於控制電路70的多路分解器51,用於移位數字化乘積的每一位(以縮放對應於圖6的行的數字化乘積);用於存儲累加乘積的多位寄存器或存儲器13;以及用於將縮放乘積與累加乘積相加並且將總和存儲在寄存器中的加法器54。移位(縮放)可以對應於被選擇用於與多位值A相乘的多位值B的位。在多位乘積的所有位已經與多位值A相乘並且乘積累加之後,數字移位累加器52中的累加值包含多位值A和B的乘積。
圖24執行與圖23相同的功能,除了乘積累加是用模擬電路執行的。如圖24所示,控制電路70控制開關18和多路複用器50循環通過多位值A和多位值B的位,如圖20和21所示。多位值B和多位值A的位的每個乘積縮放(例如,使用電壓乘法器),然後存儲在用模擬多路分解器52選擇的單獨的模擬存儲電路16(例如,電容器)中。一旦存儲了對應於圖6中的行的所有累加乘積,就可以使用類似於圖2-5的電路在一個步驟中對其求和。
根據本發明的一些實施例,對於每個多位乘積,可以如圖22所示用混合迭代單位乘法累加電路11來實現陣列乘法,使得同時計算所有乘積值,但是迭代計算每個乘積值。根據本發明的實施例,這種陣列乘法器可以是快速且低功耗的。
迭代單位乘法累加器11依次計算單位值B和多位值A的位的乘積,依次將每個位對的乘積存儲在乘積存儲電路16中,並且在累加器存儲電路17中累加順序乘積。由於多位值是二進制值,所以每個連續的位乘積的值是先前乘積的值的兩倍。例如,單位值1和多位值111的乘積具有三個連續的1位。第一位的值為1,第二位的值為2,第三位的值為4,對應於該位在數字中的位置。因此,位乘積的順序累加必須提供與位的位值相對應的位的適當縮放。
每當乘積存儲電路16與累加器存儲電路17並聯電連接時,兩個電路中的電荷作為組合和共享的電荷而均衡。圖25示出了單位值B乘以兩位值A的每個可能結果的電荷組合和均衡。如果B具有零值,則所有乘積為零,並且任何累加的電荷同樣為零(圖25中未示出)。這些數字是用二進制記數法寫的。
如果B是1,A等於00,則左上角的列說明了這個過程。電壓C
M是存儲在乘積存儲電路16中的電荷,電壓C
A是相對於對應於存儲在累加器存儲電路17中的一個乘積值的電荷的累加電荷。在清除週期0中,清除乘積存儲電路16和累加器存儲電路17。在週期1中,A(0)的位0乘以B(1),得到零乘積,存儲在乘積存儲電路16中,然後在累加器存儲電路17中累加,這兩者都存儲零電荷。在週期2中,A(0)的位1乘以B(1),得到零乘積,存儲在乘積存儲電路16中,然後在累加器存儲電路17中累加,再次作為零電荷。在週期3中,模數轉換器30將累加器存儲電路17中的累加電荷(零電荷)轉換為零。
如果B是1,A等於01,右上方的列說明了這個過程。在清除週期0中,清除乘積存儲電路16和累加器存儲電路17。在週期1中,在乘法模式中,A(1)的位0乘以B(1),得到乘積1,作為一個電荷存儲在乘積存儲電路16中。因為乘積存儲電路16是電容等於累加器存儲電路17的電容的電容器,所以其間的並聯連接(在累加模式下由開關18啟動)使電容加倍,因此每個電容器中的電荷和電容器的電壓減半,使得累加器存儲電路17存儲1/2的相對電荷。在週期2中,A(0)的位1乘以B(1),得到零乘積,在乘法模式下存儲在乘積存儲電路16中,然後在累加模式下累加在累加器存儲電路17中。這種組合將累加器存儲電路17中的1/2的電荷與乘積存儲電路16中的零電荷組合,將每個電路中的電荷和電壓減少1/2,使得累加器存儲電路17具有四分之一的相對電荷和電壓。在週期3中,電荷縮放4倍(等於兩位二進制數字值可以存儲的值的數量,並且模數轉換器30將累加器存儲電路17中的累加電荷轉換為1(四乘以四分之一),即B=1和A=01的乘積(十進制記法中的1)。
如果B是1,A等於10,則左下列說明了這個過程。在清除週期0中,清除乘積存儲電路16和累加器存儲電路17。在週期1中,A(0)的位0乘以B(1),得到零乘積,作為零電荷存儲在乘積存儲電路16中。在週期2中,A(1)的位1乘以B(1),得到一個乘積,在乘法模式下存儲在乘積存儲電路16中,然後在累加器模式下累加在累加器存儲電路17中。這種組合將累加器存儲電路17中的電荷零與乘積存儲電路16中的電荷1組合,使得累加器存儲電路17具有1/2的相對電荷和電壓。在週期3中,電荷被縮放4倍,模數轉換器30將累加器存儲電路17中的累加電荷轉換成2(四乘以1/2),即B=1和A=10的乘積(十進制記法中的2)。
如果B是1,A等於11,則右下列說明了這個過程。在清除週期0中,清除乘積存儲電路16和累加器存儲電路17。在週期1中,A(1)的位0乘以B(1),得到一個乘積,在乘法模式下作為一個電荷存儲在乘積存儲電路16中,在累加器模式下用累加器存儲電路17累加,作為1/2的電荷和電壓。在週期2中,A(1)的位1乘以B(1),得到乘積1,存儲在乘積存儲電路16中,然後累加在累加器存儲電路17中。這種組合將累加器存儲電路17中的1/2的電荷與乘積存儲電路16中的電荷1組合,使得累加器存儲電路17具有四分之三的相對電荷和電壓。在週期3中,電荷被縮放4倍,模數轉換器30將累加器存儲電路17中的累加電荷轉換為3(四乘以四分之三),即B=1和A=11的乘積(十進制記法中的3)。
圖26A和26B示出了用於四位二進制值A的相同過程。乘積存儲電路16中的乘積電壓(電荷)在對應於A值的每一列對的左側示出,累加器存儲電路17中的累加電壓(電荷)在對應於所指示的週期的A值的每一列對的右側示出。對於A=0000,所有乘積和累計電荷都為零,因此累計值為零。
對於A=0001,存儲在乘積存儲電路16中的第一個乘積是1,因為B是1,A的位0是1。由於乘積1在乘積存儲電路16和累加器存儲電路17之間平均分配,所以累加器存儲電路17存儲1/2的相對值。此後,乘積為零,每次與乘積存儲電路16中的電荷共享時,累加器存儲電路17中的電荷下降1/2,使得電荷在週期2中減少到四分之一,在週期3中減少到八分之一,在週期4中減少到十六分之一。由於A有四位,因此累加電荷縮放16倍,所得乘積等於十六分之一乘以16或0001(十進制1)。
對於A=0010,第一個乘積是零,因為A的位0是0,使得第一個累加值是零。由於乘積電荷在乘積存儲電路16和累加器存儲電路17之間平均分配,所以第二個乘積(A的位1)是1,相應的累加相對電荷是1/2。此後,乘積為零,因為A的位為零,並且每次與乘積存儲電路16中的電荷共享時,累加器存儲電路17中的電荷下降1/2,使得電荷在週期3中減少到四分之一,在週期4中減少到八分之一。累加電荷縮放16倍,所得乘積等於八分之一乘以16或0010(十進制值2)。
對於A=0011,第一個乘積是1,第一累加值是1/2,因為電荷在乘積存儲電路16和累加器存儲電路17之間平均分配。第二個乘積(A的位1)是1,相應的累加相對電荷是四分之三,因為乘積存儲電路16中的電荷1與累加器存儲電路17中的電荷1/2平均分配。此後,乘積為零,並且每次與乘積存儲電路16中的電荷共享時,累加器存儲電路17中的電荷下降1/2,使得電荷在週期3中減少到八分之三,在週期4中減少到十六分之三。累加電荷縮放16倍,所得乘積等於十六分之三乘以16或0011(十進制值3)。
對於A=0100,第一個乘積為零,第一累加值為零。第二個乘積也是零,因為A的位1是0,所以第二累加值也是零。第三個乘積(週期3中A的位2)是1,相應的累加相對電荷是1/2,因為電荷在存儲1的乘積存儲電路16和存儲0的累加器存儲電路17之間平均分配。此後,乘積為零,每次與乘積存儲電路16中的電荷共享時,累加器存儲電路17中的電荷下降1/2,使得在週期4中電荷減少到四分之一。累加電荷縮放16倍,所得乘積等於四分之一乘以16或0100(十進制值4)。
對於A=0101,第一個乘積是1,第一累加值是1/2,因為電荷在乘積存儲電路16和累加器存儲電路17之間平均分配,相對值為1/2。第二個乘積(週期2)是零,因為A的位1是0,使得累加值是0和1/2的平均值,等於四分之一。第三個乘積(週期3)是1,因為A的位2是1,使得累加值是四分之一和1的平均值,等於八分之五。第四個乘積(週期4)是零,因為A的位3是0,使得累加值是0和八分之五的平均值,等於十六分之五。在縮放16倍之後,所得乘積等於16分之5乘以16或0101(十進制5)。
對於A=0110,第一個乘積為零,第一累加值為零。第二個乘積(週期2)是1,因為A的位1是1,使得累加值是0和1的平均值,等於1/2。第三個乘積(週期3)是1,因為A的位2是1,使得累計值是1和1/2的平均值,等於四分之三。第四個乘積(週期4)是零,因為A的位3是零,使得累加值是0和四分之三的平均值,等於八分之三。在縮放16倍之後,所得乘積等於八分之三乘以16或0110(十進制6)。
對於A=0111,第一個乘積是1,第一累加值是1/2。第二個乘積(週期2)是1,因為A的位1是1,使得累加值是0和1/2的平均值,等於四分之三。第三個乘積(週期3)是1,因為A的位2是1,使得累加值是1和3/4的平均值,等於7/8。第四個乘積(週期4)是零,因為A的位3是零,使得累加值是0和7/8的平均值,等於7/16。在縮放16倍之後,所得乘積等於7/16乘以16或0111(十進制7)。
圖26B示出了值1000到1111的累加結果。累加乘積與圖26A所示的相同,除了最後的位乘積是1,使得週期3的累加值用1平均,以提供最後的結果,如圖26B所示。
圖25-26B在數學上展示了如圖16-19所示的單位B乘以多位值A的位乘法的迭代電荷累加。通過對多位值B的每一位重複該過程(如圖20和21中所述),可以以高速和低功率計算兩個多位值。
可以在數學上來概括計算。給定B位和具有N位的多位值A,其中,A(i)是多位值A的位i,i=0時第一位(LSB的最低有效位)是A(0),最後一位(最高有效位或MSB)是A(N-1),累加乘積為:
在具有M位(第一位(最低有效位)是B(0)並且最後一位(最高有效位或MSB)是B(M-1))的多位值B乘以具有N位(對於i=0,第一位(最低有效位)是A(0)並且最後一位(最高有效位或MSB)是A(N-1))的多位值A的實施例中,A×B的累加乘積是:
如果B(j)等於零,則i上的求和不需要完成,節省了計算的時間和能量。
本發明的實施例不限於附圖中示出的和本文描述的具體示例。熟練的設計者將容易理解,可以採用模擬和數字電路的各種實現來實現所描述的操作,並且這些實現包括在本發明的實施例中。
本發明的實施例可以用在神經網絡、模式匹配計算機或機器學習計算機中,並且以降低的功率和硬體要求來提供高效和及時的處理。這樣的實施例可以包括計算加速器,例如,神經網絡加速器、模式匹配加速器、機器學習加速器或為靜態或動態處理工作負載設計的人工智能計算加速器。
在描述了實施例的某些實現之後,現在對於本發明所屬技術領域中具有通常知識者來說顯而易見的是,可以使用結合了本發明的概念的其他實現。因此,本發明不應限於某些實現,而是應僅由所附申請專利範圍的精神和範圍來限制。
在整個說明書中,在設備和系統被描述為具有、包括或包含特定元件的情況下,或者在過程和方法被描述為具有、包括或包含特定步驟的情況下,可以設想,另外,存在所發明的技術的設備和系統,這些設備和系統基本上由所述元件組成或者由所述元件組成,並且存在根據所發明的技術的過程和方法,這些過程和方法基本上由所述處理步驟組成或者由所述處理步驟組成。
應當理解,只要所發明的技術保持可操作,步驟的順序或執行某個動作的順序並不重要。此外,在某些情況下,兩個或多個步驟或動作可以同時進行。已經具體參照本發明的某些實施例詳細描述了本發明,但是應當理解,在所附申請專利範圍的精神和範圍內可以進行變化和修改。
綜上所述,本發明所揭露之技術手段確能有效解決習知等問題,並達致預期之目的與功效,且申請前未見諸於刊物、未曾公開使用且具長遠進步性,誠屬專利法所稱之發明無誤,爰依法提出申請,懇祈 鈞上惠予詳審並賜准發明專利,至感德馨。
惟以上所述者,僅為本發明之數種較佳實施例,當不能以此限定本發明實施之範圍,即大凡依本發明申請專利範圍及發明說明書內容所作之等效變化與修飾,皆應仍屬本發明專利涵蓋之範圍內。
〔本發明〕
10:qmac/單位乘法累加電路
100:提供qmac步驟
102:提供A和B值步驟
105:設置B位計數M=0步驟
108:選擇B bit
M步驟
11:iqmac/迭代單位乘法累加電路
110:清除C
M和C
A步驟
115:設置A位計數N=0步驟
12:單位存儲元件
120:選擇A bit
N步驟
125:將開關設置為乘法模式步驟
13:多位存儲元件
130:乘以位N並存儲乘積的步驟
135:將開關設置為累加模式步驟
14:位乘法器/位乘法電路
140:累加乘積步驟
145:測試所有A位相乘的步驟
15、15A、15B:串聯開關電路
150:設置A位計數N到N+1步驟
155:模數轉換步驟
16:電容器/模擬存儲電路/乘積存儲電路
160:測試所有B位相乘的步驟
165:存儲位乘積M
17:電容器/模擬存儲電路/累加器存儲電路
170:設置B位計數M至M+1步驟
175:對位乘積M求和的步驟
18:開關/開關電路
19:清除/清除電路
20:混合乘法累加電路
200:將多位值乘以單位的步驟
21:乘積列
22:混合多位乘法器
24:混合矩陣乘法累加電路
30:模數轉換器
32:數字位累加器
34:累加數字存儲電路
36:狀態機和數字移位電路
40:運算放大器/op amp
50:多路複用器
51:多路分解器
52:數字移位累加器
54:加法器
56:寄存器/存儲器
60:累加開關
70:控制電路
C:清除電路
M:乘法器電路/乘法器
O:輸出值
P:乘積
S:開關/開關電路
VM:電壓乘法器
通過參考結合附圖進行的以下描述,本發明的前述和其他目的、方面、特徵和優點將變得更加明顯並且更好理解,其中:
[圖1A]和[圖1B]數學地示出了有助於理解本發明的實施例的矩陣乘法運算;
[圖1C]和[圖1D]示出了有助於理解本發明的實施例的簡化計算機程序的矩陣乘法運算;
[圖2]是根據本發明的說明性實施例的單位乘法累加電路的功能示意圖;
[圖3]是根據本發明的說明性實施例的圖2所示的單位乘法累加電路的一維陣列的示意圖;
[圖4A]是根據本發明的說明性實施例的具有開關電路和清除電路的單位乘法累加電路的功能示意圖;
[圖4B]是根據本發明的說明性實施例的圖4A的功能示意圖的抽象;
[圖4C]是根據本發明的說明性實施例的用於操作圖4A的單位乘法累加電路的時序圖;
[圖5]是根據本發明的說明性實施例的圖4A中所示的單位乘法累加電路的一維陣列的示意圖;
[圖6]圖示了有助於理解本發明的實施例的具有乘法累加值的乘法運算;
[圖7]是根據本發明的說明性實施例的具有數字求和電路的單位乘法累加電路的二維陣列的示意圖;
[圖8]是根據本發明的說明性實施例的具有模擬求和電路的單位乘法累加電路的二維陣列的示意圖;
[圖9]-[圖10]是根據本發明的說明性實施例的模擬求和電路的示意圖;
[圖11A]是根據本發明的說明性實施例的向量矩陣混合乘法累加電路的示意圖,
[圖11B]示出了圖11A的向量矩陣混合乘法累加電路中的矩陣值;
[圖12]是根據本發明的說明性實施例的向量矩陣混合乘法累加電路的示意圖,該電路包括具有如圖8所示的模擬求和電路的單位乘法累加電路的二維陣列;
[圖13]是根據本發明的說明性實施例的用展示了低功率單位乘法的模擬電壓控制的級聯開關的抽象示意圖;
[圖14]是根據本發明的說明性實施例的用低功率模擬電壓控制的開關的示意圖;
[圖15A]是根據本發明的說明性實施例的具有累加電容器的分時迭代乘法累加開關的示意圖;
[圖15B]是根據本發明的說明性實施例的具有乘積存儲電容器和數字累加器的分時迭代乘法累加開關的示意圖;
[圖15C]是根據本發明的說明性實施例的具有數字累加器的分時迭代乘法累加開關的示意圖;
[圖16]是根據本發明的說明性實施例的具有控制器和輸入多路複用器的分時迭代乘法累加開關的示意圖;
[圖17]是根據本發明的說明性實施例的方法的流程圖;
[圖18]是根據本發明的說明性實施例的具有模擬加法器的多個分時乘法累加開關的示意圖;
[圖19]是根據本發明的說明性實施例的具有數字加法器的多個分時乘法累加開關的示意圖;
[圖20]是根據本發明的說明性實施例的具有控制器和兩個輸入多路複用器的分時迭代乘法累加開關的示意圖;
[圖21]是根據本發明的說明性實施例的方法的流程圖;
[圖22]是根據本發明的說明性實施例的用於多位乘法的分時迭代單位乘法累加開關和數字移位累加器的示意圖;
[圖23]是根據本發明的說明性實施例的具有模擬存儲器和模擬加法器的用於多位乘法的分時單位迭代乘法累加開關的示意圖;
[圖24]是根據本發明的說明性實施例的具有數字存儲器和數字加法器的用於多位乘法的分時單位乘法累加開關的示意圖;
[圖25]是示出根據本發明的說明性實施例的兩位值的分時乘法累加的表格;以及
[圖26A]和[圖26B]是示出根據本發明的說明性實施例的四位值的分時乘法累加的表格。
當結合附圖時,根據下面闡述的詳細描述,本發明的特徵和優點將變得更加明顯,在附圖中,相同的附圖標記始終表示相應的元件。在附圖中,相同的附圖標記通常表示相同的、功能相似的和/或結構相似的元件。附圖不一定是按比例繪製的。
10:qmac/單位乘法累加電路
11:iqmac/迭代單位乘法累加電路
12:單位存儲元件
14:位乘法器/位乘法電路
16:電容器/模擬存儲電路/乘積存儲電路
17:電容器/模擬存儲電路/累加器存儲電路
18:開關/開關電路
30:模數轉換器
60:累加開關
S:開關/開關電路
Claims (21)
- 一種分時乘法累加電路,包括: 乘積存儲電路; 乘法電路,其可操作以接收第一輸入值,接收第二輸入值,產生第一輸入值和第二輸入值的乘積,並且將乘積存儲在所述乘積存儲電路中; 累加器存儲電路,用於存儲累加值;以及 累加開關,其將所述乘積存儲電路連接到所述累加器存儲電路,所述累加開關可操作以將所述乘積存儲電路和所述累加器存儲電路並聯的電連接或者將所述乘積存儲電路與所述累加器存儲電路的電斷開。
- 如請求項1所述之分時乘法累加電路,包括第一多路複用器,所述第一多路複用器可操作以選擇輸入到所述第一多路複用器的多個第一輸入值中的一個,並且其中,所述乘法電路可操作以從所述第一多路複用器接收所述多個第一輸入值中所選擇的一個,接收所述第二輸入值,並且產生所述多個第一輸入值中所選擇的一個和所述第二輸入值的乘積。
- 如請求項2所述之分時乘法累加電路,包括第二多路複用器,所述第二多路複用器可操作以選擇輸入到所述第二多路複用器的多個第二輸入值中的一個,其中,所述乘法電路可操作以從所述第二多路複用器接收所述第二輸入值中所選擇的一個,並且產生所述多個第一輸入值中所選擇的一個和所述第二輸入值中所選擇的一個的乘積。
- 如請求項1所述之分時乘法累加電路,其中,所述乘積存儲電路和所述累加器存儲電路是存儲電荷的模擬存儲電路。
- 如請求項4所述之分時乘法累加電路,其中,所述乘積存儲電路和所述累加器存儲電路是電容器。
- 如請求項1所述之分時乘法累加電路,其中,所述乘法電路是單位乘法電路。
- 如請求項1所述之分時乘法累加電路,其中,所述乘法電路包括串聯連接的串聯開關電路。
- 如請求項7所述之分時乘法累加電路,其中,所述累加開關是與所述乘法電路的所述串聯開關電路串聯連接的串聯開關電路。
- 如請求項7或8所述之分時乘法累加電路,其中,所述乘法電路包括串聯連接的串聯開關電路,並且其中,所述乘法電路和所述累加開關的一個或多個串聯開關電路是差動開關。
- 如請求項1所述之分時乘法累加電路,其中,操作所述累加開關以並聯連接所述乘積存儲電路和所述累加器存儲電路,將所述累加器存儲電路中的累加值與所述乘積存儲電路中的乘積組合,以提供存儲在所述乘積存儲電路和所述累加器存儲電路中的組合值。
- 如請求項1所述之分時乘法累加電路,包括控制電路,所述控制電路可操作以依次(i)向所述乘法器提供第一輸入值和第二輸入值,並且切換所述累加開關,以在所述乘積存儲電路中存儲所述乘積,以及(ii)切換所述累加開關,以將所述乘積存儲電路和所述累加器存儲電路並聯電連接,並且將所述乘積存儲電路中的所述乘積與所述累加值組合,以提供存儲在所述乘積存儲電路和所述累加器存儲電路中的組合值。
- 一種混合矩陣乘法器,包括: 根據前述如請求項1至11項中任一項所述之分時乘法累加電路;以及 加法器,用於將所述分時乘法累加電路的累加值相加。
- 如請求項12所述之混合矩陣乘法器,其中,所述累加值是模擬值,並且包括模數轉換器,用於將所述累加值轉換成數字值,並且其中,所述加法器是數字加法器。
- 如請求項12所述之混合矩陣乘法器,其中,所述累加值是模擬值,並且其中,所述加法器是模擬加法器。
- 一種矩陣乘法的混合方法,包括: a)提供具有N位的多位值; b)提供根據如請求項1至11項中任一項所述之分時乘法累加電路; c)提供所述多位值的輸入位,向所述乘法器提供第二輸入位,並且設置所述累加開關,以將所述乘積存儲電路連接到所述分時乘法累加電路,並且將所述乘積存儲電路與所述累加器存儲電路斷開; d)將所述多位值的所述輸入位乘以所述第二輸入位,以形成存儲在所述乘積存儲電路中的位乘積; e)切換所述累加開關,以將所述乘積存儲電路與所述分時乘法累加電路斷開,並且將所述乘積存儲電路連接到所述累加器存儲電路,並且將所述乘積存儲電路中的所述乘積與所述累加值組合,以在所述累加器存儲電路中產生組合值;以及 f)重複步驟c)-e)N次,直到按位順序提供所述多位值的所有位,以產生所述多位值和所述第二輸入位的乘積。
- 一種矩陣乘法的混合方法,包括: a)提供具有N位的第一多位值和具有M位的第二多位值; b)提供根據如請求項1至11項中任一項所述之M個分時乘法累加電路; c)向所述M個分時乘法累加電路中的每一個的所述乘法器提供所述第一多位值的輸入位並且提供所述第二多位值的不同的第二輸入位,並且設置所述累加開關,以將所述乘積存儲電路連接到所述分時乘法累加電路,並且將所述乘積存儲電路與所述M個分時乘法累加電路中的每一個的所述累加器存儲電路斷開; d)將所述多位值的所述輸入位乘以所述第二輸入位,以與所述M個分時乘法累加電路中的每一個形成存儲在所述乘積存儲電路中的位乘積; e)切換所述累加開關,以將所述乘積存儲電路與所述分時乘法累加電路斷開,並且將所述乘積存儲電路連接到所述累加器存儲電路,並且將所述乘積存儲電路中的所述乘積與所述累加值組合,以在所述M個分時乘法累加電路中的每一個的所述累加器存儲電路中產生組合值; f)對所述第一多位值的所述N位中的每一位重複步驟c)-e),直到按位順序提供所述第一多位值的所有位; g)縮放所述M個分時乘法累加電路中的每一個的所述累加值;以及 h)將所述M個縮放的分時乘法累加電路中的每一個的所述累加值相加,以產生乘積。
- 一種矩陣乘法的混合方法,包括: a)提供具有N位的第一多位值和具有M位的第二多位值; b)提供根據如請求項1至11項中任一項所述之分時乘法累加電路; c)向所述乘法器提供所述第一多位值的輸入位並且提供所述第二多位值的第二輸入位,並且設置所述累加開關,以將所述乘積存儲電路連接到所述分時乘法累加電路,並且將所述乘積存儲電路與所述分時乘法累加電路的所述累加器存儲電路斷開; d)將所述第一多位值的所述輸入位乘以所述第二多位值的所述第二輸入位,以形成存儲在所述乘積存儲電路中的位乘積; e)切換所述累加開關,以將所述乘積存儲電路與所述分時乘法累加電路斷開,並且將所述乘積存儲電路連接到所述累加器存儲電路,並且將所述乘積存儲電路中的所述乘積與所述累加值組合,以在所述M個分時乘法累加電路中的每一個的所述累加器存儲電路中產生組合值; f)對所述第一多位值的所述N位中的每一位重複步驟c)-e),直到按位順序提供所述第一多位值的所有位; g)縮放所述分時乘法累加電路的所述累加值,以產生縮放值; h)將所述縮放值與多位乘積相加;以及 i)重複步驟c)-h),以產生多位乘積。
- 一種混合矩陣乘法器,包括: 根據如請求項1至11項中任一項所述之分時乘法累加電路; 存儲電路,用於存儲累加值; 控制電路,其可操作以: 反復並且依次(i)向所述乘法器提供第一輸入值並且提供第二輸入值,設置所述累加開關,以將所述乘積存儲電路連接到所述乘法器,並且將所述乘積存儲電路與所述累加器存儲電路斷開,以及(ii)切換累加開關,以將所述乘積存儲電路與所述分時乘法累加電路電斷開,並且將所述乘積存儲電路電連接到所述累加器存儲電路,以將所述乘積存儲電路中的所述乘積與所述累加值組合,並且提供存儲在所述累加器存儲電路和所述乘積存儲電路中的組合值;以及 將所述累加值存儲在存儲電路中。
- 如請求項18所述之混合矩陣乘法器,包括: 存儲電路,每個存儲電路用於存儲累加值;以及 加法器,用於將所述存儲電路中的所述累加值相加, 其中,所述控制電路可操作以提供不同的第一輸入值,並且提供不同的第二輸入值,並且將累加值存儲在每個存儲電路中。
- 一種分時乘法累加電路,包括: 乘法電路,其可操作以接收第一輸入值,接收第二輸入值,並且產生所述第一輸入值和所述第二輸入值的乘積; 累加數字存儲電路,其可操作以存儲累加的數字值;以及 數字位累加器,其可操作以接收所述乘積,將所述乘積與存儲在所述累加數字存儲電路中的所述累加數字值組合,並且輸出所述累加數字值, 其中,將所述乘積與所述累加數字值組合包括(i)如果所述乘積是1並且所述累加數字值是0,則將值存儲在所述累加數字存儲電路中,(ii)如果所述乘積是1並且所述累加數字值是非0,則保持相同的累加數字值,或者(iii)如果所述乘積是0,則將所述累加數字值縮放2。
- 如請求項20所述之分時乘法累加電路,包括: 乘積存儲電路,其可操作以接收所述乘積;以及 一位模數轉換器,其連接到所述乘積存儲電路和所述數字位累加器; 其中,所述乘積存儲電路可操作以將所述乘積提供給所述一位模數轉換器,所述一位模數轉換器可操作以接收所述乘積,將所述乘積轉換成數字位乘積,並且將所述數字位乘積提供給所述數字位累加器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
WOPCT/IB2022/050635 | 2022-01-25 | ||
PCT/IB2022/050635 WO2023144577A1 (en) | 2022-01-25 | 2022-01-25 | Iterative hybrid matrix multiplier |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202331552A true TW202331552A (zh) | 2023-08-01 |
Family
ID=80218661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111150340A TW202331552A (zh) | 2022-01-25 | 2022-12-28 | 迭代混合矩陣乘法器 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW202331552A (zh) |
WO (1) | WO2023144577A1 (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11055062B1 (en) * | 2018-02-12 | 2021-07-06 | Areanna Inc. | Switched capacitor vector-matrix multiplier |
US10592209B1 (en) * | 2018-10-17 | 2020-03-17 | International Business Machines Corporation | Charge-scaling multiplier circuit |
-
2022
- 2022-01-25 WO PCT/IB2022/050635 patent/WO2023144577A1/en unknown
- 2022-12-28 TW TW111150340A patent/TW202331552A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023144577A1 (en) | 2023-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2022533539A (ja) | ビットオーダバイナリ加重乗算器/積算器 | |
US20230107964A1 (en) | Methods of performing processing-in-memory operations, and related devices and systems | |
CN112181895B (zh) | 可重构架构、加速器、电路部署和计算数据流方法 | |
Azamat et al. | Quarry: Quantization-based ADC reduction for ReRAM-based deep neural network accelerators | |
US20170168775A1 (en) | Methods and Apparatuses for Performing Multiplication | |
US20210342121A1 (en) | Low area multiply and accumulate unit | |
TW202331552A (zh) | 迭代混合矩陣乘法器 | |
US20220247425A1 (en) | Architecture for Multiplier Accumulator using Unit Elements for multiplication, bias, accumulation, and analog to digital conversion over a shared Charge Transfer Bus | |
CN114168107A (zh) | 一种存内精度可调的矢量矩阵乘法运算方法及运算器 | |
CN111988031B (zh) | 一种忆阻存内矢量矩阵运算器及运算方法 | |
US11977936B2 (en) | Differential analog multiplier-accumulator | |
US20220206754A1 (en) | Scaleable Analog Multiplier-Accumulator with Shared Result Bus | |
WO2023084299A1 (en) | Hybrid matrix multiplier | |
CN113571109A (zh) | 存储器电路及其操作方法 | |
US11567730B2 (en) | Layout structure for shared analog bus in unit element multiplier | |
US20220244914A1 (en) | Differential Unit Element for multiply-accumulate operations on a shared charge transfer bus | |
Bochev | Distributed arithmetic implementation of artificial neural networks | |
US11476866B2 (en) | Successive approximation register using switched unit elements | |
US20220244915A1 (en) | Layout Structure for Shared Analog Bus in Unit Element Multiplier | |
CN115658013B (zh) | 向量乘加器的rom存内计算装置和电子设备 | |
US20240143541A1 (en) | Compute in-memory architecture for continuous on-chip learning | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 | |
US11983507B2 (en) | Differential analog multiplier for a signed binary input | |
CN115906735B (zh) | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 | |
US20220382517A1 (en) | Analog Multiplier Accumulator with Unit Element Gain Balancing |