AMD'nin RDNA mimarisine bir bakış

Selamlar sevgili forum üyeleri, değerli arkadaşlar. Bu makalemde sizlere dünyanın en büyük ekran kartı üreticilerinden birisi olan Advanced Micro Devices yani AMD'nin yeni nesil ekran kartlarında ve yeni nesil oyun konsollarının (Xbox Series S/X ve PlayStation 5) grafik çiplerinde kullanmış olduğu Radeon DNA yani RDNA mimarisini detaylıca anlatmaya çalışacağım. Bununla beraber makalemde temel olarak yararlandığım kaynak AMD'nin resmi olarak hazırlamış olduğu RDNA dokümanı isimli bir dosya. Linkini buraya koyuyorum, isteyenler buradan da bakabilir:
▫️https://www.techpowerup.com/gpu-specs/docs/amd-rdna-whitepaper.pdf
Makalemde genel olarak bu dokümanın belirttiği kadarıyla ilerleyeceğim. Sonrasında bu mimarili ekran kartlarını tanıtacağım. Lafı fazla uzatmadan başlayalım.

Makalenin ilk sayfalarında AMD, RDNA mimarisinin verimliliği üzerine ve grafik teknolojilerinin gelişimine vurgu yapmakta genel olarak. Yine belirtildiği üzere bu mimari kendinden önceki nesil ekran kartlarında kullanılan GCN (Graphics Core Next) mimarisini baz aldığını, verimlilik üzerine optimize edildiğini ve bu mimariyle olan geriye dönük uyumluluklarından bahsedilmiş. Devamında grafik çipinin içinde yer alan Hesaplama birimlerinin (Compute Units/İngilizce kısaltması CU) çalışma prensibine değinmekte. Hesaplama birimlerini ileride açıklayacağım.

Devamında söylendiği üzere GCN mimarisinde gölgelendirme derleyicisi (Shader Compiler) {2 ve 3 boyutlu ortamlarda hesaplama işlemleri yapılırken (oyun sahneleri gibi) GPU'nun (Graphics Processing Unit/Grafik İşleme Birimi) içindeki Stream Processor yani görüntü işlemcileri -ki bunlara Shader da denir- denilen küçük işlemciler kullanılır. (Grafik çipini bir vücuda benzetecek olursak Stream Processor'ler o vücudun hücreleri yani yapıtaşlarıdır.) Bu küçük işlemcilere Shader denmesinin sebebi shading (kaplama) işlemini bu küçük işlemciler yürütür.} her bir iş yükünde toplam 64 komut (wavefront) oluşturur. Bu durumu ileride CU'ların yapısını açıklarken değineceğim ama öncelikle 2 ve 3 boyutlu ortamlarda nesnelerin nasıl oluştuğundan (oyun sahnelerinde olduğu gibi) bahsedelim. İlk olarak bazı kavramları açıklayalım

Pixel, vertex ve shader. Muhtemelen bu kavramları biliyorsunuzdur, bilmeyenler için de tanıtmış olalım.

Pixel nedir?

Piksel Türkçemize aynı anlamıyla geçen bir kelimedir. Bildiğiniz gibi ekranda gördüğümüz görüntüyü oluşturan küçük parçalardır. Tıpkı bir yapboz gibi her pikselin belli bir renk yoğunluğu vardır {biliyorsunuz; kırmızı, mavi ve yeşil ana renklerden olduğundan görünür ışıkta gördüğümüz bütün renkler bu 3 rengin karışımından ortaya çıkar, piksellerin renk oluşturma mantığı da bu şekildedir} ve bunlar birleşerek bize tek bir görüntüyü yani kareyi (frame) sunar.

Vertex nedir?

Vertex basitçe belirtmek gerekirse, 3 boyutlu bir ortamda bulunan cisimleri birleştiren köşelere denir. Herhangi bir oyunda veya bilgisayar ortamında bulunan cisimler belli koordinatlara sahiptir ve bunlar birleşerek poligonları, poligonlar birleşerek cisimleri oluşturur. Matematikte bildiğiniz gibi X ve Y koordinatları bir noktanın yönünü belirtirler. Tıpkı konum hesaplanırken kullanılan enlem ve boylamlar gibi. Ama 3 boyutlu ortamlarda cisimlerin yüksekliği gibi bir etmen de olduğundan ekstradan bir koordinata daha ihtiyaç vardır ve bu Z koordinatıdır. Bu koordinat cismin dikey yüksekliğini belirtir. İşte bu koordinatlar birleşerek cismin 3 boyutlu ortamdaki konumunu oluştururlar.

Shader nedir?

Shader kelime anlamı olarak gölge demektir. Bİldiğiniz gibi ekranda gördüğümüz her pikseller belli bir düzende sıralanır. Ve gördüğümüz her karedeki her cismin belli bir dizilişi olduğundan, (gölgelendirme, ışıklandırma, doku modelleri vs.) bu süreçleri işleyen bir sisteme ihtiyaç vardır. İşte bu düzenlemeleri yapan GPU programcıklarına Shader denir. GPU programcığı dememin sebebi bu işlemleri grafik işlemcinin kendi bünyesinde yürüttüğünden dolayıdır. Yani grafik işlemci (GPU) kendisine yüklenilen sürücü üzerinden bu komutları ve işlemleri Stream Processor'i kullanarak yürütür.

Şimdi hesaplama biriminin yapısını kısaca tanıyalım, zaten ileride yeniden değineceğiz.
Hesaplama birimleri (Compute Units/CU) AMD'nin grafik çiplerinde görüntü işlemcilerinin (Stream Processors) yani grafik işlemcinin yapı taşlarını oluşturan bu birimlerin bir araya gelmesiyle oluşturduğu kümelerdir. Yani hesaplama birimleri birleşerek grafik çipinin temel kas ve iskelet gücünü oluşturur.

images (7).jpeg

Üstteki resimde bir hesaplama biriminin diyagramını görüyorsunuz. Şimdi bu birimleri açıklayalım:

Vector Units (Vektörel Birimler): Bu birimler Stream Processor'lerin ta kendisidir. Adından da anlaşılacağı üzere bu birimler vektörel yani değeri olan verileri işlediği için (oyun sahnelerinde ön plana çıkan hesaplamalar gibi) bu ismi almıştır.

Scalar Units (Skaler Birimler): Adı üzerinde olduğu gibi bu birim skaler yani yönsüz olan verileri işler. (Arka plan hesaplama işlemleri gibi düşünebilirsiniz.)

Vector and Scalar Registers (Vektörel ve Skaler Birim Yazmaçları): Bu birimler vektör ve skaler birimlerin işlediği verileri tutan önbellek benzeri birimlerdir.

Local Data Share (Yerel Veri Paylaşımı): Bu birim CU'nun genel olarak işlenen verilerini tutan genel bir önbellek tarzı olan bir birimdir.

Scheduler (Programcı): Vektör ve Skaler birimlerinin işlediği verileri derleyen ve düzenleyen birimdir.

Branch & Message Unit (Komut ve Mesaj Birimi): CU'nun diğer CU'lar ile bağlantısını sağlayan ve oralardan aldığı komut ve mesajları denetleyen birimdir.

Texture Filter Units (Doku Filtreleme Birimleri): Oyun sahnelerinde uzak konumlarda yer alan doku piksellerini işleyen ve düzenleyen birimlerdir.

Texture Load/Store/Fetch Units (Doku Yükleme/Depolama/Gönderme Birimleri): CU'larda işlenen doku verilerinin depolandığı ve işlendiği yerlerdir.

Böylece CU'nun yapısını anlatmış olduk. Şimdi aşağıdaki resimde de göreceğimiz gibi RDNA mimarisiyle inşa edilen bir hesaplama birimine bakacağız. Az önce gördüğümüz CU diyagramı GCN mimarisine aitti. Şimdi RDNA CU yapısına bakalım:
images (8).jpeg

RDNA'nın GCN'ye göre getirmiş olduğu en büyük yeniliklerden birisi CU içindeki birim sayısını arttırması oldu. Zaten gördüğünüz gibi her birimde bir artış gözükmekte hemen hemen. Mesela Texture Filter birimleri GCN'de 4 taneyken RDNA'da 8'e yükseldi. Burada belirtmek gerekir ki RDNA CU'ları yapısal olarak köklü bir değişime uğrasa da dizilim olarak GCN'yi temel almıştır ve geliştirilmiştir.

