1.一種設(shè)備,包括:
存儲器,用于存儲軟件代碼,所述軟件代碼包括多個指令塊,其中指令塊包括具有一個入口點和一個出口點的多個指令;以及
處理器,通信地耦合到所述存儲器,所述處理器用于:
執(zhí)行編譯器或二進制分析器中的一個,以基于所述多個指令塊的執(zhí)行來生成運行時配置文件,其中所述運行時配置文件包括由所述多個指令塊的執(zhí)行使用的處理組件和從所述多個指令塊的執(zhí)行產(chǎn)生的控制流程數(shù)據(jù);以及
使用所述運行時配置文件來生成控制流程表;
在所述控制流程表內(nèi)利用多個塊標(biāo)識符來索引所述多個指令塊,其中根據(jù)所述索引使用目的地標(biāo)識符將所述多個指令塊之間的執(zhí)行轉(zhuǎn)換編碼到所述控制流程表中;
將所述多個指令塊中的第一指令塊的指令分配給第一處理器,作為第一線程分配;
將所述指令分配給第二處理器,作為第二線程分配;
利用所述多個指令塊的注釋填充所述控制流程表,其中所述注釋包括所述第一指令塊的所述指令的所述第一線程分配和所述第二線程分配的注釋;
接收來自所述多個指令塊的執(zhí)行的所述控制流程數(shù)據(jù);
對于所述第一指令塊,從所述控制流程表內(nèi)索引的條目確定目的地標(biāo)識符;
根據(jù)在所述控制流程表中查找所述目的地標(biāo)識符,標(biāo)識與所述第一指令塊的所述指令相關(guān)聯(lián)的注釋;以及
基于所述注釋中標(biāo)識的所述第一處理器線程分配和所述第二處理器線程分配,準(zhǔn)備為了執(zhí)行所述第一指令塊的所述指令所需的特定處理組件。
2.如權(quán)利要求1所述的設(shè)備,其特征在于,所述處理器進一步用于:
在包括所述多個指令塊的應(yīng)用的編譯時或運行時中的一項或多項過程中,生成所述控制流程數(shù)據(jù)。
3.如權(quán)利要求1所述的設(shè)備,其特征在于,所述控制流程數(shù)據(jù)包括表、列表、圖或樹中的一項或多項。
4.如權(quán)利要求1所述的設(shè)備,其特征在于,所述處理器進一步通過以下操作跟蹤所述多個指令塊的執(zhí)行:
基于所述注釋,檢測所述存儲器中的硬錯誤或在執(zhí)行所述多個指令塊時的軟錯誤中的一個或多個,其中所述注釋進一步指示所述第一指令塊內(nèi)的指令的數(shù)量。
5.如權(quán)利要求1所述的設(shè)備,其特征在于,所述處理器進一步通過以下操作跟蹤所述多個指令塊的執(zhí)行:
標(biāo)識其中被分配有來自所述第一指令塊的所述指令的進程或執(zhí)行核中的一個或多個;以及
利用標(biāo)識其中被分配有來自所述第一指令塊的所述指令的所述進程或所述執(zhí)行核中的一個或多個的數(shù)據(jù)來更新所述注釋。
6.如權(quán)利要求2所述的設(shè)備,其特征在于,生成所述運行時配置文件包括:
將間接分支指令轉(zhuǎn)換為一對比較指令和轉(zhuǎn)移指令。
7.如權(quán)利要求1所述的設(shè)備,其特征在于,所述處理器進一步用于:
修改所述處理器使用的所述特定處理組件;
判斷修改所述處理器所使用的所述特定處理組件是否影響所述處理器的操作;以及
當(dāng)修改所述特定處理組件不影響所述處理器的操作時,更新所述注釋以指示所述處理器所使用的所述特定處理組件不應(yīng)該被優(yōu)化。
8.如權(quán)利要求1所述的設(shè)備,其特征在于,所述處理器進一步用于:
基于所述控制流程數(shù)據(jù),確定后續(xù)指令塊的第二目的地標(biāo)識符;
根據(jù)在所述控制流程表中查找所述第二目的地標(biāo)識符,標(biāo)識與所述后續(xù)指令塊相關(guān)聯(lián)的第二注釋;以及
基于所述第二注釋和來自所述后續(xù)指令塊的多個指令,執(zhí)行修改所述處理器所使用的所述特定處理組件或跟蹤所述多個指令塊的執(zhí)行中的一項或多項。
9.一種方法,包括:
從存儲器取回軟件代碼,所述軟件代碼包括多個指令塊,其中指令塊包括具有一個入口點和一個出口點的多個指令;
通過處理器執(zhí)行編譯器或二進制分析器中的一個,以基于所述多個指令塊的執(zhí)行來生成運行時配置文件,其中所述運行時配置文件包括由所述多個指令塊的執(zhí)行使用的處理組件和從所述多個指令塊的執(zhí)行產(chǎn)生的控制流程數(shù)據(jù);以及
通過所述處理器使用所述運行時配置文件來生成控制流程表;
通過所述處理器在所述控制流程表內(nèi)利用多個塊標(biāo)識符來索引所述多個指令塊,其中根據(jù)所述索引使用目的地標(biāo)識符將所述多個指令塊之間的執(zhí)行轉(zhuǎn)換編碼到所述控制流程表中;
通過所述處理器將所述多個指令塊中的第一指令塊的指令分配給第一處理器,作為第一線程分配;
通過所述處理器將所述指令分配給第二處理器,作為第二線程分配;
利用所述多個指令塊的注釋填充所述控制流程表,其中所述注釋包括所述第一指令塊的所述指令的所述第一線程分配和所述第二線程分配的注釋;
接收來自所述多個指令塊的執(zhí)行的所述控制流程數(shù)據(jù);
通過所述處理器,對于所述第一指令塊,從所述控制流程表內(nèi)索引的條目確定目的地標(biāo)識符;
通過所述處理器,根據(jù)在所述控制流程表中查找所述目的地標(biāo)識符,標(biāo)識與所述第一指令塊的所述指令相關(guān)聯(lián)的注釋;以及
通過所述處理器,基于所述注釋中標(biāo)識的所述第一處理器線程分配和所述第二處理器線程分配,準(zhǔn)備為了執(zhí)行所述第一指令塊的所述指令所需的特定處理組件。
10.如權(quán)利要求9所述的方法,其特征在于,所述方法進一步包括:
在包括所述多個指令塊的應(yīng)用的編譯時或運行時中的一項或多項的過程中,生成所述控制流程數(shù)據(jù)。
11.如權(quán)利要求9所述的方法,其特征在于,所述控制流程數(shù)據(jù)包括表、列表、圖或樹中的一項或多項。
12.如權(quán)利要求9所述的方法,其特征在于,進一步包括通過以下操作跟蹤所述多個指令塊的執(zhí)行:
基于所述注釋,檢測存儲器中的硬錯誤或在執(zhí)行所述多個指令塊時的軟錯誤中的一個或多個,其中所述注釋進一步指示所述第一指令塊內(nèi)的指令的數(shù)量。
13.如權(quán)利要求9所述的方法,其特征在于,進一步包括通過以下操作跟蹤所述指令塊的執(zhí)行:
標(biāo)識其中被分配有來自所述第一指令塊的所述指令的進程或執(zhí)行核中的一個或多個;以及
利用標(biāo)識其中被分配有來自所述第一指令塊的所述指令的所述進程或所述執(zhí)行核中的一個或多個的數(shù)據(jù)來更新所述注釋。
14.如權(quán)利要求10所述的方法,其特征在于,生成所述運行時配置文件包括:
將間接分支指令轉(zhuǎn)換為比較指令和轉(zhuǎn)移指令中的一個或多個。
15.如權(quán)利要求9所述的方法,其特征在于,所述方法進一步包括:
修改所述處理器使用的所述特定處理組件;
判斷修改所述處理器所使用的所述特定處理組件是否影響所述處理器的操作;以及
當(dāng)修改所述特定處理組件不影響所述處理器的所述操作時,更新所述注釋以指示所述處理器所使用的所述特定處理組件不應(yīng)該被優(yōu)化。
16.如權(quán)利要求9所述的方法,其特征在于,所述方法進一步包括:
基于所述控制流程數(shù)據(jù),確定后續(xù)指令塊的第二目的地標(biāo)識符;
根據(jù)在所述控制流程表中查找所述第二目的地標(biāo)識符,標(biāo)識與所述后續(xù)指令塊相關(guān)聯(lián)的第二注釋;以及
基于所述第二注釋和所述后續(xù)指令塊的多個指令,執(zhí)行修改所述處理器所使用的所述特定處理組件或跟蹤所述多個指令塊的執(zhí)行中的一項或多項。
17.一種包含指令的非瞬態(tài)機器可讀存儲介質(zhì),所述指令在被處理器執(zhí)行時使所述處理器執(zhí)行操作,所述操作包括:
從存儲器取回軟件代碼,所述軟件代碼包括多個指令塊,其中指令塊包括具有一個入口點和一個出口點的多個指令;
通過處理器執(zhí)行編譯器或二進制分析器中的一個,以基于所述多個指令塊的執(zhí)行來生成運行時配置文件,其中所述運行時配置文件包括由所述多個指令塊的執(zhí)行使用的處理組件和從所述多個指令塊的執(zhí)行產(chǎn)生的控制流程數(shù)據(jù);以及
通過所述處理器使用所述運行時配置文件來生成控制流程表;
通過所述處理器在所述控制流程表內(nèi)利用多個塊標(biāo)識符來索引所述多個指令塊,其中根據(jù)所述索引使用目的地標(biāo)識符將所述多個指令塊之間的執(zhí)行轉(zhuǎn)換編碼到所述控制流程表中;
通過所述處理器將所述多個指令塊中的第一指令塊的指令分配給第一處理器,作為第一線程分配;
通過所述處理器將所述指令分配給第二處理器,作為第二線程分配;
利用所述多個指令塊的注釋填充所述控制流程表,其中所述注釋包括所述第一指令塊的所述指令的所述第一線程分配和所述第二線程分配的注釋;
接收來自所述多個指令塊的執(zhí)行的所述控制流程數(shù)據(jù);
通過所述處理器,對于所述第一指令塊,從所述控制流程表內(nèi)索引的條目確定目的地標(biāo)識符;
通過所述處理器,根據(jù)在所述控制流程表中查找所述目的地標(biāo)識符,標(biāo)識與所述第一指令塊的所述指令相關(guān)聯(lián)的注釋;以及
通過所述處理器,基于所述注釋中標(biāo)識的所述第一處理器線程分配和所述第二處理器線程分配,準(zhǔn)備為了執(zhí)行所述第一指令塊的所述指令所需的特定處理組件。
18.如權(quán)利要求17所述的非瞬態(tài)機器可讀存儲介質(zhì),其特征在于,所述處理器進一步用于執(zhí)行所述指令以通過以下操作來跟蹤所述多個指令塊的執(zhí)行:
基于所述注釋,檢測存儲器中的硬錯誤或在執(zhí)行所述多個指令塊時的軟錯誤中的一個或多個,其中所述注釋進一步指示所述第一指令塊內(nèi)的指令的數(shù)量。
19.如權(quán)利要求17所述的非瞬態(tài)機器可讀存儲介質(zhì),其特征在于,所述處理器進一步用于執(zhí)行所述指令以通過以下操作來跟蹤所述多個指令塊的執(zhí)行:
標(biāo)識其中被分配有來自所述第一指令塊的所述指令的進程或執(zhí)行核中的一個或多個;以及
利用標(biāo)識其中被分配有來自所述第一指令塊的所述指令的所述進程或所述執(zhí)行核中的一個或多個的數(shù)據(jù)來更新所述注釋。
20.如權(quán)利要求17所述的非瞬態(tài)機器可讀存儲介質(zhì),其特征在于,所述處理器進一步用于執(zhí)行所述指令以:
修改所述處理器使用的所述特定處理組件;
判斷修改所述處理器所使用的所述特定處理組件是否影響所述處理器的操作;以及
當(dāng)修改所述特定處理組件不影響所述處理器的所述操作時,更新所述注釋以指示所述處理器所使用的所述特定處理組件不應(yīng)該被優(yōu)化。
21.一種設(shè)備,包括:
存儲器,用于存儲軟件代碼,所述軟件代碼包括多個指令塊,其中指令塊包括具有一個入口點和一個出口點的多個指令;以及
處理器,通信地耦合到所述存儲器,所述處理器用于:
執(zhí)行編譯器或二進制分析器中的一個,以基于所述多個指令塊的執(zhí)行來生成運行時配置文件,其中所述運行時配置文件包括由所述多個指令塊的執(zhí)行使用的處理組件和從所述多個指令塊的執(zhí)行產(chǎn)生的控制流程數(shù)據(jù);以及
使用所述運行時配置文件來生成控制流程表;
在所述控制流程表內(nèi)利用多個塊標(biāo)識符來索引所述多個指令塊,其中根據(jù)所述索引使用目的地標(biāo)識符將所述多個指令塊之間的執(zhí)行轉(zhuǎn)換編碼到所述控制流程表中;
將所述多個指令塊中的第一指令塊的指令分配給第一處理器,作為第一線程分配;
將所述指令分配給第二處理器,作為第二線程分配;
利用所述多個指令塊的注釋填充所述控制流程表,其中所述注釋包括所述第一指令塊的所述指令的所述第一線程分配和所述第二線程分配的注釋;
接收來自所述多個指令塊的執(zhí)行的所述控制流程數(shù)據(jù);
對于所述第一指令塊,從所述控制流程表內(nèi)索引的條目確定目的地標(biāo)識符;
根據(jù)在所述控制流程表中查找所述目的地標(biāo)識符,標(biāo)識與所述第一指令塊的所述指令相關(guān)聯(lián)的注釋;以及
通過以下操作跟蹤所述第一指令塊的執(zhí)行:
標(biāo)識其中被分配有來自所述第一指令塊的所述指令的所述第一處理器和所述第二處理器或進程中的一個或多個;以及
利用標(biāo)識其中被分配有來自所述第一指令塊的所述指令的所述第一處理器和所述第二處理器或進程中的一個或多個的數(shù)據(jù)來更新所述注釋。
22.如權(quán)利要求21所述的設(shè)備,其特征在于,為了跟蹤所述多個指令塊的執(zhí)行,所述處理器進一步用于:
基于所述注釋,檢測存儲器中的硬錯誤或在執(zhí)行所述多個指令塊時的軟錯誤中的一個或多個,其中所述注釋進一步指示所述第一指令塊內(nèi)的指令的數(shù)量。
23.如權(quán)利要求21所述的設(shè)備,其特征在于,所述處理器進一步用于:
修改所述處理器使用的所述特定處理組件;
判斷修改所述處理器所使用的所述特定處理組件是否影響所述處理器的操作;以及
當(dāng)修改所述特定處理組件不影響所述處理器的所述操作時,更新所述注釋以指示所述處理器所使用的所述特定處理組件不應(yīng)該被優(yōu)化。