s3e: fix build break
[calu.git] / 1_isacmp / arm.tex
index f551c39afbb4fc4b9119dd8261365048fbd0a062..13214bdaee0a218929c4e9903fd083d77c25d221 100644 (file)
@@ -2,7 +2,7 @@
 
 ARM wurde anfangs von der Firma ACORN entwickelt und steht f\"ur Advanced Risc Machine. Es existieren
 mehrere verschiedene Versionen des Instruktionssatzes, diese Ausarbeitung gibt aber lediglich einen \"Uberblick
-\"uber die prizipiellen Konzepte der Architektur.
+\"uber die prinzipiellen Konzepte der Architektur.
 
 \subsection{Einsatzgebiet}
 
@@ -11,7 +11,7 @@ Es existieren 31 general-purpose Register, 16 davon k\"onnen direkt \"uber die R
 Die anderen Register werden verwendet um die Fehlerbehandlung zu beschleunigen. Aus diesem Grund beschreibt die ARM Architektur 
 eine Registermaschine mit einer RISC Architektur.
 
-Die Register R13, R14 und R15 finden besondere Verwendung. R13 ist der Stack-Pointer, R14 das Link Register und R15 der Program-Counter. 
+Die Register \texttt{R13}, \texttt{R14} und \texttt{R15} finden besondere Verwendung. \texttt{R13} ist der Stack-Pointer, \texttt{R14} das Link Register und \texttt{R15} der Program-Counter. 
 Diese Register k\"onnen allerdings auch \"uber normale Instruktionen beschrieben werden. Das Link-Register beinhaltet die R\"ucksprungadresse
 im Falle eines Subroutinen-Calls.
 
@@ -19,7 +19,7 @@ ARM bietet eine breite Varianz an Kernen f\"ur den Einsatz in verschiedenen Gebi
 Beispielsweise ist die ARM710 Familie designed um in Hand-Helds und anderen Multimediabereichen Anwendung zu finden. 
 Die leistungsf\"ahigere ARM10 Familie bietet eine Vector-Floating-Point Einheit. Der Cortex A8, welcher den ARMv7 Instruktionssatz
 verwendet, betreibt das IPhone 3GS, der Nintendo DS wird auch von einem ARM angetrieben. Diverse Linux-Distributionen laufen auf leistungsf\"ahigeren ARM-Prozessoren.
-Einem Bericht aus 2007 zufolge verwenden ca 98 Prozent der verkauften Mobiltelefone einen ARM Prozessor (Wikipedia).
+Einem Bericht aus 2007 zufolge verwenden zirka 98 Prozent der verkauften Mobiltelefone einen ARM Prozessor (Wikipedia).
 
 %\subsection{Where are processors that implement the ISA deployed? In embedded systems (microcontrollers,
 %communication, multimedia), in servers, in desktop computers?}
@@ -48,21 +48,17 @@ Im Vergleich zu \"alteren RISC Architekturen kommt ARM ohne die Verwendung von B
 nicht am Software-Level sichtbar. Des weiteren gibt es Predicated Instructions, welche erlauben, dass die Instruktion nur 
 im Falle eines gesetzten Pr\"adikats ausgef\"uhrt wird. ARM verwendet f\"ur nahezu jede Instruktion 4 Bits an Pr\"adikaten. Somit 
 k\"onnen theoretisch 16 verschiedene Ausf\"uhrungsm\"oglichkeiten abgeleitet werden, es werden 15 gen\"utzt.
-Nach dem Testen einer Bedingung (CMP) wird dieses Ergebnis im Statusregister vermerkt (zb CMP R1, R2).
-Nun kann beispielsweise ADDEQ R0, R2, R3 und ADDNE R7, R2, R3 folgen, was folgenden Code abbildet:
-
+Nach dem Testen einer Bedingung (\texttt{CMP}) wird dieses Ergebnis im
+Statusregister vermerkt (zum Beispiel \texttt{CMP R1, R2}).
+Nun kann beispielsweise \texttt{ADDEQ R0, R2, R3} und \texttt{ADDNE R7, R2, R3} folgen, was folgenden Code abbildet:
 \begin{lstlisting}[caption=Beispiel]{}
-
-if R1 = R2 then
+if R1 = R2
        R0 = R2 + R3
 else
        R7 = R2 + R3
-end if
-
 \end{lstlisting}
-
 Somit k\"onnen kleine if-Bl\"ocke auf sequenzielle Statements ohne Sprung abgebildet werden.
-Sollte f\"ur eine Instruktion die Kondition nicht erf\"ullt sein wird diese einfach durch ein NOP ersetzt.
+Sollte f\"ur eine Instruktion die Kondition nicht erf\"ullt sein wird diese einfach durch ein \texttt{NOP} ersetzt.
 
 Ein m\"ogliches Pr\"adikat ist auch Always, somit wird keine Bedingung im Statusregister gepr\"uft.
 
@@ -119,7 +115,6 @@ implementiert, man kann solches Verhalten auf einen Operanden einer Anweisung an
 \subsection{Implementierung des Beispielcodes}
 
 \begin{lstlisting}[caption=ARM Code]{ARM-Code}
-
        ; r0 = len
        ; r1 = ptr to arr
        ; wenn len=0 return 0
@@ -135,16 +130,13 @@ loop:
        bne loop;
        mov r0,r2
        bx lr
-
 \end{lstlisting}
-
 Jeder Schleifendurchlauf f\"uhrt ein Load, ein Add, ein Compare und ein Branch-Equal aus.
-
-Implementiert auf einem ARM7TDMI, dieser verwendet eine 3-Stufige Pipeline, erhalten wir folgende
+Implementiert auf einem ARM7TDMI, dieser verwendet eine dreistufige Pipeline, erhalten wir folgende
 Aussagen \"uber die Clockcycles:
 
-ldr 3, add 1, cmp 1, bne 3, was bedeutet, dass ein Schleifendurchlauf 8 Zyklen ben\"otigt (Informationen aus dem Manual des Prozessors entnommen).
+\texttt{ldr} 3, \texttt{add} 1, \texttt{cmp} 1, \texttt{bne} 3, was bedeutet, dass ein Schleifendurchlauf acht Zyklen ben\"otigt (Informationen aus dem Manual des Prozessors entnommen).
 
-Die Anzahl der Instruktionen in der Schleife ist 4, da auch der Sprung zum 
+Die Anzahl der Instruktionen in der Schleife ist vier, da auch der Sprung zum 
 Schleifenbeginn mitgez\"ahlt wird. Die Codesize der Schleife betr\"agt 16 Byte,
 da jede Instruktion eine L\"ange von 32 Bit hat.