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 |
๋ชฉ์ฐจ
- 1 ARM Architecture๋?
- 2 ์ฉ์ด ์ ๋ฆฌ
- 3 Programmer's Model
- 3.1 ARMv4T Architecture์ Programmer's Model
- 3.1.1 Instuction Set (๋ช ๋ น์ด)
- 3.1.2 Memory Format (๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ)
- 3.1.3 Operating Mode (๋์ ๋ชจ๋)
- 3.1.4 Register
- 3.1.4.1 ARM State Registers
- 3.1.4.2 Thumb State Registers
- 3.1.5 Program Status Register (CPSR, SPSR)
- 3.1.6 Exception
- 3.2 ARMv5TEJ Architecture์ Programmer's Model
- 3.2.1 Instruction Set (๋ช ๋ น์ด)
- 3.2.2 Memory Format (๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ)
- 3.2.3 Operating Mode (๋์ ๋ชจ๋)
- 3.2.4 Register
- 3.2.5 Program Status Register (CPSR, SPSR)
- 3.2.6 Exception
- 3.1 ARMv4T Architecture์ Programmer's Model
- 4 ์ฐธ๊ณ ์๋ฃ
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 |
| ARM1 |
ARMv2 |
| ARM2 |
ARMv2a |
| ARM3 |
ARMv3 |
| ARM6, ARM7DI |
ARMv3M |
| ARM7M |
ARMv4 |
| StrongARM |
ARMv4T |
| ARM7TDMI, ARM9TDMI |
ARMv5TE |
| ARM9E, ARM10E |
ARMv5TEJ |
| ARM7EJ, ARM926EJ |
ARMv6 |
| 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 |
| ||||
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
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๊ฐ ์คํ๋ฉ๋๋ค.
PC๋ฅผ LR์ ๋ณต์ฌ
CPSR์ SPSR์ ๋ณต์ฌ
Operating mode ๋ณ๊ฒฝ
Operating state๋ฅผ ARM state๋ก ๋ณ๊ฒฝ
ํ์์ ๋ฐ๋ผ interrupt์ disable ์ํด
PC๋ฅผ ํด๋น exception vector ์ฃผ์๋ก ๋ณ๊ฒฝ
Exception ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ ๋ค์ exception์ด ๋ฐ์ํ๊ธฐ ์ง์ ์ ์ํ ์ค์ด๋ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณต๊ทํฉ๋๋ค.
LR์ ์ ์ฅ๋ ๊ฐ์ ์ฐธ์กฐํด PC ๊ฐ ๋ณต์
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์ ๋์ผํฉ๋๋ค.
์ฐธ๊ณ ์๋ฃ
ARM v5TE Architecture Reference Manual
ARM7TDMI r4p1 Technical Reference Manual
ARM9EJ-S Revision r1p2 Technical Reference Manual
ARM926EJ-S r0p4 r0p5 Technical Reference Manual