You are on page 1of 145

Architecture des ordinateurs

Sylvain MONTAGNY
sylvain.montagny@univ-savoie.fr
Btiment chablais, bureau 13
04 79 75 86 86

Retrouver tous les documents de Cours/TD/TP sur le site


www.master-electronique.com
Prsentation cours : Sommaire

zCours : 12 h en 8 sances
z Chapitre 1 : Rappels gnraux sur les processeurs

z Chapitre 2 : Le pipeline des microprocesseurs

z Chapitre 3 : Les mmoires caches

z Chapitre 4 : Les interruptions

z Chapitre 5 : Les accs DMA

Universit de Savoie 2
Prsentation TD
z TD : 15 h en 10 sances
z TD 1 : Rappels sur les architectures
microprocesseurs

z TD 2 : Pipeline

z TD 3 : Mmoires Caches

z TD 4 : Les interruptions

z TD 5 : Les transferts DMA

Universit de Savoie 3
Prsentation TP
z TP : 16 h en 4 sances
z TP 1 : Simulation de mmoire cache et pipeline

z TP 2 : Programmation dapplications sur cible

z TP 3 : Programmation dapplications sur cible

Universit de Savoie 4
Chapitre 1 : Rappel gnraux sur les
processeurs

z 1.1 Rappel sur larchitecture interne des


microprocesseurs
z 1.2 Le traitement des instructions
z 1.3 Les modes dadressages
z 1.4 Exemple dexcution dun programme

Universit de Savoie 5
Larchitecture interne
Wafer
Un microprocesseur est constitu dun morceau de silicium dop.
Cest donc un ensemble de millions de transistors.
z Wafer : Galette de plusieurs processeurs
z 1 processeur : quelques millimtres carrs

Universit de Savoie 6
Larchitecture interne
Unit commande/traitement

Un microprocesseur est construit autour


de deux lments principaux :

z Une unit de commande

z Une unit de traitement

Universit de Savoie 7
Larchitecture interne
Schma

Universit de Savoie 8
Larchitecture interne
Lunit de commande (1)

Elle permet de squencer le droulement des instructions. Elle


effectue la recherche en mmoire de l'instruction, le dcodage
de linstruction code sous forme binaire. Enfin elle pilote
lexcution de linstruction.

Les blocs de lunit de commande :


1. Le compteur de programme (PC : Programme
Counter) appel aussi Compteur Ordinal (CO)
est constitu par un registre dont le contenu est
initialis avec l'adresse de la premire instruction
du programme. Il contient toujours ladresse de la
prochaine instruction excuter.

Universit de Savoie 9
Larchitecture interne
Lunit de commande (2)
2. Le registre d'instruction et le dcodeur d'instruction :
Chacune des instructions excuter est transfr depuis
la mmoire dans le registre instruction puis est dcode
par le dcodeur dinstruction.

3. Bloc logique de commande (ou squenceur) : Il


organise l'excution des instructions au rythme dune
horloge. Il labore tous les signaux de synchronisation
internes ou externes (bus de commande) du
microprocesseur en fonction de linstruction quil a a
excuter. Il s'agit d'un automate ralis de faon micro-
programme.

Universit de Savoie 10
Larchitecture interne
Lunit de commande (3)

Universit de Savoie 11
Larchitecture interne
Lunit de traitement (1)
Elle regroupe les circuits qui assurent les traitements ncessaires
l'excution des instructions

Les blocs de lunit de traitement :


1. Les accumulateurs sont des registres de travail qui
servent stocker une oprande au dbut d'une
opration arithmtique et le rsultat la fin de
l'opration.
2. LUnit Arithmtique et Logique (UAL) est un
circuit complexe qui assure les fonctions logiques
(ET, OU, Comparaison, Dcalage, etc) ou
arithmtique (Addition, soustraction).

Universit de Savoie 12
Larchitecture interne
Lunit de traitement (2)
3. Le registre d'tat est gnralement compos de 8
bits considrer individuellement. Chacun de ces
bits est un indicateur dont l'tat dpend du rsultat
de la dernire opration effectue par lUAL. On les
appelle indicateur dtat ou flag ou drapeaux. Dans
un programme le rsultat du test de leur tat
conditionne souvent le droulement de la suite du
programme. On peut citer par exemple les
indicateurs de :
z Retenue (carry : C)
z Dbordement (overflow : OV ou V)
z Zro (Z)
z ...

Universit de Savoie 13
Larchitecture interne
LUnit de traitement (3)

UAL : Unit Arithmtique et Logique)


A B

8 8

OV =Overflow Flag
C = Carry Flag
C0
Slection de C1 Z = Zero Flag
lopration C2 S = Sign Flag
C3
UAL Flag = drapeau
P = Parity Flag Registre dtat

Rsultat

Universit de Savoie 14
Larchitecture interne
Lunit de traitement (4)

Universit de Savoie 15
Larchitecture interne
Architecture complte

Universit de Savoie 16
Rappels: le fonctionnement basique
dune opration de calcul
1

2
CPU Mmoire
4

z (1) Charger une instruction depuis la mmoire


z (2) Charger les oprandes depuis la mmoire
z (3) Effectuer les calculs
z (4) Stocker le rsultat en mmoire

Universit de Savoie 17
Larchitecture
Von Neuman

Mmoire
Programme
CPU BUS
&
donnes
z Un seul chemin d'accs la mmoire
z Un bus de donnes (programme et donnes),
z Un bus dadresse (programme et donnes)
z Architecture des processeurs dusage gnral
z Goulot d'tranglement pour l'accs la mmoire

Universit de Savoie 18
Larchitecture
Harvard

Mmoire
programme
CPU
Mmoire
donne
z Sparation des mmoires programme et donnes
z Un bus de donnes programme,
z Un bus de donnes pour les donnes,
z Un bus dadresse programme,
z Un bus dadresse pour les donnes.
z Meilleure utilisation du CPU :
z Chargement du programme et des donnes en parallle
19
Larchitecture
Harvard : Cas des microcontrleurs PIC

z Seul les bus de donne (data ou instructions) sont


reprsentes

Universit de Savoie 20
Chapitre 1 : Rappel gnraux sur les
processeurs

z 1.1 Rappel sur larchitecture interne des


microprocesseurs
z 1.2 Le traitement des instructions
z 1.3 Les modes dadressages
z 1.4 Exemple dexcution dun programme

