Vous êtes sur la page 1sur 4

L3 informatique

Examen – Architecture des ordinateurs


Mardi 15 mai 2012 - durée 2h

Les documents de cours et de TD/TP sont interdits. Seule est autorisée une feuille A4 de notes
personelles approuvée par les suveillants du partiel. Cette feuille devra être rendue avec la copie.
Les ordinateurs, calculatrices ainsi que les téléphones sont interdits.

Les exercices sont indépendants. Prenez donc le temps de lire l’énoncé entièrement avant de commencer.
Je tiens également à signaler que la lisibilité de votre copie sera prise en compte dans la correction.
Dans votre propre intérêt, faites des réponses claires, propres et concises (et si possible justes).

Exercice 1 – Un petit exercice de mémoire

1. L’efficacité de la mémoire cache repose sur le principe de localité. Expliquer en quelques


lignes ce principe et comment il est utilisé.
2. Donner et décriver brièvement les différentes politiques de remplacement possibles lors d’un
défaut de cache. Laquelle est la plus utilisée en pratique et pourquoi ?

Exercice 2 – Pipeline

1. Expliquer en quelques lignes le principe de pipelining.


2. On suppose que l’on dispose d’un processeur pipeliné à 5 étages dont le temps de cycle est de
0.4ns. Combien de temps faut-il pour exécuter les 101 premières instructions en supposant
qu’il n’y a aucun aléa ?
3. On suppose que l’on dispose d’un processeur pipeliné à 4 étages possédant une structure de
cache/bus permettant l’accès parallèle aux instructions et aux données (comme on l’a vu en
cours). Identifier et expliquer très brièvement les éventuels aléas présents dans la suite d’in-
structions suivante.

Code1 :
1 mov e x, [0x42℄
2 and eax, ebx
3 add ebx, e x
4 mul dword [0x6600FF77℄
Code2 :
1 mov e x, [0x42℄
2 and eax, ebx
3 mul e x

1
Code3 :
1 mov e x [bla℄
2 and ebx eax
3 jmp edx
Code4 :
1 de e x
2 push ebp
3 mp eax ebx
4 add [0x674F8A11℄ e x

Exercice 3 – Quelques instructions

1. Sans utiliser l’instruction mul écrire une suite d’instructions qui calcule le produit de m et n
où m et n sont des entiers non-signés codés sur 16 bits initialement situés sur le haut de la
pile. Le résultat sera placé dans le registre eax.

Exercice 4 – Trouver ses mots.


Dans les questions suivantes agrémentez votre code de commentaires afin d’expliquer ce que font
les différentes parties de votre programme.

Une chaîne de caractères est un tableau contigu d’octets finissant par l’octet zéro. Calculer la
longueur d’une chaîne revient donc à trouver l’octet zéro final.

1. Ecrire une fonction nbMots qui prend comme argument l’adresse du premier caractère d’une
chaîne et renvoie dans eax le nombre de mots que compte la chaîne.
Votre fonction doit respecter les conventions du C. Le code ascii du caractère SPACE est 0x20.

Exercice 5 – Basculons dans le séquentiel

1. Rappeler le fonctionnement d’une bascule D flip-flop front montant.


2. Donner un circuit simulant une bascule D flip-flip front descendant. (Vous pourrez utiliser une
ou plusieurs bascules D flip-flop front montant)

Exercice 6 – Quelques séquences d’états


On considère le graphe des états décrit par la table ci-dessous :
Etat courant Entrée Etat suivant
0 0 0
0 1 1
1 0 2
1 1 0
2 0 1
2 1 2
1. Dessiner le graphe des états correspondant à cette table.
2. Combien faut-il de bascules pour simuler le comportement de ce système à l’aide d’un circuit
séquentiel ?
3. Construire un tel circuit séquentiel. (expliquer les différentes étapes de la construction)

2
Exercice 7 – Trouver le bon tempo.
On considère le schéma représenté à gauche de la figure ci-dessous où le rectangle symbolise
une bascule D et l’entrée I reçoit le signal d’horloge donné à droite de la figure.

D Q

I Q O

Le circuit (à gauche) et le signal d’horloge (à droite)


1. Donner la forme du signal de la sortie O. Représenter sur une même figure les chrono-
grammes d’entrée et de sortie. On suppose que le courant initial en sortie est nul.
2. Expliquer ce que fait ce circuit.
3. En s’inspirant de ce circuit, comment pourrait-on construire un circuit qui divise la fréquence
d’un signal d’horloge par 5 ?
4. Donner un circuit qui divise la fréquence d’un signal d’horloge par cinq.

3
Résumé des principales instructions assembleur

mov dst src déplace src dans dst


x hg ds1 ds2 échange ds1 et ds2
push src place src au sommet de la pile
pop dst supprime le sommet de la pile et le place dans dst
add dst src ajoute src à dst
ad dst src ajoute src à dst avec retenue
sub dst src soustrait src à dst
sbb dst src soustrait src à dst avec retenue
mul src multiplie eax par src (résultat dans edx|eax)
imul src multiplie eax par src (cplt à 2)
div src divise edx|eax par src (eax=quotient, edx=reste)
idiv src divise edx|eax par src (cplt à 2)
in dst 1 + dst
de dst dst − 1
neg dst −dst
not dst place (not dst) dans dst
and dst src place (src AND dst) dans dst
or dst src place (src OR dst) dans dst
xor dst src place (src XOR dst) dans dst
sal dst nb décalage arithmétique à gauche de nb bits de dst
sar dst nb décalage arithmétique à droite de nb bits de dst
shl dst nb décalage logique à gauche de nb bits de dst
shr dst nb décalage logique à droite de nb bits de dst
rol dst nb rotation à gauche de nb bits de dst
ror dst nb rotation à droite de nb bits de dst
r l dst nb rotation à gauche de nb bits de dst avec retenue
r r dst nb rotation à droite de nb bits de dst avec retenue
mp sr1 sr2 compare sr1 et sr2
jmp adr saut vers l’adresse adr
jxx adr saut conditionné par xx vers l’adresse adr
loop adr répétition de la boucle nb de fois (nb dans e x)
loopx adr répétition de la boucle conditionnée par x

Vous aimerez peut-être aussi