Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


개요

이 문서는 영국의 Advanced RISC Machine(이하 ARM)사가 개발한 범용 32 bit RISC processor인 ARM을 개략적으로 설명합니다.

Version

Start

Finish

Status

Contributor

Description

01.00.00

2007.07.19

2007.07.30

Done

Sungho Park

Creation and Redact

01.00.01

2007.09.12

2007.09.12

Done

Sungho Park

Refactoring

01.00.02

2019.03.30

2019.03.30

Done

Sungho Park

Move to Confluence Wiki

목차

...

Table of Contents

...

개요

...

ARM processor란 영국의 Advanced RISC Machine(이하 ARM)사가 개발한 범용 32 bit RISC processor를 의미합니다. ARM사는 직접 processor 반도체를 제조해 판매하지 않습니다. 대신 설계한 processor를 Intellectual property(이하 IP) 형태로 제공하며, 이에 대한 license를 판매합니다. ARM processor IP는 일종의 설계도로, 여러 반도체 회사들이 여기에 필요한 주변장치들을 추가해 System On Chip(이하 SoC) 형태로 반도체를 제조해 판매합니다.

ARM processor의 가장 큰 특징은 성능에 비해 전력 소비량이 작다는 것입니다. 때문에 휴대전화기나 PDA같은 비교적 큰 computing power가 필요하지만 전력 소비량이 작어야하는 하는 휴대용 기기 또는 내장형 기기 분야에서 많이 사용되고 있습니다.

용어 정리

...

ARM 관련 자료에는 ARM architecture, ARM core, ARM processor라는 용어들이 자주 나오는데, 각각의 의미는 다음과 같습니다. 먼저, ARM architecture는 명령어, 레지스터 구조, 메모리 구조 등의 processor 기본 구조와 동작원리에 대한 정의를 의미합니다. 그리고 이 ARM architecture에 따라 구현한 processor의 핵십 부분을 ARM core라고 합니다. 이 ARM core에 Cache, Memory Management Unit(이하 MMU), Memory Protection Unit(이하 MPU), Tightly Coupled Memory (이하 TCM), Bus Interface Unit (이하 BIU) 등의 핵심 주변장치들을 추가해놓은 것을 ARM processor라고 합니다. 아래 표는 ARM architecture와 그 architecture를 따르는 주요 ARM core 및 그 특징을 보여줍니다.

...

예를 들어, ARM926EJ-S의 “9”는 ARM 9 family에 속함을, “26”은 MMU와 cache 그리고 TCM 지원을, “E”는 DSP 성능 향상을 위한 명령(Enhanced DSP 명령) 지원을, J는 Java bytecode 성능 향상을 위한 명령(Jazelle 기술) 지원을, -S는 EDA 도구로 synthesis 할 수 있음을 의미합니다. 그리고 ARM 9 family 부터는 대부분 “T”, “D”, “M”, “I” 가 나타내는 기능들을 기본적으로 포함하기 때문에 이 알파벳들은 생략합니다.

Programmer's Model

...

Programmer's model이란 프로그래머가 프로그램을 작성하기 위해 필요한 정보를 의미합니다. 명령어, 메모리 구조, 동작 모드, 레지스터, 예외처리 방법, 인터럽트 처리 방법 등이 이에 해당합니다. 이 programmer’s model은 ARM architecture에 따라 조금씩 달라집니다.

ARMv4T Architecture의 Programmer's Model

...

Instuction Set (명령어)

32-bit ARM instruction set과 16-bit Thumb instruction set을 지원합니다. ARM instruction set은 ARM state에서, Thumb instruction set은 Thumb state에서 각각 실행되며, ARM / Thumb state 간의 전환은 BX instruction을 사용해 이루어집니다.

Memory Format (메모리 구조)

기본 설정은 little-endian이지만, big-endian도 지원합니다. 아래 그림은 Little-endian일 경우와 Big-endian일 경우의 halfword와 byte 순서를 보여줍니다. (ARM 관련 문서에서 word는 4 byte 입니다.)

...

Figure 2. Halfword and Byte Order of Big-endian

Operating Mode (동작 모드)

다음과 같은 7개의 operating mode가 존재합니다.

  • User mode
    • 일반적인 프로그램들이 동작하는 모드로, 대부분의 응용프로그램들이 이 모드에서 동작합니다. 이 모드는 다른 6개의 모드와 달리 유일하게 privileged mode 가 아닙니다. 때문에 일부 중요 시스템 자원 접근이 제한됩니다.
  • Fast Interrupt mode (이하 FIQ mode)
    • Fast interrupt를 처리하는 모드.
  • Interrupt mode (이하 IRQ mode)
    • 일만 interrupt를 처리하는 모드.
  • Supervisor mode
    • Reset 후 또는 software interrupt (이하 SWI)가 발생했을 때 이 모드로 전환됩니다. 주로 운영체제가 이 모드를 사용합니다.
  • Abort mode
    • Data 또는 instruction prefetch에 실패했을 때 이 모드가 됩니다.
  • System mode
    • User mode 와 같이, 외부 요청이 아닌 소프트웨어의 요청(Current Program Status Register를 직접 수정)에 의해 전환되는 모드로, 주로 운영체제가 이 모드를 사용합니다.
  • Undefined mode
    • 정의되지 않은 instruction을 실행하려고 했을 때 이 모드로 전환됩니다.

Register

총 37개의 register가 있으며, 이들 중 31개는 general purpose register이고, 6개는 status register 입니다.

ARM State Registers

ARM state일 경우, 16개의 general purpose register와 1개 또는 2개의 status register를 사용할 수 있습니다. 아래 그림은 ARM state일 경우의 register 구성을 보여줍니다.

...

위 그림에서 진하게 표시된 것은 banked register로, 같은 이름으로 접근하지만 해당 operating mode 일때 다른 operating mode 일 때와는 다른 독립적인 값을 가집니다 Register r13은 일반적으로 stack point(이하 SP)로 사용하며, register r14는 함수 호출(BL 또는 BLX instruction 사용) 시 복귀할 주소를 저장하는 link register(이하 LR)로 사용합니다. 그리고 register r15는 다음에 수행할 instruction 주소를 저장하는 program counter(이하 PC)로 사용합니다. FIQ mode일 경우는 특별히 register r8~r12 역시 banked register입니다. 때문에 FIQ mode에서 수행되는 FIQ handler는 진입할 때 이전 register 값을 저장했다가 복귀할 때 register를 이전 값으로 되돌리는 작업을 해 줄 필요가 없습니다. 때문에 FIQ handler는 원하는 작업을 IRQ handler에 비해 빠르게 처리할 수 있습니다. Current Porgram Status Register (이하 CPSR)는 이름 그대로 현재 상태 정보를 저장하고 있습니다. 이 register가 담고 있는 내용은 이후에 따로 자세히 설명하겠습니다. Saved Program Status Register (이하 SPSR)는 현재 operating mode로 들어가지 직전 operating mode의 상태 정보를 담고 있습니다. 내용은 CPSR과 동일합니다.

Thumb State Registers

아래 그림은 Thumb state일 때 접근 가능한 register들을 보여줍니다. 일부를 제외한 대부분의 instruction들의 경우, ARM state일 때와는 달리 아래 그림에 표시되지 않은 r8~r12를 사용할 수 없습니다. 이 차이점을 제외하면 다른 내용은 ARM state일 경우와 동일합니다.

...

Figure 4. Thumb State Registers

Program Status Register (CPSR, SPSR)

Program status register는 가장 최근에 수행된 ALU operation의 결과에 대한 정보(condition code flags)를 저장하고 있습니다. 그리고 interrupt disable 여부, operating mode, operating state에 대한 정보도 함께 가지고 있습니다. Program status register는 두 종류가 있는데, 그중 하나인 CPSR은 현재 상태 정보를 담고 있으며, 다른 하나인 SPSR은 현재 operating mode로 변경되기 직전의 상태 정보를 담고 있습니다.. 아래 그림은 program status register의 bit 구조를 보여줍니다.

...

  • N
    • 연산 결과가 음수이면 1, 그렇지 않으면 0
  • Z
    • 연산 결과가 0이면 1, 그렇지 않으면 0
  • C
    • 비교 기능을 포함한 덧셈 연산에서 carry (unsigned overflow)가 발생하면 1, 그렇지 않으면 0
    • 비교 기능을 포함한 뺄셈 연산에서 borrow (unsigned underflow)가 발생하면 0, 그렇지 않으면 1
    • Shift 연산에서 범위 밖으로 벗어난 마지막 bit가 1이면 1, 그렇지 않으면 0
  • V
    • 덧셈 또는 뺄셈 연산에서 signed overflow가 발생하면 1, 그렇지 않으면 0
  • I
    • 1이면 IRQ가 disable
  • F
    • 1이면 FIQ가 disable
  • T
    • 1이면 Thumb state
  • M


    • M[4:0]Mode
      10000User
      10001Fast interrupt
      10010Interrupt
      10011Supervisor
      10111Abort
      11111System
      11011Undefined

      Table 3. Mode Bits

Exception

Exceptioin은 오류가 발생했거나 외부 장치의 요청(interrupt)이 들어와서 현재 수행중인 프로그램을 잠시 멈추고 발생한 오류 또는 요청(interrupt)을 먼저 처리하는 상황을 의미합니다. 이 exception handling은 ARM state에서만 가능하기 때문에, exception handler는 ARM instruction set으로 작성해야 합니다. Exception이 발생하면 다음과 같은 과정을 거쳐 exception을 처리하는 exception vector가 실행됩니다.

...

Table 6. Exception Vectors

ARMv5TEJ Architecture의 Programmer's Model

...

Instruction Set (명령어)

ARMv4T Architecture의 확장판으로 향상된 ARM과 Thumb state 간 전환 명령, DSP 성능 향상을 위한 명령, Java bytecode 수행 성능 향상을 위한 명령이 추가되었습니다.

Memory Format (메모리 구조)

ARMv4T Architecture와 동일합니다.

Operating Mode (동작 모드)

ARMv4T Architecture와 동일합니다.

Register

ARMv4T Architecture와 동일합니다.

Program Status Register (CPSR, SPSR)

Program status register의 bit 구조는 아래 그림과 같습니다.

...

Q, J bit가 추가된 것 외에는 ARMv4T Architecture와 동일합니다. Q는 enhanced DSP instruction을 수행했을 때 overflow 또는 saturation이 발생하면 1, 그렇지 않으면 0값을 가집니다. J는 현재 상태가 Jazelle state일 경우 1, 그렇지 않을 경우 0 값을 가집니다.

Exception

Breakpoint instruction exception이 추가되었습니다. 이 exception은 BKPT instruction을 처리하는 하드웨어가 추가되어 있지 않은 환경에서 이 instruction을 수행할 때 발생하며, prefetch abort exception vector에서 처리합니다. 우선 순위는 가장 낮습니다. Control bit functions register c1의 location of exception vectors 값을 수정해 exception vector location을 변경할 수 있게 되었습니다. 이 값이 0이면 exception vector base address가 0x00000000이 되며, 1이면 0xFFFF0000이 됩니다. 이 두가지 사항 외에는 ARMv4T Architecture와 동일합니다.

참고 자료

...

  1. ARM v5TE Architecture Reference Manual
  2. ARM7TDMI r4p1 Technical Reference Manual
  3. ARM9EJ-S Revision r1p2 Technical Reference Manual
  4. ARM926EJ-S r0p4 r0p5 Technical Reference Manual
  5. http://www.arm.com
  6. ARM System Developer’s Guide - Designing and Optimizing System Software
  7. ARM으로 배우는 임베디드 시스템

...