Architecture de processeur 387175 29958472 2008-05-24T20:39:56Z JAnDbot 127921 robot Ajoute: [[cs:Architektura procesoru]] {{ébauche|informatique}} 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 machine|instruction]] [[ADD (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émentation]]s 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'[[Advanced Micro Devices|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é. == 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. === 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. ==== 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. ==== 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 [[mode d'adressage|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. {{Article détaillé|Mode d'adressage}} ==== 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. == Classification des architectures == === Architecture CISC === {{Loupe|Complex instruction set computer}} === Architecture RISC === {{Loupe|Reduced instruction set computer}} === Architecture VLIW === {{Loupe|Very Long Instruction Word}} === Architecture vectorielle === == Architecture PowerPC == {{loupe|Powerpc}} == Voir aussi == === Liens internes === === Liens externes === * [http://koyoteproject.free.fr Un simulateur de processeur MIPS simplifié] === 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 {{Portail informatique}} [[Catégorie:Processeur]] [[ar:وحدة معالجة مركزية (CPU)]] [[cs:Architektura procesoru]] [[de:Prozessorarchitektur]] [[en:CPU design]] [[he:ארכיטקטורה של מעבדים]] [[nl:Processorarchitectuur]] [[pl:Architektura procesora]] [[tr:Merkezi işlem birimi tasarımı]]