Doku Önbelleği, birden çok gölgelendirici birimini dikkate alarak nasıl çalışır?


11

Modern GPU'lar birçok paralel gölgeleme birimine sahiptir. Bu senaryoda doku önbelleğinin nasıl yönetildiğini bilmek istiyorum.

Yanıtlar:


14

En üst düzeyde, bir GPU bir dizi gölgelendirici çekirdeğine bölünür. Bir dizüstü bilgisayar veya tabletteki küçük bir GPU'da yalnızca birkaç çekirdek olabilirken, ileri teknoloji masaüstü GPU'da düzinelerce olabilir.

Gölgelendirici çekirdeklerine ek olarak, doku birimleri de vardır. GPU'ya bağlı olarak gölgelendirici çekirdeği başına bir doku birimi veya iki veya üç gölgelendirici çekirdeği arasında paylaşılan bir doku birimi ile birlikte gruplandırılabilirler.

Tüm yonga tek bir L2 önbelleğini paylaşır, ancak farklı birimlerin ayrı L1 önbellekleri olacaktır. Doku birimlerinin doku önbellekleri vardır ve gölgelendirici birimlerinin talimatlar ve sabitler / üniformalar için önbellekleri vardır ve arabellek yüklerinin doku yüklerinden ayrı bir yol olup olmamasına bağlı olarak tampon verileri için ayrı bir önbellek vardır (GPU mimarisine göre değişir).

Doku birimleri gölgelendirici çekirdeklerinden bağımsız ve asenkron olarak çalışır. Gölgelendirici bir doku okuması gerçekleştirdiğinde, doku birimine aralarında küçük bir veri yolu üzerinden bir istek gönderir; gölgelendirici daha sonra mümkünse yürütmeye devam edebilir veya askıya alınabilir ve dokunun okunmasının tamamlanmasını beklerken diğer gölgelendirici dişlerinin çalışmasına izin verebilir.

Doku birimi, bir grup istekleri topluyor ve adresleme matematiğini gerçekleştiriyor - mip seviyelerini ve anizotropiyi seçmek, UV'leri texel koordinatlarına dönüştürmek, kelepçe / sarma modlarını uygulamak, vb. önbellek hiyerarşisi, bellek okuma gibi bir CPU üzerinde çalışır (önce L1, sonra L2 sonra DRAM bakın). Bekleyen çok sayıda doku isteği aynı veya yakındaki metinleri istiyorsa (genellikle yaptıkları gibi), o zaman burada çok fazla verimlilik elde edersiniz, çünkü bekleyen birkaç isteği yalnızca birkaç bellek işlemiyle karşılayabilirsiniz. Tüm bu işlemler ardışık düzenlidir, bu nedenle doku birimi bir toplu işte bellek beklerken, başka bir toplu iş isteği için adresleme matematiğini yapıyor olabilir.

Veriler geri döndüğünde, doku birimi sıkıştırılmış formatların kodunu çözer, sRGB dönüştürme ve filtrelemeyi yapar, ardından sonuçları gölgelendirici çekirdeğine geri döndürür.


1
Teşekkürler! Bu gerçekten yardımcı oldu. Sabitleri / düzgün önbelleği yeniden düzenleme. Üniforma önbellek isabet oranını iyileştirmek için kullanabileceğim hassasiyet (mediump, lowp) dışında herhangi bir ipucu var mı? Üniforma ilan ettiğim sipariş herhangi bir fark yaratıyor mu (daha sıkı paketleme için)?
Felipe Lira

2
@PhilLira Ambalaj bir fark yaratabilir, evet. Derleyici, vektörlerin 16 bayt sınırlarına bölünmesini önlemek için dolgu ekleyecektir, bu yüzden bundan kaçınmaya çalışın. Mediump / lowp'nin üniformalar üzerinde, en azından masaüstü GPU'larda (belki de mobilde) bir şey yaptığını sanmıyorum. Yine de düzgün önbellek isabet oranı hakkında çok fazla endişe olmaz. Bu çok nadiren, eğer varsa, bir darboğaz.
Nathan Reed
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.