[Kapitel] Neueste Inhalte ergänzt

This commit is contained in:
Andre Meyering 2017-11-13 12:39:02 +01:00
parent ad63027f67
commit af23c0e576
Signed by: Andre
GPG key ID: 5A1BBB0FB1D4716B
2 changed files with 182 additions and 2 deletions

View file

@ -941,6 +941,180 @@ Siehe \autoref{fig:seriellmultiplizierer}.
\label{fig:seriellmultiplizierer} \label{fig:seriellmultiplizierer}
\end{figure} \end{figure}
\bigskip
\begin{Hinweis} \begin{Hinweis}
Vor dem ersten Takt müssen alle D-FF auf \code{0} gesetzt werden (\enquote{Reset-Eingang} oder ähnliches) Vor dem ersten Takt müssen alle D-FF auf \code{0} gesetzt werden \newline
(\enquote{Reset-Eingang} oder ähnliches)
\end{Hinweis} \end{Hinweis}
\subsubsection{Analyse: Hardwareaufwand für $n\times m$-Seriellmultiplizierer}
\textit{Benötigt werden:}
\begin{tabular}{c@{}ll}
\textbullet~ & $n$-Bit-\acs{PA} $\Rightarrow$ $n$-Bit-\acs{RC-PA} & $\Rightarrow$ $18n-10$ Transistoren \\
\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)}
\end{tabular}
gesamt: $18n-10+2n+12n+12m=32n+12m-10$ Transistoren % stimmt so; verglichen mit 15er
\qquad $\Rightarrow$ $O(n+m)$
\subsubsection{Analyse: Zeitaufwand für $n\times m$-Seriellmultiplizierer mit RC-PA}
Zeitaufwand: $m$ Taktzyklen
Mindestdauer eines halben Taktzyklus: Berechnungszeit \enquote{innen}
\begin{tabular}{rl}
$\frac{1}{2}$ Taktzyklus & $\gtrsim$ Auslesezeit(\acs{SR}) + \code{UND} + $n$-Bit-\acs{PA} + Einlesezeit(\acs{SR}) \\
& $= 1+1+2n+1=2n+3$ \acs{GLZ} \\
$\Rightarrow$ 1 Taktzyklus & $\gtrsim$ $4n+6$ \acs{GLZ} \\
gesamt: & $\gtrsim m\cdot(4n+6)=4mn+6m=O(nm)$
\end{tabular}\todo{Kontrollieren}
\section{Division} \index{Division}
\columnratio{0.24}
\begin{paracol}{2}
\begin{tabular}{c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}}
4 & 7 & 1 & 1 & $:$ & 1 & 3 & $=0362,\ldots$ \\
0 & & & & & & & \\ \cline{1-2}
4 & 7 & & & & & & \\
3 & 9 & & & & & & \\ \cline{1-3}
& 8 & 1 & & & & & \\
& 7 & 8 & & & & & \\ \cline{1-4}
& & 3 & 1 & & & & \\
& & 2 & 6 & & & & \\ \cline{3-4}
& & & 5 & & & &
\end{tabular}
\switchcolumn
Die Division wird runter gebrochen auf mehrere Divisionen mit einstelligen Ergebnissen.
Dies ist recht komplex bei einem großem Divisor. Aber im Binärsystem ist es ein einfacher Größenvergleich, da das einstellige Ergebnis nur \code{1} oder \code{0} sein kann. \newline
(besser wäre Integration in anschließend notwendiger Subtraktion)
Trotzdem bleiben einige Schritte zu tun, was aufwändig ist. In heutigen \acsp{CPU} ist deshalb (meist) kein Hardware-Dividierer eingebaut.
\end{paracol}
\begin{tabular}{rp{13.5cm}}
\textit{Grund}: & Die Division wird deutlich seltener als Addition, Subtraktion und Multiplikation gebraucht. \\
\textit{Stattdessen}: & Division \enquote{in Software}/\enquote{als Programm}, \zB als Bibliotheksroutine (\enquote{Funktion}), evtl. bereitgestellt vom Betriebssystem oder als Mikroprogramm, welches Bestandteil der \acs{CPU} ist und aufgerufen wird, wenn ein entsprechender Maschinensprachenbefehl ausgeführt werden soll.
\end{tabular}
\section{CPUs} \index{RISC} \index{CISC}
In \autoref{tbl:risc_cisc} werden \acs{RISC} und \acs{CISC} verglichen.
\begin{table}[ht]
\centering
\hspace*{-6mm}
\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
\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
$\oplus$ & Einheit für Mikroprogrammausführung kann bei der Produktion entfallen \newline
(CPU weniger komplex)
& $\oplus$ & komfortables Programmieren in Maschinensprache \\
$\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.
\\
$\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})
\\
\end{tabular}
\medskip
\hspace*{-6mm}
\begin{tabular}{p{8.2cm}|p{8.2cm}}
\multicolumn{2}{c}{\textbf{Einsatz}} \\ \midrule
PowerPC-\acs{CPU} in Apple-Rechnern bis vor 10 Jahren
& Intel-\acsp{CPU} in heutigen Universalrechnern (und AMD-Äquivalent)
\\
oft in \enquote{embedded systems} (Bsp. ARM)
\end{tabular}
\caption{Vergleich von RISC und CISC}
\label{tbl:risc_cisc}
\end{table}
\section{Speicher in Computern} \index{Speicher}
\subsection{Speicherhierarchie}
\autoref{tbl:speicherhierarchie} zeigt die Speicherhierarchie in modernen Universalrechnern
\begin{table}[ht]
\centering
\begin{tabular}{p{29mm}|p{36mm}|p{17mm}|p{34mm}|p{23mm}}
Speicher & von-Neumann-Rechner & Persistenz & Größe & Zugriffszeit \\ \midrule
\acs{CPU}-Register & Zentraleinheit (Rechen- und Steuerwerk) & flüchtig & $<1kB$ Byte & $\approx$ 200ps \\ \midrule
Cache \newline (\enquote{CPU-Cache}) & nicht vorhanden & flüchtig & \circa{4}MB \newline L1$\approx$64KB \newline L2$\approx$512KB & $\approx$ 10ns \\ \midrule
Hauptspeicher/ Primärspeicher & Speicherwerk & flüchtig & \circa{8}GB & $\approx$ 100ns \newline L1 schneller \\ \midrule
Sekundärspeicher & Peripheriegeräte an Ein- und Ausgabewerk & nicht flüchtig & HDD: 3T \newline SSD: 512GB \newline opt.~\acs{LW}: bis~100GB \newline \acs{BLW}: wenige TB & HDD~$\approx10ms$ \newline SSD~$\approx 10\mu s$\newline opt.~\acs{LW}~$\approx 1s$ \newline \acs{BLW}~$\approx 1min$
\end{tabular}
\caption{Speicherhierarchie und -Daten}
\label{tbl:speicherhierarchie}
\end{table}
\subsection{Sekundärspeicher}
Motivation für Sekundärspeicher: nicht-flüchtig, \dash der Speicherinhalt bleibt auch bei Stromausfall erhalten.
\textbf{Anwendungen:}
\begin{itemize}[noitemsep]
\item Programmcode (Betriebsystem, Anwendungsprogramme)
\item Nutzdaten
\item virtuelle Erweiterung des Speicherwerks (Swap-Datei/-Partition)
\item Hibernation (\enquote{Ruhezustand})
\end{itemize}
\subsection{CPU-Cache}
\begin{figure}[ht]
\centering
\begin{tikzpicture}
% CPU
\draw (-3, -0.5) rectangle ++(6,1);
\node at (0, 0) (SW) {Speicherwerk};
\draw (-2.5, 1.5) rectangle ++(5,1);
\node at (0, 2) (Ca) {CPU-Cache};
\draw (-2, 3.5) rectangle ++(4,1);
\node at (0, 4) (CPU) {Zentraleinheit (CPU)};
\draw ($(CPU)+(0,-0.5)$) -- ($(Ca)+(0,0.5)$) ($(Ca)+(0,-0.5)$) -- ($(SW)+(0,0.5)$);
\end{tikzpicture}
\caption{...}
\label{fig:cpu_cache}
\end{figure}
Temporärer, flüchtiger, schneller Zwischenspeicher, um auf Informationen aus dem Hauptspeicher schneller zugreifen zu können.
Eigenschaften des Cache:
\begin{itemize}[noitemsep]
\item flüchtig
\item kleiner als das zu cachende Medium (Hauptspeicher)
\item schneller als das zu cachende Medium (Hauptspeicher)
\item transparent, \dash es wird nicht auf den Cache, sondern auf das zu cachende Medium logisch zugegriffen (die \acs{CPU} adressiert den Hauptspeicher und nicht den Cache)
\item konsistent, \dash alle Instanzen derselben \acf{HSA} haben denselben Wert
\item kohärent, \dash beim Zugriff auf eine \acs{HSA} wird immer der aktuelle Wert geliefert
\end{itemize}
\bigskip
\begin{Hinweis}[frametitle={Anmerkung: Kohärenz und Konsistenz}]
Kohärenz ist Pflicht und Konsistenz ist Wunsch, da aus Konsistenz Kohärenz folgt. Zeitweise kann aber auf Konsistenz verzichtet werden.
\end{Hinweis}
Lokalität des Zugriffmusters \newline
$\Rightarrow$ verantwortlich dafür, dass der Cache Geschwindigkeitsvorteile bringen kann.

