스킬캠퍼스
09 · 저장 프로그램이라는 반전
강의

오늘 끝나면

저장 프로그램이라는 반전

  • 저장 프로그램 방식이 ENIAC식 배선 방식과 어떻게 다른지 한 줄로 설명함
  • 명령도 데이터처럼 메모리에 숫자로 저장된다는 걸 예로 듦
  • PC가 fetch→execute를 반복하는 흐름과, 메모리만 바꾸면 범용이 되는 이유를 말함

실습 미션

오른쪽 머신에서 명령 셀의 op나 주소를 바꿔 OUT 결과를 의도대로 바꿔보고, 배선이 아니라 메모리만 바꿨다는 걸 확인함.

성공 조건

  • 명령 셀을 고쳐 OUT 값을 바꿔봤음
  • PC가 0부터 칸을 훑으며 fetch→execute 하는 흐름을 봤음
  • 명령 칸과 데이터 칸이 같은 메모리에 있다는 걸 확인했음

폰 노이만 · 배선 → 메모리 · 명령도 숫자 · 범용 컴퓨터

저장 프로그램이라는 반전

명령을 데이터처럼 같은 메모리에 넣었더니, 배선을 안 바꿔도 다른 일을 하는 기계가 됨. 컴퓨터 역사상 가장 큰 한 수임.

IBMIntel
P.0109 · 저장 프로그램이라는 반전

그 전엔 프로그램이 곧 배선이었다

초기 컴퓨터는 일을 바꾸려면 기계 자체를 바꿔야 했음.

1945년 ENIAC. 전선 18,000개 진공관 덩어리인데, 프로그램이 곧 배선이었음. 다른 계산을 시키려면 사람이 케이블을 다시 꽂고 회전 스위치 수천 개를 다시 맞췄음.

이 재설정에 보통 며칠이 걸렸음. 곱셈기를 더하기로 바꾸는 게 코드 한 줄이 아니라 노동이었음.

즉 하드웨어가 곧 프로그램이었음. 기계 하나가 한 가지 일에 묶여 있었음 / 다른 일은 사실상 다른 기계를 만드는 셈.

ENIAC식 — 일을 바꾸려면 배선판을 다시 꽂음
ENIAC 패치 패널 · 작업 = 배선
시킬 작업을 고르면 케이블을 다시 꽂음
입력연산0123ABCD
지금 하는 일
탄도 계산
포탄 궤적 적분
이번 재배선 노동
2

작업을 바꿔보셈. 케이블 경로가 통째로 다시 그려짐 — 코드 한 줄이 아니라 손으로 다시 꽂는 일임.

P.0209 · 저장 프로그램이라는 반전

명령을 데이터처럼 메모리에 넣다

1945년, 폰 노이만이 정리한 EDVAC 보고서에 반전이 담겼음.

명령을 배선으로 박지 말고, 데이터처럼 똑같은 메모리에 숫자로 저장하자는 것임. 명령과 데이터가 한 저장소를 나눠 씀.

메모리는 주소로 값을 담는 칸의 줄임. 그 칸에 무엇이 들었든 컴퓨터에겐 다 그냥 숫자임. 똑같은 1011이 어떤 칸에선 더하기 명령이고 어떤 칸에선 데이터 11임.

그래서 명령도 숫자임. 종이가 아니라 같은 전기 메모리에 들어가니, 기계가 자기 명령을 읽고 쓰는 게 가능해짐.

같은 칸 안의 숫자 하나 — 명령으로도, 데이터로도 읽힘
같은 숫자 · 명령으로도 데이터로도
칸을 클릭하면 해석을 바꿈 — 명령 ↔ 데이터

지금 4칸은 명령, 4칸은 데이터로 읽는 중임. 비트는 하나도 안 바뀌었음 — 똑같은 01000101이 명령(LOAD 5)도 되고 데이터(69)도 됨. 무엇으로 볼지는 CPU가 그 칸을 명령으로 가져오느냐, 값으로 가져오느냐에 달림.

P.0309 · 저장 프로그램이라는 반전

PC가 칸을 훑으며 fetch → execute

명령이 메모리에 줄지어 있으니, CPU는 그걸 순서대로 읽어내면 됨.

PC(프로그램 카운터)가 다음 명령의 주소를 가리킴. CPU는 그 칸을 읽어오고(fetch) 시키는 대로 하고(execute) PC를 +1 함. 이 두 박자를 끝없이 반복함.

이게 컴퓨터가 살아 움직이는 유일한 동작임. 화려한 앱도 결국 이 fetch→execute 사이클의 반복일 뿐임.

