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.

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.

Figure 2. Processus d'optimisation d'architecture (Source : Space Codesign Systems, Inc.)
Trois estimateurs clés alimentent cette étape :
- Estimation matérielle : évalue l'impact du déplacement de code C/C++ sur le FPGA, détaillant l'utilisation des ressources, la latence des boucles et la puissance. Elle s'appuie sur les sorties HLS.
- Estimation logicielle : mesure les métriques côté CPU — charge processeur, commutation de tâches, défauts de cache — complétant la vue matérielle.
- Estimation de transfert de données : modélise les interfaces (mappées mémoire ou flux), capturant latence bus, débit, profondeur de file, empreinte mémoire.
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.

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 :
- SDSoC estime les latences des noyaux matériels et caractérise le transfert de données sur la plateforme cible, puis compare à une exécution purement logicielle.
- Merlin Compiler applique des transformations source-à-source pilotées par quatre pragmas, plus des passes implicites du compilateur qui boostent le pipelining et le parallélisme.
- SpaceStudio construit une plateforme virtuelle (VP) simulant l'ensemble du système, intégrant les latences générées matériellement et offrant un profilage non-intrusif des tâches logicielles et matérielles.
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.

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.

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