legal note
IC Book © 2001

hardware
software

support
buy

Home page
Описание POST-кодов




AMIBIOS Beep Codes
DIM manager
MPS initialization
AMIBIOS 6.x
AMIBIOS 7.x
AMIBIOS8®





POST

American Megatrends

DIM



Начальная инициализация многопроцессорной системы

Начальная инициализация MPS


Начальная инициализация многопроцессорной системы выполняется в кон­троль­ной точке 07. (Здесь и далее имеется в виду процедуры POST, вы­пол­ня­е­мые AMIBIOS v7.x)

С0

Program BSP APIC as Virtual Wire mode

Настройка регистров стартового процессора
Согласно спецификации мультипроцессорных систем подключение в ре­жи­ме Virtual Wire подразумевает настройку регистров стартового про­цес­со­ра без использования ресурсов IOAPIC так, что все прерывания PIC доступны BSP-процессору через локальное прерывание LINT0 встро­ен­но­го Local APIC. Программирование режима Virtual Wire состоит из не­сколь­ких этапов, каждый из которых сопровождается выводом в ди­аг­но­сти­че­ский порт значений от 0C001h до 0C004h

Настройка контроллера прерываний
Доступ к регистрам Local APIC требует переход к плоской 4Gb модели па­мя­ти. Для этого выполняется временный переход в Protected Mode, в ре­гистр ES загружается селектор, который ссылается на пред­ва­ри­тель­но подготовленный дескриптор, равный максимальному значению 0FFFFFFFFh. После установки ES=0 и возврата в Real Mode значение ли­ми­та сегмента сохраняется в регистрах Descriptor Cache, что позволяет ис­поль­зо­вать 32-разрядные адреса. Настройка контроллера пре­ры­ва­ний PIC сводится к запрету прохождения запросов IRQ0…IRQ7 на время ра­бо­ты с регистрами Local APIC

Инициализация регистров Local APIC
Мультипроцессорная система, также как и система с Hyper-threading, дол­жны выполнить процедуру инициализации регистров Local APIC, ко­то­рые отображаются в системной памяти. Регистры используются для об­ра­бот­ки ошибок и позволяют установить режим взаимодействия кон­трол­лера Local APIC процессора и контроллеров прерываний i8259A

Установка Spurious Vector, восстановление масок PIC
Финальная стадия настройки Local APIC состоит в том, чтобы ограничить количество Spurious Vector значением 0Fh и, модифицируя содержимое регистра LINT0, обеспечить прохождение запросов процессору о на­ли­чии прерывания по линии i8259. Регистр LINT0 из семейства LVT уп­рав­ля­ет назначением вектора для входа Local Interrupt 0. Его ис­поль­зо­ва­ние определяется мультипроцессорной таблицей и зависит от ап­па­рат­ных особенностей платформы. Перед тем, как будут вос­ста­нов­ле­ны ре­ги­стро­вые маски контроллеров прерываний i8259, разрешается при­ем не­маскируемых прерываний

Фаза завершения
Успешное завершение инициализации BSP-процессора для работы в ре­жи­ме Virtual Wire с использованием Local APIC


С1

Get CPU Information

Определение Type, Family, Model и Stepping
После аппаратного сброса все процессоры семейства i486 и старше со­хра­няют информацию о себе в регистре EDX. Задача POST на данном эта­пе – идентифицировать процессор. Для этого полученное значение со­хра­ня­ет­ся и выполняется поиск сигнатуры TMFS (Type, Family, Model, Step­ping) в служебных структурах

Определение торговой марки
По полученной информации формируется строка, соответствующая Type, Fa­mi­ly, Model и Stepping. Она потребуется на этапе визуализации, когда вмес­то кодового имени процессора на экране монитора должна ото­бра­жать­ся его торговая марка, например, Pentium-III(tm)

Данные о процессоре сохраняются в оперативной памяти

Check CPUID
Существуют устаревшие модели процессоров, которые не поддерживают ко­манду CPUID. В этом случае, чтобы избежать ошибки исключения и ос­та­нов­ки в процессе выполнения POST, проверяется допустимость ин­струк­ции. На современных платформах дополнительная проверка ва­лид­нос­ти CPU­ID не выполняется

CPUID
Для того, чтобы получить сигнатуру TFMS альтернативным способом, вы­пол­ня­ет­ся функция 01h инструкции CPUID. Полученное значение срав­ни­ва­ет­ся с ранее сохраненным (код C1 00)

Подготовка информации о процессоре в ASCII-коде
После выполнения инструкции CPUID, наряду с торговой маркой, го­то­вит­ся описательная информация о процессоре в формате ASCII (объ­ем кэш-памяти L1/L2/L3, многоядерность, Hyper-threading и т.п.) и со­хра­ня­ет­ся для отображения конфигурации на экране монитора

