TWI591579B - 減少流程控制發散度之分析系統與方法 - Google Patents
減少流程控制發散度之分析系統與方法 Download PDFInfo
- Publication number
- TWI591579B TWI591579B TW105114887A TW105114887A TWI591579B TW I591579 B TWI591579 B TW I591579B TW 105114887 A TW105114887 A TW 105114887A TW 105114887 A TW105114887 A TW 105114887A TW I591579 B TWI591579 B TW I591579B
- Authority
- TW
- Taiwan
- Prior art keywords
- unit
- analysis
- branch
- code
- flow control
- Prior art date
Links
- 238000004458 analytical method Methods 0.000 title claims description 133
- 238000000034 method Methods 0.000 title claims description 16
- 238000005457 optimization Methods 0.000 claims description 36
- 238000006243 chemical reaction Methods 0.000 claims description 24
- 238000004886 process control Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 8
- 230000009466 transformation Effects 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 238000007796 conventional method Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Devices For Executing Special Programs (AREA)
Description
一種減少流程控制發散度之分析系統與方法,尤指一種係適用於圖形處理單元中,可根據程式碼判斷其所具有之流程控制結構、特定分枝指令以及分枝數目、循環數目、以及方向比率等具體資訊,判斷是否針對該程式碼重新編譯新的流程控制結構,以獲得更好的效用,或產生一特定指令,其中,該特定指令利用收集運行時間資訊,可支援對執行緒(thread)進行動態重編群組,以達成對程式碼之執行效率最佳化。
由於電腦計算量越來越大,因此傳統上多利用繪圖處理單元(Graphics Processing Units,GPU)來處理和圖形有關的計算。現代繪圖處理單元也可以被用來處理通用類型的資料計算,尤其是單一指令多重資料執行模型(Single instruction multiple data,SIMD)的應用,其係被利用來執行相同指令的平行執行緒。
有了繪圖處理單元之後,原先只交由中央處理器單純執行計算的模式,就開始有了很大的轉變,尤其是對於一些純大量數值的演算,將其由中央處理器上移至繪圖處理單元,來執行計算後,便可以發揮繪圖處理
單元的特長,增加計算的效能。
尤其對一些需要以整個大型矩陣中的元素套用相同算術操作的動作,若在中央處理器上執行,必須利用迴圈,逐一針對矩陣中的每個元素做計算。但若利用繪圖處理單元來計算,則可平行、同時對矩陣中的多個元素做計算,速度可以大幅提升。
繪圖處理單元之處理器核心為同步執行數個程式的執行序之高度平行多重處理器,此處理器之執行緒組成一群組,稱之為工作緒束(Warp),在工作緒束中,執行緒的數目稱之為單一指令多重資料執行模型寬度,在任一時間,在工作緒束內所有執行緒係指派相同的指令,每一工作緒指派該指令到特定的資料值。如果處理單元正在執行一些執行緒不想執行的指令時,例如條件式指令,那些執行緒必須等待或閒置(idle),而其他執行緒則會繼續執行,此狀況即稱之為發散,由於該複數個閒置的執行緒並未使用,發散的分支將會導致整體運算流量降低。
請參考第1A圖以及第1B圖,其中第1A圖為產生發散之流程控制結構及其執行緒排程說明圖。而第1B圖為採用習知減少發散方法之流程控制結構及其執行緒排程說明圖。
在第1A圖中,並未採用解決發散之排程,可看到一程式碼,其包含一個IF描述之條件分支,假設在此執行緒束中有三個執行緒。在第1A圖中,執行緒係在區塊B才群組在一起,因此,某些條件時,執行緒會閒置,造成發散之情況,降低運算效能。
相對地,在第1B圖中,係採用習知解決發散之排程方法,其在執行區塊A時之前,先把執行緒群組在一起,並一起執行,藉此,可改善發散
之情況。但,採用習知之排程方式,當區塊B之執行時間遠大於區塊A之執行時間時,此方法將會變慢。
因此,需要對習知之減少流程控制發散之分析系統與方法進行改進,以解決因習知技術之當區塊B之執行時間遠大於區塊A之執行時間時會降低運算效能之缺點,亦為相關行業之技術領域者亟欲改善的課題。
本發明之主要目的在提供一種少流程控制發散度之分析系統,係適用於圖形處理單元中,圖形處理單元包含有計算單元以及硬體效能分析支援單元,計算單元用以計數程式碼之至少一分枝之數目以及至少一循環之數目,以及計算出至少一方向比率,並傳送給硬體效能分析支援單元。其中,減少流程控制發散度之分析系統包含,編譯單元、分析單元以及最佳化單元。編譯單元係用以擷取程式碼。分析單元與編譯單元連接。分析單元係接收硬體效能分析支援單元所傳送之分枝之數目、循環數目、以及方向比率。分析單元根據分枝數目、循環數目、以及方向比率,判斷該程式碼是否具有次流程控制結構,其中,該次流程控制結構為可被最佳化者,以及特定分枝指令。最佳化單元係連接於該分析單元。上述之方向比率為執行分支之次數對於不執行分支之次數之比率。
其中,分析單元判斷程式碼中具有次流程控制結構以及特定分枝指令時,分析單元分別計算出每一分枝之分枝比率,以及每該分枝之特定分枝指令數目。隨後,最佳化單元根據分枝比率以及特定分枝指令數目,以決定使用一轉換模式對次流程控制結構進行轉換。
於本發明一實施例中,如上述之分析系統,分析單元更包含流程控制分析單元。流程控制分析單元係連接編譯單元,流程控制分析單元係判斷分析程式碼是否具有次流程控制結構,以及特定分枝指令。
於本發明一實施例中,如上述之分析系統,其中,分析單元更包含執行效能分析單元,執行效能分析單元係連接於編譯單元,執行效能分析單元係根據分枝之數目、循環之數目、以及方向比率判斷程式碼之執行效率。
於本發明一實施例中,如上述之分析系統,其中,分析單元更包含一分枝分析數據單元,分枝分析數據單元係分別計算出每一分枝之分枝比率,以及每一分枝之特定分枝指令數目。
於本發明一實施例中,如上述之分析系統,其中,最佳化單元更包含一最佳化決策單元,最佳化決策單元根據分枝比率以及特定分枝指令數目,以決定使用一轉換模式對該次流程控制結構進行轉換。
於本發明一實施例中,如上述之分析系統,其中,最佳化單元更包含一變換模式單元,變換模式單元根據最佳化決策單元所決定之轉換模式,變換模式單元以轉換模式對次流程控制結構進行轉換。
於本發明另一實施例中,係提供一種減少流程控制發散度之分析方法,係適用於一圖形處理單元中,包含:載入一程式碼至該圖形處理單元,圖形處理單元計數程式碼之至少一分枝之數目以及至少一循環之數目,以及計算出至少一方向比率;以編譯單元擷取程式碼,並產生流程控制圖;以分析單元判斷該程式碼是否具有次流程控制結構,其中,該次流程控制結構為可被最佳化者。當判斷具有可最佳化之次流程控制結構時,以分析
單元判斷該程式碼是否具有特定分枝指令。當分析單元判斷程式碼具有特定分枝指令時,以編譯單元針對程式碼進行編譯,編譯成一特定流程控制結構。當以分析單元判斷程式碼中具有特定分枝指令時,分析單元分別計算出每一分枝之一分枝比率,以及每一分枝之一特定分枝指令數目;根據分枝比率以及特定分枝指令數目,最佳化單元以決定使用轉換模式,該最佳化單元以轉換模式對該次流程控制結構進行轉換。
於本發明一實施例中,如上述之分析方法,其中分析單元更包含執行效能分析單元,執行效能分析單元係連接於編譯單元,執行效能分析單元係根據分枝之數目、循環之數目、以及方向比率判斷程式碼之執行效率。
於本發明一實施例中,如上述之分析方法,其中分析單元更包含分枝分析數據單元,分枝分析數據單元係分別計算出每一分枝之分枝比率,以及每一分枝之特定分枝指令數目。
於本發明一實施例中,如上述之分析方法,其中最佳化單元更包含最佳化決策單元,最佳化決策單元根據分枝比率以及特定分枝指令數目,以決定使用轉換模式對次流程控制結構進行轉換。
於本發明一實施例中,如上述之分析方法,其中最佳化單元更包含變換模式單元,變換模式單元根據最佳化決策單元所決定之轉換模式,變換模式單元以該轉換模式對次流程控制結構進行轉換。
於本發明一實施例中,當該分析單元判斷不具有可最佳化之該次流程控制結構時,則結束。
於本發明一實施例中,當分析單元判斷該程式碼不具有特定分枝
指令時,該編譯單元係使用一般之預測程式形式,對該程式碼進行編譯。
綜合前述,透過本發明之減少流程控制發散度之分析系統與方法,藉由硬體計算分支數目以及循環數目,並搭配軟體接收上述資訊,判斷是否需要對該程式碼進行優化程序,藉此改善前述知習知缺點。
200‧‧‧分析系統
210‧‧‧圖形處理單元
212‧‧‧計算單元
214‧‧‧硬體效能分析支援單元
230‧‧‧編譯單元
232‧‧‧分析單元
234‧‧‧最佳化單元
2322‧‧‧流程控制分析單元
2324‧‧‧執行效能分析單元
2326‧‧‧分枝分析數據單元
2342‧‧‧最佳化決策單元
2344‧‧‧變換模式單元
Rd‧‧‧方向比率
Rb‧‧‧分枝比率
S401~S408‧‧‧步驟
第1A圖係產生發散之流程控制結構及其執行緒排程說明圖。
第1B圖係採用習知減少發散方法之流程控制結構及其執行緒排程說明圖。
第2圖係本發明之減少流程控制發散度之分析系統之一架構示意圖。
第3A圖係為本發明用以說明方向比率之程式碼示意圖。
第3B圖係為以第3A圖程式碼所計算之方向比率表。
第4圖係本發明之減少流程控制發散度之分析方法流程圖。
以下在實施方式中詳細敘述本發明之詳細特徵以及優點,其內容足以使任何熟習相關技藝者瞭解本發明之技術內容並以據以實施,且根據本說明書所揭露之內容、申請專利範圍即圖式,任何熟習相關技藝者可輕易地理解本發明相關之目的及優點。
請參閱第2圖以及第3A圖,第2圖係本發明之減少流程控制發散度之分析系統200之一架構示意圖。第3A圖係為本發明用以說明方向比率之程
式碼示意圖。
於第2圖中,分析系統200係適用於圖形處理單元210中。圖形處理單元210包含有計算單元212以及硬體效能分析支援單元214。計算單元212用以計數程式碼之至少一分枝之數目以及至少一循環之數目,並且可計算出至少一方向比率Rd。計算單元212將所產生之分枝之數目、循環之數目以及方向比率Rd傳送給硬體效能分析支援單元214。
仍於第2圖中,減少流程控制發散度之分析系統200包含編譯單元230、分析單元232以及最佳化單元234。編譯單元係用以擷取圖形處理單元210傳送來之程式碼。分析單元232與編譯單元230連接。分析單元232包含流程控制分析單元2322、執行效能分析單元2324以及分枝分析數據單元2326。流程控制分析單元2322係連接編譯單元230。流程控制分析單元2322係判斷分析程式碼是否具有次流程控制結構,以及特定分枝指令。
於第2圖所示,執行效能分析單元2324係連接於編譯單元230。執行效能分析單元2324係接收硬體效能分析支援單元214所傳送之分枝之數目、循環數目、以及方向比率,並根據程式碼中分枝之數目、循環之數目、以及方向比率判斷程式碼之執行效率。其中,方向比率Rd為執行分支之次數對於不執行分支之次數之比率。
請參考第3A、3B圖,第3B圖係為以第3A圖程式碼所計算之方向比率表。當系統執行程式碼時,計數單元212開始進行計算,其每一執行緒之執行數目係統計於第3B圖中。單元212因而計算出執行區塊A之執行數目為2,執行區塊B之執行數目為10,並計算出方向比率Rd為0.2。
於第2圖中,分枝分析數據單元2326係判斷該程式碼是否具有次
流程控制結構以及特定分枝指令,以及分別計算出每一分枝之分枝比率Rb,以及每一分枝之特定分枝指令數目。
第2圖中,最佳化單元234包含最佳化決策單元2342以及變換模式單元2344。最佳化決策單元2342根據分枝比率Rb以及特定分枝指令數目,以決定使用之轉換模式對該次流程控制結構進行轉換。其中,分枝比率Rb係為該程式碼中分枝所佔整個程式之比例。2344根據最佳化決策單元2342所決定之轉換模式,該變換模式單元2344以前述所決定之轉換模式,對次流程控制結構進行轉換。
請參考第4圖,係本發明之減少流程控制發散度之分析方法流程圖。而本發明之分析方法,係適用於如第2圖之圖形處理單元210中,參考第4圖所示,其步驟包含下列:第4圖之S401步驟:載入一程式碼(以第3A圖之程式碼舉例)至圖形處理單元210,圖形處理單元2102並針對程式碼進行計數,得到程式碼之分枝數目、循環數目以及方向比率Rd。
第4圖之S402步驟:以一編譯單元230擷取該程式碼,並產生一流程控制圖。
第4圖之S403步驟:以一分析單元232判斷程式碼是否具有次流程控制結構,其中,次流程控制結構為可最佳化者。
第4圖之S404步驟:當判斷具有可最佳化之次流程控制結構,以分析單元232判斷程式碼是否具有特定分枝指令。
第4圖之S405步驟:當分析單元232判斷程式碼具有特定分枝指令時,以編譯單元230針對程式碼進行編譯,以編譯成一特定流程控制結構。
第4圖之S406步驟:當分析單元232判斷程式碼中,具有特定分枝指令時,以分析單元232分別計算出每一分枝之分枝比率,以及每一分枝之特定分枝指令數目。
第4圖之S408步驟:根據分枝比率以及特定分枝指令數目,最佳化單元234決定使用一轉換模式,以及最佳化單元234以最佳化單元234決定使用之轉換模式,對該次流程控制結構進行轉換。
當在第4圖之S403步驟中,分析單元232判斷不具有可最佳化之次流程控制結構時,則最佳化步驟結束,步驟S4032。
第4圖之S404步驟中,分析單元232判斷程式碼不具有特定分枝指令時,編譯單元230係使用一般之預測程式形式,對該程式碼進行編譯,步驟S4052。隨後,S4062:從分析取樣中計算執行率,並預測每一路徑之分枝比率Rb。
綜合前述之實施例,透過本發明之分析系統以及分析方法,藉由硬體之計數資訊,配合軟體之判斷與轉換程序,可以即時判斷程式碼中造成圖形處理單元速度變慢之流程結構以及分枝,並立即針對該結構與分枝進行適當之轉換,藉此提高處理速度。
以上所述僅為本發明之較佳實施例而已,並非用以限定本發明之申請專利範圍;凡其它未脫離本發明所揭示之精神下所完成之等效改變或修飾,均應包含在下述之申請專利範圍內。
200‧‧‧分析系統
210‧‧‧圖形處理單元
212‧‧‧計算單元
214‧‧‧硬體效能分析支援單元
230‧‧‧編譯單元
232‧‧‧分析單元
234‧‧‧最佳化單元
2322‧‧‧流程控制分析單元
2324‧‧‧執行效能分析單元
2326‧‧‧分枝分析數據單元
2342‧‧‧最佳化決策單元
2344‧‧‧變換模式單元
Claims (15)
- 一種減少流程控制發散度之分析系統,係適用於一圖形處理單元中,該圖形處理單元包含有一計算單元以及一硬體效能分析支援單元,該計算單元用以計數一程式碼之至少一分枝之數目以及至少一循環之數目,以及計算出至少一方向比率,並傳送給該硬體效能分析支援單元,該減少流程控制發散度之分析系統包含:一編譯單元,該編譯單元擷取該程式碼;一分析單元,該分析單元與該編譯單元連接,該分析單元係接收該硬體效能分析支援單元所傳送之該分枝之數目、該循環數目、以及該方向比率,該分析單元根據該分枝之數目、該循環之數目、以及該方向比率,該分析單元判斷該程式碼是否具有一次流程控制結構,其中,該次流程控制結構為可被最佳化者,以及一特定分枝指令;以及一最佳化單元,連接於該分析單元;其中,該分析單元判斷該程式碼中具有該次流程控制結構以及該特定分枝指令時,該分析單元分別計算出每一該複數個分枝之一分枝比率,以及每一該複數個分枝之一特定分枝指令數目,該最佳化單元根據該複數個分枝比率以及該複數個特定分枝指令數目,以決定使用一轉換模式對該次流程控制結構進行轉換。
- 如申請專利範圍第1項之分析系統,其中該分析單元更包含一流程控制分析單元,該流程控制分析單元係連接該編譯單元,該流程控制分析單元係判斷分析該程式碼是否具有該次流程控制結構,以及該特定分枝指令。
- 如申請專利範圍第1項之分析系統,其中該分析單元更包含一執行效能分析單元,該執行效能分析單元係連接於該編譯單元,該執行效能分析單元係根據該分枝之數目、該循環之數目、以及該方向比率判斷該程式碼之執行效率。
- 如申請專利範圍第1項之分析系統,其中該分析單元更包含一分枝分析數據單元,該分枝分析數據單元係分別計算出每一該複數個分枝之該分枝比率,以及每一該複數個分枝之該特定分枝指令數目。
- 如申請專利範圍第1項之分析系統,其中該方向比率為執行該分支之次數對於不執行該分支之次數之比率。
- 如申請專利範圍第1項之分析系統,其中該最佳化單元更包含一最佳化決策單元,該最佳化決策單元根據該複數個分枝比率以及該複數個特定分枝指令數目,以決定使用之一轉換模式對該次流程控制結構進行轉換。
- 如申請專利範圍第6項之分析系統,其中,該最佳化單元更包含一變換模式單元,該變換模式單元根據該最佳化決策單元所決定之該轉換模式,對該次流程控制結構進行轉換。
- 一種減少流程控制發散度之分析方法,係適用於一圖形處理單元中,包含:載入一程式碼至該圖形處理單元,該圖形處理單元計數一程式碼之至少一分枝之數目以及至少一循環之數目,以及計算出至少一方向比率;以一編譯單元擷取該程式碼,並產生一流程控制圖;以一分析單元判斷該程式碼是否具有一次流程控制結構,其中該次流程控制結構為可被最佳化者; 當判斷具有可最佳化之次流程控制結構時,以該分析單元判斷該程式碼是否具有一特定分枝指令;當分析單元判斷程式碼具有特定分枝指令時,以編譯單元針對該程式碼進行編譯,編譯成一特定流程控制結構。 當以該分析單元判斷該程式碼中,具有該特定分枝指令時,以該分析單元分別計算出每一該複數個分枝之一分枝比率,以及每一該複數個分枝之一特定分枝指令數目;根據該複數個分枝比率以及該複數個特定分枝指令數目,一最佳化單元以決定使用一轉換模式;以及該最佳化單元以該轉換模式對該次流程控制結構進行轉換。
- 如申請專利範圍第8項之分析方法,其中該分析單元更包含一流程控制分析單元,該流程控制分析單元係連接該編譯單元,該流程控制分析單元係判斷分析該程式碼是否具有該次流程控制結構,以及該特定分枝指令。
- 如申請專利範圍第8項之分析方法,其中該分析單元更包含一執行效能分析單元,該執行效能分析單元係連接於該編譯單元,該執行效能分析單元係根據該分枝之數目、該循環之數目、以及該方向比率判斷該程式碼之執行效率。
- 如申請專利範圍第8項之分析方法,其中該分析單元更包含一分枝分析數據單元,該分枝分析數據單元係分別計算出每一該複數個分枝之該分枝比率,以及每一該複數個分枝之該特定分枝指令數目。
- 如申請專利範圍第8項之分析方法,其中該最佳化單元更包含一最佳化決策單元,該最佳化決策單元根據該複數個分枝比率以及該複數個特定 分枝指令數目,以決定使用一轉換模式對該次流程控制結構進行轉換。
- 如申請專利範圍第8項之分析方法,其中該最佳化單元更包含一變換模式單元,該變換模式單元根據該最佳化決策單元所決定之該轉換模式,該變換模式單元以該轉換模式對該次流程控制結構進行轉換。
- 如申請專利範圍第8項之分析方法,當該分析單元判斷不具有可最佳化之該次流程控制結構時,則結束。
- 如申請專利範圍第8項之分析方法,當分析單元判斷該程式碼不具有特定分枝指令時,該編譯單元係使用一般之預測程式形式,對該程式碼進行編譯。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105114887A TWI591579B (zh) | 2016-05-13 | 2016-05-13 | 減少流程控制發散度之分析系統與方法 |
US15/263,417 US9870599B2 (en) | 2016-05-13 | 2016-09-13 | Analysis system and method for reducing the control flow divergence in the Graphics Processing Units (GPUs) |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105114887A TWI591579B (zh) | 2016-05-13 | 2016-05-13 | 減少流程控制發散度之分析系統與方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI591579B true TWI591579B (zh) | 2017-07-11 |
TW201740348A TW201740348A (zh) | 2017-11-16 |
Family
ID=60048611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105114887A TWI591579B (zh) | 2016-05-13 | 2016-05-13 | 減少流程控制發散度之分析系統與方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9870599B2 (zh) |
TW (1) | TWI591579B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10115175B2 (en) * | 2016-02-19 | 2018-10-30 | Qualcomm Incorporated | Uniform predicates in shaders for graphics processing units |
CN109189478B (zh) * | 2018-08-27 | 2020-12-29 | 中国科学院计算技术研究所 | 针对应用程序的反馈优化方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290674A1 (en) * | 2012-04-30 | 2013-10-31 | Biju George | Modeling Structured SIMD Control FLow Constructs in an Explicit SIMD Language |
US9606797B2 (en) * | 2012-12-21 | 2017-03-28 | Intel Corporation | Compressing execution cycles for divergent execution in a single instruction multiple data (SIMD) processor |
US10067768B2 (en) * | 2014-07-18 | 2018-09-04 | Nvidia Corporation | Execution of divergent threads using a convergence barrier |
US9766892B2 (en) * | 2014-12-23 | 2017-09-19 | Intel Corporation | Method and apparatus for efficient execution of nested branches on a graphics processor unit |
US9898287B2 (en) * | 2015-02-13 | 2018-02-20 | Advanced Micro Devices, Inc. | Dynamic wavefront creation for processing units using a hybrid compactor |
US10242419B2 (en) * | 2015-09-02 | 2019-03-26 | Intel Corporation | Compiler optimization to reduce the control flow divergence |
US20170123798A1 (en) * | 2015-11-01 | 2017-05-04 | Centipede Semi Ltd. | Hardware-based run-time mitigation of blocks having multiple conditional branches |
-
2016
- 2016-05-13 TW TW105114887A patent/TWI591579B/zh active
- 2016-09-13 US US15/263,417 patent/US9870599B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US9870599B2 (en) | 2018-01-16 |
TW201740348A (zh) | 2017-11-16 |
US20170330303A1 (en) | 2017-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8332854B2 (en) | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups | |
EP2707797B1 (en) | Automatic load balancing for heterogeneous cores | |
US9424038B2 (en) | Compiler-controlled region scheduling for SIMD execution of threads | |
CN105389158B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
US9477465B2 (en) | Arithmetic processing apparatus, control method of arithmetic processing apparatus, and a computer-readable storage medium storing a control program for controlling an arithmetic processing apparatus | |
JP6763072B2 (ja) | データ処理グラフのコンパイル | |
KR20120068572A (ko) | 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법 | |
US11366669B2 (en) | Apparatus for preventing rescheduling of a paused thread based on instruction classification | |
TWI591579B (zh) | 減少流程控制發散度之分析系統與方法 | |
Zhou et al. | A performance analysis framework for exploiting GPU microarchitectural capability | |
CN112559053A (zh) | 可重构处理器数据同步处理方法及装置 | |
US11481223B2 (en) | Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions | |
WO2019153683A1 (zh) | 一种可配置且具弹性的指令调度器 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
WO2019153684A1 (zh) | 一种低延迟指令调度器的自动管理方法 | |
Cheng et al. | An execution time prediction analytical model for GPU with instruction-level and thread-level parallelism awareness | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
Liang et al. | Register and thread structure optimization for GPUs | |
Krömer et al. | An implementation of differential evolution for independent tasks scheduling on GPU | |
Alawneh et al. | A SIMT Analyzer for Multi-Threaded CPU Applications | |
TWI428833B (zh) | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 | |
Pandey et al. | Improving GPGPU Performance Using Efficient Scheduling | |
Khammassi et al. | A high-level programming model to ease pipeline parallelism expression on shared memory multicore architectures | |
US20210042127A1 (en) | Group Load Register of a Graph Streaming Processor | |
Kim et al. | Towards Predicting GPGPU Performance for Concurrent Workloads |