김검사의 하루

이전 글

 

 

동서남북은 물론이고 위아래 구분도 없는 우주에서 40만 km나 떨어진 달까지 다녀오려면 어떻게 항해를 해나가야 할까?

 

NASA 내부에서도 이 문제를 매우 중요하게 인식하고 있었다. 그래서 모든 아폴로 프로그램을 통틀어 가장 먼저 이루어진 계약이 바로 MIT Instrumentation Lab과 유도 항해 시스템(Guidance and Navigation System)을 개발하는 것이었다. 이 계약이 얼마나 빨리 이루어졌냐면 케네디 대통령이 달에 다녀오겠다는 계획을 처음 밝히고 채 10주가 지나지 않은 1961년 8월에 계약이 이루어졌다. 

 

사실 당시에도 이 문제에 대한 답은 어느 정도 알려져 있었다. 바로 대륙간 탄도 미사일에도 적용된 관성 유도 시스템 (Inertial Guidance System)이 그것이다. 미사일이 정확히 어느 지점에서, 어느 방향으로, 얼마의 속도로 출발을 했다는 것만 알고 있다면 현재 자신의 위치를 알 수 있으며 미사일에 내장된 원시적인 형태의 컴퓨터가 이를 이용해 정확히 목표를 타격하는 것이 바로 관성 유도 시스템이다. 이 시스템은 MIT Instrumentation Lab의 디렉터였던 찰스 스타크 드레이퍼(Charles Stark Draper)에 의해 개발되었으며 그는 항공 계기의 경량화와 정확도 분야에서 최고의 전문가였다. 그렇기 때문에 MIT Instrumentation Lab이야말로 아폴로 우주선에 사용될 유도 항해 시스템 개발의 적임자라고 할 수 있었다.

 

그런데 아폴로 우주선에 사용될 계기의 정확도를 높이고 크기를 줄이는 것도 물론 중요했지만 더 중요한 문제는 이 계기들에서 얻어진 정보를 이용하여 어떻게 우주선을 효율적으로 제어하냐는 것이었다. 아폴로 우주선 이전의 비행기나 우주선들은 조종사들이 직접 스위치나 레버, 버튼 등을 조작하여 항해를 했지만 아폴로 우주선에서는 크기와 무게의 제한으로 인하여 기존의 방법을 따를 수 없었다. 그래서 NASA와 MIT Lab에서는 컴퓨터를 이용하여 아폴로 우주선의 항해를 제어하기로 결정하였다. 

 

물론 처음부터 NASA가 컴퓨터로 우주선을 제어한다는 생각에 동의한 것은 아니었다. 당시까지만 해도 컴퓨터는 매우 고장이 잦았고 크기도 컸다. 기껏해야 몇 시간 사용하다 컴퓨터가 멈추면 고쳐서 다시 사용했고 길어야 며칠 정도를 사용하는 수준이었다. 따라서 처음에는 우주 비행사들의 생명이 달려있는 우주선에 이것을 설치한다는 것은 상상할 수 없는 일이었다. 하지만 앞서 말한 것과 같이 우주선의 무게를 줄이기 위해서는 컴퓨터를 사용하는 것 이외에는 답이 없었다. 다음 문제는 어떻게 크기를 줄이냐는 것이다.

 

건물 전체를 차지할 정도로 크고 전력 소모가 컸던 기존의 컴퓨터를 신발 박스 크기로 줄일 수 있었던 이유는 바로 집적 회로(Integrated Circuit)를 사용했기 때문이다. 당시에는 집적 회로가 개발된 지 얼마 지나지 않았던 때로 본격적인 상용화가 이루어지기 전이었다. 그렇지만 MIT의 하드웨어 개발자들이 NASA의 허락을 받아(개발자의 인터뷰를 들어보면 NASA가 '어리석게도' 이것을 허락해서 다행이라고 한다. 요즘 같으면 누가 검증도 안된 기술을 매우 중요한 프로젝트에 사용하겠냐며) 이 집적 회로를 적용하였고, 아폴로 프로그램이 정점을 찍었을 때에는 미국에서 생산되는 집적 회로의 60%를 아폴로 프로그램에서 사갔다고 한다.

 

내가 소개하고 있는 팟캐스트인) '13 Minutes to the Moon'에서 이러한 말이 등장한다. '사람들이 아폴로 이전에는 자신들의 컴퓨터의 크기가 얼마나 큰지 자랑을 했지만 아폴로 이후에는 자신들의 컴퓨터 크기가 얼마나 작은 지를 자랑했다. 이때가 되어서야 사람들이 컴퓨터의 크기가 작으면 작을수록 더 효과적으로 사용할 수 있다는 사실을 깨달았다'. 그만큼 아폴로 프로그램이 컴퓨터의 발달에 끼친 영향은 크다고 할 수 있겠다.

 

아래 그림은 아폴로 가이던스 컴퓨터가 어떻게 활용되는지 보여주는 그림이다. 요즘이야 컴퓨터가 모든 것을 제어하는 것이 당연한 세상이지만 당시에는 컴퓨터가 모든 것을 제어한다는 사실을 받아들이기 어려운 사람도 많았다.

 

 

아폴로 커맨드 모듈 GN & C (Guidance, Navigation, and Control) 시스템 개념도 (http://web.mit.edu/digitalapollo/Documents/Chapter6/hoagprogreport.pdf)
아폴로 루나 모듈 GN & C (Guidance, Navigation, and Control) 시스템 개념도 (http://web.mit.edu/digitalapollo/Documents/Chapter6/hoagprogreport.pdf)

 

 

이렇게 하여 컴퓨터의 크기와 무게가 획기적으로 줄어드는 것으로 아폴로 가이던스 컴퓨터의 이야기가 끝나면 글을 쓰는 나도 좋겠지만(어쩌다 보니 일이 커져서 아폴로 이야기에 너무 많은 에너지를 쏟아붓고 있다. 이 글도 삼일에 걸쳐서 몇 시간째 쓰는 것이다), 이제 문제는 이 컴퓨터를 이용해서 어떻게 위와 같이 수많은 시스템을 조절하느냐는 것이었다. 그래서 등장하는 것이 바로 '소프트웨어'이다.

 

재미있는 사실은 아폴로 프로그램이 시작되고 유도 항해 시스템 개발 계약이 이루어질 당시에는 '소프트웨어'라는 말 자체가 존재하지 않았고, 누구도 이것의 중요성을 알지 못했다는 것이다. 당시 NASA와 MIT 사이에 이루어진 계약서를 보면 가장 눈에 띄는 것이 두 가지 있는데, 첫째는 이 중요한 계약이 단 10 페이지였고(요즘 같으면 수 만 페이지로도 모자랄 것이다), 둘째는 그 어디에도 '소프트웨어'에 관련된 말이 없었다는 것이다(그러한 말 자체가 존재하지 않았으니 당연한 이야기이다). 오직 계약서 끝 부분에 'MIT에서는 이 컴퓨터가 잘 작동할 수 있도록 프로그램을 제공한다' 정도의 문장 하나만 들어있었다고 한다.

 

그런데 아폴로 가이던스 컴퓨터를 개발하는 과정에서 점점 소프트웨어의 중요성과 복잡성이 대두되었고 잘못하다가는 소프트웨어 때문에 1960년대 말로 정해진 달착륙 기한을 맞추지 못할 수도 있다는 위기감까지 생길 정도였다. 하지만 NASA와 MIT는 이 어려움 또한 극복해 내는데 이것의 개발자들이야 말로 아폴로 프로그램에 참여한 모든 사람들 중 가장 뛰어나고 창의적이라고 불릴만하였다.

 

아폴로 프로그램에 관련된 사진을 보다 보면 이 사진이 자주 눈에 띈다. 사진은 마가렛 해밀턴(Margaret H. Hamilton)으로 커맨트 모듈과 루나 모듈에 실린 컴퓨터 프로그램 개발 책임자였다.

 

아폴로 가이던스 컴퓨터에 사용된 소프트웨어 개발 이야기를 듣고 있으면 어떻게 그것을 개발을 했다는 것인지 잘 상상이 안될 정도이다. 당시에는 프로그래머들이 코드를 만들어서 넘기면 다른 사람이 그 코드를 종이 펀치에 옮긴 후 밤새 프로그램을 돌려 문제가 없는지를 확인했다고 한다. 컴퓨터 프로그래밍에 대해서는 별로 지식이 없는 나로서는 아래의 펀치 카드로 어떻게 프로그램을 만들 수 있는지 궁금하기만 하다. 아무튼 이 과정에서 (물론) 에러가 발견되는데 이것에 매료된 마가렛 해밀턴 등은 후에 '소프트웨어 엔지니어링(Software Engineering)'이라는 분야를 만들어 내게 된다.

 

1960년대 후반이나 1970년대 초반 사용된 펀치 카드(Punched Card).  (출처: Wiki)

 

그다음에 할 일은 이렇게 만들어진 프로그램을 아폴로 우주선에 실리는 컴퓨터에 업로드하는 것이다. 당시 프로그램의 업로드는 물리적으로 업로드를 하는 것이었는데 마그네틱 코어(Magnetic Core)와 와이어를 이용하였다. 와이어가 코어를 통과하면 '0', 돌아가면 '1'이 되는 식인데 직조(織造)와 동일한 방식이기 때문에 당시 직물(Textile)을 만들던 사람들이 만들었다고 한다. 그런데 이것 또한 나로서는 어떻게 했는지 이해가 잘되지 않는다. 도대체 아래 사진의 물건이 어떻게 작동을 한다는 것인지 상상조차 잘 되지 않는다.

 

아폴로 프로그램에 사용된 Core Rope Memory의 샘플 (출처: Wiki)

 

 

이제 아폴로 가이던스 컴퓨터에 필요한 마지막 한 가지만 남았다. 그것은 바로 입력 시스템이다. 지금이야 키보드, 마우스, 터치 스크린 등 컴퓨터를 조작할 수 있는 방법이 많이 있지만 그 당시에는 그 어떠한 것도 존재하지 않았기 때문에 사람이 컴퓨터를 실시간으로 조작을 할 수 있는 방법을 찾아내야만 했다.

 

이에 MIT 출신의 수학자 라몬 알론소(Ramon Alonso)가 놀랍도록 간단한 방법을 개발해 냈다. 그것은 바로 명령어를 동사(Verb)와 명사(Noun)로 구분하는 것이었다. 예를 들어 15초 이후 루나 모듈의 달 착륙 프로그램을 실행하고자 한다면 Noun + '63(P63, 프로그램 63을 의미, 미리 컴퓨터에 프로그램되어 있음)' + Verb +15를 누르면 되는 식이다. 아래 사진에서 볼 수 있는 이러한 입력 방식을 DSKY ('디스키'라고 발음, Display + Keyboard 라는 의미) 라고 하였으며 간단하면서도 매우 효과적인 입력 시스템이었다.

 

아폴로 루나 모듈의 DSKY 다이어그램 (출처: Wiki)

 

이렇게 만들어진 아폴로의 가이던스 컴퓨터는 아래와 같은 모양이었다. 아래 사진은 커맨드 모듈에 들어가는 가이던스 컴퓨터와 내비게이션 시스템이다. 50년 전의 기술로, 현재 단위로 환산하면 겨우 76KB에 불과한 메모리의 컴퓨터가 달까지 다녀오는 일을 해냈다니 그저 놀라울 뿐이다.

 

아폴로 커맨드 묘듈에 사용된 최종적인 가이던스와 네비게이션 시스템. 사진의 시스템은 MIT Lab에서 테스트를 위해서 사용되었다. (출처: A History in 50 Objects, Apollo to the Moon, National Geographic)

 

 

끝으로 (놀랍게도) 이 시리즈의 글들은 최초에는 팟캐스트를 소개하기 위한 글로 쓰기 시작했으며 이번 이야기는 다음에서 잘 소개되고 있다.

 

 

Ep.05 The fourth astronaut

 

BBC World Service - 13 Minutes to the Moon, Ep.05 The fourth astronaut

The computer that got us to the moon. There had never been anything like it

www.bbc.co.uk

 

다음 글

 

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band