Czym jest Infinity Cache,Infinity Cache, AMD Infinity Cache, co to Infinity Cache,

Czym jest Infinity Cache? To wręcz rewolucyjna cecha kart graficznych AMD

Jeśli mielibyśmy wskazać jedną z najważniejszych technologii, które AMD wprowadziło w stosunkowo niedawnym czasie, to ewidentnie wybór padłby „nieskończoną pamięć podręczną”. To bezpośrednie tłumaczenie obecnej w kartach graficznych Radeon RX 6000 na bazie architektury RDNA2 pamięci Infinity Cache, która wręcz wprowadziła karty graficzne Radeon w „nową erę pamięci VRAM”. Warto więc odpowiedzieć na pytanie, czym dokładnie jest Infinity Cache, bo ewidentnie zostanie z kartami graficznymi AMD na dłużej. Wpływa bowiem pozytywnie na ogólną wydajność, a nawet zużycie energii i najlepiej akcentuje to fakt, że dzięki 128 MB Infinity Cache, 256-bitowa magistrala o przepustowości 512 GB/s jest w stanie zostać podbita do 1664 GB/s efektywnej przepustowości. Brzmi ciekawie, czyż nie?

Podstawy, podstawy i raz jeszcze podstawy, bo bez nich zrozumieć Infinity Cache się nie da

Jako że czytacie te słowa, jestem pewny, że interesuje Was coś więcej, niż tylko wzmianka co do wzrostu przepustowości i tym samym wydajności, którą gwarantuje Infinity Cache. Dlatego też chcę zagłębić się nieco bardziej w teorię, a tą najlepiej zacząć od tego, że Infinity Cache, jak każdy rodzaj pamięci podręcznej tak niskiego poziomu, sprowadza się do układu SRAM, czyli Static Random Access Memory. Ta względem stosowanych w pamięci operacyjnej układów DRAM różni się tym, że jest znacznie szybsza, dręczą ją kilkukrotnie niższe opóźnienia (rzędu nanosekund) i sama z siebie nie wymaga odświeżania, co oznacza, że przechowuje dane tak długo, jak długo uzyskuje dostęp do napięcia.

W procesorach centralnych (CPU) i graficznych (GPU) dostęp do pamięci podręcznej (zwykle dwóch lub trzech poziomów SDRAM) jest konieczny, aby podsuwać układom logicznym nieustannie dane, na których mogą pracować. Te są z kolei nieustannie pobierane z pamięci operacyjnej (kości DRAM) i ten mechanizm sprawdza się już od zarania technologicznych dziejów. Przynajmniej w samym działaniu, bo pod maską zmian między poszczególnymi generacjami nie brakuje. 

Przykładem tego są stare już karty GeForce z serii 900. Tam NVIDIA wprowadziła Tile Caching, czyli (w skrócie) połączyła jednostki renderujące i rasterujące bezpośrednio do wbudowanej w GPU pamięci podręcznej poziomu drugiego (L2 cache). Dzięki temu jednostki przestały realizować zapis bezpośrednio do pamięci karty graficznej, co doprowadziło do zmniejszenia liczby transferów i tym samym do zmniejszenia zapotrzebowania energetycznego magistrali pamięci. Wtedy NVIDIA odskoczyła od firmy AMD na tym poletku, która aż do architektury Vega łączyła te jednostki z kontrolerem pamięci. 

Czytaj też: Co oznaczają certyfikaty 80 PLUS na zasilaczach i dlaczego potrzebujemy czegoś nowego?

Firmie zajęło więc kilka lat na odpowiedź, a raczej nadgonienie konkurencji, co stało się właśnie przy architekturze AMD Vega. W niej też poczyniono dokładnie te same zmiany, które NVIDIA wprowadziła w rodzinie GeForce 900 i architekturze Maxwell. AMD podpięło po prostu jednostkę rasteryzującą i renderującą do pamięci L2, nazywając to DSBR (Draw Stream Binning Rasterizer), co ma też miejsce w architekturze RDNA i RDNA2. 

Od pewnego czasu zachowanie na poziomie GPU-VRAM w tej kwestii jest więc identyczne zarówno w przypadku kart graficznych NVIDIA, jak i AMD. Tile Caching w GeForce i DSBR w Radeonach odpowiada za podzielenie i wyeliminowanie niewidocznych w danej scenie wielokątów tuż przed etapem, w którym te miałyby zostać przekonwertowane na fragmenty przez jednostkę rasteryzacji. Oszczędza to z kolei zasoby rdzenia graficznego.

