From: Matthijs Kooijman Date: Sun, 13 Dec 2009 20:25:36 +0000 (+0100) Subject: Merge git://github.com/christiaanb/thesispresentation X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fmaster-project%2Ffinal-presentation.git;a=commitdiff_plain;h=5bfc71c197897497ac6520548fe3e405dc5f9a9b;hp=-c Merge git://github.com/christiaanb/thesispresentation * git://github.com/christiaanb/thesispresentation: Add sections and subsections to PDF Make pictures larger Add rest of my presentation Add files for FIR Add part about FIR filter Conflicts: introduction.lhs --- 5bfc71c197897497ac6520548fe3e405dc5f9a9b diff --combined introduction.lhs index ea32adf,0155a5d..1a6ff71 --- a/introduction.lhs +++ b/introduction.lhs @@@ -6,10 -6,10 +6,10 @@@ \frametitle{Hardware} \begin{figure} \centerline{ - \includegraphics<1>[height=6cm]{figures/cpus/pmiphone_boardtopbig} - \includegraphics<2>[height=6cm]{figures/cpus/Intel_core_i7} - \includegraphics<3>[height=6cm]{figures/cpus/6600GT_GPU} - \includegraphics<4>[height=6cm]{figures/cpus/Altera_StratixIV} + \includegraphics<1>[height=8cm]{figures/cpus/pmiphone_boardtopbig} + \includegraphics<2>[height=8cm]{figures/cpus/Intel_core_i7} + \includegraphics<3>[height=8cm]{figures/cpus/6600GT_GPU} + \includegraphics<4>[height=8cm]{figures/cpus/Altera_StratixIV} } \label{img:chips} \end{figure} @@@ -20,19 -20,54 +20,19 @@@ \item Binnenkant iPhone met veelvoud aan chips, Laatste Intel CPU, Nvidia Videochip, Altere FPGA } -\frame -{ -\frametitle{Transistor} -\begin{figure} -\centerline{ -\includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor} -\includegraphics<2>[height=8cm]{figures/transistor/worldsfastes} -\includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315} -} -\label{img:chips} -\end{figure} -} -\note[itemize] -{ -\item Hardware is opgebouwd uit transistoren, simpele schakelaar -\item Eerste transistor 60 jaar geleden, ter grootte van je hand -\item Het word allemaal steeds kleiner -\item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren -} - -\frame -{ -\frametitle{Transistor Counts} -\begin{itemize} -\item Cell (Playstation 3): 241 Million -\item Intel Core i7: 731 Million -\item ATI HD5800: 2150 Million -\item Nvidia GF100 (Expected Summer 2010): 2900 Million -\end{itemize} -} -\note[itemize] -{ -\item Aantal gebruikte transistoren wordt steeds groter -} - \frame { \frametitle{Designing Hardware} \centerline{Design with 4 transistors} \begin{columns}[c] - \column{0.5\textwidth} + \column{0.6\textwidth} \vspace{-0.5cm} \begin{figure} - \centerline{\includegraphics[height=5cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}} + \centerline{\includegraphics[height=6cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}} \end{figure} - \column{0.5\textwidth} + \column{0.4\textwidth} \begin{figure} - \centerline{\includegraphics[height=5cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}} + \centerline{\includegraphics[height=6cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}} \end{figure} \end{columns} } @@@ -43,33 -78,13 +43,33 @@@ \item Links een schematisch ontwerp, Rechts de layout van de metaal lagen } +\frame +{ - \frametitle{Transistors} ++\frametitle{Transistor} +\begin{figure} +\centerline{ - \includegraphics<1>[height=6cm]{figures/transistor/hr-1sttransistor} - \includegraphics<2>[height=6cm]{figures/transistor/worldsfastes} - \includegraphics<3>[height=6cm]{figures/transistor/nehalem_432x315} ++\includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor} ++\includegraphics<2>[height=8cm]{figures/transistor/worldsfastes} ++\includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315} +} +\label{img:chips} +\end{figure} +} +\note[itemize] +{ +\item Hardware is opgebouwd uit transistoren, simpele schakelaar +\item Eerste transistor 60 jaar geleden, ter grootte van je hand +\item Het word allemaal steeds kleiner +\item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren +} + \frame { \frametitle{Designing Hardware} \vspace{0.5cm} \centerline{\Large This won't work for 730 million transistors!} \begin{figure} - \centerline{\includegraphics[height=4cm]{figures/transistor/nehalem-core}} + \centerline{\includegraphics[height=7cm]{figures/transistor/nehalem-core}} \end{figure} } diff --combined matthijs/introduction.lhs index e8b9330,50087a0..0d11fd8 --- a/matthijs/introduction.lhs +++ b/matthijs/introduction.lhs @@@ -1,4 -1,5 +1,5 @@@ %include talk.fmt + \section{Presentation Matthijs} \title{Haskell as a higher order structural hardware description language} \author{Matthijs Kooijman} \date{December 14, 2009} @@@ -8,37 -9,47 +9,37 @@@ \frame { - \begin{block}{Applying the $sqrt$ function to 4} + \frametitle{Functions} + + \begin{block}{Applying the $sqrt$ function to 4}<1> $ sqrt(4) = 2$ \end{block} -} - -\note[itemize] -{ - \item Functional language - Math like - \item Central: Functions - \item Outside: - \begin{itemize} - \item Put arguments in (application) - \item get result out - \end{itemize} - \item Inside: - \begin{itemize} - \item \emph{How} does the function work? (definition) - \end{itemize} - - \item Next sheet: sqrt example -} - -\frame -{ - \begin{block}{A mathematical square function} + \begin{block}{A mathematical square function}<2-> $ f(x) = x * x$ \end{block} - \pause - \begin{block}{A square function in Haskell} + \begin{block}{A square function in Haskell}<3-> \texttt{square x = x * x} \end{block} } \note[itemize] { + \item Functionele taal -$>$ Wiskunde-achtig + \item Functies staan centraal + \item Next sheet: sqrt example + \item Van buitenaf: + \begin{itemize} + \item Stop er argumenten in (toepassen) + \item Krijg een resultaat terug + \end{itemize} \item Next sheet: f(x) = x*x example + \item Van binnenaf: + \begin{itemize} + \item \emph{Hoe} werkt de functie (definitie) + \end{itemize} \item Next sheet: square in Haskell - \item No braces - \item Next sheet: pyth in Haskell - \item Functions can be used by other functions + \item Geen haakjes } \frame @@@ -57,7 -68,6 +58,7 @@@ \includegraphics[width=3cm]{figures/Pythagoras} \end{column} \end{columns} + \pause % TODO: Alignment is weird due to mixing columns and non-columns \begin{block}{Calculating $c$ in Haskell} @@@ -65,244 -75,4 +66,244 @@@ \end{block} } +\note[itemize] +{ + \item Functies kunnen door andere functies gebruikt worden + \item Next sheet: Pyth function + \item Complexere functie + \item Next sheet: Pyth in Haskell +} + +\frame +{ + \begin{block}{} + \texttt{pyth a b = sqrt ((square a) + (square b))} + \end{block} + + \begin{figure} + \includegraphics[width=9.5cm]{figures/archs/Pyth} + \end{figure} +} + +\note[itemize] +{ + \item Next sheet: Pyth hardware + \item Argumenten -$>$ input poorten + \item Toepassing -$>$ component + \item Resultaat -$>$ output poort + \item (Combinatorische) hardware is continu +} + +\frame +{ + \frametitle{Purity} + + \begin{block}{Pure functions} + sqrt, pyth + \end{block} + \begin{block}{Impure functions} + random, delete\_file + \end{block} +} + +\note[itemize] +{ + \item Next sheet: Purity + \item Wiskundige en functionele functies zijn (meestal) puur. + \item Zelfde argumenten -$>$ zelfde resultaten + \item Geen bijwerkingen. +} + +\frame +{ + TODO: Impure (stateful) example. +} + +\note[itemize] +{ + \item TODO +} + +\frame{ + \begin{center} + {\Huge \clash} + + \bigskip + CAES language for hardware descriptions + \end{center} +} + +\note[itemize] +{ + \item Next sheet: \clash + \item Hardware beschrijven in Haskell: \clash + \item Nog niet gezien: keuzes, pattern matching, polymorfisme, hogere orde + functies.... + \item Dit was de taal -$>$ compiler nodig +} + +\frame +{ + \begin{block}{Compiler pipeline} + $\xrightarrow{Haskell}{GHC frontend} + \xrightarrow{Core}{Normalization} + \xrightarrow{Core}{Backend} + \xrightarrow{VHDL}$ + \end{block} +} + +\note[itemize] +{ + \item Next sheet: \clash\ pipeline + \item GHC: bestaande compiler + \item Core: simpele functionale taal, niet minder expressief (vergelijk: + taal zonder synoniemen) + \item VHDL: Complexe HDL, gebruiken alleen netlist onderdelen. + \item Normalisatie: Nog simpeler maken. +} + +\frame +{ + \frametitle{Netlists} + + \bigskip + \bigskip + \begin{figure} + \includegraphics[width=9.5cm]{figures/archs/Square} + \end{figure} + + \begin{block}{Remember \texttt{square}} + square x = x * x + \end{block} + +} + +\note[itemize] +{ + \item Next sheet: Square netlist + \item Core hetzelfde als Haskell -$>$ gebruik Haskell syntax voor Core + \item Netlist is componenten (vierkantjes) en verbindingen (lijntjes) + \item Component heeft poorten, poorten moeten een naam hebben + \item Resultaat van square heeft geen naam -$>$ geen normaalvorm +} + +\frame +{ + \frametitle{Transformation} + \begin{columns} + \begin{column}{5cm} + func = E + + \smallskip + \hrule + + \smallskip + func = let res = E in res + \end{column} + \begin{column}{5cm} + E has no name + \end{column} + \end{columns} + + \pause + \bigskip + \begin{block}{Apply to square} + square x = x * x + + \smallskip + \hrule + + \smallskip + square x = let res = x * x in res + \end{block} +} + +\note[itemize] +{ + \item Next sheet: transformation example + \item Transformatie nodig om output poort een naam te geven + \item Next sheet: Apply to square + \item Toepassen op square, res heeft nu een naam. +} + +\frame +{ + \frametitle{Normalization system} + + \begin{figure} + \includegraphics[width=9.5cm]{figures/norm/Normalizing} + \end{figure} +} + +\note[itemize] +{ + \item Systeem van transformaties + \item Volgorde ongedefinieerd: Doe maar wat, tot het net meer kan. + \item Next sheet: Graafnotatie + \item Lijnen zijn transformaties + \item Keuzes (meerdere uitgaande lijnen) + \item Alles komt onderin uit +} + +\frame +{ + \frametitle{Normalization system} + + \begin{figure} + \includegraphics[width=8cm]{figures/norm/Incorrect} + \end{figure} +} + +\note[itemize] +{ + \item Meerdere normaalvormen + \item Cykel + \item Systeem werkt nu \emph{meestal} + \item verbeteringen en bewijzen nodig +} + +\frame +{ + \frametitle{Normalization system} + + \begin{itemize} + \item Easy to work with + \item Allows analysis + \item Still complex + \end{itemize} +} + +\note[itemize] +{ + \item Goede scheiding + \item Makkelijk implementeren + \item Wiskundige beschrijving -$>$ bewijzen + \item Huidige systeem is nog incompleet + \item De goede weg +} + +\frame +{ + \frametitle{But now?} + \begin{itemize} + \item \clash\ has a solid base + \item Lots of work left + \item Needs testing! + \end{itemize} +} + +\note[itemize] +{ + \item \clash\ is helemaal nieuw werk + \item Tekortkomingen: Haskell is niet ideaal, state beschrijvingen zijn + niet compact, transformaties zijn nog niet (bewezen compleet). + \item Meer testen nodig, +} + +\frame +{ + {\Huge Thanks!} + +} + % vim: set filetype=tex sw=2 sts=2 expandtab: