Firma Intel rozwija nową architekturę oprogramowania Universal Scalable Firmware (USF), mającą na celu uproszczenie procesu tworzenia wszystkich komponentów stosu oprogramowania dla różnych kategorii urządzeń, od serwerów po systemy na chipie (SoC). USF zapewnia poziomy abstrakcji, które oddzielają logikę niskopoziomowej inicjalizacji sprzętu od komponentów platformy odpowiedzialnych za konfigurację, aktualizację oprogramowania, bezpieczeństwo i uruchamianie systemu operacyjnego. Wersja robocza specyfikacji i implementacji typowych elementów architektury USF jest dostępna na GitHubie.
USF ma modułową strukturę, niezwiązaną z konkretnymi rozwiązaniami, co pozwala na wykorzystanie różnych istniejących projektów realizujących etapy inicjalizacji sprzętu i uruchamiania, takich jak stos UEFI TianoCore EDK2, minimalistyczne oprogramowanie Slim Bootloader, bootloader U-Boot oraz platforma CoreBoot. Jako środowiska ładujące mogą być stosowane interfejs UEFI, warstwa LinuxBoot (do bezpośredniego uruchamiania jądra Linux), VaultBoot (zweryfikowane uruchamianie) oraz hypervisor ACRN. Dla systemów operacyjnych udostępniane są standardowe interfejsy, takie jak ACPI, UEFI, Kexec i Multi-boot.
USF выделяет отдельный слой для поддержки оборудования (FSP, Firmware Support Package), который взаимодействует с универсальным и настраиваемым слоем оркестровки платформы (POL, Platform Orchestration Layer) через общий API. FSP абстрагирует такие операции, как сброс CPU, инициализация оборудования, работа с SMM (System Management Mode), аутентификация и верификация на уровне SoC. Слой оркестровки упрощает создание интерфейсов ACPI, поддерживает типовые библиотеки загрузчиков, позволяет использовать язык Rust для создания защищённых компонентов прошивки и даёт возможность определять конфигурацию при помощи языка разметки YAML. На уровне POL также выполняется аттестация (подтверждение подлинности), аутентификация и организация безопасной установки обновлений.

Oczekuje się, że nowa architektura umożliwi:
- Zmniejszenie złożoności i kosztów opracowywania oprogramowania dla nowych urządzeń dzięki ponownemu wykorzystaniu kodu standardowych komponentów, modułowej architekturze, niezwiązanej z konkretnymi bootloaderami, oraz możliwości używania uniwersalnego API do konfiguracji modułów.
- Zwiększenie jakości i bezpieczeństwa oprogramowania dzięki zastosowaniu weryfikowalnych modułów interakcji ze sprzętem oraz bezpieczniejszej infrastruktury do weryfikacji autentyczności i weryfikacji oprogramowania.
- Użycie różnych bootloaderów i komponentów payload, w zależności od rozwiązywanych zadań.
- Przyspieszenie wdrażania nowych technologii i skrócenie cyklu rozwoju — programiści mogą skupić się tylko na dodawaniu specyficznej funkcjonalności, wykorzystując w pozostałych aspektach sprawdzone komponenty.
- Skalowanie rozwoju oprogramowania dla różnych mieszanych architektur obliczeniowych (XPU), na przykład obejmujących oprócz CPU wbudowany dyskretny procesor graficzny (dPGU) oraz programowalne urządzenia sieciowe, które przyspieszają wykonanie operacji sieciowych w centrach danych, wspierających działanie systemów chmurowych (IPU, Infrastructure Processing Unit).
Źródło: opennet.ru
