色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > 新ARM處理器架構(gòu)

新ARM處理器架構(gòu) 時(shí)間:2018-08-09      來(lái)源:未知

2011年11月,ARM公司發(fā)布了新一代處理器架構(gòu)ARMv8的部分技術(shù)細(xì)節(jié)。這是ARM公司的首款支持64位指令集的處理器架構(gòu)。由于ARM處理器的授權(quán)內(nèi)核被廣泛用于手機(jī)等諸多電子產(chǎn)品,故ARMv8架構(gòu)作為下一代處理器的核心技術(shù)而受到普遍關(guān)注。ARM將在2012年間推出基于ARMv8架構(gòu)的處理器內(nèi)核并開(kāi)始授權(quán),而面向消費(fèi)者和企業(yè)的樣機(jī)于2013年由蘋(píng)果的A7處理器上首次運(yùn)用。

ARM-v8是在32位ARM架構(gòu)上進(jìn)行開(kāi)發(fā)的,將被首先用于對(duì)擴(kuò)展虛擬地址和64位數(shù)據(jù)處理技術(shù)有更高要求的產(chǎn)品領(lǐng)域,如企業(yè)應(yīng)用、高檔消費(fèi)電子產(chǎn)品。

ARMv8架構(gòu)包含兩個(gè)執(zhí)行狀態(tài):AArch64和AArch32。AArch64執(zhí)行狀態(tài)針對(duì)64位處理技術(shù),引入了一個(gè)全新指令集A64;而AArch32執(zhí)行狀態(tài)將支持現(xiàn)有的ARM指令集。目前的ARMv7架構(gòu)的主要特性都將在ARMv8架構(gòu)中得以保留或進(jìn)一步拓展,如:TrustZone技術(shù)、虛擬化技術(shù)及NEON advanced SIMD技術(shù),等。

配合ARMv8架構(gòu)的推出,ARM正在努力確保一個(gè)強(qiáng)大的設(shè)計(jì)生態(tài)系統(tǒng)來(lái)支持64位指令集。ARM的主要合作伙伴已經(jīng)能夠獲得支持ARM-v8架構(gòu)的ARM編譯器和快速模型(Fast Model)。在新架構(gòu)的支持下,對(duì)一系列開(kāi)源操作系統(tǒng)、應(yīng)用程序和第三方工具的初始開(kāi)發(fā)已經(jīng)在開(kāi)展中。通過(guò)合作,ARM合作伙伴們共同加速64位生態(tài)系統(tǒng)的開(kāi)發(fā),在許多情況下,這可視為是對(duì)現(xiàn)有支持基于ARMv7架構(gòu)產(chǎn)品的廣泛生態(tài)系統(tǒng)的自然延伸。

ARM-v8架構(gòu)屬于64位架構(gòu),向下兼容ARM-v7架構(gòu)。ARM-v8架構(gòu)支持兩種類(lèi)型的ARM指令集,一種是Aarch64位指令集,一種是Aarch32位指令集。不管是那種類(lèi)型的指令集,每條指令依然都是字(4字節(jié))對(duì)齊。兩種類(lèi)型指令集的本質(zhì)區(qū)別是工作寄存器的位數(shù)不同,Aarch32位指令集使用32bit工作寄存器,而Aarch64位指令集使用64bit工作寄存器。

ARMv8 提供AArch32 state和 AArch64 state 兩種Execution State,下面是兩種Execution State對(duì)比.

Execution State Note
 
 
 
AArch32
提供13個(gè)32bit通用寄存器R0-R12,一個(gè)32bit PC指針 (R15)、堆棧指針SP (R13)、鏈接寄存器LR (R14)
提供一個(gè)32bit異常鏈接寄存器ELR, 用于Hyp mode下的異常返回
提供32個(gè)64bit SIMD向量和標(biāo)量floating-point支持
提供兩個(gè)指令集A32(32bit)、T32(16/32bit)
兼容ARMv7的異常模型
協(xié)處理器只支持CP10\CP11\CP14\CP15
 
 
 
 
AArch64
提供31個(gè)64bit通用寄存器X0-X30(W0-W30),其中X30是程序鏈接寄存器LR
提供一個(gè)64bit PC指針、堆棧指針SPx 、異常鏈接寄存器ELRx
提供32個(gè)128bit SIMD向量和標(biāo)量floating-point支持
定義ARMv8異常等級(jí)ELx(x<4),x越大等級(jí)越高,權(quán)限越大
定義一組PE state寄存器PSTATE(NZCV/DAIF/CurrentEL/SPSel等),用于保存PE當(dāng)前的狀態(tài)信息
沒(méi)有協(xié)處理器概念

AArch32重要寄存器

寄存器類(lèi)型 Bit 描述
R0-R14 32bit 通用寄存器,但是ARM不建議使用有特殊功能的R13,R14,R15當(dāng)做通用寄存器使用.
SP_x 32bit 通常稱(chēng)R13為堆棧指針,除了User和Sys模式外,其他各種模式下都有對(duì)應(yīng)的SP_x寄存器:x ={ und/svc/abt/irq/fiq/hyp/mon}
LR_x 32bit 稱(chēng)R14為鏈接寄存器,除了User和Sys模式外,其他各種模式下都有對(duì)應(yīng)的SP_x寄存器:x ={ und/svc/abt/svc/irq/fiq/mon},用于保存程序返回鏈接信息地址,AArch32環(huán)境下,也用于保存異常返回地址,也就說(shuō)LR和ELR是公用一個(gè),AArch64下是獨(dú)立的.
ELR_hyp 32bit Hyp mode下特有的異常鏈接寄存器,保存異常進(jìn)入Hyp mode時(shí)的異常地址
PC 32bit 通常稱(chēng)R15為程序計(jì)算器PC指針,AArch32 中PC指向取指地址,是執(zhí)行指令地址+8,AArch64中PC讀取時(shí)指向當(dāng)前指令地址.
CPSR 32bit 記錄當(dāng)前PE的運(yùn)行狀態(tài)數(shù)據(jù),CPSR.M[4:0]記錄運(yùn)行模式,AArch64下使用PSTATE代替
APSR 32bit 應(yīng)用程序狀態(tài)寄存器,EL0下可以使用APSR訪問(wèn)部分PSTATE值
SPSR_x 32bit 是CPSR的備份,除了User和Sys模式外,其他各種模式下都有對(duì)應(yīng)的SPSR_x寄存器:x ={ und/svc/abt/irq/fiq/hpy/mon},注意:這些模式只適用于32bit運(yùn)行環(huán)境
HCR 32bit EL2特有,HCR.{TEG,AMO,IMO,FMO,RW}控制EL0/EL1的異常路由
SCR 32bit EL3特有,SCR.{EA,IRQ,FIQ,RW}控制EL0/EL1/EL2的異常路由,注意EL3始終不會(huì)路由
VBAR 32bit 保存任意異常進(jìn)入非Hyp mode & 非Monitor mode的跳轉(zhuǎn)向量基地址
HVBAR 32bit 保存任意異常進(jìn)入Hyp mode的跳轉(zhuǎn)向量基地址
MVBAR 32bit 保存任意異常進(jìn)入Monitor mode的跳轉(zhuǎn)向量基地址
ESR_ELx 32bit 保存異常進(jìn)入ELx時(shí)的異常綜合信息,包含異常類(lèi)型EC等,可以通過(guò)EC值判斷異常class
PSTATE   不是一個(gè)寄存器,是保存當(dāng)前PE狀態(tài)的一組寄存器統(tǒng)稱(chēng),其中可訪問(wèn)寄存器有:PSTATE.{NZCV,DAIF,CurrentEL,SPSel},屬于ARMv8新增內(nèi)容,主要用于64bit環(huán)境下

A32狀態(tài)下寄存器組織

新ARM8處理器架構(gòu)

