AMD uczy się na błędach. Navi to nie Vega – jest genialne w swej prostocie (opis architektury)
Przez ostatnich parę lat AMD jakby nie miało głowy do projektowania kart graficznych. Albo forsowali kolejne iteracje architektury GCN, znanej jeszcze z końca 2011 r. i Radeona HD 7970, albo nadmiernie kombinowali, inwestując w ogromne czipy z ciężko dostępnymi pamięciami HBM (patrz. Fury i Vega). Na całe szczęście, nowo zaprezentowane Navi wraca na właściwie tory.
U podstaw Navi stoi coś, co AMD nazywa "wizją RDNA". Dlaczego nie architekturą? Bo RDNA wciąż bazuje na architekturze GCN, jeśli spojrzymy na model programowy (ISA). Zmienia się natomiast mikroarchitektura, czyli sposób implementacji sprzętowej. Wciąż jednak w obrębie tej samej, dobrze znanej architektury – Graphics Core Next.
I to genialna decyzja, gdyż Navi pozostaje całkowicie kompatybilne z narzędziami deweloperskimi, kompilatorami i technikami optymalizacji stworzonymi z myślą o starszych Radeonach. Uniknięto tym samym sytuacji, w której po premierze starsze karty ucierpią wskutek braku optymalizacji w kolejnych grach. Gromkie brawa dla osób odpowiedzialnych za tę decyzję.
Podwójna jednostka obliczeniowa
Nie oznacza to jednak, że w samym czipie zmienia się tylko kosmetyka. Wprost przeciwnie – front-end Navi to cały szereg innowacji, co pozwala mówić o zupełnie nowym projekcie.
Znane z wcześniejszych modeli Radeonów bloki obliczeniowe (CU) zostały pogrupowane w pary, tworząc nowe, podwójne bloki obliczeniowe (DCU – ang. Dual Compute Unit). W każdym znajdują się nie dwa jak poprzednio, ale cztery klastry SIMD. Z czego każdy zawiera: 32 procesory strumieniowe, jednostkę skalarną i rejestr wektorowy. Pamięć L0, czy to na dane cieniowania czy wektorowe, jest natomiast w obrębie DCU współdzielona.
To sprawia, że na pojedynczy DCU przypadają dwa bloki L0, co skutkuje dwukrotnym zwiększeniem przepustowości w torze L0 - ALU. Mało tego, dzięki temu Navi ma dwukrotnie więcej jednostek skalarnych niż zakładają klasyczne koncepcje GCN – 80, jednak przy niezmienionej liczbie jednostek mapowania tekstur (TMU) w przeliczeniu na CU/DCU – 160; 4 na DCU.
Przy czym dyspozytory i kolejki na blokach SIMD są niezależne, więc karta na wzajemnym mariażu bloków obliczeniowych z całą pewnością nie traci. Ba, jeszcze korzysta, gdyż dwa CU mają możliwość błyskawicznej wymiany danych na wejściu i wyjściu.
Rozwiązany powinien zostać zaś, przynajmniej w teorii, problem niedostatecznego wypełniania pikselami, a i w kwestii TMU zachodzą zmiany. Teraz mają 64-bitowy rejestr.
Szczypta Vegi w Navi – ale zasadna
Tym, co bezpośrednio przeniesiono z mikroarchitektury Vega, jest back-end. 16 czterodrożnych bloków RB (ang. Render Back-end) daje 64 jednostki rasteryzujące. Dokładnie tyle, ile ma Vega 64 czy Radeon VII. Ale tam, przy nawet 4096 procesorach strumieniowych, budziło tu kontrowersje. Navi ma "raptem" 40 CU, aka 20 DCU, czyli 2560 procesorów strumieniowych. Nie wydaje się zatem, aby przy zapisie do bufora ramki mogło wystąpić "wąskie gardło".[img=Graphics_Architecture_06102019-24]Kompozycja czipu i hierarchia cacheGrupy pięciu podwójnych jednostek obliczeniowych współdzielą moduł zarządzający, rasteryzator z 16 jednostkami i obszerną pamięć L1. Dwie takie grupy tworzą silnik cieniowania (ang. Shader Engine), a dwa silniki cieniowania spotykają się w scentralizowanym procesorze logicznym. Ten z kolei pełni rolę nadrzędnego dyspozytora, kierując rozkazy pomiędzy wszystkie zasoby obliczeniowe, procesor geometrii i cztery silniki obliczeń asynchronicznych (ACE).
Ciekawie przeprojektowano przy tym całą pamięć podręczną. Wspominałem już o L0 – po 16 KB SRAM przypada na każdy CU, przyśpieszając transfery między jednostkami obliczeniowymi a L1. Pamięci L1 jest 128 KB na grupę pięciu DCU i potrafi wykonać aż 16 transferów w cyklu zegara, prowadząc ostatecznie do 4 MB pamięci L2 zawartych w całym rdzeniu Navi.
Teraz – największa ciekawostka. Wiecie jaką powierzchnię ma Navi? Otóż 251 mm². Produkowany w tym samym procesie litograficznym, 7 nm, czip Vega 20 Radeona VII pochłania 331 mm², a 14-nanometrowa Vega 10 – 495 mm²; W odniesieniu do Vegi 10, AMD mówi o wzroście wydajności równym: 2,3 raza na mm², i 1,5 raza na wat. Brzmi to całkiem wiarygodnie, mając na uwadze, że wyeliminowano największe bolączki i zwiększono cache. To ostatnie samo w sobie jest receptą na sukces, chętnie stosowaną zwłaszcza w obozie Nvidii (patrz. Pascal i Turing).
A jak będzie w praktyce, to już przekonamy się po premierze, datowanej – nawiasem mówiąc – na 7 lipca. Przyznam, najbardziej interesująco zapowiadają się porównania zegar do zegara. Jak wiadomo, dotychczas różnie z tym bywało i taka Vega 64 "skręcona" do zegarów R9 Fury X potrafiła notować niezwykle podobne wyniki w grach. Tutaj taka sytuacja nie ma prawa się powtórzyć.