Apakah Windows 98 OS / shell menggunakan CPU untuk menulis ke framebuffer / display?

0

Maksud saya apakah ia menggunakan CPU untuk mengakses MMIO untuk menempatkan piksel pada layar tanpa tindak lanjut dari perangkat keras lainnya (misalnya GPU, dll.)

Ketika Windows 98 melakukan booting, ia memuat gambar dengan program apa pun yang diluncurkan (Winload.exe?) Dan menerjemahkan gambar dan menulis ke perangkat MMIO ke tampilan. GPU tidak diperlukan untuk ini, tetapi Windows 98 memiliki driver perangkat untuk GPU. Saya menganggap itu berfungsi seperti ini:

PROGRAM PEMUATAN WIN -> DECAGE GAMBAR -> CALL DRIVER DISPLAY -> MENULIS PIXEL.

Inilah dua pertanyaan:

1.When Windows 98 melakukan booting dan menampilkan flagship, gambar splash-screen secara default (atau gambar yang ditentukan pengguna), apakah CPU memiliki decode dan menulisnya langsung ke perangkat lunak framebuffer / VGA / VESA middleware (driver) untuk letakkan piksel pada tampilan dan hindari menggunakan GPU jika driver GPU dimuat?

2.Jika tidak ada driver GPU yang terdeteksi, dapatkah Windows 98 berjalan dengan baik (OS itu sendiri) tanpa GPU dan hanya meminta CPU untuk menulis ke framebuffer (tidak mempertimbangkan hal-hal seperti OpenGL / DirectX / dll.)?

Dengan kata-kata yang lebih sederhana, apakah Windows 98 beroperasi 100% dengan CPU dan tidak memerlukan GPU (kecuali untuk manipulasi grafis high-end OpenGL / DirectX / hardware yang dipercepat menggambar / dll. Untuk game, decoding video, dll.)? Game 3-D mungkin menggunakan grafis cepat GPU yang mempercepat dengan OpenGL / DirectX, jadi tidak mungkin CPU melakukan apa pun selain menulis ke GPU untuk ini. Tetapi shell / GUI dan fungsi dasar OS tampaknya sangat mendasar dan kurang akselerasi, dan mungkin hanya digambar dengan CPU saja menggunakan semacam tampilan gambar perangkat lunak tingkat rendah untuk manipulasi piksel?

Perhatikan bahwa saya mengatakan "GPU", tetapi kita dapat menganggap itu berarti perangkat keras non-CPU yang menulis ke tampilan. CPU dapat menulis langsung ke layar tanpa GPU, tetapi melangkah lebih jauh dari ini mencakup MMIO, pemrograman tingkat rendah, spesifikasi, dan teknik elektronik / komputer.


sumber
Ya ampun .... adakah driver yang didukung untuk sesuatu yang setua ini, tidak didukung dan kemungkinan besar risiko keamanan menunggu untuk terjadi?
mdpc
Tentu. Saya memiliki rig lama dengan 98 dan "GPU" Anda dapat menyebutnya ... itu adalah perangkat keras yang dapat mengimplementasikan OpenGL / DirectX dan melakukan manipulasi grafis tanpa perlu CPU. Pertanyaan saya adalah, jika ada driver GPU, apakah itu menggunakannya untuk melakukan menggambar 2-D sederhana dari GUI dan semacamnya, atau apakah itu hanya menggunakan CPU dan VGA / VESA / dll. driver atau semacamnya untuk menangani logika menggambar? Ini adalah OS sederhana (dibandingkan dengan XP), tetapi rekayasa balik masih cukup memakan waktu dan memberikan beberapa jawaban tentang masalah saya.
"Perhatikan bahwa saya mengatakan" GPU ", tetapi kita dapat menganggap itu berarti perangkat keras non-CPU yang menulis ke layar." - Sebelum ditingkatkan dan disebut GPU, antarmuka perangkat keras di PC dulu disebut "adaptor layar" atau "adaptor grafis" , misalnya MDA, CGA, EGA, PGA, VGA. Harus ada HW untuk mengubah konten memori (yaitu framebuffer) menjadi sinyal video atau format untuk DVI / HDMI
serbuk gergaji

Jawaban:

2

Sedikit sejarah akan membantu Anda memahami bagaimana berbagai hal bekerja di dunia Windows 9x.

Sejak Intel 80386, prosesor memiliki dua "mode" operasi: Mode Riil dan Mode Terlindungi. Saat Anda menyalakan komputer pertama kali - bahkan rig gaming Core i7 modern - prosesor dimulai dalam Mode Nyata. Real Mode tidak memberikan perlindungan memori, tidak ada dukungan multitasking, tidak ada level privilege kode - tidak ada apa-apa. Setiap program memiliki akses langsung, tidak terbatas ke memori. Komunikasi dengan perangkat keras disediakan oleh BIOS melalui panggilan interupsi.

Interrupt melakukan persis seperti namanya; itu menghentikan CPU mati di jalurnya. Program akan memuat bitmap dari suatu gambar ke dalam frame buffer. Ini kemudian akan menempatkan pointer ke memori itu dalam byte rendah dari register CPU AX (dikenal sebagai AL), dan instruksi BIOS untuk menampilkannya dalam byte tinggi (AH). Kemudian akan memanggil BIOS interrupt 0x10h dan BIOS akan mengambil alih. CPU tidak lagi mengendalikan komputer Anda saat ini.

BIOS kemudian akan membaca instruksi dalam AH dan melewati pointer di AL ke perangkat keras video. GPU kemudian akan menyalin isi buffer bingkai ke dalam RAM-nya sendiri dan kemudian melepaskan kontrol kembali ke BIOS, yang kemudian mengembalikannya ke CPU. CPU sekarang kembali di kursi pengemudi.

Penting untuk diingat bahwa semua versi keluarga Windows 9x pada dasarnya adalah aplikasi DOS. Jadi ketika Win98 menunjukkan layar splash-nya, CPU masih dalam Real Mode, dan masih menggunakan interupsi BIOS untuk menampilkannya. Animasi kecil yang lucu di bagian bawah hanyalah trik bersepeda palet. Tidak ada gambar yang terjadi di sana.

Sekarang, ketika Windows dimuat, salah satu perintah pertama bisnisnya adalah mengganti CPU ke mode 32-bit Protected. Ini pada dasarnya mengeluarkan DOS dari memori dan memberi tahu BIOS apa yang bisa dilakukan dengan dirinya sendiri. Sebagian besar fungsi yang seharusnya ditangani oleh BIOS sekarang digantikan oleh Windows HAL dan Kernel. Di dunia Windows, aplikasi berbicara dengan perangkat keras melalui panggilan API, dan panggilan API itu menjalankannya melalui driver tampilan, yang merupakan komponen yang diperlukan dari sistem operasi.

Sekarang (akhirnya) di sinilah kami pindah ke pertanyaan Anda. Windows kemudian (seperti yang terus dilakukan hingga hari ini) mengendalikan perangkat keras video melalui driver layar. Jika tidak ada driver yang tersedia, itu default kembali ke driver Windows standar, yang menggunakan framebuffer untuk melakukan gambarnya. Satu-satunya perbedaan adalah bahwa CPU selalu di kontrol melalui memori yang dipetakan I / O dan BIOS tidak terlibat. Jika driver hadir, pengemudi masih akan menggunakan MMIO, tetapi untuk mengeluarkan perintah berpemilik ke GPU, bukan frame yang dipetakan. GPU memiliki akses langsung ke memori dan dapat beroperasi secara paralel dengan CPU, termasuk komunikasi dua arah melalui rentang I / O tersebut.

Windows 98 memang memiliki driver untuk perangkat keras video pada zamannya, dan dapat memberikan akselerasi penuh 2D dan 3D termasuk OpenGL dan DirectX. Tetapi masih membutuhkan driver untuk mengomunikasikan hal-hal ini ke GPU dan tidak dapat tanpa itu.

Kontrol jendela gambar (yaitu tombol, bilah judul, dll) dilakukan melalui Windows Graphics Device Interface (GDI), yang merupakan API Windows utama yang digunakan untuk menggambar elemen layar. Ini memiliki semua jenis fungsi, termasuk bentuk, pena, warna isi, dan ya, bitmap juga. GDI akan menerjemahkan instruksi-instruksi tersebut ke dalam kode driver. Pengemudi (baik itu driver GPU atau driver framebuffer) bertanggung jawab untuk mendapatkan instruksi GDI ke layar melalui cara apa pun yang diprogram untuk dilakukan.

Ini banyak untuk dicerna dan ini hanya gambaran singkat tentang bagaimana data masuk dan piksel keluar. Saya harap ini menjawab beberapa pertanyaan Anda.

Wes Sayeed
sumber