PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH

Podobne dokumenty
CZYM JEST KARTA GRAFICZNA.

Podsystem graficzny. W skład podsystemu graficznego wchodzą: karta graficzna monitor

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

Karty graficzne możemy podzielić na:

Ogólne informacje. cią pracy, wielkości wyświetlan. cią obrazu, wietlaną rozdzielczości. częstotliwo. wieŝania obrazu.

Plan wykładu. Akcelerator 3D Potok graficzny

Architektura Komputerów

Architektura Komputerów

O grafice i monitorach. R. Robert Gajewski omklnx.il.pw.edu.pl/~rgajewski

Architektura komputerów

Grafika komputerowa i wizualizacja

LEKCJA TEMAT: Zasada działania komputera.

ARCHITEKTURA PROCESORA,

Programowanie procesorów graficznych GPGPU

Budowa komputera Komputer computer computare

Karta graficzna. Karta graficzna przyjmuje. rozszerzeń montowanej w magistrali wejścia/wyjścia na płycie głównej. Opcjonalnie układ graficzny

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

8. MAGISTRALE I GNIAZDA ROZSZERZEŃ. INTERFEJSY ZEWNĘTRZNE.

i3: internet - infrastruktury - innowacje

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Karty graficzne. Dla DSI II

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza dźwięku i obrazu

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Organizacja pamięci w procesorach graficznych

Przegląd architektury PlayStation 3

Karty graficzne: budowa, zasada działania, standardy, parametry, dodatkowe funkcje

Tesla. Architektura Fermi

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

MAGISTRALE ZEWNĘTRZNE, gniazda kart rozszerzeń, w istotnym stopniu wpływają na

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Sprawdzian test egzaminacyjny GRUPA I

Podstawy Informatyki Systemy sterowane przepływem argumentów

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Przyspieszanie sprzętowe

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Karta przedmiotu. Podstawy programowania procesorów graficznych. realizowanego w ramach projektu PO WER

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura systemów komputerowych Ćwiczenie 3

Architektura mikroprocesorów TEO 2009/2010

OpenGL - Open Graphics Library. Programowanie grafiki komputerowej. OpenGL 3.0. OpenGL - Architektura (1)

Wprowadzenie. Karty graficzne możemy podzielić na:

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Elementy składowe karty graficznej

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Nowinki technologiczne procesorów

Architektura Procesorów Graficznych

Architektura komputerów

Budowa Mikrokomputera

System mikroprocesorowy i peryferia. Dariusz Chaberski

Większośćkart graficznych (i wszystkie współczesne) składająsięz następujących elementów:

Podzespoły Systemu Komputerowego:

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Jednostka centralna. Miejsca na napędy 5,25 :CD-ROM, DVD. Miejsca na napędy 3,5 : stacja dyskietek

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura komputerów

16. Taksonomia Flynn'a.

Podstawy grafiki komputerowej

Wykład II. Reprezentacja danych w technice cyfrowej. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

Urządzenia zewnętrzne

Karty Graficzne. Urządzenia Techniki Komputerowej Pudełko

Nowoczesne technologie przetwarzania informacji

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Architektura systemów komputerowych. dr Artur Bartoszewski

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Zaawansowane systemy programowania grafiki. Wprowadzenie. Podstawy OpenGL

Budowa i zasada działania komputera. dr Artur Bartoszewski

Architektura komputera. Cezary Bolek. Uniwersytet Łódzki. Wydział Zarządzania. Katedra Informatyki. System komputerowy

Teoria przetwarzania A/C i C/A.

Organizacja typowego mikroprocesora

1.2 Schemat blokowy oraz opis sygnałów wejściowych i wyjściowych

Publiczne Technikum Informatyczne Computer College w Koszalinie

Programowanie Mikrokontrolerów

Procesory. Schemat budowy procesora

Magistrala. Magistrala (ang. Bus) służy do przekazywania danych, adresów czy instrukcji sterujących w różne miejsca systemu komputerowego.

Architektura komputerów

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

Architektura Komputerów

Programowanie Procesorów Graficznych

Metody optymalizacji soft-procesorów NIOS

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Chipset i magistrala Chipset Mostek północny (ang. Northbridge) Mostek południowy (ang. Southbridge) -

Architektura komputerów

Wykład 4. Rendering (1) Informacje podstawowe

CZĘŚĆ I ZAMÓWIENIA DOSTAWA SPRZĘTU INFORMATYCZNEGO DO PROJEKTU DOMOWY ASYSTENT OSÓB STARSZYCH I CHORYCH

WPROWADZENIE Mikrosterownik mikrokontrolery

Technika mikroprocesorowa. Konsola do gier

Magistrala systemowa (System Bus)

Architektura komputerów. Układy wejścia-wyjścia komputera

Architektura systemów komputerowych. dr Artur Bartoszewski

Pośredniczy we współpracy pomiędzy procesorem a urządzeniem we/wy. W szczególności do jego zadań należy:

Architektura systemów informatycznych

Transkrypt:

PROJEKTOWANIE SYSTEMÓW KOMPUTEROWYCH WYKŁAD NR 6 KARTY GRAFICZNE I PROCESORY GRAFICZNE dr Artur Woike

