M2_SETI/T1/TD/TD2.md

88 lines
1.6 KiB
Markdown
Raw Normal View History

2022-11-10 10:48:26 +01:00
# 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.