Apollo 11 görevindeki kod için kullanılan geliştirme süreci?


57

Apollo misyonları, bir cep hesap makinesinden daha karmaşık bir teknolojiye sahip değildi.

Bağlantısından burada Apollo Rehberlik Bilgisayar hakkında bir bilgi yoktur (AGC)

Yerleşik Apollo Rehberlik Bilgisayarı (AGC), 2K 16-bit RAM ve minik manyetik çekirdeklerden geçirilmiş ya da geçirilmemiş bakır tellerle 36K sabit kablolu çekirdek halat hafızası ile yaklaşık 1 fit küptü. 16 bitlik kelimeler genellikle 14 bit veri (veya iki op kod), 1 işaret biti ve 1 eşlik bitidir. Döngü süresi 11.7 mikro saniye idi. Programlama assembly dilinde ve yorumlayıcı bir dilde, ters Lehçe dilinde yapılmıştır.

Bu yüzden, orada olanları araştırdığımda bazı kaynak kodlara rastladım ve harika yorumlar gördüm (örneğin, TEMPORARY, I HOPE HOPE)

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

Uzay aracındaki gerçek programlar , bitlerin ferrit malzemenin fiziksel halkaları olduğu kumaş / ip dokumasıyla (kelimenin tam anlamıyla) yapılan eski bir bellek teknolojisi olan çekirdek ip hafızasında saklandı . “Core” belleği kozmik ışınlara karşı dayanıklıdır. Outer Space’teki radyasyon tarafından bombalandığında çekirdek bitin durumu değişmeyecek.

Sanal Apollo Rehberlik Bilgisayarı (AGC) yazılımı da GITHUB'da!

Belgelerin bir kısmı burada.

Kaynak kodu ile harika yorumlar yapan bir başka örnek.

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

Buradaki sorum şu:

  • Bu kadar kod yazan ekipler, o zamanki araçlar göz önüne alındığında işlevsel hale getirmeyi nasıl başardılar?

Çünkü Apollo 11'de kullanılan çok fazla kod derlerseniz ... ... haftalar sürebilir. Programcıların daha sonra her şeyi tesadüfen bıraktıklarından şüpheliyim.


4
Konuyla ilgili umarım daha fazla şey yapmak için oldukça önemli bir düzenleme yaptım. Bence bu büyüleyici bir soru ve insanların etkili bir şekilde cevap vermelerini umuyorum.
enderland

3
Hacker'ları ve Efsanevi Adam Ayını okuyun . İçinde oldukça fazla malzeme var - Buradaki bir cevaba uyacağından emin değilim.

2
"Etiket - Soru" tarzı soru başlıkları Stack Exchange'de önerilmemektedir. Lütfen unvanı olduğu gibi bırakın.

4
Sorunuzun önerdiği gibi bir derleme / düzeltme döngüsü yoktu. Halat hafızası yaratmadınız, test etmediniz ve işe yaramadıysa tekrarlayın; ilk seferinde doğru yaptın.
Robert Harvey,

7
@RobertHarvey HOPE HOPE HOPE, ilk defa haklısın.

Yanıtlar:


13

John 'Jack' hakkında kovalamaya çalıştığım güzel bir belgesel vardı. Garman, "öncelikli zamanlanmış çoklu programlama işletim sistemini" icat etmek zorunda kaldı. Bu olsa da lander modülüyle ilgili olabilir. Hikaye şuydu: İnişteyken, rehberliğe öncelik vermeniz daha iyi olur çünkü sonraki 15 saniye boyunca kabin içindeki sıcaklık gibi diğer şeyler çarpıp yandıysanız gerçekten önemli değildi. İlk çekimde bilgisayarı aşırı yüklediler ve alarmlar bazı alt rutinlerin yerine getirilmediğinden gerçekleşmeye başladı. Çok fazla yük vardı, ama Garman'ın iyi bir fikir olduğunu düşündüğü için öngördüğü ve geliştirdiği öncelikli konsept sayesinde, düşük öncelikli rutinler daha yüksek öncelikli iniş rutini aşağılamadı.

O sırada belgesel izlerken, yönetime haber vermeden kod üzerinde büyük bir yeniden düzenleme yapmanın ve neredeyse üzerinde kovulmaya başlamanızın nasıl geçtiğini düşündüğüm için etkilenmiştim. Bununla birlikte, bu durumda, alarmların nedeni araştırıldığında yeniden yapılandırma yanmaya başlamıştır. (Ve yönetim hala sinirlendi! :-)

Bazı bağlantılar:

Hayır, “kontrol listesi hatası” ilk aya inişini neredeyse rayından çıkarmadı

LUNAR MODÜLÜ REHBERLİK BİLGİSAYARINDAN MASALLAR

Nasıl İnşa Ediyorlar: Apollo 11'in Yazılımı

NASA Johnson Uzay Merkezi Sözlü Tarih Projesi Sözlü Tarih Düzenlendi

NASA’nın Apollo Program Alıntısının kısa tarihi : LM navigasyon ve rehberlik bilgisayarı, beklenmedik “1202” ve “1201” program alarmlarından ilki üretti. Houston'daki Görev Kontrol Merkezi'ndeki bilgisayar mühendisi Jack Garman, rehberlik görevlisi Steve Bales'e inişe devam etmenin güvenli olduğunu söyledi. Bu alarmlar “yönetici taşması” nın bir göstergesiydi; bu, rehber bilgisayarın tüm görevlerini gerçek zamanlı olarak tamamlayamadığı ve bazılarını ertelemesi gerektiği anlamına geliyordu.

'Dev Sıçrama' Alıntısını hatırlatarak : Ne olduğunu ve olmaması gerektiğini biliyorduk. Ancak herhangi bir aşırı yük koşulundan kurtarılması zor olan bir sistem tasarladık. Bu yüzden [NASA bilgisayar mühendisi] Jack Garman'ın “Git, git!” Diye bağırdığını duyduğumu hatırlıyorum. Ve gittiler. Daha sonra Neil, LEM'i uçarken ve temas için iyi bir yer bulmaya çalışırken dinlerdik. Yeni kaygımız kalan yakıt eksikliğiydi. Ama nihayet irtibat bildirimini duyduk ve sonra "Kartal indi."

Jack Garman Röportaj

EDIT: Belki de bu belgesel oldu: Apollo 11: The Untold Story (2006)

Oyuncular: John R. Garman ...
Kendisi - Apollo 11 Bilgisayar Mühendisi (Jack Garman olarak)

(Diğerleri arasında).

Güncelleme: Güney Afrika'dan Bir Hacker Uzaydaki İlk NASA Bilgisayarını Kurtardı


Bu hikayenin tanıdık geldiğini biliyordum! "Apollo 11" bölümünde bu hikaye hakkında daha vardır ) en.wikipedia.org/wiki/Margaret_Hamilton_(scientist
HYDO

31

Doğru anlarsam, geliştirme süreci akran incelemesi ve denemesiydi.

Ekip, “İşi Doktorlar” gibi insanlardan oluşuyordu - yaşamları işlerine adanmış, son derece özverili, zeki, tutkulu, ayrıntı odaklı insanlar. Bu yüzden, meslektaş değerlendirmesi derken, aylarca (bir yıldan fazla) birçok akran değerlendirmesi demek istiyorum.

Bu geliştiriciler, "kafalarındaki simülasyonları koştular", "kağıt üzerinde yazılımda hata ayıkladılar" ve birçok geliştiricinin doğru olduğuna ikna oluncaya kadar aynı kodu tekrar tekrar arayan gruplarla çalıştılar. Her biri bir bütünün üzerinde çalışan çok sayıda ekip vardı.

Sayısal Yöntemlerim Ohio State Üniversitesi'ndeki (Bahar '96) profesör, ne zaman destek roketinin bir aşamasını başlatacağına karar veren kodu yazdı. Çıktıyı telefon rehberinin boyutu olarak tanımladı (Yani, 8,5 x 11 inç kağıttan belki 2,5 - 3,5 inç kalınlığında - yazı tipi boyutunu açıklamadı).

İkna edildiklerinde, düzenli aralıklarla bip sesi çıkaran bir radyo ile insansız bir füze (teknik olarak jiroskoplara sahip olmayan roketler) fırlattılar. Radyonun ayı etkilemesini (içine çarpıp kendini yok etmeyi) ve bip sesini kesmesini bekledikleri noktaya kadar bip sesini dinlediler. Eğer kaçırırlarsa, radyonun hesaplanan etki zamanının çok uzun süre boyunca bip sesi çıkarmaya devam edeceğini biliyorlardı. Etki, hesaplanan süreden 15 saniye sonra meydana geldi.

Bu itirafsız anekdot hikayesi doktorla yaptığım bir ofis ziyaretinden hatırladığım şeyler. Çok yaşlıydı ve uzun zaman önceydi. Bu benim en iyi hatıralarım.


2
Çıktıyı telefon rehberinin boyutu olarak tanımladı (Yani, belki 2,5 - 3,5 inç 8,5 x 11 inç kalınlığında kağıt) Genel olarak, kod sayfa başına yaklaşık 55 - 60 satır içeren yatay modda yazdırılmıştır. Çıktı kağıdının kalınlığı yaklaşık 1,75 inç kalınlığındadır
Gilbert Le Blanc

@ GilbertLeBlanc Bir oluk tipik olarak 500 yapraktır. (bazen 480)
joshp

@joshp: Haklısın. 500 sayfa çıktı kağıdı yaklaşık 1,75 inç kalınlığındadır.
Gilbert Le Blanc

15

AGC fiiller ve isimlerle kontrol edilir

Apollo komut yazılımı, kullanıcıların bugün tanıyacağı herhangi bir sözdiziminde bulunmaz. Astronotlar giriş, bir fiili veya bir ismi temsil eden her iki basamaklı sayı ile sayısal olarak komut verir. Fiil, gerçekleştirilecek eylemi, isim ise fiilin eyleminden etkilenecek verileri belirledi.

Astronotlar fiil ve isim kurulumundan nefret ediyordu

Orijinal AGC donanım geliştiricilerinden biri olan Ramón Alonso, arayüzün ziyaretçileri laboratuvarlarına etkilemek için icat edildiğini, ancak hiç kimse daha iyi bir arayüz geliştiremediğinde uçuşlarda takıldığını söyledi. Eleştirmenler "bilimsel" olmadığını ve ilk astronotların - hepsi seçkin jet pilotlarının - uçak kontrol paneline benzer kadranları ve anahtarları tercih ettiğini söyledi.

“AGC, dijital bilgisayarların tarihinde çok yavaş, ama çok güvenilir ve çok küçüktü. Entegre devreleri kullanmak en erken zamandı.”

Tasarlandığı gibi yazılım, temelde MIT tarafından sıfırdan inşa edildi.

Apollo Guidance Computer emulator programını kişisel bilgisayarınıza indirip yükleyebilirsiniz, sorun değil. Mac OS X'te göründüğü gibi.

görüntü tanımını buraya girin


8

Hemen hemen her diğer yazılım projesi gibi, agresif son tarih ve kalite baskısı altında yapıldı. Neyse ki , burada yazılım proje yöneticisi Howard W. “Bill” Tindall, Jr.'dan elde edilen büyük bir malzeme arşivi bulunmaktadır .

Notları örneklerseniz, zaman, özellikler ve kusurlar arasındaki normal uyuşmazlığı çok iyi anlayabilirsiniz. Gelişimin , projenin geri kalanında olduğu gibi birkaç yıl ilerlediğini belirtmekte fayda var .

Sistemin tasarımı 1961'in ikinci çeyreğinde başladı ve NASA, 22 Eylül 1965'te bir uzay aracına bir Blok I versiyonunu kurdu. Orijinal yazılımın piyasaya sürülmesi (CORONA adlı) Ocak 1966'da, 25 Ağustos'taki ilk uçuşu, 1966. Bundan 3 yıldan az bir süre sonra, tasarımcılar nihai program hedefini gerçekleştirdiler ( http://history.nasa.gov/computers/Ch2-5.html )

Yazılımın nasıl oluşturulduğuna dair özel referanslar bulamıyorum, ancak tarih verildiğinde yalnızca çoğunun kalem ve kağıt üzerinde yapıldığını, "simülasyonların" manuel olarak yapıldığını varsayabildiğimi varsayabiliyorum. Muhtemelen halat hafızasını üretmeye gerek kalmadan zeminde "hızlı" test yapmak için delgi kartlarıyla AGC'ye programlar yüklemek için bir sistem olduğu görülüyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.