Historia rozwoju kart graficznych

IBM MDA Standard MDA (Monochrome Display Adapter) powstał w 1981 r. Jest to monochromatyczny sterownik graficzny stosowany w oryginalnych komputerach IBM PC. Wykorzystywał dwa kolory: czarny i biały (w rzeczywistości jasnozielony). Umożliwiał pracę wyłącznie w trybie tekstowym (25 wierszy, 80 znaków). Teoretyczna obsługiwana rozdzielczość ekranu wynosiła 720x350 pikseli. Pojedynczy znak miał wysokość i szerokość odpowiednio 14 i 9 pikseli.

IBM MDA Posiadał 4 kb pamięci wideo oraz niewielką pamięć ROM przechowującą zestaw znaków strony kodowej CP437.

Oryginalne karty IBM MDA posiadały również złącze przeznaczone dla drukarki (IBM MDPA, Monochrome Display and Printer Adapter).

IBM CGA Standard CGA (Color Graphics Adapter) również powstał w 1981 r. Umożliwiał dwa tryby graficzne wyświetlania obrazu: rozdzielczość 320x200 pikseli, 4 kolory z palety 16 kolorów; rozdzielczość 640x400 pikseli, 2 kolory. Umożliwiał dwa tryby tekstowe wyświetlania obrazu: 25 wierszy, 40 znaków, 16 kolorów; 25 wierszy, 80 znaków, 16 kolorów. W trybie tekstowym pojedynczy znak miał rozmiar 8x8 pikseli. 16 kb pamięci wideo oraz pamięć ROM przechowująca zestaw znaków strony kodowej CP437.

W trybie graficznym oficjalnie dostępne były tylko dwie różne 4-kolorowe palety. W trybie tekstowym dla tła dostępne było 8 kolorów oraz efekt migania.

W trybie tekstowym dla oryginalnych kart IBM CGA dostępne były dwie grubości czcionki przełączane za pomocą sprzętowej zworki.

Hercules Karty HCG (Hercules Graphics Card) pojawiły się na rynku w 1982 r. Hercules umożliwiał wykorzystanie takich samych trybów tekstowych jak karty IBM MDA. W trybie tekstowym pojedynczy znak miał wysokość i szerokość odpowiednio 14 i 9 pikseli (symbol znaku zajmował szerokość tylko 7 pikseli). Karty HCG umożliwiały dodatkowo wyświetlanie 2-kolorowego obrazu w rozdzielczości 720x350 (dokładnie 720x348) pikseli.

Karty HCG udostępniały dwie różne przestrzenie adresowe pamięci wideo. Często były wykorzystywane jako dodatkowa karta graficzna do obsługi drugiego monitora.

IBM EGA Standard EGA (Enhanced Graphics Adapter) powstał w 1984 r. Wprowadzono obsługę nowych trybów graficznych: rozdzielczość 640x350, 16 kolorów z palety 64 kolorów. rozdzielczość 720x350, 2 kolory. Ulepszono dostępne tryby tekstowe i graficzne: Programowalne generatory znaków; Możliwość zmiany rozmiaru znaków; Konfigurowalne tryby pracy. Od 64 do 256 kb pamięci wideo oraz pamięć 16 kb pamięci ROM przechowującej BIOS karty EGA.

VGA Standard VGA (Video Graphics Array) powstał w 1987 r. VGA jest zgodny z MDA, CGA i EGA. Standardowy tryb tekstowy umożliwia wyświetlenie 25 wierszy i 80 znaków: Pojedynczy znak ma rozmiar 9x16 pikseli; 16 (lub 2 dla zgodności z IBM MDA) kolorów. Dodatkowy tryb tekstowy 50 wierszy 80 znaków o rozmiarze 8x8 pikseli.

Dla kart VGA dostępna jest paleta 262144 kolorów. Standardowe tryby graficzne VGA: Rozdzielczość 320x200 pikseli, 256 kolorów z palety; Rozdzielczość 640x480 pikseli, 16 kolorów z palety. Karta VGA generowała analogowy sygnał wideo. 256 kb pamięci wideo.

Złącze VGA (DE-15, D-SUB) Złącze BNC (Bayonet Neill-Concelman)

SVGA Nie ma jednolitego standardu SVGA (Super VGA). Producenci kart graficznych niezależnie od siebie zaczęli wprowadzać modyfikacje: Większa ilość pamięci (co najmniej 512 kb); Nowe tryby graficzne (800x600, 1024x768, 1280x1024). Większe palety kolorów (16 i 32 bitowe palety kolorów). Powstaje konsorcjum VESA (Video Electronics Standards Association) w celu opracowania norm standaryzacyjnych: Numeracja rozszerzonych trybów graficznych; Jednolite rozszerzenie funkcji BIOS-u kart graficznych; Parametry monitorów współpracujących z kartami SVGA.

Zasada działania kart graficznych 2D

