Inne
Artykuł
Piotr Urbaniak, Poniedziałek, 27 listopada 2017, 16:00

Pierwsza udana załogowa misja na Księżyc odbyła się blisko pół wieku temu, a wszystkim sterowały dwa komputery o mocy obliczeniowej porównywalnej z mocą współczesnych programowalnych kalkulatorów. Jak działały, w czym tkwiła tajemnica ich sukcesu i czy te nieco szydercze porównania są słuszne?

20 lipca 1969 roku o godzinie 20.17 uniwersalnego czasu koordynowanego moduł księżycowy misji Apollo 11 zetknął się z powierzchnią jedynego naturalnego satelity Ziemi. Niewielu zdaje sobie sprawę, jak ogromną rolę w całym tym przedsięwzięciu odegrały komputery pokładowe, którym powierzono właściwie wszystkie zadania związane ze sterowaniem lotem, a które złośliwcy porównują dzisiaj do kalkulatorów. Ale czy tak abstrakcyjne i wydawałoby się skomplikowane zadanie jak lądowanie na Księżycu rzeczywiście może zrealizować sprzęt tysiące razy słabszy od przeciętnego smartfona, a jeśli tak, to jakim cudem? Zastanówmy się.

Apollo Guidance Computer wraz z panelem DSKY / fot. Wikipedia

Zacznijmy od tego, że w misji Apollo 11 wzięły udział dwa komputery, o dość sugestywnej nazwie Apollo Guidance Computer, znane też pod akronimem AGC. Były to identyczne jednostki, tyle że umieszczone w różnych sekcjach, bo przeznaczone do innych celów. Pierwszy komputer służył do kierowania modułem dowodzenia/serwisowym CSM-107 „Columbia”, a drugi – księżycowym LM-5 „Eagle”. Tutaj dla niewtajemniczonych warto nadmienić, że statek kosmiczny programu Apollo nie był tworem monolitycznym, co nie jest niczym szczególnym w przypadku załogowych lotów w kosmos. Był oparty na koncepcji lądownika oddzielającego się od części zasadniczej po osiągnięciu orbity ciała docelowego. Komputery były więc zmuszone do wykonania adekwatnych obliczeń dotyczących konkretnych faz lotu, a przy tym sterowały radiolokacją lądownika.

Panel DSKY zamontowany w kokpicie Apollo CSM

Wróćmy jednak do meritum, a więc historii, budowy i możliwości AGC. Komputer ten został przedstawiony w sierpniu 1966 roku przez MIT Instrumentation Laboratory. Miał formę bliską prostopadłościanu o wymiarach 61 cm × 32 cm × 17 cm i ważył 32 kg, a ponadto był pierwszym urządzeniem tego typu opartym na układach scalonych. Zbudowano go z mniej więcej 16,8 tys. tranzystorów. Funkcję uniwersalnego i zarazem jedynego urządzenia peryferyjnego pełnił interfejs DSKY, połączenie wyświetlacza z klawiaturą. Tłumaczy to zresztą bezpośrednio jego nazwę, pochodzącą od anglojęzycznych określeń display oraz keyboard. Co ciekawe, rzeczona klawiatura nie miała żadnych liter. Zamiast tego polecenia wydawano numerycznie, określając tylko znaczenie liczb: polecenie lub dane. Funkcję wyświetlacza pełniła zaś siedmiosegmentowa konstrukcja elektroluminescencyjna, sterowana przekaźnikami elektromechanicznymi ograniczającymi częstotliwość odświeżania.

No dobrze, ale jak to jest z tą mocą obliczeniową? Cóż, wbrew pozorom zasadność porównania możliwości AGC do sprzętu konsumenckiego, nawet pochodzącego z minionej epoki, nie jest oczywista. Jako najmniejszej jednostki adresowalnej używano 16-bitowego słowa maszynowego, w którym jeden bit był wydzielony dla znaku, a pozostałe przenosiły dane. Sumarycznie AGC miał cztery rejestry centralne, realizowane poprzez dwustanowe przerzutniki – zapisujące i kasujące.

Już wprowadzony na rynek w 1978 roku Intel 8086, będący zalążkiem trwającej do dziś ery x86, teoretycznie deklasował AGC, bo miał osiem 16-bitowych rejestrów ogólnego przeznaczenia. Tyle tylko, że w komputerze Apollo 11 była jeszcze cała masa dodatkowych, wyspecjalizowanych rejestrów o długości od 1 b do 16 b, których nie sposób bezpośrednio porównać z rejestrami w komputerze Intela.

IBM PC model 5150, pierwszy PC, miał nawet 64x więcej RAM-u od AGC

Pewnym punktem odniesienia może być za to taktowanie. Apollo Guidance Computer korzystał z zegara kwarcowego o częstotliwości 2,048 MHz, który poprzez logiczny dzielnik czasu dzielony był na dwa, co ostatecznie zapewniało efektywne taktowanie jednostki obliczeniowej z częstotliwością 1,024 MHz. Dla porównania, wspomniany Intel 8086 cechował się, w zależności od modelu, taktowaniem z częstotliwością 5–10 MHz.

Porównać można także ilość pamięci. Choć twórcy AGC nie korzystali z IBM-owskiego określenia bajt, a wykorzystane do przechowywania informacji rdzenie ferrytowe zdają się iście abstrakcyjne, nietrudno dokonać konwersji. Ponieważ słowo jest elementem 2-bajtowym, pamięć stała AGC, obejmująca 36 864 słowa, miała 74 kB, z kolei pamięć ulotna, zawierająca 2048 słów – 4 kB. Pierwsze PC oferowane przez IBM na początku lat 80. trafiały do klientów z 16 kB lub 64 kB RAM-u, rozszerzalnego aż do 256 kB.

Moduł pamięci komputera AGC w dużym zbliżeniu / fot. Quora.com

Swoją drogą, budowa pamięci AGC jest bardzo ciekawa. Komputer nie miał typowego dysku. Zamiast tego zawierał tysiące splecionych ręcznie drucikami rdzeni ferrytowych, które miały po dwa stany stabilne, warunkowane kierunkiem przepływu prądu, a co za tym idzie – kierunkiem namagnesowania. Pamięć stała i kasowalna różniły się gęstością zapisu i rodzajem splotu. Ponieważ w odróżnieniu od dzisiejszego RAM-u informacje nie były stanami układów logicznych, dane z pamięci kasowalnej nie ginęły wraz z utratą zasilania. Rdzenie pozostawały bowiem namagnesowane do momentu przełączenia kierunku przepływu prądu. Zapewniało to możliwie duże bezpieczeństwo danych.

Trzyrdzeniowy procesor Xboxa 360 – Xenon. Przewyższa AGC wydajnością blisko 450 tys. razy. Tyle było potrzeba, by zamiast polecieć w kosmos, eksplorować go w grze Mass Effect

Pora zatem na jeszcze bardziej matematyczne podejście do zagadnienia. Według informacji dostępnych w odmętach internetu Apollo Guidance Computer potrzebował 23,4 μs na pojedynczą operację dodawania. Przy założeniu, że operację wykonywano tylko w jednej instrukcji, otrzymujemy teoretyczną wydajność na poziomie niespełna 43 tys. instrukcji na sekundę. Wyśmiewany Intel Atom N270 realizuje około 3,3 mld instrukcji na sekundę, procesor Xboksa 360 – ponad 19 mld, a popularny Intel Core i5 2500K – 83 mld. Oczywiście, powszechnie wiadomo, że użyty przeze mnie współczynnik IPS (ang. instructions per second) nie mówi wszystkiego ze względu na ogromną zależność wykonywanego kodu od architektury, ale w tym wypadku nie ma wątpliwości – liczby są bezwzględne. I faktycznie, współczesne kalkulatory programowalne potrafią być w takim porównaniu do kilku razy szybsze od komputera, który zabrał człowieka na Księżyc.

HP-65, czyli pierwszy kalkulator w kosmosie

W tym miejscu warto jeszcze przytoczyć pewną ciekawostkę. Otóż w 1975 roku na potrzeby łączonej misji Sojuz-Apollo rzeczywiście wykorzystano kalkulator HP-65 jako komputer awaryjny na wypadek ewentualnych problemów z AGC.

Nasuwa się nieuchronnie pytanie: jakim cudem coś tak, wydawałoby się, prymitywnego było w stanie wydawać polecenia silnikom, zarządzać sterowaniem reakcyjnym, pozycjonować lot i zbierać cały szereg danych niezbędnych do zakończenia misji? Spora w tym zasługa niezwykle przemyślanego systemu operacyjnego. Oprogramowanie AGC obsługiwało przerwania, a przy tym miało zdolność kolejkowania zadań (z przydzielaniem im priorytetów) i planowania. Ze zbyt małą ilością pamięci radzono zaś sobie przez nadpisywanie już zbędnych danych – nawet w obrębie tej samej fazy lotu. Mało tego, system operacyjny obsługiwał prymitywną formę wielozadaniowości i mógł symultanicznie wykonać do ośmiu różnych operacji. Owszem, nie była to typowa dla dzisiejszych systemów wielowątkowość z wywłaszczaniem, pozwalająca dystrybuować zasoby obliczeniowe w razie potrzeby. Wykorzystano raczej formę maszyny wirtualnej, by umożliwić programistom łączenie instrukcji wydawanych na poziomie sprzętowym z poleceniami maszyny wirtualnej w obrębie tego samego kodu asemblera. W tamtych czasach jednak było to prawdziwie pionierskie rozwiązanie.

Apollo Guidance Computer trafił na śmietnik historii w 1975 roku, zwieńczywszy swoją karierę udanym lotem w ramach misji Sojuz-Apollo na pokładzie Apollo CSM.

Na marginesie: z perspektywy czasu nieco zabawnie wygląda to, że do gry o podboju kosmosu (vide Mass Effect: Andromeda) potrzeba sprzętu milion razy potężniejszego od tego, który faktycznie zabrał człowieka w kosmos.

Summa summarum mam nadzieję, że niniejszy tekst nie tylko dostarczył Wam odrobiny wiedzy o historii komputerów, ale też skłonił do refleksji nad wykorzystaniem mocy obliczeniowej.

Ciąg dalszy nastąpi…

Konkurs Palit Polska
Ocena artykułu:
Ocen: 32
Zaloguj się, by móc oceniać
matekmz (2017.11.27, 16:04)

0%
Cześć kochani! Tak jak mówiłem, na PCLabie pojawi się więcej felietonów. Przywitajcie też naszego nowego autora ;) Za wszelki feedback będę bardzo wdzięczny!
Stefan8800 (2017.11.27, 16:10)
Ocena: 21

0%
Fajny felieton. Fakt, że dzisiejsze kalkulatory są wydajniejsze od komputera, który obsługiwał lot na księżyc, zawsze był dla mnie mind blow'owy.
Gregario (2017.11.27, 16:25)
Ocena: 5

0%
Ten tekst to miła odmiana i przy okazji można sobie uświadomić jaką moc mają współczesne inteligentne telefony czy komputery. Warto przy okazji wspomnieć o komputerach na promach kosmicznych, które miały początkowo 512 kB RAMu a w późniejszych wersjach jeśli dobrze pamiętam to cały 1 MB :)
hazhell (2017.11.27, 16:42)
Ocena: 13

0%
Nawet sprytnie przeredagowany artykuł z wikipedii, warto by było podać źródło, skoro się je cytuje czasem 1:1.
tomangelo (2017.11.27, 16:45)
Ocena: 23

0%
'z perspektywy czasu nieco zabawnie wygląda to, że do gry o podboju kosmosu (vide Mass Effect: Andromeda) potrzeba sprzętu milion razy potężniejszego od tego, który faktycznie zabrał człowieka w kosmos.'

No, w końcu komputer Apollo tylko sterował rakietą. Gra symuluje rakietę, steruje symulowaną rakietą, liczy od groma grafiki, dźwięków, pocisków, postaci, modeli, efektów specjalnych, etc i etc. Poza tym nie było wtedy Denuvo
Kitu (2017.11.27, 16:51)
Ocena: 4

0%
A jak jakiś koleś gdzieś w internecie napisał swego czasu, że w latach 80. napisał w pełni funkcjonalny kalkulator (z jakimiś tam 'niepodstawowymi' funkcjami, nie pamiętam już jakimi) zajmujący <16kB i potrzebujący <32kB RAM, został zmieszany z błotem i wyśmiany, bo przecież oni w komputerkach mają miliony razy tyle, a kalkulator w Windowsie jest przecież znacznie większy.
Stjepan (2017.11.27, 16:52)
Ocena: 4

0%
Fajny felieton, czekam na więcej.
kanon7 (2017.11.27, 17:10)
Ocena: 28

0%
Przydałby by się taki felieton o 'mitycznej mocy' Cell'a z ps3 :) jak działał, dlaczego był taki wyjątkowy i wydajny w swojej klasie. I jak się ma jego moc do obecnych czasów w programach / działaniach w których jest on najwydajniejszy.
xoxoxor (2017.11.27, 17:12)
Ocena: 11

0%
kanon7 @ 2017.11.27 17:10  Post: 1110786
Przydałby by się taki felieton o 'mitycznej mocy' Cell'a z ps3 :) jak działał, dlaczego był taki wyjątkowy i wydajny w swojej klasie. I jak się ma jego moc do obecnych czasów w programach / działaniach w których jest on najwydajniejszy.


Musisz mieć szklaną kulę, bo rozmawialiśmy dzisiaj o tym z Maćkiem ;)
Pentium D (2017.11.27, 17:18)
Ocena: 4

0%
Mogli dać LM na rdzeń i podkręcić :E Warunki do OC mieli dobre.
Edytowane przez autora (2017.11.27, 17:19)
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane