ARM 프로세서입문 내용 배경과역사주요특징 ARM 계열들개발도구
역사, 파생계열과도구들 제작 EMBEDDED SYSTEMS ACADEMY
내용 Part 1 배경과역사 RISC / CISC Acorn / Advanced RISC Machine Part 2 주요특징 Registers Interrupts Memory Thumb 3-단계명령파이프라인 5-단계명령파이프라인 Part 3 ARM 계열들 ARM7 ARM9 StrongARM ARM10 Part 4 개발도구 Compilers, Debuggers In-Circuit Emulators
ARM 자료 Part 1 배경자료와역사 ARM 과관련된특징들은무엇이며그것들은모두어떻게시작되었는가?
RISC 대 CISC ARM: 32-bit RISC (Reduced Instruction Set Computer) 구조 RISC 구조 제한된수의명령어 모든명령어들은고정길이빠른실행가능 (single cycle per instruction) Load-Store architecture: 대부분의명령어들은 input 또는 output 이범용레지스터들중의하나임
RISC 성능과결점 RISC 구조는쉽게최고의성능으로최적화가능 고정길이의명령세트는더욱빠른실행가능 효율적인파이프라인가능 빠른클럭속도를가능, 축소명령세트로인해칩다이크기작아짐 현실적 결점 프로그램코드크기가큼 ARM 은 Thumb 모드로해답을제공
ARM 역사와고유핵심기능 ARM 프로세서 영국, 캠브리지에있는 Acorn Computers Limited 사에서 80년대중반에개발 원래 ARM은 Acorn RISC Machine 을의미 이후 Advanced RISC Machine 으로변경설계특징 Load-store 구조 32-bit, 고정된길이명령 많은 single cycle 실행다중사이클들이요구되지만, 메모리액세스가최소화 15 범용레지스터들명령파이프라인 원래는, 3-stage pipeline 5-stage pipeline 은새로운몇몇파생계열들에서이용가능
오늘날의 ARM www.arm.com 모든주요칩제조업체들은한개또는여러개의 ARM 코어에대한라이센스들을가짐 라이센스소유자 : Analog Devices, Atmel, Cirrus, Fujitsu, IBM, Infineon, Intel, Mitsubishi, Motorola, National Semiconductor, NEC, Philips, Sharp, ST Microelectronics, Texas Instruments, Toshiba 임베디드시스템에서사용하는가장인기있는 ARM 코어는 ARM7TDMI TDMI Thumb Debug support Multiplier (64-bit result) In-Circuit Emulator interface 코드크기를감소
ARM 자료 Part 2 ARM 구조의주요기능들 ARM 의가장중요한기술적요소들은무엇인가?
레지스터 프로세서레지스터 PSR Program Status Register SP Stack Pointer PC Program Counter LR Link Register PC 의복사본포함, 리턴어드레스들을결정하는데사용 레지스터뱅크의이용여부는현재의프로세서모드 (user, supervisor, 그외 ) 에달려있음 사용자모드에서는최대 13개범용레지스터 높은우선순위인터럽트 (FIQ) 에서범용레지스터를가진다른뱅크가이용가능 PSR, SP 그리고 LR의한세트가각각의프로세서모드에이용될수있슴
레지스터 User32 Fiq32 Supervisor32 Abort32 IRQ32 Undefined32 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R8 R8_fiq R8 R8 R8 R8 R9 R9_fiq R9 R9 R9 R9 R10 R10_fiq R10 R10 R10 R10 R11 R11_fiq R11 R11 R11 R11 R12 R12_fiq R12 R12 R12 R12 R13 R13_fiq R13_svc R13_abt R13_irq R13_und R14 R14_fiq R14_svc R14_abt R14_irq R14_und R15(PC) R15(PC) R15(PC) R15(PC) R15(PC) R15(PC) CPSR CPSR CPSR CPSR CPSR CPSR SPSR_fiq SPSR_svc SPSR_abt SPSR_irq SPSR_und - R13 : Stack Pointer - R14 : Link Register - R15 : Program Counter
인터럽트 : FIQ 와 IRQ ARM 코어는많은인터럽트소스들을지원하고구별하는인터럽트컨트롤러를포함하지않음 많은주변장치 / 인터럽트소스들을보유한디바이스들은 memory-mapped 인터럽트컨트롤러가필요 하드웨어인터럽트 : FIQ와 IRQ 두레벨들은그들자신의 SP 와 LR 레지스터들그리고원래 PSR의복사본을접근 FIQ High priority (fast) hardware interrupt 모든다른인터럽트들을 Disables 5 개범용레지스터들을포함하는한개의새로운뱅크제공 IRQ Regular hardware interrupt
소프트웨어인터럽트 (SWI) SWI 프로세서를 supervisor 모드로변경 최대 256 소프트웨어인터럽트들이 Thumb 파생계열에의해지원됨 Supervisor 의 SP 와 LP 레지스터들의복사본그리고원래 PSR을액세스 SWI의우선순위 < IRQ, FIQ의우선순위 IRQ와 FIQ는 SWI 를인터럽트할수있음 소프트웨어인터럽트에서패러매터전달 범용레지스터를통해 스택을통해
인터럽트성능예 : ARM7TDMI at 40Mhz FIQ 의최악의경우인터럽트대기시간 27 프로세서사이클 약 0.7 microseconds (700 nanoseconds) FIQ 와 IRQ 의최상의경우인터럽트대기시간 4 프로세서사이클 약 0.1 microseconds (100 nanoseconds) IRQ 의최악의경우는보다높은우선순위 FIQ 의가능한가장긴실행에의존
메모리구성 ARM7 에이르는 ARM 파생계열 code AND data 를위한공유된, 단일메모리공간 선형 32-bit 주소영역 (4 GByte) ARM9 와상위의 ARM 파생계열 Harvard 모델 code AND data 를위한개별적인메모리포트 들 code AND data 에대한동시적액세스제공
코드크기줄이기 : Thumb 32-bit 명령크기는좋은코드밀도를제공할수없슴 Thumb instruction set 16-bit 명령어집합 실행시 32비트명령어로맵핑 Thumb을지원하는 ARM 파생계열들은 32-bit original 과 16-bit compressed 명령세트들을모두실행함 CPSR (Current Program Status Register) 에서의 Bit 5 T 는실행모드를결정 T 가설정되면, 프로세서는 Thumb 실행모드가됨
코드크기줄이기 : Thumb Small code size ( up to 40 % compression) Simplified design
3- 단계명령파이프라인 ARM7 까지 ARM 프로세서들은 3- 단계명령파이프라인가짐 3-단계명령파이프라인 Fetch 코드를포함하는메모리로부터명령어를인출합니다 Decode 명령어를해독하고데이터경로를준비합니다 다음사이 클에관한신호를제어합니다 Execute 명령어가지정된데이터경로에서실행되며결과가수신지로와서기록됩니다
단일사이클명령실행 하나의명령을완전히처리하기위해서는 3 사이클이소요됨그러나파이프라인이채워진후에평균적으로한사이클당하나의명령실행 Pipeline Time Fetch Instruction 1 Fetch Instruction 2 Decode Instruction 1 Fetch Instruction 3 Decode Instruction 2 Execute Instruction 1
다중 - 사이클명령의실행 만약명령을실행하기위해다중메모리액세스들이이루어져야하는경우라면, 파이프라인이한사이클로인해정지 / 지연됨 예를들면메모리 ( 레지스터가아닌 ) 에저장된피연산자에대한액세스를요구하는임의의명령주의 : 분기명령어들이파이프라인을비우고 (flush) 다시채우게 (refill) 됩니다 분기명령어실행시, 파이프라인의현재인출과해독동작들은중단되며분기장소로부터의새로운인출이시작됨
5- 단계명령파이프라인 고성능 ARM 파생계열들은 5- 단계파이프라인을사용하여 3- 단계파이프라인의메모리액세스병목을보정 5- 단계파이프라인 Fetch: 메모리로부터의다음명령인출 Decode: 명령해독과레지스터피연산자읽기 Execute: 명령실행 Data: 필요한경우, 데이터메모리액세스 Write-back: 수신지메모리장소에명령결과를기록
Part 2 의요약 - ARM 구조 프로세서레지스터들이 bank 됨 각각의프로세서모드 (user, FIQ, IRQ, supervisor, 등 ) 는자신의고유한프로세서레지스터의뱅크를가짐 범용레지스터 (GPR) 들이공유되며, 오직 FIQ 만이 5 전용 GPR의뱅크에접근 ARM7TDMI 보다작은코드크기를허용하도록 Thumb 명령세트 (16-bit compressed ) 를사용 van Neuman 선형주소영역, 4Gbyte 를사용 3-단계명령파이프라인을사용 Fetch, Decode, Execute 파이프라인은 ( 데이터 ) 메모리액세스들로정지 / 지연됨파이프라인은각각의분기와함께비워 (flush) 짐
ARM 자료 Part 3 ARM 계열 ARM 계열에는어떠한것들이있으며중요한차이점들은무엇인가?
ARM6 을대체 ARM 계열 : ARM7 3- 단계명령파이프라인 저전압지원 ( 몇몇계열들 1V 미만 ) 선형 32-bit 주소영역 (4 GByte) 을갖는 Van Neumann 메모리설계 8-bit 와 16-bit 데이터유형들지원 32-bit 데이터버스 Little- 과 big- endian 지원
ARM 계열 : ARM9 ARM8을대체대략 ARM7 성능의두배두개의 32-bit 선형주소영역을갖는 Harvard 메모리설계, 코드용한개와데이터용한개 code AND data 가병렬로액세스될수있기때문에, 전체적인메모리액세스를향상이중-대역폭메모리액세스 사이클마다두개의메모리액세스를수행 5-단계명령파이프라인축소된 CPI (Clocks Per Instruction) 명령과데이터를위한별개의메모리포트들
StrongARM (SA-110 과 SA-1100/1110 ) StrongARM Harvard architecture Separate instruction and data port 5 Stage pipeline same as ARM9 First developed by DEC, now Intel 향상된 multiplier Set- associative data and instruction cache MMU Memory Management Unit Thumb 지원안함인터럽트컨트롤러를포함하는많은 on-chip 주변장치들
ARM10 대략 ARM9 성능의두배 ARM9 와같은메모리설계, 그러나 Cache: code AND data 를위한각각의 32kByte 64-bit 데이터메모리액세스지원 특히최적화된 6- 단계명령파이프라인 분기 - 예측작동체계포함
ARM 자료 Part 4 개발도구
ARM 개발도구 디버그인터페이스가코어안에통합 인-서킷디버그기능 저렴한가격에고급 ICE (In-Circuit Emulator) 가능
C 와 C++ Compiler, Debugger ARM ADS (Arm Developer Suite) Gnu gcc Green Hills Software Multi 2000 MetaWare MetaWare High C++ Microcross GNU X-TOOLS Wind River Diab C/C++
ARM 추천 In-Circuit Emulator Multi-ICE Nohau EMUL-ARM-PC
Operating System Support ARM Software Development ARM software development tookit armcc, armasm, armlink ARMulator Cycle accurate simulator MMU, coprocessor Profiler Boot-up code On reset, processor starts at address 0x0 ARM procedure call standard Can inter-work assembly routine with C/C++ program
Jazelle ARM Extension for Java ARM extension Jazelle : ARM s Java extension (symbol as a J ) Instruction extension (Java state), not a coprocessor Implemented in the ARM Pipeline as a FSM Jazelle logic turned ON Bytecode Dynamic re-mapping of Stack to Registers ALU Instruction Java Decode Java Decode Control Stream Stack Register Signals Management Read Instruction Fetch Thumb Decode Register Register Decode Read Compute Partial Products Shift + ALU Sum/Accumulate & Saturation Memory Access Register Write ARM Decode Register Register Decode Read FETCH DECODE EXECUTE MEMORY WRITEBACK
Jazelle ARM Extension for Java Java State ARM/THUMB mode + Java mode New ARM Instruction Add J bit to CPSR
Jazelle ARM Extension for Java Register Re-use and Stack Optimization
Jazelle ARM Extension for Java Hardware/Software Balance for Optimum Cost & Performance Majority of Java byte code (140) are executed directly by hardware 12k gates are required The remainder (94) are emulated by ARM instructions.
Jazelle ARM Extension for Java Interrupt Behavior and Real-time performance
Jazelle ARM Extension for Java Performance
Jazelle ARM Extension for Java Java Run-time Environments