arm processor 입문 - egloospds7.egloos.com/pds/200803/20/35/arm_processor_introduction.pdf · arm...
TRANSCRIPT
내용
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
RISC 대 CISC
ARM은 32-bit RISC 구조입니다(Reduced Instruction Set Computer) 보다전통적인 CISC 구조와비교하면, RISC 구조는제한된수의명령어들을갖습니다
모든명령어들은고정길이입니다보다빠른실행을허용합니다 (대개 single cycle) Load-Store architecture:대부분의명령어들은 input 또는 output이범용레지스터들중의하나가되어야합니다
RISC 성능과결점RISC 구조는쉽게최고의성능으로최적화될수있습니다고정길이의명령세트는더욱빠른실행을허용합니다파이프라인이더욱효율적으로사용될수있습니다더빠른클럭속도를허용하며, 축소명령세트로인해칩다이크기가더욱작아집니다
유일하게한가지 “현실적”결점이있습니다코드크기가더커지는경향이있습니다
32-bit RISC 기계에서, 모든단일명령어는코드공간의 4 bytes를필요로합니다
“Thumb”를지원하는 ARM 파생계열은이문제에대한해법을제공합니다
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
레지스터
프로세서레지스터PSR – Program Status Register SP – Stack Pointer PC – Program Counter LR – Link Register
PC의복사본포함, 리턴어드레스들을결정하는데사용레지스터뱅크의이용여부는현재의프로세서모드(user, supervisor, 그외)에달려있습니다사용자모드에서는최대 13개범용레지스터높은우선순위인터럽트(FIQ)에서, 범용레지스터를가진다른뱅크가이용가능해집니다
PSR, SP 그리고 LR의한세트가각각의프로세서모드에이용될수있습니다
하드웨어인터럽트프로세서모드 FIQ와 IRQ
ARM 코어는많은인터럽트소스들을지원하고구별하는인터럽트컨트롤러를포함하지않습니다많은주변장치/인터럽트소스들을보유한디바이스들은memory-mapped 인터럽트컨트롤러가필요합니다
하드웨어인터럽트에관한두개의레벨이있으며, 양쪽레벨들은그들자신의 SP 와 LR 레지스터들그리고원래 PSR의복사본을액세스합니다
FIQ – High priority (fast) hardware interrupt 모든다른인터럽트들을 Disables 5개범용레지스터들을포함하는한개의새로운뱅크제공
IRQ – Regular hardware interrupt
소프트웨어인터럽트Supervisor 프로세서모드
SWI (프로세서를 supervisor 모드로변경):최대 256 소프트웨어인터럽트들이 “Thumb”파생계열에의해지원됩니다
Supervisor의 SP 와 LP 레지스터들의복사본그리고원래 PSR을액세스
SWI의우선순위는하드웨어인터럽트 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 파생계열들은 van Neuman모델에기초한것입니다
code AND data 를위한공유된, 단일메모리공간선형 32-bit 주소영역 (4 GByte)
ARM9와상위의 ARM 파생계열은Harvard 모델을지원합니다
code AND data를위한개별적인메모리포트들code AND data 에대한동시적액세스제공
코드크기줄이기 : Thumb 32-bit 명령크기는좋은코드밀도를제공할수없습니다“Thumb instruction set”는 32-bit 명령어들이map 되고16-bit 명령어들로저장되는것을허용합니다Thumb을지원하는 ARM 파생계열들은 32-bit original 과 16-bit compressed 명령세트들을모두실행할수있습니다
CPSR (Current Program Status Register)에서의 Bit 5 “T”는실행모드를결정합니다“T”가설정되면, 프로세서는 “Thumb”실행모드에있게됩니다
3-단계명령파이프라인
ARM7까지, ARM 프로세서들은 3-단계명령파이프라인을갖습니다
세단계는다음과같습니다 : 1. Fetch코드를포함하는메모리로부터명령어를인출합니다
2. Decode명령어를해독하고데이터경로를준비합니다. 다음사이클에관한신호를제어합니다
3. Execute명령어가지정된데이터경로에서실행되며결과가수신지로와서기록됩니다
다중-사이클명령의실행
만약명령을실행하기위해다중메모리액세스들이이루어져야하는경우라면, 파이프라인이한사이클로인해정지/지연될것입니다예를들면메모리(레지스터가아닌)에저장된피연산자에대한액세스를요구하는임의의명령
주의: 분기명령어들이파이프라인을 비우고(flush) 다시채우게(refill) 됩니다분기명령어실행시, 파이프라인의현재인출과해독동작들은중단되며분기장소로부터의새로운인출이시작됩니다
5-단계명령파이프라인
고성능 ARM 파생계열들은 5-단계파이프라인을사용하여 3-단계파이프라인의메모리액세스병목을보정합니다
다섯단계는다음과같습니다: 1. Fetch: 메모리로부터의다음명령인출2. Decode: 명령해독과레지스터피연산자읽기
3. Execute: 명령실행
4. Data: 필요한경우, 데이터메모리액세스
5. 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 계열: ARM7
ARM6을대체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) 명령과데이터를위한별개의메모리포트들
ARM 계열: StrongARMSA-110과 SA-1100/1110
ARM9의인텔버전향상된 multiplier Set-결합이용이한명령과데이터캐시들MMU – Memory Management Unit Thumb 지원안함인터럽트컨트롤러를포함하는많은 on-chip 주변장치들
ARM 계열: ARM10
대략 ARM9 성능의두배ARM9 와같은메모리설계, 그러나
Cache: code AND data를위한각각의 32kByte 64-bit 데이터메모리액세스지원
특히최적화된 6-단계명령파이프라인분기-예측작동체계포함
C와 C++ Compiler, Debugger ARM
ADS (Arm Developer Suite) Gnu
gccGreen Hills Software
Multi 2000MetaWare
MetaWare High C++Microcross
GNU X-TOOLSWind River
Diab C/C++