TW202324146A - 用於矩陣乘法的裝置及方法以及電腦可讀取儲存媒體 - Google Patents
用於矩陣乘法的裝置及方法以及電腦可讀取儲存媒體 Download PDFInfo
- Publication number
- TW202324146A TW202324146A TW111139665A TW111139665A TW202324146A TW 202324146 A TW202324146 A TW 202324146A TW 111139665 A TW111139665 A TW 111139665A TW 111139665 A TW111139665 A TW 111139665A TW 202324146 A TW202324146 A TW 202324146A
- Authority
- TW
- Taiwan
- Prior art keywords
- matrix
- register
- instruction
- multiply
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; 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/491—Computations with decimal numbers radix 12 or 20.
- G06F7/498—Computations with decimal numbers radix 12 or 20. using counter-type accumulators
- G06F7/4983—Multiplying; Dividing
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Detection And Correction Of Errors (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一種用於矩陣乘法的裝置包括:多個暫存器;解碼電路,被配置成對第一指令進行解碼;以及執行電路,被配置成基於經解碼的第一指令辨識模式、儲存第一矩陣資料的第一暫存器、儲存第二矩陣資料的第二暫存器及儲存第三矩陣資料的第三暫存器,基於模式選擇第一矩陣資料的行及第二矩陣資料的列,且基於所選擇的第一矩陣資料的行、所選擇的第二矩陣資料的列及第三矩陣資料實行乘法累加(MAC)運算。
Description
本發明概念是有關於矩陣乘法,且更具體而言,是有關於一種重復使用乘法累加(MAC)運算進行矩陣乘法的裝置、方法及系統。
[相關申請案的交叉參考]
本申請案基於且主張2021年10月19日在韓國智慧財產局提出申請的韓國專利申請案第10-2021-0139115號的優先權,所述韓國專利申請案的揭露內容全文以引用的方式併入本案。
矩陣乘法可用於各種應用中。舉例而言,矩陣乘法可用於電腦視覺及/或神經網路且亦可用於虛擬實境及/或增強實境中的幾何計算。應用的效能及效率可相依於矩陣乘法的效能及效率,且因此可能需要用於以高速及/或高效率實行矩陣乘法的結構及方法。
本發明概念提供一種用於矩陣乘法的同時展現出高效能及高效率的裝置、方法及系統。
根據本發明概念的一個態樣,提供一種用於矩陣乘法的裝置,所述裝置包括:多個暫存器;解碼電路,被配置成對第一指令進行解碼;以及執行電路,被配置成基於經解碼的第一指令辨識模式、所述多個暫存器中儲存第一矩陣資料的第一暫存器、所述多個暫存器中儲存第二矩陣資料的第二暫存器及所述多個暫存器中儲存第三矩陣資料的第三暫存器,基於所述模式選擇第一矩陣資料的行及第二矩陣資料的列,且基於所選擇的第一矩陣資料的行、所選擇的第二矩陣資料的列及第三矩陣資料實行乘法累加(MAC)運算。
根據本發明概念的另一態樣,提供一種用於矩陣乘法的方法,所述方法包括:由解碼電路對第一指令進行解碼;由執行電路基於經解碼的第一指令辨識模式、儲存第一矩陣資料的第一暫存器、儲存第二矩陣資料的第二暫存器及儲存第三矩陣資料的第三暫存器;由執行電路基於所辨識的模式選擇第一矩陣資料的行及第二矩陣資料的列;以及由執行電路基於所選擇的第一矩陣資料的行、所選擇的第二矩陣資料的列及第三矩陣資料實行乘法累加(MAC)運算。
根據本發明概念的又一態樣,提供一種包括可由處理器執行的指令的非暫時性電腦可讀取儲存媒體,其中所述指令包括第一指令,第一指令被配置成當由處理器執行時,指示處理器實行矩陣乘法,矩陣乘法包括:對第一指令進行解碼;基於經解碼的第一指令,辨識模式、儲存第一矩陣資料的第一暫存器、儲存第二矩陣資料的第二暫存器及儲存第三矩陣資料的第三暫存器;基於所辨識的模式選擇第一矩陣資料的行及第二矩陣資料的列;以及基於所選擇的第一矩陣資料的行、所選擇的第二矩陣資料的列及第三矩陣資料實行乘法累加(MAC)運算。
圖1是示出根據一些實例性實施例的裝置10的方塊圖。詳言之,圖1的方塊圖示出被配置成執行指令的裝置10的一部分。如圖1所示,裝置10可包括解碼電路12、執行電路14及多個暫存器16。在一些實施例中,如稍後參照圖12所述,除了圖1中所示的部件之外,裝置10可更包括用於執行指令的附加部件。
裝置10可指被配置成執行指令的任何硬體。舉例而言,裝置10可包括於如中央處理單元(central processing unit,CPU)、數位訊號處理器(digital signal processor,DSP)、圖形處理單元(graphics processing unit,GPU)、神經處理單元(neural processing unit,NPU)等之類的可程式化硬體中。在一些實施例中,裝置10可包括於藉由半導體製程製造的積體電路中,其中解碼電路12、執行電路14及/或所述多個暫存器16可彼此整合(例如,於一個晶粒上)或者可分別整合於二或更多個晶粒上。在一些實施例中,裝置10可被稱為處理器及/或處理電路系統。
裝置10可執行用於矩陣乘法的第一指令INS1。舉例而言,如圖1所示,裝置10可藉由執行第一指令INS1來實行暫存器16中儲存的第一矩陣A與第二矩陣B的乘法的至少部分以產生第三矩陣C並將第三矩陣C儲存於暫存器16中。此處,將闡述藉由實行作為4×4矩陣的第一矩陣A與第二矩陣B的乘法來產生作為4×4矩陣的第三矩陣C的實例,但實例性實施例不限於此。舉例而言,實例性實施例亦可應用於維數低於或高於4×4的矩陣的乘法且亦可應用於非方陣的矩陣的乘法(例如,M×N矩陣的乘法,其中M及N是大於0的整數)。此處,矩陣亦可被稱為矩陣資料。
如稍後將參照圖2所述,矩陣乘法可包括矩陣中所包括的元素之間的多次乘法,其中乘法的運算元可分別與位於矩陣中不同位置(例如,索引)處的元素對應。因此,矩陣乘法可包括對在硬體中實施的乘法器提供適當的輸入。如稍後將參照圖2及圖3所述,當對矩陣乘法使用對資料進行重排的指令時,矩陣乘法所需的時間可延長,並且可能會使用用於臨時儲存資料的資源(例如,暫存器)。
在由圖1的裝置10實行的矩陣乘法中,用於資料重排的硬體(例如,圖1的14_2)可與用於實行乘法的硬體(例如,圖1的14_4)進行組合。因此,可省略指令的執行,且因此,可以高速實行矩陣乘法。此外,可在矩陣乘法中共享由裝置10中的其他指令使用的硬體(例如,圖1的14_4),且因此可限制高速矩陣乘法的成本(例如,功耗及面積)的增加。此外,裝置10中用於矩陣乘法的資源(例如,暫存器)可減少,且因此可藉由用於執行其他指令的暫存器來提高包括裝置10或由裝置10執行的應用的效能。
解碼電路12可接收第一指令INS1且可藉由對第一指令INS1進行解碼來產生經解碼的第一指令INS1'。舉例而言,解碼電路12可自第一指令INS1提取運算碼及/或至少一個參數。在一些實施例中,解碼電路12可基於自第一指令INS1提取的運算碼的值,自第一指令INS1提取至少一個參數。經解碼的第一指令INS1'可包括自第一指令INS1提取的運算碼及/或至少一個參數且可被提供至執行電路14。如稍後所將闡述,第一指令INS1可指示多種模式中的一種模式。在一些實例性實施例中,解碼電路12不僅可對第一指令INS1進行解碼,且亦可對可由裝置10執行的指令集中包括的指令進行解碼。
執行電路14可自解碼電路12接收經解碼的第一指令INS1',並且可基於經解碼的第一指令INS1'實行矩陣乘法的至少一部分。舉例而言,執行電路14可對暫存器16之中儲存第一矩陣A的暫存器(此處可被稱為第一暫存器)、儲存第二矩陣B的暫存器(此處可被稱為第二暫存器)及儲存第三矩陣C的暫存器(此處可被稱為第三暫存器)進行存取。如圖1所示,執行電路14可包括多個多工器(multiplexer,MUX)14_2及多個乘法累加(multiply accumulate,MAC)運算器14_4。
多工器14_2可根據模式選擇第一矩陣A的元素及第二矩陣B的元素。舉例而言,執行電路14可基於經解碼的第一指令INS1'辨識模式,且多工器14_2可根據所辨識的模式來受到控制。在一些實施例中,多工器14_2中的一者可基於所辨識的模式選擇第一矩陣A的行,而多工器14_2中的另一者可基於所辨識的模式選擇第二矩陣B的列。多工器14_2可將所選擇的元素提供至MAC運算器14_4。在一些實施例中,多工器14_2可僅用於矩陣乘法。舉例而言,多工器14_2可因應於第一指令INS1而被啟用且可因應於其他指令而被停用(及/或被繞過)。
MAC運算器14_4可各自接收三個輸入且可實行將一個輸入與另兩個輸入的乘積相加的運算。舉例而言,MAC運算器可將第三矩陣C的元素、和由多工器14_2選擇的第一矩陣A的元素與第二矩陣B的元素的乘積相加。因此,將兩個值的乘積進行累加的運算可被稱為MAC運算。MAC運算器14_4可分別對第一矩陣A、第二矩陣B及第三矩陣C的元素的不同組合並列實行MAC運算。
MAC運算器14_4不僅可因應於用於進行矩陣乘法的指令(例如,第一指令INS1)且亦可因應於其他指令而分別並列實行MAC運算。舉例而言,解碼電路12可接收用於同時並列處理多個資料的指令(例如,單指令多資料(single instruction multiple data,SIMD)指令)並對所述指令進行解碼,並且執行電路14的MAC運算器14_4可並列實行與經解碼的SIMD指令對應的MAC運算。因此,MAC運算器14_4可由包括第一指令INS1的SIMD指令共享,並且矩陣乘法可重復使用MAC運算器14_4。因此,可省略用於高速矩陣乘法的專用乘法器及加法器。
暫存器16可由執行電路14進行存取且可儲存由執行電路14實行的運算的輸入資料及/或輸出資料。暫存器16可具有能夠儲存資料的結構,且執行電路14可同時對二或更多個暫存器16進行存取。在一些實施例中,暫存器16可被稱為暫存器檔案。
圖2及圖3是示出根據比較例的矩陣乘法的圖。詳言之,圖2示出第一矩陣A與第二矩陣B的乘法及用於矩陣乘法的偽碼20,且圖3示出由圖2的偽碼20計算的第一矩陣A、第二矩陣B及第三矩陣C的元素。在圖2中,偽碼20可對應於組合代碼(assembly code)。
參照圖2,第一矩陣A可包括多個元素A01至A16,第二矩陣B可包括多個元素B01至B16,且第三矩陣C可包括多個元素C01至C16。偽碼20可包括在實行MAC運算之前對提供至MAC運算器的輸入進行重排的指令。舉例而言,如圖2所示,偽碼20可包括用於產生MAC運算的輸入(例如,X及Y)的指令(例如,「混洗(shuffle)」),其中在執行排13中的MAC運算的指令之前,在排11及排12中對第一矩陣A及第二矩陣B的元素進行重排。
參照圖3,在第一運算OP1中,可實行第一矩陣A的第一行中包括的元素A01、A05、A09及A13與第二矩陣B的第一列中包括的元素B01至B04之間的乘法,並且其乘積可分別與第三矩陣C的元素C01至C16進行求和。舉例而言,第一矩陣A的第一行中包括的元素A01、A05、A09及A13可藉由圖2的排11中的「混洗」儲存於變數(或暫存器)「X」中,且元素A01、A05、A09及A13可在變數「X」中重複,如圖3所示。此外,第二矩陣B的第一列中包括的元素B01至B04可藉由圖2的排12中的「混洗」儲存於變數「Y」中,且元素B01至B04可在變數「Y」中重複,如圖3所示。藉由排13中的「MAC」,變數「X」的元素、變數「Y」的元素及第三矩陣C的元素可並列進行MAC運算。
在第二運算OP2中,可實行第一矩陣A的第二行中包括的元素A02、A06、A10及A14與第二矩陣B的第二列中包括的元素B05至B08之間的乘法,且其乘積可分別與第三矩陣C的元素C01至C16進行求和。舉例而言,第一矩陣A的第二行中包括的元素A02、A06、A10及A14可藉由圖2的列14的「混洗」儲存於變數「X」中,且元素A02、A06、A10及A14可在變數「X」中重複,如圖3所示。此外,第二矩陣B的第二列中包括的元素B05至B08可藉由圖2的列15中的「混洗」儲存於變數「Y」中,且元素B05至B08可在變數「Y」中重複,如圖3所示。藉由列16中的「MAC」,變數「X」的元素、變數「Y」的元素及第三矩陣C的元素可並列進行MAC運算。
在第三運算OP3中,可實行第一矩陣A的第三行中包括的元素A03、A07、A11及A15與第二矩陣B的第三列中包括的元素B09至B12之間的乘法,且其乘積可分別與第三矩陣C的元素C01至C16進行求和。舉例而言,第一矩陣A的第三行中包括的元素A03、A07、A11及A15可藉由圖2的列17的「混洗」儲存於變數「X」中,且元素A03、A07、A11及A15可在變數「X」中重複,如圖3所示。此外,第二矩陣B的第三列中包括的元素B09至B12可藉由圖2的列18中的「混洗」儲存於變數「Y」中,且元素B09至B12可在變數「Y」中重複,如圖3所示。藉由列19中的「MAC」,變數「X」的元素、變數「Y」的元素及第三矩陣C的元素可並列進行MAC運算。
在第四運算OP4中,可實行第一矩陣A的第四行中包括的元素A04、A08、A12及A16與第二矩陣B的第四列中包括的元素B13至B16之間的乘法,且其乘積可分別與第三矩陣C的元素C01至C16進行求和。舉例而言,第一矩陣A的第四行中包括的元素A04、A08、A12及A16可藉由圖2的列20中的「混洗」儲存於變數「X」中,且元素A04、A08、A12及A16可在變數「X」中重複,如圖3所示。此外,第二矩陣B的第四列中包括的元素B13至B16可藉由圖2的列21中的「混洗」儲存於變數「Y」中,且元素B13至B16可在變數「Y」中重複,如圖3所示。藉由列22中的「MAC」,變數「X」的元素、變數「Y」的元素及第三矩陣C的元素可並列進行MAC運算。
如上所述,偽碼20可包括總共12個指令(例如,8個「混洗」及4個「MAC」)以實行4×4矩陣乘法,且因此偽碼20可包括較下面參照圖7A及圖7B闡述的實例多的指令。此外,為了實行4×4矩陣乘法,除了儲存第一矩陣A及第二矩陣B的暫存器之外,偽碼20亦可使用附加的暫存器(例如,X及Y)。當如圖2所示連續執行4個「MAC」以使MAC運算以不同方式管線化時,可能需要8個暫存器來預先準備4個「MAC」的輸入。因此,偽碼20可使用較下面參照圖7A及圖7B闡述的實例多的資源。
圖4是示出根據一些實例性實施例的執行電路40的方塊圖。詳言之,圖4的方塊圖示出實行4×4矩陣乘法的圖1的執行電路14的運算的實例。如圖4所示,執行電路40可包括第一多工器41、第二多工器42及多個MAC運算器43。
第一多工器41及第二多工器42可接收模式訊號MD。在一些實例性實施例中,模式訊號MD可包括於圖1的經解碼的第一指令INS1'中,且執行電路40的模式可根據模式訊號MD來設定。執行電路40的模式可確定由MAC運算器43實行的乘法的運算元。舉例而言,第一多工器41可基於模式訊號MD選擇第一矩陣A的行中的一者且可輸出所選擇的行中包括的元素。此外,第二多工器42可基於模式訊號MD選擇第二矩陣B的列中的一者且可輸出所選擇的列中包括的元素。
第一多工器41及第二多工器42輸出的元素中的每一者可被提供至二或更多個MAC運算器。舉例而言,第一多工器41輸出的4個元素可如圖4所示重複,且16個重複的元素可被分別提供至16個MAC運算器。此外,第二多工器42輸出的4個元素可如圖4所示重複,且16個重複的元素可分別被提供至16個MAC運算器。
MAC運算器43可各自將第一多工器41輸出的元素與第二多工器42輸出的元素相乘且將第三矩陣C的元素與其乘積相加。如上面參照圖1所述,MAC運算器43不僅可由用於矩陣乘法的第一指令INS1使用,且亦可由其他指令(例如,SIMD指令)使用。
圖5A至圖5D是示出根據一些實例性實施例的矩陣乘法的圖。詳言之,圖5A至圖5D示出由圖4的執行電路40計算的第一矩陣A、第二矩陣B及第三矩陣C的元素。
參照圖5A,模式訊號MD可指示第一模式。在第一模式中,第一多工器51可選擇第一矩陣A的第一行且可輸出第一行中包括的元素A01、A05、A09及A13。此外,在第一模式中,第二多工器52可選擇第二矩陣B的第一列且可輸出第一列中包括的元素B01、B02、B03及B04。第一多工器51輸出的元素A01、A05、A09及A13以及第二多工器52輸出的元素B01、B02、B03及B04可如圖5A所示重複且可與第三矩陣C的元素C01至C16進行MAC運算。
參照圖5B,模式訊號MD可指示第二模式。在第二模式中,第一多工器51可選擇第一矩陣A的第二行且可輸出第二行中包括的元素A02、A06、A10及A14。此外,在第二模式中,第二多工器52可選擇第二矩陣B的第二列且可輸出第二列中包括的元素B05、B06、B07及B08。第一多工器51輸出的元素A02、A06、A10及A14以及第二多工器52輸出的元素B05、B06、B07及B08可如圖5B所示重複且可與第三矩陣C的元素C01至C16進行MAC運算。
參照圖5C,模式訊號MD可指示第三模式。在第三模式中,第一多工器51可選擇第一矩陣A的第三行且可輸出第三行中包括的元素A03、A07、A11及A15。此外,在第三模式中,第二多工器52可選擇第二矩陣B的第三列且可輸出第三列中包括的元素B09、B10、B11及B12。第一多工器51輸出的元素A03、A07、A11及A15以及第二多工器52輸出的元素B09、B10、B11及B12可如圖5C所示重複且可與第三矩陣C的元素C01至C16進行MAC運算。
參照圖5D,模式訊號MD可指示第四模式。在第四模式中,第一多工器51可選擇第一矩陣A的第四行且可輸出第四行中包括的元素A04、A08、A12及A16。此外,在第四模式中,第二多工器52可選擇第二矩陣B的第四列且可輸出第四列中包括的元素B13、B14、B15及B16。第一多工器51輸出的元素A04、A08、A12及A16以及第二多工器52輸出的元素B13、B14、B15及B16可如圖5D所示重複且可與第三矩陣C的元素C01至C16進行MAC運算。
如以上參照圖5A至圖5D所述,可僅使用指示第一多工器51及第二多工器52執行MAC運算的一個指令對資料進行重排。因此,可省略用於對資料進行重排的指令(例如,圖2的「混洗」)的使用及用於儲存重排的資料的單獨暫存器的使用。
圖6A及圖6B是示出根據一些實例性實施例的指令的實例的圖。詳言之,圖6A及圖6B分別示出用於矩陣乘法的圖1的第一指令INS1的實例。如上面參照附圖所述,第一指令INS1可指示模式,且圖1的執行電路14可根據所指示的模式不同地進行運算。在下文中,將參照圖1闡述圖6A及圖6B。
參照圖6A,第一指令INS1可包括運算碼OP及第一參數PAR1至第三參數PAR3。在一些實施例中,第一指令INS1可以與圖6A所示次序不同的次序包括運算碼OP及第一參數PAR1至第三參數PAR3。運算碼OP可具有指示矩陣乘法的值。解碼電路12可基於自第一指令INS1提取的運算碼OP的值來辨識矩陣乘法且辨識運算碼OP之後的第一參數PAR1至第三參數PAR3。此外,運算碼OP可具有指示矩陣乘法的模式的值,且解碼電路12可基於自第一指令INS1提取的運算碼的值將模式訊號(例如,圖4的MD)提供至執行電路14。因此,在圖6A的實例中,在4×4矩陣乘法的情形中,運算碼OP可具有分別與四種模式對應的四個不同的值中的一個值。
第一參數PAR1可具有指示暫存器(例如,第一暫存器)的位址(索引或指標)的值,第一矩陣A作為矩陣乘法的運算元儲存於所述暫存器中。第二參數PAR2可具有指示暫存器(例如,第二暫存器)的位址(索引或指標)的值,第二矩陣B作為矩陣乘法的運算元儲存於所述暫存器中。第三參數PAR3可具有指示暫存器(例如,第三暫存器)的位址(索引或指標)的值,第三矩陣C作為矩陣乘法的結果儲存於所述暫存器中。如上面參照圖1所述,第一矩陣A、第二矩陣B及第三矩陣C可分別儲存於暫存器16中包括的暫存器中,且第一參數PAR1至第三參數PAR3可指示分別儲存第一矩陣A、第二矩陣B及第三矩陣C的暫存器。稍後將參照圖7A闡述使用圖6A的第一指令INS1實行矩陣乘法的實例。
參照圖6B,第一指令INS1可包括運算碼OP及第一參數PAR1至第四參數PAR4。在一些實施例中,第一指令INS1可以與圖6B所示次序不同的次序包括運算碼OP及第一參數PAR1至第四參數PAR4。運算碼OP可具有指示矩陣乘法的值。解碼電路12可基於自第一指令INS1提取的運算碼的值來辨識矩陣乘法且辨識運算碼OP之後的第一參數PAR1至第四參數PAR4。不同於圖6A的以上實例,在圖6B的實例中,矩陣乘法的模式可由稍後將闡述的第四參數PAR4而不是運算碼OP來指示。因此,矩陣乘法中使用的第一指令INS1可包括具有恆定值的運算碼OP。稍後將參照圖7B闡述使用圖6B的第一指令INS1實行矩陣乘法的實例。
圖7A及圖7B是示出根據一些實例性實施例的用於矩陣乘法的偽碼的實例的圖。詳言之,圖7A示出包括圖6A的第一指令INS1的偽碼70a,且圖7B示出包括圖6B的第一指令INS1的偽碼70b。圖7A及圖7B的偽碼70a及偽碼70b可對應於組合代碼。在下文中,將參照圖6A及圖6B闡述圖7A及圖7B。
參照圖7A,偽碼70a可包括分別表示不同模式的指令。如上面參照圖6A所述,第一指令INS1可包括指示模式的運算碼OP,且因此偽碼70a可包括分別指示用於4×4矩陣乘法的第一模式至第四模式的四個指令。舉例而言,如圖7A所示,列21中的指令「MatMultMode1」可指示第一模式,列22中的指令「MatMultMode2」可指示第二模式,列23中的指令「MatMultMode3」可指示第三模式,且列24中的指令「MatMultMode4」可指示第四模式。此外,列21至24中的指令可共同具有「A」、「B」及「C」作為圖6A的第一參數PAR1至第三參數PAR3的值。相較於圖2的偽碼20而言,圖7A的偽碼70a可包括更少的指令且可使用更少的暫存器。
參照圖7B,偽碼70b可包括分別具有指示不同模式的參數的指令。如上面參照圖6B所述,第一指令INS1可包括指示模式的第四參數PAR4,且因此偽碼70b可包括分別具有第四參數PAR4的四個值的四個指令,第四參數PAR4的所述四個值指示用於4×4矩陣乘法的第一模式至第四模式。舉例而言,如圖7B所示,排41中的指令「MatMult」可包括具有指示第一模式的值「1」的第四參數PAR4,排42中的指令「MatMult」可包括具有指示第二模式的值「2」的第四參數PAR4,排43中的指令「MatMult」可包括具有指示第三模式的值「3」的第四參數PAR4,且排44中的指令「MatMult」可包括具有指示第四模式的值「4」的第四參數PAR4。在一些實施例中,第四參數PAR4的指示第一模式至第四模式的四個值可不同於圖7B中所示的值。此外,排41至排44中的指令可共同具有「A」、「B」及「C」作為圖6B所示第一參數PAR1至第三參數PAR3的值。因此,相較於圖2的偽碼20而言,圖7B的偽碼70b可包括更少的指令且可使用更少的暫存器。
如上面參照圖1所述,用於矩陣乘法的MAC運算器可由其他指令(例如,SIMD指令)共享。舉例而言,因應於圖7A的列31中的指令「MAC」(此處可被稱為第二指令),執行電路可使用列21至24中的指令所使用的多個MAC運算器將由「F」指示的暫存器的值(例如,向量資料)、和由「D」指示的暫存器的值(例如,向量資料)與由「E」指示的暫存器的值(例如,向量資料)的乘積相加。此外,因應於圖7B的指令「MAC」,執行電路可使用由列41至44中的指令使用的多個MAC運算器來將由「F」指示的暫存器的值(例如,向量資料)、和由「D」指示的暫存器的值(例如,向量資料)與由「E」指示的暫存器的值(例如,向量資料)的乘積相加。
圖8A及圖8B是示出根據一些實例性實施例的執行電路的實例的方塊圖。如上面參照附圖所述,圖8A及圖8B的執行電路80a及80b可因應於第一指令INS1實行矩陣乘法的至少一部分。將省略彼此相同的圖8A及圖8B的說明。
參照圖8A,執行電路80a可包括第一輸入暫存器81a至第三輸入暫存器83a、第一多工器84a及第二多工器85a以及多個MAC運算器88a。第一輸入暫存器81a可連接至第一多工器84a,第二輸入暫存器82a可連接至第二多工器85a,且第三輸入暫存器83a可連接至MAC運算器88a。執行電路80a可因應於第一指令INS1將矩陣乘法(例如,第一矩陣A與第二矩陣B)的運算元複製至第一輸入暫存器81a及第二輸入暫存器82a。舉例而言,執行電路80a可基於第一指令INS1中包括的第一參數PAR1及第二參數PAR2的值來辨識用於儲存第一矩陣A的暫存器及用於儲存第二矩陣B的暫存器,並且將第一矩陣A及第二矩陣B自所辨識的暫存器複製至第一輸入暫存器81a及第二輸入暫存器82a。
第一輸入暫存器81a與第一多工器84a可彼此連接,使得能夠根據模式選擇第一輸入暫存器81a中儲存的第一矩陣A的行。舉例而言,在4×4矩陣乘法中,第一多工器84a可用作4:1多工器,且第一多工器84a的四個輸入可連接至第一輸入暫存器81a以分別接收與第一矩陣A的四個行對應的位元。相似地,第二輸入暫存器82a與第二多工器85a可彼此連接,使得能夠根據模式選擇第二輸入暫存器82a中儲存的第二矩陣B的列。舉例而言,在4×4矩陣乘法中,第二多工器85a可用作4:1多工器,且第二多工器85a的四個輸入可連接至第二輸入暫存器82a以分別接收與第二矩陣B的四個列對應的位元。
第一多工器84a可連接至MAC運算器88a,使得第一多工器84a的輸出(例如,所選擇的第一矩陣A的行中包括的元素)如上面參照附圖所述重複。此外,第二多工器85a可連接至MAC運算器88a,使得第二多工器85a的輸出(例如,所選擇的第二矩陣B的列中包括的元素)如上面參照附圖所述重複。
執行電路80a可將矩陣乘法的結果(例如,第三矩陣C)複製至第三輸入暫存器83a。舉例而言,執行電路80a可基於第一指令INS1中包括的第三參數PAR3的值辨識儲存第三矩陣C的暫存器並將第三矩陣C自所辨識的暫存器複製至第三輸入暫存器83a。第三輸入暫存器83a與MAC運算器88a可彼此連接,使得第三矩陣C的元素被分別提供至MAC運算器88a。
參照圖8B,執行電路80b可包括第一輸入暫存器81b至第三輸入暫存器83b、第一多工器84b及第二多工器85b、第一重排暫存器86b及第二重排暫存器87b以及多個MAC運算器88b。相較於圖8A的執行電路80a而言,圖8B的執行電路80b可更包括第一重排暫存器86b及第二重排暫存器87b。第一輸入暫存器81b可連接至第一多工器84b,第二輸入暫存器82b可連接至第二多工器85b,且第三輸入暫存器83b可連接至MAC運算器88b。
第一重排暫存器86b及第二重排暫存器87b可產生MAC運算的輸入(例如,藉由對分別自第一多工器84b及第二多工器85b接收的輸出進行混洗)。舉例而言,第一多工器84b可連接至第一重排暫存器86b,使得第一多工器84b的輸出(例如,所選擇的第一矩陣A的行中包括的元素)如上面參照附圖所述重複。第一重排暫存器86b與MAC運算器88b可彼此連接,使得第一重排暫存器86b中儲存的元素被分別提供至MAC運算器88b。此外,第二多工器85b可連接至第二重排暫存器87b,使得第二多工器85b的輸出(所選擇的第二矩陣B的列中包括的元素)如上面參照附圖所述重複。第二重排暫存器87b與MAC運算器88b可彼此連接,使得第二重排暫存器87b中儲存的元素被分別提供至MAC運算器88b。
圖9是根據一些實例性實施例的用於矩陣乘法的方法的流程圖。如圖9所示,用於矩陣乘法的方法可包括多個操作S20、S40、S60及S80。在一些實施例中,圖9的方法可由圖1的裝置10來實行。下面將參照圖1闡述圖9。
參照圖9,在操作S20中,可對第一指令INS1進行解碼。舉例而言,解碼電路12可接收第一指令INS1且可藉由對第一指令INS1進行解碼來產生經解碼的第一指令INS1'。解碼電路12可自第一指令INS1提取運算碼及/或至少一個參數,且經解碼的第一指令INS1'可包括所提取的運算碼及/或所述至少一個參數。稍後將參照圖10A及圖10B闡述操作S20的實例。
在操作S40中,可辨識模式及暫存器。舉例而言,執行電路14可接收經解碼的第一指令INS1'且可基於經解碼的第一指令INS1'辨識模式及暫存器。在一些實施例中,如上面參照圖6A所述,模式可由第一指令INS1中包括的運算碼來辨識。在一些實施例中,如上面參照圖6B所述,模式可由第一指令INS1中包括的參數(例如,圖6B的PAR4)的值來辨識。此外,執行電路14可基於經解碼的第一指令INS1'中包括的參數的值來辨識暫存器。舉例而言,執行電路14可基於參數的值來辨識儲存矩陣乘法的運算元的暫存器及儲存矩陣乘法的結果的暫存器。
在操作S60中,可選擇列及行。舉例而言,執行電路14中包括的多工器14_2可根據在操作S40中辨識的模式選擇第一矩陣A的行及第二矩陣B的列。因此,可由第一指令INS1所指示的模式來確定資料重排,並且可省略用於資料重排的指令的使用。
在操作S80中,可實行MAC運算。舉例而言,執行電路14中包括的MAC運算器14_4可產生自多工器14_2接收的元素的乘積且分別對所述乘積與第三矩陣C的元素進行求和。MAC運算器14_4不僅可用於第一指令INS1且亦可用於其他指令。因此,可省略用於矩陣乘法的附加乘法器及加法器。
圖10A及圖10B是示出根據一些實例性實施例的用於矩陣乘法的方法的實例的流程圖。詳言之,圖10A及圖10B示出圖9的操作S20的實例。如上面參照圖9所述,在圖10A的操作S20a及圖10B的操作S20b中,可對第一指令INS1進行解碼。在下文中,將參照圖6A及圖6B闡述圖10A及圖10B。
參照圖10A,操作S20a可包括操作S22及S24。在一些實施例中,如上面參照圖6A所述,第一指令INS1可包括運算碼OP及第一參數PAR1至第三參數PAR3。因此,在操作S22中可提取運算碼OP,且在操作S24中可提取第一參數PAR1至第三參數PAR3。在操作S22中提取的運算碼OP不僅可指示矩陣乘法,且亦可指示矩陣乘法的模式,並且解碼電路12可接收四種類型的第一指令INS1且對所述四種類型的第一指令INS1進行解碼,所述四種類型的第一指令INS1分別具有用於4×4矩陣乘法的四個不同的運算碼。在操作S24中提取的第一參數PAR1至第三參數PAR3可分別指示儲存矩陣乘法的運算元的位置及儲存矩陣乘法的結果的位置。
參照圖10B,操作S20b可包括操作S26及S28。在一些實施例中,如上面參照圖6B所述,第一指令INS1可包括運算碼OP及第一參數PAR1至第四參數PAR4。因此,在操作S26中可提取運算碼OP,且在操作S28中可提取第一參數PAR1至第四參數PAR4。在操作S26中提取的運算碼OP可指示矩陣乘法。在操作S28中提取的第一參數PAR1至第三參數PAR3可分別指示儲存矩陣乘法的運算元的位置,且第四參數PAR4可指示矩陣乘法的模式。因此,解碼電路12可接收四個第一指令INS1且對所述四個第一指令INS1進行解碼,所述四個第一指令INS1具有用於4×4矩陣乘法的第四參數PAR4的四個不同的值。
圖11是根據一些實例性實施例的用於矩陣乘法的方法的流程圖。在一些實施例中,圖11的操作S30可在圖9的操作S20與S40之間實行。如圖11所示,操作S30可包括操作S31及S32。在一些實施例中,操作S30可由圖8A的執行電路80a實行,且下面將參照圖8A闡述圖11。
參照圖11,在操作S31中,可將第一矩陣資料複製至第一輸入暫存器81a。舉例而言,執行電路80a可基於第一指令INS1中包括的第一參數PAR1來辨識儲存第一矩陣A的暫存器並將第一矩陣A自所辨識的暫存器複製至第一輸入暫存器81a。
在操作S32中,可將第二矩陣資料複製至第二輸入暫存器82a。舉例而言,執行電路80a可基於第一指令INS1中包括的第二參數PAR2來辨識儲存第二矩陣B的暫存器並將第二矩陣B自所辨識的暫存器複製至第二輸入暫存器82a。
在一些實施例中,操作S30可僅在矩陣乘法的多種模式中的一種模式中實行。舉例而言,如上面參照圖7A及圖7B所述,用於矩陣乘法的指令可具有相同的參數,且因此可因應於初始指令(例如,指示第一模式的指令(例如,圖7A的列21中的指令或圖7B的列41中的指令))實行將第一矩陣資料及第二矩陣資料複製至第一輸入暫存器81a及第二輸入暫存器82a的操作。
圖12是示出根據一些實例性實施例的系統120的方塊圖。如圖12所示,系統120可包括處理器121及記憶體122。處理器121可實行如上面參照附圖所述的矩陣乘法。
系統120可指其中處理器121藉由執行記憶體122中儲存的指令來實行功能的任何硬體。舉例而言,系統120可為如下面參照圖13所述的獨立計算系統。此外,系統120可為更高階系統中包括的部件且可為例如其中處理器121與記憶體122彼此整合於一個晶片上的系統晶片(system-on-chip,SoC)及/或包括處理器121、記憶體122及上面安裝有處理器121及記憶體122的板的模組。
處理器121可與記憶體122進行通訊,讀取記憶體122中儲存的指令及/或資料及/或將資料寫入至記憶體122。如圖12所示,處理器121可包括位址產生器121_1、指令高速緩衝記憶體121_2、擷取電路121_3、解碼電路121_4、執行電路121_5及多個暫存器121_6。
位址產生器121_1可產生用於讀取指令及/或資料的位址且可將所產生的位址提供至記憶體122。舉例而言,位址產生器121_1可接收解碼電路121_4藉由對指令進行解碼而提取的資訊,並且可基於接收到的資訊產生位址。
指令高速緩衝記憶體121_2可自記憶體122的與由位址產生器121_1產生的位址對應的區接收指令且臨時儲存接收到的指令。由於執行預先儲存於指令高速緩衝記憶體121_2中的指令,因此可減少執行指令所需的總時間。
擷取電路121_3可擷取指令高速緩衝記憶體121_2中儲存的指令中的至少一者並將所擷取的指令提供至解碼電路121_4。如上面參照附圖所述,擷取電路121_3可擷取用於實行矩陣乘法的至少一部分的指令(例如,圖1的第一指令INS1)並將第一指令INS1提供至解碼電路121_4。
解碼電路121_4可自擷取電路121_3接收所擷取的指令且可對所擷取的指令進行解碼。舉例而言,解碼電路121_4可自擷取電路121_3接收第一指令INS1且對第一指令INS1進行解碼。如圖12所示,解碼電路121_4可將藉由對所擷取的指令(例如,圖1的經解碼的第一指令INS1')進行解碼而提取的資訊提供至位址產生器121_1及執行電路121_5。
執行電路121_5可自解碼電路121_4接收經解碼的指令且可對暫存器121_6進行存取。舉例而言,執行電路121_5可自解碼電路121_4接收經解碼的第一指令INS1'且基於經解碼的第一指令INS1'對暫存器121_6中的至少一者進行存取,並且實行矩陣乘法的至少一部分。如上面參照附圖所述,經解碼的第一指令INS1'可指示多種模式中的一種模式,且執行電路121_5可基於所述模式選擇輸入至MAC運算的資料。因此,在矩陣乘法中,可省略用於資料對齊的單獨指令,且因此可消除附加資源的使用。
暫存器121_6可由執行電路121_5進行存取。舉例而言,暫存器121_6可因應於執行電路121_5的存取而將資料提供至執行電路121_5且因應於執行電路121_5的存取而儲存由執行電路121_5提供的資料。此外,暫存器121_6可儲存自記憶體122讀取的資料或者儲存欲儲存於記憶體122中的資料。舉例而言,暫存器121_6可自記憶體122的與由位址產生器121_1產生的位址對應的區接收資料並儲存接收到的資料。此外,暫存器121_6可將欲寫入至記憶體122的與由位址產生器121_1產生的位址對應的區的資料提供至記憶體122。
記憶體122可具有用於儲存指令及/或資料的結構。舉例而言,記憶體122可包括如靜態隨機存取記憶體(static random access memory,SRAM)及動態隨機存取記憶體(dynamic random access memory,DRAM)之類的揮發性記憶體及/或快閃記憶體及電阻式隨機存取記憶體(resistive random access memory,RRAM)之類的非揮發性記憶體。
圖13是示出根據一些實例性實施例的計算系統130的方塊圖。在一些實施例中,上面參照附圖所述的用於矩陣乘法的方法可由圖13的計算系統130實行。
計算系統130可為如桌上型電腦、工作站及/或伺服器之類的固定計算系統或者可為如膝上型電腦之類的可攜式計算系統。如圖13所示,計算系統130可包括至少一個處理器131、輸入/輸出(input/output,I/O)介面132、網路介面133、記憶體子系統134、儲存器135及匯流排136;且所述至少一個處理器131、輸入/輸出介面132、網路介面133、記憶體子系統134與儲存器135可經由匯流排136彼此進行通訊。
所述至少一個處理器131可被稱為至少一個處理單元且可為如CPU、GPU、NPU及/或DSP之類的可程式化處理器。舉例而言,所述至少一個處理器131可經由匯流排136對記憶體子系統134進行存取且執行記憶體子系統134中儲存的指令。在一些實施例中,計算系統130可更包括加速器,所述加速器是被設計成以高速實行特定功能的專用硬體。在一些實施例中,所述至少一個處理器131可執行上面參照附圖闡述的第一指令INS1,藉此減少矩陣乘法所需的時間及資源。
輸入/輸出介面132可包括輸入元件(如鍵盤、觸控板、麥克風、定點元件及/或類似元件)及/或輸出元件(如顯示元件、揚聲器、打印機及/或類似元件)或者提供對輸入元件(如鍵盤、觸控板、麥克風、定點元件及/或類似元件)及/或輸出元件(如顯示元件、揚聲器、打印機及/或類似元件)的存取。使用者可經由輸入/輸出介面132觸發程式135_1的執行及/或資料135_2的加載且亦可檢查程式135_1的執行結果。
網路介面133可提供對計算系統130外部的網路的存取。舉例而言,網路可包括多個計算系統及通訊鏈路,且通訊鏈路可包括有線鏈路、光學鏈路、無線鏈路及/或任何其他類型的鏈路。
記憶體子系統134可儲存用於上面參照附圖所述的矩陣乘法的程式135_1(或其至少一部分),且所述至少一個處理器131可執行記憶體子系統134中儲存的程式(或指令)以實行用於矩陣乘法的方法中包括的運算中的至少一些運算。記憶體子系統134可包括唯讀記憶體(read only memory,ROM)、隨機存取記憶體(random access memory,RAM)等。
儲存器135可為非暫時性電腦可讀取儲存媒體以使得即使當對計算系統130供應的電源被切斷時,所儲存的資料可能亦不會丟失。舉例而言,儲存器135可包括非揮發性記憶體元件或者如磁帶、光碟、磁碟及/或類似儲存媒體之類的儲存媒體。在一些實例性實施例中,儲存器135可自計算系統130拆離。如圖13所示,儲存器135可儲存程式135_1及資料135_2。
在由所述至少一個處理器131執行之前,程式135_1的至少一部分可被加載至記憶體子系統134中。程式135_1可包括一系列指令,且所述一系列指令可包括用於矩陣乘法的至少一個第一指令INS1。在一些實施例中,儲存器135可儲存以程式語言編寫的檔案,且由編譯器等自所述檔案產生的程式135_1或者程式135_1的至少一部分可被加載至記憶體子系統134。
資料135_2可包括與矩陣乘法相關的資料。舉例而言,資料135_2可包括矩陣乘法的運算元(例如,第一矩陣A及第二矩陣B),並且可包括矩陣乘法的結果(例如,第三矩陣C)。
在本揭露中,除非另外明確指明,否則表示處理(及/或實行)至少一個功能或操作的組件的功能塊可包括於例如硬體、軟件或硬體與軟件的組合等處理電路系統中及/或實施為所述處理電路系統(及/或實施於所述處理電路系統中)。舉例而言,處理電路系統更具體而言可包括(及/或包括於以下裝置中)但不限於處理器(及/或多個處理器)、中央處理單元(CPU)、控制器、算術邏輯單元(arithmetic logic unit,ALU)、數位訊號處理器、微電腦、現場可程式化閘陣列(field programmable gate array,FPGA)、系統晶片(SoC)、可程式化邏輯單元、微處理器、應用專用積體電路(application-specific integrated circuit,ASIC)等。
儘管已參照本發明的實施例具體示出及闡述了本發明概念,然而應理解,可在不背離以下申請專利範圍的精神及範圍的條件下,對其做出形式及細節上的各種改變。
10:裝置
12、121_4:解碼電路
14、40、80a、80b、121_5:執行電路
14_2:多工器(MUX)/硬體
14_4:乘法累加(MAC)運算器/硬體
16、121_6:暫存器
20、70a、70b:偽碼
41、51、84a、84b:第一多工器
42、52、85a、85b:第二多工器
43、88a、88b:MAC運算器
81a、81b:第一輸入暫存器
82a、82b:第二輸入暫存器
83a、83b:第三輸入暫存器
86b:第一重排暫存器
87b:第二重排暫存器
120:系統
121、131:處理器
121_1:位址產生器
121_2:指令高速緩衝記憶體
121_3:擷取電路
122:記憶體
130:計算系統
132:輸入/輸出(I/O)介面
133:網路介面
134:記憶體子系統
135:儲存器
135_1:程式
135_2:資料
136:匯流排
A:第一矩陣
A01、A02、A03、A04、A05、A06、A07、A08、A09、A10、A11、A12、A13、A14、A15、A16、B01、B02、B03、B04、B05、B06、B07、B08、B09、B10、B11、B12、B13、B14、B15、B16、C01、C02、C03、C04、C05、C06、C07、C08、C09、C10、C11、C12、C13、C14、C15、C16:元素
B:第二矩陣
C:第三矩陣
INS1:第一指令
INS1':經解碼的第一指令
MatMult、MatMultMode1、MatMultMode2、MatMultMode3、MatMultMode4:指令
MD:模式訊號
OP:運算碼
OP1:第一運算
OP2:第二運算
OP3:第三運算
OP4:第四運算
PAR1:第一參數
PAR2:第二參數
PAR3:第三參數
PAR4:第四參數/參數
S20、S20a、S20b、S22、S24、S26、S28、S30、S31、S32、S40、S60、S80:操作
X:變數/暫存器/輸入
Y:變數/暫存器/輸入
結合附圖閱讀以下詳細說明,將更清晰地理解本發明概念的實施例,在附圖中:
圖1是示出根據一些實例性實施例的裝置的方塊圖。
圖2及圖3是示出根據比較例的矩陣乘法的圖。
圖4是示出根據一些實例性實施例的執行電路的方塊圖。
圖5A至圖5D是示出根據一些實例性實施例的矩陣乘法的圖。
圖6A及圖6B是示出根據一些實例性實施例的指令的實例的圖。
圖7A及圖7B是示出根據一些實例性實施例的用於矩陣乘法的偽碼的實例的圖。
圖8A及圖8B是示出根據一些實例性實施例的執行電路的實例的方塊圖。
圖9是根據一些實例性實施例的用於矩陣乘法的方法的流程圖。
圖10A及圖10B是示出根據一些實例性實施例的用於矩陣乘法的方法的實例的流程圖。
圖11是根據一些實例性實施例的用於矩陣乘法的方法的流程圖。
圖12是示出根據一些實例性實施例的系統的方塊圖。
圖13是示出根據一些實例性實施例的計算系統的方塊圖。
10:裝置
12:解碼電路
14:執行電路
14_2:多工器(MUX)/硬體
14_4:乘法累加(MAC)運算器/硬體
16:暫存器
A:第一矩陣
B:第二矩陣
C:第三矩陣
INS1:第一指令
INS1':經解碼的第一指令
Claims (20)
- 一種用於矩陣乘法的裝置,所述裝置包括: 多個暫存器; 解碼電路,被配置成對第一指令進行解碼;以及 執行電路,被配置成 基於經解碼的所述第一指令,辨識模式、所述多個暫存器中儲存第一矩陣資料的第一暫存器、所述多個暫存器中儲存第二矩陣資料的第二暫存器及所述多個暫存器中儲存第三矩陣資料的第三暫存器, 基於所述模式選擇所述第一矩陣資料的行及所述第二矩陣資料的列,以及 基於所選擇的所述第一矩陣資料的所述行、所選擇的所述第二矩陣資料的所述列及所述第三矩陣資料實行乘法累加(MAC)運算。
- 如請求項1所述的裝置,其中所述執行電路包括: 第一多工器,被配置成基於所述模式輸出與所選擇的所述第一矩陣資料的所述行對應的資料;以及 第二多工器,被配置成基於所述模式輸出與所選擇的所述第二矩陣資料的所述列對應的資料。
- 如請求項2所述的裝置,其中所述執行電路更包括: 第一輸入暫存器,連接至所述第一多工器的輸入;以及 第二輸入暫存器,連接至所述第二多工器的輸入,並且 所述執行電路被配置成基於經解碼的所述第一指令將所述第一矩陣資料自所述第一暫存器複製至所述第一輸入暫存器且將所述第二矩陣資料自所述第二暫存器複製至所述第二輸入暫存器。
- 如請求項1所述的裝置,其中所述執行電路包括多個乘法累加運算器,所述多個乘法累加運算器被配置成分別對所述第三矩陣資料中包括的元素、和所選擇的所述第一矩陣資料的所述行中包括的元素與所選擇的所述第二矩陣資料的所述列中包括的元素的乘積進行求和。
- 如請求項4所述的裝置,其中 所選擇的所述第一矩陣資料的所述行中包括的所述元素被提供至所述多個乘法累加運算器中的二或更多個乘法累加運算器, 所選擇的所述第二矩陣資料的所述列中包括的所述元素被提供至所述多個乘法累加運算器中的二或更多個乘法累加運算器,且 所述第三矩陣資料中包括的所述元素被提供至所述多個乘法累加運算器中的一個乘法累加運算器。
- 如請求項1所述的裝置,其中所述解碼電路被配置成自所述第一指令提取指示矩陣乘法的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數、指示所述第三暫存器的第三參數及指示所述模式的第四參數。
- 如請求項1所述的裝置,其中所述解碼電路被配置成自所述第一指令提取指示矩陣乘法及所述模式的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數及指示所述第三暫存器的第三參數。
- 如請求項1所述的裝置,其中 所述解碼電路更被配置成對第二指令進行解碼,並且 所述執行電路被配置成基於經解碼的第二指令辨識儲存第一向量資料的第四暫存器、儲存第二向量資料的第五暫存器及儲存第三向量資料的第六暫存器,且基於所述第一向量資料、所述第二向量資料及所述第三向量資料實行乘法累加運算。
- 一種用於矩陣乘法的方法,所述方法包括: 由解碼電路對第一指令進行解碼; 由執行電路基於經解碼的所述第一指令辨識模式、儲存第一矩陣資料的第一暫存器、儲存第二矩陣資料的第二暫存器及儲存第三矩陣資料的第三暫存器; 由所述執行電路基於所辨識的模式選擇所述第一矩陣資料的行及所述第二矩陣資料的列;以及 由所述執行電路基於所選擇的所述第一矩陣資料的所述行、所選擇的所述第二矩陣資料的所述列及所述第三矩陣資料實行乘法累加(MAC)運算。
- 如請求項9所述的方法,其中所述執行電路包括多個乘法累加運算器, 實行所述乘法累加運算包括由所述多個乘法累加運算器中的一個乘法累加運算器對所述第三矩陣資料中包括的元素、和所選擇的所述第一矩陣資料的所述行中包括的元素與所選擇的所述第二矩陣資料的所述列中包括的元素的乘積進行求和,並且 所述多個乘法累加運算器對所述第三矩陣資料中包括的元素進行並列運算。
- 如請求項10所述的方法,其中所述實行所述乘法累加運算包括 將所選擇的所述第一矩陣資料的所述行中包括的所述元素提供至所述多個乘法累加運算器中的二或更多個乘法累加運算器, 將所選擇的所述第二矩陣資料的所述列中包括的所述元素提供至所述多個乘法累加運算器中的二或更多個乘法累加運算器,以及 將所述第三矩陣資料中包括的所述元素提供至所述多個乘法累加運算器中的一個乘法累加運算器。
- 如請求項10所述的方法,更包括: 由所述解碼電路對第二指令進行解碼;以及 基於經解碼的所述第二指令,由所述多個乘法累加運算器基於第一向量資料、第二向量資料及第三向量資料實行乘法累加運算。
- 如請求項9所述的方法,其中所述對所述第一指令進行解碼包括由所述解碼電路自所述第一指令提取指示矩陣乘法的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數、指示所述第三暫存器的第三參數及指示所述模式的第四參數。
- 如請求項9所述的方法,其中所述對所述第一指令進行解碼包括由所述解碼電路自所述第一指令提取指示矩陣乘法及所述模式的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數及指示所述第三暫存器的第三參數。
- 一種包括能夠由處理器執行的指令的非暫時性電腦可讀取儲存媒體,其中所述指令包括第一指令,所述第一指令被配置成當由所述處理器執行時,指示所述處理器實行矩陣乘法,所述矩陣乘法包括: 對所述第一指令進行解碼; 基於經解碼的所述第一指令,辨識模式、儲存第一矩陣資料的第一暫存器、儲存第二矩陣資料的第二暫存器及儲存第三矩陣資料的第三暫存器; 基於所辨識的所述模式選擇所述第一矩陣資料的行及所述第二矩陣資料的列;以及 基於所選擇的所述第一矩陣資料的所述行、所選擇的所述第二矩陣資料的所述列及所述第三矩陣資料實行乘法累加(MAC)運算。
- 如請求項15所述的非暫時性電腦可讀取儲存媒體,其中所述第一指令包括指示矩陣乘法的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數、指示所述第三暫存器的第三參數及指示所述模式的第四參數。
- 如請求項16所述的非暫時性電腦可讀取儲存媒體, 其中所述指令包括用於對所述第一參數的相同的值、所述第二參數的相同的值、所述第三參數的相同的值及所述第四參數的不同的值重複執行所述第一指令的至少一個指令。
- 如請求項15所述的非暫時性電腦可讀取儲存媒體,其中所述第一指令包括指示矩陣乘法及所述模式的運算碼、指示所述第一暫存器的第一參數、指示所述第二暫存器的第二參數及指示所述第三暫存器的第三參數。
- 如請求項18所述的非暫時性電腦可讀取儲存媒體,其中所述指令包括包含所述第一參數、所述第二參數及所述第三參數的至少一個指令,所述至少一個指令各自具有與所述第一指令相同的值且對應於與所述第一指令的所述模式不同的模式。
- 如請求項15所述的非暫時性電腦可讀取儲存媒體,其中所述指令包括第二指令,所述第二指令被配置成當由所述處理器執行時,指示所述處理器實行向量乘法,且所述向量乘法包括: 對所述第二指令進行解碼;以及 基於經解碼的所述第二指令,基於第一向量資料、第二向量資料及第三向量資料實行乘法累加運算。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2021-0139115 | 2021-10-19 | ||
KR1020210139115A KR20230055573A (ko) | 2021-10-19 | 2021-10-19 | Mac 연산을 재사용하는 행렬 곱셈을 위한 장치, 방법 및 시스템 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202324146A true TW202324146A (zh) | 2023-06-16 |
Family
ID=85982702
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111139665A TW202324146A (zh) | 2021-10-19 | 2022-10-19 | 用於矩陣乘法的裝置及方法以及電腦可讀取儲存媒體 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230118082A1 (zh) |
KR (1) | KR20230055573A (zh) |
CN (1) | CN115993951A (zh) |
TW (1) | TW202324146A (zh) |
-
2021
- 2021-10-19 KR KR1020210139115A patent/KR20230055573A/ko unknown
-
2022
- 2022-10-17 CN CN202211268517.XA patent/CN115993951A/zh active Pending
- 2022-10-17 US US17/967,279 patent/US20230118082A1/en active Pending
- 2022-10-19 TW TW111139665A patent/TW202324146A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
KR20230055573A (ko) | 2023-04-26 |
US20230118082A1 (en) | 2023-04-20 |
CN115993951A (zh) | 2023-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3602278B1 (en) | Systems, methods, and apparatuses for tile matrix multiplication and accumulation | |
US11775313B2 (en) | Hardware accelerator for convolutional neural networks and method of operation thereof | |
US10896369B2 (en) | Power conversion in neural networks | |
CN110770701B (zh) | 基于寄存器的矩阵乘法 | |
US10338925B2 (en) | Tensor register files | |
US10372456B2 (en) | Tensor processor instruction set architecture | |
US8595280B2 (en) | Apparatus and method for performing multiply-accumulate operations | |
EP3451162A1 (en) | Device and method for use in executing matrix multiplication operations | |
US7814297B2 (en) | Algebraic single instruction multiple data processing | |
US9696994B2 (en) | Apparatus and method for comparing a first vector of data elements and a second vector of data elements | |
US20140129802A1 (en) | Methods, apparatus, and instructions for processing vector data | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
CN110312993B (zh) | 数据处理装置中的向量逐元素操作 | |
US11074214B2 (en) | Data processing | |
US20200356836A1 (en) | Fast deep learning fully-connected column-major implementation | |
US11409840B2 (en) | Dynamically adaptable arrays for vector and matrix operations | |
US20140207838A1 (en) | Method, apparatus and system for execution of a vector calculation instruction | |
US20230289191A1 (en) | Vertical and horizontal broadcast of shared operands | |
TW202324146A (zh) | 用於矩陣乘法的裝置及方法以及電腦可讀取儲存媒體 | |
KR102591988B1 (ko) | 데이터 처리장치에서의 벡터 인터리빙 | |
JP2018521422A (ja) | ベクトル長クエリ命令 | |
JP7020555B2 (ja) | 情報処理装置、情報処理方法、及びプログラム | |
US20050055394A1 (en) | Method and system for high performance, multiple-precision multiply-and-add operation | |
US20240111530A1 (en) | Matrix multiplication unit with flexible precision operations | |
WO2020246598A1 (ja) | 演算装置、演算方法、および演算プログラム |