Кто загружает BIOS в оперативную память при загрузке компьютера

8

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

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

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

Cygnus
источник

Ответы:

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), подключенную к системной шине через набор микросхем, используя адрес физической памяти.

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

JdeBP
источник
Спасибо, мне кажется, это намного понятнее. Однако когда вы говорите, что энергонезависимая ОЗУ и данные считываются из нее, означает ли это, что BIOS каким-то образом связан с ОЗУ? Каждый чип RAM поставляется с BIOS? Я знаю, что это может показаться глупым, но я новичок в этой теме.
Лебедь
Когда он говорит о энергонезависимой оперативной памяти (NVRAM), он ссылается на технологию, отличную от ОЗУ, используемой в качестве основной системной памяти (обычно динамическая оперативная память, DRAM). Это отдельный чип от основной оперативной памяти, который содержит прошивку даже при выключенном питании, таким образом, это «энергонезависимая» часть.
Дугв
@Dougvj: В таком случае, почему у нас есть отдельный адрес FFFFFFF0 для него? Разве размер NVRAM не будет размером с прошивку?
Лебедь
Я думаю, что ваши вопросы лучше рассматривать как реальные вопросы, а не комментарии к этому ответу. Посмотрите на некоторые «связанные» вопросы справа, а затем выясните вопрос, который поможет вам лучше понять. (В SuperUser, безусловно, есть место для некоторых вопросов + ответы по самым основам, это кажется из краткого шуфти.)
JdeBP
@JdeBP: я добавил новый вопрос
Cygnus