📱

ARM 아키텍처 배경지식 (ARMv8)

💡
작성자 : 양희동 (Heedong_Yang) 작성일 : 2021.05.02

[ 목 차 ]



1. ARM Arcitecture 소개

A. ARMv8 Architecture

[그림 1] ARM 아키텍처의 발전 상황 [1]
[그림 2] ARMv8 아키텍처의 추가된 내용[2]

B. ARM Exception

[그림 3] ARMv8 Exception Level [6]

2. ARMv8 레지스터

ARMv8 아키텍처에서는 특수목적 레지스터, 시스템 레지스터, 범용 레지스터 (General-purpose Register, GPR), SIMD & FP(SIMD & Floating-Point register), 시스템 컨트롤 레지스터(SCTLR) 등이 존재한다[2].

A. AArch64 특수목적 레지스터

[표 1] AArch64 특수목적 레지스터

AArch64의 특수목적 레지스터는 [표 1] 과 같으며 WZR, XZR의 경우 각각 32비트, 64 비트에서 사용되는 Zero 레지스터를 의미한다. 이 때 Zero 레지스터는 모두 0으로 읽히며 목적 레지스터로 사용할 때는 무시된다.

SP, WSP는 스택의 현재 위치를 가리키는 레지스터로 Exception Level에 따라 SP_ELn으로 사용한다. ELR 레지스터는 Exception Link 레지스터로 Exception Level에 따라 ELR_ELn(복귀할 Exception Level이 없는 EL0 는 제외)으로 사용하고 Exception 복귀 시 돌아갈 return address를 저장하고 있다.

SPSR 레지스터(Saved Process Status Register)는 ARMv7의 CPSR과 유사한 방식으로 Exception이 발생하면 PSTATE로부터 SPSR 레지스터에 저장된다. Exception을 발생시킬 수 없는 EL0를 제외한 Exception Level 마다 존재하며 SPSR_ELn으로 사용한다.

PC(Program Counter) 레지스터는 다음에 실행할 명령어의 위치를 저장하는 레지스터로 ARMv7과 달리 프로그래머가 ARMv8에서는 접근하여 수정하는 것은 불가능하다[2,6].

B. AArch64 PSTATE

AArch64에는 ARMv7에서의 CPSR(현재 프로세스 상태 레지스터)와 동일한 기능을 가진 레지스터가 없다.

AArch64에서 기존 CPSR의 구성요소는 독립적인 field로 제공되며 이를 프로세서 상태(PSTATE)라고 한다. PSTATE field는 아래 [표 2]와 같다.

[표 2] AArch64 PSTATE field

AArch64에서는 ERET 명령어를 수행하여 Exception 발생 시 PSTATE가 갱신되고 몇몇 비트가 SPSR_ELn에 복사된다. 그리고 Exception으로부터 복귀할 때에는 SPSR_ELn가 PSTATE로 복사된다. PSTATE 필드 중 N, Z, C, V 필드는 EL0에서 접근할 수 있지만 다른 모든 PSTATE 필드는 EL1 이상에서 실행될 수 있고 EL0에서는 정의되지 않는다[5].

C. AArch64 범용 레지스터

AArch64 실행상태에서는 64비트의 범용 레지스터인 X0~X30을 가지고 있으며 32비트 범용 레지스터인 W0~W30 레지스터도 가지고 있다.

[그림 4] AArch64 범용 레지스터 범위

범용 레지스터에 접근할 때 [그림 4]과 같이 X0~X30을 지정하면 64비트를 모두 사용하며 W0~W30을 지정하면 32비트만 사용한다.

[그림 5] 64비트 범용 레지스터 용도[7]

범용 레지스터는 [그림 5]와 같이 사용되는 용도가 지정되어 있다[2,7].

3. ARMv8 Instruction

A. ARMv8 명령어 포맷

[그림 6] ARMv8 명령어 사용 예시

ARMv8 명령어의 포맷은 [그림 6]와 같이 Operation, Destination, Operand 1, Operand 2로 구성된다.

만약 Operand 2가 레지스터일 경우에는 Shift를 포함할 수 있으며 상수일 경우에는 사용 가능한 범위가 제한되어 있다[8].

B. ARMv8 조건 필드

ARMv8에서는 조건플래그나 테스트 조건을 설정하는 몇 가지의 명령어가 존재한다. 아래 [표 3]은 조건 필드인 접미사를 정리한 내용이다[2].

[표 3] ARMv8 조건 필드

C. ARMv8 주요 Instruction

[표 4] 조건 없는 분기 명령어
[표 5] 조건부 분기 명령어

[표 6] Load / Store 명령어
[표 7] 산술 및 논리 명령어

> Reference

[1] ARM Holdings, ARM-Vision, THE NEXT GENERATION OF ARM ARCHITECTURE
Arm Vision
The latest Arm architecture updates deliver the power of specialized processing with the economics, design freedom, and accessibility of general-purpose computing. Arm CEO Simon Segars reveals how Arm empowers the broadest set of developers to write fast and run fast on Arm with the fundamental building blocks and methodology for energy-efficient, optimized, and collaborative compute solutions.
https://www.arm.com/campaigns/arm-vision
[2] Arm Holdings, "ARM Cortex-A Series Programmer's Guide for ARMv8-A", 2015.
[3] Apple, Apple unleashes M1
Apple unleashes M1
With industry-leading performance, powerful features, and incredible efficiency, M1 is Apple's first chip designed specifically for the Mac Cupertino, California - Apple today announced M1, the most powerful chip it has ever created and the first chip designed specifically for the Mac. M1 is optimized for Mac systems in which small size and power efficiency are critically important.
https://www.apple.com/newsroom/2020/11/apple-unleashes-m1/
[4] Nvidia, NVIDIA Unveils NVIDIA DRIVE Atlan, an AI Data Center on Wheels for Next-Gen Autonomous Vehicles
NVIDIA Unveils NVIDIA DRIVE Atlan, an AI Data Center on Wheels for Next-Gen Autonomous Vehicles
Fusing AI and BlueField Technology on a Single Chip, New SoC Delivers More Than 1,000 TOPS and Data-Center-Grade Security to Autonomous Machines GTC -- NVIDIA today revealed its next-generation AI-enabled processor for autonomous vehicles, NVIDIA DRIVE™ Atlan, which will deliver more than 1,000 trillion operations per second (TOPS) and targets automakers' 2025 models.
https://nvidianews.nvidia.com/news/nvidia-unveils-nvidia-drive-atlan-an-ai-data-center-on-wheels-fornext-gen-autonomous-vehicles
[5] Microsoft Designing Its Own Chips for Servers, Surface PCs
https://www.bloomberg.com/news/articles/2020-12-18/microsoft-is-designing-its-own-chips-for-servers-surface-pcs
[6] Arm Holdings, "ARM® Cortex® A73 Core Processor Technical Reference Manual".
[7] 윤석훈, "코드로 알아보는 ARM 리눅스 커널"
[8] Arm Holdings, "Armv8-A Instruction Set Architecture", Jun. 2019.