
컴퓨터 역사에서 늘 조연이었던 메모리
보안 연구자로 잘 알려진 미할 잘레프스키(lcamtuf)가 컴퓨터 메모리의 역사를 정리한 글이에요. 출발점은 간단한 관찰이에요. 우리는 컴퓨터 역사를 이야기할 때 CPU 얘기만 해요. 인텔 4004, 8086, 펜티엄, 그리고 무어의 법칙이요. 그런데 정작 초기 컴퓨터 설계자들을 가장 괴롭혔던 건 연산이 아니라 '계산 결과를 어디에 담아 둘 것인가'였다는 거예요. 프로그램과 데이터를 저장할 메모리가 없으면 아무리 빠른 연산 장치도 쓸모가 없거든요. 그래서 메모리 기술이 한 단계 바뀔 때마다 컴퓨터의 모습 자체가 바뀌었는데, 이 이야기가 거의 잊혀졌다는 게 글의 문제의식이에요.
비트 하나를 저장하는 게 왜 그렇게 어려웠나
1940년대 컴퓨터에서 비트 하나를 저장하려면 진공관으로 만든 플립플롭 회로가 필요했어요. 플립플롭이 뭐냐면 두 상태 중 하나를 붙들고 있는 회로인데, 진공관이 두 개 이상 들어가요. 진공관은 크고 뜨겁고 자주 고장 나고 비쌌기 때문에, 이런 식으로는 기껏해야 수십 바이트가 한계였어요. 그래서 엔지니어들은 정말 기발한 우회로를 찾아냈어요.
첫 번째가 수은 지연선(mercury delay line)이에요. 수은이 가득 찬 긴 관 한쪽 끝에서 초음파 펄스를 쏘면 반대편까지 도달하는 데 시간이 걸리죠. 그 사이에 펄스가 '이동 중'인 상태로 관 안에 있으니, 그게 곧 저장이에요. 반대편에서 받은 신호를 증폭해서 다시 앞쪽으로 넣어 주면 데이터가 계속 관 속을 순환해요. 문제는 원하는 비트를 읽으려면 그 비트가 관 끝에 도착할 때까지 기다려야 한다는 거예요. 순차 접근만 가능했던 거죠. EDSAC이나 UNIVAC I 같은 초기 컴퓨터가 이걸 썼어요.
두 번째가 윌리엄스 튜브(Williams-Kilburn tube)예요. 옛날 TV 화면 같은 브라운관 표면에 전자빔으로 점을 찍으면 그 자리에 잠깐 전하가 남아요. 이 전하의 유무를 비트로 쓰는 거예요. 화면 위 아무 자리나 빔을 쏠 수 있으니 최초의 실용적인 랜덤 액세스 메모리였고, 1948년 맨체스터 베이비가 이걸로 세계 최초의 프로그램 내장식 컴퓨터가 됐어요. 그런데 전하가 금방 새어 나가서 계속 다시 써 줘야 했어요. 이게 바로 '리프레시'의 원조예요.
자기 코어 메모리, 20년을 지배한 기술
1950년대에 등장한 자기 코어 메모리(magnetic core memory)가 판을 바꿨어요. 도넛 모양의 아주 작은 페라이트 고리에 전선을 격자로 꿰어 놓고, 고리의 자화 방향으로 0과 1을 표현해요. 전원이 꺼져도 자화 상태가 남으니 비휘발성이었고, 격자의 가로 세로 선을 골라 전류를 흘리면 원하는 고리 하나만 골라서 읽고 쓸 수 있었어요. MIT 훨윈드 프로젝트의 제이 포레스터가 실용화했고, 이후 20년 가까이 메인프레임부터 아폴로 우주선 컴퓨터까지 거의 모든 컴퓨터가 이걸 썼어요. 재밌는 건 이 시절 메모리를 '코어'라고 불렀던 흔적이 지금도 남아 있다는 거예요. 프로그램이 죽었을 때 나오는 코어 덤프(core dump)라는 말이 여기서 왔어요. 단점도 명확했어요. 고리 하나하나에 사람이 손으로 전선을 꿰어야 했으니 비트당 가격을 내리는 데 한계가 있었고, 읽으면 자화가 바뀌어 버리는 파괴적 읽기라서 읽은 뒤 다시 써 줘야 했어요.
트랜지스터 하나와 커패시터 하나, DRAM의 탄생
반도체 시대가 오면서 처음 나온 건 SRAM이에요. 트랜지스터 6개로 플립플롭을 만들어 비트 하나를 저장하는 방식인데, 빠르고 리프레시가 필요 없지만 비트당 트랜지스터가 너무 많이 들어가요. 지금도 CPU 캐시에 쓰이는 이유는 빠르기 때문이고, 메인 메모리로 안 쓰는 이유는 비싸고 면적을 많이 차지하기 때문이에요.
결정적인 전환은 1966년 IBM의 로버트 데나드가 고안한 DRAM 셀이에요. 트랜지스터 하나와 아주 작은 커패시터 하나로 비트 하나를 저장하는 구조예요. 커패시터가 뭐냐면 전하를 잠깐 담아 두는 작은 그릇이라고 생각하면 돼요. 그릇에 전하가 차 있으면 1, 비어 있으면 0이에요. 문제는 이 그릇이 새는 그릇이라는 거예요. 몇 밀리초 안에 전하가 빠져나가기 때문에 주기적으로 읽어서 다시 채워 줘야 해요. 윌리엄스 튜브 시절의 리프레시가 반도체로 돌아온 셈이죠. 대신 셀이 워낙 작아서 같은 면적에 SRAM보다 훨씬 많이 넣을 수 있었고, 1970년 인텔이 1103이라는 1킬로비트 DRAM 칩을 내놓으면서 자기 코어 시대가 끝났어요.
진짜 놀라운 점은 그 이후 50년 넘게 DRAM 셀의 기본 구조가 바뀌지 않았다는 거예요. 지금 여러분 노트북의 DDR5도 결국 트랜지스터 하나와 커패시터 하나예요. 달라진 건 셀을 얼마나 작게 만들었는지, 그리고 칩과 CPU 사이에서 데이터를 얼마나 빠르게 주고받는지 하는 인터페이스 쪽이에요. FPM, EDO, SDRAM, DDR에서 DDR5까지 이어지는 이름들은 전부 '셀은 그대로 두고 통로를 넓힌' 역사예요.
업계 맥락: 메모리가 다시 주인공이 된 시대
이 역사가 지금 새삼 중요한 이유가 있어요. AI 시대의 병목이 다시 메모리로 돌아왔거든요. GPU 연산 능력은 엄청나게 늘었는데 데이터를 실어 나르는 메모리 대역폭이 못 따라가는 이른바 메모리 월(memory wall) 문제가 핵심 이슈예요. HBM(고대역폭 메모리)이 AI 반도체의 승부처가 된 것도, 셀을 세로로 쌓는 3D DRAM이나 CXL 같은 새 인터커넥트가 논의되는 것도 전부 같은 맥락이에요. 70년 전 엔지니어들이 수은 관과 브라운관으로 씨름했던 '싸고 빠르고 크게 저장하기'는 여전히 풀리지 않은 문제예요.
한국 개발자에게 주는 시사점
한국은 세계 DRAM 생산의 중심지예요. 삼성전자와 SK하이닉스가 시장의 대부분을 차지하고 있으니 이 역사는 남의 이야기가 아니에요. 소프트웨어 개발자 입장에서도 얻어 갈 게 있어요. 왜 캐시 친화적인 코드가 빠른지, 왜 메모리 접근이 순차적일 때 성능이 좋은지는 결국 DRAM이 행 단위로 열리고 닫히는 구조에서 나오거든요. 메모리가 그냥 '주소를 넣으면 값이 나오는 상자'가 아니라 물리적 제약을 가진 장치라는 감각을 갖는 것만으로도 성능 튜닝을 보는 눈이 달라져요.
마무리
한 줄로 정리하면, 컴퓨터의 진짜 역사는 연산이 아니라 저장의 역사였고, 그 문제는 지금도 현재진행형이라는 거예요. 여러분은 메모리 때문에 성능 문제를 겪어 본 경험이 있나요? DRAM 구조의 한계가 정말 소프트웨어 설계까지 바꿀 거라고 보시나요?
🔗 출처: Hacker News