[Kapitel] Struktur + Layout
This commit is contained in:
parent
da276f5768
commit
63fc7b9b43
2 changed files with 36 additions and 38 deletions
|
@ -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 \\
|
||||
|
|
Binary file not shown.
Loading…
Reference in a new issue