Architecture de processeur

Un article de Wikipédia, l'encyclopédie libre.

L'architecture d'un processeur est l'agencement de ses composants ; cet agencement est fait en vue d'une tâche ou d'un ensemble de tâches précises prévue par le concepteur.

Il faut savoir qu'un processeur a une instruction add qui fait une addition entre deux registres et met le résultat dans un troisième concerne l'architecture du processeur.

L'implémentation ou micro-architecture est l'organisation logique des flux de données et du contrôle de ceux-ci.

Il faut savoir qu'un processeur a deux unités arithmétiques capables d'exécuter cette instruction concerne la micro-architecture.

La réalisation est la concrétisation matérielle de l'implémentation.

Il faut savoir que ces unités arithmétiques sont réalisées dans une technologie CMOS avec trois niveaux de métaux et une finesse de gravure de 130 nanomètres concerne la réalisation.

Pour une architecture donnée, on peut avoir plusieurs implémentations et une implémentation 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 implémentations 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) et de nos jours les microprocesseurs d'Intel et d'AMD fournissent de nombreux exemples des deux genres de déclinaison.

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 implémentation donnée influence la définition de l'architecture. Si les avantages de la compatibilité forcent à vouloir garder l'architecture constante, vouloir avoir une implémentation 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é.

Sommaire

[modifier] Structure d'un processeur

Un processeur comporte trois classes de composants:

  • des espaces de stockage, source des instructions et de leurs opérandes et destination des résultats;
  • des unités fonctionnelles, effectuant les manipulations sur les opérandes et fournissant les résultats;
  • un contrôleur, lisant les instructions et coordonnant leur exécution par les autres composants.

[modifier] Espaces de stockage

L'information est essentiellement enregistrée dans les registres, un registre étant un espace de mémoire qui possède un nom significatif et un format défini permettant au processeur de stocker rapidement de l'information temporaire. Le nombre des registres dépend du type de processeur et du fabricant. Plusieurs jeux d'instructions spécifiques pour des applications de style multimédia ont aussi leurs registres propres pour un traitement plus spécifiques et rapides des informations.

Outre cette mémoire, les processeurs (suivant leur type) disposent d'une mémoire avec latence d'accès très basse. Cette mémoire, appelée cache, se présente sur différents niveaux (les processeurs haut de gamme en disposent de jusqu'à trois niveau) qui sont notés L1 L2 et L3. Plus cette mémoire est grande, plus le processeur peut stocker d'information et ainsi réduire l'accès aux composantes disposant d'une latence plus élevée.

[modifier] Espace de travail

C'est l'ensemble des emplacements facilement spécifiables qui contiennent temporairement les opérandes et les résultats des opérations. Ces emplacements sont souvent appelés registres.

Il n'est absolument pas nécessaire que les registres soient homogènes bien qu'on puisse souvent grouper les registres en classes, de sorte que les registres d'une classe peuvent être utilisés à la place de n'importe quel autre registre de la même classe. Mais il n'est pas rare qu'une classe ne comporte qu'un seul registre.

Les architectures ont quasiment toutes au moins deux classes de registres: une pour stocker les valeurs entières, une pour stocker les nombres représentés en virgule flottante. Mais souvent, l'espace de travail comporte des registres ayant des fonctions particulières.

Un accumulateur 
est un registre servant de source implicite à la plupart des instructions et contenant le résultat après leur exécution.
Les registres d'index 
sont des registres servant au calcul d'adresse (voir plus loin).
Un pointeur de pile 
indiquant l'adresse du sommet d'une pile gérée par le processeur.
Un frame pointer 
servant à accéder aux données locales de la routine en cours d'exécution.

Certains registres ont un comportement particulier: ils informent de l'état du processeur ou contiennent des informations à propos des dernières opérations effectuées (par exemple un indicateur indiquant si le dernier résultat était nul ou pas). Parmi ces registres particuliers on trouve souvent:

Le compteur ordinal (program counter, instruction pointer

indiquant l'adresse de l'instruction en cours d'exécution ou de la prochaine instruction à exécuter;

le mot d'état 
regroupant les informations les plus importantes sur l'état du processeur.

[modifier] Espace mémoire

Au contraire de l'espace de travail, un espace mémoire apparait comme un ensemble homogène d'emplacements, chacun de ceux-ci étant spécifié par son adresse.

La plupart des processeurs n'ont qu'un espace mémoire, mais certains en ont plusieurs (par exemple un microcontrôleur peut avoir un espace mémoire sur le circuit et un espace mémoire à l'extérieur de celui-ci).

Parfois un espace mémoire peut être plongé dans un autre, c’est-à-dire qu'un même emplacement peut être accessible à une adresse d'un espace mémoire donné ou à une autre adresse d'un autre espace mémoire. C'est parfois le cas pour tout ou partie des registres de l'espace de travail.

Les modes d'adressage du processeur sont les différentes manières dont on peut spécifier les opérandes d'une instruction. Parmi les modes d'adressage possibles, citons:

l'adressage implicite 
l'opérande n'est pas spécifiée dans l'instruction; elle est soit

toujours la même (pour une instruction d'incrémentation par exemple, on peut considérer qu'une opérande est toujours la constante 1), soit elle se trouve dans un registre fixé (si beaucoup d'instructions utilisent implicitement un même registre, celui-ci est nommé l'accumulateur), soit son adresse se trouve dans un registre fixé (par exemple le pointeur de pile).

l'adressage immédiat 
la valeur de l'opérande est donnée directement dans l'instruction;
l'adressage direct ou absolu 
l'adresse de l'opérande est donnée directement dans l'instruction;
l'adressage par registre 
l'opérande se trouve dans un registre donné dans l'instruction;
l'adressage indirect par registre 
l'adresse de l'opérande se trouve dans un registre;
l'adressage indirect 
l'adresse de l'opérande se trouve dans un emplacement mémoire dont l'adresse est donnée dans l'instruction;
l'adressage indexé 
l'adresse de l'opérande est formée en additionnant le contenu d'un ou de deux registres et d'une constante.
Icône de détail Article détaillé : Mode d'adressage.

[modifier] Entrée sortie

Pour le programmeur, la gestion des entrées sorties se fait souvent exactement comme si on accédait à un espace de stockage particulier. Suivant les architectures il apparaît soit comme des registres (c'est souvent le cas dans les microcontrôleurs), soit comme un espace mémoire (auquel cas les modes d'adressage sont souvent plus réduits que dans les espaces mémoire normaux). Parfois, les entrées sorties se font en accédant simplement à des adresses particulières dans l'espace mémoire normal.

[modifier] Classification des architectures

[modifier] Architecture CISC

Icône de détail Article détaillé : Complex instruction set computer.

[modifier] Architecture RISC

Icône de détail Article détaillé : Reduced instruction set computer.

[modifier] Architecture VLIW

Icône de détail Article détaillé : Very Long Instruction Word.

[modifier] Architecture vectorielle

[modifier] Architecture PowerPC

Icône de détail Article détaillé : Powerpc.

[modifier] Voir aussi

[modifier] Liens internes

[modifier] Liens externes

[modifier] Livres

  • 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