[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} \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] \begin{table}[h]
\hspace*{-7mm} \hspace*{-5mm}
\begin{tabular}{cp{7.6cm}|cp{7.6cm}} \begin{tabular}{cp{7.5cm}|cp{7.5cm}}
& \textbf{von-Neumann-Architektur} & & \textbf{Harvard-Architektur} \\ & \textbf{von-Neumann-Architektur} & & \textbf{Harvard-Architektur} \\
\midrule \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. 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} \end{Hinweis}
\section{Schaltnetzsysnthese} \section{Schaltnetzsysnthese -- Wiederholung / Grundlegendes}
\subsection{Wiederholung/Grundlegendes}
\begin{description} \begin{description}
\item[Schaltnetz] Kann nur die derzeitigen Eingangsdaten verarbeiten, da keine Rückkopplung vorliegt \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} \item[\acf{DMF}] Ist die minimale Darstellung einer Ausgabefunktion und damit eine Vereinfachung einer \acs{DNF}
\end{description} \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. 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. 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} \label{fig:halbaddierer}
\end{figure} \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. 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!] \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}. \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}.
\section{Paralleladdierer (4-Bit-Ripple-Carry-Paralleladdierer RC-PA)}
\subsection{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. 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. \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. 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} \end{Hinweis}
\textsf{\textbf{Schaltungsanalyse:}} \newline \subsection{Hardwareaufwand des 4~Bit RC-PA}
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}}
\noindent\begin{tabular}{@{}l@{}ll} \noindent\begin{tabular}{@{}l@{}ll}
für \acs{HA}: & 2 Transistoren für $c_{out}$ und 6 Transistoren für $s$ & $\Rightarrow$ 8 Transistoren \\ 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} \begin{tabular}{@{}lcl}
1 \acs{HA} + $(n-1)$ \acs{VA} & $\Rightarrow$ & 8 Transistoren + $(n-1) \cdot 18~\text{Transistoren}$ \\ 1 \acs{HA} + $(n-1)$ \acs{VA} & $\Rightarrow$ & 8 Transistoren + $(n-1) \cdot 18~\text{Transistoren}$ \\
& $\Rightarrow$ & $8 + (18n - 18) $~Transistoren \\ & $\Rightarrow$ & $8 + (18n - 18) $~Transistoren $ = 18n - 10$~Transistoren \\
& $ = $ & $18n - 10$~Transistoren \\
& $ = $ & $O(n)$ & $ = $ & $O(n)$
\end{tabular} \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. 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} 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. 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. \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} \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. Diese Zeit muss aber trotzdem abgewartet werden.
\end{Hinweis} \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}. \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] \begin{figure}[ht]
@ -576,35 +572,37 @@ Aber wie sieht das Schaltnetz (und die boolesche Formel) für die Berechnung von
\cdots & & \cdots & &
\end{align*} \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 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)$. 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 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 \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. Jede dieser Vollkonjunktionen wird mit $2i$ Transistoren realisiert.
\item[$\Rightarrow$] Falls alle Vollkonjunktionen verwendet werden müssten, wäre der Hardwareaufwand \newline \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} \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)$ 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$. 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} \begin{tabular}{@{}l@{}c@{}c@{}l}
Bei $n=4$: \quad $4^2\cdot 2^4=$~ & $16\cdot 16$~ $=$ & $256$ & ~Transistoren \\ 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} \end{tabular}
\todo{Vergleichen: Siehe Notizen, etc.} \todo{Vergleichen: Siehe Notizen, etc.}
\newpage % Für das Layout \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}). 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} \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. \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!] \begin{figure}[h!]
@ -688,14 +686,14 @@ $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$
\label{fig:serielladdierer} \label{fig:serielladdierer}
\end{figure}\todo{Als Tikz übernehmen} \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)$ 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 \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} 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} \begin{tabular}{@{}l@{}l}
1 \acs{VA}: & 18 Transistoren \\ 1 \acs{VA}: & 18 Transistoren \\