지식/MCU지식

ARM 명령어 아키텍처

원원 2023. 4. 23. 20:17

안녕하세요. 오늘은 ARM 명령어 아키텍처에 대해 알아보겠습니다

 

* Instruction Set Architecture(ISA)
소프트웨어와 하드웨어 사이에서 합의된 규칙입니다. 명령어 집합, 명령어 형식을 지정합니다. 컴파일러 개발자는 이러한 규칙을 가지고 C와같은 고급언어에서 기계어로 번역하는 컴파일러를 설계합니다. 하드웨어디자이너는 이러한 규칙을 따라 프로세서를 만듭니다. ISA에는 RISC(Reduced Instruction Set Computer)와 CISC(Complexe Instruction Set Computer) 두가지 범주로 구분할 수 있습니다. 모바일, 임베디드에서는 주로 RISC를 사용하고 데스크탑, 서버에서 사용되는 x86은 CISC를 사용합니다. RISC프로세서는 일반적으로 간단한 단일 기능 연산, 고정 명령어 길이 및 몇 가지 주소 지정 모드를 가지고있습니다. CISC는 복잡하고 다양한 기능의 연산, 가변명령 길이 및 많은 주소 모드를 가지고있습니다.

 

* RISC vs CISC
RISC : 단순한 명령어, 고정 길이 명령어, 적은 주소 지정 모드
예) ARM, RISC-V

CISC : 복잡한 명령어, 가변 길이 명령어, 다양한 주소 지정 모드
예)x86-32, x86-64

컴파일러 , 하드웨어 , 프로세서가 발전하면서 RISC와 CISC차이가 줄어듭니다.

 

*ARM 명령어 아키텍처
ARM은 RISC 아키텍처이므로 RISC에 자세히 알아보겠습니다. RISC는 4가지 명령어 아키텍처가 있습니다.(Arm32 Thumb-1, Thumb-2, Arm64)

1) Arm32 : 1985년에 출시되었고 모든 명령어는 32비트로 인코딩됩니다. 각 레지스터는 32비트를 보유합니다.

2) Thumb-1 : 1994년에 출시되었고 가장 일반적인 Arm32 명령어의 하위집합입니다. Arm7TDMI에 처음 구현되었습니다.Thumb-1 명령어 집합의 목적은 코드 밀도를 향상시키는 것입니다. Thumb-1의 각 명령어는 길이가 16비트뿐이며 실행 가능한 파일 크기가 작아집니다. 명령어가 액세스할 수 있는 레지스터 수를 제한하여 공간을 절약합니다.명령어 메모리의 크기를 줄이면 많은 임베디드 시스템, 특히 리소스가 제한된 시스템에 이점이 있습니다. 32비트 명령어와 비교할 때 16비트 명령어는 더 적은 수의 피연산자, 더 작은 직접 숫자 및 더 적은 주소 지정 체계를 인코딩할 수 있습니다. 따라서 Thumb-1은 Arm32보다 느리게 실행됩니다

3) Thumb-2 : 2002년에 출시되었고 Thumb-2는 16비트 Thumb-1와 32비트 A32의 하위집합으로 구성됩니다. Arm1156T2-S에 처음 구현되었습니다. Thumb-2는 Thumb-1와 같은 높은 코드밀도와 Arm32와 비교 가능한 빠른 성능을 달성하여 성능과 코드 밀도 균형을 최적화하는 것을 목표로 합니다. Armv7-M및 Armv8-M시리즈의 Cortext-M은 Thumb-2명령어만 실행합니다. Thumb-2은 32비트 명령어와 32비트 Arm32의 명령어는 비슷한 동작을 수행하지만 명령어 인코딩에서 중요한 차이가 있습니다. 예를들어 Armv7-A는 조건부 명령을 제공합니다. Arm32는 명령 자체에서 조건을 직접 인코딩합니다. 그러나 Thumb-2는 조건 시퀀스를 구축하기 위해 IT(if-then) 명령어에 의존해야합니다.

4) Arm64 : 2011년에 출시되었고 Armv8-A에 소개되었습니다. 현재는 스마트폰에서 많이 사용합니다. A64의 명령어는 이전 명령어 집합과 같이 고정 길이 32비트를 가지고 있지만, 64비트 넓이의 범용 레지스터(GPRS)를 가지고 있어 64비트 산술 연산을 더 빠르고 정확하게 수행할 수 있습니다. GPRS의 수는 31개에서 더 늘어나 Arm32의 GPR 개수를 두 배 이상 늘려 컴파일러 디자이너들에게 더 큰 유연성을 제공합니다. 메모리 주소도 64비트이므로 4GB 이상의 메모리를 사용할 수 있습니다. Arm64는 항상 0을 반환하고 모든 쓰기를 무시하는 특수 목적 레지스터 zr을 예약합니다. zero 레지스터는 ISA 및 하드웨어 설계를 단순화하는 유용한 기술입니다.

그림1

M: microcontroller      A: Application        R: Real-time    T32:Thumb-2  

시리즈별로 사용하는곳이 다릅니다. A는 컴퓨터/스마트폰에 주로 사용되고 R은 Real-Time 시스템에 주로 사용되고 M은 Microcontroller에 사용됩니다.

 

예시로 Cortex M3 데이터시트를 보겠습니다

Thumb, Thumb-2 명령어를 사용한다고 나와있는 걸 볼 수 있습니다. 다음에는 Thumb와 Thumb-2에 대해 자세히 알아보겠습니다.

'지식 > MCU지식' 카테고리의 다른 글

USB 키보드 통신 파형 분석하기 1편  (4) 2024.09.07
MCU-Open drain 알아보기  (0) 2023.10.15
엔디안이란?(빅엔디안, 리틀엔디안)  (0) 2023.03.26
MCU GPIO 전류 측정하기  (0) 2023.01.23
UART통신 알아보기  (1) 2022.12.24