Apollo 11 미션의 코드에 사용 된 개발 프로세스?


57

아폴로 임무에는 포켓 계산기보다 더 복잡한 기술이 없었습니다.

여기 링크 에서 Apollo Guidance Computer (AGC)에 대한 정보가 있습니다

온보드 아폴로 가이던스 컴퓨터 (AGC)는 2K의 16 비트 RAM과 36K의 하드 와이어 코어-로프 메모리를 갖춘 약 1 입방 피트 (cubic foot)였으며 작은 자성 코어를 통해 스레드되거나 스레드되지 않은 구리 와이어를 가진 36K의 하드 와이어 코어-로프 메모리입니다. 16 비트 워드는 일반적으로 14 비트의 데이터 (또는 2 개의 op- 코드), 1 개의 부호 비트 및 1 개의 패리티 비트였다. 사이클 시간은 11.7 마이크로 초였다. 프로그래밍은 어셈블리 언어와 해석 언어로 이루어졌다.

그래서 나는 거기에 무엇이 있는지 조사 할 때 소스 코드를 우연히 발견했으며 큰 의견을 발견했습니다 (예 : 임시, 희망 희망)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

우주선의 실제 프로그램은 코어 로프 메모리에 저장되었다. 코어 로프 메모리 는 직물 / 로프를 (문자 그대로) 직조하여 만들어진 고대의 메모리 기술로, 비트는 페라이트 물질의 물리적 고리였다. "코어"메모리는 우주 광선에 강합니다. 우주에서 방사선으로 충격을 받았을 때 코어 비트의 상태는 변하지 않습니다.

AGC (Virtual Apollo Guidance Computer) 소프트웨어도 GITHUB에 있습니다!

설명서의 일부가 여기 있습니다.

좋은 의견을 가진 또 다른 소스 코드 샘플.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

내 질문은 이것입니다 :

  • 이 많은 코드를 작성하는 팀은 당시 도구를 사용하여 어떻게 기능을 만들 수 있었습니까?

Apollo 11에서 사용 된 코드를 너무 많이 컴파일하면 며칠, 심지어 몇 주가 걸리기 때문입니다. 나는 프로그래머가 그때 우연히 모든 일을 떠 났음을 의심합니다.


4
주제에 대해 더 희망적으로 만들기 위해 상당히 중요한 수정 작업을 수행했습니다. 나는 그것이 매혹적인 질문이라고 생각하며 사람들이 효과적으로 대답 할 수 있기를 바랍니다.
enderland

3
해커신화적인 남자의 달을 읽으십시오 . 거기에 꽤 많은 자료가 있습니다-나는 그것이 여기에 대한 대답에 맞는지 확실하지 않습니다.

2
"태그-질문"스타일 질문 제목은 Stack Exchange에서 권장되지 않습니다. 제목을 그대로 두십시오.

4
귀하의 질문에서 제안하는 것처럼 컴파일 / 수정주기가 없었습니다. 로프 메모리를 작성하지 않고 테스트 한 다음 작동하지 않으면 다시 실행하십시오. 당신은 처음에 맞았습니다.
Robert Harvey

7
@RobertHarvey 당신 HOPE HOPE HOPE은 처음에 바로 그것을 얻을.

답변:


13

존 '잭'에 대해 추격 하려던 멋진 다큐멘터리가 있었다. 가먼은 "우선 순위 예약 멀티 프로그래밍 운영 체제"를 "발명"해야했다. 이것은 랜더 모듈과 관련이있을 수 있습니다. 이야기는 당신이 착륙선을 착륙 할 때 당신이 추락하고 화상을 입었을 때 오두막의 기온과 같은 다른 것들이 실제로 중요하지 않기 때문에 안내에 우선 순위를 두는 것이 었습니다. 첫 번째 샷에서 컴퓨터에 과부하가 걸리고 일부 서브 루틴이 실행되지 않아 알람이 발생하기 시작했습니다. 로드가 너무 많았지 만 Garman이 좋은 아이디어라고 생각했기 때문에 Garman이 예지하고 내장 한 우선 순위 개념 덕분에 우선 순위가 낮은 루틴이 우선 순위가 높은 착륙 루틴을 멈출 수 없었습니다.

당시의 다큐멘터리를 보면서 경영진에게 말하지 않고 코드에 대한 주요 리팩토링을 수행하고 작업에 늦었 기 때문에 거의 해고당하는 것과 같은 방식에 놀랐습니다. 그러나이 경우 경보의 원인을 조사 할 때 리팩토링이 켜졌습니다. (그리고 관리는 여전히 화가났다! :-)

일부 링크 :

아니요,“체크리스트 오류”는 첫 달 착륙을 거의 막지 못했습니다

LUNAR MODULE GUIDANCE COMPUTER의 테일

구축 방법 : Apollo 11의 소프트웨어

NASA Johnson Space Center 구두 이력 프로젝트 구두 이력 편집

NASA의 아폴로 프로그램 발췌 : 발췌 5 분, 달 표면에서 1,800m 떨어진 LM 내비게이션 및 안내 컴퓨터는 예상치 못한 "1202"및 "1201"프로그램 알람 중 첫 번째 알람을 생성했습니다. 잭 가먼 휴스턴에있는 미션 컨트롤 센터의 컴퓨터 엔지니어는 스티브 베일 스 (Steve Bales)지도 책임자에게 하강을 계속하는 것이 안전하다고 말했다. 이러한 경보는 "실행 오버플로"표시로, 안내 컴퓨터가 모든 작업을 실시간으로 완료 할 수 없었으며 일부를 연기해야했습니다.

'거대한 도약' 발췌 : 그러나 우리는 과부하 조건에서 복구를 시도하는 시스템을 설계했습니다. [NASA 컴퓨터 엔지니어] Jack Garman이 "가자!" 그리고 그들은 갔다. 그런 다음 Neil이 LEM을 켜고 터치 다운하기에 좋은 지점을 찾으려고 들었습니다. 우리의 새로운 걱정은 연료 잔량이 부족했다는 것입니다. 그러나 마침내 우리는 연락 통지를 듣고 "이글이 착륙했습니다."

잭 가먼 인터뷰

편집 : 아마도 이것은 다큐멘터리 일 것입니다 : Apollo 11 : The Untold Story (2006)

캐스트 : John R. Garman ...
자신 -Apollo 11 컴퓨터 엔지니어 (Jack Garman)

(다른 것들 중에서).

업데이트 : 남아프리카의 해커가 우주에서 최초의 NASA 컴퓨터를 구출했습니다.


나는 그 이야기가 친숙하게 들렸다는 것을 알고 있었다! "Apollo 11"섹션은이 이야기에 대해 en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
hydo

31

올바르게 이해하면 개발 프로세스는 동료 검토 및 실험이었습니다.

이 팀은 "Math Doctors"와 같은 사람들로 구성되어 있습니다. – 헌신적이고, 지능적이며, 열정적이고, 세부적인 사람들이 일에 헌신했습니다. 따라서 동료 검토라고 할 때 몇 개월 (1 년 이상) 동안 많은 동료 검토를 의미합니다.

이 개발자는 "머리에 시뮬레이션을 실행"하고 "종이에 소프트웨어를 논쟁"했으며 많은 개발자가 동일한 코드를 반복해서보고 올바른 것으로 확신 할 때까지 그룹으로 작업했습니다. 여러 팀이 있었으며 각 팀은 전체의 일부를 작업했습니다.

오하이오 주립대 학교 (Ohiio State University)의 Numerical Methods 교수 (Spring '96)는 부스터 로켓의 무대를 시작하는시기를 결정한 코드를 작성했습니다. 그는 출력물이 전화 번호부의 크기라고 설명했습니다 (따라서 8.5 x 11 인치 용지의 2.5-3.5 인치 두께 (글꼴 크기는 설명하지 않았습니다)).

그들이 확신 할 때, 그들은 규칙적인 간격으로 경고음을내는 라디오가 탑재 된 무인 미사일 (기술적으로 자이로 스코프가없는 로켓)을 발사했습니다. 그들은 무전기가 달에 영향을 미치고 (충돌하고 스스로 파괴 함) 경고음을 멈추는 지점까지 경고음을 들었다. 그들은 만약 그들이 놓쳤다면, 계산 된 충격 시간이 지난 후에도 라디오가 계속 삐 소리를 낼 것이라는 것을 알고있었습니다. 계산 시간 15 초 후에 영향이 발생했습니다.

이 일화적인 이야기는 의사와의 사무실 방문에서 얻은 추억입니다. 그는 아주 나이가 많았고 오래 전이었습니다. 이것이 나의 최고의 추억입니다.


2
그는 인쇄물의 크기가 전화 번호부의 크기라고 설명했습니다 (따라서 2.5 x 3.5 인치 두께의 8.5 x 11 인치 용지 일 수 있음). 일반적으로 코드는 가로 모드에서 페이지 당 약 55-60 줄로 인쇄되었습니다. 인쇄 용지의 두께는 약 1.75 인치
길버트 르 블랑

@GilbertLeBlanc 연량은 일반적으로 500 매입니다. (때로는 480)
joshp

@ joshp : 당신이 맞아요. 인쇄 용지 500 매의 두께는 약 1.75 인치입니다.
길버트 르 블랑

15

AGC는 동사와 명사로 제어됩니다.

Apollo 명령 소프트웨어는 오늘날 사용자가 인식 할 수있는 구문으로 작성되지 않았습니다. 우주 비행사는 숫자 또는 동사 또는 명사를 나타내는 두 자리 숫자로 명령을 입력합니다. 동사는 수행 할 조치를 설명했으며 명사는 동사의 조치에 의해 영향을받는 데이터를 지정했습니다.

우주 비행사는 동사와 명사 설정을 싫어했습니다.

최초의 AGC 하드웨어 개발자 중 한 명인 Ramón Alonso는 인터페이스가 실험실 방문자에게 깊은 인상을주기 위해 발명되었지만 아무도 더 나은 인터페이스를 개발하지 못했을 때 비행에 갇혀 있다고 말했다. 비평가들은 이것이 "과학적"이 아니며, 최초의 우주 비행사들-모든 엘리트 제트 조종사-비행기 제어판과 비슷한 다이얼과 스위치를 선호한다고 말했다.

"AGC는 그 당시 디지털 컴퓨터 역사상 매우 느리지 만 신뢰성이 높았으며 매우 작았습니다. 집적 회로를 사용하는 것이 가장 초기였습니다."

설계된 소프트웨어는 기본적으로 MIT에서 처음부터 작성했습니다.

Apollo Guidance Computer 에뮬레이터 프로그램을 PC에 다운로드하여 설치할 수 있습니다. Mac OS X의 모습은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


8

거의 모든 다른 소프트웨어 프로젝트와 마찬가지로 공격적인 마감 시간과 품질 압력 하에서 수행되었습니다. 다행스럽게도 소프트웨어 프로젝트 관리자 인 Howard W.“Bill”Tindall, Jr.대규모 자료 보관소가 여기에 있습니다 .

메모를 샘플링하면 시간, 기능 및 결함 사이의 일반적인 충돌을 매우 잘 이해할 수 있습니다. 개발이 프로젝트의 나머지 부분과 같이 수년에 걸쳐 진행되었다는 점은 주목할 가치가 있습니다.

이 시스템의 설계는 1961 년 2 분기에 시작되었고 NASA는 1965 년 9 월 22 일 우주선에 Block I 버전을 설치했습니다. 최초의 소프트웨어 (CORONA)는 1966 년 1 월에 출시되었으며 8 월 25 일에 첫 비행이있었습니다. 그 후 3 년이 채 지나지 않아 디자이너들은 최종 프로그램 목표를 달성했습니다 ( http://history.nasa.gov/computers/Ch2-5.html )

소프트웨어가 어떻게 만들어 졌는가에 대한 구체적인 언급을 찾을 수는 없지만, 날짜가 주어지면 펜과 종이에서 많은 작업이 수행되었다고 가정 할 수 있습니다. 로프 메모리를 제작할 필요없이지면에서 "빠른"테스트를하기 위해 펀치 카드를 사용하여 프로그램을 AGC에로드하는 시스템이있는 것 같습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.