Hlavní navigace

Grafické karty a grafické akcelerátory (10)

4. 5. 2005
Doba čtení: 11 minut

Sdílet

V dnešním pokračování seriálu o grafických kartách a grafických akcelerátorech si popíšeme universální sběrnici PCI a její pozdější modifikaci ve formě portu AGP. Zejména sběrnice PCI je z pohledu vývoje grafických karet velmi zajímavá, protože na PC v podstatě jako první umožnila vytvářet a zobrazovat grafické informace v poměrně velkých rozlišeních, a částečně tak odstranila nevýhodu obrazové paměti oddělené od paměti operační.

Obsah

1. Univerzální sběrnice PCI se představuje
2. Koncept Plug and Play
3. Připojení grafických karet ke sběrnici PCI
4. Rozšíření sběrnice PCI
5. Interní port AGP
6. Zvláštní režimy portu AGP
7. PCI vs AGP
8. Obsah dalšího pokračování

1. Univerzální sběrnice PCI se představuje

Sběrnice PCI je v současné době nejpoužívanější sběrnicí jak na osobních počítačích typu IBM PC, tak i na pracovních stanicích různých výrobců. Tato sběrnice byla navržena firmou Intel již v roce 1992 a od té doby se stala oficiálním průmyslovým standardem, který je podporován mnoha výrobci periferních zařízení i čipových sad základních desek počítačů. Název sběrnice PCI vznikl ze slovního spojení Peripheral Component Interface. Důvodem velké úspěšnosti PCI byly především nevyhovující parametry předchozích sběrnic: původní sběrnice ISA byla velmi pomalá, MCA byla proprietárním řešením od konkurenční a poměrně rigidní firmy IBM a VESA Local Bus byla pouze sběrnicí lokální (s možností připojení omezeného množství zařízení) a orientovanou především na mikroprocesory řady 486. Předností PCI je i podpora Plug and Play, tedy dynamické detekce a konfigurace zařízení po startu počítače.

Tato sběrnice používá multiplexované adresové a datové vodiče, tj. podle momentálního stavu vybraných řídicích signálů se na jedněch vodičích střídavě vystavuje adresa a posílají data nebo příkazy pro připojená zařízení. Tento (poněkud diskutabilní) princip byl u PCI použit především kvůli zachování nižší ceny celého systému, jelikož vyšší počet vodičů by znamenal také nárust komplikovanosti jak sběrnice, tak i připojených zařízení (s tím by souviselo i zvětšení konektorů a plošných obvodů zařízení).

Sběrnice PCI existuje v několika různých variantách, které se liší především úrovněmi logických signálů, taktovací frekvencí (tj. frekvencí hodinových pulsů sběrnice) a šířkou datové části sběrnice. Úroveň logických signálů (tj. napětí logické jedničky – logická nula se od tohoto napětí odvozuje) může nabývat hodnoty buď 5 V, nebo 3,3 V. Taktovací frekvence a šířka datové sběrnice přímo určují maximální datový tok, jak je naznačeno v následující tabulce. Zde je nutné upozornit na fakt, že u osobních počítačů typu IBM PC se většinou vyskytuje nejpomalejší verze sběrnice PCI, která je taktována na 33 MHz s šířkou datové části sběrnice 32 bitů a datovým tokem rovným 33 MHz x 4 B = 1­32 MB.s-1. Rychlejší varianty sběrnice PCI našly své uplatnění ve specializovaných systémech, které jsou orientovány zejména na zpracování vysokých datových toků, například při práci s videem či při komunikaci několika rychlých disků:

Taktovací frekvence    Šířka datové     Maximální datový tok
sběrnice               části sběrnice

33 MHz                 32 bitů          132 MB.s-1
33 MHz                 64 bitů          264 MB.s-1

66 MHz                 32 bitů          264 MB.s-1
66 MHz                 64 bitů          532 MB.s-1

133 MHz                32 bitů          532 MB.s-1
133 MHz                64 bitů          1066 MB.s-1 

Sběrnice PCI tvoří spolu s rychlou adresovou a datovou lokální sběrnicí mikroprocesoru, popř. i se starší sběrnicí ISA, hierarchickou strukturu, ve které jsou jednotlivé sběrnice vzájemně uspořádány podle své rychlosti a vzdálenosti (ve smyslu řídicích, oddělovacích a budících obvodů) od centrální procesorové jednotky – CPU. Kombinace PCI+ISA se ve starších počítačích vyskytuje poměrně často, některé základní desky nabízejí i trojkombinaci AGP+PCI+ISA, další kombinace (napříkladPCI+VLB) se prakticky nevyskytují a ani nemají praktický význam.

