icon

안동민 개발노트

4장 : 컴퓨터구조

CPU, 레지스터, 명령어 사이클, 기억장치

컴퓨터구조 학습 절입니다.

4장 1절에서는 컴퓨터의 기본 구조를 배웠습니다.

CPU
기억장치
입출력장치
시스템 버스
명령어
주소 지정 방식

이번 절에서는 그중에서도 CPU가 실제로 명령어를 어떻게 실행하는지를 배웁니다.

이번 절의 핵심은 다음과 같습니다.

CPU = 명령어를 실행하는 장치
레지스터 = CPU 내부의 초고속 임시 저장소
명령어 사이클 = 명령어를 가져오고 실행하는 반복 과정
기억장치 계층 = 빠른 저장장치와 큰 저장장치를 층으로 구성한 구조

이 내용은 컴퓨터구조 출제범위의 중앙처리장치 구성요소, 명령어 사이클, 마이크로 연산, 명령어 인출 사이클, 실행 사이클, 명령어 파이프라이닝, RISC와 CISC, 기억장치 계층구조, RAM, ROM, 캐시, 가상기억장치와 직접 연결됩니다. 운영체제에서도 컴퓨터 시스템 개요, 명령어 수행, 인터럽트, 기억장치 계층구조, 캐시 기억장치, 주기억장치 관리, 가상기억장치를 다룹니다.


이번 절의 큰 그림

이번 절에서 배울 흐름은 다음과 같습니다.

CPU 구성요소
→ ALU, 제어장치, 레지스터, 내부버스
→ 주요 레지스터
→ 마이크로 연산
→ 명령어 사이클
→ 인출 사이클
→ 실행 사이클
→ 인터럽트 사이클
→ 파이프라이닝
→ RISC와 CISC
→ 기억장치 계층구조
→ RAM, ROM, 캐시, 가상기억장치

4장 1절이 “명령어가 어떻게 생겼는가”였다면, 4장 2절은 “CPU가 그 명령어를 실제로 어떻게 처리하는가”입니다.


CPU 구성

CPU란?

CPU는 Central Processing Unit, 중앙처리장치입니다.

한 문장으로 말하면: CPU는 메모리에서 명령어를 가져와 해석하고 실행하는 장치입니다.

CPU가 하는 일은 크게 세 가지입니다.

1. 명령어를 가져옵니다.
2. 명령어를 해석합니다.
3. 명령어를 실행합니다.

예를 들어 메모리에 이런 명령어가 있다고 가정하겠습니다.

LOAD A
ADD B
STORE C

CPU는 이것을 순서대로 처리합니다.

A 값을 가져옵니다.
B 값을 더합니다.
결과를 C에 저장합니다.

즉 CPU는 컴퓨터의 “두뇌”라고 부르지만, 더 정확히는 명령어 처리 장치입니다.


CPU의 구성요소

CPU는 크게 네 부분으로 볼 수 있습니다.

구성요소역할
ALU, 산술논리장치계산과 논리 연산 수행
제어장치, CU명령어 해석과 제어신호 발생
레지스터CPU 내부의 빠른 임시 저장소
내부버스CPU 내부에서 데이터 이동

컴퓨터구조 범위에서도 중앙처리장치 구성요소로 산술논리장치, 레지스터, 제어장치, 내부버스가 제시되어 있습니다.

짧게 외우면
ALU = 계산
제어장치 = 지휘
레지스터 = 임시 저장
내부버스 = CPU 안의 길

ALU, 산술논리장치

ALU는 Arithmetic Logic Unit입니다.

이름 그대로 두 가지 일을 합니다.

산술 연산
논리 연산

산술 연산

숫자 계산입니다.

덧셈
뺄셈
곱셈
나눗셈
증가
감소
A + B
A - B
A * B

논리 연산

참/거짓 또는 비트 단위 연산입니다.

AND
OR
NOT
XOR
비교
시프트
1010 AND 1100 = 1000

1장 3절에서 배운 논리게이트가 CPU 내부의 ALU와 연결됩니다.

논리게이트 → 논리회로 → ALU

제어장치, CU

제어장치는 Control Unit입니다.

제어장치는 CPU 안에서 지휘자 역할을 합니다.

역할
명령어를 해석합니다.
어떤 장치가 언제 동작할지 지시합니다.
제어신호를 발생시킵니다.
데이터 이동 순서를 조정합니다.

예를 들어 명령어가 다음과 같다고 가정하겠습니다.

ADD B

제어장치는 이 명령어를 해석합니다.

“B 값을 가져와서 ALU로 보내라.”
“ALU에게 덧셈을 하라고 지시하라.”
“결과를 레지스터에 저장하라.”

즉 제어장치는 직접 계산하지 않습니다. 계산은 ALU가 합니다.

제어장치는 “누가 언제 무엇을 해야 하는지” 지시합니다.


레지스터

레지스터는 CPU 내부에 있는 아주 빠른 임시 저장소입니다.

메모리보다 훨씬 빠르지만 용량은 매우 작습니다.

레지스터 = CPU 안의 초고속 메모장

CPU가 연산하려면 데이터를 잠깐 저장할 곳이 필요합니다.

예를 들어
A + B

를 계산하려면 CPU는 A와 B 값을 가져와서 잠깐 저장하고, ALU가 더한 결과도 잠깐 저장해야 합니다.

이때 쓰는 것이 레지스터입니다.


내부버스

내부버스는 CPU 내부에서 데이터가 이동하는 통로입니다.

CPU 안에도 여러 부품이 있습니다.

레지스터
ALU
제어장치

이 부품들 사이에서 데이터가 이동해야 합니다.

레지스터 → ALU
ALU → 레지스터
제어장치 → 각 장치

이 통로가 내부버스입니다.

4장 1절에서 시스템 버스를 배웠습니다.

시스템 버스 = CPU와 메모리, 입출력장치 사이의 길
내부버스 = CPU 내부의 길

주요 레지스터

주요 레지스터 종류

CPU에는 여러 종류의 레지스터가 있습니다.

시험에서 중요한 레지스터는 다음과 같습니다.

레지스터이름역할
PC프로그램 카운터다음에 실행할 명령어 주소 저장
IR명령어 레지스터현재 실행 중인 명령어 저장
MAR메모리 주소 레지스터접근할 메모리 주소 저장
MBR/MDR메모리 버퍼/데이터 레지스터메모리에서 읽거나 쓸 데이터 저장
AC누산기연산 결과 임시 저장
SP스택 포인터스택의 top 위치 저장
PSW/Flag상태 레지스터연산 결과 상태 저장
GPR범용 레지스터일반 데이터 임시 저장

하나씩 살펴보겠습니다.


PC, 프로그램 카운터

PC는 Program Counter다.

역할: 다음에 실행할 명령어의 주소를 저장합니다.

예를 들어 메모리에 명령어가 이렇게 있다고 가정하겠습니다.

100번지: LOAD A
101번지: ADD B
102번지: STORE C

현재 100번지 명령어를 실행하고 있다면, 다음 명령어는 101번지입니다.

그래서 PC는 보통 다음 주소를 가집니다.

PC = 101

명령어를 하나 가져오면 PC는 다음 명령어 주소로 증가합니다.

PC ← PC + 1

단, 분기 명령어가 나오면 PC는 순서대로 증가하지 않고 다른 주소로 바뀔 수 있습니다.

JUMP 200
이면
PC = 200

이 됩니다.


IR, 명령어 레지스터

IR은 Instruction Register다.

역할: 현재 실행 중인 명령어를 저장합니다.

명령어 인출 과정에서 메모리에서 가져온 명령어가 IR에 들어갑니다.

IR = LOAD A

제어장치는 IR에 들어 있는 명령어를 보고 해석합니다.

“아, LOAD 명령어구나.”
“피연산자는 A구나.”
PC = 다음 명령어 주소
IR = 현재 명령어

라고 구분하면 됩니다.


MAR, 메모리 주소 레지스터

MAR은 Memory Address Register다.

역할: 메모리에 접근할 주소를 저장합니다.

CPU가 메모리 1000번지에서 데이터를 읽고 싶다면
MAR = 1000

이 됩니다.

그리고 이 주소가 주소버스를 통해 메모리로 전달됩니다.

4장 1절에서 배운 주소버스와 연결됩니다.

MAR의 값 → 주소버스 → 메모리

즉 MAR은 “어디에 접근할 것인가”를 담는 레지스터입니다.


MBR 또는 MDR

MBR은 Memory Buffer Register, MDR은 Memory Data Register라고도 합니다.

역할: 메모리에서 읽어온 데이터 또는 메모리에 쓸 데이터를 임시 저장합니다.

예를 들어 CPU가 메모리 1000번지에서 값을 읽는다고 가정하겠습니다.

MAR = 1000
메모리 읽기
MBR = M[1000]
반대로 메모리에 값을 쓸 때는
MAR = 2000
MBR = 50
메모리 쓰기
M[2000] = 50
정리
MAR = 주소
MBR/MDR = 데이터

AC, 누산기

AC는 Accumulator, 누산기입니다.

역할: 연산 결과를 임시로 저장합니다.

4장 1절에서 이런 명령어를 봤습니다.

LOAD A
ADD B
MUL C

이때 AC 값은 이렇게 변합니다.

LOAD A → AC = A
ADD B  → AC = A + B
MUL C  → AC = (A + B) * C

1주소 명령어 방식에서는 AC를 중심으로 계산이 이루어집니다.

ADD B = AC ← AC + M[B]

시험에서 AC 추적 문제는 자주 나옵니다.


SP, 스택 포인터

SP는 Stack Pointer다.

역할: 스택의 top 위치를 저장합니다.

3장 2절에서 스택을 배웠습니다.

push = 넣기
pop = 꺼내기
top = 맨 위

CPU에서도 함수 호출, 복귀 주소 저장, 임시 데이터 저장에 스택을 사용합니다.

SP는 현재 스택의 맨 위가 어디인지 알려줍니다.

CALL 함수

를 하면 복귀 주소가 스택에 저장될 수 있고, SP가 변합니다.

RET

를 하면 스택에서 복귀 주소를 꺼내고 SP가 변합니다.

즉 스택 포인터는 함수 호출과 재귀 실행에서 중요합니다.


상태 레지스터, Flag, PSW

상태 레지스터는 연산 결과의 상태를 저장합니다.

예를 들어 ALU가 계산을 했습니다.

A - B

결과가 0이면 Zero Flag가 1이 될 수 있습니다.

대표 플래그는 다음과 같습니다.

플래그의미
Zero Flag, Z결과가 0인지 표시
Sign Flag, S결과가 음수인지 표시
Carry Flag, C자리올림 또는 빌림 발생 여부
Overflow Flag, V오버플로 발생 여부
Interrupt Flag인터럽트 허용 여부

이 플래그들은 분기 명령어와 연결됩니다.

BEQ 200
같으면 200번지로 이동

이때 “같습니다”는 보통 비교 결과가 0인지, 즉 Zero Flag를 보고 판단합니다.


범용 레지스터

범용 레지스터는 일반 데이터를 저장하는 레지스터입니다.

R0, R1, R2, R3

같은 이름으로 많이 표현합니다.

범용 레지스터는 특정 기능이 고정되어 있지 않고, 여러 용도로 사용될 수 있습니다.

R1 = A 값
R2 = B 값
R3 = A+B 결과

