2014-02-10 67 views
1

我在一篇研究論文中讀到,當使用拇指指令時,代碼大小會減小,但有時這會導致指令數量增加,從而使拇指執行速度變慢。但是指數如何增加?是否像拇指指令太複雜的指令分成多條指令?這是我的直覺。想要驗證我是否以正確的方式思考。拇指指令與arm指令集相比如何增加?

+0

在我看來你的直覺是對的。這是由於在Thumb模式下縮減了指令集,並且需要模擬例如moveq將需要兩個單獨的指令(因此 - 更多時間),ite和mov。 – brainovergrow

+0

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0068b/ch02s02s09.html – auselen

回答

0

本文Profile Guided Selection of ARM and Thumb Instructions由Arvind的瓦米和拉吉夫·古普塔在亞利桑那大學給出了一個良好的學習;雖然已經過時了。與此同時,ARM已經發布了Thumb2指令集,它再次改變了遊戲。

總結一些論文,有一些算法(如散列法)需要很多寄存器。傳統的拇指 ISA 注意有限註冊到R0-R8。如果算法導致spill,它將顯着變慢。所以總是有病理性病例要麼是ISA能夠獲勝。這也是遊戲男孩提前相當普遍的智慧,即拇指模式是從正常(較慢)的內存更快。但是,從更快的內部RAM(一個或零等待狀態),模式將運行得更快。

對於的Thumb2(一種改進拇指 ISA),許多的限制已被去除並且幾乎總是一樣快(或快於)ARM模式。一切都是相對的,

  1. 正在使用的存儲系統。
  2. 你如何測量(功耗,運行時間,內存消耗)。
  3. 你的代碼在做什麼。

不可能有明確的答案。您需要提供系統的更多細節和手頭的任務。

注: ISA是指令集架構或可用的彙編程序/機器代碼的類型。