當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]ARM流水線關(guān)鍵技術(shù)分析與代碼優(yōu)化

引 言
   
流水線技術(shù)通過多個功能部件并行工作來縮短程序執(zhí)行時間,提高處理器核的效率和吞吐率,從而成為微處理器設(shè)計中最為重要的技術(shù)之一。ARM7處理器核使用了典型三級流水線的馮·諾伊曼結(jié)構(gòu),ARM9系列則采用了基于五級流水線的哈佛結(jié)構(gòu)。通過增加流水線級數(shù)簡化了流水線各級的邏輯,進(jìn)一步提高了處理器的性能。
    ARM7的三級流水線在執(zhí)行單元完成了大量的工作,包括與操作數(shù)相關(guān)的寄存器和存儲器讀寫操作、ALU操作以及相關(guān)器件之間的數(shù)據(jù)傳輸。執(zhí)行單元的工作往往占用多個時鐘周期,從而成為系統(tǒng)性能的瓶頸。ARM9采用了更為高效的五級流水線設(shè)計,增加了2個功能部件分別訪問存儲器并寫回結(jié)果,且將讀寄存器的操作轉(zhuǎn)移到譯碼部件上,使流水線各部件在功能上更平衡;同時其哈佛架構(gòu)避免了數(shù)據(jù)訪問和取指的總線沖突。
    然而不論是三級流水線還是五級流水線,當(dāng)出現(xiàn)多周期指令、跳轉(zhuǎn)分支指令和中斷發(fā)生的時候,流水線都會發(fā)生阻塞,而且相鄰指令之間也可能因為寄存器沖突導(dǎo)致流水線阻塞,降低流水線的效率。本文在對流水線原理及運行情況詳細(xì)分析的基礎(chǔ)上,研究通過調(diào)整指令執(zhí)行序列來提高流水線運行性能的方法。

1 ARM7/ARM9流水線技術(shù)
1.1 ARM7流水線技術(shù)

    ARM7系列處理器中每條指令分取指、譯碼、執(zhí)行三個階段,分別在不同的功能部件上依次獨立完成。取指部件完成從存儲器裝載一條指令,通過譯碼部件產(chǎn)生下一周期數(shù)據(jù)路徑需要的控制信號,完成寄存器的解碼,再送到執(zhí)行單元完成寄存器的讀取、ALU運算及運算結(jié)果的寫回,需要訪問存儲器的指令完成存儲器的訪問。流水線上雖然一條指令仍需3個時鐘周期來完成,但通過多個部件并行,使得處理器的吞吐率約為每個周期一條指令,提高了流式指令的處理速度,從而可達(dá)到O.9 MIPS/MHz的指令執(zhí)行速度。
    在三級流水線下,通過R15訪問PC(程序計數(shù)器)時會出現(xiàn)取指位置和執(zhí)行位置不同的現(xiàn)象。這須結(jié)合流水線的執(zhí)行情況考慮,取指部件根據(jù)PC取指,取指完成后PC+4送到PC,并把取到的指令傳遞給譯碼部件,然后取指部件根據(jù)新的PC取指。因為每條指令4字節(jié),故PC值等于當(dāng)前程序執(zhí)行位置+8。
1.2 ARM9流水線技術(shù)
    ARM9系列處理器的流水線分為取指、譯碼、執(zhí)行、訪存、回寫。取指部件完成從指令存儲器取指;譯碼部件讀取寄存器操作數(shù),與三級流水線中不占有數(shù)據(jù)路徑區(qū)別很大;執(zhí)行部件產(chǎn)生ALU運算結(jié)果或產(chǎn)生存儲器地址(對于存儲器訪問指令來講);訪存部件訪問數(shù)據(jù)存儲器;回寫部件完成執(zhí)行結(jié)果寫回寄存器。把三級流水線中的執(zhí)行單元進(jìn)一步細(xì)化,減少了在每個時鐘周期內(nèi)必須完成的工作量,進(jìn)而允許使用較高的時鐘頻率,且具有分開的指令和數(shù)據(jù)存儲器,減少了沖突的發(fā)生,每條指令的平均周期數(shù)明顯減少。

2 三級流水線運行情況分析
    三級流水線在處理簡單的寄存器操作指令時,吞吐率為平均每個時鐘周期一條指令;但是在存在存儲器訪問指令、跳轉(zhuǎn)指令的情況下會出現(xiàn)流水線阻斷情況,導(dǎo)致流水線的性能下降。圖1給出了流水線的最佳運行情況,圖中的MOV、ADD、SUB指令為單周期指令。從T1開始,用3個時鐘周期執(zhí)行了3條指令,指令平均周期數(shù)(CPI)等于1個時鐘周期。

    流水線中阻斷現(xiàn)象也十分普遍,下面就各種阻斷情況下的流水線性能進(jìn)行詳細(xì)分析。
2.1 帶有存儲器訪問指令的流水線
    對存儲器的訪問指令LDR就是非單周期指令,如圖2所示。這類指令在執(zhí)行階段,首先要進(jìn)行存儲器的地址計算,占用控制信號線,而譯碼的過程同樣需要占用控制信號線,所以下一條指令(第一個SUB)的譯碼被阻斷,并且由于LDR訪問存儲器和回寫寄存器的過程中需要繼續(xù)占用執(zhí)行單元,所以下一條(第一個SUB)的執(zhí)行也被阻斷。由于采用馮·諾伊曼體系結(jié)構(gòu),不能夠同時訪問數(shù)據(jù)存儲器和指令存儲器,當(dāng)LDR處于訪存周期的過程中時,MOV指令的取指被阻斷。因此處理器用8個時鐘周期執(zhí)行了6條指令,指令平均周期數(shù)(CPI)=1.3個時鐘周期。

2.2 帶有分支指令的流水線
   
當(dāng)指令序列中含有具有分支功能的指令(如BL等)時,流水線也會被阻斷,如圖3所示。分支指令在執(zhí)行時,其后第1條指令被譯碼,其后第2條指令進(jìn)行取指,但是這兩步操作的指令并不被執(zhí)行。因為分支指令執(zhí)行完畢后,程序應(yīng)該轉(zhuǎn)到跳轉(zhuǎn)的目標(biāo)地址處執(zhí)行,因此在流水線上需要丟棄這兩條指令,同時程序計數(shù)器就會轉(zhuǎn)移到新的位置接著進(jìn)行取指、譯碼和執(zhí)行。此外還有一些特殊的轉(zhuǎn)移指令需要在跳轉(zhuǎn)完成的同時進(jìn)行寫鏈接寄存器、程序計數(shù)寄存器,如BL執(zhí)行過程中包括兩個附加操作——寫鏈接寄存器和調(diào)整程序指針。這兩個操作仍然占用執(zhí)行單元,這時處于譯碼和取指的流水線被阻斷了。
2.3 中斷流水線
   
處理器中斷的發(fā)生具有不確定性,與當(dāng)前所執(zhí)行的指令沒有任何關(guān)系。在中斷發(fā)生時,處理器總是會執(zhí)行完當(dāng)前正被執(zhí)行的指令,然后去響應(yīng)中斷。如圖4所示,在Ox90000處的指令A(yù)DD執(zhí)行期間IRQ中斷發(fā)生,這時要等待ADD指令執(zhí)行完畢,IRQ才獲得執(zhí)行單元,處理器開始處理IRQ中斷,保存程序返回地址并調(diào)整程序指針指向Oxl8內(nèi)存單元。在Oxl8處有IRO中斷向量(也就是跳向IRQ中斷服務(wù)的指令),接下來執(zhí)行跳轉(zhuǎn)指令轉(zhuǎn)向中斷服務(wù)程序,流水線又被阻斷,執(zhí)行0x18處指令的過程同帶有分支指令的流水線。

[!--empirenews.page--]

3 五級流水線技術(shù)
   
五級流水線技術(shù)在多種RISC處理器中被廣泛使用,被認(rèn)為是經(jīng)典的處理器設(shè)計方式。五級流水線中的存儲器訪問部件(訪存)和寄存器回寫部件,解決了三級流水線中存儲器訪問指令在指令執(zhí)行階段的延遲問題。圖5為五級流水線的運行情況(五級流水線也存在阻斷)。

3.1 五級流水線互鎖分析
    五級流水線只存在一種互鎖,即寄存器沖突。讀寄存器是在譯碼階段,寫寄存器是在回寫階段。如果當(dāng)前指令(A)的目的操作數(shù)寄存器和下一條指令(B)的源操作數(shù)寄存器一致,B指令就需要等A回寫之后才能譯碼。這就是五級流水線中的寄存器沖突。如圖6所示,LDR指令寫R9是在回寫階段,而MOV中需要用到的R9正是LDR在回寫階段將會重新寫入的寄存器值,MOV譯碼需要等待,直到LDR指令的寄存器回寫操作完成。(注:現(xiàn)在處理器設(shè)計中,可以通過寄存器旁路技術(shù)對流水線進(jìn)行優(yōu)化,解決流水線的寄存器沖突問題。)

    雖然流水線互鎖會增加代碼執(zhí)行時間,但是為初期的設(shè)計者提供了巨大的方便,可以不必考慮使用的寄存器會不會造成沖突;而且編譯器以及匯編程序員可以通過重新設(shè)計代碼的順序或者其他方法來減少互鎖的數(shù)量。另外分支指令和中斷的發(fā)生仍然會阻斷五級流水線。
3.2 五級流水線優(yōu)化
   
采用重新設(shè)計代碼順序在很多情況下可以很好地減少流水線的阻塞,使流水線的運行流暢。下面詳細(xì)分析代碼優(yōu)化對流水線的優(yōu)化和效率的提高。
    要實現(xiàn)把內(nèi)存地址0x1000和Ox2000處的數(shù)據(jù)分別拷貝到0x8000和0x9000處。
    Oxl000處的內(nèi)容:1,2,3,4,5,6,7,8,9,10
    Ox2000處的內(nèi)容:H,e,l,l,o,W,o,r,l,d
    實現(xiàn)第一個拷貝過程的程序代碼及指令的執(zhí)行時空圖如圖7所示。

    全部拷貝過程由兩個結(jié)構(gòu)相同的循環(huán)各自獨立完成,分別實現(xiàn)兩塊數(shù)據(jù)的拷貝,并且兩個拷貝過程極為類似,分析其中一個即可。
    T1~T3是3個單獨的時鐘周期;T4~T11是一個循環(huán),在時空圖中描述了第一次循環(huán)的執(zhí)行情況。在T12的時候?qū)慙R的同時,開始對循環(huán)的第一條語句進(jìn)行取指,所以總的流水線周期數(shù)為3+10×10+2×9=121。整個拷貝過程需要121×2+2=244個時鐘周期完成。
    考慮到通過減少流水線的沖突可以提高流水線的執(zhí)行效率,而流水線的沖突主要來自寄存器沖突和分支指令,因此對代碼作如下兩方面調(diào)整:
    ①將兩個循環(huán)合并成一個循環(huán)能夠充分減少循環(huán)跳轉(zhuǎn)的次數(shù),減少跳轉(zhuǎn)帶來的流水線停滯;
    ②調(diào)整代碼的順序,將帶有與臨近指令不相關(guān)的寄存器插到帶有相關(guān)寄存器的指令之間,能夠充分地避免寄存器沖突導(dǎo)致的流水線阻塞。
    對代碼調(diào)整和流水線的時空圖如圖8所示。

    調(diào)整之后,T1~T5是5個單獨的時鐘周期,T6~T13是一個循環(huán),同樣在T14的時候BNE指令在寫LR的同時,循環(huán)的第一條指令開始取指,所以總的指令周期數(shù)為5+10×10+2×9+2=125。
    通過兩段代碼的比較可看出:調(diào)整之前整個拷貝過程總共使用了244個時鐘周期,調(diào)整了循環(huán)內(nèi)指令的順序后,總共使用了125個時鐘周期就完成了同樣的工作,時鐘周期減少了119個,縮短了119/244=48.8%,效率提升十分明顯。
    代碼優(yōu)化前后執(zhí)行周期數(shù)對比的情況如表1所列。

[!--empirenews.page--]

    因此流水線的優(yōu)化問題主要應(yīng)從兩方面考慮:
    ①通過合并循環(huán)等方式減少分支指令的個數(shù),從而減少流水線的浪費;
    ②通過交換指令的順序,避免寄存器沖突造成的流水線停滯。

4 結(jié) 論
   
流水線技術(shù)提高了處理器的并行性,與串行CPU相比大大提高了處理器性能。通過調(diào)節(jié)指令序列的方法又能夠有效地避免流水線沖突的發(fā)生,從而提高了流水線的執(zhí)行效率。因此如何采用智能算法進(jìn)行指令序列的自動調(diào)節(jié)以提高流水線的效率和進(jìn)一步提高處理器的并行性將是以后研究的主要方向。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