TW202122994A - 稀疏矩陣最佳化機制 - Google Patents

稀疏矩陣最佳化機制 Download PDF

Info

Publication number
TW202122994A
TW202122994A TW109131699A TW109131699A TW202122994A TW 202122994 A TW202122994 A TW 202122994A TW 109131699 A TW109131699 A TW 109131699A TW 109131699 A TW109131699 A TW 109131699A TW 202122994 A TW202122994 A TW 202122994A
Authority
TW
Taiwan
Prior art keywords
data
block
sub
graphics
memory
Prior art date
Application number
TW109131699A
Other languages
English (en)
Inventor
那米塔 夏瑪
蘇普拉廷 帕爾
比由帕什 賽門
托芬那 菲夫克
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202122994A publication Critical patent/TW202122994A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Image Generation (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

本發明揭露一種用以促進矩陣處理之設備。該設備包含矩陣加速器,用以接收輸入矩陣資料,將該輸入矩陣資料變換成複數個子區塊,檢查該複數個子區塊中第一區塊以判定該第一區塊是否包含稀疏資料,當判定該第一區塊包含稀疏資料時選擇第一磚尺寸,以及基於該第一磚尺寸產生輸出矩陣資料。

Description

稀疏矩陣最佳化機制
本發明相關於一種稀疏矩陣最佳化機制。
類神經網路可建模成數集合之神經元,該等神經元結合於非循環圖中。類神經網路可接收輸入(單一向量)並通過一系列之隱藏層將其變換。各隱藏層是由一組神經元所構成,其中各神經元都完全連接到先前層之全部神經元,以及其中在單一層中的神經元完全獨立運作且不共享任何連接。卷積類神經網路(CNN)與標準類神經網路相似。各神經元接收若干輸入,執行點積(dot product),且可選地接著非線性。然而,CNN是明確設計為處理輸入影像資料。基於原始(raw)影像資料輸入,網路輸出輸入資料之分類分數。
一經組態以執行類神經網路處理之並行資料處理系統可包括:圖形處理器,其可經組態以對圖形資料執行特定操作,舉例而言諸如線性內插、曲面細分、柵格化、紋理映射、深度測試等。部分之圖形處理器可被設定成為可程式的,賦能此種處理器可以支援用於處理頂點與片段資料等各式各樣操作。圖形處理器中完全可程式的執行單元可以被利用以執行各式各樣並行處理操作。然而,為了將產量最大化,圖形處理器可透過使用專用、固定功能邏輯單元來執行若干操作。
在實施例中,矩陣加速器檢查接收到的矩陣資料並基於該資料之稀疏度將處理磚尺寸(processing tile size)最佳化。 系統概述
圖1是根據實施例的處理系統100之方塊圖。系統100可用於單一處理器桌上型系統、多處理器工作站系統、或具有大量處理器102或處理器核心107之伺服器系統中。在一實施例中,系統100是結合在系統單晶片(SoC)積體電路內之處理平台,以用於使用於具有對區域或廣域網路的有線或無線連接之諸如物聯網(IoT)裝置等行動、手持或嵌入式裝置中。
在一實施例中,系統100可包括、耦接、或整合於下述者中:基於伺服器之遊戲平台;遊戲主機(包括遊戲與媒體主機);行動遊戲主機(手持式遊戲主機);或線上遊戲主機。在若干實施例中,系統100是行動電話、智慧型電話、平板計算裝置或行動網際網路連接裝置(諸如具有低內部儲存器容量之膝上型電腦)等之部分。處理系統100也可包括、耦接、或整合於下述者中:穿戴式裝置(諸如智慧型手錶穿戴式裝置);具擴增實境(AR)或虛擬實境(VR)功能增強的智慧型眼鏡或服裝,提供視覺、音訊或觸覺輸出,以補充現實世界中的視覺、音訊或觸覺體驗,或者提供文字、音訊、圖形、視訊、全像影像或視訊或觸覺回饋;其他擴增實境(AR)裝置;或其他虛擬現實(VR)裝置。在若干實施例中,處理系統100包括或者是電視機或機上盒裝置之部分。在一實施例中,系統100可包括、耦接、或整合於下述者中:自動駕駛車輛諸如公車、牽引機拖車、車、馬達或電動供電自行車、飛機或滑翔翼等(或其任意組合)。自動駕駛車輛可使用系統100以處理在車輛周遭感測到的環境。
在若干實施例中,一或多處理器102各包括一或多處理器核心107以處理指令,當該指令被執行時將執行針對系統或使用者軟體之操作。在若干實施例中,一或多處理器核心107之至少一者經組態以處理特定指令集109。在若干實施例中,指令集109可促進複雜指令集計算(CISC)、精簡指令集計算(RISC)或經由極長指令字(VLIW)之計算。一或多處理器核心107可處理不同指令集109,其可包括用以促進其他指令集之仿真的指令。處理器核心107也可包括其他處理裝置,諸如數位訊號處理器(DSP)。
在若干實施例中,處理器102包括快取記憶體104。取決於架構,處理器102可具有單一內部快取或多個層級的內部快取。在若干實施例中,快取記憶體是被共享於處理器102之各種組件之間。在若干實施例中,處理器102也使用外部快取(例如,Level-3(L3)快取或最終層級快取(LLC)(無示出)),其可透過使用已知快取同調性技術而被共享於處理器核心107之間。額外地,暫存器檔案106可被包括於處理器102中且可包含不同類型之暫存器,用於儲存不同類型之資料(例如,整數暫存器、浮點暫存器、狀態暫存器、以及指令指標暫存器)。若干暫存器可以是通用暫存器,而其他的暫存器可特定於處理器102之設計。
在若干實施例中,一或多處理器102與一或多介面匯流排110耦接,以在處理器102與系統100中其他組件之間傳輸通訊訊號(如,位址、資料或控制訊號)。在一實施例中,介面匯流排110可以是諸如一版本之直接媒體介面(DMI)匯流排等的處理器匯流排。然而,處理器匯流排並不限於DMI匯流排,且可包括一或多週邊組件互連匯流排(例如,PCI、PCI express)、記憶體匯流排、或其他類型之介面匯流排。在一實施例中,處理器102包括整合記憶體控制器116與平台控制器集線器130。記憶體控制器116促進在記憶體裝置與系統100之其他組件之間的通訊,同時平台控制器集線器(PCH)130經由區域I/O匯流排提供到I/O裝置之連接。
記憶體裝置120可以是動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置、或若干其他具有適當性能可以用作處理記憶體之記憶體裝置。在一實施例中,記憶體裝置120可如針對系統100之系統記憶體而操作,以儲存資料122與指令121,用於當一或多處理器102執行應用程式或處理時使用該資料122與指令121。記憶體控制器116也與可選外部圖形處理器118耦接,該外部圖形處理器118可與處理器102中一或多個圖形處理器108通訊以執行圖形與媒體操作。在若干實施例中,加速器112可輔助執行圖形、媒體及/或計算操作,該加速器112是可經組態以執行專用組之圖形、媒體、或計算操作之共處理器。舉例而言,在一實施例中,加速器112是矩陣乘法加速器,用以最佳化機器學習或計算操作。在一實施例中,加速器112是射線追蹤加速器,其可用以與圖形處理器108執行射線追蹤操作。在一實施例中,外部加速器119可用以取代加速器112或與加速器112一起使用。
在若干實施例中,顯示器裝置111可連接到處理器102。顯示器裝置111可以是一或多內部顯示器裝置,如同在行動電子裝置或膝上型裝置或經由顯示器介面(例如,DisplayPort等)附接之外部顯示器裝置。在一實施例中,顯示器裝置111可以是頭戴式顯示器(HMD),諸如用於虛擬實境(VR)應用程式或擴增實境(AR)應用程式之立體顯示器裝置。
在若干實施例中,平台控制器集線器130賦能週邊裝置得以經由高速I/O匯流排而連接到記憶體裝置120與處理器102。I/O週邊包括,但不限於,音訊控制器146、網路控制器134、韌體介面128、無線收發器126、觸控感測器125、資料儲存裝置124(例如,非揮發性記憶體、揮發性記憶體、硬碟驅動器、快閃記憶體、NAND、3D NAND、3D XPoint等等)。資料儲存裝置124可經由儲存器介面(例如,SATA)或經由週邊匯流排(諸如,週邊組件互連匯流排(例如,PCI, PCI express))連接。觸控感測器125可包括觸控螢幕感測器、壓力感測器或指紋感測器。無線收發器126可以是Wi-Fi收發器、藍牙收發器或行動網路收發器(諸如3G、4G、5G或長程演進(LTE)收發器)。韌體介面128賦能與系統韌體之通訊,且可例如是統一的可擴展韌體介面(UEFI)。網路控制器134可賦能到有線網路之網路連接。在若干實施例中,高性能網路控制器(未示出)與介面匯流排110耦接。在一實施例中,音訊控制器146是多通道高解析音訊控制器。在一實施例中,系統100包括可選之傳統I/O控制器140,用於耦合傳統(例如,個人系統2(PS/2))裝置到系統。平台控制器集線器130也可連接到一或多通用串列匯流排(USB)控制器142連接輸入裝置(諸如,鍵盤與滑鼠143之組合、攝影機144或其他USB輸入裝置)。
應瞭解,示出系統100是例示性且非限制性,因為經不同組態的其他類型之資料處理系統也可以被使用。舉例而言,記憶體控制器116與平台控制器集線器130之實例可整合到一離散外部圖形處理器(諸如,外部圖形處理器118)中。在一實施例中,平台控制器集線器130及/或記憶體控制器116可以在一或多處理器102外部。舉例而言,系統100可包括外部記憶體控制器116與平台控制器集線器130,其可經組態成在系統晶片組內與處理器102通訊的記憶體控制器集線器與週邊控制器集線器。
舉例而言,可使用其上設有設計用於增加熱性能之CPU、記憶體與其他組件等組件之電路版(「板(sled)」)。在若干例示性中,處理組件(諸如處理器)是位於板頂側上,同時靠近位於該板底側上之記憶體(諸如DIMM)。由於此種設計所提供之增強氣流之結果,造成組件可以相較於典型系統在較高頻率與功率層級而運作,藉此增加性能。此外,板經組態以盲目搭接到機架中的電力與資料通訊電纜,藉此增強其可以快速移除、升級、再安裝及/或替換之能力。相似的,位於板上之個別組件(諸如,處理器、加速器、記憶體及資料儲存驅動器)由於其彼此間增加的間距而經組態成可以被輕易升級。在說明性實施例中,組件額外地包括硬體證實特徵,以證明其真實性。
資料中心可運用單一網路架構(「(構造fabric)」),該架構支援多種其他的網路架構,包括乙太網路與全路徑。板可經由光纖而耦接到切換器,其比典型雙絞線電纜(例如,類別5、類別5e、類別6等)提供較高的頻寬與較低的潛時。由於該高頻寬、低潛時互連以及網路架構,因此資料中心在使用中可以池化資源,例如記憶體,加速器(例如GPU,圖形加速器,FPGA,ASIC,類神經網路及/或人工智慧加速器等)以及實體分散式的資料儲存驅動器,並根據需要將它們提供給計算資源(例如,處理器),從而使計算資源能夠像其是區域(local)資源般一樣存取的池化資源。
電力供應或電源可提供電壓及/或電流到系統100或本文所述之任何組件或系統。在一例示性中,電力供應包括AC轉DC(交流電轉直流電)轉接頭,用以插入牆壁插座中。此種AC電源可以是可再生能源(例如太陽能)電源。在一例示性中,電源包括DC電源,諸如外部AC轉DC轉換器。在一實例中,電源或電力供應包括無限充電硬體,用以經由接近充電場來充電。在一實例中,電源可包括內部電池、交流電電源、基於運動之電源、太陽能電源或燃料電池電源。
圖2A-2D描繪由本文所述實施例所提供的計算系統與圖形處理器。圖2A-2D之元件具有相同參考編號(或名稱),因為本文中任意其他圖式之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。
圖2A是處理器200之實施例之方塊圖,處理器200具有一或多處理器核心202A-202N、整合記憶體控制器214、以及整合圖形處理器208。處理器200可包括附加核心,高達並包括由虛線框所表示之附加核心202N。各處理器核心202A-202N包括一或多內部快取單元204A-204N。在若干實施例中,各處理器核心亦可存取一或多共享快取單元206。內部快取單元204A-204N與共享快取單元206表示處理器200內快取記憶體階層。快取記憶體階層可包括各處理器核心內至少一層級之指令與資料快取,以及一或多層級之共享中層級快取,諸如Level 2(L2)、Level 3(L3)、Level 4(L4)或其他層級之快取,其中在外部記憶體之前的最高層級快取被分類成LLC。在若干實施例中,快取同調性邏輯維持各種快取單元206與204A-204N之間的同調性。
在若干實施例中,處理器200也可包括一組一或多匯流排控制器單元216與系統代理器核心210。一或多匯流排控制器單元216管理一組週邊匯流排,諸如一或多PCI或PCI express匯流排。系統代理器核心210對各種處理器組件提供管理功能。在若干實施例中,系統代理器核心210包括一或多整合記憶體控制器214,以管理對各種外部記憶體裝置(未示出)之存取。
在若干實施例中,處理器核心202A-202N中一或多者包括支援同時多重執行緒。在此種實施例中,系統代理器核心210包括在多重執行緒處理期間用於協調與操作核心202A-202N之組件。系統代理器核心210可額外地包括功率控制單元(power control unit,PCU),其包括邏輯與組件以調節處理器核心202A-202N與圖形處理器208之電力狀態(power state)。
在若干實施例中,處理器200額外地包括圖形處理器208,以執行圖形處理操作。在若干實施例中,圖形處理器208與該組共享快取單元206及系統代理器核心210耦接,該系統代理器核心210包括一或多整合記憶體控制器214。在若干實施例中,系統代理器核心210也包括顯示器控制器211,以驅動圖形處理器對一或多耦接顯示器進行輸出。在若干實施例中,顯示器控制器211也可是分離模組,其經由至少一互連而耦接到圖形處理器,或可整合在圖形處理器208內。
在若干實施例中,環式互連單元212是用以耦接該處理器200之內部組件。然而,也可使用替代的互連單元,諸如點對點互連、切換的互連、或包括本技術領域中已知的其他技術。在若干實施例中,圖形處理器208經由I/O鏈路213來與環狀互連212耦接。
例示性I/O鏈接213表示I/O互連之多種變體之至少一者,包括封裝上I/O互連,其促進各種處理器組件與高性能嵌入式記憶體模組218(諸如eDRAM模組)之間的通訊。在若干實施例中,處理器核心202A-202N與圖形處理器208各可使用嵌入式記憶體模組218作為共享最終層級快取。
在若干實施例中,處理器核心202A-202N是執行相同指令集架構之同質核心。在另一實施例中,處理器核心202A-202N就指令集架構(ISA)方面而論是異質的,其中一或多處理器核心202A-202N執行第一指令集,而其他核心中至少一者執行第一指令集之一子集或一不同指令集。在一實施例中,處理器核心202A-202N就微架構方面而言是異質的,其中具有相對較高電力消耗之一或多核心與具有較低電力消耗之一或多功率核心相耦接。在一實施例中,處理器核心202A-202N就計算能力方面而言是異質的。額外地,處理器200可以被實作在一或多晶片上或實作成除了其他組件外亦具有描繪組件之SoC積體電路。
圖2B是根據本文所述若干實施例的圖形處理核心219之硬體邏輯的方塊圖。圖2B之元件具有相同參考編號(或名稱),因為本文中任意其他圖式之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。圖形處理器核心219(有時被稱作核心切片)可以是模組化圖形處理器中一或多個圖形核心。圖形處理器核心219是一圖形核心切片之例示實例,以及本文所述圖形處理器基於目標功率與性能包絡可包括多個圖形核心切片。各圖形處理器核心219可包括與多個子核心221A-221F(亦被稱為子切片)耦接之固定功能區塊230,該次核心包括通用之模組化區塊與固定功能邏輯。
在若干實施例中,固定功能區塊230包括可被圖形處理器核心219中所有子核心共享之幾何/固定功能管線231,例如在較低性能及/或較低功率圖形處理器實作中。在各種實施例中,幾何/固定功能管線231包括3D固定功能管線(例如,如圖3與圖4中3D管線312,如下述)、視訊前端單元、執行緒生成器與執行緒調度器、以及統一返回緩衝器管理器,其管理統一返回緩衝器(例如,圖4中統一返回緩衝器418,如下述)。
在一實施例中,固定功能區塊230也包括圖形SoC介面232、圖形微控制器233以及媒體管線234。圖形SoC介面232提供圖形處理器核心219與系統單晶片積體電路內其他處理器核心之間的介面。圖形微控制器233是可程式子處理器,其可組態以管理圖形處理器核心219中各種功能,包括執行緒調度、排程與搶占。媒體管線234(例如,圖3與圖4之媒體管線316)包括用以促進多媒體資料之解碼、編碼、預處理及/或後處理之邏輯,該多媒體資料包括影像與視訊資料。經由到子核心221-221F內計算或取樣邏輯之請求,媒體管線234實作媒體操作。
在一實施例中,SoC介面232賦能圖形處理器核心219以與通用應用處理器核心(例如,CPU)及/或SoC內其他組件進行通訊,該其他組件包括諸如共享最終層級快取記憶體、系統RAM及/或嵌入式晶載或封裝上DRAM等記憶體階層元件。SoC介面232也可賦能與SoC內的固定功能裝置(諸如攝影機成像管線)之通訊,並賦能使用及/或實作全局記憶體原子,該全局記憶體原子可以在圖形處理器核心219與SoC內CPU之間被共享。SoC介面232也可實作對圖形處理器核心219之功率管理控制,並賦能在圖形核心219之時鐘域與SoC內其他時鐘域之間的介接。在一實施例中,SoC介面232賦能從命令串流器和總體執行緒調度器接收命令緩衝,該命令串流器和總體執行緒調度器被組態為向圖形處理器內的一個或多個圖形核心中的每一者提供命令(command)和指令(instruction)。當將執行媒體操作時,命令和指令可以被調度到媒體管線234;或當將執行圖形處理操作時,命令和指令可以被調度到幾何與固定功能管線(例如,幾何與固定功能管線231、幾何與固定功能管線237)。
圖形微控制器233可經組態以執行針對圖形處理器核心219之各種排程與管理工作。在一實施例中,圖形微控制器233可對執行單元(EU)陣列222A-222F內各種圖形並行引擎執行圖形及/或計算工作量排程,該224A-224F在子核心221A-221F內。在本排程模型中,對SoC之CPU核心(包括圖形處理器核心219)進行執行之主機軟體可提交多個圖形處理器門鈴之一的工作量,這會在適當的圖形引擎上調用排程操作。排程操作包括判定接著要運行哪個工作量、提交工作量給命令串流器、搶佔在引擎上運行之現存工作量、監控工作量之進度以及當工作量完成時通知主機軟體。在一實施例中,圖形微控制器233也可促進圖形處理器核心219之低電力或閒置狀態,提供圖形處理器核心219有關橫跨低電力狀態轉換,並獨立於作業系統及/或系統上圖形驅動器軟體,能夠節省並復原圖形處理器核心219內暫存器之能力。
圖形處理器核心219可具有比所描繪子核心221A-221F更多或更少之可高達N個模組化子核心。針對各組N個子核心,圖形處理器核心219也可包括共享功能邏輯235、共享記憶體及/或快取記憶體236、幾何/固定功能管線237、以及附加的固定功能邏輯238,以加速各種圖形與計算處理操作。共享功能邏輯235可包括與圖4共享功能邏輯420相關聯之邏輯單元(取樣器、數學及/或執行緒間通訊邏輯),其可被圖形處理器核心219內各N個子核心共享。共享及/或快取記憶體236可以是針對圖形處理器核心219內該組N個子核心221A-221F之最終層級快取,並且也可作用如可由多個子核心可存取之共享記憶體。可以包括幾何/固定功能管線237,以取代在固定功能區塊230中的幾何/固定功能管線231,並且管線237可包括相同或相似邏輯單元。
在一實施例中,圖形處理器核心219包括附加固定功能邏輯238,該附加固定功能邏輯238可包括各種被圖形處理器核心219所用之固定功能加速邏輯。在一實施例中,附加固定功能邏輯238包括附加幾何管線,用於位置唯一渲染(position-only shading)。在位置唯一渲染中,存在兩個幾何管線、在幾何/固定功能管線238與231內之完整幾何管線、以及剔除管線,該剔除管線是可被包括在附加固定功能邏輯238內之附加的幾何管線。在一實施例中,剔除管線是完整幾何管線之精簡版本。完整管線與剔除管線可執行相同應用程式之不同實例,各實例具有不同上下文。位置唯一渲染可隱藏長時間剔除運行的三角形,從而使渲染(shading)在某些情況下可以更早完成。舉例而言且在一實施例中,附加固定功能邏輯238內之剔除管線邏輯可與主應用程式並行執行位置渲染器,並通常比完整管線較快產生關鍵結果,這是因為剔除管線僅提取並渲染頂點之位置屬性,並且其無須執行像素之柵格化與演色(render)到訊框緩衝器。剔除管線可使用產生之關鍵結果以計算所有三角形之能見度資訊,無須考慮此等三角形是否被剔除。完整管線(其在本實例下可以被稱為重播管線)可消費能見度資訊以跳過剔除之三角形,以僅將最終通過柵格化階段之可見三角形進行渲染。
在一實施例中,附加固定功能邏輯238也可包括機器學習加速邏輯,諸如固定功能矩陣乘法邏輯,用於包括對機器學習訓練或推理之最佳化等實作。
在各圖形子核心221A-221F內包括一組執行資源,該執行資源可用以執行圖形、媒體與回應於由圖形管線、媒體管線或渲染器程式之請求而進行計算操作。圖形子核心221A-221F包括多EU陣列222A-222F、224A-224F、執行緒調度與執行緒間通訊(TD/IC)邏輯223A-223F、3D(例如,紋理)取樣器225A-225F、媒體取樣器206A-206F、渲染器處理器227A-227F、以及共享的區域記憶體(SLM)228A-228F。EU陣列222A-222F、224A-224F各包括多個執行單元,其為能夠執行浮點與整數/固定點邏輯操作之通用圖形處理單元,以服務於圖形、媒體或計算操作,其包括圖表、媒體或計算渲染器程式。TD/IC邏輯223A-223F對子核心內之執行單元執行區域執行緒調度與執行緒控制操作,並促進在子核心之執行單元上執行之執行緒之間的通訊。3D取樣器225A-225F可讀取紋理或其他3D圖形相關資料到記憶體中。3D取樣器可基於組態樣本狀態與和給定紋理相關之紋理格式,以不同地讀取紋理資料。媒體取樣器206A-206F可基於與媒體資料相關聯之類型與格式來執行相似的讀取操作。在一實施例中,各圖形子核心221A-221F可交替地包括統一3D與媒體取樣器。在子核心221A-221F中各者內執行單元上執行之執行緒可使用各子核心內之共享區域記憶體228A-228F,以賦能在執行緒群組內執行之執行緒可以晶載記憶體之共用池來進行執行。
圖2C描繪圖形處理單元(GPU)239,其包括被配置成多核心群組240A-240N之專用的數組圖形處理資源。雖然僅提供單一個多核心群組240A的細節,但應瞭解其他的多核心群組240B-240N可配備有相同或相似組之圖形處理資源。
如所述,多核心群組240A可包括一組圖形核心243、一組張量核心244、以及一組射線追蹤核心245。排程器/調度器241排程與調度圖形執行緒以用於在各核心243、244與245上執行。當執行圖形執行緒時,一組暫存器檔案242會將被核心243、244、245所用之運算元值進行儲存。這可包括例如,用於儲存整數值之整數暫存器、用於儲存浮點值之浮點暫存器、用於儲存緊縮資料元件(整數及/或浮點資料元件)之向量暫存器、以及用於儲存張量/矩陣值之磚暫存器(tile registers)。在一實施例中,磚暫存器被實作成是組合之數組向量暫存器。
一或多組合之Level 1(L1)快取與共享記憶體單元247會將圖形資料(諸如,紋理資料、頂點資料、像素資料、射線資料、邊界體積資料等)區域儲存在各多核心群組240A內。一或多紋理單元247也可用以執行紋理化操作,諸如紋理映射與取樣。被多核心群組240A-240N全部或其一子集所共享之Level 2(L2)快取253儲存圖形資料及/或指令以用於多個並行圖形執行緒。如所示,L2快取253可橫跨複數個多核心群組240A-240N被共享。一或多記憶體控制器248將GPU 239耦接到記憶體249,該記憶體可以是系統記憶體(例如,DRAM)及/或專用圖形記憶體(例如,GDDR6記憶體)。
輸入/輸出(I/O)電路250將GPU 239耦接到諸如數位訊號處理器(DSP)、網路控制器或使用者輸入裝置等一或多I/O裝置252。晶載互連可用以將I/O裝置252耦接到GPU 239與記憶體249。I/O電路250之一或多I/O記憶體管理單元(IOMMU)251將I/O裝置252直接耦接到系統記憶體249。在一實施例中,IOMMU 251管理多組之頁表,以將虛擬位址映射到系統記憶體249中的實體位址。在本實施例中,I/O裝置252、CPU 246與GPU 239可共享相同的虛擬位址空間。
在一實作中,IOMMU 251支援虛擬化。在本情況下,其可管理第一組之頁表,以將訪客/圖形虛擬位址映射到訪客/圖形實體位址,以及管理第二組之頁表,以將訪客/圖形實體位址映射到系統/主機實體位址(例如,在系統記憶體249內)。第一與第二組之頁表中各者的基礎位址可以被儲存在控制暫存器中,並在上下文切換器上替換掉(例如,以便將新的上下文提供對相關組的頁面表的存取)。雖然在圖2C中未示出,但核心243、244、245中各者及/或多核心群組240A-240N中各者可包括轉譯後備緩衝器(TLB)以快取訪客虛擬到訪客實體轉譯、訪客實體到主機實體轉譯、以及訪客虛擬到主機實體轉譯。
在一實施例中,CPU 246、GPU 239以及I/O裝置252被整合到單一半導體晶片及/或晶片封裝上。描繪之記憶體249可以被整合到相同晶片上或可經由晶片外介面耦接到記憶體控制器248。在一實作中,記憶體249包含GDDR6記憶體,該GDDR6記憶體與其他實體系統層級記憶體共享相同的虛擬位址空間,雖然本發明之基本原理並不受限於特定實作。
在一實施例中,張量核心244包括經特定設計以執行矩陣運算之複數個執行單元,該運算為用以執行深度學習操作之基礎計算操作。舉例而言,同時矩陣乘法運算可用於類神經網路訓練與推理。張量核心244可透過使用各式各樣運算元精度來執行矩陣處理,該各式各樣運算元精度包括單一精度浮點(例如,32位元)、半精度浮點(例如,16位元)、整數字(16位元)、位元組(8位元)以及半位元組(4位元)。在一實施例中,類神經網路實作擷取各演色場景之特徵,潛在地組合來自多個訊框之細節,並建構出一高品質之最終影像。
在深度學習實作中,並行矩陣乘法工作可能被排程成在張量核心244上執行。明確而言,類神經網路之訓練需要顯著量之矩陣點積運算。為了處理N x N x N矩陣乘法之內積公式,張量核心244可包括至少N個點積處理元件。在矩陣乘法開始之前,一完整的矩陣被載入到磚暫存器中,以及各週期載入至少一行之第二矩陣持續N週期。各週期中有N個點積被處理。
取決於特定的實現,可以以不同的精度儲存矩陣元件,包括16位元字,8位元位元組(例如,INT8)和4位元半位元組(例如,INT4)。可以為張量核心244指定不同的精度模式,以確保將最有效的精度用於不同的工作量(例如,推理工作量可以容忍量化為位元組和半位元組)。
在一實施例中,射線追蹤核心245加速針對即時射線追蹤與非即時射線追蹤實作等兩者之射線追蹤操作。明確而言,射線追蹤核心245包括射線穿越/相交電路,用於使用邊界體積層次結構(BVH)執行射線穿越並識別射線之間的相交,以及包含在BVH體積中的基元。射線追蹤核心245也可包括用於執行深度測試與剔除之電路(例如使用Z緩衝器或相似配置)。在一種實施方式中,射線追蹤核心245與本文所述的影像去雜訊技術一起執行遍歷和相交操作,其至少一部份可在張量核心244上執行。例如,在一實施例中,張量核心244實作深度學習類神經網路以執行由射線追蹤核心245所產生的訊框之去雜訊。然而,CPU 246、圖形核心243、及/或射線追蹤核心245亦可實作全部或部分之去雜訊及/或深度學習演算法。
此外,如上述,可採用用以去雜訊之分散式方法,其中GPU 239是在透過網路或高速互連而與其他計算裝置耦接之計算裝置中。在本實施例中,互連計算裝置共享類神經網路學習/訓練資料,以改善總體系統學習對不同類型之影像訊框及/或不同圖形應用程式執行去雜訊之速度。
在一個實施例中,射線追蹤核心245處理所有的BVH遍歷和射線基元相交,這使圖形核心243免於每條射線執行成千上萬條指令的超載。在一實施例中,各射線追蹤核心245包括第一組之專用電路,其用於執行邊界框測試(例如,用於遍歷操作),以及包括第二組之專用電路,其用於執行射線三角形相交測試(例如,已經遍歷之相交射線)。因此,在一個實施例中,多核心群組240A可以簡單地發射射線探測器,並且射線追蹤核心245獨立執行射線遍歷和相交,並將命中資料(例如,命中,無命中,多命中等)返回到執行緒上下文。其他的核心243與244被釋放以執行其他的圖形或計算工作,而射線追蹤核心245執行遍歷與相交操作。
在一實施例中,各射線追蹤核心245包括遍歷單元以執行BVH測試操作,以及包括相交單元,其執行射線基元相交測試。相交單元產生「命中」、「無命中」、或「多命中」回應,其被提供到適當執行緒。在遍歷與相交操作中,其他核心(例如,圖形核心243與張量核心244)之執行資源被釋放,以執行其他形式之圖形工作。
在一下文特定實施例中,使用一混合柵格化/射線追蹤方法,其中工作被分散在圖形核心243與射線追蹤核心245之間。
在一實施例中,射線追蹤核心245(及/或其他核心243與244)包括對射線追蹤指令集(諸如Microsoft的DirectX射線追蹤(DXR)(包括DispatchRays命令)以及射線產生、最接近命中、任何命中和未命中渲染器一樣,其可以為各物件分配唯一組的渲染器和紋理)之硬體支援。其他可以被射線追蹤核心245、圖形核心243與張量核心244所支援之射線追蹤平台是Vulkan 1.1.85。惟,應註明,本發明之基本原理並不受限於任何特定之射線追蹤ISA。
一般而言,各種核心245、244、243可支援射線追蹤指令集,該指令集包括用於射線產生、最接近命中、任何命中、射線基元相交、每基元與分層邊界框建構、未中、拜訪與例外之指令/功能。更明確地,一實施例包括射線追蹤指令,以執行以下功能:
射線產生-可以對各像素、樣本或其他使用者界定之工作分配執行射線產生指令。
最接近命中-最接近命中指令可以被執行以定位場景中射線與基元之最近相交點。
任何命中-任何命中指令識別出在場景內射線與基元之間的多個相交,並潛在地識別出一新的最接近相交點。
相交-相交指令執行射線基元相交測試並輸出結果。
每基元邊界框建構-此指令在給定基元或基元群組(例如當建構新的BVH或其他加速資料結構時)周圍建構邊界框。
未中-指示在場景內或在指定區之場景內,射線未中所有的幾何圖形。
拜訪-指示射線將遍歷之所有子體積。
例外-包括各種類型之例外處理程序(例如,針對各種錯誤條件而調用)。
圖2D是根據本文所述若干實施例的通用圖形處理單元(GPGPU)270之方塊圖,該GPGPU可組態成圖形處理器及/或計算加速器。經由一或多系統及/或記憶體匯流排,GPGPU 270可與主機處理器(例如,一或多CPU 246)與記憶體271、272互連。在一實施例中,記憶體271是可以與一個或多個CPU 246共享的系統記憶體,而記憶體272是專用於GPGPU 270的裝置記憶體。在一實施例中,GPGPU 270與裝置記憶體 272內之組件可以被映射到可以由一或多CPU 246存取之記憶體位址中。到記憶體271與272之存取可經由記憶體控制器268而促進。在一實施例中,記憶體控制器268包括內部直接記憶體存取(DMA)控制器269或可包括用以執行其否則會被DMA控制器執行的操作之邏輯。
GPGPU 270包括多個快取記憶體,包括L2快取253、L1快取254、指令快取255、以及共享記憶體256,其至少一部份一可分割作快取記憶體。GPGPU 270也包括多個計算單元260A-260N。各計算單元260A-260N包括一組之向量暫存器261、純量暫存器262、向量邏輯單元263、以及純量邏輯單元264。計算單元260A-260N也可包括區域(local)共享記憶體265以及程式計數器266。計算單元260A-260N可以與恆定快取267(其可用以儲存恆定資料)耦接,該恆定資料為在核心或在GPGPU 270上執行渲染器程式運行期間不會改變之資料。在一實施例中,恆定快取267是純量資料快取且快取資料可以直接被提取到純量暫存器262中。
在操作期間,一或多CPU 246可將命令寫入到已映射到可存取位址空間中的GPGPU 270中暫存器或記憶體中。命令處理器257可從暫存器或記憶體讀取命令並判定該等命令在GPGPU 270內將如何被處理。執行緒調度器258可接著用以調度執行緒到計算單元260A-260N以執行此等命令。各計算單元260A-260N可獨立於其他的計算單元執行執行緒。額外地,各計算單元260A-260N可獨立組態用於條件式計算並可條件式輸出計算之結果到記憶體。當提交命令完成時,命令處理器257可中斷一或多CPU 246。
圖3A-3C描繪由本文所述實施例所提供之附加圖形處理器與計算加速器架構之方塊圖。圖3A-3C中具有與本文中任意其他圖式之元件相同之參考編號(或名稱)之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。
圖3A是圖形處理器300之方塊圖,其可以是離散圖形處理單元或可以是整合有複數個處理核心之圖形處理器,或是其他的半導體裝置,諸如但不限於記憶體裝置或網路介面。在若干實施例中,圖形處理器經由記憶體映射之I/O介面來與圖形處理器上之暫存器通訊,並具有置於處理器記憶體中的命令。在若干實施例中,圖形處理器300包括記憶體介面314以存取記憶體。記憶體介面314可以是到區域記憶體、到一或多內部快取、到一或多共享外部快取、及/或到系統記憶體之介面。
在若干實施例中,圖形處理器300也包括顯示器控制器302,以驅動顯示器輸出資料到顯示器裝置318。顯示器控制器302包括用於一或多用於顯示器的覆蓋平面之硬體以及多層視訊或使用者介面元件之組成。顯示器裝置318可以是內部或外部顯示器裝置。在一實施例中,顯示器裝置318是頭戴式顯示器裝置,諸如虛擬實境(VR)顯示器裝置或擴增實境(AR)顯示器裝置。在若干實施例中,圖形處理器300包括視訊編解碼器引擎306,以將媒體編碼、解碼或轉碼自、或在一或多媒體編碼格式之間,該格式包括但不限於諸如MPEG-2的移動畫面專家群組(MPEG)格式,諸如H.264/MPEG-4 AVC、H.265/ HEVC的進階視訊編碼(AVC)格式,開放媒體聯盟(AOMedia)VP8、VP9等以及電影電視工程師協會(SMPTE)421M/VC-1和聯合照片專家群組(JPEG)格式(例如JPEG,和運動JPEG(MJPEG)格式)。
在若干實施例中,圖形處理器300包括區塊影像轉移(BLIT)引擎304,以執行二維(2D)光柵器操作,其包括例如位元邊界區塊轉移。然而,在一實施例中,2D圖形操作是使用圖形處理引擎(GPE)310之一或多組件來執行。在若干實施例中,GPE 310是用於執行圖形操作(包括三維(3D)圖形操作與媒體操作)之計算引擎。
在若干實施例中,GPE 310包括用於執行3D操作之3D管線312,該操作諸如使用對3D基元形狀(例如,矩形、三角形等等)作用之處理功能來進行演色三維影像與場景。3D管線312包括可程式與固定功能元件,其執行在該元件內之各種工作及/或生成到3D/媒體子系統315之執行緒。在3D管線312可用於執行媒體操作同時,GPE 310之實施例也包括專門用以執行媒體操作(諸如視訊後處理與影像增強)之媒體管線316。
在若干實施例中,媒體管線316包括用以執行一或多專用媒體操作(諸如,視訊解碼加速、視訊去交錯與視訊編碼加速)之固定功能或可程式邏輯單元,以取代或代表視訊編解碼器引擎306。在若干實施例中,媒體管線316額外地包括執行緒生成單元在3D/媒體子系統315上執行之執行緒。生成之執行緒在3D/媒體子系統315中所包括一或多圖形執行單元上執行媒體操作之計算。
在若干實施例中,3D/媒體子系統315包括用於執行由3D管線312與媒體管線316所生成執行緒之邏輯。在一實施例中,管線傳送執行緒執行請求到3D/媒體子系統315,其包括執行緒調度邏輯用於仲裁與調度各種請求到可用執行緒執行資源。執行資源包括一陣列之圖形執行單元,該圖形執行單元用以處理3D與媒體執行緒。在若干實施例中,3D/媒體子系統315包括針對執行緒指令與資料之一或多內部快取。在若干實施例中,子系統也包括共享記憶體(包括暫存器與可定址記憶體)以在執行緒之間共享資料並用以儲存輸出資料。
圖3B描繪根據本文所述實施例之具有拼接架構(tiled architecture)的圖形處理器320。在一實施例中,圖形處理器320包括圖形處理引擎叢集322,該叢集在圖形引擎磚310A-310D中具有多實例之圖3A的圖形處理引擎310。各圖形引擎磚310A-310D可以經由一組磚互連323A-323F來互連。各圖形引擎磚310A-310D經由記憶體互連325A-325D也可連接到記憶體模組或記憶體裝置326A-326D。記憶體裝置326A-326D可使用任何圖形記憶體技術。例如,記憶體裝置326A-326D可以是圖形雙重資料率(GDDR)記憶體。在一實施例中,記憶體裝置326A-326D是高頻寬記憶體(HBM)模組,其可以與其各別的圖形引擎磚310A-310D是在晶粒上。在一實施例中,記憶體裝置326A-326D是推疊記憶體裝置,其可以推疊在其各別的圖形引擎磚310A-310D上。在一實施例中,各圖形引擎磚310A-310D與相關聯記憶體326A-326D常駐於分離的小晶片上,該小晶片接合到基底晶粒(base die)或基底基板(base substrate),將進一步於圖11B-11D中詳述。
圖形處理引擎叢集322可以與晶載或封裝上構造互連324連接。構造互連324可賦能在圖形引擎磚310A-310D與諸如視訊編解碼器306與一或多複製引擎304之組件之間的通訊。複製引擎304可用以將資料移出、移入或在記憶體裝置326A-326D與在圖形處理器320外部的記憶體(例如,系統記憶體)之間移動。構造互連324也可用以互連圖形引擎磚310A-310D。圖形處理器320可選地包括顯示器控制器302,以賦能與外部顯示器裝置318之連接。圖形處理器也可經組態成圖形或計算加速器。在加速器組態中,顯示器控制器302與顯示器裝置318可以被省略。
圖形處理器320可經由主機介面328來連接到主機系統。主機介面328可賦能在圖形處理器320、系統記憶體及/或其他系統組件之間的通訊。主機介面328可以例如是 PCI express匯流排或其他類型之主機系統介面。
圖3C描繪根據本文所述實施例之計算加速器330。計算加速器330可以包括與圖3B之圖形處理器320架構上相似物,並且計算加速器被最佳化用於計算之加速。計算引擎叢集332可包括一組之計算引擎磚340A-340D,該組計算引擎磚包括最佳化以用於並行或基於向量之通用計算操作的執行邏輯。在若干實施例中,計算引擎磚340A-340D並不包括固定功能圖形處理邏輯,雖然在一實施例中,一或多計算引擎磚340A-340D可包括用以執行媒體加速之邏輯。計算引擎磚340A-340D可經由記憶體互連325A-325D以連接到記憶體326A-326D。記憶體326A-326D與記憶體互連325A-325D可以是與圖形處理器320相似之技術,或可以是與其不同之技術。圖形計算引擎磚340A-340D也可經由一組之磚互連323A-323F而互連並且可以透過構造互連324來連接及/或互連。在一實施例中,計算加速器330包括大的L3快取336,其可經組態成裝置寬度之快取。計算加速器330也可用與圖3B中圖形處理器320相似方式,經由主機介面328來連接到主機處理器與記憶體。 圖形處理引擎
圖4是根據若干實施例之圖形處理器之圖形處理引擎410的方塊圖。在一實施例中,圖形處理引擎(GPE)410是一版本之圖3A所示GPE 310,且也可表示圖3B之圖形引擎磚310A-310D。圖4中具有與本文中任意其他圖式之元件相同參考編號(或名稱)之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。舉例而言,描繪圖3A之3D管線312與媒體管線316。媒體管線316在若干實施例之GPE 410中是可選的並且可能沒有被明示包括在GPE 410內。舉例而言,且在至少一實施例中,分離的媒體及/或影像處理器經耦接到GPE 410。
在若干實施例中,GPE 410耦接到或包括命令串流器403,該命令串流器403將命令串流提供到3D管線312及/或媒體管線316。在若干實施例中,命令串流器403是與記憶體(其可以是系統記憶體,或一或多內部快取記憶體與共享快取記憶體)耦接。在若干實施例中,命令串流器403接收來自記憶體之命令並將該命令傳送到3D管線312及/或媒體管線316。命令是提取自環狀緩衝器的指引(directive),該環狀緩衝器儲存針對3D管線312與媒體管線316之命令。在一實施例中,環狀緩衝器可額外地包括儲存數批次之多個命令的批次命令緩衝器(batch command buffer)。針對3D管線312之指令也可包括對記憶體中所儲存資料之參照,該資料諸如但不限於針對3D管線312之頂點與幾何資料及/或針對媒體管線316之影像資料與記憶體物件。3D管線312與媒體管線316透過經由各別的管線內邏輯執行操作,或透過調度一或多執行緒到圖形核心陣列414來處理命令與資料。在一實施例中,圖形核心陣列414包括一或多區塊之圖形核心(例如,圖形核心415A與415B),各區塊包括一或多圖形核心。各圖形核心包括一組之圖形執行資源,該資源包括用以執行圖形與計算操作之通用與圖形特定執行邏輯,以及固定功能紋理處理及/或機器學習與人工智慧加速邏輯。
在各種實施例中,3D管線312可包括固定功能與可程式邏輯以透過處理指令與調度執行緒到圖形核心陣列414,來處理一或多渲染器程式,諸如頂點渲染器、幾何渲染器、像素渲染器、片段渲染器、計算渲染器或其他的渲染器程式。圖形核心陣列414提供統一區塊之執行資源,用於在處理此等渲染器程式中使用。在圖形核心陣列414之圖形核心415A-414B內之多功能執行邏輯(例如,執行單元)包括對各種3D API渲染器語言之支援,並可執行與多個渲染器相關之多個同時執行緒。
在若干實施例中,圖形核心陣列414包括用以執行媒體功能(諸如,視訊及/或影像處理)之執行邏輯。在一實施例中,執行單元包括可程式之通用邏輯,以除了圖形處理操作外亦執行並行通用計算操作。通用邏輯可並行或結合圖1之處理器核心107或圖2A之核心202A-202N內之通用邏輯執行處理操作。
由在圖形核心陣列414上執行的執行緒產生之輸出資料可將資料輸出到統一返回緩衝器(URB)418中之記憶體。URB 418可儲存針對多執行緒之資料。在若干實施例中,URB 418可用以在圖形核心陣列414上執行的不同執行緒之間傳送資料。在若干實施例中,URB 418可額外地被用於在圖形核心陣列與共享功能邏輯420內的固定功能邏輯上執行緒之間同步。
在若干實施例中,圖形核心陣列414可縮放,以使得陣列包括一變數數量之圖形核心,各取決於目標功率與GPE 410之性能層級而具有一變數數量之執行單元。在一實施例中,執行資源是動態可縮放的,以使得執行資源可視需求被賦能或去能。
圖形核心陣列414與包括多個資源之共享功能邏輯420耦接,該多個資源在圖形核心陣列中圖形核心之間共享。在共享功能邏輯420內之共享功能是對圖形核心陣列414提供專用互補功能之硬體邏輯單元。在各種實施例中,共享功能邏輯420包括但不限於取樣器421、數學422與執行緒間通訊(ITC)423邏輯。額外地,若干實施例實作在共享功能邏輯420內之一或多快取425。
至少在對給定的專用功能的需求不足以包括在圖形核心陣列414中的情況下,實作共享功能。反之,專用功能的單個實例被實現為共享功能邏輯420中的獨立實體,並在圖形核心陣列414中的執行資源之間被共享。在圖形核心陣列414之間共享並被包括在圖形核心陣列414內之精確組之功能取決於實施例而不同。在若干實施例中,共享功能邏輯420內被圖形核心陣列414廣泛使用之特定共享功能可以被包括在圖形核心陣列414內共享功能邏輯416中。在各種實施例中,圖形核心陣列414內之共享功能邏輯416可包括共享功能邏輯420中的若干或全部邏輯。在一實施例中,共享功能邏輯420內所有的邏輯元件可以被複製到圖形核心陣列414之共享功能邏輯416中。在一實施例中,共享功能邏輯420被排除,以利圖形核心陣列414內之共享功能邏輯416。 執行單元
圖5A-5B說明執行緒執行邏輯500,其包括在根據本文所述實施例的圖形處理器核心中採用的一陣列之處理元件。圖5A-5B中具有與本文中任意其他圖式之元件相同參考編號(或名稱)之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。圖5A-5B描繪執行緒執行邏輯500之概觀,其可代表圖2B中各子核心221A-221F所描繪之硬體邏輯。圖5A表示通用圖形處理器內之執行單元,而圖5B表示可用於計算加速器內之執行單元。
如圖5A所描繪,在若干實施例中,執行緒執行邏輯500包括渲染器處理器502、執行緒調度器504、指令快取506、可縮放執行單元陣列包括複數個執行單元508A-508N、取樣器510、共享區域記憶體511、資料快取512、以及資料埠514。在一實施例中,透過基於工作量之計算需求賦能或去能一或多執行單元(例如,執行單元508A、508B、508C、508D、從508N-1到508N中任一者),可縮放執行單元陣列可被動態縮放。在一實施例中,所包括組件經由互連構造被互連,該互連構造將各組件鏈接在一起。在若干實施例中,執行緒執行邏輯500包括透過一或多指令快取506、資料埠514、取樣器510與執行單元508A-508N以到達一或多到記憶體(諸如,系統記憶體或快取記憶體)之連接。在若干實施例中,各執行單元(例如,508A)是獨立可程式通用計算單元,其能夠執行多個同時硬體執行緒,同時與各執行緒並行處理多個資料元件。在各種實施例中,該陣列之執行單元508A-508N是可縮放以包括任意數量之個別執行單元。
在若干實施例中,執行單元508A-508N主要用以執行渲染器程式。渲染器處理器502可處理各種渲染器程式並經由執行緒調度器504可將與渲染器程式相關之執行緒進行調度。在一實施例中,執行緒調度器包括邏輯,以對來自圖形和媒體管線的執行緒發起請求進行仲裁,並在執行單元508A-508N中的一個或多個執行單元上實例化所請求的執行緒。舉例而言,幾何管線可調度頂點、曲面細分或幾何渲染器到執行緒執行邏輯以供處理用。在若干實施例中,執行緒調度器504也可處理來自執行渲染器程式之運行時間執行緒生成請求。
在若干實施例中,執行單元508A-508N支援包括對許多標準3D圖形渲染器指令具原生支援之指令集,以使得來自圖形庫(例如,Direct 3D與OpenGL)之渲染器程式可以最小的轉譯而被執行。執行單元支援頂點與幾何處理(例如,頂點程式、幾何程式、頂點渲染器)、像素處理(例如,像素渲染器、片段渲染器)與通用處理(例如,計算與媒體渲染器)。每個執行單元508A-508N能夠執行多發出之單指令多資料(SIMD)執行,並且多執行緒操作能夠在面對更高潛時的記憶體存取時實現高效的執行環境。在各執行單元內之各硬體執行緒具有專用高頻寬暫存器檔案與相關聯獨立執行緒狀態。執行是每時脈對管線多發出者,能夠執行整數、單一與雙重精準浮點運算、SIMD分支能力、邏輯運算、先驗操作、以及其他的雜項操作。在等待資料從記憶體或共享功能之一到來時,執行單元508A-508N內之依賴性邏輯會造成等待執行緒休眠,直到所請求資料已經被返回。雖然等待執行緒在休眠,但硬體資源可以致力於處理其他執行緒。舉例而言,在與頂點渲染器操作相關之延遲期間,執行單元可執行像素渲染器、片段渲染器、或其他類型之渲染器程式(包括不同頂點渲染器)之操作。各種實施例可以透過使用單指令多執行緒(SIMT)來代替SIMD的使用或除了SIMD的使用以外再使用SIMT而適用於執行。對SIMD核心或操作之參考亦可應用到SIMT或結合SIMT應用到SIMD。
在執行單元508A-508N中的各執行單元對數陣列之資料元件進行操作。資料元件之數量是「執行尺寸」或用於指令之通道的數量。執行通道是執行邏輯單元,用於資料元件存取、遮罩、與指令內的流程控制。通道之數量可能獨立於特定圖形處理器之實體算數邏輯單元(ALU)或浮點單元(FPU)之數量。在若干實施例中,執行單元508A-508N支援整數與浮點資料類型。
執行單元指令集包括SIMD指令。各種資料元件可做為緊縮資料類型被儲存在暫存器中,且執行單元將基於元件之資料尺寸來處理各種元件。舉例而言,當對256位元寬之向量進行操作時,256位元之向量被儲存在暫存器中且執行單元對向量操作如四個分離的54位元緊縮資料元件(四字(Quad-Word ,QW)尺寸資料元件)、八個分離的32位元緊縮資料元件(雙字(Double Word ,DW)尺寸資料元件)、十六個分離的16位元緊縮資料元件(字(Word,W)尺寸資料元件)或三十二個分離的8位元資料元件(位元組(Byte,B)尺寸資料元件)。然而,不同的向量寬度與暫存器尺寸是可行的。
在一實施例中,一或多執行單元可被組合成具有執行緒控制邏輯(507A-507N)之融合的執行單元509A-509N,該執行緒控制邏輯對融合EU為共用。多個EU可以被融合到EU群組中。融合的EU群組中的各EU可經組態以執行分離的SIMD硬體執行緒。在融合的EU群組中EU的數量可根據實施例而有所不同。額外地,可每EU執行各種SIMD寬度,包括但不限於SIMD8、SIMD16與SIMD32。各融合的圖形執行單元509A-509N包括至少兩個執行單元。舉例而言,融合的執行單元509A包括第一EU 508A、第二EU 508B、與執行緒控制邏輯507A,該執行緒控制邏輯507A可共用於第一EU 508A與第二EU 508B。執行緒控制邏輯507A控制在該融合的圖形執行單元509A上執行之執行緒,允許融合的執行單元509A-509N內之各EU可以透過使用共用的指令指標暫存器來進行執行。
一或多內部指令快取(例如,506)被包括在執行緒執行邏輯500中,以快取執行緒指令用於執行單元。在若干實施例中,包括一或多資料快取(例如,512)以在執行緒執行期間得以快取執行緒資料。在執行邏輯500上執行之執行緒也可將明確管理之資料儲存到共享區域記憶體511中。在若干實施例中,包括取樣器510以提供用於3D操作之紋理取樣以及用於媒體操作之媒體取樣。在若干實施例中,取樣器510包括專用紋理或媒體取樣功能,以在取樣處理期間並在提供取樣資料給執行單元之前,處理紋理或媒體資料。
在執行期間,經由執行緒生成與調度邏輯,圖形與媒體管線傳送執行緒啟動請求到執行緒執行邏輯500。一旦一群組之幾何物件已經被處理與光柵化成像素資料後,在渲染器處理器502內之像素處理器邏輯(例如,像素渲染器邏輯、片段渲染器邏輯等)被調用,以進一步計算輸出資訊並使得結果可以被寫入到輸出表面(例如,顏色緩衝器、深度緩衝器、模板緩衝器等)。在若干實施例中,像素渲染器或片段渲染器計算橫跨光柵化物件內插的各種頂點屬性之值。在若干實施例中,在渲染器處理器502內之像素處理器邏輯接著執行應用程式化介面(API)支援像素或片段渲染器程式。為執行渲染器程式,渲染器處理器502經由執行調度器504,調度執行緒到執行單元(例如508A)。在若干實施例中,渲染器處理器502使用取樣器510中的紋理取樣邏輯,以存取記憶體中所儲存紋理映射圖中的紋理資料。對紋理資料與輸入幾何資料進行之算數運算會計算出針對各幾何片段之像素顏色資料,或從進一步處理中丟棄一或多像素。
在若干實施例中,資料埠514對執行緒執行邏輯500提供一種記憶體存取機制,以輸出經處理資料到記憶體,用於在圖形處理器輸出管線上之進一步處理。在若干實施例中,資料埠514包括或耦接到一或多快取記憶體(例如,資料快取512),以經由資料埠快取資料用於記憶體存取。
在一實施例中,執行邏輯500也可包括射線追蹤器505,其可提供射線追蹤加速功能。射線追蹤器505可支援射線追蹤指令集,其包括用於產生射線之指令/函數。射線追蹤指令集可與由圖2C中射線追蹤核心245所支援之射線追蹤指令集相似或不同。
圖5B描繪根據實施例的執行單元508之例示性內部細節。圖形執行單元508可包括指令提取單元537、通用暫存器檔案陣列(GRF)524、架構暫存器檔案陣列(ARF)526、執行緒仲裁器522、傳送單元530、分支單元532、一組SIMD浮點單元(FPU)534、以及在一實施例中為一組專用整數SIMD ALU535。GRF 524與ARF 526包括在圖形執行單元508中主動(active)之各同時硬體執行緒相關之該組通用暫存器檔案與架構暫存器檔案。在一實施例中,在ARF 526中維持每執行緒架構狀態,而在執行緒執行期間所用之資料被儲存在GRF 524中。各執行緒之執行狀態(包括各執行緒之指令指標)可以被保存在ARF 526中執行緒特定暫存器中。
在一實施例中,圖形執行單元508具有一種架構,其為同時多重執行緒(SMT)與精細顆粒之交錯多重執行緒(IMT)之組合。架構具有模組化組態,其可以在設計時間基於每執行單元之同時執行緒之目標數量與暫存器之數量來進行微調,其中執行單元資源橫跨用以執行多個同時執行緒之邏輯被劃分。可由圖形執行單元508所執行的邏輯執行緒之數量並不受限於硬體執行緒之數量,且多個邏輯執行緒可以被分配給各硬體執行緒。
在一實施例中,圖形執行單元508可共同發出多個指令,其可各是不同的指令。圖形執行單元執行緒508之執行緒仲裁器522可調度指令到下述一者中:傳送單元530、分支單元532、或SIMD FPU 534,以供執行用。各執行緒可存取GRF 524內128個通用暫存器,其中各暫存器可儲存32位元組,該32位元組可作為32位元資料元件之SIMD 8元件向量來被進行存取。在一實施例中,各執行單元執行緒可存取GRF 524內之4Kbytes,雖然實施例未受限於此,且在其他實施例中可設有更多或更少的暫存器資源。在一實施例中,圖形執行單元508被分割成可獨立執行計算操作之七個硬體執行緒,雖然每執行單元之執行緒數量亦可根據實施例而有所變化。舉例而言,在一實施例中,支援多達16個硬體執行緒。在其中七個執行緒可存取4Kbytes之實施例中,GRF 524可儲存共有28Kbytes。其中16個執行緒可存取4Kbytes,該GRF 524可總共儲存64Kbytes。彈性定址模式可允許暫存器可以一起定址以有效建構較寬的暫存器或用以表示跨距矩形區塊資料結構。
在一實施例中,記憶體操作、取樣器操作與其他較長潛時系統通訊經由「傳送」指令而被調度,該傳送指令是被訊息傳遞發送單元530所執行。在一實施例中,分支指令被調度到專用分支單元532,以促進SIMD發散與最終收斂。
在一實施例中,圖形執行單元508包括一或多SIMD浮點單元(FPU)534以執行浮點運算。在一實施例中,FPU 534也支援整數計算。在一實施例中,FPU 534可SIMD執行高達M個數量之32位元浮點(或整數)運算,或SIMD執行高達2M個16位元整數或16位元浮點運算。在一實施例中,FPU之至少一者提供擴充數學能力以支援高產量先驗數學函數與雙重精度54位元浮點。在若干實施例中,也存在一組8位元整數SIMD ALU 535,且可被特定最佳化以執行與機器學習計算相關聯之操作。
在一實施例中,在圖形子核心群組中(例如,子切片),數陣列之多實例的圖形執行單元508可以被實例化。對於縮放性而言,產品架構師可選擇每子核心群組中執行單元之確切數量。在一實施例中,執行單元508可跨複數個執行通道執行指令。在進一步實施例中,在圖形執行單元508上執行之各執行緒是在不同通道上執行。
圖6描繪根據實施例的附加執行單元600。執行單元600可以是計算最佳化執行單元,例如用於圖3C之計算引擎磚340A-340D中,但不受限於此。執行單元600之變體也可用於如圖3B中圖形引擎磚310A-310D中。在一實施例中,執行單元600包括執行緒控制單元601、執行緒狀態單元602、指令提取/預取單元603、以及指令解碼單元604。執行單元600額外地包括其儲存可以被指定給執行單元內硬體執行緒的暫存器之暫存器檔案606。執行單元600額外地包括傳送單元607與分支單元608。在一實施例中,傳送單元607與分支單元608可與圖5B中圖形執行單元508之傳送單元530與分支單元532相似之方式操作。
執行單元600也包括計算單元610,該計算單元包括多個不同類型之功能單元。在一實施例中,計算單元610包括ALU單元611,該ALU單元包括一陣列之算數邏輯單元。ALU 單元611可經組態以執行64位元、32位元與16位元之整數與浮點運算。整數與浮點運算可被同時執行。計算單元610也可包括脈動陣列612與數學單元613。脈動陣列612包括寬度W 與深度D 之網路的資料處理單元,該資料處理單元可用以脈動方式執行向量或其他資料並行操作。在一實施例中,脈動陣列612可經組態以執行矩陣運算,諸如矩陣點積運算。在一實施例中,脈動陣列612支援16位元浮點運算,也支援8位元與4位元整數運算。在一實施例中,脈動陣列612可經組態以加速機器學習操作。在此種實施例中,脈動陣列612可經組態成支援浮點16位元浮點格式。在一實施例中,可包括數學單元613以利用比ALU單元611更高效與更低功率方式執行特定子集之數學運算。數學單元613可包括數學邏輯之變體,其可以在由其他實施例提供的圖形處理引擎的共享功能邏輯中找到(例如,圖4的共享功能邏輯420之數學邏輯422)。在一實施例中,數學單元613可經組態以執行32位元、與64位元之浮點運算。
執行緒控制單元601包括用以控制執行單元內執行緒之執行的邏輯。執行緒控制單元601可包括執行緒仲裁邏輯,以將執行單元600內執行緒之執行開始、停止與搶占。執行緒狀態單元602可用以儲存針對分配以在執行單元600上執行的執行緒之執行緒狀態。將執行緒狀態儲存在執行單元600內可以在該等執行緒被堵住或閒置時賦能執行緒之快速搶占。指令提取/預取單元603可以從較高層級執行邏輯之指令快取(如圖5A之指令快取506)提取指令。指令提取/預取單元603也可基於對正在執行執行緒之分析,來對要被載入到指令快取中的指令發出預取請求。指令解碼單元604可用以解碼要被計算單元執行之指令。在一實施例中,指令解碼單元604可用作次級解碼器,以將複雜指令解碼成組分的微操作。
執行單元600額外地包括暫存器檔案606,該暫存器檔案606可以被在執行單元600上執行之硬體執行緒使用。可在用以執行在執行單元600之計算單元610內之多個同時執行緒之邏輯上劃分暫存器檔案606中的暫存器。可由圖形執行單元600所執行的邏輯執行緒之數量並不受限於硬體執行緒之數量,且多個邏輯執行緒可以被分配給各硬體執行緒。基於支援硬體執行緒之數量,暫存器檔案606之尺寸可在不同實施例有所不同。在一實施例中,暫存器更名可用以將暫存器動態分配給硬體執行緒。
圖7是描繪根據若干實施例之圖形處理器指令格式700之方塊圖。在一或多實施例中,圖形處理器執行單元支援具有多種格式之指令的指令集。實線框描繪通常被包括在執行單元指令中的組件,而虛線則包括可選或僅包括在指令之子集合中的組件。在若干實施例中,所描述且描繪之指令格式700是巨集指令,其是被供應到執行單元之指令,而非在處理指令後從指令解碼所產生之微操作。
在若干實施例中,圖形處理器執行單元原生支援在128位元指令格式710中的指令。基於所選指令、指令選項與運算元數量,64位元緊密指令格式730對若干指令而言是可用的。原生128位元指令格式710提供對所有指令選項之可操作性,而若干選項與操作被限制在64位元格式730。取決於實施例不同,在64位元格式730中可用的原生指令可能有所變化。在若干實施例中,透過使用索引欄位713中一組索引值,指令部分被緊密化。執行單元硬體基於索引值參考一組之緊密表並使用緊密表輸出以重建原生指令成128位元指令格式710。可使用其他的指令尺寸與格式。
針對各種格式,指令運算碼712界定執行單元將執行之操作。橫跨各運算元之多個資料元件,執行單元並行執行各指令。舉例而言,回應加法指令,執行單元橫跨表示紋理元件或畫面元件之各顏色通道執行同時加法運算。預設上,執行單元橫跨運算元之所有資料通道執行各指令。在若干實施例中,指令控制欄位714賦能對特定執行選項之控制,諸如通道選擇(例如,預測)與資料通道順序(例如,拌和)。對於在128位元指令格式710之指令而言,執行尺寸欄位(exec-size field )716限制了將並行執行之資料通道的數量。在若干實施例中,執行尺寸欄位716並不能用於64位元緊密指令格式730中。
若干種執行單元指令可具有多達三個運算元,包括兩個來源運算元src0 720與src1 722及一個目的地運算元718。在若干實施例中,執行單元支援雙目的地指令,其中該等目的地中一者被暗示。資料調處指令可具有第三個來源運算元(例如,SRC2 724),其中指令運算碼712判定該來源運算元之數量。指令之最終來源運算元可以是與指令傳遞之立即(例如,硬編碼)值。
在若干實施例中,128位元指令格式710包括存取/位址模式欄位726,其例如指定是使用直接暫存器定址模式或使用間接暫存器定址模式。當使用直接暫存器定址模式時,藉由指令中的位元直接提供一或多運算元之暫存器位址。
在若干實施例中,128位元指令格式710包括存取/位址模式欄位726,其指定針對指令之位址模式及/或存取模式。在一實施例中,使用存取模式以界定針對指令之資料存取對準。若干實施例支援包括16位元組對準存取模式與1位元組對準存取模式等存取模式,其中存取模式之位元組對準判定了指令運算元之存取對準。舉例而言,當在第一模式中時,指令可使用位元組對準之定址以用於來源與目的地運算元,而在第二模式中時,指令可使用16位元組對準之定址以用於所有的來源與目的地運算元。
在一實施例中,存取/位址模式欄位7265 位址模式部分判定該指令是使用直接或間接定址。當使用直接暫存器定址模式時,指令中的位元直接提供一或多運算元之暫存器位址。當使用間接暫存器定址模式時,可基於指令中位址暫存器值與位址立即欄位來計算出一或多運算元之暫存器位址。
在若干實施例中,基於運算碼712位元欄位來將指令劃群組,以簡化運算碼解碼740。針對8位元運算碼,第4、5、與6位元允許執行單元可以判定運算碼類型。精準運算碼劃群組僅是一實例。在若干實施例中,移動與邏輯運算碼群組742包括資料移動與邏輯指令(例如,移動(mov)與比較(cmp))。在若干實施例中,移動與邏輯群組742共享五個最顯著位元(MSB),其中移動(mov)指令是在0000xxxxb之形式中且邏輯指令是在0001xxxxb之形式中。流程控制指令群組744(例如,呼叫,跳越(jmp))包括在0010xxxxb之形式(例如,0x20)中的指令。雜項指令群組746包括指令之混合,包括在0011xxxxb之形式(例如,0x30)中的同步指令(例如,等待,發送)。並行數學指令群組748包括在0100xxxxb之形式(例如,0x40)中的組件方面之算數指令(例如,加法、乘法(mul))。並行數學群組748橫跨資料通道並行執行算數運算。向量數學群組750包括在0101xxxxb形式(例如,0x50)中的算數指令(例如,dp4)。向量數學群組對向量運算元執行諸如點積計算等算數。在一實施例中,所描繪運算碼解碼740可用以判定執行單元中何部分將用以執行解碼的指令。舉例而言,若干指令可以被指定為脈動指令,其將由脈動陣列所執行。其他指令(諸如,射線追蹤指令(無示出))可以被路由到射線追蹤核心或一切片或分割之執行邏輯中的射線追蹤邏輯。 圖形管線
圖8是另一實施例的圖形處理器800之方塊圖。圖8中具有與本文中任意其他圖式之元件相同參考編號(或名稱)之元件可以本文中他處所述者相似的方式來操作或運作,但此並非限制性的。
在若干實施例中,圖形處理器800包括幾何管線820、媒體管線830、顯示器引擎840、執行緒執行邏輯850、以及演色輸出管線870。在若干實施例中,圖形處理器800是多核心處理系統中的圖形處理器,該系統包括一或多通用處理核心。圖形處理器是透過暫存器寫入到一或多控制暫存器(未示出)或經由經過環狀互連802而發送到圖形處理器800之命令所控制。在若干實施例中,環狀互連802將圖形處理器800耦接到其他的處理組件,諸如其他的圖形處理器或通用處理器。來自環狀互連802之命令被命令串流器803解譯,該命令串流器提供命令給幾何管線820或媒體管線830中個別組件。
在若干實施例中,命令串流器803將頂點提取器805之操作導向,該頂點提取器805從記憶體讀取頂點資料並執行由命令串流器803所提供的頂點處理命令。在若干實施例中,頂點提取器805提供頂點資料到頂點渲染器807,該頂點渲染器對各頂點執行座標空間變換與照光操作。在若干實施例中,透過經由執行緒調度器831來調度執行緒到執行單元852A-852B,頂點提取器805與頂點渲染器807執行頂點處理指令。
在若干實施例中,執行單元852A-852B是一陣列之向量處理器,其具有用於執行圖形與媒體操作之指令集。在若干實施例中,執行單元852A-852B具有附接之L1快取851,該L1快取是對各陣列特定或在數陣列之間共享者。快取可以經組態成資料快取、指令快取或被分割以包含不同分割之資料與指令之單一快取。
在若干實施例中,幾何管線820包括曲面細分組件以執行3D物件之硬體加速曲面細分。讚實施例中,可程式凸包渲染器811將曲面細分操作進行組態。可程式域渲染器817提供曲面細分輸出之後端評估。曲面細分器813在凸包渲染器811之方向上操作並包含特殊用途邏輯,以基於粗糙幾何模型產生一組詳細幾何物件,該粗糙幾何模型被作為輸入提供到幾何管線820。在若干實施例中,若無使用曲面細分,則曲面細分組件(例如,凸包渲染器811、曲面細分器813與域渲染器817)可以被旁路。
在若干實施例中,完整的幾何物件可以經由被調度到執行單元852A-852B之一或多執行緒被幾何渲染器819處理,或者可直接進展到截割器829。在若干實施例中,幾何渲染器對整個幾何物件操作,而非如在先前階段之圖形管線般僅對數個頂點或數片之頂點操作。若曲面細分被去能,則幾何渲染器819接收來自頂點渲染器807之輸入。在若干實施例中,幾何渲染器819是可由幾何渲染器程式程式化的,以在曲面細分單元被去能之情況下執行幾何曲面細分。
在柵格化之前,截割器829處理頂點資料。截割器829可以是固定功能截割器或具有截割與幾何渲染器功能之可程式截割器。在若干實施例中,在演色輸出管線870中的光柵器與深度測試組件873調度像素渲染器以將幾何物件轉換成每個像素表示法。在若干實施例中,像素渲染器邏輯被包括在執行緒執行邏輯850中。在若干實施例中,應用程式可旁路光柵器與深度測試組件873,並經由串流出單元823存取去光柵化頂點資料。
圖形處理器800具有互連匯流排、互連構造或若干其他互連機制,其允許資料與訊息在處理器之主要組件之間傳遞。在若干實施例中,經由資料埠856,執行單元852A-852B與相關聯邏輯單元(例如。L1快取851、取樣器854、紋理快取858等)互連,以執行記憶體存取且與處理器之演色輸出管線組件通訊。在若干實施例中,取樣器854、快取851、858與執行單元852A-852B各具有分離之記憶體存取路徑。在一實施例中,紋理快取858也可經組態成取樣器快取。
在若干實施例中,演色輸出管線870包含光柵器與深度測試組件873,其將基於頂點物件轉換成相關聯基於像素表示法。在若干實施例中,光柵器邏輯包括窗口器/遮罩器單元以執行固定功能之三角形與線柵格化。相關演色快取878與深度快取879也在若干實施例中是可用的。像素操作組件877對資料執行基於像素之操作,雖然在若干情況下,與2D操作相關之像素操作(例如,具混和(blending)之位元區塊影像轉移)是由2D引擎841所執行,或在顯示時間被顯示控制器843使用覆蓋顯示平面予以替換掉。在若干實施例中,共享L3快取875對所有圖形組件是可用的,允許資料共享而無使用主系統記憶體。
在若干實施例中,圖形處理器媒體管線830包括媒體引擎837與視訊前端834。在若干實施例中,視訊前端834從命令串流器803接收管線命令。在若干實施例中,媒體管線830包括分離之命令串流器。在若干實施例中,視訊前端834在將命令傳送到媒體引擎837之前先處理媒體命令。在若干實施例中,媒體引擎837包括執行緒生成功能,用以生成用以經由執行緒調度器831被調度到執行緒執行邏輯850之執行緒。
在若干實施例中,圖形處理器800包括顯示器引擎840。在若干實施例中,顯示器引擎840是在處理器800外部並經由環狀互連802或若干其他互連匯流排或構造而耦接到圖形處理器。在若干實施例中,顯示器引擎840包括2D引擎841與顯示器控制器843。在若干實施例中,顯示器引擎840包含特殊用途邏輯,其能夠獨立於3D管線操作。在若干實施例中,顯示器控制器843與顯示器裝置(未示出)耦接,該可能是系統整合顯示器裝置,諸如膝上型電腦中者,或是經由顯示器裝置連接器予以附接之外部顯示器裝置。
在若干實施例中,幾何管線820與媒體管線830可組態以基於多個圖形與媒體程式化介面來執行操作,並且沒有特定於任一種應用程式介面(API)。在若干實施例中,針對圖形處理器之驅動器軟體將對特定圖形或媒體庫為特定之API呼叫轉譯成可以被圖形處理器處理之命令。在若干實施例中,對開放圖形庫(OpenGL)、開放計算語言(OpenCL)及/或Vulkan圖形和計算API提供支援,其全部來自Khronos集團。在若干實施例中,也提供對來自微軟公司之Direct3D庫之支援。在若干實施例中,可以支援此等庫之組合。也對開源電腦視覺庫(OpenCV)提供支援。如果可以從未來的API的管線進行到圖形處理器的管線之映射,則還將支援具有相容3D管線的未來API。 圖形管線程式化
圖9A是描繪根據若干實施例之圖形處理器命令格式900之方塊圖。圖9B是描繪根據一實施例之圖形處理器合命令序列910之方塊圖。圖9A中實線框描繪通常被包括在圖形命令中的組件,而虛線則包括可選或僅包括在圖形命令之子集合中的組件。圖9A之例示性圖形處理器命令格式900包括用以識別客戶端902、命令操作碼(opcode,或稱運算碼)904與針對命令之資料906的資料欄位。次運算碼(sub-opcode)905與命令尺寸908也可被包括在若干命令中。
在若干實施例中,客戶端902指定處理命令資料的圖形裝置之客戶端單元。在若干實施例中,圖形處理器命令剖析器檢查各命令之客戶端欄位,以調節命令之進一步處理並路由該命令資料到適當客戶端單元。在若干實施例中,圖形處理器客戶端單元包括記憶體介面單元、演色單元、2D單元、3D單元、以及媒體單元。各客戶端單元具有對應的處理管線,其處理該命令。一旦命令被客戶端單元接收後,客戶端單元讀取運算碼904,並且若存在子運算碼905,則該子運算碼905用以判定要執行之操作。客戶端單元使用資料欄位906中的資訊執行命令。針對若干命令,明確(explicit)命令尺寸908被預期用以指定命令之尺寸。在若干實施例中,基於命令運算碼,命令剖析器自動判定命令中至少若干者之尺寸。在若干實施例中,經由多個雙重字來將命令對準。可使用其他的命令格式。
圖9B中流程圖描繪例示性圖形處理器命令序列910。在若干實施例中,具有圖形處理器一實施例特徵的資料處理系統之軟體或韌體使用所示出一版本之命令序列,以設定好、執行以及終結一組之圖形操作。示出並描述一樣本命令序列,目的僅用於是如實施例般是例示性而非受限於此等特定命令或受限於此命令序列。此外,可將命令在命令序列中以命令批次方式發出,以使得圖形處理器將至少部分地並行地處理該序列之命令。
在若干實施例中,圖形處理器指令序列910可以管線刷新指令912開始,以導致任何主動圖形管線可以完成針對該管線之當前正待決指令。在若干實施例中,3D管線922與媒體管線924不會並行操作。執行管線刷新以導致主動圖形管線可以完成任何待決之命令。回應管線刷新,針對圖形處理器之命令剖析器將命令暫停命令之處理,直到主動汲取引擎完成待決操作且相關讀取快取被失效。可選地,演色快取中任何被標記為是「壞(dirty)」之資料可以被刷新到記憶體。在若干實施例中,管線刷新命令912可用於管線同步或在將圖形處理器置於低電力狀態之前使用。
在若干實施例中,管線選擇命令913是在當指令序列需要圖形處理器以在管線之間明確切換時而被使用。在若干實施例中,在發出管線命令之前,在執行上下文中僅需要一次管線選擇命令913,除非該上下文是對雙管線發送命令。在若干實施例中,在經由管線選擇命令913進行管線切換之前,立即需要管線刷新命令912。
在若干實施例中,管線控制命令914組態圖形管線用於操作並用以程式化3D管線922與媒體管線924。在若干實施例中,管線控制命令914組態針對主動管線之管線狀態。在一實施例中,管線控制命令914是用於管線同步且用以在處理一批次之命令之前從主動管線內一或多快取記憶體中清除資料。
在若干實施例中,返回緩衝器狀態命令916用以組態針對各別的管線的一組返回緩衝器,以寫入資料。若干管線操作需要分配、選擇、或組態一或多返回緩衝器,以在處理期間寫入中間資料到該返回緩衝器中。在若干實施例中,圖形處理器也使用一或多返回緩衝器以儲存輸出資料且以執行跨越執行緒通訊。在若干實施例中,返回緩衝器狀態916包括選擇要使用於一組管線操作的返回緩衝器之尺寸與數量。
在命令序列中剩餘命令基於針對操作之主動管線而有所不同。基於管線判定920,命令序列是對3D管線922而訂製,其開頭為3D管線狀態930;或該命令序列是對媒體管線924而訂製,其在媒體管線狀態940開始。
用以組態3D管線狀態930之命令包括針對頂點緩衝器狀態、頂點元件狀態、3D狀態設定命令、恆定顏色狀態、深度緩衝器狀態、與其他在處理3D基元命令之前要被組態之狀態變數。至少部分基於所用特定3D API,來判定此等命令之值。在若干實施例中,若特定管線元件不會被使用,則3D管線狀態930命令也能夠被選擇性去能或旁路那些元件。
在若干實施例中,3D基元932命令是用以提交亦被3D管線處理之3D基元。經由3D基元932命令傳遞到圖形處理器之命令與相關聯參數並轉送到圖形管線中的頂點提取函數(vertex fetch function)。頂點提取函數使用3D基元932命令資料來產生頂點資料結構。頂點資料結構被儲存在一或多返回緩衝器中。在若干實施例中,經由頂點渲染器,3D基元932命令是用以對3D基元執行頂點操作。為了處理頂點渲染器,3D管線922調度渲染器執行緒到圖形處理器執行單元。
在若干實施例中,3D管線922是經由執行934命令或事件而觸發。在若干實施例中,暫存器寫入觸發命令執行。在若干實施例中,經由命令序列中的‘go’或‘kick’命令,來觸發執行。在一實施例中,透過使用管線同步命令來觸發命令執行,以將命令序列刷新通過圖形管線。3D管線將執行針對3D基元之幾何處理。一旦完成操作,則產生的幾何物件被光柵化且像素引擎將產生的像素上色。針對此等操作,也可包括用以控制像素渲染與像素後端操作之額外命令。
在若干實施例中,當執行媒體操作時,圖形處理器命令序列910遵循媒體管線924路徑。普遍而言,針對媒體管線924之特殊用途與程式化方式是取決於要被執行之媒體或計算操作。在媒體解碼期間,特定媒體解碼操作可以被卸載到媒體管線。在若干實施例中,媒體管線也可以被旁路,且透過使用由一或多通用處理核心所提供之資源可整體或部分執行媒體解碼。在一實施例中,媒體管線也包括用於通用圖形處理器單元(GPGPU)操作之元件,其中圖形處理器是用以使用計算渲染器程式來執行SIMD向量操作,該計算渲染器程式是明確與圖形基元演色相關的。
在若干實施例中,以與3D管線922相似方式組態媒體管線924。用以組態媒體管線狀態940之一組命令被調度或置於命令佇列中在媒體物件命令942之前。在若干實施例中,針對媒體管線狀態940之命令包括用以組態將用以處理媒體物件的媒體管線元件之資料。此包括用以組態媒體管線內視訊解碼與視訊編碼邏輯之資料,諸如編碼或解碼格式。在若干實施例中,針對媒體管線狀態940之命令也支援使用一或多指標來「間接指示」包含一批次狀態設定的狀態元件。
在若干實施例中,媒體物件命令942提供指向媒體物件之指標,以供媒體管線處理之用途。媒體物件包括包含將處理視訊資料之記憶體緩衝器。在若干實施例中,在發出媒體物件命令942之前,所有的媒體管線狀態必須是有效。一旦管線狀態被組態且媒體物件命令942被佇列後,經由執行命令944或等效執行事件(例如,暫存器寫入)來觸發媒體管線924。出自媒體管線924之輸出可接著被由3D管線922或媒體管線924所提供之操作進行後處理。在若干實施例中,以與媒體操作相似方式,組態且執行GPGPU操作。 圖形軟體架構
圖10描繪根據若干實施例針對資料處理系統1000之例示性圖形軟體架構。在若干實施例中,軟體架構包括3D圖形應用程式1010、作業系統1020、以及至少一處理器1030。在若干實施例中,處理器1030包括圖形處理器1032與一或多通用處理器核心1034。圖形應用程式1010與作業系統1020各自在資料處理系統之系統記憶體1050中執行。
在若干實施例中,3D圖形應用程式1010包含一或多渲染器程式,該渲染器程式包括渲染器指令1012。渲染器語言指令可以是高階渲染器語言,諸如Direct3D、OpenGL渲染器語言(GLSL)等高階渲染器語言(HLSL)。應用程式也包括為機器語言之可執行指令1014,其適用於被通用處理器核心1034執行。應用程式也包括由頂點資料界定之圖形物件1016。
在若干實施例中,作業系統1020是微軟公司之Microsoft® Windows®作業系統、專有類UNIX作業系統或使用Linux核心變體的開源類UNIX作業系統。作業系統1020可支援圖形API 1022,諸如Direct3D API、OpenGL API、或Vulkan API。當使用Direct3D API時,作業系統1020使用前端渲染器編譯器1024以將任何HLSL之渲染器指令1012編譯成較低階渲染器語言。該編譯可以是即時(JIT)編譯或應用程式可執行渲染器預編譯。在若干實施例中,高階渲染器可以在3D圖形應用程式1010之編譯期間被編譯成低階渲染器。在若干實施例中,渲染器指令1012是以中間形式被提供,諸如由Vulkan API所用之標準可攜式中間表示法(SPIR)。
在若干實施例中,使用者模式圖形驅動器1026包含後端渲染器編譯器1027,以將渲染器指令1012轉換成硬體特定表示法。當使用OpenGL API時,GLSL高階語言之渲染器指令1012被傳遞到使用者模式圖形驅動器1026以用於編譯。在若干實施例中,使用者模式圖形驅動器1026使用作業系統核心模式功能1028來與核心模式圖形驅動器1029通訊。在若干實施例中,核心模式圖形驅動器1029與圖形處理器1032進行通訊,以調度命令和指令。 IP核心實作
至少一實施例之一或多態樣可藉由儲存在記器可讀取媒體上之代表性程式碼來實作,其代表及/或界定諸如處理器等積體電路之中的邏輯。舉例而言,機器可讀媒體可包括表示處理器內各種邏輯之指令。當被機器讀取時,指令可造成該機器製造邏輯以執行本文所述之技術。此等表示法,已知為「IP核心」,是針對積體電路之可重複使用邏輯單元,其可被儲存在有形機器可讀媒體上作為描述該積體電路結構之硬體模型。硬體模型可被供應到各種客戶或生產工廠,其載入該硬體模型到生成該積體電路之製造機器上。積體電路可以被製造以令該電路執行結合本文所述任意實施例所描述之操作。
圖11A是描繪IP核心研發系統1100之方塊圖,該系統可用以製造積體電路以執行根據實施例之操作。IP核心研發系統1100可用以產生模組化、可重複使用設計,該設計可以被結合到更大的設計中或用以建構整個積體電路(例如,SoC積體電路)。設計機構1130可產生在高階程式語言(例如,C/C++)之IP核心設計之軟體模擬1110。透過使用模擬模型1112,軟體模擬1110可用以設計、測試並驗證該IP核心之行為。模擬模型1112可包括功能、行為及/或計時模擬。暫存器轉移層級(RTL)設計1115可接著從模擬模型1112被建立或合成。RTL設計1115是積體電路之行為的抽象化,其建模在硬體暫存器之間數位訊號之流動,包括使用建模數位訊號所執行之相關邏輯。除了RTL設計1115以外,也可建立、設計或合成在邏輯層級或電晶體層級處之較低階設計。因此,初始設計之特定細節與模擬可能不同。
RTL設計1115或等效物可進一步被設計機構合成成為硬體模型1120,其可以是在硬體描述語言(HDL)或若干種其他實體設計資料之表示法中。HDL可進一步被模擬或測試以驗證IP核心設計。透過使用非揮發性記憶體1140(例如,硬碟、快閃記憶體或任何非揮發性儲存媒體),IP核心設計可以被儲存以用於運送到第三方協力廠商製造機構1165。替代地,IP核心設計可以被傳遞(例如,經由網際網路)透過有線連接1150或無線連接1160。製造機構1165可接著至少部分基於IP核心設計製造積體電路。製造的積體電路可經組態以執行根據本文所述至少一實施例之操作。
圖11B描繪根據本文所述若干實施例之積體電路封裝總成1170之橫截面側視圖。積體電路封裝總成1170描繪本文所述一或多處理器或加速器裝置之實作。封裝總成1170包括硬體邏輯1172、1174之數個單元,該兩者連接到基板1180。邏輯1172、1174可至少部分實作於可組態邏輯或固定功能邏輯硬體中,並且可包括一或多部分之處理器核心、圖形處理器、或其他本文所述加速器裝置等任意者。邏輯1172、1174之各單元可實作在半導體晶粒中且經由互連結構1173而與基板1180耦接。互連結構1173可經組態以在邏輯1172、1174與基板1180之間路由電性訊號,並且可包括諸如但不限於凸塊或柱狀等互連。在若干實施例中,互連結構1173可經組態以路由電性訊號,諸如例如輸入/輸出(I/O)訊號及/或與邏輯1172、1174操作相關的電力或接地訊號。在若干實施例中,基板1180是基於環氧樹脂的層板基板。在其他實施例中,基板1180可包括其他適當類型之基板。經由封裝互連1183,封裝總成1170可連接到其他電性裝置。封裝互連1183可耦接到基板1180之表面,以將電性訊號路由到其他的電性裝置,諸如主機板、其他晶片組或多晶片模組。
在若干實施例中,邏輯1172、1174之數單元是電性耦接到橋接器1182,該橋接器經組態以在邏輯1172、1174之間路由電性訊號。橋接器1182可以是提供對電性訊號之路由的密集互連結構。橋接器1182可包括橋接器基板,其由玻璃或適當半導體材料構成。可以在橋接器基板上形成電性路由特徵,以在邏輯1172與1174之間提供晶片對晶片之連接。
雖然僅描繪兩單元之邏輯1172、1174與橋接器1182,但本文所述實施例可在一或多晶粒上包括更多或更少邏輯單元。該一或多晶粒可透過零個或更多橋接器連接,如在邏輯被包括在單一晶粒上之情況下,橋接器1182可以被排除。替代地,多個晶粒或邏輯之單元可透過一或多橋接器連接。額外地,多個邏輯單元、晶粒與橋接器可以其他可行組態而連接在一起,該其他組態包括三維組態。
圖11C描繪封裝總成1190,其包括連接到基板(例如,基底晶粒)1180之硬體邏輯小晶片之數個單元。本文所述之圖形處理單元、並行處理器、及/或計算加速器可由分別製造的各種矽小晶片所構成。在此上下文中,小晶片是至少部分封裝之積體電路,該積體電路包括可與其他小晶片組裝成較大封裝的邏輯之分離單元。具有不同IP核心邏輯之廣泛組之小晶片可組裝成一單一裝置。額外地,透過使用主動插入件技術,小晶片可整合到基底晶粒中或基底小晶片中。本文所述之概念賦能在GPU內不同型態之IP之間的互連與通訊。IP核心可使用不同處理技術來生產且可在製造過程中進行組裝,這避免將多個IP整合到相同製造處理中的複雜度(特別是在具有些許多種IP之大SoC上)。賦能對多種處理技術之使用將可以改進到達市場之時間,並提供一種經濟高效的方式來創立多個產品SKU。額外地,分散式IP更適合獨立供電,可以斷電在給定工作量中未使用的組件的電源,從而降低總體功耗。
硬體邏輯小晶片可包括特殊用途硬體邏輯小晶片1172、邏輯或I/O小晶片1174、及/或記憶體小晶片1175。硬體邏輯小晶片1172與邏輯或I/O小晶片1174可至少部分實作於可組態邏輯或固定功能邏輯硬體中,並且可包括一或多部分之處理器核心、圖形處理器、並行處理器、或其他本文所述加速器裝置等任意者。記憶體小晶片1175可以是DRAM(例如,GDDR、HBM)記憶體或快取(SRAM)記憶體。
各小晶片可實作成分離半導體晶粒且經由互連結構1173而與基板1180耦接。互連結構1173可經組態以在各小晶片與基板1180內邏輯之間路由電性訊號。互連結構1173可包括諸如但不限於凸塊或柱狀等互連。在若干實施例中,互連結構1173可經組態以路由電性訊號,諸如例如輸入/輸出(I/O)訊號及/或與邏輯、I/O與記憶體小晶片操作相關的電力或接地訊號。
在若干實施例中,基板1180是基於環氧樹脂的層板基板。在其他實施例中,基板1180可包括其他適當類型之基板。經由封裝互連1183,封裝總成1190可連接到其他電性裝置。封裝互連1183可耦接到基板1180之表面,以將電性訊號路由到其他的電性裝置,諸如主機板、其他晶片組或多晶片模組。
在若干實施例中,邏輯或I/O小晶片1174與記憶體小晶片1175可經由橋接器1187電性耦接,該橋接器經組態以在邏輯或I/O小晶片1174與記憶體小晶片1175之間路由電性訊號。橋接器1187可以是提供對電性訊號之路由的密集互連結構。橋接器1187可包括橋接器基板,其由玻璃或適當半導體材料構成。可以在橋接器基板上形成電性路由特徵,以在邏輯或I/O小晶片1174與記憶體小晶片1175之間提供晶片對晶片之連接。橋接器1187也可被稱為矽橋接器或互連橋接器。舉例而言,在若干實施例中,橋接器1187是嵌入式多晶粒互連橋接器(EMIB)。在若干實施例中,橋接器1187可單純是從一小晶片到另一小晶片之直接連接。
基板1180可包括針對I/O 1191、快取記憶體1192與其他硬體邏輯1193之硬體組件。構造1185可嵌入到基板1180內以賦能基板1180內各種邏輯小晶片與邏輯1191、1193之間的通訊。在一實施例中,I/O 1191、構造1185、快取、橋接器與其他硬體邏輯1193可整合到疊層在基板1180頂部上之基底晶粒中。
在各種實施例中,封裝總成1190可包括透過構造1185或一或多橋接器1187互連之較少或較多數量之組件與小晶片。封裝總成1190內之小晶片可被配置成3D或2.5D配置中。普遍而言,橋接器結構1187可用以促進在例如邏輯或I/O小晶片與記憶體小晶片之間點對點的互連。構造1185可用以將各種邏輯及/或I/O小晶片(例如,小晶片1172、1174、1191、1193)與其他邏輯及/或I/O小晶片進行互連。在一實施例中,基板內之快取記憶體1192可作用如針對封裝總成1190之總體快取、經分配總體快取之部分或作為針對構造1185之專用快取。
圖11D描繪根據實施例之包括可互換小晶片1195之封裝總成1194。可互換小晶片1195可被組裝到一個或多個基底小晶片1196、1198上的標準插槽中。基底小晶片1196、1198可經由橋接器互連1197耦接,該橋接器可與本文所述其他橋接器互連相似且可例如是EMIB。記憶體小晶片也可經由橋接器互連而連接到邏輯或I/O小晶片。I/O與邏輯小晶片可經由互連構造通訊。基底小晶片可各支持一或多標準格式之槽,以用於邏輯或I/O或記憶體/快取中一者。
在一實施例中,SRAM與供電電路可製造到一或多基底小晶片1196、1198中,其可使用相對於堆疊在基底小晶片頂部上之可互換小晶片1195不同之處理技術而製造。舉例而言,基底小晶片1196、1198可使用較大處理技術製造,雖然可互換小晶片可使用較小的處理技術製造。一或多可互換小晶片1195可以是記憶體(例如,DRAM)小晶片。基於使用封裝總成1194之產品的電力、及/或目標性能,可選擇不同記憶體密度用於封裝總成1194。額外地,基於對產品訂定目標之電力、及/或性能,可在組裝時選擇具有不同數量類型之功能單元的邏輯小晶片。額外地,包含不同類型IP邏輯核心之小晶片可以被插入到可互換小晶片槽中,藉此賦能混合處理器設計可混搭不同技術IP區塊。 例示性系統單晶片積體電路
圖12-13描繪根據本文所述各種實施例之例示性積體電路與相關圖形處理器,其可使用一或多IP核心製造。除了描繪者以外,可包括其他邏輯與電路,包含附加圖形處理器/核心、週邊介面控制器或通用處理器核心。
圖12是根據實施例的描繪例示性系統單晶片積體電路1200之方塊圖,其可使用一或多IP核心製造。例示性積體電路1200包括一或多應用處理器1205(例如,CPU)、至少一圖形處理器1210、以及可額外包括影像處理器1215及/或視訊處理器1220,上述任一者可以是來自相同或多個不同設計機構之模組化IP核心。積體電路1200包括週邊或匯流排邏輯,其包括USB控制器1225、UART控制器1230、SPI/SDIO控制器1235、以及I2 S/I2 C控制器1240。額外地,積體電路可包括與高解析多媒體介面(HDMI)控制器1250與行動業界處理器介面(MIPI)顯示器介面1255中一或多者之顯示器裝置1245。可透過包括快閃記憶體與快閃記憶體控制器等快閃記憶體子系統1260來提供儲存。可經由記憶體控制器1265提供記憶體介面,以用於對SDRAM或SRAM記憶體裝置進行存取。若干積體電路額外地包括嵌入式安全引擎1270。
圖13A-13B是根據本文所述實施例描繪用於SoC內的例示性圖形處理器之方塊圖。圖13A是根據實施例的描繪系統單晶片積體電路之例示性圖形處理器1310,其可使用一或多IP核心製造。圖13B是根據實施例的描繪系統單晶片積體電路之附加例示性圖形處理器1340,其可使用一或多IP核心製造。圖13A之圖形處理器1310是低功率圖形處理器核心之一實例。圖13B之圖形處理器1340是較高性能圖形處理器核心之一實例。圖形處理器1310、1340各可以是圖12之圖形處理器1210的變體。
如圖13A示出,圖形處理器1310包括頂點處理器1305與一或多片段處理器1315A-1315N(例如,1315A、1315B、1315C、1315D、直到1315N-1與1315N)。經由不同的邏輯,圖形處理器1310可執行不同渲染器程式,以使得頂點處理器1305被最佳化以執行針對頂點渲染器程式之操作,同時一或多片段處理器1315A-1315N執行針對片段或像素渲染器程式之片段(例如,像素)渲染操作。頂點處理器1305執行3D圖形管線之頂點處理階段,並產生基元與頂點資料。片段處理器1315A-1315N使用由該頂點處理器1305所產生之基元與頂點資料,以產生在顯示器裝置上顯示之訊框緩衝區。在一實施例中,片段處理器1315A-1315N經最佳化以執行如在OpenGL API所提供之片段渲染器程式,其可用以執行與對Direct 3D API中提供的像素渲染器程式相似之操作。
圖形處理器1310額外地包括一或多記憶體管理單元(MMU)1320A-1320B、快取1325A-1325B、及電路互連1330A-1330B。一或多MMU 1320A-1320B對圖形處理器1310,包括對頂點處理器1305及/或片段處理器1315A-1315N,提供虛擬對實體位址映射,除了在一或多快取1325A-1325B中儲存的頂點或影像/紋理資料以外,其可參考記憶體中儲存之頂點或影像/紋理資料。在一實施例中,一或多MMU 1320A-1320B可以與系統內其他MMU同步,包括與圖12之一或多應用處理器1205、影像處理器1215、及/或視訊處理器1220相關的一或多MMU,以令各處理器1205-1220可在共享或統一虛擬記憶體系統中參與。根據實施例,一或多電路互連1330A-1330B賦能圖形處理器1310可以與SoC內其他IP核心介接(不論是經由SoC之內部匯流排或經由直接連接)。
如圖13B所示,圖形處理器1340包括圖13A中圖形處理器1310之一或多記憶體管理單元(MMU)1320A-1320B、快取1325A-1325B、及電路互連1330A-1330B。圖形處理器1340包括一或多渲染器核心1355A-1355N(例如,1455A、1355B、1355C、1355D、1355E、1355F、直達1355N-1與1355N),其提供統一渲染器核心架構,其中單一核心或類型或核心可執行所有類型之可程式渲染器碼,包括渲染器程式碼以實作頂點渲染器、片段渲染器及/或計算渲染器。存在渲染器核心之確切數量可在不同實施例與實作中有所變化。額外地,圖形處理器1340包括核心間工作管理器1345,其作用如執行緒調度器以將執行緒調度到一或多渲染器核心1355A-1355N與拼接單元1358,以加速針對基於片演色之拼接操作,其中針對一場景之演色操作被子劃分到影像空間中,例如利用場景中區域空間同調性或用以最佳化內部快取之使用。 機器學習概論
機器學習演算法是一種可基於一組資料進行學習之演算法。機器學習演算法之實施例可以被設計以在資料集(data set)中建模高層級抽象化。舉例而言,影像辨識演算法可用以判定給定輸入是屬於些許類別中何類別;迴歸演算法可輸出給定輸入之數字值;以及模式辨識(pattern recognition)演算法可用以產生轉譯文字或執行文字對語音及/或語音辨識。
例示性類型之機器學習演算法是類神經網路。存在許多種類型之類神經網路,簡易類型之類神經網路是前饋網路。前饋網路可實作成非循環圖,其中節點被配置在數層中。典型上,前饋網路拓樸包括輸入層與輸出層,其被至少一隱藏層而分離。隱藏層將由輸入層接收之輸入變換成表示法,其可用於產生輸出層中的輸出。網路節點透過邊緣完全連接到相鄰層中的節點,但是每一層中的節點之間沒有邊緣。在前饋網路之輸入層的節點處接收到的資料經由激活函數而被傳播(亦即,「向前饋送」)到輸出層之節點,該激活函數基於與和該層連接各邊緣相關的係數(「權重」)計算網路中各相繼層之節點之狀態。取決於由正執行演算法所表示之特定模型,出自類神經網路演算法之輸出可採取各種形式。
在機器學習演算法可用以建模特定問題之前,必須使用訓練資料集對該演算法進行訓練。訓練類神經網路涉及選擇網路拓樸,選擇一組表示網路正在建模之問題的訓練資料,並調整該權重直到網路模型對所有訓練資料集實例進行執行時具有最小誤差。舉例而言,在針對類神經網路之監督學習訓練過程期間,由網路回應於代表訓練資料集中的一個實例的輸入產生之輸出與針對該實例所產生之「正確」標記輸出進行比較,計算出表示該輸出與標記輸出之間差值的誤差訊號,以及調整與該等連接相關之權重,以將當誤差訊號向後傳播通過數層之網路時的誤差最小化。當針對從該實例之訓練資料集所產生的各輸出之誤差被最小化時,網路被視為是「經訓練完成」。
機器學習演算法的準確性可能會受到用於訓練演算法的資料集品質之顯著影響。訓練過程可以是計算密集且在習知通用處理器上可能需要顯著量之時間。據此,使用並行處理硬體以訓練許多類型之機器學習演算法。這對訓練類神經網路之最佳化是特別有用,因為在調整類神經網路中係數方面所執行之計算會自然導致並行實作之發生。更明確地,許多機器學習演算法與軟體應用程式可適應以使用通用圖形處理裝置中的並行處理硬體。
圖14是機器學習軟體推疊1400的通用圖式。機器學習應用程式1402可經組態以使用訓練資料集訓練類神經網路或用以使用經訓練深度類神經網路來實作機器智慧。機器學習應用程式1402可包括類神經網路之訓練與推理功能及/或可在部屬之前用以訓練類神經網路之專用軟體。機器學習應用程式1402可實作任何類型之機器智慧,其包括但不限於影像辨識、映射與局部化、自動化導覽、語音合成、醫療成像、或語言翻譯。
可經由機器學習框架1404來賦能針對機器學習應用程式1402之硬體加速。機器學習框架1404可提供機器學習基元之庫。機器學習基元是被機器學習演算法一般執行之基本操作。若無機器學習訊框1404,則機器學習演算法之開發商將需要建立與最佳化與機器學習演算法相關之主計算邏輯,接著當研發出新的並行處理器時再次最佳化計算邏輯。取而代之的是透過使用由機器學習框架1404所提供之基元,機器學習應用程式可經組態以執行必要計算。例示性基元包括張量卷積、激活函數與池化,其是當訓練卷積類神經網路(CNN)時所執行之計算操作。機器學習框架1404也可提供用以實作由多機器學習演算法執行的基本線性代數子程式之基元,諸如矩陣與向量操作。
機器學習框架1404可處理從機器學習應用程式1402接收到的輸入資料並產生適當輸入到計算框架1406。計算框架1406可將提供到GPGPU驅動器1408之基本指令抽象化以賦能機器學習框架1404以經由GPGPU硬體1410利用硬體加速之優勢,而不需機器學習框架1404要具有對GPGPU硬體1410架構有關之密切知識。額外地,計算框架1406可橫跨各式各樣GPGPU硬體1410之類型與世代,以賦能針對機器學習框架1404之硬體加速。 機器學習類神經網路實作
本文所述由實施例提供之計算架構可經組態以執行特別適用於針對機器學習訓練與部屬類神經網路之類型的並行處理。類神經網路可通用化成具有圖關聯性之功能網路。如在該技術領域中熟知,存在各式各樣類型之用於機器學習中的類神經網路實作。一例示性類型之類神經網路是前饋網路,如前述。
第二例示性類型之類神經網路是卷積類神經網路(CNN)。CNN是用於處理具有已知格線狀拓樸的資料(諸如,影像資料)之專用前饋類神經網路。據此,CNN常用於計算視覺與影像辨識應用程式中,但其也可用於其他類型之模式辨識,諸如語音與語言處理。CNN輸入層中的節點被組織成一組之「過濾器」(受視網膜中個別視野所啟發之特徵偵測器),且各組之過濾器之輸出被傳播到網路中相繼層中的節點。對CNN之計算包括對各過濾器應用卷積數學運算以產生該過濾器之輸出。卷積是一種特殊類型之數學運算,其由兩種函數執行以產生第三種函數,該第三種函數是該兩個先前函數中一者之調整版本。在卷積網路術語中,第一函數對卷積而言被稱做輸入,而第二函數被稱為卷積核心。輸出可被稱為特徵映射圖。例如,到卷積層之輸入可以是界定輸入影像中各種顏色分量的多維度陣列之資料。卷積核心可以是多維度陣列之參數,其中參數在訓練過程中對類神經網路進行適應。
遞迴類神經網路(RNN)是前饋類神經網路之家族,其在數層之間包括饋送連接。透過跨不同部分之類神經網路共享參數資料,RNN賦能序列資料之建模。RNN之架構包括循環。循環表示將來某個時間變數的當前值對其自身值的影響,因為來自RNN的輸出資料的至少一部分用作饋送,用於處理序列中的後續輸入。這個特徵使得RNN特別有用於語言處理,因為語言資料中所構成之變數本質之特性。
以下所述圖式代表例示性前饋CNN與RNN網路,以及描述分別訓練與部屬各個此等類型網路之通用處理。應瞭解此等說明僅是例示性而非限制性,因為本文所述任何特定實施例與描繪概念可一般地應用到深度類神經網路與機器學習技術中。
上述例示性類神經網路可用以執行深度學習。深度學習是使用深度類神經網路之機器學習。在深度學習中使用之深度類神經網路是由多個隱藏層所構成之人工類神經網路,相對於僅具有單一隱藏層之淺類神經網路。較深度類神經網路通常在訓練方面較為計算密集。然而,網路之附加隱藏層賦能多步驟之模式辨識,其導致相對於淺機器學習技術之輸出誤差的降低。
在深度學習中所用之深度類神經網路典型上包括用以執行特徵辨識之前端網路,該前端網路耦接到表示數學模型之後端網路,該數學模型可基於被提供給其之特徵表示法來進行操作(例如,物件分類、語音辨識等)。深度學習使機器學習得以執行,而無需為模型執行人工的特徵加工。取而代之的,深度類神經網路可基於統計結構或輸入資料內之相關性來學習特徵。所學習特徵可以被提供到可將偵測到特徵映射到輸出之數學模型。由網路所用之數學模型通常專用於要被執行之特定工作,且不同模型可用以執行不同工作。
一旦建構好類神經網路結構,一學習模型可以被應用到網路以訓練網路執行特定工作。學習模型描述模型內之權重如何被調整已降低網路之輸出誤差。誤差之後向傳播是用以訓練類神經網路之常見方法。對網路呈現輸入向量以用於處理。透過使用損失函數,將網路之輸出與期望輸出進行比較,且針對輸出層中各神經元計算誤差值。誤差值可接著向後傳播,直到各神經元具有粗略表示其對原始輸出進行的貢獻之相關誤差值。使用諸如隨機梯度下降演算法等演算法,網路可接著從此等誤差進行學習,以更新類神經網路之權重。
圖15A-15B描繪例示性卷積類神經網路。圖15A描繪CNN內各層。如圖15A示出,用以建模影像處理之例示性CNN可接收表示輸入影像紅色、綠色、藍色(RGB)分量之輸入1502。可由多個卷積層(例如,第一卷積層1504、第二卷積層1506)處理輸入1502。出自多個卷積層之輸出可以可選的被一組完全連接的層1508處理。在完全連接的層中的神經元具有對先前層中全部激活之完整連接,如前文針對前饋網路所述者。出自完全連接的層1508之輸出可用以產生出自網路之輸出結果。在完全連接的層1508中的激活可使用矩陣乘法而非卷積來進行計算。並非所有的CNN實作會使用完全連接的層1508。舉例而言,在若干實作中,第二卷積層1506可對CNN產生輸出。
卷積層是稀疏連接的,這不同於在完全連接的層1508中找到的傳統類神經網路組態。傳統類神經網路層是完全連接的,以使得每個輸出單元與每個輸入單元互動。然而,卷積層是稀疏連接的,因為一欄位的卷積之輸出被輸入(而非在該欄位中各節點之個別狀態值)到接續層之節點,如所描繪。與卷積層相關聯之核心執行卷積操作,其輸出被傳送到下層。在卷積層中執行維度降低是賦能CNN可以縮放以處理大影像之一種態樣。
圖15B描繪在CNN卷積層中的例示性計算階段。對CNN之卷積層1512的輸入可以在卷積層1514之三階段中進行處理。該三階段可包括卷積階段1516、偵測器階段1518、與池化階段1520。卷積層1514可接著輸出資料到相繼卷積層。網路之最終卷積層可產生輸出特徵映射圖資料或提供輸入到完全連接之層,例如,以產生用於對CNN之輸入的分類值。
在卷積階段1516中,並行執行些許卷積以產生一組線性激活。卷積階段1516可包括仿射變換,其是可以被指定成是一線性變換加上平移之任何種變換。仿射變換包括旋轉、平移、縮放、與此等變換之組合。卷積階段計算輸入連接到特定區之函數(例如,神經元)之輸出,該輸入可被判定是與神經元相關聯之局部區(local region)。神經元計算神經元及與神經元連接到局部輸入(local input)中的區之權重的點積。出自卷積階段1516之輸出界定一組線性激活,該線性激活被卷積層1514之相繼階段進行處理。
線性激活可以被偵測器階段1518處理。在偵測器階段1518中,各線性激活是被非線性激活函數處理。非線性激活函數增加總體網路之非線性特性,而不會影響卷積層之接收場(receptive field)。可使用些許類型之非線性激活函數。一特定類型是整流的線性單元(ReLU),其使用界定成
Figure 02_image001
之激活函數,以使得激活臨界值設在零。
池化階段1520使用池化函數,該池化函數將第二卷積層1506之輸出取代成相鄰輸出之彙總統計數據。池化函數可用於將平移不變性(translation invariance)引入類神經網路中,以使輸入的小平移不會改變池化輸出。對局部平移之不變性對數種情境是有用的,該情境如包括輸入資料中一特徵之存在比該特徵之確切位置更重要時。可在池化階段1520期間使用各種類型之池化函數,包括最大池化、平均池化、與l2範數(l2-norm)池化。額外地,若干CNN實作不包括池化階段。取而代之的,此等實作替代其且附加卷積階段具有相對於先前卷積階段增加的跨距。
出自卷積層1514之輸出可接著被下一層1522處理。下一層1522可以是附加的卷積層或完全連接的層1508中之一。舉例而言,圖15A之第一卷積層1504可輸出到第二卷積層1506,而第二卷積層可輸出到完全連接的層1508中的第一層。
圖16描繪例示性遞迴類神經網路。在遞迴類神經網路(RNN)中,網路之先前狀態影響網路當前狀態之輸出。可使用各式各樣函數以各種方式構建RNN。RNN之使用通常圍繞在使用數學模型基於先前序列輸入來預測未來。舉例而言,RNN可用以執行統計語言建模,以基於先前序列之字來預測接下來出現的字。說明RNN 1600可描述成具有接收輸入向量之輸入層1602、用以實作遞迴函數之隱藏層1604、用以賦能先前狀態之「記憶」的饋送機制1605、以及用以輸出結果之輸出層1606。RNN 1600基於時間步驟來運作。經由饋送機制1605,RNN在給定時間步驟之狀態是根據先前時間步驟而受影響。針對一給定時間步驟,隱藏層1604之狀態是被先前狀態與當前時間步驟之輸入所界定。在第一時間步驟之初始輸入(x1 )可以被隱藏層1604進行處理。第二輸入(x2 )可以被隱藏層1604使用狀態資訊來進行處理,該狀態資訊是在處理初始輸入(x1 )期間所判定。給定狀態可計算成
Figure 02_image003
,其中
Figure 02_image005
Figure 02_image007
為參數矩陣。函數
Figure 02_image009
通常是非線性,諸如雙曲正切函數(Tanh)或整流器函數之一變體。然而,在隱藏層1604中使用的特定數學函數可取決於RNN 1600之特定實作細節而有所變化。
除了所述基本CNN與RNN網路外,此等網路之變異也可以被賦能。一例示性RNN變體是長的短期記憶體(LSTM)RNN。LSTM RNN能夠學習長期相依性,這對處理較長序列之語言是必要的。對CNN之一變體是卷積深信賴網路,其具有與CNN相似結構且以深信賴網路相似方式訓練。深信賴網路(DBN)是一種產生類神經網路,其由多層隨機(stochastic)變數所構成。可以使用貪婪無監督學習逐層訓練DBN。透過判定針對類神經網路之最佳化初始組之權重,DBN之經學習權重可接著用以提供預訓練之類神經網路。
圖17描繪深度類神經網路之訓練與部屬。一旦針對一工作結構化給定網路後,類神經網路是使用訓練資料集1702進行訓練。已研發各種訓練框架以賦能訓練過程之硬體加速。舉例而言,圖14之機器學習框架1404可經組態成訓練框架1704。訓練框架1704可掛接到未訓練之類神經網路1706並賦能該未受訓類神經網路將使用本文所述並行處理資源進行訓練,以產生經訓練類神經網路1708。訓練過程之開始為隨機選擇初始權重,或透過使用深信賴網路進行預訓練來選擇初始權重。接著,在監督或無監督方式中執行訓練週期。
監督學習是一種學習方法,其中訓練是作為調解操作所執行的,諸如當訓練資料集1702包括配對有針對該輸入之期望輸出的輸入時,或其中訓練資料集在已知輸出前提下包括輸入且類神經網路之輸出被人工分級。網路處理該輸入並將產生輸出與一組預期或期望輸出進行比較。接著,誤差往回傳播通過系統。訓練框架1704可調整以調整控制未訓練類神經網路1706之權重。訓練框架1704可以提供工具以監視未訓練的類神經網路1706朝著適於基於已知輸入資料產生正確答案的模型收斂的程度。隨著網路權重之調整,重複發生訓練過程以精化由類神經網路所產生之輸出。訓練過程可持續直到類神經網路達到與經訓練類神經網路1708相關的統計上期望之準確度。可接著部屬經訓練類神經網路1708以實作任何數量之機器學習操作,以基於新資料812之輸入產生推理結果814。
無監督學習是一種學習方法,其中網路嘗試使用未標記資料進行自我訓練。因此,針對無監督學習,訓練資料集1702將包括輸入資料而無任何相關輸出資料。未受訓類神經網路1706可學習在未標記輸入內之群組化並可判定個別輸入是如何與總體資料集相關。無監督訓練可用以產生自我組織映射圖,其是能夠執行有用於降低資料維度之操作的一類型之經訓練類神經網路1708。無監督訓練也可用以執行異常偵測,這允許在輸入資料集中偏移自資料正常模式的資料點之識別。
也可採用對監督與無監督訓練之變體。半監督學習是一種技術,其中訓練資料集1702包括具相同分布之標記與未標記資料之混和。增量學習是監督學習的一種變體,其中連續使用輸入資料來進一步訓練模型。增量學習賦能經訓練類神經網路1708可以適應新資料1712,而不會遺忘在初始訓練期間網路內灌輸之知識。
無論監督或無監督,針對特定深度類神經網路之訓練過程可能對單一計算節點而言過渡計算密集。因此,取代使用單一計算節點,可使用一分散式網路之計算節點以加速訓練過程。
圖18是描繪分散式學習之方塊圖。分散式學習是一種使用多分散式計算節點來執行監督或無監督類神經網路訓練之訓練模型。該分散式計算節點各可包括一或多主機處理器且一或多通用處理節點。如所述,分散式學習可執行模型並行性1802、資料並行性1804、或模型與資料並行性1806之組合。
在模型並行性1802中,在分散式系統中不同計算節點可對單一網路不同部分執行訓練計算。舉例而言,各層之類神經網路可由經分配系統之不同處理節點進行訓練。模型並行性之優勢包括能夠縮放到特別大模型之能力。將與不同層之類神經網路相關聯的計算拆分將賦能對極大類神經網路之訓練,該極大類神經網路其中所有層之權重不能適配進單一計算節點之記憶體中。在若干實例中,模型並行性可對執行大類神經網路之無監督訓練方面特別有用。
在資料並行性1804中,不同節點之經分配網路具有完整實例之模型且各節點接收該資料之不同部分。出自不同節點之結果接著被組合。雖然資料並行性之不同方法是可行的,但資料並行訓練方法皆需要一種將結果組合並將各節點間模型參數同步之技術。用以組合資料之例示性方法包括基底資料並行性之參數取平均與更新。參數取平均訓練在訓練資料之一子集上每個節點,並將總體參數(例如權重,偏差)設定成來自每個節點的參數的平均值。參數取平均使用維持參數資料之中央參數伺服器。基礎資料並行性進行更新是與參數取平均相似的,惟取代從節點轉移參數到參數伺服器,而是轉移對模型之更新。額外地,可以非集中方式執行基於更新之資料並行性,其中更新被壓縮並在節點之間轉移。
可實作組合的模型與資料並行性1806,例如,在其中各計算節點包括多GPU之分散式系統中。各節點可具有完整實例之模型,其中各節點內分離GPU用以訓練該模型之不同部分。
相對於在單一機器上訓練,分散式訓練會增加負擔。然而,本文所述並行處理器與GPGPU各可實作各種技術,來降低分散式訓練之負擔,包括用以賦能高頻寬GPU對GPU資料轉移之技術與加速遠端資料同步之技術。 例示性機器學習應用
可應用機器學習來解決各式各樣技術問題,包括但不限於電腦視覺、自動化駕駛與導航、語音辨識與語言處理。傳統上,電腦視覺一直是機器學習應用中最活躍的研究領域之一。電腦視覺的應用範圍從再現人類的視覺能力(例如識別面部)到建立視覺能力的新類別。例如,電腦視覺應用可以組態成從視訊中可見的物件中感應的振動中識別聲波。並行處理器加速的機器學習使電腦視覺應用可以使用比以前可行的方法大得多的訓練資料集進行訓練,並使推理系統可以使用低功率並行處理器進行部署。
並行處理器加速的機器學習具有自動駕駛應用,包括車道和道路標誌識別、避障、導航和駕駛控制。加速的機器學習技術可用於基於定義對特定訓練輸入的適當回應的資料集來訓練駕駛模型。本文描述的並行處理器可以實現對用於自動駕駛解決方案的日益複雜的類神經網路的快速訓練,並可以在適合整合到自動駕駛汽車等移動平台中部署低功率推理處理器。
並行處理器加速深度類神經網路使機器學習方法可以實現自動語音識別(ASR)。ASR包括建立一個函數,該函數在給定輸入聲音序列的情況下計算出最可能的語言序列。使用深度類神經網路的加速機器學習已能夠替換掉以前用於ASR的隱藏馬爾可夫模型(HMM)和高斯混合模型(GMM)。
並行處理器加速機器學習也可用以加速自然語言處理。自動化學習程序可利用統計推論演算法來產生對錯誤或不熟悉輸入具有穩健性之模型。例示性自然語言處理器應用包括在人類語言間進行自動化機器翻譯。
用於機器學習之並行處理平台可以被劃分成訓練平台與部屬平台。訓練平台通常是高度並行的,並且包括加速多GPU單節點訓練和多節點、多GPU訓練的最佳化,而部署的機器學習(例如,推理)平台通常包括適合在諸如以下產品中使用的低功率並行處理器:相機、自主機器人和自主載具。 具矩陣加速邏輯之GPGPU
圖19是根據實施例的資料處理系統1900之方塊圖。資料處理系統1900是一種具有處理器1902、統一記憶體1910與包括機器學習加速邏輯的GPGPU 1920之異質處理系統。處理器1902與GPGPU 1920可以是本文所述任何種處理器與GPGPU/並行處理器。處理器1902可對系統記憶體1912中儲存的編譯器1915執行指令。編譯器1915對處理器1902執行以將原始碼1914A編譯成編譯碼1914B。編譯碼1914B可包括可以由處理器1902執行之指令及/或可以由GPGPU 1920執行之指令。在編譯期間,編譯器1915可執行操作以插入元資料,包括有關已編譯碼1914B中存在的資料並行性層級的提示及/或與基於編譯碼1914B要調度的執行緒相關聯的資料局部性的提示。編譯器1915可包括對執行此種操作必須的資訊,或操作可以在運行時間庫1916之輔助下而被執行。在編譯原始碼1914A方面,運行時間庫1916也可輔助編譯器1915,且運行時間庫1916也可包括與在運型時間與編譯碼1914B鏈接之指令,以促進編譯指令在GPGPU 1920上之執行。
統一記憶體1910表示統一位址空間,其可以被處理器1902與GPGPU 1920存取。統一記憶體可包括系統記憶體1912以及GPGPU記憶體1918。GPGPU記憶體1918是在GPGPU 1920位址空間內之記憶體,並可包括系統記憶體1912之若干部分或全部。在一實施例中,GPGPU記憶體1918也可包括至少一部分之任何由GPGPU 1920專門使用之記憶體。在一實施例中,儲存在系統記憶體1912中的編譯碼1914B可以被映射到GPGPU記憶體1918中,以用於由GPGPU 1920存取。
GPGPU 1920包括多個計算區塊1924A-1924N,其可包括本文所述一或多個各式各樣計算單元或執行元件。在一實施例中,GPGPU 1920額外地包括矩陣加速器1923,該矩陣加速器可包括一或多個設計以加速一子集的矩陣運算之特殊功能計算單元。GPGPU 1920也可包括可被計算區塊1924A-1924N與矩陣加速器1923共享之一組資源,該資源包括但不限於一組暫存器1925、電力與性能模組1926與快取1927。在一實施例中,暫存器1925直接與間接可存取之暫存器,其中間接可存取暫存器被最佳化以用於由矩陣加速器1923使用。電力與性能模組1926可經組態以調整針對計算區塊1924A-1924N之電力傳送與時脈頻率,以電力閘計算區塊1924A-1924N內之閒置組件。在各種實施例中,快取1927可包括指令快取及/或較低層級資料快取。
GPGPU 1920可額外包括L3資料快取1930,其可用以快取被矩陣加速器1923及/或計算區塊1924A-1924N內計算元件從統一記憶體1910存取之資料。在一實施例中,L3資料快取1930包括可由計算區塊1924A-1924N內計算元件與矩陣加速器1923共享之共享區域記憶體1932。
在一實施例中,GPGPU 1920包括指令管理邏輯,諸如提取與解碼單元1921以及排程器控制器1922。提取與解碼單元1921包括提取單元與解碼單元,以提取與解碼指令用於被一或多計算區塊1924A-1924N或矩陣加速器1923進行執行。經由排程器控制器1922,指令可被排程到計算區塊1924A-1924N內適當的功能單元或矩陣加速器。在一實施例中,排程器控制器1922是ASIC可組態,以執行進階排程操作。在一實施例中,排程器控制器1922是微控制器或每指令低能量處理核心,其能夠執行從韌體模組載入之排程器指令。
在一實施例中,將被計算區塊1924A-1924N執行之任何功能可直接排程到或卸載到矩陣加速器1923。在各種實施例中,矩陣加速器1923包括處理元件邏輯,該處理元件邏輯經組態以高效的執行矩陣計算操作,諸如由3D圖形或計算渲染器程式所用之乘法與加法運算與點積運算等。在一實施例中,矩陣加速器1923可經組態以加速由機器學習框架所用之操作。在一實施例中,矩陣加速器1923是一種明確組態用以執行特定組之並行矩陣乘法及/或加法運算之特殊應用積體電路。在一實施例中,矩陣加速器1923是一種提供固定功能邏輯之現場可程式閘極陣列(FPGA),該固定功能邏輯可以在工作量之間更新。可由矩陣加速器1923執行之該組矩陣運算可能相對於可由計算區塊1924A-1924N執行之操作較為限縮。然而,相對於計算區塊1924A-1924N,矩陣加速器1923可在顯著較高產量執行此等操作。
圖20描繪根據實施例的由指令管線2000所執行之矩陣運算2005之一實施例。在一實施例中,指令管線2000可經組態以執行矩陣運算2005,諸如,但不限於,點積運算。兩個向量之點積是一等於該向量對應分量的乘積之總和的純量值。點積可如下方程式1所示計算出。
Figure 02_image011
對卷積類神經網路(CNN)而言,點積可用於卷積操作中。圖19描繪使用包括點積運算的矩陣運算2005之二維(2D)卷積。雖然描繪2D卷積,但可使用N維度過濾器對N維度量執行N維度之卷積。接收場磚(receptive field tile)2002強調輸入量緩衝器( input volume buffer)2004中一部份之輸入量。輸入量緩衝器可被儲存在記憶體2030中。可在接收場磚2002與卷積過濾器之內資料之間執行一點矩陣運算2005,以在輸出緩衝器2006中產生資料點,該輸出緩衝器也可被儲存在記憶體2030中。記憶體2030可以是本文所述任何記憶體,包括如圖19中所述系統記憶體1912、GPGPU記憶體1918、或一或多快取記憶體1927與1930。
在輸出緩衝器2006內資料點之組合表示由卷積操作所產生之激活映射。在激活映射中各點是透過橫跨輸入量緩衝器2004滑動接收場磚而產生。激活映射資料可以被輸入到激活函數以判定輸出激活值。在一實施例中,輸入量緩衝器2004之卷積可在框架中界定作高層級矩陣運算1705。該高層級矩陣運算可經由基元運算(諸如基礎線性代數子程式(BLAS)操作)而執行。基元操作可經由被指令管線2000執行之硬體指令來加速。
用以加速硬體指令之指令管線2000可包括指令提取與解碼單元1921與排程器控制器1922,該指令提取與解碼單元1921可提取與解碼硬體指令而該排程器控制器1922可排程經解碼的指令到計算區塊1924A-1924N內一或多執行單元及/或矩陣加速器1923。在一實施例中,硬體指令可以被排程到計算區塊1924A-1924N及卸載到矩陣加速器1923。用以執行矩陣運算2005之一或多硬體指令與相關聯資料可以被儲存在記憶體2030中。硬體指令之輸出也可以被儲存在記憶體2030中。
在一實施例中,矩陣加速器1923可執行一或多硬體指令以利用整合點積邏輯2008(DP邏輯)來執行矩陣運算2005。點積邏輯2008可包括經組態以執行點積運算之一組合之可程式與固定功能硬體。雖然計算區塊1924A-1924N內之功能單元也可經組態以執行點積運算,但點積邏輯2008可經組態以在相對於計算區塊1924A-1924N為顯著較高產量來執行限制子集之點積運算。
在矩陣乘法運算之處理期間,諸如殘差類神經網路(ResNet)-50,橫跨數層之激活矩陣中有顯著百分比的稀疏性(例如,零值)。實際上,在若干情況下,稀疏度可上達高至99.9%。此種高百分比之稀疏矩陣提供處理最佳化之機會,包括旁路掉冗餘記憶體存取與計算。因此,透過節省不必要處理,能量消耗可以被降低。
根據一實施例,矩陣加速器1923提供拼接最佳化,其提供一種對稀疏矩陣可以跳過(或旁路)多磚操作之能力。在此種實施例中,透過包括具有全部0之最大數量磚,矩陣資料可被處理成具有選定以最大化稀疏運用的尺寸之磚。因此,具全部為零之磚(例如,零磚計數)數量越高將賦能較高數量之卷積矩陣運算可以被旁路,導致增強性能。
在一實施例中,矩陣加速器1923接收輸入矩陣資料並檢查資料以判定稀疏度。在此種實施例中,矩陣加速器1923基於判定稀疏度來選擇磚尺寸(例如,4×4或8×8)以最大化稀疏度運用。圖21描繪具有各種磚組態之輸入矩陣資料2100之一實施例。如圖21所示,矩陣資料2100可包括8×8磚2110(例如,2110a與2110b)以及4×4磚2120(例如,2120a與2120b)。雖然被顯示為4×4與8×8實作,但其他實施例可實作不同磚尺寸。
根據一實施例,矩陣加速器1923將接收到矩陣資料變換成子區塊(例如,4×4)並檢查連續子區塊(例如,4)來判定資料之稀疏度,以選擇將處理之磚尺寸(例如,4×4或8×8)。在此種實施例中,點陣圖(bitmap)資料與矩陣資料被接收到並儲存於記憶體中以用於將輸出矩陣寫入數卷積層中。圖22A描繪與矩陣資料子區塊對應的點陣圖之一實施例。
在一實施例中,在點陣圖(或子區塊位元)中各位元值是與矩陣資料之子區塊相關聯。在進一步實施例中,矩陣加速器1923檢查各子區塊位元以判定子區塊是否包含稀疏資料(例如,全為零)。在此種實施例中,只要相關聯子區塊包括全零之值,則一位元被設定成高(例如,邏輯1),並且當子區塊包括至少一非零值時被設定成低(例如,邏輯0)。
在進一步實施例中,矩陣加速器1923檢查與一區塊四個連續(或相鄰)子區塊相關聯之子區塊位元,以判定要處理之磚尺寸。在本實施例中,一旦判定該相關聯子區塊位元各被設定成高(例如,Bit0-Bit3=1111),則矩陣加速器1923對一區塊之子區塊選擇8×8之磚尺寸。因此,在判定所有四個區塊皆具有全零資料時,選定8×8之磚尺寸。8×8磚尺寸之選擇會導致其具有透過跳過操作可以產生輸出矩陣資料之能力,因為磚包括全部稀疏資料。圖22B描繪將處理成8×8磚尺寸之子區塊資料之一實施例。
在進一步實施例中,一旦判定該子區塊位元中至少一者沒有被設定成高(例如,Bit0-Bit3=0111, 1011, 0001等),則矩陣加速器1923選擇4×4之磚尺寸用於處理。因此,在判定該至少一子區塊具有非零資料時,4×4磚尺寸被選定於處理區塊以產生輸出資料。圖22C描繪將處理成4×4磚尺寸之子區塊資料之一實施例。根據一實施例,在寫入到記憶體期間執行上述位元模式檢查(bit pattern checking),並且因此不涉及讀取與寫入資料/矩陣到與自記憶體。
圖23A與23B描繪經實作以處理區塊矩陣資料的脈動管線之實施例。圖23A描繪在矩陣加速器192實作的脈動管線2300之實施例。如圖23A所示,脈動管線2300包括8階段,以處理8×8脈動陣列之矩陣資料。各階段處理載入到暫存器檔案暫存器中之輸入矩陣資料,導致儲存在其他暫存器中的輸出資料(例如,r24[0_7]-r31[0_7])。
根據一實施例,脈動管線2300可經組態以處理4×4磚。在此種實施例中,8階段管線2300經實作成一4+4組態以處理4×4磚尺寸。圖23B描繪4+4組態之實施例。如圖23B所示,管線2300經變換成兩個各具有「4」階段之脈動管線。在一實施例中,實作額外的「附加」操作,以產生與兩個「8×4」管線輸出相等之輸出。在本實施例中,管線變換實作每週期高達6個讀取(或「RD」)埠與高達2個寫入(或「WR」)埠。多餘4個「RD」埠與2個「WR」埠僅需要用於其中對角線非零子區塊或僅發生單一非稀疏區塊之情況。
圖24是描繪用於執行拼接最佳化之處理的一實施例的流程圖。在處理區塊2410,接收輸入矩陣資料。在處理區塊2420,將矩陣資料變換成子區塊(例如,4×4)。在處理區塊2430,取回與矩陣資料相關聯之點陣圖資料。在處理區塊2440,檢查針對一區塊相鄰子區塊的點陣圖中的子區塊位元。
在決策區塊2450,做出有關是否所有的子區塊位元被設定成高(例如,Bit0-Bit4=1111)之判定。若屬實,則在處理區塊2460,第一磚尺寸之矩陣資料表示相鄰子區塊(例如,8×8)被選定。在處理區塊2470,使用稀疏資料8×8磚產生輸出矩陣資料。結果導致實作以產生輸出矩陣資料之矩陣運算可以被旁路。若在決策區塊2450做出一或多磚位元並沒有被設定成高之判定,則在處理區塊2480,表示各子區塊之尺寸(例如,4×4)的第二磚尺寸被選定。在處理區塊2470,對4×4磚執行矩陣運算以產生輸出矩陣資料。
實施例可以被實現為以下任何一種或組合:使用母板互連的一個或多個微晶片或積體電路、固線邏輯、由記憶體裝置儲存並由微處理器執行的軟體、韌體、特殊應用積體電路(ASIC)、及/或現場可程式閘極陣列(FPGA)。術語「邏輯」可包括,透過例示性方式,軟體或硬體及/或軟體與硬體之組合。
例如,可以提供實施例作為電腦程式產品,該電腦程式產品可以包括其上儲存有機器可執行指令的一個或多個機器可讀媒體,該機器可執行指令當由諸如電腦、一網路之電腦或其他電子裝置等一或多個機器執行時,可能導致該一或多機器執行根據此處所述實施例的操作。機器可讀媒體可以包括但不限於軟磁碟、光碟、CD-ROM(光碟唯讀記憶體)和磁光碟、ROM、RAM、EPROM(可抹除可程式唯讀記憶體)、EEPROM(電可抹除可程式唯讀記憶體)、磁卡或光卡、快閃記憶體或適用於儲存機器可執行指令的其他類型的媒體/機器可讀媒體。
此外,實施例可被下載為電腦程式產品,其中該程式可藉由於載波或其他傳播媒介中所體現及/或包括的一或多資料訊號並經由通訊鏈路(例如,數據機及/或網路連接)以從遠端電腦(例如,伺服器)被轉移到請求電腦(例如,用戶端)。
以下子句及/或實例關於進一步實施例或實例。該等實例中的細節可被使用於一或多實施例中的各處。不同實施例或實例之各種特徵可與所包括之若干特徵以各種方式結合,且其它特徵可被省略以適用於各式各樣之不同應用。實例可包括標的,諸如方法、用於執行該方法之動作的機構、至少一機器可讀取媒體,包括指令,當其被機器執行時導致該機器執行該方法之動作、或為用於促進根據本文所述實施例與實例之混合通訊之設備或系統者。
若干實施例相關於實例1,該實例包括一種用以促進矩陣處理之設備,其包含:矩陣加速器,用以接收輸入矩陣資料,將該輸入矩陣資料變換成複數個子區塊,檢查該複數個子區塊中第一區塊以判定該第一區塊是否包含稀疏資料,當判定該第一區塊包含稀疏資料時選擇第一磚尺寸,以及基於該第一磚尺寸產生輸出矩陣資料。
實例2包括實例1之標的,其中該第一磚尺寸包含該第一區塊之尺寸。
實例3包括實例1與2之標的,其中當判定該第一區塊不包含稀疏資料時,該矩陣加速器選擇第二磚尺寸。
實例4包括實例1-3之標的,其中該第二磚尺寸包含子區塊之尺寸。
實例5包括實例1-4之標的,其中該矩陣加速器取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
實例6包括實例1-5之標的,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
實例7包括實例1-6之標的,其中當判定該第一區塊中各個該子區塊包含稀疏資料時,該矩陣加速器選擇該第一磚尺寸。
實例8包括實例1-7之標的,其中當判定該第一區塊中至少一該子區塊不包含稀疏資料時,該矩陣加速器選擇該第二磚尺寸。
若干實施例相關於實例9,該實例包括一種用以促進矩陣處理之方法,其包含:接收輸入矩陣資料;將該輸入矩陣資料變換成複數個子區塊;檢查該複數個子區塊之第一區塊以判定該第一區塊是否包含稀疏資料;當判定該第一區塊包含稀疏資料時,選擇第一磚尺寸;以及基於該第一磚尺寸產生輸出矩陣資料。
實例10包括實例9之標的,其中該第一磚尺寸包含該第一區塊之尺寸。
實例11包括實例9與10之標的,更包含當判定該第一區塊不包含稀疏資料時,選擇第二磚尺寸。
實例12包括實例9-11之標的,更包含取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
實例13包括實例9-12之標的,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
實例14包括實例9-13之標的,進一步包含:當判定該第一區塊中各個該子區塊包含稀疏資料時,選擇該第一磚尺寸;以及當判定該第一區塊中至少一該子區塊不包含稀疏資料時,選擇該第二磚尺寸。
若干實施例相關於實例15,該實例包括一種圖形處理器,其包含:矩陣加速器,用以接收輸入矩陣資料,將該輸入矩陣資料變換成複數個子區塊,檢查該複數個子區塊中第一區塊以判定該第一區塊是否包含稀疏資料,當判定該第一區塊包含稀疏資料時選擇第一磚尺寸;以及脈動管線,以基於該第一磚尺寸產生輸出矩陣資料。
實例16包括實例15之標的,其中該第一磚尺寸包含該第一區塊之尺寸。
實例17包括實例15與16之標的,其中當判定該第一區塊不包含稀疏資料時,該矩陣加速器選擇第二磚尺寸,其中該第二磚尺寸包含該子區塊之尺寸。
實例18包括實例15-17之標的,其中該矩陣加速器取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
實例19包括實例15-18之標的,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
實例20包括實例15-19之標的,其中當判定該第一區塊中各個該子區塊包含稀疏資料時,該矩陣加速器選擇該第一磚尺寸,以及當判定該第一區塊中至少一該子區塊不包含稀疏資料時,該矩陣加速器選擇該第二磚尺寸。
該前述描述與圖式將被理解為係說明性意義,而非限制性意義。本領域中具有通常知識者將理解,在不脫離如所附申請專利範圍所闡述的本發明的更廣泛精神和範圍的情況下,可以對本文所述的實施例進行各種修改和改變。
100:處理系統 102:處理器 104:快取記憶體 106:暫存器檔案 107:處理器核心 108:圖形處理器 109:指令集 110:介面匯流排 111:顯示器裝置 112:加速器 116:記憶體控制器 118:外部圖形處理器 119:外部加速器 120:記憶體裝置 121:指令 122:資料 124:資料儲存裝置 125:觸控感測器 126:無線收發器 128:韌體介面 130:平台控制器集線器 134:網路控制器 140:傳統I/O控制器 142:通用串列匯流排(USB)控制器 143:鍵盤與滑鼠 144:攝影機 146:音訊控制器 200:處理器 202A~N:處理器核心 204A~N:快取單元 206:共享快取單元 208:圖形處理器 210:系統代理器核心 211:顯示器控制器 212:環式互連單元 213:I/O鏈路 214:記憶體控制器 216:匯流排控制器單元 218:嵌入式記憶體模組 219:圖形處理核心 221A:子核心 221B:子核心 221C:子核心 221D:子核心 221E:子核心 221F:子核心 222A:執行單元(EU)陣列 222B:執行單元(EU)陣列 222C:執行單元(EU)陣列 222D:執行單元(EU)陣列 222E:執行單元(EU)陣列 222F:執行單元(EU)陣列 223A:執行緒調度與執行緒間通訊(TD/IC)邏輯 223B:執行緒調度與執行緒間通訊(TD/IC)邏輯 223C:執行緒調度與執行緒間通訊(TD/IC)邏輯 223D:執行緒調度與執行緒間通訊(TD/IC)邏輯 223E:執行緒調度與執行緒間通訊(TD/IC)邏輯 223F:執行緒調度與執行緒間通訊(TD/IC)邏輯 224A:執行單元(EU)陣列 224B:執行單元(EU)陣列 224C:執行單元(EU)陣列 224D:執行單元(EU)陣列 224E:執行單元(EU)陣列 224F:執行單元(EU)陣列 225A:3D取樣器 225B:3D取樣器 225C:3D取樣器 225D:3D取樣器 225E:3D取樣器 225F:3D取樣器 206A:媒體取樣器 206B:媒體取樣器 206C:媒體取樣器 206D:媒體取樣器 206E:媒體取樣器 206F:媒體取樣器 227A:渲染器處理器 227B:渲染器處理器 227C:渲染器處理器 227D:渲染器處理器 227E:渲染器處理器 227F:渲染器處理器 228A:共享的區域記憶體(SLM) 228B:共享的區域記憶體(SLM) 228C:共享的區域記憶體(SLM) 228D:共享的區域記憶體(SLM) 228E:共享的區域記憶體(SLM) 228F:共享的區域記憶體(SLM) 230:固定功能區塊 231:幾何/固定功能管線 232:3D管線 233:圖形微控制器 234:媒體管線 235:共享功能邏輯 236:共享記憶體及/或快取記憶體 237:幾何/固定功能管線 238:附加的固定功能邏輯 239:圖形處理單元(GPU) 240A~N:多核心群組 241:排程器/調度器 242:暫存器檔案 243:圖形核心 244:張量核心 245:射線追蹤核心 246:中央處理單元(CPU) 247:L1快取與共享記憶體單元 248:記憶體控制器 249:記憶體 250:輸入/輸出(I/O)電路 251:I/O記憶體管理單元(IOMMU) 252:I/O裝置 253:L2快取 254:L1快取 255:指令快取 256:共享記憶體 257:命令處理器 258:執行緒調度器 260A~N:計算單元 261:向量暫存器 262:純量暫存器 263:向量邏輯單元 264:純量邏輯單元 265:區域共享記憶體 266:程式計數器 267:恆定快取 268:記憶體控制器 269:內部直接記憶體存取(DMA)控制器 270:GPGPU 271:記憶體 272:裝置記憶體 300:圖形處理器 302:顯示器控制器 304:區塊影像轉移(BLIT)引擎 306:視訊編解碼器 310A:圖形引擎磚 310B:圖形引擎磚 310C:圖形引擎磚 310D:圖形引擎磚 310:圖形處理引擎(GPE) 312:3D管線 314:記憶體介面 315:3D/媒體子系統 316:媒體管線 318:顯示器裝置 320:圖形處理器 322:圖形處理引擎叢集 323A:磚互連 323B:磚互連 323C:磚互連 323D:磚互連 323E:磚互連 323F:磚互連 324:構造互連 325A:記憶體互連 325B:記憶體互連 325C:記憶體互連 325D:記憶體互連 326A:記憶體 326B:記憶體 326C:記憶體 326D:記憶體 328:主機介面 330:計算加速器 332:計算引擎叢集 336:L3快取 340A:計算引擎磚 340B:計算引擎磚 340C:計算引擎磚 340D:計算引擎磚 403:命令串流器 410:圖形處理引擎 414:圖形核心陣列 415A:圖形核心 415B:圖形核心 416:共享功能邏輯 418:統一返回緩衝器 420:共享功能邏輯 421:取樣器 422:數學 423:執行緒間通訊(ITC) 425:快取 500:執行緒執行邏輯 502:渲染器處理器 504:執行緒調度器 505:射線追蹤器 506:指令快取 507A:執行緒控制邏輯 507B:執行緒控制邏輯 508A~N:執行單元 508:執行單元 509A~N:執行單元 510:取樣器 511:共享區域記憶體 512:資料快取 514:資料埠 522:執行緒仲裁器 524:通用暫存器檔案陣列(GRF) 526:架構暫存器檔案陣列(ARF) 530:傳送單元 532:分支單元 534:SIMD浮點單元(FPU) 535:SIMD ALU 537:指令提取單元 600:執行單元 601:執行緒控制單元 602:執行緒狀態單元 603:指令提取/預取單元 604:指令解碼單元 606:暫存器檔案 607:傳送單元 608:分支單元 610:計算單元 611:ALU單元 612:脈動陣列 613:數學單元 700:圖形處理器指令格式 710:128位元指令格式 712:指令運算碼 714:指令控制欄位 716:執行尺寸欄位 718:目的地運算元 720:來源運算元src0 722:來源運算元src1 724:來源運算元src2 726:存取/位址模式欄位 730:64位元緊密指令格式 740:運算碼解碼 742:移動與邏輯運算碼群組 744:流程控制指令群組 746:雜項指令群組 748:並行數學指令群組 750:向量數學群組 800:圖形處理器 802:環狀互連 803:命令串流器 805:頂點提取器 807:頂點渲染器 811:凸包渲染器 813:曲面細分器 817:域渲染器 819:幾何渲染器 820:幾何管線 823:媒體管線 829:截割器 830:媒體管線 831:執行緒調度器 834:視訊前端 837:媒體引擎 840:顯示器引擎 841:2D引擎 843:顯示器控制器 850:執行緒執行邏輯 851:L1快取 852A:執行單元 852B:執行單元 854:取樣器 856:資料埠 858:紋理快取 870:演色輸出管線 873:光柵化器與深度測試組件 875:共享L3快取 877:像素操作組件 878:演色快取 879:深度快取 900:圖形處理器命令格式 902:客戶端 904:命令操作碼 905:次運算碼 906:資料 908:命令尺寸 910:圖形處理器命令序列 912:管線刷新命令 913:管線選擇命令 914:管線控制命令 916:返回緩衝器狀態命令 920:管線判定 922:3D管線 924:媒體管線 930:3D管線狀態 932:3D基元 934:執行命令 940:媒體管線狀態 942:媒體物件命令 944:執行命令 1000:資料處理系統 1010:3D圖形應用程式 1012:渲染器指令 1014:可執行指令 1016:圖形物件 1020:作業系統 1022:圖形API 1024:前端渲染器編譯器 1026:使用者模式圖形驅動器 1027:後端渲染器編譯器 1028:作業系統核心模式功能 1029:核心模式圖形驅動器 1030:處理器 1032:圖形處理器 1034:通用處理器核心 1050:系統記憶體 1100:IP核心研發系統 1110:軟體模擬 1112:模擬模型 1115:暫存器轉移層級(RTL)設計 1120:硬體模型 1130:設計機構 1140:非揮發性記憶體 1150:有線連接 1160:無線連接 1165:第三方協力廠商製造機構 1170:積體電路封裝總成 1172:硬體邏輯 1173:互連結構 1174:硬體邏輯 1175:記憶體小晶片 1180:基板 1182:橋接器 1183:封裝互連 1185:構造 1187:橋接器 1190:封裝總成 1191:I/O 1192:快取記憶體 1193:硬體邏輯 1194:封裝總成 1195:可互換小晶片 1196:基底小晶片 1197:橋接器互連 1198:基底小晶片 1200:系統單晶片積體電路 1205:應用處理器 1210:圖形處理器 1215:影像處理器 1220:視訊處理器 1225:USB控制器 1230:UART控制器 1235:SPI/SDIO控制器 1240:I2 S/I2 C控制器 1245:顯示器裝置 1250:高解析多媒體介面(HDMI)控制器 1255:行動業界處理器介面(MIPI)顯示器介面 1260:快閃記憶體子系統 1265:記憶體控制器 1270:安全引擎 1305:頂點處理器 1310:圖形處理器 1315A~N:片段處理器 1320A:記憶體管理單元(MMU) 1320B:記憶體管理單元(MMU) 1325A:快取 1325B:快取 1330A:電路互連 1330B:電路互連 1340:圖形處理器 1345:核心間工作管理器 1355A~N:渲染器核心 1358:拼接單元 1400:機器學習軟體推疊 1402:機器學習應用程式 1404:機器學習框架 1406:計算框架 1408:GPGPU驅動器 1410:GPGPU硬體 1502:輸入 1504:第一卷積層 1506:第二卷積層 1508:完全連接的層 1512:對卷積層之輸入 1514:卷積層 1516:卷積階段 1518:偵測器階段 1520:池化階段 1522:下一層 1600:RNN 1602:輸入層 1604:隱藏層 1605:饋送機制 1606:輸出層 1702:訓練資料集 1704:訓練框架 1706:未訓練之類神經網路 1708:經訓練類神經網路 1712:新資料 1714:結果 1802:模型並行性 1804:資料並行性 1806:模型與資料並行性 1900:資料處理系統 1902:處理器 1910:統一記憶體 1912:系統記憶體 1914A:原始碼 1914B:編譯碼 1915:編譯器 1916:運行時間庫 1918:GPGPU記憶體 1920:GPGPU 1921:提取與解碼單元 1922:排程器控制器 1923:矩陣加速器 1924A~N:計算區塊 1925:暫存器 1926:電力與性能模組 1927:快取 1930:L3資料快取 1932:共享區域記憶體 2000:指令管線 2002:接收場磚 2004:輸入量緩衝器 2005:矩陣運算 2006:輸出緩衝器 2008:整合點積邏輯 2030:記憶體 2100:輸入矩陣資料 2110:磚 2110a:磚 2110b:磚 2120:磚 2120a:磚 2120b:磚 2300:脈動管線 2410:處理區塊 2420:處理區塊 2430:處理區塊 2440:處理區塊 2450:決策區塊 2460:處理區塊 2470:處理區塊 2480:處理區塊
為了可以詳細地理解本實施例的上述特徵的方式,可以透過參考實施例來對以上簡要概述的實施例進行更具體的描述,其中一些實施例在所附圖式中示出。然而,應註明,所附圖式僅描繪典型實施例且因此不應被視為在其範圍上是限制性的。
[圖1]是根據實施例的處理系統之方塊圖;
[圖2A-2D]描繪由本文所述實施例所提供的計算系統與圖形處理器;
[圖3A-3C]描繪由實施例所提供之附加圖形處理器與計算加速器架構之方塊圖;
[圖4]是根據若干實施例之圖形處理器之圖形處理引擎的方塊圖;
[圖5A-5B]說明執行緒執行邏輯500,其包括在根據實施例的圖形處理器核心中採用的一陣列之處理元件;
[圖6]描繪根據實施例的附加執行單元600;
[圖7]是描繪根據若干實施例之圖形處理器指令格式之方塊圖;
[圖8]是根據另一實施例的圖形處理器之方塊圖;
[圖9A與9B]描繪根據若干實施例之圖形處理器命令格式與命令序列;
[圖10]描繪根據若干實施例針對資料處理系統之例示性圖形軟體架構;
[圖11A-11D]描繪根據實施例之積體電路封裝總成;
[圖12]是根據實施例的描繪例示性系統單晶片積體電路之方塊圖;
[圖13A與13B]是描繪附加例示性圖形處理器之方塊圖;
[圖14]描繪根據實施例的機器學習軟體推疊;
[圖15A-15B]描繪數層之例示性深度類神經網路;
[圖16]描繪例示性遞迴類神經網路;
[圖17]描繪深度類神經網路之訓練與部屬;
[圖18]是描繪分散式學習之方塊圖;
[圖19]是根據實施例的資料處理系統之方塊圖;
[圖20]描繪根據實施例的由指令管線所執行之矩陣運算;
[圖21]描繪拼接矩陣資料之一實施例;
[圖22A-22C]描繪子區塊之實施例;
[圖23A與23B]描繪脈動管線之實施例;以及
[圖24]是描繪用於執行拼接最佳化之一實施例的流程圖。
2410:處理區塊
2420:處理區塊
2430:處理區塊
2440:處理區塊
2450:決策區塊
2460:處理區塊
2470:處理區塊
2480:處理區塊

Claims (20)

  1. 一種用以促進矩陣處理之設備,其包含: 矩陣加速器,用以接收輸入矩陣資料,將該輸入矩陣資料變換成複數個子區塊,檢查該複數個子區塊中第一區塊以判定該第一區塊是否包含稀疏資料,當判定該第一區塊包含稀疏資料時選擇第一磚尺寸,以及基於該第一磚尺寸產生輸出矩陣資料。
  2. 如請求項1所述之設備,其中該第一磚尺寸包含該第一區塊之尺寸。
  3. 如請求項2所述之設備,其中當判定該第一區塊不包含稀疏資料時,該矩陣加速器選擇第二磚尺寸。
  4. 如請求項3所述之設備,其中該第二磚尺寸包含子區塊之尺寸。
  5. 如請求項1所述之設備,其中該矩陣加速器取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
  6. 如請求項5所述之設備,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
  7. 如請求項6所述之設備,其中當判定該第一區塊中各個該子區塊包含稀疏資料時,該矩陣加速器選擇該第一磚尺寸。
  8. 如請求項7所述之設備,其中當判定該第一區塊中至少一該子區塊不包含稀疏資料時,該矩陣加速器選擇該第二磚尺寸。
  9. 一種用以促進矩陣處理之方法,其包含: 接收輸入矩陣資料; 將該輸入矩陣資料變換成複數個子區塊; 檢查該複數個子區塊之第一區塊以判定該第一區塊是否包含稀疏資料; 當判定該第一區塊包含稀疏資料時,選擇第一磚尺寸;以及 基於該第一磚尺寸產生輸出矩陣資料。
  10. 如請求項9所述之方法,其中該第一磚尺寸包含該第一區塊之尺寸。
  11. 如請求項10所述之方法,更包含當判定該第一區塊不包含稀疏資料時,選擇第二磚尺寸。
  12. 如請求項9所述之方法,更包含取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
  13. 如請求項12所述之方法,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
  14. 如請求項13所述之方法,進一步包含: 當判定該第一區塊中各個該子區塊包含稀疏資料時,選擇該第一磚尺寸;以及 當判定該第一區塊中至少一該子區塊不包含稀疏資料時,選擇該第二磚尺寸。
  15. 一種圖形處理器,其包含: 矩陣加速器,用以接收輸入矩陣資料,將該輸入矩陣資料變換成複數個子區塊,檢查該複數個子區塊中第一區塊以判定該第一區塊是否包含稀疏資料,當判定該第一區塊包含稀疏資料時選擇第一磚尺寸;以及 脈動管線,以基於該第一磚尺寸產生輸出矩陣資料。
  16. 如請求項15所述之圖形處理器,其中該第一磚尺寸包含該第一區塊之尺寸。
  17. 如請求項16所述之圖形處理器,其中當判定該第一區塊不包含稀疏資料時,該矩陣加速器選擇第二磚尺寸,其中該第二磚尺寸包含該子區塊之尺寸。
  18. 如請求項15所述之圖形處理器,其中該矩陣加速器取回具有複數個子區塊位元之點陣圖資料,該複數個子區塊位元各與該複數個子區塊中一者相關聯。
  19. 如請求項18所述之圖形處理器,其中檢查該第一區塊包含檢查與該第一區塊中各個該子區塊相關聯的子區塊位元,以判定各個該子區塊是否包含稀疏資料。
  20. 如請求項19所述之圖形處理器,其中當判定該第一區塊中各個該子區塊包含稀疏資料時,該矩陣加速器選擇該第一磚尺寸,以及當判定該第一區塊中至少一該子區塊不包含稀疏資料時,該矩陣加速器選擇該第二磚尺寸。
TW109131699A 2019-12-11 2020-09-15 稀疏矩陣最佳化機制 TW202122994A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/710,081 US11127108B2 (en) 2019-12-11 2019-12-11 Sparse matrix optimization mechanism
US16/710,081 2019-12-11

Publications (1)

Publication Number Publication Date
TW202122994A true TW202122994A (zh) 2021-06-16

Family

ID=76085506

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109131699A TW202122994A (zh) 2019-12-11 2020-09-15 稀疏矩陣最佳化機制

Country Status (7)

Country Link
US (2) US11127108B2 (zh)
JP (1) JP2021093131A (zh)
KR (1) KR20210074173A (zh)
CN (1) CN112950448A (zh)
BR (1) BR102020019652A2 (zh)
DE (1) DE102020130184A1 (zh)
TW (1) TW202122994A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI798972B (zh) * 2021-12-01 2023-04-11 大陸商星宸科技股份有限公司 智慧處理器裝置與降低記憶體頻寬的方法
TWI809527B (zh) * 2021-10-14 2023-07-21 清源智慧健康醫學科技股份有限公司 利用自然語言資料偕同人工智慧建構pdca專家系統之方法及其pdca專家系統之應用方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110366245B (zh) * 2018-03-26 2021-11-02 维沃移动通信有限公司 取消上行传输的方法和设备
US11599799B1 (en) * 2019-09-17 2023-03-07 Rockwell Collins, Inc. Digital signal processing with neural networks
US11586601B2 (en) * 2020-02-05 2023-02-21 Alibaba Group Holding Limited Apparatus and method for representation of a sparse matrix in a neural network
US20200377057A1 (en) * 2020-08-14 2020-12-03 Intel Corporation One-Point Relative Voltage Fingerprinting

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10061748B2 (en) * 2015-12-11 2018-08-28 Sap Se Adaptive tile matrix representation and multiplication
US10691610B2 (en) * 2017-09-27 2020-06-23 Apple Inc. System control using sparse data
US11816563B2 (en) * 2019-01-17 2023-11-14 Samsung Electronics Co., Ltd. Method of enabling sparse neural networks on memresistive accelerators

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI809527B (zh) * 2021-10-14 2023-07-21 清源智慧健康醫學科技股份有限公司 利用自然語言資料偕同人工智慧建構pdca專家系統之方法及其pdca專家系統之應用方法
TWI798972B (zh) * 2021-12-01 2023-04-11 大陸商星宸科技股份有限公司 智慧處理器裝置與降低記憶體頻寬的方法

Also Published As

Publication number Publication date
US11127108B2 (en) 2021-09-21
US20220092723A1 (en) 2022-03-24
KR20210074173A (ko) 2021-06-21
US11443407B2 (en) 2022-09-13
BR102020019652A2 (pt) 2021-06-15
CN112950448A (zh) 2021-06-11
DE102020130184A1 (de) 2021-06-17
US20210183002A1 (en) 2021-06-17
JP2021093131A (ja) 2021-06-17

Similar Documents

Publication Publication Date Title
US10817042B2 (en) Power savings for neural network architecture with zero activations during inference
US11900575B2 (en) Systems and methods for tone mapping of high dynamic range images for high-quality deep learning based processing
US20220027704A1 (en) Per kernel kmeans compression for neural networks
CN113366435A (zh) 压缩技术
CN112785486A (zh) 用于图像去噪声的自适应可变形核预测网络
TW202147242A (zh) 基於深度學習的自適應超取樣樣本選擇
US11443407B2 (en) Sparse matrix optimization mechanism
CN111694601A (zh) 使用细粒度依赖性检查加速同步并基于可用共享存储器空间调度优化的图形系统和方法
CN113495793A (zh) 用于缓冲器共享的方法和装置
CN113066042A (zh) 用于评估3d点云的质量的装置和方法
US20230289399A1 (en) Matrix operation optimization mechanism
CN115526760A (zh) 用于动态地改变高速缓存中的数据优先级的方法和装置
CN114693501A (zh) 用于图像处理的引导式神经网络模型的装置和方法
CN112785481A (zh) 动态分割激活和核以提高存储器效率
CN112785482A (zh) 用于将可执行对象适配到处理单元的系统和方法
CN113256745A (zh) 用于基于重要度值来编码的方法和装置
CN114677258A (zh) 用于视觉渲染和合成的空间稀疏卷积模块的方法和设备
CN113424156A (zh) 用于利用队列和过渡存储以实现改善的低等待时间高带宽管芯上数据检取的系统和方法
CN117121045A (zh) 空间接近数据的压缩和交织
TWI842948B (zh) 促進矩陣乘法運算的裝置、方法及硬體加速器
TW202121264A (zh) 點積乘法器機制
CN115794228A (zh) 用于点云处理的方法和装置
CN115526766A (zh) 用于基元的重叠像素的动态依赖关系记分牌