Vous êtes sur la page 1sur 153

Ici le titre du cours

Microprocesseur
2

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
3

Introduction
Pourquoi des cours de matériel en Info ???

Qu'est-ce qu'un ordinateur ?


4

Introduction
Pourquoi des cours de matériel en Info ???

Qu'est-ce qu'un ordinateur ?


5

Introduction
Pourquoi des cours de matériel en Info ???

Qu'est-ce qu'un ordinateur ?


Système
Mémoire
de calcul

Communication Périph.
Périph.

Périph.
Périph. Périph.
6

Introduction
Pourquoi des cours de matériel en Info ???

Qu'est-ce qu'un ordinateur ?


Exemples de périphériques...
Notion de performances :
- performances matérielles
- performances logicielles
L'utilisateur ne voit que la combinaison des deux !
Unités : MIPS / FloPS (perf. brutes)
MIPS/W ou FloPS/W (optimisation)
7

Introduction
Couches fonctionnelles...

Matériel Electronique Electronicien


Pilotes de périphériques
Système d'exploitation
Bibliothèques
Couches d'abstraction

Applications Informatique Informaticien


8

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
9

Communication
- Architectures
( comment on trace les lignes sur un shéma)
- Structures
( ce que représentent les lignes du shéma )
- Commandes
( comment se déroule la communication )
10

Communication / Architectures
- Conventions :
Liaison unidirectionnelle :
Liaison bidirectionnelle :
Chaque liaison nécessite une terminaison
(départ ou arrivée)
Liaison bidirectionnelle :
générique
half duplex
full duplex
11

Communication / Architectures
- Cas "simple"
Système
Mémoire
de calcul

Périph. Périph.

Périph.
12

Communication / Architectures
- Cas "simple" et surtout moins cher
Mémoire

Système
Périph. Périph.
de calcul

Périph.
13

Communication / Architectures
- Liaison en anneau (Ring)
Système
de calcul
Mémoire
Périph.

Périph.
Périph.
Principe du jeton :
le périphérique qui le détient peut occuper le système
anneau à jeton / Token ring
14

Communication / Architectures
- Liaison en anneau : variante de représentation
Système
Périph. Mémoire Périph. Périph.
de calcul
15

Communication / Architectures
- Liaison en anneau bidirectionel
Système
de calcul
Mémoire
Périph.

Périph.
Périph.
Meilleures performances:
plus besoin de parcourir la boucle en lecture
fiabilité (mode dégradé)
16

Communication / Architectures
- Liaison par bus commun :
une seule (grande) liaison bidirectionnelle commune

Système Système Système


Mémoire Périph. Périph. Périph.
de calcul de calcul de calcul

Limite technologique : Half duplex


principe de l'exclusion mutuelle

Surtout gênant quand il y a plusieurs processeurs !


17

Communication / Architectures
- Calcul haute performance
Périph.

Système Système Systèm


Mémoire Mémoire
de calcul de calcul de calc

Système Système
Mémoire Mémoire Mémoir
de calcul de calcul

Système Système Systèm


Mémoire Mémoire
de calcul de calcul de calc
18

Communication / Architectures
- Dans les systèmes d'aujourd'hui :
Toutes les architectures sont encore utilisées
(réseaux à plus ou moins grande échelles)
Voiture : liaison par bus commun (bus CAN)
PC (10 ans, version simple)
Système
Mémoire
de calcul
Périph. Périph. Périph.

Gestionnaire
'mémoire'
19

Communication / Architectures
PC récents (version très simple)
Système
Mémoire
de calcul Gestionnaire
'mémoire'
Système
de calcul
Périph. lent
Système Périph.
de calcul Périph. lent

Périph.
Périph. lent
Périph.
Périph. lent
20

Communication / Structures
Les données sont constituées de '0' et de '1' (bit),
rassemblés par groupes (8, 16, 32 ...)

0 0 1 0 1 0 1 0

b7 b6 b5 b4 b3 b2 b1 b0

b0 est le bit de poids faible (LSB)


b7 est le bit de poids fort (MSB)

Une communication consiste en un échange de données...


Plusieurs solutions pour échanger les données...
21

Communication / Structures
Liaison série :
Un seul fil pour envoyer tous les bits :
Espace Paquet
inter-trames Trame

T0

0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1

b7 b6 b5 b4 b3 b2 b1 b0 b7 b6 b5 b4 b3 b2 b1 b0 temps

Donnée 1 Donnée 2
22

Communication / Structures
Liaison parallèle :
Plusieurs fils pour envoyer les bits :
T0
Pour n fils, a fréquence équivalente,
le débit est n fois supérieur b7 0 0
b6 0 1
b5 1 0
b4 0 0
Ligne 0
b3 1 0
A B b2 0 1
Ligne n-1 b1 1 0
b0 0 1
temps
23

Communication / Structures
Avantages série/parallèle :
Aujourd'hui quasiment toutes les liaisons sont série : pourquoi ?
Une liaison parallèle nécessite que l'émetteur et le recepteur
soient calés sur la même horloge, il faut tenir compte du retard
de propagation

Ligne 0

A B
Ligne n-1

Longueur l, vitesse c, temp= l/c


24

Communication / Structures
Avantages série/parallèle :
Aujourd'hui quasiment toutes les liaisons sont série : pourquoi ?
Dans une liaison série pas besion d'être synchrone on envoie
les bits suivants avant que le premier soit arrivé :

A out 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1

B in 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 1

temps
t= l/c
25

Communication / Structures
Avantages série/parallèle :
Aujourd'hui quasiment toutes les liaisons sont série : pourquoi ?
Un seul port physique, on peut lui consacrer plus de
complexité, usage de 'symboles' :

A out a c c c b a b b

B in a c c c b a b b
temps
t= l/c Avec : a = 00 Gain de temps
b = 01
c = 10
d = 11
26

Communication / Commandes
Ex : liaison SPI
périphériques basiques Horloge
Select
maître esclave
MOSI

MISO

Horloge

Select

MOSI b0 b1 b2 b3 b4 b5 b6 b7

MISO b'0 b'1 b'2 b'3 b'4 b'5 b'6 b'7


27

Communication / Commandes
Ex : liaison UART (RS232, lisaison série)
Tx Rx

A B
Rx Tx

Full duplex, point à point


Entièrement symétrique
Lente, mais simple et robuste : utilisée pour les terminaux
chaque composant envoie par le Tx et reçoit par le Rx
signaux optionnels pour la gestion de flux
Développée pour du texte (imprimantes à l'origine)
28

Communication / Commandes
Ex : liaison UART (RS232, lisaison série)
T0

0 b0 b1 b2 b3 b4 b5 b6 b7 p 1 intertrame

Toujours =1
Longueur variable
Donnée (n=5 à 9 bits)
Bit stop
Toujours =1

Bit start Bit parité


Toujours =0 facultatif

Trame suivante
0 b0 b1 b2 b3 b4 b5 b6 b7 p 1 intertrame 0
29

Communication / Commandes
Ex : liaison UART (RS232, lisaison série)
Trame suivante
0 b0 b1 b2 b3 b4 b5 b6 b7 p 1 intertrame 0

Paramètres :
- débit (baudrate)
- taille des données (5 à 9 bits)
- type de parité (aucune, paire, impaire)
- nombre de bits de stop (présence d'un intertrame ?)
- contrôle de flux (aucun, physique, logique)
30

Communication / Commandes
Ex : liaison Ethernet

A B

half duplex, point à point


Entièrement symétrique
plusieurs évolutions successives pour la montée en débit
Une seule ligne, communication dans les deux sens sur la
version d'origine
31

Communication / Commandes
Ex : liaison Ethernet

Quantité de données

Préambule @ dest. @ exp. n Données CRC

octets 8 6 6 2 n 4

Paramètres :
Aucun, les composants négocient le mode de fonctionnement
32

Communication / Commandes
Ex : liaison PCI (Parallèle)
Largeur de bus de 32bits,
pensé pour des accès "burst" (gros blocs de données)
premier bus avec fonctionalité plug'n'play (non représenté)
32
Piloté par l'émetteur
AD Piloté par le récepteur
BE
A B
Ready
Stop
Mem CPU
Horloge Périph. Périph. Périph.
Gest. mem.
33

Communication / Commandes
Ex : liaison PCI (Parallèle)
Horloge
BE
AD0 @0 a0 b0 c0 d0
AD1 @1 a1 b1 c1 d1
AD2 @2 a2 b2 c2 d2

Arbitrage

AD30 @30 a30 b30 c30 d30


AD31 @31 a31 b31 c31 d31

Ready
Stop
34

Communication / Commandes
Définitions :
Débit crête
1/T0 : exprimé en Hz parfois, mais souvent en bps
Débit efficace
nombre de bit utiles transmis pas seconde (bps)
- les bits d'adresse et CRC ne sont pas comptabilisés
- les espaces intertrames sont des poids morts

Efficacité de transmission
Débit efficace / Debit crête, exprimé en %
35

Communication / Commandes
Mini TD :
Liaison série cadencée à 400MHz avec trames :
- 32 bits de synchro
- 32 bits d'adresse d'émission
- 32 bits d'adresse de destination
- 1 kilo-octets de données
- 32 bits de CRC
- 256 bits d'espace inter-trame
Débit crête ? Débit efficace ? Efficacité ?
Comment augmenter l'efficacité ?
36

Communication / Commandes
Illustrations:
Carte mère un peu ancienne (10 ans)
Carte mère récente
Zoom sur les lignes
37

Communication /
38

Communication /
39

Communication /
40

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
41

Machines Electroniques
Types de machine :
- Machine à états
- Séquenceur programable
- (micro)Processeur
- Microcontrôleur
Dans un µP
- Gestion de la mémoire
- Capacités d'un µP
- Structure générique
- Instructions de base
- Jeux d'instruction RISC / CISC
- Instructions avancées
42

Machines Electroniques
Machine à états :
Succession prédéterminée : Ex: feu tricolore
Changement d'état à chaque coup d'horloge
00000 0001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110

11111 01111

11110 11101 11100 11011 11010 11001 11000 10111 10110 10101 10100 10011 10010 10001 10000

Code d'état = a4a3a2a1a0 Sorties : Rouge = a4


a0 ← a 0 Orange = a4a3a2a1a0
Code de l'état suivant =
a1← a1a0 + a1a0 Vert = a4 (a3a2a1a0)
a2← a2a1a0 + a2 (a1a0)
a3← a3a2a1a0 + a3 (a2a1a0)
a4← a4a3a2a1a0 + a4(a3a2a1a0)
43

Machines Electroniques
Machine à états :
Succession prédéterminée
Ex: feu tricolore

n
to
Version plus évoluée...

p ié
ui
pp
A
Cmpt=0 Cmpt←15 Cmpt-- Cmpt←2

Cmpt-- Cmpt=0

Cmpt←17
44

Machines Electroniques
Séquenceur programmable :
Succession dépendante de paramètres. Un ensemble d'actions sont
stockées dans un tableau
Code de case du tableau : Etat en cours Entrées des capteurs

00 : Vert 0/1 : bouton piéton


01 : Orange 0/1 : présence voiture
10 : Rouge 0/1 : Cmpt = 0 ?

Contenu de chaque case : Code état suivant Code d'action


000 : Cmpt--
001 : Cmpt ←14
010 : ...
45

Machines Electroniques
Processeur = séquenceur programmable évolué
il connait lui-même l'état en cours (la case qui contient l'instruction
à exécuter)
Il ne fait que des opérations abstraites sur la mémoire
- il lit des valeurs en mémoire
- il écrit des résultats en mémoire

La SEULE interface que fournit un processeur est un (ou


plusieurs) accès mémoire
Besoin de composants dédiés pour accéder au monde extérieur
=> un processeur ne sert à rien sans ses périphériques...
46

Machines Electroniques
Microcontrôleur :
Sur la même puce on met :
un CPU
de la mémoire
les périphériques (électriques) d'entrée/sortie
Moins de puissance de calcul, mais pas forcément moins
performants... (rapporté à la consommation électrique)
Utilisés pour les TPs en fin de semestre
47

Machines Electroniques
48

Dans un µP / gestion mémoire


Une mémoire est un composant à deux fonctions
- écriture
- lecture

Ecriture Lecture
Donnée Donnée

Emplacement Mémoire Emplacement Mémoire


(adresse, @) (adresse, @)

Ordre d'écriture Ordre de lecture réponse


49

Dans un µP / gestion mémoire


La mémoire est nécessaire pour :
Contenir les instructions du programme
Garder les différents argments et résultats.
Le processeur a une capacité mémoire limitée (taille
des adresses qu'il peut gérer)
Le processeur ne voit que des adresses.
1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8
RAM 0 RAM 1 Inoccupé ROM Prog

Deux composants vus comme une seule mémoire


50

Dans un µP / Capacités du µP
Problème :
Pour éxécuter une instruction, il faut d'abord la lire...

Opérations de lecture et d'écriture durent


µP au moins deux cycles d'horloge

RAM 0 RAM 1 Inoccupé ROM Prog

Architecture Von Neumann : Les données et les instructions sont en


concurrence sur le même bus
51

Dans un µP / Capacités du µP
Problème :
Pour éxécuter une instruction, il faut d'abord la lire...
Inoccupé ROM Prog
Bus d'instructions

Opérations de lecture et d'écriture ne sont


µP plus gênées par la lecture de l'instruction

Bus de données
RAM 0 RAM 1 Inoccupé

Architecture Harvard : Les données et les instructions peuvent être


échangées en même temps
52

Dans un µP / Capacités du µP
Question : un PC/téléphone/tablette est-il d'architecture Harvard ou
Von Neumann ?

Coeur Von Neumann en externe pour la


µP compatibilité avec les machines d'il y
a 30 ans (SIC)
Cache i Cache d Harvard en interne pour le coeur...

Bus
mémoire Inoccupé
53

Dans un µP / Capacités du µP
Fonctions d'un µP :
- lire une instruction
- lire une donnée (et la mémoriser en interne :
registres)
- écrire une donnée (présente en interne)
- faire un calcul en interne
- faire un test
- modifier le fil d'éxécution
54

Dans un µP / Capacités du µP
Question :
si a,b,c et d sont des constantes, Quelle est la différence entre les
deux calculs suivants ?
ax3 + bx2 + cx + d et ((ax + b)x + c)x + d
Dans un µP / Structure 55

générique
Unité Arithmétique et logique (UAL)
Arithmetic and Logic Unit (ALU)
Décodeur
d'instruction

opération
Reg A
ALU Reg Acc.
Reg B

Status
(C, B, Z, N, … )
Dans un µP / Structure 56

générique
Décodage d'instruction

Séquenceur

Reg 0
Reg 1
Reg 2 ALU
Status

PC Bus externe
+1
Dans un µP / Structure 57

générique
Pour éxécuter une instruction, il faut :
- lire l'instruction
- décoder l'instruction
- diriger les bons registres vers l'ALU
- faire le calcul dans l'ALU
- diriger le résultat de l'ALU vers le bon registre
- incrémenter le PC
=> Cycle machine.
Dans un µP / Structure 58

générique
Pipeline : anticipation des opérations à faire
Rythme d'éxécution des instructions

Lect. Instr n Lect. Instr n+1 ... ... ...


décodage n décodage n+1 ... ... ...
args. n args. n+1 ... ...
calcul n calcul n+1 ...
stockage n stockage n+1
temps

Temps de calcul de l'instruction n


Machines Electroniques / 59

Instructions de base
Instructions
- Codes binaires interprétés par le processeur
Code d'instruction Code Arg1 Code Arg2

n bits i bits j bits

- Longueur et structure de chaque code dépend de


l'instruction.
- Chaque code d'instruction est unique
- Utilisation de mnémoniques : notation humainement
plus abordable, c'est le langage Assembleur
Machines Electroniques / 60

Instructions de base
MOV : déplacement d'une donnée d'un endroit à un autre.
args : origine, cible

MOV RegA, RegB : copie la valeur de RegA dans RegB


Types d'instructions :
MOV registre, registre
MOV cste, registre
MOV registre, @(c)
MOV @(c), registre
MOV registre, @(Reg)
Processeurs évolués
MOV @(Reg), registre
Machines Electroniques / 61

Instructions de base
Opérations logiques : AND, OR, NOT, XOR.
Souvent, on mémorise le résultat dans un des registres argument
Ex: AND regA, regB :
calcule (regA AND regB) et le mémorise dans regA

AND registre, registre Processeurs 'Low Cost'

AND cste, registre


AND @(c), registre
AND registre, @(c)
...
Processeurs évolués
...
Machines Electroniques / 62

Instructions de base
Opérations arithmétiques : ADD, SUB
même syntaxe que les opérations logique
affectent Z, C, N...
Variantes pour tenir compte de C (ADDC, SUBC), ou pour utiliser
des codages différents
ADD registre, registre Processeurs 'Low Cost'

ADD cste, registre


ADD @(c), registre
ADD registre, @(c)
...
Processeurs évolués
...
Machines Electroniques / 63

Instructions de base
Manipulation de bits : rotation / décalage :
Disponible dans les deux sens
gauche (vers le MSB, valeurs supérieures)
droite (vers le LSB, valeurs inférieures)
Décalage : le bit sortant est perdu
Rotation : le bit sortant est réutilisé pour combler le vide

Souvent, Carry impliqué


Machines Electroniques / 64

Instructions de base
Branchements :BRANCH/GOTO, CALL/SUB, RETURN
Éxécuter une autre partie du programe :
BRANCH / GOTO : modifier la valeur du PC pour éxécuter autre
chose
- Absolu BRA @
- Relatif BRA offset
- calculé BRA registre

CALL/SUB : appel à un sous programme.


- mêmes variantes que le GOTO/BRANCH
- mémorise l'@ éxécutée pour se souvenir d'où est parti l'appel
RETURN : termine un sous-programme, utilise l'@ mémorisée par
CALL/SUB
Machines Electroniques / 65

Instructions de base
Tests : faire un test signifie faire un branchement :
If / else Boucle
Instr. générale Instr. générale
Instr. générale boucle : Instr. boucle
Test Instr. boucle
Instr. A
Instr. boucle
Instr. A Test
BRA fintest Instr générale
Instr. B Instr générale

Instr. B
fintest : Instr générale
Instr générale
Machines Electroniques / 66

Instructions de base
Tests : faire un test signifie faire un branchement :
Branchement conditionnel :
BRAC : saut si Carry = 1
BRANC : saut si Carry = 0
BRAZ : saut si Zero = 1
...
CALLC, CALLNC, CALLZ ...

Instruction TSTS (test and Skip)


n'éxécute pas l'instruction suivante si le test est vrai.
Machines Electroniques / 67

Instructions de base
Tests : Cas particulier sur les processeurs ARM
Les instructions peuvent ne pas modifier le résultat
Les instructions peuvent ne pas modifier le STATUS
Chaque instruction est conditionnelle
Machines Electroniques / 68

CISC / RISC
CISC : Complex Instruction Set Computer
- instructions nombreuses et de taille variable
- peu de registres
- beaucoup d'opérations directes avec la mémoire
- programme très dense

RISC : Reduced Instruction Set Computer


- peu d'instructions, toutes de taille fixe
- structure du processeur plus simple
- nombreux registres internes, très flexibles
- temps d'éxécution fixe, car majoritairement sur les registres
- plus facile à gérer par les compilateurs
Machines Electroniques / 69

CISC / RISC
Disparition de la frontière
- les jeux d'instructions RISC se complexifient
- les processeurs CISC utilisent une base RISC
(usage de microcode)

Reste la complexité de l'implémentation :


- CISC plus cher (développement et surface de silicium)
- CISC consomme plus à opérations égales
Machines Electroniques / 70

Instructions avancées
Plusieurs façons d'élargir le nombre d'instructions.
Intérêt :
- limiter les séquences répétitives de code.
- fournir une correspondance avec les langages évolués
Inconvénients :
- temps de développement plus long
- efficacité énergétique plus faible
- prise en main du processeur plus limitée (temps de formation)

complexité croissante selon l'ordre du cours


Machines Electroniques / 71

Instructions avancées
Gestion de Pile :
- Utilisation d'un pointeur de pile en mémoire
- PUSH / POP
PUSH : - écriture à l'@ du registre de pile
- in/décrémentation du registre
POP : - dé/incrémentation du registre
- lecture à l'@ du registre de pile
- Multiple PUSH / Multiple POP
Machines Electroniques / 72

Instructions avancées
Opérations à trois arguments :
De type A ← f (B, C)
Ex : Add r1, r2, r3 r3 ← r1 + r2

Valable pour toutes les instructions à deux arguments


Explosion du nombre de combinaisons :
- présence d'une constante ?
- présence d'une @ mémoire ? @ constante ?
- utilisation du Carry ?
Machines Electroniques / 73

Instructions avancées
MUL / DIV / MOD
Résultat d'une multiplication 32b×32b → 64 bits
- Dépend de la représentation binaire
- Plus ou moins rapide selon l'architecture choisie

Multiply and Accumulate


- très utile pour calculer les polynômes / comb. Linéaires...
- A ← A + B×C
- nombreuses déclinaisons si on veut être exhaustif.
Machines Electroniques / 74

Instructions avancées
Opérations sur les "flottants"
Opérations utilisant le format BCD
Opérations SIMD
75

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
76

Codage de données
Principes du codage entier en base binaire
Représentation en virgule fixe
Représentation en virgule flottante
77

codage binaire : définitions


● Digit : symbole de représentation.
Binaire : 0, 1
Décimal : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Hexadécimal : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
● Bit :
Contraction de "Binary Digit"
● ATTENTION :
toujours différencier une "valeur" et sa "représentation"
65, b0100 0001, 0x41, 'A'
sont différentes représentations de la même valeur
78

Principe du codage binaire


Principe du codage : associer une combinaison de
bits à chaque valeur numérique
Exercice de dénombrement :
chaque bit ayant deux états, il y a 2n combinaisons possibles
lorsqu'on associe n bits.
=> il n'est pas possible de représenter une valeur supérieure à 2n
avec n bits.
Le principe le plus logique est d'utiliser une représentation basée
sur la base 2 :
la valeur A est représentée par les bits : ai, tels que
ai = E(A/2i) mod 2
79

Principe du codage binaire


Principes des codages binaire et décimal équivalents
● => toutes les propriétés restent valables à condition de
savoir les transposer.
base décimal binaire
Ajout d'un zéro à droite x10 x2
Suppression d'un digit à droite /10 /2
Nombre de valeurs sur n digits 10n 2n
Extraction des n digits de droite Modulo 10n Modulo 2n

La transposition binaire/hexadécimale étant facile,


on représente souvent des données binaires en hexa
Le codage BCD 80

(Binary Coded Decimal)


Codage BCD utilisé pour optimiser les affichages
compréhensibles par l'homme.
Les bits son regroupés par 4, les combinaisons
supérieures à 9 sont ignorées.
- usage mémoire non optimal
Valeur max par nombre de bits binaire BCD
8 28 -1= 255 99
16 216 -1= 65 535 9 999
32 232 -1= 4 294 967 295 99 999 999

- calcul très complexe si absence de ressources


matérielles.
81

Le codage Gray
Valeur Code
transition
0 0000
0001
1 0001
0010
2 0011
0001
3 0010
0100
4 0110
0001
5 0111
0010
6 0101
0001
7 0100
1000
8 1100
0001
9 1101
0010
10 1111
0001
11 1110
0100
12 1010
0001
13 1011
0010
... ...
82

Valeurs négatives
Version historique (encore rencontrée)
-> le bit de poids fort code le signe, les autres bits codent la
valeur absolue.

Complément à 2 : on utilise la correspondance avec le


modulo.
Exemple sur 8 bits :
-1 est solution de l'équation : x + 1 = 0 (mod 256).
=> x = -1 = 255.
83

Valeurs négatives
Vu du processeur, il n'y a aucune distinction possible entre
une valeur signée et non signée :
111111 63
Zone accessible uniquement par
représentation non signée
100000 32
011111 31 31
Zone de représentation
équivalente
000000 0 0
111111 -1
Zone accessible uniquement
par représentation signée
100000 -32
Non signé signé
84

Valeurs réelles (virgule fixe)


Une valeur réelle ne peut être représentée que sous forme
symbolique (π, e, ...).
Les valeurs représentées sous forme numérique sont des
rationels (résultat d'un quotient de deux entiers)
Ex : π ≈ 3,14159 = 314 159 / 105
≈ 823 459 / 218
Pour utiliser un rationel dans une formule, on utilise un
entier, on considère que l'entier représente la valeur voulue
multipliée par un coefficient donné (toujours le même)
C'est la représentation en virgule fixe !
=> mêmes règles de calcul pour les opérations linéaires
Valeurs réelles 85

(virgule flottante)
Problème pour les entiers et rationels en virgule fixe : la
dynamique est limitée.
On utilise l'équivalent de la notation scientifique :
–M x Kn
● M : mantisse entre deux valeurs fixes
● K : constante (2)
● n : exposant qui définit où situer la virgule
=> calculs plus complexes à mettre en oeuvre
précision constante
perte de précision dans les calculs
Valeurs réelles 86

(virgule flottante)
Implémentation 32 bits (norme IEEE)
● 1 bit utilisé pour le signe
● 8 bits utilisés pour l'exposant.
– Stocké sous forme entier non signé
– Valeur binaire = 127 + valeur de l'exposant
– Valeurs binaires $00 et $FF interdites
● 23 bit utilisés pour la mantisse (valeur absolue)
– 2 ≤ mantisse < 1
– Représentation binaire : 1,xxxxxxxxxxxxx...
– Le 1 correspondant à la partie entière n'est pas stocké
● $FF en exposant signale une exception (NaN, ∞)
0 est codé par tout à zéro (s, M et E)
Formats de base en 87

informatique
Entiers : char 8 bits (signé)
unsigned char 8 bits non signé
short int 16 bits (signé)
unsigned short int 16 bits non signé
long (int) 32 bits (signé)
unsigned long int 32 bits non signé
long long (int) 64 bits (signé)
unsigned long long 64 bits non signé

Flottants : float 32 bits (1 + 8 + 23)


double 64 bits (1 + 11 + 52)
Non recommandés : int / unsigned int : de 16 à 32 bits
long double : 80 bits (1 + 15 + 64)
Comptage binaire 88

(unités)
Unités de base :
bit (noté b)
octet (noté o) ou byte (noté B)
8b = 1o = 1B
1 kb = 1000 b 1 ko = 1000 o
1 Mb = 1000 kb = 1000 000 b 1 Mo = 1000 ko
1 Gb = 1000 Mb = ... 1 Go = 1000 Mo
1 Tb = 1000 Gb
1 Pb = 1000 Tb
Comptage binaire 89

(unités)
Unités binaires
1 kib = 1024 b 1 kio = 1024 o 1 kiB = 1024 B
prononcer 'kibi'
1 Mib = 1024 kib = 1 048 576 b (mébi)
1 Gib = 1024 Mib ≈ 1,073 Gb (gibi)
1 Tib = 1024 GiB ≈ 1,1 Tb (tébi)
1 Pib = 1024 TiB ≈ 1,126 Tb (pébi)
90

Estimer les ordres de grandeur


Valeurs binaires courantes (puissances de 2):
1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024
les valeurs suppérieures se déduisent :
232 = 23x10+2 = 21021021022 = 4 10243 ≈ 4 109 = 4 G
216 = 26210 = 64ki ≈ 64 k = 64 103
91

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
92

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
Communication vers les 93

périphériques
Un processeur comunique
Sur un bus mémoire
En lisant / écrivant dans des cases mémoires
Toute autre forme de communication est impossible
pour un processeur.
Les communications autres que échanges mémoire
sont gérées par des périphériques.

=> le processeur communique avec les


périphériques sous forme d'échanges mémoire
Communication vers les 94

périphériques
Exemple (simple) : gestion de sorties parallèles
$FFFF
RAM
µP
REG_OUT Reg. output
FIN_RAM
Registre
de sorties RAM

$0000

Le processeur voit le registre de sorties comme une


case mémoire. Chaque bit du registre correspond à
une sortie numérique.
Communication vers les 95

périphériques
Exemple (simple) : gestion de sorties parallèles
$FFFF

typedef volatile unsigned short int REG16; REG_OUT Reg. output


FIN_RAM
#define REG_OUT ((REG16 *) 0xC000)
RAM

$0000
main()
{ ....
*REG_OUT = 0x 0000; // toutes les sorties à 0
*REG_OUT = 0x FFFF; // toutes les sorties à 1
*REG_OUT = 0x 0008; // sortie 3 à 1, les autres à 0.
}
Communication vers les 96

périphériques
Pour faire les choses proprement :
typedef volatile unsigned long int REG16;
#define REG_OUT ((REG16 *) 0xC000)

#define S0 0x0001
#define S1 0x0002
...
#define S14 0x4000
#define S15 0x8000

main()
{ ....
*REG_OUT = S0 | S5 | S12; // sorties 0, 5 et 12 à 1, les autres à 0
}
Communication vers les 97

périphériques
Exemple (déjà moins simple) : entrées parallèles
$FFFF
RAM
µP
REG_IN Reg. input
REG_OUT Reg. output
Registre FIN_RAM
de sorties
RAM
Registre
d'entrées $0000

Le registre d'entrées est modifié par l'électronique, et


peut être consulté par le processeur
=> registre en lecture seule
Communication vers les 98

périphériques
Exemple (déjà moins simple) : entrées parallèles
$FFFF

REG_IN Reg. input


REG_OUT Reg. output
typedef volatile unsigned long int REG16; FIN_RAM
#define REG_OUT ((REG16 *) 0xC000)
RAM
#define REG_IN ((REG16 *) 0xC002)
$0000
main()
{
unsigned short int A;
A = *REG_IN;
}
Communication vers les 99

périphériques
Utiliser les entrées (attendre un changement) :
typedef volatile unsigned long int REG16;
#define REG_OUT ((REG16 *) 0xC000)
#define REG_IN ((REG16 *) 0xC002)

#define S0 0x0001
...
#define S15 0x8000

main()
{ unsigned short int A;
...
A = *REG_IN;
while (A == *REG_IN) { }
...
}
Communication vers les 100

périphériques
Tester une entrée spécifique 1/2:
typedef volatile unsigned long int REG16;
#define REG_OUT ((REG16 *) 0xC000)
#define REG_IN ((REG16 *) 0xC002)

// masques d'écriture
#define S0 0x0001
...
#define S15 0x8000

// masques de lecture
#define E0 0x0001
#define E1 0x0002
...
#define E14 0x4000
#define E15 0x8000
Communication vers les 101

périphériques
Tester une entrée spécifique 2/2:
../..

main()
{
...
if (( *REG_IN & E4 ) != 0) // si E4 = 1
{
...
}
}
Communication vers les 102

périphériques
Comment tester le bit n ?
sale :
en utilisant la formule (1<<n) comme masque...

propre :
en utilisant un tableau de masques pour sélectionner le bon
Communication vers les 103

périphériques
Port d'entrée sorties (Parallel Input Output):
$FFFF
RAM
µP
REG_DIR Reg. direct.
REG_IN Reg. input
Registre REG_OUT Reg. output
de sorties FIN_RAM
RAM
Registre
de direction
$0000

Registre
d'entrées
Communication vers les 104

périphériques
Port d'entrée sorties (Parallel Input Output):
$FFFF
RAM
µP
FIN_PIO
PIO
DEB_PIO
Registre FIN_RAM
de sorties
RAM
Registre
de direction $0000

Registre
d'entrées
Communication vers les 105

périphériques
Module du composant AT91SAM7X :
deux registres différents pour gérer les sorties
- Un registre de mise à 1
- Un registre de mise à 0
Avantages :
- pas de perte de temps dans les opérations de masquage
- code plus dense
- côute moins cher à fabriquer (moins de surface de Silicium)
- consomme moins
Désavantages :
- opération "bit change" plus complexe à gérer
- les registres sont en écriture seule
- consommation élevée en adresses mémoires
Communication vers les 106

périphériques
Méthodes de déclaration d'un périphérique :
Elec (sale) : chaque registre est adressé séparément
- facile et rapide d'accès
- fichiers de définitions très longs
Info (propre) : déclaration d'une structure de donnée pour
chaque type de périphérique
- représentation hiérarchisée
- encombrement réduit si plusieurs composants identiques
- fortement dépendant du compilateur
Intermédiaire (pragmatique) : on définit une adresse de base,
et les offsets de registres sont gérés à la main
- combine les avantages des deux méthodes du dessus
- aucune forme de vérification (types, correspondances
registre/periphérique) => fortement déconseillée
Communication vers les 107

périphériques
Registres à champ (contenant plusieurs valeurs )
D V C B A
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

champ V n'existe pas : les bits ne sont pas implémentés


on définit un masque de champ pour tous les autres :
masque_A : :1
masque_B :
masque_C : :0
masque_D :

● Si le registre est en écriture seule, il faut toujours en conserver


une copie dans une variable.
Communication vers les 108

périphériques
Registres à champ (contenant plusieurs valeurs )
D V C B A
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Modification de B :
peu de valeurs possibles, elles sont toutes prédéfinies en constantes
tmp = registre
masque_B
tmp = tmp ET non masque_B
valeur_à_entrer
tmp = tmp OU valeur_à_entrer

:1
:0
: imprévisible
Communication vers les 109

périphériques
Registres à champ (contenant plusieurs valeurs )
D V C B A
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Modification de A :
on utilise une valeur numérique standard comme base
tmp = registre
masque_A
tmp = tmp ET non masque_A
valeur_à_entrer
valeur = VàE ET masque_A
tmp = tmp OU valeur
:1
:0
: imprévisible
Communication vers les 110

périphériques
Registres à champ (contenant plusieurs valeurs )
D V C B A
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Modification de C :
on utilise une valeur numérique standard comme base et on la décale
tmp = registre
masque_C
tmp = tmp ET non masque_C
valeur_à_entrer
valeur = valeur_à_entrer << n
valeur = valeur ET masque_C
: 1 tmp = tmp OU valeur
:0
: imprévisible
Communication vers les 111

périphériques
Sécurité :
- Si un périphérique est mal géré, les conséquences peuvent
êtres lourdes :
- pertes de performances (calcul, consommation)
- perturbations du système (instabilité)
- perte de donnée (sur support de stockage)
- destruction matérielle (de plus en plus rare)
=> possibilité de restreindre l'accès aux périphériques :
- mode Superviseur (accès total)
- mode User (accès restreint)
Communication vers les 112

périphériques
Échanges de données :
il n'y a jamais qu'un seul registre pour envoyer ou recevoir
des données (stockage, communications, ...)
Seuls les registres sont accessibles directement par une
adresse (mappés)
Les données doivent transiter par un registre "d'échange"

=> pour copier 1kio d'un périphérique, il faut faire


1024 accès au registre d'échange
pour soulager le processeur, un périphérique peut initier un
échange : c'est le DMA (Direct Memory Access)
113

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
114

Problème en éxécution linéaire


Les périphériques produisent des évênements
Pour repérer un évênement, le processeur doit passer
son temps à regarder ce qu'il se passe sur le
périphérique...

l'occupation de processeur dépend


– De nombre de périphérique
– De la vitesse de réaction recherchée
la complexité du système augmente avec le nombre
d'évênements gérés
115

Problème en éxécution linéaire


Création d'une ou plusieurs liaisons spécifique au
niveau matériel pour indiquer un évênement

µP Mémoire Périph. Périph. Périph.

Comment prendre en compte cet évênement vu du


processeur ?
116

Concept d'interruption
La ligne spécifique provoque l'éxécution d'une
fonction logicielle par le processeur appelée
interruption (EN : interrupt)

Cette fonction interromp le programme en cours


d'éxécution !
Elle doit être brève
Elle doit faire en sorte que le programme en cours ne se
rende compte de rien
117

Concept d'interruption
Notion de priorité :
Les interruptions ont des niveaux de criticité
variables et des priorités de déclenchement.
● Chaque IT peut être interrompue par une IT plus
prioritaire
● Une IT moins prioritaire doit attendre qu'une IT
prioritaire se termine
● Si deux IT prioritaires se déclenchent, la deuxième
doit attendre que la première se termine.
118

Concept d'interruption
Une interruption ne doit contenir aucune attente
● Éviter les boucles
– For : préférer un faible nombre d'itération
– While : à éviter (on ne maîtrise pas le temps d'éxécution)
tolérable si on parcourt une structure de données
● Privilégier les tests (if)

s'il faut effectuer une action 'plus tard', on se


débrouille pour que l'interruption se déclenche une
nouvelle fois, au bon moment
119

Concept d'interruption
Un système d'exploitation ets constitué d'une phase
d'initialisation (boot) et d'une boucle infinie vide

Toutes les actions sont le résultat d'une interruption


– Une IT reveille le µP s'il est en sommeil
– Au lancement, une IT reçoit toujours les droits 'superviseur'
– La fonction d'IT appartient au système
– Elle dégrade ses droits avant de rebondir sur une fonction plus
classique (désactivation du 'mode' interruption, désactivation
du mode superviseur)
120

Interruption, déclenchement
Sur front ou sur niveau
- sur front : déconseillé
- sur niveau : il faut toujours remettre à zéro la demande
d'interruption
121

Concept d'exception
Une interruption est générée par un
module/composant externe au processeur.

Une exception est basée sur le même principe, mais


elle est générée en interne au processeur...

intérêt : gérer un cas exceptionnel auquel le


processeur ne peut pas fournir de solution.
122

Exemples d'exceptions
Division par 0 (si disponible)
Présence de code d'instruction ne correspondant à
aucune instruction connue
Disparition d'une demande d'interruption
Exécution d'une instruction interdite (mode user)
Accès à une adresse mémoire interdite (mode user)
Reset – cold start – hot start
Expiration du chien de garde
123

Chien de garde (Watchdog)


Principe de l'utilisateur qui voit que le système a planté :
pas de réaction => décenchement de l'exception
fonctionne comme un minuteur sur le
déclenchement. Sans intervention du µP, le
déclenchement se produit.
Circuit matériel, souvent analogique (basique, peu
précis, mais bug quasiment improbable)
Objectif : gérer le cas ou le système est bloqué
124

Plan
- Introduction
- Communication dans les systèmes
- 'Machines' électroniques / processeurs
- Codage des données
- Communication vers les périphériques
- Organisation mémoire
- Interruptions / Exceptions
125

Organisation mémoire
Cas simple (8 bits)

FF:

Limité par la faible quantité de


données que l'on peut stocker
02:
01:
00:

1 Octet
126

Organisation mémoire
16 bits (vu par un électronicien)
FFFF:

PB : il n'est plus possible


d'adresser un seul octet
(perte de compatibilité)
0002:
0001: 1 2
0000: 3 4

1 Octet 1 Octet

1 mot (word) = 16 bits


127

Organisation mémoire
16 bits (mode pratique) @+1 @
FFFE:

Chaque octet garde une


adresse unique 0004:
0002:
0000:
on pert la moitié de la
capacité d'adressage 1 Octet 1 Octet

1 mot (word) = 16 bits


128

Organisation mémoire
32 bits (mode pratique) @+3 @+2 @+1 @
FFFFFFFC:

Chaque octet garde une


adresse unique 00000008:
00000004:
00000000:
on pert 3/4 de la
capacité d'adressage 1 Octet 1 Octet
129

Alignement mémoire
On veut mémoriser : @+3 @+2 @+1 @
un long int (A) FFFFFFFC:
un char (B)
un long int (C)

C est dit non aligné


00000008:
(ou non cadré) 00000004:
00000000:

1 Octet 1 Octet
130

Alignement mémoire
Pour être correctement utilisée, une valeur doit utiliser
une position correcte en mémoire :
1 octet : indifférent
2 octets : @ multiples de 2
4 octets : @ multiples de 4
...

Souvent, les compilateurs gèrent le problème


131

Boutisme
Quelle est la bonne façon d'écrire une valeur sur 4
octets en mémoire ?
L'octet de poids fort doit-il être écrit dans l'adresse la
plus élevée ou la plus faible ?

Il n'y a pas de 'meilleur' choix technique.


Les deux existent :
Octet de poids faible en premier : Little Endian (Intel)
Octet de poids fort en premier : Big Endian (Motorola)
132

Boutisme
Processeurs 8bits :
Il n'y aura jamais de problème par rapport au
processeur, c'est le compilateur qui gère.
Processeurs Intel : Little Endian
Processeurs Motorola, Sparc : Big Endian
Processeurs PowerPC, ARM, MIPS, IA-64... :
Bi-Endian (Bi boutistes)
Processeurs IBM : selon l'époque, la mode, le sens du
vent et l'âge du capitaine
Boutisme 133

Galerie des monstres (!)


Architectures Middle-Endian :
Les octets sont organisés en mots de 2 octets selon une
méthode.
Les mots de 2 octets sont organisés en mots de 4 octets
selon une autre méthode.
Ex: $01 23 45 67
S'écrit 23 01 67 45 ou 45 67 01 23 par adresses
successives
N'existe plus aujourd'hui, mais...
134

Boutisme
Cas des systèmes d'exploitation :
Little Endian :
DOS/Windows, MacOS (intel), iOS
Big Endian :
MacOS (autres architectures)
Bi-Endian :
tous les autres (selon la plateforme)
135

Boutisme : conséquences
Ne pas faire n'importe quoi avec les pointeurs
lont int *A;
short int B;
short int C;

B = (short int)*A;
C = *(short int *)C;
? B==C ?
136

Boutisme : conséquences
En communication :
les communication se font sur une base série.
L'ordre des bits est primordial, mais les bits sont
référencés par rapport aux octets.
Communication sauvage :
même programme, même architecture : pas de problème
pour le reste : il faut gérer le boutisme
Comminication normée :
Le boutisme est généralement imposé pour les champs de
contrôle
Les données sont libres, se référer au cas des fichiers.
137

Boutisme : conséquences
Format de fichier :
L'ordre des octets dans un fichier est sauvegarder d'une
machine à l'autre. Une convention de boutisme doit
être choisie et respectée pour toute gestion de fichier.

Notation :
On représente les 4 octets d'un long int par les
notations :
HH, HL, LH, LL
Répartition des données 138

structurées en mémoire
Dépend :
De la norme utilisée/choisie pour l'alignement/cadrage
Du boutisme de l'architecture
Du compilateur et des ses options.

=> origine de certains bugs


présence de code spécifique à l'architecture
explication de certains mécanismes lourds
intérêt des langages haut niveau pour cacher cette
représentation
Gestion de la mémoire 139

(problématique)
Segmentation de la mémoire ?
Mécanismes cachés derrière un Segfault ?
Fonctionnement de la mémoire virtuelle ?
- taille > 4Go en 32 bits !?!?!
- conservation des valeurs de pointeurs après
passage sur le disque dur ?!?!?
Valeurs des pointeurs redondantes d'un programme à
l'autre ?
Execution de plusieurs instances du même programme
en multitâche (performance des références ?).
140

Gestion de la mémoire
Tout est géré par l'unité de gestion de la mémoire
(MMU : memory management Unit)
Il y a deux systèmes d'adressages :
@ logiques (vues du logiciel)
@ physiques (vues par le composant mémoire)
La MMU fait la traduction/translation entre ces
adresses... (et plein d'autres trucs)
141

Gestion de la mémoire
Connexion de la MMU
µP Requètes d'interruption

Bus local
(@ logiques)
Mémoire Périph. Périph. Périph.
MMU

Bus de données (@ physiques)

Evènements générés :
Accès à une ressource interdite
Accès à une adresse notée vide
Accès en écriture sur un registre en lecture seule (ou ROM)
Accès data sur des instructions (et vice versa)
...
142

Gestion de la mémoire
Principe de fonctionnement
● Modification de l'adresse en fonction d'une table
● Translation car fonctionne par blocs de qqes kio, à
plusieurs dizaines de Mio.
● Si l'@ logique tombe sur une valeur non configurée,
déclenchement d'un évènement.
● la MMU en fait partie
=> seul le superviseur (OS) peut modifier la config de
la MMU
143

Gestion de la mémoire
Translation / Traduction d'adresses

Périph. Périph. Périph. Périph. Zone accessible


au superviseur
OS OS OS OS

Prog 2
Prog 3

Prog 2
Prog 2
Prog 1 Prog 1 Prog 3

Ram Physique Vue par Prog1 Vue par Prog2 Vue par Prog3
144

Gestion de la mémoire
Translation / Traduction d'adresses

Périph. Périph. Périph. Zone accessible


au superviseur
OS OS OS

Prog 2
Prog 3

Prog 2
Prog 2 Prog 2
Prog 1

Ram Physique Vue par Prog2 Vue par Prog2


(User) (Superviseur)
145

Gestion de la mémoire
Fonctionnement au niveau circuit :
Générateur IT
d'erreurs

@ logique Poids fort Table de @ Physique


correspondance

Poids faible

00000 0FC42
$00001678 $00001 00001 12345 $12345 $12345678
00002 43254
$678 $678
00003 3692F
... ...
146

Gestion de la mémoire
Pour consommer moins de ressources utilisation de
tailles de blocs variables
● 4 kio à 64 kio
● Avec l'évolution des logiciels, on peut atteindre 128 ou
256 Mio
● Organisation en arbre pour associer des blocs de tailles
différentes...
147

Gestion de la mémoire
Usage par un pilote de périphérique
création de la zone d'échange
'Prog 1' est stocké sur le disque (victime)

Périph. Périph. Périph. Périph.

OS OS OS OS

Prog 2 Prog 2
Prog 3 Prog 3
Echange
Prog 2 Prog 2
Prog 2 Prog 2
Prog 1 Echange
Ram Physique Vue par Prog2 Ram Physique Vue par Prog2
148

Gestion de la mémoire
Usage par un pilote de périphérique
en mode privilégié, le pilote peut accéder aux périphériques,
les données sont copiées avec la zone d'échange.

Périph. Périph. Périph. Périph.

OS OS OS OS

Prog 2 Prog 2
Prog 3 Prog 3
Echange Echange
Prog 2 Prog 2
Prog 2
Périph.
Echange Echange
Ram Physique Vue par Prog2 Ram Physique Vue par le pilote
149

Gestion de la mémoire
Usage par un pilote de périphérique
au retour, la zone d'échanges est intégrée à la mémoire du
programme jusqu'à sa libération éventuelle.

Périph. Périph. Périph. Périph.

OS OS OS OS

Prog 2 Prog 2 (b)


Prog 3 Prog 3
Echange
Prog 2 Prog 2 (a)
Prog 2
Périph.
Echange Prog 2 (c)
Ram Physique Vue par le pilote Ram Physique Vue par prog2
150

Gestion de la mémoire
Problème :
Certains appels système nécessitent des
modifications dans la config le la MMU
Accès aux périphériques (ouverture de fichier, lecture
clavier...)
Accès à la mémoire système (malloc, free, ...)

=> appel TRAP


déclenchement d'une interruption à la demande du
logiciel
151

Gestion de la mémoire
À l'origine, juste pensé pour éviter la fragmentation
mémoire et l'usage de plus de RAM que ne le
permettait le système d'adressage
● Aujourd'hui :
élément de base d'un OS
garantie de stabilité
outil de sécurité
● Aide à l'optimisation des performances
152

Gestion de la mémoire
Chargement à la demande
● (cas ou prog3 est le moins actif)

Périph. Périph. Périph. Périph.

OS OS OS OS

Prog 1 Prog 1

Prog 3
Prog 2 (b)

Prog 2 (a) Prog 2 (a)


Prog 2 Prog 2

Prog 2 (c) Prog 2 (c)


Ram Physique Vue par prog2 Ram Physique Vue par prog2
153

Gestion de la mémoire
Chargement à la demande
● (cas ou Prog2 utilise peu ou pas tout son espace
mémoire)
Périph. Périph. Périph. Périph.

OS OS OS OS

Prog 1 Prog 1

Prog 3 Prog 3

Prog 2 (a) Prog 2 (a)


Prog 2 Prog 2
Prog 2 (b)
Prog 2 (c) Prog 2 (c)
Ram Physique Vue par prog2 Ram Physique Vue par prog2