TWI688871B - 矩陣乘法裝置及其操作方法 - Google Patents
矩陣乘法裝置及其操作方法 Download PDFInfo
- Publication number
- TWI688871B TWI688871B TW108130520A TW108130520A TWI688871B TW I688871 B TWI688871 B TW I688871B TW 108130520 A TW108130520 A TW 108130520A TW 108130520 A TW108130520 A TW 108130520A TW I688871 B TWI688871 B TW I688871B
- Authority
- TW
- Taiwan
- Prior art keywords
- value
- matrix
- product
- circuit
- accumulation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
- G06F1/3228—Monitoring task completion, e.g. by use of idle timers, stop commands or wait commands
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3243—Power saving in microcontroller unit
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30109—Register structure having multiple operands in a single register
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/4818—Threshold devices
- G06F2207/4824—Neural networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
Abstract
一種矩陣乘法裝置及其操作方法。矩陣乘法裝置包括計算電路、控制電路、乘法電路以及路由電路。計算電路產生乘積累加值。控制電路接收第一矩陣的多個第一元素值。控制電路依照數值種類將這些第一元素值歸納為至少一個歸納數值。乘法電路在低功率模式中將所述歸納數值各自乘以第二矩陣的第二元素值,以獲得至少一個乘積值。路由電路在低功率模式中將所述乘積值的每一個傳輸給計算電路中的至少一個對應計算電路。
Description
本發明是有關於一種計算電路,且特別是有關於一種矩陣乘法裝置及其操作方法。
在一些電子電路的運作過程中,需要進行矩陣乘法運算,即乘積累加(multiply accumulate, MAC)運算。舉例來說,神經網路(neural network)模型電路需要大量乘積累加運算。一般而言,乘積累加運算極為耗電。
本發明提供一種矩陣乘法裝置及其操作方法,以將第一矩陣乘以第二矩陣而產生乘積矩陣。
本發明的一實施例提供一種矩陣乘法裝置。此矩陣乘法裝置可以將第一矩陣乘以第二矩陣而產生乘積矩陣。矩陣乘法裝置包括多個第一計算電路、一個控制電路、一個乘法電路以及一個路由電路。第一計算電路被配置為產生在乘積矩陣的第一行(column)中的多個第一乘積累加值。控制電路被配置為在第一期間接收在第一矩陣的一行中的多個第一元素值。控制電路依照數值種類將這些第一元素值歸納為至少一個第一歸納數值。當所述至少一個第一歸納數值的第一種類數量小於或等於第一種類門檻時,控制電路控制這些第一計算電路操作於低功率模式。當第一種類數量大於第一種類門檻時,控制電路控制這些第一計算電路操作於正常模式。乘法電路被配置為在低功率模式中將所述至少一個第一歸納數值各自乘以在第二矩陣的一列(row)中的第二元素值,以獲得至少一個第一乘積值。路由電路耦接至乘法電路,以接收所述至少一個第一乘積值。路由電路在低功率模式中將所述至少一個第一乘積值的每一個傳輸給這些第一計算電路中的至少一個對應計算電路。
本發明的一實施例提供一種矩陣乘法裝置的操作方法。矩陣乘法裝置被配置為將第一矩陣乘以第二矩陣而產生乘積矩陣。操作方法包括:由多個第一計算電路產生在乘積矩陣的第一行中的多個第一乘積累加值;由控制電路在第一期間接收在第一矩陣的一行中的多個第一元素值;由控制電路依照數值種類將這些第一元素值歸納為至少一個第一歸納數值;當所述至少一個第一歸納數值的第一種類數量小於或等於第一種類門檻時,由控制電路控制這些第一計算電路操作於低功率模式;當第一種類數量大於第一種類門檻時,由控制電路控制這些第一計算電路操作於正常模式;由乘法電路在低功率模式中將所述至少一個第一歸納數值各自乘以在第二矩陣的一列中的第二元素值,以獲得至少一個第一乘積值;以及由路由電路在低功率模式中將所述至少一個第一乘積值的每一個傳輸給這些第一計算電路中的至少一個對應計算電路。
本發明的一實施例提供一種矩陣乘法裝置。此矩陣乘法裝置可以將第一矩陣乘以第二矩陣而產生乘積矩陣。矩陣乘法裝置包括多個計算電路、一個控制電路以及一個路由電路。計算電路被配置為產生在乘積矩陣的第一行中的多個第一乘積累加值,其中這些計算電路包括至少一個第一計算電路以及至少一個第二計算電路。控制電路被配置為在第一期間接收在第一矩陣的一行中的多個第一元素值。控制電路依照數值種類將這些第一元素值歸納為至少一個第一歸納數值。當所述至少一個第一歸納數值的第一種類數量小於或等於第一種類門檻時,控制電路控制這些計算電路操作於低功率模式。所述至少一個第一計算電路在低功率模式中將所述至少一個第一歸納數值各自乘以在第二矩陣的第一行中的第二元素值,以獲得至少一個第一乘積值。路由電路耦接至所述至少一個第一計算電路,以接收所述至少一個第一乘積值。路由電路在低功率模式中將所述至少一個第一乘積值的每一個傳輸給這些計算電路中的至少一個對應計算電路。當第一種類數量大於第一種類門檻時,控制電路控制這些計算電路操作於正常模式。
基於上述,本發明諸實施例所述矩陣乘法裝置可以將第一矩陣乘以第二矩陣而產生乘積矩陣。所述矩陣乘法裝置在第一期間接收在第一矩陣的一行中的多個第一元素值,以及接收在該第二矩陣的一列中的至少一個第二元素值。控制電路依照數值種類將這些第一元素值歸納為至少一個第一歸納數值,然後乘法電路將所述第一歸納數值各自乘以所述第二元素值。因此,對具有相同值的這些第一元素值所進行的重複的乘法運算可以被有效減少。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
在本案說明書全文(包括申請專利範圍)中所使用的「耦接(或連接)」一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)於第二裝置,則應該被解釋成該第一裝置可以直接連接於該第二裝置,或者該第一裝置可以透過其他裝置或某種連接手段而間接地連接至該第二裝置。本案說明書全文(包括申請專利範圍)中提及的「第一」、「第二」等用語是用以命名元件(element)的名稱,或區別不同實施例或範圍,而並非用來限制元件數量的上限或下限,亦非用來限制元件的次序。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。
圖1是一種矩陣乘法裝置100的電路方塊(circuit block)示意圖。矩陣乘法裝置100可以將第一矩陣乘以第二矩陣而產生乘積矩陣。圖1所示矩陣乘法裝置100具有多個計算電路110_1、110_2、…、110_n。計算電路110_1~110_n可以拆解第一矩陣對第二矩陣的乘法,以產生在乘積矩陣的多個乘積累加值。在每一階段中,計算電路110_1~110_n可以取第二矩陣的一個元素值In
x和第一矩陣中的一行(column)的每一個元素值D
1x、D
2x、…、D
nx分別做乘積累加(MAC)運算。舉例來說,請參照圖1與公式1,在第一期間(第一階段),計算電路110_1~110_n可以取第二矩陣的元素值In
1分別乘第一矩陣中的第一行的元素值D
11~D
n1,然後分別將乘積值存到相對應的暫存器(register)裡面(做為乘積累加值)。在第二期間(第二階段),計算電路110_1~110_n可以取第二矩陣的元素值In
2分別乘第一矩陣中的第二行的元素值D
12~D
n2,然後分別將乘積值加入先前的乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到相對應的暫存器裡面。以此類推,直完成第m期間(第m階段)的乘積累加運算。在第m期間的乘積累加運算完成後,計算電路110_1~110_n可以分別從相對應的暫存器提供乘積矩陣的多個乘積累加值Out
11、Out
21、…、Out
n1。
實際上,在許多應用(例如神經網路等)中,矩陣的元素值D
11~D
nm通常經過壓縮(compression)、量化(quantization)以及/或是其他處理,因此在第x階段中的元素值D
1x~D
nx的數值種類的數量可能小於元素值D
1x~D
nx的數值種類的數量。亦即,元素值D
1x~D
nx往往有數值是重複的。對重複的元素值所進行的乘法運算亦是重複的。舉例來說,假設元素值D
1x~D
nx分別為2、2、3、3、2、2、4、4,而元素值In
x為10。計算電路110_1~110_n在第x期間(第x階段)針對元素值D
1x~D
nx分別進行了乘法運算「2*10」、「2*10」、「3*10」、「3*10」、「2*10」、「2*10」、「4*10」與「4*10」。從這個例子可以看出,乘法運算「2*10」重複進行了4次,乘法運算「3*10」重複進行了2次,而乘法運算「4*10」重複進行了2次。一般而言,乘法運算極為耗電。
在此假設元素值D
1x~D
nx的數值種類為k種,其中k>n,且k與n為整數。舉例來說,假設元素值D
1x~D
nx分別為2、2、3、3、2、2、4、4,因為元素值D
1x~D
nx依照數值種類可以被歸納(歸類)為3個歸納數值(即2、3、4),所以k為3(亦即元素值D
1x~D
nx的數值種類為3種)。在滿足這個條件下,若將原本需要的n個乘法運算簡化為k個乘法運算,如此一來可以減少(n-k)個運算乘法,進而降低功耗。
圖2是依照本發明的一實施例的一種矩陣乘法裝置200的電路方塊示意圖。矩陣乘法裝置200可以將第一矩陣乘以第二矩陣而產生乘積矩陣。舉例來說,矩陣乘法裝置200可以計算下述公式2。若所述第二矩陣是1維矩陣,則公式2可以改寫為公式3。
公式2
公式3
於圖2所示實施例中,矩陣乘法裝置200包括多個計算電路210_1、210_2、…、210_n。矩陣乘法裝置200還包括控制電路220、乘法電路230以及路由電路240。當計算電路210_1~210_n操作於正常模式時,計算電路210_1~210_n可以拆解第一矩陣對第二矩陣的乘法,以產生在乘積矩陣的多個乘積累加值。計算電路210_1包括乘法器211、多工器212以及累加電路213。其餘計算電路210_2~210_n可以參照計算電路210_1的相關說明來類推,故不予贅述。
在計算電路210_1中,乘法器211可以在第x期間(階段)中接收在第一矩陣的第x行的元素值D
1x~D
nx中的一個對應元素值D
1x。乘法器211在正常模式中將對應元素值D
1x乘以在第二矩陣的第x列(row)的元素值中的對應元素值IN
x1,以獲得乘積值211a。多工器212耦接至乘法器211,以接收乘積值211a。多工器212耦接至路由電路240,以接收對應乘積值LP
1x。多工器在正常模式中選擇將乘積值211a做為累加對象而輸出給累加電路213。多工器212在低功率模式中選擇將對應乘積值LP
1x做為累加對象而輸出給累加電路213。累加電路213耦接至多工器212,以接收所述累加對象。累加電路213可以將所述累加對象加入先前的對應乘積累加值213a而獲得新的對應乘積累加值213b,並且將新的對應乘積累加值213b存回到相對應的暫存器裡面。在完成m次的乘積累加運算後,累加電路213可以從相對應的暫存器提供乘積矩陣的乘積累加值Out
11。
因此,在正常模式中,計算電路210_1~210_n在每一階段中可以取第二矩陣的一個元素值In
x1和第一矩陣中的一行的每一個元素值D
1x~D
nx分別做乘積累加(MAC)運算。舉例來說,請參照圖1與公式3(或公式2),在第一期間(第一階段),計算電路210_1~210_n可以取第二矩陣的元素值In
11分別乘第一矩陣中的第一行的元素值D
11~D
n1,然後分別將乘積值存到相對應的累加電路裡面(做為乘積累加值)。在第二期間(第二階段),計算電路210_1~210_n可以取第二矩陣的元素值In
21分別乘第一矩陣中的第二行的元素值D
12~D
n2,然後分別將乘積值加入先前的乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到相對應的累加電路裡面。以此類推,直完成第m期間(第m階段)的乘積累加運算。在第m期間的乘積累加運算完成後,計算電路210_1~210_n的累加電路可以分別提供乘積矩陣的第一行中的多個乘積累加值Out
11、Out
21、…、Out
n1。
圖3是依照本發明的一實施例說明一種矩陣乘法裝置的操作方法的流程示意圖。請參照圖2與圖3。控制電路220可以在第x期間(階段)接收在第一矩陣的第x行中的元素值D
1x~D
nx(步驟S305)。控制電路220可以依照數值種類而將元素值D
1x~D
nx歸納為至少一個歸納數值(步驟S310)。舉例來說(但不限於此),控制電路220可以將元素值D
1x~D
nx歸納為歸納數值A、B、..、K。當所述歸納數值的種類數量小於或等於預設的種類門檻時(步驟S315的判斷結果為「是」),控制電路220可以藉由切換訊號SW去控制計算電路210_1~210_n操作於低功率模式(步驟S320)。所述種類門檻可以依照設計需求來決定。計算電路210_1~210_n的乘法器(例如乘法器211)在低功率模式中可以被禁能(disable),以節省功耗。
舉例來說,假設所述種類門檻為3,以及在第x期間的元素值D
1x~D
nx分別為2、2、3、3、2、2、4、4。控制電路220可以依照數值種類而將元素值D
1x~D
nx歸納為3個歸納數值(即2、3、4)。因為所述歸納數值的種類數量小於或等於預設的種類門檻,所以控制電路220可以在第x期間(階段)控制計算電路210_1~210_n操作於低功率模式。
乘法電路230可以在低功率模式中將所述至少一個歸納數值(例如歸納數值A~K)各自乘以在第二矩陣的第x列中的一個元素值IN
x1,以及將乘積值輸出給路由電路240(步驟S325)。在圖2所示實施例中,乘法電路230包括至少一個乘法器。乘法電路230的乘法器可以在低功率模式中將所述至少一個歸納數值(例如歸納數值A~K)各自乘以在第二矩陣中的元素值IN
x1,以獲得所述乘積值。路由電路240耦接至乘法電路230,以接收所述乘積值。路由電路240在低功率模式中將所述乘積值的每一個傳輸給計算電路210_1~210_n中的至少一個對應計算電路(步驟S330)。在圖2所示實施例中,路由電路240包括多個多工器,這些多工器耦接至乘法電路230的乘法器,以接收所述乘積值,而這些多工器的每一個的輸出端耦接至計算電路210_1~210_n中的一個對應計算電路,以提供所述乘積值LP
1x、LP
2x、…、LP
nx中的一個對應乘積值。
舉例來說,假設在第x期間的元素值D
1x~D
nx分別為2、2、3、3、2、2、4、4。控制電路220可以依照將元素值D
1x~D
nx歸納為歸納數值「2」、「3」、「4」。在低功率模式中,乘法電路230可以在第x期間(階段)將歸納數值「2」、「3」、「4」各自乘以在第二矩陣的元素值IN
x1,以及將乘積值「2*IN
x1」、「3*IN
x1」、「4*IN
x1」輸出給路由電路240。路由電路240可以將乘積值「2*IN
x1」做為乘積值LP
1x、乘積值LP
2x、乘積值LP
5x與乘積值LP
6x而傳輸給計算電路210_1、210_2、210_5與210_6,將乘積值「3*IN
x1」做為乘積值LP
3x與乘積值LP
4x而傳輸給計算電路210_3與210_4,以及將乘積值「4*IN
x1」做為乘積值LP
7x與乘積值LP
8x而傳輸給計算電路210_7與210_8。在低功率模式中,乘法電路230使用3個乘法器去進行乘法運算,而其餘乘法器(包含計算電路210_1~210_n的乘法器)被禁能。因此,原本需要的8個乘法運算簡化為3個乘法運算,如此一來可以降低功耗。
基於計算電路210_1~210_n的多工器(例如多工器212)的切換操作,計算電路210_1~210_n的累加電路(例如累加電路213)可以將路由電路240所提供的所述乘積值LP
1x~LP
nx各自加入先前的乘積累加值而獲得新的乘積累加值(步驟S335),並且將新的乘積累加值存回到相對應的累加電路裡面(步驟S355,亦即將新的乘積累加值更新至暫存器中)。
當所述歸納數值的種類數量大於預設的種類門檻時(步驟S315的判斷結果為「否」),控制電路220可以藉由切換訊號SW去控制計算電路210_1~210_n操作於正常模式(步驟S340)。在正常模式中,乘法電路230的乘法器可以被禁能,以節省功耗。計算電路210_1~210_n可以在第x期間(階段)接收在第一矩陣的第x行中的元素值D
1x~D
nx。在步驟S345中,計算電路210_1~210_n可以在該正常模式中將元素值D
1x~D
nx各自乘以在第二矩陣的第x列中的一個元素值IN
x1,以獲得多個乘積值(例如乘積值211a)。計算電路210_1~210_n可以在正常模式中將這些乘積值各自加入先前的乘積累加值而獲得新的乘積累加值(步驟S350),並且將新的乘積累加值存回到相對應的累加電路裡面(步驟S355,亦即將新的乘積累加值更新至暫存器中)。
在完成步驟S355後,控制電路220可以判斷矩陣乘法運算(例如公式2或公式3的運算)是否完成。若矩陣乘法運算尚未完成(步驟S360的判斷結果為「否」),則流程將回到步驟S305。在步驟S305中,控制電路220可以在下一個期間(階段)接收在第一矩陣的下一行中的元素值。當矩陣乘法運算已經完成時(步驟S360的判斷結果為「是」),計算電路210_1~210_n的累加電路(例如累加電路213)可以分別產生/提供乘積矩陣的第一行中的多個乘積累加值Out
11、Out
21、…、Out
n1。
綜合上述,控制電路220可以依照元素值D
1x~D
nx的種類數(number of values)來調整使用的乘法器個數,藉以減少耗能。依照設計需求,控制電路220的判斷機制可以是在線(on the fly)、離線(offline)、或其任意組合。判斷機制可以是輸入的資料、資料串流(bitstream)或預先設計好的控制訊號。
以下說明矩陣乘法裝置200的一個運算實例。在此假設矩陣乘法裝置200運算下述公式4。矩陣乘法裝置200將分別在第T
1、T
2、T
3期間(階段)中接收第一矩陣的第1、2、3行的元素值。下述表1是矩陣乘法裝置200在不同期間進行模式切換的一個運算實例。在表1所示實例中,「X」表示「不在乎(don't care)」。
公式4
表1:矩陣乘法裝置在不同期間進行模式切換的一個運算實例
請參照圖2與表1。在表1所示實例中,假設乘法電路230配置有3個乘法器。在第T
1期間(階段),元素值D
1x~D
nx為2、2、3、3、2、2、4、4。控制電路220可以依照數值種類而將元素值D
1x~D
nx歸納為3個歸納數值「2」、「3」、「4」。因為所述歸納數值的種類數量為3(小於或等於預設的種類門檻「3」),所以控制電路220可以在第T
1期間(階段)藉由切換訊號SW去控制計算電路210_1~210_n操作於低功率模式。乘法電路230可以將所述歸納數值「2」、「3」、「4」各自乘以元素值10,以及將乘積值「2*10=20」、「3*10=30」、「4*10=40」輸出給路由電路240。
在第T
2期間(階段),元素值D
1x~D
nx為2、1、3、2、4、5、6、7。控制電路220可以依照數值種類而將元素值D
1x~D
nx歸納為7個歸納數值「1」、「2」、「3」、「4」、「5」、「6」、「7」。因為所述歸納數值的種類數量為7(大於預設的種類門檻「3」),所以控制電路220可以在第T
2期間(階段)藉由切換訊號SW去控制計算電路210_1~210_n操作於正常模式。計算電路210_1~210_n可以將元素值D
1x~D
nx各自乘以元素值11,而產生乘積值「2*11=22」、「1*11=11」、「3*11=33」、「2*11=22」、「4*11=44」、「5*11=55」、「6*11=66」、「7*11=77」。
在第T
3期間(階段),元素值D
1x~D
nx為3、3、2、2、4、4、4、4。控制電路220可以依照數值種類而將元素值D
1x~D
nx歸納為3個歸納數值「2」、「3」、「4」。因為所述歸納數值的種類數量為3(小於或等於預設的種類門檻「3」),所以控制電路220可以在第T
3期間(階段)藉由切換訊號SW去控制計算電路210_1~210_n操作於低功率模式。乘法電路230可以將所述歸納數值「2」、「3」、「4」各自乘以元素值12,以及將乘積值「2*12=24」、「3*12=36」、「4*12=48」輸出給路由電路240。
在表1所示實例中,乘法電路230在第T
1、T
3期間(階段)中均能被啟動,而210_1~210_n的乘法器被禁能,致使進行乘法運算的乘法器由8個減少為3個。因此,矩陣乘法裝置200能夠減少10個乘法的耗能。
圖4是依照本發明的另一實施例的一種矩陣乘法裝置400的電路方塊示意圖。矩陣乘法裝置400可以計算上述公式2,亦即將第一矩陣乘以第二矩陣而產生乘積矩陣。於圖4所示實施例中,矩陣乘法裝置400包括多個計算電路MA。圖4所示這些計算電路MA的每一個都可以參照圖2所示計算電路210_1的相關說明來類推,故不予贅述。
矩陣乘法裝置400還包括控制電路420、乘法電路430以及路由電路440。圖4所示控制電路420可以參照圖2所示控制電路220的相關說明來類推。控制電路420可以在第x期間(階段)接收在第一矩陣的第x行中的元素值D
1x~D
nx,以及接收在第二矩陣的第x列中的元素值IN
x1~IN
xt。控制電路420可以依照數值種類而將元素值D
1x~D
nx歸納為至少一個第一歸納數值,以及依照數值種類將元素值IN
x1~IN
xt歸納為至少一個第二歸納數值。舉例來說(但不限於此),控制電路420可以將元素值D
1x~D
nx歸納為第一歸納數值D
A、D
B、D
C,以及控制電路420可以將元素值IN
x1~IN
xt歸納為第二歸納數值IN
A、IN
B。
當所述第一歸納數值的種類數量小於或等於預設的第一種類門檻(例如第一種類門檻為3)時,且當所述第二歸納數值的種類數量小於或等於預設的第二種類門檻(例如第二種類門檻為2)時,控制電路420可以藉由切換訊號SW去控制這些計算電路MA操作於低功率模式。所述第一種類門檻與所述第二種類門檻可以依照設計需求來決定。這些計算電路MA的乘法器(例如乘法器211)在低功率模式中可以被禁能,以節省功耗。
圖4所示乘法電路430可以參照圖2所示乘法電路230的相關說明來類推。乘法電路430可以在低功率模式中將所述第一歸納數值D
A、D
B、D
C的任一個乘以第二歸納數值IN
A、IN
B的任一個,以及將乘積值「D
A*IN
A」、「D
A*IN
B」、「D
B*IN
A」、「D
B*IN
B」、「D
C*IN
A」、「D
C*IN
B」輸出給路由電路440。路由電路440耦接至乘法電路430,以接收所述乘積值。圖4所示路由電路440可以參照圖2所示路由電路240的相關說明來類推。路由電路440在低功率模式中將乘法電路430的所述乘積值的每一個傳輸給這些計算電路MA中的至少一個對應計算電路。在圖4所示實施例中,路由電路440的輸出端耦接至這些計算電路MA中的一個對應計算電路,以提供所述乘積值LP
11、LP
12、…、LP
1t、LP
21、LP
22、…、LP
2t、…、LP
n1、LP
n2、…、LP
nt中的一個對應乘積值。
基於這些計算電路MA的多工器(例如多工器212)的切換操作,這些計算電路MA的累加電路(例如累加電路213)可以將路由電路440所提供的所述乘積值LP
1x~LP
nt各自加入先前的乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到相對應的累加電路裡面。因此,這些計算電路MA的累加電路可以分別產生/提供乘積矩陣中的多個乘積累加值Out
11、Out
12、…、Out
1t、Out
21、Out
22、…、Out
2t、…、Out
n1、Out
n2、…、Out
nt。
當所述第一歸納數值的種類數量大於預設的第一種類門檻(例如第一種類門檻為3)時,或是當所述第二歸納數值的種類數量大於預設的第二種類門檻(例如第二種類門檻為2)時,控制電路420可以藉由切換訊號SW去控制這些計算電路MA操作於正常模式。在正常模式中,乘法電路430的乘法器可以被禁能,以節省功耗。這些計算電路MA可以在第x期間(階段)接收在第一矩陣的第x行中的元素值D
1x~D
nx,以及接收在第二矩陣的第x列中的元素值IN
x1~IN
xt。這些計算電路MA可以在正常模式中將元素值D
1x~D
nx的任一個乘以在元素值IN
x1~IN
xt的一個對應元素值,以獲得多個乘積值(例如乘積值211a)。這些計算電路MA可以在正常模式中將這些乘積值各自加入先前的乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到相對應的累加電路裡面。因此,這些計算電路MA的累加電路(例如累加電路213)可以分別產生/提供乘積矩陣中的多個乘積累加值Out
11~Out
nt。
圖5是依照本發明的又一實施例的一種矩陣乘法裝置500的電路方塊示意圖。矩陣乘法裝置500可以將第一矩陣乘以第二矩陣而產生乘積矩陣。舉例來說,矩陣乘法裝置500可以計算上述公式3。矩陣乘法裝置500包括控制電路520以及路由電路540。圖5所示控制電路520與路由電路540可以參照圖2所示控制電路220與路由電路240的相關說明來類推。於圖5所示實施例中,矩陣乘法裝置500還包括多個計算電路,以便產生在乘積矩陣的第一行中的多個乘積累加值Out
11~Out
n1。其中,這些計算電路包括至少一個第一計算電路(例如510_1、510_2、…、510_i)以及至少一個第二計算電路(例如510_j、…、510_n)。圖5所示第二計算電路510_j~510_n可以參照圖2所示計算電路210_1的相關說明來類推,故不予贅述。
圖5所示第一計算電路510_2~510_i可以參照圖5所示第一計算電路510_1的相關說明來類推。第一計算電路510_1包括多工器511、乘法器512、多工器513以及累加電路514。多工器511的第一選擇端可以在第x期間接收在第一矩陣的第x行的元素值D
1x~D
nx中的一個對應元素值D
1x。多工器511的第二選擇端耦接至控制電路520,以接收歸納數值A
1~A
i中的一個對應歸納數值A
1。在正常模式中,多工器511選擇將對應元素值D
1x做為乘算對象而輸出給乘法器512。在該低功率模式中,多工器511選擇將對應歸納數值A
1做為乘算對象而輸出給乘法器512。
圖5所示乘法器512、多工器513以及累加電路514可以參照圖2所示乘法器211、多工器212以及累加電路213的相關說明來類推。乘法器512耦接至多工器511的共同端,以接收乘算對象。乘法器512可以將多工器511所輸出的乘算對象乘以在第二矩陣中的第x列中的一個元素值IN
x1,以獲得乘積M
1。路由電路540在低功率模式中接收乘法器512所輸出的乘積M
1做為乘積值LP
1x、LP
2x、…、LP
ix、LP
jx、…、LP
nx中的一個。
多工器513的第一選擇端耦接至乘法器512,以接收乘積M
1。多工器513的第二選擇端耦接至路由電路540,以接收所述至少乘積值LP
1x~LP
nx中的一個對應乘積值LP
1x。在正常模式中,多工器513選擇將乘積M
1做為累加對象而輸出給累加電路514。在低功率模式中,多工器513選擇將對應乘積值LP
1x做為累加對象而輸出給累加電路514。累加電路514耦接至多工器513的共同端,以接收所述累加對象。其中,累加電路514將所述累加對象加入對應乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到累加電路514裡面。
控制電路520被配置為在第x期間接收在第一矩陣的第x行中的多個元素值D
1x~D
nx。控制電路520依照數值種類將元素值D
1x~D
nx歸納為至少一個歸納數值。當所述歸納數值的種類數量小於或等於種類門檻時,控制電路520可以藉由切換訊號SW去控制這些計算電路510_1~510_n操作於低功率模式。第二計算電路510_j~510_n的乘法器在低功率模式中被禁能,以節省功耗。在低功率模式中,第一計算電路510_1~510_i將所述歸納數值(例如歸納數值A
1~A
i)各自乘以在第二矩陣的第x列中的一個元素值IN
x1以獲得乘積值M
1、M
2、..、M
i。
路由電路540耦接至第一計算電路510_1~510_i,以接收所述乘積值M
1~M
i。在該低功率模式中,路由電路540可以將所述乘積值M
1~M
i的每一個傳輸給這些計算電路510_1~510_n中的至少一個對應計算電路。在低功率模式中,這些計算電路510_1~510_n將路由電路540所提供的所述乘積值M
1~M
i各自加入乘積累加值。因此,計算電路510_1~510_n的累加電路可以分別產生/提供乘積矩陣的第一行中的多個乘積累加值Out
11~Out
n1。
當種類數量大於種類門檻時,控制電路520控制這些計算電路510_1~510_n操作於正常模式。這些計算電路510_1~510_n可以在第x期間接收在第一矩陣的第x行中的元素值D
1x~D
nx。在正常模式中,這些計算電路510_1~510_n將元素值D
1x~D
nx各自乘以在第二矩陣的第x列中的一個元素值IN
x1,以獲得多個乘積值。這些計算電路510_1~510_n在正常模式中將這些乘積值各自加入對應乘積累加值而獲得新的乘積累加值,並且將新的乘積累加值存回到累加電路裡面。因此,計算電路510_1~510_n的累加電路可以分別產生/提供乘積矩陣的第一行中的多個乘積累加值Out
11~Out
n1。
依照不同的設計需求,上述計算電路、控制電路、乘法電路及/或路由電路的方塊的實現方式可以是硬體(hardware)、韌體(firmware)或是前述二者中的多者的組合形式。
以硬體形式而言,上述計算電路、控制電路、乘法電路及/或路由電路的方塊可以實現於積體電路(integrated circuit)上的邏輯電路。上述計算電路、控制電路、乘法電路及/或路由電路的相關功能可以利用硬體描述語言(hardware description languages,例如Verilog HDL或VHDL)或其他合適的編程語言來實現為硬體。舉例來說,上述計算電路、控制電路、乘法電路及/或路由電路的相關功能可以被實現於一或多個控制器、微控制器、微處理器、特殊應用積體電路(Application-specific integrated circuit, ASIC)、數位訊號處理器(digital signal processor, DSP)、場可程式邏輯閘陣列(Field Programmable Gate Array, FPGA)及/或其他處理單元中的各種邏輯區塊、模組和電路。
以韌體形式而言,上述計算電路、控制電路、乘法電路及/或路由電路的相關功能可以被實現為編程碼(programming codes)。例如,利用一般的編程語言(programming languages,例如C、C++或組合語言)或其他合適的編程語言來實現上述計算電路、控制電路、乘法電路及/或路由電路。所述編程碼可以被記錄/存放在記錄媒體中,所述記錄媒體中例如包括唯讀記憶體(Read Only Memory,ROM)、存儲裝置及/或隨機存取記憶體(Random Access Memory,RAM)。電腦、中央處理器(Central Processing Unit,CPU)、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而達成相關功能。作為所述記錄媒體,可使用「非臨時的電腦可讀取媒體(non-transitory computer readable medium)」,例如可使用帶(tape)、碟(disk)、卡(card)、半導體記憶體、可程式設計的邏輯電路等。而且,所述程式也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。所述通信網路例如是互聯網(Internet)、有線通信(wired communication)、無線通信(wireless communication)或其它通信介質。
綜上所述,本發明諸實施例所述所述矩陣乘法裝置可以將第一矩陣乘以第二矩陣而產生乘積矩陣。所述矩陣乘法裝置在第x期間接收在第一矩陣的第x行中的多個第一元素值,以及接收在第二矩陣的第x列中的至少一個第二元素值。控制電路依照數值種類將這些第一元素值歸納為至少一個歸納數值,然後乘法電路將所述歸納數值各自乘以所述第二元素值。因此,對具有相同值的這些第一元素值所進行的重複的乘法運算可以被有效減少。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
100、200、400、500:矩陣乘法裝置
110_1、110_2、110_n、210_1、210_2、210_n、MA:計算電路
211、512:乘法器
211a、LP11、LP12、LP1t、LP1x、LP21、LP22、LP2t、LP2x、LPix、LPjx、LPn1、LPn2、LPnt、LPnx:乘積值
212、511、513:多工器
213、514:累加電路
213a:先前的對應乘積累加值
213b:新的對應乘積累加值
220、420:控制電路
230、430:乘法電路
240、440:路由電路
510_1、510_2、510_i:第一計算電路
510_j、510_n:第二計算電路
A、B、K、A1、A2、Ai:歸納數值
D1x、D2x、Dnx、Inx、Inx1、Inx2、Inxt:元素值
M1、M2、Mi:乘積
Out11、Out12、Out1t、Out21、Out22、Out2t、Outi1、Outj1、Outn1、Outn2、Outnt:乘積累加值
S310~S360:步驟
SW:切換訊號
圖1是一種矩陣乘法裝置的電路方塊(circuit block)示意圖。
圖2是依照本發明的一實施例的一種矩陣乘法裝置的電路方塊示意圖。
圖3是依照本發明的一實施例說明一種矩陣乘法裝置的操作方法的流程示意圖。
圖4是依照本發明的另一實施例的一種矩陣乘法裝置的電路方塊示意圖。
圖5是依照本發明的又一實施例的一種矩陣乘法裝置的電路方塊示意圖。
200:矩陣乘法裝置
210_1、210_2、210_n:計算電路
211:乘法器
211a、LP1x、LP2x、LPnx:乘積值
212:多工器
213:累加電路
213a:先前的對應乘積累加值
213b:新的對應乘積累加值
220:控制電路
230:乘法電路
240:路由電路
A、B、K:歸納數值
D1x、D2x、Dnx、Inx1:元素值
Out11、Out21、Outn1:乘積累加值
SW:切換訊號
Claims (25)
- 一種矩陣乘法裝置,被配置為將一第一矩陣乘以一第二矩陣而產生一乘積矩陣,該矩陣乘法裝置包括: 多個第一計算電路,被配置為產生在該乘積矩陣的一第一行中的多個第一乘積累加值; 一控制電路,被配置為在一第一期間接收在該第一矩陣的一行中的多個第一元素值,其中該控制電路依照數值種類將該些第一元素值歸納為至少一第一歸納數值,當所述至少一第一歸納數值的一第一種類數量小於或等於一第一種類門檻時該控制電路控制該些第一計算電路操作於一低功率模式,以及當該第一種類數量大於該第一種類門檻時該控制電路控制該些第一計算電路操作於一正常模式; 一乘法電路,被配置為在該低功率模式中將所述至少一第一歸納數值各自乘以在該第二矩陣的一列中的一第二元素值,以獲得至少一第一乘積值;以及 一路由電路,耦接至該乘法電路以接收所述至少一第一乘積值,其中該路由電路在該低功率模式中將所述至少一第一乘積值的每一個傳輸給該些第一計算電路中的至少一對應計算電路。
- 如申請專利範圍第1項所述的矩陣乘法裝置,其中該些第一計算電路被配置為在該第一期間接收在該第一矩陣的該行中的該些第一元素值,該些第一計算電路在該正常模式中將該些第一元素值各自乘以在該第二矩陣中的該第二元素值以獲得多個第二乘積值,該些第一計算電路在該正常模式中將該些第二乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第1項所述的矩陣乘法裝置,其中該些第一計算電路在該低功率模式中將該路由電路所提供的所述至少一第一乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第1項所述的矩陣乘法裝置,其中該些第一計算電路的任一個包括: 一乘法器,被配置為在該第一期間接收在該些第一元素值中的一對應元素值,其中該乘法器在該正常模式中將該對應元素值乘以在該第二矩陣中的該第二元素值以獲得一第二乘積值; 一多工器,耦接至該乘法器以接收該第二乘積值,以及耦接至該路由電路以接收所述至少一第一乘積值的一對應乘積值,其中該多工器在該正常模式中選擇將該第二乘積值輸出做為一累加對象,以及該多工器在該低功率模式中選擇將該對應乘積值輸出做為該累加對象;以及 一累加電路,耦接至該多工器以接收該累加對象,其中該累加電路將該累加對象加入該些第一乘積累加值的一對應乘積累加值。
- 如申請專利範圍第4項所述的矩陣乘法裝置,其中該乘法器在該低功率模式中被禁能以節省功耗。
- 如申請專利範圍第1項所述的矩陣乘法裝置,其中該乘法電路包括: 至少一乘法器,被配置為在該低功率模式中將所述至少一第一歸納數值各自乘以在該第二矩陣中的該第二元素值,以獲得所述至少一第一乘積值。
- 如申請專利範圍第6項所述的矩陣乘法裝置,其中所述至少一乘法器在該正常模式中被禁能以節省功耗。
- 如申請專利範圍第6項所述的矩陣乘法裝置,其中該路由電路包括: 多個多工器,耦接至所述至少一乘法器以接收所述至少一第一乘積值,其中該些多工器的每一個的輸出端耦接至該些第一計算電路中的一對應計算電路以提供所述至少一第一乘積值的一對應乘積值。
- 如申請專利範圍第1項所述的矩陣乘法裝置,更包括: 多個第二計算電路,被配置為產生在該乘積矩陣的一第二行中的多個第二乘積累加值; 其中該控制電路被配置為在該第一期間接收在該第二矩陣的一列中的多個第二元素值,該控制電路依照數值種類將該些第二元素值歸納為至少一第二歸納數值,當該第一種類數量小於或等於該第一種類門檻以及所述至少一第二歸納數值的一第二種類數量小於或等於一第二種類門檻時該控制電路控制該些第一計算電路以及該些第二計算電路操作於該低功率模式,以及當該第一種類數量大於該第一種類門檻或是該第二種類數量大於該種類門檻時該控制電路控制該些第一計算電路以及該些第二計算電路操作於該正常模式。
- 如申請專利範圍第9項所述的矩陣乘法裝置,其中該乘法電路在該低功率模式中將所述至少一第一歸納數值的任一個乘以所述至少一第二歸納數值的任一個,以獲得所述至少一第一乘積值。
- 一種矩陣乘法裝置的操作方法,該矩陣乘法裝置被配置為將一第一矩陣乘以一第二矩陣而產生一乘積矩陣,該操作方法包括: 由多個第一計算電路產生在該乘積矩陣的一第一行中的多個第一乘積累加值; 由一控制電路在一第一期間接收在該第一矩陣的一行中的多個第一元素值; 由該控制電路依照數值種類將該些第一元素值歸納為至少一第一歸納數值; 當所述至少一第一歸納數值的一第一種類數量小於或等於一第一種類門檻時,由該控制電路控制該些第一計算電路操作於一低功率模式; 當該第一種類數量大於該第一種類門檻時,由該控制電路控制該些第一計算電路操作於一正常模式; 由一乘法電路在該低功率模式中將所述至少一第一歸納數值各自乘以在該第二矩陣的一列中的一第二元素值,以獲得至少一第一乘積值;以及 由一路由電路在該低功率模式中將所述至少一第一乘積值的每一個傳輸給該些第一計算電路中的至少一對應計算電路。
- 如申請專利範圍第11項所述的操作方法,更包括: 由該些第一計算電路在該第一期間接收在該第一矩陣的該行中的該些第一元素值; 當該些第一計算電路操作於該正常模式時,由該些第一計算電路將該些第一元素值各自乘以在該第二矩陣中的該第二元素值以獲得多個第二乘積值;以及 由該些第一計算電路在該正常模式中將該些第二乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第11項所述的操作方法,更包括: 當該些第一計算電路操作於該低功率模式時,由該些第一計算電路將該路由電路所提供的所述至少一第一乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第11項所述的操作方法,更包括: 由一乘法器在該第一期間接收在該些第一元素值中的一對應元素值; 由該乘法器在該正常模式中將該對應元素值乘以在該第二矩陣中的該第二元素值以獲得一第二乘積值; 由一多工器在該正常模式中選擇將該第二乘積值輸出做為一累加對象; 由該多工器在該低功率模式中選擇將該對應乘積值輸出做為該累加對象;以及 由一累加電路將該累加對象加入該些第一乘積累加值的一對應乘積累加值。
- 如申請專利範圍第14項所述的操作方法,更包括: 在該低功率模式中禁能該乘法器以節省功耗。
- 如申請專利範圍第11項所述的操作方法,更包括: 由該乘法電路的至少一乘法器在該低功率模式中將所述至少一第一歸納數值各自乘以在該第二矩陣中的該第二元素值,以獲得所述至少一第一乘積值。
- 如申請專利範圍第16項所述的操作方法,更包括: 在該正常模式中禁能所述至少一乘法器以節省功耗。
- 如申請專利範圍第11項所述的操作方法,更包括: 由多個第二計算電路產生在該乘積矩陣的一第二行中的多個第二乘積累加值; 由該控制電路在該第一期間接收在該第二矩陣的一列中的多個第二元素值; 由該控制電路依照數值種類將該些第二元素值歸納為至少一第二歸納數值; 當該第一種類數量小於或等於該第一種類門檻以及所述至少一第二歸納數值的一第二種類數量小於或等於一第二種類門檻時,由該控制電路控制該些第一計算電路以及該些第二計算電路操作於該低功率模式;以及 當該第一種類數量大於該第一種類門檻或是該第二種類數量大於該種類門檻時,由該控制電路控制該些第一計算電路以及該些第二計算電路操作於該正常模式。
- 如申請專利範圍第18項所述的操作方法,更包括: 由該乘法電路在該低功率模式中將所述至少一第一歸納數值的任一個乘以所述至少一第二歸納數值的任一個,以獲得所述至少一第一乘積值。
- 一種矩陣乘法裝置,被配置為將一第一矩陣乘以一第二矩陣而產生一乘積矩陣,該矩陣乘法裝置包括: 多個計算電路,被配置為產生在該乘積矩陣的一第一行中的多個第一乘積累加值,其中該些計算電路包括至少一第一計算電路以及至少一第二計算電路; 一控制電路,被配置為在一第一期間接收在該第一矩陣的一行中的多個第一元素值,其中該控制電路依照數值種類將該些第一元素值歸納為至少一第一歸納數值,當所述至少一第一歸納數值的一第一種類數量小於或等於一第一種類門檻時該控制電路控制該些計算電路操作於一低功率模式,所述至少一第一計算電路在該低功率模式中將所述至少一第一歸納數值各自乘以在該第二矩陣的一第一行中的一第二元素值以獲得至少一第一乘積值,以及當該第一種類數量大於該第一種類門檻時該控制電路控制該些計算電路操作於一正常模式;以及 一路由電路,耦接至所述至少一第一計算電路以接收所述至少一第一乘積值,其中該路由電路在該低功率模式中將所述至少一第一乘積值的每一個傳輸給該些計算電路中的至少一對應計算電路。
- 如申請專利範圍第20項所述的矩陣乘法裝置,其中該些計算電路被配置為在該第一期間接收在該第一矩陣的該行中的該些第一元素值,該些計算電路在該正常模式中將該些第一元素值各自乘以在該第二矩陣中的該第二元素值以獲得多個第二乘積值,該些計算電路在該正常模式中將該些第二乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第20項所述的矩陣乘法裝置,其中該些計算電路在該低功率模式中將該路由電路所提供的所述至少一第一乘積值各自加入該些第一乘積累加值。
- 如申請專利範圍第20項所述的矩陣乘法裝置,其中所述至少一第一計算電路的任一個包括: 一第一多工器,被配置為在該第一期間接收在該些第一元素值中的一對應元素值,其中該第一多工器耦接至該控制電路以接收所述至少一第一歸納數值的一對應歸納數值,該第一多工器在該正常模式中選擇將該對應元素值輸出做為一乘算對象,以及該第一多工器在該低功率模式中選擇將該對應歸納數值輸出做為該乘算對象; 一乘法器,耦接至該第一多工器以接收該乘算對象,其中該乘法器將該乘算對象乘以在該第二矩陣中的該第二元素值以獲得一乘積,以及該路由電路在該低功率模式中接收該乘積做為所述至少一第一乘積值中的一個; 一第二多工器,耦接至該乘法器以接收該乘積,以及耦接至該路由電路以接收所述至少一第一乘積值的一對應乘積值,其中該第二多工器在該正常模式中選擇將該乘積輸出做為一累加對象,以及該第二多工器在該低功率模式中選擇將該對應乘積值輸出做為該累加對象;以及 一累加電路,耦接至該第二多工器以接收該累加對象,其中該累加電路將該累加對象加入該些第一乘積累加值的一對應乘積累加值。
- 如申請專利範圍第20項所述的矩陣乘法裝置,其中所述至少一第二計算電路的任一個包括: 一乘法器,被配置為在該第一期間接收在該些第一元素值中的一對應元素值,其中該乘法器在該正常模式中將該對應元素值乘以在該第二矩陣中的該第二元素值以獲得一乘積; 一多工器,耦接至該乘法器以接收該乘積,以及耦接至該路由電路以接收所述至少一第一乘積值的一對應乘積值,其中該多工器在該正常模式中選擇將該乘積輸出做為一累加對象,以及該多工器在該低功率模式中選擇將該對應乘積值輸出做為該累加對象;以及 一累加電路,耦接至該多工器以接收該累加對象,其中該累加電路將該累加對象加入該些第一乘積累加值的一對應乘積累加值。
- 如申請專利範圍第24項所述的矩陣乘法裝置,其中該乘法器在該低功率模式中被禁能以節省功耗。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108130520A TWI688871B (zh) | 2019-08-27 | 2019-08-27 | 矩陣乘法裝置及其操作方法 |
| US16/667,900 US11307853B2 (en) | 2019-08-27 | 2019-10-29 | Matrix multiplication device and operation method thereof |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW108130520A TWI688871B (zh) | 2019-08-27 | 2019-08-27 | 矩陣乘法裝置及其操作方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TWI688871B true TWI688871B (zh) | 2020-03-21 |
| TW202109318A TW202109318A (zh) | 2021-03-01 |
Family
ID=70766945
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW108130520A TWI688871B (zh) | 2019-08-27 | 2019-08-27 | 矩陣乘法裝置及其操作方法 |
Country Status (2)
| Country | Link |
|---|---|
| US (1) | US11307853B2 (zh) |
| TW (1) | TWI688871B (zh) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN115310030A (zh) * | 2021-05-07 | 2022-11-08 | 脸萌有限公司 | 一种矩阵乘法电路模块及方法 |
| TWI847030B (zh) * | 2021-05-05 | 2024-07-01 | 創鑫智慧股份有限公司 | 矩陣乘法器及其操作方法 |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113110822A (zh) * | 2021-04-20 | 2021-07-13 | 安徽芯纪元科技有限公司 | 一种可配置矩阵乘法装置及算法 |
| CN116136752B (zh) * | 2023-04-19 | 2023-06-30 | 上海登临科技有限公司 | 阵列输入策略的确定方法和系统 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104238993A (zh) * | 2013-06-11 | 2014-12-24 | 亚德诺半导体技术公司 | 微处理器集成电路的向量矩阵乘积加速器 |
| TW201824094A (zh) * | 2016-12-13 | 2018-07-01 | 美商高通公司 | 用於稀疏神經網路的低功率架構 |
| US20190042237A1 (en) * | 2018-06-22 | 2019-02-07 | Omid Azizi | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
| TW201911139A (zh) * | 2017-08-02 | 2019-03-16 | 美商谷歌有限責任公司 | 神經網路交叉條堆疊 |
Family Cites Families (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI417798B (zh) | 2008-11-21 | 2013-12-01 | Nat Taipei University Oftechnology | High - speed reverse transfer neural network system with elastic structure and learning function |
| US8862653B2 (en) * | 2011-04-26 | 2014-10-14 | University Of South Carolina | System and method for sparse matrix vector multiplication processing |
| US10324983B2 (en) | 2016-10-04 | 2019-06-18 | Sas Institute Inc. | Interactive visualizations for a recurrent neural network |
| US11216722B2 (en) | 2016-12-31 | 2022-01-04 | Intel Corporation | Hardware accelerator template and design framework for implementing recurrent neural networks |
| US11068775B2 (en) | 2017-03-29 | 2021-07-20 | British Cayman Islands Intelligo Technology Inc. | Processing apparatus and method for artificial neuron |
| CN108664447B (zh) | 2017-03-31 | 2022-05-17 | 华为技术有限公司 | 一种矩阵与矢量的乘法运算方法及装置 |
| CN108805266B (zh) | 2018-05-21 | 2021-10-26 | 南京大学 | 一种可重构cnn高并发卷积加速器 |
-
2019
- 2019-08-27 TW TW108130520A patent/TWI688871B/zh active
- 2019-10-29 US US16/667,900 patent/US11307853B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104238993A (zh) * | 2013-06-11 | 2014-12-24 | 亚德诺半导体技术公司 | 微处理器集成电路的向量矩阵乘积加速器 |
| TW201824094A (zh) * | 2016-12-13 | 2018-07-01 | 美商高通公司 | 用於稀疏神經網路的低功率架構 |
| TW201911139A (zh) * | 2017-08-02 | 2019-03-16 | 美商谷歌有限責任公司 | 神經網路交叉條堆疊 |
| US20190042237A1 (en) * | 2018-06-22 | 2019-02-07 | Omid Azizi | Matrix multiplication acceleration of sparse matrices using column folding and squeezing |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| TWI847030B (zh) * | 2021-05-05 | 2024-07-01 | 創鑫智慧股份有限公司 | 矩陣乘法器及其操作方法 |
| US12086206B2 (en) | 2021-05-05 | 2024-09-10 | Neuchips Corporation | Matrix multiplier and operation method thereof |
| CN115310030A (zh) * | 2021-05-07 | 2022-11-08 | 脸萌有限公司 | 一种矩阵乘法电路模块及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| US20210064373A1 (en) | 2021-03-04 |
| TW202109318A (zh) | 2021-03-01 |
| US11307853B2 (en) | 2022-04-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI688871B (zh) | 矩陣乘法裝置及其操作方法 | |
| CN103699202B (zh) | 具有根据数据业务控制供电能力的片上系统及其操作方法 | |
| JP5544240B2 (ja) | マルチmacアーキテクチャにおける低電力firフィルタ | |
| CN114128069B (zh) | 一种电压调节装置和过流保护的方法 | |
| EP3561737A1 (en) | Calculating device and calculation method for neural network calculation | |
| US10367477B2 (en) | Sparse cascaded-integrator-comb filters | |
| CN104539263B (zh) | 一种可重构低功耗数字fir滤波器 | |
| WO2021190343A1 (zh) | 用于对芯片进行调频的方法、设备及计算机可读存储介质 | |
| CN102510329B (zh) | 一种乘法器及其控制方法 | |
| CN111985628B (zh) | 计算装置及包括所述计算装置的神经网络处理器 | |
| TWI801690B (zh) | 乘法器及相乘第一運算元及第二運算元的方法 | |
| CN114598302B (zh) | 时钟占空比校准装置 | |
| CN101789781A (zh) | 基于fpga的任意数值分频器实现方法 | |
| CN100478820C (zh) | 电子元件的温度控制方法及其系统 | |
| US20100049996A1 (en) | Load detecting system and method | |
| CN111523653A (zh) | 运算装置及方法 | |
| CN108108812A (zh) | 用于卷积神经网络的高效可配置卷积计算加速器 | |
| CN111291884B (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
| CN113448718B (zh) | 用于对芯片进行调频的方法、设备及计算机可读存储介质 | |
| CN115774542A (zh) | 多项式运算电路和信号处理装置 | |
| CN110770697A (zh) | 数据处理装置和方法 | |
| CN110737969B (zh) | 一种基于极大代数的离散制造系统节能方法 | |
| CN114912400B (zh) | 门控电源中窄矩形区域电源开关单元插入方法及系统 | |
| RU2421772C2 (ru) | Самосинхронное вычислительное устройство с адаптивным режимом питания ядра | |
| CN219179915U (zh) | 多项式运算电路和信号处理装置 |