Yazının devamında önbellek hiyerarşisinin yeniden dizayn edildiğini ve bunun bellek bant genişliğini arttırdığı ifade edilmiş. Eski jenerasyonda L1 önbelleği CU'larda bulunurken L2 önbelleği ise yekpare olarak çipin içine yerleştirilmişti. L2 önbelleğinin işlevi CU'lar ile bellek kontrolcüler ve GPU'nun içinde özelleşmiş birimler olan Geometri Motorları ve Rasteriser'lar (ileride açıklayacağım) arasındaki veri akışında kullanılıyordu.
807-block-diagram.jpg

(GCN mimarili Radeon RX 580'in diyagramı)
RDNA'da ise 3 seviyeli bir önbellek hiyerarşisinden söz edebiliriz. Bunlar L0,L1 ve L2 önbellekleri olarak 3 gruptan oluşmakta.
Diagrama-Navi10.jpg

L0 önbelleği GCN'deki gibi CU'ların içinde yer alırken L1 önbelleği bu diyagramda da gördüğünüz üzere GPU'nun ara birimleri olan ROP birimleri (Render Output Unit) ile grafik komut işlemcisi gibi birimlerin arasında yer alıyordu. L2 önbelleği ise GCN'den farklı olarak bellek kontrolcülerinin yakınına parçalı olarak dizilmişti. Belirtildiğine göre L2 önbelleği doğrudan bu kontrolcülere bağlıydı ve bütün çip tarafından kullanılıyordu.
KIsaca önbellek hiyerarşisinden bu şekilde bahsedildikten sonra CU'nun içinde gördüğünüz gibi 2 temel blok olduğundan, bunlara Gölgelendirici Motoru (Shader Engine) dendiği belirtilmiş. Her bir Shader Engine 2 adet Shader Array'dan (Gölgelendirici Dizisi) -ki bu birimler de paylaşımlı L1 önbelleğinden, 1 adet pikselleştiri (Rasterizer) ve Primitive Unit'den (ileride açıklayacağım.) oluşmakta.

Yazının devamında bu mimarinin PCI express 4'ü kullanan ilk mimari olduğunu ve PCIe 4 arayüz bağlantısının 3'e göre 2 kat daha fazla veri aktarımı yapabildiği belirtilmiş.
Screenshot_20220605_164428.jpg

Gördüğünüz gibi PCIe 4 versiyonu 3'e göre neredeyse 2 kat daha fazla veri aktarımı yapabilmekte.

Sonrasında GPU çipinin ortasında yer alan ara birimlerden birisi olan komut işlemcisinden (Command Processor) söz edilmiş. Buna göre komut işlemcisi API komutlarını alır ve bu komutları GPU'nun farklı olan her bir veri hattında yönetir. Yani bu komutları çip boyutunda yönetir. Şimdi bu işleyişi kabaca açıklayalım.
Yazımımızın en başında shader, pixel gibi kavramların 3 boyutlu ortamdaki işlevinden söz etmiştik. İşte bu 3 boyutlu sahneler oluşturulurken bir yığın komutlar kullanılır. İşte bu komutları barındıran -özellikle grafik işleme ile alakalı olanlar için- komut kütüphanelerine Application Multimedia Interface (Uygulama Programlama Arayüzü), kısaca API denir. Bu komutlar belli bir sıraya dizilerek GPU'nun anlayabileceği şekilde (nihayetinde işlemciler de makine dili kullandığı için) ekranda gördüğümüz her şey oluşturulur.
Günümüzde genel olarak 3 büyük grafik kütüphanesi kullanılır. Bunlar DirectX, Vulkan ve OpenGL'dir. Belirtildiğine göre bu komut işlemcisi bu kütüphaneleri destekler ve bunları yönetir.
Bununla beraber yine bu grafik çiplerinde bulunan önemli bir birim vardır ki o da Eşzamansız Hesaplama Motorları'dır. (Asynchronous Compute Engines/ACEs)
Bunların işlevi komut akışını düzenleyip belli bir döngü zinciri olarak gruplayarak (shader wavefront/grafik komutlarının belli bir örgüye göre dizilmesi) CU'lara göndermektir. Kabaca açıklayacak olursak:
Bir oyun çalıştırılırken oyun motorunun yazılmış olduğu API (DirectX, Vulkan veya OpenGL) komutlarını ilk olarak komut işlemcisi (Command Processor) alır ve işler. ACE'ler ise bu komutları belirli gruplara dizerek (shader wavefront) bunları CU'lara gönderir ve CU'lar da bizim ekranda gördüğümüz (oyun sahnelerindeki her şey) her şeyi işler ve ekrana yansıtırlar.
Bundan sonra yeni bir başlığa geçiyoruz. (Aslında bu başlık devamında genel olarak CU'nun ayrıntılı açıklaması ve birimlerin işlevleri anlatılmış, bu yüzden bazı yerler tekrara düşerse affola.)


RDNA Shader Array and Graphics Functions (RDNA Gölgelendirici Dizisi ve Grafik Fonksiyonları)

Geleneksel grafik işleme sürecinde (Graphics Pipeline) vertexler üçgenlere, dolayısıyla vertex gölgelendiricilerine (vertex shader) ve sonrasında bunlar poligonlara dönüşürler. Poligonlar da birleşerek nesneleri ve onların dokularını oluştururlar.


RDNA mimarisinde önceki nesil GCN mimarisinden farklı olarak Shader Array adlı yeni bir sistem göze çarpmakta. GCN'de bütün CU'lar çipin içinde birleşerek Shader Engine'leri oluşturmaktaydı. Genellikle bunların sayısı GCN'nin her neslinde (genel olarak amiral gemisi kartlarda) 4 adet idi. RDNA ise bu dizinleri tabiri caizse yeniden adlandırarak Shader Array ismini vermiş.
Sonrasında Primitive Unit'ten (temelleştirici birim) bahsedilmiş. Bu birim vertexleri poligonlara dönüştürmekle görevli olan bir yapıdır. Bununla beraber bu işlemler sırasında Tesselation (mozaikleştirme) işlemlerini de yürütür.

Not: Tessellation nedir?
Türkçemizde mozaikleştirme olarak çevrilen bu kelime tıpkı gölgelendiricilerin (shader) yaptığı gibi dokular üzerindeki ayrıntıyı yani poligon sayısını arttırarak ayrıntı seviyesinin daha yüksek olmasını sağlar. Daha iyi anlaşılması için şu resim üzerinden gidelim:
images (9).jpeg

Yukarıda gördüğünüz üzere mozaikleşme oranı arttıkça nesne üzerindeki ayrıntı seviyesi de artmakta. Kabaca bu şekilde açıklayabiliriz.

Diğer önemli parçalardan biri olan Rasterizer'lar (pikselleştiriciler) -ki bu birimlerin her biri bir Shader Array'da (gölgelendirici dizisi) birer tane bulunmaktaydı- 3 boyutlu ortamda bulunan bütün geometrik nesneleri piksel merkezli bir ızgaranın içinde pikselleştirimiş nesnelere dönüştürür. Bunu 2 örnekle açıklayalım:
images (1).png

images (2).png

Ekranda gördüğümüz her bir nesne birer geometrik şekil olduğundan belli bir şekle sahiptir. Ancak biz 3 boyutlu bir ortama bakarken 2 boyutlu bir perspektiften baktığımız için (ekranı kamera gibi varsayarsak) 2. resimde de gördüğümüz gibi her nesnenin ekranda 2 boyutlu bir yansıması oluşur, bununla beraber ekranımız piksellerden oluştuğu için bu geometrik şekillerin ekrana yani piksellere yansıtması gerekir. Tıpkı 1. resimdeki gibi.

Bu başlığın altında son olarak belirtilen kısım olarak CU'ların yapısı aktarılmış. Her çift CU'nun 4 SIMD (Single Instruction Multiple Data/Tek Komut {Seti} Çoklu Veri -yani az sayıdaki komut veya işlem birimiyle çoklu veri akışını sağlayabilen birimler-) demetine sahip olduğunu ve bunların döngü başına 256 FLOPS (Floating Point Operations per Second/Saniye başına Kayar Nokta İşlemi Sayısı) hesaplama gücünün olduğu belirtilmiş. Bununla beraber SIMD'lerin dahili skaler birimlerinin (bkz. sayfanın başlarında yer alan CU tanımı) yüksek bant genişliği sağlayan önbelleklere sahip olduğu belirtilmiş. Ve ilk başlarda belirttiğim önbellek hiyerarşisinde olduğu gibi önceki nesilden farklı olarak hem L2 önbelleğinin miktarı arttırılmış ve basitleştirilmiş bir tasarım izlenmiş hem de ekstradan CU'ların içinde dahili olarak bulunan L1 önbelleğinin varlığını görmekteyiz.

Dual Compute Unit Front End (Çift Hesaplama Birimi Ön Yüzü)

Bu başlıktan da anladığınız üzere CU içerisindeki birimlerin kabaca çalışma prensibinden bahsedilmiş.
Screenshot_20220829_120216.jpg

Üstteki şekilde de gördüğünüz üzere (en solda Instruction Memory Fetch kısmının yanındaki 32 KB yazan blok olan) L0 komut belleğinin (Instruction Cache) 4 SIMD arasında paylaşıldığı belirtilmiş. Görsel bir şekilde açıklayacak olursak:
IMG_20220721_174702.jpg

Üstte gördüğünüz gibi hem önceki nesil olan GCN mimarisinde hem de RDNA'da SIMD birimleri bulunmakta. RDNA'daki CU'lar toplam 128 ALU (Aritmethic Logic Unit/Mantıksal İşlem Birimi) diğer bir adıyla Stream Processor'ler bulunmakta. Zaten standart olarak her 2 nesilde CU başına 64 ALU vardı. RDNA, GCN'nin çalışma prensibini yeniden düzenleyerek 2 CU'yu tek bir kalıpta tasarladı diyebiliriz. Yani Dual Compute Unit denmesinin sebebi bu kısaca. 😄 Böylece her bir SIMD biriminin içindeki birim sayısı artmış oldu. Turuncu olarak işaretlediğim kısımlar SIMD birimlerini (yani bir SIMD bloğunu) göstermekte. Resimde de gördüğünüz üzere RDNA'da 32 SIMD birimi, GCN'de 16 adet SIMD birimi bulunuyordu. Az önce belirttiğimiz gibi RDNA CU'sunda 128, GCN CU'sunda 64 adet ALU bulunduğu için -ki her iki nesilde de SIMD bloklarının sayısı 4 adet olduğundan- RDNA'da bir SIMD bloğu başına 32, GCN SIMD bloğunda ise 16 ALU bulunmaktaydı ve bu birimlerin adı RDNA'da SIMD32, GCN'de SIMD16 olarak adlandırılmakta.

Buraya kadar açıkladığımız kısımda SIMD'lerin yapısını anlamış olduk. Şimdi SIMD'ler ile CU'larda yer alan önbellekler arasındaki veri akışına yani işlem sürecine bakalım:
Açıkladığı üzere komut önbelleği yani L1 önbelleği toplam 32 KB boyutunda (2 adet bulunduğu için, çift CU yapısından dolayı) ve buradan gönderilen komutlar 4 kanal üzerinden gönderilmekte. Bunlar:
▫️SALU, SMEM (Sırasıyla, Scalar ALU ve Scalar Memory)
▫️
VALU (Vector ALU)
▫️VMEM (Vector Memory)
▫️
Export, Branch, Message (Gönderim, komut alma ve mesaj {bu CU içerisinde yer alan Branch & Message Unit üzerinden yapılmakta})
Hatırlarsanız CU'nun temel bileşenleri olan Vektörel ve Skaler birimler ve bunların işlediği verileri kaydeden yazmaçları (Vector and Scalar Registers) ve bunlarla beraber bütün bu verilerin dışarıyla bağlantısını sağlayan Scheduler ve Branch & Message Unit'ten oluşmaktaydı. İşte biraz önce maddeler halinde belirttiğim komut dizileri bu birimlere gönderilen komutları içermekte. Bu komutlar diyagramda da gördüğünüz üzere 20 Wave Controllers (Komut kontrolcüleri) adlı birimlerde tutulmakta ve geçmekte.
Bütün bu işlemler bittikten sonra bu komutlar işlenmek üzere SIMD'lere gönderilir. İşte SIMD'lerde işlenilen bu komutlar (Wavefronts) bizim ekranda görmüş olduğumuz işlemlerde yani 3 boyutlu ortamda kullanılmaktadır. GCN mimarisinde bu işlemler (komutlar) belirtildiğine göre Round-Robin temelli bir algoritma üzerinde çalışmaktaydı. Kabaca açıklayacak olursak:
Round-Robin algoritması (Türkçemizde sıralı veya listeleyerek işleme anlamına gelir) farklı zamanlamalara ait olan işlemleri sıralı yaparak daha efektif bir çözüm sunan bir algoritmadır. Örnek olarak:


rr-round-robin-algoritmasi-1.jpg

Resimde de gördüğünüz gibi her işlem farklı bitirilme süresine sahip olmasına karşın hepsiyle ilgilenmiş olunarak daha verimli bir işlem olması amaçlanır.

Konumuza dönecek olursak GCN mimarisi bu algoritma temelli çalışmaktaydı. Bu her saat döngüsünde bir noktada gecikmeye sebep olmaktaydı. Biliyorsunuz GCN'de SIMD blokları 4 tane olduğundan bir seferde (saat hızı başına) 4 komut döngüsü yürütülebilmekteydi. RDNA mimarisinin hem SIMD bloklarının -ve diğer birimlerinin- dolayısıyla hem de ana çalışma prensibinden dolayı 4 kat daha hızlı olduğu belirtilmiş. Bunda RDNA'nın komut işleme mekaniğinin 2 farklı yolla yürütülmesi (Wave 32 ve Wave 64) de etkili olmuş.
Not: Wave 32 ve Wave 64, SIMD'lerin işlediği komutların boyutunu belirten bir kavramdır. Örneğin:
images (25)_54051283498001.jpeg

Bu resimde de gördüğünüz gibi GCN komut işleme dizisi sadece Wave64 destekli olduğu için (CU içerisindeki bütün SIMD'ler eş zamanlı çalıştığı için 64 birim yani) her bir komut dizisi sırayla çözülmekte. RDNA SIMD blokları ise hem ayrı hem eş zamanlı bir şekilde çalıştığından dolayı hem Wave32 hem Wave64 modunda çalışabilmekteydi. Böylece bütün komut dizilerini daha kısa sürede çözümleyebildiğinden dolayı bunun da gecikmeyi azalttığı vurgulanmış.

Vector Execution (Vektörel Yürütme/İşleme Süreci)

Bu başlıkta anlaşılacağı üzere vektörlerin nasıl işlendiğine bakacağız. Daha önce de açıkladığımız gibi CU içerisindeki temel bileşenler olan Vektörel ve Skaler birimler grafik işlemcinin temel gücünü oluşturur. Bu ikisi arasında en çok kullanılan ve en önemli bileşen ise Vektörel birimler yani Akış İşlemcileri'dir. (Stream Processors) Belirtildiğine göre bir grafik işlemcinin performansı ve verimliliği bir yönde yürütme birimlerinin yani görüntü işlemcilerinin paralel hesaplama kapasitelerine yani kayar nokta hesaplama oranına (FLOPS) bağlıdır.
Screenshot_20220829_120232.jpg

Tabloda gördüğünüz gibi 2 mimarinin SIMD dizilimi görünmekte. GCN'deki SIMD'ler 4 bloktan oluşmaktaydı ve işlem başına 4 saat döngüsü olmaktaydı. RDNA'da SIMD'ler birleştirildiği ve kapasitesi arttırıldığı için (ayrıca Wave64 ve Wave32'nin çalışma algoritmalarının genişliğinden dolayı) her bir SIMD'de işlem başına 1 saat döngüsü olmaktaydı. Zaten devamında belirtildiği üzere her bir SIMD'de bulunan Vector General Purpose Register (VPGR/Vektör hesaplamaları yapan genel amaçlı yazmaçlar) bulunmakta. En çok vurgulanılan şeylerden birisi CU'larda bulunan vektörel hesaplamaları yapan yazmaçların (register) hem 16 bit kayar nokta değerleri (Float/FP) tutabilirken (genellikle bu tip grafiksel hesaplamalarda 32 bit Float Point (FP) değerleri kullanılır, bununla beraber bu değerler 2'ye bölünerek 16 bit FP'ler de kullanılır) hem de 4 adet 8 bit veya 8 adet 4 bit tam sayı değerlerini (Integer/Int) kullanabilmekte.

Dual Compute Unit Memories (Çift Hesaplama Birimi Bellek Hiyerarşisi)

Bu başlık altında CU'ların yapısındaki bellek hiyerarşisine bakacağız. Daha önce söylediğimiz üzere her CU saat hızı başına 256 FLOPS hesağlama gücüne sahipti. Biliyorsunuz ki önbellek hiyerarşisi de L0, L1 ve L2 olarak 3'e bölünmüştü. L0 önbellekleri çift CU içinde bulunurken L1 önbelleği paylaşımlı olarak her bir gölgelendirici dizininde (Shader Array) ve L2 önbelleği de çipin en dışında bulunan bir birim olduğundan bütün grafik işlemcisiyle paylaşımlıydı.
Screenshot_20220829_120249.jpg

Üstteki tablo CU içerisindeki SIMD'lerin ve diğer birimlerin veri akışının bir diyagramı. Belirtildiğine göre Wave 32 sistemini daha verimli ve etkili kılmak her SIMD'in yeniden düzenlendiği belirtiliyor ki bu da önceki nesil mimariye göre 2 katlık bir artış olduğu vurgulanıyor. Zaten buradaki diyagramdan da gördüğümüz üzere çift CU dizilimi GCN'ye göre 2 katlık artış gerçekleştirdiğinden bu veri akışına da etki ediyor. Devamında her SIMD'in bellek kanalına (yani üstteki tabloda gördüğünüz ortadaki bellek havuzuna) iş yüklerini iletebilmesi adına 32 bit olan bir bant genişliğine sahip olduğu, bellek kanalındaki istek arabiriminin (request bus) bunları 4 bayt şeklinde düzenleyip her bir kanalda 128 bit genişliğinde bir veri ağı oluşturduğu belirtilmiş. Buradan gönderilen veriler yeniden 32 bit genişliğinde bir veri yolundan SIMD'lere gönderebilmekte. Aynı veri yolu -diyagramın sağ tarafında gördüğünüz üzere- hem doku birimlerine (Texture Load/Store/Fetch Unit) hem de L0 önbelleklerinde işlenmekte.

Local Data Share and Atomics (Yerel Veri Paylaşım Havuzu ve Yapısı)

Her CU'nun yapısında tıpkı önbellekler gibi LDS yani Local Data Share/Yerel Veri Paylaşım Havuzu denilen birimler bulunmakta. Bunların görevi kaplama işlemlerini içeren (texturing) grafiksel fonksiyonları (SIMD'lerin oluşturduğu veriler) yüksek bant genişlikli bu birimlerde tutmak ve işlemden geçirmekten geçirmekten ibarettir. SIMD tarafından adreslenen veriler burada tutulur ve işlenir.
Her CU çift halinde dizili olduğundan dolayı LDS 2 kat daha fazla kapasiteye ve bant genişliğine sahiptir. Her bir LDS 32 kümeden (bank) oluşan 64 KB genişliğinde çift dizine sahiptir. Bu da 64 küme ve 128 KB demek oluyor. Yazıda belirtildiğine göre önceki nesilde LDS'deki her küme (bank) 512 girdili (entry) -ki bunlar dizin başına 32 bit genişliğinde idi- idi ve her saat döngüsünde okuma ve yazma işlemlerini yapabiliyordu. RDNA'da çift CU bulunduğundan dolayı LDS'nin kapasitesi ve performansı da 2 kat artmış oldu.
RDNA mimarisinin LDS'ler için 2 çalışma modu olduğu ifade edilmiş. Bunlar CU ve WGP (Work Group Processor) modları olarak bir derleyici olarak kontrol edilmekte. Bununla beraber biçimlendirici bir birim (Former) her bir CU'daki LDS'leri SIMD'lerin durumuna ve davranışlarına göre bölerek maksimum verimliliği sağladığı ifade edilmiş.

Vector Caches (Vectör Önbellekleri)

Yeni nesil önbellek hiyerarşisinin RDNA'nın çift CU dizilimi sayesinde ve LDS'nin hem daha verimli hem de SIMD'lerin veri yollarının 32 bit genişliğinde veri akışına göre optimize edildiğinden dolayı iş hacmi ve verimliliğinin GCN'ye göre 2 kat yüksek olduğu belirtilmiş. Bununla beraber her CU'da birer tane veri yolu (bus) bulunduğundan dolayı -ki bunların her birisi bir önbelleğe, bir çift SIMD'e, ve Doku Filtreleme Birimleri'ne eşleştirilir- önceki nesile göre 4 katlık bir artış olduğundan bahsedilmiş.
Her L0 yani CU içindeki önbellek miktarı 16 KB idi ve bunlar birbiriyle bağlantılı 4 kanal üzerinde çalışıp her döngü başına 128 bitlik bir bant genişliğine sahipti. Grafik dokularının L0 önbelleğinde depolanmasına karşın çıktılar ilk olarak doku haritalama birimlerine (Texture Mapping Units) gider.


Not: Oyunlarda, grafik ayarlarında gördüğümüz Anisotrophic Filtering veya Texture Filtering (eşyönsüz süzme veya doku filtreleme) uzaktaki dokuların bozulan ve bulanıklaşan pikselleri yeniden işler. 1x, 2x, 4x, 8x, 16x gibi değerlere sahiptir. Bu değerler hedef pikselin örnekleme sayısını yani ayrıntı seviyesini belirler. İşte bu işlemi AMD'nin grafik çiplerinde CU'ların içindeki Texture Mapping (doku haritalama) birimleri yapar.

Tabii RDNA'da çift CU'dan dolayı Texture Mapping birimleri de 2 kat arttı. Bununla beraber her doku adresleme işleminde TMU'lar (Texture Mapping Unit) en yakın SIMD'ler ile eşleşir ve içindeki veriyi serbest bırakır. Böylece SIMD'ler bu verileri işler ve grafik işlemleri yürütülür.


Export and GDS (Global Data Share) {Veri Gönderimi ve Global Veri Paylaşım Havuzu}

Veri gönderim işlemi (export), herhangi bir CU'nun Vektör Yazmaçları'nda (Vector Registers) bulunan programlanabilir gölgelendiricileri (programmable shaders) yani grafik işlemlerini çipin geri kalanı için erişilebilir hale getirilmesidir. Örneğin bir piksel gölgelendiricisinin (pixel shader) hesaplama işlemi bittiğinde ekrana gönderilmeden önce renk tonu ve derinliği ayarlanır böylece ekranda gördüğümüz piksele ve 3 boyutlu ortamdaki görüntüsüne dönüşür. Bununla beraber bu tür gönderilen veriler GDS denilen birimlerde tutulur ve adreslenir. GDS'nin çalışma mantığı LDS ile benzerdir. İkisi de önbellekler gibi çalışırlar ve verileri adreslerler.

Shared Graphics L1 Cache (Paylaşımlı Grafik L1 Önbelleği)

AMD'nin bu mimari aracılığıyla yapmış olduğu en köklü değişimlerden birisi bahsedeceğimiz bu önbellek hiyerarşisidir.
Screenshot_20220829_120309.jpg

AMD'nin belirttiğine göre verileri uzun bir mesafeye göndermek (CU'ların içinden çipin genelde SIMD'lere en uzak mesafede bulunan önbellek havuzuna olan mesafe) hem maliyetli hem de zor olduğundan, AMD üstte gördüğünüz resimdeki gibi L0 (önceki mimaride L1 olan) ve L2 önbelleklerinin arasına L1 önbelleği yerleştirdi. Yeniden hatırlayacak olursak:
Diagrama-Navi10.jpg

Orta kısımlarda gördüğünüz gibi L1 önbellekleri her bir gölgelendirici motorunda (shader engine) 2'şer tane bulunurken L2'ler ise çipin dışına doğru diziliydi. GCN mimarisinde genel paylaşımlı bir L2 önbelleği vardı ve bu birim her CU'da bulunan L1 önbelleklerinden çıkan verileri ve bununla beraber çipin diğer birimlerinin (geometri motoru vs.) iletilerini depolamak ile görevliydi. RDNA ile gelen L1 önbelleği GCN'den farklı olarak her bir gölgelendirici dizisinde (shader array) bulunduğundan CU'lardan çıkan verilerin toplanması amacıyla bu önbellek sayesinde merkezi ve toplu bir ağ kurulmuş oldu.

L2 Cache and Memory (L2 Önbelleği ve Bellek)

RDNA önbellek hiyerarşisinin en belirgin özelliklerinden birisi L2 önbelleğine gelen bütün verilerin yeni L1 önbelleği sayesinde derlenip iletilmesi oldu. Son vermiş olduğum diyagramda gördüğünüz üzere parçalı bir dizilime sahip olduğu görülmekte. Bu parçalar çipin en dışında bulunan bellek kontrolcülere bağlantılıdır. Bellek kontrolcüleri çip ile video bellekleri (VRAM) arasındaki veri akışını kontrol eden birimlere denir.
Yine RDNA mimarisinin en önemli faydalarından birisi de yeni nesil bellekler olan GDDR6 bellekleri ilk kullanan ekran kartlarının mimarisi olma özelliği olmasıydı. Her bellek kontrolcü 32 bit genişliğinde ve 16 Gbps (Gigabit) gibi bir bant genişliği sağlamakta. Burada eski nesil mimaride kullanılan GDDR5 belleklere göre 2 kat bir artış olduğu ifade edilmekte.


Radeon Multimedia and Display Engines (Radeon Çoklu Ortamı ve Görüntü Motorları)

Bir ekran kartının en önemli parçalarından birisi olan görüntü ve video motorlarına bu başlık altında bakacağız. Belirtildiğine göre video kodlama ve çözümlemede RDNA CU'ları kullanılmakta. Ancak pek çok ekran kartında olduğu gibi bu tür işler için genellikle ayrı bir donanım bulunur ki (display, video engine/ekran, görüntü motorları) hem verimlilik hem de zaman açısından tasarruf edilebilsin.
Aynen bu şekilde belirtildiği üzere RDNA mimarisinde ayrı ve özelleştirilmiş bir donanım bulunmakta ve böylece çipteki CU'lar yük altında kalmadan hem güç verimliliğini hem de iş hacmini arttırmakta. Video motorunun yeni nesil VP9 Codec desteği belirtilmiş, ki önceki nesil mimarilerde bu desteğin yazılımsal olarak sağlandığı belirtilmiş.

Not: Video Codec'leri, videoları işleme aşamalarında kullanılan decode (çözme) ve encode (şifreleme) işlemlerini yürüten araçlardır. Biz bu makalede bunlardan temel 3 tanesini göstereceğiz. Kısaca:

H.264: 2008 yılında çıkan bir görüntü sıkıştırma standartıdır. MPEG-4 adlı bir görüntü kodlama standartının muadili olarak ortaya çıkmıştır. MPEG-4'ten 2 kat daha iyi verimlilik ve %25 daha iyi sıkıştırma kalitesi sunar.

H.265: H.264'ün halefi olarak çıkan, H.264'e kıyasla 2 kat verimli olan gelişmiş bir video sıkıştırma standartıdır. Bant genişliği ve sıkıştırma kalitesi daha verimli olduğundan selefine kıyasla 2 kata yakın az veri gerektirir.

VP9: Google tarafından 2010 yılında WebM adlı bir video dosya biçimi için çıkardığı telifsiz ve açık kaynak kodlu bir kodektir.
Screenshot_20220829_120328.jpg

Kaldığımız yerden devam edelim. Üstteki tabloda gördüğünüz gibi video motoru decode (çözümleme) 1080p çözünürlükte 600 kare/saniye (Frame per Second/FPS) ve 4K çözünürlükte 150 FPS desteğine sahip. Şifreleme yani encode modunda ise yaklaşık olarak yarı miktarında kare hızı sunmakta. Daha gelişmiş bir kodek olan HEVC yani H.265'te ise 8 ve 10 bit renk derinliği ve 8K çözünürlüğü bulunmakta.

Advanced Visual Effects (Gelişmiş Görsel Efektler)

Hesaplaşma işlemi eski nesilin geride kalmış olduğu bir özellik olan görsel efektler (yani grafik gelişimi) konusunda yeni nesil mimariler sayesinde daha güçlenmekte. Bu yazıda belirtildiği üzere pek çok oyun, görüntü kalitesini iyileştirmek için Tempoal AA (Anti Aliasing) yani Geçici Kenar Yumuşatma kullanmakta. Ancak bazı oyunlarda bu kenar yumuşatma nesne kenarlarındaki renk doygunluğunu etkilediğinden görüntü kalitesini biraz kötü yönde etkilemekte.

AMD-DLSS-Teknolojisi-FidelityFX-Super-Ornekleme-Teknolojisi.jpg

AMD, burada FidelityFX adlı bir teknolojik takımın sunmuş olduğu Contrast Adaptive Sharpening (CAS) yani Kontrast Uyarlamalı Keskinleştirme teknolojisi sunuyor. Bu teknolojinin işlevi nesnelerin ayrıntı seviyesini arttırırken beraberinde kenar yumuşatmanın vermiş olduğu görüntüyü daha da yumuşatmakta. Zaten AMD bu teknolojinin bütün kenar yumuşatmalarla uyumlu olduğunu ve onlarla kullanılmasının daha verimli olduğunu belirtmiş.
Bu teknoloji temelde görüntüyü 3x3'lük bir filtreye alarak hangi kısımların keskinleştirileceğini hesaplamakta. Bununla beraber bu teknoloji RDNA mimarisinin özelliklerinden faydalanabilmekte.

Radeon RX 5700 Family (Radeon RX 5700 Ailesi)

Bu başlık altında RDNA mimarisiyle üretilen RX 5000 serisi ekran kartlarının önceki nesil GCN mimarili amiral ekran kartlarından birisiyle olan karşılaştırmasına bakacağız. İlk olarak bu tabloya bakalım:
Screenshot_20220829_120346.jpg
Screenshot_20220829_120359.jpg

Belirtildiği üzere RDNA'nın genel olarak GCN mimarisinin en güçlü ekran kartı olan Radeon RX Vega 64'ün üstün hesaplama gücüne karşılık (12.66 TFLOPS {TeraFLOPS} vs. 9.754 TFLOPS) yaklaşık 1.5-2 kat daha fazla bir önbellek bant genişliğine sahip olduğunu görüyoruz. Yine bununla beraber poligon tarama ve ayırma işlemlerinde (triangle rasterization and culling) RDNA'nın selefine fark attığı görülmekte.
Screenshot_20220829_120417.jpg

Üstteki resimde de gördüğünüz gibi GCN mimarisinden güç alan Radeon RX Vega 64'ün çipi olan Vega 10 kod adlı çipin, RDNA mimarisinin (1. nesil RDNA mimarisinin) en güçlü ekran kartı olan Radeon RX 5700 XT'nin çipi olan Navi 10 kod adlı çipine göre kıyaslama yapılmış. Görüldüğü üzere hem zar alanı 7 nanometrelik fabrikasyon sürecinin artısından dolayı zar alanının yarı yarıya düştüğü ve güç verimliliği sayesinde 1.5 kat Watt başına performans artışı sağlandığı belirtilmiş.

Böylece ana kaynağımız olan en başta belirttiğin RDNA makalesinin sonuna geldik. Tabii bu makale genel olarak 1. nesil RDNA mimarisi anlatmakta. Şu an itibarıyla 2. nesil RDNA mimarili ekran kartları da piyasada bulunduğundan, bu nesil ekran kartlarının özelliklerine de değinelim.

1) Ray Tracing (Işın İzleme):
1662405660109.png

Işın izleme, adından da anlaşılacağı üzere bir sahnede bulunan ışığın hareketlerini gerçek zamanlı olarak izleyip, bunu simüle etmektir. Bu teknoloji bilgisayar dünyasında uzun zamandır var olmasına karşın gerçek zamanlı olduğundan bu işlem oldukça ağır bir işlem ve hesaplama yükü gerektirmekte. Haliyle geçmişteki ve günümüze yakın ekran kartlarının hesaplama gücü yetmediği için bu teknoloji film sektöründe ve bazı animasyonlarda kullanılmaktaydı. (Örneğin Arabalar serisi animasyon yapımları)
2018 yılında piyasadaki önemli ve en büyük ekran kartı üreticilerinden birisi olan NVIDIA, piyasada sunduğu GeForce RTX 2000 serisi ekran kartlarıyla beraber bu teknolojiyi ilk defa oyun dünyasına tanıttı. Bu teknolojiyi NVIDIA'nın Ampere mimarisi makalesinde tanıtacağım için şimdilik bu kadar anlatmış olayım. Şimdi AMD, 2. nesil RDNA mimarisinde ışın izlemeyi nasıl yapıyor kabaca açıklayalım:
rdna-2-compute-units-100867216-large.jpg

RDNA 2 mimarisinde CU'ların dizilimi ve grafik çipinin dizilimi önceki nesil RDNA mimarisiyle hemen hemen aynı düzendeydi. Tek fark CU'ların içinde Işın Hızlandırıcılar (Ray Accelerators) denilen 2'şer tane birim bulunmaktaydı.
ray-tracing-100867214-orig.jpg

Bu birimler Doku Filtreleme Birimleri (Texture Filtering Units) ve LDS'nin arasında bulunmaktaydı. Tıpkı NVIDIA gibi AMD de bu birimleri önbellek ile CU'nun arasına yerleştirdi ki ışın izleme gibi büyük bir iş yükünü, çipin içindeki önbelleklere erişimi daha kısa olsun. Benzer yaklaşımı NVIDIA kendi çiplerinde kullandığı (Ampere ve Turing mimarilerinde) SM'lerine (AMD'deki CU'ların karşılığı) uyguladı. Tabii ki böyle bir iş yükü, dar kapasiteli önbelleklere ve çipten uzakta bulunan VRAM'lara yetmeyecekti. İşte AMD, burada hem gecikmeyi hem de bant genişliği problemini çözen devrimsel bir çözümünü tanıttı:

2) Infinity Cache (Sonsuz Önbellek):
infinity-cache-solution-100867212-orig.jpg
Infinity Cache.jpg


Adı gibi fantastik olan bu teknoloji, gerçekten de adının hakkını verebilecek özelliklere sahipti. Resimde gördüğünüz gibi bu önbellek RDNA 2 mimarili çiplerin dış kısmında bulunmaktaydı ve geniş bir alanı kapsamaktaydı. Aslında bu önbellek en başta belirttiğim önbellek hiyerarşisine bir katkı daha sunmaktaydı. Hatırlarsanız RDNA'da L0, L1 ve L2 önbellekleri vardı. Infinity Cache buna eklendiğinde yeni bir önbellek türü de eklenmiş oldu. Yani L3 önbelleği, Infinity Cache olarak adlandırıldı.
Infinity Cache, bant genişliğini de önemli ölçüde arttırmaktaydı. AMD'nin belirttiğine göre bu çözüm GDDR6 VRAM'lerin sağladığı bant genişliğinin neredeyse 2.5 kat daha fazla bant genişliği sunmaktaydı. Yani çipin içindeki bant genişliği yaklaşık 1.3 TB/saniye civarındaydı ki bu o dönemki en üst seviye ekran kartlarının belleklerinin ulaşamadığı bir bant genişliği idi. Böylece hem VRAM'lerin tükettiği güce kıyasla bu çözüm hem güç verimliliğini hem de performansı arttırmaktaydı. AMD bu çözümü ilk resimde de gördüğünüz gibi kendi sunucu işlemcileri olan EPYC serisi işlemcilerinin çekirdek dizilimindeki önbellek tasarımına benzer şekilde yaptığını ifade ediyor.


Evet arkadaşlar, bunlarla beraber genel olarak bu mimariyi elimizden geldiğince açıklamaya çalıştık. Şimdi bu mimariyle üretilen ekran kartlarını ve oyun konsollarının çiplerine bakalım. İlk olarak konsollar ile başlayalım:

Listemizin ilk başında PlayStation ile başlayalım:


1) Sony PlayStation 5 GPU (Oberon)
images (27).jpeg

