Hlavní navigace

PDP-1: počítačový dědeček na cestě k unixu

13. 10. 2009
Doba čtení: 11 minut

Sdílet

Historie operačního systému UNIX i programovacího jazyka C byla ve svých počátcích spjata především s počítači vyráběnými firmou Digital Equipment Corporation (DEC), zejména s modely PDP-7 a PDP-11. Ovšem skutečnou revoluci v chápání role výpočetní techniky způsobil již první stroj firmy DEC – počítač PDP-1.

Obsah

1. Počítač PDP-1

2. Význam počítače PDP-1

3. Architektura počítače PDP-1

4. Aritmeticko-logická jednotka a instrukční soubor

5. Hra Spacewar!

6. Technologie hry Spacewar!

7. Od vektorového displeje k rastrovému monitoru a zpět

8. Odkazy na Internetu

1. Počítač PDP-1

Prvním počítačem vyrobeným firmou Digital Equipment Corporation (DEC) byl stroj označovaný zkratkou PDP-1 neboli Programmed Data Processor-1. V mnoha ohledech se jedná o velmi zajímavý počítač, který zaznamenal hned několik prvenství a jeho vliv nepřímo vedl ke vzniku minipočítačů, operačního systému UNIX i hackerské subkultury. První prototyp tohoto počítače byl vytvořen již v roce 1959, ovšem počátek prodeje se datuje až do roku 1960. Mezi první a současně i nejdůležitější zákazníky, kteří si tento stroj pořídili, patřila firma BBN (Bolt, Beranek and Newman) a také slavná MIT, jejíž vliv na další vývoj počítačů, operačních systémů i aplikačních programů je nezpochybnitelný (více viz další text).

pdp1

Obrázek 1: V pozadí můžeme vidět vlastní počítač PDP-1 (procesorovou jednotku i jednotku periferií), v popředí je vidět stůl operátora s řídicím panelem.

Celkem bylo vyrobeno pouze 55 kusů počítače PDP-1. Některé zdroje sice uvádí, že existovalo pouze 50 kusů, ovšem poslední stroj, který je mj. vystavený v Muzeu počítačové historie – Computer History Museum, nese výrobní číslo 55. Na dnes poněkud opomíjený PDP-1 navázaly další modely (PDP-4, PDP-7), z nichž především PDP-7 byl využíván jak na mnoha universitách, tak i v průmyslu.

pdp1

Obrázek 2: Detail řídicího panelu počítače PDP-1.

2. Význam počítače PDP-1

Pravděpodobně nejdůležitějším přínosem počítače PDP-1 bylo to, že změnil způsob chápání role výpočetní techniky ve světě. Na tomto místě stojí za připomenutí, že na počátku šedesátých let minulého století měly počítače poměrně nízký výpočetní výkon (mnohdy menší než současný průměrný mobilní telefon) a přitom stály stovky tisíc (tehdejších) dolarů, nejvýkonnější počítače i jednotky milionů dolarů. Takové počítače si mohly pořídit jen velmi bohaté firmy, které mnohdy provozovaly výpočetní centra, ve kterých prodávaly drahý strojový čas dalším subjektům. Prvotní a v kontextu doby i celkem pochopitelnou snahou těchto firem i výrobců počítačů tedy bylo dosáhnout co nejlepšího využití strojového času, což vedlo ke vzniku systémů založených především na dávkovém zpracování dat – data i programy byly (ručně, bez použití počítače) připraveny na děrných štítcích či děrných páskách a v předem rezervovaném čase byly programy spuštěny a výsledek většinou vytištěn na tiskárně.

pdp1

Obrázek 3: Děrný štítek byl velmi často používaným médiem určeným jak pro úschovu dat (programů), tak i pro jejich prvotní pořízení – to se provádělo na jednoduchých děrnoštítkových strojích pracujících nezávisle na počítači, takže nedocházelo k využívání jeho strojového času.

Tyto počítače ve většině případů neobsahovaly klasickou klávesnici ani monitor, protože celý počítač byl ovládán z takzvaného řídicího panelu s téměř nulovou interaktivitou a data i programy se do něj většinou nahrávaly z výše zmíněných děrných pásek či štítků. V prostředí výpočetních center působil počítač PDP-1 skutečně poněkud zvláštně, protože způsob jeho ovládání byl do velké míry založen na interakci mezi počítačem a uživatelem, nikoli na co nejefektivnějším využití strojového času. Interaktivní práce sice vypadala poněkud jinak než dnešní typické „sezení“, protože výstup byl prováděn na tiskárny (nikoli na monitor), ovšem možnost konverzace s počítačem pomocí klávesnice a tiskárny byla přelomová. Samozřejmě, že i PDP-1 byl poměrně drahý stroj, takže i jeho strojový čas byl drahý. Aby docházelo i při interaktivní práci k co největšímu využití procesoru, byl do jeho operačního systému zanesen nový významný prvek – řízení procesů s možností sdílení strojového času, který umožnil, aby v jednom okamžiku s počítačem mohlo pracovat více uživatelů.

