277,248개의 2입력 NAND 게이트로 브라우저 안에서 완벽히 구동되는 16비트 컴퓨터를 구현했습니다. 다른 어떤 논리 소자도 사용하지 않고, 16.4 kHz의 클록 주파수에서 테트리스 변형 게임을 매끄럽게 실행합니다. 수많은 코드와 고수준 언어가 지배하는 오늘날, NAND-16은 가장 원초적인 방식으로 바퀴를 다시 발명하는 길을 택했습니다. 우리는 흔히 복잡한 기계를 만들려면 서로 다른 역할을 수행하는 전용 부품들, 즉 연산 전용 ALU와 별도의 메모리 칩이 결합해야 한다고 직관적으로 생각합니다. 하지만 NAND-16은 명확한 사실을 보여줍니다. 범용 컴퓨팅의 진입 장벽은 가장 기초적인 단 하나의 스위치만으로도 충분히 넘을 수 있다는 점입니다.
복잡성에 전용 부품은 필요 없다
그림: 7400 시리즈 4회로 2입력 NAND 게이트 칩. 이 컴퓨터는 오직 277,248개의 이런 기본 논리 소자만으로 조립되었습니다. 출처: Wikimedia Commons
NAND-16 프로젝트는 전체 시스템에 오직 NAND(부정논리곱) 게이트 단 한 종류만 사용합니다. 이는 단 하나의 기본 형태를 가진 레고 블록만 주고, 엘리베이터가 있는 고층 빌딩을 지으라고 요구하는 것과 같습니다. 이 시스템에서는 가산기, 레지스터, 명령어 제어 로직이 전부 동일한 블록의 맞물림으로 만들어진 조합입니다. 전체 설계를 단 하나의 게이트로 극단적으로 통일함으로써, 계산 능력이 어디서 어떻게 생겨나는지 그 흐름이 투명하게 드러납니다.
프로젝트 안내 투어인 제네시스(Genesis)는 ‘단 하나의 게이트로 컴퓨터를 다시 발명하기’라는 주제 아래 15개 장으로 구성되어 있습니다. 두 개의 NAND 게이트로 RS 플립플롭을 구성하는 것부터 시작해, 플립플롭을 단계별로 쌓아 복잡한 레지스터와 연산 장치를 만들어가는 과정을 보여줍니다. 이 흐름을 따라가다 보면 하드웨어 설계의 신비주의는 완전히 해체됩니다. 아무리 고도화된 기능이라도 결국에는 무수히 많은 스위치 상태의 단순한 반전으로 환원될 뿐입니다.
27만 개 게이트의 이유: 메모리가 치러야 했던 대가
해커뉴스(Hacker News)에서 277,248이라는 숫자를 접한 사람들의 첫 반응은 대부분 당혹감이었습니다. 전설적인 ARM1 프로세서조차 2만 5천 개 미만의 트랜지스터를 사용했습니다. 이 머신이 그보다 열 배 이상 큰 규모를 요구하는 이유는, ROM과 RAM까지 오로지 NAND 게이트 배열만으로 쌓아 올렸기 때문입니다. 기성 메모리 칩은 단 하나도 쓰이지 않았습니다.
일반적인 컴퓨터에서는 연산 장치와 기억 장치가 서로 다른 영역으로 나뉘며, 메모리는 고밀도 집적을 위해 최적화된 트랜지스터 구조를 갖춥니다. 하지만 NAND-16에서는 기억 셀마저 순수한 논리 게이트로 하나하나 조립했습니다. 코드와 데이터를 저장하려는 요구가 그대로 논리 게이트의 폭발적인 증가로 이어진 것입니다.
웹 브라우저의 실시간 표시 창에 따르면 클록 사이클은 160,208회에 달하고, 실행 명령어 수는 약 58,402개이며, 프로그램 카운터는 046C에 멈춰 있습니다. 이는 한 줄 한 줄 기계어 코드를 처리하는 물리적 시뮬레이션 환경입니다. 브라우저 엔진에서 측정된 게이트 평가 속도는 초당 2,300만 개(23.0 M/s) 수준이며, 명령어 실행 빈도는 초당 약 4,000회(4.0 k/s)입니다. 이 성능 지표가 가리키는 진실은, 27만 개 게이트 중 대다수가 연산을 하는 것이 아니라 단순한 메모리로 작동하고 있다는 사실입니다. 범용 계산은 단 하나의 스위치로도 가능하지만, 그 대가는 저장 공간을 만들기 위해 천문학적인 수의 스위치를 쏟아부어야 한다는 것입니다.
단 하나의 부품을 망가뜨려 시스템 붕괴 관찰하기
그림: 브라우저에서 실행 중인 NAND-16 전체 시스템. 상단에는 계산 결과를 지속적으로 검증하는 독립 감사 도구(audit)가 탑재되어 있습니다. 출처: somethingbig.ai
전체 시스템이 오직 한 종류의 부품으로만 이루어져 있기 때문에, 고장 진단과 파괴 실험 역시 직관적인 물리 실험이 됩니다. 프로젝트에는 고장 실험실(Fault Lab)이 내장되어 있어, 원하는 게이트를 영구적으로 0 또는 1로 고정하고 컴퓨터 전체가 어떻게 무너지는지 관찰할 수 있습니다. 2단계 클록 신호를 끊으면 화면이 즉시 멈추고, 비디오 메모리의 게이트 하나를 손상시키면 게임 화면에 사라지지 않는 유령 블록이 곧바로 나타납니다.
내장된 고장 시나리오에는 끊어진 캐리 체인, 절대 점프하지 않는 분기 명령어, 기능이 약화된 유사 난수 생성기 등이 포함되어 있습니다. 키보드로 게임을 조작하다가 키 입력이 먹통이 되는 현상도 하위의 특정 논리 게이트가 외력에 의해 영구 고정되었을 때 발생합니다.
모든 구동 데이터는 웹상에서 실시간으로 렌더링되며, 페이지 상단에는 독립 구현된 평가 엔진을 통해 샘플링 주기를 재실행하는 감사기(audit)가 자리 잡고 있습니다. 넷리스트 상태의 불일치가 감지되면 화면 전체가 붉은색으로 변해 경고합니다. 로직 아날라이저는 명령어 단위의 한 단계 디버깅은 물론, 한 주기를 녹화해 게이트 지연 시간에 맞춘 불릿 타임 재생까지 지원합니다. 화면 속 임의의 픽셀을 더블 클릭하면 해당 픽셀의 상태를 유지하고 있는 기저의 래치 회로로 곧바로 추적해 들어갑니다. 기계의 모든 게이트가 브라우저 화면 위에 펼쳐지는 순간, 하드웨어의 블랙박스는 사라집니다.
커뮤니티의 반응과 시대적 시선
이 컴퓨터에 대한 커뮤니티의 반응은 양극단으로 갈렸습니다. 한편에서는 순수하게 NAND 게이트 배열만으로 메모리까지 재현해 낸 엔지니어링의 집념에 감탄하며, 무에서 유로 디지털 세계를 쌓아 올린 순수성을 높이 평가했습니다. 반면 다른 한편에서는 몇 년 전에 보았다면 충격적이었겠지만, 오늘날 이 정도 규모의 프로젝트는 인공지능이 생성한 넷리스트일 가능성이 높아 지나치게 열광할 필요는 없다는 냉담한 반응을 보였습니다. 해커뉴스 댓글 창의 논쟁은 오늘날 기술 커뮤니티가 대규모 프로젝트를 마주할 때 갖는 보편적인 심리를 드러냅니다.
시대를 바라보는 시선이 엔지니어링 난이도에 대한 인식을 바꾸었을지는 몰라도, 시스템을 움직이는 기저의 물리 법칙까지 바꾼 것은 아닙니다. 제작자가 넷리스트 생성 과정에서 자동화 도구에 크게 의존했든 그렇지 않든, NAND-16은 컴퓨터를 감싸고 있던 복잡성의 껍질을 벗겨내어 누구나 브라우저에서 마음껏 뜯어볼 수 있도록 열어두었습니다. 컴퓨터에는 어떤 신비로운 마법도 쓰이지 않았습니다. 충분한 수의 동일한 스위치가 정해진 규칙에 따라 배치되면 시스템 전체가 스스로 작동합니다. 모든 것이 투명하게 공개된 컴퓨터는 그 자체로 가장 훌륭한 원리 교과서입니다.
참고 링크:
- NAND-16 프로젝트
- HN 토론
- Wikimedia Commons