Au cœur de nos appareils numériques, des puces. Mais selon les cas, leur composition diffère. On parle ainsi de processeur, de SoC ou de micro-contrôleur. Des solutions à la composition parfois assez proche en théorie, mais avec de grosses différences dans la pratique.
Nos ordinateurs sont basés sur une multitude de composants aux acronymes dont nous parlons ici au quotidien : CPU, GPU, mémoire, carte mère, chipset, stockage via des HDD/SSD. Mais ils ne représentent qu'une partie du secteur informatique.
Une réalité de plus en plus visible depuis l'apparition des Single Board Computer (SBC) ou micro PC, avec le Raspberry Pi en fer de lance. Comme les smartphones, tablettes et autres systèmes embarqués, ils utilisent des SoC basés sur l'architecture ARM, plutôt que x86 pour les processeurs d'AMD et Intel.
Les bidouilleurs s'intéressent parfois à d'autres cartes exploitant cette fois des micro-contrôleurs, encore plus basiques et économes en énergie, comme le Raspberry Pico et son RP2040 qui viennent d'être annoncés. Mais dans la pratique, qu'est-ce qui différencie réellement ces solutions les unes des autres ?
Des processeurs...
Le micro-processeur est au cœur de nos ordinateurs, présenté en général comme son « cerveau » lorsqu'il s'agit de vulgariser son rôle à un public non technique. Il est en effet central, puisque cette puce est chargée d'exécuter la majorité des calculs, en lien avec la mémoire, le stockage, la carte graphique, etc.
On la désigne souvent par l'acronyme CPU (Central Processing Unit), un peu à tort puisque ce n'est là qu'un de ses rôles. En effet, avec le temps elle a gagné en fonctionnalités et les processeurs modernes intègrent directement certains éléments qui étaient externalisés jusque là : le contrôleur mémoire, la partie graphique ou certaines E/S.
Pour s'en convaincre, il suffit de regarder le diagramme d'un Core de 11e génération d'Intel (Tiger Lake). Comme on peut le voir dans le document ci-dessous, les cœurs de calcul sont désormais une minorité de la puce qui va même jusqu'à intégrer différents accélérateurs pour le traitement d'image, l'IA, etc.

... qui ressemblent de plus en plus à des SoC
On serait alors tenté de les présenter comme des SoC (System-on-chip). Comme leur nom l'indique, ces solutions que l'on trouve essentiellement dans le domaine de l'embarqué ou de la mobilité (smartphones, tablettes) comprennent presque l'entièreté d'un système au sein de leur die.
Mais les processeurs x86 sont encore en général accompagnés d'un chipset où sont déportés une partie des E/S et du réseau, ce qui n'est pas le cas d'un SoC. Il y a néanmoins des exceptions, tant chez Intel que chez AMD. Lakefield intègre par exemple au sein d'une même puce différents cœurs CPU, GPU, la gestion des E/S et même la mémoire dans un packaging de 12 x 12 mm. « L'astuce » trouvée par Intel est de la composer en trois couches.
Avec les premières versions de ses Ryzen, AMD avait fait un choix similaire. On y trouve ainsi des cœurs CPU, le contrôleur mémoire, parfois un GPU mais surtout des contrôleurs S-ATA/USB. Les deux premières générations (Zen(+)) sont autonomes, ne nécessitant pas de chipset. Cela a changé avec Zen 2, les E/S et le contrôleur mémoire ayant été déportés dans un « I/O die », une puce différente placée dans le packaging, gravée en 12/14 nm plutôt qu'en 7 nm.
AMD présente Zen(+) comme un SoC, avec S-ATA et USB intégré. Zen 2 a externalisé ses E/S dans une puce séparée
Les SoC, des processeurs tout-en-un
Processeurs et SoC tendent donc à se rapprocher dans leur composition. Ces derniers gardent néanmoins quelques avantages comme une taille et une consommation très réduite, étant le plus souvent basés sur des architectures ARM. C'est pour ça qu'ils sont utilisés dans de nombreux SBC, comme le Raspberry Pi.
Mais aussi dans les smartphones et autres appareils mobiles. Car ils intègrent parfois un modem 4G/5G. Intel a bien tenté à une époque de faire de même avec ses Atom et le projet SoFia, cela s'est soldé par un échec. Mais qui sait...
Pour référence, voici le diagramme d'un SoC Rockchip RK3399(K) que l'on trouve dans le NAS Helios64 de Kobol :
Et les micro-contrôleurs dans tout ça ?
Viennent ensuite les micro-contrôleurs, nombreux. Outre le RP2040 à base de Cortex M0+ d'ARM, qui vient d'être annoncé par la fondation Raspberry Pi, les plus connus chez les bidouilleurs sont sans doute les ESP32 et ESP8266 d'Espressif Systems du fait de leur faible tarif, de l'écosystème et la communauté qui se sont construits autour. Mais on rencontre aussi souvent des modèles ATMel (notamment sur les cartes Arduino), le ST32 de STMicroelectronics, etc.
Un micro-contrôleur se distingue en général par une intégration plus poussée que les SoC, puisque de la mémoire et du stockage y sont le plus souvent présents. C'est là qu'une autre caractéristique de ces puces entre en jeu : on change d'échelle à de nombreux niveaux. Pour vous donner une idée, un ESP32-SOLO1 intègre un unique cœur Xtensa LX6 (32 bits) cadencé à 160 MHz, intégrant 520 ko de SRAM et 448 ko de ROM. Sa consommation est donnée pour 27 à 34 mA lorsqu'il est actif (Wi-Fi en sommeil) avec une tension de fonctionnement aux alentours de 3,3 V.
On est donc loin des SoC consommant quelques watts ou des processeurs à plusieurs dizaines/centaines de watts. Surtout, ces puces sont presque intégralement autonomes. On ne peut y installer un OS classique, mais leur firmware permet d'y charger un programme qu'ils exécuteront en lien avec leurs E/S. Ils intègrent ainsi régulièrement de quoi contrôler des moteurs, capteurs et autres éléments du même genre.
On les programme en C(++), parfois directement en langage assembleur. Pour ceux qui veulent des solutions de plus haut niveau, il existe des solutions telles que MicroPython ou CircuitPython. Cela va parfois plus loin avec des solutions qui visent un usage éducatif comme les BBC micro:bit.
Nous aurons d'ailleurs l'occasion sous peu de revenir sur le fonctionnement de différents micro-contrôleurs, par l'exemple.