์๊ตญ์ ARM(Advanced RISC Machines)ํ์ฌ๋ RISC ํ๋ก์ธ์๋ฅผ ์ค๊ณํ๊ณ ๋ผ์ด์ผ์ฑํ๋ ํ์ฌ์ ๋๋ค. ๊ทธ ์ค์์ ARM๏ฉ์ ์ฃผ์ ์ฌํญ์ ARM ์ํค์ณ๋ฅผ ๊ฐ๋ฐ ๋ฐ CPU๋ฅผ ๋์์ธ ํฉ๋๋ค. ARM Processor๋ ๋ก๋ ๋ฐ ์ ์ฅ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ฏ๋ก ์ผ๋ฐ์ ์ธ RISC ํ๋ก์ธ์์ ๋๋ค. ๋ก๋ ๋ฐ ์ ์ฅ ๋ช ๋ น์ด๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ก์ธ์คํ ์ ์๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ช ๋ น์ด๋ ๋ ์ง์คํฐ ๋ด์ฉ์ ๋ํด์๋ง ์๋ํฉ๋๋ค. ARM์์ ๊ตฌํ๋ Thumbยฎ, Thumb-2, NEONโข, VFP ๋๋ Wireless MMX ๋ช ๋ น์ด ๋ฑ์ ์ฌ๋ฌ ๋ช ๋ น์ด๋ค์ ์ํด ์ ๋ฆฌ๋๊ณ , ์คํ ๋ฉ๋๋ค.
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 ๋ฐ ๊ทธ ํน์ง์ ๋ณด์ฌ์ค๋๋ค.
| Arichitecture | ํน์ง | 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 regisger ๋ถ๋ฆฌ 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 |
| ARMv5T | 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 |
| <ARM architecture ๋ณ ํน์ง๊ณผ ๊ตฌํ ARM core ์> |
ARM core๋ ํน์ง์ ๋ฐ๋ผ ๋ช ๊ฐ์ family๋ก ๊ตฌ๋ถํฉ๋๋ค. ์๋ ํ๋ ARM core family์ ๊ทธ familiy์ ์ํ๋ ARM core์ ๋๋ต์ ์ธ ํน์ง์ ๋ณด์ฌ์ค๋๋ค.
| ARM7 | ARM9 | ARM10 | ARM11 | |
|---|---|---|---|---|
| ํ์ดํ๋ผ์ธ ๋จ๊ณ | 3 | 5 | 6 | 8 |
| ๋์ ์ฃผํ์ (MHz) (Worst case) | 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 |
| <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์ ARM architecture์ ๋ฐ๋ผ ์กฐ๊ธ์ฉ ๋ฌ๋ผ์ง๋๋ค.
-
๋ช ๋ น์ด ์งํฉ, ๋ช ๋ น์ด ์งํฉ ์ํ, ๋์ ๋ชจ๋
- ARM Thumb instruction set ARM์ ARM instruction set๊ณผ Thumb instruction set์ด๋ผ๋ ๋ ์ข ๋ฅ์ ๋ช ๋ น์ด ์งํฉ(instruction set)์ ์ง์ํ๋ค. ARM instruction set์ ์ํ๋ ๋ช ๋ น์ด๋ค์ ๋ชจ๋ 32๋นํธ ๋ช ๋ น์ด์ ๋๋ค. Thumb instruction set์ ์ํ๋ ๋ช ๋ น์ด๋ค์ ๋ชจ๋ 16๋นํธ ๋ช ๋ น์ด์ ๋๋ค. ๋ฐ๋ผ์ ๋์ผํ C์ธ์ด ์์ค์ฝ๋๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ ARM ๋ช ๋ น์ด ์งํฉ์ผ๋ก ์ปดํ์ผ ํ์ ๋์ Thumb๋ช ๋ น์ด ์งํฉ์ผ๋ก ์ปดํ์ผ ํ์ ๋์ ์์ฑ๋๋ ๋ฐ์ด๋๋ฆฌ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋ ์ด์์ ์ธ ์ํฉ์์ ARM ๋ช ๋ น์ด ์งํฉ์ผ๋ก ์ปดํ์ผ ํ๋ ๊ฒ์ด Thumb ๋ช ๋ น์ด ์งํฉ์ผ๋ก ์ปดํ์ผ ํ๋ ๊ฒ ๋ณด๋ค ์ ํํ ๋ ๋ฐฐ ์ปค์ผ ํฉ๋๋ค
๋ฌผ๋ก ์ฌ๋ฌ๊ฐ์ง ์ต์ ํ ๊ธฐ๋ฒ์ ์ปดํ์ผ๋ฌ๊ฐ ์ ์ฉํ๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ARM ๋ช ๋ น์ด ์งํฉ์ ๋ฐ์ด๋๋ฆฌ ์ด๋ฏธ์ง๊ฐ Thumb ๋ช ๋ น์ด ์งํฉ์ ๋ฐ์ด๋๋ฆฌ ์ด๋ฏธ์ง๋ณด๋ค ๋ ๋ฐฐ ํฐ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์๊ธฐ์ง ์์ต๋๋ค.
- Instruction Set State ARM์ ๋ช ๋ น์ด ์งํฉ์ด ๋ ๊ฐ์ด๋ฏ๋ก ํด๋น ๋ช ๋ น์ด ์งํฉ์ ์คํํ๋ ํ๋ก์ธ์์ ์ํ๋ ์ด์ ์ฐ๋๋์ด ๋ ๊ฐ์ด๋ค. ARM ๋ช ๋ น์ด ์งํฉ์ ํด๋นํ๋ 32๋นํธ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ํ๋ก์ธ์์ ์ํ๋ฅผ ARM ์ํ(ARM state)๋ผ๊ณ ํ๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก, Thumb ๋ช ๋ น์ด ์งํฉ์ ํด๋นํ๋ 16๋นํธ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ์ํ๋ฅผ Thumb ์ํ(Thumb state)๋ผ๊ณ ํฉ๋๋ค.
๋น์ฐํ ARM ์ํ์ Thumb ์ํ๋ ํ๋ก์ธ์๊ฐ ๋์ํ๋ ์ค๊ฐ์ ์๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค. ARM ๋ช ๋ น์ด ์ค์ BX๋ BLX๋ฅผ ์ฌ์ฉํด์ ARM ์ํ์์ Thumb ์ํ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ์๋ก ์ํ๋ฅผ ๋ฐ๊พธ์ด๊ฐ๋ฉฐ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ ๋ฟ ๋ ๋ช ๋ น์ด ์งํฉ์ ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ARM ์ํ์์ ARM ๋ช ๋ น์ด ์งํฉ์ ๋ช ๋ น์ ์ํํ๋ค๊ฐ Thumb ๋ช ๋ น์ด๊ฐ ๋์ค๋ฉด ๋ฐ๋์ ํ๋ก์ธ์์ ๋ช ๋ น์ด ์ํ ์ํ๋ฅผ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
CortexA5์์๋ ์ถ๊ฐ๋ก ๋ ๊ฐ์ง ํ๋ก์ธ์ ์ํ๊ฐ ๋ ์กด์ฌ ํ๋๋ฐ ThumbEE ์ํ์ Jazelle ์ํ์ ๋๋ค ThumbEE ์ํ๋ Thumb ๋ช ๋ น์ด์๋ ๋ค๋ฅธ ๋ช ๋ น์ด๋ก ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ค๊ฐ์ ์คํ์ฝ๋๋ฅผ ๋ง๋ค์ด ๋ด๋ฉฐ ์ผ์ข ์ ๋ฐ์ดํธ ์ฝ๋์ ํํ๋ผ๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค Jazelle ์ํ๋ 1๋ฐ์ดํธ ๋จ์๋ก ์ ๋ ฌ๋๊ณ ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ ์ธ Java ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํด์ํ๊ธฐ ์ํ ํ๋ก์ธ์ ๋์ ์ํ์ ๋๋ค.