Transcript
Page 1: ARM CPU Architecture - embedded.dankook.ac.kr

ํ”„๋กœ์ ํŠธ 1

1

ARM CPU Architecture

๋‹จ๊ตญ๋Œ€ํ•™๊ต

์ปดํ“จํ„ฐํ•™๊ณผ

2009๋ฐฑ์Šน์žฌ

ib 1383@d k k [email protected]://embedded.dankook.ac.kr/~ibanez1383

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 2: ARM CPU Architecture - embedded.dankook.ac.kr

๊ฐ•์˜ ๋ชฉํ‘œ 2

ARM ์ข…๋ฅ˜์™€ ํŠน์ง• ๋ฐ ์ตœ์‹  ๋™ํ–ฅ ํŒŒ์•…

ARM CPU Architecture ์ดํ•ด

ARM Assembly ์ˆ™์ง€

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 3: ARM CPU Architecture - embedded.dankook.ac.kr

ARM 3

ARM? Advanced RISC Machines! not In 1983 at Acorn Computers Ltd.By Herman Hauser Steve Furber Sophie Wilson Robert HeatonBy Herman Hauser, Steve Furber, Sophie Wilson, Robert Heaton, Jamie UrquhartFor low power, low cost, simple, small

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Today, the ARM family accounts for approximately 75% of all embedded 32-bit RISC CPUs.

Page 4: ARM CPU Architecture - embedded.dankook.ac.kr

ARMยฎ 4

They do not sells ARM processorsThey sells only IP

Whatโ€™s the IP?Whatโ€™s the IP?As โ€˜Hard macrocellโ€™ or โ€˜Synthesizable coreโ€™ ... To processors manufactures

They also sells various development enviroments

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 5: ARM CPU Architecture - embedded.dankook.ac.kr

An auxiliary textbooks 5

Steve Furber Andrew SlossSteve FurberAddison-Wesley

Andrew SlossMorgan Kaufmann

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 6: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Core & Family & Processor 6

ARM11ARMv6M Cortex-M1

CortexCortex-A8 Cortex-A9 Cortex-A9 MPCoreCortex-R4(F)

ARMv7-AARMv7-RARMv7-M Cortex-M3

13 stage pipeline, superscalar, application profile, NEON, ...

ARM 5TEJ

ARMv6 ARM1136J(F)-SARM11

ARM1156T2(F)-SARM1176JZ(F)-S

ARMv6T2ARMv6KZARMv6K ARM11 MPCore

8 stage pipeline, SIMD9 stage pipeline, Thumb-2

1~4 core SMP

ARMv5TE

ARMv5TEJARM7EJ-SARM7TDMIARM926EJ-SARM9E

ARM10E ARM1026EJ-S

5 stage pipeline, Jazelle, Enhanced DSP instructions

ARMv4TARM7TDMI ARM719T ARM720T ARM740TARM7TDMI

ARM946E-S ARM966E-S ARM968E-S ARM966HSARM9EARM1020E ARM1022EARM10E

XScale 80200 IOP321 PXA210 PXA250 PXA255 PXA26x PXA27x Monahans PXA900 IXP42x

3 stage pipeline, Thumb

6 stage pipeline7 stage pipeline

ARMv4SA-110 SA-1110StrongARMARM810ARM8

9 0 0ARM7TDMIARM9TDMI ARM920T ARM922T ARM940TARM9TDMI

3 stage pipeline, Thumb

5 stage pipeline, static branch prediction

ARMv2ARM1 ARM2 ARM2a

ARMv3ARM60 ARM600 ARM610ARM700 ARM710 ARM7100 ARM7500 ARM7500FE

ARM2/3

ARM6ARM7

CORE

ProcessorFAMILY

MUL instruction, MMU, CPU cache

32bit addr

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

ARMv1ARM1ARM1

/ Processor, ,

Page 7: ARM CPU Architecture - embedded.dankook.ac.kr

Case Study: Cortex-A9 MPCore 7

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 8: ARM CPU Architecture - embedded.dankook.ac.kr