• 所謂的banked register 是指一個(gè)寄存器在不同模式下有對(duì)應(yīng)不同的寄存器,比如SP,在abort模式下是SP_bat,在Und模式是SP_und,在iqr模式下是SP_irq等,進(jìn)入各種模式后會(huì)自動(dòng)切換映射到各個(gè)模式下對(duì)應(yīng)的寄存器.

• R0-R7是所謂的非banked register,R8-R14是所謂的banked register

4.1.1 T32狀態(tài)下寄存器組織

A32使用
Rd/Rn編碼位寬4位
T32-32bit使用
Rd/Rn編碼位寬4位
T32-16bit使用
Rd/Rn編碼位寬3位
R0 R0 R0
R1 R1 R1
R2 R2 R2
R3 R3 R3
R4 R4 R4
R5 R5 R5
R6 R6 R6
R7 R7 R7
R8 R8 并不是說(shuō)T32-16bit下沒(méi)有R8~R12,而是有限的指令才能訪問(wèn)到,16bit指令的Rd/Rn編碼位只有3位,所以Rx范圍是R0-R7
R9 R9
R10 R10
R11 R11
R12 R12
SP (R13) SP (R13) SP (R13)
LR (R14) LR (R14) //M LR (R14) //M
PC (R15) PC (R15) //P PC (R15) //P
CPSR CPSR CPSR
SPSR SPSR SPSR

AArch64重要寄存器

寄存器類(lèi)型 Bit 描述
X0-X30 64bit 通用寄存器,如果有需要可以當(dāng)做32bit使用:WO-W30
LR (X30) 64bit 通常稱(chēng)X30為程序鏈接寄存器,保存跳轉(zhuǎn)返回信息地址
SP_ELx 64bit 若PSTATE.M[0] ==1,則每個(gè)ELx選擇SP_ELx,否則選擇同一個(gè)SP_EL0
ELR_ELx 64bit 異常鏈接寄存器,保存異常進(jìn)入ELx的異常地址(x={0,1,2,3})
PC 64bit 程序計(jì)數(shù)器,俗稱(chēng)PC指針,總是指向即將要執(zhí)行的下一條指令
SPSR_ELx 32bit 寄存器,保存進(jìn)入ELx的PSTATE狀態(tài)信息
NZCV 32bit 允許訪問(wèn)的符號(hào)標(biāo)志位
DIAF 32bit 中斷使能位:D-Debug,I-IRQ,A-SError,F(xiàn)-FIQ ,邏輯0允許
CurrentEL 32bit 記錄當(dāng)前處于哪個(gè)Exception level
SPSel 32bit 記錄當(dāng)前使用SP_EL0還是SP_ELx,x= {1,2,3}
HCR_EL2 32bit HCR_EL2.{TEG,AMO,IMO,FMO,RW}控制EL0/EL1的異常路由 邏輯1允許
SCR_EL3 32bit SCR_EL3.{EA,IRQ,FIQ,RW}控制EL0/EL1/EL2的異常路由  邏輯1允許
ESR_ELx 32bit 保存異常進(jìn)入ELx時(shí)的異常綜合信息,包含異常類(lèi)型EC等.
VBAR_ELx 64bit 保存任意異常進(jìn)入ELx的跳轉(zhuǎn)向量基地址 x={0,1,2,3}
PSTATE   不是一個(gè)寄存器,是保存當(dāng)前PE狀態(tài)的一組寄存器統(tǒng)稱(chēng),其中可訪問(wèn)寄存器有:PSTATE.{NZCV,DAIF,CurrentEL,SPSel},屬于ARMv8新增內(nèi)容,64bit下代替CPSR

64、32位寄存器的映射關(guān)系