레지스터가 많으면 메모리에 자주 가지 않아도 되므로 빠릅니다.


레지스터 정리표

레지스터핵심 역할
PC다음 명령어 주소
IR현재 명령어
MAR메모리 주소
MBR/MDR메모리 데이터
AC연산 결과
SP스택 top 위치
Flag/PSW연산 상태
GPR일반 데이터
짧게 외우면
PC = 다음 주소
IR = 현재 명령어
MAR = 메모리 주소
MBR = 메모리 데이터
AC = 계산 결과
SP = 스택 위치
Flag = 상태 표시

마이크로 연산과 명령어 사이클

마이크로 연산

마이크로 연산은 CPU 내부에서 일어나는 아주 작은 기본 연산입니다.

컴퓨터구조 예시문제에서도 마이크로 연산을 “CPU 내부에서 제어장치에 의해 실행되는 연산이며, 하나의 클록 주기에 여러 개가 동시에 수행될 수도 있고, 원자 연산이라고도 하는 기본 단위 연산”으로 설명합니다. 정답은 마이크로 연산입니다.

예를 들어
MAR ← PC
PC ← PC + 1
IR ← MBR
AC ← AC + MBR

이런 것들이 마이크로 연산입니다.

여기서 는 오른쪽 값을 왼쪽에 저장한다는 뜻입니다.

MAR ← PC
PC 값을 MAR에 복사합니다.

라는 뜻입니다.


마이크로 연산의 종류

마이크로 연산은 크게 이런 종류가 있습니다.

종류
레지스터 전송R1 ← R2
산술 연산R1 ← R1 + R2
논리 연산R1 ← R1 AND R2
시프트 연산R1 ← R1 << 1
메모리 읽기MBR ← M[MAR]
메모리 쓰기M[MAR] ← MBR

명령어 하나는 여러 마이크로 연산으로 이루어집니다.

예를 들어
LOAD A
라는 명령어는 내부적으로
주소 계산
메모리 읽기
레지스터 저장

같은 여러 마이크로 연산으로 나뉩니다.


명령어 사이클이란?

명령어 사이클은 CPU가 명령어 하나를 처리하는 전체 과정입니다.

가장 기본적인 구조는 다음과 같습니다.

인출 사이클 → 실행 사이클
더 자세히 보면
인출 Fetch
→ 해독 Decode
→ 실행 Execute
→ 필요하면 인터럽트 처리

정의: 명령어 사이클은 CPU가 명령어를 인출하고 해석하고 실행하는 반복 과정입니다.

컴퓨터는 이 과정을 계속 반복합니다.

명령어 1개 처리
명령어 1개 처리
명령어 1개 처리
...

이것이 프로그램 실행입니다.


명령어 사이클 전체 흐름

기본 흐름은 다음과 같습니다.

1. PC가 가리키는 주소에서 명령어를 가져옵니다.
2. 가져온 명령어를 IR에 저장합니다.
3. PC를 다음 명령어 주소로 증가시킵니다.
4. 제어장치가 IR의 명령어를 해석합니다.
5. 필요한 피연산자를 가져옵니다.
6. ALU 또는 관련 장치가 명령어를 실행합니다.
7. 결과를 레지스터나 메모리에 저장합니다.
8. 인터럽트가 있으면 처리합니다.

이 흐름이 핵심입니다.


인출 사이클

인출 사이클은 Fetch Cycle입니다.

역할: 메모리에서 다음 명령어를 가져오는 과정

인출 사이클의 대표 마이크로 연산은 다음과 같이 표현할 수 있습니다.

MAR ← PC
MBR ← M[MAR]
PC ← PC + 1
IR ← MBR

하나씩 해석하자.


1단계

MAR ← PC

PC에는 다음 명령어의 주소가 들어 있습니다.

그 주소를 MAR로 보냅니다.

MAR = 명령어가 있는 메모리 주소

2단계

MBR ← M[MAR]

MAR이 가리키는 메모리 주소에서 명령어를 읽어옵니다.

읽어온 명령어는 MBR에 들어갑니다.

MBR = 메모리에서 읽은 명령어

3단계

PC ← PC + 1

다음 명령어를 가리키도록 PC를 증가시킵니다.

PC = 다음 명령어 주소

명령어 길이에 따라 +1이 아니라 더 큰 값이 될 수도 있지만, 기본 개념은 “다음 명령어로 이동”입니다.


4단계

IR ← MBR

읽어온 명령어를 IR에 저장합니다.

이제 제어장치는 IR의 명령어를 해석할 수 있습니다.


인출 사이클 한 줄 요약

인출 사이클은 다음과 같이 암기합니다.

PC의 주소를 MAR로 보냅니다.
메모리에서 명령어를 읽어 MBR에 넣습니다.
PC를 증가시킵니다.
MBR의 명령어를 IR에 넣습니다.
짧게
PC → MAR → 메모리 → MBR → IR

이 흐름을 이해해야 합니다.


실행 사이클

실행 사이클은 Execute Cycle입니다.

역할: IR에 들어 있는 명령어를 실제로 수행하는 과정

실행 사이클은 명령어 종류에 따라 다릅니다.

예를 들어
LOAD A
ADD B
STORE C
JUMP 100

은 서로 실행 방식이 다릅니다.

그래서 실행 사이클은 명령어마다 다르게 구성됩니다.


LOAD 명령어 실행 예

명령어
LOAD A
AC ← M[A]
실행 과정
1. A의 주소를 MAR에 넣습니다.
2. 메모리에서 A 값을 읽어 MBR에 넣습니다.
3. MBR 값을 AC에 넣습니다.
마이크로 연산으로 표현하면
MAR ← A
MBR ← M[MAR]
AC ← MBR

ADD 명령어 실행 예

