diff --git a/Kapitel/02_Rechner.tex b/Kapitel/02_Rechner.tex index 032580b..3985a8c 100644 --- a/Kapitel/02_Rechner.tex +++ b/Kapitel/02_Rechner.tex @@ -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 \\ @@ -492,17 +489,16 @@ Es wird der Zeitaufwand betrachtet, da Gatter Schaltzeiten haben, welche typisch \textit{Für den 4~Bit \acs{RC-PA} werden benötigt:} \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 \\ + 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. -\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 \\ diff --git a/Rechnerarchitektur_Roethig_Skript_AM.pdf b/Rechnerarchitektur_Roethig_Skript_AM.pdf index 0a1788c..6dfa646 100644 Binary files a/Rechnerarchitektur_Roethig_Skript_AM.pdf and b/Rechnerarchitektur_Roethig_Skript_AM.pdf differ