VRAM'in Bant Genişliği RAM'inkinden Neden Daha Büyük?

VRAM'in bant genişliği

Grafik kartlarının dikkatini çeken bir şey varsa, hafızalarının taşıdığı muazzam hızdır, saniyede ilettikleri veri miktarını hız olarak anlamak, yani bant genişliği. Ancak GPU'ların bu kadar büyük olması için VRAM'in bant genişliğine ihtiyaç duymasının nedenleri nelerdir? Bunları size açıklıyoruz.

Daha sonra, grafik kartlarının yüksek aktarım hızına sahip özel hafızalar kullanmasının arkasındaki teoriyi açıklayacağız, bazı kavramlar zaten önceden bilecek, diğerleri ise genellikle grafik kartı pazarlamasında tartışılmadığı için bilinmeyecektir.

GPU ve VRAM arasındaki bant genişlikleri

PCB Yönlendirme

The GPU Bir sahneyi 3B olarak işlemek için çeşitli bant genişlikleri kullanır, bunları aşağıda listeleyeceğiz:

  • Renk Tamponu (Bc): Bu, GPU'nun sahneyi çizdiği Backbuffer veya back buffer'ın bir parçasıdır. İçinde her piksel RGBA bileşenlerine sahiptir, eğer oluşturma gecikirse G-Buffer'ı oluşturmak için birkaç tampon oluşturulur. Mevcut API'lerde, GPU'lar aynı anda bu türden 8'e kadar arabelleği destekler.
  • Derinlik Tamponu (Bz): Ayrıca olarak bilinir Z-Buffer, o her nesnenin piksellerinin kameraya göre konumunun saklandığı tampondur. Stencil Buffer ile birleşir. Renk Tamponundan farklı olarak, bu tekstüre sonrası aşamada değil, önceki aşamada rasterleştirme sırasında üretilir.
  • Tekstüre (Bt): GPU'lar belleğe sığmayacak kadar büyük doku eşlemleri kullanır ve VRAM'den içe aktarılmaları gerekir, bu salt okunur bir işlemdir. Öte yandan, işlem sonrası efektler görüntü arabelleğini dokularmış gibi okur.

Bu, aşağıdaki diyagramda özetlenmiştir:

Diyagrama_BW_GPU

VRAM bellek yongaları Tam çift yönlü ve aynı anda hem okuma hem de yazma iletir, bant genişliği her iki yönde de aynıdır. Kesin olarak, grafik işlem hattının daha fazla işlemin yapıldığı kısmı, tekstüre etme sırasındadır, bu nedenle GPU'ların neden yüksek bir yürüme genişliği gerektirdiği ilk açıklamalardan biridir.

Ön rasterleştirme işlemi sırasında kullanılan verilere gelince, sahnenin geometrisinin hesaplanması, bunlar çok büyük miktarda bellek kullanılmasına neden olmayacak ve VRAM olarak kullanılan bellek türünü etkilemeyecek kadar düşüktür.

Aşırı çekme sorunu

Last of Us Fazla Çekme

Bir sahneyi oluşturmak için kullanılan algoritma, z-arabellek algoritması veya ressamın algoritması olarak da adlandırılan rasterleştirmedir ve temel formunda aşağıdaki yapıya sahiptir: Sahnedeki her ilkel için, ilkel ile kaplanan her piksel için pikseli işaretler kameraya en yakın konumdadır ve z-arabelleğinde saklar.

Bu, birkaç nesnenin kameraya göre X ve Y koordinat ekseninin aynı konumunda, ancak Z eksenine göre farklı bir konumda olması durumunda, son görüntüde her birinin piksellerinin çizilmesine neden olur. tampon ve bitirme birden çok kez işlenecek. Bu etkiye, GPU'nun pikselleri aynı konumda boyaması ve yeniden boyaması nedeniyle aşırı çekme veya fazla çekme denir.

Şimdi, bazılarınız haklı olarak şunu düşünüyor: Derinlik tamponu tekstüre edilmeden önce oluşturulmuşsa, nasıl oluyor da pikseller o aşamada atılmıyor? Aslında bunun için teknikler var, ancak bu aşamada her pikselin renginin tamamen farkında değiliz ve bir nesnenin yarı saydam olup olmadığı, bu nedenle GPU'lar yalnızca bir nesnenin olduğu bir sahnede tüm pikselleri atamaz. şeffaftır, o zamandan beri gösterimi yanlış olacaktır.

Orta Sıralama - Son Sıralama

Son Sıralama

Görünür olup olmadıklarını görmek için pikselleri tek tek kontrol etme süreci, GPU'larda fazladan devre gerektirir ve oluşturma işleminin bundan etkilendiğini gösterir. Bir GPU ile fikir, diğer unsurları hesaba katmadan brüt güç sağlamaktır, eğer yapılacak herhangi bir optimizasyon varsa, bu donanım kısmına bırakılır, bu nedenle bir pikselin görüntü arabelleğine gitmesi gerektiğinin doğrulanması veya buna Son Sıralama adı verilen işlemin sonunda yapılmaz.

