View
13
Download
0
Category
Preview:
Citation preview
프로젝트 1
1
ARM CPU Architecture
단국대학교
컴퓨터학과
2009백승재
ib 1383@d k k kibanez1383@dankook.ac.krhttp://embedded.dankook.ac.kr/~ibanez1383
단국대학교 백승재
강의 목표 2
ARM 종류와 특징 및 최신 동향 파악
ARM CPU Architecture 이해
ARM Assembly 숙지
단국대학교 백승재
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.
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
단국대학교 백승재
An auxiliary textbooks 5
Steve Furber Andrew SlossSteve FurberAddison-Wesley
Andrew SlossMorgan Kaufmann
단국대학교 백승재
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, ,
Case Study: Cortex-A9 MPCore 7
단국대학교 백승재
Case Study: OMAP 4 8
1080 pixel full HD 동영상 녹화.재생, DSLR급의 2천만 화소 사진 촬영, 약 1주일간의오디오 재생, 기존 스마트폰 대비 10배 이상 빠른 웹페이지 로딩, 7배 이상의 컴퓨팅 성
단국대학교 백승재
능, ....
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
단국대학교 백승재
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?
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에 저장
단국대학교 백승재
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
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의 발생
단국대학교 백승재
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?
단국대학교 백승재
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
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 처리는 다음에 자세히...
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
단국대학교 백승재
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
단국대학교 백승재
Barrel Shifter 사용 예
단국대학교 백승재
수행 예제(1/4)
단국대학교 백승재
수행 예제(2/4)
단국대학교 백승재
수행 예제(3/4)
단국대학교 백승재
수행 예제(4/4)
단국대학교 백승재
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
수행 예제(1/4)
단국대학교 백승재
수행 예제(2/4)
단국대학교 백승재
수행 예제(3/4)
단국대학교 백승재
수행 예제(4/4)
단국대학교 백승재
수행 예제(1/7)
단국대학교 백승재
수행 예제(2/7)
단국대학교 백승재
수행 예제(3/7)
단국대학교 백승재
수행 예제(4/7)
단국대학교 백승재
수행 예제(5/7)
단국대학교 백승재
수행 예제(6/7)
단국대학교 백승재
수행 예제(7/7)
단국대학교 백승재
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
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
단국대학교 백승재
수행 예제(1/5)
단국대학교 백승재
수행 예제(2/5)
단국대학교 백승재
수행 예제(3/5)
단국대학교 백승재
수행 예제(4/5)
단국대학교 백승재
수행 예제(5/5)
단국대학교 백승재
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에 인코딩됨
단국대학교 백승재
수행 예제(1/2)
단국대학교 백승재
수행 예제(2/2)
단국대학교 백승재
Branch Instruction
24비트의 offset을 2비트 left로 shift하여, +/-32MB 접근
만약 32MB가 넘을 때는 Register를 이용
단국대학교 백승재
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
단국대학교 백승재
Stack
Why? When?Stack addressing mode
단국대학교 백승재
49Stack Mode
HighSP
HighSP
base baseLow
Full AscendingLow
base
Empty Ascending
High base High basebase g base
Low
SP
LowSP
단국대학교 백승재
Full Descendingo
Empty Descending
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)
단국대학교 백승재
조건부 실행
니모닉 의미 상태플래그
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
ARM Assembly Test 52
-O3
ARM compiler
IA compiler
-O3
단국대학교 백승재
IA compiler
Recommended