Superpočítače Cray (pátá část): architektura počítače Cray X-MP a jeho použití ve filmovém průmyslu

19. 10. 2010
Doba čtení: 20 minut

Sdílet

V dnešní části seriálu o historii výpočetní techniky si popíšeme další typ superpočítače zkonstruovaného firmou Cray Research. Jedná se o počítač Cray X-MP, který byl komerčně velmi úspěšný a používal se jak na mnoha univerzitách, tak i ve firmách. Tento počítač byl použit i pro tvorbu animací a rendering scén v několika filmech, které ve své době způsobily na poli počítačové grafiky malou revoluci.

Obsah

1. Cray X-MP: nejrychlejší superpočítač na světě v letech 1983 až 1985

2. Postupný nárůst výpočetního výkonu počítačů Cray X-MP

3. Základní charakteristiky jednotlivých modelů počítače Cray X-MP

4. Cray X-MP EA: jeden z obchodně nejúspěšnějších Cra­yů

5. Použití počítačů Cray pro rendering (nejenom) filmových scén

6. The Adventures of André and Wally B. – revoluce na poli počítačové grafiky

7. The Last Starfighter

8. Malé porovnání superpočítače Cray X-MP s procesorem Intel 860

9. Odkazy na Internetu

1. Cray X-MP: nejrychlejší superpočítač na světě v letech 1983 až 1985

V předchozích dvou částech seriálu o historii vývoje výpočetní techniky jsme se zabývali popisem architektury superpočítače Cray-2 zkonstruovaného samotným Seymourem Crayem. Víme již, že Cray 2 se v letech 1985 až 1990 pyšnil prestižním titulem nejrychlejšího počítače na světě. Ovšem ještě před vznikem velmi výkonného a novátorsky pojatého, ale z obchodního hlediska ne tak úspěšného superpočítače Cray 2 byl ve firmě Cray Research Inc. navržen a posléze zkonstruován jiný typ superpočítače, jenž dostal jméno Cray X-MP. Po Crayi-1 a před Crayem-2 se zcela samozřejmě :-) v letech 1983 až 1985 taktéž jednalo o nejrychlejší počítač světa (nic jiného ostatně zákazníci této firmy neočekávali) a jediným důvodem, proč se o Crayi X-MP zmiňujeme až páté části článku o superpočítačích, je to, že za jeho vývojem nestál přímo Seymour Cray (ten v té době již pracoval na architektuře Cray-2), ale dnes poněkud neprávem opomíjený Steve Chen.

Obrázek 1: Superpočítač Cray X-MP. Z této fotografie je patrné, že původní půdorys počítačů Cray (známé céčko) byl poněkud změněn – k původnímu „céčku“ (tříčtvrteční kruhové výseči) byla přidána poslední čtvrtina připojená ke zbytku počítače pomocí dvojice specializovaných modulů; naproti tomu podpůrné moduly byly umístěny v přidané „věži“.

Superpočítač Cray X-MP, který byl z architektonického hlediska do značné míry podobný původnímu Crayi-1, byl velmi často používaný v mnoha institucích – jak na univerzitách (simulace, vývoj nástrojů CAM atd.), tak i v mnoha soukromých firmách, které oceňovaly poměrně výhodný poměr cena/výkon (i když z dnešního pohledu se může 15 milionů dolarů za počítač bez disků a s výkonem 400 MFLOPS zdát značně přehnaná cena). Ovšem pravděpodobně nejznámější je použití tohoto superpočítače pro rendering (vykreslování) scén do filmů – ostatně právě filmy (resp. jejich části) renderované počítačem Cray X-MP ukázaly mnoho možností, které počítačová grafika může filmovému průmyslu nabídnout a i dnešní studia, jakým je například známý Pixar, dodnes používají mnoho postupů a algoritmů (například motion blur nebo pozadí tvořené skutečnou 3D scénou a nikoli pouze statickým 2D obrázkem), které byly poprvé v praxi vyzkoušeny právě na stroji Cray X-MP.

Obrázek 2: Další pohled na superpočítač Cray X-MP.

2. Postupný nárůst výpočetního výkonu počítačů Cray X-MP

