Commit daf4c0a0 authored by Quentin Aristote's avatar Quentin Aristote
Browse files

parce que timbrk n'a probablement pas word

parent cd7d4cf3
File added
\documentclass{article}
\usepackage{fontspec}
\title{De la création d'un microprocesseur}
\author{Quentin Aristote, Félix Breton, Lucie Galland, Léa Naccache}
\date{31 janvier 2019}
\begin{document}
\maketitle
\section*{Introduction}
Le programme fourni simule l'éxecution d'une horloge dans le calendrier révolutionnaire soviétique par un microprocesseur dont l'architecture est dérivée de l'architecture MIPS.
\section*{Le calendrier révolutionnaire soviétique}
Le calendrier révolutionnaire soviétique est constitué de 12 mois, eux-mêmes constitués de 6 semaines de 5 jours. Chaque jour de la semaine correspond à un groupe de travailleur dont c'est le jour de repos. On compte de plus 5 jours fériés (6 les années bissextiles) :
\begin{itemize}
\item le jour de Lénine après le 30 janvier
\item deux jours du travail aptrès le 30 avril
\item deux jours de l'industrie après le 7 novembre
\item les années bissextiles, un jour férié supplémentaire après le 30 février
\end{itemize}
\section*{Le microprocesseur}
\subsection*{Architecture}
Le microprocesseur contient 16 registres de 16 bits, en plus de deux registres qui contiennent respectivement l'adresse de lecture dans le programme assembleur executé (32 bits) et un compteur du nombre d'opérations effectuées (7 bits).
\\ Les registres sont stockés dans le RAM. Il y a donc en pratique 10 blocs de RAM contenant les mêmes données afin de pouvoir accéder à 10 registres à chaque cycle : 8 registres contenant la date et l'heure actuelle et 2 registres permettant d'effectuer les calculs.
\bigskip Ainsi, à chaque cycle d'horloge,
\begin{itemize}
\item on lit dans la ROM la prochaine instruction à éxecuter ;
\item on lit les valeurs des registres nécessaires ;
\item on calcule en parallèle les résultats de chaque instruction possible et on sélectionne le bon grâce à un jeu de multiplexeurs ;
\item on met à jour les registres ainsi que l'adresse de lecture dans la ROM.
\end{itemize}
\subsection*{Jeu d'instruction}
On implémente un sous-ensemble des instructions MIPS, parfois traitées de manière légèrement différentes. Elles se divisent en trois catégories. Tous les entiers sont représentés par des entiers signés.
\subsubsection*{Instructions de type R}
\subsubsection*{Instructions de type I}
\subsubsection*{Instructions de type J}
\section*{L'horloge}
L'horloge est un programme assembleur utilisant les seules instructions ci-dessus calculant les modifications de la date et de l'heure à l'ajout d'une seconde. On utilise 8 registres pour stocker ces informations :
\begin{itemize}
\item \texttt{\$t0} ($0$ à $59$) contient les secondes
\item \texttt{\$t1} ($0$ à $59$) contient les minutes
\item \texttt{\$t2} ($0$ à $23$) contient les heures
\item \texttt{\$t3} ($0$ à $30$) contient le jour ; la valeur $0$ est utilisée lorsque le jour est férié
\item \texttt{\$t4} ($1$ à $12$) contient le mois
\item \texttt{\$t5} ($0$ à $2^{15}-1$) contient l'année
\item \texttt{\$t6} ($0$ à $5$) contient le jour de la semaine ; la valeur $0$ est utilisée lorsque le jour est férié
\item \texttt{\$t7} ($0$ à $6$) contient le jour férié ; la valeur $0$ est utilisée lorsque le jour n'est pas férié
\end{itemize}
À chaque cycle d'horloge on incrémente les secondes et subséquemment les minutes, les heures, ...
\\ Le calcul des années bissextiles (\textit{id est} un calcul modulo $4$) se fait à l'aide d'un \textit{logical shift left} suivi d'un \textit{logical shift right}, à chaque fois sur 2 bits.
\bigskip
On transforme le programme assembleur en fichier binaire à l'aide du logiciel \texttt{spim}.
\section*{Le simulateur de netlist}
\section*{Interface}
\end{document}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment