欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

與圖形相關(guān)的工作負荷上的功率節(jié)省的技術(shù)的制作方法

文檔序號:6539908閱讀:180來源:國知局
與圖形相關(guān)的工作負荷上的功率節(jié)省的技術(shù)的制作方法
【專利摘要】一種與圖形相關(guān)的工作負荷上的功率節(jié)省的技術(shù)。概括地說,各個實施例涉及一種裝置、方法和其它技術(shù),其用于:由圖形驅(qū)動器監(jiān)測圖形處理單元(GPU)的任務(wù);確定任務(wù)是否完成;如果任務(wù)沒有完成,則確定任務(wù)的平均任務(wù)完成時間;并且如果平均任務(wù)完成時間大于休眠狀態(tài)時間,則使處理電路的休眠狀態(tài)能夠持續(xù)休眠狀態(tài)時間那么長。
【專利說明】與圖形相關(guān)的工作負荷上的功率節(jié)省的技術(shù)

【技術(shù)領(lǐng)域】
[0001]概括地說,本文中描述的實施例涉及計算設(shè)備上的圖形處理。具體地說,實施例涉及在與圖形相關(guān)的操作、過程或任務(wù)的處理期間使能休眠狀態(tài)時段。

【背景技術(shù)】
[0002]許多應(yīng)用需要計算機系統(tǒng)中的圖形處理單元(GPU)對圖形密集型過程或操作進行處理。GPU通常是被優(yōu)化以執(zhí)行與圖形相關(guān)的操作的任意處理單元以及視頻解碼器引擎和幀相關(guān)引擎。應(yīng)用可以發(fā)送這些與圖形相關(guān)的操作并且等待這些與圖形相關(guān)的操作的完成和結(jié)果。應(yīng)用可以通過應(yīng)用編程接口(API)函數(shù)調(diào)用來向GPU發(fā)送與圖形相關(guān)的操作,然后核查與圖形相關(guān)的操作的狀態(tài)。應(yīng)用可以循環(huán)地核查狀態(tài),直到與圖形相關(guān)的操作完成為止。讓應(yīng)用循環(huán)地核查與圖形相關(guān)的操作的完成狀態(tài)會消耗大量功率,并且由于處理電路與GPU之間的功率節(jié)流還會影響性能。本文中描述的實施例是關(guān)于這些和其它考慮的。

【專利附圖】

【附圖說明】
[0003]圖1示出了第一系統(tǒng)的實施例。
[0004]圖2示出了第二系統(tǒng)的實施例。
[0005]圖3示出了第一邏輯流程的實施例。
[0006]圖4示出了第二邏輯流程的實施例。
[0007]圖5示出了第一信號圖的實施例。
[0008]圖6示出了第三邏輯流程的實施例。
[0009]圖7示出了第一計算體系結(jié)構(gòu)的實施例。

【具體實施方式】
[0010]在各個實施例中,一個或多個應(yīng)用可以向GPU發(fā)送與圖形相關(guān)的操作或任務(wù)來進行處理。與圖形相關(guān)的操作或任務(wù)可以通過API被發(fā)送到GPU,并且由圖形驅(qū)動器監(jiān)測。一個或多個應(yīng)用可以等待處理的完成,并且當任務(wù)在等待被處理或者正在由GPU處理時,可以請求任務(wù)的完成狀態(tài)。在各個實施例中,一個或多個應(yīng)用可以循環(huán)地或者自旋循環(huán)(spinloop)地經(jīng)由API從圖形驅(qū)動器請求任務(wù)的完成狀態(tài),以便確定特定的任務(wù)是否完成。一個或多個應(yīng)用可以使用該技術(shù)來確定發(fā)送到GPU來進行處理的任意與圖形相關(guān)的操作或任務(wù)的完成狀態(tài)。例如,應(yīng)用可以使用該技術(shù)來確定特定的繪制調(diào)用在3維(3D)場景中是否是完全封閉的,或者GPU是否完成了處理3D操作(諸如事件查詢)。實施例不局限于此,并且在本公開內(nèi)容中會預(yù)料到可以由GPU處理的任何與圖形相關(guān)的操作。
[0011]如同之前討論的,讓應(yīng)用循環(huán)地核查與圖形相關(guān)的操作的完成狀態(tài)會消耗大量功率,這是因為設(shè)備和/或處理電路不能進入休眠狀態(tài)并且總是以滿處理功率來進行處理。此外,由于處理電路與GPU之間的功率節(jié)流,讓應(yīng)用循環(huán)地核查完成狀態(tài)還會會影響性能。各個實現(xiàn)涉及解決這些和其它問題。
[0012]在各個實現(xiàn)中,可以指示圖形驅(qū)動器監(jiān)測每個與圖形相關(guān)的操作或任務(wù)的完成時間,并且基于平均完成時間為處理電路增加休眠時間。例如,如果GPU平均用10毫秒來完成與圖形相關(guān)的操作或任務(wù),那么圖形驅(qū)動器可以提供指令來以I毫秒的間隔將處理電路置于休眠,直到與圖形相關(guān)的操作或任務(wù)完成為止。通過以I毫秒的間隔將處理電路置于休眠狀態(tài),處理電路可以在不降低性能的前提下在最大量的時間期間處于休眠狀態(tài)。此外,應(yīng)用可以繼續(xù)并行地處理其它任務(wù)或工作。啟用處理電路的休眠狀態(tài)通過在處于休眠狀態(tài)時不對操作進行處理來節(jié)省功率。在各個實施例中,可以僅在長自旋循環(huán)期間(例如,當處理電路功率更多地浪費在執(zhí)行自旋循環(huán)上時)將處理電路置于休眠狀態(tài)。這確保了在不影響應(yīng)用的性能的前提下可以節(jié)省最大量的功率。
[0013]在各個實施例中,可以主動地向圖形驅(qū)動器通知與圖形相關(guān)的操作或任務(wù)完成。例如,當任務(wù)完成時,內(nèi)核模式驅(qū)動程序可以經(jīng)由操作系統(tǒng)事件通知主動向用戶模式驅(qū)動器進行通知。添加的特征具有以下益處:通過在休眠周期完成之前喚醒用戶模式驅(qū)動器和處理電路,來降低當任務(wù)在休眠狀態(tài)中間完成時引起的任何性能損失。在本文中進一步詳細討論了各個實施例和實現(xiàn)。
[0014]使用對本文中使用的符號和術(shù)語的一般參考,下面的【具體實施方式】可以從在計算機或計算機網(wǎng)絡(luò)上執(zhí)行的程序過程的方面來呈現(xiàn)。本領(lǐng)域的技術(shù)人員使用這些程序性的描述和表示來向本領(lǐng)域的其它技術(shù)人員最有效地傳達他們工作的實質(zhì)。
[0015]過程在這里并且通常被設(shè)想為導(dǎo)致期望結(jié)果的前后一致的操作序列。這些操作是需要對物理量進行物理處理的操作。這些量通常(雖然不一定)采取能夠被存儲、傳輸、組合、比較以及以其它方式處理的電、磁或光信號的形式。主要是為了通用的原因,將這些信號稱為比特、值、元件、符號、字符、術(shù)語、數(shù)字等有時證明是方便的。然而,應(yīng)當注意的是,所有這些以及類似術(shù)語要與適當?shù)奈锢砹肯嚓P(guān)聯(lián),并且僅是應(yīng)用于那些量的方便標簽。
[0016]此外,執(zhí)行的處理通常指的是諸如加、比較之類的術(shù)語,其通常與操作人員執(zhí)行的智力操作相關(guān)聯(lián)。本文中描述的在形成一個或多個實施例的一部分的操作中的任何一個操作中,在多數(shù)情況下,操作人員的這種能力不是必要的或者期望的。而是,這些操作是機器操作。用于執(zhí)行各個實施例的操作的有用機器包括通用數(shù)字計算機或類似的設(shè)備。
[0017]各個實施例還涉及用于執(zhí)行這些操作的裝置或系統(tǒng)。該裝置可以針對所需的目的來專門構(gòu)建,或者其可以包括由存儲在計算機中的計算機程序選擇性地激活或重新配置的通用計算機。本文中呈現(xiàn)的過程并不固有地涉及特定的計算機或其它裝置。各種通用機器可以與按照本文中的教導(dǎo)所書寫的程序一起使用,或可以證明構(gòu)建更加專用的裝置來執(zhí)行所需的方法步驟是便利的。根據(jù)所給出的描述,用于各種這些機器的所需結(jié)構(gòu)將是明顯的。
[0018]現(xiàn)在參照附圖,其中貫穿全文使用相同的參考數(shù)字來表示相同的元件。在下面的描述中,出于解釋的目的,闡述了大量的具體細節(jié)以便提供對其的徹底理解。然而,顯而易見的是,可以在不使用這些具體細節(jié)的情況下來實現(xiàn)這些新穎的實施例。在其它實例中,為了便于描述這些實施例,以框圖的形式示出了公知的結(jié)構(gòu)和設(shè)備。意圖是覆蓋與所要求保護的主題相一致的所有的修改、等價物和替代物。
[0019]圖1示出了計算系統(tǒng)(具體而言,計算系統(tǒng)105)的一個實施例。在各個實施例中,計算系統(tǒng)105可以代表適于與本文中描述的一個或多個實施例(諸如圖3的邏輯流程300、圖4的邏輯流程400和/或圖6的邏輯流程600) —起使用的計算系統(tǒng)。實施例不局限于。
[0020]如圖1中所示,計算系統(tǒng)105可以包括多個元件。根據(jù)給定的一組設(shè)計或性能約束的需要,可以使用一個或多個電路、組件、寄存器、處理器、軟件子例程、模塊或它們的任意組合來實現(xiàn)一個或多個元件。雖然圖1通過示例的方式以某種拓撲結(jié)構(gòu)示出了有限數(shù)量的元件,但可以明白的是,根據(jù)給定的實現(xiàn)的需要,可以在計算系統(tǒng)105中使用任何合適的拓撲結(jié)構(gòu)中的更多或更少的元件。實施例不局限于該上下文。
[0021]在各個實施例中,計算系統(tǒng)105可以包括處理電路102。處理電路102可以是任意類型的計算元件中的一個或多個,諸如但不限于:微處理器、處理器、中央處理單元、數(shù)字信號處理單元、雙核處理器、移動設(shè)備處理器、臺式處理器、單核處理器、片上系統(tǒng)(SoC)設(shè)備、復(fù)雜指令集計算(Cl SC )微處理器、精簡指令集(RI SC )微處理器、超長指令字(VLIW )微處理器、或單個芯片或集成電路上的任何其它類型的處理器或處理電路。處理電路102可以經(jīng)由互連125 (諸如,一個或多個總線、控制線和數(shù)據(jù)線)連接到或者與計算系統(tǒng)的其它元件進行通信。
[0022]在一個實施例中,計算系統(tǒng)105可以包括耦接到處理電路102的存儲器單元104。根據(jù)給定的實現(xiàn)的需要,存儲器單元104可以經(jīng)由互連125,或者通過處理電路102與存儲器單元104之間的專用通信總線耦接到處理電路102。可以使用能夠存儲數(shù)據(jù)的任意機器可讀或計算機可讀介質(zhì)(包括易失性和非易失性存儲器)來實現(xiàn)存儲器單元104。在一些實施例中,機器可讀或計算機可讀介質(zhì)可以包括非臨時性介質(zhì)。實施例不局限于該上下文。
[0023]存儲器單元104可以瞬間地、暫時地或永久地存儲數(shù)據(jù)。存儲器單元104為計算系統(tǒng)105存儲指令和數(shù)據(jù)。當處理電路102執(zhí)行指令時,存儲器單元104還可以存儲臨時變量或其它中間信息。存儲器單元104不局限于存儲上面所討論的數(shù)據(jù);存儲器單元104可以存儲任意類型的數(shù)據(jù)。
[0024]在各個實施例中,計算系統(tǒng)105可以包括顯示單元106。顯示單元106可以構(gòu)成能夠顯示從處理電路102接收到的信息的任意顯示設(shè)備。例如,顯示單元106可以包括下列各項中的至少一種:液晶顯示器(IXD )、薄膜晶體管-1XD (TFT-1XD )、有機發(fā)光二極管(OLED )、柔性顯示器、三維(3D)顯示器和投影儀。顯示單元106可以顯示與控制計算系統(tǒng)105的功能相關(guān)聯(lián)的用戶接口(UI)或圖形用戶接口(GUI)。根據(jù)各個實施例,計算機設(shè)備可以包括兩個或更多個顯示單元。例如,在一個實施例中,計算設(shè)備可以包括兩個IXD顯示器。
[0025]在各個實現(xiàn)中,計算系統(tǒng)105可以包括電池108。電池108可以是用于為計算系統(tǒng)105存儲電力的任何類型的電池,包括但不限于:鋰離子電池、鎳鎘電池、氯化鋅電池等。電池可以是可再充電的。在一些實施例中,計算系統(tǒng)105可以具有超過一個的電池。在一些實施例中,電池可以是可拆卸的。在其它實施例中,電池可以是固定的。
[0026]在各個實施例中,計算系統(tǒng)105可以包括存儲器110。存儲器110可以實現(xiàn)為非易失性存儲設(shè)備,諸如但不限于:磁盤驅(qū)動器、光盤驅(qū)動器、磁帶驅(qū)動器、內(nèi)部存儲設(shè)備、附加存儲設(shè)備、閃存、電池備份的SDRAM (同步DRAM)和/或網(wǎng)絡(luò)可訪問的存儲設(shè)備。在實施例中,例如,當包括多個硬盤驅(qū)動器時,存儲器110可以包括用于針對寶貴的數(shù)字媒體增加存儲性能加強保護的技術(shù)。存儲器110的其它示例可以包括:硬盤、軟盤、壓縮盤只讀存儲器(CD-ROM)、可記錄壓縮盤(⑶-R)、可重寫壓縮盤(⑶-RW)、光盤、磁介質(zhì)、磁光介質(zhì)、可移動存儲卡或盤、各種類型的DVD設(shè)備、磁帶設(shè)備、盒式磁帶設(shè)備等。實施例不局限于該上下文。
[0027]在一些實施例中,計算系統(tǒng)105可以包括一個或多個I/O適配器112。I/O適配器112的示例可以包括:通用串行總線(USB)端口 /適配器、IEEE1394火線端口 /適配器等。實施例不局限于該上下文。
[0028]在各個實施例中,計算系統(tǒng)105可以包括收發(fā)機114。收發(fā)機114可以包括能夠使用各種合適的無線通信技術(shù)來發(fā)送和接收信號和信息的一個或多個無線電單元。這些技術(shù)可以涉及跨越一個或多個無線網(wǎng)絡(luò)的通信。示例性無線網(wǎng)絡(luò)包括(但不限于)無線局域網(wǎng)(WLAN)、無線個人域網(wǎng)(WPAN)、無線城域網(wǎng)(WMAN)、蜂窩網(wǎng)絡(luò)和衛(wèi)星網(wǎng)絡(luò)。在跨越這些網(wǎng)絡(luò)的通信中,收發(fā)機114可以根據(jù)任意版本的一個或多個可適用標準來進行操作。實施例不局限于該上下文。
[0029]在各個實施例中,計算系統(tǒng)105可以包括圖形處理單元(GPU)116。GPU116可以包括被優(yōu)化以執(zhí)行與圖形相關(guān)的操作的任意處理單元、邏輯單元或電路以及視頻解碼器引擎和幀相關(guān)引擎。GPU116可以用于為各種應(yīng)用(諸如視頻游戲、圖形、計算機輔助設(shè)計(CAD)、仿真和可視化工具、成像等)渲染2維(2-D)和/或3維(3-D)圖像。各個實施例不局限于此;GPU116可以處理任意類型的圖形數(shù)據(jù)(諸如圖片、視頻、程序、動畫、3D、2D等)。
[0030]圖2示出了用于為應(yīng)用處理圖形的系統(tǒng)200的第一框圖。如圖2中所示,系統(tǒng)200可以包括用于處理圖形和與圖形相關(guān)的操作的多個模塊和元件。在各個實施例中,系統(tǒng)200可以包括應(yīng)用202、應(yīng)用編程接口(API)模塊204、圖形驅(qū)動器206、圖形處理單元(GPU)208和GPU工作隊列210。在各個實施例中,GPU工作隊列210可以存儲要由GPU208完成或處理的一個或多個任務(wù)212。系統(tǒng)200的模塊和元件可以經(jīng)由一個或多個軟件和/或硬件互連220 (諸如一個或多個總線、跡線、通路、等等)來互相通信。各個模塊和元件可以經(jīng)由任意軟件通信方法(諸如消息、HTML消息、XML消息、呼叫、函數(shù)調(diào)用、中間件、通用對象請求代理體系結(jié)構(gòu)(CORBA)等)來互相傳遞信息。
[0031]系統(tǒng)200可以不局限于圖2中所示的這些具體的模塊和元件。例如,系統(tǒng)200可以包括用于處理圖形和與圖形相關(guān)的操作的任意數(shù)量的模塊和元件。在各個實施例中,系統(tǒng)200的某些模塊和元件可以操作在計算系統(tǒng)105上或者結(jié)合計算系統(tǒng)105來操作。例如,系統(tǒng)200的模塊和元件可以存儲在存儲器104中并且由處理電路102來處理。
[0032]應(yīng)用202可以是任何類型的應(yīng)用或軟件。在各個實施例中,應(yīng)用202可以是企業(yè)軟件、會計軟件、辦公套件、繪圖軟件、游戲軟件、媒體軟件、基于Web的應(yīng)用、計算機系統(tǒng)軟件、教育軟件、仿真軟件、內(nèi)容訪問軟件、媒體開發(fā)軟件、產(chǎn)品工程軟件等。應(yīng)用202不局限于此;應(yīng)用202可以是用于在計算系統(tǒng)上處理數(shù)據(jù)的任意類型的應(yīng)用或軟件。
[0033]應(yīng)用編程接口(API)模塊204可以是用于在系統(tǒng)202的模塊和元件之間處理圖形信息的任意類型的API。例如,在各個實施例中,API模塊204在應(yīng)用202與圖形驅(qū)動器模塊206之間提供抽象層,從而使得應(yīng)用和圖形驅(qū)動器模塊可以在彼此之間進行通信。API模塊204可以通過各種消息或調(diào)用(諸如函數(shù)調(diào)用)啟用系統(tǒng)200的模塊和元件之間的通信。在各個實施例中,API模塊204可以是諸如Direct3D?或OpenGL?之類的的圖形API。
[0034]圖形驅(qū)動器模塊206可以是提供在系統(tǒng)200上操作的圖形硬件與軟件之間的接口的任意類型的圖形驅(qū)動器軟件。例如,圖形驅(qū)動器模塊206可以為圖形處理單元208與系統(tǒng)200的其它模塊和元件之間的接口使能用它們之間的通信。然而,圖形驅(qū)動器模塊206不局限于此。例如,圖形驅(qū)動器模塊206可以使能圖形處理單元208與在系統(tǒng)200上操作的操作系統(tǒng)(未示出)之間的通信。在各個實施例中,圖形驅(qū)動器模塊206可以從在計算系統(tǒng)105上執(zhí)行的應(yīng)用202接收函數(shù)調(diào)用。圖形驅(qū)動器模塊206還可以將函數(shù)調(diào)用路由到GPU208,從而使得圖形可以由GPU208呈現(xiàn)。在各個實施例中,圖形驅(qū)動器模塊206可以存儲在存儲器104中,并且由處理電路102來處理。然而,圖形驅(qū)動器模塊206不局限于此。圖形驅(qū)動器模塊206可以存儲在任何類型的存儲設(shè)備中,并且可以由任何類型的處理設(shè)備來處理。
[0035]在各個實施例中,圖形驅(qū)動器模塊206可以是用戶模式驅(qū)動器。用戶模式驅(qū)動器運行在非特權(quán)處理器模式中,在非特權(quán)處理器模式中執(zhí)行其它應(yīng)用代碼(包括受保護的子系統(tǒng)代碼)。除了通過調(diào)用API (諸如API204),用戶模式驅(qū)動器不能訪問系統(tǒng)數(shù)據(jù)。然后,API調(diào)用系統(tǒng)服務(wù)。然而,各個實施例不局限于此;圖形驅(qū)動器模塊206可以是工作在一起的用戶模式驅(qū)動器與內(nèi)核模式驅(qū)動器的結(jié)合。內(nèi)核模式驅(qū)動器作為操作系統(tǒng)的決策指令(executive)的一部分來運行,其是支持一個或多個受保護的子系統(tǒng)的底層操作系統(tǒng)組件。
[0036]圖形處理單元(GPU)208可以是用于處理圖形的任何類型的處理電路。GPU208可以包含并發(fā)地執(zhí)行獨立操作的多個處理單元。GPU208可以實現(xiàn)用于對從應(yīng)用接收的任務(wù)進行處理的多個圖形原始操作。在各個實施例中,GPU208可以處理任何類型的圖形任務(wù),包括但不限于:繪制、紋理化、渲染3維(3-D)圖形、渲染2維(2-D)圖形、矩陣計算和向量計算。
[0037]在各個實施例中,GPU208可以渲染幀數(shù)據(jù)。例如,GPU208可以從一個或多個應(yīng)用(諸如應(yīng)用202)接收幀數(shù)據(jù)。GPU208接收(例如,全部或部分由運行在處理電路102上的應(yīng)用生成的)幀數(shù)據(jù)。然后,GPU208可以渲染幀數(shù)據(jù)以便生成可以提供給顯示設(shè)備(諸如顯示單元106)的經(jīng)渲染的幀(例如,與視頻幀或圖形相對應(yīng)的數(shù)字像素信息文件)。然而,GPU208不局限于此。GPU208可以處理從應(yīng)用或操作系統(tǒng)接收的任何類型的圖形信息。
[0038]GPU工作隊列210可以是用于存儲要由GPU208完成的任務(wù)的任何類型的緩沖器或存儲器。在一些實施例中,GPU工作隊列210可以是用于存儲任務(wù)的任何種類的數(shù)據(jù)結(jié)構(gòu),諸如環(huán)形緩沖器、比特數(shù)組、動態(tài)數(shù)組、哈希表、哈希數(shù)組樹、稀疏數(shù)組等。GPU工作隊列210可以是處理電路102留出的用于存儲要由GPU208完成的任務(wù)的存儲器單元104的任意部分。在其它實施例中,GPU工作隊列210可以是用于存儲GPU任務(wù)的單獨的存儲器(未示出)。在一些實例中,GPU工作隊列210可以是超過一個的存儲器或緩沖器。
[0039]GPU工作隊列210可以存儲要由GPU208獲取的任務(wù)。通常,圖形驅(qū)動器模塊206將任務(wù)插入工作隊列210。然而,各個實施例不局限于此。任務(wù)可以經(jīng)由計算系統(tǒng)的其它元件(諸如操作系統(tǒng))插入GPU工作隊列210。
[0040]在各個實施例中,GPU208可以從GPU工作隊列210異步地獲取接下來要處理的任務(wù)。接下來要處理的任務(wù)的選擇可以基于由處理電路102規(guī)定的優(yōu)先級排序。在一些實例中,處理電路102可以針對每一個任務(wù)來規(guī)定優(yōu)先級。在其它實例中,處理電路102可以規(guī)定與存儲器相關(guān)聯(lián)的優(yōu)先級,并且在該存儲器中排隊的任何任務(wù)將具有與該存儲器相關(guān)聯(lián)的優(yōu)先級。
[0041]任務(wù)212可以是要由GPU208完成的任何類型的任務(wù)。在各個實施例中,任務(wù)212可以是任何類型的與圖形相關(guān)的任務(wù),包括但不限于:繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等。
[0042]在各個實施例中,可以從應(yīng)用202接收任務(wù)212來由GPU208進行處理。任務(wù)212可以是GPU208經(jīng)由API204接收的??梢韵蛉蝿?wù)212分配用于處理的優(yōu)先級并將其插入要被處理的GPU工作隊列212。例如,可以將任務(wù)212插入GPU工作隊列210,從而使得在處理任務(wù)212之前必須對5個其它任務(wù)212進行處理。在其它實施例中,可以立即處理任務(wù)。
[0043]各個模塊和元件可以經(jīng)由互連220來互相通信。例如在各個實施例中,應(yīng)用202可以向API204發(fā)送函數(shù)調(diào)用,以便確定由GPU208處理的任務(wù)212的完成狀態(tài)。然后,API204可以經(jīng)由另一個函數(shù)調(diào)用與圖形驅(qū)動器206通信,以便獲取該特定任務(wù)212的完成狀態(tài)。圖形驅(qū)動器模塊206可以確定任務(wù)212的狀態(tài),并且向API208返回該完成狀態(tài),API208進而向應(yīng)用202返回該完成狀態(tài)。應(yīng)用202可以連續(xù)地或者以特定的間隔循環(huán)地請求完成狀態(tài),直到該狀態(tài)指示任務(wù)212完成為止。特定的間隔可以是由應(yīng)用202和/或圖形處理模塊206定義的任意間隔。下面將參照圖3對該實施例和其它實施例進行更詳細的討論。
[0044]圖3示出了用于由GPU處理任務(wù)的第一邏輯流程300。為了清楚的目的,參照圖1和圖2的系統(tǒng)100和系統(tǒng)200來討論該邏輯流程。在框305處,應(yīng)用編程接口(API)204可以從應(yīng)用202接收對任務(wù)212的完成狀態(tài)的請求。如同之前所討論的,任務(wù)212可以是從應(yīng)用202發(fā)送到GPU208來進行處理的任意與圖形相關(guān)的任務(wù)。API204可以以查詢對象的形式通過函數(shù)調(diào)用從應(yīng)用202接收對完成狀態(tài)的請求。API204可以向圖形驅(qū)動器模塊206傳送該請求,以便確定任務(wù)212的完成狀態(tài)。API204可以從圖形驅(qū)動器模塊206接收完成或沒有完成的結(jié)果,并且向應(yīng)用202返回該結(jié)果。在各個實施例中,圖形驅(qū)動器模塊206可以向API204返回沒有完成的結(jié)果,直到任務(wù)212由GPU208完全處理為止。然后,API204可以向應(yīng)用202返回該結(jié)果。在該示例中,對圖形驅(qū)動器模塊線程和請求完成狀態(tài)線程進行處理的處理電路102仍然在自旋循環(huán)中,直到任務(wù)212被處理并且完成結(jié)果被返回為止。下面將對該實施例和替換的實施例進行更詳細的討論。
[0045]在框310處,圖形驅(qū)動器模塊206確定任務(wù)212是否完成。圖形驅(qū)動器模塊206可以經(jīng)由互連220與GPU208通信,以便確定GPU208是否已經(jīng)處理了任務(wù)212。圖形驅(qū)動器模塊206可以以任意方式(諸如通過函數(shù)調(diào)用或低級指令)與GPU208通信。此外,圖形驅(qū)動器模塊206可以直接地或者經(jīng)由操作系統(tǒng)(未示出)與GPU208通信。圖形驅(qū)動器模塊206不局限于此。圖形驅(qū)動器模塊206可以通過任意數(shù)量的互連以任意方式與GPU208通信,以便接收任務(wù)212的完成狀態(tài)。圖形驅(qū)動器模塊206可以從GPU208接收指示任務(wù)212完成或沒有完成的結(jié)果的信息。然后,可以基于從GPU208接收到的信息將完成或沒有完成的結(jié)果發(fā)送到API204和應(yīng)用202。
[0046]如果完成了任務(wù)212,那么在框315處確定任務(wù)完成時間和平均任務(wù)完成時間。在各個實施例中,圖形驅(qū)動器模塊206可以計算任務(wù)完成時間和平均任務(wù)完成。然而,在其它實施例中,該確定可以是由處理電路、控制器、不同的模塊做出的。例如,在各個實施例中,任務(wù)完成時間和平均任務(wù)完成可以由GPU208來確定或計算。各個實施例不局限于此。
[0047]可以基于所確定的任務(wù)開始時間來計算任務(wù)完成時間。如同下面參照框325進一步討論的,可以在圖形驅(qū)動器模塊206第一次確定任務(wù)212沒有完成時保存任務(wù)開始時間。除了確定任務(wù)開始時間以外,圖形驅(qū)動器模塊206和/或GPU208可以確定任務(wù)結(jié)束時間??梢酝ㄟ^確定任務(wù)開始時間和任務(wù)結(jié)束時間之間的差來計算任務(wù)完成時間。在各個實施例中,隨后可以將任務(wù)完成時間保存在存儲器或存儲設(shè)備中,并且用于進一步的處理。任務(wù)完成時間還可以用于確定平均任務(wù)完成時間。
[0048]平均任務(wù)完成時間可以是由GPU208處理的所有任務(wù)的任務(wù)完成時間的移動平均(running average)。例如,圖形驅(qū)動器模塊206可以確定并保持由GPU208完成的所有任務(wù)的平均任務(wù)完成時間。在一些實施例中,不同類型任務(wù)的完成時間可能需要不同的時間量。因此,也可以針對相似任務(wù)或任務(wù)類型中的每一個確定并保持平均任務(wù)完成時間。例如,圖形驅(qū)動器模塊206可以確定并保持GPU208處理的不同任務(wù)或任務(wù)類型(諸如繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算)的平均任務(wù)完成時間。各個實施例不局限于此。圖形驅(qū)動器模塊206和/或GPU208可以確定并保持任意數(shù)量的平均任務(wù)完成時間。
[0049]如果在框310處沒有完成任務(wù)212,那么在框320處,圖形驅(qū)動器模塊208確定是否這是任務(wù)212被確定沒有完成的第一實例。如同之前所討論的,完成狀態(tài)可以被請求一次或多次,并且圖形驅(qū)動器模塊206可以確定或查詢GPU208來確定任務(wù)212是否完成。如果圖形驅(qū)動器模塊206確定這是任務(wù)212被確定沒有完成的第一實例,那么在框325處,圖形驅(qū)動器模塊206將任務(wù)開始時間保存在存儲器或存儲設(shè)備中。
[0050]如果圖形驅(qū)動器模塊206確定這不是任務(wù)212被確定沒有完成的第一實例,那么在框330處,圖形驅(qū)動器模塊206確定任務(wù)212的平均任務(wù)完成時間是否大于休眠狀態(tài)時間。在各個實施例中,平均任務(wù)完成時間可以是所有之前完成的任務(wù)的平均任務(wù)完成時間。然而,在其它實施例或同一個實施例中,平均任務(wù)完成時間可以是任務(wù)或特定的任務(wù)類型(諸如繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等)的平均任務(wù)完成時間。例如,圖形驅(qū)動器模塊206可以確定正被處理的任務(wù)類型,并且使用該特定類型任務(wù)的平均任務(wù)完成時間來進行比較。
[0051]在一些實例中,休眠狀態(tài)時間可以是預(yù)定的。休眠狀態(tài)時間可以基于特定任務(wù)的平均任務(wù)完成時間的分數(shù)。例如,如果平均任務(wù)完成時間為10毫秒(ms),那么休眠狀態(tài)時間可以被設(shè)置為Ims或者百分之10??梢栽O(shè)置休眠狀態(tài)時間,從而使得其在不影響系統(tǒng)性能的前提下通過節(jié)省處理電路功率而有利于系統(tǒng)。在各個實施例中,休眠狀態(tài)時間可以在毫秒數(shù)量級上進行設(shè)置。然而,在各個實施例中,休眠狀態(tài)時間受限于此。可以以任何時間來設(shè)置休眠狀態(tài)時間,從而使得其在不影響系統(tǒng)性能的前提下通過節(jié)省處理電路功率而有利于系統(tǒng)。
[0052]如果在框330處,圖形驅(qū)動器模塊206確定平均任務(wù)完成時間大于休眠狀態(tài)時間,那么在框335處,圖形驅(qū)動器模塊206可以指示或使得處理電路102能夠在休眠狀態(tài)時間內(nèi)進行休眠。在休眠狀態(tài)時間期間,處理電路102可以進入休眠或低功率狀態(tài)。當處理電路102處于休眠狀態(tài)時,處理電路可以將正在被處理電路102處理的各個線程置于休眠。例如,處理電路102可以將用于監(jiān)測或確定任務(wù)212的完成狀態(tài)的圖形驅(qū)動器模塊線程置于休眠。
[0053]在各個實施例中,系統(tǒng)可以將處理電路102置于由高級配置和功率接口(ACPI)規(guī)范定義的休眠狀態(tài)中的一種。例如,可以將處理電路置于功率狀態(tài)C1-C6中的一種。ACPI將Cl定義為:處理電路沒有執(zhí)行指令但基本上可以瞬間返回到執(zhí)行狀態(tài)的一種狀態(tài),將C2定義為:處理電路保持所有的軟件可見狀態(tài)但可能需要較長時間蘇醒的一種狀態(tài),并將C3定義為:處理電路不需要保持其高速緩存一致,但保持其它狀態(tài)信息的一種狀態(tài)。C4-C6功率狀態(tài)將處理電路置于甚至更深的功率狀態(tài)。在一些實施例中,C4-C6逐漸減小施加到處理電路的電壓功率。在C6功率狀態(tài)中,電壓功率可以降低到O伏特。各個實施例不局限于C狀態(tài)休眠狀態(tài)。例如,可以將處理電路102置于任何休眠狀態(tài),從而使得其在不影響系統(tǒng)性能的前提下通過節(jié)省處理電路功率而有利于系統(tǒng)。
[0054]如果圖形驅(qū)動器模塊206確定平均任務(wù)完成時間不大于休眠狀態(tài)時間,那么在框340處,圖形驅(qū)動器模塊206可以不將處理電路102置于休眠狀態(tài),并且可以返回完成狀態(tài)??梢越?jīng)由API204將完成狀態(tài)返回給應(yīng)用202。在各個實施例中,圖形驅(qū)動器模塊206可以返回查詢對象的完成狀態(tài)。例如,圖形驅(qū)動器模塊206將確定針對一任務(wù)創(chuàng)建的查詢對象的完成狀態(tài),并且向應(yīng)用返回該完成狀態(tài)。圖形驅(qū)動器模塊206將基于由圖形驅(qū)動器模塊206做出的確定返回完成或沒有完成的完成狀態(tài)。在各個實施例中,應(yīng)用202和API204可以繼續(xù)請求完成狀態(tài),直到返回的完成狀態(tài)指示任務(wù)212完成為止??梢灾貜?fù)框305到340中描述的過程,直到任務(wù)212完成為止,并且可以多次在預(yù)定的休眠狀態(tài)時間期間將處理電路置于休眠狀態(tài)。
[0055]圖4示出了具有任務(wù)完成通知的、用于由GPU208處理任務(wù)212的第二邏輯流程。為了清楚的目的,參照圖1和圖2的系統(tǒng)100和系統(tǒng)200來討論該邏輯流程。在框402處,應(yīng)用202向圖形驅(qū)動器模塊206發(fā)送由GPU208處理的任務(wù)以及監(jiān)測任務(wù)212的請求。應(yīng)用202可以以請求創(chuàng)建查詢對象的形式來進行請求。查詢對象可以是所生成的用于監(jiān)測要由GPU208處理的任務(wù)的任意對象。應(yīng)用202可以經(jīng)由API204向圖形驅(qū)動器模塊206發(fā)送該請求。
[0056]在框404處,圖形驅(qū)動器模塊206可以創(chuàng)建針對任務(wù)212的完成狀態(tài)的通知。該通知可以是響應(yīng)于接收到用于監(jiān)測的請求而創(chuàng)建的事件通知。在各個實施例中,事件通知可以與由GPU208處理的任務(wù)212相關(guān)聯(lián)。該通知可以由圖形驅(qū)動器模塊206通過計算系統(tǒng)的操作系統(tǒng)來創(chuàng)建。如同下面將進一步詳細討論的,事件通知可以指示任務(wù)212是何時完成的,并且可以由操作系統(tǒng)的內(nèi)核模式驅(qū)動器發(fā)送到圖形驅(qū)動器模塊206。
[0057]在框406處,應(yīng)用第一次發(fā)起對完成狀態(tài)的請求。例如,應(yīng)用202可以向圖形驅(qū)動器模塊206發(fā)送對任務(wù)212的完成狀態(tài)的請求。該請求可以與圖3的框305中討論的請求相似。在各個實施例中,該請求可以是在動態(tài)存儲器地址(DMA)緩沖器中向圖形驅(qū)動器模塊206提交的查詢對象??梢詫樵儗ο蟮腄MA緩沖器發(fā)送到圖形驅(qū)動器模塊206。圖形驅(qū)動器模塊206可以接收對完成狀態(tài)的請求,并且在框408處,可以將該通知與任務(wù)212相關(guān)聯(lián)。例如,圖形驅(qū)動器模塊206將事件通知與任務(wù)212或查詢對象關(guān)聯(lián),并且當任務(wù)212完成時,向內(nèi)核模式驅(qū)動器提交對通知的請求。如同之前所討論的,內(nèi)核模式驅(qū)動器可以向圖形驅(qū)動器模塊206發(fā)送該通知,從而指示任務(wù)212的完成。
[0058]在框410處,可以將任務(wù)212發(fā)送到GPU208進行處理。在各個實施例中,可以在DMA緩沖器中將任務(wù)212作為一組要該GPU208執(zhí)行的查詢操作而發(fā)送給GPU208。在框412處,GPU208可以接收任務(wù)212并處理任務(wù)212或該組查詢操作。如果GPU208有多個要完成的任務(wù),那么如同上面參照圖2所討論的,可以將任務(wù)212置于GPU工作隊列210中。GPU工作隊列210可以是環(huán)形緩沖器,并且GPU208可以基于先來先服務(wù)或先進先出(FIFO)來處理任務(wù)212。在其它實施例中,任務(wù)212可以具有優(yōu)先級水平,并且GPU208可以基于優(yōu)先級水平來處理任務(wù)212。具有高優(yōu)先級的任務(wù)將在具有低優(yōu)先級的任務(wù)之前被處理。例如,如果任務(wù)212具有高的或最高的優(yōu)先級,那么可以將任務(wù)212插入GPU工作隊列210以便接下來對其進行處理。
[0059]在框414處,任務(wù)212由GPU208處理,并且GPU208發(fā)送指示任務(wù)212的完成的中斷。在各個實施例中,中斷可以發(fā)送給內(nèi)核模式驅(qū)動器,從而在DMA緩沖器中指示任務(wù)212的完成。當處理電路102處于休眠狀態(tài)時,任務(wù)212可以由GPU異步地處理。在各個實施例中,GPU208可以在處理電路102解除休眠狀態(tài)之前結(jié)束處理任務(wù)212。
[0060]在框416處,向操作系統(tǒng)發(fā)送指示任務(wù)212的處理完成的通知。如果處理電路仍然處于休眠狀態(tài),那么操作系統(tǒng)可以喚醒該處理電路102。例如,內(nèi)核模式驅(qū)動器可以向操作系統(tǒng)發(fā)送與任務(wù)212相關(guān)聯(lián)的事件通知,并且操作系統(tǒng)可以將處理電路102從休眠狀態(tài)喚醒。當接收到指示任務(wù)212完成的中斷時,內(nèi)核模式驅(qū)動器發(fā)送事件通知。在這種情況下,處理電路102沒有完成休眠周期,而是在休眠狀態(tài)時間期滿之前蘇醒。然后,處理電路102可以更早處理信息,而不是等待休眠狀態(tài)時間期滿以及休眠周期完成。
[0061]在各個實例中,當任務(wù)212在等待被GPU208處理時或正在被GPU208處理期間,操作系統(tǒng)可以喚醒一個或多個被置于休眠的線程。雖然不受限于此,但一個或多個線程可以包括監(jiān)測任務(wù)212的圖形驅(qū)動器模塊線程。一個或多個線程還可以包括當任務(wù)212在等待被GPU208處理或正在被GPU208處理時可以被置于休眠的任何其它線程。
[0062]在框418處,將任務(wù)結(jié)果返回給應(yīng)用。在各個實施例中,圖形驅(qū)動器模塊206發(fā)送任務(wù)212完成的指示,并且經(jīng)由API204向應(yīng)用202返回任務(wù)212的結(jié)果。任務(wù)212的結(jié)果可以是由GPU208處理的任何信息,包括但不限于下列各項的結(jié)果:圖形任務(wù)、繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等。一旦應(yīng)用202接收到這些結(jié)果,那么在框420處,該應(yīng)用就可以繼續(xù)使用這些結(jié)果來處理信息。
[0063]應(yīng)用202可以繼續(xù)循環(huán)地請求任務(wù)212的完成狀態(tài),并且與上面參照圖3討論的類似,處理電路102可以在休眠時間期間置于休眠狀態(tài)。在框422處,應(yīng)用可以發(fā)送對任務(wù)212的完成狀態(tài)的請求。在各個實施例中,API204可以從應(yīng)用202接收對任務(wù)212的完成狀態(tài)的請求。任務(wù)212可以是任何從應(yīng)用發(fā)送到GPU208來進行處理的與圖形相關(guān)的任務(wù)。API204可以通過函數(shù)調(diào)用從應(yīng)用202接收對完成狀態(tài)的請求。API204可以向圖形驅(qū)動器模塊206傳送該請求,以便確定任務(wù)212的完成狀態(tài)。
[0064]在判定框424處,圖形驅(qū)動器模塊206確定應(yīng)用202是否循環(huán)地請求完成狀態(tài)。例如,應(yīng)用202可以連續(xù)地或以特定的間隔來請求任務(wù)212的完成狀態(tài),直到完成狀態(tài)指示任務(wù)212完成和/或結(jié)果被返回給該應(yīng)用為止。如果在判定框424處,圖形驅(qū)動器模塊206沒有檢測到循環(huán),那么在框432處,圖形驅(qū)動器模塊206向應(yīng)用202返回沒有完成的完成狀態(tài)。如同之前所討論的,圖形驅(qū)動器模塊206可以經(jīng)由API204向應(yīng)用202返回完成狀態(tài)。
[0065]如果在判定框424處,圖形驅(qū)動器模塊206的確檢測到了循環(huán),那么在框426處,圖形驅(qū)動器模塊206確定延遲時間是否大于(或等于)任務(wù)212的平均任務(wù)完成時間。在各個實施例中,延遲時間可以是Ims或保持直到平均任務(wù)完成時間的剩余時間。如同之前所討論的,平均任務(wù)完成時間可以是由GPU208處理的所有任務(wù)的任務(wù)完成時間的移動平均。例如,圖形驅(qū)動器模塊206可以確定并保持由GPU208完成的所有任務(wù)的平均任務(wù)完成時間。在一些實施例中,不同任務(wù)或任務(wù)類型的完成時間可能需要不同的時間量。因此,也可以針對相似任務(wù)或任務(wù)類型中的每一個確定并保持平均任務(wù)完成時間。例如,圖形驅(qū)動器模塊206可以確定并保持GPU208處理的不同類型任務(wù)(諸如繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等)的平均任務(wù)完成時間。
[0066]如果在判定框426處,圖形驅(qū)動器模塊206確定延遲大于(或等于)平均任務(wù)完成時間,那么在框432處,圖形驅(qū)動器模塊206向該應(yīng)用返回沒有完成的完成狀態(tài)。在該示例中,因為預(yù)期到GPU208要迫切地結(jié)束處理任務(wù)212,所以沒有將處理電路102置于休眠狀態(tài)。通過啟用處理電路102的休眠狀態(tài),系統(tǒng)200避免了任務(wù)212可能在休眠狀態(tài)時間期滿之前結(jié)束的情況。然而,如果當任務(wù)212完成時處理電路102處于休眠狀態(tài),那么如同上面參照框410-416所討論的,可以喚醒該處理電路。
[0067]如果在判定框426處,圖形驅(qū)動器模塊確定延遲不大于平均任務(wù)完成時間,那么在框428處,圖形驅(qū)動器模塊206可以指示處理電路102在休眠狀態(tài)時間期間進行休眠。如同之前所討論的,可以設(shè)置休眠狀態(tài)時間,從而使得其在不影響系統(tǒng)性能的前提下通過節(jié)省處理電路功率而有利于系統(tǒng),并且休眠狀態(tài)時間可以在毫秒數(shù)量級上進行設(shè)置。在休眠狀態(tài)時間期間,處理電路102可以進入低功率狀態(tài)。當處理電路102處于休眠狀態(tài)時,處理電路102可以將正在被處理電路102處理的各個線程置于休眠。例如,處理電路102可以將針對任務(wù)212正被處理的圖形驅(qū)動器模塊線程置于休眠。在各個實施例中,如同之前所討論的,系統(tǒng)可以將處理電路102置于由高級配置和功率接口(ACPI)規(guī)范定義的休眠狀態(tài)中的一種。
[0068]當休眠狀態(tài)時間期間的休眠狀態(tài)完成時,在框430處,圖形驅(qū)動器模塊206確定任務(wù)212完成還是沒有完成。圖形驅(qū)動器模塊206可以經(jīng)由互連220與GPU208通信,以便確定GPU208是否已經(jīng)處理了任務(wù)212。如同之前所討論的,圖形驅(qū)動器模塊206可以通過任意數(shù)量的互連以任意方式與GPU208通信,以便接收任務(wù)212的完成狀態(tài)。圖形驅(qū)動器模塊206可以接收指示任務(wù)212完成或沒有完成的結(jié)果的信息。然后,可以基于從GPU208接收到的信息將完成或沒有完成的結(jié)果發(fā)送到API204和應(yīng)用202。
[0069]如果在框430處,圖形驅(qū)動器模塊206確定任務(wù)212沒有完成,那么在框432處,圖形驅(qū)動器模塊206向應(yīng)用102返回沒有完成的完成狀態(tài)。
[0070]如果在框430處,圖形驅(qū)動器模塊206確定任務(wù)212完成,那么在框434處,圖形驅(qū)動器模塊206向應(yīng)用102返回完成的完成狀態(tài)。然后,該過程進行到框418,并且任務(wù)212的結(jié)果被返回給應(yīng)用202。在各個實施例中,圖形驅(qū)動器模塊206發(fā)送任務(wù)212完成的指示,并且經(jīng)由API204向應(yīng)用202返回任務(wù)212的結(jié)果。任務(wù)的結(jié)果可以是由GPU208處理的任何信息,包括但不限于下列各項的結(jié)果:圖形任務(wù)、繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等。一旦應(yīng)用202接收到這些結(jié)果,那么在框420處,該應(yīng)用可以繼續(xù)使用這些結(jié)果來處理信息。
[0071]圖5不出了用于由圖形處理單兀(GPU)處理任務(wù)212的第一信號圖的實施例。在線條502處,應(yīng)用202向圖形驅(qū)動器模塊206發(fā)送任務(wù)212用于由GPU208進行處理。如同之前所討論的,可以經(jīng)由API204向圖形驅(qū)動器模塊206發(fā)送任務(wù)212。在線條504處,圖形驅(qū)動器模塊206可以接收任務(wù)212,并將任務(wù)212發(fā)送到GPU208來進行處理。GPU208可以立即處理任務(wù)212,或者可以將任務(wù)212放入GPU工作隊列210中以便稍后處理。對于該示例來說,稍后對任務(wù)212進行處理。
[0072]在線條506處,應(yīng)用202向圖形驅(qū)動器模塊208發(fā)送對任務(wù)212的完成狀態(tài)的第一請求。如同之前所討論的,應(yīng)用202可以經(jīng)由API204發(fā)送第一請求。圖形驅(qū)動器模塊208接收該請求并且可以保存任務(wù)212的任務(wù)開始時間。在各個實施例中,當圖形驅(qū)動器模塊208接收到對完成狀態(tài)的第一請求時,其可以不保存任務(wù)212的任務(wù)開始時間。在其它實施例中,當在線條502處圖形驅(qū)動器模塊208接收到任務(wù)212時,其可以保存任務(wù)212的任務(wù)開始時間。
[0073]在線條508處,圖形處理模塊208向GPU208發(fā)送請求來確定任務(wù)212的完成狀態(tài)。在線條510處,GPU208返回任務(wù)212的完成狀態(tài)。在該示例中,在線條510處,GPU208向圖形驅(qū)動器模塊206返回沒有完成的完成狀態(tài)。圖形處理模塊206從GPU208接收完成狀態(tài),并且在線條512處通過API204向應(yīng)用202發(fā)送完成狀態(tài)。
[0074]線條514-522與線條506-512類似。在線條514處,應(yīng)用202向圖形驅(qū)動器模塊206發(fā)送對任務(wù)212的完成狀態(tài)的第二請求。然而,一旦圖形驅(qū)動器模塊206接收到對完成狀態(tài)的第二請求,在線條516處,圖形驅(qū)動器模塊206可以在睡眠狀態(tài)時間期間一直將處理電路102置于休眠狀態(tài)。如同之前在上面參照圖3和圖4所討論的,處理電路102可以在休眠狀態(tài)時間期間一直休眠。各個實例不局限于此。例如,在線條506處,當圖形驅(qū)動器模塊206接收到對完成狀態(tài)的第一請求時,其可以在睡眠狀態(tài)時間期間一直將處理電路102置于休眠狀態(tài)。
[0075]在線條518處,圖形處理模塊208向GPU208發(fā)送請求來確定任務(wù)212的完成狀態(tài)。在該示例中,在線條520處,GPU208返回任務(wù)212沒有完成的完成狀態(tài)。圖形處理模塊206從GPU208接收完成狀態(tài),并且在線條522處通過API204向應(yīng)用202發(fā)送完成狀態(tài)。在該示例中,在第二請求的完成狀態(tài)循環(huán)期間,任務(wù)212的處理沒有完成。然而,各個實施例不局限于此。例如,任務(wù)212的處理可以完成,并且完成的完成狀態(tài)可以在任何時刻返回給應(yīng)用 202。
[0076]例如,線條524-532與線條512-522類似。然而,在線條532處,GPU208已經(jīng)結(jié)束處理任務(wù)212,并且完成的完成狀態(tài)返回給了應(yīng)用202。除了返回完成的完成狀態(tài)之外,在線條534處,GPU向圖形驅(qū)動器模塊206發(fā)送任務(wù)212的結(jié)果??梢栽谙驁D形驅(qū)動器模塊206發(fā)送完成狀態(tài)的同時發(fā)送該結(jié)果。例如,GPU208可以在與完成狀態(tài)相同的消息中向圖形驅(qū)動器模塊206發(fā)送該結(jié)果,從而使得在圖形模塊206和應(yīng)用202中在接收任務(wù)212的結(jié)果方面沒有延遲。然而,在各個實施例中,可以在與完成狀態(tài)不同的時刻在不同的消息中向圖形模塊206發(fā)送該結(jié)果。
[0077]在線條536處,圖形驅(qū)動器模塊206接收任務(wù)212的結(jié)果,并且向應(yīng)用202發(fā)送將該結(jié)果??梢酝ㄟ^API204將結(jié)果發(fā)送到應(yīng)用202。然后,應(yīng)用可以進行對GPU208完成的任務(wù)212的結(jié)果的處理。
[0078]在上述示例中,在完成結(jié)果連同任務(wù)212的結(jié)果返回之前,應(yīng)用202發(fā)送三個對任務(wù)212的完成狀態(tài)的請求。此外,圖形驅(qū)動器模塊206兩次在睡眠狀態(tài)時間期間將處理電路102置于休眠狀態(tài)。然而,各個實施例不局限于此。在一些實例中,任務(wù)212可以由GPU208比上述示例更早或更晚地完成。此外,可以發(fā)送任意數(shù)量的請求,并且可以進入任意數(shù)量的休眠狀態(tài)。在各個實施例中,圖形驅(qū)動器模塊206可以不將處理電路102置于休眠狀態(tài)。例如,如同上面參照框330所討論的,圖形驅(qū)動器模塊206可以確定平均任務(wù)212完成時間不大于休眠狀態(tài)時間,并且圖形驅(qū)動器模塊206可以不將處理電路102置于休眠狀態(tài)。在本文中討論和描述了其它實施例。
[0079]圖6示出了第三邏輯流程600的實施例。邏輯流程600可以代表由本文中描述的一個或多個實施例執(zhí)行的操作中的一些或全部。例如,邏輯流程600可以示出由系統(tǒng)100和200執(zhí)行的操作。
[0080]在圖6中示出的所描繪的實施例中,邏輯流程600可以包括:在框605處,由圖形驅(qū)動器監(jiān)測圖形處理單元(GPU)的任務(wù)。任務(wù)可以是供GPU處理的任何任務(wù),包括但不限于:圖形任務(wù)、繪制任務(wù)、紋理化任務(wù)、光柵化任務(wù)、像素處理任務(wù)、陰影化任務(wù)、渲染3維(3-D)圖像或圖形、渲染2維(2-D)圖像和圖形、矩陣計算、向量計算等。在框610處,一個或多個元件、電路、軟件模塊等可以確定任務(wù)是否完成。
[0081]在框615處,如果任務(wù)沒有完成,那么確定任務(wù)的平均任務(wù)完成時間。平均任務(wù)完成時間可以是由GPU處理的所有任務(wù)的任務(wù)完成時間的移動平均。例如,一個或多個元件、電路、模塊等可以確定并保持由GPU完成的所有任務(wù)的平均任務(wù)完成時間。在一些實施例中,不同任務(wù)或任務(wù)類型的完成時間可能需要不同的時間量。因此,如同之前所討論的,也可以針對相似任務(wù)或任務(wù)類型中的每一個確定并保持平均任務(wù)完成時間。
[0082]在框620處,如果平均任務(wù)完成時間大于休眠狀態(tài)時間,那么使處理電路的休眠狀態(tài)持續(xù)休眠狀態(tài)時間。休眠狀態(tài)時間可以是預(yù)定的,并且可以基于特定任務(wù)的平均任務(wù)完成時間的分數(shù)。例如,如果平均任務(wù)完成時間為10毫秒(ms),那么休眠狀態(tài)時間可以設(shè)置為Ims或者百分之10??梢栽O(shè)置休眠狀態(tài)時間,從而使得其在不影響系統(tǒng)性能的前提下通過節(jié)省處理電路功率而有利于系統(tǒng)。
[0083]圖7示出了適合于實現(xiàn)如前所述各個實施例的示例性計算體系結(jié)構(gòu)700的實施例。在一個實施例中,計算體系結(jié)構(gòu)700可以包括或?qū)崿F(xiàn)為腕帶110和/或計算設(shè)備115的一部分。
[0084]如同本申請中所使用的,術(shù)語“系統(tǒng)”和“組件”意在指代計算機相關(guān)的實體(不管是硬件、硬件和軟件的組合、軟件、還是執(zhí)行中的軟件),其示例由示例性計算體系結(jié)構(gòu)700提供。例如,組件可以是,但不限于是:處理器上運行的過程、處理器、硬盤驅(qū)動器、(光和/或磁存儲介質(zhì)的)多個存儲驅(qū)動器、對象、可執(zhí)行程序、執(zhí)行的線程、程序和/或計算機。通過說明的方式,在服務(wù)器上運行的應(yīng)用和該服務(wù)器二者都可以是組件。一個或多個組件可以位于執(zhí)行的進程和/或線程中,并且組件可以位于一個計算機上和/或分布在兩個或更多個計算機之間。此外,組件可以通過各種類型的通信介質(zhì)通信地互相耦接來協(xié)調(diào)操作。協(xié)調(diào)可以涉及信息的單向或雙向交換。例如,組件可以以在通信介質(zhì)上傳送的信號的形式來傳送信息。信息可以實現(xiàn)為分配給各種信號線的信號。在這樣的分配中,每個消息是信號。然而,其它實施例可以替換地使用數(shù)據(jù)消息??梢钥缭礁鞣N連接來發(fā)送這些數(shù)據(jù)消息。示例性連接包括并行接口、串行接口和總線接口。
[0085]計算體系結(jié)構(gòu)700包括各種常見的計算元件,諸如一個或多個處理器、多核處理器、協(xié)處理器、存儲器單元、芯片組、控制器、外圍設(shè)備、接口、振蕩器、定時設(shè)備、視頻卡、音頻卡、多媒體輸入/輸出(I/o)組件、電源等。然而,實施例不局限于計算體系結(jié)構(gòu)700的實現(xiàn)。
[0086]如圖7中所示,計算體系結(jié)構(gòu)700包括處理單元704、系統(tǒng)存儲器706和系統(tǒng)總線708。處理單元704可以是各種市售的處理器中的任意一種,諸如參照圖1中所示的處理器130所描述的那些。
[0087]系統(tǒng)總線708為系統(tǒng)組件(包括但不限于系統(tǒng)存儲器706)提供到處理單元704的接口。系統(tǒng)總線708可以是若干類型的總線結(jié)構(gòu)中的任意一種,其可以使用各種市售的總線體系結(jié)構(gòu)中的任意一種進一步互連到存儲器總線(帶有或沒有存儲器控制器)、外圍總線和局部總線。接口適配器可以經(jīng)由時隙體系結(jié)構(gòu)連接到系統(tǒng)總線708。示例時隙體系結(jié)構(gòu)可以包括但不限于:加速圖形端口(AGP)、卡總線、(擴展)工業(yè)標準體系結(jié)構(gòu)((E) ISA)、微通道體系結(jié)構(gòu)(MCA)、NuBus、外圍組件互連(擴展)(PCI (X))、高速PC1、個人計算機存儲卡國際協(xié)會(PCMCIA)等。
[0088]計算體系結(jié)構(gòu)700可以包括或?qū)崿F(xiàn)各種制品。一件制品可以包括用于存儲邏輯的計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)的示例可以包括能夠存儲電子數(shù)據(jù)的任意有形介質(zhì),其包括:易失性存儲器或非易失性存儲器、可移動或不可移動存儲器、可擦除或不可擦除存儲器、可寫或可重寫存儲器等。邏輯的示例可以包括使用任何合適類型的代碼(諸如源代碼、編譯代碼、解釋代碼、可執(zhí)行代碼、靜態(tài)代碼、動態(tài)代碼、面向?qū)ο蟮拇a、可視代碼等)實現(xiàn)的可執(zhí)行計算機程序指令。實施例還可以至少部分地實現(xiàn)為包含在非臨時性計算機可讀介質(zhì)中或其上的指令,指令可以由一個或多個處理器讀取并執(zhí)行以便能夠執(zhí)行本文中描述的操作。
[0089]系統(tǒng)存儲器706可以包括一種或多種較高速度存儲器單元形式的各種類型的計算機可讀存儲介質(zhì),諸如只讀存儲器(ROM)、隨機存取存儲器(RAM)、動態(tài)RAM (DRAM)、雙數(shù)據(jù)速率 DRAM (DDRAM)、同步 DRAM (SDRAM)、靜態(tài) RAM (SRAM)、可編程 ROM (PR0M)、可擦除可編程ROM (EPROM)、電可擦除可編程ROM (EEPR0M)、閃存、諸如鐵電聚合物存儲器之類的聚合物存儲器、奧氏存儲器、相變或鐵電存儲器、硅-氧化物-氮化物-氧化物-硅(SONOS)存儲器、磁卡或光卡,諸如獨立磁盤冗余陣列(RAID)驅(qū)動器之類的設(shè)備陣列、固態(tài)存儲器設(shè)備(例如,USB存儲器、固態(tài)驅(qū)動器(SSD))和適于存儲信息的任何其它類型的存儲介質(zhì)。在圖7中示出的所描繪的實施例中,系統(tǒng)存儲器706可以包括非易失性存儲器710和/或易失性存儲器712?;据斎?輸出系統(tǒng)(B1S)可以存儲在非易失性存儲器710中。
[0090]計算機702可以包括一種或多種較低速度存儲器單元形式的各種類型的計算機可讀存儲介質(zhì),包括內(nèi)部(或外部)硬盤驅(qū)動器(HDD) 714、用于從可移動磁盤718讀取或向可移動磁盤718寫入的磁性軟盤驅(qū)動器(FDD) 716,以及用于從可移動光盤722 (例如,CD-ROM或DVD)讀取或向可移動光盤722寫入的光盤驅(qū)動器720。HDD714、FDD716和光盤驅(qū)動器720可以分別由HDD接口 724、FDD接口 726和光盤驅(qū)動器接口 728連接到系統(tǒng)總線708。用于外部驅(qū)動器實現(xiàn)的HDD接口 724可以包括通用串行總線(USB)和IEEE1394接口技術(shù)中的至少一個或其二者。
[0091]驅(qū)動器和相關(guān)聯(lián)的計算機可讀介質(zhì)提供數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)、計算機可執(zhí)行指令等的易失性和/或非易失性存儲。例如,多個程序模塊可以存儲在驅(qū)動器和存儲器單元710、712中,所述多個程序模塊包括操作系統(tǒng)730、一個或多個應(yīng)用程序732、其它程序模塊734和程序數(shù)據(jù)736。在一個實施例中,例如,一個或多個應(yīng)用程序732、其它程序模塊734和程序數(shù)據(jù)736可以包括系統(tǒng)100的各種應(yīng)用和/或組件。
[0092]用戶可以通過一個或多個有線/無線輸入設(shè)備(例如,鍵盤738和諸如鼠標740之類的指示設(shè)備)將命令和信息輸入到計算機702。其它輸入設(shè)備可以包括麥克風(fēng)、紅外(IR)遙控器、射頻(RF)遙控器、游戲板、手寫筆、讀卡器、加密狗、指紋讀取器、手套、圖形輸入板、游戲桿、鍵盤、視網(wǎng)膜讀取器、觸摸屏(例如,電容的、電阻的等)、跟蹤球、跟蹤板、傳感器、指示筆等。這些和其它輸入設(shè)備通常通過耦接到系統(tǒng)總線708的輸入設(shè)備接口 742連接到處理單元704,但可以通過其它接口(諸如并行端口、IEEE1394串行端口、游戲端口、USB端口、IR接口等)進行連接。
[0093]監(jiān)視器744或其它類型的顯示裝置也經(jīng)由諸如視頻適配器746之類的接口連接到系統(tǒng)總線708。監(jiān)視器744可以在計算機702內(nèi)部或外部。除了監(jiān)視器744之外,計算機通常包括諸如揚聲器、打印機等的其它外圍輸出設(shè)備。
[0094]計算機702可以經(jīng)由與一個或多個遠程計算機(諸如遠程計算機748)進行的有線和/或無線通信,使用邏輯連接操作在聯(lián)網(wǎng)環(huán)境中。遠程計算機748可以是工作站、服務(wù)器計算機、路由器、個人計算機、便攜式計算機、基于微處理器的娛樂設(shè)備、對等設(shè)備或其它常見的網(wǎng)絡(luò)節(jié)點,并且通常包括相對于計算機702描述的元件中的許多或所有元件,盡管為簡明起見,僅示出了存儲器/存儲設(shè)備750。描述的邏輯連接包括到局域網(wǎng)(LAN) 752和/或更大的網(wǎng)絡(luò)(例如,廣域網(wǎng)(WAN)754)的有線/無線連接。這種LAN和WAN網(wǎng)絡(luò)連接環(huán)境常見于辦公室和公司,并且方便企業(yè)范圍的計算機網(wǎng)絡(luò)(諸如內(nèi)聯(lián)網(wǎng)),所有這些網(wǎng)絡(luò)都可以連接到全球通信網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))。
[0095]當在LAN網(wǎng)絡(luò)連接環(huán)境中使用時,計算機702通過有線和/或無線通信網(wǎng)絡(luò)接口或適配器756連接到LAN752。適配器756可以方便與LAN752的有線和/或無線通信,LAN752還可以包括用于與適配器756的無線功能單元進行通信的置于其上的無線接入點。
[0096]當在WAN網(wǎng)絡(luò)連接環(huán)境中使用時,計算機702可以包括調(diào)制解調(diào)器758,或連接到WAN754上的通信服務(wù)器,或者具有用于在WAN754上建立通信(諸如通過互聯(lián)網(wǎng)的方式)的其它模塊。調(diào)制解調(diào)器758 (其可以是內(nèi)置或外置以及有線和/或無線設(shè)備)經(jīng)由輸入設(shè)備接口 742連接到系統(tǒng)總線708。在聯(lián)網(wǎng)的環(huán)境中,相對于計算機702描述的程序模塊或者其一部分可以存儲在遠程存儲器/存儲設(shè)備750中。將明白的是:示出的網(wǎng)絡(luò)連接是示例性的,并且可以使用在計算機之間建立通信鏈路的其它模塊。
[0097]計算機702可用于與使用IEEE802標準族的有線和無線設(shè)備或?qū)嶓w(諸如在操作上置于無線通信(例如,IEEE802.11空中調(diào)制技術(shù))中的無線設(shè)備)進行通信。除了其它的之外,這至少包括W1-Fi (或無線保真)、WiMax以及藍牙?無線技術(shù)。因此,就傳統(tǒng)網(wǎng)絡(luò)而言,通信可以是預(yù)定的結(jié)構(gòu)或者僅僅是至少兩個設(shè)備之間的自組織通信。W1-Fi網(wǎng)絡(luò)使用被稱為IEEE802.1lx (a、b、g、n等)的無線電技術(shù)來提供安全、可靠、快速的無線連接。W1-Fi網(wǎng)絡(luò)可以用于將計算機彼此連接,將計算機連接到互聯(lián)網(wǎng)以及連接到有線網(wǎng)絡(luò)(其使用與IEEE802.3相關(guān)的介質(zhì)和功能)。
[0098]之前參照圖1-7描述的觸摸手勢識別系統(tǒng)100的各個元件可以包括各種硬件元件、軟件元件或兩者的組合。硬件元件的示例可以包括器件、邏輯器件、組件、處理器、微處理器、電路、處理器、電路元件(例如,晶體管、電阻器、電容器、電感器等)、集成電路、專用集成電路(ASIC)、可編程邏輯器件(PLD)、數(shù)字信號處理器(DSP)、現(xiàn)場可編程門陣列(FPGA)、存儲器單元、邏輯門、寄存器、半導(dǎo)體器件、芯片、微芯片、芯片組等等。軟件元件的示例可以包括軟件組件、程序、應(yīng)用、計算機程序、應(yīng)用程序、系統(tǒng)程序、軟件開發(fā)程序、機器程序、操作系統(tǒng)軟件、中間件、固件、軟件模塊、例程、子例程、函數(shù)、方法、過程、軟件接口、應(yīng)用程序接口(API)、指令集、計算代碼、計算機代碼、代碼段、計算機代碼段、字、值、符號或它們的任意組合。然而,根據(jù)給定實現(xiàn)的需要,確定是否使用硬件元件和/或軟件元件實現(xiàn)實施例可能根據(jù)任意數(shù)量的因素而變化,諸如期望的計算速率、功率水平、耐熱性、處理周期預(yù)算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲器資源、數(shù)據(jù)總線速度以及其它設(shè)計或性能約束。
[0099]現(xiàn)在【具體實施方式】轉(zhuǎn)向提供與另外的實施例有關(guān)的示例。下面提供的示例I至46(1-46)旨在是示例性的而非限制性的。
[0100]在第一示例中,一種裝置可以包括:存儲器、耦接到該存儲器的處理電路、以及耦接到處理電路和存儲器的用于處理與圖形相關(guān)的任務(wù)的圖形處理單元(GPU)。該裝置還可以包括圖形驅(qū)動器模塊,其用于監(jiān)測GPU的任務(wù)、確定任務(wù)何時完成、當任務(wù)沒有完成時確定任務(wù)的平均任務(wù)完成時間、并且在平均任務(wù)完成時間大于休眠狀態(tài)時間時,使處理電路的休眠狀態(tài)能夠持續(xù)休眠狀態(tài)時間。
[0101]在第二示例中,裝置可以包括圖形驅(qū)動器模塊,其用于在休眠狀態(tài)時間期滿時,或者在任務(wù)完成時,禁用處理電路的休眠狀態(tài)。
[0102]在第三示例中,裝置可以包括圖形驅(qū)動器模塊,用于當任務(wù)沒有完成時存儲任務(wù)開始時間。
[0103]在第四示例中,裝置可以包括圖形驅(qū)動器模塊,用于當任務(wù)完成時,基于任務(wù)開始時間確定該任務(wù)的任務(wù)完成時間。
[0104]在第五示例中,裝置可以包括圖形驅(qū)動器模塊,用于基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成。
[0105]在第六示例中,裝置可以包括圖形驅(qū)動器模塊,用于從應(yīng)用接收對任務(wù)的完成狀態(tài)的請求,并且基于完成狀態(tài)向該應(yīng)用發(fā)送指示該任務(wù)完成還是沒完成的響應(yīng)。
[0106]在第七示例中,裝置可以包括圖形驅(qū)動器模塊,用于生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài)。
[0107]在第八示例中,裝置可以包括圖形驅(qū)動器模塊,用于生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài),其中,該事件通知是由圖形驅(qū)動器產(chǎn)生的,并且是基于所接收的中斷的。
[0108]在第九示例中,裝置可以包括應(yīng)用和圖形驅(qū)動器模塊,當任務(wù)完成時圖形驅(qū)動器模塊向處理電路返回針對應(yīng)用的任務(wù)結(jié)果。
[0109]在第十示例中,裝置可以包括圖形驅(qū)動器模塊,其用于接收創(chuàng)建針對任務(wù)的查詢對象的請求,并且創(chuàng)建用于監(jiān)測GPU上的任務(wù)的查詢對象。
[0110]在第^^一示例中,裝置可以包括圖形驅(qū)動器模塊,其用于確定任務(wù)的查詢對象何時完成,從而指示GPU上的任務(wù)的完成。
[0111]在第十二示例中,其中,任務(wù)是下列各項中的至少一項:計算機圖形任務(wù)、3維(3D)圖形任務(wù)和2維(2D)圖形任務(wù)。
[0112]在第十三示例中,計算機實現(xiàn)的方法可以包括:由圖形驅(qū)動器監(jiān)測圖形處理單元(GPU)的任務(wù);確定任務(wù)何時完成;當任務(wù)沒有完成時確定任務(wù)的平均任務(wù)完成時間;并且當平均任務(wù)完成時間大于休眠狀態(tài)時間時,使處理電路的休眠狀態(tài)能夠持續(xù)休眠狀態(tài)時間。
[0113]在第十四示例中,計算機實現(xiàn)的方法可以包括:當休眠狀態(tài)時間期滿時,或者當任務(wù)完成時,禁用處理電路的休眠狀態(tài)。
[0114]在第十五示例中,計算機實現(xiàn)的方法可以包括:當任務(wù)沒有完成時存儲任務(wù)開始時間。
[0115]在第十六示例中,計算機實現(xiàn)的方法可以包括:當任務(wù)完成時,基于任務(wù)開始時間確定該任務(wù)的任務(wù)完成時間。
[0116]在第十七示例中,計算機實現(xiàn)的方法可以包括:基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成。
[0117]在第十八示例中,計算機實現(xiàn)的方法可以包括:從應(yīng)用接收針對任務(wù)的完成狀態(tài)的請求,并且基于完成狀態(tài)向該應(yīng)用發(fā)送指示該任務(wù)完成還是沒完成的響應(yīng)。
[0118]在第十九示例中,計算機實現(xiàn)的方法可以包括:生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài)。
[0119]在第二十示例中,計算機實現(xiàn)的方法可以包括:生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài),其中,該事件通知是由圖形驅(qū)動器產(chǎn)生的并且是基于所接收的中斷的。
[0120]在第二十一示例中,計算機實現(xiàn)的方法可以包括:當任務(wù)完成時,向處理電路返回任務(wù)結(jié)果。
[0121]在第二十二示例中,計算機實現(xiàn)的方法可以包括:接收創(chuàng)建任務(wù)的查詢對象的請求,并且創(chuàng)建查詢對象以監(jiān)測GPU上的任務(wù)。
[0122]在第二十三示例中,計算機實現(xiàn)的方法可以包括:確定任務(wù)的查詢對象何時完成,從而指示GPU上的任務(wù)的完成。
[0123]在第二十四示例中,計算機實現(xiàn)的方法可以包括:是下列各項中的至少一項的任務(wù):計算機圖形任務(wù)、3維(3D)圖形任務(wù)和2維(2D)圖形任務(wù)。
[0124]在第二十五示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時,使得處理電路能夠通過圖形驅(qū)動器監(jiān)測圖形處理單元(GPU)的任務(wù);確定任務(wù)何時完成;當任務(wù)沒有完成時確定任務(wù)的平均任務(wù)完成時間;以及當平均任務(wù)完成時間大于休眠狀態(tài)時間時,使處理電路的休眠狀態(tài)能夠持續(xù)休眠狀態(tài)時間。
[0125]在第二十六示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時,使得處理電路在休眠狀態(tài)時間期滿時或者在任務(wù)完成時能夠禁用處理電路的休眠狀態(tài)。
[0126]在第二十七示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠從應(yīng)用接收針對任務(wù)的完成狀態(tài)的請求,并且基于完成狀態(tài)向該應(yīng)用發(fā)送指示該任務(wù)完成還是沒完成的響應(yīng)。
[0127]在第二十八示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài)。
[0128]在第二十九示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠生成針對任務(wù)的事件通知、接收指示任務(wù)完成的事件通知、并且當接收到該事件通知時禁用處理電路的休眠狀態(tài),其中,該事件通知是由圖形驅(qū)動器產(chǎn)生的并且是基于所接收的中斷的。
[0129]在第三十示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠在任務(wù)完成時向該處理電路返回任務(wù)結(jié)果。
[0130]在第三十一示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠在任務(wù)沒有完成時存儲任務(wù)開始時間。
[0131]在第三十二示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠在任務(wù)完成時,基于任務(wù)開始時間來確定任務(wù)的任務(wù)完成時間。
[0132]在第三十三示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成。
[0133]在第三十四示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠接收創(chuàng)建針對任務(wù)的查詢對象的請求,并且創(chuàng)建查詢對象來監(jiān)測GPU上的任務(wù)。
[0134]在第三十五示例中,制品可以包括包含多個指令的計算機可讀存儲介質(zhì),多個指令在被執(zhí)行時使得處理電路能夠確定任務(wù)的查詢對象何時完成,從而指示GPU上的任務(wù)的完成。
[0135]在第三十六示例中,其中,任務(wù)是下列各項中的至少一項:計算機圖形任務(wù)、3維(3D)圖形任務(wù)和2維(2D)圖形任務(wù)。
[0136]在第三十七示例中,裝置可以包括:用于監(jiān)測圖形處理單元(GPU)的任務(wù)的模塊;用于確定任務(wù)何時完成的模塊;用于當任務(wù)沒有完成時確定任務(wù)的平均任務(wù)完成時間的模塊;以及用于當平均任務(wù)完成時間大于休眠狀態(tài)時間時,使處理電路的休眠狀態(tài)能夠持續(xù)休眠狀態(tài)時間的模塊。
[0137]在第三十八示例中,裝置可以包括:用于當休眠狀態(tài)時間期滿時,或者當任務(wù)完成時,禁用處理電路的休眠狀態(tài)的模塊。
[0138]在第三十九示例中,裝置可以包括:用于當任務(wù)沒有完成時存儲任務(wù)開始時間的模塊。
[0139]在第四十示例中,裝置可以包括:用于當任務(wù)完成時,基于任務(wù)開始時間確定該任務(wù)的任務(wù)完成時間的模塊。
[0140]在第四十一示例中,裝置可以包括:用于基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成的模塊。
[0141]在第四十二示例中,裝置可以包括:用于從應(yīng)用接收針對任務(wù)的完成狀態(tài)的請求的模塊,以及用于基于完成狀態(tài)向該應(yīng)用發(fā)送指示該任務(wù)完成還是沒完成的響應(yīng)的模塊。
[0142]在第四十三示例中,裝置可以包括:用于生成針對任務(wù)的事件通知的模塊、用于接收指示任務(wù)完成的事件通知的模塊;以及用于當接收到該事件通知時禁用處理電路的休眠狀態(tài)的模塊。
[0143]在第四十四示例中,裝置可以包括:用于生成針對任務(wù)的事件通知的模塊;用于接收指示任務(wù)完成的事件通知的模塊;以及用于當接收到該事件通知時禁用處理電路的休眠狀態(tài)的模塊,其中,該事件通知是由圖形驅(qū)動器產(chǎn)生的,并且是基于所接收的中斷的。
[0144]在第四十五示例中,裝置可以包括:用于當任務(wù)完成時,向處理電路返回任務(wù)結(jié)果的模塊。
[0145]在第四十六示例中,裝置可以包括:用于確定任務(wù)的查詢對象何時完成,從而指示GPU上的任務(wù)完成的模塊。
[0146]可以使用表述“一個實施例”或“實施例”連同它們的派生詞來描述一些實施例。這些術(shù)語意味著結(jié)合該實施例描述的特定的特征、結(jié)構(gòu)或特性包括在至少一個實施例中。在本說明書中的各個地方出現(xiàn)短語“在一個實施例中”并不一定全部指的是相同的實施例。此外,可以使用了表述“耦接”或“連接”連同它們的派生詞來描述一些實施例。這些術(shù)語不一定旨在作為彼此的同義詞。例如,可以使用術(shù)語“耦接”和/或“連接”來描述一些實施例,以便指示兩個或更多個元件彼此直接物理接觸或電接觸。然而,術(shù)語“耦接”還可以意味著兩個或更多個元件沒有彼此直接接觸,但仍然彼此協(xié)同操作或交互。
[0147]需要強調(diào)的是:提供本公開的摘要以使得讀者能夠快速地確定本技術(shù)公開內(nèi)容的性質(zhì)。提交摘要,并且應(yīng)當理解其將不會被用來解釋或限制權(quán)利要求的范圍或含義。此外,在前面的【具體實施方式】中,可以看到:出于精簡本公開內(nèi)容的目的,在單個實施例中將各種特征組合在一起。本公開內(nèi)容的方法不應(yīng)該被解釋為反映了以下意圖,即:所要求保護的實施例需要比明確記載于每一項權(quán)利要求中的特征更多的特征。而是如同后面的權(quán)利要求所反映的,發(fā)明主題在于少于單個所公開的實施例的所有特征。因此,在此將后面的權(quán)利要求并入【具體實施方式】,其中每一項權(quán)利要求作為單獨的實施例代表其自己。在所附的權(quán)利要求書中,術(shù)語“包括”和“在其中”分別用作相應(yīng)的術(shù)語“包括”和“其中”的通俗易懂的英語等同物。此外,術(shù)語“第一”、“第二”、“第三”等等僅僅用作標號,并且不旨在對其對象施加數(shù)字要求。
[0148]上面已經(jīng)描述的內(nèi)容包括所公開的體系結(jié)構(gòu)的示例。當然,不可能描述組件和/或方法的每個可預(yù)料到的組合,但是本領(lǐng)域的普通技術(shù)人員可以認識到:許多另外的組合和排列是可能的。因此,該新穎體系結(jié)構(gòu)旨在涵蓋落入所附權(quán)利要求的精神和范圍內(nèi)的所有此類更改、修改和變化。
【權(quán)利要求】
1.一種裝置,包括: 存儲器; 處理電路,其耦接到所述存儲器; 圖形處理單元(GPU),其耦接到所述處理電路和所述存儲器,用于處理與圖形相關(guān)的任務(wù);以及 圖形驅(qū)動器模塊,其用于監(jiān)測所述GPU的任務(wù),確定所述任務(wù)何時完成,當所述任務(wù)沒有完成時確定所述任務(wù)的平均任務(wù)完成時間,以及當所述平均任務(wù)完成時間大于休眠狀態(tài)時間時,使所述處理電路的休眠狀態(tài)能夠持續(xù)所述休眠狀態(tài)時間那么長。
2.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于在所述休眠狀態(tài)時間期滿時,或者在所述任務(wù)完成時,禁用所述處理電路的所述休眠狀態(tài)。
3.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于在所述任務(wù)沒有完成時存儲任務(wù)開始時間。
4.根據(jù)權(quán)利要求3所述的裝置,所述圖形驅(qū)動器模塊用于在所述任務(wù)完成時,基于所述任務(wù)開始時間確定所述任務(wù)的任務(wù)完成時間。
5.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成。
6.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于從應(yīng)用接收對所述任務(wù)的完成狀態(tài)的請求,并且基于所述完成狀態(tài)向所述應(yīng)用發(fā)送指示所述任務(wù)完成還是沒完成的響應(yīng)。
7.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于生成所述任務(wù)的事件通知、接收指示所述任務(wù)完成的所述事件通知、以及在接收到所述事件通知時禁用所述處理電路的所述休眠狀態(tài)。
8.根據(jù)權(quán)利要求7所述的裝置,其中,所述事件通知是由所述圖形驅(qū)動器生成的,并且是基于接收到的中斷的。
9.根據(jù)權(quán)利要求1所述的裝置,包括: 應(yīng)用;以及 所述圖形驅(qū)動器模塊,其用于在所述任務(wù)完成時向所述處理電路返回針對所述應(yīng)用的任務(wù)結(jié)果。
10.根據(jù)權(quán)利要求1所述的裝置,所述圖形驅(qū)動器模塊用于接收創(chuàng)建所述任務(wù)的查詢對象的請求,并且創(chuàng)建所述查詢對象用以監(jiān)測所述GPU上的所述任務(wù)。
11.根據(jù)權(quán)利要求10所述的裝置,所述圖形驅(qū)動器模塊用于確定所述任務(wù)的所述查詢對象何時完成,從而指示所述GPU上的所述任務(wù)的完成。
12.根據(jù)權(quán)利要求1所述的裝置,其中,所述任務(wù)是下列各項中的至少一項:計算機圖形任務(wù)、3維(3D)圖形任務(wù)和2維(2D)圖形任務(wù)。
13.—種計算機實現(xiàn)的方法,包括: 由圖形驅(qū)動器監(jiān)測圖形處理單元(GPU)的任務(wù); 確定所述任務(wù)何時完成; 當所述任務(wù)沒有完成時確定所述任務(wù)的平均任務(wù)完成時間;以及 當所述平均任務(wù)完成時間大于休眠狀態(tài)時間時,使處理電路的休眠狀態(tài)能夠持續(xù)所述休眠狀態(tài)時間那么長。
14.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 在所述休眠狀態(tài)時間期滿時,或者在所述任務(wù)完成時,禁用所述處理電路的所述休眠狀態(tài)。
15.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 當所述任務(wù)沒有完成時,存儲任務(wù)開始時間。
16.根據(jù)權(quán)利要求15所述的計算機實現(xiàn)的方法,包括: 當所述任務(wù)完成時,基于所述任務(wù)開始時間確定所述任務(wù)的任務(wù)完成時間。
17.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 基于一個或多個任務(wù)的一個或多個任務(wù)完成時間的平均來確定平均任務(wù)完成。
18.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 從應(yīng)用接收對所述任務(wù)的完成狀態(tài)的請求;以及 基于所述完成狀態(tài)向所述應(yīng)用發(fā)送指示所述任務(wù)完成還是沒完成的響應(yīng)。
19.根據(jù)權(quán)利要求1 3所述的計算機實現(xiàn)的方法,包括: 生成所述任務(wù)的事件通知; 接收指示所述任務(wù)完成的所述事件通知;以及 在接收到所述事件通知時禁用所述處理電路的所述休眠狀態(tài)。
20.根據(jù)權(quán)利要求19所述的計算機實現(xiàn)的方法,其中,所述事件通知是由所述圖形驅(qū)動器生成的,并且是基于接收到的中斷的。
21.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 在所述任務(wù)完成時,向所述處理電路返回任務(wù)結(jié)果。
22.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,包括: 接收創(chuàng)建所述任務(wù)的查詢對象的請求;以及 創(chuàng)建所述查詢對象用以監(jiān)測所述GPU上的所述任務(wù)。
23.根據(jù)權(quán)利要求22所述的計算機實現(xiàn)的方法,包括: 確定所述任務(wù)的所述查詢對象何時完成,從而指示所述GPU上的所述任務(wù)的完成。
24.根據(jù)權(quán)利要求13所述的計算機實現(xiàn)的方法,其中,所述任務(wù)是下列各項中的至少一項:計算機圖形任務(wù)、3維(3D)圖形任務(wù)和2維(2D)圖形任務(wù)。
25.至少一種機器可讀介質(zhì),其包括多個指令,所述多個指令響應(yīng)于在處理電路上被執(zhí)行而使得所述處理電路執(zhí)行根據(jù)權(quán)利要求13至24中任意一項權(quán)利要求所述的方法。
【文檔編號】G06F9/48GK104049711SQ201410084557
【公開日】2014年9月17日 申請日期:2014年3月10日 優(yōu)先權(quán)日:2013年3月12日
【發(fā)明者】S·帕內(nèi)爾, T·A·托馬斯, T·T·施魯斯勒, A·Z·利貝爾 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
西安市| 勐海县| 拉萨市| 邵武市| 温州市| 黎平县| 卫辉市| 嘉黎县| 苍南县| 石屏县| 武乡县| 宿迁市| 德江县| 兰溪市| 皋兰县| 庄浪县| 澎湖县| 昆山市| 阜城县| 咸阳市| 阳泉市| 屯留县| 剑阁县| 阿拉善左旗| 睢宁县| 无棣县| 河曲县| 阳新县| 略阳县| 汝南县| 平邑县| 南城县| 安陆市| 绥芬河市| 房山区| 吉水县| 榆社县| 福泉市| 阿瓦提县| 石渠县| 玉山县|