Hlavní navigace

IBM a sedm trpaslíků 17 - superpočítač CDC 7600

16. 6. 2011
Doba čtení: 15 minut

Sdílet

V šedesáté části seriálu o historii vývoje výpočetní techniky nejprve dokončíme popis superpočítače CDC 6600. Řekneme si především to, s jakým formátem numerických hodnot bylo možné v aplikacích pracovat. Pak se již zaměříme na následníka tohoto stroje, jímž byl superpočítač CDC 7600.

Obsah

1. Funkční jednotky superpočítače CDC 6600

2. Popis jednotlivých funkčních jednotek stroje CDC 6600

3. Formát numerických hodnot zpracovávaných procesorem superpočítače CDC 6600

4. Numerické hodnoty s plovoucí řádovou čárkou

5. Práce s nulou a nekonečnem

6. Grafický subsystém superpočítače CDC 6600

7. CDC 7600 aneb důstojný nástupce superpočítače CDC 6600

8. Miniaturizace a pipeline jako cesta k nejrychlejším superpočítačům?

9. Odkazy na Internetu

1. Funkční jednotky superpočítače CDC 6600

V předchozích dvou pokračováních seriálu o historii vývoje výpočetní techniky jsme se seznámili se základními parametry superpočítače CDC 6600, který byl navržen Seymourem Crayem a posléze vyráběn společností CDC (Control Data Corporation) v šedesátých letech minulého století. Řekli jsme si, že tento ve své době nejvýkonnější superpočítač na světě využíval operační paměť sestavenou z feritových jader, která byla rozdělena na samostatně pracující moduly, a to takovým způsobem, aby se při sekvenčním čtení dat nebo strojových instrukcí z operační paměti přistupovalo k jednotlivým paměťovým modulům v takzvaném prokládaném režimu (každé slovo bylo přečteno z jiného modulu), což vedlo k tomu, že za ideálních podmínek bylo možné v každém strojovém cyklu přečíst či zapsat jedno šedesátibitové slovo. Z předchozích dílů seriálu taktéž již víme, že kromě hlavního procesoru (CPU) se v superpočítači CDC 6600 nacházelo ještě deset procesorů určených pro ovládání periferních zařízení a taktéž pro přístup do operační paměti.

Ovšem ani samotná hlavní procesorová jednotka (CPU) použitá v superpočítači CDC 6600 nebyla tvořena monolitickým obvodem, který by pomocí nějaké „magie“ dokázal provádět všechny potřebné operace se všemi možnými typy operandů. Ve skutečnosti se totiž tato procesorová jednotka skládala celkem z deseti specializovaných a relativně samostatně pracujících funkčních jednotek, jejichž názvy a stručný popis jsou uvedeny v následující kapitole. Seymour Cray k využití této struktury přistoupil z toho důvodu, že jednoúčelové funkční jednotky bylo možné lépe optimalizovat po obvodové stránce a navíc se některé často používané jednotky mohly zduplikovat, což je levnější, než duplikace funkcí celého procesoru (s tímto přístupem – multiplikací celých CPU, tj. ALU i řadiče – se můžeme setkat v současnosti, ovšem na rozdíl od šedesátých let minulého století je dnes cena jednoho logického obvodu přibližně stotisíckrát menší).

Obrázek 1: Paměť s feritovými jádry použitá v superpočítači CDC 6600.

2. Popis jednotlivých funkčních jednotek stroje CDC 6600

# Název jednotky Popis
1 Branch provádění všech instrukcí skoku a pro rozvětvení (podmíněné skoky)
2 Boolean vyčíslení veškerých logických operací
3 Shift provádění aritmetických a bitových posuvů
4 Add sčítačka a odčítačka hodnot s plovoucí řádovou čárkou (float 60 bitů)
5 Long add sčítačka a odčítačka hodnot s pevnou řádovou čárkou (integer 60 bitů)
6 Multiply #1 násobička hodnot s plovoucí řádovou čárkou
7 Multiply #2 pokud předchozí jednotka Multiply #1 ještě provádí operaci, použije se tato „záložní“ jednotka
8 Divide dělička hodnot s plovoucí řádovou čárkou (float 60 bitů)
9 Increment #1 sčítačka a odčítačka 18bitových celých čísel, použito pro adresování operandů v operační paměti
10 Increment #2 pokud předchozí jednotka Increment #1 ještě provádí operaci, použije se tato „záložní“ jednotka

