Aller au contenu

Architectures processeur pour l'embarqué

Le choix de l'architecture processeur détermine non seulement la performance, mais aussi l'écosystème d'outils, les bibliothèques disponibles et la longévité du projet — autant de critères aussi importants que la fréquence d'horloge.


La famille ARM Cortex : l'architecture dominante du marché

ARM ne fabrique pas de processeurs — ARM vend des licences d'architectures IP que les fondeurs (STMicroelectronics, Nordic, NXP, TI...) intègrent dans leurs microcontrôleurs. Cette stratégie a conduit à une domination du marché embarqué estimée à plus de 95 % des MCU vendus.

La famille Cortex se divise en trois branches selon l'application :

  • Cortex-M : microcontrôleurs (embarqué, IoT, temps réel)
  • Cortex-R : temps réel dur certifié (automobile, stockage)
  • Cortex-A : applications (Linux, Android, SBC)

Pour l'IoT, Cortex-M et Cortex-A sont les deux branches pertinentes.

Cortex-M : la hiérarchie des microcontrôleurs

graph LR
    M0["Cortex-M0\nARMv6-M\n12 000 portes\nultra low-cost"] --> M0P["Cortex-M0+\nARMv6-M\n+ pipeline 2 étages\n+ MPU optionnel"]
    M0P --> M3["Cortex-M3\nARMv7-M\nThumb-2 complet\nMultiplier 1 cycle"]
    M3 --> M4["Cortex-M4\nARMv7E-M\n+ FPU simple précision\n+ instructions DSP\nSIMD 32 bits"]
    M4 --> M7["Cortex-M7\nARMv7E-M\n+ FPU double précision\n+ TCM (0 wait-state)\n+ cache I/D optionnel"]
    M7 --> M33["Cortex-M33\nARMv8-M\n+ TrustZone\n+ FPU optionnel\nSuccesseur M3/M4"]
    M33 --> M55["Cortex-M55\nARMv8.1-M\n+ Helium (MVE)\nML/DSP vectorisé"]

Tableau comparatif Cortex-M par sous-famille

Famille Architecture FPU DSP SIMD Fréq. typique Conso active Prix MCU typique Cas d'usage principal
Cortex-M0 ARMv6-M Non Non 16–48 MHz 50–200 µA/MHz 0,30–0,80 € Capteurs simples, ultra low-cost
Cortex-M0+ ARMv6-M Non Non 32–64 MHz 30–100 µA/MHz 0,40–1,20 € Nœuds IoT basse conso
Cortex-M3 ARMv7-M Non Partiel 72–120 MHz 100–300 µA/MHz 0,80–2,00 € Automatisme, contrôle
Cortex-M4 ARMv7E-M Oui Oui 80–180 MHz 150–400 µA/MHz 1,20–3,50 € Audio, filtrage, mesure
Cortex-M7 ARMv7E-M Oui (DP) Oui 200–600 MHz 200–600 µA/MHz 3,00–8,00 € Vision, commande moteur, gateway
Cortex-M33 ARMv8-M Opt. Opt. 64–160 MHz 50–200 µA/MHz 1,50–4,00 € IoT sécurisé, TrustZone
Cortex-M55 ARMv8.1-M Oui Helium 100–400 MHz 200–500 µA/MHz 3,00–10,00 € Edge ML, inférence embarquée

Cortex-A : quand Linux devient nécessaire

Le Cortex-A est conçu pour faire tourner des OS à mémoire virtuelle (Linux, Android). Il introduit la MMU (Memory Management Unit), les caches multi-niveaux et le multicoeur.

Famille Architecture Cœurs Fréquence RAM typique Conso Exemple
Cortex-A35 ARMv8-A 1–4 0,8–1,4 GHz 256 Mo–4 Go 100–500 mW NXP i.MX8 nano
Cortex-A53 ARMv8-A 1–8 1,0–1,8 GHz 512 Mo–8 Go 200–800 mW Allwinner H3, RPi 3
Cortex-A72 ARMv8-A 2–4 1,5–2,0 GHz 1–8 Go 500 mW–2W Raspberry Pi 4
Cortex-A76 ARMv8.2-A 2–8 2,0–2,8 GHz 2–32 Go 1–5 W Snapdragon, RPi 5

Le Cortex-A35 est l'option la plus adaptée à l'IoT industriel quand Linux est requis : sa consommation peut descendre sous 200 mW tout en supportant un OS complet.

SoC hétérogènes : Cortex-M + Cortex-A sur le même die

Les SoC hétérogènes associent un ou plusieurs cœurs Cortex-A (application) avec un ou plusieurs Cortex-M (temps réel) sur le même package. Cette combinaison est idéale pour les gateway IoT :

  • NXP i.MX RT1170 : Cortex-M7 @ 1 GHz + Cortex-M4 @ 400 MHz — pas de Cortex-A, mais des performances Cortex-A dans un enveloppe Cortex-M.
  • STM32MP1 : Cortex-A7 dual @ 800 MHz + Cortex-M4 @ 209 MHz — Linux sur A7, temps réel sur M4.
  • NXP i.MX 8M Plus : Cortex-A53 quad @ 1,8 GHz + Cortex-M7 @ 800 MHz + NPU ML @ 2,3 TOPS.

Le modèle de programmation est dit AMP (Asymmetric Multi-Processing) : chaque cœur exécute son propre OS ou firmware, la communication inter-cœurs s'effectue via la mémoire partagée et des mécanismes de signalisation (RPMsg / OpenAMP).

graph LR
    A["Cortex-A7 (Linux)<br/>Réseau, OTA, HMI<br/>Interface cloud<br/>Node-RED, Python"] <-->|RPMsg / shared memory| B["Cortex-M4 (FreeRTOS)<br/>Acquisition capteurs<br/>Contrôle actionneurs<br/>Protocoles temps réel"]

RISC-V : l'architecture ouverte qui monte

RISC-V est un jeu d'instructions libre (ISA open-source), développé initialement à l'UC Berkeley. Contrairement à ARM, aucune licence n'est requise pour implémenter RISC-V — ce qui attire les fondeurs souhaitant s'affranchir des royalties ARM.

Architecture RISC-V dans l'IoT

flowchart TD
    RV["RISC-V ISA\n(open standard)"] --> RV32I["RV32I\n32 bits base integer\nMinimal viable CPU"]
    RV32I --> EXT["Extensions optionnelles"]
    EXT --> M["M — Multiplication/Division\nhardware"]
    EXT --> C["C — Compressed (16-bit)\n-25% taille code"]
    EXT --> F["F/D — Float (32/64 bits)\nFPU hardware"]
    EXT --> P["P — DSP SIMD\npackaged instructions"]
    EXT --> V["V — Vector\nHPC et ML"]
    RV32I --> IMPL["Implémentations MCU IoT"]
    IMPL --> ESP32C3["ESP32-C3\n(Espressif)\n160 MHz, Wi-Fi + BLE"]
    IMPL --> GD32VF103["GD32VF103\n(GigaDevice)\nCompatible STM32F103"]
    IMPL --> CH32V["CH32V series\n(WCH)\nUltra low-cost"]

RISC-V vs ARM Cortex-M : comparaison pratique

Critère ARM Cortex-M4 RISC-V (ESP32-C3) RISC-V (SiFive E31)
ISA ARMv7E-M (propriétaire) RV32IMC (ouvert) RV32IMAC (ouvert)
Fréquence 80–180 MHz 160 MHz 320 MHz
FPU hardware Oui Non (soft float) Optionnelle
Écosystème outils Mature (30 ans) En développement En développement
Support RTOS Excellent (FreeRTOS, Zephyr) Bon (FreeRTOS, ESP-IDF) Bon (Zephyr)
Coût IP Royalties ARM Gratuit Gratuit
Débogage (JTAG) SWD natif, CoreSight JTAG OpenOCD JTAG standard
Long terme Dépendance ARM Indépendance ISA Indépendance ISA

RISC-V est à prendre au sérieux pour les nouveaux projets, notamment avec l'ESP32-C3/C6 d'Espressif qui offre Wi-Fi + BLE à moins de 1 € en volume avec un écosystème (ESP-IDF) de qualité industrielle.


Jeux d'instructions : ce qui change concrètement

Thumb-2 (ARM Cortex-M)

Le jeu d'instructions Thumb-2 est un mélange d'instructions 16 bits et 32 bits. Les instructions 16 bits réduisent la taille du code d'environ 25–30 % par rapport au jeu ARM 32 bits classique — crucial quand la Flash est limitée à 256 Ko.

Avec un compilateur moderne (GCC arm-none-eabi, Clang), Thumb-2 est transparent pour le développeur : la sélection des encodages est automatique. L'impact se mesure sur le binaire final.

Extensions DSP (Cortex-M4/M7)

Les extensions SIMD DSP du Cortex-M4 permettent d'exécuter des opérations sur des données de 8 ou 16 bits emballées dans un registre 32 bits. Exemple : UADD8 additionne quatre paires d'octets en un cycle.

Impact concret sur un filtre FIR 32 taps :

  • Cortex-M3 (sans DSP) : ~32 cycles par échantillon
  • Cortex-M4 (avec SIMD) : ~8 cycles par échantillon

Pour une fréquence d'échantillonnage audio de 48 kHz, c'est la différence entre 1,5 MHz requis et 384 kHz requis — ce qui change complètement le budget énergétique.

Pipeline simplifié Cortex-M4

flowchart LR
    IF["Fetch\n(F)\nLecture\nFlash/TCM"] --> ID["Decode\n(D)\nDécodage\ninstruction"]
    ID --> EX["Execute\n(E)\nALU / FPU\nMult-Acc DSP"]
    EX --> MA["Memory\nAccess\n(M)\nLoad/Store\nSRAM"]
    MA --> WB["Write Back\n(W)\nÉcriture\nregistres"]

    BPU["Branch\nPredictor\n(1 bit)"] -.-> IF
    FPU["FPU\n(SP float)\nlatence 1–14 cy"] -.-> EX
    MPU["MPU\n(8 régions)"] -.-> MA

Le pipeline à 5 étages du Cortex-M4 atteint généralement 1,25 DMIPS/MHz (Dhrystone). Pour une application embarquée typique, les accès mémoire (Flash avec wait states) sont le facteur limitant, pas la puissance de calcul pure.


Toolchain et écosystème : critères souvent négligés

Choisir une architecture processeur, c'est aussi choisir un écosystème d'outils pour toute la durée de vie du produit — souvent 10 à 15 ans.

Toolchains de compilation

Architecture Compilateur officiel Compilateur alternatif Débogueur
ARM Cortex-M arm-none-eabi-gcc (GCC) Clang/LLVM, IAR, Keil OpenOCD + GDB, J-Link
ARM Cortex-A aarch64-linux-gnu-gcc Clang/LLVM, Linaro GCC GDB, Lauterbach
RISC-V riscv32-unknown-elf-gcc Clang/LLVM OpenOCD + GDB
Xtensa (ESP32) xtensa-esp32-elf-gcc (ESP-IDF) Clang (ESP-IDF >= 5.x) OpenOCD JTAG

Débogage matériel

Le choix de l'interface de débogage matériel conditionne la vitesse de développement. ARM propose deux standards :

  • SWD (Serial Wire Debug) : 2 fils (SWDIO + SWDCLK), suffisant pour la majorité des cas. Disponible sur tous les Cortex-M.
  • JTAG : 5 fils, nécessaire pour le débogage multicoeur (SoC hétérogènes) et certaines fonctionnalités avancées (ETM — Embedded Trace Macrocell).

Les sondes les plus répandues dans l'industrie :

Sonde Prix Protocoles Vitesse max Usage
ST-LINK/V3 10–30 € SWD, JTAG 24 Mbps STM32 uniquement
J-Link EDU 60 € SWD, JTAG 50 Mbps Éducation / projets perso
J-Link PLUS 600 € SWD, JTAG, ETM 100 Mbps Production industrielle
Black Magic Probe 50–80 € SWD, JTAG 10 Mbps Open-source, GDB natif
DAPLink (CMSIS) 10–20 € SWD 10 Mbps Embarqué sur la carte

Environnements de développement intégrés (IDE)

IDE Architectures Licence Points forts
STM32CubeIDE STM32 uniquement Gratuit Générateur HAL intégré, ST officiel
VS Code + Cortex-Debug ARM, RISC-V, multi Gratuit Universel, extensible, PlatformIO
IAR Embedded Workbench ARM, RISC-V, multi Commercial Optimisation code, certif. IEC 61508
Keil MDK (µVision) ARM uniquement Commercial Écosystème ARM officiel, CMSIS
ESP-IDF + VS Code Xtensa, RISC-V Gratuit Espressif officiel, Wi-Fi/BLE intégré

Ce qu'il faut retenir

  • La famille Cortex-M domine le marché IoT avec une hiérarchie claire : M0/M0+ pour l'ultra low-cost, M4 pour le traitement signal, M7 pour les gateway embarquées, M33 pour la sécurité TrustZone.
  • Le Cortex-A est nécessaire uniquement quand Linux ou un OS à mémoire virtuelle est requis — son surcoût en énergie et en complexité est significatif.
  • RISC-V (ESP32-C3/C6) est une alternative sérieuse pour les nouveaux projets Wi-Fi/BLE, avec un écosystème qui mûrit rapidement.
  • Les extensions DSP du Cortex-M4 peuvent réduire la charge de traitement signal d'un facteur 4, changeant complètement le dimensionnement énergétique.
  • Choisir une architecture, c'est choisir un écosystème d'outils pour 5 à 10 ans — la maturité du toolchain et du support RTOS compte autant que les MHz.

Chapitre suivant : Bare-metal, RTOS et Linux embarqué — quel modèle d'exécution pour votre architecture ?