Commit bbfd90f3 by Jules Saget

### Final touches

parent 1b11b7f7
 ... ... @@ -92,17 +92,17 @@ internship at the Chalmers University of Technology, Gothenburg, Sweden. I worked with Carl-Johan Seger -- my supervisor -- and Jeremy Pope. The goal of the project is to design a processor tailored for functional languages, with power efficiency as the main constraint. This project is part of the Octopi project\urlfootnote{https://octopi.chalmers.se/}, which aims at creating an environment for secure Internet of Things development. My main task was to design an Arithmetical Unit that could handle arbitrary precision integers. The goal of the project I joined is to design a processor tailored for functional languages, with power efficiency as the main constraint. This project is part of the Octopi project\urlfootnote{https://octopi.chalmers.se/}, which aims at creating an environment for secure Internet of Things (IoT) development. My main task was to design an Arithmetical and Logical Unit (ALU) that could handle arbitrary precision integers. Arbitrary precision is traditionally implemented in software and we have not been able to find any documented hardware implementation. By the end of the internship, the AU could perform additions, subtractions By the end of the internship, the ALU could perform additions, subtractions and multiplications. \end{abstract} ... ... @@ -145,7 +145,7 @@ Due to the stress brougth by the pandemic and the fact that I had no proper office in my Swedish appartment (I had to work on my kitchen table), I sometimes lost focus and struggled to work for a few days. I had to take a week off in May to get back to work. Apart from that, there were no other difficulties caused by the situation. There were no other difficulties caused by the situation. \section{Introduction} ... ... @@ -223,7 +223,7 @@ Here is how they are defined: S x y z & \rightarrow_\beta x z (y z) \\ \end{align*} Their behaviour is shown in Fig~\ref{fig:ski}. Their behaviour is shown in Fig.~\ref{fig:ski}. Note that \emph{K} and \emph{I} create an \emph{indirection node} (represented by the $=$ symbol), which is similar to a symbolic link in Linux. These nodes ensure laziness is not lost \cite{Pey87}. ... ... @@ -244,7 +244,7 @@ Consider this $\lambda$-expression: \] After compiling this to combinators using a standard “brackecting” approach \cite{Pey87}, we would obtain the leftmost graph shown in Fig~\ref{fig:gr_ex}. \cite{Pey87}, we would obtain the leftmost graph shown in Fig.~\ref{fig:gr_ex}. \begin{figure}[ht] \centering ... ... @@ -505,7 +505,7 @@ let shadok = Finally, each circuit can be drawn with \texttt{STE\_debug} and shown to the user. In that case, calling \texttt{v\_AO} will result in the window in Fig~\ref{fig:andor}. Fig.~\ref{fig:andor}. \begin{figure}[ht] \centering ... ... @@ -552,7 +552,7 @@ The process would be as follows: This process is divided into four distinct steps with a clear condition to go from one step to another: this process can be represented by a FSM. Such a FSM is shown in Fig~\ref{fig:4ph}. Such a FSM is shown in Fig.~\ref{fig:4ph}. For more details on 4 phase handshake protocols, see \cite{category}. \begin{figure}[ht] ... ... @@ -576,7 +576,7 @@ Moore_FSM "handshaker" clk state (reset --- IDLE) [ DONE --- '~' start --- IDLE ] \end{minted} \caption{Code implementing the FSM in Fig~\ref{fig:4ph}} \caption{Code implementing the FSM in Fig.~\ref{fig:4ph}} \label{fl:4ph} \end{listing} ... ... @@ -587,7 +587,7 @@ As one may guess, it is far easier to think of FSMs under their visual form rather than their list form. In fact, the design process is done exclusively on paper, and the list version is just a transcription of the visual form\footnote{This is not only true in my case, but in Carl Seger's as well: as a former intel employee, he told me most case, but in Carl Seger's as well: as a former Intel employee, he told me most of the FSMs were designed on whiteboards, and are currently archived on these very whiteboards!}. ... ... @@ -670,7 +670,7 @@ When one of the numbers end, there are two possibilities To follow the logic of the comparator, it is useful to draw a finite state machine that describes how the unit work; a visual description of the finite state machine is shown in Fig~\ref{fig:comp_fsm}. finite state machine is shown in Fig.~\ref{fig:comp_fsm}. \begin{figure}[ht] \centering ... ... @@ -936,9 +936,9 @@ the adder performs. For all checks, we need to change \texttt{b\_pos}: if \texttt{B} is positive, treat it as negative and \emph{vice-versa}. Finally, we need to modify the condition in \texttt{B\_CHECK} a bit: in the case of a subtraction (\texttt{A - B}), if \texttt{A} is exhausted but no \texttt{B}, we still need to continue reading \texttt{B} to change its sign. Finally, we need to modify the condition in \texttt{B\_CHECK}: in the case of a subtraction (\texttt{A - B}), if \texttt{A} is exhausted but no \texttt{B}, we still need to continue reading \texttt{B} to change its sign. \subsection{Multiplication Unit} ... ... @@ -969,7 +969,7 @@ That is why I decided to merge both processes: instead of storing different lines, we store only one partial result that we update at every step. This means that, contrary to the regular multiplication, we will have to go back to previous partial results and update them. The FSM of this process can be found in Fig~\ref{fig:mul_fsm}. The FSM of this process can be found in Fig.~\ref{fig:mul_fsm}. The three nested loops can be seen, with a virtual \texttt{LOOP\_CHECK} at the end of each one. ... ... @@ -1044,7 +1044,7 @@ The cleaning unit is not very complex. It simply reads through integers after an arithmetic operation has been performed, keeps the address of the last relevant chunks, and overwrite this chunks to remove any link to other chunks. The FSM of the cleaning unit is available in Fig~\ref{fig:clean_fsm}. The FSM of the cleaning unit is available in Fig.~\ref{fig:clean_fsm}. \begin{figure}[ht] \centering ... ... @@ -1075,7 +1075,7 @@ avoid reading integers afterwards. This is not as obvious as it seems, because a unit such as the multiplier unit (and probably the division unit as well) write non-linearly to memory. \subsection{Logical unit} \subsection{Logical Unit} \label{subsec:logical} The logical unit is by far the simplest one. ... ... @@ -1089,7 +1089,7 @@ operation to determine the result: else it is \texttt{B} and we return an indirection node (see \ref{subsec:datarep}) to \texttt{B}; \item[AND] conjonction is similar to disjuntion\footnote{They are actually the same module, shown in Listing \ref{fl:andor} and in Fig~ the same module, shown in Listing \ref{fl:andor} and in Fig.~ \ref{fig:andor}.}; \item[COND] it is clear in the case of \emph{if then else} constructs, and the module just returns an indirection to the right node. ... ...
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!