[Kapitel] Struktur + Layout

This commit is contained in:
Andre Meyering 2017-10-26 15:51:12 +02:00
parent da276f5768
commit 63fc7b9b43
2 changed files with 36 additions and 38 deletions

View file

@ -149,11 +149,11 @@ Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten mö
\subsection{Vergleich}
\autoref{tbl:vergleich_vn_hv} auf Seite~\pageref{tbl:vergleich_vn_hv} vergleicht die von-Neumann-Architektur mit der Harvard-Architektur.
\autoref{tbl:vergleich_vn_hv} auf \autopageref{tbl:vergleich_vn_hv} vergleicht die von-Neumann-Architektur mit der Harvard-Architektur.
\begin{table}[h]
\hspace*{-7mm}
\begin{tabular}{cp{7.6cm}|cp{7.6cm}}
\hspace*{-5mm}
\begin{tabular}{cp{7.5cm}|cp{7.5cm}}
& \textbf{von-Neumann-Architektur} & & \textbf{Harvard-Architektur} \\
\midrule
@ -230,9 +230,7 @@ Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten mö
Herr Röthig meint mit \enquote{einstellig} und \enquote{mehrstellig} die Anzahl der Zahlen und nicht die Stellenanzahl einer einzelnen Zahl. Im Beispiel oben werden zwei Zahlen addiert und daraus ergeben sich zwei weitere Zahlen als Ergebnis.
\end{Hinweis}
\section{Schaltnetzsysnthese}
\subsection{Wiederholung/Grundlegendes}
\section{Schaltnetzsysnthese -- Wiederholung / Grundlegendes}
\begin{description}
\item[Schaltnetz] Kann nur die derzeitigen Eingangsdaten verarbeiten, da keine Rückkopplung vorliegt
@ -242,7 +240,17 @@ Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten mö
\item[\acf{DMF}] Ist die minimale Darstellung einer Ausgabefunktion und damit eine Vereinfachung einer \acs{DNF}
\end{description}
\subsection{Halbaddierer}
\subsection{Schaltungsanalyse}
Eine Schaltungsanalyse ist die Bestimmung des \enquote{Aufwands}. Dabei kann der Aufwand sein:
\begin{itemize}[noitemsep]
\item \enquote{Hardware-Aufwand} (in Anzahl an Transistoren)
\item Zeitaufwand (in \acl{GLZ})
\end{itemize}
\subsection{Warum soll der Zeitaufwand analysiert werden?}
Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, welche typischerweise \circa{10 Pikosekunden} betragen. 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}} angegeben).
\section{Halbaddierer}
Vollzieht die Addition von zwei einstelligen Binärzahlen $a$ und $b$ zu einer zweistelligen Binärzahl $c_{out}s$ (Übertrag und Summe). Schaltsymbol und Schaltnetz des Halbaddierers werden in \autoref{fig:halbaddierer} dargestellt.
Die folgende Tabelle zeigt den Gedankenweg, wie ein Halbaddierer funktioniert.
@ -337,7 +345,7 @@ Die folgende Tabelle zeigt den Gedankenweg, wie ein Halbaddierer funktioniert.
\label{fig:halbaddierer}
\end{figure}
\subsection{Volladdierer}
\section{Volladdierer}
Vollzieht die Addition von drei einstelligen Binärzahlen $a$, $b$ und $c_{in}$ zu einer zweistelligen Binärzahl $c_{out}s$ (Übertrag und Summe). Schaltsymbol und Schaltnetz des Volladdierer werden in \autoref{fig:volladdierer} dargestellt.
\begin{figure}[h!]
@ -403,8 +411,7 @@ Vollzieht die Addition von drei einstelligen Binärzahlen $a$, $b$ und $c_{in}$
\textit{Hinweis:} Für die Verknüpfung von $c_{out_1}$ und $c_{out_2}$ zu $c_{out}$ wäre eigentlich ein \texttt{XOR} notwendig. Da aber der Fall $c_{out_1} = c_{out_2} = 1$ (also beide Eingänge des \texttt{XOR} \enquote{1}) nie auftritt, reicht ein \texttt{OR}.
\subsection{Paralleladdierer (4-Bit-Ripple-Carry-Paralleladdierer RC-PA)}
\section{Paralleladdierer (4-Bit-Ripple-Carry-Paralleladdierer RC-PA)}
Der \acs{RC-PA} ist ein mehrstelliger Addierer für Binärzahlen. In den folgenden Beispielen ist er ein Addierer vierstelliger Binärzahlen $a_3a_2a_1a_0$ und $b_3b_2b_1b_0$. Das Ergebnis ist $s_4s_3s_2s_1s_0$ und somit eine 5-stellige Zahl. $s_4$ ist der Überlauf.
\autoref{fig:paralleladdierer_rc} zeigt das Schaltnetz und Schaltsymbol eines Paralleladdierers.
@ -472,17 +479,7 @@ Der \acs{RC-PA} ist ein mehrstelliger Addierer für Binärzahlen. In den folgend
Ein $n$-Bit \acs{RC-PA} ist ein Schaltnetz, kein Schaltwerk! Eine zeichnerische Anordnung mit Verbindungen nur nach unten ist nämlich möglich.
\end{Hinweis}
\textsf{\textbf{Schaltungsanalyse:}} \newline
Eien Schaltungsanalyse ist die Bestimmung des \enquote{Aufwands}. Dbaie kann der Aufwand sein:
\begin{itemize}[noitemsep]
\item \enquote{Hardware-Aufwand} (in Anzahl an Transistoren)
\item Zeitaufwand (in \acs{GLZ})
\end{itemize}
\textsf{\textbf{Warum soll der Zeitaufwand analysiert werden?}} \newline
Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, welche typischerweise \circa{10 Pikosekunden} betragen. 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}} angegeben).
\textsf{\textbf{Hardwareaufwand des 4~Bit RC-PA}}
\subsection{Hardwareaufwand des 4~Bit RC-PA}
\noindent\begin{tabular}{@{}l@{}ll}
für \acs{HA}: & 2 Transistoren für $c_{out}$ und 6 Transistoren für $s$ & $\Rightarrow$ 8 Transistoren \\
@ -493,16 +490,15 @@ Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, welche typisch
\begin{tabular}{@{}lcl}
1 \acs{HA} + $(n-1)$ \acs{VA} & $\Rightarrow$ & 8 Transistoren + $(n-1) \cdot 18~\text{Transistoren}$ \\
& $\Rightarrow$ & $8 + (18n - 18) $~Transistoren \\
& $ = $ & $18n - 10$~Transistoren \\
& $\Rightarrow$ & $8 + (18n - 18) $~Transistoren $ = 18n - 10$~Transistoren \\
& $ = $ & $O(n)$
\end{tabular}
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}}
\subsection{Zeitaufwand des 4~Bit RC-PA}
für \acs{HA}: max. 2 \acfp{GLZ} (\enquote{Tiefe 2}, siehe \autoref{fig:halbaddierer}) \newline
für \acs{HA}: max. 2 \acfp{GLZ} (\enquote{Tiefe 2}, siehe \autoref{fig:halbaddierer} auf \autopageref{fig:halbaddierer}) \newline
für \acs{VA}: max. 4 \acfp{GLZ}
Beim \acs{RC-PA} liegen die einzelnen $s_i$ nach unterschiedlicher Zeit an. $s_i$ wird nach $(i+1)\cdot 2$ \acs{GLZ} erreicht.
@ -512,12 +508,12 @@ Dies ist ein schlechter Zeitaufwand bei einem Paralleladdierer, denn zu erwarten
\textit{Auswirkung}: Beim Wechsel von 32- auf 64-Bit-\acs{CPU} hätte sich die Taktfrequenz halbiert. Daraus lässt sich folgern, dass kein 64-Bit-\acs{RC-PA} in der \acs{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.
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 \texttt{0} auf \texttt{1} ändern, erreicht.
Diese Zeit muss aber trotzdem abgewartet werden.
\end{Hinweis}
\subsection{Paralleladdierer (4-Bit-Carry-Look-Ahead-Paralleladdierer CLA-PA)}
\section{Paralleladdierer (4-Bit-Carry-Look-Ahead-Paralleladdierer CLA-PA)}
\textit{Idee}: Der $c_{in}$-Eingang wird nicht von vorausgehenden \acs{VA} (oder \acs{HA}) übernommen, sondern durch ein \enquote{magisches CLA-Schaltnetz} nachberechnet. \textit{Genauer}: Für die Berechnung von $c_{in_i}$ müssen alle vorherigen Eingänge $a_j, b_j, j < i$ berücksichtigt werden. \autoref{fig:paralleladdierer_cla} zeigt dieses \enquote{magische CLA-Schaltnetz}.
\begin{figure}[ht]
@ -576,35 +572,37 @@ Aber wie sieht das Schaltnetz (und die boolesche Formel) für die Berechnung von
\cdots & &
\end{align*}
Aber: Für die Berechnung der $c_{in_i}$ kann jeweils eine \acs{DNF}, \acs{DMF} oder jede andere DxF (oder KxF) verwendet werden. Diese haben jeweils nur genau (bzw. maximal) 2~\acs{GLZ} Zeitaufwand.
\subsection{Zeitaufwand}
Für die Berechnung der $c_{in_i}$ kann jeweils eine \acs{DNF}, \acs{DMF} oder jede andere DxF (oder KxF) verwendet werden. 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}). \newline
Somit haben wir einen konstanten Zeitaufwand von $O(1)$.
\textsf{\textbf{Hardwareaufwand des 4~Bit CLA-PA}} \newline
\subsection{Hardwareaufwand des 4~Bit CLA-PA}
Für den Aufwand für die $c_{in_i}$-Berechnung gilt die Annahme, das Schaltnetz wäre eine Realisierung der \acs{DNF}.
Für jedes $c_{in_i}$ gibt es insgesamt $2i$ Eingänge. \begin{itemize}[noitemsep]
\begin{itemize}[noitemsep]
\item[$\Rightarrow$] Für jedes $c_{in_i}$ gibt es insgesamt $2i$ Eingänge.
\item[$\Rightarrow$] Insgesamt max. $2^{2i}$ verschiedene Vollkonjunktionen, welche in der \acs{DNF} auftreten können. \newline
Jede dieser Vollkonjunktionen wird mit $2i$ Transistoren realisiert.
\item[$\Rightarrow$] Falls alle Vollkonjunktionen verwendet werden müssten, wäre der Hardwareaufwand \newline
$2^{2i}\cdot 2i$ Transistoren.\todo{Evtl. nicht korrekt.}
$2^{2i}\cdot 2i$ Transistoren.\todo{Evtl. nicht korrekt. Die 15er haben da was anderes...}
\end{itemize}
In der Realität werden natürlich nicht alle Vollkonjunktionen benötigt, sondern ein (vermutlich halbwegs konstanter) Anteil $0 < k < i$. Damit ist der Aufwand für $c_{in_i} = O(i\cdot4^i) \Rightarrow O(i\cdot2^i)$ und somit 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 16~Trillionen-fache 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.
Beim Wechsel von $32$-Bit auf 64-Bit-\acs{CLA-PA} wäre der 16~Trillionen-fache Aufwand an Transistoren nötig gewesen.
\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$)
Bei $n=8$: \quad $8^2\cdot 2^8=$~ & $64\cdot 256=$ & ~ \circa{$16384$} & ~Transistoren (64-fache von $n=4$) $\Rightarrow$ \textit{zu viel für die \acs{CPU}}
\end{tabular}
\todo{Vergleichen: Siehe Notizen, etc.}
\newpage % Für das Layout
\textsf{\textbf{Kombination mehrerer kleinen \acsp{CLA-PA}}}
\subsection{Kombination mehrerer kleinen \acsp{CLA-PA}}
Der 32-Bit Addierer wird in acht 4-Bit-\acs{CLA-PA} gesplittet (siehe \autoref{fig:casc_cla_ca}).
@ -678,7 +676,7 @@ $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$
\end{figure}
\subsection{Serielladdierer}
\section{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} benötigt. Daher ist der \acf{SA} ein Schaltwerk, kein Schaltnetz! \autoref{fig:serielladdierer} zeigt das Schaltwerk eines Serielladdierer.
\begin{figure}[h!]
@ -688,14 +686,14 @@ $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$
\label{fig:serielladdierer}
\end{figure}\todo{Als Tikz übernehmen}
\textsf{\textbf{Zeitaufwand ($n$-Bit-SA})}
\subsection{Zeitaufwand ($n$-Bit-SA)}
Der Zeitaufwand für einen $n$-Bit-\acs{SA} beträgt $n$ Taktzyklen, also $O(n)$
\textit{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!). Beispiel: 1 Taktzyklus > \circa{10}~\acs{GLZ} $\Rightarrow$ fünffache Berechnungszeit des \acs{RC-PA}
\textsf{\textbf{Hardwareaufwand ($N$-Bit-SA})}
\subsection{Hardwareaufwand ($N$-Bit-SA)}
\begin{tabular}{@{}l@{}l}
1 \acs{VA}: & 18 Transistoren \\