1.45k likes | 1.77k Views
제 6 장. Microprocessor. ALU. Microprocessor = CPU-on-a-chip. Register. Register. Control Unit. 6.1 History of Microprocessor (1). 계산기에 이용 <- 최초의 마이크로 프로세서 Intel: 1968 년 : Robert Noyce, Gordon Moore => Memory 회사 1969 년 : 일본의 계산기 제작회사 Busicom
E N D
제 6 장 Microprocessor
ALU Microprocessor = CPU-on-a-chip Register Register Control Unit
6.1 History of Microprocessor • (1). 계산기에 이용 <- 최초의 마이크로 프로세서 • Intel: • 1968년 : Robert Noyce, Gordon Moore • => Memory 회사 • 1969년 : 일본의 계산기 제작회사 Busicom • -> 새로운 계산기 설계를 위한 IC 의뢰
4000 시리즈 설계 : Ted Hoff, Stan Mazor, Fredrico Faggin 4001 : 2K ROM (4bit I/O port) 4002 : 320bit RAM (4bit I/O port) 4003 : 10bit serial input / parallel output shift register 4004 : 4bit processor => 최초의 OnChip Processor = Microprocessor로 명명 => 1971년 완성
(2). (일반목적) Microcomputer에 이용 1974년 : Intel 8080 -> 1975년 최초의 (일반목적) Microcomputer : MITS Altair 8800 -> data bus : 8bit -> address bus : 16bit Motorola MC6800 MOS Technology 6502 Zilog Z-80
(3). 고성능 Microcomputer에 이용 - 1970년 후반 16bit microprocessor 등장 (현재의 microprocessor의 기본을 이룸) - 중형 및 대형 컴퓨터의 CPU가 가지고 있는 이론들을 Microprocessor에 접목 (ex: cache, virtual memory, …) - 대표적인 Microprocessor Intel 8086 family, Motorola 68000 family - 32bit, 64bit, 128bit microprocessor의 개발
6.2 History of Microcomputer (1). 8bit Computer - Intel 8080 1975년 MITS Altair 8800, Imsai, HAL Communications E&L Instruments, Processor Technology - Motorola 6800 : Southwest Technical Product SWTPC 6800 - Zilog Z-80 : North Star Computers, Cromenco - MOS Technology6502 : Apple
(2). 16bit/32bit/64bit Computer Intel 8088 series 1982년 IBM PC IBM 호환 기종 Motorola MC68000 series APPLE, SPARC
6.3 Summary of Intel 80X86 microprocessor (1). 8086 (4.77M) - 1978년 발표 - Data Bus (16bit), Address Bus (20bit) - Data bus & Internal Register : 16bit - Address Space : 1MByte - 곱셈, 나눗셈 명령어 내장 - 외부 FPU(Floating Point Unit)를 지원 (8087) - 4 clock당 1개의 명령어 수행 가능
(2). 8088 - 1979년 발표 - Data Bus (8bit), Address Bus (20bit) - Internal Register : 16bit - 8bit Data bus를 제외하고 8086과 동일 -> 단일의 8bit Memory Bank 사용 가능 ex) 1 bank : 16Kbit * 8 <- 8088 2 bank : 16Kbit * 16 <- 8086 -> For 16bit data bus, two 8-bit memory banks are required -> expensive at the time - 1982년 IBM PC에서 CPU로 이용 CPU : 8088 4.77MHz, Memory : 64KByte, OS : MS-DOS
(3). 80186, 80188 - IBM PC CPU + 주변회로(Clock Generator, P Timer, PIC, ...) 하나의 Chip으로 구성 - 80186 : 8086 + 주변회로 - 80188 : 8088 + 주변회로
(4). 80286 (6, 8Mhz) - 1982년 발표 - 1984년 IBM AT(Advanced Technology)에서 사용 - Data Bus (16bit), Address Bus (24bit) - 24bit Address Bus (16MByte) - 2개의 Mode 지원 Real Mode : 20bit Address Bus 이용 Protected Mode : MultiProgram 환경 제공 : 가상 메모리 기능과 멀티 태스킹 모드를 지원
- 단점 : Real Mode -> Protected Mode (O) Protected Mode -> Real Mode (X) MS-DOS 이용 : Real Mode, MS-DOS로 복귀되지 않음 - IBM PC AT에서 Real Mode만을 이용
(5). 80386 (DX) 16Mhz, 33MHz - 1985년 발표 - Data Bus (32bit), Address Bus (32bit) - 2 clock당 1개의 명령어 수행 가능 - Real Address Mode : MS DOS가 사용하는 Mode Protected Virtual Address Mode : Windows, OS/2, Unix Virtual 8086 Mode : Protected Mode에서 DOS program의 수행
(6). 80486 DX : 25, 33, 50 Mhz - 1989년 발표 - Data Bus (32bit), Address Bus (32bit) - 핵심부분은 RISC기법으로 재설계 -> 자주 사용하는 명령어 1 clock에 실행 - 1 clock당 하나의 명령어 수행 - On Chip Cache 8K, On Chip FPU
(7). Pentium - 1993년 발표 - Data Bus (64bit), Address Bus (32bit) - 내부적으로는 32bit로 작동 - On Chip Cache (16K Byte) Data Cache : 8K Code Cache : 8K - On Chip enhanced FPU - 슈퍼 스칼라 (Super Scalar Architecture) - 예측 분기 회로 - Dual Processor 동작 지원 => 지원 OS (Windows NT, UNIX)
파이프라인 처리(Pipelining) Execution Step (1). Instruction Fetch (IF) - Memory로 부터 명령어를 가지고 온다 (2). Instruction Decoding (ID) - 가지고 온 명령어를 해독한다 (3). Operand Fetch (OF) - 필요한 경우 Memory 로 부터 Operand를 가지고 온다 (4). Instruction Execution (EX) - 해독한 결과에 따라 명령어를 수행한다
IF ID OF EX IF ID OF EX IF ID OF EX IF ID OF EX IF ID OF EX IF ID OF EX
슈퍼 스칼라 (Super Scalar) :컴퓨터 시스템에 여러 개의 파이프라인을 설치하여 동시에 두 개 이상의 명령어들이 파이프 라인을 통하여 병렬 처리될 수 있도록 하는컴퓨터 구조 Cache 32bit 64 bit 32bit
분기 예측 :분기 예측이란 프로그램 실행 도중 분기 명령이 발생했을 때 메모리 상의 분기할 곳을 미리 예측하는 기능이다. 이러한 분기 명령을 실행하면 파이프라인 처리시 명령어가 끊이지 않고 계속하여 처리할 수 있다는 장점이 있다. [A] go to C [B] [C] code cache [B] pipeline stall [A] go to C [B] [C] code cache [C]
for(i=1; i<10; i++){ … if(a>3) then [A] else [B] … } code cache [A] code cache [B]
(8). Pentium Pro – 6세대 processor - 1995년에 발표 - Data Bus (64bit), Address Bus (36bit) - Address Bus : 36bit (64G address space) - Processor 와 2단계 Cache의 두 chip으로 구성 (Dual Cavity Design) On Chip 2 단계 Cache 16K Byte 1단계 Cache 256K Byte 2단계 Cache (150) or 512K Byte Cache (200)
CPU + L1 Cache Pentium CPU + L1 Cache L2 Cache Pentium Pro
(9). Pentium II • - 1997년 발표 • Pentium Pro + MMX (MultiMedia eXtensions) • - Data Bus (64bit), Address Bus (36bit) • L1 Cache: 32K Byte, L2 Cache: 512K Byte Cache • - Processor Core Speed (450MHz - 233MHz) • System Bus (100MHz) • - Celeron = Pentium II - L2Cache - .. • Celeron A : L2Cache(128KByte) (1999년) • - Xeon = Pentium II + Graphic Accelerator + .. (Server용 CPU) (1998년) • Scalability : • can be scaled to 2, 4, 8 or more, and used for high-end server and workstations
CPU Processor Core Cache System Bus (FSB : Front Side Bus) 450 MHz 100 MHz
(10). Pentium III • - 1999년 발표 • - Data Bus (64bit), Address Bus (36bit) • - Processor Core Speed (1.1GHz - 450MHz) • - System Bus (133MHz) • - Cache Speed Upgrade (Advanced Transfer Cache) • 70 New Extended Instructions (SIMD) • 70 new streaming SIMD extensions (SSE) : • 50 to improve floating-point performance • 12 to improve multimedia processing • 8 to improve the efficiency of L1 cache • - Pentium III Xeon Processor (1999년)
(11). Pentium IV • - 2000년 발표 • - Data Bus (64bit), Address Bus (36bit) • - Processor Core Speed (2GHz - 3.2GHz) • System Bus (400MHz-800MHz) • - 800 MHz 시스템 버스: Pentium 4 C • 3.20 GHz, 3 GHz, 2.80 GHz, 2.60 GHz, 2.40 GHz - 533 MHz 시스템 버스: Pentium 4 B • 3.06 GHz, 2.80 GHz, 2.66 GHz, 2.53 GHz, 2.40 GHz, 2.26 GHz - 400 MHz 시스템 버스: Pentium 4 A • 2.60 GHz, 2.50 GHz, 2.40 GHz, 2.20 GHz, 2 GHz • 하이퍼-스레딩 기술 (hyper-threading technology) • 하나의 인텔 펜티엄 4 프로세서 상에서 2개의 스레드를 • 동시에 실행 가능
6.4 RISC(Reduced Instruction Set Computer) <-> CISC(Complex Instruction Set Computer) CISC 특성 - 명령어의 수가 많다 <-> 적다 (많이 사용하는 명령어로 구성) - 가변길이 명령어 <-> 고정길이 명령어 - 다양한 주소지정 모드 <-> 적은 수의 주소지정모드 제어부가 복잡 (면적 50%) <-> 제어부가 간단 (면적 10%) - 명령어수행당 클럭수가 많다 <-> 적다 (대부분 1clock에 실행)
- 적은 레지스터의 수 <-> 많은 레지스터 수 자주 사용하는 변수를 프로세서 내에 내장하여 외부 메모리를 참조하는 횟수를 줄임 속도 향상에 많은 도움을 줌 - 명령어 대다수가 메모리를 참조 및 조작 <-> 읽기(load)와 쓰기(store)를 제외한 대부분의 명령어는 전부 레지스터 만을 대상으로 함 메모리를 참조하는 명령어는 읽기와 쓰기 둘 뿐이다.
Source Code by High Level Language Compiler in CISC Compiler in RISC Executable Program Executable Program 프로그램 길이 = 길다 명령어 수행 속도 = 빠르다 프로그램 수행속도 = ??? 프로그램 길이 = 짧다 명령어 수행 속도 = 느리다 프로그램 수행속도 = ???
6.5 Motorola 68000 Microprocessor 68000 CPU IPL2# A23 – A1 IPL1# D15 – D0 IPL0# AS# BR# R/W# BG# UDS# BGACK# LDS# DTACK# Vcc FC2 GND FC1 CLK FC0 BERR# E RESET# VMA# HALT# VPA#
68000 CPU address bus A23 – A1 IPL2# interrupt lines IPL1# data bus D15 – D0 IPL0# AS# R/W# BR# data transfer control lines bus control lines UDS# BG# LDS# BGACK# DTACK#
a. Address Bus --> Identify the location accessed by the CPU during a read or write operation with memory devices or I/O devices --> Location - Memory location, I/O Location --> The set of different addresses specified over the address bus - Address Space ex) N address lines => address space -> 2N => lowest address -> 0 highest address ->2N-1
Address Lines -> A1-A23 : 16Mbyte Address Space 0xFFFFFF location ….. 0x000003 0x000002 0x000001 location 0x000000
I/O를 위한 Address Space -> 공유 Address Space 와 독립 Address Space Memory Mapped I/O (공유 Address Space) -> 하나의 Address Space를 Memory와 I/O가 공유한다. I/O Mapped I/O (독립 Address Space) -> Memory Address Space와 I/O Address Space가 독립적으로 존재한다. -> Address bus의 주소가 메모리 주소인가 I/O 주소인가를 구분해주어야 한다.
b. Data Bus -> Carry the data to be written or read from the location identified through the address line -> The number of data lines determines the maximum amount of information to transfer during a single write or read operation - 8bit, 16bit, 32bit, 64bit -> Data Lines in 68000 CPU -> D0-D15 : 16Bit
-> 16 Bit Microprocessor - Pairing scheme 각 location은 1Byte로 구성되어 있다. CPU의 Data bus폭이 8bit일 때는 하나의 location과 Data bus의 폭이 일치한다. CPU의 Data bus폭이 16bit일 때는 두 개의 location과 Data bus의 폭이 일치한다. 이때, 어떤 location을 Data bus의 상위 Byte에 사상할 것인가 ?
16 bit CPU Little Endian (ex: Intel CPU) -> (Low Order Byte First) D15 ….. 상위 Byte (D15-D8) D8 0x34 홀수 번지 (1, 3, 5, …) CPU D7 0x12 짝수 번지 (0, 2, 4, …) ….. 하위 Byte (D7-D0) D0 CPU에서 읽는 값 : 0x3412
16 bit CPU Big Endian (ex: Motorola CPU) -> (High Order Byte First) D15 ….. 상위 Byte (D15-D8) D8 0x34 홀수 번지 (1, 3, 5, …) CPU D7 0x12 짝수 번지 (0, 2, 4, …) ….. 하위 Byte (D7-D0) D0 CPU에서 읽는 값 : 0x1234
Address bus 와 Data bus 와의 관계 (1). 8bit CPU는 A0가 반드시 필요 한가 ? 8bit CPU A3 = ? A2 = ? A1 = ? 0x07 A0 = ? 0x06 0x05 0x04 data bus 0x03 0x02 0x01 0x00
8bit CPU는 A0가 반드시 필요 하다. 8bit CPU A3 = 0 A2 = 0 A1 = 1 0x07 A0 = 1 0x06 0x05 0x04 data bus 0x03 8bit 0x02 0x01 0x00
(2). 16bit CPU가 만일 16bit 단위로 만 정보를 전달할 수 있다면 A0는 필요 한가 ? 16bit CPU A3 = 0 A2 = 0 A1 = 0 0x07 A0 = ? 0x06 0x05 0x04 data bus 0x03 8bit 0x02 8bit 0x01 0x00
16bit CPU가 만일 16bit 단위로 만 정보를 전달할 수 있다면 A0는 필요 없다. 16bit CPU A3 = 0 A2 = 0 A1 = 0 0x07 0x06 0x05 0x04 data bus 0x03 8bit 0x02 8bit 0x01 0x00
Little Endian : Low Order Byte First 16bit CPU A3 = 0 A2 = 0 A1 = 0 0x07 0x06 0x05 0x04 data bus 0x03 8bit 0x02 8bit 0x01 0x00
Big Endian : High Order Byte First 16bit CPU A3 = 0 A2 = 0 A1 = 0 0x07 0x06 0x05 0x04 data bus 0x03 8bit 0x02 8bit 0x01 0x00