Université Bordeaux 1, Sciences et Technologies UFR Informatique et Mathématiques

Licence d’Informatique Session de janvier 2001

Architecture et Microprocesseurs le 23 janvier 2001

Durée : trois heures.

Tous documents autorisés sauf photocopies illégales de livres. Votre voisin n’est pas un document.

Rappel : Soyez bref et clair ! Personne n’est impressionné par la quantité !

Bon courage !

Exercice 1. (7p)

Dans une usine, on souhaite démarrer et arrêter les moteurs par étapes, afin d’éviter de surcharger le réseau électrique. Pour cela, on dispose de deux boutons, ‘on’ et ‘off’, et on souhaite construire un circuit séquentiel avec deux entrées, la valeur des deux boutons, et deux sorties, x_{1}, x_{0} représentant un nombre binaire sur deux chiffres.

Quand la valeur des sorties x_{1}, x_{0} est 00, les moteurs sont complètement arrêtés, et quand la valeur est 11, ils sont complètement démarrés. Quand la valeur du bouton ‘on’ est 1 (même momentanément), on souhaite que les sorties prennent la suite des valeurs 00, 01, 10, 11, 11, etc. De la même façon, quand la valeur du bouton ‘off’ est 1 (même momentanément), on souhaite que les sorties prennent la suite des valeurs 11, 10, 01, 00, 00, etc. Quand la valeur des deux boutons est 1, c’est le ‘off’ qui est prioritaire.

a. Donner la table d’états du circuit (indication : vous avez besoin d’une sortie invisible pour déterminer la direction de la suite des sorties).

b. Réaliser le circuit.

Exercice 2. (7p)

Les seuls registres de l’architecture donnée en annexe visibles au programmeur sont R0 et R1 (le registre d’adresse est utilisé par le microprogramme, mais aucune instruction ne mentionne ce registre dans sa définition), et ces deux registres sont plutôt utilisés pour l’arithmétique.

Pour des langages de programmation manipulant des pointeurs, il est souvent utile de disposer d’un registre contenant une adresse, et d’une instruction pour suivre des structures chaînées par des pointeurs. Cette instruction doit remplacer le contenu du nouveau registre par le contenu en mémoire à l’adresse stockée dans ce registre plus une constante donnée comme paramètre de l’instruction. Ceci permet de générer une seule instruction pour des instructions en C du type p = p -> next.

a. Rajouter un tel registre et les autres circuits nécessaires pour cette nouvelle fonctionnalité à l’architecture donnée en annexe.

b. Réaliser le microprogramme de l’instruction LAD (Load Address) dont la définition est R = M[R + c], où R est le contenu du nouveau registre, c est la constante donnée sous la forme de paramètre de l’instruction, et M[x] signifie le contenu de la mémoire à l’adresse x.

Exercice 3. (6p)

Expliquer comment on peut écrire un programme pour tester l’hypothèse que l’associativité du cache est égale à 4, étant donné qu’on sait que la taille du cache est 128 kO. Il ne s’agit pas d’écrire le programme, mais d’expliquer ce que doit faire un tel programme et ce qu’on observe de l’exécution du programme si l’hypothèse est vrai ou fausse.