Seperti yang saya pahami, GPU memiliki set instruksi mereka sendiri, yang instruksinya dihasilkan oleh driver grafis. Instruksi GPU kemudian dikirim ke GPU. Jadi, bagaimana cara kerja komunikasi grafis sebelum driver dimuat? Apakah ada beberapa instruksi dasar yang harus diterapkan GPU sebagai minimum untuk memastikan bahwa komputer dapat melakukan tugas-tugas tampilan dasar?
drivers
graphics-card
gpu
VortixDev
sumber
sumber
Jawaban:
"Apakah ada beberapa instruksi dasar ...?" Ya persis. Semua GPU diharuskan untuk mengimplementasikan salah satu dari beberapa antarmuka sederhana - mereka terlalu primitif untuk disebut "set instruksi" - yang mana firmware platform ("BIOS" atau "UEFI") dan driver yang disertakan dengan OS tahu cara berbicara dengan . Pilihan biasa "antarmuka sederhana" hari ini adalah "VGA" ("Video Graphics Array"), antarmuka tingkat register yang awalnya ditentukan untuk kartu video standar itu. (Sekarang berusia 30 tahun ke atas!)
Misalnya, jika Pengelola Perangkat pada sistem Windows ID kartu grafis sebagai "Microsoft Basic Video Adapter", OS tidak dapat menemukan driver spesifik untuk kartu dan sebaliknya telah memuat driver yang kompatibel dengan VGA.
Nah, secara teknis, Windows selalu memuat driver itu (sehingga dapat menampilkan misalnya layar progress boot), kemudian (cukup terlambat boot) mengidentifikasi dan memuat driver "nyata" untuk kartu grafis Anda.
Standar VGA hanya mendukung beberapa mode grafis beresolusi rendah dan mode teks, dan tidak melibatkan apa yang saya sebut "menjalankan program" atau bahkan "instruksi" pada GPU. Intinya, firmware sistem atau "driver video dasar" hanya memasukkannya ke mode yang diinginkan dan kemudian menulis bit ke bitmap; bit dalam bitmap secara langsung sesuai dengan piksel pada layar. Setiap aritmatika yang harus dilakukan untuk menggambar garis atau kurva dilakukan dalam CPU. Yang merupakan cara tingkat sangat rendah dan lambat untuk membuat barang muncul di layar. Tapi itu cukup untuk tampilan dari, dan interaksi sederhana dengan, firmware, untuk instalasi OS dan layar boot-progres awal, dll.
Wikipedia: Video Graphics Array
sumber
Saya akan mencoba menjernihkan "voodoo" di balik semua ini, dengan menjelaskan cara kerja perangkat keras lama. GPU modern tidak berfungsi seperti ini tetapi mereka meniru antarmuka CPU-ke-kartu grafis.
tl; dr
Chip / kartu grafis pada tahun 80-an dan awal 90-an harus menghasilkan output dengan sangat cepat (relatif terhadap kecepatan clock) sehingga mereka tidak menjalankan instruksi, tetapi lebih memilih memperbaiki sirkuit. Mereka hanya menyedot data dari RAM ketika mereka pergi, jadi CPU hanya perlu membuang data dalam RAM di tempat yang tepat, dan chip grafis akan mengambilnya dan melemparkannya di layar. CPU juga dapat mengatur berbagai variabel konfigurasi pada chip grafis.
Detail:
Pada tahun 80-an, komputer rumahan memiliki chip grafis yang benar-benar "bodoh" yang memiliki beberapa perilaku tetap. Akan lebih masuk akal jika saya melalui pipa mundur.
Monitor CRT
Monitor ini membutuhkan input analog. Dengan kata lain, tegangan lebih tinggi = output yang lebih cerah. Monitor warna memiliki 3 saluran (Merah, Hijau dan Biru (atau, mis. YUV atau YIQ ) ). Tegangan ini menyesuaikan kekuatan berkas elektron. Hal-hal sederhana.
Monitor CRT secara harfiah menggunakan elektromagnet untuk membelokkan berkas elektron dari kiri ke kanan, kemudian mulai lagi sedikit lebih rendah dan belok kiri ke kanan, dan seterusnya dari atas ke bawah. Kemudian kembali ke atas dan ulangi.
DAC
Chip grafis memiliki konverter "digital to analog" ( komponen listrik yang sangat umum ). Ini mengubah nilai digital (mis. 2, 4, atau 8 bit) menjadi tegangan yang dapat disuplai ke monitor.
Memindai
Chip grafis harus "mengikuti" dengan berkas elektron, mengirimkan nilai yang tepat ke DAC sehingga dapat menghasilkan tegangan yang sesuai pada waktu yang tepat. (Jam digunakan untuk hal ini yang tidak akan saya bahas.) Tidak ada waktu untuk melaksanakan instruksi di sini. Semuanya terprogram dan mengambil sejumlah kecil siklus clock.
Mode video
Chip awal tidak terlalu cepat dan memiliki RAM terbatas. Karena itu, mereka cenderung memungkinkan pemilihan berbagai mode dan parameter konfigurasi lainnya, misalnya warna latar belakang, pemilihan font, lokasi dan ukuran kursor, pemilihan palet, dan sprite. Sebagian besar menawarkan mode "hanya karakter" resolusi tinggi, dan mode piksel demi piksel beresolusi lebih rendah.
Tiga mode VGA yang patut diperhatikan adalah:
Lukisan piksel
Sangat kasar, tergantung pada sistem grafis, pipeline terlihat seperti ini:
Lokasi piksel saat ini ⇒ Karakter proses / font / sprite / piksel / data konfigurasi ⇒ Nilai piksel ⇒ Palet ⇒ DAC
Ini adalah langkah ke-2 yang perlu dibaca dari beberapa lokasi RAM. Misalnya, dalam Mode Teks, karakter 1-byte akan dicari. Ini akan membentuk indeks ke dalam tabel font. Sedikit akan dilihat dari tabel ini, menunjukkan apakah piksel itu harus menjadi warna latar depan atau latar belakang. Byte ketiga akan diambil untuk mendapatkan warna foreground / background. Secara keseluruhan, 3 byte dibaca dari RAM.
Tapi "aliran" ini cukup banyak rangkaian sirkuit tetap sederhana yang diatur persis seperti, yah, aliran yang baru saja dijelaskan.
Antarmuka bus memori
CPU Intel memiliki benda peninggalan yang menjengkelkan ini yang disebut bus IO tetapi tidak penting jadi saya akan berpura-pura tidak ada di sana.
CPU mengakses RAM dengan menyiarkan permintaan READ atau WRITE, dan alamat, pada bus memori. Meskipun sebagian besar alamat yang valid mendapatkan respons dari RAM, rentang tertentu ditangani oleh perangkat sebagai gantinya. Misalnya, MEMBACA dari alamat tertentu mungkin memberi Anda informasi tentang penekanan tombol keyboard.
Dengan menulis ke bagian kanan dari "rentang grafik", Anda dapat menulis konten layar, dan juga mengatur parameter konfigurasi kartu grafis. Chip grafis "bisu" tidak menjalankan instruksi apa pun. Itu hanya terus berjalan lamban, memiliki beberapa byte yang mengalir melalui sirkuit dan menghasilkan tegangan.
Dengan VGA, sebenarnya ada RAM pada kartu grafis, karena Anda dapat mengkonfigurasi kartu grafis untuk data pra-diproses sebelum ditulis ke RAM grafis, untuk meningkatkan kinerja dalam beberapa situasi.
VESA
Kartu grafis setelah VGA menawarkan resolusi yang lebih tinggi dan kedalaman warna yang baik tetapi bekerja dengan prinsip yang sama. Banyak kartu grafis modern masih menyediakan kompatibilitas dengan ini untuk memungkinkan resolusi yang lebih tinggi selama booting. Tetapi VGA adalah yang "sangat mudah" yang bisa ditiru setiap kartu.
sumber