ARM架構(gòu)基本理論
一、ARM的簡(jiǎn)介
ARM(Advanced RISC Machine)是一種基于RISC(Reduced Instruction Set Computing)架構(gòu)的計(jì)算機(jī)處理器架構(gòu),由ARM Holdings(ARM公司)開發(fā)和授權(quán)給其他公司生產(chǎn)和銷售。
ARM架構(gòu)最初是為低功耗、高效能的嵌入式系統(tǒng)設(shè)計(jì)的,如智能手機(jī)、平板電腦、數(shù)字電視、路由器、音頻設(shè)備、控制器等。隨著技術(shù)的發(fā)展,ARM處理器也逐漸應(yīng)用于更多的領(lǐng)域,如服務(wù)器、超級(jí)計(jì)算機(jī)等。
ARM處理器具有低功耗、高效能、可擴(kuò)展性、可靠性等優(yōu)點(diǎn),因此得到了廣泛的應(yīng)用。目前,ARM處理器已經(jīng)成為移動(dòng)設(shè)備和嵌入式系統(tǒng)中最常用的處理器架構(gòu)之一,也是全球最流行的處理器架構(gòu)之一。
處理器的指令架構(gòu)分為:
- CISC(Complex Instruction Set Computer):復(fù)雜指令集,CISC CPU 包含有豐富的單元電路,因而功能強(qiáng)、面積大、功耗大。具有大量的指令和尋址方式,各種指令的使用頻率相差懸殊其中80%的程序只使用20%的指令,大多數(shù)程序只使用少量的指令就能夠運(yùn)行。因此人們對(duì)于指令系統(tǒng)進(jìn)行了簡(jiǎn)化,將復(fù)雜的指令用簡(jiǎn)單的指令組合使用,于是就形成RISC指令集。
-
RISC(Reduced Instruction Set Computer):精簡(jiǎn)指令集,選取使用頻率最高的一些簡(jiǎn)單指令,復(fù)雜指令的功能由簡(jiǎn)單指令的組合來(lái)實(shí)現(xiàn),只有Load/Store(取數(shù)/存數(shù))指令訪存,其余指令的操作都在寄存器之間進(jìn)行。特別重視編譯優(yōu)化工作,以減少程序執(zhí)行時(shí)間。從指令系統(tǒng)兼容性看,CISC大多能實(shí)現(xiàn)軟件兼容,即高檔機(jī)包含了低檔機(jī)的全部指令,并可加以擴(kuò)充。但RISC簡(jiǎn)化了指令系統(tǒng),指令條數(shù)少,格式也不同于老機(jī)器,因此大多數(shù)RISC機(jī)不能與老機(jī)器兼容。
例如:有N條指令,每條指令運(yùn)行的時(shí)間為T,而CISC指令的運(yùn)行時(shí)間為T1=N*T,而RISC指令可以將一條指令分解成3條指令(取指令、譯碼、執(zhí)行)。,每條指令的時(shí)間是T/3,則T2=(N+2)/3*T
二、ARM技術(shù)
1、ARM的基本數(shù)據(jù)類型
ARM采用32位架構(gòu),ARM的基本數(shù)據(jù)類型有以下3種。
Byte:字節(jié),8bit。
Halfword:半字,16bit(半字必須與2字節(jié)邊界對(duì)齊)。
Word:字,32bit(字必須與4字節(jié)邊界對(duì)齊)。
字邊界對(duì)齊是以0,4,8…為首地址,即首地址的低2位必須0 (0000、0100、1000、1100)。
半字邊界對(duì)齊是以0,2,4…為首地址,即首地址的低1位必須0 (0000、0010、0100、0110)。
2、處理器的兩種工作狀態(tài)
ARM狀態(tài):32位,ARM狀態(tài)執(zhí)行字對(duì)齊的32位ARM指令。
Thumb狀態(tài),16位,執(zhí)行半字對(duì)齊的16位指令。
用Bx Rm指令來(lái)進(jìn)行兩種狀態(tài)的切換:
其中Bx是跳轉(zhuǎn)指令,而Rm是寄存器(1個(gè)字,32位),如果Rn的位為1,則進(jìn)入Thumb狀態(tài);如果Rn的位為0,這進(jìn)入ARM狀態(tài)。(原 因:ARM指令的后兩位始終為0,沒(méi)有用,而Thumb指令的后一位始終為0,沒(méi)有用,因此采用位0來(lái)表示ARM指令與Thumb指令的切換標(biāo)志位。)
ARM指令集和THUMB指令集的關(guān)系:
THUMB指令集是ARM指令集的子集,所有的Thumb指令都有相對(duì)應(yīng)的ARM指令。Thumb的體系結(jié)構(gòu)還不是很完整,所以不能要求處理器,只支持Thumb代碼,卻不支持ARM指令集。Thumb代碼對(duì)通用功能支持較好,對(duì)于一些非通用功能,則可以借用ARM指令集。所以應(yīng)用程序可以混合使用ARM指令和Thumb程序,以達(dá)到提升性能和代碼密度的目的。同時(shí)可以降低功耗、節(jié)約成本。
3、ARM處理器的兩種存儲(chǔ)格式
ARM體系結(jié)構(gòu)可以用兩種方法存儲(chǔ)數(shù)據(jù)字,稱之為大端模式(Big-Endian)和小端模式 (Little-Endian)。
?。?)大端模式:在這種模式中,32位數(shù)據(jù)字的高字節(jié)存儲(chǔ)在低地址中,而數(shù)據(jù)字的低字節(jié)則存放在高地址中。
?。?)小端模式:與大端模式存儲(chǔ)數(shù)據(jù)完全不同,在小端模式下,32位數(shù)據(jù)字的高字節(jié)存放在高地址,而低字節(jié)存放在低地址。
通常習(xí)慣使用小端模式。
4、ARM處理器的工作模式
5、31個(gè)通用寄存器
R13(SP):指向堆棧,保護(hù)中斷程序。
R14(LR):鏈接寄存器,返回地址。
R15(PC):程序計(jì)數(shù)器,指向下一條執(zhí)行指令的地址。
CPSR:狀態(tài)寄存器。
發(fā)生中斷的程序跳轉(zhuǎn):
6、狀態(tài)寄存器
(1)條件碼標(biāo)志
N、Z、C、V,最高4位稱為條件碼標(biāo)志。ARM的大多數(shù)指令可以條件執(zhí)行的,即通過(guò)檢測(cè)這些條件碼標(biāo)志來(lái)決定程序指令如何執(zhí)行。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-430838.html
N:在結(jié)果是有符號(hào)的二進(jìn)制補(bǔ)碼情況下,如果結(jié)果為負(fù)數(shù),則N=1;如果結(jié)果為非負(fù)數(shù),則N=0。
Z:如果結(jié)果為0,則Z=1;如果結(jié)果為非零,則Z=0。
C:對(duì)于加法指令(包含比較指令CMN),如果產(chǎn)生進(jìn)位,則C=1;否則C=0。 對(duì)于減法指令(包括比較指令CMP),如果產(chǎn)生借位,則C=0;否則C=1。對(duì)于有移位操作的非法指令,C為移位操作中最后移出位的值。對(duì)于其他指令,C通常不變。
V:對(duì)于加減法指令,在操作數(shù)和結(jié)果是有符號(hào)的整數(shù)時(shí),如果發(fā)生溢出,則V=1;如果無(wú)溢出發(fā)生,則V=0;對(duì)于其他指令,V通常不發(fā)生變化。
(2)控制位
I:為1時(shí),IRQ中斷禁止,清零時(shí)中斷允許。
F:為1時(shí),F(xiàn)IQ中斷禁止,清零時(shí)中斷允許。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-430838.html
到了這里,關(guān)于ARM架構(gòu)基本理論(1)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!