Orta Sırala

Oysa nesneler tarama aşamasında Derinlik Tamponunu referans olarak kullanarak sıralanırsa, buna Orta Sıralama diyoruz çünkü grafik boru hattının tam ortasında meydana gelir.

İkinci teknik aşırı çekilmeyi önler, ancak daha önce gördüğümüz gibi, bir sahnenin şeffaflığı olduğunda sorunlar vardır. Ve mevcut GPU'lar ne kullanıyor? Her ikisi de, çünkü geliştiriciler hangi türü seçeceklerini seçebilirler. Aradaki fark, Orta Sıralamada fazla çekme olmamasıdır.

Bant genişliği ve VRAM: aşırı çekim

Grárica Aşırı Çizim

Aşırı çekmenin arkasındaki mantık, bir konumdaki (x, y) ilk pikselin görüntü arabelleğinde evet veya evet olarak çizilmesi, aynı konum altındaki ikinci pikselin daha büyük veya 50 Z değerine sahip olma şansı% 50 olacaktır. Daha küçük olana sahip olma şansı% ve bu nedenle son tampona yazılacak, üçüncüsü mevcut olanların 1 / 3'üne, 1'ün 4'üne sahip.

Buna harmonik seri denir:

H (n) = 1 + 1/2 + 1/3 + 1/4… 1 / n

Bu neden önemli? Pekala, fazla çekme ile atılan piksellerin gerçekten büyük olmasına rağmen, Renk Tamponunda çok sayıda pikselin çizilmesiyle sonuçlanmayan çok büyük bir aşırı çekme noktasına ulaştığı için z değeri zaten dokulu pikselin% ​​'si görüntü arabelleğinde bulunandan daha büyüktür, bu nedenle atılır ve önceden dokulu olsa bile Renk Tamponunun bant genişliğinde sayılmaz.

VRAM Bant Genişliği: Sıkıştırma Mekanizmaları

Delta Renk Sıkıştırma

Son yıllarda sözde Delta Renk Sıkıştırma veya DCC ortaya çıktı, bu konuda yaptığımız makaleye göz atmanızı öneririz. Bu teknikler, Renk Tamponunun boyutunu çok daha az yer kaplayacak şekilde sıkıştırmaya dayanır ve yaptıkları şeyi yapmak için GPU'ya her pikselin + n bitlik bir değere sahip olduğunu söylemek, burada n, arasındaki farktır. mevcut görüntü ve bir önceki.

Diğer bir öğe, DCC'den farklı olan doku sıkıştırmadır ve bu, daha sonra işlem sonrası efektleri gerçekleştirmek için kurtarmak istediğimiz bir Renk Tamponunu oluştururken kullanılır. Sorun, doku sıkıştırması kullanan görüntünün, son görüntüyü okuyan ve ekrana gönderen birim tarafından anlaşılmamasıdır.

Bant genişliği ve VRAM: Döşeme Oluşturma

Döşeme Oluşturma

Döşeme Oluşturmada hem Renk Arabelleği hem de Derinlik Arabelleği çip üzerinde dahili olarak işlenir, bu nedenle bu bant genişlikleri hesaba katılmaz. Dolayısıyla, akıllı telefonlarda kullanılanlar gibi bu tekniği kullanan GPU'lar çok fazla bant genişliği gerektirmez ve çok daha düşük bant genişliğine sahip hafızalarla çalışabilir.

Bununla birlikte, Tile Renderers, sahneyi bu şekilde oluşturmayı kullanmayan GPUS'tan daha az ham güce sahip olmalarını sağlayan bir dizi aksamaya sahiptir.

Sonuç

VRAM GPU Nvidia

Oyunların her biri tarafından kullanılan bant genişliğini tahmin etmek zordur, bu nedenle aşağıdaki gibi araçlar vardır: NVIDIANSight ve MicrosoftGPU'nun her bir parçasındaki hesaplama yükünün seviyesini ölçmekle kalmayıp, aynı zamanda bant genişliğinin verimini de ölçen PIX, geliştiricilerin VRAM kullanımını optimize etmelerine olanak tanır.

Bunun nedeni, aşırı çekilmiş sahneler söz konusu olduğunda, bir karedeki piksellerin her birinin yükünün ne olacağını tahmin edememeleridir. Hem donanım mimarları hem de yazılım mühendisleri için en iyisi hayatı karmaşıklaştırmamak ve en hızlı VRAM'i öngörülen maliyetler dahilinde tutmaktır.

Göz önünde bulundurulan şey, bant genişliğini piksel başına kesinliğe bölerek GPU'nun teorik doluluk oranıyla karşılaştırmaktan oluşan bant genişliği ile teorik doluluk oranı arasındaki orandır, ancak giderek azalan bir faktördür dikkate alındığında, özellikle GPU'lar zaten dokulu pikselleri doğrudan VRAM'e çekmediğinden, bunun yerine bunları GPU'nun L2 önbelleğine yazarak VRAM üzerindeki etkiyi azalttığı için dikkate alınır.