Tutorial pengembangan sistem operasi menunjukkan dengan tepat untuk mencapai data layar dengan menulis langsung ke VGA atau EGA atau Super VGA, tetapi apa yang tidak saya dapatkan adalah apa perbedaan nyata antara menulis ke alamat tetap untuk tampilan, dan menulis ke kartu video secara langsung, baik di dalam pesawat atau dilepas? Saya hanya ingin klarifikasi dasar dari kebingungan saya tentang masalah ini
Dan karena ini bukan kasus sederhana dengan variabel dalam kartu, antarmuka-penghubung, bus, arsitektur, sistem pada chip, sistem tertanam, dll., Saya merasa sulit untuk menemukan cara untuk memahami ide di balik 100% ini . Apakah alamat yang tetap berbeda dari GPU kelas atas ke yang lebih rendah? Kenapa dan mengapa tidak?
Ini adalah salah satu tujuan saya dalam pemrograman untuk meng-host kernel dan membuat sistem operasi, dan memang mimpi yang tidak masuk akal. Gagal memahami terminologi tidak hanya menghalangi saya di beberapa bidang, tetapi membuat saya tampak bodoh dalam hal perangkat keras.
EXTRA: Beberapa dari jawaban saat ini berbicara tentang penggunaan prosesor yang dapat dialamatkan memori maksimum dalam spesifikasi 16-bit. Masalahnya adalah beberapa masalah yang timbul lainnya:
1. Bagaimana dengan memori kartu itu sendiri? Itu tidak akan membutuhkan RAM sistem untuk data layar itu sendiri.
2. Bagaimana dengan mode bit yang lebih tinggi? Dan tidak bisakah Anda tidak mengabaikan BIOS dalam mode nyata (x86) dan masih menangani memori melalui AL?
3. Bagaimana konsep penulisan ke alamat tetap tidak berubah pada GPU dengan banyak register dan kinerja pada atau di atas mikroprosesor yang sebenarnya?
Jawaban:
Secara teknis VGA adalah singkatan dari Video Graphics Array , standar video 640x480 diperkenalkan pada tahun 1987. Pada saat itu adalah resolusi yang relatif tinggi, terutama untuk tampilan warna.
Sebelum VGA diperkenalkan, kami memiliki beberapa standar grafis lainnya, seperti hercules yang menampilkan teks (80 baris 25 karakter) atau untuk grafik monokrom definisi tinggi relatif (pada 720x348 piksel).
Standar lain pada saat itu adalah CGA ( Color graphic adapter ), yang juga memungkinkan hingga 16 warna pada resolusi hingga 640x200 piksel. Hasilnya akan terlihat seperti ini:
Akhirnya, standar PC yang patut diperhatikan adalah Enhanced graphics adapter (EGA), yang memungkinkan resolusi hingga 640 × 350 dengan 64 warna.
(Saya mengabaikan standar non-PC untuk menjaga ini relatif singkat. Jika saya mulai menambahkan standar Atari atau Amiga - hingga 4096 warna saat itu! - maka ini akan menjadi cukup lama.)
Kemudian pada tahun 1987 IBM memperkenalkan komputer PS2. Itu memiliki beberapa perbedaan penting dibandingkan dengan pendahulunya, yang termasuk port baru untuk mouse dan keyboard (Sebelumnya mouse menggunakan port serial 25 pin atau port serial 9 pin, jika Anda punya mouse sama sekali); drive standar 3½ inci dan adaptor grafis baru dengan resolusi tinggi dan banyak warna.
Standar grafis ini disebut Video Graphics Array . Dulu konektor 3 baris, 15 pin untuk mentransfer sinyal analog ke monitor. Konektor ini bertahan hingga beberapa tahun yang lalu, ketika diganti oleh standar digital superior seperti DVI dan port tampilan.
Setelah VGA
Kemajuan tidak berhenti dengan standar VGA. Tak lama setelah pengenalan VGA, muncul standar baru seperti 800x600 S uper VGA (SVGA), yang menggunakan konektor yang sama. (Hercules, CGA, EGA dll semua memiliki konektor sendiri. Anda tidak dapat menghubungkan monitor CGA ke kartu VGA, bahkan jika Anda mencoba menampilkan resolusi yang cukup rendah).
Sejak itu kami telah beralih ke tampilan resolusi yang jauh lebih tinggi, tetapi nama yang paling sering digunakan adalah VGA. Meskipun nama yang benar adalah SVGA, XVGA, UXGA dll.
(Grafis milik Wikipedia)
Hal lain yang disebut 'VGA' adalah konektor DE15 yang digunakan dengan kartu VGA asli. Konektor biru ini biasanya bukan satu-satunya cara untuk mentransfer 'sinyal VGA' analog ke monitor, tetapi ini adalah yang paling umum.
Kiri: DB5HD Kanan: Konektor VGA alternatif, biasanya digunakan untuk kualitas yang lebih baik)
Cara ketiga 'VGA' digunakan adalah untuk menggambarkan kartu grafis, meskipun kartu itu mungkin menghasilkan resolusi yang sama sekali berbeda dari VGA. Penggunaannya secara teknis salah, atau paling tidak harus 'kartu yang kompatibel VGA', tetapi ucapan umum tidak membuat perbedaan itu.
Itu berarti menulis ke VGA
Ini berasal dari cara memori pada IBM XT dibagi. CPU dapat mengakses memori hingga 1MiB (1024KiB). 512KiB bawah dicadangkan untuk RAM, 512 KiB atas untuk kartu tambahan, ROM, dll.
Area atas ini adalah tempat memori kartu VGA dipetakan. Anda dapat langsung menulis dan hasilnya akan muncul di layar.
Ini tidak hanya digunakan untuk VGA, tetapi juga untuk alternatif generasi yang sama.
( Sumber peta ASCII).
sumber
Dx-nn
keluarga konektor,x
adalah ukuran shell,nn
adalah jumlah pin. Shell B adalah ukuran yang sama dengan port paralel (atau port serial 25-pin implementasi penuh lama). Shell E berukuran sama dengan port serial. Jadi secara teknis , konektor VGA 15-pin akan menjadi DE-15, tetapi ini tidak pernah menjadi bagian dari line-up konektor asli. AFAIK bahkan tidak pernah ada sebelum penggunaan IBM pada PS / 2 MCGA, VGA & 8514 / a. Wikipedia memiliki penjelasan yang bagus: en.wikipedia.org/wiki/D-subminiatureMenulis ke "alamat tetap" pada dasarnya menulis ke kartu video secara langsung. Semua kartu video ISA video (CGA, EGA, VGA) pada dasarnya memiliki beberapa RAM (dan register) yang dipetakan langsung ke memori CPU dan ruang I / O.
Jadi ketika Anda menulis byte ke lokasi memori tertentu, karakter itu (dalam mode teks) segera muncul di layar, karena Anda sebenarnya menulis ke dalam memori yang terletak di kartu video, dan kartu video hanya menggunakan memori itu.
Ini semua terlihat sangat membingungkan hari ini, terutama mengingat bahwa kartu video saat ini kadang-kadang disebut VGA (dan mereka memiliki kemiripan dengan kartu VGA "benar" dari tahun 1990-an). Namun, bahkan kartu modern meniru beberapa fungsi dari desain yang lebih tua ini (Anda dapat mem-boot DOS pada kebanyakan PC modern dan menggunakan program DOS yang menulis ke memori video secara langsung). Tentu saja, saat ini semuanya ditiru dalam firmware kartu video.
sumber
Sebenarnya tidak ada perbedaan: jika Anda menulis ke alamat memori video, maka perangkat keras akan merutekannya ke kartu video.
Jika Anda menulis sistem operasi Anda sendiri, Anda mungkin harus melakukan banyak pekerjaan dalam mendapatkan kartu grafis untuk memetakan ingatannya seperti yang Anda inginkan, mulai dengan memindai bus PCI untuk menemukan kartu tersebut.
sumber
Sejauh ini jawabannya telah menjelaskan bahwa kartu video lama berfungsi dengan memiliki memori video yang dipetakan ke dalam ruang alamat prosesor. Ini adalah memori kartu itu sendiri. Northbridge tahu untuk mengarahkan permintaan untuk memori yang dipetakan ini ke perangkat VGA.
Kemudian di atas itu ada ekspansi amny dan mode baru untuk kartu yang kompatibel dengan VGA. Ini mengarah pada penciptaan VESA BIOS Extensions (VBE), yang beroperasi melalui
int 10h
. Ini mendukung akselerasi 2D dasar (BitBlt), kursor perangkat keras, buffering double / tripple, dll. Ini adalah metode dasar untuk tampilan penuh warna pada setiap resolusi yang didukung (termasuk resolusi tinggi). Memori ini biasanya digunakan internal untuk kartu juga, dengan northbridge melakukan pengalihan seperti dengan VGA klasik. Ini adalah cara paling sederhana untuk memanfaatkan grafik penuh / resolusi penuh.Selanjutnya kita beberapa metode langsung mengakses GPU tanpa menggunakan bios, yang menyediakan akses ke fitur yang sama seperti VBE, dan mungkin yang tambahan. Pemahaman saya cukup kabur di sini. Saya pikir antarmuka ini khusus untuk perangkat, tetapi saya sama sekali tidak yakin akan hal itu.
Lalu ada antarmuka GPU yang dapat mendukung 3D acelleration / GP-GPU computation dll. Ini pasti membutuhkan driver atau spesifikasi yang disediakan pabrikan untuk penggunaan penuh, dan sering ada perbedaan keuangan bahkan antara perangkat dari pabrikan yang sama.
sumber