在開發設計第一個ARM芯片時,當時的一些機器如Digital PDP-8、Cray-1和IBM 801在設計時早就提出了RISC的概念,并且在其后發展中有了許多RISC的特征,但RISC惟一的例子仍只有Berkeley的RISC I和II及Stanford的MIPS(Microprocessor without Interlocking Pipeline Stages, 無互鎖流水線處理器),而它們當時僅僅用于教學和研究。ARM處理器是第一個為商業用途而開發的RISC微處理器。ARM所采用的體系結構,對于當時的RISC體系結構既有繼承,又有拋棄,即完全根據實際設計的需要仔細研究,沒有機械照搬。ARM的體系結構中采用了若干Berkeley RISC處理器設計的特征,但也放棄了其他若干特征。這些采用的特征有:
·Load/Store體系結構
·固定的32位指令
·3地址指令格式
在Berkeley RISC設計采用的特征中被ARM設計者放棄的RISC的技術特征有:
·寄存器窗口
在早期的RISC中,由于Berkeley原型機中包含了寄存器窗口,使得寄存器窗口的機制密切地伴隨著RISC的概念,成為一般RISC的一大特征。Berkeley RISC處理器的寄存器堆中使用寄存器窗口,使得任何時候總有32個寄存器是可見的。進程進入和退出都訪問新的一組寄存器,因此減少了因寄存器保存和恢復導致的處理器和存儲器之間的數據擁塞和時間開銷。這是擁有寄存器窗口的優點。但是寄存器窗口的存在以大量寄存器占用較多的芯片資源為代價,使得芯片成本增加,因此在ARM處理器設計時未采用寄存器窗口。盡管在ARM中用來處理異常的影子(shadow)寄存器和窗口寄存器在概念上基本相同,但是在異常模式下對進程進行處理時,影子寄存器的數量是很少的。
·延遲轉移
由于轉移中斷了指令流水線的平滑流動而造成了流水線的“斷流”問題,多數RISC處理器采用延遲轉移來改善這一問題,即在后續指令執行后才進行轉移。在原來的ARM中延遲轉移并沒有采用,因為它使異常處理過程更加復雜。
·所有指令單周期執行
ARM被設計為使用最少的時鐘周期來訪問存儲器,但并不是所有指令都單周期執行。如在低成本的ARM應用領域中普遍使用的ARM7TDMI,數據和指令占有同一總線,使用同一存儲器時,即使最簡單的Load和Store指令也最少需要訪問2次存儲器(1次取指令,1次數據讀/寫)。當訪問存儲器需要超過一個周期時,就多用一個周期。因此,并不是所有ARM指令都在單一時鐘周期內執行的,少數指令需要多個時鐘周期。高性能的ARM9TDMI使用分開的數據和指令寄存器,才有可能把Load和Store指令的指令存儲器和數據訪問存儲器操作單周期執行。
最初的ARM設計最關心的是必須保持設計的簡單性。ARM的簡單性在ARM的硬件組織和實現上比指令集的結構上體現得更明顯。把簡單的硬件和指令集結合起來,這是RISC體系的思想基礎;但是ARM仍然保留一些CISC的特征,并且因此達到了比純粹的RISC更高的代碼密度,使得ARM在開始時就獲得其功率效率和較小的核面積的優勢。
|