Chap 2. Embedded Processors 서경대학교컴퓨터공학과교수이광엽 kylee@skuniv.ac.kr
Embedded Processors Embedded processors 발전 Microprocessors 발전 better fabrication technology standalone microcontrollers integrated processors embedded design external memory Processor 선택시 trade-offs 를이해할수있도록다양한 processor 의장단점을파악하는것이목적 기본적으로 4가지구조로분류 8 bit accumulator, 16/32 bit CISC, RISC, DSP
Moore s Law
Embedded Processors Processor life history Embedded processor는 20년정도의 life cycle을갖는반면 computer processor는 3년이 life cycle
Register Register구조 -> 명령어구조 -> Microprocessor 구조 Register 분류 ( 저장하는데이터의종류에따라 ) Data Register ex) Accumulator, Memory Data Register Address Register ex) Program counter, Stack pointer, index Status Register : status flag 저장 Instruction Register : 프로그램수행을위한명령어저장 CISC구조와 RISC 구조에따라 Register 역할이다름 CISC구조는고유기능이정해져있는 Special Register 구조 RISC구조는범용으로사용할수있는 General Register 구조
8bit accumulator processors Register models Motorola MC6800 에서대표적인 8비트구조살펴봄 2개의 8bit accumulators : storing data, arithmetic operations 16bit program counter, stack pointer, address indexing Reg.
8bit accumulator processors Register laden RISC구조와달리적은수를갖지만 index register, stack pointer 등의특징이있다. Index register는 Pointer로써동작하며 address를위해추가적으로소요되는레지스터를줄일수있다. Stack pointer : subrountine jumps, interrupts 발생시 return address 와같은정보저장및 local data storage로사용됨 8bit data restrictions Unsigned resolution : 256 data value Higher resolution이필요한분야는 16bits data로높임, 이경우 multiple bus access가요구됨, 연산을위해서는몇개의연산명령어가사용됨
8bit accumulator processors 16bit by 16bit multiply
8bit accumulator processors Addressing memory 초기에는주로 assembler로응용프로그램이개발되고메모리가격이비싸기때문에 64Kbyte(16bit address) 가충분한크기 점차적으로 CP/M과같은 O.S 와고급언어를이용한개발로메모리크기에한계가발생 해결방법 : bank switching, program overlay Bank switching(pp242-244) : bank bits를추가하여메모리선택을확장 (programming model, address space변화없음 ) Program overlay(pp214) : 실행메모리보다큰응용프로그램실행가능, page단위분할하여메모리와 mass storage 사이에서 swap을수행
8bit accumulator processors System integrity Data와 program을구별하는 partition이없는구조에서는 software bug가전체시스템을오동작하도록한다. Index Pointer의오류로인하여 data가 program을 overwrite
Example 8 bit architecture Z80 Zilog 사에서개발되었으며 Intel 8080 에기반을두고있다. 8080 명령어와호환이되며추가적으로확장명령어가있다. 전체 158 개명령어가운데 78 개명령어가 8080 명령어이다. Pinout 에 RFSH, BUSRQ, BUSAK, MREQ 가포함 Accumulator, 6 개의 8 bit registers 로구성되며 3 개의 16 bit register 로변형 이외에 stack pointer, program counter, 2 개의 index registers PSW(Program status word) 레지스터 : F register General register B, C, D, E, H, L Interrupt vector register (IV) : interrupt vector 를제공 Memory refresh register (MR) : on-chip DRAM refresh circuit
Example 8 bit architecture Z80 programming model 6개의 8 bit register를 3 쌍의 16 bit register 로구성하여 data storage와 address pointer로사용 Main register set, alternate register set 가운데한번에한 set만사용가능하며 EXX 명령어를이용전환
Index Register Z80-CPU는인덱스레지스터 (index register) 로 16비트의레지스터 2개, 즉 IX와 IY를가지고있다. 인덱스라는명칭이뜻하듯이레지스터에메모리의번지를써넣어줌으로써그번지를중심으로하여여러가지번지를간접적으로지정할수있다. 예를들어, 4000H 번지로부터시작하는데이터테이블이있다고가정하자. 이때테이블의선두번지4000H를IX( 또는IY) 에써넣어두고, 선두에서 2번째번지이면 (1X+2) 와같이나타낸다. 이와같이하면만일데이터테이블전체가 8000H 번지를선두로하여다른번지에그대로바꿔쓰기한경우라도, IX의값만을 8000H로정정하여줌으로써프로그램중의 (IX+2) 는다시바꿔쓰기할필요가없게된다. 이때, 인덱스레지스터에써넣어준번지에서몇번지떨어져있는가를나타내는번지수를디스플레이스먼트 (displacement; 치환수, 이동수, 편차 ) 라고한다.
Example 8 bit architecture Z80 programming model MC6800과는달리 memory mapped I/O를사용하지않는다. 8080과같은 port 개념을사용한다. Address 하위 8bit와 IORQ신호가결합하여외부장치 Access I/O port instruction(in,out) 을사용, IORQ 신호가 memory access와구별하여줌 255개의 port제공임베디드시스템에서효과적
Microcontrollers MC6800 Motorola에서개발하였으며 MC6809, 6801, 68HC05, 68HC11, 68HC08 의기본구조로발전 2개의accumulator와1개의16 bit index register로구성 MC68HC11 의경우 2개의 accmulator를결합하여 16 bit 연산이가능하고 index register가추가됨 Microcontroller 형식으로교체됨 : Memory interface, Peripheral 이추가되는형태로발전 Long life cycle을유지 MC68HC05 : PC(13bit), SP(6bit), INX(8bit), ACC 1개 레지스터의크기를최소화하고 Peripheral, RAM 탑재 On chip Microm 추구 응용분야에최적화된하드웨어구조 MC68H11 : INX(X,Y) 2개, 16bit add, sub, shift 명령어, 다양한 Peripheral 고성능 MCU 추구
Intel Microprocessor 의발전과정
INTEL 80286 IBM PC AT의 CPU로 PC를상품화하는데성공하는데기여 메모리구조 1Mbyte(20bit주소 ) 크기의 Real Mode와 16Mbyte까지확장가능한 Protected Mode로나누어진다. 8086/8088의호환때문에 레지스터구조 4개의범용레지스터와 4개의 segment address 레지스터, PC 등이있으며모두 16비트크기이다. Protected Mode 사용을위하여 Index register(si,di), base point register Virtual memory scheme 성능 6-12Mhz, 4.9 average cycles/inst. MIPS=?
INTEL 80386DX 1987 년에최초의 32 비트 PC 메모리구조 32bit Data/Address 구조로 8086/88 호환구조유지 Multitasking/demand paging virtual memory 지원 MMU 탑재 레지스터구조 8 개의 32 비트범용레지스터, 8086 지원을위하여 lower half 16bit access 가별도로가능 (AH,AL,BH,BL) 32 비트 physical address 생성을위하여 6 개의 segment register(cs,ss,ds,es,fs,gs) 성능 16-25Mhz, 4.9 average cycles/inst. MIPS=? 80387 co-processor 사용하여부동소숫점연산을가속화
INTEL 80486 80386 에 80387 FPU 를포함한구조 메모리구조 Pipeline 구조를채택하여 single cycle performance 를갖는다 Pipeline 을지원하기위하여 unified cache 를탑재 레지스터구조 386 과동일하며 FPU 를지원하기위한명령어가추가됨 성능 16-50Mhz, 1.03 average cycles/inst. MIPS=?
INTEL Pentium Enhanced 486, 2-way Superscalar 구조 메모리구조 Superscalar 를지원하기위하여 separate 8kbyte cache 구조 (data, code) 외부 64 비트 burst mode data bus 사용 Branch 구조 Superscalar 에서는 branch 문제해결이중요 Branch target cache(prediction 기능 ) 성능 60-100Mhz, 0.5 average cycles/inst. MIPS=?
INTEL Pentium Pro 5-way superscalar 구조로 DEC Alpha, PowerPC 와경재하기위한성능 메모리구조 Level 2 cache 사용 MMX 명령어구조 멀티미디어성능을향상하기위한멀티미디어확장명령어로 50 개 8bit 단위의멀티미디어데이터특성이용 발전추세 : Pentium II, III, IV
Motorola MC68000 Intel 286 이비교대상 Intel 구조에비하여다른점 Intel 과는달리이전버전에대한호환문제를배제 16/32 비트구조를지향 단지, MC6800 등이전버전은외부인터페이스기능만으로지원됨 Mini, mainframe computer 구조개념을접목 레지스터구조 6 개씩데이터, 주소레지스터 (32 비트 ), 8 또는 16 비트의 dedicate register 배제
Motorola MC68020 1984 년개발, 인텔 386 과 486 의중간적인위치 완전한 32 비트구조 특징 Virtual memory, instruction continuation 지원 비동기메모리인터페이스및가변적인버스크기지원 (8,16,32 비트 ) Co-processor 지원 Data type, addressing mode, instruction 등이향상 Bit field data, packed and unpacked BCD, cache 지원명령어
RISC 구조의특징 명령어종류가적고형식이단순하다 LOAD/STORE 구조 - 메모리 ACCESS전담명령어를두어일반명령어들은레지스터만 ACCESS 명령어형식단순화 Fixed, 3-address 명령어형식 Operand 개수고정 Pipeline 구조적용용이 1-cycle 명령어실행 고성능 큰규모의범용레지스터파일구조 많은수의범용레지스터필요 Load, Store 명령어만 Memory 접근 그결과 명령어의오퍼란드가레지스터로구성명령어형식단순,, 고정 그결과 파이프라인적용에효과적성능향상
RISC 프로세서의로드맵 개념정립 IBM 801 Project 71~ 79 Berkeley RISC I,II Stanford MIPS SUN SPARC IBM RS3000 Motorola Power PC HP PA-RISC DEC Alpha
Berkeley RISC model RISC1 프로세서는 138 X 32 레지스터파일을갖는다. 8개의 Overlapping window구조이며각 window는 24개로구성 6개의레지스터가 subroutine call수행중 parameter passing -> 단순히 pointer의변화만으로 call or return이이루어진다.
Sun SPARC RISC processor Berkeley model을기본으로한다. 120개의레지스터와 7개의 window 구조를갖는다. 각각 8개씩 Input, Local, Output 레지스터로구성된 window Context switching과 parameter passing을개선한레지스터구조 명령어는 64개이며 multiply step command가특징이다.
Stanford RISC model 상대적으로적은수 (32개) 의레지스터파일구조 컴파일러의의존도를높인구조 보다 powerful instruction 을필요로함 Power PC MPC601, 603 으로발전 성능을크게개선하기위하여 Superscalar구조를채택
ARM Architecture vs. Berkeley RISC Features used load/store architecture fixed-length 32-bit instructions 3-address instruction formats Features unused register windows use shadow registers delayed branch single-cycle execution of all instructions memory access multiple cycles when no separate data and instruction memory support auto-indexing addressing modes
Register organization
ARM7 의 Register(1/3) general register 의 keyword r0 ~ r15 : 16 개 사용자가한번에사용할수있는 register 는 16 개 Special Purpose General Register SPSR Program Counter(r15) operand로사용가능 ARM assembler는 pc와 r15를동일시
ARM7 Register(2/3) Stack Pointer(r13) stack을위한 instruction이없다 (Push, Pop etc.) Data 전송명령을통해해결 Auto Increment 기능이존재 Link Register(r14) CALL, RET instruction이없다 BL(Branch with Link) instruction 사용 Pc(r15) 의값을stack에넣지않고Lr(r14) 넣고분기번지를 Pc(r15) 에넣어분기 stack을사용하지않는다.
ARM7 Register(3/3) N Z C V ------ I F --- Mode bits 31 30 29 28 7 6 5 4-0 Status register (PSR or CPSR) Flag Bits Instruction의결과를나타낸다 Negative/Less Than Flag (N) Zero Flag (Z) Carry/Borrow/Extend Flag (C) Overflow Flag (V)
Using and Updating the Condition Field To execute an instruction conditionally, simply postfix it with the appropriate condition: - for example an add instruction takes the form: ADD r0,r1,r2 ; r0 := r1+r2 (ADDAL) - to execute the this only if the zero flag is set: ADDEQ r0,r1,r2 ; r0 := r1+r2 if zero flag is set By default, data processing operations do not affect the condition flags - with comparison instructions this is the only effect To cause the condition flags to be updated, the S bit of the instruction needs to be set by postfixing the instruction (and any condition code) with an S. - for example to add two numbers and set the condition flags; ADDS r0,r1,r2 ; r0 := r1+r2 and set flags
Condition code Summary
Multiplication by a Constant Multiplication by a constant equals to a ((power of 2) +/-1) can be done in a single cycle Using MOV,ADD or RSBs with an inline shift Example: r0=r1*5 Example: r0=r1+(r1*4) ADD r0,r1,r1,lsl #2 Can combine several instructions to carry out other multiplies Example: r2=r3*119 Example: r2=r3*17*7 Example: r2=r3*(16+1)*(8-1) ADD r2,r3,r3,lsl #4 RSB r2,r2,r2,lsl #3 ;r2:=r3*17 ;r2:=r2*7
Conditional Execution An unusual feature of the ARM instruction set is that conditional execution applies not only to branches but to all ARM instructions CMP r0,#5 CMP r0,#5 BEQ Bypass ;if (r0!=5) ADDNE r1,r1,r0 ADD r1,r1,r0 ;{r1=r1+r0-r2} SUBNE r1,r1,r2 SUB r1,r1,r2 Bypass Whenever the conditional sequence is 3 instructions or fewer it is better(smaller and faster) to exploit conditional execution than to use a branch if ( (a==b) && (c==d) ) e++; CMP r0,r1 CMPEQ r2,r3 ADDEQ r4,r4,#1
Embedded Processor 최근동향