Cette unité plonge dans la microarchitecture du CPU moderne : pipeline superscalaire, exécution spéculative et ses failles de sécurité (Spectre, Meltdown, MDS), hiérarchie des caches et protocoles de cohérence, puis les interconnexions internes (Infinity Fabric, Ring Bus, chiplets UCIe).
Le pipeline et l’exécution spéculative
Un CPU moderne est superscalaire (plusieurs unités d’exécution en parallèle, plusieurs instructions émises par cycle) et pratique l’exécution dans le désordre (out-of-order execution) : les instructions sont réordonnées à la volée selon la disponibilité de leurs opérandes

, puis leurs résultats sont « retirés » (committed) dans l’ordre logique grâce à un ROB (Reorder Buffer).
Pour éviter d’attendre le résultat d’un branchement conditionnel, le processeur prédit son issue grâce à un prédicteur de branchement basé sur l’historique des exécutions passées et exécute spéculativement les instructions du chemin prédit. Si la prédiction est fausse, le pipeline est vidé (pipeline flush) — coûteux en cycles, mais rare, donc globalement gagnant.
Spectre, Meltdown et la famille MDS
Meltdown

exploitait la lecture spéculative de pages mémoire noyau depuis un programme utilisateur non privilégié, avant que la vérification de permission soit finalisée. Corrigé par KPTI (Kernel Page Table Isolation) au prix de 5 à 30 % de perte de performance sur les charges avec beaucoup d’appels système.
Spectre (variantes V1/V2/V4) exploitait le prédicteur de branchement lui-même pour faire exécuter spéculativement du code fuyant des données via le cache. Mitigé par microcode (IBRS, STIBP).
ZombieLoad, Fallout, RIDL (famille MDS, 2019) exploitent les tampons de remplissage internes du CPU (fill buffers, store buffers, load ports) pour lire des données en transit appartenant à d’autres processus ou à l’hyperviseur. Ces failles illustrent un principe général : toute ressource matérielle partagée entre contextes de sécurité différents est une source potentielle de canal auxiliaire (side-channel).
La hiérarchie des caches
Le principe fondamental est la localité : temporelle (une donnée récemment utilisée sera probablement réutilisée) et spatiale (une donnée proche sera probablement utilisée aussi). Chaque niveau de cache est un compromis capacité/latence/coût.
Niveau | Latence typique | Portée | Capacité
L1 | 3-4 cycles (~1 ns) | Privé/cœur | 32-64 Ko
L2 | ~14 cycles (~3 ns) | Privé/cœur | 256 Ko - 2 Mo
L3 LLC | 10-20 ns (40-80c) | Partagé CCX | 2 - 256+ Mo
DRAM | ~60-100 ns | Système | Go à To

Le L1 est VIPT (Virtually Indexed, Physically Tagged). Le L3 (LLC — Last Level Cache) est partagé entre tous les cœurs d’un même CCX (AMD) ou de la même puce. Sa latence de 10 à 20 ns s’explique par le trajet physique du signal sur le ring bus (Intel) ou l’Infinity Fabric (AMD).
La cohérence des caches : MESI et MESIF
Le protocole MESI garantit la cohérence des copies en cache entre cœurs via quatre états : Modified (modifiée localement, seul détenteur), Exclusive (conforme à la RAM, unique détenteur), Shared (identique dans plusieurs caches), Invalid (invalide).
Intel ajoute un cinquième état dans MESIF : le Forward (‘F’). Lorsqu’une ligne est partagée, un seul cache porte l’étiquette Forward et répond aux requêtes de lecture, évitant de solliciter systématiquement le cache Modified ou la DRAM.
Interconnexions internes au CPU
AMD Infinity Fabric
L’Infinity Fabric est un réseau sur puce (NoC) composé du SDF (Scalable Data Fabric

, données) et du SCF (Scalable Control Fabric, gestion thermique/alimentation/sécurité). Il relie les CCX entre eux. La latence inter-CCX (≈80 à 100 ns) est nettement supérieure à la latence intra-CCX (10 à 20 ns) : point critique pour le placement NUMA-aware des tâches sur les serveurs EPYC multi-chiplets.
Intel Ring Bus, Mesh et CAT
Sur les architectures client Intel, les cœurs et les tranches de L3 sont reliés par un ring bus bidirectionnel. Sur les architectures serveur récentes, Intel utilise une topologie mesh (grille 2D) pour passer à l’échelle. L’Intel CAT (Cache Allocation Technology) permet à l’OS ou l’hyperviseur de réserver des ways du L3 pour des applications critiques (QoS cache).
Chiplets et UCIe
Depuis AMD Zen (2017), la tendance est de découper un processeur monolithique en chiplets reliés par une interconnexion haute densité. Le standard UCIe (Universal Chiplet Interconnect Express), porté par Intel, AMD, TSMC, Samsung, Arm et d’autres, standardise ces interconnexions pour permettre l’assemblage de chiplets de fondeurs différents dans un même boîtier.
- L’exécution spéculative optimise les performances mais génère des canaux auxiliaires (Spectre, Meltdown, MDS)
- La hiérarchie L1/L2/L3/DRAM est un compromis vitesse/capacité/coût à chaque niveau
- MESI/MESIF garantit la cohérence des données entre les caches de différents cœurs
- AMD Infinity Fabric : latence inter-CCX (~100 ns) bien supérieure à l’intra-CCX (~15 ns)
- Les chiplets (UCIe) permettent de mélanger différents nœuds de gravure dans un même boîtier

-
Add a note