AVR - Chapter 1 류대우 davidryu@newtc.co.kr
프로세서의역사 전자계산기의발달 초창기의컴퓨터는부피가크고, 신뢰성이다소떨어졌으나 CPU의개발로높은신뢰도와빠른연산을제공하는컴퓨터가개발되고점차컴퓨터크기의소형화가이루어지고있음 전자계산기발달순서 MARK-1 ENIAC EDSAC EDVAC UNIVAC-1
프로세서의역사 프로그램내장형컴퓨터 1945년폰노이만 (Von Neumann) 프로그램내장형컴퓨터제창 1949년영국캠브리지대학교수윌키스 (M. Wilkes) EDSAC - 세계최초의프로그램내장방식컴퓨터 입력 중앙처리장치 -ALU - Control Unit 출력 기억장치 (Memory)
폰노이만아키텍처 address Embedded System 200 memory ADD r5,r1,r3 data 200 CPU ADD IR r5,r1,r3
하버드아키텍처 Harvard can t use self-modifying code. Harvard allows two simultaneous memory fetches. Most DSP use Harvard architecture for streaming data: greater memory bandwidth; more predictable bandwidth. data memory program memory address data address data PC CPU
프로세서의역사 Intel 의마이크로프로세서 1971년 4004, 4bit, 0.5 MHz clock, 16 Kbyte Main Memory 1973년 8080, 8bit 1975년 8085, 8bit 1978년 8086, 16bit 1982년 80286, 16bit 1985년 80386, 32bit 1989년 80486, 32bit 1990년대 80586(Pentium), 32bit 기타마이크로프로세서제조업체 Motorola, 680계열 (68000, 68020 ), 주로산업용으로사용. Zilog, Z80, Intel의 8085와유사한 8비트프로세서
마이크로프로세서, 마이크로컨트롤러 마이크로프로세서 vs. 마이크로컨트롤러 마이크로프로세서 프로세서를한개의칩으로구현 데이터부와제어부가들어있는코어를의미 마이크로컨트롤러 코어 + 여러가지크기와다양한종류의메모리 + 여러종류의주변장치 + 여러종류의입출력포트 여러응용분야에필요로하는주변기기들을한칩내에서모두제공 시스템보드의칩의개수를줄임 경박단소 ( 經博短小 ) 시스템을성능및크기, 그리고가격을최적화 제품을제작시제품의개발기간및가격최소화 제품의용도에맞게프로그램의변경만으로적용이가능하여적용성우수 부품수가적고시스템구성이간단하여신뢰성이향상된다.
마이크로컨트롤러 vs. 임베디드프로세서 임베디드프로세서 원래는마이크로컨트롤러를의미 마이크로컨트롤러를확장한개념으로도사용 CPU 코어, 메모리, 주변장치, 입출력장치에다양한종류의네트워크장치가추가되는형태. 10/100BaseT MAC(Medium Access Control) for Internet Netsilicon NET+ARM Embedded Processor
임베디드프로세서 (1) 최근의임베디드프로세서 주변장치선택형 주변장치들을프로그래머블 (programmable) 하게만들어서사용자가원하는정확한규격대로주변장치를선택적으로구성 칩내부의자원의낭비를줄일수있음 예 : Cypress MicroSystems 의 PSoC 마이크로컨트롤러 counter 혹은 timer를구성할때 8/16/24/32bit counter/timer들중에서하나를선택 ADC(Analog to Digital Converter) 경우 : 6-Bit SAR ADC, 8-Bit SAR ADC, 8 to 14-Bit Incremental ADC, 12-Bit Incremental ADC, 8-Bit Delta-Sigma ADC, 11-Bit Delta-Sigma ADC, 들중에서하나를선택 (www.cypressmicro.com)
임베디드프로세서 (2) 알테라 (Altera) 사의 ARM core를채택한 SOPC(system-on-aprogrammable-chip) PLD를이용해서 IP를구현 PLD를 ASIC화해주는 Hard-copy Devices 프로그램을지원 www.altera.com
프로세서의분류 기능에따른분류 : 의미없음 많은업체에서여러종류의칩을각각특별한기능을내장하고여러응용분야에서사용하기때문 데이터버스의크기, 산술처리기 (Arithmetic Logic Unit) 및레지스터들의크기에따른분류 8비트프로세서 : 응용목적이간단한경우 16비트프로세서 : 중간정도의복잡도를가지는응용분야 32비트프로세서 : 내장형시스템시장에서주류 64비트프로세서 : 몇몇업체에서만제공 명령어구조에따른분류 Complex Instruction Set Computer (CISC) Reduced Instruction Set Computer (RISC) Extended Instruction Set Computer (EISC)
프로세서의분류 기능에따른분류 MPU - Micro Processor Unit 중앙처리장치에서주기억장치를제외한연산장치, 제어장치및각종레지스터들을단지 1개의 IC 소자에집적시킨것 용도 : PC MCU Micro Controller Unit 마이크로프로세서중에 1개의칩내에 CPU 기능은물론이고일정한용량의메모리 (ROM, RAM 등 ) 와입출력제어인터페이스회로까지를내장한것 MCU, 단일칩마이크로컴퓨터, 마이컴등으로불린다. DSP Digital Signal Processor 디지털신호를하드웨어적으로처리할수있는집적회로 용도 : 영상, 음성등신호처리
프로세서의분류 데이터버스의크기, 산술처리기 (Arithmetic Logic Unit) 및레지스터들의크기에따른분류프로세서가한번에처리할수있는비트수로분류 8-Bit 프로세서 1970 년대마이크로프로세서 현재는소용량마이크로컨트롤러가 8-Bit 프로세서이다. 8051, AVR, PIC, SAM88 16-Bit 프로세서 1980 년대초마이크로프로세서 현재는고속의마이크로컨트롤러로사용된다. 8-Bit 와 32-Bit 의발달로많이사용하지않는다. AM188, MSP430 32-Bit 프로세서 1980년대중반이후현재까지마이크로프로세서 PC, 또는대용량의데이터처리를하는산업용장치에쓰인다.
프로세서의분류 프로세서의타입 프로세서가제공하는명령어세트 (Instruction Set) 의복잡도 Complex Instruction Set Computer(CISC) 복잡한명령어를지원하는프로세서 1980 년대이후마이크로프로세서시장에처음선을보임 인텔, 모토롤러프로세서 Reduced Instruction Set Computer(RISC) 단순한명령어세트를지원하는프로세서 MIPS 와 ARM 의프로세서 RISC와 CISC 두종류의프로세서의차이점 CISC : 복잡한많은수의명령어를해독하는데많은실리콘을사용 RISC : 작은명령어세트로인하여남는 (CISC에비해서 ) 실리콘을다른유용한목적으로사용 이전 : RISC와 CISC의관계는서로의우월성을주장하던관계 최근 : post RISC: 성숙한단계로접어들어서상호간의장 단점을 CPU 구조에적절하게반영하여최적의성능제공
프로세서의분류 CISC, RISC, EISC 의특징 구분 CISC RISC EISC CPU instruction 명령어개수가많고, 그길이가다양하며실행사이클도명령어마다다름 명령어길이는고정적이며, 워드와데이터버스크기가모두동일, 실행사이클도모두동일 16 비트명령을사용하여 32 비트데이터를처리 회로구성 복잡 단순 단순 메모리사용 높은밀도메모리사용이효율적 낮은밀도의명령어사용으로메모리사용이비효율적 코드밀도가높다 ( 임베디드시스템에유리 ) 프로그램측면 명령어를적게사용 상대적으로많은명령어가필요, 파이프라인사용 RISC 보다더깊은파이프라인스테이지 컴파일러 다양한명령을사용하므로컴파일러가복잡해짐 명령어개수가적어서단순한컴파일러구현가능 국산기술에의해개발 (ADC corp.)
마이크로컨트롤러 - AVR AVR은 ATmel사가개발제조하고있는유사 RISC 구조의저전력 CMOS 8- bit 마이크로컨트롤러 임베디드환경에적합한저전력소모의칩이며, 내부에 32개의범용레지스터내장 유비쿼터스및센서네트워크를위한소형시스템에적합 유사 RISC 아키텍처 (RISC like Architecture) - 유사 RISC 아키텍처라고하는것은 RISC 구조를따르고는있으나명령어와주소지정방식의수가 RISC에비해많음 AVR 의종류 Tiny(ATtiny) : 소형시스템에적합, 외형핀 8 ~ 20개, 메인마이컴보다여러회로를하나의소자로구현한보조역할의칩으로사용 Classic (AT90S): 중간규모시스템의제어에적합, 모뎀. 스마트카드리더. 셋탑박스및각종자동화기기에응용 Mega (ATmega) : 대형이고입 / 출력핀의수가많은시스템에적합, 무선전화기및프린터용제어기. FAX 및 CD-ROM제어기, 통신장비등에응용
마이크로컨트롤러 AVR 내부블럭도
마이크로컨트롤러 AVR 내부블록도 (2)
마이크로컨트롤러 AVR 특징 AVR 의특징 프로그램을다운로드하여저장할수있는2K ~128K 바이트의플래시메모리를내장 내부 EEPROM 용량 : 128 에서 512 바이트까지가능 내부오실레이터에의해동작하는워치독타이머와전이중방식의다양한외부접속장치를내장 다양한인터럽트소스와파워절약모드, 외부메모리추가가가능 내장디바이스 타이머 / 카운터, 직렬통신장치, 아날로그비교기, 외부데이터장치인터페이스, 입출력포트, SPI(Serial Peripheral Interface), 아날로그디지털변환기 (ADC)
마이크로컨트롤러 - PIC PIC 는마이크로칩테크놀로지 (Microchip Technology) 사에서개발제조판매하는 RISC 구조의 8-bit 마이크로컨트롤러임 속도, 내부메모리용량, 내장디바이스특성에따라 PIC12, PIC14, PIC16, PIC17, PIC18 시리즈가있음 모두동작전원범위가넓고, 소비전류는수 ma 이하이며파워 ON Reset과원칩타이머, ROM 등을내장하고있어서, 소형제품을만드는데적합한특징을가지고있다 EEPROM, 13개의 I/O 핀, 오실레이터회로, 리셋회로, 타이머 / 카운터등을내장하고있는아주편리한원칩마이컴 (one chip micom) 이다. 동작범위도 2.0V~6.0V로확대되었으나, 소비전류는 60μA 정도로적기때문에, 건전지등과같은것으로도동작이가능
마이크로컨트롤러 - PIC
마이크로컨트롤러 - PIC PIC 의특징 35 개의싱글워드명령 브랜치명령 (2 사이클 ) 을제외하고는모든명령싱글사이클 (400ns) 동작속도 : DC-10MHz 클럭입력, DC-400ns( 명령사이클 ) 14 비트크기의명령어 8 비트데이터폭 1K 14 EEPROM 프로그램메모리내장 36 8 범용레지스터 (SRAM) 8레벨의하드웨어스택 직접, 간접, 상대번지지정 4 개의인터럽트소스 외부 RB0/INT 핀, TMR0 타이머오버플로 PORTB<7:4> 가변할경우인터럽트, 데이터 EEPROM 라이트
CISC 프로세서 Intel 계열마이크로프로세서의종류및역사 연도 프로세서이름 트렌지스터개수 특징 1971 4004 2,250 인텔의첫마이크로프로세스, Busicom 계산기에사용 1972 8008 2,500 Mark-8 에서사용, 최초의가정용컴퓨터 1974 8080 5,000 Altair 에서사용 1978 8086/8088 29,000 IBM-PC XT 에서사용, 인텔이대기업으로성장 1982 80286 120,000 IBM-PC AT 에서사용, 6 년간천 5 백만대판매 1985 80386 275,000 32 비트멀티테스킹지원 1989 80486 1,180,000 수치보조프로세서내장 1993 Pentium 3,100,000 음성, 이미지처리기능강화 1995 Pentium Pro 5,500,000 Dynamic Execution 구조채택 1997 Pentium 2 7,500,000 MMX 기술지원 1999 Pentium 3 24,000,000 SIMD 지원, 12 스테이지파이프라인 2001 Itanium 25,000,000 64 비트, Explicitly Parallel Instruction Computing(EPIC) 2002 Pentium 4 55,000,000 20 스테이지하이퍼파이프라인, 하이퍼쓰레딩 2003 Itanium 2 410,000,000 Machine Check Architecture, EPIC, 6MB L3 캐시
CISC-History:Packaging 기술변천
CISC - History
CISC - 8051 인터럽트 8051 입출력및인터럽트 8051에서인터럽트 : 5개지원 외부인터럽트 2개 (INT0, INT1) 타이머 / 카운터인터럽트 2개 (TF0, TF1) 시리얼포트인터럽트 1개 인터럽트처리순서 1. EA(Enable All) bit를 1로만든다.( 인터럽트를허용하는상태로만든다 ) 2. IE 레지스터의인터럽트 enable 비트를 1로만든다. 3. 해당되는인터럽트벡터주소로분기해서원하는인터럽트서비스루틴을실행한다. 4. 외부인터럽트인경우에는 INT0 혹은 INT1 비트가 0 이되어야한다.
CISC-8051 인터럽트레지스터 8051 입출력및인터럽트 인터럽트발생 source 에따른벡터주소 IE(Interrupt Enable) 레지스터
RISC RISC 개요 RISC의대표적인칩 : ARM ARM : Advanced RISC Machine 2002년현재 RISC(Reduced Instruction Set Computer) 구조를가진프로세서들중에서세계시장점유율 1위 ARM 프로세서가다른프로세서와차별화된점 구조적인점 인텔 (Intel) 이나모토롤러 (Motorola) 의 CISC(Complex Instruction Set Computer) 프로세서과비교 세부적인 ( 혹은최적화된 ) 구현방법 같은종류인 RISC 프로세서들과비교
RISC vs. CISC load-store architecture: 메모리에서데이터를읽고쓰는명령어와 CPU 내부에서연산을수행하는명령어들을분리 따라서연산을수행하면서메모리까지참조하기위해많은시간을소모하는명령어가없게됨 fixed length 32-bit 명령어 : 모든명령어는한명령어당 32 비트만을점유 3-address 명령어구조 : 대부분의 ARM 명령어는두개의 source address 와 1개의 destination address, 즉 3 개의 address를보유
RISC 의장점 ARM 이임베디드프로세서시장을석권할수있었던이유 위의장점들을살리면서도동시에다른 RISC CPU 와차별화 32-bit RISC의성능 작은메모리 저가격 저전력 이동단말기시장에서채택 이동전화시장즉, GSM과 CDMA 이동통신시장의폭발 임베디드프로세서시장의선두주자
RISC - ARM RISC 의특징 ARM RISC vs. other RISC 1.16-bit 명령어사용가능 : Thumb모드제공 RISC CPU의단점인큰코드크기문제 (code size problem) 를완화 2. 조건부명령어구조 : ARM 의모든명령어는조건부수행명령으로만들수있음 분기명령을따로사용하지않고도일반명령어만이용해서프로그램을구현 명령어의개수를줄일수있음 3. 최적화된레지스터수 : shadow register 이용 꼭필요한레지스터들만 context-swiching에서활용 4. 배럴쉬프트레지스터 (Barrel shift register) 의활용 : 배럴쉬프트레지스터를 ALU 입력단에설치 간단한상수를즉석에서만들거나, 간단한곱셈이필요한경우혹은쉬프트동작이연산명령어와함께수행되어야하는경우에명령어를따로써야할필요가없게되었고프로그램의수행속도를줄일수있음
RISC-ARM Processor Roadmap
RISC - ARM Core 종류 ARM 프로세서코어의종류
RISC - ARM 프로세서구조 ARM7 데이터부의구성 Address Register, Data-In Register, Data-Out Register, Instruction Pipe(Pipeline) Register CPU와메모리와의인터페이스 주소레지스터 (Address Register) 메모리에서읽어오거나 (memory read) 메모리에써야하는 (memory write) 경우데이터의주소를지정하는용도 데이터레지스터 (Data Register) 메모리에서읽어오거나저장해야할데이터를보관하는데사용 데이터입력레지스터 (Data-In Register) 데이터출력레지스터 (Data-Out Register) Instruction Pipeline Register : 명령어가저장
RISC - ARM7 블록도
RISC - ARM7 Registers 레지스터 (register) : 총 37 개의레지스터 사용목적에따라서구분해서사용 12개의사용자레지스터 25개의시스템레지스터 총 3개의입력포트와 2개의출력포트를지원 범용레지스터를위한두개의입력포트 (port) 한개의출력포트 프로그램카운터 (Program Counter 또는 PC) 를위한별도의입력및출력포트
RISC - ARM7 Datapath 쉬프터 (shifter) ALU의두입력중에서왼쪽입력단에위치 ALU로들어가는데이터를쉬프트 ( 한비트자리옮김 ) 시키는데사용 barrel shifter 소요되는시간이비트수에관계없이일정 ALU(Arithmetic and Logic Unit, 산술논리연산장치 ) 명령어가필요로하는산술연산및논리연산을수행 제어부 명령어디코딩 (decoding) 모듈과데이터부를관리하는제어신호를만드는역할을수행 데이터처리명령어 단일명령어사이클만을필요 두개의레지스터오퍼랜드 ABUS에실리는데이터 : ALU로곧장보내짐 BBUS를통과하는데이터 : 배럴쉬프터에서쉬프트되어서 ALU로보내짐 프로그램카운터 (PC) 값 주소레지스터로보내져서명령어를가져오는 (fetch) 데사용 PC값은다음명령어를위해 Incrementer에서 4만큼증가시켜서 PC인 r15에다시씌어짐
RISC - ARM7 Pipeline ARM7 파이프라인 (Pipeline) 의구성 3 단계파이프라인의구조 한 CPU 는각단계에세개의명령어까지동시에처리가능 1.Fetch cycle : 명령어를메모리에서읽어서명령파이프레지스터 (instruction pipeline register) 로옮긴다. 2.Decode cycle : 명령어를해독해서다음단계에서데이터부에서필요로하는제어신호들을생성한다. 이단계에서는데이터부에서는아무일도하지않고제어부에서만일을한다. 3.Execute cycle : 이단계에서는데이터부에서만일을한다. 레지스터뱅크에서두오퍼랜드를읽어서한오퍼랜드를지정된횟수만큼쉬프트해서 ALU에입력한다. ALU는이두데이터를입력받고지정된연산을수행해서결과값을다시 destination 레지스터에저장한다. CPU 가간단한데이터처리명령만수행하는경우 한명령어가처리되는데 3 클럭사이클이소요 3단계파이프라인에서는한클럭사이클마다한명령어가처리 한명령어에대해서응답시간또는 latency : 3 클럭사이클
RISC - ARM Pipeline 개념도 ARM7 파이프라인 (Pipeline) 의구성
RISC - ARM7 Operating Modes ARM 7 레지스터의종류, flag 및예외처리 사용자프로그램작성 15개의범용 32-bit 레지스터 (r0 - r14) program counter(r15) current program status register(cpsr) 들을사용 시스템프로그램모드 총 6가지로분류 Irq(Interrupt request), Abt(Abort), Svc(Supervisor), Fiq(Fast Interrupt request), Und(Undefined) 모드가지원 7번째 : System 모드지원 system 모드는 user mode 와같은레지스터를이용
RISC - ARM7 Modes ARM 7 레지스터의 종류, flag 및 예외처리
RISC - ARM7 상태레지스터 CPSR CPSR (Current Program Status Register) user-level 프로그램의 condition code를저장하는데사용 Condition code의각비트 : 산술및논리연산결과를저장 조건분기명령의조건을표시 condition code의구성 Condition code의하위부분 CPU의동작모드, 명령어세트의종류 (I:32-bit 명령, T:16-bit 명령 ), interrupt enable (I:interrupt Request, F: Fast interrupt request) 이비트들은 user-level 프로그램에의해변화하지않음
RISC - ARM7 Flag condition code flag ( 또는줄여서 flag) N,Z,C,V flag은 CPSR(Current Program Status Register) 이라는 32 비트레지스터의특정한 4비트를이용하여표시한다. 프로그래머에게도움을주기위하여사용 destination register에저장되어있는명령어의실행결과값과함께현재 CPU의상태를표시하는데사용 예 : 덧셈연산에서발생하는자리올림을나타내는 Carry라는 flag 자리올림이발생했을경우 C flag은 1이됨 자리넘침또는 overflow 상태임을표시하는 V flag 어떤산술연산에서양수와양수를더했는데결과가음수가되는경우 음수에서음수를뺄때결과값이양수가되는경우 연산의결과가부호비트를침범하여주어진자리수로표현이불가능하게되어처리불능상태에빠진것을나타냄 N flag 연산결과가양수인지음수인지를구분하는데용이 N flag이 1이면음수임을표시 Z flag 어떤산술연산의결과값이 0인경우에 1이되는 condition code
RISC - ARM7 16 Condition Codes
RISC - ARM7 Exception 처리 ARM7 Exceptions Exceptions : interrupt, trap, 그리고 supervisor call 처리순서 1. 현재의상태가저장된다 ([PC] -> r14_exc, CPSR ->SPSR_exc, 여기서 exc는 exception 종류를의미한다. 2. Processor 는동작모드를 exception 모드로바꾼다. 3. PC 는 0x00 에서 0x1C 값중에서 exception 의종류에따라한가지값이선택된다. PC 의새로운주소 (vector address 라불림 ) 의명령어 대개 exception 처리프로그램으로 branch 하는명령어 stack 을가리키는 r13_exc 를사용해서사용자레지스터들의값을저장 Exception 처리가다끝난뒤에다시사용자프로그램으로되돌아오려면, stack 에저장되었던사용자레지스터들과 PC 와 CPSR 을복구
RISC - ARM7 명령어 명령어버전 : V4 ARM7, ARM9 이포함됨. ARM 7 명령어설명및어드레싱모드 3가지종류로분류 데이터이동명령어 데이터를메모리에서읽거나쓰는데사용 데이터처리명령어 읽어온명령어를처리 분기명령어 데이터처리명령어 데이터에산술연산혹은논리연산을수행하는명령 데이터처리명령을수행하고나면데이터가변함 데이터처리명령을제외한다른모든명령어들은데이터가변하지않음
RISC - ARM7 데이터처리명령어 데이터처리명령어 모든 ARM 명령어 : 32비트 두가지중요한내용 첫번째는어떤명령을수행하라는것 : opcode (operation code) 로표현 두번째는그명령수행에필요한데이터가무엇이다혹은어떤장소에있다는내용 ; opcode가필요로하는데이터는 operand라고부름 예 : ADD r1, r2, r3 ;r1 = r2 + r3 Opcode : add Operand : r1, r2, r3 r : 레지스터 (Register) 를의미 세미콜론 (;) : 그이후의내용이주석혹은코멘트임을표시 세미콜론이후부터그줄의끝까지의내용을무시
RISC - ARM7 데이터처리명령어 (2) 데이터처리명령어 두개의입력오퍼랜드를이용해서한개의출력오퍼랜드를만들어냄 일반적으로 ARM 에서모든오퍼랜드들은 32 비트의크기를가짐 입력오퍼랜드 r2 와 r3 : source operand r2 : first source operand r3 : second source operand 출력오퍼랜드 r1 : destination operand
RISC - ARM7 데이터처리명령어 (3) 데이터처리명령어 레지스터오퍼랜드명령어 ADD r1, r2, r3 ;r1 = r2 + r3 레지스터 r2의내용과 r3의내용을합하여그결과를 r1에저장 오퍼랜드를표시하는순서가역방향 destination register r1이먼저표기되고그뒤에 first soruce operand r2 와 second source operand r3의순서 레지스터에들어있는데이터가부호가없이양수만고려한경우 연산결과는 carry만고려 데이터가부호비트를가지는 2의보수로간주되는경우 연산결과는 carry는물론자리넘침 (overflow) 까지도함께고려해야함 자리넘침 양수와양수를더했는데연산결과가표현가능한범위를넘쳐서부호비트로까지넘쳐서음수로표기되는경우 음수에서음수를뺏는데결과가양수인경우도자리넘침이발생한상태를의미
RISC - ARM7 데이터처리명령어 (4) 데이터처리명령어 레지스터오퍼랜드명령어 수행하는내용에따라, 즉 opcode 의종류에따라서다음의네가지로분류 산술명령 2진덧셈, 뺄셈 오퍼랜드의크기는 32비트 부호없이크기만사용할수도있고또는 2의보수를이용해서부호있는숫자로도사용할수있음 ADD r1, r2, r3 ;r1 = r2+r3 --ADD ADC r1, r2, r3 ;r1 = r2+r3+c --ADD w/ carry SUB r1, r2, r3 ;r1 = r2-r3 --SUB SBC r1, r2, r3 ;r1 = r2-r3+c-1 --SUB w/ carry RSB r1, r2, r3 ;r1 = r3-r2 --reverse SUB RSC r1, r2, r3 ;r1 = r3-r2+c-1 --rev. SUB w/carry MUL r1, r2, r3 ;r1 = r3 r2 --32bit multiply ADC 명령 : 64비트덧셈 SBC 명령 : 64비트뺄셈 MUL 명령어 : 32비트두숫자를곱해서 32비트의결과를저장하는명령어 결과값이 32비트보다큰경우 : ARM의다른곱셈명령어를사용
RISC - ARM7 데이터처리명령어 (5) 데이터처리명령어 레지스터오퍼랜드명령어 산술명령 수행하는내용에따라, 즉 opcode 의종류에따라서다음의네가지로분류 자리올림이발생 덧셈의경우 : C flag 으로그사실을반영 뺄셈연산의경우 : 빌려오는 borrow 가발생 뺄셈은 subtraction by addition 즉, second source operand 의 2 의보수를만들어서더하게된다. Second operand 가 1 처럼작은숫자인경우에는 2 의보수는 0xFFFFFFFF 처럼큰숫자가된다. 즉 1 과같은작은수를뺄때는 borrow 가발생하지않아야하지만 ( 즉, borrow=0 이어야하지만 ) 실제로는 2 의보수가더해지므로 C flag 이 1 이된다. 반대로작은숫자에서더큰숫자를뺄때는 borrow=1 이지만, 큰수의 2 의보수는더작은숫자가되므로 C flag 이 0 이된다. 따라서 SUB 명령의 borrow 조건은 C flag 으로도표현이가능하며이는 NOT(C flag) 으로나타낼수있다.
RISC - ARM7 어드레싱모드 데이터처리명령의 11가지어드레싱모드 어드레싱모드의의미? 명령어의 Opcode가사용할 Operand의표현방법
RISC - ARM9 개요 ARM7과같은 V4 architecture 채용 Share the same instruction set 종류 ARM9TDMI 프로세서코어, ARM920T 프로세서코어 + MMU for Platform OS 16KB code cache & 16KB data cache 각 cache별 TLB 사용 ARM940T 프로세서코어 + MPU for Real-time OS 4KB code cache & 4KB data cache
RISC - ARM9 vs. ARM7 Architecture Improvements ARM7: 3-stage => ARM9: 5-stage pipeline architecture ARM7: unified cache=>arm9: separate cache (Harvard arch.) ARM7TDMI: 3 Stages Fetch Decode Execute Instr. Fetch Thumb decompress ARM decode Reg read shift/alu reg write ARM9TDMI: 5 Stages instruction fetch r.read decode shift/ ALU data mem. access reg write Fetch Decode Execute Memory Write
ALU RISC - ARM9 : 5-stage Pipeline Arch. ID[..] IDScan Instruction Pipeline Instruction Decode and Datapath control logic DIN[..] Byte Rot /Sign Ex. DINFWD[..] DD[..] C[..] Cmux Shift Byte/Word rep1 DDIN[] DDScan Iinc REG BANK + PC B[..] Imm Bmux Bdata[..] SHIFTER Dinc DAScan DA[..] IAScan IAreg A[..] Am ux MUL Adata[..] DAreg IA[..] Vectors PSR RESULT[..] PSRRD[..] naluout[..]
RISC ARM920T 구조블록도 External coprocessor interface Instruction cache Instruction MMU IPA[31:0] IMVA[31:0] R13 ID[31:0] IVA[31:0] Trace I/F port ARM9TDMI Processor Core CP15 AMBA Bus interface ASB DVA[31:0] R13 DD[31:0] DMVA[31:0] Write buffer DPA[31:0] JTAG Data cache Data MMU Write back PA TAG RAM WBPA[31:0] DINDEX[5:0]
RISC - StrongARM ARM v4 프로세서코어 + PDA용주변장치 특징 Forwarding 가능한 5단계파이프라인 16K 바이트 32-way Set Associative 명령어캐쉬 8K 바이트 32-way Copy-Back 데이터캐쉬 명령어와데이터를위한분리된 32-entry TLB 데이터캐쉬 Thrashing 방지를위한 2-way Set Associative 미니캐쉬 3단계전력관리기능 정상 (Normal) 모드, 대기 (Idle) 모드, 슬립 (Sleep) 모드
RISC SA1110 블록도
RISC SA1111 블록도 SA1110 의주변장치확장용도. 그림 2.26 인텔 SA-1111 companion 프로세서블록도
RISC SA1110/SA1111 시스템블록도
RISC Xscale Microarchitecture Features Arm Architecture Version 5TE ISA 호환 저전력 & 고성능 ( 최대 400MHz) Modified Harvard Architecture instruction cache와 data cache가분리 (2 caches) 32KB Instruction Cache 32KB Data Cache Intel Media Processing Technology Instruction and Data Memory Management Unit Branch Target Buffer Debug Capability via JTAG Port 0.35μm 3 Layer metal CMOS, 2.6 million transistor 256 PBGA package (17 x 17mm)
RISC Xscale System Integration Features Memory controller Power management controller Normal, idle, sleep mode 지원 USB client Multi channel DMA controller 소프트웨어프로그램가능, 외부 DMA 지원 LCD controller AC97 codec I2S Multimedia card: serial interface to standard memory card, FIFO 포함 FIR communication: 적외선통신포트 Synchronous serial protocol port I2C
RISC Xscale System Integration Features 85 GPIO ports irq, wake up interrupt 생성 UART Real-time clock and timer 32비트카운터, 32.7kHz 크리스탈, 정밀도 +/- 5sec/mon OS timer with alarm register Pulse width modulation Interrupt controller 모든시스템인터럽트를라우팅
RISC XScale 블록도 Architecture : V5TE 로발전
RISC - Xscale 예제 Palm size device - Example
RISC Xscale memory model Memory Model
RISC Xscale caches Instruction Cache 32bit instruction cache 1024 line of 32bytes(8words) 가상주소사용 32way 32set associative cache 라운드로빈대체기법 MMU가 enable일경우 memory management table에있는 C 비트에의해제어 가상주소에해당하는외부메모리로부터 single word를읽어오고 cache에는쓰여지지않는다. MMU 가 disable 일경우 모든주소에대해서 C=1이된다 8word의 linefetch가수행돼서라운드로빈대체기법에의해 cache bank가대체된다.
RISC Xscale MM Memory Management
RISC Xscale running modes PXA255 동작모드
PXA255 Pin Serial Channel 0 (USB) Serial Channel 1 Serial Channel 2 (IrDA) Serial Channel 3 (UART) Serial Channel 4(CODEC) Power Management Clocks, Reset and Test JTAG UDC- UDC+ RXD_1 TXD_1 RXD_2 TXD_2 RXD_3 TXD_3 TXD_C RXD_C SFRM_C SCLK_C BATT_FAULT VDD_FAULT PWR_EN TCK_BYP TESTCLK PEXTAL PXTAL TEXTAL TXTAL nreset nreset_out SMROM_EN ROM_SEL TCK TDI TDO TMS ntrst Intelr XScale* PXA250 [256-pins] L_DD(15:0) L_FCLK L_LCLK L_PCLK L_BIAS GP(27:0) ncas/ DQM(3:0) nras/ nsdcs(3:0) noe nwe ncs(5:0) RDY nsdras nsdcas SDCKE<1:0> SDCLK<2:0> RD/nWR npoe npwe npior npiow npce<2:1> PSKTSEL npreg npwait niois16 A<25:0> D<31:0> VDD VDDX VSS/VSSX LCDControl GPIO Ports Memory Control Transceiver Control PCMCIA Bus Signals Address Bus Data Bus Supply
PXA255 Address Map 0hFFFF FFFF 0hB000 0000 0hAC00 0000 0hA800 0000 0hA400 0000 0hA000 0000 0h4C00 0000 0h4800 0000 0h4400 0000 0h4000 0000 0h3000 0000 0h2000 0000 0h1800 0000 0h1400 0000 0h1000 0000 0h0C00 0000 0h0800 0000 0h0400 0000 0h0000 0000 Reserved (1280 Mbytes) SDRAM Bank 3 (64 Mbytes) SDRAM Bank 2 (64 Mbytes) SDRAM Bank 1 (64 Mbytes) SDRAM Bank 0 (64 Mbytes) Reserved (1344 Mbytes) Memory Mapped registers (Memory Ctl) Memory Mapped registers (LCD) Memory Mapped registers (Peripherals) PCMCIA/CF - Slot 1 (256 Mbytes) PCMCIA/CF - Slot 0 (256 Mbytes) Reserved (128 Mbytes) Static Chip Select 5 (64 Mbytes) Static Chip Select 4 (64 Mbytes) Static Chip Select 3 (64 Mbytes) Static Chip Select 2 (64 Mbytes) Static Chip Select 1 (64 Mbytes) Static Chip Select 0 (64 Mbytes) Dynamic Memory Interface 256 Mbytes Memory Mapped registers Interface 192 Mbytes PCMCIA Interface 512 Mbytes Static Memory Interface (ROM, Flash, SRAM) 384 Mbytes
PXA255 Processor XScale Core 32Bit RISC 32Bit registers 32Bit instructions Longword aligned F1 F2 ID RF Instruction Instruction Fetch1 Fetch1 PC Instruction Instruction Fetch2 Fetch2 PC - 4 Instruction Instruction Decode Decode PC - 8 Register File Register File Operand Operand Shifter Shifter PC - 12 32Bit datapaths M1 7~8 stage pipeline M2 Multiplier Multiplier Stage1 Stage1 Multiplier Multiplier Stage2 Stage2 X1 X2 ALU ALU Execute Execute State State Execute Execute PC - 16 D1 Data Cache Data Cache Access Access Mx Multiplier Multiplier Stage X Stage X MAC pipeline XWB Write Write Back Back Main execution pipeline D2 DWB Data Cache Data Cache Access Access Data Cache Data Cache Writeback Writeback Memory pipeline
PXA255 Processor(2) Advanced Microcontroller Bus Architecture CPU 버스 : A, B, ALU BUS 로구성 Arbiter ARM Reset External ROM ROM External RAM RAM TIC EBI Decoder Bus I/F On-chip RAM ARM HOST BUS, ARM SYSTEM BUS 프로세서내부에내장된고속장치연결 AHB or ASB Bridge Timer Interrupt Controller Slow Peripherals Remap / Pause ARM PERIPHERAL BUS 저속으로동작하는장치연결 APB
Write Buffer for Write Through Processor Cache DRAM Write Buffer A Write Buffer is needed between the Cache and Memory Processor: writes data into the cache and the write buffer Memory controller: write contents of the buffer to memory Write buffer is just a FIFO: Write Buffer는쓰는경우의성능향상을위해존재 캐시메모리는명령어, 데이터를읽을경우의성능향상 CPU가쓰기동작을하는동안에도다른처리를계속할수있도록, 주소와데이터가 write buffer에저장 버스의사용권한이 write buffer에주어지면외부장치에 write
Cache organization Virtual address 31 121110 9 8 7 6 5 4 3 2 Line Tag Index offset 1 0 32set 8word 4byte 0 1 2 3 4 5 6 7 31 28 2930 32 lines Tag CAM 0 1 2 3 DATA RAM To From CPU
PXA255 - 명령어캐시 명령어캐시 (Instruction Cache) 32KB Instruction Cache 1024 lines of 32bytes(8words) Uses the virtual address 32-way 32-set associative Round-Robin replacement Mapped via MMU page C bits MMU가 enable 되었을경우에는 memory management table에있는 C비트에의해서제어된다. IMMU DMMU MMU 가 disable 되었을경우에는모든어드레스에대하여 C=1 인된다. C=1 또는 MMU 가 disable 상태인경우 miss 인경우 32 Kbytes I-cache Main D-cache & Mini-D-cache Instructions Data 8word의 line fetch가수행이되어 Round-robin replacement에의해서 Cache bank가대치된다. MMU가 enable되고 C=0인경우에는 virtual address에해당하는외부메모리로부터 single word를읽어오고, cache에쓰여지지않는다. PC Address XScale Core
PXA255 - 데이터캐시 데이터캐시 (Data Caches) Two Data Caches(Main Data Cache, Mini Data Cache) Both: writeback, read allocate, virtual Mapped via MMU page B, C bits Main Data Cache, 32KB 32-way 32-set associative Round-Robin replacement B=1 & C=1 Mini Data Cache, 2KB 2-way set associative Least Recently Used(LRU) replacement B=0 & C=1 IMMU DMMU 16 Kbyte I-cache Main D-cache & Mini-D-cache Instructions PC Address Data XScale Core
PXA255 - Read Buffer PXA255 Read Buffer I-cache D-cache & mini-d-cache Write Buffer Instructions PC Address Data XScale Core 128 Byte Read Buffer System Bus Data prefetcher saves processor waiting load & calculate in parallel for Read-Only data supplements the data cache Under software control Coprocessor 15, register #9 4 entries, 32 bytes each Loads of 1, 4, 8 words Replace or invalidate data
PXA255 Memory Management Physical Addresses Space Virtual Addresses Space System Memory MMU ITLB PXA255 Instruction s Data 32 B C A PAVA DTLB C A PAVA I-CACHE D-CACHE XScale Core TLB Miss Descriptor s Translation Table Base Register Coprocessor 에의한 MMU 지원
PXA255 Processor - CP15 CP15 Register structure Register Purpose 0 ID Register 1 Control 2 Translation Table Base 3 Domain Access Control 5 Fault Staus 6 Fault Address 7 Cache Operations 8 TLB Operations 9 Read Buffer Operations 10 TLB lockdown 13 Process ID Mapping 14 Debug Support 15 Test & Clock Control 4,11~12 UNUSED
PXA255 CoProcessor C0 C1 CP15 register 31 24 23 16 15 4 3 0 implementer 0 0 0 0 0 0 0 A part number (BCD) revision 31 15 1413 12 1110 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RRV I Z F R S B L D P W C A M C2 C3 31 14 13 0 translation table base address 0 0 0 0 0 0 0 0 0 0 0 0 0 0 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 31 9 8 7 4 3 0 C5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 domain status C6 C13 31 0 fault address 31 2524 0 process ID 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
RISC PowerPC Power-PC 코어의특징 1) 정수값을가질수있는 32개의범용레지스터 ( GPRs) 2) 레지스터와메모리사이의자료를읽고쓸수있는명령어 3) 파이프라인과병렬적인명령어추출을쉽게하기위한단일크기명령어구성 4) 정수연산명령어는결과를저장할레지스터를정할수있음 5) 정확한예외처리구조 6) 각기능을하드웨어나소프트웨어로구현할수있는유연한아키텍처 7) 캐시제어를위한사용자레벨의명령어지원 8) 메모리에대한약한일관성모델적용 9) 단일캐시뿐만아니라명령어와자료의분리된형태의 Harvard 아키텍처캐시도지원 10) big-endian뿐만아니라 little-endian도지원 11) 32-bit 주소뿐만아니라64-bit 주소도지원
MIPS 코어구조 MIPS 코어구조도
MIPS 코어구조 MIPS 코어구조도
MIPS 코어구조 MIPS 코어구조도
MIPS 코어로드맵 MIPS 코어로드맵
EISC - 개요 EISC 프로세서의종류 16비트 32비트 : AE32000 64비트 AE32000의특징 16비트명령어구조 하바드구조 5단계파이프라인 32비트연산을지원하는 ALU 와 Barrel Shifter 32 32-bit 곱셈기 CNT명령 : 허프만 (Huffman) 디코딩을효율적으로지원 MAC (Multiply and ACcumulate) 연산기 : DSP 응용
EISC AE32000 프로세서블록도 MA ADDRESS Generation Unit PC SPR (PC,SP,ER, MH,ML,LR,SR) CBUS MUL/DIV MH/HL GPR #0~15 IMED Control Logic 32 Bit ALSU ABUS BBUS BBUS ABUS ABUS IR TYPE Data In/Out Block
EISC ANGEL 칩 / 내부사진 PLL Pixel FIFO*4 Write FIFO Palette RAM CACHE Peripheral CPU VSP DAC DAC DAC Multiply
EISC 프로세서모드 : 3 가지 관리자모드 OS 사용 사용자모드에서 SWI로진입 ; POP SR로복귀 사용자모드 응용 S/W 모드 사용자에게할당된자원만사용가능 OSI 모드 프로세서의동작을디버깅하기위한모드 관리자모드와동일한권한을가짐 관리자모드와구분되는스택을가짐
EISC 프로그래밍모델 General Purpose Register Special Purpose Register R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 PC USP SSP LR ER ML MH SR Program Counter User Stack Pointer Supervisor Stack Pointer Link Register Extension Register Multiply result Low Register Multiply result High Register Status Register 31...... 16 15 14 13 12 11 10...... 8 7 6 5 4 3... 0 Reserved Always 0 U/S NMI Reserved ENI AUT E C Z S V Always 0 Reserved Always 0 User/Supervisor# Mode Enable Non-Maskable Interrupt Extension Flag Auto-vectored Interrupt when AUT is 0. Enable Interrupt Carry Zero Sign Overflow
EISC AE32000 레지스터 범용레지스터 16 개 할당순서 : 0, 1, 2, 3, 4, 6, 10, 11, 12, 13, 14, 15 5 번 : 프레임포인터 7 번 : 인덱스레지스터 8, 9 번 : Argument Passing 용도. 특수목적레지스터 9 개 PC: Program Counter USP: User Stack Pointer SSP: Supervisor Stack Pointer LR: Link Register ER: Extension Register ML/MH: Multiply result Low/High Register SR: Status Register
EISC AE32000 레지스터 SR : 15~8 번은관리자모드에서만사용가능 LR : 호출되었던원래위치로복기주소 PC : Next Program Address PC = (address of current instruction) + 2 ER : LERI 사용시부족한상수값을저장 MH/ML : MAC 연산결과저장 SP : 3 가지동작모드마다 1개의 SP
EISC SR 프로세서모드 (bit.15, bit9) : 프로세서의동작모드 00 : 슈퍼바이저모드 / 01 : OSI mode1x : 사용자모드 NMI (bit.14) : Non-maskable 인터럽트 0 : NMI disable / 1 : NMI enable ENI (bit.13) : 인터럽트 0 : INT disable / 1 : INT enable AUT (bit.12) : 외부 vectored interrupt 0 : Auto-vectored interrupt / 1 : Vectored interrupt Extend (bit.11) : ER 사용여부 Endianess (bit.10) : 엔디안 (endian) 지정 Lock (bit.8) : 임계구역 (critical section) 에대한제어 Carry (bit.7) : 캐리 (carry) Zero (bit.6) : 연산의결과가 '0'. Sign (bit.5) : 연산의결과에서 MSB overflow (bit.4) : 연산의결과에서오버플로우가발생
SoC 개요 & Applications SoC 목적 : Multi-chip solution => single chip solution 저전력, 소형화, 저가격, 안정성증가
SoC 구현방법 ASIC, ASSP, PLD ( 엑스칼리버 )
SoC - ARM AMBA(Advanced Micro-controller Bus Architecture) 이용하여 IP를연결 AHB (Advanced High-performance Bus): 고속, burst, split 전송 ASB (Advanced System Bus) : 이전규격 APB (Advanced Peripheral Bus) : 저속