Skip to content

Commit 2cb072a

Browse files
committed
docs: 컴퓨터 구조론 02
- CPU의 구조와 기능
1 parent cc40e1f commit 2cb072a

File tree

1 file changed

+143
-0
lines changed
  • docs/컴퓨터-구조론

1 file changed

+143
-0
lines changed

docs/컴퓨터-구조론/02.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
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

Comments
 (0)