TWI794789B - 向量運算裝置和方法 - Google Patents
向量運算裝置和方法 Download PDFInfo
- Publication number
- TWI794789B TWI794789B TW110113315A TW110113315A TWI794789B TW I794789 B TWI794789 B TW I794789B TW 110113315 A TW110113315 A TW 110113315A TW 110113315 A TW110113315 A TW 110113315A TW I794789 B TWI794789 B TW I794789B
- Authority
- TW
- Taiwan
- Prior art keywords
- mentioned
- general
- instruction
- register
- matrix multiplication
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 26
- 239000011159 matrix material Substances 0.000 claims abstract description 79
- 238000004364 calculation method Methods 0.000 claims abstract description 69
- 238000009825 accumulation Methods 0.000 claims abstract description 21
- 239000000284 extract Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 230000004888 barrier function Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012884 algebraic function Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/16—Constructional details or arrangements
-
- 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/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- 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
-
- 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
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Advance Control (AREA)
Abstract
本發明涉及一種統合矩陣連乘和累加計算的向量運算裝置和方法,該裝置包括:流多處理器和通用矩陣連乘計算單元。流多處理器包含通用寄存器,而通用矩陣連乘計算單元包含指令佇列和算術邏輯單元。算術邏輯單元耦接通用寄存器,依據指令佇列中的通用矩陣連乘指令執行矩陣連乘和累加計算,並且將計算結果儲存到通用寄存器。本發明通過如上所述的流多處理器和通用矩陣連乘計算單元的統合架構,可避免耗費時間和匯流排頻寬在通用矩陣連乘計算單元中的本地快取和流多處理器的通用寄存器之間遷移資料。
Description
本發明涉及向量運算領域,尤指一種統合矩陣連乘和累加的計算的向量運算裝置和方法。
向量計算機是一種配備了專門的向量指令,用於提高向量處理速度的計算機。向量計算機能夠同時處理多個執行緒束(Warp)的資料計算,因此,向量計算機就處理執行緒束的資料而言,比標量計算機(Scalar Computer)快得多。為了計算多個執行緒束的資料,向量計算機通常配備流多處理器集群(Streaming Multiprocessor Cluster,SMC)。另外,為了大數據和人工智慧的計算應用,向量計算機配置矩陣連乘和累加的計算的需求高度增加。因此,本發明提出一種向量運算裝置和方法,用於統合矩陣連乘和累加的計算。
有鑑於此,為了大數據和人工智慧的計算應用,向量計算機架構的重新設計是個重要的課題。
本發明的實施例涉及一種向量運算裝置,包括:流多處理器和通用矩陣連乘計算單元。流多處理器包含通用寄存器,而通用矩陣連乘計算單元包含指令佇列和算術邏輯單元。算術邏輯單元耦接通用寄存器,依據指令佇列中的通用矩陣連乘指令執行矩陣連乘和累加計算,並且將計算結果儲存到通用寄存器。
本發明的實施例還涉及一種向量運算方法,由流多處理器和通用矩陣連乘計算單元協力執行,其中,流多處理器包含第一算術邏輯單元,通用矩陣連乘計算單元包含第二算術邏輯單元,上述方法包括:
第一算術邏輯單元當提取的指令是通用矩陣連乘指令時,從流多處理器中的通用寄存器讀取來源資料,將通用矩陣連乘指令和來源資料推入通用矩陣連乘計算單元中的指令佇列;以及第二算術邏輯單元依據指令佇列中的通用矩陣連乘指令執行矩陣連乘和累加計算,並且將計算結果儲存到流多處理器中的通用寄存器或者通用矩陣連乘計算單元中的本地快取。
上述實施例的優點之一,通過以上所述的流多處理器和通用矩陣連乘計算單元的統合架構,可避免耗費時間和匯流排頻寬在通用矩陣連乘計算單元中的本地快取和流多處理器的通用寄存器之間遷移資料。
本發明的其他優點將搭配以下的說明和圖式進行更詳細的解說。
10:向量運算系統
100:流多處理器
210:mxn的矩陣
220:nxp的矩陣
230:mxp的矩陣
30:向量運算系統
310:流多處理器
320:通用矩陣連乘計算單元
311:算術邏輯單元
312:執行緒束指令排程器
313:通用寄存器
314:指令快取
315:屏障寄存器
316:各執行緒束資源寄存器
321:算術邏輯單元
322:指令佇列
323:本地快取
324:寄存器
410:流水線
420:GEMM操作碼對照表
432:操作碼寄存器
434:來源寄存器
436:目的地寄存器
440:比較器
450:解多工器
460:讀取電路
S510~S570:方法步驟
圖1為向量運算系統的框圖。
圖2為矩陣連乘和累加的示意圖。
圖3為依據本發明實施例的統合流多處理器集群和通用矩陣連乘計算單元的裝置的框圖。
圖4為依據本發明實施例的流多處理器中的算術邏輯單元的框圖。
圖5為依據本發明實施例的統合矩陣連乘和累加計算的向量運算的方法流程圖。
以下說明為完成發明的較佳實現方式,其目的在於描述本發明的基本精神,但並不用以限定本發明。實際的發明內容必須參考之後的權利要求範圍。
必須了解的是,使用於本說明書中的”包含”、”包括”等詞,用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
於權利要求中使用如”第一”、”第二”、”第三”等詞是用來修飾權利要求中的元件,並非用來表示之間具有優先順序,前置關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
必須了解的是,當元件描述為”連接”或”耦接”至另一元件時,可以是直接連結、或耦接至其他元件,可能出現中間元件。相反地,當元件描述為”直接連接”或”直接耦接”至另一元件時,其中不存在任何中間元件。使用來描述元件之間關係的其他語詞也可類似方式解讀,例如”介於”相對於”直接介於”,或者是”鄰接”相對於”直接鄰接”等等。
參考圖1。向量運算系統10中可設置流多處理器集群(Streaming Multiprocessor Cluster,SMC),包含多個流多處理器(Streaming Multiprocessor,SM)100,不同流多處理器100之間的指令執行可使用訊號彼此同步。流多處理器100被編程後可執行各種應用任務,包含但不限於:線性和非線性資料轉化、資料庫操作、大數據運算、人工智慧計算、音訊、視訊資料的編碼、解碼、建模操作、圖像渲染操作等。每個流多處理器100可同時執行多個執行緒束(Warps),每個執行緒束是由一群執行緒(Group of Threads)組成,而執行緒是一個使用硬體運行的最小單位,並具有自己的生命週期。執行緒束可關聯於單指令多資料流(Single Instruction Multiple Data,SIMD)指令、單指令多執行緒(Single Instruction Multiple Thread,SIMT)技術等。不同執行緒束之間的執行可以是獨立的,也可以是順序性的。執行緒可代表關聯於一條或多條指令的任務。舉例來說,每個流多處理器100可同時執行8個執行緒束,每個執行緒束包含32個執行緒。雖然圖1描述了4個流多處理器100,所屬技術領域人員可依據不同需要在向量運算系統中設置更多或更少的流多處理器,本發明並不因此受限。
在一些實施例中,除了流多處理器100外,向量計算機還可提供矩陣連乘和累加(Matrix Multiply and Accumulation,MMA)的運算功能。矩陣連乘和累加在線性代數、機器學習、大數據統計、人工智慧等領域是常見的算法。矩陣連乘和累加可以如下的方程式表示:C=AxB,代表從兩個矩陣A和矩陣B產生一個矩陣C,其中,矩陣A的行數必須等於矩陣B的列數。例如,參考圖2,矩陣A是mxn的矩陣210,矩陣B是nxp的矩陣220,表示如下:
矩陣C是矩陣A和矩陣B的乘積,計算結果是一個mxp的矩陣230,表示如下:
計算公式為:
i為從1至m的任意正整數,而j為從1至p的任意正整數,m、n和p可以是動態調整的常數。
在一些實施方式中,向量計算機可在每個流多處理器100中配置矩陣連乘和累加的計算單元,用於無縫地在流多處理器100中提供矩陣連乘和累加的功能。然而,每個流多處理器100中提供矩陣運算的能力會受限於原來流多處理器100的運算能力。例如,當流多處理器100包含64個處理32位浮點數(32-bit Floating-point,fp32)的流水線,和256千字節(Kilo Byte,KB)的通用寄存器(General-Purpose Registers,GPRs)時,其最佳的配置是提供1024個16位元B
型浮點數(16-bit BFloat,BF16)的乘法累加單元(Multiplier-Accumulator Unit,MAC)的計算能力。當配置顯著超過1024個BF16的計算能力的乘法累加單元時,將造成乘法累加單元和原來向量運算處理之間的能力不平衡。
在另一些實施方式中,向量計算機可配置獨立的通用矩陣連乘(General Matrix Multiply,GEMM)的處理器,作為協處理器(Coprocessor),用於提供矩陣連乘和累加的功能。然而,其需要為GEMM處理器定義新的指令集架構(Instruction Set Architecture,ISA),而不能獲得現有向量計算ISA的生態系統(Ecosystem)的優點。另一個缺點是,由於流多處理器100和協處理器之間彼此獨立,GEMM處理器的本地快取和流多處理器100的通用寄存器之間的通信需要耗費大量的運算能力。
為了改善如上所述的缺點,本發明實施例提出一種向量運算系統,包含多個流多處理器和一個GEMM計算單元,GEMM計算單元提供矩陣連乘和累加的計算能力。在計算過程中,GEMM計算單元可從任何一個流多處理器中的通用寄存器(來源地址)讀取資料,並且可直接將計算結果輸出至任何一個流多處理器中的通用寄存器(目的地址)或者GEMM計算單元中的本地快取。
參考圖3,向量運算系統30可實施於大型主機、工作站、個人電腦、筆記本電腦(Laptop PC)、平板電腦、行動電話、數位相機、數位攝影機等電子產品之中。向量運算系統30包含多個流多處理器310和一個GEMM計算單元320,GEMM計算單元320耦接每個流多處理器310。每個流多處理器310包含指令快取(Instruction Cache)314,用於儲存程式核(Kernel)的多條指令。每個流多處理器310還包含執行緒束指令排程器(Warp Instruction Scheduler)312,用於為每個執行緒束提取一系列指令並儲存至指令快取314,依據程式計數器(Program Counter,PC)為每個執行緒束從指令快取314獲取待
執行的指令。每個執行緒束可擁有獨立的程式計數器寄存器,或者共享一個PC寄存器,用於記錄現在正執行的指令位置(也就是指令地址)。每當為一個執行緒束從指令快取314提取一條指令後,相應程式計數器加一。執行緒束指令排程器312在適當的時間點將指令送到算術邏輯單元(Arithmetic Logical Unit,ALU)311來執行,這些指令在特定計算系統的指令集架構(Instruction Set Architecture,ISA)中定義。算術邏輯單元311可執行各式各樣的操作,例如,整數、浮點數的加法和乘法計算、比較操作、布林(Boolean)運算、位元位移、代數函數(如平面插值、三角函數、指數函數、對數函數)等。算術邏輯單元311在執行的過程中,可從通用寄存器(General-Purpose Registers,GPRs)313的指定位置(又可稱為來源地址)讀取資料,和回寫執行結果到通用寄存器313的指定位置(又可稱為目的地地址)。通用寄存器313包含多個通用寄存器檔案(GPR Files),每個通用寄存器檔案以通用寄存器識別碼識別(GPR id)。每個流多處理器310還包含屏障寄存器(Barriers Register)315,可用於讓軟體同步不同執行緒束間的執行,以及各執行緒束資源寄存器(Resource-per-warp Register)316,可用於讓軟體在執行時動態配置每個執行緒束能夠使用的通用寄存器313的空間範圍。雖然圖3的流多處理器310只列出元件311至316,但這只是用於簡要說明本發明的技術特徵,所屬技術領域人員理解每個流多處理器310還包含更多元件。
在程式核中,除了包含原本由指令集架構定義的指令外,還可包含GEMM指令。當流多處理器310中的算術邏輯單元311提取到一個GEMM指令時,算術邏輯單元311不執行GEMM指令,只從通用寄存器313讀取必要的資料,接著將GEMM指令和讀取資料推入指令佇列322。在一些實施例中,向量運算系統30只讓一個流多處理器310(可稱為主要流多處理器)中的算術邏輯單元311擁有耦接到指
令佇列322的路徑。由於向量計算的生態系統已經合適地建立在現存的應用程式編程介面(Application Programming Interface,API)上,例如OpenCL等,當程式開發者能夠編寫GEMM指令到程式核時,將讓編寫程式更為容易。以下是MMA指令的範例:MMA dest,src0,src1;//matrix multiply and accumulation其中,參數「src0」和「src1」分別代表來源矩陣A和B的地址,參數「dest」代表目的矩陣的地址。目的矩陣儲存AxB的計算結果。參數「src0」和「src1」可使用通用寄存器識別碼以指向特定的通用寄存器檔案。參數「dest」可指向通用寄存器檔案或本地快取323的地址。類似的,如果參數「dest」指向特定通用寄存器檔案,可使用通用寄存器識別碼表示。
當算術邏輯單元311執行MMA指令時,算術邏輯單元311根據參數「src0」和「src1」從通用寄存器313的特定通用寄存器檔案讀取資料(又稱來源資料),接著,此MMA指令的操作碼(Operation Code,Opcode)和來源資料會傳送到GEMM計算單元320中的指令佇列322。
在一些實施例中,參考圖4,算術邏輯單元311包含操作碼寄存器432、來源寄存器434和目的地寄存器436,用於分別儲存從執行緒束指令排程器312傳來的指令的操作碼、來源地址和目的地址。算術邏輯單元311還包含GEMM操作碼對照表420和比較器440,GEMM操作碼對照表420用於儲存多個GEMM指令的操作碼,而比較器440比較操作碼寄存器432中儲存的操作碼和GEMM操作碼對照表420中的每一個操作碼。算術邏輯單元311還包含解多工器(DeMUX)450,其輸入端連接操作碼寄存器432和目的地寄存器436,並且兩個輸出端分別連接流水線410和指令佇列322。算術邏輯單元311還包含讀取電路460,其輸入端連接通用寄存器313,並且其輸出端連接本地快取323。針對每個指令,當比較器440發現操
作碼寄存器432中的操作碼不相符於GEMM操作碼對照表420中的所有操作碼的時候,發出控制訊號給解多工器450以讓解多工器450輸出操作碼寄存器432、來源寄存器434和目的地寄存器436的內容給流水線410,用於執行此指令。當比較器440發現操作碼寄存器432中的操作碼相符於GEMM操作碼對照表420中的任何一個的時候,發出控制訊號給解多工器450以讓解多工器450輸出操作碼寄存器432和目的地寄存器436的內容給指令佇列322,用於將GEMM指令推入指令佇列322。此外,當比較器440發現操作碼寄存器432中的操作碼相符於GEMM操作碼對照表420中的任何一個的時候,發出控制訊號給讀取電路460以驅動讀取電路460根據來源寄存器434中儲存的通用寄存器識別碼從特定通用寄存器檔案讀取來源資料,並儲存至指令佇列322中的指定位置。雖然圖4描述了將操作碼寄存器432、來源寄存器434和目的地寄存器436設置在算術邏輯單元311之中,所屬技術領域人員也可將操作碼寄存器432、來源寄存器434和目的地寄存器436設置在算術邏輯單元311之外,本發明並不因此受限。
參考回圖3,GEMM計算單元320包含算術邏輯單元321、指令佇列322、本地快取323和寄存器324。指令佇列322以先進先出的方式儲存從指定流多處理器310中的算術邏輯單元311傳來的MMA指令和來源資料。算術邏輯單元321可先從指令佇列322的指定位置獲取來源資料,並儲存到本地隨機存取記憶體(Local RAM,未顯示於圖3)。一旦資料準備完畢,算術邏輯單元321執行矩陣連乘和累加計算,並且依據MMA指令中的目的地址的信息將計算結果儲存於本地快取323或通用寄存器313的特定位置。當算術邏輯單元321將計算結果直接儲存到通用寄存器313中的特定檔案時,可避免耗費時間和匯流排頻寬讓資料在本地快取323和通用寄存器313之間遷移。雖然圖4的GEMM計算單元320只列出元件321至324,但這只是用於
簡要說明本發明的技術特徵,所屬技術領域人員理解GEMM計算單元320還包含更多元件。
算術邏輯單元311還可執行跨區儲存指令(Cross-domain Store Command)指令和跨區載入指令(Cross-domain Load Command),用於在通用寄存器313和本地快取323之間遷移資料。以下是跨區儲存指令的範例:Store dest,src;//data from a GPR file into an address of the local cache其中,參數「src」包含特定通用寄存器檔案的識別碼,參數「dest」包含本地快取323的特定地址。
以下是跨區載入指令的範例:Load dest,src;//data from an address of the local cache into a GPR file其中,參數「src」包含本地快取323的特定地址,參數「dest」包含特定通用寄存器檔案的識別碼。
參考圖4。當比較器440發現跨區儲存指令的操作碼不相符於GEMM操作碼對照表420中的所有操作碼的時候,發出控制訊號給解多工器450以讓解多工器450輸出操作碼寄存器432、來源寄存器434和目的地寄存器436的內容給流水線410,用於在執行跨區儲存指令時讀取參數「src」所指出的特定通用寄存器檔案的來源資料,並且儲存來源資料至參數「dest」所指出的本地快取323的特定地址。
當比較器440發現跨區載入指令的操作碼不相符於GEMM操作碼對照表420中的所有操作碼的時候,發出控制訊號給解多工器450以讓解多工器450輸出操作碼寄存器432、來源寄存器434和目的地寄存器436的內容給流水線410,用於在執行跨區載入指令時讀取參數「src」所指出的本地快取323的特定地址的來源資料,並且儲存來源資料至參數「dest」所指出的特定通用寄存器檔案。
此外,應用如上所述的架構可達成GEMM指令和向量計算指令的並行計算,讓GEMM計算單元320工作的同時,流多處理器310也在工
作。具體來說,算術邏輯單元311將GEMM指令推入指令佇列322並判斷下個向量計算指令不需要等待GEMM指令的執行結果時,算術邏輯單元311可立即執行向量計算指令,使得算術邏輯單元321在執行GEMM指令的同時算術邏輯單元311也並行執行向量計算指令,提升向量運算系統30的整體效能。
在一些實施例中,GEMM計算單元320在每個時鐘週期執行16K(也就是16x1024)的矩陣連乘和累加的計算,並且耦接到16個流多處理器310。這樣的配置可在人工智慧的應用上,讓GEMM計算能力和向量計算能力達成較好的平衡。
在一些實施例中,參考如圖5所示的向量運算方法,用於統合矩陣連乘和累加的計算。該方法由流多處理器310和GEMM計算單元320協力執行,反覆執行一個迴圈,直到程式核中的所有指令都處理完畢為止,詳細說明如下:
步驟S510:流多處理器310中的算術邏輯單元311(以下又可稱為第二算術邏輯單元)獲取程式核中的第一個或下一個指令。
步驟S520:第二算術邏輯單元判斷獲取的指令是否為GEMM指令。如果是,流程繼續進行步驟S540的處理;否則,流程繼續進行步驟S530的處理。
步驟S530:第二算術邏輯單元中的流水線執行獲取的指令,例如,上述跨區儲存指令和跨區載入指令。
步驟S540:第二算術邏輯單元依據指令的來源參數從流多處理器310的通用寄存器313中的特定通用寄存器檔案讀取來源資料。
步驟S550:第二算術邏輯單元將獲取的指令和來源資料推入GEMM計算單元320中的指令佇列322,其中,指令包含操作碼和目的參數。
步驟S560:GEMM計算單元320中的算術邏輯單元321(又可稱為第一算術邏輯單元)從指令佇列322獲取指令和來源資料並執行矩陣連乘和累加的計算。其計算結果可依據目的參數的內容儲存於本地
快取323的特定地址或者通用寄存器313中的特定通用寄存器檔案。
步驟S570:第二算術邏輯單元判斷程式核中的所有指令是否都處理完畢。如果是,結束整個流程;否則,流程繼續進行步驟S510的處理。
雖然圖3、圖4中包含了以上描述的元件,但不排除在不違反發明的精神下,使用更多其他的附加元件,已達成更佳的技術效果。此外,雖然圖5的流程圖採用指定的順序來執行,但是在不違反發明精神的情況下,熟習此技藝人士可以在達到相同效果的前提下,修改這些步驟間的順序,所以,本發明並不侷限於僅使用如上所述的順序。此外,熟習此技藝人士亦可以將若干步驟整合為一個步驟,或者是除了這些步驟外,循序或平行地執行更多步驟,本發明亦不因此而侷限。
雖然本發明使用以上實施例進行說明,但需要注意的是,這些描述並非用以限縮本發明。相反地,此發明涵蓋了熟習此技藝人士顯而易見的修改與相似設置。所以,申請權利要求範圍須以最寬廣的方式解釋來包含所有顯而易見的修改與相似設置。
30:向量運算系統
310:流多處理器
320:通用矩陣連乘計算單元
311:算術邏輯單元
312:執行緒束指令排程器
313:通用寄存器
314:指令快取
315:屏障寄存器
316:各執行緒束資源寄存器
321:算術邏輯單元
322:指令佇列
323:本地快取
324:寄存器
Claims (14)
- 一種向量運算裝置,用於統合矩陣連乘和累加的計算,包含:流多處理器,包含通用寄存器和第二算術邏輯單元;以及通用矩陣連乘計算單元,包含指令佇列和第一算術邏輯單元,其中,上述第一算術邏輯單元耦接上述通用寄存器,依據上述指令佇列中的通用矩陣連乘指令執行矩陣連乘和累加計算,並且將計算結果儲存到上述通用寄存器,其中,上述第二算術邏輯單元耦接上述指令佇列,用於當提取的指令是上述通用矩陣連乘指令時,從上述通用寄存器獲取來源資料,將上述通用矩陣連乘指令和上述來源資料推入上述指令佇列。
- 如請求項1所述的向量運算裝置,其中,上述第二算術邏輯單元包含:通用矩陣連乘操作碼對照表,儲存上述通用矩陣連乘指令的第一操作碼;解多工器,包含輸入端、第一輸出端和第二輸出端,上述輸入端耦接操作碼寄存器和來源寄存器,上述操作碼寄存器儲存第二操作碼,上述來源寄存器儲存指向上述通用寄存器中的一第一地址,上述第一輸出端耦接流水線,上述第二輸出端耦接上述指令佇列;讀取電路,耦接上述通用寄存器和上述指令佇列;以及比較器,耦接上述通用矩陣連乘操作碼對照表和上述解多工器,用於判斷上述第一操作碼是否相符於上述第二操作碼;當上述第一操作碼相符於上述第二操作碼時,輸出第一控制訊號給上述 解多工器,用於將上述第二操作碼輸出到上述指令佇列,以及輸出第二控制訊號給上述讀取電路,用於驅動上述讀取電路從上述通用寄存器中的上述第一地址讀取上述來源資料,並且將上述來源資料輸出到上述指令佇列。
- 如請求項2所述的向量運算裝置,其中,上述輸入端耦接目的地寄存器,上述目的地寄存器儲存指向上述通用寄存器中的一第二地址;上述比較器當上述第一操作碼相符於上述第二操作碼時,輸出上述第一控制訊號給上述解多工器,用於將上述第二地址輸出到上述指令佇列;上述第一算術邏輯單元將上述計算結果儲存至上述通用寄存器中的上述第二地址。
- 如請求項2和3中任一項所述的向量運算裝置,其中,上述第一地址和第二地址為代表通用寄存器檔案的通用寄存器識別碼。
- 如請求項2所述的向量運算裝置,其中,上述輸入端耦接目的地寄存器,上述目的地寄存器儲存第二地址;上述第二算術邏輯單元包含上述流水線;上述比較器當上述第一操作碼不相符於上述第二操作碼時,輸出上述第一控制訊號給上述解多工器,用於輸出上述第二操作碼、上述第一地址和上述第二地址給上述流水線。
- 如請求項5所述的向量運算裝置,其中,上述第一操作碼關聯於跨區儲存指令,上述流水線在執行上述跨區儲存指令時讀取上述通用寄存器的通用寄存器檔案中的來源資料,並且儲存上述來源資料至上述通用矩陣連乘計算單元中的本地快取。
- 如請求項5所述的向量運算裝置,其中,上述第一操作碼關聯於 跨區載入指令,上述流水線在執行上述跨區載入指令時讀取上述通用矩陣連乘計算單元中的本地快取的來源資料,並且儲存上述來源資料至上述通用寄存器中的通用寄存器檔案。
- 如請求項1所述的向量運算裝置,其中,上述第二算術邏輯單元當提取的指令不是上述通用矩陣連乘指令時,使用上述第二算術邏輯單元中的流水線執行上述提取的指令。
- 如請求項1所述的向量運算裝置,其中,上述通用矩陣連乘計算單元在每個時鐘週期執行16K的矩陣連乘和累加的計算,並且耦接到16個上述流多處理器。
- 如請求項1所述的向量運算裝置,其中,上述流多處理器和上述通用矩陣連乘計算單元並行執行不同的計算。
- 一種向量運算方法,由流多處理器和通用矩陣連乘計算單元協力執行,其中,上述流多處理器包含第一算術邏輯單元,上述通用矩陣連乘計算單元包含第二算術邏輯單元,上述方法包含:上述第一算術邏輯單元當提取的指令是通用矩陣連乘指令時,從上述流多處理器中的通用寄存器讀取來源資料,將上述通用矩陣連乘指令和上述來源資料推入上述通用矩陣連乘計算單元中的指令佇列;以及上述第二算術邏輯單元依據上述指令佇列中的通用矩陣連乘指令執行矩陣連乘和累加計算,並且將計算結果儲存到上述流多處理器中的上述通用寄存器或者上述通用矩陣連乘計算單元中的本地快取。
- 如請求項11所述的向量運算方法,其中,上述通用矩陣連乘指令包含目的參數,上述方法包含:上述第二算術邏輯單元依據上述目的參數的內容將計算結果儲存到上述通用寄存器中的指定通用寄存器檔案或者上述本地快取中的指定地址。
- 如請求項11所述的向量運算方法,包含:上述第一算術邏輯單元當提取的指令是跨區儲存指令時,上述第一算術邏輯單元中的流水線執行上述跨區儲存指令,用於從上述通用寄存器讀取資料,並且儲存上述讀取資料至上述本地快取。
- 如請求項11所述的向量運算方法,包含:上述第一算術邏輯單元當提取的指令是跨區載入指令時,上述第一算術邏輯單元中的流水線執行上述跨區儲存指令,用於從上述本地快取讀取資料,並且儲存上述讀取資料至上述通用寄存器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011132750.6A CN112199119B (zh) | 2020-10-21 | 2020-10-21 | 向量运算装置 |
CN202011132750.6 | 2020-10-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202217600A TW202217600A (zh) | 2022-05-01 |
TWI794789B true TWI794789B (zh) | 2023-03-01 |
Family
ID=74008718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110113315A TWI794789B (zh) | 2020-10-21 | 2021-04-14 | 向量運算裝置和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11809516B2 (zh) |
CN (1) | CN112199119B (zh) |
TW (1) | TWI794789B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230067810A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 fused multiply instructions |
US20230069000A1 (en) * | 2021-08-31 | 2023-03-02 | Intel Corporation | Bfloat16 arithmetic instructions |
US20240168762A1 (en) * | 2022-11-21 | 2024-05-23 | Nvidia Corporation | Application programming interface to wait on matrix multiply-accumulate |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237079B1 (en) * | 1997-03-30 | 2001-05-22 | Canon Kabushiki Kaisha | Coprocessor interface having pending instructions queue and clean-up queue and dynamically allocating memory |
US20140258680A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Parallel dispatch of coprocessor instructions in a multi-thread processor |
TW201820125A (zh) * | 2016-10-01 | 2018-06-01 | 美商英特爾股份有限公司 | 執行複數的熔合乘-加指令的系統與方法 |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
US20190171448A1 (en) * | 2017-12-01 | 2019-06-06 | Advanced Micro Devices, Inc. | Stream processor with low power parallel matrix multiply pipeline |
CN110858387A (zh) * | 2018-08-10 | 2020-03-03 | 辉达公司 | 鲁棒且高效的多处理器-协处理器接口 |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3035828B2 (ja) * | 1989-12-28 | 2000-04-24 | 甲府日本電気株式会社 | 情報処理装置 |
US10360034B2 (en) * | 2017-04-18 | 2019-07-23 | Samsung Electronics Co., Ltd. | System and method for maintaining data in a low-power structure |
US11488008B2 (en) * | 2017-05-05 | 2022-11-01 | Intel Corporation | Hardware implemented point to point communication primitives for machine learning |
CN110415157B (zh) * | 2018-04-26 | 2024-01-30 | 华为技术有限公司 | 一种矩阵乘法的计算方法及装置 |
US11270197B2 (en) * | 2019-03-12 | 2022-03-08 | Nvidia Corp. | Efficient neural network accelerator dataflows |
CN111124492B (zh) * | 2019-12-16 | 2022-09-20 | 成都海光微电子技术有限公司 | 指令生成方法、装置、指令执行方法、处理器及电子设备 |
US11409839B2 (en) * | 2020-08-21 | 2022-08-09 | Alibaba Group Holding Limited | Programmable and hierarchical control of execution of GEMM operation on accelerator |
US11861337B2 (en) * | 2020-08-26 | 2024-01-02 | Micron Technology, Inc. | Deep neural networks compiler for a trace-based accelerator |
-
2020
- 2020-10-21 CN CN202011132750.6A patent/CN112199119B/zh active Active
-
2021
- 2021-04-14 TW TW110113315A patent/TWI794789B/zh active
- 2021-07-02 US US17/366,485 patent/US11809516B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6237079B1 (en) * | 1997-03-30 | 2001-05-22 | Canon Kabushiki Kaisha | Coprocessor interface having pending instructions queue and clean-up queue and dynamically allocating memory |
US20140258680A1 (en) * | 2013-03-05 | 2014-09-11 | Qualcomm Incorporated | Parallel dispatch of coprocessor instructions in a multi-thread processor |
TW201820125A (zh) * | 2016-10-01 | 2018-06-01 | 美商英特爾股份有限公司 | 執行複數的熔合乘-加指令的系統與方法 |
US10643297B2 (en) * | 2017-05-05 | 2020-05-05 | Intel Corporation | Dynamic precision management for integer deep learning primitives |
US20190171448A1 (en) * | 2017-12-01 | 2019-06-06 | Advanced Micro Devices, Inc. | Stream processor with low power parallel matrix multiply pipeline |
CN108845828A (zh) * | 2018-05-29 | 2018-11-20 | 深圳市国微电子有限公司 | 一种协处理器、矩阵运算加速方法及系统 |
CN110858387A (zh) * | 2018-08-10 | 2020-03-03 | 辉达公司 | 鲁棒且高效的多处理器-协处理器接口 |
Also Published As
Publication number | Publication date |
---|---|
US20220121727A1 (en) | 2022-04-21 |
CN112199119A (zh) | 2021-01-08 |
CN112199119B (zh) | 2022-02-01 |
US11809516B2 (en) | 2023-11-07 |
TW202217600A (zh) | 2022-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI794789B (zh) | 向量運算裝置和方法 | |
CN111310910B (zh) | 一种计算装置及方法 | |
EP3832499B1 (en) | Matrix computing device | |
US7454451B2 (en) | Method for finding local extrema of a set of values for a parallel processing element | |
US10528345B2 (en) | Instructions and logic to provide atomic range modification operations | |
US9672036B2 (en) | Instruction and logic to provide vector loads with strides and masking functionality | |
TW202125287A (zh) | 用於矩陣運算加速器之指令的裝置,方法和系統 | |
US9513908B2 (en) | Streaming memory transpose operations | |
US9875213B2 (en) | Methods, apparatus, instructions and logic to provide vector packed histogram functionality | |
JP2021057004A (ja) | 行列演算アクセラレータの命令のための装置、方法、及びシステム | |
US20140289494A1 (en) | Instruction and logic to provide vector horizontal majority voting functionality | |
CN107315717B (zh) | 一种用于执行向量四则运算的装置和方法 | |
US10152321B2 (en) | Instructions and logic for blend and permute operation sequences | |
US20220121444A1 (en) | Apparatus and method for configuring cooperative warps in vector computing system | |
US6934938B2 (en) | Method of programming linear graphs for streaming vector computation | |
EP4020169A1 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
US11880683B2 (en) | Packed 16 bits instruction pipeline | |
US20100115232A1 (en) | Large integer support in vector operations | |
EP3757822B1 (en) | Apparatuses, methods, and systems for enhanced matrix multiplier architecture | |
US11630667B2 (en) | Dedicated vector sub-processor system | |
CN112579168B (zh) | 指令执行单元、处理器以及信号处理方法 | |
Mishra et al. | Review of 5 stage Pipelined Architecture of 8 Bit Pico Processor | |
Soni | Sitara Processors | |
GB2393286A (en) | Method for finding a local extreme of a set of values associated with a processing element by separating the set into an odd and an even position pair of sets |