Budowa kart graficznej 2D Podstawowe elementy funkcjonalne karty graficznej 2D: Układ sekwencyjny odpowiada za generowanie sygnału zegarowego, przesyłanie danych pomiędzy modułami funkcjonalnymi karty oraz za odwołania do obsługiwanego zbioru znaków. Układ graficzny odpowiada za przekazywanie danych pomiędzy pamięcią obrazu a procesorem i układem sterowania atrybutem. Układ sterowania atrybutem odpowiada za zamianę kolorów zapisanych w pamięci obrazu na indeksy kolorów przechowywane w pamięci wzorców kolorów.

Układ sekwencyjny odpowiada za generowanie sygnału zegarowego, przesyłanie danych pomiędzy modułami funkcjonalnymi karty oraz za odwołania do obsługiwanego zbioru znaków. Układ graficzny odpowiada za przekazywanie danych pomiędzy pamięcią obrazu a procesorem i układem sterowania atrybutem. Układ sterowania atrybutem odpowiada za zamianę kolorów zapisanych w pamięci obrazu na indeksy kolorów przechowywane w pamięci wzorców kolorów. Układ sterowania wyświetlaczem odpowiada za wyświetlanie obrazu oraz kursora. Przetwornik cyfrowo-analogowy (karty VGA i SVGA) odpowiada za konwersję sygnału cyfrowego na sygnał analogowy przesyłany do monitora. Programowalne rejestry sterujące.

Procesor widzi kartę graficzną jako układ złożony ze zbioru portów I/O oraz obszaru pamięci obrazu. Obszar pamięci obrazu jest odwzorowany bezpośrednio w przestrzeni adresowej CPU. Programowanie karty graficznej 2D sprowadza się do zapisu oraz odczytu do i z pamięci obrazu oraz portów I/O.

Tryby tekstowe Pamięć obrazu ma taką samą organizację dla kart MDA, CGA, EGA, VGA i SVGA: Każdy znak jest reprezentowany przez dwa bajty. Pierwszy bajt przechowuje kod ASCII znaku. Drugi bajt określa atrybut znaku. Znak w lewym górnym rogu ekranu znajduje się w zerowym wierszu i zerowej kolumnie. Karta graficzna zawiera standardowe zestawy obsługiwanych znaków zapisane w pamięci stałej. Karty EGA, VGA i SVGA umożliwiają zmianę adresu obszaru pamięci przechowującej standardowe znaki.

Tryby graficzne We wszystkich trybach graficznych kolejne komórki pamięci obrazu odpowiadają kolejnym punktom obrazu: 2 kolory 1 bit na 1 punkt; 4 kolory 2 bity na 1 punkt; 16 kolorów 4 bity na 1 punkt; 256 kolorów 8 bitów na 1 punkt. Punkty obrazu są odczytywane od lewej do prawej i od góry do dołu. Karty SVGA dostarczają również trybów 16 i 32 bitowych.

Pamięć obrazu kart CGA Standardowo 128 kb pamięci obrazu oraz przestrzeni adresowej CPU. Spakowana (Packed) metoda odwzorowania pamięci: Każdemu punktowi na ekranie odpowiada fragment bajtu (pole) zawierający numer koloru tego punktu. Pole odpowiadające pojedynczemu punktowi to 1, 2, 4 lub 8 bitów (2, 4, 16 lub 256 kolorów).

Pamięć obrazu kart EGA i VGA Standardowo 256 kb pamięci obrazu. Płatowa (Planar) metoda odwzorowania pamięci: Pamięć obrazu jest podzielona na 4 płaty (bloki) po 64 kb. Każdemu punktowi na ekranie odpowiada jedno pole w każdym bloku pamięci obrazu. 256 kb pamięci obrazu wymaga tylko 64 kb przestrzeni adresowej CPU.

Pamięć obrazu kart SVGA Standardowo co najmniej 512 kb pamięci obrazu. Stronicowana (Paged) metoda odwzorowania pamięci: Różne fragmenty pamięci obrazu (strony lub banki) są kojarzone z niewielkim obszarem (oknem) w przestrzeni adresowej CPU. Rozmiar banku i okna wynosi zazwyczaj 64 kb. Dostęp do różnych obszarów pamięci obrazu wymaga zmiany zawartości odpowiedniego rejestru sterującego wyborem banku. Kolejne banki mogą mieć część wspólną. W obrębie banku odwzorowanie pamięci obrazu w przestrzeni adresowej CPU jest takie same jak dla kart VGA.

Trzy sposoby stronicowania pamięci obrazu: Pojedyncze okno; Dwa nakładające się okna; Dwa nie nakładające się okna.

Rozdzielczości obrazu Monitory analogowe: Istotne są jedynie parametry geometryczne rozdzielczości (liczba pikseli w poziomie i pionie). Liczba odtwarzanych kolorów nie jest ograniczona. Monitory ciekłokrystaliczne: Rozdzielczość wynika z fizycznej konstrukcji matrycy. Złącza cyfrowe: Ograniczona jest liczba możliwych do wyświetlenia kolorów. Informacja o kolorze jest kodowana za pomocą ograniczonej liczby bitów.

Standardowe tryby rozdzielczości kart SVGA: Skrót Rozdzielczość Pełna nazwa QVGA 320x240 Quarter VGA VGA 640x480 Video Graphics Array SVGA 800x600 Super VGA XGA 1024x768 extended Graphics Array HDTV 720p 1280x720 High-Definition TV 720p HDTV 1366x768 High-Definition TV SXGA 1280x1024 Super XGA WSXGA+ 1680x1050 Widescreen Super XGA UXGA 1600x1200 Ultra XGA HDTV 1080p 1920x1080 High-Definition TV 1080p QXGA 2048x1536 Quad XGA

