Karta graficzna, często określana też mianem akcelerator grafiki, to element
komputera tworzący sygnał dla monitora.
Podstawowym zadaniem karty graficznej jest przechowywanie informacji o tym jak
powinien wyglądać obraz na ekranie monitora i odpowiednim sterowaniu monitorem.
Pierwsze karty graficzne potrafiły jedynie wyświetlać znaki alfabetu łacińskiego ze
zdefiniowanego w pamięci karty generatora znaków - tryb tekstowy. Kolejna
generacja kart graficznych potrafiła już wyświetlać w odpowiednim kolorze
poszczególne punkty (piksele) - tryb graficzny. Nowoczesne procesory graficzne
udostępniają wiele funkcji ułatwiających i przyśpieszających pracę programów.
Możliwe jest narysowanie odcinka, trójkąta, wieloboku, wypełnienie ich zadanym
kolorem lub wzorem, tzw. akceleracja 2D. Większość kart na rynku posiada również
wbudowane funkcje ułatwiające tworzenie obrazu przestrzeni trójwymiarowej, tzw.
akceleracja 3D. Niektóre posiadają zaawansowane algorytmy potrafiące na przykład
wybrać tylko widoczne na ekranie elementy z przestrzeni.
Na rynku pojawia się coraz więcej nowych rozwiązań technicznych do kart grafiki,
przedstawicielami najwydajniejszych kart graficznych są obecnie konstrukcje oparte
na układach nVidia GeForce 8800GTX oraz ATi Radeon X1950XTX.
Budowa
Elementy karty graficznej
Procesor graficzny (GPU)
Odpowiedzialny jest za sprzętowe wspomaganie wyświetlania obrazu. Oblicza operacje
graficzne, efekty (np. antialiasing) i zajmuje się wyświetlaniem obrazu 2D oraz 3D.
Posiada instrukcje, których brak procesorowi komputera, co pozwala na renderowanie
zaawansowanych obrazów. Procesory graficzne mają określoną bitowość. Jest ona
związana z wielkością paczek, które wymieniane są między GPU a pamięcią karty. Tak,
więc karty 64-bitowe przesyłają paczki 8 bajtowe, 128-bitowe: 16 bajtowe i analogicznie
256 bitowe: paczki 32 bajtowe. Bitowość ta nie ma jednak znaczącego wpływu na
szybkość wyświetlania obrazu. Różnice pojawiają się w wyższych rozdzielczościach.
Nazwa GPU użyta po raz pierwszy przez nVidię w roku 1999.
RAMDAC
Układ odpowiedzialny na zamianę sygnału cyfrowego na analogowy. Dane o kolorach
wysyłane przez procesor graficzny trafiają do RAMDAC i przetwarzane są na sygnał,
który następnie trafia do monitora. Układ RAMDAC składa się z kościa pamięci
SDRAM, w której przechowywane są dane o kolorach, a także z 3 przetworników
cyfrowo-analogowych (C/A) po jednym dla każdego koloru RGB. Im szybszy jest ten
układ, tym większa ilość danych przesyłana jest do monitora w ciągu 1 sekundy, więc
zwiększa się też częstotliwość odświeżania. Jest to o tyle ważne, że przy wyższych
częstotliwościach nasze oczy męczą się o wiele mniej.
Przechowywane są w niej dane o położeniu pikseli, tekstury oraz informacje o głębi
3D. Nowsze karty posiadają nawet 512 MB tej pamięci.
Pamięć musi w jednym momencie być odczytywana oraz zapisywana. W przeciwnym
wypadku przetwornik musiałby czekać, aż cały pakiet zostanie wczytany do pamięci. Z
tego też powodu podzielona jest na dwa jednakowe bufory (Double Buffering). Back
Buffer jest odpowiedzialny za zapisywanie danych w pamięci. W tym czasie Front
Buffer zajmuje się odczytywaniem danych przez RAMDAC. Przełączanie buferów musi
występować dokładnie w chwili, gdy oba z nich skończą swoją pracę. Możliwa jest też
praca na trzy bufory (Triple Buffering). W tym przypadku istnieje dodatkowy bufor, do
którego trafiają wyniki obliczeń. Skutkiem tego jest jednak brak synchronizacji
impulsów, przez co częstotliwość odświerzania obrazu jest zmienna. Bufor Z -
przechowuje dane o tym, jak każdy piksel położony jest w przestrzeni
trójwymiarowej.
Elementy karty graficznej
Gniazdo zasilania
Występuje w kartach, które mają bardzo dużą moc obliczeniową i potrzebują do
działania dodatkowego zasilania.
Gniazdo monitora SVGA Jest przeznaczone do podłączenia monitora CRT. Jest to
złącze posiadające 15 pinów. Gniazdo DVI Gniazdo przeznaczone do przesyłania
sygnału cyfrowego. Najczęściej podłącza się do niego monitory LCD, jednak, jeśli jest
to gniazdo typu DVI-I to możliwe jest podłączenie monitora CRT przez specjalną
przejściówkę. Istnieje także typ DVI-A przesyłający jedynie analogowy sygnał. Złącze
DVI posiada dwa kanały przesyłowe, co podwaja pasmo przenoszenia. Wyjście TV
Pozwala na podłączenie naszego Peceta do telewizora. Można wyświetlić na nim obraz
identyczny z tym, co widzimy na monitorze, lub też to, co sami zechcemy wyświetlać,
np. film. Możliwa jest także zmiana rozdzielczości osobno dla każdego z ekranów.
Twórcy kart
ATI
ATI Technologies Inc. (gdzie ATI jest skrótem od Array Technologies
Incorporated) (NASDAQ: ATYT) - to kanadyjski producent układów scalonych,
znany głównie ze swoich kart graficznych. Notowany na giełdach w Toronto i
NASDAQ.
ATI udało się przełamać monopol NVIDII na akceleratory 3D do komputerów typu
desktop, wprowadzając na rynek, jako konkurencję dla kart GeForce, karty graficzne
seri Rage, a później dużo wydajniejsze Radeony. Około roku 2003 ATI zaczęło
sprzedawać swoje chipsety do płyt głównych (mostki południowy/północny), a
wcześniej dostarczała zintegrowane układy graficzne.
W lipcu 2006 ATI zostało przejęte przez firmę AMD za 5, 4 miliarda dolarów. Intel
przewidując wykupienie ATI przez AMD, konkurencyjne dla tej pierwszej, nie
przedłużył licencji ATI na produkcję chipsetów dla swoich mikroprocesorów
Firma Nvidia została założona w roku 1993 przez Jen-Hsun Huanga, Chrisa
Malachowsky'ego, i Curtisa Priema, byłych pracowników SGI. Siedziba znajduje się w
USA, a dokładniej w Santa Clara w stanie Kalifornia. Z założenia Nvidia miała
produkować układy graficzne, jednak po późniejszym sukcesie zajęła się także
chipsetami płyt głównych. Pierwszą ofensywę rynku Nvidia rozpoczęła od
opracowania układu NV1 użytego w konsoli Sega Saturn. Niestety NV1 nie przyjął się
ze względu na problemy z obsługą. W czasach, gdy nVidia próbowała wchłonąć jakoś
w rynek kart graficznych, był on zdominowany niemal całkowicie przez 3Dfx. nVidia
opracowała jednak bardzo wydajne karty Riva128 oraz Riva TNT, które bardzo szybko
opanowały rynek i dały firmie dobrą pozycję. W 2000 roku pozycja 3Dfx znacznie
osłabła przez nieudane dwu- oraz cztero-układowe Voodoo. nVidia wykupiła
upadającą firmę wraz z jej patentem na SLI, który kilka lat później okazał się
doskonałym rozwiązaniem.
Karty i układy graficzne opracowane przez nVidia: NV1 Riva Riva 128 Riva 128ZX
Riva TNT Riva TNT2 GeForce GeForce 256 GeForce2 GeForce3 GeForce4 GeForce FX
GeForce 6xxx GeForce 7xxx GeForce 8xxx
Inne: Quadro - karty do zastosowań profesjonalnych RSX (Reality Synthesizer) -
Układ znajdujący się w konsoli Sony Playstation 3 XGPU - układ opracowany na
potrzeby konsoli XBOX
Matrox Electronic Systems Ltd
Kanadyjska firma z siedzibą w Dorval w prowincji Quebec. Założona przez Lorne'a
Trottier'a i Branka Matić'a. Matrox słynie ze swoich kart o profesjonalnym
zastosowaniu. Jako pierwsza firma wprowadziła możliwość pracy na kilku monitorach.
Jej produkty używane są w armi , medycynie, nauce. Karty Matroxa charakteryzują się
najwyższą, jakością obrazu 2D.
Złącza
ISA
ISA ( Industry Standard Architecture ) Złącze ISA zostało wprowadzone początkowo
jako 8-bitowe w roku 1981 dla komputerów IBM PC, a w dwa lata później dla
architektury XT. W roku 1984 opracowany został standard 16-bitowy. Pierwsza z
opracowanych wersji pracowała na częstotliwości 4,77 MHz, a druga 8 MHz. Wadą
złącza ISA było to, że aby podłączyć do komputera jakiekolwiek nowe urządzenie
należało najpierw odpowiednio przygotować do tego system, co wymagało
znajomości informacji o dodawanym sprzęcie. Należało skonfigurować IRQ, I/O oraz
DMA. Aby rozwiązać ten problem opracowano ISA PnP, system plug-n-play
samoczynnie konfigurujący nowe urządzenie podłączone do komputera. 8-bit ISA
(architektura szyny XT) 8-bitowa wersja ISA używana była głównie przy procesorach
Intel 8086 oraz 8088. Szyna ta posiada cztery kanały DMA. Trzy z nich zostały
przeniesione na slot rozszerzenia.
Kanał DMA Rozszerzenie Funkcja 0 nie odświeżanie RAM 1 tak dodawanie kart 2
tak kontroler flopa 3 tak kontroler HDD Informacje techniczne Szerokość magistrali
- 8 Bit Kompatybilność - 8 Bit ISA Ilość pinów - 62 Napięcie - +5 V, -5 V, +12 V,
-12 V Taktowanie - 4,77 MHz
Local Bus
VESA Local Bus (Video Electronics Standards Association Local Bus) - nazywana
także VL Bus lub VLB. Złącze to po raz pierwszy pojawiło się na rynku
komputerowym w roku 1992 i bardzo szybko zdobyło popularność. Zostało
zaprojektowane, aby rozszerzyć możliwości wyświetlania obrazu w komputerach PC.
VLB było w pełni kompatybilne ze starszymi kartami typu ISA, lecz było przy tym
także o wiele szybsze. Działo się tak dzięki temu, że złącze VLB stało się
rozszerzeniem standardowego interfejsu ISA. Dodano jedynie trzecią część złącza,
mającą obsługiwać 32-bitowe karty. Standardowa szybkość pracy złącza wynosiła
33MHz, lecz na niektórych komputerach mogła wynosić nawet 50 MHz. VL Bus
zostało wyparte przez wprowadzone w 1994 roku Intelowskie złącze PCI, po dzień
dzisiejszy będące standardem w komputerach PC. Szyna Local Bus była używana
jedynie w komputerach seri 486.
PCI
PCI ( Peripheral Component Interconnect )
Prace nad pierwszą wersją PCI
zostały rozpoczęte już w 1990 roku, a ostateczny ich wynik ogłoszony 22 czerwca
1992 roku. W 1992 roku utworzona została grupa PCI-SIG (PCI Special Interest
Group), dzięki czemu technologia PCI uległa standaryzacji. PCI-SIG już rok później,
30 kwietnia 1993 ogłosiła specyfikację wersji 2.0 tego złącza. Do jednej magistrali
można podłączyć nawet 5 urządzeń, a po zastosowaniu, tzw. mostków o wiele więcej.
Zaletą PCI jest to, że do komputera można podłączyć wiele urządzeń pracujących na
tym złączu w jednym czasie. Nie ma także znaczenia, do czego służy podłączana
przez nas karta, ważne jest tylko, że pracuje na tym złączu. Nie musimy także
pamiętać, aby posiadać kartę przystosowaną do danej wersji PCI, wystarczy, aby
pasowała napięciowo. Dzięki ingerencji PCI-SIG starsze karty bez problemu radzą
sobie w nowych komputerach. Pierwotnie złącze PCI pracowało na taktowaniu 33
MHz i 32-bitowej szerokości magistrali. Dało to przepustowość rzędu 132 MB/s. Była
to przyzwoita prędkość, lecz jednak za mała dla wielu użytkowników. Wersja 2.1 dała
przepustowość 528 MB/s. Jest to wynikiem pracy na magistrali 64-bitowej i
taktowaniu 66MHz. Bardzo ważnym elementem przy projektowaniu PCI było
przystosowanie złącza do pracy PnP (Plug and Play). Możliwość tą wykorzystano
dopiero w roku 1995, w nowym systemie Microsoft'u, czyli Windowsie 95. Działanie
PnP polega na tym, że na karcie zapisany jest specjalny 16-bitowy numer ID
odmienny dla każdego urządzenia. System posiadający obsługę PnP odczytuje ten
numer i potrafi poprawnie obsłużyć kartę.
Złącza pochodne: PCI-X 1.0 Data wprowadzenia: 1999r. Szyna danych: 64-
bit Taktowanie: 133MHz Napięcie: 3,3V Wynikowa przepustowość: 1064 MB/s
PCI-X 2.0 Data wprowadzenia: 2002r. Szyna danych: 64-bit Taktowanie:
266MHz / 533MHz Napięcie: 3,3V / 1,5V Wynikowa przepustowość: 2128 MB/s /
4256 MB/s Inne: 16-bitowy wariant dla napięcia 1,5V
AGP ( Accelerated Graphics Port ) AGP to złącze zaprojektowane głównie z myślą o
połączeniu między kartą graficzną a płytą główną. Jest to zmodernizowana wersja
Intelowskiego PCI. Pierwsza specyfikacja AGP (1.0) została ogłoszona w 1997 roku.
Od tego czasu powstały jeszcze trzy główne typy AGP. Rozróżniamy cztery typy AGP:
AGP 1x Używa 32-bitowej magistrali przy częstotliwości 66 MHz. Maksymalna
przepustowość tej wersji wynosi 264 MB/s. Jest to podwojona wartość
przepustowości możliwej do osiągnięcia na złączu PCI o magistrali 32-bitowej i
taktowaniu 33 MHz. Złącze AGP 1x pracuje na napięciu 3,3V. AGP 2x Bitowość
magistrali i częstotliwość pozostają takie same jak w poprzedniej wersji, lecz transfer
jest podwojony przez pracę na obu zboczach zegara sygnałowego i wynosi 528 MB/s.
Napięcie pozostaje takie samo. AGP 4x Taktowanie zostaje zwiększone do 133 MHz,
co umożliwia osiągnięcie przepustowości rzędu 1056 MB/s. Napięcie pracy zostaje
obniżone do 1,5 V. AGP 8x Częstotliwość ponownie zostaje podwojona, transfer
osiąga więc poziom 2112 MB/s. Napięcie zostaje obniżone do 0,8 V.
Karty oraz złącza AGP są kompatybilne, lecz z pewnymi zasadami. Karty działające na
napięciu 3,3V nie będą pasować na przykład do slotu 1,5V. To samo dzieje się w
drugą stronę. Są jednak uniwersalne złącza AGP, które obsługują każdy typ karty.
Należy też zaznaczyć, że profesjonalne karty nie zostaną uruchomione na
uniwersalnych złączach, lecz jednak zwykłe karty można uruchamiać na
profesjonalnych złączach. Jedną z największych zalet złącza AGP jest system DIME
(Direct Memory Execute) umożliwiający bezpośredni dostęp do pamięci operacyjnej
komputera. Dzięki temu karta może używać pamięci RAM jako bufor tekstur. Ze
strony chipsetu do obsługi pamięci używana jest funkcja GART (Graphics Address
Remapping Table).
PCI Express
PCI Express ( inaczej 3GIO - 3rd Generation I/O ) Choć w nazwie występuje nazwa
"PCI", złącze PCI Express działa na całkowicie innej zasadzie. Używa ono szeregowy
protokół przesyłania danych. Taktowanie szyny jest o wiele wyższe niż w przypadku
PCI i wynosi aż 2,5GHz. Zaletą PCIE jest dwukierunkowe połączenie point-to-point
(punkt do punktu), przez co przepustowość nie jest dzielona w zależności od kierunku
(jest taka sama w obie strony). Przypadłością równoległego PCI było dzielenie
przepustowości między wszystkimi urządzeniami. W PCIE nie występuje to dzięki
połączeniu szeregowemu. Do każdych 8 bitów dodane są dodatkowe 2. Nazwa
danego typu PCIE wskazuje nam, ile dane złącze zawiera, lini którymi przesyłane są
dane. Tak więc złącze x8 posiada ich 8, a złącze x16 - 16. Długość slotu także zależna
jest od jego typu. Im więcej lini przesyłowych tym dłuższe złącze.
Efekty graficzne
Antialiasing Anisotropic filtering Bump mapping Mipmapping Inne efekty
Antialiasing
Mówiąc jak najprościej - jest to efekt wygładzania krawędzi. Spróbujmy jednak
przyjrzeć się bliżej zasadzie działania tej funkcji. Rozpatrzymy ją na dwóch
przykładach. Zaczniemy od najprostszego przykładu, jakim będzie litera. Poniższy
rysunek przedstawia ją z wyłączoną funkcją antialiasingu. Obok ta sama litera w
powiększeniu 500%. Jak widać nie wygląda to za pięknie. Przyjrzyjmy się więc tej
samej literze z włączonym wygładzaniem krawędzi: Problem zostaje rozwiązany
przez dodanie dodatkowych pikseli w przejściu między krawędzią i tłem. Dzięki temu
krawędzie wydają się być pozbawione niemiłych "ząbków" i wyglądają o wiele lepiej.
Anisotropic filtering
Filtrowanie anizotropowe (Anisotropic filtering) jest to najbardziej efektywna forma
filtrowania tekstur. Wyostrza tekstury znajdujące się w dalszej części sceny. Polega
ono na tym, że teksele nie są już symetrycznymi figurami. Mają określony kształt
zależny od perspektywy obrazu i kąta, pod jakim pada teksel. Dzięki temu
zlikwidowany zostaje efekt zniekształcenia kształtów.
Filtrowanie anizotropowe może mieć różne poziomy z różnymi ilościami tekseli branymi
pod uwagę: 1x - 8 tekseli 2x - 16 tekseli 4x - 32 tekseli 8x - 64 tekseli 16x - 128
tekseli Filtrowanie anizotropowe zawsze występuje w duecie z filtrowaniem dwu- lub
trójliniowym. Niestety, choć z filtrowaniem dwuliniowym wydajność jest o wiele
większa, występuje tu ta sama przypadłość, czyli widoczne połączenia między
teksturami.
Filtrowanie trój liniowe jest bardziej popularne i wygląda o wiele lepiej, jednak na
poziomie 16x potrzeba dużo mocy obliczeniowej, aby je obsłużyć.
Bump mapping
Bump mapping (inaczej Multi-Pass Alpha Blended Bump Mapping) jest funkcją, dzięki
której możemy zobaczyć wypukłości na powierzchni tekstur. Daje to złudzenie, że
widziany obraz nie jest złożony z płaskich elementów. Większość ludzi nie zauważa,
że na krawędziach wypukłości tych brakuje. Bump mapping działa na zasadzie
dodania dodatkowej tekstury, określającej wysokość każdego teksela. Światło pada
na powierzchnię obiektu i niektóre miejsca są bardziej, a inne mniej oświetlone.
Widzimy, więc wypukłości. Istnieją różne typy bump mappingu: Emboss Mapping
To najprostsze z możliwych rozwiązań. Działa tak, że tworzona zostaje
monochromatyczna wersja tekstury, która następnie zostaje nałożona na obiekt.
Końcowy efekt wygląda mizernie ze względu na brak uwzględnienia padającego
światła. Ten rodzaj bump mappingu posiada wiele ograniczeń. Dodatkową wadą jest
duże obciążenie procesora. Environment Mapping Najbardziej efektywna metoda
bump mappingu. Wymyślona przez BitBoys Oy i pierwszy raz wprowadzona w kartach
Matrox G400. Polega na tym, że użyte zostają trzy osobne mapy. Pierwsza mapa
(texture map) bazuje na oryginalnych kolorach tekstury. Druga (bump map) jest to
mapa posiadająca zapisane informacje o wysokości każdego teksela. Trzecia mapa
(Environment map) może mieć różne zastosowania. Najczęściej określa padające na
teksturę światło, ale możliwości jest bardzo dużo. Można użyć także przeźroczystości
czy też odbić światła. Możliwe jest także tworzenie dynamicznych map, których
efektem mogą być np. fale na morzu. Ta metoda mappingu jest najbardziej
popularna.
Mipmappi ng polega na użyciu różniących się wielkościowo wersji tej samej tekstury
wraz ze zwiększającą się odległością. Bez tej funkcji obraz wydaje się być bardzo
ostry, ale także niemiły dla oka. Zdaje nam się wtedy, że piksele migotają, co jest
skutkiem tego, że na mały obszar który widzimy na ekranie przypada duża tekstura i
każdy teksel na obszarze może przyjąć dużą ilość kolorów znajdującą się w
określonym miejscu na teksturze. Dlatego także mipmapping jest podstawową
fuknkcją, bez której oglądanie obrazów 3D staje się męczące. Na screenie tym
zaznaczyłem czerwonymi miejscami dwa miejsca, aby lepiej zobrazować na czym
polega mipmapping. Większy obszar pokazuje miejsce, w którym tekstura ma duży
rozmiar. Wraz z oddalającymi częściami ulicy tekstury maleją. Tekstura drugiego
zaznaczonego obrazu powinna być już około 6 razy mniejsza. Różne rozmiary
określane są jako LOD (Level of Detail). Tekstury są pomniejszane zawsze podwójnie,
czyli jeśli tekstura ma 512x512 px to jej mniejsza wersja będzie miała wielkość
256x256 px. Tekstury pomniejszane są aż do wielkości 1x1 px. Tekstury takie można
robić ręcznie, lecz w czasach dzisiejszych zajmuje się tym już procesor graficzny, co
bardzo ułatwia sprawę programistom.
Inne efekty
*3D clipping usuwanie części obiektu, który znajduje się poza sceną.
*Alpha blending technika służąca do obliczania przeźroczystości każdego piksela
znajdującego się na ekranie. Działa na zasadzie przypisania dodatkowej wartości
Alpha każdemu pikselowi tekstury. Wartość ta mieści się w przedziale od 0 do 255
(czyli 8 bitów) przy czym pierwsza wartość oznacza brak widoczności piksela a drugi
pełną jego widoczność.
*Double buffering (podwójne buforowanie) polega na tym, że w buforze tworzony
jest obraz, początkowo niewidoczny, który ma zostać za chwilę wyświetlony. Po
wyświetleniu w buforze ponownie tworzony jest następny obraz.
*Interpolacja obraz zostaje rozciągnięty do odpowiedniej wielkości, przy czym
tworzone są nowe piksele o kolorach tak dobranych, aby przejście pomiędzy pikselami
było jak najbardziej łagodne.
*Shading obiekt dzieli się na wiele trójkątów. Dla każdego trójkąta nadany zostaje
odpowiedni kolor, dzięki temu zakrzywiony obiekt robi wrażenie realistycznego.
*Fog (mgła) pozwala uzyskać efekt mgły, dzięki czemu można zobaczyć bardzo
realistyczne sceny. Często efekt ten używany jest także do odciążenia procesora
graficznego, ponieważ nie musi on wyświetlać obiektów znajdujących się za mgłą, co
jest dużo efektywniejsze.
*HDR (High Dynamic Range) jedna z nowszych funkcji, dzięki której scena posiada
bardzo realistyczne oświetlenie. Efekt końcowy jest bardzo ciekawy.