Une architecture externe de processeur ou architecture de jeu d'instructions (ISA, de l'anglais instruction set architecture), ou tout simplement architecture (de processeur), est la spécification fonctionnelle d'un processeur, du point de vue du programmeur en langage machine. L'architecture comprend notamment la donnée d'un jeu d'instructions, d'un ensemble de registres visibles par le programmeur, d'une organisation de la mémoire et des entrées sorties, des modalités d'un éventuel support multiprocesseurs, etc.
Le terme externe employé ici permet de bien faire la différence avec la microarchitecture ou architecture interne, qui s'intéresse à l'implémentation pratique du comportement spécifié par une architecture externe. Une architecture externe donnée peut être implémentée sous forme de plusieurs microarchitectures.
Une architecture externe de processeur est le modèle du processeur vu de l'extérieur, c'est-à-dire par le programmeur en langage machine, le compilateur ou le noyau du système d'exploitation. Il s'agit de l'interface entre le matériel et le logiciel.
Cette interface peut être implémentée dans divers processeurs. L'organisation pratique de ces derniers est appelée micro-architecture ou architecture interne. Par opposition à l'architecture qui correspond au modèle de la machine vu par le programmeur, les spécificités d'une micro-architecture sont invisibles pour ce dernier. Par exemple, la micro-architecture peut spécifier l'existence de mémoires cache, de renommage de registres, de pipelines, de prédiction de branchement, etc. Une micro-architecture peut ensuite donner lieu à une ou plusieurs réalisations matérielles.
Pour résumer, Tanenbaum distingue trois niveaux matériels dans un ordinateur :
Exemple (fictif) :
Pour une architecture donnée, on peut avoir plusieurs micro-architectures, et une micro-architecture donnée peut servir de base à plusieurs réalisations. Par exemple l'architecture System 360 d'IBM a été disponible dès le départ en cinq micro-architectures différentes ayant naturellement des performances et un coût différent (c'est d'ailleurs dans le contexte de la définition de cette architecture que la nomenclature ci-dessus a été raffinée). Chez Intel, l'architecture IA-32, implémentée pour la première fois dans le 80386, possède des implémentations ultérieures très différentes : par exemple, le Pentium a introduit une micro-architecture pipelinée de type superscalaire avec prédiction de branchement. En outre, l'architecture IA-32 a été implémentée par d'autres fondeurs, en particulier AMD.
Naturellement les interactions entre les trois niveaux sont complexes. Les contraintes de réalisation limitent les choix micro-architecturaux et le désir de pouvoir choisir une micro-architecture donnée influence la définition de l'architecture. Si les avantages de la compatibilité forcent à vouloir garder l'architecture constante, vouloir avoir une micro-architecture et une réalisation efficace pousse vers une évolution, soit par extension compatible (ajout d'instructions par exemple), soit en précisant des zones floues ou même en invalidant ce qui autrefois était autorisé.