国产精品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>

      基于服務(wù)器的代碼編譯的制作方法

      文檔序號(hào):6478771閱讀:242來源:國(guó)知局
      專利名稱:基于服務(wù)器的代碼編譯的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明大體上涉及基于服務(wù)器的代碼編譯的系統(tǒng)和方法。
      背景技術(shù)
      技術(shù)進(jìn)步已產(chǎn)生更小且更強(qiáng)大的個(gè)人計(jì)算裝置。舉 例來說,當(dāng)前存在多種便攜式 個(gè)人計(jì)算裝置,包含無線計(jì)算裝置,例如便攜式無線電話、個(gè)人數(shù)字助理(PDA)和尋呼裝 置,其體積小、重量輕且易于由用戶攜帶。更具體地說,便攜式無線電話(例如蜂窩式電話 和因特網(wǎng)協(xié)議(IP)電話)可經(jīng)由無線網(wǎng)絡(luò)傳送語音和數(shù)據(jù)包。此外,許多此類無線電話包 含并入其中的其它類型的裝置。舉例來說,無線電話還可包含便攜式游戲控制臺(tái)、數(shù)字靜態(tài) 相機(jī)、數(shù)字視頻相機(jī)、數(shù)字記錄器和音頻文件播放器。而且,此類無線電話可包含可用于接 入因特網(wǎng)的應(yīng)用程序,例如萬維網(wǎng)瀏覽器應(yīng)用程序。由此,這些無線電話包含相當(dāng)大的計(jì)算 能力。通常,隨著這些裝置變得更小且更強(qiáng)大,這些裝置變得越來越受資源約束。舉例來 說,屏幕大小、可用存儲(chǔ)器和文件系統(tǒng)空間的量,以及輸入和輸出能力的量可能受裝置的小 尺寸限制。此外,電池大小、電池所提供的電力的量以及電池壽命也可能受限制。另外,便攜式裝置上的計(jì)算資源是有限的。舉例來說,蜂窩式電話上的處理器能力 受大小和功率消耗約束限制。由此,涉及軟件從源代碼到目標(biāo)代碼的轉(zhuǎn)換的程序的編譯通 常不在此些便攜式裝置上執(zhí)行。然而,由于便攜式裝置具有不同的處理器和執(zhí)行平臺(tái),因此 每一類型的具有不同平臺(tái)的裝置的編譯需要是不同的。此平臺(tái)變化為應(yīng)用程序開發(fā)者帶來 復(fù)雜性和增加的成本,應(yīng)用程序開發(fā)者寧愿開發(fā)用于單個(gè)目標(biāo)執(zhí)行環(huán)境的軟件應(yīng)用程序, 而不愿創(chuàng)建不同版本的應(yīng)用程序來適應(yīng)多個(gè)平臺(tái)。另外,隨著具有增加的功能性(例如,視 頻和多媒體應(yīng)用處理能力)的各種便攜式裝置的激增,與用于不同目標(biāo)平臺(tái)的應(yīng)用程序有 關(guān)的問題已變得更顯著。因此,提供經(jīng)改進(jìn)的編譯系統(tǒng)和方法將是有利的。

      發(fā)明內(nèi)容
      本發(fā)明揭示一種基于服務(wù)器的編譯方法和一種用于實(shí)施所述方法的服務(wù)器。所述 基于服務(wù)器的編譯方法包含在具有多個(gè)編譯器的服務(wù)器處接收代碼編譯請(qǐng)求。所述方法還 包含將代碼編譯請(qǐng)求中的信息與存儲(chǔ)在服務(wù)器處的所述多個(gè)編譯器的列表進(jìn)行比較,以 確定服務(wù)器是否具有適合編譯與所述代碼編譯請(qǐng)求相關(guān)聯(lián)的源代碼的編譯器;以及經(jīng)由網(wǎng) 絡(luò)將對(duì)所述代碼編譯請(qǐng)求的響應(yīng)從服務(wù)器傳送到客戶機(jī)。所述響應(yīng)包含對(duì)代碼編譯請(qǐng)求的 接受或拒絕的指示。當(dāng)所述響應(yīng)包含對(duì)代碼編譯請(qǐng)求的接受的指示時(shí),所述方法包含在服 務(wù)器處接收待編譯的源代碼;使用適合編譯源代碼以產(chǎn)生經(jīng)編譯的代碼的選定編譯器來編 譯在服務(wù)器處接收到的源代碼;以及經(jīng)由網(wǎng)絡(luò)將經(jīng)編譯的代碼從服務(wù)器傳送到客戶機(jī)。在特定實(shí)施例中,服務(wù)器包含與數(shù)據(jù)通信網(wǎng)絡(luò)的接口、存儲(chǔ)多個(gè)不同編譯器的編 譯器庫(kù),以及響應(yīng)所述接口處所接收到的數(shù)據(jù)的編譯器選擇邏輯。編譯器選擇邏輯包含用以基于對(duì)所接收到的數(shù)據(jù)的評(píng)估來選擇所述多個(gè)不同編譯器中的一者的邏輯。選定的編 譯器用于產(chǎn)生經(jīng)編譯的輸出數(shù)據(jù),且所述經(jīng)編譯的輸出數(shù)據(jù)經(jīng)由數(shù)據(jù)通信網(wǎng)絡(luò)傳送到客戶 機(jī)。在又一實(shí)施例中,揭示一種向客戶機(jī)請(qǐng)求基于服務(wù)器的代碼編譯的方法。所述方 法包含將代碼編譯請(qǐng)求發(fā)送到具有多個(gè)編譯器的服務(wù)器;從服務(wù)器接收對(duì)代碼編譯請(qǐng)求 的響應(yīng),所述響應(yīng)指示代碼編譯請(qǐng)求的接受或拒絕;在檢測(cè)到代碼編譯請(qǐng)求的接受后,將源 代碼發(fā)送到服務(wù)器,所述源代碼將在服務(wù)器處被編譯;在服務(wù)器已編譯所述源代碼之后,接 收來自所述服務(wù)器的經(jīng)編譯的代碼。在又一實(shí)施例中,揭示一種計(jì)算裝置。所述計(jì)算裝置包含處理器、可由所述處理器 存取的存儲(chǔ)器,以及通信接口。所述通信接口經(jīng)配置以將代碼編譯請(qǐng)求發(fā)送到具有多個(gè)編 譯器的服務(wù)器,且從所述服務(wù)器接收對(duì)所述代碼編譯請(qǐng)求的響應(yīng)。所述響應(yīng)指示代碼編譯 請(qǐng)求的接受或拒絕。通信接口進(jìn)一步經(jīng)配置以將源代碼發(fā)送到服務(wù)器,以在服務(wù)器處編譯, 且接收來自所述服務(wù)器的經(jīng)編譯的代碼。本文中所揭示的實(shí)施例中的一者或一者以上的優(yōu)點(diǎn)可包含通過將軟件應(yīng)用程序 代碼的編譯移位到可具有較大處理資源的服務(wù)器來保存裝置資源。本文中所揭示的一個(gè)或 一個(gè)以上實(shí)施例的另一優(yōu)點(diǎn)可包含基于與應(yīng)用處理單 元的兼容性而分配用于在應(yīng)用處理 單元(例如,客戶機(jī)裝置的圖形處理單元、視頻處理單元或相機(jī)圖像處理單元)處執(zhí)行的軟 件,而不需要軟件的用戶交互或用戶選擇。所述一個(gè)或一個(gè)以上實(shí)施例的另一特定優(yōu)點(diǎn)可包含通過允許應(yīng)用程序開發(fā)者將 經(jīng)尋址的代碼寫入到所要平臺(tái),且通過提供可響應(yīng)于接收到來自便攜式裝置的請(qǐng)求而編譯 到達(dá)一個(gè)或一個(gè)以上特定裝置平臺(tái)的代碼的基于服務(wù)器的代碼編譯系統(tǒng),來簡(jiǎn)化軟件編碼 過程。以此方式,寫入到單個(gè)平臺(tái)的代碼可經(jīng)編譯以供在于不同平臺(tái)上操作的多個(gè)裝置上 使用,而不為軟件開發(fā)者增加復(fù)雜性,且不消耗便攜式裝置處的處理資源。在審閱整個(gè)申請(qǐng)案之后,將明白本發(fā)明的其它方面、優(yōu)點(diǎn)和特征,整個(gè)申請(qǐng)案包含 以下部分


      具體實(shí)施方式
      和權(quán)利要求書。

      通過參考結(jié)合附圖進(jìn)行的以下詳細(xì)描述,本文所描述的實(shí)施例的方面和優(yōu)點(diǎn)將變 得更顯而易見,其中圖1是包含用以執(zhí)行基于服務(wù)器的編譯的服務(wù)器的示范性系統(tǒng)的框圖;圖2是利用基于服務(wù)器的編譯的系統(tǒng)的實(shí)施例的框圖;圖3是利用基于服務(wù)器的編譯的系統(tǒng)的另一實(shí)施例的框圖;圖4是利用基于服務(wù)器的編譯的系統(tǒng)的另一實(shí)施例的框圖;圖5是并入有用以執(zhí)行經(jīng)服務(wù)器編譯的代碼的處理器的便攜式通信裝置的框圖;圖6是并入有用以執(zhí)行經(jīng)服務(wù)器編譯的代碼的處理器的示范性蜂窩式電話的框 圖;圖7是執(zhí)行基于服務(wù)器的編譯的方法的特定說明性實(shí)施例的流程圖;圖8是執(zhí)行基于服務(wù)器的編譯的方法的第二特定說明性實(shí)施例的流程圖;以及圖9是客戶機(jī)請(qǐng)求的編譯的方法的特定說明性實(shí)施例的流程圖。
      具體實(shí)施例方式圖1說明包含用以執(zhí)行基于服務(wù)器的編譯的服務(wù)器的示范性系統(tǒng)的框圖。系統(tǒng) 100包含代表性的客戶機(jī)102、104,數(shù)據(jù)網(wǎng)絡(luò)106和服務(wù)器120。服務(wù)器120包含網(wǎng)絡(luò)接口 130、編譯器選擇邏輯140、所支持且所存儲(chǔ)的編譯器的列表142,以及包含多個(gè)編譯器150、 152、154的編譯器庫(kù)。所述多個(gè)編譯器150、152和154耦合到網(wǎng)絡(luò)接口 130,且耦合到編譯 器選擇邏輯140。網(wǎng)絡(luò)接口 130耦合到數(shù)據(jù)通信網(wǎng)絡(luò)106。數(shù)據(jù)通信網(wǎng)絡(luò)106可為因特網(wǎng) 協(xié)議網(wǎng)絡(luò),且可為有線數(shù)據(jù)網(wǎng)絡(luò)或無線數(shù)據(jù)網(wǎng)絡(luò)。一般來說,編譯器150、152和154適合于 將字節(jié)代碼、符號(hào)代碼或高級(jí)符號(hào)語言翻譯成特定處理器可理解和執(zhí)行的等效處理器可讀 指令。在特定實(shí)施例中,經(jīng)編譯的結(jié)果可為中間表示語言代碼或字節(jié)代碼,例如,X86型處 理器的匯編代碼。中間表示對(duì)于許多平臺(tái)或處理單元來說可以是靈活且便攜的。可將中間 表示語言代碼用作到達(dá)特定平臺(tái)或處理單元的另一(較低)級(jí)編譯器的輸入。存儲(chǔ)在服務(wù) 器120處的編譯器中的每一者(例如,所說明的編譯器150、152和154)為用于為不同處理 器編譯代碼的不同編譯器。舉例來說,第一客戶機(jī)102和第二客戶機(jī)104可具有利用不同 執(zhí)行平臺(tái)的不同處理器。服務(wù)器120適合于接收編譯請(qǐng)求、從可用的編譯器150、152和154 選擇適當(dāng)?shù)木幾g器,且使用對(duì)與第一客戶機(jī)102相關(guān)聯(lián)的特定處理器來說適當(dāng)?shù)倪x定編譯 器來編譯用于請(qǐng)求裝置(例如,第一客戶機(jī)102)的代碼。編譯器選擇邏輯140響應(yīng)在網(wǎng)絡(luò)接口 130處接收到的數(shù)據(jù)(例如,從客戶機(jī)102、 104中的一者接收到的代碼編譯請(qǐng)求110)。編譯器選擇邏輯140包含用以基于對(duì)所接收到 的數(shù)據(jù)的評(píng)估(例如,對(duì)代碼編譯請(qǐng)求消息110中所傳送的信息的評(píng)估)來選擇多個(gè)不同 編譯器150、152或154中的一者的邏輯。在特定實(shí)施例中,可將編譯器選擇邏輯140實(shí)施 為邏輯電路。在操作期間,編譯器選擇邏輯140確定來自編譯器庫(kù)的選定編譯器(例如,編 譯器150),且將消息傳送到請(qǐng)求客戶機(jī)(例如,第一客戶機(jī)102)。到達(dá)請(qǐng)求客戶機(jī)的消息 指示對(duì)代碼編譯請(qǐng)求消息110的接受或拒絕。當(dāng)合適的編譯器在服務(wù)器120處可用時(shí),服務(wù)器120傳送對(duì)代碼編譯請(qǐng)求消息110 的接受。作為響應(yīng),請(qǐng)求客戶機(jī)102或104可將待編譯的源代碼發(fā)送到服務(wù)器120,且服務(wù) 器120處的編譯器選擇邏輯140將接收到的源代碼路由到選定編譯器150、152或154。選定 編譯器150、152或154編譯所述源代碼,并產(chǎn)生經(jīng)編譯的代碼112。經(jīng)編譯的代碼112 (也 稱為目標(biāo)代碼)經(jīng)由網(wǎng)絡(luò)接口 130和網(wǎng)絡(luò)106傳送到請(qǐng)求客戶機(jī)102或104。在特定實(shí)施例中,請(qǐng)求客戶機(jī)102或104可為個(gè)人計(jì)算機(jī)、便攜式計(jì)算機(jī)、手持式 計(jì)算裝置,例如無線電話、個(gè)人數(shù)字助理、媒體重放裝置或類似裝置。請(qǐng)求客戶機(jī)裝置可包 含目標(biāo)應(yīng)用處理單元(例如圖形處理單元(GPU)),以執(zhí)行從服務(wù)器120發(fā)送的經(jīng)編譯的代 碼。請(qǐng)求客戶機(jī)102或104還可為軟件應(yīng)用程序、驅(qū)動(dòng)程序、安裝程序、其它處理器可執(zhí)行 指令或其任何組合。代碼編譯請(qǐng)求110可包含關(guān)于目標(biāo)應(yīng)用處理單元的信息,使得服務(wù)器 120可選擇適當(dāng)?shù)木幾g器。在特定實(shí)施例中,信息包含源代碼語言名稱、源代碼語言版本、處 理單元名稱、處理單元版本或其任何組合。在無線應(yīng)用中,服務(wù)器120可安置在無線通信網(wǎng)路的無線基站內(nèi)或與無線通信網(wǎng) 路的無線基站位于同一地點(diǎn)。在另一特定實(shí)施例中,服務(wù)器120可與無線通信網(wǎng)路的無線 基站通信。在服務(wù)器120包含用于各種GPU平臺(tái)的著色器編譯器(shader compiler)的應(yīng)用中,待傳輸?shù)牡湫驮创a文件大小或經(jīng)編譯文件大小可較小,例如小于2,OOO個(gè)字節(jié)。因 此,源代碼經(jīng)由無線通信網(wǎng)路的傳輸、在服務(wù)器120處的編譯以及由請(qǐng)求客戶機(jī)102或104 的接收可發(fā)生在運(yùn)行時(shí)間,而不引入不可接受的延遲。在特定實(shí)施例中,客戶機(jī)102或104可包含通用中央處理單元(CPU)、數(shù)字信號(hào)處 理器(DSP) —個(gè)或一個(gè)以上應(yīng)用處理單元或其任何組合。應(yīng)用處理單元可包含圖形處理單 元、視頻處理單元、相機(jī)圖像處理單元、其它應(yīng)用處理單元或其任何組合。應(yīng)用程序可包含 多個(gè)層,例如具有基于一個(gè)或一個(gè)以上應(yīng)用編程接口(例如,OpenGL 、DireCtX 等)的代 碼的應(yīng)用層、在編程接口下的驅(qū)動(dòng)程序?qū)?,以及可在一個(gè)或一個(gè)以上專用應(yīng)用處理單元上、 在DSP上或在CPU上執(zhí)行的應(yīng)用處理層。在特定實(shí)施例中,根據(jù)特定配置,應(yīng)用處理層的一 些組件可在專用應(yīng)用處理單元上執(zhí)行,其它組件可在DSP上執(zhí)行,且另外其它組件可在CPU 上執(zhí)行。在特定實(shí)施例中,例如在客戶機(jī)102或104的CPU上運(yùn)行的安裝程序、應(yīng)用程序或 驅(qū)動(dòng)程序等客戶程序可向服務(wù)器120發(fā)出針對(duì)用于單個(gè)應(yīng)用程序的不同組件的不同編譯 請(qǐng)求。舉例來說,客戶機(jī)102或104可產(chǎn)生針對(duì)一些組件將代碼編譯成CPU可執(zhí)行代碼 的請(qǐng)求、針對(duì)其它組件將源代碼編譯成DSP可執(zhí)行代碼的請(qǐng)求,以及針對(duì)特定組件將源代 碼編譯成可由專用處理單元執(zhí)行的機(jī)器代碼的請(qǐng)求??蛻魴C(jī)可分配從服務(wù)器120接收到的 經(jīng)編譯的代碼,以供在對(duì)應(yīng)的應(yīng)用處理單元、DSP、CPU或其任何組合上執(zhí)行。在特定實(shí)施例 中,當(dāng)此些應(yīng)用處理單元并非專用且不可有效地配置于客戶機(jī)裝置中時(shí),CPU或DSP可起到 一個(gè)或一個(gè)以上應(yīng)用處理單元的作用。在特定實(shí)施例中,服務(wù)器120可接收著色語言源代碼,且可編譯所述源代碼以供 在GPU處執(zhí)行。在其它實(shí)施例中,服務(wù)器120可適合于編譯用于其它處理平臺(tái)的其它類型 的源代碼。舉例來說,服務(wù)器120可編譯以C或另一編程語言寫就的數(shù)字信號(hào)處理器(DSP) 代碼,且可輸出DSP可執(zhí)行代碼。作為另一實(shí)例,在計(jì)算任務(wù)中的至少一部分被從GPU移到 DSP的情況下,服務(wù)器120可接收著色語言代碼,且可輸出DSP可執(zhí)行代碼。作為另一實(shí)例, 服務(wù)器120可接收著色語言代碼,且可輸出高級(jí)精簡(jiǎn)指令集計(jì)算(RISC)機(jī)器(例如,ARM) 代碼。在另一實(shí)例中,服務(wù)器120可接收C語言源代碼,且可輸出GPU可執(zhí)行代碼,例如用 于GPU處的通用計(jì)算。舉例來說,GPU可用于執(zhí)行從CPU或DSP移到GPU的通用音頻或視 頻處理。根據(jù)特定的硬件配置,其它實(shí)施例可包含接收C代碼且輸出CPU可執(zhí)行代碼或DSP 可執(zhí)行代碼的服務(wù)器120。圖2說明利用基于服務(wù)器的編譯的系統(tǒng)200的實(shí)施例的框圖。系統(tǒng)200包含經(jīng)由 網(wǎng)絡(luò)206與服務(wù)器204通信的客戶機(jī)裝置202。在特定實(shí)施例中,網(wǎng)絡(luò)206可包含無線網(wǎng) 絡(luò)、有線網(wǎng)絡(luò)或其任何組合??蛻魴C(jī)裝置202包含可用于將數(shù)據(jù)組織在客戶機(jī)裝置202的 存儲(chǔ)器(未圖示)處的目錄和文件中的文件系統(tǒng)208。客戶機(jī)裝置202還包含一個(gè)或一個(gè) 以上應(yīng)用程序210、一驅(qū)動(dòng)程序212和一應(yīng)用處理單元214。在特定實(shí)施例中,應(yīng)用處理單 元214可包含圖形處理單元(GPU)、視頻處理器、相機(jī)或成像處理器、音頻處理器、另一專用 處理器或其任何組合。在特定實(shí)施例中,客戶機(jī)裝置202可包含CPU(未圖示)、DSP(未圖 示)或其任何組合。CPU、DSP和應(yīng)用處理單元214可以存取存儲(chǔ)器、應(yīng)用程序210和驅(qū)動(dòng) 程序212。CPU可執(zhí)行應(yīng)用程序210,以經(jīng)由網(wǎng)絡(luò)206而與服務(wù)器204通信。服務(wù)器204包 含前端216、第一編譯器218和第二編譯器220。前端216可包含編譯器選擇邏輯,例如圖 1中所說明的編譯器選擇邏輯140。
      在特定說明性實(shí)施例中,客戶機(jī)裝置202可執(zhí)行一個(gè)或一個(gè)以上應(yīng)用程序210中 的至少一者,以經(jīng)由文件系統(tǒng)208檢索存儲(chǔ)在存儲(chǔ)器中的源代碼或中間表示字節(jié)代碼。例 如中央處理單元(CPU)等處理器可執(zhí)行所述一個(gè)或一個(gè)以上應(yīng)用程序210,且可產(chǎn)生與源 代碼有關(guān)的代碼編譯請(qǐng)求。所述代碼編譯請(qǐng)求可包含代碼語言識(shí)別符(例如,著色器編程 語言名稱(例如,OpenGL著色語言(GLSL)、高級(jí)著色語言(HLSL)、Gg等)、高級(jí)編程語言名 稱(例如,JAVA ,C++)或其它編程語言識(shí)別符)、版本識(shí)別符、目標(biāo)名稱(例如,GPU名稱 或CPU名稱)、目標(biāo)版本、所支持的二進(jìn)制代碼名稱以及版本識(shí)別符??蛻魴C(jī)裝置202嘗試 建立經(jīng)由網(wǎng)絡(luò)206到服務(wù)器204的連接。如果所述連接被建立,那么客戶機(jī)裝置202可經(jīng)由 網(wǎng)絡(luò)206將代碼編譯請(qǐng)求發(fā)送到服務(wù)器204,以確定服務(wù)器204是否有能力編譯所述代碼。 客戶機(jī)裝置202接收來自服務(wù)器204的響應(yīng)。所述響應(yīng)可為指示服務(wù)器204可編譯所述代 碼的接受?;蛘?,所述響應(yīng)可包含請(qǐng)求的拒絕。如果響應(yīng)指示服務(wù)器204接受,那么客戶機(jī) 裝置202經(jīng)由網(wǎng)絡(luò)206將代碼 發(fā)送到服務(wù)器204,且等待經(jīng)編譯的結(jié)果。當(dāng)客戶機(jī)裝置202 接收到經(jīng)編譯的結(jié)果時(shí),客戶機(jī)裝置202可執(zhí)行所述經(jīng)編譯的結(jié)果。在特定實(shí)例中,在客戶機(jī)裝置202(即,客戶機(jī))處執(zhí)行的特定應(yīng)用程序210可起 始與服務(wù)器204的通信。舉例來說,在執(zhí)行中的特定點(diǎn)處,應(yīng)用程序210可能需要執(zhí)行源代 碼或中間表示字節(jié)代碼。應(yīng)用程序210可向服務(wù)器204起始對(duì)編譯所述代碼的請(qǐng)求。響應(yīng) 于接收到指示接受的響應(yīng),應(yīng)用程序210可將代碼發(fā)送到服務(wù)器204以供編譯。應(yīng)用程序 210可接收經(jīng)編譯的代碼。在應(yīng)用程序210接收到經(jīng)編譯的結(jié)果之后,應(yīng)用程序210將結(jié) 果存儲(chǔ)在本機(jī)文件系統(tǒng)208處(S卩,在存儲(chǔ)器處),將經(jīng)編譯的結(jié)果提供給驅(qū)動(dòng)程序212、將 經(jīng)編譯的結(jié)果提供給應(yīng)用處理單元214,或其任何組合。在特定說明性實(shí)施例中,應(yīng)用程序 210可檢查經(jīng)編譯的結(jié)果,并在下次執(zhí)行應(yīng)用程序210時(shí)加載所述經(jīng)編譯的結(jié)果。在另一 特定說明性實(shí)施例中,應(yīng)用程序210可暫停執(zhí)行,請(qǐng)求編譯運(yùn)行中的代碼,接收經(jīng)編譯的代 碼,且使用所述經(jīng)編譯的代碼來恢復(fù)執(zhí)行。在又一特定說明性實(shí)施例中,客戶機(jī)可向服務(wù)器 204請(qǐng)求特定應(yīng)用程序(服務(wù)器204根據(jù)所述請(qǐng)求來編譯所請(qǐng)求的應(yīng)用程序),且向客戶機(jī) 提供經(jīng)編譯的代碼以供存儲(chǔ)、執(zhí)行或其任何組合。圖3說明利用基于服務(wù)器的編譯的系統(tǒng)300的另一特定實(shí)施例的框圖。系統(tǒng)300 包含經(jīng)由網(wǎng)絡(luò)306與服務(wù)器304通信的客戶機(jī)裝置302。在特定實(shí)施例中,網(wǎng)絡(luò)306可包 含無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或其任何組合??蛻魴C(jī)裝置302包含可用于將數(shù)據(jù)組織在客戶機(jī)裝 置302的存儲(chǔ)器(未圖示)處的目錄和文件中的文件系統(tǒng)308。客戶機(jī)裝置302還包含一 個(gè)或一個(gè)以上應(yīng)用程序310、一驅(qū)動(dòng)程序312、一應(yīng)用處理單元314和一安裝程序(下載程 序)316。在特定實(shí)施例中,應(yīng)用處理單元314可包含圖形處理單元(GPU)、視頻處理單元、 相機(jī)或圖像處理單元、音頻處理單元、另一專用處理單元或其任何組合。在特定實(shí)施例中, 客戶機(jī)裝置302可包含CPU(未圖示)、DSP(未圖示)或其任何組合。在特定說明性實(shí)施例 中,CPU、DSP和應(yīng)用處理單元314中的每一者可以存取存儲(chǔ)器、所述一個(gè)或一個(gè)以上應(yīng)用程 序310和驅(qū)動(dòng)程序312,且CPU執(zhí)行所述一個(gè)或一個(gè)以上應(yīng)用程序310中的至少一者。在特 定實(shí)施例中,安裝程序316可為可執(zhí)行以經(jīng)由網(wǎng)絡(luò)306與服務(wù)器304通信以下載經(jīng)編譯的 代碼的軟件應(yīng)用程序。服務(wù)器304包含前端318、第一編譯器320和第二編譯器322。前端 318可包含編譯器選擇邏輯,例如圖1中所說明的編譯器選擇邏輯140。在特定說明性實(shí)施例中,安裝程序316可起始與服務(wù)器304的通信。當(dāng)安裝軟件時(shí),安裝程序316代表所述一個(gè)或一個(gè)以上應(yīng)用程序310中的一應(yīng)用程序收集數(shù)據(jù),且將對(duì) 編譯服務(wù)的請(qǐng)求發(fā)送到服務(wù)器304。安裝程序316接收來自服務(wù)器304的經(jīng)編譯的代碼,且 將所述經(jīng)編譯的代碼存儲(chǔ)在本機(jī)文件系統(tǒng)308處。所述一個(gè)或一個(gè)以上應(yīng)用程序310中的 一者可從本機(jī)文件系統(tǒng)308讀取經(jīng)編譯的(二進(jìn)制)代碼和格式,且可將經(jīng)編譯的代碼直 接發(fā)送到驅(qū)動(dòng)程序312。在另一特定實(shí)施例中,當(dāng)從另一服務(wù)器(未圖示)下載應(yīng)用程序 時(shí),安裝程序(下載程序)316可指示從中下載應(yīng)用程序的服務(wù)器將編譯請(qǐng)求發(fā)送到服務(wù)器 304、將經(jīng)編譯的代碼直接發(fā)送到客戶機(jī)裝置302。在另一特定實(shí)施例中,當(dāng)從應(yīng)用服務(wù)器 (未圖示)下載應(yīng)用程序時(shí),安裝程序(下載程序)316可將編譯信息提供給應(yīng)用服務(wù)器, 且應(yīng)用服務(wù)器可將編譯請(qǐng)求發(fā)送到服務(wù)器304。服務(wù)器304可將經(jīng)編譯的二進(jìn)制代碼傳回 到應(yīng)用服務(wù)器,應(yīng)用服務(wù)器可將應(yīng)用程序和二進(jìn)制代碼打包在一起,以發(fā)送到客戶機(jī)裝置 302。通過經(jīng)由應(yīng)用服務(wù)器將請(qǐng)求路由到服務(wù)器304,編譯和安裝可對(duì)客戶機(jī)裝置302透明。在特定實(shí)施例中,客戶機(jī)裝置302可為在線游戲裝置,且在應(yīng)用程序正在客戶機(jī) 裝置處運(yùn)行且相對(duì)于玩家交互而推進(jìn)的同時(shí),可發(fā)生應(yīng)用程序下載。當(dāng)正被下載的應(yīng)用程 序的對(duì)應(yīng)程序部分需要從源代碼編譯成可由客戶機(jī)裝置302處的一個(gè)或一個(gè)以上處理單 元執(zhí)行的機(jī)器代碼時(shí),下載可能經(jīng)由網(wǎng)絡(luò)306要求服務(wù)器304的編譯服務(wù)。在此情況下,下 載服務(wù)器或應(yīng)用服務(wù)器可直接向服務(wù)器304起始編譯請(qǐng)求,且在應(yīng)用服務(wù)器處接收來自服 務(wù)器304的經(jīng)編譯的代碼。應(yīng)用服務(wù)器可將經(jīng)編譯的代碼發(fā)送到客戶機(jī)裝置302以供執(zhí) 行。從應(yīng)用服務(wù)器下載的經(jīng)編譯的代碼可連同應(yīng)用程序可能需要的相關(guān)聯(lián)的其它應(yīng)用程序 代碼和數(shù)據(jù)或文件一起下載以供執(zhí)行。在特定說明性實(shí)施例中,服務(wù)器304允許軟件開發(fā) 者編碼特定應(yīng)用程序,而無需關(guān)注所述應(yīng)用程序?qū)⒃谏厦鎴?zhí)行的平臺(tái),因?yàn)榉?wù)器304經(jīng) 配置以確定請(qǐng)求客戶機(jī)的平臺(tái),且選擇適合將源代碼編譯成可由與請(qǐng)求客戶機(jī)相關(guān)聯(lián)的平 臺(tái)執(zhí)行的目標(biāo)代碼的編譯器。
      圖4說明利用基于服務(wù)器的編譯的系統(tǒng)400的另一特定實(shí)施例的框圖。系統(tǒng)400 包含經(jīng)由網(wǎng)絡(luò)406與服務(wù)器404通信的客戶機(jī)裝置402。在特定實(shí)施例中,網(wǎng)絡(luò)406可包 含無線網(wǎng)絡(luò)、有線網(wǎng)絡(luò)或其任何組合??蛻魴C(jī)裝置402包含可用于將數(shù)據(jù)組織在客戶機(jī)裝 置402的存儲(chǔ)器(未圖示)處的目錄和文件中的文件系統(tǒng)408??蛻魴C(jī)裝置402還包含一 個(gè)或一個(gè)以上應(yīng)用程序410、一驅(qū)動(dòng)程序412和一應(yīng)用處理單元414。在特定實(shí)施例中,應(yīng) 用處理單元414可包含圖形處理單元(GPU)、視頻處理器、相機(jī)或成像處理器、音頻處理器、 另一專用處理器或其任何組合。在特定實(shí)施例中,客戶機(jī)裝置402可包含CPU(未圖示)、 DSP(未圖示)或其任何組合。當(dāng)一個(gè)或一個(gè)以上應(yīng)用處理單元并非專用且不可有效地配置 于客戶機(jī)裝置中時(shí),CPU或DSP可執(zhí)行所述應(yīng)用處理單元的功能。在特定說明性實(shí)施例中, CPU、DSP和應(yīng)用處理單元414可以存取存儲(chǔ)器、所述一個(gè)或一個(gè)以上應(yīng)用程序410和驅(qū)動(dòng) 程序412。在特定實(shí)施例中,驅(qū)動(dòng)程序412可為可執(zhí)行以經(jīng)由網(wǎng)絡(luò)406與服務(wù)器404通信 以請(qǐng)求源代碼編譯、下載經(jīng)編譯的代碼或其任何組合的軟件應(yīng)用程序。服務(wù)器404包含前 端416、第一編譯器418和第二編譯器420。前端416可包含編譯器選擇邏輯,例如圖1中 所說明的編譯器選擇邏輯140。在特定說明性實(shí)施例中,當(dāng)應(yīng)用程序410請(qǐng)求經(jīng)編譯的源代碼時(shí),驅(qū)動(dòng)程序412起 始與服務(wù)器404的通信。服務(wù)器404可為經(jīng)配置以編譯著色器程序以渲染圖形效果且計(jì)算 與圖形元素相關(guān)聯(lián)的色彩的著色器編譯服務(wù)器。
      在特定說明性實(shí)施例中,驅(qū)動(dòng)程序412可接收來自服務(wù)器404的經(jīng)編譯的代碼,且 可使所述經(jīng)編譯的代碼受到應(yīng)用程序410的作用。應(yīng)用程序410可讀取經(jīng)編譯的結(jié)果,并 將所述經(jīng)編譯的結(jié)果存儲(chǔ)在本機(jī)文件系統(tǒng)408中。應(yīng)用程序410接著可在應(yīng)用程序410的 后續(xù)執(zhí)行期間,加載來自本機(jī)文件系統(tǒng)408的經(jīng)編譯的代碼。在說明性實(shí)施例中,可僅在應(yīng) 用程序410在客戶機(jī)裝置402處的第一次執(zhí)行期間,在服務(wù)器404處編譯源代碼。
      在另一特定說明性實(shí)施例中,驅(qū)動(dòng)程序412可不使經(jīng)編譯的代碼受到應(yīng)用程序 410的作用。每當(dāng)應(yīng)用程序410被執(zhí)行時(shí),應(yīng)用程序410可向驅(qū)動(dòng)程序412請(qǐng)求源代碼的編 譯。應(yīng)用程序410可在運(yùn)行時(shí)間請(qǐng)求經(jīng)編譯的代碼,仿佛驅(qū)動(dòng)程序適合于執(zhí)行運(yùn)行時(shí)間編 譯,而應(yīng)用程序410無需了解服務(wù)器404。在特定說明性實(shí)施例中,驅(qū)動(dòng)程序412可將編譯 請(qǐng)求直接發(fā)送到運(yùn)行中的服務(wù)器404,且可按需要高速緩存經(jīng)編譯的代碼。服務(wù)器404因此 可起到驅(qū)動(dòng)程序412的擴(kuò)展的作用。在等待接收來自服務(wù)器404的經(jīng)編譯的代碼的同時(shí), 驅(qū)動(dòng)程序412可繼續(xù)執(zhí)行可與編譯并行執(zhí)行的操作。在特定實(shí)施例中,應(yīng)用處理單元414可包含GPU,其在等待來自服務(wù)器404的經(jīng)編 譯的代碼的同時(shí),加載頂點(diǎn)和紋理著色數(shù)據(jù)??蓪?shí)現(xiàn)此實(shí)施方案所提供的一個(gè)特定優(yōu)點(diǎn),因 為通過使用驅(qū)動(dòng)程序412來透明地向服務(wù)器404請(qǐng)求和從服務(wù)器404接收經(jīng)編譯的代碼, 與循序地執(zhí)行頂點(diǎn)/紋理數(shù)據(jù)的編譯和加載的系統(tǒng)相比,可改進(jìn)用于應(yīng)用程序410的圖形 的加載速度。另外,例如當(dāng)游戲等級(jí)推進(jìn)時(shí),服務(wù)器404可用于提供按需編譯??蛻魴C(jī)裝置 402可僅針對(duì)特定游戲等級(jí)或特定細(xì)節(jié),經(jīng)由網(wǎng)絡(luò)406將編譯請(qǐng)求發(fā)送到服務(wù)器404。因此, 可節(jié)省時(shí)間和存儲(chǔ)。圖5說明概括標(biāo)明為520的便攜式通信裝置的示范性非限制實(shí)施例。如圖5中所 說明,便攜式通信裝置包含芯片上系統(tǒng)522,所述芯片上系統(tǒng)522包含CPU(未圖示)、數(shù)字 信號(hào)處理器524和圖形處理單元(GPU)526。在特定實(shí)施例中,CPU可經(jīng)配置以起始與編譯 器服務(wù)器(例如,圖1中所說明且本文中所描述的服務(wù)器120)的交互,以接收經(jīng)編譯的代 碼以供執(zhí)行。圖5還展示GPU 526耦合到數(shù)字信號(hào)處理器524和顯示器528。輸入裝置530 和存儲(chǔ)器532也耦合到數(shù)字信號(hào)處理器524。另外,編碼器/解碼器(CODEC) 534可耦合到 數(shù)字信號(hào)處理器524。揚(yáng)聲器536和麥克風(fēng)538可耦合到C0DEC534。圖5還指示無線控制器540可耦合到數(shù)字信號(hào)處理器524和無線天線542。在特 定實(shí)施例中,電源544耦合到芯片上系統(tǒng)522。此外,在特定實(shí)施例中,如圖5中所說明,顯 示器528、輸入裝置530、揚(yáng)聲器536、麥克風(fēng)538、無線天線542和電源544在芯片上系統(tǒng) 522外部。然而,顯示器528、輸入裝置530、揚(yáng)聲器536、麥克風(fēng)538、無線天線542和電源 544每一者均耦合到芯片上系統(tǒng)522的一組件。在特定實(shí)施例中,數(shù)字信號(hào)處理器524利用經(jīng)交錯(cuò)的多線程操作來處理與執(zhí)行便 攜式通信裝置520的各種組件所需的功能性和操作所必需的程序線程相關(guān)聯(lián)的指令。舉例 來說,當(dāng)經(jīng)由無線天線建立無線通信會(huì)話時(shí),用戶可對(duì)著麥克風(fēng)538說話??蓪⒈硎居脩舻?語音的電子信號(hào)發(fā)送到CODEC 534以進(jìn)行編碼。數(shù)字信號(hào)處理器524可為C0DEC534執(zhí)行數(shù) 據(jù)處理,以編碼來自麥克風(fēng)的電子信號(hào)。此外,可通過無線控制器540將經(jīng)由無線天線542 接收到的傳入信號(hào)發(fā)送到CODEC 534,以進(jìn)行解碼且將其發(fā)送到揚(yáng)聲器536。數(shù)字信號(hào)處理 器524還可在解碼經(jīng)由無線天線542接收到的信號(hào)時(shí)為CODEC 534執(zhí)行數(shù)據(jù)處理。此外,在無線通信會(huì)話之前、期間或之后,數(shù)字信號(hào)處理器524可處理從輸入裝置530接收到的輸入。舉例來說,在無線通信會(huì)話期間,用戶可能正在使用輸入裝置530和顯示器528,以經(jīng)由嵌入便攜式通信裝置520的存儲(chǔ)器532內(nèi)的萬維網(wǎng)瀏覽器在因特網(wǎng)上沖 浪(surf)。數(shù)字信號(hào)處理器524可使如本文所描述的輸入裝置530、GPU 526、顯示器528、 CODEC 534和無線控制器540所使用的各種程序線程交錯(cuò),以高效地控制便攜式通信裝置 520和其中的各種組件的操作。在一個(gè)或一個(gè)以上時(shí)鐘周期期間,同時(shí)執(zhí)行與所述各種程序 線程相關(guān)聯(lián)的指令中的許多指令。由此,實(shí)質(zhì)上減少因浪費(fèi)的時(shí)鐘周期而導(dǎo)致的功率和能 量消耗。參看圖6,展示蜂窩式電話的示范性非限制實(shí)施例,且將其概括標(biāo)明為620。如圖 所示,蜂窩式電話620包含芯片上系統(tǒng)622,芯片上系統(tǒng)622包含耦合在一起的數(shù)字基帶處 理器624和模擬基帶處理器626。蜂窩式電話620還包含CPU(未圖示)和圖形處理單元 (GPU)6280在特定說明性實(shí)施例中,CPU可經(jīng)配置以起始與編譯器服務(wù)器(例如圖1中所 說明且本文中所描述的服務(wù)器120)的交互,以接收經(jīng)編譯的代碼以供執(zhí)行。在特定實(shí)施 例中,數(shù)字基帶處理器624為數(shù)字信號(hào)處理器。如圖6中所指示,GPU 628和觸摸屏控制器 630耦合到數(shù)字基帶處理器624。又,在芯片上系統(tǒng)622外部的觸摸屏顯示器632耦合到 GPU 628和觸摸屏控制器630。圖6進(jìn)一步指示視頻編碼器634 (例如,逐行倒相(PAL)編碼器、循序傳送彩色與 存儲(chǔ)(sequential couleur a memoire,SECAM)編碼器,或美國(guó)國(guó)家電視系統(tǒng)委員會(huì)(NTSC) 編碼器)耦合到數(shù)字基帶處理器624。此外,視頻放大器636耦合到視頻編碼器634和觸 摸屏顯示器632。而且,視頻端口 638耦合到視頻放大器636。如圖6中所描繪,通用串行 總線(USB)控制器640耦合到數(shù)字基帶處理器624。而且,USB端口 642耦合到USB控制 器640。存儲(chǔ)器644和訂戶識(shí)別模塊(SIM)卡646也可耦合到數(shù)字基帶處理器624。此外, 如圖6中所示,數(shù)字相機(jī)648可耦合到數(shù)字基帶處理器624。在示范性實(shí)施例中,數(shù)字相機(jī) 648為電荷耦合裝置(CXD)相機(jī)或互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)相機(jī)。如圖6中進(jìn)一步說明,立體聲音頻CODEC 650可耦合到模擬基帶處理器626。此 夕卜,音頻放大器652可耦合到立體聲音頻CODEC 650。在示范性實(shí)施例中,第一立體聲揚(yáng)聲 器654和第二立體聲揚(yáng)聲器656耦合到音頻放大器652。圖6展示麥克風(fēng)放大器658也可 耦合到立體聲音頻CODEC 650。另外,麥克風(fēng)660可耦合到麥克風(fēng)放大器658。在特定實(shí)施 例中,調(diào)頻(FM)無線電調(diào)諧器662可耦合到立體聲音頻CODEC 650。而且,F(xiàn)M天線664耦 合到FM無線電調(diào)諧器662。此外,立體聲頭戴式耳機(jī)666可耦合到立體聲音頻CODEC 650。圖6進(jìn)一步指示射頻(RF)收發(fā)器668可耦合到模擬基帶處理器626。RF開關(guān)670 可耦合到RF收發(fā)器668和RF天線672。如圖6中所示,小鍵盤674可耦合到模擬基帶處 理器626。而且,具有麥克風(fēng)的單聲道頭戴耳機(jī)676可耦合到模擬基帶處理器626。此外, 振動(dòng)器裝置678可耦合到模擬基帶處理器626。圖6還展示電源680可耦合到芯片上系統(tǒng) 622。在特定實(shí)施例中,電源680為直流(DC)電源,其向蜂窩式電話620的需要電力的各個(gè) 組件提供電力。此外,在特定實(shí)施例中,電源為可再充電DC電池或來源于連接到AC電源的 交流(AC)到DC變換器的DC電源。在特定實(shí)施例中,如圖6中所描繪,觸摸屏顯示器632、視頻端口 638、USB端口 642、相機(jī)648、第一立體聲揚(yáng)聲器654、第二立體聲揚(yáng)聲器656、麥克風(fēng)、FM天線664、立體聲 頭戴式耳機(jī)666、RF開關(guān)670、RF天線672、小鍵盤674、單聲道頭戴耳機(jī)676、振動(dòng)器678和電源680在芯片上系統(tǒng)622的外部。此外,在特定實(shí)施例中,數(shù)字基帶處理器624可使用本 文所描述的經(jīng)交錯(cuò)的多線程操作,以便處理與同蜂窩式電話620相關(guān)聯(lián)的不同組件中的一 者或一者以上相關(guān)聯(lián)的各種程序線程。在特定實(shí)施例中,蜂窩式電話620可經(jīng)配置以經(jīng)由網(wǎng)絡(luò)向編譯器服務(wù)器起始不同 的編譯請(qǐng)求,以針對(duì)在裝置上運(yùn)行的應(yīng)用程序的不同程序組件請(qǐng)求不同的編譯。舉例來說, 對(duì)于被指派為在GPU 628處執(zhí)行的程序組件的計(jì)算任務(wù),可在編譯器服務(wù)器處選擇著色器 編譯器。作為另一實(shí)例,對(duì)于被指派給視頻CODEC、編碼器或解碼器(未圖示)的程序組件 的計(jì)算任務(wù),可在編譯器服務(wù)器處選擇對(duì)應(yīng)的視頻編譯器。作為又一實(shí)例,對(duì)于被指派給音 頻CODEC 650的程序組件的計(jì)算任務(wù),可在編譯器服務(wù)器處選擇對(duì)應(yīng)的音頻編譯器。作為 又一實(shí)例,對(duì)于被指派為在DSP 624處執(zhí)行的程序組件的計(jì)算任務(wù),可在編譯器服務(wù)器處 選擇DSP編譯器。經(jīng)編譯的代碼可在蜂窩式電話620處被接收,并被分配給一個(gè)或一個(gè)以 上對(duì)應(yīng)處理單元以供執(zhí)行。圖7為說明執(zhí)行基于服務(wù)器的編譯的方法的特定說明性實(shí)施例的流程圖。參看 圖7,基于服務(wù)器的編譯方法包含在具有多個(gè)編譯器的服務(wù)器處接收代碼編譯請(qǐng)求(702 處);以及將所述代碼編譯請(qǐng)求中的信息與存儲(chǔ)在服務(wù)器處的所述多個(gè)編譯器的列表進(jìn)行 比較,以確定服務(wù)器是否具有適合編譯與所述代碼編譯請(qǐng)求相關(guān)聯(lián)的源代碼的編譯器(704 處)。所述方法進(jìn)一步包含經(jīng)由網(wǎng) 絡(luò)將對(duì)所述代碼編譯請(qǐng)求的響應(yīng)從服務(wù)器傳送到客戶機(jī), 所述響應(yīng)包含對(duì)代碼編譯請(qǐng)求的接受或拒絕的指示(706處)。前進(jìn)到?jīng)Q策節(jié)點(diǎn)708,當(dāng)所述響應(yīng)指示拒絕時(shí),所述方法終止(716處)。返回708, 當(dāng)所述響應(yīng)指示代碼編譯請(qǐng)求的接受時(shí),所述方法繼續(xù)進(jìn)行到710,且包含在服務(wù)器處接收 待編譯的源代碼。進(jìn)行到712,所述方法還包含使用適合編譯源代碼的選定編譯器來編譯在 服務(wù)器處接收到的源代碼以產(chǎn)生經(jīng)編譯的代碼。所述方法進(jìn)一步包含經(jīng)由網(wǎng)絡(luò)將經(jīng)編譯的 代碼從服務(wù)器傳送到客戶機(jī)(714處)。所述方法結(jié)束(716處)。圖8是說明執(zhí)行基于服務(wù)器的編譯的方法的第二特定說明性實(shí)施例的流程圖。在 802處,所述方法包含在具有多個(gè)編譯器的服務(wù)器處接收一個(gè)或一個(gè)以上代碼編譯請(qǐng)求。前 進(jìn)到804,與服務(wù)器相關(guān)聯(lián)的邏輯從所述一個(gè)或一個(gè)以上代碼編譯請(qǐng)求中選擇一代碼編譯 請(qǐng)求。繼續(xù)進(jìn)行到806,所述邏輯將選定代碼編譯請(qǐng)求中的信息與存儲(chǔ)在服務(wù)器處的所述多 個(gè)編譯器的列表進(jìn)行比較,以確定服務(wù)器是否具有適合編譯與所述選定代碼編譯請(qǐng)求相關(guān) 聯(lián)的源代碼的編譯器。移到808,所述邏輯經(jīng)由網(wǎng)絡(luò)將對(duì)選定代碼編譯請(qǐng)求的響應(yīng)從服務(wù)器 傳送到請(qǐng)求客戶機(jī),所述響應(yīng)包含對(duì)選定編譯請(qǐng)求的接受或拒絕的指示。在決策節(jié)點(diǎn)810處,當(dāng)所述響應(yīng)指示接受時(shí),所述方法前進(jìn)到812,且在服務(wù)器處 接收待編譯的源代碼。繼續(xù)進(jìn)行到814,所述方法包含使用適合編譯所述源代碼的選定編譯 器來編譯在服務(wù)器處接收到的源代碼以產(chǎn)生經(jīng)編譯的代碼。前進(jìn)到816,所述方法包含經(jīng)由 網(wǎng)絡(luò)將經(jīng)編譯的代碼從服務(wù)器傳送到請(qǐng)求客戶機(jī)。繼續(xù)進(jìn)行到?jīng)Q策節(jié)點(diǎn)818,如果存在另一 源編譯請(qǐng)求,那么所述方法進(jìn)行到820,且從一個(gè)或一個(gè)以上代碼編譯請(qǐng)求選擇另一代碼編 譯請(qǐng)求(即,第二代碼編譯請(qǐng)求)。所述方法進(jìn)行到806,且將選定代碼編譯請(qǐng)求中的信息 與存儲(chǔ)在服務(wù)器處的多個(gè)編譯器的列表進(jìn)行比較,以確定服務(wù)器是否具有適合編譯與選定 代碼編譯請(qǐng)求相關(guān)聯(lián)的源代碼的編譯器。返回到810,如果所述響應(yīng)指示拒絕,那么所述方法前進(jìn)到?jīng)Q策節(jié)點(diǎn)818,其中所述方法確定是否存在另一源編譯請(qǐng)求。如果存在另一源編譯請(qǐng)求,那么所述方法進(jìn)行到 820。在818處,如果不存在其它源編譯請(qǐng)求,那么所述方法在822處終止。在特定實(shí)施例中,代碼編譯請(qǐng)求中的信息包含源代碼語言名稱、源代碼語言版本、 處理裝置名稱、處理裝置版本、驅(qū)動(dòng)程序名稱、驅(qū)動(dòng)程序版本、操作系統(tǒng)名稱、操作系統(tǒng)版本 或其任何組合。代碼編譯請(qǐng)求中的信息包含可由服務(wù)器用來識(shí)別特定編譯器并從編譯器庫(kù) 選擇特定編譯器的信息,其中所述選定編譯器是合適的且與將客戶機(jī)上執(zhí)行的代碼匹配。 此信息可包含關(guān)于特定處理裝置(例如,特定圖形處理裝置)的信息,其由處理裝置的賣主 提供。另外,處理裝置的賣主可提供存儲(chǔ)在服務(wù)器上的編譯器,使得服務(wù)器可從客戶機(jī)接收 賣主提供的信息,且可將接收到的信息與編譯器庫(kù)中先前存儲(chǔ)的信息進(jìn)行匹配,以選擇適 當(dāng)?shù)木幾g器供使用。所述方法可用于來自多個(gè)裝置的多個(gè)客戶機(jī),且第一和第二客戶機(jī)的 使用是出于說明性目的。在特定實(shí)施例中,客戶機(jī)是應(yīng)用程序、安裝程序或裝置驅(qū)動(dòng)程序。另外,客戶機(jī)可 加載或以其它方式安置在包含處理器的客戶機(jī)裝置上。在另一特定實(shí)施例中,源代碼可包 含著色語言,例如OpenGL著色語言、OpenGL頂點(diǎn)程序、OpenGL片段程序、OpenGLES著色 語言、英偉達(dá)Cg編程語言(nVidia Cg programming language)、微軟DirectX高級(jí)著色 語言或另一著色語言,且被選擇以供使用的基于服務(wù)器的編譯器是著色器編譯器。源代碼 可包含著色程序,例如可結(jié)合游戲應(yīng)用程序使用的Open GL glFx、微軟效應(yīng)(Microsoft Effect)或英偉達(dá)效應(yīng)CgFX (nVidia Effect CgFX)。服務(wù)器處的著色器編譯器可用以編譯 用于著色程序的源代碼,以產(chǎn)生可被傳送且接著可在客戶機(jī)(例如,包含圖形處理單元的 目標(biāo)便攜式裝置或最終用戶計(jì)算機(jī))處執(zhí)行的經(jīng)編譯的代碼。在特定實(shí)施例中,服務(wù)器包含充足的計(jì)算能力,且通信接口具有充足的頻寬,使得 源代碼的編譯響應(yīng)于編譯代碼請(qǐng)求而在實(shí)時(shí)或近實(shí)時(shí)基礎(chǔ)上執(zhí)行。圖9是說明客戶機(jī)所請(qǐng)求的編譯的方法的流程圖。參看圖9,請(qǐng)求基于服務(wù)器的 代碼編譯的方法包含將代碼編譯請(qǐng)求發(fā)送到具有多個(gè)編譯器的服務(wù)器(902處);以及從 服務(wù)器接收對(duì)所述代碼編譯請(qǐng)求的響應(yīng),所述響應(yīng)指示代碼編譯請(qǐng)求的接受或拒絕(904 處)。如果在決策節(jié)點(diǎn)906處檢測(cè)到代碼編譯請(qǐng)求的拒絕,那么所述方法在916處終止。否 貝U,在決策節(jié)點(diǎn)906處,在檢測(cè)到代碼編譯請(qǐng)求的接受后,所述方法包含將源代碼發(fā)送到 服務(wù)器(908處);以及在服務(wù)器已編譯源代碼之后,從服務(wù)器接收經(jīng)編譯的代碼(910處)。 所述方法進(jìn)一步包含將經(jīng)編譯的代碼存儲(chǔ)在處理器可讀存儲(chǔ)器中(912處);以及執(zhí)行經(jīng) 編譯的代碼(914處)。在特定實(shí)施例中,經(jīng)編譯的代碼可在應(yīng)用處理單元(例如,GPU)處 執(zhí)行。在另一實(shí)施例中,經(jīng)編譯的代碼可在數(shù)字信號(hào)處理器(DSP)或中央處理單元(CPU) 處執(zhí)行。所述方法在916處終止。在特定實(shí)施例中,源代碼為著色器程序代碼,且經(jīng)編譯的 代碼包含著色器對(duì)象代碼。所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,可將結(jié)合本文所揭示的實(shí)施例而描述的各種 說明性邏輯塊、配置、模塊、電路和算法步驟實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。為 了清楚地說明硬件與軟件的這種可互換性,上文已大體依據(jù)各種說明性組件、塊、配置、模 塊、電路和步驟的功能性描述了各種說明性組件、塊、配置、模塊、電路和步驟。將此功能性 實(shí)施為硬件還是軟件取決于特定應(yīng)用和強(qiáng)加在整個(gè)系統(tǒng)上的設(shè)計(jì)約束。所屬領(lǐng)域的技術(shù)人 員可針對(duì)每一特定應(yīng)用以不同方式實(shí)施所描述的功能性,但此類實(shí)施決策不應(yīng)被解譯為導(dǎo)致偏離本發(fā)明的范圍。結(jié)合本文中所揭示的實(shí)施例而描述的方法或算法的步驟可直接以硬件、以由處理 器執(zhí)行的軟件模塊或以兩者的組合來體現(xiàn)。軟件模塊可駐存在RAM存儲(chǔ)器、快閃存儲(chǔ)器、 ROM存儲(chǔ)器、PROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可裝卸盤、CD-ROM或 此項(xiàng)技術(shù)中已知的任何其它形式的存儲(chǔ)媒體中。示范性存儲(chǔ)媒體耦合到處理器,以使得處 理器可從存儲(chǔ)媒體讀取信息且將信息寫入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可與處理 器成一體式。處理器和存儲(chǔ)媒體可駐存在ASIC中。ASIC可駐存在計(jì)算裝置或用戶終端中。 在替代方案中,處理器和存儲(chǔ)媒體可作為離散組件駐存在計(jì)算裝置或用戶終端中。提供對(duì)所揭示實(shí)施例的先前描述以使所屬領(lǐng)域的任何技術(shù)人員能夠制作或使用 本發(fā)明。對(duì)這些實(shí)施例的各種修改對(duì)于所屬領(lǐng)域的技術(shù)人員來說將是顯而易見的,且本文 中所界定的一般原理可在不脫離本發(fā)明的精神或范圍的情況下應(yīng)用于其它實(shí)施例。因此, 本發(fā)明無意限于本文所示的實(shí)施例,而是將被賦予與如由權(quán)利要求書界定的原理和新穎特 征一致的最寬范圍。
      權(quán)利要求
      一種基于服務(wù)器的編譯方法,其包括在具有多個(gè)編譯器的服務(wù)器處接收代碼編譯請(qǐng)求;將所述代碼編譯請(qǐng)求中的信息與存儲(chǔ)在所述服務(wù)器處的所述多個(gè)編譯器的列表進(jìn)行比較,以確定所述服務(wù)器是否具有適合編譯與所述代碼編譯請(qǐng)求相關(guān)聯(lián)的源代碼的編譯器;經(jīng)由網(wǎng)絡(luò)將對(duì)所述代碼編譯請(qǐng)求的響應(yīng)從所述服務(wù)器傳送到客戶機(jī),所述響應(yīng)包含對(duì)所述代碼編譯請(qǐng)求的接受或拒絕的指示;當(dāng)所述響應(yīng)包含對(duì)所述代碼編譯請(qǐng)求的接受的指示時(shí)在所述服務(wù)器處接收待編譯的源代碼;使用適合編譯所述源代碼的選定編譯器來編譯所述在所述服務(wù)器處接收到的源代碼,以產(chǎn)生經(jīng)編譯的代碼;且經(jīng)由所述網(wǎng)絡(luò)將所述經(jīng)編譯的代碼從所述服務(wù)器傳送到所述客戶機(jī)。
      2.根據(jù)權(quán)利要求1所述的方法,其中所述信息包含源代碼語言名稱、源代碼語言版本、 處理裝置名稱、處理裝置版本、驅(qū)動(dòng)程序名稱、驅(qū)動(dòng)程序版本或其任何組合。
      3.根據(jù)權(quán)利要求1所述的方法,其中所述客戶機(jī)為應(yīng)用程序、安裝程序或裝置驅(qū)動(dòng)程 序中的一者,且其中所述客戶機(jī)安置在包含處理器的裝置上。
      4.根據(jù)權(quán)利要求1所述的方法,其中所述網(wǎng)絡(luò)為因特網(wǎng)協(xié)議網(wǎng)絡(luò)。
      5.根據(jù)權(quán)利要求1所述的方法,其中所述網(wǎng)絡(luò)為無線網(wǎng)絡(luò),且其中所述服務(wù)器安置在 無線基站內(nèi)。
      6.根據(jù)權(quán)利要求1所述的方法,其中從由以下各項(xiàng)組成的群組中選擇所述源代碼著 色語言代碼、用以翻譯為機(jī)器可執(zhí)行代碼的中間表示字節(jié)代碼,以及c語言代碼,且其中從 由以下各項(xiàng)組成的群組中選擇所述經(jīng)編譯的代碼圖形處理單元(GPU)可執(zhí)行代碼、數(shù)字 信號(hào)處理器(DSP)可執(zhí)行代碼,以及CPU可執(zhí)行代碼。
      7.根據(jù)權(quán)利要求1所述的方法,其中所述源代碼包含圖形程序,且其中所述客戶機(jī)為 安裝程序,其由分配器使用以結(jié)合將游戲應(yīng)用程序安裝到包含圖形處理單元的目標(biāo)裝置上 而請(qǐng)求對(duì)所述圖形程序的編譯。
      8.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于所述編譯代碼請(qǐng)求而在實(shí)時(shí)或近實(shí)時(shí)基礎(chǔ) 上執(zhí)行所述源代碼的所述編譯。
      9.根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包括在所述服務(wù)器處接收來自第二客戶機(jī)的第二代碼編譯請(qǐng)求;將所述第二代碼編譯請(qǐng)求中的信息與存儲(chǔ)在所述服務(wù)器處的所述多個(gè)編譯器的所述 列表進(jìn)行比較,以確定所述服務(wù)器是否具有適合編譯與所述第二代碼編譯請(qǐng)求相關(guān)聯(lián)的源 代碼的編譯器;經(jīng)由所述網(wǎng)絡(luò)將對(duì)所述第二代碼編譯請(qǐng)求的第二響應(yīng)從所述服務(wù)器傳送到所述第二 客戶機(jī),所述第二響應(yīng)包含對(duì)所述第二代碼編譯請(qǐng)求的接受或拒絕的指示;當(dāng)所述第二響應(yīng)包含對(duì)所述第二代碼編譯請(qǐng)求的接受的指示時(shí)在所述服務(wù)器處接收待編譯的第二源代碼;使用適合編譯所述第二源代碼的第二選定編譯器來編譯所述在所述服務(wù)器處接收到 的第二源代碼,以產(chǎn)生第二經(jīng)編譯的代碼;以及經(jīng)由所述網(wǎng)絡(luò)將所述第二經(jīng)編譯的代碼從所述服務(wù)器傳送到所述第二客戶機(jī)。
      10.一種服務(wù)器,其包括 到數(shù)據(jù)通信網(wǎng)絡(luò)的接口;編譯器庫(kù),其存儲(chǔ)多個(gè)不同編譯器;以及編譯器選擇邏輯,其響應(yīng)所述接口處所接收到的數(shù)據(jù),且包含用以基于對(duì)所述所接收 到的數(shù)據(jù)的評(píng)估來選擇所述多個(gè)不同編譯器中的一個(gè)編譯器的邏輯,其中由所述多個(gè)不同編譯器中的所述選定編譯器產(chǎn)生的經(jīng)編譯的輸出數(shù)據(jù)經(jīng)由所述 數(shù)據(jù)通信網(wǎng)絡(luò)被傳送到客戶機(jī)裝置。
      11.根據(jù)權(quán)利要求10所述的服務(wù)器,其中所述所接收到的數(shù)據(jù)包括來自客戶機(jī)裝置的 編譯請(qǐng)求,所述編譯請(qǐng)求包含與所述客戶機(jī)裝置相關(guān)聯(lián)的信息。
      12.根據(jù)權(quán)利要求10所述的服務(wù)器,其中所述多個(gè)不同編譯器中的所述選定編譯器接 收源代碼數(shù)據(jù),且編譯所述源代碼數(shù)據(jù)以產(chǎn)生經(jīng)編譯的輸出數(shù)據(jù)。
      13.根據(jù)權(quán)利要求12所述的服務(wù)器,其中所述客戶機(jī)裝置包含用以執(zhí)行所述經(jīng)編譯的 輸出數(shù)據(jù)的圖形處理單元。
      14.根據(jù)權(quán)利要求13所述的服務(wù)器,其中所述通信網(wǎng)路為無線網(wǎng)絡(luò),且其中所述客戶 機(jī)裝置為無線通信裝置。
      15.一種請(qǐng)求基于服務(wù)器的代碼編譯的方法,所述方法包括 將代碼編譯請(qǐng)求發(fā)送到具有多個(gè)編譯器的服務(wù)器;從所述服務(wù)器接收對(duì)所述代碼編譯請(qǐng)求的響應(yīng),所述響應(yīng)指示所述代碼編譯請(qǐng)求的接 受或拒絕;在檢測(cè)到所述代碼編譯請(qǐng)求的接受后,將源代碼發(fā)送到所述服務(wù)器,所述源代碼將在 所述服務(wù)器處編譯;以及在所述服務(wù)器已編譯所述源代碼之后,接收來自所述服務(wù)器的經(jīng)編譯的代碼。
      16.根據(jù)權(quán)利要求15所述的方法,其進(jìn)一步包括將所述經(jīng)編譯的代碼存儲(chǔ)在處理器可 讀存儲(chǔ)器中。
      17.根據(jù)權(quán)利要求16所述的方法,其進(jìn)一步包括在圖形處理裝置處執(zhí)行所述經(jīng)編譯的 代碼,其中所述源代碼包括著色器程序代碼,且其中所述經(jīng)編譯的代碼包括著色器對(duì)象代碼。
      18.一種計(jì)算裝置,其包括 處理器;可由所述處理器存取的存儲(chǔ)器;以及 通信接口,其經(jīng)配置以將代碼編譯請(qǐng)求發(fā)送到具有多個(gè)編譯器的服務(wù)器;從所述服務(wù)器接收對(duì)所述代碼編譯請(qǐng)求的響應(yīng),所述響應(yīng)指示所述代碼編譯請(qǐng)求的接 受或拒絕;將源代碼發(fā)送到所述服務(wù)器,所述源代碼將在所述服務(wù)器處編譯;且 接收來自所述服務(wù)器的經(jīng)編譯的代碼。
      19.根據(jù)權(quán)利要求18所述的計(jì)算裝置,其中從所述服務(wù)器接收到的所述經(jīng)編譯的代碼 存儲(chǔ)在所述存儲(chǔ)器中,且由所述處理器執(zhí)行。
      20.根據(jù)權(quán)利要求18所述的計(jì)算裝置,其中所述存儲(chǔ)器包含應(yīng)用程序,且包含裝置驅(qū) 動(dòng)程序。
      21.根據(jù)權(quán)利要求20所述的計(jì)算裝置,其中所述應(yīng)用程序包含用以起始經(jīng)由所述通信 接口將所述代碼編譯請(qǐng)求發(fā)送到所述服務(wù)器的邏輯。
      22.根據(jù)權(quán)利要求21所述的計(jì)算裝置,其中所述處理器為圖形處理單元、視頻處理單 元、數(shù)字信號(hào)處理器或相機(jī)圖像處理單元中的一者,且其中與所述處理器相關(guān)聯(lián)且存儲(chǔ)在 所述服務(wù)器處的編譯器由所述處理器的賣主提供。
      23.根據(jù)權(quán)利要求18所述的計(jì)算裝置,其進(jìn)一步包括存儲(chǔ)在所述存儲(chǔ)器中的文件系統(tǒng)。
      24.根據(jù)權(quán)利要求18所述的計(jì)算裝置,其進(jìn)一步包括響應(yīng)所述處理器以顯示圖形和數(shù) 據(jù)的顯示裝置。
      25.根據(jù)權(quán)利要求18所述的計(jì)算裝置,其進(jìn)一步包括 麥克風(fēng),其耦合到所述處理器且適合于接收音頻輸入;以及 揚(yáng)聲器,其耦合到所述處理器且適合于產(chǎn)生音頻輸出。
      全文摘要
      本發(fā)明揭示一種服務(wù)器,其包含到數(shù)據(jù)通信網(wǎng)絡(luò)的接口、存儲(chǔ)多個(gè)不同編譯器的編譯器庫(kù),以及響應(yīng)所述接口處所接收到的數(shù)據(jù)且包含邏輯的編譯器選擇邏輯。所述編譯器選擇邏輯經(jīng)配置以基于對(duì)所述所接收到的數(shù)據(jù)的評(píng)估來選擇所述多個(gè)不同編譯器中的一個(gè)編譯器。所述選定編譯器產(chǎn)生經(jīng)編譯的輸出數(shù)據(jù),且所述經(jīng)編譯的輸出數(shù)據(jù)經(jīng)由所述數(shù)據(jù)通信網(wǎng)絡(luò)被傳送到客戶機(jī)。
      文檔編號(hào)G06F9/45GK101836188SQ200880113180
      公開日2010年9月15日 申請(qǐng)日期2008年10月24日 優(yōu)先權(quán)日2007年10月26日
      發(fā)明者于春, 杜云, 焦國(guó)方, 陳令軍 申請(qǐng)人:高通股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1