diff --git a/Bilder/Parallelmultiplizierer.png b/Bilder/Parallelmultiplizierer.png new file mode 100644 index 0000000..4021147 Binary files /dev/null and b/Bilder/Parallelmultiplizierer.png differ diff --git a/Bilder/Serielladdierer_3.png b/Bilder/Serielladdierer_3.png new file mode 100644 index 0000000..915c08f Binary files /dev/null and b/Bilder/Serielladdierer_3.png differ diff --git a/Bilder/Seriellmultiplizierer.png b/Bilder/Seriellmultiplizierer.png new file mode 100644 index 0000000..cff9316 Binary files /dev/null and b/Bilder/Seriellmultiplizierer.png differ diff --git a/Bilder/Subtrahierer.png b/Bilder/Subtrahierer.png new file mode 100644 index 0000000..f0fa35f Binary files /dev/null and b/Bilder/Subtrahierer.png differ diff --git a/Kapitel/02_Rechner.tex b/Kapitel/02_Rechner.tex index b4912f1..6dcc481 100644 --- a/Kapitel/02_Rechner.tex +++ b/Kapitel/02_Rechner.tex @@ -605,7 +605,6 @@ Beim Wechsel von $32$-Bit auf 64-Bit-\acs{CLA-PA} wäre der 16~Trillionen-fache \end{tabular} \todo{Vergleichen: Siehe Notizen, etc.} -\newpage % Für das Layout \subsection{Kombination mehrerer kleinen \acsp{CLA-PA}} @@ -680,6 +679,7 @@ $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$ \label{fig:casc_cla_ca} \end{figure} +\newpage % Für das Layout \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. @@ -696,17 +696,20 @@ $\Rightarrow$ damit ist das $n$ der nicht-\acs{CLA-PA} noch klein $\Rightarrow$ 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} +Jein, denn $1$ Taktzyklus dauert 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} \subsection{Hardwareaufwand ($N$-Bit-SA)} \begin{tabular}{@{}l@{}l} - 1 \acs{VA}: & 18 Transistoren \\ - 2 \acs{D-FF}: $2\cdot 6=$ & $12$ Transistoren. (siehe Grafik rechts) \\ - 3 $n$-Bit-\acs{SR} & (siehe Grafik links) -\end{tabular}\todo{Checken} + 1 \acs{VA} & $=18$ Transistoren \\ + 2 \acs{D-FF} = $2\cdot 6$ & $=12$ Transistoren. \textit{(siehe \autoref{fig:serielladdierer_2} rechts)} \\ + 3 $n$-Bit-\acs{SR} & $=4\cdot 6n = 18n$ Transistoren \textit{(siehe \autoref{fig:serielladdierer_2} links)} \\ + Takterzeugung~~ & \textit{(im folgenden nicht näher betrachtet)} \\ + gesamt & $18n+30$ Transistoren +\end{tabular} + +Zum Vergleich: \acs{RC-PA}: $18n-10$, \dash der \acs{SA} braucht 40 Transistoren mehr (bei längerer Bearbeitungszeit)! -Takterzeugung (im folgenden nicht näher betrachtet) \begin{figure}[h!] \centering @@ -716,5 +719,228 @@ Takterzeugung (im folgenden nicht näher betrachtet) \end{figure} \begin{Achtung} - Die Takterzeugung muss in der Klausur für den \acl{SA} auf jeden Fall genannt werden, auch wenn er hier nicht weiter betrachtet wird! + Die Takterzeugung muss in der Klausur für den \acl{SA} auf jeden Fall genannt werden, auch wenn sie hier nicht weiter betrachtet wird! \end{Achtung} + + +\subsection{Hardwareoptimierung des Serielladdierers} + +\begin{figure}[ht] + \centering + \includegraphics[width=12cm]{Bilder/Serielladdierer_3.png} + \caption{Serielladdierer mit Hardwareoptimierung} + \label{fig:serielladdierer_hw_optimierung} +\end{figure} + +Wie in \autoref{fig:serielladdierer_hw_optimierung} zu sehen ist, wird ein Schieberegister weniger benötigt $\Rightarrow 12n+36$ Transistoren + +\subsubsection{Vergleich eines RC-PA mit dem verbesserten SA} +\begin{table} + \centering + \begin{tabular}{c|c|c} + n & \acs{RC-PA} (18n – 10) & \acs{SA} (12n +36) \\ \midrule + 1 & 8 & 48 \\ + 2 & 26 & 60 \\ + 3 & 44 & 72 \\ + 4 & 62 & 84 + \end{tabular} + \caption{Vergleich von Hardwareaufwand eines \acs{RC-PA} mit dem verbesserten \acs{SA}} + \label{tbl:vergleich_rcpa_sa} +\end{table} + +Tabelle \autoref{tbl:vergleich_rcpa_sa} vergleicht einen \acs{RC-PA} mit dem verbesserten \acs{SA}. + +Break-Even (\enquote{\textit{Gewinnschwelle}}): $18n -10 = 12n + 36 \Rightarrow 46 = 6n \Rightarrow n = 7\frac{2}{3} $ \newline +\hspace*{5mm} $\Rightarrow$ Ab 8-Bit lohnt sich der \acs{SA} + +\textbf{Mögliche Anwendung eines \acl{SA}}: +\begin{itemize}[noitemsep] + \item nicht im Rechenwerk der \acs{CPU} (aufgrund der Geschwindigkeit)! + \item aber möglicherweise in \enquote{Embedded System}, falls \zB Sensordaten sowieso seriell angeliefert werden + \item[$\Rightarrow$] eventuell sind sogar weitere Hardware-Einsparungen möglich! +\end{itemize} + + +\section{Subtraktion} +Es ist kein spezieller Hardware-Subtrahierer notwendig. Eine Subtraktion wird über die Addition des 2er-Komplements realisiert: + +\begin{enumerate}[noitemsep] + \item Bits invertieren (Inverter) + \item $+1$ addieren (Addierer) +\end{enumerate} + +\begin{figure}[ht] + \centering + \includegraphics[width=13cm]{Bilder/Subtrahierer.png} + \caption{Schaltnetz Subtrahierer} + \label{fig:subtraktion} +\end{figure} + +\newpage % Nur für's Layout + +\section{Multiplikation} + +\columnratio{0.17} +\begin{paracol}{2} + \begin{tabular}{c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}} + 4 & 7 & 1 & 1 & $\times$ & 8 & 1 & 5 \\ \midrule + & \textit{\small 3} & \textit{\small 5} & & & & & \\ + & 6 & 7 & 6 & 8 & 8 & & \\ + & & & 4 & 7 & 1 & 1 & \\ + & & & \textit{\small 2} & \textit{\small 3} & & & \\ + & & & 2 & 3 & 5 & 5 & 5 \\ \midrule + & 3 & 8 & 3 & 9 & 4 & 6 & 5 + \end{tabular} + \switchcolumn + \textbf{\textsf{Mögliche Probleme / Schwierigkeiten}} + \begin{enumerate}[noitemsep] + \item kleines $1\times 1$ ist ein wenig Lernaufwand + \item Überträge beim kleinen $1\times 1$ sind möglich + \item Addition von mehr als zwei Ziffern gleichzeitig + \item mehrstellige Überträge bei der Summenbildung möglich + \item \label{lst:item:zwischensumme_stellen} für jede Zwischensumme muss der Addierer eine Stelle mehr verarbeiten + \end{enumerate} +\end{paracol} + +\autoref{lst:item:zwischensumme_stellen} wird deutlich durch eine Multiplikation einer 6- und 4-stelligen Zahl im Binärsystem \enquote{von links nach rechts}, wie sie in \autoref{tbl:multi_lr} dargestellt wird. +\begin{table}[ht] + \centering + \begin{tabular}{c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}l} + 1 & 0 & 1 & 0 & 1 & 0 & $\times$ & 1 & 0 & 1 & 0 & \quad ($42\times 10$) \\ \midrule + & & 1 & 0 & 1 & 0 & 1 & 0 & & & & \\ + & & & 0 & 0 & 0 & 0 & 0 & 0 & & & \quad \textit{7-stellige Addition} \\ \midrule + & & 1 & 0 & 1 & 0 & 1 & 0 & 0 & & & \quad \textit{Zwischensumme} \\ + & & & & 1 & 0 & 1 & 0 & 1 & 0 & & \quad \textit{8-stellige Addition} \\ \midrule + & & 1 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & & \quad \textit{Zwischensumme} \\ + & & & & & 0 & 0 & 0 & 0 & 0 & 0 & \quad \textit{9-stellige Addition} \\ \midrule + & & 1 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 0 & \quad \textit{10-stelliges Ergebnis} + \end{tabular} + \caption{Schriftliche Multiplikation \enquote{von links nach rechts}} + \label{tbl:multi_lr} +\end{table} + +\columnratio{0.17} +\begin{paracol}{2} + \bigskip + \begin{center} + \begin{tabular}{cc|c} + b & a & ab \\ + \midrule + 0 & 0 & 0 \\ + 0 & 1 & 0 \\ + 1 & 0 & 0 \\ + 1 & 1 & 1 + \end{tabular} + \end{center} + \switchcolumn + \textbf{\textsf{Abhilfe}} + \begin{enumerate}[noitemsep] + \item Kleines $1\times 1$ im Binärsystem ist ein einfaches \code{UND} + \item Es gibt keine Überträge beim kleinen $1\times 1$ im Binärsystem + \item Bilden von Zwischensummen + \item keine mehrstelligen Überträge bei Addition von zwei Summanden + \item rechten Faktor beginnend mit niederwertigster Stelle abarbeiten, siehe \autoref{tbl:multi_rl} + \end{enumerate} +\end{paracol} + +\begin{table}[ht] + \centering + \begin{tabular}{c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + 1 & 0 & 1 & 0 & 1 & 0 & $\times$ & 1 & 0 & 1 & 0 & ($42\times 10$) \\ \midrule + & & & & & 0 & 0 & 0 & 0 & 0 & \textcolor{purple}{\textbf{0}} & \\ + & & & & 1 & 0 & 1 & 0 & 1 & 0 & \textcolor{purple}{$p_0$} & \\ \midrule + & & & & 1 & 0 & 1 & 0 & 1 & \textcolor{OliveGreen}{\textbf{0}} & & \\ + & & & 0 & 0 & 0 & 0 & 0 & 0 & \textcolor{OliveGreen}{$p_1$} & & \\ \midrule + & & & 0 & 1 & 0 & 1 & 0 & \textcolor{BrickRed}{\textbf{1}} & & & \\ + & & 1 & 0 & 1 & 0 & 1 & 0 & \textcolor{BrickRed}{$p_2$} & & & \\ \midrule + & \textcolor{blue}{0} & \textcolor{blue}{1} & \textcolor{blue}{1} & \textcolor{blue}{0} & \textcolor{blue}{1} & \textcolor{blue}{0} & \textcolor{blue}{0} & & & & \\ + & \textcolor{blue}{$p_9$} & \textcolor{blue}{$p_8$} & \textcolor{blue}{$p_7$} & \textcolor{blue}{$p_6$} & \textcolor{blue}{$p_5$} & \textcolor{blue}{$p_4$} & \textcolor{blue}{$p_3$} & & & & + \end{tabular} + \caption{Schriftliche Multiplikation \enquote{von rechts nach links}} + \label{tbl:multi_rl} +\end{table} + +\newpage % Nur für's Layout + +\subsection{Multiplikation mit Paralleladdierer} + +Ein $n\times m$-Bit-\acf{PM}, bspw. ein $5\times 4$-Bit-\acl{PM} ist in \autoref{fig:parallelmultiplizierer} dargestellt. + +\begin{figure}[ht] + \centering + \includegraphics[width=13cm]{Bilder/Parallelmultiplizierer.png} + \caption{5-Bit Parallelmultiplizierer} + \label{fig:parallelmultiplizierer} +\end{figure} + +\begin{Achtung}[frametitle={Hinweis zur Abbildung}] + Unbedingt auf die \enquote{0} als Eingang achten! Ansonsten gibt es in der Klausur punktabzug! +\end{Achtung} + +\begin{Hinweis} + In der Klausur muss evtl. ein 4-Bit \acl{PM} gezeichnet werden, also nicht mit 5 oder 6~Bit. +\end{Hinweis} + +\subsubsection{Analyse: Hardwareaufwand für die Multiplikation mit Paralleladdierer} +\textit{Benötigt werden}: + +\begin{itemize}[noitemsep] + \item $m-1$ ~ $n$-Bit-\acs{PA} + \item $n\cdot m$ ~~ \code{UND} mit jeweils 2 Eingängen $\Rightarrow$ $2\cdot n\cdot m$ Transistoren +\end{itemize} + +\textit{Somit ergibt sich bei\ldots} +\begin{enumerate}%[leftmargin=0pt] + \item[\ldots] Verwendung eines \textbf{\acs{RC-PA}}: + \begin{itemize}[noitemsep] + \item[$\Rightarrow$] $n$-Bit-\acs{RC-PA}: ~ $18n-10$ Transistoren + \item[$\Rightarrow$] davon $m-1$: $(m-1)(18n-10)$ Transistoren = $18nm-18n-10m+10$ Transistoren + \item[$\Rightarrow$] Insgesamt: ~~~ $20nm-18n-10m+10$ Transistoren $\Rightarrow O(n)$ + \end{itemize} + + \item[\ldots] Verwendung eines \textbf{\acs{CLA-PA}} + \begin{itemize}[noitemsep] + \item $n$-Bit-\acs{CLA-PA}: $\approx O(n\cdot 2^n)$ + \item $\Rightarrow$ davon $m-1$: ~ $(m-1)\cdot O(n\cdot 2^n) = O(n\cdot m\cdot 2^n)$ + \end{itemize} +\end{enumerate} + +Hier bei verschieden großen Faktoren also besser $m>n$ bei \ac{CLA-PA}) für geringeren \acs{HW}-Aufwand. + +Demgegenüber bei Verwendung von \acs{RC-PA}: Besser $n>m$ für geringeren \acs{HW}-Aufwand. \todo{Besser umformulieren} + +\subsubsection{Analyse: Zeitaufwand für die Multiplikation mit Paralleladdierer} +1 \acs{GLZ} für einstellige Multiplikation (\code{UND}-Gatter) sowie $(m-1)~\times$ Berechnungszeit($n$-Bit-\acs{PA}) + +\begin{enumerate} + \item Annahme: \acs{PA} sind $n$-Bit-\acs{RC-PA}. \newline + Berechnungszeit eines $n$-Bit-\acs{RC-PA}: $2n$ \acs{GLZ} \newline + Insgesamt: $1+(m-1)\cdot 2n=2nm-2n+1$ \acs{GLZ} \newline + Damit besser $n>m$ bei Verwendung von \acs{RC-PA} um geringeren Zeitaufwand zu bekommen. + + \item Annahme: \acs{PA} sind $n$-Bit-\acs{CLA-PA} \newline + Berechnungszeit eines $n$-Bit-\acs{CLA-PA}: $6$ \acs{GLZ} \newline + Insgesamt: $1 + (m-1)\cdot 6$ \acs{GLZ} $=6m-5$ \acs{GLZ} $=O(m)$ \newline + damit: besser $n>m$ bei Verwendung von \acs{CLA-PA}, um geringeren Zeitaufwand zu bekommen \newline + $\lightning$ zu großer \acs{HW}-Aufwand (wächst exponentiell mit $n$) +\end{enumerate}\todo{Kontrollieren...} + +\begin{Hinweis}[frametitle={Hinweis für die Klausur}] + Logarithmischen Aufwand für \acs{CLA-PA} auf \href{https://de.wikipedia.org/wiki/Paralleladdierer_mit_\%C3\%9Cbertragsvorausberechnung}{Wikipedia} nachschauen. Dies wird wahrscheinlich in der Klausur abgefragt! Unserer Variante hat exponentiellen Hardwareaufwand und konstanten Zeitaufwand. Die Variante auf \href{https://de.wikipedia.org/wiki/Paralleladdierer_mit_\%C3\%9Cbertragsvorausberechnung}{Wikipedia} nicht. +\end{Hinweis} + +\subsection{Seriellmultiplizierer} +Motivation: Noch engere Anlehung an das schriftliche Multiplikationsverfahren, um den Aufwand für die Addierglieder gering zu halten. + +Siehe \autoref{fig:seriellmultiplizierer}. + +\begin{figure}[ht] + \centering + \includegraphics[width=13cm]{Bilder/Seriellmultiplizierer.png} + \caption{5-Bit Seriellmultiplizierer} + \label{fig:seriellmultiplizierer} +\end{figure} + +\begin{Hinweis} + Vor dem ersten Takt müssen alle D-FF auf \code{0} gesetzt werden (\enquote{Reset-Eingang} oder ähnliches) +\end{Hinweis} diff --git a/Rechnerarchitektur_Roethig_Skript_AM.tex b/Rechnerarchitektur_Roethig_Skript_AM.tex index d95b2ed..aa91ccf 100644 --- a/Rechnerarchitektur_Roethig_Skript_AM.tex +++ b/Rechnerarchitektur_Roethig_Skript_AM.tex @@ -51,6 +51,8 @@ \acro{HA}{Halbaddierer} \acro{HW}{Hardware} \acro{PC}{Personal Computer} + \acro{PA}{Paralleladdierer} + \acro{PM}{Parallelmultiplizierer} \acro{RC-PA}{Ripple-Carry-Paralleladdierer} \acro{SA}{Serielladdierer} \acro{SR}{Schieberegister}