• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于LLVM的編譯鎖機(jī)制技術(shù)研究與實(shí)現(xiàn)

    2021-11-15 11:48:10鞏令欽周清雷
    關(guān)鍵詞:編譯器內(nèi)存指令

    鞏令欽 沈 莉 周清雷 胡 浩

    1(鄭州大學(xué)信息工程學(xué)院 河南 鄭州 450000) 2(中國科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 安徽 合肥 230000) 3(無錫江南計(jì)算技術(shù)研究所 江蘇 無錫 214083)

    0 引 言

    底層虛擬機(jī)(LLVM)是一款開源的編譯器架構(gòu),目前已被蘋果、Google、Facebook等各大公司采用[1]。LLVM在重用GCC前端高級(jí)語言處理的同時(shí),提供了獨(dú)特的編譯器后端移植架構(gòu)[2]。為了充分挖掘處理器的計(jì)算潛力,并行處理技術(shù)的實(shí)現(xiàn)顯得尤為重要。軟件層面中,并行處理技術(shù)通過多線程技術(shù)和向量化進(jìn)行實(shí)現(xiàn),其中基于多線程的并行處理技術(shù)對處理器的操作系統(tǒng)環(huán)境改動(dòng)最小[3]。

    在多線程環(huán)境下,程序的執(zhí)行由傳統(tǒng)的線性執(zhí)行變?yōu)榉蔷€性執(zhí)行。兩個(gè)或多個(gè)線程訪問相同的內(nèi)存單元時(shí),會(huì)造成系統(tǒng)內(nèi)存的不一致性。由于多個(gè)線程共享同一塊內(nèi)存,當(dāng)內(nèi)存訪問沖突時(shí),將產(chǎn)生錯(cuò)誤的執(zhí)行結(jié)果,同一個(gè)進(jìn)程內(nèi)的其他線程也將受到影響[4]。嚴(yán)重的情況下將導(dǎo)致程序出現(xiàn)死鎖,造成系統(tǒng)資源浪費(fèi)。并行計(jì)算的同步原語和多線程的調(diào)度的正確性都是基于原子指令實(shí)現(xiàn)的,原子指令的實(shí)現(xiàn)方式?jīng)Q定程序的正確性以及運(yùn)行性能的好壞[5]。所以,如何保證多線程環(huán)境下對內(nèi)存操作的原子性,保證訪問內(nèi)存的正確性,是LLVM多線程編譯支持中的重要課題。

    原子指令實(shí)現(xiàn)的關(guān)鍵是保證對內(nèi)存操作的原子性。原子性規(guī)定了指令對內(nèi)存單元修改的順序性。在對內(nèi)存操作進(jìn)行處理時(shí),原子指令的讀操作和寫操作之間不能有其他指令對該內(nèi)存單元進(jìn)行修改[6]。除此之外,需要確保LLVM編譯器的指令調(diào)度不會(huì)破壞原子指令的順序性和完整性。

    根據(jù)申威處理器的硬件特性,選擇使用鎖機(jī)制實(shí)現(xiàn)LLVM編譯器原子指令的編譯支持,對需要原子性訪問的地址空間加鎖。當(dāng)編譯器進(jìn)行原子指令的翻譯時(shí),使用鎖指令實(shí)現(xiàn)原子指令的原子性。本文在申威處理器下基于LLVM編譯器對鎖機(jī)制進(jìn)行研究與實(shí)現(xiàn)。在多線程環(huán)境下使用并行計(jì)算機(jī)基準(zhǔn)測試集NPB進(jìn)行測試,所有程序均通過自校驗(yàn)。在16個(gè)線程下,F(xiàn)ortran語言程序平均加速比為11.91,最大加速比為15.73,C語言程序平均加速比為8.08,最大加速比為13.32。

    1 相關(guān)工作

    鎖機(jī)制是一種可以使所有共享訪問互斥進(jìn)行的同步控制機(jī)制[7]。 鎖機(jī)制在X86和MIPS等架構(gòu)中均有不同的實(shí)現(xiàn)方式。LLVM編譯器后端中,尚未有針對申威處理器架構(gòu)的鎖機(jī)制的編譯支持。

    在X86架構(gòu)的Linux內(nèi)核中,提供了3種機(jī)制保證原子性,包括基本操作的原子性、總線鎖機(jī)制(Bus Locking)和Cache內(nèi)部鎖機(jī)制。在基本操作的原子性中,X86處理器保證了對8位、16位、32位、64位共享內(nèi)存讀寫的原子性。在總線鎖機(jī)制中使用LOCK#信號(hào)阻塞其他處理器的總線訪問請求。在Cache內(nèi)部鎖機(jī)制中通過CPU直接使用Cache內(nèi)部的鎖進(jìn)行實(shí)現(xiàn),Cache內(nèi)部鎖可以保證整條cache line不會(huì)同時(shí)被多個(gè)原子指令修改[8]。X86架構(gòu)提供原子操作的指令包括inc、xchg、xand等,通過對原子指令加入LOCK宏可以實(shí)現(xiàn)指令執(zhí)行的原子性。

    MIPS架構(gòu)使用精簡指令集計(jì)算機(jī)(Reduced Instruction Set Computer,RISC)架構(gòu)的指令集,未提供諸如X86架構(gòu)支持的inc、xchg、xand等復(fù)雜原子指令。在MIPS架構(gòu)中提供支持實(shí)現(xiàn)鎖機(jī)制的匯編指令鏈接加載(Load Linked,ll)以及條件存儲(chǔ)(Store Conditional,sc)[9]。ll指令的功能是原子性地讀取指定內(nèi)存單元中的值,sc指令的功能是原子性地對內(nèi)存單元進(jìn)行修改。在ll指令和sc指令之間的匯編指令會(huì)被原子性執(zhí)行[10]。MIPS架構(gòu)通過ll指令和sc指令進(jìn)行鎖機(jī)制的實(shí)現(xiàn)。 同時(shí),Alpha、PowerPC和ARM等RSIC指令集架構(gòu)均支持鏈接加載和條件存儲(chǔ)指令[11]。

    LLVM編譯器中對X86和MIPS指令集均有相應(yīng)的X86后端和MIPS后端進(jìn)行編譯支持。申威處理器采用自主指令集,LLVM編譯器需要增加后端對申威架構(gòu)的支持。相比于X86架構(gòu),申威處理器不提供LOCK宏及inc、xchg、xadd等復(fù)雜原子指令。相比于MIPS等RSIC指令集架構(gòu),申威處理器不提供鏈接加載和條件存儲(chǔ)作為基本的原子指令。由于申威處理器的硬件特性和指令集與MIPS架構(gòu)和X86架構(gòu)均有較大區(qū)別,所以無法使用X86架構(gòu)或MIPS架構(gòu)下鎖機(jī)制的實(shí)現(xiàn)方式作為LLVM編譯器申威架構(gòu)后端鎖機(jī)制的實(shí)現(xiàn)方式。本文基于LLVM編譯器并結(jié)合申威處理器指令集特性提出了一種鎖機(jī)制的實(shí)現(xiàn)方式,保證了多線程環(huán)境下原子操作的原子性。

    2 鎖機(jī)制的編譯支持策略

    2.1 原子指令語義映射

    LLVM編譯器架構(gòu)分為高級(jí)語言前端、中間代碼優(yōu)化器和后端代碼生成器三個(gè)部分。高級(jí)語言前端主要負(fù)責(zé)將高級(jí)語言轉(zhuǎn)化為LLVM IR,中間代碼優(yōu)化器對LLVM IR進(jìn)行優(yōu)化,后端代碼生成器對IR進(jìn)行降級(jí)和代碼生成操作。在鎖機(jī)制的實(shí)現(xiàn)過程中,前端對高級(jí)語言解析后將原子操作轉(zhuǎn)化為IR中的atomic關(guān)鍵字并傳遞給后端。IR降級(jí)的過程中,后端根據(jù)指令模板對偽指令的定義、原子操作類型和數(shù)據(jù)類型的區(qū)別,將atomic關(guān)鍵字降級(jí)為對應(yīng)的偽指令并繼續(xù)進(jìn)行后續(xù)編譯流程。在偽指令擴(kuò)展Pass中對偽指令進(jìn)行語義映射,最終生成匯編代碼。其過程如圖1所示。

    圖1 原子操作指令生成過程

    編譯器對偽指令進(jìn)行語義映射處理時(shí),對每條偽指令映射的匯編代碼通過鎖指令進(jìn)行加鎖。多線程環(huán)境下,并行的指令流水在遇到加鎖的匯編代碼時(shí)轉(zhuǎn)為串行執(zhí)行。根據(jù)申威處理器的硬件特性,為8位、16位、32位和64位數(shù)據(jù)類型的數(shù)據(jù)設(shè)計(jì)不同的偽指令。每種數(shù)據(jù)類型的偽指令根據(jù)功能的不同可劃分為2種,分別為原子二元運(yùn)算操作和原子比較并交換操作。原子二元操作包括原子加、原子減、原子與、原子交換、原子或、原子異或。對每條偽指令,在后端實(shí)現(xiàn)偽指令語義映射及鎖機(jī)制降級(jí)處理流程。其中,偽指令含義參考Linux內(nèi)核中內(nèi)建函數(shù)接口設(shè)計(jì),不同數(shù)據(jù)類型的內(nèi)建函數(shù)對應(yīng)不同的偽指令。面向申威處理器的LLVM的偽指令的含義如表1所示。其中,n=8,16,32,64,分別表示8位、16位、32位、64位數(shù)據(jù)類型。

    表1 偽指令設(shè)計(jì)及含義

    在實(shí)現(xiàn)對每條偽指令的語義映射過程中,將加鎖的匯編代碼作為一個(gè)獨(dú)立的基本塊。該基本塊內(nèi)的指令不參與指令調(diào)度。在設(shè)計(jì)鎖機(jī)制匯編基本塊時(shí),需要考慮指令排布和寄存器的使用,以盡可能少地匯編指令實(shí)現(xiàn)鎖機(jī)制。基本塊的實(shí)現(xiàn)過程如圖2所示。

    圖2 鎖機(jī)制基本塊的實(shí)現(xiàn)

    圖3 基本塊的插入

    LLVM編譯器前端對高級(jí)語言解析后將原子操作轉(zhuǎn)化為IR中的atomic關(guān)鍵字并傳遞給后端。后端將atomic關(guān)鍵字轉(zhuǎn)換為偽指令后,對偽指令進(jìn)行降級(jí)處理,實(shí)現(xiàn)原子指令的語義映射。

    2.2 鎖機(jī)制數(shù)據(jù)處理

    申威處理器中鎖機(jī)制需要支持8位、16位、32位和64位數(shù)據(jù)讀寫的原子操作。申威處理器對齊訪存最小粒度為4字節(jié),32位數(shù)據(jù)和64位數(shù)據(jù)類型的地址不需要進(jìn)行對齊處理。8位和16位的數(shù)據(jù)需要鎖機(jī)制對內(nèi)存地址進(jìn)行對齊處理后執(zhí)行存取操作。鎖機(jī)制中對8位和16位數(shù)據(jù)類型處理包括對非對齊內(nèi)存地址的對齊處理和保證非對齊地址中有效數(shù)據(jù)提取和寫回的正確性。

    在鎖機(jī)制中,傳入的非對齊內(nèi)存地址的對齊處理可以通過與立即數(shù)的與非操作實(shí)現(xiàn)。如需確保地址N字節(jié)對齊,則傳入的地址與立即數(shù)N-1進(jìn)行與非操作。

    非對齊地址中的有效數(shù)據(jù)的正確提取和寫回需要使用有效數(shù)據(jù)位拼接的方式實(shí)現(xiàn)。鎖機(jī)制中使用數(shù)據(jù)抽取操作,數(shù)據(jù)插入操作,數(shù)據(jù)屏蔽操作和數(shù)據(jù)按位或操作對數(shù)據(jù)進(jìn)行處理。數(shù)據(jù)插入處理指將有效數(shù)據(jù)插入全零內(nèi)存區(qū)域,確保存儲(chǔ)有效數(shù)據(jù)的內(nèi)存單元中沒有臟數(shù)據(jù)位。數(shù)據(jù)插入處理如圖4所示。

    圖4 數(shù)據(jù)插入處理

    數(shù)據(jù)插入操作處理在內(nèi)存單元中,有效數(shù)據(jù)前后均有數(shù)據(jù)位的情況。數(shù)據(jù)插入處理在鎖機(jī)制算法中使用insert函數(shù)表示。

    數(shù)據(jù)抽取處理指將有效數(shù)據(jù)抽取至全零內(nèi)存區(qū)域,確保存儲(chǔ)有效數(shù)據(jù)的內(nèi)存單元中沒有臟數(shù)據(jù)位。數(shù)據(jù)抽取處理在鎖機(jī)制算法中使用extract函數(shù)表示。數(shù)據(jù)抽取處理如圖5所示。

    圖5 數(shù)據(jù)抽取處理

    數(shù)據(jù)屏蔽處理指屏蔽內(nèi)存單元中的有效數(shù)據(jù),將內(nèi)存單元中除有效數(shù)據(jù)外的數(shù)據(jù)位抽取至全零內(nèi)存區(qū)域。確保有效數(shù)據(jù)寫回時(shí)內(nèi)存單元的無關(guān)數(shù)據(jù)位的一致性。數(shù)據(jù)屏蔽處理在鎖機(jī)制算法中使用mask函數(shù)表示。數(shù)據(jù)屏蔽處理如圖6所示。

    圖6 數(shù)據(jù)屏蔽處理

    通過數(shù)據(jù)插入操作,數(shù)據(jù)抽取操作,數(shù)據(jù)屏蔽操作和數(shù)據(jù)按位或操作進(jìn)行數(shù)據(jù)拼接操作,可保證非對齊內(nèi)存地址中有效數(shù)據(jù)提取和寫入的正確性。數(shù)據(jù)拼接操作過程如圖7所示。

    圖7 數(shù)據(jù)拼接操作

    從對齊內(nèi)存地址中取出數(shù)據(jù)后,使用數(shù)據(jù)抽取操作和數(shù)據(jù)屏蔽操作將有效數(shù)據(jù)和其余數(shù)據(jù)位抽取到全零區(qū)域中。然后使用抽取后的有效數(shù)據(jù)進(jìn)行運(yùn)算,將運(yùn)算后的有效數(shù)據(jù)與抽取后的其余數(shù)據(jù)位進(jìn)行按位或操作,得到完整的有效數(shù)據(jù)并寫回內(nèi)存。

    3 鎖機(jī)制編譯支持技術(shù)實(shí)現(xiàn)

    3.1 32位和64位數(shù)據(jù)的鎖機(jī)制實(shí)現(xiàn)

    在實(shí)現(xiàn)鎖機(jī)制的過程中,關(guān)鍵操作包括lock_load32、lock_load64、lock_store32、lock_store64、lock_read、lock_write和barrier。lock_load32操作表示在對齊鎖地址指向的內(nèi)存單元中讀取4字節(jié)數(shù)據(jù),lock_load64操作表示在對齊鎖地址指向的內(nèi)存單元中讀取8字節(jié)數(shù)據(jù)。lock_store32操作對內(nèi)存單元進(jìn)行修改,執(zhí)行4字節(jié)數(shù)據(jù)的原子寫操作,lock_store64操作執(zhí)行8字節(jié)數(shù)據(jù)的原子寫操作。lock_write操作判斷是否獲取鎖。lock_read操作判斷鎖機(jī)制是否成功執(zhí)行。barrier表示存儲(chǔ)器欄柵,編譯器在存儲(chǔ)器欄柵指令之前所有讀寫操作都執(zhí)行后才可以執(zhí)行存儲(chǔ)器欄柵指令之后的操作。

    val_cmp_32表示32位數(shù)類型的原子比較并交換操作。以val_cmp_32偽指令為例,不需要鎖機(jī)制進(jìn)行數(shù)據(jù)處理的32位數(shù)據(jù)類型的原子性比較并交換操作在鎖機(jī)制中的偽指令語義映射算法如算法1所示。

    算法1val_cmp_32語義映射

    輸入: new_val, old_val, lock_ptr。

    輸出: res_val。

    do{

    insert(barrier)

    lock_val ← lock_load32(lock_ptr)

    res_val ← lock_val

    cmp ← old_val == lock_val

    flag ← lock_write(cmp)

    if cmp is 0 then

    break

    else if flag is 1 then

    lock_store32(new_val, lock_ptr)

    end if

    flag ← lock_read()

    }while flag is 0

    算法1是val_cmp_32偽指令語義映射后的邏輯的偽代碼。該算法將參數(shù)中指針指向的值與老值比較,若相等,則將新值寫入內(nèi)存,并返回老值。若比較失敗,則不更改原內(nèi)存地址中的值并返回參數(shù)指針指向的值。當(dāng)lock_write(cmp)為1時(shí),表示獲取寫鎖成功,否則跳出鎖機(jī)制處理。當(dāng)lock_read()為1時(shí)表示鎖機(jī)制成功執(zhí)行,否則重新執(zhí)行該原子操作直至鎖機(jī)制成功執(zhí)行。64位數(shù)據(jù)類型的比較并交換與此類似。

    原子加、原子減、原子與、原子交換、原子或、原子異或操作均為二元操作,可以使用相同的處理流程。以原子加的add_fetch_32偽指令為例,鎖機(jī)制的實(shí)現(xiàn)如算法2所示。

    算法2add_fetch_32語義映射

    輸入: val, lock_ptr。

    輸出: res_val。

    do{

    教育是未來的事業(yè),兒童是民族的未來。教師要把一個(gè)不懂事的孩子培養(yǎng)成國家的棟梁,民族的脊梁,要付出畢生的精力。教師工作是平凡的,每天上課下課、備課、批改作業(yè),為學(xué)生解惑排難;但教師的職業(yè)又是偉大的,教師要把兒童這個(gè)幼苗培育成參天大樹。古人說:“十年樹木,百年樹人?!闭f明創(chuàng)造物質(zhì)是比較容易的,塑造人、鑄造人的精神是要經(jīng)過幾代人的努力。因此,教師要滿懷對學(xué)生的真心關(guān)愛,以學(xué)生的發(fā)展為本,甘為人梯,樂于奉獻(xiàn),用心靈和汗水一點(diǎn)一滴地滋潤學(xué)生的心田,把全部精力和滿腔熱情獻(xiàn)給教育事業(yè)。

    insert(barrier)

    lock_val ← lock_load32(lock_ptr)

    lock_write(1)

    res_val ← val + lock_val

    lock_store32(res_val, lock_ptr)

    }while lock_read() is 0

    算法2是add_fetch_32偽指令語義映射后的邏輯的偽代碼。該算法將參數(shù)值與內(nèi)存中的老值相加,返回相加后的新值,并存入內(nèi)存。res_val是執(zhí)行二元運(yùn)算操作后的結(jié)果值。即將指針指向內(nèi)存地址中的值與參數(shù)值執(zhí)行二元運(yùn)算操作,如原子加、原子減等6種二元運(yùn)算操作。64位數(shù)據(jù)類型的二元運(yùn)算操作與此類似。

    3.2 8位和16位數(shù)據(jù)的鎖機(jī)制實(shí)現(xiàn)

    val_cmp_8表示8位數(shù)據(jù)類型的原子比較并交換操作。以偽指令val_cmp_8為例,鎖機(jī)制中需要對數(shù)據(jù)進(jìn)行處理的8位數(shù)據(jù)原子比較并交換操作的偽指令語義映射算法如算法3所示。

    算法3val_cmp_8語義映射

    輸入: new_val, old_val, lock_ptr。

    輸出: res_val。

    do{

    insert(barrier)

    lock_align_ptr ← nand(lock_ptr,7)

    eff_new_val ← insert(new_val, lock_ptr)

    ori_lock_val ← lock_load64(lock_align_ptr)

    eff_lock_val ← extract(ori_lock_val, lock_ptr)

    res_val ← eff_lock_val

    cmp ← old_val == eff_lock_val

    flag ← lock_write(cmp)

    if cmp is 0 then

    break

    if flag is 1 then

    other_lock_val ← mask(ori_lock_val,lock_ptr)

    ret_val ← or(other_lock_val, new_val)

    lock_store64(ret_val, lock_align_ptr)

    end if

    }while lock_read() is 0

    算法3中,主體算法框架與4.1節(jié)類似,算法中主要新增對8位數(shù)據(jù)類型的有效數(shù)據(jù)和非對齊內(nèi)存地址的處理。nand(lock_ptr,7)表示通過與立即數(shù)7進(jìn)行與非操作,實(shí)現(xiàn)對地址進(jìn)行8字節(jié)對齊處理。or表示數(shù)據(jù)按位邏輯或。該算法將參數(shù)中指針指向的值與老值比較,若相等,則將新值寫入內(nèi)存,并返回老值,若不相等,則返回指針指向的值。16位數(shù)據(jù)類型的比較并交換與此類似。

    原子加、原子減、原子與、原子交換、原子或、原子異或均為二元操作,可以使用相同的鎖機(jī)制處理流程。以偽指令add_fetch_8為例,鎖機(jī)制中需要對數(shù)據(jù)進(jìn)行處理的8位數(shù)據(jù)原子加操作的偽指令語義映射算法如算法4所示。

    算法4add_fetch_8語義映射

    輸入: val, lock_ptr。

    輸出: res_val。

    do{

    insert(barrier)

    lock_align_ptr ← nand(lock_ptr, 7)

    ori_lock_val ← lock_load64(lock_align_ptr)

    lock_write(1)

    eff_lock_val ←extract(ori_lock_val, lock_ptr)

    ori_res_val ← val + eff_lock_val

    eff_res_val ←insert(ori_res_val, lock_ptr)

    other_lock_val ← mask(ori_lock_val,lock_ptr)

    res_val ← or(other_lock_val, eff_res_val)

    lock_store64(res_val, lock_align_ptr);

    }while lock_read() is 0

    算法4是add_fetch_8偽指令語義映射后的邏輯偽代碼。該算法將參數(shù)值與內(nèi)存中的老值執(zhí)行二元運(yùn)算操作,如原子加,返回二元運(yùn)算操作后的新值,并存入內(nèi)存。使用nand(lock_ptr,7)處理非對齊內(nèi)存地址,使用insert操作、extract操作和mask操作實(shí)現(xiàn)有效數(shù)據(jù)位的提取和寫回。16位數(shù)據(jù)類型的二元運(yùn)算操作與此類似。

    4 實(shí) 驗(yàn)

    在申威1621處理器的LLVM編譯器上對鎖機(jī)制分別進(jìn)行正確性測試和性能測試。LLVM編譯器版本為7.0,并行測試環(huán)境為16個(gè)CPU的并行環(huán)境。正確性測試使用Linux內(nèi)核源碼中的內(nèi)建函數(shù)進(jìn)行測試。性能測試采用NPB(NAS Parallel Benchmark)測試集[12]。 NPB測試集為3.0版本的C語言NPB測試集和3.0版本的Fortran語言NPB測試集。

    4.1 正確性測試

    Liunx內(nèi)核源碼中,通過一系列內(nèi)建函數(shù)實(shí)現(xiàn)原子操作[13]。內(nèi)建函數(shù)以及其完成的功能如表2所示。

    表2 Liunx內(nèi)建函數(shù)功能

    通過調(diào)用Linux內(nèi)核中的13個(gè)內(nèi)建函數(shù)并分別傳入8位、16位、32位、64位數(shù)據(jù)對LLVM中的鎖機(jī)制進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果如表3所示。

    表3 功能測試結(jié)果

    實(shí)驗(yàn)結(jié)果表明LLVM編譯器鎖機(jī)制中新增52條偽指令均正確運(yùn)行,執(zhí)行結(jié)果與標(biāo)準(zhǔn)結(jié)果一致。在申威1621處理器的多線程環(huán)境下,LLVM編譯器可以正確通過鎖機(jī)制實(shí)現(xiàn)原子操作。

    4.2 性能測試

    NPB是NASA提供的,用于評(píng)估并行超級(jí)計(jì)算機(jī)性能的測試程序集,是并行計(jì)算機(jī)基準(zhǔn)測試程序。其中共包含8道測試題目,分別為EP(Embarrassingly parallel)、MG(3D MultiGrid)、FT(Fast Fourier transform)、IS(Integer sort)、CG(Conjugate Gradient)、LU(Lower upper triangular)、SP(Scalar penta-diagonal)、BT(Block Tri-Diagonal)[14]。每題包含5種測試規(guī)模,分別為S、W、A、B、C。其中S類為樣例程序,W類通常用于工作站,A類通常是運(yùn)行中等性能的工作站系統(tǒng),B類運(yùn)行于高端的工作站系統(tǒng)或者小型的并行系統(tǒng),C類則用于超級(jí)計(jì)算系統(tǒng)[15]。選用B類規(guī)模進(jìn)行測試,B類規(guī)模大小如表4所示。

    表4 B類規(guī)模大小

    在LLVM編譯器中,C/C++語言采用clang作為前端對進(jìn)行編譯處理,F(xiàn)ortran語言采用flang作為前端進(jìn)行編譯處理。本文測試了C語言的NPB測試集和Fortran語言的NPB測試集,對16個(gè)線程下OpenMP庫的加速情況進(jìn)行了對比。

    面向申威1621處理器的LLVM編譯器對于C語言程序的并行加速比如表5所示,平均加速比為8.08,最大加速比為13.32。

    表5 C語言程序NPB加速比

    續(xù)表5

    面向申威1621處理器的LLVM編譯器對于Fortran語言程序的并行加速比如表6所示,平均加速比為11.91,最大加速比為15.73。

    表6 Fortran語言程序NPB加速比

    4.3 實(shí)驗(yàn)結(jié)果分析

    由功能性測試可知,鎖機(jī)制中52條偽指令均可完成對應(yīng)的原子性操作。在基于申威1621處理器的LLVM編譯器上加入鎖機(jī)制后,可正確對內(nèi)存進(jìn)行原子性的讀寫操作,實(shí)現(xiàn)了8位、16位、32位、64位數(shù)據(jù)類型的原子加、原子減、原子與、原子交換、原子或、原子異或、原子比較并交換操作,保證了多線程環(huán)境下對內(nèi)存訪問的一致性。

    由性能測試可知,在加入鎖機(jī)制后,LLVM編譯器通過使用OpenMP庫,C語言版NPB測試集所有程序和Fortran語言版NPB測試集所有程序在16個(gè)線程的環(huán)境下均正確執(zhí)行并自校驗(yàn)通過。C語言版NPB測試集程序平均加速比為8.08,最大加速比為13.32。Fortran語言版NPB測試集程序平均加速比為11.91,最大加速比為15.73。

    5 結(jié) 語

    本文對鎖機(jī)制和原子指令進(jìn)行了介紹,結(jié)合申威處理器的特性與LLVM編譯器的特點(diǎn),針對鎖機(jī)制的具體實(shí)現(xiàn)進(jìn)行了討論并介紹了52條偽指令及其算法實(shí)現(xiàn)。

    通過本文對鎖機(jī)制的實(shí)現(xiàn),LLVM編譯器可以正確穩(wěn)定地在申威處理器下的多線程環(huán)境中運(yùn)行,使得申威處理器的多核化優(yōu)勢得到了利用和體現(xiàn)。下一步的工作將對鎖機(jī)制開銷進(jìn)行進(jìn)一步的分析并充分挖掘申威處理器并行計(jì)算的潛力。

    猜你喜歡
    編譯器內(nèi)存指令
    聽我指令:大催眠術(shù)
    基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
    “春夏秋冬”的內(nèi)存
    ARINC661顯控指令快速驗(yàn)證方法
    LED照明產(chǎn)品歐盟ErP指令要求解讀
    電子測試(2018年18期)2018-11-14 02:30:34
    通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
    坐標(biāo)系旋轉(zhuǎn)指令數(shù)控編程應(yīng)用
    基于內(nèi)存的地理信息訪問技術(shù)
    編譯器無關(guān)性編碼在微控制器中的優(yōu)勢
    上網(wǎng)本為什么只有1GB?
    免费看十八禁软件| 精品国产乱码久久久久久小说| 男女无遮挡免费网站观看| 一级黄色大片毛片| 久久影院123| 中文欧美无线码| 视频区欧美日本亚洲| av在线老鸭窝| 国产黄色视频一区二区在线观看| 欧美少妇被猛烈插入视频| cao死你这个sao货| 欧美老熟妇乱子伦牲交| 亚洲av综合色区一区| 欧美乱码精品一区二区三区| 亚洲国产最新在线播放| 亚洲精品久久久久久婷婷小说| 国产精品一区二区在线观看99| 日本欧美视频一区| 男人爽女人下面视频在线观看| xxxhd国产人妻xxx| 99久久精品国产亚洲精品| av网站免费在线观看视频| 九草在线视频观看| 青春草视频在线免费观看| 老汉色∧v一级毛片| 黄色怎么调成土黄色| 欧美精品av麻豆av| 18禁黄网站禁片午夜丰满| 欧美日韩成人在线一区二区| 美女大奶头黄色视频| 肉色欧美久久久久久久蜜桃| 色94色欧美一区二区| 欧美av亚洲av综合av国产av| 一级黄色大片毛片| 一本综合久久免费| 成人影院久久| 国产97色在线日韩免费| 一级,二级,三级黄色视频| 99国产综合亚洲精品| 亚洲中文av在线| 国产成人系列免费观看| 18禁观看日本| 下体分泌物呈黄色| 欧美中文综合在线视频| 一区二区av电影网| 久久99精品国语久久久| 久久国产精品大桥未久av| 一本一本久久a久久精品综合妖精| 日本五十路高清| 侵犯人妻中文字幕一二三四区| 亚洲精品av麻豆狂野| 婷婷丁香在线五月| 中国美女看黄片| 久久精品成人免费网站| 欧美老熟妇乱子伦牲交| 97在线人人人人妻| 久久国产精品影院| 91精品国产国语对白视频| 男女边吃奶边做爰视频| 一区二区av电影网| 亚洲精品久久久久久婷婷小说| 国产熟女欧美一区二区| www.999成人在线观看| 日本欧美视频一区| 自线自在国产av| 亚洲伊人色综图| 午夜激情av网站| 亚洲色图综合在线观看| 免费久久久久久久精品成人欧美视频| 只有这里有精品99| 丝袜美腿诱惑在线| 岛国毛片在线播放| 国产欧美日韩精品亚洲av| 91成人精品电影| 日韩大码丰满熟妇| 天天影视国产精品| 悠悠久久av| 亚洲中文字幕日韩| 狂野欧美激情性bbbbbb| 丝袜脚勾引网站| 日本欧美国产在线视频| 啦啦啦在线免费观看视频4| 男女国产视频网站| 欧美日韩福利视频一区二区| 欧美xxⅹ黑人| 久久人妻熟女aⅴ| 中文字幕人妻丝袜一区二区| 免费看不卡的av| 精品亚洲成国产av| 一个人免费看片子| 悠悠久久av| 国产精品一二三区在线看| 亚洲自偷自拍图片 自拍| 国产成人免费无遮挡视频| 亚洲欧洲精品一区二区精品久久久| 七月丁香在线播放| 日本一区二区免费在线视频| 男女边摸边吃奶| 久久人妻福利社区极品人妻图片 | 99国产精品免费福利视频| 美女午夜性视频免费| 欧美 日韩 精品 国产| 黄色视频在线播放观看不卡| 又黄又粗又硬又大视频| 国产亚洲欧美精品永久| 日本wwww免费看| 视频在线观看一区二区三区| 亚洲av日韩在线播放| 90打野战视频偷拍视频| 大香蕉久久网| 久久鲁丝午夜福利片| 午夜免费观看性视频| 丝袜喷水一区| 女人被躁到高潮嗷嗷叫费观| 久久人人爽人人片av| 亚洲国产精品成人久久小说| 在线观看免费高清a一片| 国产高清videossex| 国产高清国产精品国产三级| 一本色道久久久久久精品综合| 日本wwww免费看| 欧美人与性动交α欧美精品济南到| 国产精品偷伦视频观看了| 汤姆久久久久久久影院中文字幕| 老鸭窝网址在线观看| 永久免费av网站大全| 国产av精品麻豆| 视频区欧美日本亚洲| 日本黄色日本黄色录像| 色94色欧美一区二区| 欧美人与善性xxx| 精品亚洲成国产av| 亚洲专区中文字幕在线| 热re99久久精品国产66热6| 亚洲专区国产一区二区| 午夜两性在线视频| 水蜜桃什么品种好| 亚洲国产欧美日韩在线播放| 女人被躁到高潮嗷嗷叫费观| 黑人巨大精品欧美一区二区蜜桃| 日韩制服丝袜自拍偷拍| 在线观看www视频免费| 老司机靠b影院| 国产高清视频在线播放一区 | 久热爱精品视频在线9| 亚洲欧美中文字幕日韩二区| 免费在线观看影片大全网站 | 久久亚洲精品不卡| 国产精品二区激情视频| 1024香蕉在线观看| h视频一区二区三区| 国产精品香港三级国产av潘金莲 | 色婷婷av一区二区三区视频| 在线看a的网站| 超色免费av| 纵有疾风起免费观看全集完整版| 久久久久久久久久久久大奶| 亚洲精品久久久久久婷婷小说| bbb黄色大片| 成年人黄色毛片网站| 麻豆av在线久日| 满18在线观看网站| av网站免费在线观看视频| 中文字幕人妻熟女乱码| 可以免费在线观看a视频的电影网站| 男女边吃奶边做爰视频| 亚洲情色 制服丝袜| 欧美 日韩 精品 国产| 久久ye,这里只有精品| 七月丁香在线播放| 国产成人欧美在线观看 | 国产亚洲精品久久久久5区| 视频区欧美日本亚洲| 视频区欧美日本亚洲| 免费观看av网站的网址| 在线看a的网站| 丝袜人妻中文字幕| 视频在线观看一区二区三区| 18在线观看网站| 在线观看免费午夜福利视频| 国产精品人妻久久久影院| 9色porny在线观看| 男男h啪啪无遮挡| 美国免费a级毛片| 亚洲自偷自拍图片 自拍| 性色av一级| 欧美日韩亚洲高清精品| 国产深夜福利视频在线观看| 巨乳人妻的诱惑在线观看| 波多野结衣av一区二区av| 蜜桃在线观看..| 国产在线视频一区二区| 中文字幕另类日韩欧美亚洲嫩草| 午夜福利免费观看在线| 亚洲中文av在线| 久久精品国产亚洲av高清一级| 男女下面插进去视频免费观看| 丝袜人妻中文字幕| 老司机午夜十八禁免费视频| 亚洲国产中文字幕在线视频| 50天的宝宝边吃奶边哭怎么回事| 久久久久久久久免费视频了| 亚洲国产最新在线播放| 9热在线视频观看99| 女人被躁到高潮嗷嗷叫费观| 97精品久久久久久久久久精品| 欧美成人午夜精品| 女人被躁到高潮嗷嗷叫费观| 日本五十路高清| 国产av一区二区精品久久| 18禁国产床啪视频网站| 国产欧美日韩精品亚洲av| 免费观看av网站的网址| 国产精品成人在线| 亚洲国产av新网站| www.精华液| 自拍欧美九色日韩亚洲蝌蚪91| 黑人欧美特级aaaaaa片| 9191精品国产免费久久| 超碰97精品在线观看| 亚洲精品国产av蜜桃| 波多野结衣av一区二区av| 亚洲精品久久成人aⅴ小说| 赤兔流量卡办理| 久久久国产精品麻豆| 肉色欧美久久久久久久蜜桃| 欧美日韩一级在线毛片| 国产一区二区在线观看av| 欧美日韩视频高清一区二区三区二| 中文乱码字字幕精品一区二区三区| 亚洲专区中文字幕在线| 99久久人妻综合| 精品人妻在线不人妻| 黄频高清免费视频| 在线看a的网站| 超色免费av| 久久久久久亚洲精品国产蜜桃av| 丰满人妻熟妇乱又伦精品不卡| 黄色毛片三级朝国网站| 好男人视频免费观看在线| 国产精品99久久99久久久不卡| 国产欧美日韩一区二区三区在线| 国产免费又黄又爽又色| 亚洲精品一二三| 一二三四社区在线视频社区8| 黄频高清免费视频| 日本猛色少妇xxxxx猛交久久| 好男人视频免费观看在线| 国产爽快片一区二区三区| 精品国产一区二区三区四区第35| 19禁男女啪啪无遮挡网站| 人成视频在线观看免费观看| 日本av免费视频播放| 久久久国产一区二区| 丰满少妇做爰视频| 亚洲精品第二区| 搡老岳熟女国产| 欧美在线黄色| 在线精品无人区一区二区三| 中文字幕另类日韩欧美亚洲嫩草| 久久性视频一级片| 女人精品久久久久毛片| 一级毛片女人18水好多 | 在线观看人妻少妇| 亚洲成av片中文字幕在线观看| 亚洲国产精品一区二区三区在线| 18禁黄网站禁片午夜丰满| 在线观看国产h片| 97精品久久久久久久久久精品| 巨乳人妻的诱惑在线观看| 成人免费观看视频高清| 国产色视频综合| 亚洲综合色网址| 精品高清国产在线一区| 中文字幕亚洲精品专区| av天堂在线播放| 亚洲国产日韩一区二区| 满18在线观看网站| 亚洲人成电影观看| 亚洲精品乱久久久久久| 大片免费播放器 马上看| 999精品在线视频| 午夜影院在线不卡| www.999成人在线观看| av网站免费在线观看视频| 国产欧美日韩综合在线一区二区| 午夜久久久在线观看| 亚洲av片天天在线观看| 久热爱精品视频在线9| 国产亚洲av片在线观看秒播厂| 男女床上黄色一级片免费看| 亚洲一区二区三区欧美精品| 国产一区二区激情短视频 | 精品福利观看| 久久久国产欧美日韩av| 91精品三级在线观看| 18在线观看网站| 精品一区二区三区四区五区乱码 | 日韩中文字幕视频在线看片| 99久久综合免费| 另类精品久久| 欧美黑人欧美精品刺激| 亚洲一区二区三区欧美精品| 两人在一起打扑克的视频| 黄色毛片三级朝国网站| 九色亚洲精品在线播放| 国产日韩欧美亚洲二区| 亚洲第一青青草原| 久久人妻熟女aⅴ| 又大又黄又爽视频免费| 国产亚洲午夜精品一区二区久久| 一本大道久久a久久精品| 纯流量卡能插随身wifi吗| 1024香蕉在线观看| 精品免费久久久久久久清纯 | 欧美精品人与动牲交sv欧美| 人成视频在线观看免费观看| 久久这里只有精品19| 久久影院123| 下体分泌物呈黄色| 欧美av亚洲av综合av国产av| 99国产精品免费福利视频| 精品少妇黑人巨大在线播放| 久久久久久久久久久久大奶| 首页视频小说图片口味搜索 | 亚洲欧美一区二区三区国产| 成年av动漫网址| 飞空精品影院首页| 人妻一区二区av| 欧美成狂野欧美在线观看| av天堂久久9| 又紧又爽又黄一区二区| 日韩 欧美 亚洲 中文字幕| 一级,二级,三级黄色视频| 激情五月婷婷亚洲| 日韩中文字幕欧美一区二区 | 日韩大片免费观看网站| 99国产精品一区二区三区| 美女午夜性视频免费| 亚洲国产欧美一区二区综合| 一级片'在线观看视频| 无限看片的www在线观看| 国产一区有黄有色的免费视频| 叶爱在线成人免费视频播放| 日本vs欧美在线观看视频| 在线观看免费高清a一片| 巨乳人妻的诱惑在线观看| 国产免费福利视频在线观看| 大码成人一级视频| 国产精品熟女久久久久浪| 国产欧美日韩一区二区三 | 免费少妇av软件| 少妇裸体淫交视频免费看高清 | 国产一区二区三区av在线| av片东京热男人的天堂| 色视频在线一区二区三区| 久久久久久免费高清国产稀缺| 欧美黄色片欧美黄色片| 又大又黄又爽视频免费| 我的亚洲天堂| 久久久精品区二区三区| 欧美老熟妇乱子伦牲交| 国产黄色免费在线视频| svipshipincom国产片| a级毛片黄视频| 考比视频在线观看| 汤姆久久久久久久影院中文字幕| 精品少妇久久久久久888优播| 黄网站色视频无遮挡免费观看| 亚洲成av片中文字幕在线观看| 一级片免费观看大全| 日本av手机在线免费观看| 国产又爽黄色视频| 国产色视频综合| 国产片特级美女逼逼视频| 18禁国产床啪视频网站| 国产成人免费观看mmmm| 亚洲精品在线美女| 51午夜福利影视在线观看| 多毛熟女@视频| 男人爽女人下面视频在线观看| 日韩精品免费视频一区二区三区| 国产精品久久久久久人妻精品电影 | 亚洲成人免费电影在线观看 | 亚洲人成电影免费在线| 一区二区三区四区激情视频| 久久人人97超碰香蕉20202| 成人亚洲欧美一区二区av| 成人三级做爰电影| 一级黄片播放器| 成人亚洲欧美一区二区av| 婷婷丁香在线五月| 欧美精品亚洲一区二区| 成人午夜精彩视频在线观看| 免费人妻精品一区二区三区视频| 国产99久久九九免费精品| 亚洲伊人色综图| 国产成人精品久久二区二区91| 制服人妻中文乱码| 另类精品久久| 国产熟女欧美一区二区| 十分钟在线观看高清视频www| 热re99久久精品国产66热6| 电影成人av| 一本综合久久免费| 日韩,欧美,国产一区二区三区| 2018国产大陆天天弄谢| 日本五十路高清| 别揉我奶头~嗯~啊~动态视频 | 啦啦啦在线观看免费高清www| 国产av国产精品国产| 亚洲精品久久成人aⅴ小说| 最新的欧美精品一区二区| 久久精品亚洲熟妇少妇任你| 在线精品无人区一区二区三| 2018国产大陆天天弄谢| 黄网站色视频无遮挡免费观看| 天天操日日干夜夜撸| 99久久99久久久精品蜜桃| 亚洲av美国av| 日本wwww免费看| www日本在线高清视频| 国产精品久久久人人做人人爽| 在线观看免费日韩欧美大片| 日日夜夜操网爽| 日本欧美视频一区| 亚洲色图 男人天堂 中文字幕| 久久99热这里只频精品6学生| 日本91视频免费播放| 亚洲一码二码三码区别大吗| 国产日韩一区二区三区精品不卡| 欧美亚洲日本最大视频资源| 久久女婷五月综合色啪小说| 久久这里只有精品19| 热99国产精品久久久久久7| 狠狠精品人妻久久久久久综合| 亚洲,欧美,日韩| 亚洲人成电影免费在线| 国产精品久久久久成人av| h视频一区二区三区| 如日韩欧美国产精品一区二区三区| 国产精品一区二区免费欧美 | 777久久人妻少妇嫩草av网站| 在线精品无人区一区二区三| 国产极品粉嫩免费观看在线| 我要看黄色一级片免费的| 亚洲精品一二三| av福利片在线| 一级毛片我不卡| 久久精品aⅴ一区二区三区四区| 99香蕉大伊视频| 国语对白做爰xxxⅹ性视频网站| 国产午夜精品一二区理论片| 国产97色在线日韩免费| 秋霞在线观看毛片| 欧美日韩综合久久久久久| 两个人看的免费小视频| 老司机午夜十八禁免费视频| 深夜精品福利| 免费不卡黄色视频| 手机成人av网站| 十八禁网站网址无遮挡| 99热网站在线观看| 亚洲五月色婷婷综合| 捣出白浆h1v1| 大片电影免费在线观看免费| 老汉色∧v一级毛片| 亚洲黑人精品在线| 色婷婷久久久亚洲欧美| 视频区欧美日本亚洲| 日本av手机在线免费观看| 亚洲,欧美,日韩| 黑人欧美特级aaaaaa片| 免费在线观看完整版高清| 大码成人一级视频| 男人添女人高潮全过程视频| 自拍欧美九色日韩亚洲蝌蚪91| 在线观看人妻少妇| 成人国语在线视频| 精品人妻1区二区| 两人在一起打扑克的视频| 黄网站色视频无遮挡免费观看| 交换朋友夫妻互换小说| 久久人人爽av亚洲精品天堂| 精品人妻1区二区| 日韩人妻精品一区2区三区| 91九色精品人成在线观看| 亚洲精品美女久久av网站| 激情五月婷婷亚洲| 天天躁狠狠躁夜夜躁狠狠躁| 精品国产乱码久久久久久小说| 欧美精品亚洲一区二区| 亚洲九九香蕉| 少妇猛男粗大的猛烈进出视频| 午夜免费男女啪啪视频观看| 国产男人的电影天堂91| av线在线观看网站| 欧美精品一区二区免费开放| 亚洲欧美一区二区三区国产| 免费观看人在逋| 久久 成人 亚洲| 高清视频免费观看一区二区| 在线观看国产h片| 久久亚洲精品不卡| 国产成人欧美在线观看 | 亚洲国产av新网站| 久久人人爽人人片av| 国产成人精品在线电影| 黄片播放在线免费| 在线观看人妻少妇| 中文欧美无线码| 天堂俺去俺来也www色官网| 交换朋友夫妻互换小说| 国语对白做爰xxxⅹ性视频网站| 人妻一区二区av| 日韩中文字幕视频在线看片| 纯流量卡能插随身wifi吗| 永久免费av网站大全| 国产成人a∨麻豆精品| 亚洲,欧美精品.| 各种免费的搞黄视频| 蜜桃国产av成人99| 汤姆久久久久久久影院中文字幕| 9热在线视频观看99| 精品国产乱码久久久久久男人| 色视频在线一区二区三区| 国产91精品成人一区二区三区 | 国产成人av激情在线播放| 美女午夜性视频免费| 在线av久久热| 91字幕亚洲| 国产精品偷伦视频观看了| 亚洲精品中文字幕在线视频| 精品国产乱码久久久久久小说| 日韩制服丝袜自拍偷拍| 七月丁香在线播放| 国产野战对白在线观看| 日韩av免费高清视频| 欧美激情 高清一区二区三区| e午夜精品久久久久久久| 亚洲 国产 在线| 精品国产一区二区久久| 婷婷色av中文字幕| 十八禁人妻一区二区| 一边摸一边抽搐一进一出视频| 肉色欧美久久久久久久蜜桃| 一本久久精品| 亚洲欧美精品自产自拍| 亚洲欧美中文字幕日韩二区| 日本a在线网址| 丝袜美足系列| 成人免费观看视频高清| 黄色毛片三级朝国网站| 成年人免费黄色播放视频| 精品一区二区三区av网在线观看 | 性色av乱码一区二区三区2| 色播在线永久视频| 亚洲中文av在线| 免费一级毛片在线播放高清视频 | av网站免费在线观看视频| 在现免费观看毛片| 免费观看av网站的网址| 夜夜骑夜夜射夜夜干| 中文字幕人妻丝袜制服| 91九色精品人成在线观看| 夫妻性生交免费视频一级片| 91精品伊人久久大香线蕉| 国产精品.久久久| 中文精品一卡2卡3卡4更新| 精品国产一区二区三区四区第35| 色综合欧美亚洲国产小说| 国产在线观看jvid| 大片电影免费在线观看免费| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲免费av在线视频| 亚洲少妇的诱惑av| 一级毛片 在线播放| 狠狠精品人妻久久久久久综合| 在线观看免费午夜福利视频| 纯流量卡能插随身wifi吗| 视频区图区小说| 久久精品国产a三级三级三级| 亚洲国产av新网站| 国产一级毛片在线| 国产熟女欧美一区二区| 国产成人精品久久二区二区免费| 午夜福利一区二区在线看| 亚洲国产欧美在线一区| 国产日韩欧美在线精品| 国产色视频综合| av电影中文网址| 男女下面插进去视频免费观看| 国产视频一区二区在线看| 久9热在线精品视频| 男女午夜视频在线观看| www.精华液| 亚洲成人国产一区在线观看 | 九色亚洲精品在线播放| 欧美在线一区亚洲| 日韩 亚洲 欧美在线| 亚洲激情五月婷婷啪啪| 亚洲精品第二区| 中文欧美无线码| 纯流量卡能插随身wifi吗| 亚洲伊人久久精品综合| 97在线人人人人妻| 少妇的丰满在线观看| 久久精品熟女亚洲av麻豆精品| 久久久久久久久免费视频了| 成人亚洲欧美一区二区av| 国产老妇伦熟女老妇高清| 国产精品久久久久久人妻精品电影 | 欧美成人午夜精品| 日本一区二区免费在线视频| 嫩草影视91久久|