在ARM體系結構中,如果發生ARM到Thumb模式切換,是否會發生流水線延遲? 如果是這樣,會影響多少個週期? 這與拇指到ARM模式切換是否相同? 此行爲是否因不同的ARM處理器而異?在ARM到Thumb開關上是否發生流水線延遲?
回答
假設你在明智的方式(與BLX
/BX LR
)開關,anymoderncorewillpredictthat(假設分支預測器沒有關閉,當然)。直接寫入PC
稍微多變一些 - 一般來說,大內核可能預測它,但很少有內核不會 - 但通常最好避免。
否則互通分支AFAIK沒有不同於常規分支,所以如果它沒有預測的懲罰只是一個管道沖洗。切換指令集的唯一方法是通過異常返回,這是整個內核的同步操作(即不是擔心性能的地方)。
在PC中寫入奇數可能會導致一些不愉快的後果,而不是轉換爲拇指。 –
確實如此,特別是在較舊的架構上。從第7版開始,幾乎所有寫入PC的操作都是互通的,但仍建議避免直接寫入PC,除非記錄的案例被認可爲退貨指示。 – Notlikethat
不,完全沒有。
成本就像任何其他分支指令。如果預測值命中,則它是免費的,如果不是,則花費通常的13個週期。
由於切換,沒有額外的隱藏打嗝。
因此,您可以使用交互工作模式,而不必擔心與模式切換相關的潛在損失。
大多數現代ARM CPU都是如此。如果您發佈到[tag:embedded],人們會堅持認爲ARM7TDMI非常常見,並引用[Wikipedia's ARM7](http://en.wikipedia.org/wiki/ARM7)頁面(即CPU而不是拱形版本)。在ARMv5(拱形版本)之前,拇指*互操作*更加痛苦,我認爲答案會有所不同。 –
- 1. 無線電流AVPlayer延遲(延遲)是高速3
- 2. 是否可以爲ARM和THUMB生成單獨的.exe文件?
- 3. 在ARM/Thumb(IOS)上解碼BLX指令
- 4. ARM/Raspberry Pi asm延遲
- 5. arm組裝中的流水線處理
- 6. ARM Cortex-A8流水線是13級還是14級?
- 7. AVAudioPlayer延遲setImage的發生
- 8. AVPlayer流延遲
- 9. 延遲後續線上
- 10. 在java上延遲語音流
- 11. 延遲開關狀態在togglebutton點擊
- 12. Cortex M3上的非Thumb ARM代碼
- 13. 什麼是ARM Thumb指令集?
- 14. 是68HC11流水線?
- 15. Alamofire是否支持HTTP流水線?
- 16. RethinkDb是否支持請求流水線?
- 17. S3是否支持HTTP流水線?
- 18. com.sun.net.httpserver.HttpServer是否支持流水線?
- 19. HLS流延遲在iPad1上(在iPad2上播放非常流暢)
- 20. 延遲實例在Objective-C/iPhone開發
- 21. tabLayout開關延遲和視圖顯示延遲
- 22. 是否可以延遲window.load?
- 23. 爲什麼PCI Express在流水線傳輸模式下遭受高延遲?
- 24. 流到mysql的流水線
- 25. WinPhone8支持ARM(非Thumb)嗎?
- 26. 混合ARM和THUMB指令
- 27. 延遲作業正在開發中,但尚未生產
- 28. 功能是否可以延遲啓動而不是延遲?
- 29. 在流水線
- 30. 流星發佈/訂閱延遲時間
您應該指定具體的體系結構。對於* thumb-1 *,差異僅在解碼邏輯中。基本上,拇指操作碼直接映射到ARM操作碼。所以,拇指模式大部分就像是管道前端的一個解壓縮器流。如果發生停頓,它將與分支類似。例如,我不相信Cortex-A可以預測'bx',當然不是'movs pc,lr'。它也可能取決於**你如何切換模式。 'msr CPSR,Rn'可能與'bx lr'不同。 –
@artlessnoise無論如何(在調試狀態外)寫入「CPSR」時,指令集位都被忽略。 – Notlikethat
當您嘗試並計時時發生了什麼? –