Universit de Savoie 21
Le traitement des instructions
Organisation dune instruction
Le microprocesseur ne comprend quun certain
nombre dinstructions qui sont codes en binaire. Une
instruction est compose de deux lments :
z Le code opration : Cest un code binaire qui correspond laction
effectuer par le processeur
z Le champ oprande : Donne ou bien adresse de la donne.

La taille d'une instruction peut varier, elle est


gnralement de quelques octets (1 8), elle dpend
galement de l'architecture du processeur.

Universit de Savoie 22
Le traitement des instructions
Exemple dinstruction
z Instruction Addition :
Accumulateur = Accumulateur + Oprande
Correspond linstruction ADD A,#2

Instruction (16 bits)


Code opratoire (5 bits) Champ oprande (11 bits)
ADD A #2
11001 000 0000 0010

Cette instruction est comprise par le processeur par le mot binaire :


11001 000 0000 0010 = code machine

Universit de Savoie 23
Le traitement des instructions
Phase 1 : Recherche de linstruction en mmoire
z La valeur du PC est place sur le bus d'adresse par l'unit de
commande qui met un ordre de lecture.
z Aprs le temps d'accs la mmoire, le contenu de la case
mmoire slectionne est disponible sur le bus des donnes.
z L'instruction est stocke dans le registre dinstruction du processeur.

Universit de Savoie 24
Le traitement des instructions
Phase 2 : Dcodage et recherche de loprande
z L'unit de commande transforme l'instruction en une suite de
commandes lmentaires ncessaires au traitement de l'instruction.
z Si l'instruction ncessite une donne en provenance de la mmoire,
l'unit de commande rcupre sa valeur sur le bus de donnes.
z Loprande est stock dans le registre de donnes.

Universit de Savoie 25
Le traitement des instructions
Phase 3 : Excution de linstruction
z Le squenceur ralise l'instruction.
z Les drapeaux sont positionns (registre d'tat).
z L'unit de commande positionne le PC pour l'instruction suivante.

Universit de Savoie 26
Le traitement des instructions
Les architectures RISC et CISC (1)

Actuellement larchitecture des microprocesseurs se


composent de deux grandes familles :

z L architecture CISC
(Complex Instruction Set Computer)

z Larchitecture RISC
(Reduced Instruction Set Computer)

Universit de Savoie 27
Le traitement des instructions
Les architectures RISC et CISC (2)

Universit de Savoie 28
Chapitre 1 : Rappels gnraux sur les
processeurs

z 1.1 Rappel sur larchitecture interne des


microprocesseurs
z 1.2 Le traitement des instructions
z 1.3 Les modes dadressages
z 1.4 Exemple dexcution dun programme

Universit de Savoie 29
Les modes dadressages

z Ce sont les diverses manires de dfinir la


localisation d un oprande. Les trois modes
dadressage les plus courant sont :

z Adressage immdiat
z Adressage direct
z Adressage indirect

Universit de Savoie 30
Les modes dadressages
Immdiat

Exemple : ADDA #4
ALU
Mmoire
M
Adresses Contenu
0x00 0..
110 1101

Accumulateur
0x01 0..
100 0101

0..
010 1111

Compteur Ordinal adrs 110 1 0101


ADDA
0 1 1 0#41 0 0 1
PC adrs+1 adrs + 1
adrs + 2
1..
010 1101


0011 1000

1
100 0101

1
010 1001

.
0111 1010

Universit de Savoie 31
Les modes dadressages
Direct

Exemple : ADDA adresseX


ALU
Mmoire
Adresses Contenu
0x00 0..
110 1101

Accumulateur
0x01 0..
100 0101

0..
010 1111

Compteur Ordinal adrs 110 1 0101


ADDA
0 adresseX
110 1001
PC adrs+1 adrs + 1
adrs + 2
1010 1101

adresseX 0xxxx
0 1 1 xxxx
1000

1
100 0101

1
010 1001

.
0111 1010

Universit de Savoie 32
Les modes dadressages
Indirect

Exemple : ADDA @adresseX


ALU
Mmoire
Adresses Contenu
0x00 0..
110 1101

Accumulateur
0x01 0..
100 0101

0..
010 1111

Compteur Ordinal adrs 110 1 0101


ADDA
0@adresseX
110 1001
PC adrs+1 adrs + 1
adrs + 2
1010 1101

@adresseX 0 adresseX
011 1000

1
100 0101
adresseX 1 0 1 0 xxxxxx
xxxxx 1001

.
0111 1010

Universit de Savoie 33
Les modes dadressages

z Pourquoi existe-t-il plusieurs modes dadressage ?

Universit de Savoie 34
Chapitre 1 : Rappel gnraux sur les
processeurs

z 1.1 Rappel sur larchitecture interne des


microprocesseurs
z 1.2 Le traitement des instructions
z 1.3 Les modes dadressages
z 1.4 Exemple dexcution dun programme

Universit de Savoie 35
Exemple dexcution
Directives
dassemblage
Valeurs des .TITLE Bruit_HP ; Titre du programme
.PROC I8085 ; Processeur utilis
symboles
.START OSCIL ; Adresse dbut programme

00000040 HP = 1064 ; Adresse du Haut-Parleur (40 Hexa)


00000000 HPOFF = 0 ; Constante, membrane relache
00000001 HPON = 1 ; Constante, membrane attire

000000 .LOC 0 Mnmoniques ; Adresse dassemblage du programme


des instructions
000000 OSCIL:

000000 3E 00 MOVE #HPOFF, A ; Charge valeur HPOFF (0) dans laccumulateur A


000002 D3 40 MOVE A, $HP ; Charge A sur priphrique HP
000004 3E 01 MOVE #HPON, A ; Charge valeur HPON (1) dans laccumulateur A
000006 D3 40 MOVE A, $HP ; Charge A sur priphrique HP
000008 C3 00 00 JUMP OSCIL ; Saute au dbut OSCIL
00000B

Code des .END ; Fin de lassemblage


Adresses instructions Commentaires
36
Exemple dexcution
Programme:
Vue symbolique
instructions
.00 3E MOVE ,A
MOVE #HPOFF,A
Adresses .01 00 #HPOFF

.02 D3 MOVE A,
MOVE A,$HP
.03 40 $HP

.04 3E MOVE ,A
MOVE #HPON,A
.05 01 #HPON

.06 D3 MOVE A,
MOVE A,$HP
.07 40 $HP

.08 C3 JUMP

.09 00 JUMP OSCIL

0A 00 OSCIL

37
Exemple dexcution

Continue.

c le c le cle c le
u u u u
re
bo e bo e bo e bo
i m m m
i i i
1 2 3 4

Universit de Savoie 38
Chapitre 2 : Le pipeline

z 2.1 Dfinition dun pipeline


z 2.2 Les tages dun pipeline
z 2.3 Les alas dans le pipeline

Universit de Savoie 39
Dfinition dun pipeline
Comparaison (1)

1re tape de conception

2me tape de conception

3me tape de conception

4me tape de conception


Universit de Savoie 40
Dfinition dun pipeline
Comparaison (2)
Dfinition dun pipeline
Comparaison (3)
Dfinition dun pipeline
z La technique du pipeline est une technique de mise en oeuvre qui
permet plusieurs instructions de se chevaucher pendant
l'excution.

z Une instruction est dcoupe dans un pipeline en petits morceaux


appels tage de pipeline.

z La technique du pipeline amliore le dbit des instructions plutt


que le temps d'excution de chaque instruction.

z La technique du pipeline exploite le paralllisme entre instructions


dun flot squentiel dinstructions. Elle prsente lavantage de
pouvoir, contrairement d'autres techniques d'acclration, tre
rendue invisible du programmeur.

Universit de Savoie 43
Chapitre 2 : Le pipeline

z 2.1 Dfinition dun pipeline


z 2.2 Les tages dun pipeline
z 2.3 Les alas dans le pipeline

Universit de Savoie 44
Les tages dun pipeline
P (Prefecth) - Generate program address = Incrmentation du compteur ordinal
F (Fetch) - Get Opcode = Lecture du code de linstruction en mmoire
D (Decode) - Decode instruction = Dcodage de linstruction
A (Access) - Generate read address = Calcul des adresses des oprandes
= Calcul de ladresse du rsultat
R (Read) - Read operands = Lecture des oprandes en mmoire
X ( Execute) = Excution de linstruction
= Ecriture du rsultat ladresse calcule

P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
P F D A R X
Full Pipeline : Toutes les units
matrielles du DSP sont en activits
Les tages dun pipeline
Comparaison avec et sans pipeline

z Moins de cycles par instruction


z Consommation rduite

Universit de Savoie 46
Les tages dun pipeline
Utilisation des ressources par le pipeline

Etage
Description Partie hardware utilise
pipeline
P Generate program address PC
F Get Opcode Program memory
D Decode instruction Decoder
A Generate read address ARs, ARAU
Read Operand Data memory
R
Generate write address ARs, ARAU
Execute instruction MAC, ALU
X
Write result Data Memory

ARAU = Auxiliary Register Arithmetic Unit

47
7
Les tages dun pipeline
Les retards
z Le pipeline atteint son plein rendement une
fois quil est rempli
z Un retard peut se produire
z Sil existe un conflit de ressources (retard ponctuel)
z accs la mmoire
z utilisation des bus
z En cas de rupture de squence (vidange du
pipeline)
z branchement non prvu
z appel de sous-programme
z interruption

Universit de Savoie 48
Les tages dun pipeline
Exemple de rupture

Program
54x &
Donnes
P1 F1 D1 A1 R1 X1
P2 F2 D2 A2 R2 X2
P3 F3 D3 A3 R3 X3
P4 -- -- -- F4 D4 A4 R4 X4
-- -- -- P5 F5 D5 A5 R5 X5
-- -- -- P6 F6 D6 A6 R6

Universit de Savoie 49
Les tages dun pipeline
Solution par lorganisation du code

54x 54x
P or D
D P

P1 F1 D1 A1 R1 X1
P2 F2 D2 A2 R2 X2
P3 F3 D3 A3 R3 X3
P4 F4 D4 A4 R4 X4
P5 F5 D5 A5 R5 X5
P6 F6 D6 A6 R6 X6

NO CONFLICT 50
Types de pipelining
Squentiel : Pipeline simple
Pas de pipeline (plupart des DSP)
(ex: Motorola 56000)

t t

Double pipeline Superpipelin :


(ex: Pentium) Nombre d'tages plus lev
(ex: TMS320C6000)

t t
Universit de Savoie 51
Les tages dun pipeline
Remarques sur les performances

Certaines phases sont inutiles pour certaines instructions


(p.ex. un LOAD ne ncessite pas d'excution), mais
toutes les instructions doivent traverser tout le pipeline.
Ce "gaspillage" est ncessaire pour simplifier le contrle.

Universit de Savoie 52
Les tages dun pipeline
Exemple de profondeur

Processeur Profondeur du pipeline

Intel Pentium 4 Prescott 31


Intel Pentium 4 20
AMD K10 16
Intel Pentium III 10
AMD Athlon 12
PowerPC G4 (PPC 7450) 7
IBM POWER5 16
IBM PowerPC 970 16
Intel Itanium 10

Universit de Savoie 53
Chapitre 2 : Le pipeline

z 2.1 Dfinition dun pipeline


z 2.2 Les tages dun pipeline
z 2.3 Les alas dans le pipeline

Universit de Savoie 54
Alas d'un pipeline
Les types dalas

z La prsence d'un pipeline (et donc le partage de l'excution


d'une instruction en plusieurs tages) introduit des alas :
z Alas de structure : L'implmentation empche une certaine
combinaison d'oprations (lorsque des ressources matriels sont
accdes par plusieurs tages).
z Alas de donnes : Le rsultat d'une opration dpend de celui
d'une opration prcdente qui n'est pas encore termine.
z Alas de contrle : L'excution d'un saut conditionnel ne permet
pas de savoir quelle instruction il faut charger dans le pipeline
puisque deux choix sont possibles.

Universit de Savoie 55
Les alas dans le pipeline
Alas de structures

Les alas de structure peuvent tre limins en agissant sur


l'architecture du processeur lors de sa conception.

Program
54x &
P1 F1 D1 A1 R1 X1 Donnes
P2 F2 D2 A2 R2 X2
P3 F3 D3 A3 R3 X3
P4 -- -- -- F4 D4 A4 R4 X4
-- -- -- P5 F5 D5 A5 R5 X5
-- de Savoie--
Universit-- P6 F6 D6 A6 56 R6
Les alas dans le pipeline
Alas de donnes (1)

z Une instruction ne peut rcuprer le rsultat de la


prcdente car celui-ci n'est pas encore disponible.
Exemple :
ADD R1, R2, R3 // R1 = R2 + R3
STORE R1, 1000 // C(1000) = R1

z Cette squence ne stocke pas l'emplacement


mmoire 1000 la valeur de R1 contenant la somme R2
+ R3, mais la valeur de R1 contenue avant l'instruction
ADD.

Universit de Savoie 57
Les alas dans le pipeline
Alas de donnes (2)

z Prenons par exemple la squence suivante. Cette suite dinstruction


possde une dpendance directe simple. En effet A ne peut pas
tre disponible pour la partie droite de la seconde instruction,
puisquelle nest pas encore excuter lorsque les oprandes de la
seconde instruction sont chargs dans le pipeline.
1. A=B+C
2. D=A+C
3. E=F+B

z Une solution consiste rarranger les instructions. Dans cet


exemple, l'opration de la ligne 3 n'a aucune interdpendance avec
les deux prcdentes. Le code modifi sera :
1. A=B+C
2. E=F+B
3. D=A+C

Universit de Savoie 58
Les alas dans le pipeline
Alas de donnes (3)

z Si ncessaire, les instructions intercales peuvent tre des NOP.


1. A=B+C
2. NOP
3. D=A+C
4. E=F+B

z Remarques :
z Le compilateur n'est pas toujours en mesure de dtecter les alas (par
exemple, si les alas concernent des pointeurs).
z Le nombre d'instructions intercaler dpend de la structure (nombre
d'tages) du pipeline.
z La complexit du compilateur en est fortement augmente.

59
Les alas dans le pipeline
Alas de donnes (4)
Chargement
Chargement
La frquence leve d'alas de donnes peut (instruction)
(instruction)
justifier l'introduction de matriel supplmentaire. On
peut par exemple introduire une connexion directe
entre la sortie de l'tage d'excution et l'tage de Dcodage
Dcodage
chargement des oprandes. Ceci permet au rsultat
d'une instruction d'tre un oprande de l'instruction
suivante. Chargement
Chargement
(oprandes)
(oprandes)
Ci contre un pipeline pouvant raliser cette solution.
Excution
Excution

Rangement
Rangement
(oprandes)
(oprandes)
Universit de Savoie
Les alas dans le pipeline
Alas de contrle (1)

La prsence d'un pipeline introduit des complications lors


de l'excution d'un saut ou dun saut conditionnel. L'tage
de dcodage de l'instruction n'est pas en mesure de
calculer l'adresse de l'instruction suivante avant de
connatre le rsultat de linstruction prcdente.

Universit de Savoie 61
Les alas dans le pipeline
Alas de contrle (2)

z Une solution possible est de faire en sorte que le processeur devine


si le branchement sera pris ou pas pris (branch prediction) et
commencer excuter les instructions correspondant cette
dcision.
z Si le choix se rvle correct, la pnalit de branchement est limine.
z Si le choix se rvle incorrect, il faudra vider le pipeline et charger
l'instruction correcte.

z Pour faire de la prdiction de branchement il y a deux possibilits :


z Solution statique : La direction du branchement est fixe, dfinie en
matriel au moment de la conception du processeur.
z Solution dynamique : La direction du branchement est dfinie au
moment de l'excution du programme, sur la base d'une analyse du
code.

Universit de Savoie 62
Les alas dans le pipeline
Alas de contrle (3)
Solution statique :
z Les sauts en arrire (boucles) sont plus souvent pris
que pas pris. En effet, une boucle est souvent raliser
avec plus que 2 itrations.
=>On peut donc faire une prdiction selon la direction:
z si le saut est en arrire, il est pris,
z s'il est en avant, il n'est pas pris.

Cette stratgie donne des trs bons rsultats (70-


80%) avec une augmentation relativement restreinte
de la logique de contrle: elle est utilise dans
plusieurs processeurs (p.ex., MicroSparc, HP-PA).

Universit de Savoie 63
Les alas dans le pipeline
Alas de contrle (4)
Solution dynamique
z Pour raliser une prdiction dynamique le processeur mmorise le
comportement du programme lors de l'excution des sauts. chaque
excution d'un branchement dans un programme, le processeur
mmorise si le saut tait pris ou pas pris dans un tampon de prdiction
de branchement. Sur la base du comportement pass du programme
pour un branchement donn, le processeur prdit son comportement
pour l'excution suivante du mme saut.
z Par rapport la prdiction statique, la prdiction dynamique est plus
performante, mais ncessite une quantit trs importante de logique de
contrle.

PRIS NON PRIS


Prdiction
Prdiction
non Prdiction
Prdiction
non ralise
ralise
ralise
ralise PRIS NON PRIS

Machine dtat prsente dans le processeur pour la prdiction de branchement statistique


Les alas dans le pipeline
Gestion des interruptions
La prsence d'un pipeline complique le traitement des
interruptions: lors du dclenchement d'une interruption non-
masquable, la routine de traitement doit parfois tre lance
immdiatement. Le pipeline contiendra alors des instructions
partiellement excutes.

CK

INST 1 P F D A R X

INST 2 P F D A R X INTERRUPTION

INST 3 P F D A R X

INST 4 P F D A R X

Universit de Savoie 65
Les alas dans le pipeline
Rsum

z Le pipeline amliore le dbit mais pas le temps par instruction : il


faut toujours cinq cycles une instruction dun pipeline cinq
tages pour sexcuter.

z Les dpendances de donnes et de contrle dans les


programmes imposent une limite suprieure au gain que peut
gnrer le pipeline car le processeur doit parfois attendre la fin
dune instruction pour que les dpendances soit rsolues.

z On peut lever cette limite, mais pas lliminer, en rduisant les


alas de contrle par des optimisations, et les alas de donnes
par un ordonnancement des instructions par le compilateur.

Universit de Savoie 66
Chapitre 3 : Les mmoires caches

z 3.1 Objectif et principe dune mmoire cache


z 3.2 O placer un bloc?
z 3.3 Comment un bloc est-il trouv?
z 3.4 Quel bloc remplac lors dun dfaut?
z 3.5 Comment sont traites les critures?

Universit de Savoie 67
Objectifs et principes du cache

z Les mmoires doivent rpondre deux


contraintes contradictoires :
z Taille importante
z Temps daccs court

z Principe de base du cache :


z Les mots mmoires les plus frquemment
utiliss sont conservs dans une mmoire
rapide (cache) plutt que dans une mmoire
lente (mmoire centrale).

Universit de Savoie 68
Objectifs et principes du cache
Vitesse des mmoires et des processeurs (1)

z volution

Anne Temps de cycle Temps de cycle


processeur mmoire
1990 ~100ns ~140ns
1998 ~4ns ~60ns
2002 ~0.6ns ~50ns

Universit de Savoie 69
Objectifs et principes du cache
Vitesse des mmoires et des processeurs (2)

Universit de Savoie 70
Objectifs et principes du cache
Principe de localit (1)

z Localit spatiale :
z Tendance accder aux donnes qui sont
proches de celles rcemment utilises

z Localit temporelle :
z Tendance rutiliser des donnes
rcemment utilises

Universit de Savoie 71
Objectifs et principes du cache
Principe de localit (2)

Localit temporelle = prendre les mme


donnes dans un court instant
Adresses en mmoire

Localit spatiale = Prendre


les donnes adjacentes dans
un court instant

Temps 72
Objectifs et principes du cache
Principe de localit (3)

z Les donnes z Le programme


for (i=0; i<N; i++) { ...
05 LOOP LDR R1, R0, #3
for (j=0; j<N; j++) {
06 ADD R1, R1, #5
y[i] = y[i] + a[i][j] * x[j] 07 STR R1, R0, #30
} 08 ADD R0, R0, #1
} 09 ADD R3, R0, R2
0A BRn LOOP
...
y[i]: proprits de localits temporelle
et spatiale.
Boucle : rutilisation des instructions :
a[i][j]: proprit de localit spatiale. localit temporelle

x[j]: proprit de localit temporelle et Instructions conscutives en mmoire :


spatiale. localit spatiale

Universit de Savoie 73
Objectifs et principes du cache
Analogie
z Homme = Unit de calcul
z Le bureau = Mmoire cache
z La bibliothque = Mmoire centrale

Universit de Savoie 74
Objectifs et principes du cache

Llment de base est le bloc


4 octets < Nbre doctet par blocs < 128 octets)

Unit
Unit Mmoire
Mmoire Mmoire
Mmoire
de
de Cache Centrale
Cache Centrale
calcul
calcul

Universit de Savoie 75
Objectifs et principes du cache
Organisation mmoire
z La mmoire cache possde x blocs
z La mmoire centrale possde y blocs
z y >> x

cache X blocs
Processeur

Mmoire
y blocs
Contrleur
centrale

Adresses

Mme packaging 76
Objectifs et principes du cache
Placement des donnes dans le cache

z Le placement des donnes dans le cache est gr par


le matriel :
z le programmeur na pas se soucier du placement
des donnes dans le cache
z En revanche le programmeur devra prendre en
considration la prsence du cache pour optimiser
les performances.
z le fonctionnement du cache est transparent pour le
programmeur.

Universit de Savoie 77
Objectifs et principes du cache
Principe gnral (1)
z LUC veut faire rfrence un bloc X2 dans le cache
z Recherche de X2 dans le cache
z => Dfaut de cache

X4
X7
Unit
Unit
de
de X1 Mmoire
Mmoire
Calcul Centrale
Centrale
Calcul
(UC)
(UC) X8
X3
78
Objectifs et principes du cache
Principe gnral (2)
z LUC veut faire rfrence un bloc X2 dans le cache
z Extraction de X2 de la mmoire centrale

X4
X7
Unit
Unit
de
de X1 Mmoire
Mmoire
Calcul Centrale
Centrale
Calcul X2
(UC)
(UC) X8
X3
79
Objectifs et principes du cache
Principe gnral (3)
z Il y a eu transfert dun nouveau bloc (X2) de la
mmoire centrale, dans la mmoire cache.

X4 X4
X7 X7
Avant Aprs

X1 X1
X2
X8 X8
X3 X3

Universit de Savoie 80
Objectifs et principes du cache
Bloc ou ligne de cache (1)

z Lunit dinformation qui peut tre prsente ou


non dans le cache est appele un bloc, qui
constitue une ligne (ou range) du cache. Les
blocs ont gnralement entre 4 et 128 octets
et sont tous de mme taille dans un cache
donn.

z La mmoire centrale et la mmoire cache ont


imprativement les mme tailles de blocs.

Universit de Savoie 82
Objectifs et principes du cache
Bloc ou ligne de cache (2)
z Ladresse fournie par le processeur peut tre
scinde en deux parties : le n de bloc et
ladresse dans le bloc.

z Exemple : @ sur 32 bits et blocs de 8 octets

Bits 31 5 4 3 2 1 0
1 bloc 8 octets
X8
Numro de bloc Emplacement de X3
loctet dans le bloc

Universit de Savoie 83
Objectifs et principes du cache
tiquettes

z chaque bloc on associe


z Une tiquette :
z La valeur de cette tiquette permettra de dcider si un
bloc donn est effectivement dans le cache ou non.

z Un bit de validit :
z Il permet de savoir si les donnes du bloc sont obsoltes
ou pas.

Universit de Savoie 84
Chapitre 4 : Les mmoires caches

z 4.1 Objectif et principe dune mmoire cache


z 4.2 O placer un bloc?
z Caches totalement associatifs

z Caches correspondance directe

z 4.3 Comment un bloc est-il trouv?


z 4.4 Quel bloc remplac lors dun dfaut?
z 4.5 Comment sont traites les critures?

Universit de Savoie 85
O placer un bloc?
Diffrentes organisations de cache
O placer une ligne de la mmoire principale dans le cache?
Compltement Cache correspondance Cache associatif par
associatif direct ensemble de bloc
Bloc 0 1 2 3 4 5 6 7 Bloc : 4 (12 mod 8) 0 (12 mod 2)
Bloc 0 1 2 3 4 5 6 7 Bloc 01 23 45 6 7
no.
no. no.

Set Set Set Set


0 1 2 3
Block-frame address

Bloc 1111111111222222222233
no. 01234567890123456789012345678901
86
Cache associatif
z Le numro de bloc est utilis comme tiquette.
Les tiquettes sont stockes dans un
rpertoire en mme temps que les donnes
z Un bloc peut tre plac nimporte o dans la
mmoire cache.

Etiquette

@ dun octet 000000100000110000100000000000 00

Adresse dans le bloc


Numro de bloc
87
Cache associatif

@ dun octet 000000100000110000100000000000 00

00 01 10 11
tiquette V Donnes

Rpertoire dtiquette
88
Cache correspondance directe
z Dans le cache accs direct, le champ
numro de bloc est scind en deux parties :
ltiquette et lindex. Ltiquette et les donnes
correspondantes sont toujours enregistres dans
la range donne par le champ index.

tiquette Index Adresse


@ dun octet
dans le bloc

Numro de bloc

Universit de Savoie 89
Cache correspondance directe
z Lindex donne directement la position dans le cache
Nbr ligne de cache = 2 Nbre bits d'index

tiquette index
00000010000011000010 0000000100 00

00 01 10 11
tiquette V Donnes
000

004



3FF
90
Cache associatif par ensemble de blocs

z Le cache associatif par ensemble de blocs est


un compromis entre le cache purement associatif
et le cache correspondance directe. Le choix
dun ensemble est associatif. Cependant, chaque
ensemble est gr comme dans le cache
correspondance direct.

tiquette Index Adresse


@ dun octet
dans le bloc

Numro de bloc
Universit de Savoie 91
Cache associatif par ensemble de blocs

z Les donnes peuvent tre ranges dans nimporte


quelle ensemble (associatif)
z Par contre lindex indique la ligne laquelle on stocke
la donne (correspondance directe)
tiquette Index
@ dun octet 0000000001000000100000 01000010 00

tiquette Donnes tiquette Donnes tiquette Donnes tiquette Donnes


00000000
00000001
.
.
.
01000010
.
.

11111111
92
Les tiquettes en fonction du type de caches

z Cache associatif
Etiquette Adresse doctet

31 ... ... ... ... 2 10

z Cache correspondance directe


Etiquette Index Adresse doctet

31 ... ... ... ... 12 11 2 10

z Cache associatif par ensemble de bloc


Etiquette Index Adresse doctet

31 ... ... ... ... 10 9 2 10


93
Chapitre 4 : Les mmoires caches

z 4.1 Objectif et principe dune mmoire cache


z 4.2 O placer un bloc?
z 4.3 Comment un bloc est-il trouv?
z Caches totalement associatifs

z Caches correspondance directe

z 4.4 Quel bloc remplac lors dun dfaut?


z 4.5 Comment sont traites les critures?

Universit de Savoie 94
Comment un bloc est-il trouv?
Recherche dun bloc dans le cache
z Quand une donne est place dans le cache, le
numro de bloc de ladresse fournie par le processeur
est plac dans le champ tiquette de la range o la
donne est place.

z chaque accs mmoire, les comparateurs


comparent simultanment le n de bloc de ladresse
demande avec toutes les tiquettes se trouvant dans
le cache.

z Si galit => Succs Sinon => Dfaut

95
Comment un bloc est-il trouv?
Cas du Cache associatif

z Comparaison entre ltiquette de ladresse et celle rang en


mmoire cache. Succs est valide que si V=1.
@ de loctet demand par le processeur
000000100000110000100000000000 00
Comparateurs
de 30 bits 00 01 10 11
tiquette V Donnes

succs Bus de donnes 96


Comment un bloc est-il trouv?
Cas du Cache correspondance directe
z Comparaison entre ltiquette de ladresse et celle
range en mmoire cache. Succs est valide que si V=1.
tiquette index
00000010000011000010 0000000100 00

00 01 10 11
000 tiquette V Donnes
Comparateur
20 bits
004

3FF

succs Bus de donnes


Universit de Savoie 97
Chapitre 4 : Les mmoires caches

z 4.1 Objectif et principe dune mmoire cache


z 4.2 O placer un bloc?
z 4.3 Comment un bloc est-il trouv?
z 4.4 Quel bloc remplac lors dun dfaut?
z 4.5 Comment sont traites les critures?

Universit de Savoie 98
Quel bloc remplac lors dun dfaut ?

z Remplacement alatoire :
z Simplicit de l'algorithme

z FIFO (First In First Out)


z Simplicit de conception

z LRU (Least Recently Used)


z Doit mmoriser la liste des derniers lments
accds, circuits complexes.

Universit de Savoie 99
Chapitre 4 : Les mmoires caches

z 4.1 Objectif et principe dune mmoire cache


z 4.2 O placer un bloc?
z 4.3 Comment un bloc est-il trouv?
z 4.4 Quel bloc remplac lors dun dfaut?
z 4.5 Comment sont traites les critures?

Universit de Savoie 100


Gestion des critures (1)
z Quand une donne se situe dans le cache, le
systme en possde deux copies :
z une dans la mmoire principale
z une dans la mmoire cache
z Comment grer les mises jour lorsque la donne
est modifie localement?
Mmoire cache Mmoire centrale

X2 X2

101
Gestion des critures (2)
z write-through : La donne est crite la fois dans le
cache et dans la mmoire principale. La mmoire
principale et le cache ont tout moment une valeur
identique
z write-back : L'information n'est crite dans la mmoire
principale que lorsque la ligne disparat du cache.
Cette technique est la plus rpandue car elle permet
d'viter de nombreuses critures mmoires inutiles.
Pour ne pas avoir crire des informations qui n'ont
pas t modifies (et ainsi viter d'encombrer
inutilement le bus), chaque ligne de la mmoire cache
est pourvue d'un bit dirty. Lorsque la ligne est modifie
dans le cache, ce bit est positionn 1, indiquant qu'il
faudra rcrire la donne dans la mmoire principale.
Universit de Savoie 102
Chapitre 3 : Les interruptions

z 3.1 Problmatique & dfinition


z 3.2 Rle de la pile
z 3.3 Organisation logicielle

Universit de Savoie 103


Les interruptions
Problmatique & dfinition
z Un systme informatique nest utile que sil
communique avec lextrieur. Lobjectif est de pouvoir
prendre connaissance que le priphrique sollicite le
processeur. Cette sollicitation arrive de faon
totalement asynchrone.

Deux modes sont possibles :


z Une mthode par scrutation (polling) permet dinterroger
rgulirement les priphriques afin de savoir si une nouvelle
donne est prsente.
z Une mthode par interruption permet au priphrique lui-
mme de faire signe au processeur de sa prsence.

Universit de Savoie 104


Les interruptions
Scrutation Vs interruption
z Scrutation (polling)
z Coteux en temps (multiplier par le nombre de priphrique
interroger)
z Implmentation : Appel classique une fonction dans le
programme

z Interruption
z Demande linitiative du priphrique
z Prise en compte rapide de lvnement
z Implmentation : Interruption asynchrone dun programme
puis retour au mme endroit la fin du traitement

Universit de Savoie 105


Les interruptions
Schma

z Une interruption est un arrt temporaire de l'excution normale d'un


programme informatique par le microprocesseur afin d'excuter un autre
programme (appel routine d'interruption).

Universit de Savoie 106


Les interruptions
Types dinterruption
z Interruption masquable
z Un masque dinterruption est un mot binaire de configuration
du microprocesseur qui permet de choisir (dmasquer) quels
modules pourront interrompre le processeur parmi les
interruptions disponibles.

z Interruption non masquable


z Elles s excutent quoi quil arrive, souvent avec une priorit
lev (ex : Reset)

Universit de Savoie 107


Les interruptions
Configuration

z Un systme peut accepter plusieurs sources


dinterruption. Chacune est configurable par registre
(registre dinterruption).

z Mthode de configuration des interruptions


z Slectionner les interruptions qui nous intressent
z Valider les interruptions de faon globale
z Ecrire le/les sous programme dinterruption
z Dfinir les priorits entres interruptions

Universit de Savoie 108


Les interruptions
Configuration
z Dans le sous programme dinterruption
z Sauvegarder le contexte (fait automatique en langage C)
z Dfinir la source dinterruption (si le sous programme est commun entres
plusieurs sources dinterruption)
z Rinitialiser les flags dinterruption
z Ecrire le code relatif lapplication
z Restituer le contexte (fait automatique en langage C)
Cas du 80C51 (intel)
Cas du PIC 16F877 (microchip)
Flag dinterruption Bit de masquage

Universit de Savoie 110


Les interruptions
Dmasquage des interruptions

z Autorisation des interruptions


z Lautorisation globale des interruptions

z Dmasquage des interruptions

Universit de Savoie 111


Les interruptions
Les flags dinterruption

z Visualisation des flags dinterruption

Universit de Savoie 112


Les interruptions
Le rle de la pile

z La pile est une mmoire LIFO (Last In First


Out) dans laquelle on stoke des variable
temporaire (donne ou adresse). Le haut de la
pile est point par le registre SP (Stack
Pointer).

113
Les interruptions
Rle de la pile
z Elle va servir :
z sauvegarder le contexte lenvironnement
(adresse du programme et valeur des registres au
moment de linterruption).
z restituer le contexte la fin de linterruption

Note 1 : La sauvegarde et la restitution est faite implicitement en


langage C.
Note 2 : Une fonction dinterruption est not spcifiquement.
Exemple du PIC qui ne possde quun seul vecteur dinterruption
:

Universit de Savoie 114


Les interruptions
Avant linterruption

PC ( Addr Prog ) SP ( Addr Pile)

Programme
principal

Registres
x Pile
xx

Programme
dinterruption
115
Les interruptions
Arrive dune interruption

PC ( Addr Prog IT ) SP ( Addr Pile +1)

Programme
principal

Registres
x Pile
Addr Prog
xx

Programme
dinterruption
116
Les interruptions
Arrive dune interruption : Sauvegarde contexte

PC ( Addr Prog ) SP ( Addr Pile + 3)

Programme
principal

Registres
x
x xx Pile
Addr Prog
xx

Programme
dinterruption
117
Les interruptions
Fin dune interruption : Restitution contexte

PC ( Addr fin Prog IT) SP ( Addr Pile + 1)

Programme
principal

Registres
x
x
xx Pile
Addr Prog
xx

Programme
dinterruption
118
Les interruptions
Fin dune interruption

PC ( Addr Prog ) SP ( Addr Pile)

Programme
principal

Registres

x Pile
Addr Prog
xx

Programme
dinterruption
119
Les interruptions
Retour au programme principal

PC ( Addr Prog + 1 ) SP ( Addr Pile)

Programme
principal

Registres
x Pile
xx

Programme
dinterruption
120
Chapitre 4 : Les accs DMA

z 4.1 Dfinitions et problmatiques


z 4.2 Les interfaces des disques de stockages
z 4.3 Les mthodes daccs directs
z 4.4 Etude dun systme

Universit de Savoie 121


Dfinitions et problmatiques
Pourquoi les accs DMA?
Le systme doit rcuprer des donnes en
provenance de ces priphriques externes.
Plusieurs mthodes sont possibles :
z Une mthode par scrutation (polling) permet
dinterroger rgulirement les priphriques afin de
savoir si une nouvelle donne est prsente.
z Une mthode par interruption permet au
priphrique lui-mme de faire signe au processeur
de sa prsence.
z Une mthode par Accs Direct la Mmoire (DMA)
permet de grer le transfert de faon autonome.

Universit de Savoie 122


Dfinitions et problmatiques

L'accs direct la mmoire ou DMA est un procd o des donnes


circulant de ou vers un priphrique (port de communication, disque dur)
sont transfres directement par un contrleur adapt vers la mmoire
centrale de la machine, sans intervention du microprocesseur. Le micro
interviendra seulement pour initier et conclure le transfert. La conclusion
du transfert ou la disponibilit du priphrique peuvent tre signals par
interruption.

(Source : Wikipdia)

Universit de Savoie 123


Dfinitions et problmatiques
Utilisations

z Carte graphique

z Carte son

z Disque dur

z Lecteur CD

z Et beaucoup dautres priphriques internes

Universit de Savoie 124


Chapitre 4 : Les accs DMA

z 4.1 Dfinitions et problmatiques


z 4.2 Les interfaces des disques de stockages
z 4.3 Les mthodes daccs directs
z 4.4 Etude dun systme

Universit de Savoie 125


Les interfaces des disques
Les interfaces ATA
z Le standart ATA (Advanced Tecnology Attachment) est une
interface permettant la connexion de priphrique de stockage
sur les ordinateurs de type PC. Ce standard appararu en 1994
tend disparatre au profit du SATA. Il est aussi connu sous le
nom IDE (Integrated Drive Elelectronics) ou E-IDE (Enhanced
IDE)
z Initialement pour connecter les disques dur, il a t tendu pour
pouvoir interfacer dautre priphriques de stockage (Interface
ATAPI=ATA-Packet Interface)

Universit de Savoie 126


Les interfaces des disques
Les interfaces SATA
z Les interfaces SATA (Serial ATA), permettent
de transfrer les donnes en srie.
z Gain de place
z Branchement chaud
z Rsolution de problme de CEM (compatibilit
Electromagntique)

Universit de Savoie 127


Chapitre 4 : Les accs DMA

z 4.1 Dfinitions et problmatiques


z 4.2 Les interfaces des disques de stockages
z 4.3 Les mthodes daccs directs
z 4.4 Etude dun systme

Universit de Savoie 129


Les mthodes daccs directs
Les modes de transfert
z Mode PIO
PIO : Programmed Input Output.
Permet dchanger des donnes avec la mmoire
vive. Ces transferts sont grs entirement par le
processeur.

z Mode DMA
La technique du DMA (Direct Memory Access)
permet de dsengorger le processeur en permettant
chacun des priphriques d'accder directement
la mmoire.

Universit de Savoie 130


Les mthodes daccs directs
Mode PIO
Des commandes gres directement par le processeur permette
la gestion du transfert. Toutefois, de gros transferts de donnes
peuvent rapidement imposer une grosse charge de travail au
processeur et ralentir l'ensemble du systme. Il existe 5 modes
PIO dfinissant le taux de transfert maximal.

Mode PIO Dbit (Mo/s)


Mode 0 3.3
Mode 1 5.2
Mode 2 8.3
Mode 3 11.1
Mode 4 16.7

Universit de Savoie 131


Les mthodes daccs directs
Mode DMA
z La technique du DMA (Direct Memory Access) permet de dsengorger le processeur
en permettant chacun des priphriques d'accder directement la mmoire. Deux
types de DMA existent:
z Le DMA dit "single word" permet de transmettre un mot simple chaque session de
transfert,
z Le DMA dit "multi-word" permet de transmettre successivement plusieurs mots
chaque session de transfert.
z Le tableau suivant liste les diffrents modes DMA et les taux de transfert associs :

Mode DMA Dbit (Mo/s)


0 (Single word) 2.1
1 (Single word) 4.2
2 (Single word) 8.3
0 (Multiword) 4.2
1 (Multiword) 13.3
2 (Multiword) 16.7

Universit de Savoie 132


Les mthodes daccs directs
Mode Ultra DMA (1)
Lide est daugmenter la frquence du signal
dhorloge pour augmenter la rapidit. Toutefois sur
une interface o les donnes sont envoyes en
parallle l'augmentation de la frquence pose des
problmes d'interfrence lectromagntiques. Deux
solutions ont t apport qui vont tre en troite
relation :
z Augmentation de la frquence : Utilisation des front montants
et descendant.
z Amlioration du connecteur ATA ( a partir de l'Ultra DMA
mode 4 un nouveau type de nappe a t introduit afin de
limiter les interfrences ; il s'agit d'une nappe ajoutant 40 fils
de masse entrelacs avec les fils de donnes.
z Apparition du CRC
Universit de Savoie 133
Les mthodes daccs directs
Mode Ultra DMA (2)
z Fonctionnement :
z La frquence de transfert augmente tant que les donnes transmises
se font sans erreur.
z Lorsque quune erreur est rencontre, le transfert passe dans un
mode Ultra DMA infrieur (voire sans Ultra DMA).

Mode Ultra DMA Dbit (Mo/s)


UDMA 0 16.7
UDMA 1 25.0
UDMA 2 (Ultra-ATA/33) 33.3
UDMA 3 44.4
UDMA 4 (Ultra-ATA/66) 66.7
UDMA 5 (Ultra-ATA/100) 100
UDMA 6 (Ultra-ATA/133) 133

Universit de Savoie 134


Les mthodes daccs directs
Les vitesses de transfert

Les vitesses de transfert (mode DMA ou Ultra DMA restent donc toujours
en troite relation avec larchitecture utilise (ATA, Serial ATA, )

Universit de Savoie 135


Les mthodes daccs directs
Les canaux DMA

z Un ordinateur de type PC possde 8 canaux DMA.


Les canaux DMA sont gnralement assigns comme suit :

DMA0 - System Use : Memory (DRAM) Refresh


DMA1 - Libre
DMA2 - contrleur de disquettes
DMA3 - port parallle
DMA4 - contrleur d'accs direct la mmoire (renvoi vers DMA0)
DMA5 - (carte son)/ libre
DMA6 - (SCSI)/ libre
DMA7 - disponible

Universit de Savoie 136


Dmarrer>Programmes>Accessoires>Outils Systme>informations Systme
Chapitre 4 : Les accs DMA

z 4.1 Dfinitions et problmatiques


z 4.2 Les interfaces des disques de stockages
z 4.3 Les mthodes daccs directs
z 4.4 Etude dun systme

Universit de Savoie 138


Etude dun systme (1)

139
Etude dun systme (2)

Universit de Savoie 140


Etude dun systme
Programmation logicielle (1)
z Nous avons toujours les trois possibilits pour le
transfert dinformation de lextrieur vers lintrieur du
systme.
z Polling (scrutation)
z Interruption
z DMA

z Pour la programmation des systmes embarqus, on


utilise des librairies :
z BSL : Board Support Library
z CSL : Chip Support Library

Universit de Savoie 141


Etude dun systme
Programmation logicielle (2)

Polling (scrutation)

Cas du TP 2 sur DSP TMS320

Ces fonctions font parties des librairies de la carte (Board Support Library)
>> Voir C:\CCStudio_v3.1\docs\hlp\C5416DSK.HLP

Universit de Savoie 142


Etude dun systme
Programmation logicielle (3)
Interruptions
z On active les interruptions sur la rception et lmission dune donne.
IRQ_enable(IRQ_EVT_RINT0); //Enables Reception event (IMR register flag)
IRQ_enable(IRQ_EVT_XINT0); //Enables Transmission event (IMR register flag)
IRQ_globalEnable(); //Enables all Unmask Events
IRQ_clear(IRQ_EVT_RINT0) // Clear the specified Interrupt Flag (IFR Register)

z Ces fonctions font parties des librairies de la carte (Chip Support Library)
z >> Voir aide > IRQ functions

Universit de Savoie 143


Etude dun systme
Programmation logicielle (4)

DMA

1. Dclaration et rservation buffers ping pong

2. Configuration des canaux DMA 0 et 1et


Configuration interruption (DMA0)

3. Cration des fonctions dinterruption pour traitement

Universit de Savoie 144


Etude dun systme
Programmation logicielle (5)
DMA 1

Universit de Savoie 145

You might also like