TW202145009A - 用於深神經網路之計算最佳化機制 - Google Patents
用於深神經網路之計算最佳化機制 Download PDFInfo
- Publication number
- TW202145009A TW202145009A TW110131258A TW110131258A TW202145009A TW 202145009 A TW202145009 A TW 202145009A TW 110131258 A TW110131258 A TW 110131258A TW 110131258 A TW110131258 A TW 110131258A TW 202145009 A TW202145009 A TW 202145009A
- Authority
- TW
- Taiwan
- Prior art keywords
- graphics
- memory
- processor
- operations
- processing
- Prior art date
Links
- 238000005457 optimization Methods 0.000 title abstract description 6
- 238000013528 artificial neural network Methods 0.000 title description 79
- 230000007246 mechanism Effects 0.000 title description 35
- 238000012545 processing Methods 0.000 claims abstract description 422
- 230000015654 memory Effects 0.000 claims description 353
- 238000000034 method Methods 0.000 claims description 71
- 239000013598 vector Substances 0.000 claims description 30
- 230000009466 transformation Effects 0.000 claims description 27
- 238000007667 floating Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 14
- 239000011159 matrix material Substances 0.000 claims description 12
- 238000000844 transformation Methods 0.000 claims description 11
- 238000011065 in-situ storage Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 70
- 238000012549 training Methods 0.000 description 62
- 238000010801 machine learning Methods 0.000 description 56
- 230000001133 acceleration Effects 0.000 description 51
- 238000004891 communication Methods 0.000 description 45
- 239000000872 buffer Substances 0.000 description 42
- 235000019587 texture Nutrition 0.000 description 40
- 239000012634 fragment Substances 0.000 description 34
- 238000010586 diagram Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 26
- 238000004422 calculation algorithm Methods 0.000 description 24
- 238000007726 management method Methods 0.000 description 24
- 238000013461 design Methods 0.000 description 23
- 238000005192 partition Methods 0.000 description 23
- 238000013527 convolutional neural network Methods 0.000 description 22
- 238000012546 transfer Methods 0.000 description 17
- 230000008520 organization Effects 0.000 description 13
- 210000004027 cell Anatomy 0.000 description 12
- 230000004913 activation Effects 0.000 description 11
- 238000001994 activation Methods 0.000 description 11
- 230000002776 aggregation Effects 0.000 description 10
- 238000004220 aggregation Methods 0.000 description 10
- 230000000875 corresponding effect Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 10
- 238000004088 simulation Methods 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 230000014616 translation Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000011156 evaluation Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 210000002569 neuron Anatomy 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000013135 deep learning Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000002156 mixing Methods 0.000 description 7
- 238000005070 sampling Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 230000000306 recurrent effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000000638 solvent extraction Methods 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 230000000670 limiting effect Effects 0.000 description 4
- 238000013178 mathematical model Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 241000699666 Mus <mouse, genus> Species 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000008713 feedback mechanism Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 238000003909 pattern recognition Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009966 trimming Methods 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 102100031051 Cysteine and glycine-rich protein 1 Human genes 0.000 description 2
- 101000922020 Homo sapiens Cysteine and glycine-rich protein 1 Proteins 0.000 description 2
- 101001019104 Homo sapiens Mediator of RNA polymerase II transcription subunit 14 Proteins 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 2
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 239000011449 brick Substances 0.000 description 2
- 238000005056 compaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 235000019580 granularity Nutrition 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 125000002015 acyclic group Chemical group 0.000 description 1
- 238000012884 algebraic function Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009118 appropriate response Effects 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001276 controlling effect Effects 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000011049 filling Methods 0.000 description 1
- 238000011010 flushing procedure Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 210000002747 omentum Anatomy 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000001172 regenerating effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 235000012431 wafers Nutrition 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/044—Recurrent networks, e.g. Hopfield networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Processing (AREA)
- Image Generation (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
揭露一種用以協助計算最佳化之設備。該設備包括複數處理單元,其各包含複數執行單元(EU),其中該些複數EU包含第一EU類型及第二EU類型。
Description
實施例一般係有關於資料處理,而更特別地係有關於經由通用圖形處理單元之資料處理。
當前的平行圖形資料處理包括系統及方法,其被開發以對圖形資料履行特定操作,諸如(例如)線性內插、鑲嵌、柵格化、紋理映射、深度測試,等等。傳統上,圖形處理器係使用固定功能計算單元以處理圖形資料;然而,更近期地,圖形處理器之部分已被製成可編程的,其致能此等處理器支援更多樣的操作以處理頂點及片段資料。
為了進一步增加性能,圖形處理器通常係實施處理技術,諸如管線操作,其嘗試平行地處理盡可能多的圖形資料,遍及圖形管線之不同部分。具有單指令、多執行緒(SIMT)架構之平行圖形處理器被設計以將圖形管線中之平行處理的量最大化。於SIMT架構中,平行執行緒之群組係嘗試盡可能頻繁地一起同步地執行程式指令以增加處理效率。針對SIMT架構之軟體及硬體的一般概述可見於Shane Cook,CUDA Programming
Chapter 3, 第37-51頁(2013)。
及
於實施例中,揭露了用以最佳化圖形處理器之計算的機制。於某些實施例中,計算機制包括複數處理單元,其各包含複數執行單元(EU),其中該些複數EU包含第一EU類型及第二EU類型。於進一步實施例中,處理單元可被包括於記憶體裝置中。於又進一步實施例中,計算機制係履行矩陣-向量變換,使用暫存器檔或共用的本地記憶體(SLM)。
於以下說明中,提出數個特定細節以提供更透徹的瞭解。然而,熟悉此項技術人士將清楚文中所述之實施例可被實行而無這些特定細節之一或更多者。於其他實例中,眾所周知的特徵未被描述以免混淆本實施例之細節。
系統概述
圖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包括一或更多平行處理器112,其係經由匯流排或其他通訊鏈結113而耦合至記憶體集線器105。通訊鏈結113可為任何數目之標準為基的通訊鏈結技術或協定之一,諸如(但不限定於)PCI Express;或可為供應商特定的通訊介面或通訊組織。於一實施例中,一或更多平行處理器112係形成一種計算集中的平行或向量處理系統,其可包括大量的處理核心及/或處理叢集,諸如許多集成核心(MIC)處理器。於一實施例中,一或更多平行處理器112係形成一種圖形處理子系統,其可將像素輸出至其經由I/O集線器107而耦合的一或更多顯示裝置110A之一。一或更多平行處理器112亦可包括顯示控制器及顯示介面(未顯示),用以致能直接連接至一或更多顯示裝置110B。
於I/O子系統111內,系統儲存單元114可連接至I/O集線器107以提供用於計算系統100之儲存機制。I/O開關116可被用以提供介面機制來致能介於I/O集線器107與其他組件之間的連接,諸如網路配接器118及/或無線網路配接器119(其可被集成入平台中)、以及可經由一或更多外接裝置120而被加入之各種其他裝置。網路配接器118可為乙太網路配接器或其他的有線網路配接器。無線網路配接器119可包括Wi-Fi、藍牙、近場通訊(NFC)、或其他網路裝置(其包括一或更多無線電)之一或更多者。
計算系統100可包括其他未明確地顯示之組件(包括USB或其他埠連接),光學儲存驅動、視頻擷取裝置等等亦可被連接至I/O集線器107。互連圖1中之各個組件的通訊路徑可使用任何適當的協定而被實施,諸如PCI(周邊組件互連)為基的協定(例如,PCI-Express)、或者任何其他匯流排或點對點通訊介面及/或協定,諸如NV鏈結高速互連、或本技術中已知的互連協定。
於一實施例中,一或更多平行處理器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可被集成入單一晶片中。某些實施例可包括經由多數插口而裝附之二或更多組的處理器102,其可與平行處理器112之二或更多實例耦合。
文中所示之某些特定組件為選擇性的且可能不被包括於計算系統100之所有實施方式中。例如,任何數目的外接卡或周邊可被支援、或者某些組件可被刪除。再者,某些架構可使用不同術語於類似圖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及記憶體交叉開關216連接,其中主機介面206係接收針對履行處理操作之命令而記憶體交叉開關216係接收針對履行記憶體操作之命令。
當主機介面206經由I/O單元204以接收命令緩衝器時,主機介面206可將用以履行那些命令之工作操作指引至前端208。於一實施例中,前端208係與排程器210耦合,排程器210係組態成將命令或其他工作項目分配至處理叢集陣列212。於一實施例中,排程器210確保其處理叢集陣列212被適當地組態且處於有效狀態,在工作被分配至處理叢集陣列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以接收待執行的處理工作,其係接收來自前端208之命令定義處理工作。針對圖形處理操作,處理工作可包括待處理資料之指標,例如,表面(修補)資料、基元資料、頂點資料、及/或像素資料、以及定義該資料應如何被處理(例如,哪個程式應被執行)之狀態參數和命令。排程器210可被組態成提取相應於該些工作之指標或者可接收來自前端208之指標。前端208可被組態成確保處理叢集陣列212被組態為有效狀態,在由進入的命令緩衝器(例如,批次緩衝器、推送緩衝器,等等)所指明之工作量被起始以前。
平行處理單元202之一或更多實例的各者可與平行處理器記憶體222耦合。平行處理器記憶體222可經由記憶體交叉開關216而被存取,其可接收來自處理叢集陣列212以及I/O單元204之記憶體請求。記憶體交叉開關216可經由記憶體介面218以存取平行處理器記憶體222。記憶體介面218可包括多數分割單元(例如,分割單元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之間的流量串。
雖然平行處理單元202之單一實例被顯示於平行處理器200內,但平行處理單元202之任何數目的實例均可被包括。例如,平行處理單元202之多數實例可被提供於單一外接卡上,或者多數外接卡可被互連。平行處理單元202之不同實例可被組態成互操作,即使不同實例具有不同數目的處理核心、不同量的本地平行處理器記憶體、及/或其他組態差異。例如(以及於一實施例中),平行處理單元202之某些實例可包括較高精確度的浮點單元(相對於其他實例)。結合平行處理單元202或平行處理器200之一或更多實例的系統可被實施以多種組態及形狀因數,包括(但不限定於)桌上型電腦、筆記型電腦、或手持式個人電腦、伺服器、工作站、遊戲主控台、及/或嵌入式系統。
圖2B為分割單元220之方塊圖,依據一實施例。於一實施例中,分割單元220為圖2A的分割單元220A-220N之一的實例。如圖所示,分割單元220包括L2快取221、框緩衝器介面225、及ROP 226(光柵操作單元)。L2快取221為讀取/寫入快取,其被組態成履行從記憶體交叉開關216及ROP 226所接收之載入及儲存操作。讀取未中及緊急寫回請求係由L2快取221輸出至框緩衝器介面225以供處理。髒更新亦可經由框緩衝器介面225而被傳送至框緩衝器以供機會處理。於一實施例中,框緩衝器介面225係與平行處理器記憶體中的記憶體單元之一介接,諸如圖2之記憶體單元224A-224N(例如,於平行處理器記憶體222內)。
於圖形應用中,ROP 226為處理單元,其係履行諸如模板、z測試、混合等等光柵操作。ROP 226接著輸出其被儲存於圖形記憶體中之經處理的圖形資料。於某些實施例中,ROP 226包括壓縮邏輯,用以壓縮其被寫入至記憶體之z或顏色資料並解壓縮其被讀取自記憶體之z或顏色資料。於某些實施例中,ROP 226被包括於各處理叢集(例如,圖2之叢集214A-214N)內而非於分割單元220內。於此類實施例中,針對像素資料之讀取及寫入請求被傳輸透過記憶體交叉開關216,而非像素片段資料。
經處理的圖形資料可被顯示於顯示裝置(諸如圖1的一或更多顯示裝置110之一)上、被發送以供藉由處理器102之進一步處理、或被發送以供圖2A之平行處理器200內的處理實體之一的進一步處理。
圖2C為平行處理單元內之處理叢集214的方塊圖,依據一實施例。於一實施例中,處理叢集為圖2A的處理叢集214A-214N之一的實例。處理叢集214可被組態成平行地執行許多執行緒,其中術語「執行緒」係指稱執行於一特定組輸入資料上之特定程式的實例。於某些實施例中,單指令、多資料(SIMD)指令發送技術被用以支援平行執行大量執行緒而無須提供多數獨立的指令單元。於其他實施例中,單指令、多執行緒(SIMT)技術被用以支援大量一般同步化執行緒之平行執行,其係使用常見的指令單元,組態成將指令發送至處理叢集之各者內的一組處理引擎。不同於SIMD執行體系(其中所有處理引擎通常係執行相同的指令),SIMT執行係容許不同的執行緒透過既定的執行緒程式而更輕易地跟隨分散的執行路徑。熟悉本技術人士將瞭解:SIMD處理體系代表SIMT處理體系之功能性子集。
處理叢集214之操作可經由管線管理器232而被控制,管線管理器232將處理工作分配至SIMT平行處理器。管線管理器232接收來自圖2之排程器210的指令,並經由圖形多處理器234及/或紋理單元236以管理那些指令之執行。所示之圖形多處理器234為SIMT平行處理器之範例實例。然而,不同架構之各種類型的SIMT平行處理器可被包括於處理叢集214內。圖形多處理器234之一或更多實例可被包括於處理叢集214內。圖形多處理器234可處理資料,而資料交叉開關240可被用以將經處理資料分配至多數可能的目的地之一,包括其他著色器單元。管線管理器232可藉由指明其將經由資料交叉開關240而被分配之經處理資料的目的地以協助經處理資料之分配。
處理叢集214內之各圖形多處理器234可包括相同組的功能性執行邏輯(例如,算術邏輯單元、載入-儲存單元,等等)。功能性執行邏輯可被組態以一種管線方式,其中新的指令可在先前指令完成之前被發送。功能性執行邏輯支援多種操作,包括整數和浮點算術、比較操作、布林操作、位元移位、及各種代數函數之計算。於一實施例中,相同的功能性單元硬體可被作用以履行不同的操作,且功能性單元之任何組合均可存在。
其被傳輸至處理叢集214之指令構成執行緒。跨越該組平行處理引擎而執行之一組執行緒為執行緒群。執行緒群係執行相同程式於不同輸入資料上。執行緒群內之各執行緒可被指派給圖形多處理器234內之不同處理引擎。執行緒群可包括比圖形多處理器234內之處理引擎數更少的執行緒。當執行緒群包括處理引擎數更少的執行緒時,處理引擎之一或更多者可為閒置的,於其中該執行緒群正被處理之循環期間。執行緒群亦可包括比圖形多處理器234內之處理引擎數更多的執行緒。當執行緒群包括比圖形多處理器234內之處理引擎數更多的執行緒時,處理可被履行涵蓋連續的時脈循環。於一實施例中,多數執行緒群可被同時地執行於圖形多處理器234上。
於一實施例中,圖形多處理器234包括內部快取記憶體,用以履行載入及儲存操作。於一實施例中,圖形多處理器234可放棄內部快取並使用處理叢集214內之快取記憶體(例如,L1快取308)。各圖形多處理器234亦得以存取分割單元(例如,圖2之分割單元220A-220N)內之L2快取,該些分割單元可被共用於所有處理叢集214之間且可被用以轉移資料於執行緒之間。圖形多處理器234亦可存取晶片外總體記憶體,其可包括本地平行處理器記憶體及/或系統記憶體之一或更多者。平行處理單元202外部之任何記憶體可被使用為總體記憶體。其中處理叢集214包括圖形多處理器234之多數實例的實施例可共用共同指令及資料,其可被儲存於L1快取308中。
各處理叢集214可包括MMU 245(記憶體管理單元),其被組態成將虛擬位址映射入實體位址。於其他實施例中,MMU 245之一或更多實例可駐存於圖2之記憶體介面218內。MMU 245包括:一組頁表項目(PTE),其被用以將虛擬位址映射至磚片之實體位址(進一步討論有關填磚)、及(選擇性地)快取線指標。MMU 245可包括位址變換後備緩衝(TLB)或其可駐存於圖形多處理器234內之快取或L1快取或處理叢集214。實體位址被處理以分配表面資料存取局部性,以容許有效率的請求交錯於分割單元之間。快取線指標可被用以判定針對快取線之請求為命中或未中。
於圖形及計算應用中,處理叢集214可被組態以致其各圖形多處理器234被耦合至紋理單元236以供履行紋理映射操作,例如,判定紋理樣本位置、讀取紋理資料、及過濾紋理資料。紋理資料被讀取自內部紋理L1快取(未顯示)或者(於某些實施例)自圖形多處理器234內之L1快取,且被提取自L2快取、本地平行處理器記憶體、或系統記憶體,如所需。各圖形多處理器234將經處理工作輸出至資料交叉開關240以將該經處理工作提供至另一處理叢集214以供進一步處理;或者經由記憶體交叉開關216以將該經處理工作儲存於L2快取、本地平行處理器記憶體、或系統記憶體中。preROP 242(預光柵操作單元)被組態成接收來自圖形多處理器234之資料、導引資料至ROP單元,其可被配置與如文中所述之分割單元(例如,圖2之分割單元220A-220N)。preROP 242單元可履行針對顏色混合之最佳化、組織像素顏色資料、及履行位址變換。
將理解:文中所示之核心架構為說明性的且其變化及修改是可能的。任何數目的處理單元(例如,圖形多處理器234、紋理單元236、preROP 242,等等)可被包括於處理叢集214內。再者,雖然僅顯示一處理叢集214,但如文中所述之平行處理單元可包括處理叢集214之任何數目的實例。於一實施例中,各處理叢集214可被組態成獨立於其他處理叢集214而操作,使用分離且不同的處理單元、L1快取,等等。
圖2D顯示圖形多處理器234,依據一實施例。於此類實施例中,圖形多處理器234係與處理叢集214之管線管理器232耦合。圖形多處理器234具有執行管線,其包括(但不限定於)指令快取252、指令單元254、位址映射單元256、暫存器檔258、一或更多通用圖形處理單元(GPGPU)核心262、及一或更多載入/儲存單元266。GPGPU核心262及載入/儲存單元266係經由記憶體和快取互連268而與快取記憶體272及共用記憶體270耦合。
於一實施例中,指令快取252接收來自管線管理器232之應執行的指令串。該些指令被快取於指令快取252中且被調度以供由指令單元254來執行。指令單元254可調度指令為執行緒群(例如,經線),以執行緒群之各執行緒被指派給GPGPU核心262內之不同執行單元。指令可藉由指明統一位址空間內之位址以存取本地、共用、或總體位址空間之任一者。位址映射單元256可被用以將總體位址空間中之位址變換為相異的記憶體位址,其可由載入/儲存單元266所存取。
暫存器檔258提供用於圖形多處理器324之功能性單元的一組暫存器。暫存器檔258提供暫時儲存給運算元,其係連接至圖形多處理器324之功能性單元(例如,GPGPU核心262、載入/儲存單元266)的資料路徑。於一實施例中,暫存器檔258被劃分於功能性單元的各者之間以致其各功能性單元被配置暫存器檔258之專屬部分。於一實施例中,暫存器檔258被劃分於其正由圖形多處理器324所執行的不同經線之間。
GPGPU核心262可各包括浮點單元(FPU)及/或整數算術邏輯單元(ALU),其被用以執行圖形多處理器324之指令。GPGPU核心262可於架構上類似或可於架構上不同,依據實施例。例如(以及於一實施例中),GPGPU核心262之第一部分包括單一精確度FPU及整數ALU,而GPGPU核心之第二部分包括雙精確度FPU。於一實施例中,FPU可實施IEEE 754-2008標準於浮點算術或者致能可變精確度浮點算術。圖形多處理器324可額外地包括一或更多固定功能或特殊功能單元,用以履行諸如複製矩形或像素混合操作等特定功能。於一實施例中,GPGPU核心之一或更多者亦可包括固定或特殊功能邏輯。
記憶體及快取互連268為互連網路,其係將圖形多處理器324的功能性單元之各者連接至暫存器檔258以及連接至共用記憶體270。於一實施例中,記憶體及快取互連268為交叉開關互連,其容許載入/儲存單元266實施介於共用記憶體270與暫存器檔258之間的載入和儲存操作。暫存器檔258可操作於如GPGPU核心262之相同頻率,因此介於GPGPU核心262與暫存器檔258之間的資料轉移是極低潛時的。共用記憶體270可被用以致能介於其執行在圖形多處理器234內之功能性單元上的執行緒之間的通訊。快取記憶體272可被使用為資料快取,例如,用以快取於功能性單元與紋理單元236之間傳遞的紋理資料。共用記憶體270亦可被使用為程式管理快取的。執行於GPGPU核心262上之執行緒可將資料編程地儲存於共用記憶體內,除了其被儲存於快取記憶體272內之自動快取資料以外。
圖3A-3B顯示額外的圖形多處理器,依據實施例。所示的圖形多處理器325、350為圖2C之圖形多處理器234的變體。所示的圖形多處理器325、350可被組態為能夠同時執行大量執行緒之串流多處理器(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。各個組件可經由互連組織327來通訊。於一實施例中,互連組織327包括一或更多交叉開關,用以致能介於圖形多處理器325的各個組件之間的通訊。
圖3B顯示圖形多處理器350,依據一額外實施例。圖形處理器包括多數組執行資源356A-356D,其中各組執行資源包括多數指令單元、暫存器檔、GPGPU核心、及載入儲存單元,如圖2D及圖3A中所示者。執行資源356A-356D可配合紋理單元360A-360D工作以利紋理操作,而同時共用指令快取354、及共用記憶體362。於一實施例中,執行資源356A-356D可共用指令快取354和共用記憶體362、以及紋理及/或資料快取記憶體358A-358B之多數實例。各個組件可經由互連組織352而通訊,類似於圖3A之互連組織327。
熟悉本技術人士將理解:圖1、2A-2D、及3A-3B中所述之架構為說明性的而不是針對本實施例之範圍有限制的。因此,文中所述之技術可被實施於任何適當組態的處理單元上,包括(非限制)一或更多行動裝置應用程式處理器、包括多核心CPU之一或更多桌上型電腦或伺服器中央處理單元(CPU)、一或更多平行處理單元(諸如圖2之平行處理單元202)、以及一或更多圖形處理器或特殊用途處理單元,而不背離文中所述之實施例的範圍。
於某些實施例中,如文中所述之平行處理器或GPGPU被通訊地耦合至主機/處理器核心以加速圖形操作、機器學習操作、型樣分析操作、及各種通用GPU(GPGPU)功能。GPU可透過匯流排或其他互連(例如,諸如PCIe或NVLink等高速互連)被通訊地耦合至主機處理器/核心。於其他實施例中,GPU可被集成於如該等核心之相同封裝或晶片上,且透過內部處理器匯流排/互連(亦即,封裝或晶片內部)而被通訊地耦合至該些核心。無論其中GPU所被連接之方式為何,處理器核心可將工作配置給GPU,以工作描述符之所含之命令/指令的序列之形式。GPU接著使用專屬電路/邏輯以便有效率地處理這些命令/指令。
用於GPU至主機處理器互連之技術
圖4A闡明範例架構,其中複數GPU 410-413係透過高速鏈結440-443(例如,匯流排、點對點互連,等等)而被通訊地耦合至複數多核心處理器405-406。於一實施例中,高速鏈結440-443支援4GB/s、30GB/s、80GB/s或更高的通訊通量,根據實施方式。各種互連協定可被使用,包括(但不限定於)PCIe 4.0或5.0及NVLink 2.0。然而,本發明之主要原理不限於任何特定的通訊協定或通量。
此外,於一實施例中,GPU 410-413之二或更多者係透過高速鏈結444-445而被互連,其可使用那些用於高速鏈結440-443者以外的相同或不同協定/鏈結來實施。類似地,多核心處理器405-406之二或更多者可透過高速鏈結433而被連接,高速鏈結433可為操作於20GB/s、30GB/s、120GB/s或更高的對稱多處理器(SMP)匯流排。替代地,介於圖4A中所示的各個系統組件之間的所有通訊可使用相同的協定/鏈結來完成(例如,透過共同互連組織)。然而,如上所述,本發明之主要原理不限於任何特定類型的互連技術。
於一實施例中,各多核心處理器405-406被通訊地耦合至處理器記憶體401-402,個別地經由記憶體互連430-431;且各GPU 410-413係透過GPU記憶體互連450-453而被個別通訊地耦合至GPU記憶體420-423。記憶體互連430-431及450-453可利用相同或不同的記憶體存取技術。舉例而言(且非限制性),處理器記憶體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晶片上,該些GPU晶片係集成於一經由高速鏈結440而被耦合至處理器407之線卡上。替代地,圖形加速模組446可被集成於如處理器407之相同封裝或晶片上。
所示的處理器407包括複數核心460A-460D,其各具有變換後備緩衝461A-461D及一或更多快取462A-462D。該些核心可包括用以執行指令及處理資料之各種其他組件,其未被顯示以免混淆本發明之主要原理(例如,指令提取單元、分支預測單元、解碼器、執行單元、記錄器緩衝器,等等)。快取462A-462D可包含第1階(L1)及第2階(L2)快取。此外,一或更多共用快取426可被包括於快取階層中且係由多組核心460A-460D所共用。例如,處理器407之一實施例包括24個核心,各具有其本身的L1快取、十二個共用的L2快取、及十二個共用的L3快取。於此實施例中,L2及L3快取之一係由兩個相鄰核心所共用。處理器407及圖形加速器集成模組446係與系統記憶體441連接,該系統記憶體441可包括處理器記憶體401-402。
經由透過同調匯流排464之核心間通訊以維持同調性於各個快取462A-462D、456及系統記憶體441中所儲存的資料和指令。例如,各快取可具有與其相關的快取同調性邏輯/電路,以供透過同調匯流排464來通訊,回應於檢測到的讀取或寫入至特定快取線。於一實施方式中,快取監聽協定被實施涵蓋同調匯流排464以監聽快取存取。快取監聽/同調性技術是那些熟悉此技藝人士所熟知的且將不被詳細地描述於此以免混淆本發明之主要原理。
於一實施例中,代理電路425通訊地耦合圖形加速模組446至同調匯流排464,其容許圖形加速模組446參與快取同調性協定而成為該些核心之同級。特別地,介面435提供透過高速鏈結440(例如,PCIe匯流排、NVLink,等等)之連接至代理電路425,而介面437係連接圖形加速模組446至鏈結440。
於一實施方式中,加速器積體電路436係提供快取管理、記憶體存取、背景管理、及中斷管理服務,代表圖形加速模組446之複數圖形處理引擎431、432、N。圖形處理引擎431、432、N可各包含分離的圖形處理單元(GPU)。替代地,圖形處理引擎431、432、N可包含GPU內之不同類型的圖形處理引擎,諸如圖形執行單元、媒體處理引擎(例如,視頻編碼器/解碼器)、取樣器、及分裂引擎。換言之,圖形加速模組可為具有複數圖形處理引擎431-432、N之GPU,或者圖形處理引擎431-432、N可為集成於共同封裝、線卡、或晶片上之單獨GPU。
於一實施例中,加速器積體電路436包括記憶體管理單元(MMU)439,用以履行各種記憶體管理功能,諸如虛擬至實體記憶體轉換(亦稱為有效至真實記憶體轉換)及用以存取系統記憶體441之記憶體存取協定。MMU 439亦可包括變換後備緩衝(TLB)(未顯示),用以將虛擬/有效快取至實體/真實位址變換。於一實施方式中,快取438儲存命令及資料以供藉由圖形處理引擎431-432、N之有效率存取。於一實施例中,快取438及圖形記憶體433-434、N中所儲存之資料被保持與核心快取462A-462D、456及系統記憶體411同調。如上所述,此可經由代理電路425來完成,該代理電路425代表快取438及記憶體433-434、N參與快取同調性機制(例如,傳送更新至快取438(相關於處理器快取462A-462D、456上之快取線的修改/存取)並接收來自快取438之更新)。
一組暫存器445係儲存背景資料以用於由圖形處理引擎431-432、N所執行之執行緒,而背景管理電路448係管理執行緒背景。例如,背景管理電路448可履行保存及復原操作,用以保存及復原背景切換期間之各個執行緒的背景(例如,其中第一執行緒被保存而第二執行緒被儲存以致該第二執行緒可由圖形處理引擎所執行)。例如,於背景切換,背景管理電路448可將目前暫存器值儲存至記憶體中之指定區(例如,由背景指針所識別)。其可接著復原該些暫存器值,當返回至該背景時。於一實施例中,中斷管理電路447接收並處理從系統裝置所接收的中斷。
於一實施方式中,來自圖形處理引擎431之虛擬/有效位址係藉由MMU 439而被變換為系統記憶體411中之真實/實體位址。加速器積體電路436之一實施例係支援多數(例如,4、8、16)圖形加速模組446及/或其他加速器裝置。圖形加速模組446可專屬於處理器407上所執行之單一應用程式或者可被共用於多數應用程式之間。於一實施例中,提出虛擬化的圖形執行環境,其中圖形處理引擎431-432、N之資源係與多數應用程式或虛擬機器(VM)共用。該些資源可被細分為「片」,其係根據與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或Nano-Ram。
於一實施例中,為了減少透過鏈結440之資料流量,偏壓技術被用以確保其圖形記憶體433-434、M中所儲存之資料為其將最常被圖形處理引擎431-432、N使用且最好不被核心460A-460D使用(至少不常)之資料。類似地,偏壓機制嘗試將該些核心(且最好不是圖形處理引擎431-432、N)所需的資料保持於該些核心及系統記憶體411之快取462A-462D、456內。
圖4C闡明另一實施例,其中加速器積體電路436被集成於處理器407內。於此實施例中,圖形處理引擎431-432、N係透過高速鏈結440而直接地通訊至加速器積體電路436,經由介面437及介面435(其,再次地,可利用任何形式的匯流排或介面協定)。加速器積體電路436可履行如針對圖4B所述那些之相同操作,但潛在地以較高的通量,由於其接近於同調匯流排462及快取462A-462D、426。
一實施例支援不同的編程模型,包括專屬程序編程模型(無圖形加速模組虛擬化)及共用編程模型(具有虛擬化)。後者可包括其由加速器積體電路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係使用程序處置以選擇程序元件。於一實施例中,程序元件被儲存於系統記憶體411中且係使用文中所述之有效位址至真實位址變換技術而為可定址的。程序處置可為實施方式特定的值,其被提供至主機程序在當以圖形處理引擎431-432、N登錄其背景時(亦即,呼叫系統軟體以將程序元件加至程序元件鏈結列表)。程序處置之較低16位元可為程序元件鏈結列表內之程序元件的偏移。
圖4D闡明範例加速器集成片490。如文中所使用,「片」包含加速器積體電路436的處理資源之指定部分。系統記憶體411內之應用程式有效位址空間482係儲存程序元件483。於一實施例中,程序元件483被儲存以回應於來自處理器407上所執行之應用程式480的GPU調用481。程序元件483含有相應應用程式480之程序狀態。程序元件483中所含之工作描述符(WD)484可為應用程式所請求的單一工作或可含有針對工作之佇列的指針。於後者情況下,WD 484為針對應用程式之位址空間482中的工作請求佇列之指針。
圖形加速模組446及/或個別圖形處理引擎431-432、N可由該系統中之程序的全部或子集所共用。本發明之實施例包括一種設施,用以設定程序狀態並傳送WD 484至圖形加速模組446以開始虛擬化環境中之工作。
於一實施方式中,專屬程序編程模型為實施方式特定的。於此模型中,單一程序擁有圖形加速模組446或單獨圖形處理引擎431。因為圖形加速模組446係由單一程序所擁有,所以超管理器係針對其擁有的分割初始化加速器積體電路436而作業系統係針對其擁有的程序初始化加速器積體電路436,在當圖形加速模組446被指派時的時刻。
於操作時,加速器集成片490中之WD提取單元491係提取下一WD 484,其包括應由圖形加速模組446的圖形處理引擎之一所完成的工作之指示。來自WD 484之資料可被儲存於暫存器445中並由MMU 439、中斷管理電路447及/或背景管理電路446所使用(如圖所示)。例如,MMU 439之一實施例包括分段/頁步行電路,用以存取OS虛擬位址空間485內之分段/頁表486。中斷管理電路447可處理從圖形加速模組446所接收的中斷事件492。當履行圖形操作時,由圖形處理引擎431-432、N所產生的有效位址493被MMU 439變換為真實位址。
於一實施例中,相同組的暫存器445被複製給各圖形處理引擎431-432、N及/或圖形加速模組446並可由超管理器或作業系統所初始化。這些複製的暫存器之各者可被包括於加速器集成片490中。其可被超管理器所初始化之範例暫存器被顯示於表1中。
於一實施例中,各WD 484係專屬於特定的圖形加速模組446及/或圖形處理引擎431-432、N。其含有圖形處理引擎431-432、N欲執行其工作所需的所有資訊或者其可為針對其中應用程式已設定欲完成之工作的命令佇列之記憶體位置的指針。
圖4E闡明共用模型之一實施例的額外細節。此實施例包括超管理器真實位址空間498,其中係儲存程序元件列表499。超管理器真實位址空間498為經由超管理器496可存取的,其係虛擬化作業系統495之圖形加速模組引擎。
共用編程模型容許來自該系統中之分割的全部或子集之程序的全部或子集使用圖形加速模組446。有兩種編程模型,其中圖形加速模組446係由多數程序及分割所共用:時間片共用及圖形導向共用。
於此模型中,系統超管理器496擁有圖形加速模組446並使其功能可用於所有作業系統495。為了使圖形加速模組446支援藉由系統超管理器496之虛擬化,圖形加速模組446可遵守以下需求:1)應用程式之工作請求必須為自律的(亦即,狀態無須被維持於工作之間);或者圖形加速模組446必須提供背景保存及復原機制。2)應用程式之工作請求係由圖形加速模組446確保完成於指定的時間量中,包括任何轉換錯誤;或者圖形加速模組446提供先佔該工作之處理的能力。3)圖形加速模組446必須被確保介於程序之間的公平性,當操作於該導向的共用編程模型中時。
於一實施例中,針對共用模型,應用程式480被要求進行作業系統495系統呼叫,以圖形加速模組446類型、工作描述符(WD)、權限遮罩暫存器(AMR)值、及背景保存/復原區域指針(CSRP)。圖形加速模組446類型係描述該系統呼叫之目標加速功能。圖形加速模組446類型可為系統特定值。WD被明確地格式化於圖形加速模組446並可為以下之形式:圖形加速模組446命令、針對使用者定義結構之有效位址指針、針對命令佇列之有效位址指針、或用以描述應由圖形加速模組446所執行之工作的任何其他資料結構。於一實施例中,AMR值為用於目前程序之AMR狀態。被傳遞至作業系統之值係類似於設定該AMR之應用程式。假如加速器積體電路436及圖形加速模組446實施方式不支援使用者權限遮罩撤銷暫存器(UAMOR),則作業系統可將目前UAMOR值應用於AMR值(在傳遞超管理器呼叫中之AMR前)。超管理器496可選擇性地應用目前權限遮罩撤銷暫存器(AMOR)值,在將該AMR置於程序元件483內之前。於一實施例中,CSRP為含有圖形加速模組446之應用程式位址空間482中的區域之有效位址的暫存器445之一,用以保存並復原背景狀態。此指針為選擇性的,假如無狀態需被保存於工作之間的話或者當工作被先佔時。背景保存/復原區域可為固定系統記憶體。
於接收該超管理器呼叫時,超管理器496驗證其作業系統495已登錄且已被提供權限來使用圖形加速模組446。超管理器496接著將程序元件483置入相應圖形加速模組446類型之程序元件鏈結表中。程序元件可包括表4中所示之資訊。
於一實施例中,超管理器初始化複數加速器集成片490暫存器445。
如圖4中所示,本發明之一實施例係利用一種經由共同虛擬記憶體位址空間(用以存取實體處理器記憶體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的快取之間的快取同調以及偏壓技術(指示其中某些類型的資料應被儲存之實體記憶體)。雖然偏壓/同調管理電路494A-494E之多數實例被顯示於圖4F,但偏壓/同調電路亦可被實施於一或更多主機處理器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偏壓與主機處理器偏壓之間的選擇係由偏壓追蹤器資料結構所驅動。偏壓表可被使用,例如,其可為頁粒度的結構(亦即,以記憶體頁之粒度來控制),其包括1或2位元於每GPU裝附的記憶體頁。偏壓表可被實施於一或更多GPU裝附的記憶體420-423之竊取的記憶體範圍中,有或沒有偏壓快取於GPU 410-413中(例如,用以快取偏壓表之頻繁/最近使用的項目)。替代地,整個偏壓表可被保持於GPU內。
於一實施方式中,與GPU裝附的記憶體420-423之各存取相關的偏壓表項目係在對於該GPU記憶體之實際存取前被存取,造成下述操作。首先,於GPU偏壓中發現其頁之來自GPU 410-413的本地請求被直接地傳遞至相應的GPU記憶體420-423。於主機偏壓中發現其頁之來自GPU的本地請求被傳遞至處理器405(例如,透過如以上所討論之高速鏈結)。於一實施例中,於主機處理器偏壓中發現該請求頁之來自處理器405的請求係完成該請求如一般的記憶體讀取。替代地,指向GPU偏壓頁之請求可被傳遞至GPU 410-413。GPU可接著將該頁變遷至主機處理器偏壓,假如其並非目前正在使用該頁的話。
頁之偏壓狀態可藉由以下之任一者而被改變:軟體為基的機制、硬體協助之軟體為基的機制、或(針對有限組的情況)全然硬體為基的機制。
一種用於改變偏壓狀態之機制係利用API呼叫(例如,OpenCL),其(接著)呼叫GPU之裝置驅動程式,其(接著)傳送訊息(或將一命令描述符放入佇列)至GPU以指引其改變偏壓狀態並(針對某些變遷)履行快取清除操作於該主機中。快取清除操作是針對從主機處理器405偏壓至GPU偏壓之變遷所必要的,但並非針對相反變遷所必要的。
於一實施例中,快取同調性係藉由主機處理器405暫時地使GPU偏壓的頁無法快取來維持。為了存取這些頁,處理器405可從GPU 410請求存取,該GPU 410可或可不立刻准予存取,根據實施方式。因此,為了減少介於處理器405與GPU 410之間的通訊,有利的是確保其GPU偏壓的頁為那些由GPU(而非主機處理器405)所需求者,且反之亦然。
圖形處理管線
圖5闡明圖形處理管線500,依據一實施例。於一實施例中,圖形處理器可實施所示的圖形處理管線500。圖形處理器可被包括於如文中所述之平行處理子系統內,諸如圖2之平行處理器200,其(於一實施例中)為圖1之平行處理器112的變體。各個平行處理系統可實施圖形處理管線500,經由如文中所述之平行處理單元(例如,圖2之平行處理單元202)的一或更多實例。例如,著色器單元(例如,圖3之圖形多處理器234)可組態成履行頂點處理單元504、鑲嵌控制處理單元508、鑲嵌評估處理單元512、幾何處理單元516、及片段/像素處理單元524之一或更多者的功能。資料組譯器502、基元組譯器506、514、518、鑲嵌單元510、柵格化器522、及光柵操作單元526之功能亦可由處理叢集(例如,圖3之處理叢集214)及相應分割單元(例如,圖2之分割單元220A-220N)內之其他處理引擎所履行。圖形處理管線500亦可使用針對一或更多功能之專屬處理單元來實施。於一實施例中,圖形處理管線500之一或更多部分可由通用處理器(例如,CPU)內之平行處理邏輯所履行。於一實施例中,圖形處理管線500之一或更多部分可經由記憶體介面528(其可為圖2之記憶體介面218的實例)以存取晶片上記憶體(例如,圖2之平行處理器記憶體222)。
於一實施例中,資料組譯器502為一種處理單元,其係收集表面及基元之頂點資料。資料組譯器502接著輸出頂點資料(包括頂點屬性)至頂點處理單元504。頂點處理單元504為可編程執行單元,其係執行頂點著色器程式,照亮及變換如由頂點著色器程式所指明的頂點資料。頂點處理單元504係讀取其被儲存於快取、本地或系統記憶體中之資料以用於處理頂點資料,並可被編程以將頂點資料從物件為基的座標表示變換為世界空間座標空間或正規化裝置座標空間。
基元組譯器506之第一實例係接收來自頂點處理單元50之頂點屬性。基元組譯器506係讀取已儲存的頂點屬性(如所需)並建構圖形處理基元以供由鑲嵌控制處理單元508所處理。圖形基元包括三角形、線段、點、補丁(等等),如由各種圖形處理應用程式編程介面(API)所支援。
鑲嵌控制處理單元508將輸入頂點視為幾何補丁之控制點。控制點係從來自該補丁(例如,該補丁之基礎)的輸入表示被變換為適用於藉由鑲嵌評估處理單元512之表面評估的表示。鑲嵌控制處理單元508亦可計算幾何補丁之邊緣的鑲嵌因數。鑲嵌因數適用於單一邊緣並量化與該邊緣相關的細節之觀點相依位準。鑲嵌單元510被組態成接收補丁之邊緣的鑲嵌因數並將該補丁鑲嵌入多數幾何基元(諸如線、三角形、或四邊形基元),其被傳輸至鑲嵌評估處理單元512。鑲嵌評估處理單元512操作於子分割補丁之參數化座標上以產生針對與幾何基元相關的各頂點之表面表示及頂點屬性。
基元組譯器514之第二實例接收來自鑲嵌評估處理單元512之頂點屬性、讀取已儲存的頂點屬性(如所需)、及建構圖形基元以供藉由幾何處理單元516之處理。幾何處理單元516為可編程執行單元,其係執行幾何著色器程式以變換其接收自基元組譯器514之圖形基元,如由幾何著色器程式所指明者。於一實施例中,幾何處理單元516被編程以將圖形基元子分割為一或更多新的圖形基元並計算參數(其被用以將新的圖形基元柵格化)。
於某些實施例中,幾何處理單元516可加入或刪除幾何串流中之元件。幾何處理單元516將該些參數及指明新圖形基元之頂點輸出至基元組譯器518。基元組譯器518從幾何處理單元516接收該些參數及頂點並建構圖形基元以供藉由視埠擴縮、剔除、及修剪單元520之處理。幾何處理單元516讀取其被儲存於平行處理器記憶體或系統記憶體中之資料以用於處理該幾何資料。視埠擴縮、剔除、及修剪單元520係履行修剪、剔除、及視埠擴縮並將處理過的圖形基元輸出至柵格化器522。柵格化器522可履行深度剔除及其他深度為基的最佳化。柵格化器522亦履行掃描轉換於新的圖形基元上,以產生片段並將那些片段及相關的覆蓋資料輸出至片段/像素處理單元524。柵格化器522係掃描轉換該些新的圖形基元並將片段及覆蓋資料輸出至片段/像素處理單元524。
片段/像素處理單元524為一種可編程執行單元,其被組態成執行片段著色器程式或像素著色器程式。片段/像素處理單元524變換其接收自柵格化器522之片段或像素,如由片段或像素著色器程式所指明者。例如,片段/像素處理單元524可被編程以履行操作,包括(但不限定於)紋理映射、著色、混合、紋理校正及透視校正,以產生其被輸出至光柵操作單元526之已著色片段或像素。片段/像素處理單元524可讀取其被儲存於平行處理器記憶體或系統記憶體中之資料以用於當處理該片段資料時。片段或像素著色器程式可被組態成著色於樣本、像素、磚片、或其他粒度上,根據針對該些處理單元所組態的取樣率。
光柵操作單元526為處理單元,其係履行光柵操作,包括(但不限定於)模板、z測試、混合,等等,並將像素資料輸出為已處理的圖形資料以被儲存於圖形記憶體(例如,如圖1中之平行處理器記憶體222)中,以被顯示於一或更多顯示裝置110上或者以利藉由一或更多處理器102或平行處理器112之一的進一步處理。於某些實施例中,光柵操作單元526被組態成壓縮其被寫入至記憶體之z或顏色資料並解壓縮其被讀取自記憶體之z或顏色資料。
圖6闡明一種利用計算最佳化(計算)機制之計算裝置600的實施例。計算裝置600(例如,智慧型穿戴式裝置、虛擬實境(VR)裝置、頭戴式顯示(HMD)、行動電腦、物聯網(IoT)裝置之網際網路、膝上型電腦、桌上型電腦、伺服器電腦,等等)可相同於圖1之資料處理系統100,而因此(為了簡化、清晰、及簡單理解)參考圖1-5之上述許多細節未被進一步討論或重複於下文中。如圖所示,於一實施例中,計算裝置600被顯示為主控計算機制610。
如圖所示,於一實施例中,計算機制610可由圖形驅動程式616所主控。然而,於其他實施例中,計算機制610可被單獨地主控於GPU 614中。於又其他實施例中,計算機制610可由中央處理單元(「CPU」或「應用程式處理器」)612所主控或者為中央處理單元612之韌體的部分。為了簡化、清晰、及簡單理解,遍及本說明書之剩餘部分,計算機制610可被討論為圖形驅動程式616之部分;然而,實施例不被如此限制。
於又另一實施例中,計算機制610可被作業系統606主控為軟體或韌體邏輯。於又進一步實施例中,計算機制610可被部分地且同時地由計算裝置600之多數組件所主控,諸如圖形驅動程式616、GPU 614、GPU韌體、CPU 612、CPU韌體、作業系統606,及/等等之一或更多者。已設想其計算機制610或其組件之一或更多者可被實施為硬體、軟體、及/或韌體。
遍及本說明書,術語「使用者」可被交換地稱為「觀看者」、「觀察者」、「人」、「個人」、「終端使用者」,及/或類似者等等。應注意:遍及本說明書,如「圖形領域」等術語可被交換地參照與「圖形處理單元」、「圖形處理器」、或僅為「GPU」;及類似地,「CPU領域」或「主機領域」可被交換地參照與「電腦處理單元」、「應用程式處理器」、或僅為「CPU」。
計算裝置600可包括任何數目及類型的通訊裝置,諸如大型計算系統,諸如伺服器電腦、桌上型電腦,等等,且可進一步包括機上盒(例如,網際網路為基的有線電視機上盒,等等)、全球定位系統(GPS)為基的裝置,等等。計算裝置600可包括行動計算裝置(作用為通訊裝置),諸如行動電話,包括智慧型手機、個人數位助理(PDA)、平板電腦、膝上型電腦、電子讀取器、智慧型電視、電視平台、穿戴式裝置(例如,眼鏡、手錶、手環、智慧卡、首飾、服裝項目,等等)、媒體播放器,等等。例如,於一實施例中,計算裝置600可包括行動計算裝置,其係利用主控積體電路(「IC」)之電腦平台,諸如系統單晶片(「SoC」或「SOC」),其係將計算裝置600之多種硬體及/或軟體組件集成於單一晶片上。
如圖所示,於一實施例中,計算裝置600可包括任何數目及類型的硬體及/或軟體組件,諸如(非限制性)GPU 614、圖形驅動程式(亦稱為「GPU驅動程式」、「驅動程式邏輯」、使用者模式驅動程式(UMD)、UMD、使用者模式驅動程式框架(UMDF)、UMDF、或僅為「驅動程式」)616、CPU 612、記憶體608、網路裝置、驅動程式,等等,以及輸入/輸出(I/O)來源604,諸如觸控式螢幕、觸控式面板、觸控板、虛擬或一般鍵盤、虛擬或一般滑鼠、埠、連接器,等等。
計算裝置600可包括作業系統(OS)606,其係作用為介於電腦裝置600的硬體及/或實體資源與使用者之間的介面。已考量其CPU 612可包括一或更多處理器,諸如圖1之處理器102;而GPU 614可包括一或更多圖形處理器(或多處理器)。
應注意:如「節點」、「計算節點」、「伺服器」、「伺服器裝置」、「雲端電腦」、「雲端伺服器」、「雲端伺服器電腦」、「機器」、「主機機器」、「裝置」、「計算裝置」、「電腦」、「計算系統」等等術語可遍及本說明書被可交換地使用。應進一步注意:如「應用程式」、「軟體應用程式」、「程式」、「軟體程式」、「程式包」、「軟體程式包」等等術語可遍及本說明書被可交換地使用。同時,如「工作」、「輸入」、「請求」、「訊息」等等術語可遍及本說明書被可交換地使用。
已考量且如參考圖1-5所進一步描述,如上所述之圖形管線的某些程序被實施以軟體,雖然剩餘部分被實施以硬體。圖形管線可被實施以一種圖形共處理器設計,其中CPU 612被設計成與GPU 614工作,該GPU 614可被包括於CPU 612中或者與CPU 612共置。於一實施例中,GPU 614可利用任何數目及類型的傳統軟體和硬體邏輯(用以履行相關於圖形渲染之傳統功能)以及新穎軟體和硬體邏輯(用以履行任何數目及類型的指令)。
如前所述,記憶體608可包括隨機存取記憶體(RAM),包含具有物件資訊之應用程式資料庫。記憶體控制器集線器(諸如圖1之記憶體集線器105)可存取RAM中之資料並將其傳遞至GPU 614以供圖形管線處理。RAM可包括雙資料速率RAM(DDR RAM)、延伸資料輸出RAM(EDO RAM),等等。CPU 612係與硬體圖形管線互動以共用圖形管線功能。
經處理資料被儲存於硬體圖形管線中之緩衝器中,而狀態資訊被儲存於記憶體608中。所得影像被接著轉移至I/O來源604,諸如用以顯示影像之顯示組件。已考量其顯示裝置可為各種類型,諸如陰極射線管(CRT)、薄膜電晶體(TFT)、液晶顯示(LCD)、有機發光二極體(OLED)陣列,等等,用以將資訊顯示給使用者。
記憶體608可包含緩衝器(例如,框緩衝器)之預配置區;然而,本技術領域中具有通常知識者應理解:實施例並未如此限制,且可存取至較低圖形管線之任何記憶體均可被使用。計算裝置600可進一步包括輸入/輸出(I/O)控制集線器(ICH)107,如參考圖1者,如一或更多I/O來源604,等等。
CPU 612可包括一或更多處理器,用以執行指令來履行計算系統所實施之任何軟體常式。該些指令常涉及履行於資料上之某種操作。資料和指令兩者均可被儲存於系統記憶體608及任何相關的快取中。快取通常被設計成具有比系統記憶體608更短的潛時;例如,快取可被集成於如處理器之相同的矽晶片上及/或被建構以較快速的靜態RAM(SRAM)單元,而系統記憶體608可被建構以較緩慢的動態RAM(DRAM)單元。藉由傾向於將較頻繁使用的指令及資料儲存於快取中(相對於系統記憶體608),增進了計算裝置600之整體性能效率。已考量於某些實施例中,GPU 614可存在為CPU 612之部分(諸如實體CPU封裝之部分),於此情況下,記憶體608可由CPU 612與GPU 614所共用或者被保持分離。
系統記憶體608可被製成可用於計算裝置600內之其他組件。例如,從針對計算裝置600之各種介面(例如,鍵盤和滑鼠、印表機埠、區域網路(LAN)埠、數據機埠,等等)所接收的或者從計算裝置600之內部儲存元件(例如,硬碟驅動)所擷取的任何資料(例如,輸入圖形資料)常被暫時地佇列於系統記憶體608中,在被一或更多處理器所操作之前,以軟體程式之實施方式。類似地,軟體程式所判定應從計算裝置600被傳送至外部單體(透過計算系統介面之一)、或者被儲存於內部儲存元件內的資料常被暫時地佇列於系統記憶體608中,在其被傳輸或儲存之前。
再者,例如,ICH可被用於確保此等資料被適當地傳遞於系統記憶體608與其適當的相應計算系統介面(及內部儲存裝置,假如該計算系統是如此設計的話)之間,並可具有雙向的點對點鏈結於其本身與觀察到的I/O來源/裝置604之間。類似地,MCH可被用於管理針對系統記憶體608存取之各個競爭的請求,於CPU 612與GPU 614、介面與內部儲存元件(其可能約略出現在彼此間的時間上)之間。
I/O來源604可包括一或更多I/O裝置,其被實施以轉移資料至及/或自計算裝置600(例如,網路配接器);或者,實施於計算裝置600內之大型非揮發性儲存(例如,硬碟驅動)。使用者輸入裝置(包括文數和其他鍵)可被用以將資訊及命令選擇傳遞至GPU 614。其他類型的使用者輸入裝置為游標控制,諸如滑鼠、軌跡球、觸控式螢幕、觸控板、或游標方向鍵,用以將方向資訊及命令選擇傳遞至GPU 614並用以控制顯示裝置上之游標移動。計算裝置600之相機和麥克風陣列可被利用以觀察姿勢、記錄音頻和視頻、及用以接收和傳輸視覺和音頻命令。
計算裝置600可進一步包括網路介面,用以提供存取至網路,諸如LAN、廣域網路(WAN)、都會區域網路(MAN)、個人區域網路(PAN)、藍牙、雲端網路、行動網路(例如,第3代(3G)、第4代(4G),等等)、內部網路、網際網路,等等。網路介面可包括(例如)具有天線(其可代表一或更多天線)之無線網路介面。網路介面亦可包括(例如)有線網路介面,用以經由網路纜線而與遠端裝置通訊,該網路纜線可為(例如)乙太網路纜線、同軸纜線、光纖纜線、串聯纜線、或並聯纜線。
網路介面可提供存取至LAN,例如,藉由符合IEEE 802.11b及/或 IEEE 802.11g標準;及/或無線網路介面可提供存取至個人區域網路,例如,藉由符合藍牙標準。其他無線網路介面及/或協定(包括該些標準之先前及後續版本)亦可被支援。除了(或取代)經由無線LAN標準之通訊外,網路介面可提供無線通訊,使用(例如)分時多重存取(TDMA)協定、全球行動通訊系統(GSM)協定、分碼多重存取(CDMA)協定、及/或任何其他類型的無線通訊協定。
網路介面可包括一或更多通訊介面,諸如數據機、網路介面卡、或其他眾所周知的介面裝置(諸如那些用以耦合至乙太網路者)、符記環、或其他類型的實體有線或無線附加裝置,為了提供用以支援LAN或WAN之通訊鏈結的目的,舉例而言。以此方式,電腦系統亦可被耦合至數個周邊裝置、客戶、控制表面、控制台、或伺服器,經由傳統網路設施(包括內部網路或網際網路),舉例而言。
應理解:比上述範例更少或更多配備的系統可能針對某些實施方式為較佳的。因此,計算裝置600之組態可根據數個因素而隨著實施方式改變,諸如價格限制、性能要求、技術改良、或其他環境。電子裝置或電腦系統600的範例可包括(非限制性)行動裝置、個人數位助理、行動計算裝置、智慧型手機、行動電話、手機、單向傳呼器、雙向傳呼器、傳訊裝置、電腦、個人電腦(PC)、桌上型電腦、膝上型電腦、筆記型電腦、手持式電腦、輸入板電腦、伺服器、伺服器陣列或伺服器農場、網伺服器、網路伺服器、網際網路伺服器、工作站、迷你電腦、主機電腦、超級電腦、網路器具、網器具、分散式計算系統、多處理器系統、處理器為基的系統、消費性電子產品、可編程消費性電子產品、電視、數位電視、機上盒、無線存取點、基地站、訂戶站、行動訂戶中心、無線電網路控制器、路由器、集線器、閘道、橋、開關、機器、或其組合。
實施例可被實施為以下任一者或組合:使用母板而互連的一或更多微晶片或積體電路、硬線邏輯、由記憶體裝置所儲存的或由微處理器所執行的軟體、韌體、特定應用積體電路(ASIC)、及/或場可編程閘極陣列(FPGA)。術語「邏輯」可包括(舉例而言)軟體或硬體及/或軟體和硬體之組合。
實施例可被提供(例如)為電腦程式產品,其可包括一或更多機器可讀取媒體(其上儲存有機器可執行指令),當由一或更多機器(諸如電腦、電腦之網路、或其他電子裝置)所執行時該些指令可導致該些一或更多機器依據文中所述之實施例以執行操作。機器可讀取媒體可包括(但不限定於)軟碟、光碟、CD-ROM(光碟唯讀記憶體)、及磁光碟、ROM、RAM、EPROM(可抹除可編程唯讀記憶體)、EEPROM(電可抹除可編程唯讀記憶體)、磁或光學卡、快閃記憶體、或者適於儲存機器可執行指令之其他類型的媒體/機器可讀取媒體。
此外,實施例可被下載為電腦程式產品,其中該程式可經由一或更多資料信號而從遠端電腦(例如,伺服器)被轉移至請求電腦(例如,客戶),該些資料信號係透過通訊鏈結(例如,數據機及/或網路連接)而被實施於(及/或被調變以)載波或其他傳播媒體中。
於傳統GPU中,計算單元包含相同的執行單元(EU),其被複製以產生EU之陣列。相同的組態要求EU具有針對各種用途之所有潛在特徵的超集。然而,不同的用途係主宰不同的核心設施,從微架構之觀點。例如,3D應用程式需要具有較小執行緒暫存器空間(~128)之大量執行緒於系統中,而媒體應用程式需要具有較大暫存器空間之少量執行緒。類似地,不同的計算應用程式將具有其本身的獨特需求。
依據一實施例,GPU 614被組態成包括具有不同類型的執行單元之處理單元。圖7A闡明GPU 614之一實施例。如圖7中所示,GPU 614包括處理單元700(例如,700(a)-700(n))。依據一實施例,處理器700之各者包含不同類型的EU。於此一實施例中,處理器700(a)可包括EU 705(例如,705(a)-705(n)),其包含第一類型;而處理器700(b)可包括EU 705(例如,706(a)-706(n)),其包含第二類型。類似地,處理器700(c)可包括EU 707(例如,705(a)-705(n)),其包含第三類型。
於其他實施例中,處理單元700可為相同的,具有不同類型的EU。例如,EU 705(0)、706(0)、706(0)包含第一類型;而705(1)、706(1)、706(1)及705(n)、706(n)、706(n)包含第二及第三類型,個別地。EU類型在以下各點可具有所差異:其可被處理之執行緒數、每執行緒之暫存器數、或任何其他處理特性。例如,3D應用程式可能需要較大量的執行緒及較小的執行緒暫存器空間(例如~128),而媒體應用程式可能需要具有較大暫存器空間之少量執行緒。因此,不同的EU類型可被實施以履行那些應用程式。
於其他實施例中,EU可為相同的類型,然而被組態以不同的能力。於此等實施例中,各EU類型(或組態)係針對特定深學習使用模型來設計(例如,訓練、卷積、偏壓、修正線性單元(ReLU)、集用,等等)。
於應用程式期間,當GPU 614被調用時,計算機制610係選擇其將被實施以執行工作量的EU。於一實施例中,計算機制610可包括編譯器,其係靜態地選擇該些EU(在該應用程式之執行以前)以致EU組態於特定應用程式之壽命期間保持為相同。於其他實施例中,計算機制610可被實施為一種執行緒調度器,其係針對GPU 614執行之各調用以最佳地組態該些EU。於又其他實施例中,執行緒調度器可動態地改變每執行緒群之EU組態於調度期間。
依據一實施例,計算機制610亦可傳輸軟體暗示至GPU 614。於此一實施例中,該些暗示可指示其GPU 614應將較高功率的核心切斷電源(或略過),假如處理需要較少的處理密集EU的話。因此,計算機制提供計算及功率優點,其致能執行緒之調度至特定EU,而同時其不需要的EU被變遷至較低功率狀態。
GPU 614亦可被實施以處理深學習應用程式中之矩陣操作。此等矩陣應用程式需要從記憶體至GPU 614之大量資料的轉移。依據一實施例,處理單元700可被包括於記憶體內以消除此等資料轉移。圖7B闡明包括處理單元700之記憶體750的一實施例。
於一實施例中,記憶體750為高頻寬記憶體(HBM)。於此一實施例中,HBM被包括於如GPU 614之相同封裝中。因此,處理單元700可被實體地裝附至HBM控制器760。雖然於文中被討論為HBM,但其他實施例可實施不同類型的記憶體裝置,其具有高性能RAM介面。
如圖7B中所示,記憶體750包括通道752(0、1、...N)。於一實施例中,各記憶體通道752包括處理單元700,以致其處理單元700(a)被包括於通道0內、處理單元700(b)被包括於通道1內及處理單元700(n)被包括於通道N內。於進一步實施例中,處理單元700亦可包括不同類型的EU,如以上所討論。
於又另一實施例中,計算機制610可有效率地履行矩陣-向量(例如,矩陣至向量及向量至矩陣)變換。圖7C闡明2D陣列(M+1)x(M+1)之範例線性變換。矩陣-向量變換在目前GPU中是計算密集的,由於必須在操作期間移動大量資料以履行變換的需求。依據一實施例,計算機制610實施GPU 614內之暫存器檔以有效率地履行矩陣至向量變換及向量至矩陣變換。
於此一實施例中,計算機制610修改暫存器檔之暫存器內容而無須實際地移動資料。因此,矩陣/向量資料被儲存於相連暫存器區塊中。於一實施例中,用以履行該些操作之指令包括來源及目的地。於此實施例中,來源包括暫存器位址開始限制、陣列之跨步、元件之數目及元件大小。一旦操作被履行,則結果被儲存於目的地暫存器中。利用暫存器檔之變換被實施以任何資料類型(例如,4位元、8位元、16位元)、或者以機器學習演算法。雖然以上係描述其利用暫存器檔,但該些變換亦可依據其他實施例而被履行於共用本地記憶體(SLM)中。
機器學習概述
機器學習演算法是一種演算法,其可根據資料之集合來學習。機器學習演算法之實施例可被設計成模擬一資料集內之高階抽象化。例如,影像辨識演算法可被用以判定既定輸入係屬於數個種類之何者;迴歸演算法可輸出給定一輸入之數值;而型態辨識演算法可被用以產生已變換文字或者履行文字至語音及/或語音辨識。
機器學習演算法之一範例類型為神經網路。有許多類型的神經網路;神經網路之一簡單類型為前饋網路。前饋網路可被實施為非循環圖表,其中節點被配置於層中。通常,前饋網路拓撲包括輸入層及輸出層,其係由至少一隱藏層所分離。隱藏層將其由輸入層所接收的輸入變換為一種可用於產生輸出層中之輸出的表示。網路節點係經由邊緣而被完全地連接至相鄰層中之節點,但並無邊緣介於各層內的節點之間。於前饋網路之輸入層的節點上所接收之資料係經由啟動函數而被傳播(亦即,「前饋」)至輸出層之節點,該啟動函數係根據與其連接該些層之邊緣的各者個別地相關的係數(「加權」)以計算該網路中各連續層之節點的狀態。根據由執行中演算法所表示的特定模型,來自神經網路演算法之輸出可具有多種形式。
在機器學習演算法可被用以模擬特定問題之前,該演算法係使用訓練資料集來訓練。訓練神經網路涉及選擇網路拓撲、使用其表示由該網路所模擬之問題的訓練資料之集合、及調整加權直到該網路模擬以最小錯誤履行於該訓練資料集之所有實例為止。例如,於針對神經網路之受監督學習訓練程序期間,由該網路所產生的輸出(回應於其表示訓練資料集中之實例的輸入)係與該實例之「正確」標示的輸出進行比較;表示介於該輸出與該標示的輸出之間的差異之錯誤信號被計算;及與該些連接相關的加權被調整以將該錯誤最小化(隨著該錯誤信號被向後傳遞通過該網路之該些層)。當從該訓練資料集之實例所產生的輸出之各者的錯誤被最小化時,則該網路被視為「已訓練」。
機器學習演算法之準確度可受到其用以訓練該演算法之資料集的品質所顯著地影響。訓練程序可為計算上密集的,且可能需要顯著的時間量於傳統通用處理器上。因此,平行處理硬體被用以訓練許多類型的機器學習演算法。此係特別有用以最佳化神經網路之訓練,因為於調整神經網路中之係數時所履行的計算自然地參與平行實施方式。明確地,許多機器學習演算法及軟體應用程式已被調適以利用通用圖形處理裝置內之平行處理硬體。
圖8為機器學習軟體堆疊800之一般化圖形。機器學習應用程式802可被組態成使用訓練資料集來訓練神經網路或者使用深神經網路來實施機器智慧。機器學習應用程式802可包括針對其可被用以訓練神經網路(在部署前)之神經網路及/或特殊化軟體的訓練及推理功能。機器學習應用程式802可實施任何類型的機器智慧,包括(但不限定於)影像辨識、映射和本地化、自律導航、語音合成、醫藥成像、或語言翻譯。
機器學習應用程式802之硬體加速器可經由機器學習框架804而被致能。機器學習框架804可提供機器學習基元之庫。機器學習基元為常由機器學習演算法所履行的基本操作。若無機器學習框架804,機器學習演算法之開發商將被要求產生並最佳化其與機器學習演算法相關的主計算邏輯,然後隨著新的平行處理器被開發而再最佳化該計算邏輯。取代地,機器學習應用程式802可被組態成使用由機器學習框架804所提供的基元以履行必要的計算。範例基元包括張量卷積、啟動功能、和集用,其為當訓練卷積神經網路(CNN)時所履行的計算操作。機器學習框架804亦可提供基元以實施基本線性代數子程式,其係由許多機器學習演算法(諸如矩陣和向量操作)所履行。
機器學習框架804可處理其接收自機器學習應用程式802之輸入資料並產生適當的輸入給計算框架806。計算框架806可提取其被提供至GPGPU驅動程式808之主要指令,以致能機器學習框架804利用經由GPGPU硬體810之硬體加速而無須機器學習框架804具有GPGPU硬體810之架構的內部知識。此外,計算框架806可致能機器學習框架804之硬體加速,涵蓋GPGPU硬體810之多種類型及世代。
GPGPU機器學習加速
圖9闡明高度平行的通用圖形處理單元900,依據一實施例。於一實施例中,通用處理單元(GPGPU) 900可被組態成特別地有效率於處理與訓練深神經網路相關的計算工作量之類型。此外,GPGPU 900可被直接地鏈結至GPGPU之其他實例以產生多GPU叢集來增進針對特別深神經網路之訓練速度。
GPGPU 900包括主機介面902,用以致能與主機處理器之連接。於一實施例中,主機介面902為PCI Express介面。然而,主機介面亦可為供應商特定的通訊介面或通訊組織。GPGPU 900從主機處理器接收命令並使用總體排程器904以將與那些命令相關的執行緒分配至一組計算叢集906A-H。該些計算叢集906A-H係共用快取記憶體908。快取記憶體908可作用為高階快取,用於計算叢集906A-H內之快取記憶體。
GPGPU 900包括記憶體914A-B,其係經由一組記憶體控制器912A-B而與計算叢集906A-H耦合。於各個實施例中,記憶體914A-B可包括各個類型的記憶體裝置,包括動態隨機存取記憶體(DRAM)或圖形隨機存取記憶體,諸如同步圖形隨機存取記憶體(SGRAM),包括圖形雙資料速率(GDDR)記憶體。於一實施例中,記憶體單元224A-N亦可包括3D堆疊記憶體,包括(但不限定於)高頻寬記憶體(HBM)。
於一實施例中,各計算叢集GPLAB06A-H包括一組圖形多處理器,諸如圖4A之圖形多處理器400。計算叢集之圖形多處理器包括多種類型的整數及浮點邏輯單元,其可履行計算操作在包括適於機器學習計算之精確度範圍上。例如(以及於一實施例中),於計算叢集906A-H之各者中的浮點單元之至少一子集可被組態成履行16位元或32位元浮點操作,而浮點單元之不同子集可被組態成履行64位元浮點操作。
GPGPU 900之多數實例可被組態成操作為計算叢集。由計算叢集所用於同步化及資料交換的通訊機制係跨越實施例而改變。於一實施例中,GPGPU 900之多數實例係透過主機介面902來通訊。於一實施例中,GPGPU 900包括I/O集線器908,其係將GPGPU 900與GPU鏈結910耦合,該GPU鏈結910係致能直接連接至GPGPU之其他實例。於一實施例中,GPU鏈結910被耦合至專屬GPU至GPU橋,其係致能介於GPGPU 900的多數實例之間的通訊及同步化。於一實施例中,GPU鏈結910係與高速互連耦合以將資料傳輸及接收至其他GPGPU或平行處理器。於一實施例中,GPGPU 900之多數實例被置於分離的資料處理系統中並經由網路裝置(其為經由主機介面902可存取的)來通訊。於一實施例中,GPU鏈結910可被組態成致能連接至主機處理器,除了主機介面902之外(或當作其替代)。
雖然GPGPU 900之所示組態可被組態成訓練神經網路,但一實施例係提供GPGPU 900之替代組態,其可被組態以供部署於高性能或低功率推理平台內。於推理組態中,GPGPU 900包括較少的計算叢集906A-H,相對於訓練組態。此外,與記憶體914A-B相關的記憶體技術可於推理與訓練組態之間有差異。於一實施例中,GPGPU 900之推理組態可支援推理特定指令。例如,推理組態可提供一或更多8位元整數內積指令之支援,其係常用於針對已部署神經網路之推理操作期間。
圖10闡明多GPU計算系統1000,依據一實施例。多GPU計算系統1000可包括處理器1002,其係經由主機介面開關1004而被耦合至多GPGPU 1006A-D。主機介面開關1004(於一實施例中)為PCI Express開關裝置,其將處理器1002耦合至PCI Express匯流排,處理器1002可透過該PCI Express匯流排而與該組GPGPU 1006A-D通訊。該些多數GPGPU 1006A-D之各者可為圖9之GPGPU 900的實例。GPGPU 1006A-D可經由一組高速點對點GPU至GPU鏈結1016而互連。高速GPU至GPU鏈結可經由專屬GPU鏈結(諸如圖9中之GPU鏈結910)而連接至GPGPU 1006A-D之各者。P2P GPU鏈結1016係致能介於GPGPU 1006A-D的各者之間的直接通訊而無須透過主機介面匯流排(其係連接至處理器1002)的通訊。利用導引至P2P GPU鏈結之GPU至GPU流量,主機介面匯流排保持可用於系統記憶體存取或者與多GPU計算系統100之其他實例通訊,例如,經由一或更多網路裝置。雖然於所示的實施例中,GPGPU 1006A-D係經由主機介面開關1004而連接至處理器1002;但於一實施例中,處理器1002包括對於P2P GPU鏈結1016之直接支援並可直接地連接至GPGPU 1006A-D。
機器學習神經網路實施方式
由文中所述之實施例所提供的計算架構可被組態成履行多類型的平行處理,其係特別適於針對機器學習之訓練及部署神經網路。神經網路可被一般化成為具有圖形關係之功能的網路。如本技術中眾所周知,有用於機器學習之多種類型的神經網路實施方式。神經網路之一範例類型為前饋網路,如先前所述者。
神經網路之第二範例類型為卷積神經網路(CNN)。CNN為一種特殊化的前饋神經網路,用以處理具有已知、柵格狀拓撲之資料(諸如影像資料)。因此,CNN常用於計算視覺和影像辨識應用,但其亦可被用於其他類型的圖案辨識,諸如語音及語言處理。CNN輸入層中之節點被組織為一組「過濾器」(由網膜中所發現之個別欄位所驅使的特徵檢測器),且各組過濾器之輸出被傳播至該網路之連續層中的節點。CNN之計算包括將卷積數學運算應用於各過濾器以產生該過濾器之輸出。卷積為由兩個函數所履行的數學運算之特殊化種類,用以產生其為兩個原始函數之一的修改版本之第三函數。於卷積網路術語中,針對卷積之第一函數可被稱為輸入,而第二函數可被稱為卷積內核。輸出可被稱為特徵映圖。例如,對於卷積層之輸入可為其定義輸入影像之各種顏色成分的資料之多維陣列。卷積內核可為參數之多維陣列,其中該些參數係由訓練程序所調適以用於神經網路。
循環神經網路(RNN)為前饋神經網路之家族,其包括介於層之間的回饋連接。RNN係藉由共用其涵蓋神經網路之不同部分的參數資料以致能依序資料之模擬。RNN之架構包括循環。該些循環係代表變數的目前值對於未來時刻之其本身值的影響,因為來自RNN之輸出資料的至少一部分被使用為用以處理序列中之後續輸入的回饋。此特徵使得RNN特別有用於語言處理,由於其中語言資料可被組成之可變本質。
以下所述之圖形提出範例的前饋、CNN、及RNN網路、以及描述用以個別地訓練並部署那些類型的網路之各者的一般程序。將理解:這些描述是範例的而非限制的(有關文中所述之任何特定實施例)且所闡明之概念可被一般地應用於深神經網路及機器學習技術(通常)。
上述範例神經網路可被用以履行深學習。深學習為使用深神經網路之機器學習。用於深學習之深神經網路為由多數隱藏層所組成的人工神經網路,不同於其僅包括單一隱藏層之淺神經網路。較深的神經網路對於訓練通常是較為計算上密集的。然而,網路之額外隱藏層致能多步驟圖案辨識,其導致相對於淺機器學習技術之減少的輸出錯誤。
用於深學習之深神經網路通常包括用以履行特徵辨識之前端網路,其係耦合至後端網路,該後端網路代表一種數學模型,其可根據提供至該模型之特徵表示以履行操作(例如,物件分類、語音辨識,等等)。深學習致能機器學習被履行而無須針對該模型履行手動調整特徵工程。取代地,深神經網路可根據輸入資料內之統計結構或相關以學習特徵。經學習的特徵可被提供至一種可將測得特徵映射至輸出的數學模型。由該網路所使用之數學模型係針對待履行的特定工作而被一般性地特殊化。
一旦神經網路被構成,學習模型可被應用至該網路以訓練該網路來履行特定工作。該學習模型描述如何調整該模型內之加權以減少該網路之輸出錯誤。錯誤之後向傳播為用以訓練神經網路之常見方法。輸入向量被提呈至該網路以供處理。該網路之輸出係使用損失函數而與所欲輸出進行比較,並針對輸出層中之神經元的各者計算誤差值。誤差值被接著向後傳播直到各神經元具有相關的誤差值,其係約略地表示其針對原始輸出的貢獻。該網路可接著學習自那些錯誤,使用一演算法,諸如隨機梯度下降演算法,以更新該神經網路之加權。
圖11A及11B闡明範例卷積神經網路。圖11A闡明CNN內之各個層。如圖11A中所示,用以模擬影像處理之範例CNN可接收輸入1102,其係描述輸入影像之紅、綠、及藍(RGB)成分。輸入1102可由多數卷積層(例如,卷積層1104、卷積層1106)所處理。來自多數卷積層之輸出可選擇性地由一組完全連接層1108所處理。完全連接層中之神經元具有對於先前層中之所有啟動的完全連接,如先前針對前饋網路所述者。來自完全連接層1108之輸出可被用以產生來自該網路之輸出結果。完全連接層908內之啟動可使用矩陣乘法(取代卷積)來計算。並非所有CNN實施方式均利用完全連接層1108。例如,於某些實施方式中,卷積層1106可產生輸出給該CNN。
卷積層被稀疏地連接,其係不同於完全連接層1108中所見之傳統神經網路組態。傳統神經網路層被完全連接,以致其每一輸出單元係與每一輸入單元互動。然而,卷積層被稀疏地連接,因為一欄位之卷積的輸出被輸入(取代該欄位中之各節點的個別狀態值)至後續層之節點,如圖所示。與該些卷積層相關的內核係履行卷積操作,其輸出被傳送至下一層。於卷積層內所履行的維度減少為致能CNN擴縮以供處理大影像之一形態。
圖11B闡明CNN之卷積層內的範例計算階段。CNN之卷積層1112的輸入可被處理於卷積層1114之三個階段中。該三個階段可包括卷積階段1116、檢測器階段1118、和集用階段1120。卷積層1114可接著輸出資料至後續卷積層。該網路之最終卷積層可產生輸出特徵映圖資料或提供輸入至完全連接層(例如)以產生分類值給該CNN之輸入。
於卷積階段1116中,平行地履行數個卷積以產生一組線性啟動。卷積階段1116可包括仿射變換,其為可被指明為線性變換加上轉換之任何變換。仿射變換包括旋轉、轉換、擴縮、及這些變換之組合。卷積階段係計算函數(例如,神經元)之輸出,其被連接至輸入中之特定區,其可被判定為與該神經元相關的本地區。神經元計算介於該些神經元的加權與該些神經元所連接至之該本地輸入中的該區之間的內積。來自卷積階段1116之輸出係定義一組線性啟動,其係由卷積層1114之連續階段所處理。
該些線性啟動可由檢測器階段1118所處理。於檢測器階段1118中,各線性啟動係由非線性啟動函數所處理。非線性啟動函數係增加整體網路之非線性性質而不影響卷積層之個別欄位。數種類型的非線性啟動函數可被使用。一種特別類型是修正線性單元(ReLU),其係使用定義為之啟動函數,以致其啟動係以零為臨限值。
集用階段1120係使用集用函數,其係以附近輸出之摘要統計來替換卷積層1106之輸出。集用函數可被用以將轉換不變性引入神經網路,以致其對於輸入之小轉變不會改變集用的輸出。對於本地轉換之不變性可能在以下情境中是有用的:輸入資料中之特徵的存在比該特徵之精確位置更為重要。多種類型的函數可被使用於集用階段1120期間,包括最大集用、平均集用、及l2-norm集用。此外,某些CNN實施方式不包括集用階段。取代地,此類實施方式係代替以一額外的卷積階段,其具有相對於先前卷積階段之增加的跨步。
來自卷積層1114之輸出可接著由下一層1122所處理。下一層1122可為額外卷積層或者完全連接層1108之一。例如,圖11A之第一卷積層1104可輸出至第二卷積層1106,而第二卷積層可輸出至完全連接層1108之第一層。
圖12闡明範例循環神經網路1200。於循環神經網路(RNN)中,網路之先前狀態係影響網路之目前狀態的輸出。RNN可使用多種功能而被建立以多種方式。RNN之使用通常係圍繞著使用數學模型以根據輸入之先前序列來預測未來。例如,RNN可被用以履行統計語言模擬來根據字語之先前序列而預測將來的字語。所示的RNN 1200可被描述為具有:輸入層1202(其係接收輸入向量)、隱藏層1204(用以實施遞迴函數)、回饋機制1205(用以致能先前狀態之「記憶體」)、及輸出層1206(用以輸出結果)。RNN 1200係根據時間步驟而操作。於既定時間步驟上之RNN的狀態係根據先前時間步驟而被影響,經由回饋機制1205。針對既定時間步驟,隱藏層1204之狀態係由先前狀態以及目前時間步驟上之輸入所定義。於第一時間步驟上之初始輸入(x1
)可由隱藏層1204所處理。第二輸入(x2
)可由隱藏層1204所處理,使用其在該初始輸入(x1
)之處理期間所判定的狀態資訊。既定狀態可被計算為其中及為參數矩陣。函數 通常為非線性,諸如雙曲線正切函數(Tanh)或整流函數之變體。然而,用於隱藏層1004之特定數學函數可根據RNN 1200之特定實施方式細節而變化。
除了所述的基本CNN及RNN網路之外,對於那些網路的變化可被致能。一範例RNN變體為長短期記憶體(LSTM)RNN。LSTM RNN能夠學習長期依存性,其對於處理較長的語言序列可能是必要的。CNN之變體為一種卷積深信網路,其具有類似於CNN之結構且係以一種類似於深信網路之方式來訓練。深信網路(DBN)為一種生成的神經網路,其係由隨機(任意)變數之多數層所組成。DBN可使用貪心非監督學習而被層接層地訓練。DBN之經學習加權可接著被用以提供預先訓練神經網路,藉由判定針對該神經網路之最佳初始組的加權。
圖13闡明深神經網路之訓練及部署。一旦既定網路已針對一工作而被構成,則神經網路係使用訓練資料集1302而被訓練。各種訓練框架1304已被開發來致能訓練程序之硬體加速。例如,圖8之機器學習框架804可被組態成訓練框架1304。訓練框架1304可連結入未訓練神經網路1306並致能未訓練神經網使用文中所述之平行處理資源而被訓練,以產生經訓練神經網1308。
欲開始訓練程序,初始加權可被隨機地選擇或者藉由使用深信網路來預訓練。訓練循環接著被履行以受監督或未監督方式之任一者。
受監督學習係一種學習方法,其中訓練被履行為中介操作,諸如當訓練資料集1302包括與所欲輸出(針對輸入)配對的輸入時,或其中訓練資料集包括具有已知輸出之輸入且神經網路之輸出被手動地分級。該網路處理該些輸入並將所得輸出與一組預期或所欲輸出進行比較。接著透過系統以將錯誤回傳。訓練框架1304可調整其控制未訓練神經網路1306之加權。訓練框架1304可提供工具以監視未訓練神經網路1306如何適當地根據已知的輸入資料以收斂朝向一適於產生正確答案之模型。訓練程序係重複地發生,隨著該網路之加權被調整以改良其由神經網路所產生的輸出。訓練程序可持續直到神經網路達到一與經訓練神經網1308相關之統計上理想的準確度。經訓練神經網路1308可接著被部署以實施任何數目的機器學習操作。
未監督學習為一種學習方法,其中網路係嘗試使用未標示資料以訓練其本身。因此,針對未監督學習,訓練資料集1302將包括輸入資料而無任何相關的輸出資料。未訓練神經網路1306可學習未標示輸入內之學習群集並可判定個別輸入如何相關於整體資料集。未監督訓練可被用以產生自行組織映圖,其為一種能夠履行可用於減少資料之維度的操作之經訓練神經網路1307的類型。未監督訓練亦可被用以履行異常檢測,其容許偏離自資料之正常型態的輸入資料集中之資料點的識別。
受監督及未監督訓練之變化亦可被利用。半監督學習為一種技術,其中訓練資料集1302包括相同分佈之已標示及未標示資料的混合。遞增學習為受監督學習之變體,其中輸入資料被持續地用以進一步訓練模型。遞增學習致能經訓練神經網路1308調適於新資料1312而不會忘記初始訓練期間之網路內所教導的知識。
無論受監督或未監督,針對特別深神經網路之訓練程序可能對於單一計算節點是太計算密集的。取代使用單一計算節點,計算節點之分散式網路可被用以加速訓練程序。
圖14為闡明分散式學習的方塊圖。分散式學習為一種訓練模型,其係使用多數分散式計算節點以履行神經網路之受監督或未監督訓練。分散式計算節點可各包括一或更多主機處理器及一或更多通用處理節點,諸如圖9中之高度平行通用圖形處理單元900。如圖所示,分散式學習可履行模型平行性1402、資料平行性1404、或模型和資料平行性之組合1204。
於模型平行性1402中,分散式系統中不同之計算節點可針對單一網路之不同部分履行訓練計算。例如,神經網路之各層可由分散式系統之不同的處理節點所訓練。模型平行性之優點包括擴縮至特別大的模型之能力。將其與神經網路之不同層相關的計算分離係致能極大神經網路(其中所有層之加權將不配適入單一計算節點之記憶體)之訓練。於某些例子中,模型平行性可特別有用於履行大型神經網路之未監督訓練。
於資料平行性1404中,分散式網路之不同節點具有該模型之完整實例且各節點係接收資料之不同部分。來自不同節點之結果被接著結合。雖然針對資料平行性之不同方式是可能的,但資料平行性訓練方式均需要一種結合結果並同步化各節點間之模型參數的技術。針對結合資料之範例方式包括參數平均及更新為基的資料平行性。參數平均係訓練該訓練資料之子集上的各節點,並將總體參數(例如,加權、偏壓)設為來自各節點之參數的平均。參數平均係使用中央參數伺服器,其係保存參數資料。更新為基的資料平行性係類似於參數平均,除了其取代從節點轉移參數至參數伺服器,對於該模型之更新被轉移。此外,更新為基的資料平行性可被履行以一種分散方式,其中該些更新被壓縮並轉移於節點之間。
結合的模型及資料平行性1406可被實施(例如)於分散式系統,其中各計算節點包括多數GPU。各節點可具有該模型之完全實例,以各節點內之分離GPU被用以訓練該模型之不同部分。
分散式訓練具有增加的負擔,相對於單一機器上之訓練。然而,文中所述之平行處理器及GPGPU可各實施多種技術以減少分散式訓練之負擔,包括用以致能高頻寬GPU至GPU資料轉移及加速遠端資料同步化之技術。
範例機器學習應用
機器學習可被應用以解決多種技術問題,包括(但不限定於)電腦視覺、自動駕駛和導航、語音辨識、及語言處理。電腦視覺傳統上已成為針對機器學習應用之最積極的研究領域之一。電腦視覺之應用的範圍從再生人類視覺能力(諸如辨識人臉)至產生新種類的視覺能力。例如,電腦視覺應用可被組態成從視頻中可見的物體中所引發的振動辨識音波。平行處理器加速機器學習係致能電腦視覺應用使用相較於先前可行者顯著地更大的訓練資料集來被訓練,並致能推理系統使用低功率平行處理器來被部署。
平行處理器加速機器學習具有自動駕駛應用,包括巷道和道路標誌辨識、障礙避免、導航、及駕駛控制。加速機器學習技術可被用以根據其定義對於特定訓練輸入之適當回應的資料集來訓練駕駛模型。文中所述之平行處理器可致能越來越複雜的神經網路(用於自動駕駛解決方案)之快速訓練,並致能一種適於整合入自動車內之行動平台中的低功率推理處理器之部署。
平行處理器加速深神經網路已致能用於自動語音辨識(ASR)之機器學習方案。ASR包括產生一函數,其係計算既定輸入聲響序列下最可能的語言序列。使用深神經網路之加速機器學習已致能先前用於ASR之隱藏馬可夫(Markov)模型(HMM)及高斯(Gaussian)混合模型(GMM)的替換。
平行處理器加速機器學習亦可被用以加速自然語言處理。自動學習程序可利用統計推理演算法以產生能抵抗錯誤或不熟悉輸入的模型。範例自然語言處理器應用包括人類語言之間的自動機器翻譯。
用於機器學習之平行處理平台可被劃分為訓練平台及部署平台。訓練平台通常是高度平行的,且包括用以加速多GPU單節點訓練及多節點多GPU訓練之最佳化。適於訓練的範例平行處理器包括高度平行的通用圖形處理單元及多GPU計算系統。反之,已部署的機器學習平台通常包括較低功率的平行處理器,其係適於諸如相機、自動機器人、及自動車等產品的使用。
圖15闡明一種範例推論系統單晶片(SOC)1500,其適於履行使用經訓練的模型之推理。SOC 1500可集成處理組件,包括媒體處理器1502、視覺處理器1504、GPGPU 1506及多核心處理器1508。SOC 1500可額外地包括晶片上記憶體1505,其可致能可由各處理組件所存取之共用的晶片上資料池。處理組件可針對低功率操作而被最佳化以致能對於多種機器學習平台之部署,包括自動車及自動機器人。例如,SOC 1500之一實施方式可被使用為自動車之主控制系統的一部分。當SOC 1500被組態以用於自動車時,SOC被設計並組態以符合部署管轄權之相關的功能安全性標準。
於操作期間,媒體處理器1502及視覺處理器1504可配合加速電腦視覺操作而工作。媒體處理器1502可致能多數高解析度(例如,4K、8K)視頻串流之低潛時解碼。已解碼的視頻串流可被寫入至晶片上記憶體1505中之緩衝器。視覺處理器1304可接著剖析該已解碼視頻並於該已解碼視頻之框上履行初步處理操作,以準備使用經訓練的影像辨識模型來處理該些框。例如,視覺處理器1504可加速卷積操作於一CNN,其被用以履行高解析度視頻資料上之影像辨識,而後端模型計算係由GPGPU 1506所履行。
多核心處理器1508可包括控制邏輯,用以協助由媒體處理器1502和視覺處理器1504所履行的資料轉移及共用記憶體操作之排序和同步化。多核心處理器1308亦可作用為應用程式處理器,用以執行其可利用GPGPU 1506之推理計算能力的軟體應用程式。例如,導航和駕駛邏輯之至少一部分可被實施以多核心處理器1508上所執行的軟體。此軟體可直接地發送計算工作量至GPGPU 1506,或者該計算工作量可被發送至多核心處理器1508,其可將那些操作之至少一部分卸載至GPGPU 1506。
GPGPU 1506可包括計算叢集,諸如高度平行通用圖形處理單元900內之計算叢集906A-906H的低功率組態。GPGPU 1506內之計算叢集可支援其被明確地最佳化以履行推理計算於經訓練神經網路上的指令。例如,GPGPU 1506可支援其用以履行低精確度計算(諸如8位元及4位元整數向量操作)的指令。
額外的範例圖形處理系統
上述實施例的細節可被併入以下所述之圖形處理系統及裝置中。圖16-29之圖形處理系統及裝置係闡明其可實施上述任何或所有技術的替代系統及圖形處理硬體。
額外的範例圖形處理系統概述
圖16為一種處理系統1600之方塊圖,依據一實施例。於各個實施例中,系統1600包括一或更多處理器1602及一或更多圖形處理器1608,且可為單處理器桌上型系統、多處理器工作站系統、或具有大量處理器1602或處理器核心1607之伺服器系統。於一實施例中,系統1600為一種結合入系統單晶片(SoC)積體電路內的處理平台,以供用於行動、手持式、或嵌入式裝置。
系統1600之實施例可包括(或被結合入)伺服器為基的遊戲平台、遊戲控制台,包括遊戲和媒體控制台、行動裝置遊戲控制台、手持式遊戲控制台、或線上遊戲控制台。於某些實施例中,系統1600為行動電話、智慧型手機、平板計算裝置或行動網際網路裝置。資料處理系統1600亦可包括(耦合與、或集成入)穿戴式裝置,諸如智慧錶穿戴式裝置、智慧眼鏡裝置、擴增實境裝置、或虛擬實境裝置。於某些實施例中,資料處理系統1600為電視或機上盒裝置,其具有一或更多處理器1602及由一或更多圖形處理器1608所產生的圖形介面。
於某些實施例中,該一或更多處理器1602各包括一或更多處理器核心1607,用以處理指令,其(當被執行時)係履行針對系統及使用者軟體之操作。於某些實施例中,一或更多處理器核心1607之各者被組態成處理特定指令集1609。於某些實施例中,指令集1609可協助複雜指令集計算(CISC)、精簡指令集計算(RISC)、或經由極長指令字元(VLIW)之計算。多處理器核心1607可各處理不同的指令集1609,其可包括用以協助其他指令集之仿真的指令。處理器核心1607亦可包括其他處理裝置,諸如數位信號處理器(DSP)。
於某些實施例中,處理器1602包括快取記憶體1604。根據該架構,處理器1602可具有單一內部快取或者多階內部快取階。於某些實施例中,快取記憶體被共用於處理器1602的各個組件之間。於某些實施例中,處理器1602亦使用外部快取(例如,第3階(L3)快取或最後階快取(LLC))(未顯示),其可使用已知的快取同調性技術而被共用於處理器核心1607之間。暫存器檔1606被額外地包括於處理器1602中,其可包括不同類型的暫存器,用以儲存不同類型的資料(例如,整數暫存器、浮點暫存器、狀態暫存器、及指令指針暫存器)。某些暫存器可為通用暫存器,而其他暫存器可特別針對處理器1602之設計。
於某些實施例中,處理器1602被耦合與處理器匯流排1610,用以傳輸通訊信號(諸如位址、資料、或控制信號)於處理器1602與系統1600中的其他組件之間。於一實施例中,系統1600係使用範例「集線器」系統架構,包括記憶體控制器集線器1616及輸入輸出(I/O)控制器集線器1630。記憶體控制器集線器1616係促成介於記憶體裝置與系統1600的其他組件之間的通訊,而I/O控制器集線器(ICH)1630係經由本地I/O匯流排以提供連接至I/O裝置。於一實施例中,記憶體控制器集線器1616的邏輯被集成於處理器內。
記憶體裝置1620可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置、或具有用以作用為程序記憶體之適當性能的某些其他記憶體裝置。於一實施例中,記憶體裝置1620可操作為針對系統1600之系統記憶體,用以儲存資料1622及指令1621,以便在當一或更多處理器1602執行應用程式或程序時使用。記憶體控制器集線器1616亦耦合與選擇性的外部圖形處理器1612,其可與處理器1602中之一或更多圖形處理器1608通訊以履行圖形及媒體操作。
於某些實施例中,ICH 1630係致能周邊裝置經由高速I/O匯流排以連接至記憶體裝置1620及處理器1602。I/O周邊裝置包括(但不限定於)音頻控制器1646、韌體介面1628、無線收發器1626(例如,Wi-Fi、藍牙)、資料儲存裝置1624(例如,硬碟驅動、快閃記憶體,等等)、及傳統I/O控制器1640,用以將傳統(例如,個人系統2(PS/2))裝置耦合至系統。一或更多通用串列匯流排(USB)控制器1642係連接輸入裝置,諸如鍵盤及滑鼠1644組合。網路控制器1634亦可與ICH 1630耦合。於某些實施例中,高性能網路控制器(未顯示)係與處理器匯流排1610耦合。將理解:所示之系統1600為範例性而非限制性,因為其被不同地組態之其他類型的資料處理系統亦可被使用。例如,I/O控制器集線器1630可被集成於一或更多處理器1602內;或者記憶體控制器集線器1616及I/O控制器集線器1630可被集成入分離的外部圖形處理器,諸如外部圖形處理器1612。
圖17為處理器1700之實施例的方塊圖,處理器1700具有一或更多處理器核心1702A-1702N、集成記憶體控制器1714、及集成圖形處理器1708。具有如任何其他圖形之元件的相同參考數字(或名稱)之圖17的那些元件可操作或作用以類似於文中其他處所述的任何方式,但不限定於此。處理器1700可包括額外核心高達(並包括)額外核心1702N(由虛線方盒所表示)。處理器核心1702A-1702N之各者包括一或更多內部快取單元1704A-1704N。於某些實施例中,各處理器核心亦得以存取一或更多共用快取單元1706。
內部快取單元1704A-1704N及共用快取單元1706係代表處理器1700內之快取記憶體階層。快取記憶體階層可包括至少一階指令和資料快取於各處理器核心內以及一或更多階共用中階快取,諸如第2階(L2)、第3階(L3)、第4階(L4)、或其他階快取,其中在外部記憶體前之最高階快取被歸類為LLC。於某些實施例中,快取同調性邏輯係維持介於各個快取單元1706及1704A-1704N之間的同調性。
於某些實施例中,處理器1700亦可包括一組一或更多匯流排控制器單元1716及系統代理核心1710。一或更多匯流排控制器單元1716管理一組周邊裝置匯流排,諸如一或更多周邊裝置組件互連匯流排(例如,PCI、PCI Express)。系統代理核心1710提供針對各個處理器組件之管理功能。於某些實施例中,系統代理核心1710包括一或更多集成記憶體控制器1714,用以管理對於各個外部記憶體裝置(未顯示)之存取。
於某些實施例中,一或更多處理器核心1702A-1702N包括支援同時多線程。於此實施例中,系統代理核心1710包括用以於多線程處理期間協調並操作核心1702A-1702N之組件。系統代理核心1710可額外地包括電力控制單元(PCU),其包括用以調節處理器核心1702A-1702N及圖形處理器1708之電力狀態的邏輯和組件。
於某些實施例中,處理器1700額外地包括用以執行圖形處理操作之圖形處理器1708。於某些實施例中,圖形處理器1708耦合與該組共用快取單元1706、及系統代理核心1710,包括一或更多集成記憶體控制器1714。於某些實施例中,顯示控制器1711係與圖形處理器1708耦合以驅動圖形處理器輸出至一或更多耦合的顯示。於某些實施例中,顯示控制器1711可為分離的模組,其係經由至少一互連而與圖形處理器耦合,或者可被集成於圖形處理器1708或系統代理核心1710內。
於某些實施例中,環為基的互連單元1712被用以耦合處理器1700之內部組件。然而,可使用替代的互連單元,諸如點對點互連、切換式互連、或其他技術,包括本技術中眾所周知的技術。於某些實施例中,圖形處理器1708係經由I/O鏈結1713而與環互連1712耦合。
範例I/O鏈結1713代表多種I/O互連之至少一者,包括封裝上I/O互連,其係協助介於各個處理器組件與高性能嵌入式記憶體模組1718(諸如eDRAM模組)之間的通訊。於某些實施例中,處理器核心1702A-1702N及圖形處理器1708之各者係使用嵌入式記憶體模組1718為共用的最後階快取。
於某些實施例中,處理器核心1702A-1702N為執行相同指令集架構之同質核心。於另一實施例中,處理器核心1702A-1702N針對指令集架構(ISA)為異質的,其中處理器核心1702A-1702N之一或更多者係執行第一指令集;而其他核心之至少一者係執行該第一指令集之子集或不同的指令集。於一實施例中,處理器核心1702A-1702N針對微架構為異質的,其中具有相對較高功率消耗之一或更多核心係與具有較低功率消耗之一或更多電力核心耦合。此外,處理器1700可被實施於一或更多晶片上;或者當作一種SoC積體電路,其具有所示的組件(除了其他組件之外)。
圖18為圖形處理器1800之方塊圖,圖形處理器1800可為一種分離的圖形處理單元,或者可為一種與複數處理核心集成的圖形處理器。於某些實施例中,圖形處理器係經由記憶體映射的I/O介面而通訊至圖形處理器上之暫存器,並與其置入處理器記憶體內之命令通訊。於某些實施例中,圖形處理器1800包括用以存取記憶體之記憶體介面1814。記憶體介面1814可為針對本地記憶體、一或更多內部快取、一或更多共用外部快取、及/或針對系統記憶體之介面。
於某些實施例中,圖形處理器1800亦包括顯示控制器1802,用以驅動顯示輸出資料至顯示裝置1820。顯示控制器1802包括針對一或更多重疊平面之硬體,用於多層視頻或使用者介面元件的顯示及組成。於某些實施例中,圖形處理器1800包括視頻編碼解碼引擎1806,用以將媒體編碼、解碼、或轉碼至、自或介於一或更多媒體編碼格式之間,包括(但不限定於)動畫專家群(MPEG)格式(諸如MPEG-2)、先進視頻編碼(AVC)格式(諸如H.264/MPEG-4 AVC和電影電視工程師協會(SMPTE)421M/VC-1),及聯合圖像專家群(JPEG)格式(諸如JPEG)和動畫JPEG(MJPEG)格式。
於某些實施例中,圖形處理器1800包括區塊影像轉移(BLIT)引擎1804,用以履行二維(2D)柵格化器操作,包括(例如)位元邊界區塊轉移。然而,於一實施例中,2D圖形操作係使用圖形處理引擎(GPE)1810之一或更多組件而被履行。於某些實施例中,GPE 1810為計算引擎,用以履行圖形操作,包括三維(3D)圖形操作及媒體操作。
於某些實施例中,GPE 1810包括3D管線1812,用以履行3D操作,諸如使用其作用於3D基元形狀(例如,矩形、三角形,等等)上之處理功能以渲染三維影像及場景。3D管線1812包括可編程及固定功能元件,其係履行該元件內之各種工作及/或生產執行緒至3D/媒體子系統1815。雖然3D管線1812可被用以履行媒體操作,但GPE 1810之實施例亦包括媒體管線1816,其被明確地用以履行媒體操作,諸如視頻後製處理及影像強化。
於某些實施例中,媒體管線1816包括固定功能或可編程邏輯單元,用以履行一或更多特殊化媒體操作,諸如視頻解碼加速、視頻去交錯、及視頻編碼加速,以取代(或代表)視頻編碼解碼引擎1806。於某些實施例中,媒體管線1816額外地包括執行緒生產單元,用以生產執行緒以供執行於3D/媒體子系統1815上。所生產的執行緒係履行針對3D/媒體子系統1815中所包括之一或更多圖形執行單元上的媒體操作之計算。
於某些實施例中,3D/媒體子系統1815包括邏輯,用以執行由3D管線1812及媒體管線1816所生產的執行緒。於一實施例中,該些管線係傳送執行緒執行請求至3D/媒體子系統1815,其包括執行緒調度邏輯,用以將各個請求仲裁並調度至可用的執行緒執行資源。執行資源包括圖形執行單元之陣列,用以處理3D及媒體執行緒。於某些實施例中,3D/媒體子系統1815包括用於執行緒指令及資料之一或更多內部快取。於某些實施例中,子系統亦包括共用記憶體,包括暫存器及可定址記憶體,用以共用執行緒之間的資料並儲存輸出資料。
圖形處理引擎
圖19為一種圖形處理器之圖形處理引擎1910的方塊圖,依據某些實施例。於一實施例中,圖形處理引擎(GPE)1910為圖18中所示之GPE 1810的一種版本。具有如文中任何其他圖形之元件的相同參考數字(或名稱)之圖19的元件可操作或作用以類似於文中其他處所述的任何方式,但不限定於此。例如,圖18之3D管線1812及媒體管線1816被顯示。媒體管線1816在GPE 1910之某些實施例中是選擇性的,且可能不被明確地包括於GPE 1910內。例如以及於至少一實施例中,分離的媒體及/或影像處理器被耦合至GPE 1910。
於某些實施例中,GPE 1910係耦合與(或包括)命令串流器1903,其係提供命令串流至3D管線1812及/或媒體管線1816。於某些實施例中,命令串流器1903係耦合與記憶體,其可為系統記憶體、或內部快取記憶體及共用快取記憶體之一或更多者。於某些實施例中,命令串流器1903係接收來自記憶體之命令並將該些命令傳送至3D管線1812及/或媒體管線1816。該些命令被直接提取自環緩衝器,其係儲存3D管線1812及媒體管線1816之命令。於一實施例中,環緩衝器可額外地包括批次命令緩衝器,其係儲存多數命令之批次。3D管線1812之命令亦可包括針對記憶體中所儲存之資料的參考,諸如(但不限定於)用於3D管線1812之頂點和幾何資料及/或用於媒體管線1816之影像資料和記憶體物件。3D管線1812及媒體管線1816係藉由以下方式來處理該些命令及資料:經由個別管線內之邏輯以履行操作、或將一或更多執行緒調度至圖形核心陣列1914。
於各個實施例中,3D管線1812可執行一或更多著色器程式,諸如頂點著色器、幾何著色器、像素著色器、片段著色器、計算著色器、或其他著色器程式,藉由處理該些指令並將執行緒調度至圖形核心陣列1914。圖形核心陣列1914提供執行資源之統一區塊。圖形核心陣列1914內之多用途執行邏輯(例如,執行單元)包括針對各種3D API著色器語言之支援並可執行與多數著色器相關的多數同時執行緒。
於某些實施例中,圖形核心陣列1914亦包括執行邏輯,用以履行媒體功能,諸如視頻及/或影像處理。於一實施例中,執行單元額外地包括通用邏輯,其係可編程以履行平行通用計算操作,除了圖形處理操作之外。通用邏輯可履行處理操作,平行地或聯合圖16之處理器核心1607或圖17中之核心1702A-1702N內的通用邏輯。
由圖形核心陣列1914上所執行之執行緒所產生的輸出資料可將資料輸出至統一返回緩衝器(URB)1918中之記憶體。URB 1918可儲存多數執行緒之資料。於某些實施例中,URB 1918可被用以傳送資料於圖形核心陣列1914上所執行的不同執行緒之間。於某些實施例中,URB 1918可額外地被用於圖形核心陣列上的執行緒與共用功能邏輯1920內的固定功能邏輯之間的同步化。
於某些實施例中,圖形核心陣列1914為可擴縮的,以致其該陣列包括可變數目的圖形核心,其係根據GPE 1910之目標功率及性能位準而各具有可變數目的執行單元。於一實施例中,執行資源為動態可擴縮的,以致其執行資源可被致能或除能,如所需。
圖形核心陣列1914係耦合與共用功能邏輯1920,其包括多數資源,其被共用於圖形核心陣列中的圖形核心之間。共用功能邏輯1920內的共用功能為硬體邏輯單元,其係提供特殊化補充功能給圖形核心陣列1914。於各個實施例中,共用功能邏輯1920包括(但不限定於)取樣器1921、數學1922、及執行緒間通訊(ITC)1923邏輯。此外,某些實施例係實施共用功能邏輯1920內之一或更多快取1925。共用功能被實施在其中針對既定特殊化功能之需求即使包括於圖形核心陣列1914內仍不足時。取代地,該特殊化功能之單一例示被實施為共用功能邏輯1920中之獨立單體且被共用於圖形核心陣列1914內的執行資源之間。精確組的功能(其被共用於圖形核心陣列1914之間且被包括於圖形核心陣列1914內)係於實施例之間改變。
圖20為一種圖形處理器2000之另一實施例的方塊圖。具有如文中任何其他圖形之元件的相同參考數字(或名稱)之圖20的元件可操作或作用以類似於文中其他處所述的任何方式,但不限定於此。
於某些實施例中,圖形處理器2000包括環互連2002、管線前端2004、媒體引擎2037、及圖形核心2080A-2080N。於某些實施例中,環互連2002將圖形處理器耦合至其他處理單元,包括其他圖形處理器或者一或更多通用處理器核心。於某些實施例中,圖形處理器為集成於多核心處理系統內的許多處理器之一。
於某些實施例中,圖形處理器2000經由環互連2002以接收命令之批次。進來的命令係由管線前端2004中之命令串流器2003所解讀。於某些實施例中,圖形處理器2000包括可擴縮執行邏輯,用以經由圖形核心2080A-2080N來履行3D幾何處理及媒體處理。針對3D幾何處理命令,命令串流器2003將命令供應至幾何管線2036。針對至少某些媒體處理命令,命令串流器2003將該些命令供應至視頻前端2034,其係與媒體引擎2037耦合。於某些實施例中,媒體引擎2037包括視頻品質引擎(VQE)2030(用於視頻和影像後製處理)及多格式編碼/解碼(MFX)2033引擎(用以提供硬體加速的媒體資料編碼和解碼)。於某些實施例中,幾何管線2036及媒體引擎2037各針對由至少一圖形核心2080A所提供的執行緒執行資源產生執行緒。
於某些實施例中,圖形處理器2000包括可擴縮執行緒執行資源,特徵有模組式核心2080A-2080N(有時稱為核心片),其各具有多數子核心2050A-550N、2060A-2060N(有時稱為核心子片)。於某些實施例中,圖形處理器2000可具有任何數目的圖形核心2080A至2080N。於某些實施例中,圖形處理器2000包括圖形核心2080A,其具有至少第一子核心2050A及第二子核心2060A。於其他實施例中,圖形處理器為具有單一子核心(例如,2050A)之低功率處理器。於某些實施例中,圖形處理器2000包括多數圖形核心2080A-2080N,其各包括一組第一子核心2050A-2050N及一組第二子核心2060A-2060N。該組第一子核心2050A-2050N中之各子核心包括至少第一組執行單元2052A-2052N及媒體/紋理取樣器2054A-2054N。該組第二子核心2060A-2060N中之各子核心包括至少第二組執行單元2062A-2062N及取樣器2064A-2064N。於某些實施例中,各子核心2050A-2050N、2060A-2060N係共用一組共用資源2070A-2070N。於某些實施例中,共用資源包括共用快取記憶體及像素操作邏輯。其他共用資源亦可被包括於圖形處理器之各個實施例中。
執行單元
圖21闡明執行緒執行邏輯2100,其包括GPE之某些實施例中所利用的處理元件之陣列。具有如文中任何其他圖形之元件的相同參考數字(或名稱)之圖21的元件可操作或作用以類似於文中其他處所述的任何方式,但不限定於此。
於某些實施例中,執行緒執行邏輯2100包括著色器處理器2102、執行緒調度器2104、指令快取2106、可擴縮執行單元陣列(包括複數執行單元2108A-2108N)、取樣器2110、資料快取2112、及資料埠2114。於一實施例中,可擴縮執行單元陣列可藉由根據工作量之計算需求以致能或除能一或更多執行單元(例如,執行單元2108A、2108B、2108C、2108D、至2108N-1及2108N)來動態地擴散。於一實施例中,所包括的組件係經由互連組織(其係鏈結至該些組件之各者)而被互連。於某些實施例中,執行緒執行邏輯2100包括一或更多連接至記憶體,諸如系統記憶體或快取記憶體,透過一或更多指令快取2106、資料埠2114、取樣器2110、及執行單元2108A-2108N。於某些實施例中,各執行單元(例如,2108A)為獨立可編程通用計算單元,其能夠執行多數同步硬體執行緒而同時針對各執行緒平行地處理多數資料元件。於各個實施例中,執行單元2108A-2108N之陣列為可擴縮以包括任何數目的個別執行單元。
於某些實施例中,執行單元2108A-2108N主要被用以執行著色器程式。著色器處理器2102可處理各種著色器程式並經由執行緒調度器2104以調度與該些著色器程式相關的執行緒。於一實施例中,執行緒調度器包括邏輯,用以仲裁來自圖形和媒體管線之執行緒起始請求並將該些請求的執行緒例示於執行單元2108A-2108N中的一或更多執行單元上。例如,幾何管線(例如,圖20之2036)可調度頂點、鑲嵌、或幾何著色器至執行緒執行邏輯2100(圖21)以供處理。於某些實施例中,執行緒調度器2104亦可處理來自執行中著色器程式之運行時間執行緒生產請求。
於某些實施例中,執行單元2108A-2108N支援一指令集,其包括對於許多標準3D圖形著色器指令之本機支援,以致其來自圖形庫(例如,Direct 3D及OpenGL)之著色器程式被執行以最少轉換。執行單元支援頂點和幾何處理(例如,頂點程式、幾何程式、頂點著色器)、像素處理(例如,像素著色器、片段著色器)及通用處理(例如,計算和媒體著色器)。執行單元2108A-2108N之各者能夠多重發送單指令多資料(SIMD)執行,而多線程操作係致能在面對較高潛時記憶體存取時之有效率的執行環境。各執行單元內之各硬體執行緒具有專屬的高頻寬暫存器檔及相關的獨立執行緒狀態。執行係每時脈多重發送至管線,其得以進行整數、單和雙精確度浮點操作、SIMD分支能力、邏輯操作、超越操作、及其他各種操作。當等待來自記憶體之資料或共用功能之一時,執行單元2108A-2108N內之相依性邏輯係致使等待執行緒休眠直到該請求的資料已被返回。當該等待執行緒正在休眠時,硬體資源可被用於處理其他執行緒。例如,於與頂點著色器操作相關的延遲期間,執行單元可履行操作於:像素著色器、片段著色器、或其他類型的著色器程式,包括不同的頂點著色器。
執行單元2108A-2108N中之各執行單元係操作於資料元件之陣列上。資料元件之數目為「執行大小」、或針對該指令之通道數。執行通道為針對指令內之資料元件存取、遮蔽、及流程控制的執行之邏輯單元。通道數可獨立自針對特定圖形處理器之實體算術邏輯單元(ALU)或浮點單元(FPU)的數目。於某些實施例中,執行單元2108A-2108N支援整數及浮點資料類型。
執行單元指令集包括SIMD指令。各個資料元件可被儲存為暫存器中之緊縮資料類型,且執行單元將根據該些元件之資料大小以處理各個元件。例如,當操作於256位元寬的向量時,該向量之256位元被儲存於暫存器中且執行單元係操作於該向量上而成為四個分離的64位元緊縮資料元件(四字元(QW)大小資料元件)、八個分離的32位元緊縮資料元件(雙字元(DW)大小資料元件)、十六個分離的16位元緊縮資料元件(字元(W)大小資料元件)、或三十二個分離的8位元緊縮資料元件(位元組(B)大小資料元件)。然而,不同的向量寬度及暫存器大小是可能的。
一或更多內部指令快取(例如,2106)被包括於執行緒執行邏輯2100中以快取執行單元之執行緒指令。於某些實施例中,一或更多資料快取(例如,2112)被包括以快取執行緒執行期間之執行緒資料。於某些實施例中,取樣器2110被包括以提供針對3D操作之紋理取樣及針對媒體操作之媒體取樣。於某些實施例中,取樣器2110包括特殊化紋理或媒體取樣功能,用以處理取樣程序期間之紋理或媒體資料,在提供已取樣資料至執行單元前。
於執行期間,圖形及媒體管線係經由執行緒生產和調度邏輯以傳送執行緒起始請求至執行緒執行邏輯2100。一旦幾何物件之群組已被處理並柵格化為像素資料,則著色器處理器2102內之像素處理器邏輯(例如,像素著色器邏輯、片段著色器邏輯,等等)被調用以進一步計算輸出資訊並致使結果被寫入至輸出表面(例如,顏色緩衝器、深度緩衝器、模板緩衝器,等等)。於某些實施例中,像素著色器或片段著色器係計算各個頂點屬性之值,其將被內插涵蓋該柵格化物件。於某些實施例中,著色器處理器2102內之像素處理器邏輯接著執行應用程式編程介面(API)供應的像素或片段著色器程式。為了執行著色器程式,著色器處理器2102經由執行緒調度器2104以將執行緒調度至執行單元(例如,2108A)。於某些實施例中,像素著色器2102係使用取樣器2110中之紋理取樣邏輯以存取記憶體中所儲存之紋理映圖中的紋理資料。紋理資料及輸入幾何資料上的算術操作係計算各幾何片段之像素顏色資料、或丟棄一或更多像素而不做進一步處理。
於某些實施例中,資料埠2114係提供記憶體存取機制給執行緒執行邏輯2100,用以輸出經處理資料至記憶體以供於圖形處理器輸出管線上之處理。於某些實施例中,資料埠2114包括或耦合至一或更多快取記憶體(例如,資料快取2112),用以經由資料埠而快取資料以供記憶體存取。
圖22為闡明圖形處理器指令格式2200之方塊圖,依據某些實施例。於一或更多實施例中,圖形處理器執行單元係支援一種具有多數格式之指令的指令集。實線方盒係闡明其一般地被包括於執行單元指令中之組件,而虛線則包括其為選擇性的或者其僅被包括於該些指令之子集中的組件。於某些實施例中,所述且所示的指令格式2200為巨集指令,由於其為供應至執行單元之指令;如相反於微操作,其係得自指令解碼(一旦該指令被處理後)。
於某些實施例中,圖形處理器執行單元係本機地支援128位元指令格式2210之指令。64位元壓緊指令格式2230可用於某些指令,根據選定的指令、指令選項、及運算元之數目。本機128位元指令格式710係提供存取至所有指令選項,而某些選項及操作被侷限於64位元格式2230。可用於64位元格式2230之本機指令隨實施例而改變。於某些實施例中,該指令係使用指標欄位2213中之一組指標值而被部分地壓緊。執行單元硬體係參考一組根據指標值之壓緊表,並使用壓緊表輸出以重新建構128位元指令格式2210之本機指令。
針對各格式,指令運算碼2212係定義其該執行單元應履行之操作。執行單元係平行地執行各指令,涵蓋各運算元之多資料元件。例如,回應於加法指令,執行單元係履行同步加法運算,涵蓋其代表紋理元件或圖片元件之各顏色通道。預設地,執行單元係履行各指令,涵蓋運算元之所有資料通道。於某些實施例中,指令控制欄位2214致能對於某些執行選項之控制,諸如通道選擇(例如,斷定)及資料通道順序(例如,拌合)。針對128位元指令格式2210之指令,執行大小欄位2216係限制其將被平行地執行之資料通道的數目。於某些實施例中,執行大小欄位2216不得用於64位元緊縮指令格式2230。
某些執行單元指令具有高達三運算元,包括兩個來源運算元(src0 2220、src1 2222)、及一目的地2218。於某些實施例中,執行單元支援雙目的地指令,其中該些目的地之一被暗示。資料調處指令可具有第三來源運算元(例如,SRC2 2224),其中指令運算碼2212係判定來源運算元之數目。指令的最後來源運算元可為以該指令傳遞的即刻(例如,硬編碼)值。
於某些實施例中,128位元指令格式2210包括存取/位址模式欄位2226,其係指明(例如)直接暫存器定址模式或是間接暫存器定址模式被使用。當直接暫存器定址模式被使用時,一或更多運算元之暫存器位址係直接地由該指令中之位元所提供。
於某些實施例中,128位元指令格式2210包括存取/位址模式欄位2226,其係指明該指令之位址模式及/或存取模式。於一實施例中,存取模式被用以定義該指令之資料存取對準。某些實施例支援存取模式,包括16位元組對準的存取模式及1位元組對準的存取模式,其中存取模式之位元組對準係判定指令運算元之存取對準。例如,當於第一模式時,該指令可使用位元組對準的定址於來源和目的地運算元;而當於第二模式時,該指令可使用16位元組對準的定址於所有來源和目的地運算元。
於一實施例中,存取/位址模式欄位2226之位址模式部分係判定該指令是應使用直接或者間接定址。當直接暫存器定址模式被使用時,該指令中之位元係直接地提供一或更多運算元之暫存器位址。當間接暫存器定址模式被使用時,一或更多運算元之暫存器位址可根據該指令中之位址暫存器值及位址即刻欄位而被計算。
於某些實施例中,指令係根據運算碼2212位元欄位而被群集以簡化運算碼解碼2240。針對8位元運算碼,位元4、5、及6容許執行單元判定運算碼之類型。所示之精確的運算碼群集僅為一範例。於某些實施例中,移動和邏輯運算碼群組2242包括資料移動和邏輯指令(例如,移動(mov)、比較(cmp))。於某些實施例中,移動和邏輯群組2242係共用五個最高有效位元(MSB),其中移動(mov)指令為0000xxxxb之形式而邏輯指令為0001xxxxb之形式。流程控制指令群組2244(例如,呼叫、跳躍(jmp))包括以0010xxxxb(例如,0x20)之形式的指令。雜項指令群組2246包括指令之混合,其包括以0011xxxxb(例如,0x30)之形式的同步化指令(例如,等待、傳送)。平行數學指令群組2248包括以0100xxxxb(例如,0x40)之形式(例如加、乘(mul))的組件式算術指令。平行數學群組2248係平行地履行算術運算涵蓋資料通道。向量數學群組2250包括以0101xxxxb(例如,0x50)之形式的算術指令(例如,dp4)。向量數學群組係履行算術,諸如對於向量運算元之內積計算。
圖形管線
圖23為一種圖形處理器2300之另一實施例的方塊圖。具有如文中任何其他圖形之元件的相同參考數字(或名稱)之圖23的元件可操作或作用以類似於文中其他處所述的任何方式,但不限定於此。
於某些實施例中,圖形處理器2300包括圖形管線2320、媒體管線2330、顯示引擎2340、執行緒執行邏輯2350、及渲染輸出管線2370。於某些實施例中,圖形處理器2300為一種包括一或更多通用處理核心之多核心處理系統內的圖形處理器。圖形處理器係由暫存器寫入至一或更多控制暫存器(未顯示)所控制,或者經由其發送至圖形處理器2300(經由環互連2302)之命令來控制。於某些實施例中,環互連2302將圖形處理器2300耦合至其他處理組件,諸如其他圖形處理器或通用處理器。來自環互連2302之命令係由命令串流器2303所解讀,命令串流器2303將指令供應至圖形管線2320或媒體管線2330之個別組件。
於某些實施例中,命令串流器2303指引頂點提取器2305之操作,其係從記憶體提取頂點資料並執行由命令串流器2303所提供的頂點處理命令。於某些實施例中,頂點提取器2305提供頂點資料至頂點著色器2307,其係履行對於頂點之座標空間變換及照亮操作。於某些實施例中,頂點提取器2305及頂點著色器2307係執行頂點處理指令,藉由經執行緒調度器2331以調度執行緒至執行單元2352A-2352B。
於某些實施例中,執行單元2352A-2352B為具有用以履行圖形及媒體操作之指令集的向量處理器之陣列。於某些實施例中,執行單元2352A-2352B具有裝附的L1快取2351,其係專用於各陣列或者共用於多陣列之間。快取可被組態成資料快取、指令快取、或單一快取,其被分割以含有資料及指令在不同的分割中。
於某些實施例中,圖形管線2320包括鑲嵌組件,用以履行3D物件之硬體加速鑲嵌。於某些實施例中,可編程殼體(hull)著色器811係組態鑲嵌操作。可編程領域著色器817提供鑲嵌輸出之後端評估。鑲嵌器2313係操作於殼體著色器2311之方向並含有特殊用途邏輯,用以根據其被當作輸入而提供至圖形管線2320之粗略幾何模型來產生一組詳細幾何物件。於某些實施例中,假如未使用鑲嵌,則鑲嵌組件(例如,殼體著色器2311、鑲嵌器2313、及領域著色器2317)可被忽略。
於某些實施例中,完整幾何物件可由幾何著色器2319來處理,經由其被調度至執行單元2352A-2352B之一或更多執行緒;或者可直接地前進至截波器2329。於某些實施例中,幾何著色器係操作於整個幾何物件上,而非如圖形管線的先前階段中之頂點或頂點的補丁。假如鑲嵌被除能,則幾何著色器2319係接收來自頂點著色器2307之輸入。於某些實施例中,幾何著色器2319可由幾何著色器程式所編程,以履行幾何鑲嵌(假如鑲嵌單元被除能的話)。
在柵格化之前,截波器2329係處理頂點資料。截波器2329可為固定功能截波器或者具有截波及幾何著色器功能之可編程截波器。於某些實施例中,渲染輸出管線2370中之柵格化器及深度測試組件2373係調度像素著色器以將幾何物件轉換為其每像素表示。於某些實施例中,像素著色器邏輯被包括於執行緒執行邏輯2350中。於某些實施例中,應用程式可忽略柵格化器及深度測試組件2373,並經由串流輸出單元2323以存取未柵格化的頂點資料。
圖形處理器2300具有互連匯流排、互連組織、或某些其他互連機制,其容許資料及訊息傳遞於處理器的主要組件之間。於某些實施例中,執行單元2352A-2352B及相關快取2351、紋理和媒體取樣器2354、及紋理/取樣器快取2358係經由資料埠2356而互連,以履行記憶體存取並與處理器之渲染輸出管線組件通訊。於某些實施例中,取樣器2354、快取2351、2358及執行單元2352A-2352B各具有分離的記憶體存取路徑。
於某些實施例中,渲染輸出管線2370含有柵格化器及深度測試組件2373,其係將頂點為基的物件轉換為相關之像素為基的表示。於某些實施例中,柵格化器邏輯包括視窗器/遮蔽器單元,用以履行固定功能三角及直線柵格化。相關的渲染快取2378及深度快取2379亦可用於某些實施例中。像素操作組件2377係履行像素為基的操作於資料上;雖然於某些例子中,與2D操作相關的像素操作(例如,利用混合之位元區塊影像轉移)係由2D引擎2341所履行、或者於顯示時刻由顯示控制器2343所取代(使用重疊顯示平面)。於某些實施例中,共用L3快取2375可用於所有圖形組件,其容許資料之共用而不使用主系統記憶體。
於某些實施例中,圖形處理器媒體管線2330包括媒體引擎2337及視頻前端2334。於某些實施例中,視頻前端2334接收來自命令串流器2303之管線命令。於某些實施例中,媒體管線2330包括分離的命令串流器。於某些實施例中,視頻前端2334處理媒體命令,再傳送該命令至媒體引擎2337之前。於某些實施例中,媒體引擎2337包括執行緒生產功能,用以生產執行緒以便經由執行緒調度器2331來調度至執行緒執行邏輯2350。
於某些實施例中,圖形處理器2300包括顯示引擎2340。於某些實施例中,顯示引擎2340位於處理器2300外部並經由環互連2302(或某其他互連匯流排或組織)而與圖形處理器耦合。於某些實施例中,顯示引擎2340包括2D引擎2341及顯示控制器2343。於某些實施例中,顯示引擎2340含有特殊用途邏輯,其能夠獨立自3D管線而操作。於某些實施例中,顯示控制器2343耦合與顯示裝置(未顯示),其可為系統集成顯示裝置(如於膝上型電腦中)、或經由顯示裝置連接器而裝附的外部顯示裝置。
於某些實施例中,圖形管線2320及媒體管線2330係可組態以根據多數圖形及媒體編程介面來履行操作,而非專用於任一應用程式編程介面(API)。於某些實施例中,圖形處理器之驅動程式軟體將其專用於特定圖形或媒體庫的API呼叫轉換為其可由圖形處理器所處理的命令。於某些實施例中,提供支援給開放式圖形庫(OpenGL)、開放式計算語言(OpenCL)、及/或Vulkan圖形和計算API,其均來自Khronos集團。於某些實施例中,亦可提供支援給來自微軟公司的Direct3D庫。於某些實施例中,這些庫之組合可被支援。亦可提供支援給開放式來源電腦視覺庫(OpenCV)。具有可相容3D管線之未來API亦將被支援,假如可從未來API之管線執行映射至圖形處理器之管線的話。
圖形管線編程
圖24A為闡明圖形處理器命令格式2400之方塊圖,依據某些實施例。圖24B為闡明圖形處理器命令序列2410之方塊圖,依據一實施例。圖24A中之實線方盒係闡明其一般地被包括於圖形命令中之組件,而虛線則包括其為選擇性的或者其僅被包括於圖形命令之子集中的組件。圖24A之範例圖形處理器命令格式2400包括資料欄位,用以識別該命令之目標客戶2402、命令操作碼(運算碼)2404、及該命令之相關資料2406。子運算碼2405及命令大小2408亦被包括於某些命令中。
於某些實施例中,客戶2402係指明其處理該命令資料之圖形裝置的客戶單元。於某些實施例中,圖形處理器命令剖析器係檢查各命令之客戶欄位以調適該命令之進一步處理並將命令資料發送至適當的客戶單元。於某些實施例中,圖形處理器客戶單元包括記憶體介面單元、渲染單元、2D單元、3D單元、及媒體單元。各客戶單元具有其處理該些命令之相應處理管線。一旦該命令由客戶單元所接收,客戶單元便讀取運算碼2404及(假如存在的話)子運算碼2405以判定應履行的操作。客戶單元係使用資料欄位2406中之資訊以履行該命令。針對某些命令,明確命令大小2408被預期以指明命令之大小。於某些實施例中,命令剖析器自動地根據命令運算碼以判定至少某些命令的大小。於某些實施例中,命令係經由多數雙字元而被對準。
圖24B中之流程圖係顯示範例圖形處理器命令序列2410。於某些實施例中,一種資料處理系統(其特徵在於圖形處理器之實施例)的軟體或韌體係使用所顯示之命令序列的版本以設定、執行、及終止一組圖形操作。範例命令序列被顯示並描述以僅供範例之目的,因為實施例並不限定於這些特定命令或此命令序列。此外,該些命令可被發送為命令序列中之命令的批次,以致其圖形處理器將以至少部分並行性來處理命令之序列。
於某些實施例中,圖形處理器命令序列2410可開始以管線清除命令2412,用以致使任何現用圖形管線完成該管線之目前擱置的命令。於某些實施例中,3D管線2422及媒體管線2424不會並行地操作。管線清除被履行以致使現用圖形管線完成任何擱置的命令。回應於管線清除,圖形處理器之命令剖析器將暫停命令處理直到現用繪圖引擎完成擱置的操作且相關讀取快取被無效化。選擇性地,渲染快取中被標記為「髒」的任何資料可被清除至記憶體。於某些實施例中,管線清除命令2412可被使用於管線同步化,或者在將圖形處理器置入低功率狀態之前。
於某些實施例中,管線選擇命令2413被使用在當命令序列需要圖形處理器明確地切換於管線之間時。於某些實施例中,管線選擇命令2413僅需要一次於執行背景內,在發送管線命令之前,除非該背景將發送命令給兩管線。於某些實施例中,需要管線清除命令2412緊接在經由管線選擇命令2413的管線切換之前。
於某些實施例中,管線控制命令2414係組態圖形管線以供操作且被用以編程3D管線2422及媒體管線2424。於某些實施例中,管線控制命令2414係組態現用管線之管線狀態。於一實施例中,管線控制命令2414被用於管線同步化,並清除來自現用管線內之一或更多快取記憶體的資料,在處理命令之批次以前。
於某些實施例中,返回緩衝器狀態命令2416被用以組態一組返回緩衝器以供個別管線寫入資料。某些管線操作需要一或更多返回緩衝器之配置、選擇、或組態,其中該些操作將中間資料寫入該些返回緩衝器(於處理期間)。於某些實施例中,圖形處理器亦使用一或更多返回緩衝器以儲存輸出資料並履行跨越執行緒通訊。於某些實施例中,返回緩衝器狀態2416包括選擇返回緩衝器要使用於一組管線操作的大小與數量。
命令序列中之餘留命令係根據針對操作之現用管線而不同。根據管線判定2420,命令序列被調整至3D管線2422(以3D管線狀態2430開始)或媒體管線2424(於媒體管線狀態2440開始)。
用以組態3D管線狀態2430之命令包括3D狀態設定命令,針對頂點緩衝器、頂點元件狀態、恆定顏色狀態、深度緩衝器狀態、及其他狀態變數,其應被組態在3D基元命令被處理之前。這些命令之值係至少部分地根據使用中之特定3D API而被判定。於某些實施例中,3D管線狀態2430命令亦能夠選擇性地除能或忽略某些管線元件,假如那些元件將不被使用的話。
於某些實施例中,3D基元2432命令被用以提呈3D基元以供由3D管線所處理。經由3D基元2432命令而被傳遞至圖形處理器之命令及相關參數被遞送至圖形管線中之頂點提取功能。頂點提取功能係使用3D基元2432命令資料以產生頂點資料結構。頂點資料結構被儲存於一或更多返回緩衝器中。於某些實施例中,3D基元2432命令被用以經由頂點著色器而履行頂點操作於3D基元上。為了處理頂點著色器,3D管線2422調度著色器執行緒至圖形處理器執行單元。
於某些實施例中,3D管線2422係經由執行2434命令或事件而被觸發。於某些實施例中,暫存器寫入觸發命令執行。於某些實施例中,執行係經由命令序列中之「去(go)」或「踢(kick)」命令而被觸發。於一實施例中,命令執行係使用管線同步化命令而被觸發以清除該命令序列通過圖形管線。3D管線將履行針對3D基元之幾何處理。一旦操作完成,所得的幾何物件被柵格化且像素引擎為所得像素上色。用以控制像素著色及像素後端操作之額外命令亦可被包括以用於那些操作。
於某些實施例中,圖形處理器命令序列2410係遵循媒體管線2424路徑,當履行媒體操作時。通常,針對媒體管線2424之編程的特定使用及方式係取決於待履行之媒體或計算操作。特定媒體解碼操作可被卸載至媒體管線,於媒體解碼期間。於某些實施例中,媒體管線亦可被忽略;而媒體解碼可使用由一或更多通用處理核心所提供的資源而被整體地或部分地履行。於一實施例中,媒體管線亦包括用於通用圖形處理器單元(GPGPU)操作之元件,其中圖形處理器被用以履行SIMD向量操作,使用其並非明確地相關於圖形基元之渲染的計算著色器程式。
於某些實施例中,媒體管線2424被組態以如3D管線2422之類似方式。用以組態媒體管線狀態2440之一組命令被調度或置入命令佇列,在媒體物件命令2442之前。於某些實施例中,媒體管線狀態命令2440包括用以組態媒體管線元件(其將被用以處理媒體物件)之資料。此包括用以組態媒體管線內之視頻解碼及視頻編碼邏輯的資料,諸如編碼或解碼格式。於某些實施例中,媒體管線狀態命令2440亦支援使用一或更多針對「間接」狀態元件(其含有狀態設定之批次)之指針。
於某些實施例中,媒體物件命令2442係供應指針至媒體物件以供藉由媒體管線之處理。媒體物件包括記憶體緩衝器,其含有待處理之視頻資料。於某些實施例中,所有媒體管線狀態必須為有效,在發送媒體物件命令2442之前。一旦管線狀態被組態且媒體物件命令2442被排列,則媒體管線2424係經由執行命令2444或同等執行事件(例如,暫存器寫入)而被觸發。來自媒體管線2424之輸出可接著被操作後製處理,該操作係藉由3D管線2422或媒體管線2424所提供的操作。於某些實施例中,GPGPU操作被組態並執行以如媒體操作之類似方式。
圖形軟體架構
圖25闡明針對資料處理系統2500之範例圖形軟體架構,依據某些實施例。於某些實施例中,軟體架構包括3D圖形應用程式2510、作業系統2520、及至少一處理器2530。於某些實施例中,處理器2530包括圖形處理器2532及一或更多通用處理器核心2534。圖形應用程式2510及作業系統2520各執行於資料處理系統之系統記憶體2550中。
於某些實施例中,3D圖形應用程式2510含有一或更多著色器程式(其包括著色器指令2512)。著色器語言指令可為高階著色器語言,諸如高階著色器語言(HLSL)或OpenGL著色器語言(GLSL)。應用程式亦包括可執行指令2514,以一種適於由通用處理器核心2534所執行的機器語言。應用程式亦包括由頂點資料所定義的圖形物件2516。
於某些實施例中,作業系統2520是來自微軟公司的Microsoft® Windows®作業系統、專屬UNIX類作業系統、或開放式來源UNIX類作業系統(其係使用Linux內核之變體)。作業系統2520可支援圖形API 2522,諸如Direct3D AP、OpenGL API、或Vulkan API。當使用Direct3D API時,作業系統2520係使用前端著色器編譯器2524以將HLSL中之任何著色器指令2512編譯為低階著色器語言。該編譯可為及時(JIT)編譯或者該應用程式可履行著色器預編譯。於某些實施例中,高階著色器被編譯為低階著色器,於3D圖形應用程式2510之編譯期間。於某些實施例中,著色器指令2512被提供以中間形式,諸如由Vulkan API所使用之標準可攜式中間表示(SPIR)的版本。
於某些實施例中,使用者模式圖形驅動程式2526含有後端著色器編譯器2527,用以將著色器指令2512轉換為硬體特定的表示。當使用OpenGL API時,以GLSL高階語言之著色器指令2512被傳遞至使用者模式圖形驅動程式2526以供編譯。於某些實施例中,使用者模式圖形驅動程式2526係使用作業系統內核模式功能2528以與內核模式圖形驅動程式2529通訊。於某些實施例中,內核模式圖形驅動程式2529係與圖形處理器2532通訊以調度命令及指令。
IP核心實施方式
至少一實施例之一或更多形態可由機器可讀取媒體上所儲存的代表性碼來實施,該代表性碼係代表及/或定義積體電路(諸如處理器)內之邏輯。例如,機器可讀取媒體可包括其代表處理器內之各種邏輯的指令。當由機器所讀取時,該些指令可致使該機器製造該邏輯以履行文中所述之技術。此等表示(已知為「IP核心」)為針對積體電路之邏輯的可再使用單元,其可被儲存於有形的、機器可讀取媒體上而成為硬體模型,其係描述積體電路之結構。硬體模型可被供應至各個顧客或製造機構,其將硬體模型載入至其製造積體電路之製造機器上。積體電路可被製造以致其電路係履行配合文中所述之任何實施例而描述的操作。
圖26為方塊圖,其闡明可被用以製造積體電路(用來履行依據實施例之操作)的IP核心開發系統2600。IP核心開發系統2600可被用以產生模組式、可再使用設計,其可被結合入更大的設計或者被用以建構完整的積體電路(例如,SOC積體電路)。設計機構2630可產生IP核心設計之軟體模擬2610,以高階編程語言(例如,C/C++)。軟體模擬2610可被用以設計、測試、及驗證IP核心之行為,使用模擬模型2612。模擬模型2612可包括功能、行為、及/或時序模擬。暫存器轉移階(RTL)設計2615可接著被產生或合成自模擬模型2612。RTL設計2615為積體電路之行為的摘要,其係模擬硬體暫存器之間的數位信號之流程,該些硬體暫存器包括使用所模擬的數位信號而履行的相關邏輯。除了RTL設計2615之外,在邏輯階或電晶體階上之低階設計亦可被產生、設計、或合成。因此,初始設計及模擬之特定細節可改變。
RTL設計2615或同等物可由設計機構所進一步合成為硬體模型2620,其可為硬體描述語言(HDL)、或實體設計資料之某其他表示。HDL可被進一步模擬或測試以驗證IP核心設計。IP核心設計可被儲存以供遞送至第三方製造機構2665,其係使用非揮發性記憶體2640(例如,硬碟、快閃記憶體、或任何非揮發性儲存媒體)。替代地,IP核心設計可透過有線連接2650或無線連接2660而被傳輸(例如,經由網際網路)。製造機構2665可接著製造積體電路,其係至少部分地根據IP核心設計。所製造的積體電路可組態成依據至少一文中所述之實施例來履行操作。
範例系統單晶片積體電路
圖27-29闡明範例積體電路及相關的圖形處理器,其可使用一或更多IP核心來製造,依據文中所述之各個實施例。除了所闡明者之外,可包括其他的邏輯和電路,包括額外圖形處理器/核心、周邊介面控制器、或通用處理器核心。
圖27為闡明範例系統單晶片積體電路2700(其可使用一或更多IP核心來製造)之方塊圖,依據一實施例。範例積體電路2700包括一或更多應用程式處理器2705(例如,CPU)、至少一圖形處理器2710;並可額外地包括影像處理器2715及/或視頻處理器2720,其任一者可為來自相同或多數不同設計機構之模組式IP核心。積體電路2700包括周邊或匯流排邏輯,包括USB控制器2725、UART控制器2730、SPI/SDIO控制器2735、及I2
S/I2
C控制器2740。此外,積體電路可包括顯示裝置2745,其係耦合至一或更多高解析度多媒體介面(HDMI)控制器2750及行動裝置工業處理器介面(MIPI)顯示介面2755。可藉由快閃記憶體子系統2760(包括快閃記憶體及快閃記憶體控制器)以提供儲存。記憶體介面可經由記憶體控制器2765而被提供,以存取至SDRAM或SRAM記憶體裝置。某些積體電路額外地包括嵌入式安全性引擎2770。
圖28為闡明系統單晶片積體電路(其可使用一或更多IP核心來製造)的範例圖形處理器2810之方塊圖,依據一實施例。圖形處理器2810可為圖27之圖形處理器2710的變體。圖形處理器2810包括頂點處理器2805及一或更多片段處理器2815A-2815N(例如,2815A, 2815B, 2815C, 2815D, 至2815N-1, 及2815N)。圖形處理器2810可經由分離的邏輯以執行不同的著色器程式,以致其頂點處理器2805被最佳化以執行針對頂點著色器程式之操作,而一或更多片段處理器2815A-2815N係執行針對片段或像素著色器程式之片段(例如,像素)著色操作。頂點處理器2805係履行3D圖形管線之頂點處理階段並產生基元及頂點資料。片段處理器2815A-2815N係使用由頂點處理器2805所產生的基元及頂點資料以產生框緩衝器,其被顯示於顯示裝置上。於一實施例中,片段處理器2815A-2815N被最佳化以執行片段著色器程式(如針對OpenGL API中所提供者),其可被用以履行如像素著色器程式(如針對Direct 3D API中所提供者)之類似操作。
圖形處理器2810額外地包括一或更多記憶體管理單元(MMU)2820A-2820B、快取2825A-2825B、及電路互連2830A-2830B。一或更多MMU 2820A-2820B係提供針對積體電路2810之虛擬至實體位址映射,包括針對頂點處理器2805及/或片段處理器2815A-2815N,其可參考記憶體中所儲存的頂點或影像/紋理資料,除了一或更多快取2825A-2825B中所儲存的頂點或影像/紋理資料以外。於一實施例中,一或更多MMU 2825A-2825B可被合成與該系統內之其他MMU,包括與圖27之一或更多應用程式處理器2705、影像處理器2715、及/或視頻處理器2720相關的一或更多MMU,以致其各處理器2705-2720可加入共用的或統一的虛擬記憶體系統。一或更多電路互連2830A-2830B係致能圖形處理器2810與SoC內之其他IP核心介接,經由SoC之內部匯流排或經由直接連接,依據實施例。
圖29為闡明系統單晶片積體電路(其可使用一或更多IP核心來製造)的額外範例圖形處理器2910之方塊圖,依據一實施例。圖形處理器2910可為圖27之圖形處理器2710的變體。圖形處理器2910包括圖28之積體電路2800的一或更多MMU 2820A-2820B、快取2825A-2825B、及電路互連2830A-2830B。
圖形處理器2910包括一或更多著色器核心2915A-2915N(例如,2915A, 2915B, 2915C, 2915D, 2915E, 2915F, 至 2915N-1, 及2915N),其係提供統一的著色器核心架構,其中單一核心或核心類型可執行所有類型的可編程著色器碼(包括著色器程式碼)以實施頂點著色器、片段著色器及/或計算著色器。所存在之著色器核心的確實數目可於實施例及實施方式之間變化。此外,圖形處理器2910包括核心間工作管理器2905,其係作用為執行緒調度器(用以將執行緒調度至一或更多著色器核心2915A-2915N)及填磚單元2918(用以加速針對磚片為基的渲染之填磚操作),其中針對一場景之渲染操作被細分於影像空間中,例如,用以利用一場景內之局部空間同調性或者最佳化內部快取之使用。
某些實施例係有關於範例1,其包括一種用以協助計算最佳化之設備,包含複數處理單元,其各包含複數執行單元(EU),其中該些複數EU包含第一EU類型及第二EU類型。
範例2包括範例1之請求標的,其中該些複數處理單元包含第一處理單元及第二處理單元,該第一處理單元包括該第一類型的複數EU而該第二處理單元包括該第二類型的複數EU。
範例3包括範例1及2之請求標的,其中該些複數處理單元包含第一處理單元及第二處理單元,該第一處理單元包括該第一類型的第一組EU和該第二類型的第二組EU而該第二處理單元包括該第一類型的第三組EU和該第二類型的第四組EU。
範例4包括範例1-3之請求標的,進一步包含計算邏輯,用以選擇其將被實施以執行工作量之該EU。
範例5包括範例1-4之請求標的,其中該計算邏輯係選擇該第一類型的EU來處理第一類型的應用程式工作量並選擇該第二類型的EU來處理第二類型的應用程式工作量。
範例6包括範例1-5之請求標的,進一步包含記憶體,其中該些複數處理單元被包括於該記憶體中。
範例7包括範例1-6之請求標的,其中該記憶體包含高頻寬記憶體(HBM)。
範例8包括範例1-7之請求標的,其中該HBM包含第一記憶體通道及包括於該第一記憶體通道中之第一處理單元。
範例9包括範例1-8之請求標的,進一步包含暫存器檔,其被實施以履行矩陣-向量變換。
範例10包括範例1-9之請求標的,進一步包含共用本地記憶體(SLM),其被實施以履行矩陣-向量變換。
某些實施例係有關於範例11,其包括圖形處理器,包含複數處理單元,其各包含複數執行單元(EU),其中該些複數EU包含第一EU類型及第二EU類型,第一處理單元包括第一組執行單元(EU)而第二處理單元包括第二組EU,其中該些第一和第二組EU係由第一EU類型及第二EU類型所組成。
範例12包括範例11之請求標的,其中該些第一組EU包含該第一類型的複數EU而該些第二組EU包含該第二類型的複數EU。
範例13包括範例11及12之請求標的,其中該些第一和第二組EU各包含該第一類型的一或更多EU及該第二類型的一或更多EU。
範例14包括範例11-13之請求標的,進一步包含計算邏輯,用以選擇其將被實施以執行工作量之該EU。
範例15包括範例11-14之請求標的,其中該計算邏輯係選擇該第一類型的EU來處理第一類型的應用程式工作量並選擇該第二類型的EU來處理第二類型的應用程式工作量。
範例16包括範例11-15之請求標的,進一步包含記憶體,其中該些複數處理單元被包括於該記憶體中。
範例17包括範例11-16之請求標的,其中該記憶體包含高頻寬記憶體(HBM)。
範例18包括範例11-17之請求標的,其中該HBM包含第一記憶體通道及包括於該第一記憶體通道中之第一處理單元。
範例19包括範例11-18之請求標的,進一步包含暫存器檔,其被實施以履行矩陣-向量變換。
範例20包括範例11-19之請求標的,進一步包含共用本地記憶體(SLM),其被實施以履行矩陣-向量變換。
前述說明書及圖式應被視為說明性意義而非限制性意義。熟悉本技術人士將瞭解:可對文中所述之實施例進行各種修改及改變而不背離如後附申請專利範圍中所提出之本發明的較寬廣精神及範圍。
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:叢集
214B:叢集
214N:叢集
216:記憶體交叉開關
218:記憶體介面
220A:分割單元
220B:分割單元
220N:分割單元
221:L2快取
222:平行處理器記憶體
224A:記憶體單元
224B:記憶體單元
224N:記憶體單元
225:框緩衝器介面
226:ROP
232:管線管理器
234:圖形多處理器
236:紋理單元
240:資料交叉開關
242:preROP
245:MMU
252:指令快取
254:指令單元
256:位址映射單元
258:暫存器檔
262:通用圖形處理單元(GPGPU)核心
266:載入/儲存單元
268:記憶體和快取互連
270:共用記憶體
272:快取記憶體
324:圖形多處理器
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:代理電路
426:共用快取
430-431:記憶體互連
432:圖形處理引擎
433:高速鏈結
435:介面
436:加速器積體電路
437:介面
438:快取
439:記憶體管理單元(MMU)
440-443:高速鏈結
441:系統記憶體
444-445:高速鏈結
446:圖形加速模組
447:中斷管理電路
448:背景管理電路
450-453:GPU記憶體互連
456:快取
460A-460D:核心
461A-461D:變換後備緩衝
462A-462D:快取
464:同調匯流排
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,514,518:基元組譯器
508:鑲嵌控制處理單元
510:鑲嵌單元
512:鑲嵌評估處理單元
516:幾何處理單元
520:視埠擴縮、剔除、及修剪單元
522:柵格化器
524:片段/像素處理單元
526:光柵操作單元
528:記憶體介面
600:計算裝置
604:輸入/輸出(I/O)來源
606:作業系統(OS)
608:記憶體
610:計算機制
612:中央處理單元(CPU)
614:GPU
616:圖形驅動程式
700:處理單元
700(a):處理器
700(b):處理器
700(c):處理器
700(n):處理器
705:EU
705(0)-705(n):EU
706:EU
706(0)-706(n):EU
707:EU
707(0)-707(n):EU
750:記憶體
752:通道
760:HBM控制器
802:機器學習應用程式
804:機器學習框架
806:計算框架
808:GPGPU驅動程式
810:GPGPU硬體
900:通用圖形處理單元
902:主機介面
904:總體排程器
906A-H:計算叢集
908:快取記憶體
910:GPU鏈結
912A-B:記憶體控制器
914A-B:記憶體
1000:多GPU計算系統
1002:處理器
1004:主機介面開關
1006A-D:GPGPU
1016:點對點GPU至GPU鏈結
1102:輸入
1104:卷積層
1106:卷積層
1108:完全連接層
1112:卷積層
1114:卷積層
1116:卷積階段
1118:檢測器階段
1120:集用階段
1122:下一層
1200:循環神經網路
1202:輸入層
1204:隱藏層
1205:回饋機制
1206:輸出層
1302:訓練資料集
1304:訓練框架
1306:未訓練神經網路
1307:經訓練神經網路
1308:經訓練神經網
1312:新資料
1402:模型平行性
1404:資料平行性
1406:結合的模型及資料平行性
1500:系統單晶片(SOC)
1502:媒體處理器
1504:視覺處理器
1505:晶片上記憶體
1506:GPGPU
1508:多核心處理器
1600:處理系統
1602:處理器
1604:快取記憶體
1606:暫存器檔
1607:處理器核心
1608:圖形處理器
1609:指令集
1610:處理器匯流排
1612:外部圖形處理器
1616:記憶體控制器集線器
1620:記憶體裝置
1621:指令
1622:資料
1624:資料儲存裝置
1626:無線收發器
1628:韌體介面
1630:輸入輸出(I/O)控制器集線器
1634:網路控制器
1640:傳統I/O控制器
1642:通用串列匯流排(USB)控制器
1644:鍵盤及滑鼠
1646:音頻控制器
1700:處理器
1702A-1702N:處理器核心
1704A-1704N:快取單元
1706:共用快取單元
1708:圖形處理器
1710:系統代理核心
1711:顯示控制器
1712:環為基的互連單元
1713:I/O鏈結
1714:記憶體控制器
1716:匯流排控制器單元
1718:嵌入式記憶體模組
1800:圖形處理器
1802:顯示控制器
1804:區塊影像轉移(BLIT)引擎
1806:視頻編碼解碼引擎
1810:圖形處理引擎(GPE)
1812:3D管線
1814:記憶體介面
1815:3D/媒體子系統
1816:媒體管線
1820:顯示裝置
1903:命令串流器
1910:圖形處理引擎
1914:圖形核心陣列
1918:統一返回緩衝器(URB)
1920:共用功能邏輯
1921:取樣器
1922:數學
1923:執行緒間通訊(ITC)
1925:快取
2000:圖形處理器
2002:環互連
2003:命令串流器
2004:管線前端
2030:視頻品質引擎(VQE)
2033:多格式編碼/解碼(MFX)
2034:視頻前端
2036:幾何管線
2037:媒體引擎
2050A-2050N:第一子核心
2052A-2052N:第一組執行單元
2054A-2054N:媒體/紋理取樣器
2060A-2060N:第二子核心
2062A-2062N:第二組執行單元
2064A-2064N:取樣器
2070A-2070N:共用資源
2080A-2080N:圖形核心
2100:執行邏輯
2102:著色器處理器
2104:執行緒調度器
2106:指令快取
2108A-2108N:執行單元
2110:取樣器
2112:資料快取
2114:資料埠
2200:圖形處理器指令格式
2210:128位元指令格式
2212:指令運算碼
2213:指標欄位
2214:指令控制欄位
2216:執行大小欄位
2218:目的地
2220:src0
2222:src1
2224:SRC2
2226:存取/位址模式欄位
2230:64位元緊縮指令格式
2240:運算碼解碼
2242:移動和邏輯運算碼群組
2244:流程控制指令群組
2246:雜項指令群組
2248:平行數學指令群組
2250:向量數學群組
2300:圖形處理器
2302:環互連
2303:命令串流器
2805:頂點處理器
2307:頂點著色器
2311:殼體著色器
2313:鑲嵌器
2317:領域著色器
2319:幾何著色器
2320:圖形管線
2323:串流輸出單元
2329:截波器
2330:媒體管線
2331:執行緒調度器
2334:視頻前端
2337:媒體引擎
2340:顯示引擎
2341:2D引擎
2343:顯示控制器
2350:執行邏輯
2351:L1快取
2352A-2352B:執行單元
2354:媒體取樣器
2356:資料埠
2358:紋理/取樣器快取
2370:渲染輸出管線
2373:柵格化器及深度測試組件
2375:L3快取
2377:像素操作組件
2378:渲染快取
2379:深度快取
2400:圖形處理器命令格式
2402:目標客戶
2404:命令操作碼(運算碼)
2405:子運算碼
2406:相關資料
2408:命令大小
2410:圖形處理器命令序列
2412:管線清除命令
2413:管線選擇命令
2414:管線控制命令
2416:返回緩衝器狀態命令
2420:管線判定
2422:3D管線
2424:媒體管線
2430:3D管線狀態
2432:3D基元
2434:執行
2440:媒體管線狀態
2442:媒體物件命令
2444:執行命令
2500:資料處理系統
2510:3D圖形應用程式
2512:著色器指令
2514:可執行指令
2516:圖形物件
2520:作業系統
2522:圖形API
2524:前端著色器編譯器
2526:使用者模式圖形驅動程式
2527:後端著色器編譯器
2528:作業系統內核模式功能
2529:內核模式圖形驅動程式
2530:處理器
2532:圖形處理器
2534:通用處理器核心
2550:系統記憶體
2600:IP核心開發系統
2610:軟體模擬
2612:模擬模型
2615:暫存器轉移階(RTL)設計
2620:硬體模型
2630:設計機構
2640:非揮發性記憶體
2650:有線連接
2660:無線連接
2665:製造機構
2700:系統單晶片積體電路
2705:應用程式處理器
2710:圖形處理器
2715:影像處理器
2720:視頻處理器
2725:USB控制器
2730:UART控制器
2735:SPI/SDIO控制器
2740:I2S/I2C控制器
2745:顯示裝置
2750:高解析度多媒體介面(HDMI)控制器
2755:行動裝置工業處理器介面(MIPI)顯示介面
2760:快閃記憶體子系統
2765:記憶體控制器
2770:嵌入式安全性引擎
2805:頂點處理器
2810:圖形處理器
2815A-2815N:片段處理器
2820A-2820B:記憶體管理單元(MMU)
2825A-2825B:快取
2830A-2830B:電路互連
2905:核心間工作管理器
2910:圖形處理器
2915A-2915N:著色器核心
2918:填磚單元
因此在方式中本實施例之上述特徵所能夠被詳細地瞭解,簡述如上之實施例的更特定描述可藉由參考實施例而獲得,其部分係闡明於後附圖形中。然而,應注意:後附圖形僅闡明典型的實施例而因此不應被視為其範圍的限制。
圖1為方塊圖,其闡明一種組態成實施文中所述之實施例的一或更多形態之電腦系統;
圖2A-2D闡明平行處理器組件,依據一實施例;
圖3A-3B為圖形多處理器之方塊圖,依據實施例;
如4A-4F闡明範例架構,其中複數GPU被通訊地耦合至複數多核心處理器;
圖5闡明圖形處理器管線,依據一實施例;
圖6闡明利用計算機制之計算裝置,依據一實施例;
圖7A及7B闡明處理單元之實施例;
圖7C闡明矩陣至向量變換;
圖8闡明機器學習軟體堆疊,依據一實施例;
圖9闡明高度平行的通用圖形處理單元,依據一實施例;
圖10闡明多GPU計算系統,依據一實施例;
圖11A-11B闡明範例深神經網路之層;
圖12闡明範例循環神經網路;
圖13闡明深神經網路之訓練及部署;
圖14為闡明分散式學習的方塊圖;
圖15闡明一種範例推論系統單晶片(SOC),其適於履行使用經訓練的模型之推論;
圖16為一種處理系統之方塊圖,依據一實施例;
圖17為一種處理器之方塊圖,依據一實施例;
圖18為一種圖形處理器之方塊圖,依據一實施例;
圖19為一種圖形處理器之圖形處理引擎的方塊圖,依據某些實施例;
圖20為一種由額外實施例所提供的圖形處理器之方塊圖;
圖21闡明執行緒執行邏輯,其包括某些實施例中所利用的處理元件之陣列;
圖22為闡明圖形處理器指令格式之方塊圖,依據某些實施例;
圖23為一種圖形處理器之方塊圖,依據另一實施例;
圖24A-24B闡明圖形處理器命令格式及命令序列,依據某些實施例;
圖25闡明針對資料處理系統之範例圖形軟體架構,依據某些實施例;
圖26為闡明IP核心開發系統之方塊圖,依據一實施例;
圖27為闡明範例系統單晶片積體電路之方塊圖,依據一實施例;
圖28為闡明額外範例圖形處理器之方塊圖;及
圖29為闡明系統單晶片積體電路的額外範例圖形處理器之方塊圖,依據一實施例。
100:計算系統
101:處理子系統
102:處理器
104:系統記憶體
105:記憶體集線器
106:通訊鏈結
107:I/O集線器
108:輸入裝置
110A:顯示裝置
110B:顯示裝置
111:I/O子系統
112:平行處理器
113:通訊鏈結
114:系統儲存單元
116:I/O開關
118:網路配接器
119:無線網路配接器
120:外接裝置
Claims (19)
- 一種圖形處理單元,其包括一或多個多處理器,該一或多個多處理器之至少一個包括: 暫存器檔,用以儲存複數不同類型的運算元;及 複數處理核心,包括: 第一類型的第一組處理核心,用以在該暫存器檔之第一組暫存器中的第一組運算元上履行多維矩陣操作,其中該第一類型的該第一組處理核心包括用以執行指令之電路,用以在該暫存器檔之該第一組暫存器中的該第一組運算元上履行矩陣操作,其中該第一組運算元包括一或多個64位元運算元;及 第二類型的第二組處理核心,該第二組處理核心係不同於該第一組處理核心,該第二組處理核心用以在該暫存器檔之第二組暫存器中的第二組運算元上履行通用圖形處理單元(GPGPU)操作。
- 如請求項1之圖形處理單元,其中該第二組處理核心包含: 一組浮點單元(FPU),用以執行指令來履行浮點操作,該組FPU用以履行32位元浮點(FP32)操作及16位元浮點(FP16)操作;及 一組整數單元,用以執行指令來履行整數操作。
- 如請求項2之圖形處理單元,其中該組FPU包括用以履行32位元浮點(FP32)操作之第一FPU及用以履行16位元浮點(FP16)操作之第二FPU。
- 如請求項1之圖形處理單元,其中該第一類型的該第一組處理核心組態成針對儲存在該暫存器檔中之第一類型運算元履行原地矩陣至向量變換。
- 如請求項4之圖形處理單元,其中該原地矩陣至向量變換包括具有來源及目的地之一組操作,該來源及目的地係在該暫存器檔內。
- 如請求項5之圖形處理單元,其中該來源包括暫存器位址開始限制、跨步、元件之數目、及元件大小。
- 如請求項1之圖形處理單元,其中該一或多個多處理器之該至少一個進一步包含指令快取,用以儲存與該第一組運算元相關聯的第一指令及與該第二組運算元相關聯的第二指令。
- 如請求項1之圖形處理單元,其中該第一類型的該第一組處理核心係與第一記憶體通道相關聯而該第二類型的該第二組處理核心係與第二記憶體通道相關聯。
- 如請求項1至8的任一項之圖形處理單元,其中該一或多個多處理器具有單指令多執行緒(SIMT)架構。
- 一種用以協助在圖形處理單元(GPU)處之資料的處理之方法,該方法包括: 在第一類型的第一組處理核心處接收來自暫存器檔之第一組暫存器的第一組運算元,其中該第一類型的該第一組處理核心包括用以執行指令之電路,用以在該暫存器檔之該第一組暫存器中的該第一組運算元上履行矩陣操作,該第一組運算元包括一或多個64位元運算元;及 在第二類型的第二組處理核心處接收來自暫存器檔之第二組暫存器的第二組運算元,該第二組處理核心係不同於該第一組處理核心; 在該第一組處理核心處履行第一組運算元上之多維矩陣數學操作;及 在該第二組處理核心處履行第二組運算元上之通用圖形處理單元(GPGPU)操作。
- 如請求項10之方法,其中在該第二組處理核心處履行GPGPU操作包含: 在一組浮點單元(FPU)處執行指令以履行浮點操作,其中在該組浮點單元(FPU)處執行該等指令包含履行32位元浮點(FP32)操作及16位元浮點(FP16)操作;及 在一組整數單元處執行指令以履行整數操作。
- 如請求項11之方法,額外地包括在該組FPU之第一FPU處履行32位元浮點(FP32)操作及在該組FPU之第二FPU處履行16位元浮點操作。
- 如請求項10之方法,額外地包括經由該第一類型的該第一組處理核心以針對儲存在該暫存器檔中之第一類型運算元履行原地矩陣至向量變換,其中該原地矩陣至向量變換包括具有來源及目的地之一組操作,且該來源及目的地係在該暫存器檔內。
- 如請求項13之方法,其中該來源包括暫存器位址開始限制、跨步、元件之數目、及元件大小。
- 如請求項10之方法,其中該GPU包含一或多個多處理器,該一或多個多處理器包括該第一類型的該第一組處理核心、該第二類型的該第二組處理核心、及指令快取,用以儲存與該第一組運算元相關聯的第一指令及與該第二組運算元相關聯的第二指令。
- 如請求項15之方法,其中該第一類型的該第一組處理核心係與第一記憶體通道相關聯而該第二類型的該第二組處理核心係與第二記憶體通道相關聯。
- 如請求項16之方法,其中該一或多個多處理器具有單指令多執行緒(SIMT)架構。
- 一種圖形處理系統,包括用以履行如請求項10至17的任一項之方法的機構。
- 一種儲存資料之一或多個非暫態機器可讀取儲存媒體,當由一或多個機器所讀取時該資料致使該一或多個機器履行如請求項10至17的任一項之方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/494,886 | 2017-04-24 | ||
US15/494,886 US10417731B2 (en) | 2017-04-24 | 2017-04-24 | Compute optimization mechanism for deep neural networks |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202145009A true TW202145009A (zh) | 2021-12-01 |
TWI790721B TWI790721B (zh) | 2023-01-21 |
Family
ID=61768149
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110131258A TWI790721B (zh) | 2017-04-24 | 2018-02-22 | 圖形處理單元,用以協助在圖形處理單元處之資料的處理之方法,圖形處理系統及非暫態機器可讀取儲存媒體 |
TW107105953A TWI760444B (zh) | 2017-04-24 | 2018-02-22 | 用以協助計算最佳化之設備及圖形處理器 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107105953A TWI760444B (zh) | 2017-04-24 | 2018-02-22 | 用以協助計算最佳化之設備及圖形處理器 |
Country Status (4)
Country | Link |
---|---|
US (7) | US10417731B2 (zh) |
EP (3) | EP3654185A1 (zh) |
CN (5) | CN113705789B (zh) |
TW (2) | TWI790721B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI806387B (zh) * | 2021-12-09 | 2023-06-21 | 宏達國際電子股份有限公司 | 用於偵測環控制器的運動的方法、環控制器及電腦可讀存儲介質 |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10768935B2 (en) * | 2015-10-29 | 2020-09-08 | Intel Corporation | Boosting local memory performance in processor graphics |
US10409319B2 (en) * | 2017-04-17 | 2019-09-10 | Intel Corporation | System, apparatus and method for providing a local clock signal for a memory array |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10417734B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US10360002B2 (en) * | 2017-06-06 | 2019-07-23 | Informatica Llc | Method, apparatus, and computer-readable medium for generating an alternative implementation of a program on one or more engines |
WO2019031858A1 (en) * | 2017-08-08 | 2019-02-14 | Samsung Electronics Co., Ltd. | METHOD AND APPARATUS FOR DETERMINING MEMORY NEEDS IN A NETWORK |
US11468145B1 (en) | 2018-04-20 | 2022-10-11 | Perceive Corporation | Storage of input values within core of neural network inference circuit |
US11783167B1 (en) | 2018-04-20 | 2023-10-10 | Perceive Corporation | Data transfer for non-dot product computations on neural network inference circuit |
US10740434B1 (en) | 2018-04-20 | 2020-08-11 | Perceive Corporation | Reduced dot product computation circuit |
JP7001004B2 (ja) * | 2018-06-25 | 2022-01-19 | 日本電信電話株式会社 | 分散深層学習システム、分散深層学習方法、およびコンピューティングインタコネクト装置 |
CN109165729A (zh) * | 2018-08-22 | 2019-01-08 | 中科物栖(北京)科技有限责任公司 | 神经网络的调度方法及系统 |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
US11347297B1 (en) | 2019-01-23 | 2022-05-31 | Perceive Corporation | Neural network inference circuit employing dynamic memory sleep |
TWI708195B (zh) * | 2019-01-29 | 2020-10-21 | 台灣大哥大股份有限公司 | 基於類神經網路之基地台涵蓋異常的查測系統和方法 |
WO2020190801A1 (en) * | 2019-03-15 | 2020-09-24 | Intel Corporation | Graphics processor operation scheduling for deterministic latency |
TWI717716B (zh) * | 2019-04-01 | 2021-02-01 | 陳膺任 | 防偽元件驗證方法及系統 |
US10853991B1 (en) * | 2019-05-20 | 2020-12-01 | Facebook Technologies, Llc | Multi-layered artificial reality controller pose tracking architecture having prioritized motion models |
US11625585B1 (en) | 2019-05-21 | 2023-04-11 | Perceive Corporation | Compiler for optimizing filter sparsity for neural network implementation configuration |
CN110099017B (zh) * | 2019-05-22 | 2021-09-28 | 东南大学 | 基于深度神经网络的混合量化系统的信道估计方法 |
CN110502278B (zh) * | 2019-07-24 | 2021-07-16 | 瑞芯微电子股份有限公司 | 基于RiscV扩展指令的神经网络协处理器及其协处理方法 |
CN110516795B (zh) * | 2019-08-28 | 2022-05-10 | 北京达佳互联信息技术有限公司 | 一种为模型变量分配处理器的方法、装置及电子设备 |
CN110837891B (zh) * | 2019-10-23 | 2022-05-17 | 南京大学 | 基于simd架构的自组织映射方法及系统 |
TWI727509B (zh) * | 2019-11-20 | 2021-05-11 | 瑞昱半導體股份有限公司 | 具有省電模式且能夠在省電模式盡量省電的通訊裝置 |
CN111191778B (zh) * | 2019-12-31 | 2021-11-30 | 深圳云天励飞技术股份有限公司 | 深度学习网络处理方法、装置与编译器 |
KR102455310B1 (ko) * | 2020-05-08 | 2022-10-18 | 한국전자통신연구원 | 콘볼루션 신경망 양자화 추론 장치 및 방법 |
US11809908B2 (en) | 2020-07-07 | 2023-11-07 | SambaNova Systems, Inc. | Runtime virtualization of reconfigurable data flow resources |
CN112434785B (zh) * | 2020-10-22 | 2023-04-14 | 西安交通大学 | 一种面向超级计算机的分布式并行深度神经网络性能评测方法 |
TWI744057B (zh) * | 2020-10-27 | 2021-10-21 | 國立成功大學 | 深度偽造影片檢測系統及其方法 |
TWI809335B (zh) * | 2020-12-11 | 2023-07-21 | 中華電信股份有限公司 | 個人化語音辨識方法及語音辨識系統 |
CN112613390B (zh) * | 2020-12-18 | 2022-11-22 | 小视科技(江苏)股份有限公司 | 多gpu集群并行人脸搜索方法与系统 |
US11182221B1 (en) | 2020-12-18 | 2021-11-23 | SambaNova Systems, Inc. | Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS) |
US11392740B2 (en) | 2020-12-18 | 2022-07-19 | SambaNova Systems, Inc. | Dataflow function offload to reconfigurable processors |
US11237880B1 (en) | 2020-12-18 | 2022-02-01 | SambaNova Systems, Inc. | Dataflow all-reduce for reconfigurable processor systems |
CN112598122B (zh) * | 2020-12-23 | 2023-09-05 | 北方工业大学 | 一种基于可变电阻式随机存储器的卷积神经网络加速器 |
TWI768709B (zh) * | 2021-01-19 | 2022-06-21 | 福邦科技國際股份有限公司 | 雙影像融合方法與裝置 |
US11782760B2 (en) | 2021-02-25 | 2023-10-10 | SambaNova Systems, Inc. | Time-multiplexed use of reconfigurable hardware |
US11200096B1 (en) | 2021-03-26 | 2021-12-14 | SambaNova Systems, Inc. | Resource allocation for reconfigurable processors |
US11899589B2 (en) | 2021-06-22 | 2024-02-13 | Samsung Electronics Co., Ltd. | Systems, methods, and devices for bias mode management in memory systems |
TWI779923B (zh) * | 2021-11-11 | 2022-10-01 | 南亞科技股份有限公司 | 圖案驗證系統及其操作方法 |
CN114358269B (zh) * | 2022-03-01 | 2024-04-12 | 清华大学 | 神经网络处理组件及多神经网络处理方法 |
US20240127107A1 (en) * | 2022-10-14 | 2024-04-18 | Microsoft Technology Licensing, Llc | Program accelerators with multidimensional nested command structures |
Family Cites Families (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6624818B1 (en) * | 2000-04-21 | 2003-09-23 | Ati International, Srl | Method and apparatus for shared microcode in a multi-thread computation engine |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7339592B2 (en) * | 2004-07-13 | 2008-03-04 | Nvidia Corporation | Simulating multiported memories using lower port count memories |
US7747070B2 (en) | 2005-08-31 | 2010-06-29 | Microsoft Corporation | Training convolutional neural networks on graphics processing units |
US7728841B1 (en) | 2005-12-19 | 2010-06-01 | Nvidia Corporation | Coherent shader output for multiple targets |
US8884972B2 (en) | 2006-05-25 | 2014-11-11 | Qualcomm Incorporated | Graphics processor with arithmetic and elementary function units |
US8869147B2 (en) | 2006-05-31 | 2014-10-21 | Qualcomm Incorporated | Multi-threaded processor with deferred thread output control |
US7761694B2 (en) * | 2006-06-30 | 2010-07-20 | Intel Corporation | Execution unit for performing shuffle and other operations |
US9665970B2 (en) * | 2006-09-19 | 2017-05-30 | Imagination Technologies Limited | Variable-sized concurrent grouping for multiprocessing |
US8345053B2 (en) | 2006-09-21 | 2013-01-01 | Qualcomm Incorporated | Graphics processors with parallel scheduling and execution of threads |
US8421794B2 (en) | 2007-03-23 | 2013-04-16 | Qualcomm Incorporated | Processor with adaptive multi-shader |
US8310491B2 (en) | 2007-06-07 | 2012-11-13 | Apple Inc. | Asynchronous notifications for concurrent graphics operations |
US8325184B2 (en) | 2007-09-14 | 2012-12-04 | Qualcomm Incorporated | Fragment shader bypass in a graphics processing unit, and apparatus and method thereof |
US8106914B2 (en) | 2007-12-07 | 2012-01-31 | Nvidia Corporation | Fused multiply-add functional unit |
US20090160863A1 (en) | 2007-12-21 | 2009-06-25 | Michael Frank | Unified Processor Architecture For Processing General and Graphics Workload |
US8633936B2 (en) | 2008-04-21 | 2014-01-21 | Qualcomm Incorporated | Programmable streaming processor with mixed precision instruction execution |
US8698823B2 (en) * | 2009-04-08 | 2014-04-15 | Nvidia Corporation | System and method for deadlock-free pipelining |
EP2322248B1 (en) * | 2009-06-29 | 2017-12-27 | L'oreal S.A. | Composition comprising a polyol and an oil-soluble polar modified polymer |
CN101605270B (zh) * | 2009-07-16 | 2011-02-16 | 清华大学 | 生成深度图的方法和装置 |
US8533435B2 (en) | 2009-09-24 | 2013-09-10 | Nvidia Corporation | Reordering operands assigned to each one of read request ports concurrently accessing multibank register file to avoid bank conflict |
US9501285B2 (en) * | 2010-05-27 | 2016-11-22 | International Business Machines Corporation | Register allocation to threads |
CN103069272B (zh) * | 2010-06-07 | 2015-07-01 | 法国原子能及替代能源委员会 | 包括至少一个色谱柱的用于分析气体混合物的系统 |
JP4818450B1 (ja) * | 2010-06-30 | 2011-11-16 | 株式会社東芝 | グラフィクスプロセッシングユニットおよび情報処理装置 |
GB2489526A (en) | 2011-04-01 | 2012-10-03 | Schlumberger Holdings | Representing and calculating with sparse matrixes in simulating incompressible fluid flows. |
US8468507B2 (en) | 2011-06-10 | 2013-06-18 | Microsoft Corporation | Binding executable code at runtime |
US20130162661A1 (en) | 2011-12-21 | 2013-06-27 | Nvidia Corporation | System and method for long running compute using buffers as timeslices |
CN114721721A (zh) * | 2011-12-23 | 2022-07-08 | 英特尔公司 | 用于混洗浮点或整数值的装置和方法 |
WO2013101032A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Migrating threads between asymmetric cores in a multiple core processor |
CN102609978B (zh) * | 2012-01-13 | 2014-01-22 | 中国人民解放军信息工程大学 | 基于cuda架构的gpu加速锥束ct图像重建的方法 |
US20130226535A1 (en) | 2012-02-24 | 2013-08-29 | Jeh-Fu Tuan | Concurrent simulation system using graphic processing units (gpu) and method thereof |
US9019289B2 (en) | 2012-03-07 | 2015-04-28 | Qualcomm Incorporated | Execution of graphics and non-graphics applications on a graphics processing unit |
US10146544B2 (en) * | 2012-03-30 | 2018-12-04 | Intel Corporation | Method and apparatus to process SHA-2 secure hashing algorithm |
US9652815B2 (en) | 2012-09-11 | 2017-05-16 | Nvidia Corporation | Texel data structure for graphics processing unit programmable shader and method of operation thereof |
FR3000623B1 (fr) * | 2012-12-28 | 2018-04-27 | Sunna Design | Procede de pilotage dynamique d'un equipement electrique |
US9329900B2 (en) * | 2012-12-28 | 2016-05-03 | Intel Corporation | Hetergeneous processor apparatus and method |
US9250901B2 (en) * | 2013-03-12 | 2016-02-02 | Intel Corporation | Execution context swap between heterogeneous functional hardware units |
US9384168B2 (en) | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US20140375658A1 (en) * | 2013-06-25 | 2014-12-25 | Ati Technologies Ulc | Processor Core to Graphics Processor Task Scheduling and Execution |
CN103679789B (zh) * | 2013-12-09 | 2017-01-18 | 北京大学 | 基于数据流图的并行绘制与可视化方法及系统 |
US20150179142A1 (en) | 2013-12-20 | 2015-06-25 | Nvidia Corporation | System, method, and computer program product for reduced-rate calculation of low-frequency pixel shader intermediate values |
US20150177821A1 (en) | 2013-12-20 | 2015-06-25 | Broadcom Corporation | Multiple Execution Unit Processor Core |
US9477477B2 (en) * | 2014-01-22 | 2016-10-25 | Nvidia Corporation | System, method, and computer program product for executing casting-arithmetic instructions |
US20150277904A1 (en) * | 2014-03-28 | 2015-10-01 | Roger Espasa | Method and apparatus for performing a plurality of multiplication operations |
DE102015006670A1 (de) * | 2014-06-26 | 2015-12-31 | Intel Corporation | Befehle und logik zum bereitstellen von kryptographischer allzweck-gf(256)-simd- arithmetikfunktionalität |
US10223333B2 (en) * | 2014-08-29 | 2019-03-05 | Nvidia Corporation | Performing multi-convolution operations in a parallel processing system |
ES2738319T3 (es) | 2014-09-12 | 2020-01-21 | Microsoft Technology Licensing Llc | Sistema informático para entrenar redes neuronales |
US9659123B2 (en) * | 2014-10-17 | 2017-05-23 | 21, Inc. | Systems and methods for flexibly optimizing processing circuit efficiency |
US9958932B2 (en) * | 2014-11-20 | 2018-05-01 | Apple Inc. | Processor including multiple dissimilar processor cores that implement different portions of instruction set architecture |
US9928034B2 (en) * | 2014-12-17 | 2018-03-27 | Nvidia Corporation | Work-efficient, load-balanced, merge-based parallelized consumption of sequences of sequences |
EP3035249B1 (en) * | 2014-12-19 | 2019-11-27 | Intel Corporation | Method and apparatus for distributed and cooperative computation in artificial neural networks |
US9721190B2 (en) | 2014-12-19 | 2017-08-01 | Google Inc. | Large-scale classification in neural networks using hashing |
US20160239706A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks |
US9632979B2 (en) * | 2015-06-01 | 2017-04-25 | Intel Corporation | Apparatus and method for efficient prefix sum operation |
US10796397B2 (en) * | 2015-06-12 | 2020-10-06 | Intel Corporation | Facilitating dynamic runtime transformation of graphics processing commands for improved graphics performance at computing devices |
US10242419B2 (en) | 2015-09-02 | 2019-03-26 | Intel Corporation | Compiler optimization to reduce the control flow divergence |
US11061672B2 (en) | 2015-10-02 | 2021-07-13 | Via Alliance Semiconductor Co., Ltd. | Chained split execution of fused compound arithmetic operations |
CN105787287B (zh) * | 2016-05-06 | 2018-08-10 | 广州爱九游信息技术有限公司 | 一种生成榜单数据的系统、设备、装置及方法 |
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 |
US11379941B2 (en) | 2016-09-22 | 2022-07-05 | Advanced Micro Devices, Inc. | Primitive shader |
US10776684B1 (en) * | 2016-11-02 | 2020-09-15 | National Technology & Engineering Solutions Of Sandia, Llc | Mixed core processor unit |
US11132599B2 (en) * | 2017-02-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Multi-function unit for programmable hardware nodes for neural network processing |
US10261786B2 (en) | 2017-03-09 | 2019-04-16 | Google Llc | Vector processing unit |
US10424069B2 (en) * | 2017-04-07 | 2019-09-24 | Nvidia Corporation | System and method for optical flow estimation |
US10417731B2 (en) | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
-
2017
- 2017-04-24 US US15/494,886 patent/US10417731B2/en active Active
- 2017-11-21 US US15/819,093 patent/US10902547B2/en active Active
-
2018
- 2018-02-22 TW TW110131258A patent/TWI790721B/zh active
- 2018-02-22 TW TW107105953A patent/TWI760444B/zh active
- 2018-03-23 EP EP19218493.5A patent/EP3654185A1/en active Pending
- 2018-03-23 EP EP21205193.2A patent/EP3964958A1/en not_active Withdrawn
- 2018-03-23 EP EP18163807.3A patent/EP3396546A1/en active Pending
- 2018-04-23 CN CN202111003293.5A patent/CN113705789B/zh active Active
- 2018-04-23 CN CN202010356162.4A patent/CN111539518B/zh active Active
- 2018-04-23 CN CN202311068912.8A patent/CN117035015A/zh active Pending
- 2018-04-23 CN CN202311809249.2A patent/CN117788262A/zh active Pending
- 2018-04-23 CN CN201810368545.6A patent/CN108734274A/zh active Pending
-
2021
- 2021-01-11 US US17/145,885 patent/US11348198B2/en active Active
- 2021-07-26 US US17/385,693 patent/US11334962B2/en active Active
-
2022
- 2022-05-11 US US17/741,934 patent/US11593910B2/en active Active
-
2023
- 2023-02-13 US US18/168,207 patent/US11922535B2/en active Active
-
2024
- 2024-02-08 US US18/436,494 patent/US20240257294A1/en active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI806387B (zh) * | 2021-12-09 | 2023-06-21 | 宏達國際電子股份有限公司 | 用於偵測環控制器的運動的方法、環控制器及電腦可讀存儲介質 |
Also Published As
Publication number | Publication date |
---|---|
US20210241417A1 (en) | 2021-08-05 |
US11348198B2 (en) | 2022-05-31 |
US11922535B2 (en) | 2024-03-05 |
CN108734274A (zh) | 2018-11-02 |
US20230260072A1 (en) | 2023-08-17 |
EP3654185A1 (en) | 2020-05-20 |
US11593910B2 (en) | 2023-02-28 |
CN111539518B (zh) | 2023-05-23 |
CN113705789A (zh) | 2021-11-26 |
CN117788262A (zh) | 2024-03-29 |
TWI760444B (zh) | 2022-04-11 |
CN117035015A (zh) | 2023-11-10 |
US20220335562A1 (en) | 2022-10-20 |
TW201839607A (zh) | 2018-11-01 |
US11334962B2 (en) | 2022-05-17 |
TWI790721B (zh) | 2023-01-21 |
US10417731B2 (en) | 2019-09-17 |
US10902547B2 (en) | 2021-01-26 |
EP3396546A1 (en) | 2018-10-31 |
US20180308200A1 (en) | 2018-10-25 |
US20240257294A1 (en) | 2024-08-01 |
US20180308208A1 (en) | 2018-10-25 |
EP3964958A1 (en) | 2022-03-09 |
US20210350499A1 (en) | 2021-11-11 |
CN113705789B (zh) | 2024-01-16 |
CN111539518A (zh) | 2020-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI760444B (zh) | 用以協助計算最佳化之設備及圖形處理器 | |
TWI793107B (zh) | 促進計算最佳化的圖形處理器、方法及圖形處理系統 | |
EP3764315B1 (en) | Machine learning sparse computation mechanism | |
TWI785182B (zh) | 使用低和高精確度的混合推理 | |
EP3396544B1 (en) | Efficient sharing and compression of data across processing systems | |
EP3822788A1 (en) | Neural network scheduling mechanism | |
EP3392826A1 (en) | Convolutional neural network optimization mechanism | |
EP3396528A1 (en) | Dynamic distributed training of machine learning models | |
EP3396600A1 (en) | Neural network optimization mechanism | |
EP3396599A1 (en) | Hardware optimized convolutional neural network | |
EP3396602A1 (en) | Neural network training mechanism | |
EP3385837A1 (en) | Fast data operations and finite state machine for machine learning |