해결책
세계 최초의 상용 마이크로프로세서인 인텔 4004는 1971년 비지콤 141-PF 계산기를 위해 설계되었다. 트랜지스터 2,300개, 4비트, 740kHz, 인터럽트 없음, 심지어 AND나 OR 같은 기본 논리 연산조차 없었다. 하드웨어 해커 드미트리 그린버그는 2012년 역대 가장 저사양 기기인 8비트 AVR 마이크로컨트롤러에서 실제 리눅스를 구동해 기록을 세웠다가 이후 다른 이들에게 그 기록을 넘겨준 사람인데, 이번에는 그 기록을 최초의 마이크로프로세서까지 밀어붙이기로 했다.
비결은 불가능해 보이는 기기 안에 들어간 에뮬레이터다. 4004가 리눅스가 처음 이식되었던 DECstation 2100 워크스테이션의 아키텍처인 MIPS R3000의 에뮬레이터를 구동하는 것이다. 조회 테이블과 여러 기법으로 원시적인 CPU에서 성능을 짜내며, 최종 빌드는 4004를 790kHz로 오버클럭하고, 당시 시대에 맞는 인텔 MCS-4 지원 칩들로 둘러싸고, 리눅스 출력을 VFD 디스플레이에 표시하며 시리얼 입력을 받는데, 전력 소모는 약 6W다. 간소화된 데비안 리눅스가 4.76일 만에 명령 프롬프트까지 부팅되며, 명령 실행에는 며칠에서 몇 주가 걸릴 수 있다.
비아 없이 직각 배선만 사용한 맞춤 회로 기판은 벽에 걸어 예술 작품처럼 전시할 수 있다. 실용적 목적은 없지만 전체 회로도와 소스가 그린버그의 사이트에 공개되어 있으며, 그는 리눅스를 가장 느린 속도로 경험해 보고 싶은 사람들을 위해 키트를 판매하는 방안도 고려한 바 있다.
이룬 것
리눅스를 아래로 이식하지 말고, 위로 에뮬레이션하라. 즉 4004가 MIPS R3000 에뮬레이터를 구동하게 하여, CPU가 리눅스가 처음 이식되었던 기기를 에뮬레이션하게 만드는 것이다.
성공한 이유
문제를 에뮬레이션으로 재구성했다. 리눅스를 2,300개 트랜지스터에 밀어 넣는 대신, 4004에 리눅스를 구동할 수 있는 소프트웨어 기기를 제공한 것이다.
에뮬레이션 대상은 계보를 기준으로 선택했다. 리눅스가 처음 이식되었던 바로 그 기기인 DECstation 2100의 MIPS R3000이다.
조회 테이블이 실리콘에 물리적으로 없는 논리 연산을 대신한다. 이런 제약에 이끌린 기법이 이 위업을 가능하게 만든다.
마지막 세부까지 검증 가능하다. 회로도와 소스가 공개되어 있고, 부팅 시간은 측정 가능하다. 4.76일이다.
플랫폼이 소프트웨어를 구동할 수 없을 때는, 소프트웨어의 원래 고향을 겨냥한 에뮬레이션 계층으로 그 간극을 감싸라. 느린 기기 하나가 코드가 기대하는 기기를 가장하는 것이다.
그 후
아스 테크니카는 2024년 9월 이 프로젝트를 리눅스의 유연성과 에뮬레이션의 한계를 보여주는 사례로 보도했다. 그린버그는 키트나 조립된 기판을 판매하는 방안을 언급했지만, 출처에는 확정된 내용이 없다. 그의 2012년 AVR 기록은 다른 이들에게 넘겨졌고, 그것이 이 프로젝트를 시작하게 한 계기였다.
근거 확인하기
출처
- Linux boots in 4.76 days on the Intel 4004 Ars Technica · arstechnica.com ·