diff options
| author | Manuel Traut <manut@mecka.net> | 2011-02-08 00:11:08 +0100 |
|---|---|---|
| committer | Manuel Traut <manut@mecka.net> | 2011-02-08 00:11:08 +0100 |
| commit | 6b6e2af669902e422c8703a094d811befb66a94e (patch) | |
| tree | b78722cbd6e43a4114995efe0bb981436c7dd4c2 | |
| parent | 6ed6241709e30d7b5a91673c95a86a594d09c75f (diff) | |
updated pres_cpu-arch - still some things to do..
Signed-off-by: Manuel Traut <manut@mecka.net>
| -rw-r--r-- | basics/cpu-arch/pres_cpu-arch.tex | 149 | ||||
| -rw-r--r-- | basics/section.tex | 4 |
2 files changed, 146 insertions, 7 deletions
diff --git a/basics/cpu-arch/pres_cpu-arch.tex b/basics/cpu-arch/pres_cpu-arch.tex index 805dca1..70f2bcc 100644 --- a/basics/cpu-arch/pres_cpu-arch.tex +++ b/basics/cpu-arch/pres_cpu-arch.tex @@ -1,8 +1,8 @@ \input{configpres} -\subsection{CPU Architekturen} +\subsection{Prozessor Architekturen} -\title{\lq CPU Architekturen\rq} +\title{\lq Prozessor Architekturen\rq} \maketitle \begin{frame} @@ -10,15 +10,143 @@ \tableofcontents \end{frame} +\subsubsection{Prozessoren} +\begin{frame} +\frametitle{Aufbau} +Register - Rechenwerk - Befehlsdekoder - Bus - Cache (optional) + +\begin{description} +\item[Register] Konfiguration, Zwischenspeicher, Operanden, Stack, I/O +\item[Rechenwerk] mind. eine ALU (Arithmetic Logical Unit: ADD, NOT, AND, \dots) +\end{description} +\end{frame} + +\begin{frame} +\frametitle{Aufbau} +Register - Rechenwerk - Befehlsdekoder - Bus - Cache (optional) + +\begin{description} +\item[Befehlsdekoder] + \begin{itemize} + \item FETCH - Befehl (OPCODE) aus RAM / ROM laden + (Prefetch - laden mehrere Befehle in ein Prefetch Register) + \item DECODE - OPCODE in ALU-Schaltinstruktionen wandeln + \item FETCH - Operanden (OPERANDS) aus RAM / ROM laden + \item EXECUTE + \item WRITE BACK - schreiben des Ergebnises in RAM / ROM (OPCOUNTER++) + \end{itemize} +\item[Bus] Adressbus (zentraler Adressdecoder -> Chip Select), Datenbus +\end{description} +\end{frame} + +\begin{frame} +\frametitle{Aufbau} +Register - Rechenwerk - Befehlsdekoder - Bus - Cache (optional) + +\begin{description} +\item[Cache] beinhaltet zuletzt verwendete Daten + \begin{itemize} + \item L1 im Kern / wenige KB gross / am Schnellsten abrufbar + \item L2 nicht im Kern / wenige MB gross + \item L3 von allen Kernen geteilt / einige MB gross + \end{itemize} +\end{description} +\end{frame} + +\subsubsection{OPCODE vs Assembler} +\begin{frame}[containsverbatim] +\frametitle{OPCODE vs Assembler} +\begin{description} +\item[OPCODES] sind immer Prozessorspezifisch +\item[OPCODE] eindeutige Nummer eines Befehls +\item[Befehlssatz] Summe aller OPCODES eines Prozessors +\item[Mnemonic] lesbare Abk. eines OPCODES -> Assemblerbefehl +\end{description} + +Beispiel 8086: +\begin{verbatim} +OPCODE: 0130 +Mnemonic: INC +SI (Sourceindexregister) wird um den Wert eins inkrementiert. +\end{verbatim} +\end{frame} + +\begin{frame} +\frametitle{Aufgabe} +\begin{itemize} +\item Schreiben Sie ein sehr einfaches C Programm +\item Disassemblen Sie das Programm +\item Betrachten Sie das Programm in einem HEX Editor und versuchen Sie die OPCODES zu finden +\end{itemize} +\end{frame} + +\begin{frame}[containsverbatim] +\frametitle{Disassemble} +\begin{verbatim} +simple.c: +int main(int argc, char **argv) +{ + return argc++; +} + +$ gcc -o simple.c +\end{verbatim} +\end{frame} + +\begin{frame}[containsverbatim] +\frametitle{Disassemble} +\begin{verbatim} +$ objdump -d a.out + +00000000004004b4 <main>: + 4004b4: 55 push %rbp + 4004b5: 48 89 e5 mov %rsp,%rbp + 4004b8: 89 7d fc mov %edi,-0x4(%rbp) + 4004bb: 48 89 75 f0 mov %rsi,-0x10(%rbp) + 4004bf: 8b 45 fc mov -0x4(%rbp),%eax + 4004c2: 83 45 fc 01 addl $0x1,-0x4(%rbp) + 4004c6: c9 leaveq + 4004c7: c3 retq + 4004c8: 90 nop + 4004c9: 90 nop + 4004ca: 90 nop + 4004cb: 90 nop + 4004cc: 90 nop + 4004cd: 90 nop + 4004ce: 90 nop + 4004cf: 90 nop +\end{verbatim} +\end{frame} + +\begin{frame}[containsverbatim] +\frametitle{Disassemble} +\begin{verbatim} +$ hexdump a.out | less + +00004b0 c3c9 9090 4855 e589 7d89 48fc 7589 8bf0 +00004c0 fc45 4583 01fc c3c9 9090 9090 9090 9090 +00004d0 c3f3 0ceb 9090 9090 9090 9090 9090 9090 +00004e0 8948 246c 4cd8 6489 e024 8d48 332d 2009 +00004f0 4c00 258d 092c 0020 894c 246c 4ce8 7489 +0000500 f024 894c 247c 48f8 5c89 d024 8348 38ec +\end{verbatim} +\end{frame} + \subsubsection{8, 16, 32, \dots bit?} \begin{frame} -\frametitle{8 Bit} -blubber +\frametitle{n-Bit-Architektur} +Pro Takt werden max. n-Bit Daten verarbeitet. + +Hieraus leitet sich i.d.R. auch die Breite der internen Register, sowie des +Adress- und des Datenbusses ab. + +Vorteil: Adressraum / Datenbreite +Nachteil: Speicherbedarf Pointer \end{frame} \subsubsection{Memory Management Unit} -\begin{frame}[containsverbatim] +\begin{frame} \frametitle{Memory Managemenut Unit (MMU)} \begin{itemize} \item blurb @@ -26,11 +154,20 @@ blubber \end{frame} \subsubsection{ARM, PowerPC / CELL, x86} -\begin{frame}[containsverbatim] +\begin{frame} \frametitle{ARM} \begin{enumerate} \item v1 \end{enumerate} \end{frame} +\subsubsection{Voraussetzungen f\"ur Linux} +\begin{frame} +Bit ? + +MMU ? + +ARCH Support ? +\end{frame} + \input{tailpres} diff --git a/basics/section.tex b/basics/section.tex index e447d0f..547ad23 100644 --- a/basics/section.tex +++ b/basics/section.tex @@ -1 +1,3 @@ -\section{Applikationsentwicklung} +\section{verschiedene Grundlagen} + +%In diesem Kapitel werden Grundlagen behandelt, welche nicht direkt mit Linux zu tun haben, aber f\"ur ein allgemeines Verst\"andnis notwendig sind. |
