
무슨 일이냐면요
요즘 CPU 하면 인텔·AMD의 x86이나 애플·ARM 계열을 떠올리잖아요. 그런데 90년대엔 지금은 사라진 강력한 CPU들이 여럿 있었어요. 그중 하나가 DEC(Digital Equipment Corporation)의 알파(Alpha) 프로세서예요. 당시로선 파격적인 64비트 RISC 설계로, 워크스테이션과 서버 시장에서 성능 괴물로 불렸죠.
이번 글은 그 옛날 알파 서버를 소프트웨어로 흉내 내는 es40 에뮬레이터의 새 포크(fork, 기존 프로젝트를 복제해서 개선한 갈래) 위에서, 무려 알파용 윈도우 2000을 실제로 부팅시키는 과정을 다뤄요. 사라진 하드웨어를 코드로 되살려낸 셈이죠.
알파와 '멀티 아키텍처 윈도우'라는 옛 꿈
지금은 낯설지만, 초창기 윈도우 NT 계열은 사실 여러 CPU에서 돌아가도록 설계됐었어요. x86뿐 아니라 알파, MIPS, PowerPC용 버전이 있었죠. 즉 우리가 x86 전용이라 여기는 윈도우가 원래는 아키텍처 독립적이었던 거예요. 알파용 윈도우 2000은 그 실험의 흔적이고요.
에뮬레이터가 하는 일이 뭐냐면, 알파 CPU가 이해하는 명령어 하나하나를 우리 x86 컴퓨터가 대신 해석해서 실행해주는 거예요. 통역사가 옆에서 실시간으로 말을 옮겨주는 것과 비슷해요. 문제는 CPU 명령어만 흉내 낸다고 끝이 아니라는 점이에요. 디스크 컨트롤러, 네트워크 칩, 콘솔 펌웨어(SRM)까지 그 시절 하드웨어 주변장치를 전부 재현해야 OS가 속아서 정상 부팅을 하거든요. 이게 에뮬레이터 개발의 진짜 어려운 부분이에요.
오래된 프로젝트를 되살린다는 것
es40은 원래 꽤 오래된 오픈소스 에뮬레이터예요. 세월이 흐르면서 요즘 컴파일러로는 빌드조차 안 되는 상태가 되기 쉬운데, 이번 포크는 최신 환경에서 컴파일되게 코드를 손보고, 부팅을 막던 버그들을 잡아 실제로 OS가 뜨는 수준까지 끌어올린 게 핵심이에요.
이런 작업이 왜 의미 있냐면, 옛 소프트웨어와 문서는 시간이 지나면 실행할 하드웨어가 없어서 그냥 사라져버리거든요. 에뮬레이터는 일종의 디지털 보존(digital preservation) 장치예요. 종이 문서를 박물관에 보관하듯, 옛 컴퓨팅 환경을 코드로 박제해두는 거죠. QEMU, MAME, PCem 같은 프로젝트들이 다 같은 정신을 공유해요.
업계 맥락에서 보면
재밌는 건, 사라진 줄 알았던 알파의 유산이 지금도 살아있다는 점이에요. 알파를 만들던 엔지니어들이 훗날 AMD의 64비트 확장(x86-64)과 초기 ARM 설계에 큰 영향을 줬거든요. 오늘날 우리가 쓰는 64비트 컴퓨팅의 뿌리 한 갈래가 여기 닿아 있는 셈이에요. 옛것을 되살리는 이 프로젝트가 단순 향수가 아닌 이유죠.
한국 개발자에게
당장 실무에 알파 에뮬레이터를 쓸 일은 거의 없을 거예요. 하지만 배울 점은 분명해요. 에뮬레이터를 만들거나 뜯어보는 건 컴퓨터 구조를 몸으로 이해하는 최고의 교재거든요. CPU가 명령어를 어떻게 실행하는지, 메모리 맵과 인터럽트가 뭔지, OS가 부팅할 때 하드웨어와 어떻게 대화하는지를 추상적인 이론이 아니라 실제 코드로 마주하게 돼요.
또 하나, 오래 방치된 오픈소스를 최신 환경에서 되살리는 경험 자체가 값진 훈련이에요. 빌드 시스템을 현대화하고, 사라진 의존성을 대체하고, 미묘한 버그를 추적하는 이 과정은 레거시 코드를 다뤄야 하는 실무 현장과 놀랍도록 닮아 있어요. 저사양 임베디드나 시스템 프로그래밍에 관심 있는 분이라면 특히 눈여겨볼 만해요.
마무리
사라진 하드웨어를 코드로 되살리는 일은, 과거를 향한 취미인 동시에 미래를 위한 보존이에요. 그리고 그 과정에서 우리는 컴퓨터가 진짜로 어떻게 돌아가는지를 가장 정직하게 배우게 되죠.
여러분은 에뮬레이터를 직접 만져보거나 만들어본 적 있으세요? 이미 사라진 옛 기술 중에 "이건 꼭 보존해둬야 한다" 싶은 게 있다면 뭐가 떠오르시나요?
🔗 출처: Hacker News