TP1 : Processeur Hack 1 Installation de Lustre

Transcription

TP1 : Processeur Hack 1 Installation de Lustre
Master Parisien de Recherche en Informatique
2012–2013
Systèmes Synchrones
L. Mandel, M. Pouzet & J. Vuillemin
TP1 : Processeur Hack
Le but de cet exercice est de programmer en Lustre le processeur Hack définit dans
le livre “The Elements of Computing Systems” de Noam Nisan et Shimon Schocken (site
web du livre : www.idc.ac.il/tecs).
1
Installation de Lustre
Question 1
La première chose à faire est d’installer Lustre. Pour cela, définir les variables d’environnement
suivantes :
export LUSTRE_INSTALL=~mandel/lustre/lustre-v4-II
export PATH=$LUSTRE_INSTALL/bin:$PATH
export MANPATH=$MANPATH:$LUSTRE_INSTALL/man
Le manuel de Lustre est disponible dans le répertoire $LUSTRE_INSTALL/doc.
Pour compiler un fichier Lustre qui s’appelle file.lus et dont le noeud principal
s’appelle main, il faut compiler le fichier Lustre en ec :
--> lus2ec file.lus main
Puis, il faut compiler le fichier ec généré en C (l’option -loop génère un programme
principale qui appelle le noeud main) :
--> ec2c main.ec -loop
Enfin, il faut compiler le programme C généré :
--> gcc -o main main.c main_loop.c
Il est également possible de simuler un programme Lustre à l’aide du simulateur
graphique luciole :
--> luciole file.lus main
Enfin, si le fichier file.lus contient un noeud check qui a une seule sortie qui est de
type bool, on peut essayer de prouver que la sortie est toujours vraie en utilisant lesar :
--> lesar file.lus check -v -diag
1
2
Implantation du processeur Hack
La spécification de chaque noeud composant le processeur Hack se trouve dans le livre
“The Elements of Computing Systems” disponible à l’adresse suivante :
http://www1.idc.ac.il/tecs/plan.html
Question 2
Récupérer le programme Lustre à compléter à l’adresse suivante : http: // www. lri.
fr/ ~ mandel/ mpri/ tp1/ hack. tar. gz .
Question 3
Implanter le noeud DMux (cf. chapitre 1, page 21).
Question 4
Prouver que la composition d’un démultiplexeur et d’un multiplexeur se comporte comme
l’identité si ces deux noeuds ont la même condition de sélection.
Question 5
Donner une nouvelle implantation du noeud or_n_way (cf. chapitre 1, page 23) qui utilise
un nombre logarithmique de or par rapport à son nombre d’entrées (on supposera que
son nombre d’entrées est une puissance de 2).
Question 6
Prouver que votre nouvelle implantation du noeud or_n_way est équivalente à l’implantation
précédente dans le cas où la constante n est égale à 8.
Question 7
Implanter l’additionneur n-bits add_n (cf. chapitre 2, page 34). En déduire l’implantation
d’un additionneur 16-bits.
Question 8
Implanter l’unité arithmétique et logique ALU (cf. chapitre 2, page 36). Pour tester le
comportement de votre ALU, utiliser les noeuds check_ALU* du fichier check.lus.
Question 9
Implanter le noeud Bit (cf. chapitre 3, page 48).
Question 10
Implanter le noeud PC (cf. chapitre 3, page 51). Pour tester le comportement de votre
PC, utiliser le noeud check_PC du fichier check.lus.
Question 11
Implanter le CPU du processeur Hack (cf. chapitre 5, page 88). Vous pouvez suivre
l’architecture proposé chapitre 5, page 94. Pour déterminer la valeur des bits de contrôle,
se reporter à la description des instructions dans le chapitre 4, pages 64 à 69. Vous pouvez
tester le CPU avec le noeud incr_machine qui calcule la suite des entiers modulo 216 .
2

Documents pareils