EDA365电子论坛网
标题:
ARMv8 架构与指令集.学习笔记(1)
[打印本页]
作者:
mytomorrow
时间:
2019-6-27 11:32
标题:
ARMv8 架构与指令集.学习笔记(1)
# k% m3 T1 W) U+ K" |7 a3 ?9 d
& J4 d+ F) ^' X K# L
目 录
! Q) r7 U# n9 w# Z! {0 x+ ~
第1章 ARMv8简介. 3
1 `; m. u& m# \0 {- I# K) C
1.1基础认识. 3
3 B% G9 @' s, D- O8 H4 N
1.2 相关专业名词解释. 3
0 K. N- p8 z4 T4 a! L
第2章 Execution State 4
1 y5 ~5 ~5 ]4 A/ ]: A( R6 R
2.1 提供两种Execution State 4
% p1 a) s; d: B/ p2 M( ]
2.2 决定Execution State的条件. 4
4 t% d ]5 a2 G4 F. ?; i, t) t
第3章 Exception Level 5
% M `, q5 c) d5 J! W
3.1 Exception Level 与Security 5
6 i) L4 A+ a2 F/ Y G) a& F) g
3.1.1 EL3使用AArch64、AArch32的对比. 5
* k- y, k# c, [ c
3.2 ELx 和 Execution State 组合. 6
* z' _/ s) A; R; s5 v
3.3路由控制. 7
. |" w" ]8 X' X+ P
3.3.1 路由规则. 7
4 o* g! |2 W. R
3.3.2 IRQ/FIQ/SError路由流程图. 8
3 J* q/ a$ |3 ^5 ^# W! r) T
第4章 ARMv8寄存器. 9
; D5 d6 [. U8 P/ K
4.1 AArch32重要寄存器. 9
, k) o) U' f8 R x
4.1.1 A32状态下寄存器组织. 10
! ?4 P. R; K; ~. o
4.1.1 T32状态下寄存器组织. 10
6 h, i. T* K, \
4.2 AArch64重要寄存器. 11
4 {: r/ y+ E& l8 g+ }. ^
4.3 64、32位寄存器的映射关系. 11
0 [3 O$ b# l, x8 k/ e$ T( ^
第5章 异常模型. 12
" N& J Q4 |% o' c% n
5.1 异常类型描述. 12
6 E+ w- b3 m( D* \$ D; g
5.1.1 AArch32异常类型. 12
& {1 V* _. _9 |7 [
5.1.2 AArch64异常类型. 12
- ^# N3 _+ w7 G
5.2异常处理逻辑. 13
& p) r( v8 P: u: `4 I
5.2.1 寄存器操作. 13
2 }1 E I: p, C. ? Z( W
5.2.2 路由控制. 14
$ T& e6 `% c, Z1 {, c
5.3流程图对比. 14
( ^4 l0 x( q" f& `# H
5.3.1 IRQ 流程图. 15
, ]3 q& l1 j# [: ^& W; ?" s# {
5.3.2 Data Abort 流程图. 18
$ b) p2 s( O! w, S
5.4 源代码异常入口. 20
. w9 R: @/ u5 T; U
5.4.1 C函数入口. 20
1 z0 ^8 a" z2 Y2 R
5.4.2 上报流程图. 20
/ Q+ n# v( F8 S# M
5.4.3 异常进入压栈准备. 21
4 ^9 F; h& M* w! v, X6 Z
5.4.4 栈布局. 21
' n- P2 E) F$ a" w1 w
第6章 ARMv8指令集. 22
; a/ u4 W* ]- w7 F
6.1 概况. 22
& D. i$ q$ C* o7 J; h! U! l/ {
6.1.1 指令基本格式. 22
, T6 |. L2 ^ ?. r6 \
6.1.2 指令分类. 22
! b2 w4 Y6 h$ |
6.2 A64指令集. 22
+ s& k! ^4 Q. x$ X
6.2.1 指令助记符. 23
- y% d( G/ X1 v" n
6.2.2 指令条件码. 23
3 |% e& [& X- ?; P$ A* A
6.2.3 跳转指令. 24
6 z {1 m: S& g2 x @% r
6.2.4 异常产生和返回指令. 24
, i9 C( a& `4 J+ z
6.2.5 系统寄存器指令. 24
; ]$ R( ]5 o- ]% k7 Z% o- r3 c# `4 R
6.2.6 数据处理指令. 25
8 w- v$ J- p* L7 M) A6 t
6.2.7 Load/Store指令. 27
3 w8 N7 n) l9 _7 k4 M( j; W6 L
6.2.8 屏障指令. 31
) i- @, `6 W' w
6.3 A32 & T32指令集. 31
0 O8 x" I! I ?$ h) c& ?& r) c
6.3.1 跳转指令. 31
& x& {) J9 s$ j
6.3.2 异常产生、返回指令. 32
2 b6 n4 u& _; U/ ?5 z, f: i
6.3.3 系统寄存器指令. 32
0 A" J2 e$ V: e2 k2 Y- B2 A
6.3.4 系统寄存器指令. 32
5 A( x n2 v7 d
6.3.5 数据处理指令. 32
( ^% m, ?5 O* d/ o8 \4 [& a/ p4 ?
6.3.6 Load/Store指令. 32
( R2 Q/ A/ J* f3 N
6.3.7 IT(if then)指令. 34
; m+ D( b# x) s. P9 U1 P- c
6.3.8 协处理器指令. 34
+ t. h E9 V/ l1 P) b6 z, q
6.4 指令编码. 34
" c& U; ?; B- R L/ r% h! a
6.4.1 A32编码. 34
' `9 ?0 w+ J! \
6.4.2 T32-16bit编码. 35
# i# f+ I' X8 w/ P* n
6.4.3 T32-32bit编码. 35
% f7 k$ r5 K0 G4 C4 p z( v# e
6.4.4 A64编码. 35
" D" T, j0 T! [& ]% }2 x/ D
6.4 汇编代码分析. 35
! M* L1 n+ c6 t. J3 a- Z
第7章 流水线. 36
- }1 L8 [0 P) F7 e$ F6 V$ n4 F
7.1 简介. 36
+ I- a$ E3 D+ v9 c3 N6 W* m
7.1.1 简单三级流水线. 36
0 ]: R: Z; e0 H6 r, Y- r( ^' M
7.1.2 经典五级流水线. 36
. }* L. A8 O. n6 s( R) r% B
7.2 流水线冲突. 37
/ Z+ z/ f' ~( r$ o
7.3 指令并行. 37
9 D+ m5 T* C5 }; o1 D% {
: p0 s" R1 D- n5 M
/ o, n) Y2 ^0 ~8 q q! T0 u
! D5 D% ~" O2 F% x) g4 U B
6 P* P. J7 Q; {" N2 M0 X
5 W4 m' ]/ ?4 U* v+ [& {* N
0 e ]) N( b+ K# _' s
第1章 ARMv8简介
- I0 L0 ]8 B" L! c1 K
: \$ Z2 g8 x6 t6 b+ h! n
1.1基础认识
7 n2 D9 Q- ~( N3 }5 p
: {7 J7 D$ m0 ?+ n
7 V: I3 w2 ^- W4 C7 f+ y
ARMv8的架构继承以往ARMv7与之前处理器技术的基础,除了现有的16/32bit的Thumb2指令支持外,也向前兼容现有的A32(ARM 32bit)指令集,基于64bit的AArch64架构,除了新增A64(ARM 64bit)指令集外,也扩充了现有的A32(ARM 32bit)和T32(Thumb2 32bit)指令集,另外还新增加了CRYPTO(加密)模块支持。
7 k3 c9 t' ~% a+ u( D- [( ~
1 A5 K+ i, E' g5 Z3 {$ W# j7 Y4 c
$ {4 c1 _6 D1 t; Y
1.2 相关专业名词解释
! N4 w! ?8 C t7 `5 T m
8 @, I; }" n" X/ _- o' F. g
* `9 Z8 X" i9 k1 t. B
AArch32
描述32bit Execution State
' |' y- M2 u& b/ R. c" c; Z
AArch64
描述64bit Execution State
& _& |8 @ k% ?$ a
A32、T32
AArch32 ISA (Instruction Architecture)
" ^3 I, Z( B" T, d6 m# J% b; a
A64
AArch64 ISA (Instruction Architecture)
- w5 h8 V z, ?
Interprocessing
描述AArch32和AArch64两种执行状态之间的切换
& t' `+ O6 U7 q0 L: F9 z. u& |
SIMD
Single-Instruction, Multiple-Data (单指令多数据)
; d/ M- }1 U1 V# r
; B$ p! ~, T; ~- n' W+ D
# r6 Z5 N, E" |- B/ R! E
(参考文档:ARMv8-A Architecture reference manual-DDI0487A_g_armv8_arm.pdf)
/ M* L7 p1 [7 {
# k4 Q9 `6 c, `6 N l
* k( W9 N4 Z9 u8 E! K2 } k
第2章 Execution State
O2 |- _: z8 l- u1 J" n
* J$ ]1 j0 Q @% W: e
. P9 B4 \; b: J: d1 r5 ]
8 [- Q- G; B# [& O4 ]: _
% z7 y+ Z4 T! R7 t7 ?
" x( N5 t+ P) Q- D: {
+ V0 k' L4 `9 q1 @. @
1 j- Q" M& \) V
r4 }, w" P8 S* q7 q# o+ N# w/ s
! A w" }# p( C& Q
- R" L' q- T. ^" l) k* h
9 {7 z/ i! {1 Q3 I( ~% J
/ o" D6 P0 p' T. w
6 B- d& ^9 z- X- \# v* P2 R- b5 v& V
( N% y; g o9 y4 {5 a u C% Y* p2 i+ j
作者:
greensmile
时间:
2019-6-27 17:52
目录好长啊
作者:
shadowsong
时间:
2020-2-3 16:20
xxxxxxxxxxxxxxxxxxx
' q" i/ _* v$ b( h9 x- |/ e
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2