Системная логика и проблемы диагностики

05 Янв 2016

Системная логика и проблемы диагностики

Первая инструкция, которую выполняет x86-совместимая платформа, находится по адресу FFFFFFF0h. Зная это, несложно отредактировать системный BIOS так, чтобы сразу после запуска компьютера в диагностический порт выводился своеобразный маркер старта. Вот, казалось бы, и вся диагностика. Если старт платформы состоялся, но компьютер работает некорректно, — на помощь придут POST-коды. Если нет запуска, — ищем проблемы, устраняем дефекты, заменяем неисправные компоненты. Имеет ли право на жизнь такая технология ремонта компьютерной техники в современных условиях?

ROM SIP: что происходит до старта BIOS?

До появления платформ на основе процессоров Intel Pentium 4 и AMD Athlon XP, участие системной логики во взаимодействии процессора и микросхемы постоянного запоминающего устройства, хранящего код ROM BIOS, сводилось к задаче электрического и логического сопряжения шин этих устройств. Ситуация резко изменилась с появлением протокола SIP, который определяет специальную фазу инициализации, предшествующую выполнению первой инструкции процессором. На этой фазе устанавливаются некоторые базовые частоты и тайминги платформы, при этом используется информация из системного ПЗУ. Таким образом, цикл чтения первой инструкции процессором уже не является первым обращением к ПЗУ с момента включения питания.

Ситуация резко изменилась с появлением в процессорах AMD Athlon протокола SIP (Serial Initialization Protocol)

Исследования, выполненные в IC Book Labs показали, что в бинарном коде BIOS появилась 16-байтовая область, кардинально влияющая на старт платформы. Изменение хотя бы одного бита приводило к полной неработоспособности системной платы. Тонкость в том, что доступ к этой области выполняется до выборки первой выполняемой инструкции BIOS.

Важно ли быстродействие ROM?

Содержимое ПЗУ BIOS или Firmware ROM можно разделить на две части:

  1. Небольшой загрузочный блок (Boot Block), размером единицы-десятки килобайт, получающий управление с первой выполняемой инструкции. Этот блок  инициализирует жизненно важные системные ресурсы, после чего верифицирует, распаковывает в оперативную память и запускает основной блок.
  2. Основной блок (Main Block) как было показано выше, выполняется из оперативной памяти. Его главные задачи — завершить процесс инициализации платформы, начатый загрузочным блоком, обеспечить старт операционной системы с накопителя, далее, во время загрузки и в сеансе работы ОС, предоставить сервисные процедуры для обслуживания функций UEFI API или Legacy BIOS Services.  

Таким образом, ROM нужен только на начальном этапе старта (до запуска основного блока firmware), производительность ROM практически не влияет на производительность компьютера, поэтому быстродействие ROM повышать не требуется...

Такие, казалось бы закономерные рассуждения были опровергнуты компанией Intel.  Начиная с системной логики Intel 8 Series / C220 Series Chipset Family Platform Controller Hub (PCH), вводится поддержка ряда технологий ускорения доступа к содержимому постоянного запоминающего устройства. Почему так? Процессорный гигант считает, что нужно экономить каждую миллисекунду процедуры POST? Возможно, одна из причин состоит в появлении дружественных интерфейсов для CMOS Setup и других встроенных утилит современных реализаций UEFI firmware. Не секрет, что для красивого и качественного графического интерфейса в высоких разрешениях требуются достаточно большие блоки информации, проще говоря «картинки», чтение которых занимает существенное время.

Технология QUAD SPI

В чем же состоит одна из основных технологий ускорения доступа к ROM? Все достаточно просто: разрядность тракта передачи данных для интерфейса SPI (Serial Peripheral Interface или, по другой трактовке Serial PROM Interface) увеличена в 4 раза, соответственно увеличилась скорость поступления данных из микросхемы. Отметим, что сказанное не означает аналогичное ускорение для записи Flash ROM, поскольку в этом случае действуют ограничения, связанные с физическими процессами записи ячеек энергонезависимой памяти.

Описание четырех сигнальных линий, обеспечивающих расширение разрядности тракта передачи данных SPI до четырех бит
Рис 1Фрагмент документации Intel 8 Series. Описание четырех сигнальных линий, обеспечивающих расширение разрядности тракта передачи данных SPI до четырех бит

Как следует из описания, на смену однобитному двунаправленному каналу передачи, образованному двумя встречными однонаправленными сигналами SPI_MOSI, SPI_MISO, пришел четырехбитный канал, образованный четырьмя двунаправленными линиями SPI_IO[0...3].

Практический вывод

Обратимся к документации. В приведенном описании, бит QE (Quad Enable), включающий 4-битный режим передачи, переопределяя функциональность выводов микросхемы, отмечен как не изменяемый (Non-Volatile). Его содержимое сохраняется при отключении питания. Из этого следует важный практический вывод: записывая современную микросхему Flash ROM с помощью программатора, требуется помнить, что для успешного старта платформы недостаточно, чтобы содержимое ПЗУ было корректным.

Фрагмент документации Winbond W25Q64FV Data Sheet. Побитное описание регистра Status Register-2
Рис 2Фрагмент документации Winbond W25Q64FV Data Sheet. Побитное описание регистра Status Register-2

Опции, определяющие режим работы микросхемы, в частности бит QE  должны быть установлены в состояние, соответствующее режиму работы контроллера SPI на системной плате. Иначе, SPI ROM и SPI Host будут инициализированы в разных режимах, что делает чтение данных невозможным. И еще. Несмотря на сходство аббревиатур SIP и SPI, означают они абсолютно разные понятия.