Bagaimana driver layar saya menangani begitu banyak data?


61

Saya baru saja melakukan beberapa perhitungan cepat:

Di MacBook saya, saya memiliki resolusi 2560x1440 dikalikan dengan 24 Bit untuk warna, kami mendapatkan 11,05MB untuk satu gambar atau 663MB per detik pada 60 fps .

Saya kira ada beberapa kompresi, tetapi misalnya ketika saya bergerak dengan tiga jari di atas touch pad saya cukup acak, apa yang terjadi selanjutnya di layar dan hampir setiap piksel berubah. Sama dengan hampir setiap interaksi lainnya.

Tolong jelaskan jika perhitungan saya salah dan bagaimana data ini diangkut dari kartu grafis saya ke layar saya? Berapa lebar bus antara kartu grafis saya dan layar saya? Singkatnya, mungkin menjelaskan bagaimana tampilan menyimpan piksel? Shift register? Cache?


7
"Mungkin singkatnya menjelaskan bagaimana tampilan menyimpan piksel?" Layar sebenarnya tidak menyimpan data piksel, itu semua ditangani oleh RAM pada kartu grafis (atau RAM sistem untuk grafik terintegrasi). RAM dengan mudah memiliki beberapa bandwidth GB / s. Frame dikirim ke layar mengikuti protokol, sehingga data tersedia seperti yang diperlukan untuk tampilan.
ks0ze

3
Menurut Anda mengapa ada kompresi? Menurut Anda apa yang terjadi ketika data tidak dapat dikompres? Apakah Anda pikir layarnya tertinggal?
Mehrdad

3
@Aresloom: Ah, begitu. Kompresi lossy akan menjadi salah satu cara, ya. :) Saya pikir Anda memikirkan lossless!
Mehrdad

2
@ ks0ze beberapa panel yang lebih baru menyimpan layar terakhir yang mereka kirim. Caching di sana menggunakan daya lebih sedikit daripada GPU memompa gambar statis keluar 60 kali per detik. anandtech.com/show/7208/understanding-panel-self-refresh
Dan Neely

2
Apakah tampilan laptop modern masih menggunakan LVDS? Setengah lusin tahun yang lalu perusahaan GPU berencana untuk menghapusnya pada saat yang sama dengan VGA (yang hilang dari generasi asli keluaran GPU) yang mendukung displayport tertanam.
Dan Neely

Jawaban:


69

Pada dasarnya perhitungan Anda benar. Untuk sinyal 1440p60Hz, Anda memiliki kecepatan data 5,8Gbps setelah Anda mengizinkan waktu pengosongan juga (batas piksel yang tidak terlihat dalam output gambar).

Untuk HDMI / DVI, pengkodean 10 / 8b digunakan, yang berarti secara efektif walaupun Anda telah mengatakan 24bit data warna per piksel, sebenarnya 30bit dikirim saat data dikodekan dan kata-kata kontrol protokol ditambahkan. Tidak ada kompresi yang dilakukan sama sekali, data mentah dikirim, jadi itu berarti Anda membutuhkan bandwidth data 7,25Gbps .

Sekali lagi melihat HDMI / DVI. Ini menggunakan standar pensinyalan "TDMS" untuk transfer data. Standar HDMI V1.2 mengamanatkan maksimum 4.9Gbps untuk Single-Link (3 jalur data serial + 1 clock line), atau dalam kasus Dual-Link DVI maksimum 9.8Gbps (6 jalur data serial, saya pikir ). Jadi ada lebih dari cukup bandwidth untuk melakukan 1440p60 melalui Dual-Link DVI, tetapi tidak melalui HDMI V1.2.

Dalam standar HDMI V1.3 (sebagian besar perangkat melompati V1.4a yang merupakan bandwidth yang sama dengan 1.3), bandwidth dilipatgandakan menjadi sekitar 10Gbps yang akan mendukung 1440p60, dan juga bandwidth yang cukup untuk UHD pada 30Hz (2160p30).

DisplayPort sebagai contoh lain memiliki 4 stream data serial, masing-masing mampu (dalam V1.1) sebesar 2,16Gbps per stream (terhitung untuk pengkodean), jadi dengan tautan V1.1 Anda dapat melakukan 1440p60 dengan mudah dengan semua 4 stream. Mereka juga telah merilis standar yang lebih baru, V1.2 yang menggandakan ke 4.32Gbps / stream yang memungkinkan untuk UHD @ 60Hz. Masih ada versi yang lebih baru yang mereka dorong lebih jauh ke 6.4Gbps / stream .


Awalnya angka-angka itu terdengar besar, tetapi sebenarnya tidak begitu banyak ketika Anda mempertimbangkan USB 3.0. Itu dirilis dengan kecepatan data 5Gbps hanya dengan satu kabel (sebenarnya dua, satu untuk TX, satu untuk RX, tapi saya ngelantur). PCIe yang digunakan kartu grafis Anda secara internal saat ini berjalan hingga 8Gbps melalui pasangan diferensial tunggal, jadi tidak terlalu mengejutkan bahwa antarmuka data eksternal sedang mengejar ketinggalan.


Tetapi pertanyaannya tetap, bagaimana ini dilakukan? Ketika Anda berpikir tentang VGA, itu terdiri dari kabel tunggal untuk data R, G, dan B yang dikirim dalam format analog. Analog seperti yang kita tahu sangat rentan terhadap noise, dan throughput DAC / ADCs juga terbatas, sehingga secara besar-besaran membatasi apa yang dapat Anda tekan melalui mereka (dengan mengatakan bahwa Anda hampir tidak dapat melakukan 1440p60Hz melalui VGA jika Anda beruntung).

Namun dengan standar modern kami menggunakan standar digital yang jauh lebih kebal terhadap noise (Anda hanya perlu membedakan tinggi atau rendah daripada setiap nilai di antaranya), dan juga Anda menghilangkan kebutuhan untuk konversi antara analog dan digital.

Lebih lanjut, munculnya penggunaan standar diferensial pada satu ujung sangat membantu karena Anda sekarang membandingkan nilai antara dua kabel (+ ve perbedaan = 1, -ve perbedaan = 0) daripada membandingkan satu kawat dengan beberapa ambang batas. Ini berarti bahwa pelemahan tidak terlalu menjadi masalah karena hal itu mempengaruhi kedua kabel secara merata dan melemahkan ke titik tegangan tengah - "mata" (perbedaan voltase) semakin kecil, tetapi Anda masih dapat mengetahui apakah itu + ve atau -ve bahkan jika hanya 100mV atau kurang. Sinyal berakhir tunggal setelah sinyal melemahkannya mungkin turun di bawah ambang batas Anda dan menjadi tidak dapat dibedakan bahkan jika masih memiliki amplitudo 1V atau lebih besar.

Dengan menggunakan tautan serial lebih dari satu paralel, kita juga dapat beralih ke kecepatan data yang lebih cepat karena kemiringan tidak lagi menjadi masalah. Dalam bus paralel, katakanlah lebar 32bit, Anda harus benar-benar cocok dengan panjang dan karakteristik perambatan 32 kabel agar sinyal tidak keluar dari fase satu sama lain (condong). Dalam tautan serial, Anda hanya memiliki satu kabel, sehingga kemiringan tidak dapat terjadi.


TL; DR Data dikirim dengan laju bit penuh yang Anda hitung (beberapa Gbps), tanpa kompresi. Teknik pensinyalan modern dari tautan digital berseri atas pasangan diferensial memungkinkan hal ini.


Juga, saya berpikir bahwa beberapa tampilan HDMI menggunakan 2 tautan HDMI 1.2v untuk mendapatkan gambar, secara efektif membagi layar menjadi 2. Itu akan memberikan bandwidth gabungan pada dasarnya 9,8Gbps.
Ismael Miguel

5
@Aresloom 5GHz adalah titik di mana hampir semua CPU mulai mencair karena banyaknya transistor yang beralih secara bersamaan dan menghasilkan panas dalam jumlah besar. Itu tidak berarti 5GHz adalah jam tertinggi untuk semuanya , ini menjadi panas (dan bahan apa yang Anda gunakan - silikon tidak selalu terbaik). Contoh terbaik yang bisa saya pikirkan adalah Keysight Infinnium DSAX96204Q di mana masing-masing dari empat ujung depan memiliki sampler Indium Phosphide yang berdetak pada 80GHz! Tetapi sampler itu hanya memiliki beberapa lusin transistor di dalamnya dan ia membakar beberapa watt (CPU modern memiliki miliaran )
Sam

4
@Arloom 340MHz akan menjadi clock rate, data rate diserialisasi sedemikian rupa (dalam TDMS misalnya) 10 bit dikirim pada kabel di setiap siklus clock - sehingga clock 340MHz akan menghasilkan 3,4Gbps. Hanya kabel dan perangkat keras (de) serialisasi (SERDES) di pinggiran IC video yang berjalan pada kecepatan data serial tersebut. Setelah perangkat keras SERDES, secara internal ada bus paralel lagi berlari kembali pada laju clock yang lebih rendah. Blok SERDES dapat berjalan sangat cepat - PCIe adalah 8Gbps per lajur, sehingga blok SERDES berjalan pada 4GHz (menggunakan kedua clock edge untuk bits - DDR).
Tom Carpenter

1
8b / 10b meningkatkan penolakan kesalahan karena lebih mudah untuk mendeteksi transisi daripada status dalam sinyal cepat. Pengkodean itu menjamin bahwa tidak akan ada jangka waktu yang berurutan atau nol.
pjc50