Подготовка информации о процессоре для SMI
Для обработки SMI Handler формируется область SMRAM, которая рас­по­ла­га­ет­ся по тем же адресам 0A0000h-0BFFFFh, где обычно на­хо­дит­ся ви­де­о­па­мять. Задача POST на данном этапе – уточнить объем SM­RAM и ее распределение по сегментам. За­тем в эту область со­хра­ня­ет­ся вся не­об­хо­ди­мая информация о про­цес­со­ре, которая по­тре­бу­ет­ся для об­ра­бот­ки SMI-событий

Сохранение данных о процессоре в SMRAM


С2

Initialize Boot Strap Processor

Инициализация стартового процессора

Разрешение кэш-памяти L1

Фаза завершения
Инициализация стартового процессора успешно завершена


С3

Initialize Application Processors

Запуск процессоров приложений
Выполняется процедура опроса процессоров приложений. AMIBIOS под­дер­жи­ва­ет до 15 AP, для инициализации которых зарезервированы ко­ды ди­а­гнос­ти­чес­ко­го порта от C3 01 до C3 0F

Обнаружен процессор AP1

Обнаружен процессор AP2...


Финальная фаза подготовки многопроцессорной платформы

Инициализация MPS перед загрузкой ОС


В контрольной точке 0ACh, после завершения процедуры Extended keyboard setup, выполняется финальная фаза подготовки многопроцессорной платформы к работе в среде ОС.

С8

Initialize CPU's Before Boot

POST приступает к настройке регистров Local APIC всех процессоров не­по­сред­ственно перед сеансом операционной системы

Формирование адресной таблицы участков Memory Hole
Формируется адресная таблица участков (Memory Hole), запрещенных к использованию по архитектурным причинам. На современных плат­фор­мах как минимум один участок требует настройки системной логики для корректной работы: это память непосредственно за пределами 4 Гб про­стран­ства. BIOS стремится объединить Memory Hole с регионами па­мя­ти, в которые отображаются регистры Local APIC, IOAPIC и про­стран­ство PCI и уменьшить количество таких участков

Свод данных о Shadow-областях памяти
Формируется статус Shadow-областей памяти с учетом их кэширования, гранулярности и поддержки Uncached Speculative Write Combining. Для каждой из них устанавливается флаг доступа для чтения и записи

Get CPU's Information
Согласно с установками CMOS Setup выбирается протокол работы с внут­ренней кэш-памяти BSP-процессора: Write Back, Write Through или за­прет на использование L1. Назначаются правила доступа к VGA-па­мя­ти, используемой бортовым видео-контроллером: принимается или от­вер­га­ет­ся политика USWC (Uncached Speculative Write Combining). Про­ве­ря­ет­ся CPU Reset ID установленного BSP процессора для того, что­бы все AP-процессора, инициализируемые в дальнейшем, были одного ти­па и одинаково могли поддерживать функции стартового процессора

Резервирование адресов для служебных структур
Формируется таблица адресов, где будут размещаются структуры, пред­наз­на­чен­ные для обслуживания каждого из установленных про­цес­со­ров в процессе загрузки операционной системы


С9

Wake up all application processors

Запуск AP-процессоров
Запуск AP-процессоров выполняется через ICR (Interrupt Command Re­gi­ster) с помощью межпроцессорного прерывания Startup IPI. Со­глас­но спе­цификации запуск процессоров приложений может осуществляться ли­бо BSP-процессором, либо одним из активных AP-процессоров. Вы­бор стратегии зависит от аппаратных особенностей реализации плат­фор­мы. Каждому из AP-процессоров выделяется область стека объ­е­мом 1024 байта и временный сегмент запуска, в который по­ме­ща­ет­ся программный код. Получив Startup IPI, процессор при­ло­же­ний на­чи­на­ет ис­пол­нение своего стартового кода из сегмента запуска и переходит в со­сто­я­ние, зависящее от содержания этого кода

Опрос готовности AP-процессоров
Процедура запуска процессоров приложений, начало которой со­сто­я­лось на предыдущем шаге, завершается циклическим опросом каждого из них. Готовность AP-процессора инкрементирует счетчик, и опрос про­дол­жа­ет­ся до тех пор, пока значение счетчика не совпадет с ожи­да­е­мым количеством CPU в системе. К сожалению, неготовность хо­тя бы од­но­го из AP-процессоров приводит к бесконечному циклу…

Инициализация AP-процессоров
Инициализация AP-процессоров выполняется в ICR с помощью меж­про­цес­со­р­но­го прерывания Init IPI. Получив его, Local APIC каждого про­цес­со­ра приложений выполняет сброс, по которому все регистры при­во­дят­ся в начальное состояние. Содержимое кэш-памяти при этом со­хра­ня­ет­ся, также как буфера отложенной записи и регистры блока вы­чис­ле­ний дан­ных с плавающей точкой

Фаза завершения
Инициализация многопроцессорной поддержки успешно завершена. Со­дер­жимое диагностического порта обнуляется


Использованы материалы:
AMIBIOS, Check Point List, American Megatrends, Inc., Copyright© 1995.
MultiProcessor Specification, Intel Corp. Copyright© 1993-1997.





about
press


вверх