TW202143031A - 使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速 - Google Patents

使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速 Download PDF

Info

Publication number
TW202143031A
TW202143031A TW109145287A TW109145287A TW202143031A TW 202143031 A TW202143031 A TW 202143031A TW 109145287 A TW109145287 A TW 109145287A TW 109145287 A TW109145287 A TW 109145287A TW 202143031 A TW202143031 A TW 202143031A
Authority
TW
Taiwan
Prior art keywords
pipeline
memory
graphics
processing
logic
Prior art date
Application number
TW109145287A
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
Priority claimed from US16/913,800 external-priority patent/US11204977B2/en
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW202143031A publication Critical patent/TW202143031A/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8046Systolic arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/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/60Memory management
    • 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/08Learning methods

Landscapes

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

Abstract

本文描述一種加速器裝置,其包含主機介面,與主機介面耦接的構造互連以及與構造互連耦接的一個或多個硬體磚,該一個或多個硬體磚包含稀疏矩陣乘法加速硬體,該稀疏矩陣乘法加速硬體包含具反饋輸入的脈動陣列。

Description

使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速
本案係主張於2020年5月5日申請的印度臨時專利申請案第202041019059號之優先權,其茲以引用方式併入本文中。
本發明係關於使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速。
用於機器學習工作負載之脈動矩陣乘法有相當大比例為零(稀疏-資料工作負載)。由於這些為零的乘法可以被跳過,因而改善整體性能。現有的脈動架構可為工作負載中的稀疏度提供支援,但此架構可能無法適度地擴縮。
本文描述使用具反饋輸入之脈動陣列實現可擴縮的稀疏矩陣乘法加速的裝置、系統、方法。
出於解釋的目的,闡述許多具體細節以供徹底地理解下述各種實施例。然而,本領域技術人員可清楚瞭解即使沒有這些具體細節亦可實施這些實施例。在其他情況下,習知的結構和裝置以方塊圖形式表示,以避免模糊基本原理,並提供對實施例更徹底的理解。雖然以下的一些實施例依據圖形處理器進行描述,但本文所述的技術和教示可應用於各種類型的電路或半導體裝置,包含通用處理裝置或圖形處理裝置。本文提及「一個實施例」或「一實施例」係表示所描述之與該實施例有關或相關聯的特定特徵、結構或特性可包含於此等實施例至少其中之一中。然而,在說明書中各處出現的用語「在一個實施例中」並非必然皆指同一實施例。
在以下敘述和請求項中,可能使用術語「耦接」和「連接」及其衍生詞。應當理解,這些術語並非意旨彼此之間是同義字。「耦接」係用於表示兩個或多個元件可相互協作或互動,其彼此可直接或可不直接實體接觸或電性接觸。「已連接」係用於表示在彼此耦接的兩個或更多元件之間建立通訊。
以下的描述中,圖1至13A-13B提供結合或涉及各種實施例的示例性資料處理系統和圖形處理器邏輯的概述。圖14-26提供了各種實施例的具體細節。依據圖形處理器描述以下實施例的某些態樣,而其他態樣則依據諸如中央處理單元(CPU)之類的通用處理器描述。類似的技術和教示可應用於其他類型的電路或半導體裝置,包含但不限於多整合式核心處理器(many integrated core processor)、GPU群或現場可程式閘極陣列(FPGA)的一個或多個實例。一般而言,這些教示適用於任何操作或處理影像(例如,樣本、像素)、頂點資料或幾何資料的處理器或機器,或者執行用於機器學習和高性能計算應用的平行處理操作的任何處理器或機器。 系統概述
圖1係根據一實施例的處理系統100的方塊圖。系統100可用於單處理器桌上型系統、多處理器工作站系統或具有大量處理器102或處理器核心107的伺服器系統中。在一實施例中,系統100是併入系統單晶片(SoC)積體電路內之處理平台,以用於具有對區域或廣域網路的有線或無線連接之行動、手持或嵌入式裝置(諸如物聯網(IoT)裝置等)中。
在一實施例中,系統100可包含、耦接、或整合於下述者中:基於伺服器之遊戲平台;遊戲主控台(包含遊戲與媒體主控台);行動遊戲主控台(手持式遊戲主控台);或線上遊戲主控台。在若干實施例中,系統100是行動電話、智慧型手機、平板計算裝置或行動網際網路連接裝置(諸如具有低內部儲存容量之筆記型電腦等)的一部分。處理系統100亦可包含、耦接、或整合於下述者中:穿戴式裝置(諸如智慧型手錶穿戴式裝置等);具擴增實境(AR)或虛擬實境(VR)功能增強的智慧型眼鏡或服裝,可提供視覺、音訊或觸覺輸出,以補充真實世界中的視覺、音訊或觸覺體驗,或者另外提供文字、音訊、圖形、視訊、全像影像或視訊或觸覺反饋;其他擴增實境(AR)裝置;或其他虛擬實境(VR)裝置。若干實施例中,處理系統100包含或者是電視機或機上盒裝置的一部分。在一實施例中,系統100可包含、耦接、或整合於自動駕駛車輛,諸如公車、拖曳車(tractor trailer)、汽車、馬達或電動自行車、飛機或滑翔翼(或其任意組合)等。自動駕駛車輛可使用系統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於執行應用程式或處理時使用。記憶體控制器116亦與可選的外部圖形處理器118耦接,該外部圖形處理器118可與處理器102中一個或多個個圖形處理器108通訊以執行圖形與媒體操作。在若干實施例中,加速器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等)提供較高的頻寬與較低的延遲。由於該高頻寬、低延遲互連以及網路架構,因此資料中心在使用上可池化(pool)資源(諸如:記憶體、加速器(例如,GPU、圖形加速器、FPGA、ASIC、神經網路及/或人工智慧加速器等)以及實體上分開的資料儲存驅動器),並根據需要將它們提供給計算資源(例如,處理器),從而使計算資源能夠像其是本地(local)資源般一樣存取池化的資源。
電力供應或電源可提供電壓及/或電流至系統100或本文所述之任何組件或系統。在一範例中,電源包含AC至DC(交流至直流)配接器,其用以插入牆壁插座中。此種交流電可為可再生能源(例如太陽能)電源。在一範例中,電源包含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是一個圖形核心切片的示例,並且本文所述的圖形處理器可基於目標功率和性能範圍(performance envelope)包含多個圖形核心切片。各圖形處理器核心219可包含與多個子核心221A-221F(亦被稱為子切片)耦接之固定功能區塊230,該子核心包含通用之模組化區塊與固定功能邏輯。
在若干實施例中,固定功能區塊230包含可被圖形處理器核心219中所有子核心共享之幾何/固定功能管線231,例如在較低性能及/或較低功率圖形處理器的實現中。在各種實施例中,幾何/固定功能管線231包含3D固定功能管線(例如,如圖3A與圖4中的3D管線312,如下述)、視訊前端單元、執行緒生成器與執行緒調度器、以及統一返回緩衝區管理器,其管理統一返回緩衝區(例如,圖4中的統一返回緩衝區418,如下述)。
在一實施例中,固定功能區塊230亦包含圖形SoC介面232、圖形微控制器233以及媒體管線234。圖形SoC介面232提供圖形處理器核心219與系統單晶片積體電路內其他處理器核心之間的介面。圖形微控制器233為可程式子處理器,其可配置以管理圖形處理器核心219中各種功能,包含執行緒調度、排程與搶占。媒體管線234(例如,圖3A與圖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賦能命令緩衝區從命令串流器和全局執行緒調度器的接收,該命令串流器和全局執行緒調度器被配置以向圖形處理器內的一個或多個圖形核心中的每一者提供命令和指令。當將執行媒體操作時,命令和指令可被調度到媒體管線234;或當將執行圖形處理操作時,命令和指令可被調度到幾何與固定功能管線(例如,幾何與固定功能管線231、幾何與固定功能管線237)。
圖形微控制器233可被配置以執行針對圖形處理器核心219之各種排程與管理任務。在一實施例中,圖形微控制器233可對在子核心221A-221F中的執行單元(EU)陣列222A-222F、224A-224F內的各種圖形平行引擎執行圖形及/或計算工作負載排程。在本排程模型中,執行於對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可取代幾何/固定功能管線231包含於在固定功能區塊230中,且可包含相同或類似的邏輯單元。
在一實施例中,圖形處理器核心219包含附加的固定功能邏輯238,其可包含各種被圖形處理器核心219所用之固定功能加速邏輯。在一實施例中,附加的固定功能邏輯238包含附加幾何管線,用於位置唯一著色(position-only shading)。在位置唯一著色中,存在兩個幾何管線,即在幾何/固定功能管線238、231內之完整幾何管線以及剔除管線,該剔除管線可為包含於附加的固定功能邏輯238內之附加的幾何管線。在一實施例中,剔除管線為完整幾何管線之精簡版本。完整管線與剔除管線可執行相同應用程式之不同實例,各實例具有各自的上下文。位置唯一著色可隱藏丟棄的三角形之長剔除運行,從而使著色(shading)在某些情況下可更早完成。舉例而言,在一實施例中,附加的固定功能邏輯238內之剔除管線邏輯可與主應用程式平行執行位置著色器,並通常比完整管線較快產生關鍵結果,這是因為剔除管線僅提取並著色頂點之位置屬性而無執行光柵化(rasterization)及像素至訊框緩衝區之顯像(rendering)。剔除管線可使用產生之關鍵結果來計算所有三角形之能見度資訊,無需考慮此等三角形是否被剔除。完整管線(其在本實例中可被稱為重播管線)可使用能見度資訊以跳過剔除之三角形,以僅將最終通過光柵化階段之可見三角形進行著色。
在一實施例中,附加的固定功能邏輯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耦接到一個或多個I/O裝置252,諸如數位訊號處理器(DSP)、網路控制器或使用者輸入裝置等。晶載互連可用以將I/O裝置252耦接到GPU 239與記憶體249。I/O電路250之一個或多個I/O記憶體管理單元(IOMMU)251將I/O裝置252直接耦接到系統記憶體249。在一實施例中,IOMMU 251管理多個頁表集,以將虛擬位址映射到系統記憶體249中的實體位址。在本實施例中,I/O裝置252、CPU 246與GPU 239可共享相同的虛擬位址空間。
在一實現中,IOMMU 251支援虛擬化。在此情況下,其可管理第一組頁表,以將訪客/圖形虛擬位址映射到訪客/圖形實體位址,以及管理第二組頁表,以將訪客/圖形實體位址映射到系統/主機實體位址(例如,在系統記憶體249內)。第一組與第二組頁表集中的每一者的基礎位址可被儲存在控制暫存器中,並在上下文切換上替換掉(例如,以便將相關的一組頁表之存取提供給新的上下文)。雖然在圖2C中未繪示出,但核心243、244、245中的每一者及/或多核心群組240A-240N中的每一者可包含轉譯後備緩衝區(TLB)以快取訪客虛擬到訪客實體轉譯、訪客實體到主機實體轉譯以及訪客虛擬到主機實體轉譯。
在一實施例中,CPU 246、GPU 239以及I/O裝置252被整合到單一半導體晶片及/或晶片封裝上。所描繪之記憶體249可被整合到相同晶片上或可透過晶片外介面耦接到記憶體控制器248。在一實現中,記憶體249包含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/媒體子系統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中詳述。
圖形處理器320可被配置使用非一致記憶體存取(NUMA)系統,其中記憶體裝置326A-326D與相關聯之圖形引擎磚310A-310D耦接。給定的記憶體裝置可被圖形引擎磚存取,而非直接與其連接的磚。然而,在存取本地磚(local tile)的情況下,對記憶體裝置326A-326D的存取延遲可為最低的。在一個實施例中,啟用快取同調NUMA(ccNUMA)系統,其使用磚互連323A-323F使圖形引擎磚310A-310D中的快取控制器之間得以通訊,以在多個快取儲存相同的記憶體位置時保持一致的記憶體影像。
圖形處理引擎群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,其可被配置成全裝置快取(device-wide cache)。計算加速器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,其將命令串流提供至3D管線312及/或媒體管線316。在若干實施例中,命令串流器403係與記憶體(其可為系統記憶體,或一個或多個內部快取記憶體與共享快取記憶體)耦接。在若干實施例中,命令串流器403接收來自記憶體之命令並將該命令傳送至3D管線312及/或媒體管線316。命令係自環形緩衝區直接提取,該環形緩衝區儲存針對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著色器語言之支援,並可執行與多個著色器相關聯之多個同行執行緒(simultaneous execution thread)。
在若干實施例中,圖形核心陣列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中的一個或多個執行單元上實例化所請求的執行緒。舉例而言,幾何管線可調度頂點、鑲嵌(tessellation)或幾何著色器至執行緒執行邏輯以供處理用。在若干實施例中,執行緒調度器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)大小資料元素)。然而,不同的向量寬度與暫存器大小是可能的。
在一實施例中,一個或多個執行單元可被組合成具有對融合的EU為共用的之執行緒控制邏輯(507A-507N)之融合的執行單元509A-509N,其中執行緒控制邏輯(507A-507N)對融合的EU為共用的。多個EU可被融合至一個EU群組中。融合的EU群組中的各EU可被配置以執行各自的SIMD硬體執行緒。在融合的EU群組中EU的數量可根據實施例而有所差異。此外,每個EU可執行各種SIMD寬度,包含但不限於SIMD8、SIMD16與SIMD32。各融合的圖形執行單元509A-509N包含至少兩個執行單元。舉例而言,融合的執行單元509A包含第一EU 508A、第二EU 508B、與對第一EU 508A與第二EU 508B為共用的之執行緒控制邏輯507A。執行緒控制邏輯507A控制在該融合的圖形執行單元509A上執行之執行緒,允許融合的執行單元509A-509N內之各EU可透過使用共用的指令指標暫存器來進行執行。
執行緒執行邏輯500中包含一個或多個內部指令快取(例如506),以快取用於執行單元的執行緒指令。在一些實施例中,包含一個或多個資料快取(例如512)以在執行緒執行期間快取執行緒資料。在執行邏輯500上執行之執行緒亦可明確地儲存管理的資料於共享區域記憶體511中。在若干實施例中,包含取樣器510以提供用於3D操作之紋理取樣以及用於媒體操作之媒體取樣。在若干實施例中,取樣器510包含專用紋理或媒體取樣功能,以在取樣處理期間並在提供取樣資料給執行單元之前,處理紋理或媒體資料。
在執行期間,圖形與媒體管線透過執行緒生成與調度邏輯,傳送執行緒啟動請求到執行緒執行邏輯500。一旦一群組之幾何物件已經被處理與光柵化成像素資料後,在著色器處理器502內之像素處理器邏輯(例如,像素著色器邏輯、片段著色器邏輯等)被調用,以進一步計算輸出資訊並使得結果可被寫入到輸出表面(例如,顏色緩衝區、深度緩衝區、模板緩衝區等)。在若干實施例中,像素著色器或片段著色器計算在光柵化物件上內插的各種頂點屬性之值。在若干實施例中,在著色器處理器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)與細粒度(fine-grained)交錯多重執行緒(IMT)之組合。架構具有模組化配置,其可在設計時間基於每執行單元之同時執行緒之目標數量與暫存器之數量來進行微調,其中執行單元資源被劃分予用於執行多個同時執行緒之邏輯。可由圖形執行單元508所執行的邏輯執行緒之數量並不受限於硬體執行緒之數量,且多個邏輯執行緒可被分配給各硬體執行緒。
在一實施例中,圖形執行單元508可共同發出多個指令,其可各為不同的指令。圖形執行單元執行緒508之執行緒仲裁器522可調度指令至傳送單元530、分支單元532、或SIMD FPU534其中之一以供執行。各執行緒可存取GRF 524內128個通用暫存器,其中各暫存器可儲存32位元組,其可作為32位元資料元素之SIMD 8元件向量被存取。在一實施例中,各執行單元執行緒可存取GRF 524內之4 Kbytes,雖然實施例未受限於此,且在其他實施例中可提供更多或更少的暫存器資源。在一實施例中,圖形執行單元508被劃分成可獨立執行計算操作之七個硬體執行緒,儘管每執行單元之執行緒數量亦可根據實施例而有所變化。舉例而言,在一實施例中,支援多達16個硬體執行緒。在七個執行緒可存取4Kbytes之實施例中,GRF 524可儲存總共28Kbytes。在16個執行緒可存取4Kbytes之實施例中,GRF 524可儲存總共64Kbytes。彈性定址模式可允許暫存器可一起定址以有效建構較寬的暫存器或用以表示步幅型矩形區塊資料結構(strided rectangular block data structure)。
在一實施例中,記憶體操作、取樣器操作與其他較長延遲系統通訊透過「傳送」指令而被調度,該傳送指令是被訊息傳遞傳送單元530所執行。在一實施例中,分支指令被調度到專用分支單元532,以促進SIMD發散與最終收斂。
在一實施例中,圖形執行單元508包含一個或多個SIMD浮點單元(FPU)534以執行浮點運算。在一實施例中,FPU 534亦支援整數計算。在一實施例中,FPU 534可SIMD執行高達M個數量之32位元浮點(或整數)運算,或SIMD執行高達2M個16位元整數或16位元浮點運算。在一實施例中,FPU之至少其中之一提供擴充數學能力以支援高處理量超越數學函數(high-throughput transcendental math functions)與雙重精度54位元浮點。在若干實施例中,亦存在一組8位元整數SIMD ALU 535,且可專門地被最佳化以執行與機器學習計算相關聯之操作。
在一實施例中,圖形執行單元508的多個實例的數個陣列可在圖形子核心群組(例如,子切片)中實例化。為了擴縮性,產品架構師可選擇每子核心群組中執行單元之確切數量。在一實施例中,執行單元508可在複數個執行通道上執行指令。在另一個實施例中,在圖形執行單元508上執行之各執行緒係在不同通道上執行。
圖6描繪根據實施例的附加執行單元600。執行單元600可為計算最佳化執行單元,例如用於圖3C之計算引擎磚340A-340D中,但不限於此。執行單元600之變體亦可用於如圖3B中之圖形引擎磚310A-310D中。在一實施例中,執行單元600包含執行緒控制單元601、執行緒狀態單元602、指令提取/預取單元603、以及指令解碼單元604。執行單元600額外地包含暫存器堆606,其儲存可被分配給執行單元內之數個硬體執行緒的數個暫存器。執行單元600額外地包含傳送單元607與分支單元608。在一實施例中,傳送單元607與分支單元608之操作可類似於圖5B中圖形執行單元508之傳送單元530與分支單元532。
執行單元600亦包含計算單元610,其包含多個不同類型之功能單元。在一實施例中,計算單元610包含ALU單元611,其包含算數邏輯單元陣列。ALU單元611可被配置以執行64位元、32位元與16位元之整數與浮點運算。整數與浮點運算可同時被執行。計算單元610亦可包含脈動陣列(systolic array)612與數學單元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可用作次級解碼器,以將複雜指令解碼為組成微操作(constituent micro-operation)。
執行單元600額外地包含暫存器堆606,其可被在執行單元600上執行之硬體執行緒使用。暫存器堆606中的暫存器被劃分予用以執行在執行單元600之計算單元610內之多個同時執行緒之邏輯。可由圖形執行單元600所執行的邏輯執行緒之數量並不受限於硬體執行緒之數量,且多個邏輯執行緒可被分配給各硬體執行緒。基於支援硬體執行緒之數量,暫存器堆606的大小在不同實施例可有所不同。在一實施例中,暫存器重新命名可用以將暫存器動態分配給硬體執行緒。
圖7是描繪根據若干實施例之圖形處理器指令格式700之方塊圖。在一個或多個實施例中,圖形處理器執行單元支援具有多種格式之指令的指令集。實線框描繪通常被包含在執行單元指令中的組件,而虛線則包含可選或僅包含在指令之子集合中的組件。在若干實施例中,所描述且描繪之指令格式700為巨集指令,因為其為供應至執行單元之指令而非在指令被處理後由指令解碼產生之微操作。
在若干實施例中,圖形處理器執行單元原生支援在128位元指令格式710中的指令。基於所選指令、指令選項與運算元數量,64位元壓縮指令格式730可用於若干指令。原生128位元指令格式710提供對所有指令選項之存取,而若干選項與操作在64位元格式730中有所限制。因實施例的不同,64位元格式730中可用的原生指令可能有所變化。在若干實施例中,透過使用索引欄位713中一組索引值,指令部分被壓縮。執行單元硬體基於索引值參照一組壓縮表並使用壓縮表輸出以重建原生指令成128位元指令格式710。可使用其他的指令大小與格式。
針對各種格式,命令運算碼(opcode)712定義執行單元將執行之操作。執行單元在各運算元之多個資料元素上平行執行各指令。舉例而言,因應加法指令,執行單元在表示紋理元件或畫面元件之各顏色通道上執行同時加法運算。在默認情況下,執行單元在運算元之所有資料通道執行各指令。在若干實施例中,指令控制欄位714賦能對特定執行選項之控制,諸如通道選擇(例如,預測)與資料通道順序(例如,調配(swizzle))。對於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位元組對準之定址。
在一實施例中,存取/位址模式欄位726之位址模式部分(address mode portion)判定該指令是使用直接或間接定址。當使用直接暫存器定址模式時,指令中的位元直接提供一個或多個運算元之暫存器位址。當使用間接暫存器定址模式時,可基於指令中位址暫存器值與位址立即欄位來計算出一個或多個運算元之暫存器位址。
在若干實施例中,基於運算碼712位元欄位來將指令分組,以簡化運算碼解碼740。針對8位元運算碼,第4、5、與6位元允許執行單元可判定運算碼類型。所示之精準運算碼分組僅是一範例。在若干實施例中,移動與邏輯運算碼群組742包含資料移動與邏輯指令(例如,移動(mov)與比較(cmp))。在若干實施例中,移動與邏輯群組742共享五個最高有效位元(MSB),其中移動(mov)指令的形式是0000xxxxb以及邏輯指令的形式是0001xxxxb。流控制(flow control)指令群組744(例如,呼叫,跳越(jmp))包含形式為0010xxxxb(例如,0x20)的指令。雜項指令群組746包含指令之混合,包含形式為0011xxxxb(例如,0x30)的同步指令(例如,等待、傳送)。平行數學指令群組748包含形式為0100xxxxb(例如,0x40)的分量式(component-wise)算數指令(例如,加法、乘法(mul))。平行數學群組748在資料通道上平行執行算數運算。向量數學群組750包含形式為0101xxxxb(例如,0x50)的算數指令(例如,dp4)。向量數學群組對向量運算元執行諸如點積計算等算數。在一實施例中,所描繪的運算碼解碼740可用以判定執行單元中何部分將用以執行解碼的指令。舉例而言,若干指令可被指定為脈動指令,其將由脈動陣列所執行。其他指令(諸如,光線追蹤指令(未繪示出))可被路由至在執行邏輯的一切片或一分區中之光線追蹤核心或光線追蹤邏輯。圖形管線
圖8係另一實施例的圖形處理器800之方塊圖。圖8之元件,其具有與本文其他任意圖式之元件相同的參考編號(或名稱)者係可以類似於本文其他處所述者的方式來運作或運行,但不限於此。
在若干實施例中,圖形處理器800包含幾何管線820、媒體管線830、顯示引擎840、執行緒執行邏輯850以及顯像輸出管線870。在若干實施例中,圖形處理器800為多核心處理系統中的圖形處理器,該系統包含一個或多個通用處理核心。圖形處理器係藉由暫存器寫入到一個或多個控制暫存器(未繪示出)或透過環形互連802發送至圖形處理器800之命令所控制。在若干實施例中,環形互連802將圖形處理器800耦接到其他的處理組件,諸如其他的圖形處理器或通用處理器。來自環形互連802之命令被命令串流器803解譯,以及命令串流器803提供指令至幾何管線820或媒體管線830中的個別組件。
在若干實施例中,命令串流器803將頂點提取器805之操作導向,該頂點提取器805從記憶體讀取頂點資料並執行由命令串流器803所提供的頂點處理命令。在若干實施例中,頂點提取器805提供頂點資料至頂點著色器807,其對各頂點執行座標空間轉換與打光操作。在若干實施例中,藉由透過執行緒調度器831來調度執行緒至執行單元852A-852B,頂點提取器805與頂點著色器807執行頂點處理指令。
在若干實施例中,執行單元852A-852B係向量處理器陣列,其具有用於執行圖形與媒體操作之指令集。在若干實施例中,執行單元852A-852B具有附接的L1快取851,其對各陣列為特定的或在多個陣列之間為共享的。快取可被配置成資料快取、指令快取或單一快取,其被劃分以在不同分區中包含資料與指令。
在若干實施例中,幾何管線820包含鑲嵌組件以執行3D物件之硬體加速鑲嵌。在若干實施例中,可程式外殼著色器811配置鑲嵌操作。可程式域著色器817提供鑲嵌輸出之後端評估。鑲嵌器(tessellator)813在外殼著色器811之方向上操作並包含特殊用途邏輯,以基於粗糙幾何模型產生一組詳細幾何物件,該粗糙幾何模型被作為輸入提供到幾何管線820。在若干實施例中,若無使用鑲嵌,則鑲嵌組件(例如,外殼著色器811、鑲嵌器813與域著色器817)可被略過。
在若干實施例中,完整的幾何物件可透過被調度到執行單元852A-852B之一個或多個執行緒被幾何著色器819處理,或者可直接進入至剖切器(clipper)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(若存在),以判定要執行之操作。客戶端單元使用資料欄位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管線狀態930的3D管線922,或開頭為媒體管線狀態940的媒體管線924。
用以配置3D管線狀態930之命令包含3D狀態設定命令,其係針對頂點緩衝區狀態、頂點元件狀態、恆定顏色狀態、深度緩衝區狀態以及其他在處理3D基元命令之前需要配置之狀態變數。至少部分基於所用之特定的3D API,來判定此等命令之值。在若干實施例中,3D管線狀態930的命令亦能夠選擇性停用或略過特定管線元件,若這些這些元件將不會被使用。
在若干實施例中,3D基元932的命令係用以提交3D基元,以由3D管線處理。透過3D基元932的命令傳遞到圖形處理器之命令與相關聯參數轉送到圖形管線中的頂點提取函數(vertex fetch function)。頂點提取函數使用3D基元932的命令資料來產生頂點資料結構。頂點資料結構儲存於一個或多個返回緩衝區中。在若干實施例中,透過頂點著色器,3D基元932的命令用以對3D基元執行頂點操作。為了處理頂點著色器,3D管線922調度著色器執行緒到圖形處理器執行單元。
在若干實施例中,透過執行934的命令或事件而觸發3D管線922。在若干實施例中,暫存器寫入觸發命令執行。在若干實施例中,透過命令序列中的「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)。應用程式亦包含適用於通用處理器核心1034執行的機器語言中之可執行指令1014。應用程式亦包含由頂點資料定義的圖形物件1016。
在若干實施例中,作業系統1020是微軟公司之Microsoft® Windows®作業系統、專屬類UNIX作業系統或使用Linux核心(kernel)之變體的開源類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可包含功能、行為及/或計時模擬。接著,可自模擬模型1112建立或合成暫存器轉移層級(RTL)設計1115。RTL設計1115為積體電路之行為的抽象,它模擬硬體暫存器之間的數位訊號之流動,包含使用模擬的數位訊號所執行之相關聯的邏輯。除了RTL設計1115以外,亦可建立、設計或合成在邏輯層級或電晶體層級處之較低階設計。因此,初始設計與模擬在特定細節上可能會有所不同。
RTL設計1115或等效物可進一步被設計設備合成為硬體模型1120,其可使用硬體描述語言(HDL)或若干種其他實體設計資料的表示法。可進一步模擬或測試HDL,以驗證IP核心設計。透過使用非揮發性記憶體1140(例如,硬碟、快閃記憶體或任何非揮發性儲存媒體),IP核心設計可被儲存以供交付至第三方協力廠商製造設備1165。替代地,IP核心設計可經由有線連接1150或無線連接1160傳送(例如,透過網際網路)。製造設備1165可接著至少部分基於IP核心設計製造積體電路。製造的積體電路可被配置以執行根據本文所述至少一實施例之操作。
圖11B描繪根據本文所述若干實施例之積體電路封裝總成1170之橫截面側視圖。積體電路封裝總成1170描繪本文所述一個或多個處理器或加速器裝置之實現。封裝總成1170包含連接至基板1180之硬體邏輯1172、1174的多個單元。邏輯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的頂部。構造1185可為晶片上網路(network on a chip )的互連或另一種形式的分封交換構造,其於封裝總成的組件之間交換資料封包。
在各種實施例中,封裝總成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邏輯核心之小晶片可插入至可互換小晶片插槽中,以使混合處理器(hybrid processor)設計能夠混合匹配(mix and match)不同技術的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(例如,1355A、1355B、1355C、1355D、1355E、1355F至1355N-1及1355N),其提供統一著色器核心架構,其中單一核心或類型或核心可執行所有類型之可程式著色器碼,包含著色器程式碼以實現頂點著色器、片段著色器及/或計算著色器。著色器核心的確切數量在不同實施例與實現上可有所不同。額外地,圖形處理器1340包含核心間任務管理器1345,其作為執行緒調度器以將執行緒調度到一個或多個著色器核心1355A-1355N與拼貼單元1358,以加速用於基於磚顯像之拼貼操作,其中針對一場景的顯像操作在影像空間中細分,例如,以利用場景中區域空間同調性或以最佳化內部快取之使用。 機器學習工作負載之張量加速邏輯
圖14係根據實施例的資料處理系統1400之方塊圖。資料處理系統1400係一種具有處理器1402、統一記憶體1410與包含機器學習加速邏輯的GPGPU 1420之異質處理系統。處理器1402與GPGPU 1420可為本文所述任意種處理器與GPGPU/平行處理器。處理器1402可執行儲存於系統記憶體1412中用於編譯器1415的指令。編譯器1415在處理器1402上執行,以將原始碼1414A編譯成編譯碼1414B。編譯碼1414B可包含可由處理器1402執行之指令及/或可由GPGPU1420執行之指令。在編譯期間,編譯器1415可執行操作以插入元資料,包含存在編譯碼1414B中的資料平行化層級的提示及/或與關於與基於編譯碼1414B調度的執行緒相關聯的資料局部性的提示。編譯器1415可包含執行這些操作所必須的資訊,或這些操作可在運行時間庫1416的輔助下執行。運行時間庫1416亦可輔助編譯器1415編譯原始碼1414A,亦可包含在運行時間中與編譯碼1414B連接的指令,以促進在GPGPU 1420上執行編譯指令(compiled instruction)。
統一記憶體1410表示一個統一位址空間,其可被處理器1402與GPGPU 1420存取。統一記憶體可包含系統記憶體1412以及GPGPU記憶體1418。GPGPU記憶體1418為在GPGPU 1420位址空間內之記憶體,並可包含系統記憶體1412之若干部分或全部。在一實施例中,GPGPU記憶體1418亦可包含至少一部分之任何由GPGPU 1420專用之記憶體。在一實施例中,儲存在系統記憶體1412中的編譯碼1414B可被映射到GPGPU記憶體1418中,以供GPGPU 1420存取。
GPGPU 1420包含多個計算區塊1424A-1424N,其可包含本文所述的各種處理資源其中之一或多者。處理資源可為或包含各種不同的計算資源,例如執行單元、計算單元、串流多處理器、圖形多處理器或多核心組。在一實施例中,GPGPU 1420額外地包含張量(例如:矩陣)加速器1423,其可包含一個或多個特殊功能計算單元,此係被設計以加速多個矩陣運算(例如,點積等)中的一子集。張量加速器1423亦可被稱為張量加速器或張量核心。在一實施例中,張量加速器1423內的邏輯組件可分佈於多個計算區塊1424A-1424N的處理資源中。
GPGPU 1420亦可包含一組可被計算區塊1424A-1424N與張量加速器1423共享的資源,其包含但不限於一組暫存器1425、電源與效能模組1426與快取1427。在一實施例中,暫存器1425包含直接與間接可存取之暫存器,其中,間接可存取暫存器被最佳化以由張量加速器1423使用。電源與效能模組1426可被配置以為計算區塊1424A-1424N調整對計算區塊1424A-1424N內之電閘閒置組件的供電與時脈頻率。在各種實施例中,快取1427可包含指令快取及/或較低層級資料快取。
GPGPU 1420可額外地包含L3資料快取1430,其可用以快取被張量加速器1423及/或計算區塊1424A-1424N內計算元件自統一記憶體1410存取之資料。在一實施例中,L3資料快取1430包含可由計算區塊1424A-1424N內計算元件與張量加速器1423共享之共享區域記憶體1432。
在一實施例中,GPGPU 1420包含指令處理邏輯,諸如提取與解碼單元(fetch and decode unit)1421以及排程器控制器(scheduler controller)1422。提取與解碼單元1421包含提取單元與解碼單元,用於提取與解碼指令以供計算區塊1424A-1424N其中之一或多者或張量加速器1423執行。透過排程器控制器1422,指令可被排程到計算區塊1424A-1424N內適當的功能單元或張量加速器。在一實施例中,排程器控制器1422為ASIC,其可配置以執行進階排程操作。在一實施例中,排程器控制器1422為微控制器或每指令低功耗處理核心(low energy-per-instruction processing core),其能夠執行從韌體模組載入之排程器指令。
在一實施例中,可以直接將計算區塊1424A-1424N執行的一些功能排程到或卸載至張量加速器1423。在各種實施例中,張量加速器1423包含處理元件邏輯,該處理元件邏輯被配置以有效地執行矩陣計算運算,諸如由3D圖形或計算著色器程式所用之乘法與加法運算與點積運算等。在一實施例中,張量加速器1423可被配置以加速由機器學習框架使用之操作。在一實施例中,張量加速器1423為一種明確地被配置以執行特定一組平行矩陣乘法及/或加法運算之特殊應用積體電路。在一實施例中,張量加速器1423為一種提供固定功能邏輯之現場可程式閘極陣列(FPGA),該固定運作邏輯可在工作負載之間更新。相對於計算區塊1424A-1424N所能執行的操作,張量加速器1423所能執行的該組矩陣運算可能較為侷限。然而,相對於計算區塊1424A-1424N,張量加速器1423能以顯著較高的處理量執行這些操作。
圖15描繪根據一實施例,由指令管線1500所執行之矩陣運算1505。在一實施例中,指令管線1500可被配置以執行矩陣運算1505,諸如,但不限於,點積運算。兩個向量之點積是一個純量值,其等於此兩個向量對應分量的乘積之總和。點積可如下公式(1)所示計算出。
Figure 02_image001
點積可用於卷積神經網路(CNN)的卷積運算。圖15描繪二維(2D)卷積,其使用包含點積運算的矩陣運算1505。雖然描繪2D卷積,但可使用N維度過濾器對N維體積執行N維度之卷積。接受域磚(receptive field tile) 1502強調輸入體積緩衝區(input volume buffer)1504中輸入體積的一部分。輸入體積緩衝區可被儲存於記憶體1530中。點積矩陣運算1505可在接受域磚1502中的資料與卷積過濾器中的資料之間執行,以在輸出緩衝區1506中產生資料點,該輸出緩衝區亦可被儲存在記憶體1530中。記憶體1530可為本文所述任何記憶體,包含如圖14中所述系統記憶體1412、GPGPU記憶體1418、或一個或多個快取記憶體1427與1430。
輸出緩衝區1506中的資料點之組合表示由卷積操作所產生之激活映射。激活映射中的每個點都是透過在輸入體積緩衝區1504上滑動接受域磚而產生。激活映射資料可被輸入至激活函數以判定輸出激活值。在一實施例中,在框架中,輸入體積緩衝區1504之卷積可定義為高階矩陣運算1505。該高階矩陣運算可透過基元運算(諸如基礎線性代數子程式(BLAS)運算)而執行。基元運算可透過指令管線1500執行的硬體指令來加速。
用以加速硬體指令之指令管線1500可包含指令提取與解碼單元1421與排程器控制器1422,該指令提取與解碼單元1421可提取與解碼硬體指令而該排程器控制器1422可排程已解碼的指令至計算區塊1424A-1424N內的一個或多個處理資源及/或張量加速器1423。在一實施例中,可將硬體指令排程至計算區塊1424A-1424N及卸載到張量加速器1423。執行矩陣運算1505的一個或多個硬體指令與相關聯的資料可被儲存於記憶體1530中。硬體指令的輸出亦可被儲存於記憶體1530中。
在一實施例中,張量加速器1423可執行一個或多個硬體指令以使用整合的脈動陣列1508(DP邏輯)來執行矩陣運算1505。脈動陣列1508可包含可程式與固定功能硬體的組合,其可被配置以執行點積運算。雖然計算區塊1424A-1424N內之功能單元亦可被配置以執行點積運算,但脈動陣列1508可被配置以相對於計算區塊1424A-1424N具有顯著較高的處理量來執行侷限的點積運算子集合。 使用具反饋輸入之脈動陣列之擴縮稀疏矩陣乘法加速
本文描述使用具反饋輸入之脈動陣列實現擴縮稀疏矩陣乘法加速之架構。該架構在資料顯示大量零之工作負載中加速脈動矩陣乘法。這種架構易於擴縮,保留為了利用自工作負載的資料中發現的稀疏度而採用之最佳化所受到的利益,並容許增加指令吞吐量。相對於其他脈動陣列,優點包含面積縮小、功耗降低以及性能提升。藉由減少在高度稀疏的資料負載下的計算數量,此架構改善脈動點積累加運算的性能。與先前的架構相比,計算量減少使得功耗降低。藉由簡化脈動陣列的設計,該架構也比現有的脈動陣列有更好的擴縮。簡化的設計使該架構可廣泛地併入至加速器設計中,以增加那些加速器的矩陣處理吞吐量。
用於機器學習演算法之計算的資料顯示大量作為輸入元素的零。在神經網路應用中,此現象係由實現的網路之拓撲及建模的神經元之特性自然地造成。舉例而言,在全互連神經網路中,神經元的行或層的輸出連接至下一層中各神經元的輸入。網路由許多層組成,各層可能都具有大量的神經元。計算神經元之輸出的最後階段係執行激活函數。當神經元之輸入的計算為正值時,此函數通常輸出對正函數(positive function)的求值(evaluation),而當神經元之輸入的計算為負值時,輸出為零。因此,神經元的大量輸出結果可為零,並且在神經網路之計算的下一步,饋送至下一個網路層。
在執行具有大量層和神經元的神經網路時,每一層由神經元之輸入的權重值之矩陣和神經元之輸入值之矩陣來表示。神經元的所有輸入都乘以其權重,然後加到神經元之其他輸入的結果中。然後,套用激活函數以得到饋送至下一個網路層的神經元的輸出。為了快速計算神經元的輸入和權重的乘法和加法,許多種技術已於硬體中使用。與本發明有關的係使用脈動陣列進行乘法和累加運算。
圖16描繪包含乘法器與加法器電路的脈動陣列1600,其以管線的形式組織。第一輸入矩陣的輸入1612A-1612H由標記為Src1和Src1+1到Src1+7之輸入中所包含的資料元素表示。輸入1610A-1610B對應至第二個輸入矩陣,並標記為Src2。輸入1602(其可能包含初始累加器值)可作為Src0提供。脈動陣列1600的處理元件1611A-1611H作為一管線結構運作,並且每個級(stage)在個時脈週期執行。在每個週期中,每個級都可接收一個新的src2輸入,其可與一個新的Src1輸入或一個較舊的Src1輸入進行計算。一個Src2輸入與八個Src1輸入一起運算(例如,每級一個Src1輸入)。Src2輸入之通道(channel)的資料元素在處理元件1611A-1611H的所有通道廣播。然後,處理元件與Src1輸入的所有通道一起運算Src2通道。在第一個時脈週期中,Src1輸入與Src2的第一通道的資料元素一起運算。在下一個週期中,第二個Src1(標記為Src1+1)與Src2的第二個通道的資料元素一起運算。此序列在管線的8個級上重複。每個級都將其運算加到前一級的輸出中。在整個管線級中,多個Src2輸入以管線的形式進行運算。隨著第一Src2輸入的連續通道通過管線級,可在第一級提供新的Src2輸入。
最後一級的輸出1622標記為Dst。其中,d為脈動深度,e為每個通道的資料元素數量,通道的輸出由下面的公式(2)描述:
Figure 02_image003
如公式(2)所示,每個通道可包含多個資料元素,對其平行執行運算。在一個實施例中,儘管可為每個通道配置不同數量的元素,但是每個通道表示四個元素資料向量。在一個實施例中,通道內的資料元素的數量可基於每個資料元素的大小而有所變化。舉例而言,可使用每個元素具有8位元資料類型的四個元素向量,兩個具有16位元資料類型的元素向量,八個具有4位元資料類型(例如INT4)的元素向量或16個具有2位元資料類型(例如INT2)的元素向量來執行點積。可根據Src1和Src2的資料類型自動調整通道數。指令更可指定欲用於該指令之所需的脈動深度。
在一個實施例中,處理元件1611A-1611H可直接自通用暫存器堆讀取輸入1610A-1610H、1612A-1612H。在一個實施例中,脈動陣列1600包含邏輯,用以自通用暫存器堆讀取輸入1610A-1610H、1612A-1612H,並將輸入資料儲存在脈動陣列內部的暫存器、緩衝區或記憶體中。然後,內部邏輯可將輸入資料元素饋送到處理元件1611A-1611H進行處理。可將輸出1622寫入到脈動陣列1600的內部暫存器或記憶體中及/或直接寫入通用暫存器堆中。
在一個實施例中,當判定輸入至一個級中的乘法器/加法器之元素為零時,可略過乘法/加法而僅傳播先前的輸入。當輸入矩陣是稀疏的(例如,包含大量的零)時,需要執行的運算量就會減少。一些實現可略過乘法/累加級,以避免消耗功率進行乘法/加法運算。然而,簡單地略過運算會導致脈動鏈中存在閒置級。舉例而言,如果Src2輸入的元素全為零,則略過與該元素相關聯的該級會節省電源。然而,在該週期中將不執行任何運算。因此,運算的吞吐量將仍然未提高。其他實現可能會重新排列輸入,如此一來,可略過陣列的整個部分。由於添加額外的硬體來重新排列輸入,因此重新排列輸入會增加擴充成本。架構必須考慮輸入缺乏稀疏度的情況,其將會需要使用管線的全部深度。因此,應該將架構設計為所有級隨時都可供使用。
本文在各種實施例中描述最佳化的架構,以在避免上述問題的同時以某種方式處理稀疏輸入。實施例提供了一種模組化脈動陣列,其可容易地擴縮以滿足不同產品的需求,並允許僅計算非零元素,而無需額外的硬體或閒置時脈週期。這些概念將在此說明書接下來的部分循序漸進地描述。 具反饋輸入之矩陣乘法加速器
脈動陣列1600為具累加之八個深度乘法/加法陣列,且可稱為DPAS(點積累加脈動)陣列。這種架構的深度有益於某些產品、專案及/或使用案例。其他產品、專案及/或使用案例可能不需要這樣深度的陣列,且將因陣列具有較低吞吐量、較小面積及/或較低功耗而從中受益。另外,其他產品、專案及/或使用案例可能會受益於藉由使用較深的管線深度而獲得的較高的DPAS吞吐量。為了減少脈動陣列中使用的硬體數量,同時保留用於更深層陣列的相同程式設計模型,將反饋輸入加入至深度減小版本的脈動陣列中如圖16所示。
圖17A-17B描繪使用四個深度的脈動陣列1700來計算八個脈動級(systolic stage)的等效陣列。圖17A顯示從外部源接收Src0輸入並使用Src1和Src2輸入處理前四個級的陣列。陣列的輸出被反饋至圖17B所示的第二步驟。圖17B顯示使用包含已處理值以及Src1和Src2輸入的反饋資料來計算接下來的四個級。
如圖17A所示,脈動陣列1700可接收輸入1602(如Src0輸入),並透過資料選擇器1704讀取(1702)輸入1602。資料選擇器1704在輸入1602和反饋輸入1706之間進行選擇。處理元件1611A-1611D可以類似於脈動陣列1600的方式處理輸入1610A-1610D和1612A-1612D。如果四個級足以完成運算,則處理元件1611D可透過資料選擇器1724將輸出1622寫入(1722)至指定的Dst暫存器或記憶體。在需要更多級的情況下,資料選擇器1724可寫入反饋輸出1726,其作為反饋輸入1706提供至處理元件1611A。
如圖17B所示,在一個實施例中,反饋輸入1706可由處理元件1611A-1611D進一步處理。反饋輸入1706包含已處理值。在一個實施例中,反饋輸入1706更可包含輸入1610E-1610H、輸入1612E-1612H,其可在處理前四個級時預取(pre-fetch)。資料選擇器1704選擇反饋輸入1706以作為處理元件1611A的輸入。接著,處理元件1611A-1611D可處理輸入1610E-1610H及1612E-1612H。隨後,資料選擇器1724可將第八級結果作為輸出1622寫入(1722)至指定的Dst暫存器。
圖16和圖17A-17B的陣列的時序圖如圖18A-18B所示。
圖18A-18B顯示兩個時序圖1800、1850。圖18A顯示與圖16所示的8個深度的脈動陣列1600相對應的時序圖1800。圖18B顯示與圖17A-17B所示的具反饋輸入之脈動陣列相對應的時序圖1850。多個時脈週期如圖所示。
如圖18A所示,時序圖1800顯示讀取週期1802,其對應於脈動陣列1600的讀取邏輯讀取欲被饋送至陣列的輸入。脈動週期1804與如何在陣列的每個級中處理這些輸入相對應。寫入週期1806對應至輸出邏輯,其將輸出寫入至指定的目的地位置。在讀取週期1802的週期0中讀取之輸入由脈動陣列在脈動週期1804的週期0-7中處理。在讀取週期1802的週期1中讀取之輸入,在脈動週期1804的週期1-8中處理。在脈動週期1804的週期0開始之處理在寫入週期1806的週期「N」中輸出。在一個實施例中,N的值可與脈動陣列的深度相關。在脈動週期1804的週期1中開始之處理在週期1-8中進行處理並在寫入週期1806的週期N+1中輸出。由於陣列的管線性質,在週期N和N+1產生的輸出之計算將由脈動陣列的各個管線級(級1到級8)平行執行。
讀取週期1802的週期領先脈動週期1804一個或多個週期。舉例而言,讀取週期1802的週期0可出現在脈動週期1804的週期0之前。在一個實施例中,讀取週期1802的週期1可與脈動週期1804的週期0同時地出現。在脈動週期1804的週期0中,脈動陣列的級1基於在讀取週期的週期0中讀取的輸入來計算Src0+Src1*Src2.0。Src1的元素0-7中的每一元素都與Src2的元素0平行相乘,並加到對應的Src0的元素0-7中。第1級產生的結果將傳遞到第2級。在脈動週期1804的週期1中,級2累加級1在週期0中計算的結果,其結果為[Src1+1]*Src2.1,其中Src2的元素1乘以[Src1+1]的每個元素。Src1保留在級1,這樣在週期1,級1計算具下一個Src0輸入及Src2輸入之[Src0+1]+Src1* [Src2+1]。在級1中,Src1的元素0-7中的每個元素與[Src2 +1]的元素0平行相乘,並加到對應的[Src0+1]的元素中。對於每個級和每個週期,處理皆以這種模式繼續進行,並自寫入週期1806的週期N開始,從級8輸出結果。
如圖18B所示,時序圖1850顯示圖17A-17B的脈動陣列1700的處理過程,自脈動週期1854的週期0開始對在讀取週期1852的週期0讀取的第一組輸入進行處理,並以與圖16中脈動陣列1600的八個深度管線的前四個級相同的方式進行。可理解的是,在圖18B中,讀取週期1852不一定呈現與脈動週期1854中對應的週期對準。脈動陣列1700的讀取邏輯可以與脈動陣列1600相同的方式讀取第一組輸入。在讀取週期1852的週期0至3中讀取的前四個輸入可藉由脈動陣列1700以管線的形式處理。在寫入週期1856中標記為「N」的週期中,產生輸出。因此,在脈動陣列1700之週期N的第一輸出的延遲與在脈動陣列1600相同。然而,由於反饋造成在寫入週期1856的週期N+8至N +11中寫入之Dst3和Dst4的輸出之間存在延遲,使得脈動陣列1700的吞吐量降低。
對於脈動陣列1700,反饋始於脈動週期1854的週期4。反饋開始直到週期7。一旦反饋始於脈動週期1854的週期4,處理元件只讀取Src1輸入,如脈動週期1854的週期4、5、6和7之虛線輸入所表示。下一組src0和src2輸入將由處理元件從脈動週期1854的週期8開始讀取。讀取邏輯可延遲對Src0和Src2輸入的讀取,直到需要這些輸入為止,或者如圖所示,可連同Src1輸入一起讀取這些輸入。一旦讀取輸入,這些輸入可以由脈動陣列緩衝並重新使用。
相對於脈動陣列1600,具反饋之矩陣乘法加速器(脈動陣列1700)的優點可總結如下:脈動陣列1700可使用較少的硬體來計算與脈動陣列1600類似的管線深度。脈動陣列1700允許使用與脈動陣列1600相同的指令,因而允許為脈動陣列1600開發的工作負載在脈動陣列1700中重複使用。脈動陣列1700因使用更少的管線級,功耗更小。相對於脈動陣列1600,針對讀取和寫入,脈動陣列1700可在減小的頻寬下運作。脈動陣列1700可以任何數量的級來實現,儘管使用二的倍數可能是最佳的,以為了凸顯以下所示的實施例的特徵。雖然整個脈動陣列1700的架構有所減少,但可藉由平行實現脈動陣列1700的多個實例來達成與脈動陣列1600相同的吞吐量。 具反饋輸入之可擴縮的矩陣乘法加速器
第二實施例藉由使用平行單元使用同時指令執行來增加的吞吐量。乘法加速器的多個實例或路徑平行運行。這些實例可共享Src1,或可具有獨立的Src1輸入。每個路徑會有自己的Src2輸入及Src0輸入。這些實例會具有自己的Src2輸入及Src0輸入。圖19顯示了深度為四個級的二個路徑的版本。另外,圖20顯示使用深度為二個級的四個路徑的版本。
圖19描繪二路徑矩陣乘法加速器1900,其中每一者路徑的深度為4個級。該二路徑矩陣乘法加速器1900包含用於Src0輸入的輸入邏輯1902A-1902B,用於儲存從輸入邏輯1910A-1910B接收的資料元素的輸入緩衝區1911A-1911B,以及用於Src1以儲存從共享輸入邏輯1912接收的資料元素的輸入緩衝區1913A-1913B。每個級包含一對可平行操作的處理元件。第一級包含處理元件1931A-1931B,第二級包含處理元件1932A-1932B,第三級包含處理元件1933A-1933B,第四級包含處理元件1934A-1934B。每個處理元件1931A-1931B、1932A-1932B、1931A-1933B、1934A-1934B的硬體邏輯可與脈動陣列1600或脈動陣列1700的處理元件(例如,處理元件1611A-1611D)的硬體邏輯相同或類似,並且可以相同的製程技術或更先進的製程技術生產。相對於脈動陣列1600的實現,該二路徑矩陣乘法加速器1900的處理元件更可以更高的頻率運作。處理元件可使用更先進的製程技術來生產。
可使用與資料選擇器1704、1724相同或類似的資料選擇器來實現反饋。取決於讀取邏輯的配置,輸入資料可預先被預取至輸入緩衝區中,或者在輸入至處理元件1931A-1931B之前的一個或多個週期從二路徑矩陣乘法加速器1900內的暫存器或快取中讀取。第四級的處理元件1934A-1934B可反饋至對應的第一級的處理元件1931A-1931B中。動態邏輯深度可以四的倍數實現。在配置邏輯級的數量後,結果可由輸出邏輯1922A-1922B寫入至指定的目的地。
圖20描繪四路徑矩陣乘法加速器2000,其中每一者路徑的深度為2級。四路徑矩陣乘法加速器2000包含與二路徑矩陣乘法加速器1900相同數量的處理元件,而處理元件被配置以具有兩倍的路徑,但每個路徑的深度是一半。四路徑矩陣乘法加速器2000包含用於Src0的輸入邏輯2002A-2002D,用於Src2以儲存由輸入邏輯2010A-2010D讀取的輸入元素的輸入緩衝區2011A-211D,以及用於Src1以儲存由共享輸入邏輯2012讀取的輸入元素的輸入緩衝區2013A-2013D。處理元件2031A-2031B賦能級1的平行處理。處理元件2032A-2032B賦能級2的平行處理。每個路徑的級2可反饋至級1或透過輸出邏輯2022A-2022D將結果寫入指定的目的地。處理元件2031A-2031B,2032A-2032B可包含類似於處理元件1931A-1931B、1932A-1932B、1931A-1933B、1934A-1934B的硬體邏輯,並且可使用類似的硬體邏輯來實現回送(loopback)功能。
二路徑矩陣乘法加速器1900或四路徑矩陣乘法加速器2000的優點包含可擴縮性(scalability)、軟體相容性及吞吐量。相對於8個深度的脈動陣列,這些加速器的模組化架構可實現更有效的擴縮。矩陣乘法加速器的不同配置可適合不同的產品需求或使用案例,而無需重新設計。此外,所使用的相同軟體模型是獨立於硬體實現的。為了由八級的脈動管線執行的指令而設計的演算法可用於使用四級的矩陣乘法加速器的實現。硬體會以一種對軟體透通(transparent)的方式使用反饋來模擬8個級的管線。多路徑可用於對DPAS指令吞吐量有高要求的設計中。更多路徑的實現可配合更高頻寬的輸入邏輯和輸出邏輯。在一個實施例中,相對於可能使用的8個深度的脈動陣列,二路徑矩陣乘法加速器1900和四路徑矩陣乘法加速器2000被配置以更高的效率及/或更精細的粒度略過具有區塊稀疏度的輸入。 在可擴縮的矩陣乘法加速器上的稀疏乘法
第三實施例在處理具有不規則稀疏度的資料時,促進增加的指令吞吐量。透過輸入多工器邏輯可單獨地選擇Src1及Src2輸入的元素,並且只能使用非零值執行處理。
圖21描繪使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速器2100。可擴縮的稀疏矩陣乘法加速器2100可包含如四路徑矩陣乘法加速器2000中的處理元件2031A-2031D,或者本文所述的任何其他處理元件。在每個路徑的開始處的處理元件2031A-2021B包含用於Src0的輸入邏輯。可擴縮的稀疏矩陣乘法加速器2100的每個路徑的每個級可透過輸入選擇器2112A-2112D接收獨立或共享的Src1的任何元素。每個路徑的每個級亦可接收Src2的任何元素。透過各自的輸入元件選擇器提供獨立的Src2輸入(例如,透過輸入選擇器2110A和輸入選擇器2111A的Src2A,透過輸入選擇器2110B和輸入選擇器2111B的Src2B)。單獨的Src2輸入使不同的路徑能夠計算不同的指令。每個路徑皆有各自的輸出邏輯2122A-2122B,以供輸出不同的指令。
圖22描繪包含稀疏資料之Src2輸入2200。在所描繪範例中,稀疏Src2輸入2200A-2200B(Src2A輸入2200A[A0, A1, 0, A3, A4, A5, A6, 0],Src2B輸入2200B [B0, 0, B2, B3, 0, 0, 0, 0])可在使用共用的Src1輸入之可擴縮的稀疏矩陣乘法加速器2100的變體的各路徑上進行處理。可擴縮的稀疏矩陣乘法加速器2100的每個路徑可接收各自的Src0輸入。
計算過程的第一步係讀取第一個Src2元素,並將這些元素重新排列成每一群組N個元素,其中N係處理這些元素之路徑的深度。具有不同數量的路徑之其他實現可具有不同的群組大小(group size)。舉例而言,基於四路徑矩陣乘法加速器2000的加速器將使用四個資料元素的群組。如果可能的會,只會選擇非零資料元素。舉例而言,Src2A 2200A的非零值重新排列為三個群組:[A0, A1]、[A3, A4]、[A5, A6]。Src2B 2200B的非零值重新排列為兩個群組:[B0, B2]、[B3, 0],其中填充零用以使第二個群組完整。使用此重新排列以便將每一群組的第一元素饋送至路徑的第一級以及將每一群組的第二元素饋送至路徑的第二級。雖然可擴縮的稀疏矩陣乘法加速器2100不需要將元素進行分組,但將元素分組會減少可能需要饋送到級的元素數量。
在計算處理的第二步中,將群組饋送至路徑。替代執行四次傳遞來計算深度為八的指令(例如,八次反饋傳遞,每一次使用兩個級),只需三次反饋傳遞,因為兩個元素為零且不需要處理。反饋的性質允許略過傳遞,將累加器值直接傳送至輸出,而不消耗計算級。為了維持正確的函數計算,將正確的Src1元素輸入至給定的Src2元素的級以被計算。因此,當處理第二群組([A3, A4])時,第一級讀取Src1-3,第二級讀取Src1-4。當處理Src2B 2200B時,只計算兩個群組([B0, B2]、[B3, 0])。這兩個群組可使用兩個反饋傳遞來計算,而不是四個。在第一傳遞中,將Src1-0和Src1-2輸入至第一級和第二級。在第二傳遞中,將Src1-3和任何Src1元素分別輸入至第一級和第二級。
針對第三實施例,路徑的深度限制了可被減少的零的數量。在其路徑中具有兩個級的矩陣乘法加速器(例如,可擴縮的稀疏矩陣乘法加速器2100)中,針對八個元素的輸入,只能減少八個、六個、四個及兩個零。在路徑上有四個級的矩陣乘法加速器中,只能減少八個及四個零。為了實現更高解析的稀疏減少,第四實施例在路徑的每一級上增加輸出,並允許每一級接收Src0輸入,如圖23所示。
圖23顯示使用在每個級中具反饋輸入與輸出之脈動陣列的可擴縮的稀疏矩陣乘法加速器2300。可擴縮的稀疏矩陣乘法加速器2300包含與可擴縮的稀疏矩陣乘法加速器2100類似的硬體邏輯,以及附加的輸入和輸出邏輯,以能夠將Src0元素提供給每個路徑的每個級並為每個路徑的每個級提供各自的輸出。除了為第一路徑選擇Src2A元素的輸入選擇器2110A和2111A以及為第二路徑選擇Src2B輸入的輸入選擇器2110A和2111B之外,更針對Src0輸入為每個路徑添加輸入分離器2303A-2303B。每個輸入分離器(splitter)2303A-2303B可包含解多工器或類似的硬體邏輯,以使由輸入邏輯2302A-2302B讀取的Src0輸入元素能夠傳送至每個級。更包含輸入選擇器2112A-2112D,以使每個路徑的每個級選擇Src1輸入。除了來自每個路徑的第二級的輸出邏輯2122A-2122B(處理元件2331C-2331D)之外,更提供了附加的輸出邏輯2322A-2322B,以能夠自每個路徑的第一級(2331A-2331B)提供輸出。另一方面,處理元件2331A-2331C可類似於本文所述的其他處理元件。
在操作期間,可擴縮的稀疏矩陣乘法加速器2300可被配置以接收只有一個元素的群組。對於第三實施例(例如,可擴縮的稀疏矩陣乘法加速器2100),Src2上的非零元素分為兩個群組(([B0, B2]、[B3, 0]),第二群組包含零的填充。圖23中所示的最佳化使得群組可以[B0, B2]、[B3]形成。B0及B2將被分配給路徑的第一級和第二級(例如,包含處理元件2331A及處理元件2331C的第一組或包含處理元件2331B和處理元件2331D的第二組中)。於反饋後,B3將分配給該路徑的第一級。由於路徑的第一級可提供輸出(例如,透過輸出邏輯2322A或2322B),因此不需要使用路徑的第二級(處理元件2331C或處理元件2331D)。此外,針對該路徑接收的下一個Src2輸入可從第二級開始,因此一群組的兩個元素將分別分配給第二級和第一級。用於處理新的Src2輸入的Src0可分配給路徑的第二級(例如,透過輸出邏輯2322A或2322B)。
除了圖21所繪示的可擴縮的稀疏矩陣乘法加速器2100和圖23所繪示的可擴縮的稀疏矩陣乘法加速器2300的硬體邏輯之外,一些實施例額外地包含輸入和輸出硬體記憶體緩衝區。輸入記憶體緩衝區可用於儲存並已存在多個群組的Src0和Src2輸入,從而減少對高頻寬輸入邏輯的需求。輸出緩衝區使在同一週期內產生的Dst輸出能夠以較低的速率穩定地寫入記憶體,從而減少了對高頻寬輸出邏輯的需求。
另外,一些實施例包含用於所有元素均為零之輸入的略過機制。略過機制允許藉由輸出邏輯直接寫入Src0,而無需通過脈動陣列。此略過機制與資料相依性策略配合使用,以防止指令之間的寫後讀(read-after-write,RAW)風險可能會破壞資料的完整性。
圖24描繪根據一個實施例的方法2400,藉由該方法,功能單元處的硬體邏輯可執行指令以執行具累加之脈動點積。方法2400可以透過本文所述的可擴縮的稀疏矩陣乘法加速器的硬體及/或韌體邏輯來執行。硬體及/或韌體邏輯可接收非零的源值以及由GPGPU的矩陣運算加速器執行的指令的計算深度(2402)。非零的源值可為根據用於可擴縮的稀疏矩陣乘法加速器之路徑的管線深度而分組的非零值。計算深度可指定多個脈動層,以用於計算指令的點積。邏輯更接收累加器值並將初始值儲存至累加器(2404)。累加器值可為零值(初始累加器值)或由前一個管線級產生的結果。對於指定的計算層,邏輯可評估寫入允許遮罩(write enable mask)以判定一組允許的平行處理通道(2406)。寫入允許遮罩可用於停用特定通道的計算。可基於待執行的指令提供的謂詞遮罩來配置寫入允許遮罩。
對於每個啟動的平行處理通道,邏輯可基於源輸入元素的逐元素(element-wise)乘法來產生一組乘積(2408)。舉例而言,對於四個元素點積,將兩個源的四個元素相乘以產生該組乘積。在脈動管線的每一層中,相同的Src2元素值係乘以多個不同的Src1值。然後,邏輯可計算該組乘積的總和並將該總和加到累加器中的值(2410)。
在最後的計算層(2411)上的處理元件上執行方法2400的情況下,處理元件可將計算出的總和輸出至指定的目的地暫存器(2414)。除此之外,處理元件可將其累加器值輸出至下一層(2412)。下一層可為下一實體層或下一虛擬層。輸出到下一個虛擬層包含在處理管線的第一級向處理元件提供反饋值。
在一個實施例中,圖24的方法2400可由基於以下所示的虛擬碼配置的硬體邏輯來執行。
Figure 02_image005
在上面顯示的虛擬碼中,Src0、Src1和Src2係儲存運算元資料的暫存器。脈動深度由sdepth指定。執行大小與exec_size對應,並指定平行處理通道的數量。目的地由Dst暫存器指定。在虛擬碼中,識別的暫存器參照於regnum和subregnum欄位。regnum欄位提供運算元的暫存器編號。subregnum欄位提供運算元的子暫存器編號。subregnum欄位與對應的RegNum欄位一同針對暫存器區域的起始點(origin)提供一個位元組對齊位址(byte aligned address)。對於某些指令,此欄位提供位元組位址的位元[4:0],而RegNum欄位提供位元[12:5]。
圖25描繪使用稀疏Src2輸入矩陣執行矩陣乘法運算之方法2500。方法2500可透過如本文所述的可擴縮的稀疏矩陣乘法加速器的硬體及/或韌體邏輯來執行。方法2500指定使用稀疏資料的操作,例如圖22之稀疏的Src2輸入2200A-2200B。方法2500可使用圖21的可擴縮的稀疏矩陣乘法加速器2100及/或圖23的可擴縮的稀疏矩陣乘法加速器2300來實現。
方法2500用於硬體及/或韌體邏輯以將第一矩陣及第二矩陣的多個資料元素讀入矩陣乘法加速器的記憶體中(2502)。接著,該邏輯檢測該第二矩陣的該多個資料元素內的複數非零值(2504)。可以使用矩陣乘法加速器內的向量比較邏輯來執行檢測。接著,該邏輯可將第二矩陣的多個資料元素內檢測到的非零值分組至包含一個或多個資料元素的群組(2506)。接著,該邏輯可提供該群組的資料元素至該矩陣乘法加速器之處理管線的對應級(2508)。對於具有兩個級管線的路徑,群組會包含兩個Src2元素。該群組的第一個元素將提供給第一級,該群組的第二個元素將提供給第二級。針對可擴縮的稀疏矩陣乘法加速器2100,視需要使用零填充來填滿群組。針對可擴縮的稀疏矩陣乘法加速器2300,不需要零填充。
接著,該邏輯可提供該第一矩陣的該多個資料元素至該處理管線的對應級(2510)。提供的多個資料元素係該些Src1元素,其與待管線級計算之活動的通道相對應。如果元素運作會使用Src2零填充值,則可提供任一Src1元素。在處理管線之每個活動的級的處理元件執行乘法和累加操作(2512)。在某些情況下,例如,在可擴縮的稀疏矩陣乘法加速器2300正在處理單一元素群組的情況下,對於一指令而言,並非管線的所有級皆為活動的。如果對於該指令某個級不是活動的,則該級仍可用於執行另外的指令之操作。然後,邏輯可從處理管線的每個活動的級輸出或反饋累加值(2514)。當指令之處理的最後一級完成時,輸出可寫入至目的地暫存器或記憶體位置。或者,可將累加值傳送至下一個管線級。輸出至下一個管線級可能涉及輸出至處理管線的第一實體級之寫入反饋(writing feedback)。 附加的示例性計算裝置
圖26係根據一實施例之包含圖形處理器2604的計算裝置2600之方塊圖。計算裝置2600的版本可為通訊裝置或包含於其中,該通訊裝置諸如機上盒(例如,基於網際網路的有線電視機上盒等)、基於全球定位系統(GPS)的設備位置等等。計算裝置2600亦可為行動計算裝置或包含於其中,行動計算裝置諸如行動電話、智慧型手機、個人數位助理(PDA)、平板電腦、筆記型電腦、電子閱讀器、智慧型電視、電視平台、穿戴式裝置(例如,眼鏡、手錶、手鐲、智慧卡、首飾、衣物等等)及媒體播放器等等。舉例而言,在一個實施例中,計算裝置2600包含採用積體電路(「IC」)(諸如系統單晶片(「SoC」或「SOC」))的行動計算裝置,整合計算裝置2600的各種硬體及/或軟體組件於單一個晶片上。計算設備2600可為諸如圖1中的資料處理系統100之類的計算裝置。
計算裝置2600包含圖形處理器2604。圖形處理器2604表示本文所述的任何圖形處理器。在一個實施例中,圖形處理器2604包含快取2614,其可為單個快取或被劃分為快取記憶體的多個區段,包含但不限於任何數量的L1、L2、L3或L4快取、顯像快取、深度快取、取樣器快取及/或著色器單元快取。在一個實施例中,快取2614可為與應用處理器2606共享的最後一階快取。
在一個實施例中,圖形處理器2604包含圖形微控制器,其實現用於圖形處理器的控制和排程邏輯。控制和排程邏輯可為由圖形微控制器2615執行的韌體。韌體可在啟動時由圖形驅動器邏輯2622加載。韌體亦可被程式化至電子可抹除可程式化唯讀記憶體中,或者自圖形微控制器2615內的快閃記憶體裝置加載。韌體可啟動包含裝置管理/驅動器邏輯2617、2618和排程器2619的GPU OS 2616。GPU OS 2616亦可包含圖形記憶體管理器2620,其可輔助或取代圖形驅動器邏輯2622內的圖形記憶體管理器2621。
圖形處理器2604更包含GPGPU引擎2644,其包含一個或多個圖形引擎、圖形處理器核心以及本文所述的其他圖形執行資源。這樣的圖形執行資源可以包含但不限於執行單元、著色器引擎、片段處理器、頂點處理器、串流多處理器、圖形處理器群或適合於處理圖形資源或影像資源或在異質處理器中執行通用計算操作的任何計算資源集合的形式呈現。如圖11B-11D所示,GPGPU引擎2644的處理資源可包含在與基板連接的多個硬體邏輯磚中。GPGPU引擎2644可包含複數GPU磚2645,其包含圖形處理與執行資源、快取、取樣器等。舉例而言,如圖3B-3C所示,GPU磚2645亦可包含區域揮發性記憶體或可與一個或多個記憶體磚耦接。
GPGPU引擎2644亦可包含一個或多個特殊磚2646,其例如包含非揮發性記憶體磚2656、網路處理器磚2657及/或通用計算磚2658。GPGPU引擎2644亦包含矩陣乘法加速器2660。通用計算磚2658亦可包含用於加速矩陣乘法運算的邏輯。非揮發性記憶體磚2656可包含複數非揮發性記憶體單元(memory cell)及控制器邏輯。非揮發性記憶體磚2656的控制器邏輯可由裝置管理/驅動器邏輯2617、2618其中之一來管理。網路處理器磚2657可包含網路處理資源,其耦接到計算裝置2600的輸入/輸出(I/O)源2610內的實體介面。網路處理器磚2657可由裝置管理/驅動器邏輯2617、2618其中之一或多者來管理。
矩陣乘法加速器2660係如本文所述的模組化可擴縮的稀疏矩陣乘法加速器。矩陣乘法加速器2660可包含多個處理路徑,每個處理路徑包含多個管線級。每個處理路徑可執行不同的指令。在各種實施例中,矩陣乘法加速器2660可具有本文所述的多個矩陣乘法加速器中的任一個或多個的架構特徵。舉例而言,在一個實施例中,矩陣乘法加速器2660係具反饋迴路之四個深度的脈動陣列1700,該反饋迴路可被配置以四個邏輯級的倍數(例如,四個、八個、十二個、十六個等)進行操作。在一個實施例中,矩陣乘法加速器2660包含具有四級管線的二路徑矩陣乘法加速器1900或具有兩級管線的四路徑矩陣乘法加速器2000的一個或多個實例。在一個實施例中,矩陣乘法加速器2660包含被配置為可擴縮的稀疏矩陣乘法加速器2100或可擴縮的稀疏矩陣乘法加速器2300的處理元件。矩陣乘法加速器2660可被配置以只對至少Src2輸入的非零值進行操作,並且亦可略過Src1輸入中存在零值的操作。如果存在區塊稀疏度,則可以略過整個子矩陣的操作。矩陣乘法加速器2660亦可包含基於這些實施例的任何組合的任何邏輯。
如圖所示,在一個實施例中,除了圖形處理器2604之外,計算裝置2600更可包含任何數量和類型的硬體組件及/或軟體組件,包含但不限於應用處理器2606、記憶體2608、輸入/輸出(I/O)源2610。如依圖3A所描繪,應用處理器2606可與硬體圖形管線互動,以共享圖形管線功能。處理後的資料儲存在硬體圖形管線的緩衝區中,以及狀態資訊儲存在記憶體2608中。可將產生的資料傳輸至顯示控制器,以透過諸如圖3A的顯示裝置318之類的顯示裝置輸出。顯示裝置可為各種類型(例如陰極射線管(CRT)、薄膜電晶體(TFT)、液晶顯示器(LCD)、有機發光二極體(OLED)陣列等),以及可被配置以透過圖形化使用者介面向使用者顯示資訊。
應用處理器2606可包含一個或多個處理器(諸如圖1之一個或多個處理器102),以及可為中央處理器(CPU),其至少部分地用於執行用於計算裝置2600的作業系統(OS)2602。OS 2602可作為計算裝置2600的硬體及/或實體資源與一個或多個使用者之間的介面。OS 2602可包含用於計算裝置2600中的各種硬體裝置的驅動器邏輯。該驅動器邏輯可包含圖形驅動器邏輯2622,其可包含圖10的使用者模式圖形驅動器1026及/或核心模式圖形驅動器1029。圖形驅動器邏輯可包含圖形記憶體管理器2621,以管理用於圖形處理器2604的虛擬記憶體位址空間。
預期在一些實施例中,圖形處理器2604可作為應用處理器2606的一部分(例如實體CPU封裝的一部分)存在,在這種情況下,記憶體2608的至少一部分可由應用處理器2606與圖形處理器2604共享,儘管記憶體2608的至少一部分可由圖形處理器2604獨占,或者圖形處理器2604可具有單獨的記憶體之儲存。記憶體2608可包含緩衝區(例如,訊框緩衝區)之預先分配的區域;然而,本領域的技術人員應理解,實施例不限於此,並且可以使用任何可存取較低層的圖形管線的記憶體。記憶體2608可包含各種形式的隨機存取記憶體(RAM)(例如,SDRAM、SRAM等),其包含利用圖形處理器2604來顯像桌面或3D圖形場景的應用。諸如圖1的記憶體控制器116之類的記憶體控制器集線器可存取記憶體2608中的資料,並將其轉送至圖形處理器2604以進行圖形管線處理。記憶體2608可被供計算裝置2600內的其他組件使用。舉例而言,在軟體程式或應用程式的實現中,從計算裝置2600的各種I/O源2610接收的任何資料(例如,輸入圖形資料)在被一個或多個處理器(例如,應用處理器2606)操作之前可被暫時地佇列於記憶體2608中。類似地,由軟體程式判定應經由該等計算系統介面其中之一從計算裝置2600傳送至外部實體或儲存至內部儲存器元素中的資料通常在傳送或儲存之前被暫時地佇列於記憶體2608中。
I/O源可包含諸如觸控螢幕、觸摸面板、觸控墊、虛擬或正規鍵盤、虛擬或正規滑鼠、埠、連接器、網路裝置等之類,並且可透過平台控制器集線器130來附接,如參圖1所示。另外,I/O源2610可包含一個或多個I/O設備,其被實現用於從計算裝置2600(例如,網路配接器)傳輸資料及/或傳輸資料至計算裝置2600;或被實現用於計算裝置2600內的大型非揮發性儲存器(例如,SSD/HDD)。包含文數字和其他鍵的使用者輸入裝置可用於將資訊和命令選擇傳達給圖形處理器2604。其他類型的使用者輸入裝置為游標控制,例如滑鼠、軌跡球、觸控螢幕、觸控板或游標方向鍵,以將方向資訊和命令選擇傳達給GPU,並控制游標在顯示裝置上的移動。計算裝置2600可採用攝影機和麥克風陣列以觀察手勢、錄音和錄影以及接收與傳送視覺和音訊命令。
I/O源2610可包含一個或多個網路介面。網路介面可以包含相關聯的網路處理邏輯及/或與網路處理器磚2657耦接。一個或多個網路介面可提供對區域網路(LAN)、廣域網路(WAN)、都會區域網路(MAN)、個人區域網路(PAN)、藍牙、雲端網路、蜂巢式或行動網路(例如,第3代(3G)、第4代(4G)、第5代(5G)等),內部網路、網際網路等等的存取。網路介面可包含例如具有一個或多個天線的無線網路介面。網路介面更可包含例如有線網路介面,以透過網路電纜與遠端裝置進行通訊,該網路電纜可為例如乙太網路電纜、同軸電纜、光纖電纜、序列電纜或平行電纜。
網路介面可例如藉由符合IEEE 802.11標準以提供對LAN的存取,及/或無線網路介面可例如藉由符合藍牙標準以提供對個人區域網路的存取。其他無線網路介面及/或協定(包含標準的先前及後續版本)亦可支援。除了透過無線LAN標準的通訊或取而代之外,網路介面可使用例如分時多工存取(TDMA)協定、全球行動通訊系統(GSM)協定、分碼多工存取(CDMA)協定及/或任何其他類型的無線通訊協定來提供無線通訊。
應當理解,比前述範例裝備更少或更多系統可能對某些實現來說是是更合適的。因此,計算裝置1900的配置可根據實現的不同而有所變化,這取決於許多因素,例如價格限制、性能要求、技術改良或其他情況。範例包含(但不限於)行動裝置、個人數位助理、行動計算設備、智慧型手機、行動電話、手機、單向呼叫器、雙向呼叫器、傳訊裝置(messaging device)、電腦、個人電腦(PC)、桌上型電腦、膝上型電腦、筆記型電腦、手持式電腦、平板電腦、伺服器、伺服器陣列或伺服器場、Web伺服器、網路伺服器、網際網路伺服器、工作站、小型電腦、主架(main frame)電腦、超級電腦、網路設備、Web設備、分散式計算系統、多處理器系統、基於處理器的系統、消費型電子產品、可程式化消費型電子產品、電視、數位電視、機上盒、無線存取點、基地台、用戶站、行動用戶中心、無線電網路控制器、路由器、集線器、閘道器、橋接器、交換器、機器或其組合。
本文描述一種加速器裝置,其包含主機介面,與主機介面耦接的構造互連以及與構造互連耦接的一個或多個硬體磚,該一個或多個硬體磚包含稀疏矩陣乘法加速硬體,該稀疏矩陣乘法加速硬體包含具反饋輸入的脈動陣列。
一實施例提供平行處理器,其包含解碼單元,用於將指令解碼為解碼指令,其中,該解碼指令係執行平行點積運算的指令;以及管線脈動點積單元。該管線脈動點積單元被配置以透過脈動處理管線之多管線級,執行該解碼指令。於執行該解碼指令之期間,在第一管線級計算的點積被配置以透過輸出硬體選擇性地寫入至從輸出記憶體與第二管線級其中之一選擇的位置,以及在第三管線級中計算的點積被配置以透過輸出硬體選擇性地寫入至從該輸出記憶體和該第一管線級其中之一選擇的位置。於另一個實施例中,該解碼指令與第一源運算元及第二源運算元相關聯,該第一源運算元係對儲存第一矩陣的多個資料元素之記憶體的參照(reference),以及該第二運算元係對儲存第二矩陣的多個資料元素之記憶體的參照。
一實施例提供一種加速器裝置,其包含主機介面,與主機介面耦接的構造互連以及與構造互連耦接的一個或多個硬體磚。該一個或多個硬體磚包含稀疏矩陣乘法加速硬體,該稀疏矩陣乘法加速硬體包含具反饋輸入的模組化脈動處理陣列。該模組化脈動處理陣列包含一個或多個具有第一數量的管線路徑之處理陣列模組,以及該第一數量的管線路徑具有第二數量的管線級。第一管線級可配置以接收來自最後管線級的反饋輸出。
一實施例提供一種透過具多級處理管線的硬體矩陣乘法加速器對一組輸入矩陣執行點積運算之方法。該方法包含:透過第一源運算元,將第一矩陣的多個資料元素讀入該硬體矩陣乘法加速器的記憶體中;透過第二源運算元,將第二矩陣的多個資料元素讀入該硬體矩陣乘法加速器的該記憶體中;檢測該第二矩陣的該多個資料元素內的複數非零值;將第二矩陣的多個資料元素內的該等非零值分組成包含一個或多個資料元素的群組,其中該群組之一數量個資料元素與硬體矩陣乘法加速器之多級處理管線中的一數量個級相對應;提供該群組的資料元素至該處理管線的對應級,其係藉由將該資料元素廣播至該對應級之該處理元件的多個通道;將所提供之該群組的資料元素與該第一矩陣的多個資料元素相乘,以產生一組乘積;對該組乘積求和,並將該組乘積之和累加至累加器值;以及將該累加器值寫入該處理管線的下一級。於另一個實施例中,將該累加器值寫入該處理管線的該下一級包含將管線反饋值寫入該處理管線的第一級。額外地,檢測該第二矩陣的該多個資料元素內的該等非零值可包含檢測該硬體矩陣乘法加速器的該記憶體內的該等非零值。
根據以上敘述,本領域技術人員可理解,實施例的廣泛技術可以各種形式實現。因此,儘管已結合實施例的特定範例描述實施例,但實施例的真實範圍不應受到如此限制,因為在研究圖式、說明書及以下申請專利範圍之後,本領域技術人員而言可輕易認知到其他修改。
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:通用圖形處理核心單元 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:串流輸出單元 830:媒體管線 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:處理器 1410:統一記憶體 1412:系統記憶體 1414A:原始碼 1414B:編譯碼 1415:編譯器 1416:運行時間庫 1418:GPGPU記憶體 1420:GPGPU 1421:提取與解碼單元 1422:排程器控制器 1423:張量加速器 1424A~N:計算區塊 1425:暫存器 1426:電源與效能模組 1427:快取 1430:L3資料快取 1432:共享區域記憶體 1500:指令管線 1502:接受域磚 1504:輸入體積緩衝區 1505:矩陣運算 1506:輸出緩衝區 1508:脈動張量陣列 1530:記憶體 1600:脈動陣列 1602:輸入 1610A:輸入 1610B:輸入 1610C:輸入 1610D:輸入 1610E:輸入 1610F:輸入 1610G:輸入 1610H:輸入 1611A:處理元件 1611B:處理元件 1611C:處理元件 1611D:處理元件 1611E:處理元件 1611F:處理元件 1611G:處理元件 1611H:處理元件 1612A:輸入 1612B:輸入 1612C:輸入 1612D:輸入 1612E:輸入 1612F:輸入 1612G:輸入 1612H:輸入 1622:輸入 1700:脈動陣列 1702:讀取 1704:資料選擇器 1706:反饋輸入 1722:寫入 1724:資料選擇器 1726:反饋輸出 1800:時序圖 1802:讀取週期 1804:脈動週期 1806:寫入週期 1850:時序圖 1852:讀取週期 1854:脈動週期 1856:寫入週期 1900:二路徑矩陣乘法加速器 1902A:輸入邏輯 1902B:輸入邏輯 1910A:輸入邏輯 1910B:輸入邏輯 1911A:輸入緩衝區 1911B:輸入緩衝區 1912:共享輸入邏輯 1913A:輸入緩衝區 1913B:輸入緩衝區 1922A:輸出邏輯 1922B:輸出邏輯 1931A:處理元件 1931B:處理元件 1932A:處理元件 1932B:處理元件 1933A:處理元件 1933B:處理元件 1934A:處理元件 1934B:處理元件 2000:四路徑矩陣乘法加速器 2002A:輸入邏輯 2002B:輸入邏輯 2002C:輸入邏輯 2002D:輸入邏輯 2010A:輸入邏輯 2010B:輸入邏輯 2010C:輸入邏輯 2010D:輸入邏輯 2011A:輸入緩衝區 2011B:輸入緩衝區 2011C:輸入緩衝區 2011D:輸入緩衝區 2012:共享輸入邏輯 2013A:輸入緩衝區 2013B:輸入緩衝區 2013C:輸入緩衝區 2013D:輸入緩衝區 2022A:輸出邏輯 2022B:輸出邏輯 2022C:輸出邏輯 2022D:輸出邏輯 2031A:處理元件 2031B:處理元件 2031C:處理元件 2031D:處理元件 2032A:處理元件 2032B:處理元件 2032C:處理元件 2032D:處理元件 2100:可擴縮的稀疏矩陣乘法加速器 2110A:輸入選擇器 2110B:輸入選擇器 2111A:輸入選擇器 2111B:輸入選擇器 2112A:輸入選擇器 2112B:輸入選擇器 2112C:輸入選擇器 2112D:輸入選擇器 2122A:輸出邏輯 2122B:輸出邏輯 2200:Src2輸入 2200A:Src2A輸入 2200B:Src2B輸入 2300:可擴縮的稀疏矩陣乘法加速器 2302A:輸入邏輯 2302B:輸入邏輯 2303A:輸入分離器 2303B:輸入分離器 2331A:處理元件 2331B:處理元件 2331C:處理元件 2331D:處理元件 2322A:輸出邏輯 2322B:輸出邏輯 2400:方法 2402:步驟 2404:步驟 2406:步驟 2408:步驟 2410:步驟 2411:步驟 2412:步驟 2414:步驟 2500:方法 2502:步驟 2504:步驟 2506:步驟 2508:步驟 2510:步驟 2512:步驟 2514:步驟 2600:計算裝置 2602:作業系統 2604:圖形處理器 2606:應用處理器 2608:記憶體 2610:I/O源 2621:圖形記憶體管理器 2622:作業系統 2614:快取 2615:圖形微控制器 2616:GPU OS 2617:裝置管理/驅動器邏輯 2618:裝置管理/驅動器邏輯 2619:排程器 2620:圖形記憶體管理器 2644:GPGPU引擎 2645:GPU磚 2646:特殊磚 2656:非揮發性記憶體磚 2657:網路處理器磚 2658:通用計算磚 2660:矩陣乘法加速器
因此,可藉由參考實施例的方式(對以上簡要概述的實施例更具體地描述)來詳細地理解本實施例之上述特徵,其中一些實施例在所附圖式中繪示出。然而,應注意的是,所附圖式僅描繪典型實施例,故不應被視為其範圍的限制。
[圖1]係根據實施例的處理系統之方塊圖;
[圖2A-2D]描繪由本文所述之實施例所提供的計算系統與圖形處理器;
[圖3A-3C]描繪由本文所述之實施例所提供之附加圖形處理器與計算加速器架構之方塊圖;
[圖4]係根據若干實施例之圖形處理器之圖形處理引擎410的方塊圖;
[圖5A-5B]描繪執行緒執行邏輯,其包含在根據本文所述之實施例的圖形處理器核心中採用的處理元件陣列;
[圖6]描繪根據實施例的附加執行單元;
[圖7]係根據若干實施例描繪圖形處理器指令格式之方塊圖;
[圖8]係根據另一實施例的圖形處理器之方塊圖;
[圖9A-9B]描繪根據若干實施例之圖形處理器命令格式與命令序列;
[圖10]描繪根據若干實施例針對資料處理系統之例示性圖形軟體架構;
[圖11A]係描繪根據一實施例之IP核心開發系統之方塊圖;
[圖11B]描繪根據本文所述之若干實施例之積體電路封裝總成之橫截面側視圖;
[圖11C]描繪封裝總成,其包含連接至基板之硬體邏輯小晶片之多個單元;
[圖11D]描繪根據實施例之包含可互換小晶片的封裝總成;
[圖12]係根據實施例的描繪例示性系統單晶片積體電路之方塊圖,其可使用一個或多個IP核心製造;
[圖13A-13B]係根據本文所述之實施例描繪用於SoC內之例示性圖形處理器之方塊圖;
[圖14]係根據實施例的資料處理系統之方塊圖;
[圖15]描繪根據一實施例,由指令管線所執行之矩陣運算;
[圖16]描繪乘法器/加法器電路的脈動陣列,其以管線的形式組織;
[圖17A-17B]描繪使用四個深度的脈動陣列來計算八個脈動級(systolic stage)的等效陣列;
[圖18A-18B]呈現脈動架構的時序圖;
[圖19]描繪雙路徑矩陣乘法加速器,其中每一者路徑的深度為四級;
[圖20]描繪四路徑矩陣乘法加速器,其中每一者路徑的深度為二級;
[圖21]描繪使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速器;
[圖22]描繪包含稀疏資料之Src2輸入;
[圖23]描繪使用在每個級中具反饋輸入與輸出之脈動陣列的可擴縮的稀疏矩陣乘法加速器;
[圖24]描繪對本文所述之可擴縮的稀疏矩陣乘法加速器執行操作的方法;
[圖25]描繪使用稀疏Src2輸入矩陣執行矩陣乘法運算之方法;以及
[圖26]係根據實施例之包含圖形處理器的計算裝置之方塊圖。
2031A:處理元件
2031B:處理元件
2031C:處理元件
2031D:處理元件
2100:可擴縮的稀疏矩陣乘法加速器
2110A:輸入選擇器
2110B:輸入選擇器
2111A:輸入選擇器
2111B:輸入選擇器
2112A:輸入選擇器
2112B:輸入選擇器
2112C:輸入選擇器
2112D:輸入選擇器
2122A:輸出邏輯
2122B:輸出邏輯

Claims (23)

  1. 一種平行處理器,包含: 解碼單元,用以將指令解碼為解碼指令,其中,該解碼指令係執行平行點積運算的指令;以及 管線脈動點積單元,用以透過脈動處理管線之多管線級,執行該解碼指令,其中,於執行該解碼指令之期間,在第一管線級計算的點積被配置以透過輸出硬體選擇性地寫入至從輸出記憶體與第二管線級其中之一選擇的位置,以及在第三管線級中計算的點積被配置以透過輸出硬體選擇性地寫入至從該輸出記憶體和該第一管線級其中之一選擇的位置。
  2. 如請求項1之平行處理器,其中,該解碼指令與第一源運算元及第二源運算元相關聯,該第一源運算元係對儲存第一矩陣的多個資料元素之記憶體的參照(reference),以及該第二運算元係對儲存第二矩陣的多個資料元素之記憶體的參照。
  3. 如請求項2之平行處理器,更包含硬體電路,用以: 基於該第一源運算元,將該第一矩陣的該多個資料元素讀入至該脈動點積單元的記憶體中;以及 基於該第二源運算元,將該第二矩陣的該多個資料元素讀入至該脈動點積單元的記憶體中。
  4. 如請求項3之平行處理器,更包含硬體電路,用以檢測該第二矩陣的該多個資料元素內的非零值,並將該第二矩陣的該多個資料元素內檢測到的非零值分組至包含一個或多個資料元素的群組中。
  5. 如請求項4之平行處理器,其中,該群組包含與該脈動處理管線之一數量個管線級相對應的一數量個資料元素。
  6. 如請求項5之平行處理器,更包含硬體電路,用以: 提供該群組中的第一資料元素至該第一管線級;以及 提供該群組中的第二資料元素至該第二個管線級。
  7. 如請求項6之平行處理器,其中,該第三管線級係該第二管線級,以及該脈動處理管線包含二個管線級。
  8. 如請求項6之平行處理器,更包含在該第二管線級與該第三管線級之間的第四管線級,其中該脈動處理管線包含四個管線級。
  9. 如請求項6之平行處理器,更包含硬體電路,用以: 提供該第一矩陣的第一組多個資料元素至該第一管線級;以及 提供該第二矩陣的第二組多個資料元素至該第二管線級。
  10. 如請求項1至9中任一項之平行處理器,其中,該脈動處理管線係該第一脈動處理管線,以及該管線脈動點積單元包含第二脈動處理管線。
  11. 如請求項10之平行處理器,其中,該第一脈動處理管線和該第二脈動處理管線的各管線級包含一個或多個處理元件,各該處理元件包含多個平行處理器通道,並且各該平行處理器通道可配置以對多個資料元素的向量執行操作。
  12. 一種加速器裝置,包含: 主機介面; 與主機介面耦接的構造互連(fabric interconnect);以及 一個或多個與該構造互連耦接的硬體磚(hardware tile),該一個或多個硬體磚包含稀疏矩陣乘法加速硬體,該稀疏矩陣乘法加速硬體包含具反饋輸入之模組化脈動處理陣列,該模組化脈動處理陣列包含一個或多個具有第一數量的管線路徑之處理陣列模組,該第一數量的管線路徑具有第二數量的管線級,其中該第一管線級可配置以接收來自最終管線級的反饋輸出。
  13. 如請求項12之加速器裝置,其中,該模組化脈動處理陣列包含多個陣列模組。
  14. 如請求項12之加速器裝置,其中,該一個或多個處理陣列模組包含複數管線路徑,該等管線路徑被配置具有用以讀取與第一源輸入相關聯的複數資料元素之共享的硬體電路,以及用以讀取與第二源輸入相關聯的複數資料元素之獨立的硬體電路。
  15. 如請求項12之加速器裝置,其中,該一個或多個處理陣列模組包含複數管線路徑,該等管線路徑被配置具有用以讀取與第一源輸入相關聯的複數資料元素之獨立的硬體電路,以及用以讀取與第二源輸入相關聯的複數資料元素之獨立的硬體電路。
  16. 如請求項15之加速器裝置,其中,該一個或多個處理陣列模組包含硬體電路,其被配置以檢測該第二源輸入中的複數非零資料元素,並基於該第二源輸入中的該等非零資料元素及與該第二輸入的該等非零資料元素相對應之該第一源輸入的複數資料元素,選擇性地執行點積運算。
  17. 如請求項16之加速器裝置,其中,該一個或多個處理陣列模組包含管線路徑,該管線路徑包含用於各管線級之獨立的輸出硬體。
  18. 如請求項17之加速器裝置,其中,該一個或多個處理陣列模組包含可配置以執行具有第一組輸入的第一點積指令之第一管線路徑以及可配置以執行具有第二組輸入的第二點積指令之第二管線路徑。
  19. 一種透過具多級處理管線的硬體矩陣乘法加速器對一組輸入矩陣執行點積運算之方法,該方法包含: 透過第一源運算元,將第一矩陣的多個資料元素讀入該硬體矩陣乘法加速器的記憶體中; 透過第二源運算元,將第二矩陣的多個資料元素讀入該硬體矩陣乘法加速器的該記憶體中; 檢測該第二矩陣的該多個資料元素內的複數非零值; 將第二矩陣的多個資料元素內的該等非零值分組成包含一個或多個資料元素的群組,其中該群組之一數量個資料元素與硬體矩陣乘法加速器之多級處理管線中的一數量個級相對應; 提供該群組的資料元素至該處理管線的對應級; 將所提供之該群組的資料元素與該第一矩陣的多個資料元素相乘,以產生一組乘積; 對該組乘積求和,並將該組乘積之和累加至累加器值;以及 將該累加器值寫入該處理管線的下一級。
  20. 如請求項19之方法,其中將該累加器值寫入該處理管線的該下一級包含將管線反饋值寫入該處理管線的第一級。
  21. 如請求項19之方法,其中,提供該群組的資料元素至該處理管線的對應級包含將該資料元素廣播至該對應級之該處理元件的多個通道。
  22. 如請求項19之方法,其中,檢測該第二矩陣的該多個資料元素內的該等非零值包含檢測該硬體矩陣乘法加速器的該記憶體內的該等非零值。
  23. 一種系統,包含執行如請求項19-22中的任一項之方法的裝置。
TW109145287A 2020-05-05 2020-12-21 使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速 TW202143031A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IN202041019059 2020-05-05
IN202041019059 2020-05-05
US16/913,800 US11204977B2 (en) 2020-05-05 2020-06-26 Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
US16/913,800 2020-06-26

Publications (1)

Publication Number Publication Date
TW202143031A true TW202143031A (zh) 2021-11-16

Family

ID=78232028

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109145287A TW202143031A (zh) 2020-05-05 2020-12-21 使用具反饋輸入之脈動陣列的可擴縮的稀疏矩陣乘法加速

Country Status (6)

Country Link
US (1) US11636174B2 (zh)
JP (1) JP2021177366A (zh)
CN (1) CN113610697A (zh)
BR (1) BR102021001391A2 (zh)
DE (1) DE102020131666A1 (zh)
TW (1) TW202143031A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636174B2 (en) 2020-05-05 2023-04-25 Intel Corporation Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
US12039001B2 (en) 2020-05-05 2024-07-16 Intel Corporation Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7243006B1 (ja) 2021-12-20 2023-03-22 エッジコーティックス ピーティーイー. リミテッド ネットワークオンチップリコンフィギュアビリティ

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9207908B1 (en) * 2013-01-29 2015-12-08 Altera Corporation Digital signal processing blocks with embedded arithmetic circuits
US9697176B2 (en) * 2014-11-14 2017-07-04 Advanced Micro Devices, Inc. Efficient sparse matrix-vector multiplication on parallel processors
US9846623B2 (en) * 2015-08-20 2017-12-19 Qsigma, Inc. Simultaneous multi-processor apparatus applicable to acheiving exascale performance for algorithms and program systems
US10146738B2 (en) * 2016-12-31 2018-12-04 Intel Corporation Hardware accelerator architecture for processing very-sparse and hyper-sparse matrix data
US11373088B2 (en) * 2017-12-30 2022-06-28 Intel Corporation Machine learning accelerator mechanism
US20190278600A1 (en) * 2018-03-09 2019-09-12 Nvidia Corporation Tiled compressed sparse matrix format
US10678508B2 (en) * 2018-03-23 2020-06-09 Amazon Technologies, Inc. Accelerated quantized multiply-and-add operations
US10572568B2 (en) * 2018-03-28 2020-02-25 Intel Corporation Accelerator for sparse-dense matrix multiplication
US10387122B1 (en) * 2018-05-04 2019-08-20 Olsen Ip Reserve, Llc Residue number matrix multiplier
US10963787B2 (en) * 2018-05-31 2021-03-30 Neuralmagic Inc. Systems and methods for generation of sparse code for convolutional neural networks
US10644721B2 (en) * 2018-06-11 2020-05-05 Tenstorrent Inc. Processing core data compression and storage system
US11093250B2 (en) * 2018-09-29 2021-08-17 Intel Corporation Apparatus and method for gang invariant operation optimizations using dynamic evaluation
US10628622B1 (en) * 2019-05-10 2020-04-21 Xilinx, Inc. Stream FIFO insertion in a compilation flow for a heterogeneous multi-core architecture
US11204977B2 (en) 2020-05-05 2021-12-21 Intel Corporation Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
DE102020131666A1 (de) 2020-05-05 2021-11-11 Intel Corporation Skalierbare Multiplikationsbeschleunigung dünnbesetzter Matrizen unter Verwendung systolischer Arrays mit Rückkopplungseingaben

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11636174B2 (en) 2020-05-05 2023-04-25 Intel Corporation Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
US12039001B2 (en) 2020-05-05 2024-07-16 Intel Corporation Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs

Also Published As

Publication number Publication date
DE102020131666A1 (de) 2021-11-11
BR102021001391A2 (pt) 2021-11-16
CN113610697A (zh) 2021-11-05
JP2021177366A (ja) 2021-11-11
US20220156343A1 (en) 2022-05-19
US11636174B2 (en) 2023-04-25
US20230281272A1 (en) 2023-09-07

Similar Documents

Publication Publication Date Title
US11341709B2 (en) Apparatus and method using triangle pairs and shared transformation circuitry to improve ray tracing performance
CN112130752A (zh) 共享本地存储器读取合并和多播返回
US11204801B2 (en) Method and apparatus for scheduling thread order to improve cache efficiency
CN113313624A (zh) 多贴片存储器管理机制
US20230367740A1 (en) Computing efficient cross channel operations in parallel computing machines using systolic arrays
CN115129370A (zh) 在计算架构中支持8位浮点格式操作数
US10997086B1 (en) Systems and methods in a graphics environment for providing shared virtual memory addressing support for a host system
CN113052746A (zh) 用于多适配器编码的装置和方法
US11636174B2 (en) Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
CN114119338A (zh) tanh和sigmoid函数执行
TW202213126A (zh) 矩陣運算最佳化機制
CN113032159A (zh) 编译器辅助的寄存器堆写入减少
CN112132939A (zh) 用于在过程纹理的生成期间避免重复处理的系统和方法
CN116341674A (zh) 用于ai和机器学习加速的二进制扩展
US11204977B2 (en) Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
US11182337B1 (en) Computing efficient cross channel operations in parallel computing machines using systolic arrays
US20220309124A1 (en) Random sparsity handling in a systolic array
CN114155134A (zh) 一种互连系统栅栏机构
US12039001B2 (en) Scalable sparse matrix multiply acceleration using systolic arrays with feedback inputs
TWI842948B (zh) 促進矩陣乘法運算的裝置、方法及硬體加速器
EP3907606A1 (en) Compaction of diverged lanes for efficient use of alus
TWI846950B (zh) 用以促進矩陣處理之設備和方法以及其圖形處理器
US11295408B2 (en) Method and apparatus for compression of graphics processing commands
US20210349717A1 (en) Compaction of diverged lanes for efficient use of alus
US20220308833A1 (en) Multiplication circuit based on constituent partial product lookup table