Chapter 01

컴퓨터는 무엇인가

스마트폰, 노트북, 자동차, 세탁기, 교통카드 단말기까지 우리 주변에는 컴퓨터가 수십 대 있다. 겉모습은 제각각이지만 속을 열어 보면 모두 같은 원리로 움직인다. 이 장에서는 그 공통 원리를 큰 그림으로 잡고, 이 책 전체에서 쓸 “주방” 비유를 익힌다.

계산기와 컴퓨터는 무엇이 다를까

계산기는 숫자를 더하고 곱한다. 컴퓨터도 결국 숫자를 더하고 곱한다. 그런데 왜 계산기로는 영상 통화를 할 수 없을까? 차이는 계산 능력이 아니라 무엇을 할지 바꿀 수 있느냐에 있다.

계산기는 버튼마다 할 일이 정해져 있다. 반면 컴퓨터는 프로그램(program)이라는 명령의 목록을 받아 그대로 수행한다. 목록을 바꾸면 같은 기계가 계산기가 되기도, 게임기가 되기도, 전화기가 되기도 한다. 그래서 컴퓨터를 이렇게 정의할 수 있다.

컴퓨터란?

프로그램(명령의 목록)에 따라 데이터(숫자)를 처리하는 기계. 글자, 사진, 음악, 영상도 컴퓨터 안에서는 모두 숫자로 바뀌어 처리된다(2장).

아무리 복잡한 기기라도 데이터가 움직이는 방향은 네 가지 동작으로 정리된다.

입력 Input 키보드 · 마우스 · 카메라 마이크 · 터치 · 센서 처리 Process CPU · GPU (계산하고 판단한다) 출력 Output 화면 · 스피커 · 프린터 진동 · 모터 저장 Storage 메모리 · SSD
그림 1-1. 모든 컴퓨터의 공통 흐름. 처리 장치는 저장 장치와 끊임없이 데이터를 주고받는다.

예를 들어 스마트폰으로 사진을 찍으면 카메라 센서가 빛을 숫자로 바꾸고(입력), 프로세서가 색을 보정하고 압축하고(처리), 저장공간에 파일로 기록하고(저장), 화면에 미리보기를 띄운다(출력). 세탁기도 마찬가지다. 버튼과 수위 센서(입력), 작은 컴퓨터 칩(처리), 모터와 표시창(출력)이 있다.

컴퓨터는 하나의 주방이다

컴퓨터 부품의 역할은 처음 들으면 헷갈린다. 이 책에서는 줄곧 식당 주방에 빗대어 설명한다. 손님의 주문(입력)을 받아, 요리사가 레시피(프로그램)대로 재료(데이터)를 손질해(처리), 완성된 요리를 내보내는(출력) 곳이다.

컴퓨터주방에서는왜 그렇게 볼 수 있나
CPU요리사레시피를 한 줄씩 읽고 실제로 칼질·볶기를 한다. 아주 빠르고 똑똑하지만 손은 몇 개뿐이다.
레지스터요리사의 손지금 당장 다루는 재료 몇 개만 쥘 수 있다. 가장 빠르지만 아주 작다.
캐시손 닿는 선반자주 쓰는 양념을 옆에 둔다. 팔만 뻗으면 된다.
메모리(RAM)조리대지금 만드는 요리의 재료를 펼쳐 둔다. 넓을수록 여러 요리를 동시에 할 수 있다. 영업이 끝나면(전원이 꺼지면) 치운다.
저장장치(SSD)창고·냉장고아주 많이 보관하고 문을 닫아도 남아 있지만, 꺼내 오려면 걸어가야 한다.
GPU수천 명의 보조 요리사한 명 한 명은 단순한 일만 하지만, 감자 만 개 깎기 같은 일은 한꺼번에 끝낸다.
운영체제(OS)주방장·매니저누가 언제 화구를 쓸지, 조리대 어디를 쓸지 정하고 주방 규칙을 지키게 한다.
프로그램레시피무엇을 어떤 순서로 할지 적어 둔 문서. 레시피를 바꾸면 다른 요리가 나온다.
네트워크배달·주문 전화다른 식당(컴퓨터)과 재료와 요리를 주고받는다.
비유는 출발점일 뿐

비유는 처음 감을 잡는 데 유용하지만 완벽하지 않다. 각 장에서는 비유로 시작해 실제 동작을 시뮬레이터로 확인한다. 둘이 어긋나는 지점이 나오면 그때마다 짚고 넘어간다.

컴퓨터 속 들여다보기

데스크톱 컴퓨터의 옆판을 열면 아래와 같은 부품이 보인다. 노트북과 스마트폰은 같은 부품을 훨씬 작게, 일부는 한 칩 안에 합쳐 넣었을 뿐이다. 각 부품을 눌러 무슨 일을 하는지 살펴보자.

EXPLORE

메인보드 탐험: 부품을 눌러 보세요

CPU 메모리 (RAM) GPU SSD 전원부 입출력포트 Wi-Fi 메인보드 (전체를 잇는 판) BIOS

부품을 눌러 보세요

각 부품의 역할, 주방 비유, 요즘 제품의 대략적인 사양이 여기에 나타납니다.

사진 한 장을 열 때 일어나는 일

부품은 혼자 일하지 않는다. 사진 파일을 더블클릭하는 아주 평범한 동작에도 거의 모든 부품이 차례로 등장한다. 아래 시뮬레이터에서 다음 단계를 눌러 데이터(빛나는 점)가 어디서 어디로 가는지 따라가 보자.

SIMULATOR

데이터의 여행

시나리오를 고르고 다음 단계를 눌러 보세요.
시나리오
진행 0 / 0
해볼 것: 세 시나리오에서 CPU가 하는 일과 GPU가 하는 일을 비교해 보자. 게임에서는 왜 GPU의 비중이 커질까?

시나리오마다 다른 부품이 주인공이 되지만, 공통점이 하나 있다. CPU는 저장장치(SSD)에서 직접 일하지 않는다. 반드시 데이터를 먼저 메모리(RAM)로 가져온 뒤에 처리한다. 창고에 들어가서 요리하는 요리사는 없다. 재료를 조리대로 가져와야 한다. 이 원칙은 6장에서 “메모리 계층”이라는 이름으로 다시 만난다.

나노초의 세계를 사람의 시간으로

컴퓨터를 이해할 때 가장 놓치기 쉬운 것이 속도의 차이다. 요즘 CPU는 1초에 약 30~50억 번 박자를 맞춰 일한다. 한 박자가 0.3 나노초(ns, 10억분의 1초)다. 이 시간 동안 빛도 겨우 10 cm 남짓 간다.

이런 숫자는 너무 작아서 감이 오지 않는다. 그래서 CPU의 한 박자를 1초로 늘려서 다른 작업들이 얼마나 걸리는지 바꿔 보자. 슬라이더로 “한 박자”를 얼마로 늘릴지 정할 수 있다.

SIMULATOR

컴퓨터 시간 → 사람 시간 변환기

값은 대표적인 크기 수준(order of magnitude)이다. 핵심은 정확한 숫자가 아니라 단계마다 수십~수천 배씩 느려진다는 사실이다.

CPU 입장에서 메모리(RAM)에서 데이터를 가져오는 일은 “몇 분 기다리기”이고, SSD는 “며칠”, 하드디스크는 “몇 달”, 지구 반대편 서버와 대화하는 일은 “십수 년”이다. 그래서 컴퓨터 설계의 상당 부분은 느린 곳을 덜 가게 만드는 기술이다. 캐시(6장), 가상 메모리(9장), 파이프라인(5장)이 모두 그 해법이다.

프로그램도 데이터처럼 메모리에

1940년대의 초기 전자 컴퓨터 ENIAC은 계산 내용을 바꾸려면 사람들이 며칠에 걸쳐 케이블을 다시 꽂아야 했다. 하드웨어 배선 자체가 프로그램이었던 셈이다.

