[Kapitel] Inhalt vom 23.10.17 ergänzt
This commit is contained in:
		
							parent
							
								
									aa3112eafa
								
							
						
					
					
						commit
						8e6684e5f9
					
				
					 5 changed files with 168 additions and 12 deletions
				
			
		
							
								
								
									
										
											BIN
										
									
								
								Bilder/Serielladdierer.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Bilder/Serielladdierer.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 21 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Bilder/Serielladdierer_2.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Bilder/Serielladdierer_2.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 33 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								Bilder/casc_cla_pa.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Bilder/casc_cla_pa.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 67 KiB  | 
| 
						 | 
				
			
			@ -474,16 +474,168 @@ Bestimmung des \enquote{Aufwands}. Aufwand kann sein:
 | 
			
		|||
\end{itemize}
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Warum Zeitaufwand?}} \newline
 | 
			
		||||
Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, typischerweise \circa{10 Pikosekunden}. Insgesamt werden bei einem Signaldurchgang auf dem \acs{IC} sehr viele Gatter durchlaufen. Damit sind die Schaltzeiten um Größenordnungen größer als die reine Laufzeit der Signale auf dem Leiter angegeben (letztere wird vernachlässigt, Zeitverzögerung wird in \enquote{Anzahl Gatterlaufzeiten}/\acs{GLZ}).
 | 
			
		||||
Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, typischerweise \circa{10 Pikosekunden}. Insgesamt werden bei einem Signaldurchgang auf dem \acs{IC} sehr viele Gatter durchlaufen. Damit sind die Schaltzeiten um Größenordnungen größer als die reine Laufzeit der Signale auf dem Leiter angegeben (letztere wird vernachlässigt, Zeitverzögerung wird in \enquote{Anzahl \acfp{GLZ}}).
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Hardwareaufwand des 4~Bit RC-PA}} \newline
 | 
			
		||||
für \acs{HA}: 2 Transistoren für $c_{out}$ und 6 Transistoren für s $\Rightarrow$  8 Transistoren \newline
 | 
			
		||||
für \acs{VA}: 2 HA und 2 Transistoren für $c_{out}$ $\Rightarrow$  $2\cdot8+2=18$ Transistoren
 | 
			
		||||
\textsf{\textbf{Hardwareaufwand des 4~Bit RC-PA}}
 | 
			
		||||
 | 
			
		||||
\noindent\begin{tabular}{@{}ll}
 | 
			
		||||
	für \acs{HA}: 2 Transistoren für $c_{out}$ und 6 Transistoren für s & $\Rightarrow$  8 Transistoren              \\
 | 
			
		||||
	für \acs{VA}: 2 HA und 2 Transistoren für $c_{out}$                 & $\Rightarrow$  $2\cdot8+2=18$ Transistoren
 | 
			
		||||
\end{tabular}
 | 
			
		||||
 | 
			
		||||
\textit{Benötigt werden:} \newline
 | 
			
		||||
1 HA = 8 Transistoren \newline
 | 
			
		||||
$(n-1)$ VA = $(n-1) \cdot 18~\text{Transistoren} = (18n-18) \text{Transistoren}$
 | 
			
		||||
 | 
			
		||||
$\Rightarrow$ insgesamt: 8 + 18n - 18 = 18n - 10 Transistoren = $O(n)$
 | 
			
		||||
1 HA = 8 Transistoren \textit{plus}
 | 
			
		||||
$(n-1)$ VA = $(n-1) \cdot 18~\text{Transistoren} = (18n-18) \text{Transistoren}$ \newline
 | 
			
		||||
\quad $\Rightarrow$ insgesamt also: 8 + (18n - 18) = 18n - 10 Transistoren = $O(n)$
 | 
			
		||||
 | 
			
		||||
Dies heißt, dass der \acs{HW}-Aufwand linear mit der Breite der Summanden steigt. Dies ist gut, denn besseres (also weniger Aufwand) ist kaum zu erwarten.
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Zeitaufwand des 4~Bit RC-PA}} \newline
 | 
			
		||||
für \acs{HA}: max. 2 Gatterlaufzeiten (\enquote{Tiefe 2}, siehe \autoref{fig:halbaddierer}) \newline
 | 
			
		||||
für \acs{VA}: max. 4 Gatterlaufzeiten
 | 
			
		||||
 | 
			
		||||
Beim \acs{RC-PA} liegen die einzelnen $s_i$ nach unterschiedlicher Zeit an. \newline
 | 
			
		||||
$s_i$ wird nach $(i+1)\cdot 2$ \acs{GLZ} erreicht. Das längste $s_i$ ist bei $n$~Bit-RC-PA $i=n-1$ und damit ergibt sich ein Zeitaufwand bei $n$-Bit-\acs{RC-PA} von $2n$\acs{GLZ}!
 | 
			
		||||
 | 
			
		||||
Dies ist ein schlechter Zeitaufwand bei einem Paralleladdierer! Zu erwarten wäre $O(1)$.
 | 
			
		||||
 | 
			
		||||
\textit{Auswirkung}: Beim Wechsel von 32- auf 64-Bit-CPU hätte sich die Taktfrequenz halbiert. Daraus lässt sich folgern, dass kein 64-Bit-\acs{RC-PA} in der CPU verbaut ist.
 | 
			
		||||
 | 
			
		||||
\begin{Hinweis}
 | 
			
		||||
	Anmerkung zum \acs{RC-PA}: Die $2n$ \acs{GLZ} Zeitaufwand werden nur im \enquote{schlimmsten Fall} bei einer ununterbrochene Kette von $c_{out}$-Ausgängen, welche sich \textbf{alle} im Laufe  der Berechnung von 0 auf 1 ändern, erreicht.
 | 
			
		||||
 | 
			
		||||
	Diese Zeit muss aber trotzdem abgewartet werden.
 | 
			
		||||
\end{Hinweis}
 | 
			
		||||
 | 
			
		||||
\subsection{Paralleladdierer (4-Bit-Carry-Look-Ahead-Paralleladdierer CLA-PA)}
 | 
			
		||||
Idee: Der $c_{in}$-Eingang wird nicht von vorausgehenden \acs{VA} (oder \acs{HA}) übernommen, sondern durch ein \enquote{magisches CLA-Schaltnetz} nachberechnet. Genauer: Für die Berechnung von $c_{in}$ müssen alle Eingänge $a_j, b_j, j < i$ berücksichtigt werden.
 | 
			
		||||
 | 
			
		||||
\begin{figure}[ht]
 | 
			
		||||
	\centering
 | 
			
		||||
	\begin{tikzpicture}[font=\sffamily]
 | 
			
		||||
	\foreach \a in {0,...,3} {
 | 
			
		||||
		% Calculate the index
 | 
			
		||||
		\def\b{{\pgfmathparse{3-\a}  % Evaluate the expression
 | 
			
		||||
				\pgfmathprintnumber[     % Print the result
 | 
			
		||||
				fixed,
 | 
			
		||||
				fixed zerofill,
 | 
			
		||||
				precision=0
 | 
			
		||||
				]{\pgfmathresult}}}
 | 
			
		||||
 | 
			
		||||
		\node at (\a*3 - 0.75,2) {$a_{\b}$};
 | 
			
		||||
		\draw (\a*3 - 0.75,1.7) -- (\a*3 - 0.75,1);
 | 
			
		||||
		\node at (\a*3,2) {$b_\b$};
 | 
			
		||||
		\draw (\a*3,1.7) -- (\a*3,1);
 | 
			
		||||
 | 
			
		||||
		\draw[black, thick] (-1 + \a*3,-1) rectangle (\a*3 + 1,1);
 | 
			
		||||
 | 
			
		||||
		\ifnum\a<3
 | 
			
		||||
		\draw (\a*3 + 0.55,2.2) rectangle (\a*3 + 0.95,1.7);
 | 
			
		||||
		\node at (\a*3 + 0.75,1.9) {?};
 | 
			
		||||
		\node at (\a*3 + 1.2,1.4) {$c_{in_\b}$};
 | 
			
		||||
		\draw (\a*3 + 0.75,1.7) -- (\a*3 + 0.75,1);
 | 
			
		||||
		\node[font=\huge\sffamily] at (\a*3, 0) {VA};
 | 
			
		||||
		\fi
 | 
			
		||||
		\ifnum\a>2
 | 
			
		||||
		\node[font=\huge\sffamily] at (\a*3, 0) {HA};
 | 
			
		||||
		\fi
 | 
			
		||||
 | 
			
		||||
		\node at (\a*3 + 0.25,-2) {$s_\b$};
 | 
			
		||||
		\draw (\a*3 + 0.25,-1.7) -- (\a*3 + 0.25,-1);
 | 
			
		||||
	}
 | 
			
		||||
	\node at (-0.5,-2) {$s_4$};
 | 
			
		||||
	\node[font=\small\sffamily] at (-1,-2.5) {\enquote{Überlauf}};
 | 
			
		||||
	\draw (-0.5,-1.7) -- (-0.5,-1);
 | 
			
		||||
	\end{tikzpicture}
 | 
			
		||||
	\caption{CLA-Paralleladdierer -- Schaltnetz}% und Schaltsymbol}
 | 
			
		||||
	\label{fig:paralleladdierer_cla}
 | 
			
		||||
\end{figure}
 | 
			
		||||
 | 
			
		||||
Aber wie sieht das Schaltnetz (und die boolesche Formel) für die Berechnung von $c_{in_i}$ aus?
 | 
			
		||||
\begin{align*}
 | 
			
		||||
	\text{\acs{HA}}:~ c_{out} & = a\wedge b                                                                                                  &                          \\
 | 
			
		||||
	s_{out}                   & = a\overline{b}\vee\overline{a}b                                                                             &                          \\
 | 
			
		||||
	\text{\acs{VA}}:~ c_{out} & = (a\wedge b)\vee(c_{in}\wedge(a\overline{b}\vee\overline{a}b))                                              &                          \\
 | 
			
		||||
							  &                                                                                                              &                          \\
 | 
			
		||||
	c_{in_1} = c_{out_0}      & = a_0\wedge b_0                                                                                              & \textit{\qquad \acs{HA}} \\
 | 
			
		||||
	c_{in_2} = c_{out_1}      & = (a_1\wedge b_1)\vee(\textcolor{Blue}{c_{in_1}} \wedge (a_1\overline{b}_1\vee\overline{a}_1b_1))                              & \textit{\acs{VA}}        \\
 | 
			
		||||
							  & =(a_0\wedge b_1)\vee(\textcolor{Blue}{a_0\wedge b_0} \wedge(a_1\overline{b}_1\vee\overline{a}_1b_1))                            & \textit{Einsetzen}       \\
 | 
			
		||||
	c_{in_3} = c_{out_2}      & = (a_2\wedge b_2)\vee(\textcolor{OliveGreen}{c_{in_2}} \wedge(a_2\overline{b}_2\vee\overline{a}_2b_2))                                & \textit{\acs{VA}}        \\
 | 
			
		||||
							  & = (a_2\wedge b_2)\vee \textcolor{OliveGreen}{((a_0\wedge b_1)\vee(a_0\wedge b_0\wedge(a_1\overline{b}_1\vee\overline{a}_1b_1))} \wedge & \textit{Einsetzen}       \\
 | 
			
		||||
							  & \hspace{4mm} (a_2\overline{b}_2\vee\overline{a}_2b_2))                                                                    &                          \\
 | 
			
		||||
	\cdots                    &                                                                                                              &
 | 
			
		||||
\end{align*}\todo{Überprüfen, ob korrekt aufgeschrieben.}
 | 
			
		||||
 | 
			
		||||
Aber: Für die Berechnung der $c_{in_i}$ kann jeweils eine \acs{DNF}, \acs{DMF} oder jede andere DxF (wie auch eine KxF) verwendet werden. \newline
 | 
			
		||||
$\Rightarrow$ diese haben jeweils nur genau (bzw. maximal) 2~\acs{GLZ} Zeitaufwand.
 | 
			
		||||
 | 
			
		||||
Insgesamt hat jedes $s_i$ beim \acs{CLA-PA} genau 6~\acs{GLZ} Zeitaufwand (außer $s_0$ 2~\acs{GLZ}, $s_1$ 5~\acs{GLZ}).
 | 
			
		||||
 | 
			
		||||
$\Rightarrow$ konstanter Zeitaufwand $O(1)$
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Hardwareaufwand des 4~Bit CLA-PA}} \newline
 | 
			
		||||
Aufwand für $c_{in_i}$-Berechnung: Annahme Schaltnetz wäre Realisierung der \acs{DNF}.\newline
 | 
			
		||||
für $c_{in_i}$ gibt es insgesamt $2i$ Eingänge\newline
 | 
			
		||||
$\Rightarrow$  insgesamt max $2^{2i}$ verschiedene Vollkonjunktionen, welche in der \acs{DNF} auftreten können.\newline
 | 
			
		||||
Jede dieser Vollkonjunktionen wird mit $2i$ Transistoren realisiert.\newline
 | 
			
		||||
$\Rightarrow$ falls alle Vollkonjunktionen verwendet werden müssten, wäre der Hardwareaufwand $2^{2i}\cdot 2i$ Transistoren.
 | 
			
		||||
 | 
			
		||||
In der Realität werden natürlich nicht alle Vollkonjunktionen benötigt, sondern ein (vermutlich halbwegs konstanter) Anteil $0 < k < i$.
 | 
			
		||||
 | 
			
		||||
$\Rightarrow$ damit ist der Aufwand für $c_{in_i} = O(i\cdot4^i) = O(i\cdot2^i)$
 | 
			
		||||
damit ist der Aufwand für $n$-Bit-\acs{CLA-PA}: $O(n^2\cdot2^n)$
 | 
			
		||||
 | 
			
		||||
Der Hardwareaufwand steigt beim $n$-Bit-\acs{CLA-PA} überexponentiell mit $n$.
 | 
			
		||||
Beim Wechsel von $32$-Bit auf 64-Bit-\acs{CLA-PA} wäre der halb-billionenfache Aufwand an Transistoren nötig gewesen. \textit{Das ist viel zu viel}. % Der Hardwareaufwand von 64~Bit im Gegensatz zu 32~Bit wäre viel zu groß und damit wird auch dieser Paralleladdierer nicht in der CPU verwendet.
 | 
			
		||||
 | 
			
		||||
\begin{tabular}{@{}l@{}c@{}c@{}l}
 | 
			
		||||
	Bei $n=4$: \quad $4^2\cdot 2^4=$~ & $16\cdot 16$~  $=$ &       $256$       & ~Transistoren                      \\
 | 
			
		||||
	Bei $n=8$: \quad $8^2\cdot 2^8=$~ &   $64\cdot 256=$   & ~ \circa{$16384$} & ~Transistoren (64-fache von $n=4$)
 | 
			
		||||
\end{tabular}\todo{Vergleichen: Siehe Notizen, etc.}
 | 
			
		||||
 | 
			
		||||
Addierer für 32-Bit: Aufsplitten in acht 4-Bit-\acs{CLA-PA}
 | 
			
		||||
 | 
			
		||||
\begin{figure}[h!]
 | 
			
		||||
	\centering
 | 
			
		||||
	\includegraphics[width=13cm]{Bilder/casc_cla_pa.png}
 | 
			
		||||
	\caption{Kaskadierbare 4-Bit-CLA-PA}
 | 
			
		||||
	\label{fig:casc_cla_ca}
 | 
			
		||||
\end{figure}\todo{Als Tikz übernehmen}
 | 
			
		||||
 | 
			
		||||
$\Rightarrow$ hintereinander geschaltet nach RC-Prinzip \newline
 | 
			
		||||
$\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$  erträglicher Hardwareaufwand
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
\subsection{Serielladdierer}
 | 
			
		||||
\textit{Idee}: Angelehnt an die Verfahrensweise des Menschen sollen die Stellen der beiden Summanden nacheinander (und nicht gleichzeitig) addiert werden. Dadurch wird nur \textbf{ein} \acs{VA} und mehrere \acf{SR} nötig. Daher ist der \acf{SA} ein Schaltwerk, kein Schaltnetz! \autoref{fig:serielladdierer} zeigt das Schaltwerk eines Serielladdierer.
 | 
			
		||||
 | 
			
		||||
\begin{figure}[h!]
 | 
			
		||||
	\centering
 | 
			
		||||
	\includegraphics[width=13cm]{Bilder/Serielladdierer.png}
 | 
			
		||||
	\caption{Serielladdierer}
 | 
			
		||||
	\label{fig:serielladdierer}
 | 
			
		||||
\end{figure}\todo{Als Tikz übernehmen}
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Zeitaufwand ($N$-Bit-SA})}: $n$ Taktzyklen $\Rightarrow$  $O(n)$
 | 
			
		||||
 | 
			
		||||
