\usepackage{multimedia}
\usepackage{subfigure}
\usepackage{booktabs}
+% Can use a tiny fontsize
+\usepackage{fancyvrb}
+
+
+%\usepackage{pgfpages}
+%\pgfpagesuselayout{4 on 1}[a4paper,border shrink=5mm]
+
%For handouts, use the following two lines:
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
\end{frame}
\section{Introduction}
- \subsection{Montium Tile Processor}
- \subsection{MontiumC}
- \subsection{LLVM}
- \subsection{Compile process}
+ \begin{frame}{Montium Tile Processor}
+ \begin{itemize}
+ \item Explicitely parallel processor
+ \item Multilevel reconfiguration
+ \item Separate memory addressing units
+ \item Data oriented, limited control flow
+ \item Redesign on the way
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{MontiumC}
+ \begin{itemize}
+ \item Subset of C
+ \item Operations on data using MontiumC API
+ \item Compilable by gcc (as C++)
+ \item Under constant improvement
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Low Level Virtual Machine (LLVM)}
+ \begin{itemize}
+ \item Compiler framework.
+ \item Provides:
+ \begin{itemize}
+ \item C Frontend
+ \item Intermediate representation (LLVM IR)
+ \item Transformation passes
+ \item Native codegenerators
+ \item JIT compilation
+ \end{itemize}
+ \item Very modular
+ \end{itemize}
+ \end{frame}
+
+ \begin{frame}{Compiling MontiumC}
+ \pgfdeclareimage[width=\textwidth]{Compiling}{images/Compiling}
+ \pgfuseimage{Compiling}
+ \begin{itemize}
+ \item Focus: montiumccfe and transformations
+ \end{itemize}
+ \end{frame}
\section{Tasks}
\begin{itemize}
\item What is MontiumC?
\item What is Montium IR?
+ \item Reconfigurable binaries
\end{itemize}
\end{frame}
\begin{frame}{What is MontiumC?}
+ \note{Two angles: What do we want, and what do we support.}
\begin{itemize}
\item Status: Specification is ongoing
\item Challenges:
\end{itemize}
\end{itemize}
\end{frame}
-
+
+ \begin{frame}[containsverbatim]
+ \begin{columns}
+ \begin{column}{0.5\textwidth}
+ Low level
+ \begin{Verbatim}[fontsize=\tiny]
+mem input;
+mem output;
+word factor;
+
+void run(void) {
+ factor = from_int(2);
+ input = alloc_mem(P0M0);
+ output = alloc_mem(P0M1);
+ set_base(input, 0);
+ set_offset(input, 0);
+ set_base(output, -1);
+ set_offset(output, -1);
+
+ next_cycle();
+ word in = read_mem(input);
+ word out = p0o0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ init_loop(LC1, 8);
+ do {
+ write_mem(output, out);
+ in = read_mem(input);
+ out = p0m0(imul(ra1(in), rc1(factor)))
+ add_offset(input, 1);
+ add_offset(output, 1);
+ } while(loop_next(LC1));
+
+ write_mem(output, out);
+\end{Verbatim}
+ \end{column}
+ \begin{column}{0.5\textwidth}
+ High level
+ \begin{Verbatim}[fontsize=\tiny]
+P0M0 int input[10];
+P0M1 int output[10];
+
+void run(void) {
+ for (int i=0; i<10; ++i)
+ output[i] = input[i] * 2;
+}
+ \end{Verbatim}
+ \end{column}
+ \end{columns}
+ \end{frame}
+ \note{} % Empty filler note page
+
\begin{frame}{What is Montium IR?}
\begin{itemize}
\item Status: Initial version
\item Challenges:
\begin{itemize}
- \item Fast moving target
+ \item Backend is a fast moving target
\item Corner cases
\note[item]{Corner case --- global constants}
\item Hardware dependencies
\end{frame}
\section{Work process}
- \begin{frame}{Recore}
+ \begin{frame}{Working at Recore}
\begin{itemize}
+ \item Smart people
\item Fast communication
\note[item]{Communication --- Mixed teams, easy to "listen in".}
\item Constructive brainstorming
\end{itemize}
\end{frame}
- \begin{frame}{LLVM}
+ \begin{frame}{Working with LLVM}
\begin{itemize}
\item Large community
\note[item]{Community --- Companies involved, a lot of full time
\end{frame}
\section{Conclusions}
+ \begin{frame}{Conclusions}
+ \begin{itemize}
+ \item LLVM is very suitable
+ \item Defining the problem is harder than solving it
+ \item Three months is short!
+ \end{itemize}
+ \end{frame}
\end{document}