Le microprocesseur : architecture et évolution

Architecture de base du microprocesseur

Un microprocesseur est construit autour de deux éléments principaux : l’unité de commande, l’unité de traitement .
Ces deux unités sont associées par des petites memoires (registres) internes du microprocesseur. Ces registres permettent de sauvegarder les différentes informations traitées par le microprocesseur. Les différentes unités du microprocesseur interagissent. Elles jouent chacune des rôles importants pour l’exécution des programmes. Elles sont aussi liées par des bus (de commandes, d’adresses et de données), permettant la communication entre elles.
Unité de commande : L’unité de commande est chargée d’effectuer la recherche et le décodage des instructions stockées dans la mémoire principale. Elle est composée par :
le compteur de programme ou program counter (PC) : ce registre contient l’adresse de l’instruction à exécuter. Son contenu est d’abord initialisé avec l’adresse de la première instruction du programme en cours d’exécution. Puis il sera incrémenté du nombre d’octet que l’instruction est code.
le registre d’instruction : l’instruction lue en mémoire est placé dans ce registre avant d’être transférée vers le décodeur d’instruction.
le décodeur d’instruction : effectue le décodage de l’instruction. Il l’analyse et détermine l’opération à effectuer et l’adresse de ses opérandes.
le séquenceur : organise l’exécution des instructions au rythme d’une horloge. Il génère aussi tous les signaux de commandes contrôlant les différents composants du microprocesseur.
Unité de traitement : L’unité de traitement est chargée d’effectuer l’exécution des instructions. Elle regroupe les circuits qui permettent d’effectuer les calculs arithmétiques et logiques. Elle regroupe également les circuits permettant d’effectuer les calculs sur les réels et les calculs multimédia Elle est ainsi composée de trois unités d’exécutions :
l’unité arithmétique et logique ou arithmétique and logic unit (ALU) : effectue les calculs arithmétiques (addition, division…) et logiques (décalage, incrémentation…) sur les entiers.

Les registres du microprocesseur

Les registres sont des mémoires très rapides, de tailles très petites, à l’intérieure du microprocesseur. Ils permettent de mémoriser temporairement les informations manipulées lors de l’exécution d’un programme. La structure des registres dépend d’un constructeur à l’autre. Toutefois, ils réalisent essentiellement les mêmes fonctions de bases.
Les registres généraux : Les registres généraux sont connectés au bus de données internes du microprocesseur. Ils permettent de mémoriser les données manipulées par l’unité de traitement. Ce sont des registres de travail de l’unité de traitement.
Ils sont au nombre de quatre : le registre accumulateur (AX), le registre de base (BX), le registre compteur (CX) et le registre de donnée (DX). Chacun de ces quatre registres peut servir pour la plus part des opérations. Mais ils ont chacun une fonction principale qui les caractérise.
AX : il est utilisé pour la plus part des opérations arithmétiques et logiques. C’est un registre de travail très important de l’ALU. Dans la plus part des opérations, il contient l’un des opérandes avant le calcul et le résultat après.
BX : il sert de base pour la plus part des opérations. CX : il est utilisé pour retenir le nombre d’itérations lors d’une opération de boucle. Pour ce type d’opération, le CPU exécute une instruction N fois. Cette valeur(N) doit être au préalable mise dans CX pour que le CPU puisse exécuter l’opération voulue. DX : il est utilisé pour mémoriser la retenue de certaines opérations. DX est aussi utilisé pour retenir des adresses d’entrée ou de sortie de données lors de certaines opérations.
Les registres d’adresses : Les registres d’adresses stockent les adresses servant à localiser les informations (données et instructions stockées en mémoire) que doit traiter le CPU. Ils sont connectés au bus d’adresses et leurs tailles sont égales à la taille de ces bus.
Il existe plusieurs type de registres d’adresses : les registres de décalage, les registres de segment, les registres d’index et le registre d’adresse. Le registre d’adresse : Il contient toujours l’adresse de la donnée qui doit être lue en mémoire.
Les registres de décalages : Les registres de décalage sont : le registre pointeur de pile : ce registre pointe le haut de la pile. Il permet de localiser la dernière valeur enregistrée dans la pile. Celle-ci est une zone de la mémoire qui permet de sauvegarder des informations relatives à des programmes d’interruption ou des sous programmes.
le registre pointeur de base : est généralement utilisé pour les accès aux paramètres locaux d’une procédure. le registre compteur de programme ou en anglais program counter (PC) : il contient l’adresse de l’instruction à chercher en mémoire. Son contenu est initialisé avec l’adresse de la première instruction d’un programme. L’unité de commande incrémentera ensuite son contenu du nombre d’octet que l’instruction en cours est codée.
Les registres de segments : Ils sont utilisés en relation avec les registres de décalage pour indiquer l’emplacement exacte des données en mémoire. Ils sont au nombre de quatre : le code segment : son contenue correspond à l’adresse du segment contenant les codes des instructions du programmes en cours. Il est utilisé en relation avec le PC pour localiser l’emplacement de l’instruction qui doit être exécutée.
le segment de pile : ce registre contient l’adresse de la pile. Il permet ainsi de la localiser dans la mémoire centrale.
le segment de donnée : contient l’adresse du segment des variables globales du programme en cours d’exécution.
le segment de pile : ce registre contenant l’adresse de la pile, permet de la localiser dans la mémoire. le extra segment : contient l’adresse du segment utilisée pour le stockage des chaînes de caractères. Il est utilisé en relation avec le registre d’index pour des opérations manipulant des chaînes de caractères. Le registre de donnée : Ce registre contient la donnée lue en mémoire ou qui doit y être stockée. Les registres d’index : Les registres d’index sont le registre index source (SI) et le registre index destination (DI). Ils sont respectivement utilisés comme indexe source et indexe destination pour des opérations manipulant des chaîne de caractères.
Ces registres peuvent être utilisés comme des registres généraux pour retenir le nombre d’itération d’une boucle et pour la sauvegarde de données.
Ils peuvent également être utilisés pour mémoriser des adresses, suivant un adressage particulier, appelée adressage indexé.
Le registre d’état : Ce registre contient les différents bits appelés indicateurs. Ces bits fournissent les informations permettant de connaître l’état d’un certain nombre de composants . Ils fournissent aussi les informations concernant les opérations qui ont déjà été exécutées. Par exemple, si l’ALU doit tenir compte dans l’addition en cours d’une retenue générée par une addition précédente. Le nombre de bit du registre d’état dépend des types de microprocesseur. Il contient essentiellement les bits suivants : le bit de retenue : le bit C ou carry, ce bit est à 1 s’il y a une retenue qui est générée lors d’une opération arithmétique. le bit de parité : le bit P, ce bit est mis à 1 si le nombre de 1 dans l’accumulateur est pair. le bit de retenue intermédiaire : le bit AC (auxiliary carry), il est mis à 1 si une retenue est générée entre groupes de 4 bits (passage de retenue). le bit zéro : il est à 1 si le résultat d’une opération arithmétique est nul.

Fonctionnement de base du microprocesseur

Les composants du microprocesseur, en interagissant, jouent chacun un rôle important pour l’exécution d’une instruction. En effet, chaque composant est chargé d’effectuer une tâche . Au début d’un programme, le PC contient l’adresse de l’instruction à exécuter. Cette adresse est d’abord stockée dans le registre d’adresse avant d’être véhiculée par le bus d’adresse pour la lecture. Avec un signal de lecture via le bus de commande, le code de l’instruction en mémoire apparaît sur le bus de donnée. Ce code est transféré vers le registre de données puis vers le registre d’instruction pour sa mémorisation. Il sera ensuite envoyé vers le décodeur qui va déterminer la nature de l’opération à effectuer et les adresses des opérandes. La nature des opérations sera transmise `a l’ALU. Puis les opérandes seront recherchées et transmises `a l’ALU qui va enfin réaliser les calculs. L’exécution d’une instruction est ainsi un long processus qui met en œuvre tous les composants du microprocesseur.

Langage de programmation

