X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=1_isacmp%2Fppc.tex;h=b12fe38d9616b5c42cc6ceae40346e27334bdbd6;hb=ad7590f4f4876c485d17c38f9ccb5821cb7f48b4;hp=734d62864add6744ce4536f514a33febad829157;hpb=4a2da1634ef4e4ac7ec5454c4ecaa351781e5528;p=calu.git diff --git a/1_isacmp/ppc.tex b/1_isacmp/ppc.tex index 734d628..b12fe38 100644 --- a/1_isacmp/ppc.tex +++ b/1_isacmp/ppc.tex @@ -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,13 +26,9 @@ 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 @@ -44,17 +39,17 @@ 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}} @@ -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{}