Karty graficzne
Artykuł
Mateusz Brzostek, Czwartek, 5 stycznia 2017, 15:03

AMD Vega – architektura

Poza organizacją pamięci wysokopoziomowa struktura architektury Vega jest podobna do struktury dotychczasowych układów graficznych GCN.

Obróbka geometrii: ponad dwa razy większa przepustowość

AMD Vega ma nowy programowalny układ obróbki geometrii. Jest on częścią front-endu procesora: generuje dane o wielokątach, które następnie trafią do shaderów wykonywanych na procesorach strumieniowych. Jego maksymalna przepustowość w Vedze jest 2,6 razy większa niż w procesorze Fiji (Fury X): zamiast 4 wielokątów w cyklu zegara Vega może wygenerować maksymalnie 11. Nie wiemy, dlaczego 4 jednostki geometryczne mogą przetworzyć akurat 11 wielokątów na cykl – ta liczba nie jest wielokrotnością czwórki; zapewne chodzi o teoretyczne maksimum osiągane w optymalnych warunkach.

Ta zmiana powinna pomóc w nowoczesnych grach, w których proporcja między obliczeniami geometrycznymi a cieniowaniem jest zdecydowanie większa niż lata temu.

NCU – Next Generation Compute Unit

Podstawowym blokiem konstrukcyjnym architektury GCN była CU, jednostka obliczeniowa złożona z 64 procesorów strumieniowych. Procesory strumieniowe Vega są podobnie pogrupowane po 64 w NCU – jednostki obliczeniowe nowej generacji. Każdy z nich wykonuje dwie 32-bitowe operacje w cyklu zegara, podobnie jak w GCN pierwszej–czwartej generacji. Vega ma jednak rozbudowane możliwości obliczeniowe, ponieważ może dość łatwo wykonywać obliczenia o różnej precyzji:

Procesory strumieniowe w Vedze mogą działać w kilku trybach:

  • jedna 32-bitowa operacja
  • dwie 16-bitowe operacje jednocześnie
  • jedna 16-bitowa operacja.

W tym trzecim trybie połowa zasobów procesora strumieniowego może być wyłączona dla oszczędności energii. Podobny tryb oszczędzania energii podczas obliczeń o połowie precyzji zaimplementowano już w procesorach Polaris (Radeon RX 400). Wykonywanie dwóch 16-bitowych operacji jednocześnie jest z kolei możliwe na procesorze graficznym w PlayStation 4 Pro. AMD nie ujawniło, jakie będą możliwości obliczeń o podwójnej precyzji ani jak będą się pod tym względem różniły karty profesjonalne od konsumenckich.

Plotka mówi o jeszcze jednej innowacji, którą różni się NCU od CU z architektury GCN. Vega ma mieć możliwość odłączania zasilania i taktowania od tych procesorów strumieniowych, które nie są używane. W poprzednich architekturach cała jednostka CU (64 procesory strumieniowe) musiała pracować, nawet jeśli wykorzystywana była tylko część procesorów strumieniowych. Tej informacji AMD nie potwierdziło i traktujemy ją na razie właśnie jako plotkę.

Primitive shader – obróbka brył jednym programem

Vega umie korzystać z nowego typu shaderów – miniprogramów, którymi obrabia się dane służące do generowania grafiki 3D. Vertex shader zwykle służy do transformacji wierzchołków brył: to program, który jest wykonywany oddzielnie dla każdego wierzchołka. Geometry shader, typ shaderów dodany w API DirectX 10 i OpenGL 3.2, poddaje obróbce całe bryły i może wygenerować nowe wierzchołki. Zwykle vertex shader i geometry shader są kolejnymi etapami obróbki geometrii 3D. Vega umie operować na nowych primitive shaders, połączeniu dwóch wymienionych typów. Primitive shader wykonuje tę samą pracę co następujące po sobie vertex shader i geometry shader przy użyciu mniejszej ilości zasobów. Primitive shader nie należy do żadnego nowoczesnego interfejsu oprogramowania. Jak twierdzi AMD, w niektórych przypadkach sterownik GPU może w locie zamieniać sekwencję vertex + geometry shader na nowy typ. Programiści gier mogą też używać primitive shaders bezpośrednio – AMD zapewne zaproponuje umożliwiające to rozszerzenie do API Vulkan i DirectX 12.  

Nowe możliwości rasteryzacji – draw stream binning

W układzie rasteryzacji procesora Vega zastosowano rozwiązanie pokrewne stosowanym w mobilnych układach graficznych wykorzystujących renderowanie kafelkowe (tile-based rendering). Przestrzeń ekranu jest podzielona na obszary sąsiadujących pikseli („bin”). Dla każdego obszaru GPU przechowuje listę wszystkich wielokątów i instrukcji renderowania, które mogą mieć widoczny wpływ na ten obszar. 

W każdym obszarze odrzucane są wielokąty zasłonięte lub zbyt małe, żeby wpływały na kolor piksela. Ponieważ znane są wszystkie obiekty, które mogą się znaleźć w tym obszarze ekranu, można pobrać za jednym razem wszystkie dane potrzebne do ocieniowania tych pikseli. Można również cieniować różne obszary ekranu równolegle, niezależnie od siebie. Takie rozwiązanie znacząco przyspiesza wyświetlanie grafiki w silnikach 3D korzystających z deferred shading

Ta zmiana w rasteryzacji wiąże się bezpośrednio ze zmianą hierarchii pamięci podręcznej, o której wspomnieliśmy na pierwszej stronie. Rasteryzator ma dostęp do tej samej pamięci L2 co układ obróbki geometrii i jednostki obliczeniowe. Dzięki temu dane dotyczące jednego obszaru ekranu (bin) nie muszą nawet być przesyłane poza czip, do głównej pamięci, bo wszystkie części GPU, które mogą ich potrzebować, znajdą je we wspólnej pamięci podręcznej drugiego poziomu, L2. Ograniczenie transferów danych może oszczędzić sporo energii, nawet w układzie ze stosunkowo energooszczędną pamięcią HBM.

Kafelkowy rasteryzator ma koncepcyjnie wiele wspólnego z rasteryzatorem w układach Maxwell i Pascal Nvidii, które – na co wskazują praktyczne eksperymenty – również stosują pewną formę tej techniki. Jest ona jednym z czynników, którym architektury Maxwell i Pascal zawdzięczają swoją efektywność energetyczną. To usprawnienie na pewno trafi do kolejnych architektur GPU AMD, a nawet może sugerować, że układy Vega będą występowały również w wersji z pamięcią inną niż HBM.

Ocena artykułu:
Ocen: 21
Zaloguj się, by móc oceniać
Artykuły spokrewnione
Aktualności spokrewnione
Facebook
Ostatnio komentowane