1 Ivan Boule CNAM 07/08 Rappels Architecture des Ordinateurs 2 Ivan Boule CNAM
1 Ivan Boule CNAM 07/08 Rappels Architecture des Ordinateurs 2 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 3 Ivan Boule CNAM 07/08 Architecture Von Neumann (1) Mémoire contient instructions et données CPU lit les instructions depuis la mémoire Chargement d'un programme en mémoire Instructions manipulées comme des données Programmes peuvent s'auto-modifier CPU Mémoire Bus d'adresses Bus de Données 4 Ivan Boule CNAM 07/08 Architecture Von Neumann (2) PC = @ prochaine instruction à exécuter SP = adresse du sommet de pile Registres généraux de calcul Registre d'état Bits de conditions (Z, LT, GT, etc.) Modes d'exécution Niveau de protection (user/supervisor) Adressage physique/virtuel Masque des interruptions PC Memory Interrupt Controller CPU S ST 0x00000208 SP Saved PC Saved ST Saved SP I/O Device Controller Address Bus Data Bus I IRQ1 interrupt control reg data reg 0x0 NMI entry interrupt entry exception entry 0x4 0x8 0xC SVC entry 0x208 Z 6 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 7 Ivan Boule CNAM 07/08 Unités mémoire Unités adressables octet de 8 bits (char) mot de 16 bits (short) mot de 32 bits (int) mot de 64 bits (long long) Alignement multiple de la taille Non imposé (Intel, PowerPC) mais plus efficace Imposé sinon exception (Sparc) 8 Ivan Boule CNAM 07/08 Représentation alignée struct obj_t { int a; /* 4 octets */ char b; /* 1 octet */ short c; /* 2 octets */ char d; /* 1 octet */ int e; /* 4 octets */ }; struct obj_t obj_var = { 11, 22, 33, 44, 55 }; sizeof(obj_var) = 16 .globl obj_var .data .align 4 .type obj_var, @object .size obj_var, 16 obj_var: .long 11 .byte 22 .zero 1 .value 33 .byte 44 .zero 3 .long 55 9 Ivan Boule CNAM 07/08 Avec attribut "__packed__" struct obj_t { int a; /* 4 octets */ char b; /* 1 octet */ short c; /* 2 octets */ char d; /* 1 octet */ int e; /* 4 octets */ } __attribute__((__packed__)); struct obj_t obj_var = { 11, 22, 33, 44, 55, }; sizeof(obj_var) = 12 .globl obj_var .data .type obj_var, @object .size obj_var, 12 obj_var: .long 11 .byte 22 .value 33 .byte 44 .long 55 10 Ivan Boule CNAM 07/08 Représentation des nombres entiers Entiers dans registres de CPU « Most Significant Bit First » (bit numéro 31) Représentation naturelle pour opérations de base (+ - & | ...) Exemple entier sur 32 bits 0x01023040 (16920640 en décimal) 00000010 00110000 00000001 01000000 31 0 11 Ivan Boule CNAM 07/08 Représentation entiers en mémoire 0x01023040 (16920640) Most Significant Byte first « Big Endian »: PPC, Sparc Least Significant Byte first « Little Endian »: Intel ARM: configurable 01000000 00000001 00000010 00110000 00000010 00110000 00000001 01000000 12 Ivan Boule CNAM 07/08 Echange de Données entre Applications Données échangées Par protocoles réseau Par supports externes (amovibles) Définir taille des valeurs : 8, 16, 32, 64 bits Byte Ordering Imposé : Big Endian des Protocoles Internet Transmis : Endian du CPU émetteur dans premier octet d'entête des messages Eviter problèmes d'alignement 13 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 14 Ivan Boule CNAM 07/08 CISC versus RISC RISC (Reduced Instruction Set Computer) Choisit les instructions et les modes d'adressage les plus utiles Directement réalisables en hardware CISC (Complex Instruction Set Computer) Instructions et modes d'adressage rendant l'écriture de compilateurs plus simple Nécessite l'utilisation de micro-code 15 Ivan Boule CNAM 07/08 CISC versus RISC RISC: Place disponible sur la puce pour nombreux registres généraux et caches mémoire Génération de code + difficile (compilateur) CISC: Moins de place sur la puce: peu de registres et caches de petite taille Réduit nombre d'instructions par programme Temps d'exécution des instructions + long Processeur + complexe 16 Ivan Boule CNAM 07/08 RISC Philosophie Nombre d'instructions réduit Une instruction par cycle Instructions de taille fixe => facile à pré- charger Pipelines Traitement d'une instruction est décomposé en unités élémentaires Exécution de ces unités en parallèle 17 Ivan Boule CNAM 07/08 RISC Philosophie Registres Grand nombre peu spécialisés Peuvent contenir adresses ou données Instructions spécifiques "Load/Store" Opérations uniquement entre [données des] registres Instructions spécifiques pour Copier un mot mémoire dans un registre Copier contenu d'un registre en mémoire. 18 Ivan Boule CNAM 07/08 RISC et Pipeline Exemple du ARM7 : 3 niveaux Fetch: charge une instruction depuis la mémoire Decode: identifie l'instruction à exécuter Execute: exécute l'instruction et écrit le résultat dans le registre decode execute fetch ADD SUB ADD SUB ADD CMP Time 19 Ivan Boule CNAM 07/08 Pipeline Instructions de branchement => vidage (flush) du pipeline prédiction de branchement pour les réduire Interruption N'interrompt pas l'instruction se trouvant au niveau "execute" Les autres instructions dans le pipeline sont abandonnées. 20 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 21 Ivan Boule CNAM 07/08 Mode d'exécution « superviseur » Accès aux ressources protégées Registres d'I/O, de gestion de la mémoire Registre contenant le mode d'exécution mémoire physique, périphériques d'E/S Droit d'exécuter instructions privilégiées Masquage des interruptions Changement de mode d'exécution Instructions d'I/O CPU démarre en mode superviseur 22 Ivan Boule CNAM 07/08 Mode d'exécution « utilisateur » Droits restreints Accès aux registres généraux Exécution des instructions standard Passage superviseur -> utilisateur Contrôlé par OS Lancement d'un programme Passage user -> superviseur Instruction « svc » (supervisor call) Exceptions : opération invalide ou non autorisée Interruption 23 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 24 Ivan Boule CNAM 07/08 Interruptions Événement déclenché par composant matériel extérieur ou intégré au CPU Fin d'entrée/sortie d'un périphérique Echéance de décompteur de temps terminée Signal envoyé au processeur de l'extérieur Par l'intermédiaire d'un PIC Partageable ou non Événement asynchrone Indépendant du programme courant Masquable par le système 25 Ivan Boule CNAM 07/08 Exceptions Provoquée par condition anormale lors de l'exécution de l'instruction courante Adresse mémoire invalide Instruction non autorisée ou invalide Division par zéro Synchrone avec le programme exécuté Détectée par le CPU Traitée par le système dans le contexte du programme courant 26 Ivan Boule CNAM 07/08 Supervisor Call Invocation d'un service du système service id. (open, write, ...) dans un registre service args (pathname, fd, ...) dans registre(s) ou dans la pile utilisateur résultat / code erreur dans registre(s) Synchrone avec (processus / thread) appellant relatif au contexte système appellant Appels système fournis par fonctions de bibliothèque du langage (libc) 27 Ivan Boule CNAM 07/08 Exceptions/Interruptions (1) Processeur suspend l'exécution en cours Sauvegarde état courant PC, SP, registre d'état Dans registres dédiés ou pile superviseur Ou dans des « shadow registers » 2 jeux de registres, un par mode d'exécution 28 Ivan Boule CNAM 07/08 Exceptions/Interruptions (2) Charge nouveau contexte d'exécution Registre d'état mode « superviseur » Interruptions masquées PC avec adresse mémoire spécifique Opérations Non-interruptible Sinon état non cohérent Sauf par NMI (PowerPC par exemple) Exception durant opérations Double-faute arrêt CPU ou traitement spécial (Intel) 29 Ivan Boule CNAM 07/08 Exceptions/Interruptions "Vector Table" Adresse de branchement Dépend de l'exception/interruption Vers une table de vecteurs localisée à adresse prédéfinie (0x00000000 par exemple) dans un registre (IDTR sur Intel) Contient une instruction de branchement Table de vecteurs initialisée par le système 30 Ivan Boule CNAM 07/08 Vector Table Intel 256 entries on 32 bits [0 - 31] exceptions reserved by manufacturer Divide by zero Single step Etc... [32 – 255] system defined Traps (appels systèmes) External interrupts 31 Ivan Boule CNAM 07/08 Plan Architecture Von Neumann Représentation des données en mémoire CISC versus RISC Modes d'exécutions d'un processeur Exceptions, Interruptions, Appels Système Entrées / Sorties Pile d'exécution 32 Ivan Boule CNAM 07/08 Physical I/O Architecture CPU ISA Bridge SCSI Controller MEMORY PCI Bridge CPU Local Bus PCI Bus ISA Bus SCSI Bus Hard Disk UART Ethernet Controller 33 Ivan Boule CNAM 07/08 Gestion des Périphériques Gérés par des registres de contrôle et d'état (start/ stop, interruptions, etc.) Registres accessibles depuis le CPU Instructions spéciales d'I/O (Intel) Adresses mémoire spécifiques Problème avec cache(s) mémoire Problème des « memory barriers » Etat stoppé à power-on/hardware reset Doivent être explicitement stoppés Par le boot avant appel du système « chargé » lors de re-démarrage « à chaud » du système 34 Ivan Boule CNAM 07/08 Transferts des données d'E/S Indirects à travers des registres Simple mais pas efficace Périphériques lents (clavier, souris, etc) Par accès direct en mémoire (DMA) Données copiées par device dans buffers Efficace (copie en parallèle avec CPU) Devices rapides (disques, ethernet, USB, etc.) Complexe Buffers pas dans cache / uploads/Ingenierie_Lourd/ c1-cpu-architecture-2.pdf
Documents similaires










-
54
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Mai 06, 2022
- Catégorie Heavy Engineering/...
- Langue French
- Taille du fichier 0.4014MB