Standard VESA Standard VESA (od 1989 r.) posiada kilka rewizji i dotyczy: Parametrów technicznych monitorów przeznaczonych do współpracy z kartami SVGA; Numeracji i rozdzielczości trybów znakowych i graficznych; Interfejsu programowego (czyli dodatkowych funkcji BIOS-u) kart SVGA; Magistrali lokalnej (VESA Local Bus) przeznaczonej dla kart SVGA. Każda kolejna rewizja rozszerza poprzednią. Początkowo ustandaryzowano tylko jeden tryb rozszerzony (rozdzielczość 800x600 pikseli, 16 kolorów).

Historia rozwoju procesorów graficznych

Akceleratory grafiki 3D W połowie lat 90-tych XX w. karty graficzne zaczęto wyposażać w obsługę sprzętową funkcji przyspieszających generowanie grafiki 3D. Pierwsze karty graficzne powszechnie uważane za akceleratory 3D pojawiły się w 1995 r. Początkowo wydajność połączonych akceleratorów 2D/3D była niezbyt duża. W 1996 r. pojawiły się pierwsze akceleratory 3D firmy 3Dfx Interactive (początek serii kart Voodoo). Samodzielne akceleratory grafiki 3D wymagały do działania połączenia z tradycyjną kartą graficzną 2D.

Zazwyczaj pierwsze akceleratory wyposażano w funkcje takie jak: Rasteryzacja (zamiana trójkątów na piksele); Mapowanie tekstur (nakładanie tekstur na trójkąty); Cieniowanie pikseli (nakładanie na piksele dodatkowych wzorów, mieszanie kolorów). Około 2000 r. akceleratory 2D/3D miały już zaimplementowane sprzętowo większość funkcji dostępnych do tej pory wyłącznie dla wysoko wyspecjalizowanych graficznych stacji roboczych. W 1998 r. 3Dfx wprowadza tryb SLI (Scan Line Interleave). W 1999 r. Ati wprowadza tryb AFR (Alternate Frame Rendering).

S3 Virge 3D (od 1995 r.)

ATi Rage 3D (od 1995 r.)

nvidia NV1 (od 1995 r.)

3Dfx Voodoo (od 1996 r.)

Procesory graficzne W 1999 r. nvidia wprowadza na rynek kartę GeForce 256 (NV10). NV10 został wyposażony w obsługę funkcji wykonywanych dotychczas przez CPU: Sprzętowa obsługa T&L (Transform and Lightning); Sprzętowe wspomaganie dekodowania MPEG-2. nvidia pierwsza wprowadziła termin GPU (Graphics Processing Unit). Wyspecjalizowane GPU NV10 w swoich typowych zastosowaniach było znacznie szybsze od CPU.

GeForce 256 (od 1999 r.)

Radeon 7500 (od 2000 r.)

Programowalne GPU GPU z biegiem czasu stają się coraz bardziej programowalne: Programowalne procesory graficzne zastępują dotychczasowe układy logiczne o ustalonych funkcjach; Zachowanie podstawowego potoku przetwarzania grafiki 3D; Obliczenia stają się coraz dokładniejsze (przejście od tablic kolorów kolejno do obliczeń na liczbach całkowitych, a następnie rzeczywistych liczbach stałoprzecinkowych i zmiennoprzecinkowych o rosnącej precyzji); W 2001 r. pojawiają się pierwsze GPU wyposażone w programowalne jednostki Pixel Shader i Vertex Shader.

GeForce 3 (od 2001 r.)

Radeon 8500 (od 2001 r.)

Uniwersalne jednostki cieniujące Kolejnym krokiem w rozwoju programowalnych GPU jest wprowadzenie tak zwanych uniwersalnych jednostek cieniujących. Wraz z pojawieniem się API Direct3D 10 wprowadzono trzeci typ jednostek cieniujących (Geometry Shader). Jednocześnie zrezygnowano ze sztywnego podziału jednostek cieniujących na konkretne typy. Pojawiają się pierwsze języki programowania przeznaczone dla uniwersalnych jednostek cieniujących.

GeForce 8 (od 2006 r.)

Radeon HD 2900 (od 2007 r.)

Ewolucja GPU Obecnie GPU ewoluowały od stosunkowo prostych układów o ustalonych funkcjach do postaci programowalnych zrównoleglonych procesorów. Podstawą konstrukcji współczesnych GPU jest koncepcja skalowalności (SPP, Scalable Parallel Processor). CPU i GPU tworzą wspólnie niejednorodny układ wieloprocesorowy. GPU obecnie mogą już być wykorzystywane do wykonywania obliczeń z pominięciem tradycyjnych API przeznaczonych dla grafiki 3D.

Zasada działania akceleratorów 3D

Podstawowe cechy GPU GPU są koprocesorami wspierającymi CPU. Zazwyczaj GPU operują na danych rzędu od kilkuset MB do kilku GB. GPU nie polegają na złożonych podsystemach pamięci cache. GPU do optymalizacji wydajności wykorzystują sprzętową obsługę wielowątkowości. Podukłady pamięci GPU są optymalizowane w kierunku maksymalnej przepustowości. Zazwyczaj GPU obsługują jednocześnie o wiele większe ilości wątków niż CPU.

CPU vs GPU Początkowo CPU miało istotny udział w przetwarzaniu grafiki. Z tego powodu istniejące mikroarchitektury procesorów zaczęto wyposażać w obsługę instrukcji SIMD (Single Instruction Multiple Data) Zarówno CPU jak i GPU mogą być traktowane jako procesory wielordzeniowe typu MIMD (Multiple Instructions Multiple Data) o wielopotokowych rdzeniach typu SIMD.

Wielordzeniowy CPU z SIMD GPU Rdzenie SIMD 4 8 8 16 Potoki SIMD/rdzeń 2 4 8 16 Sprzętowe wsparcie dla wielowątkowości SIMD (liczba wątków) Rozmiar najwyższego poziomu pamięci cache 2 4 16 32 8 MB 0.75 MB Rozmiar przestrzeni adresowej 64 bity 64 bity Rozmiar pamięci głównej do 256 GB do 6 GB

Schemat połączenia z GPU

Oddzielne jednostki GPU i CPU posiadające własne odrębne podsystemy pamięci. GPU jest połączone z resztą systemu za pomocą 16- liniowego łącza PCI-Express. GPU i CPU mają wzajemny dostęp do swoich podsystemów pamięci. Systemy UMA (Unified Memory Architecture) są nisko kosztową wersją nie posiadającą podsystemu pamięci GPU. Systemy ze zintegrowanymi GPU posiadają układy graficzne wbudowane w układ otoczenia procesora lub bezpośrednio w procesor. Systemy wysoko wydajne używają wielu GPU pracujących w sposób równoległy. Aplikacje graficzne wywołują funkcje API (zazwyczaj Direct3D lub OpenGL), które wykorzystują GPU w roli koprocesora.

Organizacja potoku graficznego Etapy potoku graficznego dzielimy na dwa typy: O stałej funkcji; Programowalne. Programowalne etapy potoku graficznego: Vertex Shader; Geometry Shader; Pixel Shader;

Vertex Shader: Działa na własnościach wierzchołków (np. położenie, kolor, tekstura). Nie tworzy nowych wierzchołków. Geometry Shader: Modyfikacje siatki wierzchołków (dodawanie, usuwanie). Tworzenie nowych obiektów geometrycznych. Tesselacja. Rasteryzacja: Proces zamiany figur i brył geometrycznych na postać rastrową (czyli piksele) możliwą do odwzorowania na urządzeniu rastrowym. Pixel Shader: Odpowiada za ostateczne wyliczenie koloru pikseli.

Schemat GPU (ATI R420)

CPU poprzez interfejs przesyła do GPU żądanie wyświetlenia na ekranie grupy obiektów 3D. Sygnał (dane i polecenia) trafiają na magistralę danych GPU. Niewidoczne części obiektów 3D są przekazywane do wyspecjalizowanej jednostki Hyper Z. Pozostałe części obiektów 3D trafiają do silnika geometrycznego (Vertex Engine). Po wstępnej obróbce dane trafiają do silnika ustawień (Setup Engine). Niewidoczne części przetwarzanych obiektów 3D są przekazywane do jednostki Hyper Z. Pozostałe części przetwarzanych obiektów trafiają do silnika renderowania 3D (3D Rendering Engine). Ponownie niewidoczne części przetwarzanych obiektów 3D są przekazywane do jednostki Hyper Z. Na koniec pozostałe części obiektów 3D trafiają do układów zajmujących się ich ostateczną obróbką (Smoothvision HD). Po zakończeniu obróbki przetworzone obiekty trafiają do interfejsu graficznego, który na ich podstawie generuje obraz i przesyła go do urządzenia wyświetlającego.

Architektura zunifikowanego GPU Zunifikowane GPU bazują na dużej liczbie programowalnych procesorów ułożonych w postaci równoległej tablicy. Procesory zunifikowanych GPU są zbudowane w oparciu o zunifikowane jednostki cieniujące (Unified Shaders) wykorzystujące przetwarzanie równoległe. Tablica programowalnych procesorów jest ściśle zintegrowana z dodatkowymi procesorami o stałych funkcjach (np. rasteryzacja, filtrowanie tekstur).

Schemat zunifikowanego GPU (NV Tesla)

Jednostka Host Interface komunikuje się z głównym CPU poprzez szynę PCI-Express (między innym otrzymuje i weryfikuje instrukcje i dane). Jednostka Input Assembler zbiera podstawowe jednostki geometryczne (punkty, proste i trójkąty). Bloki Work Distribution rozdzielają wierzchołki, piksele i tablice wątków obliczeniowych do poszczególnych klastrów TPC. Klastry TPC wykonują przydzielone programy cieniowania wierzchołków, geometrii oraz tablice wątków obliczeniowych. Wyjściowe dane geometryczne są przekazywane do jednostki rasteryzującej.

Po rasteryzacji bloki Work Distribution ponownie kierują piksele do tablicy SPA. Tablica SPA wykonuje przydzielone programy cieniowania pikseli. Ocieniowane piksele są przesyłane poprzez wewnętrzną magistralę Interconnection Network do przetworzenia przez jednostki ROP (Raster Operations Processor). Magistrala IN zajmuje się również przekazywaniem żądań odczytu pamięci tekstur z tablicy SPA do pamięci DRAM oraz odczytuje dane z pamięci DRAM poprzez pamięć podręczną L2 do tablicy SPA. Ostatecznie przetworzone dane trafiają poprzez układ interfejsu do urządzeń wyświetlających.

128 procesorów strumieniowych (Streaming Processor, SP). SP są zorganizowane w 16 multiprocesorów strumieniowych (Streaming Multiprocessor, SM). Każdy procesor SM zawiera również współdzielone dwie jednostki specjalne (Special Function Unit, SFU) oraz podukład pamięci podręcznej. SM są zorganizowane w 8 klastrów TPC (Texture/Procesor Cluster). W ramach jednego klastra TPC procesory SM dzielą jednostki kontrolne i teksturujące. 8 klastrów TPC tworzy macierz strumieniowych procesorów (Streaming Processor Array, SPA).

Core i7-960 vs NVIDIA GTX 280/480

Pamięć lokalna akceleratora Obsługa trybów tekstowych i graficznych 2D wymaga niewielkiej ilości pamięci. Współczesne karty graficzne są przede wszystkim akceleratorami 3D. Akceleratory 3D dodatkowo obsługują elementarne funkcje graficzne odziedziczone po kartach VGA i SVGA. Pamięć lokalną akceleratora ze względu na funkcjonalność można podzielić na trzy obszary: Pamięć obrazowa (Frame Buffer); Bufor Z/W; Pamięć tekstur.

Frame Buffer Przechowuje składowe kolorowe wszystkich pikseli wyświetlanego obrazu. Podlega jednoczesnemu odczytowi i zapisowi. Aby usprawnić procesy dostępu do pamięci obrazu wprowadzono podwójne buforowanie (Double Buffering). Kontroler graficzny ma do dyspozycji dwa identyczne bufory pamięci: Back Buffer jest wypełniany nową treścią; Front Buffer jest przekazywany do wyświetlenia.

Jeśli moment przełączania buforów nie nastąpi podczas pionowego impulsu synchronizującego, to obraz zostanie przedzielony poziomą linią (Screen Tearing). Wymuszenie w trybie 3D synchronizacji pionowej może obniżyć rzeczywistą częstotliwość odtwarzania obrazu i wprowadzić tzw. Input Lag. Wykorzystanie potrójnego buforowania (Triple Buffering) eliminuje powyższy problem za cenę większego zużycia pamięci akceleratora. Nie zawsze można wykorzystać Triple Buffering. Potrójne buforowanie tylko częściowo eliminuje problem Input Lag.

Bufor Z/W Położenie punktu w przestrzeni trójwymiarowej jednoznacznie określa trójka współrzędnych (x,y,z). Oś Z przebiega w kierunku od płaszczyzny ekranu w głąb sceny 3D. Cały proces przetwarzania dotyczy płaszczyzny ekranu (z=0) adresowanej parą współrzędnych (x,y). Ponieważ obiekty 3D są rzutowane na ekran, więc mogą się wzajemnie przesłaniać. Zjawisko to sprowadza się do przesłaniania pojedynczych pikseli obrazu

Na ekranie chcemy wykreślać tylko widoczne punkty obiektów 3D. O widoczności punktu decyduje współrzędna z. Bufor Z jest dwuwymiarową tablicą Z[x,y]. Na początku elementy tablicy przyjmują wartość odpowiadającą nieskończoności. Podczas rozpatrywania kolejnych elementarnych trójkątów porównuje się współrzędne z aktualnie obliczanych pikseli z informacją przechowywaną w tablicy Z[x,y]. Jeśli z<z[x,y] to punkt jest widoczny: Zaznaczamy go w tablicy Z[x,y]:=z; Jego składowe RGB po obliczeniu trafiają do pamięci obrazowej.

Analizę widoczności przeprowadza się na poziomie pojedynczych punktów obrazu. Analiza widoczności funkcjonuje bezbłędnie jedynie przy założeniu zastosowania arytmetyki dokładnej. Stosowanie arytmetyki niedokładnej (stało lub zmiennoprzecinkowej) może nie gwarantować odróżnienia obiektów blisko położonych. Na skutek perspektywy rozkład wartości zmiennej z w buforze Z nie jest liniowy. Zmienną z można zastąpić zmienną w o rozkładzie liniowym (mówimy wtedy o buforze W). Korzystanie z bufora Z/W mocno obciąża pamięć lokalną akceleratora 3D.

Pamięć tekstur Lokalna pamięć tekstur jest przeznaczona do przechowywania map bitowych (tekstur). Podczas przetwarzania grafiki 3D występują duże ilości cykli odczytu z pamięci tekstur. Większość funkcji zwiększających wydajność GPU lub poprawiających jakość generowanej grafiki 3D generuje dodatkowe obciążenie pamięci tekstur. Optymalizacja pamięci tekstur: Odpowiednie rozlokowanie tekstur w pamięci; Lokalna pamięć podręczna; Zmiana sposobu kodowania danych; Większa szerokość lokalnej magistrali pamięci; Kompresja tekstur.

Kompresja tekstur S3TC Podstawowy algorytm kompresji: Tekstura jest dzielona na bloki o rozmiarach 4x4 tekseli. Każdy blok jest przetwarzany oddzielnie. W ramach bloku analizowane są wszystkie teksele w celu wyboru dwóch dominujących kolorów bazowych. Na podstawie wybranych kolorów bazowych tworzona jest paleta czterech kolorów (2 bazowe + 2 pośrednie). Każdy kolor ma określony dwubitowy indeks w palecie. Kolory pośrednie są generowane automatycznie podczas dekodowania. Kodowany blok rozmiaru 4x4 teksele jest zamieniany na tablicę dwubitowych indeksów o wymiarze 4x4. W podstawowej wersji kodowania potrzeba średnio 4 bity danych na 1 teksel tekstury.

Układ RAMDAC Układ RAMDAC (Random Access Memory - Digital/Analog Converter) przetwarza zakodowany cyfrowo obraz do analogowych sygnałów RGB. RAMDAC jest zbudowany z trzech niezależnych przetworników (po jednym dla każdego koloru RGB) i niewielkiej pamięci SRAM. Współczesne karty graficzne posiadają układy RAMDAC o częstotliwości taktowania 400MHz. Prawdopodobnie układy te w dotychczasowej formie znikną z kart graficznych.

Schemat przetwarzania grafiki 3D Dowolnie skomplikowana bryła da się zawsze przedstawić w postaci trójkątów. Trójkąt jest reprezentowany poprzez wierzchołki. Każdy wierzchołek jest reprezentowany poprzez trójkę współrzędnych (x,y,z). Operacje na trójkątach sprowadzają się do operacji na macierzach. Operacje na macierzach po przełożeniu na język maszynowy są bardzo czasochłonne. Obiekty 3D są przetwarzane w procesie przekształceń nazywanym potokiem przetwarzania 3D.

Użytkownik Aplikacja API Geometry Engine Rendering Engine Frame Buffer RAMDAC Monitor Aplikacja narzuca ogólną koncepcję sceny 3D. Scena może być modelowana w odpowiedzi na zachowanie użytkownika aplikacji. API zajmuje się przełożeniem opisu sceny 3D na język niższego poziomu. Procesor geometryczny (Geometry Engine): Rozmieszcza obiekty geometryczne na ekranie; Zarządza aktualnym położeniem i rozmiarem obiektów; Dzieli obiekty złożone na trójkąty elementarne. Przekazuje trójkąty elementarne do procesora rasteryzującego.

Procesor rasteryzujący (Raster Engine): Przetwarza trójkąty elementarne na poziomie poszczególnych puntów; Przekazuje obliczone punkty (piksele) obrazu do pamięci obrazowej. Pamięć obrazowa (Frame Buffer) przechowuje parametry koloru wszystkich punktów obrazu przeznaczonego do wyświetlenia. Układ RAMDAC odczytuje informacje o kolejnych punktach obrazu z pamięci obrazowej i przekazuje do wyświetlenia przez monitor.

API graficzne Aplikacje przetwarzające obiekty 3D zazwyczaj odwołują się do funkcji sprzętowych akceleratorów poprzez gotowe zestawy pewnych funkcji. Biblioteka złożona ze zbioru takich funkcji i definicji formatów danych jest nazywana interfejsem API (Application Programming Interface). API pośredniczy pomiędzy warstwą programową i sprzętową. Producenci kart graficznych wposażają swoje akceleratory w odpowiednie biblioteki w postaci sterowników.

Niektóre API graficzne: OpenGL: Powstała na podstawie biblioteki GL (Graphics Library) przeznaczonej dla potrzeb profesjonalnych stacji graficznych firmy Silicon Graphics International. Jest interfejsem niskopoziomowym. Działa w architekturze klient-serwer. Najnowsza wersja to OpenGL 4.5. Direct3D: Część biblioteki Microsoft DirectX początkowo przeznaczona do renderowania grafiki 3D. Od wersji 8 przeznaczona również do renderowania grafiki 2D. Najnowsza wersja 12 jest wspierana wyłącznie przez system Microsoft Windows 10.

Mantle: Zaprojektowane przez AMD w celu poprawy wydajności przetwarzania grafiki 3D w sytuacjach gdy CPU jest czynnikiem ograniczającym. Rozwój Mantle został wstrzymany. Vulkan: Powstał na bazie API Mantle. Ma łączyć zalety różnych API graficznych. Rozwijany przez Khronos Group. Jest dostępny na różne systemy operacyjne.

Procesor geometryczny Znaczną część potoku przetwarzania grafiki 3D stanowią operacje geometryczne. Procesor geometryczny (Geometry Engine) zajmuje się pięcioma podstawowymi rodzajami operacji: Tłumaczenie opisu środowiska opis sceny 3D podany jest w języku wysokiego poziomu i musi zostać przeanalizowany a następnie przetworzony na trójkąty elementarne. Oświetlenie i tekstura każdemu trójkątowi elementarnemu przypisuje się pewną teksturę oraz kierunek i typ oświetlenia.

