Obsah
1. Superpočítač CDC 7600 – předchůdce slavného Craye-1
2. Inovativní tvar a modulová stavba superpočítače CDC 7600
3. Operační paměť počítače CDC 7600
4. Výpočetní jednotky počítače CDC 7600
5. Instrukční a datové pipeline
6. Délky trvání základních aritmetických operací na počítači CDC 7600
7. Optimalizace aplikací pro CDC 7600
8. Další vývoj superpočítačů sestrojených Seymourem Crayem
1. Superpočítač CDC 7600 – předchůdce slavného Craye-1
I visited Livermore in 1971 and they showed me a CDC 7600. I had just designed a character generator for a high-resolution CRT with 27 ns pixels, which I thought was pretty fast. It was a schock to realize that the 7600 could do a floating-point multiply for every dot that I could display!
Butler Lampson
V dnešní části seriálu o historii vývoje výpočetní techniky navážeme na část předchozí, v níž jsme si řekli základní informace o superpočítači CDC 7600 sestrojeného Seymourem Crayem v polovině šedesátých let minulého století. Připomeňme si, že se jednalo o nejvýkonnější superpočítač své éry a dokonce se jednalo o stroj, který se prozatím (tj. po zhruba padesátiletou historii superpočítačů a distribuovaných výpočetních sítí) udržel na světové špičce nejdéle ze všech ostatních superpočítačů. Buďme však konkrétní: CDC 7600 byl nejvýkonnějším počítačem na světě od roku 1969 až do roku 1976, kdy byl překonán svým nepřímým následovníkem – superpočítačem Cray 1. Špičkový výkon počítače CDC 7600 dosahoval pro ručně optimalizované programy až 10 MFLOPS a teoretický výpočetní výkon při práci všech dále popsaných funkčních jednotek a při provedení jedné instrukce v každém taktu mohl dosahovat až ve své době takřka neuvěřitelné hodnoty 36 MFLOPS.
Obrázek 1: Celkový pohled na superpočítač CDC 7600.
I hodinová frekvence používaná devíti procesorovými jednotkami tohoto počítače (tato frekvence samozřejmě přímo souvisí s MFLOPS) převýšila frekvence používané u jiných dobových počítačů, protože dosahovala hodnoty 36,4 MHz (délka trvání jednoho cyklu = 27,5 nanosekund), 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. I další údaje o superpočítači CDC 7600 jsou zajímavé: jeho cena dosahovala v základním vybavení 5,1 milionu dolarů (což však nebyla pro potenciální zákazníky cena nijak závratná, zejména při přepočtu ceny na jeden MFLOPS), procesorové jednotky a řadiče byly sestaveny z 3360 vyměnitelných a samostatně testovatelných modulů a pro vzájemné propojení těchto modulů bylo použito přibližně 193 kilometrů (120 mil) vodičů. Ovšem pravděpodobně nejdůležitější novinkou, která byla při konstrukci tohoto počítače využita, byla instrukční a datová pipeline, která poměrně zásadním způsobem umožnila zvýšit jeho výpočetní výkon.
Obrázek 2: Detailní pohled na jednotku superpočítače CDC 7600.
2. Inovativní tvar a modulová stavba superpočítače CDC 7600
V tomto seriálu jsme se již zabývali superpočítači Cray 1, Cray X-MP, Cray Y-MP a Cray 2. Většina lidí seznámených s výpočetním výkonem těchto strojů byla při jejich shlédnutí překvapena, jak jsou tyto počítače ve skutečnosti malé, především v porovnání s konkurenčními superpočítači. Miniaturizace byla jedním z důvodů, proč Seymour Cray dokázal konstruovat počítače s velmi krátkými strojovými cykly – při malé vzdálenosti mezi jednotlivými moduly docházelo jen k minimálnímu zpoždění (poněkud paradoxní je, že se Cray poměrně dlouho obešel bez nutnosti využití integrovaných obvodů CMOS). Ovšem Cray se snažil o miniaturizaci a využití poměrně inovativního tvaru počítače (zejména jeho půdorysu) již u dnes popisovaného stroje CDC 7600. Jednotky tohoto stroje byly půdorysně uspořádány do tvaru hranatého písmene C, což umožnilo zkrátit a tím pádem i urychlit přenos dat mezi jednotlivými jednotkami (u později zkonstruovaných počítačů Cray se jejich tvar stal ještě zajímavější, a to i po designové stránce). Pokud by se všechny jednotky počítače CDC 7600 umístily vedle sebe, vznikl by útvar dlouhý zhruba 7,5 metru.
Obrázek 3: Pohled na jeden z modulů, z nichž byly sestaveny jednotlivé procesory počítače CDC 7600.
Autor: Eric Foxley
Seymour Cray při stavbě superpočítače CDC 7600 využil unifikované moduly (což byla jeho oblíbená a časem prověřená technologie), kterých bylo použito celkem 3360. Každý modul byl tvořen oboustranným plošným spojem s konektorem na jedné straně a několika piny určenými pro testování a měření na straně druhé – viz též obrázky číslo 3 a 4, na nichž je na levé straně zobrazen šestnáctipinový konektor a na straně pravé šestice pinů určených pro testovací účely. Základními elektronickými součástkami použitými při konstrukci počítače CDC 7600 se staly rezistory a polovodičové (bipolární) tranzistory, z nichž se skládaly jak klopné obvody, tak i veškerá kombinační logika. Zvětšený pohled na jeden z modulů počítače CDC 7600 je vyobrazen na obrázcích číslo 5 a 7. Z unifikovaných modulů byly sestaveny jak procesorové jednotky (kterých bylo celkem devět), tak i I/O procesory používané pro ovládání periferních zařízení. Taktéž všechny registry byly zapojeny jako klopné obvody sestavené z unifikovaných modulů.
Obrázek 4: Zadní strana jednoho z modulů počítače CDC 7600.
Autor: Eric Foxley
3. Operační paměť počítače CDC 7600
Při konstrukci superpočítače CDC 7600 bylo využito hierarchické struktury operační paměti, což je technologie, která se osvědčila a je ve své vylepšené podobě používaná i v moderních počítačích. Seymour Cray se totiž rozhodl, že hlavní operační paměť nazvaná Small Core Memory (SCM) bude mít kapacitu pouze 65536 slov, přičemž každé slovo bude mít šířku šedesát bitů. To je přesně poloviční kapacita operační paměti, než jakou se v maximální konfiguraci pyšnil jeho předchůdce CDC 6600. Toto řešení samozřejmě mnoha lidem připadalo minimálně nerozumné, ovšem ve skutečnosti se díky menší kapacitě operační paměti mohla její kapacita rozdělit mezi 32 modulů pracujících částečně paralelně, což v důsledku vedlo k tomu, že špičková přenosová rychlost mezi pamětí SCM a procesorovými jednotkami dosahovala na svou dobu neuvěřitelné hodnoty 1152 milionu slov za sekundu (pro počítač pracující rychlostí 36 MFLOPS se jednalo o dostačující rychlost).
Obrázek 5: Základní součástky všech modulů: rezistory a polovodičové tranzistory.
Autor: Eric Foxley
Vzhledem k tomu, že kapacita SCM pro mnoho aplikací (pracujících například s rozměrnými maticemi) nedostačovala, byla tato paměť doplněna blokem nazvaným příznačně Large Core Memory (LCM). Kapacita této paměti již dosahovala 514288 slov (512k slov), ovšem přístupová doba byla poněkud horší – pro přenos dat mezi SCM a LCM se používaly datové pakety o šířce osm slov, jejichž přenos trval 64 strojových cyklů. Přenos dat mezi SCM a LCM mohl být částečně zautomatizován. Dnes nás tento způsob rozdělení paměti na dvě části pravděpodobně nepřekvapí, protože jakýkoli stolní počítač obsahuje kromě relativně pomalé operační paměti i datovou a instrukční vyrovnávací paměť (cache), která svou funkcí zhruba odpovídá SCM.
Obrázek 6: Jednotka s částí operační paměti superpočítače CDC 7600.
4. Výpočetní jednotky počítače CDC 7600
Superpočítač CDC 7600 obsahoval celkem devět výpočetních jednotek, z nichž každá byla určena pro provádění jiného typu operací. Většina těchto jednotek s výjimkou děličky pro čísla s pohyblivou řádovou čárkou obsahovala pipeline. To znamenalo, že v každém strojovém cyklu mohlo v každé jednotce začít zpracování nové operace (jen u násobičky byla další operace zdržena o dva takty). Názvy a význam všech devíti výpočetních jednotek jsou uvedeny v tabulce pod tímto odstavcem. Zajímavá je především existence samostatné jednotky pro výpočet Hammingovy váhy, tj. počtu bitů, které jsou v jednom slově (registru) nastaveny na jedničku. V pozdním stadiu vývoje chtěl Seymour Cray tuto jednotku odstranit, ovšem na žádost NSA zůstala tato jednotka zachována, což vedlo k domněnce, že se výpočet Hammingovy váhy v NSA s velkou pravděpodobností využíval pro kryptoanalýzu (což je skutečně jedna z možností, jak tuto operaci využít).
Obrázek 7: Další zvětšený pohled na jeden z modulů superpočítače CDC 7600.
# | Název jednotky | Význam |
---|---|---|
1 | Increment | sčítačka a odčítačka celých čísel, použito pro adresování operandů v operační paměti |
2 | Population-Count | výpočet Hammingovy váhy (počtu jedničkových bitů ve slově) |
3 | Normalize | normalizace po provedení jiných aritmetických operací |
4 | Shift | provádění aritmetických a bitových posuvů |
5 | Boolean | vyčíslení veškerých logických operací |
6 | Long add | sčítačka a odčítačka hodnot s pevnou řádovou čárkou (integer 60 bitů) |
7 | Floating point add | sčítačka a odčítačka hodnot s plovoucí řádovou čárkou (float 60 bitů) |
8 | Floating point divide | dělička hodnot s plovoucí řádovou čárkou |
9 | Floating point multiply | násobička hodnot s plovoucí řádovou čárkou |
Obrázek 8: Fotografie z dobových materiálů o superpočítači CDC 7600.
5. Instrukční a datové pipeline
Již v předchozí kapitole jsme se zmínili o tom, že jednotlivé výpočetní jednotky obsahovaly pipeline. Právě využití pipeline (zřetězení operací) bylo hlavní příčinou vysoké výpočetní rychlosti počítače CDC 7600, zatímco u jeho předchůdce CDC 6600 se spíše využívala relativně jednoduchá forma instrukčního paralelismu – připomeňme si například existenci dvojice výpočetních jednotek Multiply #1 a Multiply #2, popřípadě Increment #1 a Increment #2. Tato forma paralelismu nebyla u CDC 7600 použita, na rozdíl od jeho plánovaného nástupce CDC 8600, který měl obsahovat čtveřici identických procesorových jednotek. U superpočítače Cray-1, který je vzdálenějším nástupcem CDC 7600, se využívalo jedné formy datového paralelismu – vektorových operací. Ovšem pipeline ve funkčních jednotkách byla doplněna ještě jednou technologií, která byla v době konstrukce počítače CDC 7600 taktéž žhavou novinkou.
Obrázek 9: Prototyp počítače CDC 8600.
Jednalo se o instrukční pipeline, protože instrukční slova (obsahující kód instrukce i všechny operandy) se nenačítala přímo z operační paměti do procesoru (resp. do instrukčního dekodéru). Mezi operační pamětí a instrukčním dekodérem byla vytvořena fronta o délce dvanácti šedesátibitových slov (tato fronta byla paradoxně nazývána zásobník instrukčních slov). Do této fronty se instrukce postupně načítaly z operační paměti a následně bylo možné libovolnou načtenou instrukci zpracovat. To mj. znamenalo, že krátké programové smyčky, které bylo možné zakódovat do dvanácti slov o šířce šedesát bitů (což zhruba odpovídá dvaceti až třiceti instrukcím, viz též popis instrukčního formátu uvedený v předchozích částech tohoto seriálu), mohly probíhat velmi vysokou rychlostí bez nutnosti čtení dat z operační paměti. Ještě rychlejší bylo zpracování těchto programových smyček v případě, že všechny jejich operandy byly umístěny v pracovních registrech. Ostatně sada pracovních registrů zůstala prakticky stejná, jako tomu bylo v případě počítače CDC 6600:
Pojmenování | Počet registrů | Bitová šířka | Funkce |
---|---|---|---|
X0, X1 … X7 | 8 | 60 | provádění aritmetických instrukcí |
A0, A1 … A7 | 8 | 18 | adresování |
B0, B1 … B7 | 8 | 18 | adresování, přičtení či odečtení od dalších typů registrů, počitadla smyček |
Obrázek 10: První část grafu znázorňujícího vývojovou řadu počítačů, jejichž architektura byla ovlivněna Seymourem Crayem. Po roce 1956 se vývoj rozdělil na dvě větve: řadu Univac a novou řadu počítačů CDC.
6. Délky trvání základních aritmetických operací na počítači CDC 7600
V tabulce zobrazené pod tímto odstavcem jsou pro zajímavost vypsány délky trvání některých základních aritmetických operací. Jedná se o počet cyklů nutných pro provedení celé operace, do této doby se však nepočítá čas nutný pro načtení instrukce z operační paměti (předpokládá se tedy, že instrukce je umístěna v instrukční pipeline, jinými slovy, že před instrukcí nebyl proveden skok). V tabulce si povšimněte především jedné zajímavosti – násobení a dělení celých čísel (integer) je o několik taktů pomalejší, než násobení a dělení čísel s pohyblivou řádovou čárkou s jednoduchou přesností (float), i když se v prvním případě jistě jedná o jednodušší operaci (není zapotřebí pracovat s exponenty ani provádět normalizaci výsledku). Vysvětlení této „anomálie“ je snadné, protože superpočítač CDC 7600 neobsahoval samostatnou násobičku a děličku pro celá čísla, takže se před provedením násobení či dělení musely provádět konverze na hodnoty s pohyblivou řádovou čárkou.
Obrázek 11: Druhá část grafu znázorňujícího vývojovou řadu počítačů ovlivněných Seymourem Crayem. Pokud se zaměříme na nejvýkonnější superpočítače, jedná se vlastně o slepou větev vývoje.
Nyní již následuje slíbená tabulka:
# | Operace | Datový typ | Výraz ve Fortranu | Počet cyklů | Doba trvání (ns) |
---|---|---|---|---|---|
1 | Součet celých čísel | integer | I=M+N | 12 | 330 |
2 | Rozdíl celých čísel | integer | I=M-N | 12 | 330 |
3 | Součin celých čísel | integer | I=M*N | 18 | 495 |
4 | Podíl celých čísel | integer | I=M/N | 39 | 1073 |
5 | Součet FP čísel | single | A=B+C | 16 | 440 |
6 | Rozdíl FP čísel | single | A=B-C | 16 | 440 |
7 | Součin FP čísel | single | A=B*C | 15 | 413 |
8 | Podíl FP čísel | single | A=B/C | 30 | 825 |
9 | Součet FP čísel | double | A=B+C | 48 | 1320 |
10 | Rozdíl FP čísel | double | A=B-C | 48 | 1320 |
11 | Součin FP čísel | double | A=B*C | 49 | 1348 |
12 | Podíl FP čísel | double | A=B/C | 145 | 3988 |
Obrázek 12: Třetí část grafu znázorňujícího vývojovou řadu počítačů ovlivněných Seymourem Crayem. Právě na této větvi vznikly počítače s nejzajímavější architekturou i designem.
7. Optimalizace aplikací pro CDC 7600
Poměrně zajímavé a současně i pro nás pojídače koláčů poučné je studium optimalizací, které museli programátoři provádět při psaní výpočetně náročných aplikací pro superpočítač CDC 7600. Prakticky všechny aplikace byly tvořeny ve Fortranu (což je ostatně jazyk používaný v této oblasti dodnes), ovšem pro počítač CDC 7600 původně existoval pouze překladač, který neprováděl žádné optimalizace. To s sebou přinášelo výhody i nevýhody, ovšem jasnou výhodou bylo to, že programátoři přesně věděli, jakým způsobem se která programová konstrukce přeloží a jak ji lze optimalizovat se znalostí funkce jednotlivých výpočetních jednotek, o nichž jsme se zmínili v předchozím textu. Původní překladač Fortranu – na rozdíl mnoha současných programovacích jazyků – například překládal výrazy se závorkami takovým způsobem, že se podvýraz v závorce skutečně začal fyzicky provádět dříve, než zbytek výrazu.
Obrázek 13: Celkový pohled na superpočítač Cray-1.
Programátor tedy mohl se znalostí funkce výpočetních jednotek nahradit výraz:
(A*B*C)/D
za výraz:
A*B*(C/D)
protože věděl, že časově náročná operace dělení C/D začne být prováděna před operací násobení A*B a celkový čas pro vyhodnocení výrazu se tedy o zhruba 10 taktů zkrátí (násobení se začne provádět paralelně s dělením v jiné jednotce). Dalším způsobem urychlení vykonávání programů bylo „ruční“ rozbalení krátké programové smyčky (přibližně s deseti iteracemi, poté se již úzkým hrdlem stal přístup do operační paměti):
DO 10 I=1,6 10 A(I)=B(I)*X
za sekvenci příkazů:
A(1)=B(1)*X A(2)=B(2)*X A(3)=B(3)*X A(4)=B(4)*X A(5)=B(5)*X A(6)=B(6)*X
O takových „samozřejmostech“, jako je ruční přesun invariant cyklů před vlastní programovou smyčku, úpravě podmínek takovým způsobem, aby se podmínka s větší pravděpodobností nesplnila atd., se asi netřeba zmiňovat :-) Programátoři museli taktéž znát strukturu operační paměti a navrhovat algoritmy – většinou tu část, kde se přistupovalo do polí – takovým způsobem, aby nedocházelo k opakovanému čtení pouze z jednoho paměťového modulu.
Obrázek 14: Detail spodní části superpočítače CRAY-1S, kde můžeme mj. vidět i jeho chladicí systém.
8. Další vývoj superpočítačů sestrojených Seymourem Crayem
„The goal as you might imagine is for me to get rid of all the official functions – paper signing and things. That was accomplished well with the contract simply because I don't have to sign anything anymore. I'm still very involved in the company, and I think there's a feeling that it's a mutually satisfactory arrangement.“
Po uvedení superpočítače CDC 7600 na trh se začal Seymour Cray věnovat vývoji dalšího typu superpočítače CDC 8600, který měl mít podle prvních návrhů čtyři samostatně pracující procesorové jednotky a dobu trvání strojového cyklu pouze osm nanosekund. Ovšem firma CDC začala mít kvůli soudnímu sporu s IBM finanční problémy a i z těchto důvodů (navíc kvůli nespokojenosti s bující byrokracií a krácením financí na další vývoj) Seymour Cray firmu Control Data Corporation nakonec v roce 1972 opustil a založil Cray Research a později i Cray Computer Corporation (zajímavé je, že ředitel CDC do těchto firem sám investoval zhruba čtvrt milionu dolarů). Po odchodu Seymoura Craye z firmy CDC projekt počítače CDC 8600 ještě dva roky skomíral a nakonec byl v roce 1974 ukončen a firma CDC se namísto toho zaměřila na vývoj počítačů CDC STAR-100 (konstrukci vedl Jim Thornton), jejichž popisem se budeme zabývat v některém z dalších pokračování tohoto seriálu.
Obrázek 15: Superpočítač Cray-2 – pohled na výpočetní moduly a moduly s operační pamětí.
(zdroj: Cray Research)
V následující tabulce jsou pro úplnost vypsány základní parametry superpočítačů nesoucích jméno Cray:
Systém/série | Architektura | Počet CPU | Cyklus (ns) | Paměť (Mslov) | MFLOPS | Rok výroby |
---|---|---|---|---|---|---|
CRAY 1 | PVP | 1 až 2 | 12,5 | 1 až 4 | 160 | 1977 |
CRAY 2 | PVP | 1 až 4 | 4,1 | 64 až 4096 | 488 až 1951 | 1985 |
CRAY 3 | PVP | 1 až 16 | 2,11 | 64 až 4096 | 948 až 15168 | 1993 |
CRAY X-MP | PVP | 1 až 4 | 9,5 | 8 až 16 | 200 až 800 | 1986 |
CRAY X-MP EA | PVP | 1 až 4 | 8,5 | 8 až 16 | 235 až 942 | 1987 |
CRAY Y-MP | PVP | 1 až 8 | 6,0 | 32 až 4096 | 333 až 2664 | 1989 |
CRAY C90 | PVP | 1 až 16 | 4,2 | 64 až 1024 | 1000 až 15238 | 1992 |
CRAY T90 | PVP | 1 až 32 | 2,2 | 64 až 1024 | 1800 až 57600 | 1995 |
CS6400 | SMP | 4 až 64 | 11,8 | 32 až 2048 | ||
CRAY Y-MP EL | PVP | 2 až 8 | 30,0 | 32 až 512 | 133 až 532 | 1991 |
CRAY J90 | PVP | 4 až 32 | 10,0 | 32 až 1024 | ||
CRAY T3D | MPP | 32 až 2048 | 6,7 | 8/CPU | ||
CRAY T3E | MPP | 16 až 2048 | 3,3 | 8 až 64/CPU | ||
CRAY XT5 (Jaguar) | MPP | 224 256 | 0,38 | 16GB/CPU | 1750000000 | 2009 |
Obrázek 16: Osm plošných spojů obsazených čipy, které tvoří jeden modul počítače Cray-2. Mezi plošnými spoji můžeme vidět propojky (takzvané z-pins).
(zdroj: http://bobodyne.com/web-docs/robots/cray2/)
9. Odkazy na Internetu
- CONTROL DATA 6400/6500/6600 COMPUTER SYSTEMS Reference Manual
http://ed-thelen.org/comp-hist/CDC-6600-R-M.html#P2–1 - CDC 7600 FORTRAN Optimizing Techniques (odkaz na PDF)
http://www.osti.gov/bridge/purl.cover.jsp?purl=/4466164-oepxe4/ - CDC 7600 (rozcestník)
http://wn.com/CDC_7600 - IBM 7302 Oil Core Memory
http://www.piercefuller.com/library/img00085.html?id=img00085 - IBM 7302 Air Core Memory
http://www.piercefuller.com/library/img00090.html?id=img00090 - Control Data Corporation (CDC) 6600: 1966–1977
http://www.cisl.ucar.edu/computers/gallery/cdc/6600.jsp - Control Data Corporation (CDC) 7600: 1971–1983
http://www.cisl.ucar.edu/computers/gallery/cdc/7600.jsp - John Mauchly
http://en.wikipedia.org/wiki/John_Mauchly - J. Presper Eckert
http://en.wikipedia.org/wiki/J._Presper_Eckert - BINAC
http://en.wikipedia.org/wiki/BINAC - Description of the BINAC
http://www.palosverdes.com/lasthurrah/binac-description.html - UNIVersal Automatic Computer (UNIVAC)
http://www.thocp.net/hardware/univac.htm - BUNCH
http://en.wikipedia.org/wiki/BUNCH - Mainframe computer
http://en.wikipedia.org/wiki/Mainframe_computer - Cray History
http://www.cray.com/About/History.aspx?404;http://www.cray.com:80/about_cray/history.html - Cray Historical Timeline
http://www.cray.com/Assets/PDF/about/CrayTimeline.pdf - Company: Cray Research, Inc. (Computer History)
http://www.computerhistory.org/brochures/companies.php?alpha=a-c&company=com-42b9d5d68b216 - General Electric GE-400
http://www.feb-patrimoine.com/PROJET/ge400/ge-400.htm - GE-400 Time-sharing information systems:
http://www.computerhistory.org/collections/accession/102646147 - GE 225 vs. IBM 1401
http://ed-thelen.org/GE225-IBM1401.html - A GE-225 is found
http://ed-thelen.org/comp-hist/GE225.html - G.E. 200 Series Computers
http://www.smecc.org/g_e__200_series_computers.htm - GE-200 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-200_series - GE-400 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-400_series - GE-600 series (Wikipedia)
http://en.wikipedia.org/wiki/GE-600_series - Mainframe – Introduction
http://www.thocp.net/hardware/mainframe.htm - Honeywell 800 (1958)
http://www.cs.clemson.edu/~mark/h800.html - Real Machines with 24-bit and 48-bit words
http://www.quadibloc.com/comp/cp0303.htm - Honeywell ARGUS
http://en.wikipedia.org/wiki/Honeywell_ARGUS - Honeywell Datamatic 1000
http://www.smecc.org/honeywell_datamatic_1000.htm - Honeywell
http://en.wikipedia.org/wiki/Honeywell - Whatever Happened to IBM and the Seven Dwarfs? Dwarf Four: Honeywell
http://www.dvorak.org/blog/ibm-and-the-seven-dwarfs-dwarf-four-honeywell/ - Datamatic 1000 by DATAmatic Corporation (1955)
http://www.computermuseum.li/Testpage/Datamatic-1000.html - Burroughs – Third Generation Computers
https://wiki.cc.gatech.edu/folklore/index.php/Burroughs_Third-Generation_Computers - Burroughs B5000, B5500 and B5700 (original) documentation
http://www.bitsavers.org/pdf/burroughs/B5000_5500_5700/ - Burroughs B6500 and B6700 (original) documentation
http://www.bitsavers.org/pdf/burroughs/B6500_6700/ - Burroughs B8500 (original) documentation
http://www.bitsavers.org/pdf/burroughs/B8500/ - ERA 1101 Documents
http://ed-thelen.org/comp-hist/ERA-1101-documents.html - Ukázkový program pro UNIVAC 1101/ERA 1101
https://wiki.cc.gatech.edu/folklore/index.php/Engineering_Research_Associates_and_the_Atlas_Computer_(UNIVAC_1101) - UNIVAC I Computer System
http://univac1.0catch.com/ - UNIVAC I Computer System
http://univac1.0catch.com/yellowpage.htm - UNIVAC (Wikipedia)
http://en.wikipedia.org/wiki/Univac - UNIVAC I (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_I - UNIVAC II – Universal Automatic Computer Model II
http://ed-thelen.org/comp-hist/BRL61-u4.html - UNIVAC II (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_II - UNIVAC III (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_III - UNIVAC 1101 (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_1101 - UNISYS History Newsletter
https://wiki.cc.gatech.edu/folklore/index.php/Main_Page - UNIVAC Solid State (Wikipedia)
http://en.wikipedia.org/wiki/UNIVAC_Solid_State - Bi-quinary coded decimal (Wikipedia)
http://en.wikipedia.org/wiki/Bi-quinary_coded_decimal - UNIVAC III Data Processing System
http://ed-thelen.org/comp-hist/BRL61-u4.html#UNIVAC-III - The UNIVAC III Computer
https://wiki.cc.gatech.edu/folklore/index.php/The_UNIVAC_III_Computer - UNIVAC III Photos
http://jwstephens.com/univac3/page01.htm - A History of Unisys Computers (kniha)
http://www.lulu.com/product/hardcover/a-history-of-unisys-computers/4627477 - UNIVAC III Instructions Reference Card
http://www.bitsavers.org/pdf/univac/univac3/UT-2455_UNIVACIII_RefCd61.pdf