CPU의 구조와 기능
1. CPU의 기본 구조와 기능
CPU(Central Processing Unit)는 컴퓨터의 두뇌 역할을 하는 핵심 부품으로, 다음과 같은 주요 기능을 수행합니다.
단계 | 설명 |
---|---|
명령어 인출 | 기억장치로부터 명령어를 읽어 옴 |
명령어 해독 | 수행해야 할 동작을 결정하기 위해 명령어를 해독 |
데이터 인출 | 명령어 실행에 필요한 데이터를 기억장치 또는 I/O에서 읽어옴 |
데이터 처리 | 산술적 또는 논리적 연산 수행 |
데이터 저장 | 수행 결과를 저장 |
명령어 인출과 해독은 모든 명령어들에 대하여 공통적으로 수행함
나머지 단계는 필요에 따라 수행됨
CPU는 크게 세 가지 주요 하드웨어 모듈과 내부 버스로 구성됩니다.
- 산술논리연산장치(ALU): +, -, ×, ÷ 등 산술 연산과 AND, OR, NOT, XOR 등 논리 연산을 수행
- 레지스터 세트: 액세스 속도가 가장 빠른 기억장치
- 일반목적용 레지스터: 연산에 필요한 데이터/결과 임시 저장
- 특수목적용 레지스터: 특별한 용도(수 제한)
- 제어 유니트(Control Unit): 프로그램 코드(명령어) 해석 및 실행 제어 신호 발생
- CPU 내부 버스: ALU와 레지스터, 제어 유니트 간 데이터/제어 신호 이동
외부 시스템 버스와는 직접 연결되지 않으며, 버퍼 레지스터 또는 시스템 버스 인터페이스 회로를 통해 연결됩니다.
2. 명령어 실행
CPU는 프로그램 실행을 시작한 순간부터 전원이 꺼지거나 복구 불가능한 오류가 발생할 때까지 명령어 사이클(instruction cycle) 을 반복합니다.
명령어 사이클은 크게 두 가지 부 사이클로 나뉩니다:
- 인출 사이클(fetch cycle): 기억장치로부터 명령어를 읽어오는 단계
- 실행 사이클(execution cycle): 명령어를 실행하는 단계
명령어 실행에 필요한 주요 레지스터
레지스터 | 역할 |
---|---|
PC (Program Counter) | 다음에 인출할 명령어의 주소 저장, 분기 시 목적지 주소로 갱신 |
AC (Accumulator) | 데이터 임시 저장, CPU 데이터 비트 수와 동일한 길이 |
IR (Instruction Register) | 최근 인출된 명령어 코드 저장 |
MAR (Memory Address Register) | 명령어 주소 임시 저장, 시스템 주소 버스 출력 전 사용 |
MBR (Memory Buffer Register) | 기억장치에 쓰거나 읽은 데이터 임시 저장 |
단계별 명령어 사이클 (마이크로 연산)
인출 사이클 예시
t0: MAR <- PC
// 현재 PC 내용을 MAR로 전송
t1: MBR <- M[MAR], PC <- PC + 1
// MAR이 지정한 기억장치 위치에서 명령어 읽어 MBR에 적재, PC 증가
t2: IR <- MBR
// MBR의 명령어 코드를 IR로 이동
예시: CPU 클록 주파수 1GHz(1ns)라면 인출 사이클은 3ns 소요
실행 사이클 예시
- LOAD addr: 기억장치 데이터를 AC로 이동
t0: MAR <- IR(addr)
t1: MBR <- M[MAR]
t2: AC <- MBR
- STA addr: AC 내용을 기억장치에 저장
t0: MAR <- IR(addr)
t1: MBR <- AC
t2: M[MAR] <- MBR
- ADD addr: 기억장치 데이터를 AC와 더해 결과를 AC에 저장
t0: MAR <- IR(addr)
t1: MBR <- M[MAR]
t2: AC <- AC + MBR
- JUMP addr: 실행 순서 분기
t0: PC <- IR(addr)
인터럽트 사이클
인터럽트(interrupt): 프로그램 실행 중 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작
- CPU는 현재 프로그램 수행을 중단하고, 인터럽트 서비스 루틴(ISR)을 먼저 수행
- 복귀 시 필요한 정보(context) 저장, 인터럽트 소스 확인, ISR 준비
인터럽트 사이클 마이크로 연산
t0: MBR <- PC
t1: MAR <- SP, PC <- ISR 시작 주소
t2: M[MAR] <- MBR
// SP: 스택 포인터, 저장 후 1 감소
- 다중 인터럽트: ISR 수행 중 다른 인터럽트 발생
- 처리 방법 1: 인터럽트 비활성화(플래그 0)
- 처리 방법 2: 우선순위 기반(더 높은 우선순위 인터럽트가 발생하면 현재 ISR 중단 후 처리)
간접 사이클
간접 사이클: 명령어에 포함된 주소를 이용해 실제 데이터 주소를 인출하는 사이클(간접 주소지정 방식)
t0: MAR <- IR(addr)
t1: MBR <- M[MAR]
t2: IR(addr) <- MBR
3. 요약
- CPU의 기본 구조: ALU, 레지스터 세트, 제어 유니트, 내부 버스
- 명령어 실행: 인출, 해독, 데이터 인출, 처리, 저장
- 주요 레지스터: PC, AC, IR, MAR, MBR
- 명령어 사이클(인출/실행) 반복
- 인터럽트: 프로그램 실행 중단 및 ISR 처리, 다중 인터럽트 비활성화 또는 우선순위 방식
- 간접 사이클: 간접 주소지정 방식에서 실제 데이터 주소 인출