1
@curiousdannii Ini adalah siklus yang menarik bukan. Pertama kita mulai dengan serial (mis. UART) yang terlalu lambat (misalkan 115kbps maks). Kemudian kami pergi ke bus paralel seperti IDE yang mencapai sekitar 66MHz @ 16bit, jadi sekitar 1Gbps. Kemudian kami kembali ke serial karena ternyata kami bisa pergi sangat cepat dengan bus diferensial. Tapi sekarang serial tidak cukup cepat lagi, jadi kita pergi dengan semacam serial paralel - beberapa jalur bus serial individu yang pada dasarnya dapat ditangani sepenuhnya secara terpisah dan kemudian setiap kemiringan jalur ke jalur dikoreksi dengan FIFOs.
Tom Carpenter

19

Komputer modern ternyata sangat cepat. Orang-orang akan dengan senang hati memuat video HD 30fps penuh tanpa menyadari bahwa itu melibatkan miliaran operasi aritmatika per detik. Gamer cenderung sedikit lebih sadar akan hal ini; GTX 1060 akan memberi Anda 4,4 TFLOPS ( triliun operasi floating point per detik).

Tolong jelaskan jika perhitungan saya salah dan bagaimana data ini diangkut dari kartu grafis saya ke layar saya?

Berapa lebar bus antara kartu grafis saya dan layar saya?

Jawaban lain telah membahas sifat multi-gigabit HDMI, DisplayLink dll.

Singkatnya, mungkin menjelaskan bagaimana tampilan menyimpan piksel? Shift register? Cache?

Layar itu sendiri menyimpan, secara teori, tidak ada data gambar.

(Beberapa layar, terutama televisi, menyimpan satu atau dua bingkai untuk menerapkan pemrosesan gambar. Ini meningkatkan latensi dan tidak disukai oleh para gamer.)

Subsistem grafis komputer menyimpan piksel dalam DRAM biasa. Biasanya tidak menggambar semuanya dari prosesor setiap frame, tetapi menyerahkan sebagian fungsionalitas ke subsistem khusus dan kompositor . Komponis akan memungkinkan mis. Setiap jendela pada desktop disimpan sebagai kumpulan piksel yang berbeda, yang kemudian dapat dipindahkan, digulir, atau diperbesar oleh perangkat keras khusus. Ini menjadi cukup jelas dengan menggulir pada perangkat seluler - Anda dapat menempuh jalan yang pendek sampai Anda kehabisan piksel yang sudah dihitung sebelumnya "offscreen" dan perangkat lunak harus berhenti dan merender lebih banyak lagi ke buffer komposer.

Permainan yang digambar ulang setiap frame, dan ada banyak literatur tentang bagaimana adegan dibangun. Ini dibangun menjadi framebuffer pada kartu grafis yang kemudian dikirim keluar sementara frame berikutnya ditarik ke buffer berbeda.

Video decoding biasanya juga diberikan kepada perangkat keras khusus, terutama H.264.


11

Tautan antara kartu display dan panel LCD dibawa melalui beberapa pasangan diferensial berkecepatan tinggi menggunakan pensinyalan TMDS , biasanya disebut "jalur". Biasanya empat lajur digunakan, sehingga orang dapat mengatakan bahwa lebar bus 4-bit. Untuk lebih jelasnya ada jawaban stackhexchange .

Setiap model panel LCD biasanya diproduksi dengan beberapa inkarnasi antarmuka, jadi kita harus berhati-hati dan melihat sufiks ketika mencoba mengganti panel yang rusak. Sebagian besar tautan digital modern (HDMI 1.4) memiliki 10,2 Gbps, atau hanya 2,5 Gbps per jalur. Dalam perhitungan Anda (663 MBps) totalnya mencapai 1,2 Gbps per lajur (dengan asumsi 4 lajur), yang tidak terlalu banyak (misalnya SATA3 memiliki 6Gbps).

TAMBAHAN pada panel LCD. LCD active-matrix sebenarnya mencoba untuk menyimpan gambar frame (data piksel) dalam kapasitor yang terkait dengan "Twisted Nematic Cells" (sel yang mengendalikan polarisasi film). Masalahnya adalah bahwa ukuran tutup penyimpanan analog harus menjadi trade-off antara waktu penyimpanan dan kecepatan sakelar piksel. Jadi itu tidak dapat dibuat besar, kehilangan potensi yang tersimpan dengan cepat, dan karenanya membutuhkan penyegaran berkala . Setiap sel pixel terhubung dengan data dan garis alamat melalui transistor (elemen "aktif"), lihat artikel Tomshardware ini . LCD driver-controller muliplex data dan garis alamat secara garis demi garis sehingga menjaga gambar yang ditampilkan. Gambar itu sendiri disimpan dalam frame buffer (RAM) di dalam pengontrol grafis.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.