isa_cmp: arm updated
authorMartin Perner <martin@perner.cc>
Wed, 20 Oct 2010 09:01:40 +0000 (11:01 +0200)
committerMartin Perner <martin@perner.cc>
Wed, 20 Oct 2010 09:01:40 +0000 (11:01 +0200)
1_isacmp/arm.tex
1_isacmp/cmp.tex

index 267b28adb1cc2ce480099d498640b9dcaada4179..f551c39afbb4fc4b9119dd8261365048fbd0a062 100644 (file)
@@ -1,24 +1,24 @@
 \section{ARM}
 
-ARM wurde anfangs von der Firma ACORN entwickelt und steht für Advanced Risc Machine. Es existieren
-mehrere verschiedene Versionen des Instruktionssatzes, diese Ausarbeitung gibt aber lediglich einen Überblick
-über die prizipiellen Konzepte der Architektur. 
+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.
 
 \subsection{Einsatzgebiet}
 
-Im allgemeinen wird bei ARM eine Instruktionslänge von 32 Bits verwendet. Die gekürzte Thumb-Version verwendet lediglich 16 Bit. 
-Es existieren 31 general-purpose Register, 16 davon können direkt über die Registeradressen in den Instruktionen adressiert werden. 
+Im allgemeinen wird bei ARM eine Instruktionsl\"ange von 32 Bits verwendet. Die gek\"urzte Thumb-Version verwendet lediglich 16 Bit. 
+Es existieren 31 general-purpose Register, 16 davon k\"onnen direkt \"uber die Registeradressen in den Instruktionen adressiert werden. 
 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. 
-Diese Register können allerdings auch über normale Instruktionen beschrieben werden. Das Link-Register beinhaltet die Rücksprungadresse
+Diese Register k\"onnen allerdings auch \"uber normale Instruktionen beschrieben werden. Das Link-Register beinhaltet die R\"ucksprungadresse
 im Falle eines Subroutinen-Calls.
 
-ARM bietet eine breite Varianz an Kernen für den Einsatz in verschiedenen Gebieten.
+ARM bietet eine breite Varianz an Kernen f\"ur den Einsatz in verschiedenen Gebieten.
 Beispielsweise ist die ARM710 Familie designed um in Hand-Helds und anderen Multimediabereichen Anwendung zu finden. 
