10

Когда вы впервые включаете компьютер, сначала настраивается цикл выборки / выполнения для получения инструкций из микросхемы BIOS непосредственно в регистр команд в ЦП или есть автоматическая схема, настроенная таким образом, что при обнаружении включения питания команды в Чип BIOS автоматически загружается в оперативную память?

Обновить

Я думаю, что нашел свой ответ здесь:

После выключения сигнала сброса ЦПУ начинает работать. Код в ОЗУ не может быть выполнен, так как ОЗУ пусто. Производители ЦП предварительно программируют процессор так, чтобы он всегда начинал выполнять код по адресу «FFFF:0000» (обычно ПЗУ BIOS) ПЗУ.

Таким образом, центральный процессор физически настроен на выборку и выполнение адреса памяти FFFF:0000 в ПЗУ, как только он включен.

2 ответа2

17

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

В мире конца 1980-х годов прошивка машины - одна из двух вещей, называемых "BIOS" в мире IBM PC-совместимых - действительно была в микросхеме ПЗУ на шине ISA; и ЦП действительно начали выполнять код по физическому адресу 000FFFF0 , местоположению в "обычной памяти", доступ к которому осуществляется через указатель реального режима F000:FFF0 Этот мир давно исчез.

(Мир, в котором ошибочно живет автор WWW-страницы С. Эбрагим Шуббар, несмотря на то, что он писал в 2002 году, еще старше. Процессоры не запускались с комбинацией CS:IP FFFF:0000 с 8086 года. 80286 изменил это на F000:FFF0 . Но 80286 мира сам по себе является весьма устаревшим миром конца 1980 - х лет , что народная мудрость по- прежнему циркулирует.)

Ваш "чип BIOS" - это ОЗУ; и ваш процессор не 16-битный.

В современных ПК прошивка машины хранится в энергонезависимой оперативной памяти. Чип NVRAM подключен к шине LPC (или к выделенному интерфейсу "Firmware Wub"), а мост LPC/FWH в "чипсете" обычно отключает циклы записи в него. "Перепрошивка" прошивки включает в себя установку регистров набора микросхем, которые разрешают запись в NVRAM и затем запись в NVRAM. (Например, в Intel ICH10 бит регистра набора микросхем, который допускает циклы записи, называется BIOSWE , "BIOS Write Enable". Есть некоторые дополнительные детали, которые я здесь пропущу, но в этом суть.)

Процессоры x86 не начинали выполнение в местоположении 000FFFF0 со времен 80286. 32-разрядные процессоры запускаются в так называемом нереальном режиме. Несмотря на то, что начальное значение регистра CS после сброса - F000 , дескриптор сегмента, связанный с этим регистром, изначально содержит FFFF0000 качестве своего базового адреса. Таким образом, физический адрес, который изначально соответствует 16:16 CS:IP-адресу F000:FFF0 фактически является и был со времен 80386, FFFFFFF0 .

И именно здесь микропрограмма машины в основном отображается в физическое адресное пространство на 32-разрядных и 64-разрядных компьютерах x86. В области "обычной памяти" имеется окно для прошивки объемом 128 КБ, но NVRAM, на котором установлена прошивка машины, может быть до 16 МБ (хотя это зависит от набора микросхем) на современных ПК и, как правило, немедленно отображается в 16 МБ физического адресного пространства. ниже линии 4 ГБ - то есть физические адреса от FF000000 до FFFFFFFF . (Чтобы снова использовать ICH10 в качестве примера: то, какая часть этого адресного пространства отображается на NVRAM, контролируется регистром набора микросхем, известным как FWH_DEC_EN , " Регистрация дешифрования концентратора микропрограммного обеспечения", регистрация. Микропрограмма кодируется для перепрограммирования регистра FWH_DEC_EN соответствии с размером фактического чипа NVRAM, установленного на материнской плате. Но верхние 512 КБ NVRAM всегда отображаются на физические адреса FFF80000 на FFFFFFF и не могут быть отключены.) Код, первоначально выполняемый процессором сразу после сброса, находится в верхних 64 КБ этого диапазона адресов 16 МБ.

Что касается затенения в ПЗУ BIOS (как его называют - почему barlop считает, что затенение ЦП является загадкой): Да, доступ к NVRAM на шине LPC или концентратору микропрограммного обеспечения все еще не такой быстрый, как доступ к основному системная (энергозависимая) оперативная память. Но причины, по которым слежка важна, значительно уменьшились с появлением операционных систем, таких как OS/2 и Windows NT - снова в конце 1980-х и начале 1990-х годов. Операционные системы реального режима, такие как MS-DOS, PC-DOS, DR-DOS и т.д., Были наслоены поверх функциональных возможностей ввода-вывода, обеспечиваемых микропрограммой устройства. Таким образом, код прошивки и данные только для чтения в конечном итоге стали доступны во время выполнения. Операционные системы защищенного режима, такие как OS/2 и Windows NT, в гораздо меньшей степени полагаются на предоставляемые микропрограммой службы во время выполнения. Таким образом, тот факт, что код, выполняемый из NVRAM, и данные, предназначенные только для чтения, поступают в процессор медленнее, чем при теневом копировании в системную память, представляет собой меньшую проблему, чем раньше.

Кроме того, какой код прошивки и данные они полагаются на не обязательно жить в той части NVRAM отображается в части физического адресного пространства, вышеупомянутая окно 128KiB "обычной памяти", то есть обязательно даже shadowable в первую очередь. Не все службы встроенного ПО защищенного режима должны располагаться ниже линии 1 МБ в физическом адресном пространстве, как службы встроенного ПО реального режима, а некоторые - нет. (И, конечно , это было бы возможно только сделать тот же трюк с областью физического адресного пространства , что они живут, если есть по крайней мере 4GiB системная память.)

По иронии судьбы, более точным источником информации об этом, чем С. Эбрагим Шуббар в 2002 году, является книга Фила Краучера « BIOS Companion», выпущенная годом ранее в 2001 году. М. Краучер отмечает, что Unices, Linux, Windows NT и «предположительно (95/98)» "не получают никакой выгоды от теневого копирования". Это не обязательно совсем бесполезно , но это сравнительно очень мало по сравнению с миром людей, использующих MS-DOS, PC-DOS и DR-DOS в реальном режиме на 16-битных машинах 80286 в 1989 году.

3

У большинства плат в BIOS была опция для настройки этого поведения. Обычно это называлось теневым копированием, и обычно оно было включено по умолчанию. Я не думаю, что многие доски утруждают себя выбором в эти дни и просто всегда находятся в тени. Причина в том, что ОЗУ быстрее ПЗУ, поэтому оно ускоряет копирование в ОЗУ и запуск его оттуда.

Обратите внимание, что копирование не выполняется какой-то магической схемой, оно просто выполняется самим биосом, когда он сначала начинает выполнять из ПЗУ, он просто копирует себя в ОЗУ, а затем продолжает выполняться оттуда.

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