Add sections and subsections to PDF
[matthijs/master-project/final-presentation.git] / introduction.lhs
1 %include talk.fmt
2 \section{Introduction}
3 \subsection{Hardware as we know it}
4 \frame
5 {
6 \frametitle{Hardware}
7 \begin{figure}
8 \centerline{
9 \includegraphics<1>[height=8cm]{figures/cpus/pmiphone_boardtopbig}
10 \includegraphics<2>[height=8cm]{figures/cpus/Intel_core_i7}
11 \includegraphics<3>[height=8cm]{figures/cpus/6600GT_GPU}
12 \includegraphics<4>[height=8cm]{figures/cpus/Altera_StratixIV}
13 }
14 \label{img:chips}
15 \end{figure}
16 }
17 \note[itemize]
18 {
19 \item Iedereen weet wel wat hardware is. Hier een paar voorbeelden.
20 \item Binnenkant iPhone met veelvoud aan chips, Laatste Intel CPU, Nvidia Videochip, Altere FPGA
21 }
22
23 \frame
24 {
25 \frametitle{Transistor}
26 \begin{figure}
27 \centerline{
28 \includegraphics<1>[height=8cm]{figures/transistor/hr-1sttransistor}
29 \includegraphics<2>[height=8cm]{figures/transistor/worldsfastes}
30 \includegraphics<3>[height=8cm]{figures/transistor/nehalem_432x315}
31 }
32 \label{img:chips}
33 \end{figure}
34 }
35 \note[itemize]
36 {
37 \item Hardware is opgebouwd uit transistoren, simpele schakelaar
38 \item Eerste transistor 60 jaar geleden, ter grootte van je hand
39 \item Het word allemaal steeds kleiner
40 \item Nu: Chip net iets groter dan je duim: 731 miljoen transistoren
41 }
42
43 \frame
44 {
45 \frametitle{Transistor Counts}
46 \begin{itemize}
47 \item Cell (Playstation 3): 241 Million
48 \item Intel Core i7: 731 Million
49 \item ATI HD5800: 2150 Million
50 \item Nvidia GF100 (Expected Summer 2010): 2900 Million
51 \end{itemize}
52 }
53 \note[itemize]
54 {
55 \item Aantal gebruikte transistoren wordt steeds groter
56 }
57
58 \frame
59 {
60 \frametitle{Designing Hardware}
61 \centerline{Design with 4 transistors}
62 \begin{columns}[c]
63 \column{0.6\textwidth}
64 \vspace{-0.5cm}
65 \begin{figure}
66 \centerline{\includegraphics[height=6cm, trim = 0 0 0 2.5cm, clip]{figures/schakelingen/NAND}}
67 \end{figure}
68 \column{0.4\textwidth}
69 \begin{figure}
70 \centerline{\includegraphics[height=6cm, trim = 0 4.5cm 0 0, clip]{figures/schakelingen/CMOS_NAND_Layout}}
71 \end{figure}
72 \end{columns}
73 }
74 \note[itemize]
75 {
76 \item NAND: Gaat na dat beide ingangen niet 1 zijn
77 \item Een simpel hardware ontwerp met 4 transistoren
78 \item Links een schematisch ontwerp, Rechts de layout van de metaal lagen
79 }
80
81 \frame
82 {
83 \frametitle{Designing Hardware}
84 \vspace{0.5cm}
85 \centerline{\Large This won't work for 730 million transistors!}
86 \begin{figure}
87 \centerline{\includegraphics[height=7cm]{figures/transistor/nehalem-core}}
88 \end{figure}
89 }
90
91 \frame
92 {
93 \frametitle{Designing Hardware}
94 \begin{itemize}
95 \item We design hardware in the same format as software
96 \item We make designs in plain text!
97 \item Software: Programming Languages
98 \item Hardware: Hardware Description Languages
99 \end{itemize}
100 }
101 \note[itemize]
102 {
103 \item Harware designs worden gewoon in tekst opgeschreven.
104 \item Maar wel in een special taal voor hardware
105 \item Waar je voor software programmeer talen hebt,
106 \item Heb je voor hardware zogeheette hardwarebeschrijvingstalen
107 }
108
109 \frame
110 {
111 \frametitle{Designing Hardware}
112 \begin{itemize}
113 \item Algorithmic / Behavioral Descriptions:
114 \begin{itemize}
115 \item Describe \emph{what} the Hardware does
116 \item Relation between input and output
117 \end{itemize}
118 \item Structural Descriptions:
119 \begin{itemize}
120 \item Describe \emph{how} the Hardware does it
121 \item Hierarchal composition
122 \end{itemize}
123 \end{itemize}
124 }
125 \note[itemize]
126 {
127 \item Algoritmische beschrijvingen beschrijven wat de Hardware moet doen, niet hoe die dat doet
128 \item Structurele beschrijvingen beschrijven hoe de Hardware dingen doet
129 \item In Structurele beschrijvingen worden componenten opgebouwd uit simpele schakelingen en/of andere componenten
130 \item Graag willen wij algorithmische beschrijvingen maken, en de structurele beschrijving hier automatisch van afleiden
131 }
132
133 \frame
134 {
135 \frametitle{Why do we make Hardware?}
136 \begin{itemize}
137 \item We make hardware to solve problems
138 \item The solutionss are often described as a set of mathematical equations\footnote{But what is the equation for a CPU?}
139 \item `Holy Grail' Hardware Descriptions:
140 \begin{itemize}
141 \item Input: Set of Mathematical Equations
142 \item Output: Hardware that is Provably correct, Fast , Small, Cheap to manufacture, and has a low Energy Usage
143 \end{itemize}
144 \end{itemize}
145 }
146 \note[itemize]
147 {
148 \item We maken hardware omdat we, soms vaag gedefineerde, problemen willen oplossen.
149 \item Oplossingen, vooral in de signaalverwerking (video, muziek, TV, etc.), zijn beschreven als een verzameling van wiskundige formules
150 \item Wat we dus graag zouden hebben, een zogenaamde heilige graal, is een programma aan welke we deze formules geven, en dat er dan automatisch super efficiente hardware uit komt.
151 \item Maar... wat is de formule van een CPU/Processor? Misschien moet is een oplossingen in `normaal nederlands' soms een betere input voor zo'n programma?
152 }
153
154 \frame
155 {
156 \frametitle{Functional Languages}
157 \begin{itemize}
158 \item Functional programming languages allow us to specify programs that are close to a set of mathematical equations.
159 \end{itemize}
160 }
161 \note[itemize]
162 {
163 \item Functionele talen liggen dicht bij de wiskunde
164 }
165
166 \frame
167 {
168 \frametitle{Functional Languages \& Hardware}
169 \begin{itemize}
170 \item When we want to calculate, 1 + 2 + 3, there is nothing that dictates that we should first calculate 1 + 2
171 \item Like mathematical equations, Functional languages do not dictate an order when there is none. So everything can be calculated in parallel.
172 \item In hardware, everything also happens in parallel: electrons flow through all the transistors every moment in time.
173 \item IDEA: Use functional languages to describe hardware!
174 \end{itemize}
175 }
176 \note[itemize]
177 {
178 \item In wiskundige formules is er vaak geen volgorde gedefineerd
179 \item Dit is dus hetzelfde in functionele talen, wat betekent dat alles tegelijk/parallel kan worden uitgerekent.
180 \item Bij `normale' programmeertalen is er vaak wel een volgorde
181 \item In hardware gebeurt ook alles tegelijkertijd
182 \item Het idee is dus om hardware te beschrijven in een functionele taal
183 }
184
185 % \frame
186 % {
187 % \frametitle{Mealy Machine}
188 % \begin{figure}
189 % \centerline{\includegraphics<1>[width=6.25cm]{mealymachine2}
190 % \includegraphics<2>[width=6.25cm]{mealymachine2-func-red}
191 % \includegraphics<3>[width=6.25cm]{mealymachine2-state-red}}
192 % \label{img:mealymachine}
193 % \end{figure}
194 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
195 % \begin{code}
196 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} [] = []
197 % run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-} (i:inputs) = o:outputs
198 %   where
199 %     ({-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-}, o)  =   {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} i {-"{\color<3>[rgb]{1,0,0}"-}state{-"}"-}
200 %     outputs                                         =   run {-"{\color<2>[rgb]{1,0,0}"-}func{-"}"-} {-"{\color<3>[rgb]{1,0,0}"-}state'{-"}"-} inputs
201 % \end{code}
202 % \end{beamercolorbox}
203 % }
204 % \note[itemize]{
205 % \item A Mealy machine bases its output on the current state and the input
206 % \item State is part of the function signature
207 % \item Both the current state, and the updated State
208 % \item The run function simulates a mealy machine for the provided number of inputs
209 % }
210
211 % \frame
212 % {
213 % \frametitle{Haskell Description}
214 % \begin{figure}
215 % \centerline{\includegraphics[width=6.25cm]{mealymachine2-func-red}}
216 % \end{figure}
217 % \begin{beamercolorbox}[sep=-2.5ex,rounded=true,shadow=true,vmode]{codebox}
218 % \begin{code}
219 % func :: 
220 %   InputSignal ->
221 %   State ->
222 %   (State, OutputSignal)
223 % \end{code}
224 % \end{beamercolorbox}
225 % }
226 % \note[itemize]{
227 % \item In \clash{} you describe the logic part of the mealy machine
228 % \item The state in the signature is turned into memory elements when translating to VHDL
229 % }