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}
64 \subsection{Original tasks}
65 \begin{frame}{Original tasks}
67 \item Select LLVM transformations
68 \item Improve and add transformations
69 \item Provide debugging information
73 \subsection{Extra tasks}
74 \begin{frame}{Extra tasks}
76 \item What is MontiumC?
77 \item What is Montium IR?
81 \begin{frame}{What is MontiumC?}
83 \item Status: Specification is ongoing
86 \item Clang is nontransparent
87 \note[item]{Clang --- A lot of special cases}
89 \note[item]{Complex C --- A lot of corner cases}
91 \note[item]{Limited C --- Need to use annotations, limited amount of types}
92 \item Assembly vs. High level
93 \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
94 vs control, clarity vs determinism}
99 \begin{frame}[containsverbatim]
101 \begin{column}{0.5\textwidth}
103 \begin{Verbatim}[fontsize=\tiny]
109 factor = from_int(2);
110 input = alloc_mem(P0M0);
111 output = alloc_mem(P0M1);
113 set_offset(input, 0);
114 set_base(output, -1);
115 set_offset(output, -1);
118 word in = read_mem(input);
119 word out = p0o0(imul(ra1(in), rc1(factor)))
120 add_offset(input, 1);
121 add_offset(output, 1);
124 write_mem(output, out);
125 in = read_mem(input);
126 out = p0m0(imul(ra1(in), rc1(factor)))
127 add_offset(input, 1);
128 add_offset(output, 1);
129 } while(loop_next(LC1));
131 write_mem(output, out);
134 \begin{column}{0.5\textwidth}
136 \begin{Verbatim}[fontsize=\tiny]
141 for (int i=0; i<10; ++i)
142 output[i] = input[i] * 2;
149 \begin{frame}{What is Montium IR?}
151 \item Status: Initial version
154 \item Fast moving target
156 \note[item]{Corner case --- global constants}
157 \item Hardware dependencies
158 \note[item]{Hardware --- Limited number of conditionals possible}
163 \begin{frame}{Selecting LLVM transformations}
168 \item LLVM Passes assume a lot
169 \note[item]{Assumptions --- Immediates are not free}
170 \item Montium has specific constraints
171 \note[item]{Constraint --- Implicit cycle boundaries and ordering}
176 \begin{frame}{Improving / adding transformations}
178 \item Status: Ongoing
181 \item Staying generic
182 \note[item]{Generic --- LLVM maintained passes are a lot easier}
183 \item New LLVM features
184 \note[item]{Features --- Multiple return values, inlining and
185 annotation attributes}
190 \begin{frame}{Debugging information}
192 \item Status: Not started
195 \item Not much LLVM support yet
196 \note[item]{LLVM support --- New in clang/backend, no support in
197 transformations yet.}
198 \item Transformations
199 \note[item]{Transformations --- Global arguments, argument addition,
205 \begin{frame}{Reconfigurable binaries}
207 \item Status: Recently started
210 \item Tracking variables
211 \note[item]{Tracking --- Through all steps of the process}
212 \item Loss of optimizations
213 \note[item]{Optimizations --- Hard to encode constraints}
214 \item Mostly a backend problem
219 \section{Work process}
220 \begin{frame}{Recore}
222 \item Fast communication
223 \note[item]{Communication --- Mixed teams, easy to "listen in".}
224 \item Constructive brainstorming
225 \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
231 \item Large community
232 \note[item]{Community --- Companies involved, a lot of full time
235 \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
236 \item Slightly conflicting goals
237 \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
241 \section{Conclusions}