Главная » Статьи о компьютерах » Исследование Gigabyte Dual BIOS

Исследование Gigabyte Dual BIOS

Исследование Gigabyte Dual BIOS Идея проста — вместо одного BIOS использовать два чипа — основной (main BIOS) и резервный (backup BIOS). В случае искажения со­дер­жи­мо­го первого, происходит переключение на второй. После этого платформа стартует, загружает операционную систему, в сеансе которой возможен запуск процедур восстановления. Часто такие процедуры сам BIOS и выполняет, в этом случае backup возможен без загрузки ОС.

Теория

Напомним, что после аппаратного сброса, процессоры семейства x86 выполняют выборку первой инструкции по абсолютному адресу FFFFFFF0h. Этим обстоятельством обусловлен выбор адресного диапазона для размещения микросхемы BIOS — в верхних адресах 4 гигабайтного пространства. Например, микросхема размером 1 Мбайт размещается по адресам FFF00000h…FFFFFFFFh. Для реализации технологии Dual BIOS требуется решить следующие задачи.

  1. Необходим специальный триггер (Main/Backup), состояние которого выбирает режим старта платформы: 0=Main BIOS, 1=Backup BIOS.
  2. Обязанности адресного дешифратора, управляющего доступом к ROM, расширяются. Он должен обеспечить выбор одной из двух микросхем, которая будет размещена в диапазоне FFF00000h-FFFFFFFFh. Выбор осуществляется в зависимости от состояния триггера Main/Backup.
  3. Необходимо реализовать алгоритм управления триггером Main/Backup и рестарта платформы для запуска Backup BIOS. При первом старте, триггер устанавливается в “0” и выбирается Main BIOS. Если содержимое микросхемы Main BIOS достоверно, процедура POST выполняется обычным образом. Если содержимое микросхемы Main BIOS искажено, триггер переключается в состояние “1” и генерируется сигнал сброса. Процессор повторно начинает выполнение инициализационной процедуры с адреса FFFFFFF0h, но теперь уже на рассматриваемый адресный диапазон включен Backup BIOS.

Управление триггером Main/Backup выполняется программно-аппаратным методом с использованием таймера Watch Dog. После сброса, таймер начинает отсчет интервала времени, типовая продолжительность которого — около двух секунд. Предполагается, что при успешном старте Main BIOS, в составе инициализационной процедуры, будет выполнен фрагмент, останавливающий таймер. Если Main BIOS искажен и произошла потеря управления, фрагмент не будет выполнен и таймер не будет остановлен.

По истечении интервала, таймер инициирует переключение триггера Main/Backup в состояние “1” и генерацию сигнала сброса. Процессор запускается повторно, но уже с использованием Backup BIOS.

Пример реализации

Рассмотрим реализацию технологии Dual BIOS на примере платы Gigabyte GA-G31M-ES2L Rev2.3.

Фрагмент платы Gigabyte GA-G31M-ES2L с установленными двумя микросхемами SPI BIOS

В связи с тем, что большинство существующих наборов системной логики не имеют встроенных средств поддержки технологии Dual BIOS, для ее реализации на рассматриваемой платформе используется функциональность чипа SIO Integrated Technology Express IT8718F-S. Перечислим узлы этого контроллера, задействованные в обеспечении резервного дублирования BIOS.

  1. Триггер Main/Backup, определяющий тип старта платформы.
  2. Демультиплексор сигналов Chip Select, выбирающий одну из двух микросхем BIOS.
  3. Watch Dog таймер с формирователем сигнала сброса процессора.

Программное управление перечисленными узлами осуществляется с помощью регистра DualBIOS control register в составе IT8718F-S.

Схема использует SPI-контроллер в составе южного моста ICH7, он формирует сигнал Chip Select для стробирования доступа к микросхеме BIOS. Заметим, что в платах, не поддерживающих Dual BIOS, этот сигнал подключен непосредственно к входу Chip Select микросхемы SPI ROM. В рассматриваемой плате он подключается к демультиплексору, находящемуся в составе микросхемы MIO, который, получая сигнал Chip Select от южного моста, транслирует его на Chip Select основной или резервной микросхемы, в зависимости от типа старта платформы. Таким образом, всю поддержку протокола SPI (кроме выбора между Main и Backup BIOS) выполняет чипсет.