Jednak nie wyjaśniam tego po to, aby powspominać dawne zmiany w architekturach. Ten mechanizm jest kluczowy do zrozumienia sposobu działania Infinity Cache, bo przez połączenie jednostek rasteryzujących i renderujących bezpośrednio do pamięci podręcznej poziomu drugiego (L2 cache), są szanse, że po jej wypełnieniu, rozpocznie się transfer danych „poziom wyżej”, czyli do wolniejszej pamięci operacyjnej. To sprawia, że nigdy nie ma gwarancji, że 100% danych będzie znajdywać się właśnie w bardzo wydajnej pamięci L2. Dlatego m.in. tak ważne są zarówno opóźnienia, jak i przepustowość między rdzeniem graficznym, a podsystemem pamięci VRAM, co widać po flagowych kartach graficznych dostępnych obecnie na rynku.

Czytaj też: Jak przyspieszyć Windowsa 11 w dwie minuty? Opowiadamy o VBS i HVCI

Tak też GeForce RTX 3090 ma do dyspozycji 24 GB pamięci GDDR6X na 384-bitowej magistrali, co zapewnia 936,2 GB/s przepustowości, podczas gdy Radeon RX 6900 zadowala się 16 GB GDDR6 na 256-bitowej magistrali, a to przekłada się na „surową przepustowość” rzędu 512 GB/s. Jednak dzięki Infinity Cache ta efektywna wynosi 1664 GB/s wedle informacji podawanych przez AMD. Jest to jednak zależne od konkretnych warunków i środowiska.

Czytaj też: Jak AMD radzi sobie z zasilaniem Ryzenów? Wyjaśniamy PPT i PBO

W szczegóły roli pamięci VRAM jednak nie będziemy wchodzić, bo to temat na zupełnie nowy artykuł. Warto wiedzieć tylko tyle, że im szersza jest magistrala, tym więcej energii pobiera, co dotyczy też tego, jak wiele transferów trzeba wykonać za jej pośrednictwem. Tutaj właśnie wchodzi do gry Infinity Cache.

Czym dokładnie jest Infinity Cache?

Podstawy już znamy, teraz czas na przeniesienie się już do ery Infinity Cache, czyli architektury RDNA2, która dała życie kartom graficznym Radeon RX 6000. Poniżej możecie porównać diagram flagowych rdzeni RDNA2 i RDNA, czyli poprzedniej architektury bez Infinity Cache.

Czytaj też: Opowiadamy o Intel Thread Director, czyli wyjątkowej funkcji dla Windowsa 11

Od razu rzuci Wam się pewnie w oczy właśnie zaznaczony na czerwono blok, dzięki któremu fizyczne elementy rdzenia z naciskiem na akceleratory pokroju kodeka wideo, czy kontrolera wyświetlania, zaczęły mieć bezpośredni dostęp do Infinity Cache. To sprawiło, że m.in. odpowiadający za przesyłanie sygnału wideo na monitor Display Core Next korzystał częściej z Infinity Cache i nie musiał sięgać po pamięć VRAM w postaci GDDR6. Na diagramie widać też, że Infinity Cache jest bezpośrednio połączone z pamięcią podręczną L2.

Teraz przechodzimy do najważniejszego, czyli dawnej wzmianki inżynierów AMD, którzy twierdzili, że średni „hit rate success” przy graniu w rozdzielczości 4K z kartą graficzną Radeon RX 6000 z Navi 21, 128 MB Infinity Cache i 16 GB pamięci GDDR6 wynosił 58%. Pozostaje więc pytanie, co dokładnie oznacza ten „wskaźnik sukcesu pamięci podręcznej”?

Jeśli jesteście zaznajomieni z rzeczywistą rolą pamięci podręcznej trzeciego poziomu w procesorach AMD na bazie architektury Zen, to sprawę znacie na wylot. Infinity Cache w przypadku procesora graficznego działa podobnie do tego, jak pamięć podręczna L3 działa w procesorach Ryzen. Biorąc hierarchię na „chłopski rozum”, w tych zastosowaniach dane nie podążają ścieżką pamięć operacyjna → L3 → L2 → L1, a pamięć operacyjna → L2 → L1. „Gdzie więc podziewa się L3?” – zapytacie zapewne i będzie to dobre pytanie, bo zdradza prawdziwe działanie Infinity Cache.

Czytaj też: Czym są akceleratory w układach logicznych i jaka jest ich przyszłość?

W rzeczywistości ten dokładnie pokład pamięci SRAM „wychwytuje” te dane, które zostały odrzucone z L2, stanowiąc kolejną warstwę „buforu” dla rdzenia graficznego. To z kolei ogranicza potrzebę sięgania do pamięci operacyjnej po oddelegowane do niej zera i jedynki, co pozwala na znacznie mniejsze zużycie energii na instrukcję. Do ideału jednak nadal sporo Infinity Cache brakuje, bo wspomniane 58% „uratowanych bitów pamięci” oznacza ciągle 42% „oddelegowanych” danych. Są więc szanse, że AMD w przyszłości poprawi swoją technologię, a dokonać tego może w prosty sposób – poprzez zwiększenie pojemności Infinity Cache.