Год спустя появляется AMIBIOS95+ Core 5.x с внушительным перечнем мощнейших изменений: поддержка многопроцессорных систем согласно MPS v1.1, поддержка спецификации PCI v2.1 и разветвленных PCI-шин, управление энергосбережением APM 1.1, автоопределение жестких дисков и режимов их работы (PIO), поддержка соединения по инфракрасному порту (IrDA).
Модульная система была усовершенствована с выходом AMIBIOS Core 6.x. Здесь стоит отметить преемственность кода в части контрольных точек, загрузочного блока и процедур инициализации с помощью DIM-менеджера, а также четкую идентификацию блоков программного кода с помощью меток.
Последней версией XX века низкоуровневого ПО American Megatrends стал AMIBIOS Core 7.x. Наиболее существенные новшества здесь следующие: PC2001, WfM 2.0 и Enhanced Disk Drive Secure Boot 3.0. Примечательным фактом, связанным с выходом упомянутой версии BIOS, стал дебют модуля ezPORT, который обслуживает пользовательское меню. Именно он разрешил интерфейсный спор между WinSetup и HiFlex в пользу последнего. Кроме того, в Core 7.x появляются LBA-48, а также целый перечень доработок в таких модулях, как CPU-4.24, GreenPC-1.11, APM-1.2/1.11 и USB-1.30.
AMIBIOS 8 вышел в свет в октябре 2001 года. Помимо очередных усовершенствований отдельных частей программного кода, немало было сделано в плане повышения безопасности перепрошивки BIOS пользователем. Здесь речь идет о двух вещах: Flash Update и BIOS Recovery. Если при старте контрольная сумма не совпадает, автоматически запускается служба BIOS Recovery. В очередной раз улучшена модульность программного кода. Его редактирование, для адаптации под конкретный чипсет, теперь выполняется посредством визуального интерфейса Visuale Bios и редактора карт прерываний IRQ Wizard.
Следующим шагом в развитии низкоуровневого программного обеспечения AMI стал анонс в начале 2003 года BIOS, который поддерживал спецификации TCPA 1.0. Они были созданы альянсом Trusted Computing Platform Alliance (TCPA) для обеспечения компьютерной безопасности на аппаратном уровне. В упомянутый альянс входят многие крупные производители компьютерного оборудования, такие, как IBM, Intel, Hewlett-Packard и другие.
Разумеется, технический прогресс не стоит на месте. Еще в 2003 году компания Intel представила совершенно новую концепцию BIOS: Platform Innovation Framework for the Extensible Firmware Interface (EFI) (Расширяемый микропрограммный интерфейс). Это модульная, платформенно-независимая оболочка, позволяющая загружать различные функции BIOS. Универсальность EFI базируется на новой для BIOS типологии программного кода – драйверности. Новый код написан на языке «С», сама архитектура является достаточно простой, наращиваемой и имеет модульную структуру. Это позволяет добавлять модули, разработанные разными компаниями. Инфраструктура поддерживает функционирование технологий IA-32, Intel Itanium и Intel XScale по единой схеме и включает в себя модуль поддержки совместимости (compatibility support module, CSM) для обеспечения загрузки имеющихся операционных систем, а также осуществления их связи с современной архитектурой.
Сугубо прагматичный интерфейс ныне существующих типов BIOS предложено модернизировать под внешний вид наиболее привычных операционных систем, то есть Windows. Для обновления версий EFI более не потребуется пресловутая дискета. Теперь изначально будет иметься полноценная поддержка USB-накопителей.
Итак, изначально EFI создавалась для первых систем Intel-HP Itanium в середине 1990-х годов. Ограничения PC-BIOS (16-битный исполняемый код, адресуемая память 1 Мбайт, аппаратные ограничения IBM PC/AT и т. д.) были очевидно недопустимы в больших серверных платформах, для использования в которых планировался Itanium. Изначально назывался — Intel Boot Initiative (Загрузочная Инициатива Intel), позже было переименовано в EFI.
Спецификация EFI 1.02 была выпущена Intel 12 декабря 2000. (Версия 1.01 имела проблемы в юридическом плане, связанные с торговой маркой, и была быстро изъята)
Спецификация EFI 1.10 была выпущена 1 декабря 2002. Она включала модель драйвера EFI, а также несколько незначительных улучшений по сравнению с версией 1.02.
В 2005 году Intel внесла эту спецификацию в UEFI Forum, который теперь ответственен за развитие и продвижение EFI. EFI был переименован в Unified EFI (UEFI), чтобы отразить это изменение, при этом большая часть документации использует оба термина.
UEFI Forum выпустил спецификацию 2.1 UEFI 7 января 2007. На март 2007 года это последняя публично доступная спецификация. Она добавила и улучшила криптографию, установление подлинности сети и архитектуру пользовательского интерфейса.
По словам экспертов, в ближайшие годы интерфейс BIOS постепенно уступит место платформе UEFI, представляющей собой новый тип интерфейса между микропрограммами, оборудованием и операционной системой компьютера.
BIOS был разработан в 1979 году для совместимости клонов компьютеров компании IBM. Его задачей тогда было предварительно обрабатывать IBM-код, вместо того, чтобы напрямую работать с инженерным кодом. Изначально предполагалось, что эта система, главной задачей которой является инициализация подключённых к материнской плате устройств, сразу после включения компьютера, найдёт применение примерно в 250 тыс. машин. Однако на деле BIOS прослужила много дольше и пока продолжает доминировать на ПК. Сегодня основной задачей BIOS на ПК является загрузка операционной системы, в большинстве случаев, Windows.
Однако BIOS все еще содержит массу древнего программного кода и плохо распознает многое современное оборудование, например, периферийные USB устройства. Главной проблемой является длительный процесс загрузки компьютера, который занимает полминуты и больше.
По мнению экспертов в следующем году большинство новых компьютеров будет использовать систему UEFI (Unified Extensible Firmware Interface).
Коснемся более детально новой системы UEFI.
Гибкий Интерфейс встроенных программ (UEFI) это спецификация, которая определяет программный интерфейс операционной системы и платформой встроенной программы. UEFI представляет собой существенно усовершенствованную замену старой BIOS, интерфейса встроенных программ, исторически использовавшегося на всех IBM PC совместимых персональных компьютерах.
Интерфейс, определённый спецификацией UEFI, включает таблицы данных, содержащие информацию о платформе, загрузочные и runtime-сервисы, которые доступны для загрузчика операционной системы (ОС) и самой ОС. Некоторые существующие расширения BIOS, типа ACPI и SMBIOS, также присутствуют в UEFI, поскольку не требуют 16-разрядного runtime-интерфейса.
UEFI определяет загрузочные сервисы, которые включают поддержку текстовой и графической консоли на различных устройствах, шин, блоков и файловых сервисов, и runtime-сервисы, например дата, время и энергонезависимая память.
В дополнение к стандартным, архитектурно-зависимым драйверам устройств, спецификация UEFI предусматривает независимую от платформы среду драйверов, названную EFI Byte Code (EBC). От системного встраиваемого ПО (firmware) спецификацией UEFI требуется иметь интерпретатор для любых образов EBC, которые загружены или могут быть загружены в среду. В этом смысле, EBC подобен Open Firmware, независимому от аппаратных средств встраиваемому ПО, используемому в компьютерах Apple Macintosh и Sun Microsystems SPARC.
Некоторые архитектурно-зависимые (non-EBC) типы драйверов UEFI могут иметь интерфейсы для использования ОС. Это позволяет ОС использовать UEFI для базовой поддержки графики и сети, до загрузки драйверов, определённых в ОС.
Менеджер загрузки UEFI используется для выбора и загрузки ОС, исключая потребность в специализированном механизме загрузки (загрузчик ОС является приложением UEFI).
Сообщество EFI создало открытую среду оболочки (shell environment). Пользователь для выполнения некоторых операций может загрузить оболочку EFI (EFI shell), вместо того, чтобы загружать ОС. Оболочка — приложение EFI; она может постоянно находиться в ПЗУ платформы или на устройстве, драйверы для которого находятся в ПЗУ.
Оболочка может использоваться для выполнения других приложений UEFI, таких как настройка, установка ОС, диагностика, утилиты конфигурации и обновления прошивок. Она также может использоваться, чтобы проиграть CD или DVD носители не загружая ОС, при условии, что приложения UEFI поддерживают эти возможности. Команды оболочки UEFI также позволяют копировать или перемещать файлы и каталоги в поддерживаемых файловых системах, загружать и выгружать драйверы. Также оболочкой может использоваться полный TCP/IP стек.
Оболочка UEFI поддерживает сценарии в виде файлов .nsh, аналогичных пакетным файлам в DOS.
Названия команд оболочки часто наследуются от интерпретаторов командной строки (COMMAND.COM или Unix shell). Оболочка UEFI может рассматриваться как функциональная замена интерпретатора командной строки и текстового интерфейса BIOS.
Расширения UEFI могут быть загружены с практически любого энергонезависимого устройства хранения данных, присоединённого к компьютеру. Например, OEM-производитель может продать систему с разделом UEFI на жёстком диске, который добавил бы дополнительные функции к встраиваемому ПО UEFI, размещённому в ПЗУ материнской платы.
Рисунок 3.1. Этапы развития EFI технологии.
“В действительности, UEFI начала разрабатываться по различным причинам. Я не уверен в том, что скорость загрузки была в их числе. Главной причиной было стремление уйти от разработки на Ассемблере, языка, близкого к машинному коду. Теперь применяется язык C. UEFI позволяет стандартизировать положение вещей и использовать многопоточность. Мы разделили инициализацию оборудования на ряд параллельных процессов, что позволило чрезвычайно ускорить загрузку.”
Дни старого доброго BIOS сочтены. Unified Extensible Firmware Interface (UEFI) представляет собой более мощную версию, которая лучше соответствует требованиям современного разнообразного "железа". По своей сути, UEFI является интерфейсом, который работает между операционной системой и прошивкой платформы, что позволяет заменить BIOS. На самом деле, EFI достаточно сложный, чтобы можно было называть его похожим на собственную ОС. Он не только предлагает поддержку драйверов, интерфейсов и служб, но также имеет оболочку, в которой пользователи могут выполнять приложения посредством интерфейса командной строки.