ARM Architecture

ARM Architecture

ย 

์ด ๋ฌธ์„œ๋Š” ์˜๊ตญ์˜ Advanced RISC Machine(์ดํ•˜ ARM)์‚ฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ฒ”์šฉ 32 bit RISC processor design์ธ ARM architecture๋ฅผ ๊ฐœ๋žต์ ์œผ๋กœ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

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

๋ชฉ์ฐจ


ARM Architecture๋ž€?


ARM architecture๋ž€ ์˜๊ตญ์˜ Advanced RISC Machine(์ดํ•˜ ARM)์‚ฌ๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋ฒ”์šฉ 32 bit RISC processor design์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ARM์‚ฌ๋Š” ์ง์ ‘ processor ๋ฐ˜๋„์ฒด๋ฅผ ์ œ์กฐํ•ด ํŒ๋งคํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์„ค๊ณ„ํ•œ processor๋ฅผ Intellectual property(์ดํ•˜ IP) ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•˜๋ฉฐ, ์ด์— ๋Œ€ํ•œ license๋ฅผ ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค. ARM processor IP๋Š” ์ผ์ข…์˜ ์„ค๊ณ„๋„๋กœ, ์—ฌ๋Ÿฌ ๋ฐ˜๋„์ฒด ํšŒ์‚ฌ๋“ค์ด ์—ฌ๊ธฐ์— ํ•„์š”ํ•œ ์ฃผ๋ณ€์žฅ์น˜๋“ค์„ ์ถ”๊ฐ€ํ•ด System On Chip(์ดํ•˜ SoC) ํ˜•ํƒœ๋กœ ๋ฐ˜๋„์ฒด๋ฅผ ์ œ์กฐํ•ด ํŒ๋งคํ•ฉ๋‹ˆ๋‹ค.

ARM architecture์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์„ฑ๋Šฅ์— ๋น„ํ•ด ์ „๋ ฅ ์†Œ๋น„๋Ÿ‰์ด ์ž‘๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ํœด๋Œ€์ „ํ™”๊ธฐ๋‚˜ 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 ๋ฐ ๊ทธ ํŠน์ง•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Architecture

Features

Core

ARMv1

  • ์ฒซ ARM processor

  • 26 bit addressing

ARM1

ARMv2

  • 32 bit multiplier

  • 32 bit coprocessor ์ง€์›

ARM2

ARMv2a

  • On-Chip cache

  • SWAP ๋ช…๋ น ์ถ”๊ฐ€

ARM3

ARMv3

  • 32 bit addressing

  • CPSR๊ณผ SPSR regisrer ๋ถ„๋ฆฌ

  • Mode ์ถ”๊ฐ€ (undefined mode, abort mode)

  • MMU ์ง€์› (๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ)

ARM6, ARM7DI

ARMv3M

  • Signed/unsigned long multiply ๋ช…๋ น ์ถ”๊ฐ€

ARM7M

ARMv4

  • Signed/unsigned halfwords/bytes load-store ๋ช…๋ น ์ถ”๊ฐ€

  • Mode ์ถ”๊ฐ€ (system mode)

  • 26 bit addressing ์ง€์›ํ•˜์ง€ ์•Š์Œ

StrongARM

ARMv4T

  • Thumb ๋ช…๋ น ์ถ”๊ฐ€

ARM7TDMI, ARM9TDMI

ARMv5TE

  • ARMv4T์˜ ํ™•์žฅํŒ

  • ํ–ฅ์ƒ๋œ ARM๊ณผ Thumb state ๊ฐ„ ์ „ํ™˜ ๋ช…๋ น ์ถ”๊ฐ€

  • Digital Signal Processing(์ดํ•˜ DSP) ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ช…๋ น ์ถ”๊ฐ€ (Enhanced DSP ๋ช…๋ น)

ARM9E, ARM10E

ARMv5TEJ

  • Java bytecode ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ช…๋ น ์ถ”๊ฐ€ (Jazelle ๊ธฐ์ˆ )

ARM7EJ, ARM926EJ

ARMv6

  • Multiprocessor ๋ช…๋ น ๊ฐœ์„ 

  • Unaligned and mixed endian ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ง€์›

  • Multimedia ๋ช…๋ น ์ถ”๊ฐ€

ARM11

Table 1. ARM Architecture ๋ณ„ ํŠน์ง•๊ณผ ๊ตฌํ˜„ ARM Core ์˜ˆ

ARM core๋Š” ํŠน์ง•์— ๋”ฐ๋ผ ๋ช‡ ๊ฐœ์˜ family๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ํ‘œ๋Š” ARM core family์™€ ๊ทธ familiy์— ์†ํ•˜๋Š” ARM core์˜ ๋Œ€๋žต์ ์ธ ํŠน์ง•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ย 

