Devoir surveillé Classe : 1ère année ingénieur Matière : Architecture des ordinateurs I Date : 02-12-2018 Durée : 1h15 NB. Aucun document ni machine (calculatrice, GSM) n’est autorisé. Lisez bien l’énoncé jusqu’à la fin, soignez votre écriture et respectez ce qui est demandé de faire pour les réponses. Questions de cours (3,75 points) Quelle est la différence entre : 1. La fréquence d’un processeur et la fréquence d’une mémoire. La fréquence d’un processeur est proportionnelle à la fréquence horloge dont il va suivre la cadence. Son inverse donne la durée d’un cycle horloge. Alors que la fréquence d’une mémoire traduit l’inverse du temps nécessaire pour atteindre une information, plus la fréquence est grande plus le temps est petit et donc la mémoire plus rapide d’accès 2. Un processeur scalaire et un processeur vectoriel. Un processeur scalaire traite une seule valeur à la fois alors qu’un processeur vectoriel trait vecteur de valeurs tous en même temps 3. Un multi-processeurs et un multi-ordinateurs. Un multiprocesseur c’est une architecture qui regroupe plusieurs processeurs dans une même machine avec partage des ressources en particulier la mémoire centrale alors qu’un multi-ordinateur c’est une architecture qui associe plusieurs ordinateurs indépendants disposant de ressources privées via une infrastructure d’interconnexion. 4. Le bus de données et le bus d’adresses. Un bus de données sert à véhiculer les données de la mémoire vers le processeur et vice versa (donc bidirectionnel) alors que le bus d’adresse n’achemine les adresses que du processeur vers la mémoire et donc unidirectionnel. La largeur du bus d’adresse donne une idée sur la capacité mémoire adressable alors que la largeur du bus de donnée donne une idée sur la taille d’un mot mémoire. 5. L’adressage direct et l’adressage indirect. Pour l’adressage direct nous disposons d’une adresse qui nous permet d’accéder à la donnée en mémoire alors que pour l’adressage indirect nous disposons d’une adresse mémoire qui nous permet d’accéder à une case mémoire contenant une autre adresse qui nous mène à la donnée recherchée en mémoire. 1 Exercice 1 (3,25 points) 1. Traduire le nombre décimal (-12,375) en nombre hexadécimal dans la norme IEEE754 simple précision. (-12,375) = (-1100,011)2= - 1,100011*23 Exposant : 3+127 = 130 = (10000010)2 Signe : 1 1 10000010 10001100000000000000000 = (C1460000)H 2. Donnez la valeur décimale du nombre représenté en hexadécimal par la valeur C0B00000 dans chacune des cas suivantes : a. Un nombre représenté dans la norme IEEE754 simple précision. 1 100 0000 1 011 0000 0000 0000 0000 0000 Signe : 1 Exposant : (10000001)2= 129 = 2 +127 Nombre = - 1,011*22 = (-101,1)2 = -5,5 b. Un nombre binaire signé. 30 -(2 +223+221+220) = -(220*(210 +23+21+20)) = -(220*(210+23+21 +20)) = -(1024+8+2+1)*220 = -1035*220 = -1035 Méga c. Un nombre binaire non signé. 231+230+223+221 +220 = 220*(211+210+23 +21+20) = 220*(210*(21+20)+23+21 +20) = (1024*(3)+8+2+1)*220 = (3072+8+3) )*220 = 3083 Méga 3. Effectuer les opérations suivantes, en indiquant si le résultat est valide ou non (0111011)2 + (ABCD)H 0000 0000 0011 1011 + 1010 1011 1100 1101 = 1010 1100 0000 1000 = (AC08)H Résultat valide (1422)H – (F010)H 1422 – F010 = 1422 + 0FF0 = 2412 = - DBEE Résultat valide Exercice 2 (4 points) Soit un processeur qui tourne à une fréquence horloge de 2 GHz et qui exécute un programme constitué d’un mélange de cinq types d'instructions : 2 1. Combien de cycles se programme prendra-t-il pour s’exécuter ? (150000*1)+(45000*2)+(55000*2)+(20000*2)+(500*15)= 10000*(15+9+11+4)+5000+2500=(10000*39)+7500=397500 cycles 2. Quelle sera la durée totale d’exécution ? (397500/2)*10-9 = 198750 ns 3. Calculez le CPI de ce programme. Nombre de cycles / nombre d’instructions = 397500 /(150000+45000+55000+20000+500) = 397500 / (1000 * (150+100+20)+500) = 397500 / 270500 = 3975 / 2705 ~ 1,5 4. Calculez le MIPS de ce programme. 2 GHz / 1,5 presque égale à 1,3 milliard d’instruction par seconde Exercice 3 (4 points) Nous disposons d’un processeur doté d’un pipeline à 5 étages, chaque étage prenant deux cycles. Dans ce qui suit, on négligera les surcoûts engendrés par le pipeline 1. Si une instruction entre dans le pipeline à l’instant i, à quel instant aura-t-elle fini son exécution ? Après (5*2) + i cycles 2. On considère un programme de n instructions. Calculez le temps nécessaire en nombre de cycles pour son exécution. Si n=1 5*2 cycles Si n=2 5*2 + 2 cycles Si n=3 5*2 + 4 cycles Si n=4 5*2 + 6 cycles Pour n 5*2 + (2*(n-1)) = 10 + 2n – 2 = 2n + 8 cycles 3. Quel est le CPI de ce programme sur ce processeur ? (2n + 8)/n tend vers 2 quand n devient grand 4. Quel serait le CPI sur un processeur n’ayant pas de pipeline ? 10n / n = 10 Exercice 4 (5 points) 1. Coder en assembleur, l’itération suivante qui recherche l’indice et la valeur du premier élément de la suite de Fibonacci de valeur inférieure à une valeur a donnée : 3 i = 0; x = 1; y = 1; while (x { z = x = y = i = } < a) Boucle : // la variable a est supposée initialisée x + y; y; z; i + 1; MOV MOV MOV MOV CMP JGE ADD MOV MOV MOV INC i, 0 x, 1 y, 1 AL, x AL, a Quitter AL, y BL, y x, BL y, AL i Quitter : 2. Donner, en fonction de a, le nombre d’instructions qui seront exécutés. 3+ (Nombre d’itérations pour atteindre la valeur a)*8 + 3 3. Donner, en fonction de a et de tm, le nombre d’accès à la mémoire centrale que ce soit pour chercher les données ou les instructions. Pour les instructions (3 + (Nombre d’itérations avant d’atteindre la valeur a) * 8 + 3) tm Pour les données (3 + (Nombre d’itérations avant d’atteindre la valeur a)*7 + 2) tm ((Nombre d’itérations avant d’atteindre la valeur a)*15 + 11) tm - Bon travail - 4