在存在可能的存儲器別名的情況下并行化循環(huán)的制作方法
【專利摘要】在一個特定實施例中,本公開提供一種用以在存在無法在編譯時間解決的可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度的有效機構。提供硬件指令,所述硬件指令在運行時間測試存儲地址并且設定模式或寄存器,所述模式或寄存器使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的SIMD(單指令多數(shù)據(jù))通道以便并行地運行。列舉了擴展這類指令的適用性或性能的其它硬件特征。
【專利說明】在存在可能的存儲器別名的情況下并行化循環(huán)
[0001]相關申請的交叉引用
[0002]本申請要求2013年3月15日提交的標題名稱為“A METHOD TO PARALLELIZELOOPS IN THE PRESENCE OF POSSIBLE MEMORY ALIASES” 的美國申請 61/788,471 的優(yōu)先權,所述美國申請在此以引用的方式整體并入本文中。
【技術領域】
[0003]本公開一般來說涉及并行處理,并且更具體來說涉及并行化循環(huán)。
【背景技術】
[0004]現(xiàn)代硬件技術通過使用多個處理元件(PE)來提供增加處理速度的能力,所述多個處理元件各自可以執(zhí)行分開的并行操作;這樣的處理有時被稱為并行處理或并行化。為了在處理中利用來自并行化的潛在加速,編譯器可確定是否可并行化源代碼。例如,如果循環(huán)的每一迭代不依賴于循環(huán)的任何先前迭代,則編譯器可并行化循環(huán)一被稱為向量化。這樣的依賴性通常是以存儲器別名的形式一即,其中多個指針引用單個存儲地址。編譯器可在編譯時間嘗試證明這樣的潛在存儲器別名不存在,以使得編譯器可產生并行代碼。
【專利附圖】
【附圖說明】
[0005]根據(jù)以下詳細描述和附圖最好地理解本公開。應強調的是,根據(jù)行業(yè)中的標準慣例,各種特征并沒有按比例描繪并且僅用于圖解說明目的。事實上,為了論述的清晰性,可任意增大或減小各種特征的尺寸。
[0006]圖1為根據(jù)本說明書的一個或多個實施方案的用于在存在可能的存儲器別名的情況下并行化循環(huán)的例示性邏輯的流程圖。
[0007]圖2為根據(jù)本說明書的一個或多個實施方案的包括含有啟用的通道的數(shù)目的寄存器的例示性硬件實行方案的框圖。
[0008]圖3示出在具有兩個并行處理元件的硬件上運行根據(jù)本說明書的一個實行方案編譯的代碼的例示性結果。
[0009]圖4示出在具有四個并行處理元件的硬件上運行根據(jù)本說明書的一個實行方案編譯的代碼的例示性結果。
[0010]圖5示出在具有八個并行處理元件的硬件上運行根據(jù)本說明書的一個實行方案編譯的代碼的例示性結果。
【具體實施方式】
[0011]概述
[0012]根據(jù)本說明書的一個方面,公開一種用以在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度的方法,所述方法包括:提供硬件指令,所述硬件指令在運行時間測試存儲地址;以及設定模式或寄存器,所述模式或寄存器使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
[0013]根據(jù)本說明書的另一個方面,公開一種用以在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度的設備,所述設備包括:用于執(zhí)行硬件指令的至少一個處理元件,所述硬件指令在運行時間測試存儲地址;以及模式或寄存器,所述模式或寄存器被設定來使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
[0014]根據(jù)本說明書的又一個方面,公開至少一種機器可讀非暫時性存儲介質,所述機器可讀非暫時性存儲介質上存儲有指令以用于在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度,其中所述指令在由至少一個處理器執(zhí)行時使所述至少一個處理器執(zhí)行以下操作:執(zhí)行硬件指令,所述硬件指令在運行時間測試存儲地址;以及設定模式或寄存器,所述模式或寄存器使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
[0015]示例性實施方案的詳細描述
[0016]諸如C/C++等高級語言表達對標量類型進行操作的程序語義。例如,可如下實行用以將兩個向量加在一起的函數(shù):
[0017]
【權利要求】
1.一種用以在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度的方法,所述方法包括: 提供硬件指令,所述硬件指令在運行時間測試存儲地址;以及 設定模式或寄存器,所述模式或寄存器使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
2.如權利要求1所述的方法,其中啟用的并行化的量是由用于指針別名使用的運行時間測試來確定的。
3.如權利要求1所述的方法,其中服從遵守所述初始標量循環(huán)的循環(huán)攜帶依賴性,啟用最大數(shù)目的向量通道以獲得最大加速。
4.如權利要求1所述的方法,其中處理器被配置來確定可啟用僅一個向量通道以再生所述標量循環(huán)的所述語義。
5.如權利要求1所述的方法,其中硬件具有用以規(guī)定啟用多少向量通道的機構,并且其中所述硬件包括模式寄存器,所述模式寄存器含有啟用的通道的數(shù)目,或所述硬件包括屏蔽寄存器,所述屏蔽寄存器控制啟用哪些通道。
6.如權利要求5所述的方法,其中所述硬件具有用以依賴于在運行時間的存儲地址的測試來設定所述模式寄存器以啟用所述最大數(shù)目的向量通道的機構。
7.如權利要求5所述的方法,其中所述硬件具有依賴于所述啟用的通道的數(shù)目來更改所述循環(huán)的迭代的數(shù)目的機構。
8.如權利要求1所述的方法,其中SIMD分級循環(huán)允許所述循環(huán)在并非向量化因數(shù)的倍數(shù)的向量長度上運行。
9.如權利要求1所述的方法,其中歸納變量的增量是通過在所述循環(huán)中啟用的向量通道的數(shù)目來按比例縮放的。
10.如權利要求1所述的方法,其中所述方法包括跨越當前根據(jù)模式寄存器啟用的向量通道來執(zhí)行約簡,所述約簡進一步包括求和、逐位運算、最小值或最大值。
11.如權利要求1所述的方法,其中所述方法包括將值從在循環(huán)的最后迭代中使用的最后向量通道復制到存儲器或復制到已知的寄存器位置。
12.一種用于在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度的設備,所述設備包括: 用于執(zhí)行硬件指令的 至少一個處理元件,所述硬件指令在運行時間測試存儲地址;以及 模式或寄存器,所述模式或寄存器被設定來使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
13.如權利要求12所述的設備,其中啟用的并行化的量是由用于指針別名使用的運行時間測試來確定的。
14.如權利要求12所述的設備,其中所述模式或寄存器規(guī)定啟用多少向量通道,并且其中所述模式或寄存器包括模式寄存器,所述模式寄存器含有啟用的通道的數(shù)目,或所述模式或寄存器包括屏蔽寄存器,所述屏蔽寄存器控制啟用哪些通道。
15.如權利要求14所述的設備,其中所述至少一個處理元件具有用以依賴于在運行時間的存儲地址的測試來設定所述模式或寄存器以啟用所述最大數(shù)目的向量通道的機構。
16.如權利要求14所述的設備,其中所述至少一個處理元件具有依賴于所述啟用的通道的數(shù)目來更改所述循環(huán)的迭代的數(shù)目的機構。
17.如權利要求12所述的設備,其中所述至少一個處理元件跨越當前根據(jù)模式寄存器啟用的向量通道來執(zhí)行約簡,所述約簡進一步包括求和、逐位運算、最小值或最大值。
18.如權利要求12所述的設備,其中所述至少一個處理元件將值從在循環(huán)的最后迭代中使用的最后向量通道復制到存儲器或復制到已知的寄存器位置。
19.至少一種機器可讀非暫時性存儲介質,其上存儲有指令以用于在存在可能的存儲器別名的情況下確定可能用于循環(huán)的并行化程度,其中所述指令在由至少一個處理器執(zhí)行時使所述至少一個處理器執(zhí)行以下操作: 執(zhí)行硬件指令,所述硬件指令在運行時間測試存儲地址;以及 設定模式或寄存器,所述模式或寄存器使循環(huán)的單個實例能夠運行遵守初始標量循環(huán)的語義的最大數(shù)目的單指令多數(shù)據(jù)(SIMD)通道以便并行地運行。
20.如權利要求19所述的機器可讀非暫時性存儲介質,其中啟用的并行化的量是由用于指針別名使用的運行 時間測試來確定的。
【文檔編號】G06F9/45GK104050025SQ201410095115
【公開日】2014年9月17日 申請日期:2014年3月14日 優(yōu)先權日:2013年3月15日
【發(fā)明者】M·G·佩爾金斯, J·L·瑞德福特, K·桑海 申請人:亞德諾半導體技術公司