64-bit 32-bit  
 
 
 
 
 
 
 
 
64-bit OS
Runing
AArch32 App
64-bit 32-bit
X0 R0 X20 LR_adt
X1 R1 X21 SP_abt
X2 R2 X22 LR_und
X3 R3 X23 SP_und
X4 R4 X24 R8_fiq
X5 R5 X25 R9_fiq
X6 R6 X26 R10_fiq
X7 R7 X27 R11_fiq
X8 R8_usr X28 R12_fiq
X9 R9_usr X29 SP_fiq
X10 R10_usr X30(LR) LR_fiq
X11 R11_usr SCR_EL3 SCR
X12 R12_usr HCR_EL2 HCR
X13 SP_usr VBAR_EL1 VBAR
X14 LR_usr VBAR_EL2 HVBAR
X15 SP_hyp VBAR_EL3 MVBAR
X16 LR_irq ESR_EL1 DFSR
X17 SP_irq ESR_EL2 HSR
X18 LR_svc    
X19 SP_svc    

ARMv8指令集

• A64指令集

• A32 & T32指令集

• 指令編碼基本格式

<Opcode>{<Cond>}<S>  <Rd>, <Rn> {,<Opcode2>}

• 其中尖括號(hào)是必須的,花括號(hào)是可選的

• A32: Rd => {R0–R14}

• A64: Rd =>Xt => {X0–X30}

