ARM(Advanced RISC Machine)이란
1985년 영국의 아콘 컴퓨터(Arcon Computers) 에서 처음 개발을 시작하여 만든 프로세서이다.
이 때, 초기 ARM의 이름은 Acorn RISC Machine 으로 시작한 것이 ARM의 시작이었다.
이후 약 5년 뒤 1990 Apple, VLSI Technology 라는 두 회사와 아콘 컴퓨터, 총 세 회사의 조인트 벤처로 생겨났다.
세 회사가 합작회사를 설립하고 이름을 Advanced RISC Machine 으로 변경하였고,
이 ARM이 지금까지 이어져 오고 있다.
ARM 프로세서는 현재 임베디드 기기에서 가장 많이 사용되는 RISC 기반의32bit 프로세서이다.
저전력을 기반으로 설계된 ARM은 스마트폰을 비롯한 각종 다양한 전자기기, 여러 임베디드 시스템에서 사용되고 있다.
최초의 ARM 프로세서 VC25를 시작으로, ARM7, ARM9, ARM10, ARM11까지 발전해오면서 '저전력 고성능 마이크로컨트롤러'의 기준을 새로 만들며 임베디드 프로세서의 위치를 굳히게 되었다.
후에 ARM사의 각 A, R, M 약자로 Cortex Series Cortex-A, Cortex-R, Cortex-M을 출시 해 두 번째 전성기를 맞이하고 있다.
Cortex Series가 나오기 전에는 프로세서의 세대마다 단순하게 성능과 기능을 향상시키는 개념이었다면,
Cortex Series 이후부터는 용도레 따라 동시에 여러 CPU구조를 개발하게 되었다.
Cortex-A는 일반 OS 상에서 실행할 수 있는 Application을 실행할 수 있는 실행 능력에 중점을 두었고,
Cortex-R은 Real-Time System 용도에 중점을 두었고,
Cortex-M은 Microcontroller 시장을 타겟으로 중점을 두어 각 제품을 분리하고, 설계하고 있다.
여러 반도체 제조 회사들이나 칩 개발 회사는 ARM사의 ARM부터 Cortex까지 제공받은 ARM 프로세서에 주뱐 장치를 추가하여 각 회사의 SoC를 만들고, 이를 사용자에게 판매하거나 자체 제품을 만들 때 사용한다.
그래서 ARM 기반의 SoC는 ARM 프로세서를 사용한다는 것은 모두 같지만, 주변 장치는 모두 다르다.
ST Electronics의 STM32, SAMSUND의 Exynos, TI의 TMS 등 ARM 아키텍처를 사용하는 MCU는 무수히 많다.
ARM의 명령어
ARM 제품에 기본적으로 명령어는 2가지의 형태가 존재한다. 명령어는 각 비트수에 따라 아래와 같다.
32bit ARM 명령어
16bit Thubm 명령어
각각의 명령어마다 장단점이 존재한다.
ARM의 동작 모드
ARM 프로세서 내부에는 동작 모드가 존재한다. 동작 모드란 프로세서의 권한에 따라 어떤 일을 처리하는지에 관한 동작이다.
1. USER Mode
2. IRQ(Interrupt ReQuest) Mode
3. FIQ(Fast Interrupt reQuest) Mode
4. SVC(SuperViser Call) Mode
5. Abort Mode
6. UNDEF(UNDEFined) Mode
7. System Mode
8. Secure Monitor Mode
ARM의 레지스터(Register)
ARM의 레지스터는 32비트 길이의 레지스터를 총 40개가 존재한다. 각각 40개의 레지스터는
데이터 연산에 사용되는 범용 레지스터 32개,
프로그램 제어 목적으로 사용되는 PC(Program Counter) 1개,
프로세서의 동작 상태를 나타내는 상태 레지스터 7개,
가 존재하며, 동작 모드에 따라서 사용되는 레지스터가 제한된다.
각각의 동작 모드에서 ARM 명령어는 1개의 PC를 포함하여 모두 16개의 레지스터로 각종 데이터 처리 및
연산을 하기 위한 프로그램을 작성할 수 있다. 각각 레지스터를 R0부터 R15까지 번호를 부여하여 사용하고,
R15는 PC가 사용하고 있다.
최근 Secure Monitor Mode가 생기기 전 까지는 총 37개의 레지스터가 사용되었다.
ARM의 예외 처리
ARM의 예외 처리(Exception Handling)는 정상적으로 처리되는 프로그램이 아니라, 외부에서의 갑작스러운 요청 또는 오류에 대한 처리를 말하며, 에외 처리를 처리하기 위해서 정상적으로 진행되고 있던 프로그램이 동작을 잠시 멈춘 후, 각 예외에 맞게 프로세서의 동작 모드를 변환, 예외에 대한 문제 처리 후 다시 정해진 프로그램을 수행한다.
ARM에 정의된 예외 처리의 종류는 9가지가 존재한다.
1. Reset
2. Undefined Instruction
3. SuperVisor Call(Software Interrupt)
4. Prefetch Abort
5. Data Abort
6. IRQ(Interrupt ReQuest)
7. FIQ(Fast Interrupt reQuest)
8. SMC(Secure Monitor Call)
9. Softeware Breakpoint
'Embedded > 이론' 카테고리의 다른 글
[Embedded] ARM 구성 레지스터 (0) | 2022.11.15 |
---|---|
[Embedded] ARM 동작 모드와 레지스터 (0) | 2022.11.15 |
[Embedded] 명령어 구조 (0) | 2022.11.15 |
[Embedded] 임베디드 시스템의 메모리 종류 (0) | 2022.11.15 |
[Embedded] Endian 구조 (0) | 2022.11.15 |