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?
gpu
rasterizer
mrpyo
sumber
sumber
Jawaban:
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.
sumber