이를 바꾼 아이디어가 프로그램 내장 방식(stored-program)이다. 명령어도 숫자로 바꿔 데이터와 똑같이 메모리에 넣어 두고, CPU가 메모리에서 명령어를 하나씩 꺼내 실행한다. 프로그램을 바꾸려면 메모리 내용만 바꾸면 된다. 이 구조를 처음 체계적으로 정리한 수학자의 이름을 따 폰 노이만 구조(von Neumann architecture)라 부르고, 오늘날 거의 모든 컴퓨터가 이 구조를 따른다.

CPU 제어 장치 ALU (계산) 레지스터 메모리 명령어 (프로그램) 데이터 버스(bus) 주소 · 데이터
그림 1-2. 폰 노이만 구조. 명령어와 데이터가 같은 메모리에 있고, CPU는 하나의 통로(버스)로 둘 다 가져온다.
폰 노이만 병목

명령어와 데이터가 같은 통로를 쓰다 보니, CPU가 아무리 빨라져도 메모리에서 가져오는 속도가 따라오지 못하면 CPU는 기다려야 한다. 이를 폰 노이만 병목이라 부른다. 앞에서 본 “RAM까지 몇 분”이 바로 그 병목이다.

이 책의 지도

이 책은 아래에서 위로 쌓아 올리는 순서로 구성되어 있다. 앞 장에서 만든 부품이 다음 장의 재료가 된다. 순서대로 읽기를 권하지만, 궁금한 장으로 바로 가도 이해할 수 있도록 각 장 첫머리에 필요한 개념을 다시 짚었다.

핵심 정리

  1. 컴퓨터는 프로그램(명령의 목록)에 따라 데이터를 처리하는 기계다. 프로그램을 바꾸면 같은 기계가 다른 일을 한다.
  2. 모든 컴퓨터는 입력 → 처리 → 출력으로 동작하고, 처리하는 동안 저장 장치와 데이터를 주고받는다.
  3. CPU는 요리사, 메모리는 조리대, 저장장치는 창고, GPU는 수많은 보조 요리사, 운영체제는 주방장이다.
  4. CPU는 저장장치의 데이터를 직접 처리하지 않고 반드시 메모리로 가져와서 처리한다.
  5. 부품마다 속도가 수십~수천 배씩 차이 난다. 컴퓨터 설계의 큰 부분은 느린 곳을 덜 가게 만드는 기술이다.
  6. 명령어도 데이터처럼 메모리에 저장하는 폰 노이만 구조가 현대 컴퓨터의 뼈대다.

확인 퀴즈

계산기와 컴퓨터의 가장 본질적인 차이는?

계산 능력이 아니라 프로그래밍 가능성이 핵심이다. 같은 하드웨어가 프로그램에 따라 계산기, 게임기, 전화기가 된다.

주방 비유에서 “조리대”에 해당하는 부품은? 전원이 꺼지면 내용이 사라진다는 점도 닮았다.

RAM은 지금 작업 중인 데이터를 펼쳐 두는 곳이다. 빠르지만 전원이 꺼지면 내용이 사라진다. 오래 보관할 것은 창고(SSD)에 둔다.

사진 파일을 열 때 CPU가 처리하기 전에 반드시 일어나는 일은?

CPU는 메모리에 있는 데이터만 다룰 수 있다. 저장장치의 데이터는 먼저 메모리로 올라와야 한다.

CPU 한 박자(약 0.3 ns)를 1초로 늘리면, RAM에서 데이터를 가져오는 시간(약 100 ns)은 대략 얼마가 될까?

100 ÷ 0.3 ≈ 333배이므로 333초, 약 5분 반이다. CPU 입장에서 RAM은 생각보다 아주 먼 곳이다.

“폰 노이만 구조”의 핵심 아이디어는?

프로그램 내장 방식 덕분에 하드웨어를 건드리지 않고 메모리 내용만 바꿔 다른 프로그램을 실행할 수 있다.