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:
- 16 (ish) warna 80x25 mode teks (ini pada dasarnya seperti apa layar memuat BIOS)
- 16 warna mode resolusi tinggi 640x480
- 256-warna 320x200 mode warna-tinggi
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.