Plan Copyright © F. Muller 2004 Ch1 - Introduction Ch2 - Structure de l’ordinateur Ch3 - Modèle de Programmation Ch4 - Conception des Processeurs Ch5 - Pipeline Ch6 - Parallélisme d’instructions Ch7 - Systèmes Mémoire Ch8 - Mémoires Caches Ch9 - Mémoire Virtuelle Ch10 - Systèmes Multiprocesseurs Architecture de l’ordinateur - Conception des Processeurs Ch4 - 1 - Conception des Processeurs Introduction Architecture de jeu d’instruction Microarchitecture des processeurs Copyright © F. Muller 2004 Ch4 - 2 - Introduction Objectifs Différencier l’architecture du jeu d’instruction et la microarchitecture Différencier les jeux RISC et CISC Modes d’adressage Conception des Processeurs : 2 parties Architecture du jeu d’instruction Microarchitecture Copyright © F. Muller 2004 ISA : Instruction Set Architecture Conception du jeu d’instruction Choix du modèle de programmation Nombre de registres Méthodes d’accès aux données Manière dont les instructions sont implémentées Durée d’exécution des instructions Le nombre d’instructions exécutables en une fois Conception du fichier de registres Architecture de l’ordinateur - Conception des Processeurs Ch4 - 3 - Architecture du jeu d’instructions (ISA) Histoire … Au départ des ordinateurs La programmation se faisait essentiellement en assembleur L’architecture des jeux d’instructions était la plus importante composante de l’architecture Les performances étaient très dépendantes de l’architecture du jeu d’instruction Au fil des années L’architecture du jeux d’instruction est moins importante Copyright © F. Muller 2004 Utilisation des langages de haut niveau (indépendant de l’assembleur) Compatibilité du jeu d’instruction entre les générations de processeurs (ajout de quelques instructions) Performance = amélioration de la microarchitecture Architecture de l’ordinateur - Conception des Processeurs Ch4 - 4 - Architecture du jeu d’instructions (ISA) RISC et CISC (1/2) Dans les années 1980, essayer de rapprocher l’assembleur, des langages de haut niveau 1980-90 : L’architecture CISC est-elle la meilleure ? Construire une jeu d’instructions très complexes CISC : Complex Instruction Set Computers Programme réduit Traduction facilité pour les compilateurs Existence du jeu RISC (Reduced Instruction Set Computers) Exécution à fréquence plus élevée Convergence entre les architectures RISC et CISC RISC CISC Copyright © F. Muller 2004 Architecture du type Store/Load Ajout d’instructions complexes très utilisées L’instruction add (r1), (r2), (r3) => 3 accès mémoire Abandon d’instructions trop complexes Architecture de l’ordinateur - Conception des Processeurs Ch4 - 5 - Architecture du jeu d’instructions (ISA) RISC et CISC (2/2) Exemple Instruction CISC : add (r1),(r2),(r3) (r1) <- (r2) + (r3) Quelle est la traduction dans un jeu RISC ? CISC ADD (r1),(r2),(r3) - Attendre que tous les registres soient chargés Copyright © F. Muller 2004 RISC LD LD ADD ST r4,(r2) r5,(r3) r6,r4,r5 (r1),r6 - Ordonnancement des instructions plus facile Architecture de l’ordinateur - Conception des Processeurs Ch4 - 6 - Architecture du jeu d’instructions (ISA) Modes d’adressage (1/3) L’adressage de registres « (rx) » Chargement / Stockage / instruction CISC Suffisant en théorie pour adresser la mémoire L’adressage par étiquette branchement Spécifie l’adresse destination Plus couramment, spécifie un déplacement positif ou négatif qui fait référence au CO Vocabulaire Copyright © F. Muller 2004 Réduit le nombre de bits pour le codage de l’instruction Programme portable (exemple: bibliothèque dynamique) Architectures orthogonales : les instructions peuvent utiliser n’importe quels modes d’adressage Architecture de l’ordinateur - Conception des Processeurs Ch4 - 7 - Architecture du jeu d’instructions (ISA) Modes d’adressage (2/3) Exemple 1 Codez « BR label1 » en considérant que le décalage de l’instruction est 0x437 octets CAS 1 : L’instruction est chargée en 0x4000 CAS 2 : L’instruction est chargée en 0x4400 Quel est l’adresse cible du branchement dans les 2 cas ? CAS 1 : 0x4000 + 0x437 = 0x4437 CAS 2 : 0x4400 + 0x437 = 0x4837 Exemple 2 Si la valeur de r4 est 0x13000, quelle adresse est référencée par l’instruction LD -0x80(r4) ? 0x13000 - 0x80 = 0x12F80 Copyright © F. Muller 2004 Architecture de l’ordinateur - Conception des Processeurs Ch4 - 8 - Architecture du jeu d’instructions (ISA) Modes d’adressage (3/3) L’adressage basé « imm(rx) » Additionne la valeur du registre avec la valeur immédiate (constante) sans modifier le registre Accès à des éléments d’une structure L’adressage postincrémentiels « imm[rx] » 2 étapes Parcours/Copie de tableaux, … Exemple Convertissez la séquence en utilisant le mode d’adressage basé LD LD ST Copyright © F. Muller 2004 Accès à la mémoire à l’adresse pointée par le registre Rx = Rx + imm r4,8(r1) r5,12(r1) 16(r1),r8 MOV ADD LD LD ST r1,#0 r1,r1,#8 r4,4[r1] r5,4[r1] 16(r1),r8 Architecture de l’ordinateur - Conception des Processeurs Ch4 - 9 - Architecture du jeu d’instructions (ISA) Instructions vectorielles multimédia (1/3) Objectifs Exemple extension MMX de l’ISA x86 Principe Copyright © F. Muller 2004 Améliorer la performance des applications multimédia Lecture / Compression vidéo Réalise la même séquence d’opérations sur un grand nombre d’objets de donnée indépendants (blocs de 8x8 pixels compressés) Paralléliser le traitement de donnée Évite le gaspillage sur le traitement d’une UAL de 32 ou 64 bits car le donnée sont généralement sur 8 bits (RVB) Architecture de l’ordinateur - Conception des Processeurs Ch4 - 10 - Architecture du jeu d’instructions (ISA) Instructions vectorielles multimédia (2/3) Principe (suite) Le registre de 32 bits est traité comme un ensemble d’éléments de 4 octets ou 2 mots Le registre peut être sur 64 bits ,128 bits voire plus et permet de paralléliser encore plus Mot de donnée 32 bits Traité comme 8 bits 8 bits 16 bits Copyright © F. Muller 2004 8 bits 8 bits 16 bits Architecture de l’ordinateur - Conception des Processeurs Ch4 - 11 - Architecture du jeu d’instructions (ISA) Instructions vectorielles multimédia (3/3) Arithmétique saturée Pourquoi ? Les calculs qui dépassent le nombre de bits de leur représentation retournent la valeur maximale autorisée Les calculs en dépassement négatif retournent 0 Par exemple, l’augmentation d’une pixel rouge doit donné une pixel extrêmement rouge et non pas retomber à une petite valeur Exemple 0xa0 0xd3 0x90 0x18 0x17 0x1e 0x92 0x37 0x7b 0xf1 0x22 0x4f Pas de propagation de retenue entre les mots de 8 bits Copyright © F. Muller 2004 Architecture de l’ordinateur - Conception des Processeurs Ch4 - 12 - Architecture du jeu d’instructions (ISA) Instruction MAC (Multiply and ACcumulate) Objectif : Exécuter l’opération A = (B x C) + D Cas du processeur 68000 10 cycles d’horloge pour effectuer une addition 70 cycles d’horloge pour effectuer une multiplication TOTAL : 80 cycles !! Cas des DSP (Digital Signal Processor) 1 cycle un DSP de gamme moyenne effectue une opération MAC sur des données de 16 bits en moins de 25 ns soit 40 000 000 opérations par seconde. Signal Original Filtre passe-bas Signal Traité Mémoire Conversion Analogique/Numérique DSP Conversion Numérique/Analogique Filtre passe-bas E/S Copyright © F. Muller 2004 Architecture de l’ordinateur - Conception des Processeurs Ch4 - 13 - Architecture du jeu d’instructions (ISA) Codages d’instructions Recherche du codage du jeu d’instruction Jeu d’instruction à longueur fixe Utilise le même nombre de bits pour coder chaque instruction Avantages : Simple à décoder, prédire l’emplacement de la prochaine instruction, facilite l’utilisation du pipeline Jeu couramment utilisé aujourd’hui Jeu d’instruction à longueur variable Copyright © F. Muller 2004 Codage compact Facile à décoder Faire un compromis Le nombre de bits varie en fonction de l’instruction Avantage : optimise l’espace mémoire Inconvénient : complexifie la logique de décodage, prédiction de l’emplacement de la prochaine instruction possible à la fin du décodage de l’instruction courante Adapter aux architectures à pile Architecture de l’ordinateur - Conception des Processeurs Ch4 - 14 - Microarchitecture des processeurs L’architecture du jeu d’instruction spécifie la manière dont le processeur est programmé TANDIS QUE la microarchitecture spécifie sa manière d’être construit. Données vers la mémoire Données de la mémoire Données vers la mémoire Logique de contrôle Banc de Registres Unités Entiers Copyright © F. Muller 2004 Instruction de la mémoire Unités Virgules flottante Processeur Architecture de l’ordinateur - Conception des Processeurs Ch4 - 15 - Microarchitecture des processeurs Unité d’exécution Recherche instruction Prise en charge de l’instruction Système mémoire Instruction Instruction Décodage de l’instruction Instruction décodée ID des registres d’entrée de l’instruction Lecture du registre Instruction décodée et valeurs des registres d’entrée Exécution Valeurs des registres d’entrée Fichier de registres Résultat de l’instruction Écriture Copyright © F. Muller 2004 Résultats de l’instruction Architecture de l’ordinateur - Conception des Processeurs Ch4 - 16 - Microarchitecture des processeurs Microprogrammation Processeur micro programmé N’exécute pas directement les instructions de l’ISA Effectue des micro opérations très simples En pratique, l’instruction est convertie en un court programme de micro instruction Exemple : ADD r1,r2,r3 3) addition 5) incrémenter C0 Les processeurs micro programmés contiennent de petites mémoires intégrant les séquences de micro instructions Cette microarchitecture n’est plus utilisée aujourd’hui Copyright © F. Muller 2004 1) lire r2 2) lire r3 4) écrire résultat dans r1 6) instruction suivante Implémentation de l’ISA en matériel devenue plus facile grâce à l’avancée technologique Moins bonnes performances dû à l’extraction de chaque micro-instruction Architecture de l’ordinateur - Conception des Processeurs Ch4 - 17 - Microarchitecture des processeurs Fichier de registres Séparation du fichier de registres pour les valeurs entières (rx) et flottantes (fx) Pourquoi ? Rapproche physiquement les fichiers de registres des unités d’exécution qui en ont besoin Diminution de la longueur des fils, donc augmentation des performances Les fichiers distincts prennent moins de place sur les processeurs qui exécutent plusieurs instructions par cycle Copyright © F. Muller 2004 La taille d’un fichier de registre augmente proportionnellement au carré du nombre de lectures et d’écritures simultanées Pour exécuter une instruction/cycle, il faut 2R/1W. Donc, chaque instruction supplémentaire exécutée dans un cycle augmente de 3 le nombre de R/W simultanées. Conclusion: en séparant le fichier de registres en valeurs entières et flottantes, on diminue la taille globale des fichiers Architecture de l’ordinateur - Conception des Processeurs Ch4 - 18 - Synthèse RISC / CISC Modes d’adressage Codage généralement fixe Fonctionnement d’une Microarchitecture Copyright © F. Muller 2004 (rx), label, déplacement par rapport au CO Imm(rx), Imm[rx] Codage des instructions Convergence entre les architectures RISC et CISC Unité d’exécution Microprogrammation Fichier de registres Architecture de l’ordinateur - Conception des Processeurs Ch4 - 19 -