OSDev

для всех
Текущее время: 01 май 2024, 01:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
СообщениеДобавлено: 20 мар 2010, 12:59 

Зарегистрирован: 10 авг 2007, 15:37
Сообщения: 60
Вот возник у меня такой вопрос. У процессора есть адрес, по которому он обращается к первой инструкции при старте. Где расположена эта инструкция? Наверное в BIOS, то бишь в ПЗУ. Но в современных мамках, BIOS подключена через шину LPC к южному мосту. Далековато от процессора. То есть первый вариант - перенаправление обращений процессора по определенным физическим адресам к микросхеме ПЗУ BIOS. Второй вариант - копировать BIOS в ОЗУ и там уже исполнять. Когда у меня был комп на i386, там в настройках BIOS Setup даже был пункт что-то типа Use shadow BIOS. Но вот тут у меня вопрос, кто копирует BIOS в ОЗУ, если проц еще не стартовал? Или, он исполняет маленький код из ПЗУ, копирующий BIOS в память при необходимости и потом уже выполняет его?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 мар 2010, 13:46 

Зарегистрирован: 28 окт 2007, 18:33
Сообщения: 1418
Запуск процессора описан в 9-й главе третьего тома интеловского мануала. Однако аппаратный сброс затрагивает не только процессор, но и всю прочую электронику, включая северный и южный мосты. Благодаря этому они устанавливают "стандартное" отображение адресов, по которому микросхема ПЗУ BIOS будет занимать самые старшие адреса в районе 4 Гбайт (заканчивая FFFF_FFFF; начало зависит от объёма BIOS). Кроме того, на старшую часть ПЗУ BIOS (последние 64 Кбайта) будут отображаться физические адреса 000F_0000–000F_FFFF — т.е. именно те, где располагался BIOS на первых ПК. Процессор начинает выполнение, имея базовый адрес сегмента кода, равный FFFF_0000 (сам CS содержит F000), и содержимое IP=FFF0, что обеспечивает выборку первой команды по физическому адресу FFFF_FFF0 — из последних 16 байт ПЗУ BIOS. Этой командой будет длинный переход, обеспечивающий загрузку в CS:IP адреса реальной точки входа в код BIOS.

"Затенение" ПЗУ BIOS выполняется кодом BIOS — естественно, опираясь на функции чипсета. Оно осуществляется очень просто: сначала северный мост настраивается так, чтобы обращения на запись в диапазоны BIOS отправлялись в ОЗУ, а обращения на чтение — к южному мосту (и через него к микросхеме ПЗУ BIOS). После этого содержимое микросхемы ПЗУ BIOS считывается и записывается по тем же самым адресам, что приводит к его копированию в ОЗУ. Наконец, северному мосту даётся команда запретить запись по адресам BIOS, а запросы на чтение отображать на ОЗУ. В результате все последующие доступы по адресам BIOS направляются к ОЗУ, а не к ПЗУ, и выполняются намного быстрее.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB