Informatique Générale TD n° 10

Transcription

Informatique Générale TD n° 10
Université de Nice – Sophia Antipolis
Licence 1 Sciences Fondamentales 2013­2014
Informatique Générale
TD n° 10
1. Quelques calculs. On se place dans le cas d’un processeur qui utilise un adressage de 4 Gio de mémoire, avec 8 kio de mémoire cache. On utilisera des mots­mémoires de 32 bits. a) Quelle doit être la largeur du bus adresse évidemment 32
Pour la suite, on utilise les données suivantes : •
temps d’accès à la mémoire cache : 5 ns
•
latence d’accès à la mémoire principale : 40 ns
•
temps de cycle (temps entre 2 accès consécutifs) en mode page (i.e. pour passer de la mémoire principale à la mémoire cache): 10 ns par mot mémoire
b) Quel est le temps nécessaire pour consulter un mot mémoire en cas de succès de cache ? 5ns
c) Si la taille d’un bloc de mémoire est fixée à 512 bits, en cas de défaut de cache, quel est le temps de pénalité ? 512 bits ­> 16 mots, donc 15x10+40+5= 195ns
d) Même question si la taille d’un bloc de mémoire est fixée à 256 bits. 7x10+40+5 = 115 ns
e) On a le choix entre trois modes de construction de cette mémoire : •
par cache direct de 256 bits par ligne (temps d’accès 3 ns), •
par cache associatif par ensemble à quatre lignes de 256 bits par ensemble (temps d’accès 4 ns), •
par cache associatif mais avec 512 bits par ligne (temps d’accès 5 ns). Des expériences montrent que pour le genre d’applications que l’on va utiliser sur cette machine, •
dans la première solution, on a un taux de succès cache de 75%, •
dans la deuxième un taux de succès de 80% •
et dans la troisième un taux de succès de 87%. Quelle est la solution la plus intéressante ? Justifiez en exhibant le temps moyen d’accès à la mémoire dans les trois cas. Pour un mot, on calcule temps d'accès cache x % de succès + (temps de chargement de la ligne + temps d'accès au cache) x % d'échec. Donc il suffit de comparer temps chargement ligne x taux d'échec
Premier cas : 3+0,25×115 = 31,75 ns. Deuxième cas : 4+0,2×115 = 27 ns. Troisième cas : 5+0,13×195 = 30,35ns. Il est donc meilleur de prendre la deuxième solution. f) Dans le cas de la première solution, décrivez comment on décompose une adresse (nombre de bits en particulier et quels sont les masques à appliquer). Dites aussi combien de blocs différents peuvent résider en mémoire cache. Le bloc de cache fait 256 bits soit 32 octets, il faut 5 bits pour sélectionner un octet dans le bloc. Il peut y avoir jusqu’à 8192/32=256 blocs différents dans le cache, donc 8 bits pour le 19 bits (reste de l'adresse)
8 bits (n° du bloc)
bloc de cache. Décomposition d'une adresse 32 bits ad
Adresse du bloc : (ad & 0x00001FE0) >> 5
Adresse de l'octet dans le bloc : ad & 0x0000001F
5 bits (adresse de l'octet dans le bloc)
g) Dans le cas de la deuxième solution, décrivez comment on décompose une adresse (nombre de bits et caches en particulier). Dites aussi combien de blocs différents peuvent résider en mémoire cache, ainsi que le nombre de blocs par voie. Chaque ensemble associatif ayant 4 blocs, on a 8Ko / (4 lignes x 32 octets) = 213/(22x25), soit 26 ensembles. Toujours 8 bits pour l'octet, mais 6 bits pour chaque ensemble associatif,
21 bits (reste de l'adresse)
6 bits (n° de l'ensemble)
5 bits (adresse de l'octet dans le bloc)
Donc adresse de l'ensemble : (ad & 0x7E0) >> 5
h) Dans le cas de la troisième solution, dites comment se décompose une adresse. 6 bits pour pour l'octet dans la ligne. La ligne va où le décide la stratégie de remplacement, indépendant de l'adresse, donc rien qui l'indique dans l'adresse.
i) On se place dans le cadre de la troisième solution (cache associatif). On veut accéder aux mots mémoires qui vont de l’adresse 0x40000000 à l’adresse 0x400008FB (inclus). Dans l’hypothèse la plus pessimiste possible, dites combien il y a de défauts de cache en expliquant pourquoi. Lecture de 2300 octets=575mots=35,9375 blocs, soit 36 blocs mémoires consécutifs (1 ligne = 16 mots). Donc, il y a au pire 36 défauts de cache. 2. Performance d'un processeur. Un CPU exécute un programme composé de n instructions. Chaque instruction nécessite en moyenne 8 cycles pour s’exécuter. De plus, chaque instruction fait en moyenne 3 accès mémoire. Dans le cas où l’information est dans le cache, il n’y a pas d’attente, par contre, aller la chercher en mémoire nécessite 6 cycles. a) On considère que le cache est inefficace et que toutes les données sont ramenées de la mémoire. Combien de cycles se programme prend­il pour s’exécuter ?
8+3x6 =24cycles par instruction, soit 24 x n au total
b) Si maintenant le cache a un taux de succès de 100%, quel est le nombre de cycles ?
8 x n
c) En pratique, notre cache a un taux de réussite de 11%. Quel est le nombre de cycles nécessaires pour exécuter ce programme. Comparez­le au nombre sans cache. 0,11 x 8 + 0,89 x 24, un peu plus de 22,24 cycles en moyenne, soit environ 93 % de l'exécution sans cache