Vous êtes sur la page 1sur 3

École Supérieure en Sciences et Technologies de l'Informatique et du Numérique 2020/2021

Module : Architecture des ordinateurs II


Niveau : 2e année CPI

Nom & Prénom : ……………………………………………… Groupe : ……………………………..

Interrogation N°1
Documentation non autorisée – Durée : 35 minutes

1. Qelle opération représente chacune des figures suivantes ?

Bus d'adresse 111 Bus de données 1010

Mémoire Bus d'adresse 101 Mémoire


Processeur Processeur
R Centrale Centrale
W

Demande de lecture du contenu du Demande d'écriture de la valeur 1010


mot mémoire adressé par 111 (0,5 point) dans l'adresse 101 (0,5 point)

2. Sachant que le bus d'adresses d'un processeur est de 16 bits et que le bus de données est d'un
octet, quelle est la taille de l'espace mémoire maximum que celui-ci peut adresser ?
La taille de l'espace mémoire maximum = 216 x 8 bits = 26 x 210 octets = 64 Ko. (1 point)

3. Qelle doit être la taille du bus d'adresses d'un processeur 16 bits pour qu'il puisse accéder à
une mémoire de 32 Ko ?
La taille de l'espace mémoire maximum = 32 Ko = 25 x 210 x 8 bits = 214 x 16 bits
Donc, la taille de bus d'adresses = 14 bits. (1 point)

4. Classez les mémoires suivantes par taille : RAM, registres, disques dur, cache L1, cache L2,
CD-ROM.
Registres < Cache L1 < Cache L2 < RAM < CD-ROM < Disques dur. (1,5 point)

5. Supposons que le temps d'accès à une mémoire cache est de 5ns, et que le temps d'accès à la
mémoire principale est de 100ns. Si le temps d'exécution d'un programme est de 95ns :
a) Dans quelle mémoire se trouvent ses instructions ? Justifier.
Puisque le temps d'exécution du programme est inférieur au temps d'accès à la mémoire
principale, nous pouvons déduire que toutes les instructions du programme se trouvent
en mémoire cache. (1 point)

b) Qel est le nombre total des instructions du programme ?


Le nombre total des instructions du programme peut être calculé comme suit : 95 / 5 =19.
Le programme contient donc 19 instructions qui se trouvent au niveau du cache. (1 point)
6. Soit la portion de code ci-dessous :

1. int somme (int tab, int N) {


2. int i, sum = 0 ;
3. for (i=0, i < N, i++)
4. sum = sum + tab[i] ;
5. return sum ;
6. }

Qel principe de localité peut-on appliquer sur les variables sum et tab[i] ? Justifier.

Pour la variable sum, on peut appliquer le principe de localité temporelle car le programme
y accède fréquemment. (1 point)
Pour la variable tab[i], on peut appliquer le principe de localité spatiale car le programme y
accède en séquence. (1 point)

7. Soit un cache direct de 4 Ko dont les lignes font 128 octets.


Soit une adresse hexadécimale a = (A238847EF)16 d'une donnée.
a) Sur combien de bits les adresses sont-elles codées ? Justifier.

L'adresse a comporte 8 symboles en hexadécimal où chaque symbole correspond à 4 chifres


binaires (bits). Les adresses sont donc codées sur 8 x 4 = 32 bits. (1 point)

b) Donnez le nombre de bits nécessaires pour coder chaque champ d'une adresse.
Dans un cache direct, les adresses sont divisées en 03 champs : étiquete, index, et ofset.

Étiquete (tag) index offset (0,25 point)

Comme les lignes font 128 octets = 27 octets, la position d'une donnée dans une ligne (offset')
est codée sur 7 bits. (0,25 point)
Le cache a une taille de 4 Ko = 212 octets, il possède donc 212 / 27 = 25 lignes (entrées). L'index
est donc codé sur 5 bits. (0,25 point)
On en déduit que l'étiquete (tag) est codée sur 32 – (7 + 5) = 20 bits. (0,25 point)

c) Si la donnée correspondant à l'adresse a considérée est efectivement dans le cache, donnez


(en hexadécimal) les adresses qui seront stockées dans la même ligne du cache que celle-ci.
Il s'agit des adresses entre 1010 0010 0011 1000 0100 0111 1000 0000 = (A283848780)16
et 1010 0010 0011 1000 0100 0111 1111 1111 = (A238847FF)16. (1 point)

8. Q'est ce qu'un défaut de cache conflictuel ?


Deux adresses distinctes de la mémoire principale doivent être enregistrées au même endroit
dans le cache et s'évincent mutuellement, créant ainsi un défaut de cache. (1 point)

9. Soit un cache direct de 16 Ko dont les lignes font 256 octets. Parmi les adresses suivantes,
laquelle entraîne un défaut de cache conflictuel avec l'adresse 0x1283458678 ? Justifier.
□ 0x1283458677
✔ 0x1283418666 (0,25 point)
□ 0x1183358577
✔ 0x1181158678 (0,25 point)
Justification : (1 point)
Les défauts de cache conflictuels se produisent lorsque diférents blocs (adresses) ont les
mêmes bits pour le champ index.
Dans ce cas, le cache possède des blocs de 256 octets = 28 octets, ce qui signifie que la
position d'une donnée (offset) est codée sur 8 bits.
Ainsi, les deux derniers chifres de ces adresses peuvent être ignorés puisqu'ils ne font
pas partis de l'index.
Le cache a une taille de 16 Ko = 214 octets, il possède donc 214 / 28 = 26 lignes.
L'index est donc codé sur 6 bits.
Les 6 bits de l'index appartiennent au deux prochains chifres de l'adresse hexadécimale,
qu'il sufit d'écrire en binaire et de comparer à l'index de l'adresse donnée (01 0110)2.
Les adresses ayant le même index ne sont pas forcément conflictuelles puisqu'elles
peuvent appartenir au même bloc. Il faut donc également comparer la partie tag.

10. Qels sont les inconvénients de l'algorithme de remplacement LFU (Least Frequently Used) ?
L'algorithme LFU présente un problème quand une donnée est très utilisée pendant la phase
initiale d'un programme, mais qu'elle n'est plus employée à nouveau par la suite.
Comme elle a été fréquemment utilisée, elle possède un grand compte et reste donc en cache
même si elle n'est pas utilisée par la suite. (1 point)

Vous aimerez peut-être aussi