100KB도 안 되는 메모리로 인류를 달에 보낸 컴퓨터의 비결

100KB도 안 되는 메모리로 인류를 달에 보낸 컴퓨터의 비결

아폴로하드웨어오픈소스엔지니어링

데이터 소스:Raspberry Pi + HN

메모리는 채 100KB가 되지 않았고 동작 클록은 1.024MHz에 불과했다. 오늘날 브라우저에서 GIF 애니메이션 하나를 여는 데 쓰이는 임시 캐시만으로도 아폴로 유도 컴퓨터(AGC) 여러 대를 가득 채우고 남는다. 기가바이트 단위의 넉넉한 램 환경에 익숙해진 현대 개발자들에게 심우주 탐사는 엄청난 하드웨어 연산력이 뒷받침되어야 한다는 직관이 지배적이다.

1969년 발사된 아폴로 11호는 이러한 고정관념을 통쾌하게 부쉈다. 사령선과 달 착륙선에 각각 탑재된 AGC의 계산 능력은 훗날 출시된 애플 II 컴퓨터 수준에 불과했다. 그래픽 사용자 인터페이스(GUI)조차 없어 우주비행사는 직접 물리 키보드를 두드려 기기를 조작했다. 하지만 이 오래된 두 기계는 궤도 랑데부와 착륙 엔진 점화를 포함한 전체 과정을 단 한 번의 오차 없이 완수해냈다.

아폴로 달 착륙은 공학계에 명확한 진실을 증명했다. 시스템의 진정한 한계는 소프트웨어를 물리적 한계까지 극단적으로 다듬어내는 엔지니어링 장인정신에서 나온다는 사실이다. 반세기가 지난 지금, 캐나다의 항공전자 엔지니어가 자신의 책상 위에서 오픈소스 하드웨어를 활용해 이 전설적인 컴퓨터를 다시 깨워냈다.

항공전자 엔지니어가 책상 위에 재현한 아폴로 조종 콘솔

상업용 여객기의 항공전자 장비를 정비하는 마이클 뉴턴(Michael Newton)은 여가 시간을 쏟아 ‘Recreate Apollo’라는 오픈소스 프로젝트를 시작했다. 그의 목표는 우주선 조작의 핵심 기기인 DSKY(디스플레이 및 키보드 유닛)를 책상 위에서 1:1 실제 크기로 완벽하게 작동하도록 구현하는 것이었다.

복각된 DSKY 디스플레이와 키보드 사진: 원본 설계에 가깝게 복각된 DSKY 외형. 마치 방금 우주선에서 분리해 낸 듯한 형태를 갖추고 있다. 출처: Raspberry Pi

외형 케이스는 모듈형 3D 프린팅 부품들을 정교하게 결합해 제작되었으며, 표면에는 무광 밀리터리 그레이 색상의 차량용 도료를 칠해 세월의 흔적과 질감을 구현했다. 레트로 패널을 움직이는 심장은 라즈베리 파이 싱글보드 컴퓨터다. 라즈베리 파이 내부에서는 에뮬레이터가 구동되며, 당시 아폴로 13호 사령선에서 실제로 사용되었던 비행 소프트웨어 원본 코드를 그대로 실행한다.

뉴턴은 공식 잡지 《The MagPi》 171호 인터뷰에서 라즈베리 파이를 선택한 이유를 밝혔다. 전력 소모가 적고 발열이 적어 밀폐된 플라스틱 케이스 안에서도 장시간 안정적으로 동작할 수 있으며, 온보드 네트워크를 통해 원격 디버깅이 간편하다는 점을 꼽았다. 아울러 전체 운영체제 환경을 SD 카드 이미지 형태로 쉽게 배포할 수 있어 다른 메이커들이 곧바로 제작에 뛰어들 수 있다.

100KB 미만의 메모리로 우주선 비행 전체 과정을 이끌다

MIT 계측연구소는 닐 암스트롱이 달에 발을 디디기 3년 전인 1966년에 이미 AGC의 초기 버전을 납품했다. 오랜 선행 연구 과정에서 개발팀은 아직 성숙하지 않았던 초기 집적회로와 엄격한 무게 제한 사이에서 치열한 타협을 이어가야 했다. 그 결과 AGC는 실리콘 집적회로를 채택한 인류 최초의 컴퓨터가 되었으며, 당시 미국 전체 반도체 생산량의 약 60%를 소비했다.

반도체가 극도로 귀했던 시절, 메모리는 상상을 초월할 정도로 절제되어 설계되었다. 즉각적인 비행 데이터를 임시 저장하는 읽기/쓰기 RAM은 약 4KB에 불과했다. 내비게이션 비행 프로그램이 들어간 읽기 전용 메모리(ROM)를 모두 합쳐도 100KB를 넘지 않았다. 이 적은 자원으로 기체의 자세 제어 계산, 로켓 점화 예측, 궤도 수정 연산을 동시에 실시간으로 처리해야 했다.

비행사와의 상호작용 인터페이스 또한 극단적으로 단순화되었다. 화면에는 픽셀 개념이 전혀 없었고, 숫자 표시 세그먼트와 표시등만이 자리했다. 비행사는 궤도 수치를 확인하기 위해 2자리 수의 ‘동사(Verb)’ 코드와 ‘명사(Noun)’ 코드를 순차적으로 키보드에 입력했다. 불필요한 장식적 오버헤드를 철저히 걷어내고 귀중한 하드웨어 자원을 오직 천체역학 방정식 계산에만 집중시킨 구조였다.

소프트웨어를 극한까지 덜어내어 우주로 향하다

가혹한 하드웨어 한계에 맞서 개발팀은 시대를 앞서간 소프트웨어 아키텍처를 창안했다. 정전이나 우주 방사선으로 인해 프로그램 코드가 손실되는 사태를 방지하기 위해 프로그램은 ‘코어 로프 메모리(Core Rope Memory)‘에 물리적으로 짜 넣었다. 숙련된 작업자들이 바늘을 들고 미세한 원형 페라이트 코어 안으로 얇은 구리선을 꿰었다. 링 안을 통과하면 1, 바깥으로 우회하면 0을 뜻했다. 수작업으로 엮어낸 이 읽기 전용 메모리는 당시 칩 수준을 뛰어넘는 집적도를 자랑했으며 물리적인 진동과 방사선에도 끄떡없었다.

더욱 감탄스러운 부분은 태스크 스케줄링의 로직이었다. 엔지니어 할 래닝(Hal Laning)은 이 작은 기계를 위해 우선순위 기반 선점형 스케줄러를 설계했다. 아폴로 11호가 달 표면에 접근하던 결정적인 순간, 랑데부 레이더 설정 문제로 CPU에 수많은 무효 신호가 한꺼번에 쏟아져 들어왔다. 내부 작업 큐가 가득 차면서 시스템은 악명 높은 ‘1202’와 ‘1201’ 경보를 잇달아 울렸다.

현대의 운영체제라면 이런 갑작스러운 과부하 상황에서 기기 전체가 먹통이 되거나 멈췄을 것이다. 하지만 AGC의 스케줄러는 즉각 경중을 가려냈다. 레이더 화면 갱신과 같은 우선순위가 낮은 태스크를 거침없이 드롭하고, 중앙처리장치의 모든 연산력을 하강 로켓 제어와 기체 자세 안정화에 집중시켰다. 덜 중요한 계산을 과감히 버림으로써 우주선의 균형을 지켜냈고, 아폴로 11호는 안전하게 달 표면에 안착할 수 있었다.

먼지 쌓인 도면을 해독하고 100페이지 분량의 오픈소스 가이드를 공개하다

아카이브된 NASA 설계도를 바탕으로 3D 모델링된 부품들 사진: 모든 3D 출력 부품은 아카이브된 NASA의 원본 설계도를 기반으로 모델링되었다. 출처: Raspberry Pi

이 오래된 우주 장비를 복각하는 데는 수많은 사람들의 헌신적인 노력이 필요했다. 우주 애호가들은 정보공개 청구를 통해 원본 엔지니어링 도면 스캔본을 발굴했다. 이 귀중한 자료는 Virtual AGC 팀에 의해 디지털로 복원되었으며, 자원봉사자들은 수개월에 걸쳐 이를 현대 CAD 소프트웨어에서 인식 가능한 3D 입체 모델로 변환했다.

뉴턴은 앞서 연구를 진행했던 동료 메이커 에릭의 성과를 이어받아 누락된 도면 부품을 완성하고 수차례 시제품 출력을 거치며 설계를 다듬었다. 현대의 전자 부품과 스위치 규격에 맞추기 위해 실용적인 공학적 절충안도 도입했다. 외관은 역사적 원형을 90% 이상 정밀하게 재현하면서도, 내부 결합부와 키캡 글꼴은 데스크톱 3D 프린터의 가공 정밀도에 맞춰 세심하게 조정했다.

오픈소스로 배포된 CAD 모델과 제작 가이드 사진: CAD 파일, 전자 회로도 및 100페이지 분량의 조립 가이드가 GitHub에 무료로 공개되어 있다. 출처: Raspberry Pi

뉴턴은 프로젝트의 전 과정을 오픈소스로 투명하게 배포했다. 3D 모델링 파일과 회로도뿐만 아니라 100페이지에 이르는 상세한 조립 가이드북도 무료로 제공된다. 부품 가공부터 배선까지 세세하게 풀이되어 있어 기본적인 제작 환경만 갖추면 누구라도 우주 장비를 직접 만들어볼 수 있다. 박물관 유리 진열장 안에 갇혀 있던 역사적 기술 유산이 손으로 직접 만지고 배울 수 있는 교육용 플랫폼으로 탈바꿈한 셈이다.

연산력 과잉 시대에 되새기는 미니멀리즘 엔지니어링의 가치

오늘날의 소프트웨어 생태계는 유례없는 비대화의 악순환에 빠져 있다. 스마트폰에 12GB 메모리가 탑재되는 시대임에도 애플리케이션들은 방대한 코드 군더더기와 무거운 종속성 탓에 버벅거리기 일쑤다. 개발자들은 수십 겹의 프레임워크 라이브러리를 무심코 끌어다 쓰고, 단순한 텍스트 창 하나를 띄우는 데도 수백 메가바이트의 메모리를 소모한다.

아폴로 유도 컴퓨터의 복각은 현대 기술인들에게 날카로운 거울을 비춰준다. 인류가 달을 향해 내딛은 가장 위대한 탐험은 결코 넘쳐나는 하드웨어 스펙 덕분이 아니었다. 공학의 진정한 힘은 불필요한 군더더기를 냉철하게 쳐내고, 한정된 자원을 핵심 논리 경로에 집중시키는 절제력에서 나온다.

1.024MHz에 불과한 골동품 기계도 달에 도달할 수 있었다. 오늘날의 비대한 소프트웨어 아키텍처는 이를 보고 뼈아픈 반성을 해야 한다. 연산 능력은 논리를 실행하기 위한 도구일 뿐, 설계 자체의 구조적 결함을 결코 가려줄 수 없다. 자원에 대한 엄격한 절제와 존중이 깃들 때 비로소 거친 현실 환경에서도 흔들림 없는 강건한 공학 시스템을 세울 수 있다.

참고 링크:

  • Raspberry Pi 공식 보도
  • Virtual AGC 프로젝트 역사 아카이브
  • Recreate Apollo 오픈소스 하드웨어 가이드