La société Intel développe une nouvelle architecture de firmware appelée Universal Scalable Firmware (USF), visant à simplifier le développement de tous les composants de la pile logicielle de firmware pour diverses catégories d'appareils, des serveurs aux systèmes sur puce (SoC). USF fournit des niveaux d'abstraction permettant de séparer la logique d'initialisation à bas niveau du matériel des composants de la plateforme responsables de la configuration, de la mise à jour du firmware, de la sécurité et du démarrage du système d'exploitation. Un brouillon de la spécification et de la mise en œuvre des éléments standards de l'architecture USF est disponible sur GitHub.
USF a une structure modulaire, indépendante de solutions spécifiques, permettant d'utiliser divers projets existants qui mettent en œuvre les étapes d'initialisation du matériel et de démarrage, comme la pile UEFI TianoCore EDK2, le firmware minimaliste Slim Bootloader, le chargeur U-Boot et la plateforme CoreBoot. En tant qu'environnements payload, utilisés pour rechercher le chargeur et transférer le contrôle au système d'exploitation, peuvent être utilisés l'interface UEFI, la couche LinuxBoot (pour le démarrage direct du noyau Linux), VaultBoot (démarrage vérifié) et l'hyperviseur ACRN. Des interfaces standard telles que ACPI, UEFI, Kexec et Multi-boot sont fournies pour les systèmes d'exploitation.
USF met en évidence une couche distincte pour le support matériel (FSP, Firmware Support Package), qui interagit avec la couche d'orchestration de plateforme universelle et configurable (POL, Platform Orchestration Layer) via une API commune. Le FSP abstrait des opérations telles que le réinitialisation de la CPU, l'initialisation du matériel, le fonctionnement avec SMM (System Management Mode), l'authentification et la vérification au niveau SoC. La couche d'orchestration facilite la création d'interfaces ACPI, prend en charge les bibliothèques classiques de chargeurs, permet d'utiliser le langage Rust pour créer des composants de firmware sécurisés et offre la possibilité de définir la configuration à l'aide d'un langage de balisage YAML. Au niveau de la POL, une attestation (vérification d'authenticité), une authentification et l'organisation d'une installation sécurisée des mises à jour sont également effectuées.

Il est prévu que la nouvelle architecture permettra :
- Réduire la complexité et le coût du développement des firmwares pour de nouveaux appareils grâce à la réutilisation du code des composants standardisé, une architecture modulaire non liée à des chargeurs spécifiques, et la possibilité d'utiliser une API universelle pour la configuration des modules.
- Améliorer la qualité et la sécurité des firmwares grâce à l'utilisation de modules d'interaction avec le matériel vérifiables et d'une infrastructure plus sécurisée pour l'authentification et la vérification des firmwares.
- Utiliser différents chargeurs et composants de payload en fonction des tâches à accomplir.
- Accélérer la promotion de nouvelles technologies et réduire le cycle de développement — les développeurs peuvent se concentrer uniquement sur l'ajout de fonctionnalités spécifiques, tout en utilisant des composants éprouvés pour le reste.
- Élargir le développement de firmwares pour diverses architectures de calcul mixtes (XPU), par exemple, incluant non seulement le CPU mais aussi un accélérateur graphique discrèt intégré (dPGU) et des dispositifs réseau programmables pour accélérer l'exécution des opérations réseau dans les centres de données, soutenant le fonctionnement des systèmes cloud (IPU, Infrastructure Processing Unit).
Source : opennet.ru