Case Study: OMAP 4 8

1080 pixel full HD ๋™์˜์ƒ ๋…นํ™”.์žฌ์ƒ, DSLR๊ธ‰์˜ 2์ฒœ๋งŒ ํ™”์†Œ ์‚ฌ์ง„ ์ดฌ์˜, ์•ฝ 1์ฃผ์ผ๊ฐ„์˜์˜ค๋””์˜ค ์žฌ์ƒ, ๊ธฐ์กด ์Šค๋งˆํŠธํฐ ๋Œ€๋น„ 10๋ฐฐ ์ด์ƒ ๋น ๋ฅธ ์›นํŽ˜์ด์ง€ ๋กœ๋”ฉ, 7๋ฐฐ ์ด์ƒ์˜ ์ปดํ“จํŒ… ์„ฑ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

๋Šฅ, ....

Page 9: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Architecture Ver

ARM{x}{y}{z}{T}{D}{M}{I}{E}{J}{F}{S}

x : ์ œํ’ˆ๊ตฐ

y : MMU/MPUhz : cache

T : Thumb 16bit decoderD : JTAG DebuggM : ๊ณ ์† ๋ง์…ˆ๊ธฐ

I : EmbeddedICE macrocellE : DSP ํ™•์žฅ ๋ช…๋ น์–ดE : DSP ํ™•์žฅ ๋ช…๋ น์–ด

J : JazelleF : VFP DeviceS : Synthesizible version

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 10: ARM CPU Architecture - embedded.dankook.ac.kr

ARM pipeline

3 stage3-stageFetch : Instruction fetchDecode : Instruction decoding, operand readExecute : ALU ์—ฐ์‚ฐ๊ฒฐ๊ณผ ์ƒ์„ฑ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋กExecute : ALU ์—ฐ์‚ฐ๊ฒฐ๊ณผ ์ƒ์„ฑ, ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก

5-stageFetch : Instruction fecthDecode : Instruction decoding operand readDecode : Instruction decoding, operand readExecute : ALU ์—ฐ์‚ฐ๊ฒฐ๊ณผ ์ƒ์„ฑ, load/store ๋ช…๋ น์ธ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ณ„์‚ฐ

Buffer/data : ํ•„์š” ์‹œ data ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ / ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ชจ๋“  ๋ช…๋ น์–ด์— ๋Œ€ํ•ด์„œ ๋™์ผํ•œ ํŒŒ์ดํ”„๋ผ์ธ ํ๋ฆ„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•œ ํด๋Ÿญ ๋™์•ˆbuffer ๋จWrite-back : ๊ฒฐ๊ณผ๋ฅผ ๋ ˆ์ง€์Šคํ„ฐ ํŒŒ์ผ์— ์ €์žฅ

6-stage

7 or 8-stage

6 stageFetch, Issue, Decode, Execute, Memory, Write

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Why?

Page 11: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Architecture์˜ ๋ช‡๊ฐ€์ง€ ํŠน์ง•

Pipelined architecture

ํŠน์ • ๋ช…๋ น์–ด(load/store-multiple instructions)์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ cycle์— ๊ฑธ์นœ ์‹คํ–‰ ํ—ˆ์šฉ

2๊ฐœ์˜ source reg (Rn, Rm)์™€ 1๊ฐœ์˜ ๊ฒฐ๊ณผ reg(Rd)

Inline barrel shifterInline barrel shifterBarrel shifter๋ฅผ ํ†ตํ•œ operand์˜ ์„ ์ฒ˜๋ฆฌ ์ž‘์—… ๊ฐ€๋Šฅ

ARM 32-bit instruction set๊ณผ Thumb 16-bit instruction setThumb instruction set์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ ํฌ๊ธฐ๋ฅผ 30% ์ •๋„ ์ค„์ž„

Conditional ExecutionB h i t ti ์˜ ์ˆ˜๋ฅผ ์ค„์—ฌ ์ฝ”๋“œ ํฌ๊ธฐ์™€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ดBranch instruction์˜ ์ˆ˜๋ฅผ ์ค„์—ฌ ์ฝ”๋“œ ํฌ๊ธฐ์™€ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ ์‹œํ‚ด

