Graficzny sprinter

Niemal półtora roku po premierze GeForce’a 6800 Ultra (patrz: $(LC103119:Królowie grafiki)$) nVidia pokazała światu swoje najnowsze dziecko: procesor graficzny GeForce 7800 GTX. Po swoim poprzedniku odziedziczył on wszystkie najlepsze cechy dotychczasowej architektury, ale jednocześnie zawiera też w sobie elementy, które stanowią przedsmak tego, co się znajdzie w kolejnej generacji akceleratorów 3D – takich jak np. chip projektowany specjalnie na potrzeby konsoli Sony PlayStation 3. Sami przedstawiciele nVidii stwierdzili, że GeForce’a 7800 GTX można śmiało nazwać pomostem łączącym teraźniejszość z przyszłością. Co zatem kryje się we wnętrzu tajemniczego układu G70?

Mnogość tranzystorów

Przyglądając się nieco dokładniej specyfikacji technicznej GeForce’a 7800 GTX, pierwszą rzeczą, na którą wiele osób zwróci zapewne uwagę, jest ogromna liczba tranzystorów. Wynosi ona aż 302 miliony! To niemal o jedną trzecią więcej niż dla GeForce’a 6800 Ultra (220 mln) i prawie trzy razy tyle co w przypadku Athlona 64 (105,9 mln).

Wzrost liczby tranzystorów spowodowany został zwiększeniem liczby potoków wykonawczych z 16, które miał GeForce 6800 Ultra, do 24. Dodano też dwie jednostki Vertex Shader – mamy teraz ich w układzie osiem. Nie zmieniła się za to liczba jednostek rasteryzujących (ROP – Render Out Pixel). W dalszym ciągu jest ich 16, co sprawia, że nowa kość jest w stanie jednocześnie nałożyć tylko 16, a nie – jak można by było przypuszczać – 24 tekstury.

Architektura modułów Vertex Shader i jednostek rasteryzujących nie uległa większym zmianom, lecz poprawiono ich szybkość działania. Co innego, jeśli chodzi o moduły Pixel Shader. Nie tylko zaprojektowano je od nowa, ale poszerzono też ich funkcjonalność. Do istniejących już w GeForce’ach 6800 koprocesorów stałoprzecinkowych Mini-ALU (ang. Mini-Arithmetic Logic Unit), wspomagających w prostych obliczeniach pracę jednostek cieniujących (ang. shader unit), dodano bufory rejestrów i przełącznik krzyżowy. Dzięki temu działające równolegle potoki wykonawcze mogą na bieżąco dzielić się zadaniami. Podobne rozwiązanie znajdzie się w procesorze graficznym konsoli PlayStation 3. nVidia szacuje, że możliwość swobodnego wymieniania danych pomiędzy potokami wykonawczymi zwiększa wydajność układu o ok. 10% w stosunku do kart poprzedniej generacji.

Modernizacja czy renowacja?

Wraz z przebudową jednostek Pixel Shader i usprawnieniem Vertex Shaderów pojawiło się w GeForce’ach 7800 GTX kilka nowych funkcji. Zmiany te są na tyle istotne, że engine graficzny CineFX otrzymał kolejną, wyższą numerację – tym razem 4.0.

Oczywiście jednostki Pixel i Vertex Shader z G70 zgodne są z procedurami shaderowymi z pakietu Microsoft DirectX 9.0c – Shader Model 3.0. Nie zapomniano też o kompatybilności z bibliotekami graficznymi OpenGL, w tym z OpenGL 2.0. Wprowadzone zostały również modyfikacje mające na celu spełnienie wymagań interfejsu graficznego, który znajdzie się w Longhornie – następcy dzisiejszego Windows XP. Wprowadzono między innymi post-processing sygnału wideo, mechanizmy sprzętowego zarządzania Pulpitem Windows, wygładzania krawędzi czcionek i jednoczesnego wyświetlania odmiennych scen 3D bezpośrednio w kilku otwartych oknach różnych aplikacji.

Aby spełnić te wymagania, konstruktorzy GeForce’a 7800 GTX musieli uwzględnić funkcję powielania obiektów (ang. geometry instancing) o takiej samej lub zbliżonej geometrii. Geometry instancing pozwala z jednego przedmiotu (np. źdźbła trawy) w krótkim czasie utworzyć wiele obiektów (np. cały trawnik lub łąkę) bez potrzeby osobnego generowania każdego z nich. Co prawda powielanie obiektów było już dostępne w GeForsie 6800, ale teraz możliwe jest klonowanie identycznych przedmiotów pomiędzy okienkami różnych aplikacji 3D.

Zarówno w Vertex, jak i Pixel Shaderach, znajdujących się w GF 7800, zniesiono istniejące wcześniej ograniczenie długości programów. Dotychczas liczba przetwarzanych instrukcji wektorowych nie mogła przekroczyć 1024 rozkazów, a kod dla jednostek pikselowych nie mógł być dłuższy niż 65 536 linii. W modułach Pixel Shader dodano do jednostek cieniujących niezbędny do pracy wielowątkowej moduł zarządzający rozgałęzieniami programów. Współpracuje on ściśle z koprocesorem stałoprzecinkowym Mini-ALU. Od nowa zaprojektowano też jednostkę przetwarzającą tekstury. Jest ona teraz w stanie bezpośrednio przetwarzać nie tylko 32- i 64-, ale i 128-bitowe tekstury, w tym wykorzystywane w Longhornie bitmapy zgodne z formatem sRGB, których nie trzeba będzie już przekodowywać.

Więcej:bezcatnews