Revert "bootromfun: stuff zum debuggen fuern stefan :/"
[calu.git] / 1_isacmp / ppc.tex
index ab2751433ff41500f30094ce955ad6d504a14518..b12fe38d9616b5c42cc6ceae40346e27334bdbd6 100644 (file)
@@ -15,7 +15,6 @@ Implementierung 32- oder 64-Bit sein; hier wollen wir nur auf 32-Bit eingehen.
 \subsection{Einsatzgebiete und Ziele}
 PowerPC wurde mit dem Ziel entwickelt m\"oglichst skalierbar und flexibel zu
 sein, da die tats\"achlichen Anwendungsgebiete recht unterschiedlich sind.
-
 Man findet diese Architektur daher in verschiedenen Bereichen:
 \begin{description}
 \item[Desktop] Apple verwendete PowerPC, aber mittlerweile von \texttt{x86}
@@ -27,34 +26,30 @@ finden
 Architektur weit mehr ist}
 \item[Server] Vertreten durch beispielsweise POWER7 oder BlueGene
 \end{description}
-
 % What are the goals of the architecture? Performance, die area, energy
 % efficiency, code size, . . . ?
-
 % How are these goals reflected in the ISA?
-
-
 Die PowerPC Architektur ist also recht vielf\"altig und es gibt daher nicht
 \textit{das} Einsatzgebiet. Im Speziellen gibt es verschiedene \textit{Books}
 die unterschiedliche Bereiche abdecken und je nach den Bed\"urfnissen des CPU
 Herstellers implementiert werden k\"onnen.
-Darunter fallen verschiedene Bereiche wie Floating Point, Signal Processing oder
+Darunter fallen Themen wie Floating Point, Signal Processing oder
 Vector Operationen. Weiters gibt eine sogenannte Basiskategorie die von allen
 Implementierung umgesetzt werden muss.
 
 \subsection{Beschreibung}
 Bei den meisten Befehle der ISA handelt es sich um Register-zu-Register
-Operationen im Drei-Register Format. Jede Instruktion ist vier Byte gross.
-Durch Load bzw. Store Operationen besteht wie in jeder Load/Store-Architektur
+Operationen im Drei-Register Format. Jede Instruktion ist vier Byte gro\ss.
+Durch Load bzw. Store Operationen besteht, wie in jeder Load/Store-Architektur,
 die M\"oglichkeit am Speicher zu operieren -- die Adressierungsarten sind
-hierbei \"ausserst eingeschr\"ankt: Zum Beispiel l\"adt die Instruktion
+hierbei \"au\ss erst eingeschr\"ankt: Zum Beispiel l\"adt die Instruktion
 \mbox{\texttt{lwz r3,4(r1)}} den Inhalt an der Speicherstelle \texttt{r1+4} in
 das Register \texttt{r3}. Weiters kann man die Basisadresse nach der
 Speicheroperationen noch updaten, zum Beispiel: \texttt{stwu r3,4(r1)} speichert
 den Inhalt von \texttt{r3} an die Speicherstelle \texttt{r1+4} und setzt weiters
 \texttt{r1 := r1 + 4}.
 
-Typische Register plus Erkl\"arung die in einer PowerPC Implementierung
+Typische Register, plus Erkl\"arung, die in einer PowerPC Implementierung
 vorhanden sind, findet man in Tabelle \ref{tab:ppcreg}.
 \begin{table}[ht!]
        \begin{tabular}{lp{3cm}p{9cm}}
@@ -82,7 +77,7 @@ vorhanden sind, findet man in Tabelle \ref{tab:ppcreg}.
 % level.
 
 Latenzen sind auf ISA Niveau nicht sichtbar, man kann dem Prozessor aber
-Voraussagen mitteilen. Zum Beispiel, ist bei der gegebenen Funktion
+Voraussagen mitteilen. Beispielsweise ist bei der gegebenen Funktion
 \texttt{sum()} die L\"ange auf Null zu pr\"ufen. Da im allgemeinen Fall ein Wert
 ungleich Null erwartet wird, kann dem Sprung eine Voraussage mitteilen, wobei
 \texttt{-} f\"ur Sprung wird nicht ausgef\"uhrt und \texttt{+} f\"ur das
@@ -109,10 +104,9 @@ Befehl. Um die Funktionsweise zu demonstrieren: Der Aufruft \mbox{\texttt{rlwinm
 rA,rS,SH,MB,ME}}, wobei \mbox{$0 \le \text{SH,MB,ME} \le 31$} gilt, nimmt den
 Inhalt aus \texttt{rS} und rotiert diesen um \texttt{SH} nach links. Danach wird
 auf das Ergebnis mit einer Maske verundet. Die angesprochene Maske ist 32-Bit
-gross und von der Stelle MB bis ME mit 1er und ansonsten 0er belegt. Sollte
-% TODO: gutes deutsches Wort?
-$\text{MB} > \text{ME}$ sein, so wird ``gewrappt''. Das Ergebnis wird in
-\texttt{rD} gespeichert.
+gro{\ss} und von der Stelle MB bis ME mit 1er und ansonsten 0er belegt. Sollte
+$\text{MB} > \text{ME}$ sein, so werden die Stellen ME bis MB mit 0er belegt
+und die anderen Stellen mit 1er. Das Ergebnis wird in \texttt{rD} gespeichert.
 \item
 \textbf{\texttt{cntlzw}}: \textit{Count Leading Zeros Word}
 \item \dots{}
@@ -125,6 +119,8 @@ W\"unsche: Keine.
 In der Schleife werden also drei Befehle ausgef\"uhrt, wobei \texttt{lwzu} zwei
 Taktzyklen ben\"otigt und \texttt{add} einen Zylus braucht. \texttt{bdnz}
 braucht im allgemeinen Fall \textit{keinen} Zyklus, da die Hardware den Sprung
-schon sehr fr\"uh in der Pipeline berechnen kann. Die Codegr\"o\ss{}e der
+schon sehr fr\"uh in der Pipeline berechnen kann
+\footnote{Zyklendauer aus dem Datenblatt des PowerPC 750CXe entnommen}.
+Die Codegr\"o\ss{}e der
 Schleife betr\"agt 12 Byte, da jede Instruktion 4 Byte gross ist.