Data forwadingPipeline ๋‹จ๊ณ„์—์„œ ๊ฐ operand์˜ forwading๊ฐ€๋Šฅp p g

PC๊ฐ’์˜ ๋ชจํ˜ธ์„ฑ์ฆ๊ฐ€๋œ PC๊ฐ’์€ ๋ณ„๋„ reg์— ์ €์žฅ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 12: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Register

r 0r 1r 2

r 0r 1r 2

r 0r 1r 2

r 0r 1r 2

r 0r 1r 2

r 0r 1r 2

U b ked r 3r 4r 5r 6

r 3r 4r 5r 6

r 3r 4r 5r 6

r 3r 4r 5r 6

r 3r 4r 5r 6

r 3r 4r 5r 6

Unbanked Register

r 8r 9r 1 0

r 7r 8r 9r 1 0

r 7r 8r 9r 1 0

r 7r 8r 9r 1 0

r 7r 8r 9r 1 0

r 7r 8r 9r 1 0

r 7

r 11r12r 13(SP)r 14(LR)

r 11r12r 13(SP)r 14(LR)

r 11r12r 13(SP)r 14(LR)

r 11r12r 13(SP)r 14(LR)

r 11r12r 13(SP)r 14(LR)

r 11r12r 13(SP)r 14(LR)

Banked Register

( )r 15(PC)

CPSR

( )r 15(PC)

( )r 15(PC)

( )r 15(PC)

( )r 15(PC)

( )r 15(PC)

SPSR SPSR SPSR SPSR SPSR

User

User Mode System Mode

FIQ IRQ Supervisor Undefined Abort

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

User Mode System Mode

Page 13: ARM CPU Architecture - embedded.dankook.ac.kr

Processor Mode

Privileged modecpsr์„ ์™„์ „ํžˆ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” 6๊ฐœ์˜ ๋ชจ๋“œ

abort(๋ฉ”๋ชจ๋ฆฌ ์•ก์„ธ์Šค๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ) modeFIQ IRQ dFIQ, IRQ modesupervisor(๋ฆฌ์…‹ ๊ฑธ๋ ธ์„ ๋•Œ ์ง„์ž…, OS ์ปค๋„์ด ๋™์ž‘) modesystem(user mode์˜ ํŠน์ˆ˜ํ•œ ๊ฒฝ์šฐ๋กœ, cpsr์„ ์™„์ „ํžˆ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ์Œ) modeundefined(๋น„ ์ •์˜๋œ ๋ช…๋ น์–ด ๋“ฑ์„ ๋งŒ๋‚ฌ์„ ๋•Œ) mode

์ผ๋ฐ˜ ๋ชจ๋“œUser mode(์ผ๋ฐ˜ app์šฉ)cpsr์˜ ์ œ์–ด ํ•„๋“œ๋Š” ์ฝ๊ธฐ๋งŒ ๊ฐ€๋Šฅ, ์ƒํƒœ ํ”Œ๋ž˜๊ทธ๋Š” ์ฝ๊ณ  ์“ฐ๊ธฐ๊ฐ€ ๊ฐ€๋Šฅ

ํŠน์ • mode ์ง„์ž… ๋ฐฉ๋ฒ•์—์„œ ์˜ ๊ฐ’์„Privileged mode์—์„œ CPSR์˜ mode ๊ฐ’์„ set

Exception์˜ ๋ฐœ์ƒ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 14: ARM CPU Architecture - embedded.dankook.ac.kr

Special registers

๊ฐ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์šฉ๋„

R13 : SP(Stack Pointer) ์Šคํƒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ผ๋ฐ˜ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

R14 : LR(Link Register)Branch์‹œ ๋ณต๊ท€ ์ฃผ์†Œ ์ €์žฅ

์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์ผ๋ฐ˜๋ ˆ์ง€์Šคํ„ฐ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

์Šคํƒ ๋น„์‚ฌ์šฉ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅํ–ฅ์ƒ ๊ฐ€๋Šฅ

