diff --git a/Kapitel/03_Rechenwerk.tex b/Kapitel/03_Rechenwerk.tex index eddba18..1bd0912 100644 --- a/Kapitel/03_Rechenwerk.tex +++ b/Kapitel/03_Rechenwerk.tex @@ -629,8 +629,8 @@ Es ist kein spezieller Hardware-Subtrahierer notwendig. Eine Subtraktion wird ü \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} + \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} @@ -665,7 +665,7 @@ Ein $n\times m$-Bit-\acf{PM}, bspw. ein $5\times 4$-Bit-\acl{PM} ist in \autoref \end{figure} \begin{Achtung}[frametitle={Hinweis zur Abbildung}] - Unbedingt auf die \enquote{0} als Eingang achten! Ansonsten gibt es in der Klausur punktabzug! + Unbedingt auf die \enquote{0} als Eingang achten! Ansonsten gibt es in der Klausur punktabzug! Bei unterschiedlicher Stellenanzahl sind Nullen aufzufüllen. \end{Achtung} \begin{Hinweis} @@ -680,25 +680,27 @@ Ein $n\times m$-Bit-\acf{PM}, bspw. ein $5\times 4$-Bit-\acl{PM} ist in \autoref \item $n\cdot m$ ~~ \code{UND} mit jeweils 2 Eingängen $\Rightarrow$ $2\cdot n\cdot m$ Transistoren \end{itemize} +\newpage % Nur für's Layout + \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)$ + \item[$\Rightarrow$] Insgesamt: ~~~ $20nm-18n-10m+10$ Transistoren $\Rightarrow O(nm)$ \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)$ + \item $n$-Bit-\acs{CLA-PA}: $\approx O(n\cdot 2^n)$ \textit{(Achtung: eigentlich $O(n^2\cdot 4^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. +Hier bei verschieden großen Faktoren also besser $m>n$ bei \ac{CLA-PA}) für einen geringeren \acs{HW}-Aufwand. -Demgegenüber bei Verwendung von \acs{RC-PA}: Besser $n>m$ für geringeren \acs{HW}-Aufwand. \todo{Besser umformulieren} +Demgegenüber sollte bei Verwendung von \acs{RC-PA} besser $n>m$ für geringeren \acs{HW}-Aufwand sein. \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}) @@ -707,34 +709,37 @@ Demgegenüber bei Verwendung von \acs{RC-PA}: Besser $n>m$ für geringeren \acs{ \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. + 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...} + Damit besser $n>m$ bei Verwendung von \acs{CLA-PA}, um geringeren Zeitaufwand zu bekommen + + \textcolor{red}{$\lightning$} zu großer \acs{HW}-Aufwand (wächst exponentiell mit $n$) +\end{enumerate} +\bigskip +\bigskip \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. + Den 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. +\subsection{Seriellmultiplizierer} \index{Seriellmultiplizierer} +Motivation: Wir wollen eine noch engere Anlehung an das schriftliche Multiplikationsverfahren, um den Aufwand für die Addierglieder gering zu halten. -Siehe \autoref{fig:seriellmultiplizierer}. +\autoref{fig:seriellmultiplizierer} zeigt einen 5-Bit-\acl{SM}. \begin{figure}[ht] \centering - \includegraphics[width=13cm]{Bilder/Seriellmultiplizierer.png} + \includegraphics[width=15cm]{Bilder/Seriellmultiplizierer.png} \caption{5-Bit Seriellmultiplizierer} \label{fig:seriellmultiplizierer} \end{figure} \bigskip \begin{Hinweis} - Vor dem ersten Takt müssen alle D-FF auf \code{0} gesetzt werden \newline + Vor dem ersten Takt müssen alle \acsp{D-FF} auf \code{0} gesetzt werden \newline (\enquote{Reset-Eingang} oder ähnliches) \end{Hinweis} @@ -746,7 +751,7 @@ Siehe \autoref{fig:seriellmultiplizierer}. \textbullet~ & $n$ \code{UND} mit jeweils 2 Eingängen & $\Rightarrow$ 2 Transistoren \\ \textbullet~ & $2n$ \acsp{D-FF} & $\Rightarrow$ $12n$ Transistoren \\ \textbullet~ & $2m$-Bit-\acs{SR} & $\Rightarrow$ $12m$ Transistoren \\ - \textbullet~ & \multicolumn{2}{l}{Takterzeugung (wird im folgenden nicht berücksichtigt)} + \textbullet~ & \multicolumn{2}{@{}l}{Takterzeugung (wird im folgenden nicht berücksichtigt)} \end{tabular} gesamt: $18n-10+2n+12n+12m=32n+12m-10$ Transistoren % stimmt so; verglichen mit 15er @@ -805,23 +810,24 @@ In \autoref{tbl:risc_cisc} werden \acs{RISC} und \acs{CISC} verglichen. \begin{tabular}{cp{7.55cm}|cp{7.55cm}} \multicolumn{2}{p{8.2cm}|}{\textbf{\acf{RISC}}} & \multicolumn{2}{p{8.2cm}}{\textbf{\acf{CISC}}} - \\ \midrule + \\[1.5ex] \midrule \multicolumn{2}{p{8.2cm}|}{für jeden Maschinensprachenbefehl gibt es eine \enquote{passende} Hardwareeinheit} & \multicolumn{2}{p{8.2cm}}{manche Maschinensprachenbefehle werden als Mikroprogramm ausgeführt} - \\ \midrule + \\[1.5ex] \midrule $\oplus$ & Einheit für Mikroprogrammausführung kann bei der Produktion entfallen \newline (CPU weniger komplex) - & $\oplus$ & komfortables Programmieren in Maschinensprache \\ + & $\oplus$ & komfortables Programmieren in Maschinensprache + \\[4.5ex] $\ominus$ & \acs{CPU} wird komplex, falls die Forderung nach komplexen Befehlen in Maschinensprache realisiert, besteht. & $\ominus$ & bei manchen Befehlen (welche als Mikroprogramm ausgeführt werden) ist die Bearbeitungszeit sehr groß und variabel. - \\ + \\[1.5ex] $\oplus$ & jeder Befehl kann in wenigen (und jeweils einer festen Zahl an) Taktzyklen ausgeführt werden. & $\ominus$ & Mikroprogramme sind Software, komplex und fehleranfällig, ggf. Austausch der \acs{CPU} für \enquote{Bugfix} notwendig (vgl. \href{https://de.wikipedia.org/wiki/Pentium-FDIV-Bug}{Intel Pentium FDIV Bug}) - \\ + \\[1.5ex] \end{tabular} \medskip \hspace*{-6mm} diff --git a/Kapitel/03_Speicher.tex b/Kapitel/03_Speicher.tex index f9f49e0..5b5664e 100644 --- a/Kapitel/03_Speicher.tex +++ b/Kapitel/03_Speicher.tex @@ -22,7 +22,7 @@ Motivation für Sekundärspeicher: nicht-flüchtig, \dash der Speicherinhalt ble \textbf{Anwendungen:} -\begin{itemize}[noitemsep] +\begin{itemize} \item Programmcode (Betriebsystem, Anwendungsprogramme) \item Nutzdaten \item virtuelle Erweiterung des Speicherwerks (Swap-Datei/-Partition) @@ -33,6 +33,8 @@ Motivation für Sekundärspeicher: nicht-flüchtig, \dash der Speicherinhalt ble Temporärer, flüchtiger, schneller Zwischenspeicher, um auf Informationen aus dem Hauptspeicher schneller zugreifen zu können. +\newpage % Für's Layout + Eigenschaften des Cache: \begin{itemize}[noitemsep] \item flüchtig @@ -52,7 +54,7 @@ Eigenschaften des Cache: Verantwortlich dafür, dass der Cache Geschwindigkeitsvorteile bringen kann. \begin{description} \item[räumliche Lokalität] Wenn auf eine Adresse zugegriffen wird, wird auch auf naheliegende Adressen zugegriffen. - \item[zeitlich Lokalität] Die Zugriffe (auf nahe beieinanderliegene Adressen) erfolgen in relativ geringem zeitlichen Aufwand + \item[zeitliche Lokalität] Die Zugriffe (auf nahe beieinanderliegende Adressen) erfolgen in relativ geringem zeitlichen Aufwand \end{description} \medskip \begin{Hinweis} @@ -83,14 +85,13 @@ Verantwortlich dafür, dass der Cache Geschwindigkeitsvorteile bringen kann. \switchcolumn \begin{tabular}{ll} \textbf{Ziel}: & Hit-Rate $\rightarrow 1$ (nicht realistisch) \\ - & Hit-Rate $\rightarrow 0$ \\ + & Miss-Rate $\rightarrow 0$ \\ & Hit-Rate $\rightarrow$ systembedingtes Maximum \\ & \qquad (realistisch) \end{tabular} \end{paracol} - -systembedingtes Maximum hängt ab von +Das systembedingte Maximum hängt ab von: \begin{itemize}[noitemsep] \item Lokalität des Zugriffsmusters \item Größe (und Größenverhältnis) von Cache und \acl{HS} @@ -105,7 +106,7 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be \begin{description} \item[kalter Cache]\index{Cache!kalter Cache} bei Betriebsbeginn ist der Cache leer \item[sich erwärmender Cache]\index{Cache!erwärmender Cache} Während des Betriebs wird der Cache mit immer mehr Daten geladen und die Hit-Rate steigt. - \item[heißer Cache]\index{Cache!heißer Cache} Der Cache ist (nahezu) voll nach einer gewissen Betriebszeit. Die Hit-Rate erreicht das systembedingte Maximum. + \item[heißer Cache]\index{Cache!heißer Cache} Der Cache ist nach einer gewissen Betriebszeit (nahezu) voll. Die Hit-Rate erreicht das systembedingte Maximum. \end{description} \subsection{Cachearchitekturen}\index{Cache!Architektur} @@ -154,7 +155,7 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be Wie in \autoref{fig:cpu_cache_look_through} zu sehen, ist die CPU nur mit dem Cache und der \acl{HS} ebenfalls nur mit dem Cache verbunden. - CPU greift über den Cache auf den \acl{HS} zu: + Die \acs{CPU} greift über den Cache auf den \acl{HS} zu: \begin{itemize}[leftmargin=5mm] \item[$\ominus$] $t_\text{Miss}=t_\text{Cache}+t_\text{HS}$ \newline @@ -191,7 +192,7 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be \switchcolumn \textsf{\textbf{Write-Through}} - Schreibzugriffe durch die \acs{CPU} findet im \acl{HS} statt. Parallel dazu müssen die Daten im Cache invalidiert (schlecht) oder ebenfalls geschrieben werden (gut). + Schreibzugriff durch die \acs{CPU} findet im \acl{HS} statt. Parallel dazu müssen die Daten im Cache invalidiert (schlecht) oder ebenfalls geschrieben werden (gut). \begin{itemize}[leftmargin=5mm] \item[$\oplus$] optimale Konsistenz der Daten \item[$\ominus$] Schreiben nur in \acl{HS}-Geschwindigkeit möglich @@ -205,13 +206,13 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be \midrule \textbf{Look-Through} - & $\oplus$ gute klassische Kombination, da die physische Gegebenheit vorhanden sind, um direktes Schreiben in Cache und Rückschreiben vom Cache in \acs{HS} zu ermöglichen + & $\oplus$ gute klassische Kombination, da die physische Gegebenheit vorhanden ist, um direktes Schreiben in Cache und Rückschreiben vom Cache in \acs{HS} zu ermöglichen & $\ominus$ Kombination nicht möglich, da kein direkter Zugriff der \acs{CPU} auf \acs{HS} physisch gegeben ist. \\ \midrule \textbf{Look-Aside} & $\ominus$ schlechte Kombination, da bei jedem Schreibzugriff der Bus zweimal belastet wird - & $\oplus$ gute klassische Kombination, da Schreibzugriffe parallel im \acs{HS} und Cache physisch gut machbar + & $\oplus$ gute klassische Kombination, da Schreibzugriffe parallel im \acs{HS} und Cache physisch gut machbar sind \end{tabular} \subsection{Cache-Aufbau} @@ -224,24 +225,25 @@ $\Rightarrow$ sobald das Zugriffsmuster Lokalität aufweist, ergibt sich eine be \end{figure} \begin{description} - \item[\acf{HSS}] gleich große Speicheranteile des Hauptspeichers. Eine \acs{HSS} sollte $2^m$ \acs{HSA} beinhalten, um eine einfache Umrechung von \acs{HSS}-Nummern und \acs{HSA} zu ermöglichen. + \item[\acf{HSS}] gleich große Speicheranteile des Hauptspeichers. Eine \acs{HSS} sollte $2^m$ \acfp{HSA} beinhalten, um eine einfache Umrechung von \acs{HSS}-Nummern und \acs{HSA} zu ermöglichen. \item[\acf{CL}] Kopie einer \acl{HSS} im Cache \item[Tag] Die um $m$ niederwertigsten Bit gekürzte \acs{HSA}, welche der \acs{HSS}-Nummer entspricht. \item[Status] Zustandsinfo zur Cache-Line, \zB Valid-Flag und weiter Zustandsinfos abhängig von Verdrängungsstrategie \item[Valid-Flag] Die Daten werden im Cache geändert und müssen noch in den \acs{HS} zurückgeschrieben werden (nur bei Write-Back-Schreibstrategie) \end{description} -\subsection{vollassoziativer Cache} +\subsection{Vollassoziativer Cache} Jede \acl{HSS} kann in jeder \acl{CL} eingelagert werden (nicht gleichzeitig!) -\begin{itemize}[noitemsep] + +\begin{itemize} \item[$\Rightarrow$] bei jedem Zugriff auf eine \acf{HSA} muss überprüft werden, ob die gekürzte \acs{HSA} einem der Tags von validen \acl{CL} entspricht! - \item[$\Rightarrow$] Vergleichen der gekkürzten \acs{HSA} mit allen Tags (von validen \acs{CL}) + \item[$\Rightarrow$] Vergleichen der gekürzten \acs{HSA} mit allen Tags (von validen \acs{CL}) \end{itemize} Wie kann verglichen werden? Welche Möglichkeiten des Vergleichs gibt es? -\begin{itemize}[noitemsep] - \item sequentiell $\Rightarrow$ Nachteil: erhöhte Zugriffszeit +\begin{itemize} + \item Sequentiell $\Rightarrow$ Nachteil: erhöhte Zugriffszeit \item Parallel $\Rightarrow$ gleichzeitiges Vergleichen der angelegten (gekürzten) \acs{HSA} mit allen Tags über jeweils einen eigenen Komparator in jeder \acs{CL}. \newline Nachteil: \acl{HW}-Aufwand für Komparator in jeder \acs{CL}. \end{itemize} @@ -305,7 +307,7 @@ Somit ergibt sich als Schaltnetz für einen 4-Bit-Komparator die \autoref{fig:n_ \acs{HW}-Aufwand für einen kaskadierbaren 1-Bit-Komparator \begin{itemize}[noitemsep] \item[] HW: 42 Transistoren - \item[] Zeit: 2\acs{GLZ} + \item[] Zeit: 2 \acs{GLZ} \end{itemize} @@ -314,7 +316,7 @@ Im Cache reicht der Vergleich auf Gleichheit aller Ziffern parallel: \begin{itemize}[noitemsep] \item 2 $n$-Bit-Zahlen: $n$ Äquivalenzgatter und 1 \code{UND} mit $n$ Eingängen. (vergleiche \autoref{fig:cache_komparator_3}) - $\Rightarrow$ 7n Transistoren HW-Aufwand + $\Rightarrow$ $7n$ Transistoren HW-Aufwand - $\Rightarrow$ 3\acs{GLZ} Zeitaufwand + $\Rightarrow$ 3 \acs{GLZ} Zeitaufwand \end{itemize}\todo{Formatieren, etc} diff --git a/Rechnerarchitektur_Roethig_Skript_AM.pdf b/Rechnerarchitektur_Roethig_Skript_AM.pdf index be16e69..250dccd 100644 Binary files a/Rechnerarchitektur_Roethig_Skript_AM.pdf and b/Rechnerarchitektur_Roethig_Skript_AM.pdf differ diff --git a/Rechnerarchitektur_Roethig_Skript_AM.tex b/Rechnerarchitektur_Roethig_Skript_AM.tex index bd83fe4..7c3e814 100644 --- a/Rechnerarchitektur_Roethig_Skript_AM.tex +++ b/Rechnerarchitektur_Roethig_Skript_AM.tex @@ -56,6 +56,7 @@ \acro{HA}{Halbaddierer} \acro{HS}{Hauptspeicher} \acro{HSA}{Hauptspeicheradresse} + \acrodefplural{HSA}[HSA]{Hauptspeicheradressen} \acro{HSS}{Hauptspeicherseite} \acro{HW}{Hardware} \acro{LW}{Laufwerk} @@ -65,6 +66,7 @@ \acro{RC-PA}{Ripple-Carry-Paralleladdierer} \acro{RISC}{Reduced Instruction Set Computer} \acro{SA}{Serielladdierer} + \acro{SM}{Seriellmultiplizierer} \acro{SR}{Schieberegister} \acro{UNIVAC}{Universal Automatic Computer} \acro{VA}{Volladdierer}