国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

ARM流水線關鍵技術分析與代碼優化

發布時間:2010-3-30 11:51    發布者:李寬
關鍵詞: arm , 代碼 , 關鍵 , 技術 , 流水線
引言

流水線技術通過多個功能部件并行工作來縮短程序執行時間,提高處理器核的效率和吞吐率,從而成為微處理器設計中最為重要的技術之一。ARM7處理器核使用了典型三級流水線的馮·諾伊曼結構,ARM9系列則采用了基于五級流水線的哈佛結構。通過增加流水線級數簡化了流水線各級的邏輯,進一步提高了處理器的性能。

ARM7的三級流水線在執行單元完成了大量的工作,包括與操作數相關的寄存器和存儲器讀寫操作、ALU操作以及相關器件之間的數據傳輸。執行單元的工作往往占用多個時鐘周期,從而成為系統性能的瓶頸。ARM9采用了更為高效的五級流水線設計,增加了2個功能部件分別訪問存儲器并寫回結果,且將讀寄存器的操作轉移到譯碼部件上,使流水線各部件在功能上更平衡;同時其哈佛架構避免了數據訪問和取指的總線沖突。

然而不論是三級流水線還是五級流水線,當出現多周期指令、跳轉分支指令和中斷發生的時候,流水線都會發生阻塞,而且相鄰指令之間也可能因為寄存器沖突導致流水線阻塞,降低流水線的效率。本文在對流水線原理及運行情況詳細分析的基礎上,研究通過調整指令執行序列來提高流水線運行性能的方法。

1 ARM7/ARM9流水線技術

1.1 ARM7流水線技術

ARM7系列處理器中每條指令分取指、譯碼、執行三個階段,分別在不同的功能部件上依次獨立完成。取指部件完成從存儲器裝載一條指令,通過譯碼部件產生下一周期數據路徑需要的控制信號,完成寄存器的解碼,再送到執行單元完成寄存器的讀取、ALU運算及運算結果的寫回,需要訪問存儲器的指令完成存儲器的訪問。流水線上雖然一條指令仍需3個時鐘周期來完成,但通過多個部件并行,使得處理器的吞吐率約為每個周期一條指令,提高了流式指令的處理速度,從而可達到 O.9 MIPS/MHz的指令執行速度。

在三級流水線下,通過R15訪問PC(程序計數器)時會出現取指位置和執行位置不同的現象。這須結合流水線的執行情況考慮,取指部件根據PC取指,取指完成后PC+4送到PC,并把取到的指令傳遞給譯碼部件,然后取指部件根據新的PC取指。因為每條指令4字節,故PC值等于當前程序執行位置+8。

1.2 ARM9流水線技術

ARM9系列處理器的流水線分為取指、譯碼、執行、訪存、回寫。取指部件完成從指令存儲器取指;譯碼部件讀取寄存器操作數,與三級流水線中不占有數據路徑區別很大;執行部件產生ALU運算結果或產生存儲器地址(對于存儲器訪問指令來講);訪存部件訪問數據存儲器;回寫部件完成執行結果寫回寄存器。把三級流水線中的執行單元進一步細化,減少了在每個時鐘周期內必須完成的工作量,進而允許使用較高的時鐘頻率,且具有分開的指令和數據存儲器,減少了沖突的發生,每條指令的平均周期數明顯減少。

2 三級流水線運行情況分析

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



流水線中阻斷現象也十分普遍,下面就各種阻斷情況下的流水線性能進行詳細分析。

2.1 帶有存儲器訪問指令的流水線

對存儲器的訪問指令LDR就是非單周期指令,如圖2所示。這類指令在執行階段,首先要進行存儲器的地址計算,占用控制信號線,而譯碼的過程同樣需要占用控制信號線,所以下一條指令(第一個SUB)的譯碼被阻斷,并且由于LDR訪問存儲器和回寫寄存器的過程中需要繼續占用執行單元,所以下一條(第一個 SUB)的執行也被阻斷。由于采用馮·諾伊曼體系結構,不能夠同時訪問數據存儲器和指令存儲器,當LDR處于訪存周期的過程中時,MOV指令的取指被阻斷。因此處理器用8個時鐘周期執行了6條指令,指令平均周期數(CPI)=1.3個時鐘周期。



2.2 帶有分支指令的流水線

當指令序列中含有具有分支功能的指令(如BL等)時,流水線也會被阻斷,如圖3所示。分支指令在執行時,其后第1條指令被譯碼,其后第2條指令進行取指,但是這兩步操作的指令并不被執行。因為分支指令執行完畢后,程序應該轉到跳轉的目標地址處執行,因此在流水線上需要丟棄這兩條指令,同時程序計數器就會轉移到新的位置接著進行取指、譯碼和執行。此外還有一些特殊的轉移指令需要在跳轉完成的同時進行寫鏈接寄存器、程序計數寄存器,如BL執行過程中包括兩個附加操作——寫鏈接寄存器和調整程序指針。這兩個操作仍然占用執行單元,這時處于譯碼和取指的流水線被阻斷了。

2.3 中斷流水線

處理器中斷的發生具有不確定性,與當前所執行的指令沒有任何關系。在中斷發生時,處理器總是會執行完當前正被執行的指令,然后去響應中斷。如圖 4所示,在Ox90000處的指令ADD執行期間IRQ中斷發生,這時要等待ADD指令執行完畢,IRQ才獲得執行單元,處理器開始處理IRQ中斷,保存程序返回地址并調整程序指針指向Oxl8內存單元。在Oxl8處有IRO中斷向量(也就是跳向IRQ中斷服務的指令),接下來執行跳轉指令轉向中斷服務程序,流水線又被阻斷,執行0x18處指令的過程同帶有分支指令的流水線。



3 五級流水線技術

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





3.1 五級流水線互鎖分析

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



雖然流水線互鎖會增加代碼執行時間,但是為初期的設計者提供了巨大的方便,可以不必考慮使用的寄存器會不會造成沖突;而且編譯器以及匯編程序員可以通過重新設計代碼的順序或者其他方法來減少互鎖的數量。另外分支指令和中斷的發生仍然會阻斷五級流水線。

3.2 五級流水線優化

采用重新設計代碼順序在很多情況下可以很好地減少流水線的阻塞,使流水線的運行流暢。下面詳細分析代碼優化對流水線的優化和效率的提高。

要實現把內存地址0x1000和Ox2000處的數據分別拷貝到0x8000和0x9000處。

    Oxl000處的內容:1,2,3,4,5,6,7,8,9,10
    Ox2000處的內容:H,e,l,l,o,W,o,r,l,d

實現第一個拷貝過程的程序代碼及指令的執行時空圖如圖7所示。



全部拷貝過程由兩個結構相同的循環各自獨立完成,分別實現兩塊數據的拷貝,并且兩個拷貝過程極為類似,分析其中一個即可。

T1~T3是3個單獨的時鐘周期;T4~T11是一個循環,在時空圖中描述了第一次循環的執行情況。在T12的時候寫LR的同時,開始對循環的第一條語句進行取指,所以總的流水線周期數為3+10×10+2×9=121。整個拷貝過程需要121×2+2=244個時鐘周期完成。

考慮到通過減少流水線的沖突可以提高流水線的執行效率,而流水線的沖突主要來自寄存器沖突和分支指令,因此對代碼作如下兩方面調整:

    ①將兩個循環合并成一個循環能夠充分減少循環跳轉的次數,減少跳轉帶來的流水線停滯;
    ②調整代碼的順序,將帶有與臨近指令不相關的寄存器插到帶有相關寄存器的指令之間,能夠充分地避免寄存器沖突導致的流水線阻塞。

對代碼調整和流水線的時空圖如圖8所示。



調整之后,T1~T5是5個單獨的時鐘周期,T6~T13是一個循環,同樣在T14的時候BNE指令在寫LR的同時,循環的第一條指令開始取指,所以總的指令周期數為5+10×10+2×9+2=125。

通過兩段代碼的比較可看出:調整之前整個拷貝過程總共使用了244個時鐘周期,調整了循環內指令的順序后,總共使用了125個時鐘周期就完成了同樣的工作,時鐘周期減少了119個,縮短了119/244=48.8%,效率提升十分明顯。

代碼優化前后執行周期數對比的情況如表1所列。



因此流水線的優化問題主要應從兩方面考慮:

    ①通過合并循環等方式減少分支指令的個數,從而減少流水線的浪費;
    ②通過交換指令的順序,避免寄存器沖突造成的流水線停滯。

4 結論

流水線技術提高了處理器的并行性,與串行CPU相比大大提高了處理器性能。通過調節指令序列的方法又能夠有效地避免流水線沖突的發生,從而提高了流水線的執行效率。因此如何采用智能算法進行指令序列的自動調節以提高流水線的效率和進一步提高處理器的并行性將是以后研究的主要方向。

參考文獻

   1. John L Hennessy.David A Patterson 計算機系統結構:量化研究方法 2004
   2. ARM Architecture Reference Manual 2005
   3. Samsung Electronics Co Ltd S3C44B0X 32-bit RISC Microprocessor User's Manuel 2003
   4. Samsung Electronics Co Ltd S3C2410X 32-bit RISC Microprocessor User's Manuel 2003
   5. 田澤 嵌入式系統開發與應用 2005
   6. Wayne W 嵌入式計算機系統設計原理 2002

作者:大連理工大學 邱鐵  西方  遲宗正
來源:單片機與嵌入式系統應用  2009 (3)
本文地址:http://m.qingdxww.cn/thread-9993-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产自在在线在线观看 | 国产高清国产专区国产精品 | 99精品视频免费在线观看 | 97高清| 青青草香蕉 | 久久综合综合久久 | 欧美高清在线播放 | 久久国产精品99久久久久久牛牛 | 亚洲视频免费 | 4hc44四虎www在线观看 | 97中文字幕在线观看 | 国产精品黄页在线播放免费 | 亚洲日韩欧美视频 | 嫩草影院在线观看精品视频 | 天美麻豆精东果冻天美传媒 | 99网站在线观看 | 国产精品一区二区综合 | 天天操天天谢 | 久草资源视频 | 青青草国产精品 | 欧美日韩在线成人 | 青青草国产精品人人爱99 | 一级一级特黄女人精品毛片 | 欧美在线视频二区 | 国产黄mmd在线观看免费 | 一二三四在线视频社区8 | 蜜桃成人精品 | 在线观看欧美日韩 | 日韩特级 | 免费的高清影视网站 | 99热成人精品国产免国语的 | 日韩欧美精品中文字幕 | 免费一级a毛片夜夜看 | 午夜精品福利影院 | 免费日韩视频 | 五月婷婷七月丁香 | 真人特级毛片免费视频 | 韩国免费一级片 | 日本黄色网站在线观看 | 伊人青青久 | 9966国产精品视频 |