8

Когда компьютер запускается, код в BIOS выполняется первым. Однако как код в BIOS загружается в оперативную память для выполнения?

Я упоминал этот вопрос - BIOS считывается из микросхемы BIOS или копируется в RAM при запуске? , Однако это смутило меня больше. Если BIOS загружается из ПЗУ, а ПЗУ - это отдельный чип, какой смысл говорить об адресах сегментов в ОЗУ? Кроме того, куда загружается код BIOS - он находится в последних 1 МБ адресного пространства реального режима или в каком-то другом месте?

Если бы кто-то мог перечислить шаги от запуска компьютера до выполнения первой инструкции BIOS, включая адреса памяти, это было бы очень полезно

1 ответ1

7

Как я уже писал в своем ответе на этот вопрос, полученная народная мудрость по этому вопросу - как, к сожалению, подтверждается другими ответами там (и где-либо еще в SuperUser) - застряла в мире, как это было около 1991 года, несмотря на множество доступных технических ссылок, объясняющих как это сейчас иначе.

Вы не были бы в таком замешательстве, если бы прочитали мой ответ, потому что вы не спросили бы о «BIOS, загруженном из ROM».

Ваш "чип BIOS" не является ПЗУ; между запуском процессора и первой инструкцией прошивки нет машинного кода; и "М" в "RAM" и "ROM" означает "память".

Как я уже писал ранее, в современных ПК прошивка машины хранится в энергонезависимой оперативной памяти. Это не ROM, как это было раньше. См. Предыдущий ответ для получения подробной информации о чипе NVRAM, подключенном к шине LPC. (Например: на машине, разобраной рядом со мной, когда я набираю это, NVRAM, содержащая прошивку, является Pm49FL004T, чипом флэш-памяти LPC.)

32-разрядные процессоры не запускаются в реальном режиме и не начинаются с адреса, который находится ниже строки 1 МБ. Это десятилетия устаревшего мусора со времен 16-битных процессоров x86. Они начинаются в том, что в разговорной речи называется нереальным, и снова в своем предыдущем ответе я подробно рассказал о том, что на самом деле имело место с момента появления 80386. Они загружают свою первую инструкцию с адреса, который на самом деле находится прямо в верхней части 32-битного адресного пространства, FFFFFFF0 .

В моем предыдущем ответе я подробно рассказал вам, где встроенное ПО машины главным образом отображается в физическое адресное пространство на 32-разрядных и 64-разрядных компьютерах x86. Помните: и RAM, и ROM являются памятью. Физические адреса - это адреса памяти на системной шине. Они могут адресовать либо RAM, либо ROM. (Они могут даже заниматься другими вещами, но это только усложняет эту дискуссию.) Физический адрес FFFFFFF0 находится на 16 байт ниже верхней части диапазона 512 КБ, где верхние 512 КБ микропрограммы в энергонезависимой памяти всегда отображаются на системной шине с помощью "набора микросхем".

Нет никакой "загрузки" от какого-то мифического чипа ПЗУ, который происходит при инициализации или перезагрузке процессора. Чип, содержащий прошивку, является энергонезависимой оперативной памятью. Он сохраняет свое содержимое, записанное, когда он "мигает", через циклы питания. А процессор просто считывает инструкции по прошивке и данные с него по системной шине и по шине LPC (и, возможно, мосту LPC/FWH), подключенному к системной шине через набор микросхем, используя адрес физической памяти.

дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .