8. Karty graficzne

8.2. Budowa karty graficznej

Istnieje bardzo duża liczba różnych kart graficznych. Mają one różne architektury. Poniżej, jako przykład, podany zostanie zarys budowy karty GeForce GTX 1080 GPU. Karta ta wykorzystuje architekturę Pascal (Rys. 42). Procesory graficzne Pascal składają się z trzech podstawowych elementów (w różnych konfiguracjach):
•    Graphics Processing Clusters (GPC),
•    Streaming Multiprocessors (SM),
•    kontrolerów pamięci.
Każdy Streaming Multiprocessor jest sparowany z silnikiem PolyMorph, który obsługuje pobieranie wierzchołków, tesselację, transformacje rzutni, konfigurację atrybutów wierzchołków i korekcję perspektywy. Połączenie Streaming Multiprocessor z jednym Polymorph Engine jest określane jako Texture Processing Clusters (TPC). GeForce GTX 1080 (GP104 GPU) składa się z:
•    4 Graphics Processing Clusters (GPC),
•    20 Streaming Multiprocessors (SM)
•    8 kontrolerów pamięci.


 Rys. 42. Architektura Pascal - GeForce GTX 1080 GPU [źródło: Nvidia Developer Blog]

W GeForce GTX 1080 każdy Graphics Processing Cluster (GPC) ma dedykowany silnik rastrowy  i pięć procesorów strumieniowych (SM). SM jest wysoce równoległym multiprocesorem, który wysyła grupy wątków (po 32) do rdzeni CUDA i innych jednostek wykonawczych. SM jest jedną z najważniejszych jednostek sprzętowych w GPU. Prawie wszystkie operacje przepływają przez SM w pewnym momencie potoku renderowania. GeForce GTX 1080 jest dostarczany z 20 jednostkami SM (łącznie 2560 rdzeniami CUDA i 160 jednostkami teksturowania). Każdy SM zawiera 128 rdzeni CUDA, 256 KB pliku rejestrów, 96 KB współużytkowanej pamięci, 48 KB pamięci podręcznej L1  i osiem jednostek teksturowania (Rys. 43).
Każdy rdzeń CUDA ma w pełni spotokowaną całkowitoliczbową jednostkę arytmetyczno-logiczną (ALU)
i jednostkę zmiennoprzecinkową (FPU) – (Rys. 44). ALU obsługuje obliczenia z 32-bitową precyzją dla wszystkich instrukcji, zgodnie ze standardowymi wymaganiami języka programowania. ALU jest również zoptymalizowane, aby wydajnie obsługiwać 64-bitowe obliczenia. 
GeForce GTX 1080 ma osiem 32-bitowych kontrolerów pamięci (256-bitowych łącznie). Do każdego 32-bitowego kontrolera pamięci przyporządkowano osiem jednostek ROP (ang. Raster Operations) i 256 KB pamięci podręcznej L2. Układ GP104 wykorzystywany w GTX 1080 ma w sumie 64 bloki ROP i 2048 KB pamięci podręcznej L2. Pamięci GDDR5X osiągają szybkość transferu 10 Gb/s lub około 100 pikosekund (ps) między bitami danych. Podobnie jak poprzednie procesory graficzne GeForce, podsystem pamięci GeForce GTX 1080 wykorzystuje bezstratne techniki kompresji pamięci w celu zmniejszenia zapotrzebowania na przepustowość.

 Rys. 43. Architektura Pascal - GeForce GTX 1080 GPU – multiprocessor strumieniowy (SM) [źródło: Nvidia Developer Blog]

 
Rys. 44. Architektura Pascal - GeForce GTX 1080 GPU – rdzeń CUDA [źródło: Nvidia Developer Blog]

Polecenia CPU są odczytywane przez Host Interface GPU. GigaThread Engine pobiera określone dane z pamięci systemowej i kopiuje je do bufora ramki. Następnie GigaThread Engine tworzy i wysyła bloki wątków do różnych SM. Poszczególne SM z kolei rozkładają grupy wątków (po 32 wątki – ang. warps) na rdzenie CUDA i inne jednostki wykonawcze. GigaThread Engine również rozdziela pracę na SM, gdy jest taka potrzeba w  potoku graficznym, na przykład po etapach tesselacji i rasteryzacji.