Title: Architecture des Ordinateurs
1Architecture des Ordinateurs
- La mémoire
- organisation
- adressage
- performances et astuces les caches
2Organisation
Soit une mémoire d'une capacité C donnée en
octets ou ko. Plusieurs manières de
l'organiser piqûre de rappel avec N
taille du bus d'adresse M taille du bus de
données (en bits) 8 coefficient entre bits et
octets
3Organisation
1 valeur de C ? plusieurs couples (M,N) exemple
C 256 Mo
25
Meilleure répartition ?
4Organisation
- Plusieurs critères
- nombre de pistes nombre minimal pour N maximal
- performance de débit rapatrier plus de données
en un échange - traitement des octets taille utilisée par
beaucoup d'applications ne correspond pas au
bus ni à la cellule mémoire - Performance de débit mise en avant
- augmenter taille de cellule mémoire,
- taille de bus de données
- et le bus d'adresse ?
5Traitement des octets
Transferts de données de 32 ou 64 bits (voire
plus). Comment traiter un octet (mot de 16
bits)? Utilité de traiter un octet ? Typage de
langages (char en C) fichiers texte suite
d'octets comment ranger un octet dans un mot
mémoire ? 2 possibilités petit-boutisme (little
endian) gros-boutisme(big-endian)
6Petit boutisme et gros boutisme
Numéroter les octets à l'intérieur d'un mot
mémoire ? numéroter les bits à l'intérieur d'un
octet !!!! Ex mot mémoire de 32 bits 4
octets Gros boutisme Petit boutisme
32 bits
0
1
2
3
32 bits
3
2
1
0
7Gros boutisme
32 bits
Adresse
0 1 2 3
8
9
10
11
12
13
14
15
8Petit boutisme
32 bits
Adresse
0 1 2 3
11
10
9
8
15
14
13
12
9Exemples de stockage de données
À partir du langage C type long int 4 octets
1 mot mémoire. Valeur à stocker 7. Sur 4
octets (on indique le contenu)
00
00
07
00
Stockage direct dans un mot mémoire pas de
problème de petit ou gros boutisme.
10Exemples de stockage de données
À partir du langage C type char 1 octet.
Valeur à stocker 18. Sur 1 octets (on
indique le contenu)
18
Stockage dans un octet problème de petit ou
gros boutisme ! Ne sera pas stocké au même
endroit du mot mémoire
11Exemples de stockage de données
À partir du langage C type char 1 octet.
Valeur à stocker 18.
Gros boutisme Petit boutisme
??
18
18
??
??
??
??
??
Idem pour chaîne de caractères, suite d'octets.
12Exemples de stockage de données
À partir du langage C type char . Valeurs Ã
stocker 'B' 'o' 'n' 'j' 'o' 'u' 'r'
Gros boutisme Petit boutisme
'n'
'B'
'B'
'o'
'j'
'o'
'n'
'j'
'r'
'o'
'u'
'r'
??
'u'
??
'o'
Rangement dans l'ordre des numéros d'octets
13Exemples de stockage de données
Types de taille intermédiaire (exemple, short int
occupant 16 bits).
Gros boutisme Petit boutisme
1ère donnée 16 bits
2ème donnée 16 bits
2ème donnée 16 bits
1ère donnée 16 bits
14Exemples de stockage de données
À partir du langage C type complexe, contenant
des données de types différents (char et long int
par exemple). Stockage cohérent dans une machine,
mais problème de transmission ! Transmettre des
octets problème d'ordre pour les données
occupant plus d'un octet en mémoire Transmettre
des mots mémoire les machines ont-elles des
tailles de cellule mémoire équivalent ? Problème
d'ordre pour les octets ! Chaque machine doit
connaître le type de représentation de l'autre !
15Alignement
Transfert de données de différentes tailles
possibles (compatibilité C et autres langages)
16Culture générale
RAM Random Access Memory, a accès aléatoire
(non séquentiel) SRAM Static RAM DRAM Dynamic
RAM FPM RAM Fast Page Mode lecture en mode
bloc EDO RAM (Extended Data Out) moins de
rafraîchissements BEDO RAM Burst ou Block
EDO SDRAM Synchronous DRAM entrelacée DDR
SDRAM Dual Data Rate SDRAM QDR SDRAM Quad Data
Rate SDRAM
http//www.webreference.com/graphics/column14/inde
x.html
17Hiérarchie de la mémoire
Différents types de mémoire performances
différentes caractéristiques différentes mais
constat général Plus une mémoire est rapide
plus elle est chère ! Plus une mémoire est
volumineuse, plus elle est lente, donc plus elle
est économique (prix au ko)
18Pyramide de la mémoire
rapide
qqs octets
économique
registres
volatile
512 Mo
RAM
Disques durs
Persistante
80 Go
10 Go
CD / DVD
Bande magnétique (DAT,DLT)
300 Go
100 To
Systèmes complets d'archivage (robots)
19RAM / CPU
RAM rapide, mais pas assez pour le processeur
! Ex processeur à 2 GHz peut traiter une
donnée tous les 0,5 ns ! Mémoire répond en
quelques nanosecondes, le plus souvent 20 ns
facteur 40 ! Comment accélérer le traitement ?
Utiliser les registres le plus possible ? Oui,
en assembleur, mais aucune maîtrise sinon
(compilateur). Utiliser une mémoire plus rapide ?
Plus cher, mais pourquoi ? Rapidité ?
proximité proximité ? intégration !
20RAM / CPU
A propos de proximité en 0,5 ns, quelle
distance ?l peut être parcourue par un signal
? Au plus rapide vitesse de la lumière c
3.108 m.s-1 ?t 0,5 ns 5.10-10 s ?l c. ?t
0,15 m idéal intégrer la RAM au support de
processeur trop cher car soucis d'intégration
! Compromis mémoire moyennement rapide et
moyennement proche du CPU mémoire cache.
21Pyramide de la mémoire
rapide
qqs octets
économique
registres
CACHE
512 ko
512 Mo
RAM
Disques durs
80 Go
10 Go
CD / DVD
Bande magnétique (DAT,DLT)
300 Go
100 To
Systèmes complets d'archivage (robots)
22Principe du cache
Objectif améliorer les performances de la
machine. Notations tglob temps d'accès à une
donnée tm temps d'accès à la mémoire tc
temps d'accès au cache Cm capacité de la
mémoire Cc capacité du cache sans utiliser de
cache, on a tglob tm (on ne traite que la
mémoire physique, pas la virtuelle)
23Principe du cache
Comment utiliser le cache ? a) comme de la
mémoire supplémentaire ? Dans ce cas, que vaut
tglob? La capacité totale de la mémoire
accessible (cacheRAM) est de CcCm.
Statistiquement, sur un grand nombre d'accès
mémoire répartition au hasard. En pourcentage
Pc Cc/(CcCm) d'accès au cache Pm
Cm/(CcCm) d'accès à la RAM
24Principe du cache
D'où tglob Pc.tcPm.tm Aucun intérêt
! Application numérique Cm 256 Mo, tm 40
ns Cc 256 ko, tc 8 ns on a alors Pc 9,7.10-4
et Pm 0,999 d'où tglob 39,97 ns. Gain
0,03 ns...
CACHE
CPU
RAM
25Principe du cache
b) comme de la mémoire 'simulant' la RAM le
processeur adresse une certaine quantité de
mémoire Cm, mais ce n'est pas forcément la
mémoire qui possède cette information. Le cache
peut en avoir une copie, auquel cas il répond Ã
la place de la mémoire. Beaucoup plus intéressant
!
RAM
CACHE
CPU
26Principe du cache
- Illusion d'une mémoire très rapide de grande
capacité. - Quelle information va transmettre le CPU pour
accéder à une donnée en RAM ? - son ADRESSE.
- Cette adresse va d'abord être présentée au cache
- s'il possède la donnée correspondante il la
transmet au CPU - SUCCES ou CACHE HIT
- sinon la donnée est en mémoire, il faut la
faire transiter depuis la RAM - ECHEC ou CACHE MISS
27Principe du cache
Le contenu du cache est dynamique comment
évolue-t-il ? Cas possibles action demandée,
réponse du cache demande de lecture, HIT pas
de mise à jour. demande de lecture, MISS
donnée cherchée en RAM, recopiée dans le
cache, éventuellement remplacement
d'une donnée plus ancienne.
28Principe du cache
demande d'écriture, c'est le CPU qui fournit la
valeur attention à la cohérence entre le cache
et la RAM ! La RAM reste la référence écriture
en RAM de la valeur comportement du cache
écriture de cette valeur ? Intéressant si la
donnée se trouve déjà dans le cache ! Plus
simple invalider la donnée si elle se trouve
dans le cache (ne nécessite pas de mettre à jour
le cache)
29Illustration
Analogie avec un libraire et un fournisseur. Un
passionné de lecture veut obtenir un nouveau
livre il peut s'adresser à un fournisseur qui
les possède quasiment tous, mais il faut dans ce
cas faire une commande, le délai est d'une
semaine. A côté de chez lui se trouve une
(petite) librairie, qui contient des livres que
l'on trouve aussi chez le fournisseur. Le
passionné de lecture ? CPU Le fournisseur ?
RAM La librairie ? cache
30Illustration
Le passionné se rend systématiquement à la
librairie pour obtenir un livre si la
librairie dispose du livre elle en donne une
copie sinon la librairie passe commande
auprès du fournisseur elle reçoit le livre au
bout du délai normal mais elle ne peut stocker
qu'un nombre limité de livres donc il faut
libérer une place en 'jetant' un autre livre. De
même pour le lecteur il ne dispose que de peu
de place il doit libérer de la place dans sa
bibliothèque au fur et à mesure
31Performance du cache
Efficacité ? On peut calculer tglob 2 deux
manières 1) lorsqu'il y a HIT, le temps d'accès
à la donnée est tc. Lorsqu'il y a MISS, le temps
d'accès est tctm HIT ou MISS ? accès au
cache ! Soit h le taux de HIT 0 ? h ? 1 (h
nombre de HITS/nombre d'accès total) le taux de
MISS est alors 1-h tglob h.tc(1-h)(tctm)
32Performance du cache
2) Dans tous les cas, un accès au cache (temps
tc) est fait, puis s'il y a HIT on ne fait
rien s'il y a MISS on doit accéder à la mémoire
temps tm avec un taux 1-h. d'où tglob tc
(1-h).tm quelle est la meilleure formule ?
33Calcul de performance
Illustration avec données numériques données
précédentes tm 40 ns, tc 8 ns, Cm 256 Mo,
Cc256 ko. Comment évaluer h ? Même hypothèse que
pour le cas a) le cache contient des données
aléatoires. Dans ce cas, quel est le taux h de
réponse par un HIT à une demande quelconque du
CPU ? h Cc/Cm1/1024 1-h 1023/1024 on
considère que h0
34Calcul de performance
D'où le résultat tglob tmtc 48 ns gt tm
!!! Ajouter un cache diminue les performances du
système ! Performance liée à la valeur de h,
qu'il faut rendre maximum ! Comment améliorer h
? optimiser h ? maximiser le nombre de HIT lors
des demandes Donc ne pas remplir le cache au
hasard ! Anticiper les accès.
35Calcul de performance
Utiliser des règles de remplacement de valeurs ou
de mise à jour du cache règles empiriques et
non purement théoriques amélioration des
performances non prévisible au mieux, mais en
moyenne. Exemple de telles règles localité
spatiale lorsqu'un programme accède à une
certaine adresse, il est probable qu'il accède Ã
des adresses proches de celle-ci transfert de
plusieurs données dans le cache lors d'un
MISS localité temporelle lorsqu'un programme
accède à une certaine adresse, il est probable
qu'il y accède de nouveau peu de temps après
éliminer les données les plus anciennes d'abord
(LRU)
36Implémentation des caches
2 grandes familles les caches associatifs
chaque emplacement du cache contient une
association adresse/donnée les caches Ã
correspondance directe chaque emplacement du
cache ne correspond qu'Ã un nombre restreint
d'adresses en réalité, on utilise un compromis
entre les deux !
37Cache associatif
Comparable à un tableau indexé illustration
1 emplacement de cache
Cache (N emplacements)
38Mise en uvre
0
0
????????
????????
0
0
0
????????
0
lecture, _at_1000
bus d'_at_
CPU
0
????????
0
????????
0
0
MISS
39Mise en uvre
On suppose qu'en RAM, Ã l'_at_ 1000, on trouve la
valeur 12345678
1000
1
12345678
????????
0
0
0
????????
0
lecture, _at_1000
bus d'_at_
CPU
0
????????
0
????????
0
0
RAM
12345678
40Mise en uvre
Politique de remplacement des valeurs exemple
précédent tous les emplacements équivalents
(cache vide) problème lorsque le cache est rempli
de données valides ! Choisir la donnée à effacer
car en cas de MISS sur une lecture, on copie
systématiquement la donnée provenant de la RAM
dans le cache (principe de localité
temporelle). Technique LRU "vieillissement" des
emplacements lorsqu'ils ne sont plus utilisées
comptage du nombre d'accès ne les concernant
pas. Lors du remplacement suppression d'un
emplacement "le moins récemment utilisé" LRU
(Least Recently Used)
41Autres exemples (I)
Mise en uvre avec des lectures
?
?
?
C08
bus d'_at_
!
MISS
42Autres exemples (II)
Mise en uvre
HIT
?
!
86E2
bus d'_at_
43Autres exemples (III)
Mise en uvre
?
?
?
020E
bus d'_at_
?
?
MISS
44Cache à correspondance directe
Problème de recherche, les adresses ne sont pas
classées ! "classement" des adresses à une
adresse ne peut correspondre qu'un emplacement
précis du cache bien évidemment, à un
emplacement précis du cache peuvent correspondre
plusieurs adresses. Technique utiliser une
partie de l'adresse (codée sur p bits) fournie
par le CPU pour déterminer l'emplacement du cache
à tester. Utilisation de q bits de poids faible
de l'adresse.
45Cache à correspondance directe
Soit un cache comportant N emplacements et tel
que N soit une puissance entière de 2 ? q ? N /
N2q. (ce cas est toujours vérifié en
pratique). Les q derniers bits d'une adresse
codée sur p bits indiquent le numéro de
l'emplacement du cache correspondant à l'adresse
demandée.
000001010011100101110111
adresse codée sur p16 bits
0110101011000110
bus d'_at_
cache à 823 emplacements
46Cache à correspondance directe
Toute adresse demandée se terminant par '110'
indiquera le même emplacement du cache. Combien
de telles adresses ? 2(p-q) traiter les
informations dans le cache s'assurer la donnée
présente à cet emplacement correspond à celle qui
se trouve en RAM à l'adresse demandée. Ne pas
consulter la RAM ! La valeur des p-q bits de
poids fort forment un TAG (empreinte).
47Cache à correspondance directe
TAG stocké dans le cache et utilisé pour
comparaison avec l'adresse demandée. Structure de
cache
V
TAG
DATA
1 emplacement de cache à correspondance directe
V bit de validité TAG p-q bits de l'adresse
correspondant à la donnée stockée dans la zone
DATA.
48Mise en uvre
Cache initialement vide, p16, q4 (d'où N16)
lecture, _at_ 101000111010 1110
N2q
bus d'_at_
1) déterminer l'emplacement
2) comparer le TAG stocké dans le cache et le
reste de l'adresse
49Mise en uvre
Cache initialement vide, p16, q4 (d'où N16)
lecture, _at_ 101000111010 1110
N2q
bus d'_at_
HIT/MISS
3) si les TAGS sont égaux HIT si le bit V est Ã
1, MISS sinon
50Mise en uvre
On obtient forcément MISS puisque le cache est
vide ! On suppose de plus qu'à l'adresse demandée
se trouve la donnée 9ABCDEF0.
lecture, _at_ 101000111010 1110
bus d'_at_
9ABCDEF0
9ABCDEF0
101000111010
51Phénomène de ping-pong
Accès alternés à deux adresses ayant les mêmes q
bits de poids faible même emplacement dans le
cache ! Ex adresses 1000 1101 1011
0111 et 0100 1000 1110 0111 lecture à la
première adresse MISS, donc chargement en cache
de cette donnée et du TAG. Lecture à la deuxième
adresse consultation du cache à l'emplacement
précédent MISS, donc chargement en cache de
donnée et TAG et ainsi de suite Alors qu'il peut
y avoir N-1 emplacements libres !
52Lignes de cache
Comment profiter de la localité spatiale des
données ? Transfert de plusieurs données lors
d'une écriture en cache pas dans plusieurs
emplacements trop long ! Un emplacement
comporte plus qu'une donnée une ligne de
cache stockage du contenu de 4 ou 8 adresses
consécutives, et adressage à l'intérieur de cette
ligne
53Lignes de cache
Illustration avec cache à correspondance directe
nouveau découpage de l'adresse pour accéder Ã
la donnée. On suppose que l'adresse fournie par
le CPU est codée sur p bits.
Index indique l'emplacement du cache Ã
consulter SHAM SHift AMount indique le numéro
de la donnée dans la ligne de cache.
54Mise en uvre
Structure du cache (avec une ligne de cache de 4
données)
N emplacements
Contient 4.N données
55Mise en uvre
Exemple p 12 , q 4, r 2. N 24 16
emplacements de cache r 2 ? 4 données par
ligne. Le CPU fait deux demandes lecture, _at_
FE0 (en binaire 111111 1000 00) lecture, _at_
FE2 (en binaire 111111 1000 10)
SHAM
TAG
index
Première demande MISS, chargement du TAG
(111111) et de 4 données à l'emplacement 1000 du
cache. Deuxième demande même emplacement, même
TAG ? HIT
56Mise en uvre
État après lecture, _at_ FE0. Demande lecture,
_at_ FE2
1
HIT
MUX
57Cache associatif par 2/4/8
Avantages et inconvénients des types de cache
cache associatif temps de recherche de
l'adresse une donnée peut être placée n'importe
où cache à correspondance directe pas de
recherche de l'emplacement une donnée est stockée
à un endroit précis effet ping-pong
58Cache associatif par 2/4/8
Profiter des avantages des deux types de cache
utiliser plusieurs caches à correspondance
directe (2,4 ou 8) lors d'une demande obtention
de plusieurs données, mais la donnée correcte est
la seule accompagnée d'un HIT de la part du cache
à correspondance directe associé. Rapide,
efficace, effet ping-pong maîtrisé (effet
tournant sur 3,5 ou 9 adresses au lieu de 2)
59Caches à plusieurs niveaux
Compromis coût/performances plus le cache a une
capacité élevée, plus il est efficace, plus il
est chermême problème qu'avec la RAM plusieurs
niveaux ex des caches L1 et L2 séparation cache
de données / caches d'instruction pour augmenter
l'efficacité Inutile de consulter un cache
global le découpage instructions/données
enfreint le principe de localité spatiale,
valable localement pour les donnée ou pour les
instructions. Cache L1 ou interne petite
capacité, très rapide Cache L2 ou externe
capacité moyenne, éloigné de la puce
60Adressage matrices
Facilité d'intégration utilisation sous la
forme d'une matrice comportant lignes et colonnes
1 bit (ou une cellule mémoire) associée à un
numéro de ligne (ROW) et un numéro de colonne
(COLumn). L'adresse envoyée sur le bus d'adresse
est en fait constituée de deux parties une
partie CAS (Column Address Strobe) et une partie
RAS (Row Address Strobe). Possibilité de lecture
par bloc en précisant la valeur de RAS puis en
envoyant des valeurs successives de CAS
! Plusieurs manières de réaliser cela.
61Adressage matrices
On présente volontiers la mémoire sous forme
'linéaire' (cf l'excellent cours d'archi des
microprocesseurs ? ). Représentée sous forme de
bascules vrai pour les mémoires dites statiques
(SRAM). Mais en réalité, plus sophistiqué
bascule dispositif complexe par rapport aux
échelles d'intégration actuelles (gravures en 0,1
micron soit 10-7 m, 1000 fois le ? d'un atome) on
préfère un seul transistor ou condensateur
mémoire dynamique DRAM moins chère mais doit être
rafraîchie ralentissement.