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简介. 31 `; m. u& m# \0 {- I# K) C
1.1基础认识. 3
3 B% G9 @' s, D- O8 H4 N1.2 相关专业名词解释. 30 K. N- p8 z4 T4 a! L
第2章 Execution State 41 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) g3.1.1 EL3使用AArch64、AArch32的对比. 5
* k- y, k# c, [  c3.2 ELx 和 Execution State 组合. 6* z' _/ s) A; R; s5 v
3.3路由控制. 7
. |" w" ]8 X' X+ P3.3.1 路由规则. 74 o* g! |2 W. R
3.3.2 IRQ/FIQ/SError路由流程图. 83 J* q/ a$ |3 ^5 ^# W! r) T
第4章 ARMv8寄存器. 9
; D5 d6 [. U8 P/ K4.1 AArch32重要寄存器. 9, k) o) U' f8 R  x
4.1.1 A32状态下寄存器组织. 10
! ?4 P. R; K; ~. o4.1.1 T32状态下寄存器组织. 106 h, i. T* K, \
4.2 AArch64重要寄存器. 114 {: r/ y+ E& l8 g+ }. ^
4.3 64、32位寄存器的映射关系. 110 [3 O$ b# l, x8 k/ e$ T( ^
第5章 异常模型. 12
" N& J  Q4 |% o' c% n5.1 异常类型描述. 126 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 I5.2.1 寄存器操作. 132 }1 E  I: p, C. ?  Z( W
5.2.2 路由控制. 14$ T& e6 `% c, Z1 {, c
5.3流程图对比. 14
( ^4 l0 x( q" f& `# H5.3.1 IRQ 流程图. 15, ]3 q& l1 j# [: ^& W; ?" s# {
5.3.2 Data Abort 流程图. 18
$ b) p2 s( O! w, S5.4  源代码异常入口. 20. w9 R: @/ u5 T; U
5.4.1 C函数入口. 20
1 z0 ^8 a" z2 Y2 R5.4.2 上报流程图. 20
/ Q+ n# v( F8 S# M5.4.3 异常进入压栈准备. 214 ^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 指令条件码. 233 |% e& [& X- ?; P$ A* A
6.2.3 跳转指令. 24
6 z  {1 m: S& g2 x  @% r6.2.4 异常产生和返回指令. 24, i9 C( a& `4 J+ z
6.2.5 系统寄存器指令. 24
; ]$ R( ]5 o- ]% k7 Z% o- r3 c# `4 R6.2.6 数据处理指令. 258 w- v$ J- p* L7 M) A6 t
6.2.7 Load/Store指令. 27
3 w8 N7 n) l9 _7 k4 M( j; W6 L6.2.8 屏障指令. 31) i- @, `6 W' w
6.3 A32 & T32指令集. 310 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: i6.3.3 系统寄存器指令. 32
0 A" J2 e$ V: e2 k2 Y- B2 A6.3.4 系统寄存器指令. 325 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, q6.4 指令编码. 34
" c& U; ?; B- R  L/ r% h! a6.4.1 A32编码. 34
' `9 ?0 w+ J! \6.4.2 T32-16bit编码. 35
# i# f+ I' X8 w/ P* n6.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( ^' M7.1.2 经典五级流水线. 36. }* L. A8 O. n6 s( R) r% B
7.2 流水线冲突. 37
/ Z+ z/ f' ~( r$ o7.3 指令并行. 379 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! n1.1基础认识
7 n2 D9 Q- ~( N3 }5 p: {7 J7 D$ m0 ?+ n

7 V: I3 w2 ^- W4 C7 f+ yARMv8的架构继承以往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; Y1.2 相关专业名词解释
! N4 w! ?8 C  t7 `5 T  m8 @, I; }" n" X/ _- o' F. g

* `9 Z8 X" i9 k1 t. BAArch32                    描述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; aA64                          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