명령어
ADD B
AC ← AC + M[B]
실행 과정
1. B의 주소를 MAR에 넣습니다.
2. 메모리에서 B 값을 읽어 MBR에 넣습니다.
3. ALU가 AC와 MBR을 더합니다.
4. 결과를 AC에 저장합니다.
마이크로 연산
MAR ← B
MBR ← M[MAR]
AC ← AC + MBR

STORE 명령어 실행 예

명령어
STORE C
M[C] ← AC
실행 과정
1. C의 주소를 MAR에 넣습니다.
2. AC 값을 MBR에 넣습니다.
3. MBR 값을 메모리 C 위치에 씁니다.
마이크로 연산
MAR ← C
MBR ← AC
M[MAR] ← MBR

JUMP 명령어 실행 예

명령어
JUMP 200
PC ← 200

보통 명령어는 실행 후 PC가 다음 주소로 가지만, JUMP는 PC를 강제로 바꿉니다.

실행
PC ← 200

이제 다음 인출 사이클에서는 200번지의 명령어를 가져옵니다.

조건문, 반복문, 함수 호출은 내부적으로 이런 분기 명령어와 연결됩니다.


간접 사이클

간접 주소지정방식을 사용할 때는 실제 데이터 주소를 한 번 더 찾아야 합니다.

4장 1절에서 간접 주소지정방식을 배웠습니다.

ADD @1000
1000번지에 실제 데이터가 있는 것이 아니라,
1000번지에 실제 데이터의 주소가 들어 있습니다.

그러면 실행 전에 실제 주소를 구하는 과정이 필요합니다.

이 과정을 간접 사이클이라고 설명하기도 합니다.

MAR ← 주소 필드
MBR ← M[MAR]
유효주소 ← MBR
주소를 한 번 더 따라갑니다.

인터럽트 사이클

인터럽트는 CPU가 하던 일을 잠시 멈추고 급한 일을 처리하는 기능입니다.

예를 들어
키보드 입력 발생
프린터 작업 완료
입출력 오류 발생
타이머 신호 발생

이런 사건이 생기면 CPU에게 알릴 필요가 있습니다.

이때 인터럽트가 발생합니다.

운영체제 범위에서도 컴퓨터 시스템 개요에서 인터럽트를 다룹니다.


인터럽트 처리 흐름

인터럽트가 발생하면 CPU는 대략 이렇게 처리합니다.

1. 현재 실행 중인 명령어를 끝냅니다.
2. 현재 상태를 저장합니다.
3. 인터럽트 서비스 루틴의 주소로 이동합니다.
4. 인터럽트 처리 코드를 실행합니다.
5. 저장했던 상태를 복원합니다.
6. 원래 프로그램으로 돌아갑니다.

인터럽트 서비스 루틴은 인터럽트를 처리하기 위한 프로그램입니다.

키보드 입력 처리 루틴
디스크 입출력 완료 처리 루틴
타이머 처리 루틴
짧게 말하면
인터럽트 = CPU에게 급한 일이 생겼다고 알리는 신호

명령어 사이클 전체 정리

명령어 사이클은 상황에 따라 다음 단계들을 포함합니다.

인출 사이클
간접 사이클
실행 사이클
인터럽트 사이클
사이클역할
인출 사이클명령어를 메모리에서 가져옴
간접 사이클간접 주소 방식에서 실제 주소를 구함
실행 사이클명령어를 수행함
인터럽트 사이클인터럽트 발생 시 처리함
가장 기본은
인출 → 실행
조금 더 자세히는
인출 → 간접 여부 확인 → 실행 → 인터럽트 확인

CPU 성능

클록과 CPU 속도

CPU는 클록 신호에 맞춰 동작합니다.

클록은 일정한 박자입니다.

똑, 똑, 똑, 똑

CPU 내부의 마이크로 연산은 이 클록에 맞춰 수행됩니다.

클록 속도는 보통 Hz 단위로 표현합니다.

3GHz

는 1초에 약 30억 번의 클록 주기가 있다는 뜻입니다.

하지만 CPU 성능은 클록만으로 결정되지 않습니다.

명령어당 필요한 클록 수
캐시 성능
파이프라이닝
코어 수
메모리 속도

등도 중요합니다.


명령어 파이프라이닝

파이프라이닝은 여러 명령어를 단계별로 겹쳐서 처리하는 기법입니다.

비유하면 세탁 공정입니다.

세탁 → 헹굼 → 탈수

빨래 1개를 끝까지 처리한 뒤 다음 빨래를 시작하면 느립니다.

대신 이렇게 합니다.

1번 빨래가 헹굼 중일 때
2번 빨래는 세탁 시작

CPU도 비슷합니다.

명령어 처리를 단계로 나눕니다.

인출
해독
실행
메모리 접근
결과 저장

한 명령어가 실행 단계에 있을 때, 다음 명령어는 해독 단계, 그다음 명령어는 인출 단계에 있을 수 있습니다.

컴퓨터구조 범위에도 중앙처리장치 단원에 명령어 파이프라이닝이 포함됩니다.


파이프라이닝의 장점과 문제

장점

여러 명령어를 겹쳐 처리하므로 전체 처리량이 증가합니다.

즉 한 명령어의 실행 시간이 줄어든다기보입니다, 단위 시간당 처리하는 명령어 수가 늘어납니다.

문제

파이프라이닝에는 위험 요소가 있습니다.

문제설명
구조적 해저드같은 하드웨어 자원을 동시에 쓰려는 충돌
데이터 해저드이전 명령어 결과가 아직 준비되지 않음
제어 해저드분기 명령어 때문에 다음 명령어를 예측하기 어려움

지금은 깊게 외우기보다 이렇게만 알면 됩니다.

파이프라이닝 = 명령어 처리 단계를 겹쳐서 성능 향상
하지만 충돌 문제가 생길 수 있음

