Architecture De Processeur

Architecture De Processeur

Architecture de processeur

Une architecture externe de processeur[1],[2] ou architecture de jeu d'instructions[3] (ISA, de l'anglais instruction set architecture), ou tout simplement architecture (de processeur)[4],[5],[6], 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.

Sommaire

Définitions

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 microarchitecture ou architecture interne[1]. Par opposition à l'architecture qui correspond au modèle de la machine vu par le programmeur, les spécificités d'une microarchitecture sont invisibles pour ce dernier. Par exemple, la microarchitecture peut spécifier l'existence de mémoires cache, de renommage de registres, de pipelines, de prédiction de branchement, etc. Une microarchitecture peut ensuite donner lieu à une ou plusieurs réalisations matérielles.

Pour résumer, Tanenbaum[7] distingue trois niveaux matériels dans un ordinateur :

  • niveau n°2 — architecture externe ou de jeu d'instruction (ISA),
  • niveau n°1 — microarchitecture,
  • niveau n°0 — réalisation en logique numérique.

Exemple (fictif) :

  • niveau architecture externe : il existe huit registres d'usage général. L'instruction ADD effectue une addition entre deux quelconques de ces registres et met le résultat dans un quelconque troisième.
  • niveau microarchitecture (architecture interne) : le traitement des instructions est pipeliné et deux unités arithmétiques et logiques sont capables d'effectuer l'addition de l'instruction ADD.
  • niveau réalisation : le processeur est réalisé dans une technologie CMOS avec trois niveaux de métaux et une finesse de gravure de 130 nanomètres.

Pour une architecture donnée, on peut avoir plusieurs microarchitectures, et une microarchitecture 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 microarchitectures 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[4]). 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 microarchitecture 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 microarchitecture donnée influence la définition de l'architecture. Si les avantages de la compatibilité forcent à vouloir garder l'architecture constante, vouloir avoir une microarchitecture 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é.

Éléments d'une architecture externe

Dans la plupart des architectures, les programmes manipulent des registres de travail. Ces derniers sont donc à la base de l'architecture. Cependant, le processeur peut comporter d'autres registres, internes, non visibles du programmeurs : ceux-ci ne font pas partie de l'architecture.

L'accès aux données de la mémoire se fait selon un certain nombre de modes d'adressage qui sont spécifiés au niveau de l'architecture. De plus, cette dernière définit la vue logique qu'ont les programmes de la mémoire, et la façon dont est réalisée la liaison avec la mémoire physique. De même on spécifie les modalités d'accès aux entrées-sorties : registres spécialisés (c'est souvent le cas dans les microcontrôleurs), espace mémoire particulier (auquel cas les modes d'adressage sont souvent plus réduits que dans les espaces mémoire normaux), adresses particulières dans l'espace mémoire normal. Les types de données manipulés par le processeur doivent être précisés.

Les registres, la mémoire et les entrées-sorties sont manipulées par les instructions machine des programmes. Le jeu d'instructions est donc une donnée conséquente de l'architecture : il spécifie très précisément le comportement de chaque instruction machine.

Une architecture définit la façon dont sont gérées les erreurs ou exceptions.

Dans le cas d'une architecture qui supporte le multiprocesseurs, la façon dont les différents processeurs communiquent et se synchronisent doit être spécifiée.

Idéalement, on peut penser que les divers caches que peut intégrer un processeur (mémoire cache, TLB, etc.) pourraient être transparents pour le programmeur, donc hors du champ de l'architecture externe. Cependant, il est le plus souvent nécessaire que les programmes (en général le système d'exploitation) interagissent avec les caches (par exemple, pour invalider des entrées du TLB lorsque nécessaire). L'architecture externe décrit alors le rôle et l'interface de ces caches.

Classification des architectures

Architecture CISC

Article détaillé : Complex instruction set computer.

Une architecture CISC propose de nombreux modes d'adressage, dont certains sont souvent complexes. Le jeu d'instructions est généralement fourni.

Exemples : x86 étendue en IA-32, elle-même étendue en x64 ; Motorola 680x0.

Architecture RISC

Article détaillé : Reduced instruction set computer.

Une architecture RISC propose un jeu d'instructions relativement réduit. Les modes d'adressage sont plus simples que dans une architecture CISC. L'architecture propose en général un nombre important de registres généraux. Ces caractéristiques favorisent une utilisation optimale du pipeline au niveau de la microarchitecture.

Exemples : SPARC, POWER et PowerPC, MIPS, ARM.

Architecture VLIW

Article détaillé : Very Long Instruction Word.

Ce concept fait reposer une partie de la gestion du pipeline sur le compilateur : le processeur reçoit des instructions longues qui regroupent plusieurs instructions plus simples.

Architecture vectorielle

Article détaillé : Processeur vectoriel.

Alors que les instructions des processeurs traditionnels traitent un nombre (un scalaire) à la fois, les instructions des processeurs vectoriels peuvent travailler sur des vecteurs.

Exemples : les machines Cray.

Jeux d'instructions supplémentaires SIMD

Afin d'améliorer les performances en calcul des processeurs traditionnels, on peut adjoindre à leur architecture de base un ensemble d'instructions et de registres dédié aux traitements SIMD. On compte notamment les technologies suivantes :

  • dans le monde PowerPC : AltiVec ;
  • dans le monde x86 : MMX (multimedia extensions), SSE (streaming SIMD extensions).

Notes et références

  1. a  et b Les termes d'architecture interne et externe sont notamment repris dans le document Principes d'architecture externe des ordinateurs de François Anceau, titulaire de la Chaire des techniques fondamentales de l'informatique au CNAM.
  2. F. Anceau, The Architecture of Microprocessors, Addison-Wesley, 1985, « For any computer, there are two distinct architectures : (a) the external architecture which describes the machine as seen by its users (programmers) in terms of its instruction set [and] its facilities (number of registers, etc.), (b) the internal architecture which describes how the machine is physically organized [...]. »
  3. Par exemple dans Nicholas P. Carter, Architecture de l'ordinateur, Schaum's, 2002 ou Architecture de l'ordinateur : Cours et exercices, Andrew Tanenbaum, Jean-Alain Hernandez (trad.), René Joly (trad.), Dunod, 2001.
  4. a  et b G. M. Amdahl, G. A. Blaauw et F. P. Brooks, Jr., Architecture of the IBM System/360, IBM Journal of Research and Development, volume 8, numéro 2, pp. 87-101, 1964. Voir notamment la note suivante : « The term architecture is used here to describe the attributes of a system as seen by the programmer, i.e., the conceptual structure and functimal behavior, as distinct from the organization of the data flow and controls, the logical design, and the physical implementation. »
  5. B. Shriver et B. Smith, The Anatomy of a High-Performance Microprocessor : a Systems Perspective. The IEEE Computer Society, 1998, p. xi : « Architecture refers to the instruction set, resources, and features of a processor that are visible to software programs running on the processor. The architecture determines what software the processor can directly execute and essentially forms a specification for the microarchitecture. The term architecture as defined here is often called the instruction set architecture. »
  6. D.A. Patterson, J.L. Hennessy, Computer Organization & Design, Elsevier, 2005, p. 21 : « One of the most important example of abstraction is the interface between hardware and lowest-level software. Because of its importance, it is given a special name: the instruction set architecture, or simply architecture, of a machine. »
  7. Architecture de l'ordinateur : Cours et exercices, Andrew Tanenbaum, Jean-Alain Hernandez (trad.), René Joly (trad.), Dunod, 2001.

Voir aussi

Liens internes

Liens externes

Bibliographie

  • Computer Architecture, G.A. Blaauw et F.P. Brooks Jr, Addison Wesley.
  • Computer Architecture, A Quantitative Approach, J.L. Hennesy et D.A. Patterson, Morgan Kaufmann
  • Microprocessors, a programmer's view, R.B.K. Dewar et M. Smosna, Mc Graw Hill
  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Architecture de processeur ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Architecture De Processeur de Wikipédia en français (auteurs)

Игры ⚽ Поможем сделать НИР

Regardez d'autres dictionnaires:

  • Architecture de processeur — Une architecture externe de processeur[1],[2] ou architecture de jeu d instructions[3] (ISA, de l anglais instruction set architecture), ou tout simplement architecture (de processeur)[4 …   Wikipédia en Français

  • Architecture des processeurs — Architecture de processeur Une architecture externe de processeur[1],[2] ou architecture de jeu d instructions[3] (ISA, de l anglais instruction set architecture), ou tout simplement architecture (de processeur) …   Wikipédia en Français

  • Architecture MIPS — MIPS I R2000 • R3000 MIPS II R6000 MIPS III R4000 • R4200 • R4600 …   Wikipédia en Français

  • Processeur central — Processeur « CPU » redirige ici. Pour les autres significations, voir CPU (homonymie) …   Wikipédia en Français

  • Processeur ARM — Les processeurs ARM, construits par Advanced RISC Machines, sont basés sur une architecture RISC 32 bits. C est une architecture qui a été développée par la société ARM Ltd.. Sommaire 1 Présentation des processeurs ARM 2 Technologies 3 …   Wikipédia en Français

  • Processeur 64 bit — Processeur 64 bits Un processeur 64 bits est un processeur dont la largeur des registres est de 64 bits sur les nombres entiers. En effet, des processeurs dits 32 bits gèrent depuis longtemps les nombres flottants sur 64 voire… …   Wikipédia en Français

  • Processeur vectoriel — d un supercalculateur Cray 1. Un processeur vectoriel est un processeur conçu pour exécuter des opérations sur les vecteurs plutôt que les nombres simples. Sommaire …   Wikipédia en Français

  • Architecture Vectorielle — Processeur vectoriel Un processeur vectoriel est un processeur conçu pour exécuter des opérations sur les vecteurs plutôt que les nombres simples. Sommaire 1 Principe 2 Exemple de code vectoriel 3 Marques et modèles …   Wikipédia en Français

  • Architecture vectorielle — Processeur vectoriel Un processeur vectoriel est un processeur conçu pour exécuter des opérations sur les vecteurs plutôt que les nombres simples. Sommaire 1 Principe 2 Exemple de code vectoriel 3 Marques et modèles …   Wikipédia en Français

  • Processeur bi-coeur — Processeur double cœur L Intel Core 2 Duo E6600 est un processeur double cœur. Un processeur double cœur (dual core en anglais) est un processeur équipé de deux cœurs (ou unités de calcul) qui travaillent en parallèle. En effet, la puissance d un …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”