新四季網

在運行時處綁定可執行代碼的製作方法

2023-06-10 12:18:56

在運行時處綁定可執行代碼的製作方法
【專利摘要】本發明涉及用於在運行時處綁定可執行代碼的方法、系統和電腦程式產品。本發明的實施例包括對代碼指定方面的後綁定以改善執行性能。運行時基於運行時信息動態地綁定較低級代碼以優化較高級算法的執行。對執行性能有必要(例如,較高)影響的較高級算法的方面可以是後綁定的目標。通過使用對具有必要執行性能影響的方面的後綁定可以用最小的運行時間成本實現改善的性能。
【專利說明】在運行時處綁定可執行代碼
[0001]背景
[0002]1.背景和相關技術
[0003]計算機系統及相關技術影響社會的許多方面。的確,計算機系統處理信息的能力已轉變了人們生活和工作的方式。現在,計算機系統通常執行在計算機系統出現以前手動執行的許多任務(例如,文字處理、日程安排、帳目管理等)。最近,計算機系統彼此耦合併耦合到其他電子設備以形成計算機系統及其他電子設備可在其上傳輸電子數據的有線和無線計算機網絡。因此,許多計算任務的執行分布在多個不同的計算機系統和/或多個不同的計算環境中。
[0004]一種用於生成可執行代碼的機制是編譯。在編譯時,編譯器接收以較高級程式語言編寫的算法的源碼級描述。編譯器的任務在於從源碼級描述生成用於目標環境的可執行代碼。在運行時處,可執行代碼在目標環境中運行。
[0005]通常,在編譯時僅有與算法輸入有關的部分粗略信息可用。由此,編譯器無法作出與算法輸入的許多方面(諸如,舉例而言,輸入的大小)有關的任何假設。如此,編譯器通常生成能夠在運行時處處理所有可能輸入的可執行代碼。遺憾地是,所編譯的可執行代碼的生成是以非最優的性能為代價的。例如,在執行期間,一些執行的指令對於指定輸入而言可能是冗餘的,並且可能消耗比處理特定輸入所需的更多的系統資源(諸如存儲器和寄存器)。
[0006]用於執行代碼的另一機制是解釋。解釋器接收以較高級程式語言編寫的算法並且解釋該算法以供直接執行。經解釋的語言可在某種程度上處理經編譯的代碼的非最優性能。但是,每次運行都重新解釋該算法的影響常常會超過生成更優化代碼的好處。
[0007]即時(JIT)編譯技術包括從編譯器輸出的中間代碼到目標機器可執行代碼的運行時轉換。作為此運行時轉換(或即時編譯)的一部分,可以使用各種優化來生成並執行針對執行期間觀察到的特定輸入的更高效的執行代碼。然而,基於JIT的系統在運行時編譯全部代碼,從而會付出較大的運行時開銷或轉換。
[0008]簡要概沭
[0009]本發明涉及用於在運行時綁定可執行代碼的方法、系統和電腦程式產品。本發明的實施例包括供編譯器和運行時進行互操作以基於運行時信息來實現改善的代碼性能的各種機制。較高級原始碼的語句和表達式被訪問。檢測到較高級原始碼包括至少一個指定方面,針對該方面,相應的代表性較低級指令的執行效率基於執行期間接收到的輸入數據的配置變化到必要的程度。
[0010]所訪問的較高級原始碼的語句和表達式被編譯成較低級代碼的代表性較低級指令。編譯包括為該至少一個指定方面編譯多個不同的代表性較低級指令。多個不同的代表性較低級指令中的每一個被配置成正確地實現該至少一個指定方面的意圖。多個不同的代表性較低級指令中的至少一個代表性較低級指令基於接收到的輸入數據的不同配置針對執行效率被優化。
[0011]較低級指令的執行在運行時處被配置。分析將被提供到較高級原始碼的至少一個指定方面的輸入數據的配置。確定為執行而基於所提供的輸入數據的配置來優化選自多個不同的代表性較低級指令的指定的代表性較低級指令。指定的較低級指令被綁定到可執行代碼以實現較高級原始碼的至少一個指定方面的意圖。
[0012]提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的一些概念。本概述不旨在標識出所要求保護的主題的關鍵特徵或必要特徵,也不旨在用於幫助確定所要求保護的主題的範圍。
[0013]在隨後的描述中闡述,並且部分地將從本說明書中顯而易見,或可以通過本發明的實施來獲知。本發明的特徵和優點可通過在所附權利要求書中特別指出的工具和組合來實現和獲得。本發明的這些以及其他特徵、優點和特徵將根據以下描述和所附權利要求而變得更顯而易見,或者可通過如此後闡述的對本發明的實踐而獲知。
[0014]附圖簡沭
[0015]為了描述可以獲得本發明的上文所列舉的及其他優點和特徵的方式,將通過參考附圖中所示的本發明的各具體實施例來呈現上文簡要描述的本發明的更具體的描述。可以理解,這些附圖僅描述本發明的典型實施例,從而不被認為是對其範圍的限制,本發明將通過使用附圖用附加特徵和細節來描述和說明,在附圖中:
[0016]圖1A示出了促成在運行時處綁定可執行代碼的示例計算機架構。
[0017]圖1B示出使用較低級代碼的多個版本來在運行時處綁定可執行代碼。
[0018]圖1C示出使用抽象接口來在運行時處綁定可執行代碼。
[0019]圖2示出了用於在運行時處綁定可執行代碼的示例方法的流程圖。
[0020]詳細描沭
[0021]本發明涉及用於在運行時綁定可執行代碼的方法、系統和電腦程式產品。本發明的實施例包括供編譯器和運行時進行互操作以基於運行時信息來實現改善的代碼性能的各種機制。較高級原始碼的語句和表達式被訪問。檢測到較高級原始碼包括至少一個指定方面,針對該指定方面,相應的代表性較低級指令的執行效率基於執行期間接收到的輸入數據的配置變化到必要的程度。
[0022]所訪問的較高級原始碼的語句和表達式被編譯成較低級代碼的代表性較低級指令。編譯包括為該至少一個指定方面編譯多個不同的代表性較低級指令。多個不同的代表性較低級指令中的每一個被配置以正確地實現該至少一個指定方面的意圖。多個不同的代表性較低級指令中的至少一個代表性較低級指令基於接收到的輸入數據的不同配置針對執行效率被優化。
[0023]較低級指令的執行在運行時處被配置。分析將被提供到較高級原始碼的至少一個指定方面的輸入數據的配置。確定為執行而基於所提供的輸入數據的配置來優化選自多個不同的代表性較低級指令的指定的代表性較低級指令。指定的較低級指令被綁定到可執行代碼以實現較高級原始碼的至少一個指定方面的意圖。
[0024]本發明的各實施例可包括或利用專用或通用計算機,該專用或通用計算機包括諸如舉例而言一個或多個處理器和系統存儲器的計算機硬體,如以下更詳細討論的。本發明範圍內的各實施例還包括用於承載或存儲計算機可執行指令和/或數據結構的物理和其他計算機可讀介質。這樣的計算機可讀介質可以是可由通用或專用計算機系統訪問的任何可用介質。存儲計算機可執行指令的計算機可讀介質是計算機存儲介質(設備)。承載計算機可執行指令的計算機可讀介質是傳輸介質。由此,作為示例而非限制,本發明的各實施例可包括至少兩種顯著不同的計算機可讀介質:計算機存儲介質(設備)和傳輸介質。
[0025]計算機存儲介質(設備)包括RAM、ROM、EEPROM、CD-ROM、固態驅動器(SSD )(如基於RAM)、快閃記憶體、相變存儲器(PCM)、其他類型的存儲器、其他光碟存儲、磁碟存儲或其他磁存儲設備、或可用於存儲計算機可執行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的任何其他介質。
[0026]「網絡」被定義為允許在計算機系統和/或模塊和/或其他電子設備之間傳輸電子數據的一個或多個數據鏈路。當信息通過網絡或另一個通信連接(硬連線、無線、或者硬連線或無線的組合)傳輸或提供給計算機時,該計算機將該連接適當地視為傳輸介質。傳輸介質可包括可用於攜帶計算機可執行指令或數據結構形式的所需程序代碼裝置且可由通用或專用計算機訪問的網絡和/或數據鏈路。上述的組合也應被包括在計算機可讀介質的範圍內。
[0027]此外,在到達各種計算機系統組件之後,計算機可執行指令或數據結構形式的程序代碼裝置可從傳輸介質自動傳輸到計算機存儲介質(設備)(或反之亦然)。例如,通過網絡或數據連結接收到的計算機可執行指令或數據結構可被緩存在網絡接口模塊(例如,「NIC」)內的RAM中,然後最終被傳輸到計算機系統RAM和/或計算機系統處的較不易失性的計算機存儲介質(設備)。因而,應當理解,計算機存儲介質(設備)可被包括在還利用(甚至主要利用)傳輸介質的計算機系統組件中。
[0028]計算機可執行指令例如包括,當在處理器處執行時使通用計算機、專用計算機、或專用處理設備執行某一功能或某組功能的指令和數據。計算機可執行指令例如可以是二進位代碼、諸如彙編語言之類的中間格式指令或者甚至是原始碼。儘管用結構特徵和/或方法動作專用的語言描述了本主題,但可以理解,所附權利要求書中定義的主題不必限於上述特徵或動作。更具體而言,上述特徵和動作是作為實現權利要求的示例形式而公開的。
[0029]本領域的技術人員將理解,本發明可以在具有許多類型的計算機系統配置的網絡計算環境中實踐,這些計算機系統配置包括具有以下一個或多個的組合:個人計算機、臺式計算機、膝上型計算機、消息處理器、手持式設備、多處理器系統(包括有一個或多個中央處理單元(「CPUs」)以及例如圖形處理單元(「GPUs」)或加速器的一個或多個協作處理器的系統)、基於微處理器的或可編程消費電子設備、網絡PC、小型計算機、大型計算機、行動電話、PDA、尋呼機、路由器、交換機等等。本發明也可在其中通過網絡連結(或者通過硬連線數據鏈路、無線數據鏈路,或者通過硬連線和無線數據鏈路的組合)的本地和遠程計算機系統兩者都執行任務的分布式系統環境中實施。在分布式系統環境中,程序模塊可以位於本地和遠程存儲器存儲設備二者中。
[0030]本發明的實施例包括對指定代碼方面的後綁定以改善執行性能。運行時基於運行時信息動態地綁定較低級代碼以優化較高級算法的執行。對執行性能有必要(例如,較高)影響的較高級算法的各方面可以是後綁定的目標。通過對對執行性能有必要影響的各方面使用後綁定可以用最小的運行時間成本實現改善的性能。
[0031]可以使用各種各樣的動態綁定技術。在一些實施例中,為較高級方面生成可執行代碼的多個不同版本。這多個不同版本中的每一個包括正確地實現該較高級方面的較低級代碼。為執行而基於與該較高級方面相對應的輸入數據的不同配置來優化多個不同版本中的每一個。在運行時,基於接收到的輸入數據選擇較低級代碼的經優化版本。
[0032]在其他實施例中,生成用於較高級方面的抽象接口。在運行時處,較高級方面經優化的具體實現是基於接收到的輸入數據被綁定至抽象接口的。
[0033]多種多樣的不同的較高級方面可能對可執行代碼性能具有必要影響,包括但不限於:緩衝器混疊和邏輯線程索引映射。本發明的各實施例可用於通過在運行時處基於運行時輸入數據綁定可執行代碼,來優化這些以及其他較高級方面的執行。
[0034]圖1示出了促成在運行時處綁定可執行代碼的示例計算機架構100。參考圖1,計算機架構100包括編譯器109和運行時103。所描繪的組件中的每一個通過系統總線(或作為系統總線的一部分)和/或諸如例如區域網(「LAN」)、廣域網(「WAN」)以及甚至網際網路等網絡(或作為網絡的一部分)彼此連接。因此,所描繪的組件中的每一個以及任何其他連接的計算機系統和它們的組件都能夠創建消息相關數據並通過系統總線和/或網絡交換消息相關數據(例如,網際協議(「IP」)數據報和利用IP數據報的其他更高層協議,諸如傳輸控制協議(「TCP,,)、超文本傳輸協議(「HTTP」)、簡單郵件傳輸協議(「SMTP,,)等)。
[0035]如所描繪的,編譯器109包括代碼分析器101 (例如,編譯器前端)和代碼生成器102 (例如,編譯器後端)。代碼分析器101被配置成接收較高級代碼(例如,用C++,擴展用於並行環境的C++,Visual Basic等等編寫)的語句和表達式。代碼分析器101可以分析較高級代碼的語句和表達式以標識對代表性較低級指令的性能有必要影響的方面。例如,代碼分析器101可確定緩衝器使用(其可被混疊或不被混疊)對性能有必要影響,或確定物理到邏輯線程映射(其可為直接或間接)對性能有必要影響。基於運行時數據輸入,表示標識出的方面的經優化的較低級代碼可以變化。如此,代碼分析器101向代碼生成器102指示標識出的任何方面。
[0036]代碼生成器102被配置成接收較高級代碼的語句和表達式以及對代表性較低級指令的性能有必要影響的標識出的方面。代碼生成器102可以從語句和表達式以及標識出的方面生成正確地實現必要方面的多個不同的較低級指令(例如,DirectX/高級著色器語言(「HLSL」)字節碼)。可以針對接收到的運行時數據的指定配置而優化多個不同的較低級指令中的每一個。例如,當使用緩衝器時,可以針對非混疊的緩衝器訪問而優化較低級代碼的一個版本,而較低級代碼的另一個版本對於在輸入/輸出緩衝器間實現通用混疊情景而言可以是非最優的。類似地,當使用物理到邏輯線程映射時,可以針對直接映射而優化較低級代碼的一個版本,而較低級代碼的另一個版本可被提供來處理更通用但效率更低的間接映射情況。
[0037]一般而言,運行時103被配置成執行較低級代碼來實現較高級代碼的語句和表達式的意圖。如所描述的,運行時103包括輸入分析器104。分析器104被配置成確定要被提供來標識方面的輸入數據的配置。輸入分析器104可確定為運行時103中的執行而基於輸入數據的配置優化指定的較低級指令。例如,可以為混疊或非混疊的緩衝器訪問或者直接或間接的物理到邏輯線程映射選擇代表性較低級代碼。運行時103可以將指定的較低級指令綁定到可執行代碼以供在運行時103中執行。
[0038]圖2示出了用於在運行時處綁定可執行代碼的示例方法200的流程圖。方法200將參考計算機架構100的組件和數據來描述。
[0039]方法200包括訪問較高級原始碼的語句和表達式的動作(動作201 )。例如,代碼分析器101可以訪問較高級代碼111 (例如,擴展用於並行環境的C++)的語句和表達式112。方法200包括檢測較高級原始碼包括至少一個指定方面的動作,針對該指定方面,相應的代表性較低級指令的執行效率基於執行期間接收到的輸入數據的配置變化到必要的程度(動作202)。例如,代碼分析器101可以檢測到代碼方面114基於對代碼方面114的輸入的配置影響代表性較低級指令的執行效率到必要程度。
[0040]代碼分析器101向代碼生成器102指示代碼方面114。編譯器接收代碼方面114的指示。代碼生成器102還訪問較高級代碼111。
[0041]方法200包括把所訪問的較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令的動作(動作203)。例如,代碼生成器102把語句和表達式112編譯成較低級代碼(例如,DirectX/高級著色器語言(「HLSL」)字節碼)的代表性指令。
[0042]動作203包括針對至少一個指定方面編譯多個不同的代表性較低級指令的動作,多個不同的代表性較低級指令中的每一個被配置成正確地實現該至少一個指定方面的意圖,多個不同的代表性較低級指令中的至少一個基於接收到的輸入數據的不同配置針對執行效率被進行優化(動作204)。例如,代碼生成器102可以把語句表達式112編譯成代表性指令122A和122B。代表性指令122A和122B中的每一個被配置成針對不同的輸入數據配置正確地實現代碼方面114的意圖。針對執行效率基於用於代碼方面114的不同輸入配置來優化代表性指令122A和122B中的每一個。
[0043]在一些實施例中,生成較低級指令的一個或多個經優化的版本和更加通用的「一攬子(「catch all」)」版本。針對一特定情形(諸如,舉例而言,輸入的指定配置)優化一個或多個經優化的版本中的每一個。一攬子版本處理所有其他情況。由此,該一個或多個經優化的版本以及該一攬子版本可以共同地處理來自原始算法的任何可能的情況。方法200包括配置較低級指令在運行時處的執行的動作(動作205)。例如,運行時103配置可執行代碼106在運行時處的執行。動作205包括分析將被提供到較高級原始碼的至少一個指定方面的輸入數據的配置的動作(動作206)。例如,輸入分析器104可以分析(將要被提供給代碼方面114的)輸入數據107。
[0044]動作205包括確定為執行而基於所提供的輸入數據的配置來優化選自多個不同的代表性較低級指令的指定的代表性較低級指令的動作(動作207)。例如,輸入分析器104(或運行時103中的一些其他模塊)可以確定代表性指令122B基於輸入數據107的配置針對執行被優化。
[0045]動作205包括把指定的較低級指令綁定到可執行代碼以實現較高級原始碼的至少一個指定方面的意圖的動作(動作208)。
[0046]例如,運行時103可以將代表性代碼122B綁定108到可執行代碼106以實現代碼方面114的意圖。
[0047]可以用各種方法生成多個不同的代表性較低級指令。在運行時綁定代表性較低級指令也可以改變。轉至圖1B,圖1B示出使用較低級代碼的多個版本來在運行時綁定可執行代碼。如圖1B所描述的,代碼生成器102生成包括代表性指令122A的較低級代碼121A和包括代表性指令122B的較低級代碼121B。在運行時,基於對輸入數據107的分析,運行時103可以將較低級代碼121B作為可執行代碼106來啟動109。
[0048]使用較低級代碼的多個版本的實施例包括從擴展用於並行環境的C++代碼生成多個HLSL著色器。例如,在緩衝器堆疊的情況下,代碼生成器102可以生成假設在運行時不存在堆疊(且沒有針對堆疊優化)的一個著色器版本(例如,代表性指令122A),以及處理緩衝器的堆疊的另一個著色器版本(例如代表性指令122B)。在運行時,運行時103檢查到內核的緩衝器參數間的堆疊並且調用合適的著色器版本。
[0049]在線程映射的情況下,代碼生成器102可以生成假設存在直接線程映射(且針對直接線程映射優化)的一個著色器版本,以及處理間接線程映射的另一個著色器。在運行時,運行時103檢查直接/間接的線程映射並且調用合適的著色器版本。
[0050]轉至圖1C,圖1C示出使用抽象接口在運行時綁定可執行代碼。如圖1C所描述的,代碼生成器102生成包括抽象接口 124的較低級代碼121C。代表性指令122A和122B是抽象接口 124的具體實現。代表性指令122A和122B可以自先前的編譯起就存在或者同抽象接口 124—同生成。代表性指令122A和122B表示可動態地連結以在運行時處實現抽象接口 124的較低級代碼的不同部分。在運行時,運行時103把較低級代碼121C作為可執行代碼106來啟動112。基於對輸入數據107的分析,運行時103可以將代表性指令122B綁定到可執行代碼106以提供抽象接口 124的具體實現。
[0051]使用抽象接口的實施例包括DirectX/HLSL定義可以在HLSL代碼中使用的抽象接口。把接口綁定到真實代碼可以延遲到運行時。例如,在物理到邏輯線程索引映射上下文的情況下,代碼生成器102可生成利用抽象接口把物理線程IDs映射到C++邏輯線程IDs的HLSL字節碼。基於在運行時處指定的真實計算機域,把抽象接口綁定到直接映射代碼(例如,代表性指令122A)或間接映射代碼(例如,代表性指令122B)
[0052]在緩衝器混疊的情況下,代碼生成器102可以生成利用抽象接口在運行時處理緩衝器的HLSL字節碼。抽象接口基於是否在運行時檢測到內核的緩衝器參數間的混疊而被綁定到使用經混疊的緩衝器的代碼或使用非混疊的緩衝器的代碼。
[0053]進一步的實施例包括針對用戶代碼中存在的依賴於硬體的特徵生成多個著色器。一個著色器可以利用硬體特徵而另一個著色器可以使用較低效率的後退實現。在運行時,基於在運行時處確定的目標處理器的硬體能力選擇合適的著色器以供執行。
[0054]附加實施例包括生成多個著色器,每個著色器改變對代碼生成的優化選擇,並相應地改變資源要求。在運行時處,可以基於目標硬體上的資源可用性選擇合適的著色器以供執行。當硬體資源(諸如舉例而言寄存器的數目)跨硬體變化時,這些附加的實施例可以是有用的。
[0055]還可以生成著色器的多個版本以處理不同的運行時配置,諸如舉例而言,執行硬體的能力。例如,實施例包括為不同的目標處理器生成多個著色器(可執行代碼的版本)。在運行時處,基於為運行選擇的目標處理器來選擇合適的著色器以供執行。
[0056]用於處理不同運行時配置的其他實施例包括生成多個著色器,這些著色器中的一些包括以較慢的執行為代價來輔助剖析/調試的工具植入代碼(instrumentation code)。這為運行工具植入的代碼或非工具植入的代碼提供了運行時選擇,而無需重新編譯。在運行時處,可以基於是否選擇剖析/調試來選擇合適的著色器。
[0057]抽象接口可以與多個代碼版本結合使用。一些輸入接著由不同的接口實現來服務,而其他輸入由不採用接口或採用不同接口的完全不同的代碼版本來服務。
[0058]本發明可具體化為其他具體形式而不背離其精神或本質特徵。所描述的實施例在所有方面都應被認為僅是說明性而非限制性的。因此,本發明的範圍由所附權利要求書而非前述描述指示。落入權利要求書的等效方案的含義和範圍內的所有改變應被權利要求書的範圍所涵蓋。
【權利要求】
1.一種在計算機系統處用於在運行時處綁定代碼以改善性能的方法,所述計算機系統包括處理器和系統存儲器,所述計算機系統還包括編譯器和運行時,所述編譯器被配置成把較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令,所述運行時被配置成執行可執行代碼,所述方法包括: 訪問較高級原始碼的語句和表達式的動作; 檢測到較高級原始碼包括至少一個指定方面的動作,針對所述指定方面,相應的代表性較低級指令的執行效率基於執行期間接收到的輸入數據的配置變化到必要的程度; 把所訪問的較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令的動作,包括: 針對所述至少一個指定方面編譯多個不同的代表性較低級指令的動作,所述多個不同的代表性較低級指令中的每一個被配置成正確地實現所述至少一個指定方面的意圖,所述多個不同的代表性較低級指令中的至少一個基於接收到的輸入數據的不同配置針對執行效率被進行優化; 配置所述較低級指令在運行時的執行的動作,包括: 分析將被提供到所述較高級原始碼的所述至少一個指定方面的輸入數據的配置的動作; 確定為執行而基於所提供的輸入數據的配置來優化選自多個不同的代表性較低級指令的指定的代表性較低級指令的動作;以及 把所述指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個指定方面的意圖的動作 。
2.如權利要求1所述的方法,其特徵在於,針對所述至少一個指定方面編譯多個不同的代表性較低級指令的動作包括: 編譯代表性較低級指令的一個版本的動作,為了在運行時處與不使用緩衝器混疊的輸入數據一起使用而優化所述代表性較低級指令的一個版本;以及 編譯代表性較低級指令的另一個版本的動作,所述代表性較低級指令的另一個版本用於在運行時處與使用緩衝器混疊的輸入數據一起使用。
3.如權利要求2所述的方法,其特徵在於,其中分析將被提供到所述較高級原始碼的所述至少一個指定方面的輸入數據的配置的動作包括確定所述輸入數據不使用緩衝器混疊的動作;並且 其中把所述指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個指定方面的意圖的動作包括在運行時處把所述代表性較低級指令的一個版本綁定到可執行代碼的動作。
4.如權利要求1所述的方法,其特徵在於,其中針對所述至少一個指定方面編譯多個不同的代表性較低級指令的動作包括: 編譯抽象接口以表示所述至少一個指定方面的動作;以及 編譯可在運行時處動態地連結到所述抽象接口的較低級代碼的多個不同部分的動作。
5.如權利要求4所述的方法,其特徵在於,其中編譯抽象接口以表示所述至少一個指定方面的動作包括編譯物理到邏輯線程ID映射接口的動作;以及 其中編譯可在運行時處動態地連結到所述抽象接口的較低級代碼的多個不同部分的動作包括: 為直接的物理到邏輯線程ID映射編譯較低級代碼的一部分的動作;以及 為更通用的間接的物理到邏輯線程ID映射編譯較低級代碼的另一部分的動作。
6.一種供在計算機系統處使用的電腦程式產品,所述計算系統包括編譯器和運行時,所述編譯器被配置把較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令,所述運行時被配置執行可執行代碼,所述電腦程式產品用於一種用於在運行時處綁定代碼以改善性能的方法,所述電腦程式產品包括其上存儲有計算機可執行指令的一個或多個計算機存儲設備,所述指令在由處理器執行時,使得所述計算機系統執行所述方法,所述方法包括以下: 訪問較高級原始碼的語句和表達式; 檢測到所述較高級原始碼包括至少一個指定方面,針對所述指定方面,相應的代表性較低級指令的執行效率基於執行期間接收到的輸入數據的配置變化到必要的程度; 把所訪問的較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令,包括: 針對至少一個指定方面編譯多個不同的代表性較低級指令,所述多個不同的代表性較低級指令中的每一個被配置成正確地實現所述至少一個指定方面的意圖,所述多個不同的代表性較低級指令中的每一個基於接收到的輸入數據的不同配置針對執行效率被進行優化; 配置所述較低級指令在運行時的執行,包括: 分析將被提供到所述較高級原始碼的所述至少一個指定方面的輸入數據的配置; 確定為執行而基於所提供的輸入數據的配置來優化選自所述多個不同的代表性較低級指令的指定的代表性較低級指令;以及 把所述指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個指定方面的意圖。
7.如權利要求6所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統把所訪問的較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令的計算機可執行指令包括在執行時使得所述計算機系統把C++代碼編譯成高級著色器語言(「HLSL」)字節碼的計算機可執行指令,所述C++代碼包括用於並行環境的擴展。
8.如權利要求7所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統針對所述至少一個指定方面編譯多個不同的代表性較低級指令的計算機可執行指令包括在執行時使得所述計算機系統編譯用於所述C++代碼的著色器的多個不同版本的計算機可執行指令,針對輸入數據的特定配置優化所述著色器的多個不同版本中的至少一個。
9.如權利要求6所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統針對所述至少一個指定方面編譯多個不同的代表性較低級指令的計算機可執行指令包括在執行時使得所述計算機系統執行以下動作的計算機可執行指令: 編譯代表性較低級指令的一個版本,為了在運行時處與不使用緩衝器混疊的輸入數據一起使用而優化所述代表性較低級指令的一個版本;以及 編譯代表性較低級指令的另一個版本,所述代表性較低級指令的另一個版本用於在運行時處與使用緩衝器混疊的輸入數據一起使用。
10.如權利要求9所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統分析將被提供到所述較高級原始碼的所述至少一個指定方面的輸入數據的配置的計算機可執行指令包括在執行時使得所述計算機系統確定所述輸入數據不使用緩衝器混疊的計算機可執行指令;以及 其中在執行時使得所述計算機系統把所述指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個指定方面的意圖的計算機可執行指令包括在執行時使得所述計算機系統在運行時處把所述代表性較低級指令的一個版本綁定到可執行代碼的計算機可執行指令。
11.如權利要求9所述的電腦程式產品,其特徵在於,其中所述代表性較低級指令的一個版本和所述代表性較低級指令的另一個版本二者均是高級著色器語言(「HLSL」)著色器。
12.如權利要求6所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統針對所述至少一個指定方面編譯多個不同的代表性較低級指令的計算機可執行指令包括在執行時使得所述計算機系統執行以下動作的計算機可執行指令: 編譯抽象接口以表示所述至少一個指定方面;以及 編譯可在運行時處動態地連結到所述抽象接口的較低級代碼的多個不同部分。
13.如權利要求12所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統編譯抽象接口以表示所述至少一個指定方面的計算機可執行指令包括在執行時使得所述計算機系統編譯物理到邏輯線程ID映射接口的計算機可執行指令;以及 其中在執行時使得所述計算機系統編譯可在運行時處動態地連結到所述抽象接口的較低級代碼的多個不同部分的計算機可執行指令包括在執行時使得所述計算機系統執行以下動作的計算機可執行指令:` 為直接的物理到邏輯線程ID映射編譯較低級代碼的一部分;以及 為更通用的間接的物理到邏輯線程ID映射編譯較低級代碼的另一部分。
14.如權利要求12所述的電腦程式產品,其特徵在於,其中在執行時使得所述計算機系統分析將被提供到所述較高級原始碼的所述至少一個指定方面的輸入數據的配置的計算機可執行指令包括在執行時使得所述計算機系統確定輸入數據使用直接的物理到邏輯線程ID映射的計算機可執行指令;以及 其中在執行時使得所述計算機系統把指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個方面的意圖的計算機可執行指令包括在執行時使得所述計算機系統在運行時處把較低級代碼的一部分動態連結到物理到邏輯線程ID映射接口的計算機可執行指令。
15.一種計算機系統,所述計算機系統包括: 一個或多個處理器; 系統存儲器;以及 一個或多個計算機存儲設備,所述一個或多個計算機存儲設備具有存儲在其上的表示代碼分析器、編譯器和運行時的計算機可執行指令,其中所述代碼分析器被配置為: 訪問較高級原始碼的語句和表達式;檢測到所述較高級原始碼包括至少一個指定方面,所述指定方面在運行期間基於運行時配置變化到必要的程度;以及 向編譯器指示所標識的至少一個方面; 其中所述編譯器被配置為: 接收所標識的至少一個方面的指示; 訪問較高級代碼的語句和表達式;以及 把所訪問的較高級原始碼的語句和表達式編譯成較低級代碼的代表性較低級指令,包括: 針對所述至少一個指定方面編譯多個不同的代表性較低級指令,所述多個不同的代表性較低級指令中的每一個被配置成正確地實現所述至少一個指定方面的意圖,所述多個不同的代表性較低級指令中的每一個被配置用於在不同的運行時配置上執行;以及其中所述運行時被配置為: 分析將在執行期間使用的運行時配置; 確定選自多個不同的代表性較低級指令的指定的代表性較低級指令被配置用於基於所提供的運行時配置來執行; 以及 把所述指定的較低級指令綁定到可執行代碼以實現所述較高級原始碼的所述至少一個指定方面的意圖。
【文檔編號】G06F9/30GK103620553SQ201280028424
【公開日】2014年3月5日 申請日期:2012年5月29日 優先權日:2011年6月10日
【發明者】A·K·阿加瓦爾, W·朱, Y·萊瓦諾尼 申請人:微軟公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