TWI725023B - 用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體 - Google Patents

用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體 Download PDF

Info

Publication number
TWI725023B
TWI725023B TW105112621A TW105112621A TWI725023B TW I725023 B TWI725023 B TW I725023B TW 105112621 A TW105112621 A TW 105112621A TW 105112621 A TW105112621 A TW 105112621A TW I725023 B TWI725023 B TW I725023B
Authority
TW
Taiwan
Prior art keywords
register
address
same
register address
source operand
Prior art date
Application number
TW105112621A
Other languages
English (en)
Other versions
TW201710994A (zh
Inventor
蘇普拉廷 帕爾
沙布曼尼恩 麥猶蘭
馬克 戴維斯
Original Assignee
美商英特爾股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 美商英特爾股份有限公司 filed Critical 美商英特爾股份有限公司
Publication of TW201710994A publication Critical patent/TW201710994A/zh
Application granted granted Critical
Publication of TWI725023B publication Critical patent/TWI725023B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • 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/30098Register arrangements
    • G06F9/30141Implementation provisions of register files, e.g. ports
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Abstract

揭示抑制對暫存器位址的多餘讀取及複製讀取資料的技術。當多個源運算元指明要讀取相同的暫存器位址時,抑制多餘讀取。此外,將讀取的資料複製至對應於資料讀取被抑制的源運算元的資料串或資料位置。

Description

用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體
本發明係關於用於圖形處理器之來源運算元讀取抑制。
現代的圖形處理器包含稱為執行單元(EU)的核心陣列,核心陣列會處理指令。在操作期間,EU會處理包含從不同的源讀取資料之指令。舉例而言,EU可以處理包含從對應於不同的資料源之暫存器檔案位址讀取資料之指令。通常,不同的源會多次參考相同的暫存器檔案位址。因此,在操作期間,EU會嘗試多次讀取相同的暫存器檔案位址。如此,在多次讀取相同的暫存器檔案位址時,圖形處理器會耗費資源(例如,功率、頻寬、等等)。
100‧‧‧處理系統
500‧‧‧處理器
600‧‧‧圖形處理器
710‧‧‧圖形處理引擎
800‧‧‧圖形處理器
900‧‧‧緒執行邏輯
1100‧‧‧圖形處理器
1300‧‧‧資料處理系統
1500‧‧‧系統晶片積體電路
1600‧‧‧儲存媒體
圖1顯示根據實施例的處理系統之方塊圖。
圖2A顯示根據實施例的技術方塊圖。
圖2B顯示根據實施例的技術方塊圖。
圖3顯示根據實施例的邏輯流程的方塊圖。
圖4顯示根據實施例的邏輯流程的方塊圖。
圖5顯示根據實施例的處理器之方塊圖。
圖6顯示根據實施例的圖形處理器之方塊圖。
圖7顯示根據實施例的圖形處理引擎之方塊圖。
圖8顯示根據另一實施例的圖形處理器之方塊圖。
圖9顯示根據實施例的緒執行邏輯。
圖10顯示根據實施例的圖形處理器指令格式之方塊圖。
圖11顯示根據另一實施例的圖形處理器之方塊圖。
圖12A顯示根據實施例之圖形處理器命令格式。
圖12B顯示根據實施例的圖形處理器命令序列。
圖13顯示根據實施例的圖形軟體架構之方塊圖。
圖14顯示根據實施例的IP核心開發系統之方塊圖。
圖15顯示根據實施例的系統晶片(SoC)積體電路之方塊圖。
圖16顯示根據實施例的儲存媒體。
【發明內容及實施方式】
各式各樣的實施例大致上關於抑制對相同暫存器檔案位址的多餘讀取以及將讀取的資料複製至多餘的源。更具體而言,本揭示提供圖形處理器中的EU可以對遍及多個源的相同位址抑制多餘的讀取。此外,EU可以將讀出的資料複製至多餘的源。
在某些實例中,EU可以對相同指令內具有相同的暫存器檔案位址的不同源抑制多餘的讀取以及複製讀取資料。在某些實例中,EU可以對多個(例如在執行管線中相鄰的、等等)指令之具有相同的暫存器檔案位址的不同源抑制多餘的讀取以及複製讀取資料。
現在參考圖式,其中,在圖式中,類似的代號用以表示類似元件。在下述說明中,為了說明,揭示眾多特定細節以助於完整瞭解。但是,清楚可知,沒有這些特定細節,仍可實施新穎的實施例。在其它情形中,以方塊圖形式顯示習知的結構及裝置以便於其說明。本發明係用以涵蓋申請專利範圍的範疇內的所有修改、均等、及替代。
圖1是根據實施例之處理系統100的方塊圖,其用以抑制遍及多個源之多餘的讀取及複製資料至對應於源的多個資料串(或位置)。在各式各樣的實施例中,系統100包含一或更多處理器102及一或更多圖形處理器108,以及可為單一處理器桌上型系統、多處理器工作站系統、或是具有大量處理器102或處理器核心107的伺服器系統。在一實施例中,系統100是併入於用於行動、手持、或嵌入式裝置之系統晶片(SoC)積體電路內的處理平台。
系統100的實施例包含(或是併入於)伺服器式的遊戲平台、包含遊戲及媒體機台的遊戲機台、行動遊戲機、手持遊戲機、或是線上遊戲機。在某些實施例中,系統100是行動電話、智慧型手機、平板計算裝置或是行動網 際網路裝置。資料處理系統100也包含、耦合或整合於例如智慧型手錶可穿戴式裝置、智慧型眼戴式裝置、擴增實境裝置或虛擬實境裝置等等可穿戴裝置內。在某些實施例中,系統100是具有一或更多處理器102及由一或更多圖形處理器108產生的圖形介面之電視或機上盒裝置。
在某些實施例中,一或更多處理器102均包含一或更多處理器核心107以處理指令,指令當被執行時會為系統及使用者軟體執行作業。在某些實施例中,一或更多處理器核心107中之各核心均配置成處理特定指令集109。在某些實施例中,指令集109便於複雜指令集計算(CISC)、精簡指令集計算(RISC)、或是經由很長指令字(VLIW)的計算。多處理器核心107均處理不同的指令集109,指令集109包含指令以助於其它指令集的仿真。處理器核心107也包含其它處理裝置,例如數位訊號處理器(DSP)。
在某些實施例中,處理器102包含快取記憶體104。取決於架構,處理器102具有單一內部快取記憶體或是多階層的內部快取記憶體。在某些實施例中,快取記憶體由處理器102的各種組件共用。在某些實施例中,處理器102也使用外部快取記憶體(例如階層3(L3)快取記憶體或是最終階層快取記憶體(LLC))(未顯示),使用習知的快取相干技術,外部快取記憶體可以在處理器核心107之間被共用。在處理器102中又包含暫存器檔案106,其可包含用於儲存不同型式的資料之不同型式的暫 存器(例如,整數暫存器、浮點暫存器、狀態暫存器、及指令指標器暫存器)。某些暫存器可為一般用途暫存器,而其它暫存器對於處理器102的設計可為特定的。在暫存器檔案106中不同的暫存器由暫存器位址識別。舉例而言,將暫存器檔案106說明成包含暫存器位址141-1、141-2、141-3至141-N。
在某些實施例中,處理器102耦合至處理器匯流排110以在處理器102與系統100中的其它組件之間傳送例如位址、資料、或控制訊號等通訊訊號。在一實施例中,系統100使用舉例說明的「集線器」系統架構,包含記憶體控制器集線器116及輸入輸出(I/O)控制器集線器130。記憶體控制器集線器116促進記憶體裝置與系統100的其它組件之間的、通訊,而I/O控制器集線器(ICH)130提供經由本地I/O匯流排而至I/O裝置的連接。在一實施例中,記憶體控制器集線器116的邏輯整合於處理器內。
記憶體裝置120可為動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、相變記憶體裝置、或是具有適當性能以作為處理記憶體的某些其它記憶體裝置。在一實施例中,記憶體裝置120操作成用於系統100的系統記憶體,以儲存當一或更多處理器102執行應用或處理時使用的資料122及指令121。記憶體控制器集線器116也耦合選加的外部圖形處理器112,外部圖形處理器112會與處理器102中的 一或更多圖形處理器108通訊以執行圖形及媒體作業。
在某些實施例中,ICH 130使得週邊能夠經由高速I/O匯流排而連接至記憶體裝置120及處理器102。I/O週邊包含但不限於音訊控制器146、韌體介面128、無線收發器126(例如Wi-Fi、藍芽)、資料儲存裝置124(例如硬碟機、快閃記憶體、等等)、及用於耦合舊制(例如個人系統2(PS/2))裝置至系統之舊制I/O控制器140。一或更多通用串列匯流排(USB)控制器142連接例如鍵盤及滑鼠144組合等輸入裝置。網路控制器134也耦合至ICH 130。在某些實施例中,高性能網路控制器(未顯示)耦合至處理器匯流排110。將瞭解,所示的系統100是舉例說明而非限定的,也可以使用不同地配置的其它型式的資料處理系統。舉例而言,ICH 130可以整合於一或更多處理器102內,或記憶體控制器集線器116及ICH 130可以整合成離散的外部圖形處理器,例如外部圖形處理器112。
在操作期間,處理器核心107可以執行包含源及目的地運算元的指令(例如指令121)(舉例而言,請參考圖10)。指令典型上包含多個源運算元。各源運算元可以對應於特定的暫存器位置。換言之,各源運算元包含對應於暫存器檔案106中的暫存器之暫存器位址(例如,暫存器位址141-a、等等)。在某些情形中,由一源運算元標示的暫存器位址可以與另一源運算標示的相同。更具體而言,二不同的源運算元可以都參考相同的暫存器位址。本 揭示假定在執行指令121時,處理器核心107可以抑制多餘的讀取(例如對相同的暫存器位址的讀取)也將複製從對應於被抑制的讀取之暫存器讀取的資料,以防止對相同的暫存器位址複製讀取,以降低例如資源消耗。
圖2A-2B顯示根據本揭示之實施例用於抑制多餘的讀取請求及複製讀取資料之邏輯流程的方塊圖。特別是,圖2A顯示用於抑制多餘的讀取之技術201的方塊圖,而圖2B顯示用於複製讀取資料之技術202的方塊圖。一般而言,圖形處理器會實施技術201及/或202。更具體而言,圖形處理器的一或多個執行單元可以實施技術201及/或202作為取出與被執行的指令之源運算元相關連的資料之部份。
配合指令210及220說明技術201和202。說明均包含三個源運算元之指令210和220。但是,須瞭解,這僅是為了方便及清楚說明而非限定。更具體而言,可以提供各式各樣的實施例以對具有比3多或少的源運算元的指令,抑制讀取請求及複製資料。此外,可以對這些圖中所示的指令更多或更少的指令實施技術201和202。此外,須注意,在圖2A-2B中,源運算元縮寫為(SO)。此外,須注意,為了清楚起見,在這些圖中,並非所有元件以數字代號表示。
須注意,指令可以具有特定用於例如指令集109的特別格式、等等。於下述中,參考圖10,說明指令格式的實例。然而,一般來說,指令可包含各種源運算元的指 示。各源運算元可以指明要由指令操作的資料(例如包含資料的標示)。更具體而言,各源運算元可以包含要由指令操作的資料所處之暫存器位址的標示(例如在暫存器檔案106中、等等)。
須瞭解,在某些實施中,由一源運算元標示的暫存器位址可以與用於另一源算元的位址相同。因此,根據習知的技術,執行指令將造成相同的暫存器位址由多次讀取(例如,取出儲存在暫存器中的資料、等等)。但是,本揭示提供多餘讀取請求可以被抑制及資料被複製用於處理。
現在特別轉至圖2A,說明技術201,抑制指令210和220的各種源運算元的多餘讀取請求。在操作期間,執行單元(舉例而言,請參考圖6-9)可以執行讀取請求2n1-a,其中,「n」代表指令(例如1、2、等等)及「a」代表對應於讀取請求(例如1、2、3、等等)之特定的源運算元。如此處所述,各源運算元包含暫存器位址2n3-a的標示(例如、源有效性、源暫存器位址、等等)。在實施技術201時,執行單元可以抑制讀取請求2n1-a,其中,讀取請求對應於另一讀取請求2n1-a的相同暫存器位址2n3-a。
一般而言,技術201會比較各源運算元的暫存器位址2n3-a且比較結果被用以抑制讀取請求2n1-a,而在具有相同的(例如相等的、等等)暫存器位址2n3-a之源運算元之間偏好較高的(例如,時間上先前的、執行時先前的、 在指令管線中較早的、等等)讀取請求2n1-a。使用比較運算器230-x,在邏輯上顯示此點,其中,「x」是正整數及邏輯AND(及)閘240-x。
舉例而言,說明技術201,經由比較運算器230-1,比較暫存器位址213-1與暫存器位址213-2。比較運算器230-1的輸出作為AND閘240-1的輸入,結果,暫存器位址213-1及213-2相同時,仍可抑制讀取請求211-2。類似地,暫存器位址213-1、213-2、213-3、223-1、223-2、及223-3經由比較運算器230-1至230-15而相比較。比較運算器230-1至230-15的輸出分別作為AND閘240-1至240-15的輸入,以抑制對於相同暫存器位址2n3-a之多餘的(例如,後續的、等等)請求。
現在更特別轉至圖2B,說明技術203,為指令210及220的各式各樣的源運算元,複製讀取資料。在操作期間,執行單元(例如,請參考圖6-9)可以經由第一源運算元的讀取請求(例如,圖2A的讀取請求2n1-a、等等)而複製讀取資料至對應於具有與第一源運算元相同的暫存器位址(例如,圖2A的暫存器位址2n3-a等等)之另一源運算元(或多個運算元)的資料串。換言之,對於在技術201中讀取請求2n1-a被抑制的那些源算元,技術202可以將讀取資料2a-5複製至源運算指令資料2n7-a。
一般而言,當用於源運算元的暫存器位址2n3-a相同時及/或讀取請求2n1-a被抑制,技術202會將讀取資料2n5-a多工化成源運算元指令資料2n7-a,使用多工器 250-x以邏輯方式表示此點。
舉例而言,說明技術202,當暫存器位址213-1等於暫存器位址213-2時,經由多工器250-1,將讀取資料215-1多工化成資料串(例如,源運算元指令資料、等等)217-2。類似地,經由多工器250-1至250-15,讀取資料215-1、215-2、215-3、225-1、225-2、及225-3可以多工成資料串217-2、217-3、227-1、227-2、227-3,其中,對應的暫存器位址是相等的(例如,相同的、等等),以及,抑制對應的讀取請求的該讀取(例如在技術201中、等等)。
圖3-4顯示根據本揭示的實施例之用於抑制多餘的讀取及複製讀取資料之邏輯流程的方塊圖。特別地,圖3顯示執行指令時用於抑制多餘的讀取及複製讀取資料的邏輯流程300,而圖4顯示執行多個指令時用於抑制多餘的讀取及複製讀取資料的邏輯流程400。在某些實施例中,系統100可以配置成實施(例如,當執行指令121時、等等)邏輯流程300及/或400。舉例而言,為了清楚說明,參考圖1的系統100及圖2A-2B的技術201和202,說明邏輯流程300及400。但是,實施例不限於此。
特別轉至圖3,說明邏輯流程300,從方塊310開始。在方塊310,「執行指令,指令會包含第一源運算元及第二源運算元的標示,以及,第一源運算元對應於第一暫存器位址,以及,第二源運算元對應於第二暫存器位址」,處理器執行指令,指令包含至少第一源運算元及第 二源運算元的標示,第一源運算元對應於第一暫存器位址,以及,第二源運算元對應於第二暫存器位址。
舉例而言,例如處理器102、圖形處理器108、處理器核心107、外部圖形處理器112等等處理器可以執行例如指令121中之一等指令。關於特定實例,處理器102可以執行圖2A-2B的指令210。
繼續至方塊320,「第一暫存器位址與第二暫存器位址相同嗎?」,處理器會決定第一暫存器位址與第二暫存器位址是否相同。舉例而言,處理器會決定暫存器位址213-1與第二暫存器位址213-2是否相同。繼續至方塊330,「抑制對第二源運算元的讀取請求」,處理器會根據第一暫存器位址同於第二暫存器位址的決定而抑制對與第二源運算元相對應的暫存器位址的讀取。舉例而言,處理器根據暫存器位址213-1同於暫存器位址213-2的決定而抑制讀取請求211-2。
繼續至方塊340,「將讀自第一暫存器位址的資料複製至對應於第二源運算元的資料串」,處理器會根據第一暫存器位址同於第二暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第二源運算元的資料串。舉例而言,處理器根據暫存器位址213-1同於暫存器位址213-2的決定而將讀取資料215-1複製至資料串217-2。
更特定地轉至圖4,說明邏輯流程400,從方塊710開始。在方塊710,「邏輯流程300」,處理器會執行邏輯流程300。舉例而言,例如處理器102、圖形處理器 108、處理器核心107、外部圖形處理器112等處理器執行圖3中所示的邏輯流程300。關於特定實例,處理器102執行邏輯流程300,包含執行指令210,包含根據邏輯流程300而抑制及/或複製資料。
繼續至方塊420,「執行第二指令,第二指令包含第三源運算元及第四源運算元的標示,第三源運算元對應於第三暫存器位址,以及,第四源運算元對應於第四暫存器位址」,處理器會執行指令,指令包含至少第三源運算元及第四源運算元的標示,第三源運算元對應於第三暫存器位址,以及,第四源運算元對應於第四暫存器位址。舉例而言,處理器102執行第二指令220。
繼續至方塊430,「第一暫存器位址同於第三暫存器位址?」,處理器會決定第一暫存器位址是否同於第三暫存器位址。舉例而言,處理器決定暫存器位址213-1是否同於暫存器位址223-1。繼續至方塊440,「抑制對第三源運算元的讀取請求」,處理器會根據第一暫存器位址同於第三暫存器位址的決定而抑制對應於第三源運算元的暫存器位址之讀取。舉例而言,處理器根據暫存器位址213-1同於暫存器位址223-1的決定而抑制讀取請求221-1。
繼續至方塊450,「第一暫存器位址是否同於第四暫存器位址?」,處理器會決定第一暫存器位址是否同於第四暫存器位址。舉例而言,處理器決定暫存器位址213-1是否同於暫存器位址223-2。繼續至方塊460,「抑制對第四源運算元的讀取請求」,處理器會根據第一暫存器位 址同於第四暫存器位址的決定而抑制對應於第四源運算元的暫存器位址之讀取。舉例而言,處理器根據暫存器位址213-1同於暫存器位址223-2的決定而抑制讀取請求221-2。
如同所示,邏輯流程400根據第一暫存器位址不同於第三暫存器位址的決定而從方塊430繼續至方塊470。關於方塊470,「第二暫存器位址是否同於第三暫存器位址?」,處理器會決定第二暫存器位址是否同於第三暫存器位址。舉例而言,處理器決定暫存器位址213-2是否同於暫存器位址223-1。邏輯流程400根據第二暫存器位址同於第三暫存器位址的決定而從方塊470繼續至方塊440。替代地,邏輯流程400根據第二暫存器位址不同於第三暫存器位址的決定而繼續至方塊480。
在方塊480,「第二暫存器位址是否同於第四暫存器位址?」,處理器會決定第二暫存器位址是否同於第四暫存器位址。舉例而言,處理器決定暫存器位址213-2是否同於暫存器位址223-2。邏輯流程400根據第二暫存器位址同於第四暫存器位址的決定而從方塊480繼續至方塊460。替代地,邏輯流程400根據第二暫存器位址不同於第四暫存器位址的決定而繼續至方塊490。
在方塊490,「第三暫存器位址是否同於第四暫存器位址?」,處理器會決定第三暫存器位址是否同於第四暫存器位址。舉例而言,處理器決定暫存器位址223-1是否同於暫存器位址223-2。邏輯流程400根據第三暫存器位 址同於第四暫存器位址的決定而從方塊490繼續至方塊460。替代地,邏輯流程400結束。
圖5是抑制多餘的源運算元讀取及複製用於運算元的讀取資料之處理器500之實施例的方塊圖,其中,讀取請求被抑制。在某些實例中,處理器500具有一或更多處理器核心502A-502N、整合記憶體控制器514、及整合圖形處理器508。圖5中與此處的任何其它圖的元件具有相同代號(或名稱)的那些元件可以以類似於本文中任何它處之方式操作或作用,但不侷限於此。處理器500包含虛線框所表示之增加的核心,包括增加的核心502N。各處理器核心502A-502N包含一或更多內部快取單元504A-504N。在某些實施例中,各處理器核心也存取一或更多共用的快取單元506。
內部快取單元504A-504N及共用的快取單元506代表處理器500內的快取記憶體階層架構。快取記憶體階層架構包含各處理器核心內至少一階層的指令及資料快取記憶體以及一或更多階層的共用中階層快取記憶體,例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層的快取記憶體,其中,在外部記憶體之前的最高階層的快取記憶體被歸類為LLC。在某些實施例中,快取相干邏輯維持不同的快取單元506與504A-504N之間的相干性。
在某些實施例中,處理器500也包含一或更多匯流排控制器單元516及系統代理器核心510之集合。一或更多匯流排控制器單元516管理週邊匯流排集,例如一或更多 週邊組件互連匯流排(例如PCI、PCI Express)。系統代理器核心510提供用於各式樣的處理器組件之管理功能。在某些實施例中,系統代理器核心510包含一或更多整合的記憶體控制514以管理各式各樣的外部記憶體裝置(未顯示)之存取。
在某些實施例中,處理器核心502A-502N中之一或更多包含用於同時多緒化的支援。在此實施例中,系統代理器核心510包含組件以用於多緒處理期間協調及操作核心502A-502N。系統代理器核心510增加地包含功率控制單元(PCU),功率控制單元包含邏輯及組件以調節處理器核心502A-502N及圖形處理器508的功率狀態。
在某些實施例中,處理器500增加地包含圖形處理器508以執行圖形處理作業。在某些實施例中,圖形處理器508與共用快取單元506、以及包含一或更多整合記憶體控制器514之系統代理器核心510的集合相耦合。在某些實施例中,顯示控制器511與圖形處理器508相耦合以驅動圖形處理器輸出至一或更多耦合的顯示器。在某些實施例中,顯示控制器511可為經由至少一互連而與圖形處理器耦合之分別的模組,或是整合於圖形處理器508或系統代理器核心510之內。
在某些實施例中,使用環式互連單元512(環互連)以耦合處理器500的內部組件。但是,可以使用替代的互連單元,例如點對點互連、交換式互連、或是包含此技術中熟知的技術等其它技術。在某些實施例中,圖形處理器 508經由I/O鏈路513而與環互連512相耦合。
舉例說明的I/O鏈路513代表眾多各式各樣的I/O互連中至少之一,包括有助於不同的處理器組件與例如eDRAM模組等高性能嵌入式記憶體518之間的通訊之套裝I/O互連。在某些實施例中,處理器核心502-502N及圖形處理器508均使用嵌入式記憶體518作為共用最後階層快取記憶體。
在某些實施例中,處理器核心502A-502N是執行相同指令集架構的同質核心。在另一實施例中,以指令集架構(ISA)的觀點而言,處理器核心502A-502N是異質的,其中一或多個處理器核心502A-N執行第一指令集,而至少一個其他核心執行第一指令集或不同指令集的子集。在一實施例中,以微架構的觀點而言,處理器核心502A-502N是異質的,其中,具有相對較高的耗電之一或更多核心與一或更多具有較低耗電的功率核心相耦合。此外,處理器500可以實施於一或更多晶片上或實施成為具有所示的組件之SoC積體電路,除了其他組件以外。
圖6是用以抑制多餘的源運算元讀取及複製讀取運算元之圖形處理器600的方塊圖。在某些實例中,處理器600可為離散的圖形處理單元,或是與眾多處理核心相整合的圖形處理器。在某些實施例中,圖形處理器經由記憶體映射I/O介面而通訊至圖形處理器上的暫存器及將命令置於處理器記憶體中。在某些實施例中,圖形處理器600包含記憶體介面614以存取記憶體。記憶體介面614可為 對本地記憶體、一或更多內部快取記憶體、一或更多共用外部記憶體、及/或系統記憶體之介面。
在某些實施例中,圖形處理器600也包含顯示控制器602以驅動顯示輸出資料至顯示裝置620。顯示控制器602包含用於顯示之一或更多重疊平面的硬體及多層視訊或使用者介面元件的組件。在某些實施例中,圖形處理器600包含視訊編解碼引擎606以將媒體在一或更多媒體編碼格式之間、至其或從其編碼、解碼、轉碼,這些格式包含但不限於例如MPEG-2等動畫專家組(MPEG)格式、例如H.264/MPEG-4 AVC等進階視訊碼化(AVC)格式、以及動畫&電視工程師協會(SMPTE)421 M/VC-1、及例如JPEG等聯合相片專家組(JPEG)格式、以及動作JPEG(MJPEG)格式。
在某些實施例中,圖形處理器600包含方塊影像轉換(BLIT)引擎604以執行二維(2D)光柵作業,包含例如位元-邊界方塊轉換。但是,在一實施例中,使用圖形處理引擎(GPE)610的一或更多組件,執行2D圖形作業。在某些實施例中,GPE引擎610是用於執行包含三維(3D)圖形作業及媒體作業等圖形作業的計算引擎。
在某些實施例中,GPE 610包含3D管線612,用於使用根據3D基本形狀(例如長方形、三角形、等等)以作用的處理功能來執行例如描繪三維影像及場景等3D作業。3D管線612包含執行元件內各式各樣的工作之可編程的及固定的功能元件、以及/或對3D/媒體子系統615 的子執行緒。雖然3D管線612被用以執行媒體作業,但是,GPE 610的實施例也包含特別用以執行例如視訊後置處理及影像強化等媒體作業的媒體管線616。
在某些實施例中,媒體管線616包含固定的功能或可編程的邏輯單元以取代或代表視訊編解碼引擎606來執行一或更多專門的媒體作業,例如視訊解碼加速、解除視訊插入、及視訊編碼加速。在某些實施例中,媒體管線616又包含緒繁衍單元以衍生用於在3D/媒體子系統615上執行的緒。衍生的緒執行用於包含在3D/媒體子系統615中的一或更多圖形執行單元上的媒體作業之計算。
在某些實施例中,3D/媒體子系統615包含邏輯,用於執行由3D管線612和媒體管線616衍生的緒。在一實施例中,管線發出緒執行請求給3D/媒體子系統615,3D/媒體子系統615包含緒派遣邏輯,用於仲裁及派遣各種請求給可供利用的緒執行資源。執行資源包含圖形執行單元陣列以處理3D及媒體緒。在某些實施例中,3D/媒體子系統615包含用於緒指令及資料的一或更多內部快取記憶體。在某些實施例中,子系統也包含共用記憶體以在緒之間共用資料及儲存輸出資料,共用記憶體包含暫存器及可定址記憶體。
圖7是根據某些實施例之圖形處理器的圖形處理引擎710的方塊圖。在一實施例中,GPE 710是圖6中所示的GPE 610之版本。與此處任何其它圖的元件具有相同代號(或名稱)之圖7的元件,可以以類似於此處任何它處所 述的方式操作或作用,但不侷限於此。
在某些實施例中,GPE 710與命令串流器703耦合,命令串流器703提供命令串給GPE 3D及媒體管線712、716。在某些實施例中,命令串流器703耦合至記憶體,記憶體可為系統記憶體或是內部快取記憶體及共用快取記憶體中之一或更多。在某些實施例中,命令串流器703從記憶體接收命令及發送命令給3D管線712及/或媒體管線716。命令係從環緩衝器取出的指令,環緩衝器儲存用於3D及媒體管線712、716的命令。在一實施例中,環緩衝器又包含儲存成批的眾多命令之批次命令緩衝器。3D及媒體管線712、716藉由經由分別管線內的邏輯而執行作業或是藉由派遣一或更多執行緒給執行單元陣列714,以執行命令。在某些實施例中,執行單元陣列714是可依比例增減的,以致於陣列包含根據GPE 710的目標功率及性能位準之可變數目的執行單元。
在某些實施例中,取樣引擎730與記憶體(例如快取記憶體或系統記憶體)及執行單元陣列714耦合。在某些實施例中,取樣引擎730提供用於執行單元陣列714之記憶體存取機構,允許執行陣列714從記憶體讀取圖形及媒體資料。在某些實施例中,取樣引擎730包含邏輯以執行用於媒體之專門的影像取樣作業。
在某些實施例中,在取樣引擎730中專門的媒體取樣邏輯包含去雜訊/去交織模組732、動作評估模組734、及影像縮放和過濾模組736。在某些實施例中,去雜訊/去交 織模組732包含邏輯以對解碼的視訊資料執行去雜訊或去交織演繹法中之一或更多。去交織邏輯會將交織的多個交織視訊內容場合併成視訊之單一格。去雜訊邏輯會將雜訊從視訊及影像資料中降低或移除。在某些實施例中,去雜訊邏輯及去交織是動作適應性的及根據視訊資料中偵測到的動作量而使用空間或時間過濾。在某些實施例中,去雜訊/去交織模組732包含專用的動作偵測邏輯(例如,在動作評估引擎734內)。
在某些實施例中,動作評估引擎734藉由對視訊資料執行例如動作向量評估及預測的視訊加速功能,而提供用於視訊作業的硬體加速。動作評估引擎決定動作向量,動作向量係說明連續的影像格之間的影像資料的轉換。在某些實施例中,圖形處理器媒體編解碼使用視訊動作評估引擎734以在巨集方塊層對視訊執行作業,這在其它情形中會過於計算強大而無法以一般用途處理器執行。在某些實施例中,動作評估引擎734一般可供圖形處理器組件利用,以輔助視訊解碼及處理功能,解碼及處理功能對於視訊資料內的動作方向或量值是敏感的或適應的。
在某些實施例中,影像比例及過濾模組736執行影像處理作業以強化產生的影像及視訊的視覺品質。在某些實施例中,在提供資料給執行單元陣列714之前,比例及過濾模組736會在取樣作業期間處理影像及視訊資料。
在某些實施例中,GPE 710包含資料埠744,資料埠744提供增加的機構給圖形子系統以存取記憶體。在某些 實施例中,資料埠744有助於用於作業之記憶體存取,這些作業包含描繪目標寫入、固定緩衝讀取、暫時記憶體空間讀/寫、及媒體表面存取。在某些實施例中,資料埠744包含快取記憶體空間以對記憶體快取存取。快取記憶體可以是經由資料埠而存取記憶體之分成用於多個子系統的多快取、或是單一資料快取(例如,描繪緩衝快取、固定緩衝快取、等等)。在某些實施例中,藉由經由耦合GPE 710的各子系統之資料散布互連以交換訊息,在執行單元陣列714中的執行單元上執行的緒可以與資料埠通訊。
圖8是用以抑制多餘的源運算元讀取及複製讀取資料之圖形處理器800的另一實施例之方塊圖。與此處任何其它圖的元件具有相同代號(或名稱)之圖8的元件,可以以類似於此處任何它處所述的方式操作或作用,但不侷限於此。
在某些實施例中,圖形處理器800包含環式互連802、管線前端804、媒體引擎837、及圖形核心880A-880N。在某些實施例中,環式互連802將圖形處理器耦合至其它處理單元,其它處理單元包含其它圖形處理器或一或更多一般用途處理器核心。在某些實施例中,圖形處理器是整合於多核心處理系統內的很多處理器中之一。
在某些實施例中,圖形處理器800經由環式互連802而接收成批命令。在管線前端804中的命令串流器803會將進入的命令解譯。在某些實施例中,圖形處理器800包含比例化執行邏輯,以經由圖形核心880A-880N而執行 3D幾何處理及媒體處理。對於3D幾何處理命令,命令串流器803會將命令供應給幾何管線836。對於至少某些媒體處理命令,命令串流器803供應命令給視訊前端834,視訊前端834與媒體引擎837耦合。在某些實施例中,媒體引擎837包含用於視訊及影像後置處理之視訊品質引擎(VQE)830以及用於提供硬體加速媒體資料編碼及解碼之多格式編碼/解碼(MFX)833引擎。在某些實施例中,幾何管線836及媒體引擎837均產生執行緒以用於由至少一圖形核心880A提供之緒執行資源。
在某些實施例中,圖形處理器800包含比例化緒執行資源特徵模組核心880A-880N(有時稱為核心片),各核心均具有多個子核心850A-850N、860A-860N(有時稱為核心子片)。在某些實施例中,圖形處理器800具有任何數目的圖形核心880A至880N。在某些實施例中,圖形處理器800包含具有至少第一子核心850A及第二核心子核心860A之圖形核心880A。在其它實施例中,圖形處理器是設有單一子核心(例如850A)之低功率處理器。在某些實施例中,圖形處理器800包含多個圖形核心880A-880N,各圖形核心包含第一子核心850A-850N組及第二子核心860A-860N組。在第一子核心850A-850N組中的各子核心包含至少第一組執行單元852A-852N及媒體/組織取樣器854A-854N。在第二子核心860A-860N組中的各子核心包含至少第二組執行單元862A-862N及取樣器864A-864N。在某些實施例中,各子核心850A-850N、 860A-860共享共用的資源870A-870N組。在某些實施例中,共用的資源包含共用的快取記憶體及像素作業邏輯。其它共用的資源也可包含於圖形處理器的各式各樣實施例中。
圖9顯示包含GPE的某些實施例中採用的處理元件陣列之緒執行邏輯900。與此處任何其它圖的元件具有相同代號(或名稱)之圖9的元件,可以以類似於此處任何它處所述的方式操作或作用,但不侷限於此。
在某些實施例中,緒執行邏輯900包含像素著色器902、緒派遣器904、指令快取記憶體906、包含眾多執行單元908A-908N的比例化執行單元陣列、取樣器910、資料快取記憶體912、及資料埠914。在一實施例中,包含的組件經由鏈接至各組件之互連結構而互連。在某些實施例中,緒執行邏輯900包含經由指令快取記憶體906、資料埠914、取樣器910、及執行單元陣列908A-908N中之一或更多而至例如系統記憶體或快取記憶體等記憶體之一或更多連接。在某些實施例中,各執行單元(例如908A)是個別的向量處理器,能夠執行多個同時緒及為各緒平行地處理多個資料元件。在某些實施例中,執行單元陣列908A-908N包含任何數目的個別執行單元。
在某些實施例中,執行單元陣列908A-908N主要用以執行「著色器」程式。在某些實施例中,在陣列908A-908N中的執行單元執行指令集,指令集包含用於很多標準的3D圖形著色器指令之原地支援,以致於以最小轉譯 來執行來自圖形庫的著色器程式(例如直接3D及OpenGL)。執行單元可以支援頂點及幾何處理(例如頂點程式、幾何程式、頂點著色器)、像素處理(例如像素著色器、片段著色器)及一般用途處理(例如,計算及媒體著色器)。
在執行單元陣列908A-908N中的各執行單元會對資料元件陣列操作。資料元件的數目是「執行尺寸」、或是用於指令的通道數目。執行通道是用於指令內資料元件存取、遮罩、及流程控制之執行的邏輯單元。通道的數目可以與用於特定圖形處理器之實體算術邏輯單元(ALU)或浮點單元(EPU)的數目相獨立。在某些實施例中,執行單元908A-908N支援整數及浮點資料型式。
執行單元指令集包含單指令多資料(SIMD)指令。各式各樣的資料元件可以作為緊縮資料型式儲存於暫存器中,且執行單元將根據元件的資料尺寸而處理各式各樣的元件。舉例而言,當對256位元寬的向量操作時,向量的256位元會儲存於暫存器中,且執行單元依四個分別的64位元緊縮資料元件(四倍字(QW)尺寸資料元件)、八個分別的32位元緊縮資料元件(雙倍字(DW)尺寸資料元件)、十六個分別的16位元緊縮資料元件(字(QW)尺寸資料元件)、或三十二個分別的8位元資料元件(位元組(B)尺寸資料元件)而對向量作業。但是,不同的向量寬度及暫存器尺寸是可能的。
一或更多內部指令快取記憶體(例如906)包含於緒 執行邏輯900中以快取用於執行單元的緒指令。在某些實施例中,包含一或更多資料快取記憶體(例如912)以在緒執行期間快取緒資料。在某些實施例中,包含取樣器910以提供用於3D作業的組織取樣及用於媒體作業的媒體取樣。在某些實施例中,取樣器910包含專門的組織或媒體取樣功能以在提供取樣的資料給執行單元之前,在取樣處理期間處理組織或媒體資料。
在執行期間,圖形及媒體管線經由緒衍生及派遣邏輯而發送緒啟始請求給緒執行邏輯900。在某些實施例中,緒執行邏輯900包含本地緒派遣器904,本地緒派遣器904會仲裁來自圖形及媒體管線之緒啟始請求,以及樣例化一或更多執行單元908A-908上被請求的緒。舉例而言,幾何管線(例如圖8的836)派遣頂點處理、鑲嵌、或幾何處理緒給緒執行邏輯900(圖9)。在某些實施例中,緒派遣器904也處理來自執行著色器程式之運行時間緒衍生請求。
一旦將幾何物件組處理及光柵化成為像素資料時,喚起像素著色器902以進一步計算輸出資訊及使結果被寫至輸出表面(例如,色彩緩衝器、深度緩衝器、模緩衝器、等等)。在某些實施例中,像素著色器902計算各種頂點屬性的值,其將在光柵物件上更改。在某些實施例中,像素著色器902然後執行應用程式介面(AIP)-供應的像素著色器程式。為了執行像素著色器程式,像素著色器902會經由緒派遣器904,將緒派遣給執行單元(例如 908A)。在某些實施例中,像素著色器902使用取樣器910中的組織取樣邏輯以存取儲存在記憶體中的組織圖中的組織資料。對組織資料及輸入的幾何資料之算術運算會計算用於各幾何片斷的像素顏色資料,或是從進一步處理中放棄一或更多像素。
在某些實施例中,資料埠914提供用於緒執行邏輯900之記憶體存取機構,緒執行邏輯900會輸出處理過的資料給記憶體以用於圖形處理器輸出管線上的處理。在某些實施例中,資料埠914包含或耦合至一或更多快取記憶體(例如資料快取記憶體912)以經由資料埠而快取用於記憶體存取的資料。
圖10是方塊圖,顯示根據某些實施例之圖形處理器指令格式1000。在一或更多實施例中,圖形處理器執行單元支援具有多種格式的指令之指令集。實線框顯示一般包含於執行單元指令中的組件,而虛線包含選加的或是僅包含於指令的子集合中的組件。在某些實施例中,說明及顯示之指令格式1000是巨集指令,它們是供應給執行單元的指令,與一旦指令被處理時導因於指令解碼之微作業相反。
在某些實施例中,圖形處理器執行單元原本地支援128位元格式1010的指令。根據被選取的指令、指令選項、及運算元數目,64位元的緊縮指令格式1030是可供某些指令利用的。原本的128位元格式1010提供對所有指令選項的存取,而某些選項及作業被侷限於64位元格 式1030。以64位元格式1030可供利用之原本的指令會隨著實施例而不同。在某些實施例中,使用索引欄1013中的索引值集合,將指令部份地緊縮。執行單元硬體意指根據索引值之緊縮表的集合以及使用緊縮表輸出以重建128位元格式1010的原本指令。
對於各格式,指令作業碼1012定義執行單元要執行的作業。執行單元對各運算元的多個資料元件平行地執行各指令。舉例而言,為回應加法指令,執行單元對代表組織元件或畫面元件之各顏色通道執行同時加法運算。內定地,執行單元對運算元的所有資料通道執行各指令。在某些實施例中,指令控制欄1014使得對某些執行選項的控制賦能,執行選項可為例如通道選取(例如預測)及資料通道次序(例如拌和)。對於128位元的指令1010及exec-size欄1016會限制將被平行執行的資料通道的數目。在某些實施例中,exec-size欄1016無法用於64位元緊縮指令格式1030。
某些執行單元指令具有高達三個運算元,包含二源運算元SRC0 1022、SRC1 1022、及一目的地1018。在某些實施例中,執行單元支援雙目的地指令,在其中暗指目的地之一。資料操縱指令具有第三源運算元(例如SRC2 1024),其中,指令作業碼1012決定源運算元的數目。指令的最後源運算元可為隨指令通過之立即(例如硬碼化)值。
在某些實施例中,128位元指令格式1010包含存取/ 位址模式資訊1026,舉例而言,存取/位址模式資訊1026係指明使用直接暫存器定址模式或是間接暫存器定址模式。當使用直接暫存器定址模式時,在指令1010中的位元直接提供一或更多運算元的暫存器位址。
在某些實施例中,128位元指令格式1010包含存取/位址模式欄1026,存取/位址模式欄1026指明用於指令的位址模式及/或存取模式。在一實施例中,存取模式界定用於指令之資料存取對齊。某些實施例支援包含16位元組對齊的存取模式及1位元組對齊的存取模式等存取模式,其中,存取模式的位元組對齊決定指令運算元的存取對齊。舉例而言,當在第一模式中時,對於源及目的地運算元,指令1010可以使用位元組對齊定址,當在第二模式中時,對於所有源及目的地運算元,指令1010可以使用16位元組對齊定址。
在一實施例中,存取/位址模式欄1026的位址模式部份決定指令是否要使用直接或間接定址。當使用直接暫存器定址模式時,指令1010中的位元直接提供一或更多運算元的暫存器位址。當使用間接暫存器定址模式時,根據指令中的位址立即欄及位址暫存器值,計算一或更多運算元的暫存器位址。
在某些實施例中,根據作業碼1012位元欄位,將指令分組,以簡化作業碼解碼1040。對於8位元的作業碼,位元4、5、及6允許執行單元決定作業碼的型式。所示之精確的作業碼分組僅為舉例說明。在某些實施例 中,移動及邏輯作業碼組1042包含資料移動及邏輯指令(例如,移動(mov)、比較(cmp))。在某些實施例中,移動及邏輯組1042共用五個高效位元(MSB),其中,移動(rnov)指令是0000xxxxb的形式,以及,邏輯指令是0001xxxxb的形式。流動控制指令組1044(例如呼叫、跳躍(jmp))包含0010xxxxb的形式(例如0x20)。雜項指令組1046包含包括0011xxxxb形式(例如0x30)之同步指令(例如等待、發送)等指令的混合。平行算術指令組1048包含組件式算術指令(例如0100xxxxb(例如0x40)形式的加法、乘法(mul))。平行算術指令組1048在資料頻道上平行地執行算術運算。向量算術組1050包含0101xxxxb(例如0x50)形式的算術指令(例如dp4)。向量算術組對向量運算元執行例如點乘積計算等算術。
圖11是圖形處理器1100的另一實施例的方塊圖。與此處任何其它圖的元件具有相同代號(或名稱)之圖11的元件,可以以類似於此處任何它處所述的方式操作或作用,但不侷限於此。
在某些實施例中,圖形處理器1100包含圖形管線1120、媒體管線1130、顯示引擎1140、緒執行邏輯1150、及描繪輸出管線1170。在某些實施例中,圖形處理器1100是在包含一或更多一般用途的處理核心之多核心處理系統內的圖形處理器。圖形處理器由對一或更多控制暫存器(未顯示)的暫存器寫入、或是經由環式互連 1102而發送給圖形處理器1100的命令所控制。在某些實施例中,環式互連1102耦合圖形處理器1100至例如其它圖形處理器或一般用途處理器等其它處理組件。來自環式互連1102的命令會由命令串流器1103解譯,命令串流器1103供應指令給圖形管線1120或媒體管線1130之個別的組件。
在某些實施例中,命令串流器1103指示頂點提取器1105的作業,所述作業係從記憶體讀取頂點資料及執行命令串流器1103提供的頂點處理命令。在某些實施例中,頂點提取器1105提供頂點資料給頂點著色器1107,頂點著色器1107執行對各頂點的座標空間轉換及照明作業。在某些實施例中,頂點提取器1105及頂點著色器1107藉由將執行緒經由緒派遣器1131而派遣給執行單元1152A、1152B而執行頂點處理指令。
在某些實施例中,執行單元1152A、1152B是具有用於執行圖形和媒體作業的指令集之向量處理器陣列。在某些實施例中,執行單元1152A、1152B具有附加的L1快取記憶體1151,以特定用於各陣列或是陣列之間共用。快取記憶體可配置作為資料快取記憶體、指令快取記憶體、或是分割成在不同部份含有資料及指令之單一快取記憶體。
在某些實施例中,圖形管線1120包含鑲嵌組件以執行3D物件之硬體加速鑲嵌。在某些實施例中,可編程的包(hull)著色器1111會配置鑲嵌作業。可編程的域著色 器1117提供鑲嵌輸出的後端評估。鑲嵌器1113在包著色器1111的方向上操作以及含有特別用途的邏輯以根據提供給圖形管線1120作為輸入的粗略的幾何模型而產生詳細的幾何物件集。在某些實施例中,假使未使用鑲嵌時,可以繞過鑲嵌組件1111、1113、1117。
在某些實施例中,完成的幾何物件經由一或更多派遣給執行單元1152A、1152B之緒而由幾何著色器1119處理,或者直接進行至剪輯器1129。在某些實施例中,幾何著色器對整個幾何物件操作,而不是如同在圖形管線的先前級中般對頂點或是頂點的補綴操作。假使鑲嵌被禁能時,則幾何著色器1119會接收來自頂點著色器1107的輸入。在某些實施例中,假使嵌鑲單元被禁能時,幾何著色器1119是可由幾何著色器程式編程以執行幾何鑲嵌。
在光柵化之前,剪輯器1129處理頂點資料。剪輯器1129可為固定功能的剪輯器或是具有剪輯及幾何著色器功能之可編程的剪輯器。在某些實施例中,在描繪輸出管線1170中的光柵及深度測試組件1173會派遣像素著色器以將幾何物件轉換成它們的每一像素表示。在某些實施例中,像素著色器邏輯包含在緒執行邏輯1150中。在某些實施例中,應用可以繞過光柵及深度測試組件1173及經由流出單元1123而存取未光柵化的頂點資料。
圖形處理器1100具有互連匯流排、互連架構、或是允許資料和訊號通過處理器的主要組件之間的某些其它互連機構。在某些實施例中,執行單元1152A、1152B及相 關連的快取記憶體1151、組織和媒體取樣器1154、及組織/取樣器快取記憶體1158經由資料埠1156而互連以執行記憶體存取及與處理器的描繪輸出管線組件相通訊。在某些實施例中,取樣器1154、快取記憶體1151、1158及執行單元1152A、1152B均具有分別的記憶體存取路徑。
在某些實施例中,描繪輸出管線1170含有光柵及深度測試組件1173,光柵及深度測試組件1173會將頂點為基礎的物件轉換成相關的像素為基礎的表示。在某些實施例中,光柵邏輯包含窗器/遮罩器單元以執行固定功能三角及線光柵化。在某些實施例中,相關連的描繪快取記憶體1178及深度快取記憶體1179也是可供利用的。像素作業組件1177對資料執行像素為基礎的作業,但是,在某些情形中,與2D作業相關連的像素作業(例如具有混合之位元方塊影像轉換)由2D引擎1141執行、或是在顯示時由顯示控制器1143使用重疊顯示平面替代。在某些實施例中,共用的L3快取記憶體1175對所有圖形組件是可供利用的,允許共用資料而不使用主系統記憶體。
在某些實施例中,圖形處理器媒體管線1130包含媒體引擎1137及視訊前端1134。在某些實施例中,視訊前端1134從命令串流器1103接收管線命令。在某些實施例中,媒體管線1130包含分別的命令串流器。在某些實施例中,在發送命令給媒體引擎1137之前,視訊前端1134處理媒體命令。在某些實施例中,媒體引擎337包含緒衍生功能以衍生緒,用於經由緒派遣器1131而派遣給緒執 行邏輯1150。
在某些實施例中,圖形處理器1100包含顯示引擎1140。在某些實施例中,顯示引擎1140在處理器1100的外部且經由環式互連1102、或某些其它互連匯流排或架構而與圖形處理器耦合。在某些實施例中,顯示引擎1140包含2D引擎1141及顯示控制器1143。在某些實施例中,顯示引擎1140含有能夠與3D管線相獨立地操作之特別用途的邏輯。在某些實施例中,顯示控制器1143與顯示裝置耦合(未顯示),顯示裝置可為例如膝上型電腦中之系統整合顯示裝置、或是經由顯示裝置連接器而附接的外部顯示裝置。
在某些實施例中,圖形管線1120及媒體管線1130可配置成根據多圖形及媒體程式介面而執行作業且非任何一應用程式介面(API)特有的。在某些實施例中,用於對於特定圖形或媒體庫特定之圖形處理器的驅動軟體會將API呼叫轉譯成可由圖形處理器處理的命令。在某些實施例中,支援來自Khronos集團的開放式圖形庫(OpenGL)及開放式計算語言(OpenCL)、來自微軟公司的Direct3D庫所提供、或是支援可提供至OpenGL及D3D。也可以提供支援給開放式源電腦視覺庫(OpenCV)。假使可以從未來的API的管線對映至圖形處理器的管線,則設有共容的3D管線之未來API也將受支援。
圖12A是方塊圖,顯示根據某些實施例之圖形處理器 命令格式1200。圖12B是方塊圖,顯示根據實施例之圖形處理器命令序列1210。圖12A中的實線框顯示一般包含於圖形命令中的組件,而虛線框包含選擇性的或是僅包含於圖形命令的子集合中的組件。圖12A之舉例說明的圖形處理器命令格式1200包含資料欄以辨識命令的目標客戶1202、命令作業碼(opcode)1204、及用於命令之相關資料1206。子作業碼1205及命令尺寸1208也包含於某些命令中。
在某些實施例中,客戶1202指定會處理命令資料之圖形裝置客戶單元。在某些實施例中,圖形處理器命令剖析器會檢查各命令的客戶欄以條件化命令的進一步處理以及安排命令資料至適當的客戶單元之路徑。在某些實施例中,圖形處理器客戶單元包含記憶體介面單元、描繪單元、2D單元、3D單元、及媒體單元。各客戶單元具有會處理命令之對應的處理管線。一旦命令由客戶單元接收時,客戶單元讀取作業碼1204,以及,假使存在時,則子作業碼1205會決定要執行的作業。使用資料欄1206中的資訊,客戶單元執行命令。對於某些命令,預期明確的命令尺寸1208會指明命令的尺寸。在某些實施例中,根據命令作業碼,命令剖析器自動地決定至少某些命令的尺寸。在某些實施例中,經由多個雙倍字,命令會相對齊。
圖12B中的流程圖顯示舉例說明的圖形處理器命令序列1210。在某些實施例中,以圖形處理器的實施例為特點之資料處理系統的軟體或韌體會使用所示的命令序列版 本以設立、執行、及終止圖形作業集。顯示及說明的樣品命令序列僅為舉例說明,實施例不侷限於這些特定命令或此命令序列。此外,可以以命令序列中的整批命令發出命令,以致於圖形處理器將至少部份地同時處理命令序列。
在某些實施例中,圖形處理器命令序列120始於管線沖洗命令1212以促使任何主動圖形管線為管線完成目前待決的命令。在某些實施例中,3D管線1222及媒體管線1224未同時地操作。執行管線沖洗以促使主動圖形管線完成任何待決的命令。回應管線沖洗,用於圖形處理器的命令剖析器將暫停命令處理單元直到主動汲取引擎完成待決作業及相關的讀取快取記憶體無效為止。選擇性地,被標記為「髒」的描繪快取記憶體中的任何資料可以被沖洗至記憶體。在某些實施例中,管線快取命令1212可以用於管線同步、或是在將圖形處理器置於低功率狀態之前被使用。
在某些實施例中,當命令序列要求圖形處理器在管線之間明確地切換時,使用管線選取命令1213。在某些實施例中,除非環境是要發出用於二管線之命令,否則,在發出管線命令之前,在執行環境內僅一次需要管線選取命令1213。在某些實施例中,正好在經由管線選取命令1213之管線切換之前,會需要管線沖洗命令1212。
在某些實施例中,管線控制命令1214規劃圖形管線用於作業以及被用以程式化3D管線1222及媒體管線1224。在某些實施例中,管線控制命令1214規劃用於主 動管線的管線狀態。在某些實施例中,管線控制命令1214用於管線同步及在處理整批命令之前將資料從主動管線內的一或更多快取記憶體中清除。
在某些實施例中,使用回覆緩衝器狀態命令1216來為分別管線配置回覆緩衝器組以寫入資料。某些管線作業要求分配、選取、或是配置一或更多回覆緩衝器,所述一或更多回覆緩衝器係在處理期間作業會將中間資料寫入其中。在某些實施例中,圖形處理器也使用一或更多回覆緩衝器以儲存輸出資料及執行交互緒通訊。在某些實施例中,回覆緩衝器狀態1216包含選取用於管線作業組的回覆緩衝器的尺寸及數目。
命令序列中的其餘命令根據用於作業的主動管線而不同。根據管線決定1220,使命令序列適合始於3D管線狀態1230之3D管線1222、或是始於媒體管線狀態1240的媒體管線1224。
用於3D管線狀態1230的命令包含用於三維(3D)圖元命令被處理之前要被規劃之頂點緩衝器狀態、頂點元件狀態、固定色彩狀態、深度緩衝器狀態、及其它狀態變數之3D狀態設定命令。至少部份地根據使用中的特別3DAPI,決定這些命令的值。在某些實施例中,假使某些管線元件未被使用,則3D管線狀態1230命令也能夠選擇性地禁能或繞過這些管線元件。
在某些實施例中,使用3D圖元1232命令以替代要由3D管線處理的3D圖元。經由3D圖元1232命令而被傳 遞給圖形處理器之命令及相關的參數會被遞送給圖形管線中的頂點提取功能。頂點提取功能使用3D圖元1232命令資料以產生頂點資料結構。頂點資料結構儲存於一或更多回覆緩衝器中。在某些實施例中,使用3D圖元1232命令以經由頂點著色器而對3D圖元執行頂點作業。為了處理頂點著色器,3D管線1222派遣著色器執行緒給圖形處理器執行單元。
在某些實施例中,經由執行1234命令或事件而觸發3D管線1222。在某些實施例中,暫存器寫入觸發命令執行。在某些實施例中,經由命令序列中的「go」或「kick」命令而觸發執行。在一實施例中,使用管線同步命令觸發命令執行以將命令序列沖洗經過圖形管線。3D管線將執行用於3D圖元的幾何處理。一旦作業完成時,將造成的幾何物件光柵化以及像素引擎會將造成的像素著色。也包含控制像素著色及像素後端作業之其它命令以用於這些作業。
在某些實施例中,當執行媒體作業時,圖形處理器命令序列1210依循媒體管線1224路徑。一般而言,對媒體管線1224的程式化之特定使用及方式取決於要執行的媒體或計算作業。特定媒體解碼作業可以在媒體解碼期間卸載至媒體管線。在某些實施例中,也可以繞過媒體管線以及使用一或更多一般用途的處理核心所提供的資源而全部地或部份地執行媒體解碼。在一實施例中,媒體管線也包含用於一般用途的圖形處理器單元(GPGPU)作業之元 件,其中,圖形處理器被用以使用與圖形圖元的描繪未明確有關之計算著色器程式以執行SIMD向量作業。
在某些實施例中,媒體管線1224以類似於3D管線1222的方式配置。媒體管線狀態命令1240組被派遣或置於媒體物件命令1242之前的命令序列中。在某些實施例中,媒體管線狀態命令1240包含要配置將用以處理媒體物件之媒體管線元件的資料。這包含要配置媒體管線內視訊解碼及視訊編碼邏輯的資料,例如編碼或解碼格式。在某些實施例中,媒體管線狀態命令1240也支援對含有整批狀態設定的「間接」狀態元件使用一或更多指標器。
在某些實施例中,媒體物件命令1242供應指標器給媒體物件以用於由媒體管線處理。媒體物件包含記憶體緩衝器,記憶體緩衝器含有要被處理的視訊資料。在某些實施例中,在發出媒體物件命令1242之前,所有媒體管線狀態必須是有效的。一旦管線狀態被配置及媒體物件命令1242被佇列時,則經由執行命令1244或是等效執行事件(例如暫存器寫入)而觸發媒體管線1224。來自媒體管線1224的輸出接著由3D管線1222或媒體管線1224提供的作業後置處理。在某些實施例中,以類似於媒體作業的方式,配置及執行GPGPU作業。
圖13顯示根據某些實施例之用於資料處理系統1300之舉例說明的圖形軟體架構。在某些實施例中,軟體架構包含3D圖形應用1310、作業系統1320、及至少一處理器1330。在某些實施例中,處理器1330包含圖形處理器 1332及一或更多一般用途處理器核心1334。圖形應用1310及作業系統1320均在資料處理系統的系統記憶體1350中執行。
在某些實施例中,3D圖形應用1310包含一或更多包括著色器指令1612之著色器程式。著色器語言指令可以是高階著色器語言,例如高階著色器語言(HLSL)或是OpenGL著色器語言(GLSL)。應用也包含適用於由一般用途處理器核心1334執行之機器語言的可執行的指令1614。應用也包含由頂點資料界定的圖形物作1616。
在某些實施例中,作業系統1320是來自微軟公司的微軟視窗作業系統、專有的UNIX類作業系統、或是使用Linux核心的變異之開放源UNIX類作業系統。當Direct3D API在使用中時,作業系統1320會使用前端著色器編譯器1324以將HLSL的任何著色器指令1612編譯成低階著色器語言。編譯可為即時(JIT)編譯或是應用可以執行著色器預編譯。在某些實施例中,在3D圖形應用1310的編譯期間,高階著色器被編譯成低階著色器。
在某些實施例中,使用者模式圖形驅動程式1326含有後端著色器編譯器1327以將著色器指令1612轉換成硬體特定表示。當OpenGL API在使用中時,GLSL高階語言的著色器指令1612被傳送給使用者模式圖形驅動程式1326以編譯。在某些實施例中,使用者模式圖形驅動程式1326使用作業系統核心模式功能1328以與核心模式圖形驅動程式1329通訊。在某些實施例中,核心模式圖形 驅動程式1329與圖形處理器1332通訊以派遣命令及指令。
至少一實施例的一或更多態樣可以儲存於機器可讀取的媒體上的代表碼執行,代表碼係代表及/或界定例如處理器內的積體電路內的邏輯。舉例而言,機器可讀取的媒體包含代表處理器內的邏輯之指令。當由機器讀取時,指令會促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些表示是用於積體電路之可再使用的邏輯單元,儲存於作為硬體模型之實體的、機器可讀取的媒體上,說明積體電路的結構。硬體模型可以供應給會將硬體模型載至製造積體電路的製造機器上之各式各樣的客戶或是製造設施。積體電路可以製造成電路會執行與此處所述的任何實施例相關地說明的作業。
圖14是方塊圖,說明可用以製造執行根據實施例的作業之積體電路的IP核心開發系統1400。IP核心開發系統1400可用以產生模組化的、可再使用的設計,所述設計可併入於較大的設計或是用以建構整體積體電路(例如SOC積體電路)。設計設施1730可以產生高階程式語言(例如C/C++)之IP核心設計的軟體模擬1710。軟體模擬1710可用以設計、測試、及驗證IP核心的表現。然後,從模擬模型1400產生或合成暫存器轉移層(RTL)設計。RTL設計1415是將硬體暫存器之間的數位訊號流動模型化之積體電路的表現之抽象化,包含使用模型化的數位訊號而執行之相關邏輯。除了RTL設計1415之外, 也可以產生、設計、或是合成在邏輯層或電晶體層之較低階設計。因此,初始設計及模擬的特定細節會變化。
RTL設計1415或等同物可以由設計設施又合成為硬體模型1420,硬體模型1420可為硬體說明語言(HDL)、或是實體設計資料的某些其它表示。HDL可以又被模擬或測試以驗證IP核心設計。使用非依電性記憶體1440(例如硬碟、快閃記憶體、或任何非依電性儲存媒體),儲存IP核心設計以用於遞送至第3方製造設施1465。或者,經由有線連接1450或無線連接1460,傳送IP核心設計(例如經由網際網路)。然後,製造設施1465會製造至少部份地根據IP核心設計之積體電路。所製造的積體電路可以配置成執行根據此處所述的至少一實施例之作業。
圖15是方塊圖,顯示根據實施例之使用一或更多IP核心製造之舉例說明的系統晶片積體電路1500。舉例說明的積體電路包含一或更多應用處理器1505(例如CPU)、至少一圖形處理器1510,以及又包含影像處理器1515及/或視訊處理器1520,這些處理器中任一處理器可為來自相同或多個不同的設施之模組化的IP核心。積體電路包含週邊或匯流排邏輯,週邊或匯流排邏輯包含USB控制器1525、UART控制器1530、SPI/SDIO控制器1535、I2S/I2C控制器1540。此外,積體電路包含顯示裝置1545,顯示裝置1545耦合至高清晰多媒體介面(HDMI)控制器1550及行動產業處理器介面(MIPI)顯 示介面1555中之一或更多。可由包含快閃記憶體及快閃記憶體控制器之快閃記憶體子系統1560提供儲存。可以經由記憶體控制器1565而提供記憶體介面以用於存取SDRAM或SRAM記憶體裝置。某些積體電路又包含嵌入式安全引擎1570。
此外,其它邏輯及電路可以包含在積體電路1500的處理器中,包含其它圖形處理器/核心、週邊介面控制器、或一般用途處理器核心。
圖16顯示儲存媒體1600的實施例。儲存媒體1600包括製造物件。在某些實例中,儲存媒體1600包含任何非暫時的電腦可讀取的媒體或機器可讀取的媒體,例如光學、磁性或半導體儲存器。儲存媒體1600可以儲存各種型式的電腦可執行的指令,例如實施技術201、技術202、邏輯流程300、及/或邏輯流程400之指令。電腦可讀取的或機器可讀取的儲存媒體包含能夠儲存電子資料之任何實體媒體,包含依電性記憶體或非依電性記憶體、可移除式或不可移除式記憶體、可抹除或不可抹除的記憶體、可寫式或可重寫式記憶體、等等。電腦可執行的指令之實例包含任何適合型式的碼,例如原始碼、編譯過的碼、解譯過的碼、可執行的碼、靜態碼、動態碼、物件導向碼、視覺碼、等等。實例不侷限於本文。
在此處所述的各式各樣的作業或功能之範圍內,它們可以被說明成或是定義成硬體電路、軟體碼、指令、配置、及/或資料。內容可以以硬體邏輯具體實施,或是具 體實施成為直接可執行的軟體(「物件」或「可執行的」形式)、原始碼、設計成用於在圖形引擎上執行之高階著色器碼、或是用於特定處理器或圖形核心的指令集中的低階組合語言碼。可以經由設有儲存有內容的製造物件、或是經由操作通訊介面以經由通訊介面發送資料的方法,提供此處所述的實施例的軟體內容。
非暫時的機器可讀取的儲存媒體會促使機器執行所述的功能或作業,以及,包含儲存可由機器(例如計算裝置、電子系統、等等)存取的形式之資訊的任何機構,例如可記錄的/非可記錄的媒體(例如唯讀記憶體(ROM)、隨機存取記憶體(RAM)、磁碟儲存媒體、光學儲存媒體、快閃記憶體裝置、等等)。通訊介面包含與任何實體接線的、無線的、光學的、等等媒體接口以對另一裝置通訊之任何機構,例如記憶體匯流排介面、處理器匯流排介面、網際網路連接、碟片控制器、等等。藉由提供配置參數或是發送訊號以使通訊介面準備提供說明軟體內容之資料訊號,而配置通訊介面。經由發送給通訊介面的一或更多命令或訊號,可以存取通訊介面。
使用措詞「一實施例」或「實施例」與它們的衍生詞等表述,說明某些實施例。這些詞意指配合實施例說明之特定的特點、結構或特徵包含在至少一實施例中。在說明書的各處出現之「在一實施例中」之詞句不一定都意指相同的實施例。此外,使用措詞「耦合」及「連接」與它們的衍生詞來說明某些實施例。這些詞不一定作為彼此的同 義詞。舉例而言,可以使用「耦合」及/或「連接」等詞以表示二或更多元件彼此直接實體的或電接觸,以說明某些實施例。但是,「耦合」一詞也意指二或更多元件彼此未直接接觸,但仍然彼此合作或互動。此外,來自不同實施例的態樣或元件可以相結合。
須強調,提供揭示的摘要以允許讀者能夠快速地確定技術揭示的本質。須瞭解,其不是被用以解釋或限定申請專利範圍的涵義或範圍。此外,前述詳細說明中,為了使說明流暢,可以看到不同的特點被一起分組在單一實施例中。此揭示方法不應被解釋為反映所主張的實施例要求比各申請專利範圍項中明確記載還多的特點。反之,如下述申請專利範圍反映般,發明的標的在於小於單一揭示的實施例的所有特點。因此,下述申請專利範圍於此併入詳細說明中,以各申請專利範圍項依據它自己作為分別的實施例。在後附的申請專利範圍中,使用「包含(including)」及「其中(in which)」等詞分別作為「包括(comprising)」及「其中(wherein)」等分別詞的一般英文的同義字。此外,「第一」、「第二」、「第三」等等僅作為標記,而非要對它們的物件加以數值要求。
上述說明包含揭示的架構實例。當然,無法說明每一可思及的組件及/或方法的結合,但是,習於此技術者可以認知到很多另外的組合及變更是可能的。因此,新穎架構是要包含落在後附的申請專利範圍之精神及範圍內的所 有這些變更、修改、及變異。詳細揭示現在轉至提供關於另外的實施例之實例。下述提供的實例不是限定性的。
實例1. 一種用於抑制圖形處理單元(GPU)多餘讀取的設備,包括:電路,用以執行指令,所述指令包含至少第一源運算元及第二源運算元的標示,第一源運算元對應於第一暫存器位址,以及,第二源運算元對應於第二暫存器位址;及,多餘的讀取抑制(RRS)邏輯,RRS邏輯會:決定第一暫存器位址是否與第二暫存器位址相同;以及,根據第一暫存器位址同於第二暫存器位址之決定,抑制對第二暫存器位址的讀取。
實例2. 實例1的設備,RRS邏輯會根據第一暫存器位址同於第二暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第二源運算元的資料串。
實例3. 實例1的設備,指令會包含第三源運算元的標示,第三源運算元對應於第三暫存器位址,RRS邏輯會:決定第一暫存器位址是否同於第三暫存器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;以及,根據第一暫存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串。
實例4. 實例3的設備,RRS邏輯會:決定第二暫存器位址是否同於第三暫存器位址;以及,根據第二暫存器位址同於第三暫存器位址的決定抑制對第三暫存器位址的讀取。
實例5. 實例4的設備,RRS邏輯會根據第二暫存器位址同於第三暫存器位址的決定而將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串。
實例6. 實例1的設備,指令包含第一指令,電路會執行第二指令,第二指令會包含至少第三源運算元及第四源運算元的標示,第三源運算元對應於第三暫存器位址以及第四源運算元對應於第四暫存器位址,RRS邏輯會:決定第一暫存器位址是否同於第三暫存器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第一暫存器位址是否同於第四暫存器位址;以及,根據第一暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例7. 實例6的設備,RRS邏輯會:根據第一暫存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第一暫存器位址同於第四暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第四源運算元的資料串。
實例8. 實例6的設備,RRS邏輯會:決定第二暫存器位址是否同於第三暫存器位址;根據第二暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第二暫存器位址是否同於第四暫存器位址;以及,根據第二暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例9. 實例8的設備,RRS邏輯會:根據第二暫存器位址同於第三暫存器位址的決定而將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第二暫存器位址同於第四暫存器位址的決定而將讀自第二暫存器位址的資料複製至對應於第四源運算元的資料串。
實例10. 實例6的設備,RRS邏輯會:決定第三暫存器位址是否同於第四暫存器位址;根據第三暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取;以及,根據第三暫存器位址同於第四暫存器位址的決定,而將讀自第三暫存器位址的資料複製至對應於第四源運算元的資料串。
實例11. 實例1至10中任一實例的設備,其中,電路及RSS邏輯包括圖形處理單元。
實例12. 實例1至10中任一實例的設備,又包括顯示器,顯示器操作地耦合至電路以顯示由電路處理的資料。
實例13. 實例1至10中任一實例的設備,又包括無線電,操作地耦合至電路以接收要由電路處理的資料。
實例14. 一種計算實施方法,包括:由圖形處理單元執行指令,所述指令包含至少第一源運算元及第二源運算元的標示,第一源運算元對應於第一暫存器位址,第二源運算元對應於第二暫存器位址;決定第一暫存器位址是否與第二暫存器位址相同;以及,根據第一暫存器位址同 於第二暫存器位址之決定,抑制對第二暫存器位址的讀取。
實例15. 實例14的計算實施方法,包括根據第一暫存器位址同於第二暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第二源運算元的資料串。
實例16. 實例14的計算實施方法,指令會包含第三源運算元的標示,第三源運算元對應於第三暫存器位址,方法包括:決定第一暫存器位址是否同於第三暫存器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;以及,根據第一暫存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串。
實例17. 實例16的計算實施方法,包括:決定第二暫存器位址是否同於第三暫存器位址;以及,根據第二暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取。
實例18. 實例17的計算實施方法,包括根據第二暫存器位址同於第三暫存器位址的決定而將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串。
實例19. 實例14的計算實施方法,指令包含第一指令,方法包括:由圖形處理單元執行第二指令,第二指令會包含至少第三源運算元及第四源運算元的標示,第三源運算元對應於第三暫存器位址以及第四源運算元對應於第四暫存器位址:決定第一暫存器位址是否同於第三暫存 器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第一暫存器位址是否同於第四暫存器位址;以及,根據第一暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例20. 實例19的計算實施方法,包括:根據第一暫存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第一暫存器位址同於第四暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第四源運算元的資料串。
實例21. 實例19的計算實施方法,包括:決定第二暫存器位址是否同於第三暫存器位址;根據第二暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第二暫存器位址是否同於第四暫存器位址;以及,根據第二暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例22. 實例21的計算實施方法,包括:根據第二暫存器位址同於第三暫存器位址的決定,將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第二暫存器位址同於第四暫存器位址的決定,將讀自第二暫存器位址的資料複製至對應於第四源運算元的資料串。
實例23. 實例19的計算實施方法,包括:決定第三 暫存器位址是否同於第四暫存器位址;根據第三暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取;以及,根據第三暫存器位址同於第四暫存器位址的決定,而將讀自第三暫存器位址的資料複製至對應於第四源運算元的資料串。
實例24. 一種設備,包括用於執行實例14至23中任一實例的方法之機構。
實例25. 至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置:執行指令,所述指令包含至少第一源運算元及第二源運算元的標示,第一源運算元對應於第一暫存器位址,第二源運算元對應於第二暫存器位址;決定第一暫存器位址是否與第二暫存器位址相同;以及,根據第一暫存器位址同於第二暫存器位址之決定,抑制對第二暫存器位址的讀取。
實例26. 實例25的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置根據第一暫存器位址同於第二暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第二源運算元的資料串。
實例27. 實例25的至少一機器可讀取的儲存媒體,指令會包含第三源運算元的標示,第三源運算元對應於第三暫存器位址,媒體包括當由計算裝置執行時會促使計算裝置執行下述之指令:決定第一暫存器位址是否同於第三暫存器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;以及,根據第一暫 存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串。
實例28. 實例27的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置執行:決定第二暫存器位址是否同於第三暫存器位址;以及,根據第二暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取。
實例29. 實例28的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置根據第二暫存器位址同於第三暫存器位址的決定而將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串。
實例30. 實例25的至少一機器可讀取的儲存媒體,指令包含第一指令,媒體包括指令,指令當由計算裝置執行時會促使計算裝置執行下述:執行第二指令,第二指令會包含至少第三源運算元及第四源運算元的標示,第三源運算元對應於第三暫存器位址以及第四源運算元對應於第四暫存器位址:決定第一暫存器位址是否同於第三暫存器位址;根據第一暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第一暫存器位址是否同於第四暫存器位址;以及,根據第一暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例31. 實例20的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置執行 下述:根據第一暫存器位址同於第三暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第一暫存器位址同於第四暫存器位址的決定而將讀自第一暫存器位址的資料複製至對應於第四源運算元的資料串。
實例32. 實例30的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置執行下述:決定第二暫存器位址是否同於第三暫存器位址;根據第二暫存器位址同於第三暫存器位址的決定,抑制對第三暫存器位址的讀取;決定第二暫存器位址是否同於第四暫存器位址;以及,根據第二暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取。
實例33. 實例32的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置執行下述:根據第二暫存器位址同於第三暫存器位址的決定,將讀自第二暫存器位址的資料複製至對應於第三源運算元的資料串;以及,根據第二暫存器位址同於第四暫存器位址的決定,將讀自第二暫存器位址的資料複製至對應於第四源運算元的資料串。
實例34. 實例30的至少一機器可讀取的儲存媒體,包括指令,指令當由計算裝置執行時會促使計算裝置執行下述:決定第三暫存器位址是否同於第四暫存器位址;根據第三暫存器位址同於第四暫存器位址的決定,抑制對第四暫存器位址的讀取;以及,根據第三暫存器位址同於第 四暫存器位址的決定,而將讀自第三暫存器位址的資料複製至對應於第四源運算元的資料串。
100:處理系統
102:處理器
104:快取
106:暫存器檔案
107:處理器核心
108:圖形處理器
109:指令集
110:處理器匯流排
112:外部圖形處理器
116:記憶體控制器集線器
120:記憶體裝置
121:指令
122:資料
124:資料儲存裝置
126:無線收發器
128:韌體介面
130:I/O控制器集線器
134:網路控制器
140:舊制I/O控制器
142:USB控制器
144:鍵盤/滑鼠
146:音訊控制器

Claims (23)

  1. 一種用於圖形處理器之來源運算元讀取抑制之設備,包括:電路,用以執行指令,該指令用以包含至少第一源運算元及第二源運算元的標示,該第一源運算元對應於第一暫存器位址,以及,該第二源運算元對應於第二暫存器位址;以及多餘的讀取抑制(RRS)邏輯,該RRS邏輯用以:藉由該第二暫存器位址與該指令中其他源運算元之暫存器位址的比較,決定該第一暫存器位址是否與該第二暫存器位址相同;根據該第一暫存器位址同於該第二暫存器位址之該決定,抑制對該第二暫存器位址的讀取;以及根據抑制對該第二暫存器位址的該讀取而將讀自該第一暫存器位址的資料複製至對應於該第二源運算元的資料串。
  2. 如申請專利範圍第1項的設備,該指令包含第三源運算元的標示,該第三源運算元對應於第三暫存器位址,該RRS邏輯用以:決定該第一暫存器位址是否同於該第三暫存器位址;以及根據該第一暫存器位址同於該第三暫存器位址的決定:抑制對該第三暫存器位址的讀取;以及 將讀自該第一暫存器位址的資料複製至對應於該第三源運算元的資料串。
  3. 如申請專利範圍第2項的設備,該RRS邏輯用以:決定該第二暫存器位址是否同於該第三暫存器位址;以及根據該第二暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取。
  4. 如申請專利範圍第3項的設備,該RRS邏輯用以根據該第二暫存器位址同於該第三暫存器位址的決定而將讀自該第二暫存器位址的資料複製至對應於該第三源運算元的資料串。
  5. 如申請專利範圍第1項的設備,該指令包含第一指令,該電路用以執行第二指令,該第二指令用以包含至少第三源運算元及第四源運算元的標示,該第三源運算元對應於第三暫存器位址以及該第四源運算元對應於第四暫存器位址,該RRS邏輯用以:決定該第一暫存器位址是否同於該第三暫存器位址;根據該第一暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取;決定該第一暫存器位址是否同於該第四暫存器位址;以及根據該第一暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取。
  6. 如申請專利範圍第5項的設備,該RRS邏輯用以:根據該第一暫存器位址同於該第三暫存器位址的決定而將讀自該第一暫存器位址的資料複製至對應於該第三源運算元的資料串;以及根據該第一暫存器位址同於該第四暫存器位址的該決定而將讀自該第一暫存器位址的資料複製至對應於該第四源運算元的資料串。
  7. 如申請專利範圍第5項的設備,該RRS邏輯用以:決定該第二暫存器位址是否同於該第三暫存器位址;根據該第二暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取;決定該第二暫存器位址是否同於該第四暫存器位址;以及根據該第二暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取。
  8. 如申請專利範圍第7項的設備,該RRS邏輯用以:根據該第二暫存器位址同於該第三暫存器位址的決定而將讀自該第二暫存器位址的資料複製至對應於該第三源運算元的資料串;以及根據該第二暫存器位址同於該第四暫存器位址的決定而將讀自該第二暫存器位址的資料複製至對應於該第四源 運算元的資料串。
  9. 如申請專利範圍第5項的設備,該RRS邏輯用以:決定該第三暫存器位址是否同於該第四暫存器位址;根據該第三暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取;以及根據該第三暫存器位址同於該第四暫存器位址的決定,而將讀自該第三暫存器位址的資料複製至對應於該第四源運算元的資料串。
  10. 如申請專利範圍第1項的設備,該電路及該RRS邏輯包括圖形處理單元。
  11. 如申請專利範圍第1項的設備,包括顯示器,該顯示器操作地耦合至該電路以顯示由該電路處理的資料。
  12. 如申請專利範圍第1項的設備,包括無線電,該無線電操作地耦合至該電路以接收要由該電路處理的資料。
  13. 一種用於圖形處理器之來源運算元讀取抑制之計算實施方法,包括:由圖形處理單元執行指令,該指令用以包含至少第一源運算元及第二源運算元的標示,該第一源運算元對應於第一暫存器位址,及該第二源運算元對應於該第二暫存器位址;藉由該第二暫存器位址與該指令中其他源運算元之暫存器位址的比較,決定該第一暫存器位址是否與該第二暫 存器位址相同;根據該第一暫存器位址同於該第二暫存器位址之該決定,抑制對該第二暫存器位址的讀取;以及根據抑制對該第二暫存器位址的該讀取而將讀自該第一暫存器位址的資料複製至對應於該第二源運算元的資料串。
  14. 如申請專利範圍第13項之計算實施方法,該指令用以包含第三源運算元的標示,該第三源運算元對應於第三暫存器位址,該方法包括:決定該第一暫存器位址是否同於該第三暫存器位址;以及根據該第一暫存器位址同於該第三暫存器位址的決定:抑制對該第三暫存器位址的讀取;以及將讀自該第一暫存器位址的資料複製至對應於該第三源運算元的資料串。
  15. 如申請專利範圍第14項之計算實施方法,包括:決定該第二暫存器位址是否同於該第三暫存器位址;以及根據該第二暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取。
  16. 如申請專利範圍第15項之計算實施方法,包括根據該第二暫存器位址同於該第三暫存器位址的決定而將 讀自該第二暫存器位址的資料複製至對應於該第三源運算元的資料串。
  17. 如申請專利範圍第13項之計算實施方法,該指令包含第一指令,該方法包括:由該圖形處理單元執行第二指令,該第二指令用以包含至少第三源運算元及第四源運算元的標示,該第三源運算元對應於第三暫存器位址以及該第四源運算元對應於第四暫存器位址;決定該第一暫存器位址是否同於該第三暫存器位址;根據該第一暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取;決定該第一暫存器位址是否同於該第四暫存器位址;以及根據該第一暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取。
  18. 如申請專利範圍第17項之計算實施方法,包括:決定該第二暫存器位址是否同於該第三暫存器位址;根據該第二暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取;決定該第二暫存器位址是否同於該第四暫存器位址;根據該第二暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取;根據該第二暫存器位址同於該第三暫存器位址的該決 定,將讀自該第二暫存器位址的資料複製至對應於該第三源運算元的資料串;以及根據該第二暫存器位址同於該第四暫存器位址的決定,將讀自該第二暫存器位址的資料複製至對應於該第四源運算元的資料串。
  19. 如申請專利範圍第17項之計算實施方法,包括:決定該第三暫存器位址是否同於該第四暫存器位址;根據該第三暫存器位址同於該第四暫存器位址的決定,抑制對該第四暫存器位址的讀取;以及根據該第三暫存器位址同於該第四暫存器位址的該決定,而將讀自該第三暫存器位址的資料複製至對應於該第四源運算元的資料串。
  20. 一種用於圖形處理器之來源運算元讀取抑制之機器可讀取的儲存媒體,包括複數指令,當該些指令由計算裝置執行時,使該計算裝置:執行指令,該指令包含至少第一源運算元及第二源運算元的標示,該第一源運算元對應於第一暫存器位址,該第二源運算元對應於第二暫存器位址;藉由該第二暫存器位址與該指令中其他源運算元之暫存器位址的比較,決定該第一暫存器位址是否與該第二暫存器位址相同;根據該第一暫存器位址同於該第二暫存器位址之決定,抑制對該第二暫存器位址的讀取;以及 根據抑制對該第二暫存器位址的該讀取而將讀自該第一暫存器位址的資料複製至對應於該第二源運算元的資料串。
  21. 如申請專利範圍第20項之機器可讀取的儲存媒體,該指令用以包含第三源運算元的標示,該第三源運算元對應於第三暫存器位址,該媒體包括複數指令,當該些指令由該計算裝置執行時,使計算裝置:決定該第一暫存器位址是否同於該第三暫存器位址;根據該第一暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取;以及根據該第一暫存器位址同於該第三暫存器位址的決定而將讀自該第一暫存器位址的資料複製至對應於該第三源運算元的資料串。
  22. 如申請專利範圍第21項之機器可讀取的儲存媒體,包括複數指令,當該些指令由計算裝置執行時,使該計算裝置:決定該第二暫存器位址是否同於該第三暫存器位址;以及根據該第二暫存器位址同於該第三暫存器位址的決定,抑制對該第三暫存器位址的讀取。
  23. 如申請專利範圍第22項之機器可讀取的儲存媒體,包括複數指令,當該些指令由該計算裝置執行時,使該計算裝置根據該第二暫存器位址同於該第三暫存器位址的該決定而將讀自該第二暫存器位址的資料複製至對應於 該第三源運算元的資料串。
TW105112621A 2015-05-29 2016-04-22 用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體 TWI725023B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/726,349 US10152452B2 (en) 2015-05-29 2015-05-29 Source operand read suppression for graphics processors
US14/726,349 2015-05-29

Publications (2)

Publication Number Publication Date
TW201710994A TW201710994A (zh) 2017-03-16
TWI725023B true TWI725023B (zh) 2021-04-21

Family

ID=57398475

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105112621A TWI725023B (zh) 2015-05-29 2016-04-22 用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體

Country Status (3)

Country Link
US (1) US10152452B2 (zh)
TW (1) TWI725023B (zh)
WO (1) WO2016200501A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10235811B2 (en) 2016-12-29 2019-03-19 Intel Corporation Replicating primitives across multiple viewports
US10628910B2 (en) 2018-09-24 2020-04-21 Intel Corporation Vertex shader with primitive replication

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297266A (en) * 1989-01-25 1994-03-22 Nec Corporation Apparatus and method for controlling memory requests in an information processor
WO1998011484A1 (fr) * 1996-09-13 1998-03-19 Hitachi, Ltd. Processeur de commande a memoire d'historique
JP2001290644A (ja) * 2000-03-10 2001-10-19 Texas Instr Inc <Ti> マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法
US20080052688A1 (en) * 2006-08-01 2008-02-28 O'brien John Kevin Patrick Compiler Method for Eliminating Redundant Read-Modify-Write Code Sequences in Non-Vectorizable Code
US20130159628A1 (en) * 2011-12-14 2013-06-20 Jack Hilaire Choquette Methods and apparatus for source operand collector caching
TW201443825A (zh) * 2012-12-10 2014-11-16 Nvidia Corp 運用於執行緒單一指令多重資料執行之編譯器控制區域排程
CN104350461A (zh) * 2011-12-23 2015-02-11 英特尔公司 具有不同的读和写掩码的多元素指令
US20150074675A1 (en) * 2013-09-12 2015-03-12 Marvell World Trade Ltd Method and system for instruction scheduling
TW201510861A (zh) * 2013-06-28 2015-03-16 Intel Corp 指令順序執行之指令對、處理器、方法及系統

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7213136B2 (en) 2003-07-30 2007-05-01 Intel Corporation Apparatus and method for redundant zero micro-operation removal

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5297266A (en) * 1989-01-25 1994-03-22 Nec Corporation Apparatus and method for controlling memory requests in an information processor
WO1998011484A1 (fr) * 1996-09-13 1998-03-19 Hitachi, Ltd. Processeur de commande a memoire d'historique
JP2001290644A (ja) * 2000-03-10 2001-10-19 Texas Instr Inc <Ti> マイクロプロセッサを有するディジタル・システム及びそのディジタル・システムを動作させる方法
US20080052688A1 (en) * 2006-08-01 2008-02-28 O'brien John Kevin Patrick Compiler Method for Eliminating Redundant Read-Modify-Write Code Sequences in Non-Vectorizable Code
US20130159628A1 (en) * 2011-12-14 2013-06-20 Jack Hilaire Choquette Methods and apparatus for source operand collector caching
CN104350461A (zh) * 2011-12-23 2015-02-11 英特尔公司 具有不同的读和写掩码的多元素指令
TW201443825A (zh) * 2012-12-10 2014-11-16 Nvidia Corp 運用於執行緒單一指令多重資料執行之編譯器控制區域排程
TW201510861A (zh) * 2013-06-28 2015-03-16 Intel Corp 指令順序執行之指令對、處理器、方法及系統
US20150074675A1 (en) * 2013-09-12 2015-03-12 Marvell World Trade Ltd Method and system for instruction scheduling

Also Published As

Publication number Publication date
US20160350112A1 (en) 2016-12-01
TW201710994A (zh) 2017-03-16
WO2016200501A1 (en) 2016-12-15
US10152452B2 (en) 2018-12-11

Similar Documents

Publication Publication Date Title
US10140678B2 (en) Specialized code paths in GPU processing
US11194722B2 (en) Apparatus and method for improved cache utilization and efficiency on a many core processor
CN107408210B (zh) 基于边缘的覆盖掩码压缩
US10191724B2 (en) Compiler-based instruction scoreboarding
US20200371804A1 (en) Boosting local memory performance in processor graphics
US10026153B2 (en) Varying image quality rendering in a sort middle architecture
US10409571B1 (en) Apparatus and method for efficiently accessing memory when performing a horizontal data reduction
KR20200002608A (ko) 그래픽 엔진 상에서 다수의 컨텍스트를 동시에 실행하는 방법 및 장치
CN113052746A (zh) 用于多适配器编码的装置和方法
WO2018048555A1 (en) Minimum/maximum and bitwise and/or based coarse stencil test
US9601092B2 (en) Dynamically managing memory footprint for tile based rendering
US20170186128A1 (en) Apparatus and method for triangle-pair merging
CN109155077B (zh) 渐进渲染的体积光线追踪
US10127707B2 (en) Discard mechanism for tile-based rendering
US20180203694A1 (en) Execution Unit with Selective Instruction Pipeline Bypass
US10068308B2 (en) Lossy depth compression of multi-sample pixels
US10761819B2 (en) Optimizing structures to fit into a complete cache line
TWI725023B (zh) 用於圖形處理器之來源運算元讀取抑制之設備、計算實施方法及機器可讀取的儲存媒體
CN109643279B (zh) 使用虚拟到虚拟地址表进行存储器压缩的方法和装置
US10332278B2 (en) Multi-format range detect YCoCg compression
CN116069459A (zh) 使用可变命令列表的可编程gpu命令缓冲器