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