ARM7

ARM9

ARM10

ARM11

ํŒŒ์ดํ”„๋ผ์ธ ๋‹จ๊ณ„

3

5

6

8

๋™์ž‘ ์ฃผํŒŒ์ˆ˜ (MHz)

125

220 ~ 250

266 ~ 325

400

์ „๋ ฅ ์†Œ๋น„๋Ÿ‰ (mW/MHz)

0.06

0.4 (+cache)

0.5 (+cache)

0.4 (+cache)

์„ฑ๋Š˜ (MIPS/MHz)

0.9

1.1

1.3

1.2

๊ตฌ์กฐ

Von Neumann

Harvard

Harvard

Harvard

  • mW/MHz: 0.13 micron ๊ณต์ •์ผ ๊ฒฝ์šฐ

  • MIPS: Dhrystone 2.1

Table 2. ARM Core Family ๋ณ„ ํŠน์ง•

ARM architecture, ARM core, ๋˜๋Š” ARM processor ์ด๋ฆ„์— ํฌํ•จ๋œ ์•ŒํŒŒ๋ฒณ๊ณผ ์ˆซ์ž์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ARM [a] [b] [T] [D] [M] [I] [E] [J] [F] [-S] aย : ์†ํ•œ ARM core family bย : memory management unit, memory protection unit, cache, TCM ๊ตฌ์„ฑ Tย : Thumb ๋ช…๋ น ์ง€์› Dย : ๋””๋ฒ„๊ทธ ๊ธฐ๋Šฅ ์ง€์› Mย : 64 bit ๊ฒฐ๊ณผ๋ฅผ ๋‚ด๋Š” ๊ณฑ์…ˆ๊ธฐ ์ง€์› Iย : In-Circuit Emulator(์ดํ•˜ ICE) ๊ธฐ๋Šฅ ์ง€์› Eย : DSP ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ช…๋ น(Enhanced DSP ๋ช…๋ น) ์ง€์› Jย : Java bytecode ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ช…๋ น(Jazelle ๊ธฐ์ˆ ) ์ง€์› Fย : Vector Floating-Point(์ดํ•˜ VFP) ๊ตฌ์กฐ ์ง€์› -S: Electronic Design Automation(์ดํ•˜ EDA) ๋„๊ตฌ๋กœ synthesis ํ•  ์ˆ˜ ์žˆ์Œ

์˜ˆ๋ฅผ ๋“ค์–ด, 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 1.ย Halfword and Byte Order of Little-endian

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 ๊ตฌ์„ฑ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Figure 3.ย ARM State Registers

์œ„ ๊ทธ๋ฆผ์—์„œ ์ง„ํ•˜๊ฒŒ ํ‘œ์‹œ๋œ ๊ฒƒ์€ 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 ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.


Figure 5.ย ARMv4T Architecture Program Status Register Bits

๊ฐ 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

      M[4:0]

      Mode

      10000

      User

      10001

      Fast interrupt

      10010

      Interrupt

      10011

      Supervisor

      10111

      Abort

      11111

      System

      11011

      Undefined

      Table 3. Mode Bits

Exception

Exceptioin์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ฑฐ๋‚˜ ์™ธ๋ถ€ ์žฅ์น˜์˜ ์š”์ฒญ(interrupt)์ด ๋“ค์–ด์™€์„œ ํ˜„์žฌ ์ˆ˜ํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž ์‹œ ๋ฉˆ์ถ”๊ณ  ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜ ๋˜๋Š” ์š”์ฒญ(interrupt)์„ ๋จผ์ € ์ฒ˜๋ฆฌํ•˜๋Š” ์ƒํ™ฉ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด exception handling์€ ARM state์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, exception handler๋Š” ARM instruction set์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Exception์ด ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ exception์„ ์ฒ˜๋ฆฌํ•˜๋Š” exception vector๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

  1. PC๋ฅผ LR์— ๋ณต์‚ฌ

  2. CPSR์„ SPSR์— ๋ณต์‚ฌ

  3. Operating mode ๋ณ€๊ฒฝ

  4. Operating state๋ฅผ ARM state๋กœ ๋ณ€๊ฒฝ

  5. ํ•„์š”์— ๋”ฐ๋ผ interrupt์„ disable ์‹œํ‚ด

  6. PC๋ฅผ ํ•ด๋‹น exception vector ์ฃผ์†Œ๋กœ ๋ณ€๊ฒฝ

