Siapa yang memuat BIOS dalam RAM selama bootstrap komputer


8

Saat komputer dinyalakan, kode di BIOS dijalankan terlebih dahulu. Namun, bagaimana kode di BIOS dimuat ke dalam RAM untuk dieksekusi?

Saya telah merujuk pertanyaan ini - Apakah BIOS dibaca dari chip BIOS atau disalin ke dalam RAM saat startup? . Namun, itu lebih membingungkan saya. Jika BIOS dimuat dari ROM dan ROM adalah chip yang terpisah, apa gunanya berbicara tentang alamat segmen dalam RAM? Juga, di mana kode BIOS dimuat - apakah itu dalam 1 MiB terakhir dari ruang alamat mode real, atau lokasi lain?

Jika seseorang dapat mendaftar langkah-langkah dari komputer start-up hingga pelaksanaan instruksi BIOS pertama termasuk alamat memori yang digunakan, itu akan sangat membantu

Jawaban:


7

Seperti yang saya tulis dalam jawaban saya untuk pertanyaan itu , hikmat rakyat yang diterima pada subjek - yang sayangnya dicontohkan oleh jawaban lain di sana (dan di tempat lain di SuperUser) - terjebak di dunia seperti sekitar tahun 1991, meskipun banyak referensi teknis yang tersedia menjelaskan bagaimana sekarang sebaliknya.

Anda tidak akan bingung jika Anda membaca jawaban saya, karena Anda tidak akan bertanya tentang "BIOS dimuat dari ROM" sejak awal.

"Chip BIOS" Anda bukan ROM; tidak ada kode mesin antara startup prosesor dan instruksi pertama dalam firmware; dan "M" dalam "RAM" dan "ROM" berarti "memori".

Seperti yang saya tulis sebelumnya, di PC modern, firmware mesin disimpan dalam RAM yang tidak mudah menguap . Ini bukan ROM seperti dulu. Lihat jawaban sebelumnya untuk detail chip NVRAM yang terhubung ke bus LPC. (Misalnya: Pada mesin yang duduk dibongkar di samping saya saat saya mengetik ini, NVRAM yang memegang firmware adalah Pm49FL004T, chip LPC Flash RAM.)

CPU 32-bit tidak memulai dalam mode nyata, dan tidak memulai dengan alamat yang di bawah garis 1MiB. Sampah dekade yang ketinggalan zaman dari zaman prosesor x86 16-bit. Mereka mulai dalam apa yang secara sehari-hari dikenal sebagai mode tidak nyata , dan sekali lagi dalam jawaban saya sebelumnya saya memberikan rincian tentang apa yang sebenarnya telah terjadi sejak munculnya 80386 . Mereka memuat instruksi pertama mereka dari alamat yang sebenarnya tepat di bagian atas ruang alamat 32-bit FFFFFFF0,.

Dalam jawaban saya sebelumnya, saya katakan secara rinci di mana firmware mesin pada dasarnya dipetakan ke dalam ruang alamat fisik pada mesin x86 32-bit dan 64-bit. Ingat: Baik RAM dan ROM adalah memori . Alamat fisik adalah alamat memori , pada bus sistem. Mereka dapat mengatasi RAM atau ROM. (Mereka bahkan dapat mengatasi hal-hal lain juga, tetapi itu hanya menyulitkan diskusi ini.) Alamat fisik FFFFFFF0adalah 16 byte di bawah bagian atas kisaran 512KiB di mana 512KiB teratas dari firmware, dalam RAM non-volatile, selalu dipetakan pada bus sistem oleh "chipset".

Tidak ada "memuat" dari beberapa chip ROM mistis yang berlangsung saat inisialisasi atau reset prosesor. Chip yang memegang firmware adalah RAM non-volatile . Itu mempertahankan isinya, ditulis ketika "flash", melintasi siklus daya. Dan CPU hanya membaca instruksi firmware dan data darinya, melalui bus sistem dan bus LPC (dan mungkin jembatan LPC / FWH) yang terhubung ke bus sistem melalui chipset, menggunakan alamat memori fisik.

Bacaan lebih lanjut


Terima kasih, ini sepertinya lebih jelas bagi saya. Namun, ketika Anda mengatakan RAM non-volatile dan data dibaca dari itu, apakah itu berarti bahwa BIOS digabungkan dengan RAM dalam beberapa cara? Apakah setiap chip RAM dilengkapi dengan BIOS? Saya tahu ini mungkin tampak bodoh, tapi saya pemula dalam topik ini.
Cygnus

Ketika dia mengatakan non-volatile random access memory (NVRAM) dia mengacu pada teknologi yang berbeda dari RAM yang digunakan sebagai memori sistem utama (Biasanya Dynamic Random Access Memory, DRAM). Ini adalah chip yang terpisah dari RAM utama yang berisi firmware bahkan ketika dimatikan, sehingga bagian "non-volatile".
Dougvj

@ Dougvj: Dalam hal ini, mengapa kita memiliki alamat FFFFFFF0 yang terpisah untuk itu? Bukankah ukuran NVRAM hanya ukuran firmware?
Cygnus

Saya pikir pertanyaan Anda lebih baik ditangani sebagai pertanyaan aktual, bukan komentar tentang jawaban ini. Lihatlah beberapa pertanyaan "Terkait" di sebelah kanan, lalu cari tahu pertanyaan yang akan memajukan pemahaman Anda. (Pasti ada ruang di SuperUser untuk beberapa pertanyaan + jawaban pada dasar-dasar, tampaknya dari shufti singkat.)
JdeBP

@JdeBP: Saya telah menambahkan pertanyaan baru
Cygnus
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.