Obsah
3. Boj o dosažení co nejvyššího výpočetního výkonu
4. Nový způsob uspořádání plošných spojů
5. Chlazení funkčních jednotek (procesorů)
6. Architektura superpočítače Cray-2
7. Superpočítač Cray-2 v praxi
8. Obsah následující části seriálu
1. Superpočítač Cray-2
V předchozích dvou částech seriálu o historii výpočetní techniky jsme si řekli základní informace o superpočítači Cray-1. Kromě historie vzniku tohoto počítače jsme si popsali jak jeho architekturu, tak i způsoby, jakými bylo dosaženo jeho velmi vysokého výpočetního výkonu (v době uvedení na trh se jednalo o nejrychlejší počítač na světě, později se toto umístění stalo pro počítače CRAY typické). Dále jsme si řekli, že pro tento superpočítač vznikl kromě assembleru nazvaného jednoduše CAL (Cray Assembler Language) i speciální překladač programovacího jazyka Fortran nazvaný CFT (Cray-1 Fortran Compiler), který dokázal optimalizovaně překládat některé typy programových smyček DO takovým způsobem, aby se co nejlépe využily možnosti funkčních jednotek provádějících výpočty s vektory pevné délky (každý vektor byl představován registrem s 64 prvky, kde každý prvek byl reprezentován 64bitovou numerickou hodnotou).
Obrázek 1: Celkový pohled na superpočítač Cray-1.
Návrh počítače Cray-1 však byl pro jeho hlavního konstruktéra a z velké části i autora celé koncepce „vektorových“ superpočítačů – Seymoura Craye – pouhým začátkem pro návrh dalších, mnohem výkonnějších a technologicky vyspělejších strojů. Po modelu Cray-1S používajícího bipolární paměti s kapacitou až čtyři miliony slov a na něj navazujícího Cray-1M (zde došlo ke změně technologie paměťových modulů z bipolárních obvodů na levnější obvody typu MOS) následoval počítač Cray X-MP s výpočetním výkonem 800 MFLOPS, přičemž původní Cray-1 se mohl pyšnit výkonem 160 MFLOPS (obě zmíněné hodnoty byly ještě na konci sedmdesátých let minulého století považovány téměř za sci-fi). Superpočítač Cray X-MP, na nějž později navázala řada Cray Y-MP, se samozřejmě stal nejrychlejším počítačem své doby aby byl z této prestižní pozice sesazen technologicky mnohem vyspělejším počítačem Cray-2 s výpočetním výkonem téměř 1,9 GFLOPS. Právě tímto zajímavým superpočítačem se budeme zabývat v navazujících kapitolách.
Obrázek 2: Detail spodní části superpočítače Cray-1S. Na pravé straně fotografie je patrný „vstup“ do vnitřního prostoru stroje.
2. Vznik superpočítače Cray-2
Práce na vývoji superpočítače Cray-2 byly, i když poměrně pozvolna, zahájeny již v době, kdy byla uváděna do ostrého provozu první série superpočítačů Cray-1. Ovšem vývoj nového a v mnoha ohledech i odlišného stroje provázely značné potíže, a to jak technologické, tak i organizační. Po úspěšném uvedení počítače Cray-1 na trh se Seymour Cray chtěl začít plně věnovat vývoji jeho následovníka, ovšem (možná poněkud paradoxně) vedl úspěch Craye-1 k tomu, že se firma Cray Research rozrostla a Seymour Cray sám začal být obtěžován každodenními starostmi s řízením vznikajícího molochu, což byla povinnost, která ho – podle jeho vlastních slov – v žádném případě nebavila, protože ho odváděla od skutečné práce (ostatně je poměrně zajímavé porovnat tento postoj Seymoura Craye s ostatními tehdejšími vizionáři v oboru IT; například ani Steve „Woz“ Wozniak nebyl nijak nadšený z vedoucích pozic).
Obrázek 3: Superpočítač Cray-1 a jeho duchovní otec a konstruktér.
Seymour Cray se za této situace zachoval podobně jako o několik let dříve (konkrétně v roce 1972) ve firmě Control Data – rezignoval na svoji funkci jednoho z manažerů Cray Research a začal se chystat na to, že vytvoří novou laboratoř, která by měla pracovat zcela samostatně a nezávisle na dalších odděleních firmy. Podle některých zdrojů Seymour Cray dokonce uvažoval o úplném odchodu z firmy a založení společnosti nové. Vedení Cray Research ovšem neudělalo podobnou chybu jako manažeři z Control Data. Naopak plně podpořilo Craye a výsledkem byl vznik zcela nové laboratoře v Boulderu ve státě Colorado. V této nové laboratoři začal Seymour Cray se svým týmem navrhovat superpočítač, který měl mít zcela novou architekturu a samozřejmě měl být mnohem výkonnější než jeho předchůdci Cray-1, Cray-1S, Cray-1M a Cray X-MP. Cílem bylo dosažení desetinásobného výpočetního výkonu oproti původnímu Crayi-1, což je spíše revoluce než pomalá a po malých krocích dělaná evoluce.
Obrázek 4: Příručka k superpočítači Cray-2.
3. Boj o dosažení co nejvyššího výpočetního výkonu
Překročení hranice desetinásobného navýšení výpočetního výkonu však v žádném případě nebylo snadné, už jen z toho důvodu, že superpočítač Cray-1 představoval poměrně vysoko položenou laťku. Seymour Cray dosáhl velmi vysokého výpočetního výkonu předchozího modelu Cray-1 třemi metodami. Především použil velké množství funkčních jednotek (funkční jednotka zhruba odpovídá našemu chápání procesoru), které mohly pracovat paralelně a mnohonásobně tak urychlit výpočty optimalizované pro danou architekturu. Dále se snažil o vytvoření velmi kompaktního stroje, což bylo vedeno snahou o minimalizaci zpoždění signálů při vzájemné komunikaci jednotlivých funkčních jednotek („smaller means faster“). Výsledkem byl světoznámý design stroje s půdorysem ve tvaru písmena C (tříčtvrteční kruh), který byl poměrně malý, zejména při srovnání s mainframy firmy IBM či superpočítači dalších firem. Třetím způsobem urychlení bylo nahrazení diskrétních elektronických součástek integrovanými obvody, samozřejmě těmi nejrychlejšími, které byly v dané době k dispozici (což mimochodem vedlo k použití technologie ECL).
Obrázek 5: Superpočítač Cray-2 – pohled na výpočetní moduly a moduly s operační pamětí.
(zdroj: Cray Research)
Prakticky stejnou metodu použil Seymour Cray i při vývoji superpočítače Cray-2. Nejprve se rozhodl využít integrované obvody s větší integrací než u předchozích modelů, což je samozřejmě logické, protože vývoj těchto obvodů pokračoval v osmdesátých letech minulého století velmi rychle kupředu. Následně zkrátil délku hodinových cyklů z 12,5 nanosekund na 4,1 nanosekundy a podstatným způsobem rozšířil jak počet funkčních jednotek, tak i kapacitu operační paměti z původních 1–4 megaslov na 64–4096 megaslov (každé slovo mělo šířku 64 bitů, většina zpracovávaných operandů byly numerické hodnoty uložené ve formátu plovoucí řádové čárky). Zbývalo však vyřešit tři poměrně zásadní problémy – způsob propojení jednotlivých integrovaných obvodů, chlazení celého počítače a v neposlední řadě taktéž odstranění či alespoň minimalizaci následků toho, že výkon funkčních jednotek (procesorů) vzrostl rychleji než rychlost operačních pamětí. Jak se s těmito problémy konstruktéři vypořádali si řekneme v následujících kapitolách.
Obrázek 6: Částečně demontovaný Cray-2.
4. Nový způsob uspořádání plošných spojů
Jedním z největších technologických problémů, se kterým se konstruktéři superpočítače Cray-2 museli již na začátku své práce vypořádat, byl způsob umístění integrovaných obvodů na plošné spoje a uspořádání těchto plošných spojů ve skříních, z nichž se počítač skládal podobným způsobem, jako u Craye-1. V prvních návrzích superpočítače Cray-2 se objevovaly poměrně velké plošné spoje s několika desítkami až stovkami integrovaných obvodů. Ovšem toto řešení bylo z několika důvodů nevyhovující; jak kvůli obtížnému pájení při osazování desek, tak především z toho důvodu, že se nepodařilo v dostatečné míře zmenšit vzdálenost mezi jednotlivými čipy. Při velké vzdálenosti komunikujících čipů by totiž nastalo takové zpoždění binárního signálu, které by si vyžádalo prodloužení doby strojového cyklu, čemuž se Seymour Cray samozřejmě vehementně bránil. Navíc by se kvůli většímu množství čipů na jednom plošném spoji poměrně zdlouhavě hledaly a diagnostikovaly chyby.
Obrázek 7: 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 (z-pins).
(zdroj: http://bobodyne.com/web-docs/robots/cray2/)
Situace při pokusech o konstrukci vhodných plošných spojů dokonce došla tak daleko, že Seymour Cray uvažoval o zrušení celého projektu, protože se se svým konstrukčním týmem nedokázal přiblížit k požadovanému výpočetnímu výkonu. Ovšem po cca půl roce Seymoura Craye napadlo mnohem lepší a elegantnější řešení: každý rozměrný plošný spoj nahradil osmicí menších plošných spojů, ovšem umístěných nad sebe. Mezi těmito plošnými spoji byly navrženy propojky nazývané z-pins. Vzhledem k tomu, že vzdálenosti mezi jednotlivými plošnými spoji v osmici byly relativně malé, byla tloušťka celého takto vzniklého „balíčku karet“ pouhé tři palce. Díky tomuto trojrozměrnému uspořádání se vzdálenost mezi jednotlivými čipy zmenšila na požadovanou úroveň, ovšem objevil se další technologický problém – chlazení takto uspořádaných plošných spojů a čipů na nich. Způsobem řešení tohoto problému se budeme zabývat v navazující kapitole.
Obrázek 8: Pohled na jeden modul (osmici plošných spojů) ze strany konektoru. Přes tyto piny komunikoval modul s ostatními moduly nainstalovanými v superpočítači.
(zdroj: http://bobodyne.com/web-docs/robots/cray2/)
5. Chlazení funkčních jednotek (procesorů)
Vzhledem k tomu, že v superpočítači Cray-2 byly všechny čipy uspořádány „3D“ systémem popsaným v předchozí kapitole, bylo nutné navrhnout zcela nový systém chlazení, protože klasické chlazení proudícím vzduchem by nebylo kvůli malým vzdálenostem mezi jednotlivými plošnými spoji účinné a spolehlivé (a při oddálení jednotlivých plošných spojů od sebe by opět docházelo k nežádoucím zpožděním binárních signálů, propojky mezi plošnými spoji by pracovaly jako antény atd.). Pro přiblížení a porovnání s moderními osobními počítači: každý ze 750 modulů, z nichž se superpočítač Cray-2 skládal, vyzařoval 300 až 500 Wattů tepelné energie.
Obrázek 9: Detailní pohled na moduly ponořené do chladicí kapaliny.
(zdroj: Cray Research)
Z tohoto důvodu se namísto chlazení vzduchem využilo mnohem účinnější (a samozřejmě také dražší) chlazení pomocí tekutiny. V Crayi-2 se používalo v té době unikátní přímé chlazení, což znamená, že plošné spoje byly ponořeny do chladicí kapaliny nazvané Fluorinert, která byla dodávána firmou 3M. Chladicí kapalina byla pod tlakem rozváděna rychlostí cca jeden palec za sekundu ze zásobní nádrže do všech funkčních modulů počítače Cray-2 a poté se přes tepelný výměník vracela zpět do zásobní nádrže.
Obrázek 10: V pozadí vidíme superpočítač Cray-2, v popředí pak jeho „chladicí věž“ s průhledným zásobníkem vody.
V tepelném výměníku byla ohřátá kapalina Fluorinert ochlazována vodou proudící v sekundárním okruhu. Právě kvůli unikátnímu přímému chlazení kapalinou se superpočítači Cray-2 běžně přezdívalo „Bubbles“ a na počítačích se běžně objevovaly nápisy typu „Zákaz lovu ryb“, popř. technici do sekundárního (vodního) chladicího okruhu skutečně vložili plastové ryby (viz též předchozí obrázek). Poznámka: chlazení kapalinou se používá i v některých současných osobních počítačích (ať již se jedná o profesionální či amatérské řešení), ovšem většinou je chladicí kapalina rozváděna do chladičů umístěných nad jednotlivými (vybranými) čipy – většinou jde o mikroprocesor a GPU. Ovšem toto řešení nemohlo být v Crayi-2 použito, neboť bylo nutné chladit tisíce čipů; navíc je přímé chlazení spolehlivější – například netěsnost některého modulu by nezpůsobila větší škody, nebylo nutné kontrolovat, zda jednotlivé chladiče jsou spolehlivě upevněny a dosedají na celou plochu čipů atd.
Obrázek 11: Přezdívka „Bubbles“ byla vlastně poměrně trefná.
6. Architektura superpočítače Cray-2
V předchozích kapitolách jsme si řekli, že všechny funkční jednotky i operační paměť superpočítače Cray-2 byly implementovány v modulech, přičemž každý modul byl zkonstruován z osmi vzájemně propojených plošných spojů osazených jak diskrétními součástkami, tak i – a to především – integrovanými obvody. Poměrně zajímavá je informace, že cca 30% až maximálně 75% plochy každého plošného spoje bylo skutečně obsazeno čipy, takže plošný spoj byl z tohoto pohledu využit optimálně (musíme si uvědomit, že nezanedbatelnou plochu zabraly též propojky mezi plošnými spoji). Čipy tvořící jeden modul byly, ať již se jednalo o modul funkční jednotky, nebo i o modul operační paměti, uspořádány v pravidelné trojrozměrné mřížce o rozměrech 8×8×12 čipů. Celý superpočítač Cray-2 se skládal z 320 takových modulů, takže snadným výpočtem můžeme zjistit, že v celém stroji bylo nainstalováno zhruba čtvrt milionu (!) čipů o poměrně vysoké integraci.
Obrázek 12: Detail horní části „chladicí věže“.
Každý modul vyzařoval, jak jsme si již řekli v kapitole věnované systému chlazení, cca 300 až 500 Wattů tepelné energie, celkem tedy bylo generováno poměrně slušných 128 kW tepla. Z modulů bylo vytvořeno několik do značné míry paralelně a nezávisle na sobě pracujících jednotek. Především se jedná o hlavní paměť (main memory), čtveřici lokálních pamětí (local memory), čtveřici procesorů používaných pro výpočty (background processors), čtveřici řadičů disků (disk controllers) a konečně o pátý procesor (foreground processor), který řídil jak ostatní čtyři procesory, tak i přenosy dat mezi hlavní pamětí a paměťmi lokálními. Každému procesoru používanému pro výpočty je přiřazena jeho lokální velmi rychlá paměť o kapacitě 16 kiloslov (1 MB), řadič disků a logika pro komunikaci s pátým (řídicím) procesorem. Důvodem, proč je z hlavní paměti vyčleněna čtveřice rychlých lokálních pamětí, se budeme zabývat v dalším textu.
Obrázek 13: Architektura superpočítače Cray-2.
7. Superpočítač Cray-2 v praxi
Superpočítače Cray-2, které byly původně vyvinuty na objednávku Ministerstva energetiky (DOE) a Ministerstva obrany USA (DOD), se již tradičně používaly především v těch oblastech kde bylo nutné provádět velké množství výpočtů s reálnými čísly, popř. s vektory a maticemi reálných čísel. Jedná se především o trojrozměrnou grafiku (například raytracing, který byl na Crayích podporován hned několika programy), výpočty proudění, výpočty prováděné v nukleární fyzice, aplikace numerických modelů počasí atd. Pro tvorbu aplikací z oblasti numerické matematiky byly ke Crayům dodávány překladače jazyka Fortran, které generovaly kód optimalizovaný pro běh na vektorových jednotkách. V případě počítače Cray-2 se jednalo o FORTRAN 77, jenž, podobně jako jeho implementace pro jeho předchůdce Cray-1, dokázal optimálně přeložit i programové smyčky, v nichž se vyskytovala podmínka, popř. se v nich prováděl přístup k prvkům vektorů nebo dvourozměrných matic.
Obrázek 14: Jeden z plošných spojů obsahujících paměťové čipy, mezi nimiž můžeme vidět z-piny sloužící k propojení jednotlivých plošných spojů v rámci jednoho modulu.
Navíc se díky existenci čtyř relativně samostatně pracujících výkonných procesorů vybavených lokálními paměťmi eliminovala jedna velmi nepříjemná vlastnost Craye-1, která způsobovala zpomalení výpočtů při práci s maticemi, jejichž řádky byly delší než 64 prvků (v takovém případě se například při přístupu po řádcích a nikoli po sloupcích musel neustále naplňovat „vektorový“ registr, což u některých algoritmů vedlo k podstatnému zpomalení výpočtu). Kromě programovacího jazyka FORTRAN se na Crayi-2 používal i programovací jazyk C (spíše však pro systémové úlohy) a taktéž programovací jazyk Ada, což je pravděpodobně jeden z důsledků použití Craye-2 v NASA. Později bylo několik modelů počítače Cray-2 prodáno i různým universitám a větším firmám. Jelikož cena za hodinu práce jednoho procesoru byla poměrně nízká – cca 140 dolarů, byly tyto počítače použity i v mnoha projektech vedených například MIT či dalšími většími universitami.
Obrázek 15: Titulní strana referenční příručky jazyka Ada ve verzi pro počítače Cray.
8. Obsah následující části seriálu
V následující části seriálu o historii výpočetní techniky si podrobněji popíšeme architekturu superpočítače Cray-2. Zaměříme se především na to, proč byla původně homogenní operační paměť rozdělena na část dostupnou všem čtyřem výkonným procesorům a na část lokální a jaký mělo toto rozdělení dopad na reálné úlohy provozované na Crayi-2. Posléze se zaměříme na superpočítače Cray X-MP (který byl určitým mezičlánkem mezi Cray-1 a Cray-2) a taktéž na různé varianty stroje Cray Y-MP, který na řadu X-MP navazoval.
Obrázek 16: Některé typy programových smyček optimalizovaných překladačem FORTRANu 77 pro počítače Cray-2.
(zdroj: materiály firmy Cray Research)
9. Odkazy na Internetu
- 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 - Seymour Cray Biography
http://www.cray.com/Assets/PDF/about/SeymourCray.pdf - Company: Cray Research, Inc. (Computer History)
http://www.computerhistory.org/brochures/companies.php?alpha=a-c&company=com-42b9d5d68b216 - Cray Wiki
http://www.craywiki.com/index.php?title=Main_Page - Seymour Cray
http://www.craywiki.com/index.php?title=Seymour_Cray - Cray (Wikipedia)
http://en.wikipedia.org/wiki/Cray - Cray-1 (Cray Wiki)
http://www.craywiki.com/index.php?title=Cray_1S - Cray-1 (Wikipedia)
http://en.wikipedia.org/wiki/Cray-1 - Cray X-MP (Wikipedia)
http://en.wikipedia.org/wiki/Cray_X-MP - Cray-2 (Wikipedia)
http://en.wikipedia.org/wiki/Cray-2 - What Limits Forecast Accuracy?
http://weather.mailasail.com/Franks-Weather/Forecast-Accuracy-Limitations - Remembering the Cray-1
http://www.theregister.co.uk/2008/01/05/tob_cray1/ - Cray Supercomputer FAQ and other documents
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/index.html - Cray Research and Cray computers FAQ Part 1
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp1.html#TOC - Cray Research and Cray computers FAQ Part 2
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp2.html#TOC1 - Cray Research and Cray computers FAQ Part 3
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp3.html#TOC1 - Cray Research and Cray computers FAQ Part 4
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp4.html#TOC1 - Cray Research and Cray computers FAQ Part 5
http://www.spikynorman.dsl.pipex.com/CrayWWWStuff/Cfaqp5.html#TOC1 - Fluorinert
http://solutions.3m.com/wps/portal/3M/en_US/electronics/home/productsandservices/products/chemicals/ElectronicLiquids/?WT.mc_id=keymatch - Fluorinert
http://en.wikipedia.org/wiki/Fluorinert - Historic Computer Images
http://ftp.arl.army.mil/ftp/historic-computers/ - Cray-2 logic module
http://bobodyne.com/web-docs/robots/cray2/ - The making of a CRAY-3
http://www.cisl.ucar.edu/docs/SCD_Newsletter/News_summer93/04e.cray3.html - Computer Speed Claims 1980 to 1996
http://homepage.virgin.net/roy.longbottom/mips.htm - Speed of Intel 8087 co-processor in FLOPS ($100)
http://answers.google.com/answers/threadview/id/542435.html - Million instructions per second
http://en.wikipedia.org/wiki/Mflops - Million instructions per second
http://en.wikipedia.org/wiki/Million_instructions_per_second#Million_instructions_per_second - Rosetta Code – Category:Fortran
http://rosettacode.org/wiki/Fortran - IBM 36-bit computers
http://www.36bit.org/ibm/ - Symbolics 36-bit computers
http://www.36bit.org/symbolics/ - IBM System 360/370 Compiler and Historical Documentation
http://www.edelweb.fr/Simula/ - Who Was Who in IBM's Programming Research? Early FORTRAN Days
http://www.trailing-edge.com/~bobbemer/PRORES.HTM - Emitter-coupled logic
http://en.wikipedia.org/wiki/Emitter-coupled_logic - ECL – Emitter Coupled Logic
http://ppd.fnal.gov/elec/ecl/ecl.html - Cray's Mark Remains Speed With Simplicity
http://www.mbbnet.umn.edu/hoff/hoff_sc.html - 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