Ist dies wie beim \acs{RC-PA}? \newline
 | 
			
		||||
Jein, denn 1 Taktzyklus ist deutlich mehr als doppelt solang wie die Berechnung des \acs{VA} (Sicherheitsmargen!).\newline
 | 
			
		||||
(\zB 1 Taktzyklus > \circa{10}\acs{GLZ}) \newline
 | 
			
		||||
$\Rightarrow$ fünffache Berechnungszeit des \acs{RC-PA}
 | 
			
		||||
 | 
			
		||||
\textsf{\textbf{Hardwareaufwand ($N$-Bit-SA})}
 | 
			
		||||
 | 
			
		||||
1 \acs{VA}: 18 Transistoren \newline
 | 
			
		||||
2 \acs{D-FF}. $2\cdot 6=12$ Transistoren. Siehe Grafik rechts:
 | 
			
		||||
3. $n$-Bit-\acs{SR}: Siehe Grafik links
 | 
			
		||||
Takterzeugung (im folgenden nicht näher betrachtet)
 | 
			
		||||
\begin{figure}[h!]
 | 
			
		||||
	\centering
 | 
			
		||||
	\includegraphics[width=15cm]{Bilder/Serielladdierer_2.png}
 | 
			
		||||
	\caption{Schieberegister und D-Flip-Flop}
 | 
			
		||||
	\label{fig:serielladdierer_2}
 | 
			
		||||
\end{figure}
 | 
			
		||||
 | 
			
		||||
\begin{Achtung}
 | 
			
		||||
	Die Takterzeugung muss in der Klausur für den \acl{SA} auf jeden Fall genannt werden, auch wenn er hier nicht weiter betrachtet wird!
 | 
			
		||||
\end{Achtung}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,7 +16,7 @@
 | 
			
		|||
\title{\Was}
 | 
			
		||||
 | 
			
		||||
\begin{document}
 | 
			
		||||
    \selectlanguage{ngerman}
 | 
			
		||||
	\selectlanguage{ngerman}
 | 
			
		||||
	\newcounter{savepage} % Counter resetten
 | 
			
		||||
	\pagenumbering{Roman} % große, römische Seitenzahlen
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -29,8 +29,7 @@
 | 
			
		|||
 | 
			
		||||
	\setcounter{savepage}{\value{page}} % Neuer Counter
 | 
			
		||||
	\pagenumbering{arabic}              % Normale Arabische Zahlen
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	% Mitschriften
 | 
			
		||||
	\input{Kapitel/00_Vorwort.tex}
 | 
			
		||||
	\input{Kapitel/01_Einstieg.tex}
 | 
			
		||||
| 
						 | 
				
			
			@ -40,17 +39,22 @@
 | 
			
		|||
	
 | 
			
		||||
	\chapter{Abkürzungsverzeichnis}
 | 
			
		||||
	\begin{acronym}[xxxxxx]
 | 
			
		||||
		\acro{CLA-PA}{Carry-Look-Ahead-Paralleladdierer}
 | 
			
		||||
		\acro{CPU}{central processing unit}
 | 
			
		||||
		\acro{D-FF}{D-Flip-Flop}
 | 
			
		||||
		\acro{DMF}{Disjunktive Minimalform}
 | 
			
		||||
		\acro{DNF}{Disjunktive Normalform}
 | 
			
		||||
		\acro{IC}{Integrated Circuit}
 | 
			
		||||
		\acro{GLZ}{Gatterlaufzeit}
 | 
			
		||||
		\acrodefplural{GLZ}[GLZs]{Gatterlaufzeiten}
 | 
			
		||||
		\acro{HA}{Halbaddierer}
 | 
			
		||||
		\acro{HW}{Hardware}
 | 
			
		||||
		\acro{RC-PA}{Ripple-Carry-Paralleladdierer}
 | 
			
		||||
		\acro{SA}{Serielladdierer}
 | 
			
		||||
		\acro{SR}{Schieberegister}
 | 
			
		||||
		\acro{VA}{Volladdierer}
 | 
			
		||||
	\end{acronym}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	\newpage
 | 
			
		||||
	\listoffigures         % Abbildungsverzeichnis
 | 
			
		||||
	\newpage
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue