IFT-17583

Structure interne des ordinateurs

Architecture du Pentium

 

 

Le Pentium II est fourni dans un boîtier à 242 contacts regroupant le microprocesseur lui-même ainsi que les puces pour le cache de niveau 2.

Le Pentium II
 
Le Pentium II utilise 36 bits d'adresse numérotés A0 à A35, soit une capacité d'adressage de 64 Go. À l'externe, toutefois, il ne présente que les lignes A3 à A35, ce qui signifie qu'il adresse des mots de 8 octets (64 bits). Le processeur peut quand même accéder à des octets individuels, mais seulement une fois que les 64 bits sont rendus dans le cache de niveau 1 situé sur la puce principale elle-même.

Le Pentium possède par conséquent 64 lignes de données numérotées D0 à D63.

 

La figure suivante présente l'organisation d'ensemble du Pentium II.

L'architecture du Pentium II peut considérée comme trois unités d'exécution qui partagent un bassin d'instructions.
 
L'unité de recherche/décodage (Fetch/Decode Unit) est une unité ordonnée qui a comme entrée les instructions du programme de l'utilisateur provenant du cache d'instructions. Elle les décode en une série de µopératons (µops) qui représentent le flux de données de ce flux d'instructions. La prérecherche d'instructions est spéculative.

L'unité de lancement/exécution (Dispatch/Execute Unit) est une unité non ordonnée, dans le sens qu'elle n'exécute pas forcément les instructions dans l'ordre où elle les reçoit. Elle reçoit le flux de données et ordonnance l'exécution des µops selon les dépendances entre les données et la disponibilité des ressources. Elle enregistre ensuite temporairement le résultat de ces exécutions spéculatives.

L'unité de Complétion (Retire Unit) est une unité ordonnée. Elle détermine quand il faut retirer ces résultats temporaires et spéculatifs pour les "commettre" à l'état architectural permanent.

L'interface de bus est une unité partiellement ordonnée, responsable de relier les trois unités internes au monde réel. Elle communique directement avec le cache de niveau 2 (L2) et supporte jusqu'à quatre accès de cache simultanés.

 

Unité de recherche/décodage d'instructions
 
 
Le cache d'instructions est le cache interne de niveau L1 du processeur. L'unité IP_Suivant fournit l'index de cache d'instruction, en se basant sur des entrées du Tampon de cible de branchement, de l'état de trappe/interruption et d'indications d'erreur de prédiction de branchement provenant de la section d'exécution d'entiers.

L'unité cache d'instructions charge une ligne de cache correspondant à l'index provenant de l'unité IP_Suivante, ainsi que la ligne suivante, et présente 16 octets alignés au décodeur. Les octets préchargés sont présentés justifiés aux décodeurs d'instructions. Le début et la fin des instructions sont marqués.

Trois décodeurs parallèles acceptent ce flux d'octets marqués et chargent et décodent les instructions qui y sont contenues. Le décodeur convertit les instructions en µops triadiques (deux sources logiques et une destination logique par µop). La plupart des instructions sont converties directement en µops individuels. Certaines prennent de 1 à 4 µops et les instructions complexes exigent du microcode.

 

 

 Unité de lancement/exécution
 
 
L'unité de lancement choisit des µops dans le bassin d'instructions dépendant de leur statut. Si le statut indique qu'une µop a tous ses opérandes, alors l'unité de lancement vérifie si les ressources nécessaires à l'exécution de cette µop sont disponibles. Si ces deux conditions sont satisfaites, le Poste de Réservation enlève cette µop du bassin et l'envoie à la ressource, où elle sera exécutée. Les résultats de la µop sont ensuite retournés au bassin. Il y a cinq ports dans le Poste de Réservation, et les multiples ressources sont indiquées dans la figure.
 

 

Unité de retrait
L'unité de retrait vérifie le statut des instructions dans le bassin d'instructions. Elle cherche des µops qui ont été exécutées et qui peuvent être retirées du bassin. Une fois enlevée, la cible originale de la µop est écrite comme dans l'instruction originale. L'unité de retrait doit non seulement vérifier quelles µops sont complètes, elle doit également leur réimposer l'ordre d'exécution original. Elle doit par surcroît effectuer cette opération en dépit d'interruptions, de trappes, de fautes, de points d'arrêt et d'erreur dans les prédictions de branchements.

L'unité de retrait doit d'abord lire le bassin d'instructions pour trouver des candidats potentiels pour le retrait et déterminer lesquels parmi ces candidats sont les suivants dans l'ordre d'exécution du programme original. Elle écrit ensuite le résultat des retraits du cycle en cours dans la banque de registres de retrait (RRF). L'unité de retrait est capable de retire 3 µops par cycle d'horloge.
 

 

Unité d'interface de bus
 
 
 
Il y a deux types d'accès mémoire : les lectures et les écritures. Les écritures n'ont besoin de spécifier que l'adresse mémoire à accéder, la taille des données à lire et le registre destination. Les lectures sont codées dans un µop unique.

Les écritures doivent fournir une adresse mémoire, la taille des données et les données à écrire. Elles exigent donc deux µops, l'une pour générer l'adresse et l'autre pour générer les données. Ces µops devront plue tard être recombinées pour que l'écriture soit complète.

Les écritures ne sont jamais effectuées de façon spéculative, étant donné qu'il n'y a pas de moyen transparent de les annuler. Les écritures ne sont de plus jamais réordonnées entre elles. Une écriture n'est lancée que quand l'adresse et les données sont disponibles et qu'il n'y a pas d'autres écritures plus anciennes qui attendent d'être lancées.

Le tampon de réordonnancement mémoire permet aux lectures de dépasser d'autres lectures et des écritures en agissant comme un poste de réservation. Il garde les lectures et écritures en suspens et les relance quand une condition de blocage (dépendence de données ou ressource non disponible) diparaît.
 

 

Pipeline
 
Durant chaque cycle d'horloge, un maximum de trois macro instructions peuvent être décodées à l'étage ID1.Cependant, si les instructions sont complexes ou s'étendent sur plus de 7 octets, alors le décodeur se limite à décoder moins d'instructions.  Les décodeurs peuvent décoder :
1. Jusq'à trois macro-instructions par cycle d'horloge.
2. Jusqu'à six micro-ops par cycle d'horloge.
3. Des macro-instructions d'une longueur pouvant atteindre sept octets.
Les processeurs Pentium II ont trois décodeurs dans l'étage de pipeline D1. Le premier décodeur est capable de décoder des macro-instructions de quatre µops ou moins dans chaque cycle d'horloge. Les deux autres décodeurs peuvent décoder chacun une macro-instruction de 1 µop par cycle d'horloge. Les instructions composées de plus de quatre µops seront décodées en plusieurs cycles.
 

 

La figure suivante présente un organigramme d'ensemble du Pentium II.
 

Les registres du Pentium II

 

 

Registres de virgule flottante du Pentium

 


Les registres de virgule flottante du Pentium sont des registres de 80 bits : 1 bit de signe, 15 bits pour l'exposant biaisé de 16383 et 64 bits de mantisse.
 

Registres MMX

Les 8 registres de virgule flottante peuvent également servir de registres de 64 bits pour les instructions Multimedia MMX. Ils portent alors le nom MM0 à MM7.


Registres SIMD

Ces mêmes 8 registres peuvent servir pour les instructions Streaming SIMD Extension du Pentium III et du Pentium IV. Ils ont alors 128 bits et portent le nom XMM0 à XMM7.

 

Dernière mise à jour : 2000-09-28