ARMv8 Architecture
ARMv8 Architecture
ARMv8 Architecture
ARMv8
Technology Preview
By Richard Grisenthwaite
Lead Architect and Fellow. ARM
What is ARMv8?
ARMv8
• A-profile only
(at this time)
• 64-bit architecture
support
AArch64 - Motivation
AES
2 encode and 2 decode instructions
Work on the Advanced SIMD 128-bit registers
2 instructions encode/decode a single round of AES
64-bit General Purpose Register file used for: Media Register File used for:
Scalar Integer computation Scalar Single and Double Precision FP
32-bit and 64-bit 32-bit and 64-bit
Address computation Advanced SIMD for Integer and FP
64-bit 64- or 128-bit wide vectors
Cryptography
Vectors distinguish
Exception type: synchronous, IRQ, FIQ or System Error
Exception origin (same or lower exception level) and register width
AArch32->AArch64 transition
EL0 App1 App2 App1 App2 Trusted App1 Trusted App2
AArch64->AArch32 transition
AArch64:
separate privilege levels
Virtual Machine Monitor (VMM) or AArch32:
EL2
Hypervisor same privilege level
IF EL3 is 64-bit
EL0
}
TTBR0_EL1 VTTBR0_EL2
IPA PA (non-secure only)
EL1 TTBR1_EL1
Non-Secure
TTBR0_EL2
EL2 PA (non-secure only)
TTBR0_EL3 PA (secure or non-
EL3
secure)
EL1 TTBR0_EL1
Secure
EL0
} TTBR1_EL1
PA (secure or non-
secure)
AArch64 MMU Support
Not mapped
(Fault)
Upper 8 bits of address can be
configured for Tagged Pointers
0x0000FFFFFFFFFFFF, (248 – 1) Meaning interpreted by software
0 => 1 transition point
TTBR0 dependent on TCR_EL1.T0SZ value IPA supports up to 48 bits on same
(app) space
basis
0
Supporting up to 48 bits of PA
space
Discoverable configuration option
Translation Granules
VA Bits <47:39> VA Bits <38:30> VA Bits <29:21> VA Bits <20:12> VA Bits <11:0>
Level 1 table index Level 2 table index Level 3 table index Level 4 table (page) index Page offset address
Level 1 table index Level 2 table (page) index Page offset address
6 5 4 1 2 1 0
3 2 8 2
Upper attributes SBZ Address out SBZ Lower attributes and validity
X0 R0 X16 R14_irq
X1 R1 X17 R13_irq
X2 R2 X18 R14_svc
R0 R0 R0 R0 R0 R0 R0 X3 R3 X19 R13_svc
R1 R1 R1 R1 R1 R1 R1 X4 R4 X20 R14_abt
R2 R2 R2 R2 R2 R2 R2 X5 R5 X21 R13_abt
R3 R3 R3 R3 R3 R3 R3 X6 R6 X22 R14_und
X7 R7 X23 R13_und
R4 R4 R4 R4 R4 R4 R4
X8 R8usr X24 R8_fiq
R5 R5 R5 R5 R5 R5 R5 X9 R9usr X25 R9_fiq
R6 R6 R6 R6 R6 R6 R6 X10 R10usr X26 R10_fiq
R7 R7 R7 R7 R7 R7 R7 X11 R11usr X27 R11_fiq
R8 R8 R8 R8 R8 R8_fiq R8 X12 R12usr X28 R12_fiq
R9 R9 R9 R9 R9 R9_fiq R9 X13 R13usr X29 R13_fiq
X14 R14usr X30 R14_fiq
R10 R10 R10 R10 R10 R10_fiq R10
X15 R13_hyp
R11 R11 R11 R11 R11 R11_fiq R11
R12 R12 R12 R12 R12 R12_fiq R12
SPSR_EL1 SPSR_svc
R13 (SP) SP_svc SP_abt SP_und SP_irq SP_fiq SP_hyp
SPSR_EL2 SPSR_hyp
R14 (LR) LR_svc LR_abt LR_und LR_irq LR_fiq
ELR_EL2 ELR_hyp
SP_EL0-2
AArch32 ELR_hyp
AArch64
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq SPSR_hyp ELR_EL1
AArch32 Enhancements
Main enhancements:
Load acquire/store release and improved barriers
Cryptography instructions
Some additional improvements for IEEE754-2008
Debug in ARMv8
Cortex-A15 & other ARMv7 parts are the top end for ARM today
Provide a lot of capability for the next few years