Çipin Özellikleri:
  • Saat Hızı: 2233 MHz
  • Gölgelendirici (Shader) Sayısı: 2304
  • TMU (Texture Mapping Unit) Sayısı: 144
  • Render Output Unit (ROP) Sayısı: 64
  • CU Sayısı: 36
  • L2 Önbelleği: 4 MB
  • Zar Alanı: 308 mm2
  • Üretim Süreci: TSMC (Taiwan Semiconductor Manufacturing Company/Tayvan Yarıiletken Üretim Şirketi) 7 nm FinFET (Field Effect Transistor/Alan Etkili Transistör)
  • Güç Tüketimi: 180W
Kod adı Oberon olan bu çip, yeni nesil konsollardan birisi olan PlayStation 5'e güç vermekte. Bu çipe bakmadan önce kabaca PlayStation 5'i tanıyalım:

PlayStation 5, 12 Kasım 2020'de Microsoft Xbox Series S/X konsolları ile benzer zamanda tanıtılan Sony'nin 9. nesil oyun konsoludur. $499 fiyatıyla piyasaya sürülen bu konsol, seleflerinden farklı olarak Blu-Ray sürücüsü olmayan Digital Edition modeliyle beraber $399 fiyatıyla tanıtıldı. Konsolun temel amacı gerçek 4K çözünürlükte 60 FPS deneyimi olması üzerine tasarlanmıştır. Bununla beraber konsol, 480p, 720p, 1080p, 1440p (son gelen yazılım güncellemesinden birisi ile beraber), 2160p (4K) ve 8K (4320p) çözünürlükleri destekler. Konsolda AMD'nin SmartShift teknolojisi sayesinde CPU ve GPU arasındaki verim ve perfomans optimum bir şekilde sağlanır. Örneğin GPU yük altındayken CPU saat hızı düşürülür, böylece performans kaybı olmadan güç verimliliği sağlanır. Konsolda özel olarak tasarlanmış olan daha hızlı yükleme yapabilmesi için yüksek hızlı, 12 kanallı ve 4 depolama çipinden oluşan 825 GB boyutunda bir SSD'ye sahiptir. Bu SSD'nin veri aktarma hızı (sıkıştırılmamış verilerle) 5.5 GB/sn iken sıkıştırılmış veri transfer hızı 8-9 GB/sn arasındadır. Bununla beraber konsolda ekstradan bir M.2 yuvası mevcuttur.

