Mengapa GPU masih memiliki rasterizer?

14

Meskipun ada kemajuan, GPU modern masih memiliki rasterizer yang diperbaiki. Sangat dapat dikustomisasi, dengan shader yang dapat diprogram, namun tidak sepenuhnya dapat diprogram.

Mengapa demikian?

Mengapa GPU tidak bisa sekadar perangkat paralel masif dengan unit komputasi universal di mana rasterizer hanyalah perangkat lunak untuk perangkat yang disediakan oleh pengguna?

Apakah memiliki perangkat keras fungsi tetap yang sangat bermanfaat untuk kinerja sehingga pendekatan seperti itu tidak mungkin dilakukan?

mrpyo
sumber
1
"Mengapa unit pemrosesan grafis tidak di unit pemrosesan universal", apakah itu yang Anda tanyakan?
Andreas
1
@ Andreas Tidak, pertanyaan saya adalah seperti yang dinyatakan dalam pos. Mengapa rasterizer masih merupakan bagian perangkat keras, ketika mereka dapat dilakukan dalam perangkat lunak (pada kenyataannya mereka sudah dapat dilakukan dengan OpenCL, atau compute shaders). Pertanyaannya adalah mengapa itu tidak umum ... mungkin itu hanya kinerja, saya tidak tahu, itu sebabnya saya bertanya ...
mrpyo
Anda dapat melewati rasterisasi dan mengimplementasikan rasterizer Anda sendiri dengan unit komputasi pada GPU modern dan saya sebenarnya tahu orang melakukan ini untuk tujuan tertentu.
JarkkoL
Rasterizer mengubah polys vektor menjadi sekelompok piksel yang dapat kita nyalakan. Ketika kita tidak lagi memiliki piksel, atau berhenti menggunakan geometri vektor, kita tidak perlu lagi rasterizer. Tidak peduli seperti apa sisa pipeline Anda, pada akhir hari (atau frame), Anda memerlukan piksel. Rasterizer hanya memberi tahu kami piksel mana yang kami khawatirkan untuk suatu segitiga tertentu. Semua itu dapat diprogram - jika Anda ingin output yang berbeda dari rasterizer, kirim segitiga yang berbeda dengan caranya. Atau cukup gambarkan semuanya menjadi tekstur render dalam penghitung bayangan dan blit ke layar dengan tampilan quad-aligned.
3Dave

Jawaban:

15

Singkatnya, alasan kinerja adalah alasan mengapa mereka tidak dapat diprogram.

Sejarah dan Pasar

Di masa lalu, dulu ada core terpisah untuk prosesor vertex dan fragmen untuk menghindari desain FPU yang membengkak. Misalnya, ada beberapa operasi matematika yang hanya dapat Anda lakukan dalam kode shader fragmen (karena sebagian besar hanya relevan untuk fragmen shader). Ini akan menghasilkan hambatan perangkat keras yang parah untuk aplikasi yang tidak memaksimalkan potensi masing-masing jenis inti.

Saat shader yang dapat diprogram menjadi lebih populer, unit universal diperkenalkan. Semakin banyak tahapan pipa grafis diimplementasikan dalam perangkat keras untuk membantu penskalaan. Selama ini, GPGPU juga menjadi lebih populer, sehingga vendor harus menggabungkan beberapa fungsi ini. Namun penting untuk dicatat bahwa sebagian besar pendapatan dari GPU masih berupa video game, jadi ini tidak dapat mengganggu kinerja.

Akhirnya, pemain besar, Intel, memutuskan untuk berinvestasi dalam rasterizer yang dapat diprogram dengan arsitektur Larrabee mereka . Proyek ini seharusnya menjadi terobosan, tetapi kinerjanya tampaknya kurang dari yang diinginkan . Itu ditutup, dan sebagian diselamatkan untuk prosesor Xeon Phi. Perlu dicatat bahwa vendor lain belum menerapkan ini.

Mencoba di Rasterizers Perangkat Lunak

Ada beberapa upaya rasterisasi melalui perangkat lunak, tetapi mereka semua tampaknya memiliki masalah dengan kinerja.

Salah satu upaya penting adalah upaya oleh Nvidia pada tahun 2011 dalam makalah ini . Ini dirilis dekat ketika Larrabee dihentikan, jadi sangat mungkin bahwa ini adalah tanggapan terhadap itu. Apapun, ada beberapa angka kinerja dalam hal ini, dan sebagian besar dari mereka menunjukkan kinerja beberapa kali lebih lambat daripada rasterizer perangkat keras.

Masalah Teknis dengan Rasterisasi Perangkat Lunak

Ada banyak masalah yang dihadapi dalam makalah Nvidia. Berikut adalah beberapa masalah paling penting dengan rasterizer perangkat lunak:

Masalah Utama

  • Interpolasi: Implementasi perangkat keras menghasilkan persamaan interpolasi dalam perangkat keras khusus. Ini lambat untuk penyaji perangkat lunak karena harus dilakukan dalam fragmen shader.

  • Anti-aliasing: Ada juga masalah kinerja dengan anti-aliasing (khusus dengan memori). Informasi mengenai sampel sub-pixel harus disimpan dalam memori chip, yang tidak cukup untuk menampung ini. Julien Guertault menunjukkan bahwa cache tekstur / cache mungkin lebih lambat dengan perangkat lunak. MSAA tentu memiliki masalah di sini karena meluap cache (cache non-tekstur) dan masuk ke memori dari chip. Rasterizer memampatkan data yang disimpan dalam memori itu, yang juga membantu kinerja di sini.

  • Konsumsi Daya: Simon F menunjukkan bahwa konsumsi daya akan lebih rendah. Makalah itu memang menyebutkan bahwa custom ALU ada dalam rasterizers (yang akan mengurangi konsumsi daya), dan ini akan masuk akal karena unit pemrosesan fragmen dan vertex di masa lalu digunakan untuk memiliki set instruksi kustom (sehingga kemungkinan ALU custom juga). Ini tentu akan menjadi hambatan dalam banyak sistem (misalnya, ponsel), meskipun ini memiliki implikasi di luar kinerja.

Ringkasan

TL; DR: ada terlalu banyak ketidakefisienan yang tidak dapat dirender oleh peranti lunak, dan hal-hal ini bertambah. Ada juga banyak batasan yang lebih besar, terutama ketika Anda berurusan dengan bandwidth VRAM, masalah sinkronisasi, dan perhitungan tambahan.

ace
sumber
Saya tidak berpikir Anda perlu menyimpan sampel subpixel jika kotak filttering sudah cukup maka Anda bisa menjalankan rata-rata saja.
joojaa
2
Saya menduga sampling tekstur dan cache mungkin juga area di mana implementasi perangkat keras memungkinkan kinerja yang tidak mungkin dicapai dengan implementasi perangkat lunak.
Julien Guertault
3
@aces Satu item lain yang layak disebutkan adalah kekuatan. Perangkat keras khusus akan melakukan pekerjaan yang sama biasanya dengan sebagian kecil dari anggaran daya dan, dengan pelambatan daya sudah menjadi masalah, terutama pada perangkat seluler, akan diprogram sepenuhnya akan membuatnya jauh lebih buruk.
Simon F
@JulienGuertault Fair point, tapi saya pikir ini sebagian besar berlaku untuk MSAA. Tampaknya ada hasil tes yang menunjukkan bahwa ini bukan masalah besar ketika semuanya sesuai dengan memori on-chip (meskipun ini dapat memiliki dampak kinerja terlepas)
ace
@SimonF Saya pikir itu poin yang bagus juga. Saya memasukkannya dalam jawaban.
ace