Apakah BIOS dibaca dari chip BIOS atau disalin ke dalam RAM saat startup?

10

Ketika Anda pertama kali menyalakan komputer Anda, apakah siklus ambil / jalankan pertama kali diatur untuk mengambil instruksi dari chip BIOS langsung ke register instruksi di CPU atau apakah ada sirkuit otomatis yang diatur sehingga ketika daya hidup terdeteksi, instruksi dalam chip BIOS secara otomatis dimuat ke dalam RAM?

Memperbarui

Saya rasa saya menemukan jawaban saya di sini :

Setelah sinyal reset mati, CPU mulai beroperasi. Kode dalam RAM tidak dapat dieksekusi karena RAM kosong. Produsen CPU memprogram terlebih dahulu prosesor untuk selalu mulai mengeksekusi kode pada alamat "FFFF: 0000" (biasanya ROM BIOS) dari ROM.

Jadi CPU diatur secara fisik untuk mengambil dan mengeksekusi alamat memori FFFF: 0000 dalam ROM segera setelah aktif.

mring
sumber
1
Jika Anda menemukan jawaban sendiri, lakukan posting sebagai jawaban di bawah ini, alih-alih mengeditnya menjadi pertanyaan. (Anda dapat menerima jawaban Anda sendiri setelah beberapa waktu.)
user1686
Buku Memutakhirkan dan memperbaiki PC itu menyebutkan lokasi memori yang pertama kali dibaca CPU .. Dan ada proses yang diajarkan guru CS lama yang mungkin masih berlaku, disebut bootstrap, seperti dalam menarik diri Anda dengan bootstraps Anda, seperti: dasar) sebuah OS dimuat.
barlop

Jawaban:

3

Sebagian besar papan digunakan untuk memiliki opsi di BIOS untuk mengkonfigurasi perilaku ini. Biasanya disebut shadowing, dan biasanya diaktifkan secara default. Saya tidak berpikir banyak papan repot-repot memberi Anda pilihan hari ini dan hanya selalu membayangi. Alasannya adalah karena RAM lebih cepat dari ROM, sehingga mempercepat untuk menyalinnya ke RAM dan menjalankannya dari sana.

Perhatikan bahwa salinan tidak dilakukan oleh beberapa sirkuit ajaib, itu hanya dilakukan oleh bios itu sendiri ketika mulai dijalankan dari ROM pada awalnya, itu hanya menyalin dirinya sendiri ke RAM dan kemudian terus mengeksekusi dari sana.

psusi
sumber
Jadi dari apa yang saya mengerti dari apa yang Anda katakan, setelah mulai hidup, CPU membaca instruksi dari ROM, yang instruksi mengatakan "Salin semua instruksi startup di sini dalam ROM ke RAM dan kemudian atur penghitung program ke alamat awal seperti ini dan itu dalam RAM. " Apakah itu benar?
mring
@psusi Apakah Anda memiliki beberapa tautan yang menjelaskan apa yang Anda bicarakan? CPU shadowing tidak membuat saya banyak, dan bagaimana bisa dikonfigurasi. Dan kapan Anda berbicara tentang? Kapan motherboard memiliki opsi ini? Bisakah Anda menunjukkan model motherboard mana saja yang memiliki opsi ini?
barlop
18

Ini adalah kasus lain di mana kebijaksanaan rakyat yang diterima pada subjek, seperti yang sayangnya dicontohkan oleh psusijawaban 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:FFF0Dunia 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:IPkombinasi FFFF:0000sejak 8086. The 80286 mengubahnya menjadi F000:FFF0Tetapi 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 000FFFF0sejak zaman 80286. CPU 32-bit memulai apa yang dikenal sebagai mode tidak nyata . Meskipun nilai awal CSregister setelah reset adalah F000, deskriptor segmen yang terkait dengan register itu awalnya disimpan FFFF0000sebagai alamat dasar. Jadi alamat fisik yang awalnya sesuai dengan 16:16 CS: alamat IP F000:FFF0sebenarnya, 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 FF000000untuk 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_ENdaftar sesuai dengan ukuran chip NVRAM aktual yang diinstal pada mainboard. Namun atas 512KiB dari NVRAM selalu dipetakan, ke alamat fisik FFF80000untuk 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 barlopberpikir 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.

JdeBP
sumber