From 4c3cc78a7af5c77726c58f035fa54244e24e9feb Mon Sep 17 00:00:00 2001 From: Alex AUVOLAT Date: Wed, 15 Jan 2014 11:00:26 +0100 Subject: Move documentation ; add template for report on CPU. --- doc/rapport_simulateur.tm | 119 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 doc/rapport_simulateur.tm (limited to 'doc/rapport_simulateur.tm') diff --git a/doc/rapport_simulateur.tm b/doc/rapport_simulateur.tm new file mode 100644 index 0000000..a7352cf --- /dev/null +++ b/doc/rapport_simulateur.tm @@ -0,0 +1,119 @@ + + + + +<\body> + |>>|> + + Dans le cadre du cours de + , j'ai écrit un simulateur de circuit capable de faire + fonctionner un circuit préalablement compilé dans le langage MiniJazz. + + Le simulateur que j'ai écrit est codé en C (essentiellement pour la + rapidité d'exécution), et nécessite un pré-traîtement des données par un + programme en Caml. Le simulateur en C ne lit pas directement les netlist + produites par MiniJazz, mais un fichier qui est produit + par le pré-processeur. + + Contenu de l'archive ci-jointe : + + <\verbatim-code> + README + + \ Diverses documentations. À lire. + + \; + + sched/ + + \ Dans ce répertoire se trouve le pré-processeur, qui effectue les + opérations suivantes : + + \ - lecture d'une netlist + + \ - tri topologique + + \ - diverses optimisations + + \ - écriture d'un fichier .net et d'un fichier .dumb contenant le + résultat. + + Pour compiler le pré-processeur : + + $ cd sched/ + + $ ocamlbuild main.byte + + \; + + csim/ + + \ Dans ce répertoire se trouve le simulateur en C. + + Pour le compiler : + + $ cd csim/ + + $ make + + Les options du simulateur sont décrites lors de l'invocation de celui-ci + sans arguments. + + \; + + tests/ + + \ Ce répertoire contient un certain nombre de fichiers de test au format + minijazz. Le Makefile permet d'effectuer les appels au compilateur, au + pré-processeur et au simulateur avec la syntaxe suivante : + + $ cd tests/ + + $ make nadder.sim \ \ \ \ # nadder.mj -\ nadder.net -\ + nadder.dumb -\ csim + + + Les points importants à souligner dans mon travail sont : + + <\itemize> + Définition d'un format de données intermédiaire pour les Netlist, + permettant l'écriture d'un simulateur en C. Définition conjointe de ce + format et de la structure du simulateur, afin d'écrire un simulateur le + mieux optimisé possible. + + Écriture d'un optimiseur de Netlist, qui est capable d'effectuer + plusieurs simplifications, dont : + + <\itemize> + propagation des constantes ; + + détection de variables au contenu identique ; + + suppression de variables inutiles ; + + suppression d'opérations arithmétiques inutiles. + + + L'application de ces passes d'optimisation réduit généralement la taille + d'une Netlist d'environ 30%. + + + Les efforts d'optimisation ont été faits dans l'idée que le simulateur + devra faire fonctionner un processeur MIPS à une fréquence raisonnable + (idéalement, plusieurs centaines, voire milliers, de cycle par seconde). Le + résultat de ce travail se voit sur les programmes et + qui définissent deux horloges qui comptent modulo 60 + puis 60 puis 24 (donc qui comptent sur une journée, à un cycle par + seconde). Avec mon simulateur optimisé, les deux horloges sont capables de + simuler une journée entière de comptage, c'est-à-dire 86400 cycles, en 0.4 + secondes pour le premier et 0.9 secondes pour le second, sur un ordinateur + moderne. + + +<\initial> + <\collection> + + + \ No newline at end of file -- cgit v1.2.3