-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
b7eb28b
commit 2e51992
Showing
33 changed files
with
308 additions
and
65 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,305 @@ | ||
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % | ||
% LaTeX4EI Template for Cheat Sheets Version 1.1 | ||
% | ||
% Authors: Markus Hofbauer | ||
% Contact: [email protected] | ||
% Encode: UTF-8 | ||
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % | ||
|
||
|
||
% ====================================================================== | ||
% Document Settings | ||
% ====================================================================== | ||
|
||
% possible options: color/nocolor, english/german, threecolumn | ||
% defaults: color, english | ||
\documentclass[german]{latex4ei/latex4ei_sheet} | ||
|
||
% set document information | ||
\title{Computertechnik} | ||
\author{Darius Peters} % optional, delete if unchanged | ||
\myemail{[email protected]} % optional, delete if unchanged | ||
\mywebsite{www.latex4ei.de} % optional, delete if unchanged | ||
|
||
|
||
%Packages | ||
\usepackage{pdfpages} | ||
\usepackage{xcolor} | ||
\usepackage{fancyhdr} | ||
\usepackage{lastpage} | ||
|
||
%Custom Commands | ||
\newcommand{\imglog}{\includegraphics[width=.70cm]} | ||
|
||
%custom settings | ||
\titlespacing*{\subsection}{0pt}{.5pt}{2pt} | ||
\titlespacing*{\subsubsection}{0pt}{.5pt}{2pt} | ||
|
||
|
||
% ====================================================================== | ||
% Begin | ||
% ====================================================================== | ||
\begin{document} | ||
|
||
\IfFileExists{git.id}{\input{git.id}}{} | ||
\ifdefined\GitRevision\mydate{\GitNiceDate\ (git \GitRevision)}\fi | ||
% Title | ||
% ---------------------------------------------------------------------- | ||
\maketitle % requires ./img/Logo.pdf | ||
\\ | ||
\textcolor{red}{In der Prüfung Computertechnik und Programmieren ist keine eigene Formelsammlung zulässig!} | ||
% Section | ||
% ---------------------------------------------------------------------- | ||
\section{Zahlen und Zeichen} | ||
|
||
\subsection{Daten als Bits und Bytes} | ||
\subsubsection{Binärdarstellung} | ||
1 - High Pegel - logisch wahr\\ | ||
0 - Low Pegel - logisch falsch | ||
\subsubsection{Hexadezimaldarstellung} | ||
Zusammenfassen von 4 Bits zu 0, 1, ..., E,D F\\ | ||
\begin{tabular}{l|l||l|l} | ||
0: 0000 & 1: 0001 & 8: 1000 & 9: 1001\\ | ||
2: 0010 & 3: 0021 & A: 1010 & B: 1011\\ | ||
4: 0100 & 5: 0101 & C: 1100 & D: 1101\\ | ||
6: 0110 & 7: 0111 & E: 1110 & F: 1111\\ | ||
\end{tabular} | ||
\subsubsection{Bits/Bytes} | ||
\begin{itemize}\itemsep0pt | ||
\item1 Byte = 8 Bits = 1 Byte | ||
\item2 Byte = 16 Bits = 1 Wyde | ||
\item4 Byte = 32 Bits = 1 Tetra | ||
\item8 Byte = 64 Bits = 1 Octa | ||
\end{itemize} | ||
\begin{sectionbox} | ||
\subsubsection{ASCII-Tabelle} | ||
\includegraphics[width=\linewidth,scale=0.5]{./img/ascii_table.png} | ||
\end{sectionbox} | ||
\subsection{Zahlen} | ||
\subsubsection{Vorzeichenlose Festkommazahlen} | ||
\textbf{Definition:} $v=(a_{n-1} \cdot b^{n-1}+\dots+a_1 \cdot b^1 + a_0 \cdot b^0) \cdot b^r$\\ | ||
$b$: Basis (meist 2); $n$: Stellenzahl; $a \in 0 \dots (b-1)$; $r$: Position des Kommas | ||
\subsubsection{Einer Komplement} | ||
Vorzeichen wird durch MSB abgelesen\\ | ||
Umwandlung durch invertieren aller Bits | ||
\subsubsection{Zweier Komplement} | ||
Vorzeichen wird durch MSB abgelesen\\ | ||
Umwandlung durch invertieren aller Bits und binärer Addition des Werts 1 (von positiv zu negativ) | ||
|
||
|
||
\subsubsection{Gleitkommazahlen nach IEEE 754} | ||
Bestehend aus: Vorzeichen ($s$), Exponentteil ($e$), Mantisse ($f$)\\ | ||
Vorgehen: Erst Zahl vor dem Komma und nach dem Komma getrennt in binär umwandeln. Dann zusammen schreiben als Zahl1,Zahl2 und das Komma, durch Anpassung des Exponenten $e-K$, verschieben | ||
\begin{sectionbox} | ||
Definition (de-normalisiert): $v=(-1)^s \cdot 1,f \cdot 2^{e-K}$\\ \\ | ||
\begin{tabular}{c c} | ||
\begin{minipage}{.5\textwidth} | ||
\textbf{32 Bit:} | ||
\begin{itemize}\itemsep0pt | ||
\item $K=127$ | ||
\item $s = 1$ Bit | ||
\item $e = 8$ Bit | ||
\item $f = 23$ Bit | ||
\end{itemize} | ||
\end{minipage} | ||
& | ||
\begin{minipage}{.5\textwidth} | ||
\textbf{64 Bit:} | ||
\begin{itemize}\itemsep0pt | ||
\item $K=1023$ | ||
\item $s = 1$ Bit | ||
\item $e = 11$ Bit | ||
\item $f = 52$ Bit | ||
\end{itemize} | ||
\end{minipage} | ||
\end{tabular} \qquad\\ | ||
\textbf{Spezialfälle:} | ||
\begin{itemize}\itemsep0pt | ||
\item 0: $e=0$; $f=0$ | ||
\item $+\infty$: $e=1\dots1$; $f=0$; $s=0$ | ||
\item $-\infty$: $e=1\dots1$; $f=0$; $s=1$ | ||
\item \text{Not a Number}: $e=1\dots1$; $f>0$ | ||
\end{itemize} | ||
\end{sectionbox} | ||
|
||
\section{Arithmetische Schaltungen} | ||
\begin{sectionbox} | ||
\subsection{Schaltungselemente} | ||
\begin{tabular}{c|c!{\vrule width 0.75pt}c|c|c|c|c} | ||
& & \imglog{img/logic/and-us.png} & \imglog{img/logic/or-us.png} & \imglog{img/logic/xor-us.png} & \imglog{img/logic/nand-us.png} & \imglog{img/logic/nor-us.png}\\ | ||
x & y & AND & OR & XOR & NAND & NOR \\ | ||
& & $x\cdot y$ & $x+y$ & $x\oplus y$ & $\overline{x\cdot y}$ & $\overline{x+y}$ \\ \hline\hline | ||
0 & 0 & 0 & 0 & 0 & 1 & 1 \\ \hline | ||
0 & 1 & 0 & 1 & 1 & 1 & 0 \\ \hline | ||
1 & 0 & 0 & 1 & 1 & 1 & 0 \\ \hline | ||
1 & 1 & 1 & 1 & 0 & 0 & 0 | ||
\end{tabular} | ||
\end{sectionbox} | ||
\subsection{Fan-In/Fan-Out} | ||
Fan-In: max. Eingänge in Gatter | ||
Fan-Out: max. Ausgänge in Gatter | ||
\subsection{Multiplexer} | ||
\includegraphics[width=2cm]{img/logic/multiplexer.png} | ||
\subsection{Ripple-Carry-Addierer} | ||
Berechnung der Summe aus zwei Summanden \\ | ||
\includegraphics[width=0.75\linewidth]{img/rca/rca.png} \\ | ||
\subsection{Carry-Look-Ahead} | ||
Schnellere Berechnung der Summe aus zwei Summanden durch zusätzliche Logik zur Bestimmung des Übertrags\\ | ||
\includegraphics[width=0.75\linewidth]{img/rca/cla.png} \\ | ||
Überlauf ($c_i$) eines Volladdierers:\\ | ||
$c_i=g_i \lor (p_i \land g_{i-1}) \lor (p_i \land p_{i-1} \land g_{i-2}) \lor \dots$ | ||
\subsection{Zustandsautomat} | ||
\begin{center} | ||
\includegraphics[width=.7\linewidth]{img/moore-automat.pdf} | ||
\end{center} | ||
%\begin{itemize} | ||
%\item Input: Eingangssignale in den Automaten | ||
%\item Output: Taktleitungen/Clock-Signale (0 oder 1) und andere Signale (0, 1, X) | ||
%\end{itemize} | ||
\begin{sectionbox} | ||
\subsection{ROM-Steuerung} | ||
\includegraphics[width=\linewidth]{img/ROM-Steuerung.jpg} \\ | ||
Tabelle mit \textcolor{blue}{Eingabe} (gegeben) und \textcolor{green}{Ausgabe} (auszufüllen) \\ | ||
Vorgehen: Einträge der gegebenen Tabelle in Binärzahlen umwandeln. Bits $0, 1, 2$ der Eingabe sind der derzeitige Zustand. Bits $3, 4, \dots$ der Eingabe sind die Eingangssignale für den nächsten Zustand. Bits $0, 1, 2$ der Ausgabe sind der Folgezustand und Bits $3, 4, \dots$ die Ausgangssignale des aktuellen Zustands.\\ | ||
\textbf{Ansatz:} \\ | ||
\begin{tabular}{c c|c c} | ||
e f & Zst. & a b c d & Folgezst.\\ | ||
(4 3) & (2 1 0) & (6 5 4 3) & (2 1 0) \\ \hline | ||
\textcolor{blue}{\dots} & \textcolor{blue}{\dots} & \textcolor{green}{\dots} & \textcolor{green}{\dots} \\ | ||
\textcolor{blue}{\dots} & \textcolor{blue}{\dots} & \textcolor{green}{\dots} & \textcolor{green}{\dots} \\ | ||
\end{tabular} | ||
\end{sectionbox} | ||
\begin{sectionbox} | ||
\subsection{Universalrechner} | ||
\includegraphics[width=\linewidth]{img/Universalrechner.png} \\ | ||
\begin{itemize}\itemsep0pt | ||
\item \textbf{K:} Konstante | ||
\item \textbf{D:} Ziel-Register | ||
\item \textbf{M1:} Ergebnis-Auswahl | ||
\item \textbf{M2:} Rechenoperation/Konstante-Laden | ||
\item \textbf{M3:} Operand 1 | ||
\item \textbf{M4:} Operand 2 \textit{(bei $\sqrt{x}$ verwenden)} | ||
\end{itemize} | ||
\end{sectionbox} | ||
\begin{minipage}{\columnwidth} | ||
\section{MMIX-Architektur} | ||
\subsection{Big-Endian und Little-Endian} | ||
\textbf{Big-Endian:} höherwertigeres Byte wird adressiert (von links nach rechts)\\ | ||
\textbf{Little-Endian:} niederwertigeres Byte wird adressiert (von rechts nach links)\\ | ||
\begin{sectionbox} | ||
\subsection{Übersetzungstabelle} | ||
\includegraphics[width=\linewidth]{img/Uebersetzungstabelle.png} | ||
Um Opcode zu erhalten erste Hex-Zahl links ablesen, zweite Hex-Zahl oben/unten ablesen (je nachdem ob Befehl in oberer oder unterer Zeile)\\ | ||
$I$: immideate (Direktoperand); $B$: backwards (bei Sprungbefehlen) | ||
\end{sectionbox} | ||
\end{minipage} | ||
\subsection{Spezielle Befehle} | ||
\subsubsection{Namensraum} | ||
Namensraum eröffnen: \texttt{PREFIX Name} \\ | ||
Namensraum beenden: \texttt{PREFIX :} | ||
\subsubsection{Stack-Pointer (SP)} | ||
\begin{itemize} | ||
\item n Register auf Stack ablegen: \\ | ||
1. SP anpassen: \texttt{SUB, :SP, :SP, 8*n}\\ | ||
2. Mit \texttt{STO} speichern | ||
\item n OCTAs aus Stack einlesen: \\ | ||
1. Mit \texttt{LDO} einlesen\\ | ||
2. SP anpassen: \texttt{ADD, :SP, :SP, 8*n} | ||
\end{itemize} | ||
\subsection{Alignment} | ||
\subsubsection{In den Speicher} | ||
\begin{itemize}\itemsep0pt | ||
\item \textbf{BYTE:} geht immer | ||
\item \textbf{WYDE:} letztes Bit muss 0 sein | ||
\item \textbf{TETRA:} letzten beiden Bits müssen 0 sein | ||
\item \textbf{OCTA:} letzten drei Bits müssen 0 sein | ||
\end{itemize} | ||
Ist dies nicht der Fall werden die betroffenen Bits aufgrund des Alignments beim Speicherprozess automatisch auf 0 gesetzt | ||
\subsubsection{Laden in Register} | ||
Beim Laden wird das Register so aufgefüllt, dass das LSB der geladenen Bitfolge auch das LSB des Registers ist. \\ | ||
\textbf{ACHTUNG:} Das MSB der vordersten Hex-Zahl entscheidet bei signed Operationen ob der Rest links davon mit 0 \dots \ 0 oder F \dots \ F aufgefüllt wird. | ||
\subsection{Pipelining} | ||
\subsubsection{Konflikte} | ||
\begin{itemize}\itemsep0pt | ||
\item \textbf{Datenkonflikt:} Zugriff auf ein Register das noch gespeichert werden muss | ||
\item \textbf{Strukturkonflikt:} Zugriff von zwei Befehlen auf die selbe Hardware-Resource | ||
\item \textbf{Steuerungskonflikt:} Bei Sprungsbefehlen werden ggf. darauffolgende Befehle fälschlicherweise geladen, wenn noch nicht klar ist ob gesprungen werden soll oder nicht | ||
\end{itemize} | ||
\subsubsection{Datenpfad} | ||
Vorgehen: von rechts nach links die jeweiligen Inhalte der Pipelining-Register eintragen. Dabei ggf. Änderungen von Werten berücksichtigen. | ||
\begin{minipage}{\columnwidth} | ||
\subsection{Cache} | ||
\subsubsection{Allgemeines} | ||
$\text{Hit-Rate} + \text{Miss-Rate} = 100\%$ \\ | ||
$\textbf{Mittlere Zugriffszeit: } (\text{Hit-Time}) \cdot (\text{Hit-Rate}) + (\text{Miss-Time}) \cdot (\text{Miss-Rate})$ \\ | ||
\textbf{Arbeitsspeicher-Adresse:} Schlüssel + Rahmen-Nr + Byte-Auswahl \\ | ||
\textbf{Cache-Inhalt:} (Rahmen-Nr + Byte-Auswahl)\\ | ||
\textbf{Tag-RAM:} (Schlüssel + Rahmen-Nr)\\ | ||
\textbf{Merke:} $2^{10} \text{ Bits}= 1 \text{kB}$ und $2^{20} \text{ Bits}=1 \text{MB}$\\ | ||
\end{minipage} | ||
\subsubsection{Direkt-Abgebildet} | ||
Es existiert pro Rahmen-Nr. nur \textbf{ein Rahmen} in dem eine Byte-Folge gespeichert werden kann \\ | ||
Problem: Man kann nicht zwei verschiedene Byte-Folgen (mit unterschiedl. Schüsseln) und selber Rahmen-Nr. speichern | ||
\subsubsection{Voll-Assoziativ} | ||
Eine Bytefolge kann in jedem Rahmen gespeichert werden \\ | ||
Problem: Schlüsselvergleich dauert lange | ||
\subsubsection{Set-Assoziativ} | ||
Es existieren pro Rahmen-Nr. mehrere Rahmen, in denen eine Byte-Folge gespeichert werden kann (Set) \\ | ||
Vorteil: man kann zwei verschiedene Byte-Folgen mit selber Rahmen-Nr. speichern und ist trotzdem noch relativ schnell | ||
|
||
\section{Mikrocontroller-Programmierung} | ||
\subsection{Das Board} | ||
Anschluss: 2x USB für Programmierung und Spannungsversorgung \\ | ||
AVR-Programmieradapter \\ | ||
Steckplatine | ||
\subsection{Übersetzungsbefehle} | ||
\begin{itemize}\itemsep0pt | ||
\item Übersetzen: \texttt{make} | ||
\item Übersetzen und in den Controller laden: \texttt{make program} | ||
\item Übersetzen und Assembler-Code zeigen: \texttt{make\ show} | ||
\item Übersetzte Dateien löschen: \texttt{make clean} | ||
\item Taktfrequenz u.a. einstellen: \texttt{make fuses} | ||
\end{itemize} | ||
\subsection{Bitweise Operationen (Bsp: PORTD)} | ||
\begin{itemize}\itemsep0pt | ||
\item Bit Nr. 0 setzen: \texttt{PORTD |= 1} (bitweise ODER) | ||
\item Bit Nr. 0 löschen: \texttt{PORTD \&=} \textasciitilde \texttt{1} (bitweise UND) | ||
\item Bit Nr. 0 ändern: \texttt{PORTD \textasciicircum= 1} (bitweise XOR) | ||
\end{itemize} | ||
\subsection{Wortbreitenunterschiede} | ||
\begin{tabular}{c|c|c} | ||
Typ & herkömmlicher PC & 8-Bit Mikrocontroller \\ \hline | ||
char & 1 Byte & 1 Byte\\ | ||
short & 2 Bytes & 2 Bytes \\ | ||
int & 4 Bytes & 2 Bytes \\ | ||
float & 4 Bytes & 4 Bytes \\ | ||
double & 8 Bytes & 4 Bytes \\ | ||
long & 8 Bytes & 4 Bytes \\ | ||
long long & 8+ Bytes & 8 Bytes | ||
\end{tabular} | ||
|
||
\begin{minipage}{\columnwidth} | ||
\subsection{Interrupts} | ||
Beim Auftreten eines Interrupts wird aus dem derzeit ausgeführten Code in die Interrupt-Service-Routine (ISR) gesprungen. Dieses Verhalten kann genutzt werden, um z.B. beim Drücken eines Tasters oder nach einer bestimmten Zeit eine Funktion aufzurufen. Dabei muss nicht ständig überprüft werden, ob ein Interrupt auftritt (das springen in die ISR geschieht automatisch). | ||
\subsection{Timer-Interrupts} | ||
Der Zähler \texttt{TCNT$n$} wird mit der Frequenz $f=\frac{\text{clk}}{\text{Prescaler}}$ um 1 erhöht. \\ | ||
Überlauf-Interrupt, wenn \texttt{TCNT$n$}... | ||
\begin{itemize} | ||
\item von $2^8-1$ auf $2^8=256$ erhöht wird (bei $n\in \{0,2\}$) | ||
\item von $2^{16}-1$ auf $2^{16}=65536$ erhöht wird (bei $n\in \{1,3\}$) | ||
\end{itemize} | ||
\end{minipage} | ||
|
||
%Formelsammlung | ||
\newpage | ||
\fancyhf{} % Löscht die aktuellen Einstellungen für Kopf- und Fußzeile | ||
\cfoot{Quelle: \href{mailto:[email protected]}{Lehrstuhl für Datenverarbeitung (LDV)}} % Setzt die rechte Fußzeile | ||
\rfoot{Stand: Wintersemester 23/24 \qquad \thepage/\pageref{LastPage}} % Setzt die rechte Fußzeile | ||
\includepdf[pages=-, pagecommand={\thispagestyle{fancy}}]{./img/Formelsammlung.pdf} | ||
%\includepdf[pages=-]{./img/Formelsammlung.pdf} | ||
|
||
% ====================================================================== | ||
% End | ||
% ====================================================================== | ||
\label{LastPage} | ||
\end{document} |
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Binary file not shown.
Oops, something went wrong.
Oops, something went wrong.