Bu şekilde konsolu kabaca tanıdık. Şimdi konsolun kalbine yani çipe bakalım.

images (26).jpeg

EuNU-3oXMAIiJ6a.jpeg


Daha önce belirttiğimiz gibi bu çipte 36 CU bulunmakta. Ve her bir CU'da birer tane Işın Hızlandırıcısı yani RT çekirdeği (Ray Tracing/Ray Accelerator) bulunmakta. CU'ların dizilimi genel olarak Radeon RX 5700 XT'nin çipi olan Navi 10 çipine benzemekte. Üstte gördüğünüz dikey zar görüntüsüne (die shot) bakalım. Orta kısımda Geometri motoru ve makalemizde bahsettiğimiz komut işlemcileri (Command Processors), açık mavi ile gösterilen L2 önbellekleri ve koyu mavi ile gösterilen ROP birimlerini görmekteyiz. CU'lar ise yeşil olarak, Işın Hızlandırıcılar ise CU'ların arasındakı turuncu şeritler olarak gösterilmiş. Sağda ve solda gördüğünüz sarı dikey 2'şer tane dizili olan şeritler ise çipin VRAM'leri ile bağlantı kuran bellek kontrolcüleridir. PlayStation 5'te 16 GB GDDR6 256 bit bellekler bulunmakta ve bu bellek çipleri 8 tane olduğundan (her bellek çipi 32 bit bant genişliği sağlar) toplam bant genişliği 448 GB/sn idi. En üstte ise AMD'nin 2. nesil Zen mimarili 8 çekirdekli bir işlemci görüyoruz. Bu işlemci 3.5 GHz hızında çalışmakta.
Bu çip her ne kadar 2.nesil RDNA mimarisiyle yapılsa da Infinity Cache bulunmamakta. Bence bunun sebei çipin alanının dar olması ve soğutma problemleri olabilir. Büyük bir çipin, bir oyun konsolunda bulunması hem soğutmasını zorlaştırır hem de güç tüketimi artacağından konsolun güç kaynağının büyük olmasının gerekmesi dolayısıyla konsolun boyutlarının artmasına sebep olacaktı.
Bu şekilde PlayStation 5'i tanıdıktan sonra Xbox konsollarına bakalım:


2) Microsoft Xbox Series X GPU (Scarlett)

images (29).jpeg
images (30).jpeg

  • Shader Sayısı: 3328 (3584)
  • Saat Hızı: 1825 MHz
  • CU/RA (Ray Accelerator) Sayısı: 52 (56)
  • Bellek Miktarı: 10 GB GDDR6 VRAM (560 GB/sn)
  • Transistör Sayısı: 15.3 Milyar
  • Zar Alanı: 360 mm2
  • TMU Sayısı: 208 (224)
  • ROP Sayısı: 64
  • L2 Önbellek Miktarı: 5 MB
  • Güç Tüketimi: 200 W
  • Üretim Süreci: TSMC 7 nm
Microsoft Xbox Series X, sektörün en büyük konsol üreticilerinden olan Microsoft'un 10 Kasım 2020'de tanıttığı 9. nesil oyun konsoludur. Konsol PS5 gibi 4K/60 FPS deneyimi için tasarlanmıştır. PS5'ten donanımsal olarak biraz daha güçlü olan (yaklaşık %15-20 civarı) konsol, PS5'in yaklaşık 10 TeraFLOPS hesaplama gücüne karşın, 12 TeraFLOPS'luk bir hesaplama gücüne sahiptir.

Not: Xbox Series X, ham olarak RTX 3060 Ti, RTX 2080 Super gücündedir. (AMD tarafında ise RX 6600 XT ile RX 6700 XT arasında) PS5 ise RTX 3060, RTX 2070 gücündedir. (AMD tarafında RX 6600 XT ile RX 6600 arası)

Konsolda AMD'nin Zen 2 mimarili 8 çekirdekli 3.8 GHz hızında çalışan SMT (Simultaneous Multi Threading/Eşzamanlı Çoklu İzlek desteği ile 3.6 GHz) özel bir işlemci vardır. SMT, AMD Ryzen serisindeki işlemcilerin çekirdeklerinin 2 çekirdekli (iş parçacıklı) gibi çalışmasını sağlayan bir teknolojidir. Intel işlemcilerdeki karşılığı Hyper Threading teknolojisidir. Konsolda Western Digital'in (WD) SN530 serisi 1 TB boyutunda bir SSD bulunmaktadır. 2.4 GB/sn hıza sahiptir. Buna ek olarak Seagate markalı hafıza kartı şeklinde olan harici SSD'ler ile beraber konsolun depolama alanı genişletilebilir. Bununla beraber konsol 720p, 1080p, 1440p, 2160p (4K) ve 8K çözünürlüğü destekler.


Konsolun özelliklerini kabaca tanıdıktan sonra konsolun kalbi olan Scarlett kod adlı bu çipe bakalım:

images (32).jpeg
IMG_20220819_143425~2.jpg

Zara baktığımızda solda, üstte ve sağda mavi-yeşil şeritler şeklinde görünen grafik çipinin, kendi VRAM'leri ile bağlantısını kuran bellek kontrolcüleri, (hatırlarsanız bellek arayüzü 320 bit olduğundan ve her bellek kontrolcü 32 bit bant genişliği sunduğundan toplam 10 adet VRAM çipi ve dolayısıyla 10 adet bellek kontrolcü görünmekte) sol üstte ve sağ üstte görünen konsolun ana işlemcisi (CPU) ve zarın neredeyse 3'te 2'sini kaplayan grafik işlemcisini yani GPU'yu görmekteyiz.
IMG_20220819_144747~2.jpg

Bu resimde GPU'da yer alan CU'ların konumunu görmektesiniz. Işın hızlandırıcılar CU'ların arasında bulunmakta. Hatırlarsanız konsolun özelliklerinin bazılarında parantezli değerler belirtmiştim. Bu konsol üretilirken çipteki bazı CU'lar devre dışı olarak üretilmekte. Yani çipin tamamında parantez içinde yazdığım gibi 56 CU bulunurken 4 tanesi kapatılmış olduğundan çipte aktif olarak 52 CU çalışmakta. (yani 3584 Shader ve 224 TMU) Bu yüzden bu değerleri ayrıca parantez içinde belirttim.
Şimdi bir sonraki konsolumuza geçelim:


3) Microsoft Xbox Series S GPU (Lockhart)
images (31).jpeg

  • Shader Sayısı: 1280 (1536)
  • TMU Sayısı: 80 (96)
  • ROP Sayısı: 32
  • Transistör Sayısı: 8 Milyar
  • Zar Alanı: 197 mm2
  • L2 Önbellek Miktarı: 4 MB
  • Üretim Süreci: TSMC 7 nm
  • Güç Tüketimi: 100 W
  • Bellek Miktarı: 8 GB GDDR6 128 bit (224 GB/sn)
  • Saat Hızı: 1565 MHz
Xbox Series S, Microsoft'un bütçe odaklı ve 1440p oyunculuk üzerine çıkarmış olduğu 9. nesil bir oyun konsoludur. Konsol, Xbox Series X ile aynı tarihte tanıtılmıştır. İçinde 3.6 GHz hızında çalışan (SMT ile 3.4 GHz) 8 çekirdekli özel Zen 2 mimarili bir işlemci bulunmaktadır. Konsol 8 GB GDDR6 belleklere sahiptir ve bu bellekler 1750 MHz hızında çalıştığı için 224 GB/saniye'lik bir bant genişliği sunar.

images (12).jpeg

Konsolun çip görüntüsünü bulamadığım için bu şekilde çipi göstermiş olayım.

Konsol tıpkı abisi Series X gibi kırpılmış bir grafik çipi kullanmakta. Yine Series X gibi WD SN530 markalı SSD'yi bulunduran konsol, SSD'nin 1 TB yerine 512 GB kapasiteli modelini bulundurmakta. Tabii ki konsolun depolama alanı Series X gibi Seagate harici SSD'lerle artırılabilmekte. Şimdi Series S'in Lockhart kod adlı grafik çipine bakalım:
IMG_20220819_173552~2.jpg

Gördüğünüz gibi çipin bellek kontrolcüleri alt kısımda ikili şeritler şeklinde görünmekteyken sol tarafta Zen 2 mimarili işlemci çekirdekleri ve çipin sağ yarısını kaplayan GPU'yu görmektesiniz. Çipte toplam 24 CU bulunmasına rağmen (1536 Shader) bunların 4 tanesi kapatılmış olduğundan çip toplam 20 CU (1280 Shader) aktif şekilde çalışmakta. Tıpkı Xbox Series X gibi. Bu Xbox Series konsolların çipleri de PS5 gibi RDNA2 mimarisiyle tasarlanmasına karşın Infinity Cache bulunmamakta. Olası sebeplerini PS5 başlığında söylemiştim, bakmak isteyenler bakabilir.

Böylece RDNA mimarisiyle yapılmış olan oyun konsollarını görmüş olduk. Şimdi bu mimariyle üretilen ekran kartlarına bakalım. İlk olarak 1. nesil RDNA mimarili ekran kartlarına bakalım.

AMD, 2019 yılının 2. çeyreğinde rakibi olan ekran kartı üreticisi NVIDIA'nın RTX serisi ekran kartlarına karşı ilk nesil RDNA mimarili kartlarını tanıttı. Bu kartlar RX 5000 serisi adı altında sunuldu. Modellerin ismi RX 5700 XT, RX 5700, RX 5600 XT ve RX 5500 XT idi. Bu kartlar 2 farklı grafik çipini kullanmaktaydı. Şimdi sırasıyla bu grafik çiplerinin güç verdiği ekran kartlarına bakalım:


AMD Radeon RX 5700 XT (Navi 10 XT)
IMG_20220829_150222.jpg
images (26)_47124073557912.jpeg
IMG_20220829_150206.jpg

  • Shader Sayısı: 2560
  • TMU Sayısı: 160
  • ROP Sayısı: 64
  • CU Sayısı: 40
  • L2 Önbelleği: 4 MB
  • Bellek Miktarı: 8 GB GDDR6 256 bit (448 GB/sn)
  • Bellek Hızı: 1750 MHz
  • Temel, Oyun ve Maksimum Saat Hızı: 1605, 1755 ve 1905 MHz
  • Üretim Süreci: TSMC 7 nm
  • Transistör Sayısı: 10.3 Milyar
  • Güç Tüketimi: 225 W
7 Temmuz 2019'da RX Vega serisi kartların (Radeon RX Vega 56 ve RX Vega 64) selefi olarak çıkan bu kart, AMD'nin o dönemki en güçlü kartıydı. $400 fiyatıyla piyasaya sürülen bu kart, rakibi olan NVIDIA kartlara göre rekabetçi bir konumdaydı. Kart 8 GB GDDR6 belleklere sahipti ki AMD'nin ilk GDDR6 bellekleri kullanan kartlardan birisiydi. Bellekler 1750 MHz hızında çalıştığı için kartın bellek bant genişliği 448 GB/sn idi. Temel saat hızı 1605 MHz olan kart, oyunlarda 1755, maksimum olarak 1905 MHz hızlara sahipti. Şimdi kartın kalbi olan Navi 10 kod adlı çipimize bakalım:

IMG_20220823_135911.jpg
jxniefh8pvb41.jpg

İlk bakışta gördüğümüz üzere hem soldaki CGI (bilgisayar modellemeli) resminde sarı kümeler olarak görünen ve sağ resimde kırmızı olarak WGP yazan CU'lar görünmekte. Yine alt ve üst kısımda çifter halde görünen bellek kontrolcüleri ve ortada görünen geometri ve komut motorlarını, ortada mor olarak işaretlenmiş olan L2 önbellekleri ve yine diğer birimler olan pikselleştirici (rasterizer) ve ROP birimleri olarak görünmekte. Fark ettiyseniz bu çipin tasarımı PS5'in çip tasarımına benzemekte. Zaten bu durumu PS5 kısmında bahsetmiştik.
RX 5700 XT bu çipin kırpılmamış halini kullanmaktayken birazdan bahsedeceğimiz RX 5700 ve RX 5600 XT ekran kartları, bu çipin kırpılmış yani bazı CU'ları devre dışı olan versiyonunu kullanmakta. Zaten bu çipte 40 CU (2560 Shader) varken RX 5700 ve 5600 XT'de 36 CU (2304 Shader) vardı. İleride bahsedeceğiz.
Inkedjxniefh8pvb41.jpg

Bu resimde RX 5700 ve RX 5600 XT'nin tahminimce kapatılmış olan CU'larını işaretledim. Şimdi bu çipi kullanan diğer ekran kartlarına devam edelim.

AMD Radeon RX 5700 (Navi 10 XL)
IMG_20220829_151224.jpg
Screenshot_20220829_151453.jpg
IMG_20220829_151232.jpg


  • Shader Sayısı: 2304
  • TMU Sayısı: 144
  • ROP Sayısı: 64
  • CU Sayısı: 36
  • L2 Önbelleği: 4 MB
  • Bellek Miktarı: 8 GB GDDR6 256 bit (448 GB/sn)
  • Bellek Hızı: 1750 MHz
  • Temel, Oyun ve Maksimum Saat Hızı: 1465, 1625 ve 1725 MHz
  • Üretim Süreci: TSMC 7 nm
  • Transistör Sayısı: 10.3 Milyar
  • Güç Tüketimi: 180 W
Abisi RX 5700 XT ile aynı tarihte tanıtılan bu ekran kartı $350 fiyatıyla piyasaya sunuldu. 5700 XT'den yaklaşık %10-15 daha yavaş olan kart, genel olarak 5700 XT ile hemen hemen aynı özelliklere sahipti. 180 Watt güç tüketimi olan kartın referans tasarımı 1 adet 8 pin ve 1 adet 6 pin güç bağlantısına sahipti. Çıktığı dönemde NVIDIA'nın RTX 2060 Super ekran kartına rakipti. Günümüzdeki performansı RX 6600 civarında olmakta.

AMD Radeon RX 5600 XT (Navi 10 XLE)
IMG_20220829_152442.jpg

  • Shader Sayısı: 2304
  • TMU Sayısı: 144
  • ROP Sayısı: 64
  • CU Sayısı: 36
  • L2 Önbelleği: 3 MB
  • Bellek Miktarı: 6 GB GDDR6 192 bit (288 GB/sn)
  • Bellek Hızı: 1500 MHz
  • Temel, Oyun ve Maksimum Saat Hızı: 1130, 1375 ve 1560 MHz
  • Üretim Süreci: TSMC 7 nm
  • Transistör Sayısı: 10.3 Milyar
  • Güç Tüketimi: 150 W
21 Ocak 2020'de tanıtılan bu ekran kartı, NVIDIA'nın doğrudan RTX 2060 ekran kartına rakipti. $279 fiyatıyla çıkan bu kart RTX 2060'dan 70 dolar daha ucuza konularak rekabetçi bir fiyat oluşturuldu. RX 5700 serisiyle aynı çipi kullanmasına karşın 6 GB belleğe sahip olması, doğrudan RTX 2060 rakibi olduğunu göstermekteydi. RX 5700 ile aynı çipi kullanmasına karşın saat hızlarının 200-300 MHz daha yavaş olması, yaklaşık %15 daha düşük bir performansa sebep olmaktaydı.
Daha önce de gösterdiğimiz gibi RX 5700 ve 5600 XT'nin çipleri Navi 10'un kırpılmış versiyonunu kullandığınıönceki zar görüntüsü resminde göstermiştik.

AMD Radeon RX 5500 XT (Navi 14 XTX)
IMG_20220829_152919.jpg
Screenshot_20220829_093905.jpg


  • Shader Sayısı: 1408 (1536)
  • TMU Sayısı: 88
  • ROP Sayısı: 32
  • CU Sayısı: 22
  • L2 Önbelleği: 2 MB
  • Bellek Miktarı: 4/8 GB GDDR6 128 bit (224 GB/sn)
  • Bellek Hızı: 1750 MHz
  • Temel, Oyun ve Maksimum Saat Hızı: 1607, 1717 ve 1845 MHz
  • Üretim Süreci: TSMC 7 nm FinFET
  • Transistör Sayısı: 6.4 Milyar
  • Güç Tüketimi: 130 W
12 Aralık 2019'da NVIDIA'nın GTX 1600 serisi ekran kartlarından olan GTX 1650 Super'in rakibi olarak çıkan bu kart, $169 fiyatıyla satışa sunuldu. Diğer RX 5000 serilerinin aksine Navi 14 kod adlı bir grafik çipi kullanmaktaydı ve XTX eki olmasına karşın çipin kırpılmış versiyonunu kullanmaktaydı. (Aynı çipi kullanan bazı Radeon Pro ekran kartları kırpılmamış versiyonu kullanmakta) Kartın referans tasarımı ve diğer modellerde 8 pin güç bağlantısı bulunmakta, bu da karta toplam 225 W güç sağlayabilmekte.
Şimdi kartımızın kalbi olan Navi 14 kod adlı çipe bakalım:

images (16).jpeg
images (18).jpeg

Solda, sağda ve üst tarafta 2 tane görünen bellek kontrolcüleri, ortada kümelenmiş olarak bulunan CU'lar ve CU'ların üstünde yer alan ACE'leri (Asynchronous Compute Engine) ve önbellekleri görmektesiniz. Navi 10'a göre daha küçük olan bu çip hemen hemen onun yarısı büyüklüğünde (158 mm2; Navi 10, 251 mm2'lik bir alana sahipti) idi.

Evet arkadaşlar, böylece makalemizin sonuna geldik. RDNA 2 mimarili ekran kartlarını başka bir makale yazıp yayınlayacağım bir aksilik olmazsa. Şimdilik bu kadar yapmış olalım, okuyan ve göz atan herkese teşekkürlerimi sunuyorum. Sağlıklı, huzurlu ve güzel günleriniz olsun. 🌹
 
Teşekkürler. İntihal var mı? Yoksa tamamen size mi ait?
İlk başta belirttiğim gibi, RDNA Whitepaper adlı dosyadan kendim çevirebildiğim kadarıyla yazdım, makalenin ilk başında linki var. Tabi konsollardan bahsederken Vikipedi'den yararlandım.
 

Yeni konular

Geri
Yukarı