RISC와 CISC

컴퓨터 명령어 설계 방식에는 대표적으로 RISC와 CISC가 있습니다.

컴퓨터구조 범위에도 RISC와 CISC 개념, 특징 및 비교가 포함됩니다.

CISC

CISC는 Complex Instruction Set Computer다.

복잡한 명령어 집합 컴퓨터
특징
명령어 종류가 많습니다.
명령어 하나가 복잡한 일을 할 수 있습니다.
명령어 길이가 다양할 수 있습니다.
하드웨어 제어가 복잡합니다.

RISC

RISC는 Reduced Instruction Set Computer다.

축소 명령어 집합 컴퓨터
특징
명령어 종류가 적고 단순합니다.
대부분 명령어를 빠르게 실행하도록 설계합니다.
명령어 길이가 비교적 일정합니다.
파이프라이닝에 유리합니다.
레지스터 사용이 많습니다.

RISC와 CISC 비교표

구분RISCCISC
명령어 수적음많음
명령어 복잡도단순복잡
명령어 길이비교적 고정다양할 수 있음
실행 속도단순 명령어 빠르게명령어마다 차이
제어 방식하드와이어드 제어에 유리마이크로프로그램 제어와 연결
파이프라이닝유리상대적으로 어려움
메모리 접근LOAD/STORE 중심다양한 명령어에서 가능
짧게
RISC = 단순 명령어, 빠른 반복
CISC = 복잡 명령어, 다양한 기능

기억장치 계층

기억장치 계층구조

이제 기억장치로 넘어갑니다.

컴퓨터에는 여러 종류의 기억장치가 있습니다.

레지스터
캐시
주기억장치
보조기억장치
가상기억장치

기억장치 계층구조는 CPU에 가까운 빠른 기억장치부터, 멀리 있는 큰 기억장치까지 계층적으로 배치한 구조입니다.

CPU에 가까운 순서
레지스터 → 캐시 → 주기억장치 → 보조기억장치

컴퓨터구조 예시문제에서도 CPU에 가까운 기억장치 계층 순서를 묻고, 정답 흐름은 캐시 기억장치 → 주 기억장치 → 보조 기억장치입니다.


기억장치 계층의 핵심 원리

기억장치는 다음 원리를 가집니다.

CPU에 가까울수록 빠릅니다.
CPU에 가까울수록 용량이 작습니다.
CPU에 가까울수록 비쌉니다.
CPU에서 멀수록 느립니다.
CPU에서 멀수록 용량이 큽니다.
CPU에서 멀수록 쌉니다.

표로 보면 다음과 같습니다.

계층속도용량가격
레지스터가장 빠름가장 작음가장 비쌈
캐시매우 빠름작음비쌈
RAM중간중간중간
SSD/HDD느림저렴
짧게
빠르면 작고 비쌉니다.
크면 느리고 쌉니다.

주기억장치

주기억장치는 CPU가 직접 접근해서 프로그램과 데이터를 읽고 쓰는 기억장치입니다.

대표는 RAM입니다.

주기억장치 = 실행 중인 프로그램과 데이터를 저장하는 곳

예를 들어 게임을 실행하면 게임 파일이 SSD에서 RAM으로 올라옵니다.

SSD에 저장된 게임
→ 실행 시 RAM에 올라옴
→ CPU가 RAM의 명령어와 데이터를 사용

CPU는 보조기억장치보다 RAM에 훨씬 빠르게 접근할 수 있습니다.


RAM

RAM은 Random Access Memory다.

특징
읽기와 쓰기가 가능합니다.
전원이 꺼지면 내용이 사라집니다.
실행 중인 프로그램과 데이터가 저장됩니다.

RAM은 휘발성 기억장치입니다.

휘발성 = 전원이 꺼지면 내용이 사라짐

대표 종류는 다음과 같습니다.

RAM 종류특징
SRAM빠르지만 비싸고 집적도가 낮음
DRAM상대적으로 느리지만 싸고 집적도가 높음

SRAM

캐시에 많이 사용
빠름
비쌈

DRAM

주기억장치에 많이 사용
주기적 재충전 필요
비교적 저렴

ROM

ROM은 Read Only Memory다.

기본적으로 읽기 전용 기억장치입니다.

특징
전원이 꺼져도 내용이 보존됩니다.
시스템 초기화 프로그램 저장에 사용됩니다.
대표 종류
PROM
EPROM
EEPROM
Flash Memory

플래시 메모리는 전기적으로 데이터를 지우고 다시 기록할 수 있으며, 전력이 없어도 정보가 보존됩니다. 컴퓨터구조 예시문제에서도 플래시 메모리는 휘발성이 아니며 전력이 없어도 정보가 보존된다는 점이 나옵니다.

짧게
RAM = 휘발성, 읽기/쓰기
ROM = 비휘발성, 주로 읽기

캐시 기억장치

캐시는 CPU와 주기억장치 사이에 있는 빠른 기억장치입니다.

왜 필요할까요?

CPU는 매우 빠릅니다. 그런데 RAM은 CPU보다 느립니다.

CPU가 매번 RAM을 기다리면 성능이 떨어집니다.

그래서 자주 쓰는 데이터를 CPU 가까이에 저장합니다.

CPU ↔ 캐시 ↔ RAM

캐시의 목적: 자주 사용하는 데이터와 명령어를 빠른 저장장치에 보관해 CPU 대기 시간을 줄이는 것

컴퓨터구조 범위에는 캐시 기억장치의 동작 원리, 사상 방법, 쓰기 정책, 성능 개선효과가 포함됩니다.


캐시가 잘 되는 이유: 지역성

캐시가 효과적인 이유는 프로그램이 지역성을 가지기 때문입니다.

지역성은 두 가지가 중요합니다.

지역성의미
시간 지역성최근 사용한 것을 또 사용할 가능성이 높음반복문 변수
공간 지역성사용한 주소 근처를 사용할 가능성이 높음배열 순회

시간 지역성

for (i = 0; i < 100; i++) {
    sum += i;
}

sum, i 같은 변수는 반복적으로 사용됩니다.

방금 쓴 데이터를 또 쓸 가능성이 큽니다.

공간 지역성

arr[0], arr[1], arr[2], arr[3]

배열은 연속된 메모리에 저장되므로, 하나를 사용하면 그 근처도 사용할 가능성이 큽니다.


캐시 히트와 캐시 미스

CPU가 원하는 데이터가 캐시에 있으면 캐시 히트입니다.

Cache Hit = 캐시에 있음

CPU가 원하는 데이터가 캐시에 없으면 캐시 미스입니다.

Cache Miss = 캐시에 없음

캐시 미스가 발생하면 RAM에서 데이터를 가져와야 합니다.

캐시 히트 → 빠름
캐시 미스 → 느림

캐시 성능은 히트율이 높을수록 좋습니다.

히트율 = 캐시에서 찾은 비율

캐시 사상 방식

캐시 사상은 메모리 블록을 캐시의 어느 위치에 저장할지 정하는 방법입니다.

대표 방식
직접 사상
완전 연관 사상
집합 연관 사상

직접 사상

메모리 블록이 들어갈 캐시 위치가 정해져 있습니다.

장점
구현이 단순합니다.
단점
같은 위치로 몰리면 충돌이 자주 납니다.

완전 연관 사상

메모리 블록이 캐시 어디든 들어갈 수 있습니다.

장점
충돌이 적습니다.
단점
찾는 회로가 복잡합니다.

집합 연관 사상

직접 사상과 완전 연관 사상의 중간 방식입니다.

캐시를 여러 집합으로 나누고,
각 블록은 정해진 집합 안의 어느 위치에든 들어갈 수 있습니다.
짧게
직접 = 정해진 한 자리
완전 연관 = 아무 자리
집합 연관 = 정해진 그룹 안의 아무 자리

캐시 쓰기 정책

CPU가 데이터를 수정했을 때 캐시와 메모리를 어떻게 맞출지가 문제입니다.

대표 쓰기 정책
Write-through
Write-back

Write-through

캐시에 쓰면 동시에 주기억장치에도 씁니다.

장점
캐시와 메모리 내용이 항상 일치합니다.
단점
쓰기 속도가 느릴 수 있습니다.

Write-back

일단 캐시에만 쓰고, 나중에 필요할 때 메모리에 반영합니다.

장점
쓰기 속도가 빠를 수 있습니다.
단점
캐시와 메모리 내용이 일시적으로 다를 수 있습니다.

보조기억장치

보조기억장치는 데이터를 오래 저장하는 장치입니다.

HDD
SSD
USB 메모리
광디스크
특징
전원이 꺼져도 데이터가 남습니다.
용량이 큽니다.
RAM보다 느립니다.

보조기억장치는 파일, 프로그램, 운영체제 등을 저장합니다.

파일 저장 = 보조기억장치
프로그램 실행 = RAM으로 올라옴
CPU 실행 = 명령어를 가져와 처리

컴퓨터구조 범위에는 보조기억장치로 자기디스크, 광기억장치, SSD, RAID가 포함됩니다.


가상기억장치

가상기억장치는 실제 RAM보다 더 큰 메모리를 사용하는 것처럼 보이것이 하는 기술입니다.

왜 필요할까요?

RAM 용량은 제한되어 있습니다.

그런데 프로그램은 RAM보다 더 많은 메모리를 요구할 수 있습니다.

운영체제는 보조기억장치의 일부를 이용해, 마치 큰 메모리가 있는 것처럼 프로그램에게 보여줍니다.

실제 RAM + 보조기억장치 일부
→ 큰 메모리처럼 사용

컴퓨터구조 범위에는 가상 기억장치의 필요성과 페이지 테이블이 포함되고, 운영체제 범위에도 가상기억장치의 개념, 페이징, 페이지 교체 기법이 포함됩니다.


페이지와 페이지 테이블 맛보기

가상기억장치는 보통 메모리를 일정한 크기의 조각으로 나누어 관리합니다.

가상 메모리의 조각 = 페이지
물리 메모리의 조각 = 프레임

프로그램은 가상 주소를 사용합니다.

운영체제와 하드웨어는 이것을 실제 물리 주소로 바꿉니다.

이때 사용하는 표가 페이지 테이블입니다.

가상 페이지 번호 → 물리 프레임 번호

자세한 내용은 5장 2절 운영체제 메모리 관리에서 다시 다룹니다.

지금은 이렇게만 기억하자.

가상기억장치 = 실제 RAM보다 큰 메모리처럼 보이것이 하는 기술
페이지 테이블 = 가상 주소를 실제 주소로 바꾸는 표

기억장치 전체 비교

구분위치속도용량전원 꺼지면?
레지스터CPU 내부가장 빠름매우 작음사라짐
캐시CPU 가까이매우 빠름작음사라짐
RAM주기억장치빠름중간사라짐
ROM주기억장치 계열읽기 중심작음~중간보존
SSD/HDD보조기억장치느림보존
가상기억장치RAM+보조기억장치 활용RAM보다 느릴 수 있음크게 보임보조장치 의존

자주 혼동되는 출제 포인트

혼동 포인트 1. PC와 IR 구분

PC = 다음 명령어 주소
IR = 현재 실행 중인 명령어

PC를 현재 명령어 자체라고 생각하면 틀립니다.


혼동 포인트 2. MAR와 MBR 구분

MAR = 메모리 주소
MBR/MDR = 메모리 데이터

주소와 데이터를 반드시 구분해야 합니다.


혼동 포인트 3. AC는 연산 결과를 저장합니다

LOAD A
ADD B
이면
AC = A + B

AC 값을 계속 추적해야 합니다.


혼동 포인트 4. 마이크로 연산은 CPU 내부 기본 연산입니다

컴퓨터구조 예시문제에서도 마이크로 연산은 CPU 내부에서 제어장치에 의해 실행되는 원자적 기본 연산으로 제시됩니다.


혼동 포인트 5. 인출 사이클 흐름

PC → MAR → 메모리 → MBR → IR

이 흐름을 기억하자.


혼동 포인트 6. JUMP는 PC를 바꿉니다

분기 명령어는 다음 명령어 주소를 순서대로 증가시키지 않고, PC를 다른 값으로 바꿉니다.


혼동 포인트 7. 인터럽트는 현재 상태 저장 후 처리합니다

인터럽트가 오면 CPU는 현재 상태를 저장하고, 인터럽트 서비스 루틴을 실행한 뒤 원래 작업으로 돌아옵니다.


혼동 포인트 8. RISC와 CISC 비교

RISC = 단순한 명령어, 파이프라이닝 유리
CISC = 복잡한 명령어, 다양한 기능

혼동 포인트 9. RAM과 ROM 차이

RAM = 휘발성, 읽기/쓰기
ROM = 비휘발성, 주로 읽기

플래시 메모리는 전력이 없어도 정보가 보존되므로 휘발성이 아닙니다.


혼동 포인트 10. 캐시 히트와 미스

히트 = 캐시에 있음
미스 = 캐시에 없음

캐시 미스가 많으면 CPU가 RAM을 기다려야 해서 느려집니다.


이번 절의 핵심 정리

CPU 구성요소

ALU = 산술·논리 연산
제어장치 = 명령어 해석과 제어신호
레지스터 = CPU 내부 임시 저장소
내부버스 = CPU 내부 데이터 통로

주요 레지스터

PC = 다음 명령어 주소
IR = 현재 명령어
MAR = 메모리 주소
MBR/MDR = 메모리 데이터
AC = 연산 결과
SP = 스택 위치
Flag = 상태 정보

마이크로 연산

CPU 내부에서 수행되는 가장 기본적인 연산
예: MAR ← PC, IR ← MBR, AC ← AC + MBR

명령어 사이클

인출 → 해독 → 실행 → 인터럽트 확인

인출 사이클

MAR ← PC
MBR ← M[MAR]
PC ← PC + 1
IR ← MBR

파이프라이닝

명령어 처리 단계를 겹쳐 실행하여 처리량 향상

RISC와 CISC

RISC = 단순 명령어
CISC = 복잡 명령어

기억장치 계층

레지스터 → 캐시 → 주기억장치 → 보조기억장치

RAM과 ROM

RAM = 휘발성
ROM = 비휘발성

캐시

CPU와 RAM 사이의 빠른 기억장치
지역성을 이용해 성능 향상

가상기억장치

실제 RAM보다 큰 메모리를 쓰는 것처럼 보이것이 하는 기술

핵심 한 문장

이번 절의 핵심을 한 문장으로 정리하면 다음과 같습니다.

CPU는 ALU, 제어장치, 레지스터, 내부버스로 구성되며, PC가 가리키는 명령어를 메모리에서 가져와 IR에 저장하고, 제어장치가 해석한 뒤 ALU와 레지스터를 이용해 실행하며, 기억장치는 속도와 용량에 따라 레지스터·캐시·RAM·보조기억장치 계층으로 구성됩니다.
더 짧게
CPU = 명령어 실행
레지스터 = CPU 안의 빠른 저장소
명령어 사이클 = 인출하고 실행하는 반복
기억장치 계층 = 빠른 것부터 큰 것까지 층으로 배치

확인 문제

문제 1

CPU의 구성요소로 보기 어려운 것은?

① ALU ② 제어장치 ③ 레지스터 ④ HTML 태그


문제 2

산술 연산과 논리 연산을 수행하는 장치는?

① ALU ② MAR ③ ROM ④ 주소버스


문제 3

명령어를 해석하고 제어신호를 발생시키는 장치는?

① 제어장치 ② 보조기억장치 ③ 키보드 ④ 모니터


문제 4

다음에 실행할 명령어의 주소를 저장하는 레지스터는?

① IR ② PC ③ AC ④ MBR


문제 5

현재 실행 중인 명령어를 저장하는 레지스터는?

① PC ② IR ③ MAR ④ SP


문제 6

메모리에 접근할 주소를 저장하는 레지스터는?

① MAR ② MBR ③ AC ④ Flag


문제 7

메모리에서 읽어온 데이터나 메모리에 쓸 데이터를 저장하는 레지스터는?

① PC ② IR ③ MBR 또는 MDR ④ SP


문제 8

누산기 AC의 역할로 알맞은 것은?

① 다음 명령어 주소 저장 ② 연산 결과 임시 저장 ③ 파일 이름 저장 ④ 웹페이지 구조 저장


문제 9

CPU 내부에서 수행되는 가장 기본 단위의 연산은?

① 마이크로 연산 ② 후위표기식 ③ CSS 선택자 ④ 해시 충돌


문제 10

명령어 인출 사이클의 흐름으로 가장 알맞은 것은?

① PC의 주소를 이용해 메모리에서 명령어를 가져와 IR에 저장합니다 ② 모니터에서 명령어를 출력합니다 ③ 키보드에서 명령어를 직접 입력받습니다 ④ 보조기억장치를 삭제합니다


문제 11

MAR ← PC의 의미로 알맞은 것은?

① PC 값을 MAR에 저장합니다 ② MAR 값을 PC에 저장합니다 ③ PC와 MAR을 삭제합니다 ④ 메모리 전체를 초기화합니다


