Neden GPU'ların hala rasterleştiricileri var?


14

Gelişmelere rağmen, modern GPU'lar hala sabit rasterleştiricilere sahiptir. Programlanabilir gölgelendiricilerle son derece özelleştirilebilir, ancak yine de tam olarak programlanamaz.

Neden?

Neden GPU'lar, rasterleştiricinin sadece kullanıcı tarafından sağlanan bu cihaz için bir yazılım olduğu evrensel bilgi işlem birimlerine sahip büyük ölçüde paralel cihazlar olamaz?

Sabit işlevli donanıma sahip olmak, performans açısından bu kadar faydalıdır ki, bu tür bir yaklaşım mümkün değildir?


1
"Bir grafik işlem birimi neden evrensel işlem biriminde değil" diye soruyor musunuz?
Andreas

1
@Andreas Hayır, sorum postada belirtildiği gibi. Neden rasterleştiriciler hala yazılımda yapılabilecekleri hala bir donanım parçasıdır (aslında zaten OpenCL veya compute shader ile yapılabilirler). Soru neden yaygın değil ... belki sadece performans, bilmiyorum, bu yüzden soruyorum ...
mrpyo

Rasterleştirmeyi atlayabilir ve modern GPU'larda hesaplama birimleriyle kendi rasterleştiricinizi uygulayabilirsiniz ve aslında bunu belirli amaçlar için yapan insanları tanıyorum.
JarkkoL

Rasterizerler, vektör polislerini aydınlatabileceğimiz bir grup piksele dönüştürür. Artık pikselimiz olmadığında veya vektör geometrisini kullanmayı bıraktığımızda, artık rasterleştiricilere ihtiyacımız olmayacak. Boru hattınızın geri kalanı neye benzediğine bakılmaksızın, günün sonunda (veya çerçevede) piksellere ihtiyacınız vardır. Raster, sadece belirli bir üçgen için hangi pikselleri endişelendirdiğimizi söyler. Tüm bunlar programlanabilir - rasterleştiriciden farklı çıktılar istiyorsanız, farklı üçgenler yollayın. Veya her şeyi bir hesaplama gölgeleyicisinde bir render dokusuna çizin ve görünümü hizalanmış dörtlü ile ekrana sarın.
3Dave

Yanıtlar:


15

Kısacası, performans nedenleri programlanamamalarının nedenidir.

Tarih ve Pazar

Geçmişte, şişirilmiş FPU tasarımlarından kaçınmak için köşe ve parça işlemcileri için ayrı çekirdekler vardı. Örneğin sadece parça gölgelendirici kodunda yapabileceğiniz bazı matematiksel işlemler vardı (çünkü bunlar çoğunlukla sadece parça gölgelendiriciler için geçerliydi). Bu, her bir çekirdek türünün potansiyelini en üst düzeye çıkarmayan uygulamalar için ciddi donanım darboğazları üretecektir.

Programlanabilir gölgelendiriciler daha popüler hale geldikçe, evrensel birimler tanıtıldı. Ölçeklemeye yardımcı olmak için donanımda grafik boru hattının giderek daha fazla aşaması uygulandı. Bu süre zarfında GPGPU da daha popüler hale geldi, bu nedenle satıcıların bu işlevlerden bazılarını dahil etmesi gerekiyordu. Yine de GPU'lardan elde edilen gelirin çoğunun hala video oyunları olduğunu belirtmek önemlidir, bu nedenle performansa müdahale edememiştir.

Sonunda büyük bir oyuncu olan Intel, Larrabee mimarisi ile programlanabilir rasterleştiricilere yatırım yapmaya karar verdi . Bu projenin çığır açıcı olması gerekiyordu, ancak performans istenenden daha azdı . Kapatıldı ve parçaları Xeon Phi işlemcileri için kurtarıldı. Yine de diğer satıcıların bunu uygulamamış olduklarını belirtmek gerekir.

Yazılım Rasterizer'ları

Yazılım yoluyla rasterleştirme konusunda bazı girişimler olmuştur, ancak hepsinin performansla ilgili sorunları olduğu görülmektedir.

Dikkate değer bir çaba, 2011'de Nvidia'nın bu makalede yaptığı girişimdi . Bu, Larrabee'nin sonlandırıldığı zamana kadar serbest bırakıldı, bu yüzden bunun bir yanıt olması çok olası. Ne olursa olsun, bu konuda bazı performans rakamları vardır ve bunların çoğu performansı donanım rasterleştiricilerinden birkaç kat daha yavaş gösterir.

Yazılım Tarama ile İlgili Teknik Konular

Nvidia gazetesinde karşılaşılan birçok sorun var. Gerçi yazılım rasterleştiricileri ile ilgili en önemli sorunlardan bazıları şunlardır:

Büyük sorunlar

  • Enterpolasyon: Donanım uygulaması, özel donanımda enterpolasyon denklemleri üretir. Parça oluşturucuda yapılması gerektiğinden yazılım oluşturucu için bu yavaştır.

  • Kenar yumuşatma: Kenar yumuşatma ile ilgili performans sorunları da vardı (özellikle bellekle). Alt piksel örnekleri ile ilgili bilgiler, bunu tutmak için yeterli olmayan çip belleğinde saklanmalıdır. Julien Guertault, doku önbelleğinin / önbelleğinin yazılımla daha yavaş olabileceğine dikkat çekti. MSAA'nın burada kesinlikle sorunları var, çünkü önbelleği (doku olmayan önbellekleri) taşar ve çipin hafızasına gider. Rasterizerler, bu bellekte depolanan verileri sıkıştırır ve bu da burada performansa yardımcı olur.

  • Güç Tüketimi: Simon F, güç tüketiminin daha düşük olacağını belirtti. Bu makale, özel ALU'ların (güç tüketimini azaltacak) rasterleştiricilerde olduğunu ve geçmişte parça ve köşe işleme birimlerinin özel talimat setlerine (yani büyük olasılıkla özel ALU'lar) sahip olduğu için bu mantıklı olacaktır. Performansın ötesinde sonuçları olmasına rağmen, birçok sistemde (ör. Mobil) kesinlikle bir darboğaz olacaktır.

özet

TL; DR: Yazılım oluşturmanın geçemeyeceği çok fazla verimsizlik var ve bunlar toplanıyor. Özellikle VRAM bant genişliği, senkronizasyon sorunları ve ekstra hesaplamalar ile uğraşırken daha büyük sınırlamalar da vardır.


Kutu filtreleme yeterliyse, alt piksel örneklerini saklamanız gerektiğini düşünmüyorum, o zaman sadece çalışan ortalamalar yapabilirsiniz.
joojaa

2
Doku örneklemesi ve önbellek muhtemelen donanım uygulamalarının performansın yazılım uygulamalarıyla elde edilmesini olanaksız kıldığı alanlardır.
Julien Guertault

3
@aces Bahsetmeye değer diğer bir öğe güçtür. Özel donanım genellikle aynı işi güç bütçesinin bir kısmıyla yapacak ve özellikle mobil cihazlarda güç azaltma sorunu zaten tamamen programlanabilir hale gelmesi onu daha da kötüleştirecektir.
Simon F

@JulienGuertault Fair point, ama bunun çoğunlukla MSAA için geçerli olduğunu düşünürdüm. Test sonuçları, her şey çipli belleğe uyduğunda bunun büyük bir sorun olmadığını gösteriyor (bu, performanstan bağımsız olarak bazı performans etkilerine sahip olabilir).
aslar

@SimonF Bence bu da harika bir nokta. Cevaba ekledim.
aslar
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.