TWI528178B - 用於分析圖形處理管線效能之方法及計算系統 - Google Patents

用於分析圖形處理管線效能之方法及計算系統 Download PDF

Info

Publication number
TWI528178B
TWI528178B TW102143830A TW102143830A TWI528178B TW I528178 B TWI528178 B TW I528178B TW 102143830 A TW102143830 A TW 102143830A TW 102143830 A TW102143830 A TW 102143830A TW I528178 B TWI528178 B TW I528178B
Authority
TW
Taiwan
Prior art keywords
workload
graphics processing
processing pipeline
unit
event
Prior art date
Application number
TW102143830A
Other languages
English (en)
Other versions
TW201435581A (zh
Inventor
羅杰L 艾倫
齊亞德S 哈古拉
湯瑪斯 梅爾文 奧格爾特里
Original Assignee
輝達公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 輝達公司 filed Critical 輝達公司
Publication of TW201435581A publication Critical patent/TW201435581A/zh
Application granted granted Critical
Publication of TWI528178B publication Critical patent/TWI528178B/zh

Links

Classifications

    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)

Description

用於分析圖形處理管線效能之方法及計算系統
本發明通常關於圖形晶片效能分析,更具體地,關於透過管線狀態繫結觸發效能事件擷取。
圖形處理硬體通常包括已知為一圖形處理管線的電路,該圖形處理管線可分成數階段。包括圖形資料及指令的資訊透過圖形處理管線從最早階段傳遞至最後階段,且每一階段藉由執行該資訊的許多相關功能及操作來處理該資訊。數階段可彼此獨立操作,這讓不同階段同時處理不同資訊。以此方式同時處理不同資訊增加該圖形處理管線的利用率,如此可改善效能。
一圖形處理管線可構成提供有關如何在該圖形處理管線內有效率處理圖形資料的「效能資料」。這種效能資料可包括完成特定任務所需的時間、特定時間週期期間處理的資料量、及其他類似測量值。一般而言,獲得有關特定工作單元的效能資料。這種工作單元可為「實例」,如此處所使用,稱為一組相關圖形處理管線方法(例如繪圖呼叫),全都在特定著色「狀態」上執行。
運用一些傳統圖形處理管線架構,可逐個實例分析效能資料。開始監控效能的指令可傳送至該圖形處理管線內,連同所要效能資料的實例。該實例傳送至該圖形處理管線的時間及該處理實例結果離開該圖形處理管線的時間,可用來決定處理該實例需要多少時間。此外,處理該實例時,亦可記錄用於計數完成的指定工作項目之計數器,例如已著色像素的數量等等。
不過,運用某些圖形處理管線架構,該圖形處理管線可在該 圖形處理管線內的中間位置上包括一單元,已知為拼貼器單元。該拼貼器單元構成接收來自該圖形處理管線之第一部分的圖形資料,並且將該圖形資料組織成互斥結構,就是已知的「拼貼」。要如此做時,一拼貼器單元可累積來自傳送至該圖形處理管線的許多實例之圖形資料與指令、將該等實例細分並交錯在一起以產生一組合的工作負載,並且將該組合的工作負載傳送至該圖形處理管線之第二部分。該圖形處理管線之第二部分逐一拼貼處理資料,而非逐一實例。
拼貼器單元存在時可方便進行效能監控,如上述,幾乎不可能,因為在該拼貼器單元的該圖形處理管線下游內處理的該工作以拼貼為基礎,並非以實例基礎。換言之,因為該圖形處理管線的下游階段一次處理一已知拼貼,相對於一特定實例,而一拼貼進入及離開該圖形處理管線已知階段之時的時間記錄可提供有關處理許多實例的總時間,相對於提供有關處理一指定實例所需時間的資訊。同樣地,有關該圖形處理管線下游階段的計數器應該提供有關處理許多實例的技術,相對於提供有關處理一指定實例的計數。在沒有關於該圖形處理管線內如何處理指定實例的資訊時,則對該圖形處理管線進行偵錯,並且分析以改善圖形處理管線效能的方式會更困難。
如先前所例示,業界需要一種在一拼貼型系統內獲得有關圖形處理管線工作負載的效能資料之方式。
本發明之一具體實施例揭示一種用於分析一圖形處理管線效能之方法。一第一工作負載與一第二工作負載在管線內組合在一起,以產生一組合的工作負載。該第一工作負載有關一第一實例,並且該第二工作負載有關一第二實例。一第一和第二初始事件產生用於該組合的工作負載,指出該第一和第二工作負載是否已經在該圖形處理管線的一第一位置上開始處理。然後產生一第一和第二最終事件,指出該第一和第二工作負載是否已經在該圖形處理管線的一第二位置上完成處理。
所揭示方式之一優點在於,可針對一具拼貼器單元的管線,獲得一組組合實例內的單一實例之效能資料,該拼貼器單元將實例細分成 拼貼且交錯來自不同實例的拼貼。
100‧‧‧電腦系統
102‧‧‧中央處理單元
103‧‧‧裝置驅動程式
104‧‧‧系統記憶體
105‧‧‧記憶體橋接器
106‧‧‧通訊路徑
107‧‧‧輸入/輸出橋接器
108‧‧‧使用者輸入裝置
110‧‧‧顯示裝置
112‧‧‧平行處理子系統
113‧‧‧第二通訊路徑
114‧‧‧系統磁碟
116‧‧‧開關
118‧‧‧網路配接器
120-121‧‧‧外接卡
202‧‧‧平行處理單元
204‧‧‧平行處理記憶體
205‧‧‧輸入/輸出橋接器
206‧‧‧主介面
207‧‧‧任務/工作單元
208‧‧‧一般處理叢集
210‧‧‧記憶體交換開關單元
212‧‧‧前端
214‧‧‧記憶體介面
215‧‧‧劃分單元
220‧‧‧動態隨機存取記憶體
230‧‧‧處理叢集陣列
302‧‧‧執行單元
303‧‧‧載入儲存單元
304‧‧‧本機暫存檔
305‧‧‧管線管理員
306‧‧‧共用記憶體
310‧‧‧串流多重處理器
312‧‧‧經線排程器與指令單元
320‧‧‧L1快取
328‧‧‧記憶體管理單元
335‧‧‧第1.5層快取
352‧‧‧統一位址映射單元
370‧‧‧指令L1快取
380‧‧‧記憶體與快取互連
400‧‧‧圖形處理管線
410‧‧‧資料組合器
410‧‧‧資料組合器
415‧‧‧頂點處理單元
420‧‧‧圖元組合器
425‧‧‧幾何處理單元
450‧‧‧視埠縮放、消隱及裁切單元
455‧‧‧光柵器
460‧‧‧片段處理單元
465‧‧‧彩色光柵操作單元
502-2‧‧‧第二等待待命方法
502-1‧‧‧等待待命方法
504-2‧‧‧第二PMTrigger方法
504-1‧‧‧PMTrigger方法
506‧‧‧實例
508‧‧‧待命區域
518‧‧‧線條
522‧‧‧總經過時間
600-614‧‧‧區塊
620-624‧‧‧時間總量
700‧‧‧圖形處理管線
710‧‧‧上游單元
720‧‧‧下游單元
753‧‧‧拼貼器單元
765‧‧‧光柵操作單元
780-3‧‧‧本機效能監控
780-2‧‧‧本機效能監控
780-1‧‧‧本機效能監控
780‧‧‧本機效能監控
814-818‧‧‧資料
824-828‧‧‧管道
825-829‧‧‧事件
835-837‧‧‧事件
852‧‧‧效能監控ID
854‧‧‧事件ID
856‧‧‧時間記錄
858‧‧‧先前書籤編號
860‧‧‧先前書籤計數器
862‧‧‧書籤編號
864‧‧‧書籤計數器
866-868‧‧‧效能監控計數器
900‧‧‧方法
1000‧‧‧方法
1100‧‧‧方法
如此上面簡單彙總可詳細了解本發明上述特色的方式,本發明的更特定說明則參照具體實施例,某些具體實施例說明於附圖內。不過吾人應該注意,附圖只說明本發明的典型具體實施例,因此並未限制本發明的範疇,本發明承認其他等效具體實施例。
第一圖為例示構成實施本發明之一或多個態樣之電腦系統的方塊圖;第二圖為根據本發明之一具體實施例之用於第一圖中該電腦系統之一平行處理子系統的方塊圖;第三圖為根據本發明之一具體實施例之第二圖中該一般處理叢集內的一串流多重處理器之一部分的方塊圖;第四圖為根據本發明之一具體實施例之可構成第二圖中平行處理單元之一或多者以實施圖形處理管線的概念圖;第五圖為根據本發明之一具體實施例之顯示資料流過一圖形處理管線的時間圖;第六A圖為圖框指出多重區塊,每個區塊都代表不同實例,且以圖形表示一圖形處理管線耗費多少時間來處理每一實例的概念圖;第六B圖為圖框指出第六A圖所示該實例,但是重新配置以強調每一狀態的圖形處理管線效能之概念圖;第七圖例示根據本發明之一具體實施例之一具有拼貼器單元的圖形處理管線;第八A圖為根據本發明之一具體實施例之描述一圖形處理管線的該效能監控操作、描述資料流過該管線的時間圖;第八B圖為描述根據本發明之一具體實施例之一圖形處理管線內由本機效能監控所產生範例事件的方塊圖;第八C圖為描述根據本發明之一具體實施例之一圖形處理管線所產生事件的方塊圖;第九圖為根據本發明之一具體實施例之用於分析一圖形處 理管線效能之方法步驟的流程圖;第十圖為根據本發明之一具體實施例之用於發出管道及產生重播信號之方法步驟的流程圖;及第十一圖為根據本發明之一具體實施例之用於分析一圖形處理管線效能之方法步驟的流程圖。
在以下描述中,揭示許多特定細節以對本發明有更徹底理解。但是,精通技術人士應瞭解,在沒有一或多個該等特定細節之下還是可實施本發明。
系統概觀
第一圖為例示構成實施本發明之一或多個態樣之電腦系統100的方塊圖。電腦系統100包括一中央處理單元(CPU,Central Processing Unit)102,及透過一互連路徑通訊的一系統記憶體104,其中該路徑可包括一記憶體橋接器105。例如可為北橋晶片的記憶體橋接器105透過匯流排或其他通訊路徑106(例如超傳輸連結),連接一I/O(輸入/輸出)橋接器107。例如可為南僑晶片的輸入/輸出橋接器107接收來自一或多個使用者輸入裝置108(例如鍵盤、滑鼠)的使用者輸入,並透過通訊路徑106和記憶體橋接器105將該輸入轉送至中央處理單元102。一平行處理子系統112透過匯流排或第二通訊路徑113(例如一高速周邊組件互連(PCI,Peripheral Component Interconnect)、加速圖形連接埠(AGP,Accelerated Graphics Port)及/或HyperTransport連結)耦合至記憶體橋接器105。在一具體實施例中,平行處理子系統112為一圖形子系統,其將像素遞送至顯示裝置110,該裝置可為任何傳統陰極射線管、液晶顯示器、發光二極體顯示器等等。系統磁碟114也連接I/O橋接器107,並且可構成儲存內容與應用程式及資料,供中央處理單元102及平行處理子系統112使用。系統磁碟114提供非揮發性儲存裝置給應用程式與資料,並且可包括固定式或可移除式硬碟機、快閃記憶體裝置及CD-ROM(小型光碟唯讀記憶體)、DVD-ROM(數位多用途光碟-ROM)、藍光、HD-DVD(高傳真DVD)或其他磁性、光學或固態儲存裝置。
開關116提供輸入/輸出橋接器107與其他組件,像是網路配接器118及許多外接卡120和121之間的連接。其他組件(未明確顯示),包括萬用序列匯流排(USB,Uuniversal Serial Bus)或其他連接埠連接、小型光碟(CD)光碟機、數位多用途光碟(DVD)光碟機、檔案記錄裝置等等,也可連接輸入/輸出橋接器107。第一圖內顯示的許多通訊路徑,包括特地指名的通訊路徑106和113,都可使用任何合適的協定來實施,例如PCI Express、AGP(加速圖形連接埠)、HyperTransport或任何其他匯流排或點對點通訊協定,以及不同組件之間的連接都可使用業界內已知的不同協定。
在一具體實施例中,平行處理子系統112併入將圖形與視訊處理最佳化的電路,包括例如視訊輸出電路,並且構成一圖形處理單元(GPU,Graphics Processing Uunit)。在另一具體實施例中,平行處理子系統112併入將一般用途處理最佳化的電路,同時保留底層計算架構,本說明書內有更詳細描述。尚且在另一具體實施例中,平行處理子系統112可在單一子系統內合併一或多個其他系統元件,例如結合記憶體橋接器105、中央處理單元102和輸入/輸出橋接器107來形成一晶片上系統(SoC,System on Chip)。
一編譯器101可內嵌在裝置驅動程式103內。編譯器101依照需求編譯程式指令,供平行處理子系統112執行。在此編譯期間,編譯器101可在許多編譯階段上對程式指令套用轉換。在本發明的另一具體實施例中,編譯器101可為單機應用程式。
應瞭解,本說明書顯示的該系統為例示,所以可進行改變與修改。包括橋接器的數量與配置、中央處理單元102的數量以及平行處理子系統112的數量這類連接拓撲可依照需求修改。例如在某些具體實施例中,系統記憶體104直接連接中央處理單元102,而不是透過橋接器,並且其他裝置透過記憶體橋接器105及中央處理單元102與系統記憶體104通訊。在其他替代拓撲中,平行處理子系統112連接輸入/輸出橋接器107或直接連接中央處理單元102,而不是連接記憶體橋接器105。在仍舊其他具體實施例中,輸入/輸出橋接器107和記憶體橋接器105可整合成為單一晶片,替代現有的一或多個分散裝置。大型組件可包括兩或多個中央處理單 元102及兩或多個平行處理子系統112。本說明書顯示的該等特定組件為選擇性;例如可支援任何數量的外接卡或週邊裝置。在某些具體實施例中,省略開關116,並且網路配接器118和外接卡120、121都直接連接I/O橋接器107。
第二圖例示根據本發明之一具體實施例的平行處理子系統112。如所示,平行處理子系統112包括一或多個平行處理單元(PPU,Parallel Processing Unit)202,每一都連結至本機平行處理(PP,Parallel Processing)記憶體204。一般來說,平行處理子系統包括數量為U的PPU,其中U1。(本說明書多個類似物體的實例都用參考號碼標示出該物體,並且括號標示所需的實例。)平行處理單元202及平行處理記憶體204可使用一或多個積體電路裝置實施,例如可程式處理器、特殊應用積體電路(ASIC,Application Specific Integrated Circuit)或記憶體裝置,或以任何其他技術可行方式。
請即重新參考第一圖,如第二圖所示,在一具體實施例中,平行處理子系統112內的某些或全部平行處理單元202為具有彩現管線的圖形處理器,其可構成執行許多操作,這些操作有關透過記憶體橋接器105和第二通訊路徑113,從中央處理單元102及/或系統記憶體104供應的圖形資料產生畫素資料、與本機平行處理記憶體204(可用來當成圖形記憶體,包括例如傳統訊框緩衝區)互動來儲存與更新畫素資料、傳遞畫素資料給顯示裝置110等等。在某些具體實施例中,平行處理子系統112可包括操作當成圖形處理器的一或多個平行處理單元202,及用於一般用途計算的一或多個其他平行處理單元202。平行處理單元202可相同或不同,並且每一平行處理單元202都可擁有一或多個專屬平行處理記憶體裝置或無專屬平行處理記憶體裝置。平行處理子系統112內的一或多個平行處理單元202可輸出資料至顯示裝置110,或平行處理子系統112內的每一平行處理單元202都可輸出資料至一或多個顯示裝置110。
在操作上,中央處理單元102為電腦系統100的主要處理器,控制與協調其他系統組件的操作。尤其是,中央處理單元102發出指令控制平行處理單元202的操作。在某些具體實施例中,中央處理單元102將每一平行處理單元202的指令串流寫入一資料結構(第一圖或第二圖內未 明確顯示),其可位於系統記憶體104內、平行處理記憶體204內或可存取中央處理單元102和平行處理單元202的其他儲存位置內。每一資料結構已經寫入一推送緩衝區的指標,開始在該資料結構內處理該指令串流。平行處理單元202讀取來自一或多個推送緩衝區的指令串流,然後關於中央處理單元102的操作非同步執行指令。利用應用程式透過裝置驅動程式103來控制不同推送緩衝區的排程,指定每一推送緩衝區的執行優先順序。
請即重新參考第二圖以及第一圖,每一平行處理單元202都包括一I/O(輸入/輸出)單元205,其透過連接記憶體橋接器105(或在替代具體實施例中,直接至中央處理單元102)的通訊路徑113,與電腦系統100的剩餘組件通訊。平行處理單元202與電腦系統100剩餘組件的連接也可改變。在某些具體實施例中,平行處理子系統112實施成為可插入電腦系統100內擴充槽的外接卡。在其他具體實施例中,平行處理單元202可與例如記憶體橋接器105或輸入/輸出橋接器107這類匯流排橋接器整合在單一晶片上。仍舊在其他具體實施例中,平行處理單元202的某些或全部元件可與中央處理單元102整合在單一晶片上。
在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。在一具體實施例中,通訊路徑113為一PCI Express連結,其中分配專屬通道給每一平行處理單元202,如業界內所熟知。一輸入/輸出單元205產生在通訊路徑113上傳輸的封包(或其他信號),也從通訊路徑113上接收所有傳入封包(或其他信號),將該等傳入封包導引至平行處理單元202的適當組件。例如:有關處理任務的指令可導引至主介面206,而有關記憶體操作的指令(例如讀取或寫入平行處理記憶體204)可導引至記憶體交換開關單元210。主介面206讀取每一推送緩衝區,並將該推送緩衝區內儲存的該指令串流輸出至一前端212。
每一平行處理單元202都有利地實施一高平行處理架構。如細節內所示,PPU 202(0)包括一處理叢集陣列230,其包括數量為C的一般處理叢集(GPC,General Processing Cluster)208,其中C1。每個一般處理叢集208都可同時執行大量的(例如數百或數千)執行緒,其中每一執行緒都 是一程式的實例。在許多應用當中,不同的一般處理叢集208可分配用於處理不同種類的程式,或用於執行不同種類的計算。一般處理叢集208的分配絕大部分取決於針對每一種程式或計算所賦予的工作負擔。
一般處理叢集208從任務/工作單元207內的工作分配單元當中接收要執行的處理任務,該工作分配單元接收指標來處理任務,其編碼為任務中繼資料(TMD,Task Metadata)(未顯示)並儲存在記憶體內。該指標至任務中繼資料包括在指令串流內,其儲存當成一推送緩衝區並由前端單元212從主介面206接收。可編碼為任務中繼資料的處理任務包括要處理的資料索引,以及定義如何處理該資料的狀態參數與指令(例如要執行哪個程式)。任務/工作單元207從前端212接收任務,並且確保在每一任務中繼資料指定的處理開始之前已經將一般處理叢集208構成有效狀態。一優先順序可指定給每一任務中繼資料,用來排定該處理任務的執行時間。處理任務也可從處理叢集陣列230接收。或者,該任務中繼資料可包括一參數,其控制該任務中繼資料加入處理任務清單(或處理任務指標清單)的頭部或尾部,藉此提供優先順序之上的另一控制等級。
記憶體介面214包括數量為D的劃分單元215,這些單元每一都直接連接一部分平行處理記憶體204,其中D1。如所示,劃分單元215的數量一般等於動態隨機存取記憶體(DRAM,Dynamic Random Access Memory)220的數量。在其他具體實施例中,劃分單元215的數量可不等於記憶體裝置的數量。精通技術人士應瞭解,動態隨機存取記憶體220可用其他合適的裝置取代,並且可為一般傳統設計,因此省略其詳細說明。像是訊框緩衝區或紋理地圖這類著色目標可透過動態隨機存取記憶體220儲存,允許劃分單元215平行寫入每一著色目標的部分,以有效使用平行處理記憶體204的可用頻寬。
一般處理叢集208之任一者都可處理寫入平行處理記憶體204內任一動態隨機存取記憶體220的資料。交換開關單元210構成將每一一般處理叢集208的輸出繞送至任意劃分單元215的輸入或至用於進一步處理的其他一般處理叢集208。一般處理叢集208透過交換開關單元210與記憶體介面214通訊,來讀取或寫入許多外部記憶體裝置。在一具體實施 例中,交換開關單元210具有一連接記憶體介面214來與輸入/輸出單元205通訊,及一連接本機平行處理記憶體204,藉此讓不同一般處理叢集208內的處理核心與系統記憶體104或不在平行處理單元202本機上的其他記憶體通訊。在第二圖所示的具體實施例中,交換開關單元210直接連接輸入/輸出單元205。交換開關單元210可使用虛擬通道,以分隔一般處理叢集208與劃分單元215之間的流量串流。
一般處理叢集208同樣可程式編輯來執行有關廣泛應用的處理任務,包括但不受限於線性與非線性資料傳輸、視訊及/或音訊資料篩選、模型化運算(例如套用實體規則來決定位置、速度及其他物體屬性)、影像著色運算(例如曲線細分著色、影點著色、幾何著色及/或畫素著色器程式)等等。PPU 202可從系統記憶體104及/或本機平行處理記憶體204將資料傳輸進入內部(晶片上)記憶體、處理該資料並將結果資料寫回系統記憶體104及/或本機平行處理記憶體204,其中這種資料可由其他系統組件存取,包括CPU 102或另一平行處理子系統112。
一平行處理單元202可提供任何數量的本機平行處理記憶體204,包括非本機記憶體,並且可任何情況下使用本機記憶體和系統記憶體。例如:平行處理單元202可為統一記憶體架構(UMA,Unified Memory Architecture)具體實施例內的圖形處理器。在這種具體實施例中,提供一些或無專屬圖形(平行處理)記憶體,並且平行處理單元202完全或幾乎完全使用系統記憶體。在統一記憶體架構具體實施例中,平行處理單元202可整合至橋接器晶片或處理器晶片,或提供當成分散式晶片,具有高速連結(例如PCI Express)透過橋接器晶片或其他通訊方式將平行處理單元202連接系統記憶體。
如上述,任何數量的平行處理單元202都可包括在一平行處理子系統112內。例如:單一外接卡上可提供多個平行處理單元202,或多張外接卡可連接通訊路徑113,或一或多個平行處理單元202可整合到一橋接器晶片上。多平行處理單元系統內的平行處理單元202可彼此相同或不同。例如:不同的平行處理單元202可具有不同數量的處理核心、不同大小的本機平行處理記憶體等等。當存在多個平行處理單元202時,這些平 行處理單元可平行操作,以比單一平行處理單元202還要高產量的方式來處理資料。合併一或多個平行處理單元202的系統可在許多設置與外型因素之下實施,包括桌上型、膝上型或手持式個人電腦、伺服器、工作站、遊戲機、嵌入式系統等等。
多重處理任務可在一般處理叢集208上同時執行,並且一處理任務可在執行期間產生一或多個「子」處理任務。任務/工作單元207接收該等任務,並且動態排定要由一般處理叢集208執行的處理任務以及子處理任務。
第三圖為根據本發明之一具體實施例之第二圖中的一般處理叢集208內之串流多重處理器(SM)310的方塊圖。每個一般處理叢集208都可構成同時執行大量執行緒,其中「執行緒」術語代表在特定輸入資料集上執行的特定程式之實例。在某些具體實施例中,單一指令、多重資料(SIMD,Single-Instruction,Multiple-data)指令發行技術用於支援大量執行緒的平行執行,而不用提供多個獨立指令單元。在其他具體實施例中,單一指令、多重執行緒(SIMT,Single-Instruction,Multiple-thread)技術用於支援大量一般同步執行緒的平行執行,使用共用指令單元,其構成發出指令至每一GPC 208內的處理引擎集。不同於一單一指令、多重資料執行引擎,其中所有處理區域一般都執行一致的指令,單一指令、多重執行緒執行允許不同執行緒更迅速遵循分散的執行路徑透過一已知執行緒程式。業界內精通技術人士應瞭解,單一指令、多重資料處理區域代表一單一指令、多重執行緒處理區域的函數子集。
透過將處理任務分配至一或多個串流多重處理器(SM,Streaming Multiprocessor)310的管線管理員(未顯示)可有利地控制一般處理叢集208的操作,其中每一串流多重處理器310都構成處理一或多個執行緒群組。每一串流多重處理器310都包括一指令L1快取370,其構成透過一般處理叢集208內的一L1.5快取(未顯示)接收指令與常數。線程束排程器與指令單元312接收來自指令L1快取370的指令與常數,並且根據該等指令與常數控制本機暫存檔304及串流多重處理器310功能單元。串流多重處理器310功能單元包括N個執行(執行或處理)單元302及P個載入儲 存單元(LSU,Load-Store Unit)303。該串流多重處理器功能單元可管線化,允許在先前指令完成之前發出新指令,如業界所熟知。本發明可提供任何功能執行單元組合。在一具體實施例中,該等功能單元支援許多種運算,包括整數與浮點演算(例如加法與乘法)、比較運算、布林運算(AND、OR、XOR)、位元位移和許多代數函數的計算(例如平面插值、三角函數及對數函數等等);並且該相同功能單元可用來執行不同運算。
此傳輸至特定一般處理叢集208的系列指令構成一執行緒的,如本說明書先前所定義,並且透過串流多重處理器310內的平行處理引擎(未顯示)的特定數量同時執行的執行緒之集合在此稱為「線程束」或「執行緒群組」。如本說明書所使用,「執行緒群組」代表在不同輸入資料上同時執行相同程式的執行緒群組,其中該群組的一執行緒指派給串流多重處理器310內不同的處理引擎。一執行緒群組可包括數量比串流多重處理器310內處理引擎數量還要少的執行緒,在此案例中,某些處理引擎會在循環期間處理該執行緒群組時閒置。執行緒群組也可包括數量比串流多重處理器310內處理引擎數量還要多的執行緒,在此案例中,將在連續時脈循環上進行處理。因為每一串流多重處理器310都可同時支援最多G個執行緒群組,接著在任何已知時間上一般處理叢集208內都可執行最多G*M個執行緒群組之系統,其位於包括M個串流多重處理器310的一般處理叢集208內。
此外,在串流多重處理器310內可同時啟用複數個相關執行緒群組(在不同執行階段內)。此執行緒群組的集合稱為「合作執行緒陣列」(CAT,Cooperative Thread Array)或「執行緒陣列」。特定合作執行緒陣列的大小等於m*k,其中k為執行緒群組內同時執行的執行緒數量,通常為串流多重處理器310內平行處理引擎數量的整數倍數,並且m為串流多重處理器310內同時啟用的執行緒群組數量。合作執行緒陣列的大小一般由程式設計師以及該合作執行緒陣列可用的硬體資源數量(例如記憶體或暫存器)來決定。
在本發明的具體實施例中,吾人想要使用一計算系統的平行處理單元202或其他處理器,運用執行緒陣列以執行一般用途計算。該執 行緒陣列內的每一執行緒都可指派一獨一的執行緒識別碼(「執行緒ID」),其可在該執行緒執行期間存取該執行緒。該執行緒ID可定義為一維度或多維度數值,控制該執行緒處理行為的許多態樣。例如:一執行緒ID可用於決定設定一執行緒的哪個輸入資料部分要處理及/或決定設定一執行緒的哪個輸入資料部分要產生或寫入。
一序列的每個執行緒指令可包括至少一指令,其定義該代表性執行緒與該執行緒陣列之一或多個其他執行緒之間的合作行為。例如:該序列的每一執行緒指令可包括:一中斷指令,用以中斷在該序列內的特定點上該代表執行緒的運算執行,直到一或多個其他執行緒到達該特定點為止;一儲存指令,讓該代表執行緒將一或多個其他執行緒可存取的資料儲存至一共用記憶體內;一讀取與更新指令,讓該代表執行緒根據其執行緒ID以自動讀取與更新一共用記憶體內的一或多個該等其他執行緒已經存取過的資料、等等。該合作執行緒陣列程式也可包括一計算指令,用以計算要從該共用記憶體內讀取資料的位址,其中該位址為執行緒ID的函數。利用定義合適的功能並且提供同步技術,資料可利用CAT的一執行緒寫入共用記憶體內的一已知位置,並且以可預測方式用相同合作執行緒陣列的不同執行緒從該位置當中讀取。因此,支援在執行緒之間共用的任何資料圖案,並且一合作執行緒陣列內的任何執行緒都可與相同合作執行緒陣列內任何其他執行緒共用資料。在合作執行緒陣列執行緒之間共用的資料內容(若有的話)由該合作執行緒陣列程式決定;如此吾人了解在使用合作執行緒陣列的特定應用當中,根據該合作執行緒陣列程式,合作執行緒陣列的執行緒彼此之間不會確實共用資料,並且在本說明書可同時使用「合作執行緒陣列」與「執行緒陣列」等詞。
串流多重處理器310提供具備不同存取階層的晶片上(內部)資料儲存。特殊暫存器(未顯示)可由載入儲存單元303讀取但是無法寫入,並且可用於定義每一直執行緒「位置」的參數。在一具體實施例中,特殊暫存器包括每一執行緒(或串流多重處理器310內每一執行單元302)一暫存器,其儲存一執行緒ID;每一執行緒ID暫存器都只能由個別一執行單元302存取。特殊暫存器也可包括額外暫存器,可由執行任務中繼資料(或由 所有載入儲存單元303)所呈現相同處理任務的所有執行緒讀取,其儲存一合作執行緒陣列識別碼、該合作執行緒陣列維度、該合作執行緒陣列所屬網格的維度(或若任務中繼資料編碼一佇列任務而非一網格任務時的佇列位置)以及指派合作執行緒陣列的任務中繼資料之識別碼。
若任務中繼資料為一網格任務中繼資料,則執行任務中繼資料會導致啟動並執行固定數量的合作執行緒陣列,來處理佇列內所儲存的固定數量資料。合作執行緒陣列的數量依照網格寬度、高度與深度的乘積來指定。該固定數量的資料可儲存在任務中繼資料內,或任務中繼資料可儲存將由合作執行緒陣列處理的資料之指標。任務中繼資料也儲存該合作執行緒陣列所執行程式的開始位址。
若任務中繼資料為佇列任務中繼資料,然後使用任務中繼資料的佇列功能,表示要處理的資料量並不需要固定。佇列記錄儲存資料,供指派給任務中繼資料的該等合作執行緒陣列處理。該等佇列記錄也呈現執行緒執行期間由另一任務中繼資料產生的子任務,藉此提供巢狀平行。一般來說,執行緒的執行或包括該執行緒的合作執行緒陣列會中止,直到子任務執行完成為止。該佇列可儲存在任務中繼資料內,或與任務中繼資料分開,在此案例中任務中繼資料儲存至該佇列的佇列指標。有利的是,由該子任務產生的資料可寫入該佇列,同時任務中繼資料代表已經執行的該子任務。該佇列可實施為一圓形佇列,如此資料總量並不受限於該佇列的大小。
屬於一網格的合作執行緒陣列具有隱含的網格寬度、高度和深度參數,指出該網格內個別合作執行緒陣列的位置。在初始化期間會寫入特殊暫存器,以回應透過前端212從裝置驅動程式103接收命令,並且在一處理任務期間不會改變。前端212排程執行每一處理任務。每一合作執行緒陣列都關聯於一特定任務中繼資料,以便同時執行一或多個任務。此外,單一一般處理叢集208可同時執行多個任務。
一參數記憶體(未顯示)儲存可由相同合作執行緒陣列(或任何載入儲存單元303)內任何執行緒讀取但無法寫入的執行時間參數(常數)。在一具體實施例中,裝置驅動程式103在導引串流多重處理器310開 始執行使用這些參數的任務之前,提供參數該參數記憶體。任何合作執行緒陣列內的任何執行緒(或串流多重處理器310內的任何執行單元)都可透過記憶體介面214存取全域記憶體。全域記憶體之一部分可儲存在L1快取320內。
每一執行緒都使用的本機暫存檔304當成暫存空間;每一暫存器都分配給一執行緒專用,並且任何本機暫存檔304內的資料都只能由分配給該暫存器的該執行緒存取。本機暫存檔304可實施為實體上或邏輯上區分成P個通路的暫存檔,每一通路都具有某些數量的記錄(在此每一記錄都可儲存例如32位元字)。一通路指派給該N個執行單元302及P個載入儲存單元載入儲存單元303之每一者,並且不同通路內的對應記錄可填入執行相同程式的不同執行緒之資料,以幫助單一指令、多重資料執行。通路的不同部分可分配給該G個同時執行緒群組中不同的執行緒,如此本機暫存檔304內的一已知記錄只能由特定執行緒存取。在一具體實施例中,本機暫存檔304內的特定記錄保留用於儲存執行緒識別碼,實施該等特殊暫存器之一者。此外,一統一L1快取320儲存N個執行單元302及P個載入儲存單元載入儲存單元303的每一通路之統一或常數值。
共用記憶體306可由單一合作執行緒陣列內的執行緒存取;換言之,共用記憶體306內的任何位置都可由相同合作執行緒陣列內任何執行緒(或串流多重處理器310內任何處理引擎)來存取。共用記憶體306可實施為具有互連的一共用暫存檔或共用晶片上記憶體,允許任何處理引擎從該共用記憶體內任何位置讀取或寫入。在其他具體實施例中,共用的狀態空間可映射至晶片外記憶體的每一合作執行緒陣列區域,並且快取在L1快取320內。該參數記憶體可實施為該相同共用暫存檔或實施共用記憶體306的共用快取記憶體內一指定區段,或實施為載入儲存單元303具有唯讀存取的一個別共用暫存檔或晶片快取記憶體。在一具體實施例中,實施該參數記憶體的區域也用於儲存該合作執行緒陣列ID和任務ID,以及合作執行緒陣列和網格尺寸或佇列位置,實施該特殊暫存器的位置。串流多重處理器310內的每一載入儲存單元303都連結至統一位址映射單元352,將提供用於載入與儲存統一記憶體空間內所指定指令的一位址轉換至 每一分散記憶體空間內的一位址。因此,利用指定該統一記憶體空間內的一位址,可使用一指令來存取任何該本機、共用或全域記憶體空間。
每一串流多重處理器310內的L1快取320都可用於快取私用每一執行緒本機資料,並且也快取每一應用程式全域資料。在某些具體實施例中,該每一合作執行緒陣列共用資料可快取在L1快取320內。載入儲存單元303可透過一記憶體與快取互連380耦合至共用記憶體306與L1快取320。
應瞭解,本說明書顯示的該核心架構為例示,所以可進行改變與修改。任何數量的處理單元,例如串流多重處理器310可包括在一般處理叢集208內。此外,如第二圖所示,平行處理單元202可包括任意數量功能彼此類似的一般處理叢集208,如此執行行為並不取決於接收特定處理任務的一般處理叢集208。此外,每個一般處理叢集208都得利於與其他一般處理叢集208無關的操作,運用分離並分散的處理單元、L1快取,以執行一或多個應用程式的任務。
圖形管線架構
第四圖為根據本發明之一具體實施例之可構成第二圖中的平行處理單元202之一或多者實施一圖形處理管線400的概念圖。例如:串流多重處理器310之一者可構成執行一頂點處理單元415、一幾何處理單元425、及一片段處理單元460之一者或多者的功能。資料組合器410、圖元組合器420、光柵器455、及光柵操作單元465的功能也可由一般處理叢集208與一對應劃分單元215內的其他處理引擎所執行。此外,可使用一或多個功能的專屬處理單元,實施圖形處理管線400。
資料組合器410匯集高階表面、圖元等等的頂點資料,並且將包括該等頂點屬性的該頂點資料輸出至頂點處理單元415。頂點處理單元415為一可程式執行單元,其構成執行頂點著色器程式,依照該頂點著色器程式所規定以照明與轉換頂點資料。例如:頂點處理單元415可程式編輯成將該頂點資料從一物件型座標代表(物件空間)轉換成一替代型座標系統,例如世界空間或標準化裝置座標(NDC,Normalized Device Coordinates)空間。頂點處理單元415可用資料組合器410讀取L1快取320、平行處理 記憶體204或系統記憶體104內儲存的資料,用來處理該頂點資料。
圖元組合器420接收來自頂點處理單元415的頂點屬性,依照需求讀取儲存的頂點屬性,並且建構圖形圖元讓幾何處理單元425處理。圖形圖元包括三角形、線段、點等等。幾何處理單元425為一可程式執行單元,其構成執行幾何著色器程式,依照該幾何著色器程式所規定轉換接收自圖元組合器420的圖形圖元。例如:幾何處理單元425可程式編輯成將該等圖形圖元分成一或多個新圖形圖元,並且計算參數,例如平面等式係數,用來將該等新圖形圖元光柵化。
在某些具體實施例中,幾何處理單元425也可新增或刪除該幾何串流內的元件。幾何處理單元425輸出將新圖形圖元指定至一視埠縮放、消隱及裁切單元450的該等參數與頂點。幾何處理單元425可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該幾何資料。視埠縮放、消隱與裁切單元450執行裁切、消隱與視埠縮放,並且將處理過的圖形圖元輸出至一光柵器455。
光柵器455掃描轉換新圖形圖元,並且將片段與覆蓋資料輸出至片段處理單元460。此外,光柵器455可構成執行z消隱及其他z型最佳化。
片段處理單元460為一可程式執行單元,其構成執行片段著色器程式,依照該片段著色器程式所規定以轉換接收自光柵器455的片段。例如:片段處理單元460可程式編輯成執行操作,例如透視修正、紋理映射、著色、混色等等,以產生輸出至光柵操作單元465的已著色片段。片段處理單元460可讀取儲存在平行處理記憶體204或系統記憶體104內的資料,用來處理該片段資料。根據該程式編輯的取樣率,片段可依照像素、取樣或其他粒度來著色。
光柵操作單元465為一種處理單元,其執行光柵操作,例如網版、z測試、混色等等,並且將像素資料當成處理過的圖形資料,以便儲存在圖形記憶體內。該處理過的圖形資料可儲存在圖形記憶體內,例如平行處理記憶體204,及/或系統記憶體104,用於顯示在顯示裝置110上或用於由中央處理單元102或平行處理子系統112進一步處理。在本發明的某 些具體實施例中,光柵操作單元465構成將寫入記憶體的z或顏色資料壓縮,並且將從記憶體讀取的z或顏色資料解壓縮。
圖形處理管線400構成分析「實例」的效能特性,其為在特定「狀態」上執行的相關方法的集合,例如「繪圖呼叫」。方法包括由驅動程式103傳送的呼叫,以命令圖形處理管線400繪製特定物件。方法也包括改變一著色狀態的指令。一實例通常包括一或多個用以設定一特定著色狀態的方法,及在該著色狀態下完成的一或多個繪圖呼叫。
為了分析實例的效能,驅動程式103發出一等待待命方法,接著「PMTrigger」方法,接著一實例,接著等待待命方法,接著「PMTrigger」方法。該「等待待命」方法導致在處理傳送至該圖形處理管線的額外方法之前,該管線等待直到該圖形處理管線清空資料與指令。該PMTrigger(或「效能監控觸發」)方法導致圖形處理管線400切換(進入或離開)一效能監控模式,其中圖形處理管線400提供效能資料給該圖形處理管線400處理的該等方法。改變該狀態的該方法導致該等方法後續傳送要在該狀態上處理的該狀態改變指令,至要求該變更的地方。驅動程式103發出進入圖形處理管線400的該等方法導致圖形處理管線400隔離用來分析的實例,並且處理該實例及產生效能資料。
獲得該實例何時進入圖形處理管線400,以及該實例何時離開圖形處理管線400之效能資料。這兩時間允許決定一實例的處理時間。效能資料也可包括由圖形處理管線400在處理一實例時完成的指定工作單元之一或多個計數。這種工作單元可包括例如已著色的像素。
觸發用於拼貼工作負載的效能事件擷取
第五圖為顯示根據本發明之一具體實施例之資料流過一圖形處理管線400的時間圖。驅動程式103傳送一等待待命方法502-1、一PMTrigger方法504-1、一實例506、一第二等待待命方法502-2以及一第二PMTrigger方法504-2。該等待待命方法502-1導致管線400清除所有資料。如此,該圖形一開始在圖形處理管線400內並無資料,如待命區域508所指出。當圖形處理管線400已經清空時,圖形處理管線400開始處理實例506。區塊516代表資料流過有關實例506的圖形處理管線400的階段。線 條518-1和518-2分別指出該實例進入與離開的時間。線條518-1和518-2可一起用來決定實例506的總消耗時間522。
第六A圖為圖框指出多重區塊600、602、604、606、608、610、612和614,每個區塊都代表不同實例(例如:該實例0代表一第一實例、該實例1代表一第二實例,以此類推),且以圖形表示一圖形處理管線耗費多少時間來處理每一實例的概念圖。第六A圖描述的該等實例可包括用於繪製一指定訊框的實例。圖形處理管線400在多個不同狀態下處理多個實例,以繪製該訊框。對應至區塊600、602、614的實例在狀態0下繪製、對應至區塊604、606、610和612的實例在狀態1下繪製,並且對應至區塊608的實例在狀態2下繪製。
第六B圖為圖框指出第六A圖所示該實例,但是重新配置以強調每一狀態內圖形處理管線400效能的概念圖。效能分析可由決定圖形處理管線400耗費多少時間來執行每一狀態內工作所構成,如此第六B圖指出在狀態1下的處理時間總量620、在狀態0下的處理時間總量622及在狀態2下的處理時間總量624。
在結合第五圖至第六B圖描述的該圖形處理管線下,由於工作是逐實例處理,所以很容易就可決定耗費在一特定狀態上的處理時間,就是特定工作類型的計數。不過,如關於第七圖至第十圖所描述,其中討論執行拼貼的一圖形處理管線,由於工作是逐拼貼處理,所以不容易決定一特定狀態的處理時間。如此,第七圖至第十圖提供分析其中執行拼貼的一圖形管線效能之技術。
第七圖為例示根據本發明之一具體實施例之一具有拼貼器單元753的圖形處理管線700。如所示,圖形處理管線700包括上游單元710、一拼貼器單元753及下游單元720。上游單元710可包括許多單元,例如一資料組裝器(未顯示)、向量處理單元(未顯示)、圖元組裝器(未顯示)、幾何處理單元(未顯示)及視埠縮放、消隱與裁切單元(未顯示)。下游單元720可包括許多單元,例如一光柵器(未顯示)、片段處理單元(未顯示)以及光柵操作單元765。拼貼器單元753接收來自上游單元710的圖元。拼貼器單元753結合可能與不同實例相關聯的圖元,並且根據該等圖元屬於哪個「拼貼」 來辨識該等圖元。拼貼為與圖元相關聯的畫面區段。拼貼器單元753等待直到來自多個實例的圖元已經到達拼貼器單元753,並且決定如何將這些圖元組合在一起。拼貼器單元753將圖元結合至管道,供下游單元720處理。拼貼器單元753將管道結合成拼貼,其中每一管道代表獲自於相同實例的該拼貼部分。
因為拼貼的本質,在下游單元內並未一次處理整個實例。拼貼的進入與離開時間並不需要提供有關實例處理時間的資訊,並且無法使用類似第五圖至第六B圖的方式來產生實例的總處理時間。為了允許決定具有拼貼器單元的一圖形處理管線之效能相關資料,本發明的具體實施例透過該圖形處理管線,傳播具有書籤的本機效能監控觸發方法。耦合該圖形處理管線內的多個單元之本機效能監控偵測該本機效能監控觸發方法與書籤,並且產生具有與處理拼貼和實例相關資料的效能事件。
拼貼器單元753耦合至兩本機效能監控780-1、780-2,本機效能監控780-1耦合至拼貼單元753的一進入點,並且本機效能監控780-2耦合至拼貼器單元753的一離開點。一第三本機效能監控780-3耦合至圖形處理管線700的下游單元720內光柵操作單元(ROP,Raster Operations Unit)765。
驅動程式103構成透過圖形處理管線700,傳送一本機效能觸發方法(在此也統稱為「PMLocalTrigger(書籤)」)。本機效能觸發方式具有一書籤,其識別與該本機效能觸發方式相關聯的該實例。圖形處理管線700內的單元都構成透過圖形處理管線700傳播PMLocalTrigger(書籤)方法。效能監控780構成偵測PMLocalTrigger(書籤),並且產生一效能事件回應接收到PMLocalTrigger(書籤)。
該效能事件用來識別一管道到達圖形處理線路700內一特定單元的時間。該效能事件包括識別哪個本機效能監控產生該事件的資料(「效能監控ID」)、觸發事件產生的PMLocalTrigger(書籤)之該書籤值、代表產生該效能事件的時間之時間記錄,及用於依所要記錄額外資料的一或多個計數器。該時間記錄允許決定一管道已經由產生該效能事件的該單元傳遞之時間。該書籤允許決定哪個實例與該時間記錄相關聯。該效能監控 ID識別哪個單元產生該事件。該等計數器可依所要來使用,並且例如可用於記錄在特定時間當中已經執行多少特定類型的工作單元。該事件也包括一先前書籤值,指出傳送該先前事件的哪個實例與該本機效能監控相關聯。該事件也包括該書籤以及該先前書籤的計數器,指出關於一特定書籤值的一事件已經傳送之次數。書籤與書籤計數器一起表示一特定管道。
驅動程式103構成在每個實例開頭上傳送一PMLocalTrigger(書籤)。不過,因為可為有關每一實例的多重管道,則由驅動程式103傳送的該PMLocalTrigger(書籤)方法只導致本機效能監控780產生有關一特定實例的該第一管道的一事件。如此,每次在與一特定實例相關聯的該第一管道之後一管道傳送至下游單元720時,拼貼器單元753構成「重播」由驅動程式103傳送的該PMLocalTrigger(書籤)方法。該PMLocalTrigger(書籤)方法的「重播」為已經針對傳送進入下游單元720的一實例內的該第一管道傳送之該PMLocalTrigger(書籤)方法的副本。如此該重播PMLocalTrigger(書籤)也透過下游單元720傳播,並且也導致下游單元720內的本機效能監控780,例如光柵操作單元765內的本機效能監控780-3,產生內含效能相關資料的一效能事件,例如效能監控ID、該書籤值、該效能事件已經產生時的該時間記錄及用於記錄所要額外資料的一或多個計數器。
本機效能監控780將該等效能事件傳送至記憶體,供構成分析效能資料的軟體或硬體模組分析。在一具體實施例中,在一電腦上運行的單機應用程式可接收該效能事件,並且產生效能度量標準。在另一具體實施例中,驅動程式103接收該等效能事件,並且產生效能度量標準。
第八A圖為根據本發明之一具體實施例之描述一圖形處理管線700的該效能監控操作、描述資料如何流過該管線的時間圖。驅動程式103傳送一等待待命方法、一效能監控觸發方法、一本機效能觸發方法和實例及另一等待待命方法和效能監控觸發方法。上游單元710處理有關該等實例的資料。由上游單元710處理的該資料包括有關實例1的資料814、有關實例2的資料816、及有關實例3的資料818。此外,上游單元710傳播具有資料814的一本機效能觸發方法、具有資料816的一本機效能 觸發方法、及具有資料818的一本機效能觸發方法。拼貼器單元753結合資料814、816、818,並且發送管道824、826、828進入下游單元720。拼貼器單元753傳送本機效能觸發方法,並且重播該等本機效能觸發方法進入下游單元720。光柵操作單元765處理管道824、826、828。
拼貼器單元753接收來自上游單元710的本機效能觸發方法。本機效能監控780-1在接收到本機效能觸發方法時產生事件829。拼貼器單元753將本機效能觸發方法傳播至下游單元720。當管道824、826、828已經發出時,本機效能監控780-2產生事件825、827。事件825為本機效能觸發方法從拼貼器單元753傳播時產生的該等事件,事件827為從拼貼器單元753傳播重播時產生的該等事件,事件835為本機效能觸發方法到達光柵操作單元765時產生的該等事件,事件837為重播方法到達光柵操作單元765時產生的該等事件。
來自與每一管道「接壤」的事件之該等時間記錄提供有關該處理週期的資訊給每一管道。來自由耦合至拼貼單元753離開點的該本機效能監控780-2所產生該事件之該時間記錄,可從來自由耦合至光柵操作單元765的該本機效能監控780-3所產生該事件之該時間記錄當中減掉,以獲得拼貼單元753與光柵操作單元765之間的該處理週期。針對每一管道,在該第一管道到達(開始處理)及離開(結束處理)一特定單元時產生事件。利用將該管道開始在本機效能監控780-2上處理時產生的該時間記錄,從來自當一管道在耦合至光柵操作單元765的本機效能監控780-3上結束處理時所產生該事件之該時間記錄當中減去,可獲得下游單元720內一管道的處理週期。
第八B圖為描述根據本發明之一具體實施例之一圖形處理管線700內由本機效能監控780所產生範例事件的方塊圖。第八B圖內列出的該等事件由多重本機效能監控780所產生,並且以全域時間順序顯示。如所見,時間記錄856從最頂端事件遞增至最底端事件。每一事件都包括一效能監控ID 852、一事件ID 854、一時間記錄856、一先前書籤編號858和先前書籤計數器860、一書籤編號862和書籤計數器864、及一或多個效能監控計數器866和868。
效能監控ID 852指出哪個效能監控產生該事件。事件ID 854指出該事件的編號。一效能監控所產生的一第一事件可具有1的事件ID,而該相同效能監控所產生的一第二事件可具有2的事件ID,以此類推。時間記錄856指出產生該事件的時間。在第八B圖和第八C圖,以任意時間單位顯示該時間。事件可用時脈循環、時間單位或其他方式儲存時間。
書籤編號862為本機效能監控780偵測到的該書籤值,並且使用該PMLocalTrigger(書籤)傳播透過圖形處理管線700。本機效能監控780儲存每一書籤值的計數器,並且將書籤計數器864包括在該事件內。例如:當第一事件產生具有一第一書籤值時,該計數值為1,當第二事件產生具有該相同第一書籤值時,該計數值為2。先前書籤858指出就在一特定本機效能監控780上該當前事件之前產生的該事件之書籤編號。因此,若產生第一事件的一本機效能監控具有2的書籤,然後產生具有3的書籤之第二事件時,則該第二事件的該先前書籤編號為2。該先前書籤編號用來指出哪個管道之前已經由圖形處理管線700的特定部分處理過,並且該書籤編號用來指出哪個管道接下來由圖形處理管線700的相同部分處理。先前書籤計數器860使用特定先前書籤值儲存一事件的發出次數,與書籤值862和書籤計數器864所用的方式類似。
一指定書籤862值與書籤計數器864值的組合特別地指出在該事件之後接著哪個管道,同時一指定先前書籤858值與先前書籤計數器862值的組合特別地指出哪個管道在該事件之前。一特殊先前書籤值可用來指出該事件之前是否沒有管道,例如當該管線因為一等待待命信號而清空時。在第八B圖內,此特殊先前書籤值用「-」表示。
效能監控計數器866、868為一般用途計數器,可由該本機效能監控用來記錄任何值。第八B圖和第八C圖內並未顯示值,但是效能監控計數器866、868可計數任何值。
事件825-1具有一對應實例1的書籤值,指出事件825-1之後的該管道有關實例1。事件825-1內的該書籤計數器指出在事件825-1之後的管道824為傳送至下游單元720內有關實例1的該第一管道。該先前書籤與先前書籤計數器指出在該第一管道之前並未傳送有關實例1的任何 東西。事件825-1具有一時間記錄,指出管道824-1何時從拼貼器單元753傳送至下游單元720。
事件835-2具有對應至實例1的一先前書籤值,指出產生事件835-2之前由光柵操作單元765處理的該管道關聯於實例1。事件835-2也具有一計數器,指出與實例1相關聯的哪個管道與事件835-2相關聯。該計數器值指出在產生事件835-2之前由光柵操作單元765處理過的該管道為與實例1相關聯的第一管道824-1。事件835-2也具有一時間記錄,指出事件835-2何時產生。
第八C圖為描述根據本發明之一具體實施例之由一圖形處理管線700所產生事件的方塊圖。由拼貼器單元753產生的事件825-1與由光柵操作單元765產生的事件835-2一起,指出從傳送管道824至下游單元720到由光柵操作單元765處理管道824所經過的時間。管道824開始由下游單元720處理時產生事件825-1,並且下游單元720結束處理管道824時產生事件835-2。同樣地,事件825-2和事件835-3指出從傳送管道826至下游單元720到由光柵操作單元765處理管道826所經過的時間。事件825-3和837-1指出管道828的經過時間。其他事件825、827、835和837指出其他管道的經過時間。
如所示,來自第一單元的事件可與來自在更下游的一第二單元之事件配對,以決定兩事件之間一管道的經過時間。來自該第一單元的該事件內該書籤與書籤計數器值,與來自該第二單元的事件內該先前書籤與先前書籤計數器值比較。若來自該第一單元的該事件內書籤862與書籤計數器864之值,與來自該第二單元的事件內先前書籤858與先前書籤計數器860之值匹配,則該第一和第二事件與一管道「接壤」。該第一事件提供其上該管道透過該第一單元的該時間之一時間記錄,並且該第二事件提供其上該管道透過該第二單元的該時間之一時間記錄。書籤862提供與該管道相關聯的該實例給該第一事件,並且書籤計數器值864提供該管道編號給該第一事件。
事件825-1、835-2內的資料指出與實例1相關聯的管道1之經過時間為328-275=53時間單位。事件825-2和835-3內的資料指出 與實例1相關聯的管道2之經過時間為359-305=54時間單位。事件825-3和837-1內的資料指出與實例1相關聯的管道3之經過時間為390-333=57時間單位。該第一單元與該第二單元之間一實例的總處理時間,可由加總由與該實例相關聯的拼貼契丹元753傳送的所有管道之經過時間來決定。
第九圖為根據本發明之一具體實施例之用於分析一圖形處理管線700效能之方法步驟的流程圖。雖然已經結合第一圖至第四圖及第七圖至第八B圖來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法900從步驟902開始,其中驅動程式103將一或多個等待待命方法、一或多個PMTrigger方法、一或多個PMLocalTrigger(書籤)方法及一或多個實例提供給圖形處理管線700。該PMLocalTrigger(書籤)方法進行每一實例,並且該書籤值為識別該PMLocalTrigger(書籤)方法進行的該實例之值。
在步驟904,圖形處理管線700內的上游單元710處理實例以產生資料。PMLocalTrigger(書籤)方法也到達拼貼器單元753。在步驟906內,拼貼器單元753進入點偵測PMLocalTrigger(書籤)方法。在步驟908內,耦合至拼貼器單元753進入點的一第一本機效能監控780-1產生由拼貼器單元753進入點偵測,並且用於PMLocalTrigger(書籤)方法的事件。在步驟910內,拼貼器單元753接收來自上游單元710的資料,並將資料結合形成一組合的工作負載。在步驟912,拼貼器單元753發出管道給該組合的工作負載,並且產生重播。底下將參閱第十圖,更詳細描述步驟912。
在步驟914,拼貼器單元753離開點偵測PMLocalTrigger(書籤)方法並重播。在步驟916,耦合至拼貼器單元753離開點的一第二本機效能監控780-2產生由拼貼器單元753離開點偵測,並且與PMLocalTrigger(書籤)方法相關聯的事件與重播。在步驟918內,管道傳播透過下游單元720。在步驟920,光柵操作單元765接收管道並偵測PMLocalTrigger(書籤)方法。在步驟922,第三本機效能監控780-3產生由光柵操作單元765所接收,並且與PMLocalTrigger(書籤)方法相關聯的事件與重播。
第十圖為根據本發明之一具體實施例之用於執行第九圖的步驟912,包括發出管道及產生重播信號之方法步驟的流程圖。雖然已經結合第一圖至第四圖及第七圖至第八B圖來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1000從步驟1002開始,其中拼貼器單元753發出一管道至下游單元720。在步驟1004,拼貼器單元753檢查該管道是否為要傳送至下游單元720內,並且有關一特定實例的該第一管道。若該管道為一實例內的該第一管道,則PMLocalTrigger(書籤)方法位於圖形處理管線700內,拼貼器單元不產生一重播,並且該方法前往步驟1006。在步驟1006,拼貼器單元753將該PMLocalTrigger(書籤)方法傳播至下游單元720。在步驟1007內,拼貼器單元753檢查拼貼器單元753是否將另一管道傳播至下游單元720。若拼貼器單元753傳播另一管道,則該方法回到步驟1002。
在步驟1004,若該管道並非一實例內的該第一管道,則該方法前往步驟1008。在步驟1008,拼貼器單元753決定用於該當前管道的該書籤值。在步驟1010,拼貼器單元753重播該當前管道的該PMLocalTrigger(書籤)方法。然後方法前往步驟1007。
第十一圖為根據本發明之一具體實施例之用於分析一圖形處理管線700效能之方法步驟的流程圖。雖然已經結合第一圖至第四圖以及第七圖至第八B圖來描述該等方法步驟,不過精通技術人士應瞭解,構成執行該等方法步驟(以任何順序)的任何系統都在本發明範疇內。
如所示,方法1100從步驟1102開始,其中驅動程式103將等待待命方法、PMTrigger方法、PMLocalTrigger(書籤)方法以及實例提供給圖形處理管線700。該管線開始處理該等實例,並且產生效能事件。在步驟1104,驅動程式103接收指出圖形處理管線700的效能資料之效能事件。在步驟1106,驅動程式103分析效能事件,以決定傳送至該管線的該等實例之效能資料。分析效能事件可包括分析不同事件上的時間記錄,以決定處理特定工作負載的週期。分析效能事件也可包括分析一般用途計數 器,以決定由圖形處理管線700所執行的特定工作類型數量,例如處理許多實例時著色的像素數量。
總結來說,上述具體實施例提供功能幫助具有拼貼器單元的圖形處理管線之效能分析。一驅動程式構成將一效能監控觸發方法傳送至圖形處理管線。本機效能監控構成耦合至該拼貼器單元,以及耦合至該管線內一下由位置,例如光柵操作單元。該本機效能監控在該校能監控觸發方法的偵測之下,產生包括效能相關資料,例如一時間記錄的一「事件」。該拼貼器單元確定一效能監控觸發方法以及識別一實例的對應書籤都傳送給與每一實例相關聯的每一管道。針對與一實例相關聯的該第一管道,該原始效能監控觸發方法已經在該管線內。不過,針對與一特定實例相關聯的該第一管道之後每一管道,該拼貼器單元產生一「重播」效能監控觸發方法以及對應書籤。由該本機效能監控產生的該等事件可送出至記憶體,並且由電腦上運行的軟體分析,以決定處理每一管道的經過時間。事件內可提供計數器,並且可提供與指定工作類型處理數量相關的資訊給一特定管道。
上述具體實施例的一項優點為可針對整個實例,使用一拼貼器單元針對一管線獲得效能資料,該單元將實例細分成拼貼並且與來自不同實例的拼貼交錯。
本發明之一具體實施例可實施當成搭配電腦系統使用的程式產品。該程式產品的程式定義該等具體實施例(包括本說明書所述的方法)的功能,並且可包括在電腦可讀取儲存媒體上。例示的電腦可讀取儲存媒體包括但不受限於:(i)其上資訊永久儲存的不可抹寫儲存媒體(例如電腦內的唯讀記憶體裝置,例如小型碟片唯讀記憶體(CD-ROM)光碟機可讀取的CD-ROM光碟、快閃記憶體、ROM晶片或任何一種固態非揮發性半導體記憶體);及(ii)上其儲存可變資訊的可抹寫儲存媒體(例如磁碟機或硬碟內的磁碟或任何一種固態隨機存取半導體記憶體)。
在此已經參考特定具體實施例說明本發明。不過精通此技術的人士將會了解,在不背離申請專利範圍內公佈之本發明廣泛精神以及領域下,可進行許多修改與變更。因此前述說明與圖式僅供參考而不做限制。
因此,本發明具體實施例的範疇公布於以下的申請專利範圍內。
710‧‧‧上游單元
720‧‧‧下游單元
753‧‧‧拼貼器單元
814-818‧‧‧資料
825-829‧‧‧事件
824-828‧‧‧管道
835-837‧‧‧事件
765‧‧‧光柵操作單元

Claims (10)

  1. 一種構成產生效能資料之圖形處理管線,包括:一拼貼器單元,其構成同時將一第一工作負載與一第二工作負載組合在該圖形處理管線內,以產生一組合的工作負載,其中該第一工作負載有關一第一實例,並且該第二工作負載有關一第二實例;一第一本機效能監控,其耦合至該拼貼器單元,並且構成:產生一第一初始事件給該組合的工作負載,其中該第一初始事件指出該第一工作負載是否已經在該圖形處理管線內的一第一位置上開始處理,及產生一第二初始事件給該組合的工作負載,其中該第二初始事件指出該第二工作負載是否已經在該圖形處理管線內的該第一位置上完成處理;及一第二本機效能監控,其構成:產生一第一最終事件給該組合的工作負載,其中該第一最終事件指出該第一工作負載是否已經在該圖形處理管線內的一第二位置上開始處理,及產生一第二最終事件給該組合的工作負載,其中該第二最終事件指出該第二工作負載是否已經在該圖形處理管線內的該第二位置上完成處理。
  2. 如申請專利範圍第1項之圖形處理管線,其中該第一初始事件、該第二初始事件、該第一最終事件、及該第二最終事件之每一者包括一時間記錄、一效能監控ID、及一書籤值。
  3. 如申請專利範圍第2項之圖形處理管線,其中該拼貼器單元更構成將一第三工作負載與該第一工作負載和該第二工作負載組合,以產生該組合的工作負載,其中該第三工作負載有關一第三實例。
  4. 如申請專利範圍第3項之圖形處理管線,其中:該第一本機效能監控更構成產生一第三初始事件給該組合的工作 負載,其中該第三初始事件指出該第三工作負載是否已經在該圖形處理管線內的該第一位置上開始處理;及該第二本機效能監控更構成產生一第三最終事件給該組合的工作負載,其中該第三最終事件指出該第三工作負載是否已經在該圖形處理管線內的該第二位置上完成處理。
  5. 如申請專利範圍第1項之圖形處理管線,其中該拼貼器單元位於該圖形處理管線內的該第一位置上,並且一光柵操作單元位於該圖形處理管線內的該第二位置上。
  6. 如申請專利範圍第1項之圖形處理管線,其中該第一實例包括一第一複數個相關方法,其提供給該圖形處理管線;且該第二實例包括一第二複數個相關方法,其提供給該圖形處理管線。
  7. 如申請專利範圍第1項之圖形處理管線,更包括:一第三本機效能監控,其構成:產生該組合的工作負載的一第一中間事件,其中該第一中間事件指出該第一工作負載是否已經在該圖形處理管線內的一第一中間位置上開始處理,及產生該組合工作負載的一第二中間事件,其中該第二中間事件指出該第二工作負載是否已經在該圖形處理管線內的該第一中間位置上開始處理,其中該第一位置為該拼貼器單元的一進入點、該第一中間位置為該拼貼器單元的一離開點、一光柵操作單元位於該第二位置上,並且該第二本機效能監控耦合至該光柵操作單元。
  8. 如申請專利範圍第7項之圖形處理管線,其中該第一本機效能監控、該第二本機效能監控、及該第三本機效能監控都更構成,決定該第一工作負載及該第二工作負載的已完成工作類型的計數。
  9. 如申請專利範圍第1項之圖形處理管線,其中該拼貼器單元更構成產生一重播信號。
  10. 一種計算系統,包括: 一圖形處理管線,其構成:處理一第一實例與一第二實例,以產生一第一工作負載與一第二工作負載,及組合一第一工作負載與一第二工作負載,以形成一組合的工作負載;一處理器,其耦合至該圖形處理管線;及一記憶體,其耦合至該處理器,其中該記憶體包括一具有指令的驅動程式,該等指令由該處理器執行時導致該處理器:傳送該第一實例、該第二實例、一第一本機效能監控觸發、及一第二本機效能監控觸發至該圖形處理管線;接收來自該圖形處理管線的一第一初始事件,其指出該第一工作負載是否已在該圖形處理管線內的一第一位置上開始處理;接收來自該圖形處理管線的一第一最終事件,其指出該第一工作負載是否已在該圖形處理管線內的一第二位置上完成處理;接收來自該圖形處理管線的一第二初始事件,其指出該第二工作負載是否已在該圖形處理管線內的該第一位置上開始處理;及接收來自該圖形處理管線的一第二最終事件,其指出該第二工作負載是否已在該圖形處理管線內的該第二位置上完成處理。
