La microarchitecture, souvent abrégée en « µarch » ou « uarch », désigne l'organisation interne d'un processeur ou d'une unité de traitement. Elle précise comment les blocs matériels (unités arithmétiques, registres, caches, contrôleurs) collaborent pour exécuter les instructions définies par une architecture d'instructions (ISA). Plusieurs microarchitectures différentes peuvent implémenter la même ISA, offrant des compromis variés en performances, consommation et complexité.

Principaux éléments et rôles

Une microarchitecture comporte plusieurs sous-systèmes essentiels. Parmi eux :

  • Chemin de données (datapath) : registres, unités arithmétiques (ALU), unités flottantes (FPU) et multiplexeurs qui effectuent les opérations.
  • Unité de contrôle : contrôle séquentiel et logique de commande, parfois microcodée.
  • Pipeline : segmentation des étapes d'exécution pour augmenter le débit d'instructions.
  • Mécanismes d'optimisation : prédicteurs de branche, buffers d'instructions, exécution out-of-order, réordonnancement, et files d'attente.
  • Sous-systèmes mémoire : caches (L1/L2/L3), gestion des accès mémoire, contrôleurs et cohérence pour architectures multi-cœurs.

Évolution historique

Les idées fondatrices datent des premiers ordinateurs et du concept de microprogramme proposé au milieu du XXe siècle pour simplifier la commande matérielle. Par la suite, des avancées telles que le pipeline, le superscalaire et l'exécution hors ordre ont transformé la conception des processeurs en réponse aux besoins croissants de performance. Les mouvements RISC et CISC ont aussi influencé la façon dont on répartit la complexité entre ISA et microarchitecture.

Techniques et stratégies modernes

Les microarchitectures contemporaines combinent souvent plusieurs techniques : décodage et fusion d'instructions, exécution superscalaire pour lancer plusieurs opérations simultanément, algorithmes de réordonnancement dynamique pour résoudre les dépendances, et prédiction de branche sophistiquée pour maintenir l'efficacité du pipeline. Les architectes équilibrent ces éléments avec des contraintes de consommation d'énergie et de surface silicium.

Implémentation, vérification et compromis

Une microarchitecture peut être réalisée en logique standard, en ASIC, ou sur FPGA. La conception exige simulation et vérification poussées afin d'assurer fiabilité et sécurité. Les choix d'architecture impliquent des compromis : performances brutes vs consommation énergétique, complexité du design vs facilité de validation, coût de fabrication vs densité de fonctions.

En résumé, la microarchitecture est la couche matérielle concrète qui met en œuvre une ISA et détermine le comportement réel du processeur. Comprendre ses composants et compromis est essentiel pour analyser les performances, l'efficacité énergétique et l'adaptabilité d'une puce à des usages variés.