Vers une prise en main facilitée des environnements multicœurs hétérogènes à multiples OS ?

Organisme créé en 2005 pour promouvoir l’usage des processeurs multicœurs, la Multicore Association vient de former un nouveau groupe de travail chargé d’étendre le framework logiciel OpenAMP (Open Asymmetric ...Multi Processing), déjà disponible dans le monde open source pour Linux, aux architectures de circuits intégrés SoC multicœurs où se côtoient de multiples éléments de calcul et systèmes d’exploitation (Linux, OS temps réel, environnements « bare metal » s’exécutant directement sur le silicium).

Ce framework a vocation à faciliter le travail des développeurs d’applications qui souhaitent profiter du parallélisme offert par ce type de circuits, qu’ils soient homogènes ou hétérogènes, sans entrer dans les arcanes d’une programmation complexe. Dans le détail, OpenMP offre des mécanismes de communication pour mémoire partagée (virtio et rpmsg), de communication interprocessus IPC, de contrôle de processus (remoteproc) et de partage et de gestion de ressources.

Au sein de la MultiCore Association, le groupe de travail OpenAMP, présidé par Tomas Evensen, CTO Embedded Software chez Xilinx, réunit pour l’heure, outre le fabricant de circuits logiques programmables, les éditeurs de systèmes d’exploitation embarqués et d’outils de développement Express Logic, Mentor Graphics et Micrium, ainsi que le fournisseur de semi-conducteurs NXP (récemment renforcé de Freescale). Ces experts auront pour tâches essentielles de coordonner le processus de développement collaboratif autour des évolutions et des futures versions du framework OpenAMP, de gérer les contributions open source et de focaliser les efforts destinés à hisser la spécification au rang de standard industriel.

Le groupe de travail veillera aussi à s’assurer que le framework ainsi défini reste compatible avec de précédentes spécifications de la MultiCore Association comme le standard MCAPI (Multicore Communications Application Programming interface), dont la première mouture date de 2008 et qui stipule une couche d’abstraction entre les applications et les mécanismes de communications entre cœurs de processeurs.

« OpenAMP doit permettre aux développeurs logiciels de programmer la gestion du cycle de vie de chaque cœur hétérogène au sein d’un SoC, de l’amorçage à sa mise en veille en passant par le chargement et l’exécution du logiciel, de telle sorte que les applications puissent utiliser à plein les ressources de calcul ou minimiser la consommation en fonction des cas d’usage ciblés, précise Markus Levy, président de la MultiCore Association. Avant OpenAMP, il n’existait pas de manière simple et standard pour un système d’exploitation maître de superviser des cœurs hétérogènes ou AMP. Les sociétés devaient déployer et maintenir des implémentations propriétaires. »

A noter que Mentor Graphics, très moteur dans la mise en place du groupe de travail OpenAMP, a annoncé que son framework MEMF (Mentor Embedded Multicore Framework), utilisable avec Linux, le système d’exploitation temps réel Nucleus et des environnements bare metal, est la première implémentation commerciale de la spécification OpenAMP de la MultiCore Association. Les SoC Zynq et MPSoC UltraScale+ de Xilinx, les processeurs i.MX6Quad et i.MX6SoloX de NXP, les Cyclone V d’Altera et les Omap5 de Texas Instruments sont d’ores et déjà supportés par la plate-forme de Mentor.

Xilinx, de son côté, assure toutefois avoir mis au point un framework OpenAMP disponible au sein de la version PetaLinux 2014.5. Ce framework a été porté sur FreeRTOS, l’environnement Xilinx Standalone et une distribution Linux, le tout s’exécutant sur les cœurs Cortex-A53 et R5 du MPSoC Zynq UltraScale+ ou les cœurs Cortex-A9 du SoC Zynq-7000.