reklama
Aktuality  |  Články  |  Recenze
Doporučení  |  Diskuze
Grafické karty a hry  |  Procesory
Storage a RAM
Monitory  |  Ostatní
Akumulátory, EV
Robotika, AI
Průzkum vesmíru
Digimanie  |  TV Freak  |  Svět mobilně

Technologie: Architektura 3Dlabs P10

2.7.2002, Zdeněk Kabát, článek
Technologie: Architektura 3Dlabs P10
Díky vesměs kladným ohlasům na Hyper-Threading jsme se rozhodli pokračovat v rubrice Technologie. Jejím dalším tématem jistě potěšíme všechny příznivce 3D grafiky, protože zde popisujeme architekturu grafického čipu P10. V článku naleznete také informace o 3DLabs Wildcat VP, která je tímto čipem vybavena a která byla vypuštěna minulý týden.

Pipeline



A zde se dostáváme k tomu hlavnímu, co nám architektura VPU P10 přináší - samotné pipeline. Pipeline tohoto grafického jádra se příliš neliší od běžné pipeline, ale rozdílné je hlavně, co se v každé části děje. Abychom celý problém mohli pochopit, tak si nejdříve rozebereme 3D pipeline jako takovou:
  1. První krok je zcela jasný - spuštěný software pošle přes grafické ovladače a sběrnici AGP příkazy a data, jež mají být na GPU spuštěna.
  2. Když grafické jádro ví, co má provést, tak začne pracovat. Získaná data tvoří souhrn vrcholů a polygonů, které mají být zobrazeny. První fáze v grafické pipeline je transformace dat o vrcholech, která byla přijata GPU, do 3D scény. Výpočty potřebné pro transformaci vyžadují FP (floating-point) maticovou matematiku. Další fází jsou výpočty osvětlení pro každý vrchol. V programovatelném GPU jsou tyto úkony (zahrnující počáteční manipulace s vrcholy) velice flexibilní a v krátkém vertex shader programu lze měnit vlastnosti vrcholů a tudíž i tvar, vzhled a chování modelu.
  3. Po vytvoření vrcholů je nutné vykreslit zobrazované pixely. Před tím se ale musí upravit stávající scéna - "vystřihnou" (clipping, culling) se z ní pixely, které by se zobrazily mimo obraz. Dále budou, u grafických čipů s touto schopností, odstraněny neviditelné vrcholy, tzn. ty, které se nacházejí za jiným předmětem (technologie HyperZ nebo Visibility Subsystem). Tyto procesy ušetří značnou část šířky paměťového pásma, protože jinak by bylo výkonem mrháno bez vizuálního efektu.
  4. Aby se mohly vykreslit pixely, je síť existujících vrcholů převedena do 2D (= na monitor). Z-buffer uchovává data o vzdálenosti a hloubce pixelů ve 3D prostoru, abychom jej mohli kdykoli využít pro zpětnou změnu 2D do 3D prostoru.
  5. Síť vrcholů vytváří polygony, které jsou v další fázi pokryty texturami. Po načtení textur přichází na řadu pixel shader, který dokáže v programovatelných GPU vytvářet různé efekty (např. shadow mapping, z-correct bump-mapping).
  6. Na konci pipeline probíhají zbylé filtry, anti-aliasing a podobné metody před umístěným zpracovaných dat do frame bufferu a odesláním do RAMDAC nebo TMDS.

Podívejme se, jak vypadá kompletní pipeline grafického čipu P10 (části pipeline označené žlutě jsou programovatelné, červené mají pevnou funkci):


Obr. 1 - Pipeline čipu P10
(klikněte pro zvětšení)

Grafický čip P10 oplývá nejprogramovatelnější architekturou jednoduchého čipu současnosti. Obsahuje přes 200 32-bitových floating-point a celočíselných (integer) obecně použitelných procesorů s adresovacími, cyklovanými a podprogramovými schopnostmi. Každá část pipeline má přístup do paměti, tzn. že například data zapsaná do paměti pixel shaderem mohou být bez problémů využita vertex shaderem.

Multi-threading

V úvodu článku jsem narážel na operační systém Longhorn, který by měl zobrazovat všechny aplikace jako textury. Grafický čip P10 bude schopný Multi-threadingu a díky tomu by měl operačnímu systému Longhorn plně vyhovět. Příkazový procesor pipeline VPU P10 slouží k maximalizaci systémových prostředků a tím i k umožnění spuštění více grafických threadů paralelně. Pokud jeden thread pošle porušená data, bude sice ukončen, ale operační systém pojede dále. V současnosti si na nás při této situaci přijde "modrá smrt" a jsme odříznuti od ostatních spuštěných aplikací.


Obr. 2 - Příkazový buffer
(klikněte pro zvětšení)

Příkazový buffer nám pomůže rychle měnit stavy, a to se hodí právě při přepínání 3D oken. Architektura zajišťuje změnu stavu po přerušení procesu s vysokou prioritou do 3 mikrosekund, v případech obecnějšího rázu do 15 mikrosekund. Příkazový procesor by měl přiřazovat zdroje na všechny příchozí žádosti a minimalizovat tak riziko zaseknutí systému.

Vertex Shader

Z diagramu se zdá, že VPU používá jediný vertex procesor, ale jak správně hádáte, není to tak. On se totiž skládá z 16 skalárových floating-point geometrických procesorů, které pracují paralelně (technologie SIMD) a posílají data do T&L jednotky. Společnost 3DLabs říká, že maximum vertex shaderu je 192 milionů vrcholů za vteřinu, což je předpoklad pro frekvenci jádra 250MHz. GeForce4 Ti4600 se dvěma vertex shadery zvládá s frekvencí 300MHz "pouze" 136 milionů vrcholů za sekundu. Výkon P10 samozřejmě není 8x vyšší, ale nárůst je znatelný.


Obr. 3 - Vertex shader se 16 vertex procesory
(klikněte pro zvětšení)

VPU P10 ale používá rozdílný postup než GF4. Místo menšího počtu výkonných jednotek používá, jak bylo řečeno výše, řadu vertex procesorů (VP). To znamená, že k vykonání stejného úkonu jako GF4 potřebuje sice více cyklů, ale díky paralelní činnosti všech šestnácti VP se zvýší efektivita. Aby software využil všech 16 VP, spravuje je přes VP manažer. Ten totiž před systémem skryje VP a umožňuje tak manipulaci s nimi jako s jediným procesorem.

Vertex procesor provádí kromě standardních instrukcí (sčítání, odčítání, násobení, dělení a další matematické úkony) také operace zjednodušující ořezávání vrcholů ležících mimo scénu (clipping). 3DLabs P10 plně podporuje Vertex Shader 2.0 obsažený v DirectX9.

Tile Processor

Tile Processor je název pro technologii, která je použita při fázi rastrování výřezu. Rozděluje scénu na bloky o velikosti 8x8 pixelů, čímž maximalizuje efektivitu cache u VPU P10. Systém, který provádí tzv. z-occlusion culling (součást vyřazování nepotřebných vrcholů) se nazývá Visibility Processor.


Obr. 4 - Pixel pipeline
(klikněte pro zvětšení)

Texturový procesor

Pixel processing, který používá VPU P10, není zcela programovatelný. Používá kombinátory registrů, které jsou vysoce flexibilní, přesto ale není společnost 3DLabs spokojena s jejich výkonem. Proto se tu setkáváme s obdobou technologie použité u vertex shaderu, tedy s použitím více 32-bitových procesorů, které pracují paralelně díky architektuře SIMD.


Obr. 5 - Součást texturového procesoru
(klikněte pro zvětšení)

P10 je vybaven 64 floating-point coordinate generator procesory, které určují pokrytí texturou a 64 integer (celočíselnými) procesory, které slouží k vypočítání barev. Tyto součásti texturového procesoru jsou plně programovatelné a kompatibilní s DirectX8 pixel shaderem. Zajímavé je, že s přechodem k vyšší verzi, k DirectX9, kompatibilita s pixel shaderem zaniká, protože ve specifikacích DX9 je floating-point pixel pipeline od začátku do konce. Společnost 3DLabs dokonce polemizuje, že k plné kompatibilitě s DX9 bude nutný 0,13-, ne-li 0,10-mikronový výrobní proces. Další generace grafických čipů od nVidie bude na rozdíl od P10 vyráběna 0,13-mikronovou technologií, a tak pravděpodobně kompatibilní s DX9 (uvidíme ještě, jak s tím zamíchá podpora 128-bitových barev).

Podle výše uvedených specifikací je také tato programovatelná texturová jednotka zobrazit až osm simultánních textur. V porovnání s šesti u Radeonu 8500 a čtyřmi u GeForce4 je to velice slušné. Procesor podporuje velikost textur až 8K x 8K nebo 1K x 1K x 1K, pro které je docela nutná virtuální paměť (jeden gigabajt je přeci jen na videopaměť dost :-) Je použita obvyklá sada filtrů, ale přídavná programovatelnost zpřístupňuje anizotropní, bikubické a MIP-mapped 3D textury. Ostatní potřebné funkce mohou být libovolně naprogramovány.

Pixelový procesor

Poslední částí pipeline VPU P10 je programovatelný pixelový procesor. Jak bylo řečeno v obecném popisu pipeline, poslední fází před zobrazením dat na monitor je použití různých technik jako např. anti-aliasingu. V ostatních GPU jsou tyto funkce pevné, ale P10 je v tomto opět převyšuje. Podporovány jsou prakticky všechny typy anti-aliasingu - okrajový (edge) AA pod OpenGL poskytuje výbornou kvalitu čar. Také je podporován supersampling a mutlisampling (až 8 vzorků na sub-pixelovou mřížku 16x16).


Obr. 6 - Pixelový procesor
(klikněte pro zvětšení)
reklama