Le microprocesseur ne comprend que le langage machine (signal numérique ou succession de bits: des 0 et des 1 ). Dès lors pour dialoguer avec lui et lui donner des instructions, des langages de programmation sont créés.
Le langage assembleur crée à cet effet, est proche du langage machine et est directement compréhensible par le CPU. Il est composé d’instructions appelées mnémoniques (mov, add, mul, cmp, div,… ). Ces instructions correspondent essentiellement à des opérations de transfert de données, des opérations arithmétiques ou logiques. Chaque instruction ou mnémonique correspond `a un code machine différent. La difficulté de mettre en œuvre ce langage, et leur forte dépendance avec la machine, a entraîné la conception des langages haut niveaux . Les langages haut niveaux (C, Pascal, Java, etc) sont faciles à mettre en œuvre et sont indépendants, des architectures machines. Chaque instruction en langage haut niveau correspond à une succession d’instructions en langage assembleur. Ainsi, un programme en langage haut niveau, est d’abord compilé puis traduit en assembleur et enfin traduit en code machine exécutable . Ces opérations sont réalisées à partir de logiciels spécialisés appelés compilateur (ou traducteur) ou assembleur.

Notion d’architecture RISC et CISC

Les architectures des microprocesseurs actuelles sont de type RISC ou CISC. Architecture CISC: L’architecture CISC (ou machine à jeu d’instruction complexe) est une architecture pour laquelle le CPU ne manipule que des instructions complexes. Ces types d’instructions nécessitent un grand nombre de cycle d’horloge. Or, un microprocesseur basé sur l’architecture CISC ne peut traiter qu’une instruction à la fois, d’où un temps d’exécution conséquent. L’architecture CISC est utilisée en particulier par les microprocesseurs de la famillex86 (ceux d’AMD et d’Intel).
Architecture RISC : Un CPU RISC (ou machine à jeu d’instructions réduit ) possède un jeu d’instructions réduit. Pour cette architecture le CPU ne traite que des instructions simples. Les instructions complexes sont cependant décomposées en des instructions simples pouvant être exécutées rapidement. Chacune de ces instructions s’exécute en un cycle d’horloge. Elles ont ainsi des temps d’exécution petits. Les processeurs RISC sont aussi capables de traiter plusieurs instructions simultanément (exemple : le PowerPC d’IBM). Aujourd’hui tous les constructeurs tendent vers l’architecture RISC. Cette architecture offre en effet de belles performances. Toutefois, le choix entre les deux architectures RISC et CISC dépendra des applications visées.

Table des matières

Introduction générale 
1 Architecture et fonctionnement de base du microprocesseur 
1.1 Introduction
1.1.1 Architecture Von Neumann
1.1.2 Architecture harvard
1.2 Architecture de base du microprocesseur
1.2.1 Unité de commande
1.2.2 Unité de traitement
1.2.3 Les autres unités du microprocesseur
1.2.4 Les registres du microprocesseur
1.2.5 Horloge du microprocesseur
1.3 Fonctionnement de base du microprocesseur
1.3.1 Les cycles d’exécutions d’une instruction
1.3.2 Jeu d’instructions
1.4 Langage de programmation
1.5 Notion d’architecture RISC et CISC
1.5.1 Architecture CISC
1.5.2 Architecture RISC
1.6 Caractéristiques et Performances d’un Microprocesseur
1.7 Conclusion
2 Evolution des microprocesseurs 
2.1 Les premiers microprocesseurs
2.2 Les améliorations et les innovations techniques
2.2.1 L’augmentation de la taille des données et des opérandes
2.2.2 L’augmentation des vitesses d’horloge
2.2.3 L’intégration des mémoires caches
2.2.4 L’intégration d’unité de calcul pour les nombres réels
2.2.5 L’intégration d’unités pour le multimédia
2.2.6 Le parallélisme d’exécution des instructions
2.2.7 L’intégration de plusieurs microprocesseurs dans une même puce
2.3 Conclusion
Conclusion générale 
A Comparaison entre les architectures RISC et CISC 
Bibliographie

Télécharger le rapport complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *