Cours Architecture avancée CHAPITRE I: Introduction aux architectures des microprocesseurs • Processeur • Architecture interne • Architecture van Neuman • Architecture Harvard • Traitement des instructions • Mode d’adressage • Architecture RISC et CISC • Architecture RISC • Mémoire cache • Interruption • MMU Microprocesseur ? Processeur CALCULE ET TRAITEMENT DES DONNEES Elément de base est le transistor : (interrupteur) La technologie CMOS (complementary metal-oxide semiconducteur) Transistor de type N Transistor de type P Architecture interne Eléments principaux : BUS D’ADRESSES o Unité de commande o Unité de traitement Programme Unité de traitement Unité de commande données BUS DES DONNEES Architecture interne UNITE DE COMMANDE Rôle BUS D’ADRESSES • Effectuer la recherche en mémoire instructions • Décoder l’instruction codée sous forme binaire • Commander l’exécution de l’instruction PC Séquenceur Composition • Compteur du programme • Registre d’instruction et décodeur d’instruction • Séquenceur Registre d’instruction Décodeur d’instruction Architecture interne UNITE DE TRAITEMENT Rôle • Assurer les traitements nécessaires à l’exécution des instructions ACC Registre d’état Composition • Accumulateur (stockage des opérande et résultat d’opération) • Unité arithmétique et logique (UAL) UAL • Registre d’état (Flag) (stockage résultat des test) OV =Overflow Flag C = Carry Flag Z = Zero Flag S = Sign Flag P = Parity Flag Registre Données Architecture interne registres UAL : Unité Arithmétique et Logique barrelshifter • Commander par le séquenceur • Calcule arithmétique (addition, soustraction….) • Opération logiques (xor, And, Nand……..) • Décalages de bit (barrelshifter) Opération plus spécifique UAL ov c z flag s p Unité d’exécution arithmétique et logique • Multiplication-accumulation (DSP) • ALU + Multiplication en réel ( unité FPU) (ARM) • Calculs vectoriels c0 c1 c2 c0 Accumulateur Architecture interne ARCHITECTURE COMPLETE Architecture Von Neuman BUS D’ADRESSES Mémoire instruction et données CPU BUS DES DONNEES • les Instructions et les données sont stocker dans la même mémoire • Un seul chemin d’accès à la mémoire ** Un bus de données (programme et données) ** Un bus d’adresse (programme et données) • Utiliser pour le traitement des données Architecture Harvard Bus D’adresse BUS DES DONNEES Mémoire instructions CPU Bus D’adresse Mémoire données BUS DES DONNEES • Séparation de la mémoire instructions et la mémoire données • Bus des instruction et des données sont séparés • Permet une meilleur utilisation CPU; accès rapide et débit élevé Architecture utilisée dans tous les processeurs performants Traitement des instructions Instruction ? • effectuer des opérations sur les données et des saut de programme. • composer d’un : *** Code opération: code binaire présente l’action à effectuer par le processeur *** Champ opérande: donnée ou bien adresse de la donnée Exemple: ADD A, #10 Code opération instruction d’addition champ opérande La taille d’instruction dépend de l’architecture du processeur Traitement des instructions • Le langage assembleur est le plus proche du langage machine. • Chaque processeur (famille de processeurs) possède son propre langage assembleur. Langage haut niveau ( langage C, C++, java, python…) compilation Langage assembleur (add, mov, sub, cmp…..) assemblage Langage machine (0001 1101, 11101100…….) Traitement des instructions Recherche de l’instruction en mémoire • Par l’émis d’un ordre de lecture par l’unité de commande, la valeur de PC est positionné sur le bus d’adresse • Après le temps d’accès à la mémoire, l’instruction sélectionné est transféré sur le bus des données • stockage de l’instruction dans le registre d’instruction et la décodée par le décodeur d’instruction Traitement des instructions Décodage et recherche de l’opérande • L’unité de commande transforme l’instruction en une suite de commandes élémentaires nécessaires au traitement de l’instruction • Si l’instruction nécessite une donnée en provenance de la mémoire, l’unité de commande récupère sa valeur sur le bus de données • L’opérande est stocké dans le registre de données Traitement des instructions Exécution de l’instruction • Le séquenceur commande l’exécution de l’instruction • Les drapeaux sont positionnés • Le PC est positionné pour l’instruction suivante Traitement des instructions Type d’instruction Traitement • opérations arithmétiques et logiques (add, sub, mul, and ,xor…..) Transferts des données avec la mémoire • load, store (rechargement et stockage dans la mémoire) Contrôle • Branchements • branchements aux sous programmes • Sauvegarde automatique de l’adresse de retour en « PILE » Système • Interruptions logicielles ( permettre au processeur d’utiliser un autre mode « multi-tâches » ) Coprocesseur • Instructions spécifiques à un opérateur extérieur « coprocesseur » Mode d’adressage • Les mode d’adressage présente les manières de définir la localisation d’un opérande ****Adressage immédiat (valeur immédiat) Exemple: ADDA , #4 ****Adressage direct ( adresse de la donnée) Exemple: ADDA , adresseX ****Adressage indirect Exemple: ADDA , @adresseX ( adresse d’une adresse donnée) Performance des processeurs • • • • • • • • Langage utilisé ( assembleur, c, java….) Style de codage Compilation Jeu d’instruction (8, 16/32/64bits) CPI (nb de cycle /instruction) MIPS (Puissance de traitement du processeur: MIPS=FH/CPI ) Fréquence d’horloge Mémoire cache Architecture RISC et CISC • Deux architectures sont disponible : Architecture RISC (Reduced Instruction set computer) Architecture CISC (Complex Instruction set computer) • • • • • • • • Instruction simple (1cycle) Instruction au format fixe Décodage simple Beaucoup de registres Peu de modes d’adressage Compilateur complexe 2 instructions pour l’accès à la mémoire Load, stor Utilise une mémoire locale rapide (cache) pour accélérer le traitement • MIPS, Alpha, power pc, sparc • • • • • • • Instruction complexe (plusieurs cycle d’horloge) Instruction au format variable Décodage complexe Peu de registres Beaucoup de modes d’adressage Compilateur simple IBM360, Vax, Intel X86 Architecture RISC • Cycle d’exécution d’une instruction RISC: Registre d’instruction Décodage séquenceur Stockage en mémoire Fetch (lecture d’instruction en mémoire) Decode (Extraire du code de l’instruction les différentes informations (type d’opération , registres accédés Execute (exécuter l’opération) Architecture RISC PIPE LINE • Technique qui permet d’ exécuter plusieurs instruction au même temps • Découper l’instruction en petits morceaux ( appelés étage pipe line ) • Paralléliser les étapes d’exécution • Débit d’instruction élevé avec le même temps d’exécution • Augmenter la puissance (nb de cycle par instruction réduit ) • Consommation réduit Architecture RISC Rupture PIPE LINE • Lier à deux cause principale: ** d’ accès à la mémoire (load, store) • retard ** d’utilisation de bus • Branchement : les instructions qui suives le branchement seront perdues • Appel à un sous programme • Interruption La solution c’est d’organiser le code MÉMOIRE mémoire a semi-conducteur ROM RAM EEPROM, FLASH : basée sur les transistors à grille flottante SRAM : CMOS ROM • • • • EPROM OTP SRAM EEPROM ROM (Ecriture1) FLASH (Plusieurs Ecriture) DRAM La mémoire stocke 2n mots de m bits Un seul mot est accédé à la fois Chaque mot est associé à une adresse Synchroniser par un signal d’horloge Non volatiles: NVRAM MRAM FRAM Holographique .. DRAM : capacité grille d'un transistor MOS MÉMOIRE Caractéristiques techniques Les principales caractéristiques d'une mémoire sont les suivantes : • Adresse : c'est la valeur numérique désignant un élément physique de mémoire •Capacité ou taille : c’est le volume global d'informations (en bits) que la mémoire peut stocker •Temps d'accès : c'est le temps qui s'écoule entre le lancement d'une opération d'accès (lecture ou écriture) et son accomplissement. •Temps de cycle : c'est le temps minimal s'écoulant entre deux accès successifs à la mémoire. Il est plus long que le temps d'accès. •Débit : c'est le nombre d'informations lues ou écrites par seconde •Volatilité : elle caractérise la permanence des informations dans une mémoire. Une mémoire volatile perd son contenu quand on coupe le courant. RQ: la mémoire idéale possède une grande capacité avec des temps d'accès et temps de cycle très restreints, un débit élevé et est non volatile. MÉMOIRE Hiérarchies de mémoire •Registres : cases mémoire de grande vitesse utilisé pour le stockage des opérandes et des résultats intermédiaires. •Mémoire cache : mémoire rapide de faible capacité utilisée comme mémoire intermédiaire entre le processeur et la mémoire centrale •Mémoire centrale : mémoire lente et de grandes capacités mais elle contient les données et les instructions des programmes Mémoire de masse: mémoire de grande capacité et de coût relativement faible utilisée pour le stockage permanent des informations MÉMOIRE REPRESENTATION DES NOMBRES EN MÉMOIRE •Deux présentations sont possibles: *****Little-Endian: (X86, ARM) Le LSB est placé en premier en mémoire Exp: Adresse mémoire 260=0x0104 *****Big-Endian: (power pc, mips..) Le MSB est placé en premier en mémoire Exp: 00 01 04 01 Adresse mémoire 260=0x0104 00 01 01 04 La mémoire cache Cop Organisation de la mémoire cache MMU FPU Processeur Registre Vitesse: 5ns Mémoire centrale • Contient les données les plus • Contient les programme et le souvent utilisées données en cours d’utilisation • SRAM rapide pour accélérer • Grande capacité faible coût Le processeur est plus rapide que la mémoire centrale. En fait, la mémoire centrale ralentit le processeur l’accès au RAM • SDRAM • Gérer par un contrôleur de cache • 10-20ns • Temps d’accès 1-10ns • Vitesse de transfert >>1GB/s • Vitesse de transfert >>1GB/s • Faible coût • Coût élevé Dispositifs E/S La mémoire cache Bloc ou ligne de cache • L’unité d’information qui constitue une ligne de cache est le bloc • Les bloc sont de 4 à 128octets et ils sont tout de même taille dans un cache donné • La mémoire centrale et la mémoire cache ont les même taille de blocs • Une ligne est le plus petit élément de données qui peut être transférée entre la mémoire cache et la mémoire principale • Un mot est le plus petit élément de données qui peut être transféré entre le processeur et la mémoire cache La mémoire cache Fonctionnement du cache • Le processus fonctionne ainsi : • le microprocesseur demande une information • Le cache vérifie s'il possède cette information: ****S'il la possède, il la retransmet au microprocesseur; on parle alors de succès de cache (hit). ****S'il ne la possède pas il la demande à la mémoire principale; on parle alors de défaut de cache (miss) • La mémoire traite la demande et renvoie la réponse au cache • Le cache la stocke pour utilisation ultérieure et la retransmet au microprocesseur. RQ: La fréquence des succès (hit rate) dépend de la taille de la cache et de l’algorithme exécuté par le contrôleur de cache Début Processeur génère l’adresse AD Recherche le bloc dans le cache Non Trouvez bloc à remplacer Copier RAM vers cache Transfert vers µp fin Oui La mémoire cache Principe du cache Localité spatiale: • Accéder aux données qui sont proches de celles récemment utilisées (prendre les données adjacentes) Localité temporelle: • Réutiliser des données récemment utilisées (prendre la même donnée) La mémoire cache Principe du cache Deux utilisations : • suite à un miss, le cache lit un nouveau mot en mémoire et le stocke localement, pour plus tard • si le cache est plein, un des mots qu'il contient doit être évincé pour faire de la place Si on a le choix du mot à remplacer: lequel choisir ? Plusieurs politiques d'éviction sont envisageable : • FIFO : on remplace le mot le moins récemment chargé dans le cache • LRU (Least Recently Used) : on remplace le mot le moins récemment accédé dans le cache • LFU (Least Frequently Used) : on remplace le mot le moins fréquemment utilisé dans le cache La mémoire cache Le mapping •Méthode présente la location d’une ligne de la mémoire centrale dans le cache: *** Cache complétement associatif *** Cache directe *** Cache N- associatif La mémoire cache Le mapping (Cache complétement associatif) • Le Bloc est placé à n’importe quelle adresse de la mémoire cache • utilisée que dans les mémoires cache de petite taille La mémoire cache Le mapping (Cache direct) • Chaque ligne de la mémoire principale ne peut être enregistrée qu'à une seule adresse de la mémoire cache. • L'index correspond à la ligne où est enregistrée la donnée. • le contrôleur de la mémoire cache doit savoir si une ligne contient une donnée ou non. • Un bit additionnel (appelé bit de validité) indique si la ligne est libre ou non Défauts de cache conflictuels si le programme accède à des données qui sont mappées sur les mêmes adresses de la mémoire cache. La mémoire cache Le mapping (Cache N-associatif) • Combinaison entre le cache purement associatif et le cache directe. • La mémoire cache est divisée en ensembles (sets) de N lignes de cache. • Une ligne de la mémoire de niveau supérieur est affectée à un ensemble, elle peut par conséquent être écrite dans n'importe laquelle des voies. • À l'intérieur d'un ensemble, le mapping est complètement associatif. Eviter le défaut de cache conflictuels La mémoire cache Cache Unifiés • Données et instructions sont enregistrées dans la même mémoire cache CPU Cache d’instruction Et données La mémoire cache Cache d’instructions/Cache de données • Mettre les instructions et les données dans des cache séparés: Recherche instruction Cache d’instruction L1 Décoder Recherche registre AVANTAGE: • Pas de conflit d’accès • Pas besoin d’avoir 2 ports sur le cache • d'augmenter la fréquence de fonctionnement du processeur Exécute Ecrit registre Load/store Cache données L1 En cas de miss, bloquer le signal d’horloge jusqu’à la résolution du miss La mémoire cache Niveaux de cache Recherche instruction Cache 2 L2 Décoder Cache d’instruction L1 Recherche registre Exécute Ecrit registre Exp: multicores Intel : Caches L1 et L2 internes au processeur Cache données L1 • • Cache première niveau intégré dans le processeur • Cache petits et rapide • exp: 32Ko, latence 2cycles Mémoire centrale ou cache L3 (externe) Taille plus grand Cache deuxième niveau L2 peut être interne au processeur ou externe • Cache plus gros et plus lent • exp: 1Mo, latence 10cycle La mémoire cache Défauts de cache •Il existe trois types de défauts de cache en système monoprocesseur et quatre dans les environnements multiprocesseurs : •les défauts de cache obligatoires : ils correspondent à la première demande du processeur pour une donnée/instruction spécifique et ne peuvent être évités. • les défauts de cache capacitifs : l'ensemble des données nécessaires au programme excèdent la taille du cache, qui ne peut donc pas contenir toutes les données nécessaires. • les défauts de cache conflictuels : deux adresses distinctes de la mémoire de niveau supérieur sont enregistrés au même endroit dans le cache et s'évincent mutuellement, créant ainsi des défauts de cache. •les défauts de cache de cohérence : ils sont dus à l'invalidation de lignes de la mémoire cache afin de conserver la cohérence entre les différents caches des processeurs d'un système multiprocesseurs. Accès Direct à la Mémoire (DMA) Introduction Le système doit récupérer des données en provenance de ces périphériques externes. Plusieurs méthodes sont possibles : •Une méthode polling: permet d’interroger régulièrement les périphériques afin de savoir si une nouvelle donnée est présente. •Une méthode par interruption permet au périphérique lui-même de faire signe au processeur de sa présence. •Une méthode par Accès Direct à la Mémoire (DMA) permet de gérer le transfert de façon autonome Accès Direct à la Mémoire (DMA) Exemple de périphérique E/S Dispositifs matériels permettant d’assurer les échanges d’informations en entrée et en sortie entre le processeur et l’extérieur ou de stocker de manière permanente des informations •RS-232 : standard (Electronic Industries Association) pour la communication série asynchrone point à point entre deux équipements •UART (Universal Asynchronous Receiver Transmitter) : Périphérique gérant la transmission (émission et réception) Accès Direct à la Mémoire (DMA) Interruption et DMA •Interruptions – transferts asynchrones – pas d ’attente active du CPU – mais intervention du CPU à chaque transfert de donnée libère CPU de l’attente d’événements et fournis un contrôle d’E/S extérieur Accès Direct à la Mémoire (DMA) Interruption et DMA •Comment le processeur identifie le périphérique demandant une interruption? • Que se passe t-il si une interruption arrive alors que le processeur en traite déjà une autre? •Que se passe t-il si plusieurs interruptions arrivent en même temps? Priorité? Accès Direct à la Mémoire (DMA) Interruption et DMA • Comment l’ordinateur identifie le périphérique demandant une interruption? **Scrutation **Interruption “vectored” Accès Direct à la Mémoire (DMA) Interruption et DMA • Que se passe t-il si plusieurs interruptions arrivent en même temps ? Accès Direct à la Mémoire (DMA) Interruption et DMA •Le Mécanisme d’interruptions est efficace: ***Si le processeur n’ utilise pas un temps important dont l’exécution et le contrôle de programme d’interruption. ( exp: clavier , RS-232) Accès Direct à la Mémoire (DMA) (exp: carte son, vidéo, réseau…) Accès Direct à la Mémoire (DMA) Une méthode par Accès Direct à la Mémoire (DMA) •DAM est une technique matérielle qui facilite les échanges de données entre le microcontrôleur, ou le microprocesseur, et le monde extérieur •Des données vont pouvoir être échangées entre la mémoire centrale et les circuits périphériques sans intervention du CPU •Un sous-système indépendant du CPU va transférer les données du circuit périphérique vers la mémoire (entrée) ou de la mémoire vers le circuit périphérique (sortie) Accès Direct à la Mémoire (DMA) Fonctionnement du DMA •Le sous-système de DMA va être configuré et démarré par le CPU (identifier le périphérique concerné, le sens du transfert, l’adresse en mémoire centrale du premier mot à transférer et le nombre de mots concernés par l’échange) • Les données vont être échangées via des cycles de lecture ou d ’écriture en mémoire initiés par le sous-système de DMA. •Lorsque les opérations seront terminées le sous-système de DMA va interrompre le CPU Avantages • Le processeur peut exécuter autre programme • Le transfert des données peut être plus rapide Accès Direct à la Mémoire (DMA) Sous système de DMA • un registre d ’adresse qui va contenir l ’adresse où les données doivent être placées ou lues en mémoire • un compteur qui compte le nombre de données échangées • un registre où les données vont transiter entre la mémoire et le circuit périphérique Accès Direct à la Mémoire (DMA) Mode d ’accès à la mémoire •Le sous-système de DMA doit accéder à la mémoire comme le CPU pour faire ces accès, il prend le contrôle du bus (utilisation des mécanismes d ’arbitration du bus) •Rafale (Burst) : Le bloc de données est transféré en une seule fois. Une fois que le contrôleur de DMA a accès au bus, il le conserve pendant tout le transfert. Le processeur ne peut pas faire d’accès mémoire pendant ce temps •Vol de cycle (Cycle Stealing) : Le processeur et le contrôleur de DMA se partagent alternativement le bus (uncycle pour le processeur, un pour le contrôleur de DMA) •Transparent : Le contrôleur de DMA n’a accès au bus que lorsque le processeur n’en a pas besoin Accès Direct à la Mémoire (DMA) REGISTRE DMA •Du point de vue du processeur, un périphérique peut donc être assimilé à un ensemble de “cases” mémoires, appelées registres •Le contenu de ces registres peuvent correspondre à des données, à l’état, la configuration ou les commandes du périphérique •Ces registres sont indexés par une adresse Pour dialoguer avec le périphérique, le processeur fait des lectures et des écritures dans ces registres Accès Direct à la Mémoire (DMA) Registres de contrôle du DMA ** INTx : Contrôle des interruptions ** SSIZE: taille des données sources ** ECO: External Control Option ** DSIZE: taille des données destination Single-Address Mode - direction du transfert (lecture ou écriture) S/D: mode à une ou deux adresses ** S/D: mode à une ou deux adresses Dual-Address Mode - détermine dans quelle phase le DMA intervient (lecture ou écriture) ** STR: démarrage et arrêt du DMA ** SAPI : contrôle de l ’incrément du pointeur source ** DAPI : contrôle de l ’incrément du pointeur destination Accès Direct à la Mémoire (DMA) Registre d ’état du DMA IRQ = fin des transferts DONE = fin sans erreur BES = erreur bus à la source BED = erreur bus à la destination CONF = erreur de configuration BRKP = point d ’arrêt rencontré Accès Direct à la Mémoire (DMA) Signaux d'interface •DREQx Requête de DMA: utilisé par le circuit périphérique pour demander un transfert de donnée • DACKx Acquiescement: réponse du sous-système de DMA pour activer le transfert • DONEx Accès terminé: indique le dernier transfert d'une opération de DMA Accès Direct à la Mémoire (DMA) • Exemple processeur avec un système DMA Accès Direct à la Mémoire (DMA) • Exemple d’un processeur avec 2 système DMA (interface esclave maitre) Application1: Soit une architecture 32 bits. Un cache direct- mapped assez grand pour contenir un tableau de 1024 flottants double précision. Les lignes font 64oct Quelle est la capacité du cache et déterminer le nombre de ligne? Application 2: Supposons un programme compose d'une boucle de 10 instructions. Supposons également que la moitie des instructions se trouvent en mémoire cache et l'autre moitie en mémoire centrale. Si le temps d'accès au cache est de 5 ns et celui de la mémoire centrale est de 20 ns, calculez le temps global d'exécution du programme Application 3: Supposons que le temps d'accès au cache est de 5 ns, et que le temps d'accès à la mémoire centrale est de 100 ns. Si le temps d'exécution d'un programme est de 95 ns, dans quelle mémoire se trouvent ces instructions? Et quel est le nombre total des instructions du programme? Mémoire virtuelle Définition • C’est un ensemble des emplacements dont l’adresse peut être engendrée par le processeur. La mémoire virtuelle sert à augmenter artificiellement la mémoire vive. elle permet : •d'utiliser la mémoire de masse comme extension de la mémoire vive •d'augmenter le taux de multiprogrammation •de mettre en place des mécanismes de protection de la mémoire •de partager la mémoire entre processus. Mémoire virtuelle • Translation d’adresse • Taille mémoire virtuelle est plus élevée que la taille de la mémoire physique • Protection des données => mode multiprogrammation Mémoire virtuelle • • • • Mémoire partitionnés en blocs : Pages (virtuel ) Frames (pages physique) Offset ( déplacement) inchangé Numéro de page translaté en numéro de frame Mémoire virtuelle Principe de fonctionnement Mémoire virtuelle