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

Write introduction

parent ca9a38d6
No preview for this file type
......@@ -8,10 +8,10 @@
......@@ -49,30 +49,130 @@
\title{--- CEPHALOPODE ---\\
Design of execution unit in\\
IoT functional language processor}
\author{Jules Saget, under the supervision of Carl-Johan Seger}
\date{March -- July 2020}
The present document is a report for my 1st year of Master's degree
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{},
which aims at creating an environment for secure Internet of Things
My main task was to design an Arithmetical Unit that could handle arbitrary
precision integers, which I believe is unprecedented. By the end of the
internship, the AU could perform additions, subtractions and
Lorem ipsum dolor sit amet\cite{Seg20}.
IoT devices are used more and more nowadays.
Unlike computers, the main objective focus of the underlying hardware is not
performance but rather soundness and power efficiency: these devices are meant
to be left unmanned with minimal user interaction and some of them may run on
battery power.
One of the goal of the Octopi team is to design a processor with respect to
these constraint: energy consumption, then soundness, then performance
\footnote{Performance is still a good thing to have, but we are ready to trade
it for power efficiency.}.
To achieve this, our idea was to build a processor that executes a functional
language, in order to take fully advantage of \emph{lazy evaluation}. This
guarantees that the processor will only compute something when it is sure that
the thing it computed will be used, leading in minimal energy consumption at
the price of performance. One of the goal of the Octopi project is to find out
whether this trade-off is relevant in the case of IoT devices.
Because executing a functional language on a traditional processor is rather
slow, we wanted to design a processor specialized in functional languages,
where the assembly code is not a queue of instructions but a
$\lambda$-expression (see subsection \ref{subsec:progrep}).
To add security, we wanted to prevent overflows in integer operations.
To do so, we decided to use arbitrary precision integers, which consist of
pairs of \texttt{(fixed\_size\_int, address)} that form a list of chunks (like
a list of digits of base $2^{\texttt{size\_of\_int}}$, see subsection
\paragraph{My contribution}
What I did was mostly design the Arithmetical Unit (see section \ref{sec:au}).
The main objective of the internship was to come up with basic implementations
of arithmetical operations, so that proving their correctness would be easier.
A secondary objective was to find out the tools we did not not have (and
therefore should make) that could help us designing hardware.
\section{Hardware model}
Je sais pas quoi écrire là dedans
\subsection{Program representation}
\subsection{Data representation}
\subsection{Processor structure}
\section{Designing the arithmetical unit}
\subsection{Tools for designing hardware}
\subsection{General structure}
\subsection{Addition Unit}
\subsection{Multiplication Unit}
\subsection{Division Unit}
\subsection{Cleaning Unit}
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