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