Infinity Cache, ontdek het nut, de werking en de geheimen ervan

De Infinity Cache is het meest opvallende verschil tussen de onlangs geïntroduceerde grafische kaarten uit de RX 6000-serie (RX 6800, RX 6800 XT en RX 6900) met de Xbox Serie X SoC GPU, ook gebaseerd op RDNA 2. ¿Maar wat is de Infinity Cache precies, wat is het nut ervan en hoe werkt het? We gaan je al zijn geheimen vertellen.

Sinds de weken voor de presentatie van de RX 6000 weten we van het bestaan ​​van deze enorme geheugenpool in de GPU, enorm omdat we het hebben over de grootste cache in de geschiedenis van GPU's met ongeveer 128 MB capaciteit . Maar AMD heeft er niet veel informatie over gegeven, het heeft ons gewoon verteld over het bestaan ​​ervan.

Oneindige cache

Daarom is een gedetailleerde uitleg nodig om te begrijpen waarom AMD een cache van een dergelijke grootte heeft geplaatst in de versie van zijn RDNA 2 voor pc.

Lokaliseren van de Infinity Cache

Navi21 Infinity-cache

Het eerste punt dat nodig is om te begrijpen wat de functie van een stuk in de hardware is, is om zijn functie af te leiden uit zijn locatie binnen het systeem.

Sinds RDNA 2 is een evolutie van RDNA Allereerst moeten we kijken naar de eerste generatie van de huidige grafische architectuur van AMD, waarvan we twee chips kennen die Navi 10 en Navi 14 zijn.

Welnu, als de Infinity Cache in RDNA was geïmplementeerd, zou het in het deel zijn dat Infinity Fabric van het diagram zegt, dus op het niveau van de cache-organisatie zouden we hiervan uitgaan:
Jerarquía caches GPU RDNA
Waar de accelerators die zijn aangesloten op de GPU-hub (de videocodec, de displaycontroller, de DMA-schijven, enz.) Geen directe toegang hebben tot de caches, zelfs niet tot de L2-cache.

Bewaart RDNA2 diagrama

Met de toevoeging van de Infinity Cache veranderen de dingen al "een beetje", aangezien nu de versnellers toegang hebben tot dit geheugen,

Dit is erg belangrijk, vooral voor de Display Core Next, die verantwoordelijk is voor het lezen van de uiteindelijke beeldbuffer en deze naar de corresponderende Display Port of HDMI-interface verzendt, zodat het beeld op het scherm wordt weergegeven, dit is belangrijk om toegang te verminderen naar VRAM door deze eenheden.

Onthoud het RDNA-cachesysteem

AMD 6900 tamano

In RDNA zijn de caches op de volgende manier met elkaar verbonden:

Cache-RDNA

De L2-cache is met de buitenkant verbonden met 16 kanalen van elk 32 Bytes / cyclus, als we naar het Navi 10-diagram kijken, zie je hoe deze GPU ongeveer heeft 16 L2-cachepartities en een 256-bits GDDR6-bus waarmee ze zijn verbonden.

Houd in gedachten dat GDDR6 gebruikt 2 kanalen per chip die parallel werken, elk van 16 bits.

Kanalen GDDR6

Met andere woorden, het aantal L2-cachepartities in RDNA-architecturen is gelijk aan het aantal 16-bits GDDR6-kanalen dat is aangesloten op de grafische processor. In RDNA en RDNA 2 is elke partitie 256 KB, dit is de reden waarom de Xbox Series X met een 320-bits bus en dus 20 GDDR6-kanalen ongeveer 5 MB L2-cache heeft.

Xbox Series X-architectuur

Een nieuw cacheniveau: de Infinity Cache

Pie de Página Infnity Cache

Omdat het een extra cachegeheugen is, moet de Infinity Cache rechtstreeks met de L2-cache worden verbonden, wat het vorige niveau in de cachehiërarchie is, dit wordt ons door AMD zelf bevestigd in een voettekst:

Meting berekend door AMD-technici, op een Radeon RX 6000-serie kaart met 128MB AMD Infinity Cache en 256-bits GDDR6. Het meten van de gemiddelde slagingspercentages van AMD Infinity Cache in 4k-games van 58% voor grote gametitels, vermenigvuldigd met de theoretische maximale bandbreedte van de 16 64B AMD Infinity Fabric-kanalen de cache met de grafische engine verbinden met een boostfrequentie tot 1.94 GHz.

De GPU die wordt gebruikt in de RX 6800, RX 6800 XT en RX 6900 is Navi 21 met een 256-bit GDDR6-bus, ergo het heeft 16 kanalen en daarom zijn de 16 partities van Caché L2 elk verbonden met een partitie van de Infinity Cache.

Wat betreft de kwestie van "hit rates" van 58%, deze is ingewikkelder en is wat we hieronder zullen proberen uit te leggen.

Tile Caching op NVIDIA GPU's

NVIDIA GPU

Voordat we verder gaan met de Infinity Cache, moeten we de redenen voor het bestaan ​​ervan begrijpen en hiervoor moeten we kijken hoe GPU's de afgelopen jaren zijn geëvolueerd.