-Die leistungsfähigere 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ähigeren ARM-Prozessoren.
+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).
 
 %\subsection{Where are processors that implement the ISA deployed? In embedded systems (microcontrollers,
@@ -44,12 +44,12 @@ Einem Bericht aus 2007 zufolge verwenden ca 98 Prozent der verkauften Mobiltelef
 
 \subsection{Conditional Instructions and Jumps}
 
-Im Vergleich zu älteren RISC Architekturen kommt ARM ohne die Verwendung von Branch-Delay-Slots aus, somit sind Latenzen 
+Im Vergleich zu \"alteren RISC Architekturen kommt ARM ohne die Verwendung von Branch-Delay-Slots aus, somit sind Latenzen 
 nicht am Software-Level sichtbar. Des weiteren gibt es Predicated Instructions, welche erlauben, dass die Instruktion nur 
-im Falle eines gesetzten Prädikats ausgeführt wird. ARM verwendet für nahezu jede Instruktion 4 Bits an Prädikaten. Somit 
-können theoretisch 16 verschiedene Ausführungsmöglichkeiten abgeleitet werden, es werden 15 genützt. 
-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: 
+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:
 
 \begin{lstlisting}[caption=Beispiel]{}
 
@@ -61,10 +61,10 @@ end if
 
 \end{lstlisting}
 
-Somit können kleine if-Blöcke auf sequenzielle Statements ohne Sprung abgebildet werden.
-Sollte für eine Instruktion die Kondition nicht erfüllt sein wird diese einfach durch ein NOP ersetzt.
+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.
 
-Ein mögliches Prädikat ist auch Always, somit wird keine Bedingung im Statusregister geprüft.
+Ein m\"ogliches Pr\"adikat ist auch Always, somit wird keine Bedingung im Statusregister gepr\"uft.
 
 %\subsection{Are latencies handled by the hardware or are they visible at the ISA level? For example,
 %branch delay slots expose the latencies of branches at the ISA level.}
@@ -83,12 +83,12 @@ Ein m
 
 \subsection{Ziele}
 
-Da diese Architektur immer häufiger in mobilen Multimediageräten eingesetzt wird liegen die Ziele in
-den folgenden Bereichen: Performance, Die Area, Energy Efficiency und Code Size. Die Liste könnte noch weiter
-fortgesetzt werden, dies sind aber die wichtigsten Punkte. 
-Energieeffizient ist wichtig für lange Batterielebenszeiten bzw. das nicht vorhanden sein von diversen Kühleinrichtungen. 
+Da diese Architektur immer h\"aufiger in mobilen Multimediager\"aten eingesetzt wird liegen die Ziele in
+den folgenden Bereichen: Performance, Die Area, Energy Efficiency und Code Size. Die Liste k\"onnte noch weiter
+fortgesetzt werden, dies sind aber die wichtigsten Punkte.
+Energieeffizient ist wichtig f\"ur lange Batterielebenszeiten bzw. das nicht vorhanden sein von diversen K\"uhleinrichtungen. 
 Die Codesize wird durch das Verwenden von Predicated Statements und der Destination + 2 Operanden Register Adressierung pro Befehl
-realisiert. Dieser Punkt wirkt sich auch positiv auf die Performance des Prozessors aus. Allerdings müssen durch die 
+realisiert. Dieser Punkt wirkt sich auch positiv auf die Performance des Prozessors aus. Allerdings m\"ussen durch die 
 Load/Store Architektur Variablen immer zuerst in Register geladen werden.
 
 %\subsection{What are the goals of the architecture? Performance, die area, energy efficiency, code
@@ -100,14 +100,14 @@ Load/Store Architektur Variablen immer zuerst in Register geladen werden.
 %add a branch for every small if-else-block. The opportunity of accessing 2 operand registers in a computation instruction
 %and the load multiple instruction are increasing the performance of the system.
 
-\subsection{Gut gelöst bzw. Verbesserungswürdig}
+\subsection{Gut gel\"ost bzw. Verbesserungsw\"urdig}
 
 Das Verwenden von Predicated Statements ist meiner Meinung nach sehr intelligent verwirklicht, da man 
-das Ausführen eines Befehls von einer breiten Varianz an Bedingungen abhängig machen kann. Außerdem 
-ist es durch Verwendung von konditionierten Instruktionen möglich eine konstante Ausführungszeit eines Algorithmus zu erzielen. 
+das Ausf\"uhren eines Befehls von einer breiten Varianz an Bedingungen abh\"angig machen kann. Außerdem 
+ist es durch Verwendung von konditionierten Instruktionen m\"oglich eine konstante Ausf\"uhrungszeit eines Algorithmus zu erzielen.
 
 Ein negativer Aspekt ist das Fehlen von Shift- bzw. Rotate Instruktionen. Diese werden direkt in den einzelnen Befehlen 
-implementiert, man kann solches Verhalten auf einen Operanden einer Anweisung anwenden. Dies hat aber natürlich auch seine Vorteile.
+implementiert, man kann solches Verhalten auf einen Operanden einer Anweisung anwenden. Dies hat aber nat\"urlich auch seine Vorteile.
 
 %\subsection{Which features of the ISA do you like, which features would you change?}
 
@@ -138,9 +138,13 @@ loop:
 
 \end{lstlisting}
 
-Jeder Schleifendurchlauf führt ein Load, ein Add, ein Compare und ein Branch-Equal aus. 
+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
-Aussagen über die Clockcycles:
+Aussagen \"uber die Clockcycles:
 
-ldr 3, add 1, cmp 1, bne 3, was bedeutet, dass ein Schleifendurchlauf 8 Zyklen benötigt (Informationen aus dem Manual des Prozessors entnommen).
+ldr 3, add 1, cmp 1, bne 3, was bedeutet, dass ein Schleifendurchlauf 8 Zyklen ben\"otigt (Informationen aus dem Manual des Prozessors entnommen).
+
+Die Anzahl der Instruktionen in der Schleife ist 4, 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.
index 46e91991652ba710e9f7797652bfb8b43c1e4a6b..55d890c9385617bc6ba8ee0c4ea2a437b5c9a4ec 100644 (file)
@@ -14,15 +14,11 @@ Codesize und Ausf\"uhrungszeit des Codest\"ucks \texttt{sum} sind in Tabelle \re
 \begin{center}
        \begin{tabular}{|l|c|c|c|c|c|}\hline
                Anzahl        & AVR   & ARM & PowerPC & MCS-51 & SPEAR2 \\ \hline
-               Instruktionen & 9     & 6   & 3       & 21     & 6      \\ \hline
+               Instruktionen & 9     & 4   & 3       & 21     & 6      \\ \hline
                Zyklen        & 13/14 & 8   & 3       & 30     & 7      \\ \hline
-               Bytes         & 18    &     & 12      & 32     & 12     \\ \hline
+               Bytes         & 18    & 16  & 12      & 32     & 12     \\ \hline
        \end{tabular}
        \caption{Vergleich der ISAs anhand der erfassten Kennwerte}
        \label{cmp_tab}
 \end{center}
 \end{table}
-
-
-
-\huge{ARM CODESIZE FEHLT!!!}