Upload
mickael-marin
View
24
Download
2
Embed Size (px)
DESCRIPTION
cours cpu architecture
Citation preview
1Ivan Boule
CNAM 07/08
Rappels
Architecture des Ordinateurs
2Ivan 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
3Ivan 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émoireInstructions manipulées comme des données
Programmes peuvent s'auto-modifier
CPU Mémoire
Bus d'adresses
Bus de Données
4Ivan 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'étatBits de conditions (Z, LT, GT, etc.)
Modes d'exécutionNiveau de protection (user/supervisor)
Adressage physique/virtuel
Masque des interruptions
PC
MemoryInterruptControllerCPU
SST
0x00000208
SP
Saved PC
Saved ST
Saved SPI/O DeviceController
Address Bus
Data Bus
IIRQ1
interrupt
control reg
data reg
0x0NMI entry
interrupt entry
exception entry
0x4
0x8
0xCSVC entry
0x208
Z
6Ivan 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
7Ivan Boule
CNAM 07/08
Unités mémoire
Unités adressablesoctet de 8 bits (char)
mot de 16 bits (short)
mot de 32 bits (int)
mot de 64 bits (long long)
Alignement multiple de la tailleNon imposé (Intel, PowerPC) mais plus efficace
Imposé sinon exception (Sparc)
8Ivan 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
9Ivan 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
10Ivan Boule
CNAM 07/08
Représentationdes nombres entiers
Entiers dans registres de CPU« Most Significant Bit First » (bit numéro 31)
Représentation naturelle pour opérationsde base (+ - & | ...)
Exemple entier sur 32 bits 0x01023040 (16920640 en décimal)
00000010 0011000000000001 01000000
31 0
11Ivan 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
000000010000001000110000
0000001000110000
00000001
01000000
12Ivan Boule
CNAM 07/08
Echange de Donnéesentre Applications
Données échangéesPar protocoles réseau
Par supports externes (amovibles)
Définir taille des valeurs : 8, 16, 32, 64 bits
Byte OrderingImposé : Big Endian des Protocoles Internet
Transmis : Endian du CPU émetteur dans premier octet d'entête des messages
Eviter problèmes d'alignement
13Ivan 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
14Ivan 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
15Ivan 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
16Ivan Boule
CNAM 07/08
RISC Philosophie
Nombre d'instructions réduitUne instruction par cycle
Instructions de taille fixe => facile à pré-charger
PipelinesTraitement d'une instruction est décomposé en unités élémentaires
Exécution de ces unités en parallèle
17Ivan Boule
CNAM 07/08
RISC Philosophie
RegistresGrand 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 pourCopier un mot mémoire dans un registre
Copier contenu d'un registre en mémoire.
18Ivan Boule
CNAM 07/08
RISC et Pipeline
Exemple du ARM7 : 3 niveauxFetch: 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 executefetch
ADD
SUB ADD
SUB ADDCMP
Time
19Ivan Boule
CNAM 07/08
Pipeline
Instructions de branchement=> vidage (flush) du pipeline
prédiction de branchement pour les réduire
InterruptionN'interrompt pas l'instruction se trouvant au niveau "execute"
Les autres instructions dans le pipeline sont abandonnées.
20Ivan 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
21Ivan Boule
CNAM 07/08
Mode d'exécution « superviseur »
Accès aux ressources protégéesRegistres 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éesMasquage des interruptions
Changement de mode d'exécution
Instructions d'I/O
CPU démarre en mode superviseur
22Ivan Boule
CNAM 07/08
Mode d'exécution « utilisateur »
Droits restreintsAccès aux registres généraux
Exécution des instructions standard
Passage superviseur -> utilisateurContrôlé par OS
Lancement d'un programme
Passage user -> superviseurInstruction « svc » (supervisor call)
Exceptions : opération invalide ou non autorisée
Interruption
23Ivan 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
24Ivan 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érieurPar l'intermédiaire d'un PIC
Partageable ou non
Événement asynchroneIndépendant du programme courant
Masquable par le système
25Ivan Boule
CNAM 07/08
Exceptions
Provoquée par condition anormale lors del'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
26Ivan Boule
CNAM 07/08
Supervisor Call
Invocation d'un service du systèmeservice 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)
27Ivan Boule
CNAM 07/08
Exceptions/Interruptions (1)
Processeur suspend l'exécution en cours
Sauvegarde état courantPC, 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
28Ivan Boule
CNAM 07/08
Exceptions/Interruptions (2) Charge nouveau contexte d'exécution
Registre d'étatmode « superviseur »
Interruptions masquées
PC avec adresse mémoire spécifique
Opérations Non-interruptibleSinon état non cohérent
Sauf par NMI (PowerPC par exemple)
Exception durant opérationsDouble-faute
arrêt CPU ou traitement spécial (Intel)
29Ivan Boule
CNAM 07/08
Exceptions/Interruptions "Vector Table"
Adresse de branchementDé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
30Ivan 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 definedTraps (appels systèmes)
External interrupts
31Ivan 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
32Ivan Boule
CNAM 07/08
Physical I/O Architecture
CPU
ISA BridgeSCSI Controller
MEMORY
PCI Bridge
CPU Local Bus
PCI Bus
ISA BusSCSI Bus
Hard Disk UART
Ethernet Controller
33Ivan 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écifiquesProblè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
34Ivan Boule
CNAM 07/08
Transferts des données d'E/SIndirects à 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.)
ComplexeBuffers pas dans cache / « bus snooping » (Intel)
Continue après re-démarrage à chaud !
35Ivan 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
36Ivan Boule
CNAM 07/08
Pile d'exécution
Fonctions langage CParamètres d'appel
Contexte de retour
Variables locales
Support récursivité
fact(n) { if n <= 2 return n; return n * fact(n1); }
Nombre de paramètres variableprintf(...)
37Ivan Boule
CNAM 07/08
Pile d'exécution – Intel
unsigned int fact(unsigned int n) { return (n <= 2) ? n : n * fact(n – 1);}
4
EBP
EBP appelant
3
@ retour appelant
@ retour appelantEBP appelant
ESP @ retour appelantEBP appelant
2
fact: pushl %ebp movl %esp, %ebp subl $8, %esp cmpl $2, 8(%ebp) jbe .L2 movl 8(%ebp), %eax subl $1, %eax movl %eax, (%esp) call fact movl %eax, %edx
imull 8(%ebp), %edx movl %edx, 4(%ebp) jmp .L4.L2: movl 8(%ebp), %eax movl %eax, 4(%ebp).L4: movl 4(%ebp), %eax leave ret
Stack Bottom