Jak jsme se již krátce zmínili v předchozí kapitole, byla architektura superpočítače Cray X-MP odvozena od původního počítače Cray-1 (což mj. zajistilo i binární kompatibilitu již vytvořených aplikací), ovšem díky vývoji polovodičových součástek bylo možné v konstrukci tohoto počítače udělat několik závažných změn. Zatímco Cray-1 používal pro časování skalárních i vektorových výpočetních jednotek hodinový cyklus s periodou 12,5 nanosekund, bylo možné u Craye X-MP tuto periodu zkrátit na 9,5 nanosekund, což odpovídá hodinové frekvenci 105 MHz. Špičkový výpočetní výkon jedné procesorové jednotky byl roven 200 MFLOPS (pro porovnání: první matematický koprocesor pro osobní počítače kompatibilní s PC, tj. čip Intel 8087 taktovaný na 8 MHz, měl výpočetní rychlost cca 30000–50000 FLOPS, tj. pouze 0,03 až 0,05 MFLOPS). Původní modely počítače Cray X-MP z roku 1983 mohly obsahovat buď jednu vektorovou jednotku (200 MFLOPS) nebo jednotky dvě (400 MFLOPS), ovšem o několik měsíců později se objevily i modely se čtyřmi jednotkami, takže celý počítač nabízel výpočetní výkon cca 800 MFLOPS.

Obrázek 3: Na pozadí této dobové fotografie superpočítače Cray X-MP můžeme vidět jednotky s diskovými poli.

U dalších modelů taktéž došlo k poměrně nepatrnému zvýšení hodinové frekvence ze zmíněných 105 MHz na 117 MHz, což zapříčinilo další zvýšení výpočetního výkonu na cca 230 MFLOPS/vek­torovou jednotku, tj. 920 MFLOPS v případě, že byly nainstalovány všechny čtyři vektorové jednotky (nárůst výpočetního výkonu není zcela lineárně závislý na hodinové frekvenci kvůli technologickým změnám, které bylo nutné provést v dalších modulech počítače). Vzhledem k tomu, že adresové pracovní registry Ai i záložní adresové registry Bi popsané v předchozí části tohoto seriálu, měly šířku 24 bitů, bylo možné adresovat 8 až 16 megaslov operační paměti, přičemž jedno slovo mělo šířku 64 bitů (adresovatelná kapacita tedy v běžných jednotkách odpovídá 128 MB). Kromě jedné až čtyř vektorových výpočetních jednotek (procesorů) byl Cray X-MP vybaven i dvojicí, trojicí či čtveřicí specializovaných I/O procesorů, jež zajišťovaly čtení a ukládání dat na pevné disky, jejichž celkový počet se pohyboval v rozsahu 2 až 32. V ceně počítače, která u základní konfigurace činila 15 milionů dolarů, nejsou ceny disků započteny (viz též poznámka uvedená v předchozí kapitole).

Obrázek 4: Příručka k počítačům Cray-1 a Cray X-MP
(zdroj: materiály firmy Cray Research)

3. Základní charakteristiky jednotlivých modelů počítače Cray X-MP

Superpočítač Cray X-MP byl zákazníkům nabízen v mnoha variantách, které se (samozřejmě kromě ceny) od sebe odlišovaly jak celkovým počtem vektorových výpočetních jednotek (a tím samozřejmě i špičkovým výpočetním výkonem), tak i počtem I/O procesorů, typem a kapacitou operační paměti, kapacitou vyrovnávacích pamětí atd. Jednotlivé instituce, které si chtěly tento superpočítač pořídit, si tedy mohly na základě svých požadavků zvolit vhodnou konfiguraci – pro provádění numerických výpočtů nad malou množinou dat se spíše preferovalo větší množství vektorových jednotek (procesorů) a menší kapacita operační paměti postavené s využitím rychlejší bipolární technologie (ECL), jiné typy výpočtů (například některé simulace ale i dále zmíněný rendering složitých trojrozměrných scén) byly naopak náročnější na rychlý přístup k datům umístěným na pevných discích, protože operační paměť o kapacitě 16 Mslov (maximální adresovatelná kapacita) již svým objemem nedostačovala atd.

Obrázek 5: Detail spodní části superpočítače CRAY-1S, kde můžeme mj. vidět i jeho chladicí systém. Jedná se o jeden z technologických detailů, které byly u počítače Cray X-MP vylepšeny.

V následující tabulce jsou vypsány základní charakteristiky vybraných modelů superpočítače Cray X-MP:

Model X-MP/1 X-MP/2 X-MP/24 X-MP/4 X-MP/2 X-MP/1 X-MP/14se
Počet procesorů 1 2 2 4 2 1 1
Počet I/O procesorů 2, 3, 4 2, 3, 4 2, 3, 4 2, 4 2, 3, 4 2, 3, 4 2
Typ paměti MOS bipolární bipolární bipolární MOS MOS MOS
Kapacita RAM (Mslov) 1, 2, 4 2, 4 2 4, 8, 16 2, 4, 6, 16 4, 8, 16 4
Vyrovnávací paměť (M) 8, 32, 64 8, 32, 64 8, 32, 64 4, 8 4, 8 4, 8 2, 4, 8

Obrázek 6: Ovládací panel procesorových jednotek superpočítače Cray X-MP.

4. Cray X-MP EA: jeden z obchodně nejúspěšnějších Crayů

Ve druhé kapitole jsme si řekli, že procesorové jednotky spojené s řadičem přístupu do operační paměti počítače Cray X-MP obsahovaly osm adresových registrů Ai a 64 záložních adresových registrů Bi, z nichž každý měl šířku 24 bitů, tj. dokázal adresovat více než šestnáct milionů (přesněji řečeno 224) 64bitových slov uložených v operační paměti. Tato hodnota odpovídá 128 MB, pokud bychom kapacitu paměti počítali v jednotkách používaných v současnosti; u superpočítačů Cray se však s pojmem „byte“ příliš často nesetkáme, protože většina operací (ať již se jednalo o celočíselné operace či mnohem častější operace s čísly uloženými v systému plovoucí řádové tečky) byla prováděna se 64bitovými slovy. Ovšem pro některé účely, například pro simulace proudění, ale i pro některé aplikace počítačové grafiky, záhy přestal rozsah operační paměti počítačů Cray X-MP dostačovat.

Obrázek 7: Postupný růst kapacity dynamických pamětí. Všimněte si, že na vertikální ose je logaritmické měřítko.

Současně se taktéž zvyšovala kapacita paměťových čipů (Cray tyto čipy nakupoval především od firem Motorola a Fairchild) a zároveň klesala cena za jeden bit – viz též grafy zobrazené na obrázcích 7 a 8, na nichž je ukázán vliv postupně se zlepšující technologie použité při výrobě dynamických pamětí DRAM. V první generaci počítačů Cray sice byly používány jiné typy pamětí (SRAM vytvořené bipolárními čipy a později čipy vytvořené na bázi technologie MOS), ovšem i u těchto typů pamětí se vývoj nezastavil. Výsledkem všech těchto vlivů byl vznik počítačů Cray X-MP EA, kde písmena EA znamenají „Extended memory Architecture“. Tyto počítače se od původních superpočítačů Cray X-MP odlišují především v tom, že adresové registry Ai i záložní adresové registry Bi mají šířku plných 32 bitů a umožňují tedy adresovat paměť o rozsahu 2 Gslov tj. 16 GB (teoreticky by sice bylo možné adresovat 4 Gslov, ale použitá znaménková aritmetika to neumožňovala).

Obrázek 8: Kolorizované mikroskopické snímky testovacích vzorků pamětí firmy Intel. Z hodnot uvedených pod jednotlivými snímky je patrná zejména postupně se zmenšující plocha jedné paměťové buňky, zvyšující se rychlost čtení/zápisu a v neposlední řadě taktéž rostoucí složitost celého čipu – u poslední paměti je matice rozdělena do čtyř bloků, přičemž každý blok obsahuje vlastní logiku pro výběr řádků a sloupců.

Tyto počítače byly v praxi ještě úspěšnější než původní řada Cray X-MP (ostatně díky prodeji těchto strojů mohl pokračovat paralelní vývoj minule a předminule popsaných superpočítačů Cray-2) a mnoho významných aplikací bylo provozováno právě na některém modelu počítače Cray X-MP EA.

Obrázek 9: Počítač Cray řady EA (Extended memory Architecture).

5. Použití počítačů Cray X-MP pro rendering (nejenom) filmových scén

Již v perexu tohoto článku jsme se zmínili o tom, že superpočítače Cray, především pak řada Cray X-MP a Cray X-MP EA, se poměrně často používaly i v oblasti počítačové grafiky. Je to ostatně logické, protože na přelomu sedmdesátých a osmdesátých let minulého století ještě neexistovala velká nabídka plnohodnotných grafických akcelerátorů (vznikaly sice návrhy typu Pixel Planes, ale ty měly poměrně omezený prostor použití), takže se renderovací algoritmy musely realizovat programově. Typickým příkladem renderovacího (vykreslovacího) algoritmu je rasterizace jednotlivých polygonů s využitím programově ovládané paměti hloubky (Z-bufferu) a především raycasting a z něj odvozený raytracing, který sice dokáže vytvářet fotorealistické scény, ale je velmi náročný na výpočetní výkon počítače, zejména pak na rychlost provádění operací s čísly reprezentovanými v systému plovoucí řádové tečky (floating point). Počítače Cray byly pro implementaci rasterizace polygonů, raycastingu i raytracingu velmi vhodné, zejména kvůli možnosti využití jejich vektorových jednotek (procesorů).

Obrázek 10: Carla Islands – tyto dva obrázky byly vyrendrovány na superpočítačích Cray, přičemž pro tvorbu ostrovů i mraků bylo použito procedurálního modelování (nikoli tedy „ručního“ modelování s využitím nějakého 3D editoru). Jako renderovací algoritmus byl zvolen raytracing.

Vzhledem k tomu, že superpočítače Cray neobsahovaly žádný specializovaný grafický subsystém (dokonce ani framebuffer), byly vykreslované obrázky ukládány do operační paměti a z ní následně přenášeny buď na pevné disky, osvitovou jednotku nebo na grafický terminál, který se mohl k počítači připojit například přes síťové rozhraní. Velkou předností programového vykreslování (renderingu) oproti vykreslování s využitím specializovaného grafického akcelerátoru byla jeho flexibilita. Tvůrci renderovacích algoritmů nebyli prakticky vůbec omezování technickými prostředky počítače (samozřejmě kromě strojového času, který byl kvůli relativně vysoké ceně počítače, taktéž drahý), což například umožnilo vytváření a zkoušení nových algoritmů. Jednalo se o použití procedurálního modelování (včetně použití fraktální geometrie), již zmíněný motion blur neboli rozmazání objektů pohybem, později též o radiozitní (vyzařovací) metodu či rendering obrázků v takové kvalitě, která byla dostatečná i pro zobrazení na velkých filmových plátnech – viz též v dalších kapitolách popsaný film The Last Starfighter, v němž měly jednotlivé snímky rozlišení 5000×3000 pixelů s 36bitovou hloubkou (což odpovídá dvanácti bitům pro každou barvovou složku).

pc76

Obrázek 11: Známý obrázek vzniklý raytracingem obsahující 256 barev, který byl použit pro demonstraci grafických schopností počítače Macintosh II. Paradoxní přitom je, že tento obrázek vznikl renderingem na superpočítači Cray, nikoli na samotném Macintoshi.

6. The Adventures of André and Wally B. – revoluce na poli počítačové grafiky

Jedním z průkopnických počinů na poli počítačové grafiky úspěšně použité ve filmovém průmyslu byl krátký (několikaminutový) film nazvaný The Adventures of André and Wally B. z roku 1984. Zdaleka se sice nejedná o první film, v němž by byly využity počítače, ale právě v tomto snímku byly poprvé široké veřejnosti představeny výsledky několika nových grafických algoritmů (resp. nově použitých algoritmů), zejména takzvaného motion bluru (rozmazání objektů či celé scény při jejich/jejím rychlém pohybu; mimochodem se jedná o výpočetně poměrně náročný algoritmus) a taktéž vykreslení plnohodnotného trojrozměrného pozadí namísto statických 2D obrázků. Celý film se navíc odehrává v lese a na louce, což je prostředí tvarově mnohem složitější než například abstraktní místnosti tvořené několika polygony, které byly použité například ve známém filmu Tron či Trávníkář. Při modelování scén byly použity i částicové systémy, které byly mj. využity Reevesem ve Hvězdných válkách pro tvorbu animace výbuchů.

Obrázek 12: Jeden snímek z krátkého filmu The Adventures of André and Wally B.

Ve filmu The Adventures of André and Wally B. byl taktéž využit (tehdy) nový způsob manipulace s geometrickými tělesy, které mohly být různým způsobem deformovány (natahovány a stlačovány z různých směrů), což byl velký rozdíl oproti většině předchozích renderovaných filmů, v nichž se objekty skládaly z neměnných tvarů spojených pomocí kloubů. Pro rendering tohoto výpočetně náročného filmu byl použit superpočítač Cray X-MP/48 doplněný deseti (super)minipočítači VAX-11/750, jejichž popisem se budeme zabývat v některé z dalších částí tohoto seriálu. Nedokončená verze filmu The Adventures of André and Wally B. byla v roce 1984 prezentována na slavné konferenci SIGGRAPH (některé scény byly v této verzi pouze načrtnuty tužkou, ale i tak snímek vzbudil velký ohlas), a o měsíc později byla již dokončená verze filmu ukázána na mezinárodním filmovém festivalu (IFF). Dnes lze tento průkopnický snímek najít například na „historických“ DVD vydávaných firmou Pixar.

Obrázek 13: Další snímek z krátkého filmu Adventures of André and Wally B.
(zdroj: Wikipedia)

7. The Last Starfighter

Dalším filmem, o němž se musíme v souvislosti s počítačovou grafikou a superpočítači Cray X-MP alespoň krátce zmínit, je film The Last Starfighter z roku 1984, podle kterého byly mj. vytvořeny i hry pro některé typy osmibitových domácích počítačů. Film The Last Starfighter měl celkovou délku 101 minut, z toho celých 27 minut bylo vyrendrováno na počítači, což se v té době považovalo za enormní množství. Nicméně se uvádí, že díky použití počítačem vykreslovaných prostorových scén se ušetřila cca polovina natáčecí doby a speciální efekty stály pouze třetinu ceny, kterou by bylo nutné zaplatit při použití „klasických“ modelů (celkové náklady na film nepřesáhly 14 milionů dolarů, jen v USA byly naproti tomu zisky rovny téměř 29 milionům dolarů). Nicméně tyto detaily budou pravděpodobně zajímat spíše filmové historiky, my se zaměříme na technologické zajímavosti související se superpočítači Cray a počítačovou grafikou.

Obrázek 14: Modely renderované pro scény ve filmu The Last Starfighter.

Rendering všech cca tří set „počítačových“ scén prováděla firma Digital Productions na superpočítači Cray X-MP s nainstalovaným renderovacím programem vlastní výroby. Každý vykreslený snímek měl předlohu v počítačovém modelu, který průměrně obsahoval 250 tisíc polygonů pokrytých texturou (ve filmu však bylo použito i několik reálných modelů). Rozlišení jednotlivých snímků bylo rovno 5000×3000 pixelům (15 milionů pixelů) a pro reprezentaci každého pixelu byla použita 36bitová barvová hloubka, tj. každá barvová složka byla uložena ve dvanácti bitech. Trojrozměrné modely byly vytvořeny především Robem Cobbem, který se mj. podílel i na filmech Star Wars či Vetřelec. Jak můžeme vidět z přiložených snímků, jsou jednotlivé modely velmi propracované a při návrhu scén i renderingu bylo dbáno na to, aby bylo co nejméně patrné, že se jedná o scénu vykreslenou počítačem, což je velký rozdíl například oproti filmu Tron, kde byla snaha jeho tvůrců přesně opačná, protože ti se snažili o vytvoření iluze světa „uvnitř počítače“.

Obrázek 15: Další snímek z filmu The Last Starfighter. Trojrozměrný model této kosmické lodi je sestrojen z několika tisíců polygonů.

8. Malé porovnání superpočítače Cray X-MP s procesorem Intel 860

Na závěr tohoto článku se pokusíme o srovnání některých důležitých vlastností superpočítačů Cray X-MP z roku 1983 s procesorem Intel 860, který firma Intel navrhla a následně na konci roku 1989 představila pod poněkud nadneseným (politicky korektně řekněme ne zcela přesným) sloganem „Cray on a Chip“. Jednalo se o nový typ mikroprocesoru s architekturou RISC a instrukční sadou typu VLIW (v jednom instrukčním slově je zakódováno větší množství operací, každá z nich určená pro jinou jednotku na čipu), který byl navíc vybavený jednotkou specializovanou pro provádění grafických operací použitelných například při vyplňování trojúhelníků při jejich rasterizaci, vykreslování poloprůhledných ploch atd. Jedním z důvodů, proč tento zajímavý procesor vznikl, byla snaha firmy Intel o vstup na pole hi-endových systémů počítačové grafiky, tj. oblasti, v níž se v minulosti mj. používaly i superpočítače Cray X-MP (to se částečně podařilo, protože Intel 860 byl použit například v Reality Engine, který jsme si již popsali v paralelně běžícím seriálu o architekturách počítačů).

