Semaine 10 : architecture des ordinateurs 1 Un programme à étudier

publicité
Information, calcul et communication (SMA/SPH)
EPFL - Semestre d’automne 2014–2015
Semaine 10 : architecture des ordinateurs
1
Un programme à étudier
Considérez le programme suivant :
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
charge
continue_ppe
charge
charge
charge
charge
continue_ppe
charge
charge
charge
charge
continue_ppe
charge
charge
charge
charge
continue_egal
r4,
r0,
r5,
r0,
r1,
r4,
r1,
r5,
r1,
r2,
r4,
r2,
r5,
r2,
r3,
r4,
r4,
0
r1, 6
r0
r1
r5
1
r2, 11
r1
r2
r5
1
r3, 16
r2
r3
r5
1
1, 0
L’instruction « continue_ppe a, b, L »signifie « continue si a plus petit ou égal à b ». Elle compare les
valeurs a et b et, si a≤b, l’exécution continue à la ligne L. Les opérandes a et b peuvent être soit des
constantes soit indiquer les registres à lire pour obtenir les valeurs à comparer.
L’instruction « continue_equal a, b, L », qui signifie « continue si a égal b », agit de manière similaire,
mais si les deux valeurs sont identiques.
a) Supposez que, avant le début de l’exécution, les registres contiennent les valeurs suivantes :
r0
123
r1
473
r2
17
r3
365
Simulez l’exécution du programme jusqu’à sa fin. Quelle est la valeur de ces quatre registres à la fin
de l’exécution ?
b) Quelle est la fonction de ce programme ? Justifiez votre réponse.
c) Que se passerait-il si on remplaçait toutes les instructions continue_ppe avec des instructions continue_pp
qui réalisent la comparaison stricte a<b au lieu de a≤b ?
1
2
Somme de valeurs absolues
Ecrivez un programme assembleur pour calculer la somme des valeurs absolues de deux nombres. Utilisez
les instructions vues au cours (p.ex., somme r1, r2, r3 ou soustrait r1, r2, r3) et dans l’exercice
précédent. Au départ, les registres r0 et r1 contiennent les deux nombres à traiter et la somme de leurs
valeurs absolues doit se trouver dans le registre r2 à la fin du programme.
3
Circuit
Considérez le circuit suivant où la notation x représente la négation logique du bit x (c.-à-d. x = 1 − x).
Quelle est la table de la vérité de ce circuit ? Quelle fonction logique réalise-t-il ?
Pour aller plus loin
4
Comparaison de valeurs horaires
Ecrivez un programme assembleur qui détermine laquelle de deux heures, H1 et H2 , exprimées en heures
et minutes entre 00:00 et 24:00, est la plus petite. Au départ, le registre r0 (resp. r2) contient le nombre
des heures de H1 (resp. H2 ) et le registre r1 (resp. r3) contient les minutes de H1 (resp. H2 ). A la fin de
l’exécution du programme, r4 doit contenir la valeur 1 si H1 est une heure strictement plus petite que
H2 et 0 sinon.
Exemple : si l’on doit comparer H1 =8h10 et H2 =21h45, on vous donne r0 = 8, r1 = 10, r2 = 21 et
r3 = 45 et à la fin de l’exécution, r4 devra contenir 1.
Rappel : l’instruction « continue_pp a, b, L » fait continuer l’exécution à la ligne L si a est un
nombre strictement plus petit que b.
2
Information, calcul et communication (SMA/SPH)
EPFL - Semestre d’automne 2014–2015
Semaine 11 : Mémoires hiérarchiques
1
Bande passante (des mémoires)
Vous voudriez prendre un cours en ligne avec deux amis et vous avez besoin de télécharger les leçons vidéo
sur un ordinateur. Mais vous avez un autre rendez-vous pour lequel vous devez partir dans 2 heures. La
durée de la leçon est de 1 heure 45 minutes. Vous avez les ordinateurs suivants à disposition :
— L’ordinateur A a un disque dur qui peut transférer un mot 1 chaque 5 µs.
— L’ordinateur B a un disque dur avec bande passante de 400 Mo/s.
— L’ordinateur C a un disque dur avec bande passante de 2 Mo/s.
On suppose ici que la bande passante de l’accès Internet est largement supérieure à celle de l’accès aux
disques.
Quel(s) ordinateur(s) vous permettra/permettront de télécharger la leçon, de la regarder et de partir à
temps pour votre rendez-vous si
a) la taille du fichier de la leçon est de 800 Mo ?
b) la taille du fichier de la leçon est de 2 Go ?
2
Acheter un ordinateur
Vous êtes dans un magasin d’électronique et vous voudriez acheter un ordinateur. Vous hésitez entre deux
possibilités :
— L’ordinateur A a un processeur à 2 GHz et un disque dur ayant une bande passante de 400 Mo/s.
Il a 8 Mo de cache ;
— l’ordinateur B a un processeur à 3 GHz et et un disque dur ayant une bande passante de 12.5
MegaBlocs/s (chaque bloc se compose de 4 mots). Il a 4 Mo de cache.
Que choisissez vous si vous désirez minimiser le temps nécessaire pour :
a) lire un fichier ?
b) exécuter un programme qui accède souvent à la mémoire ? (Remarquer que les caches de A et B sont
du même modèle, mais il y a deux fois plus de blocs dans celui de A que dans celui de B.)
1
Bloc pair
Cache:
Mémoire:
0
1
Bloc impair
2
3
4
5
6
8
...
12
...
16
...
20
...
...
...
...
...
7
Figure 1 – Cache à accès direct.
3
Nombre de défauts de cache
Vous avez une mémoire cache ayant une taille de 8 mots. La taille d’un bloc de mémoire cache est de
4 mots. La mémoire cache utilise un accès direct. Les blocs de mémoire ayant une adresse paire sont mis en
correspondance avec le premier bloc dans la mémoire cache et les blocs de mémoire ayant adresse impaire
sont mis en correspondance avec le second bloc dans la mémoire cache (voir Fig. ??). Par exemple, les
blocs de mémoire contenant le mots 0–3 (addresse de bloc 0), 8–11 (addresse de bloc 2) et 16–19 (addresse
de bloc 4) sont mis en correspondance avec le premier bloc dans la cache. Les blocs de mémoire contenant
le mots 4–7 (addresse de bloc 1), 12–15 (addresse de bloc 3) et 20–23 (addresse de bloc 5) sont mis en
correspondance avec le second bloc dans la cache.
En supposant que la mémoire cache est vide au départ, combien de défauts de cache se produisent lorsque
le processeur accède à la séquence d’adresses suivante :
1, 3, 8, 5, 20, 18, 19, 53, 9, 11, 4, 43, 5, 6, 9, 18 ?
4
Localité spatiale et temporelle
Supposons que vous vouliez calculer la somme de deux grands vecteurs dont la taille est beaucoup plus
grande que la taille de la mémoire cache. Quel type de localité est la plus pertinente pour cette application ?
Est-ce qu’il vaut mieux avoir des petits blocs de cache pour cette application ?
1. En informatique, un mot est l’unité de base manipulée par un microprocesseur. La taille d’un mot s’exprime en bits
ou en octets, et est souvent utilisée pour classer les microprocesseurs (32 bits, 64 bits. . . ). Dans ce cours, on considère qu’un
mot est égal à 4 octets. [Référence : wikipedia.org]
2
Pour aller plus loin
5
Hiérachie de données : exemple du CERN
L’accélérateur de particules LHC du CERN génère 1 Po/s (= 1015 octets/s), soit l’équivalent de 12 ans
de vidéo en HD par seconde ! Il n’y a simplement aucune technologie au monde qui puisse enregistrer
toutes ces données en temps réel. Même en mettant beaucoup de disques en parallèle on n’arriverait pas à
construire une connexion assez rapide pour y enregistrer toutes ces données en temps réel sans en perdre.
Une batterie de circuits logiques (hardware) analysent ces données en temps réel et les filtrent par un
facteur de l’ordre de 1000 avant de les injecter directement dans les mémoires centrales d’une batterie de
processeurs spécialisés qui les réduisent encore par un facteur de l’ordre de 1000.
En arrondissant aux ordres de grandeur :
a) Quel est le débit de données à stocker résultant ?
b) Combien de disques à 100 Mo/s en parallèle sont nécessaires pour un tel débit ?
c) Combien d’heures faut-il pour remplir ces disques de 1 To (= 1012 octets) chacun ?
d) Quel volume de données cela représente-t-il en 1 an ?
6
Mémoire cache idéale
L’algorithme de remplacement de blocs en mémoire cache vu en cours s’appelle « LRU », pour « Least
Recently Used », car il consiste à toujours remplacer en cache le bloc utilisé le plus loin dans le passé
(c.-à-d. le bloc non utilisé depuis le plus longtemp).
Le meilleur de tous les algorithmes de remplacement serait celui qui donne toujours le nombre de défauts
de cache minimal. Appelons « OPT » (pour optimal) cet algorithme théorique qui consiste à toujours
remplacer en cache le bloc qui serait (ré)utilisé le plus loin dans le futur. Cet algorithme est irréalisable
en pratique vu que la mémoire cache ne peut pas prédire le futur.
LRU et OPT possèdent tous les deux de la bonne propriété qu’un accroissement de la taille de la mémoire
cache ne conduit jamais à un accroissement du nombre de défauts de cache 2 .
Après remplissage initial de la mémoire cache, 3 l’exécution d’un programme donné a causé 3000 défauts
de cache pour une mémoire cache de taille 6 Mo gérée par l’algorithme LRU.
Pour une cache de seulement 4 Mo gérée par le même LRU, le même programme a causé 5000 défauts de
cache.
2. Ce n’est pas le cas de tous les algorithmes. Par exemple, un algorithme de gestion de file « FIFO (First-In-First-Out) »
ne vérifie pas de cette propriété.
3. On ne compte donc pas ici les défauts de cache liés au remplissage initial.
3
Pour ce même programme et ces mêmes tailles de cache, quatre étudiants ont simulé le comportement
qu’aurait eu l’algorithme OPT et on trouvé les résultats suivants :
6 Mo
3000
2000
2000
0
1er étudiant
2e étudiant
3eétudiant
4eétudiant
4 Mo
6000
3000
1000
3000
Plusieurs de ces étudiants ont fait des erreurs. Sauriez-vous dire lesquels et pourquoi ?
7
Achat : une analyse plus informative
Vous êtes dans un magasin d’électronique et hésitez entre deux choix. Vous demandez plus de détails et
découvrez que pour l’ordinateur A, chaque accès au cache prend 1 ns (=1 nanoseconde) et chaque défaut
de cache prend 120 ns, tandis que pour l’ordinateur B, chaque accès au cache prend 1.2 ns et chaque
défault de cache prend 100 ns. Vous décidez de prendre un exemple d’un programme réel pour comparer
les deux ordinateurs. L’algorithme du programme envisagé est le suivant :
Algorithme pour programme de test
entrée : x entier naturel
sortie : y entier naturel
y←1
Si x = 0 ou x = 1
y←0
s ← 0, i ← 2
Tant que s ≤ x et y = 1
Si i divise x
y←0
Sinon
i←i+1
s←i×i
Sortir : y
Supposons que pour chaque ordinateur la mémoire cache contient 2 blocs et la mémoire en contient 4.
Chaque bloc contient 4 mots. L’adresse d’un mot en mémoire est dans l’intervalle [0, 15].
Dans cet exercise on ne compte pas les accès mémoire necessaires pour lire les instructions. On suppose
par ailleurs quele processeur a plus de 4 registres de sorte qu’avec le programme utilisé ici, une fois qu’une
variable a été lue dans le cache il n’est pas nécessaire de la relre.
Supposons enfin que x est stocké à l’adresse mémoire 0, y en 1, i en 12, et s à l’adresse 13 (toutes les
variables sont initialement en mémoire), et que la valeur de x est initialement 4.
a) Que fait le programme ci-dessus ?
4
b) Explicitez les accès à la mémoire que le programme fait pour lire les 4 variables.
c) Combien d’accès au cache a-t-on ? Combien de défauts de cache a-t-on ?
d) Si vous devez choisir l’ordinateur le plus rapide, lequel prendriez-vous sur la base de cet algorithme ?
5
Téléchargement