TWI423161B - 繪圖處理單元、元命令處理系統以及元命令執行方法 - Google Patents
繪圖處理單元、元命令處理系統以及元命令執行方法 Download PDFInfo
- Publication number
- TWI423161B TWI423161B TW098137751A TW98137751A TWI423161B TW I423161 B TWI423161 B TW I423161B TW 098137751 A TW098137751 A TW 098137751A TW 98137751 A TW98137751 A TW 98137751A TW I423161 B TWI423161 B TW I423161B
- Authority
- TW
- Taiwan
- Prior art keywords
- command
- meta
- context
- register
- gpu
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 71
- 238000000034 method Methods 0.000 title claims description 36
- 230000009471 action Effects 0.000 claims description 160
- 238000013507 mapping Methods 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 17
- 238000012544 monitoring process Methods 0.000 claims description 11
- 238000001514 detection method Methods 0.000 claims description 10
- 230000007704 transition Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 87
- 238000007726 management method Methods 0.000 description 39
- 230000008859 change Effects 0.000 description 30
- 230000004888 barrier function Effects 0.000 description 27
- 238000010586 diagram Methods 0.000 description 27
- 230000007246 mechanism Effects 0.000 description 16
- 239000000725 suspension Substances 0.000 description 16
- 230000006870 function Effects 0.000 description 10
- 230000000694 effects Effects 0.000 description 7
- 230000002093 peripheral effect Effects 0.000 description 7
- 238000011084 recovery Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 7
- 238000012546 transfer Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 239000003607 modifier Substances 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 241001408627 Agriopis marginaria Species 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 206010000210 abortion Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009474 immediate action Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000004853 microextraction Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30094—Condition code generation, e.g. Carry, Zero flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
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 Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本發明有關於一種繪圖處理單元,特別是有關於元命令處理的一種繪圖處理單元。
隨著電腦繪圖的發展,其相關的處理能力需求也相對地增加。當中央處理單元(Central Processing Unit,CPU)開始使用來處理繪圖指令時,可配合另外的硬體達成許多繪圖應用軟體的功能。特別是隨著繪圖需求的增加,也開始使用了多重CPU和/或一繪圖處理單元(GPU)。GPU的使用簡化了繪圖指令的處理。當使用GPU提升繪圖能力的時候,可藉著使用複數個GPU更恰當地呈現許多動態的繪圖場景。當使用多重GPU的情況下,GPU之間的同步是需要考慮進去的。
傳統都是採用軟體的方式來達成多重CPU的同步。然而,由於目前發展之CPU的特性,其可能使用串流類型的架構並且執行複數的工作,因此目前所支援的多重CPU同步機制可能無法提供所需的軟體和/或硬體功能。使用高速週邊控制器介面(Peripheral Controller Interface Express,PCI-Express)的系統介面可於電腦系統中的多個CPU和GPU之間提供通用訊息傳輸層級的通訊機制,以及提供主記憶體和區域記憶體之資料區塊間資料的一致性。
高速週邊控制器介面鎖定的交換(transaction)可用來
支援訊息和廠商定義的訊息,其可當成用以實現不同之同步類型的低階基元(primitive)。然而,這些機制可能沒有包含所需的GPU同步支援,並且廠商必須定義它們的訊息以支援此系統的多重CPU和多重GPU的設定,以及GPU架構中的特殊硬體區塊。這些訊息可定義為GPU的元命令(metacommand),其藉著操作輸入命令串流來控制GPU的活動。
本發明包括用以處理元命令以控制輸入命令串流層級上GPU活動之系統和方法的實施例。在至少一實施例中,GPU包括用以處理至少一內文暫存器的元處理器。元處理器包括內文管理邏輯單元和元處理器控制暫存器方塊,元處理器控制暫存器方塊用以接收元處理器架構資料,元處理器控制暫存器方塊更用以定義內文管理邏輯單元的行為。本發明的某些實施例還包括匯流排介面單元,用以提供系統處理器對元處理器的存取。GPU命令串流處理器用以擷取目前的內文命令串流,並傳送命令至GPU的管線執行。
本發明也包括用以處理元命令之系統的實施例。至少一實施例包括了元命令執行邏輯單元,用以執行至少一元命令。內文敘述暫存器方塊用以接收內文信號和內文狀態更新信號,並且提供內文狀態至元命令執行邏輯單元。元處理器控制暫存器方塊用以接收述詞和條件(predicate and
condition)信號,並且提供最終條件信號至元命令執行邏輯單元。本發明的某些實施例還包括隱性元命令(implicit metacommand)解碼器,用以偵測暫存器的更新和至少一GPU信號。
本發明至少一實施例的方法包括偵測新的元命令,並確認所偵測的元命令是否為隱性元命令,更新內文暫存器並偵測關於所更新之內文暫存器的事件類型,確認所偵測的元命令是否為顯性元命令(explicit metacommand)。對應至所偵測之元命令為顯性元命令的情況,某些實施例包括確認動作編碼是否為直接動作碼,以及對應至該動作編碼為直接動作碼的情況,將動作解碼並傳送動作碼至一個邏輯單元。
熟悉此技藝之人士透過以下的附圖和詳細的敘述將可完全了解本發明其他的系統、方法、特徵和優點。必須注意的是,所有類似的其他系統、方法、特徵和優點皆包括於說明之中,並屬於本發明的範圍之內。
第1圖顯示根據本發明所述CPU之多重指令多重資料(Multiple Instruction Multiple Data,MIMD)串流的架構。如圖所示,第1圖包括具有全域記憶體(global memory)之一命令匯流排多重處理器系統和具有附接之區域記憶體(local memory)次系統的多重CPU。該系統可具有二個或更多的CPU,並且於這些CPU之間分配工作量。該系統
可具有一專用的主CPU,用以規劃處理程序(process)和執行緒(thread),並且可具有分散式排程處理程序執行於對稱式多重處理(Symmetric Multiprocessing,SMP)系統之上。有很多種技術可以達成任務(task)的分配。另一種實施方式是在CPU共用相同的作業系統和應用程式任務池(task pool)時使用SMP技術。
使用具有全體可存取之資料的共用位址空間的系統,通常需要維護複製至區域記憶體之資料區塊其間的記憶體資料的一致性,並且將處理程序/執行緒的執行做同步的動作。這類多重處理器中的CPU和記憶體次系統通常具有硬體所支援的特殊基元和資源以提供多重處理器適當的功能運作,包括匯流排監控和用以達成記憶體資料一致性的目錄式協定,以及用於資料存取同步和執行緒執行控制所需的特殊指令和硬體區塊。新的高速週邊控制器介面匯流排功能可提供支援來實現這類的基元。
更具體地說,第1圖中的主CPU 102可耦接至區域記憶體104。此外,主CPU 102可耦接至匯流排106,匯流排106可耦接至全域記憶體107和從屬CPU 108a-108n。耦接至從屬CPU 108a-108n的是區域記憶體110a-110n,其中n代表所有可包括的從屬CPU和區域記憶體110的數目。如第1圖所繪示,區域記憶體104和區域記憶體110a之間的資料可具有一致性。同樣的,全域記憶體107和區域記憶體110之間的資料可具有一致性。相同的,從屬CPU之間可互相執行執行緒同步,而主CPU 102可傳送任務/執行緒排程佇列至全域記憶體107。
第2圖顯示本發明一實施例與一或多個CPU結合之多重簡單繪圖處理器的架構,類似於第1圖的架構。更具體地說,第2圖的實施例繪示一多重處理器系統,其包括一主CPU以及一或多個連接至多個GPU的從屬CPU。更明確地說,在第2圖的實施例中,主CPU 202耦接至區域記憶體204和匯流排206。從屬CPU 208也耦接至匯流排206和區域記憶體210。系統記憶體207耦接至匯流排206,簡單(simple)GPU 212a-212n也耦接至匯流排206。而視訊記憶體214a-214n分別耦接至簡單GPU 212a-212n。
如所繪示,區域記憶體204、區域記憶體210和系統記憶體207之間的資料可具有一致性。同樣地,主CPU 202和從屬CPU 208之間可發生執行緒同步。已分布或預分類(presorted)的繪圖命令可傳送至一或多個簡單GPU 212a-212n。相同的,簡單GPU 212之間亦會發生圖框輸出同步。視訊記憶體214可相互溝通以增進一或多的圖框的結合。
這類系統的其中一種實現方式包括將一3D繪圖場景之空間和/或體積劃分成複數個區段和繪圖物件的相關群組,並且傳送繪圖物件至個別的GPU產生最終圖框的各個部分。另一個方式包括在用以呈現連續圖框的不同GPU之間,採用時間分割(time split)的機制。這些架構的同步相對地較簡單,並且可實現於圖框產生的最後階段(當GPU結合最終的圖框緩衝器資料以便進行顯示)。該系統可於CPU層級之上使用執行緒執行的同步,但在類似的架構中,在圖框的呈現期間可能不需要GPU的同步。有很多的
方法可以用來分散工作量,其可包括:
(1)至少其中一個GPU接收所要呈現之物件的一預先分類的群組(或者在時間分割機制的情況下是整個場景圖框)以及所有相關的狀態資料。這些物件是關於初步分割的螢幕區段(或是特定GPU的選定圖框)。
(2)至少其中一個GPU可接收相同的(或類似)物件和狀態分布資料流。GPU可裁剪位於其所分配的螢幕區段之外的物件,並且呈現位於其責任區段之內的物件。
本發明的實施例是關於繪圖和資料處理系統中使用多重GPU結合一或多個CPU來產生應用程式。高度逼真之複雜3D場景的即時呈現會耗用運算能力,該運算能力可由複雜的多重處理架構所提供。這些架構可包括一或多個GPU和CPU,如第3圖所示。
第3圖顯示本發明一實施例之包括多重CPU和多重GPU之多重指令多重資料的處理器系統。如所繪示,這類複雜多重處理器的運算任務映射和執行任務排程可藉由實質的軟體支援工具和特殊的硬體架構所達成,其可大大減少多重處理器和運算排程的負荷。該類的CPU-GPU之多重指令多重資料的多重處理器系統(如第3圖所示)也可包括其他的引擎,包括(不限於)視訊、加密、資料移動或轉換等等。
更具體地說,如第3圖中所示,全域CPU佇列和執行緒排程器302(在此稱為CPU QTS 302)可用一專屬的主CPU和執行於多個CPU之上的對稱多重處理(SMP)任務來實現。匯流排304可提供與CPU 312a的通訊,而區域CPU
佇列306a可實現為獨立的記憶體區塊,並且/或映射到區域CPU記憶體。CPU 312a也可耦接至區域記憶體314a。
同樣地,CPU QTS 302也耦接至CPU 312b和區域CPU佇列306b。CPU 312b耦接至區域記憶體314b。CPU QTS 302也耦接至另外的CPU,如CPU 312n、區域記憶體314n和區域CPU佇列306n所示。虛線邊界的方塊表示可實現為獨立單元的邏輯單元,或可使用目前CPU模組之資源的邏輯單元。
熟悉此技藝之人士應知悉,將匯流排304敘述為一匯流排係用以說明本發明而非限定本發明,本發明中其他的元件亦是如此。更具體地說,第3圖為邏輯表示方式。如熟悉此技藝之人士所了解的,以上提到的匯流排304僅為說明之用,因此任何用以提升CPU QTS 302和第1圖中其他元件間之溝通能力的技術都可以使用。
第3圖的非限定實施例另外包括一全域GPU佇列和任務/內文排程器324(GPU QTS 324)。GPU QTS 324耦接至區域CPU佇列326a和GPU 328a,GPU 328a耦接至視訊記憶體330a。同樣地,GPU QTS 324也耦接至區域CPU佇列326b和GPU 328b,GPU 328b也耦接至視訊記憶體330b。如上所述,GPU QTS 324也可耦接至其他元件,例如區域CPU佇列326n、GPU 328n和視訊記憶體330n。應該注意的是,GPU的內文排程器也可視為邏輯區塊,其可使用CPU資源和/或特殊的GPU對GPU協定來實現。
在操作中,許多多重處理器系統可透過執行緒同步將CPU 312a、CPU 312b和CPU 312n做同步。此外,CPU QTS
302和GPU QTS 324也可互相溝通以達成全域排程和同步的目的。CPU 312a可與區域CPU佇列326a溝通以達成執行列表/內文狀態(run list/context status)的通知。同樣地,CPU 312b可與區域CPU佇列326b溝通,CPU 312n和326n也是相同的道理。
亦如第3圖所述,多個任務(處理程序)和次任務(執行緒)可同時執行,或大致上同時執行。一個處理程序可包括一或多個執行緒,其可平行和/或接續地執行於相同或複數個CPU中。一或多個處理程序可於一或多個CPU執行緒的執行期間使用一或多個相關的CPU和/或其他特殊硬體單元。一具有專屬位址空間的處理程序可作為具有特定處理排程的多重執行緒來執行於特定的CPU之上。該處理程序可由CPU QTS 302排程至某一個CPU,其可執行於專屬的CPU上,和/或執行於系統中其他空閒的CPU上。
相關的GPU也可用來從CPU處理程序之位址空間內的直接記憶體存取緩衝器(DMA buffer)擷取命令,並且寫入以及/或讀取全域記憶體空間內的一位置。此外,GPU 328也可具有一執行緒,又稱為內文。GPU的處理程序也可稱為執行列表(run list),其可包括複數個內文。
GPU 328也可用來接收著色器的執行緒以便於可程式著色器(可用來處理GPU內的串流資料)上執行。此外,複數個GPU也可透過一連結轉接器來連接,這樣的架構可使複數個GPU看起來成為CPU處理的一個邏輯GPU。
第4圖顯示根據本發明一實施例之區域CPU佇列,類似於第3圖的CPU佇列。更具體地說,第4圖包括區域
CPU佇列306。區域CPU佇列306包括應用程式處理程序A 402以及應用程式處理程序B 406。應用程式處理程序A 402可包括一或多個執行緒404a、404b至404k,其中404k表示應用程式處理程序A 402可包括的執行緒的任意數目。同樣地,應用程式處理程序B 406包括一或多個執行緒408a、408b和4081,其中執行緒4081表示應用程式處理程序B 406可包括的執行緒的任意數目。應用程式處理程序的執行緒可傳送到區域CPU行程/執行緒排程器410,其可切換執行於CPU 312上的執行緒。當接收到執行緒時,CPU 312可處理所需的指令。
第5圖顯示本發明一實施例之區域GPU佇列。與第3圖之區域CPU佇列相似,區域GPU佇列326包括應用程式執行列表A 502,其包括一或多個內文504a、504b和504m,其中內文m(504m)表示能存在於應用程式執行列表A 502內之內文的數目。同樣地,區域GPU佇列326包括應用程式執行列表B 506,其包括一或多個內文508a、508b和508m。區域GPU佇列326可用來將應用程式執行列表502和506的資料傳送至區域GPU內文排程器510。區域GPU內文排程器510可連接到用以於GPU 328切換內文的邏輯單元。
第6圖顯示本發明一實施例之執行列表的示意圖,例如可由第3圖的架構所執行的執行列表。更具體地說,在第6圖的實施例中,奇數執行列表602包括複數個內文指標0、1、2和3。內文指標可用來指向記憶體中的一位址,例如直接記憶體存取記憶體(DMA)。奇數執行列表602亦
包括目前執行列表有效指標608,用以指向目前正在執行的內文。
第6圖的實施例也包括偶數執行列表604。偶數執行列表604包括複數個內文指標和複數個環狀緩衝器指標。以下所述的環狀緩衝器606為本發明之環狀緩衝器的一個範例。環狀緩衝器606可包括一畫磚(tile)頭端指標、一直接記憶體存取(DMA)指標和一頭端指標。直接記憶體存取指標可用來指向一直接記憶體存取緩衝器,直接記憶體存取緩衝器可包括一或多個繪圖命令和/或其他的GPU命令。環狀緩衝器606也包括一尾端指標和其他新增的指標。熟習此技藝之人士應該注意的是,環狀緩衝器可容納超過兩個執行列表於GPU中。第6圖的奇數和偶數架構係非限定的實施例。頭端指標和尾端指標可定義執行列表中的一或多個內文。頭端指標可用來顯示GPU從哪個地方擷取要被解析器(parser)或串流處理器所執行之目前命令。在這個例子中,頭端指標與程式計數器非常類似。尾端指標可反映CPU應用程式的GPU命令串流產生的特性,並且顯示有效命令串流的邊界(border)。當GPU遵循CPU的應用程式時,該類指標允許CPU和GPU的活動可以重疊。當GPU遵循CPU的應用程式時,CPU可繼續寫入命令串流,並且在GPU執行頭端的內文時,將尾端指標移至新的邊界。
可加入其他的指標以達到內文切換和其他同步程序的簡化和改善,例如用以顯示目前正執行於其中一GPU內部管線區塊(光柵器(rasterizer),紋理單元等等)之命令
的指標。當三角形轉換成像素流(pixel flow)的時候,第6圖中的畫磚頭端指標可具有正執行於光柵單元頂端的命令的位址。GPU的內文可類比為CPU的執行緒,代表應用程式任務的特定部分。執行列表(或內文群組)可類比為包括許多執行緒之CPU處理程序。
此外,在許多系統中,執行緒之間可以同步。執行緒同步機制可使用任何的執行緒排程方法,並且可將硬體連接至排程軟體和/或硬體。由A.D.Birrell、J.V.Guttag、J.J.Horning和R.Levin等作者於1978年8月20號所發表之一篇名為”Synchronization Primitives for a Multiprocessir:A formal Specification”的SRC Research Report 20,說明了CPU領域中包括複數個同步基元(synchronization primitive)的執行緒同步機制。上述該專利參考文獻全體皆引用作為本說明書的揭示內容。
第7圖顯示本發明一實施例可用以同步CPU之同步基元的方塊圖,例如第1圖的CPU。如所繪示,同步基元可包含於同步CPU,包括互斥基元群組(mutex primitive group)722(用以顯示互斥的命令)、條件基元(condition primitive)群組730、旗號基元(semaphore primitive)群組742和警示基元(alerts primitive)群組752。互斥基元群組722可包括互斥獲取(mutex acquire)724和互斥釋放(mutex release)730基元。鎖定(lock)基元726和解鎖(unlock)728基元也可以不同的名稱包括於互斥基元中。
條件群組730內包括一條件等待基元(condition wait)732,其包括進入佇列(enqueue)變數734和重新恢復
(resume)變數736。條件等待732的進入佇列變數734可用來懸置目前的執行緒,並且當條件不成立的時候將懸置的執行緒放入佇列中。條件等待732的重新恢復變數736可在條件成立的時候恢復執行緒的執行。條件群組730也包括條件信號(condition signal)基元738和條件廣播(condition broadcast)基元740。在操作中,條件信號基元738和條件廣播基元740可將被懸置等待的執行緒喚醒以再多次確認條件是否成立,若條件仍然成立則繼續進行流程。
條件信號基元738可告知CPU有關一或多個懸置之執行緒的條件述詞的改變。條件廣播基元740可用來告知懸置的執行緒。旗號群組742可包括一旗號P(下)二進位基元(binary primitive)744、一旗號V(上)二進位基元746、一旗號P(下)計數基元(counting primitive)748和一旗號V(上)計數基元750。二進位旗號的運算原理可與互斥基元類似。另外,二進位旗號P可與獲取有關,而二進位旗號V與釋放有關。計數旗號P(下)可用來確認旗號值、減少旗號值,並且當該值非零的時候繼續執行緒的執行。否則,計數旗號P不會完成下半部分的運算並且進入休眠狀態(sleep)。計數旗號V(上)用以增加旗號值,並且喚醒處於休眠狀態且無法完成具有此特定位址的旗號之旗號P運算下半部分的執行緒。在與中斷程序互動的情況中旗號是很有用的,因為在至少一些實施例中,旗號是無法使用互斥的。
警示基元群組752結合旗號和條件基元可提供執行緒
的軟性中斷,其可用以實現計時結束(timeouts)、取消(aborts)的功能等等。這個功能可用於決定提出這個要求時發生在比執行緒被阻擋之層級還高的抽象層級的情況。警示基元群組752可包括一警示基元754、一測試警示(test alert)基元756、一警示P(alert P)基元758和一警示等待(alert wait)基元760。警示等待基元760可包括進入佇列基元762和/或警示重新恢復基元764的變數。
呼叫警示(t)是執行緒(t)提出異常警示的請求。程序測試警示(TestAlert)允許執行緒確認是否有等待處理中的請求讓它發出警報。警示等待(AlertWait)和等待(Wait)很像,除了警示等待可發出警報而非返回。警示等待和等待之間的選擇是根據呼叫的執行緒是否在呼叫的時間點需要回應警報。警示P程序可提供類似的功能給旗號。
具有平行迴圈的程式中的另一種同步運算是屏障(barrier)766。屏障766可用來懸置行程繼續執行,直到所有的處理程序都到達屏障。一旦這些處理程序到達屏障766,屏障766可釋放這些處理程序。屏障766的至少一實現方式可用複數個自旋鎖(spin-lock):一個用以保護計算到達屏障766之處理程序數目的計數器,另一個用以保持這些處理程序,直到最後一個處理程序到達屏障766為止。另一個解決方案可包括一感應反向屏障(sense-reversing barrier),其可用來利用私用預處理(preprocess)變數,對於每一處理程序可將起始狀態設為1。
以上所述的是CPU特殊功能所支援的執行緒同步基元。以上所指出的基元可用來提供硬體基元,例如微量暫存器記憶體(Atomic Register-Memory)交換、微量測試和設定(Test and Set)、微量擷取(Atomic Fetch)和記憶體數值之增值(讀取和更新)以及其他。
此外,這些指令可依序使用。更具體地說,如果負載鏈接(Load Linked,LL)所指定之記憶體位置的內容在條件儲存(Store Conditional,SC)至同位址發生之前改變的話,則會導致條件儲存失敗。如果處理器執行兩個指令之間的內文切換,則條件儲存也會失敗。條件儲存可由返回一個用以指示該儲存動作是否成功的值來定義。由於負載鏈接返回該起始值,並且條件儲存在成功的時候返回1(反之則0)的值,因此以下的序列係實現R1的內容所指明之記憶體位置的微量交換。更具體地說,如以下的非限定實施例:MOV R3,R4,R0;移動交換值
LL R2,0(R1);負載鏈接
SC R3,0(R1);條件儲存
BEQZ R3,try;分支儲存失敗
MOV R4,R2;將負載值放入R
在序列的最後R4的內容會與R1所指明的記憶體位置做微量交換(忽略延遲分支的影響)。當處理器在LL和SC指令之間插入且修改記憶體中的值時,SC在R3中返回0的值,使得上述的程式碼序列再執行一次。負載鏈接/條件儲存機制的優點就是該機制可用來建構其他的同步基
元。以一非限定實施例來說,微量擷取並增值可能包括:try:LL R2,0(R1);負載鏈接
DADDUI R3,R2,#1;增值
SC R3,0(R1);條件儲存
BEQZ R3,try;分支儲存失敗
硬體/軟體鎖定支援和屏障改善
鎖定的一問題就是會帶來大量不必要的記憶體傳輸競爭。如同非限定的實施例,當鎖定被釋放的時候,處理器可產生讀取和寫入誤失(miss),即使最多一處理器可於解鎖的狀態中成功地取得該鎖定。這個情況可藉著將此鎖定從一等待的處理器明確地交給下一個處理器來改善。與其於每次鎖定釋放的時候允許所有的處理器相互競爭,可使用一列表顯示等待的處理器,並且明確地將此鎖定交給輪到的處理器。這種機制可包括一佇列鎖定(queuing lock)。佇列鎖定可用硬體和/或軟體的方式,以陣列追蹤等待的處理器的方式來實現。硬體實現可用特別的同步控制器,其可和記憶體或匯流排控制器整合在一起。
實現類似的佇列鎖定功能時有多個關鍵點。第一,此領域之人士可區分對該鎖定的起始存取以執行佇列運算以及鎖定的釋放,以便將此鎖定提供給另一處理器。等待之處理程序的佇列可用許多機制實現。在目錄式的多重處理器中,該佇列可與分享集合有關,且類似的硬體可用來實現目錄和佇列鎖定運算。
其中複雜之處在於硬體可能隨時準備要求取回這些鎖定,因為要求該鎖定的處理程序可能已經切換了內文,甚
至可能不再排程於相同的處理器上。佇列鎖定可用來改善屏障運算的效能。另一種方式是使用基元,用以減少屏障計數增量所需的時間,因而減少了這個瓶頸的序列化,這個方式產生的效能應與佇列鎖定的方式不相上下。
一個可用於同步運算的基元是擷取並增值基元,其可用來取得一變數並且增加其值。所返回的值可為增加後的值和/或初始取得的值。與簡單的”程式碼感測”屏障相比,使用擷取並增值機制可改善屏障的實施方式。
第8圖顯示本發明另一種同步基元的方塊圖,與第7圖的基元很類似。更具體地說,第8圖包括一互斥群組822,其中包括了一通知互斥等待基元824、一通知互斥信號基元826、一同步互斥等待基元828和一同步互斥信號基元830。第8圖也包括一旗號群組832,其包括一旗號P等待基元834和一旗號V信號基元836。
以上的說明是針對軟體基元和CPU同步硬體支援的實施例。本發明也討論了關於GPU元處理器的硬體單元,其支援了用以加強多重GPU同步的基元。更具體地說,本發明討論了GPU的硬體同步基元,以及可用以實現那些支援GPU對GPU之同步和多重GPU對CPU之同步的基元的硬體方塊。
第9圖顯示本發明一實施例的GPU同步層級,其包括內文管理、命令串流管理、資料存取和著色器微執行緒層級。每一個同步層級都有參與者和可能動作。參與者可包括遠端類型932,其可包括基於CPU的執行緒/處理程序排程器、一同儕類型934a-934c,其包括另一GPU內文。另
一參與者可包括一區域類型933a-933c,其包括具有目前執行之內文的區域GPU電路和管線區塊。區域著色器層級的參與者936可包括著色器程式和要求資料的指令。由於完整的可程式性,在多重CPU和多重GPU系統內著色器層級936可用一般第二級快取記憶體(L2 cache)和記憶體整合機制實現一或多個CPU同步基元938。對於CPU也是一樣,可在著色器指令集加入其他功能以支援同步基元。
GPU元命令和/或多重內文管理層級940是下一代GPU的控制層級,並且可根據系統中區域、遠端和同儕參與者的事件依照內文狀態和內文群組(例如執行列表)來運作。這個元命令層級940可用來實現CPU對GPU和/或GPU對GPU的同步。在這個層級之上,GPU硬體可透過記憶體映射輸入/輸出(Memory Mapped Input/Output,MMIO)接收內文狀態更新命令、從遠端參與者接收串流命令、從區域電路接收GPU管線事件,以及接收狀態暫存器更新或映射到區域GPU記憶體之同步暫存器的更新。元命令層級可對應於遠端排程器改變執行列表狀態942、對應區域排程器944發出事件信號,並且對應遠端或區域排程器946改變目前內文的狀態。
與之前的實施方式比較,可藉著增加述詞命令(predicated command)的執行(或丟棄/忽略950)和潛在地懸置命令的執行952來增強命令串流層級948。如果特定的命令串流內需要同步處理的話,可於執行的命令串流內包含元命令。
資料存取層級同步954可用來處理存取共用表面
(shared surface)時資料危機(data hazard)的處理、存取鎖定表面(locked surface)956時的延滯,以及事件964之內文切換的虛擬記憶體存取錯誤958。當著色器程式可直接自記憶體存取資料並切換微執行緒做延遲補償962,可採用著色器微執行緒層級960。著色器的完全可程式性可實現基於CPU的標準同步基元,例如第7圖所描述的那些基元。
第10圖顯示本發明所述之一GPU元命令處理器(元處理器)的範例結構和連接其他GPU方塊的結構。元處理器1002可耦接至命令串流處理器1004、匯流排介面單元1006、匯流排訊息編碼器1010以及/或解碼器1008。匯流排介面單元1006可將編碼器和/或解碼器包括於同一硬體單元的邏輯區塊。元處理器1002從這些單元和一或多個GPU管線區塊接收元命令和事件信號。
元處理器1002可包括一或多個內文暫存器方塊1012a-1012n和連接到GPU之其他部分的內文管理邏輯單元1014。如下將說明的,內文管理邏輯單元1014用以實現對內文和同步基元的運算。元處理器控制暫存器1018可用來定義該架構或述詞和/或條件,以及由內文管理邏輯單元1014所執行的動作。元處理器中內文管理邏輯單元1014的至少一實施例可基於可程式核心單元和專屬的固定功能硬體單元之上,視響應時間的需求而定。
匯流排介面單元1006可用來將CPU和/或GPU系統的存取提供給元命令處理器的邏輯單元。命令串流處理器1004可用來擷取目前的內文命令串流,且將命令送至GPU
管線區塊1016a-1016m執行。命令串流也可包括元命令,其可傳送到元處理器1002內執行並且/或於命令串流處理器內執行。元處理器1002從匯流排介面單元1006、命令串流處理器(Command Stream Processor,CSP)、匯流排訊息解碼器1008接收元命令,以及從命令串流處理器和GPU管線單元接收內文相關的事件/信號通知。元處理器1002根據這些資訊操縱GPU內的多重內文。在實現為專用硬體區塊的情況下,元處理器控制暫存器1018可用來定義內文管理邏輯單元1014的行為。
元處理器1002的一實施方式可具有複數群組的元命令,如第11圖所示:
(1)GPU內文管理元命令
(2)GPU遠端和同儕同步元命令
(3)GPU區域同步和管理元命令
第11圖顯示本發明一實施例用以達成同步和內文管理之GPU元命令的方塊圖,其可執行於與第10圖類似的結構中。第一群組的元命令包括一內文狀態管理子群組1130,具有以下的元命令:(1)改變所選擇之內文的狀態(2)載入並開始新的內文(3)切換至所選擇的內文(4)懸置和/或釋放所選擇的內文(5)改變所選擇之內文的優先順序。另一子群組可包括內文時間片段(time slice)控制管理元命令1132,其可將內文管理中使用的一或多個計時器設定或重置。內文述詞管理子群組1134可依照區域和同儕的GPU內文述詞來操作,並且定義述詞的一些邏輯運算。
第二群組可包含處理程序/內文同步元命令1136。乍看之下,這些元命令與第7圖的CPU同步基元很類似,但在至少一實施例中,在GPU元命令層級這些基元在實施方式、行為和意義上是有些不同的。元互斥(meta-mutex)定義對選擇之內文/執行列表的互斥存取。CPU和/或GPU可鎖定特定的GPU內文以進行進一步的管理,並且於至少一非限定的實施例中,沒有其他的CPU和/或GPU可操作該鎖定的內文。在這個CPU和/或GPU解鎖之後,其他的參與者可存取該內文並且發送元命令。本發明提供一具有識別代號(CPU的處理程序或具有內文號碼的GPU識別)的特殊內文鎖定暫存器以支援類似的元命令。
條件等待元命令在較低的命令串流層級可類似於述詞的命令執行。不同的是忽略命令的方式,等待元命令在條件不成立的時候把內文的狀態變更為”懸置”。若條件成立則將內文狀態變更為”就緒”。當元處理器在條件成立的情況下起始一立即內文切換至一選定的執行緒時,這類命令的變形可包括條件起始(condition start)。該條件可由述詞的結合,並使用元命令處理器之內文暫存器方塊內的條件架構暫存器而產生,但不限於此。
如果另一參與者改變封鎖的條件,則條件信號元命令可釋放特定的懸置內文。該元命令包括兩個基本部分:述詞改變部分和信號部分(其將內文的狀態改變至就緒)。在執行開始之前,該內文會再次檢查該條件。條件廣播與該信號類似,其指向執行列表中所有的內文或所有的執行列表。
在基於時間片段計數器的管理方式中,旗號P和旗號V是可以軟體事件長時間管理內文執行的元命令。CPU和GPU兩者皆可將這些元命令傳送至內文,並且管理內文的執行和/或懸置。在操作中,這些旗號與第7圖類似,旗號的對象就是目前正在執行或懸置的內文。
屏障元命令可保持內文的執行,直到等待圍籬(wait-fence)的金鑰(key)匹配。具有成對之等待圍籬暫存器的屏障同步暫存器方塊可以是內文暫存器方塊的一部分且/或可實現於記憶體單元內。如果該元命令正在執行的話,通知和警示元命令可改變內文的狀態而不需要中斷內文的執行。這些命令的動作與第7圖中的原始基元很類似。設定和/或重置選定之述詞元命令也可屬於這個群組。
區域內文同步和管理元命令1138可被GPU管線區塊和電路中的事件所起始。屏障事件的管線延滯動作可回報給元處理器,且該事件可起始內文懸置於自旋等待(spinning wait)上,並切換至另一個內文。依此結果,內文的優先順序也可被改變。選定之區域事件可改變述詞,而述詞的改變可起始條件信號元命令。基於時間片段的目前內文執行控制可用來定義特定內文的最大執行時間。當此計時器終止之後,該內文可切換至另一計時器。基於時間片段的同步命令也可用來定義同步事件之間的最大時間,以避免GPU停滯於自旋等待或其他的事件之上。
若下個等待的內文在開始執行之前檢查選定之述詞的話,述詞內文切換元命令可允許述詞的內文切換。下面的表格顯示元命令處理器的非限定元命令範例:
另一種的元命令分類可根據編碼機制和表示方式。
GPU元處理器的元命令主要可分為兩類。第一類是顯性元命令,包括具有位址和修改旗標的運算碼和編碼動作。這個元命令代符可插入GPU命令串流中,並且/或透過週邊組件互連延伸介面以訊息的方式傳送。第二類是隱性元命令,其可由內文相關的暫存器之更新和/或信號設定述詞和/或條件所起始。在這個例子中,元命令的動作細節可由元處理器內容暫存器的內容來定義。以下就是可插入GPU輸入命令串流中的元命令代符的範例。
0Bh執行列表更新
此命令可由匯流排介面單元的命令串流接收,該命令可發生於直接記憶體存取和/或RB串流發出”非法命令碼”的事件。
位元1 奇/偶
0=更新偶數執行列表
1=更新奇數執行列表
位元2 動作
0=更新(利用設定暫存器命令)
1=更新和開始執行列表
(如果專屬直接記憶體存取還在執行中,且關閉內文切換的功能為開啟,則可等到直接記憶體存取的命令完成之後才切換執行列表)。
位元24-25接續的四位元組(接續之四位元組的數目)(=接續之四位元組+1)
執行列表更新可從內文0開始,然後是內文1、內文2和內文3。這個欄位可指定該命令之後內文位址的數目。
位元1 致能
0=內文中斷失能,中斷並不會在這個命令之後致能
1=內文中斷致能,此後任何的命令可被中斷
位元24-25接續的四位元組(接續之四位元組的數目)
隱性元命令可包括下列的非限定實施例:
1)懸置內文於自旋等待上,其可在管線停止動作於自旋等待時被觸發。當這個命令內部觸發時的情況可包括:
a.從該串流擷取的顯性等待命令正執行於其中一個管線區塊內。
b.當GPU管線停止動作的時間超過特定監控計時器設定的時間或等待代符的循環時間時,於自旋等待所導致的等待命令的嘗試執行。該類的隱性命令可將目前內文的狀態改變為懸置的狀態,並且以超前於引起該事件之等待命令的內文頭端指標值來起始目前內文的儲存程序。
1)基於時間片段的內文切換可被內文時間片段計時器的終止所觸發,而之後的動作與前述的命令類似。
2)述詞內文的切換可被選定述詞值的改變所觸發。該述詞可用計時器來定期檢查,或於述詞暫存器更新後立刻檢查。其之後的動作與前述的命令類似。
第12圖顯示本發明之元處理器邏輯單元中兩種元命令的處理流程。顯性元命令可從週邊組件互連延伸和/或命令串流接收,並且可表示為一代符的格式,其包括運算碼、修改旗標、動作編碼描述符以及位址,如果有任何對記憶體空間的寫入動作快要完成的話。該元命令(於大部分的CPU中被直接解碼)從命令代符和內文狀態暫存器讀取所需的資料。在某些情況中,元命令的動作可藉著參照包括動作描述之特定元處理器控制暫存器來編碼。在讀取資料之後,該元命令可以被執行並連帶更新指定之內文狀態,以及應用至目前和/或指定之內文的一些控制動作。
隱性元命令係由GPU管線區塊中內文相關的暫存器更新(包括述詞)和信號或事件所起始。特殊的邏輯單元用來偵測暫存器的更新、管線事件和/或信號。根據信號的類型,邏輯單元可傳送請求至元處理器控制暫存器,其可包括類似於顯性元命令代符中編碼動作欄位的編碼動作。該動作描述符和內文狀態資訊可回歸至元命令執行邏輯單元,其可將此資訊用於元命令的執行和/或內文狀態更新中。
第12圖顯示本發明之GPU中元命令處理的資料流程,其與第12圖的GPU元處理器很類似。GPU元命令1232
可存在於多種形式中,例如顯性元命令1234和/或隱性元命令1250,如第12圖。顯性元命令1234可視為具有運算碼1236的代符。運算碼1236、修改旗標1238和引數可包括資料值1240和/或位址資訊1242,其可傳送至直接解碼1244以進行執行1246。類似的代符可藉由週邊組件互連延伸訊息介面所接收,或從GPU命令串流接收。隱性類型的元命令1250不需要代符格式,並且可視為對應於事件之狀態機動作的形式。該事件可為一信號、訊息或某些內文方塊暫存器的更新。
適當的狀態機可於1252、1254兩種情況中觸發,並且可在從內文描述符和控制暫存器1248以及從元處理器控制暫存器1260讀取資料(1256)後可執行元命令。隨著元命令的執行結果1246和1258,可更新選定的或目前的(預設)內文,以及可改變內文的執行。元命令執行1246和1258可傳送內文狀態更新至內文描述和控制暫存器。
第13圖顯示本發明之元命令執行資料讀取的一非限定實施例。顯性元命令解碼器1346可從命令代符提供元命令動作程式碼,該命令代符選擇一內文狀態以供元命令執行邏輯單元1344的元命令執行。如果在執行之前有一或多個條件被選定為需要檢查的話,顯性元命令的執行可以是條件性的。無條件性的執行直接使用命令代符資料,並且/或參照元命令動作暫存器以讀取動作程式碼。
隱性元命令解碼器1348可包括事件偵測器1354和/或信號偵測器1356以偵測暫存器的更新和GPU信號。特殊事件映射1350和信號映射邏輯單元1352可用來選擇可映
射事件和/或信號的條件,或著是定義於元命令動作暫存器內的直接無條件動作。條件的提供是藉由將事件和/或信號映射至特定的述詞,其形成稍後於動作選擇中使用的最終條件,如果該條件變為成立的話。每一條件可映射至其中一個動作暫存器。在一些情況中,像是一般的GPU錯誤和/或一些其他的硬體事件,元命令的動作可以是無條件性的,且動作暫存器的直接選擇是有需要的。條件性和無條件性的隱性元命令處理可提供GPU元處理器彈性。
另外,內文描述暫存器方塊1332可包括複數個內文狀態和描述暫存器1334,其可接收內文選擇信號和內文狀態更新信號,並且提供內文狀態給元命令執行邏輯單元1344。元處理器控制暫存器方塊1336可包括複數個述詞和條件設定暫存器1338,其可用來接收述詞選擇和條件信號,並且提供最終條件信號給元命令執行邏輯單元1344和條件映射元件1342。條件映射元件1342可傳送條件動作暫存器選擇信號至元命令動作暫存器1340,元命令動作暫存器1340可也從元命令執行邏輯單元1344接收無條件動作暫存器選擇信號,並且傳送元命令動作程式碼至元命令執行邏輯單元1344。
第14A圖顯示本發明所述之顯性和隱性元命令之執行序列的流程圖。第14A圖顯示顯性和隱性元命令的處理程序中可解碼和讀取資料的動作序列之一個範例。在方塊1432偵測到顯性元命令(1434)的情況中,可檢查動作編碼(1438)。在直接的動作編碼中,如果該動作是無條件式的動作,則可解碼代符欄位並且將代符欄位直接傳送至執行
邏輯單元(1464)。另一方面,如果該動作是條件式的,則可傳送該動作至最終條件檢查(1445)。如果最終條件是不成立的情形,則設定警示旗標且程式碼設為不執行(1456)。如果最終條件是成立的情形,可傳送該動作至方塊1464以執行元命令並且更新受影響之內文的狀態。
在方塊1438間接的動作編碼情況中,動作程式碼可於方塊1446中從元命令控制動作暫存器讀取。在無條件命令的情況中,該程式碼可傳送至執行邏輯單元1464。在條件式命令的情況中,程式碼被傳送至最終條件檢查方塊1445。若最終條件成立的話,則該資料可傳送至方塊1464。若最終條件不成立的話,則該資料可傳送至方塊1456以設定受影響之內文的警示,該內文接著回到方塊1432偵測新的元命令。
當一或多個內文和/或控制暫存器被更新,以及/或區域事件/信號被產生的時候,會有多種類型的隱性元命令(方塊1436)。在暫存器更新的情況中,與該暫存器相關的事件類型可於方塊1440中偵測。如果該事件的類型為條件式事件,則可設定適當的述詞且於方塊1448檢查最終條件。如果最終條件成立的話,則可於方塊1458使用條件映射從動作暫存器讀取動作模式,並接著傳送至方塊1464執行。在方塊1448中,如果條件不成立的話,則僅設定警示旗標和程式碼,並且於方塊1432偵測新的元命令。如果在方塊1440中偵測到無條件式動作,則在方塊1460使用事件映射(表)執行動作暫存器之動作程式碼的讀取。
當在方塊1436中偵測到一區域信號時,該信號可於方
塊1442中被引導至相關的述詞。若該信號是條件式的,則可於方塊1450中以相關的信號設定該述詞。在方塊1452中可檢查最終條件。如果條件不成立的話,則設定受影響之內文的警示旗標。如果條件成立的話,則使用條件映射讀取動作碼(方塊1462),並且可於方塊1464中執行元命令。如果條件不成立的話,則可設定警示旗標和程式碼。所讀取的動作程式碼可傳送至邏輯單元執行。如果不論任何原因使得元命令的執行失敗的話,則也可設定警示旗標和程式碼,如方塊1466所示。
為了支持內文管理機制,GPU元命令處理器可具有內文描述符和可為遠端CPU、同儕CPU和區域耦接或可程式之排程器所存取的控制暫存器方塊。第15圖繪示多重內文環境中支援複數個GPU之方塊的功能。內文描述符和控制暫存器方塊的數目可與內文允許的最大數目相符。
第14B圖顯示本發明一實施例之執行邏輯單元的方塊圖。更具體地說,元命令執行邏輯單元1344可包括複數個主要方塊。元命令執行邏輯單元1344可包括一內文狀態、事件和條件監控器單元1467和一區域排程器邏輯單元1469。區域排程器邏輯單元1469包含一事件和要求處理邏輯單元1471和一內文管理邏輯單元1473。元命令執行邏輯單元1344亦包括一內文同步控制單元1475和一計時器管理邏輯單元1477。
第15圖顯示本發明可結合至元處理器中至少一執行列表之內文暫存器的範例方塊圖,本實施例的內文列表與第6圖的執行列表很類似。更具體地說,第15圖包括兩組的
暫存器:內文描述和控制暫存器方塊,以及命令串流擷取暫存器方塊。第一群組可包括具有內文致能旗標1536和內文金鑰1534的內文鎖定暫存器1532。該暫存器提供內文暫存器方塊對於由不同媒介(agent)所接收之命令的感測性(sensitivity),如第16圖所詳述。
內文狀態暫存器1548可包括少數欄位,用以描述內文之穩定狀態(stable statue)1538和中間狀態(intermediate status)1540,以及懸置理由碼1542。警示狀態和程式碼1544可用以定義於開始恢復和執行此內文之前檢查條件和/或旗號的必要性。內文優先等級1546可定義內文的優先順序,其可用於內文的執行排程中。優先順序可區域和/或由遠端所改變。
內文感測條件架構暫存器1550可用來定義條件1552a、1552b、1552c和1552d,其可影響內文的狀態。暫存器1550可包括對元處理器控制暫存器集合中條件的參考。這些元處理器控制暫存器可用來定義述詞選擇以形成條件碼(方塊1552)、選擇事件(方塊1554)、定義述詞值(方塊1556)、定義述詞信號、選擇述詞(方塊1560)、定義邏輯運算(方塊1562)、定義條件旗標(方塊1564),以及與該內文相關的動作控制暫存器(方塊1566)。述詞信號暫存器(方塊1558)可用來定義對區域排程器的信號發送。述詞更新事件可立刻發信號至區域排程器,或著不發送信號至排程器而是透過時間輪詢(polling)情況發現述詞改變。
這些述詞之中至少一者會是事件,選擇暫存器可用來
定義內部和/或外部事件的影響述詞值。述詞信號發送暫存器1558可用來定義至區域排程器的信號發送。述詞更新事件可發送至區域排程器,或著不發送信號至排程器而排程器則是透過對條件的時間輪詢來發現述詞的改變。述詞選擇遮罩1560選擇一個述詞群組,用以定義這些條件的邏輯運算。述詞邏輯操作1562可用來定義多重述詞位元上該類型的邏輯運算以產生最終的條件值。
內文計時器選擇暫存器1568可包括計時器1570a和1570b,且對於那些位於元處理器控制暫存器方塊中的計數器,亦可包括對於選擇之時間-事件計數器1572-1572m和事件選擇器1574-1574m的參考。元處理器控制暫存器可包括一或多個計數器,其可根據耦合的事件選擇器暫存器用於不同的目的,且特定的內文可透過內文計時器選擇暫存器參考使用這些計數器。如非限定的實施例,計時器1570可計算執行時間片段、等待時間片段、述詞檢查的時間片段等。其中的某些計數器可用來計算軟體事件,且可用於內文執行的簡單同步。
旗號選擇暫存器1580可用於旗號類型的同步以及內文的懸置和喚醒。旗號選擇暫存器1580可包含對於元處理器控制暫存器集合中一或多個旗號暫存器1582的參考值以及耦合之旗號值暫存器1584和等待列表計數器1586,其可包括該旗號的許多內文等待。
內文監控位址暫存器1588、1590、1592和1594可用來定義由內文所監控的位址,並且產生監控事件信號給區域排程器,其中監控的功能也可以關閉。相似地,內文描
述符可包括屏障同步暫存器方塊1595,其將被界限/等待同步命令所使用。屏障同步暫存器方塊1595可視為元處理器的邏輯部分,然而實際上,屏障同步暫存器方塊1595可實現於其他方塊中,像是匯流排介面單元或記憶體存取單元。區域事件歷史緩衝器1596可為一或多個內文所共用,並且可包含一個序列的最近事件碼,其包括GPU中每一內文的懸置和警示碼。這個資訊對於內文執行的除錯和排程是有用的。
命令串流擷取暫存器可用來支援對記憶體中內文資料的存取。直接記憶體存取緩衝器的頭端指標1597可用以擷取內文的位址,而直接記憶體存取緩衝器的尾端指標1598可用於傳送命令串流尾端的位址。在至少一架構中,如果所允許之內文總數為16,則這些內文可分為各具有8個內文的兩組執行列表,或各具有4個內文的四組執行列表。若要將內文分為非偶數的群組也是可以的。
第16圖顯示本發明一實施例的內文鎖定暫存器和內文狀態暫存器。內文鎖定可用來定義內文對外部和內部媒介動作的感測性。內文鎖定可包括具有媒介類型欄位和媒介識別欄位的內文金鑰暫存器1632,以及內文致能/失能旗標暫存器1634。媒介類型可包括任何媒介、區域排程器、任何外部媒介、具有媒介識別之選擇的外部處理程序、任何同儕GPU、所選定之具有媒介識別的同儕GPU,以及上述形式的結合。媒介類型欄位可用遮罩的方式實現。媒介識別欄位可包括CPU數目和處理識別,以及同儕數目和內文識別,視所定義的媒介類型而定。
內文優先欄位1636可用來定義內文優先層級(舉例來說,從0至15),並且可被媒介類型欄位內所定義的媒介和區域排程器所改變。內文狀態有四個主要的穩定階段:執行中階段1638、空缺階段1642、就緒階段1644和懸置階段1640。中間階段有兩個:懸置儲存階段1646和懸置回復階段(restore)1648,其可用以顯示內文狀態的載入和儲存的處理過程。第17圖顯示內文狀態的轉換圖。
執行中狀態1638顯示該內文目前正於GPU管線執行中。當頭端指標到達尾端,且串流中沒有其他的命令要處理時,此狀態可被改變。另一導致內文懸置的理由是基於設定懸置碼的內部或外步事件。
空缺狀態1642可用來顯示該內文並無任務執行,並且可藉著載入新的內文於相關的內文暫存器方塊來刪除。如果CPU更新尾端指標,則該內文可回到就緒狀態1644且隨時可重新起始。空缺狀態1642的內文可使得該內文被自動切離並儲存該狀態於記憶體中。此後該內文狀態將改變至懸置狀態1640。
就緒狀態1644顯示該內文可被區域排程器根據優先順序或內文切換程序的順序而隨時起始。該內文可於重新起始之前檢查狀態暫存器中的條件是否為警示狀態。如果同步條件不成立的話則其回到懸置狀態1640。
懸置狀態1640可用來顯示該內文正在等待某些條件變成就緒以便開始執行。因內部事件或外部訊息所造成的條件滿足可將該內文釋放至就緒狀態1644。
懸置儲存1646和懸置恢復1648係介於執行狀態1638
和懸置狀態1640之間的暫時狀態。這些狀態可用於任何對記憶體映射暫存器之存取的情況中,這些暫存器可能位於記憶體(內文懸置)或於GPU中(內文執行中)。
回到第16圖所顯示的警示狀態和程式碼暫存器。任何未處理的事件會增加警示旗標(或計算多重警示的計數器)1650的值,這類的事件可能發生於當內文在事件的時間點被懸置的時候。警示計數器1650和警示碼1652皆被複製到本地事件歷史緩衝器1656以追蹤內文的活動。警示的實施例可包括:
00-旗號事件警示
01-監控警示
02-金鑰不匹配
03-顯性執行失敗
04-隱性執行失敗
XX-其他理由
如果內文於執行中被懸置,懸置碼會被寫入至暫存器並複製至本地事件歷史緩衝器。懸置碼1652可包括以下的懸置原因:
00-藉由本地排程器
01-藉由外部媒介
02-藉由時間片段控制
03-藉由條件
04-藉由同步基元(旗號)
05-空缺
06-尋頁錯失(page fault)
07-一般保護錯誤
08-新執行列表起始
09-內部等待和V同步
第17圖顯示本發明中將事件和元命令,例如第11圖的元命令,應用至狀態管理機之內文狀態轉換的一個實施例。在至少一架構中,有四個主要穩定階段的內文狀態:執行中狀態1732、空缺狀態1734、就緒狀態1736和懸置狀態1738。中間階段有兩個:懸置儲存階段1740和懸置恢復階段1742,其可用以顯示內文狀態的載入和儲存的過程。執行中狀態1732顯示一內文正於GPU的管線中執行。當頭端指標到達尾端且串流中沒有其他的命令要處理時,此狀態可被改變。另一理由可能是內文懸置1738是基於事件之上,這將會設定懸置碼。空缺狀態1734顯示該內文並無任務執行,並且可藉著載入新的內文於相關的內文暫存器方塊來刪除。如果CPU更新尾端指標,則該內文可回到就緒狀態1736且隨時可重新起始。空缺的內文可使得該內文被自動切離並儲存其狀態於記憶體中。當此狀況發生之後,該內文狀態將改變至懸置狀態。
就緒狀態1736表示該內文可被區域排程器根據優先順序或內文切換程序的順序而隨時起始。該內文可於重新起始之前檢查狀態暫存器中的條件是否為警示狀態1744。如果同步條件不成立的話,則此內文回到懸置狀態1738。懸置狀態1738表示該內文正在等待某些條件就緒以便開始執行。由於內部事件或外部訊息所造成的條件滿足可將該內文釋放至就緒狀態1736。懸置儲存1740和懸置恢復1742
是介於執行中狀態1732和懸置狀態1738之間的暫時中間狀態。這些狀態可用於任何對記憶體映射暫存器作存取的情況中,這些暫存器可位於記憶體以及/或於GPU中。
第18圖顯示本發明一實施例之元處理器中執行元命令處理的狀態機。元命令和事件偵測迴路節點1832可用來監控外部要求的狀態和內部的事件/信號。元命令和事件偵測迴路節點1832可用來偵測來自外部CPU、同儕GPU的寫入存取,或偵測從目前所解析之命令串流或從週邊組件互連延伸(PCI-X)訊息介面所接收的元命令,以及偵測邏輯信號和/或事件。特殊內文數目編碼邏輯單元將元命令執行邏輯單元指向受該元命令影響的內文。接著檢查內文鎖定1834,如果金鑰不匹配,則應設定該內文的警示旗標和程式碼而不需要更近一步的動作(1838)。如果金鑰匹配,則可將元命令完全解碼並包含多個針對顯性外部元命令、區域事件/信號隱性元命令和隱性外部元命令的個別路徑(1836)。
根據類型的不同,外部元命令可包括計時器管理邏輯單元和/或內文同步邏輯單元。如果存在外部元命令,則可解碼該外部元命令(1840)。此外,可修改述詞和/或條件(1842)。接著外部元命令可被內文狀態及條件監控器1844協同區域排程器及內文管理邏輯單元1850所處理。該狀態機可回到元命令和事件偵測迴路1832(1856)。
在狀態1840,如果偵測到計時器/模式設定元命令,則狀態機可於計時器管理控制邏輯單元中處理資料(1854)。如果計時器計數終止的話,狀態機可繼續進行至1850。同
樣地,若在狀態1840中偵測到同步元命令,則可於內文同步控制邏輯單元中進行處理(圓1852)。
從狀態1836,區域事件或信號啟動內文狀態和條件監控器(1844),其將會檢查遮罩。若由事件/信號所引起的條件被遮罩,則區域事件可設定警示旗標和程式碼而不需更進一步的動作(1846)。如果該事件未被遮罩或引起條件外的動作,則監控器可要求區域排程器根據映射至該事件的元命令動作暫存器來處理該事件(1850)。若不論任何原因動作失敗,區域排程器會設定該內文的警示旗標和程式碼(1846)。如果區域事件引起同步事件,則該事件可為內文同步邏輯單元所處理。隱性元命令可引起述詞/條件的修改、內文狀態的改變或同步元命令的執行,視所記憶體映像輸入/輸出暫存器的更新而定(1848)。上述所有將由適當的邏輯單元所處理。
第19圖顯示本發明一實施例之區域排程器的內文管理狀態機。在狀態1938中,區域排程器內文管理狀態機接收”起始新內文”的元命令,其藉由界定直接記憶體存取的頭端指標來定義欲起始的內文以擷取內文命令和狀態串流的方式。目前的內文可被中斷和儲存(1934)。被儲存之內文的狀態可設定成就緒狀態(1974),這是因為被儲存之內文可隨時重新起始。內文暫存器集合的空位置可分配給這個新的內文(1972),且內文的執行可藉著將狀態設定為執行中狀態來起始(1966)。
在狀態1938中,若元命令需要切換至另一內文(預設或選定),如果該定義並未明顯地定義於元命令之中的話,
則內文的定義可從動作暫存器讀取(1936)。在狀態1938中,如果任何元命令需要改變內文狀態或優先順序,則外部命令可直接改變選擇之內文的狀態。引起狀態或優先順序改變的內部事件可使用區域排程器從相關的動作暫存器選擇內文的動作,動作暫存器可映射至特定的事件。如果命令是要致能或失能特定的內文,則狀態機前進至狀態1944。從狀態1944,如果該內文正在執行中且為致能狀態,則中斷和儲存(1958)該內文,並且將該內文設定至失能狀態(1960)。如果該內文為致能但非啟動狀態,則該內文僅設定成失能狀態(1960)。如果該內文為失能,則執行可將內文致能的致能命令以進行後續執行排程(1962)。
若在狀態1940顯示狀態改變,則判斷內文狀態改變的來源(1946)和其是否為外部命令或內部命令。如果是外部命令,則設定所選擇之內文狀態(1954)。如果不是(亦即為內部命令),則執行區域排程器的動作,如第20A圖(1956)。
若在狀態1940顯示優先順序改變,則判斷內文優先順序改變的來源(1948)。如果是外部命令,則設定所選擇之內文優先順序的改變(1952)。如果是內部改變,則執行區域排程器的動作(1956)。
若在狀態1940顯示釋放的訊息,則可設定內文為就緒狀態(1950)。若顯示懸置的訊息,則可檢查內文狀態(1970)。如果內文正在執行中,則狀態機可中斷並儲存目前的內文(1968),開始且設定新內文的執行(1966),以及設定懸置和懸置碼(1954)。如果內文為非作用狀態,
狀態機可設定懸置和懸置碼(1954)。
第20A圖顯示本發明一實施例中對應至第19圖之內文管理狀態機之請求的區域排程器動作簡略流程圖。在接收內文管理要求後,狀態機可架構內文的述詞、邏輯運算、條件等(2032)。在述詞、條件和動作暫存器的基本架構加上相互映射的步驟之後,區域排程器可選擇述詞的事件並且設定”更新信號發送”的選項(2034)。區域排程器可架構並映射動作暫存器至條件和無條件事件(2036)。區域排程器接著偵測述詞改變信號和/或區域排程器要求(2038)。區域排程器可重複偵測其他邏輯方塊的事件和要求。若偵測到述詞改變信號和/或要求,則狀態機檢查相關的最終條件(2040)。若條件為真或信號/要求為無條件的,則狀態機要求區域排程器執行由映射之動作暫存器所定義的動作、重設述詞和條件(2044)並且回到主迴圈(2038)。在狀態2040中,如果信號/要求為遮罩狀態,則狀態機設定警示旗標和程式碼(2046)並且回到主迴圈(2038)。
第20B圖詳細說明本發明一實施例之隱性元命令的定義和執行。複數的GPU事件和信號可觸發執行邏輯單元之區域排程器中條件式或無條件元命令的執行。引起元處理器之條件動作的信號/事件群組可映射(可程式或固定的)至述詞旗標(方塊2052,2054)。第20B圖中所述的該類映射可具有一對一的對應關係,其中每一信號映射至一個述詞暫存器旗標。一或多個述詞可映射至最終條件旗標(方塊2056,2058),述詞之間的邏輯運算可用於定義元命令
執行的最終條件。該條件也可被遮罩而任何述詞的改變就不會起始隱性元命令的執行。為了定義條件式元命令的動作,每一條件旗標可具有對一或多個元處理器動作控制暫存器的映射(方塊2060,2066)。多個條件可映射至相同的動作控制暫存器。映射邏輯單元產生動作暫存器選擇,且該暫存器的動作碼被傳送至GPU區域排程器和元命令執行邏輯單元以供執行。
在某些情況,隱性元命令可為無條件式的,視事件(暫存器的更新)的類型和GPU管線單元信號而定。該些事件/信號也可具有對一或多個動作控制暫存器的映射。這類的映射與一般GPU中不可遮罩的中斷很類似,並且可為固定的或可程式化的。映射邏輯單元會起始動作暫存器選擇和隱性元命令的後續執行(方塊2068)。同樣地,事件映射(方塊2064)和信號映射方塊(方塊2062)也可傳送至暫存器集合(方塊2066)和執行邏輯單元(方塊2068)。
第21圖顯示本發明一非限定實施例之條件式隱性元命令的動作定義資料流,與第20B圖的非限定實施例很類似。事件/信號選擇器(方塊2132)對於每一述詞旗標皆具有一模組,其可選擇要導向述詞旗標暫存器之輸入的特定事件信號。一般來說,對於每一述詞旗標,是可以全選或只選單一的事件信號,然而基於實際的理由,熟悉此技藝之人士可藉由將述詞和信號(事件)分組來限制選擇的範圍。述詞旗標暫存器(方塊2134)也可透過顯性元命令或外部記憶體映像輸入/輸出的寫入由外部設定或重置。如果述詞值被改變,可傳送更新信號至狀態和條件監控器。另
外,述詞選擇器(方塊2136)可用來架構述詞,且述詞邏輯運算選擇器(方塊2138)可選擇述詞的邏輯運算。
條件和/或最終條件旗標值可由單一選定的述詞或述詞群組所形成,其中述詞群組為多個述詞之間的邏輯運算結合而成。邏輯運算的標準集合可應用至選定的述詞,或單一述詞值可不變地傳送至條件旗標暫存器。該類運算的結果形成條件旗標值,當程式設計師欲將由該條件旗標所起始的隱性元命令失能時,該條件可被遮罩(方塊2140)。對於每一條件旗標而言,皆有一個動作暫存器選擇器(方塊2142),其包括動作暫存器數目,用以定義當條件為真時所要執行之元運算。
第22圖顯示本發明一實施例之元處理器控制暫存器集合中的相關暫存器,其支援述詞和條件架構,以及條件至動作控制暫存器的映射。述詞輸入事件架構暫存器(方塊2232)可包括每一述詞的控制欄位,其中定義了管理該述詞(方塊2234)之信號的選擇。如非限定實施例,述詞輸入事件架構暫存器可包括下列的非限定選擇:
00-藉由外部媒介的顯性設定/重置
01-對內文記憶體空間的外部寫入
02-對同步暫存器方塊的外部寫入
03-對同步暫存器方塊的內部寫入
04-執行時間終止
05-旗號事件
06-內部等待時間終止
07-監控事件
08-CPU中斷事件
XX-其他事件
當使用遮罩(方塊2236)和多重信號定義選擇方式時的另一種實施方式可以修改述詞。述詞暫存器包括多個述詞旗標欄位,這些述詞旗標可藉由選定的事件或外部來設定,並且可透過區域排程器或外部來重置。切換至成真(True)狀態的信號可發送至區域排程器以處理該條件起始的元命令。條件架構暫存器包括了述詞選擇遮罩(方塊2236)以便使用相關之邏輯運算暫存器內所定義的邏輯運算來形成最終條件(方塊2240)。以下的邏輯運算可用選擇之述詞值來實現以形成條件:0-保留的、1-不動作、2-和、3-或、4-互斥或,以及5-否(單一元素的)。
依此結果,可根據映射之述詞值和其間的邏輯運算來設定最終條件旗標。每一最終條件旗標可被遮罩且成真條件可不起始該元運算,但可將已接收基於事件之條件元命令的內文暫存器集合中的警示旗標和程式碼做設定。最終條件暫存器內的每一個最終條件旗標是與條件動作選擇暫存器相關,其中動作暫存器的數目已經定義(方塊2242)。最後,可以使用這個機制來產生元命令動作的請求,並且提供適當暫存器中動作描述的參考。
第23圖顯示本發明一實施例之內文狀態、事件和條件監控器狀態機。該狀態機係參照第18圖中的狀態機,並且較為詳細地描述了監控器的活動。第23圖的狀態機在偵測信號、事件和要求的迴圈中重複執行(2332)。第23圖的狀態機處理述詞更新信號和事件、基於計時器的述詞和條
件檢查、區域排程器請求、空缺狀態查詢命令、執行列表查詢命令和無條件事件或信號。
更具體地說,在狀態2332中若偵測到述詞更新信號或事件,偵測條件會被影響(2334),則狀態機可檢查條件值(2336)。如果條件不成立,則狀態機回到狀態2332。另一方面,如果條件成立則檢查條件遮罩(2338)。若該條件為遮罩狀態,則狀態機可設定警示旗標和警示碼(2340)。若條件為非遮罩狀態,則狀態機可根據映射之動作暫存器來請求區域排程器的動作(2342)。述詞和條件可被重置(2344),且若其為多重條件迴路則狀態機可回到狀態2336。
在狀態2332中,若述詞/條件檢查計時器已經終止或區域排程器要求檢查述詞,則狀態機可偵測更新的述詞(2346)。接著狀態機偵測受影響的條件(2348)。然後狀態機進行至狀態2336檢查條件值,如上所述。
在狀態2332中,若偵測到空缺狀態查詢,則狀態機偵測目前執行列表內文的空缺狀態(2350)。若內文是空的,則可將該內文加入空缺列表(2354)。如果所有的內文和執行列表都處理過了,則狀態機可傳送查詢報告至記憶體並傳送中斷給CPU(2356)。如果所有的內文和執行列表尚未處理,則狀態機回到狀態2350。
在狀態2332中,若偵測到查詢執行列表的狀態,狀態機可將內文狀態暫存器的內容複製到緩衝器(2358)。對於多重內文迴路,該動作可重複執行。若所有的內文狀態都複製完成,則狀態機可將緩衝器寫入記憶體並中斷/警示
CPU(2360)。回到狀態2332,若偵測到無條件事件或信號,則狀態機可根據映射之動作暫存器來請求區域排程器的動作(2362)。
第24圖顯示本發明一實施例中映射至一條件的元處理器控制暫存器,該條件可由元處理器控制暫存器集合中的輸入事件架構暫存器和條件架構暫存器來定義(輸入事件架構暫存器如方塊2432a和2432b所示,但可包括任何數目的暫存器,如方塊間複數的點所示)。每一述詞(方塊2432a和2432b)可與信號或事件有關,且可選擇(方塊2436)來產生邏輯運算的運算元(方塊2438),邏輯運算的結果可設定為一條件(方塊2440),其映射(方塊2442)至其中一個動作控制暫存器。動作控制暫存器(方塊2444)可具有主要的欄位,用以描述透過條件或無條件事件(映射至該動作暫存器)產生一要求的情況下所要採取的動作。一範例性的動作列表(方塊2444)可包括下列的動作,其可單獨實行或互相結合實行。
0-懸置目前的內文且允許區域排程器開始新的內文
1-懸置目前的內文並開始預設的內文
2-懸置目前的內文並開始選定的內文
3-選定之內文的條件釋放
4-選定之內文的條件懸置
5-增加內文的優先等級
6-降低內文的優先等級
7-查詢選定之內文狀態
8-中斷/警示遠端CPU
9-中斷/警示遠端GPU
XX-其他原因
互斥動作的編碼類型可使用列舉(enumeration)方式,而對於可互相結合之動作的編碼類型則使用位元遮罩(bit masks)。
動作暫存器的其他欄位用以描述動作的細節,並且提供所需的參數。其中一者是預設內文定義(方塊2446),其描述於切換至動作控制的主要欄位中預設之內文的情況下的動作。其可包括:
0-重新開始該內文
1-於目前執行列表中下一個就緒
2-目前執行列表中最高優先順序
3-下個執行列表中第一者就緒
4-下個執行列表中最高優先順序
選定內文定義欄位(方塊2448)的目的與預設內文定義很類似,並且可切換至多個內文類型的非限定選擇,這些內文包括:
00-由選定內文識別暫存器所定義之執行列表中的內文#
01-由區域排程器所懸置
02-由外部媒介所懸置
03-由時間片段控制所懸置
04-由條件所懸置
05-由同步基元(屏障,旗號)所懸置
06-懸置為空缺狀態
07-懸置於尋頁錯失之上
08-懸置於一般保護錯誤之上
09-懸置於新執行列表的開始之上
10-懸置於等待之上(內部等待,V同步)
選定內文定義可以是藉由使用遮罩所編碼的多重選擇,且區域排程器將利用優先順序選擇內文。選定內文識別暫存器(方塊2450)包括欲切換之內文的顯性識別。該識別可包括執行列表數目和內文數目。遠端GPU(方塊2452)和遠端CPU識別暫存器欄位(方塊2454)定義GPU/CPU的識別符以傳送中斷/警示訊息和內文/處理識別符,以便通知元處理器所採取之相關動作。
第25圖顯示本發明一實施例中當接收信號和要求時區域排程器活動的狀態圖。更具體地說,在狀態2534中區域排程器的要求可被輪詢。如果偵測到區域事件/信號要求,用於此事件之暫存器中的動作會被偵測到(2532)。如果該事件是優先順序的改變,則可增加或降低內文的優先順序(2570)。如果該動作是中斷/警示,則狀態機傳送中斷/警示訊息給選定的CPU和/或GPU。在狀態2532中,若偵測到的動作是釋放或懸置,則狀態機可將選定之內文的狀態改變成就緒或懸置狀態(2564)。接著傳送信號至狀態和條件監控邏輯單元(2566)。
在狀態2532中,如果偵測到的動作是懸置目前內文,則狀態機可中斷並儲存目前內文(2554)。如果該內文是選定內文,則狀態機可從動作暫存器讀取該選定內文的定義(2556)。接著狀態機可檢查內文的狀態(2558)。若
該內文尚未就緒,則可發送警示訊息至全域排程器(2560)。另一方面,若內文為就緒狀態,則可開始該已定義的內文(2552)。在狀態2554中,若選擇了預設內文,則狀態機可從動作暫存器獲取預設內文定義(2562)。接著狀態機可進行至狀態2558,如上所述。
在狀態2534中,若偵測到區域仲裁要求(arbitration request),則可檢查內文仲裁器模式(2536)。若該模式是循環法(round robin),則可選擇目前執行列表中的下個內文(2548)。若該內文尚未就緒,則可選擇下個執行列表中的第一個就緒的內文(2550)。如果該內文已經就緒,則可開始所定義之內文(2552)。若GPU中都沒有就緒的內文,則可發送警示訊息至全域排程器(2546)。
在狀態2536中,若仲裁器模式是優先順序模式,則檢查目前執行列表中最高優先順序之內文的狀態(2538)。若該優先順序中的內文都沒有就緒,則可降低所檢查之優先順序(2540)。在狀態2538中,如果在該執行列表中沒有就緒的內文,則可開始下個執行列表中最高優先順序的內文(2542)。如果都沒有就緒的內文,則可發送訊息至全域排程器(2546)。如果有任一內文就緒,則可開始所偵測之內文(2544)。
第26A圖顯示本發明一實施例之計時暫存器的方塊圖,其包括於元處理器的控制暫存器集合之內。每一個計時器暫存器可具有輸入選擇器(方塊2632)使其可感測特定的信號/事件。一實施例的選擇機制可包括下列的計時器控制事件:
00-開始內文執行
02-開始內部等待
03-開始述詞檢查週期
04-旗號事件
05-監控事件
06-CPU中斷事件
XX-其他事件
計時器可工作於不同的模式以提供時脈或事件的計數,以及往下和往上計數至預定限制值。計時器終止信號可映射至一或多個用以產生關於動作暫存器之條件的述詞。時間/事件計數器(方塊2634)也可包括於第26A圖中。
第26B圖顯示本發明一實施例的計時器相關之元命令處理的流程圖。更具體地說,在第26B圖的非限定實施例中,在狀態2636中可透過區域排程器和/或元命令偵測來接收資料。狀態機可解碼內文的時間片段控制。若元命令請求計時器的設定,則設定選擇之計時器(2638)。該述詞的事件選擇可被設定(2640),該述詞的條件可也被架構(2642)。
在狀態2636中若偵測到計時器終止事件,則可將所架構的述詞做設定(2644),並可監控內文的狀態、事件和條件(2646)。若該內文是無條件或作用狀態的,則可將懸置碼設定為”時間片段”(2648)選擇事件/條件動作(2650),並可選擇區域排程器的動作(2652)。在狀態2646中若內文為遮罩狀態,則可設定警示旗標和警示碼
(2654)。
“設定計時器/事件計數器元命令”的範例格式
熟悉此技藝之人士應該了解元處理器的另一個重要的工作是支援一般同步基元(第7和8圖)。內文/行程的同步或點對點的內文/內文可用元處理器的硬體和軟體來提供。一般而言,同步基元不會改變,只有內文管理上的動作可能會與用於CPU行程/執行緒同步之原本基元的觀念稍微不同。
第27圖顯示根據本發明一實施例用於處理元命令之同步元命令處理的狀態機,其可支援同步基元。同步元命令解碼器可偵測五種類型的同步元命令:元互斥、條件、旗號、通知和警示與屏障元命令。
這些元命令中至少有一部分可於透過鎖定存取內文暫存器的情況中生效。在元互斥的情況中,媒介試著取得或鎖定從其他媒介來的內文,元互斥狀態機處理此類要求並傳送正或負認可(acknowledgement)至請求的媒介。在條件的情況中,媒介檢查該鎖定接著檢查條件並執行條件狀態機後,執行所有必須的動作。旗號命令視類型而增加或減少旗號暫存器的值。旗號P用以檢查該值,若其為零則有條件地懸置選定的內文。旗號V增加該值並檢查等待列
表。如有任何懸置的內文正等待於該旗號上,則將內文狀態改變至就緒狀態。
通知和警示對特定內文的警示旗標和警示碼做設定。在開始之前,該內文可檢查促成該警示的條件。屏障是使用界限和等待命令所實現,以防界限寫入暫存器或特定內文的記憶體,該內文將狀態改變至就緒狀態,並且當內文開始時被示意需比較其等待值和更新後的界限。等待元命令比較自身的值與界限暫存器並可將內文懸置或設定為就緒狀態。
同步元命令解碼器2732更具體地描述於第27圖中。同步元命令解碼器2732可偵測複數類型的同步元命令,包括(但不限於)元互斥、條件、旗號、通知和警示,以及屏障元命令。這些元命令可於透過鎖定存取內文暫存器的情況下產生效用。在元互斥的情況,媒介試著取得和/或鎖定從其他媒介來的內文,且元互斥狀態機處理此類要求並傳送正或負認可至請求的媒介。更具體地說,如第27圖的非限定實施例所述,可檢查該內文鎖定(2734)。若內文為其他媒介鎖定,則元互斥可排隊(2736)。接著可傳送負認可至媒介2738。另外,可於狀態2736和狀態2738之間執行週期性的檢查。另一方面,若內文已解鎖或使用已知的金鑰,則可使用元互斥狀態機(2740)。接著可傳送正認可至媒介2742。
在條件的情況中,媒介會檢查鎖定(2744),接著檢查條件和執行條件狀態機(2746),接續至條件狀態機2748。內文鎖定命令(由同步元命令解碼器2732而來)可
被檢查(2750)以確認是否有旗號P或旗號V。旗號用以增加和/或減少旗號暫存器的值,視旗號命令的類型而定。更具體地說,如果是旗號P則可減少旗號(2752)。旗號P用以檢查該值(2754),若該值為零則有條件地懸置選定之內文(2756)。若該值為非零,則回到元命令和事件偵測的迴路。
在狀態2750中若偵測到旗號V,則旗號V會增加該值並檢查等待列表2758。如果有任何懸置的內文正在等待,則該旗號將它們的狀態變更至就緒狀態(2760)。
開始於同步元命令解碼器2732,通知和警示用以檢查內文鎖定2762,並且設定特定內文的警示旗標(2764)和警示碼(2766)。另外,可使用界限和等待命令實現來自同步元命令解碼器2732的屏障。對於界限和/或等待命令,可檢查內文的鎖定(2768)。若偵測到的是界限命令,則將界限的值寫入暫存器(2770)。接著將內文設定至就緒狀態(2772),然後流程回到設定警示旗標(2764)和設定警示碼(2766)以便於界限開始時比較內文的等待值和更新的界限。
若在狀態2768偵測到的是等待命令,則該等待命令比較其值與界限暫存器(fence register)(2774)。如果等待命令的值小於或等於屏障的值,則流程回到狀態2772以將內文設為就緒狀態。如果等待命令的值比屏障大,可懸置選擇之內文並設定S碼(2776)。
第28A圖顯示本發明一實施例的元互斥狀態機,其用以執行內文失能/致能和內文鎖定/解鎖元命令。失能係表示
內文不會對運算和事件做回應,除了將鎖定暫存器內的媒介識別致能以外,內文也不會被任何的區域事件所執行和啟動。來自具有與鎖定金鑰暫存器相同識別之媒介的致能命令可將內文致能並使其可為任何媒介所感測。鎖定和解鎖命令本身並不會阻擋內文,其持續對區域排程器保持感測狀態。只有對內文暫存器的存取會對其他媒介保持鎖定,除了取得該鎖定的媒介之外。
從元互斥解碼2832所接收的失能表示內文將不會對運算和事件做回應,除非將鎖定暫存器內的媒介識別致能。內文也不會由區域事件所執行和啟動。因此,可將內文失能(2834)和設定致能的媒介類型(2836),並且可設定鎖定金鑰(致能的媒介識別)(2838),接著傳送正認可至媒介(2840)。
來自具有與鎖定金鑰暫存器相同識別之媒介的致能命令可將內文致能並使其可為任何媒介所感測。如果接收到致能命令,則可致能內文(2842)並將內文設定為”任何媒介”的類型(2844)。鎖定和解鎖命令本身並不會阻擋內文,但可持續對區域排程器保持可感測狀態。對內文暫存器的存取會對其他媒介保持鎖定,除了取得該鎖定的媒介之外。如果接收到鎖定命令,則可將內文鎖定(2846)、設定鎖定媒介的類型(2848),以及鎖定金鑰(媒介識別)可被設定(2850)。如果接收到解鎖命令,則可將內文解鎖(2852)並將媒介類型和識別清除(2854)。
第28B圖顯示本發明一實施例之同步條件的解碼和處理狀態機。開始於條件解碼(2856),條件等待會檢查述
詞(2858),若述詞為真則條件等待將內文的狀態改變為就緒狀態(2860)。在要求立即開始的情況中,條件等待也會開始內文的動作(2862)。在狀態2858中若條件不成立,則條件等待將狀態改變為懸置狀態(2864),但內文可繼續執行直到被區域排程器所中斷。在立即停止的情況,可即刻將內文切換掉(圓2866),流程回到元命令和事件偵測的迴路。
條件信號和廣播分別對選定的或所有的內文設定警示旗標和警示碼。更具體地說,對於條件信號而言,可設定就緒之選定內文(2868)、設定內文的警示旗標(2870),以及設定內文的警示碼(2872)。對於條件廣播,可設定所有的內文為就緒狀態(2874)、設定所有內文的警示旗標(2876),以及設定所有內文的警示碼(2878)。
立即開始和立即停止為同步條件等待較直接的形式,其會引起立刻的動作,而較間接的形式將只會設定內文的狀態離開至區域排程器的內文切換。第28B圖顯示一條件狀態機,用以執行條件等待、條件信號和條件廣播元命令。條件等待會檢查述詞,若其為真則將內文的狀態改變為就緒狀態。同樣地,在要求立即開始的情況中會開始該內文的動作。在條件不成立的情況下,狀態則改變至暫停狀態,但內文將繼續執行直到被區域排程器所中斷為止。在立即停止的情況中將立刻切換內文。條件信號和廣播將分別設定選定之內文或全部內文的警示旗標和警示碼。
第29圖顯示本發明一實施例之元處理器控制暫存器集合,其包括數個暫存器方塊或群組,包括述詞和條件架構
方塊、無條件事件和信號架構方塊(方塊2946、2948)、同步基元暫存器方塊(方塊2950、2952)、元處理器動作控制暫存器方塊(方塊2960、2962)、計時器架構和控制暫存器方塊(方塊2964、2966),以及區域排程器控制暫存器方塊(方塊2968、2970、2972)等,但不限定於僅包含上述方塊。述詞和條件暫存器的功能已於之前描述,而該類暫存器的實施方式將於第30圖中說明。
無條件事件和信號映射暫存器(方塊2946、2948)可包括動作暫存器對不同信號和事件的映射,如第31圖所述。同步基元暫存器方塊包括旗號暫存器和同步基元控制暫存器的群組,如以下第31圖的例子所述。旗號暫存器(方塊2950)包括模式欄位、二進制旗號的旗標欄位,以及用以計數旗號的計數器欄位。另外,該暫存器可包括每一執行列表中該旗號之等待內文的數目。同步基元控制暫存器(方塊2952)可包括具有鎖定檢查週期時間值和追蹤模式選擇欄位的元互斥控制部分(第31圖)。對於同步條件控制,同步基元控制暫存器可具有一定義開始/停止模式,其可為立即值或由區域排程器所定義。條件廣播的範圍也可定義於單一執行列表中或多重執行列表。
第30圖顯示本發明一實施例之述詞和條件架構暫存器。更具體地說,如第30圖之非限定實施例,輸入事件架構方塊3032可包括述詞的一或多個輸入事件選擇,其中的每一者可包括4位元(但不限於此)。述詞更新信號致能暫存器3034可包括32位元的暫存器(不限於此)。最終條件和遮罩暫存器3036也可包括32位元,其中包含複數
個最終條件旗標和遮罩。條件架構暫存器3038可包括一既定條件的述詞選擇。邏輯運算暫存器3040可包括邏輯運算(例如或、互斥或等等)。條件動作架構暫存器3042可包括多個條件的複數個動作暫存器。
第31圖顯示本發明一實施例之其他元處理器控制暫存器。更具體地說,如第31圖的非限定實施例,無條件事件映射暫存器3132可包括複數個暫存器更新。無條件內部信號映射暫存器3134可包括複數個事件/信號。旗號暫存器3136可包括旗號和相關的模式、旗標和計數器,以及旗號等待列表狀態。同步基元控制暫存器3138可包括具有週期檢查時間的元互斥控制、追蹤模式,以及具有開始/停止模式和廣播範圍的同步條件控制。區域排程器的狀態和控制暫存器可包括具有複數執行列表的執行列表仲裁模式。
第32A和32B圖顯示本發明一實施例之元處理器的指令集格式。第一組32位元字(或雙字元)包括元命令的運算碼或頭端(方塊3232、3240、3250)和動作修改者欄位(方塊3234、3242、3252)。元指令的其中一群組可將資料寫入記憶體以支援作業系統公用程式之同步基元,並且於頭端的雙字元之後連接4倍雙字元之64位元的資料(方塊3236)和64位元的位址(方塊3238)。另一組的元命令可由GPU的暫存器、述詞和條件所操縱,此第二組雙字元包括動作碼(方塊3244)和動作目標識別(方塊3246),而第三組雙字元可包括暫存器要寫入的內容(方塊3248)。
另一組的元命令可具有多達五個雙字元。這些元命令包括運算碼和動作修改者的雙字元(方塊3250),第二組
雙字元具有動作碼和動作屬性1和2,第三組雙字元具有動作屬性3以及記憶體位址的選項(如果需要的話)。運算碼和頭端欄位包括元處理器運算碼、命令格式長度,以及用以描述動作敘述(於元命令中為顯性,或於元處理器控制暫存器中為隱性)之類型、屬性用途和記憶體位址格式(如果需要的話)的格式定義。
動作修改者的部分(方塊3252)可包括動作暫存器參考(在隱性動作敘述的情況中)、GPU和CPU中斷以及警示訊息產生旗標、元命令的命令範圍定義,以及用以定義要被同步之內部信號的等待遮罩。
第二組雙字元中的動作碼欄位(方塊3254)與之前所述之元處理器動作暫停器中的實施例很類似。動作控制碼可包括暫存器以及述詞和條件的運作和監控相關的程式碼。誠如非限定的實施例,多個條件元命令可用類似的方式實現。動作屬性1(方塊3256)用以定義要開始的預設內文,動作屬性2(方塊3258)用以定義要開始的選定之內文。動作屬性3(方塊3260)用以定義區域內文識別。第三組雙字元包括要切換至的內文識別,遠端GPU和CPU識別用以傳送中斷或警示訊息。選擇性的記憶體位址(方塊3262)可用來從系統或視訊記憶體複製或擷取某些資料。
熟悉此技藝之人士應該了解本發明所包括的流程圖顯示了軟體和/或硬體之所有可能實施方式的架構、功能和運算。在這一點上,每一方塊可詮釋來代表模組、區段或部分的程式碼、邏輯元件,其可用以執行至少一指令以實現指定的邏輯功能。應該要注意的是,在另外的實施方式中,
方塊中所述的功能可不依照順序來實現。舉例來說,接續的兩個步驟事實上可大致同時執行,或有時候可用相反的順序執行,視所包括的功能而定。
熟悉此技藝之人士應該注意,本發明所列的任何邏輯步驟可實施於任何電腦可讀取的媒體之中以連接(或為)指令執行系統或裝置使用,例如基於電腦的系統、包括處理器的系統,或其他可從該指令執行系統或裝置擷取並執行指令的其他系統。
誠如非限定的實施例,上述功能的實施方式可以是不同的,必須視GPU的架構而定,並且可包括硬體和/或可程式的處理邏輯核心單元。
本發明雖以較佳實施例揭露如上,然其並非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
102、108a-108n、202、208、312a-312n‧‧‧CPU
104、110a-110n、204、210、314a-314n‧‧‧區域記憶體
106、206、304‧‧‧匯流排
107‧‧‧全域記憶體
207‧‧‧系統記憶體
212a-212n‧‧‧簡單GPU
214a-214n、330a-330n‧‧‧視訊記憶體
302‧‧‧CPU全域佇列和CPU任務/執行緒排程器
306a-306n‧‧‧區域CPU佇列
324‧‧‧GPU全域佇列和GPU任務/內文排程器
326a-326n‧‧‧區域佇列
328a-328n‧‧‧GPU
410‧‧‧區域CPU執行緒排程器
510‧‧‧區域GPU內文排程器
606‧‧‧環狀緩衝器
608‧‧‧直接記憶體存取緩衝器
1002‧‧‧GPU元命令處理器
1004‧‧‧GPU命令串流處理器
1006‧‧‧GPU匯流排介面單元
1008‧‧‧匯流排訊息解碼器
1010‧‧‧匯流排訊息編碼器
1012a-1012n‧‧‧內文暫存器方塊
1014‧‧‧內文管理邏輯單元
1016a-1016m‧‧‧GPU管線區塊
1018、1260、1336‧‧‧元處理器控制暫存器
1232、1334‧‧‧內文狀態和描述暫存器
1332‧‧‧內文描述暫存器方塊
1334‧‧‧內文狀態和描述暫存器
1338‧‧‧述詞和條件架構暫存器
1340‧‧‧元命令動作暫存器
1344‧‧‧元命令執行邏輯單元
1346‧‧‧顯性元命令解碼器
1348‧‧‧隱性元命令解碼器
1354‧‧‧事件偵測器
1356‧‧‧信號偵測器
1467‧‧‧內文狀態、事件和條件監控器
1469‧‧‧區域排程器邏輯單元
1471‧‧‧事件和要求處理邏輯單元
1473‧‧‧內文管理邏輯單元
1475‧‧‧內文同步控制單元
1477‧‧‧計時器管理邏輯單元
1532‧‧‧內文鎖定暫存器
1548‧‧‧內文狀態暫存器
1550‧‧‧內文感測條件架構選擇暫存器
1566、2444、2960、2962‧‧‧動作控制暫存器
1568‧‧‧內文計時器選擇暫存器
1570a、1570b‧‧‧計時器
1572-1572m‧‧‧時間-事件計數器
1574-1574m‧‧‧事件選擇器
1580‧‧‧旗號選擇暫存器
1582a、1582b、2950‧‧‧旗號暫存器
1588‧‧‧內文監控位址暫存器
1595‧‧‧屏障同步暫存器方塊
1596‧‧‧區域事件歷史緩衝器
1632‧‧‧內文金鑰暫存器
2066‧‧‧元處理器控制暫存器集合
2068‧‧‧元處理器區域排程器和執行邏輯單元
2132‧‧‧事件/信號選擇器
2136‧‧‧述詞選擇器
2138‧‧‧述詞邏輯運算選擇器
2142‧‧‧動作控制暫存器選擇器
2240、2242‧‧‧動作暫存器
2634‧‧‧時間/事件計數器
2636‧‧‧計時器事件選擇器暫存器
2932‧‧‧述詞暫存器
2934‧‧‧輸入事件架構暫存器
2936‧‧‧述詞發送更新信號致能暫存器
2938‧‧‧最終條件和遮罩暫存器
2940‧‧‧條件架構(述詞選擇)暫存器
2942‧‧‧邏輯運算暫存器
2944‧‧‧條件動作選擇暫存器
2946‧‧‧無條件事件映射暫存器
2948‧‧‧無條件內部信號映射暫存器
2952‧‧‧同步基元控制暫存器
2964‧‧‧計時器暫存器
2966‧‧‧計時器輸入選擇器暫存器
2968‧‧‧區域排程器控制暫存器
2970‧‧‧自旋等待控制暫存器
2972‧‧‧區域歷史緩衝器控制和存取暫存器
3034‧‧‧述詞更新信號發送致能暫存器
第1圖顯示根據本發明所述CPU之多重指令串流多重資料串流的架構;第2圖顯示根據本發明所述結合一或多CPU之多重簡單繪圖處理器的架構;第3圖顯示本發明一實施例之包括多重CPU和多重GPU之多重指令串流多重資料串流的處理器系統;第4圖顯示本發明一實施例之區域CPU佇列;第5圖顯示本發明一實施例之區域GPU佇列;第6圖顯示本發明一實施例之執行列表的示意圖;第7圖顯示本發明一實施例用以同步CPU之同步基元的方塊圖;第8圖顯示本發明一實施例之另一種同步基元的方塊圖;第9圖顯示本發明一實施例之GPU同步層級,其包括內文管理、命令串流管理、資料存取和著色器微執行緒層級;第10圖顯示本發明一實施例之一GPU元命令處理器的範例結構和連接其他GPU方塊的結構;第11圖顯示本發明一實施例之用以達成同步和內文管理之GPU元命令的方塊圖;第12圖顯示本發明一實施例之元處理器邏輯單元中兩種元命令的處理流程;第13圖顯示本發明之元命令執行資料讀取的一實施
例;第14A圖顯示本發明一實施例之顯性和隱性元命令之執行序列的流程圖;第14B圖根據本發明一實施例之執行邏輯單元的方塊圖;第15圖顯示本發明一實施例之可結合至元處理器中至少一執行列表之內文暫存器的方塊圖;第16圖顯示本發明一實施例之內文鎖定暫存器和內文狀態暫存器;第17圖顯示本發明一實施例之當事件和元命令應用至狀態管理狀態機時的內文狀態轉換;第18圖顯示本發明一實施例之元處理器中執行元命令處理的狀態機;第19圖顯示本發明一實施例之區域排程器的內文管理狀態機;第20A圖顯示本發明一實施例之對應至第19圖之內文管理狀態機的簡化區域排程器動作;第20B圖顯示本發明一實施例之隱性元命令的定義和執行;第21圖顯示本發明一實施例之條件隱性元命令的動作定義資料流;第22圖顯示本發明一實施例之元處理器控制暫存器集合中的相關暫存器,其支援述詞和條件架構,以及條件至動作控制暫存器的映射;第23圖顯示本發明一實施例之內文狀態、事件和條件
監控器狀態機;第24圖顯示本發明一實施例之元處理器控制暫存器集合中,映射至由輸入事件架構暫存器所定義之其中一個條件的元處理器動作控制暫存器,以及條件架構暫存器;第25圖顯示本發明一實施例當區域排程器活動接收信號和要求時的狀態圖;第26A圖顯示本發明一實施例之計時暫存器方塊的架構;第26B圖顯示本發明一實施例之關於計時器的元命令處理的流程圖;第27圖顯示本發明一實施例之用於處理元命令之同步元命令處理的狀態機;第28A圖顯示本發明一實施例之元互斥狀態機,其用以執行內文失能/致能和內文鎖定/解鎖元命令;第28B圖顯示本發明一實施例之同步條件的解碼和處理狀態機;第29圖顯示本發明一實施例之元處理器控制暫存器集合;第30圖顯示本發明一實施例之述詞和條件架構暫存器;第31圖顯示本發明一實施例之其他的元處理器控制暫存器;以及第32A和32B圖顯示本發明一實施例之元處理器的指令集格式。
102‧‧‧CPU
104、110a-110n‧‧‧區域記憶體
106‧‧‧匯流排
107‧‧‧全域記憶體
108a-108n‧‧‧CPU
Claims (25)
- 一種繪圖處理單元,包括:一元處理器,包含至少一內文暫存器,其中上述元處理器包括一內文管理邏輯單元:以及一元處理器控制暫存器方塊,耦接至上述元處理器,用以接收元處理器架構資料,以及定義上述內文管理邏輯單元的行為;其中,在多重繪圖處理單元(GPU)以及多重中央處理單元(CPU)之配置中,該元處理器用來執行至少GPU對GPU同步以及CPU對GPU同步之其中一操作,其中該元處理器更用來執行元命令組,來對系統中區域、遠端和同儕參與者進行同步以及內文管理。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一匯流排介面單元,提供一系統處理器對上述元處理器的存取。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一匯流排訊息解碼器和編碼器,用以透過一互接媒體接收和傳送訊息至一同儕繪圖處理單元。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一繪圖處理單元命令串流處理器,用以擷取一目前內文命令串流,並傳送命令至一繪圖處理單元管線和上述元處理器的其中至少一者以進行執行。
- 如申請專利範圍第1項所述之繪圖處理單元,其中上述元處理器用以處理至少一隱性元命令。
- 如申請專利範圍第5項所述之繪圖處理單元,其中 上述至少一隱性元命令由一內部信號和一控制暫存器更新事件中至少一者所描述。
- 如申請專利範圍第1項所述之繪圖處理單元,其中上述元處理器用以處理至少一顯性元命令。
- 如申請專利範圍第7項所述之繪圖處理單元,其中上述至少一顯性元命令由一命令代符所描述。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一顯性元命令解碼器。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一隱性元命令解碼器,上述隱性元命令解碼器包括耦接至一事件映射表的一事件偵測器,以及耦接至一信號映射表的一信號偵測器。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一條件映射元件,用以定義元命令動作碼的條件選擇。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括一元命令執行邏輯單元,用以處理元命令。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括下列至少一者:一區域排程器;一內文狀態、事件和條件監控器;一內文同步控制邏輯單元;以及一計時器管理邏輯單元。
- 如申請專利範圍第1項所述之繪圖處理單元,更包括區域排程器邏輯單元,上述區域排程器邏輯單元包括事件和要求處理邏輯單元以及內文管理邏輯單元。
- 一種元命令處理系統,包括:一元命令執行邏輯單元,用以執行至少一元命令;其中,在多重繪圖處理單元(GPU)以及多重中央處理單元(CPU)之配置中,該至少一元命令被用來執行至少GPU對GPU的同步以及CPU對GPU的同步之其中一操作;一內文敘述暫存器方塊,用以接收一內文選擇信號和一內文狀態更新信號,並提供一內文狀態資料至上述元命令執行邏輯單元;以及一元處理器控制暫存器方塊,用以接收一選擇述詞和條件信號以及一選擇無條件動作信號,並提供一最終條件信號和元命令動作碼至上述元命令執行邏輯單元。
- 如申請專利範圍第15項所述之元命令處理系統,更包括一隱性元命令解碼器,用以偵測一暫存器更新信號和至少一內部繪圖處理單元信號。
- 如申請專利範圍第15項所述之元命令處理系統,更包括一顯性元命令解碼器,用以從一命令代符提供一元命令動作碼和條件選擇。
- 如申請專利範圍第16項所述之元命令處理系統,其中上述隱性元命令解碼器包括下列至少一者:一事件映射方塊;一信號映射方塊;一事件偵測器方塊;以及一信號偵測器方塊。
- 如申請專利範圍第15項所述之元命令處理系統,其中上述元處理器控制暫存器方塊包括下列至少一者:一述詞和條件架構暫存器;一條件映射元件,用以選擇動作暫停器;以及一元命令動作暫存器。
- 如申請專利範圍第17項所述之元命令處理系統,其中上述元命令執行邏輯單元用以執行至少一狀態機,上述狀態機用以執行至少下列一者動作:狀態轉換;處理一元命令;內文管理處理;信號和請求處理;條件和無條件事件映射;內文、狀態和事件條件監控;區域排程;以及計時器相關的元命令處理。
- 一種元命令執行方法,包括:偵測一新元命令,其中,在多重繪圖處理單元(GPU)以及多重中央處理單元(CPU)之配置中,該新元命令用來執行至少GPU對GPU的同步以及CPU對GPU的同步之其中之一操作;確認所偵測的上述新元命令是否為一隱性元命令;對應於確認上述新元命令為上述隱性元命令的情況,更新一內文暫存器,並偵測與上述更新之內文暫 存器相關的一事件類型;確認所偵測的上述新元命令是否為一顯性元命令;以及對應於確認上述新元命令為上述顯性元命令的情況,確認動作編碼是否為一直接動作碼;對應於確認動作編碼為上述直接動作碼的情況,將上述動作解碼並傳送上述動作碼至一邏輯單元。
- 如申請專利範圍第21項所述之元命令執行方法,更包括執行上述新元命令,並更新與一內文相關的狀態資料。
- 如申請專利範圍第21項所述之元命令執行方法,更包括對應於確認上述新元命令為上述隱性元命令的情況,確認信號路由是否為條件式的;對應於確認信號路由為條件式的情況下,設定與信號相關之一述詞,並使用條件映射讀取一動作碼。
- 如申請專利範圍第21項所述之元命令執行方法,更包括對應於確認上述新元命令為上述顯性元命令的情況,確認信號路由是否為無條件式的,並且對應於確認信號路由為無條件式的情況下,使用事件映射和信號映射其中至少一者讀取一動作碼。
- 如申請專利範圍第21項所述之元命令執行方法,更包括確認發生至少一錯誤,對應於確認發生該錯誤的情況下,設定受影響之一內文的一警示。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/266,034 US8368701B2 (en) | 2008-11-06 | 2008-11-06 | Metaprocessor for GPU control and synchronization in a multiprocessor environment |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201030671A TW201030671A (en) | 2010-08-16 |
TWI423161B true TWI423161B (zh) | 2014-01-11 |
Family
ID=42130818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW098137751A TWI423161B (zh) | 2008-11-06 | 2009-11-06 | 繪圖處理單元、元命令處理系統以及元命令執行方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8368701B2 (zh) |
CN (1) | CN101719262B (zh) |
TW (1) | TWI423161B (zh) |
Families Citing this family (54)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100125740A1 (en) * | 2008-11-19 | 2010-05-20 | Accenture Global Services Gmbh | System for securing multithreaded server applications |
US20100188412A1 (en) * | 2009-01-28 | 2010-07-29 | Microsoft Corporation | Content based cache for graphics resource management |
US8711159B2 (en) * | 2009-02-23 | 2014-04-29 | Microsoft Corporation | VGPU: a real time GPU emulator |
US9245371B2 (en) * | 2009-09-11 | 2016-01-26 | Nvidia Corporation | Global stores and atomic operations |
CN102103523A (zh) * | 2009-12-22 | 2011-06-22 | 国际商业机器公司 | 锁分配控制的方法和装置 |
DE102010019783A1 (de) * | 2010-05-06 | 2011-11-10 | Dieter Weiler | Verfahren zum Durchführen eines Programmes zur Verarbeitung von Daten und entsprechendes System |
US8514232B2 (en) * | 2010-06-28 | 2013-08-20 | International Business Machines Corporation | Propagating shared state changes to multiple threads within a multithreaded processing environment |
US9317456B2 (en) * | 2010-10-18 | 2016-04-19 | Infosys Technologies Ltd. | Method and system for performing event-matching with a graphical processing unit |
US20120194525A1 (en) * | 2010-12-13 | 2012-08-02 | Advanced Micro Devices, Inc. | Managed Task Scheduling on a Graphics Processing Device (APD) |
US20120188259A1 (en) * | 2010-12-13 | 2012-07-26 | Advanced Micro Devices, Inc. | Mechanisms for Enabling Task Scheduling |
US20120194526A1 (en) * | 2010-12-15 | 2012-08-02 | Benjamin Thomas Sander | Task Scheduling |
US9342379B2 (en) * | 2011-01-21 | 2016-05-17 | Wind River Systems, Inc. | Lock free acquisition and release of a semaphore in a multi-core processor environment |
US10013731B2 (en) * | 2011-06-30 | 2018-07-03 | Intel Corporation | Maximizing parallel processing in graphics processors |
US9633407B2 (en) | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
US20130141447A1 (en) * | 2011-12-06 | 2013-06-06 | Advanced Micro Devices, Inc. | Method and Apparatus for Accommodating Multiple, Concurrent Work Inputs |
US8933942B2 (en) | 2011-12-08 | 2015-01-13 | Advanced Micro Devices, Inc. | Partitioning resources of a processor |
US9092272B2 (en) | 2011-12-08 | 2015-07-28 | International Business Machines Corporation | Preparing parallel tasks to use a synchronization register |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
WO2013090605A2 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Saving and restoring shader context state and resuming a faulted apd wavefront |
US8839039B2 (en) * | 2012-01-24 | 2014-09-16 | Nvidia Corporation | Initialization of GPU using ROM-based initialization unit and programmable microcontroller |
KR101953133B1 (ko) | 2012-02-27 | 2019-05-22 | 삼성전자주식회사 | 렌더링 장치 및 그 방법 |
US9875139B2 (en) * | 2012-05-29 | 2018-01-23 | Qatar Foundation | Graphics processing unit controller, host system, and methods |
CN102890643B (zh) * | 2012-07-26 | 2015-01-21 | 上海交通大学 | 基于应用效果即时反馈的显卡虚拟化下的资源调度系统 |
US9542238B2 (en) * | 2013-05-23 | 2017-01-10 | Nxp Usa, Inc. | Systems and methods for direct memory access coherency among multiple processing cores |
US9495722B2 (en) | 2013-05-24 | 2016-11-15 | Sony Interactive Entertainment Inc. | Developer controlled layout |
US10255650B2 (en) * | 2013-05-24 | 2019-04-09 | Sony Interactive Entertainment Inc. | Graphics processing using dynamic resources |
US9892480B2 (en) * | 2013-06-28 | 2018-02-13 | Intel Corporation | Aborting graphics processor workload execution |
US9304896B2 (en) | 2013-08-05 | 2016-04-05 | Iii Holdings 2, Llc | Remote memory ring buffers in a cluster of data processing nodes |
US9881351B2 (en) | 2015-06-15 | 2018-01-30 | Microsoft Technology Licensing, Llc | Remote translation, aggregation and distribution of computer program resources in graphics processing unit emulation |
US9786026B2 (en) | 2015-06-15 | 2017-10-10 | Microsoft Technology Licensing, Llc | Asynchronous translation of computer program resources in graphics processing unit emulation |
GB2540382B (en) * | 2015-07-15 | 2020-03-04 | Advanced Risc Mach Ltd | Data processing systems |
US20170069054A1 (en) * | 2015-09-04 | 2017-03-09 | Intel Corporation | Facilitating efficient scheduling of graphics workloads at computing devices |
GB2552717B (en) * | 2016-08-05 | 2018-09-05 | Arm Ip Ltd | Management of control parameters in electronic systems |
US10580189B2 (en) * | 2016-09-16 | 2020-03-03 | Intel Corporation | Apparatus and method for optimized ray tracing |
US10600141B2 (en) | 2016-09-23 | 2020-03-24 | Nvidia Corporation | Monitoring execution in a graphics processing unit |
US10664942B2 (en) | 2016-10-21 | 2020-05-26 | Advanced Micro Devices, Inc. | Reconfigurable virtual graphics and compute processor pipeline |
US10929944B2 (en) * | 2016-11-23 | 2021-02-23 | Advanced Micro Devices, Inc. | Low power and low latency GPU coprocessor for persistent computing |
CN106649037B (zh) * | 2016-12-08 | 2019-04-23 | 武汉斗鱼网络科技有限公司 | 一种gpu任务完成状态的判断方法及装置 |
US11150943B2 (en) * | 2017-04-10 | 2021-10-19 | Intel Corporation | Enabling a single context hardware system to operate as a multi-context system |
US10699364B2 (en) * | 2017-07-12 | 2020-06-30 | Citrix Systems, Inc. | Graphical rendering using multiple graphics processors |
US11232531B2 (en) * | 2017-08-29 | 2022-01-25 | Intel Corporation | Method and apparatus for efficient loop processing in a graphics hardware front end |
US11175919B1 (en) * | 2018-12-13 | 2021-11-16 | Amazon Technologies, Inc. | Synchronization of concurrent computation engines |
US11263718B2 (en) | 2020-02-03 | 2022-03-01 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against in interleaved screen regions before rendering |
US11170461B2 (en) | 2020-02-03 | 2021-11-09 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis while rendering |
US11080814B1 (en) | 2020-02-03 | 2021-08-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by pretesting against screen regions using prior frame information |
US11120522B2 (en) * | 2020-02-03 | 2021-09-14 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by subdividing geometry |
US11321800B2 (en) | 2020-02-03 | 2022-05-03 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by region testing while rendering |
US11508110B2 (en) | 2020-02-03 | 2022-11-22 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by performing geometry analysis before rendering |
US11514549B2 (en) | 2020-02-03 | 2022-11-29 | Sony Interactive Entertainment Inc. | System and method for efficient multi-GPU rendering of geometry by generating information in one rendering phase for use in another rendering phase |
US11487695B1 (en) * | 2020-04-23 | 2022-11-01 | Marvell Asia Pte Ltd | Scalable peer to peer data routing for servers |
CN111880916B (zh) * | 2020-07-27 | 2024-08-16 | 长沙景嘉微电子股份有限公司 | Gpu中多绘制任务处理方法、装置、终端、介质及主机 |
US11720360B2 (en) | 2020-09-11 | 2023-08-08 | Apple Inc. | DSB operation with excluded region |
US12045668B2 (en) * | 2021-04-22 | 2024-07-23 | EMC IP Holding Company, LLC | System and method for efficient snapshots barrier mechanism for system with presorted container-based log |
US12008016B2 (en) * | 2021-12-29 | 2024-06-11 | Onomy LLC | Action ordering |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020152010A1 (en) * | 2001-04-17 | 2002-10-17 | Philips Electronics North America Corporation | Automatic access to an automobile via biometrics |
CN101034469A (zh) * | 2005-10-26 | 2007-09-12 | 威盛电子股份有限公司 | 图形处理单元管线同步及控制系统和方法 |
TW200809691A (en) * | 2006-06-20 | 2008-02-16 | Via Tech Inc | A graphics processing unit and a method of processing border color information |
US20080074433A1 (en) * | 2006-09-21 | 2008-03-27 | Guofang Jiao | Graphics Processors With Parallel Scheduling and Execution of Threads |
TW200836113A (en) * | 2007-02-28 | 2008-09-01 | Taiwan Semiconductor Mfg | Mask defect analysis |
TW200841198A (en) * | 2007-02-01 | 2008-10-16 | Microsoft Corp | World-wide classified listing search with translation |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1890660A (zh) * | 2003-11-19 | 2007-01-03 | 路西德信息技术有限公司 | Pc总线上的多重三维图形管线的方法及系统 |
TWI322354B (en) * | 2005-10-18 | 2010-03-21 | Via Tech Inc | Method and system for deferred command issuing in a computer system |
US20090160867A1 (en) * | 2007-12-19 | 2009-06-25 | Advance Micro Devices, Inc. | Autonomous Context Scheduler For Graphics Processing Units |
US8161209B2 (en) * | 2008-03-31 | 2012-04-17 | Advanced Micro Devices, Inc. | Peer-to-peer special purpose processor architecture and method |
-
2008
- 2008-11-06 US US12/266,034 patent/US8368701B2/en active Active
-
2009
- 2009-11-06 TW TW098137751A patent/TWI423161B/zh active
- 2009-11-06 CN CN2009102221313A patent/CN101719262B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020152010A1 (en) * | 2001-04-17 | 2002-10-17 | Philips Electronics North America Corporation | Automatic access to an automobile via biometrics |
CN101034469A (zh) * | 2005-10-26 | 2007-09-12 | 威盛电子股份有限公司 | 图形处理单元管线同步及控制系统和方法 |
TW200809691A (en) * | 2006-06-20 | 2008-02-16 | Via Tech Inc | A graphics processing unit and a method of processing border color information |
US20080074433A1 (en) * | 2006-09-21 | 2008-03-27 | Guofang Jiao | Graphics Processors With Parallel Scheduling and Execution of Threads |
TW200841198A (en) * | 2007-02-01 | 2008-10-16 | Microsoft Corp | World-wide classified listing search with translation |
TW200836113A (en) * | 2007-02-28 | 2008-09-01 | Taiwan Semiconductor Mfg | Mask defect analysis |
Also Published As
Publication number | Publication date |
---|---|
CN101719262A (zh) | 2010-06-02 |
CN101719262B (zh) | 2013-07-24 |
US20100110083A1 (en) | 2010-05-06 |
US8368701B2 (en) | 2013-02-05 |
TW201030671A (en) | 2010-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI423161B (zh) | 繪圖處理單元、元命令處理系統以及元命令執行方法 | |
TWI428763B (zh) | 支援複數繪圖處理器之互動的方法與系統 | |
US20100110089A1 (en) | Multiple GPU Context Synchronization Using Barrier Type Primitives | |
US8576236B2 (en) | Mechanism for granting controlled access to a shared resource | |
JP4322259B2 (ja) | マルチプロセッサシステムにおけるローカルメモリへのデータアクセスを同期化する方法および装置 | |
TWI512630B (zh) | 索引屏障的硬體排程之系統及方法 | |
US11782720B2 (en) | Processor architecture with micro-threading control by hardware-accelerated kernel thread | |
US20140115594A1 (en) | Mechanism to schedule threads on os-sequestered sequencers without operating system intervention | |
US20140337848A1 (en) | Low overhead thread synchronization using hardware-accelerated bounded circular queues | |
US20050174354A1 (en) | Apparatus, method and system with a graphics-rendering engine having a time allocator | |
JP2016129039A (ja) | コンテキスト切替方法及び装置 | |
JP2010050970A (ja) | 中央処理装置と画像処理装置との間で通信するための機器および方法 | |
US20020170039A1 (en) | System for operating system and platform independent digital stream handling and method thereof | |
JP2014504416A (ja) | 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング | |
US8180998B1 (en) | System of lanes of processing units receiving instructions via shared memory units for data-parallel or task-parallel operations | |
JP4575925B2 (ja) | マルチスレッドアーキテクチャを用いた視覚および図形データの処理 | |
TW201423403A (zh) | 共用資源的存取請求之有效率處理 | |
JP5213485B2 (ja) | マルチプロセッサシステムにおけるデータ同期方法及びマルチプロセッサシステム | |
US8922571B2 (en) | Display pipe request aggregation | |
JP2007517328A (ja) | 動作モデルベースマルチスレッドアーキテクチャ | |
US10713188B2 (en) | Inter-process signaling system and method | |
US7552269B2 (en) | Synchronizing a plurality of processors | |
US20240272961A1 (en) | Logical Slot to Distributed Hardware Slot Scheduling for Graphics Work | |
US20240273667A1 (en) | Geometry Kick Distribution in Graphics Processor | |
US20230075531A1 (en) | Quality of Service Techniques in Distributed Graphics Processor |