Przekształcenia geometryczne przesunięcia, obroty i zmiany rozmiaru obiektów sceny realizowane za pomocą obliczeń wektorowych i macierzowych. Strefa widoczności w wyniku przekształceń sceny niektóre trójkąty mogą się znaleźć w całości lub częściowo poza polem widzenia obserwatora i muszą być odpowiednio pominięte lub obcięte. Przekazanie parametrów do jednostki rasteryzującej po przetworzeniu scenę 3D należy zrzutować na płaszczyznę 2D przy uwzględnieniu perspektywy i docelowego rozmiaru ekranu, a następnie przekazać obraz do procesora rasteryzującego.

Procesor rasteryzujący Rasteryzacja polega na obliczeniu ostatecznego koloru dla każdego punktu wewnętrznego przetwarzanych trójkątów elementarnych. Przed ustaleniem końcowego koloru punkt przechodzi przez wiele etapów pośrednich (np. teksturowanie, nakładanie różnych efektów specjalnych, oświetlenie). Po przejściu wszystkich etapów do pamięci obrazowej zapisywany jest pojedynczy punkt. Po skompletowaniu wszystkich pikseli w pamięci obrazowej następuje wyświetlenie obrazu.

Każdy trójkąt elementarny jest przekazywany do procesora rasteryzującego w postaci trzech zestawów parametrów (po jednym dla każdego wierzchołka): Współrzędnie położenia wierzchołka; Współrzędne tekstury pokrywającej trójkąt; Składowe RGB koloru wierzchołka; Informacja o stopniu przezroczystości; Parametr korekcyjny skrótu perspektywicznego. Na każdym etapie obowiązuje następująca zasada: Im bardziej skomplikowany model matematyczny, tym lepsze rezultaty końcowe. Jednym z najważniejszych etapów są obliczenia związane z generowaniem oświetlenia (ponieważ widzimy tylko obiekty oświetlone).

Teksturowanie Do niedawna mapowanie za pomocą tekstur w czasie rzeczywistym ze względu na dużą ilość obliczeń było dostępne jedynie dla wyspecjalizowanych stacji roboczych. Tekstura jest zwykłą mapą bitową nakładaną na wybrane miejsca obiektu 3D. Tekstury są obiektami płaskimi. Pojedyncze punkty tekstury nazywamy tekselami. Teksele i piksele mogą mieć różne rozmiary. Podczas nakładania tekstur na obiekty 3D często trzeba stosować różnego rodzaju aproksymacje. Współczesne akceleratory 3D potrafią wielokrotnie nakładać tekstury i w ten sposób uzyskiwać różne efekty specjalne.

Korekcja perspektywy Korekcja perspektywy wynika z rzutowania przetwarzanej sceny 3D na płaszczyznę ekranu. Perspektywa działa na geometrię obiektów oraz zakłóca proces ich mapowania. Prostokątna tekstura musi zostać odpowiednio zniekształcona przed nałożeniem na obiekt 3D.

Wybrane funkcje akceleratorów 3D

Chłodzenie DHES Chłodzenie w układzie DHES (Direct Heat Exhaust System) jest zaprojektowanie w celu usuwania na zewnątrz obudowy gorącego powietrza powstającego w procesie chłodzenia GPU. Chłodzenie w układzie DHES na ogół wymaga odpowiedniego dopływu powietrza do wnętrza obudowy.

Antialiasing Antialiasing polega na stosowaniu filtrów redukujących efekt schodkowy powstający na zewnętrznych krawędziach obiektów 3D. Algorytmy antialiasingu wymagają dużej liczby obliczeń, ponieważ na ogół przetwarzają obraz jako całość. Producenci GPU stale rozwijają, modyfikują i wprowadzają nowe algorytmy antialiasingu. GPU firm AMD i Nvidia stosują niekiedy odmienne algorytmy i filtry antialiasingu.

Crossfire/SLI Crossfire oraz SLI (Scalable Link Interface) są technologiami umożliwiającymi łączenie w wydajniejszy układ więcej niż jednego akceleratora 3D odpowiednio firmy AMD i Nvidia. Zarówno Crossfire jak i SLI oferują różne tryby pracy. Do poprawnego działania wymagane są między innymi odpowiednie sterowniki i profil aplikacji. W niektórych konfiguracjach wymagany jest odpowiedni łącznik.

GPGPU i GPU Computing GPGPU (General Purpose Computation on GPU): Polega na wykorzystaniu GPU do obliczeń ogólnego przeznaczenia za pomocą tradycyjnego API graficznego i potoku przetwarzania grafiki 3D. Stosowane w początkowej fazie rozwoju GPU. Wymaga przemodelowania problemu do postaci ściśle związanej z grafiką 3D. GPU Computing: Polega na wykorzystaniu GPU do obliczeń ogólnego przeznaczenia za pomocą języka programowania oraz API przeznaczonego specjalnie do obliczeń równoległych. Obecnie np. CUDA i OpenCL.