標(biāo)識(shí)符 Note
Opcode 操作碼,也就是助記符,說(shuō)明指令需要執(zhí)行的操作類(lèi)型
Cond 指令執(zhí)行條件碼,在編碼中占4bit,0b0000 -0b1110
S 條件碼設(shè)置項(xiàng),決定本次指令執(zhí)行是否影響PSTATE寄存器響應(yīng)狀態(tài)位值
Rd/Xt 目標(biāo)寄存器,A32指令可以選擇R0-R14,T32指令大部分只能選擇RO-R7,A64指令可以選擇X0-X30 or W0-W30
Rn/Xn 第一個(gè)操作數(shù)的寄存器,和Rd一樣,不同指令有不同要求
Opcode2 第二個(gè)操作數(shù),可以是立即數(shù),寄存器Rm和寄存器移位方式(Rm,#shit)

指令分類(lèi)

類(lèi)型 Note
• 跳轉(zhuǎn)指令 條件跳轉(zhuǎn)、無(wú)條件跳轉(zhuǎn)(#imm、register)指令
• 異常產(chǎn)生指令 系統(tǒng)調(diào)用類(lèi)指令(SVC、HVC、SMC)
• 系統(tǒng)寄存器指令 讀寫(xiě)系統(tǒng)寄存器,如 :MRS、MSR指令 可操作PSTATE的位段寄存器
• 數(shù)據(jù)處理指令 包括各種算數(shù)運(yùn)算、邏輯運(yùn)算、位操作、移位(shift)指令
• load/store
內(nèi)存訪問(wèn)指令
load/store {批量寄存器、單個(gè)寄存器、一對(duì)寄存器、非-暫存、非特權(quán)、獨(dú)占}以及l(fā)oad-Acquire、store-Release指令 (A64沒(méi)有LDM/STM指令)
• 協(xié)處理指令 A64沒(méi)有協(xié)處理器指令

A64指令集

• A64指令編碼寬度固定32bit
• 31個(gè)(X0-X30)個(gè)64bit通用用途寄存器(用作32bit時(shí)是W0-W30),寄存器名使用5bit編碼
• PC指針不能作為數(shù)據(jù)處理指或load指令的目的寄存器,X30通常用作LR
• 移除了批量加載寄存器指令 LDM/STM, PUSH/POP, 使用STP/LDP 一對(duì)加載寄存器指令代替
• 增加支持未對(duì)齊的load/store指令立即數(shù)偏移尋址,提供非-暫存LDNP/STNP指令,不需要hold數(shù)據(jù)到cache中
• 沒(méi)有提供訪問(wèn)CPSR的單一寄存器,但是提供訪問(wèn)PSTATE的狀態(tài)域寄存器
• 相比A32少了很多條件執(zhí)行指令,只有條件跳轉(zhuǎn)和少數(shù)數(shù)據(jù)處理這類(lèi)指令才有條件執(zhí)行.
• 支持48bit虛擬尋址空間
• 大部分A64指令都有32/64位兩種形式
• A64沒(méi)有協(xié)處理器的概念

指令助記符

整型
W/R 32bit整數(shù)
X 64bit整數(shù)
加載/存儲(chǔ)、符號(hào)-0擴(kuò)展
B 無(wú)符號(hào)8bit字節(jié)
SB 帶符號(hào)8bit字節(jié)
H 無(wú)符號(hào)16bit半字
SH 帶符號(hào)16bit半字
W 無(wú)符號(hào)32bit字
SW 帶符號(hào)32bit字
P Pair(一對(duì))
寄存器寬度改變
H 高位(dst gets top half)
N 有限位(dst < src)
L Long (dst > src)
W Wide (dst==src1,src1>src2) ?

指令條件碼

編碼 助記符 描述 標(biāo)記
0000 EQ 運(yùn)算結(jié)果相等為1 Z==1
0001 NE 運(yùn)算結(jié)果不等為0 Z==0
0010 HS/CS 無(wú)符號(hào)高或者相同進(jìn)位,發(fā)生進(jìn)位為1 C==1
0011 LO/CC 無(wú)符號(hào)低清零,發(fā)生借位為0 C==0
0100 MI 負(fù)數(shù)為1 N==1
0101 PL 非負(fù)數(shù)0 N==0
0110 VS 有符號(hào)溢出為1 V==1
0111 VC 沒(méi)用溢出為0 V==0
1000 HI 無(wú)符號(hào) > C==1 && Z==0
1001 LS 無(wú)符號(hào) <= !(C==1 && Z==0)
1010 GE 帶符號(hào) >= N==V
1011 LT 帶符號(hào) < N!=V
1100 GT 帶符號(hào) > Z==0 && N==V
1101 LE 帶符號(hào) <= !( Z==0 && N==V)
1110 AL  
無(wú)條件執(zhí)行
 
Any
 

上一篇:tftp命令使用詳解

下一篇:堆和棧的區(qū)別

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專(zhuān)線(xiàn):010-82525158 企業(yè)培訓(xùn)洽談專(zhuān)線(xiàn):010-82525379 院校合作洽談專(zhuān)線(xiàn):010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部

主站蜘蛛池模板: 欧美A级成人婬片免费看 | 亚洲熟妇中文字幕日产无码 | 精品国产福利一区二区 | 日本岛国片在线观看一区二区 | 全免费A级毛片免费看网站 国产成人精品a∨一区二区 | 抖音奶片无罩子52秒回放 | 亚洲AV无码成人黄网站在线观看 | 涩涩视频在线 | 无遮挡激情视频国产在线观看 | 欧洲女人牲交性开放视频 | 国产成人综合色就色综合 | NXGX欧美在线观看视频免费 | 人人妻人人人澡人人爽精品AV | 亚洲精品久久无码老熟妇 | 亚洲av永久无码精品网站在线观看 | 免费看一区二区成人a片 | 中国丰满熟妇xxxx性 | 亚洲AV无码AV男人的天堂不卡 | 亚洲精品色婷婷在线影院 | 97在线观看永久免费视频 | 亚洲一区二区三区无码久久 | 九九99无码精品视频在线观看 | 亚洲av永久无码天堂网小说区 | 粉嫩虎白女在线观看中国女 | 麻豆视频污 | 久久99精品国产综合久久久口爆 | 国产黑色丝袜在线播放 | 中文AV伊人AV无码AV狼人 | 精品99re| 无码永久成人免费视频 | 亚洲熟妇色XXXXⅩ欧美 | 日本丶国产丶欧美色综合 | 日本成人免费在线 | 亚洲国产精品高清在线第1页 | 亚洲天堂精品视频 | 黄色一级短视频 | 亚洲v国产v天堂a无码二区久久 | 一本一道av无码中文字幕麻豆 | 亚洲春色Aⅴ无码专区在线播放 | 亚洲综合久久成人A片红豆 床震吃胸膜奶免费视频 | 日本XXX免费高清色视频在线观看 |