Hlavní navigace

Architektura počítačů Onyx 2 Infinite Reality

11. 2. 2010
Doba čtení: 14 minut

Sdílet

V dnešní části seriálu o architekturách počítačů si popíšeme další zajímavé technologie navržené a realizované firmou SGI (Silicon Graphics Inc.). Jedná se především o architekturu Onyx 2 Infinite Reality, která je optimalizovaná na vykreslování prostorové grafiky.

Obsah

1. Počítačová architektura Onyx 2 – Infinite Reality

2. Technické parametry architektury Onyx 2

3. Grafický subsystém architektury Onyx 2

4. Technologie OpenGL Vizserver

5. Popis zobrazovacího řetězce architektury Onyx 2

6. Přednosti a zápory architektury Onyx 2

7. Obsah dalšího pokračování seriálu

8. Odkazy na Internetu

1. Počítačová architektura Onyx 2 – Infinite Reality

V předchozí části seriálu a architekturách počítačů jsme si, samozřejmě kromě dalších informací řekli, jaké přednosti má architektura NUMA (Non-Uniform Memory Access) popř. cc-NUMA (Cache-Coherent NUMA) oproti architektuře SMP (Symmetric Multiprocessing) v případě, že má v počítači současně pracovat větší množství procesorů popř. procesorových jader. V praxi se ukazuje, že při počtu procesorů přesahujících určitou mezní hodnotu (jedná se o cca čtyři procesory nebo procesorová jádra) se u architektury SMP stává úzkým hrdlem celého počítače operační paměť připojená na společnou sběrnici, protože při přístupu k této paměti dochází (i přes použití lokálních vyrovnávacích pamětí a dalších triků) ke kolizím, při nichž na sebe procesory musí navzájem čekat. Tuto závislost paralelně běžících procesů na sdíleném prostředku (nebo na sériově prováděné části procesu) popisuje takzvaný Amdahlův zákon, z něhož vyplývá, že i poměrně malá sekvenčně prováděná část programu může zcela znehodnotit celý (masivně) paralelní systém, jehož teoretická výpočetní síla tak může zůstat z velké části nevyužita.

pc9901

Obrázek 1: Grafické vyjádření Amdahlova zákona. Z tohoto grafu je patrné, že s rostoucím počtem procesorů (popř. proceso­rových jader) neroste výpočetní výkon celého počítače lineárně, protože určitou část úlohy není možné provádět paralelně (například se jedná o vstup či výstup dat, přístup ke sdílenému prostředku atd.). Při použití architektury SMP však může snaha o souběžný přístup k operační paměti způsobit průběh naznačený červenou křivkou, což je samozřejmě nežádoucí stav, který se výrobci počítačů snaží co nejvíce omezit (popř. posunout prakticky použitelné množství procesorů na co nejvyšší hodnotu).

V předchozí části tohoto seriálu jsme se taktéž seznámili se základními vlastnostmi procesorů R10000, které jsou postaveny na oblíbené a často používané technologii MIPS. Tyto procesory jsou mj. využity i v počítačích Onyx 2 vybavených systémem Infinite Reality a později též Infinite Reality 2, jejichž technické parametry si popíšeme v následujících kapitolách. Uvidíme, že základní schéma počítačů Onyx 2 se v mnoha ohledech podobá schématu, s nímž jsme se seznámili již při popisu architektury serverů Origin – viz též druhý obrázek zobrazený pod tímto odstavcem, na němž je vyobrazeno schéma jednoho výpočetního uzlu obsahujícího dva procesory typu R10000, z nichž každý obsahuje svoji část vyrovnávací paměti rozdělené na vyrovnávací paměť datovou a paměť instrukční. Takto zkonstruované procesorové uzly a k nim příslušející propojovací síť byly díky svým mnoha přednostem používány firmou SGI po velmi dlouhou dobu v jejich serverech, superpočítačích i grafických stanicích.

pc9902

Obrázek 2: Struktura jednoho uzlu použitého u serverů Origin 200/2000. Každý uzel obsahuje hub zajišťující komunikaci s okolními uzly (CrayLink) i vybraným zařízením (XIO) a dvojici procesorů typu R10000, z nichž každý má k dispozici instrukční vyrovnávací paměť, datovou vyrovnávací paměť a sdílenou paměť (přesněji .– paměťový modul obsahující část sdílené paměti).

2. Technické parametry architektury Onyx 2

V počítačích Onyx 2 vybavených systémem Infinite Reality je každý mikroprocesor spolu se svou vyrovnávací pamětí a taktéž částí operační paměti počítače (o kapacitě od 128 MB do 8 GB) součástí jednoho procesorového uzlu, který obsahuje, na rozdíl od minule popsané architektury serverů Origin 200 a Origin 2000, nikoli dva, ale čtyři mikroprocesory typu R10000. Obousměrný přenos dat mezi jednotlivými procesory v jednom uzlu je (v kontextu doby vzniku tohoto systému) velmi rychlý – při blokovém přenosu dat dosahuje hodnot až 1,6 GBs-1, resp. 800 MBs-1 v každém směru zvlášť. Současně s procesorovými uzly může být ve výpočetním systému nainstalováno až šestnáct takzvaných zobrazovacích subsystémů (grafických rastrovacích řetězců), jejichž práce není ovlivňována dalšími prvky systému, jedná se tedy o uzly, které pracují do značné míry nezávisle na činnosti ostatních uzlů.

pc9903

Obrázek 3: Počítač Onyx 2 vybavený systémem Infinite Reality.

Jednotlivé uzly, tj. jak uzly procesorové, tak i ty uzly, které tvoří zobrazovací subsystém, jsou mezi sebou propojeny s využitím propojovací sítě, jejíž topologie sice vychází z ideální hyperkrychle, ale z důvodu optimalizace datových přenosů jsou mezi některými dvojicemi uzlů vytvořeny i další přídavné datové spoje (jedná se o diagonální spoje, tj. stěnové úhlopříčky hyperkrychle), 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 čtvrtém obrázku, reálný způsob zapojení uzlů v systému Onyx 2 na obrázku pátém (viz další kapitola), z něhož je patrné, že každý procesor může ovládat dva zobrazovací subsystémy a současně může být každý zobrazovací subsystém řízen dvěma procesory – tato variabilita je umožněna existencí konfigurovatelného přímého spoje a k němu paralelně připojeného křížového přepínače, který bude popsán v navazující kapitole.

pc9904

Obrázek 4: Propojení uzlů obsahujících procesory i uzlů, pomocí nichž je vytvořen zobrazovací systém, strukturou s topologií hyperkrychle.

3. Grafický subsystém architektury Onyx 2

V této kapitole si popíšeme, jakým způsobem je vytvořen grafický subsystém počítačů Onyx 2. Z předchozího textu již víme, že grafický subsystém těchto strojů je sestaven ze samostatně pracujících uzlů, kterých se může v počítači nacházet až šestnáct, v závislosti na požadavcích uživatelů na potřebný výpočetní výkon i počet výstupních grafických zařízení. Každý z těchto uzlů obsahuje framebuffer s maximální kapacitou 160 MB a taktéž texturovací paměť, jejíž kapacita může dosahovat (opět podle požadavků uživatelů, popř. jejich finančních možností :-) až 64 MB. Kapacita paměti alokované pro framebuffer se sice na první pohled může zdát zbytečně velká, ale firma SGI jakožto tehdejší lídr v oboru počítačové grafiky umožňovala, aby každý snímek uložený ve framebufferu mohl mít rozlišení až 1920×1200 pixelů. Jedná se o takzvaný režim Super-HDTV, někdy též nazývaný WUXGA – Widescreen Ultra eXtended Graphics Array, což je jedna z variant grafických režimů Ultra XGA (Ultra eXtended Graphics Array).

pc9905

Obrázek 5: Vzájemné propojení výpočetních uzlů a uzlů tvořících grafický subsystém. Povšimněte si, že díky přítomnosti křížového přepínače je možné, aby jeden procesor ovládal dva grafické subsystémy, popř. aby byl jeden grafický subsystém řízen dvojicí procesorů. Některé použité zkratky (GE, RM…) jsou vysvětleny v páté kapitole.

Barvy pixelů uložených v barvových bufferech (color buffers) jsou již tradičně kódovány v barvovém systému RGB, přičemž každá barvová složka (red, green, blue) může být reprezentována až dvanácti bity, což umožňuje tvorbu obrázků s mnohem větším dynamickým rozsahem než v případě použití dnes stále ještě nejobvyklejší osmibitové hloubky pro každou barvovou složku (moderní framebuffery však již umožňují i práci s čísly reprezentovanými v systému plovoucí řádové čárky, čímž taktéž dochází ke zvýšení dynamického rozsahu). Hloubka fragmentů uložených v paměti hloubky (Z-bufferu, depth bufferu) může být reprezentována hodnotami s šířkou až 32 bitů. Grafický subsystém umožňuje vytváření stereosnímků, které mohou být navíc antialiasované, což znamená, že potřebná kapacita framebufferu při vykreslování 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, které tyto možnosti nenabízí.

pc9906

Obrázek 6: Laboratoř specializovaná na simulace a vizualizace, jejíž nezbytnou součástí jsou stroje Onyx 2 Infinite Reality.

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ů (graficky orientovaných aplikací), přičemž by každý proces využil jeden zobrazovací subsystém. Každý proces by tak svůj grafický výstup posílal do jednoho okna na obrazovce. Druhou, v praxi mnohem zajímavější možností, je spojení všech zobrazovacích subsystémů tak, aby se jejich společný výstup zobrazil do jednoho společného okna. V tomto případě je použit postup nazvaný 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, ovšem za předpokladu, že zobrazovací subsystémy mají k dispozici všechna data potřebná pro současné vykreslení všech snímků. Pokud tomu tak není, například tehdy, když se jedná o interaktivní aplikace (na osobních počítačích například hry, u nichž není dopředu jasné, jak bude hráč reagovat), není možné plně využít celého výpočetního výkonu počítače.

pc9907

Obrázek 7: Počítače firmy SGI se v minulosti velmi často používaly k různým experimentům s prostorovou (3D) počítačovou grafikou. Zde je ukázán výsledek simulace, při jejíž vizualizaci jsou vykreslovány pouze úsečky, nikoli trojúhelníky či další polygony. Pro vykreslení úseček se využíval zobrazovací subsystém počítačů SGI, ovšem přeprogramovaný tak, aby se texturovací jednotka používala pro velmi rychlé výpočty osvětlovacího modelu. Tento snímek byl vytvořen pomocí postupu upraveného tak, aby ho bylo možné použít na grafických kartách nVidia GForce. Původní postup fungoval, jak již bylo řečeno, na grafických stanicích firmy SGI.

4. Technologie OpenGL Vizserver

S počítači Onyx 2 (ale nejenom s nimi) souvisí i technologie nazvaná OpenGL Vizserver, navržená a posléze vytvořená samozřejmě taktéž firmou SGI. S využitím této technologie je možné z framebufferu zpětně přečíst obsahy jednotlivých bufferů (tj. vybraného předního barvového bufferu, zadního barvového bufferu, Z-bufferu atd.) a následně tyto snímky v komprimované podobě poslat na jakýkoli jiný počítač připojený do sítě, kde je snímek následně zobrazen. Toto řešení se poměrně často používalo v různých výzkumných projektech, protože umožňovalo vytvářet náhledy na trojrozměrná data v reálném čase (s rychlostí zobrazování typicky dvacet a více snímků za sekundu) i na v té době běžných osobních počítačích a navíc byl výpočetní výkon serveru Onyx 2 mnohem lépe využit, než kdyby se použilo například řešení založené na VNC či podobné technologii – výpočetní ani grafické uzly se při použití technologie OpenGL Vizserver nepřidělovaly staticky každému uživateli, ale dynamicky, tj. až na základě reálných potřeb aplikací běžících na Onyxu 2. Aplikace, která umožňovala zobrazení 3D scén na straně klienta, byla dostupná pro velké množství operačních systémů, mj. i pro IRIX a Microsoft Windows.

pc9908

Obrázek 8: Vizualizace siločar magnetického pole, při níž byly použity pouze úsečky. Při vykreslování tohoto snímku byl využit stejný algoritmus, jako u snímku číslo 7.

5. Popis zobrazovacího řetězce architektury Onyx 2