pdp1

Obrázek 4: Kromě děrných štítků se pro záznam dat používaly i děrné pásky. Zde je zobrazena jednotka umožňující čtení i zápis na děrné pásky. Některé velmi staré počítače (popř. ne tak staré počítače vyráběné v zemích RVHP) dokonce používaly děrné pásky jako paměť ROM se zaznamenaným programem. Děrná páska potom musela být na konci slepena, aby bylo možné postupně procházet všemi instrukcemi programu, včetně skoků (páska se posunovala vždy jen jedním směrem, proto skok zpět musel být proveden přetočením celé pásky). Rychlost zpracování instrukcí tímto způsobem – maximálně desítky za sekundu.

3. Architektura počítače PDP-1

Počítač PDP-1 byl vybaven feromagnetickou pamětí organizovanou do slov s poněkud neobvyklou šířkou 18 bitů. Standardní kapacita této paměti byla rovna čtyřem kiloslovům, což odpovídá devíti kilobajtům. Maximální kapacita paměti mohla dosáhnout až 64 osmnáctibitových kiloslov, což po přepočtu na dnešní jednotky činí 144 kilobajtů. Externí paměť byla tvořena jednotkou pro práci s děrnými páskami. Děrné pásky i jednotky pro práci s nimi jsou sice levnější než děrné štítky, ovšem (na rozdíl od štítků) není možné jednoduše měnit části programů či dat pouhou výměnou několika štítků, což je omezení, které ve svém důsledku vedlo ke vzniku prvních textových editorů (zatímco u jiných počítačů postačilo při změně nějaké funkce v programu vyměnit jeden štítek, u PDP-1 se program zeditoval a vyděroval na novou děrnou pásku).

pdp1

Obrázek 5: Čtyři bity feritové paměti (zvětšeno).

Jednou důležitou periferií počítače PDP-1 byly tiskárny, které se většinou používaly místo monitorů pro výstup alfanumerických dat. Jednalo se o upravené elektronické psací stroje firmy IBM s pákami namísto typového kolečka, ale po poměrně jednoduché změně operačního systému bylo možné použít i některé další typy tiskáren. Grafický výstup dat byl možný jak na monitor zabudovaný přímo do řídicího panelu, tak i na větší vektorový displej „Type 30 Precision CRT Display“. O jednom ze zajímavých využití tohoto displeje si povíme v navazujících kapitolách.

pdp1

Obrázek 6: Zrestaurovaná napájecí jednotka počítače PDP-1.

4. Aritmeticko-logická jednotka a instrukční soubor

Počítač PDP-1 vznikl ještě před velkým rozmachem integrovaných obvodů, což znamená, že aritmeticko-logická jednotka i řadič byly z velké části vytvořeny z diskrétních součástek, především tranzistorů. Použité tranzistory a z nich složená hradla a klopné obvody umožňovaly změny logických stavů s frekvencí přibližně 5 MHz. Výpočetní rychlost aritmeticko-logické jednotky odpovídala cca 100 000 operacím za sekundu, což korespondovalo i s dobou přístupu k datům uloženým ve feromagnetické paměti – 5 mikrosekund (každá ALU operace probíhala ve dvou taktech). Zajímavé je, že se při výpočtech používaly číselné hodnoty vyjádřené v jedničkovém doplňku, což mj. znamenalo, že existovala „kladná“ a „záporná“ nula. Aby nedocházelo k chybné interpretaci nuly, byly výsledky některých ALU operací korigovány tak, aby se záporná nula nikdy nevrátila. Prakticky všechny výpočty byly prováděny nad slovy se šířkou 18 bitů, přičemž nejnižší bit nesl příznak kladného či záporného čísla.

pdp1

Obrázek 7: Celá matice feromagnetické paměti s kapacitou řádově ve stovkách bajtů.

Instrukční soubor počítače PDP-1, který obsahoval pouze tři desítky instrukcí, se příliš nelišil od instrukčních souborů některých současných mikroprocesorů. Jediným větším rozdílem byla absence podmíněných skoků, které byly nahrazeny podmíněným přeskočením (skip) následující instrukce. Ani to ostatně není neznámá operace, protože ji podporují například některé jednočipové mikropočítače. Při přepsání instrukcí pomocí „moderních“ mnemotechnických zkratek obsahuje instrukční soubor PDP-1 tyto instrukce (snažím se dodržet zkratky známé z procesorů Intel):

