Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels

Récemment, Brian Bailey a réuni une table ronde qui a abouti à l'article en deux parties Supporting CPUs + FPGAs. Les experts ont débattu de la réalité émergente des systèmes fusionnant FPGA et CPU, soulignant comment de nouveaux flux de conception permettent aux développeurs logiciels d'amener les plateformes CPU+FPGA sur le marché plus rapidement.

Introduction

L'essor de l'intelligence artificielle, l'explosion des objets connectés et l'accélération des charges de travail des centres de données pointent vers un moteur commun : les développeurs logiciels en quête de vitesse. Les liaisons à faible latence entre FPGA et CPU, couplées aux enveloppes de puissance modestes des FPGA modernes, font des systèmes hybrides CPU-FPGA un choix naturel pour les performances exigeantes. Pourtant, la complexité sous-jacente de la technologie FPGA freine souvent les développeurs.

Les outils de synthèse de haut niveau (HLS) ont considérablement progressé, facilitant la traduction de C/C++ en matériel. Toutefois, ils restent principalement centrés sur l'IP et manquent sur les décisions au niveau système — équilibrage tâches logicielles vs matérielles, choix entre exécution pipeline ou parallélisée, réglage de la granularité des données, sélection des mécanismes de communication optimaux.

Ce dont les ingénieurs logiciels ont besoin, c'est d'un flux de conception unifié qui ressemble à un IDE logiciel standard mais fournit un retour conscient du matériel. Des solutions commerciales récentes ont commencé à combler ce fossé en abstraissant les détails de bas niveau tout en conservant le contrôle exigé par les développeurs. Ces outils s'appuient sur la philosophie de conception au niveau système décrite dans ESL Models and Their Application.

Comprendre le flux de conception au niveau système

La conception au niveau système opère à un niveau d'abstraction plus élevé, validant, affinant et intégrant les composants du système avant l'implémentation. La plupart des concepteurs commencent au niveau algorithmique, écrivant des modèles C/C++/SystemC, MATLAB, Simulink ou LabVIEW qui capturent le comportement complet du système.

Nous nous concentrons sur un flux centré C/C++ (voir Figure 1). La première étape — le profilage d'application — identifie les fonctions ou boucles qui bénéficieraient d'une accélération matérielle. Ensuite, la plateforme CPU/FPGA cible est spécifiée (ex. ARM Cortex-A53 + FPGA) et ses paramètres (horloge, cache, interconnexions) configurés. Enfin, les tâches profilées sont réparties entre logiciel et matériel, aboutissant à une architecture exécutable.

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels
Figure 1. Flux typique de conception au niveau système pour CPU/FPGA (Source : Space Codesign Systems, Inc.)

Le second bloc de la Figure 1 couvre l'optimisation d'architecture — parfois appelée exploration architecturale ou vérification de performance — détaillée dans la Figure 2.

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels
Figure 2. Processus d'optimisation d'architecture (Source : Space Codesign Systems, Inc.)

Trois estimateurs clés alimentent cette étape :

Les résultats agrégés peuplent une base de données, permettant aux développeurs de vérifier si les objectifs au niveau système sont atteints. Les architectures satisfaisant les critères avancent ; sinon, de nouvelles itérations d'optimisation sont déclenchées.

Le bloc final de la Figure 1 concerne l'implémentation d'architecture : les conceptions de haut niveau sont traduites en bitstreams FPGA via les outils vendeurs (Xilinx Vivado, Intel Quartus Prime), produisant un système entièrement synthétisé et testable prêt pour le déploiement.

Optimisation au niveau système

L'absence d'outils d'optimisation automatisés de bout en bout a longtemps été un goulot d'étranglement dans le calcul basé FPGA. La complexité d'équilibrer de multiples dimensions de conception rend l'exploration manuelle fastidieuse, même pour des concepteurs expérimentés.

La Figure 3 illustre un flux d'optimisation typique pour une application de traitement d'image comprenant six fonctions C/C++ déployées sur une plateforme Zynq-7000. Huit architectures candidates sont envisagées, mais les contraintes de time-to-market exigent une sélection rapide du meilleur compromis performance, surface, puissance.

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels
Figure 3. Exploration d'architecture avec décisions niveau système mises en évidence (Source : Space Codesign Systems, Inc.)

Des solutions commerciales comme Xilinx SDSoC/SDAccel, Merlin Compiler de Falcon Computing, et SpaceStudio de Space Codesign offrent désormais un support de bout en bout. Elles reflètent le flux des Figures 1 et 2 en y injectant une logique de décision automatisée :

Vue de l'écosystème commercial

La Figure 4 présente une vue en couches de l'écosystème entourant la conception de plateformes CPU/FPGA. La couche supérieure montre les points d'entrée algorithmiques ; la couche intermédiaire héberge les outils supportant les optimisations niveau système depuis C/C++ ; la couche inférieure contient les outils de synthèse vendeurs qui produisent les bitstreams. Des plateformes CPU/FPGA représentatives sont illustrées à la base.

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels
Figure 4. Écosystème commercial pour plateformes CPU/FPGA (Source : Space Codesign Systems, Inc.)

Le Tableau 1 liste les principaux outils d'automatisation commerciale employés dans la conception de plateformes CPU/FPGA.

Accélérer la co-conception CPU-FPGA : Un flux pratique pour développeurs logiciels
Tableau 1. Outils d'automatisation commerciale (*Note : une liste est proposée dans cette revue)

Conclusion

Démocratiser le développement CPU+FPGA est l'objectif ultime, permettant à un plus large éventail de développeurs logiciels d'exploiter l'accélération matérielle. Tout comme l'industrie logicielle a évolué de l'assembleur vers Python et Swift en cinq décennies, la programmation FPGA subit une maturation similaire. L'essor d'outils niveau système comme SpaceStudio, SDSoC et Merlin Compiler signale un tournant décisif — pourtant l'automatisation complète et l'optimisation transparente à travers les compilateurs restent des jalons futurs.

Guy Bois, Ing., PhD est le Fondateur de Space Codesign Systems et Professeur au Département de Génie Logiciel et Informatique de Polytechnique Montréal. Fort d'une vaste expérience R&D aux côtés de leaders industriels — STMicroelectronics, Grass Valley, PMC Sierra, Design Workshop Technologies, Cadabra Systems — l'expertise de Guy en co-conception matériel/logiciel a mené à la commercialisation de SpaceStudio et à la fondation de Space Codesign Systems Inc.

Embarqué

  1. Thomas Reiher (AMendate) : révolutionner l'impression 3D par l'optimisation topologique automatisée
  2. Ravi Kunju d'Altair discute du Design Piloté par Simulation et du nouvel Inspire Print3D pour l'impression 3D
  3. 5 questions éclairantes à Stefan Ferber, CEO de Bosch.IO
  4. L'initiative VE-VIDES dévoile un cadre de conception et vérification fiable pour la sécurité IoT
  5. Cadence et UMC certifient le flux de conception AMS 28HPC+ pour développement accéléré puces auto, IoT et IA
  6. Améliorez vos plateformes robotiques low-cost avec un nouvel axe 7 matériel et un logiciel de programmation jumeau numérique gratuit
  7. Infineon & Elektrobit livrent une sécurité next-gen pour voitures connectées
  8. Omron dévoile Flow Core : logiciel avancé améliorant la fiabilité et la flexibilité des robots mobiles
  9. Naviguer dans le nouveau paysage manufacturier : stratégies pour le succès