Při pohledu na tabulku zobrazenou před tímto odstavcem je patrné, že rozdělení funkcí mezi jednotlivé specializované funkční jednotky je odlišné od rozdělení, s nímž se můžeme setkat u moderních mikroprocesorů. Nicméně Seymour Cray moc dobře věděl, co dělá :-), protože například některé často používané jednotky zdvojil. Jedná se především o násobičku hodnot reprezentovaných v systému plovoucí řádové čárky. Násobení je relativně často používaná a přitom zdlouhavá operace, proto se v počítači CDC 6600 nacházely dvě násobičky. V případě, že první násobička už prováděla operaci s dvojicí pracovních registrů, mohlo se násobení spustit i na druhé násobičce. Další jednotkou, která byla zdvojena, byla sčítačka a odčítačka 18bitových celých čísel, tj. adres. Sčítání či odčítání sice patří mezi rychlé instrukce, ovšem nebylo ho možné provést v jediném strojovém cyklu. Tento fakt, spolu s faktem, že se adresování operandů provádělo velmi často, vedlo k tomu, že i tato relativně jednoduchá funkční jednotka byla zdvojena.

Obrázek 2: Další pohled na paměťový modul použitý v superpočítači CDC 6600.

3. Formát numerických hodnot zpracovávaných procesorem superpočítače CDC 6600

V tabulce uvedené v předchozí kapitole si můžeme povšimnout toho, že některé funkční jednotky, z nichž se skládá CPU, jsou určeny pro provádění operací s celočíselnými numerickými hodnotami (integer) a další jednotky dokážou provádět aritmetické operace s hodnotami uloženými v systému plovoucí řádové čárky (floating point). Nejprve se budeme zabývat operacemi s celočíselnými numerickými hodnotami. Ty mohou mít dva rozsahy. Pro práci s adresami se používají celočíselné hodnoty uložené v osmnácti bitech. Již v předchozí části tohoto seriálu jsme si řekli, že osmnáctibitové hodnoty jsou uloženy v pracovních registrech A0, A1 … A7 (adresování) a B0, B1 … B7 (adresování a počitadla smyček). Většina operací s těmito registry je prováděna ve funkčních jednotkách Increment #1 a Increment #2. Důvod pro zdvojení těchto jednotek je prostý – výpočet adres je velmi frekventovaná operace, takže bylo žádoucí, aby byl procesor schopen provádět více těchto výpočtů současně.

Zajímavé je, že osmnáctibitové hodnoty byly v pracovních registrech uložené ve formátu jedničkového doplňku, což znamenalo, že v nejvyšším bitu (s indexem 17) bylo umístěno znaménko čísla, za nímž následovalo sedmnáct číselných bitů (absolutní hodnota čísla). Díky tomuto kódování čísel bylo možné rozpoznávat kladnou a zápornou nulu. Poněkud méně časté byly celočíselné operace prováděné ve funkčních jednotkách Shift a Long Add. Tyto jednotky pracovaly s celočíselnými hodnotami uloženými v registrech s šířkou 60 bitů, tj. jednalo se o registry X0, X1 … X7. I v tomto případě byl použit jedničkový doplněk, takže rozsah zpracovávaných hodnot byl roven –576460752303423488 až 576460752303423488 (na rozdíl od FP hodnot zde nebylo detekováno přetečení). V případě, že se měla s celými čísly provést jiná operace, než prostý součet či rozdíl, popř. posun, musely se tyto hodnoty nejprve převést na čísla reprezentovaná v systému plovoucí řádové čárky.

Obrázek 3: Unifikovaný modul počítače CDC 6600 – pohled na vrchní část modulu.

4. Numerické hodnoty s plovoucí řádovou čárkou

Mnohem zajímavější než celočíselný formát popsaný v předchozí kapitole je však formát čísel s plovoucí řádovou čárkou (floating point). Podpora těchto čísel (jedná se o podmnožinu čísel reálných) procesorem superpočítače CDC 6600 je logická a očekávaná, protože tyto stroje byly určeny zejména pro řešení složitých numerických úloh z oblasti (nukleární) fyziky. Numerické hodnoty reprezentované v systému plovoucí řádové čárky byly ukládány v registrech o šířce 60 bitů, což je mimochodem i šířka slov ukládaných v operační paměti. V těchto slovech bylo uloženo znaménko čísla, mantisa a exponent, protože jakoukoli reprezentovatelnou číselnou hodnotu bylo možné vyjádřit vztahem s×m×2e, kde s je znaménko (+1, –1), m je mantisa (celé číslo) a e je exponent (taktéž celé číslo), přičemž hodnota exponentu byla posunuta o 210. Způsob rozdělení 60bitového slova na jednotlivá bitová pole je uveden pod tímto odstavcem:

+---+--------------------+------------------------------------+
| s | exponent (11 bitů) |         mantisa (48 bitů)          |
+---+--------------------+------------------------------------+
59  58                 48 47                                  0

Po všech aritmetických operacích s numerickými hodnotami s plovoucí řádovou čárkou bylo možné provést normalizaci, tj. posun bitů v mantise takovým způsobem, aby nejvyšší bit mantisy měl hodnotu 1. Každý posun mantisy o jeden bit doprava či doleva samozřejmě musel být korigován změnou hodnoty exponentu o jedničku. Ve skutečnosti se výpočty prováděly s mantisou o dvojité přesnosti (double precision), protože interně měla mantisa šířku plných 96 bitů a nikoli pouze 48 bitů. Některé instrukce procesoru počítače CDC 6600 bylo možné použít jak k získání horních 48 bitů výsledku (ty se běžně ukládaly zpět do pracovního registru), tak i k získání spodních 48 bitů, jejichž hodnota by byla v opačném případě zahozena (resp. by se některé bity použily při normalizaci).

Obrázek 4: Unifikovaný modul počítače CDC 6600 – pohled na spodní část modulu s plošným spojem.

5. Práce s nulou a nekonečnem

Pokud při jakékoli aritmetické operaci s hodnotami reprezentovanými v systému plovoucí řádové čárky došlo k tomu, že exponent překročil či dosáhl hodnoty 2047 (nesmíme zapomenout na posun jeho hodnoty o deset bitů), byla taková číselná hodnota považována za kladné či záporné nekonečno. Nulový exponent naopak sloužil pro reprezentaci „skutečné“ nuly, na rozdíl od hodnot, které se k nule pouze přibližují. Kromě těchto dvou speciálních hodnot existovala ještě hodnota značící neurčitý výsledek – tato hodnota byla reprezentována číslem s nulovou mantisou a exponentem rovným záporné nule (i exponent byl totiž ukládán ve formátu jedničkového doplňku). Funkční jednotky počítače CDC 6600 byly zkonstruovány takovým způsobem, aby jak nekonečno, „skutečná“ nula či neurčitý výsledek byly uloženy se všemi bity mantisy nulovými – tak bylo možné poznat, zda je nekonečno/nula/ne­určitá hodnota vypočtena či zda byla získána jiným způsobem.

Naproti tomu hodnoty s nulovými exponenty a nenulovými mantisami představovaly denormalizovaná čísla, s nimiž sice bylo možné provádět aritmetické operace, ovšem jejich normalizace byla nemožná, protože exponent neměl dostatečný rozsah na to, aby bylo možné normalizaci provést. Při součtu, rozdílu, násobení i dělení detekovaly funkční jednotky použití nekonečna a pracovaly s ním podle pravidel vypsaných v následující tabulce (x je libovolné racionální číslo):

Operace Výsledek
∞+∞
∞-∞ neurčitý výsledek
∞×∞
∞/∞ neurčitý výsledek
∞*0 neurčitý výsledek
∞/0
0/0 neurčitý výsledek
∞+x
∞-x
∞×x
∞/x
x+∞
x/∞ 0
x/0
0/∞ 0

Tvůrci normy IEEE 754 se do velké míry opírali o zkušenosti získané právě při konstrukci mainframu CDC 6600.

Obrázek 5: Fragment manuálu k superpočítači CDC 6600.

6. Grafický subsystém superpočítače CDC 6600

Dalším modulem superpočítače CDC 6600, s nímž se na závěr jeho popisu seznámíme, je jeho grafický subsystém. Ten je z dnešního pohledu poněkud neobvyklý, protože hlavní součástí grafického subsystému byla dvojice kulatých obrazovek (klasických CRT), které byly určeny pro zobrazení vektorové grafiky. Namísto toho, aby elektronový paprsek přecházel postupně všemi řádky obrazovky s regulací jeho intenzity na mřížce CRT, se používalo řízení elektronového paprsku známé například z osciloskopů nebo – pokud zůstaneme u výpočetní techniky – z herní konzole Vectrex či z minipočítače PDP. Jeden z periferních procesorů mohl být ovládán speciálním programem nazvaným DSD, neboli Dynamic System Display. Tento program dokázal převádět textová data na sekvenci krátkých vektorů zobrazovaných na první nebo druhé obrazovce. DSD používal různé optimalizace, aby cesta elektronového paprsku při vykreslování jednoho snímku byla co nejkratší, protože jen tak bylo možné zabránit nepříjemnému poblikávání obrazovky (na rozdíl od zobrazení rastrových obrazů s fixní frekvencí se u vektorových obrazovek určovala maximální celková délka vykreslovaných vektorů).

Obrázek 6: Fotografie superpočítače CDC 6600 s typickým řídicím panelem obsahujícím dvojici obrazovek.

Použití vektorové grafiky v superpočítači CDC 6600 vycházelo z toho, že tato technika byla v šedesátých letech minulého století již poměrně propracovaná, a to jak u osciloskopů, tak i u analogových počítačů. Navíc nebylo pro ukládání rastrového obrázku nutné využívat framebuffer, který by byl velmi drahý. Oproti prakticky všem dalším dobovým počítačům, především mainframům, bylo použití grafických obrazovek nepochybně krokem vpřed, protože u ostatních počítačů se pro výstup informací o běžícím systému používaly panely se žárovkami, popř. (rychlo)tis­kárny. Obě obrazovky se v případě CDC 6600 typicky používaly pro výstup systémových informací, později pro ně vznikl i jeden z prvních celoobrazovkových textových editorů O26 (možná se jednalo o skutečně první program svého druhu). Kromě těchto „vážných“ aplikací však pro CDC 6600 vzniklo i několik her a hříček, například jednoduchá simulace basketbalu nebo program, který každou obrazovku přeměnil v jedno mrkající oko (použití počítače v ceně 5 milionů dolarů na zobrazení očí svědčí o tom, že programátoři byli vždycky hračičkové).

pdp1

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

7. CDC 7600 aneb důstojný nástupce superpočítače CDC 6600

Dalším superpočítačem, o němž se v našem seriálu o historii vývoje výpočetní techniky zmíníme, je superpočítač CDC 7600. Jak již jméno i číselné označení tohoto počítače napovídá, jedná se o stroj, který je následovníkem superpočítače CDC 6600 a nejedná se o následovníka ledajakého. Špičkový výpočetní výkon tohoto stroje byl totiž až desetkrát vyšší než u CDC 6600. Ručně optimalizované programy běžně dosahovaly výpočetního výkonu 10 MFLOPS (3 MFLOPS u CDC 6600, „pouze“ 1/2 MFLOPS u Fortranovských programů) a teoretický výpočetní výkon při současné práci všech funkčních jednotek a provádění jedné instrukce v jednom taktu mohl dosahovat až hodnoty 36 MFLOPS. I hodinová frekvence používaná procesorem tohoto počítače převýšila frekvence používané u jiných dobových počítačů, protože dosahovala hodnoty 36,4 MHz, zatímco u většiny mainframů hodinová frekvence nepřekročila 10 MHz a u mnoha mainframů se dokonce pohybovala pod hranicí jednoho MHz.

Obrázek 8: Detailní pohled na funkční moduly superpočítače Cray-2 ponořené do chladicí kapaliny. Tento superpočítač byl vzdáleným potomkem zde popisovaného superpočítače CDC 7600. Některé konstrukční prvky jsou dokonce u obou počítačů téměř shodné.
(zdroj: Cray Research)

8. Miniaturizace a pipeline jako cesta k nejrychlejším superpočítačům?