문제 12

분기 명령어 JUMP 200의 핵심 동작은?

① AC를 200으로 나눕니다 ② PC를 200으로 변경합니다 ③ RAM을 200개 만듭니다 ④ 캐시를 비웁니다


문제 13

인터럽트의 의미로 알맞은 것은?

① CPU가 하던 일을 잠시 멈추고 급한 일을 처리하게 하는 신호 ② 배열을 정렬하는 방법 ③ 문자열을 출력하는 HTML 태그 ④ 포인터를 삭제하는 명령


문제 14

RISC의 특징으로 알맞은 것은?

① 명령어가 단순하고 파이프라이닝에 유리합니다 ② 명령어가 항상 매우 복잡합니다 ③ 캐시를 절대 사용하지 않습니다 ④ 메모리를 사용할 수 없습니다


문제 15

기억장치 계층을 CPU에 가까운 쪽부터 나열한 것으로 알맞은 것은?

① 보조기억장치 → 주기억장치 → 캐시 ② 주기억장치 → 보조기억장치 → 캐시 ③ 캐시 → 주기억장치 → 보조기억장치 ④ 보조기억장치 → 캐시 → 주기억장치


문제 16

RAM의 특징으로 알맞은 것은?

① 전원이 꺼져도 항상 내용이 유지됩니다 ② 주로 읽기만 가능합니다 ③ 휘발성 기억장치입니다 ④ CPU 명령어를 해석합니다


문제 17

ROM의 특징으로 알맞은 것은?

① 전원이 꺼지면 무조건 내용이 사라집니다 ② 비휘발성 기억장치입니다 ③ 항상 CPU보다 빠릅니다 ④ 스택 포인터의 다른 이름입니다


문제 18

CPU와 주기억장치 사이에 위치하여 자주 쓰는 데이터를 빠르게 제공하는 기억장치는?

① 캐시 ② 프린터 ③ 키보드 ④ 광디스크


문제 19

CPU가 원하는 데이터가 캐시에 있는 경우를 무엇이라고 하는가?

① 캐시 히트 ② 캐시 미스 ③ 페이지 폴트 ④ 오버플로


문제 20

실제 RAM보다 더 큰 메모리를 쓰는 것처럼 보이것이 하는 기술은?

① 가상기억장치 ② 직접 주소지정 ③ 버블 정렬 ④ 전위순회


정답과 해설은 절별 확인문제 정답해설에서 확인합니다.

다음 5장 1절은 운영체제, 프로세스, 스레드, 스케줄링입니다. 4장 2절이 “CPU가 명령어를 실행하는 방식”이었다면, 5장 1절은 “운영체제가 여러 프로그램에게 CPU를 어떻게 나누어 주는가”를 배웁니다.

목차

이번 절의 큰 그림
CPU 구성
CPU란?
CPU의 구성요소
ALU, 산술논리장치
산술 연산
논리 연산
제어장치, CU
레지스터
내부버스
주요 레지스터
주요 레지스터 종류
PC, 프로그램 카운터
IR, 명령어 레지스터
MAR, 메모리 주소 레지스터
MBR 또는 MDR
AC, 누산기
SP, 스택 포인터
상태 레지스터, Flag, PSW
범용 레지스터
레지스터 정리표
마이크로 연산과 명령어 사이클
마이크로 연산
마이크로 연산의 종류
명령어 사이클이란?
명령어 사이클 전체 흐름
인출 사이클
1단계
2단계
3단계
4단계
인출 사이클 한 줄 요약
실행 사이클
LOAD 명령어 실행 예
ADD 명령어 실행 예
STORE 명령어 실행 예
JUMP 명령어 실행 예
간접 사이클
인터럽트 사이클
인터럽트 처리 흐름
명령어 사이클 전체 정리
CPU 성능
클록과 CPU 속도
명령어 파이프라이닝
파이프라이닝의 장점과 문제
장점
문제
RISC와 CISC
CISC
RISC
RISC와 CISC 비교표
기억장치 계층
기억장치 계층구조
기억장치 계층의 핵심 원리
주기억장치
RAM
SRAM
DRAM
ROM
캐시 기억장치
캐시가 잘 되는 이유: 지역성
시간 지역성
공간 지역성
캐시 히트와 캐시 미스
캐시 사상 방식
직접 사상
완전 연관 사상
집합 연관 사상
캐시 쓰기 정책
Write-through
Write-back
보조기억장치
가상기억장치
페이지와 페이지 테이블 맛보기
기억장치 전체 비교
자주 혼동되는 출제 포인트
혼동 포인트 1. PC와 IR 구분
혼동 포인트 2. MAR와 MBR 구분
혼동 포인트 3. AC는 연산 결과를 저장합니다
혼동 포인트 4. 마이크로 연산은 CPU 내부 기본 연산입니다
혼동 포인트 5. 인출 사이클 흐름
혼동 포인트 6. JUMP는 PC를 바꿉니다
혼동 포인트 7. 인터럽트는 현재 상태 저장 후 처리합니다
혼동 포인트 8. RISC와 CISC 비교
혼동 포인트 9. RAM과 ROM 차이
혼동 포인트 10. 캐시 히트와 미스
이번 절의 핵심 정리
CPU 구성요소
주요 레지스터
마이크로 연산
명령어 사이클
인출 사이클
파이프라이닝
RISC와 CISC
기억장치 계층
RAM과 ROM
캐시
가상기억장치
핵심 한 문장
확인 문제
문제 1
문제 2
문제 3
문제 4
문제 5
문제 6
문제 7
문제 8
문제 9
문제 10
문제 11
문제 12
문제 13
문제 14
문제 15
문제 16
문제 17
문제 18
문제 19
문제 20