Ini adalah kasus lain di mana kebijaksanaan rakyat yang diterima pada subjek, seperti yang sayangnya dicontohkan oleh psusi
jawaban dan memang bagian dari pertanyaan, terjebak di dunia seperti sekitar tahun 1991, meskipun banyak referensi teknis yang tersedia menjelaskan bagaimana sekarang jika tidak.
Di dunia akhir 1980-an, firmware mesin - satu dari dua hal yang disebut "BIOS" di dunia yang kompatibel dengan IBM PC - memang ada dalam chip ROM pada bus ISA; dan CPU memang mulai mengeksekusi kode pada alamat fisik 000FFFF0
, lokasi di "memori konvensional" diakses melalui penunjuk mode nyata F000:FFF0
Dunia ini sudah lama berlalu.
(Dunia yang penulis halaman WWW yang Anda tunjukkan, S. Ebrahim Shubbar, hidup dengan keliru, meskipun ditulis pada tahun 2002, bahkan lebih tua. CPU belum memulai dengan CS:IP
kombinasi FFFF:0000
sejak 8086. The 80286 mengubahnya menjadi F000:FFF0
Tetapi dunia 80286 itu sendiri adalah dunia yang sangat ketinggalan zaman pada akhir 1980-an yang masih beredar kearifan rakyat.)
"Chip BIOS" Anda adalah RAM; dan CPU Anda tidak 16-bit.
Di PC modern, firmware mesin disimpan dalam RAM yang tidak mudah menguap . Chip NVRAM terhubung ke bus LPC (atau ke antarmuka "Firmwware hub" khusus), dan jembatan LPC / FWH dalam "chipset" biasanya menonaktifkan siklus tulis untuk itu. "Flashing" firmware melibatkan pengaturan register chipset yang memungkinkan penulisan ke NVRAM dan kemudian menulis ke NVRAM. (Dalam Intel ICH10, misalnya, bit register chipset yang memungkinkan siklus tulis dinamai BIOSWE
, "BIOS Write Enable". Ada beberapa detail tambahan yang akan saya lewati di sini, tetapi itulah intinya.)
Prosesor x86 belum memulai eksekusi di lokasi 000FFFF0
sejak zaman 80286. CPU 32-bit memulai apa yang dikenal sebagai mode tidak nyata . Meskipun nilai awal CS
register setelah reset adalah F000
, deskriptor segmen yang terkait dengan register itu awalnya disimpan FFFF0000
sebagai alamat dasar. Jadi alamat fisik yang awalnya sesuai dengan 16:16 CS: alamat IP F000:FFF0
sebenarnya, dan telah sejak zaman 80386 FFFFFFF0
,.
Dan di situlah firmware mesin pada dasarnya dipetakan ke dalam ruang alamat fisik pada mesin x86 32-bit dan 64-bit. Ada jendela 128KiB ke firmware di area "memori konvensional", tetapi NVRAM yang memegang firmware mesin dapat mencapai 16MiB (meskipun ini bervariasi berdasarkan chipset) pada PC modern dan pada dasarnya dipetakan ke dalam 16MiB ruang alamat fisik segera di bawah garis 4Gib - yaitu alamat fisik FF000000
untuk FFFFFFFF
. (Untuk menggunakan ICH10 sebagai contoh lagi: Berapa banyak ruang alamat ini dipetakan ke NVRAM dikendalikan oleh register chipset yang dikenal sebagai FWH_DEC_EN
, "Firmware Hub Decode Enable", register. Firmware dikodekan untuk memprogram ulang programFWH_DEC_EN
daftar sesuai dengan ukuran chip NVRAM aktual yang diinstal pada mainboard. Namun atas 512KiB dari NVRAM selalu dipetakan, ke alamat fisik FFF80000
untuk FFFFFFF
, dan tidak dapat dinonaktifkan.) Kode awalnya dijalankan oleh prosesor segera setelah kehidupan ulang di atas 64KiB dari kisaran alamat 16MiB ini.
Sedangkan untuk BIOS ROM shadowing (begitulah namanya - cukup mengapa barlop
berpikir bahwa CPU sedang dibayangi adalah sebuah misteri): Ya, akses ke NVRAM pada bus LPC atau hub firmware masih tidak secepat akses ke sistem utama (volatile) RAM. Tetapi alasan bahwa membayangi sangat penting berkurang dengan kemajuan sistem operasi seperti OS / 2 dan Windows NT - lagi pada akhir 1980-an dan awal 1990-an. Sistem operasi mode nyata seperti MS-DOS, PC-DOS, DR-DOS dan sebagainya berlapis di atas fungsionalitas I / O yang disediakan oleh firmware mesin. Jadi kode firmware dan data hanya-baca akhirnya banyak diakses saat dijalankan. Sistem operasi mode terlindungi seperti OS / 2 dan Windows NT jauh lebih sedikit mengandalkanpada layanan yang disediakan firmware saat run-time. Jadi fakta bahwa mengeksekusi kode dari NVRAM, dan hanya membaca data dalam waktu yang sama, datang ke prosesor lebih lambat daripada ketika dibayangi ke dalam sistem RAM kurang dari masalah daripada dulu.
Selain itu, apa firmware kode dan data yang mereka lakukan mengandalkan belum tentu hidup di bagian NVRAM dipetakan ke bagian dari ruang alamat fisik, tersebut 128KiB "memori konvensional" jendela, yang tentu bahkan shadowable di tempat pertama. Layanan firmware mode terlindungi tidak semua harus hidup di bawah garis 1MiB di ruang alamat fisik seperti halnya layanan firmware mode nyata, dan beberapa tidak. (Dan tentu saja itu hanya akan mungkin untuk melakukan trik yang sama dengan luas ruang alamat fisik yang mereka lakukan tinggal di jika ada setidaknya 4GiB RAM sistem.)
Ironisnya, sumber informasi yang lebih akurat tentang ini daripada tulisan S. Ebrahim Shubbar pada tahun 2002 adalah buku Phil Croucher The BIOS Companion dari tahun sebelumnya pada tahun 2001. M. Croucher mengamati bahwa Unices, Linux, Windows NT, dan "agaknya (95 / 98) "" tidak mendapatkan manfaat dari membayangi ". Ini belum tentu sepenuhnya tidak bermanfaat, tetapi relatif sangat sedikit sehubungan dengan dunia orang yang menjalankan MS-DOS, PC-DOS, dan DR-DOS dalam mode nyata pada 16-bit 80286 mesin pada tahun 1989.