TWI842948B - 促進矩陣乘法運算的裝置、方法及硬體加速器 - Google Patents

促進矩陣乘法運算的裝置、方法及硬體加速器 Download PDF

Info

Publication number
TWI842948B
TWI842948B TW109131502A TW109131502A TWI842948B TW I842948 B TWI842948 B TW I842948B TW 109131502 A TW109131502 A TW 109131502A TW 109131502 A TW109131502 A TW 109131502A TW I842948 B TWI842948 B TW I842948B
Authority
TW
Taiwan
Prior art keywords
multiplication
graphics
memory
logic
hardware
Prior art date
Application number
TW109131502A
Other languages
English (en)
Other versions
TW202121264A (zh
Inventor
奈芬 馬修
蘇布拉 馬瓦哈
亞賈許 蓋格
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202121264A publication Critical patent/TW202121264A/zh
Application granted granted Critical
Publication of TWI842948B publication Critical patent/TWI842948B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/78Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data for changing the order of data flow, e.g. matrix transposition or LIFO buffers; Overflow or underflow handling therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Generation (AREA)
  • Complex Calculations (AREA)

Abstract

一種促進矩陣乘法運算的裝置。所述裝置,包括:乘法硬體,以點積模式操作,其中,所述乘法硬體中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算。

Description

促進矩陣乘法運算的裝置、方法及硬體加速器
實施例總體上關於資料處理,且更具體地關於經由通用圖形處理單元的資料處理。
深度學習演算法目前在各種機器學習應用中實現,如音訊/視訊識別,視訊摘要等等。神經網路各種形式(例如,卷積神經網路(CNN),遞迴神經網路(RNN),長短期記憶(LSTM)等)由於其高度平行性質被應用到執行這樣的工作負荷。機器學習應用程式通常通過乘法器實現矩陣乘法工作負載。
本發明提供一種促進矩陣乘法運算的裝置,包括:乘法硬體,以點積模式操作,其中,所述乘法硬體 中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算。
100:處理系統
102:處理器
104:快取記憶體
106:暫存器檔案
107:處理器核
108:圖形處理器
109:指令集
110:介面匯流排
111:顯示裝置
112:加速器
116:記憶體控制器
118:外部圖形處理器
119:外部加速器
120:記憶體裝置
121:指令
122:資料
124:資料儲存裝置
125:觸控感測器
126:無線收發器
128:韌體介面
130:平台控制器集線器
134:網路控制器
140:I/O控制器
142:通用序列匯流排控制器
143:鍵盤和滑鼠
144:相機
146:音訊控制器
200:處理器
206:共享快取記憶體單元
208:圖形處理器
210:系統代理核
211:顯示控制器
212:互連單元
213:I/O鏈路
214:記憶體控制器
216:匯流排控制器單元
218:嵌入式記憶體模組
219:圖形處理器核
230:功能方塊
231:功能管線
232:圖形SoC介面
233:圖形微控制器
234:媒體管線
235:共享的功能邏輯
236:共享及/或快取記憶體
237:功能管線
237:幾何/固定功能管線
238:附加的固定功能邏輯
239:圖形處理單元
239:GPU
239:GPU
243:核
244:核
245:核
246:CPU
247:紋理單元
248:記憶體控制器
249:記憶體
250:I/O電路
251:I/O記憶體管理單元
252:I/O裝置
253:L2快取記憶體
254:L1快取記憶體
255:指令快取記憶體
256:共享記憶體
257:命令處理器
258:線程分配器
261:向量暫存器
262:標量暫存器
263:向量邏輯單元
264:標量邏輯單元
265:本地共享記憶體
266:程式計數器
267:恆定快取記憶體
268:記憶體控制器
270:通用圖形處理單元
271:記憶體
272:記憶體
300:圖形處理器
302:顯示控制器
306:視訊編解碼器引擎
310:GPE
312:3D管線
312:3D管線
314:記憶體介面
315:3D/媒體子系統
316:媒體管線
318:顯示裝置
320:圖形處理器
322:圖形處理引擎叢集
324:結構互連
328:主機介面
330:計算加速器
336:L3快取記憶體
403:命令串流器
410:圖形處理引擎
414:圖形核陣列
416:共享功能邏輯
418:統一返回緩衝器
420:共享功能邏輯
421:取樣器
422:數學運算器
423:線程間通信
425:快取記憶體
500:線程執行邏輯
502:著色器處理器
504:線程分配器
505:射線追蹤器
506:指令快取記憶體
508:執行單元
510:取樣器
511:共享本地記憶體
512:資料快取記憶體
514:資料連接埠
522:線程仲裁器
524:通用暫存器檔案陣列
526:架構暫存器檔案陣列
530:發送單元
532:分支單元
534:SIMD浮點單元
535:SIMD ALU
537:指令獲取單元
600:執行單元
601:線程控制單元
602:線程狀態單元
603:指令獲取/預取單元
604:指令解碼單元
606:暫存檔案
607:發送單元
608:分支單元
610:計算單元
611:ALU單元
612:脈動陣列單元
613:數學單元
700:圖形處理器指令格式
710:128位元指令格式
712:指令運算碼
714:指令控制欄位
716:執行尺寸欄位
718:目的地
720:源運算元
722:源運算元
724:源運算元
726:存取/位址模式欄位
730:64位元緊密指令格式
740:運算碼解碼
742:移動和邏輯運算碼組
744:串流控制指令組
746:雜項指令組
748:平行數學組
750:向量數學組
800:圖形處理器
802:環形互連
803:命令串流器
805:頂點獲取器
807:頂點著色器
811:外殼著色器
813:曲面細分器
817:域著色器
819:幾何著色器
820:幾何管線
823:串流輸出
829:限幅器
830:媒體管線
831:線程分配器
834:視訊前端
837:媒體引擎
840:顯示引擎
841:2D引擎
843:顯示控制器
850:執行邏輯
851:L1快取記憶體
854:取樣器
856:資料連接埠
858:紋理快取記憶體
870:渲染輸出管線
873:光柵化器和深度測試組件
875:L3快取記憶體
877:像素運算組件
878:渲染快取記憶體
879:深度快取記憶體
900:圖形處理器命令格式
902:客戶端
904:運算碼
905:子運算碼
906:資料
908:命令大小
910:圖形處理器命令序列
912:序列
913:序列
914:序列
916:序列
920:序列
922:3D管線
924:媒體管線
930:序列
932:序列
934:序列
940:序列
942:序列
944:序列
1000:資料處理系統
1010:3D圖形應用程式
1012:著色器指令
1014:可執行指令
1016:圖形物件
1020:作業系統
1022:圖形API
1024:著色器編譯器
1026:使用者模式圖形驅動器
1027:著色器編譯器
1028:作業系統內核模式功能
1029:內核模式圖形驅動器
1030:處理器
1032:圖形處理器
1034:通用目的核
1050:系統記憶體
1100:IP核開發系統
1110:軟體模擬
1112:模擬模型
1115:暫存器傳輸級設計
1120:硬體模型
1130:設計設施
1140:非揮發性記憶體
1150:有線連接
1160:無線連接
1165:製造設施
1170:積體電路封裝組件
1172:邏輯
1173:互連結構
1174:邏輯
1175:記憶體小晶片
1180:基板
1182:橋部
1183:封裝互連
1185:結構
1187:橋部
1190:封裝組件
1191:I/O
1192:快取記憶體
1193:邏輯
1200:積體電路
1205:應用處理器
1210:圖形處理器
1215:影像處理器
1220:視訊處理器
1225:USB控制器
1230:UART控制器
1235:SPI/SDIO控制器
1240:I2S/I2C控制器
1245:顯示裝置
1250:高解析度多媒體介面控制器
1255:行動工業處理器介面顯示介面
1260:快閃記憶體子系統
1265:記憶體控制器
1270:嵌入式安全引擎
1305:頂點處理器
1310:圖形處理器
1340:圖形處理器
1345:核間任務管理器
1358:圖塊單元
1400:機器學習軟體堆疊
1402:機器學習應用程式
1404:機器學習框架
1406:計算框架
1408:GPGPU驅動器
1410:GPGPU硬體
1502:輸入
1504:第一卷積層
1506:第二卷積層
1508:完全連接的層
1512:卷積層
1514:卷積層
1516:卷積級
1518:檢測器級
1520:池化級
1522:下一層
1600:RNN
1602:輸入層
1604:隱藏層
1605:回饋機制
1606:輸出層
1702:訓練資料集
1704:訓練框架
1706:未訓練的神經網路
1708:訓練的神經網路
1712:新資料
1802:模型平行度
1804:資料平行度
1806:模型和資料平行度
1900:計算裝置
1904:輸入/輸出源
1906:作業系統
1908:記憶體
1910:加速器
1912:CPU
1913:陣列
1914:GPU
1915:點積乘法器
1916:圖形驅動器
2110:乘法器級
2120:加法級
2310:處理方塊
2320:處理方塊
2330:處理方塊
2340:處理方塊
2350:處理方塊
2410:處理方塊
2420:處理方塊
2430:處理方塊
2440:處理方塊
2450:處理方塊
1315A:片段處理器
1315B:片段處理器
1315C:片段處理器
1315D:片段處理器
1315N:片段處理器
1315N-1:片段處理器
1320A:記憶體管理單元
1320B:記憶體管理單元
1325A:快取記憶體
1325B:快取記憶體
1330A:互連
1330B:互連
1355A:著色器核
1355B:著色器核
1355C:著色器核
1355D:著色器核
1355E:著色器核
1355F:著色器核
1355N:著色器核
1355N-1:著色器核
202A:處理器核
202N:處理器核
204A:內部快取記憶體單元
204N:內部快取記憶體單元
206A:媒體取樣器
206B:媒體取樣器
206C:媒體取樣器
206D:媒體取樣器
206E:媒體取樣器
206F:媒體取樣器
221A:子核
221B:子核
221C:子核
221D:子核
221E:子核
221F:子核
222A:EU陣列
222B:EU陣列
222C:EU陣列
222D:EU陣列
222E:EU陣列
222F:EU陣列
223A:線程分配和線程間通信邏輯
223B:線程分配和線程間通信邏輯
223C:線程分配和線程間通信邏輯
223D:線程分配和線程間通信邏輯
223E:線程分配和線程間通信邏輯
223F:線程分配和線程間通信邏輯
224A:EU陣列
224B:EU陣列
224C:EU陣列
224D:EU陣列
224E:EU陣列
224F:EU陣列
225A:3D取樣器
225B:3D取樣器
225C:3D取樣器
225D:3D取樣器
225E:3D取樣器
225F:3D取樣器
227A:著色器處理器
227B:著色器處理器
227C:著色器處理器
227D:著色器處理器
227E:著色器處理器
227F:著色器處理器
228A:共享的本地記憶體
228B:共享的本地記憶體
228C:共享的本地記憶體
228D:共享的本地記憶體
228E:共享的本地記憶體
228F:共享的本地記憶體
240A:多核組
240B:多核組
240C:多核組
240N:多核組
260A:計算單元
260N:計算單元
310A:圖形引擎圖塊
310B:圖形引擎圖塊
310C:圖形引擎圖塊
310D:圖形引擎圖塊
323A:圖塊互連件
323B:圖塊互連件
323C:圖塊互連件
323D:圖塊互連件
323E:圖塊互連件
323F:圖塊互連件
325A:記憶體互連
325B:記憶體互連
325C:記憶體互連
325D:記憶體互連
325E:記憶體互連
325F:記憶體互連
326A:記憶體裝置
326B:記憶體裝置
326C:記憶體裝置
326D:記憶體裝置
340A:計算引擎圖塊
340B:計算引擎圖塊
340C:計算引擎圖塊
340D:計算引擎圖塊
415A:圖形核
415B:圖形核
507A:線程控制邏輯
507N:線程控制邏輯
508A:執行單元
508A:執行單元
508B:執行單元
508C:執行單元
508D:執行單元
508N:執行單元
508N-1:執行單元
509A:執行單元
509B:執行單元
509N:執行單元
852A:執行單元
852B:執行單元
L2:級別
L3:級別
L4:級別
為可以詳細地理解本實施例的上述特徵的方式,可以通過參考實施例來對以上簡要概述的實施例進行更具體的描述,其中一些示例在附圖中示出。然而,應當注意,附圖僅示出典型的實施例,因此不應被認為是對其範圍的限制。
[圖1]是根據一實施例的處理系統的方塊圖;[圖2A-2D]示出由本文描述的實施例提供的計算系統和圖形處理器;[圖3A-3C]圖示實施例提供的附加圖形處理器和計算加速器架構的方塊圖;[圖4]是根據一些實施例的圖形處理器的圖形處理引擎的方塊圖;[圖5A-5B]示出根據實施例的執行緒邏輯500,包括在圖形處理器核(core)中採用的處理元件的陣列;[圖6]示出根據一實施例,附加執行單元600;[圖7]是說明根據一些實施例的圖形處理器 指令格式的方塊圖;[圖8]是根據另一實施例的圖形處理器的方塊圖;[圖9A和9B]示出根據一些實施例的圖形處理器命令格式和命令序列;[圖10]示出根據一些實施例,用於資料處理系統的示例性圖形軟體架構;[圖11A-11D]示出根據一實施例的積體電路封裝組件;[圖12]是示出根據實施例的示例性系統單晶片積體電路的方塊圖;[圖13A和13B]是示出另一示例性圖形處理器的方塊圖;[圖14]示出根據一實施例的機器學習軟體堆疊;[圖15A-15B]示出示例性深度神經網路的各層;[圖16]示出示例性遞迴神經網路;[圖17]示出深度神經網路的訓練和部署;[圖18]是示出分散式學習的方塊圖;[圖19]示出採用加速器的計算裝置的一實施例;[圖20A & 20B]示出傳統的乘法器;[圖21]示出點積乘法器的一實施例; [圖22]示出點積乘法器的另一實施例中;[圖23]是示出用於執行乘法運算的過程的一實施例的流程圖;及[圖24]是示出用於執行點積乘法運算的過程的一實施例的流程圖。
在實施例中,加速器包括乘法硬體,該乘法硬體以傳統模式或點積模式操作,其中將乘法硬體中的乘法級配置為複數個N位元向量的點積,以在NxN乘法運算的結果上執行加法運算。
在以下描述中,闡述許多具體細節以提供更透徹的理解。然而,對於本領域的技術人員將顯而易見的是,可以在沒有這些具體細節中的一或複數個的情況下實踐本文描述的實施例。在其他示例中,眾所周知的特徵沒有被描述,以避免模糊本實施例的細節。
系統總覽
圖1是根據一實施例的處理系統100的方塊圖。系統100可以用於單處理器桌機系統,多處理器工作站系統或具有大量處理器102或處理器核107的伺服器系統。在一實施例中,系統100是結合在系統單晶片(SoC)積體電路內的處理平台,使用於行動,手持或嵌入式裝置中,例如在與有線或無線連接到區域網路或廣域網路的物 聯網(IoT)裝置中。
在一實施例中,系統100可包括,耦接或整合在基於伺服器的遊戲平台中;遊戲主機,包括遊戲和媒體主機;行動遊戲主機,手持遊戲主機或線上遊戲主機。在一些實施例中,系統100是行動電話,智慧型電話,平板計算裝置或諸如具有低內部儲存容量的膝上型電腦之類的行動網際網路連接裝置的一部分。處理系統100還可以包括,耦接與,或可整合於:穿戴式裝置,諸如智慧型手錶穿戴式裝置;擴增實境(AR)或虛擬實境(VR)功能增強的智慧型眼鏡或服裝,可提供視覺,音訊或觸覺輸出,以補充現實世界中的視覺,音訊或觸覺體驗,或者提供文字,音訊,圖形,視訊,全像影像或視訊或觸覺回饋;其他擴增實境(AR)裝置;或其他虛擬實境(VR)裝置。在一些實施例中,處理系統100包括電視或機上盒裝置或者是電視或機上盒裝置的一部分。在一實施例中,系統100可以包括,與自動駕駛車輛耦接,或整合在自動駕駛車輛中,例如公共汽車,牽引拖車,汽車,電動機或電動自行車,飛機或滑翔機(或其任何組合)。自動駕駛車輛可以使用系統100處理車輛周圍感知的環境。
在一些實施例中,每一或複數個處理器102包括一或複數個處理器核107以處理指令,該指令在被執行時執行針對系統或使用者軟體的操作。在一些實施例中,一或複數個處理器核107之至少其一被配置為處理一特定指令集109。在一些實施例中,指令集109可以促進複 雜指令集計算(CISC),精簡指令集計算(RISC)或經由超長指令字(VLIW)的計算。一或複數個處理器核107可以處理不同的指令集109,其可以包括有助於模擬其他指令集的指令。處理器核107還可以包括其他處理裝置,例如數位信號處理器(DSP)。
在一些實施例中,處理器102包括快取記憶體104。根據架構,處理器102可以具有單個內部快取記憶體或複數個級別的內部快取記憶體。在一些實施例中,快取記憶體在處理器102的各個組件之間共享。在一些實施例中,處理器102還使用外部快取記憶體(例如,三級(L3)快取記憶體或最後一級快取記憶體(LLC))(未示出),其可以在使用已知的快取記憶體一致性(coherency)技術的處理器核107之間分享。暫存器檔案106可以另外包括在處理器102,且可以包括用於儲存不同類型資料的不同類型暫存器(例如,整數暫存器,浮點暫存器,狀態暫存器和指令指標(pointer)暫存器)。一些暫存器可能是通用暫存器,而另一些暫存器可能特定於處理器102的設計。
在一些實施例中,一或複數個處理器102耦接一或複數個介面匯流排110以在系統100的處理器102和其他組件之間傳輸通信信號,例如位址,資料或控制信號。在一實施例中,介面匯流排110可以是處理器匯流排,例如直接媒體介面(DMI)匯流排的版本。然而,處理器匯流排不限於DMI匯流排,且可以包括一或複數個週邊 組件互連匯流排(例如,PCI,PCI Express),記憶體匯流排或其他類型的介面匯流排。在一實施例中,處理器102包括整合的記憶體控制器116和平台控制器集線器(hub)130。記憶體控制器116促進系統100的記憶體裝置與其他組件之間的通信,而平台控制器集線器(PCH)130通過本地I/O匯流排提供到I/O裝置的連接。
記憶體裝置120可以是動態隨機存取記憶體(DRAM)裝置,靜態隨機存取記憶體(SRAM)裝置,快閃記憶體裝置,相變記憶體裝置或具有適當性能以用作過程記憶體(process memory)的一些其他記憶體裝置。在一實施例中,記憶體裝置120可以用作用於系統100的系統記憶體,當一或複數個處理器102執行應用程式或過程時用於儲存資料122和指令121。記憶體控制器116還與可選的外部圖形處理器118耦接,其可以在處理器102與一或複數個圖形處理器108通信以執行圖形和媒體操作。在一些實施例中,圖形,媒體及/或計算操作可以由加速器112輔助,其是可以配置為執行一組專門的圖形,媒體或計算操作的協處理器(coprocessor)。例如,在一實施例中,加速器112是用於最佳化機器學習或計算操作的矩陣乘法加速器。在一實施例中,加速器112是射線追蹤加速器(ray-tracing accelerator),可用於與圖形處理器108協同執行射線追蹤操作。在一實施例中,外部加速器119可以代替或與加速器112一起使用。
在一些實施例中,顯示裝置111可以連接到 處理器102。顯示裝置111可以是內部顯示裝置中的一或複數個,例如在行動電子裝置或膝上型電腦裝置中,或者是通過顯示介面(例如DisplayPort等)連接的外部顯示裝置。在一實施例中,顯示裝置111可以是頭戴式顯示器(HMD),例如用於虛擬實境(VR)應用程式或擴增實境(AR)應用程式中的立體顯示裝置。
在一些實施例中,平台控制器集線器130可使週邊裝置通過高速I/O匯流排連接到記憶體裝置120和處理器102。I/O週邊裝置包括但不限於音訊控制器146,網路控制器134,韌體介面128,無線收發器126,觸控感測器125,資料儲存裝置124(例如,非揮發性記憶體,揮發性記憶體,硬碟驅動器,快閃記憶體,NAND,3D NAND,3D XPoint等)。資料儲存裝置124可以經由儲存介面(例如,SATA)或經由週邊匯流排(例如,週邊組件互連匯流排(例如,PCI,PCI Express))連接。觸控感測器125可以包括觸控螢幕感測器,壓力感測器或指紋感測器。無線收發器126可以是Wi-Fi收發器,藍牙收發器或諸如3G,4G,5G或長期演進(LTE)收發器的行動網路收發器。韌體介面128使能與系統韌體進行通信,且例如可以是統一的可擴展韌體介面(UEFI)。網路控制器134可以啟用到有線網路的網路連接。在一些實施例中,高性能網路控制器(未示出)與介面匯流排110耦接。在一實施例中,音訊控制器146是多通道高清晰度音訊控制器。在一實施例中,系統100包括可選的傳統I/O控制器140,用於耦接傳統(例 如,個人系統2(PS/2))裝置到系統。平台控制器集線器130也可以連接到一或複數個通用序列匯流排(USB)控制器142連接輸入裝置,例如鍵盤和滑鼠143組合,相機144或其他USB輸入裝置。
應當理解,所示出的系統100是示例性的而不是限制性的,因為也可以使用配置不同的其他類型的資料處理系統。例如,記憶體控制器116和平台控制器集線器130可以整合到離散外部圖形處理器中,例如外部圖形處理器118。在一實施例中,平台控制器集線器130及/或記憶體控制器116可以在一或複數個處理器102的外部。例如,系統100可以包括外部記憶體控制器116和平台控制器集線器130,可以配置為與處理器102通信的系統晶片組內的記憶體控制器集線器和週邊控制器集線器。
例如,可以使用電路板(“滑板(sled)”),其上放置諸如CPU,記憶體和其他組件之類的組件,旨在提高散熱性能。在一些示例中,諸如處理器之類的處理組件位於滑板的頂側,而諸如DIMM之類的近端記憶體(near memory)位於滑板的底側。由於此設計提供增強的氣流,這些組件可以比典型系統以更高的頻率和功率級別工作,從而提高性能。此外,滑板被配置為與機架中的電源和資料通信電纜盲目配合,從而增強其快速拆卸,升級,重新安裝及/或更換的能力。同樣,位於滑板上的各個組件(例如處理器,加速器,記憶體和資料儲存驅動器)由於相互之間的間距增加而配置為易於升級。在說明性實施例中, 組件另外包括硬體證明特徵以證明其真實性。
資料中心可以利用支援多種其他網路架構(包括乙太網路和Omni-Path)的單一網路架構(“結構”)。可以通過光纖耦接到滑板,與典型的雙絞線電纜(例如,類別5,類別5e,類別6等)相比,其可提供更高的頻寬和更低的延遲。由於高頻寬,低延遲互連和網路架構,資料中心在使用中可能會池化資源,例如記憶體,加速器(例如GPU,圖形加速器,FPGA,ASIC,神經網路及/或人工智慧型加速器,等等),以及經過實體分解的資料儲存驅動器,並根據需要將其提供給計算資源(例如,處理器),從而使計算資源能夠像本地資源一樣存取池中的資源。
電力供應或電源可以向以下裝置提供電壓及/或電流:系統100或本文描述的任何組件或系統。在一示例中,電源包括交流到直流(交流電流到直流電流)適配器,以插入壁裝電源插座。這樣的AC電源可以是可再生能源(例如太陽能)電源。在一示例中,電源包括DC電源,例如外部AC至DC轉換器。在一示例中,電源或電力供應包括無線充電硬體,以經由鄰近來充電至充電場。在一示例中,電源可以包括內部電池,交流電源,基於運動的電源,太陽能電源或燃料電池源。
圖2A-2D示出本文描述的實施例提供的計算系統和圖形處理器。圖2A-2D的元件具有與本文中任何其他附圖的元件相同的附圖標記(或名稱)可以以類似於本文其他各處所描述的任何方式來操作或作用,但不限於此。
圖2A是具有一或複數個處理器核202A-202N,整合記憶體控制器214和整合圖形處理器208的處理器200的實施例的方塊圖。處理器200可包括直至且包括由虛線框表示的附加核202N的附加核。每個處理器核202A-202N包括一或複數個內部快取記憶體單元204A-204N。在一些實施例中,每個處理器核還可以存取一或複數個共享快取記憶體單元206。內部快取記憶體單元204A-204N和共享快取記憶體單元206表示在處理器200的快取記憶體階層(hierarchy)。快取記憶體階層可包括每個處理器核內的至少一級指令和資料快取記憶體以及一或複數個共享中間級快取記憶體,例如級別2(L2),級別3(L3),級別4(L4)或其他級別的快取記憶體,其中外部記憶體之前的最高階別的快取記憶體被歸類為LLC。在一些實施例中,快取記憶體一致性邏輯維持各種快取記憶體單元206和204A-204N之間的一致性。
在一些實施例中,處理器200還可以包括一組一或複數個匯流排控制器單元216和一系統代理核210。一或複數個匯流排控制器單元216管理一組週邊匯流排,例如一或複數個PCI或PCI Express匯流排。系統代理核210為各種處理器組件提供管理功能。在一些實施例中,系統代理核210包括一或複數個整合記憶體控制器214,以管理對各種外部記憶體裝置(未示出)的存取。
在一些實施例中,一或複數個處理器核202A-202N包括對同時多線程的支援。在這樣的實施例 中,系統代理核210包括在多線程處理期間用於協調和操作核202A-202N的組件。系統代理核210可以另外包括一電源控制單元(PCU),其包括邏輯和組件以調節處理器核202A-202N和圖形處理器208的電源狀態。
在一些實施例中,處理器200另外包括圖形處理器208執行圖形處理操作。在一些實施例中,圖形處理器208耦接一組共享快取記憶體單元206,以及系統代理核210,包括一或複數個整合記憶體控制器214。在一些實施例中,系統代理核210還包括顯示控制器211驅動圖形處理器輸出到一或複數個耦接的顯示器。在一些實施例中,顯示控制器211也可以是經由至少一互連與圖形處理器耦接的獨立模組,或者可以整合在圖形處理器208。
在一些實施例中,基於環的互連單元212用於耦接處理器200的內部組件。但是,可以使用替代的互連單元,例如點對點互連,交換式互連或其他技術,包括本領域眾所周知的技術。在一些實施例中,圖形處理器208通過I/O鏈路213耦接環互連212。
示例性I/O鏈路213代表多種I/O互連中的至少一種,包括便於在各種處理器組件與高性能嵌入式記憶體模組218,例如eDRAM模組之間,通信的封裝上I/O互連(on package I/O interconnect)。在一些實施例中,每個處理器核202A-202N和圖形處理器208可以使用嵌入式記憶體模組218作為共享的最後一級快取記憶體。
在一些實施例中,處理器核202A-202N是執 行相同指令集架構的同質核。在另一實施例中,處理器核202A-202N在指令集架構(ISA)方面是異構的,其中一或複數個處理器核202A-202N執行第一指令集,而其他核中的至少一者執行第一指令集的子集或不同的指令集。在一實施例中,處理器核202A-202N在微架構方面是異構的,其中具有相對較高功耗的一或複數個核與具有較低功耗的一或複數個電源核耦接。在一實施例中,處理器核202A-202N在計算能力方面是異構的。另外,處理器200可以被實現在一或複數個晶片上,或者被實現為具有除其他組件之外所示出的組件的SoC積體電路。
圖2B是根據本文描述的一些實施例的圖形處理器核219的硬體邏輯的方塊圖。具有與本文任何其他附圖的元件相同的附圖標記(或名稱)的圖2B的元件可以以與本文其他各處所描述的方式相似的任何方式操作或作用,但不限於此。圖形處理器核219(有時稱為核片)可以是模組化圖形處理器中的一或複數個圖形核。圖形處理器核219是一圖形核切片的示例,且本文所述的圖形處理器可以基於目標功率和性能包絡線(envelope)包括複數個圖形核切片。每圖形處理器核219可以包括固定的功能方塊230與複數個子核221A-221F,也稱為子片,包括通用和固定功能邏輯的模組塊。
在一些實施例中,在圖形處理器核219中固定功能方塊230包括可以被所有子核共享的幾何/固定的功能管線231,例如,在較低性能及/或較低功率的圖形處理 器實現。在各種實施例中,幾何/固定功能管線231包括3D固定功能管線(例如,如圖3和圖4所示的3D管線312(如下所述)),視訊前端單元,線程產生器和線程分配器以及統一返回緩衝區管理器,其管理統一返回緩衝區(例如,如以下所描述,在圖4中的統一返回緩衝器418)。
在一實施例中,固定功能方塊230還包括圖形SoC介面232,圖形微控制器233和媒體管線234。圖形SoC介面232提供圖形處理器核219和系統單晶片積體電路中的其他處理器核。圖形控制器233是可程式子處理器,其可配置為管理圖形處理器核219的各種功能,包括線程分配,排程和預佔(pre-emption)。媒體管線234(例如,圖3和圖4的媒體管線316)包括邏輯以促進解碼,編碼,預處理及/或後處理多媒體資料,包括影像和視訊資料。媒體管線234以在子核221-221F通過請求計算或取樣邏輯來執行媒體操作。
在一實施例中,SoC介面232啟用圖形處理器核219與SoC內的通用應用處理器核(例如,CPU)及/或其他組件進行通信,其中包括諸如共享的最後一級快取記憶體,系統RAM及/或晶片或封裝內DRAM之類的記憶體階層元件。SoC介面232還可以啟用與SoC中的固定功能裝置(例如相機成像管線)的通信,並啟用及/或實現可以在SoC中的圖形處理器核219和CPU之間共享的全局記憶體原子。SoC介面232還可以實現用於圖形處理器核219的電源管理控制,且啟用圖形核219的時脈域與SoC內的其他時脈 域(clock domain)之間的介面。在一實施例中,SoC介面232使得能夠從命令串流器和全局線程分配器接收命令緩衝器,所述命令串流器(command streamer)和全局線程分配器被配置為向圖形處理器內的一或複數個圖形核中的每個提供命令和指令。可以將命令和指令於當要執行媒體操作時發送到媒體管線234,或於當將執行圖形處理操作時發送到幾何和固定功能管線(例如,幾何和固定功能管線231,幾何與固定功能管線237)。
圖形微控制器233可以被配置為執行用於圖形處理器核219的各種排程和管理任務。在一實施例中,圖形微控制器233可以在子核221A-221F中在執行單元(EU)陣列中的222A-222F,224A-224F中,在各種圖形平行引擎上執行圖形及/或計算工作負荷排程。在此排程模型中,在包括圖形處理器核219的SoC的CPU內核上執行的主機軟體可以提交複數個圖形處理器門鈴(doorbell)之一的工作量,其調用適當的圖形引擎上的排程操作。排程操作包括決定接下來要運行的工作負載,將工作負載提交給命令串流器,預佔引擎上正在運行的現有工作負載,監視工作負載的進度以及在工作負載完成時通知主機軟體。在一實施例中,圖形微控制器233還可以促進圖形處理器核219的低功率或空閒狀態,從而為圖形處理器核219提供獨立於作業系統及/或系統上的圖形驅動軟體跨低功率狀態轉換保存和恢復圖形處理器核219內的暫存器的能力。
圖形處理器核219可以具有大於或小於所示 出的子核221A-221F,最多N個模組化子核。對於每組N個子核,圖形處理器核219也可以包括共享的功能邏輯235,共享及/或快取記憶體236,幾何/固定功能管線237以及附加的固定功能邏輯238以加速各種圖形和計算處理操作。共享的功能邏輯235可以包括與圖4中的共享功能邏輯420相關聯的邏輯單元(例如,取樣器,數學(math)及/或線程間通信邏輯(inter-thread communication logic)),其可以由圖形處理器核219內的每個N子核共享。共享及/或快取記憶體236可以是用於圖形處理器核219中的該組N子核221A-221F的最後一級快取記憶體,且還可以用作可由複數個子核存取的共享記憶體。可以在固定功能方塊230內包括幾何/固定功能管線237而不是幾何/固定功能管線231,且可以包括相同或相似的邏輯單元。
在一實施例中,圖形處理器核219包括附加的固定功能邏輯238,其可以包括供圖形處理器核219使用的各種固定功能加速邏輯。在一實施例中,附加固定功能邏輯238包括用於在僅位置暈渲(shading)的附加幾何管線。在僅位置暈渲(position-only shading)中,存在兩個幾何管線,幾何/固定功能管線238、231中的完整幾何管線,以及剔除管線(cull pipeline),其是可以包括在附加固定功能邏輯238中的附加幾何管線。在一實施例中,剔除管線是完整幾何管線的修整版。完整管線和剔除管線可以執行同一應用程式的不同實例,每個實例具有單獨的上下文。僅位置暈渲可以隱藏長時間剔除的三角形,從而使暈 渲在某些情況下可以更早完成。例如,在一實施例中,附加固定功能邏輯238內的剔除管線邏輯可以與主應用程式平行地執行位置著色器(shader),且通常比完整管線更快地產生關鍵結果,因為剔除管線僅獲取和暈渲頂點的位置屬性,而無需執行將像素光柵化和渲染到幀緩衝區的操作。剔除管線可以使用產生的臨界結果來計算所有三角形的可見性資訊,而無需考慮這些三角形是否被剔除。完整的管線(在這種情況下,它可以稱為重播管線)可以消耗可見性資訊來跳過剔除的三角形,以僅暈渲最終傳遞到光柵化階段的可見三角形。
在一實施例中,附加的固定功能邏輯238還可以包括機器學習加速邏輯,例如固定功能矩陣乘法邏輯,用於包括針對機器學習訓練或推理的最佳化的實現。
在每個圖形子核221A-221F內包括一組執行資源,其可用於回應於圖形管線,媒體管線或著色器程式的請求來執行圖形,媒體和計算操作。圖形子核221A-221F包括複數個EU陣列222A-222F,224A-224F,線程分配和線程間通信(TD/IC)邏輯223A-223F,3D(例如,紋理)取樣器225A-225F,媒體取樣器206A-206F,著色器處理器227A-227F,且共享的本地記憶體(SLM)228A-228F。EU陣列222A-222F,224A-224F每個都包括複數個執行單元,其是通用圖形處理單元,能夠為圖形,媒體或計算操作提供服務,執行浮點和整數/定點邏輯運算,包括圖形,媒體或計算著色器程式。TD/IC邏輯223A-223F對子核內的執行 單元執行本地線程分配和線程控制操作,並促進在子核的執行單元上執行的線程之間的通信。3D取樣器225A-225F可以將與紋理或其他3D圖形相關的資料讀取到記憶體中。3D取樣器可以根據配置的取樣狀態和與給定紋理關聯的紋理格式,不同地讀取紋理資料。媒體取樣器206A-206F可以基於與媒體資料相關聯的類型和格式來執行類似的讀取操作。在一實施例中,每個圖形子核221A-221F可以可替代地包括統一的3D和媒體取樣器。在每個子核221A-221F內的執行單元上執行的線程可以利用每個子核內的共享本地記憶體228A-228F,以使在線程組內執行的線程能夠使用晶載記憶體的公用池以執行。
圖2C示出圖形處理單元(GPU)239,其包括配置成多核組240A-240N的專用圖形處理資源集。儘管僅提供單個多核組240A的細節,但是應當理解,其他多核組240B-240N可以配備有相同或相似的圖形處理資源集。
如圖所示,多核組240A可以包括一組圖形核243,一組張量核244和一組射線追蹤核245。排程器/調度器241排程並調度圖形線程以在各種核243,244,245上執行。一組暫存器檔案242儲存在執行圖形線程時由核243、244、245使用的操作數值。這些可以包括例如用於儲存整數值的整數暫存器,用於儲存浮點值的浮點暫存器,用於儲存封裝資料元件(整數及/或浮點資料元件)的向量暫存器以及用於儲存張量/矩陣值的圖塊(tile)暫存器。在一實施例中,圖塊暫存器被實現為向量暫存器的組合集合。
一或複數個組合的級別1(L1)快取記憶體和共享記憶體單元247在每個多核組240A中本地儲存圖形資料,例如紋理資料,頂點資料,像素資料,射線資料,邊界體積資料等。一或複數個紋理單元247也可以用於執行紋理化操作,例如紋理映射和取樣。由多核組240A-240N的全部或子集共享的級別2(L2)快取記憶體253儲存圖形資料及/或複數個並發圖形線程的指令。如圖所示,L2快取記憶體253可以在複數個多核組240A-240N之間共享。一或複數個記憶體控制器248將GPU 239耦接到記憶體249,該記憶體可以是系統記憶體(例如,DRAM)及/或專用圖形記憶體(例如,GDDR6記憶體)。
輸入/輸出(I/O)電路250耦接GPU 239到一或複數個I/O裝置252,例如數位信號處理器(DSP),網路控制器或使用者輸入裝置。晶載互連可用於耦接I/O裝置252至GPU 239和記憶體249。I/O電路250的一或複數個I/O記憶體管理單元(IOMMU)251直接耦接I/O裝置252到系統記憶體249。在一實施例中,IOMMU 251管理多組頁表,以在系統記憶體249將虛擬位址映射到實體位址。在本實施例中,I/O裝置252,CPU 246和GPU 239可以共享相同的虛擬位址空間。
在一種實施方式中,IOMMU 251支援虛擬化。在這種情況下,它可以管理第一組頁面表以將訪客/圖形虛擬位址映射到訪客/圖形實體位址,以及第二組頁面表以將訪客/圖形實體位址映射到系統/主機實體位址(例 如,系統記憶體249中)。第一和第二組頁表中的每一基址(base address)可以儲存在控制暫存器中,並在上下文切換器上換出(例如,以便向新的上下文提供對相關頁組表的存取)。儘管未在圖2C中說明,但每個核243,244,245及/或多核組240A-240N可以包括轉譯後備緩衝區(TLB),以快取記憶體訪客虛擬到訪客實體轉譯(translation),訪客實體到主機實體轉譯以及訪客虛擬到主機實體轉譯。
在一實施例中,CPU 246,GPU 239和I/O裝置252被整合在單個半導體晶片及/或晶片封裝上。圖示的記憶體249可以整合在同一晶片上,或者可以通過晶片外介面耦接到記憶體控制器248。在一種實施方式中,記憶體249包括GDDR6記憶體,該GDDR6記憶體與其他實體系統級記憶體共享相同的虛擬位址空間,儘管本發明的基本原理不限於該特定實現。
在一實施例中,張量核244包括複數個專門設計用於執行矩陣運算的執行單元,矩陣運算是用於執行深度學習運算的基本計算運算。例如,同時矩陣乘法運算可用於神經網路訓練和推理。張量核244可以使用各種運算元(operand)精度,包括單精度浮點數(例如32位元(bit)),半精度浮點數(例如16位元),整數位(16位元),位元組(byte)(8位元)和半位元組(4位元)來執行矩陣處理。在一實施例中,神經網路實現提取每個渲染場景的特徵,潛在地組合複數個幀中的細節,以構造高品質的最終影像。
在深度學習實現中,可以排程平行矩陣乘法 工作以在張量核244上執行。神經網路的訓練尤其需要大量的矩陣點積運算。為處理NxNxN矩陣內積的公式,張量核244可以包括至少N個點積處理元件。在矩陣乘法開始之前,將一完整的矩陣加載到圖塊暫存器中,並在每個週期中將至少一行第二矩陣加載N個週期。每個循環有N個點積被處理。
取決於特定實現,可以以不同的精度儲存矩陣元件,包括16位元字,8位元位元組(例如INT8)和4位元半位元組(例如INT4)。針對張量核244可以指定不同的精度模式,以確保將最有效的精度用於不同的工作負載(例如,可以將量化容忍到位元組和半位元組的推理工作負載)。
在一實施例中,射線追蹤核245為實時射線追蹤和非實時射線追蹤實現加速射線追蹤操作。特別是射線追蹤核245包括射線穿越/相交電路,該射線穿越/相交電路用於使用邊界體積階層(BVH)來執行射線穿越並識別射線與包圍在BVH體積內的圖元之間的相交。射線追蹤核245還可包括用於執行深度測試和剔除(例如,使用Z緩衝器或類似配置)的電路。在一種實施方式中,射線追蹤核245與本文所述的影像降噪技術一致地執行遍歷和相交操作,其中至少一部分可以在張量核244上執行。例如,在一實施例中,張量核244實施深度學習神經網路以執行由射線追蹤核245產生的幀降噪。但是,CPU 246,圖形核243及/或射線追蹤核245也可以實現全部或部分降噪及/或 深度學習演算法。
另外,如上所述,可以採用分散式方法降噪,其中GPU 239在通過網路或高速互連耦接到其他計算裝置的計算裝置中。在該實施例中,互連的計算裝置共享神經網路學習/訓練資料,以提高整個系統學習針對不同類型的影像幀及/或不同圖形應用執行降噪的速度。
在一實施例中,射線追蹤核245處理所有BVH遍歷和射線-圖元交點,從而節省圖形核243不會因每條射線成千上萬條指令而過載。在一實施例中,每個射線追蹤核245包括用於執行邊界框測試(例如,用於遍歷操作)的第一組專用電路和用於執行射線-三角形相交測試(例如,已被遍歷的射線相交)的第二組專用電路。因此,在一實施例中,多核組240A可以簡單地發射射線探測器,且射線追蹤核245獨立地執行射線遍歷和相交,並將命中資料(例如,命中,無命中,多次命中等)返回到線程上下文。其他核243,244被釋放來執行其他圖形或者在計算工作射線追蹤核245執行遍歷和相交操作。
在一實施例中,每個射線追蹤核245包括執行BVH測試操作的遍歷單元和執行射線圖元相交測試的相交單元。相交單元產生“命中”,“無命中”或“多次命中”回應,並提供給相應的線程。在遍歷和相交操作期間,其他核的執行資源(例如,圖形核243和張量核244)被釋放以執行其他形式的圖形工作。
在下面描述的一特定實施例中,使用一種混 合光柵化/射線追蹤方法,其中,工作分散在圖形核243和射線追蹤核245之間。
在一實施例中,射線追蹤核245(及/或其他核243,244)包括用於射線追蹤的指令集,如Microsoft的DirectX射線追蹤(DXR)的硬體支援,其包括DispatchRays命令,以及射線產生,最接近命中,任何命中和未命中的著色器,其為每個物件啟用唯一的一組著色器和紋理分配。另一可能會受到射線追蹤核245,圖形核243和張量核244支援的射線追蹤平台是Vulkan1.1.85。然而,請注意,本發明的基本原理不限於任何特定的射線追蹤ISA。
通常,各種核245,244,243可以支援的射線追蹤的指令集,包括指令/功能射線產生,最接近命中,任何命中,射線圖元相交,每一圖元和分層邊界框結構中,未命中,訪問和異常。更具體地說,一實施例包括執行以下功能的射線追蹤指令:射線產生(Ray Generation)-可以為每個像素,樣本或其他使用者定義的工作分配執行射線產生指令。
最近命中(Closest Hit)-可以執行最近命中指令以定位射線與場景中圖元的最近交點。
任何命中(Any Hit)-任何命中指令可識別射線與場景中的圖元之間的複數個相交點,從而有可能識別新的最接近的相交點。
交叉(Intersection)-交叉指令執行射線圖元 的交叉口測試並輸出結果。
每個圖元邊界框的構造(Per-primitive Bounding box Construction)-該指令圍繞給定圖元或圖元組(例如,在構建新的BVH或其他加速度資料結構時)建立邊界框。
未命中(Miss)-表示射線錯過場景或場景的指定區域內的所有幾何圖形。
訪問(Visit)-指示射線將穿過的子體積。
異常(Exception)-包括各種類型的異常處理程式(例如,針對各種錯誤條件而調用)。
圖2D是根據本文描述的實施例的可以被配置為圖形處理器及/或計算加速器的通用圖形處理單元(GPGPU)270的方塊圖。GPGPU 270可以經由一或複數個系統及/或記憶體匯流排與主機處理器(例如,一或複數個CPU 246)和記憶體271、272互連。在一實施例中,記憶體271是可以與一個或複數個CPU 246共享的系統記憶體,而記憶體272是專用於GPGPU 270的裝置記憶體。在一實施例中,GPGPU 270內的組件和裝置記憶體272可被映射到一或複數個CPU 246可存取的記憶體位址。可以經由記憶體控制器268來促進對記憶體271和272的存取。在一實施例中,記憶體控制器268包括內部直接記憶體存取(DMA)控制器269,或可以包括用於執行在其他情況下將由DMA控制器執行的操作的邏輯。
GPGPU 270包括複數個快取記憶體,包括L2 快取記憶體253,L1快取記憶體254,指令快取記憶體255和共享記憶體256,其至少一部分也可以被劃分為快取記憶體。GPGPU 270還包括複數個計算單元260A-260N。每個計算單元260A-260N包括一組向量暫存器261,標量暫存器262,向量邏輯單元263和標量(scalar)邏輯單元264。計算單元260A-260N還可以包括本地共享記憶體265和程式計數器266。計算單元260A-260N可與恆定快取記憶體267耦接,該恆定快取記憶體267可用於儲存恆定資料,該恆定資料是在GPGPU 270上執行的內核(kernel)或著色器程式運行的期間將不會改變的資料。在一實施例中恆定快取記憶體267是標量資料快取記憶體,且可以將快取記憶體的資料直接提取到標量暫存器262中。
在操作期間,一或複數個CPU 246可以將命令寫入已經映射到可存取位址空間的GPGPU 270中的暫存器或記憶體中。命令處理器257可以從暫存器或記憶體讀取命令,並決定將如何在GPGPU 270內處理這些命令。然後可以使用線程分配器258將線程分配給計算單元260A-260N以執行那些命令。每個計算單元260A-260N可以獨立於其他計算單元執行線程。另外,每個計算單元260A-260N可以被獨立地配置用於條件計算,且可以將計算結果有條件地輸出到記憶體。當提交命令完成時,命令處理器257可以中斷一或複數個CPU 246。
圖3A-3C示出由本文描述的實施例提供的附加圖形處理器和計算加速器架構的方塊圖。圖3A-3C的元 件具有與本文中任何其他附圖的元件相同的附圖標記(或名稱)可以以類似於本文其他地方所述的任何方式操作或起作用,但不限於此。
圖3A是圖形處理器300的方塊圖,該圖形處理器300可以是離散圖形處理單元,或可以是與複數個處理核或其他半導體裝置整合在一起的圖形處理器,例如但不限於記憶體裝置或網路介面。在一些實施例中,圖形處理器經由記憶體映射的I/O介面與圖形處理器上的暫存器以及放置在處理器記憶體中的命令進行通信。在一些實施例中,圖形處理器300包括用於存取記憶體的記憶體介面314。記憶體介面314可以是本地記憶體,一或複數個內部快取記憶體,一或複數個共享的外部快取記憶體及/或系統記憶體的介面。
在一些實施例中,圖形處理器300還包括顯示控制器302將顯示輸出資料驅動到顯示裝置318。顯示控制器302包括用於一或複數個覆蓋平面的硬體,用於顯示和合成多層視訊或使用者介面元件。顯示裝置318可以是內部或外部顯示裝置。在一實施例中,顯示裝置318是頭戴式顯示裝置,例如虛擬實境(VR)顯示裝置或擴增實境(AR)顯示裝置。在一些實施例中,圖形處理器300包括視訊編解碼器引擎306,以將媒體編碼,解碼或轉碼為/從一或多種媒體編碼格式,或在一或多種媒體編碼格式之間進行編碼,解碼或轉碼,包括但不限於動態影像專家組(MPEG)格式,例如MPEG-2,高階視訊編碼(AVC)格式, 例如H.264/MPEG-4 AVC,H.265/HEVC,開放媒體聯盟(AOMedia)VP8,VP9,以及電影電視工程師協會(SMPTE)421M/VC-1,以及聯合影像專家組(JPEG)格式,例如JPEG,以及Motion JPEG(MJPEG)格式。
在一些實施例中,圖形處理器300包括區塊影像轉移(BLIT)引擎304,以執行二維(2D)光柵化器操作,包括例如位元邊界區塊傳送。然而,在一實施例中,使用圖形處理引擎(GPE)310的一或複數個組件來執行2D圖形操作。在一些實施例中,GPE 310是用於執行圖形操作的計算引擎,該圖形操作包括三維(3D)圖形操作和媒體操作。
在一些實施例中,GPE 310包括用於執行3D操作的3D管線312,諸如使用作用於3D圖元形狀(例如,矩形,三角形等)的處理功能來渲染三維影像和場景。3D管線312包括可程式化和固定功能元件,其在元件內執行各種任務及/或產生3D/媒體子系統(3D/Media subsystem)315的執行線程。而3D管線312可以用於執行媒體操作,GPE 310的實施例還包括媒體管線316,其專門用於執行媒體操作,例如視訊後處理和影像增強。
在一些實施例中,媒體管線316包括固定功能或可程式化邏輯單元,以執行一或複數個專用媒體操作,例如視訊解碼加速,視訊解交鍺(de-interlacing)和視訊編碼加速,以代替視訊或代表視訊編解碼器引擎306。在一些實施例中,媒體管線316還包括線程產生單元,以 產生線程以在3D/媒體子系統315上執行。產生的線程對包括在3D/媒體子系統315中的一或複數個圖形執行單元上的媒體操作執行計算。
在一些實施例中,3D/媒體子系統315包括用於執行由3D管線312和媒體管線316產生的線程的邏輯。在一實施例中,管線將線程執行請求發送到3D/媒體子系統315,其包括用於仲裁(arbitrate)各種請求並將其分配給可用的線程執行資源的線程分配邏輯。執行資源包括圖形執行單元陣列,用於處理3D和媒體線程。在一些實施例中,3D/媒體子系統315包括用於線程指令和資料的一或複數個內部快取記憶體。在一些實施例中,子系統還包括共享記憶體,包括暫存器和可尋址記憶體,以在線程之間共享資料並儲存輸出資料。
圖3B示出根據本文所述的實施例,具有圖塊(tiled)架構的圖形處理器320。在一實施例中,圖形處理器320包括圖形處理引擎叢集322具有在圖形引擎圖塊310A-310D中圖3A的圖形處理引擎310的複數個實例。每圖形引擎圖塊310A-310D可以通過一組圖塊互連件323A-323F互連。每圖形引擎圖塊310A-310D也可以通過記憶體互連325A-325D連接到記憶體模組或記憶體裝置326A-326D。記憶體裝置326A-326D可以使用任何圖形記憶體技術。例如,記憶體裝置326A-326D可以是圖形雙倍資料速率(GDDR)記憶體。在一實施例中,記憶體裝置326A-326D是高頻寬記憶體(HBM)模組,其可以與其各自的圖形引擎圖 塊310A-310D一起在晶片上。在一實施例中,記憶體裝置326A-326D是可以堆疊在其各自的圖形引擎圖塊310A-310D頂部的堆疊記憶體裝置。在一實施例中,每個圖形引擎圖塊310A-310D及其關聯記憶體326A-326D駐留(reside)在單獨的小晶片,其被結合到基礎晶粒(base die)或基底基板,進一步詳細地描述在圖11B-11D。
圖形處理引擎叢集322可以與晶載或封裝上結構互連324連接。結構互連324可使圖形引擎圖塊310A-310D與諸如視訊編解碼器306和一或複數個複製引擎304的組件之間能夠通信。複製引擎304可用於將資料移出,移至記憶體裝置326A-326D和圖形處理器320外部的記憶體(例如,系統記憶體),以及在記憶體裝置326A-326D和圖形處理器320外部的記憶體之間。結構互連324也可以用於互連圖形引擎圖塊310A-310D。圖形處理器320可以可選地包括顯示控制器302,以實現與外部顯示裝置318的連接。圖形處理器也可以被配置為圖形或計算加速器。在加速器配置中,可以省略顯示控制器302和顯示裝置318。
圖形處理器320可以經由主機介面328連接到主機系統。主機介面328可以使得能夠在圖形處理器320,系統記憶體及/或其他系統組件之間進行通信。主機介面328可以是例如PCI Express匯流排或另一類型的主機系統介面。
圖3C示出根據本文描述的實施例的計算加速器330。計算加速器330可以包括與圖3B的圖形處理器320 的架構相似性,且針對計算加速進行最佳化。計算引擎叢集332可以包括一組計算引擎圖塊340A-340D,其包括針對平行或基於向量的通用計算操作而最佳化的執行邏輯。在一些實施例中,計算引擎圖塊340A-340D不包括固定功能圖形處理邏輯,儘管在一實施例中,計算引擎塊340A-340D中的一或複數個可以包括邏輯以執行媒體加速。計算引擎圖塊340A-340D可以經由記憶體互連325A-325D連接到記憶體326A-326D。記憶體326A-326D和記憶體互連325A-325D可以是與圖形處理器320中類似的技術,或者可以是不同的。圖形計算引擎圖塊340A-340D還可以經由一組圖塊互連323A-323F互連,且可以與結構互連324連接及/或通過結構互連324互連。在一實施例中,計算加速器330包括大的L3快取記憶體336,其可以配置為裝置範圍(device-wide)的快取記憶體。計算加速器330還可以通過主機介面328以與圖3B的圖形處理器320類似的方式連接到主機處理器和記憶體。
圖形處理引擎
圖4是根據一些實施例的圖形處理器的圖形處理引擎410的方塊圖。在一實施例中,圖形處理引擎(GPE)410是圖3A所示的GPE 310的版本,且還可以表示圖3B的圖形引擎圖塊310A-310D。具有與本文中任何其他附圖的元件相同的附圖標記(或名稱)的圖4中的元件可以以與本文中其他地方所描述的方式類似的任何方式操作或功 能,但不限於此。例如,示出圖3A的3D管線312和媒體管線316。媒體管線316在GPE 410的一些實施例中是可選的,且可以不明確地包括在GPE 410內。例如且在至少一實施例中,單獨的媒體及/或影像處理器耦接到GPE 410。
在一些實施例中,GPE 410與命令串流器403耦接或包括命令串流器403,該命令串流器403向3D管線312及/或媒體管線316提供命令串流。在一些實施例中,命令串流器403與記憶體耦接,該記憶體可以是系統記憶體,或內部快取記憶體和共享快取記憶體中的一或複數個。在一些實施例中,命令串流器(command streamer)403從記憶體接收命令,並將命令發送到3D管線312及/或媒體管線316。命令是從環形緩衝區獲取的指令,該環形緩衝區儲存用於3D管線312和媒體管線316的命令。在一實施例中,環形緩衝器可以另外包括儲存複數個命令的批次的批次命令緩衝器。用於3D管線312的命令還可以包括對儲存在記憶體中的資料的引用,例如但不限於用於3D管線312的頂點和幾何資料及/或用於媒體管線316的影像資料和記憶體物件。3D管線312和媒體管線316通過經由相應管線內的邏輯執行操作或通過將一或複數個執行線程分配到圖形核陣列414來處理命令和資料。在一實施例中,圖形核陣列414包括複數個圖形核(例如,圖形核415A,圖形核415B)的一或複數個方塊,每個方塊包括一或複數個圖形核。每個圖形核包括一組圖形執行資源,其包括用於執行圖形和計算操作的通用和圖形特定的執行邏輯,以及固定 功能紋理處理及/或機器學習以及人工智慧加速邏輯。
在各種實施例中,3D管線312可以包括固定功能和可程式邏輯,以通過處理指令,並將執行線程調度到圖形核陣列414來處理一或複數個著色器程式,例如頂點著色器,幾何著色器,像素著色器,片段著色器,計算著色器或其他著色器程式。圖形核陣列414提供用於執行這些著色器程式的執行資源的統一方塊。圖形核陣列414的圖形核415A-414B內的多用途執行邏輯(例如,執行單元)包括對各種3D API著色器語言的支援,且可以執行與複數個著色器相關聯的複數個同時執行線程。
在一些實施例中,圖形核陣列414包括執行邏輯以執行媒體功能,諸如視訊及/或影像處理。在一實施例中,除圖形處理操作之外,執行單元還包括可程式以執行平行通用計算操作的通用邏輯。通用邏輯可以平行執行處理操作,或與圖1的處理器核107內的通用邏輯或與圖2A的核202A-202N內的通用邏輯結合。
由在圖形核陣列414上執行的線程產生的輸出資料可以將資料輸出到統一返回緩衝器(URB)418中的記憶體。URB 418可以儲存複數個線程的資料。在一些實施例中,URB 418可以用於在圖形核陣列414上執行的不同線程之間發送資料。在一些實施例中,URB 418可以另外用於圖形核陣列上的線程與共享功能邏輯420內的固定功能邏輯之間同步。
在一些實施例中,圖形核陣列414是可縮放 的,使得該陣列包括可變數量的圖形核,每個圖形核基於GPE 410的目標功率和性能水平具有可變數量的執行單元。在一實施例中執行資源是動態可縮放的,因此可以根據需要啟用或禁用執行資源。
圖形核陣列414與共享功能邏輯420耦接,該共享功能邏輯420包括在圖形核陣列中的圖形核之間共享的複數個資源。共享功能邏輯420內的共享功能是硬體邏輯單元,其提供專門的補充功能至圖形核陣列414。在各種實施例中,共享功能邏輯420包括但不限於取樣器421,數學運算器422和線程間通信(ITC)423邏輯。另外,一些實施例在共享功能邏輯420內實現一或複數個快取記憶體425。
至少在對給定專用功能的需求不足以將其包括在圖形核陣列414中的情況下,實現共享功能。相反,將該專用功能的單個實例實現為共享功能邏輯420中的獨立實體,並在圖形核陣列414內的執行資源之間共享。在圖形核陣列414之間共享且包括在圖形核陣列414內的功能的精確集合在各個實施例中變化。在一些實施例中,由圖形核陣列414廣泛使用的共享功能邏輯420內的特定共享功能可以被包括在圖形核陣列414內的共享功能邏輯416內。在各種實施例中,圖形核陣列414內的共享功能邏輯416可包括共享功能邏輯420內的一些或全部邏輯。在一實施例中,共享功能邏輯420內的所有邏輯元件可在圖形核陣列414的共享功能邏輯416內複製。在一實施例中,共享功能 邏輯420被排除在外,從而有利於圖形核陣列414內的共享功能邏輯416。
執行單元
圖5A-5B圖示根據在此描述的實施例的線程執行邏輯500,該線程執行邏輯500包括在圖形處理器核中採用的處理元件陣列。具有與本文中任何其他附圖的元件相同的附圖標記(或名稱)的圖5A-5B的元件可以以類似於本文其他地方所描述的任何方式來操作或功能,但不限於此。圖5A-5B示出線程執行邏輯500的概觀,其可以代表圖2B的每個子核221A-221F示出的硬體邏輯。圖5A表示通用圖形處理器內的執行單元,而圖5B表示可以在計算加速器內使用的執行單元。
如圖5A所示,在一些實施例中,線程執行邏輯500包括著色器處理器502,線程分配器504,指令快取記憶體506,包括複數個執行單元508A-508N的可縮放執行單元陣列,取樣器510,共享本地記憶體511,資料快取記憶體512和資料連接埠514。在一實施例中,可縮放執行單元陣列基於工作負載的計算需求可以通過啟用或禁用一或複數個執行單元(例如,通過508N-1和508N,執行單元508A,508B,508C,508D中的任何一者)來動態縮放(dynamically scale)。在一實施例中,所包括的組件通過互連結構互連,該互連結構鏈接到每個組件。在一些實施例中,線程執行邏輯500包括通過指令快取記憶體506,資料 連接埠514,取樣器510和執行單元508A-508N中的一或複數個到諸如系統記憶體或快取記憶體的記憶體的一或複數個連接。在一些實施例中,每個執行單元(例如508A)是獨立的可程式通用計算單元,其能夠執行複數個同時的硬體線程,同時針對每個線程平行處理複數個資料元件。在各種實施例中,執行單元508A-508N的陣列可縮放以包括任意數量的單獨執行單元。
在一些實施例中,執行單元508A-508N主要用於執行著色器程式。著色器處理器502可以處理各種著色器程式,並通過線程分配器504來分配與著色器程式相關聯的執行線程。在一實施例中,線程分配器包括邏輯,該邏輯對來自圖形和媒體管線的線程發起請求進行仲裁,並在執行單元508A-508N中的一或複數個執行單元上實例化所請求的線程。例如,幾何管線可以將頂點,曲面細分或幾何著色器分配到線程執行邏輯以進行處理。在一些實施例中,線程分配器504還可以處理來自正在執行的著色器程式的運行時線程產生請求。
在一些實施例中,執行單元508A-508N支援指令集,該指令集包括對許多標準3D圖形著色器指令的本地支援,使得來自圖形資料庫的著色器程式(例如Direct 3D和OpenGL)以最小的轉譯執行。執行單元支援頂點和幾何處理(例如,頂點程式,幾何程式,頂點著色器),像素處理(例如,像素著色器,片段著色器)和通用處理(例如,計算和媒體著色器)。執行單元508A-508N中的每一個能夠 執行多發出單指令多資料(SIMD),且面對更高等待時間(latency)的記憶體存取,多線程操作能夠實現有效的執行環境。每個執行單元中的每個硬體線程都有一個專用的高頻寬暫存器檔案和相關的獨立線程狀態。執行是每個時脈多次執行到管線,該管線能夠進行整數,單精度和雙精度浮點運算,SIMD分支功能(branch capability),邏輯運算,先驗運算(transcendental operation)和其他雜項運算。在等待來自記憶體或共享功能之一的資料時,執行單元508A-508N內的依賴性邏輯使等待線程休眠,直到返回所請求的資料。在等待線程處於休眠狀態時,硬體資源可能專用於處理其他線程。例如,在與頂點著色器操作相關聯的延遲期間,執行單元可以執行像素著色器,片段著色器或另一類型的著色器程式(包括不同的頂點著色器)操作。各種實施例可以通過使用單指令多線程(SIMT)來代替SIMD的使用或除了SIMD的使用而適用於執行。對SIMD核或操作的引用也可以應用於SIMT或與SIMT一起應用於SIMD。
執行單元508A-508N中的每個執行單元對資料元件的陣列進行操作。資料元件的數量是“執行尺寸”或指令的通道數量。執行通道是指令內資料元件存取,屏蔽和流控制的邏輯執行單元。通道的數量可以獨立於特定圖形處理器的實體算術邏輯單元(ALU)或浮點單元(FPU)的數量。在一些實施例中,執行單元508A-508N支援整數和浮點資料類型。
執行單元指令集包括SIMD指令。各種資料元件可以作為封裝資料類型儲存在暫存器中,執行單元將根據元件的資料尺寸處理各種元件。例如,當在256位元寬的向量上操作時,該向量的256位元儲存在暫存器中,執行單元在該向量上作為四個單獨的54位元封包資料元件(四字(QW)大小資料元件),八個單獨的32位元封包資料元件(雙字(DW)大小資料元件),十六個單獨的16位元封包資料元件(字(W)大小資料元件)或32個單獨的8位元資料元件(位元組(B)大小的資料元件)。但是,可以使用不同的向量寬度和暫存器大小。
在一實施例中,可以將一或複數個執行單元組合成具有對融合的EU通用的線程控制邏輯(507A-507N)的融合的執行單元509A-509N。可以將複數個EU融合為一個EU組。可以將融合的EU組中的每個EU配置為執行單獨的SIMD硬體線程。融合的EU組中的EU的數量可以根據實施例而變化。此外,每個EU可以執行各種SIMD寬度,包括但不限於SIMD8,SIMD16和SIMD32。每個融合圖形執行單元509A-509N包括至少兩個執行單元。例如,融合執行單元509A包括第一EU 508A,第二EU 508B和第一EU 508A和第二EU 508B共有的線程控制邏輯507A。線程控制邏輯507A控制在融合圖形執行單元509A上執行的線程,從而允許融合執行單元509A-509N內的每個EU使用公共指令指標暫存器來執行。
線程執行邏輯500中包括一或複數個內部指 令快取記憶體(例如506),以快取記憶體用於執行單元的線程指令。在一些實施例中,包括一或複數個資料快取記憶體(例如512)以在線程執行期間快取記憶體線程資料。在執行邏輯500上執行的線程也可以將顯性管理的資料儲存在共享本地記憶體511中。在一些實施例中,包括取樣器510以提供用於3D操作的紋理取樣和用於媒體操作的媒體取樣。在一些實施例中,取樣器510包括專門的紋理或媒體取樣功能,以在將取樣資料提供給執行單元之前在取樣過程中處理紋理或媒體資料。
在執行期間,圖形和媒體管線通過線程產生和分配邏輯將線程發起請求發送到線程執行邏輯500。一旦一組幾何物件已被處理並光柵化成像素資料,則調用著色器處理器502內的像素處理器邏輯(例如,像素著色器邏輯,片段著色器邏輯等)以進一步計算輸出資訊並使結果被寫入到輸出表面(例如,顏色緩衝區,深度緩衝區,模板(stencil)緩衝區等)。在一些實施例中,像素著色器或片段著色器計算要在整個光柵化物件上插值的各種頂點屬性的值。在一些實施例中,著色器處理器502內的像素處理器邏輯然後執行應用程式介面(API)提供的像素或片段著色器程式。為執行著色器程式,著色器處理器502經由線程分配器504將線程分配給執行單元(例如508A)。在一些實施例中,著色器處理器502使用取樣器510中的紋理取樣邏輯來存取儲存在記憶體中的紋理映射中的紋理資料。對紋理資料和輸入幾何資料的算術運算可為每個幾何片段計 算像素顏色資料,或丟棄一或複數個像素以進行進一步處理。
在一些實施例中,資料連接埠514提供用於線程執行邏輯500的記憶體存取機制,以將處理後的資料輸出到記憶體以在圖形處理器輸出管線上進行進一步處理。在一些實施例中,資料連接埠514包括或耦接到一或複數個快取記憶體(例如,資料快取記憶體512),以快取記憶體資料以用於經由資料連接埠的記憶體存取。
在一實施例中,執行邏輯500還可以包括可以提供射線追蹤加速功能的射線追蹤器505。射線追蹤器505可以支援包括用於射線產生的指令/功能的射線追蹤指令集。射線追蹤指令集可以與圖2C中的射線追蹤核245支援的射線追蹤指令集相似或不同。
圖5B示出根據實施例的執行單元508的示例性內部細節。圖形執行單元508可以包括指令獲取單元537,通用暫存器檔案陣列(GRF)524,架構暫存器檔案陣列(ARF)526,線程仲裁器522,發送單元530,分支單元532,一組SIMD浮點單元(FPU)534,及在一實施例中,一組專用整數SIMD ALU 535。GRF 524和ARF 526包括與每個同時存在的硬體線程相關聯的通用暫存器檔案和架構暫存器檔案的集合,這些線程可以在圖形執行單元508中啟用。在一實施例中,在ARF 526中維護每個線程的架構狀態,而在線程執行期間使用的資料儲存在GRF 524中。每個線程的執行狀態,包括每個線程的指令指標(pointer), 可以保持在ARF 526中在特定於線程的暫存器中。
在一實施例中,圖形執行單元508具有作為同時多線程(SMT)和細粒度交錯多線程(IMT)的組合的架構。該架構具有模組化配置,可以在設計時根據同時線程的目標數量和每個執行單元的暫存器數量進行微調,其中執行單元資源在用於執行複數個同時線程的邏輯之間分配。圖形執行單元508可以執行的邏輯線程的數量不限於硬體線程的數量,且可以將複數個邏輯線程分配給每個硬體線程。
在一實施例中,圖形執行單元508可以共同發布複數個指令,每個指令可以是不同的指令。圖形執行單元線程508的線程仲裁器522可以將指令分配給發送單元530,分支單元532或SIMD FPU 534之一以執行。每個執行線程可以存取GRF 524中的128個通用暫存器,其中每個暫存器可以儲存32位元組,可以作為32位元資料元件的SIMD 8元件向量進行存取。在一實施例中,每個執行單元線程可以存取GRF 524中的4KB,儘管實施例不限於此,且在其他實施例中可以提供更多或更少的暫存器資源。在一實施例中,儘管每個執行單元的線程數量也可以根據實施例而變化,但是圖形執行單元508被劃分為可以獨立執行計算操作的七個硬體線程。例如,在一實施例中,最多支援16個硬體線程。在七個線程可以存取4KB的實施例中,GRF 524可以儲存總共28KB。在16個線程可以存取4KB的地方,GRF 524可以儲存總共64KB。彈性的尋址模 式(addressing mode)可以允許對暫存器進行一起尋址,以有效地構建更寬的暫存器或表示跨步的(stride)矩形方塊資料結構。
在一實施例中,經由由消息傳遞發送單元530執行的“發送”指令來調度記憶體操作,取樣器操作和其他更長等待時間的系統通信。在一實施例中,將分支指令調度到專用分支單元532以促進SIMD發散和最終收斂。
在一實施例中,圖形執行單元508包括一或複數個SIMD浮點單元(FPU)534來執行浮點操作。在一實施例中,FPU 534也支援整數計算。在一實施例中,FPU 534可以SIMD執行多達M個32位元浮點(或整數)運算,或者SIMD執行多達2M個16位元整數或16位元浮點運算。在一實施例中,至少一FPU提供擴展的數學能力以支援高通量(high-throughput)的先驗(transcendental)數學函數和雙精度54位元浮點。在一些實施例中,還存在一組8位元整數SIMD ALU 535,且可以對其進行特別最佳化以執行與機器學習計算相關的操作。
在一實施例中,圖形執行單元508的複數個實例的陣列可以在圖形子核分組(例如,子切片)中實例化。為可縮放性,產品架構可以為每個子核分組選擇確切的執行單元數。在一實施例中,執行單元508可以跨複數個執行通道執行指令。在另一實施例中,每個線程在圖形執行單元508在不同的通道上執行。
圖6示出根據一實施例的附加執行單元600。 執行單元600可以是用於例如在圖3C計算引擎圖塊340A-340D中的計算最佳化的執行單元,但並不限於此。變體執行單元600也可以用於在圖3B中圖形引擎圖塊310A-310D。在一實施例中,執行單元600包括線程控制單元601,線程狀態單元602,指令獲取/預取單元603和指令解碼單元604。執行單元600還包括暫存器檔案606,其儲存可以分配給執行單元內的硬體線程的暫存器。執行單元600還包括發送單元607和分支單元608。在一實施例中,發送單元607和分支單元608可以與圖5B的圖形執行單元508的發送單元530和分支單元532類似地操作。
執行單元600還包括計算單元610,其包括複數個不同類型的功能單元。在一實施例中,計算單元610包括ALU單元611,其包括算術邏輯單元的陣列。ALU單元611可以被配置為執行64位元,32位元和16位元整數和浮點運算。整數和浮點運算可以同時執行。計算單元610還可以包括脈動陣列(systolic array)612和數學(MATH)單元613。脈動陣列612包括可用於以脈動方式執行向量或其他資料平行操作的W寬和D深度網路的資料處理單元。在一實施例中,脈動陣列612可以被配置為執行矩陣運算,例如矩陣點積運算。在一實施例中,脈動陣列612支援16位元浮點運算,以及8位元和4位元整數運算。在一實施例中,脈動陣列612可以被配置為加速機器學習操作。在這樣的實施例中,脈動陣列612可以配置為支援bfloat 16位元浮點格式。在一實施例中,可以包括數學單元613,以 比ALU單元611有效和低功率的方式執行數學運算的特定子集。數學單元613可以包括可以在其他實施例提供的圖形處理引擎的共享功能邏輯中找到的數學邏輯的變體(例如,圖4的共享功能邏輯420的數學邏輯422)。在一實施例中,數學單元613可以被配置為執行32位元和64位元浮點運算。
線程控制單元601包括用於控制執行單元內的線程的執行的邏輯。線程控制單元601可以包括線程仲裁邏輯,以開始,停止和預佔執行單元600內的線程的執行。線程狀態單元602可以用於儲存分配給在執行單元600上執行的線程的線程狀態。將線程狀態儲存在執行單元600內能夠在線程被阻塞(block)或空閒(idle)時迅速預佔線程。指令獲取/預取單元603可以從較高階執行邏輯的指令快取記憶體(例如,如圖5A中的指令快取記憶體506)獲取指令。指令獲取/預取單元603還可以基於對當前執行線程的分析,發出對要加載到指令快取記憶體中的指令的預取請求。指令解碼單元604可以用於解碼要由計算單元執行的指令。在一實施例中,指令解碼單元604可以用作輔助解碼器(secondary decoder),以將複雜的指令解碼為組成的微操作。
執行單元600另外包括暫存器檔案606,該暫存器檔案606可以由在執行單元600上執行的硬體線程使用。暫存器檔案606中的暫存器可以在用於執行執行單元600的計算單元610內的複數個同時線程的邏輯上劃分。圖 形執行單元600可以執行的邏輯線程的數量不限於硬體線程的數量,且可以將複數個邏輯線程分配給每個硬體線程。暫存器檔案606的大小可以基於支援的硬體線程的數量而在各實施例中變化。在一實施例中,暫存器重命名可用於動態地將暫存器分配給硬體線程。
圖7是圖示根據一些實施例的圖形處理器指令格式700的方塊圖。在一或複數個實施例中,圖形處理器執行單元支援具有多種格式的指令的指令集。實線框示出通常包括在執行單元指令中的組件,而虛線包括可選的組件或僅包括在指令的子集中的組件。在一些實施例中,所描述和示出的指令格式700是宏指令(macro-instruction),因為其是提供給執行單元的指令,與一旦處理指令後由指令解碼產生的微操作相反。
在一些實施例中,圖形處理器執行單元本機(natively)支援128位元指令格式710中的指令。基於所選指令,指令選項和運算元的數量,對於一些指令可使用64位元壓縮指令格式730。本機128位元指令格式710提供對所有指令選項的存取,而一些選項和操作則受64位元格式730的限制。64位元格式730中可用的本機指令因實施例而異。在一些實施例中,使用索引欄位713中的一組索引值來部分壓縮指令。執行單元硬體基於索引值來引用一組壓縮表,並使用壓縮表輸出來重構128位元指令格式710中的本機指令。可以使用其他大小和格式的指令。
對於每種格式,指令運算碼712定義執行單 元將要執行的操作。執行單元跨每個運算元的複數個資料元件平行執行每個指令。例如,回應於添加指令,執行單元跨表示紋理元件或圖片元件的每個顏色通道執行同時添加操作。預設情況下,執行單元跨運算元的所有資料通道執行每個指令。在一些實施例中,指令控制欄位714使得能夠控制一些執行選項,例如通道選擇(例如,預測)和資料通道順序(例如,混合(swizzle))。對於128位元指令格式710的指令,執行尺寸(exec-size)欄位716限制將平行執行的資料通道的數量。在一些實施例中,執行尺寸欄位716不可用於64位元緊密指令(compact instruction)格式730。
一些執行單元指令具有最多三個運算元,包括兩個源運算元src0 720,src1 722和一目的地(destination)718。在一些實施例中,執行單元支援雙重目的地指令,其中暗指目的地之一。資料操作指令可以具有第三個源運算元(例如SRC2 724),其中指令運算碼712決定源運算元的數量。指令的最後源運算元可以是隨指令傳遞的立即數(例如,硬編碼(hard-coded))。
在一些實施例中,128位元指令格式710包括存取/位址模式欄位726指定例如使用直接暫存器尋址模式或間接暫存器尋址模式。當使用直接暫存器尋址模式時,一或複數個運算元的暫存器位址直接由指令中的位元提供。
在一些實施例中,128位元指令格式710包括存取/位址模式欄位726,其指定用於指令的位址模式及/或 存取模式。在一實施例中,存取模式用於為指令定義資料存取對齊。一些實施例支援存取模式,包括16位元組對齊的存取模式和1位元組對齊的存取模式,其中存取模式的位元組對齊決定指令運算元的存取對齊。例如,當處於第一模式時,該指令可以對源和目標運算元使用位元組對齊的尋址,而當處於第二模式時,該指令可以對所有源和目標運算元使用16位元組對齊的尋址。
在一實施例中,存取/位址模式欄位726的位址模式部分決定該指令是使用直接尋址或間接尋址。使用直接暫存器尋址模式時,指令中的位元直接提供一或複數個運算元的暫存器位址。當使用間接暫存器尋址模式時,可基於指令中的位址暫存器值和位址立即欄位來計算一或複數個運算元的暫存器位址。
在一些實施例中,基於運算碼712位元欄位對指令進行分組以簡化運算碼解碼740。對於8位元運算碼,位元4,5,和6中允許執行單元,以決定運算碼的類型。所示的精確運算碼分組僅是示例。在一些實施例中,移動(move)和邏輯運算碼組742包括資料移動和邏輯指令(例如,移動(mov),比較(cmp))。在一些實施例中,移動及邏輯組742共享五個最高有效位元(MSB),其中移動(mov)指令的形式為0000xxxxb,而邏輯指令的形式為0001xxxxb。一種串流(flow)控制指令組744(例如,呼叫,跳越(jmp))包括0010xxxxb(例如,0x20)形式的指令。一種雜項(miscellaneous)指令組746包括指令的混合,包括 0011xxxxb(例如0x30)形式的同步指令(例如等待,發送)。一種平行數學指令組748包括形式為0100xxxxb(例如0x40)按分量逐個作出的(component-wise)算術指令(例如,加,乘(mul))。平行數學組748跨資料通道平行執行算術運算。向量數學組750包括形式為0101xxxxb(例如0x50)的算術指令(例如dp4)。向量數學組對向量運算元執行算術運算,例如點積計算。圖示在一實施例中,運算碼解碼器740可以用於決定執行單元的哪一部分將用於執行解碼的指令。例如,一些指令可以被指定為將由脈動陣列執行的脈動指令。諸如射線追蹤指令(未示出)之類的其他指令可以被路由到執行邏輯的切片(slice)或分區(partition)內的射線追蹤核或射線追蹤邏輯。
圖形管線
圖8是圖形處理器800的另一實施例的方塊圖。具有與本文中任何其他圖的元件相同的附圖標記(或名稱)的圖8的元件可以以類似於本文其他地方所描述的任何方式來操作或起作用,但不限於此。
在一些實施例中,圖形處理器800包括幾何管線820,媒體管線830,顯示引擎840,執行緒邏輯850和渲染輸出管線870。在一些實施例中,圖形處理器800是包括一或複數個通用處理核的多核處理系統中的圖形處理器。圖形處理器通過對一或複數個控制暫存器的暫存器寫入或通過經由環形互連802發給圖形處理器800的命令來控 制。在一些實施例中,環形互連802將圖形處理器800耦接到其他處理組件,例如其他圖形處理器或通用處理器。來自環形互連802的命令由命令串流器803轉譯,該命令串流器803將指令提供給幾何管線820或媒體管線830的各個組件。
在一些實施例中,命令串流器803引導頂點獲取器805的操作,其從記憶體讀取頂點資料並執行由命令串流器803提供的頂點處理命令。在一些實施例中,頂點獲取器805將頂點資料提供給頂點著色器807,其對每個頂點執行坐標空間變換和照明操作。在一些實施例中,頂點獲取器805和頂點著色器807通過經由線程分配器831向執行單元852A-852B分配執行線程來執行頂點處理指令。
在一些實施例中,執行單元852A-852B是向量處理器的陣列,其具有用於執行圖形和媒體操作的指令集。在一些實施例中,執行單元852A-852B具有專用於每個陣列或在陣列之間共享的附加的L1快取記憶體851。可以將快取記憶體配置為資料快取記憶體,指令快取記憶體或單個快取記憶體,該快取記憶體已分區為包括不同分區中的資料和指令。
在一些實施例中,幾何管線820包括鑲嵌組件,以執行3D物件的硬體加速的鑲嵌。在一些實施例中,可程式的外殼著色器(hull shader)811配置鑲嵌操作。可程式域著色器817提供鑲嵌輸出的後端評估。曲面細分器(tessellator)813在外殼著色器811的方向上操作,並包括特 殊用途的邏輯,以基於作為幾何管線820輸入的粗略幾何模型產生一組詳細的幾何物件。在一些實施例中,如果不使用鑲嵌,則可以繞過曲面細分組件(例如,外殼著色器811,曲面細分器813和域著色器817)。
在一些實施例中,可以通過分配給執行單元852A-852B的一或複數個線程來由幾何著色器819處理完整的幾何物件,或者可以直接進行到限幅器(clipper)829。在一些實施例中,幾何著色器在整個幾何物件上進行操作,而不是圖形管線先前階段中的頂點或頂點補丁(patch)。如果禁用曲面細分,則幾何著色器819從頂點著色器807接收輸入。在一些實施例中,如果禁用曲面細分單元,則幾何著色器819可由幾何著色器程式編程以執行幾何曲面細分。
在光柵化之前,限幅器(clipper)829處理頂點資料。限幅器829可以是具有修剪和幾何著色器功能的固定功能限幅器或可程式限幅器。在一些實施例中,渲染輸出管線870中的光柵化器(rasterizer)和深度測試組件873調度像素著色器,以將幾何物件轉換成每像素表示。在一些實施例中,像素著色器邏輯被包括在線程執行邏輯850中。在一些實施例中,應用可以繞過光柵化器和深度測試組件873,且經由串流輸出單元823存取未光柵化的頂點資料。
圖形處理器800具有允許資料和消息在處理器的主要組件之間傳遞的互連匯流排,互連結構或某種其 他互連機制。在一些實施例中,執行單元852A-852B和相關聯的邏輯單元(例如,L1快取記憶體851,取樣器854,紋理快取記憶體858等)經由資料連接埠856互連以執行記憶體存取並與處理器的渲染輸出管線組件通信。在一些實施例中,取樣器854,快取記憶體851、858和執行單元852A-852B各具有單獨的記憶體存取路徑。在一實施例中,紋理快取記憶體858也可以被配置為取樣器緩存。
在一些實施例中,渲染輸出管線870包括光柵化器和深度測試組件873,其將基於頂點的物件轉換為關聯的基於像素的表示。在一些實施例中,光柵化器邏輯包括加窗器(windower)/遮罩器單元以執行固定功能的三角形和線光柵化。在一些實施例中,關聯的渲染快取記憶體878和深度快取記憶體879也是可用的。像素運算組件877對資料執行基於像素的運算,儘管在某些情況下,與2D運算關聯的像素運算(例如,具有混合的位元方塊影像傳輸)由2D引擎841執行,或在顯示時使用覆蓋顯示平面由顯示控制器843替代。在一些實施例中,共享的L3快取記憶體875可用於所有圖形組件,從而允許在不使用主系統記憶體的情況下共享資料。
在一些實施例中,圖形處理器媒體管線830包括媒體引擎837和視訊前端834。在一些實施例中,視訊前端834從命令串流器803接收管線命令。在一些實施例中,媒體管線830包括單獨的命令串流媒體。在一些實施例中,視訊前端834在將命令發送到媒體引擎837之前處理 媒體命令。在一些實施例中,媒體引擎837包括線程產生功能,以產生線程以經由線程分配器831分配給線程執行邏輯850。
在一些實施例中,圖形處理器800包括顯示引擎840。在一些實施例中,顯示引擎840在處理器800的外部且經由環形互連802或某些其他互連匯流排或結構與圖形處理器耦接。在一些實施例中,顯示引擎840包括2D引擎841和顯示控制器843。在一些實施例中,顯示引擎840包括能夠獨立於3D管線運行的專用邏輯。在一些實施例中,顯示控制器843與顯示裝置(未示出)耦接,該顯示裝置可以是如筆記型電腦(laptop computer)中的系統整合顯示裝置,或者是經由顯示裝置連接器附接的外部顯示裝置。
在一些實施例中,幾何管線820和媒體管線830可配置為基於複數個圖形和媒體程式化介面來執行操作,且不特定於任何一個應用程式介面(API)。在一些實施例中,用於圖形處理器的驅動器軟體將特定於特定圖形或媒體資料庫的API調用(call)轉換為可由圖形處理器處理的命令。在一些實施例中,提供全部來自科納斯組織(Khronos Group)用於開放圖形資料庫(Open Graphics Library,OpenGL),開放計算語言(Open Computing Language,OpenCL)及/或Vulkan圖形和計算API的支援。在一些實施例中,也可以從微軟公司提供對Direct3D資料庫的支援。在一些實施例中,可以支援這些資料庫的組合。 還可以為開源電腦視覺資料庫(Open Source Computer Vision Library,OpenCV)提供支援。如果可以從將來的API的管線到圖形處理器的管線進行映射,則還將支援具有兼容3D管線的將來API。
圖形管線程式化
圖9A是根據一些實施例說明圖形處理器命令格式900的方塊圖。圖9B是示出根據一實施例的圖形處理器命令序列910的方塊圖。圖9A中的實線框示出通常包括在圖形命令中的組件,而虛線包括可選的組件或僅包括在圖形命令的子集中的組件。圖9A的示例性圖形處理器命令格式900包括用於命令的用於標識客戶端902的資料欄位,命令運算碼(運算碼)904和資料906。在某些命令中還包括子運算碼905和命令大小908。
在一些實施例中,客戶端(client)902指定處理命令資料的圖形裝置的客戶端單元。在一些實施例中,圖形處理器命令解析器(parser)檢查每個命令的客戶端欄位,以調節該命令的進一步處理並將命令資料路由到適當的客戶端單元。在一些實施例中,圖形處理器客戶端單元包括記憶體介面單元,渲染單元,2D單元,3D單元和媒體單元。每個客戶端單元具有處理命令的相應處理管線。一旦由客戶端單元接收到該命令,則客戶端單元讀取運算碼904,且如果存在,子運算碼905決定要執行的操作。客戶端單元使用資料欄位906中的資訊來執行命令。對於一 些命令,期望明確的命令大小908來指定命令的大小。在一些實施例中,命令解析器基於命令運算碼自動決定至少一些命令的大小。在一些實施例中,命令是通過雙字(double word)的倍數對齊的。可以使用其他命令格式。
圖9B中的流程圖示出示例性圖形處理器命令序列910。在一些實施例中,以圖形處理器的實施例為特徵的資料處理系統的軟體或韌體使用所示以建立,執行並終止一組圖形操作的命令序列的版本。僅出於示例的目的而示出和描述示例命令序列,因為實施例不限於這些特定命令或該命令序列。此外,命令可以作為命令序列中的一批命令發布,使得圖形處理器將至少部分地並發地處理命令序列。
在一些實施例中,圖形處理器命令序列910可以以管線刷新命令912開始,以使任何活動的圖形管線完成用於管線的當前待決(pending)命令。在一些實施例中,3D管線922和媒體管線924不同時操作。執行管線刷新以使活動圖形管線完成任何待決命令。回應管線刷新,用於圖形處理器的命令解析器將暫停命令處理,直到活動的繪圖引擎完成待決的操作且相關的讀取快取記憶體無效為止。可選地,可以將渲染快取記憶體中標記為“髒”的任何資料刷新到記憶體。在一些實施例中,管線刷新命令912可用於管線同步或在將圖形處理器置於低功率狀態之前。
在一些實施例中,當命令序列需要圖形處理器在管線之間顯式切換時,使用管線選擇命令913。在一 些實施例中,在發布管線命令之前,在執行上下文內僅需要管線選擇命令913一次,除非上下文要為兩個管線發布命令。在一些實施例中,緊接在經由管線選擇命令913進行管線切換之前需要管線刷新命令912。
在一些實施例中,管線控制命令914配置用於操作的圖形管線,並用於對3D管線922和媒體管線924進行程式化。在一些實施例中,管線控制命令914為活動管線配置管線狀態。在一實施例中,管線控制命令914用於管線同步並在處理一批命令之前從活動管線內的一或複數個快取記憶體中清除資料。
在一些實施例中,返回緩衝器狀態命令916用於為相應的管線配置一組返回緩衝器以寫入資料。一些管線操作需要分配,選擇或配置一或複數個返回緩衝區,在處理過程中操作會將中間資料寫入該緩衝區中。在一些實施例中,圖形處理器還使用一或複數個返回緩衝器來儲存輸出資料並執行跨線程通信。在一些實施例中,返回緩衝器狀態916包括選擇用於一組管線操作的返回緩衝器的大小和數量。
命令序列中的其餘命令基於用於操作的活動管線而不同。基於管線決定920,從3D管線狀態930開始或在媒體管線狀態940開始的媒體管線924,調節命令序列至3D管線922。
用於配置3D管線狀態930的命令包括用於頂點緩衝區狀態,頂點元件狀態,恆定顏色狀態,深度緩衝 區狀態以及要在處理3D圖元命令之前配置的其他狀態變量的3D狀態設置命令。這些命令的值至少部分地基於使用中的特定3D API以決定。在一些實施例中,如果將不使用某些管線元件,則3D管線狀態930命令也能夠選擇性地禁用或繞過某些管線元件。
在一些實施例中,3D圖元932命令用於由3D管線處理以提交3D圖元。通過3D圖元932命令傳遞到圖形處理器的命令和相關參數將轉發到圖形管線中的頂點獲取功能。頂點獲取功能使用3D圖元932命令資料來產生頂點資料結構。頂點資料結構儲存在一或複數個返回緩衝區中。在一些實施例中,3D圖元932命令用於經由頂點著色器對3D圖元執行頂點操作。為處理頂點著色器,3D管線922將著色器執行線程分配給圖形處理器執行單元。
在一些實施例中,經由執行934命令或事件來觸發3D管線922。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,通過命令序列中的“執行(go)”或“踢(kick)”命令來觸發執行。在一實施例中,使用管線同步命令以觸發命令執行以刷新命令序列通過圖形管線。3D管線將對3D圖元執行幾何處理。一旦操作完成,就對產生的幾何物件進行光柵化,且像素引擎為產生的像素著色。對於那些操作,還可以包括用於控制像素暈渲和像素後端操作的附加命令。
在一些實施例中,當執行媒體操作時,圖形處理器命令序列910遵循媒體管線924路徑。通常,用於媒 體管線924的程式化的特定用途和方式取決於要執行的媒體或計算操作。在媒體解碼期間,可以將特定的媒體解碼操作卸載到媒體管線。在一些實施例中,還可以繞過媒體管線,且可以使用由一或複數個通用處理核提供的資源來全部或部分地執行媒體解碼。在一實施例中,媒體管線還包括用於通用圖形處理器單元(GPGPU)操作的元件,其中圖形處理器用於使用計算著色器程式執行SIMD向量操作,所述計算著色器程式與圖形圖元的渲染沒有明確的關係。
在一些實施例中,以與3D管線922類似的方式配置媒體管線924。在媒體物件命令942之前,將用於配置媒體管線狀態940的一組命令調度或放置到命令佇列(queue)中。在一些實施例中,用於媒體管線狀態940的命令包括用於配置將用於處理媒體物件的媒體管線元件的資料。這包括在媒體管線中配置視訊解碼和視訊編碼邏輯的資料,例如編碼或解碼格式。在一些實施例中,用於媒體管線狀態940的命令還支援對包括一批狀態設定的“間接”狀態元件的一或複數個指標的使用。
在一些實施例中,媒體物件命令942提供指標至媒體物件以由媒體管線進行處理。媒體物件包括要處理的視訊資料的記憶體緩衝區。在一些實施例中,在發布媒體物件命令942之前,所有媒體管線狀態必須是有效的。一旦配置管線狀態且將媒體物件命令942佇列(queue),則通過執行命令944或等效的執行事件來觸發媒 體管線924(例如,暫存器寫入)。然後,可以通過3D管線922或媒體管線924提供的操作對來自媒體管線924的輸出進行後處理。在一些實施例中,以與媒體操作類似的方式配置和執行GPGPU操作。
圖形軟體架構
圖10示出根據一些實施例的用於資料處理系統1000的示例性圖形軟體架構。在一些實施例中,軟體架構包括3D圖形應用程式1010,作業系統1020和至少一個處理器1030。在一些實施例中,處理器1030包括圖形處理器1032和一或複數個通用處理器核1034。圖形應用程式1010和作業系統1020各自在資料處理系統的系統記憶體1050中執行。
在一些實施例中,3D圖形應用程式1010包括一或複數個著色器程式,其包括著色器指令1012。著色器語言指令可以是高階(high-level)著色器語言,例如Direct3D的高階著色器語言(HLSL),OpenGL Shader Language(GLSL),等等。該應用程式還包括適合於由通用處理器核1034執行的機器語言的可執行指令1014。該應用程式還包括由頂點資料定義的圖形物件1016。
在一些實施例中,作業系統1020是來自Microsoft Corporation的Microsoft®Windows®作業系統,專有的類UNIX作業系統或使用Linux內核(kernel)的變體的開源類UNIX作業系統。作業系統1020可以支援圖形API 1022,例如Direct3D API,OpenGL API或Vulkan API。當使用Direct3D API時,作業系統1020使用前端著色器編譯器1024將HLSL中的任何著色器指令1012編譯為較低階的著色器語言。編譯可以是即時(just-in-time,JIT)編譯,也可以是可以執行著色器預編譯的應用程式。在一些實施例中,在3D圖形應用程式1010的編譯期間將高階著色器編譯成低階著色器。在一些實施例中,以中間形式(例如由Vulkan API使用標準可攜式中間表示(SPIR)的版本)提供著色器指令1012。
在一些實施例中,使用者模式圖形驅動器1026包括後端著色器編譯器1027,以將著色器指令1012轉換為硬體專用表示。當使用OpenGL API時,會將GLSL高階語言的著色器指令1012傳遞給使用者模式圖形驅動器1026進行編譯。在一些實施例中,使用者模式圖形驅動器1026使用作業系統內核模式功能1028與內核模式圖形驅動器1029通信。在一些實施例中,內核模式圖形驅動器1029與圖形處理器1032通信以調度命令和指令。
IP核實現
至少一實施例的一或複數個態樣可以通過儲存在機器可讀媒體上的代表碼來實現,該代表碼表示及/或定義諸如處理器之類的積體電路內的邏輯。例如,機器可讀媒體可以包括代表處理器內的各種邏輯的指令。當由機器讀取時,指令可以使機器製造邏輯以執行本文描述的 技術。這樣的表示稱為“IP核(IP core)”,是積體電路的邏輯的可重用單元(reusable unit),可以作為描述積體電路結構的硬體模型儲存在實體的(tangible)機器可讀媒體中。可以將硬體模型提供給各種客戶或製造設施,其將硬體模型加載到製造積體電路的製造機器上。可以製造積體電路,使得該電路執行結合本文描述的任何實施例描述的操作。
圖11A是示出根據一實施例的可用於製造積體電路以執行操作的IP核開發系統1100的方塊圖。IP核開發系統1100可以用於產生模組化的,可重用的設計,其可以被併入更大的設計中或者用於構建整個積體電路(例如,SOC積體電路)。設計設施1130可以以高階程式化語言(例如,C/C++)產生IP核設計的軟體模擬1110。軟體模擬1110可以用於使用模擬模型1112來設計,測試和驗證IP核的行為。模擬模型1112可以包括功能,行為及/或時序模擬。然後可以從模擬模型1112建立或合成(synthesize)暫存器傳輸級(RTL)設計1115。RTL設計1115是積體電路的行為的萃取(abstraction),其對硬體暫存器之間的數字信號串流建模,包括使用建模的數字信號執行相關聯的邏輯。除了RTL設計1115之外,還可以建立,設計或合成邏輯級(logic level)或電晶體級的較低階設計。因此,初始設計和模擬的特定細節可能會有所不同。
RTL設計1115或等效物可以由設計設施進一步合成為硬體模型1120,其可以是硬體描述語言(HDL)或實體設計資料的某種其他表示。可以進一步模擬或測試 HDL以驗證IP核設計。可以使用非揮發性記憶體1140(例如,硬碟,快閃記憶體或任何非揮發性儲存媒體)來儲存IP核設計,以傳遞給第三方製造設施1165。可替代地,可以通過有線連接1150或無線連接1160(例如,經由網際網路)來發送IP核設計。然後,製造設施1165可以製造至少部分基於IP核設計的積體電路。可以將製造的積體電路配置為執行根據本文所述的至少一實施例的操作。
圖11B示出根據本文所述的一些實施例的積體電路封裝組件1170的剖面側視圖。積體電路封裝組件1170示出如本文所述的一或複數個處理器或加速器裝置的實施方式。封裝組件1170包括連接到基板1180的硬體邏輯1172、1174的複數個單元。邏輯1172、1174可以至少部分地以可配置邏輯或固定功能邏輯硬體來實現,且可以包括處理器核,圖形處理器或此處描述的其他加速器裝置任何一個的一或複數個部分。邏輯1172、1174的每個單元可以被實現在半導體晶粒內且經由互連結構1173與基板1180耦接。互連結構1173可以被配置為在邏輯1172、1174和基板1180之間路由電信號,且可以包括互連,例如但不限於凸塊(bump)或立柱(pillar)。在一些實施例中,互連結構1173可以被配置為路由電信號,諸如與邏輯1172、1174的操作相關聯的輸入/輸出(I/O)信號及/或電源或接地信號。在一實施例中,基板1180是基於環氧樹脂(epoxy-based)的層壓(laminate)基板。在其他實施例中,基板1180可以包括其他合適類型的基板。封裝組件1170可以經由封裝互連1183 連接到其他電子裝置。封裝互連1183可以耦接到基板1180的表面,以將電信號路由到其他電子裝置,例如母板,其他晶片組或多晶片模組。
在一些實施例中,邏輯1172、1174單元與橋部(bridge)1182電耦接,橋部1182被配置為在邏輯1172、1174之間路由電信號。橋部1182可以是密集的互連結構,其提供電信號路由。橋部1182可以包括由玻璃或合適的半導體材料組成的橋部基板。可以在橋接基板上形成電路由特徵,以在邏輯1172、1174之間提供晶片對晶片的連接。
儘管示出邏輯1172,1174和橋部1182的兩個單元,但是本文描述的實施例可以在一或複數個晶粒上包括更多或更少的邏輯單元。一或複數個管晶粒可以通過零個或複數個橋部連接,因為當邏輯被包括在單個晶粒中時,可以不包括橋部1182。或者,可以通過一或複數個橋部來連接複數個晶粒或邏輯單元。另外,複數個邏輯單元,晶粒和橋部可以以其他可能的配置(包括三維配置)連接在一起。
圖11C示出封裝組件1190,該封裝組件1190包括連接到基板1180(例如,基礎晶粒)的複數個硬體邏輯小晶片(chiplet)。如本文所述的圖形處理單元,平行處理器及/或計算加速器可以由分別製造的各種(diverse)矽小晶片組成。在本文中,小晶片是至少部分封裝的積體電路,其包括可以與其他小晶片組裝成較大封裝的邏輯的不同單元。可以將具有不同IP核邏輯的各種小晶片組合到單個裝 置中。另外,可以使用主動中介層(active interposer)技術將小晶片整合到基本晶片或基本小晶片中。本文描述的概念使得能夠在GPU內的不同形式的IP之間進行互連和通信。IP核可以使用不同的製程技術進行製造,且可以在製造過程中進行組合,從而避免將複數個IP(尤其是在具有複數個IP的大型SoC上)整合到同一製造過程的複雜性。啟用多種製程技術的使用可以縮短上市時間,並提供一種經濟高效的方式來建立複數個產品SKU。此外,分解(disaggregate)的IP更適合獨立供電,可以關閉給定工作負載中未使用的組件的電源,從而降低總體功耗。
硬體邏輯小晶片可以包括專用硬體邏輯小晶片1172,邏輯或I/O小晶片1174及/或記憶體小晶片1175。硬體邏輯小晶片1172和邏輯或I/O小晶片1174可以至少部分地以可配置邏輯或固定功能邏輯硬體來實現,且可以包括處理器核,圖形處理器,平行處理器或本文所述的其他加速器裝置中的任何一個的一或複數個部分。記憶體小晶片1175可以是DRAM(例如,GDDR,HBM)記憶體或快取記憶體(SRAM)記憶體。
每個小晶片可以被製造為單獨的半導體晶粒且經由互連結構1173與基板1180耦接。互連結構1173可以被配置為在各種小晶片和基板1180內的邏輯之間路由電信號。互連結構1173可以包括諸如但不限於凸塊或立柱的互連。在一些實施例中,互連結構1173可以被配置為路由電信號,諸如與邏輯,I/O和記憶體小晶片的操作相關聯的 輸入/輸出(I/O)信號及/或電源或接地信號。
在一些實施例中,基板1180是基於環氧樹脂的層壓基板。在其他實施例中,基板1180可以包括其他合適類型的基板。封裝組件1190可以經由封裝互連1183連接到其他電子裝置。封裝互連1183可以耦接到基板1180的表面,以將電信號路由到其他電子裝置,例如母板,其他晶片組或多晶片模組。
在一些實施例中,邏輯或I/O小晶片1174和記憶體小晶片1175可以經由橋部1187電耦接,該橋部1187被配置為在邏輯或I/O小晶片1174與記憶體小晶片1175之間路由電信號。橋部1187可以是為電信號提供路徑的密集互連結構。橋部1187可以包括由玻璃或合適的半導體材料組成的橋部基板。可以在橋部基板上形成電佈線特徵,以在邏輯或I/O小晶片1174和記憶體小晶片1175之間提供晶片對晶片的連接。橋部1187也可以稱為矽橋部或互連橋部。例如,在一些實施例中,橋部1187是嵌入式多晶粒互連橋部(EMIB)。在一些實施例中,橋部1187可以簡單地是從一個小晶片到另一小晶片的直接連接。
基板1180可以包括用於I/O 1191,快取記憶體1192和其他硬體邏輯1193的硬體組件。可以將結構1185嵌入到基板1180中,以實現在基板1180內各種邏輯小晶片與邏輯1191、1193之間的通信。在一實施例中,可以將I/O 1191,結構1185,快取記憶體,橋部和其他硬體邏輯1193整合到層疊在基板1180頂部的基礎晶片中。
在各種實施例中,封裝組件1190可以包括通過結構1185或一或複數個橋部1187互連的更少或更多數量的組件和小晶片。封裝組件1190中的小晶片可以3D或2.5D配置進行配置。一般而言,橋部結構1187可用於促進例如邏輯或I/O小晶片與記憶體小晶片之間的點對點互連。結構1185可以用於互連各種邏輯及/或I/O小晶片(例如,小晶片1172、1174、1191、1193)。與其他邏輯及/或I/O小晶片。在一實施例中,基板內的快取記憶體1192可以用作封裝組件1190的全局快取記憶體,分散式全局快取記憶體的一部分,或者用作結構1185的專用快取記憶體。
圖11D示出根據一實施例的包括可互換小晶片1195的封裝組件1194。可互換小晶片1195可被組裝到一或複數個基本小晶片1196、1198上的標準化插槽(slot)中。基本小晶片1196、1198可以經由橋接器互連1197耦接,該橋接器互連1197可以類似於本文所述的其他橋接器互連,且可以是例如EMIB。記憶體小晶片也可以通過橋接互連連接到邏輯或I/O小晶片。I/O和邏輯小晶片可以通過互連結構進行通信。基本小晶片可各自以標準化格式支援一或複數個插槽,用於邏輯或I/O或記憶體/快取記憶體之一。
在一實施例中,可以將SRAM和功率傳送電路製造成一或複數個基本小晶片1196、1198,其可以使用相對於堆疊在基本小晶片頂部的可互換小晶片1195不同的製程技術來製造。例如,可以使用較大的製程技術來製造 基本小晶片1196、1198,而可以使用較小的製程技術來製造可互換的小晶片。一或複數個可互換的小晶片1195可以是記憶體(例如,DRAM)小晶片。可以基於針對使用封裝組件1194的產品的功率及/或性能為封裝組件1194選擇不同的記憶體密度。此外,可以在組裝時根據產品的目標功率及/或性能來選擇具有不同數量功能單元類型的邏輯小晶片。此外,可以將包括不同類型IP邏輯核的小晶片插入可互換的小晶片插槽中,從而實現可以混合和匹配不同技術IP方塊的混合處理器設計。
晶片積體電路上的示例性系統
圖12-13示出根據本文所述的各種實施例的示例性積體電路和相關聯的圖形處理器,其可以使用一或複數個IP核來製造。除圖示之外,還可以包括其他邏輯和電路,包括附加的圖形處理器/核,外圍介面控制器或通用處理器核。
圖12是示出根據一實施例的可以使用一或複數個IP核製造的晶片積體電路1200上的示例性系統的方塊圖。示例性積體電路1200包括一或複數個應用處理器1205(例如,CPU),至少一個圖形處理器1210,且可以另外包括影像處理器1215及/或視訊處理器1220,其中的任何一個可以是來自相同或複數個不同設計設施的模組化IP核。積體電路1200包括外圍或匯流排邏輯,該外圍或匯流排邏輯包括USB控制器1225,UART控制器1230, SPI/SDIO控制器1235和I2S/I2C控制器1240。另外,積體電路可以包括顯示裝置1245,其耦接至一或複數個的高解析度多媒體介面(HDMI)控制器1250和行動工業處理器介面(MIPI)顯示介面1255。可以由包括快閃記憶體和快閃記憶體控制器的快閃記憶體子系統1260提供儲存。可以經由記憶體控制器1265提供記憶體介面以用於存取SDRAM或SRAM記憶體裝置。一些積體電路還包括嵌入式安全引擎1270。
圖13A-13B是根據本文所述實施例說明在SoC中使用的示例性圖形處理器的方塊圖。圖13A示出根據一實施例的系統單晶片積體電路的示例性圖形處理器1310,其可以使用一或複數個IP核來製造。圖13B示出根據一實施例的晶片積體電路上的系統的另外的示例性圖形處理器1340,其可以使用一或複數個IP核來製造。圖13A的圖形處理器1310是低功率圖形處理器核的示例。圖13B的圖形處理器1340是更高性能圖形處理器核的示例。每個圖形處理器1310、1340可以是圖12的圖形處理器1210的變體。
如圖13A所示,圖形處理器1310包括頂點處理器1305和一或複數個片段處理器1315A-1315N(例如1315A,1315B,1315C,1315D到1315N-1和1315N)。圖形處理器1310可以經由單獨的邏輯來執行不同的著色器程式,使得頂點處理器1305被最佳化以執行針對頂點著色器程式的操作,而一或複數個片段(fragment)處理器1315A- 1315N執行用於片段或像素著色器程式的片段(例如,像素)著色操作。頂點處理器1305執行3D圖形管線的頂點處理階段,並產生圖元和頂點資料。片段處理器1315A-1315N使用由頂點處理器1305產生的圖元和頂點資料來產生在顯示裝置上顯示的幀緩衝器。在一實施例中,片段處理器1315A-1315N被最佳化以執行如在OpenGL API中提供的片段著色器程式,該片段著色器程式可以被用來執行與在Direct 3D API中提供的像素著色器程式類似的操作。
圖形處理器1310另外包括一或複數個記憶體管理單元(MMU)1320A-1320B,快取記憶體1325A-1325B和電路互連1330A-1330B。一或複數個MMU 1320A-1320B提供用於圖形處理器1310的虛擬到實體位址的映射,包括用於頂點處理器1305及/或片段處理器1315A-1315N,其可以引用除儲存在一或複數個快取記憶體1325A-1325B中的頂點或影像/紋理資料之外,儲存在記憶體中的頂點或影像/紋理資料。在一實施例中,一或複數個MMU 1320A-1320B可以與系統內的其他MMU同步,包括與圖12的一或複數個應用處理器1205,影像處理器1215及/或視訊處理器1220相關聯的一或複數個MMU,使得每個處理器1205-1220可以參與共享或統一的虛擬記憶體系統。根據實施例,一或複數個電路互連1330A-1330B使圖形處理器1310能夠經由SoC的內部匯流排或經由直接連接而與SoC內的其他IP核介接(interface)。
如圖13B所示,圖形處理器1340包括圖13A 的圖形處理器1310的一或複數個MMU 1320A-1320B,快取記憶體1325A-1325B和電路互連1330A-1330B。圖形處理器1340包括一或複數個著色器核1355A-1355N(例如,1355A,1355B,1355C,1355D,1355E,1355F,到1355N-1和1355N),其提供統一的著色器核架構,其中單核或類型或核可以執行所有類型的可程式著色器碼,包括用於實現頂點著色器,片段著色器及/或計算著色器的著色器程式碼。存在的著色器核的確切數量可以在實施例和實施方式之間變化。另外,圖形處理器1340包括核間任務管理器1345,其充當線程分配器以將執行線程分配給一或複數個著色器核1355A-1355N,以及圖塊單元1358以加速用於基於圖塊的渲染的圖塊操作,其中在影像空間中細分場景的渲染操作,例如,以利用場景內的局部空間一致性或最佳化內部快取記憶體的使用。
機器學習概述
機器學習演算法是可以基於一組資料進行學習的演算法。機器學習演算法的實施例可以被設計為對資料集中的高階萃取建模。例如,影像識別演算法可用於決定給定輸入所屬的幾個類別中的哪一個;回歸算法可以在給定輸入的情況下輸出數值;模式識別演算法可用於產生翻譯的文字或執行文字到語音及/或語音識別。
機器學習演算法的示例性類型是神經網路。神經網路的類型很多;神經網路的一種簡單類型是前饋網 路。前饋網路可以實現為非循環圖,其中節點按層排列。典型地,前饋網路拓撲包括由至少一隱藏層隔開的輸入層和輸出層。隱藏層將輸入層接收的輸入轉換為表示形式,該表示形式可用於在輸出層中產生輸出。網路節點通過邊緣完全連接到相鄰層中的節點,但是每一層中的節點之間沒有邊緣。在前饋網路的輸入層的節點處接收的資料通過啟用函數傳播(即“前饋”)到輸出層的節點,該函數根據以下資訊計算網路中每個連續層的節點的狀態:分別與連接層的每個邊緣相關聯的係數(“權重”)。取決於正在執行的演算法所代表的特定模型,神經網路演算法的輸出可以採用各種形式。
在機器學習演算法可用於對特定問題建模之前,使用訓練資料集對演算法進行訓練。訓練神經網路包括選擇一網路拓撲,使用代表網路正在建模的問題的一組訓練資料,並調整權重,直到網路模型對訓練資料集的所有實例執行最小誤差。例如,在神經網路的監督學習訓練過程中,將網路回應輸入表示訓練資料集中的一實例而產生的輸出與該實例的“正確”標記輸出進行比較,錯誤信號表示計算輸出與標記的輸出之間的差,並調整與連接關聯的權重,以在錯誤信號反向傳播通過網路各層時將錯誤最小化。當從訓練資料集的實例產生的每個輸出的誤差最小時,網路就被認為是“訓練過”。
機器學習演算法的準確性會受到用於訓練演算法的資料集品質的顯著影響。訓練過程可能是計算密集 型的,且在傳統的通用處理器上可能需要大量的時間。因此,平行處理硬體用於訓練許多類型的機器學習演算法。這對於最佳化神經網路的訓練特別有用,因為在調整神經網路的係數時執行的計算很自然地適合於平行實現。具體而言,許多機器學習演算法和軟體應用程式已被適配為利用通用圖形處理裝置中的平行處理硬體。
圖14是機器學習軟體堆疊1400的概括圖。機器學習應用程式1402可配置為使用訓練資料集訓練神經網路,或使用訓練的深度神經網路來實現機器智慧。機器學習應用程式1402可以包括用於神經網路的訓練和推理功能及/或專用軟體,可在部署之前用於訓練神經網路。機器學習應用程式1402可以實現任何類型的機器智慧型,包括但不限於影像識別,映射和定位,自主導航,語音合成,醫學成像或語言轉譯。
可以經由機器學習框架1404啟用機器學習應用程式1402的硬體加速。機器學習框架1404可以提供機器學習圖元的資料庫。機器學習圖元是機器學習演算法通常執行的基本操作。如果沒有機器學習框架1404,則將需要機器學習演算法的開發入員建立和最佳化與機器學習演算法關聯的主要計算邏輯,然後在開發新的平行處理器時重新最佳化計算邏輯。取而代之,機器學習應用程式可以配置為使用由機器學習框架1404提供的圖元執行必要的計算。示例性圖元包括張量卷積,啟用函數和池化,其是在訓練卷積神經網路(CNN)時執行的計算操作。機器學習框 架1404還可以提供圖元以實現由許多機器學習演算法(例如矩陣和向量運算)執行的基本線性代數子程式。
機器學習框架1404可以處理從機器學習應用程式1402接收到的輸入資料,且向計算框架1406產生適當的輸入。計算框架1406可以對提供給GPGPU驅動器1408的底層指令進行萃取以使得能夠進行機器學習框架1404利用經由GPGPU硬體1410的硬體加速而無需機器學習框架1404具有GPGPU硬體1410的深入了解。另外,計算框架1406可以跨各種類型和各代的GPGPU硬體1410為機器學習框架1404啟用硬體加速。
機器學習神經網路實現
本文描述的實施例提供的計算架構可以被配置為執行特別適合於訓練和部署用於機器學習的神經網路的平行處理類型。神經網路可以概括為具有圖關係的功能網路。如本領域中已知的,在機器學習中使用多種類型的神經網路實現。如前所述,神經網路的一種示例性類型是前饋網路。
神經網路的第二示例性類型是卷積神經網路(CNN)。CNN是一種專門的前饋神經網路,用於處理具有已知網格狀拓撲的資料,例如影像資料。因此,CNN通常用於計算視覺和影像識別應用程式,但是其也可以用於其他類型的模式識別,例如語音和語言處理。CNN輸入層中的節點被組織為一組“過濾器”(受網膜中接受域啟發的特 徵檢測器),每組過濾器的輸出將傳播到網路連續層中的節點。CNN的計算包括將卷積數學運算應用於每個濾波器以產生該濾波器的輸出。卷積是一種特殊的數學運算,由兩個函數執行以產生第三個函數,這是兩個原始函數之一的修改版本。在卷積網路用語中,卷積的第一功能可以稱為輸入,而第二個功能可以稱為卷積內核。該輸出可以被稱為特徵圖。例如,卷積層的輸入可以是定義輸入影像的各種顏色分量的多維數組資料。卷積內核可以是參數的多維數組,其中參數通過神經網路的訓練過程進行調整。
遞迴神經網路(RNN)是前饋神經網路的一族,其包括層之間的回饋連接。RNN通過在神經網路的不同部分之間共享參數資料來啟用順序資料的建模。RNN的架構包括週期。週期表示將來某個時間變量的當前值對其自身值的影響,因為來自RNN的輸出資料的至少一部分用作回饋,用於處理序列中的後續輸入。由於可以組成語言資料的可變性,此特徵使RNN對語言處理特別有用。
下面描述的附圖呈現示例性前饋,CNN和RNN網路,且描述分別訓練和部署那些類型的網路中的每一種的一般過程。將理解的是,這些描述對於本文描述的任何特定實施例是示例性的且非限制性的,且所示出的概念通常可以總體上應用於深度神經網路和機器學習技術。
上述示例性神經網路可用於執行深度學習。深度學習是使用深度神經網路的機器學習。深度學習中使用的深度神經網路是由複數個隱藏層組成的人工神經網 路,與僅包括單個隱藏層的淺層神經網路相反。更深層的神經網路通常需要更多的計算量來訓練。但是,網路的其他隱藏層可以實現多步模式識別,相對於淺層機器學習技術,這可以減少輸出錯誤。
深度學習中使用的深度神經網路通常包括執行與後端網路耦接的特徵識別的前端網路,後端網路表示可以基於提供給模型的特徵表示執行操作的數學模型(例如,物件分類,語音識別等)。深度學習使機器學習得以執行,而無需為模型執行手工製作的特徵工程。相反,深度神經網路可以基於輸入資料中的統計結構或相關性來學習特徵。可以將學習到的特徵提供給數學模型,該數學模型可以將檢測到的特徵映射到輸出。網路使用的數學模型通常專用於要執行的特定任務,且將使用不同的模型來執行不同的任務。
一旦神經網路被構造,就可以將學習模型應用於網路以訓練網路執行特定任務。學習模型描述如何在模型中調整權重以減少網路的輸出誤差。錯誤的後向傳播是用於訓練神經網路的常用方法。輸入向量被呈現給網路以進行處理。使用損失函數將網路的輸出與所需的輸出進行比較,並為輸出層中的每個神經元計算誤差值。然後將誤差值向後傳播,直到每個神經元都有一關聯的誤差值,該誤差值大致代表其對原始輸出的貢獻。然後,網路可以使用演算法(例如隨機梯度下降演算法)從這些錯誤中學習,以更新神經網路的權重。
圖15A-15B示出示例性卷積神經網路。圖15A圖示CNN中的各個層。如圖15A所示,用於對影像處理進行建模的示例性CNN可以接收描述輸入影像的紅色,綠色和藍色(RGB)分量的輸入1502。輸入1502可以由複數個卷積層(例如,第一卷積層1504,第二卷積層1506)處理。來自複數個卷積層的輸出可以可選地由一組完全連接的層1508處理。完全連接的層中的神經元具有到前一層中所有啟用的完全連接,如先前針對前饋網路所述。來自完全連接的層1508的輸出可以用於產生來自網路的輸出結果。可以使用矩陣乘法而不是卷積來計算完全連接的層1508內的啟用。並非所有的CNN實現都使用完全連接的層1508。例如,在一些實現中,第二卷積層1506可以為CNN產生輸出。
卷積層是稀疏連接的,這與在完全連接的層1508中發現的傳統神經網路配置不同。傳統的神經網路層是完全連接的,因此每個輸出單元與每個輸入單元互動。然而,如圖所示,卷積層是稀疏連接的,因為一欄位的卷積的輸出(而不是該欄位中每個節點的相應狀態值)被輸入到下一層的節點。與卷積層關聯的內核執行卷積運算,其輸出被發送到下一層。在卷積層內執行的降維是使CNN能夠縮放以處理大影像的一態樣。
圖15B示出CNN的卷積層內的示例性計算級。可以在卷積層1514的三級中處理對CNN的卷積層1512的輸入。這三級可以包括卷積級1516,檢測器級1518和池 化級1520。然後,卷積層1514可以輸出資料到連續的卷積層。網路的最終卷積層可以產生輸出特徵圖資料或將輸入提供給完全連接的層,例如,以產生用於CNN輸入的分類值。
在卷積級1516中平行執行幾個卷積以產生一組線性啟用。卷積級1516可以包括仿射變換,其是可以被指定為線性變換加上平移的任何變換。仿射變換包括旋轉,平移,縮放以及這些變換的組合。卷積級計算連接到輸入中特定區域的功能(例如神經元)的輸出,可以將其決定為與神經元關聯的局部區域。神經元計算神經元的權重與神經元所連接的局部輸入區域之間的點積。卷積級1516的輸出定義一組線性啟用,這些線性啟用由卷積層1514的連續級處理。
線性啟用可以由檢測器級1518處理。在檢測器級1518中,每個線性啟用由非線性啟用函數處理。非線性啟用函數可增加整個網路的非線性特性,而不會影響卷積層的接收場。可以使用幾種類型的非線性啟用函數。一種特定類型是整流線性單元(ReLU),它使用定義為f(x)=max(0,x)的啟用函數,因此啟用閾值設為零。
池化級1520使用池化功能,該池化功能將第二卷積層1506的輸出替換為附近輸出的摘要統計量。池化功能可用於將平移不變性引入神經網路,以使輸入的小平移不會更改池化的輸出。在輸入資料中某個特徵的存在比該特徵的精確位置更為重要的情況下,本地轉換的不變性 可能很有用。在池化級1520期間可以使用各種類型的池化功能,包括最大池化,平均池化和12-範數(norm)池化。此外,一些CNN實施不包括池化級。取而代之的是,這樣的實現替代相對於先前的卷積級具有更大步幅的附加卷積級。
然後可以由下一層1522處理來自卷積層1514的輸出。下一層1522可以是附加的卷積層或完全連接的層1508中之一。例如,圖15A的第一卷積層1504可以輸出到第二卷積層1506,而第二卷積層可以輸出到完全連接的層1508的第一層。
圖16示出示例性遞迴神經網路。在遞迴神經網路(RNN)中,網路的先前狀態會影響網路當前狀態的輸出。可以使用各種功能以多種方式構建RNN。RNN的使用通常基於先前的輸入序列圍繞使用數學模型來預測未來。例如,RNN可以用於執行統計語言建模以在給定單詞的先前序列的情況下預測即將到來的單詞。所說明的RNN 1600可描述為具有:輸入層1602,其接收輸入向量;隱藏層1604,以實現遞歸功能;回饋機制1605,其使能先前狀態的“記憶體”;以及輸出層1606,其輸出結果。RNN 1600基於時間步長進行操作。在給定時間步長的RNN狀態會通過回饋機制1605基於前一時間步長受到影響。對於給定時間步長,隱藏層1604的狀態由前一狀態和當前時間步驟的輸入定義。可以由隱藏層1604處理在第一時間步驟的初始輸入(x1)。可以由隱藏層1604使用在初始輸入(x1)的處理 期間決定的狀態資訊來處理第二輸入(x2)。可以將給定狀態計算為s t =f(Ux t +Ws t-1),其中UW是參數矩陣。該函數f通常是非線性的,例如雙曲正切函數(Tanh)或整流器函數f(x)=max(0,x)的變體。然而,在隱藏層1604中使用的特定數學函數可以根據RNN 1600的特定實現細節而變化。
除所描述的基本CNN和RNN網路之外,還可以啟用這些網路上的變體。RNN變體的一示例是長短期記憶(LSTM)RNN。LSTM RNN能夠學習長期依賴關係,這對於處理更長的語言序列可能是必需的。CNN的一種變體是卷積深度信念網路,其結構類似於CNN,並以類似於深度信念網路的方式進行訓練。深度信念網路(DBN)是一種產生神經網路,由多層隨機的(隨機)變量組成。可以使用貪婪無監督學習逐層訓練DBN。然後,可以通過決定神經網路的最佳初始權重集合,將學習到的DBN權重用於提供預訓練神經網路。
圖17示出深度神經網路的訓練和部署。一旦已經針對任務構造給定的網路,則使用訓練資料集1702來訓練神經網路。已經開發各種訓練框架以實現訓練過程的硬體加速。例如,圖14的機器學習框架1404可以被配置為訓練框架1704。訓練框架1704可以掛接到未訓練的神經網路1706中,且使得能夠使用本文所述的平行處理資源來訓練未訓練的神經網路以產生訓練的神經網路1708。為開始訓練過程,可以隨機選擇初始權重,也可以使用深度信念 網路通過預訓練來選擇初始權重。然後以有監督或無監督的方式執行訓練週期。
監督學習是一種訓練方法,其中訓練作為一種中介操作來執行,例如當訓練資料集1702包括與輸入的期望輸出配對的輸入時,或者當訓練資料集包括具有已知輸出的輸入和神經網路的輸出進行人工分級。網路處理輸入,並將結果輸出與一組預期或期望的輸出進行比較。錯誤然後通過系統傳播回去。訓練框架1704可以調整以調整控制未訓練的神經網路1706的權重。訓練框架1704可以提供工具以監視未訓練的神經網路1706基於已知輸入資料向適於產生正確答案的模型收斂的程度。調整網路的權重以細化由神經網路產生的輸出時,訓練過程會反復發生。訓練過程可以繼續進行,直到神經網路達到與訓練的神經網路1708相關的統計上所需的精度為止。然後可以部署訓練的神經網路1708,以實施任意數量的機器學習操作,以基於新資料1712的輸入來產生推斷結果1714。
無監督學習是一種學習方法,其中網路嘗試使用未標記的資料來訓練自己。因此,對於無監督學習,訓練資料集1702將包括輸入資料而沒有任何相關聯的輸出資料。未訓練的神經網路1706可以學習未標記輸入內的分組,且可以決定各個輸入如何與整個資料集相關。可以使用無監督訓練來產生自組織圖,該自組織圖是訓練的神經網路1708的一種,其能夠執行對減少資料的維數有用的操作。無監督訓練也可以用於執行異常檢測,這可以識別輸 入資料集中偏離資料正常模式的資料點。
也可以採用有監督和無監督訓練的變型。半監督學習是一種技術,其中訓練資料集1702中包括具有相同分佈的標記資料和未標記資料的混合。增量學習是監督學習的一種變體,其中連續使用輸入資料來進一步訓練模型。增量學習使受過訓練的神經網路1708可以適應新資料1712,而不會忘記在初始訓練過程中註入網路中的知識。
無論是有監督的或無監督的,對於單個計算節點,用於特別的深度神經網路的訓練過程可能在計算上過於密集。代替使用單個計算節點,可以使用計算節點的分散式網路來加速訓練過程。
圖18是示出分散式學習的方塊圖。分散式學習是一種訓練模型,該模型使用複數個分散式計算節點來執行神經網路的有監督或無監督訓練。分散式計算節點可各自包括一或複數個主機處理器和一或複數個通用處理節點。如圖所示,分散式學習可以執行模型平行度1802,資料平行度1804或模型與資料平行度1804的組合。
在模型平行度(parallelism)1802中,分散式系統中的不同計算節點可以對單個網路的不同部分執行訓練計算。例如,神經網路的每一層都可以由分散式系統的不同處理節點進行訓練。模型平行度的好處包括能夠縮放到特別大的模型。拆分與神經網路不同層相關的計算,可以訓練非常大的神經網路,其中所有層的權重都無法放入單個計算節點的記憶體中。在一些情況下,模型平行度在 執行大型神經網路的無監督訓練中尤其有用。
在資料平行度1804中,分散式網路的不同節點具有模型的完整實例,且每個節點接收資料的不同部分。然後將來自不同節點的結果合併。儘管可以採用不同的資料平行度,但資料平行訓練方法都需要一種在每個節點之間將結果組合在一起並同步模型參數的技術。組合資料的示例性方法包括參數平均和基於更新的資料平行度。參數平均在訓練資料的子集上訓練每個節點,並將全局參數(例如權重,偏差)設置為來自每個節點的參數的平均值。參數平均使用維護參數資料的中央參數伺服器。基於更新的資料平行度與參數平均相似,除不是將參數從節點傳輸到參數伺服器之外,傳輸對模型的更新。另外,可以以分散的方式執行基於更新的資料平行度,其中將更新壓縮並在節點之間傳輸。
組合模型和資料平行度1806可以例如在其中每個計算節點包括複數個GPU的分散式系統中實現。每個節點可以具有模型的完整實例,每個節點內的單獨GPU用於訓練模型的不同部分。
相對於單個機器上的訓練,分散式訓練增加管理負擔。但是,本文所述的平行處理器和GPGPU各自可以實現各種技術來減少分散式訓練的管理負擔,包括實現高頻寬GPU到GPU資料傳輸和加速的遠端資料同步的技術。
示例性機器學習應用
機器學習可以應用於解決各種技術問題,包括但不限於電腦視覺,自動駕駛和導航,語音識別以及語言處理。傳統上,電腦視覺一直是機器學習應用程式中最活躍的研究領域之一。電腦視覺的應用範圍從再現人類的視覺能力(例如識別面部)到建立視覺能力的新類別。例如,電腦視覺應用程式可以配置為從視訊中可見的物件中感應的振動中識別聲波。平行處理器加速的機器學習使電腦視覺應用程式可以使用比以前可行大得多的訓練資料集進行訓練,並使推理系統可以使用低功耗平行處理器進行部署。
平行處理器加速的機器學習具有自動駕駛應用程式,包括車道和道路標誌識別,避障,導航和駕駛控制。加速的機器學習技術可用於基於定義對特定訓練輸入的適當回應的資料集來訓練駕駛模型。本文描述的平行處理器可以實現對用於自動駕駛解決方案的日益複雜的神經網路的快速訓練,並可以在適合整合到自動駕駛車的行動平台中部署低功耗推理處理器。
平行處理器加速的深度神經網路已經使機器學習方法能夠實現自動語音識別(ASR)。ASR包括建立一函數,該函數在給定輸入聲音序列的情況下計算最可能的語言序列。使用深度神經網路的加速機器學習已能夠替換先前用於ASR的隱馬爾可夫模型(hidden Markov model,HMM)和高斯混合模型(Gaussian mixture model,GMM)。
平行處理器加速的機器學習也可以用於加速自然語言處理。自動學習過程可以利用統計推斷演算法來產生對錯誤或陌生輸入具有強健性的模型。示例性自然語言處理器應用包括人類語言之間的自動機器轉譯。
用於機器學習的平行處理平台可以分為訓練平台和部署平台。訓練平台通常是高度平行的,且包括最佳化以加速多GPU單節點訓練和多節點,多GPU訓練,而部署的機器學習(例如,推理)平台通常包括適用於如以下產品的低功耗平行處理器:相機,自主(autonomous)機器人和自動駕駛(autonomous)車。
圖19示出採用加速器1910的計算裝置1900的一實施例。計算裝置1900(例如,智慧型可穿戴裝置,虛擬實境(VR)裝置,頭戴式顯示器(HMD),行動電腦,物聯網(IoT)裝置,筆記型電腦,台式電腦,伺服器電腦等)可以與圖1的資料處理系統100相同,因此,為簡潔,清楚和易於理解,在下文中不再進一步討論或重複上面參照圖1-18陳述的許多細節。如圖所示,在一實施例中,計算裝置1900被示為主控(host)加速器1910。儘管被示為獨立組件,但是其他實施例可以以加速器1910包括在GPU 1914內為特徵。在其他實施例中,加速器1910可以包括在CPU 1912內。
在整個檔案中,可以將諸如“圖形域”之類的用語與“圖形處理單元”,“圖形處理器”或簡稱“GPU”及相似者,互換地引用,且類似地,“CPU域”或“主機域”可以 與“電腦處理單元”,“應用處理器”或簡稱“CPU”互換地引用。
計算裝置1900可以包括任何數量和類型的通信裝置,例如大型計算系統,例如伺服器電腦,台式電腦等,且還可以包括機上盒(例如,基於網際網路的有線電視機上盒等),基於全球定位系統(GPS)的裝置等。計算裝置1900可以包括用作通信裝置的行動計算裝置,例如包括智慧型手機,個人數位助理(PDA),平板電腦,筆記型電腦,電子閱讀器(e-reader),智慧型電視,電視平台,可穿戴裝置(例如眼鏡,手錶,手環,智慧型卡,珠寶,衣物等),媒體播放器等。例如,在一實施例中,計算裝置1900可以包括採用電腦平台的行動計算裝置,該電腦平台主控諸如系統單晶片(“SoC”或“SOC”)之類的積體電路(“IC”),將計算裝置1900的各種硬體及/或軟體組件整合在單晶片上。
如所示,在一實施例中,計算裝置1900可以包括任何數量和類型的硬體及/或軟體組件,諸如(但不限於)GPU 1914,圖形驅動器(也稱為“GPU驅動器”,“圖形驅動器邏輯”,“驅動器邏輯”,使用者模式驅動器(UMD),UMD,使用者模式驅動器框架(UMDF),UMDF或簡稱為“驅動器”)1916,CPU 1912,記憶體1908,網路裝置,驅動器,等等,以及輸入/輸出(I/O)源1904,例如觸控螢幕,觸控面板,觸控板,虛擬或傳統鍵盤,虛擬或傳統滑鼠,連接埠,連接器等。
計算裝置1900可以包括用作電腦裝置1900的硬體及/或實體資源與使用者之間的介面的作業系統(OS)1906。可以預期,CPU 1912可以包括一或複數個處理器,例如圖1的處理器102,而GPU 1914可以包括一或複數個圖形處理器(或多處理器)。
要注意的是,諸如“節點”,“計算節點”,“伺服器”,“伺服器裝置”,“雲端電腦”,“雲端伺服器”,“雲端伺服器電腦”,“機器”,“主機”,“裝置”,“計算裝置”,“電腦”,“計算系統”等,在本檔案中可以互換使用。還要注意,在整個檔案中可以互換使用諸如“應用程式”,“軟體應用程式”,“程式”,“軟體程式”,“封包”,“軟體封包”等用語。同樣,在整個檔案中可以互換地使用諸如“工作(job)”,“輸入”,“請求”,“訊息”之類的用語。
可以想到且如參考圖1-13進一步描述的,如上所述的圖形管線的一些過程在軟體中實現,而其餘過程在硬體中實現。圖形管線可以在圖形協處理器設計中實現,其中CPU 1912被設計為與GPU 1914一起工作,GPU 1914可以被包括在CPU 1912中或與CPU 1912共置。在一實施例中,GPU 1914可以採用任何數量和類型的傳統軟體和硬體邏輯來執行與圖形渲染有關的傳統功能,且可以使用新穎的軟體和硬體邏輯來執行任何數量和類型的指令。
如上所述,記憶體1908可以包括隨機存取記憶體(RAM),其包括具有物件資訊的應用資料庫。諸如圖1的記憶體集線器105之類的記憶體控制器集線器可以存取 RAM中的資料且將其轉發到GPU 1914以用於圖形管線處理。RAM可以包括雙資料速率RAM(DDR RAM),擴展資料輸出RAM(EDO RAM),等等。CPU 1912與硬體圖形管線相互作用以共享圖形管線功能。
處理後的資料被儲存在硬體圖形管線中的緩衝器中,且狀態資訊被儲存在記憶體1908中。然後將得到的影像傳送到I/O源1904,例如用於顯示影像的顯示組件。可以想到的是,顯示裝置可以是各種類型,如陰極射線管(CRT),薄膜電晶體(TFT),液晶顯示器(LCD),有機發光二極體(OLED)陣列等,以顯示資訊給使用者。
記憶體1908可以包括緩衝器(例如,幀緩衝器)的預分配區域;然而,本領域普通技術人員應該理解,實施例不限於此,且可以使用可存取下部圖形管線的任何記憶體。計算裝置1900可以進一步包括如圖1所示的輸入/輸出(I/O)控制集線器(ICH)107,作為一或複數個I/O源1904等。
CPU 1912可以包括一或複數個處理器以執行指令以便執行計算系統實現的任何軟體例程。指令經常關於對資料執行的某種操作。資料和指令都可以儲存在系統記憶體1908和任何相關的快取記憶體中。快取記憶體通常設計為比系統記憶體1908具有更短的等待時間(latency);例如,快取記憶體可以與處理器整合在相同的矽晶片上及/或由更快的靜態RAM(SRAM)單元構成,而系統記憶體1908可以由較慢的動態RAM(DRAM)單元構成。與系統記 憶體1908相比,通過傾向於將更頻繁使用的指令和資料儲存在快取記憶體中,計算裝置1900的總體性能效率得以提高。預期在一些實施例中,GPU 1914可以作為CPU 1912的一部分(諸如實體CPU封裝的一部分)存在,在這種情況下,記憶體1908可以由CPU 1912和GPU 1914共享或保持分離。
系統記憶體1908可以對計算裝置1900內的其他組件可用。例如,從各種介面接收到計算裝置1900(例如,鍵盤和滑鼠,印表機連接埠,區域網路(LAN)連接埠,數據機(modem)連接埠等)或從電腦裝置1900的內部儲存元件(例如,硬碟驅動器)檢索到的任何資料(例如,輸入圖形資料),在由軟體程式的實現中被一或複數個處理器操作之前,通常被暫時排入系統記憶體1908。類似地,軟體程式決定的資料應通過計算系統介面之一從計算裝置1900發送到外部實體,或儲存在內部儲存元件中,通常在傳輸或儲存之前暫時在系統記憶體1908中排隊。
此外,例如,ICH可以用於確保這樣的資料在系統記憶體1908和其適當的對應的計算系統介面(如果計算系統是這樣設計的話,還包括內部儲存體裝置)之間適當地傳遞,且可以具有自身與所觀察到的I/O源/裝置1904之間的雙向點對點鏈接。類似地,平台控制集線器(PCH)可以用於管理在CPU 1912和GPU 1914,介面和內部儲存元件之間可能緊接彼此出現的對系統記憶體1908存取的各種競爭請求。
I/O源1904可以包括一或複數個I/O裝置,其被實現用於向及/或從計算裝置1900傳輸資料(例如,網路適配器);或者,對於計算裝置1900內的大規模非揮發性儲存(例如,硬碟驅動器)。包括字母數字(alphanumeric)和其他鍵的使用者輸入裝置可以用於將資訊和命令選擇傳達給GPU 1914。使用者輸入裝置的另一種類型是游標(cursor)控制,例如滑鼠,軌跡球,觸控螢幕,觸控板或游標方向鍵,以將方向資訊和命令選擇傳達給GPU 1914,並控制在顯示裝置上的游標行動。可以採用電腦裝置1900的相機和麥克風陣列來觀察手勢,記錄音訊和視訊以及接收和發送視覺和音訊命令。
計算裝置1900可以進一步包括網路介面,以提供對網路的存取,諸如LAN,廣域網路(WAN),城域網(metropolitan area network,MAN),個人區域網路(personal area network,PAN),藍牙,雲端網路,行動網路(例如,第三代(3G),第四代(4G)等),企業內部網路(intranet),網際網路等。網路介面可以包括例如具有天線的介面的無線網路,該天線可以代表一或複數個天線。網路介面還可以包括例如有線網路介面,以通過網路電纜與遠端裝置通信,該網路電纜可以是例如乙太網路電纜,同軸電纜,光纖電纜,串行電纜(serial cable)或平行電纜(parallel cable)。
網路介面可以提供對LAN的存取,例如通過遵循IEEE 802.11b及/或IEEE 802.11g標準,及/或無線網路 介面可以提供對個人區域網路的存取,例如符合藍牙標準。也可以支援其他無線網路介面及/或協議,包括標準的先前和後續版本。除了或代替經由無線LAN標準的通信,網路介面可以使用例如分時多工存取(TDMA)協議,全球行動通信系統(GSM)協議,分碼多工存取(CDMA)協議及/或任何其他類型的無線通信協議來提供無線通信。
網路介面可以包括一或複數個通信介面,例如數據機,網路介面卡或其他眾所周知的介面裝置,例如那些用於耦接到乙太網路,令牌環,或其他類型例如,為提供通信鏈路以支援LAN或WAN的目的而連接的實體有線或無線附接。以這種方式,電腦系統還可以經由傳統的網路基礎設施(例如,包括企業內部網路或網際網路)耦接到複數個週邊裝置,客戶端,控制表面,主機或伺服器。
應當意識到,對於一些實施方式,比上述示例更少或更多裝備的系統可能是較佳的。因此,計算裝置1900的配置可根據實現方式的不同而變化,這取決於許多因素,例如價格約束,性能要求,技術改進或其他情況。電子裝置或電腦系統1900的示例可以包括(但不限於)行動裝置,個人數位助理,行動計算裝置,智慧型電話,行動電話,手機,單向呼叫器(pager),兩向呼叫器,通信裝置(messaging device),電腦,個人電腦(PC),台式電腦,筆記型電腦,筆記型電腦,手持電腦,平板電腦,伺服器,伺服器陣列或伺服器場(server farm),Web伺服器,網路伺服器,網際網路伺服器,工作站,小型電腦,大型電 腦,超級電腦,網路裝置,Web裝置,分散式計算系統,多處理器系統,基於處理器的系統,消費型電子產品,可程式消費型電子裝置,電視,數位電視,機上盒,無線存取點,基站,訂戶站(subscriber station),行動訂戶中心,無線電網路控制器,路由器,集線器,閘道器(gateway),網橋,交換機,機器或其組合。
實施例可以被實現為以下任何一種或組合:使用母板互連的一或複數個微晶片或積體電路,固線式(hardwired)邏輯,由記憶體裝置儲存並由微處理器執行的軟體,韌體,專用積體電路(ASIC)及/或現場可程式閘陣列(FPGA)。用語“邏輯”例如可以包括軟體或硬體及/或軟體和硬體的組合。
例如,可以提供實施例作為電腦程式產品,該電腦程式產品可以包括其上儲存有機器可執行指令的一或複數個機器可讀媒體,該機器可執行指令在由諸如電腦,電腦網路或其他電子裝置的一或複數個機器執行時,導致一或多台機器執行根據本文描述的實施例的操作。機器可讀媒體可以包括但不限於軟碟,光碟,CD-ROM(光碟唯讀記憶體)和磁光碟,ROM,RAM,EPROM(可抹除可程式唯讀記憶體),EEPROM(電可抹除可程式唯讀記憶體),磁卡或光卡,快閃記憶體或適用於儲存機器可執行指令的其他類型的媒體/機器可讀媒體。
此外,實施例可以下載為電腦程式產品,其中可以通過體現的一或複數個資料信號將程式從遠端電腦 (例如,伺服器)傳輸到請求電腦(例如,客戶端),及/或通過通信鏈路(例如,數據機及/或網路連接)由載波或其他傳播媒體調變。
根據一實施例,加速器1910包括陣列1913(例如,脈動陣列)乘法硬體,以執行機器學習矩陣乘法操作。在這樣的實施例中,可以通過將矩陣分離(或分割)為較小的矩陣(例如8×8)來對較大的矩陣(例如16×16)執行操作。因此,處理矩陣關於大量的矩陣乘法,包括大量的乘法加法運算。
很多時候,執行矩陣乘法需要在性能和精度之間進行權衡。例如,硬體可能需要同時支援浮點16(float16)和浮點8(float8)的應用程式。對於相同的記憶體頻寬,float8模式可能會執行兩次乘法加法運算,但精度會降低。但是,為每種模式實現單獨的電路會增加大量的面積和功耗。
圖20A示出傳統的2N位元乘法器分解成四個N位元乘法器和加法器。如圖20A所示,項的相乘導致A[N-1:0]*B[N-1:0],A[2N-1:N]*B[N-1:0],A[N-1:0]*B[2N-1:N]及A[2N-1:N]*B[2N-1:N]的相加等於A[2N-1:0]*B[2N-1:0]。通過使用圖20A所示的2Nx2N乘法器執行兩個NxN乘法,可以使用相同的乘法器架構來計算2k*N位元乘法(或雙工模式)。圖20B示出使用乘法器的這種乘法。如圖20B所示,將2Nx2N乘法器在雙工模式下修改為零中項(A2[N-1:0]*B1[N-1:0]*~雙工和A1[N-1:0]*B2[N-1:0]*~雙工)通 過指示符信號進行雙工操作(例如~雙工)。非零項是A2[N-1:0]*B2[N-1:0]和A1[N-1:0]*B1[N-1:0]的兩個NxN乘積的乘積。A2[N-1:0]*B2[N-1:0]和A1[N-1:0]*B1[N-1:0]在後續級中使用其他硬體附加。因此,需要一附加的加法器來執行2k*N位元乘法,這會增加實現2Nx2N乘法所需的大量邏輯,面積和功率。
根據一實施例,陣列1913包括最佳化的點積乘法器1915(圖19),其支援複數個位元寬度,而不必包括附加的加法器。點積關於乘法和加法。例如,給定A和B作為脈動乘法器的輸入,每個為M位元寬,則有(k)個2N位元寬的元件,因此第一種情況(例如,情況1)表示為:M=k * 2N;
Figure 109131502-A0305-02-0094-6
Ai *Bi,,其中“i”是構成輸入向量A和B的k個元件的索引。
在第二種情況(例如,情況2)中,硬體應用程式支援2k N位元寬的元件的點積:M=2k * N;
Figure 109131502-A0305-02-0094-5
Ai * Bi
如上所示,情況2的乘法器數量是情況1的兩倍,每個單獨的乘法器顯著較小。另外,即使情況2中的每個元件具有較少數量的位元,相對情況1,情況2具有兩倍要加的元件數量。
圖21示出點積乘法器1915的一實施例。如圖21所示,乘法器1915是2N×2N的乘法器,其包括乘法器級 2110和加法級2120。在一實施例中,乘法器1915可以以點積模式操作以執行2k N位元乘法,以及傳統模式(例如,執行2Nx2N乘法)。在點積模式中,乘法器1915包括被配置為複數個(例如2N)個位元向量(A2 * B2+A1 * B1)的點積,在乘法器級2110以執行NxN個乘法運算和NxN個乘法的加法運算,而不必在後續級中執行加法運算。在這樣的實施例中,第一和最後一項的乘法操作被減少至零(或歸零)經由用於點積的乘法(例如,~dotp)的指示符信號,使得(A1[N-1:0]*B1[N-1:0])*~dotp和(A2[N-1:0]*B2[N-1:0])*~dotp=0。
在另一實施例中,被乘數中的最高有效位元和最低有效位元(例如,輸入B(B1和B2)的前N位元和後N位元)在通過多工(multiplexing)相乘之前被交換。這種交換使得能夠進行元件的垂直乘法(例如,A1B1和A2B2),而不是進行元件(例如A1B2和A2B1)的對角乘法。隨後,加法級2120執行A2 *(dotp?B2:B1)和A1 *(dotp?B1:B2)的加法,得到A2 * B2+A1 * B1的輸出。因此,不需要單獨的加法器來執行該操作。
在其它實施例中,乘法器1915可以概括的點積最佳化,其中接收的輸入被分成K個元件。因此,假設輸入A[N * K-1:0]和B[N * K-1:0],其中K=添加的分段(piecewise)輸入數,N=每個被乘數的位元寬,則乘法器輸出可以將這兩種操作模式歸納為以下方程式:傳統模式輸出:
Figure 109131502-A0305-02-0096-1
點積模式輸出:
Figure 109131502-A0305-02-0096-2
基於上述,乘法器1915中的所有其他項被歸零。根據K=3的示例,上述等式如圖22所示展開,其中A0=a[N-1:0],A1=a[2N-1:N],A2=a[3N-1:2N]及B0=b[N-1:0],B1=b[2N-1:N],B2=b[3N-1:2N]。如圖22所示,除A2*(dotp?B2:B0);A1*B1;和A0*(dotp?B0:B2)之外,所有乘積都設置為0(或為空);圖23是示出用於執行乘法運算的過程的一實施例的流程圖。在處理方塊2310,在乘法器1915接收輸入。在處理方塊2320,將輸入分離為K個元件。在處理方塊2330,決定操作模式(例如,傳統或點積)。在處理方塊2340,如操作模式所指示的,執行乘法運算(例如,k 2N位元乘法或2k N位元乘法)。在一實施例中,指示被提供有接收的輸入。在處理方塊2350,返回乘法運算的結果。
圖24是示出用於執行點積2k N位元乘法運算的過程的一實施例的流程圖。在處理方塊2410,將乘法器配置為點積。在處理方塊2420,被乘數之一的位元被交換。在處理方塊2430,執行乘法運算。在處理方塊2440處,將乘法運算的第一項和最後一項歸零。在處理方塊 2450處,執行中項的加法。
以下項目及/或示例關於其他實施例或示例。在一或複數個實施例中的任何地方都可以使用示例中的細節。可以將不同實施例或示例的各種特徵與包括的一些特徵和排除的其他特徵進行各種組合,以適合各種不同的應用。根據本文描述的實施例和示例,示例可以包括標的,諸如方法,用於執行該方法的動作的裝置,至少一機器可讀媒體,該至少一機器可讀媒體包括指令,該指令在由機器執行時使該機器執行該方法,設備或系統的動作,以用於促進混合通信。
一些實施例關於示例1,該示例包括一種促進矩陣乘法運算的裝置,包括:乘法硬體,以點積模式操作,其中,所述乘法硬體中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算。
示例2包括示例1所述的標的,其中,所述乘法級在執行所述乘法運算之前進一步執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
示例3包括示例1和2所述的標的,其中,所述乘法級將所述乘法運算的第一項和最後一項減少為零。
示例4包括示例1-3所述的標的,其中,所述乘法硬體進一步包括加法級,以對所述乘法運算的中項執行加法運算。
示例5包括示例1-4所述的標的,其中,所述 乘法硬體進一步被配置為以傳統模式操作以執行2N矩陣乘法加法運算。
示例6包括示例1-5所述的標的,其中,所述乘法硬體接收輸入,並將所述輸入分離為複數個元件。
示例7包括示例1-6所述的標的,其中,所述乘法硬體決定是在所述傳統模式下或在所述點積模式下操作。
一些實施例關於示例8,其包括一種促進矩陣乘法運算的方法,包括以點積模式操作乘法硬體,包括:配置乘法級為複數個位元向量(N)的點積,以對複數個被乘數進行N×N乘法運算;及對所述NxN乘法運算的結果執行加法運算。
示例9包括示例8所述的標的,進一步包括:在執行所述乘法運算之前,執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
示例10包括示例8和9所述的標的,進一步包括將所述乘法運算的第一項和最後一項減少為零。
示例11包括示例8-10所述的標的,進一步包括在所述乘法硬體的加法級對所述乘法運算的中項執行加法運算。
示例12包括示例8-11所述的標的,進一步包括將所述乘法硬體配置為以傳統模式操作以執行2N矩陣乘法加法運算。
示例13包括示例8-12所述的標的,進一步包 括:在所述乘法硬體接收輸入;及將所述輸入分為複數個元件。
示例14包括示例8-13所述的標的,進一步包括:所述乘法硬體決定是在所述傳統模式下或在所述點積模式下操作。
一些實施例關於示例15,該示例包括一種硬體加速器,包括:脈動陣列,包括乘法硬體,以點積模式操作,其中,所述乘法硬體中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算。
示例16包括示例15所述的標的,其中,所述乘法級在執行所述乘法運算之前進一步執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
示例17包括示例15和16所述的標的,其中,所述乘法級將所述乘法運算的第一項和最後一項減少為零。
示例18包括示例15-17所述的標的,其中,所述乘法硬體進一步包括加法級,以對所述乘法運算的中項執行加法運算。
示例19包括示例15-18所述的標的,其中,所述乘法硬體進一步被配置為以傳統模式操作以執行2N矩陣乘法加法運算。
示例20包括示例15-19所述的標的,其中,所述乘法硬體決定是在所述傳統模式下或在所述點積模式 下操作。
前面的描述和附圖應被認為是說明性而非限制性的。本領域技術人員將理解,可以對在此描述的實施例做出各種修改和改變而不脫離如所附申請專利範圍中闡述本發明的更廣精神和範圍。
100:處理系統
102:處理器
104:快取記憶體
106:暫存器檔案
107:處理器核
108:圖形處理器
109:指令集
110:介面匯流排
111:顯示裝置
112:加速器
116:記憶體控制器
118:外部圖形處理器
119:外部加速器
120:記憶體裝置
121:指令
122:資料
124:資料儲存裝置
125:觸控感測器
126:無線收發器
128:韌體介面
130:平台控制器集線器
134:網路控制器
140:I/O控制器
142:通用序列匯流排控制器
143:鍵盤和滑鼠
144:相機
146:音訊控制器

Claims (17)

  1. 一種促進矩陣乘法運算的裝置,包括:乘法硬體,以點積模式操作,其中,所述乘法硬體中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算;其中,所述乘法級在執行所述乘法運算之前進一步執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
  2. 根據請求項1所述的裝置,其中,所述乘法級將所述乘法運算的第一項和最後一項減少為零。
  3. 根據請求項2所述的裝置,其中,所述乘法硬體進一步包括加法級,以對所述乘法運算的中項執行加法運算。
  4. 根據請求項1所述的裝置,其中,所述乘法硬體進一步被配置為以傳統模式操作以執行2N矩陣乘法加法運算。
  5. 根據請求項4所述的裝置,其中,所述乘法硬體接收輸入,並將所述輸入分離為複數個元件。
  6. 根據請求項5所述的裝置,其中,所述乘法硬體決定是在所述傳統模式下或在所述點積模式下操作。
  7. 一種促進矩陣乘法運算的方法,包括以點積模式操作乘法硬體,包括: 配置乘法級為複數個位元向量(N)的點積,以對複數個被乘數進行N×N乘法運算;及對所述NxN乘法運算的結果執行加法運算;進一步包括:在執行所述乘法運算之前,執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
  8. 根據請求項7所述的方法,進一步包括將所述乘法運算的第一項和最後一項減少為零。
  9. 根據請求項8所述的方法,進一步包括在所述乘法硬體的加法級對所述乘法運算的中項執行加法運算。
  10. 根據請求項7所述的方法,進一步包括將所述乘法硬體配置為以傳統模式操作以執行2N矩陣乘法加法運算。
  11. 根據請求項10所述的方法,進一步包括:在所述乘法硬體接收輸入;及將所述輸入分離為複數個元件。
  12. 根據請求項11所述的方法,進一步包括:所述乘法硬體決定是在所述傳統模式下或在所述點積模式下操作。
  13. 一種硬體加速器,包括:脈動陣列,包括乘法硬體,以點積模式操作,其中, 所述乘法硬體中包括的乘法級被配置為複數個位元向量(N)的點積,以對複數個被乘數執行NxN乘法運算並對所述NxN乘法運算的結果執行加法運算;其中,所述乘法級在執行所述乘法運算之前進一步執行所述複數個被乘數中的第一個的最高有效位元和最低有效位元的交換。
  14. 根據請求項13所述的加速器,其中,所述乘法級將所述乘法運算的第一項和最後一項減少為零。
  15. 根據請求項14所述的加速器,其中,所述乘法硬體進一步包括加法級,以對所述乘法運算的中項執行加法運算。
  16. 根據請求項13所述的加速器,其中,所述乘法硬體進一步被配置為以傳統模式操作以執行2N矩陣乘法加法運算。
  17. 根據請求項16所述的加速器,其中,所述乘法硬體決定是在所述傳統模式下或在所述點積模式下操作。
TW109131502A 2019-11-13 2020-09-14 促進矩陣乘法運算的裝置、方法及硬體加速器 TWI842948B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/682,225 2019-11-13
US16/682,225 US11416580B2 (en) 2019-11-13 2019-11-13 Dot product multiplier mechanism

Publications (2)

Publication Number Publication Date
TW202121264A TW202121264A (zh) 2021-06-01
TWI842948B true TWI842948B (zh) 2024-05-21

Family

ID=75683574

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109131502A TWI842948B (zh) 2019-11-13 2020-09-14 促進矩陣乘法運算的裝置、方法及硬體加速器

Country Status (7)

Country Link
US (1) US11416580B2 (zh)
JP (1) JP2021077347A (zh)
KR (1) KR20210058649A (zh)
CN (1) CN112800388A (zh)
BR (1) BR102020019666A2 (zh)
DE (1) DE102020128220A1 (zh)
TW (1) TWI842948B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115310030A (zh) * 2021-05-07 2022-11-08 脸萌有限公司 一种矩阵乘法电路模块及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
CN109117186A (zh) * 2018-02-05 2019-01-01 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量外积指令的方法
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US10409604B2 (en) * 2017-04-24 2019-09-10 Arm Limited Apparatus and method for performing multiply-and-accumulate-products operations
US10409887B1 (en) * 2017-02-28 2019-09-10 Ambarella, Inc. Generalized dot product for computer vision applications

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11194549B2 (en) * 2019-10-25 2021-12-07 Arm Limited Matrix multiplication system, apparatus and method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107315574A (zh) * 2016-04-26 2017-11-03 北京中科寒武纪科技有限公司 一种用于执行矩阵乘运算的装置和方法
US10409887B1 (en) * 2017-02-28 2019-09-10 Ambarella, Inc. Generalized dot product for computer vision applications
US10409604B2 (en) * 2017-04-24 2019-09-10 Arm Limited Apparatus and method for performing multiply-and-accumulate-products operations
CN109117186A (zh) * 2018-02-05 2019-01-01 上海寒武纪信息科技有限公司 神经网络处理装置及其执行向量外积指令的方法
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier

Also Published As

Publication number Publication date
US11416580B2 (en) 2022-08-16
JP2021077347A (ja) 2021-05-20
US20210141857A1 (en) 2021-05-13
TW202121264A (zh) 2021-06-01
CN112800388A (zh) 2021-05-14
DE102020128220A1 (de) 2021-05-20
KR20210058649A (ko) 2021-05-24
BR102020019666A2 (pt) 2021-05-18

Similar Documents

Publication Publication Date Title
US11494163B2 (en) Conversion hardware mechanism
US11900575B2 (en) Systems and methods for tone mapping of high dynamic range images for high-quality deep learning based processing
JP2022183406A (ja) ハイブリッド浮動小数点フォーマットのドット積累算命令を有するグラフィックスプロセッサ及びグラフィックス処理ユニット
US20210390664A1 (en) Deep learning based selection of samples for adaptive supersampling
US12008067B2 (en) Sparse matrix multiplication acceleration mechanism
US11669329B2 (en) Instructions and logic for vector multiply add with zero skipping
US11409579B2 (en) Multiple independent synchonization named barrier within a thread group
US12039000B2 (en) Matrix operation optimization mechanism
US11443407B2 (en) Sparse matrix optimization mechanism
US20240303915A1 (en) Inferred shading mechanism
US20240053985A1 (en) Sharing register file usage between fused processing resources
CN114677258A (zh) 用于视觉渲染和合成的空间稀疏卷积模块的方法和设备
TWI842948B (zh) 促進矩陣乘法運算的裝置、方法及硬體加速器
US20230195519A1 (en) Low power inference engine pipeline in a graphics processing unit
TWI846950B (zh) 用以促進矩陣處理之設備和方法以及其圖形處理器