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

AMD przedstawia dziś ogólne informacje o architekturze Vega, w której będą zbudowane nadchodzące najwydajniejsze karty graficzne dla graczy oraz akceleratory obliczeniowe. Vega jest ewolucyjnym rozwinięciem stosowanej od lat architektury GCN. AMD poczyniło znaczne zmiany w organizacji pamięci i procesie generowania grafiki, które prawdopodobnie są najważniejszymi od lat nowościami w GCN, a być może w kartach graficznych w ogóle.

AMD Vega – organizacja pamięci

Organizacja pamięci jest największą nowością w AMD Vega.

W architekturze GCN do tej pory pamięć składała się z dwóch poziomów pamięci podręcznej, podłączonych dalej do kontrolera pamięci, który obsługiwał zewnętrzną pamięć GDDR5 lub HBM. Układ obróbki geometrii i jednostki obliczeniowe były wyposażone we własne pule pamięci podręcznej L1 i były podłączone do wspólnej puli pamięci podręcznej drugiego poziomu. Rasteryzator (Pixel Engine na ilustracji) miał tylko jeden poziom pamięci podręcznej, a dalej komunikował się z pulą zewnętrznej pamięci.

Ta organizacja została przebudowana w Vedze:

Po pierwsze, pamięć podręczna drugiego poziomu jest teraz dostępna również dla rasteryzatora – za chwilę powiemy po co.

Po drugie, tradycyjny kontroler pamięci i pula pamięci lokalnej zostały zastąpione przez HBCC (High-Bandwidth Cache Controller) i pamięć podręczną o wysokiej przepustowości, umieszczoną w obudowie GPU: w tej roli występuje pamięć HBM2. HBCC łączy się z dowolnymi zewnętrznymi magazynami danych: pamięcią systemową, dyskami twardymi, a nawet magazynami sieciowymi. Pięć prostokątów powyżej GPU nie symbolizuje pamięci lokalnej, jak na diagramie GCN w wersji pierwszej–czwartej, a urządzenia wejścia-wyjścia.

512 TB przestrzeni adresowej

Działanie HBCC jest kluczowym elementem systemu pamięci i warto bliżej mu się przyjrzeć, choć AMD nie podało zbyt wielu szczegółów technicznych.

Kontroler HBCC ma częściowo zlikwidować przepaść w przepustowości i pojemności między pamięcią lokalną GPU (zainstalowaną na karcie graficznej) a magazynami danych, które są o przynajmniej dwa rzędy wielkości wolniejsze, ale i o dwa rzędy wielkości pojemniejsze. AMD Vega wykorzystuje 49-bitową wirtualną przestrzeń adresową, co pozwala HBCC zarządzać 512 TB pamięci. Część z tej przestrzeni adresowej reprezentuje pamięć lokalną, reszta – pamięć zewnętrzną. Ta przestrzeń adresowa jest stronicowana, a HBCC zajmuje się przenoszeniem stron pomiędzy pamięcią zewnętrzną a lokalną. Transferowanie danych odbywa się dynamicznie, reaktywnie albo proaktywnie: HBCC i algorytmy programowe kontrolowane przez sterownik mogą z wyprzedzeniem ładować dane, do których dostęp będzie wkrótce potrzebny, do pamięci lokalnej. O ile wiemy, kontrola nad tym mechanizmem jest programowa.

Pamięć podręczna o wysokiej przepustowości: HBM2

W roli pamięci lokalnej kontrolowanej przez HBCC będzie występować HBM2, druga generacja pamięci RAM ułożonej warstwami w stosy. Technikę HBM opisaliśmy dokładnie w artykule „HBM, HMC, Wide I/O – trzy przyszłościowe techniki pamięci operacyjnej”. HBM2 różni się od pierwszej generacji przepustowością i pojemnością. Dzięki taktowaniu interfejsu przyspieszonemu do 1000 MHz przepustowość jednego 128-bitowego interfejsu wynosi 256 GB/sek., dwa razy więcej, niż wynosi przepustowość takiego samego stosu HBM pierwszej generacji.

Pamięć HBM jest obecnie produkowana przez Samsunga i SK Hynix w postaci czterowarstwowych stosów o pojemności 4 GB. W niedługiej przyszłości obie firmy planują też zaoferować ośmiowarstwowe stosy o pojemności 16 GB – jednak ze względu na ograniczenia termiczne ich zastosowanie w kartach graficznych może być trudne. 

AMD nie wspomina o szerokości interfejsu HBM w procesorze Vega. Gdyby był podobny jak w Fiji (Radeon Fury X), to procesor Vega mógłby mieć maksymalnie 16 GB pamięci lokalnej o łącznej przepustowości 1 TB/sek.