배선을 다시 꽂는 며칠짜리 노동이, PC가 칸을 훑는 1초에 수십억 번짜리 사이클로 바뀐 것임.

PC가 한 칸씩 — 가져오고(fetch) 실행하고(execute)
fetch → execute · PC가 한 칸씩
프로그램 메모리
PC ▶
0LOAD 7
1ADD 6
2OUT
3HALT
1박자 · fetch
PC가 가리킨 칸을 읽어옴
2박자 · execute
시키는 대로 함
PC
0
ACC
0
OUT

버튼을 눌러 한 박자씩 진행해보셈. 읽어오고(fetch) → 실행하고(execute), 그리고 PC가 다음 칸으로 넘어감.

P.0409 · 저장 프로그램이라는 반전

그래서 범용 컴퓨터가 된다

명령이 메모리에 있으니, 배선을 안 건드리고 메모리만 바꿔 다른 일을 시킴.

기계는 그대로인데 무엇이든 함 — 이게 범용임. 같은 칩 하나로 계산기도, 게임도, 채팅 앱도 돌림 / 바꾸는 건 메모리에 적힌 숫자뿐임.

게다가 명령도 숫자라, 프로그램이 다른 프로그램을 데이터로 읽고 고치고 새로 만들 수 있음. 컴파일러·운영체제가 바로 이 자기참조에서 나옴.

지금 모든 PC·폰·서버의 칩이 이 폰 노이만 구조 위에 서 있음. 80년 전 보고서 한 편이 깐 토대임.

기계는 그대로 · 메모리 카트리지만 갈아끼우면 다른 일
같은 기계 · 메모리만 갈아끼움
메모리 카트리지 (프로그램)계산기게임채팅CPUfetch → execute↑ 회로는 하나도 안 바뀜결과 (하는 일)42▲ ● ■"안녕"
명령도 숫자라서 — 프로그램이 프로그램을 데이터로 다룸
소스 코드컴파일러기계어

위 카트리지를 갈아끼우면 CPU는 그대로인데 하는 일이 달라짐 — 이게 범용임. 게다가 컴파일러·운영체제처럼 프로그램이 다른 프로그램을 읽고 만드는 일도, 명령이 숫자라서 가능해진 것임.

P.0509 · 저장 프로그램이라는 반전

직접 저장 프로그램 머신 돌려보기

오른쪽 머신에서 메모리 8칸을 직접 만짐. 앞쪽은 명령, 뒤쪽은 데이터인데 둘 다 같은 메모리에 있음.

▶ 실행을 누르면 PC가 0번 칸부터 훑으며 fetch→execute 함. 파란 칸이 지금 실행 중인 명령임.

명령 셀의 op나 주소를 바꿔보셈. 배선은 하나도 안 건드렸는데 OUT 결과가 통째로 바뀜 — 메모리만 바꾼 게 전부임.

이 작은 기계가 곧 노트북·폰 안에서 벌어지는 일의 축소판임.

메모리 셀을 고치고 ▶ 실행 — fetch→execute로 OUT이 바뀜
저장 프로그램 머신 · 명령도 숫자다
메모리 — 주소 0~7 · 명령과 데이터가 같은 칸에 산다
0
명령주소
1
명령주소
2
명령주소
3
명령
4
명령
5
데이터
6
데이터
7
데이터
CPU — PC가 메모리를 훑으며 fetch → execute
PC
ACC
0
OUT

이대로 돌리면 OUT = 25 이 나옴. 명령 셀의 op·주소를 바꾸면 결과가 통째로 바뀜 — 배선이 아니라 메모리만 바꾼 것.

3줄 요약

  1. 1옛날엔 일을 바꾸려면 배선을 다시 꽂았음 — 프로그램이 곧 하드웨어였고 며칠씩 걸렸음.
  2. 2폰 노이만의 반전: 명령을 데이터처럼 같은 메모리에 숫자로 저장하고, PC가 fetch→execute로 훑음.
  3. 3그래서 메모리만 바꾸면 무엇이든 하는 범용 컴퓨터가 됨. 명령도 숫자라 프로그램이 프로그램을 다룸.

완료 전 점검

복습 카드

폰 노이만 구조

명령과 데이터를 같은 메모리에 숫자로 두는 설계

PC(프로그램 카운터)

다음 명령의 주소를 가리키는 값, fetch→execute 한 박자마다 +1

fetch → execute

칸을 읽어와 실행하는 한 박자, 끝없이 반복되는 컴퓨터의 기본 동작