% !TEX root = dt-slides-cpu.tex

%\begin{frame}
%\titlepage
%\end{frame}


\section{CPU Architektur}

\begin{frame}
\frametitle{CPU Architektur}
\begin{center}
\Huge CPU Architektur
\end{center}
\end{frame}


\begin{frame}
\frametitle{Microprocessor Trend Data}
\begin{center}
\includegraphics[width=.9\textwidth]{cpuarch/50-years-processor-trend}
\end{center}
\tiny{source: K. Rupp \url{https://www.karlrupp.net/2018/02/42-years-of-microprocessor-trend-data/} CC-BY-4.0}
\end{frame}

\begin{frame}
\frametitle{Apple SoC CPU vs Spezialhardware}
\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/appleacc}
\end{center}
\tiny{source: Apple / IRDS 2022 Executive Summary}
\end{frame}

\begin{frame}
\frametitle{General Purpose CPU / Spezialhardware}
\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/gpcpu-customsilicon}
\end{center}
\tiny{source: Broadcom / IRDS 2022 Executive Summary}
\end{frame}

\begin{frame}
\frametitle{CPU Architektur}
\begin{center}
\Huge Was ist denn jetzt die CPU?
\end{center}
\end{frame}


\begin{frame}
\frametitle{Compiler, Assembler, Maschinensprache}
%\begin{center}
\begin{tikzpicture}
\node (c2m-c) at (0,0) {\includegraphics[width=0.5\textwidth]{cpuarch/c2m-c}};
\node (c2m-a) at (0,-3) {\includegraphics[width=0.5\textwidth]{cpuarch/c2m-a}};
\node (c2m-m) at (0,-6) {\includegraphics[width=0.5\textwidth]{cpuarch/c2m-m}};
\path [->] (c2m-c) edge[out=190,in=170] node[left] {Compiler} (c2m-a);
\path [->] (c2m-a) edge[out=190,in=170] node[left] {Assembler} (c2m-m);
\end{tikzpicture}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, Seite 15, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Das C Programm}
%\begin{center}
\includegraphics[width=0.5\textwidth]{cpuarch/c2m-c}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Das Rust Programm - hier mit Extrachecks}
%\begin{center}
\includegraphics[width=0.5\textwidth]{cpuarch/c2m-rust}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Compiler Explorer - C für RISC-V}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/compiler-explorer-c-riscv}
\tiny{source: Compiler Explorer: \url{https://godbolt.org}}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Compiler Explorer - Rust für ARM7}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/compiler-explorer-rust-arm7}
\tiny{source: Compiler Explorer: \url{https://godbolt.org}}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Prozessorsystem}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/hoffmann-mikroprozessorsystem}
\tiny{source: Dirk Hoffmann, Grundlagen der Technischen Informatik, 2023, Hanser Verlag, Kap. 11}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Prozessorsystem}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/hoffmann-cpu}
\tiny{source: Dirk Hoffmann, Grundlagen der Technischen Informatik, 2023, Hanser Verlag, Kap. 11}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{MIPS - 32 Register}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/mips-register}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{MIPS - Befehlskodierung - Teil 1}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/mips-instr1}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{MIPS - Befehle - Teil 1}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/mips-instr-overview1}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{MIPS - Befehle - Teil 2}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/mips-instr-overview-head}
\includegraphics[width=1.0\textwidth]{cpuarch/mips-instr-overview2}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Architektur}
\begin{center}
\Huge CPU Aufbau
\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Aufbau - Übersicht}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/a-overview}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Aufbau - Übersicht - Multiplexer}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-overview-mux}
\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Aufbau - Befehlszähler }
%\begin{center}
\includegraphics[width=0.7\textwidth]{cpuarch/a-icounter}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Aufbau - Registersatz / ALU }
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-register}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Aufbau - Datenspeicher}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenspeicher}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - Sprungbefehl}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-sprung}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}


\begin{frame}
\frametitle{CPU Datenpfad - Store und R Befehle}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-store-r-befehle}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - einfach}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-einfach}

Unterstützt: load word, store word, ALU Befehle, branch. Jump fehlt noch.

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU ALU - Steuerung}
%\begin{center}
\includegraphics[width=0.5\textwidth]{cpuarch/a-alu-control}
\includegraphics[width=0.9\textwidth]{cpuarch/a-alu-befehle}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - mit RegDest}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-regdest}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - mit Steuerung}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-steuerung}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - Befehlsdekodierung}
%\begin{center}
\includegraphics[width=1.0\textwidth]{cpuarch/a-steuerung-befehl}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - add \$t1,\$t2,\$t3}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-add}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - lw \$t1, 20(\$t2)}
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-load}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}

\begin{frame}
\frametitle{CPU Datenpfad - beq \$t1,\$t2,25 }
%\begin{center}
\includegraphics[width=0.9\textwidth]{cpuarch/a-datenpfad-beq}

\tiny{source: Patterson und Hennessy, Rechnerorganisation und Rechnerentwurf, 2014}
%\end{center}
\end{frame}












