legal note
IC Book © 2001

hardware
software

support
buy

Home page
Описание контрольных точек процедур POST

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



 
 
 
POST
American Megatrends
DIM


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

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

С0

Program BSP APIC as Virtual Wire mode


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

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

Инициализация регистров Local APIC
Мультипроцессорная система, также как и система с Hyper-Threading, должны выполнить процедуру инициализации регистров Local APIC, которые отображаются в системной памяти. Регистры используются для обработки ошибок и позволяют установить режима взаимодействия 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, Stepping) в служебных структурах

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

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

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

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

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

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

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


С2

Initialize Boot Strap Processor


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

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

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


С3

Initialize Application Processors


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

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

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


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

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

С8

Initialize CPU's Before Boot


POST приступает к настройке регистров 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 Register) с помощью межпроцессорного прерывания Startup IPI. Согласно спецификации запуск процессоров приложений может осуществляться либо BSP-процессором, либо одним из активных AP-процессоров. Выбор стратегии зависит от аппаратных особенностей реализации платформы. Каждому из AP-процессоров выделяется область стека объемом 1024 байта и временный сегмент запуска, в который помещается программный код. Получив Startup IPI, процессор приложений начинает исполнение своего стартового кода из сегмента запуска и переходит в состояние, зависящее от содержания этого кода

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

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

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


Использованы материалы AMIBIOS, Check Point List, American Megatrends, Inc., Copyright© 1995. All Rights Reserved.





about
press


вверх