Exception ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ๊ฑฐ์ณ ๋‹ค์‹œ exception์ด ๋ฐœ์ƒํ•˜๊ธฐ ์ง์ „์— ์ˆ˜ํ–‰ ์ค‘์ด๋˜ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋ณต๊ท€ํ•ฉ๋‹ˆ๋‹ค.

  1. LR์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฐธ์กฐํ•ด PC ๊ฐ’ ๋ณต์›

  2. SPSR์— ์ €์žฅ๋œ ๊ฐ’์œผ๋กœ CPSR ๋ณต์›

Exception์€ ์•„๋ž˜์™€ ๊ฐ™์€ 6์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Reset

    • nRESET signal์— low ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์„ reset ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • FIQ

    • nFIQ signal์— low ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. FIQ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • IRQ

    • nIRQ signal์— low ์‹ ํ˜ธ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. IRQ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Abort

    • ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์— ์‹คํŒจํ–ˆ์„ ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Abort exception์€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Prefetch Abort (์ดํ•˜ PABT)

      • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‹คํ–‰ํ•  instruction์„ ๊ฐ€์ ธ์˜ค๋Š”(prefetch) ๋‹จ๊ณ„์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ด exception์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Exception์ด ๋ฐœ์ƒํ•˜๋Š” ์‹œ์ ์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•œ ์‹œ์ ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ œ์˜ instruction์ด pipeline์˜ execute stage์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ์ž…๋‹ˆ๋‹ค.

    • Data Abort (์ดํ•˜ DABT)

      • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ์ด exception์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด exception์€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผ์„ ์‹œ๋„ํ•œ ์‹œ์ ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  • SWI

    • SWI instruction์„ ์‚ฌ์šฉํ•ด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ง์ ‘ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ฃผ๋กœ supervisor mode ๊ถŒํ•œ์„ ์–ป๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šด์˜์ฒด์ œ๊ฐ€ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • Undefined instruction

    • ์ •์˜๋˜์ง€ ์•Š์€ instruction์„ ์‹คํ–‰ํ•˜๋ ค ํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ๋Š” exception ์ฒ˜๋ฆฌ๋ฅผ ๋๋‚ธ ํ›„ ์›๋ž˜์˜ code๋กœ ๋ณต๊ท€ํ•˜๋Š” ๋ช…๋ น๊ณผ exception์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ r14์— ์ €์žฅ๋˜๋Š” ๊ฐ’์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Entry

Return Instruction

r14(LR) (ARM State)

r14(LR) (Thumb State)

SWI

MOVS PC, R14_svc

PC+4

PC+2

UDEF

MOVS PC, R14_und

PC+4

PC+2

PABT

SUBS PC, R14_abt, #4

PC+4

PC+4

FIQ

SUBS PC, R14_fiq, #4

PC+4

PC+4

IRQ

SUBS PC, R14_irq, #4

PC+4

PC+4

IDABT

SUBS PC, R14_abt, #8

PC+8

PC+8

RESET

Not applicable

ย 

ย 

Table 4.ย Exception Return Instruction

๋‘๊ฐœ ์ด์ƒ์˜ Exception์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋ฉด ์•„๋ž˜ ํ‘œ์— ๋ช…์‹œ๋œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

Priority

Exception

Highest

Reset

ย 

Data Abort

ย 

FIQ

ย 

IRQ

ย 

Prefetch Abort

Lowest

Undefined Instruction, SWI

Table 5.ย Exception Priority Order

์•„๋ž˜ ํ‘œ๋Š” ๊ฐ exception ๋ณ„๋กœ exception์„ ์ฒ˜๋ฆฌํ•˜๋Š” exception vector์˜ ์ฃผ์†Œ, exception์„ ์ฒ˜๋ฆฌํ•  ๋•Œ์˜ operating mode, ๊ทธ๋ฆฌ๊ณ  IRQ์™€ FIQ disable ์—ฌ๋ถ€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

Address

Exception

Mode on Entry

IRQ (I State on Entry)

FIQ (F State on Entry)

0x00000000

Reset

Supervisor

Disabled

Disabled

0x00000004

Undefined Instruction

Undefined

Disabled

Unchanged

0x00000008

Software Instruction

Supervisor

Disabled

Unchanged

0x0000000C

Prefetch Abort

Abort

Disabled

Unchanged

0x00000010

Data Abort

Abort

Disabled

Unchanged

0x00000014

Reserved

ย 

ย 

ย 

0x00000018

IRQ

IRQ

Disabled

Unchanged

0x0000001C

FIQ

FIQ

Disabled

Disabled

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 ๊ตฌ์กฐ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Figure 5. ARMv5TEJ Architecture Program Status Register Bits

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