Te beginnen met de NVIDIA Maxwell, GeForce 900 Series, NVIDIA hebben een grote verandering aangebracht in hun GPU's die ze Tile Caching noemden, waarvan de verandering betrof het verbinden van de ROPS en de rastereenheid met de L2-cache.
Betegelde caching NVIDIA
Met deze wijziging stopte de ROPS met schrijven naar de VRAM rechtstreeks, de ROPS zijn gebruikelijk in alle GPU's en zijn verantwoordelijk voor het creëren van de beeldbuffers in het geheugen.

Dankzij deze wijziging kon NVIDIA de energie-impact op de geheugenbus verminderen door het aantal overdrachten van en naar de VRAM te verminderen en hiermee slaagde NVIDIA erin om energie-efficiëntie te verkrijgen van AMD met de Maxwell- en Pascal-architecturen.

DSBR, de Tile Caching op AMD GPU's

AMD daarentegen heeft tijdens alle generaties van de GCN-architectuur voorafgaand aan Vega de Render Backends (RB) rechtstreeks met de geheugencontroller verbonden.

GCN PreVega L2

Maar beginnend met de AMD Vega, bracht hij twee wijzigingen aan in de architectuur om Tile Caching aan zijn GPU's toe te voegen, de eerste was het vernieuwen van de rastereenheid, die hij hernoemde tot DSBR, Draw Stream Binning Rasterizer.

AMD DSBR

De tweede wijziging was dat ze de rastereenheid en ROPS hebben verbonden met de L2-cache, een wijziging die nog steeds bestaat in RDNA en RDNA 2.

RDNA L2-cache

Het nut van DSBR of Tile Caching

De Tile Caching of DSBR is efficiënt omdat het de geometrie van de scène ordent op basis van zijn positie op het scherm voordat het wordt gerasterd, dit was een belangrijke verandering aangezien de GPU's vóór de implementatie van deze techniek bestelde de reeds gestructureerde fragmenten net voordat ze naar de afbeeldingsbuffer werden gestuurd.

Laatste sortering

In Tile Caching / DSBR wordt gedaan met orden de polygonen van de scène voordat ze worden omgezet in fragmenten door de rastereenheid.

Middelste sortering

In Tile Caching worden polygonen geordend op basis van hun schermpositie in tegels, waarbij elke tegel een fragment van n * n pixels is.

Een van de voordelen hiervan is dat het het mogelijk maakt om op voorhand de niet-zichtbare pixels van de fragmenten te elimineren die ondoorzichtig zijn in dezelfde situatie. Iets dat niet mogelijk is als de elementen waaruit de scène bestaat, zijn geordend na het aanbrengen van textuur.

Driehoek pijpleiding

Dit bespaart de GPU tijd aan overtollige pixels en verbetert de efficiëntie van de GPU. Voor het geval u dit verwarrend vindt, is het zo simpel als u eraan herinnert dat de verschillende primitieven waaruit de scène bestaat in de verschillende stadia van de scène verschillende vormen aannemen.

Tile Caching of DSBR is niet gelijk aan Tile Rendering

Tegelweergave

Hoewel de naam misleidend kan zijn, is Tile Caching om de volgende redenen niet gelijk aan Tile Rendering:

  • Tegelrenderers slaan scènegeometrie op in het geheugen, ordenen deze en maken schermlijsten voor elke tegel. Dit proces vindt niet plaats in het geval van Tile Caching of DSBR.
  • In Tile Rendering zijn de ROPS verbonden met kladblokgeheugens buiten de cache-hiërarchie en legen ze hun inhoud pas in de VRAM als die tegel voor 100% is voltooid, dus de hitpercentages zijn 100%.
  • In de Tile Caching / DSBR, aangezien de ROPS / RB's zijn verbonden met de L2-cache, kunnen de cacheregels van L2 naar RAM op elk moment worden weggegooid, dus er is geen garantie dat 100% van de gegevens zich in de L2-cache bevindt.

Omdat de kans groot is dat cacheregels in VRAM terechtkomen, heeft AMD met de Infinity Cache een extra cachelaag toegevoegd die de weggegooide gegevens uit de L2-cache van de GPU verzamelt.

De Infinity Cache is een slachtoffercache

De Slachtoffer Caché idea is een erfenis van CPU's onder Zen-architecturen die is aangepast aan RDNA 2.

Slachtoffer Cache Zen

In de Zen-kernen is de L3 Cache wat we een Victim Caché noemen, deze hebben de leiding het verzamelen van de cache-regels die zijn weggegooid van de L2 in plaats van deel uit te maken van het gebruikelijke cache hiërarchie. Dat wil zeggen, in zen-kernen de gegevens die afkomstig zijn RAM volgt niet het pad RAM → L3 → L2 → L1 of vice versa, maar volgt in plaats daarvan het pad RAM → L2 → L1 aangezien de L3 cache fungeert als Slachtoffer Caché.

In het geval van de Infinity Cache is het de bedoeling om red de regels van de L2-cache van de GPU zonder toegang tot de VRAM , waardoor het energieverbruik per instructie veel lager is en er dus hogere snelheden kunnen worden bereikt. klok.

Infinity Cache verbruik Con

Hoewel de capaciteit van 128 MB erg hoog lijkt, lijkt het echter niet voldoende om te vermijden dat alle weggegooide lijnen in de VRAM terechtkomen, omdat het in het beste geval slaagt er slechts in om 58% te redden . Dit betekent dat het in toekomstige iteraties van de RDNA-architectuur zeer waarschijnlijk is dat AMD zal de capaciteit van deze Infinity Cache vergroten .