V této kapitole si blíže popíšeme strukturu zobrazovacího řetězce použitého u architektury Onyx 2. Vykreslovací řetězec je rozdělen do několika částí, jejichž funkce i struktura předávaných a zpracovávaných dat se podobá funkcím, s nimiž jsme se již seznámili při popisu grafických akcelerátorů Voodoo-1 a Intel i740. Jednotlivé části zobrazovacího řetězce byly naznačeny na pátém obrázku.

  1. První část zobrazovacího řetězce, která zpracovává grafická data přicházející z aplikací, se nazývá Geometry Engine (GE). 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ů, typicky 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 naprogramované a zpracovávané mikroprocesorem. 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).
  2. Další částí zobrazovacího řetězce, která na Geometry Engine přímo navazuje, je část nazývaná Raster Manager (RM). V této části 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 osobních počítačích). Vzhledem k rozdělení framebufferu mezi více rasterizačních jednotek je umožněno, aby se jeden polygon vykresloval (tj. rozrastrovával na fragmenty) ve více rasterizačních jednotkách současně, což opět přispívá k vyšší rychlosti vykreslování.
  3. Poslední částí zobrazovacího řetězce je část nazvaná Display Generator (DG), ve které se původně digitální informace uložené ve framebufferu převádí 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“ známého také pod názvem „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 běžnou televizi (NTSC nebo PAL) se může v dnešní době znát primitivní, ale technologie zobrazování na televizích a monitorech je tak odlišná, že se pro profesionální výstupy (na video) musela tato problematika řešit hardwarově –většinou se prováděl 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%.
pc9909

Obrázek 9: Server s architekturou Onyx 4, která je pokračovatelem dnes popisované architektury Onyx 2. Rychlost renderingu je až 40× vyšší, než u architektury Onyx 2.

6. Přednosti a zápory architektury Onyx 2

Architektura Onyx 2 je z pohledu vývoje výpočetní techniky zajímavá zejména v tom ohledu, že v prakticky 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 ve své době stal jeden z nejvýkonnějších systémů pro zpracovávání prostorových scén popsaných pomocí hraniční reprezentace, tj. s využitím trojúhelníků a dalších plošných polygonů. Paralelismus je využit jak při použití architektury NUMA a spojení procesorů do topologie hyperkrychle, tak i aplikací systému vzájemného propojení vykreslovacího řetězce, v němž je možné použít větší množství paralelních datových cest. V dnešní době se používá spíše paralelismu na vyšší úrovni – současný rendering scén na více strojích. To je však výhodné pouze tehdy, když je zajištěna distribuce dat, tj. toto řešení není použitelné například pro interaktivní aplikace. Na druhou stranu může být renderovací „farma“ vytvořená z velkého množství levných PC pro některé projekty ideální, například pro finální rendering filmů atd.

pc9910

Obrázek 10: Server s architekturou Onyx 3000.

7. Obsah dalšího pokračování seriálu

V následující části seriálu o architekturách počítačů se seznámíme se dvěma zajímavými a v několika ohledech poněkud netradičními architekturami grafických subsystémů. Jedná se o architekturu Reality Engine, v níž je kromě velkého množství signálových procesorů Intel 860XP (v propagačních materiálech poněkud nadneseně označovaných termínem „Cray on a Chip“) využívaných především pro zpracování geometrických informací použito i pole obsahující 16×20=320 takzvaných obrazových strojů, z nichž každému je přiřazeno 512 kB paměti. Díky tomuto rozdělení framebufferu je možné výrazným způsobem urychlit (přesněji řečeno paralelizovat) některé grafické algoritmy. Architektuře Reality Engine je částečně podobná i poněkud starší, ale z teoretického hlediska velmi zajímavá architektura Pixel Planes z roku 1986, kterou si taktéž popíšeme v navazující části tohoto seriálu.

CS24_early

pc9911

Obrázek 11: Server s architekturou Onyx 350.

