\chapter{Rechner} Hilfsmittel zum Durchführen von \enquote{Rechnungen}. \columnratio{0.55} \begin{paracol}{2} \textsf{\textbf{Rechner}} \begin{itemize}[noitemsep] \item schneller \item fehlerfreier \item besseres Speichervermögen \end{itemize} \switchcolumn \textsf{\textbf{Rechenmaschine}} \begin{itemize}[noitemsep] \item Abakus (mechanisch, digital) \item Rechenschieber (mechanisch, analog) \end{itemize} \end{paracol} \textsf{\textbf{Arbeitsweise}} 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. \section{Geschichte} \subsection{Elektrischer Digitalrechner} \begin{description} \item[ZUSE] Z1, Z2 (ab \circa{1940}) Relais als zentrale Bauteile (elektromagnetischer Schalter mit Elektromagnet) \begin{itemize}[noitemsep] \item[$\oplus$] Automatismus möglich \item[$\ominus$] langsame Geschwindigkeit \item[$\ominus$] großer Platzverbrauch \item[$\ominus$] Geräusche beim Schalten \item[$\ominus$] hoher Energieverbrauch beim Schalten \item[$\ominus$] großer Verschleiß \end{itemize} \item[\acf{ENIAC}] (\circa{1945}) \newline 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] \item[$\oplus$] (sehr) hohe Geschwindigkeit \item[$\ominus$] großer Platzverbrauch \item[$\ominus$] ständiges Summen bei $50Hz$ oft möglich und hörbar \item[$\ominus$] hoher, ständiger Energieverbrauch \item[$\ominus$] großer Verschleiß \end{itemize} \begin{figure}[ht] \centering \includegraphics[width=9.4cm]{Bilder/800px-Cathode_ray_tube_de.png} \caption{Funktionsweise Kathodenstrahlröhre [Quelle: \href{https://de.wikipedia.org/wiki/Kathodenstrahlr\%C3\%B6hre}{Wikipedia}]} \label{fig:elektronenstrahlroehre} \end{figure} \newpage % Für das Seitenlayout \item[Moderne Rechner] Moderne transistorisierte Digitalrechner (\zB \acs{UNIVAC} ab Ende der 1950er). \begin{itemize}[noitemsep] \item Transistor als zentrales Bauteil. Ein Transistor ist ein analog arbeitender Verstärker, wird hier aber als digital arbeitender Schalter genutzt. \item[$\oplus$] sehr hohe Geschwindigkeit \item[$\oplus$] sehr geringer Platzverbrauch \item[$\oplus$] keine Geräuschentwicklung (außer Lüfter) \item[$\oplus$] sehr niedriger Energieverbrauch \item[$\oplus$] geringer Verschleiß \end{itemize} \end{description} \section{Fundamentalarchitektur} \subsection{von-Neumann-Architektur}\label{sec:von_neumann} \index{von-Neumann-Architektur} In \autoref{fig:neumann_architektur} wird die von-Neumann-Architektur vereinfacht dargestellt. Diese besteht aus: \begin{description} \item[Zentraleinheit (\acs{CPU})] Die CPU besteht aus: \begin{description} \item[Rechenwerk] Rechnen mit Zahlen und logischen Werten \item[Steuerwerk] Zuständig für das Steuern und Koordinieren aller anderen Komponenten \newline $\Rightarrow$ Interpretation und Ausführung des (Maschinensprachen-)Programms \end{description} \item[Speicherwerk] (Hauptspeicher, Primärspeicher) \newline Speichern von Informationen (sowohl Programmcode als auch Nutzdaten \textit{gleichermaßen}) \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). Es ist jedoch nicht das Peripheriegerät selbst (also nicht die Tastatur) gemeint. \item[Ausgabewerk] \enquote{Schnittstelle} für Ausgabegeräte (\zB Grafikkarte) \end{description} \begin{figure}[ht] \centering \includegraphics[width=8cm]{Bilder/Von-Neumann_Architektur.png} \caption{Vereinfachte Darstellung der von-Neumann-Architektur} \label{fig:neumann_architektur} \end{figure} \subsection{Harvard-Architektur}\label{sec:harvard} \index{Harvard-Architektur} 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} 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] \centering \begin{tikzpicture} % 2. Bus-System \draw[red] (-1, 2) rectangle ++(3.5, 1); \node[red] at (0.75, 2.5) {2. Bus System}; \draw[red] (0.5, 2) -- ++(0, -0.5); \draw[red] (-1, 3.5) rectangle ++(3.5, 1.25); \node[red, text width=3.2cm] at (0.75, 4.1) {2. Speicherwerk für Programmcode}; \draw[red] (0.5, 3.5) -- ++(0, -0.5); \draw[red, dashed] (-4, 3.5) rectangle ++(2.5, 1.25); \node[red, text width=2.5cm] at (-2.5, 4.1) {2. Eingabe- werk}; \draw[red, dashed] (-2.75, 3.5) |- ++(1.75, -1); \node[red] at (-2.2, 2.2) {optional}; % CPU \draw (-2, -1.5) rectangle ++(4,3); \node at (0, 1) {Zentraleinheit (CPU)}; \draw (-1.75, -1.25) rectangle ++(1.5,1.5); \node [text width=1.25cm] at (-1.05, -0.45) (RW) {Rechen- werk}; \draw (0.25, -1.25) rectangle ++(1.5,1.5); \node[text width=1.25cm] at ([xshift=2.1cm]RW) (SW) {Steuer- werk}; % Bus-System \draw (0, -1.5) -- (0, -2.5); \draw (-2, -2.5) rectangle ++(4, -1); \node at (0, -3) {Bus-System}; % Ein-/Ausgabe \draw (-2.5, -4.5) rectangle ++(2,-2); \draw (0.5, -4.5) rectangle ++(2,-2); \node[text width=1.8cm] at (-1.4, -5.4) {Ein-/ Ausgabe- werk}; \node[text width=1.8cm] at (1.6, -5.4) {Speicher-werk \textcolor{red}{ für Daten}}; \draw (-1.5, -4.5) -- ++(0,1); \draw (1.5, -4.5) -- ++(0,1); % Info Box \draw[fill=black] (3, -5) rectangle ++(0.4,0.4); \draw[fill=red] (3, -6) rectangle ++(0.4,0.4); \node at (5.8,-4.8) {von-Neumann-Architektur}; \node at (5.3,-5.8) {Harvard-Architektur}; \end{tikzpicture} \caption{Vereinfachte Darstellung der Harvard-Architektur} \label{fig:harvard_architektur} \end{figure} \subsection{Vergleich} \autoref{tbl:vergleich_vn_hv} auf \autopageref{tbl:vergleich_vn_hv} vergleicht die von-Neumann-Architektur mit der Harvard-Architektur. \begin{table}[h] \hspace*{-5mm} \begin{tabular}{cp{7.5cm}|cp{7.5cm}} & \textbf{von-Neumann-Architektur} & & \textbf{Harvard-Architektur} \\ \midrule $\ominus$ & Virenanfälligkeit: Nutzdaten können als Programm ausgeführt werden & $\oplus$ & nahezu immun gegen unabsichtlichen Virenbefall \\[1.5ex] $\oplus$ & universelle Programmierbarkeit \newline (\zB Compiler-Ausgabe wird als Programm ausgeführt) & $\oplus$ & keine (unbeabsichtigten oder ungewollten) Änderungen an der Betriebssoftware möglich \\[1.5ex] $\oplus$ & flexible Speicheraufteilung zwischen Programmcode und Daten & $\ominus$ & komplexer und teurer (durch 2 Bus und ggf. 2 Eingabewerke) \\[1.5ex] $\ominus$ & möglicher Flaschenhals Bus \& Speicherwerk & $\ominus$ & schwer update-fähig \\[1.5ex] $\oplus$ & kostengünstig & $\oplus$ & bessere Performance möglich durch gleichzeitigen Zugriff auf beide Speicherwerke \\[1.5ex] & & $\ominus$ & ohne zweites Eingabewerk gibt es keine Möglichkeit anderen Programmcode auszuführen. \\[1.5ex] & & $\ominus$ & unflexible Aufteilung des Speichers: wenn das eine Speicherwerk voll ist, kann das andere Speicherwerk nicht genutzt werden. \\[1.5ex] \end{tabular} \hspace*{-7mm} \begin{tabular}{cp{7.6cm}|cp{7.6cm}} \multicolumn{4}{c}{\textbf{Einsatz}} \\ \midrule \textbullet & übliche \acs{PC}-Architektur -- \enquote{Universal-PC} & \textbullet & \enquote{embedded systems} (\zB in Waschmaschinen, KFZ-Elektronik, etc.) \\[1.5ex] & & \textbullet & Smartphones \& Co. \\[1.5ex] & & \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} \caption{Vergleich der von-Neumann- und Harvard-Architektur} \label{tbl:vergleich_vn_hv} \end{table}