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)。
功耗小、價(jià)格便宜,特別合適移動(dòng)設(shè)備。早期使用ARM芯片的典型設(shè)備,就是蘋果公司的牛頓PDA。
1990年11月27日,Acorn公司正式改組為ARM計(jì)算機(jī)公司。蘋果公司出資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的勝算能有多少呢?
RISC:精簡(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ì)
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)
ARM處理器與架構(gòu)對(duì)應(yīng)表
ARM核對(duì)應(yīng)的時(shí)間表
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ì)齊
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)限
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)選擇芯片。
流水線技術(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ǔ)器讀寫操作、ALU操作以及相關(guān)器件之間的數(shù)據(jù)傳輸。執(zhí)行單元的工作往往占用多個(gè)時(shí)鐘周期,從而成為系統(tǒng)性能的瓶頸。
ARM9采用了更為高效的五級(jí)流水線設(shè)計(jì),增加了2個(gè)功能部件分別訪問(wèn)存儲(chǔ)器并寫回結(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)致流水線阻塞,降低流水線的效率。
ARM7系列處理器中每條指令分取指、譯碼、執(zhí)行三個(gè)階段,分別在不同的功能部件上依次獨(dú)立完成。
取指部件完成從存儲(chǔ)器裝載一條指令,
通過(guò)譯碼部件產(chǎn)生下一周期數(shù)據(jù)路徑需要的控制信號(hào),完成寄存器的解碼,
再送到執(zhí)行單元完成寄存器的讀取、ALU運(yùn)算及運(yùn)算結(jié)果的寫回,需要訪問(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的縮寫,每秒處理的百萬(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。
ARM9系列處理器的流水線分為取指、譯碼、執(zhí)行、訪存、回寫。
取指部件完成從指令存儲(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ǔ)器;
回寫部件完成執(zhí)行結(jié)果寫回寄存器。
把三級(jí)流水線中的執(zhí)行單元進(jìn)一步細(xì)化,減少了在每個(gè)時(shí)鐘周期內(nèi)必須完成的工作量,進(jìn)而允許使用較高的時(shí)鐘頻率,且具有分開(kāi)的指令和數(shù)據(jù)存儲(chǔ)器,減少了沖突的發(fā)生,每條指令的平均周期數(shù)明顯減少。
三級(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ǔ)器和回寫寄存器的過(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)行寫鏈接寄存器、程序計(jì)數(shù)寄存器,如BL執(zhí)行過(guò)程中包括兩個(gè)附加操作——寫鏈接寄存器和調(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ò)程同帶有分支指令的流水線。
五級(jí)流水線技術(shù)在多種RISC處理器中被廣泛使用,被認(rèn)為是經(jīng)典的處理器設(shè)計(jì)方式。五級(jí)流水線中的存儲(chǔ)器訪問(wèn)部件(訪存)和寄存器回寫部件,解決了三級(jí)流水線中存儲(chǔ)器訪問(wèn)指令在指令執(zhí)行階段的延遲問(wèn)題。圖5為五級(jí)流水線的運(yùn)行情況(五級(jí)流水線也存在阻斷)。
1 五級(jí)流水線互鎖分析
五級(jí)流水線只存在一種互鎖,即寄存器沖突。讀寄存器是在譯碼階段,寫寄存器是在回寫階段。如果當(dāng)前指令(A)的目的操作數(shù)寄存器和下一條指令(B)的源操作數(shù)寄存器一致,B指令就需要等A回寫之后才能譯碼。這就是五級(jí)流水線中的寄存器沖突。如圖6所示,LDR指令寫R9是在回寫階段,而MOV中需要用到的 R9正是LDR在回寫階段將會(huì)重新寫入的寄存器值,MOV譯碼需要等待,直到LDR指令的寄存器回寫操作完成。(注:現(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是世界上很流行的一種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)核。
所有的指令長(zhǎng)度都是32位
指令操作必須適合流水線
所以需要在軟件層面盡量避免內(nèi)部的互鎖
https://blog.csdn.net/qq_41191281/article/details/85933985
MIPS采用馮諾依曼結(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的完整概念。
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的空間了。
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)品。
ARM的下一代走向多內(nèi)核結(jié)構(gòu),而MIPS公司的下一代核心則轉(zhuǎn)向硬件多線程功能(multithreading)
聯(lián)系客服