欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

循環(huán)向量化方法和設(shè)備的制造方法

文檔序號:8287854閱讀:471來源:國知局
循環(huán)向量化方法和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本公開一般涉及計算平臺,并且更具體地說,涉及循環(huán)向量化方法和設(shè)備。
【背景技術(shù)】
[0002]一些計算平臺試圖通過根據(jù)向量化技術(shù)轉(zhuǎn)變代碼來改進機器級代碼執(zhí)行。例如,對應于迭代循環(huán)的原始代碼可被轉(zhuǎn)換成向量化代碼,以更好地利用計算平臺的資源。
【附圖說明】
[0003]圖1是表示示例循環(huán)的偽代碼。
[0004]圖2是表示用于向量化圖1示例的已知技術(shù)的偽代碼。
[0005]圖3是按照此公開的教導構(gòu)造的示例循環(huán)向量化器的框圖。
[0006]圖4-6圖示了與圖3的示例循環(huán)向量化器關(guān)聯(lián)的示例數(shù)據(jù)寄存器和示例陣列的示例內(nèi)容。
[0007]圖7是表示可執(zhí)行以實現(xiàn)圖3的示例循環(huán)向量化器的示例機器可讀指令的流程圖。
[0008]圖8是表示由圖3的示例循環(huán)向量化器生成的圖1的循環(huán)的示例向量化的偽代碼。
[0009]圖9是按照此公開的教導構(gòu)造的示例循環(huán)向量化器的框圖。
[0010]圖10是表示可執(zhí)行以實現(xiàn)圖9的示例循環(huán)向量化器的示例機器可讀指令的流程圖。
[0011]圖11是表示由圖9的示例循環(huán)向量化器生成的圖1的循環(huán)的示例向量化的偽代碼。
[0012]圖12是能夠執(zhí)行圖7的示例機器可讀指令以實現(xiàn)圖3的示例循環(huán)向量化器和/或圖10的示例機器可讀指令以實現(xiàn)圖9的示例循環(huán)向量化器的示例處理系統(tǒng)的框圖。
【具體實施方式】
[0013]要由處理器編譯和執(zhí)行的原始代碼可包含一個或多個迭代循環(huán)。在此類實例中,數(shù)據(jù)被加載到一個或多個寄存器中,一個或多個操作在數(shù)據(jù)上執(zhí)行,并且作為結(jié)果的信息存儲在存儲器中。計算平臺可經(jīng)由循環(huán)向量化改進原始代碼的機器級執(zhí)行。具體地說,通過對循環(huán)進行向量化使得同時執(zhí)行循環(huán)的多個迭代可基本上減少循環(huán)的執(zhí)行時間。循環(huán)迭代基本上同時執(zhí)行被稱為并行執(zhí)行。循環(huán)向量化包含將循環(huán)的多個迭代的數(shù)據(jù)加載到單個向量中(例如經(jīng)由向量寄存器實現(xiàn)的)并在整個向量上執(zhí)行循環(huán)操作。作為包含循環(huán)的多個迭代數(shù)據(jù)的向量的結(jié)果,在整個向量上執(zhí)行循環(huán)操作導致循環(huán)的多個迭代并行執(zhí)行。
[0014]循環(huán)向量化有時在具有比要經(jīng)由寄存器執(zhí)行的原始代碼(例如循環(huán))所使用的數(shù)據(jù)類型大(例如根據(jù)系統(tǒng)的具體架構(gòu)或硬件配置)的寄存器的系統(tǒng)中實現(xiàn)。例如,在具有128位寄存器的硬件上執(zhí)行的循環(huán)可使用32位整數(shù)寫或設(shè)計。為了向量化此類循環(huán),與循環(huán)的第一迭代關(guān)聯(lián)的數(shù)據(jù)被放入到寄存器中第一寄存器的較低位中,并且與循環(huán)的后面第二迭代(例如隨后在循環(huán)定義中定義的一連串迭代中)關(guān)聯(lián)的數(shù)據(jù)被加載到第一寄存器的較高位。在此類實例中,可同時執(zhí)行的循環(huán)迭代的數(shù)量等于寄存器大小(例如硬件)與要加載的并且在循環(huán)內(nèi)操作的數(shù)據(jù)類型的大小(例如軟件)之比。例如,如果循環(huán)的原始代碼將32位整數(shù)加載到變量中,并且循環(huán)要在具有128位寄存器的硬件上執(zhí)行,則要在循環(huán)的第一迭代期間加載的整數(shù)被加載到128位整數(shù)的第一 32位中。進一步說,要在循環(huán)的第二迭代期間加載的整數(shù)被加載到寄存器的第二 32位中。進一步說,要在第三迭代期間加載的整數(shù)被加載到寄存器的第三32位中。進一步說,要在循環(huán)的第四迭代期間加載的整數(shù)被加載到寄存器的第四32位中。其中與循環(huán)的多個迭代關(guān)聯(lián)的數(shù)據(jù)加載到單個寄存器中,在整個寄存器上執(zhí)行循環(huán)的對應計算或操作。來自4個32位寄存器片段的結(jié)果被存儲在適當存儲器位置中。從而,在此類實例中,循環(huán)的執(zhí)行時間減少了大致4倍(例如未將由向量化過程引起的開銷考慮進去)。
[0015]在一些循環(huán)中,在循環(huán)的每個迭代開始時評估條件,并且僅在該條件被滿足的情況下才執(zhí)行循環(huán)的剩余命令。圖1示出了此類循環(huán)100的示例偽代碼。圖1的示例循環(huán)100包含循環(huán)定義或聲明102以及在循環(huán)100的迭代開始時要評估的條件104。在循環(huán)100被初始化之后,評估條件104。為了圖示和簡潔的目的,當要檢查的條件評估引起要執(zhí)行的代碼中的隨后計算的值時,那個值在本文被稱為“真”。進一步說,為了圖示和簡潔的目的,當要檢查的條件評估引起未執(zhí)行的代碼中的隨后計算的值時,那個值在本文被稱為“假”。從而,如果條件104對于具體迭代評估為真,則執(zhí)行數(shù)據(jù)加載操作106,使用在加載操作106期間加載的數(shù)據(jù)執(zhí)行計算操作108,并且計算操作108的結(jié)果經(jīng)由寫操作110存儲。備選地,如果條件104對于具體迭代評估為假,則對于那個迭代不執(zhí)行循環(huán)100的操作106、108和110,并且循環(huán)100跳到隨后迭代(如果仍然存在任何迭代的話)。換句話說,當條件104評估為假時,操作106、108和110被繞過。
[0016]圖2的偽代碼200示出了用于對圖1的示例循環(huán)100進行向量化的已知技術(shù)。如下面所描述的,圖2的已知技術(shù)評估要向量化的循環(huán)100的不同迭代的條件104,并基于條件104的相應評估結(jié)果生成寫掩碼(在圖2的附圖標記202)。在圖2的偽代碼200中,寫掩碼由變量’kl’表示。進一步說,值’VL’表示寄存器可包含的元素數(shù)量(例如寄存器的向量長度,單位是字節(jié)、位、字等)。在圖2的示例中,當條件104評估為真時,寫掩碼’ kl’的位被設(shè)置成邏輯一(I)。進一步說,當條件104評估為假時,寫掩碼’ kl’的位被設(shè)置成邏輯零(’O’)。在圖2的偽代碼200中,每個迭代的數(shù)據(jù)被加載到向量(V)中(在圖2的附圖標記204)。進一步說,在整個向量上同時執(zhí)行圖1的循環(huán)100的操作106-110(在圖2的附圖標記206)。偽代碼200使用寫掩碼’ kl’僅將條件104評估為真的循環(huán)迭代的循環(huán)操作106-110的結(jié)果存儲在存儲器中(在圖2的附圖標記208)。例如,僅對于在寫掩碼’ kl’的對應位具有邏輯一(I)的迭代,保存循環(huán)操作106-110的結(jié)果。
[0017]值得注意的是,使用由圖2的偽代碼200表示的已知技術(shù),甚至對于條件104評估為假的循環(huán)迭代,在數(shù)據(jù)上執(zhí)行循環(huán)100的操作106-110(不過結(jié)果不存儲在存儲器中)。雖然圖2的已知技術(shù)的寫掩碼’ kl’確保僅適當數(shù)據(jù)存儲在存儲器中,但這個技術(shù)導致執(zhí)行不必要的計算,這否定了由循環(huán)100的向量化提供的相當大部分的改進(例如在執(zhí)行時間上)。因此,圖2的已知向量化技術(shù)包含低效率。
[0018]循環(huán)向量化的效率(諸如圖2中示出的)可被估計為如下比率:〈條件為真的元素數(shù)量>/〈執(zhí)行計算的元素數(shù)量〉。這個比率對于具有稀少計算的循環(huán)(例如很少滿足先于操作的條件的循環(huán)(例如很少評估為真))可能接近O。對于此類循環(huán),在圖2中圖示的已知向量化技術(shù)是高度低效率的,因為所執(zhí)行的計算的相當大部分的結(jié)果實際上未存儲在存儲器中,并且從而沒必要執(zhí)行。一些已知技術(shù)試圖通過當寫掩碼的所有剩余位都是O時增加中斷計算執(zhí)行的早期檢查來避免不必要的技術(shù)。然而,這個附加檢查給循環(huán)的向量化增加了開銷,這也減少了從循環(huán)向量化提供的性能改進。
[0019]本文公開的示例方法、設(shè)備和/或制品提供了有效的循環(huán)向量化機制。具體地說,本文公開的示例通過提高系統(tǒng)資源的效率并防止執(zhí)行不必要的循環(huán)操作(例如生成不會被存儲的數(shù)據(jù)的操作)而改進了循環(huán)向量化性能。如本文下面更詳細描述的,本文公開的示例通過評估循環(huán)的多個迭代的循環(huán)條件并根據(jù)控制掩碼中的那些評估結(jié)果設(shè)置控制掩碼位而生成控制掩碼。本文公開的示例使用控制掩碼壓縮對應于寄存器中循環(huán)迭代的數(shù)據(jù)。比如,本文公開的示例通過從寄存器中移除在控制掩碼中的對應位是邏輯零(O)的數(shù)據(jù)元素來壓縮數(shù)據(jù)。本文公開的示例將剩余數(shù)據(jù)元素存儲在陣列中。本文公開的示例以與用數(shù)據(jù)元素填充陣列直到陣列中的元素數(shù)量達到閾值(例如基于寄存器大小和/或數(shù)據(jù)元素與寄存器大小之間的大小比率)類似的方式處理附加循環(huán)迭代。本文公開的示例將陣列中的某些數(shù)據(jù)元素拷貝、移動或者以其它方式提供到寄存器,并且在寄存器的所提供數(shù)據(jù)上執(zhí)行循環(huán)的計算。根據(jù)本文公開的示例,通過移位陣列的位從陣列中移除從陣列拷貝到寄存器的數(shù)據(jù)元素。本文公開的示例對于循環(huán)迭代重復這些過程。
[0020]例如作為根據(jù)本文公開的示例的陣列的重復壓縮和填充的結(jié)果,系統(tǒng)資源被更好地利用。例如,寄存器空間和/或存儲器未填充有不必要的數(shù)據(jù)。進一步說,通過用數(shù)據(jù)元素填充陣列并在陣列中的元素數(shù)量到達閾值之后將陣列位移位,可預先設(shè)置陣列的大小(例如提前配置),由此避免了對于存儲器動態(tài)分配的需要。此外,本文公開的示例大大減少了與數(shù)據(jù)要被丟棄(例如未存儲在存儲器中)的迭代關(guān)聯(lián)的浪費的計算執(zhí)行的量。本文公開的示例所提供的浪費的計算執(zhí)行的減少對于具有稀少計算的循環(huán)特別顯著。從而,通過使用控制掩碼壓縮向量的數(shù)據(jù)元素并通過防止執(zhí)行不必要的計算,增大了對應循環(huán)向量化的效率。
[0021]圖3是按照此公開的教導構(gòu)造的示例循環(huán)向量化器300的框圖。下面結(jié)合圖1的示例循環(huán)100描述圖3的示例循環(huán)向量化器300。然而,可關(guān)于附加和/或備選循環(huán)利用圖3的示例循環(huán)向量化器300。下面關(guān)于具有指示可被加載到寄存器之一中的數(shù)據(jù)元素(例如字節(jié)、字等)數(shù)量的向量長度(VL)的寄存器描述圖3的示例循環(huán)向量化器300。示例循環(huán)向量化器300假定要向量化的循環(huán)迭代的數(shù)量是VL的倍數(shù)。VL的值可被計算為寄存器的大小與循環(huán)中數(shù)據(jù)類型的大小之間的比率(例如當寄存器大小是128位并且循環(huán)操作在32位整數(shù)上時,VL=4)。
[0022]圖4-6圖示了圖3的示例循環(huán)向量化器300所使用的示例寄存器以及在由圖3的示例循環(huán)向量化器300提供的向量化階段寄存器的示例內(nèi)容。具體地說,圖4的示例圖示了在圖3的示例循環(huán)向量化器300已經(jīng)處理了圖1的循環(huán)100的迭代的第一集合之后的示例寄存器和陣列的內(nèi)容。圖5圖示了在圖3的示例循環(huán)向量化器300已經(jīng)處理了循環(huán)100的迭代的第二集合之后的示例寄存器和陣列的內(nèi)容。圖6圖示了在圖3的示例循環(huán)向量化器300已經(jīng)處理了循環(huán)100的迭代的第三集合之后的示例寄存器和陣列的內(nèi)容。下面結(jié)合圖3進一步討論圖4-6。
[0023]圖3的示例循環(huán)向量化器300包含索引加載器301、數(shù)據(jù)加載器302和寄存器加載器303以在適當時將元素加載到寄存器中(根據(jù)由循環(huán)向量化器300生成的指令,如下面詳細描述的)。圖3的示例數(shù)據(jù)加載器302將循環(huán)的VL迭代的數(shù)據(jù)加載到數(shù)據(jù)寄存器320中。在所圖示的示例中,要由示例循環(huán)向量化器300使用的數(shù)據(jù)寄存器320由四(4)個數(shù)據(jù)元素填充,每一個數(shù)據(jù)元素對應于圖1的循環(huán)100的迭代。也就是說,數(shù)據(jù)寄存器320的大小(VL)是四(4),并且從而,圖3的示例數(shù)據(jù)加載器302在用于處理的時間加載對應于循環(huán)100的四(4)個迭代的數(shù)據(jù)。例如,圖4圖示了示例數(shù)據(jù)加載器302加載對應于循環(huán)100的迭代零(O)、一⑴、二(2)和三(3)的數(shù)據(jù)(在圖4中由數(shù)據(jù)元素a、b、c和d表示)之后的圖3數(shù)據(jù)寄存器320的內(nèi)容。
[0024]進一步說,圖3的示例索引加載器301將對應于圖1的循環(huán)100的VL迭代的索引加載到索引寄存器322中。在所圖示的示例中,索引寄存器322的索引使數(shù)據(jù)寄存器320的數(shù)據(jù)元素能夠在執(zhí)行計算之后恰當?shù)卮鎯υ谡?
當前第1頁1 2 3 4 5 6 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永顺县| 汨罗市| 榕江县| 宿松县| 保亭| 滁州市| 黑山县| 黄冈市| 怀宁县| 林西县| 长子县| 东辽县| 河池市| 密山市| 毕节市| 涡阳县| 固始县| 吴桥县| 依兰县| 长岛县| 华宁县| 肃南| 玉溪市| 德江县| 丘北县| 梁河县| 纳雍县| 宜兴市| 罗定市| 光泽县| 富裕县| 马山县| 清徐县| 芜湖市| 和田县| 尼木县| 西平县| 亳州市| 本溪| 嘉峪关市| 玉田县|