Warto zauważyć, że jedyny inny procesor z pamięcią HBM2, GP100 Nvidii (tzw. duży Pascal), korzysta z czterech 4-gigabajtowych stosów HBM2, ale taktowanie interfejsu spowolniono do około 700 MHz – prawdopodobnie ze względu na ograniczenia termiczne, jak również dlatego, że wewnętrzne magistrale GPU i tak nie mogłyby konsumować danych o wiele szybciej.

To tylko spekulacja z naszej strony, ale wydaje się prawdopodobne, że procesor Vega będzie występował w kilku wersjach. Tylko najwyższa z nich, przeznaczona między innymi do akceleratorów obliczeniowych, mogłaby być wyposażona w tak dużą ilość pamięci lokalnej. W wersjach, które trafią do kart graficznych dla „entuzjastów”, może się znaleźć konfiguracja z mniejszą liczbą stosów HBM2, na przykład dwoma o łącznej pojemności 8 GB i przepustowości 512 GB/sek., albo z dwuwarstwowymi stosami HBM2 o pojemności 2 GB/stos (4 GB lub 8 GB łącznie).

Po co tak dużo pamięci wirtualnej?

To nie pierwszy raz, kiedy AMD próbuje wyposażyć GPU w pamięć o absurdalnej z pozoru pojemności. Zainteresowani twórcy oprogramowania mogą od kilku miesięcy kupić zestaw testowy z kartą Radeon Pro SSG, która obok procesora Fiji ma switch PCI Express, kontroler RAID i dwa nośniki SSD w konfiguracji RAID0. AMD udostępnia do tego mechanizm programistyczny pozwalający na transfery danych między urządzeniami PCI-E bez wykonywania kopii roboczej w pamięci operacyjnej komputera. W ten sposób, choć pula lokalnej, superszybkiej pamięci GPU to wciąż tylko 4 GB, odpowiednio napisane programy mogą skorzystać z 1 TB pamięci ponaddwukrotnie szybszej od podłączonych w zwykły sposób nośników SSD. Taka możliwość bardzo się przydaje w zastosowaniach obliczeniowych albo związanych z obróbką wideo.

Czterdziestodziewięciobitową przestrzeń adresową i możliwość wykonywania bezpośrednich transferów pomiędzy urządzeniami PCI Express zapewnia też procesor Pascal GP100 Nvidii.

Duża wirtualna przestrzeń adresowa pozwala GPU łatwo się odnosić do zasobów, które znajdują się w pamięci innego procesora graficznego, pamięci systemowej albo magazynach danych. Rozwój technik przechowywania danych da nam niebawem rodzaje pamięci wypełniające lukę w pojemności i przepustowości między RAM-em a pamięcią flash, takie jak pamięć memrystorowa (np. 3D XPoint Intela i Microna). Toczą się również prace nad odpowiednimi wysokoprzepustowymi interfejsami, takimi jak: OpenCAPI, Gen-Z, NVLink, które mogłyby posłużyć do współdzielenia pamięci pomiędzy akceleratorami obliczeniowymi.

Jak to wpłynie na sprawność architektury Vega w grach?

Jak zauważyli inżynierowie AMD, typowe programy 3D nie zarządzają zbyt sprawnie pamięcią. W większości gier zauważyli, że ilość zarezerwowanej przez program pamięci karty graficznej zwykle jest dwa razy większa niż ilość danych rzeczywiście wykorzystywanych do bieżących obliczeń.

Żółta linia na wykresie przedstawia zarezerwowaną pamięć, fioletowa – ilość danych, do których GPU uzyskiwało dostęp. Oba przedstawione testy wykonano na maszynie z procesorem Zen i kartą graficzną z GPU Vega. Wykorzystanie wirtualnej przestrzeni adresowej większej od pojemności pamięci lokalnej narzuca się samo. Gry mogłyby rezerwować dla siebie więcej pamięci, niż ma lokalnie GPU, a kontroler HBCC dbałby o to, żeby w lokalnej, szybkiej puli potrzebne dane znajdowały się z wyprzedzeniem.

Zwróćmy uwagę, że wykresy zaprezentowane przez AMD pokazują objętość wykorzystywanych danych, ale nie dowodzą, że przez cały okres trwania testu GPU uzyskiwało dostęp do tych samych danych. Nadwyżka pamięci jest rezerwowana prze gry nie bezcelowo, ale na wypadek gdyby dane stały się potrzebne natychmiast i nie było czasu przesyłać ich przez łącze PCI Express. Sprawność HBCC w grach będzie w dużym stopniu zależeć od tego, czy algorytm wymieniający dane pomiędzy pamięcią lokalną a zewnętrzną będzie odpowiednio sprawny i będzie bezbłędnie pobierał dane z wyprzedzeniem. Jeśli ten algorytm byłby idealny, GPU Vega mogłyby nawet mieć tylko 4 GB pamięci lokalnej i zarazem uniknęłyby problemu Radeona R9 Fury X, który miał dość mocy obliczeniowej, ale nie dość dużo pamięci lokalnej do gry w bardzo wysokich rozdzielczościach.