add,  sub,   mul,  div
and,  or,    xor
rol,  ror,   shl,  shr
load, store, clear
jmp,  jsr,   call
skip_eq,     skip_zero
skip_plus,   skip_minus
inc   index
pdp1

Obrázek 8: Zrekonstruovaný (a v současnosti funkční) počítač PDP-1.

5. Hra Spacewar!

Počítač PDP-1 se pyšní i dalším prvenstvím, protože pro něj byla v roce 1962 vyvinuta první skutečná počítačová hra na světě (pokud samozřejmě nepočítáme jednoduché hříčky typu piškvorky v síti 3×3, které existovaly již na prvních elektronkových počítačích). Tato hra se jmenovala Spacewar! a jejím hlavním autorem je Stephen „Slug“ Russell z MIT, konkrétně z laboratoře umělé inteligence. Na vývoji této hry, která byla celá naprogramovaná v assembleru PDP-1, se ovšem podílelo i několik dalších spoluautorů známých jmen, především Peter Samson (vytvořil pozadí hry složené ze skutečných souhvězdí, přesněji z hvězd viděných ze Země, jejichž velikost přesahuje hodnotu 5,5), Martin Graetz (autor programové rutiny, která dovolovala raketám provádět hyperprostorové skoky – viz další text), Wayne Witanen, Dan Edwards (autor rutiny pro výpočet gravitačních sil) či Alan Kotok. Naprostá většina z těchto autorů taktéž působila na MIT. Tato hra vznikla především proto, aby ukázala co nejvíce možností PDP-1, a to co nejzajímavějším způsobem.

pdp1

Obrázek 9: Obrazovka originální hry Spacewar.

V souvislosti se hrou Spacewar! se uvádí i jeden zajímavý detail – Stevovi Russellovi se zpočátku do jejího vývoje příliš nechtělo (právě proto se mu ostatně přezdívalo „Slug“) a jako jeden z důvodů uváděl, že mu chybí některé potřebné matematické rutiny, například podprogramy pro výpočet goniometrických funkcí používaných při natáčení a pohybu raket v prostoru. Po nějaké době jeho kolega Alan Kotok zavolal přímo výrobci počítače – firmě DEC –, která mu potřebné rutiny poslala na děrných páskách. Alan pásky položil před Steva a zeptal se ho, jestli ho ještě napadají nějaké další důvody, proč ve vývoji nemůže pokračovat. Steve na žádné rozumné důvody nepřišel a proto konečně začal s vývojem, zpočátku sice relativně pomalým (alespoň podle názoru jeho kolegů), ale posléze ho práce na hře začala skutečně bavit a nakonec trávil prakticky veškerý svůj čas programováním, optimalizací a opravou chyb, které se samozřejmě nemohly poměrně složitému programu napsanému v assembleru vyhnout.

pdp1

Obrázek 10: Tvar vektorového monitoru počítače PDP-1 je opravdu netradiční.

6. Technologie hry Spacewar!

Výsledkem práce Steva Russella a jeho kolegů byla interaktivní hra s dvojicí raket, které se volně pohybovaly v ploše zobrazované na kruhovém vektorovém displeji, jenž bylo možné k počítači PDP-1 připojit. Použití vektorového displeje bylo na začátku šedesátých let minulého století vcelku logické, neboť se jednalo o tehdy široce používanou technologii, ať již v osciloskopech nebo analogových počítačích. Použití rastrového displeje by s sebou neslo některé problémy, především nutnost použití rychlých pamětí s poměrně velkou kapacitou, přesného časování čtení rastrových dat v souladu se synchronizačními signály apod. Z tohoto důvodu se rastrové monitory začaly ve větší míře objevovat až o zhruba pět let později. Vraťme se však k popisu technologie hry Spacewar!. Uprostřed kruhové hrací plochy zobrazené na již zmíněném vektorovém displeji se nacházelo slunce, přičemž všechny tři objekty (obě rakety ovládané hráči a slunce) na sebe působily gravitační silou. Rakety po nárazu do slunce explodovaly, takže hráči museli již od začátku hry dávat pozor, aby nenastala kolize.

pdp1

Obrázek 11: Se vznikem prvních her si začali zaměstnavatelé klást otázku, jestli jejich zaměstnanci skutečně usilovně pracují a/nebo se baví.

