[Kapitel] Layout; Fixes; Tikz Grafik

* Layout angepasst
* Fehler behoben
* Grafik in Tikz umgesetzt
This commit is contained in:
Andre Meyering 2017-10-26 15:34:13 +02:00
parent bd669656a6
commit da276f5768
4 changed files with 155 additions and 77 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

View file

@ -20,10 +20,7 @@
\textsf{\textbf{Arbeitsweise}} \textsf{\textbf{Arbeitsweise}}
Man unterscheidet zwischen mechanisch vs elektrisch und digital vs analog. Man unterscheidet zwischen \enquote{mechanisch vs elektrisch} und \enquote{digital vs analog}. Moderne \enquote{Rechner} (PC \& Co.) arbeiten elektrisch und digital. Dem gegenüber stehen elektrische Analogrechner, die um die 1920er genutzt wurden.
Moderne \enquote{Rechner} (PC \& Co.) arbeiten elektrisch und digital. Dem gegenüber stehen elektrische Analogrechner (elektrisch und analog; um die 1920er).
\section{Geschichte} \section{Geschichte}
\subsection{Elektrischer Digitalrechner} \subsection{Elektrischer Digitalrechner}
@ -43,7 +40,7 @@ Moderne \enquote{Rechner} (PC \& Co.) arbeiten elektrisch und digital. Dem gegen
\end{itemize} \end{itemize}
\item[ENIAC] (\circa{1945}) \newline \item[ENIAC] (\circa{1945}) \newline
Die ENIAC besitzt als zentrales Bauteil eine Elektronenröhr. Eine Elektronenröhre ist ein eigentlich analog arbeitender Verstärker, wird hier aber als digitaler Schalter genutzt. Die Funktionsweise wird in \autoref{fig:elektronenstrahlroehre} dargestellt, wobei die Kathode negativ und die Anode positiv geladen sind. Die \acs{ENIAC} besitzt als zentrales Bauteil eine Elektronenröhre. Eine Elektronenröhre ist ein eigentlich analog arbeitender Verstärker, wird hier aber als digitaler Schalter genutzt. Die Funktionsweise wird in \autoref{fig:elektronenstrahlroehre} dargestellt, wobei die Kathode negativ und die Anode positiv geladen sind.
\begin{itemize}[noitemsep] \begin{itemize}[noitemsep]
\item[$\oplus$] sehr hohe Geschwindigkeit \item[$\oplus$] sehr hohe Geschwindigkeit
@ -60,7 +57,9 @@ Moderne \enquote{Rechner} (PC \& Co.) arbeiten elektrisch und digital. Dem gegen
\label{fig:elektronenstrahlroehre} \label{fig:elektronenstrahlroehre}
\end{figure} \end{figure}
\item[Moderne Rechner] Moderne transistorisierte Digitalrechner (\zB Uniac) ab Ende der 1950er). \newpage % Für das Seitenlayout
\item[Moderne Rechner] Moderne transistorisierte Digitalrechner (\zB \acs{UNIVAC} ab Ende der 1950er).
\begin{itemize}[noitemsep] \begin{itemize}[noitemsep]
\item Transistor als zentrales Bauteil. \item Transistor als zentrales Bauteil.
Ein Transistor ist ein analog arbeitender Verstärker, wird hier aber als digital arbeitender Schalter genutzt. Ein Transistor ist ein analog arbeitender Verstärker, wird hier aber als digital arbeitender Schalter genutzt.
@ -73,8 +72,8 @@ Moderne \enquote{Rechner} (PC \& Co.) arbeiten elektrisch und digital. Dem gegen
\end{description} \end{description}
\section{Fundamentalarchitektur} \section{Fundamentalarchitektur}
\subsection{von-Neumann-Architektur} \subsection{von-Neumann-Architektur}\label{sec:von_neumann} \index{von-Neumann-Architektur}
In \autoref{fig:neumann_architektur} wird die von-Neumann-Architektur vereinfacht dargestellt. In \autoref{fig:neumann_architektur} wird die von-Neumann-Architektur vereinfacht dargestellt. Diese besteht aus:
\begin{description} \begin{description}
\item[Zentraleinheit (\acs{CPU})] Die CPU besteht aus: \item[Zentraleinheit (\acs{CPU})] Die CPU besteht aus:
@ -86,7 +85,7 @@ In \autoref{fig:neumann_architektur} wird die von-Neumann-Architektur vereinfach
Speichern von Informationen (sowohl Programmcode als auch Nutzdaten gleichermaßen) Speichern von Informationen (sowohl Programmcode als auch Nutzdaten gleichermaßen)
\item[Bus] verbindet alle Komponenten und ermöglicht den Informationsaustausch/Datenfluss zwischen ihnen. \item[Bus] verbindet alle Komponenten und ermöglicht den Informationsaustausch/Datenfluss zwischen ihnen.
\item[Eingabewerk] \enquote{Schnittstelle} für Eingabegeräte (\zB USB-Controller, S-ATA-Controller) nicht jedoch das Peripheriegerät selbst (also nicht die Tastatur) \item[Eingabewerk] \enquote{Schnittstelle} für Eingabegeräte (\zB USB-Controller, S-ATA-Controller) nicht jedoch das Peripheriegerät selbst (also nicht die Tastatur)
\item[Ausgaberwerk] \enquote{Schnittstelle} für Ausgabegeräte (\zB Grafikkarte) \item[Ausgabewerk] \enquote{Schnittstelle} für Ausgabegeräte (\zB Grafikkarte)
\end{description} \end{description}
\begin{figure}[ht] \begin{figure}[ht]
@ -96,9 +95,9 @@ In \autoref{fig:neumann_architektur} wird die von-Neumann-Architektur vereinfach
\label{fig:neumann_architektur} \label{fig:neumann_architektur}
\end{figure} \end{figure}
\subsection{Harvard-Architektur} \subsection{Harvard-Architektur}\label{sec:harvard} \index{Harvard-Architektur}
Die Harvard-Architektur ist ähnlich der von-Neumann-Architektur, besitzt aber anstatt eines gemeinsamen, zwei getrennte Speicherwerke für Nutzdaten und Programmcode. Zusätzlich kann noch ein optionales zweites Eingabewerk existieren, welches nur für den Programmcode vorhanden ist. Das Speicher- und Eingabewerk für den Programmcode wird über einen zweiten Bus angebunden. \newline Die Harvard-Architektur ist ähnlich der \hyperref[sec:von_neumann]{von-Neumann-Architektur}, besitzt aber anstatt eines gemeinsamen, zwei getrennte Speicherwerke für Nutzdaten und Programmcode. Zusätzlich kann noch ein optionales zweites Eingabewerk existieren, welches nur für den Programmcode vorhanden ist. Das Speicher- und Eingabewerk für den Programmcode wird über einen zweiten Bus angebunden. \newline
Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten möglich. \autoref{fig:harvard_architektur} zeigt die Harvard-Architektur und wie sich diese von der von-Neumann-Architektur unterscheidet. Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten möglich. \autoref{fig:harvard_architektur} auf der nächsten Seite zeigt die Harvard-Architektur und wie sich diese von der \hyperref[sec:von_neumann]{von-Neumann-Architektur} unterscheidet.
\begin{figure}[ht] \begin{figure}[ht]
\centering \centering
@ -201,7 +200,7 @@ Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten mö
\\ \\
& &
& \textbullet & Bestandteile von PCs: BIOS, CPU-Cache in modernen CPUs (Trennung in Cache für Programmcode und Nutzdaten), NX-Flag (Non-Executable) im Hauptspeicher & \textbullet & Bestandteile von \acsp{PC}: BIOS, \acs{CPU}-Cache in modernen \acsp{CPU} (Trennung in Cache für Programmcode und Nutzdaten), NX-Flag (Non-Executable) im Hauptspeicher
\end{tabular} \end{tabular}
\caption{Vergleich der von-Neumann- und Harvard-Architektur} \caption{Vergleich der von-Neumann- und Harvard-Architektur}
\label{tbl:vergleich_vn_hv} \label{tbl:vergleich_vn_hv}
@ -224,24 +223,27 @@ Dadurch ist eine klare physikalische Trennung von Programmcode und Nutzdaten mö
\end{tabular} \end{tabular}
\switchcolumn \switchcolumn
Addition von mehrstelligen Zahlen wird reduziert auf die Addition von zwei (oder drei) einstelligen Zahlen (bzw. Ziffern) zu einer einstelligen Zahl sowie einem einstelligen Übertrag, also einer zweistelligen Zahl als Ergebnis. Die Addition von mehrstelligen Zahlen wird reduziert auf die Addition von zwei (oder drei) einstelligen Zahlen (bzw. Ziffern) zu einer einstelligen Zahl sowie einem einstelligen Übertrag, also einer zweistelligen Zahl als Ergebnis $\Rightarrow$ genauso funktioniert dies im Binärsystem.
$\Rightarrow$ genauso im Binärsystem
\end{paracol} \end{paracol}
\begin{Hinweis}
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} \section{Schaltnetzsysnthese}
\subsection{Wiederholung/Grundlegendes} \subsection{Wiederholung/Grundlegendes}
\begin{description} \begin{description}
\item[Schaltwerk] „Hat ein Gedächtnis“, da eine Rückkopplung vorliegt
\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
\item[Schaltwerk] \enquote{Hat ein Gedächtnis}, da eine Rückkopplung vorliegt
\item[Vollkonjunktion/Minterm] \texttt{UND}-Verknüpfung aller vorkommenden Variablen entweder in negierter oder nicht-negierter Form \item[Vollkonjunktion/Minterm] \texttt{UND}-Verknüpfung aller vorkommenden Variablen entweder in negierter oder nicht-negierter Form
\item[\acf{DNF}] Eine Disjunktion (\texttt{ODER}-Verknüpfung) von Konjunktionstermen (\texttt{UND}-Verknüpfungen). \item[\acf{DNF}] Eine Disjunktion (\texttt{ODER}-Verknüpfung) von Konjunktionstermen (\texttt{UND}-Verknüpfungen).
\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{Halbaddierer}
Addition von zwei einstelligen Binärzahlen $a$ und $b$ zu einer zweistelligen Binärzahl $c_{out}s$ (Übertrag und Summe). Schaltsymbol und Schaltnetz des Halbaddierer 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.
\begin{center} \begin{center}
@ -336,7 +338,7 @@ Die folgende Tabelle zeigt den Gedankenweg, wie ein Halbaddierer funktioniert.
\end{figure} \end{figure}
\subsection{Volladdierer} \subsection{Volladdierer}
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!]
\centering \centering
@ -399,13 +401,14 @@ Addition von drei einstelligen Binärzahlen $a$, $b$ und $c_{in}$ zu einer zweis
\label{fig:volladdierer} \label{fig:volladdierer}
\end{figure} \end{figure}
\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 beiden Eingänge des \texttt{XOR} \enquote{1}) nie auftritt, reicht ein einfaches \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}.
\subsection{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. 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.
\newline
\begin{figure}[ht] \begin{figure}[ht]
\centering \centering
@ -465,42 +468,48 @@ Der \acs{RC-PA} ist ein mehrstelliger Addierer für Binärzahlen. In den folgend
\label{fig:paralleladdierer_rc} \label{fig:paralleladdierer_rc}
\end{figure} \end{figure}
\textit{Hinweis:} Ein $n$-Bit \acs{RC-PA} ist ein Schaltnetz, kein Schaltwerk. Eine zeichnerische Anordnung mit Verbindungen nur nach unten ist nämlich möglich. \begin{Hinweis}
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 \textsf{\textbf{Schaltungsanalyse:}} \newline
Bestimmung des \enquote{Aufwands}. Aufwand kann sein: Eien Schaltungsanalyse ist die Bestimmung des \enquote{Aufwands}. Dbaie kann der Aufwand sein:
\begin{itemize}[noitemsep] \begin{itemize}[noitemsep]
\item \enquote{Hardware-Aufwand} (in Transistoren) \item \enquote{Hardware-Aufwand} (in Anzahl an Transistoren)
\item Zeitaufwand \item Zeitaufwand (in \acs{GLZ})
\end{itemize} \end{itemize}
\textsf{\textbf{Warum Zeitaufwand?}} \newline \textsf{\textbf{Warum soll der Zeitaufwand analysiert werden?}} \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 \acfp{GLZ}}). 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}} \textsf{\textbf{Hardwareaufwand des 4~Bit RC-PA}}
\noindent\begin{tabular}{@{}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 \\
für \acs{VA}: 2 HA und 2 Transistoren für $c_{out}$ & $\Rightarrow$ $2\cdot8+2=18$ Transistoren für \acs{VA}: & 2 \acs{HA} und 2 Transistoren für $c_{out}$ & $\Rightarrow$ $2\cdot8+2=18$ Transistoren
\end{tabular} \end{tabular}
\textit{Benötigt werden:} \newline \textit{Für den 4~Bit \acs{RC-PA} werden benötigt:}
1 HA = 8 Transistoren \textit{plus}
$(n-1)$ VA = $(n-1) \cdot 18~\text{Transistoren} = (18n-18) \text{Transistoren}$ \newline \begin{tabular}{@{}lcl}
\quad $\Rightarrow$ insgesamt also: 8 + (18n - 18) = 18n - 10 Transistoren = $O(n)$ 1 \acs{HA} + $(n-1)$ \acs{VA} & $\Rightarrow$ & 8 Transistoren + $(n-1) \cdot 18~\text{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. 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 \textsf{\textbf{Zeitaufwand des 4~Bit RC-PA}}
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 für \acs{HA}: max. 2 \acfp{GLZ} (\enquote{Tiefe 2}, siehe \autoref{fig:halbaddierer}) \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}! für \acs{VA}: max. 4 \acfp{GLZ}
Dies ist ein schlechter Zeitaufwand bei einem Paralleladdierer! Zu erwarten wäre $O(1)$. Beim \acs{RC-PA} liegen die einzelnen $s_i$ nach unterschiedlicher Zeit an. $s_i$ wird nach $(i+1)\cdot 2$ \acs{GLZ} erreicht.
Das längste $s_i$ ist bei $n$-Bit-\acs{RC-PA} $i=n-1$ und damit ergibt sich ein Zeitaufwand bei $n$-Bit-\acs{RC-PA} von $2n$~\acs{GLZ}!
\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. Dies ist ein schlechter Zeitaufwand bei einem Paralleladdierer, denn zu erwarten wäre $O(1)$! \newline
\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 0 auf 1 ändern, erreicht.
@ -509,7 +518,7 @@ Dies ist ein schlechter Zeitaufwand bei einem Paralleladdierer! Zu erwarten wär
\end{Hinweis} \end{Hinweis}
\subsection{Paralleladdierer (4-Bit-Carry-Look-Ahead-Paralleladdierer CLA-PA)} \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. \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]
\centering \centering
@ -548,7 +557,7 @@ Idee: Der $c_{in}$-Eingang wird nicht von vorausgehenden \acs{VA} (oder \acs{HA}
\node[font=\small\sffamily] at (-1,-2.5) {\enquote{Überlauf}}; \node[font=\small\sffamily] at (-1,-2.5) {\enquote{Überlauf}};
\draw (-0.5,-1.7) -- (-0.5,-1); \draw (-0.5,-1.7) -- (-0.5,-1);
\end{tikzpicture} \end{tikzpicture}
\caption{CLA-Paralleladdierer -- Schaltnetz}% und Schaltsymbol} \caption{Carry-Look-Ahead-Paralleladdierer -- Schaltnetz}
\label{fig:paralleladdierer_cla} \label{fig:paralleladdierer_cla}
\end{figure} \end{figure}
@ -565,50 +574,112 @@ Aber wie sieht das Schaltnetz (und die boolesche Formel) für die Berechnung von
& = (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} \\ & = (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)) & \\ & \hspace{4mm} (a_2\overline{b}_2\vee\overline{a}_2b_2)) & \\
\cdots & & \cdots & &
\end{align*}\todo{Überprüfen, ob korrekt aufgeschrieben.} \end{align*}
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 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.
$\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}). 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)$.
$\Rightarrow$ konstanter Zeitaufwand $O(1)$
\textsf{\textbf{Hardwareaufwand des 4~Bit CLA-PA}} \newline \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 den Aufwand für die $c_{in_i}$-Berechnung gilt die Annahme, das Schaltnetz wäre eine Realisierung der \acs{DNF}.
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$. Für jedes $c_{in_i}$ gibt es insgesamt $2i$ Eingänge. \begin{itemize}[noitemsep]
\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.}
\end{itemize}
$\Rightarrow$ damit ist der Aufwand für $c_{in_i} = O(i\cdot4^i) = O(i\cdot2^i)$ 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)$
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$. 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. 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.
\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$)
\end{tabular}\todo{Vergleichen: Siehe Notizen, etc.} \end{tabular}
\todo{Vergleichen: Siehe Notizen, etc.}
Addierer für 32-Bit: Aufsplitten in acht 4-Bit-\acs{CLA-PA} \newpage % Für das Layout
\begin{figure}[h!] \textsf{\textbf{Kombination mehrerer kleinen \acsp{CLA-PA}}}
\centering
\includegraphics[width=13cm]{Bilder/casc_cla_pa.png} Der 32-Bit Addierer wird in acht 4-Bit-\acs{CLA-PA} gesplittet (siehe \autoref{fig:casc_cla_ca}).
\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$ hintereinander geschaltet nach RC-Prinzip \newline
$\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$ erträglicher Hardwareaufwand $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$ erträglicher Hardwareaufwand \newline
\begin{figure}[ht]
\centering
\begin{tikzpicture}[font=\sffamily,scale=1.3]
\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}}}
\def\cstart{{\pgfmathparse{(3-\a)*4}
\pgfmathprintnumber[
fixed,
fixed zerofill,
precision=0
]{\pgfmathresult}}}
\def\cend{{\pgfmathparse{(3-\a)*4+3}
\pgfmathprintnumber[
fixed,
fixed zerofill,
precision=0
]{\pgfmathresult}}}
\node[font=\small] at (\a*3 - 0.9,1.5) {$a_{\cend}$};
\draw (\a*3 - 0.9,1.2) -- (\a*3 - 0.9,0.5);
\node[font=\small] at (\a*3 - 0.5,1.5) {$b_\cend$};
\draw (\a*3 - 0.5,1.2) -- (\a*3 - 0.5,0.5);
\node[font=\small] at (\a*3 + 0.8,1.5) {$b_{\cstart}$};
\draw (\a*3 + 0.8,1.2) -- (\a*3 + 0.8,0.5);
\node[font=\small] at (\a*3 + 0.4,1.5) {$a_\cstart$};
\draw (\a*3 + 0.4,1.2) -- (\a*3 + 0.4,0.5);
\node[font=\small] at (\a*3,1.5) {\ldots};
\draw (\a*3,1.2) -- (\a*3,0.5);
\draw[black, thick] (-1 + \a*3,-1) rectangle (\a*3 + 1,0.5);
\ifnum\a<3
\draw (\a*3 + 0.95,1.1) -- (\a*3 + 0.95,0.5);
\draw (\a*3 + 0.95,1.1) -- (\a*3 + 1.25,1.1) -- (\a*3 + 1.5,-1.5)
-- (\a*3 + 2.5,-1.5) -- (\a*3 + 2.5,-1);
\node[font=\small\sffamily] at (\a*3, 0) {kaskadierbarer};
\node[font=\small\sffamily] at (\a*3, -0.4) {4~Bit~CLA-PA};
\fi
\ifnum\a>2
\node[font=\small\sffamily] at (\a*3, -0.2) {4~Bit~CLA-PA};
\fi
\node[font=\small] at (\a*3 - 0.35,-2) {$s_\cend$};
\draw (\a*3 - 0.35,-1.7) -- (\a*3 - 0.35,-1);
\node[font=\small] at (\a*3 + 0.8,-2) {$s_\cstart$};
\draw (\a*3 + 0.8,-1.7) -- (\a*3 + 0.8,-1);
\node[font=\small] at (\a*3 + 0.2,-2) {\ldots};
\draw (\a*3 + 0.2,-1.7) -- (\a*3 + 0.2,-1);
}
\node[font=\small] at (-0.9,-2) {$s_{16}$};
\node[font=\small\sffamily] at (-1.2,-2.5) {\enquote{Überlauf}};
\draw (-0.9,-1.7) -- (-0.9,-1);
\end{tikzpicture}
\caption{Kaskadierbarer 4-Bit-CLA-PA}
\label{fig:casc_cla_ca}
\end{figure}
\subsection{Serielladdierer} \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. \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!]
\centering \centering
@ -617,19 +688,23 @@ $\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})}: $n$ Taktzyklen $\Rightarrow$ $O(n)$ \textsf{\textbf{Zeitaufwand ($n$-Bit-SA})}
Ist dies wie beim \acs{RC-PA}? \newline Der Zeitaufwand für einen $n$-Bit-\acs{SA} beträgt $n$ Taktzyklen, also $O(n)$
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 \textit{Ist dies wie beim \acs{RC-PA}?} \newline
$\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})} \textsf{\textbf{Hardwareaufwand ($N$-Bit-SA})}
1 \acs{VA}: 18 Transistoren \newline \begin{tabular}{@{}l@{}l}
2 \acs{D-FF}. $2\cdot 6=12$ Transistoren. Siehe Grafik rechts: 1 \acs{VA}: & 18 Transistoren \\
3. $n$-Bit-\acs{SR}: Siehe Grafik links 2 \acs{D-FF}: $2\cdot 6=$ & $12$ Transistoren. (siehe Grafik rechts) \\
3 $n$-Bit-\acs{SR} & (siehe Grafik links)
\end{tabular}\todo{Checken}
Takterzeugung (im folgenden nicht näher betrachtet) Takterzeugung (im folgenden nicht näher betrachtet)
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
\includegraphics[width=15cm]{Bilder/Serielladdierer_2.png} \includegraphics[width=15cm]{Bilder/Serielladdierer_2.png}

View file

@ -38,20 +38,23 @@
%------- Sonstiges --------------------------------------------------- %------- Sonstiges ---------------------------------------------------
\chapter{Abkürzungsverzeichnis} \chapter{Abkürzungsverzeichnis}
\begin{acronym}[xxxxxx] \begin{acronym}[xxxxxxxx]
\acro{CLA-PA}{Carry-Look-Ahead-Paralleladdierer} \acro{CLA-PA}{Carry-Look-Ahead-Paralleladdierer}
\acro{CPU}{central processing unit} \acro{CPU}{central processing unit}
\acro{D-FF}{D-Flip-Flop} \acro{D-FF}{D-Flip-Flop}
\acro{DMF}{Disjunktive Minimalform} \acro{DMF}{Disjunktive Minimalform}
\acro{DNF}{Disjunktive Normalform} \acro{DNF}{Disjunktive Normalform}
\acro{ENIAC}{Electronic Numerical Integrator and Computer}
\acro{IC}{Integrated Circuit} \acro{IC}{Integrated Circuit}
\acro{GLZ}{Gatterlaufzeit} \acro{GLZ}{Gatterlaufzeit}
\acrodefplural{GLZ}[GLZs]{Gatterlaufzeiten} \acrodefplural{GLZ}[GLZs]{Gatterlaufzeiten}
\acro{HA}{Halbaddierer} \acro{HA}{Halbaddierer}
\acro{HW}{Hardware} \acro{HW}{Hardware}
\acro{PC}{Personal Computer}
\acro{RC-PA}{Ripple-Carry-Paralleladdierer} \acro{RC-PA}{Ripple-Carry-Paralleladdierer}
\acro{SA}{Serielladdierer} \acro{SA}{Serielladdierer}
\acro{SR}{Schieberegister} \acro{SR}{Schieberegister}
\acro{UNIVAC}{Universal Automatic Computer}
\acro{VA}{Volladdierer} \acro{VA}{Volladdierer}
\end{acronym} \end{acronym}