Commit bbfd90f3 authored by Jules Saget's avatar Jules Saget
Browse files

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!
Please register or to comment