Rakety mohly vystřelovat torpéda, na něž ovšem z důvodu omezené výpočetní rychlosti procesoru gravitace nepůsobila. Torpéda vybuchovala ve chvíli, kdy se dostala do blízkosti jiného objektu, například dalšího torpéda (výpočet vzdálenosti dvou objektů je jednodušší než přesné vyhodnocení jejich kolize). Každá raketa měla pouze omezené množství paliva, podobně jako v technologicky podobné hře Lunar Lander, takže délka jedné hry byla poměrně časově omezená – ve chvíli, kdy raketě došlo palivo, došlo dříve či později k jejímu pádu do slunce, popř. k zásahu torpédem. Ovládání raket se provádělo třemi tlačítky – dvě tlačítka sloužila k jejich natáčení doprava a doleva, třetí tlačítko zvyšovalo tah motoru. Dvojice raket se původně ovládala přímo z řídicího panelu počítače PDP-1, na kterém se mj. nacházelo i osmnáct přepínačů, jejichž stav se přímo zapisoval do jednoho slova operační paměti, takže je bylo možné velmi snadno přečíst (na rozdíl od dnešních klávesnic, které při stisku či naopak puštění klávesy posílají po sériové lince sekvenci bajtů, kterou je nutné při přerušení vhodným způsobem zpracovat).

pdp1

Obrázek 12: Automatová varianta hry Spacewar!

Ovšem již při vývoji první verze hry Spacewar! se ukázalo, že použití těchto přepínačů není bezproblémové, především kvůli jejich neoptimálnímu umístění (jeden z hráčů špatně viděl na displej) a taktéž z toho důvodu, že často docházelo k jejich zničení – inženýři navrhující počítač PDP-1 totiž předpokládali, že se přepínače použijí pouze několikrát za den a nikoli desetkrát každou minutu. Proto byl pro tuto hru vytvořen specializovaný řídicí panel (jakýsi předchůdce joypadu), technicky zdatnější hráči si dokonce sestavovali vlastní joysticky. Dalším problémem, se kterým se tvůrci hry museli vypořádat, byla omezená kapacita operační paměti a tím pádem i omezená velikost programového kódu. To nakonec vedlo až k situaci, kdy hra Spacewar! existovala v několika variantách, přičemž každá varianta měla poněkud odlišné vlastnosti (vylepšené hyperprostorové skoky, zobrazení zbývajícího množství paliva, omezení počtu torpéd…). Teprve s přechodem na novější typy počítačů (PDP-10 atd.) došlo ke sjednocení programového kódu.

pdp1

Obrázek 13: Po nedávné rekonstrukci PDP-1 si mohli hru Spacewar! znovu zahrát i bývalí zaměstnanci firmy DEC.

7. Od vektorového displeje k rastrovému monitoru a zpět

Zajímavý byl i další osud hry Spacewar!. Po přechodu některých pracovníků laboratoře umělé inteligence z MIT na Stanford byla hra Spacewar! přepsána pro počítač PDP-10 a v roce 1970 taktéž na slavný počítač PDP-11. Všechny zmíněné varianty hry by se dnes mohly řadit do kategorie open source, neboť jejich zdrojový kód (resp. děrná páska s kódem) byl volně dostupný. V roce 1972 byla upravená verze této hry vydána i komerčně pod názvem Computer Space. Jednalo se o hrací automat vybavený černobílým rastrovým monitorem, což byl z technologického i vizuálního hlediska velký rozdíl oproti původnímu vektorovému displeji. Jedním ze společníků firmy, která tento herní automat vytvořila, nebyl nikdo jiný než Nolan Bushnell, který v témže roce založil známou firmu Atari (první herní automat vytvořený touto firmou, byl mnohem jednodušší – jednalo se totiž o implementaci hry PONG). Později se však firma Atari k původnímu tématu hry Spacewar! vrátila titulem Asteroids!, kterou si možná někteří ze čtenářů pamatují, ať už v automatové verzi využívající opět vektorový displej, nebo ve verzi určené pro osmibitové domácí počítače. Skutečný návrat k vektorové variantě hry nastal až s její předělávkou pro herní konzoli Vectrex.

root_podpora

pdp1

Obrázek 14: Legendární herní konzole Vectrex je mj. vybavena pravděpodobně nejvýkonnějším mikroprocesorem osmibitové éry Motorola 6809, zvukovým čipem AY-3–8912 („aýčkem“ známým i ze ZX Spectra 128+ a Atari ST) a vlastním řadičem vektorového displeje.

8. Odkazy na Internetu

  1. PDP-1 Web Pages
    http://www.pdp-1.org/
  2. PDP-1 Restoration Process
    http://pdp-1.computerhistory.org/pdp-1/
  3. Programmed Data Processor
    http://en.wikipedia.org/…ta_Processor
  4. Digital Equipment Corporation
    http://en.wikipedia.org/…_Corporation
  5. PDP-1
    http://en.wikipedia.org/wiki/PDP-1
  6. Ancient Computing Machinery
    http://www.ee.ryerson.ca/…p/index.html
  7. Spacewar – The first computer video game. Really!
     http://www3.sympatico.ca/…pacewar.html
  8. Programmed Data Processor-1 Handbook
    http://www.dbit.com/…p1/pdp1.html

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.