日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ARM9五级流水线

發布時間:2024/4/18 编程问答 57 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ARM9五级流水线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Arm9的流水線分為:


五級流水線技術的問題:如果當前指令(A)?的目的操作數寄存器(也就是寫寄存器的操作)和下一條指令(B)?的源操作數寄存器(也就是度寄存器的操作)一致,B?指令就需要等A?回寫之后才能譯碼。這就是五級流水線中的寄存器沖突,所以應該避免寫這一種程序。為了解決這個問題,就采用了互鎖。來解決這個問題。如圖所示:

由于指令LDR的目的地址和他的下一條指令的源地址都是R9,第一條指令對R9的寫要發生在回寫階段,也只有第一條指令會寫后第二條指令才能進行譯碼。所以會產生上述的情況。

通常采用的解決的辦法是改變程序的順序就可以了。

例如:現在要實現的是:把0x00001000和0x00002000處的內容放到地址是0x00008000和0x00009000的位置。

其中0x00001000里面的內容是:??H E L L O W O R L D

實現的過程是:

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

T1~?T3?是3?個單獨的時鐘周期; T4?~?T11?是一個循環,在時空圖中描述了第一次循環的執行情況。在T12?的時候寫LR?的同時,開始對循環的第一條語句進行取指,所以總的流水線周期數為3 + 10?×10 + 2?×9 = 121?。整個拷貝過程需要121?×2 + 2 = 244個時鐘周期完成??紤]到通過減少流水線的沖突可以提高流水線的執行效率,而流水線的沖突主要來自寄存器沖突和分支指令,因此對代碼作如下兩方面調整:

①將兩個循環合并成一個循環能夠充分減少循環跳轉的次數,減少跳轉帶來的流水線停滯;

②調整代碼的順序,將帶有與臨近指令不相關的寄存器插到帶有相關寄存器的指令之間,能夠充分地避免寄存器沖突導致的流水線阻塞

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

。

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

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

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

①通過合并循環等方式減少分支指令的個數,從而減少流水線的浪費;

②通過交換指令的順序,避免寄存器沖突造成的流水線停滯。


總結

以上是生活随笔為你收集整理的ARM9五级流水线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。