ARM體系1,、歷史1978年12月5日,物理學(xué)家赫爾曼·豪澤(Hermann Hauser)和工程師Chris Curry,,在英國(guó)劍橋創(chuàng)辦了CPU公司(Cambridge Processing Unit),,主要業(yè)務(wù)是為當(dāng)?shù)厥袌?chǎng)供應(yīng)電子設(shè)備。
1979年,,CPU公司改名為Acorn計(jì)算機(jī)公司,。
起初,Acorn公司打算使用摩托羅拉公司的16位芯片,,但是發(fā)現(xiàn)這種芯片太慢也太貴,。"一臺(tái)售價(jià)500英鎊的機(jī)器,不可能使用價(jià)格100英鎊的CPU,!"他們轉(zhuǎn)而向Intel公司索要80286芯片的設(shè)計(jì)資料,,但是遭到拒絕,于是被迫自行研發(fā),。(Intel會(huì)不會(huì)為當(dāng)年的這個(gè)決定后悔萬(wàn)分,?) 1985年,Roger Wilson和Steve Furber設(shè)計(jì)了他們自己的第一代32位,、6M Hz的處理器,,用它做出了一臺(tái)RISC指令集的計(jì)算機(jī),簡(jiǎn)稱ARM(Acorn RISC Machine),。這就是ARM這個(gè)名字的由來(lái),。
RISC的全稱是"精簡(jiǎn)指令集計(jì)算機(jī)"(reduced instruction set computer),它支持的指令比較簡(jiǎn)單,,所以功耗小,、價(jià)格便宜,,特別合適移動(dòng)設(shè)備。早期使用ARM芯片的典型設(shè)備,,就是蘋(píng)果公司的牛頓PDA,。 1990年11月27日,Acorn公司正式改組為ARM計(jì)算機(jī)公司,。蘋(píng)果公司出資150萬(wàn)英鎊,,芯片廠商VLSI出資25萬(wàn)英鎊,Acorn本身則以150萬(wàn)英鎊的知識(shí)產(chǎn)權(quán)和12名工程師入股,。公司的辦公地點(diǎn)非常簡(jiǎn)陋,,就是一個(gè)谷倉(cāng)。
公司成立后,,業(yè)務(wù)一度很不景氣,,工程師們?nèi)诵幕袒蹋瑩?dān)心將要失業(yè),。由于缺乏資金,,ARM做出了一個(gè)意義深遠(yuǎn)的決定:自己不制造芯片,只將芯片的設(shè)計(jì)方案授權(quán)(licensing)給其他公司,,由它們來(lái)生產(chǎn),。正是這個(gè)模式,最終使得ARM芯片遍地開(kāi)花,,將封閉設(shè)計(jì)的Intel公司置于"人民戰(zhàn)爭(zhēng)"的汪洋大海,。
20世紀(jì)90年代,ARM公司的業(yè)績(jī)平平,,處理器的出貨量徘徊不前,。但是進(jìn)入21世紀(jì)之后,由于手機(jī)的快速發(fā)展,,出貨量呈現(xiàn)爆炸式增長(zhǎng),,ARM處理器占領(lǐng)了全球手機(jī)市場(chǎng)。2006年,,全球ARM芯片出貨量為20億片,,2010年預(yù)計(jì)將達(dá)到45億片。
2007年底,,ARM的雇員總數(shù)為1728人,,持有專利700項(xiàng)(另有900項(xiàng)正在申請(qǐng)批準(zhǔn)中),全球分支機(jī)構(gòu)31家,,合作伙伴200家,,年收入2.6億英鎊。 2011年,ARM公司宣布收購(gòu)了Keil公司,。Keil公司是一家業(yè)界領(lǐng)先的微控制器(MCU)軟件開(kāi)發(fā)工具的獨(dú)立供應(yīng)商 展望未來(lái),,即使Intel成功地實(shí)施了Atom戰(zhàn)略,將x86芯片的功耗和價(jià)格大大降低,,它與ARM競(jìng)爭(zhēng)也將非常吃力,。因?yàn)锳RM的商業(yè)模式是開(kāi)放的,任何廠商都可以購(gòu)買授權(quán),,所以未來(lái)并不是Intel vs. ARM,而是Intel vs. 世界上所有其他半導(dǎo)體公司,。那樣的話,,Intel的勝算能有多少呢?
2,、RISC和CISCRISC:精簡(jiǎn)指令集處理器,,Reduced Instruction Set Computer RISC結(jié)構(gòu)簡(jiǎn)單,選取了使用頻率高的簡(jiǎn)單指令,,指令長(zhǎng)度固定,,多為單周期指令 在功耗、體積,、價(jià)格等方面有很大優(yōu)勢(shì),,多用于嵌入式領(lǐng)域 CISC:復(fù)雜指令集處理器 側(cè)重于硬件執(zhí)行指令的功能性,CISC指令及處理器的硬件結(jié)構(gòu)復(fù)雜 CISC指令復(fù)雜,,指令長(zhǎng)度與周期不固定,,在處理能力上有優(yōu)勢(shì) 3、ARM產(chǎn)品線ARM11以后的產(chǎn)品改用Cortex命名,,并分成A,、R、M三個(gè)分支,,旨在為各種不同的市場(chǎng)提供服務(wù) Cortex-A: 面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用 Cortex-R: 實(shí)時(shí)處理器為要求可靠性,、容錯(cuò)功能和實(shí)時(shí)響應(yīng)的嵌入式系統(tǒng)提供高性能解決方案 Cortex-M: 針對(duì)成本和功耗敏感的MCU和終端應(yīng)用,一般不跑操作系統(tǒng)
4,、ARM架構(gòu)和ARM內(nèi)核ARM處理器與架構(gòu)對(duì)應(yīng)表
ARM核對(duì)應(yīng)的時(shí)間表
5,、ARM的特點(diǎn)ARM 數(shù)據(jù)類型約定: Byte:8bits(1byte) Halfword:16bits(2byte) Word:32bits(4byte) Char:八位(Java中為16位) 指令集: 大部分ARM支持ARM指令集與Thumb指令集 ARM指令集32bit,即每條指令占用32為的存儲(chǔ)空間 Thumb指令集16bit 注意: Thumb指令集不是完整的指令集,,它是ARM指令集的子集,。但是Thumb指令具有更高的代碼密度,即占用存儲(chǔ)空間小,,僅為ARM代碼規(guī)格的65%,,但其性能卻下降的很少。所以,,Thumb指令集使ARM處理器能應(yīng)用到有限的存儲(chǔ)帶寬,,并且,,代碼密度要求很高的嵌入式系統(tǒng)中去。 運(yùn)行ARM指令: 所有指令必須word對(duì)齊 pc值由其[31:2]決定,,[1:0]位未定義,,因?yàn)橹噶畲鎯?chǔ)的起始地址必須為4的整數(shù)倍
ARM中指令本身是多少位在內(nèi)存存儲(chǔ)時(shí)就應(yīng)該多少位對(duì)其
多字節(jié)數(shù)據(jù)的存儲(chǔ): 小端對(duì)齊:低地址放低有效位,高地址放高有效位 大端對(duì)齊:低地址放高有效位,,高地址放低有效位 ARM默認(rèn)是小端對(duì)齊
6,、ARM的工作模式ARM Cortex-A處理器有8個(gè)基本工作模式: User: 非特權(quán)模式,一般在執(zhí)行上層的應(yīng)用程序時(shí)處理器處于該模式 FIQ: 當(dāng)一個(gè)高優(yōu)先級(jí)的中斷產(chǎn)生時(shí)處理器將自動(dòng)進(jìn)入這種模式 IRQ: 當(dāng)一個(gè)低優(yōu)先級(jí)(normal) 中斷產(chǎn)生時(shí)將會(huì)進(jìn)入這種模式 SVC: 當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式 Abort: 當(dāng)存取異常時(shí)將會(huì)進(jìn)入這種模式 Undef: 當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式 System: 使用和User模式相同寄存器集的特權(quán)模式
Cortex-A處理器特有模式: Monitor:為了安全而擴(kuò)展出的用于執(zhí)行安全監(jiān)控代碼的模式
模式的分類: 1)除User模式外其他七種模式都是特權(quán)模式 - 權(quán)限比較高 2)FIQ,、IRQ,、SVC、Abort,、Undef異常模式 - 產(chǎn)生異常時(shí)進(jìn)入這幾種模式 特定的模式下執(zhí)行特定的代碼,,完成特定的功能,擁有特定的權(quán)限 7,、不同版本的ARM的區(qū)別1,、架構(gòu)不同 ARM7:ARMv4架構(gòu) ARM9:ARMv5架構(gòu), ARM11:ARMv6架構(gòu),, ARM-Cortex 系列:ARMv7架構(gòu),。 2、具體特點(diǎn) ARM7:沒(méi)有MMU(內(nèi)存管理單元),,只能叫做MCU(微控制器),,不能運(yùn)行諸如Linux、WinCE等這些現(xiàn)代的多用戶多進(jìn)程操作系統(tǒng),,因?yàn)檫\(yùn)行這些系統(tǒng)需要MMU,,才能給每個(gè)用戶進(jìn)程分配進(jìn)程自己獨(dú)立的地址空間。ucOS,、ucLinux這些精簡(jiǎn)實(shí)時(shí)的RTOS不需要MMU,,當(dāng)然可以在ARM7上運(yùn)行。 ARM9,、ARM11,,是嵌入式CPU(處理器),帶有MMU,,可以運(yùn)行諸如Linux等多用戶多進(jìn)程的操作系統(tǒng),,應(yīng)用場(chǎng)合也不同于ARM7。 Cortex來(lái)命名,,并分成Cortex-A,、Cortex-R、Cortex-M三個(gè)系列。三大系列分工明確: “A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應(yīng)用,; “R”系列針對(duì)實(shí)時(shí)系統(tǒng),; “M”系列對(duì)微控制器。 簡(jiǎn)單的說(shuō)Cortex-A系列是用于移動(dòng)領(lǐng)域的CPU,,Cortex-R和Cortex-M系列是用于實(shí)時(shí)控制領(lǐng)域的MCU,。所以看上去ARM7跟Cortex-M很像,因?yàn)樗麄兌际荕CU,,但確是不同代不同架構(gòu)的MCU(Cortex-M比ARM7高了三代?。孕阅芤灿泻艽蟮牟罹?。此外,,Cortex-M系列還細(xì)分為M0、M3,、M4和超低功耗的M0+,,用戶依據(jù)成本,、性能,、功耗等因素來(lái)選擇芯片。 8,、ARM的流水線流水線技術(shù)通過(guò)多個(gè)功能部件并行工作來(lái)縮短程序執(zhí)行時(shí)間,,提高處理器核的效率和吞吐率,從而成為微處理器設(shè)計(jì)中最為重要的技術(shù)之一,。 ARM7處理器核使用了典型三級(jí)流水線的馮·諾伊曼結(jié)構(gòu)(指令和數(shù)據(jù)存儲(chǔ)在一起),。 ARM9系列則采用了基于五級(jí)流水線的哈佛結(jié)構(gòu)(指令和數(shù)據(jù)分開(kāi)存儲(chǔ))。通過(guò)增加流水線級(jí)數(shù)簡(jiǎn)化了流水線各級(jí)的邏輯,,進(jìn)一步提高了處理器的性能,。 ARM7的三級(jí)流水線在執(zhí)行單元完成了大量的工作,包括與操作數(shù)相關(guān)的寄存器和存儲(chǔ)器讀寫(xiě)操作,、ALU操作以及相關(guān)器件之間的數(shù)據(jù)傳輸,。執(zhí)行單元的工作往往占用多個(gè)時(shí)鐘周期,從而成為系統(tǒng)性能的瓶頸,。 ARM9采用了更為高效的五級(jí)流水線設(shè)計(jì),,增加了2個(gè)功能部件分別訪問(wèn)存儲(chǔ)器并寫(xiě)回結(jié)果,且將讀寄存器的操作轉(zhuǎn)移到譯碼部件上,,使流水線各部件在功能上更平衡,;同時(shí)其哈佛架構(gòu)避免了數(shù)據(jù)訪問(wèn)和取指的總線沖突。 然而,,不論是三級(jí)流水線還是五級(jí)流水線,,當(dāng)出現(xiàn)多周期指令、跳轉(zhuǎn)分支指令和中斷發(fā)生的時(shí)候,流水線都會(huì)發(fā)生阻塞,,而且相鄰指令之間也可能因?yàn)榧拇嫫鳑_突導(dǎo)致流水線阻塞,,降低流水線的效率。 8.1,、 ARM7流水線技術(shù)ARM7系列處理器中每條指令分取指,、譯碼、執(zhí)行三個(gè)階段,,分別在不同的功能部件上依次獨(dú)立完成,。 取指部件完成從存儲(chǔ)器裝載一條指令, 通過(guò)譯碼部件產(chǎn)生下一周期數(shù)據(jù)路徑需要的控制信號(hào),,完成寄存器的解碼,, 再送到執(zhí)行單元完成寄存器的讀取、ALU運(yùn)算及運(yùn)算結(jié)果的寫(xiě)回,,需要訪問(wèn)存儲(chǔ)器的指令完成存儲(chǔ)器的訪問(wèn),。 流水線上雖然一條指令仍需3個(gè)時(shí)鐘周期來(lái)完成,但通過(guò)多個(gè)部件并行,,使得處理器的吞吐率約為每個(gè)周期一條指令,,提高了流式指令的處理速度,從而可達(dá)到 0.9 MIPS/MHz的指令執(zhí)行速度(MIPS(Million Instructions Per Second):?jiǎn)巫珠L(zhǎng)定點(diǎn)指令平均執(zhí)行速度 Million Instructions Per Second的縮寫(xiě),,每秒處理的百萬(wàn)級(jí)的機(jī)器語(yǔ)言指令數(shù),。) 在三級(jí)流水線下,通過(guò)R15訪問(wèn)PC(程序計(jì)數(shù)器)時(shí)會(huì)出現(xiàn)取指位置和執(zhí)行位置不同的現(xiàn)象,。這須結(jié)合流水線的執(zhí)行情況考慮,,取指部件根據(jù)PC取指,取指完成后PC+4送到PC,,并把取到的指令傳遞給譯碼部件,,然后取指部件根據(jù)新的PC取指。因?yàn)槊織l指令4字節(jié),,故PC值等于當(dāng)前程序執(zhí)行位置+8,。 8.2、 ARM9流水線技術(shù)ARM9系列處理器的流水線分為取指,、譯碼,、執(zhí)行、訪存,、回寫(xiě),。 取指部件完成從指令存儲(chǔ)器取指; 譯碼部件讀取寄存器操作數(shù),,與三級(jí)流水線中不占有數(shù)據(jù)路徑區(qū)別很大,; 執(zhí)行部件產(chǎn)生ALU運(yùn)算結(jié)果或產(chǎn)生存儲(chǔ)器地址(對(duì)于存儲(chǔ)器訪問(wèn)指令來(lái)講),; 訪存部件訪問(wèn)數(shù)據(jù)存儲(chǔ)器; 回寫(xiě)部件完成執(zhí)行結(jié)果寫(xiě)回寄存器,。 把三級(jí)流水線中的執(zhí)行單元進(jìn)一步細(xì)化,,減少了在每個(gè)時(shí)鐘周期內(nèi)必須完成的工作量,進(jìn)而允許使用較高的時(shí)鐘頻率,,且具有分開(kāi)的指令和數(shù)據(jù)存儲(chǔ)器,,減少了沖突的發(fā)生,每條指令的平均周期數(shù)明顯減少,。 8.3,、 三級(jí)流水線運(yùn)行情況分析三級(jí)流水線在處理簡(jiǎn)單的寄存器操作指令時(shí),吞吐率為平均每個(gè)時(shí)鐘周期一條指令,;但是在存在存儲(chǔ)器訪問(wèn)指令,、跳轉(zhuǎn)指令的情況下會(huì)出現(xiàn)流水線阻斷情況,導(dǎo)致流水線的性能下降,。圖1給出了流水線的最佳運(yùn)行情況,,圖中的MOV、ADD,、SUB指令為單周期指令,。從T1開(kāi)始,用3個(gè)時(shí)鐘周期執(zhí)行了3條指令,,指令平均周期數(shù)(CPI)等于1個(gè)時(shí)鐘周期,。
流水線中阻斷現(xiàn)象也十分普遍,,下面就各種阻斷情況下的流水線性能進(jìn)行詳細(xì)分析,。 1 帶有存儲(chǔ)器訪問(wèn)指令的流水線 對(duì)存儲(chǔ)器的訪問(wèn)指令LDR就是非單周期指令,如圖2所示,。這類指令在執(zhí)行階段,,首先要進(jìn)行存儲(chǔ)器的地址計(jì)算,占用控制信號(hào)線,,而譯碼的過(guò)程同樣需要占用控制信號(hào)線,,所以下一條指令(第一個(gè)SUB)的譯碼被阻斷,并且由于LDR訪問(wèn)存儲(chǔ)器和回寫(xiě)寄存器的過(guò)程中 需要繼續(xù)占用執(zhí)行單元,,所以下一條(第一個(gè) SUB)的執(zhí)行也被阻斷,。由于采用馮·諾伊曼體系結(jié)構(gòu),不能夠同時(shí)訪問(wèn)數(shù)據(jù)存儲(chǔ)器和指令存儲(chǔ)器,,當(dāng)LDR處于訪存周期的過(guò)程中時(shí),,MOV指令的取指被阻斷。因此處理器用8個(gè)時(shí)鐘周期執(zhí)行了6條指令,,指令平均周期數(shù)(CPI)=1.3個(gè)時(shí)鐘周期,。 2 帶有分支指令的流水線 當(dāng)指令序列中含有具有分支功能的指令(如BL等)時(shí),,流水線也會(huì)被阻斷,如圖3所示,。分支指令在執(zhí)行時(shí),,其后第1條指令被譯碼,其后第2條指令進(jìn)行取指,,但是這兩步操作的指令并不被執(zhí)行,。因?yàn)榉种е噶顖?zhí)行完畢后,程序應(yīng)該轉(zhuǎn)到跳轉(zhuǎn)的目標(biāo)地址處執(zhí)行,,因此在流水線上需要丟棄這兩條指令,,同時(shí)程序計(jì)數(shù)器就會(huì)轉(zhuǎn)移到新的位置接著進(jìn)行取指、譯碼和執(zhí)行,。此外還有一些特殊的轉(zhuǎn)移指令需要在跳轉(zhuǎn)完成的同時(shí)進(jìn)行寫(xiě)鏈接寄存器,、程序計(jì)數(shù)寄存器,如BL執(zhí)行過(guò)程中包括兩個(gè)附加操作——寫(xiě)鏈接寄存器和調(diào)整程序指針,。這兩個(gè)操作仍然占用執(zhí)行單元,,這時(shí)處于譯碼和取指的流水線被阻斷了。 3 中斷流水線 處理器中斷的發(fā)生具有不確定性,,與當(dāng)前所執(zhí)行的指令沒(méi)有任何關(guān)系,。在中斷發(fā)時(shí),處理器總是會(huì)執(zhí)行完當(dāng)前正被執(zhí)行的指令,,然后去響應(yīng)中斷,。如圖4所示,在 Ox90000處的指令A(yù)DD執(zhí)行期間IRQ中斷發(fā)生,,這時(shí)要等待ADD指令執(zhí)行完畢,,IRQ才獲得執(zhí)行單元,處理器開(kāi)始處理IRQ中斷,,保存程序返回地址并調(diào)整程序指針指向Oxl8內(nèi)存單元,。在Oxl8處有IRO中斷向量(也就是跳向IRQ中斷服務(wù)的指令),接下來(lái)執(zhí)行跳轉(zhuǎn)指令轉(zhuǎn)向中斷服務(wù)程序,,流水線又被阻斷,,執(zhí)行0x18處指令的過(guò)程同帶有分支指令的流水線。 8.4,、 五級(jí)流水線運(yùn)行分析五級(jí)流水線技術(shù)在多種RISC處理器中被廣泛使用,,被認(rèn)為是經(jīng)典的處理器設(shè)計(jì)方式。五級(jí)流水線中的存儲(chǔ)器訪問(wèn)部件(訪存)和寄存器回寫(xiě)部件,,解決了三級(jí)流水線中存儲(chǔ)器訪問(wèn)指令在指令執(zhí)行階段的延遲問(wèn)題,。圖5為五級(jí)流水線的運(yùn)行情況(五級(jí)流水線也存在阻斷)。
1 五級(jí)流水線互鎖分析 五級(jí)流水線只存在一種互鎖,,即寄存器沖突,。讀寄存器是在譯碼階段,,寫(xiě)寄存器是在回寫(xiě)階段,。如果當(dāng)前指令(A)的目的操作數(shù)寄存器和下一條指令(B)的源操作數(shù)寄存器一致,,B指令就需要等A回寫(xiě)之后才能譯碼,。這就是五級(jí)流水線中的寄存器沖突。如圖6所示,,LDR指令寫(xiě)R9是在回寫(xiě)階段,,而MOV中需要用到的 R9正是LDR在回寫(xiě)階段將會(huì)重新寫(xiě)入的寄存器值,MOV譯碼需要等待,,直到LDR指令的寄存器回寫(xiě)操作完成,。(注:現(xiàn)在處理器設(shè)計(jì)中,可以通過(guò)寄存器旁路技術(shù)對(duì)流水線進(jìn)行優(yōu)化,,解決流水線的寄存器沖突問(wèn)題,。) 雖然流水線互鎖會(huì)增加代碼執(zhí)行時(shí)間,但是為初期的設(shè)計(jì)者提供了巨大的方便,,可以不必考慮使用的寄存器會(huì)不會(huì)造成沖突,;而且編譯器以及匯編程序員可以通過(guò)重新設(shè)計(jì)代碼的順序或者其他方法來(lái)減少互鎖的數(shù)量。另外分支指令和中斷的發(fā)生仍然會(huì)阻斷五級(jí)流水線,。 2 五級(jí)流水線優(yōu) 采用重新設(shè)計(jì)代碼順序在很多情況下可以很好地減少流水線的阻塞,,使流水線的運(yùn)行流暢。下面詳細(xì)分析代碼優(yōu)化對(duì)流水線的優(yōu)化和效率的提高,。 考慮到通過(guò)減少流水線的沖突可以提高流水線的執(zhí)行效率,,而流水線的沖突主要來(lái)自寄存器沖突和分支指令,因此對(duì)代碼作如下兩方面調(diào)整
流水線的優(yōu)化問(wèn)題主要應(yīng)從兩方面考慮: ①通過(guò)合并循環(huán)等方式減少分支指令的個(gè)數(shù),,從而減少流水線的浪費(fèi),; ②通過(guò)交換指令的順序,避免寄存器沖突造成的流水線停滯,。 MIPS體系(龍芯)1,、歷史MIPS是世界上很流行的一種RISC處理器。MIPS的意思是“無(wú)內(nèi)部互鎖流水級(jí)的微處理器”(Microprocessor without interlocked pipelined stages),,其機(jī)制是盡量利用軟件辦法避免流水線中的數(shù)據(jù)相關(guān)問(wèn)題,。它最早是在80年代初期由斯坦福(Stanford)大學(xué)Hennessy教授領(lǐng)導(dǎo)的研究小組研制出來(lái)的。MIPS公司的R系列就是在此基礎(chǔ)上開(kāi)發(fā)的RISC工業(yè)產(chǎn)品的微處理器,。這些系列產(chǎn)品為很多計(jì)算機(jī)公司采用構(gòu)成各種工作站和計(jì)算機(jī)系統(tǒng),。 MIPS是出現(xiàn)最早的商業(yè)RISC架構(gòu)芯片之一,,新的架構(gòu)集成了所有原來(lái)MIPS指令集,并增加了許多更強(qiáng)大的功能,。 1999年,,MIPS公司發(fā)布MIPS32和MIPS64架構(gòu)標(biāo)準(zhǔn),為未來(lái)MIPS處理器的開(kāi)發(fā)奠定了基礎(chǔ),。新的架構(gòu)集成了所有原來(lái)MIPS指令集,,并且增加了許多更強(qiáng)大的功能。MIPS公司陸續(xù)開(kāi)發(fā)了高性能,、低功耗的32位處理器內(nèi)核(core)MIPS324Kc與高性能64位處理器內(nèi)核MIPS64 5Kc,。2000年,MIPS公司發(fā)布了針對(duì)MIPS32 4Kc的版本以及64位MIPS 64 20Kc處理器內(nèi)核,。
2,、MIPS指令集所有的指令長(zhǎng)度都是32位 指令操作必須適合流水線 所以需要在軟件層面盡量避免內(nèi)部的互鎖 https://blog.csdn.net/qq_41191281/article/details/85933985 3、結(jié)構(gòu)MIPS采用馮諾依曼結(jié)構(gòu)
ARM與MIPS對(duì)比流水線結(jié)構(gòu)MIPS 是最簡(jiǎn)單的體系結(jié)構(gòu)之一,,所以使大學(xué)喜歡選擇 MIPS 體系結(jié)構(gòu)來(lái)介紹計(jì)算體系結(jié)構(gòu)課程,。 ARM:barrel shifter shifter是兩面性的,一方面它可以提高數(shù)學(xué)邏輯運(yùn)算速度,,另一方面它也增加了硬件的復(fù)雜性,。所以和可以完成同樣功能的adder/shift register相比,效率更高,,但是也占用更多的芯片面積,。 MIPS:"branch delay slot" and "load delay slot" MIPS使用編譯器來(lái)解決上面的兩個(gè)問(wèn)題。因?yàn)镸IPS最初的設(shè)計(jì)思想就是使用簡(jiǎn)單的RISC硬體,,然后靠編譯器及其他軟體技術(shù),,來(lái)達(dá)成RISC的完整概念。
指令結(jié)構(gòu)MIPS有32位和64位架構(gòu),,ARM只有32位架構(gòu),。ARM11 局部64位 MIPS是開(kāi)放式的架構(gòu), 用戶可以在開(kāi)發(fā)的內(nèi)核中加入自己的指令, ARM has 4-bit condition code in every instruction ARM 在這一點(diǎn)很像x86,。MIPS在MIPS IV也加入"conditional move"指令,,來(lái)提高pipeline的效率。 在節(jié)省代碼空間方面,,MIPS16 很類似ARM Thumb 寄存器由于MIPS內(nèi)核中有32個(gè)寄存器(Register),,而ARM只有16個(gè),這種結(jié)構(gòu)設(shè)計(jì)上的先天優(yōu)勢(shì),,決定了在同等性能表現(xiàn)下,,MIPS的芯片面積和功耗會(huì)更小。 ARM 有一組特殊用途寄存器cp0-cp15,可以使用MCR,MRC等指令控制 MIPS也有cp0 0-30,使用mfc0, mtc0 指令控制,。 地址空間MIPS 起始地址是0xbfc00000, 會(huì)有4Mbyte的大小限制,,但一般MIPS芯片都會(huì)采取一些方法解決這個(gè)問(wèn)題,。 ARM沒(méi)有這種問(wèn)題。 MIPS24K 起始地址改到了0xbf000000,現(xiàn)在有16Mbyte的空間了,。 應(yīng)用ARM 由于功耗小,,普遍用在在手機(jī)/PDA等便攜式消費(fèi)電子領(lǐng)域; MIPS 在住宅網(wǎng)關(guān)、線纜調(diào)制解調(diào)器,、線纜機(jī)頂盒等,由于MIPS 多核的發(fā)展,,現(xiàn)在大型網(wǎng)關(guān)設(shè)備也多用它。 ARM 采用硬核授權(quán);MIPS 采用軟核授權(quán),,用戶可以自己配置,,做自己的產(chǎn)品。 未來(lái)發(fā)展ARM的下一代走向多內(nèi)核結(jié)構(gòu),,而MIPS公司的下一代核心則轉(zhuǎn)向硬件多線程功能(multithreading) |
|
來(lái)自: abin30 > 《服務(wù)器,、容器》