我在一篇研究論文中讀到,當使用拇指指令時,代碼大小會減小,但有時這會導致指令數量增加,從而使拇指執行速度變慢。但是指數如何增加?是否像拇指指令太複雜的指令分成多條指令?這是我的直覺。想要驗證我是否以正確的方式思考。拇指指令與arm指令集相比如何增加?
1
A
回答
0
本文Profile Guided Selection of ARM and Thumb Instructions由Arvind的瓦米和拉吉夫·古普塔在亞利桑那大學給出了一個良好的學習;雖然已經過時了。與此同時,ARM已經發布了Thumb2指令集,它再次改變了遊戲。
總結一些論文,有一些算法(如散列法)需要很多寄存器。傳統的拇指 ISA 注意有限註冊到R0-R8
。如果算法導致spill,它將顯着變慢。所以總是有病理性病例要麼是ISA能夠獲勝。這也是遊戲男孩提前相當普遍的智慧,即拇指模式是從正常(較慢)的內存更快。但是,從更快的內部RAM(一個或零等待狀態),模式將運行得更快。
對於的Thumb2(一種改進拇指 ISA),許多的限制已被去除並且幾乎總是一樣快(或快於)ARM模式。一切都是相對的,
- 正在使用的存儲系統。
- 你如何測量(功耗,運行時間,內存消耗)。
- 你的代碼在做什麼。
不可能有明確的答案。您需要提供系統的更多細節和手頭的任務。
注: ISA是指令集架構或可用的彙編程序/機器代碼的類型。
相關問題
- 1. objdump和ARM與拇指
- 2. 將ARM指令轉換爲i386指令
- 3. 如何使用ARMv5TE指令集的增強型乘法指令
- 4. ARM彙編指令
- 5. arm指令是'UNDEFINED'?
- 6. 如何在精靈文件中區分手臂指令的拇指指令?
- 7. 什麼是ARM Thumb指令集?
- 8. ARM是更安全的指令集嗎?
- 9. 在ARM程序集中跳過指令
- 10. ARM程序集:錯誤的指令「mov32」
- 11. ARM程序集:錯誤指令'ldrbcc'
- 12. 如何增加uiswitch拇指大小
- 13. 角:增加一個指令
- 14. ARM,幫助LDR指令
- 15. ARM彙編「retne」指令
- 16. 困惑的ARM指令
- 17. ARM 32位指令STR
- 18. ARM彙編 - 分支指令
- 19. 混合ARM和THUMB指令
- 20. ARM SUB指令操作數
- 21. 如何將大拇指條件指令放入IT塊
- 22. 如何使用STC指令在ARM
- 23. 相對業績加指令
- 24. 如何通過指令參數指令
- 25. 指令可與其他指令溝通
- 26. 速度宏指令與指令
- 27. 在指令定義中的其他指令內添加指令
- 28. 在父指令中附加子指令
- 29. 添加指令的角度指令
- 30. Angularjs:與孩子的指令集父指令範圍值
在我看來你的直覺是對的。這是由於在Thumb模式下縮減了指令集,並且需要模擬例如moveq將需要兩個單獨的指令(因此 - 更多時間),ite和mov。 – brainovergrow
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/ch02s02s09.html – auselen