pc93

Obrázek 16: Mikroprocesor Intel i860.

To, že firma Intel tyto procesory představila jako „Cray on a Chip“ není zcela pravdivé, což je ostatně patrné i při pohledu na následující tabulku, v níž jsou porovnány špičkové výpočetní rychlosti s čísly reprezentovanými v systému plovoucí řádové tečky. U počítačů Cray se využívají především 64bitová slova odpovídající zhruba formátu double precision normy IEEE 754, procesory Intel 860 naproti tomu dokážou „nativně“ pracovat i s hodnotami v jednoduché přesnosti:

Mikroprocesor Hodinová frekvence Výpočetní výkon
i860 40 MHz 80 MFLOPS (single precision)
i860 40 MHz 60 MFLOPS (double precision)
i860XR 40 MHz 80 MFLOPS (double precision)
i860XR 40 MHz 42 SPECmark
     
Superpočítač Hodinová frekvence Výpočetní výkon
Cray X-MP (1 CPU) 105 MHz 200 MFLOPS (double precision)
Cray X-MP (2 CPU) 105 MHz 400 MFLOPS (double precision)
Cray X-MP (4 CPU) 105 MHz 800 MFLOPS (double precision)
Cray X-MP (1 CPU) 117 MHz 230 MFLOPS (double precision)
Cray X-MP (2 CPU) 117 MHz 460 MFLOPS (double precision)
Cray X-MP (4 CPU) 117 MHz 920 MFLOPS (double precision)

Obrázek 17: Čelní pohled na plošné spoje počítače Cray X-MP, na nichž byly umístěny jak paměťové moduly, tak i čipy, z nichž byly sestaveny procesory i řadiče počítače.

Mikroprocesor i860 obsahoval 32 třicetidvou­bitových registrů určených pro provádění běžných celočíselných aritmetických i logických operací a dále pak 16 registrů o šířce 64 bitů (rozdělitelných na 32 třicetidvou­bitových registrů) použitelných pro operace prováděné s hodnotami uloženými ve formátu plovoucí řádové tečky (čárky). Kromě klasické aritmeticko-logické jednotky (ALU) tento procesor obsahoval i dvě specializované jednotky, které dohromady můžeme označit jako zjednodušený, ale o to rychlejší matematický koprocesor. První z těchto jednotek byl FP adder, s jehož pomocí bylo možné provádět součty, rozdíly, porovnání a konverze čísel uložených v systému plovoucí řádové tečky. Druhá jednotka nazvaná FP multiplier sloužila k součinu dvou čísel a taktéž k výpočtu převrácené hodnoty. Všechny tři základní jednotky, tj. ALU, FP adder a FP multiplier pracovaly paralelně, přičemž paralelismus byl podporován přímo v instrukční sadě (viz výše uvedená zmínka o instrukční sadě typu VLIW – Very Long Instruction Word).

Naproti tomu byly superpočítače Cray vybaveny již několikrát zmíněnou sadou osmi 64bitových skalárních registrů Si doplněných o 64 pomocných registrů Ti (mezipaměť) a především osmi vektorovými registry Vi, z nichž každý obsahoval 64 prvků, každý o šířce 64 bitů. Instrukční sada obsahovala jak instrukce pro provádění aritmetických a logických operací se skalárními hodnotami, tak i instrukce pro provádění operací s celými vektory (SIMD instrukce). Většina instrukcí měla pevnou bitovou šířku a obsahovala pouze jediný instrukční kód, na rozdíl od výše zmíněného formátu VLIW, kde je v instrukčním slově umístěno několik instrukčních kódů. Pro plné využití možností VLIW procesorů i860 i vektorových instrukcí a registrů superpočítače Cray bylo nezbytně nutné používat překladače, které dokázaly tuto technologii využít. Pro i860 byl vývoj prováděn zejména v assembleru a programovacím jazyku C, zatímco u počítačů Cray se, podobně jako na některých mainframech, uchytil především jazyk Fortran s podporou „vektorizace programových smyček“ následovaný céčkem.

Obrázek 18: Superpočítače Cray Y-MP, který si popíšeme v následující části tohoto seriálu.
(zdroj: materiály firmy Cray Research)

Vraťme se však k podpoře grafických operací mikroprocesorem Intel i860. Tyto operace byly implementovány přímo v jeho instrukční sadě – kromě běžných instrukcí určených pro provádění operací s operandy reprezentovanými v systému pevné i plovoucí řádové čárky (fixed point, floating point) rozpoznával mikroprocesor deset instrukcí provádějících grafické operace. Jednalo se například o operace umožňující práci s pixely (čtení, zápis, konverze z různých formátů, míchání barev) či práci se Z-bufferem (testování hodnoty uložené v registru oproti hodnotě uložené v Z-bufferu). Nejednalo se tedy o stejné operace, jaké můžeme najít na moderních grafických akcelerátorech, ale o určitou podporu pro vykreslovací (renderovací) algoritmy, které mohly s výhodou využít možnosti souběžného zpracování několika operací mikroprocesorem (tento typ paralelismu byl přímo řízený překladačem, na rozdíl od dnešních superskalárních procesorů vybavených obvody, které instrukce samy rozdělují mezi jednotlivé jednotky).

Aby byla rychlost provádění grafických operací dostatečná, prováděly se operace vždy nad větším množstvím dat, například nad čtveřicí či osmicí pixelů, jejichž hodnoty byly uložené v registrech původně určených pro operace s plovoucí řádovou tečkou (FP). Tato technologie byla později po několika úpravách představena i na platformě x86 pod jménem MMX. Výkonnost grafických operací byla na dobu vzniku mikroprocesoru poměrně uspokojivá: mikroprocesor například dokázal zkonvertovat a následně vystínovat Gouraudovým stínováním až 50 000 trojúhelníků za sekundu, přičemž se počítá s tím, že plocha každého trojúhelníku je průměrně 100 pixelů. Jediný problém, který částečně zapříčinil neúspěch celého mikroprocesoru i860, spočíval v tom, že optimalizaci kódu musel provádět buď přímo programátor v assembleru (nepoužitelné na větší projekty) nebo překladač; ovšem kvalita tehdejších překladačů nebyla tak dobrá do té míry, aby se využila celá výpočetní síla tohoto mikroprocesoru.

ict ve školství 24

pc93

Obrázek 19: Při výpočtu mlhy je nutné provést pro každý vykreslovaný fragment (fragment je, zjednodušeně řečeno, entita nesoucí informaci o jednom pixelu doplněnou o další atributy, například hloubku/vzdálenost fragmentu od pozorovatele) smíchání původní barvy fragmentu s barvou mlhy, přičemž poměr mezi původní barvou a barvou mlhy je určen na základě vzdálenosti fragmentu od pozorovatele a hustoty mlhy. Tuto operaci lze na mikroprocesoru Intel i860 implementovat poměrně snadno, především při použití jeho „grafických“ operací.

Superpočítače Cray žádnou podporu pro grafické operace, jak již víme z předchozího textu, neobsahovaly. Na druhou stranu však u mnoha grafických algoritmů bylo možné využít vektorové registry o operace s nimi – mohlo se to týkat například i již zmíněné rasterizace polygonů nebo raytracingu (a samozřejmě maticových operací používaných při transformaci geometrických objektů). Díky mnohem vyšší hrubé výpočetní síle superpočítačů Cray tak tyto algoritmy byly prováděny rychleji, než na mikroprocesorech i860, navíc se při výpočtech prakticky vždy využívaly 64bitové hodnoty (double precision), tj. nemusel se používat mechanismus popsaný v předchozím odstavci – použití původně FP registrů pro provádění operací s jednotlivými pixely. Předností mikroprocesorů je samozřejmě jejich nízká cena, která je však mj. i ovlivněna tím, že mezi vznikem superpočítače Cray X-MP a mikroprocesoru i860 uběhla doba delší než šest let, což je z hlediska vývoje hardware velmi dlouhé období.

