Vers l’utilisation d’un microprocesseur 64 bits RISC-V pour l’IoT grand public[APPLICATION MICROCHIP] Les systèmes modernes dans l’IoT grand public deviennent de plus en plus complexes, nécessitant différentes architectures de traitement pour gérer la charge de travail. L’ajout de l’apprentissage machine et de l’IA augmente encore cette complexité. Les applications critiques de sécurité fonctionnelle, de contrôle système et de cybersécurité ont alors besoin de la flexibilité de Linux et du déterminisme des OS temps réel pour piloter le matériel. Ce qui accentue la demande en systèmes multithreads, sur lesquels plusieurs threads matériels exécutent en parallèle des charges de travail variées. Microchip explique ici comment une architecture AMP (Asymmetric Multiprocessing) répond à ces problématiques.
Directeur du marketing pour le département FPGA Microchip Technology Les architectures de traitement symétriques SMP (Symmetric Multiprocessing) procurent la flexibilité nécessaire pour faire tourner des systèmes d’exploitation complexes, mais ils ne sont souvent pas assez puissants pour fournir les performances déterministes nécessaires aux systèmes en temps réel. À l’inverse, les architectures de traitement asymétrique, dites AMP (Asymmetric Multiprocessing), autorisent l’optimisation par tâche en isolant les charges de travail des unités de traitement distinctes (quoique cette approche puisse s’avérer plus complexe à mettre en œuvre). Pour résoudre ce problème, Microchip a utilisé une grappe (ou cluster) de threads matériels RISC-V éprouvés, appelés “harts” selon la terminologie RISC-V, intégrés dans un processeur complexe multicœurs (ou coreplex), afin de proposer une architecture de puce compatible avec les capacités AMP et adaptée à un large éventail d’applications industrielles et d’Edge AI. Le microprocesseur PIC64GX intègre un processeur compatible Linux avec plusieurs harts (threads matériels) au sein d’un même coreplex, partageant un sous-système mémoire cohérent. Cela permet de combiner des systèmes temps réel déterministes avec le système d’exploitation Linux dans un seul cluster CPU. Le fonctionnement AMP est ainsi possible pour les applications courantes de vision industrielle et d’Edge AI. Le développement est simplifié, et permet un code capable d’être exécuté sous des systèmes d’exploitation temps réel, sous Linux ou en mode "bare metal" (sans OS). Sur les systèmes de traitement et de commande en temps réel, le mode AMP permet aux développeurs d’assigner des unités de traitement dédiées aux tâches sensibles au facteur temps, garantissant des performances prévisibles et une faible latence. La programmation des processus Linux n’est généralement pas réalisée en temps réel, ce qui occasionne des latences d'interruption significatives et imprévisibles. Le fonctionnement AMP permet aux charges de travail nécessitant absolument un traitement en temps réel d’exécuter un RTOS pour les commandes critiques, tout en maintenant les fonctions au niveau de l’application avec Linux ou autre cœur. Un système fondé sur un coeur RISC-V à 64 bits Bien que la mémoire cache permette d’améliorer les performances, les défauts de cache peuvent entraîner de la gigue à l’exécution et des latences imprévisibles à cause d’un comportement non déterministe. Le microprocesseur PIC64GX évite ces problèmes en permettant l’exécution des contextes temps réels sur une mémoire peu intégrée (LIM, Loosely Integrated Memory), ce qui permet de contourner le non-déterminisme introduit par la mémoire cache. Ainsi, les pipelines sont efficaces, en particulier pour les tâches d’IA et d’apprentissage machine, qui minimisent les temps de traitement. Le système est basé sur un cœur de processeur RV64IMAC 64 bits E51n cadencé à 600 MHz servant de cœur de supervision système, avec 16 Ko de mémoire qui peuvent être utilisés comme cache d’instructions L1 à deux voies avec correction d’erreur, ou bien comme mémoire étroitement intégrée, 8 Ko de mémoire de données fortement intégrée et un module PMP pour le traitement applicatif.
Cependant, le cœur du système est un complexe de quatre cœurs U54 64 bits RV64GC destinés au traitement applicatif, chacun fonctionnant jusqu’à 600 MHz et offrant des performances de 3,1 CoreMarks/MHz et 1,7 DMIPs/MHz. Il s’agit du même cluster que celui utilisé dans le FPGA basé sur un SoC PolarFire, garantissant un sous-système multicœur fiable ayant fait ses preuves et un écosystème d’outils bien établi. Un cinquième "hart" se charge principalement de gérer les fonctions du moteur pour la puce, mais est également disponible pour exécuter des charges de travail en temps réel ou sans OS. Le sous-système de mémoire L1 comprend un cache d’instructions à 8 voies de 32 kibioctets (KiB) ou une mémoire fortement intégrée de 28 kiB en option, ainsi qu’un cache de données à 8 voies de 32 KiB. De plus, il intègre une protection de la mémoire physique (PMP, Physical Memory Protection) et une unité de gestion de la mémoire (MMU, Memory Management Unit). Le sous-système de mémoire possède diverses fonctionnalités, dont une mémoire L2 de 2 MiB avec différents modes d’accès, un contrôleur de mémoire intégrée compatible avec différentes versions DDR, une unité de protection de la mémoire (MPU, Memory Protection Unit), et une mémoire embarquée non volatile pour des options de démarrage sécurisé. La matrice de bus CPU cohérente avec le cache, ainsi que le sous-système de mémoire L2 flexible de 2 MiB, sont essentiels au fonctionnement en mode AMP. La mémoire avec correction d’erreur est configurable en tant que cache L2 associatif à 16 voies, avec un mode LIM pour un accès déterministe, et un mode mémoire tampon cohérente pour le partage de messages entre harts. Le système comprend un contrôleur DDR4/LPDDR4 36 bits avec ECC, supportant la DDR4 à 1,6 Gbit/s et un espace d’adressage de 8 GiB. Il intègre également une MPU (Memory Protection Unit) et une mémoire eNVM de 128 KiB pour le démarrage. Ainsi, la configuration est totalement flexible au démarrage, avec le partitionnement des cœurs entre des opérations temps réel ou des cœurs Linux, avec prise en charge du cache L2. Mise en œuvre du fonctionnement AMP Les unités de traitement RISC-V sont appelées “threads matériels” ou harts (contraction de hardware thread). Chaque hart dans le microprocesseur PIC64GX correspond à un contexte d’exécution indépendant, capable de faire fonctionner son propre système d’exploitation ou une charge de travail sans OS. Le cluster d’application à quatre threads matériels peut être configuré pour exécuter jusqu’à deux contextes logiciels indépendants. Chaque contexte peut avoir son propre système d’exploitation, ses propres zones de mémoire et des ressources matérielles qui lui sont assignées. Le matériel ne peut pas accéder aux ressources des autres contextes grâce à la séparation matérielle. Les violations peuvent être détectées et traitées par les HSS (Hart Software Services) tandis que le hart de supervision E51 est dédié à l’exécution du firmware HSS. Ce HSS est un chargeur d’amorçage de niveau zéro, un moniteur système, et un fournisseur de services au moment de l’exécution pour les applications. Le HSS prend en charge la configuration initiale du système, l’initialisation de la DDR ainsi que la mise en route et la configuration du matériel. Il s’exécute principalement sur les cœurs E51, avec une petite partie des fonctions en mode machine tournant sur chacun des cœurs U54. Il initialise un ou plusieurs contextes en chargeant un programme applicatif depuis la mémoire de démarrage, qui peut être la mémoire NVM intégrée, et fournit des services d’exécution de plateforme ou un environnement d’exécution superviseur (SEE) pour les noyaux de systèmes d’exploitation. Il est compatible avec le démarrage sécurisé et en constitue une composante importante en assurant le partitionnement matériel (séparation des contextes AMP), utilisé pour configurer le cœur complexe à quatre harts.
Par exemple, le cœur complexe peut être configuré pour exécuter Linux sur trois des harts U54, et le RTOS Zephyr sur le dernier. Les périphériques peuvent être assignés à l’un ou l’autre des contextes. Un framework logiciel standard ouvert, appelé Open Asymmetric Multiprocessing (OpenAMP) fournit les composantes logicielles pour le développement des applications logicielles sur systèmes AMP. Les principaux éléments sont le système de messagerie à processeur distant RPMsg (Remote Processor Messaging) et le processeur distant (remoteProc) qui sont utilisés pour diviser les charges de travail entre les deux contextes AMP et qui facilitent la communication entre eux. Quelques astuces de conception Les charges de travail AMP permettent la mise en œuvre de systèmes avancés et sont composées de plusieurs composantes logicielles coopérant entre elles. Grâce au partitionnement matériel, le fonctionnement AMP permet aux charges critiques mixtes de respecter les exigences et contraintes du temps réel. Les développeurs peuvent se concentrer sur l’organisation et la structure mémoire du microprocesseur PIC64GX, sur les mécanismes de communication RPMsg et RPMsg-Lite, ainsi que sur la gestion des ressources, incluant l’assignation exclusive de zones mémoire et/ou de périphériques à un contexte spécifique. Les applications ont besoin de disposer d’un canal de communication transparent entre les contextes via le RPMsg dans la mémoire partagée, avec une définition claire de ce que les messages signifient. Les tâches doivent être partitionnées pour couper efficacement les charges de travail en différents blocs gérables qui puissent être exécutés de façon efficace par différentes unités de traitement. Chaque thread matériel doit avoir suffisamment de ressources de mémoire et un transfert de données minimum entre eux, afin de réduire les latences de communication et maximiser le parallélisme. Le HSS joue le rôle d’un module de supervision du système et rapporte les erreurs de bus, les erreurs ECC et les exceptions fatales trouvées par les U54. Les périphériques. Sur le plan des périphériques, la famille PIC64GX de processeurs à plusieurs threads matériels comprend des MAC Ethernet Gigabit pour l’interconnexion haute vitesse, l’USB 2.0 OTG et des interfaces pour cartes MMS SD/SDIO 5.1. Elle comprend deux ports CAN 2.0 avec cinq UART multimode, deux interfaces SPI et deux interfaces I2C, ainsi qu’un contrôleur Flash SPI Quad Execute-In-Place (XIP), et intègre un port PCIe Gen 2 Root Port unique x1 ou x4. La sécurité.Plusieurs fonctionnalités de sécurité sont intégrées dans le système pour fournir une protection solide contre tous types de menaces. La double fonction physique non clonable intégrée (fonction PUF) fournit la base de la racine de confiance pour les clés de chiffrement, avec 56 KiB de mémoire non volatile sécurisée (sNVM) et 128 KiB de mémoire non volatile embarquée (eNVM) sur puce. Le système intègre des détecteurs de sabotage et des contremesures contre les tentatives d’intrusion, des vérifications d’intégrité pour les blocs de mémoire sNVM et eNVM et la résistance aux attaques par l’analyse de puissance différentielle (DPA), qui peuvent être utilisées pour capturer des clés. Les applications. Les microprocesseurs PIC64GX ciblent les applications d'ordinateurs embarqués mono-cartes, de commande de moteur, d’informatique en temps réel, de vision industrielle et d’IA/ML. Par exemple, ils peuvent être utilisés pour l’agrégation de capteurs et l’inférence IA en exécutant un système d’exploitation temps réel dans un contexte unique. Les capteurs peuvent être facilement connectés au microprocesseur PIC64GX à l’aide de périphériques d’interface, comme SPI et I2C. Le système d’exploitation temps réel peut ensuite traiter les données issues des capteurs, et des blocs de communication de type UART ou CAN peuvent être utilisés pour transférer les données brutes ou des données synthétiques selon ce qui est requis, à l’aide de l’informatique en périphérie de réseau. Pour les tâches embarquées de vision par ordinateur, un contexte Linux séparé peut assurer l’identification et la classification d’objets, ainsi que le streaming vidéo via des interfaces telles qu’Ethernet, le tout sur une seule puce grâce à la capacité AMP. Les systèmes peuvent ainsi être plus compacts et avoir un meilleur rapport coût/efficacité pour les applications industrielles ou médicales. Les outils. L’utilisation de l’AMP dans les applications industrielles d’IA devient de plus en plus complexe, et le microprocesseur PIC64GX dispose d’une chaîne d’outils comprenant des systèmes de génération pour Linux, des RTOS open source, VxWorks et d’autres environnements destinés au développement de systèmes critiques pour la sécurité. MPLAB Extensions permet la configuration et facilite la migration depuis d’autres processeurs Microchip. En particulier, les services HSS (Hart Software Services) fournissent le code source pour le chargeur d’amorçage de niveau zéro HSS et le superviseur système. Il existe un support upstream au sein de l’écosystème Zephyr RTOS ainsi qu’un BSP (Board Support Package) Linux Yocto Project®. Un système de génération basé sur Buildroot utilise le kernel Linux4Microchip, et il y a également un support Linux Ubuntu à partir de 2024.10. Il comprend tous les pilotes, dont ceux des périphériques nécessaires pour le développement. Pour les outils et systèmes, rendez-vous sur le référentiel de données GitHub https://github.com/pic64gx. Le cluster fait partie intégrante de l’écosystème Mi-V établi, qui comprend le support des outils de Lauterbach et Ashling. Le système inclut des fonctionnalités de débogage JTAG, avec dix points de déclenchement matériel par CPU, configurables en tant que points d’arrêt ou points d’observation, et comme compteurs de performances. On voit que les microprocesseurs PIC64GX ont été spécialement conçus pour la mise en œuvre de l’AMP dans des applications intelligentes embarquées en périphérie, nécessitant la prise en charge de tâches à criticalité mixte. Un cluster, robuste et éprouvé, de quatre threads matériels RISC-V 64 bits dans un seul cœur complexe peut être configuré de façon sécurisée au démarrage, pour exécuter un système d’exploitation temps réel parallèlement à un OS Linux. En particulier, cela permet un pipeline de traitement de vision par ordinateur fluide, grâce à l’inférence IA avec des performances en temps réel. Grâce à une suite d’outils complète et dotée d’un bon support, le microprocesseur PIC64GX permet aux développeurs de systèmes embarqués de créer en toute confiance des applications complexes pour les marchés de l’industrie, IA/ML et temps réel, facilitant le développement et accélérant les délais de commercialisation.
|