1 \documentclass[hyperref={pdfpagelabels=false}]{beamer}
3 \setbeameroption{show notes}
10 \setbeamercovered{transparent}
11 %\setbeamertemplate{footline}[frame number]
14 \usepackage[english]{babel}
15 \usepackage[latin1]{inputenc}
17 \usepackage[T1]{fontenc}
20 \usepackage{multimedia}
21 \usepackage{subfigure}
23 % Can use a tiny fontsize
26 %For handouts, use the following two lines:
27 %\usepackage{pgfpages}
28 %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
32 {MontiumC Transforming}
34 \author {Matthijs Kooijman}
36 \institute[Recore Systems and University of Twente]
42 Faculty of Electrical Engineering, Mathematics and Computer Science\\
52 \begin{frame}{Contents}
56 \section{Introduction}
57 \subsection{Montium Tile Processor}
60 \subsection{Compile process}
61 \begin{frame}{Compiling MontiumC}
62 \pgfdeclareimage[width=\textwidth]{Compiling}{images/Compiling}
63 \pgfuseimage{Compiling}
68 \subsection{Original tasks}
69 \begin{frame}{Original tasks}
71 \item Select LLVM transformations
72 \item Improve and add transformations
73 \item Provide debugging information
77 \subsection{Extra tasks}
78 \begin{frame}{Extra tasks}
80 \item What is MontiumC?
81 \item What is Montium IR?
85 \begin{frame}{What is MontiumC?}
87 \item Status: Specification is ongoing
90 \item Clang is nontransparent
91 \note[item]{Clang --- A lot of special cases}
93 \note[item]{Complex C --- A lot of corner cases}
95 \note[item]{Limited C --- Need to use annotations, limited amount of types}
96 \item Assembly vs. High level
97 \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
98 vs control, clarity vs determinism}
103 \begin{frame}[containsverbatim]
105 \begin{column}{0.5\textwidth}
107 \begin{Verbatim}[fontsize=\tiny]
113 factor = from_int(2);
114 input = alloc_mem(P0M0);
115 output = alloc_mem(P0M1);
117 set_offset(input, 0);
118 set_base(output, -1);
119 set_offset(output, -1);
122 word in = read_mem(input);
123 word out = p0o0(imul(ra1(in), rc1(factor)))
124 add_offset(input, 1);
125 add_offset(output, 1);
128 write_mem(output, out);
129 in = read_mem(input);
130 out = p0m0(imul(ra1(in), rc1(factor)))
131 add_offset(input, 1);
132 add_offset(output, 1);
133 } while(loop_next(LC1));
135 write_mem(output, out);
138 \begin{column}{0.5\textwidth}
140 \begin{Verbatim}[fontsize=\tiny]
145 for (int i=0; i<10; ++i)
146 output[i] = input[i] * 2;
153 \begin{frame}{What is Montium IR?}
155 \item Status: Initial version
158 \item Fast moving target
160 \note[item]{Corner case --- global constants}
161 \item Hardware dependencies
162 \note[item]{Hardware --- Limited number of conditionals possible}
167 \begin{frame}{Selecting LLVM transformations}
172 \item LLVM Passes assume a lot
173 \note[item]{Assumptions --- Immediates are not free}
174 \item Montium has specific constraints
175 \note[item]{Constraint --- Implicit cycle boundaries and ordering}
180 \begin{frame}{Improving / adding transformations}
182 \item Status: Ongoing
185 \item Staying generic
186 \note[item]{Generic --- LLVM maintained passes are a lot easier}
187 \item New LLVM features
188 \note[item]{Features --- Multiple return values, inlining and
189 annotation attributes}
194 \begin{frame}{Debugging information}
196 \item Status: Not started
199 \item Not much LLVM support yet
200 \note[item]{LLVM support --- New in clang/backend, no support in
201 transformations yet.}
202 \item Transformations
203 \note[item]{Transformations --- Global arguments, argument addition,
209 \begin{frame}{Reconfigurable binaries}
211 \item Status: Recently started
214 \item Tracking variables
215 \note[item]{Tracking --- Through all steps of the process}
216 \item Loss of optimizations
217 \note[item]{Optimizations --- Hard to encode constraints}
218 \item Mostly a backend problem
223 \section{Work process}
224 \begin{frame}{Recore}
226 \item Fast communication
227 \note[item]{Communication --- Mixed teams, easy to "listen in".}
228 \item Constructive brainstorming
229 \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
235 \item Large community
236 \note[item]{Community --- Companies involved, a lot of full time
239 \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
240 \item Slightly conflicting goals
241 \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
245 \section{Conclusions}