国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于上下文切換的基于跟蹤緩沖器的重放的制作方法

      文檔序號:11635277閱讀:204來源:國知局
      用于上下文切換的基于跟蹤緩沖器的重放的制造方法與工藝

      本發(fā)明涉及命令流的重放。



      背景技術(shù):

      隨著包含多個處理核心的專用處理器(例如圖形處理單元(gpu))的性能以快速速率持續(xù)增加,越來越多地寫入計(jì)算機(jī)程序,以在異構(gòu)計(jì)算系統(tǒng)中利用此類專用處理器。舉例來說,主機(jī)處理器,例如中央處理單元(cpu)可能夠通過發(fā)送包含gpu可執(zhí)行的運(yùn)算的一或多個命令流,來將計(jì)算機(jī)應(yīng)用程序的一或多個部分的處理分擔(dān)到次要處理器(例如gpu)上。以此方式,包含cpu和gpu兩者的計(jì)算機(jī)系統(tǒng)可能夠更高效地執(zhí)行計(jì)算機(jī)應(yīng)用程序。



      技術(shù)實(shí)現(xiàn)要素:

      一般來說,本發(fā)明的方面是針對處理單元的上下文切換,以及由處理單元(例如gpu)執(zhí)行的命令流的基于跟蹤緩沖器的重放。所述跟蹤緩沖器可通過存儲與命令流中的運(yùn)算取決于的存儲器位置相關(guān)聯(lián)的數(shù)據(jù),來在命令流的重放期間,確保命令流中的運(yùn)算的一致性。

      在一個方面中,本發(fā)明是針對一種用于重放命令流的方法,其包括:通過命令處理器,處理命令流以供至少一個處理器執(zhí)行,包含通過所述命令處理器將與所述命令流中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器中,其中所述命令流中的所述第一組一或多個運(yùn)算存取存儲器中的一或多個存儲器位置,且其中與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的所述數(shù)據(jù)包含與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示;通過命令處理器,中斷所述命令流的處理;以及響應(yīng)于在命令流的處理的中斷之后恢復(fù)所述命令處理器對命令流的處理,通過所述命令處理器,重放所述命令流的至少一部分,包含通過所述命令處理器,至少部分地基于存儲在跟蹤緩沖器中的與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),來處理所述命令流的第二組一或多個運(yùn)算。

      在另一方面,本發(fā)明是針對一種經(jīng)配置以用于圖形或計(jì)算處理的裝置,其其包括:至少一個處理器;存儲器;以及命令處理器,其經(jīng)配置以:處理命令流以供所述至少一個處理器執(zhí)行,包含將與所述命令流中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器中,其中所述命令流中的所述第一組一或多個運(yùn)算存取所述存儲器中的一或多個存儲器位置,且其中與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的所述數(shù)據(jù)包含與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示;中斷所述命令流的處理;以及響應(yīng)于在中斷所述命令流的處理之后恢復(fù)所述命令流的處理,重放所述命令流的至少一部分,包含至少部分地基于存儲在跟蹤緩沖器中的與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),來處理所述命令流的第二組一或多個運(yùn)算。

      在另一方面,本發(fā)明是針對一種上面存儲有指令的計(jì)算機(jī)可讀存儲媒體,所述指令在被執(zhí)行時,致使一或多個處理器執(zhí)行包含以下各項(xiàng)的操作:處理命令流以供至少一個處理器執(zhí)行,包含通過所述命令處理器將與所述命令流中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器中,其中所述命令流中的所述第一組一或多個運(yùn)算存取存儲器中的一或多個存儲器位置,且其中與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的所述數(shù)據(jù)包含與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示;中斷所述命令流的處理;以及響應(yīng)于在命令流的處理的中斷之后恢復(fù)所述命令流的處理,重放所述命令流的至少一部分,包含至少部分地基于存儲在跟蹤緩沖器中的與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),來處理所述命令流的第二組一或多個運(yùn)算。

      在另一方面,本發(fā)明是針對一種裝置,其包括:用于處理命令流以供至少一個處理器執(zhí)行的裝置,包含通過命令處理器,將與命令流中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器中,其中所述命令流中的第一組一或多個運(yùn)算存取存儲器中的一或多個存儲器位置,且其中與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)包含與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示;用于中斷所述命令流的處理的裝置;以及響應(yīng)于在所述命令流的處理的所述中斷之后恢復(fù)所述命令流的處理,用于重放所述命令流的至少一部分的裝置,包含用于至少部分地基于存儲在跟蹤緩沖器中的與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)來處理所述命令流的第二組一或多個運(yùn)算的裝置。

      在附圖和以下描述中陳述本發(fā)明的一或多個方面的細(xì)節(jié)。本發(fā)明的其它特征、目標(biāo)和優(yōu)點(diǎn)將從所述描述和圖式以及所附權(quán)利要求書而顯而易見。

      附圖說明

      圖1是說明可經(jīng)配置以實(shí)施本發(fā)明的一或多個方面的實(shí)例計(jì)算裝置的框圖。

      圖2是說明結(jié)合跟蹤緩沖器使用的圖1的實(shí)例處理器、實(shí)例gpu和實(shí)例系統(tǒng)存儲器的實(shí)例實(shí)施方案的框圖。

      圖3是進(jìn)一步詳細(xì)說明圖2的跟蹤緩沖器的實(shí)例實(shí)施方案的框圖。

      圖4是說明命令處理器和跟蹤緩沖器的實(shí)例操作的框圖。

      圖5是說明命令處理器的實(shí)例操作的流程圖。

      具體實(shí)施方式

      一般來說本發(fā)明的方面是針對用于處理單元的上下文切換的技術(shù),以及由處理單元(例如圖形處理單元(gpu))執(zhí)行的命令流的基于跟蹤緩沖器的重放。在移動芯片上系統(tǒng)(soc)集成電路上,歸因于硅面積的約束,用于各種工作負(fù)載的空間分區(qū),例如劃分處理核心,使得個別核心可處理不同工作負(fù)載,可能不切實(shí)際??赏ㄟ^對gpu資源進(jìn)行按時間分區(qū)以允許各種過程進(jìn)行正向進(jìn)程來更好地利用gpu??山?jīng)由上下文切換實(shí)現(xiàn)時間分區(qū)過程,使得gpu可在處理多個命令流之間切換。在上下文切換中,可在命令流的處理期間中斷gpu,且經(jīng)切換以處理另一命令流。gpu隨后可切換回到處理中斷的命令流。與cpu上的上下文切換相比,gpu上的上下文切換可潛在地碰到不同挑戰(zhàn)。舉例來說,歸因于比cpu和各種可編程和固定功能硬件塊深的管線,上下文切換可需要巨大量的狀態(tài)跟蹤。

      在主機(jī)處理器上執(zhí)行的gpu驅(qū)動程序可發(fā)送到gpu工作負(fù)載/狀態(tài)信息,作為由命令/串流處理器(例如gpu的命令處理器或任何其它合適的流處理器)解碼的若干命令的流(即,命令流)。命令流可包含命令流中的一或多個檢查點(diǎn),其可用作重新開始點(diǎn)。所述檢查點(diǎn)可允許流之間的快速切換。此方案被稱作“重放”,因?yàn)樗雒盍髟谥匦麻_始后,即刻遇到先前在上下文切換之前已經(jīng)遇到的命令流的運(yùn)算。

      雖然gpu驅(qū)動程序使一或多個命令流流到gpu,但命令流所依靠的任何外部存儲器內(nèi)容可不耐久,且因此在gpu切換回到處理中斷的命令流時不可用,因?yàn)楫?dāng)命令流中斷時,那些存儲器內(nèi)容的內(nèi)容可能已改變。因此,考慮到上下文切換中的不確定性,在任意時間量內(nèi),命令流的任何外部存儲器相依性可能無法保證。由此,命令流在重放期間可能不是與切換上下文之前完全相同,從而命令流的執(zhí)行可導(dǎo)致錯誤。

      為了在命令流的重放期間,確保命令流中的運(yùn)算的一致性,跟蹤緩沖器可存儲與所述命令流中的運(yùn)算所取決于的存儲器位置相關(guān)聯(lián)的數(shù)據(jù)。在調(diào)試的上下文中,跟蹤是在代碼的執(zhí)行進(jìn)行時記錄相關(guān)信息的過程。在游程結(jié)束時,在調(diào)試中有價值的跟蹤中捕獲所述執(zhí)行期間的重要事件??山?jīng)由跟蹤緩沖器的使用,將跟蹤的概念應(yīng)用于本發(fā)明。gpu可將執(zhí)行期間產(chǎn)生/使用的重要事件和/或數(shù)據(jù)記錄到跟蹤緩沖器中。記錄到跟蹤緩沖器中的信息可按原樣之后耗盡,以用于再執(zhí)行所述命令流。

      跟蹤緩沖器可跟蹤外部存儲器讀取/寫入以及外部存儲器的內(nèi)容,以確保重放期間的命令流與切換上下文之前相同。舉例來說,跟蹤緩沖器可存儲存儲器位置的歷史、經(jīng)處理的包和/或命令,所需的存儲器讀取的快照、控制流的斷言、完成的外部存儲器的同步的旗標(biāo),以及取決于外部存儲器的任何其它包。

      根據(jù)本發(fā)明的方面,所述命令處理器可處理命令流以供至少一個處理器執(zhí)行,包含通過命令處理器將與命令流中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器中,其中所述命令流中的第一組一或多個運(yùn)算存取存儲器中的一或多個存儲器位置,且其中與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)包含與所述一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示。所述命令處理器可中斷命令流的處理。所述命令處理器可響應(yīng)于在命令流的處理的中斷之后,恢復(fù)所述命令流的處理,至少部分地基于存儲在所述跟蹤緩沖器中的數(shù)據(jù),重放所述命令流的至少一部分,包含通過所述命令處理器,至少部分地基于存儲在跟蹤緩沖器中的數(shù)據(jù),處理所述命令流的第二組一或多個運(yùn)算。

      圖1是說明可經(jīng)配置以實(shí)施本發(fā)明的一或多個方面的實(shí)例計(jì)算裝置的框圖。如圖1中所示,計(jì)算裝置2可為包含但不限于以下各項(xiàng)的計(jì)算裝置:視頻裝置、媒體播放器、機(jī)頂盒、無線手持機(jī)(例如移動電話和所謂的智能電話)、個人數(shù)字助理(pda)、桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、游戲控制臺、視頻會議單元、平板計(jì)算裝置等。在圖1的實(shí)例中,計(jì)算裝置2可包含中央處理單元(cpu)6、系統(tǒng)存儲器10和gpu12。計(jì)算裝置2還可包含顯示處理器14、收發(fā)器模塊3、用戶接口4和顯示器8。收發(fā)器模塊3和顯示處理器14兩者可為與cpu6和/或gpu12相同的集成電路(ic)的部分,兩者可在包含cpu6和/或gpu12的一或多個ic的外部,或可形成于在包含cpu6和/或gpu12的ic外部的ic中。

      為清楚起見,計(jì)算裝置2可包含圖1中未圖示的額外模塊或單元。舉例來說,計(jì)算裝置2可在其中計(jì)算裝置2為移動無線電話的實(shí)例中包含揚(yáng)聲器和麥克風(fēng)(兩者均未在圖1中示出)來實(shí)現(xiàn)電話通信,或在計(jì)算裝置2為媒體播放器的情況下包含揚(yáng)聲器。計(jì)算裝置2還可包含攝像機(jī)。此外,計(jì)算裝置2中所示的各種模塊和單元可能不是計(jì)算裝置2的每一實(shí)例中所必需的。舉例來說,在計(jì)算裝置2為桌上型計(jì)算機(jī)或經(jīng)裝備以與外部用戶接口或顯示器介接的其它裝置的實(shí)例中,用戶接口4和顯示器8可在計(jì)算裝置2外部。

      用戶接口4的實(shí)例包含(但不限于)軌跡球、鼠標(biāo)、鍵盤和其它類型的輸入裝置。用戶接口4還可為觸摸屏,且可作為顯示器8的部分并入。收發(fā)器模塊3可包含電路以允許計(jì)算裝置2與另一裝置或網(wǎng)絡(luò)之間的無線或有線通信。收發(fā)器模塊3可包含調(diào)制器、解調(diào)器、放大器以及用于有線或無線通信的其它此類電路。

      處理器6可為微處理器,例如中央處理單元(cpu),其配置成處理計(jì)算機(jī)程序的指令以供執(zhí)行。處理器6可包括控制計(jì)算裝置2的操作的通用或?qū)S锰幚砥鳌S脩艨蓪⑤斎胩峁┑接?jì)算裝置2,以致使處理器6執(zhí)行一或多個軟件應(yīng)用程序。在處理器6上執(zhí)行的軟件應(yīng)用程序可包含(例如)操作系統(tǒng)、字處理器應(yīng)用程序、電子郵件應(yīng)用程序、電子數(shù)據(jù)表應(yīng)用程序、媒體播放器應(yīng)用程序、視頻游戲應(yīng)用程序、圖形用戶接口應(yīng)用程序或另一程序。另外,處理器6可執(zhí)行用于控制gpu12的操作的gpu驅(qū)動程序22。用戶可經(jīng)由一或多個輸入裝置(未圖示)(例如,鍵盤、鼠標(biāo)、麥克風(fēng)、觸摸墊或經(jīng)由用戶接口4耦合到計(jì)算裝置2的另一輸入裝置)將輸入提供到計(jì)算裝置2。

      在處理器6上執(zhí)行的軟件應(yīng)用程序可包含一或多個圖形渲染指令,其指令處理器6來致使將圖形數(shù)據(jù)渲染到顯示器8。在一些實(shí)例中,所述軟件指令可符合圖形應(yīng)用程序編程接口(api),例如開放圖形庫api、開放圖形庫嵌入系統(tǒng)(opengles)api、direct3dapi、x3dapi、rendermanapi、webglapi、開放計(jì)算語言(opencltm)或任何其它公共或?qū)S袠?biāo)準(zhǔn)gpu計(jì)算api。為了處理圖形渲染指令,處理器6可將一或多個圖形渲染命令(例如,通過gpu驅(qū)動程序22)發(fā)布至gpu12,以使gpu12執(zhí)行圖形數(shù)據(jù)的渲染中的一些或全部。在一些實(shí)例中,待渲染的圖形數(shù)據(jù)可包含例如點(diǎn)、線、三角形、四邊形、三角形帶等圖形基元的列表。

      gpu12可經(jīng)配置以執(zhí)行圖形運(yùn)算,以將一或多個圖形基元渲染到顯示器8。因此,當(dāng)在處理器6上執(zhí)行的軟件應(yīng)用程序中的一者需要圖形處理時,處理器6可將圖形命令和圖形數(shù)據(jù)提供到gpu12以供渲染到顯示器8。圖形數(shù)據(jù)可包含(例如)繪制命令、狀態(tài)信息、基元信息、紋理信息等。在一些情況下,gpu12可內(nèi)置有高度并行結(jié)構(gòu),其提供比處理器6高效的對復(fù)雜圖形相關(guān)運(yùn)算的處理。舉例來說,gpu12可包含經(jīng)配置來以并行方式對多個頂點(diǎn)或像素進(jìn)行運(yùn)算的多個處理元件,例如著色器單元。在一些情況下,gpu12的高度并行性質(zhì)允許gpu12比使用處理器6直接將場景繪制到顯示器8更快速地將圖形圖像(例如,gui和二維(2d)和/或三維(3d)圖形場景)繪制到顯示器8上。

      在一些情況下,可將gpu12集成到計(jì)算裝置2的主板中。在其它情況下,gpu12可存在于圖形卡上,所述圖形卡安裝在計(jì)算裝置2的主板中的端口中或可以其它方式并入在經(jīng)配置以與計(jì)算裝置2互操作的外圍裝置內(nèi)。在一些實(shí)例中,gpu12可與處理器6在芯片上,例如在芯片上系統(tǒng)(soc)中,gpu12可包含一或多個處理器,例如一或多個微處理器、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)、數(shù)字信號處理器(dsp)或其它等效集成或離散邏輯電路。gpu12還可包含一或多個處理器核心,使得gpu12可被稱作多核處理器。

      在一些實(shí)例中,圖形存儲器40可為gpu12的一部分。因此,gpu12可在不使用總線的情況下從圖形存儲器40讀取數(shù)據(jù)且將數(shù)據(jù)寫入到圖形存儲器40。換句話說,gpu12可使用本地存儲裝置而非芯片外存儲器在本地處理數(shù)據(jù)。此類圖形存儲器40可被稱作芯片上存儲器。這允許gpu12通過消除對gpu12經(jīng)由總線讀取和寫入數(shù)據(jù)的需要來以更高效方式操作,經(jīng)由總線讀取和寫入數(shù)據(jù)可經(jīng)歷較重的總線業(yè)務(wù)以及相關(guān)聯(lián)的對帶寬的爭用。然而,在一些情況下,gpu12可不包含單獨(dú)的存儲器,而是經(jīng)由總線利用系統(tǒng)存儲器10。圖形存儲器40可包含一或多個易失性或非易失性存儲器或存儲裝置,例如,隨機(jī)存取存儲器(ram)、靜態(tài)ram(sram)、動態(tài)ram(dram)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、快閃存儲器、磁性數(shù)據(jù)媒體或光學(xué)存儲媒體。

      在一些實(shí)例中,gpu12可將完全形成的圖像存儲在系統(tǒng)存儲器10中。顯示處理器14可從系統(tǒng)存儲器10檢索圖像,并且輸出使顯示器8的像素照亮以顯示圖像的值。顯示器8可為計(jì)算裝置2的顯示器,其顯示由gpu12產(chǎn)生的圖像內(nèi)容。顯示器8可為液晶顯示器(lcd)、有機(jī)發(fā)光二極管顯示器(oled)、陰極射線管(crt)顯示器、等離子顯示器或另一類型的顯示裝置。

      圖2是說明結(jié)合跟蹤緩沖器使用的圖1的處理器6、gpu12和系統(tǒng)存儲器10的實(shí)例實(shí)施方案的框圖。如圖2中所示,處理器6可執(zhí)行至少一個軟件應(yīng)用程序18和gpu驅(qū)動程序22,中的每一者可為一或多個軟件應(yīng)用程序或服務(wù)。

      可供處理器6和gpu12使用的存儲器可包含系統(tǒng)存儲器10和輸出緩沖器16。輸出緩沖器16可為系統(tǒng)存儲器10的部分或可與系統(tǒng)存儲器10分離。輸出緩沖器16可存儲經(jīng)渲染的圖像數(shù)據(jù),例如像素?cái)?shù)據(jù),以及任何其它數(shù)據(jù)。

      軟件應(yīng)用程序18可為利用gpu12的功能性的任何應(yīng)用程序。舉例來說,軟件應(yīng)用程序18可為gui應(yīng)用程序、操作系統(tǒng)、便攜式制圖應(yīng)用程序、用于工程或藝術(shù)應(yīng)用的計(jì)算機(jī)輔助設(shè)計(jì)程序、視頻游戲應(yīng)用程序或使用2d或3d圖形的另一類型的軟件應(yīng)用程序。

      軟件應(yīng)用程序18可包含指令gpu12渲染圖形用戶接口(gui)和/或圖形場景的一或多個繪圖指令。舉例來說,繪圖指令可包含定義將由gpu12渲染的一組一或多個圖形基元的指令。在一些實(shí)例中,繪圖指令可共同地定義用于gui中的多個開窗表面的全部或部分。在額外實(shí)例中,所述繪圖指令可共同地定義圖形場景的全部或部分,所述圖形場景包含在由應(yīng)用程序定義的模型空間或世界空間內(nèi)的一或多個圖形對象。

      軟件應(yīng)用程序18可調(diào)用gpu驅(qū)動程序22,以向gpu12發(fā)出一個或多個命令,來將一或多個圖形基元渲染到可顯示圖形圖像中。舉例來說,軟件應(yīng)用程序18可調(diào)用gpu驅(qū)動程序22,以向gpu12提供基元定義。在一些情況下,可以繪制基元(例如,三角形、矩形、三角扇、三角帶等)的列表的形式將基元定義提供給gpu12。基元定義可包含指定與將渲染的基元相關(guān)聯(lián)的一或多個頂點(diǎn)的頂點(diǎn)規(guī)格。所述頂點(diǎn)規(guī)格可包含每一頂點(diǎn)的位置坐標(biāo),且在一些情況下包含與頂點(diǎn)相關(guān)聯(lián)的其它屬性,例如色坐標(biāo)、法向量和紋理坐標(biāo)?;x還可包含基元類型信息(例如,三角形、矩形、三角扇、三角形帶等)、按比例縮放信息、旋轉(zhuǎn)信息等。

      基于由軟件應(yīng)用程序18發(fā)布到gpu驅(qū)動程序22的指令,gpu驅(qū)動程序22可調(diào)配指定供gpu12執(zhí)行的一或多個操作以便渲染基元的一或多個命令。當(dāng)gpu12接收到來自cpu6的命令時,圖形處理管線可在著色器處理器48上執(zhí)行,以解碼所述命令且配置圖形處理管線以執(zhí)行所述命令中所指定的運(yùn)算操作。舉例來說,圖形處理管線中的輸入?yún)R編程序可讀取基元數(shù)據(jù),且將數(shù)據(jù)匯編成供圖形處理管線中的其它圖形管線級使用的基元。在執(zhí)行指定運(yùn)算之后,圖形處理管線將經(jīng)渲染的數(shù)據(jù)輸出到與顯示裝置相關(guān)聯(lián)的輸出緩沖器16。在一些實(shí)例中,所述圖形處理管線可包含固定功能邏輯,和/或在可編程著色器核心上執(zhí)行。

      輸出緩沖器16存儲用于gpu12的目的地像素。每一目的地像素可與唯一的屏幕像素位置相關(guān)聯(lián)。在一些實(shí)例中,輸出緩沖器16可存儲每一目的地像素的色彩分量和目的地阿爾法值。舉例來說,輸出緩沖器16可存儲每一像素的紅色、綠色、藍(lán)色、阿爾法(rgba)分量,其中“rgb”分量對應(yīng)于色彩值,且“a”分量對應(yīng)于目的地阿爾法值。雖然將輸出緩沖器16和系統(tǒng)存儲器10說明為單獨(dú)的存儲器單元,但在其它實(shí)例中,輸出緩沖器16可為系統(tǒng)存儲器10的部分。另外,如上文所論述,輸出緩沖器16還可能夠存儲不同于像素的任何合適的數(shù)據(jù)。

      在一些實(shí)例中,圖形處理管線可包含頂點(diǎn)著色器級、外殼著色器級、域著色器級、幾何著色器級和像素著色器級中的一或多者。所述圖形處理管線的這些級可視為著色器級。這些著色器級可實(shí)施為在gpu12中的著色器單元46上執(zhí)行的一或多個著色器程序。著色器單元46可配置成處理組件的可編程管線。在一些實(shí)例中,著色器單元46可被稱作“著色器處理器”或“統(tǒng)一著色器”,并且可執(zhí)行幾何、頂點(diǎn)、像素或其它著色操作以渲染圖形。著色器單元46可包含著色器處理器48,其中的每一者可包含用于獲取和解碼操作的一或多個組件、用于進(jìn)行算術(shù)計(jì)算的一或多個alu、一或多個存儲器、高速緩沖存儲器和寄存器。

      通過將命令發(fā)送至著色器單元46以執(zhí)行圖形處理管線中的頂點(diǎn)著色器級、外殼著色器級、域著色器級、幾何著色器級和像素著色器級中的一或多者,gpu12可指定著色器單元46執(zhí)行多種著色運(yùn)算,例如頂點(diǎn)著色、外殼著色、域著色、幾何著色、像素著色及其類似者。在一些實(shí)例中,gpu驅(qū)動程序22可包含致使在cpu6上執(zhí)行的編譯器編譯一或多個著色器程序,且將經(jīng)編譯的著色器程序下載到包含于gpu12內(nèi)的一或多個可編程著色器單元上。可以高級著色語言來編寫著色器程序,例如opengl著色語言(glsl)、高級著色語言(hlsl)、用于圖形的c(cg)著色語言、openclc核等。經(jīng)編譯的著色器程序可包含控制gpu12內(nèi)的著色器單元46的運(yùn)算的一或多個指令。舉例來說,著色器程序可包含:頂點(diǎn)著色器程序,其可由著色器單元46執(zhí)行以實(shí)施頂點(diǎn)著色器級的功能;外殼著色器程序,其可由著色器單元46執(zhí)行以實(shí)施外殼著色器級的功能;域著色器程序,其可由著色器單元46執(zhí)行以實(shí)施域著色器級的功能;幾何著色器程序,其可由著色器單元46執(zhí)行以實(shí)施幾何著色器級的功能;和/或像素著色器程序,其可由著色器單元46執(zhí)行以實(shí)施像素著色器的功能。頂點(diǎn)著色器程序可控制可編程頂點(diǎn)著色器單元或統(tǒng)一著色器單元的執(zhí)行,且包含指定一或多個每頂點(diǎn)運(yùn)算的指令。

      圖形存儲器40可包含芯片上存儲裝置或存儲器,其物理上集成到gpu12的集成電路芯片中。如果圖形存儲器40是在芯片上,那么與經(jīng)由系統(tǒng)總線從系統(tǒng)存儲器10讀取值或?qū)⒅祵懭氲较到y(tǒng)存儲器10相比,gpu12可能夠更快速地從圖形存儲器40讀取值或?qū)⒅祵懭氲綀D形存儲器40。

      cpu6處理在計(jì)算裝置2內(nèi)執(zhí)行的指令。主機(jī)處理器24可能夠處理存儲在系統(tǒng)存儲器10中的指令。cpu6可使用驅(qū)動器(例如可在cpu6所執(zhí)行的軟件中實(shí)施的gpu驅(qū)動程序22)來產(chǎn)生命令流,以供gpu12執(zhí)行。也就是說,主機(jī)處理器6可產(chǎn)生定義將由gpu12執(zhí)行的一組運(yùn)算的命令流。

      cpu6可產(chǎn)生將由gpu12執(zhí)行的命令流,其致使可檢視內(nèi)容在顯示器8上顯示。舉例來說,cpu6可產(chǎn)生命令流,其為gpu12提供渲染可存儲在輸出緩沖器16中以在顯示器8處顯示的圖形數(shù)據(jù)的指令。在此實(shí)例中,cpu6可產(chǎn)生由圖形渲染管線執(zhí)行的命令流。

      另外或替代地,cpu6可產(chǎn)生將由gpu12執(zhí)行的命令流,其致使gpu12執(zhí)行其它運(yùn)算。舉例來說,在一些情況下,cpu6可為產(chǎn)生命令流以供gpu12用作通用圖形處理單元(gpgpu)的主機(jī)處理器。以此方式,gpu12可充當(dāng)cpu6的次要處理器。舉例來說,gpu12可進(jìn)行傳統(tǒng)上由cpu6進(jìn)行的多種通用計(jì)算功能。實(shí)例包含多種圖像處理功能,包含視頻解碼和后處理(例如去塊、降噪、色彩校正等)以及其它應(yīng)用特定圖像處理功能(例如面部檢測/辨識、圖案辨識、小波變換等)。在一些實(shí)例中,gpu12可與cpu6合作來執(zhí)行此類gpgpu應(yīng)用程序。舉例來說,cpu6可通過向gpu12提供命令流以供gpu12執(zhí)行,來將某些功能分擔(dān)給gpu12。在此實(shí)例中,cpu6可為主機(jī)處理器,且gpu12可為次要處理器。

      cpu6可與gpu12通信,來指導(dǎo)gpu12經(jīng)由gpu驅(qū)動程序22執(zhí)行g(shù)pgpu應(yīng)用程序。gpu驅(qū)動程序22可將可由gpu12的著色器單元46執(zhí)行的一或多個命令流傳送到gpu12。gpu12可包含命令處理器24,其可接收來自gpu驅(qū)動程序22的一或多個命令流。命令處理器24可為經(jīng)配置以接收并處理一或多個命令流的硬件與軟件的任何組合。由此,命令處理器24是流處理器。在一些實(shí)例中,代替命令處理器24,可使用任何其它合適的流處理器,代替命令處理器24來接收并處理一或多個命令流且執(zhí)行本文所揭示的技術(shù)。在一個實(shí)例中,命令處理器24可為硬件處理器。在圖2中所示的實(shí)例中,命令處理器24可包含于gpu12中。在其它實(shí)例中,命令處理器24可為不同于cpu6和gpu12的單元。命令處理器24還可被稱為流處理器、命令/流處理器及類似者,以指示其可為經(jīng)配置以接收命令和/或運(yùn)算的流的任何處理器。

      命令處理器24可處理一或多個命令流,其包含包括于供gpu12執(zhí)行的一或多個命令流中的調(diào)度運(yùn)算。具體地說,命令處理器24可處理一或多個命令流,且調(diào)度所述一或多個命令流中的運(yùn)算,以供著色器單元46執(zhí)行。在操作中,gpu驅(qū)動程序22向命令處理器24發(fā)送包括將由gpu12執(zhí)行的一系列運(yùn)算的命令流。命令處理器24可接收包括所述命令流的運(yùn)算流,且可基于所述運(yùn)算在所述命令流中的次序,來循序地處理命令流的運(yùn)算,且可調(diào)度所述命令流中的運(yùn)算,以供著色器單元46的著色器處理器48執(zhí)行。

      命令處理器24可能夠通過在不同命令流之間進(jìn)行上下文切換來處理多個命令流。舉例來說,gpu驅(qū)動程序22可指導(dǎo)命令處理器24從處理第一命令流切換到處理第二命令流。命令處理器24可響應(yīng)于接收到來自gpu驅(qū)動程序22的從處理第一命令流切換到處理第二命令流的命令,執(zhí)行上下文切換。命令處理器24可中斷第一命令流的處理,且在中斷第一命令流的處理后,即刻開始第二命令流的處理。

      隨后,在后續(xù)點(diǎn),gpu驅(qū)動程序22可例如指導(dǎo)命令處理器24中斷第二命令流的處理,且恢復(fù)第一命令流的處理。命令處理器24可響應(yīng)于接收到來自gpu驅(qū)動程序22的從處理第二命令流切換回到處理第一命令流的命令,通過中斷第二命令流的處理且重新開始第一命令流的處理來執(zhí)行上下文切換。通過執(zhí)行上下文切換,命令處理器24可使多個命令流能夠由gpu12執(zhí)行,從而更高效地利用gpu12。

      然而,在重新開始第一命令流的處理后,命令處理器24可處理第一命令流的運(yùn)算,其可取決于在命令處理器24中斷第一內(nèi)容流之前,存儲器(例如系統(tǒng)存儲器10或圖形存儲器40)中的存儲器位置的內(nèi)容在gpu12對運(yùn)算的執(zhí)行期間,與所述存儲器位置的內(nèi)容相同。舉例來說,如果在重新開始第一命令流的處理之后正由gpu12執(zhí)行的第一命令流中的運(yùn)算是讀取存儲器中的指定存儲器位置的存儲器讀取運(yùn)算,且如果在命令處理器24重新開始第一流的處理之前,在第二命令流的處理期間,gpu12、cpu6或任何其它合適的裝置/處理器在第二命令流中或期間執(zhí)行修改存儲在存儲器中的指定存儲器位置處的值的運(yùn)算,那么gpu12執(zhí)行讀取指定存儲器位置的存儲器讀取運(yùn)算可導(dǎo)致不一致和/或不正確的結(jié)果。

      根據(jù)本發(fā)明的一方面,命令處理器24可處理命令流28以供gpu12執(zhí)行,包含通過命令處理器24,將與命令流28中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中。命令處理器24可使用跟蹤緩沖器26來確保某些存儲器位置的內(nèi)容跨一或多個上下文切換的一致性。跟蹤緩沖器可為存儲器中的緩沖器,其中通常存儲應(yīng)用程序的跟蹤信息,例如詳述應(yīng)用程序的代碼執(zhí)行、時序和/或存儲器存取的歷史的信息。類似地,在圖2的實(shí)例中,跟蹤緩沖器26可為命令處理器24對其具有讀取和寫入存取權(quán)的任何合適組的存儲器位置。

      命令流28中的第一組一或多個運(yùn)算可存取圖形存儲器40和/或系統(tǒng)存儲器10中的一或多個存儲器位置,且與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)可包含與所述一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示。命令處理器24可將與命令處理器24處理所述命令流時命令流的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中。舉例來說,命令處理器24可在跟蹤緩沖器26中存儲與存儲器存取運(yùn)算(例如存儲器讀取運(yùn)算、存儲器寫入運(yùn)算及類似者)相關(guān)聯(lián)的數(shù)據(jù),以及與取決于某些存儲器位置中的內(nèi)容的值的運(yùn)算(例如讀取運(yùn)算、對控制流的斷言及類似者)相關(guān)聯(lián)的數(shù)據(jù)。以此方式,通過存儲與命令流的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),跟蹤緩沖器26可使計(jì)算裝置2能夠制止使圖形存儲器40和/或系統(tǒng)存儲器10中的存儲器位置的內(nèi)容跨上下文切換而持久。

      在圖2的實(shí)例中,跟蹤緩沖器26存儲在系統(tǒng)存儲器10中。在其它實(shí)例中,跟蹤緩沖器26可存儲在計(jì)算裝置2的任何合適存儲器中,例如系統(tǒng)存儲器10、圖形存儲器40及類似者。跟蹤緩沖器26可存儲與存儲器存取運(yùn)算(例如存儲器讀取運(yùn)算、存儲器寫入運(yùn)算及類似者)相關(guān)聯(lián)的數(shù)據(jù),以及與取決于某些存儲器位置中的內(nèi)容的值的運(yùn)算(例如讀取運(yùn)算、對控制流的斷言及類似者)相關(guān)聯(lián)的數(shù)據(jù)。跟蹤緩沖器26還可存儲命令處理器24已接收到且gpu12已執(zhí)行的運(yùn)算的中間結(jié)果。因此,如果命令處理器24恢復(fù)命令流的處理,那么gpu12可取決于存儲在跟蹤緩沖器26中的數(shù)據(jù)來恢復(fù)處理命令流28。

      當(dāng)命令處理器24接收到如從gpu驅(qū)動程序22流式傳輸?shù)拿盍?8的運(yùn)算時,命令處理器24可處理命令流28所述接收到的運(yùn)算,包含將與命令處理器24從gpu驅(qū)動程序22接收到的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中。如上文所論述,所述數(shù)據(jù)可為由所述指令存取的存儲器位置的內(nèi)容的值,或執(zhí)行所述指令的結(jié)果所取決于的存儲器位置的內(nèi)容的值。舉例來說,命令處理器24可存儲到跟蹤緩沖器26中的與命令處理器24所接收到的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)還可包含與取決于存儲器位置的內(nèi)容的值的條件語句相關(guān)聯(lián)的數(shù)據(jù)。所述條件語句例如可為將值與存儲在存儲器位置中的值進(jìn)行比較的控制流語句的斷言。在另一實(shí)例中,如果命令處理器24接收到的運(yùn)算是存儲器寫入運(yùn)算,那么命令處理器24可將由寫入運(yùn)算寫入到存儲器位置的值連同所述值寫入到的存儲器位置的指示存儲到跟蹤緩沖器26中。如果命令處理器24接收到的運(yùn)算包含對相同存儲器位置的多個存儲器存取(例如對相同存儲器位置的多個寫入運(yùn)算),那么命令處理器24可將所述存儲器位置的內(nèi)容的歷史寫入到跟蹤緩沖器26中。以此方式,命令處理器24可將其處理的運(yùn)算的中間值存儲到跟蹤緩沖器26中。

      命令處理器24可中斷命令流28的處理以暫停命令流28,以便處理和調(diào)度執(zhí)行其它命令流,從而高效地利用gpu12來處理多個命令流。響應(yīng)于在命令流28的處理的中斷之后恢復(fù)命令流28的處理,命令處理器24可至少部分地基于存儲在跟蹤緩沖器26中的數(shù)據(jù)來重放命令流28的至少一部分,包含至少部分地基于存儲在跟蹤緩沖器26中的數(shù)據(jù)來處理命令流28的第二組一或多個運(yùn)算。重放命令流28的至少一部分可包含恢復(fù)對命令流28的至少所述部分的執(zhí)行運(yùn)算的處理和調(diào)度。

      命令流28可包含一或多個檢查點(diǎn),其分離命令流28中的獨(dú)立運(yùn)算的塊。通過檢查點(diǎn)分離的運(yùn)算塊可為相對獨(dú)立的,因?yàn)槿绻谶@些運(yùn)算的執(zhí)行之間發(fā)生的上下文切換可潛在地引入數(shù)據(jù)風(fēng)險(xiǎn),那么例如一個塊中的運(yùn)算可能不一定存取由另一塊中的運(yùn)算存取的存儲器位置。由此,命令處理器24可恢復(fù)來自命令處理器24最近已遇到的命令流28中的檢查點(diǎn)的命令流28的處理。

      恢復(fù)從命令處理器24最近已遇到的命令流28中的檢查點(diǎn)的命令流28的處理可導(dǎo)致命令處理器24遇到命令處理器24已經(jīng)處理和/或調(diào)度以供gpu12執(zhí)行的命令流28的運(yùn)算。由此,在恢復(fù)命令流28的處理中,命令處理器24可遇到其先前已經(jīng)處理的命令流28中的第一組一或多個運(yùn)算。命令處理器24因此可跳過其已經(jīng)處理和調(diào)度以供gpu12執(zhí)行的命令流28的運(yùn)算的處理。對于命令處理器24已經(jīng)處理但未調(diào)度以供gpu12執(zhí)行的運(yùn)算,命令處理器24可至少部分地基于與所述運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)以及與命令處理器24可能已存儲到跟蹤緩沖器26中的命令流28的先前運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),來調(diào)度那些運(yùn)算以供gpu12執(zhí)行。

      此外,命令處理器24也可遇到其先前尚未處理的命令流28的運(yùn)算。這些運(yùn)算可為命令處理器24可至少部分地基于與存儲在跟蹤緩沖器26中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)來處理的第二組一或多個運(yùn)算。由此,命令處理器24可至少部分地基于與由命令處理器24存儲在跟蹤緩沖器26中的命令流28的先前運(yùn)算相關(guān)聯(lián)的數(shù)據(jù),來處理和調(diào)度這些運(yùn)算以供gpu12執(zhí)行。舉例來說,如果命令處理器24遇到讀取運(yùn)算,那么命令處理器24可基于存儲在跟蹤緩沖器26中的數(shù)據(jù)來確定讀取運(yùn)算是否從命令處理器24所處理的先前運(yùn)算已寫入到的存儲器位置讀取。如果命令處理器24確定讀取運(yùn)算的確讀取命令處理器24所處理的先前運(yùn)算已寫入到的存儲器位置,那么命令處理器24可從跟蹤緩沖器26檢索存儲器位置的值,且可基于來自跟蹤緩沖器26的存儲器位置的值來調(diào)度讀取運(yùn)算以供gpu12執(zhí)行,從而確保讀取運(yùn)算可導(dǎo)致讀取如從跟蹤緩沖器26檢索的所述存儲器位置的值。由此,命令處理器24可利用跟蹤緩沖器26來確保來自執(zhí)行命令流28的結(jié)果的正確性。

      圖3是進(jìn)一步詳細(xì)說明圖2的跟蹤緩沖器26的實(shí)例實(shí)施方案的框圖。如圖3的實(shí)例中示出,命令流28可包含一或多個檢查點(diǎn),例如檢查點(diǎn)32a和32i,其分離命令流28中的獨(dú)立運(yùn)算的塊。舉例來說,讀取寫入運(yùn)算32e寫入到的相同存儲器位置的讀取運(yùn)算32c可在相同的運(yùn)算塊中,且因此不通過檢查點(diǎn)分離,因?yàn)樽x取運(yùn)算32c可取決于寫入運(yùn)算32e所寫入的值。

      在命令流28的處理期間,命令處理器24可執(zhí)行上下文切換,以中斷命令流28的處理,使得命令處理器24可處理另一命令流。通過中斷命令流28的處理,命令處理器24實(shí)際上暫停命令流28的處理,使得命令處理器24并不進(jìn)一步處理命令流28中的任何運(yùn)算,且gpu12并不進(jìn)一步執(zhí)行命令流28中的任何運(yùn)算,直到命令處理器24執(zhí)行另一上下文切換以切換回到處理命令流28為止。

      響應(yīng)于命令處理器24切換回到處理命令流28,命令處理器24可在命令處理器24最近已遇到的命令流28的檢查點(diǎn)處開始,恢復(fù)處理命令流28。因?yàn)槊盍?8是從gpu驅(qū)動程序22流式傳輸?shù)矫钐幚砥?4,所以命令處理器24以循序方式按序處理命令流28。舉例來說,如果在遠(yuǎn)離處理命令流28的上下文切換之前由命令處理器24處理的命令流28中的最近運(yùn)算是運(yùn)算32b到32h中的任一者,那么命令處理器24可從檢查點(diǎn)32a開始恢復(fù)處理命令流28。在另一實(shí)例中,如果在遠(yuǎn)離處理命令流28的上下文切換之前由命令處理器24處理的命令流28中的最近運(yùn)算是運(yùn)算32j到32o中的任一者,那么命令處理器24可從檢查點(diǎn)32i開始恢復(fù)處理命令流28。以此方式,命令流28的檢查點(diǎn)為命令處理器24提供導(dǎo)航點(diǎn),以確定命令流28中重新開始命令流28的執(zhí)行的位置。

      跟蹤緩沖器26可為存儲與命令流28中的一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)的環(huán)形緩沖器,以輔助命令處理器24在一或多個上下文切換之后重新開始命令流28的處理。在替代實(shí)例中,跟蹤緩沖器26可為用于存儲與命令流28中的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)的線性緩沖器或任何其它合適的存儲器。

      跟蹤緩沖器26可存儲已經(jīng)由命令處理器24處理的命令流28中的運(yùn)算的一或多個指示。舉例來說,跟蹤緩沖器26可存儲命令流28中的運(yùn)算的索引,以及命令處理器24已經(jīng)處理的命令流28中的運(yùn)算的索引。跟蹤緩沖器26還可存儲已經(jīng)調(diào)度以供gpu12執(zhí)行的命令流28中的運(yùn)算的指示。舉例來說,跟蹤緩沖器26可存儲命令處理器24已經(jīng)調(diào)度以供gpu12執(zhí)行的運(yùn)算的索引。應(yīng)理解,僅因?yàn)槊钐幚砥?4已經(jīng)處理了指定運(yùn)算,并不一定也意味著gpu12已執(zhí)行了所述運(yùn)算,因?yàn)間pu子系統(tǒng)12可能不一定與命令處理器24或cpu6同步。此外,在處理運(yùn)算之后,且在命令處理器24已調(diào)度所述運(yùn)算以供gpu12執(zhí)行之前,命令處理器24可執(zhí)行上下文切換。由此,跟蹤緩沖器26可能不能夠存儲gpu12是否已執(zhí)行某一運(yùn)算的指示,但可能夠存儲命令處理器24是否已處理了所述運(yùn)算以及命令處理器是否已調(diào)度了所述運(yùn)算以供gpu12執(zhí)行的指示。

      跟蹤緩沖器26可能夠在一個時間或另一時間存儲與命令流28中的每一運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)。然而,如果跟蹤緩沖器26當(dāng)前正存儲與命令流中的第一檢查點(diǎn)相關(guān)聯(lián)的數(shù)據(jù),且如果隨后命令處理器24處理相同命令流中的第二檢查點(diǎn),那么命令處理器24可在第二檢查點(diǎn)之前,從跟蹤緩沖器26凈化與命令流中的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)。在圖3中所示的實(shí)例中,跟蹤緩沖器26可包含與檢查點(diǎn)32a相關(guān)聯(lián)的數(shù)據(jù),以及與運(yùn)算32b到32h相關(guān)聯(lián)的數(shù)據(jù)。響應(yīng)于命令處理器24處理檢查點(diǎn)32i,命令處理器24可從跟蹤緩沖器26凈化與檢查點(diǎn)32a相關(guān)聯(lián)的數(shù)據(jù),以及與運(yùn)算32b到32h相關(guān)聯(lián)的數(shù)據(jù),使得在凈化所述數(shù)據(jù)之后,僅與檢查點(diǎn)32i相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中。以此方式,跟蹤緩沖器26可為足以存儲不超過與命令流中的兩個檢查點(diǎn)之間的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)的大小。

      跟蹤緩沖器26可存儲節(jié)點(diǎn)41a到41h(“節(jié)點(diǎn)41”),其各自包含與命令流28的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)。跟蹤緩沖器26可根據(jù)命令流28的相關(guān)聯(lián)運(yùn)算的次序來循序地存儲節(jié)點(diǎn)41。舉例來說,如果節(jié)點(diǎn)41a包含與檢查點(diǎn)32a相關(guān)聯(lián)的數(shù)據(jù),且節(jié)點(diǎn)41b包含與讀取運(yùn)算32c相關(guān)聯(lián)的數(shù)據(jù),節(jié)點(diǎn)41a循序地在跟蹤緩沖器26中的節(jié)點(diǎn)41b之前。

      在圖3的實(shí)例中,命令處理器24可不將其處理的命令流28的每個運(yùn)算的數(shù)據(jù)記錄到跟蹤緩沖器26中。因此,跟蹤緩沖器26可不包含用于由命令處理器24處理的命令流28的每一運(yùn)算的節(jié)點(diǎn)。實(shí)際上,命令處理器24可僅將與在命令流28的處理的中斷和恢復(fù)之后無法保證其一致性的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)記錄到跟蹤緩沖器26中,且可省略將與在命令流28的處理的中斷和恢復(fù)之后可保證其一致性的運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)記錄到跟蹤緩沖器26中。

      舉例來說,命令處理器24可將與讀取運(yùn)算32c相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中的節(jié)點(diǎn)41b到41e中,將與寫入運(yùn)算32e相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中的節(jié)點(diǎn)41f中,且將與“如果”條件性運(yùn)算32k相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中的節(jié)點(diǎn)41h中。命令處理器24還可省略將與自給自足和/或確定性的gpu狀態(tài)運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)記錄到跟蹤緩沖器26中,只要存在原始命令流即可。因此,命令處理器24可不將與狀態(tài)運(yùn)算32b、32d、32f、32g、32j及類似者相關(guān)聯(lián)的數(shù)據(jù)記錄到跟蹤緩沖器26中。

      命令處理器24可利用讀取指針36來從跟蹤緩沖器26讀取,且可利用寫入指針38來寫入到跟蹤緩沖器26。讀取指針36可指向節(jié)點(diǎn)41中與跟蹤緩沖器26中的第一有效運(yùn)算相關(guān)聯(lián)的節(jié)點(diǎn)。當(dāng)命令處理器24上下文切換遠(yuǎn)離命令流28時,命令處理器24可將與其處理的命令流28的最后運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)記錄到跟蹤緩沖器26中,且設(shè)定讀取指針36以指向跟蹤緩沖器26中與檢查點(diǎn)相關(guān)聯(lián)的第一節(jié)點(diǎn)。因此,在命令處理器24恢復(fù)命令流28的處理后,命令處理器24可即刻從讀取指針36指向的節(jié)點(diǎn)開始讀取跟蹤緩沖器26。同時,寫入指針38可指向跟蹤緩沖器26中在跟蹤緩沖器26中的最后節(jié)點(diǎn)之后的存儲器位置。

      如上文所論述,響應(yīng)于命令處理器24切換回到處理命令流28,命令處理器24可在命令處理器24最近已遇到的命令流28的檢查點(diǎn)處開始恢復(fù)處理命令流28。因此,即使在命令流28中的檢查點(diǎn)之后,在上下文切換之前,命令處理器24先前已經(jīng)處理了一或多個運(yùn)算,命令處理器24也可在恢復(fù)命令流28的處理之后再次遇到那些相同一或多個運(yùn)算。

      然而,因?yàn)楦櫨彌_器26可存儲在命令處理器24對命令流28的處理的中斷之前,來自命令處理器24對命令流28的運(yùn)算的處理以及gpu12對其的執(zhí)行,中間結(jié)果以及存儲器內(nèi)容,因此命令處理器24對命令流28的處理的后續(xù)恢復(fù)可能夠依靠存儲在跟蹤緩沖器26中的中間結(jié)果,以確保來自gpu12對命令流28的運(yùn)算的執(zhí)行的結(jié)果的正確性。在圖3的實(shí)例中,在命令處理器24執(zhí)行上下文切換39之前,命令處理器24可具有已經(jīng)處理的讀取運(yùn)算32c,其可為從存儲器30的特定存儲器位置的數(shù)據(jù)讀取。處理讀取運(yùn)算32c可包含通過命令處理器24將與讀取運(yùn)算32c相關(guān)聯(lián)的數(shù)據(jù)存儲到跟蹤緩沖器26中。舉例來說,與讀取運(yùn)算32c相關(guān)聯(lián)的數(shù)據(jù)可為由讀取運(yùn)算32c讀取的存儲器30的特定存儲器位置的存儲器內(nèi)容。

      與此同時,當(dāng)命令處理器24中斷命令流28的處理時,可有可能gpu12可執(zhí)行向存儲器30的相同特定存儲器位置的寫入命令。隨后,命令處理器24可從檢查點(diǎn)32a恢復(fù)命令流28的處理。在此實(shí)例中,命令處理器24可再次重新處理讀取運(yùn)算32c。因?yàn)榇鎯ζ?0的特定存儲器位置的內(nèi)容與此同時可能已改變,所以命令處理器24可至少部分地基于存儲在跟蹤緩沖器26中的與讀取運(yùn)算32c相關(guān)聯(lián)的數(shù)據(jù),確定重新執(zhí)行讀取運(yùn)算32c的結(jié)果。因此,響應(yīng)于遇到讀取運(yùn)算32c,命令處理器24可例如使gpu12能夠通過將存儲器30的特定存儲器位置的存儲器內(nèi)容讀取為存儲到跟蹤緩沖器26中,來執(zhí)行讀取運(yùn)算32c。以此方式,命令處理器24可利用跟蹤緩沖器26來確保來自gpu12跨上下文切換執(zhí)行命令流28的結(jié)果的正確性。

      圖4是進(jìn)一步詳細(xì)說明圖2和圖3的命令處理器24和跟蹤緩沖器26的實(shí)例運(yùn)算的框圖。如圖4中所示,命令處理器24可至少部分地基于跟蹤緩沖器26來平化命令流的執(zhí)行路徑。舉例來說,命令流28可包含一或多個控制流語句,例如斷言32k以導(dǎo)致可取決于評估變量“c”的值的分支化執(zhí)行路徑402,以確定是否滿足“如果”條件404。

      命令處理器24可接收并處理包含分支化執(zhí)行路徑402的命令流28的運(yùn)算,且可評估斷言32k,包含評估變量“c”的值,以確定是否滿足條件404。命令處理器24可至少部分地基于存儲在跟蹤緩沖器26中的變量“c”的值來平化分支化執(zhí)行路徑402,以產(chǎn)生經(jīng)扁平的執(zhí)行路徑452。平坦化分支化執(zhí)行路徑402可包含確定命令處理器24通過分支化執(zhí)行路徑402的運(yùn)算。舉例來說,平化分支化執(zhí)行路徑402可將條件404從經(jīng)平化的執(zhí)行路徑452省略,因?yàn)槊钐幚砥?02已解決了所述條件。平化分支執(zhí)行路徑402還可包含將運(yùn)算406從經(jīng)平化的執(zhí)行路徑452省略,因?yàn)槊钐幚砥?4基于評估包含于條件404中的斷言,來確定將不執(zhí)行運(yùn)算406。

      命令處理器24可將與經(jīng)平化的執(zhí)行路徑452相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中,例如將與經(jīng)平化的執(zhí)行路徑452相關(guān)聯(lián)的命令流28的運(yùn)算的指示存儲在跟蹤緩沖器26中。當(dāng)調(diào)度與分支化執(zhí)行路徑402相關(guān)聯(lián)的運(yùn)算的執(zhí)行以供gpu12執(zhí)行時,命令處理器24可改為調(diào)度與經(jīng)平化的執(zhí)行路徑452相關(guān)聯(lián)的運(yùn)算以供gpu12執(zhí)行。以此方式,命令處理器24可通過將較少數(shù)據(jù)存儲在跟蹤緩沖器26中來更高效地利用跟蹤緩沖器26,且還可通過調(diào)度經(jīng)平化的執(zhí)行路徑452以供執(zhí)行,而不是分支化執(zhí)行數(shù)學(xué)402,來更高效地利用gpu12。

      圖5是進(jìn)一步詳細(xì)地說明圖2到4的命令處理器24的實(shí)例運(yùn)算的流程圖。如圖5中所示,命令處理器24可處理命令流28以供至少一個處理器(例如gpu12)執(zhí)行,包含通過命令處理器24,將與命令流28中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中(502)。命令流28中的第一組一或多個運(yùn)算可存取存儲器(例如系統(tǒng)存儲器10或圖形存儲器40)中的一或多個存儲器位置。與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)可包含與所述第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示。命令處理器24可中斷命令流28的處理(504)。命令處理器24可響應(yīng)于在命令流28的處理的中斷之后恢復(fù)命令流28的處理,重放命令流28的至少一部分,包含通過命令處理器24,至少部分地基于存儲在跟蹤緩沖器26中的數(shù)據(jù),來處理命令流28的第二組一或多個運(yùn)算(506)。

      在一些實(shí)例中,與第一組一或多個運(yùn)算相關(guān)聯(lián)的一或多個存儲器位置的內(nèi)容的指示包括所述一或多個存儲器位置的內(nèi)容。在一些實(shí)例中,所述命令流中的第一組一或多個運(yùn)算包括以下各項(xiàng)中的至少一者:對存儲器中的一或多個存儲器位置的一或多個寫入運(yùn)算,或從所述存儲器中的所述一或多個存儲器位置的一或多個讀取運(yùn)算。在一些實(shí)例中,命令流中的第一組一或多個運(yùn)算包括至少一個值與一或多個存儲器位置的內(nèi)容的比較。

      在一些實(shí)例中,所述命令流中的第一組一或多個運(yùn)算包括控制流語句。在一些實(shí)例中,通過命令處理器24,將與命令流28中的第一組一或多個運(yùn)算相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中進(jìn)一步包含:評估所述控制流語句;至少部分地基于所述控制流語句的評估,來確定所述第一組一或多個運(yùn)算的執(zhí)行路徑;平化所述執(zhí)行路徑;以及將與經(jīng)平化的執(zhí)行路徑相關(guān)聯(lián)的數(shù)據(jù)存儲在跟蹤緩沖器26中。在一些實(shí)例中,所述方法進(jìn)一步包含通過命令處理器,調(diào)度與經(jīng)平化的執(zhí)行路徑相關(guān)聯(lián)的第一組一或多個運(yùn)算以供至少一個處理器執(zhí)行。

      在一些實(shí)例中,執(zhí)行命令流28中的第二組一或多個運(yùn)算的結(jié)果取決于在命令處理器中斷命令流的處理之前存儲在跟蹤緩沖器中的存儲器中的一或多個存儲器位置的內(nèi)容,不管在所述命令流的處理的中斷之后,向存儲器中的一或多個存儲器位置的額外一或多個寫入運(yùn)算,或來自存儲器中的一或多個存儲器位置的一或多個讀取運(yùn)算如何。

      在一些實(shí)例中,命令流28包含分離命令流28中的運(yùn)算的一或多個塊的多個檢查點(diǎn)。在一些實(shí)例中,至少部分地基于存儲在跟蹤緩沖器26中的數(shù)據(jù)重放命令流28的至少一部分包含從命令流28中的所述多個檢查點(diǎn)的最近遇到的檢查點(diǎn)開始恢復(fù)命令流28的處理。

      在一或多個實(shí)例中,所描述功能可以用硬件、軟件、固件或其任何組合來實(shí)施。如果實(shí)施于軟件中,那么可將功能作為一或多個指令或代碼存儲在計(jì)算機(jī)可讀媒體上或經(jīng)由計(jì)算機(jī)可讀媒體傳輸。計(jì)算機(jī)可讀媒體可包含計(jì)算機(jī)數(shù)據(jù)存儲媒體或通信媒體,通信媒體包含促進(jìn)將計(jì)算機(jī)程序從一處傳遞到另一處的任何媒體。數(shù)據(jù)存儲媒體可為可由一或多個計(jì)算機(jī)或一個或多個處理器存取以檢索用于實(shí)施本發(fā)明中描述的技術(shù)的指令、代碼和/或數(shù)據(jù)結(jié)構(gòu)的任何可用媒體。借助于實(shí)例而非限制,這些計(jì)算機(jī)可讀媒體可包括ram、rom、eeprom、cd-rom或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置。如本文中所使用,磁盤和光盤包含壓縮光盤(cd)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(dvd)、軟性磁盤和藍(lán)光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤利用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各項(xiàng)的組合也應(yīng)包含在計(jì)算機(jī)可讀媒體的范圍內(nèi)。

      代碼可由一或多個處理器執(zhí)行,所述一或多個處理器例如是一或多個數(shù)字信號處理器(dsp)、通用微處理器、專用集成電路(asic)、現(xiàn)場可編程邏輯陣列(fpga)或其它等效的集成或離散邏輯電路。因此,如本文中所使用的術(shù)語“處理器”可指前述結(jié)構(gòu)或適合于實(shí)施本文中所描述的技術(shù)的任一其它結(jié)構(gòu)中的任一者。另外,在一些方面中,本文中所描述的功能性可以在經(jīng)配置用于編碼和解碼的專用硬件和/或軟件模塊內(nèi)提供,或者并入在組合編解碼器中。而且,所述技術(shù)可完全實(shí)施于一或多個電路或邏輯元件中。

      本發(fā)明的技術(shù)可實(shí)施于廣泛多種裝置或設(shè)備中,所述裝置或設(shè)備包含無線手持機(jī)、集成電路(ic)或一組ic(即,芯片組)。本發(fā)明中描述各種組件、模塊或單元是為了強(qiáng)調(diào)經(jīng)配置以執(zhí)行所公開的技術(shù)的裝置的功能方面,但未必需要由不同硬件單元實(shí)現(xiàn)。實(shí)際上,如上文所描述,各種單元可以結(jié)合合適的軟件和/或固件組合在編碼解碼器硬件單元中,或者通過互運(yùn)算硬件單元的集合來提供,所述硬件單元包含如上文所描述的一或多個處理器。

      已描述了本發(fā)明的各種方面。這些和其它方面在所附權(quán)利要求書的范圍內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1