Práce na konstrukci superpočítače CDC 7600 začaly prakticky ihned poté, co byl jeho předchůdce CDC 6600 uveden na trh. Právě v tomto okamžiku totiž Seymour Cray ztratil veškerý zájem o další osudy CDC 6600 a rozhodl se zkonstruovat počítač nový, který by byl „o něco“ rychlejší, než CDC 6600. Díky použití integrovaných obvodů (což byla na konci šedesátých let minulého století stále ještě novinka) a rychlejších typů polovodičových tranzistorů všichni jeho kolegové očekávali, že nový počítač CDC 7600 bude zhruba dvakrát až třikrát rychlejší, než CDC 6600. Ovšem Seymour Cray se s tímto (ostatně velmi slušným) zrychlením nehodlal smířit a začal se zabývat problémy, které zůstaly u CDC 6600 nevyřešeny a jejichž vyřešení by mohlo vést k dalšímu nárůstu výpočetního výkonu.

root_podpora

U počítače CDC 6600 totiž poměrně často nastával problém s vytížením všech deseti funkčních jednotek popsaných v předchozích kapitolách. V mnoha případech vždy některá z těchto jednotek zahálela, zatímco se čekalo na dokončení operace v jiné jednotce. Cray si uvědomil, že pouhé přidání dalších funkčních jednotek by pravděpodobně nevedlo k jím plánovanému skokovému nárůstu výpočetního výkonu a je tedy nutné hledat jiné řešení. To spočívalo na jedné straně ve zmenšení celého počítače a tím pádem i ke zkrácení všech datových vodičů (ostatně většina superpočítačů sestrojených Seymourem Crayem zdaleka neodpovídala představám o superpočítači jako obrovském sálovém počítači) a na straně druhé k vytvoření instrukční pipeline, což byla taktéž jedna z novinek. Podrobnější informace o tomto velmi zajímavém stroji si řekneme v následující části tohoto seriálu.

Obrázek 9: Superpočítač Cray-2 – pohled na výpočetní moduly a moduly s operační pamětí.
(zdroj: Cray Research)

