중앙처리장치의 개요
중앙처리장치의 정의
중앙처리장치는 컴퓨터 시스템의 핵심 부분으로서 각종 연산을 수행하며 기억장치에 저장된 명령을 읽어 수행하는 역할을 하는 컴퓨터 핵심 구성 요소
중앙처리장치의 특징
- CPU: Arithmetic Unit과 Control Unit으로 구성
- 폰 노이만 컴퓨터 구조: 주기억장치, 중앙처리장치, 입출력장치
- 하버드 구조: 폰 노이만 병목 현상에 대한 대안으로 데이터 메모리와 프로그램 메모리를 분리
중앙처리장치의 구성
중앙처리장치의 연산장치 (ALU: Arithmetic Logic Unit)
- 산술 및 부울 논리 연산기(Arithmetic and Boolean Logic): 산술연산(덧셈, 뺄셈, 곱셈, 나눗셈)과 논리연산(AND, OR, NOT, XOR)을 수행하는 회로
- 상태 플래그(Status Flags): 연산 중인 산술 논리 연산장치 내의 데이터 상태를 표시
- 이동기(Shifter): 데이터 비트를 좌우로 비트별로 이동시킴
- 보수기(Complementer): 산술 논리 연산장치 내의 데이터에 대해 보수 연산을 수행
중앙처리장치의 제어장치 (CU: Control Unit)
- 컴퓨터 시스템을 구성하는 각종 장치 간의 동작을 제어
- 주기억장치에 저장된 명령어를 하나씩 꺼내기 위한 레지스터와 명령코드, 주서번지 해독기, 프로그램 카운터 필요
중앙처리장치의 레지스터와 스택
- 레지스터는 중앙처리장치 내부에 위치한 기억장치
- 연산장치나 제어장치의 실행 도중 중간 데이터 값을 일시적으로 저장
- 주기억장치에서 읽어 온 명령어와 데이터를 임시 보관
- 스택은 CPU 내부의 레지스터 집합에 존재하는 저장장치
- 데이터가 순차적으로 저장되며 요소의 개수와 스택의 길이는 가변적
- LIFO(Last-In-First-Out) 특징을 가짐
중앙처리장치의 내부 CPU 버스
- 중앙처리장치 내에서 데이터 전달 기능을 수행
- 데이터 버스: 실질적인 데이터의 전달
- 제어 버스: 제어장치에서 발생되는 신호를 전달
- 내부 CPU 버스는 중앙처리장치 밖의 시스템 버스들과 연결되지 않음
중앙처리장치의 기능 및 동작
중앙처리장치의 기능
분류 |
기능 |
상세 설명 |
공통 기능 |
명령어 인출(Instruction Fetch) |
주기억장치에 저장되어 있는 명령어를 읽어오는 기능 |
~ |
명령어 해독(Instruction Decode) |
명령어에 대한 수행 동작을 결정하기 위해 인출된 명령어를 해독하는 과정 |
추가 기능 |
데이터 인출(Data Fetch) |
명령어 실행을 위해 데이터가 필요한 경우, 기억장치 또는 입출력장치에서 그 데이터를 읽어오는 과정 |
~ |
데이터 처리(Data Process) |
읽어온 데이터에 대한 산술적 또는 논리적 연산을 수행 |
~ |
데이터 저장(Data Store) |
데이터 처리 과정에서의 수행 결과를 저장하는 기능 |
중앙처리장치의 동작
- 중앙처리장치가 처리해야 할 데이터는 주기억장치의 RAM이 인출되고, 외부 시스템 버스를 통해 레지스터 A번으로 전달
- 제어장치는 새롭게 저장된 레지스터 A번 데이터와 이전부터 저장하고 있던 레지스터 B번 데이터를 연산하라는 제어신호를 ALU에 전달
- ALU에서는 제어신호에 의해 연산을 수행하고 그 결과를 누산기(Accumulator)에 저장
- 연산 결과는 외부 시스템 버스를 통해서 다시 주기억장치로 전달
중앙처리장치의 유형
분류 |
항목 |
상세 설명 |
기능 |
MPU |
중앙처리장치에서 주기억장치를 제외한 연산장치, 제어장치 등을 단 한 개의 직접회로에 구성 |
~ |
MCU |
한 개의 집 내에 중앙처리장치는 물론 일정한 용량의 메모리와 입출력 제어 인터페이스 회로까지 내장 |
~ |
DSP |
디지털 신호를 하드웨어적으로 처리할 수 있는 직접회로로 구성된 프로세서 |
비트수 |
8비트 |
1970년대 개발된 마이크로 프로세서, 8개의 데이터 버스, 레지스터 기본 길이가 8비트 |
~ |
16비트 |
1980년대 초의 마이크로 프로세서, 모토로라 68000, 인텔 8086 계열 |
~ |
32비트 |
1980년대 중반 이후 개발된 마이크로 프로세서, IBM과 모토로라가 개발한 파워PC, 인텔 i486, 펜티엄 계열 |
~ |
64비트 |
MIPS의 R4000, R10000, 인텔 6XX 계열 |
명령어 집합 |
CISC |
복잡한 명령어를 지원하는 중앙처리장치, 386, 486 등 인텔 계열에서 사용 |
~ |
RISC |
단순한 명령어 세트를 지원하는 프로세서, 빠르게 수행되는 제한된 수의 간단한 명령어만이 내재 |
~ |
EISC |
국내에서 개발된 임베디드 프로세서용 RISC 기반 프로세서 |
CISC, RISC, EISC 비교
구분 |
CISC |
RISC |
EISC |
CPU 명령어 |
명령어 개수가 많고, 길이가 다양, 실행사이클 다름 |
명령어 개수가 적고, 길이가 고정적, 실행사이클 동일 |
16비트 명령을 사용해 32비트 데이터 처리 |
회로 구성 |
복잡 |
단순 |
단순 |
메모리 사용 |
높은 밀도, 효율적 |
낮은 밀도, 비효율적 |
높은 코드 밀도 (임베디드에 유리) |
프로그램 측면 |
명령어 적게 사용 |
상대적으로 많은 명령어, 파이프라인 사용 |
RISC보다 더 깊은 파이프라인 |
컴파일러 |
복잡 |
단순 |
국산 기술 |