View file

@ -39,8 +39,10 @@
\chapter{Abkürzungsverzeichnis} \chapter{Abkürzungsverzeichnis}
\begin{acronym}[xxxxxxxx] \begin{acronym}[xxxxxxxx]
\acro{BLW}{Bandlaufwerk}
\acro{CISC}{Complex Instruction Set Computer}
\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}
@ -49,11 +51,15 @@
\acro{GLZ}{Gatterlaufzeit} \acro{GLZ}{Gatterlaufzeit}
\acrodefplural{GLZ}[GLZs]{Gatterlaufzeiten} \acrodefplural{GLZ}[GLZs]{Gatterlaufzeiten}
\acro{HA}{Halbaddierer} \acro{HA}{Halbaddierer}
\acro{HS}{Hauptspeicher}
\acro{HSA}{Hauptspeicheradresse}
\acro{HW}{Hardware} \acro{HW}{Hardware}
\acro{LW}{Laufwerk}
\acro{PC}{Personal Computer} \acro{PC}{Personal Computer}
\acro{PA}{Paralleladdierer} \acro{PA}{Paralleladdierer}
\acro{PM}{Parallelmultiplizierer} \acro{PM}{Parallelmultiplizierer}
\acro{RC-PA}{Ripple-Carry-Paralleladdierer} \acro{RC-PA}{Ripple-Carry-Paralleladdierer}
\acro{RISC}{Reduced Instruction Set Computer}
\acro{SA}{Serielladdierer} \acro{SA}{Serielladdierer}
\acro{SR}{Schieberegister} \acro{SR}{Schieberegister}
\acro{UNIVAC}{Universal Automatic Computer} \acro{UNIVAC}{Universal Automatic Computer}