수많은 칸 중에서 한 칸을 어떻게 찾을까요?
앞 레슨에서 기억 칸을 잔뜩 모으면 메모리가 된다고 했다. 그런데 그 많은 칸 가운데 원하는 딱 한 칸을 어떻게 단번에 찾아갈까요?
칸이 너무 많으면 찾을 수 없다
기억 칸은 수십억 개에 이른다.
그런데 이렇게 많은 칸 가운데 '아까 저장한 그 값'이 어느 칸에 있는지 어떻게 다시 찾을까?
칸마다 이름도 없고 생김새도 똑같은데 말이에요.
칸이 전부 똑같이 생겨서, 한 칸을 콕 집어낼 방법이 없다.
책 수만 권이 번호도 없이 마구 꽂혀 있는 도서관을 떠올리면 된다.
원하는 책을 찾기란 거의 불가능하다.
메모리도 똑같은 문제를 안고 있어서 해결책이 필요해요.
모든 칸에 번호를 붙인다
해결책은 수영장 사물함과 같다.
똑같이 생긴 사물함마다 0번, 1번, 2번처럼 번호가 붙어 있다.
메모리도 모든 칸에 순서대로 번호를 붙여 둬요.
위는 칸 번호(주소), 아래는 그 칸에 담긴 값.
이 번호를 주소라고 부른다.
집집마다 주소가 있어 우편물이 정확히 배달되듯, 칸마다 주소가 있으면 원하는 칸을 정확히 찾아갈 수 있어요.
주소를 부르면 그 칸으로
주소가 있으면 찾는 일은 순식간이다.
'3번 칸 값 가져와'라고 하면 메모리는 곧장 3번 칸으로 가서 그 안의 값을 꺼낸다.
칸이 수십억 개라도 번호만 알면 단번에 도착해요.
아래에 주소를 넣고 읽기를 누르면 그 칸의 값이 나온다.
주소를 넣으면 그 칸으로 간다.
번호 하나로 원하는 칸에 바로 가는 것, 이것이 메모리가 빠른 비결이다.
처음부터 하나씩 세지 않고 주소로 곧장 짚기 때문이에요.
원하는 칸에 값 넣기
꺼내기만 되는 것은 아니다.
'5번 칸에 이 값을 넣어'라고 하면 그 칸에 값이 저장된다.
읽기는 주소로 꺼내기, 쓰기는 주소로 넣기다.
이 두 가지가 메모리가 하는 일의 전부예요.
주소를 정해 값을 넣는다.
주소로 읽고 주소로 쓰는 것, 단순하다.
그런데 이 단순한 두 동작이 모든 프로그램의 바탕이 된다.
변수도 사진도, 그 무엇이든 결국 이렇게 주소로 드나들어요.
CPU는 주소로 부탁한다
이제 큰 그림을 볼 차례다.
계산하는 CPU는 값이 필요하면 메모리에 주소로 부탁한다.
'3번 값을 줘, 이 결과는 7번에 넣어 줘' 하는 식이다.
CPU와 메모리는 이렇게 주소를 주고받으며 일을 해 나가요.
주소로 주고받는다.
이것으로 컴퓨터라는 몸의 기초를 한 바퀴 돌았다.
0과 1에서 시작해 계산하고, 기억하고, 주소로 찾아가는 데까지 왔다.
다음 레슨부터는 이 부품들이 어떻게 진짜 명령을 따르는지 살펴본다.