\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}
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}}
% 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
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{}
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.