TWI706372B - 資料處理系統 - Google Patents

資料處理系統 Download PDF

Info

Publication number
TWI706372B
TWI706372B TW105120266A TW105120266A TWI706372B TW I706372 B TWI706372 B TW I706372B TW 105120266 A TW105120266 A TW 105120266A TW 105120266 A TW105120266 A TW 105120266A TW I706372 B TWI706372 B TW I706372B
Authority
TW
Taiwan
Prior art keywords
instruction
executed
execution unit
program
unit
Prior art date
Application number
TW105120266A
Other languages
English (en)
Other versions
TW201712631A (zh
Inventor
瓊 尼斯塔
Original Assignee
英商Arm有限公司
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 英商Arm有限公司 filed Critical 英商Arm有限公司
Publication of TW201712631A publication Critical patent/TW201712631A/zh
Application granted granted Critical
Publication of TWI706372B publication Critical patent/TWI706372B/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Programmable Controllers (AREA)

Abstract

一圖形處理單元的一可編程執行單元42包括一功能單元50,其可運作以執行指令51。功能單元50的輸出均可被寫入一暫存器檔及透過一回饋電路52直接回饋為一輸入至功能單元。
相應地,功能單元50所將執行的一指令可將任何先前指令的執行的回饋輸出52及暫存器46的輸入選擇為其輸入。
在一指令群53中的各指令之間的一暫存器存取描述符54指定當執行該指令時,其值將可用於功能單元所將讀取的暫存器埠的暫存器,及指令的執行結果將被寫入的暫存器位址。
可編程執行單元42執行將被原子性地執行的指令群53。

Description

資料處理系統
本發明是關於包括一或以上的可編程執行單元的資料處理系統,例如圖形處理系統。
圖形處理典型地以一管線的方式運行,而對資料操作一或以上的管線階段操作以產生最終渲染(render)輸出,例如顯示訊框。許多圖形處理管線如今包括一或以上的所謂「著色」階段,一般稱為「著色器」(shader)。例如一圖形處理管線可包括一幾何著色器、一頂點著色器及一片段(畫素)著色器的一或以上者,而典型地包括全部。此等著色器對輸入資料值執行著色器程式以產生期望的一組輸出資料(對一片段著色器而言,例如已經適當地著色及渲染的片段資料)以供剩餘圖形處理管線處理及/或以供輸出的處理階段。
一圖形「著色器」即透過對在將被產生的一輸出中的各工作項運行小程式而進行圖形處理,例如一渲染目標,例如訊框(在此一「工作項」通常為一頂點或一取樣位置(例如對一片段著色器而言),但其亦可為一計算著色器工作項,其中圖形處理管線將被用於進行計算著色操作(例如根據OpenCL或DirectCompute))。
在圖形著色器的運作中,各工作項將透過將對所探討的工作項執行所探討的著色器程式的一執行緒而被處理。據此,如今圖形處理單元(圖形處理器)典型地包括一或以上的可編程執行單元,其可執行著色器程式以進行圖形處理操作。可編程執行單元所將執行的一給定的著色器程式將包括一序列指令,且可編程執行單元適當地將以序列的方式執行指令以供著色器程式所將為其執行的各執行緒(及工作項)。
申請人相信,在資料處理系統的可編程執行單元中,例如在一圖形處理系統的一圖形處理單元的一可編程執行單元中的程式,例如著色器程式的執行尚有改進配置的餘地。
根據本發明的一第一觀點,係提供用於一資料處理單元的一可編程執行單元,可編程執行單元包括:處理電路可運作以當可編程執行單元正在執行包括可編程執行單元所將執行的一序列指令的一程式時:原子性地執行程式的序列指令的一指令群的指令;及更包括:電路,其經組態以當執行正在被原子性地執行的指令群中的另一指令時,將透過執行正在被原子性地執行的一指令群中的一指令而產生的一結果傳遞以直接供使用。
根據本發明的一第二觀點,係提供一種操作一資料處理單元的一可編程執行單元以執行程式指令以進行資料處理操作的方法,方法包括: 當執行一程式以供一執行緒時,在執行程式時,程式包括可編程執行單元所將執行的一序列指令,可編程執行單元:原子性地執行程式的序列指令的至少一指令群;及透過正在被原子性地執行的指令群中的另一指令,將透過執行正在被原子性地執行的指令群的一指令而產生的一結果傳遞以直接供使用。
本發明是關於在資料處理單元,例如一圖形處理單元(圖形處理器,GPU)的可編程執行單元中的程式的執行。
在本發明中,將被執行的一程式的一指令群可(及確實)被可編程執行單元原子性地執行(亦即使得一旦指令群的執行已開始,執行以硬性時序運行至完成,而不會且不可在中途被中斷)。(若一序列操作被原子性地實行,序列操作被執行使得對各觀察者而言,看起來序列已完全不被執行或整個被執行,亦即其被執行成一不可分的單元,故稱為「原子性的」(atomic)。)
原子性地執行一指令群具有在指令群的執行期間不必取得指令排程決定的效果。此有助於減少可能耗費在指令排程上的電力及資源。因此,基於指令排程目的,在將被執行的一程式中的各指令群可以且較佳地確實被視為一單元,因而減少指令排程負擔。
此外,在本發明中,正在被原子性地執行的一指令群中的一指令所產生的結果可透過正在被原子性地執行的指令群中的另一指令而被傳遞以直接供使用。此是可能的,因為指令群正在被原子性地執行,其可有效地確保,將使用此方式所提供的結果的指令將準備好當結果被提供時,執行及使用結果(使得不必以其等將供未來不可決定的一時間,或那時是可用的方式儲存結果)。此則避免必須例如將該等結果寫入資料處理單元的(主)暫存器檔,因而當執行程式時,更減少資源的使用及節省電力。
本發明可實現在任何適合及期望的具有一或以上的可編程執行單元的資料處理系統及單元。因此,需要的話,其可例如用於一CPU(中央處理單元)的一執行單元。
如上所述,相信本發明在圖形處理系統中將具有特別應用。因此,資料處理系統較佳地包括一圖形處理系統,而資料處理單元較佳地包括一圖形處理單元(GPU)。相應地,可編程執行單元較佳地運作為一可編程圖形著色階段(著色器),其執行圖形著色器程式以進行圖形處理操作。
在資料處理單元中可具有一或多個可編程執行單元。若具有多個可編程執行單元,則各可編程執行單元較佳地可以本發明的方式運行,並經組態以本發明的方式操作。
該(及各)可編程執行單元可包括任何適合及期望的可編程硬體元件,例如可編程處理電路。若具有多個可編程執行單元,各可編程執行單元可被提供為資料處理單元的其他可編程執行單元的一獨立(separate)電路元件,或可編程執行單元可分享某些或全部其等可編程處理電路。
在一較佳實施例中,該(及各)可編程執行單元包括一或以上執行程式指令的功能單元。在一較佳實施例中,該(及較佳地各)執行單元具有一單獨功能單元(並即將在任何給定的時脈循環中執行一指令)。在其他實施例中,可編程執行單元包括多個功能單元,例如及較佳地,二功能單元。在本例中,執行單元可在一給定的時脈循環中執行多個指令(以一指令是被執行單元的各功能單元執行的方式為之)。
執行單元可執行資料處理單元所將執行的任何期望及適合的程式。因此,對一圖形處理單元而言,執行單元可(例如根據OpenCL)執行任何適合及期望的著色器程式,例如一頂點著色器、一片段著色器或一計算著色器。相應地,可編程執行單元較佳地可運作為一圖形處理管線的任何期望的著色器 階段,而一圖形處理管線可(透過其被適當地編程式以作為期望的可編程執行階段)運作為例如一頂點著色器、一片段著色器或一計算著色器。
可編程執行單元將接收將被執行的執行緒,並執行適當的程式以供該等緒以產生期望的輸出。
本發明可用於可編程執行單元所將執行的任何程式。對一圖形處理系統及單元而言,將被執行的程式較佳地為一適當的著色器程式,例如一頂點著色器、片段著色器或計算著色器。
將被執行的程式將會且較佳地確實包括可編程執行單元所將執行的一序列指令。
可編程執行單元所將執行的程式的序列指令可以任何適合及期望的方式被區分成將被原子性地執行的各指令群。程式可視需要被區分成一或多指令群。例如一程式可被執行成包括被原子性地的程式的全部指令的一單獨指令群。若其將可能原子性地執行整個程式,此即可是適當的。
然而,在一特別地較佳實施例中,基於執行目的,程式(程式的序列指令)被分成多個(較小的)指令群(亦即程式將被執行成多(不同)指令群)。
基於本發明目的,一程式所分成的各指令群應該且較佳地確實包括程式的將被執行的指令的一連續序列。
各指令群可包含任何適合及期望的數目(較佳地例如為可原子性地被執行)的指令。在一較佳實施例中,各指令群包括2至8指令。
然而,可能的是僅將執行一程式所已以本發明的方式原子性地區分成的某些但非全部指令群,在一特別地較佳實施例中,若基於執行目的,將被執行的一程式被分成多指令群,則較佳地多個,且較佳地全部(各)指令群分別被原子性地執行。
若在一給定的執行循環中,執行單元可執行多於一指令(例如因為它包含多個功能單元,而各可運作以在一給定的執行循環中執行各指令),則將被執行的各指令群可包含且較佳地確實包含將依序執行的各指令組,而各組指令是可以且確實將一起在相同執行循環中運行,且(恰)需要一執行循環以執行的一組指令。因此,例如若可編程執行單元包括二功能單元,而各可運作以執行各指令,則較佳地,各指令群包括多個指令元組(tuple),而各指令元組包括一對指令,各供各功能單元,並將一起在相同執行循環中(各透過各功能單元)被執行,且恰將需要一執行循環以執行。
因此,在一較佳實施例中,將被原子性地執行的各指令群包括一或以上的指令組,而各組指令是可編程執行單元所將一起在相同執行循環執行的(且將需要一執行循環以執行的)一組多個指令。
若將被執行的一程式包括具有不確定潛時(non-deterministic latencies)(亦即該等指令的完成時序不可被預先確定或確保)的指令,例如記憶體載入,則在一特別地較佳實施例中,至多僅該一指令被包括在將被原子性地執行的一給定的指令群中。最佳地,指令群經配置使得若一指令群包括該一指令,在所探討的群中沒有其他指令相依於「不確定」指令所將產生的結果。
相應地,在一較佳實施例中,關於「不確定」指令的任何相依性僅在將被原子性地執行的指令群(的執行)之間,而不在一指令群的(原子性的)執行期間被確認。
一指令群的原子性的執行可以任何適合及期望的方式達成之。例如,且在一較佳實施例中,一子系統被提供以提取並發送各指令群的指令。此外,較佳整個指令群可用自例如可在指令群的執行中始終以固定時序傳遞指令的一儲存。此可例如透過各指令群完全被包含在一快取線中的一指令快取而達成之。在指令群的執行期間,快取線則可被鎖定。
在一特別地較佳實施例中,當一執行緒到達將被原子性地執行的一指令群的起點時,緒的執行被停止(stalled)直到指令群的任何相依性(當執行指令群時可能需要的來自其他指令的資料值)已被滿足。相應地,緒的執行較佳地被停止(stalled)直到執行指令群所將需要的全部資料值是可用的。接著,一旦指令群的任何相依性已被滿足及/或任何相關資料值是可用的,緒被釋出至執行指令群,而執行是被以一原子性方式進行(亦即緒依序執行在指令群中的全部指令,而不中斷(不停止或暫停),並以硬性(固定)執行時序為之)。
較佳地,將被原子性地執行的一指令群的任何相依性等被指示以供指令群,較佳地例如在指令群(所關聯)一標頭(header)中為之。
如上所述,正在被原子性地執行的一指令群中的一指令的執行的(多個)結果可被直接提供至正在被原子性地執行的指令群的另一指令。此配置應該且較佳地使得(多個)結果可在正在被原子性地執行的一指令群中自一指令被提供至另一指令,而第一指令的結果不必(正在)被寫入可編程暫存器檔的任何暫存器以供執行單元。
申請人在此已意識到,在許多程式中,在程式中的指令所將執行的操作傾向於是序列的,使得在許多例子中,需要一給定的指令的結果的指令是下一將被執行的指令。此表示,在將被執行的程式中,將結果自一指令直接傳遞至另一個(例如下一指令)的機會將傾向於相對頻繁地發生。
此外,因為指令正在被原子性地執行,其可確保後續指令將準備好當先前指令的結果被提供時,使用之。
若一指令的(多個)結果被直接傳遞至在正在被原子性地執行的一指令群中的另一指令,則(多個)結果可被直接傳遞至在指令群中的任何其他(後續)指令,但較佳地被傳遞至在指令群中的下一指令(以供使用)。最佳地,各指令的結果被直接傳遞,俾可用於在該群中的下一指令。
一指令的(多個)結果可被直接傳遞至另一指令以供以任何適合及期望的方式使用。在一特別地較佳實施例中,可編程執行單元包括一「旁路」(bypass)網路(旁路電路),其可運作以自一指令的執行提供結果(輸出)以供當另一指令正在被執行單元執行時,使用為一輸入(而不必將指令的(多個)結果增加至暫存器檔以供執行單元)。
在一特別地較佳實施例中,可編程執行單元包括一回饋電路,其可運作以當另一指令(較佳地例如下一指令)正在被執行時,將一指令的執行的結果(輸出)回饋以供執行單元使用為一輸入。
較佳地,回饋電路可運作以將執行單元的一功能單元的輸出回饋為功能單元的輸入,故當功能單元執行一指令時,輸出則被提供至功能單元,當它正在執行一後續(較佳地下一)指令時,作為一可用的輸入。
因此,可編程執行單元較佳地包括一回饋電路,其可運作以(經組態以)將一指令的執行的輸出回饋,俾當執行另一指令時(較佳地例如下一指令)可被選擇為一輸入。
最佳地,可編程執行單元經組態使得執行一指令的結果總是被直接傳遞(回饋)至(例如一功能單元的)執行單元的輸入,俾當執行(在指令群中的)另一指令時是可用的以供使用,而將被執行的指令則可將執行前一指令的回饋輸出選擇為一輸入(一運算元)以供其等執行。相應地,可編程執行單元較佳地包括電路,其可運作以當執行指令時,使一指令將已被回饋自執行(例如功能)單元的輸出的前一指令的輸出選擇為一輸入(一運算元)。
此則使當執行在序列指令的另一指令時,執行一指令的結果可被傳遞以直接供使用(不必例如將指令的輸出(結果)增加至暫存器檔以供執行單元)。
若可編程執行單元包括多個功能單元,則一(且較佳地多個,且較佳地各)功能單元的輸出較佳地被回饋至多個且較佳地各多個功能單元的輸入,使得當其等執行一後續(較佳地其等之下一)指令時,輸出可用為多個且較佳地各功能單元的一輸入。
在一較佳實施例中,如同在正在被原子性地執行的一指令群中,可將執行一指令的結果自一指令直接傳遞至另一個,其對將被寫入各暫存器的指令的結果亦是可能的,例如對若其等必須被儲存於較長的時間週期者而言(例如必須供不是在程式序列中的下一指令及/或是在程式序列中的一不同指令群中的另一或多個指令使用)。
此比起簡單地被直接傳遞至另一指令以供使用,則將使該等指令結果被保留於一較長的時間週期。
的確,可能不如被原子性地執行的各指令群,當執行另一指令時,一指令的結果被直接使用,是取決於正在被執行的指令的本質。因此,可能的情況是,對正在被原子性地執行的一給定的指令群,在實務上,當執行指令群的另一指令時,該等指令的處理結果均未被直接使用,但反而全部結果儲存在暫存器中。
因此,較佳地,可編程執行單元經組態使得執行一指令的結果可較佳地選擇性地寫入一或多個暫存器以供儲存。
最佳地,可編程執行單元可運作以當執行指令群的另一指令時,均可提供執行一指令的結果直接供使用為一輸入,並可將一指令的結果寫入一暫存器,例如供後續指令使用。
較佳地,可編程執行單元經組態使得執行一指令的結果總是被直接傳遞(回饋)至執行單元的輸入,俾當執行指令群的另一指令時,是可用的 以供使用為一輸入,而指令的結果亦可選擇性地被寫入一或多個暫存器以供儲存。
在一特別地較佳實施例中,如同正在被執行的指令可將已被回饋(透過指令傳遞以直接供使用)的一先前執行的指令的結果使用(選擇)為一輸入,將被執行的一指令亦可將儲存在可編程執行單元的或其所可存取的暫存器檔(暫存器)中的至少一個且較佳地多個值使用(而較佳地選擇)為一輸入。
此等暫存器可以且較佳地用於儲存正在被執行的指令或指令群所可能需要的資料,例如常數、均勻度及先前執行循環或指令群的結果。
因此,在一特別地較佳實施例中,可編程執行單元包括電路,其可運作以當執行指令時,使被執行的一指令將儲存在可編程執行單元所可存取的暫存器檔中的一暫存器中的資料選擇為一輸入(一運算元)。最佳地,可編程執行單元包括電路,其可運作以當執行指令時,使一指令將已被回饋自執行(例如功能)單元的輸出的前一指令的輸出及儲存在暫存器檔的一暫存器中的至少一資料值選擇為一輸入(一運算元)。
相應地,較佳地具有可編程執行單元所關聯的一暫存器檔,而可編程執行單元可存取之。較佳地,暫存器檔包括一或以上的暫存器埠,而當執行指令時,可編程執行單元(例如一功能單元)可將暫存器埠所提供的值使用為輸入。
因此,在一特別地較佳實施例中,可編程執行單元(且較佳地將執行指令的執行單元的相關功能單元)連接至一適當的暫存器埠或暫存器檔的埠以使其將儲存在暫存器中的資料接收為輸入。較佳地則具有適當的選擇電路,例如一多工器,其可運作以當執行一指令時,選擇例如將哪個暫存器埠讀取為一輸入(及/或當執行一指令時,是否將直接回饋為可用的前一指令的輸出結果讀取為一輸入)。
較佳地,當一指令正在被執行時,多個暫存器的資料值可被提供並選擇為輸入。
然而,申請人理解到,透過使執行一指令的結果被直接傳遞(回饋)為一輸入以供另一指令,可減少使指令可讀取自暫存器所可能必要的輸入資料值數目,因而減少指令在執行期間所需存取的暫存器數目。
因此,在一特別地較佳實施例中,指令僅可存取(取得輸入自)一更有限數目的暫存器,亦即其等可較佳地僅在一更有限數目的暫存器埠之間選擇。因此,在一較佳實施例中,指令可存取(且執行單元僅連接至)一或至多二暫存器埠(亦即僅可選擇自至多二暫存器值以供其等輸入)。
因此,本發明更優勢的是,可減少暫存器檔所需提供給可編程執行單元使用的暫存器埠數目。
此外,透過當執行時僅存取一更有限組暫存器的指令,使當執行指令時,暫存器存取系統被簡化。例如指令所可能需要的定址編碼可被減少。
因此,在一特別地較佳實施例中,正在執行的指令可(且僅可)存取(及定址為)一較小組暫存器(以取代直接存取整個主暫存器檔)。
換句話說,比起正在被執行的指令可存取整個暫存器檔位址空間,其等較佳地存取一較小的本地位址空間。
因此,在一特別地較佳實施例中,將被執行的指令使用僅可指示更有限的一組輸入源(更有限的一位址空間),例如2位元定址編碼(並接著將使四不同輸入源例如被指示)的一定址編碼以指示其等輸入(運算元)。
在一特別地較佳實施例中,用於指令的定址編碼可指示指令是否將一暫存器值或直接回饋自另一指令的結果使用為其輸入(運算元)。例如若指令使用一2位元定址編碼,2位元定址編碼所可指示的四值之二可指示各暫存 器值(例如而較佳地讀取二暫存器埠的何者),而另二值可指示直接回饋自先前(多個)指令的執行的各結果。
最佳地,具有指令可存取(可使用)的儲存的一本地「集區」(pool),以指示其等輸入(運算元)應該被載入自哪裡。此可定址本地儲存集區較佳地包括有限的一組暫存器讀取及任何直接回饋自先前執行的指令的任何結果。
若將被執行的指令簡單地實際上定址暫存器檔的一暫存器埠,則當指令無法被執行時,相關的資料值將必須被提供至所探討的埠。此可以任何適合及期望的方式達成之,但在一特別地較佳實施例中,當執行一指令時,暫存器存取描述符被包含於將被執行的程式,其指示應該被提供至暫存器埠而可被存取為輸入的相關的暫存器值。最佳地,此等暫存器存取描述符指示哪個暫存器其值將被提供至所探討的埠。較佳地暫存器存取描述符指示哪個暫存器位址其值將被提供。(因此,若具有二暫存器埠,較佳地,暫存器存取描述符指示二暫存器位址,並指示哪個暫存器應該提供各暫存器埠的各值。)
在一特別地較佳實施例中,暫存器存取描述符可以且較佳地確實亦指示執行一指令的輸出值應該被寫入哪個暫存器。再者,此較佳地給定為指示所探討的暫存器位址的一寫入位址。此則將使(例如各功能單元的)可編程執行單元的輸出被簡單地直接提供至暫存器檔的一或該寫入埠,而在暫存器存取描述符中的位址則被用於將提供至寫入埠的值映射至適當的暫存器以供儲存。
因此,在一特別地較佳實施例中,一指令的執行所需的主暫存器檔存取並不被編碼在指令本身中,但反而有別於指令地被指出(並編碼),較佳地是在指令所包括的暫存器存取描述符中為之。
暫存器存取及暫存器存取描述符可被以任何適當且期望的方式排程以相關於指令的執行。例如暫存器存取可被進行在將被原子性地執行的各指令群之間,或一暫存器存取可被進行在將執行的序列指令的各指令之間。此可取決於例如各將被執行的指令是否需要一不同組輸入值及/或將其輸出值寫入寫入一不同暫存器,及/或執行單元所存取的不同暫存器埠數目。
最佳地,將資料提供為輸入的暫存器檔存取被排程及進行在其等相關的指令的執行前(較佳地恰在之前),而相應地,將一指令的執行的一結果寫入至暫存器檔的任何暫存器檔存取被排程在相關的指令的執行已被完成後(而較佳地恰在之後)進行。
在一特別地較佳實施例中,一給定的暫存器存取描述符可運作以設定暫存器讀取使得適當的暫存器值將被提供至暫存器埠以供暫存器存取的下一指令或將被執行的指令,並相應地,設定一或多個指令將的輸出(結果)所將被寫入的暫存器。因此,供在一指令群中的一指令的暫存器寫入可典型地與供在該群中的下一指令的暫存器寫入同時發生。就此而言,其等可一起被編碼。或者,對一指令的暫存器讀取及暫存器寫入可一起被編碼。因此,在任何例中,而最佳地,適當的暫存器存取描述符被插入在程式的序列指令中於序列指令的適當的點,俾設定暫存器適當地存取以供指令。
因此,例如若必須將暫存器存取排程設定在將被原子性地執行的各指令群之間,則將暫存器設定為將被讀取及寫入以供下一將被執行的指令群的一適當的暫存器存取描述符可被包括在指令群前。
在一較佳實施例中,一暫存器存取描述符被包括在各指令前(亦即在各後續指令對之間),俾設定暫存器讀取及任何必要的暫存器寫入以供下一指令。
因此,在一較佳實施例中,暫存器檔存取被排程及進行各指令的執行之間。相應地,一暫存器存取描述符較佳地被包括在各將被執行的指令前。
將暫存器存取如此組態:避免任何必須例如對硬體檢查指令本身,俾判斷其等所需多少暫存器,及其等暫存器讀取應該如何映射至底層檔結構及必須關於暫存器檔存取的任何排程決定以供指令的執行。
在本發明中,整體資料處理系統的任何適合及期望的元素或元件可進行將被執行的一給定的程式組織為將被原子性地執行的指令群。例如執行硬體本身可運作以取得被提供給並原子性地執行適當的該等指令群的程式指令。
在一較佳實施例中,程式(可編程執行單元)的編譯器可運作以將將被執行的一程式配置為將被原子性地執行的各指令群(並適當地將該等指令群指示至執行單元)。因此,對一圖形處理系統而言,圖形處理單元的著色器編譯器較佳地進行此操作。
因此,在一較佳實施例中,可編程執行單元的編譯器較佳地分析其所接收的一程式以供編譯,並將指令群組織成可原子性地被執行的各群,包括較佳地例如識別具有不確定潛時任何指令(並接著確保在將被原子性地執行的任何給定的指令群中僅包括該一指令)以供程式。
編譯器較佳地亦將提供任何適當的描述符(標頭)以指示在給定的將被原子性地執行的一指令群可被執行前必須被滿足的任何相依性。
在一較佳實施例中,編譯器在經編譯的序列指令中,例如在將被原子性地執行的各指令群之間或之前及/或在經編譯的程式中的各指令之間或之前,亦包括適當的暫存器存取描述符。
經編譯的程式(程式二元碼)(及任何描述符、標頭等)接著將被適當地提供至可編程執行單元以供執行。
編譯器可例如透過將指令群封裝成一資料結構而指示之,其除了實際的指令本身之外尚包含一標頭。標頭則可包含關於例如指令群多長及具有哪些資料相依性的資訊。
標頭可額外地包含額外資訊,例如任何或全部:關於在指令群中是否具有不確定潛時指令的指示,及有的話,控制其執行的參數;對許多連續指令,例如捨入(rounding)模式、異常(exception)模式、清洗為零(flush-to-zero)模式等可能相同的浮點操作旗幟;指令流程控制指示器(例如分支分歧(branch divergence)/重新收斂(reconvergence),程式結束,一個接著一個(back-to-back)的執行啟用等);指令型態指示器(例如辨別32位元及64位元操作的一指示器,而各指令群被限於二選一地進行);額外資訊的特定性可為實現特定性,並可依不同實施例而不同。
在一較佳實施例中,對固定潛時指令而言,暫存器存取排程被編譯器進行。若暫存器檔存取排程比起指令排程可產生一較大的負擔,此有助於啟用硬性時序流程。
對不確定潛時指令(例如記憶體載入)而言,較佳採用某些排程硬體。然而,此僅可彌補整體暫存器檔作用的一小部分,就此而言,排程硬體可被簡化而無不理想的效能損失。
編譯器可例如且在一較佳實施例中確實在包括可編程執行階段的包括資料處理單元的資料處理系統的一主機處理器上運行(連同可編程執行單元是在主機處理器所關聯的另一處理器,例如一圖形處理器上(使得編譯器及編譯碼均在整體資料處理系統,例如圖形處理系統中的獨立處理器上運行))。然而,其他配置將是可能的,例如若編譯碼或一獨立處理器所正在運行的編譯 器,例如被預先編譯在一獨立系統上及以一編譯形式被散布的程式,在相同處理器上運行的一編譯器。
據此,本發明涉及資料處理系統及資料處理單元的整體操作,包括提供以本發明的方式的執行單元的將被執行的程式及接著程式的執行。
因此,根據本發明的另一觀點,係提供一種操作一資料處理系統的一執行管線的方法,執行管線包括執行程式指令以進行資料處理操作的一可編程執行單元,方法包括:將可編程執行單元所將執行的一程式發送至可編程執行單元,當執行程式時,程式包括可編程執行單元所將執行的一序列指令;將程式將為其而被執行的一或以上的執行緒發送至可編程執行單元以供執行;且執行程式以供該或該等執行緒;其中:執行程式以供該或該等執行緒包括:原子性地執行程式的序列指令的至少一指令群;及透過正在被原子性地執行的指令群中的另一指令,將透過執行正在被原子性地執行的指令群中的一指令而產生的一結果傳遞以直接供使用。
根據本發明的另一觀點,係提供一種資料處理系統,包括:一執行管線,執行管線包括一可編程執行單元,其執行程式指令以進行資料處理操作;其中:資料處理系統經組態以:當執行程式時,將包括可編程執行單元所將執行的一序列指令的可編程執行單元所將執行的一程式發送至執行管線的可編程執行單元;且 執行管線經組態以:將一或以上的執行緒發送至可編程執行單元,程式將為其而被執行以供執行;且執行管線的可編程執行單元包括:處理電路可運作以當可編程執行單元正在執行包括可編程執行單元所將執行的一序列指令的一程式時:原子性地執行程式的序列指令的一指令群的指令;及電路,其經組態以當執行正在被原子性地執行的指令群中的另一指令時,將透過執行正在被原子性地執行的一指令群中的一指令而產生的一結果傳遞以直接供使用。
本技術領域中具有通常知識者將理解,適當的話,本發明的此等觀點及實施例可以且較佳地確實包括,一或以上任何或全部本文所述較佳及選擇性的特徵。
在本發明的方式中的操作可於某些而非全部,例如選擇性地,可編程執行單元所將執行的程式為之,但較佳地於可編程執行單元所將執行的各程式均為之。
本技術領域中具有通常知識者將理解,本發明的資料處理,例如圖形處理單元可為一整體資料處理系統的一部分,其將包括較佳地例如一主機處理器,其例如執行需要被資料處理單元處理的應用程式。主機處理器將傳送適當的命令及資料至資料處理單元,以控制其進行資料處理操作,並產生在主機處理器上執行的應用程式所需的資料處理結果。為有助於此,主機處理器應該且較佳地確實亦執行一驅動器以供資料,例如圖形處理單元及一或多個編譯器以供編譯資料處理單元的可編程執行單元所將執行的程式。
資料,例如圖形處理單元亦可包括及/或通訊於一或以上的記憶體及/或記憶體裝置,其儲存本文所述資料,及/或資料處理單元所產生的輸出資料,及/或儲存軟體以供進行本文所述的程序。資料處理單元亦可通訊於一主機微處理器及/或基於資料處理單元所產生的資料而顯示影像的一顯示器。
若資料處理單元是一圖形處理單元,則如同任何可編程處理(著色器)階段,例如一頂點著色器及片段著色器,圖形處理單元及管線亦可包含任何其他適合及期望的一圖形處理管線所可包含的處理階段,例如一光柵化器(rasteriser)、一早期深度(或一早期深度及模板(stencil))測試器、一晚期深度(或深度及模板)測試器、一混合器、一區塊(tile)緩衝器、一寫出(write)單元等。
本發明可用於一資料處理單元所可輸出的全部輸出形式。因此,對一圖形處理管線而言,其可用於當產生顯示畫框、渲染至紋理輸出等時。資料處理的輸出資料值較佳地被匯出至外部,主要地例如記憶體以供儲存及使用。
若資料處理單元是一圖形處理單元,本發明可應用於任何適合的圖形處理單元形式或組態。其特別可應用於區塊式圖形處理器及圖形處理系統。因此,在一較佳實施例中,圖形處理系統及圖形處理單元分別為一區塊式系統及管線。
在一特別地較佳實施例中,本發明的各種功能被實行於一單獨圖形處理平台,其產生並輸出例如寫入顯示裝置的訊框緩衝器的經渲染的片段資料。
本發明可被實現在任何適合的系統,例如一經適合地組態的基於微處理器的系統中。在一較佳實施例中,本發明被實現在一電腦及/或基於微處理器的系統中。
本發明的各種功能可被實行於任何期望及適合的方式。例如本發明的功能可視需求被實現在硬體或軟體中。因此,例如除另有所指外,多功能元件、階段及本發明的「手段」可包括一適合的一或多個處理器處理器、一或多個控制器、功能單元、電路、處理邏輯、微處理器配置等,其可運作以進行各種功能等,例如可被編程式以期望的方式操作而適當地專用硬體元件及/或可編程硬體元件。
在此亦應該注意,本技術領域中具有通常知識者將可理解,本發明的多功能等可被重複及/或平行地實行於一給定的處理器。同樣地,需要的話,多處理階段可分享處理電路等。
依必要於實行上述特定功能的任何硬體,資料處理系統及管線可改以包括資料處理管線所包括的任何一或以上的或全部通常的功能單元等。
本技術領域中具有通常知識者亦將理解,適當的話,本發明的全部已描述的觀點及實施例可以且較佳地確實包括一或以上的任何或全部本文所述較佳及選擇性的特徵。
根據本發明的方法可至少部分地使用軟體,例如電腦程式而被實現。由進一步觀點觀察即將可知,本發明提供電腦軟體,其當被安裝在資料處理手段上時,特定地適於實行本文所述方法;一電腦程式元件,其當程式元件在資料處理手段上運行時,包括電腦軟體碼部分以供進行本文所述方法;及一電腦程式,其當程式在一資料處理系統上運行時,包括編碼手段適於進行本文所述一或多個方法的全部步驟。資料處理器可為一微處理器系統、一可編程FPGA(場可編程閘陣列)等。
本發明亦涉及一電腦軟體載體,其包括當用於操作一圖形處理器、渲染器或微處理器系統時,包括資料處理手段關聯至資料處理手段、處理器、渲染器或系統以實行本發明的方法步驟的軟體。該一電腦軟體載體可為一 實體儲存媒體,例如一ROM晶片、CD ROM、RAM、快閃記憶體或碟片,或可為一訊號,例如在線路上的一電子訊號,或朝向例如一衛星或其類似物的一光學訊號或一無線訊號。
更將理解的是,並非全部本發明的方法步驟必須被電腦軟體實行,而因此自一更廣泛的觀點,本發明提供電腦軟體,而軟體被安裝在一電腦軟體載體上以供實行至少一本文所述的方法步驟。
本發明可據此合適地實施為一電腦程式產品以供連同一電腦系統使用。該一實現可包括固定在任一有形、非暫態媒體上的一系列電腦可讀指令,例如一電腦可讀媒體,例如磁碟、CD ROM、ROM、RAM、快閃記憶體或硬碟。其亦可包括藉由一數據機或其他介面裝置,透過一有形媒體,包括但不限於光學或類比通訊線,或無線地使用無線技術,包括但不限於微波、紅外線或其他傳輸技術而可傳輸於一電腦系統的一系列電腦可讀指令。該系列電腦可讀指令實施全部或部分本文上述的功能。
本技術領域中具有通常知識者將理解,電腦可讀指令可被以多個程式語言撰寫以供連同許多電腦結構或操作系統使用。進一步,指令可被儲存,使用任何記憶體技術,現在或未來,包括但不限於半導體、磁性或光學,或使用任何通訊技而被傳輸,現在或未來,包括但不限於光學、紅外線或微波。該一電腦程式產品可考慮被散布為連同附隨的書面或電子文件組的一可卸除式媒體,例如拆封授權軟體、連同一電腦系統的預先載入,例如在一系統ROM或固定碟片上,或自一網路的一伺服器或電子佈告欄,透過例如網際網路或全球資訊網被散布。
以下將描述本發明的多個較佳實施例,僅作為範例,並參考附圖,其中:
1:主機處理器
2:應用程式
3:圖形處理單元
4:驅動器
20:頂點著色器
21:輪廓著色器
22:鑲嵌器
23:網域著色器
24:幾何著色器
25:光柵化器
26:早期深度及模板測試
27:片段著色器
28:晚期深度及模板測試
29:混合器
30:區塊緩衝器
31:區塊寫出
40:光柵化器
41:緒生產器
42:可編程執行單元
43:變化內插器
44:紋理映射器
45:混合器
46:暫存器
50:功能單元
51:指令
52:回饋電路
53:指令群
54:暫存器存取描述符
60、61:功能單元
62:序列指令元組
63、64:回饋電路
71、72、73、74、75:子句
76、77、78:記憶體載入
79:算數邏輯單元
80、81、82:相依性
圖1顯示示範的一電腦圖形處理系統;圖2示意地顯示可被以本發明的方式操作的一圖形處理管線;圖3示意地顯示一圖形處理單元;圖4示意地顯示圖3的圖形處理單元的可編程執行單元的一第一實施例;圖5示意地顯示圖3的圖形處理單元的可編程執行單元的一第二實施例;及圖6示意地顯示一著色器程式的一時序圖。
在圖式中,適當的話,相似的標號用於相似的元件。
本發明的多個較佳實施例將在供顯示的電腦圖形處理的脈絡下描述之。
圖1顯示一典型的電腦圖形處理系統。
在一主機處理器1上執行的一應用程式2,例如一遊戲將需要關聯的一圖形處理單元(圖形處理管線)3所將進行的圖形處理操作。為此,應用程式將產生一驅動器4所直譯的API(應用程式介面)呼叫以供在主機處理器1上運行的圖形處理管線3產生適當的命令至圖形處理器3以產生應用程式2所需的圖形輸出。為有助於此,一組「命令」將被提供至圖形處理器3以回應於來自在主機系統1上運行的應用程式2而供圖形輸出(例如產生將被顯示的一訊框)的命令。
圖2更詳細地顯示本實施例的圖形處理管線3。
圖2所示的圖形處理管線3是一區塊式渲染器,且即將產生一渲染輸出資料陣列的區塊,例如將被產生的一輸出訊框。
(在區塊式渲染中,比起整個渲染輸出,例如訊框,是被有效地處理為如同在直接模式渲染中的渲染輸出,例如將被顯示的訊框被分成多個較小的子區域,通常稱為「區塊」。各區塊(子區域)被分別渲染(典型地一個接著一個),而經渲染的區塊(子區域)則被重新結合以提供完整的渲染輸出,例如顯示訊框。在該配置中,渲染輸出被典型地區分成標準尺寸及形狀的子區域(區塊)(其等通常例如是正方形或長方形,但不必要如此。)
如同在本技術領域中已知的,渲染輸出資料陣列可典型地為一輸出訊框以供在一顯示裝置,例如一螢幕或印表機上顯示,但亦可例如包括中間資料以供在後續渲染通道(亦稱為一「渲染至紋理」輸出)中使用等。
(當一電腦圖形影像將被顯示時,通常首先定義一系列圖元(primitives)(多邊形),而圖元則被區分(光柵化)為圖形片段以供依序圖形渲染。在一正常圖形渲染操作期間,渲染器將修改各片段所關聯的(例如)顏色(紅、綠、藍,RGB)及透明度(alpha,α)資料,使得片段可被正確地顯示。一旦片段已完全通過渲染器,則其等關聯的資料值被儲存在記憶體中,以準備供輸出,例如顯示。)
圖2顯示相關於本實施例的操作的圖形處理管線3的主元件及管線階段。本技術領域中具有通常知識者將理解,可具有圖2所未示的圖形處理管線的其他元件。在此亦應該注意,圖2僅是概要的,而例如在實務上,所示的功能單元及管線階段可分享重要的硬體電路,雖然其等是概要地如圖2所示的獨立階段。亦將理解的是,如圖2所示的圖形處理管線的各階段、元件及單元等可視需求而被實現,並將據此包括例如適當的電路及/或處理邏輯等,以進行必要的操作及功能。
如圖2所示,圖形處理管線3包括多個階段,包括頂點(vertex)著色器20、一輪廓(hull)著色器21、一鑲嵌器(tessellator)22、一網域(domain) 著色器23、一幾何著色器24、一光柵化階段25、一早期Z(深度)及模板測試階段26、具有一片段著色階段27形式的一渲染器、一晚期Z(深度)及模板測試階段28、一混合階段29、一區塊緩衝器30及一縮減取樣及寫出(多重樣本解析)階段31。
頂點著色器20取得頂點等所關聯的輸入資料值,其被定義以供將被產生的輸出,並處理該等資料值以產生一組相應的「頂點著色」輸出資料值以供圖形處理管線3的後續階段使用。頂點著色是例如修改輸入資料以考慮在將被渲染的影像中的照射效果。
輪廓著色器21對多組塊狀(patch)控制點進行操作,並產生額外的資料,稱為塊狀常數;鑲嵌階段22將幾何細分以產生輪廓的高階表示法;網域著色器23對鑲嵌階段所輸出的頂點進行操作(相似於一頂點著色器);而幾何著色器24處理整個圖元,例如一三角形、點或線。此等階段一起連同頂點著色器21有效地進行全部必要的片段前端操作,例如變換(transformation)及照射(lighting)操作及圖元設定,以設定將被渲染的圖元,以回應於被提供於圖形處理管線3的命令及頂點資料。
圖形處理管線3的光柵化階段25運作以將組成渲染輸出(例如欲顯示的影像)的圖元光柵化為單獨的圖形片段以供處理。為此,光柵化器25接收圖形圖元以供渲染,將圖元光柵化成取樣點,並產生具有適當的位置(表示適當的取樣位置)的圖形片段以供渲染圖元。
光柵化器所產生的片段則向前傳送至剩餘管線以供處理。
早期Z/模板階段26對其接收自光柵化器25的片段進行一Z(深度)測試,以觀察在此階段是否有任何片段可被捨棄(剔除)。為此,其將發送自光柵化器25的片段(所關聯)的深度值與經渲染的片段的深度值(此等深度值 被儲存在區塊緩衝器30的一部分的一深度(Z)緩衝器中)作比較以判斷新片段是否將被經渲染的片段所阻塞。同時,一早期模板測試被實行。
通過片段早期Z及模板測試階段26的片段則被傳送至片段著色階段27。片段著色階段27對早期Z及模板測試的片段進行適當的片段處理操作,俾處理片段以產生適當的被渲染的片段資料。
此片段處理可包括任何適合及期望的片段著色處理,例如對片段執行片段著色器程式,對片段施加紋理,對片段施加模糊或其他操作等,以產生適當的片段資料。在本實施例中,片段著色階段27具有一著色器管線(一可編程片段著色器)的形式。
接著,具有一「晚期」片段Z及模板測試階段28,其特別對經著色的片段實行管線深度測試的一終端以判斷一經渲染的片段是否實際上將在最終影像中被看見。深度測試使用儲存在區塊緩衝器30中的Z緩衝器中的片段位置的Z緩衝器值以判斷新片段的片段資料是否應該取代已經渲染的片段的片段資料,如同在本技術領域中已知的,此是透過將(儲存在深度緩衝器中的)發送自片段著色階段27的片段(所關聯)的深度值與已經渲染的片段的深度值作比較而為之。此晚期片段深度及模板測試階段28亦對片段實行任何必要的「後期」α及/或模板測試。
需要的話,通過晚期片段測試階段28的片段接著繫屬於與已被儲存在混合器29中的區塊緩衝器30中的片段的任何必要的混合操作。對片段必要的任何其他剩餘操作,例如擾動(dither)等(圖未示)亦在此階段中被運行。
最後,(混合的)輸出片段資料(值)被自其等所可之處寫入區塊緩衝器30,例如被輸出至一訊框緩衝器以供輸出。一輸出片段的深度值亦被適當地寫入在區塊緩衝器30中的一Z緩衝器。(區塊緩衝器儲存顏色及深度緩衝器,其分別儲存一適當的顏色等或Z值以供緩衝器所表示的各取樣點(必要於正 在被處理的一區塊的各取樣點)。)此等緩衝器儲存以相應於整體渲染輸出的各畫素的在緩衝器中的各組樣本值(例如各2x2組樣本值可相應於一輸出畫素,其中4x多重取樣正在被使用)表示整體渲染輸出(例如將被顯示的影像)的一部分(一區塊)的片段資料的一陣列。
區塊緩衝器被提供為置於(本地於)圖形處理管線(chip)的RAM的一部分。
區塊緩衝器30的資料被輸入一縮減取樣(多重樣本解析)寫出單元31,接著輸出(回寫)至一外部記憶體輸出緩衝器,例如一顯示裝置(圖未示)的一訊框緩衝器。(顯示裝置可包括例如包括一畫素陣列的一顯示器,例如一電腦監視器或一印表機。)
縮減取樣及寫出單元31將儲存在區塊緩衝器30的片段資料縮減取樣為適當的解析度給輸出緩衝器(裝置)(亦即產生相應於輸出裝置的畫素的畫素資料的陣列),以產生輸出值(畫素)以供輸出至輸出緩衝器。
一旦渲染輸出的一區塊已被處理,且其資料匯出至一主記憶體(例如至在主記憶體中的一訊框緩衝器(圖未示))以供儲存,則下一指令區塊被處理,以此類推,直到足夠的區塊已被處理以產生整個渲染輸出(例如將被顯示的訊框(影像))。處理則重複於下一指令渲染輸出(例如訊框)以此類推。
當然,圖形處理管線3的其他配置將是可能的。
以上描述圖1所示的圖形處理系統的操作的某些特徵。以下將描述根據本發明實施例的圖1所示的圖形處理系統的操作的進一步特徵。
由圖2可知,圖形處理管線3包括多個可編程處理或「著色器」階段,亦即頂點著色器20、輪廓著色器21、網域著色器23、幾何著色器24、及片段著色器27。此等可編程著色器階段執行具有一或以上的輸入變數及產生多組輸出變數及應用程式所提供的各著色器程式。
為此,應用程式2提供使用一高階著色器程式語言,例如GLSL、HLSL、OpenCL等而被實現的著色器程式。此等著色器程式則透過一著色器語言編譯器而被直譯為二元碼以供目標圖形處理管線3。如同在本技術領域中已知的,此可包括在編譯器中的程式的一或以上的中間表示法的產物。(編譯器可例如為驅動器4的一部分,並具有一特別API呼叫使編譯器運行。編譯器的執行即可被視為驅動器所完成的繪圖呼叫準備的一部分,以回應於一應用程式所產生的API呼叫)。
圖2示意地顯示圖形處理單元3的操作階段。
圖3顯示圖形處理單元3的相應的單元,其用於進行(並因此作用為)圖2所示的圖形處理管線的多個處理操作及階段。(在圖形處理單元3中可具有其他單元。為簡化,圖3僅顯示該等相關於以本發明的方式的操作的該等單元。)
如圖3所示,圖形處理單元3包括一光柵化器40、一緒生產器(thread spawner)41、一可編程執行單元42、一變化內插器43、一紋理映射器44、一混合器45及一組暫存器46。
緒生產器41可運作以生產執行緒以供可編程執行單元42的執行,例如供其接收自光柵化器40的片段。
可編程執行單元42運作執行著色器程式以進行圖形處理管線,例如輪廓著色器、頂點著色器及片段著色器的著色器操作。為此,其自緒生產器41接收執行緒,並對該等執行緒執行相關的著色器程式。作為此操作的一部分,如圖3所示,執行緒將讀寫資料於圖形處理單元的暫存器檔的各暫存器。
作為此處理的一部分,如圖3所示,可編程執行單元42可呼叫變化內插器43、紋理映射器44及混合器45以進行特定圖形處理操作。為此,可編程執 行單元將傳送適當的訊息至相關的加速器(並自其接收適當的回應),例如以回應於在其所正在執行的一著色器程式中的特定指令。
變化內插器43運作以內差圖形圖元的值,而作為此操作的一部分,時常產生紋理座標以用於取樣圖形紋理。
紋理映射器44運作以透過例如變化內插器43所產生的紋理座標,將圖形紋理取樣,而由此產生一經濾波的紋理樣本結果(其接著可回傳至可編程執行單元42以供例如當著色取樣點時使用)。
混合器45運作以將例如可編程執行單元42所產生的片段著色結果,及先前產生的片段著色器結果,例如已儲存在區塊緩衝器及/或訊框緩衝器中的結果,加以混合。
在本實施例中,並根據本發明,圖形處理單元3的可編程執行單元42可運作以執行被原子性地執行的一著色器程式的一指令群,並當執行另一指令時,將執行一指令的結果傳遞為一輸入以直接供使用。
圖4示意地顯示可被以此方式操作的可編程執行單元的一第一實施例。(再者,圖4僅為釐清該等相關於本發明的方式的操作的可編程執行單元42的元件而顯示。可編程執行單元42可具有圖4所未示的其他元件。)
在圖4中,可編程執行單元42包括一單獨功能單元50,其可運作以執行指令51。如圖4所示,功能單元50的輸出均可寫入暫存器46,並透過一回饋電路52(而不啟動暫存器檔)而被直接回饋為功能單元的一輸入。
相應地,功能單元50所將執行的一指令可將先前指令的執行的回饋輸出52或暫存器46的輸入之一選擇為其輸入。在本實施例中,如圖4所示,各指令具有二運算元,各可在二暫存器輸入之一及先前指令的執行的回饋結果52之間被選擇。
圖4亦顯示可編程執行單元42所將原子性地執行的相應的一指令群53。
如圖4所示,在指令群53的各指令之間具有一相應的暫存器存取描述符54。如圖4所示,當執行接下來的指令時,各描述符54指定將可用於(若其所正在執行的指令如此指示)功能單元所將讀取其輸入值的暫存器埠的資料值,其透過指定相應的暫存器埠所將提供的相關的資料值所應該將自其被提取的暫存器位址而為之。
相應地,暫存器存取描述符54亦指定隨著描述符的指令的執行結果所應該被寫入的暫存器位址(結果被提供至暫存器檔的寫入埠並寫入暫存器存取描述符54所指示的寫入位址)。
當執行指令群53時,可編程執行單元42首先將等待以確認將被原子性地執行的指令群的任何相依性已被滿足。指令群53的任何相依性較佳地在一標頭中被指示至指令群,使得可編程執行單元被告知在其可執行指令群53前必須被滿足的相依性。
一旦指令群53的全部相關的相依性已被滿足,則可編程執行單元42將原子性地,亦即不中斷且隨著一硬性時序地執行指令群。
當執行指令群53時,可編程執行單元42首先根據第一暫存器存取描述符54將暫存器檔組態以供指令群,接著執行第一指令51,使用指令所指示的輸入值,並將其輸出寫入暫存器存取描述符所指示的相關的寫入位址。
一旦指令的執行已被完成,根據在序列中的下一指令暫存器存取描述符的相關的資料值將被提取並提供至暫存器讀取埠,接著在指令群中的下一指令將被執行,其結果再次被寫入暫存器存取描述符所指示的相應的暫存器,以此類推。
在各例中,如圖4所示,功能單元所正在執行的指令可將任一暫存器檔的資料(透過存取相關的暫存器埠)及/或透過回饋(旁路)電路52而回饋的先前指令的結果選擇為其輸入。
一旦一指令群的全部指令已被執行,程式的執行將移至程式的下一指令群(有的話),並以一相應的方式原子性地執行指令群,以此類推,直到程式執行已被完成。
圖5顯示一可編程執行單元42的第二實施例。(再者,圖5僅為釐清該等相關於本發明的方式的操作的可編程執行單元42的元件而顯示。可編程執行單元42可具有圖5所未示的其他元件)
在本實施例中,可編程執行單元42包括二功能單元60、61,其等各在一給定的執行循環中執行各指令51。因此,將被原子性地執行的指令群53包括一序列指令元組62,其包括各功能單元60、61所將在相同指令循環中分別執行的各功能單元的一指令。
再者,如圖5所示,各功能單元的輸出被各回饋電路63、64回饋,俾可供正在被各功能單元60、61執行的下一指令使用為一輸入。據此,功能單元所將執行的指令可將產生並回饋自執行在任何功能單元中的先前指令的結果及暫存器檔所提供的資料選擇為其等輸入。
在圖5所示的實施例中,其假設在任何給定的執行循環中僅一結果可被回寫至暫存器,故如圖5所示,可編程執行單元42亦可運作以選擇哪個功能單元的輸出結果應該被寫入暫存器檔。此如圖5所示,在暫存器存取描述符54中被指定。需要的話,其他配置將是可能的,例如提供二寫入埠使得一執行循環的功能單元的輸出均可被寫入暫存器檔,或使結果的某些結合寫入暫存器檔。
相似地,將可能視需求提供更多暫存器讀取埠以使功能單元在更多輸入值之間選擇,而具有多於二功能單元等。
圖6示意地顯示一著色器程式的一例的時序圖70。特定地,此時序圖70顯示具有編號為0至4的五子句(clauses)71、72、73、74、75的一著色器程式的執行。在本例中,子句0、1及2(71、72、73)各發送一記憶體載入(76、77、78),而其等對其等本身不具有相依性,故其等在一算數邏輯單元(ALU)79中接連著執行,而記憶體載入76、77、78可重疊。另一方面,子句3(74)具有一相依性80:其相依於第一記憶體載入76,並因此被停止直到第一記憶體載入76已完成。子句4(75)具有二相依性81、82:其相依於第二及第三記憶體載入77、78。就此而言,子句4(75)被停止直到此二記憶體載入(亦即第二及第三記憶體載入77、78)均已完成。
記憶體載入可具有不可預期的潛時。在圖6之例中,此以具有比第三載入78高的潛時的第一及第二載入76、77表示之。
雖然本實施例已特別參考在圖形處理單元中的著色器程式的執行而被描述,需要的話,以本發明的方式的操作及本發明的技術同樣地可應用及可用於其他處理單元,例如更一般的一處理器,例如一CPU(中央處理單元)。
由上可知,本發明至少在較佳實施例中,提供方法以執行在資料處理系統的可編程執行單元中而可提供該等程式的更有效執行的程式。至少在本發明的較佳實施例中,此是透過執行在一程式中將被原子性地執行指令群,及透過當執行指令群的另一指令時,將在指令群中的一指令的執行的結果提供為一輸入以直接供使用而達成的。
46:暫存器
51:指令
54:暫存器存取描述符
60、61:功能單元
62:序列指令元組
63、64:回饋電路

Claims (24)

  1. 一種用於一資料處理單元的可編程執行單元,該可編程執行單元包括:處理電路,其可運作以當該可編程執行單元正在執行包括該可編程執行單元所將執行的一序列指令的一程式時:原子性地執行該程式的該序列指令的一指令群的該等指令,其中該處理電路包括一功能單元,可運作該功能單元以在一執行循環中執行一指令;及回饋電路,其經組態以當該功能單元執行正在被原子性地執行的該指令群中的另一指令時,將來自執行正在被原子性地執行的一指令群中的一指令的該功能單元的一輸出回饋直接供同一該功能單元作為一輸入來使用。
  2. 如請求項1所述之可編程執行單元,其中該可編程執行單元運作為一可編程圖形著色階段,其執行圖形著色器程式以進行圖形處理操作。
  3. 如請求項1或2所述之可編程執行單元,其中該處理電路包括複數功能單元,其各在一執行循環中執行一指令。
  4. 如請求項1或2所述之可編程執行單元,更包括電路,其可運作以當執行該指令時,使一指令將已回饋自該執行單元的該輸出的前一指令的該輸出選擇為一輸入。
  5. 如請求項1或2所述之可編程執行單元,其中該可編程執行單元經組態使得執行一指令的該結果可被寫入一暫存器或用於儲存的暫存器。
  6. 如請求項1或2所述之可編程執行單元,更包括電路,其可運作以當執行該指令時,使將被執行的一指令將儲存在該可編程執行單元的或其所可存取的一暫存器檔中的一暫存器中的資料選擇為一輸入。
  7. 如請求項1或2所述之該可編程執行單元,其中: 該可編程執行單元連接至一暫存器埠或一暫存器檔的埠以使其將儲存在一或多個暫存器中的資料接收為一或多個輸入;及更包括:選擇電路,其可運作以當執行一指令時,選擇一暫存器埠以使用為一輸入源。
  8. 如請求項1或2所述之可編程執行單元,其中將被執行的指令使用一定址編碼以指示僅可定址用於定址一有限組輸入源的一本地位址空間的其等輸入。
  9. 一種資料處理系統,包括:一執行管線,該執行管線包括一可編程執行單元,其執行程式指令以進行資料處理操作;其中:該資料處理系統經組態以:當執行該程式時,將包括該可編程執行單元所將執行的一序列指令的該可編程執行單元所將執行的一程式發送至該執行管線的該可編程執行單元;且該執行管線經組態以:將一或以上的執行緒發送至該可編程執行單元,該程式將為其而被執行以供執行;且該執行管線的該可編程執行單元包括:處理電路可運作以當該可編程執行單元正在執行包括該可編程執行單元所將執行的一序列指令的一程式時,原子性地執行該程式的該序列指令的一指令群的該等指令,其中該可編程執行單元的該處理電路包括一功能單元,可運作該功能單元以在一執行循環中執行一指令;及 回饋電路,其經組態以當該功能單元執行正在被原子性地執行的該指令群中的另一指令時,將來自執行正在被原子性地執行的一指令群中的一指令的該功能單元的一輸出回饋直接供同一該功能單元作為一輸入來使用。
  10. 如請求項9所述之系統,其中:該資料處理系統經組態以:當執行一指令時,亦將指示其值將被提供為輸入的該等暫存器的暫存器存取描述符發送至該執行管線的該可編程執行單元。
  11. 如請求項10所述之系統,其中該等暫存器存取描述符亦指示來自執行一指令的該輸出值應該被寫入哪個暫存器。
  12. 如請求項10或11所述之系統,其中:該資料處理系統經組態以:將一暫存器存取描述符發送給在將被執行的該程式中各指令。
  13. 一種操作一資料處理單元的一可編程執行單元以執行程式指令以進行資料處理操作的方法,其中該可編程執行單元包括一功能單元,可運作該功能單元以在一執行循環中執行一指令,該方法包括:當執行一程式以供一執行緒時,當執行該程式時,該程式包括該可編程執行單元所將執行的一序列指令,該可編程執行單元:原子性地執行該程式的該序列指令的至少一指令群;及當該功能單元執行正在被原子性地執行的該指令群中的另一指令時,將來自執行正在被原子性地執行的一指令群的一指令的該功能單元的一輸出回饋直接供同一該功能單元作為一輸入來使用。
  14. 如請求項13所述之方法,其中:該可編程執行單元所將執行的該程式的該序列指令被分成多指令群;且該可編程執行單元原子性地執行各指令群。
  15. 如請求項13或14所述之方法,其中該可編程執行單元運作為一可編程圖形著色階段,其執行一圖形著色器程式以進行圖形處理操作。
  16. 如請求項13或14所述之方法,包括:當執行一指令時,將已回饋自該執行單元的該輸出的前一指令的該輸出選擇為一輸入。
  17. 如請求項13或14所述之方法,包括:將執行一指令的該結果寫入用於儲存的一暫存器。
  18. 如請求項13或14所述之方法,包括:當執行一指令時,將儲存在該可編程執行單元的或其所可存取的一暫存器檔中的一暫存器中的資料使用為一輸入。
  19. 如請求項13或14所述之方法,其中將被執行的指令使用一定址編碼以指示僅可定址用於定址一有限組輸入源的一本地位址空間的其等輸入。
  20. 一種操作一資料處理系統的一執行管線的方法,該執行管線包括執行程式指令以進行資料處理操作的一可編程執行單元,其中該可編程執行單元包括一功能單元,可運作該功能單元以在一執行循環中執行一指令,該方法包括:將該可編程執行單元所將執行的一程式發送至該可編程執行單元,當執行該程式時,該程式包括該可編程執行單元所將執行的一序列指令;將該程式將為其而被執行的一或以上的執行緒發送至該可編程執行單元以供執行;且執行該程式以供該或該等執行緒;其中:執行該程式以供該或該等執行緒包括:原子性地執行該程式的該序列指令的至少一指令群;及 當該功能單元執行正在被原子性地執行的該指令群中的另一指令時,將來自執行正在被原子性地執行的該指令群中的一指令的該功能單元的一輸出回饋直接供同一該功能單元作為一輸入來使用。
  21. 如請求項20所述之方法,更包括:當執行一指令時,將指示其值將被提供為輸入的該等暫存器的暫存器存取描述符發送至該執行管線的該可編程執行單元。
  22. 如請求項21所述之方法,其中該等暫存器存取描述符亦指示來自執行一指令的該輸出值應該被寫入哪個暫存器。
  23. 如請求項21或22所述之方法,包括:將一暫存器存取描述符發送給在將被執行的該程式中的各指令。
  24. 一種電腦程式,包括當該程式在資料處理器上運行時,用於執行如請求項13、14、20、21或22所述之方法的電腦軟體碼。
TW105120266A 2015-07-31 2016-06-28 資料處理系統 TWI706372B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1513609.6 2015-07-31
GB1513609.6A GB2540970B (en) 2015-07-31 2015-07-31 Executing Groups of Instructions Atomically

Publications (2)

Publication Number Publication Date
TW201712631A TW201712631A (zh) 2017-04-01
TWI706372B true TWI706372B (zh) 2020-10-01

Family

ID=54063033

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105120266A TWI706372B (zh) 2015-07-31 2016-06-28 資料處理系統

Country Status (5)

Country Link
US (1) US10593093B2 (zh)
CN (1) CN107851027B (zh)
GB (1) GB2540970B (zh)
TW (1) TWI706372B (zh)
WO (1) WO2017021689A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768935B2 (en) * 2015-10-29 2020-09-08 Intel Corporation Boosting local memory performance in processor graphics
GB2574817B (en) * 2018-06-18 2021-01-06 Advanced Risc Mach Ltd Data processing systems
CN108845829B (zh) * 2018-07-03 2021-06-25 中国人民解放军国防科技大学 一种系统寄存器访问指令的执行方法
US11830101B2 (en) * 2020-07-17 2023-11-28 Arm Limited Graphics processors

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7623132B1 (en) * 2004-12-20 2009-11-24 Nvidia Corporation Programmable shader having register forwarding for reduced register-file bandwidth consumption
US8108610B1 (en) * 2008-10-21 2012-01-31 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
TW201333819A (zh) * 2011-12-22 2013-08-16 Nvidia Corp 無指令解碼而排程指令的方法和裝置
TW201342212A (zh) * 2011-12-21 2013-10-16 Nvidia Corp 使用預解碼資料進行指令排程的方法和裝置
US20140176568A1 (en) * 2012-12-20 2014-06-26 Nvidia Corporation Programmable blending in multi-threaded processing units

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6615338B1 (en) 1998-12-03 2003-09-02 Sun Microsystems, Inc. Clustered architecture in a VLIW processor
US20030093509A1 (en) * 2001-10-05 2003-05-15 Li Raymond M. Storage area network methods and apparatus with coordinated updating of topology representation
US7439979B1 (en) * 2004-11-10 2008-10-21 Nvidia Corporation Shader with cache memory
US7496735B2 (en) * 2004-11-22 2009-02-24 Strandera Corporation Method and apparatus for incremental commitment to architectural state in a microprocessor
US7809927B2 (en) * 2007-09-11 2010-10-05 Texas Instruments Incorporated Computation parallelization in software reconfigurable all digital phase lock loop
US20090125706A1 (en) * 2007-11-08 2009-05-14 Hoover Russell D Software Pipelining on a Network on Chip
US8200914B2 (en) * 2008-01-03 2012-06-12 International Business Machines Corporation Apparatus, system, and method for a read-before-write storage controller instruction
CN101706779B (zh) * 2009-10-12 2013-05-08 南京联创科技集团股份有限公司 基于oracle的伞状数据导入导出方法
US20130198760A1 (en) * 2012-01-27 2013-08-01 Philip Alexander Cuadra Automatic dependent task launch
US9256466B2 (en) * 2013-06-07 2016-02-09 Arm Limited Data processing systems
CN104516831B (zh) * 2013-09-26 2019-02-22 想象技术有限公司 原子存储器更新单元和方法
US9471323B2 (en) * 2013-10-03 2016-10-18 Intel Corporation System and method of using an atomic data buffer to bypass a memory location

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7623132B1 (en) * 2004-12-20 2009-11-24 Nvidia Corporation Programmable shader having register forwarding for reduced register-file bandwidth consumption
US8108610B1 (en) * 2008-10-21 2012-01-31 Nvidia Corporation Cache-based control of atomic operations in conjunction with an external ALU block
TW201342212A (zh) * 2011-12-21 2013-10-16 Nvidia Corp 使用預解碼資料進行指令排程的方法和裝置
TW201333819A (zh) * 2011-12-22 2013-08-16 Nvidia Corp 無指令解碼而排程指令的方法和裝置
US20140176568A1 (en) * 2012-12-20 2014-06-26 Nvidia Corporation Programmable blending in multi-threaded processing units

Also Published As

Publication number Publication date
GB2540970B (en) 2018-08-15
US20180211436A1 (en) 2018-07-26
CN107851027A8 (zh) 2018-05-22
GB201513609D0 (en) 2015-09-16
GB2540970A (en) 2017-02-08
CN107851027A (zh) 2018-03-27
CN107851027B (zh) 2022-02-11
WO2017021689A1 (en) 2017-02-09
US10593093B2 (en) 2020-03-17
TW201712631A (zh) 2017-04-01

Similar Documents

Publication Publication Date Title
CN109564700B (zh) 用于取决于纹理的丢弃操作的分级式Z剔除(HiZ)优化
CN106373083B (zh) 图形处理
CN110262907B (zh) 用于统一应用编程接口和模型的系统和方法
KR102617106B1 (ko) 데이터 처리 시스템
US20170372448A1 (en) Reducing Memory Access Latencies During Ray Traversal
TWI706372B (zh) 資料處理系統
US20140366033A1 (en) Data processing systems
KR20170004891A (ko) 데이터 처리 시스템
CN108780579B (zh) 使用压缩数据的每样本msaa渲染
US10922086B2 (en) Reduction operations in data processors that include a plurality of execution lanes operable to execute programs for threads of a thread group in parallel
CN106408504B (zh) 图形处理系统
US10606595B2 (en) Data processing systems
US11016774B1 (en) Issuing execution threads in a data processor
US10310856B2 (en) Disabling thread execution when executing instructions in a data processing system
US10891708B1 (en) Shader program execution in graphics processing
US20240036874A1 (en) Apparatus and method of optimising divergent processing in thread groups
US11442731B2 (en) Data processing systems including an intermediate buffer with controlled data value eviction
US11372691B2 (en) Data processing systems comprising grouped execution threads with common data values
GB2546308A (en) Data processing systems
KR102676410B1 (ko) 그래픽 처리 시스템