8. Odkazy na Internetu

  1. Onyx2 Technical Specification
    http://vintagecomputers.info/onyx2/tech_specs.html
  2. Video Technology Magazine – various graphics resolutions
     http://www.videotechnology.com/0904/formats.html
  3. Ultra XGA (Ultra eXtended Graphics Array)
    http://www.pcmag.com/encyclopedia_term/0,2542,t=UXGA&i=53603,00.asp
  4. UXGA (Ultra eXtended Graphics Array)
    http://en.wikipedia.org/wiki/UXGA
  5. WUXGA (Widescreen Ultra eXtended Graphics Array)
     http://en.wikipedia.org/wiki/WUXGA
  6. Video Standards (Graphics resolutions)
    http://en.wikipedia.org/wiki/File:Vector_Video_Standards2.svg
  7. The MIPS R10000 Superscalar Microprocessor (článek dostupný členům ACM)
     http://portal.acm.org/citation.cfm?id=623999
  8. Glide API
    http://en.wikipedia.org/wiki/Glide_API
  9. Scientific Application of OpenGL Vizserver within High Performance Computing
     http://www.ukhec.ac.uk/publications/reports/vizserver_casestudy_dec02.pdf
  10. Amdahl's law
    http://en.wikipedia.org/wiki/Amdahl%27s_law
  11. NUMA: Frequently Asked Questions
    http://lse.sourceforge.net/numa/faq/
  12. NUMA (Numa Support in Linux)
    http://oss.sgi.com/projects/numa/
  13. Symmetric multiprocessing
    http://en.wikipedia.org/wiki/Symmetric_multiprocessing
  14. Non-Uniform Memory Access
    http://en.wikipedia.org/wiki/Non-Uniform_Memory_Access
  15. Northbridge (computing)
    http://en.wikipedia.org/wiki/Northbridge_(computing)
  16. Southbridge (computing)
    http://en.wikipedia.org/wiki/Southbridge_(computing)
  17. Carrier sense multiple access with collision detection
     http://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection
  18. Intel i740
    http://en.wikipedia.org/wiki/Intel740
  19. Intel i740 Datasheet
    ftp://download.intel.com/support/graphics/intel740/29061902.pdf
  20. Intel740™ Graphics Accelerator P854 Hardware
    ftp://download.intel.com/support/graphics/intel740/29062202.pdf
  21. S3 Savage
    http://en.wikipedia.org/wiki/S3_Savage
  22. Savage (S3)
    http://www.economy-point.org/s/savage-s3.html
  23. 3dfx Interactive
    http://en.wikipedia.org/wiki/3dfx_Voodoo_Graphics
  24. Visualization Tools and Environments for Very Large Data
     http://ditwww.epfl.ch/SIC/SA/publications/SCR00/scr12-page9.html
  25. Intel 860@cpu-collection
    http://www.cpu-collection.de/?l0=co&l1=Intel&l2=i860
  26. S3 Graphics
    http://www.s3graphics.com/en/index.aspx
  27. TSENG ET6000 Performance Page
    http://dani75.tripod.com/TSENG.htm
  28. Tseng Labs Ships ET6000 Advanced Graphics Chip, Announces Additional Manufacturing Sources
     http://www.encyclopedia.com/doc/1G1-18088868.html
  29. CyberMax chooses Tseng Labs' ET6000 Graphics and Video Controller for Max and ProMax Series PCs
     http://findarticles.com/p/articles/mi_m0EIN/is_1996_Oct_9/ai_18754932/
  30. Intel i860
    http://en.wikipedia.org/wiki/Intel_860
  31. Intel i860 64-Bit Microprocessor
    http://www.microprocessor.sscc.ru/i860.html
  32. 25 Microchips That Shook the World
    http://www.synbio.org.uk/scientific-computing-news/1351.html
  33. Sprite (computer graphics)
    http://en.wikipedia.org/wiki/Sprite_(computer_grap­hics)
  34. Sprite (počítačová grafika)
    http://cs.wikipedia.org/wiki/Sprite_(počítačová_gra­fika)
  35. Wikipedia: Video Display Controller
    http://en.wikipedia.org/wiki/Video_Display_Controller
  36. 3dfx Voodoo1 PCI
    http://www.v3info.de/english/html/v1.shtml
  37. Glide 2.2 Programming Guide
    http://www.gamers.org/dEngine/xf3D/glide/glidepgm.htm
  38. OpenGL Vizserver 3.1 Application Transparent Remote Interactive Visualization and Collaboration
     http://subs.emis.de/LNI/Proceedings/Proceedings55/GI-Proceedings.55-20.pdf

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

Autor článku

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