Dlaczego procesory graficzne nadal mają rasteryzatory?

14

Pomimo postępów współczesne procesory graficzne wciąż mają stałe rasteryzatory. Wysoce konfigurowalny, z programowalnymi modułami cieniującymi, ale mimo to nie w pełni programowalny.

Dlaczego?

Dlaczego procesory graficzne nie mogą być po prostu masowo równoległymi urządzeniami z uniwersalnymi jednostkami obliczeniowymi, w których rasterizer to tylko oprogramowanie dla tego urządzenia dostarczone przez użytkownika?

Czy posiadanie sprzętu o stałej funkcji jest tak korzystne pod względem wydajności, że takie podejście jest niewykonalne?

mrpyo
źródło
1
„Dlaczego pytasz, dlaczego procesor graficzny nie jest uniwersalnym procesorem”?
Andreas
1
@Andreas Nie, moje pytanie jest takie, jak podano w poście. Dlaczego rasteryzatory są nadal częścią sprzętową, skoro można je było wykonać w oprogramowaniu (w rzeczywistości można je już wykonać za pomocą OpenCL lub shaderów obliczeniowych). Pytanie brzmi, dlaczego to nie jest powszechne ... może to po prostu wydajność, nie wiem, dlatego pytam ...
mrpyo
Możesz ominąć rasteryzację i zaimplementować swój własny rasterizer z jednostkami obliczeniowymi na nowoczesnych procesorach graficznych, a ja w rzeczywistości znam ludzi, którzy robią to w określonych celach.
JarkkoL
Rasteryzatory przekształcają bieguny wektorowe w wiązkę pikseli, które możemy oświetlić. Kiedy nie będziemy już mieć pikseli lub przestaniemy używać geometrii wektorowej, nie będziemy już potrzebować rasteryzatorów. Bez względu na to, jak wygląda reszta potoku, na koniec dnia (lub ramki) potrzebujesz pikseli. Rasterizer mówi nam tylko, o jakie piksele chodzi w danym trójkącie. Wszystko to jest programowalne - jeśli chcesz uzyskać inny wynik niż rasterizer, wyślij różne trójkąty. Lub po prostu narysuj wszystko do tekstury renderowania w module cieniującym i przesuń ją na ekran za pomocą kwadratu z wyrównanym widokiem.
3Dave

Odpowiedzi:

15

Krótko mówiąc, ze względu na wydajność nie można ich programować.

Historia i rynek

W przeszłości istniały oddzielne rdzenie dla procesorów wierzchołków i fragmentów, aby uniknąć rozdętych układów FPU. Niektóre operacje matematyczne można było wykonać tylko na przykład w kodzie modułu cieniującego fragmenty (ponieważ były one w większości istotne tylko w przypadku modułu cieniującego fragmenty). Spowodowałoby to poważne wąskie gardła sprzętowe dla aplikacji, które nie maksymalizowały potencjału każdego rodzaju rdzenia.

Gdy programowalne shadery stały się bardziej popularne, wprowadzono uniwersalne jednostki. Coraz więcej etapów potoku graficznego zostało zaimplementowanych w sprzęcie, aby pomóc w skalowaniu. W tym czasie GPGPU również stało się bardziej popularne, więc dostawcy musieli włączyć niektóre z tych funkcji. Nadal ważne jest, aby pamiętać, że większość dochodów z GPU to wciąż gry wideo, więc nie mogło to zakłócać wydajności.

W końcu duży gracz, Intel, postanowił zainwestować w programowalne rasteryzatory o architekturze Larrabee . Ten projekt miał być przełomowy, ale wydajność najwyraźniej była mniejsza niż pożądana . Został zamknięty, a jego części zostały uratowane dla procesorów Xeon Phi. Warto jednak zauważyć, że inni dostawcy tego nie wdrożyli.

Próby rasteryzacji oprogramowania

Podjęto pewne próby rasteryzacji za pomocą oprogramowania, ale wszystkie wydają się mieć problemy z wydajnością.

Jednym znaczącym wysiłkiem była próba Nvidii w 2011 roku w tym artykule . Zostało to wydane blisko kiedy Larrabee został zakończony, więc jest bardzo możliwe, że była to odpowiedź na to. Niezależnie od tego, istnieją pewne dane dotyczące wydajności, a większość z nich wykazuje wydajność wielokrotnie wolniejszą niż sprzętowe rasteryzatory.

Problemy techniczne z rasteryzacją oprogramowania

W artykule Nvidii pojawiło się wiele problemów. Oto niektóre z najważniejszych problemów z rasteryzatorami oprogramowania:

Główne problemy

  • Interpolacja: Implementacja sprzętowa generuje równania interpolacyjne w specjalistycznym sprzęcie. Jest to powolne w przypadku renderera oprogramowania, ponieważ trzeba było to zrobić w module cieniującym fragmenty.

  • Wygładzanie: Wystąpiły również problemy z wydajnością wygładzania (szczególnie z pamięcią). Informacje dotyczące próbek subpikseli muszą być przechowywane w pamięci na chipie, co nie wystarcza do ich przechowywania. Julien Guertault zwrócił uwagę, że buforowanie / buforowanie tekstur może być wolniejsze w przypadku oprogramowania. MSAA z pewnością ma tutaj problemy, ponieważ przepełnia pamięć podręczną (pamięci podręczne bez tekstur) i przechodzi do pamięci układu. Rasteryzatory kompresują dane przechowywane w tej pamięci, co również pomaga w wydajności.

  • Zużycie energii: Simon F wskazał, że zużycie energii będzie niższe. W dokumencie wspomniano, że niestandardowe jednostki ALU znajdują się w rasteryzatorach (co zmniejszyłoby zużycie energii), i miałoby to sens, ponieważ jednostki przetwarzania fragmentów i wierzchołków w przeszłości miały niestandardowe zestawy instrukcji (więc prawdopodobnie również niestandardowe jednostki ALU). Z pewnością stanowiłoby to wąskie gardło w wielu systemach (np. Mobilnych), choć ma to wpływ na wydajność.

streszczenie

TL; DR: istnieje zbyt wiele nieefektywności, których renderowanie oprogramowania nie jest w stanie przeoczyć, a te rzeczy się sumują. Istnieje również wiele większych ograniczeń, szczególnie w przypadku przepustowości VRAM, problemów z synchronizacją i dodatkowych obliczeń.

asy
źródło
Nie sądzę, że musisz przechowywać próbki subpikseli, jeśli filtrowanie w polu jest wystarczające, możesz po prostu zrobić średnie bieżące.
joojaa
2
Podejrzewam, że próbkowanie tekstur i pamięć podręczna to prawdopodobnie również obszary, w których implementacje sprzętowe pozwalają na wydajność, która byłaby niemożliwa do osiągnięcia przy implementacjach oprogramowania.
Julien Guertault
3
@aces Kolejną rzeczą wartą wspomnienia jest moc. Dedykowany sprzęt wykona tę samą pracę, zwykle z ułamkiem budżetu mocy, a przy ograniczeniu już i tak już problemu, zwłaszcza na urządzeniach mobilnych, przejście w pełni programowalne znacznie pogorszy sytuację.
Simon F
@JulienGuertault Uczciwy punkt, ale sądzę, że dotyczy to głównie MSAA. Wyniki testów wydają się wskazywać, że nie jest to ogromny problem, gdy wszystko mieści się w pamięci na chipie (chociaż może to mieć pewien wpływ na wydajność niezależnie).
asy
@ SimonF Myślę, że to także świetny punkt. Zawarłem to w odpowiedzi.
asy