9. Odkazy na Internetu

  1. Cray History
    http://www.cra­y.com/About/His­tory.aspx?404;http:­//www.cray.com:80/a­bout_cray/his­tory.html
  2. Cray Historical Timeline
    http://www.cra­y.com/Assets/PDF/a­bout/CrayTime­line.pdf
  3. Company: Cray Research, Inc. (Computer History)
    http://www.com­puterhistory.or­g/brochures/com­panies.php?al­pha=a-c&company=com-42b9d5d68b216
  4. Cray Wiki
    http://www.cra­ywiki.com/index­.php?title=Ma­in_Page
  5. Cray (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray
  6. Cray-1 (Cray Wiki)
    http://www.cra­ywiki.com/index­.php?title=Cra­y_1S
  7. Cray-1 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray-1
  8. Cray X-MP (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cra­y_X-MP
  9. Cray-2 (Wikipedia)
    http://en.wiki­pedia.org/wiki/Cray-2
  10. What Limits Forecast Accuracy?
    http://weather­.mailasail.com/Fran­ks-Weather/Forecast-Accuracy-Limitations
  11. Remembering the Cray-1
    http://www.the­register.co.uk/2008/01/­05/tob_cray1/
  12. Cray Supercomputer FAQ and other documents
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/index­.html
  13. Cray Research and Cray computers FAQ Part 1
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp1­.html#TOC
  14. Cray Research and Cray computers FAQ Part 2
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp2­.html#TOC1
  15. Cray Research and Cray computers FAQ Part 3
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp3­.html#TOC1
  16. Cray Research and Cray computers FAQ Part 4
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp4­.html#TOC1
  17. Cray Research and Cray computers FAQ Part 5
    http://www.spi­kynorman.dsl.pi­pex.com/CrayW­WWStuff/Cfaqp5­.html#TOC1
  18. Seymour Cray
    http://www.cra­ywiki.com/index­.php?title=Se­ymour_Cray
  19. Seymour Cray Biography
    http://www.cra­y.com/Assets/PDF/a­bout/SeymourCra­y.pdf
  20. Fluorinert
    http://soluti­ons.3m.com/wps/por­tal/3M/en_US/e­lectronics/ho­me/productsan­dservices/pro­ducts/chemical­s/ElectronicLi­quids/?WT.mc_id=ke­ymatch
  21. Fluorinert
    http://en.wiki­pedia.org/wiki/Flu­orinert
  22. Historic Computer Images
    http://ftp.ar­l.army.mil/ftp/his­toric-computers/
  23. Cray-2 logic module
    http://bobody­ne.com/web-docs/robots/cray2/
  24. The making of a CRAY-3
    http://www.cis­l.ucar.edu/doc­s/SCD_Newslet­ter/News_summer93/04e­.cray3.html
  25. Computer Speed Claims 1980 to 1996
    http://homepa­ge.virgin.net/ro­y.longbottom/mip­s.htm
  26. Speed of Intel 8087 co-processor in FLOPS ($100)
    http://answer­s.google.com/an­swers/threadvi­ew/id/542435.html
  27. Million instructions per second
    http://en.wiki­pedia.org/wiki/Mflops
  28. Million instructions per second
    http://en.wiki­pedia.org/wiki/Mi­llion_instruc­tions_per_secon­d#Million_instruc­tions_per_second
  29. Rosetta Code – Category:Fortran
    http://rosetta­code.org/wiki/For­tran
  30. IBM 36-bit computers
    http://www.36bit­.org/ibm/
  31. Symbolics 36-bit computers
    http://www.36bit­.org/symbolic­s/
  32. IBM System 360/370 Compiler and Historical Documentation
    http://www.edel­web.fr/Simula/
  33. Who Was Who in IBM's Programming Research? Early FORTRAN Days
    http://www.tra­iling-edge.com/~bob­bemer/PRORES.HTM
  34. Emitter-coupled logic
    http://en.wiki­pedia.org/wiki/E­mitter-coupled_logic
  35. ECL – Emitter Coupled Logic
    http://ppd.fnal­.gov/elec/ecl/e­cl.html
  36. Cray's Mark Remains Speed With Simplicity
    http://www.mbbnet­.umn.edu/hoff/hof­f_sc.html
  37. Control Data Corporation (CDC) 6600: 1966–1977
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/6600­.jsp
  38. Control Data Corporation (CDC) 7600: 1971–1983
    http://www.cis­l.ucar.edu/com­puters/gallery/cdc/7600­.jsp

Autor článku

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