1 / 77

CPU 의 이해

CPU 의 이해. CPU 란 무엇인가 ?. dolicom@naver.com http://blog.naver.com/dolicom. CPU 란 무엇인가 ?. 프로그램에 따라 실행되는 상태 제어기 이미 작성된 프로그램에 의해 작동 전자 장치 제어의 두뇌 전자의 디지털 기술을 이용 수학적 처리를 기반으로 작동 (2 진수 ) IT 및 정보처리의 핵심. 인텔 CPU 와 무어 ( Moore) 의 법칙. CPU 의 진화 - 숫자의 표현.

ziazan
Download Presentation

CPU 의 이해

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CPU의 이해 CPU란 무엇인가? dolicom@naver.com http://blog.naver.com/dolicom

  2. CPU란 무엇인가? • 프로그램에 따라 실행되는 상태 제어기 • 이미 작성된 프로그램에 의해 작동 • 전자 장치 제어의 두뇌 • 전자의 디지털 기술을 이용 • 수학적 처리를 기반으로 작동(2진수) • IT 및 정보처리의 핵심

  3. 인텔 CPU와 무어(Moore)의 법칙

  4. CPU의 진화-숫자의 표현 • 4비트 – 4040 간단한 장치 제어(전화기,…) • 8비트 – 8080, 8051 • 16비트 – 8086, 80286(PC) • 32비트 - 80386 • 64비트 –최근 64비트 • DSP CPU –고속 수학계산을 필요한 장치 • TI사의 TMS32시리즈 • Floating-Point (실수자료형 레지스터 & ALU)

  5. CPU 발전 인텔 4비트 4004 모토롤라 8008 모스텍 자일로그 8비트 6800 8080 8085 Z80 6502 6809 8086 6510 68000 Z8000 16비트 8088 80186 80286 68020 80386 Z80000 32비트 80860 68030 80486 RISC 68040 88000 RISC Pentium4 Core2 –IA64 64비트

  6. CPU의 진화2 * 임베디드 RISC CISC MOS technology intel motorola Zilog 4004 4040 (intel) 4비트 8051*(Intel) 6800 (Motorola) Z80 (Zilog) 8008 8080 8085 6502 (MOS Technology) Apple-II 8비트 AVR* (Atmel) 8086 8088(IBM-PC/XT) 80286(IBM –PC/AT) (intel) 68000(16/32) (Motorola) 16비트 68020 68030 68040 (Motorola) PowerPC(IBM) MPC860(Motorola)* 80386 80486 Pentium (intel,AMD) 32비트 (MAC) AVR32* ARM*

  7. Intel Pentium4 2005년 1.69억TR 3.73GHz 90nm공정 2MB SRAM

  8. PC (Personal Compter) IBM-PC(XT) 8088 Apple-II 6502 8비트 16비트 IBM-PC(AT) 80286 Mac 680x0계열 (Motorola) 16/32비트 IBM-PC 80486 IA-32 : 32비트 IBM-PC PentiumPro,2,3,4 Mac PowerPC (IBM) IA-32 : 32비트 MMX(멀티메디어,3D그래픽) 32비트 64비트 -AMD64 -Pentium4(EM64T) IA-64 Dual CPU -Pentium D(Pentium4x2) -Core2 -AMD64 X2 IBM-PC Pentium(D,EM64T) Mac (Intel) IBM-PC Core2

  9. Apple-II / MAC • Apple-II (1977/June 6) • MOS Technology 6502, 1MHz • 4KB RAM 메모리 • BASIC (인터프리터-ROM에 존재) • Video-24라인/40컬럼 Monochrome, 대문자text • NTSC 호환 • 1978- External 5¼” floppy disk • Apple DOS –Diskette drive • Apple-II Plus (1979) • 48KB RAM, 12KB ROM, 4KB IO • Language Card – UCSD Pascal, FORTAN 77

  10. IBM-PC • IBM-PC /XT (1983) • Intel 8088, 4.77MHz • 128KB 메모리 • 360KB double-sided 5 ¼” floppy disk • Socket 8087(FPU) coprocessor • IBM-PC / AT (1984) • Intel 80288, 8MHz • 256KB ~ 16MB • 1.2MB 5¼” floppy disk • 20MB Hard Disk • PC-DOS3.0 • Enhanced Graphics Adapter – 640x350(16C/64p)

  11. CISC와 RISC • CISC • Complex Instruction Set Computer • x86, 68000, VAX • 반RISC의 의미가 애매해 짐 • 486 -> Pipelined CISC • 더 작아지는 mirco-operations(명령을 실행을 위한 CPU내의 코드) • RISC : 명령 축소 • Reduced Instruction Set Computer • 고속 실행을 목적으로 • AVR,PIC, ARM, PowerPC, SPARC • 최근 들어 2개의 경계가 불분명 해 짐

  12. CPU의 동작 요소 • CPU • 메모리 (ROM,RAM) • 특정 목적 지원 프로그램 • IO 장치 (입출력 장치, 통신 장치) • KEYPAD • LCD • Ethernet (LAN) • USB • 기타

  13. CPU 시스템 구조 8051 PC 장치 8051 core ROM/FLASH Timer • 레지스터 • ALU • FLAG UART 통신 Serial RAM IO 모듈 • CPU에서 동작하는 모든 프로그램은 반드시 메모리에 적제되어 있어야 한다. ROM이나 RAM 중 어느 한곳에 있어도 상관 없다. • 키패드 • LCD • USB

  14. 메모리 종류 • ROM • Mask ROM : 생산 시 고정된 데이터로 칩이 만들어 진다. 따라서 롬라이터로 쓰기가 불가능 하다. 주로 대량생산에 사용. • PROM (Programmable ROM): 생산 시 데이터로 없이 만들어 지고, 롬라이터로 쓰기하면 변경 불가능 하다. • EPROM (Erasable PROM): 롬 라이터로 데이터(프로그램)을 쓰고 자외선으로 지워재 프로그램 가능. • EEPROM (Electrically EPROM): 동작 중 쓰기가 가능하여, 시스템의 특정 정보를 담는것이 주 목적이다. (RAM에 비해 쓰기 속도 저하, 쓰기 복잡) • RAM • SRAM(Static RAM): 쓰기와 읽기가 가능. 전기가 공급되면 데이터 유지 • DRAM (Dynamic RAM): 쓰기와 읽기가 가능. 전기가 공급되어도 일정 시간이 지나면 데이터가 사라짐. 주기적 리프레쉬(refresh)가 필요. • FLASH • 읽기와 쓰기가 가능하고 전원이 없어도 데이터가 사라지지 않음. RAM에 비해 쓰기가 복잡. CPU에 의한 쓰기 프로그램이 필요. • 최근 임베디드 시스템은 거의 이 메모리 사용. • PC의 롬바이어스도 이 메모리 사용. (초기 PCPROM/EPROM) –바이러스

  15. EPROM 소켓을 이용 장착 데이터를 쓸 때는 별도의 장치를 이용한다. 따라서 소켓을 쓰는 것이 일반적 데이터를 삭제할 때 자외선을 이용한다. 자외선이 통과하도록 창이 열려 있다. -데이터가 지워지면 모두 0xFF 됨

  16. DRAM 메모리 종류 • DRAM의 분류 : SRAM보다 구조가 단순하고 고밀도, 가격 저렴. • DRAM : 초기의 메모리. • SDRAM • SDRAM :DRAM보다 엑세스 속도 증가를 위해 클럭을 사용하여 읽고 쓰는 시간을 동기화 한다.두클럭에 데이터를 한번 억세스 한다. • DDR SDRAM : SDRAM 보다 속도를 높이기 위해 한 클럭 동안 엑세스 한다. • DDR2 SDRAM : 클럭의 속도를 2배 높여 억세스 한다. 진화

  17. CPU 시스템 구성 요소 I-I • Timer • 전자적 논리회로에 의해 하드웨어적으로 구현되며 정확한 클럭과 시간을 얻을 수 있다. • CPU 프로그램과 연결되어 수백 us ~ 수백msec 처리 가능. • 하드웨어적 고속 클럭 처리가 가능. 하드웨어적 처리에 의한 클럭. • UART(RS-232C) • 시리얼 통신을 위한 모듈로 컴퓨터간 통신을 위해 컴퓨터 초기부터 구현되어온 방식이다. • 모뎀과 연결되어 전화선을 통한 원거리 통신 가능. • CPU의 프로그램을 전송하거나 실행되는 상황을 PC로 전송-debug 툴로도 사용.

  18. CPU 시스템 구성 요소 I-2 • SPI • 장치(칩) 사이의 통신을 위해 시리얼 통신 방식. • 데이터 신호와 함께 전송을 시점을 알리는 클럭이 전송. • UART 보다 고속 처리가 가능. • 시스템내의 칩과 칩사이 , 모듈과 모듈사이의 통신에 사용 • USB • 시리얼 통신 중 가장 최근에 개발된 방식. • 전송 속도가 높아 장치간의 많은 데이터 전송하는데 유리. • 신호선과 함께 전원도 공급되어 간단한 장치 개발에 유리. • CPU의 프로그램을 전송하거나 실행되는 상황을 PC로 전송-debug 툴로도 사용.

  19. CPU 시스템 구성 요소 II • Keypad: 장치의 제어를 위한 가장 일반적인 입력 장치. • 핸드폰의 번호 키. 컴퓨터의 키보드 • LCD: 시스템의 상태를 표시하는 출력 장치 • STN : 흑백의 무 칼라 표시 장치 • 문자형 : 주어진 폰트의 내용을 출력한다. ASCII 코드 출력. • 그래픽형: 픽셀 단위의 그래픽 처리가 가능한 표시장치 • TFT-LCD : 칼라 표시를 지원하면 그래픽 처리가 가능 • LAN(Ethernet) • 근거리 통신망을 구성하여 컴퓨터간의 통신 • 가장 대표적 통신망

  20. CPU와 임베디드 • CPU와 보조 모듈의 물리적 구성 • CPU의 종류에 따라 많은 차이가 있다. • CPU와 각 모듈을 하나의 칩으로 만든다. • 장치의 크기 및 이동성등을 고려하여 구성 • 장치의 특성에 맞는 구성 CPU을 찾아 개발. • MCU (Micro Controller Unit) • CPU와 기본적인 모듈을 한 칩에 구현 • 보통 장치 제어용 CPU을 말함. • 임베디드 • MCU와 비슷한 개념으로 CPU와 모듈을 모아 하나의 칩으로 구현 • 최근 이 말은 OS와 결합되어 구성되는 의미가 강함 • Windows CE, linux 포팅

  21. MCU와 임베디드 • CPU의 형상과 칩의 구성 • CPU의 실행 속도 향상 • 칩의 크기 및 파워 (휴대 장치, 장치 제어)

  22. MCU와 임베디드 8051과 MCU 형상

  23. 8051의 구성 - Intel 외부 인터럽트 Timer/Counter ROM 프로그램 Interrupt Control Timer 1 RAM Timer 0 CPU Serial Port Bus Control 4 I/O 포트 OSC P0 P1 P2 P3 TxD RxD Address/Data

  24. AT80C51 – www.atmel.com

  25. AT89C51 - ATMEL

  26. MCU와 임베디드 ARM과 임베디드 형상

  27. ARM9 –인텔 PXA255

  28. ARM7-삼성반도체 S3C44B0X

  29. ARM9-삼성반도체 S3C2410

  30. CPU란 무엇인가? • CPU란 논리 연산을 하는 전자 기계 • 프로그램에 동작하는 상태 머신

  31. PC:Program Counter SP:Stack Pointer CPU 코어 제어 신호 데이터 흐름 명령 해석 및 명령동작 제어부 메모리 PC 메모리 제어 SP DPTR A B data bus . . . R0,R1, … R7 FLAG 사칙연산 논리연산 쉬프트 ALU

  32. CPU의 기본 구성 • 레지스터 : CPU가 데이터를 처리를 위한 저장 • ALU : 수학적 계산을 하는 부분 • 사칙연산, 논리연산, 쉬프트 연산 • FLAG : ALU 계산 결과 flag 부분이 저장 • 명령 해석 및 명령동작 제어부 –기계어 코드를 읽고 명령을 해석하여 실행

  33. 명령어 실행-Machine Cycle • 한 명령이 실행되기 까지의 전체 시간 • Fetch-기계어 명령 읽기 • Decode- 기계어 기능 해석 • Execute- 실행 • Store- 메모리에 저장 ADD A,R0

  34. 프로그램 작성 • C 또는 어셈블리(기계어)로 작성 int cval; void Calc() { int val; val = 0; val += 2; cval = val; } 기계어 Calc: MOV A,00H ADD A,02H MOV 0A0,A . . . 74 00 25 02 F5 A0 컴파일러 어셈블러 ROM에 넣기 (시스템에 따라 ROM, FLASH, RAM)

  35. CPU의 동작 – Step 1 프로그램 • 주소 기계어 어셈블러 • ORG 0000H • 0000 74 00 MOV A,00H • 0002 25 02 ADD A,02H • 0004 F5 A0MOV 0A0,A • 0006 02 00 57JMP MAIN • 0009 02 . . . . . . 74 00 01 00 02 25 03 02 A B data bus . . . . . . FLAG ALU

  36. Step 2 – fetch기계어 명령 읽기 주소 기계어 어셈블러 ORG 0000H 0000 74 00 MOV A,00H 0030 25 02 ADD A,02H 0033 F5 A0 MOV 0A0,A 74 00 • 처음 00번지 기계어를 읽는다. • 명령어 74는 다음 데이터를 A레지스터로 옮기라는 명령으로 규정 -> 해석 01 00 PC 0000 02 25 03 02 명령어 버퍼 명령어 해석 74 A B data bus . . . . . . FLAG ALU

  37. Step 3다음 데이터 읽기 주소 기계어 어셈블러 ORG 0000H 0000 74 00 MOV A,00H 0002 25 02 ADD A,02H 0004 F5 A0 MOV 0A0,A 74 00 01 00 PC 0001 02 • 다음 1 번지의 데이터 00을 읽어 A레지스터에 넣는다. • 명령 한 개가 종료 됨. 25 03 02 명령어 버퍼 명령어 해석 74 A 00 B data bus . . . . . . FLAG ALU

  38. Step 4fetch 주소 기계어 어셈블러 ORG 0000H 0000 74 00 MOV A,00H 0030 25 02 ADD A,02H 0033 F5 A0 MOV 0A0,A • 처음 02번지 기계어를 읽는다. • 명령어 25는 다음 데이터를 A레지스터와 더하라는 명령으로 규정 -> 해석 • A+02H -> A 준비 74 PC 00 0002 01 00 명령어 버퍼 02 25 명령어 해석 25 03 02 A = 0 B data bus . . . . . . FLAG ALU

  39. Step 5ADD 실행Operand 읽기 주소 기계어 어셈블러 ORG 0000H 0000 74 00 MOV A,00H 0030 25 02 ADD A,02H 0033 F5 A0 MOV 0A0,A 74 00 PC 0003 01 00 • 처음 03번지 데이터를 읽어 opreand 버퍼에 저장. 명령어 버퍼 02 25 명령어 해석 25 03 02 Oprand 버퍼 02 A B data bus . . . . . . FLAG ALU

  40. Step 6ADD 계산 주소 기계어 어셈블러 ORG 0000H 0000 74 00 MOV A,00H 0030 25 02 ADD A,02H 0033 F5 A0 MOV 0A0,A • 처음 03번지 데이터를 읽어 opreand 버퍼에 저장. • A+02H -> A 실행 • ADD 명령 종료 PC 74 0000 00 01 00 명령어 버퍼 02 25 명령어 해석 25 03 02 Oprand 버퍼 02 A = 02 B data bus . . . . . . FLAG 설정 S=0 Z=0 C=0 V=0 00 02 ADD 명령 ALU 02

  41. Step 7fetch MOV 주소 기계어 어셈블러 0000 74 00 MOV A,00H 0002 25 02 ADD A,02H 0004 F5A0 MOV 0A0,A PC 0004 74 00 • 다음 명령 MOV을 읽는다 • MOV 명령 해석 00 01 명령어 버퍼 25 02 명령어 해석 F5 03 02 04 F5 Oprand 버퍼 02 05 A0 A = 02 09 xx B 0A xx . . . . . . 0B xx FLAG 설정 data bus ALU

  42. Step 8MOV의 주소값읽기 주소 기계어 어셈블러 0000 74 00 MOV A,00H 0002 25 02 ADD A,02H 0004 F5A0 MOV 0A0,A PC 0005 74 00 • MOV명령에서 메모리 주소값임을 해석하고 • 주소 값을 읽는다. 00 01 명령어 버퍼 25 02 명령어 해석 F5 03 02 04 F5 Oprand 버퍼 A0 05 A0 A = 02 09 xx B 0A xx . . . . . . 0B xx FLAG 설정 data bus ALU

  43. Step 9A 레지스터 쓰기 주소 기계어 어셈블러 0000 74 00 MOV A,00H 0002 25 02 ADD A,02H 0004 F5A0 MOV 0A0,A ROM 74 PC 00 0006 • MOV명령에서 메모리 주소값임을 해석하고 • 주소 값을 읽는다. 00 01 명령어 버퍼 25 02 명령어 해석 F5 03 02 04 F5 Oprand 버퍼 A0 05 A0 A = 02 09 xx B 0A 02 . . . . . . 0B xx address bus FLAG 설정 RAM data bus ALU 02

  44. CPU의 동작 순서표 ADD A,02H MOV A,00H MOV 0A0,A FETCH OPRAND FETCH OPRAND FETCH OPRAND 74 00 실행 A0 실행 25 F5 실행 02 02 데이터 write Read Read Read Read Read Read 엑세스 A0 05 04 03 01 02 00 주소

  45. CPU 동작 속도 높이기 MOV 0A0,A MOV A,00H ADD A,02H FETCH OPRAND FETCH OPRAND FETCH OPRAND F5 74 00 25 A0 실행 02 실행 데이터 74 00 실행 XX XX 파이프1 prefetch 25 00 XX 실행 XX 파이프2 F5 A0 실행 XX 파이프3 실행 02 F5 파이프4 (실제 8051은 이 개념이 적용 안된가상의 개념 임, Intel 80486, ARM등에 적용)

  46. ARM 프로그램 작성 • C 또는 어셈블리(기계어)로 작성 int cval; void Calc() { int val; val = 2; val += 3; cval = val; } 기계어 Calc: mov r0,#2 add r0,r0,#3 ldr r2, .L3 str r0, [r2, #0] . . . .L3: .word cval 0200A0E3 0310A0E3 14209FE5 000082E5 컴파일러 어셈블러 ROM에 넣기 (시스템에 따라 ROM, FLASH, RAM) ISP, JTAG, …

  47. int ival; int main() {   ival = 3;   ival += 2; } compiler ARM GAS pasm.s page 1 1 .file "func.c" 2 .text 3 .align 2 4 .global main 5 .type main, %function 6 main: 7 0000 0DC0A0E1 mov ip, sp 8 0004 00D82DE9 stmfd sp!, {fp, ip, lr, pc} 9 0008 04B04CE2 sub fp, ip, #4 10 000c 04D04DE2 sub sp, sp, #4 11 0010 FEFFFFEB bl func 12 0014 0200A0E3 mov r0, #2 13 0018 030080E2 add r0, r0, #3 14 001c 14209FE5 ldr r2, .L3 15 0020 000082E5 str r0, [r2, #0] 16 17 0024 0030A0E1 mov r3, r0 18 19 0028 10300BE5 str r3, [fp, #-16] 20 002c 10301BE5 ldr r3, [fp, #-16] 21 0030 0300A0E1 mov r0, r3 22 0034 08A89DE8 ldmfd sp, {r3, fp, sp, pc} 23 .size main, .-main 24 .align 2 25 .global func 26 .type func, %function 27 .align 2 28 .L3: 29 0038 00000000 .word ival 30 .size func, .-func 31 .comm ival,4,4 32 .ident "GCC: (GNU) 3.4.5“ 이 코드가 메모리에 전송되고 CPU가 읽어 실행하는 코드 .file "func.c" .text .align 2 .global main .type main, %function main: mov ip, sp stmfd sp!, {fp, ip, lr, pc} sub fp, ip, #4 sub sp, sp, #4 bl func mov r0, #2 add r0, r0, #3 ldr r2, .L3 str r0, [r2, #0] mov r3, r0 str r3, [fp, #-16] ldr r3, [fp, #-16] mov r0, r3 ldmfd sp, {r3, fp, sp, pc} .size main, .-main .align 2 .global func .type func, %function .align 2 .L3: .word ival .size func, .-func .comm ival,4,4 .ident "GCC: (GNU) 3.4.5" assembler ARM GAS pasm.s page 2 DEFINED SYMBOLS *ABS*:00000000 func.c pasm.s:6 .text:00000000 main pasm.s:7 .text:00000000 $a pasm.s:29 .text:00000038 $d *COM*:00000004 ival UNDEFINED SYMBOLS func

  48. ARM 명령어의 특징 • 32비트로 한 개의 기계어 명령 구성 • Operand가 32비트의 명령어와 결합 • CISC는 명령어 다음에 operand 존재 • 32비트 operand 데이터를 취급하기 위해 한 개 또는 2개의 명령어가 필요 • STACK 관련명령어가 없고, 블록 명령으로 대신 • BL : 리턴 주소값 레지스터에 대피 R14(LR) • 이에 비해 CISC는 CALL실행 시 STACK 사용.

  49. Step 0 – 프로그램 적체 memory • 주소 기계어 어셈블러 • reset: • 0000 0200A0E3 mov r0,#2 • 0004 0310A0E3 add r0,r0,#3 • 0008 14209FE5 ldr r2, .L3 • 000C 000082E5 str r0, [r2, #0] • 0010 02 . . . . . . Bus MUX 0200A0E3 00 04 0310A0E3 08 14209FE5 0c 000082E5 R0 R1 data bus . . . . . . FLAG MUL Barrel Shifter ALU

  50. Step 1 – fetch : 기계어 명령 읽기 주소 기계어 어셈블러 reset: 0000 0200A0E3 mov r0,#2 0004 0310A0E3add r0,r0,#3 0008 14209FE5ldr r2, .L3 000C 000082E5str r0, [r2, #0] • 처음 00000000번지 기계어를 읽는다. • 명령어 E3A00002는 데이터를 R0레지스터로 옮기라는 명령으로 규정 -> 해석 .00 0200A0E3 .04 0310A0E3 PC(R15) 000000000 .08 14209FE5 Addr.bus 명령어 해석 명령어 버퍼 .0C 000082E5 E3A00002 Bmux 000000002 data bus R0 R1 . . . . . . FLAG MUL Barrel Shifter ALU

More Related