TW102143830A 2012-12-18 2013-11-29 用於分析圖形處理管線效能之方法及計算系統 TWI528178B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/719,034 US9030480B2 (en) 2012-12-18 2012-12-18 Triggering performance event capture via pipelined state bundles

Publications (2)

Publication Number Publication Date
TW201435581A TW201435581A (zh) 2014-09-16
TWI528178B true TWI528178B (zh) 2016-04-01

Family

ID=50821481

Family Applications (1)

Application Number Title Priority Date Filing Date
TW102143830A TWI528178B (zh) 2012-12-18 2013-11-29 用於分析圖形處理管線效能之方法及計算系統

Country Status (4)

Country Link
US (1) US9030480B2 (zh)
CN (1) CN103870213B (zh)
DE (1) DE102013017980B4 (zh)
TW (1) TWI528178B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9679342B2 (en) * 2013-07-12 2017-06-13 Arm Limited Result data stream coding for repeating workloads
US9910760B2 (en) * 2015-08-07 2018-03-06 Nvidia Corporation Method and apparatus for interception of synchronization objects in graphics application programming interfaces for frame debugging
KR102381945B1 (ko) * 2015-11-18 2022-04-01 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
CN107610039A (zh) * 2016-07-12 2018-01-19 联发科技股份有限公司 图像处理方法及图像处理装置
GB2555586B (en) * 2016-10-31 2019-01-02 Imagination Tech Ltd Performance profiling in a graphics unit
US10475149B2 (en) * 2017-09-25 2019-11-12 Intel Corporation Policies and architecture to dynamically offload VR processing to HMD based on external cues
US11875057B2 (en) * 2021-07-20 2024-01-16 Nvidia Corporation Shared structure for a logic analyzer and programmable state machine

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5371840A (en) * 1990-04-26 1994-12-06 Honeywell Inc. Polygon tiling engine
US6753878B1 (en) * 1999-03-08 2004-06-22 Hewlett-Packard Development Company, L.P. Parallel pipelined merge engines
US6885376B2 (en) * 2002-12-30 2005-04-26 Silicon Graphics, Inc. System, method, and computer program product for near-real time load balancing across multiple rendering pipelines
US8497865B2 (en) * 2006-12-31 2013-07-30 Lucid Information Technology, Ltd. Parallel graphics system employing multiple graphics processing pipelines with multiple graphics processing units (GPUS) and supporting an object division mode of parallel graphics processing using programmable pixel or vertex processing resources provided with the GPUS
GB0425204D0 (en) * 2004-11-15 2004-12-15 Falanx Microsystems As Processing of 3-dimensional graphics
US8400454B2 (en) * 2005-03-30 2013-03-19 Ati Technologies, Inc. System and method for creating motion blur
GB0524804D0 (en) * 2005-12-05 2006-01-11 Falanx Microsystems As Method of and apparatus for processing graphics
US20070139421A1 (en) * 2005-12-21 2007-06-21 Wen Chen Methods and systems for performance monitoring in a graphics processing unit
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
US8963932B1 (en) * 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US7519797B1 (en) * 2006-11-02 2009-04-14 Nividia Corporation Hierarchical multi-precision pipeline counters
GB2461900B (en) * 2008-07-16 2012-11-07 Advanced Risc Mach Ltd Monitoring graphics processing
GB0900700D0 (en) * 2009-01-15 2009-03-04 Advanced Risc Mach Ltd Methods of and apparatus for processing graphics
GB2473513B (en) * 2009-09-14 2012-02-01 Sony Comp Entertainment Europe A method and apparatus for determining processor performance

Also Published As

Publication number Publication date
DE102013017980B4 (de) 2021-02-04
CN103870213A (zh) 2014-06-18
TW201435581A (zh) 2014-09-16
US9030480B2 (en) 2015-05-12
CN103870213B (zh) 2017-04-12
US20140168231A1 (en) 2014-06-19
DE102013017980A1 (de) 2014-06-18

Similar Documents

Publication Publication Date Title
TWI528178B (zh) 用於分析圖形處理管線效能之方法及計算系統
TWI559729B (zh) 用於低功率圖形著色的像素著色器省略
TWI498819B (zh) 執行成型記憶體存取作業的系統和方法
TWI552108B (zh) 運用於執行緒單一指令多重資料執行之編譯器控制區域排程
TWI525584B (zh) 多執行緒處理單元內之可程式繫結
US9495721B2 (en) Efficient super-sampling with per-pixel shader threads
US9293109B2 (en) Technique for storing shared vertices
US9418616B2 (en) Technique for storing shared vertices
TWI633516B (zh) 曲面細分及幾何著色器的功率效率屬性處理
TWI489392B (zh) 多個應用程式分享的圖形處理單元
TW201432609A (zh) 已分配的拼貼快取
US9558573B2 (en) Optimizing triangle topology for path rendering
TWI502489B (zh) 叢集多階暫存檔的暫存器分配
TW201435591A (zh) 存取內容可定址記憶體之技術
TW201428676A (zh) 在上游著色器內設定下游著色狀態
TWI525438B (zh) 透過貼圖硬體執行記憶體存取操作之技術
US9082212B2 (en) Programmable blending via multiple pixel shader dispatches
TW201435576A (zh) 陷阱處理期間的協作執行緒陣列粒化內文切換
US20140351827A1 (en) Application programming interface to enable the construction of pipeline parallel programs
TWI501156B (zh) 多頻時間切面組
US9406101B2 (en) Technique for improving the performance of a tessellation pipeline
US9111360B2 (en) Technique for improving the performance of a tessellation pipeline