TW201935408A - 用於低精度機器學習運算之計算最佳化 - Google Patents

用於低精度機器學習運算之計算最佳化 Download PDF

Info

Publication number
TW201935408A
TW201935408A TW108117181A TW108117181A TW201935408A TW 201935408 A TW201935408 A TW 201935408A TW 108117181 A TW108117181 A TW 108117181A TW 108117181 A TW108117181 A TW 108117181A TW 201935408 A TW201935408 A TW 201935408A
Authority
TW
Taiwan
Prior art keywords
memory
graphics
data
precision
processor
Prior art date
Application number
TW108117181A
Other languages
English (en)
Other versions
TWI682357B (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 TW201935408A publication Critical patent/TW201935408A/zh
Application granted granted Critical
Publication of TWI682357B publication Critical patent/TWI682357B/zh

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/17Interprocessor communication using an input/output type connection, e.g. channel, I/O port
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods 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/57Arithmetic 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
    • 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/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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5044Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • 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
    • 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/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Nonlinear Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Feedback Control In General (AREA)
  • Numerical Control (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Image Analysis (AREA)

Abstract

一個實施例提供一通用圖形處理單元,包含動態精度浮點單元,其包括控制單元,具有精度追蹤硬體邏輯以追蹤相對於目標精度之用於計算資料的精度的可用位元數,其中該動態精度浮點單元包括計算邏輯,用來以多個精度輸出資料。

Description

用於低精度機器學習運算之計算最佳化
實施例一般關於資料處理,更具體地關於透過通用圖形處理單元的資料處理。
當前的平行圖形資料處理包括已開發用以對圖形資料執行特定操作的系統和方法,諸如,舉例來說,線性內插、曲面細分(tessellation)、光柵化(rasterization)、紋理映射、深度測試等。傳統上,圖形處理器使用固定功能計算單元來處理圖形資料;然而,近來,部分的圖形處理器已成為可編程的,使得這些處理器能支援更廣泛的操作來處理頂點和片段(fragment)資料。
為了進一步提高性能,圖形處理器通常實現諸如管線操作的處理技術,其試圖在整個圖形管線的不同部分平行處理盡可能多的圖形資料。具有單指令多線程(SIMT)結構的平行圖形處理器旨在將圖形管線中的平行處 理量最大化。在SIMT結構中,平行線程組試圖盡可能經常地同步執行程式指令,以提高處理效率。用於SIMT結構之軟體和硬體的總體概要可於Shane Cook、CUDA Programming(CUDA程式設計)、第3章、第37-51頁(2013)及/或Nicholas Wilt、CUDA Handbook(CUDA手冊)、AComprehensive Guide to GPU Programming(GPU程式設計綜合指南),第2.6.2至3.1.2節(2013年6月)中找到。
100‧‧‧計算系統
101‧‧‧處理子系統
102‧‧‧處理器
104‧‧‧系統記憶體
105‧‧‧記憶體集線器
106‧‧‧通訊鏈路
107‧‧‧I/O集線器
108‧‧‧輸入裝置
110A‧‧‧顯示裝置
110B‧‧‧顯示裝置
111‧‧‧I/O子系統
112‧‧‧平行處理器
113‧‧‧通訊鏈路
114‧‧‧系統儲存單元
116‧‧‧I/O開關
118‧‧‧網路配接器
119‧‧‧無線網路配接器
120‧‧‧附加裝置
200‧‧‧平行處理器
202‧‧‧平行處理單元
204‧‧‧I/O單元
206‧‧‧主機介面
208‧‧‧前端
210‧‧‧排程器
212‧‧‧處理陣列
214A-214N‧‧‧叢集
216‧‧‧記憶體交叉
218‧‧‧記憶體介面
220A-220N‧‧‧分割單元
221‧‧‧L2快取
222‧‧‧平行處理器記憶體
224A-224N‧‧‧記憶體單元
225‧‧‧幀緩衝器介面
226‧‧‧光柵操作單元(ROP)
232‧‧‧管線管理器
234‧‧‧圖形多處理器
236‧‧‧紋理單元
240‧‧‧資料交叉
242‧‧‧預光柵操作單元(PreROP)
245‧‧‧記憶體管理單元(MMU)
248‧‧‧L1快取
252‧‧‧指令快取
254‧‧‧指令單元
256‧‧‧地址映射單元
258‧‧‧暫存器檔案
262‧‧‧通用圖形處理單元(GPGPU)核心
266‧‧‧加載/儲存單元
268‧‧‧記憶體及快取互連
270‧‧‧共用記憶體
272‧‧‧快取記憶體
325‧‧‧圖形多處理器
327‧‧‧互連結構
330‧‧‧共通指令快取
332A-332B‧‧‧指令單元
334A-334B‧‧‧暫存器檔案
336A-336B‧‧‧GPGPU核心
337A-337B‧‧‧GPGPU核心
338A-338B‧‧‧GPGPU核心
340A-340B‧‧‧加載/儲存單元
342‧‧‧紋理及/或資料快取記憶體
344A-344B‧‧‧紋理單元
346‧‧‧共用記憶體
350‧‧‧圖形多處理器
352‧‧‧互連結構
354‧‧‧指令快取
356A-356D‧‧‧執行資源
358A-358B‧‧‧紋理及/或資料快取記憶體
360A-360D‧‧‧紋理單元
362‧‧‧共用記憶體
401-402‧‧‧處理器記憶體
405-406‧‧‧多核心處理器
407‧‧‧多核心處理器
410-413‧‧‧圖形處理單元(GPU)
420-423‧‧‧GPU記憶體
425‧‧‧代理電路
430A-430B‧‧‧記憶體互連
431-432、N‧‧‧圖形處理引擎
433-434、M‧‧‧圖形記憶體
435‧‧‧介面
436‧‧‧加速器整合電路
437‧‧‧介面
438‧‧‧快取
439‧‧‧MMU
440‧‧‧高速鏈路
440A-440D‧‧‧高速鏈路
441‧‧‧系統記憶體
442A-442B‧‧‧高速鏈路
443‧‧‧高速鏈路
444‧‧‧提取
445‧‧‧暫存器
446‧‧‧圖形加速模組
447‧‧‧中斷管理電路
448‧‧‧上下文管理電路
450A-450D‧‧‧GPU記憶體互連
456‧‧‧共用快取
464‧‧‧一致性匯流排
460A-460D‧‧‧核心
461A-461D‧‧‧轉譯後備緩衝區
462A-462D‧‧‧快取
480‧‧‧應用程式
481‧‧‧GPU調用
482‧‧‧應用程式有效位址空間
483‧‧‧程序元件
484‧‧‧工作描述符(WD)
485‧‧‧OS虛擬位址空間
486‧‧‧區段/頁表
490‧‧‧加速器整合片
491‧‧‧WD提取單元
492‧‧‧中斷事件
493‧‧‧有效位址
494A-494E‧‧‧偏置/一致性管理電路
495‧‧‧作業系統
496‧‧‧系統超管理器
498‧‧‧超管理器真實位址空間
499‧‧‧程序元件表
500‧‧‧圖形處理管線
502‧‧‧資料組合器
504‧‧‧頂點處理單元
506‧‧‧基元組合器
508‧‧‧曲面細分控制處理單元
510‧‧‧曲面細分單元
512‧‧‧曲面細分評估處理單元
514‧‧‧基元組合器
516‧‧‧幾何處理單元
518‧‧‧基元組合器
520‧‧‧視埠縮放、剔除及剪裁單元
522‧‧‧光柵器
524‧‧‧片段/像素處理單元
526‧‧‧光柵操作單元
528‧‧‧記憶體介面
602‧‧‧機器學習應用
604‧‧‧機器學習框架
606‧‧‧計算框架
608‧‧‧GPGPU驅動器
610‧‧‧GPGPU硬體
700‧‧‧高度平行通用圖形處理單元
702‧‧‧主機介面
704‧‧‧全域排程器
706A-706H‧‧‧計算叢集
708‧‧‧快取記憶體
709‧‧‧I/O集線器
710‧‧‧GPU鏈路
712A-712B‧‧‧記憶體控制器
714A-714B‧‧‧記憶體
800‧‧‧多GPU計算系統
802‧‧‧處理器
804‧‧‧主機介面開關
806A-806D‧‧‧GPGPU
816‧‧‧P2P GPU鏈路
902‧‧‧輸入
904‧‧‧卷積層
906‧‧‧卷積層
908‧‧‧完全連接層
1000‧‧‧遞迴神經網路
1002‧‧‧輸入層
1004‧‧‧隱藏層
1005‧‧‧反饋機制
1006‧‧‧輸出層
1102‧‧‧訓練資料集
1104‧‧‧訓練框架
1106‧‧‧未經訓練的神經網路
1108‧‧‧經訓練的神經網路
1112‧‧‧新資料
1114‧‧‧結果
1202‧‧‧模型平行處理
1204‧‧‧資料平行處理
1206‧‧‧組合的模型及資料平行處理
1300‧‧‧推論系統單晶片(SOC)
1302‧‧‧媒體處理器
1304‧‧‧視覺處理器
1305‧‧‧晶載記憶體
1306‧‧‧GPGPU
1308‧‧‧多核心處理器
1400‧‧‧動態精度浮點單元
1402‧‧‧控制單元
1404‧‧‧內部暫存器
1406‧‧‧指數塊
1408‧‧‧有效數塊
1412‧‧‧精度追蹤邏輯
1414‧‧‧運算元暫存器
1416‧‧‧比較器
1418‧‧‧動態精度乘法器
1422‧‧‧數值變換單元
1424‧‧‧中間暫存器
1426‧‧‧動態精度指數加法器
1428‧‧‧移位單元
1434‧‧‧誤差累加器
1438‧‧‧動態精度有效數加法器
1448‧‧‧累加暫存器
1502‧‧‧輸入緩衝器
1504‧‧‧溢位乘法器
1506‧‧‧乘法器
1508‧‧‧精度暫存器
1510‧‧‧輸出緩衝器
1512‧‧‧8位元輸入緩衝器
1514‧‧‧溢位加法器
1516‧‧‧加法器
1518‧‧‧精度暫存器
1520‧‧‧8位元輸出緩衝器
1522‧‧‧24位元/32位元輸入緩衝器
1524‧‧‧溢位加法器
1526‧‧‧加法器
1528‧‧‧精度暫存器
1530‧‧‧24位元/32位元輸出緩衝器
1600‧‧‧動態精度處理系統
1606A-1606D‧‧‧操作線程
1608A-1608D‧‧‧動態浮點單元
1700‧‧‧邏輯
1801A-1801F‧‧‧64位元組塊
1802‧‧‧剝離迴圈
1804‧‧‧向量化的主迴圈
1806‧‧‧剩餘迴圈
1808A-1808C‧‧‧FP16 SIMD8單元
1812‧‧‧執行遮罩
1814‧‧‧執行遮罩
1816‧‧‧執行遮罩
1900‧‧‧線程處理系統
1902‧‧‧SIMD線程
1904‧‧‧SIMD線程
1906‧‧‧SIMT線程組
1910‧‧‧SIMD4槽
1912‧‧‧SIMD4槽
1920‧‧‧SIMD8浮點單元
1922A-1922H‧‧‧動態浮點單元
2000‧‧‧邏輯
2100‧‧‧深度神經網路
2102A-2102N‧‧‧神經網路層
2104A-2104B‧‧‧FMA邏輯
2106A-2106B‧‧‧正規化及變換邏輯
2200‧‧‧邏輯
2300‧‧‧處理系統
2302‧‧‧處理器
2304‧‧‧快取記憶體
2306‧‧‧暫存器檔案
2307‧‧‧處理器核心
2308‧‧‧圖形處理器
2309‧‧‧指令集
2310‧‧‧處理器匯流排
2312‧‧‧外部圖形處理器
2316‧‧‧記憶體控制器集線器
2320‧‧‧記憶體裝置
2321‧‧‧指令
2322‧‧‧資料
2324‧‧‧資料儲存裝置
2326‧‧‧無線收發器
2328‧‧‧韌體介面
2330‧‧‧I/O控制器集線器
2334‧‧‧網路控制器
2340‧‧‧舊有I/O控制器
2342‧‧‧通用序列匯流排(USB)控制器
2344‧‧‧鍵盤和滑鼠
2346‧‧‧音訊控制器
2400‧‧‧處理器
2402A-2402N‧‧‧核心
2404A-2404N‧‧‧內部快取單元
2406‧‧‧共用快取單元
2408‧‧‧圖形處理器
2410‧‧‧系統代理核心
2411‧‧‧顯示控制器
2412‧‧‧基於環形之互連單元
2414‧‧‧整合式記憶體控制器
2416‧‧‧匯流排控制器單元
2418‧‧‧嵌入式記憶體模組
2500‧‧‧圖形處理器
2502‧‧‧顯示控制器
2504‧‧‧區塊影像轉移(BLIT)引擎
2506‧‧‧視訊編解碼引擎
2510‧‧‧圖形處理引擎(GPE)
2512‧‧‧3D管線
2514‧‧‧記憶體介面
2515‧‧‧3D/媒體子系統
2516‧‧‧媒體管線
2520‧‧‧顯示裝置
2603‧‧‧命令串流器
2610‧‧‧圖形處理引擎
2614‧‧‧圖形核心陣列
2618‧‧‧統一返回緩衝器(URB)
2620‧‧‧共用功能邏輯
2621‧‧‧取樣器
2622‧‧‧數學
2623‧‧‧線程間通訊(ITC)
2625‧‧‧快取
2700‧‧‧圖形處理器
2702‧‧‧環形互連
2703‧‧‧命令串流器
2704‧‧‧管線前端
2730‧‧‧視訊品質引擎(VQE)
2733‧‧‧多格式編碼/解碼(MFX)
2734‧‧‧視訊前端
2736‧‧‧幾何管線
2737‧‧‧媒體引擎
2750A-2750N‧‧‧子核心
2752A-2752N‧‧‧執行單元
2754A-2754N‧‧‧媒體/紋理取樣器
2760A-2760N‧‧‧子核心
2762A-2762N‧‧‧執行單元
2764A-2764N‧‧‧取樣器
2770A-2770N‧‧‧共用資源
2780A-2780N‧‧‧圖形核心
2800‧‧‧線程執行邏輯
2802‧‧‧著色器處理器
2804‧‧‧線程分派器
2806‧‧‧指令快取
2808A-2808N‧‧‧執行單元
2810‧‧‧取樣器
2812‧‧‧資料快取
2814‧‧‧資料埠
2900‧‧‧圖形處理器指令格式
2910‧‧‧128位元指令格式
2912‧‧‧指令操作碼
2913‧‧‧索引欄位
2914‧‧‧指令控制欄位
2916‧‧‧執行大小欄位
2918‧‧‧目的地
2926‧‧‧存取/定址模式欄位
2930‧‧‧64位元壓縮指令格式
2940‧‧‧操作碼解碼
2942‧‧‧移動及邏輯操作碼群組
2944‧‧‧流量控制指令群組
2946‧‧‧雜項指令群組
2948‧‧‧平行數學指令群組
2950‧‧‧向量數學群組
3000‧‧‧圖形處理器
3002‧‧‧環形互連
3003‧‧‧命令串流器
3005‧‧‧頂點提取器
3007‧‧‧頂點著色器
3011‧‧‧輪廓著色器
3013‧‧‧曲面細分器
3017‧‧‧域著色器
3019‧‧‧幾何著色器
3020‧‧‧圖形管線
3023‧‧‧串流輸出單元
3029‧‧‧剪裁器
3030‧‧‧媒體管線
3031‧‧‧線程分派器
3034‧‧‧視訊前端
3037‧‧‧媒體引擎
3040‧‧‧顯示引擎
3041‧‧‧2D引擎
3043‧‧‧顯示控制器
3050‧‧‧線程執行邏輯
3051‧‧‧L1快取
3052A-3052B‧‧‧執行單元
3054‧‧‧紋理及媒體取樣器
3056‧‧‧資料埠
3058‧‧‧紋理/取樣器快取
3070‧‧‧渲染輸出管線
3073‧‧‧光柵化及深度測試元件
3075‧‧‧共用L3快取
3077‧‧‧像素操作組件
3078‧‧‧渲染快取
3079‧‧‧深度快取
3100‧‧‧圖形處理器命令格式
3102‧‧‧客戶端
3104‧‧‧命令操作碼(opcode)
3105‧‧‧子操作碼
3106‧‧‧相關資料
3108‧‧‧命令大小
3200‧‧‧資料處理系統
3210‧‧‧3D圖形應用程式
3212‧‧‧著色器指令
3214‧‧‧可執行指令
3216‧‧‧圖形物件
3220‧‧‧作業系統
3222‧‧‧圖形API
3224‧‧‧前端著色器編譯器
3226‧‧‧使用者模式圖形驅動器
3227‧‧‧後端著色器編譯器
3228‧‧‧作業系統核心模式功能
3229‧‧‧核心模式圖形驅動器
3230‧‧‧處理器
3232‧‧‧圖形處理器
3234‧‧‧通用處理器核心
3250‧‧‧系統記憶體
3300‧‧‧IP核心開發系統
3310‧‧‧軟體模擬
3312‧‧‧模擬模型
3315‧‧‧暫存器傳送層級(RTL)設計
3320‧‧‧硬體模型
3330‧‧‧設計設施
3340‧‧‧非揮發性記憶體
3350‧‧‧有線連接
3360‧‧‧無線連接
3365‧‧‧製造設施
3400‧‧‧系統單晶片積體電路
3405‧‧‧應用程式處理器
3410‧‧‧圖形處理器
3415‧‧‧影像處理器
3420‧‧‧視訊處理器
3425‧‧‧USB控制器
3430‧‧‧UART控制器
3435‧‧‧SPI/SDIO控制器
3440‧‧‧I2S/I2C控制器
3445‧‧‧顯示裝置
3450‧‧‧高解析度多媒體介面(HDMI)控制器
3455‧‧‧行動產業處理器介面(MIPI)顯示介面
3460‧‧‧快閃記憶體子系統
3465‧‧‧記憶體控制器
3470‧‧‧嵌入式安全引擎
3505‧‧‧頂點處理器
3510‧‧‧圖形處理器
3515A-3515N‧‧‧片段處理器
3520A-3520B‧‧‧記憶體管理單元(MMU)
3525A-3525B‧‧‧快取
3530A-3530B‧‧‧電路互連
3605‧‧‧核心間任務管理器
3610‧‧‧圖形處理器
3615A-3615N‧‧‧著色器核心
3618‧‧‧拼貼單元
為了能夠詳細理解本發明的特徵,可透過參考實施例來對本發明進行更具體的描述,在附圖中示出其中一些實施例。然而,應注意的是,附圖僅示出典型的實施例,因此不應被視為限制所有實施例的範圍。
圖1是示出被配置成實現本文所述之實施例的一或多個態樣的計算機系統的方塊圖;圖2A-2D示出依據實施例之平行處理器組件;圖3A-3B是依據實施例之圖形多處理器的方塊圖;圖4A-4F示出其中複數個GPU通訊地耦接至複數個多核心處理器的示例性結構;圖5示出依據實施例之圖形處理管線;圖6示出依據實施例之機器學習軟體堆疊;圖7示出依據實施例之高度平行通用圖形處 理單元;圖8示出依據實施例之多GPU計算系統;圖9A-9B示出示例性深度神經網路的層;圖10示出示例性遞迴神經網路;圖11示出深度神經網路的訓練和部署;圖12是示出分散式學習的方塊圖;圖13示出適用於使用訓練好的模型來執行推論的示例性推論系統單晶片(SOC);圖14示出依據實施例之動態精度浮點單元的組件;圖15提供依據實施例之關於動態精度浮點單元的額外細節;圖16示出依據實施例之用於動態精度處理系統的線程分配;圖17示出依據實施例之以低於要求的精度執行數值運算的邏輯;圖18示出依據實施例之用於SIMD單元的迴圈向量化;圖19示出依據實施例之線程處理系統;圖20示出依據實施例之分配線程用於計算的邏輯;圖21示出可使用由本文所述之實施例所提供的計算邏輯來處理的深度神經網路;圖22是依據實施例之邏輯的流程圖,該邏輯 用以防止在機器學習執行低精度運算時的錯誤或顯著的精度損失;圖23是依據實施例之處理系統的方塊圖;圖24是具有一或多個處理器核心、整合式記憶體控制器、及整合式圖形處理器之處理器的實施例的方塊圖;圖25是圖形處理器的方塊圖,該圖形處理器可以是分離式圖形處理單元、或者可以是與複數個處理核心整合的圖形處理器;圖26是依據一些實施例之圖形處理器的圖形處理引擎的方塊圖;圖27是由另外的實施例提供的圖形處理器的方塊圖;圖28示出線程執行邏輯,其包括在一些實施例中採用的處理元件的陣列;圖29是示出依據一些實施例之圖形處理器指令格式的方塊圖;圖30是依據另一實施例之圖形處理器的方塊圖;圖31A-31B示出依據一些實施例之圖形處理器命令格式和命令序列;圖32示出依據一些實施例之用於資料處理系統的示例性圖形軟體結構;圖33是示出依據實施例之IP核心開發系統的 方塊圖;圖34是示出依據實施例之示例性系統單晶片積體電路的方塊圖;圖35是示出依據實施例之另外的圖形處理器的方塊圖;以及圖36是示出依據實施例之系統單晶片積體電路之另外的示例性圖形處理器的方塊圖。
【發明內容】及【實施方式】
在一些實施例中,圖形處理單元(GPU)通訊地耦接至主機(host)/處理器核心,以加速圖形運算、機器學習運算、型樣分析(pattern analysis)運算、及各種通用GPU(GPGPU)功能。GPU可以透過匯流排或另一互連(例如,諸如PCIe或NVLink的高速互連)通訊地耦接至主機處理器/核心。在其他實施例中,GPU可以與核心整合在相同的封裝或晶片上,並且透過內部處理器匯流排/互連(即,封裝或晶片的內部)通訊地耦接至核心。不管GPU連接的方式如何,處理器核心都可以工作描述符中所包含的命令/指令序列的形式,將工作分配給GPU。然後GPU使用專用電路/邏輯來有效地處理這些命令/指令。
在下面的描述中,闡述了許多具體細節以提供更透徹的理解。然而,對於本領域之技術人員而言將顯而易見的是,可在沒有這些具體細節中的一或多個的情況下實施本文所述的實施例。在其他實例中,未描述公知的 特徵以避免模糊本實施例的細節。
系統概要
圖1是示出被配置成實現本文所述之實施例的一或多個態樣的計算系統100的方塊圖。計算系統100包括處理子系統101,其具有一或多個處理器102及系統記憶體104,透過可包括記憶體集線器105的互連路徑進行通訊。記憶體集線器105可以是晶片組組件內的獨立組件,或者可以整合在一或多個處理器102內。記憶體集線器105透過通訊鏈路106與I/O子系統111耦接。I/O子系統111包括I/O集線器107,其可以使計算系統100能夠接收來自一或多個輸入裝置108的輸入。另外,I/O集線器107可以使可被包括在一或多個處理器102中的顯示控制器向一或多個顯示裝置110A提供輸出。在一個實施例中,與I/O集線器107耦接的一或多個顯示裝置110A可包括本地、內部或嵌入式顯示裝置。
在一個實施例中,處理子系統101包括透過匯流排或其他通訊鏈路113耦接至記憶體集線器105的一或多個平行處理器112。通訊鏈路113可以是許多基於標準的通訊鏈路技術或協定的其中一者,諸如但不限於PCI Express,或者可以是供應商特定的通訊介面或通訊結構(fabric)。在一個實施例中,一或多個平行處理器112形成計算上集中的平行或向量處理系統,其包括大量處理核心及/或處理叢集(cluster),諸如許多整合式核心(MIC)處理 器。在一個實施例中,一或多個平行處理器112形成一圖形處理子系統,其可輸出像素給透過I/O集線器107耦接的一或多個顯示裝置110A之其中一者。一或多個平行處理器112還可包括顯示控制器及顯示介面(未示出),使得能夠直接連接到一或多個顯示裝置110B。
在I/O子系統111內,系統儲存單元114可連接到I/O集線器107,以為計算系統100提供儲存機制。I/O開關116可被用來提供介面機制,以致能I/O集線器107和其他組件之間的連接,例如,可被整合進平台的網路配接器118及/或無線網路配接器119、及可透過一或多個附加(add-in)裝置120而添加的各種其他裝置。網路配接器118可以是乙太網路(Ethernet)配接器或另一有線的網路配接器。無線網路配接器119可包括Wi-Fi、藍牙、近場通訊(NFC)、或包括一或多個無線電(wireless radio)之其他網路裝置的其中一或多者。
計算系統100可包括未明確示出的其他組件,包括USB或其他埠連接、光學儲存驅動器、視訊擷取裝置等等,也可連接到I/O集線器107。圖1中互連各種組件的通訊路徑可使用任何合適的協定來實現,諸如基於PCI(週邊組件互連)的協定(例如,PCI-Express)、或者任何其他匯流排或點對點通訊介面及/或協定,諸如NV-Link高速互連、或本領域已知的互連協定。
在一個實施例中,一或多個平行處理器112結合針對圖形及視訊處理而最佳化的電路,包括例如視訊 輸出電路,並且構成圖形處理單元(GPU)。在另一實施例中,一或多個平行處理器112結合針對通用處理而最佳化的電路,同時保留底層的計算結構,本文有更詳細的描述。在又另一實施例中,計算系統100的組件可與單一積體電路上的一或多個其他系統元件整合在一起。例如,可將一或多個平行處理器112、記憶體集線器105、處理器102、及I/O集線器107整合進系統單晶片(SoC)積體電路。替代地,可將計算系統100的組件整合進單一封裝中,以形成系統級封裝(SIP)配置。在一個實施例中,可將計算系統100的至少一部分的組件整合進多晶片模組(MCM),其可以與其他多晶片模組互連成一模組化計算系統。
應當理解的是,本文所示的計算系統100是示例性的,並且變形和修改是可能的。可視需要修改連接拓樸,包括橋接器的數量和配置、處理器102的數量、以及平行處理器112的數量。例如,在一些實施例中,系統記憶體104不是透過橋接器而是直接連接到處理器102,而其他的裝置則是透過記憶體集線器105及處理器102與系統記憶體104通訊。在其他替代的拓樸中,平行處理器112連接到I/O集線器107或者直接連接到一或多個處理器102之其中一者,而不是連接到記憶體集線器105。在其他實施例中,可將I/O集線器107和記憶體集線器105整合進單一晶片中。一些實施例可包括透過多個插座(socket)附接的兩組或更多組的處理器102,其可以與平行處理器112的兩個或更多個實例耦接。
本文所示的特定組件的其中一些是可選的,並且可能不包括在計算系統100的所有實現中。舉例來說,可以支持許多插卡(add-in card)或週邊,或可以省去一些組件。此外,一些結構可能使用不同的術語來描述類似於圖1中所示的那些組件的組件。舉例來說,在一些結構中,記憶體集線器105可被稱為北橋,而I/O集線器107可被稱為南橋。
圖2A示出依據實施例之平行處理器200。平行處理器200的各種組件可使用一或多個積體電路裝置,諸如可編程處理器、特定應用積體電路(ASIC)、或現場可編程閘陣列(FPGA)來實現。依據實施例,所示出的平行處理器200是圖1中所示之一或多個平行處理器112的變形。
在一個實施例中,平行處理器200包括平行處理單元202。平行處理單元包括I/O單元204,其致能與包括平行處理單元202的其他實例的其他裝置進行通訊。可將I/O單元204直接連接到其他裝置。在一個實施例中,I/O單元204透過使用集線器或開關介面,諸如記憶體集線器105,與其他裝置連接。記憶體集線器105和I/O單元204之間的連接形成通訊鏈路113。在平行處理單元202內,I/O單元204與主機介面206及記憶體交叉(memory crossbar)216連接,其中主機介面206接收指向執行處理操作的命令,而記憶體交叉216接收指向執行記憶體操作的命令。
當主機介面206透過I/O單元204接收命令緩衝器時,主機介面206可以將用以執行那些命令的工作操 作指向前端208。在一個實施例中,前端208與排程器210耦接,該排程器210被配置成將命令或其他工作項目分發到處理叢集陣列212。在一個實施例中,排程器210確保處理叢集陣列212被適當地配置,並且在任務被分發到處理叢集陣列212的處理叢集之前處於有效狀態。在一個實施例中,排程器210透過在微控制器上執行的韌體邏輯來實現。微控制器實現的排程器210可被配置成以粗粒度和精細粒度執行複雜的排程和工作分發操作,其致能在處理陣列212上執行的線程的快速先佔(preemption)和上下文切換(context switching)。在一個實施例中,主機軟體可透過多個圖形處理門鈴之其中一者來查驗在處理陣列212上進行排程的工作量。然後可以透過排程器微控制器內的排程器210邏輯,將工作量自動地分配在處理陣列212中。
處理叢集陣列212可包括多達“N”個處理叢集(例如,叢集214A、叢集214B、至叢集214N)。處理叢集陣列212的每個叢集214A-214N可以執行大量的並行線程。排程器210可使用各種排程及/或工作分配演算法,將工作分配給處理叢集陣列212的叢集214A-214N,該些演算法可依據每種類型的程式或計算所產生的工作量而不同。排程可以由排程器210動態地處理,或者可在編譯被配置為由處理叢集陣列212執行的程式邏輯的期間,由編譯器邏輯部分地協助。在一個實施例中,可將處理叢集陣列212的不同叢集214A-214N分配用於處理不同類型的程式或者用於執行不同類型的計算。
處理叢集陣列212可被配置成執行各種類型的平行處理操作。在一個實施例中,處理叢集陣列212被配置成執行通用平行計算操作。例如,處理叢集陣列212可包括邏輯,用以執行處理任務,包括過濾視訊及/或音訊資料、執行包括物理操作的模型化操作,以及執行資料轉換。
在一個實施例中,處理叢集陣列212被配置成執行平行圖形處理操作。在平行處理器200被配置成執行圖形處理操作的實施例中,處理叢集陣列212可包括用以支援執行此種圖形處理操作的額外的邏輯,包括但不限於用以執行紋理操作的紋理取樣邏輯、以及曲面細分邏輯和其他頂點處理邏輯。此外,處理叢集陣列212可被配置成執行圖形處理相關的著色器程式,諸如,但不限於頂點著色器、曲面細分著色器、幾何著色器、及像素著色器。平行處理單元202可透過I/O單元204從系統記憶體傳送資料用於處理。在處理期間,被傳送的資料可在處理期間被儲存到晶片上記憶體(例如,平行處理器記憶體222),然後被寫回到系統記憶體。
在一個實施例中,當平行處理單元202被用來執行圖形處理時,排程器210可被配置成將處理工作量分成大約相等大小的任務,以更佳地使圖形處理操作能夠分配至處理叢集陣列212的多個叢集214A-214N。在一些實施例中,處理叢集陣列212的部分可被配置成執行不同類型的處理。例如,第一部分可被配置成執行頂點著色和 拓樸產生,第二部分可被配置成執行曲面細分和幾何著色,以及第三部分可被配置成執行像素著色或其他螢幕空間操作,以產生用於顯示的呈現影像。由叢集214A-214N的其中一或多者所產生的中間資料可被儲存在緩衝器中,以允許中間資料在叢集214A-214N之間傳輸以用於進一步處理。
在操作期間,處理叢集陣列212可以透過排程器210接收待執行的處理任務,該排程器210從前端208接收定義處理任務的命令。針對圖形處理操作,處理任務可包括待處理的資料的索引,例如,表面(修補(patch))資料、基元資料、頂點資料、及/或像素資料,以及狀態參數和定義資料將如何被處理的命令(例如,將執行什麼程式)。排程器210可被配置成提取對應於任務的索引,或者可從前端208接收索引。前端208可被配置成確保在啟動由輸入命令緩衝器(例如,批次緩衝器(batch-buffer)、推入緩衝器(push buffer)等)指定的工作量之前,處理叢集陣列212被配置為有效狀態。
平行處理單元202的一或多個實例的各者可與平行處理器記憶體222耦接。可透過記憶體交叉216來存取平行處理器記憶體222,該記憶體交叉216可接收來自處理叢集陣列212以及I/O單元204的記憶體請求。記憶體交叉216可透過記憶體介面218存取平行處理器記憶體222。記憶體介面218可包括多個分割(partition)單元(例如,分割單元220A、分割單元220B、至分割單元220N),每個分 割單元可以耦接至平行處理器記憶體222的一部分(例如,記憶體單元)。在一個實施方式中,分割單元220A-220N的數量被配置成等於記憶體單元的數量,使得第一分割單元220A具有對應的第一記憶體單元224A、第二分割單元220B具有對應的記憶體單元224B、而第N個分割單元220N具有對應的第N個記憶體單元224N。在其他實施例中,分割單元220A-220N的數量可能不等於記憶體裝置的數量。
在各種實施例中,記憶體單元224A-224N可包括各種不同類型的記憶體裝置,包括動態隨機存取記憶體(DRAM)或圖形隨機存取記憶體,諸如同步圖形隨機存取記憶體(SGRAM),包括圖形雙倍資料速率(GDDR)記憶體。在一個實施例中,記憶體單元224A-224N亦可包括3D堆疊式記憶體,包括但不限於高頻寬記憶體(HBM)。本領域之技術人士將理解到,記憶體單元224A-224N的具體實現可以有所變化,並且可選自各種傳統的設計之一。諸如幀緩衝器或紋理圖等的渲染目標可被儲存在記憶體單元224A至224N,允許分割單元220A-220N平行地寫入每個渲染目標的部分以有效地使用平行處理器記憶體222的可用頻寬。在一些實施例中,為了有利於共同利用系統記憶體與本地快取記憶體的統一記憶體設計,可排除平行處理器記憶體222的本地實例。
在一個實施例中,處理叢集陣列212之叢集214A-214N中的任一者可處理將被寫入到平行處理器記憶體222內的任何記憶體單元224A-224N的資料。記憶體交 叉216可被配置成將每個叢集214A-214N的輸出傳送到任何分割單元220A-220N或者傳送到另一叢集214A-214N,其可對該輸出執行額外的處理操作。每個叢集214A-214N可透過記憶體交叉216與記憶體介面218通訊,以讀取自或寫入至各種外部記憶體裝置。在一個實施例中,記憶體交叉216具有至記憶體介面218的連接以與I/O單元204通訊,以及具有至平行處理器記憶體222之本地實例的連接,使得不同處理叢集214A-214N內的處理單元能夠與系統記憶體或不在平行處理單元202本地的其他記憶體通訊。在一個實施例中,記憶體交叉216可使用虛擬通道來分離叢集214A-214N和分割單元220A-220N之間的流量流(traffic streams)。
雖然在平行處理器200內示出了平行處理單元202的單一實例,但可以包括平行處理單元202的任意數量的實例。例如,平行處理單元202的多個實例可被設置在單一插卡上,或者可互連多個插卡。平行處理單元202的不同實例可被配置成即使不同實例具有不同數量的處理核心、不同數量的本地平行處理器記憶體、及/或其他配置差異,仍可進行交互操作(inter-operate)。例如並且在一個實施例中,平行處理單元202的一些實例可包括相對於其他實例更高精度的浮點單元。併入平行處理單元202之一或多個實例或者平行處理器200的系統可以各種配置和形狀因素來實現,包括但不限於桌上型、膝上型、或手持式個人電腦、伺服器、工作站、遊戲主控台、及/或嵌入 式系統。
圖2B是依據實施例之分割單元220的方塊圖。在一個實施例中,分割單元220是圖2A之分割單元220A-220N之其中一者的實例。如所示,分割單元220包括L2快取221、幀緩衝器介面225、及ROP 226(光柵(raster)操作單元)。L2快取221是讀/寫快取,其被配置成執行從記憶體交叉216和ROP 226接收到的加載及儲存操作。讀取失誤(miss)和緊急寫回請求是由L2快取221輸出到幀緩衝器介面225進行處理。更新也可透過幀緩衝器介面225被發送到幀緩衝器進行處理。在一個實施例中,幀緩衝器介面225透過介面與平行處理器記憶體中的記憶體單元之其中一者,諸如圖2A的記憶體單元224A-224N(例如,在平行處理器記憶體222內),連接。
在圖形應用中,ROP 226是執行諸如模板、z測試、混色等的光柵操作的處理單元。ROP 226隨後輸出被儲存在圖形記憶體中的經處理的圖形資料。在一些實施例中,ROP 226包括壓縮邏輯,用以壓縮被寫入到記憶體的深度或色彩資料,以及解壓縮從記憶體讀取的深度或色彩資料。壓縮邏輯可以是利用多種壓縮演算法中的一或多種的無失真壓縮邏輯。由ROP 226執行的壓縮類型可以依據待壓縮資料的統計特性而變化。例如,在一個實施例中,在每個圖磚的基礎上,對深度和色彩資料執行色差壓縮(delta color compression)。
在一些實施例中,ROP 226被包括在每個處 理叢集(例如,圖2A的叢集214A-214N)內,而不是包括在分割單元220內。在這種實施例中,透過記憶體交叉216傳輸像素資料的讀取和寫入請求,而不是像素片段資料。可將經處理的圖形資料顯示在顯示裝置上,諸如圖1的一或多個顯示裝置110之其中一者,由處理器102路由用於進一步處理,或者由圖2A的平行處理器200內的處理實體的其中一者路由用於進一步處理。
圖2C是依據實施例之在平行處理單元內的處理叢集214的方塊圖。在一個實施例中,該處理叢集是圖2A的處理叢集214A-214N之其中一者的實例。處理叢集214可被配置成平行執行許多線程,其中術語「線程」是指在特定的一組輸入資料上執行的特定的程式的實例。在一些實施例中,單指令、多資料(SIMD)指令發佈(issue)技術被用來支援大量線程的平行執行而不需提供多個獨立的指令單元。在其他實施例中,單指令、多線程(SIMT)技術被用來支援大量大致上同步的線程的平行執行,其使用被配置成向每個處理叢集內的一組處理引擎發佈指令的共通指令(common instruction)單元。不同於所有處理引擎通常執行相同指令的SIMD執行體制(regime),SIMT執行允許不同的線程更容易地遵循給定線程程式中不同的執行路徑。本領域之技術人士將理解到,SIMD處理體制代表SIMT處理體制的一功能子集。
處理叢集214的操作可經由管線管理器232來控制,管線管理器232將處理任務分配給SIMT平行處理 器。管線管理器232從圖2A的排程器210接收指令,並且經由圖形多處理器234及/或紋理單元236來管理那些指令的執行。所示的圖形多處理器234是SIMT平行處理器的一示例性實例。然而,處理叢集214內可包括不同架構的各種類型的SIMT平行處理器。處理叢集214內可包括圖形多處理器234的一或多個實例。圖形多處理器234可處理資料,並且資料交叉240可被用來將經處理的資料分發給多個可能的目的地之一,包括其他的著色(shader)單元。管線管理器232可藉由指定要透過資料交叉240分發的經處理的資料的目的地來促進經處理的資料的分發。
處理叢集214內的每個圖形多處理器234可包括相同的一組功能執行邏輯(例如,算術邏輯單元、加載-儲存單元等)。可以管線式方式來配置功能執行邏輯,在該管線式方式中,在完成先前的指令之前可以發佈新的指令。功能執行邏輯支援各種操作,包括整數及浮點運算、比較運算、布林(Boolean)運算、位元位移、以及各種代數函數計算。在一個實施例中,可利用相同的功能單元硬體來執行不同的運算,並且可存在功能單元的任意組合。
發送到處理叢集214的指令構成線程。在該組平行處理引擎上執行的一組線程是一線程組(thread group)。線程組對不同的輸入資料執行相同的程式。線程組內的每個線程可被分配給圖形多處理器234內的不同處理引擎。線程組可包括比圖形多處理器234內的處理引擎數量更少的線程。當線程組包括比處理引擎數量更少的線 程時,在處理該線程組的週期期間,處理引擎之其中一或多者可以是閒置的。線程組還可包括比圖形多處理器234內的處理引擎數量更多的線程。當線程組包括比圖形多處理器234內的處理引擎數量更多的線程時,可在連續的時脈週期執行處理。在一個實施例中,多個線程組可以同時在圖形多處理器234上執行。
在一個實施例中,圖形多處理器234包括內部快取記憶體,用以執行加載和儲存操作。在一個實施例中,圖形多處理器234可放棄(forego)內部快取,並使用處理叢集214內的快取記憶體(例如,L1快取248)。每個圖形多處理器234還可以存取在所有處理叢集214之間共用並且可被用來在線程之間傳輸資料的分割單元(例如,圖2A的分割單元220A-220N)內的L2快取。圖形多處理器234也可存取晶片外(off-chip)全域記憶體,其可包括本地平行處理器記憶體及/或系統記憶體中之一或多者。平行處理單元202外部的任何記憶體可被用作全域記憶體。處理叢集214包括圖形多處理器234之多個實例的實施例可共享共同的指令和資料,其可被儲存在L1快取248中。
每個處理叢集214可包括MMU 245(記憶體管理單元),其被配置成將虛擬位址映射到實體位址。在其他實施例中,MMU 245的一或多個實例可常駐在圖2A的記憶體介面218內。MMU 245包括用於將虛擬位址映射到圖磚之實體位址的一組分頁表項目(page table entries,PTEs)、以及可選地一快取線索引。MMU 245可包括位址 轉譯後備緩衝區(translation lookaside buffer,TLB)或者可常駐在圖形多處理器234或L1快取或處理叢集214內的快取。處理實體位址來分發表面資料存取區域性(locality),以允許在分割單元之間的高效請求交錯。快取線索引可被用來確定對快取線的請求是命中或是未命中。
在圖形及計算應用中,可配置處理叢集214使得每個圖形多處理器234耦接到紋理單元236以執行紋理映射操作,例如,確定紋理樣本位置、讀取紋理資料、及過濾紋理資料。紋理資料是讀取自內部紋理L1快取(未示出)或者在一些實施例中是讀取自圖形多處理器234內的L1快取,並且依據需要提取自L2快取、本地平行處理器記憶體、或系統記憶體。每個圖形多處理器234將經處理的任務輸出到資料交叉240,以將經處理的任務提供給另一處理叢集214用於進一步處理,或者透過記憶體交叉216將經處理的任務儲存在L2快取、本地平行處理器記憶體、或系統記憶體中。preROP 242(預光柵(pre-raster)操作單元)被配置成從圖形多處理器234接收資料、將資料引導至ROP單元,該ROP單元可與可與如本文所述之分割單元(例如,圖2A的分割單元220A-220N)位在一起。preROP 242單元可執行色彩混色的最佳化、組織像素色彩資料、以及執行位址轉譯。
應當理解的是,本文所示的核心結構是示例性的,並且變形和修改是可能的。處理叢集214內可以包括任意數量的處理單元,例如,圖形多處理器234、紋理 單元236、preROP 242等等。此外,雖然僅示出一個處理叢集214,但如本文所述之平行處理單元可包括處理叢集214的任意數量的實例。在一個實施例中,每個處理叢集214可被配置成使用單獨的且不同的處理單元、L1快取等來獨立於其他的處理叢集214進行操作。
圖2D示出依據一個實施例之圖形多處理器234。在此實施例中,圖形多處理器234與處理叢集214的管線管理器232耦接。圖形多處理器234具有執行管線,包括但不限於指令快取252、指令單元254、位址映射單元256、暫存器檔案258、一或多個通用圖形處理單元(GPGPU)核心262、以及一或多個加載/儲存單元266。GPGPU核心262以及加載/儲存單元266透過記憶體及快取互連268與快取記憶體272以及共用記憶體270耦接。
在一個實施例中,指令快取252從管線管理器232接收要執行的指令流。該些指令被快取儲存在指令快取252中,並且由指令單元254分派執行。指令單元254可將指令分派為線程組(例如,執行包(warp)),線程組的每個線程被分配給GPGPU核心262內的不同執行單元。指令可藉由在統一位址空間內指定位址來存取本地、共用、或全域位址空間中的任一者。位址映射單元256可被用來將統一位址空間中的位址轉譯成可由加載/儲存單元266存取的不同記憶體位址。
暫存器檔案258提供一組暫存器給圖形多處理器234的功能單元。暫存器檔案258為連接至圖形多處理 器234的功能單元(例如,GPGPU核心262、加載/儲存單元266)的資料路徑的運算元提供暫時的儲存。在一個實施例中,暫存器檔案258在每個功能單元之間被劃分,使得每個功能單元被分配有暫存器檔案258的專用部分。在一個實施例中,暫存器檔案258在由圖形多處理器234執行的不同執行包之間被劃分。
每個GPGPU核心262可包括被用來執行圖形多處理器234之指令的浮點單元(FPU)及/或整數算術邏輯單元(ALU)。依據實施例,GPGPU核心262可以在結構上相似或者可以在結構上不同。例如且在一個實施例中,GPGPU核心262的第一部分包括單精度FPU及整數ALU,而GPGPU核心的第二部分包括雙精度FPU。在一個實施例中,FPU可實現用於浮點運算的IEEE 754-2008標準或者啟用可變精度浮點運算。圖形多處理器234可另外包括一或多個固定功能或特殊功能單元以執行特定功能,諸如複製矩形或像素混色操作。在一個實施例中,GPGPU核心中的一或多個還可包括固定或特殊功能邏輯。
在一個實施例中,GPGPU核心262包括能夠對多組資料執行單指令的SIMD邏輯。在一個實施例中,GPGPU核心262可實體上執行SIMD4、SIMD8、及SIMD16指令,並且邏輯上執行SIMD1、SIMD2、及SIMD32指令。用於GPGPU核心的SIMD指令可由著色編譯器在編譯時產生,或者當執行針對單程式多資料(SPMD)或SIMT結構所編寫和編譯的程式時自動地產生。可透過單一的SIMD指 令執行被配置用於SIMT執行模型之程式的多個線程。例如並且在一個實施例中,可透過單一的SIMD8邏輯單元平行地執行八個SIMT線程,該八個SIMT線程執行相同或相似的操作。
記憶體及快取互連268是一互連網路,其將圖形多處理器234的每個功能單元連接到暫存器檔案258及連接到共用記憶體270。在一個實施例中,記憶體及快取互連268是一交叉互連(crossbar interconnect),其允許加載/儲存單元266在共用記憶體270和暫存器檔案258之間實現加載和儲存操作。暫存器檔案258可以與GPGPU核心262相同的頻率操作,因此GPGPU核心262和暫存器檔案258之間的資料傳輸延遲非常低。共用記憶體270可被用來啟用在圖形多處理器234內的功能單元上執行的線程之間的通訊。快取記憶體272可被用作資料快取,例如,以快取儲存在功能單元和紋理單元236之間通訊的紋理資料。共用記憶體270還可被用作管理快取的程式。除了自動快取儲存已被儲存在快取記憶體272內的資料之外,在GPGPU核心262上執行的線程還可以程式設計方式將資料儲存在共用記憶體內。
圖3A-3B示出依據實施例之另外的圖形多處理器。所示圖形多處理器325、350是圖2C的圖形多處理器234的變形。所示圖形多處理器325、350可被配置為能夠同時執行大量執行線程的串流多處理器(streaming multiprocessor,SM)。
圖3A示出依據另外的實施例之圖形多處理器325。圖形多處理器325包括關於圖2D之圖形多處理器234的執行資源單元的多個額外的實例。例如,圖形多處理器325可包括指令單元332A-332B、暫存器檔案334A-334B、及紋理單元344A-344B的多個實例。圖形多處理器325還包括多組圖形或計算執行單元(例如,GPGPU核心336A-336B、GPGPU核心337A-337B、GPGPU核心338A-338B)及多組加載/儲存單元340A-340B。在一個實施例中,執行資源單元具有共通指令快取330、紋理及/或資料快取記憶體342、以及共用記憶體346。
多種組件可以透過互連結構(interconnect fabric)327通訊。在一個實施例中,互連結構327包括一或多個交叉開關(crossbar switch)以致能圖形多處理器325的各種組件之間的通訊。在一個實施例中,互連結構327是單獨的高速網路結構層,其上堆疊了圖形多處理器325的每個組件。圖形多處理器325的組件透過互連結構327與遠端組件通訊。例如,GPGPU核心336A-336B、337A-337B、及338A-338B之各者可透過互連結構327與共用記憶體346通訊。互連結構327可仲裁圖形多處理器325內的通訊以確保組件之間的公平頻寬分配。
圖3B示出依據另外的實施例之圖形多處理器350。圖形處理器包括多組執行資源356A-356D,其中各組執行資源包括多個指令單元、暫存器檔案、GPGPU核心、及加載儲存單元,如圖2D及圖3A中所示。執行資源 356A-356D可與紋理單元360A-360D合作用於紋理操作,同時共享指令快取354及共用記憶體362。在一個實施例中,執行資源356A-356D可共享指令快取354及共用記憶體362,以及紋理及/或資料快取記憶體358A-358B的多個實例。各種組件可透過類似圖3A之互連結構327的互連結構352通訊。
本領域之技術人士將理解到,在圖1、2A-2D及3A-3B中描述的結構是描述性的而非限制本實施例的範圍。因此,本文所描述的技術可以在任何適當配置的處理單元上實現,包括但不限於,一或多個行動應用處理器、包括多核心中央處理單元(CPU)的一或多個桌上型或伺服器CPU、一或多個平行處理單元,諸如圖2A的平行處理單元202,以及一或多個圖形處理器或專用處理單元,而不背離本文所述之實施例的範圍。
在一些實施例中,如本文所述的平行處理器或GPGPU通訊地耦接至主機/處理器核心以加速圖形運算、機器學習運算、型樣分析運算、及各種通用GPU(GPGPU)功能。GPU可以透過匯流排或其他互連(例如,諸如PCIe或NVLink的高速互連)通訊地耦接至主機處理器/核心。在其他實施例中,GPU可以與核心整合在相同的封裝或晶片上,並且透過內部處理器匯流排/互連(即,封裝或晶片的內部)通訊地耦接至核心。不管GPU連接的方式如何,處理器核心都可以工作描述符中所包含的命令/指令序列的形式,將工作分配給GPU。然後GPU使用 專用電路/邏輯來有效地處理這些命令/指令。
GPU至主處理器(Host Processor)互連的技術
圖4A示出其中複數個GPU 410-413透過高速鏈路440A-440D(例如,匯流排、點對點互連等等)通訊地耦接至複數個多核心處理器405-406的示例性結構。在一個實施例中,高速鏈路440A-440D依據實施狀況支援4GB/s、30GB/s、80GB/s或更高的通訊通量。可使用各種互連協定,包括但不限於PCIe 4.0或5.0以及NVLink 2.0。然而,本發明的基本原理不限於任何特定的通訊協定或通量。
此外,在一個實施例中,GPU 410-413中的兩個或更多個透過高速鏈路442A-442B互連,其可使用與用於高速鏈路440A-440D之協定/鏈路相同或不同的協定/鏈路來實現。類似地,多核心處理器405-406中的兩個或更多個可透過高速鏈路443連接,高速鏈路443可以是以20GB/s、30GB/s、120GB/s或更高速率運行的對稱多處理器(SMP)匯流排。替代地,可使用相同的協定/鏈路(例如,透過常見的互連結構)來完成圖4A中所示的各種系統組件之間的所有通訊。然而,如上所述,本發明的基本原理不限於任何特定類型的互連技術。
在一個實施例中,每個多核心處理器405-406分別透過記憶體互連430A-430B通訊地耦接至處理器記憶體401-402,並且每個GPU 410-413分別透過GPU記憶體 互連450A-450D通訊地耦接至GPU記憶體420-423。記憶體互連430A-430B及450A-450D可利用相同或不同的記憶體存取技術。透過舉例而非限制,處理器記憶體401-402及GPU記憶體420-423可以是揮發性記憶體,諸如動態隨機存取記憶體(DRAM)(包括堆疊式DRAM)、圖形DDR SDRAM(GDDR)(例如,GDDR5、GDDR6)、或高頻寬記憶體(HBM),及/或可以是非揮發性記憶體,諸如3D XPoint或奈米隨機記憶體(Nano-Ram)。在一個實施例中,記憶體的一些部分可以是揮發性記憶體,而另一部分可以是非揮發性記憶體(例如,使用二階記憶體(2LM)階層)。
如下所述,雖然各種處理器405-406及GPU 410-413可以分別實體地耦接至特定的記憶體401-402、420-423,但也可實現統一的記憶體結構,其中相同的虛擬系統位址空間(也稱為「有效位址」空間)分佈在所有各種實體記憶體中。例如,處理器記憶體401-402之各者可包含64GB的系統記憶體位址空間,以及GPU記憶體420-423之各者可包含32GB的系統記憶體位址空間(在此範例中導致總共256GB的可定址記憶體)。
圖4B示出依據一個實施例之多核心處理器407及圖形加速模組446之間的互連的額外細節。圖形加速模組446可包括一或多個GPU晶片,其整合在透過高速鏈路440耦接到處理器407的線路卡上。替代地,圖形加速模組446可以與處理器407整合在相同的封裝或晶片上。
所示的處理器407包括複數個核心460A- 460D,每個核心具有轉譯後備緩衝區461A-461D及一或多個快取462A-462D。核心可包括用於執行指令和處理資料的各種其他組件,為了避免模糊本發明的基本原理而未示出(例如,指令提取單元、分支預測單元、解碼器、執行單元、重排序緩衝器等)。快取462A-462D可包含第1階(L1)及第2階(L2)快取。此外,一或多個共用快取456可被包括在快取階層中,並且由多組核心460A-460D共用。例如,處理器407的一個實施例包括24個核心,每個核心具有其自己的L1快取、12個共用L2快取、以及12個共用L3快取。在此實施例中,L2及L3快取的其中一者由兩個相鄰核心共用。處理器407及圖形加速器積體模組446與系統記憶體441連接,系統記憶體441可包括處理器記憶體401-402。
透過在一致性匯流排464上的核心間通訊來保持儲存在各種快取462A-462D、456及系統記憶體441中的資料和指令的一致性。例如,每個快取可具有與其相關聯的快取一致性邏輯/電路,以回應偵測到的對特定快取線的讀取或寫入而在一致性匯流排464上進行通訊。在一個實施方式中,在一致性匯流排464上實現快取監視協定(snooping protocol)以監視快取存取。快取監視/一致性技術已為本領域之技術人士所完全理解,為了避免模糊本發明的基本原理,此處不再詳細描述。
在一個實施例中,代理(proxy)電路425將圖形加速模組446通訊地耦接至一致性匯流排464,允許圖形 加速模組446作為核心的同級(peer)參與快取一致性協定。特別是,介面435提供透過高速鏈路440(例如,PCIe匯流排、NVLink等)到代理電路425的連接,且介面437將圖形加速模組446連接到高速鏈路440。
在一個實施方式中,加速器整合電路436代表圖形加速模組446的複數個圖形處理引擎431、432、N提供快取管理、記憶體存取、上下文管理、及中斷管理服務。圖形處理引擎431、432、N之各者可包括單獨的圖形處理單元(GPU)。替代地,圖形處理引擎431、432、N可包括在GPU內的不同類型的圖形處理引擎,諸如圖形執行單元、媒體處理引擎(例如,視訊編碼器/解碼器)、取樣器、及區塊影像轉移(blit)引擎。換句話說,圖形加速模組可以是具有複數個圖形處理引擎431-432、N的GPU或者圖形處理引擎431-432、N可以是整合在共通封裝、線路卡或晶片上的個別GPU。
在一個實施例中,加速器整合電路436包括記憶體管理單元(MMU)439,用於執行各種記憶體管理功能,諸如用於存取系統記憶體441的虛擬至實體記憶體轉譯(也被稱為有效至真實記憶體轉譯)以及記憶體存取協定。MMU 439亦可包括轉譯後備緩衝區(TLB)(未示出)用於快取虛擬/有效至實體/真實位址轉譯。在一個實施方式中,快取438儲存命令何資料以供圖形處理引擎431-432、N進行高效存取。在一個實施例中,儲存在快取438和圖形記憶體433-434、M中的資料與核心快取462A-462D、456 和系統記憶體411保持一致。如上所述,這可透過代表快取438及記憶體433-434、M參與快取一致性機制的代理電路425來完成(例如,發送關於處理器快取462A-462D、456上的快取線的修改/存取的更新至快取438,並且從快取438接收更新)。
一組暫存器445儲存由圖形處理引擎431-432、N執行的線程的上下文資料,並且上下文管理電路448管理該線程上下文。例如,上下文管理電路448可執行保存(save)和恢復(restore)操作,以在上下文切換期間保存和恢復各種線程的上下文(例如,其中保存第一線程以及儲存第二線程,從而該第二線程可被圖形處理引擎執行)。例如,在上下文切換時,上下文管理電路448可將當前的暫存器值儲存到(例如,由上下文指標所標識的)記憶體中的指定區域。然後當返回上下文時,其可恢復暫存器值。在一個實施例中,中斷管理電路447接收並且處理從系統裝置接收的中斷。
在一個實施方式中,由MMU 439將來自圖形處理引擎431的虛擬/有效位址轉譯成在系統記憶體411中的真實/實體位址。加速器整合電路436的一個實施例支援多個(例如,4、8、16個)圖形加速器模組446及/或其他加速器裝置。圖形加速器模組446可專用於在處理器407上執行的單一應用,或者可在多個應用之間被共用。在一個實施例中,呈現虛擬化圖形執行環境,其中圖形處理引擎431-432、N的資源與多個應用程式或者虛擬機器(VM)共 用。資源可被細分為「片(slices)」,其依據與VM及/或應用程式相關聯的處理要求和優先權而被分配給不同的VM及/或應用程式。
因此,加速器整合電路充當圖形加速模組446至系統的橋樑,並提供位址轉譯和系統記憶體快取服務。此外,加速器整合電路436可為主處理器提供虛擬化設施,以管理圖形處理引擎的虛擬化、中斷、和記憶體管理。
因為圖形處理引擎431-432、N的硬體資源明確地被映射到由主處理器407看到的真實位址空間,所以任何主處理器可以使用有效位址值來直接定址這些資源。在一個實施例中,加速器整合電路436的一個功能是圖形處理引擎431-432、N的實體分離,使得它們作為獨立的單元出現在系統。
如所述,在所示實施例中,一或多個圖形記憶體433-434、M分別耦接至圖形處理引擎431-432、N之各者。圖形記憶體433-434、M儲存要由圖形處理引擎431-432、N之各者處理的指令及資料。圖形記憶體433-434、M可以是揮發性記憶體,諸如DRAM(包括堆疊式DRAM)、GDDR記憶體(例如,GDDR5、GDDR6)、或HBM,及/或可以是非揮發性記憶體,諸如3D XPoint或奈米隨機記憶體。
在一個實施例中,為了減少高速鏈路440上的資料流量,使用偏置(biasing)技術來確保儲存在圖形記 憶體433-434、M中的資料是圖形處理引擎431-432、N將會最常使用、且較佳地不會被核心460A-460D使用(至少不頻繁)的資料。類似的,偏置機制試圖將核心(並且較佳地不是圖形處理引擎431-432、N)所需的資料保持在核心的快取462A-462D、456及系統記憶體411內。
圖4C示出加速器整合電路436被整合在處理器407內的另一實施例。在此實施例中,圖形處理引擎431-432、N經由介面437及介面435(其也可以利用任何形式的匯流排或介面協定)透過高速鏈路440直接通訊至加速器整合電路436。加速器整合電路436可執行與關於圖4B所描述的操作相同的操作,但考慮到其與一致性匯流排464及快取462A-462D、456非常靠近,可能以較高的通量進行操作。
一個實施例支援不同的程式設計模型,包括專用程序(dedicated-process)程式設計模型(沒有圖形加速模組虛擬化)以及共用程式設計模型(有虛擬化)。後者可包括由加速器整合電路436控制的程式設計模型以及由圖形加速模組446控制的程式設計模型。
在專用程序模型的一個實施例中,圖形處理引擎431-432、N專用於單一作業系統下的單一應用程式或程序。單一應用程式可將其他的應用程式請求彙入圖形處理引擎431-432、N,在VM/分區內提供虛擬化。
在專用程序程式設計模型中,圖形處理引擎431-432、N可被多個VM/應用程式分區共用。共用模型需 要系統超管理器來虛擬化圖形處理引擎431-432、N,以允許每個作業系統存取。針對沒有超管理器的單分區系統,由作業系統擁有圖形處理引擎431-432、N。在兩種情況中,作業系統都可虛擬化圖形處理引擎431-432、N來提供對每個程序或應用程式的存取。
針對共用程式設計模型,圖形加速模組446或個別的圖形處理引擎431-432、N使用處理處置(handle)來選擇處理元件。在一個實施例中,處理元件被儲存在系統記憶體411中,並且可使用本文所述之有效位址至真實位址轉譯技術來定址。處理處置可以是當主程序向圖形處理引擎431-432、N註冊其上下文時被提供給主程序之特定於實施方式的值(即,呼叫系統軟體將程序元件加入程序元件鏈接表)。處理處置的低16位元可以是程序元件鏈接表內的程序元件的偏移。
圖4D示出示例性加速器整合片(integration slice)490。如本文所使用的,「片(slice)」包含加速器整合電路436的處理資源的指定部分。系統記憶體411內的應用程式有效位址空間482儲存程序元件483。在一個實施例中,回應於來自在處理器407上執行的應用程式480的GPU調用(invocation)481而儲存程序元件483。程序元件483包含相對應的應用程式480的程序狀態。程序元件483中包含的工作描述符(WD)484可以是應用程式所請求的單一工作(job)或者可包含指向工作佇列的指標。在後者情況中,WD 484是指向在應用程式的位址空間482中的工作請求佇 列的指標。
圖形加速模組446及/或個別的圖形處理引擎431-432、N可由系統中的所有程序或程序的子集共用。本發明的實施例包括用於建立程序狀態以及將WD 484發送至圖形加速模組446以在虛擬環境中開始工作的基礎設施。
在一個實施方式中,專用程序程式設計模型是特定於實施方式的。在此模型中,單一程序擁有圖形加速模組446或個別的圖形處理引擎431。由於圖形加速模組446是屬於單一程序的,因此超管理器(hypervisor)為所屬分區(partition)初始化加速器整合電路436,以及作業系統在圖形加速模組446被分配時,為所屬程序初始化加速器整合電路436。
在操作中,加速器整合片490中的WD提取單元491提取下一個WD 484,其包括待由圖形加速模組446之圖形處理引擎中之一者完成的工作的指示。來自WD 484的資料可被儲存在暫存器445中,並且由MMU 439、中斷管理電路447及/或上下文管理電路448使用,如所示出的。舉例來說,MMU 439的一個實施例包括區段(segment)/頁面步行(page walk)電路,用於存取OS虛擬位址空間485內的區段/頁表486。中斷管理電路447可處理接收自圖形加速模組446的中斷事件492。當執行圖形操作時,由圖形處理引擎431-432、N產生的有效位址493透過MMU 439被轉譯成真實位址。
在一個實施例中,相同組的暫存器445係針對每個圖形處理引擎431-432、N及/或圖形加速模組446被複製,並且可由超管理器或作業系統初始化。這些複製的暫存器之各者可被包含在加速器整合片490中。表1示出可由超管理器初始化的示例性暫存器。
表2示出可由作業系統初始化的示例性暫存器。
在一個實施例中,每個WD 484係特定於特定的圖形加速模組446及/或圖形處理引擎431-432、N。它包含圖形處理引擎431-432、N完成其工作所需的所有資訊,或者它可以是指向應用程式已經建立待完成之工作的命令佇列的記憶體位置的指標。
圖4E示出共用模型的一個實施例的額外細節。此實施例包括超管理器真實位址空間498,其中儲存有程序元件表499。透過超管理器496可存取超管理器真實位址空間498,超管理器496為作業系統495虛擬化圖形加速模組。
共用程式設計模型允許來自系統中的所有分割或分割的子集的所有程序或程序的子集使用圖形加速模組446。存在兩種程式設計模型,其中圖形加速模組446由多個程序和分割共用:時間切片(time-sliced)的共用以及圖形指向的共用。
在此模型中,系統超管理器496擁有圖形加速模組446,並且使其之功能為所有作業系統495可用。對於透過系統超管理器496來支援虛擬化的圖形加速模組446,圖形加速模組446可遵循以下要求:(1)應用程式的工作請求必須是自主的(即,不需要在工作之間維護狀態),或者圖形加速模組446必須提供上下文保存及恢復機制。(2)應用程式的工作請求由圖形加速模組446保證以在指定的時間內完成,包括任何轉譯錯誤,或者圖形加速模組446提供搶占工作處理的能力。(3)當在指向的共用程式 設計模型中操作時,圖形加速模組446必須保證程序之間的公平性。
在一個實施例中,針對共用模型,應用程式480被要求以圖形加速模組446類型、工作描述符(WD)、權限遮罩暫存器(AMR)值、及上下文保存/恢復區域指標(CSRP)來進行作業系統495系統呼叫。圖形加速模組446類型描述用於系統呼叫的目標加速函數。圖形加速模組446類型可以是系統特定的值。WD係特別針對圖形加速模組446被格式化,並且可以是圖形加速模組446命令、指向使用者定義的結構的有效位址指標、指向命令佇列的有效位址指標、或者描述待由圖形加速模組446完成之工作的任何其他資料結構的形式。在一個實施例中,AMR值是用於當前程序的AMR狀態。傳送給作業系統的該值類似於設定AMR的應用程式。若加速器整合電路436及圖形加速模組446實施方式不支援使用者權限遮罩置換暫存器(User Authority Mask Override Register,UAMOR),則作業系統可在超管理器呼叫中,在傳送AMR之前將當前的UAMOR值應用於AMR值。在將AMR放入程序元件483之前,超管理器496可以可選地應用當前的權限遮罩置換暫存器(AMOR)值。在一個實施例中,CSRP是暫存器445之其中一者,其包含應用程式的位址空間482中的區域的有效位址,以供圖形加速模組446保存及恢復上下文狀態。若不需要在工作之間保存狀態或者當工作被搶占時,則此指標是可選的。上下文保存/恢復區域可以是固定的(pinned)系 統記憶體。
一旦接收到系統呼叫,作業系統495可驗證應用程式480已註冊並且被授權使用圖形加速模組446。接著,作業系統495使用表3中所示的資訊呼叫超管理器496。
一旦接收到超管理器呼叫,超管理器496驗證作業系統495已註冊並且被授權使用圖形加速模組446。接著,超管理器496將程序元件483放入用於相應的圖形加速模組446類型的程序元件鏈接表中。程序元件可包括表4中所示的資訊。
在一個實施例中,超管理器初始化複數個加速器整合片490的暫存器445。
如圖4F中所示,本發明的一個實施例採用統一的記憶體,可透過用以存取實體處理器記憶體401-402及GPU記憶體420-423的共通虛擬記憶體位址空間來定址。在此實施方式中,GPU 410-413上執行的操作利用相同的虛擬/有效記憶體位址空間來存取處理器記憶體401-402,且反之亦然,藉此簡化可編程性。在一個實施例中,虛擬/有效記憶體位址空間的第一部分被分配給處理器記憶體401,第二部分被分配給第二處理器記憶體402,第三部分被分配給GPU記憶體420等等。整個虛擬/有效記 憶體空間(有時稱為有效位址空間)藉此被分散在處理器記憶體401-402及GPU記憶體420-423之各者,允許任何處理器或GPU存取任何實體記憶體,其透過映射到該記憶體的虛擬位址。
在一個實施例中,MMU 439A-439E之其中一或多者內的偏置/一致性管理電路494A-494E確保主處理器(例如,405)和GPU 410-413之快取之間的快取一致性,並且實現指示應儲存某些類型之資料的實體記憶體的偏置技術。雖然圖4F中示出偏置/一致性管理電路494A-494E的多個實例,但偏置/一致性電路可在一或多個主處理器405的MMU內及/或在加速器整合電路436內實現。
一個實施例允許GPU附加的記憶體420-423被映射為系統記憶體的一部分,並且使用共用虛擬記憶體(SVM)技術來存取,但不會遭受到與完整系統快取一致性相關聯的典型的性能缺陷。GPU附加的記憶體420-423作為系統記憶體被存取而不會造成繁重的快取一致性負擔的能力為GPU卸載提供了有利的操作環境。這種配置允許主處理器405軟體設置運算元並存取計算結果,而沒有傳統I/O DMA資料副本的負擔。這種傳統副本涉及驅動程式呼叫、中斷及記憶體映射I/O(MMIO)存取,相對於簡單的記憶體存取而言這些都是低效率的。同時,存取GPU附加的記憶體420-423而沒有快取一致性負擔的能力對於卸載計算的執行時間是非常重要的。例如,在具有相當大的串流寫入記憶體流量的情況下,快取一致性負擔可以顯著地降 低GPU 410-413所看見的有效寫入頻寬。運算元設置的效率、結果存取的效率、以及GPU計算的效率均在確定GPU卸載的效益中發揮作用。
在一個實施方式中,由偏置追蹤器資料結構驅動GPU偏置及主處理器偏置之間的選擇。例如,可使用偏置表,其可以是每GPU附加的記憶體頁面包括1或2個位元的頁面粒度(page-granular)結構(即,以記憶體頁面的粒度控制)。偏置表可在一或多個GPU附加的記憶體420-423的遭竊(stolen)的記憶體範圍中實現,GPU 410-413中具有或不具有偏置快取(例如,用以快取頻繁/最近使用的偏置表的進入點)。替代地,可將整個偏置表保持在GPU內。
在一個實施方式中,在實際存取GPU記憶體之前,存取與至GPU附加的記憶體420-423的每個存取相關聯的偏置表進入點,從而導致以下操作。首先,將來自GPU 410-413之在GPU偏置中尋找其頁面的本地請求直接轉送到相對應的GPU記憶體420-423。將來自GPU之在主機偏置中尋找其頁面的本地請求轉送到處理器405(例如,透過如上所述的高速鏈路)。在一個實施例中,來自處理器405之在主處理器偏置中尋找請求頁面的請求如同正常記憶體讀取般完成該請求。替代地,可將指向GPU偏置頁面的請求轉送到GPU 410-413。接著,若GPU當前未使用該頁面,則可將該頁面轉移到主處理器偏置。
頁面的偏置狀態可以透過基於軟體的機制、硬體輔助之基於軟體的機制來改變,或者針對有限的狀 況,可透過純基於硬體的機制來改變。
改變偏置狀態的一個機制採用API呼叫(例如,OpenCL),其依次呼叫GPU的裝置驅動程式,該驅動程式依次向GPU傳送訊息(或將命令描述符排入佇列),引導其改變偏置狀態,且針對某些轉換,在主機中執行快取排清(flushing)操作。快取排清操作對於從主處理器405偏置轉換到GPU偏置是必須的,但對於相反的轉換是不需要的。
在一個實施例中,藉由暫時性地呈現主處理器405不可快取的GPU偏置頁面來維持快取一致性。為了存取這些頁面,處理器405可請求來自GPU 410的存取,其取決於實現方式可以或者不可以立即授權存取。因此,為了減少處理器405和GPU 410之間的通訊,確保GPU偏置頁面是GPU所需要的頁面而不是主處理器405所需要的頁面是有利的,反之亦然。
圖形處理管線
圖5示出依據實施例之圖形處理管線500。在一個實施例中,圖形處理器可實現所示的圖形處理管線500。圖形處理器可被包括在本文所述的平行處理子系統內,諸如圖2A的平行處理器200,其在一個實施例中是圖1之平行處理器112的變形。各種平行處理系統可透過如本文所述的平行處理單元(例如,圖2A的平行處理單元202)的一或多個實例來實現圖形處理管線500。舉例來說,著 色器單元(例如,圖2C的圖形多處理器234)可被配置成執行頂點處理單元504、曲面細分控制處理單元508、曲面細分評估處理單元512、幾何處理單元516、及片段/像素處理單元524之其中一或多者的功能。資料組合器502、基元組合器506、514、518、曲面細分單元510、光柵器(rasterizer)522、及光柵(raster)操作單元526的功能亦可由處理叢集(例如,圖2A的處理叢集214)內的其他處理引擎以及相應的分割單元(例如,圖2A的分割單元220A-220N)執行。圖形處理管線500也可使用針對一或多種功能的專用處理單元來實現。在一個實施例中,圖形處理管線500的一或多個部分可由通用處理器(例如,CPU)內的平行處理邏輯來執行。在一個實施例中,圖形處理管線500的一或多個部分可透過記憶體介面528存取晶載記憶體(例如,如在圖2A中的平行處理器記憶體222),記憶體介面528可以是圖2A之記憶體介面218的實例。
在一個實施例中,資料組合器502是收集用於表面和基元之頂點資料的處理單元。接著資料組合器502將包括頂點屬性的頂點資料輸出至頂點處理單元504。頂點處理單元504是可編程的執行單元,其執行頂點著色器程式,將頂點著色器程式指定的頂點資料進行打光(lighting)及轉換。頂點處理單元504讀取儲存在快取、本地或系統記憶體中用於處理頂點資料的資料,並且可被編程為將頂點資料從基於物件的座標表示轉換為世界空間座標空間或正規化的裝置座標空間。
基元組合器506的第一實例從頂點處理單元504接收頂點屬性。基元組合器506根據需要讀取儲存的頂點屬性,並且建構圖形基元以供曲面細分控制處理單元508處理。圖形基元包括三角形、線段、點、修補等等,如由各種圖形處理應用程式編程介面(API)所支援的。
曲面細分控制處理單元508將輸入頂點視為幾何修補的控制點。將該些控制點從修補的輸入表示(例如,修補的基礎)轉換成適合於曲面細分評估處理單元512進行表面評估的表示。曲面細分控制處理單元508亦可計算用於幾何修補之邊緣的曲面細分因子。曲面細分因子適用於單一邊緣,並且量化與該邊緣相關聯的視點相依的細節程度。曲面細分單元510被配置成接收用於修補之邊緣的曲面細分因子,並且將該修補曲面細分成多個幾何基元,例如線、三角形或四邊形基元,其被傳輸至曲面細分評估處理單元512。曲面細分評估處理單元512對被細分的修補的參數化座標進行操作,以為每個頂點產生與幾何基元相關聯的表面表示及頂點屬性。
基元組合器514的第二實例從曲面細分評估處理單元512接收頂點屬性,根據需要讀取儲存的頂點屬性,並建構圖形基元以供幾何處理單元516處理。幾何處理單元516是可編程的執行單元,其執行幾何著色器程式以轉換如由幾何著色器程式指定的從基元組合器514接收的圖形基元。在一個實施例中,幾何處理單元516可被編程為將圖形基元細分為一或多個新的圖形基元,並計算用 以光柵化新圖形基元的參數。
在一些實施例中,幾何處理單元516可在幾何流中添加或刪除元素。幾何處理單元516將指定新圖形基元的參數及頂點輸出至基元組合器518。基元組合器518接收來自幾何處理單元516的參數及頂點,並且建構圖形基元以供視埠縮放、剔除及剪裁單元520處理。幾何處理單元516讀取儲存在平行處理器記憶體或系統記憶體中的資料,用於處理幾何資料。視埠縮放、剔除及剪裁單元520執行剪裁(clipping)、剔除(culling)、及視埠縮放(viewport scaling),並將經處理的圖形基元輸出到光柵器522。
光柵器522可執行深度剔除以及其他基於深度的最佳化。光柵器522亦對新圖形基元執行掃描轉換以產生片段及將那些片段和相關聯的覆蓋資料輸出到片段/像素處理單元524。片段/像素處理單元524是可編程的執行單元,其被配置以執行片段著色器程式或像素著色器程式。片段/像素處理單元524轉換接收自光柵器522的片段或像素,如片段或像素著色器程式所指定的。例如,片段/像素處理單元524可被編程為執行包括但不限於紋理映射、著色、混色、紋理校正及透視校正的操作,以產生被輸出至光柵操作單元526的經著色的片段或像素。片段/像素處理單元524可以讀取儲存在平行處理器記憶體或系統記憶體中的資料,用於處理片段資料時使用。片段或像素著色器程式可被配置成依據為處理單元配置的取樣率,以 樣本、像素、圖磚或其他粒度進行著色。
光柵操作單元526是執行包括但不限於模板、z測試、混色等光柵操作的處理單元,並且輸出像素資料作為經處理的圖形資料,以被儲存於圖形記憶體中(例如,圖2A中的平行處理器記憶體222、及/或圖1中的系統記憶體104)、以被顯示在一或多個顯示裝置110上或者用於由一或多個處理器102之其中一者或平行處理器112進一步處理。在一些實施例中,光柵操作單元526被配置成壓縮寫入記憶體的z或色彩資料,並且解壓縮讀取自記憶體的z或色彩資料。
機器學習概述
機器學習演算法是可以基於一組資料學習的演算法。機器學習演算法的實施例可被設計成在資料集內將高階抽象模型化。例如,可使用影像識別演算法來確定給定的輸入屬於數個類別中的哪個類別;回歸演算法可以輸出給定輸入的數值;以及型樣識別演算法可被用來產生經翻譯的文本或者執行文本至語音及/或語音辨識。
機器學習演算法之一示例性類型是神經網路。有許多類型的神經網路;一簡單類型的神經網路是前饋式(feedforward)網路。前饋網路可被實現為非循環圖,其中節點分層排列。通常,前饋網路拓樸包括由至少一個隱藏層分隔的輸入層和輸出層。隱藏層將輸入層接收到的輸入轉換成對在輸出層中產生輸出有用的表示。網路節點 透過邊(edge)完全連接到相鄰層中的節點,但在各層內的節點之間沒有邊。在前饋網路之輸入層的節點處接收到的資料透過激勵函數(activation function)被傳送(即,“前饋”)至輸出層的節點,激勵函數基於分別與將層連接的每個邊相關聯的係數(“權重”)來計算網路中每個接續層的節點的狀態。依據正在執行的演算法所表示的特定模型,神經網路演算法的輸出可以採取各種形式。
在可以使用機器學習演算法來將特定問題模型化之前,使用訓練資料集來訓練演算法。訓練神經網路涉及選擇網路拓樸,使用一組訓練資料表示由網路模型化的問題,以及調整權重直到網路模型對訓練資料集的所有實例以最小誤差執行。舉例來說,在針對神經網路的監督式學習(supervised learning)訓練過程期間,將回應於表示訓練資料集中的實例的輸入而由網路產生的輸出與該實例之被標記「正確」的輸出進行比較,計算表示輸出與被標記的輸出之差的誤差信號,以及隨著誤差信號反向傳遞通過網路的層,調整與該些連接相關聯的權重以最小化該誤差。當從訓練資料集的實例所產生的每個輸出的誤差被最小化時,網路被認為是「經過訓練的」。
用來訓練演算法的資料集的品質會顯著地影響機器學習演算法的準確度。訓練過程可能是計算密集的,並且在傳統通用處理器上可能需要大量時間。因此,使用平行處理硬體來訓練許多種類型的機器學習演算法。這對於最佳化神經網路的訓練是特別有用的,因為在調整 神經網路中的係數時所執行的計算自然地適合於平行實現。具體而言,許多機器學習演算法和軟體應用程式已經適應於利用通用圖形處理裝置內的平行處理硬體。
圖6是機器學習軟體堆疊600的廣義圖。機器學習應用602可被配置成使用訓練資料集訓練神經網路或者被配置成使用經過訓練的深度神經網路來實現機器智慧。機器學習應用602可包括用於神經網路的訓練和推論(inference)功能及/或在部署之前可被用來訓練神經網路的專用軟體。機器學習應用602可以實現任何類型的機器智慧,包括但不限於影像識別、映射和定位、自主導航、語音合成、醫學成像、或語言翻譯。
用於機器學習應用602的硬體加速可透過機器學習框架604啟用。機器學習框架604可以提供機器學習基元庫。機器學習基元是通常由機器學習演算法執行的基本操作。若沒有機器學習框架604,機器學習演算法的開發者將需要創建和最佳化與機器學習演算法相關聯的主要計算邏輯,然後在開發新的平行處理器時重新最佳化計算邏輯。相反的,機器學習應用可被配置成使用由機器學習框架604提供的基元來執行必要的計算。示例性基元包括張量卷積(tensor convolutions)、激勵函數、及池化(pooling),這些是訓練卷積神經網路(CNN)時執行的計算操作。機器學習框架604還可提供基元來實現由許多機器學習演算法執行的基本線性代數子程式,例如矩陣及向量運算。
機器學習框架604可處理從機器學習應用602接收到的輸入資料,並且產生適當的輸入給計算框架606。計算框架606可以將提供給GPGPU驅動器608的底層指令抽象化,以使機器學習框架604能夠透過GPGPU硬體610來利用硬體加速,而不需要機器學習框架604深入了解GPGPU硬體610的架構。此外,計算框架606可以跨各種類型及世代的GPGPU硬體610啟用針對機器學習框架604的硬體加速。
GPGPU機器學習加速
圖7示出依據實施例之高度平行通用圖形處理單元700。在一個實施例中,通用處理單元(GPGPU)700可被配置為在處理與訓練深度神經網路相關聯的計算工作量類型時特別有效。此外,GPGPU 700可被直接鏈接到GPGPU的其他實例,以創建多GPU叢集來提高特別針對深度神經網路的訓練速度。
GPGPU 700包括主機介面702,以致能與主處理器的連接。在一個實施例中,主機介面702是PCI Express介面。然而,主機介面也可以是供應商特定的通訊介面或通訊結構。GPGPU 700從主處理器接收命令,並使用全域排程器704來將與那些命令相關聯的執行線程分發給一組計算叢集706A-706H。計算叢集706A-706H共用快取記憶體708。快取記憶體708可充當計算叢集706A-706H內的快取記憶體的高階快取。
GPGPU 700包括透過一組記憶體控制器712A-712B與計算叢集706A-H耦接的記憶體714A-714B。在各種實施例中,記憶體714A-714B可包括各種類型的記憶體裝置,包括動態隨機存取記憶體(DRAM)或圖形隨機存取記憶體,諸如同步圖形隨機存取記憶體(SGRAM),包括圖形雙倍資料速率(GDDR)記憶體,或3D堆疊式記憶體,包括但不限於高頻寬記憶體(HBM)。
在一個實施例中,每個計算叢集706A-706H包括一組圖形多處理器,諸如圖2C的圖形多處理器234。計算叢集的圖形多處理器包括多種類型的整數及浮點邏輯單元,其可以在包括適合機器學習計算的精度範圍執行計算。例如且在一個實施例中,計算叢集706A-H之各者中的浮點單元之至少一子集可被配置成執行16位元或32位元浮點運算,而浮點單元的不同子集可被配置成執行64位元浮點運算。
GPGPU 700的多個實例可被配置成作為計算叢集操作。計算叢集用於同步和資料交換的通訊機制在各實施例間不同。在一個實施例中,GPGPU 700的多個實例透過主機介面702通訊。在一個實施例中,GPGPU 700包括I/O集線器709,其將GPGPU 700與致能至GPGPU之其他實例的直接連接的GPU鏈路710耦接。在一個實施例中,GPU鏈路710耦接到致能GPGPU 700之多個實例間的通訊和同步的專用GPU至GPU橋。在一個實施例中,GPU鏈路710與高速互聯耦接以向其他GPGPU或平行處理器發送和 接收資料。在一個實施例中,GPGPU 700的多個實例位於分離的資料處理系統,並且透過可經由主機介面702存取的網路裝置進行通訊。在一個實施例中,GPU鏈路710可被配置成除了主機介面702之外或者作為主機介面702的替代,致能至主處理器的連接。
雖然GPGPU 700之所示配置可被配置來訓練神經網路,但一個實施例提供了可在高性能或低功耗推論平台內被配置用於部署的GPGPU 700的替代配置。在推論配置中,相對於訓練配置,GPGPU 700包括更少的計算叢集706A-H。此外,與記憶體714A-714B相關聯的記憶體技術在推論和訓練配置之間可能不同。在一個實施例中,GPGPU 700的推論配置可支援推論特定的指令。例如,推論配置可提供支援一或多個8位元整數點乘積指令,這些指令通常在已部署的神經網路推論操作期間被使用。
圖8示出依據實施例之多GPU計算系統800。多GPU計算系統800可包括透過主機介面開關804耦接至多個GPGPU 806A-806D的處理器802。在一個實施例中,主機介面開關804是將處理器802耦接至PCI Express匯流排的PCI Express開關裝置,處理器802可透過該PCI Express匯流排與該組GPGPU 806A-D通訊。多個GPGPU 806A-806D之各者可以是圖7之GPGPU 700的實例。GPGPU 806A-D可透過一組高速點對點GPU至GPU鏈路816互連。高速GPU至GPU鏈路可透過專用GPU鏈路,諸如圖7中的GPU鏈路710,連接至GPGPU 806A-806D之各者。P2P GPU鏈路816 可使GPGPU 806A-806D之各者之間能夠直接通訊,而不需要透過處理器802所連接的主機介面匯流排進行通訊。透過被引導至P2P GPU鏈路的GPU至GPU流量,主機介面匯流排仍然可用於系統記憶體存取或者與多GPU計算系統800的其他實例通訊,例如,透過一或多個網路裝置。雖然在所示的實施例中GPGPU 806A-806D透過主機介面開關804連接至處理器802,但在一個實施例中,處理器802包括直接支援P2P GPU鏈路816並且可直接連接至GPGPU 806A-806D。
機器學習神經網路實現
本文所述實施例所提供的計算結構可被配置成執行特別適合於訓練及部署針對機器學習之神經網路的平行處理的類型。神經網路可以概括為具有圖形關係的函數網路。如本領域所熟知的,機器學習中使用了各種類型的神經網路實現。如前所述,神經網路的一個示例性類型為前饋網路。
神經網路的第二示例性類型為卷積神經網路(CNN)。CNN是一種專用的前饋神經網路,用於處理具有已知、格柵狀拓樸的資料,諸如影像資料。因此,CNN通常被用於計算視覺及影像識別應用,但它們也可被用於其他類型的型樣識別,諸如語音及語言處理。CNN輸入層中的節點被組織為一組「過濾器」(特徵檢測器靈感來自於視網膜中發現的接受域),並且每組過濾器的輸出被傳遞 給網路的接續層中的節點。用於CNN的計算包括將卷積數學運算應用於每個過濾器以產生該過濾器的輸出。卷積是一種專門的數學運算,由兩個函數執行以產生第三個函數,其為兩個原始函數之一的修改版本。在卷積網路術語中,卷積的第一函數可被稱為輸入,而第二函數可被稱為卷積核(convolution kernel)。該輸出可被稱為特徵圖(feature map)。例如,卷積層的輸入可以是定義輸入影像的各種色彩分量的資料的多維矩陣。卷積核可以是參數的多維矩陣,其中透過神經網路的訓練過程來調整參數。
遞迴神經網路(RNN)是前饋神經網路的家族,其包括層之間的反饋連接。RNN透過跨神經網路的不同部分共用參數資料來致能順序資料的模型化。用於RNN的結構包括週期(cycle)。週期代表變數的當前值對於其自身在未來時間的值的影響,因為來自RNN的輸出資料的至少一部分被用作處理序列中後續輸入的反饋。由於可以構成語言資料的可變性,因此這個特徵使得RNN對於語言處理特別有用。
下面描述的圖式給出了示例性的前饋、CNN、及RNN網路,並且描述了分別訓練及部署那些類型的網路的一般過程。應理解的是,這些描述對於本文所述的任何特定實施例是示例性的且非限制性的,並且所示的概念通常可應用於一般深度神經網路及機器學習技術。
上述的示例性神經網路可被用來執行深度學習。深度學習是使用深度神經網路的機器學習。深度學習 中使用的深度神經網路是由多個隱藏層組成的人工神經網路,而不是僅包括單一隱藏層的淺層神經網路。更深的神經網路通常在計算上需要更多的訓練。然而,網路的額外隱藏層致能多步驟型樣識別,其相對於淺機器學習技術導致輸出錯誤減少。
深度學習中使用的深度神經網路通常包括耦接至後端網路之執行特徵識別的前端網路,後端網路代表可以執行操作(例如,物件分類、語音識別等)的數學模型,其基於提供給該模型的特徵表示。深度學習使得機器學習能夠被執行,而無需針對模型執行手工製作的特徵工程。相反的,深度神經網路可以依據輸入資料中的統計結構或相關性來學習特徵。可以將學習到的特徵提供給數學模型,該數學模型可將檢測到的特徵圖到輸出。網路所使用的數學模型通常專門針對要執行的特定任務,並且將使用不同的模型來執行不同的任務。
一旦神經網路被結構化,可將學習模型應用於網路以訓練網路執行特定的任務。學習模型描述如何調整模型內的權重以減少網路的輸出誤差。反向傳播誤差是用來訓練神經網路的常用方法。輸入向量被呈現給網路進行處理。使用損失函數將網路的輸出與期望的輸出進行比較,並且針對輸出層中的每個神經元計算誤差值。然後將誤差值向後傳播直到每個神經元具有相關聯的誤差值,該誤差值大致代表其對原始輸出的貢獻。然後網路可使用演算法,諸如隨機梯度下降(stochastic gradient descent)演算 法,從這些誤差中學習以更新神經網路的權重。
圖9A-9B示出示例性卷積(convolutional)神經網路。圖9A示出CNN內的各種層。如圖9A中所示,被用來模型化影像處理的示例性CNN可以接收描述輸入影像之紅色、綠色、及藍色(RGB)分量的輸入902。輸入902可以由多個卷積層(例如,卷積層904、卷積層906)處理。來自多個卷積層的輸出可以可選地由一組完全連接層908處理。完全連接層中的神經元與前一層中的所有激勵(activation)有完全的連接,如先前針對前饋網路所描述的。來自完全連接層908的輸出可被用來產生出自網路的輸出結果。可以使用矩陣乘法而不是卷積來計算完全連接層908內的激勵。不是所有的CNN實現都利用完全連接層908。例如,在一些實現中,卷積層906可針對CNN產生輸出。
卷積層是稀疏連接的,這不同於完全連接層908中可見的傳統神經網路配置。傳統神經網路層是完全連接的,使得每個輸出單元與每個輸入單元進行交互。然而,卷積層是稀疏連接的,因為區域(field)的卷積的輸出被輸入(而不是區域中每個節點的個別狀態值)到後續層的節點,如圖所示。與卷積層相關聯的核執行卷積運算,其之輸出被發送到下一層。卷積層內執行的降維是使CNN能夠縮放以處理大型影像的一個態樣。
圖9B示出在CNN的卷積層內的示例性計算階段。至CNN之卷積層912的輸出可在卷積層914的三個階段 中進行處理。三個階段可包括卷積階段916、檢測器階段918、及池化階段920。接著卷積層914可以輸出資料給接續的卷積層。網路的最終卷積層可以產生輸出特徵圖資料或者提供輸入至完全連接層,例如,以針對該至CNN的輸入產生分類值。
在卷積階段916中平行執行數個卷積以產生一組線性激勵。卷積階段916可包括仿射變換,仿射變換是可以被指定為線性變換加上平移的任何變換。仿射變換包括旋轉、平移、縮放、及這些變換的組合。卷積階段計算連接到輸入中的特定區域的函數(例如,神經元)的輸出,其可以被確定為與神經元相關聯的局部區域。神經元計算神經元的權重與神經元所連接的局部輸入中的區域之間的點積。卷積階段916的輸出定義了由卷積層914的後續階段處理的一組線性激勵。
線性激勵可以由檢測器階段918進行處理。在檢測器階段918中,由非線性激勵函數處理每個線性激勵。非線性激勵函數增加整體網路的非線性特性,而不影響卷積層的感知區域(receptive fields)。可使用幾種類型的非線性激勵函數。一種特定類型是線性整流函數(rectified linear unit,ReLU),其使用定義為f(x)=max(0,x)的激勵函數,使得激勵閾值為零。
池化階段920使用池化函數,其用鄰近輸出的摘要統計替換卷積層906的輸出。池化函數可被用來將平移不變性引入神經網路,使得對輸入的小的平移不會改 變已池化的輸出。對局部平移的不變性在輸入資料中存在特徵比特徵的精確位置更重要的情況下是非常有用的。在池化階段920期間可以使用各種類型的池化函數,包括最大池化、平均池化、及L2-norm池化。此外,一些CNN實現不包括池化階段。相反的,這種實現取而代之,並且額外的卷積階段具有相對於先前的卷積階段增加的步長(stride)。
卷積層914的輸出可接著由下一層922進行處理。下一層922可以是額外的卷積層或者是完全連接層908的其中一者。例如,圖9A的第一卷積層904可以輸出至第二卷積層906,而第二卷積層可以輸出至完全連接層908的第一層。
圖10示出示例性遞迴神經網路1000。在遞迴神經網路(RNN)中,網路的先前狀態會影響網路的當前狀態的輸出。可以使用各種函數以各種方式來構建RNN。RNN的使用通常圍繞著使用數學模式來依據先前的輸入順序預測未來。例如,RNN可被用來執行統計語言模型化以根據字的先前順序預測即將到來的字。所示出的RNN 1000可被描述為具有接收輸入向量的輸入層1002、實現循環函數的隱藏層1004、致能先前狀態之「記憶體」的反饋機制1005、以及輸出結果的輸出層1006。RNN 1000基於時間步驟運行。給定時間步驟的RNN的狀態係透過反饋機制1005基於先前的時間步驟而受到影響。對於給定的時間步驟,隱藏層1004的狀態是由當前時間步驟的先前狀態和 輸入定義。第一時間步驟的初始輸入(x1)可以由隱藏層1004進行處理。第二輸入(x2)可以由隱藏層1004使用在初始輸入(x1)的處理期間被決定的狀態資訊來進行處理。一給定狀態可被計算為s t =f(Ux t +Ws t-1),其中UW是參數矩陣。函數f通常是非線性函數,諸如雙曲正切函數(Tanh)或整流函數f(x)=max(0,x)的變形。然而,隱藏層1004中所使用的具體數學函數可以依據RNN 1000的具體實現細節而不同。
除了所述的基本CNN及RNN網路之外,也可啟用那些網路的變形。一個示例性RNN變形是長短期記憶體(LSTM)RNN。LSTM RNN能夠學習處理更長的語言序列所需的長期相依性。CNN的變形是卷積深度信念網路,其具有類似於CNN的結構,並且以類似於深度信念網路的方式進行訓練。深度信念網路(DBN)是由多層隨機(隨機)變量組成的生成神經網路。可以使用貪心無監督式學習來逐層訓練DBN。接著,透過決定針對神經網路的最佳初始權種組,DBN之已學習到的權重可被用來提供預訓練神經網路。
圖11示出深度神經網路的訓練和部署。一旦給定的網路已針對任務被結構化,使用訓練資料集1102來訓練神經網路。已經發展出各種訓練框架1104來致能訓練過程的硬體加速。例如,圖6的機器學習框架604可被配置為訓練框架604。訓練框架604可嵌入未經訓練的神經網路1106,並且能夠使用本文所述的平行處理資源來訓練未經 訓練的神經網,以產生經訓練的神經網路1108。
為了起始訓練過程,可以隨機選擇初始權重或者使用深度信念網路預訓練初始權重。接著可以監督式或無監督式來執行訓練週期。
監督式學習是將訓練執行作為中介運算的學習方法,諸如當訓練資料集1102包括輸入,該輸入與針對該輸入之期望的輸出配對,或者訓練資料集包括具有已知輸出的輸入,且神經網路的輸出是手動分級的。網路處理輸入並將結果輸出與一組預期的或期望的輸出比較。然後將誤差回傳通過系統。訓練框架1104可以調整控制未經訓練的神經網路1106的權重。訓練框架1104可以提供工具來監測未經訓練的神經網路1106朝向適合於依據已知的輸入資料來產生正確答案的模型收斂的程度。隨著網路的權重被調整以改進神經網路產生的輸出,訓練過程會重複地發生。訓練過程可以持續直到神經網路達到與經訓練的神經網路1108相關聯的統計上期望的精確度。然後經訓練的神經網路1108可以被部署來實現任何數量的機器學習運算。
無監督式學習是網路嘗試使用未經標示的資料來訓練其自身的學習方法。因此,對於無監督式學習,訓練資料集1102將包括無任何相關聯的輸出資料的輸入資料。未經訓練的神經網路1106可以學習在未經標識的輸入內的分組,並且可以確定個別的輸入如何與整個資料集相關。可以使用無監督式學習來產生自組織的映射,該自組織的映射是一種經訓練的神經網路1108,能夠執行有益於 降低資料維度的運算。也可使用無監督式學習來執行異常檢測,其允許識別輸入資料集中偏離資料之正常模式的資料點。
也可採用監督式和無監督式訓練的變形。半監督式學習是在訓練資料集1102中包括相同分佈的已標示與未經標示之資料的混合的技術。增量學習是監督式學習的變形,其中輸入資料被持續地用以進一步訓練模型。增量學習使得經訓練的神經網路1108能夠適應新資料1112而不會忘記在初始訓練期間被灌輸到網路內的知識。
無論是監督式或無監督式,特別深度神經網路的訓練過程對於單一計算節點而言可能計算量過大。取代使用單一計算節點,可使用計算節點的分散式網路來加速訓練過程。
圖12是示出分散式學習的方塊圖。分散式學習是使用多個分散式計算節點來執行神經網路的監督式或無監督式訓練的訓練模型。分散式計算節點可以各包括一或多個主機處理器以及通用處理節點中的一或多個,諸如圖7中的高度平行通用圖形處理單元700。如所示,分散式學習可以是執行的模型平行處理(parallelism)1202、資料平行處理1204、或模型及資料平行處理的組合1206。
在模型平行處理1202中,分散式系統中的不同計算節點可以針對單一網路的不同部分執行訓練計算。例如,神經網路的每一層可以由分散式系統的不同處理節點來訓練。模型平行處理的好處包括能夠擴展至特別大的 模型。分開與神經網路之不同層相關聯的計算使得能夠訓練非常大的神經網路,其中所有層的權重無法填入單一計算節點的記憶體。在某些情況下,模型平行處理可能特別有用於執行大型神經網路的無監督式訓練。
在資料平行處理1204中,分散式網路的不同節點具有模型的完整實例,並且每個節點接收資料的不同部分。然後合併來自不同節點的結果。雖然進行資料平行處理的不同方法是可能的,但資料平行訓練方法均需要合併結果以及在各節點之間同步模型參數的技術。組合資料的示例性方法包括參數平均以及基於更新的資料平行處理。參數平均訓練訓練資料之子集上的每個節點,並將全域參數(例如,權重、偏差)設定為來自每個節點的參數的平均值。參數平均使用維護參數資料的中央參數伺服器。基於更新的資料平行處理類似於參數平均,不同之處在於並非將參數從節點傳輸至參數伺服器,而是傳輸模型的更新。此外,可以分散的方式來執行基於更新的資料平行處理,其中在節點之間壓縮和傳送更新。
組合的模型及資料平行處理1206可被執行例如在分散式系統中,該分散式系統中每個計算節點包括多個GPU。每個節點可以具有模型的完整實例,每個節點內的單獨GPU被用來訓練模型的不同部分。
相對於在單一機器上訓練,分散式訓練增加了負擔。然而,本文所述的平行處理器及GPGPU可以各自實現各種技術以減少分散式訓練的負擔,包括致能高頻寬 GPU至GPU資料傳輸和加速的遠端資料同步的技術。
示例性機器學習應用
機器學習可被應用來各種技術問題,包括但不限於計算機視覺、自主駕駛和導航、語音識別、和語言處理。傳統上計算機視覺已是機器學習應用最活躍的研究領域之一。計算機視覺應用的範圍從諸如識別臉孔的重製人類視覺能力到創造視覺能力的新類別。例如,計算機視覺應用可被配置成識別來自視訊中可見物體引起的振動的聲波。平行處理器加速的機器學習使得計算機視覺應用能夠使用比先前可行的顯著較大的訓練資料集來進行訓練,並且使得推論系統能夠使用低功耗平行處理器來進行部署。
平行處理器加速的機器學習具有自動駕駛應用,包括車道及道路標誌識別、避障、導航、及駕駛控制。加速的機器學習技術可被用來依據資料集訓練駕駛模型,該資料集定義對特定訓練輸入的適當反應。本文所述的平行處理器可以實現用於自動駕駛解決方案之日益複雜的神經網路的快速訓練,並且能夠在適合整合到自動駕駛車輛中的行動平台中部署低功率推論處理器。
平行處理器加速的深度神經網路已能使機器學習方法實現自動語音識別(ASR)。ASR包括建立一函數,該函數考量給定的輸入聲音序列計算最可能語言序列。使用深度神經網路的加速的機器學習已能夠替代先前 用於ASR的隱藏馬可夫模型(HMM)和高斯混合模型(GMM)。
平行處理器加速的機器學習也可被用來加速自然語言處理。自動學習程序可以利用統計推論演算法來產生對錯誤或不熟悉的輸入很強健的模型。示例性自然語言處理器應用包括人類語言之間的自動機器翻譯。
可將用於機器學習的平行處理平台分為訓練平台和部署平台。訓練平台通常是高度平行的,並且包括最佳化以加速多GPU單節點的訓練和多節點、多GPU的訓練。適於訓練的示例性平行處理器包括圖7的高度平行通用圖形處理單元700及圖8的多GPU計算系統800。相反的,部署的機器學習平台通常包括低功率平行處理器,適合用於諸如相機、自動機器人、及自動車等產品中。
圖13示出適用於使用訓練好的模型來執行推論的示例性推論系統單晶片(SOC)1300。SOC 1300可以整合處理組件,其包括媒體處理器1302、視覺處理器1304、GPGPU 1306及多核心處理器1308。SOC 1300可以另外包括晶載記憶體1305,其可致能可由處理組件之各者存取的共用晶載資料池。處理組件可以針對低功率運算被最佳化以使得能夠部署到各種的機器學習平台,包括自動車及自動機器人。例如,SOC 1300的一個實施方式可被用作自動車之主控制系統的一部分。在將SOC 1300配置用於自動車中的情況下,SOC被設計並配置為遵守部署管轄(jurisdiction)之相關功能安全標準。
在操作期間,媒體處理器1302和視覺處理器1304可一起工作以加速計算機視覺運算。媒體處理器1302可致能多個高解析度(例如,4K、8K)視訊流的低延遲解碼。經解碼的視訊流可被寫入晶載記憶體1305中的緩衝器。然後,視覺處理器1304可剖析經解碼的視訊,並且在準備使用經訓練的影像識別模型來處理幀的情況下對經解碼的視訊的幀執行初步的處理操作。例如,視覺處理器1304可以加速針對被用來對高解析度的視訊資料執行影像識別的CNN的卷積操作,而由GPGPU 1306執行後端模型計算。
多核心處理器1308可包括控制邏輯以輔助由媒體處理器1302和視覺處理器1304執行的資料傳輸和共用記憶體操作的定序和同步。多核心處理器1308還可以用作應用處理器以執行可以利用GPGPU 1306之推論計算能力的軟體應用。例如,導航及驅動邏輯的至少一部分可以在多核心處理器1308上執行的軟體中實現。此種軟體可以將計算工作負荷直接發佈給GPGPU 1306,或者可以將計算工作負荷發佈給多核心處理器1308,多核心處理器1308可以將那些操作的至少一部分卸載到GPGPU 1306。
GPGPU 1306可包括計算叢集,諸如高度平行通用圖形處理器單元700內的計算叢集706A-706H的低功率配置。GPGPU 1306內的計算叢集可支援專門最佳化以在經訓練的神經網路上執行推論計算的指令。例如,GPGPU 1306可支援用以執行諸如8位元及4位元整數向量 運算的低精度計算的指令。
用於機器學習的動態浮點單元精度降低
IEEE 754單精度二進制浮點格式指定32位元二進制表示,其具有1位元正負號(sign)、8位元指數、及24位元有效數(significand),其中明確地儲存23個位元。IEEE 754半精度二進制浮點格式指定16位元二進制表示,其具有1位元正負號、5位元指數、及11位元有效數,其中明確地儲存10個位元。針對非零指數值,隱含有效數位元被定義為1,且當所有指數位元為零時,隱含有效數位元被定義為零。本領域中已知能夠以單精度和半精度執行算術運算的浮點單元。例如,現有的浮點單元可以執行32位元單精度浮點運算(FP32)或雙16位元半精度浮點運算(FP16)。
本文所述的實施例透過對指令和相關聯的邏輯提供支持來擴展此能力以致能可變精度運算。允許可變精度運算的浮點指令可以藉由以盡可能低的精度執行運算而動態地增加通量。在一個實施例中,提供一組指令和相關聯的邏輯,其中透過以盡可能最低的精度執行浮點運算而沒有顯著的資料丟失來增加通量。在一個實施例中,提供一組指令和相關聯的邏輯,其中浮點邏輯將對比以較高精度執行的結果來驗證較低精度的結果,以確定是否發生任何顯著的資料丟失。
圖14示出依據實施例之動態精度浮點單元 1400的組件。在一個實施例中,動態精度浮點單元1400包括控制單元1402、一組內部暫存器1404、指數塊1406、及有效數塊1408。除了本領域中已知的浮點控制邏輯之外,在一個實施例中,控制單元1402額外地包括精度追蹤邏輯1412和數值變換單元1422。
在一個實施例中,精度追蹤邏輯1412是硬體邏輯,被配置為追蹤計算資料相對於目標精度的可用精度位元數。精度追蹤邏輯1412可以追蹤指數塊1406和有效數塊1408內的精度暫存器,以追蹤精度度量,諸如儲存由指數塊1406和有效數塊1408產生的計算值所需的最少精度位元數。在一個實施例中,精度度量包括在一組計算中表示資料所需的數值精度的移動平均值(running average)。在一個實施例中,精度度量包括在一組給定資料內的最大所需精度。在一個實施例中,動態精度浮點單元1400支援讀取或重置精度追蹤邏輯1412所使用的暫存器資料的指令,以產生本文所述的精度度量。在一個實施例中,容納動態精度浮點單元的計算單元支援設置或重置精度追蹤邏輯1412所使用的暫存器檔案的指令。在一個實施例中,精度追蹤邏輯1412監控該組內部暫存器1404內的誤差累加器1434。誤差累加器可被用來追蹤一組浮點運算中的累積誤差(例如,捨入誤差)。在一個實施例中,動態精度浮點單元1400支援一組指令,其包括重置誤差累加器1434的指令和讀取誤差累加器1434的指令。在一個實施例中,可以回應於作為運算元而被提供給指令的位元或旗標而重置誤差 累加器。
在一個實施例中,數值變換單元1422可被用來在執行較低精度運算時對資料執行中間數值變換,以防止或減輕執行運算時溢位(overflow)或欠位(underflow)的可能性。例如,當接近給定資料類型的精度限制時,數值變換單元1422可以使用對數來執行乘法或除法運算,並且透過指數轉換結果值。圖22中提供關於精度追蹤邏輯1412和數值變換單元1422的更多細節。
內部暫存器1404包括一組運算元暫存器1414,其儲存用於動態精度浮點單元1400的輸入值。在一個實施例中,運算元暫存器1414包括兩個運算元(A,B)。對於浮點輸入資料,輸入資料值可被分為指數部分(EXA,EXB)和有效數部分(SIGA,SIGB)。在各種實施例中,運算元暫存器1414並不限於支援兩個浮點輸入。在一個實施例中,運算元暫存器1414包括三個輸入運算元,例如,用以支援融和乘加、乘減、乘積-累加、或相關運算。在一個實施例中,運算元暫存器1414也可以儲存整數值,如在一個實施例中,動態精度浮點單元支援32位元、16位元、及8位元整數運算。在一個實施例中,具體的資料類型和基線精度可透過控制單元1402的輸入進行配置。
在一個實施例中,使用指數塊1406和有效數塊1408以動態精度執行浮點運算。在一個實施例中,可以透過有效數塊1408執行整數運算。在一個實施例中,可以使用指數塊1406和有效數塊1408執行雙8位元整數運算。
在一個實施例中,指數塊1406包括比較器1416和動態精度指數加法器1426。比較器確定指數之間的差異並且確定兩個指數中較小的一個。在浮點加法期間,將具有較小數值的指數調整成匹配具有較大數值的指數。動態精度指數加法器1426可被用來為FP16或FP32值加上指數值。有效數塊1408包括動態精度乘法器1418、移位單元1428、動態精度有效數加法器1438、及累加暫存器1448。
在一個實施例中,可以針對運算來指定FP16或FP32資料類型。在指定FP16的情況下,動態精度浮點單元1400可以供電執行FP32運算非必要的閘元件,同時保持邏輯以追蹤精度損失或誤差(例如,透過誤差累加器1434)。例如且在一個實施例中,誤差累加器1434可被用來追蹤一段指令週期內的一些捨入運算。在一個實施例中,誤差累加器保持一組指令中的累加捨入誤差總值。動態精度浮點單元1400可以致能支援從軟體清除或讀取誤差累加器1434的指令。當指定FP32的情況下,動態精度浮點單元1400可以嘗試以FP16精度執行FP32運算,同時供電超出以FP16精度執行運算所需的閘控元件和組件。基於輸入或中間值,在要求動態精度浮點單元1400以FP32執行運算的情況下,動態精度浮點單元1400可以初始地嘗試以FP16執行運算,並且依據需要擴展精度直到FP32。在可以FP16精度執行FP32運算的情況下,每個運算的功率需量減少,允許同時啟用更大量的計算元件。例如,諸如電池供電配置或僅被動冷卻配置的給定配置的動態電容及/或功率預 算限制可能不允許同時啟用所有的浮點單元或GPGPU內的其他計算元件。透過致能動態較低精度計算來降低一組浮點單元的動態功率可以增加給定的功率包絡內的GPGPU的計算單元的整體通量,因為可基於每個週期處理更多數量的線程而不超過動態功率限制。
圖15提供依據實施例之關於圖14的動態精度浮點單元1400的額外細節。在一個實施例中,動態精度乘法器1418包括一組輸入緩衝器1502以儲存有效數資料。在一個實施例中,該組輸入緩衝器包括儲存用於乘法或除法運算的兩個輸入值的兩個緩衝器。對於融和運算(例如,乘加、乘減),運算的乘積可以透過加法器被加到第三輸入及/或被儲存到累加器暫存器中。
在一個實施例中,動態精度乘法器1418的一些配置包括24位元輸入的輸入緩衝器,其可以明確地儲存用於單精度浮點輸入的24個位元的有效數資料,或者用於半精度浮點值的11個位元的有效數資料。在一些配置中,輸入緩衝器1502也可以是32位元的緩衝器以實現32位元整數值的乘法。在一個實施例中,呈現輸入緩衝器1502的單一配置,其可在32位元及24位元之間進行選擇或配置。在一個實施例中,輸出緩衝器1510類似地可在24位元及32位元之間進行配置或選擇,以選擇性地致能針對32位元或16位元浮點數的全精度32位元整數或24位元及/或11位元有效數值的儲存。
在一個實施例中,動態精度乘法器1418包括 乘法器1506及溢位乘法器1504。乘法器1506被配置成針對資料類型以半精度執行乘法或除法運算。例如,乘法器1506可以針對FP16浮點值的有效數執行11位元乘法運算及/或針對16位元整數運算執行16位元乘法運算。乘法器1506亦可針對INT8整數值執行8位元乘法運算。對於32位元浮點值或32位元整數值,乘法器1506可以以11位元(例如,FP16精度)針對24位元有效數執行乘法運算。若需要,乘法器1506可以針對24位元FP32有效數以16位元的精度執行乘法。在一個實施例中,可以透過精度暫存器1508追蹤對一給定組的輸入的運算所需的及結果的精度。在一個實施例中,可以在精度暫存器1508內透過精度損失來表示所需的和結果的精度,若乘法器1506的輸出透過輸出緩衝器1510輸出會導致該精度損失。在這種實施例中,精度暫存器1508可以追蹤與使用較低精度資料類型相關聯的精度損失以及與以低於所需精度執行運算相關聯的精度損失。
在一個實施例中,與動態精度乘法器1418相關聯的控制邏輯(例如,在圖14的控制單元1402內),可以監控與以較低精度(例如,FP16、INT16、INT8)執行較高精度(例如,FP32、INT32)的運算相關聯的精度損失。若精度損失將是顯著的,則控制邏輯可以使溢位乘法器1504能夠執行額外位元的精度的運算。此外,若控制邏輯依據當前的輸入確定將發生溢位或欠位,則致能溢位乘法器1504並且使用溢位乘法器1504和乘法器1506來執行乘法運 算。
對於動態精度指數加法器1426和動態精度有效數加法器1438,執行相似的控制操作。動態精度指數加法器1426包括一組8位元輸入緩衝器,其可以儲存FP32(8位元)及FP16(5位元)的指數資料。8位元輸入緩衝器1512也可以儲存一組INT-8輸入。可以類似地配置用於動態精度指數加法器1426的輸出緩衝器1520。動態精度有效數加法器1438包括一組輸入緩衝器1522,其可選自一組24位元及32位元緩衝器的其中一者,或者可被動態地配置成儲存具有24位元或32位元的輸入資料。在一個實施例中,輸入緩衝器1522僅單純地是32位元緩衝器,其亦可以儲存24位元輸入資料。可類似地配置用於動態精度有效數加法器1438的輸出緩衝器1530。動態精度指數加法器1426內的精度暫存器1518及動態精度有效數加法器1438內的精度暫存器1528可被配置成追蹤所執行的運算的精度損失。控制邏輯可以根據需要致能溢位加法器1514及/或溢位加法器1524,以防止溢位或欠位條件或者防止精度損失超過閾值。
返回圖14,在一個實施例中,動態精度浮點單元1400可以使用動態精度指數加法器1426和動態精度有效數加法器1438來執行雙INT8運算。例如,取代在整數運算期間禁用指數塊1406,指數塊1406可被配置成對第一組8位元整數運算元執行操作,而有效數塊1408可被配置成對第二組8位元運算元執行操作。為了能夠支援雙8位元乘 法、雙融和乘加、雙融和乘減、及/或其他基於乘法的運算,在一個實施例中,指數塊1406可以包括額外的乘法器1436。該乘法器可以是固定的8位元乘法器,以使用指數塊1406和有效數塊1408致能同時的雙8位元乘法運算。
圖16示出依據實施例之用於動態精度處理系統1600的線程分配。在一個實施例中,動態精度處理系統1600包括一組動態浮點單元1608A-1608D。動態浮點單元1608A-1608D可以執行一組操作線程1606A-1606D,其可以執行混合精度運算並且以可變的精度產生輸出資料。在一個實施例中,可在第一動態浮點單元1608A上由第一操作線程1606A執行第一操作(例如,加法、減法、乘法、除法等),其中第一操作線程1606A接受作為輸入的兩個16位元浮點值1602A-1602B,並且輸出一16位元浮點值FP16。第一操作可被執行為雙操作,其中由GPGPU執行的單指令允許混和精度FP16/FP32雙操作。雙操作的第二操作可以由第二動態浮點單元1608B執行的第二操作線程1606B執行,第二動態浮點單元1608B可以產生第二輸出1612,其為32位元浮點輸出。第二操作線程1606B配置第二動態浮點單元1608B接收兩個32位元浮點輸入值1603A-1603B。在一個實施例中,可以16位元的精度執行對兩個32位元浮點操作的操作,如果可以在沒有欠位、溢位、或過度(excessive)的情況下執行操作,則以較低精度執行操作不會發生精度損失。
在一個實施例中,動態精度處理系統1600可 以執行具有16位元運算元1604A及32位元運算元1604B的單指令。可以在動態浮點單元1608C上執行操作線程1606C。動態浮點單元1608C將嘗試以16位元精度執行混合精度的16位元/32位元操作,除非將發生顯著的精度損失或誤差。在一個實施例中,動態精度處理系統1600也可被配置成執行整數操作。例如,可以透過操作線程1606D經由動態浮點單元1608D對一對8位元整數輸出1605A-1605B執行操作,以產生一8位元整數輸出1616。在一個實施例中,動態浮點單元1608D被配置成執行雙8位元整數操作,其中兩個8位元整數操作可在單循環中執行。
圖17示出依據實施例之以低於要求的精度執行數值運算的邏輯1700。在一個實施例中,邏輯1700透過整合在圖14的動態精度浮點單元1400內的硬體來實現。在一個實施例中,邏輯1700部分地透過在圖14的動態精度浮點單元1400內的控制單元1402來執行。
在一個實施例中,邏輯1700可以接收以第一精度執行數值運算的請求,如方塊1702所示。數值運算可以是浮點運算或整數運算。第一精度可以是,例如,32位元精度。在一個實施例中,數值運算可以是在具有混和精度的運算時執行的第一精度的運算。邏輯1700可接著使用與低於第一精度的第二精度相關聯的位元數執行數值運算,如方塊1704所示。例如且在一個實施例中,用來執行運算的位元數可以是與16位元運算相關聯的位元數,同時第一精度為32位元精度。邏輯1700可以在方塊1706以第二 精度產生中間結果。邏輯1700可接著確定中間結果相對於第一精度的精度損失。可從暫存器讀取精度損失,該暫存器儲存在運算期間儲存的精度損失的指標。
邏輯1700可以在方塊1709確定精度損失是否小於閾值。在一個實施例中,與精度損失相關聯的閾值可以是軟體可配置的,雖然在一些實施例中使用硬體預設的閾值。在一個實施例中,還可透過在未使用的計算單元上平行執行全精度操作來確定精度損失的程度。然後可將降低的精度結果與全精度結果進行比較。若精度損失小於閾值,則邏輯1700可以以第二精度輸出結果,如方塊1712所示。若在方塊1709精度損失不小於閾值,則邏輯1700可以在方塊1710計算結果的剩餘位元,並且以第一精度輸出結果,如方塊1714所示。在一個實施例中,在方塊1710計算結果的剩餘位元可以透過溢位邏輯單元,諸如圖15中的溢位乘法器1504、溢位加法器1514、及/或溢位加法器1524來執行。
用於16位元浮點運算的操作的垂直堆疊
當以較低精度執行單指令多線程(SIMT)操作,在某些情況下,由於填充所有SIMD通道(lanes)需要的元件較多,可能難以保持底層的單指令多資料(SIMD)邏輯的充分利用。例如,被配置用於在128位元輸出暫存器上運行FP32的SIMD邏輯單元可以對四組輸入資料執行單一操作。若該邏輯單元被配置成對相同的四組輸入資料執 行FP16操作,則由於操作的精度較低,操作的底層的通量可能會增加,但SIMD利用會減半。SIMD未充分利用的一個解決方案是對八組輸入資料執行操作。然而,在邏輯單元上執行的軟體可能不需要如底層硬體可提供的那麼多的平行性。
例如,可將對輸入陣列執行迭代操作的迴圈向量化,使得陣列的每個迭代作為單獨的SIMT線程平行被執行。可以在計算單元內的底層SIMD/向量邏輯上以單一操作執行單獨的SIMT線程。當執行透過編譯器迴圈向量化邏輯衍生的平行指令時,短於八次迭代的迴圈將不會填滿可用於執行針對那些運算所產生(spawn)的線程的全部八個SIMD通道,從而降低計算單元的整體利用。另外,若底層硬體具有N個SIMD通道,非N倍數的任何數量的向量化迭代將需要在一不完整的SIMD單元上執行剩餘迭代。此外,在執行向量化操作的主體之前,向量化可能需要單獨執行剝離(peel)迴圈。
本文所述的一些實施例可以透過將多個不相關的FP16操作堆疊到單一SIMD單元中以供執行來提高SIMD利用。在SIMD單元具有8個通道可用於執行的情況下,線程排程邏輯可以以N/2或N/4為單位分派線程,並且允許執行相同的或相容的操作的不相關的幾組線程共用單一SIMD單元。另外,一個實施例致能SIMD通道排程,其允許動態組裝的SIMT線程組與向量SIMD線程的混合。
圖18示出依據實施例之用於SIMD單元的迴 圈向量化(loop vectorization)。在一個實施例中,軟體邏輯可以包括透過在資料處理系統上執行的編譯器軟體自動向量化的迴圈。迴圈可以包括剝離迴圈1802、向量化的主迴圈1804、及剩餘迴圈1806。在一些配置中,迴圈向量化在對存取對齊的記憶體的資料執行時效率最高。例如,可以配置GPGPU使得向量記憶體存取可以在64位元組塊1801A-1801F中最高效率地被執行。在此種配置中,剝離迴圈1802包括從主迴圈剝離以使未對齊的記憶體存取能夠從主迴圈中區隔出來的迴圈迭代的子集。向量化的主迴圈1804包括迴圈的大部分迭代。可以平行執行向量化的主迴圈的每個迭代,並且針對每個元素的記憶體存取在特定的記憶體邊界上對齊。剩餘迴圈1806包括在向量化的主迴圈1804之後的一組迭代。剩餘迴圈1806中的迭代通常可能不像主迴圈那樣有效率地平行執行。
在一個實施例中,也可將剝離迴圈1802和剩餘迴圈1806向量化。在一個實施例中,剝離迴圈1802、主迴圈1804、及剩餘迴圈1806之各者可以在FP16 SIMD8單元上執行,其中可以平行執行相同操作的八個實例。可以使用執行遮罩1812、執行遮罩1814、及執行遮罩1816在SIMD硬體(例如,FP16 SIMD8單元1808A-1808C)上平行執行迴圈迭代,該等執行遮罩之各者為操作週期啟用及禁用SIMD通道。對於所示的剝離迴圈1802及剩餘迴圈1806,在執行遮罩1812及執行遮罩1816中選擇元素的子集。在向量化的主迴圈1804的執行遮罩1814中選擇所有的通道。
在一個實施例中,對於具有不活動的通道的SIMD單元,可被配置成在那些不活動的通道上執行其他操作。對於給定的週期,在排程邏輯為SIMD單元(例如,FP16 SIMD8 1808A、FP16 SIMD8 1808C)配置一組不活動的通道的情況下,取代在循環的期間閒置那些通道,排程器可以堆疊其他多元素SIMD線程或分配SIMT線程給其他閒置的SIMD通道。
圖19示出依據實施例之線程處理系統1900。在一個實施例中,線程處理系統1900包括SIMD計算單元,諸如SIMD8浮點單元1920,其包括多個動態浮點單元1922A-1922H。取決於操作,SIMD8浮點單元1920可以在單一循環中執行八個或更多個相同或相似的操作。例如且在一個實施例中,八個動態浮點單元1922A-1922H之各者可以以FP16精度執行單一操作。在一個實施例中,八個動態浮點單元1922A-1922H之各者可以在單一循環中執行兩對INT8操作。
在一些情況下,例如具有如圖18中所示的剝離或剩餘迴圈,在循環的期間不是所有的SIMD浮點單元的通道都將是活動的。為了提高利用,可以較小的粒度分配SIMD槽,以使得其他未使用的SIMD通道能夠被利用。例如,SIMD8浮點單元1920通常會以八個操作粒度被分配線程或操作,其中少於八個操作會造成潛在的計算效率的損失。在一個實施例中,SIMD通道可被單向量SIMD線程佔用,其包括選擇至少八個元素的執行遮罩或具有至少八 個元素的SIMT線程組。
為了提高SIMD利用,一個實施例將八個SIMD通道分成兩個SIMD4槽(例如,SIMD4槽1910、SIMD4槽1912)。可以各種方式填充SIMD4槽。在一個實施例中,將結合以覆蓋總共四個SIMD通道的兩個單獨的SIMD線程(SIMD線程1902、SIMD線程1904)分配給SIMD4槽(例如,SIMD4槽1910)。在一個實施例中,可以將SIMT線程組1906分配給SIMD4槽1912。SIMT線程組1906可以包括四個線程的倍數(例如,4、8、12、16等)的任何數量的線程。可以一次處理四個線程來處理SIMT線程組1906內的線程,處理SIMT線程組1906內所有線程所需的循環數取決於組內的線程數。
圖20示出依據實施例之分配線程用於計算的邏輯2000。在一個實施例中,透過圖19中的線程處理系統1900執行邏輯2000。在一個實施例中,邏輯2000可以在具有第一數量的通道的SIMD單元處接收第一組線程,如方塊2002所示。邏輯2000接著可以確定第一組線程是否填充SIMD單元之全部的SIMD通道,如方塊2003所示。若第一組線程包括足夠的SIMT線程或者第一組線程的線程包括足夠的SIMD向量元素來填充全部的SIMD通道,則邏輯2000可以將第一組線程分配給SIMD單元,如方塊2004所示。
若第一組線程未填充全部的SIMD通道,如方塊2003處所確定的,則邏輯2000可以在方塊2006處將第 一組線程分配給少於第一數量的通道的第二數量的通道。可以透過將SIMD線程分配給SIMD單元並遮蔽掉不活動的通道來執行分配。也可以透過將一組SIMT線程分配給SIMD單元來執行分配。然後,邏輯可以堆疊一或多個額外組的線程來填充全部的SIMD通道,如方塊2008所示。額外組的線程可以指定佔用未被初始線程佔用的通道的活動SIMD通道。
用以致能用於低精度資料之標準化及變換的系統
當以低精度資料類型執行操作時,必須小心避免數值運算期間資料的溢位或欠位。這種責任通常落在正在開發低精度演算法的資料科學家身上。由於低精度算術的侷限性,許多神經網路已經適應於使用每個元素僅佔用一或兩個位元的二進制及/或三進制值。然而,需要可以使用防護邏輯來致能N位元低精度算術的整數及浮點運算邏輯單元在算術運算期間警告或試圖防止顯著的精度損失。在一個實施例中,本文所述之動態精度浮點單元包括當數值計算接近低精度計算的極限時發出警告的邏輯。
如圖14中所示,動態精度浮點單元1400可包括精度追蹤邏輯1412及數值變換單元1422。在一個實施例中,精度追蹤邏輯1412追蹤計算資料相對於目標精度的剩餘精度的可用位元。若可以追蹤精度,中間資料的可用位元用以確定在一個實施例中相對於輸入資料或輸出資料以更高精度計算的中間資料值是否可以輸出精度儲存而沒有 顯著的精度損失或捨入誤差。例如且在一個實施例中,特定的低精度運算可以以更高的精度有效地執行,並且精度追蹤邏輯1412可以確定計算的結果是否會溢出給定的輸出精度。在一個實施例中,本文所述的邏輯單元可以輸出狀態資訊,其指示由於捨入誤差導致的精度損失的程度。在一個實施例中,邏輯單元可以對資料執行中間數值變換以防止顯著的資料損失。接著,邏輯單元可以輸出經變換的值。在一個實施例中,可以基於輸出提供的輸出及狀態資訊以編程方式導出全精度或接近全精度輸出值。
圖21示出可使用由本文所述之實施例所提供的計算邏輯來處理的深度神經網路2100。深度神經網路(DNN)是包括多個神經網路層2102A-2102N的人工神經網路。每一層代表一組非線性計算操作,以與本文所述之機器學習神經網路一致的方式執行特徵抽取及變換。每個接續層使用來自前一層的輸出作為輸入。在卷積神經網路的情況下,融合乘加邏輯(例如,FMA邏輯2104A、2104B)可被用來計算特徵圖和過濾資料之間的點積以產生激勵圖(activation map)資料,其被提供作為接續層的輸入。
可使用與二進制、三進制、或N位元特徵圖相結合的二進制或三進制權重來實現低精度神經網路。一些神經網路仍然可受益於使用N位元特徵圖及N位元過濾器的計算的增加精度。在一些實施方式中,可以以低精度處理神經網路的N位元特徵和權重而不會顯著降低輸出誤差。然而,實現低精度N位元神經網路(例如,FP16、 INT8)的資料科學家通常應該知道由於以低精度連續計算而可能出現的捨入誤差或越界資料。若FMA邏輯2104A-2104B中的精度追蹤邏輯(例如,圖14的精度追蹤邏輯1412)確定權重或特徵圖資料正接近資料類型的可用精度的限度,則狀態位元可由FMA邏輯2104A-2014B設置。狀態位元可以作為正在開發存在於神經網路層2102A-2102N內的神經網路模型的資料科學家的指標,指示該模型可能需要最佳化或可能需要更大的數值精度。
在一個實施例中,可以致能正規化及變換邏輯2106A-2106B以在將特徵圖資料提供給下一個神經網層用於輸入之前,對特徵圖資料執行權重正規化或數值變換。在正規化及變換邏輯2106A-2106B的應用在每個階段都是可選的,並且只有在處理即將到來的層的期間可能發生顯著的精度損失、溢位或欠位條件時才被執行。在一個實施例中,輸出自神經網路之一層的權重或特徵圖可以透過正規化及變換邏輯2106A-2106B的實例而被自動地正規化。
在一個實施例中,正規化及變換邏輯2106A-2106B可以使用圖14的數值變換單元1422來變換特徵圖資料或權重資料。輸出自神經層的特徵圖資料可以基於輸出自一組函數的一組資料。在此種實施例中,提供了一組特定的低精度指令,其能夠自動調整N位元神經網路資料以防止災難性的精度損失。可由正規化及變換邏輯2106A-2106B執行的示例性變換或正規化包括權重正規化至一範 圍的值,或一組永久的及可逆的特徵資料變換。在一個實施例中,可以執行權重正規化以將一組過濾器權重的動態範圍壓縮到預定範圍內。可以在例如[-1,1]的範圍內將權重資料正規化,這可以保持權重值之間的相對差異,同時縮小權重值的整體數值。在一個實施例中,可透過資料集的平均值將神經網路權重或特徵圖資料正規化。
在一個實施例中,使用接近資料類型之範圍限制的資料的神經網路計算可以在資料被用於計算之前進行變換。例如,使用可能導致溢位的大的值的乘法運算可被執行為對數的加法而不是乘法運算。雖然這種變換可能導致一定程度的精度損失,但是將能夠在不溢出被分配來執行運算的位元數的情況下執行計算。例如,可以如方程式(1)中那樣呈現一系列的運算。
若計算單元內的精度追蹤邏輯確定這樣的運算可能溢位或欠位,則運算可被轉換成方程式(2)。
f=10(log(A)+log(B)+log(C)-log(D)-log(E)) (2)
方程式(2)可被執行來產生結果而不觸發資料類型的溢位。在一個實施例中,正規化及變換邏輯2106A-2016B可以將輸出值轉換成對數值進行儲存,並且在將該值使用於本文所述之機器學習計算之前透過取冪轉換值。
圖22是依據實施例之邏輯2200的流程圖,該 邏輯2200用以防止在機器學習執行低精度運算時的錯誤或顯著的精度損失。在一個實施例中,可以透過如圖14中的動態精度浮點單元1400內的精度追蹤邏輯1412及數值變換單元1422來執行邏輯2200。
在一個實施例中,邏輯2200可以依據與神經網路的層相關聯的過濾器和特徵圖資料來計算激勵圖,如方塊2202所示。然後,邏輯2200可以追蹤在計算用於神經網路的層的激勵圖期間所發生的精度損失。邏輯2200接著可以在方塊2205處確定精度損失是否接近閾值。若在方塊2205處精度損失沒有接近預設或配置的閾值,則邏輯2200可以繼續計算用於接續層的激勵圖(並且應用激勵函數),直到且除非在方塊2205處發生接近閾值的精度損失。當精度損失接近閾值,邏輯2200可以在方塊2207處確定是否啟用自動數值變換。若在方塊2207處,例如,透過被用來執行該組數值運算的指令啟用自動變換,則邏輯2200可以在方塊2208處轉換神經網路資料以減少由於精度損失引起的誤差。邏輯2200可以執行本文所述的任何數值變換,包括範圍內的資料正規化或透過平均值。不管在方塊2207處是否啟用自動變換,邏輯2200可以在方塊2210處輸出指示精度損失正接近閾值的狀態。可以將狀態輸出為狀態旗標,其輸出自計算單元作為執行運算的結果。程式設計師可以透過對執行程式執行演算法調整或者調整用於執行機器學習的神經網路模型來配置軟體邏輯以回應這種狀態。
附加的示例性圖形處理系統
上述實施例的細節可被併入在下述的圖型處理系統和裝置內。圖23至圖36的圖形處理系統和裝置示出可實現上述任何及所有技術的替代系統和圖形處理硬體。
附加的示例性圖形處理系統概要
圖23是依據實施例之處理系統2300的方塊圖。在各種實施例中,系統2300包括一或多個處理器2302及一或多個圖形處理器2308,並且可以是單一處理器桌上型系統、多處理器工作站系統、或者是具有大量處理器2302或處理器核心2307的伺服器系統。在一個實施例中,系統2300是被併入用於行動、手持式、或嵌入式裝置的系統單晶片(SoC)積體電路內的處理平台。
系統2300之一實施例可包括基於伺服器的遊戲平台、包括遊戲和媒體控制台、行動遊戲機、手持式遊戲機、或線上遊戲機等的遊戲機,或者併入於前述各者內。在一些實施例中,系統2300是行動電話、智慧型電話、平板計算裝置或行動上網裝置。資料處理系統2300還可包括可穿戴裝置、與可穿戴裝置耦接、或者被整合進可穿戴裝置內,該可穿戴裝置諸如智慧型手錶可穿戴裝置、智慧型眼鏡裝置、擴增實境裝置、或虛擬實境裝置。在一些實施例中,資料處理系統2300是電視或機上盒裝置,其具有一或多個處理器2302和由一或多個圖形處理器2308所產生的圖形介面。
在一些實施例中,一或多個處理器2302各包括一或多個處理器核心2307以處理指令,當執行該等指令時將執行用於系統和使用者軟體的操作。在一些實施例中,一或多個處理器核心2307之各者被配置成處理特定指令集2309。在一些實施例中,指令集2309可有助於複雜指令集計算(CISC)、精簡指令集計算(RISC)、或透過超長指令字(VLIW)的計算。多個處理器核心2307可以各自處理不同的指令集2309,其可包括有助於其他指令集之仿真的指令。處理器核心2307亦可包括其他的處理裝置,諸如數位信號處理器(DSP)。
在一些實施例中,處理器2302包括快取記憶體2304。取決於結構,處理器2302可具有單一內部快取或者多階內部快取。在一些實施例中,在處理器2302的各種組件之間共用快取記憶體。在一些實施例中,處理器2302亦使用外部快取(例如,第3階(L3)快取或最後一階快取(LLC))(未示出),其可使用已知的快取一致性技術在處理器核心2307之間共用。處理器2302中還包括暫存器檔案2306,其可包括用於儲存不同類型之資料的不同類型的暫存器(例如,整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器)。某些暫存器可以是通用暫存器,而其他的暫存器可以專用於處理器2302的設計。
在一些實施例中,處理器2302與處理器匯流排2310耦接,以在處理器2302和系統2300中的其他組件之間傳輸諸如位址、資料、或控制信號的通訊信號。在一個 實施例中,系統2300使用示例性「集線器」系統架構,包括記憶體控制器集線器2316及輸入輸出(I/O)控制器集線器2330。記憶體控制器集線器2316有助於記憶體裝置和系統2300之其他組件之間的通訊,而I/O控制器集線器(ICH)2330提供透過本地I/O匯流排至I/O裝置的連接。在一個實施例中,記憶體控制器集線器2316的邏輯被整合在處理器內。
記憶體裝置2320可以是動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快取記憶體裝置、相變記憶體裝置、或者具有合適性能以作為處理記憶體的一些其他記憶體裝置。在一個實施例中,記憶體裝置2320可操作為用於系統2300的系統記憶體,以儲存用於當一或多個處理器2302執行應用程式或者處理時使用的資料2322及指令2321。記憶體控制器集線器2316亦與可選的外部圖形處理器2312耦接,外部圖形處理器2312可與處理器2302中的一或多個圖形處理器2308通訊,以執行圖形和媒體操作。
在一些實施例中,ICH 2330使週邊設備可以透過高速I/O匯流排連接至記憶體裝置2320及處理器2302。I/O週邊設備包括,但不限於,音訊控制器2346、韌體介面2328、無線收發器2326(例如,Wi-Fi、藍牙)、資料儲存裝置2324(例如,硬碟驅動機、快取記憶體等)、及用於將舊有(例如,個人系統2(PS/2))裝置耦接至系統的舊有I/O控制器2340。一或多個通用序列匯流排(USB)控制器 2342連接諸如鍵盤和滑鼠2344組合的輸入裝置。網路控制器2334亦可耦接至ICH 2330。在一些實施例中,高效能網路控制器(未示出)耦接至處理器匯流排2310。應當理解的是,所示的系統2300是示例性的而非限制性的,因為亦可使用不同配置的其他類型的資料處理系統。例如,I/O控制器集線器2330可被整合在一或多個處理器2302之內,或者記憶體控制器集線器2316及I/O控制器集線器2330可被整合進個別的外部圖形處理器,諸如外部圖形處理器2312。
圖24是具有一或多個處理器核心2402A-2402N、整合式記憶體控制器2414、及整合式圖形處理器2408之處理器2400的實施例的方塊圖。具有與本文任何其他圖式之元件相同標號(或名稱)的圖24的該些元件,可以類似於本文他處所描述的任何方式操作或發生功用,但不限於此。處理器2400可包括高達且包括由虛線框表示的額外核心2402N的額外核心。處理器核心2402A-2402N之各者包括一或多個內部快取單元2404A-2404N。在一些實施例中,每個處理器核心亦可存取一或多個共用快取單元2406。
內部快取單元2404A-2404N及共用快取單元2406表示處理器2400內的快取記憶體階層。快取記憶體階層可包括在每個處理器核心內的至少一階的指令和資料快取,以及一或多階的共用中階快取,諸如第2階(L2)、第3階(L3)、第4階(L4)、或其他階的快取,其中在外部記憶體 之前的最高階快取被歸類為LLC。在一些實施例中,快取一致性邏輯維持各種快取單元2406及2404A-2404N之間的一致性。
在一些實施例中,處理器2400亦可包括一組一或多個匯流排控制器單元2416及系統代理核心2410。一或多個匯流排控制器單元2416管理一組週邊匯流排,諸如一或多個週邊組件互連匯流排(例如,PCI、PCI Express)。系統代理核心2410為各種處理器組件提供管理功能。在一些實施例中,系統代理核心2410包括一或多個整合式記憶體控制器2414,以管理對各種外部記憶體裝置(未示出)的存取。
在一些實施例中,一或多個處理器核心2402A-2402N包括對同時多線程的支持。在這種實施例中,系統代理核心2410包括用於在多線程處理期間協調和操作核心2402A-2402N的組件。系統代理核心2410還可包括電力控制單元(PCU),其包括用以調節處理器核心2402A-2402N及圖形處理器2408之電力狀態的邏輯和組件。
在一些實施例中,處理器2400還包括圖形處理器2408以執行圖形處理操作。在一些實施例中,圖形處理器2408與該組共用快取單元2406、以及包括一或多個整合式記憶體控制器2414的系統代理核心2410耦接。在一些實施例中,顯示控制器2411與圖形處理器2408耦接,以驅動圖形處理器輸出至一或多個耦接的顯示器。在一些實施 例中,顯示控制器2411可以是經由至少一個互連而與圖形處理器耦接的單獨模組,或者可被整合在圖形處理器2408或系統代理核心2410之內。
在一些實施例中,基於環形之互連單元2412被用來耦接處理器2400的內部組件。然而,可使用替代的互連單元,諸如,點對點互連、切換式互連或其他技術,包括此領域中熟知的技術。在一些實施例中,圖形處理器2408經由I/O鏈路2413與環形互連2412耦接。
示例性I/O鏈路2413表示多種I/O互連中之至少一者,包括有助於各種處理器組件與高效能嵌入式記憶體模組2418(諸如,eDRAM模組)之間的通訊之封裝上I/O互連。在一些實施例中,處理器核心2402A-2402N之各者及圖形處理器2408使用嵌入式記憶體模組2418作為共用最後一階快取記憶體。
在一些實施例中,處理器核心2402A-2402N為執行同一指令集架構的均質核心。在另一實施例中,就指令集架構(ISA)而言,處理器核心2402A-2402N是異質的,其中處理器核心2402A-2402N之其中一或多者執行第一指令集,而其他核心中之至少一者執行第一指令集的子集或不同的指令集。在一個實施例中,就微架構而言,處理器核心2402A-2402N是異質的,其中具有相對較高功耗的一或多個核心與具有較低功耗的一或多個核心耦接。此外,處理器2400可在一或多個晶片上實現,或者實現為除了其他組件之外還具有所示組件的SoC積體電路。
圖25是圖形處理器2500的方塊圖,圖形處理器2500可以是分離式(discrete)圖形處理單元、或者可以是與複數個處理核心整合的圖形處理器。在一些實施例中,圖形處理器經由至圖形處理器上的暫存器的記憶體映射I/O介面以及以放置到處理器記憶體中的命令來通訊。在一些實施例中,圖形處理器2500包括記憶體介面2514,用以存取記憶體。記憶體介面2514可以是至本地記憶體、一或多個內部快取、一或多個共用外部快取、及/或系統記憶體的介面。
在一些實施例中,圖形處理器2500亦包括顯示控制器2502,以驅動顯示輸出資料至顯示裝置2520。顯示控制器2502包括一或多個疊覆平面的硬體,用於多個視訊層或使用者介面元件的顯示及合成。在一些實施例中,圖形處理器2500包括視訊編解碼引擎2506,用以將媒體編碼至一或多個媒體編碼格式、自一或多個媒體編碼格式解碼媒體、或者在一或多個媒體編碼格式之間轉碼媒體,該一或多個媒體編碼格式包括,但不限於,諸如MPEG-2的動畫專家群(MPEG)格式、諸如H.264/MPEG-4 AVC的先進視訊編碼(AVC)格式、以及動畫與電視工程師協會(SMPTE)421M/VC-1、與諸如JPEG的聯合影像專家群(JPEG)格式、以及動畫JPEG(MJPEG)格式。
在一些實施例中,圖形處理器2500包括區塊影像轉移(BLIT)引擎2504,用以執行包括,例如,位元邊界(bit-boundary)區塊轉移的二維(2D)光柵化操作。然而, 在一個實施例中,使用圖形處理引擎(GPE)2510的一或多個組件來執行2D圖形操作。在一些實施例中,GPE 2510是用於執行包括三維(3D)圖形操作及媒體操作之圖形操作的計算引擎。
在一些實施例中,GPE 2510包括3D管線2512用於執行3D操作,諸如使用作用於3D基元形狀(例如,矩形、三角形等)的處理函數來渲染三維影像及場景。3D管線2512包括可編程及固定功能元件,其在元件內執行各種任務及/或產生執行線程至3D/媒體子系統2515。僅管3D管線2512可被用來執行媒體操作,但GPE 2510的實施例亦包括媒體管線2516,其具體地被用來執行諸如視訊後處理及影像增強的媒體操作。
在一些實施例中,媒體管線2516包括固定功能或可編程邏輯單元,以代替或代表視訊編解碼引擎2506執行一或多個專用媒體操作,諸如視訊解碼加速、視訊解交錯(de-interlacing)、及視訊編碼加速。在一些實施例中,媒體管線2516還包括線程產生(thread spawning)單元,以產生用於在3D/媒體子系統2515上執行的線程。產生的線程在3D/媒體子系統2515中包括的一或多個圖形執行單元上執行針對媒體操作的計算。
在一些實施例中,3D/媒體子系統2515包括用於執行由3D管線2512及媒體管線2516所產生的線程的邏輯。在一個實施例中,管線傳送線程執行請求至3D/媒體子系統2515,其包括線程分派邏輯,用於仲裁及分派各種 請求至可用的線程執行資源。執行資源包括用以處理3D及媒體線程的圖形執行單元之陣列。在一些實施例中,3D/媒體子系統2515包括用於線程指令和資料的一或多個內部快取。在一些實施例中,該子系統亦包括共用記憶體,其包括暫存器和可定址記憶體,用以在線程之間共用資料以及儲存輸出資料。
示例性附加的圖形處理引擎
圖26是依據一些實施例之圖形處理器的圖形處理引擎2610的方塊圖。在一個實施例中,圖形處理引擎(GPE)2610是圖25中所示之GPE 2510的一個版本。具有與本文任何其他圖式之元件相同標號(或名稱)的圖26的元件,可以類似於本文他處所描述的任何方式操作或發生功用,但不限於此。例如,示出圖25的3D管線2512和媒體管線2516。媒體管線2516在GPE 2610的一些實施例中是可選的,並且可不被明確地包括在GPE 2610內。例如並且在至少一個實施例中,單獨的媒體及/或影像處理器被耦接到GPE 2610。
在一些實施例中,GPE 2610耦接或包括命令串流器2603,其提供命令串流至3D管線2512及/或媒體管線2516。在一些實施例中,命令串流器2603與記憶體耦接,記憶體可以是系統記憶體,或者是內部快取記憶體及共用快取記憶體中的一或多個。在一些實施例中,命令串流器2603從記憶體接收命令,並將該些命令發送至3D管線 2512及/或媒體管線2516。該些命令是提取自環形緩衝器的指令(directives),該環形緩衝器儲存用於3D管線2512及媒體管線2516的命令。在一個實施例中,環形緩衝器還可包括批次命令緩衝器,其儲存多個命令的批次。用於3D管線2512的命令還可以包括對儲存在記憶體中的資料的參照,諸如但不限於用於3D管線2512的頂點和幾何資料及/或用於媒體管線2516的影像資料和記憶體物件。3D管線2512及媒體管線2516透過經由在個別管線內的邏輯執行操作或者透過將一或多個執行線程分派給圖形核心陣列2614來處理命令和資料。
在各種實施例中,3D管線2512可以透過處理指令並且將執行執行線程分派給圖形核心陣列2614來執行一或多個著色器程式,諸如頂點著色器、幾何著色器、像素著色器、片段著色器、計算著色器、或其他著色器程式。圖形核心陣列2614提供了一統一的執行資源塊。圖形核心陣列2614內的多用途執行邏輯(例如,執行單元)包括對各種3D API著色器語言的支持,並且可以執行與多個著色器相關聯多個同時的執行線程。
在一些實施例中,圖形核心陣列2614也包括執行邏輯,用以執行媒體功能,諸如視訊及/或影像處理。在一個實施例中,執行單元額外地包括可編程以執行除了圖形處理操作之外的平行通用計算操作的通用邏輯。通用邏輯可以平行地或者與圖23的處理器核心2307內的通用邏輯、圖24中的核心2402A-2402N、或本文所述的任何 其他的處理器一起執行處理操作。
由在圖形核心陣列2614上執行的線程所產生的輸出資料可以將資料輸出到統一返回緩衝器(URB)2618中的記憶體。URB 2618可以儲存用於多個線程的資料。在一些實施例中,URB 2618可被用來在圖形核心陣列2614上執行的不同線程之間傳送資料。在一些實施例中,URB 2618還可被用於圖形核心陣列上的線程與共用功能邏輯2620內的固定功能邏輯之間的同步。
在一些實施例中,圖形核心陣列2614是可縮放的,使得陣列包括可變數量的圖形核心,每個圖形核心具有依據GPE 2610之目標功率和性能等級的可變數量的執行單元。在一個實施例中,執行資源是可動態縮放的,使得可依據需要啟用或禁用執行資源。
圖形核心陣列2614與共用功能邏輯2620耦接,共用功能邏輯2620包括在圖形核心陣列中的圖形核心之間共用的多個資源。共用功能邏輯2620內的共用功能是硬體邏輯單元,其為圖形核心陣列2614提供專門的輔助功能。在各種實施例中,共用功能邏輯2620包括但不限於取樣器2621、數學2622、及線程間(inter-thread)通訊(ITC)2623邏輯。此外,一些實施例實現共用功能邏輯2620內的一或多個快取2625。在給定的專門功能的需求不足以包含在圖形核心陣列2614內的情況下實施共用功能。相反的,將該專門功能的單個實例實現為共用功能邏輯2620中的獨立實體,並且在圖形核心陣列2614內的執行資 源間共用。在各種實施例之間,在圖形核心陣列2614之間共用並且被包括在圖形核心陣列2614內的精確功能組是不同的。
圖27是圖形處理器2700的另一實施例的方塊圖。具有與本文任何其他圖式之元件相同標號(或名稱)的圖27的元件,可以類似於本文他處所描述的任何方式操作或發生功用,但不限於此。
在一些實施例中,圖形處理器2700包括環形互連2702、管線前端2704、媒體引擎2737、及圖形核心2780A-2780N。在一些實施例中,環形互連2702將圖形處理器耦接至其他處理單元,包括其他圖形處理器或一或多個通用處理器核心。在一些實施例中,圖形處理器是整合在多核處理系統內的許多處理器的其中一者。
在一些實施例中,圖形處理器2700透過環形互連2702接收一批命令。傳入的命令由管線前端2704中的命令串流器2703解譯。在一些實施例中,圖形處理器2700包括可縮放執行邏輯,用以經由圖形核心2780A-2780N執行3D幾何處理和媒體處理。針對3D幾何處理命令,命令串流器2703提供命令給幾何管線2736。針對至少一些媒體處理命令,命令串流器2703提供命令給視訊前端2734,其與媒體引擎2737耦接。在一些實施例中,媒體引擎2737包括用於視訊和影像後處理的視訊品質引擎(VQE)2730和用以提供硬體加速的媒體資料編碼及解碼的多格式編碼/解碼(MFX)2733引擎。在一些實施例中,幾何管線2736和媒 體引擎2737各針對由至少一個圖形核心2780A提供的線程執行資源產生執行線程。
在一些實施例中,圖形處理器2700包括可縮放線程執行資源,其主要部分為模組化核心2780A-2780N(有時被稱為核心片(slice)),各具有多個子核心2750A-2750N、2760A-2760N(有時被稱為核心子片)。在一些實施例中,圖形處理器2700可以具有任何數量的圖形核心2780A至2780N。在一些實施例中,圖形處理器2700包括圖形核心2780A,其具有至少第一子核心2750A和第二子核心2760A。在其他實施例中,圖形處理器是具有單一子核心(例如,2750A)的低功率處理器。在一些實施例中,圖形處理器2700包括多個圖形核心2780A-2780N,各者包括一組第一子核心2750A-2750N及一組第二子核心2760A-2760N。該組第一子核心2750A-2750N中的每個子核心包括至少第一組執行單元2752A-2752N及媒體/紋理取樣器2754A-2754N。該組第二子核心2760A-2760N中的每個子核心包括至少第二組執行單元2762A-2762N及取樣器2764A-2764N。在一些實施例中,每個子核心2750A-2750N、2760A-2760N共用一組共用資源2770A-2770N。在一些實施例中,共用資源包括共用快取記憶體和像素操作邏輯。其他的共用資源也可以被包括在圖形處理器的各種實施例中。
示例性附加的執行單元
圖28示出線程執行邏輯2800,其包括在GPE的一些實施例中採用的處理元件之陣列。具有與本文任何其他圖式之元件相同標號(或名稱)的圖28的元件,可以類似於本文他處所描述的任何方式操作或發生功用,但不限於此。
在一些實施例中,線程執行邏輯2800包括著色器處理器2802、線程分派器2804、指令快取2806、包括複數個執行單元2808A-2808N的可縮放執行單元陣列、取樣器2810、資料快取2812、及資料埠2814。在一個實施例中,可縮放執行單元陣列可以依據工作負載的計算需求透過啟用或禁用一或多個執行單元(例如,執行單元2808A、2808B、2808C、2808D、至2808N-1及2808N中的任一個)來動態地縮放。在一個實施例中,所包含的組件係經由鏈接到每個組件的互連結構進行互連。在一些實施例中,線程執行邏輯2800包括一或多個連接,其經由指令快取2806、資料埠2814、取樣器2810、及執行單元2808A-2808N中的一或多者連接到記憶體,諸如系統記憶體或快取記憶體。在一些實施例中,每個執行單元(例如,2808A)是獨立的可編程通用計算單元,其能夠執行多個同時的硬體線程,同時為每個線程平行處理多個資料元件。在各種實施例中,執行單元2808A-2808N的陣列是可縮放的,以包括任意數量的單獨執行單元。
在一些實施例中,執行單元2808A-2808N主要被用來執行著色器程式。著色器處理器2802可以處理各 種著色器程式並透過線程分派器2804分派與著色器程式相關聯的執行線程。在一個實施例中,線程分派器包括用以仲裁來自圖形和媒體管線的線程啟動請求並且在執行單元2808A-2808N中的一或多個執行單元上將請求的線程實例化的邏輯。例如,幾何管線(例如,圖27的2736)可將頂點、曲面細分、或幾何著色器分派給線程執行邏輯2800(圖28)進行處理。在一些實施例中,線程分派器2804也可以處理來自正在執行的著色器程式的執行時線程產生請求。
在一些實施例中,執行單元2808A-2808N支援包括對許多標準3D圖形著色器指令原生支援的指令集,使得來自圖形程式庫(例如,Direct 3D及OpenGL)的著色器程式以最小轉譯執行。執行單元支援頂點及幾何處理(例如,頂點程式、幾何程式、頂點著色器)、像素處理(例如,像素著色器、片段著色器)及通用處理(例如,計算和媒體著色器)。執行單元2808A-2808N之各者能夠進行多發佈(multi-issue)單指令多資料(SIMD)執行,且多線程的運算在面對較高延遲的記憶體存取時能實現高效的執行環境。每個執行單元內的各個硬體線程具有專用高頻寬暫存器檔案及相關聯的獨立線程狀態。執行是每時脈多發佈至能夠進行整數、單精度和雙精度浮點運算、SIMD分支功能、邏輯運算、超越(transcendental)運算、及其他雜項運算的管線。在等待來自記憶體或共用功能之一的資料時,執行單元2808A-2808N內的相依邏輯導致等待線程休眠直 到請求的資料已被返回。當等待線程正在休眠時,硬體資源可專用於處理其他線程。例如,在與頂點著色器操作相關聯的延遲期間,執行單元可以執行用於像素著色器、片段著色器、或包括不同頂點著色器之另一類型的著色器程式的操作。
執行單元2808A-2808N中的每個執行單元對資料元件的陣列進行操作。資料元件的數量是「執行大小」或用於指令的通道數量。執行通道是用於執行指令內的資料元件存取、遮蔽、及流程控制的邏輯單元。通道的數量可以獨立於用於特定圖形處理器之物理算術邏輯單元(ALU)或浮點單元(FPU)的數量。在一些實施例中,執行單元2808A-2808N支援整數及浮點資料類型。
執行單元指令集包括SIMD指令。可將各種資料元件作為緊縮資料類型儲存於暫存器中,並且執行單元將依據元件的資料大小來處理各種元件。例如,當對256位元寬的向量進行操作時,將向量的256位元儲存在暫存器中,並且執行單元將該向量作為四個單獨的64位元緊縮資料元件(四字(QW)大小資料元件)、八個單獨的32位元緊縮資料元件(雙字(DW)大小資料元件)、十六個單獨的16位元緊縮資料元件(字(W)大小資料元件)、或三十二個單獨的8位元資料元件(位元組(B)大小資料元件)進行操作。然而,不同的向量寬度和暫存器大小是可能的。
一或多個內部指令快取(例如,2806)被包括在線程執行邏輯2800中,以快取用於執行單元的快取線程 指令。在一些實施例中,包括一或多個資料快取(例如,2812)以在線程執行期間快取線程資料。在一些實施例中,包括取樣器2810以提供用於3D操作的紋理取樣和用於媒體操作的媒體取樣。在一些實施例中,取樣器2810包括專門的紋理或媒體取樣功能,以在將取樣資料提供給執行單元之前,在取樣處理期間處理紋理或媒體資料。
在執行期間,圖形和媒體管線經由線程產生及分派邏輯將線程啟動請求發送給線程執行邏輯2800。一旦一組幾何物件已被處理並且被光柵化成為像素資料,將調用著色器處理器2802內的像素處理器邏輯(例如,像素著色器邏輯、片段著色器邏輯等),以進一步計算輸出資料並使結果被寫入到輸出表面(例如,色彩緩衝器、深度緩衝器、模板緩衝器等)。在一些實施例中,像素著色器或片段著色器計算各種頂點屬性的值,該些值將在經光柵化的物件上進行內插。在一些實施例中,著色器處理器2802內的像素處理器邏輯接著執行應用程式設計介面(API)提供的像素或片段著色器程式。為了執行著色器程式,著色器處理器2802經由線程分派器2804將線程分派至執行單元(例如,2808A)。在一些實施例中,像素著色器2802使用取樣器2810中的紋理取樣邏輯來存取儲存在記憶體中的紋理圖中的紋理資料。對紋理資料和輸入幾何資料的算術運算計算用於每個幾何片段的像素色彩資料,或者從進一步處理丟棄一或多個像素。
在一些實施例中,資料埠2814提供記憶體存 取機制,用於線程執行邏輯2800輸出經處理的資料至記憶體,以在圖形處理器輸出管線上處理。在一些實施例中,資料埠2814包括或耦接到一或多個快取記憶體(例如,資料快取2812),以經由資料埠快取用於記憶體存取的資料。
圖29是示出依據一些實施例之圖形處理器指令格式2900的方塊圖。在一或多個實施例中,圖形處理器執行單元支援具有多種格式之指令的指令集。實線框繪示了通常包括在執行單元指令中的組件,而虛線則包括可選的組件或者僅包括在指令之子集中的組件。在一些實施例中,所描述和繪示的指令格式2900是巨集指令,因為它們是供應給執行單元的指令,而不是在指令被處理之後即由指令解碼所產生的微操作。
在一些實施例中,圖形處理器執行單元原生地支援128位元指令格式2910的指令。根據所選的指令、指令選項、和運算元的數量,64位元壓緊指令格式2930可用於某些指令。原生的128位元指令格式2910提供對所有指令選項的存取,而一些選項及操作在64位元格式2930中受到限制。64位元格式2930中可用的原生指令隨實施例而不同。在一些實施例中,使用索引欄位2913中的一組索引值來部分地壓緊指令。執行單元基於索引值硬體參考一組壓緊表,並且使用壓緊表輸出來重構128位元格式2910的原生指令。
針對各個格式,指令操作碼2912定義執行單 元將要執行的操作。執行單元跨各個運算元的多個資料元件平行地執行各個指令。例如,回應於添加指令,執行單元跨表示紋理元件或圖片元件的各個色彩通道執行同時的添加操作。按照預設,執行單元跨運算元的全部資料通道執行每個指令。在一些實施例中,指令控制欄位2914致能對諸如通道選擇(例如,預測)及資料通道順序(例如,調換(swizzle))之某些執行選項的控制。針對128位元指令格式2910,執行大小(exec-size)欄位2916限制了將被平行執行的資料通道的數量。在一些實施例中,執行大小欄位2916不適用於在64位元壓緊指令格式2930中使用。
一些執行單元指令具有高達三個運算元,包括兩個來源運算元src0 2920、src1 2922以及一個目的地2918。在一些實施例中,執行單元支援雙目的地指令,其中目的地之其中一者是隱含的。資料操縱指令可以具有第三來源運算元(例如,SRC2 2924),其中指令操作碼2912判定來源運算元的數量。指令的最後一個來源運算元可以是與指令一起傳遞的立即(例如,硬編碼的)值。
在一些實施例中,128位元指令格式2910包括存取/定址模式欄位2926,其,指定例如是使用直接暫存器定址模式或是使用間接暫存器定址模式。當使用直接暫存器定址模式時,由指令中的位元直接地提供一或多個運算元的暫存器位址。
在一些實施例中,128位元指令格式2910包括存取/定址模式欄位2926,其指定用於指令的定址模式 及/或存取模式。在一個實施例中,存取模式被用以定義指令的資料存取對齊。一些實施例支援存取模式包括16位元組對齊的存取模式及1位元組對齊的存取模式,其中存取模式的位元組對齊決定指令運算元的存取對齊。例如,當在第一模式時,指令可將位元組對齊的定址用於來源及目的地運算元,且在第二模式時,指令可將16位元組對齊的定址用於所有的來源及目的地運算元。
在一個實施例中,存取/定址模式欄位2926的定址模式部分決定指令是使用直接或間接定址。當使用直接暫存器定址模式時,指令中的位元直接地提供一或多個運算元的暫存器位址。當使用間接暫存器定址模式時,可基於定址暫存器值及指令中的定址立即欄位來計算一或多個運算元的暫存器位址。
在一些實施例中,基於操作碼2912位元欄位將指令分組以簡化操作碼解碼2940。針對8位元操作碼,位元4、5、及6允許執行單元決定操作碼的類型。所示之精確的操作碼分組僅是示例性的。在一些實施例中,移動及邏輯操作碼群組2942包括資料移動及邏輯指令(例如,移動(mov)、比較(cmp))。在一些實施例中,移動及邏輯群組2942共用五個最高有效位元(MSB),其中移動(mov)指令是0000xxxxb的形式,且邏輯指令是0001xxxxb的形式。流量控制指令群組2944(例如,呼叫、跳越(jmp))包括0010xxxxb(例如,0x20)之形式的指令。雜項指令群組2946包括指令的混合,包括0011xxxxb(例如,0x30)之形 式的同步指令(例如,等待、發送)。平行數學指令群組2948包括0100xxxxb(例如,0x40)之形式的在分量方面(component-wise)的算術指令(例如,加、乘(mul))。平行數學群組2948跨資料通道平行地執行算數運算。向量數學群組2950包括0101xxxxb(例如,0x50)之形式的算數指令(例如,dp4)。向量數學群組對向量運算元執行諸如點積計算的算術。
示例性附加的圖形管線
圖30是圖形處理器3000的另一實施例的方塊圖。具有與本文任何其他圖式之元件相同標號(或名稱)的圖30的元件,可以類似於本文他處所描述的任何方式操作或發生功用,但不限於此。
在一些實施例中,圖形處理器3000包括圖形管線3020、媒體管線3030、顯示引擎3040、線程執行邏輯3050、及渲染輸出管線3070。在一些實施例中,圖形處理器3000是在包括一或多個通用處理核心之多核處理系統內的圖形處理器。圖形處理器係透過至一或多個控制暫存器(未示出)的暫存器寫入或經由環形互連3002發佈至圖形處理器3000的命令而被控制。在一些實施例中,環形互連3002將圖形處理器3000耦接到其他處理元件,諸如其他圖形處理器或通用處理器。來自環形互連3002的命令係由命令串流器3003解譯,其將指令提供至圖形管線3020或媒體管線3030的個別元件。
在一些實施例中,命令串流器3003指示頂點提取器3005的操作,頂點提取器3005從記憶體讀取頂點資料並且執行由命令串流器3003提供的頂點處理命令。在一些實施例中,頂點提取器3005將頂點資料提供給頂點著色器3007,其對各個頂點執行座標空間轉換及打光操作。在一些實施例中,頂點提取器3005及頂點著色器3007透過經由線程分派器3031將執行線程分派至執行單元3052A-3052B來執行頂點處理指令。
在一些實施例中,執行單元3052A-3052B為向量處理器的陣列,其具有用於執行圖形和媒體操作的指令集。在一些實施例中,執行單元3052A-3052B具有特定用於各個陣列或者在陣列之間共用的附加的L1快取3051。該快取可被配置成為資料快取、指令快取、或單一快取,其被分割成在不同的分區中包含資料及指令。
在一些實施例中,圖形管線3020包括曲面細分元件,用以執行3D物件之硬體加速的曲面細分。在一些實施例中,可編程的輪廓著色器3011配置曲面細分操作。可編程的域著色器3017提供曲面細分輸出的後端評估。曲面細分器3013在輪廓著色器3011的方向上操作,並且包含專用邏輯以基於被提供作為圖形管線3020之輸入的粗略幾何模型來產生一組細微的幾何物件。在一些實施例中,若未使用曲面細分,則可繞過曲面細分元件(例如,輪廓著色器3011、曲面細分器3013、及域著色器3017)。
在一些實施例中,完整的幾何物件可透過幾 何著色器3019經由被分派至執行單元3052A-3052B的一或多個線程來處理,或者可直接前進到剪裁器3029。在一些實施例中,幾何著色器對整個幾何物件進行操作,而不是如在圖形管線的先前階段中對頂點或是頂點的面片(patches)進行操作。若曲面細分被停用,則幾何著色器3019從頂點著色器3007接收輸入。在一些實施例中,幾何著色器3019可透過幾何著色器程式被編程,以在曲面細分單元被禁用的情況下執行幾何曲面細分。
在光柵化之前,剪裁器3029處理頂點資料。剪裁器3029可以是固定功能剪裁器或是具有剪裁及幾何著色器功能的可編程剪裁器。在一些實施例中,渲染輸出管線3070中的光柵化及深度測試元件3073分派像素著色器以將幾何物件轉換成它們的每個像素表示。在一些實施例中,像素著色器邏輯包括在線程執行邏輯3050中。在一些實施例中,應用程式可繞過光柵化及深度測試元件3073,且經由串流輸出單元3023存取未被光柵化的頂點資料。
圖形處理器3000具有允許資料及訊息在處理器的主要組件之間傳遞的互連匯流排、互連結構、或一些其他互連機構。在一些實施例中,執行單元3052A-3052B及相關聯的快取3051、紋理及媒體取樣器3054、及紋理/取樣器快取3058經由資料埠3056互連以執行記憶體存取,並與處理器的渲染輸出管線組件通訊。在一些實施例中,取樣器3054、快取3051、3058及執行單元3052A-3052B各具有獨立的記憶體存取路徑。
在一些實施例中,渲染輸出管線3070包含光柵化及深度測試元件3073,其將基於頂點的物件轉換成相關聯的基於像素的表示。在一些實施例中,光柵化邏輯包括分窗器(windower)/遮蔽器(masker)單元以執行固定功能三角形及線光柵化。相關聯的渲染快取3078及深度快取3079在一些實施例中也是可用的。像素操作組件3077對資料執行基於像素的操作,然而在一些實例中,與2D操作相關聯的像素操作(例如,具有混色的位元區塊影像傳送)是由2D引擎3041執行,或者在顯示時間由顯示控制器3043使用疊加顯示平面代替。在一些實施例中,共用L3快取3075可用於所有的圖形組件,允許在不使用主系統記憶體的情況下共用資料。
在一些實施例中,圖形處理器媒體管線3030包括媒體引擎3037及視訊前端3034。在一些實施例中,視訊前端3034接收來自命令串流器3003的管線命令。在一些實施例中,媒體管線3030包括獨立的命令串流器。在一些實施例中,視訊前端3034在將媒體命令傳送至媒體引擎3037之前處理該等命令。在一些實施例中,媒體引擎3037包括線程產生(spawning)功能性以產生線程用於經由線程分派器3031分派至線程執行邏輯3050。
在一些實施例中,圖形處理器3000包括顯示引擎3040。在一些實施例中,顯示引擎3040在處理器3000外部,並且經由環形互連3002、或一些其他互連匯流排或結構與圖形處理器耦接。在一些實施例中,顯示引擎3040 包括2D引擎3041及顯示控制器3043。在一些實施例中,顯示引擎3040包含能夠獨立於3D管線進行操作的專用邏輯。在一些實施例中,顯示控制器3043與顯示裝置(未示出)耦接,該顯示裝置可以是如在膝上型電腦中的系統整合式顯示裝置,或者是透過顯示裝置連接器附接的外部顯示裝置。
在一些實施例中,圖形管線3020及媒體管線3030可被配置成基於多個圖形及媒體程式介面執行操作,並且不特定於任一個應用程式介面(API)。在一些實施例中,用於圖形處理器的驅動軟體將特定於特定圖形或媒體程式庫的API呼叫轉譯成可由圖形處理器處理的命令。在一些實施例中,提供對開放圖形程式庫(OpenGL)、開放計算語言(OpenCL)、及/或Vulkan圖形及計算API的支援,這些均來自科納斯組織(Khronos Group)。在一些實施例中,亦可提供對來自微軟公司的Direct3D程式庫的支援。在一些實施例中,可支援這些程式庫的組合。亦可提供對開放源電腦視覺程式庫(OpenCV)的支援。還將支援具有相容3D管線的未來API,若能將該未來API的管線映射到圖形處理器的管線。
圖形管線程式設計
圖31A是示出依據一些實施例之圖形處理器命令格式3100的方塊圖。圖31B是示出依據實施例之圖形處理器命令序列3110的方塊圖。圖31A中的實線框繪示了 圖形命令中通常包括的元件,而虛線則包括可選的或僅包括在圖形命令之子集中的元件。圖31A的示例性圖形處理器命令格式3100包括用以識別命令之目標客戶端3102的資料欄位、命令操作碼(opcode)3104、及用於命令的相關資料3106。子操作碼3105及命令大小3108亦包括在一些命令中。
在一些實施例中,客戶端3102指定圖形裝置之處理命令資料的客戶端單元。在一些實施例中,圖形處理器命令剖析器檢驗每個命令的客戶端欄位以調節命令的進一步處理,並將命令資料路由到適當的客戶端單元。在一些實施例中,圖形處理器客戶端單元包括記憶體介面單元、渲染單元、2D單元、3D單元、及媒體單元。每個客戶端單元具有處理命令的相對應的處理管線。一旦命令由客戶端單元接收,該客戶端單元讀取操作碼3104,及若存在的話,讀取子操作碼3105以判定待執行的操作。該客戶端單元使用在資料欄位3106中的資訊來執行命令。針對某些命令,需要顯式命令大小3108來指定命令的大小。在一些實施例中,命令剖析器基於命令操作碼自動地判定命令中之至少一些命令的大小。在一些實施例中,經由雙字的倍數來對齊命令。
圖31B中的流程圖示出示例性圖形處理器命令序列3110。在一些實施例中,表徵圖形處理器之實施例的資料處理系統之軟體或韌體使用所示之命令序列的版本來設定、執行、及終止一組圖形操作。僅出於示例之目的 示出及描述範例命令序列,因為實施例不限於這些特定命令或此命令序列。此外,命令可作為命令序列中的命令批次而被發佈,使得圖形處理器將至少部分地同時處理命令序列。
在一些實施例中,圖形處理器命令序列3110可以管線排清命令3112開始,以使任何作用中的圖形管線完成用於管線的當前未決的命令。在一些實施例中,不會同時操作3D管線3122及媒體管線3124。執行管線排清以使作用中的圖形管線完成任何未決的命令。回應於管線排清,用於圖形處理器的命令剖析器將暫停命令處理直到作用中的製圖引擎完成未決的操作,且相關的讀取快取是無效的。可選地,渲染快取中被標記為「髒(dirty)」的任何資料可被排清至記憶體。在一些實施例中,管線排清命令3112可被用於管線同步或在將圖形處理器置於低功率狀態之前使用。
在一些實施例中,當命令序列要求圖形處理器顯式地在管線之間切換時,使用管線選擇命令3113。在一些實施例中,管線選擇命令3113在發佈管線命令之前在執行上下文內僅被需要一次,除非該上下文是用於發佈針對兩個管線的命令。在一些實施例中,在經由管線選擇命令3113的管線切換之前立即需要管線排清命令3112。
在一些實施例中,管線控制命令3114配置圖形管線以供操作,並且被用以編程3D管線3122和媒體管線3124。在一些實施例中,管線控制命令3114配置用於作用 中的管線的管線狀態。在一個實施例中,管線控制命令3114被用於管線同步,並且在處理一批命令之前被用以清除作用中的管線內的一或多個快取記憶體的資料。
在一些實施例中,返回緩衝狀態命令3116被用以配置一組返回緩衝器以供個別的管線寫入資料。一些管線操作需要一或多個返回緩衝器的分配、選擇、或組態,該些操作在處理期間將中間資料寫入該一或多個返回緩衝器中。在一些實施例中,圖形處理器亦使用一或多個返回緩衝器來儲存輸出資料,並執行跨線程通訊。在一些實施例中,返回緩衝狀態3116包括選擇要用於一組管線操作的返回緩衝器的大小及數量。
命令序列中的剩餘命令基於用於操作的作用中的管線而不同。基於管線判定3120,命令序列係針對從3D管線狀態3130開始的3D管線3122設計,或者針對從媒體管線狀態3140開始的媒體管線3124設計。
用於配置3D管線狀態3130的命令包括3D狀態設定命令,用於頂點緩衝狀態、頂點元件狀態、恆定色彩狀態、深度緩衝狀態、以及在處理3D基元命令之前要被配置的其他狀態變數。這些命令的值係至少部分地依據使用中的特定3D API來判定。在一些實施例中,3D管線狀態3130命令亦能夠選擇性地停用或者繞過某些管線元件,若那些元件將不被使用。
在一些實施例中,3D基元3132命令係用以提交3D基元以由3D管線處理。經由3D基元3132命令被傳遞 至圖形處理器的命令及相關聯參數被轉送至圖形管線中的頂點提取功能。頂點提取功能使用3D基元3132命令資料來產生頂點資料結構。頂點資料結構被儲存在一或多個返回緩衝器中。在一些實施例中,3D基元3132命令被用以經由頂點著色器對3D基元執行頂點操作。為了處理頂點著色器,3D管線3122將著色器執行線程分派至圖形處理器執行單元。
在一些實施例中,3D管線3122係經由執行3134命令或事件而被觸發。在一些實施例中,暫存器寫入觸發命令執行。在一些實施例中,執行係經由命令序列中的「前進(go)」或「啟動(kick)」命令而被觸發。在一個實施例中,命令執行係使用管線同步命令來從圖形管線中排清命令序列而被觸發。3D管線將針對3D基元執行幾何處理。一旦操作完成,所得到的幾何物件將被光柵化,且像素引擎將所得到的像素上色。控制像素著色及像素後端操作的額外命令亦可被包括用於那些操作。
在一些實施例中,圖形處理器命令序列3110在執行媒體操作時遵循媒體管線3124路徑。一般而言,用於媒體管線3124之編程的具體用途和方式取決於待執行的媒體或計算操作。具體的媒體解碼操作可在媒體解碼期間被卸載至媒體管線。在一些實施例中,亦可繞過媒體管線,且可使用由一或多個通用處理核心所提供的資源來整體或部分地執行媒體解碼。在一個實施例中,媒體管線亦包括用於通用圖形處理器單元(GPGPU)操作的元件,其中 圖形處理器被用以使用並非顯式地與圖形基元之渲染相關的計算著色器程式來執行SIMD向量操作。
在一些實施例中,以與3D管線3122類似的方式組態媒體管線3124。將一組組態媒體管線狀態3140的命令分配或放置在命令序列中的媒體物件命令3142之前。在一些實施例中,媒體管線狀態命令3140包括用以組態將被用來處理媒體物件之媒體管線元件的資料。這包括用以組態媒體管線內之視訊解碼及視訊編碼邏輯,諸如編碼或解碼格式的資料。在一些實施例中,媒體管線狀態命令3140亦支援使用一或多個指標指向「間接」狀態元件,其包含一批狀態設定。
在一些實施例中,媒體物件命令3142將指標供應至媒體物件以供媒體管線處理。媒體物件包括記憶體緩衝器,其包含待處理的視訊資料。在一些實施例中,在發佈媒體物件命令3142之前,所有的媒體管線狀態必須是有效的。一旦組態了管線狀態且將媒體物件命令3142排進佇列,媒體管線3124經由執行命令3144或等效的執行事件(例如,暫存器寫入)而被觸發。來自媒體管線3124的輸出可接著由3D管線3122或媒體管線3124所提供的操作進行後處理。在一些實施例中,以與媒體操作相似的方式組態及執行GPGPU操作。
圖形軟體結構
圖32示出依據一些實施例之用於資料處理系 統3200的示例性圖形軟體結構。在一些實施例中,軟體結構包括3D圖形應用程式3210、作業系統3220、及至少一個處理器3230。在一些實施例中,處理器3230包括圖形處理器3232及一或多個通用處理器核心3234。圖形應用程式3210及作業系統3220各在資料處理系統之系統記憶體3250中執行。
在一些實施例中,3D圖形應用程式3210包含一或多個著色器程式,其包括著色器指令3212。著色器語言指令可以是高階著色器語言,諸如高階著色器語言(HLSL)或是OpenGL著色器語言(GLSL)。應用程式亦包括適於通用處理器核心3234執行之機器語言形式的可執行指令3214。應用程式亦包括由頂點資料所界定的圖形物件3216。
在一些實施例中,作業系統3220為來自微軟公司的Microsoft® Windows®作業系統、專有的類UNIX作業系統、或使用Linux核心之變體的開源類UNIX作業系統。作業系統3220可支援圖形API 3222,諸如Direct3D API、OpenGL API、或Vulkan API。當使用Direct3D API時,作業系統3220使用前端著色器編譯器3224來將HLSL之形式的任何著色器指令3212編譯成較低階的著色器語言。該編譯可以是即時(JIT)編譯或者該應用程式可執行著色器預編譯。在一些實施例中,高階著色器在3D圖形應用程式3210的編譯期間被編譯成低階著色器。在一些實施例中,以中間形式提供著色器指令3212,諸如由Vulkan API 使用的標準可攜式中間表示(Standard Portable Intermediate Representation,SPIR)的版本。
在一些實施例中,使用者模式圖形驅動器3226包含後端著色器編譯器3227,以將著色器指令3212轉換成硬體特定表示。當使用OpenGL API時,GLSL高階語言形式的著色器指令3212被傳遞至使用者模式圖形驅動器3226用於編譯。在一些實施例中,使用者模式圖形驅動器3226使用作業系統核心模式功能3228來與核心模式圖形驅動器3229通訊。在一些實施例中,核心模式圖形驅動器3229與圖形處理器3232通訊以分派命令及指令。
IP核心實現
至少一個實施例的一或多個態樣可由儲存在機器可讀取媒體上的代表性程式碼實施,該機器可讀取媒體表示及/或定義在諸如處理器之積體電路內的邏輯。舉例來說,機器可讀取媒體可包括表示處理器內之各種邏輯的指令。當由機器讀取時,指令可使機器製造邏輯來執行本文所述的技術。被稱為「IP核心」的此種表示為用於積體電路的可重複使用的邏輯單元,其可被儲存在有形的、機器可讀取媒體上作為描述積體電路之結構的硬體模型。硬體模型可被供應給各種客戶或製造設施,其將硬體模型加載在製造積體電路的製造機器上。可製造積體電路使得電路執行與本文所述之任何實施例相關聯地描述的操作。
圖33是示出依據實施例之可被用來製造積體 電路以執行運算的IP核心開發系統3300的方塊圖。可使用IP核心開發系統3300來產生可被整合進較大型設計或被用來建構整個積體電路(例如,SOC積體電路)的模組化的、可重複使用的設計。設計設施3330可以高階程式語言(例如,C/C++)來產生IP核心設計的軟體模擬3310。軟體模擬3310可被用來使用模擬模型3312設計、測試、及驗證IP核心的行為。模擬模型3312可包括功能、行為、及/或時序模擬。接著可從模擬模型3312建立或合成暫存器傳送層級(RTL)設計3315。RTL設計3315為模型化硬體暫存器之間的數位信號流之積體電路的行為的抽象化,包括使用模型化的數位信號執行的相關聯的邏輯。除了RTL設計3315之外,亦可建立、設計、或合成在邏輯層級或電晶體層級的較低階設計。因此,初始設計和模擬的特定細節可不同。
RTL設計3315或等效物可進一步由設計設施合成為硬體模型3320,其可以是硬體描述語言(HDL)格式或實體設計資料的某些其他表示。可進一步模擬或測試HDL來驗證該IP核心設計。可使用非揮發性記憶體3340(例如,硬碟、快閃記憶體、或任何非揮發性儲存媒體)來儲存IP核心設計用以傳遞至第三方製造設施3365。替代地,可經由有線連接3350或無線連接3360來(例如,透過網際網路)傳輸IP核心設計。接著製造設施3365可製造至少部分依據IP核心設計的積體電路。所製造的積體電路可被配置成依據本文所述之至少一個實施例執行操作。
示例性系統單晶片積體電路
圖34-36依據本文所述的各種實施例示出可使用一或多個IP核心來製造的示例性積體電路及相關聯的圖形處理器。除了示出的以外,還可包括其他的邏輯和電路,其包括附加的圖形處理器/核心、週邊介面控制器、或通用處理器核心。
圖34是示出依據實施例之可使用一或多個IP核心來製造的示例性系統單晶片積體電路3400的方塊圖。示例性積體電路3400包括一或多個應用程式處理器3405(例如,CPU)、至少一個圖形處理器3410、且可額外地包括影像處理器3415及/或視訊處理器3420,其中任一者可為來自相同或多個不同設計設施的模組化IP核心。積體電路3400包括週邊或匯流排邏輯,其包括USB控制器3425、UART控制器3430、SPI/SDIO控制器3435、及I2S/I2C控制器3440。另外,積體電路可包括顯示裝置3445,其耦接至高解析度多媒體介面(HDMI)控制器3450及行動產業處理器介面(MIPI)顯示介面3455中的一或多者。儲存可由包括快閃記憶體及快閃記憶體控制器的快閃記憶體子系統3460提供。記憶體介面可經由記憶體控制器3465提供,用於存取SDRAM或SRAM記憶體裝置。一些積體電路另外包括嵌入式安全引擎3470。
圖35是示出依據實施例之可使用一或多個IP核心來製造的系統單晶片積體電路的示例性圖形處理器3510的方塊圖。圖形處理器3510可以是圖34之圖形處理器 3410的變形。圖形處理器3510包括頂點處理器3505及一或多個片段處理器3515A-3515N(例如,3515A、3515B、3515C、3515D、至3515N-1、及3515N)。圖形處理器3510可透過獨立的邏輯執行不同的著色器程式,使得頂點處理器3505被最佳化以執行頂點著色器程式的操作,而一或多個片段處理器3515A-3515N執行片段的片段(例如,像素)著色操作或像素著色器程式。頂點處理器3505執行3D圖形管線的頂點處理階段,並產生基元和頂點資料。片段處理器3515A-3515N使用頂點處理器3505產生的基元和頂點資料來產生被顯示在顯示裝置上的幀緩衝器。在一個實施例中,將片段處理器3515A-3515N最佳化以執行OpenGL API中提供的片段著色器程式,其可被用來執行與Direct 3D API中提供的像素著色器程式類似的操作。
圖形處理器3510另外包括一或多個記憶體管理單元(MMU)3520A-3520B、快取3525A-3525B、及電路互連3530A-3530B。一或多個MMU 3520A-3520B針對圖形處理器3510,包括針對頂點處理器3505及/或片段處理器3515A-3515N,提供虛擬至實體位址映射,除了儲存在一或多個快取3525A-3525B中的頂點或影像/紋理資料之外,其還可參考儲存在記憶體中的頂點或影像/紋理資料。在一個實施例中,一或多個MMU 3520A-3520B可以與系統內的其他MMU同步,該系統包括與圖34之一或多個應用處理器3405、影像處理器3415、及/或視訊處理器3420相關聯的一或多個MMU,使得每個處理器3405-3420可參與共 享或統一的虛擬記憶體系統。依據實施例,一或多個電路互連3530A-3530B使圖形處理器3510能夠透過SoC的內部匯流排或者透過直接連接與SoC內的其他IP核心介接。
圖36是示出依據實施例之可使用一或多個IP核心來製造的系統單晶片積體電路之另外的示例性圖形處理器3610的方塊圖。圖形處理器3610可以是圖34之圖形處理器3410的變形。圖形處理器3610包括圖35之積體電路3510的一或多個MMU 3520A-3520B、快取3525A-3525B、及電路互連3530A-3530B。
圖形處理器3610包括一或多個著色器核心3615A-3615N(例如,3615A、3615B、3615C、3615D、3615E、3615F、至3615N-1、及3615N),其提供統一的著色器核心架構,其中單核心或類型或核心可執行所有類型的可編程著色器碼,包括實現頂點著色器、片段著色器、及/或計算著色器的著色器程式碼。實施例和實現方式中存在的著色器的確切數量可以不同。此外,圖形處理器3610包括核心間(inter-core)任務管理器3605,其充當線程分派器以將執行線程分派給一或多個著色器核心3615A-3615N及拼貼(tiling)單元3618以加速用於基於圖磚渲染的拼貼操作,其中針對場景的渲染操作在影像空間中被細分,例如利用場景內的本地空間一致性或是最佳化內部快取的利用。
以下子句及/或範例與特定實施例或其範例有關。可在一或多個實施例中的任何地方使用範例中的細 節。不同實施例或範例的各種特徵可與所包括的某些特徵以及被排除在外的其他特徵進行各種組合,以適應各種不同的應用。範例可包括諸如方法、執行該方法之動作的機構、包括指令的至少一個機器可讀取媒體,當由機器執行時該些指令,使該機器執行該方法的動作、或者依據本文所述之實施例和範例的裝置或系統的標的。各種組件可以是用於執行所述運算或功能的機構。
本文所述之實施例是指被配置成執行某些運算或具有預定功能的硬體的特別配置,諸如特定應用積體電路(ASIC)。此種電子裝置通常包括耦接至一或多個其他組件的一或多個處理器的集合,諸如一或多個儲存裝置(非暫態機器可讀取儲存媒體)、使用者輸入/輸出裝置(例如,鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器的集合與其他組件的耦接通常透過一或多個匯流排及橋接器(也稱為匯流排控制器)。儲存裝置和乘載網路流量的信號分別代表一或多個機器可讀取儲存媒體和機器可讀取通訊媒體。因此,給定的電子裝置的儲存裝置通常儲存用於在該電子裝置的一或多個處理器的集合上執行的程式碼及/或資料。
當然,可使用軟體、韌體、及/或硬體的不同組合來實現實施例的一或多個部分。在整個詳細描述中,為了解釋的目的,闡述了許多具體細節以便提供對本發明的透徹理解。然而,對於本領域之技術人員而言將顯而易見的是,可在沒有這些具體細節中的一些的情況下實 施這些實施例。在某些情況下,未詳細闡述公知的結構和功能以避免模糊實施例的發明標的。因此,本發明的範圍和精神應依據所附的申請專利範圍來判斷。

Claims (16)

  1. 一種在多晶片模組上的加速器,包括:記憶體堆疊,其包括多個記憶體晶粒;及圖形處理單元(GPU),其透過一或多個記憶體控制器與該記憶體堆疊耦合,該GPU包括具有單指令多線程(SIMT)結構的複數個多處理器,該些多處理器用以執行至少一個單指令,該至少一個單指令用以加速與機器學習框架相關聯的線性代數子程式;該至少一個單指令用以使該GPU的至少一部分對具有不同精度的輸入執行浮點運算,該浮點運算是二維矩陣乘法和累加運算;其中該複數個多處理器的至少一部分包括混合精度核心,該混合精度核心用以執行該至少一個單指令的線程,該混合精度核心包括浮點單元,用以以第一精度執行該線程的第一運算以及以第二精度執行該線程的第二運算;並且其中該第一運算是具有至少一個16位元浮點輸入的乘法,以及該第二運算是具有32位元浮點輸入的累加。
  2. 如請求項1之加速器,該記憶體堆疊包括高頻寬記憶體。
  3. 如請求項1之加速器,其中該記憶體堆疊與該GPU位 在相同的物理封裝上。
  4. 如請求項1之加速器,該混合精度核心以16位元精度執行該第一運算並且以32位元精度執行該第二運算。
  5. 如請求項1之加速器,其中該第一運算具有二或多個16位元浮點輸入。
  6. 如請求項1之加速器,該混合精度核心可配置成從該二維矩陣乘法和累加運算輸出16位元浮點值。
  7. 一種加速機器學習運算的方法,該方法包括:在圖形處理單元(GPU)上解碼單指令,該GPU具有單指令多線程(SIMT)結構,該GPU透過一或多個記憶體控制器與記憶體堆疊耦合;以及透過該GPU內的一或多個多處理器執行該單指令,該單指令用以使該GPU的至少一部分執行二維矩陣乘法和累加運算,以加速與機器學習框架相關聯的線性代數子程式,其中執行該單指令包括在該一或多個多處理器的混合精度核心上執行該單指令的線程,該混合精度核心包括浮點單元,用以以第一精度執行該線程的第一運算以及以第二精度執行該線程的第二運算,其中該第一運算是具有至少一個16位元浮點輸入的乘法,以及該第二運算是具有32位元浮點輸入的累加。
  8. 如請求項7之方法,還包括使用該混合精度核心對輸入執行多個運算以產生二維輸出矩陣,以及透過該一或多個記憶體控制器將該二維輸出矩陣儲存到該記憶體堆疊。
  9. 如請求項8之方法,其中該記憶體堆疊包括高頻寬記憶體,並且與該GPU位在相同的物理封裝上。
  10. 如請求項7之方法,其中該第一精度是16位元精度,並且該第二精度是32位元精度。
  11. 如請求項7之方法,還包括產生該二維矩陣乘法和累加運算的16位元浮點輸出。
  12. 一種資料處理系統,包括:包括多個記憶體晶粒的記憶體堆疊,該記憶體堆疊包括高頻寬記憶體;及經由一或多個記憶體控制器與該記憶體堆疊耦合的圖形處理單元(GPU),該GPU包括具有單指令多線程(SIMT)結構的複數個多處理器,其中該複數個多處理器的至少一部分包括混合精度核心,該混合精度核心用以執行至少一個單指令的線程,該至少一個單指令用以加速與機器學習框架相關聯的線性代數子程式,該混合精度核心包括浮點單元,用以以第一精度執行該線程的第一運算以及以第二 精度執行該線程的第二運算;以及其中該至少一個單指令是用以使該混合精度核心對具有不同精度的輸入執行二維矩陣乘法和累加浮點運算的線程,該二維矩陣乘法和累加運算包括該第一運算和該第二運算,該第一運算是具有至少一個16位元浮點輸入的乘法,以及該第二運算是具有32位元浮點輸入的累加。
  13. 如請求項12之資料處理系統,該記憶體堆疊與該GPU位在相同的物理封裝上。
  14. 如請求項12之資料處理系統,該混合精度核心以16位元精度執行該第一運算,並且以32位元精度執行該第二運算。
  15. 如請求項14之資料處理系統,其中該第一運算具有二或多個16位元浮點輸入。
  16. 如請求項12之資料處理系統,該混合精度核心可配置成從該二維矩陣乘法和累加運算輸出16位元浮點值。
TW108117181A 2017-04-28 2018-02-22 用於低精度機器學習運算之計算最佳化 TWI682357B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/581,167 2017-04-28
US15/581,167 US10726514B2 (en) 2017-04-28 2017-04-28 Compute optimizations for low precision machine learning operations

Publications (2)

Publication Number Publication Date
TW201935408A true TW201935408A (zh) 2019-09-01
TWI682357B TWI682357B (zh) 2020-01-11

Family

ID=61965680

Family Applications (6)

Application Number Title Priority Date Filing Date
TW111139972A TWI819861B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置
TW112136546A TW202403659A (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置
TW111122428A TWI803357B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的方法、裝置、圖形處理器及圖形處理系統和機器可讀取媒體
TW107105950A TWI781142B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的通用圖形處理單元及資料處理系統
TW108117181A TWI682357B (zh) 2017-04-28 2018-02-22 用於低精度機器學習運算之計算最佳化
TW109145734A TWI787692B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置

Family Applications Before (4)

Application Number Title Priority Date Filing Date
TW111139972A TWI819861B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置
TW112136546A TW202403659A (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置
TW111122428A TWI803357B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的方法、裝置、圖形處理器及圖形處理系統和機器可讀取媒體
TW107105950A TWI781142B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的通用圖形處理單元及資料處理系統

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW109145734A TWI787692B (zh) 2017-04-28 2018-02-22 用於低精度機器學習操作之計算最佳化的裝置

Country Status (8)

Country Link
US (9) US10726514B2 (zh)
EP (6) EP3594813B1 (zh)
CN (7) CN116414455A (zh)
DK (1) DK4099168T3 (zh)
ES (2) ES2865201T3 (zh)
FI (1) FI4099168T3 (zh)
PL (3) PL4099168T3 (zh)
TW (6) TWI819861B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747258B (zh) * 2020-04-29 2021-11-21 宏達國際電子股份有限公司 依據音訊訊號產生動作的方法及電子裝置
US11321891B2 (en) 2020-04-29 2022-05-03 Htc Corporation Method for generating action according to audio signal and electronic device
TWI779475B (zh) * 2020-09-29 2022-10-01 中國商格蘭菲智能科技有限公司 圖形處理器及其加速方法

Families Citing this family (91)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10142137B2 (en) 2017-03-02 2018-11-27 Micron Technology, Inc. Wireless devices and systems including examples of full duplex transmission
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US11842280B2 (en) * 2017-05-05 2023-12-12 Nvidia Corporation Loss-scaling for deep neural network training with reduced precision
WO2018213636A1 (en) 2017-05-17 2018-11-22 Google Llc Performing matrix multiplication in hardware
US11941516B2 (en) 2017-08-31 2024-03-26 Micron Technology, Inc. Cooperative learning neural networks and systems
US11360934B1 (en) 2017-09-15 2022-06-14 Groq, Inc. Tensor streaming processor architecture
US11868804B1 (en) 2019-11-18 2024-01-09 Groq, Inc. Processor instruction dispatch configuration
US11243880B1 (en) 2017-09-15 2022-02-08 Groq, Inc. Processor architecture
US11114138B2 (en) 2017-09-15 2021-09-07 Groq, Inc. Data structures with multiple read ports
US11170307B1 (en) 2017-09-21 2021-11-09 Groq, Inc. Predictive model compiler for generating a statically scheduled binary with known resource constraints
US10902318B2 (en) 2017-11-06 2021-01-26 Neuralmagic Inc. Methods and systems for improved transforms in convolutional neural networks
KR20190052893A (ko) * 2017-11-09 2019-05-17 삼성전자주식회사 뉴럴 네트워크 연산을 위한 전처리 장치 및 방법
US20190156214A1 (en) 2017-11-18 2019-05-23 Neuralmagic Inc. Systems and methods for exchange of data in distributed training of machine learning algorithms
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US11206050B2 (en) 2018-02-06 2021-12-21 Micron Technology, Inc. Self interference noise cancellation to support multiple frequency bands
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
US11100041B2 (en) * 2018-03-09 2021-08-24 Microsoft Technology Licensing, Llc Techniques for tracking independent hardware graphics processing unit (GPU) performance
US11514306B1 (en) * 2018-03-14 2022-11-29 Meta Platforms, Inc. Static memory allocation in neural networks
US20190297326A1 (en) * 2018-03-21 2019-09-26 Nvidia Corporation Video prediction using spatially displaced convolution
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations
US11593633B2 (en) * 2018-04-13 2023-02-28 Microsoft Technology Licensing, Llc Systems, methods, and computer-readable media for improved real-time audio processing
KR102506959B1 (ko) 2018-05-17 2023-03-07 나이앤틱, 인크. 깊이 추정 시스템의 자가 감독 훈련
GB2574372B (en) * 2018-05-21 2021-08-11 Imagination Tech Ltd Implementing Traditional Computer Vision Algorithms As Neural Networks
US10832133B2 (en) 2018-05-31 2020-11-10 Neuralmagic Inc. System and method of executing neural networks
US11216732B2 (en) 2018-05-31 2022-01-04 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US11449363B2 (en) 2018-05-31 2022-09-20 Neuralmagic Inc. Systems and methods for improved neural network execution
US10963787B2 (en) * 2018-05-31 2021-03-30 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US10769310B2 (en) * 2018-07-20 2020-09-08 Nxp B.V. Method for making a machine learning model more difficult to copy
US20200034699A1 (en) * 2018-07-24 2020-01-30 SK Hynix Inc. Accelerating appratus of neural network and operating method thereof
US11468291B2 (en) 2018-09-28 2022-10-11 Nxp B.V. Method for protecting a machine learning ensemble from copying
US11636343B2 (en) 2018-10-01 2023-04-25 Neuralmagic Inc. Systems and methods for neural network pruning with accuracy preservation
US11366663B2 (en) 2018-11-09 2022-06-21 Intel Corporation Systems and methods for performing 16-bit floating-point vector dot product instructions
US11455370B2 (en) 2018-11-19 2022-09-27 Groq, Inc. Flattened input stream generation for convolution with expanded kernel
US12014273B2 (en) * 2018-12-12 2024-06-18 Kneron (Taiwan) Co., Ltd. Low precision and coarse-to-fine dynamic fixed-point quantization design in convolution neural network
US11544559B2 (en) 2019-01-08 2023-01-03 Neuralmagic Inc. System and method for executing convolution in a neural network
US10963219B2 (en) 2019-02-06 2021-03-30 International Business Machines Corporation Hybrid floating point representation for deep learning acceleration
US11562214B2 (en) * 2019-03-14 2023-01-24 Baidu Usa Llc Methods for improving AI engine MAC utilization
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
KR20210135998A (ko) 2019-03-15 2021-11-16 인텔 코포레이션 매트릭스 가속기 아키텍처를 위한 희소 최적화
US11768664B2 (en) 2019-03-15 2023-09-26 Advanced Micro Devices, Inc. Processing unit with mixed precision operations
EP3938914A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Dynamic memory reconfiguration
CN111709513B (zh) * 2019-03-18 2023-06-09 百度在线网络技术(北京)有限公司 长短期记忆网络lstm的训练系统、方法及电子设备
US11328222B1 (en) 2019-05-10 2022-05-10 Innovium, Inc. Network switch with integrated gradient aggregation for distributed machine learning
US10931602B1 (en) 2019-05-10 2021-02-23 Innovium, Inc. Egress-based compute architecture for network switches in distributed artificial intelligence and other applications
US10931588B1 (en) * 2019-05-10 2021-02-23 Innovium, Inc. Network switch with integrated compute subsystem for distributed artificial intelligence and other applications
US11099902B1 (en) 2019-05-10 2021-08-24 Innovium, Inc. Parallelized ingress compute architecture for network switches in distributed artificial intelligence and other applications
US11531898B2 (en) 2019-05-16 2022-12-20 International Business Machines Corporation Training of artificial neural networks
US11301167B2 (en) * 2019-05-16 2022-04-12 Intel Corporation Technologies for providing multiple tier memory media management
US11120602B2 (en) * 2019-06-03 2021-09-14 Microsoft Technology Licensing, Llc Acceleration of shader programs by compiler precision selection
US11693626B2 (en) * 2019-06-18 2023-07-04 Cirrus Logic, Inc. Variable accuracy computing system
TWI701612B (zh) * 2019-06-19 2020-08-11 創鑫智慧股份有限公司 用於神經網路中激勵函數的電路系統及其處理方法
US11507349B2 (en) * 2019-06-26 2022-11-22 Microsoft Technology Licensing, Llc Neural processing element with single instruction multiple data (SIMD) compute lanes
TWI702615B (zh) * 2019-07-26 2020-08-21 長佳智能股份有限公司 視網膜病變評估模型建立方法及系統
US10956776B2 (en) 2019-08-06 2021-03-23 Alibaba Group Holding Limited 2D convolutional accelerator that generates 3D results
WO2021026225A1 (en) 2019-08-08 2021-02-11 Neuralmagic Inc. System and method of accelerating execution of a neural network
CN112394997A (zh) * 2019-08-13 2021-02-23 上海寒武纪信息科技有限公司 八位整形转半精度浮点指令处理装置、方法及相关产品
JP7317630B2 (ja) * 2019-08-14 2023-07-31 キヤノン株式会社 画像処理装置、画像処理方法、及びプログラム
CN110598172B (zh) * 2019-08-22 2022-10-25 瑞芯微电子股份有限公司 一种基于csa加法器的卷积运算方法和电路
US11057318B1 (en) 2019-08-27 2021-07-06 Innovium, Inc. Distributed artificial intelligence extension modules for network switches
US10979097B2 (en) 2019-09-05 2021-04-13 Micron Technology, Inc. Wireless devices and systems including examples of full duplex transmission using neural networks or recurrent neural networks
EP3792752A1 (en) * 2019-09-11 2021-03-17 Nokia Solutions and Networks Oy Arithmetic unit
WO2021061625A1 (en) * 2019-09-23 2021-04-01 Lightmatter, Inc. Quantized inputs for machine learning models
CN110765111B (zh) * 2019-10-28 2023-03-31 深圳市商汤科技有限公司 存储和读取方法、装置、电子设备和存储介质
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US11307860B1 (en) 2019-11-22 2022-04-19 Blaize, Inc. Iterating group sum of multiple accumulate operations
US10996960B1 (en) * 2019-11-22 2021-05-04 Blaize, Inc. Iterating single instruction, multiple-data (SIMD) instructions
CN115136141A (zh) * 2019-11-26 2022-09-30 米西克有限公司 用于实现混合信号集成电路的受限计算的操作变换的系统和方法
WO2021108559A1 (en) 2019-11-26 2021-06-03 Groq, Inc. Loading operands and outputting results from a multi-dimensional array using only a single side
US11216184B2 (en) 2019-12-06 2022-01-04 Western Digital Technologies, Inc. Non-volatile memory with on-chip principal component analysis for generating low dimensional outputs for machine learning
US11188328B2 (en) 2019-12-12 2021-11-30 International Business Machines Corporation Compute array of a processor with mixed-precision numerical linear algebra support
EP4100887A4 (en) * 2020-03-05 2023-07-05 Huawei Cloud Computing Technologies Co., Ltd. METHOD AND SYSTEM FOR SHARING AND BITWIDTH ALLOCATION OF DEEP LEARNING MODELS FOR INFERENCE ON DISTRIBUTED SYSTEMS
US20210295134A1 (en) * 2020-03-18 2021-09-23 Infineon Technologies Ag Artificial neural network activation function
EP4128234A4 (en) * 2020-03-30 2024-06-26 Rambus Inc. STACKED CHIP NEURAL NETWORK WITH INTEGRATED HIGH-BANDWIDTH MEMORY
US11258473B2 (en) 2020-04-14 2022-02-22 Micron Technology, Inc. Self interference noise cancellation to support multiple frequency bands with neural networks or recurrent neural networks
CN113571087B (zh) * 2020-04-29 2023-07-28 宏达国际电子股份有限公司 依据音频信号产生动作的方法及电子装置
EP4200770A1 (en) 2020-08-18 2023-06-28 Grid.AI. Inc. Modularized model interaction system and method
US20220058774A1 (en) * 2020-08-19 2022-02-24 BlinkAI Technologies, Inc. Systems and Methods for Performing Image Enhancement using Neural Networks Implemented by Channel-Constrained Hardware Accelerators
US10970619B1 (en) * 2020-08-21 2021-04-06 Moffett Technologies Co., Limited Method and system for hierarchical weight-sparse convolution processing
US20220075669A1 (en) * 2020-09-08 2022-03-10 Technion Research And Development Foundation Ltd. Non-Blocking Simultaneous MultiThreading (NB-SMT)
US11175957B1 (en) 2020-09-22 2021-11-16 International Business Machines Corporation Hardware accelerator for executing a computation task
US11556757B1 (en) 2020-12-10 2023-01-17 Neuralmagic Ltd. System and method of executing deep tensor columns in neural networks
CN113190352B (zh) * 2021-05-12 2024-02-06 北京中科通量科技有限公司 一种面向通用cpu的深度学习计算加速方法及系统
KR20220161255A (ko) * 2021-05-13 2022-12-06 엔비디아 코포레이션 행렬 값 표시 수행
US11899589B2 (en) 2021-06-22 2024-02-13 Samsung Electronics Co., Ltd. Systems, methods, and devices for bias mode management in memory systems
US20210397999A1 (en) * 2021-06-25 2021-12-23 Intel Corporation Methods and apparatus to offload execution of a portion of a machine learning model
US20230052433A1 (en) * 2021-08-16 2023-02-16 Samsung Electronics Co., Ltd. Accelerator to reduce data dimensionality and associated systems and methods
US11960982B1 (en) 2021-10-21 2024-04-16 Neuralmagic, Inc. System and method of determining and executing deep tensor columns in neural networks
US20230132070A1 (en) * 2021-10-27 2023-04-27 International Business Machines Corporation Features for black-box machine-learning models
US11935175B2 (en) * 2022-04-07 2024-03-19 Huawei Technologies Co., Ltd. Apparatus, method, and computer-readable medium for image processing using variable-precision shading
TWI819645B (zh) * 2022-06-08 2023-10-21 緯創資通股份有限公司 更新神經網路模型的方法和電子裝置
CN116129249B (zh) * 2023-04-04 2023-07-07 上海燧原科技有限公司 一种图像处理方法、装置、电子设备和存储介质

Family Cites Families (96)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5953241A (en) * 1995-08-16 1999-09-14 Microunity Engeering Systems, Inc. Multiplier array processing system with enhanced utilization at lower precision for group multiply and sum instruction
US6643765B1 (en) * 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
JPH0991118A (ja) * 1995-09-27 1997-04-04 Hitachi Ltd 浮動小数点演算装置
EP1306752A1 (en) * 1996-11-29 2003-05-02 Matsushita Electric Industrial Co., Ltd. Processor which can favourably execute a rounding process
US6718457B2 (en) 1998-12-03 2004-04-06 Sun Microsystems, Inc. Multiple-thread processor for threaded software applications
US7418606B2 (en) 2003-09-18 2008-08-26 Nvidia Corporation High quality and high performance three-dimensional graphics architecture for portable handheld devices
US7873812B1 (en) 2004-04-05 2011-01-18 Tibet MIMAR Method and system for efficient matrix multiplication in a SIMD processor architecture
US20060101244A1 (en) * 2004-11-10 2006-05-11 Nvidia Corporation Multipurpose functional unit with combined integer and floating-point multiply-add pipeline
US7720900B2 (en) 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
CN101657795B (zh) * 2007-04-11 2013-10-23 苹果公司 多处理器上的数据并行计算
US8106914B2 (en) * 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US8615541B2 (en) * 2009-09-23 2013-12-24 Nvidia Corporation Extended-precision integer arithmetic and logical instructions
US8522000B2 (en) * 2009-09-29 2013-08-27 Nvidia Corporation Trap handler architecture for a parallel processing unit
US8713294B2 (en) * 2009-11-13 2014-04-29 International Business Machines Corporation Heap/stack guard pages using a wakeup unit
US8464026B2 (en) * 2010-02-17 2013-06-11 International Business Machines Corporation Method and apparatus for computing massive spatio-temporal correlations using a hybrid CPU-GPU approach
US20110283059A1 (en) 2010-05-11 2011-11-17 Progeniq Pte Ltd Techniques for accelerating computations using field programmable gate array processors
US9600281B2 (en) * 2010-07-12 2017-03-21 International Business Machines Corporation Matrix multiplication operations using pair-wise load and splat operations
US8582373B2 (en) * 2010-08-31 2013-11-12 Micron Technology, Inc. Buffer die in stacks of memory dies and methods
US8493089B2 (en) * 2011-04-06 2013-07-23 International Business Machines Corporation Programmable logic circuit using three-dimensional stacking techniques
FR2974645A1 (fr) 2011-04-28 2012-11-02 Kalray Operateur de multiplication et addition fusionnees a precision mixte
US9529712B2 (en) * 2011-07-26 2016-12-27 Nvidia Corporation Techniques for balancing accesses to memory having different memory types
CN102750663A (zh) * 2011-08-26 2012-10-24 新奥特(北京)视频技术有限公司 一种基于gpu的地理信息数据处理的方法、设备和系统
US8630375B2 (en) 2011-08-29 2014-01-14 Telefonaktiebolaget Lm Ericsson (Publ) Method and apparatus for received signal processing in a multi-stage receiver
CN103959233B (zh) * 2011-09-15 2017-05-17 埃克森美孚上游研究公司 在执行eos计算的指令受限算法中最优化矩阵和向量运算
US9830158B2 (en) * 2011-11-04 2017-11-28 Nvidia Corporation Speculative execution and rollback
CN104115115B (zh) * 2011-12-19 2017-06-13 英特尔公司 用于多精度算术的simd整数乘法累加指令
WO2013095554A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processors, methods, systems, and instructions to generate sequences of consecutive integers in numerical order
WO2013095508A1 (en) 2011-12-22 2013-06-27 Intel Corporation Speculative cache modification
WO2013095601A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Instruction for element offset calculation in a multi-dimensional array
US20140195783A1 (en) * 2011-12-29 2014-07-10 Krishnan Karthikeyan Dot product processors, methods, systems, and instructions
US8984042B2 (en) * 2012-02-09 2015-03-17 International Business Machines Corporation Mixed precision estimate instruction computing narrow precision result for wide precision inputs
US9693714B2 (en) 2012-02-10 2017-07-04 Senseonics, Incorporated Digital ASIC sensor platform
US10007527B2 (en) 2012-03-05 2018-06-26 Nvidia Corporation Uniform load processing for parallel thread sub-sets
CN102750127B (zh) * 2012-06-12 2015-06-24 清华大学 一种协处理器
US9257364B2 (en) * 2012-06-27 2016-02-09 Intel Corporation Integrated heat spreader that maximizes heat transfer from a multi-chip package
US8922243B2 (en) * 2012-12-23 2014-12-30 Advanced Micro Devices, Inc. Die-stacked memory device with reconfigurable logic
US9047171B2 (en) * 2012-09-29 2015-06-02 Intel Corporation Differentiating cache reliability to reduce minimum on-die voltage
US9189399B2 (en) 2012-11-21 2015-11-17 Advanced Micro Devices, Inc. Stack cache management and coherence techniques
US9292414B2 (en) * 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
US9111393B2 (en) * 2012-11-26 2015-08-18 Nvidia Corporation System, method, and computer program product for sampling a hierarchical depth map
US20140173606A1 (en) * 2012-12-19 2014-06-19 Nvidia Corporation Streaming processing of short read alignment algorithms
US9135185B2 (en) * 2012-12-23 2015-09-15 Advanced Micro Devices, Inc. Die-stacked memory device providing data translation
US9478066B2 (en) * 2013-03-14 2016-10-25 Nvidia Corporation Consistent vertex snapping for variable resolution rendering
US20140281366A1 (en) 2013-03-15 2014-09-18 Cognitive Electronics, Inc. Address translation in a system using memory striping
US9535778B2 (en) * 2013-03-15 2017-01-03 International Business Machines Corporation Reestablishing synchronization in a memory system
US9430418B2 (en) * 2013-03-15 2016-08-30 International Business Machines Corporation Synchronization and order detection in a memory system
US9136987B2 (en) 2013-03-15 2015-09-15 International Business Machines Corporation Replay suspension in a memory system
EP3690641B1 (en) 2013-05-24 2024-02-21 Coherent Logix Incorporated Processor having multiple parallel address generation units
US9305388B2 (en) * 2013-08-23 2016-04-05 Nvidia Corporation Bit-count texture format
US9633409B2 (en) 2013-08-26 2017-04-25 Apple Inc. GPU predication
US9978014B2 (en) * 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
GB2523341A (en) * 2014-02-20 2015-08-26 Ibm Iterative refinement apparatus
CN103984522B (zh) * 2014-05-27 2018-04-13 中国人民解放军国防科学技术大学 Gpdsp中定点和浮点混合除法的实现方法
US9898795B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
KR102192956B1 (ko) * 2014-06-23 2020-12-18 삼성전자주식회사 디스플레이 장치 및 그 제어 방법
US10061592B2 (en) 2014-06-27 2018-08-28 Samsung Electronics Co., Ltd. Architecture and execution for efficient mixed precision computations in single instruction multiple data/thread (SIMD/T) devices
US20160026912A1 (en) * 2014-07-22 2016-01-28 Intel Corporation Weight-shifting mechanism for convolutional neural networks
JP6012674B2 (ja) 2014-07-25 2016-10-25 京セラドキュメントソリューションズ株式会社 画像形成装置
US9454497B2 (en) 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication
US9645792B2 (en) 2014-08-18 2017-05-09 Qualcomm Incorporated Emulation of fused multiply-add operations
CA2955444C (en) * 2014-08-20 2019-05-28 Landmark Graphics Corporation Optimizing computer hardware resource utilization when processing variable precision data
US10032244B2 (en) 2014-08-21 2018-07-24 Intel Corporation Method and apparatus for implementing a nearest neighbor search on a graphics processing unit (GPU)
US10223333B2 (en) 2014-08-29 2019-03-05 Nvidia Corporation Performing multi-convolution operations in a parallel processing system
US10235338B2 (en) * 2014-09-04 2019-03-19 Nvidia Corporation Short stack traversal of tree data structures
US9582201B2 (en) * 2014-09-26 2017-02-28 Western Digital Technologies, Inc. Multi-tier scheme for logical storage management
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US10636336B2 (en) * 2015-04-17 2020-04-28 Nvidia Corporation Mixed primary display with spatially modulated backlight
US9846623B2 (en) * 2015-08-20 2017-12-19 Qsigma, Inc. Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems
US20170083827A1 (en) * 2015-09-23 2017-03-23 Qualcomm Incorporated Data-Driven Accelerator For Machine Learning And Raw Data Analysis
US10423411B2 (en) * 2015-09-26 2019-09-24 Intel Corporation Data element comparison processors, methods, systems, and instructions
US10776690B2 (en) * 2015-10-08 2020-09-15 Via Alliance Semiconductor Co., Ltd. Neural network unit with plurality of selectable output functions
US10275394B2 (en) * 2015-10-08 2019-04-30 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit
CN106570559A (zh) * 2015-10-09 2017-04-19 阿里巴巴集团控股有限公司 一种基于神经网络的数据处理方法和装置
US9703531B2 (en) * 2015-11-12 2017-07-11 Arm Limited Multiplication of first and second operands using redundant representation
US10318008B2 (en) * 2015-12-15 2019-06-11 Purdue Research Foundation Method and system for hand pose detection
US9715373B2 (en) * 2015-12-18 2017-07-25 International Business Machines Corporation Dynamic recompilation techniques for machine learning programs
US20170214930A1 (en) * 2016-01-26 2017-07-27 Sandia Corporation Gpu-assisted lossless data compression
US11676024B2 (en) * 2016-02-24 2023-06-13 Sri International Low precision neural networks using subband decomposition
US9831148B2 (en) * 2016-03-11 2017-11-28 Taiwan Semiconductor Manufacturing Company, Ltd. Integrated fan-out package including voltage regulators and methods forming same
CN109661672B (zh) 2016-05-04 2023-08-22 渊慧科技有限公司 使用强化学习利用外部存储器增强神经网络
CN107526709A (zh) 2016-06-15 2017-12-29 辉达公司 使用低精度格式的张量处理
US10083347B2 (en) 2016-07-29 2018-09-25 NTech lab LLC Face identification using artificial neural network
US10891538B2 (en) 2016-08-11 2021-01-12 Nvidia Corporation Sparse convolutional neural network accelerator
US10997496B2 (en) 2016-08-11 2021-05-04 Nvidia Corporation Sparse convolutional neural network accelerator
US10114613B2 (en) * 2016-09-07 2018-10-30 International Business Machines Corporation Mixed-precision memcomputing system
US10141938B2 (en) * 2016-09-21 2018-11-27 Xilinx, Inc. Stacked columnar integrated circuits
US10296292B2 (en) * 2016-10-20 2019-05-21 Advanced Micro Devices, Inc. Dynamic variable precision computation
US10282309B2 (en) 2017-02-24 2019-05-07 Advanced Micro Devices, Inc. Per-page control of physical address space distribution among memory modules
US10417140B2 (en) 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US10595039B2 (en) 2017-03-31 2020-03-17 Nvidia Corporation System and method for content and motion controlled action video generation
US10424069B2 (en) 2017-04-07 2019-09-24 Nvidia Corporation System and method for optical flow estimation
US10726514B2 (en) 2017-04-28 2020-07-28 Intel Corporation Compute optimizations for low precision machine learning operations
US10643297B2 (en) * 2017-05-05 2020-05-05 Intel Corporation Dynamic precision management for integer deep learning primitives
US10339067B2 (en) * 2017-06-19 2019-07-02 Advanced Micro Devices, Inc. Mechanism for reducing page migration overhead in memory systems

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI747258B (zh) * 2020-04-29 2021-11-21 宏達國際電子股份有限公司 依據音訊訊號產生動作的方法及電子裝置
US11321891B2 (en) 2020-04-29 2022-05-03 Htc Corporation Method for generating action according to audio signal and electronic device
TWI779475B (zh) * 2020-09-29 2022-10-01 中國商格蘭菲智能科技有限公司 圖形處理器及其加速方法

Also Published As

Publication number Publication date
US20230061670A1 (en) 2023-03-02
TW202403659A (zh) 2024-01-16
EP3594813A1 (en) 2020-01-15
FI4099168T3 (fi) 2024-02-06
CN108805791A (zh) 2018-11-13
US11468541B2 (en) 2022-10-11
US10853906B2 (en) 2020-12-01
ES2865201T3 (es) 2021-10-15
US20190304053A1 (en) 2019-10-03
US10726514B2 (en) 2020-07-28
PL3594813T3 (pl) 2021-06-28
US20230061331A1 (en) 2023-03-02
CN110349075B (zh) 2020-10-20
US20190206020A1 (en) 2019-07-04
EP4099168A1 (en) 2022-12-07
TW202305736A (zh) 2023-02-01
EP4099168B1 (en) 2023-11-22
EP4160413A1 (en) 2023-04-05
PL3396547T3 (pl) 2022-11-14
CN116414455A (zh) 2023-07-11
US20180315157A1 (en) 2018-11-01
CN115082283A (zh) 2022-09-20
CN110737470A (zh) 2020-01-31
ES2926704T3 (es) 2022-10-27
TW202238509A (zh) 2022-10-01
US20220245753A1 (en) 2022-08-04
CN110737470B (zh) 2023-06-16
EP3396547A3 (en) 2018-11-28
TWI787692B (zh) 2022-12-21
CN110349075A (zh) 2019-10-18
TWI682357B (zh) 2020-01-11
US11138686B2 (en) 2021-10-05
DK4099168T3 (da) 2024-02-12
EP4141674A1 (en) 2023-03-01
TW201842478A (zh) 2018-12-01
EP3594813B1 (en) 2021-01-13
TW202123166A (zh) 2021-06-16
US20230401668A1 (en) 2023-12-14
TWI803357B (zh) 2023-05-21
EP3396547B1 (en) 2022-07-27
US11948224B2 (en) 2024-04-02
CN112330523A (zh) 2021-02-05
EP3396547A2 (en) 2018-10-31
CN113496457A (zh) 2021-10-12
TWI781142B (zh) 2022-10-21
TWI819861B (zh) 2023-10-21
US10242423B2 (en) 2019-03-26
PL4099168T3 (pl) 2024-04-08
US11308574B2 (en) 2022-04-19
US20200364823A1 (en) 2020-11-19
EP3792761A1 (en) 2021-03-17
US20180315159A1 (en) 2018-11-01

Similar Documents

Publication Publication Date Title
TWI682357B (zh) 用於低精度機器學習運算之計算最佳化
EP3637247B1 (en) Instructions and logic to perform floating-point and integer operations for machine learning
TWI761456B (zh) 使用低和高精確度的混合推理
CN113672197B (zh) 用来执行用于机器学习的浮点和整数操作的指令和逻辑