Ocena artykułu:
Ocen: 19
Zaloguj się, by móc oceniać
barwniak (2017.01.05, 15:08)
Ocena: 42

0%
Kolejne slajdy.
kwadratabg (2017.01.05, 15:08)
Ocena: 69

0%
'kiedy, za ile, i ile klatek w Crysisie'

Na to wszyscy czekali, a pokazali znowu tylko dooma w 4k. Zwykłe pompowanie hype i tyle.
LUX (2017.01.05, 15:09)
Ocena: 43

0%
Karty graficzne z procesorem Vega czekają zapewne na dużą dostępność pamięci HBM2; wyposażony w taką pamięć procesor GP100 będzie dostępny w dużych ilościach dopiero za kilka miesięcy.

Niedobrze...... czyli jeszcze kilka miesięcy z najmocniejszym Radeonem na poziomie średniaka Nvidii.
jaskól (2017.01.05, 15:10)
Ocena: 49

0%
Chciałbym choć wiedzieć że warto czekać, a teraz znowu nic nie podano. Dziwią się później że większość kupuje Nvidie
Edytowane przez autora (2017.01.05, 15:11)
chotom19 (2017.01.05, 15:11)
Ocena: 24

33%
Były papierowe premiery teraz są slajdowe;)
bi3dron4 (2017.01.05, 15:13)
Ocena: 40

0%
I to tyle? Jaja sobie robią?
john6151 (2017.01.05, 15:14)
Ocena: 38

0%
Jeśli rzeczywiście będzie 16 GB VRAM to chyba wreszcie zrozumieli jak dużym błędem było pakowanie 4 GB HBM do Fury i Fury X
chotom19 (2017.01.05, 15:16)
Ocena: 17

33%
16 GB pamięci której nie ma w zbyt dużych ilościach na rynku. Tanio nie będzie. Chyba się pomyliłem mówiąc 3 -3,5 tys.
SunTzu (2017.01.05, 15:16)
Ocena: -3

0%
Jeśli ten algorytm byłby idealny, GPU Vega mogłyby nawet mieć tylko 4 GB pamięci lokalnej, i uniknęłyby problemu Radeona R9 Fury X, który miał dość mocy obliczeniowej, ale nie dość dużo pamięci lokalnej do gry w bardzo wysokich rozdzielczościach.

Jeśli ta pamięć nie była używana to przecież nie wpływała na wydajność karty. W przypadku DXa 11 mamy do czynienia z wysokopoziomowym API i tutaj samo API i sterownik mają duży wpływ na zarządzanie pamięcią. Jeśli jej brakuje to po prostu nie będzie ta pamięć zbędna cachowana ale jeśli będzie potrzebna tak jak na 2GB kartach to będzie spowolnienie.

Chyba, że źle zrozumiałem i teraz fragmenty pamięci nieużywane nie będą musiały być przechowywane w pamięci GPU- np. część tekstury.
Ale to znamy tiled resources?

W układzie rasteryzacji procesora Vega zastosowano rozwiązanie pokrewne do stosowanych w mobilnych układach graficznych

ekhm... i konkurencji wreszcie :)


Nie wiemy, czemu 4 jednostki geometryczne mogą przetworzyć akurat 11 wielokątów na cykl – ta liczba nie jest wielokrotnością czwórki

Teraz PRowy znany nam Pan, który często odwiedza nasz portal mógłby ładnie wyjaśnić czemu tak jest. Niestety PR AMD bardzo rzadko prostuje takie informacje. Zresztą GCN w pierwotnych whitepaper przeszedł sporą 'ewolucję' (kolejne rewizje papieru ładnie prostowały, co tłumaczyło nie do końca oczekiwaną wydajność).

Innej rzeczy jakiej brakuje to fajnie, że się tak skaluje 8bit->16bit... tylko co z FP64 (dp)

Te zmiany prezentują sie dobrze. Wręcz niektóre napawają sporym optymizmem (spory skok wydajności) Przyrost mocy /MHz/CU kolejnych GCNach był średni (żałosny)... 290x cały czas jest konkurencyjny na tle polarisów...
... te zmiany są dość konkretne i może wreszcie AMD poprawi istotnie efektywność... bo samym procesem technologicznym skazują się na laskę GF-a, samsunga, TSMC.
Edytowane przez autora (2017.01.05, 15:34)
Zaloguj się, by móc komentować
Artykuły spokrewnione
Facebook
Ostatnio komentowane