2. Koncept Plug and Play

Z hlediska uživatele počítače či programátora ovladačů je důležitý také koncept nazvaný Plug and Play, který se začal ve velké míře využívat právě u PCI sběrnice (kvůli problémům s některými zařízeními, BIOSy i operačními systémy se tento koncept také nazýval Plug and Pray). Koncepce Plug and Play je založena na použití takzvaných konfiguračních registrů, jejichž obsah se při startu systému nastaví programově podle zjištěných typů a modifikací jednotlivých zařízení připojených naPCI sběrnici. Odpadá tak mnohdy velmi složité řešení konfliktů vzniklých použitím shodného přerušení či stejné adresy v adresovém prostoru zařízení – některé kombinace zařízení dokonce nešly na sběrnici ISA vyřešit. Pomocí konfiguračních registrů je také možné zjistit typ zařízení (zvukové zařízení, grafická karta, ovladač podřízené sběrnice, LAN adaptér apod.) a kód výrobce zařízení – všechna zařízení jsou uspořádána do stromové struktury, která obsahuje například větve pro grafické karty, zvukové karty, síťová zařízení, řadiče periferních zařízení apod.

Kódy výrobců, které by měly být certifikované, jsou specifikovány šestnáctibitovým číslem, které je, společně s číslem zařízení a přidělenými prostředky, zobrazeno při inicializaci počítače. Svou konfiguraci, tj. zařazení do stromu zařízení a rozsah adres či I/O prostoru, si zařízení uchovává buď v paměti ROM, EPROM, či nejčastěji v EEROM. Zajímavě je řešen rozsah adres, který dané zařízení pro svou činnost potřebuje. Tento rozsah (či rozsahy) je taktéž uchováván v konfiguračních registrech (nazývaných BADRn), ale konkrétní adresu zařízení přidělí až BIOS, případně operační systém. To mimo jiné znamená, že při každém startu počítače může být zařízení mapováno do jiné oblasti či oblastí paměti. Pro samotné ovladače ani aplikace to nepředstavuje žádný problém, protože si mohou zjistit všechna zařízení připojená na sběrnici a z nich si podle kódu výrobce, identifikace zařízení a další jednobytové položky (odlišuje stejný typ zařízení, například dvě jinak identické síťové karty) vybrat zařízení, se kterým budou komunikovat.

Mikroprocesor může k zařízením připojeným ke sběrnici PCI přistupovat pomocí několika technologií. Na první pohled je nejjednodušší přístup přes mapovanou paměť. Toto řešení má nevýhodu v tom, že se při nesprávně napsaném ovladači či nekorektně fungujícím zařízení může celá sběrnice „zaseknout“ a počítač pak přestane reagovat. Další možností je použití obousměrné fronty (FIFO) nebo takzvaných mailboxů, což jsou registry, do kterých lze z jedné strany (CPU či zařízení) informace zapisovat a z druhé strany tyto informace číst. K dispozici jsou samozřejmě příznaky čtení či zápisu do mailboxů, stejně tak jako řízení pomocí přerušení, jež může být generováno jak při práci s frontou FIFO, tak i při práci s mailboxy.

3. Připojení grafických karet ke sběrnici PCI

Pro připojení grafických karet se PCI sběrnice používala velmi často (prakticky od svého uvedení na trh v roce 1992), a to zejména z důvodů její pozdější velké rozšířenosti, progresivního vývoje do budoucna (sběrnice PCI2, PCI-X atd.) a samozřejmě poměrně velké rychlosti přenosu dat. Nezanedbatelný je také fakt, že při použití PCI sběrnice může řízení převzít některé z připojených zařízení a poté provádět blokové přesuny dat (takzvaný režim bus-master). Vzhledem k tomu, že rychlost PCI sběrnic nelze kvůli zachování zpětné kompatibility zvyšovat, bylo nutné v dalších letech (a zejména z důvodu stále rostoucí popularity grafických akcelerátorů) pro nové grafické karty vytvořit rychlejší sběrnici či port. Výsledkem těchto snah byl AGP popsaný v navazující páté kapitole.

4. Rozšíření sběrnice PCI

Prakticky nejznámějším rozšířením sběrnice PCI je sběrnice označovaná PCI Express. Nejedná se však o faktické rozšíření na fyzické úrovni, ale na úrovni programové. Na fyzické úrovni se jedná o zcela nový typ sběrnice, která se v některých aspektech dokonce podobá propojovací síti s topologií odlišnou od topologie sběrnicové (lineární). Přenosová rychlost se u této sběrnice pohybuje v řádech jednotek až desítek GBs-1, pro dnes nejčastější měděné spoje je maximální rychlost stanovena na 10 GBps-1.

Zvyšování přenosové rychlosti se u sběrnice PCI Express provádí dvěma způsoby: zvyšováním frekvence přenášení dat a přidáváním dalších signálových párů. Tímto způsobem se může základní přenosová rychlost zvyšovat v násobcích 1×, 2×, 4×, 8×, 12× a 16×. Jedinou vážnou nevýhodou této sběrnice je její prozatím malá rozšířenost, a tím pádem i malá podpora ze strany výrobců zařízení a programového vybavení. Z tohoto důvodu by bylo použití tohoto typu sběrnice pro grafické karty a grafické akcelerátory problematické. V horizontu několika let by však měl význam této sběrnice narůstat, proto lze počítat s návrhem nových generací grafických akcelerátorů právě pro tento typ sběrnice.

5. Interní port AGP

Interní port AGP zaujímá v pomyslné hierarchii sběrnic zvláštní místo. Nejedná se totiž v pravém smyslu o sběrnici, neboť k AGP lze připojit pouze jedno zařízení. Typická součást každé sběrnice, tj. arbitrážní obvod (a z toho vyplývající předem známý komunikační protokol), zde není z tohoto důvodu obsažen. Označení AGP vzniklo zkrácením plného názvuAdvanced Graphics Port, a jak již tento název naznačuje, jedná se o port určený prakticky výhradně k připojení grafických adaptérů, zejména grafických akcelerátorů. Hlavním důvodem vedoucím k zavedení AGP byly stoupající požadavky na rychlost přenosu grafických dat, zejména videa a textur pro trojrozměrné scény (zejména v případě, kdy se textury musí načítat dynamicky, tj. během vykreslování trojrozměrné scény). Proto byl při návrhu portu AGP kladen velký důraz na dosažení co nejvyšší rychlosti přenosu dat s malou latencí. Reálná rychlost portu AGP samozřejmě reflektuje soudobý vývoj výpočetní techniky a představuje určitý kompromis mezi dosažitelnou rychlostí a cenou celého grafického subsystému.

Port AGP vznikl úpravou sběrnice PCI, proto jsou použity velmi podobné řídicí signály, stejně jako demultiplex dat a adres. Došlo však k několika modifikacím, z nichž patrně nejvýraznější je odstranění arbitrážního obvodu. Z tohoto důvodu je možné k portu AGP připojit pouze jedno zařízení (jedná se tedy o řízení typu point-to-point), což přispívá k rychlejší práci a zjednodušení řídicích obvodů na připojené grafické kartě. Mezi další změny patří podpora dvou taktovacích frekvencí: 33 MHz (základní frekvence, jež je stejná jako u sběrnice PCI) a 66 MHz. Na těchto frekvencích musí pracovat všechny grafické karty či grafické akcelerátory připojené do portu AGP. Jinými slovy to znamená, že volba taktovací frekvence je omezena konfigurací procesoru a základní desky, nikoliv přímo grafické karty (tuto skutečnost někteří takyvýrobci porušovali).

V jednom taktu (tj. během jednoho hodinového cyklu) se může provést buď jeden přístup do paměti (tento parametr je opět shodný s PCI sběrnicí), dva přístupy, nebo dokonce čtyři přístupy. Přenosové rychlosti pro takt 66 MHz odpovídají 264 MBs-1 (jeden přístup do paměti), 532 MBs-1 (dva přístupy do paměti) resp. 1066 MBs-1 (čtyři přístupy do paměti). Při jednom přístupu do paměti se v jednom taktu přenesou čtyři byty, při dvou přístupech osm bytů a při čtyřech přístupech dokonce šestnáct bytů na jeden takt.

Oproti PCI sběrnici se také změnily amplitudy všech digitálních signálů; existuje starší verze portu AGP s amplitudou signálů 3,3 V a modernější verze s amplitudou 1,5 V (amplitudou je zde myšlena napěťová úroveň logické hodnoty 1). U starší verze portu AGP lze využívat pouze jeden nebo dva přístupy do paměti v jednom taktu, modernější verze podporuje všechny tři možnosti, tj. jeden, dva, nebo čtyři přístupy do paměti v jednom taktu – obecně je tedy přenosová rychlost při použití novější verze AGPdvakrát rychlejší než u starší verze.

6. Zvláštní režimy portu AGP

Vzhledem k tomu, že port AGP je určen výhradně pro připojení grafických karet a grafických akcelerátorů, podporuje protokol AGP některé zvláštní režimy přenosu dat, které nemají u jiných sběrnic či portů obdobu. Tyto režimy jsou určeny pro efektivní přenos popř. sdílení grafických dat, zejména textur, a/nebo přenos videa.

Prvním podporovaným „zvláštním“ režimem je přenos textur, přičemž přenášená rastrová data textury mají označení (příznak) „pouze pro čtení“. Tím se zaručí, že textury nejsou ukládány do vyrovnávací paměti, což je vzhledem k povaze textur zbytečné – textury jsou totiž většinou předpočítány, přičemž se nepočítá s jejich dynamickou modifikací, výjimkou jsou samozřejmě run-time výpočty typu bumpmappingu či mipmappingu, výsledky těchto výpočtů jsou však použity pouze při výpočtu jednotlivých fragmentů a nikam jinam se neukládají. Díky zavedení tohoto režimu dochází ke zvýšení využití vyrovnávacích pamětí relevantními daty až o desítky procent.

Při práci s texturami je také možné (na úrovni operačního systému či ovladače) provést rozhodnutí, zda bude pro textury používána výhradně paměť integrovaná na grafickém akcelerátoru, nebo se tato paměť stane (z pohledu aplikací) rovnocenná s operační pamětí počítače:

  • Režim DMA: v tomto režimu jsou veškerá rastrová data textur uložena v paměti grafického akcelerátoru. Pokud již není v paměti grafického akcelerátoru volný prostor pro uložení další textury nebo je textura ve vykreslované scéně použita poprvé, musí se data zkopírovat z operační paměti počítače do paměti integrované na grafickém akcelerátoru. Toto kopírování probíhá po velkých blocích (řádově desítky kilobytů) pomocí režimu DMA. Každý přenos tedy znamená velkou zátěž pro celý systém, tato zátěž je však pouze krátkodobá a občasná. Režim DMA se stává výhodným především v případech, kdy je na grafickém akcelerátoru nainstalována paměť s dostatečnou kapacitou.
  • Režim Execute: v tomto režimu je z hlediska texturování paměť integrovaná na grafickém akcelerátoru a operační paměť rovnocenná. To znamená, že se při texturování nemusí na grafický akcelerátor přenášet celá textura, ale je umožněn přenos pouze malé části, která je v dané chvíli potřebná. V systému existuje tzv. GART (Graphics Address Remapping Table), ve které jsou vedeny informace o uložení a funkci stránek paměti. Jedna stránka má konstantní velikost 4 KB. V případě, že jsou data z nějaké stránky vyžadována pro vykreslování a stránka je uložena v operační paměti, je proveden přenos těchto 4 KB do paměti grafického akcelerátoru a následně se provede úprava záznamu v GART. Vzhledem k poměrně malé velikosti stránek tak nedochází k jednorázovému zatížení systému, protože se zátěž v čase rozloží.

7. PCI vs AGP

Z výše uvedených informací můžeme správně dojít k závěru, že pro výkonné grafické karty a grafické akcelerátory je použití portu AGP mnohem výhodnější než využití sběrnice PCI. Důvodů je více, od rychlejší komunikace mezi mikroprocesorem, operační pamětí a grafickým akcelerátorem až po využití „zvláštních“ režimů DMA a Execute. Další výhodou je fakt, že na PCI sběrnici je možné připojit další grafickou kartu či grafický akcelerátor, a vytvořit tak například vícemonitorový grafický systém (firma Matrox se svým výborným systémem DualHead naneštěstí zaspala dobu, proto se musí volit po všech stránkách obtížnější řešení vícemonitorových systémů).

CS24_early

8. Obsah dalšího pokračování

V dalším pokračování tohoto seriálu se opět vrátíme do minulosti, protože budou chronologicky popsány ty nejjednodušší grafické karty dostupné pro počítače typu IBM PC. Popsány budou jak grafické karty navržené a dodávané firmou IBM, tak i grafické karty od dalších výrobců periferních zařízení pro počítače řady IBM PC.

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.