Системный модуль ROM BIOS (System ROM BIOS) обеспечивает программную поддержку стандартных устройств PC, конфигурирование аппаратных средств, их диагностику и вызов загрузчика операционной системы. Системный модуль ROM BIOS в значительной степени привязан к конкретной реализации системной платы, поскольку именно ему приходится программировать все микросхемы чипсета системной платы. Функции BIOS разделяются на следующие группы:
♦ инициализация и начальное тестирование аппаратных средств — POST;
♦ настройка и конфигурирование аппаратных средств и системных ресурсов — CMOS Setup, см. 6.6;
♦ автоматическое распределение системных ресурсов — PnP BIOS;
♦ идентификация и конфигурирование устройств PCI — PCI BIOS, см. 14.7;
♦ отработка базовых функций программных обращений (сервисов) к систем ным устройствам — ROM BIOS Services;
♦ поддержка управляемости конфигурированием — DMI BIOS;
♦ поддержка управления энергопотреблением и автоматического конфигури рования - АРМ и ACPI BIOS.
Все эти функции (или их часть) исполняет системный модуль BIOS, хранящийся в микросхеме ПЗУ или флэш-памяти на системной плате. Большинство сервисных функций выполняется в 16-битном режиме, хотя некоторые новые функции могут иметь и альтернативные вызовы для 32-битного исполнения.
Системный модуль BIOS должен обслуживать по вышеуказанным функциям все компоненты, установленные на системной плате: процессор, контроллер памяти (ОЗУ и кэш), стандартные архитектурные компоненты (контроллеры прерываний и DMA, системный таймер, системный порт, CMOS RTC), контроллер клавиатуры, а также набор стандартных периферийных контроллеров и адаптеров, даже если они и не установлены на системной плате. В этот набор входят графические адаптеры CGA и MDA, порты СОМ и LPT, контроллер НГМД, диски АТА (теперь уже обязательно двух каналов). Если на системной плате установлены дополнительные компоненты, например контроллер SCSI, графический адаптер SVGA, адаптер локальной сети, то их поддержка тоже должна быть в системном модуле BIOS.
Микросхема с системным модулем BIOS приписана к пространству памяти, и ее положение определяется двумя свойствами процессоров х86:
♦ После аппаратного сброса процессор выполняет первую инструкцию по ад ресу начала последнего параграфа физически адресуемой памяти: 8086/88 по адресу FFFFOh; 80286 и 386SX - по адресу FFFFFOh; 386DX и выше - по адресу FFFFFFFOh (правда, Р6 можно сконфигурировать и на старт по адресу FFFFOh).
♦ В стандартном реальном режиме процессору доступна лишь память с адре сами в пределах О-FFFFFh, следовательно, программный код и данные BIOS должны находиться в этом диапазоне. Векторы прерываний, ссылающиеся на сервисы BIOS, в реальном режиме могут адресоваться только к памяти в диапазоне адресов 0-OFFFFFh (0-10FFEF при открытом вентиле Gate А20).
По этим соображениям в PC AT область системного модуля BIOS располагается под границей первого мегабайта памяти по адресам FOOOO-FFFFFh, занимая 64 Кбайт (целый сегмент). Копия этого образа на машинах 80286 и 386SX располагается по адресам FFOOOO-FFFFFFh под границей 16-го мегабайта. На машинах 386DX и выше копия образа BIOS находится в области FFFFOOOO-FFFFFFFFh, но для процессоров Р6 она, в принципе, необязательна. Тем не менее, ее продолжают использовать (даже, например, в чипсете i820). Кроме того, для совместимости с АТ/286 на некоторых платах могла присутствовать и дополнительная копия BIOS по адресам FFOOOO-FFFFFFh, если она разрешена настройкой CMOS Setup (в этом случае невозможно использовать более 16 Мбайт ОЗУ). В машинах XT системный модуль BIOS был компактным (8 Кбайт) и размещался в области FEOOO-FFFFFh. Когда появились микросхемы ПЗУ емкостью 128 Мбайт, на некоторых машинах AT системный модуль BIOS стал занимать область EOOOO-FFFFFh, но вскоре от этого «расширения» отказались, поскольку оно сокращало размер доступной верхней памяти (см. 4.2). Современный системный модуль BIOS имеет типовой объем 128 или 256 Кбайт, который проецируется в «окно» размером 64 Кбайт страницами. Это возможно, поскольку во время начальных стадий теста POST и выполнения утилиты CMOS Setup не требуется поддержки всех сервисов BIOS, а в рабочем режиме, наоборот, не нужен программный код POST и Setup.
Поскольку содержимое флэш-BIOS может быть изменено прямо в компьютере, возникает опасность полной потери работоспособности компьютера при занесении некорректной «прошивки» или под действием вируса. С разрушенным модулем BIOS компьютер не может запуститься. Для предотвращения таких ситуаций применяют различные способы защиты.