|
| 1 | +--- |
| 2 | +sidebar_position: 2 |
| 3 | +title: CPU의 구조와 기능 |
| 4 | +--- |
| 5 | + |
| 6 | +## 1. CPU의 기본 구조와 기능 |
| 7 | + |
| 8 | +CPU(Central Processing Unit)는 컴퓨터의 두뇌 역할을 하는 핵심 부품으로, 다음과 같은 주요 기능을 수행합니다. |
| 9 | + |
| 10 | +| 단계 | 설명 | |
| 11 | +| ----------- | ---------------------------------------------------------- | |
| 12 | +| 명령어 인출 | 기억장치로부터 명령어를 읽어 옴 | |
| 13 | +| 명령어 해독 | 수행해야 할 동작을 결정하기 위해 명령어를 해독 | |
| 14 | +| 데이터 인출 | 명령어 실행에 필요한 데이터를 기억장치 또는 I/O에서 읽어옴 | |
| 15 | +| 데이터 처리 | 산술적 또는 논리적 연산 수행 | |
| 16 | +| 데이터 저장 | 수행 결과를 저장 | |
| 17 | + |
| 18 | +> 명령어 인출과 해독은 모든 명령어들에 대하여 공통적으로 수행함<br/ > |
| 19 | +> 나머지 단계는 필요에 따라 수행됨 |
| 20 | +
|
| 21 | +CPU는 크게 **세 가지 주요 하드웨어 모듈**과 **내부 버스**로 구성됩니다. |
| 22 | + |
| 23 | +- **산술논리연산장치(ALU)**: +, -, ×, ÷ 등 산술 연산과 AND, OR, NOT, XOR 등 논리 연산을 수행 |
| 24 | +- **레지스터 세트**: 액세스 속도가 가장 빠른 기억장치 |
| 25 | + - _일반목적용 레지스터_: 연산에 필요한 데이터/결과 임시 저장 |
| 26 | + - _특수목적용 레지스터_: 특별한 용도(수 제한) |
| 27 | +- **제어 유니트(Control Unit)**: 프로그램 코드(명령어) 해석 및 실행 제어 신호 발생 |
| 28 | +- **CPU 내부 버스**: ALU와 레지스터, 제어 유니트 간 데이터/제어 신호 이동 |
| 29 | + |
| 30 | +> 외부 시스템 버스와는 직접 연결되지 않으며, 버퍼 레지스터 또는 시스템 버스 인터페이스 회로를 통해 연결됩니다. |
| 31 | +
|
| 32 | +--- |
| 33 | + |
| 34 | +## 2. 명령어 실행 |
| 35 | + |
| 36 | +CPU는 프로그램 실행을 시작한 순간부터 전원이 꺼지거나 복구 불가능한 오류가 발생할 때까지 **명령어 사이클(instruction cycle)** 을 반복합니다. |
| 37 | + |
| 38 | +명령어 사이클은 크게 두 가지 부 사이클로 나뉩니다: |
| 39 | + |
| 40 | +- **인출 사이클(fetch cycle)**: 기억장치로부터 명령어를 읽어오는 단계 |
| 41 | +- **실행 사이클(execution cycle)**: 명령어를 실행하는 단계 |
| 42 | + |
| 43 | +### 명령어 실행에 필요한 주요 레지스터 |
| 44 | + |
| 45 | +| 레지스터 | 역할 | |
| 46 | +| ----------------------------- | ------------------------------------------------------------ | |
| 47 | +| PC (Program Counter) | 다음에 인출할 명령어의 주소 저장, 분기 시 목적지 주소로 갱신 | |
| 48 | +| AC (Accumulator) | 데이터 임시 저장, CPU 데이터 비트 수와 동일한 길이 | |
| 49 | +| IR (Instruction Register) | 최근 인출된 명령어 코드 저장 | |
| 50 | +| MAR (Memory Address Register) | 명령어 주소 임시 저장, 시스템 주소 버스 출력 전 사용 | |
| 51 | +| MBR (Memory Buffer Register) | 기억장치에 쓰거나 읽은 데이터 임시 저장 | |
| 52 | + |
| 53 | +### 단계별 명령어 사이클 (마이크로 연산) |
| 54 | + |
| 55 | +#### 인출 사이클 예시 |
| 56 | + |
| 57 | +```text |
| 58 | +t0: MAR <- PC |
| 59 | +// 현재 PC 내용을 MAR로 전송 |
| 60 | +t1: MBR <- M[MAR], PC <- PC + 1 |
| 61 | +// MAR이 지정한 기억장치 위치에서 명령어 읽어 MBR에 적재, PC 증가 |
| 62 | +t2: IR <- MBR |
| 63 | +// MBR의 명령어 코드를 IR로 이동 |
| 64 | +``` |
| 65 | + |
| 66 | +> 예시: CPU 클록 주파수 1GHz(1ns)라면 인출 사이클은 3ns 소요 |
| 67 | +
|
| 68 | +#### 실행 사이클 예시 |
| 69 | + |
| 70 | +- **LOAD addr**: 기억장치 데이터를 AC로 이동 |
| 71 | + |
| 72 | +```text |
| 73 | +t0: MAR <- IR(addr) |
| 74 | +t1: MBR <- M[MAR] |
| 75 | +t2: AC <- MBR |
| 76 | +``` |
| 77 | + |
| 78 | +- **STA addr**: AC 내용을 기억장치에 저장 |
| 79 | + |
| 80 | +```text |
| 81 | +t0: MAR <- IR(addr) |
| 82 | +t1: MBR <- AC |
| 83 | +t2: M[MAR] <- MBR |
| 84 | +``` |
| 85 | + |
| 86 | +- **ADD addr**: 기억장치 데이터를 AC와 더해 결과를 AC에 저장 |
| 87 | + |
| 88 | +```text |
| 89 | +t0: MAR <- IR(addr) |
| 90 | +t1: MBR <- M[MAR] |
| 91 | +t2: AC <- AC + MBR |
| 92 | +``` |
| 93 | + |
| 94 | +- **JUMP addr**: 실행 순서 분기 |
| 95 | + |
| 96 | +```text |
| 97 | +t0: PC <- IR(addr) |
| 98 | +``` |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +### 인터럽트 사이클 |
| 103 | + |
| 104 | +**인터럽트(interrupt)**: 프로그램 실행 중 CPU의 현재 처리 순서를 중단시키고 다른 동작을 수행하도록 요구하는 시스템 동작 |
| 105 | + |
| 106 | +- CPU는 현재 프로그램 수행을 중단하고, 인터럽트 서비스 루틴(ISR)을 먼저 수행 |
| 107 | +- 복귀 시 필요한 정보(context) 저장, 인터럽트 소스 확인, ISR 준비 |
| 108 | + |
| 109 | +#### 인터럽트 사이클 마이크로 연산 |
| 110 | + |
| 111 | +```text |
| 112 | +t0: MBR <- PC |
| 113 | +t1: MAR <- SP, PC <- ISR 시작 주소 |
| 114 | +t2: M[MAR] <- MBR |
| 115 | +// SP: 스택 포인터, 저장 후 1 감소 |
| 116 | +``` |
| 117 | + |
| 118 | +- **다중 인터럽트**: ISR 수행 중 다른 인터럽트 발생 |
| 119 | + - 처리 방법 1: 인터럽트 비활성화(플래그 0) |
| 120 | + - 처리 방법 2: 우선순위 기반(더 높은 우선순위 인터럽트가 발생하면 현재 ISR 중단 후 처리) |
| 121 | + |
| 122 | +--- |
| 123 | + |
| 124 | +### 간접 사이클 |
| 125 | + |
| 126 | +**간접 사이클**: 명령어에 포함된 주소를 이용해 실제 데이터 주소를 인출하는 사이클(간접 주소지정 방식) |
| 127 | + |
| 128 | +```text |
| 129 | +t0: MAR <- IR(addr) |
| 130 | +t1: MBR <- M[MAR] |
| 131 | +t2: IR(addr) <- MBR |
| 132 | +``` |
| 133 | + |
| 134 | +--- |
| 135 | + |
| 136 | +## 3. 요약 |
| 137 | + |
| 138 | +- CPU의 기본 구조: ALU, 레지스터 세트, 제어 유니트, 내부 버스 |
| 139 | +- 명령어 실행: 인출, 해독, 데이터 인출, 처리, 저장 |
| 140 | +- 주요 레지스터: PC, AC, IR, MAR, MBR |
| 141 | +- 명령어 사이클(인출/실행) 반복 |
| 142 | +- 인터럽트: 프로그램 실행 중단 및 ISR 처리, 다중 인터럽트 비활성화 또는 우선순위 방식 |
| 143 | +- 간접 사이클: 간접 주소지정 방식에서 실제 데이터 주소 인출 |
0 commit comments