X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=Progress%20presentation%2FPresentation.tex;h=1d28c7d4e558e51a7f5e8c04f33b09ae835161c1;hb=df1a09093bd279bd757341a7eb582883739870c6;hp=302cd8def6d021a235447340038d79152cdecc58;hpb=297d15dacc86b868328eb370d6027d2137530c83;p=matthijs%2Fprojects%2Finternship.git diff --git a/Progress presentation/Presentation.tex b/Progress presentation/Presentation.tex index 302cd8d..1d28c7d 100755 --- a/Progress presentation/Presentation.tex +++ b/Progress presentation/Presentation.tex @@ -1,26 +1,13 @@ \documentclass[hyperref={pdfpagelabels=false}]{beamer} -%\documentclass{beamer} + +\setbeameroption{show notes} \mode { %\useinnertheme{echt} %\useinnertheme{proef} - \usetheme{Recore} + \usetheme{recore} \setbeamercovered{transparent} - \setbeamertemplate{footline} - {% - \leavevmode% - \hbox{\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm plus1fill,rightskip=.3cm]{author in head/foot}% - \usebeamerfont{author in head/foot}\insertshortauthor - \end{beamercolorbox}% - \begin{beamercolorbox}[wd=.4\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% - \usebeamerfont{title in head/foot}\insertshorttitle - \end{beamercolorbox}% - \begin{beamercolorbox}[wd=.1\paperwidth,ht=2.5ex,dp=1.125ex,leftskip=.3cm,rightskip=.3cm plus1fil]{title in head/foot}% - \usebeamerfont{title in head/foot} \insertframenumber-\inserttotalframenumber%\insertpagenumber-\insertpresentationendpage%Slide:\insertframenumber, Page: - \end{beamercolorbox}}% - \vskip0pt% -} %\setbeamertemplate{footline}[frame number] } @@ -33,42 +20,33 @@ \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] \title -{Scalability issues of a Network-on-Chip} +{MontiumC Transforming} -\author {David Bonfrer} +\author {Matthijs Kooijman} \institute[Recore Systems and University of Twente] { - \inst{1}% + \inst{}% Recore Systems \and - \inst{2}% + \inst{}% Faculty of Electrical Engineering, Mathematics and Computer Science\\ University of Twente } -\setbeamertemplate{navigation symbols}{} - - \pgfdeclareimage[height=0.5cm]{recore_logo}{images/recore_logo} - \logo{\pgfuseimage{recore_logo}} - - - -\AtBeginSubsection[] -{ - \begin{frame}{Outline} - \tableofcontents[currentsection,currentsubsection,hideothersubsections] - \end{frame} -} - - - \begin{document} \begin{frame} @@ -80,620 +58,238 @@ \end{frame} \section{Introduction} - \subsection{Low power usage} -% \begin{frame}{PDA} -% \begin{center} -% \includegraphics[scale=.44]{images/pda3} -% \end{center} -% \end{frame} -% \begin{frame}{SoC} -% %Picture of SoC -% \end{frame} -% \begin{frame}{Annabelle \ac{SoC}} -% \begin{center} -% \includegraphics[scale=0.52]{images/reconfigurable_fabric} -% \end{center} -% \end{frame} -% \begin{frame}{CRISP \ac{SoC}} -% \begin{center} -% \includegraphics[scale=.76]{images/CRISP}%TODO fix blue too black -% \end{center} -% \end{frame} -\section{Problem description} - %Problem description -\section{Architecture} - \begin{frame} - \begin{center} - \tikzstyle{help lines}=[black!10,thin] - \begin{tikzpicture}[>=stealth,scale=.7] - \foreach \x in {1,6,11} - \foreach \y in {5,0}{ - \draw (\x,\y) +(-1,-1) rectangle ++(1,1)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) node{Router}; - \draw (\x,\y) +(.4,1.2) rectangle ++(1.4,1.8)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) +(.9,1.5)node{Tile}; - \foreach \z in {0,.1,.2,.3} \draw (\x,\y) ++(\z,0) ++(0.5,1) -- ++(0,0.2); - } - \foreach \x in {1,6}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(4,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,4); - \foreach \x in {11}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {5}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,1.5); - \foreach \x in {1}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(-1,\z) -- ++(-1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,-1) -- ++(\z,-1.5); - \draw (4,5) circle (0.4) +(0,-0.4) -- (3,3.5) +(0,-0.2) node{Link}; - \draw (2,0) circle (0.4) +(0,0.4) -- (4,1.5) +(0,0.2) node{Port}; - \draw (9,4.9) circle (0.1) +(0,-0.1) -- (8,3.5) +(0,-0.2) node{Lane}; - \end{tikzpicture} - \end{center} - \end{frame} - \begin{frame}{Circuit switched} - \begin{center} - \tikzstyle{help lines}=[black!10,thin] - \begin{tikzpicture}[>=stealth,scale=.6] - \foreach \x in {1,6,11} - \foreach \y in {5,0}{ - \draw (\x,\y) +(-1,-1) rectangle ++(1,1)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) node{Router}; - \draw (\x,\y) +(.4,1.2) rectangle ++(1.4,1.8)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) +(.9,1.5)node{Tile}; - \foreach \z in {0,.1,.2,.3} \draw (\x,\y) ++(\z,0) ++(0.5,1) -- ++(0,0.2); - } - \foreach \x in {1,6}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(4,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,4); - \foreach \x in {11}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {5}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,1.5); - \foreach \x in {1}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(-1,\z) -- ++(-1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,-1) -- ++(\z,-1.5); - \draw [very thick,->] (-1,0.2) -- (11.2,0.2) -- (11.2,4.9) -- (13,4.9); - \end{tikzpicture} - \end{center} - \end{frame} - \begin{frame}{Packet switched} - \begin{center} - \tikzstyle{help lines}=[black!10,thin] - \begin{tikzpicture}[>=stealth,scale=.6] - \foreach \x in {1,6,11} - \foreach \y in {5,0}{ - \draw (\x,\y) +(-1,-1) rectangle ++(1,1)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) node{Router}; - \draw (\x,\y) +(.4,1.2) rectangle ++(1.4,1.8)[draw=black!50,fill=black!20,thick]; - \draw (\x,\y) +(.9,1.5)node{Tile}; - \foreach \z in {0,.1,.2,.3} \draw (\x,\y) ++(\z,0) ++(0.5,1) -- ++(0,0.2); - } - \foreach \x in {1,6}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(4,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,4); - \foreach \x in {11}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(1,\z) -- ++(1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {5}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,1) -- ++(\z,1.5); - \foreach \x in {1}\foreach \y in {5,0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(-1,\z) -- ++(-1.5,\z); - \foreach \x in {1,6,11}\foreach \y in {0}\foreach \z in {-0.1,0,0.1,0.2}\draw (\x,\y) +(\z,-1) -- ++(\z,-1.5); - \draw [very thick,->] (-1,0.2) -- (.8,0.2); - \draw [very thick,->] (1.2,0.2) -- (5.8,0.2); - \draw [very thick,->] (6.2,0.2) -- (10.8,0.2); - \draw [very thick,->] (11.2,0.5)-- (11.2,4.5); - \draw [very thick,->] (11.5,4.9)-- (13,4.9); - \end{tikzpicture} - \end{center} - \end{frame} - \begin{frame}{Router components} - \begin{center} - \tikzstyle{help lines}=[black!10,thin] - \begin{tikzpicture}[>=stealth,scale=.84] - \draw (-2.8,-1) rectangle ++(7.5,5); - \draw (1,3.75) node{Generic router}; - \draw (.1,.1) rectangle ++(1.8,3); - \draw (1,2.75) node{Crossbar}; - \foreach \x in {.1,2.6,2.0,1.4}{ - \draw (2.1,\x) rectangle ++(2.5,.5); - \draw (2.1,\x) +(1.25,.25) node{Output buffer}; - } - \foreach \x in {.8,1,1.2}{ - \draw (2.1,\x) +(1.25,0) circle (0.05); - } - \foreach \x in {.1,2.6,2.0,1.4}{ - \draw (-.1,\x) rectangle ++(-2.5,.5); - \draw (-.1,\x) +(-1.25,.25) node{Input buffer}; - } - \foreach \x in {.8,1,1.2}{ - \draw (-.1,\x) +(-1.25,0) circle (0.05); - } - \draw (.9,.1) -- (.9,-.1); - \draw (1.1,.1) -- (1.1,-.1); - \draw (0,-.1) rectangle (2,-.9); - \draw (1,-.5) node {Arbiter}; - \foreach \x in {0.2,0.3,...,2.2}{ - \draw (0.2,\x) -- (.1,\x); - \draw (1.9,\x) -- (1.8,\x); - } - \draw (.1,2.1) -- (.5,2.1); - \draw (.1,0.2) -- (.5,0.2); - - \draw (1.5,2.1) -- (1.9,2.1); - \draw (1.5,0.2) -- (1.9,0.2); - - \draw (-4.2,1.5) node {N inputs}; - \draw (6.5,1.5) node {N outputs}; - - \draw (0.5,2.1) -- (1.5,0.2); - \draw (0.5,0.2) -- (1.5,2.1); - \draw (1.9,0.2) -- (2.1,.35); - \draw (1.9,2.1) -- (2.1,2.85); - \draw (1.9,2.0) -- (2.1,2.25); - \draw (1.9,1.9) -- (2.1,1.65); - - \draw (.1,0.2) -- (-.1,.35); - \draw (.1,2.1) -- (-.1,2.85); - \draw (.1,2.0) -- (-.1,2.25); - \draw (.1,1.9) -- (-.1,1.65); - - - \draw [->] (4.5,0.35) -- (4.9,.35); - \draw [->] (4.5,2.85) -- (4.9,2.85); - \draw [->] (4.5,2.25) -- (4.9,2.25); - \draw [->] (4.5,1.65) -- (4.9,1.65); - - \draw [<-] (-2.5,0.35) -- (-3,.35); - \draw [<-] (-2.5,2.85) -- (-3,2.85); - \draw [<-] (-2.5,2.25) -- (-3,2.25); - \draw [<-] (-2.5,1.65) -- (-3,1.65); - \end{tikzpicture} - \end{center} - \end{frame} - \begin{frame}{Flow control} - \begin{center} - \tikzstyle{help lines}=[black!10,thin] - \begin{tikzpicture}[>=stealth,scale=.5] - \draw[->] (.5,1) -- (9.5,1)node[above,midway]{Data valid}; - \draw[<-] (.5,2) -- (9.5,2)node[above,midway]{Acknowledge}; - \draw[->][very thick] (.5,3.5) -- (9.5,3.5) node[above,midway]{Data}; - \end{tikzpicture} - \end{center} - \end{frame} -\section{Results} - \subsection{Flow control} - \begin{frame}{Flow control} - \begin{itemize} - \item Different types of flow control: - \begin{itemize} - \item Direct flow control - \item Single register flow control - \item Double register flow control - \item Windowed transmission - \end{itemize} - \end{itemize} - \end{frame} - \subsection{Configuration network} -% \begin{frame}{Configuration network} -% \begin{center} -% \includegraphics[trim = 10mm 200mm 100mm 20mm, clip, scale=.8]{images/d+c_router} -% \end{center} -% \end{frame} - \begin{frame}{Configuration network} - \begin{columns} - \column{.8\textwidth} - \begin{itemize} - \item The configuration network \ac{CSDCnet}: - \begin{itemize} - \item Pros: - \begin{itemize} - \item Easy configuration - \item Optimal config route - \item Small area needed on chip ($0.002 mm^2$) - \item High clock speed possible (1GHz) - \end{itemize} - \item Cons: - \begin{itemize} - \item Only configuration data. - \item Central control needed. - \item Long configuration times. - \end{itemize} - \end{itemize} - \end{itemize} - \column{.2\textwidth} - \begin{center} - \tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick] - \tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick] - \begin{tikzpicture}[>=stealth,scale=.5,transform shape] - \node[place] (1) {}; - \node[place] (2) [right of=1] {}; - \node[place] (3) [right of=2] {}; - \node[place] (4) [below of=1] {}; - \node[place] (5) [right of=4] {}; - \node[place] (6) [right of=5] {}; - \node[place] (7) [below of=4] {}; - \node[place] (8) [right of=7] {}; - \node[place] (9) [right of=8] {}; - - \draw (1.east) -- (2.west); - \draw (2.east) -- (3.west); - \draw (4.east) -- (5.west); - \draw (5.east) -- (6.west); - \draw (7.east) -- (8.west); - \draw (8.east) -- (9.west); - \draw (1.south)-- (4.north); - \draw (2.south)-- (5.north); - \draw (3.south)-- (6.north); - \draw (4.south)-- (7.north); - \draw (5.south)-- (8.north); - \draw (6.south)-- (9.north); - \end{tikzpicture} - \end{center} - \end{columns} - \end{frame} - \begin{frame}{Configuring a NoC with CSDCnet} - \begin{itemize} - \item Configuration using relative addressing - \item Configuration using commands - \item Two states for CSDCrouters: - \begin{itemize} - \item \emph{passthrough mode} - \item \emph{execute command mode} - \end{itemize} - \end{itemize} - \end{frame} - \begin{frame}[shrink=33]{Commands of CSDCnet} - \vspace{2cm} - \begin{table} - \centering - \begin{tabular}{lll} \toprule - Command name & Command description & Parameters (Length in bits)\\ - \midrule - CONFIG & Configure current data router & configuration data (11)\\ - DESTROY & Destroy complete configuration path & -\\ - EXTEND & Extend configuration path & direction to extend to (3)\\ - REMOVE & Remove the last router from path & -\\ - RESET\_ALL & Reset complete \acs{NoC} and all tiles & -\\ - RESET\_TILE & Reset current tile & -\\ - \bottomrule - \end{tabular} - \caption{Commands} - \label{tab:commandsLimited} - \end{table} - \end{frame} - - - \begin{frame}{Ring network} - \begin{columns} - \column{.8\textwidth} - \begin{itemize} - \item The ring network, from the University of Twente, can be used for configuration too: - \begin{itemize} - \item Pros: - \begin{itemize} - \item No setting up paths. - \item Not only configuration data. - \item Needs small area on chip ($0.003 mm^2$). - \item High clock speed possible (1GHz). - \item No central control of the network. - \end{itemize} - \item Cons: - \begin{itemize} - \item Routes not optimal. - \end{itemize} - \end{itemize} - \end{itemize} - \column{.2\textwidth} - \begin{center} - \tikzstyle{place}=[circle,draw=blue!50,fill=blue!20,thick] - \tikzstyle{transition}=[rectangle,draw=black!50,fill=black!20,thick] - \begin{tikzpicture}[>=stealth,scale=.4,transform shape] - \node[place] (1) at (-1,-2) {}; - \node[place] (2) at ( 1,-2) {}; - \node[place] (3) at ( 2,-1) {}; - \node[place] (4) at ( 2, 1) {}; - \node[place] (5) at ( 1, 2) {}; - \node[place] (6) at (-1, 2) {}; - \node[place] (7) at (-2, 1) {}; - \node[place] (8) at (-2,-1) {}; - \foreach \from/\to in {1/2,2/3,3/4,4/5,5/6,6/7,7/8,8/1} - \draw (\from) -- (\to); - \end{tikzpicture} - \end{center} - \end{columns} - \end{frame} - \begin{frame} - \only<1>{\begin{center} - \begin{tikzpicture}[>=stealth,scale=0.5,transform shape] - \foreach \x in {0,1,...,7} - \foreach \y in {0,1,...,7} - \draw (\y,\x) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) node {CU}; - \draw (0,7) node {A}; - \draw (7,0) node {B}; - %\draw[->,color=red,dashed,very thick] (0,0) -- (0,7); - \draw[color=black!0] (0,-.5) -- (1,-.5); - \foreach \x in {0,...,6} - \foreach \y in {0,...,7} - \draw (\y,\x)+(0,0.3) -- +(0,0.7); - \foreach \x in {0,...,7} - \foreach \y in {0,...,6} - \draw (\y,\x)+(0.3,0) -- +(0.7,0); - - %\draw[very thick,->] (0,7) -- (7,7) -- (7,0); - - \end{tikzpicture} - \begin{tikzpicture}[>=stealth,scale=0.5,transform shape] - \foreach \x in {0,1,...,7} - \foreach \y in {0,1,...,7} - \draw (\y,\x) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) node {CU}; - \draw (0,7) node {A}; - \draw (7,0) node {B}; - %\draw[very thick,->] (0,7) -- (0,0) -- (7,0); - %ring-net lines - \foreach \x in {0,...,5} - \foreach \y in {0,...,7} - \draw (\y,\x)+(0,0.3) -- +(0,0.7); - \draw (0,6)+(0,0.3) -- +(0,0.7); - \draw (7,6)+(0,0.3) -- +(0,0.7); - \foreach \x in {0,2,4,6} \draw (\x,0)+(0.3,0) -- +(0.7,0); - \foreach \x in {1,3,5} \draw (\x,6)+(0.3,0) -- +(0.7,0); - \foreach \x in {0,...,6} \draw (\x,7)+(0.3,0) -- +(0.7,0); - - \draw[color=black!0] (0,-.5) -- (1,-.5); - \end{tikzpicture} - \end{center}} - \only<2>{\begin{center} - \begin{tikzpicture}[>=stealth,scale=0.5,transform shape] - \foreach \x in {0,1,...,7} - \foreach \y in {0,1,...,7} - \draw (\y,\x) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) node {CU}; - \draw (0,7) node {A}; - \draw (7,0) node {B}; - \draw[->,color=red,dashed,very thick] (0,0) -- (0,7); - \draw[color=black!0] (0,-.5) -- (1,-.5); - \foreach \x in {0,...,6} - \foreach \y in {0,...,7} - \draw (\y,\x)+(0,0.3) -- +(0,0.7); - \foreach \x in {0,...,7} - \foreach \y in {0,...,6} - \draw (\y,\x)+(0.3,0) -- +(0.7,0); - - \draw[very thick,->] (0,7) -- (7,7) -- (7,0); - - \end{tikzpicture} - \begin{tikzpicture}[>=stealth,scale=0.5,transform shape] - \foreach \x in {0,1,...,7} - \foreach \y in {0,1,...,7} - \draw (\y,\x) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) circle (0.3)[draw=blue!50,fill=blue!20,thick]; - \draw (0,-1) node {CU}; - \draw (0,7) node {A}; - \draw (7,0) node {B}; - \draw[very thick,->] (0,7) -- (0,0) -- (7,0); - %ring-net lines - \foreach \x in {0,...,5} - \foreach \y in {0,...,7} - \draw (\y,\x)+(0,0.3) -- +(0,0.7); - \draw (0,6)+(0,0.3) -- +(0,0.7); - \draw (7,6)+(0,0.3) -- +(0,0.7); - \foreach \x in {0,2,4,6} \draw (\x,0)+(0.3,0) -- +(0.7,0); - \foreach \x in {1,3,5} \draw (\x,6)+(0.3,0) -- +(0.7,0); - \foreach \x in {0,...,6} \draw (\x,7)+(0.3,0) -- +(0.7,0); - - \draw[color=black!0] (0,-.5) -- (1,-.5); - \end{tikzpicture} - \end{center}} - \end{frame} - \begin{frame} - \begin{center} - %\includegraphics[scale=.7]{results/conftimes2} - \end{center} - \end{frame} - \small - \begin{frame}{Synthesis results at 500MHz} - \begin{table} [ht] - \centering - \begin{tabular}{lll} - \toprule - Component & Slack (ns) & Area ($mm^2$)\\ - \midrule - Packet switched (Kavaldjiev) & 0.00 & 0.2133\\ - Small packet switched (Kavaldjiev) & 0.00 & 0.0769\\ - Circuit switched (Annabelle) & 0.42 & 0.0254\\ - Circuit switched SingleReg (thesis) & 0.35 & 0.0393\\ - Circuit switched DoubleReg (thesis) & 0.03 & 0.0681\\ - \midrule - Ring configuration & 0.96 & 0.0030\\ - \acs{CSDCrouter} & 0.85 & 0.0021\\ - %\acs{CSDCrouter} with TTL & 0.26 & 0.0090\\ - - - \bottomrule - \end{tabular} - \caption{Results of 90nm ASIC technology from TSMC at 500MHz} - \end{table} - \end{frame} - \begin{frame}{Synthesis results at 1000MHz} - \begin{table} [ht] - \centering - \begin{tabular}{lll} - \toprule - Component & Slack (ns) & Area ($mm^2$)\\ - \midrule - Packet switched (Kavaldjiev) & -0.66 & 0.2174 \\ - Small packet switched (Kavaldjiev) & -0.67 & 0.0812\\ - Circuit switched (Annabelle) & 0.00 & 0.0265\\ - Circuit switched SingleReg (thesis) & 0.00 & 0.0423\\ - Circuit switched DoubleReg (thesis) & 0.00 & 0.0837\\ - \midrule - Ring configuration & 0.02 & 0.0030\\ - \acs{CSDCrouter} & 0.01 & 0.0022\\ - %\acs{CSDCrouter} with TTL & -0.17 & 0.0098\\ - \bottomrule - \end{tabular} - \caption{Results of 90nm ASIC technology from TSMC at 1000MHz} - \label{tabASIC1000} - \end{table} - \end{frame} - \normalsize - -\section{Conclusion} - \begin{frame}{Flow control} - \begin{itemize} - \item DirectAck is not scalable, but good for very small \acp{NoC}.\onslide<2-> - \item Single register is slower, but usable for any size of \ac{NoC}.\onslide<3-> - \item Double register requires twice as much area, but is fast and usable for any size of \ac{NoC}.\onslide<4-> - \item Windowed transmission requires very much buffer area in the tiles, and is therefore not recommended.\onslide<5-> - \end{itemize} - Scalable flow control always requires two buffers or two clock cycles. - \end{frame} - \begin{frame}{Choosing a NoC} - \begin{itemize} - \item Best Effort (BE) traffic: - \begin{itemize} - \item Much BE traffic: use Packet Switched.\onslide<2-> - \item Some control BE traffic: use SAnet with ring network.\onslide<3-> - \item No BE traffic: use SAnet with CSDCnet.\onslide<4-> - \item Some BE traffic can also be routed efficiently using circuits in the circuit switched network, bursts for example.\onslide<5-> - \item CSDCnet does not support connections initiated from the tiles.\onslide<6-> - \end{itemize} - \item Guaranteed Service (GS) traffic: - \begin{itemize} - \item High bandwidth streams: use circuit switched; - \begin{itemize} - \item Circuit switched has 4 outputs per port. - \item Circuit switched can be clocked at 1GHz.\onslide<7-> - \end{itemize} - \item Low bandwidth streams: use packet switched; - \begin{itemize} - \item Streams can be multiplexed. - \end{itemize} - - \end{itemize} - \end{itemize} - \end{frame} - %tiny - \begin{frame}[shrink=33]{CSDCnet vs Ring} - \vspace{2cm} - \begin{table} - \centering - \begin{tabular}{ll}\toprule - \acs{CSDCnet} & Ring network\\ - \midrule - Circuit switched & Packet switched\\%\onslide<2-> \\ - Full \acs{NoC} configuration in 1.3ms (for N=8) & Full \acs{NoC} configuration in 0.8ms (for N=8)\\%\onslide<3-> \\ - No BE traffic support & Tiles can send BE data over the ring\\%\onslide<4-> \\ - Topology the same as data \acs{NoC} & Topology differs from data \acs{NoC}\\%\onslide<5-> \\ - Worst case config time increases linearly & Worst case config time increases quadratically\\%\onslide<6-> \\ - Central coordination for avoiding deadlocks & No deadlocks possible\\%\onslide<7-> \\ - Area on chip is $2166 \mu m^2$ (one router) & Area on chip is $3026 \mu m^2$ (one router)\\%\onslide<1->\\ - \bottomrule - \end{tabular} - \caption{Configuration networks: Serial VS Ring} - \label{tab:SerialVSRing} - \end{table} - \end{frame} - %\normalsize - \begin{frame}{Future research} - \begin{itemize} - \item Recommendations for future research: - \begin{itemize} - \item Configuration using data lanes - \item Optimisations for \ac{CSDCnet} - \item Optimisations for ring network - \item Packet switched mesh configuration network - \end{itemize} - \end{itemize} - \end{frame} -% \begin{frame} -% \begin{center} -% \includegraphics[scale=.16]{images/qmark2} -% \end{center} -% \end{frame} -\appendix - -%\begin{frame}{Synthesis settings} -% To compare size and maximum clock frequency of various \acp{NoC}, we synthesised them using the 90nm TSMC library with the following settings: -% \begin{itemize} -% \item Operating Condition Name: WCCOM. -% \item Library: tcbn90gthpwc. -% \item Process: 1.00. -% \item Temperature: 125.00. -% \item Voltage: 1.08. -% \item Interconnect Model: balanced\_tree. -% \end{itemize} -%\end{frame} -%\tiny -%\begin{frame}{Commands} -% \begin{table} [ht] -% \centering -% \begin{tabular}{lll} \toprule -% Command name & Command description & Parameters (Length in bits)\\ -% \midrule -% CONFIG & Configure current data router & configuration data (11)\\ -% CONFIG\_TTL & Configure current data router & configuration data and TTL (13)\\ -% DESTROY & Destroy complete configuration path & -\\ -% EXTEND & Extend configuration path & direction to extend to (3)\\ -% REMOVE & Remove the last router from path & -\\ -% RESET\_ALL & Reset complete \acs{NoC} and all tiles & -\\ -% RESET\_TILE & Reset current tile & -\\ -% SET\_TTL & Set TTL value & TTL, destination and timeout (14)\\ -% STATUS & Returns the TTL status & no data while status is returned (20)\\ -% \bottomrule -% \end{tabular} -% \caption{Commands} -% \label{tab:commands} -% \end{table} -%\end{frame} -%\normalsize - -%\begin{frame}{SRAM size vs register size} -% \begin{figure} -% \centering -% \includegraphics[scale=.5]{images/sram_register_16_90} -% \caption{Estimation of size of SRAM vs registers in 90nm UMC technology} -% \label{pic:SRAMvsREGS} -% \end{figure} -%\end{frame} - -%\begin{frame}{Examples of \acp{NoC}} -% \tiny -% \begin{table} [ht] -% \centering -% \begin{tabular}{lllll} \toprule -% NoC & CS or PS & BE/GS & Flow control & Configuration \\ -% \midrule -% \AE thereal & PS & BE and GS & BE:Handshake, GS:Windowed & Header\\ -% Kavaldjiev & PS & BE and GS & Handshake & Header\\ -% SoCIN & PS & BE & Handshake & XY header\\ -% SoCBUS & CS & GS & Handshake & Header\\ -% PACT XPP & CS & GS & Handshake & Config network\\ -% Annabelle's NoC & CS & GS & Handshake & Config network\\ -% \bottomrule -% \end{tabular} -% \caption{Different NoCs} -% \label{tab:NoCs} -% \end{table} -%\end{frame} - -%\begin{frame}{Glossary} - \begin{acronym}[CRISP] - \acro{ASIC}{application-specific integrated circuit} - \acro{CRISP}{Cutting edge Reconfigurable ICs for Stream Processing} - \acro{CSDCnet}{Circuit switched Serial Dedicated Configuration network} - \acro{CSDCrouter}{Circuit switched Serial Dedicated Configuration router} - \acro{CU}{Configuration Unit} - \acro{FPGA}{field programmable gate array} - \acro{GPP}{general purpose processor} - \acro{KISS}{keeping it simple and stupid} - \acro{NoC}{Network-on-Chip} - \acro{SAnet}{Scalable Annabelle network} - \acro{SoC}{System-on-Chip} - \end{acronym} -%\end{frame} -\end{document} + \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} + + \subsection{Original tasks} + \begin{frame}{Original tasks} + \begin{itemize} + \item Select LLVM transformations + \item Improve and add transformations + \item Provide debugging information + \end{itemize} + \end{frame} + + \subsection{Extra tasks} + \begin{frame}{Extra 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: + \begin{itemize} + \item Clang is nontransparent + \note[item]{Clang --- A lot of special cases} + \item C is complex + \note[item]{Complex C --- A lot of corner cases} + \item C is limited + \note[item]{Limited C --- Need to use annotations, limited amount of types} + \item Assembly vs. High level + \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity + vs control, clarity vs determinism} + \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 Backend is a fast moving target + \item Corner cases + \note[item]{Corner case --- global constants} + \item Hardware dependencies + \note[item]{Hardware --- Limited number of conditionals possible} + \end{itemize} + \end{itemize} + \end{frame} -%\tiny tiny font -%\scriptsize very small font -%\footnotesize quite small font -%\small small font -%\normalsize normal font -%\large large font -%\Large larger font -%\LARGE very large font -%\huge huge -%\Huge largest + \begin{frame}{Selecting LLVM transformations} + \begin{itemize} + \item Status: Done + \item Challenges: + \begin{itemize} + \item LLVM Passes assume a lot + \note[item]{Assumptions --- Immediates are not free} + \item Montium has specific constraints + \note[item]{Constraint --- Implicit cycle boundaries and ordering} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Improving / adding transformations} + \begin{itemize} + \item Status: Ongoing + \item Challenges: + \begin{itemize} + \item Staying generic + \note[item]{Generic --- LLVM maintained passes are a lot easier} + \item New LLVM features + \note[item]{Features --- Multiple return values, inlining and + annotation attributes} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Debugging information} + \begin{itemize} + \item Status: Not started + \item Challenges: + \begin{itemize} + \item Not much LLVM support yet + \note[item]{LLVM support --- New in clang/backend, no support in + transformations yet.} + \item Transformations + \note[item]{Transformations --- Global arguments, argument addition, + removal, etc.} + \end{itemize} + \end{itemize} + \end{frame} + + \begin{frame}{Reconfigurable binaries} + \begin{itemize} + \item Status: Recently started + \item Challenges: + \begin{itemize} + \item Tracking variables + \note[item]{Tracking --- Through all steps of the process} + \item Loss of optimizations + \note[item]{Optimizations --- Hard to encode constraints} + \item Mostly a backend problem + \end{itemize} + \end{itemize} + \end{frame} + +\section{Work process} + \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 + \note[item]{Brainstorming --- Evaluating different ideas and approaches.} + \end{itemize} + \end{frame} + + \begin{frame}{Working with LLVM} + \begin{itemize} + \item Large community + \note[item]{Community --- Companies involved, a lot of full time + developers.} + \item Great support + \note[item]{Support --- mailing list, bug reports solved within 1/2 days.} + \item Slightly conflicting goals + \note[item]{Goals --- LLVM aims mainly at "regular" architectures.} + \end{itemize} + \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}