R15 : PC(Program Counter)R15 : PC(Program Counter)Operand๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

mov pc, lr ?

์ค‘์ฒฉ๋œ b h?์ค‘์ฒฉ๋œ branch?

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 15: ARM CPU Architecture - embedded.dankook.ac.kr

CPSR registerCurrent Program Status RegisterCurrent Program Status Register

N Z C V UNUSED I F T Mode

7 6 5 4 3 2 1 031 30 29 28

Q

27

CPSR[4:0]CPSR[4:0] Mode ์˜๋ฏธ Register

10000 User User mode user

10001 FIQ fast interrupt ์ฒ˜๋ฆฌ _fiq

10010 IRQ ์ •์ƒ interrupt ์ฒ˜๋ฆฌ _irq

10011 SVC Software interrupt (SWI) ์ฒ˜๋ฆฌ _svc

10111 Abort Memory fault ์ฒ˜๋ฆฌ abt10111 Abort Memory fault ์ฒ˜๋ฆฌ _abt

11011 Undef ์ •์˜๋˜์ง€ ์•Š์€ ๋ช…๋ น์–ด trap ์ฒ˜๋ฆฌ _und

11111 System Privileged OS task ์‹คํ–‰ user

CPSR[31:27] ๋น„๊ต๋ช…๋ น์–ด๋‚˜ S๊ฐ€ ๋ถ™์€ ๋ช…๋ น์–ด์— ์˜ํ•ด ๋ณ€๊ฒฝN: negative

๋งˆ์ง€๋ง‰ ALU ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์˜ ๊ฐ’

32bit ๊ฒฐ๊ณผ๊ฐ’์˜ MSB๊ฐ€ 1 Z: zero

๋งˆ์ง€๋ง‰ ALU ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ 0C: carry

๋งˆ์ง€๋ง‰ ALU ์—ฐ์‚ฐ์ด๋‚˜ shift ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ carry-out๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด

V: oVerflow

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

๋งˆ์ง€๋ง‰ ALU ์—ฐ์‚ฐ์ด sign bit์— overflow๋ฅผ ๋ฐœ์ƒ์‹œํ‚ด

Q: Enhanced DSP instruction์—์„œ overflow๋‚˜ saturation

Page 16: ARM CPU Architecture - embedded.dankook.ac.kr

ARM์˜ Exception

Exception, INT ๋ฐœ์ƒ์‹œ PC๊ฐ’์€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ง„ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ด

Exception/INT ์•ฝ์ž ์ฃผ์†Œ

Reset RESET 0x0000 0000Reset RESET 0x0000 0000

Undefined Instruction UNDEF 0x0000 0004

Software Instruction SWI 0x0000 0008

Prefetch Abort PABT 0x0000 000c

Data Abort DABT 0x0000 0010

Reserved 0x0000 0014

Interrupt Request IRQ 0x0000 0018

Fast Interrupt Request FIQ 0x0000 001c

๊ทธ๋ ‡๋‹ค๋ฉด 0x00000000 ๋ฒˆ์ง€์—๋Š”?branch ๋ช…๋ น์–ด ๋ ˆ์ด๋ธ”

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Booting ๊ณผ์ • ๋ฐ ์ž์„ธํ•œ Interrupt ์ฒ˜๋ฆฌ๋Š” ๋‹ค์Œ์— ์ž์„ธํžˆ...

Page 17: ARM CPU Architecture - embedded.dankook.ac.kr

Barrel Shifter

Operand์˜ ์„ ์ฒ˜๋ฆฌ ์ž‘์—…

Rn Rm Immediate #imm

Register Rm

Barrel Shifter

Logical shift left by immediate Rm, LSL #imm

Logical shift left by register Rm, LSL Rs

Logical shift right by immediate Rm, LSR #imm

Logical shift right by register Rm, LSR Rs

Arithmetic shift right by immediate Rm, ASR #imm

A i h i hif i h b i R ASR R

ALUArithmetic shift right by register Rm, ASR Rs

Rotate right by immediate Rm, ROR #imm

Rotate right by register Rm, ROR Rs

RdRotate right with extend Rm, RRX

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 18: ARM CPU Architecture - embedded.dankook.ac.kr

Arithmetic Shift์™€ Logical Shift

Logical right shift๋Š” shift ๋˜์–ด ๋น„์–ด ์žˆ๋Š” ์™ผ์ชฝ k๊ฐœ์˜ bit๋ฅผ 0์œผ๋กœ ์ฑ„์›€

Arithmetic right shift๋Š” shift ๋˜์–ด ๋น„์–ด ์žˆ๋Š” ์™ผ์ชฝ k๊ฐœ์˜ bit๋ฅผ ์›๋ž˜์˜MSB(Most Significant Bit)๋ฅผ ๊ฐ€์ง€๊ณ  ์ฑ„์›€S ( os S g ca )๋ฅผ ๊ฐ€์ง€ ์ฑ„์›€

10000000001110000100000100000100X >> 8

00000000100000000011100001000001

11111111100000000011100001000001

Logical shift

Arithmetic shiftArithmetic shift

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 19: ARM CPU Architecture - embedded.dankook.ac.kr

Barrel Shifter ์‚ฌ์šฉ ์˜ˆ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 20: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(1/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 21: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(2/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 22: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(3/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 23: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(4/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 24: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Basic Instructions

binary op ์„ค ๋ช…

0000 AND Rd = op1 AND op2

0001 EOR Rd = op1 XOR op20001 EOR Rd op1 XOR op2

0010 SUB Rd = op1 โ€“ op2

0011 RSB Rd = op2 โ€“ op1

0100 ADD Rd 1 + 20100 ADD Rd = op1 + op2

0101 ADC Rd = op1 + op2 + C

0110 SBC Rd = op1 โ€“ op2 + C โ€“ 1

0111 RSC Rd = op2 โ€“ op1 + C โ€“ 1

1000 TST op1 AND op2 CPSR

1001 TEQ op1 XOR op2 CPSR

1010 CMP op1 โ€“ op2 CPSR

1011 CMN op1 + op2 CPSR

1100 ORR Rd = op1 OR op2

1101 MOV Rd = op2

1110 BIC Rd = op1 AND (NOT op2)

1111 MVN Rd = NOT op2

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

p

Page 25: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(1/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 26: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(2/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 27: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(3/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 28: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(4/4)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 29: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(1/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 30: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(2/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 31: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(3/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 32: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(4/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 33: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(5/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 34: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(6/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 35: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(7/7)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 36: ARM CPU Architecture - embedded.dankook.ac.kr

PSR ๊ด€๋ จ, MUL, ๋ฐ์ดํ„ฐ ์ด๋™ instruction

MRS{cond} Rd, <psr> Transfer PSR contents to a reg

MSR{cond} <psr>, Rm Transfer reg contents to PSR

MUL{cond}{S} Rd, Rm, RsRd = Rm * Rs

MLA{cond}{S} Rd, Rm, Rs, RnRd R * R + RRd = Rm * Rs + Rn

LDR{cond}{B} Rd, address{!}Rd = contents of addr

LDR{cond}{B} Rd, =expressionRd iRd = expression

STR{cond}{B} Rd, address{i}contents of addr = Rd

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

contents of addr Rd

Page 37: ARM CPU Architecture - embedded.dankook.ac.kr

Multiple reg Data Transfer

1 Post-Increment Addr

<LDM|STM>{cond}mode Rn{!}, {reg_list}{^}

1. Post-Increment Addr2. Pre-Increment Addr3 Post Decrement Addr3. Post-Decrement Addr4. Pre-Decrement Addr

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 38: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(1/5)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 39: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(2/5)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 40: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(3/5)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 41: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(4/5)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 42: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(5/5)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 43: ARM CPU Architecture - embedded.dankook.ac.kr

Swap instruction & SWI

SWP{cond}{B} Rd, Rm, [Rn]

Temp = Rn; Rn = Rm; Rd = tempB: bit 0 ~ 7๊นŒ์ง€๋งŒ ์˜ํ–ฅ ๋ฏธ์นจ

Int disable์—†์ด semaphore์—ฐ์‚ฐ ๊ฐ€๋Šฅ

SWI{cond} <expression>

Software interrupt instructionExpression์˜ ๋‚ด์šฉ์ด SWI๋ช…๋ น์˜ low24bit์— ์ธ์ฝ”๋”ฉ๋จExpression์˜ ๋‚ด์šฉ์ด SWI๋ช…๋ น์˜ low24bit์— ์ธ์ฝ”๋”ฉ๋จ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 44: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(1/2)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 45: ARM CPU Architecture - embedded.dankook.ac.kr

์ˆ˜ํ–‰ ์˜ˆ์ œ(2/2)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 46: ARM CPU Architecture - embedded.dankook.ac.kr

Branch Instruction

24๋น„ํŠธ์˜ offset์„ 2๋น„ํŠธ left๋กœ shiftํ•˜์—ฌ, +/-32MB ์ ‘๊ทผ

๋งŒ์•ฝ 32MB๊ฐ€ ๋„˜์„ ๋•Œ๋Š” Register๋ฅผ ์ด์šฉ

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 47: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Procedure Call Standard(APCS)

Reg i s ter APCS name APCS ro l e0 a1 Argument 1 / integer result / scratch register1 a2 Argument 2 / scratch register2 a3 Argument 3 / scratch register2 a3 Argument 3 / scratch register3 a4 Argument 4 / scratch register4 v1 Register variable 15 v2 Register variable 26 v3 Register variable 37 v4 Register variable 48 v5 Register variable 59 sb/v6 Static base / register variable 69 sb/v6 Static base / register variable 610 sl/v7 Stack limit / register variable 711 fp Frame pointer12 ip Scratch reg. / new sb in inter-link-unit calls

d f k f13 sp Lower end of current stack frame14 lr Link address / scratch register15 pc Program counter

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 48: ARM CPU Architecture - embedded.dankook.ac.kr

Stack

Why? When?Stack addressing mode

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 49: ARM CPU Architecture - embedded.dankook.ac.kr

49Stack Mode

HighSP

HighSP

base baseLow

Full AscendingLow

base

Empty Ascending

High base High basebase g base

Low

SP

LowSP

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Full Descendingo

Empty Descending

Page 50: ARM CPU Architecture - embedded.dankook.ac.kr

Addressing Mode and Stack 50

Addressing ModePost-increment Addressing (IA)Pre-increment Addressing (IB)g ( )Post-decrement Addressing (DA)Pre-decrement Addressing (DB)

StackStackFull Assending (FA)Empty Assending (EA)Full Decending (FD)Full Decending (FD)Empty Decending (ED)

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

Page 51: ARM CPU Architecture - embedded.dankook.ac.kr

์กฐ๊ฑด๋ถ€ ์‹คํ–‰

๋‹ˆ๋ชจ๋‹‰ ์˜๋ฏธ ์ƒํƒœํ”Œ๋ž˜๊ทธ

EQ equal Z

NE not equal zq

CS HS carry set / unsigned higher ๋˜๋Š” same C

CC LO carry clear / unsigned lower c

MI minus / negative N

PL plus / positive ๋˜๋Š” zero n

VS overflow VVS overflow V

VC no overflow v

HI unsigned higher zC

LS unsigned lower ๋˜๋Š” same Z or c

GE signed greater than ๋˜๋Š” equal NV or nv

LT signed less than Nv or nVLT signed less than Nv or nV

GT signed greater than NzV or nzv

LE signed less than ๋˜๋Š” equal Z or Nv or nV

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

AL always(๋ฌด์กฐ๊ฑด ์‹คํ–‰) ignored

Page 52: ARM CPU Architecture - embedded.dankook.ac.kr

ARM Assembly Test 52

-O3

ARM compiler

IA compiler

-O3

๋‹จ๊ตญ๋Œ€ํ•™๊ต ๋ฐฑ์Šน์žฌ

IA compiler