用于圖形處理單元的應(yīng)用的驗證的制作方法
【專利摘要】本發(fā)明中所描述的技術(shù)針對于驗證將在圖形處理單元GPU上執(zhí)行的應(yīng)用。舉例來說,驗證服務(wù)器裝置可接收所述應(yīng)用的代碼。所述驗證服務(wù)器裝置可提供所述應(yīng)用滿足一或多個性能準(zhǔn)則的某一確保水平。以此方式,可減小有問題的應(yīng)用在包含所述GPU的裝置上執(zhí)行的概率。
【專利說明】用于圖形處理單元的應(yīng)用的驗證
【技術(shù)領(lǐng)域】
[0001]本發(fā)明針對于在圖形處理單元(GPU)上執(zhí)行的應(yīng)用,且更特定來說,針對于此些應(yīng)用的驗證。
【背景技術(shù)】
[0002]圖形處理單元(GPU)傳統(tǒng)上已經(jīng)受限于僅在固定功能管線中執(zhí)行圖形相關(guān)處理,這提供非常有限的功能靈活性。較新的GPU包含執(zhí)行程序的可編程核心,且進(jìn)而提供與傳統(tǒng)GPU相比的更大的功能靈活性。所述可編程核心可執(zhí)行圖形相關(guān)應(yīng)用和非圖形相關(guān)應(yīng)用兩者。
【發(fā)明內(nèi)容】
[0003]一般來說,本發(fā)明涉及用于在執(zhí)行之前識別將在圖形處理單元(GPU)上執(zhí)行的潛在有問題的應(yīng)用。有問題的應(yīng)用的實例包含,但不限于,惡意應(yīng)用以及低效或者易于出錯的應(yīng)用。舉例來說,在收容GPU的裝置外部的服務(wù)器裝置可驗證所述應(yīng)用。對所述應(yīng)用的驗證可意味著所述應(yīng)用滿足一或多個準(zhǔn)則。作為一個實例,驗證可指以某一確保水平確定所述應(yīng)用不是惡意應(yīng)用、易于出錯的應(yīng)用,或低效的應(yīng)用。所述服務(wù)器裝置可將指示傳輸?shù)剿鲅b置,所述指示指示GPU執(zhí)行所述應(yīng)用是否為安全的或不妥當(dāng)?shù)?。所述裝置可隨后基于所接收的指示而選擇在GPU上執(zhí)行程序。
[0004]在一個實例中,本發(fā)明描述一種方法,其包含使用服務(wù)器裝置接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元(GPU)執(zhí)行的應(yīng)用。所述方法還包含使用所述服務(wù)器裝置執(zhí)行以下各者中的至少一者:在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間執(zhí)行對所述應(yīng)用的分析,及在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間執(zhí)行對所述應(yīng)用的分析。所述方法進(jìn)一步包含基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則,且在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
[0005]在另一實例中,本發(fā)明描述一種設(shè)備,其包含仿真器單元,所述仿真器單元可操作以接收將由駐留于所述設(shè)備外部的裝置上的圖形處理單元(GPU)執(zhí)行的應(yīng)用。所述仿真器單元還可操作以執(zhí)行以下各者中的至少一者:在所述應(yīng)用在所述設(shè)備上的編譯之前和期間執(zhí)行對所述應(yīng)用的分析,及在所述應(yīng)用在所述設(shè)備上的執(zhí)行期間執(zhí)行對所述應(yīng)用的分析。所述仿真器單元還可操作以基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則,且在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
[0006]在另一實例中,本發(fā)明描述一種服務(wù)器裝置,其包含用于接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元(GPU)執(zhí)行的應(yīng)用的裝置。所述服務(wù)器裝置還包含用于執(zhí)行以下各者中的至少一者的裝置:在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間執(zhí)行對所述應(yīng)用的分析,及在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間執(zhí)行對所述應(yīng)用的分析。所述服務(wù)器裝置進(jìn)一步包含用于基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則的裝置,及用于在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置的裝置。
[0007]在另一實例中,本發(fā)明描述一種非暫時性計算機(jī)可讀存儲媒體,其包括指令,所述指令致使一或多個處理器使用服務(wù)器裝置接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元(GPU)執(zhí)行的應(yīng)用。所述指令進(jìn)一步致使一或多個處理器使用所述服務(wù)器裝置執(zhí)行以下各者中的至少一者:在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間執(zhí)行對所述應(yīng)用的分析,及在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間執(zhí)行對所述應(yīng)用的分析。所述指令還致使所述一或多個處理器基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則,且在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
[0008]在另一實例中,本發(fā)明描述一種方法,其包含接收將由裝置的圖形處理單元(GPU)執(zhí)行的應(yīng)用,且將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用。所述方法進(jìn)一步包含從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
[0009]在另一實例中,本發(fā)明描述一種設(shè)備,其包含圖形處理單元(GPU)及可操作以存儲將由所述GPU執(zhí)行的應(yīng)用的裝置。所述設(shè)備還包含處理器,所述處理器可操作以將所述應(yīng)用傳輸?shù)皆谒鲈O(shè)備外部的服務(wù)器裝置,且從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
[0010]在另一實例中,本發(fā)明描述一種包含圖形處理單元(GPU)的裝置。所述裝置還包含用于接收將由所述GPU執(zhí)行的應(yīng)用的裝置,及用于將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用的裝置。所述裝置進(jìn)一步包含用于從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在GPU上執(zhí)行的一或多個準(zhǔn)則的驗證的裝置。
[0011]在另一實例中,本發(fā)明描述一種非暫時性計算機(jī)可讀存儲媒體,其包括指令,所述指令致使一或多個處理器接收將由裝置的圖形處理單元(GPU)執(zhí)行的應(yīng)用且將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用。所述指令進(jìn)一步致使所述處理器從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
[0012]本發(fā)明的一或多個方面的細(xì)節(jié)在附圖及以下描述中陳述。本發(fā)明的其它特征、目標(biāo)和優(yōu)點將從所述描述和圖式且從權(quán)利要求書變得顯而易見。
【專利附圖】
【附圖說明】
[0013]圖1是說明可操作以實施本發(fā)明的一或多個方面的系統(tǒng)的實例的框圖。
[0014]圖2是說明可操作以實施本發(fā)明的一或多個方面的裝置的實例操作的流程圖。
[0015]圖3是說明可操作以實施本發(fā)明的一或多個方面的服務(wù)器的實例操作的流程圖。
[0016]圖4是說明可操作以實施本發(fā)明的一或多個方面的服務(wù)器的另一實例操作的流程圖。
[0017]圖5是進(jìn)一步詳細(xì)地說明圖1中所說明的實例裝置的框圖。
【具體實施方式】
[0018]一般來說,本發(fā)明涉及用以確保將在圖形處理單元(GPU)上執(zhí)行的應(yīng)用的適當(dāng)功能性的技術(shù)。一些先前的GPU僅包含固定功能硬件管線,其不提供編程能力。然而,為了增加功能靈活性,較新的GPU允許可編程著色器核心。舉例來說,這些GPU執(zhí)行例如頂點著色器及片段著色器等應(yīng)用,所述應(yīng)用執(zhí)行先前委托給固定功能硬件管線的組件的功能。
[0019]雖然可編程著色器核心允許功能靈活性,但它們也會招致GPU的誤用或次最佳使用。舉例來說,惡意開發(fā)者可能開發(fā)出產(chǎn)生拒絕服務(wù)攻擊或病毒的應(yīng)用。在一些例子中,可能不具有惡意意圖的開發(fā)者可能仍然無意地開發(fā)低效或易于出錯的應(yīng)用。有問題的應(yīng)用(例如,惡意、低效或易于出錯的應(yīng)用)可實質(zhì)上破壞GPU或其中提供有GPU的裝置的操作。
[0020]本發(fā)明的技術(shù)可輔助在由GPU執(zhí)行之前識別可能惡意的、低效的和/或易于出錯的GPU執(zhí)行的應(yīng)用。舉例來說,本發(fā)明的技術(shù)可針對于基于云的解決方案,其中在收容GPU的裝置外部且經(jīng)由一或多個網(wǎng)絡(luò)連接而耦合到收容所述GPU的裝置的服務(wù)器裝置充當(dāng)應(yīng)用的執(zhí)行的仿真器。所述服務(wù)器可仿真所述應(yīng)用的結(jié)果,如同所述應(yīng)用正在所述GPU上執(zhí)行一般。基于所述結(jié)果,所述服務(wù)器可驗證所述應(yīng)用(例如,確定程序是否為惡意的、低效的或易于出錯的),且如此向收容GPU的裝置進(jìn)行指示。所述GPU可隨后基于所接收的指示來執(zhí)行所述應(yīng)用。
[0021]可存在服務(wù)器可執(zhí)行驗證過程來驗證所述應(yīng)用的各種方式。所述驗證過程可為軟件過程。所述軟件過程可結(jié)合通用處理器和/或?qū)S糜布韴?zhí)行。舉例來說,所述服務(wù)器可執(zhí)行虛擬模型軟件。所述虛擬模型致使所述服務(wù)器仿真所述GPU或包含所述應(yīng)用將在其上執(zhí)行的GPU的實際裝置。在替代實例中,作為虛擬模型的替代或補充,所述服務(wù)器可包含硬件仿真板來驗證所述應(yīng)用。所述服務(wù)器還可包含經(jīng)特定設(shè)計以測試由GPU執(zhí)行的應(yīng)用的安全違背的應(yīng)用。
[0022]為了驗證將由GPU執(zhí)行的應(yīng)用,所述服務(wù)器可執(zhí)行靜態(tài)分析、動態(tài)分析,或其組合。靜態(tài)分析涉及對可在不執(zhí)行應(yīng)用的情況下執(zhí)行的所述應(yīng)用的分析。舉例來說,靜態(tài)分析可在編譯期間執(zhí)行。在所述編譯期間,所述服務(wù)器可識別所述應(yīng)用中的錯誤,例如程序中的無限循環(huán)或?qū)?yīng)用內(nèi)的陣列位置的出界的存取(作為兩個非限制性實例)。
[0023]動態(tài)分析涉及在執(zhí)行期間對應(yīng)用的分析,其可另外導(dǎo)致識別出有問題的應(yīng)用(例如,惡意的、低效的且易于出錯的應(yīng)用)。舉例來說,所述服務(wù)器可執(zhí)行經(jīng)編譯的代碼,且所述服務(wù)器可向所執(zhí)行的代碼提供假定輸入值。所述假定輸入值可為(例如)不同的輸入圖像、具有不同大小的輸入圖像等。
[0024]執(zhí)行驗證過程的所述服務(wù)器可監(jiān)視由執(zhí)行代碼執(zhí)行的結(jié)果和功能。舉例來說,所述服務(wù)器可監(jiān)視GPU的虛擬模型進(jìn)行的存儲器存取,且確定所述存儲器存取是否為出界的存儲器存取。所述服務(wù)器還可監(jiān)視GPU的虛擬模型正在那里寫入信息的存儲器地址?;贕PU的虛擬模型的存儲器存取及GPU的虛擬模型正在那里寫入信息的存儲器地址,所述服務(wù)器可能夠確定所述應(yīng)用是否為易于出錯的。此類存儲器跟蹤在所述應(yīng)用使用指針讀取或?qū)懭氲阶兞繒r可為特別有用的。
[0025]所述服務(wù)器還可檢測產(chǎn)生或?qū)崿F(xiàn)拒絕服務(wù)攻擊的應(yīng)用。舉例來說,所述服務(wù)器可監(jiān)視GPU的虛擬模型能夠執(zhí)行所述應(yīng)用的速率。如果所述服務(wù)器檢測到緩慢響應(yīng)、意外的終止,或懸掛,那么所述服務(wù)器可確定所述應(yīng)用是針對拒絕服務(wù)攻擊而設(shè)計的應(yīng)用,或設(shè)計得非常差的應(yīng)用。在任一情況下,此類應(yīng)用的執(zhí)行可能負(fù)面地影響用戶的體驗。
[0026]除了驗證所述應(yīng)用之外,在一些實例中,所述服務(wù)器可還能夠調(diào)諧并優(yōu)化所述應(yīng)用。舉例來說,所述服務(wù)器可插入或取代源代碼,或源代碼的部分,或收集統(tǒng)計數(shù)據(jù)以確定經(jīng)編譯的代碼運作的良好程度。在一些實例中,所述服務(wù)器可一次驗證所述應(yīng)用且優(yōu)化或調(diào)諧所述應(yīng)用。所述裝置可在用戶想要的時候執(zhí)行所述應(yīng)用,而不需要進(jìn)一步驗證或優(yōu)化。而且,在一些實例中,在驗證某一應(yīng)用之后,所述服務(wù)器可存儲指示此應(yīng)用已被驗證的指示。如果所述服務(wù)器再次接受相同的源代碼或預(yù)先編譯的目標(biāo)代碼,那么所述服務(wù)器可首先確保所述代碼是等同的,且如果是等同的,那么立即驗證所述應(yīng)用。
[0027]圖1是說明可為可操作的以實施本發(fā)明的一或多個方面的系統(tǒng)的實例的框圖。舉例來說,圖1說明系統(tǒng)10,所述系統(tǒng)包含裝置12、網(wǎng)絡(luò)22、驗證服務(wù)器裝置24、及應(yīng)用服務(wù)器裝置38。雖然在圖1中僅說明一個裝置12、驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38,但在其它實例中,系統(tǒng)10可包含多個裝置12、驗證服務(wù)器24及應(yīng)用服務(wù)器38。系統(tǒng)10可被稱作基于云的系統(tǒng)以指示對應(yīng)用20的驗證發(fā)生在裝置12外部的驗證服務(wù)器裝置24中,如更詳細(xì)地描述。舉例來說,本發(fā)明的技術(shù)可針對于驗證云中(例如,在裝置12外部的驗證服務(wù)器裝置24中)的應(yīng)用20。
[0028]裝置12的實例包含,但不限于,例如媒體播放器等視頻裝置、機(jī)頂盒、例如移動電話等無線手持機(jī)、個人數(shù)字助理(PDA)、桌上型計算機(jī)、膝上型計算機(jī)、游戲控制臺、視頻會議單元、平板計算裝置等。驗證服務(wù)器裝置24的及應(yīng)用服務(wù)器裝置38的實例包含,但不限于,膝上型計算機(jī)、桌上型計算機(jī)、網(wǎng)絡(luò)服務(wù)器等。一般來說,驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38可為能夠執(zhí)行歸于本發(fā)明中的驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38的功能的任何類型的裝置。
[0029]網(wǎng)絡(luò)22可允許裝置12與驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38安全地通信。出于安全的目的,裝置12與驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38之間的任何通信可經(jīng)過加密或以其它方式受保護(hù)。而且,為了進(jìn)一步保護(hù),裝置12與驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38之間的任何通信可需要用戶授權(quán)。
[0030]在一些實例中,網(wǎng)絡(luò)22可確保由裝置12、驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38中的任一者傳輸?shù)男畔H由既定裝置且不由其它裝置接收。網(wǎng)絡(luò)22可為局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)等。裝置12、驗證服務(wù)器裝置24及應(yīng)用服務(wù)器裝置38可無線地或通過有線鏈路而耦合到網(wǎng)絡(luò)22。在一些實例中,裝置12可有可能直接耦合到驗證服務(wù)器裝置24和/或應(yīng)用服務(wù)器裝置38。舉例來說,裝置12可通過無線或有線連接直接與驗證服務(wù)器裝置24和/或應(yīng)用服務(wù)器裝置38通信。在這些實例中,系統(tǒng)10中可能不需要網(wǎng)絡(luò)22。
[0031]如圖1中所說明,裝置12可包含GPU 14、處理器16及裝置存儲器18。裝置12可包含除了圖1中所說明的組件之外的組件。舉例來說,圖5說明包含比圖1中所說明的組件更多的組件的裝置12的實例。
[0032]GPU 14和處理器16的實例包含,但不限于,數(shù)字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效集成或離散邏輯電路。此外,雖然GPU 14和處理器16被說明為單獨的組件,但本發(fā)明的方面不限于此。在替代性實例中,GPU 14和處理器16可為共同集成電路的部分。出于說明且易于描述的目的,GPU14和處理器16被說明為單獨的組件。
[0033]裝置存儲器18的實例包含,但不限于,隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM),或電可擦除可編程只讀存儲器(EEPROM)。裝置存儲器18的實例還可包含例如CD-ROM或其它光盤存儲裝置、磁盤存儲裝置,或其它磁性存儲裝置、快閃存儲器等存儲裝置。一般來說,裝置存儲器18可包含可用于以指令或數(shù)據(jù)結(jié)構(gòu)的形式存儲所需的程序代碼且可由GPU 14和處理器16存取的媒體。在一些實例中,裝置存儲器18可包括一或多個計算機(jī)可讀存儲媒體,例如計算機(jī)可讀存儲裝置。舉例來說,在一些實例實施方案中,裝置存儲器18可包含致使GPU 14和處理器16執(zhí)行歸于本發(fā)明中的GPU 14和處理器16的功能的指令。
[0034]在一些實例中,裝置存儲器18可被視為非暫時性存儲媒體。術(shù)語“非暫時性”可指示所述存儲媒體未體現(xiàn)于載波或所傳播信號中。然而,術(shù)語“非暫時性”不應(yīng)被解釋為意味著裝置存儲器18是非可移動的。作為一個實例,裝置存儲器18可從裝置12被移除,且移動到另一裝置。作為另一實例,大體上類似于裝置存儲器18的存儲裝置可插入到裝置12中。在某些實例中,非暫時性存儲媒體可存儲可隨著時間改變的數(shù)據(jù)(例如,在RAM中)。
[0035]GPU 14可為可操作的,以執(zhí)行一或多個軟件應(yīng)用。舉例來說,GPU 14可包含處理器核心,一或多個軟件應(yīng)用可在所述處理器核心上執(zhí)行。在GPU 14上執(zhí)行的應(yīng)用可為用于產(chǎn)生圖形數(shù)據(jù)的例如頂點著色器和片段著色器等圖形應(yīng)用。然而,在GPU 14上執(zhí)行的應(yīng)用可有可能不與圖形處理相關(guān)。舉例來說,開發(fā)者可認(rèn)為利用GPU 14的大規(guī)模并行度可為有益的,且開發(fā)與利用GPU 14的大規(guī)模并行度的圖形處理無關(guān)的軟件應(yīng)用。在這些情況下,GPU 14可被稱作通用GPU(GP-GPU)。
[0036]作為一個實例,圖1說明執(zhí)行應(yīng)用20的GPU 14。應(yīng)用20可為在GPU 14上執(zhí)行的圖形應(yīng)用或非圖形應(yīng)用。應(yīng)用20以虛線框圖示于GPU 14內(nèi)以指示應(yīng)用20正在GPU 14上執(zhí)行。GPU 14實際上不包含應(yīng)用20。舉例來說,應(yīng)用20可存儲在裝置存儲器18中,如圖1中所說明。
[0037]可使用廣泛多種不同的編程應(yīng)用處理接口(API)來開發(fā)應(yīng)用20。舉例來說,開發(fā)者可能已使用例如OpenGL、OpenCL, WebGL和WebCL等任何編程API開發(fā)出應(yīng)用20。一般來說,使用OpenGL或WebGL API開發(fā)的應(yīng)用是針對圖形處理而設(shè)計的。使用OpenCL或WebCL API開發(fā)的應(yīng)用是針對與圖形處理無關(guān)的處理而設(shè)計的。OpenGL、OpenCUWebGL和WebCLAPI是出于說明的目的而提供且不應(yīng)被視為是限制性的。本發(fā)明的技術(shù)可以可擴(kuò)展到除了上文提供的實例之外的API。一般來說,本發(fā)明的技術(shù)可以可擴(kuò)展到開發(fā)者用于開發(fā)應(yīng)用20的任何技術(shù)。
[0038]如所說明,裝置存儲器18可存儲應(yīng)用20。舉例來說,裝置12的用戶可致使裝置12經(jīng)由網(wǎng)絡(luò)22從應(yīng)用服務(wù)器裝置38下載應(yīng)用20。裝置12又可將應(yīng)用20存儲在裝置存儲器18中??纱嬖谘b置12將應(yīng)用20存儲在裝置存儲器18中的各種方式。舉例來說,裝置12的用戶可將存儲應(yīng)用20的快閃驅(qū)動器插入到裝置12中,且裝置12可從快閃驅(qū)動器檢索應(yīng)用20且將應(yīng)用20存儲在裝置存儲器18中。在此實例中,可能不需要應(yīng)用服務(wù)器裝置38。描述裝置12將應(yīng)用20存儲在裝置存儲器18中的方式的以上實例是出于說明的目的而提供,且不應(yīng)被視為是限制性的。本發(fā)明的技術(shù)可適用于將應(yīng)用20加載到裝置存儲器18中的任何技術(shù)。
[0039]裝置存儲器18可存儲應(yīng)用20的源代碼、應(yīng)用20的中間表示,或應(yīng)用20的目標(biāo)代碼。應(yīng)用20的源代碼可為按照在其中開發(fā)應(yīng)用20的編程語言的文本。應(yīng)用20的源代碼可為由于對應(yīng)用20的編譯而產(chǎn)生的二進(jìn)制位。舉例來說,應(yīng)用服務(wù)器裝置38可編譯應(yīng)用20的源代碼、且裝置12可下載應(yīng)用20的此經(jīng)編譯的目標(biāo)代碼。應(yīng)用20的中間表示可為源代碼與目標(biāo)代碼之間的中間物。舉例來說,在應(yīng)用20的中間表示中,應(yīng)用20的源代碼的變量可用寄存器或存儲器識別符取代,所述變量將針對所述識別符存儲在裝置存儲器18中。
[0040]GPU 14的可編程核心執(zhí)行應(yīng)用(例如,應(yīng)用20)的能力增加了 GPU 14的功能性。然而,GPU 14執(zhí)行應(yīng)用的能力可招致GPU 14的誤用或次最佳使用,且使得裝置12更易受到惡意的應(yīng)用或易于出錯的應(yīng)用影響。舉例來說,僅在例如處理器16等中央處理單元(CPU)上執(zhí)行的應(yīng)用在虛擬機(jī)器環(huán)境中執(zhí)行應(yīng)用,所述虛擬機(jī)器環(huán)境分配裝置存儲器18的存儲器的量及裝置存儲器18內(nèi)的所述應(yīng)用可存取的存儲位置。因為所述應(yīng)用受限于處理器16的虛擬機(jī)器,所以所述應(yīng)用不能存取出界的存儲器地址且被限制于存取由處理器16的虛擬機(jī)器特定提供給它的存儲器地址。以此方式,在處理器16上執(zhí)行的應(yīng)用可難以通過負(fù)面的方式劇烈地影響處理器16且進(jìn)而影響裝置12。
[0041]在一些例子中,在GPU 14上實施虛擬機(jī)器可為不實際的。舉例來說,GPU 14的大規(guī)模并行處理能力可能不良好地適合于執(zhí)行虛擬機(jī)器。舉例來說,如果虛擬機(jī)器將在GPU14上執(zhí)行,那么所述虛擬機(jī)器將支配GPU 14的資源,有可能限制其它應(yīng)用在GPU14上執(zhí)行。因此,在一些例子中,虛擬機(jī)器可能不能夠限制在GPU 14上執(zhí)行的惡意或易于出錯的應(yīng)用的負(fù)面影響。
[0042]在GPU 14上執(zhí)行的應(yīng)用(例如,應(yīng)用20)可被視為“原生地”執(zhí)行的應(yīng)用(即,不局限于虛擬機(jī)器)。應(yīng)用20的原生執(zhí)行可允許應(yīng)用20存取裝置存儲器18的較大部分。此存取可允許例如惡意的應(yīng)用或較差設(shè)計的(例如,易于出錯的)應(yīng)用等有問題的應(yīng)用負(fù)面地影響GPU 14和裝置12的性能能力。
[0043]作為一個實例,應(yīng)用20的開發(fā)者可開發(fā)應(yīng)用20以使得應(yīng)用20在被執(zhí)行時引起拒絕對裝置12的服務(wù)攻擊,或傳播影響裝置12的性能的病毒。舉例來說,當(dāng)GPU 14執(zhí)行應(yīng)用20時,應(yīng)用20可控制GPU 14以使得GPU 14可能不能夠執(zhí)行任何其它任務(wù),例如再現(xiàn)用于用戶接口的圖形內(nèi)容。此可致使裝置12 “懸掛”,這可強(qiáng)烈地影響裝置12的功能性。在一些情況下,應(yīng)用20的開發(fā)者可開發(fā)應(yīng)用20以存取裝置存儲器18的應(yīng)被限制存取的部分。應(yīng)用20可將用于病毒的指令存儲在裝置存儲器18的這些部分中。隨后,當(dāng)處理器16或GPU 14存取裝置存儲器18的這些部分時,處理器16或GPU 14可無意地執(zhí)行所存儲的病毒??纱嬖趷阂獾膽?yīng)用的額外實例,且本發(fā)明的方面不應(yīng)被視為受限于拒絕服務(wù)攻擊或病毒。
[0044]作為另一實例,應(yīng)用20的開發(fā)者可能無意地開發(fā)應(yīng)用20以使得應(yīng)用20是低效的或易于出錯的。舉例來說,易于出錯的應(yīng)用可包含無限循環(huán)、對陣列的出界的存取,或?qū)ρb置存儲器18的存儲器位置的出界的存取。低效的應(yīng)用可能不會適當(dāng)?shù)乩肎PU 14的功能性。舉例來說,低效的應(yīng)用可能不會適當(dāng)?shù)厥褂肎PU 14的可編程功能性。
[0045]在以下情況下,應(yīng)用服務(wù)器裝置38可潛在地對抗惡意的且易于出錯的應(yīng)用的少量保護(hù)。舉例來說,應(yīng)用服務(wù)器裝置38的擁有者可保證存儲在應(yīng)用服務(wù)器裝置38上的應(yīng)用都不是惡意的或易于出錯的應(yīng)用。然而,在每個例子中可能不是這樣(例如,應(yīng)用服務(wù)器裝置38的擁有者可能未提供安全且適當(dāng)操作的保證),或來自應(yīng)用服務(wù)器裝置38的擁有者的聲稱的“保證”可能并不可信。
[0046]本發(fā)明的技術(shù)可輔助在執(zhí)行之前識別將在GPU 14上執(zhí)行的應(yīng)用(例如,應(yīng)用20)是否為有問題的應(yīng)用,例如惡意的應(yīng)用以及低效的且易于出錯的應(yīng)用。舉例來說,本發(fā)明的技術(shù)可在GPU 14執(zhí)行應(yīng)用20之前驗證應(yīng)用20。對應(yīng)用20的驗證可意味著應(yīng)用20滿足一或多個性能準(zhǔn)則。舉例來說,驗證可指以某一確保水平確定應(yīng)用20不是惡意的應(yīng)用、低效的應(yīng)用,或易于出錯的應(yīng)用。本發(fā)明中所描述的技術(shù)可將指示傳輸?shù)窖b置12,所述指示指示GPU 14執(zhí)行應(yīng)用20是否為安全的或不妥當(dāng)?shù)?。處理?6可隨后基于所接收的指示而選擇指令GPU 14執(zhí)行應(yīng)用20。
[0047]舉例來說,在所述指示是有利的,即指示程序不是惡意的、不是低效的且/或不是易于出錯的情況下,處理器16可指令GPU 14執(zhí)行應(yīng)用20。在一些實例中,即使所述指示是不利的,處理器16也可指令GPU 14執(zhí)行應(yīng)用20。舉例來說,如果應(yīng)用20不是惡意的或易于出錯的,但是低效的,那么處理器16可指令GPU 14執(zhí)行應(yīng)用20,因為此執(zhí)行可潛在地不會傷害GPU 14或裝置12,但可能不夠有效地執(zhí)行。
[0048]在一些實例中,本發(fā)明的技術(shù)還可調(diào)諧或以其它方式優(yōu)化將在GPU 14上執(zhí)行的低效的應(yīng)用。舉例來說,應(yīng)用20的開發(fā)者可能不具有任何惡意的意圖,且可能已開發(fā)出應(yīng)用20以使得應(yīng)用20不易于出錯。雖然如此,應(yīng)用20可有可能不可有效地利用GPU 14的資源。
[0049]作為一個實例,應(yīng)用20的功能中的一者可為將任務(wù)劃分為多個工作群組,且對所述工作群組執(zhí)行并行處理以利用GPU 14的并行度。舉例來說,應(yīng)用20可將圖像劃分為多個塊,且對所述塊執(zhí)行并行處理。塊中的每一者的大小可基于GPU 14上可用的本地存儲器的量。
[0050]因為應(yīng)用20的開發(fā)者可能想要設(shè)計應(yīng)用20以在多種不同的GPU上執(zhí)行,所以所述開發(fā)者可能事先不知道特定GPU(例如,GPU 14)上有多少可用的本地存儲器,因為不同的GPU可包含不同量的本地存儲器。為了解決這個問題,開發(fā)者可開發(fā)應(yīng)用20來利用可變大小的塊。在一些例子中,利用可變大小的塊可能比利用固定大小的塊低效。本發(fā)明的技術(shù)可調(diào)諧或優(yōu)化應(yīng)用20,使得應(yīng)用20基于GPU 14中的可用存儲器的量來利用固定大小的塊。
[0051]作為另一實例,應(yīng)用20可執(zhí)行矩陣操作。應(yīng)用20的開發(fā)者可能已開發(fā)出應(yīng)用20來執(zhí)行基于行的矩陣操作或基于列的矩陣操作。在一些例子中,與基于列的矩陣操作相比,GPU 14可更好地適合于執(zhí)行基于行的矩陣操作,或反之亦然。在此實例中,如果應(yīng)用20使用基于列的矩陣操作,那么本發(fā)明的技術(shù)可修改應(yīng)用20以執(zhí)行基于行的矩陣操作,從而更有效地利用GPU 14。
[0052]作為又另一實例,開發(fā)者可能已針對GPU的較舊版本開發(fā)出應(yīng)用20,且應(yīng)用20可能未針對GPU 14進(jìn)行優(yōu)化。本發(fā)明的技術(shù)可修改應(yīng)用20以使得應(yīng)用20針對較新的GPU (例如,GPU 14)更加優(yōu)化。GPU 14可隨后執(zhí)行應(yīng)用20,所述應(yīng)用經(jīng)優(yōu)化以在較新的GPU上執(zhí)行。
[0053]根據(jù)本發(fā)明的技術(shù),驗證服務(wù)器裝置24可驗證應(yīng)用20,且在一些實例中,優(yōu)化或調(diào)諧應(yīng)用20。為了驗證應(yīng)用20,驗證服務(wù)器裝置24可實施驗證過程,所述驗證過程確定應(yīng)用20是否滿足一或多個性能準(zhǔn)則。舉例來說,驗證服務(wù)器裝置24可以某一合理的確保水平確定應(yīng)用20是否為惡意的應(yīng)用、易于出錯的應(yīng)用,或低效的應(yīng)用。在其中應(yīng)用20是易于出錯的應(yīng)用或低效的應(yīng)用的實例中,驗證服務(wù)器裝置24可嘗試校正應(yīng)用20中的錯誤,或優(yōu)化應(yīng)用20以更有效。
[0054]一般可能難以絕對保證應(yīng)用20不是有問題的應(yīng)用,因為可能難以測量應(yīng)用20可影響GPU 14和裝置12的所有各種方式。雖然應(yīng)用20不是有問題的應(yīng)用的絕對保證可能是困難的,但驗證服務(wù)器裝置24可使用不同類型的分析來以某一合理的肯定量來確保應(yīng)用20不是有問題的應(yīng)用。
[0055]如圖1中所說明,驗證服務(wù)器裝置24在裝置12的外部。因此,應(yīng)用20的驗證及應(yīng)用20的優(yōu)化可從裝置12卸載,其可被稱作在“云”中驗證應(yīng)用20,因為驗證服務(wù)器裝置24是在裝置12外部的服務(wù)器。通過將對應(yīng)用20的驗證卸載到驗證服務(wù)器裝置24,在其中應(yīng)用20是惡意的應(yīng)用或易于出錯的應(yīng)用的情況下,可減少應(yīng)用20負(fù)面地影響GPU 14和裝置12的概率。而且,通過將對應(yīng)用20的優(yōu)化卸載到驗證服務(wù)器裝置24,可實現(xiàn)電力節(jié)約和處理效率,因為處理器16不需要消耗驗證或優(yōu)化應(yīng)用20的電力和時鐘循壞。
[0056]可存在應(yīng)用20可能需要滿足以供驗證服務(wù)器裝置24驗證應(yīng)用20的性能準(zhǔn)則的各種實例。一般來說,性能準(zhǔn)則可為統(tǒng)計分析、動態(tài)分析或其組合的部分。統(tǒng)計分析是指對可在不執(zhí)行應(yīng)用20的情況下執(zhí)行的應(yīng)用20的分析,以確保應(yīng)用20滿足與統(tǒng)計分析相關(guān)聯(lián)的一或多個性能準(zhǔn)則。動態(tài)分析是指在執(zhí)行期間對應(yīng)用20的分析,以確保應(yīng)用20滿足與動態(tài)分析相關(guān)聯(lián)的一或多個性能準(zhǔn)則。
[0057]驗證服務(wù)器裝置24可為可操作的,以執(zhí)行靜態(tài)分析、動態(tài)分析,或靜態(tài)分析和動態(tài)分析兩者。出于說明的目的,驗證服務(wù)器裝置24被描述為可操作以執(zhí)行靜態(tài)分析和動態(tài)分析兩者,且因此,可操作以確保應(yīng)用20滿足與靜態(tài)分析和動態(tài)分析兩者相關(guān)聯(lián)的性能準(zhǔn)貝U。在替代實例中,驗證服務(wù)器裝置24可為可操作的,以執(zhí)行靜態(tài)分析和動態(tài)分析中的一者,且在這些替代實例中,驗證服務(wù)器裝置24可為可操作的,以確保應(yīng)用20滿足與驗證服務(wù)器裝置24可操作以執(zhí)行的分析的類型相關(guān)聯(lián)的性能準(zhǔn)則(例如,與靜態(tài)分析或動態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則)。
[0058]如圖1中所說明,驗證服務(wù)器裝置24包含仿真器單元26和服務(wù)器存儲器28。服務(wù)器存儲器28可包含界定一或多個GPU模型30、一或多個GPU輸入32及一或多個裝置模型34的數(shù)據(jù)和/或指令。仿真器單元26可為可操作以執(zhí)行GPU模型30和裝置模型34中的一或多者的處理單元。作為另一實例,仿真器單元26可為硬件仿真板,其可為GPU。在一些實例中,仿真器單元26可包含兩個部分,所述兩個部分可為同一電路或單獨的不同電路的部分,其中第一部分是可操作以執(zhí)行GPU模型30和裝置模型34中的一或多者的處理單元,且第二部分是硬件仿真板(例如,GPU)。仿真器單元26的實例包含,但不限于,DSP、通用微處理器、ASIC、FPGA或其它等效集成或離散邏輯電路。
[0059]服務(wù)器存儲器28可類似于裝置存儲器18。舉例來說,服務(wù)器存儲器18可為可用于以指令、數(shù)據(jù)和/或數(shù)據(jù)結(jié)構(gòu)的形式存儲所需的程序代碼且可由仿真器單元26存取且致使仿真器單元26執(zhí)行歸于仿真器單元26的一或多個功能的任何媒體。類似于裝置存儲器18,在一些實例中,服務(wù)器存儲器28可被視為非暫時性存儲媒體,如上文關(guān)于裝置存儲器18所描述。
[0060]如所說明,服務(wù)器存儲器28可存儲界定一或多個GPU模型30、GPU輸入32及裝置模型34的數(shù)據(jù)和/或指令。服務(wù)器存儲器28可能不需要在每個實例中存儲一或多個GPU模型30、GPU輸入32及裝置模型34。舉例來說,服務(wù)器存儲器28可存儲GPU模型30及GPU輸入32,但可不存儲裝置模型34。如果驗證服務(wù)器裝置24可操作以僅執(zhí)行靜態(tài)分析,那么可能不需要GPU模型30、GPU輸入32及裝置模型34。在一些實例中,仿真器單元26用GPU模型30、GPU輸入32及裝置模型34執(zhí)行動態(tài)分析。
[0061 ] 一或多個GPU模型30中的每一者可對應(yīng)于特定GPU類型,且一或多個裝置模型34中的每一者可對應(yīng)于特定裝置類型。舉例來說,GPU模型30中的每一者可按照并行處理能力、本地存儲器可用性及界定所述GPU類型的GPU的功能性的任何其它相關(guān)特性而將其對應(yīng)的GPU類型的配置模型化。裝置模型34中的每一者可按照存儲器配置、處理器速度、系統(tǒng)總線速度、裝置存儲器及界定所述裝置類型的裝置的功能性的任何其它相關(guān)特性而將其對應(yīng)的裝置類型的配置模型化。舉例來說,不同的供應(yīng)商提供具有不同功能特性的不同類型的裝置,且裝置模型34可為用于這些不同裝置類型中的每一者的模型。
[0062]一或多個GPU模型30及裝置模型34可各自被視為仿真器單元26可執(zhí)行的虛擬模型軟件。舉例來說,當(dāng)仿真器單元26執(zhí)行GPU模型30中的一者時,仿真器單元26仿真所執(zhí)行的GPU模型30所對應(yīng)的GPU。當(dāng)仿真器單元26執(zhí)行GPU模型30中的一者及裝置模型34中的一者時,仿真器單元26仿真所執(zhí)行的裝置模型34所對應(yīng)的裝置,如同所述裝置包含所執(zhí)行的GPU模型30所對應(yīng)的GPU —般。在一些實例中,GPU供應(yīng)商及裝置供應(yīng)商可分別供應(yīng)GPU模型30及裝置模型34??纱嬖诜?wù)器存儲器28存儲GPU模型30及裝置模型34的其它方式,且本發(fā)明的方面不限于其中供應(yīng)商提供GPU模型30及裝置模型34的特定實例。
[0063]舉例來說,當(dāng)仿真器單元26執(zhí)行GPU模型30中的一者時,仿真器單元26可如同仿真器單元26的并行處理能力和本地存儲器可用性(作為兩個實例)在功能上等效于與GPU模型30中的所執(zhí)行的一者相關(guān)聯(lián)的GPU類型一般起作用。類似地,當(dāng)仿真器單元26執(zhí)行裝置模型34中的一者時,仿真器單元26可如同仿真器單元26的存儲器配置、處理器速度、系統(tǒng)總線速度及裝置存儲器(作為四個實例)在功能上等效于與裝置模型34中的所執(zhí)行的一者相關(guān)聯(lián)的裝置類型一般起作用。換句話說,GPU模型30中的一者的執(zhí)行致使仿真器單元26充當(dāng)與GPU模型30中的所執(zhí)行的一者相關(guān)聯(lián)的GPU。GPU模型30中的一者及裝置模型34中的一者的執(zhí)行致使仿真器單元26充當(dāng)與裝置模型34中的包含與GPU模型30中的所執(zhí)行的一者相關(guān)聯(lián)的GPU的所執(zhí)行的裝置模型相關(guān)聯(lián)的裝置。
[0064]多個GPU模型30中的一者可為通用GPU模型30,且多個裝置模型34中的一者可為通用裝置模型34。在一些實例中,服務(wù)器存儲器28可存儲通用GPU模型及通用裝置模型而不是多個GPU模型及裝置模型。所述通用GPU模型及裝置模型可能不對應(yīng)于特定GPU或裝置類型,但可適合于靜態(tài)和動態(tài)分析。在一些實例中,如果服務(wù)器存儲器28未存儲對應(yīng)于GPU 14的GPU模型,那么通用GPU模型可適合于驗證目的。通用GPU模型和通用裝置模型可符合大多數(shù)GPU或裝置常見的操作的基礎(chǔ)簡檔。
[0065]可存在可由通用GPU和通用裝置模型模型化的各種類型的GPU和裝置。作為一個實例,通用GPU模型可以與其它GPU相比的平均的并行處理能力和本地存儲器可用性將GPU模型化。通用裝置模型可以與其它裝置相比的平均的存儲器配置、處理器速度、系統(tǒng)總線速度及裝置存儲器將裝置模型化。
[0066]作為用于驗證和/或優(yōu)化應(yīng)用20以用于在GPU 14上執(zhí)行的說明性實例,裝置12可從應(yīng)用服務(wù)器裝置38下載應(yīng)用20。應(yīng)用20可為源代碼、中間表示,或預(yù)先編譯的目標(biāo)代碼,如上文所描述。處理器16可隨后將應(yīng)用20安裝在裝置12上。如果應(yīng)用20呈源代碼或呈中間表示,例如,不是預(yù)先編譯的目標(biāo)代碼,那么安裝的部分可為處理器16執(zhí)行編譯器來編譯應(yīng)用20的代碼。
[0067]在一些實例中,在應(yīng)用20的所下載的代碼是源代碼或中間表示的情況下,處理器16在編譯之前可致使裝置12將應(yīng)用20的所下載的代碼傳輸?shù)津炞C服務(wù)器裝置24以進(jìn)行驗證。在一些實例中,在應(yīng)用20的所下載的代碼是預(yù)先編譯的目標(biāo)代碼的情況下,在允許GPU 14執(zhí)行應(yīng)用20之前,處理器16可致使裝置12將預(yù)先編譯的目標(biāo)代碼傳輸?shù)津炞C服務(wù)器裝置24以進(jìn)行驗證。
[0068]為了安全目的,處理器16可加密裝置12傳輸?shù)津炞C服務(wù)器裝置24的應(yīng)用20的所下載的代碼或以其它方式使所述代碼安全。在一些實例中,處理器16可在將應(yīng)用20的所下載的代碼傳輸?shù)津炞C服務(wù)器裝置24之前需要來自用戶的授權(quán)。此外,在動態(tài)分析一些實例中,處理器16可致使裝置12將GPU 14的GPU類型或GPU 14的GPU類型及裝置12的裝置類型兩者傳輸?shù)津炞C服務(wù)器裝置24。在這些例子中的一些例子中,處理器16可在將GPU 14的GPU類型或GPU 14的GPU類型及裝置12的裝置類型兩者傳輸?shù)津炞C服務(wù)器裝置24之前需要來自用戶的驗證。
[0069]仿真器單元26可為可操作的,以執(zhí)行對應(yīng)用20的靜態(tài)分析,從而確定應(yīng)用20是否滿足與靜態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則。舉例來說,仿真器單元26可在不執(zhí)行應(yīng)用20的情況下分析應(yīng)用20。作為一個實例,仿真器單元26可解析通過應(yīng)用20的所下載的代碼以識別已知為用于病毒的代碼的代碼。舉例來說,服務(wù)器存儲器28可存儲已知病毒的代碼,且仿真器單元26可將應(yīng)用20的所下載的代碼與已知病毒的代碼進(jìn)行比較。確定應(yīng)用20的所下載的代碼未包含已知病毒的代碼可為需要得到滿足以驗證應(yīng)用20的性能準(zhǔn)則的一個實例。
[0070]作為靜態(tài)分析的部分,仿真器單元26可在其中應(yīng)用20的所下載的代碼是應(yīng)用20的源代碼或中間表示的實例中對應(yīng)用20的所下載的代碼進(jìn)行編譯,從而在編譯期間識別應(yīng)用20中的錯誤。舉例來說,仿真器單元26可執(zhí)行編譯器36,如由仿真器單元26內(nèi)的虛線所指示。通過編譯器36對應(yīng)用20的編譯可識別應(yīng)用20中的任何無限循環(huán)或?qū)?yīng)用20內(nèi)的存儲器陣列位置的出界的存取。在此實例中,確定在應(yīng)用20中不存在錯誤(所述錯誤可在編譯期間發(fā)現(xiàn))可為需要得到滿足以驗證應(yīng)用20的性能準(zhǔn)則的另一實例。
[0071]靜態(tài)分析可在可被發(fā)現(xiàn)的錯誤、低效及惡意代碼的類型方面受到限制。舉例來說,如果應(yīng)用20的所下載的代碼是預(yù)先編譯的目標(biāo)代碼,那么仿真器單元26可不可能在編譯期間識別應(yīng)用20中的錯誤,因為用于應(yīng)用20的代碼已經(jīng)是預(yù)先編譯的目標(biāo)代碼。作為另一實例,如果應(yīng)用20依賴于存儲的指針,那么可不可能僅基于編譯應(yīng)用20來確定應(yīng)用20中的任何出界的存儲器存取錯誤
[0072]為了進(jìn)一步確定應(yīng)用20是否為有問題的(例如,低效的、易于出錯的或惡意的),仿真器單元26可執(zhí)行動態(tài)分析。如上所述,動態(tài)分析是指在執(zhí)行期間對應(yīng)用20的分析。在一些實例中,為了執(zhí)行動態(tài)分析,仿真器單元26可致使自身顯得它如同是GPU 14。舉例來說,在一些例子中,除了傳輸應(yīng)用20的所下載的代碼之外,處理器16可致使裝置12經(jīng)由網(wǎng)絡(luò)22將GPU 14的GPU類型傳輸?shù)津炞C服務(wù)器裝置24的仿真器單元26,或?qū)PU 14的GI3U類型及裝置12的裝置類型兩者傳輸?shù)津炞C服務(wù)器裝置24的仿真器單元26。仿真器單元26又可識別GPU模型30中的哪一者對應(yīng)于GPU 14的GPU類型,且可執(zhí)行GPU模型30中的所述一者以在驗證服務(wù)器裝置24上仿真GPU 14。在其中仿真器單元26還接收裝置類型的實例中,仿真器單元26可識別裝置模型34中的哪一者對應(yīng)于裝置12的裝置類型,且可執(zhí)行裝置模型34中的所述一者以在驗證服務(wù)器裝置24上仿真裝置12。
[0073]在其中裝置12不傳輸GPU 14的GPU類型和/或裝置12的裝置類型的實例中,仿真器單元26可執(zhí)行通用GPU模型和/或通用裝置模型?;蛘撸绻b置12傳輸GPU 14的GPU類型和/或裝置12的裝置類型,但GPU模型30和裝置模型34中的任一者都不對應(yīng)于GPU和裝置類型,那么仿真器單元26可執(zhí)行通用GPU模型和/或通用裝置模型。在其中仿真器單元26是或包含硬件仿真板的實例中,此硬件仿真板可被設(shè)計成至少部分充當(dāng)通用裝置上的通用GPU。
[0074]一旦仿真器單元26自身仿真為GPU 14,或作為裝置12的部分的GPU 14,仿真器單元26便可執(zhí)行應(yīng)用20。舉例來說,如果仿真器單元26接收了應(yīng)用20的源代碼或中間代碼,那么仿真器單元26可經(jīng)由編譯器36編譯源代碼,且執(zhí)行所得的目標(biāo)代碼。如果仿真器單元26接收了應(yīng)用20的預(yù)先編譯的目標(biāo)代碼,那么仿真器單元26可執(zhí)行應(yīng)用20的預(yù)先編譯的目標(biāo)代碼。
[0075]在一些實例中,本發(fā)明的技術(shù)可被視為至少部分由基于GPU 14的類型(例如,GPU模型30中的一者)執(zhí)行虛擬模型的仿真器單元26執(zhí)行。隨后,當(dāng)仿真器單元26執(zhí)行應(yīng)用20時,應(yīng)用20可被視為在虛擬模型(例如,GPU模型30中正在仿真器單元26上執(zhí)行的一者)中執(zhí)行。舉例來說,GPU模型30中的對應(yīng)于GPU 14和應(yīng)用20的兩個GPU模型正在仿真器單元26上執(zhí)行。在本發(fā)明的技術(shù)中,因為仿真器單元26如同其為GPU14而起作用,所以歸因于對應(yīng)于GPU 14的GPU模型的執(zhí)行,當(dāng)仿真器單元26執(zhí)行應(yīng)用20時,應(yīng)用20可在對應(yīng)于GPU 14的GPU模型上執(zhí)行。
[0076]作為動態(tài)分析的部分,仿真器單元26可接收正在仿真器單元26上執(zhí)行的應(yīng)用20的假設(shè)輸入值。如所說明,服務(wù)器存儲器28可存儲一或多個GPU輸入32。這些一或多個GPU輸入32可為不同的圖形圖像或?qū)ο蟮闹?。在一些實例中,這些不同的圖像中的每一者可具有不同的大小。在其中應(yīng)用20與圖形處理不相關(guān)的實例中,GPU輸入32可為非圖形輸入??赡茈y以確保仿真器單元26測試可能的輸入值的每個排列及組合。因此,服務(wù)器存儲器28可存儲充分?jǐn)?shù)目和/或范圍的GPU輸入32 (例如,作為樣本或測試輸入),從而提供應(yīng)用20不是惡意的或高度易于出錯的應(yīng)用(例如,有問題的應(yīng)用)的某一合理的確保水平。GPU輸入32可包含將由GPU 14處理和再現(xiàn)的不同類型的圖像或?qū)ο蟆?br>
[0077]在應(yīng)用20的執(zhí)行期間,仿真器單元26可輸入GPU輸入32的值且可分析GPU模型30中的所執(zhí)行的GPU模型的功能性。在其中仿真器單元26是硬件仿真板的實例中,仿真器單元26可分析硬件仿真板的功能性。舉例來說,仿真器單元26可監(jiān)視GPU模型30中的所執(zhí)行的GPU模型進(jìn)行的存儲器存取。在此實例中,仿真器單元26可確定GPU模型30中的所執(zhí)行的GPU模型進(jìn)行的存儲器存取中的任一者是否為對服務(wù)器存儲器28的出界的存儲器存取。作為另一實例,仿真器單元26可監(jiān)視GPU模型30中的所執(zhí)行的GPU模型正在那里將信息寫入服務(wù)器存儲器28中的存儲器地址?;贕PU模型的存儲器存取及GPU模型正在那里寫入信息的存儲器地址,仿真器單元26可能夠確定應(yīng)用20是否為易于出錯的。此類存儲器跟蹤在應(yīng)用20使用指針讀取或?qū)懭氲阶兞繒r可為特別有用的。
[0078]舉例來說,如果所執(zhí)行的GPU模型將信息寫入到出界的存儲器位置或從出界的存儲器位置讀取信息,那么仿真器單元26可確定應(yīng)用20是易于出錯的且可能是惡意的。舉例來說,如果所執(zhí)行的GPU模型將信息寫入到不存在的存儲器位置或從不存在的存儲器位置讀取信息,那么仿真器單元26可確定應(yīng)用20是易于出錯的。如果所執(zhí)行的GPU模型將信息寫入到未為GPU模型保留的存儲器位置,那么仿真器單元26可確定應(yīng)用20是易于出錯的且可能是惡意的。舉例來說,仿真器單元26可確定應(yīng)用20正在試圖將病毒寫入到應(yīng)用20應(yīng)該不能存取的存儲器位置。
[0079]應(yīng)用20在執(zhí)行期間可將信息寫入到哪里或從哪里讀取信息(例如,存取)的限制可為與動態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則的實例。舉例來說,所述性能準(zhǔn)則可為對允許應(yīng)用20存取的存儲器位置的限制。如果GPU模型30的GPU模型歸因于應(yīng)用20的執(zhí)行而存取受限的存儲器位置之外的存儲器位置,那么應(yīng)用20可違背性能準(zhǔn)則。舉例來說,根據(jù)所述性能準(zhǔn)貝U,可存在可允許的受限的存儲器位置之外的閾值數(shù)目的存取。所述閾值數(shù)目可為零,以提供應(yīng)用20不試圖存取受限的存儲器位置之外的存儲器位置的最高確保水平。
[0080]在其中仿真器單元26還執(zhí)行裝置模型34中的一者的實例中,仿真器單元26可類似地分析裝置模型34中的所執(zhí)行的裝置模型的功能性。舉例來說,在仿真器單元26執(zhí)行GPU模型30中的一者時,仿真器單元26可監(jiān)視裝置模型34中的所執(zhí)行的一者所執(zhí)行的功能。舉例來說,裝置模型34中的一者的執(zhí)行可導(dǎo)致仿真器單元26包含系統(tǒng)總線的裝置12。仿真器單元26可確定應(yīng)用20的執(zhí)行是否致使系統(tǒng)總線過載,從而導(dǎo)致裝置12減慢。
[0081]監(jiān)視系統(tǒng)總線以確定系統(tǒng)總線是否過載可為與動態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則的實例。舉例來說,如果應(yīng)用20的執(zhí)行致使系統(tǒng)總線過載,那么應(yīng)用20可違背性能準(zhǔn)則。在此實例中,性能準(zhǔn)則可允許系統(tǒng)總線的某一水平的過載,因為可能不可能不允許系統(tǒng)總線的任何過載。舉例來說,執(zhí)行準(zhǔn)則可建立系統(tǒng)總線過載的百分比量閾值。如果系統(tǒng)總線過載低于可允許的百分比,那么性能準(zhǔn)則得到滿足。否則,性能準(zhǔn)則未得到滿足。
[0082]仿真器單元26可類似地檢測惡意的應(yīng)用,例如拒絕服務(wù)攻擊。舉例來說,仿真器單元26可監(jiān)視GPU模型30中的GPU模型能夠執(zhí)行應(yīng)用20的速率。如果仿真器單元26檢測到緩慢響應(yīng)、意外的終止,或懸掛,那么仿真器單元26可確定應(yīng)用20是針對拒絕服務(wù)攻擊而設(shè)計的應(yīng)用,或設(shè)計得非常差的應(yīng)用。在此實例中,性能準(zhǔn)則可為應(yīng)用20的特定任務(wù)的閾值執(zhí)行時間或執(zhí)行速率。如果應(yīng)用20花費比閾值執(zhí)行時間長的時間來完成特定任務(wù),或以比閾值執(zhí)行速率小的比率執(zhí)行任務(wù),那么應(yīng)用20可違背性能準(zhǔn)則。
[0083]作為仿真器單元26檢測惡意的應(yīng)用或易于出錯的應(yīng)用的另一實例,仿真器單元26可監(jiān)視由應(yīng)用20發(fā)出的指令。舉例來說,在一些實例中,由應(yīng)用20發(fā)出的指令可為96位字。然而,不是96位的所有組合都表示有效指令。在一些實例中,GPU 14可經(jīng)設(shè)計以忽視無效指令;然而,對于GPU 14的每個實例可不是這種情況。為了避免GPU 14無意地執(zhí)行無效指令,仿真器單元26可確定由應(yīng)用20在執(zhí)行期間發(fā)出的指令是否為有效或無效指令。如果仿真器單元26確定應(yīng)用20正發(fā)出無效指令,那么仿真器單元26可確定應(yīng)用20是惡意的應(yīng)用、易于出錯的應(yīng)用,或低效的應(yīng)用。
[0084]作為另一實施例,在執(zhí)行期間,應(yīng)用20可將數(shù)據(jù)寫入到寄存器且從寄存器讀取數(shù)據(jù)。惡意的應(yīng)用、易于出錯的應(yīng)用,或低效的應(yīng)用可從未寫入的寄存器讀取數(shù)據(jù)。如果應(yīng)用20試圖從先前未寫入到的寄存器讀取數(shù)據(jù),那么由應(yīng)用20讀取的數(shù)據(jù)可為無意義的數(shù)據(jù)(即,未初始化的數(shù)據(jù))。對未初始化的數(shù)據(jù)的此讀取可導(dǎo)致不可預(yù)測的行為。在一些實例中,仿真器單元26可監(jiān)視應(yīng)用20在執(zhí)行期間寫入到哪些寄存器,且可確定應(yīng)用20是否從先前尚未寫入到的寄存器進(jìn)行讀取。如果仿真器單元26確定應(yīng)用20正從未寫入的寄存器進(jìn)行讀取,那么仿真器單元26可確定應(yīng)用20是惡意的應(yīng)用、易于出錯的應(yīng)用,或低效的應(yīng)用。
[0085]如果仿真器單元26確定符合與靜態(tài)分析和動態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則,那么驗證服務(wù)器裝置24可將指示傳輸?shù)窖b置12,所述指示指示應(yīng)用20以某一確保水平滿足與靜態(tài)分析、動態(tài)分析或靜態(tài)分析和動態(tài)分析(例如,驗證應(yīng)用20)兩者相關(guān)聯(lián)的一或多個性能準(zhǔn)則。在此情況下,驗證服務(wù)器裝置24可提供應(yīng)用20被驗證以供GPU 14使用的指示。否貝IJ,在一些實例中,驗證服務(wù)器裝置24可將指示傳輸?shù)窖b置12,所述指示指示應(yīng)用20無效以供GPU 14使用,使得不建議GPU 14執(zhí)行應(yīng)用20。作為響應(yīng),處理器16可基于所接收的指示而指令GPU 14執(zhí)行應(yīng)用20。
[0086]在其中驗證服務(wù)器裝置24接收應(yīng)用20的源代碼或中間代碼的實例中,仿真器單元26還可傳輸如由編譯器36編譯的應(yīng)用20的經(jīng)編譯的目標(biāo)代碼。以此方式,對應(yīng)用20的編譯還可從裝置12卸載,且卸載到外部裝置,例如驗證服務(wù)器裝置24。
[0087]驗證服務(wù)器裝置24還可被委派優(yōu)化或調(diào)諧應(yīng)用20的任務(wù)。舉例來說,仿真器單元26可接收應(yīng)用20的源代碼或中間代碼。作為靜態(tài)分析和/或動態(tài)分析的部分,仿真器單元26可確定應(yīng)用20略微易于出錯或?qū)⒌托У乩肎PU 14的能力。在這些實例中,不將指示不建議GPU 14執(zhí)行應(yīng)用20的指示傳輸?shù)窖b置12,仿真器單元26可在確定應(yīng)用20在GPU 14上低效地執(zhí)行或帶錯地執(zhí)行時嘗試校正應(yīng)用20的錯誤或嘗試調(diào)諧用于GPU 14的應(yīng)用20。
[0088]如果仿真器單元26能夠校正錯誤或使應(yīng)用20更有效,那么仿真器單元26可編譯應(yīng)用20的經(jīng)修改的代碼以產(chǎn)生GPU 14應(yīng)執(zhí)行的目標(biāo)代碼。仿真器單元26可隨后將所得的目標(biāo)代碼與GPU 14應(yīng)執(zhí)行所得的目標(biāo)代碼的指示一起傳輸?shù)窖b置12。在此情況下,GPU14可執(zhí)行從經(jīng)修改的代碼產(chǎn)生的目標(biāo)代碼,而不是從應(yīng)用20的原始代碼產(chǎn)生的目標(biāo)代碼?;蛘?,仿真器單元26可在不編譯的情況下傳輸應(yīng)用20的經(jīng)修改的代碼。
[0089]在這些實例中的任一者中,對應(yīng)用20的驗證可被視為傳輸應(yīng)用20的經(jīng)修改的代碼(例如,傳輸經(jīng)修改的代碼或所得的目標(biāo)代碼)的部分。舉例來說,當(dāng)裝置12從驗證服務(wù)器裝置24接收到應(yīng)用20的經(jīng)修改的代碼時,因為裝置12從驗證服務(wù)器裝置24接收到應(yīng)用20的經(jīng)修改的代碼,所以裝置12可自動地確定應(yīng)用20的經(jīng)修改的代碼適合于執(zhí)行。在此意義上,裝置12從驗證服務(wù)器裝置24接收的驗證可為顯式驗證或隱式驗證。在任一情況下,即,顯式驗證或隱式驗證,仿真器單元26可以某一確保水平確定應(yīng)用20或應(yīng)用20的經(jīng)修改的版本滿足一或多個性能準(zhǔn)則。
[0090]如果仿真器單元26不能夠校正應(yīng)用20的錯誤,那么仿真器單元26可傳輸指示不建議在GPU 14上執(zhí)行應(yīng)用20的指示。如果仿真器單元26不能使應(yīng)用20更有效,那么仿真器單元26可仍將指示GPU 14執(zhí)行應(yīng)用20可為合適的指示傳輸?shù)窖b置12,因為雖然應(yīng)用20可能不完全有效,但應(yīng)用20可不是易于出錯的或惡意的。
[0091]為了調(diào)諧或優(yōu)化應(yīng)用20,仿真器單元26可以某一其它方式插入代碼(例如,源代碼或中間代碼)、取代代碼或修改應(yīng)用20的代碼。在一些實例中,仿真器單元26可收集統(tǒng)計數(shù)據(jù)以確定應(yīng)用20的經(jīng)編譯的代碼運作的良好程度。舉例來說,應(yīng)用20可利用陣列索引來用于將變量值存儲在陣列中。仿真器單元26可將代碼添加到應(yīng)用20的源代碼中,所述代碼檢查由應(yīng)用20利用的陣列索引在范圍內(nèi)。仿真器單元26可將代碼添加到應(yīng)用20的源代碼中,所述代碼致使應(yīng)用20在陣列索引不在范圍內(nèi)時中止。仿真器單元26可隨后編譯經(jīng)修改的源代碼以產(chǎn)生供GPU 14執(zhí)行應(yīng)用20的目標(biāo)代碼。
[0092]優(yōu)化或調(diào)諧可基于以下假設(shè):例如應(yīng)用20等應(yīng)用一般經(jīng)開發(fā)以利用GPU 14的高并行度水平。如果開發(fā)者無意利用GPU 14的并行度,那么開發(fā)者將不讓所開發(fā)的應(yīng)用20在GPU 14上執(zhí)行,而是在處理器16上執(zhí)行。
[0093]舉例來說,應(yīng)用20的開發(fā)者可能已開發(fā)出應(yīng)用20以對圖像的塊并行地執(zhí)行圖像處理。如上文所描述,圖像的塊的大小可基于GPU 14上可用的本地存儲器的量。因為開發(fā)者可能不知道GPU 14上有多少可用的存儲器,所以開發(fā)者可開發(fā)應(yīng)用20以使用可變大小的塊,而不是更有效的固定大小的塊。舉例來說,固定大小的塊可更有效,因為所述塊的大小不在執(zhí)行期間改變。
[0094]在一些實例中,仿真器單元26可確定所述塊的最佳大小,因為GPU模型30中的對應(yīng)于GPU 14的GPU模型可包含指示GPU 14的本地存儲器的大小的信息。在此實例中,仿真器單元26可基于GPU 14上可用的本地存儲器的量、寫入到GPU 14的本地存儲器或從GPU14的本地存儲器讀取所需的數(shù)據(jù)量,及可能不可用于應(yīng)用20的開發(fā)者的其它此類信息而選擇所述塊的最佳大小。在本發(fā)明的方面中,仿真器單元26將知道有多少本地存儲器可用及需要從本地存儲器寫入或讀取多少數(shù)據(jù),因為仿真器單元26可在GPU模型30中的對應(yīng)于GPU 14的GPU模型上執(zhí)行應(yīng)用20。
[0095]在這些實例中,仿真器單元26可更新或以其它方式修改應(yīng)用20的源代碼或中間代碼以將塊大小固定為最佳確定的大小。換句話說,仿真器單元26可確定所述塊的最佳大小以最佳地利用GPU 14的并行度。仿真器單元26可隨后編譯應(yīng)用20的此經(jīng)修改的源代碼且將所得的目標(biāo)代碼傳輸?shù)窖b置12以供GPU 14執(zhí)行。以此方式,當(dāng)GPU 14執(zhí)行經(jīng)修改的應(yīng)用20時,與原始應(yīng)用20相比,經(jīng)修改的應(yīng)用20可在GPU 14上更有效地執(zhí)行。
[0096]在針對優(yōu)化的另一實例中,如上文所描述,應(yīng)用20可執(zhí)行矩陣操作。在此實例中,仿真器單元26可確定基于列的矩陣操作或基于行的矩陣操作是否被GPU 14更容易地處置。舉例來說,仿真器單元26可致使GPU模型30中的對應(yīng)于GPU 14的GPU模型使用基于行的矩陣操作且使用基于列的矩陣操作來執(zhí)行應(yīng)用20。仿真器單元26可比較基于列的矩陣操作和基于行的矩陣操作的效率(例如,對存儲器的存取的數(shù)目、處理時間量,及其它此類效率量度)?;谒鶞y量的效率,仿真器單元26可修改應(yīng)用20的代碼。舉例來說,如果基于列的操作比基于行的操作更有效地執(zhí)行,那么仿真器單元26可修改應(yīng)用20的代碼以使得將矩陣操作執(zhí)行為基于列的操作。類似地,如果基于行的操作比基于列的操作更有效地執(zhí)行,那么仿真器單元26可修改應(yīng)用20的代碼以使得將矩陣操作執(zhí)行為基于行的操作。
[0097]在針對優(yōu)化的另一實例中,如上文所描述,應(yīng)用20的開發(fā)者可讓所開發(fā)的應(yīng)用20在GPU的較舊版本上執(zhí)行。在此情況下,應(yīng)用20可在例如GPU 14等GPU上適當(dāng)?shù)貓?zhí)行;然而,應(yīng)用20可能未完全利用GPU 14的功能性。舉例來說,應(yīng)用20可能不必要地限制GPU14應(yīng)并行處理的圖形或非圖形數(shù)據(jù)的量,因為GPU的較舊版本可能在處理能力方面受到限制。在此實例中,仿真器單元26可修改應(yīng)用20的代碼,使得在執(zhí)行應(yīng)用20時,應(yīng)用20致使GPU 14并行地處理更多數(shù)據(jù)??纱嬖诜抡嫫鲉卧?6可修改應(yīng)用20以使得應(yīng)用20更好地適合在較新的GPU上執(zhí)行的方式的其它實例,且本發(fā)明的方面不應(yīng)被視為受限于以上實例。
[0098]在優(yōu)化應(yīng)用20之后,仿真器單元26可將應(yīng)用20的經(jīng)修改或經(jīng)更新的代碼傳輸?shù)窖b置12。在此實例中,處理器16可編譯從仿真器單元26接收的應(yīng)用20的代碼,且指令GPU14執(zhí)行所得的目標(biāo)代碼。在一些其它實例中,仿真器單元26可經(jīng)由編譯器36編譯經(jīng)修改的應(yīng)用20,且將所得的目標(biāo)代碼傳輸?shù)窖b置12。在此實例中,處理器16可指令GPU 14執(zhí)行應(yīng)用20的所接收的目標(biāo)代碼。
[0099]在一些實例中,仿真器單元26可一次驗證應(yīng)用20且優(yōu)化或調(diào)諧應(yīng)用20。在此驗證之后,GPU 14可在需要時執(zhí)行應(yīng)用20,而不需要進(jìn)一步驗證或優(yōu)化。而且,在一些實例中,在仿真器單元26驗證應(yīng)用20之后,仿真器單元26可將指示此應(yīng)用20已被驗證的指示存儲在服務(wù)器存儲器28中。在這些實例中,當(dāng)仿真器單元26接收用于驗證的代碼時,仿真器單元26可首先基于存儲在服務(wù)器存儲器28中的指示來確定仿真器單元26先前是否驗證了所述代碼。如果仿真器單元26先前驗證了所述代碼,那么仿真器單元26可立即使所述所接收的代碼有效。舉例來說,仿真器單元26可驗證從裝置12接收的應(yīng)用20。隨后,仿真器單元26可從除了裝置12之外的裝置接收用于應(yīng)用20的代碼。在此情況下,仿真器單元26可首先確定所接收的代碼與仿真器單元26先前驗證的代碼相同,且如果相同,那么可立即驗證所接收的代碼。以此方式,仿真器單元26可不需要針對先前驗證的代碼再次執(zhí)行靜態(tài)和/或動態(tài)分析。
[0100]圖2是說明裝置12的實例操作的流程圖。僅出于說明的目的,參考圖1。裝置12可接收將由GPU 14執(zhí)行的應(yīng)用20 (40)。舉例來說,裝置12可從應(yīng)用服務(wù)器裝置38下載應(yīng)用20。作為另一實例,應(yīng)用20可被預(yù)先加載在裝置存儲器18上。如上文所描述,裝置12可接收應(yīng)用20的源代碼、中間代碼(例如,應(yīng)用20的中間表示),或目標(biāo)代碼。
[0101]裝置12可將應(yīng)用20的代碼傳輸?shù)津炞C服務(wù)器裝置24 (42)。舉例來說,裝置12可將應(yīng)用20的源代碼、中間代碼或目標(biāo)代碼傳輸?shù)津炞C服務(wù)器裝置24以用于驗證應(yīng)用20。在一些實例中,裝置12可將應(yīng)用20的代碼傳輸?shù)津炞C服務(wù)器裝置24 —次以用于驗證。裝置12的GPU 14可隨后在需要時執(zhí)行應(yīng)用20,而不需要后續(xù)驗證。
[0102]響應(yīng)于將應(yīng)用20的代碼傳輸?shù)津炞C服務(wù)器裝置24以進(jìn)行驗證,裝置12可從驗證服務(wù)器裝置24接收驗證(44)?;蛘?,裝置12可接收無效,或驗證或無效中的任一者。來自服務(wù)器裝置24的驗證可指示應(yīng)用20滿足一或多個性能準(zhǔn)則。如果應(yīng)用20未滿足一或多個性能準(zhǔn)則,那么驗證服務(wù)器裝置24可指示應(yīng)用20未滿足性能準(zhǔn)則。舉例來說,驗證可指示應(yīng)用20滿足與靜態(tài)分析、動態(tài)分析或靜態(tài)分析和動態(tài)分析兩者相關(guān)聯(lián)的性能準(zhǔn)則。在一些實例中,驗證服務(wù)器裝置24可優(yōu)化或調(diào)諧應(yīng)用20以使應(yīng)用20更有效或較不易出錯。在此情況下,所述驗證可指示應(yīng)用20的經(jīng)修改的版本滿足一或多個性能準(zhǔn)則。
[0103]在一些實例中,裝置12的處理器16可基于所述驗證而指令裝置12的GPU 14執(zhí)行應(yīng)用20 (48)。舉例來說,如果驗證服務(wù)器裝置24指示應(yīng)用20滿足性能準(zhǔn)則,那么處理器16可指令GPU 14執(zhí)行應(yīng)用20。否則,處理器16可不允許GPU 14執(zhí)行應(yīng)用20。
[0104]在一些替代實例中,在執(zhí)行之前,裝置12可接收應(yīng)用20的經(jīng)修改的版本(46)。在圖2中,從框44到框46以及從框46到框48的虛線用于指示框46的功能在每個實例中可不是必要的。舉例來說,驗證服務(wù)器裝置24可能夠優(yōu)化或調(diào)諧應(yīng)用20,且可傳輸應(yīng)用20的經(jīng)修改的版本。作為另一實例,裝置12可傳輸應(yīng)用20的源代碼或中間代碼,且從驗證服務(wù)器裝置24接收應(yīng)用20的經(jīng)編譯的版本。作為又另一實例,裝置12可接收如由驗證服務(wù)器裝置24修改的代碼的經(jīng)編譯的版本(例如,經(jīng)修改以用于優(yōu)化或調(diào)諧)。在這些實例中,處理器16可指令GPU 14執(zhí)行應(yīng)用20的經(jīng)修改的版本(48)。
[0105]圖3是說明驗證服務(wù)器裝置24的實例操作的流程圖。僅出于說明的目的,參考圖1。驗證服務(wù)器裝置24可從裝置12接收將由GPU 14執(zhí)行的應(yīng)用20(50)。舉例來說,驗證服務(wù)器裝置24可經(jīng)由網(wǎng)絡(luò)22從裝置12接收應(yīng)用20的源代碼、中間代碼或目標(biāo)代碼。
[0106]驗證服務(wù)器裝置24可對應(yīng)用20執(zhí)行靜態(tài)分析和動態(tài)分析中的至少一者(52)。舉例來說,作為靜態(tài)分析的部分,驗證服務(wù)器裝置24的仿真器單元26可編譯應(yīng)用20的代碼,且監(jiān)視應(yīng)用20的編譯期間的任何錯誤。作為動態(tài)分析的部分,驗證服務(wù)器裝置24的仿真器單元26可執(zhí)行GPU 14的虛擬模型或GPU 14的虛擬模型及裝置12的虛擬模型。如上文所描述,GPU模型30及裝置模型34可分別包含GPU 14及裝置12的虛擬模型。在一些實例中,GPU模型30及裝置模型34可包含通用GPU模型及通用裝置模型。
[0107]舉例來說,仿真器單元26可從裝置12接收GPU 14和/或裝置12的識別。仿真器單元26可識別GPU模型30中的哪一者對應(yīng)于GPU 14及裝置模型34中的哪一者對應(yīng)于裝置12,且執(zhí)行對應(yīng)的GPU模型及裝置模型。如果不存在用于GPU 14及裝置12的對應(yīng)的GPU和/或裝置模型,或如果仿真器單元26未接收GPU 14和/或裝置12的識別,那么仿真器單元26可執(zhí)行通用GPU及裝置模型。
[0108]作為動態(tài)分析的部分,仿真器單元26可執(zhí)行應(yīng)用20且用GPU輸入32輸入應(yīng)用20以用于分析應(yīng)用20。在這些實例中,應(yīng)用20可被視為在于仿真器單元26上執(zhí)行的GPU14的對應(yīng)虛擬模型上執(zhí)行。以此方式,仿真器單元26可執(zhí)行應(yīng)用20,如同應(yīng)用20正在GPU 14上執(zhí)行一般。仿真器單元26可監(jiān)視由GPU 14的對應(yīng)虛擬模型執(zhí)行的功能,例如存儲器存取、執(zhí)行的速率、終止例子,及與GPU 14的功能性相關(guān)的其它功能。
[0109]仿真器單元26可確定應(yīng)用20是否滿足一或多個性能準(zhǔn)則(54)。所述一或多個性能準(zhǔn)則可為與靜態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則及與動態(tài)分析相關(guān)聯(lián)的性能準(zhǔn)則。舉例來說,所述一或多個性能準(zhǔn)則可為如通過在靜態(tài)分析期間編譯應(yīng)用20而評估的在應(yīng)用20的編譯中不存在錯誤。作為另一實例,所述一或多個性能準(zhǔn)則可為以下準(zhǔn)則:應(yīng)用20不存取出界的存儲器位置且不用完GPU 14的資源以使得GPU 14不能夠并行地執(zhí)行其它任務(wù),這是通過在動態(tài)分析期間執(zhí)行應(yīng)用20且向應(yīng)用20提供GPU輸入32來評估的??纱嬖诜抡嫫鲉卧?6可確定應(yīng)用20滿足的性能準(zhǔn)則的其它實例。
[0110]驗證服務(wù)器裝置24可基于所述確定將應(yīng)用20的驗證傳輸?shù)窖b置12(56)。舉例來說,驗證服務(wù)器裝置24可在應(yīng)用20滿足一或多個性能準(zhǔn)則的情況下將應(yīng)用20的驗證傳輸?shù)窖b置12。否則,驗證服務(wù)器裝置24可在應(yīng)用20不滿足一或多個性能準(zhǔn)則的情況下傳輸無效。舉例來說,如果仿真器單元26確定應(yīng)用20滿足一或多個性能準(zhǔn)則,那么驗證服務(wù)器裝置24可將指示這種情況的指示傳輸?shù)窖b置12?;蛘?,如果仿真器單元26確定應(yīng)用20不滿足一或多個性能準(zhǔn)則,那么驗證服務(wù)器裝置24可將指示這種情況的指示傳輸?shù)窖b置12。
[0111]圖4是說明驗證服務(wù)器裝置24的另一實例操作的流程圖。僅出于說明的目的,參考圖1和3。類似于圖3,驗證服務(wù)器裝置24可從裝置12接收將由GPU 14執(zhí)行的應(yīng)用20(58)。在此實例中,仿真器單元26可修改應(yīng)用20 (例如,應(yīng)用20的源代碼或中間代碼)以優(yōu)化或調(diào)諧應(yīng)用20。舉例來說,仿真器單元26可修改應(yīng)用20的代碼以使得應(yīng)用20在GPU14上更有效地執(zhí)行。驗證服務(wù)器裝置24可隨后將經(jīng)修改的應(yīng)用20傳輸?shù)窖b置12 ¢2)。在一些實例中,驗證服務(wù)器裝置24可傳輸經(jīng)修改的應(yīng)用20的源代碼或中間代碼。作為另一實例,驗證服務(wù)器裝置24可編譯應(yīng)用的經(jīng)修改的代碼且將所得的目標(biāo)代碼傳輸?shù)窖b置12。
[0112]圖5是進(jìn)一步詳細(xì)地說明圖1的實例裝置的框圖。舉例來說,圖5進(jìn)一步詳細(xì)地說明圖1的裝置12。舉例來說,如上文所指示,裝置12的實例包含,但不限于,移動無線電話、PDA、包含視頻顯示器的視頻游戲控制臺、移動視頻會議單元、膝上型計算機(jī)、桌上型計算機(jī)、電視機(jī)頂盒等。
[0113]如圖5中所說明,裝置12可包含GPU 14、處理器16、裝置存儲器18、收發(fā)器模塊64、用戶接口 66、顯示器68及顯示器處理器70。GPU 14、處理器16及裝置存儲器18可實質(zhì)上類似于或等同于圖1中所說明的那些。出于簡明起見,僅詳細(xì)描述圖5中展示但圖1中未展示的組件。
[0114]裝置12可包含圖5中出于清楚起見而未展示的額外模塊或單元。舉例來說,裝置12可包含揚聲器和麥克風(fēng)(其任一者都未在圖5中展示),從而在其中裝置12是移動無線電話或其中裝置12是媒體播放器的揚聲器的實例中實現(xiàn)電話通信。此外,裝置12中所展示的各種模塊和單元在裝置12的每個實例中可能不是必需的。舉例來說,在其中裝置12是桌上型計算機(jī)或經(jīng)配備以與用戶接口或顯示器介接的其它裝置的實例中,用戶接口 66和顯示器68可在裝置12外部。
[0115]用戶接口 66的實例包含(但不限于)跟蹤球、鼠標(biāo)、鍵盤,以及其它類型的輸入裝置。用戶接口 66還可為觸摸屏且可被集成為顯示器68的一部分。收發(fā)器模塊64可包含用以允許裝置12與另一裝置或網(wǎng)絡(luò)之間的無線或有線通信的電路。收發(fā)器模塊64可包含一或多個調(diào)制器、解調(diào)器、放大器、天線以及用于有線或無線通信的其它此類電路。顯示器68可包括液晶顯示器(LCD)、有機(jī)發(fā)光二極管(OLED)、陰極射線管(CRT)顯示器、等離子顯示器、極化顯示器,或另一類型的顯示器裝置。
[0116]在一些實例中,在GPU 14產(chǎn)生圖形數(shù)據(jù)以供在顯示器68上顯示之后,GPU 14可將所得的圖形數(shù)據(jù)輸出端裝置存儲器18以進(jìn)行臨時存儲。顯示器處理器70可從裝置存儲器18檢索圖形數(shù)據(jù)、對圖形數(shù)據(jù)執(zhí)行任何后處理,且將所得的圖形數(shù)據(jù)輸出到顯示器68。舉例來說,顯示器處理器70可執(zhí)行任何進(jìn)一步增強(qiáng)或縮放由GPU 14產(chǎn)生的圖形數(shù)據(jù)。
[0117]在一或多個實例中,所描述的功能可以硬件、軟件、固件或其任何組合來實施。如果以軟件來實施,則可將功能作為一或多個指令或代碼存儲在計算機(jī)可讀媒體上。計算機(jī)可讀媒體可包含計算機(jī)數(shù)據(jù)存儲媒體。數(shù)據(jù)存儲媒體可為可由一或多個計算機(jī)或一或多個處理器存取以檢索指令、代碼和/或數(shù)據(jù)結(jié)構(gòu)來用于實施本發(fā)明中所描述的技術(shù)的任何可用媒體。舉例來說(且并非限制),所述計算機(jī)可讀媒體可包括隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、EEPROM、CD-ROM或其它光盤存儲裝置、磁盤存儲裝置或其它磁性存儲裝置,或可用于存儲呈指令或數(shù)據(jù)結(jié)構(gòu)的形式的所要程序碼且可由計算機(jī)存取的任何其它媒體。在本文中使用時,磁盤及光盤包含壓縮光盤(CD)、激光光盤、光學(xué)光盤、數(shù)字多功能光盤(DVD)、軟性磁盤及藍(lán)光光盤,其中磁盤通常以磁性方式再現(xiàn)數(shù)據(jù),而光盤使用激光以光學(xué)方式再現(xiàn)數(shù)據(jù)。以上各者的組合也應(yīng)包含在計算機(jī)可讀媒體的范圍內(nèi)。
[0118]所述代碼可由一或多個處理器執(zhí)行,例如,一或多個數(shù)字信號處理器(DSP)、通用微處理器、專用集成電路(ASIC)、現(xiàn)場可編程邏輯陣列(FPGA)或其它等效集成或離散的邏輯電路。因此,如本文中所使用的術(shù)語“處理器”可指上述結(jié)構(gòu)或適合于實施本文中所描述的技術(shù)的任一其它結(jié)構(gòu)中的任一者。并且,可將所述技術(shù)完全實施于一或多個電路或邏輯元件中。
[0119]本發(fā)明的技術(shù)可實施于廣泛多種裝置或設(shè)備中,包含無線手持機(jī)、集成電路(IC)或IC組(B卩,芯片組)。本發(fā)明中描述各種組件、模塊或單元來強(qiáng)調(diào)經(jīng)配置以執(zhí)行所揭示的技術(shù)的裝置的若干功能性方面,但不一定需要通過不同的硬件單元來實現(xiàn)。而是,如上文所描述,各種單元可聯(lián)合合適的軟件和/或固件而組合于硬件單元中或通過互操作的硬件單元的集合(包含如上文所描述的一或多個處理器)來提供。
[0120]已描述各種實例。這些及其它實例屬于所附權(quán)利要求書的范圍內(nèi)。
【權(quán)利要求】
1.一種方法,其包括: 使用服務(wù)器裝置接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元GPU執(zhí)行的應(yīng)用; 使用所述服務(wù)器裝置執(zhí)行以下各者中的至少一者: 在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間對所述應(yīng)用的分析;及 在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間對所述應(yīng)用的分析; 基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則;及 在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
2.根據(jù)權(quán)利要求1所述的方法,其中所述性能準(zhǔn)則包括以下各者中的至少一者:確定所述應(yīng)用不存在惡意的代碼,及確定所述應(yīng)用不是易于出錯的。
3.根據(jù)權(quán)利要求1所述的方法,其中所述性能準(zhǔn)則包含以下各者中的一或多者:確定所述應(yīng)用的代碼不包含已知病毒的代碼、確定在所述應(yīng)用的所述代碼的編譯期間確定未發(fā)現(xiàn)錯誤、確定在所述應(yīng)用的執(zhí)行期間確定不存在出界的存儲器存取、確定在所述應(yīng)用的執(zhí)行期間確定所述裝置的系統(tǒng)總線未過載、確定所述應(yīng)用的任務(wù)在閾值執(zhí)行時間內(nèi)完成執(zhí)行,及確定所述應(yīng)用的所述任務(wù)至少以閾值執(zhí)行速率執(zhí)行。
4.根據(jù)權(quán)利要求1所述的方法,其中在編譯之前和期間執(zhí)行對所述應(yīng)用的所述分析包括將所述應(yīng)用的代碼與已知病毒的代碼進(jìn)行比較,且確定在所述應(yīng)用的所述代碼的編譯期間是否發(fā)現(xiàn)任何錯誤。
5.根據(jù)權(quán)利要求1所述的方法,其中在所述應(yīng)用的執(zhí)行期間執(zhí)行對所述應(yīng)用的所述分析包括: 執(zhí)行虛擬GPU模型; 在所述虛擬GPU模型上執(zhí)行所述應(yīng)用;及 在所述應(yīng)用在所述GPU模型上的所述執(zhí)行期間分析所述虛擬GPU模型的功能性。
6.根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包括: 執(zhí)行虛擬裝置模型;及 在所述應(yīng)用在所述GPU模型上的所述執(zhí)行期間分析所述虛擬裝置模型的功能性。
7.根據(jù)權(quán)利要求5所述的方法,其中在所述虛擬GPU模型上執(zhí)行所述應(yīng)用包括將GPU輸入輸入到在所述虛擬GPU模型上執(zhí)行的所述應(yīng)用。
8.根據(jù)權(quán)利要求5所述的方法,其進(jìn)一步包括: 監(jiān)視由所述所執(zhí)行的應(yīng)用執(zhí)行的功能。
9.根據(jù)權(quán)利要求8所述的方法,其中監(jiān)視功能包括以下各者中的一或多者:監(jiān)視所述所執(zhí)行的應(yīng)用進(jìn)行的存儲器存取、監(jiān)視執(zhí)行的速率,及監(jiān)視執(zhí)行時間。
10.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括: 修改所述應(yīng)用的代碼;及 將所述應(yīng)用的所述經(jīng)修改的代碼傳輸?shù)剿鲅b置。
11.根據(jù)權(quán)利要求10所述的方法,其進(jìn)一步包括: 確定所述應(yīng)用將在所述GPU上低效地執(zhí)行, 其中修改所述應(yīng)用的所述代碼包括基于所述確定來修改所述應(yīng)用的所述代碼。
12.根據(jù)權(quán)利要求1所述的方法,其中在所述應(yīng)用的執(zhí)行期間執(zhí)行對所述應(yīng)用的所述分析包括: 在硬件仿真板上執(zhí)行所述應(yīng)用;及 在所述執(zhí)行期間分析所述硬件仿真板的功能性。
13.根據(jù)權(quán)利要求1所述的方法,其中接收所述應(yīng)用包括接收所述應(yīng)用的源代碼和中間代碼中的至少一者,所述方法進(jìn)一步包括: 編譯所述應(yīng)用的所述源代碼和所述中間代碼中的至少一者以產(chǎn)生所述應(yīng)用的目標(biāo)代碼;及 將所述應(yīng)用的所述目標(biāo)代碼傳輸?shù)剿鲅b置。
14.一種設(shè)備,其包括: 仿真器單元,其可操作以: 接收將由駐留于所述設(shè)備外部的裝置上的圖形處理單元GPU執(zhí)行的應(yīng)用; 執(zhí)行以下各者中的至少一者: 在所述應(yīng)用在所述設(shè)備上的編譯之前和期間對所述應(yīng)用的分析;及 在所述應(yīng)用在所述設(shè)備上的執(zhí)行期間對所述應(yīng)用的分析; 基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則;及 在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
15.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述性能準(zhǔn)則包括以下各者中的至少一者:確定所述應(yīng)用不存在惡意的代碼,及確定所述應(yīng)用不是易于出錯的。
16.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述性能準(zhǔn)則包含以下各者中的一或多者:確定所述應(yīng)用的代碼不包含已知病毒的代碼、確定在所述應(yīng)用的所述代碼的編譯期間確定未發(fā)現(xiàn)錯誤、確定在所述應(yīng)用的執(zhí)行期間確定不存在出界的存儲器存取、確定在所述應(yīng)用的執(zhí)行期間確定所述裝置的系統(tǒng)總線未過載、確定所述應(yīng)用的任務(wù)在閾值執(zhí)行時間內(nèi)完成執(zhí)行,及確定所述應(yīng)用的所述任務(wù)至少以閾值執(zhí)行速率執(zhí)行。
17.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述仿真器單元將所述應(yīng)用的代碼與已知病毒的代碼進(jìn)行比較,且確定在所述應(yīng)用的所述代碼的編譯期間是否發(fā)現(xiàn)任何錯誤,以在編譯之前和期間執(zhí)行對所述應(yīng)用的所述分析。
18.根據(jù)權(quán)利要求14所述的設(shè)備,其進(jìn)一步包括存儲器,其中為了在所述應(yīng)用的執(zhí)行期間執(zhí)行對所述應(yīng)用的所述分析,所述仿真器單元可操作以: 執(zhí)行存儲在所述存儲器中的虛擬GPU模型; 在所述虛擬GPU模型上執(zhí)行所述應(yīng)用;及 在所述應(yīng)用在所述GPU模型上的所述執(zhí)行期間分析所述虛擬GPU模型的功能性。
19.根據(jù)權(quán)利要求18所述的設(shè)備,其中所述仿真器單元進(jìn)一步可操作以: 執(zhí)行存儲在所述存儲器中的虛擬裝置模型;及 在所述應(yīng)用在所述GPU模型上的所述執(zhí)行期間分析所述虛擬裝置模型的功能性。
20.根據(jù)權(quán)利要求18所述的設(shè)備,其進(jìn)一步包括存儲器,其中所述仿真器單元在所述應(yīng)用在所述虛擬GPU模型上的所述執(zhí)行期間將存儲在所述存儲器中的GPU輸入輸入到在所述虛擬GPU模型上執(zhí)行的所述應(yīng)用。
21.根據(jù)權(quán)利要求18所述的設(shè)備,其中所述仿真器單元進(jìn)一步可操作以監(jiān)視由所述所執(zhí)行的應(yīng)用執(zhí)行的功能。
22.根據(jù)權(quán)利要求21所述的設(shè)備,其中所述仿真器單元可操作以監(jiān)視以下各者中的一或多者:所述所執(zhí)行的應(yīng)用進(jìn)行的存儲器存取、執(zhí)行的速率,及執(zhí)行時間。
23.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述仿真器單元進(jìn)一步可操作以: 修改所述應(yīng)用的代碼;及 將所述應(yīng)用的所述經(jīng)修改的代碼傳輸?shù)剿鲅b置。
24.根據(jù)權(quán)利要求23所述的設(shè)備,其中所述仿真器單元進(jìn)一步可操作以確定所述應(yīng)用將在所述GPU上低效地執(zhí)行,且基于所述確定來修改所述應(yīng)用的所述代碼。
25.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述仿真器單元包括硬件仿真板,且其中所述硬件仿真板執(zhí)行所述應(yīng)用以在所述應(yīng)用的執(zhí)行期間執(zhí)行對所述應(yīng)用的所述分析。
26.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述仿真器單元接收所述應(yīng)用的源代碼和中間代碼中的至少一者,且其中所述仿真器單元進(jìn)一步可操作以: 編譯所述應(yīng)用的所述源代碼和所述中間代碼中的至少一者以產(chǎn)生所述應(yīng)用的目標(biāo)代碼;及 將所述應(yīng)用的所述目標(biāo)代碼傳輸?shù)剿鲅b置。
27.一種服務(wù)器裝置,其包括: 用于接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元GPU執(zhí)行的應(yīng)用的裝置; 用于執(zhí)行以下各者中的至少一者的裝置: 在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間對所述應(yīng)用的分析;及 在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間對所述應(yīng)用的分析; 用于基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則的裝置;及 用于在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置的裝置。
28.一種非暫時性計算機(jī)可讀存儲媒體,其包括致使一或多個處理器進(jìn)行以下操作的指令: 使用服務(wù)器裝置接收將由駐留于所述服務(wù)器裝置外部的裝置上的圖形處理單元GPU執(zhí)行的應(yīng)用; 使用所述服務(wù)器裝置執(zhí)行以下各者中的至少一者: 在所述應(yīng)用在所述服務(wù)器裝置上的編譯之前和期間對所述應(yīng)用的分析;及 在所述應(yīng)用在所述服務(wù)器裝置上的執(zhí)行期間對所述應(yīng)用的分析; 基于所述分析中的至少一者來確定所述應(yīng)用是否滿足一或多個性能準(zhǔn)則;及 在所述應(yīng)用滿足所述一或多個性能準(zhǔn)則的情況下將對所述應(yīng)用的驗證傳輸?shù)剿鲅b置。
29.—種方法,其包括: 接收將由裝置的圖形處理單元GPU執(zhí)行的應(yīng)用; 將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用;及 從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在所述GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
30.根據(jù)權(quán)利要求29所述的方法,其進(jìn)一步包括: 基于所述所接收的驗證在所述GPU上執(zhí)行所述應(yīng)用。
31.根據(jù)權(quán)利要求29所述的方法,其中接收所述應(yīng)用包括接收以下各者中的至少一者:所述應(yīng)用的源代碼、所述應(yīng)用的中間代碼,及所述應(yīng)用的經(jīng)編譯的代碼,且其中傳輸所述應(yīng)用包括傳輸以下各者中的至少一者:所述應(yīng)用的所述源代碼、所述應(yīng)用的中間代碼,及所述應(yīng)用的所述經(jīng)編譯的代碼。
32.根據(jù)權(quán)利要求29所述的方法,其進(jìn)一步包括: 從所述服務(wù)器裝置接收所述應(yīng)用的經(jīng)修改的版本;及 在所述GPU上執(zhí)行所述應(yīng)用的所述經(jīng)修改的版本。
33.根據(jù)權(quán)利要求29所述的方法,其中傳輸所述應(yīng)用包括傳輸所述應(yīng)用的源代碼和所述應(yīng)用的中間代碼中的至少一者,所述方法進(jìn)一步包括: 從所述服務(wù)器裝置接收所述應(yīng)用的經(jīng)編譯的目標(biāo)代碼;及 在所述GPU上執(zhí)行所述應(yīng)用的所述經(jīng)編譯的目標(biāo)代碼。
34.根據(jù)權(quán)利要求29所述的方法,其中將所述應(yīng)用傳輸?shù)剿龇?wù)器裝置包括僅將所述應(yīng)用傳輸?shù)剿龇?wù)器裝置一次,且其中從所述服務(wù)器裝置接收所述驗證包括僅從所述服務(wù)器裝置接收所述驗證一次。
35.一種設(shè)備,其包括: 圖形處理單元GPU; 裝置存儲器,其可操作以存儲將由所述GPU執(zhí)行的應(yīng)用;及 處理器,其可操作以: 將所述應(yīng)用傳輸?shù)皆谒鲈O(shè)備外部的服務(wù)器裝置;及 從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在所述GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
36.根據(jù)權(quán)利要求35所述的設(shè)備,其中所述處理器進(jìn)一步可操作以指令所述GPU基于所述所接收的驗證而執(zhí)行所述應(yīng)用,且其中所述GPU可操作以響應(yīng)于來自所述處理器的所述指令而執(zhí)行所述應(yīng)用。
37.根據(jù)權(quán)利要求35所述的設(shè)備,其中所述處理器接收以下各者中的至少一者:所述應(yīng)用的源代碼、所述應(yīng)用的中間代碼,及所述應(yīng)用的經(jīng)編譯的代碼,且其中所述處理器傳輸以下各者中的至少一者:所述應(yīng)用的所述源代碼、所述應(yīng)用的中間代碼,及所述應(yīng)用的所述經(jīng)編譯的代碼。
38.根據(jù)權(quán)利要求35所述的設(shè)備,其中所述處理器進(jìn)一步可操作以從所述服務(wù)器裝置接收所述應(yīng)用的經(jīng)修改的版本,且其中所述GPU進(jìn)一步可操作以執(zhí)行所述應(yīng)用的所述經(jīng)修改的版本。
39.根據(jù)權(quán)利要求35所述的設(shè)備,其中所述處理器傳輸所述應(yīng)用的源代碼和所述應(yīng)用的中間代碼中的至少一者,其中所述處理器進(jìn)一步可操作以接收所述應(yīng)用的經(jīng)編譯的目標(biāo)代碼,且其中所述GPU進(jìn)一步可操作以執(zhí)行所述應(yīng)用的所述經(jīng)編譯的目標(biāo)代碼。
40.根據(jù)權(quán)利要求35所述的設(shè)備,其中所述處理器僅將所述應(yīng)用傳輸?shù)剿龇?wù)器裝置一次,且其中所述處理器僅從所述服務(wù)器裝置接收所述驗證一次。
41.一種裝置,其包括: 圖形處理單元GPU; 用于接收將由所述GPU執(zhí)行的應(yīng)用的裝置; 用于將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用的裝置;及用于從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在所述GPU上執(zhí)行的一或多個準(zhǔn)則的驗證的裝置。
42.一種非暫時性計算機(jī)可讀存儲媒體,其包括致使一或多個處理器進(jìn)行以下操作的指令: 接收將由裝置的圖形處理單元GPU執(zhí)行的應(yīng)用; 將所述應(yīng)用傳輸?shù)皆谒鲅b置外部的服務(wù)器裝置以用于驗證所述應(yīng)用;及 從所述服務(wù)器裝置接收指示所述應(yīng)用滿足在所述GPU上執(zhí)行的一或多個準(zhǔn)則的驗證。
【文檔編號】G06F11/36GK104137076SQ201380010829
【公開日】2014年11月5日 申請日期:2013年1月30日 優(yōu)先權(quán)日:2012年2月27日
【發(fā)明者】阿列克謝·V·布爾德, 杰伊·春蘇普·云 申請人:高通股份有限公司