37
1 Ivan Boule CNAM 07/08 Rappels Architecture des Ordinateurs

C1 CPU Architecture-2 (1)

Embed Size (px)

DESCRIPTION

cours cpu architecture

Citation preview

Page 1: C1 CPU Architecture-2 (1)

1Ivan Boule

CNAM 07/08

Rappels

Architecture des Ordinateurs

Page 2: C1 CPU Architecture-2 (1)

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

Page 3: C1 CPU Architecture-2 (1)

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

Page 4: C1 CPU Architecture-2 (1)

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

Page 5: C1 CPU Architecture-2 (1)

   

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

Page 6: C1 CPU Architecture-2 (1)

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

Page 7: C1 CPU Architecture-2 (1)

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)

Page 8: C1 CPU Architecture-2 (1)

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

Page 9: C1 CPU Architecture-2 (1)

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

Page 10: C1 CPU Architecture-2 (1)

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

Page 11: C1 CPU Architecture-2 (1)

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

Page 12: C1 CPU Architecture-2 (1)

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

Page 13: C1 CPU Architecture-2 (1)

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

Page 14: C1 CPU Architecture-2 (1)

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

Page 15: C1 CPU Architecture-2 (1)

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

Page 16: C1 CPU Architecture-2 (1)

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

Page 17: C1 CPU Architecture-2 (1)

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.

Page 18: C1 CPU Architecture-2 (1)

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

Page 19: C1 CPU Architecture-2 (1)

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.

Page 20: C1 CPU Architecture-2 (1)

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

Page 21: C1 CPU Architecture-2 (1)

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

Page 22: C1 CPU Architecture-2 (1)

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

Page 23: C1 CPU Architecture-2 (1)

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

Page 24: C1 CPU Architecture-2 (1)

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

Page 25: C1 CPU Architecture-2 (1)

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

Page 26: C1 CPU Architecture-2 (1)

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)

Page 27: C1 CPU Architecture-2 (1)

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

Page 28: C1 CPU Architecture-2 (1)

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)

Page 29: C1 CPU Architecture-2 (1)

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

Page 30: C1 CPU Architecture-2 (1)

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

Page 31: C1 CPU Architecture-2 (1)

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

Page 32: C1 CPU Architecture-2 (1)

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

Page 33: C1 CPU Architecture-2 (1)

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

Page 34: C1 CPU Architecture-2 (1)

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 !

Page 35: C1 CPU Architecture-2 (1)

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

Page 36: C1 CPU Architecture-2 (1)

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(n­1);    }

Nombre de paramètres variableprintf(...)

Page 37: C1 CPU Architecture-2 (1)

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