Université Lyon 1, FST, Département Informatique, L2 Corrections d’exercices LIF6 – Printemps 2015
Architecture Matérielle et Logicielle (LIF6)
Exercice 1 : Mémoire, transferts et petits calculs
Justifiez vos réponses en détaillant vos calculs.
Partie 1 : Circuits mémoires
Sur la carte mère d’un certain ordinateur, on trouve :
un processeur 8 bits, ce qui implique que la mémoire est adressée octet par octet, et que le processeur
peut lire et écrire des mots de 8 bits en mémoire centrale ;
un bus système, dont le bus d’adresses est d’une largeur de 24 bits ;
un certain nombre de circuits mémoire 8 bits, chacun d’une capacité de 512 Kio.
1) Quelle est la largeur, en nombre de bits, du bus de données ?
SOLUTION. Il s’agit d’un processeur 8 bits, dont la mémoire est adressée octet par octet : la largeur
du bus de données est de 8 bits.
2) En supposant que le bus d’adresses ne sert à adresser que la mémoire centrale de l’ordinateur, combien
de circuits mémoire sont présents sur la carte mère ?
SOLUTION. Le bus d’adresse est d’une largeur de 24 bits, la mémoire comporte donc au plus 224
adresses, ce qui donne 224 octets en mémoire. En supposant que la mémoire contient effectivement
224 octets, on divise cette taille par la taille d’un circuit mémoire pour obtenir le nombre de circuits
mémoire : (224 o)/(29·210 o) =25=32 circuits mémoire.
Partie 2 : Bande passante
On souhaite lire un film se trouvant sur un disque dur, connecter à l’ordinateur via un bus USB 1.1. Le film est
non-compressé, et constitué d’une succession d’images de 1024 ×768 pixels en 256 couleurs. On suppose que
le défilement des images se fait en 24 images par seconde. Une liaison USB 1.1 permet le transfert de données
bit par bit à la fréquence de 12 MHz.
1) Quelle est la taille en octets d’une image du film ? (768 =3×256)
SOLUTION. Pour coder 256 couleurs, il faut 8 bits par pixel. L’image comporte 210 ×3×28=3×218
pixels, d’où 3 ×218 o par image.
2) Quel est le débit (en Mio/s) requis pour le transfert du film du disque dur à la mémoire vidéo ?
SOLUTION. Comme il faut transférer 24 images par seconde, le débit est de 3×218 ×24 o/s =3×218 ×
3×23o/s =9×221 o/s =18 Mio/s.
3) Quelle est la bande passante en Mo/s du bus USB 1.1 envisagé pour la lecture du film ?
SOLUTION. 1 bit ×12·106/s =12/8 ×106octet/s =1,5 Mo/s
4) La lecture du film sera-t-elle possible ? Expliquez clairement votre réponse.
SOLUTION. On a 1 Mo <1 Mio, donc 1.5 Mo/s <2 Mo/s <2 Mio/s <18 Mio/s.
Nicolas Louvet et Laure Gonnord 1/5
Université Lyon 1, FST, Département Informatique, L2 Corrections d’exercices LIF6 – Printemps 2015
Exercice 2 : Instructions de branchement et boucles
Un processeur 8 bits est doté d’un espace mémoire de 64 Kio ; à chaque adresse en mémoire centrale corres-
pond une case de 1 octet. Le processeur dispose de 4 registres de travail, indicés de 0 à 4 et notés . . . , ainsi
que d’un program status register (le PSR), qui comporte un drapeau nommé : ce drapeau est à 1 si la dernière
valeur écrite dans l’un des registres était nulle, 0 sinon. Les instructions sont codées sur 1 ou 2 octets, comme
indiqué dans le tableau ci-dessous :
premier octet second octet
assembleur action 7 6 5 4 3 2 1 0 7. . . 0
0 0 0 0 0 0 adr
0 0 1 0 0 0 adr
0 1 0 0
0 1 1 0
1 0 0
Si = 1 alors 1 0 1
Dans ce tableau :
désigne un registre de destination et un registre source ( . . . ) ;
désigne le compteur de programme (adresse de la prochaine instruction) ;
et désignent des adresses en mémoire, codées sur 1 octet ;
désigne la case mémoire d’adresse .
Principe des instructions de branchement et : ces instructions permettent de faire des sauts dans le
programme, en modifiant la valeur de . On note l’adresse de l’instruction de branchement dans le
programme, et est un entier (décalage) codé en complément à 2 sur 5 bits par rapport à cette adresse :
Dans le cas de , lorsque l’instruction est exécutée, alors l’instruction qui sera exécutée ensuite est
celle à l’adresse (branchement inconditionnel).
Dans le cas de : si =1 lorsque l’instruction est exécutée, alors la prochaine instruction exécu-
tée est celle à l’adresse (branchement pris), sinon la prochaine instruction sera celle
à l’adresse (branchement non-pris).
Un programmeur qui écrit en langage d’assemblage n’a pas besoin de calculer lui même les adresses de son
programme : il utilise simplement une étiquette pour désigner l’adresse d’une instruction ou d’une donnée,
comme dans le programme ci-dessous. Dans le cas des instructions de branchement, l’assembleur calculera
lui-même les valeurs de décalage ( ).
1) Si un programme comporte une instruction à l’adresse , dans quel intervalle pourra se
trouver l’adresse de la prochaine instruction à être exécutée ? Justifiez votre réponse.
SOLUTION. Comme indiqué dans l’énoncé, est un entier codé en complément à 2 sur 5 bits,
donc
(10000)2
| {z }
=(16)10
(01111)2
| {z }
=(15)10
.
L’adresse de la prochaine instruction à être exécutée est donnée par = + 1+. On
a donc (15)10 + (16)10.
2) Les instructions et décrites dans l’énoncé ne permettent pas d’accéder à tout l’espace mémoire dont
dispose le processeur : pourquoi ?
Nicolas Louvet et Laure Gonnord 2/5
Université Lyon 1, FST, Département Informatique, L2 Corrections d’exercices LIF6 – Printemps 2015
SOLUTION. Dans le codage des instructions et , seul 1 octet est consacré au codage de l’adresse
de chargement ou de rangement : cela ne permet coder que 28=256 adresses.. . On est donc loin des
64 kio =216 o adressables par le processeur.
3) Ajouter des commentaires succincts au programme ci-dessus, en indiquant l’action algorithmique effec-
tuée par chaque instruction. Expliquez ensuite ce que calcule ce programme.
SOLUTION. Il n’est pas très difficile d’identifier le fait que le programme comporte une boucle, entre
l’instruction à l’adresse désignée par et l’instruction . L’instruction de branchement
conditionnel provoque la sortie de boucle lorsque la dernière valeur écrite dans l’un
des registres généraux est nulle, i.e., lorsque =0.
En langage pseudo-algorithmique, le programme précédant peut être traduit de la façon suivante :
Le programme calcule donc la somme des entiers naturels compris entre 1 et 15, et place le résultat
dans le case mémoire désignée par l’étiquette .
4) On suppose que l’étiquette sera rangée en mémoire à l’adresse (001A)H. Complétez le tableau ci-
dessous, en indiquant pour chaque donnée son adresse, et pour chaque instruction l’adresse de son pre-
mier octet.
adresse instruction
(001A)H
SOLUTION. Il n’y a rien de très compliqué, il faut juste faire attention au fait que les instructions d’ac-
cès à la mémoire occupent deux cases mémoires consécutives, alors que les autres instructions n’en
occupent qu’une seule. Les constantes entières n’occupent elles aussi qu’une seule case mémoire.
Nicolas Louvet et Laure Gonnord 3/5
Université Lyon 1, FST, Département Informatique, L2 Corrections d’exercices LIF6 – Printemps 2015
adresse instruction
(001A)H
(001B)H
(001C)H
(001D)H
(001F)H
(0021)H
(0023)H
(0024)H
(0025)H
(0026)H
(0027)H
5) Calculez la valeur de décalage pour l’instruction , puis pour l’instruction :
détaillez bien vos calculs. Donnez votre résultat en décimal puis en binaire.
SOLUTION. Dans le cas de l’instruction , on sait d’après la question précédente que
l’adresse de cette instruction est (0023)H, et que la destination du branchement s’il est pris est l’ins-
truction , qui se trouve rangée à l’adresse (0027)H. D’après l’énoncé, l’adresse de destination
est = + 1+, donc = 1=(0027)H(0023)H1=(3)10. No-
tez que cela pouvez se lire directement dans le tableau de la questions précédente : en partant de la
case mémoire suivant celle de l’instruction , combien de cases mémoire doit-on sauter
pour arriver à l’instruction ? Justement, 3.
Dans le cas de l’instruction , on doit s’attendre à un résultat négatif, puisqu’il faut « remon-
ter » dans le programme. On a =(0023)H(0026)H1= −(4)10. Pour la suite, il est utile de
calculer la représentation de (4)10 en complément à 2 sur 5 bits ; on trouve (4)10 =(11100)2.
6) Donnez le codage en binaire du programme (rayez les octets inutiles) :
instruction premier octet second octet
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
SOLUTION. A défaut de rayer les octets inutiles, dans cette correction les cases correspondantes se-
ront laissées vides. . .Le tableau est complété simplement en utilisant le codage proposé dans l’énoncé.
Nicolas Louvet et Laure Gonnord 4/5
Université Lyon 1, FST, Département Informatique, L2 Corrections d’exercices LIF6 – Printemps 2015
instruction premier octet second octet
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
0 0 0 0 0 0 0 1
0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0
0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0
0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1
1 0 1 0 0 0 1 1
0 1 0 0 0 1 0 0
0 1 1 1 0 0 1 0
1 0 0 1 1 1 0 0
0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0
7) Donnez le codage en mémoire du programme, en donnant le contenu des cases de la mémoire en hexa-
décimal :
adresse contenu
(001A)H
SOLUTION.
adresse contenu
(001A)H(01)H
(001B)H(0F)H
(001C)H(00)H
(001D)H(00)H
(001E)H(1C)H
(001F)H(08)H
(0020)H(1A)H
(0021)H(10)H
(0022)H(1B)H
(0023)H(A3)H
(0024)H(44)H
(0025)H(72)H
(0026)H(9C)H
(0027)H(20)H
(0028)H(1C)H
Nicolas Louvet et Laure Gonnord 5/5
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !