欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11964|回復: 2
打印 上一主題 下一主題
收起左側

ARM處理器三級流水線與PC,LR的關系

[復制鏈接]
跳轉到指定樓層
樓主
ID:60266 發表于 2014-8-18 02:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
ARM處理器使用流水線來增加處理器指令流的速度,這樣可使幾個操作同時進行,并使處理與存儲器系統之間的操作更加流暢,連續,能提供0.9MIPS/MHZ的指令執行速度。
    PC代表程序計數器,流水線使用三個階段,因此指令分為三個階段執行:1.取指(從存儲器裝載一條指令);2.譯碼(識別將要被執行的指令);3.執行(處理指令并將結果寫回寄存器)。而R15(PC)總是指向“正在取指”的指令,而不是指向“正在執行”的指令或正在“譯碼”的指令。一般來說,人們習慣性約定將“正在執行的指令作為參考點”,稱之為當前第一條指令,因此PC總是指向第三條指令。當ARM狀態時,每條指令為4字節長,所以PC始終指向該指令地址加8字節的地址,即:PC值=當前程序執行位置+8;
   ARM指令是三級流水線,取指,譯指,執行時同時執行的,現在PC指向的是正在取指的地址,那么cpu正在譯指的指令地址是PC-4(假設在ARM狀態下,一個指令占4個字節),cpu正在執行的指令地址是PC-8,也就是說PC所指向的地址和現在所執行的指令地址相差8。
   當突然發生中斷的時候,保存的是PC的地址
   這樣你就知道了,如果返回的時候返回PC,那么中間就有一個指令沒有執行,所以用SUB pc lr-irq #4。


   但是在ADS中PC確實是指向即將執行的指令處,這個是軟件處理后的結果,主要是為了用戶調試程序方便.
  需要注意的是,當前使用指令STM/STR保存R15時候,保存的可能是當前指令地址值+8字節,也可能保存的是當前的指令地址+12字節.到底是哪種,取決于芯片的具體的設計方式。無論如何,在同一芯片中,要么采用當前的指令地址+8,要么采用當前的指令地址+12。因此對于用戶來講,盡量避免使用STM/STR指令來保存R15的值。但是可以在開始的時候用一段程序對芯片的offset進行測試!

代碼如下:
SUB R1, PC, #4  ;獲得下面的存放下面存放STR指令的地址
STR PC,[R0]
LDR R0,[RO]
SUB R0, R0, R1

ARM7中斷與PC、LR的問題:
1,假設當前是PC,PC-4,PC-8(三級流水)
2,發生IRQ異常,執行保護操作,LR中保存由于FIQ或IRQ占先而沒有被執行的指令的地址(即有些資料上把這個地址寫成PC或者當前地址,很費解甚至誤解)的下一條地址
3,清空流水線
4,進入中斷服務程序
5,待流水線填滿,執行操作才被重新掛起(解釋了ARM7為什么是0.9MIPS)
6,中斷返回前,對LR處理,LR=LR-4,指向之前被清空的已譯碼但沒被執行的指令的地址
7,清空流水線,返回
8,重新對丟棄的前一次已譯碼指令取指
9,待流水線滿,開始繼續執行


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:44262 發表于 2014-8-21 22:53 來自觸屏版 | 只看該作者
能有高人繼續解釋一下  流水線  嗎
回復

使用道具 舉報

板凳
ID:636830 發表于 2021-2-28 19:21 | 只看該作者
感謝!加深了我對中斷的具體行為和流水線進一步的理解
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表