87 lines
1.6 KiB
Markdown
87 lines
1.6 KiB
Markdown
# Correction TD2
|
|
|
|
## 1 Etiquettes et index de cache
|
|
|
|
1.1
|
|
Index :
|
|
|
|
(1) 2²¹ 2¹⁷ blocs (2²¹/2⁴) 17 bits\
|
|
(2) 2²² (2²³/2⁵) 17 bits \
|
|
(3) 2²² (2²²/(2⁵*4)) 15 bits
|
|
|
|
Déplacement :
|
|
|
|
(1) 4 bits (16 octets)\
|
|
(2) 5 bits (32 octets)\
|
|
(3) 5 bits
|
|
|
|
Etiquette :
|
|
|
|
(1) 31 - 4 - 17 = 10 bits \
|
|
(2) 31 - 5 - 17 = 9 bits \
|
|
(3) 31 - 5 - 15 = 11 bits
|
|
|
|
1.2
|
|
|
|
Etiquette :
|
|
|
|
(1) 10 bits \
|
|
(2) 9 bits \
|
|
(3) 11 bits
|
|
|
|
Ctl :
|
|
|
|
(1) 1 (bit de validité)\
|
|
(2) 1 + 1 (bit de réecriture)\
|
|
(3) 1 + 1
|
|
|
|
Ligne d'instruction ou de données :
|
|
|
|
(1) 16 * 8 => 128 + 10 + 1\
|
|
(2) 256 + 9 + 2 = 267 bits\
|
|
(3) 256 + 11 + 2 = 269 bits
|
|
|
|
Nombre total de bits du cache :
|
|
|
|
(1) 2²¹ / 2⁴ = 128k soit 2¹⁷ * 139 = 17792 kbits\
|
|
(2) 2²² / 2⁵ = 128k => 2¹⁷ * 267 = 34176 kbits\
|
|
(3) 34432 kbits (accueille le meme nombre de lignes meme si 4 lignes par bloc)
|
|
|
|
## 2 Caches données
|
|
|
|
2.1
|
|
|
|
(1) Correspondance directe
|
|
(2) Associativité par 2
|
|
|
|
Index :
|
|
|
|
(1) 2¹³/2⁵ = 2⁸ 8 bits\
|
|
(2) 7 bits
|
|
|
|
Déplacement :
|
|
|
|
(1)(2) 5 bits
|
|
|
|
Pour que X et Y occupent le mot 0 de la ligne 0 il fut que l'index et le déplacement soient à 0. Soit (1) 13 bits / (2) 12 bits à 0.
|
|
Donc un multiple de (1) 2¹³ | (2) 2¹².
|
|
|
|
Soit :
|
|
|
|
(1) X[0] et X[2048]\
|
|
(2) X[0], X[1024], X[2048] et X[3072]
|
|
|
|
2.2
|
|
|
|
(1)\
|
|
b1. X[0] et Y[0] commencent à l'index 0 et à chaque itération Y va écraser X. On a 2 défauts par itération.\
|
|
b2. 4 défauts/it\
|
|
b3. 2 défauts/it\
|
|
b4. 3 déf/it si le compilateur est intelligent\
|
|
|
|
(2)\
|
|
b1. It 1 : 2 défauts puis cache hit => 1/4 déf/it
|
|
b2. On a re 4 déf/it
|
|
b3. 1/4 déf/it (Est-ce que le compilateur peut passer de b2 à b3 ?)\
|
|
b4. 2 + 1/8 meilleur cas.
|
|
|