Obsah
1. Architektura Onyx2 – Infinite Reality
2. Popis architektury Onyx2
3. Zobrazovací řetězec architektury Onyx2
4. Přednosti architektury Onyx2
5. Navazující technologie
6. Obsah dalšího pokračování tohoto seriálu
1. Architektura Onyx2 – Infinite Reality
Výkonné grafické pracovní stanice firmy SGI postavené na systému Infinite Reality nebo jejím pokračovateli Infinite Reality 2 se vyznačují zejména masivním využitím paralelismu – ostatně mnoho algoritmů v počítačové grafice je možné paralelizovat velmi dobře, až na zvyšující se paměťové nároky (vícenásobné kopie vstupních dat, několik paralelních framebufferů atd.). Systémy postavené na IR mohou obsahovat až 128 procesorů oblíbené produktové řady MIPS R10000. Zde je patrný rozdíl oproti často srovnávané architektuře Connection Machine, která sice používá mnohem více procesorů, ale tyto procesory jsou – alespoň v porovnání s MIPS R10000 – velmi jednoduché. V případě architektury Onyx2 se jedná o stejné procesory, jaké jsou použity i v serverech Origin 200/2000, tato řada procesorů je však populární i v jiných oblastech, tedy nejenom v hi-end grafice. Jedná o procesory typu RISC s čtyřcestnou superskalární architekturou, které jsou optimalizované na zpracování velkého množství dat. Ke každému procesoru je připojena rychlá externí paměť cache o kapacitě plných čtyř megabytů (interní paměť cache má velikost 32 kB pro kód i pro data, tato poměrně malá kapacita odpovídá roku vzniku tohoto mikroprocesoru – 1995 – a částečně také použité architektuře). Oblíbenost tohoto mikroprocesoru je dána i jeho nízkou cenou, takže při stavbě výpočetních systémů bylo možné dosáhnout velmi slušného poměru cena/výkon.
Bližší popis této velmi zajímavé architektury bude uveden v navazujících kapitolách.
Obrázek 1: Logo firmy SGI a současně ikona hi-end grafiky
2. Popis architektury Onyx2
Každý procesor je spolu se svou pamětí cache a částí operační paměti počítače (o kapacitě od 128 MB do 8 GB) součástí jednoho procesorového uzlu, který obsahuje čtyři procesory. Obousměrný přenos dat mezi procesory v jednom uzlu dosahuje hodnoty 1,6 GBs-1, resp. 800 MBs-1 v každém směru zvlášť. Jednotlivé uzly jsou mezi sebou propojeny pomocí propojovací sítě, jejíž topologie sice vychází z ideální hyperkrychle, ale z důvodu optimalizace datových přenosů jsou mezi uzly vytvořeny i další přídavné datové spoje (již z principu musí jít o diagonály), zejména mezi procesory a zobrazovacími subsystémy. Princip propojování jednotlivých uzlů pomocí sítě založené na hyperkrychli je zobrazen na druhém obrázku (jedná se pouze o připomenutí, bližší informace jsou uvedeny v předchozí části tohoto seriálu).
Obrázek 2: Princip propojování uzlů s topologií hyperkrychle
Současně s procesorovými uzly může být v systému nainstalováno až šestnáct zobrazovacích subsystémů (grafických rastrovacích řetězců), jejichž běh je navzájem nezávislý. Pomocí propojovací sítě může každý procesor ovládat libovolné dva zobrazovací subsystémy a současně může být každý zobrazovací subsystém řízen dvěma procesory – jedná se tedy o konfigurovatelný přímý a k němu paralelní křížový přepínač.
Jeden zobrazovací subsystém může obsahovat až 64 MB paměti pro textury. Další nainstalovanou pamětí je framebuffer, jehož maximální kapacita je 160 MB. Na první pohled zbytečně velká kapacita framebufferu je zvolena z toho důvodu, že podporované rozlišení na výstupu grafického řetězce dosahuje hodnoty maximálně 1920×1200 pixelů (mnohdy označované jako Super-HDTV rozlišení), přičemž každá barevná složka může být reprezentována až dvanácti bity (!), hloubka fragmentu v paměti hloubky (Z-bufferu, depth bufferu) až 23 bity. Přitom lze vytvářet stereosnímky, které mohou být antialiasované, tj. potřeba kapacity framebufferu je ve skutečnosti dvojnásobná nebo – v případě současného použití stereosnímků a antialiasingu – čtyřnásobná až osminásobná oproti jednodušším grafickým akcelerátorům.
Zobrazovací subsystémy mohou být nakonfigurovány různým způsobem. Je například možné, aby na počítači běželo více procesů, z nichž by každý využil jeden zobrazovací subsystém. Každý proces by tak svůj grafický výstup posílal do jednoho okna na obrazovce. Druhou, mnohem zajímavější možností je spojení všech zobrazovacích subsystémů tak, aby se jejich výstup zobrazil do jednoho společného okna. V tomto případě je použit postup zvaný Digital Multiplexing (DPLEX), což je metoda, při které se přepínají jednotlivé snímky. Tímto způsobem lze při tvorbě animací dosáhnout velmi vysokého zobrazovacího výkonu. V následující kapitole bude popsán zobrazovací řetězec architektury Onyx2.
Obrázek 3: Výpočetní server s architekturou Onyx2
3. Zobrazovací řetězec architektury Onyx2
Zobrazovací řetězec je u architektury Onyx2 rozdělen do několika částí, které se do značné míry podobají modulům použitým u dříve popsaných grafických akcelerátorů.
- První část, která zpracovává grafická data přicházející z aplikací, se nazývá Geometry Engine. V této části se provádí výpočet osvětlení, transformace vrcholů zobrazovaných těles a projekce vrcholů do roviny obrazovky. Současně s těmito operacemi se mohou provádět i základní operace pro zpracování rastrových obrazů – aplikace konvolučních filtrů, změna barev pomocí vyhledávací tabulky (LUT – Look Up Table), výpočet histogramu, ekvalizace obrazu atd. Tyto operace, které mohou být aplikovány na vykreslované pixely, textury nebo i na video, jsou v Geometry Engine samozřejmě zpracovávány mnohem rychleji než odpovídající funkce běžící na mikroprocesoru. Každý blok Geometry Engine obsahuje tři výpočetní jádra, která jsou řízena jedním tokem instrukcí – jedná se tedy o řízení typu SIMD (Single Instruction Multiple Data).
- Další částí, která na Geometry Engine přímo navazuje, je část nazývaná Raster Manager. V ní se provádí rasterizace dat, která jsou v předchozím kroku zpracována v modulu Geometry Engine. Kromě rasterizace plošek se provádí i další operace s vytvářenými fragmenty, zejména test fragmentů na hloubku uloženou v paměti hloubky (Z-bufferu, depth bufferu), míchání barev (color blending), výpočet mlhy (fog), mapování textur (texture mapping) a antialiasing. Tato část vykreslovacího řetězce je navržena tak, aby se v co největší míře uplatnil paralelismus, zejména při práci s texturami a aplikaci antialiasingu (každý pixel může být v tomto režimu samplován až osmi subpixely, což je dvakrát více než u běžných grafických akcelerátorů na PC). Vzhledem k rozdělení framebufferu mezi více rasterizačních jednotek je umožněno, aby se jeden polygon vykresloval (tj. rastroval na fragmenty) ve více rasterizačních jednotkách současně, což opět přispívá k vyšší rychlosti vykreslování.
- Poslední částí zobrazovacího řetězce je část nazvaná Display Generator, ve které se původně digitální informace uložené ve framebufferu převádějí na analogový signál, který může být zobrazen na obrazovce monitoru nebo může být poslán pro další zpracování do video-zařízení. Vzhledem k tomu, že Display Generator obsahuje dvě datové cesty, je možné využít současně dva výstupy: jeden analogový výstup s velkým rozlišením a druhý výstup v televizním formátu NTSC (National Television System Commitee a.k.a. Never The Same Colors :-) nebo PAL (Phase Alternating Line). Oba výstupy současně je možné také použít pro stereozobrazení výsledné scény na dvou monitorech současně. Výstup na televizi se může v dnešní době zdát primitivní, ale technologie zobrazování na televizích a monitorech je tak odlišná, že se pro profesionální výstupy (na video) musí tato problematika řešit hardwarově – většinou se provádí kontrolní výstup na monitor (případně na osvit filmu) a finální výstup na video. Právě podpora současného výstupu na monitor i televizi (resp. video) může rendering urychlit až o 100 %.
4. Přednosti architektury Onyx2
Architektura Onyx2 je zajímavá zejména tím, že v každé části výpočetního i vykreslovacího řetězce využívá v maximální možné míře paralelismus, čímž se z této architektury stává jeden z nejvýkonnějších systémů pro zpracovávání prostorových scén v hraniční reprezentaci. Paralelismus je využit jak při použití architektury NUMA a spojení procesorů do hyperkrychle, tak i aplikací systému vzájemného propojení vykreslovacího řetězce, kdy je možné použít více paralelních datových cest (v dnešní době se používá spíše paralelismu na vyšší úrovni – současné zpracování renderingu na více strojích, to je však možné pouze tehdy, když je zajištěna distribuce dat, tj. toto řešení není vhodné pro interaktivní aplikace).
5. Navazující technologie
Na technologii Onyx2 navázaly další výpočetní systémy. Z těch známějších se jedná o Onyx4, který je podle propagačních materiálů až čtyřicetkrát rychlejší než předchozí vývojová řada; dále pak Onyx3000 a Onyx350.Nepředpokládám, že by podobná počitadélka měl někdo ze čtenářů k dispozici (na FITu jsme skončili u pracovní stanice Octane, proto se alespoň pokochejte obrázky:
Obrázek 4: Výpočetní server s architekturou Onyx4
Obrázek 5: Výpočetní server s architekturou Onyx3000
Obrázek 6: Výpočetní server s architekturou Onyx350
6. Obsah dalšího pokračování tohoto seriálu
Dnes jsme se podívali do oblasti hi-end počítačové grafiky. V dalším pokračování tohoto seriálu si ukážeme, jakým způsobem je možné implementovat vlastní jednoduchou grafickou kartu pomocí běžně dostupných integrovaných obvodů. Ukazuje se, že tato na první pohled komplikovaná problematika není při vhodném návrhu zase příliš složitá.