9. Odkazy na Internetu

  1. CONTROL DATA 6400/6500/6600 COMPUTER SYSTEMS Reference Manual
    http://ed-thelen.org/comp-hist/CDC-6600-R-M.html#P2–1
  2. IBM 7302 Oil Core Memory
    http://www.pi­ercefuller.com/li­brary/img00085­.html?id=img00085
  3. IBM 7302 Air Core Memory
    http://www.pi­ercefuller.com/li­brary/img00090­.html?id=img00090
  4. Control Data Corporation (CDC) 6600: 1966–1977
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/6600­.jsp
  5. Control Data Corporation (CDC) 7600: 1971–1983
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/7600­.jsp
  6. John Mauchly
    http://en.wiki­pedia.org/wiki/Joh­n_Mauchly
  7. J. Presper Eckert
    http://en.wiki­pedia.org/wiki/J­._Presper_Eckert
  8. BINAC
    http://en.wiki­pedia.org/wiki/BI­NAC
  9. Description of the BINAC
    http://www.pa­losverdes.com/las­thurrah/binac-description.html
  10. UNIVersal Automatic Computer (UNIVAC)
    http://www.thoc­p.net/hardware/u­nivac.htm
  11. BUNCH
    http://en.wiki­pedia.org/wiki/BUN­CH
  12. Mainframe computer
    http://en.wiki­pedia.org/wiki/Ma­inframe_compu­ter
  13. Cray History
    http://www.cra­y.com/About/His­tory.aspx?404;http:­//www.cray.com:80/a­bout_cray/his­tory.html
  14. Cray Historical Timeline
    http://www.cra­y.com/Assets/PDF/a­bout/CrayTime­line.pdf
  15. Company: Cray Research, Inc. (Computer History)
    http://www.com­puterhistory.or­g/brochures/com­panies.php?al­pha=a-c&company=com-42b9d5d68b216
  16. General Electric GE-400
    http://www.feb-patrimoine.com/PRO­JET/ge400/ge-400.htm
  17. GE-400 Time-sharing information systems:
    http://www.com­puterhistory.or­g/collections/ac­cession/102646147
  18. GE 225 vs. IBM 1401
    http://ed-thelen.org/GE225-IBM1401.html
  19. A GE-225 is found
    http://ed-thelen.org/comp-hist/GE225.html
  20. G.E. 200 Series Computers
    http://www.smec­c.org/g_e__200_s­eries_computer­s.htm
  21. GE-200 series (Wikipedia)
    http://en.wiki­pedia.org/wiki/GE-200_series
  22. GE-400 series (Wikipedia)
    http://en.wiki­pedia.org/wiki/GE-400_series
  23. GE-600 series (Wikipedia)
    http://en.wiki­pedia.org/wiki/GE-600_series
  24. Mainframe – Introduction
    http://www.thoc­p.net/hardware/ma­inframe.htm
  25. Honeywell 800 (1958)
    http://www.cs­.clemson.edu/~mar­k/h800.html
  26. Real Machines with 24-bit and 48-bit words
    http://www.qu­adibloc.com/com­p/cp0303.htm
  27. Honeywell ARGUS
    http://en.wiki­pedia.org/wiki/Ho­neywell_ARGUS
  28. Honeywell Datamatic 1000
    http://www.smec­c.org/honeywe­ll_datamatic_1000­.htm
  29. Honeywell
    http://en.wiki­pedia.org/wiki/Ho­neywell
  30. Whatever Happened to IBM and the Seven Dwarfs? Dwarf Four: Honeywell
    http://www.dvo­rak.org/blog/ibm-and-the-seven-dwarfs-dwarf-four-honeywell/
  31. Datamatic 1000 by DATAmatic Corporation (1955)
    http://www.com­putermuseum.li/Tes­tpage/Datamatic-1000.html
  32. Burroughs – Third Generation Computers
    https://wiki.cc­.gatech.edu/fol­klore/index.php/Bu­rroughs_Third-Generation_Com­puters
  33. Burroughs B5000, B5500 and B5700 (original) documentation
    http://www.bit­savers.org/pdf/bu­rroughs/B5000_55­00_5700/
  34. Burroughs B6500 and B6700 (original) documentation
    http://www.bit­savers.org/pdf/bu­rroughs/B6500_67­00/
  35. Burroughs B8500 (original) documentation
    http://www.bit­savers.org/pdf/bu­rroughs/B8500/
  36. ERA 1101 Documents
    http://ed-thelen.org/comp-hist/ERA-1101-documents.html
  37. Ukázkový program pro UNIVAC 1101/ERA 1101
    https://wiki.cc­.gatech.edu/fol­klore/index.php/En­gineering_Rese­arch_Associates_an­d_the_Atlas_Com­puter_(UNIVAC_1101)
  38. UNIVAC I Computer System
    http://univac1­.0catch.com/
  39. UNIVAC I Computer System
    http://univac1­.0catch.com/y­ellowpage.htm
  40. UNIVAC (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­nivac
  41. UNIVAC I (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_I
  42. UNIVAC II – Universal Automatic Computer Model II
    http://ed-thelen.org/comp-hist/BRL61-u4.html
  43. UNIVAC II (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_II
  44. UNIVAC III (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_III
  45. UNIVAC 1101 (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_1101
  46. UNISYS History Newsletter
    https://wiki.cc­.gatech.edu/fol­klore/index.php/Ma­in_Page
  47. UNIVAC Solid State (Wikipedia)
    http://en.wiki­pedia.org/wiki/U­NIVAC_Solid_Sta­te
  48. Bi-quinary coded decimal (Wikipedia)
    http://en.wiki­pedia.org/wiki/Bi-quinary_coded_de­cimal
  49. UNIVAC III Data Processing System
    http://ed-thelen.org/comp-hist/BRL61-u4.html#UNIVAC-III
  50. The UNIVAC III Computer
    https://wiki.cc­.gatech.edu/fol­klore/index.php/The_U­NIVAC_III_Com­puter
  51. UNIVAC III Photos
    http://jwstep­hens.com/univac3/pa­ge01.htm
  52. A History of Unisys Computers (kniha)
    http://www.lu­lu.com/produc­t/hardcover/a-history-of-unisys-computers/4627477
  53. UNIVAC III Instructions Reference Card
    http://www.bit­savers.org/pdf/u­nivac/univac3/UT-2455_UNIVACII­I_RefCd61.pdf

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