В статье рассматриваются факторы, влияющие на время начальной загрузки операционной системы, обсуждаются преимущества по времени загрузки, которые возможны при замене BIOS на специализированную процедуру ранней инициализации периферийных устройств.
QNX Software Systems
Недавно компания Intel выпустила процессор Intel Atom на базе архитектуры х86, который помог компании начать быстрое освоение рынка недорогих встраиваемых систем с низким энергопотреблением специализированного применения. Это событие позволило воспользоваться знаниями и наработками архитектуры х86 для создания нового поколения встраиваемых систем, однако для полной идиллии помимо низкого энергопотребления и невысокой стоимости не хватает еще одного очень важного параметра – скорости начальной загрузки операционной системы. Ведь большинство систем, построенных на архитектуре х86, зависят от микропрограммы начальной загрузки, называемой BIOS, которая обеспечивает совместимость устройств и определяет системную конфигурацию во время начальной загрузки.
Время начальной загрузки при использовании BIOS
BIOS можно рассматривать как миниатюрную операционную систему, отвечающую за связь с аппаратным обеспечением. Код начальной загрузки – это та часть BIOS, которая оказывает наибольший эффект на время загрузки. Он выполняется при включении системы, обнаруживает и инициализирует устройства, подключенные к системе (клавиатура, мышь, контроллеры прерываний, видеокарта, процессор, кеш, ОЗУ, PCI-устройства, USB-устройства, датчики и диски). Помимо определения и инициализации каждого из этих устройств, программа BIOS должна оценить их количественные характеристики (например, размер ОЗУ) и возможности (например, поддержка процессором 64-битной адресации). Помимо этого, реализуется дополнительный код начальной загрузки для каждого устройства, у которого есть BIOS-ПЗУ. Выполнение всех этих процедур требует некоторого (не всегда одинакового) времени и обычно не нужно для встраиваемых устройств, поскольку они в большинстве случаев имеют фиксированную конфигурацию.
Время начальной загрузки при использовании технологии быстрого запуска
Начальная загрузка с использованием BIOS предназначена для поддержки целого множества аппаратных конфигураций. В этой ситуации очевидное решение – удалить те части кода начальной загрузки BIOS, которые не требуются для данного конкретного встраиваемого приложения. В большинстве случаев этого достаточного для того, чтобы сократить время запуска от нескольких секунд до долей секунды.
Для того чтобы улучшить и эти показатели, разработчики могут применить аппаратное назначение прерываний и использовать начальную загрузку с устройств хранения с линейной адресацией (EEPROM или флеш-память) или применить задержку выделения ресурсов.
Быстрая начальная загрузка в основном становится быстрой, потому что некоторые задачи просто не выполняются. Этот подход идеален для встраиваемых приложений, которые специально предназначены для выполнения всего одной или нескольких задач.
Специализированная процедура начальной загрузки
Применяя специализированную процедуру начальной загрузки, разработчик может упразднить все лишние шаги, которые выполняет BIOS во время работы, также можно отложить выполнение тех операций, которые не требуются для начального запуска системы, до того момента, когда они непосредственно потребуются. В качестве примера можно привести шину PCI, запуск которой необязателен в самом начале и, следовательно, может быть отложен до того времени, когда драйверу понадобится доступ к устройству на данной шине.
В системах, основанных на BIOS, конфигурирование прерываний уже прописано, тогда как в конфигурациях с быстрой начальной загрузкой разработчик самостоятельно определяет порядок обработки прерываний. С точки зрения сокращения времени наиболее экономичным было бы аппаратное назначение прерываний таким образом, чтобы они были известны во время компиляции. Такой подход обеспечил бы простой, но эффективный способ сокращения времени загрузки. Кроме того, это позволит повысить производительность системы. Например, можно назначить отдельные каналы для интенсивных прерываний и использовать общие линии для менее интенсивных. Ведь применение общей линии прерывания для множества устройств приводит к ненужным временным задержкам из-за потоковой обработки прерываний.
Использование устройств с линейной адресацией (например, флеш-память или EEPROM) помогает улучшить временные показатели и упрощает код начальной загрузки благодаря возможности отказаться от более медленных вызовов BIOS для чтения образа с диска. Последний шаг в начальном загрузчике состоит в обработке образа операционной системы в ОЗУ и запуске ОС. Более наглядно это можно увидеть на рис. 1, который иллюстрирует двухэтапный процесс загрузки:
1. начальный загрузчик (IPL) осуществляет первичную инициализацию, находит образ ОС, копирует код начальной загрузки из образа ОС и переходит к нему;
2. запуск заканчивает инициализацию оборудования, копирует оставшуюся часть образа ОС в ОЗУ и заполняет структуры данных ОС.
Теперь нужно реализовать те шаги, которые раньше выполнялись в BIOS. Конечно, важно, что разработчик может на свое усмотрение решить, что именно должно выполняться, однако недостаток данного подхода состоит в том, что на это придется потратить определенное время.
Рис. 1. Процесс начальной загрузки
Общие задачи технологии быстрой начальной загрузки и BIOS
Несмотря на использование специализированного начального загрузчика, нужно реализовывать некоторые шаги так же, как их выполняет BIOS. Например, применить процедуры инициализации контроллера памяти, процессора и кеша, обеспечить доступ к верхним разделам памяти и работу в защищенном режиме. Конечно, метод быстрой начальной загрузки не может выполнить все эти шаги быстрее, чем BIOS.
BIOS быстрой загрузки
В данной статье мы рассмотрели два подхода к начальной загрузке: на основе BIOS и полностью конфигурируемая быстрая начальная загрузка. Технология быстрой начальной загрузки неизбежно требует участия разработчика, если только она не была уже реализована поставщиком платы или операционной системы. Исследовательский центр компании Intel изучает возможности уменьшения времени начальной загрузки на основе BIOS и уже сделал ряд публикаций, в которых приводится несколько возможных путей уменьшения времени загрузки. Некоторые из приведенных рекомендаций заключаются в специальной модификации BIOS (адаптация к конкретной встраиваемой системе, аналогично приведенному в разделе «Специализированная процедура начальной загрузки»), другие рекомендации направлены на оптимизацию, например, с помощью технологии Intel SpeedStep, которая позволяет сократить время загрузки как в конфигурации с BIOS, так и без нее. Методы, которые предложены компанией Intel, не требуют участия разработчика, могут быть достаточными для некоторых встраиваемых приложений и рассматриваются как приемлемый компромисс между уменьшением времени начальной загрузки и усилиями разработчика.
Заключение
Система на основе технологии быстрой начальной загрузки будет загружаться значительно быстрее, чем система на основе BIOS, потому что можно самостоятельно выбирать или отбрасывать те или иные этапы загрузки в зависимости от аппаратной конфигурации, применяемой для данного встраиваемого приложения. Ведь как показала жизнь, в большинстве случаев весь функционал BIOS не требуется для встраиваемых приложений на базе платформ Intel Atom, поэтому выполнение определенных операций во время начальной загрузки можно считать бесполезной тратой времени. Однако отказаться от BIOS не так-то просто. Вернее, это требует непосредственного участия разработчика в реализации тех шагов, которые обычно выполняются BIOS.
Для наглядной демонстрации того, насколько технология быстрой начальной загрузки может улучшить время загрузки, посмотрите видеоролик "QNX fast boot on Intel Atom / Kontron nanoETXexpress-SP" по следующей ссылке: http://www.youtube.com/watch?v=yTUweJKAUfk.
Технология была представлена в России на мероприятиях официального дистрибьютора ОСРВ QNX, компании SWD Software, прошедших весной и осенью 2009 года в Москве и Санкт-Петербурге.
Статья опубликована в журнале «ИСУП», № 4(24)_2009
Бен Бирон (Ben Biron),
QNX Software Systems,
e-mail: bbiron@qnx.com