1960년대 UNIVAC 컴퓨터, 마인크래프트 서버를 돌리다!
1960년대 UNIVAC 1219B 컴퓨터에서 마인크래프트 서버 로그인에 성공, NES 에뮬레이터, 웹 서버 등 다양한 프로그램 구동
RISC-V 에뮬레이터를 활용하여 C 컴파일러를 구축하고, UNIVAC 어셈블리 코드로 변환하는 툴체인 개발
LLM(Claude Code)을 활용한 코드 최적화, 특히 곱셈 연산 구현을 통해 성능을 30배 향상시킴
커뮤니티에서는 '마인크래프트 서버 구동'의 정의에 대한 논쟁이 발생, 실제 게임 플레이 미구현에 대한 지적
UNIVAC 1219B의 기술적 제약과 극복
UNIVAC 1219B는 18비트 워드, 원스 보수 산술(One's complement arithmetic), 90KB RAM, 뱅크 메모리(Banked memory) 등 현대적인 프로그래밍 환경과는 거리가 먼 특수한 아키텍처(Special Architecture)를 가지고 있다. 이러한 제약 속에서 저자는 RISC-V 에뮬레이터를 활용하여 C 코드를 실행할 수 있는 환경을 구축했다. 특히, UNIVAC 어셈블리 코드로 작성된 RISC-V 에뮬레이터는 성능 최적화(Performance Optimization)를 위해 다양한 기법을 적용했다.
RISC-V 에뮬레이터 기반 C 컴파일러 툴체인 구축
저자는 GCC를 사용하여 C 코드를 RISC-V로 컴파일하고, 이를 UNIVAC에 맞게 재인코딩하는 툴체인을 개발했다. 이 과정에서 RISC-V 명령어(RISC-V Instruction)를 UNIVAC에 효율적인 형식으로 변환하는 기술이 핵심적으로 사용되었다. 또한, LLM(Claude Code)을 활용하여 에뮬레이터의 성능을 최적화하는 시도를 했다. 특히, 곱셈 연산(Multiplication Operation) 구현을 위해 LLM을 활용하여 6배의 성능 향상을 이끌어냈다.
LLM을 활용한 코드 최적화 전략
저자는 LLM(Claude Code)을 활용하여 UNIVAC 에뮬레이터의 성능을 향상시키는 다양한 시도를 했다. 코드 재정렬(Code Reordering), 데드 코드 제거(Dead code elimination) 등 다양한 최적화 기법을 적용하여 전체적으로 약 20%의 속도 향상을 달성했다. 또한, LLM을 통해 곱셈 연산을 구현하여 성능 병목 현상(Performance Bottleneck)을 해결하고, 전반적인 프로그램 실행 속도를 30배 향상시켰다.
마인크래프트 서버 구동의 의미와 커뮤니티 반응
저자는 UNIVAC 컴퓨터에서 마인크래프트 서버의 로그인 프로토콜(Login Protocol)을 구현하는 데 성공했다. 하지만, 커뮤니티에서는 실제 게임 플레이가 불가능하다는 점을 지적하며, '마인크래프트 서버 구동'의 정의에 대한 논쟁이 발생했다. zimpenfish는 실제 게임 환경과 비교하며, 40KB 메모리 환경에서 Java 서버를 구동하는 것은 불가능하다고 주장했다. 이는 기술적 성과와 별개로, 목표의 현실성(Realism of the Goal)에 대한 비판으로 이어진다.