isa_cmp: layout stuff and minor fixes again
[calu.git] / 1_isacmp / 8051.tex
index 1b3c26974d904a014c085aeecb18c32cc01f72e8..66173f44831a615697cedff2c3895c2771913460 100644 (file)
@@ -8,9 +8,9 @@ Die MCS-51 ist eine Akkumulator Maschine, das ein 8-Bit Instruktionset besitzt,
 Trotz des Alters des MCS-51 werden kompatible Prozessoren noch immer verbaut. Durch die hohe Vielfalt an konkreten Prozessoren k\"onnen sie in vielen Gebieten eingesetzt werden, z.B. wenn ein geringer Stromverbrauch ben\"otigt wird und 8-Bit ausreichend sind. Der von Intel im ``MCS\copyright 51 Microcontroller Family User's Manual (1994)'' angegebene Einsatzzweck sind regelungstechnische Anwendungen.
 
 \subsection{Conditional Jumps}
-Conditional Jumps sind als Instruktionen vorhanden, jedoch in limitierten Umfang. Es sind nur (not) zero auf Bytes, Carry set auf das Statusbyte und Bit (not) set auf einige ausgew\"ahlte Bytes im RAM m\"oglich. Alle anderen Sprungtypen m\"ussen auf die vorhandenen Zur\"uckgef\"uhrt werden.
+Conditional Jumps sind als Instruktionen vorhanden, jedoch in limitierten Umfang. Es sind nur \texttt{(not) zero} auf Bytes, Carry set auf das Statusbyte und Bit \texttt{(not) set} auf einige ausgew\"ahlte Bytes im RAM m\"oglich. Alle anderen Sprungtypen m\"ussen auf die vorhandenen Zur\"uckgef\"uhrt werden.
 
-Latenzen werden in Hardware behandelt und sind nicht auf dem ISA Level sichtbar. Es ist jedoch anzumerken das in der MCS-51 Architektur eine Unterscheidung zwischen Clocktakt und Maschinenzyklen zu machen ist. Eine Instruktion ben\"otigt f\"ur ihre Ausf\"uhrung mindestens einen Maschinenzyklus. Ein Maschinenzyklus wird in sechs Teilbereiche unterteilt, die \"ublichen Pipelinestages \"ahnlich sind, und je 6 Clocktakte ben\"otigen. Dadurch entspricht eine Maschinenzyklus 12 Clocktakten.
+Latenzen werden in Hardware behandelt und sind nicht auf dem ISA Level sichtbar.  Es ist jedoch anzumerken das in der MCS-51 Architektur eine Unterscheidung zwischen Clocktakt und Maschinenzyklen zu machen ist. Eine Instruktion ben\"otigt f\"ur ihre Ausf\"uhrung mindestens einen Maschinenzyklus. Ein Maschinenzyklus wird in sechs Teilbereiche unterteilt, die \"ublichen Pipelinestages \"ahnlich sind, und je sechs Clocktakte ben\"otigen. Dadurch entspricht eine Maschinenzyklus 12 Clocktakten.
 Diese Unterscheidung muss bei modernen Designs, wie dem CPI-51, nicht mehr gemacht werden. Diese besitzen schon eine vollst\"andige Pipeline wodurch ein Maschinenzyklus einem Clocktakt entspricht.
 
 \subsection{Ziele}
@@ -21,9 +21,9 @@ Als angenehme Features sind folgende Punkte zu nennen:
 \begin{itemize}
        \item Teilweise Anwendung von boolschen Operatoren auf einzelne Bits
        \item In der ISR-Vector Tabelle sind 8 Bytes f\"ur jeden Interrupt vorhanden, wodurch kleine ISR's direkt in dieser platziert werden k\"onnen.
-       \item Es gibt 4 Registerbanken zu je 8 Registern die \"uber das PSW \footnote{Program Status Word} ausgew\"ahlt werden k\"onnen.
+       \item Es gibt 4 Registerbanken zu je 8 Registern die \"uber das PSW\footnote{Program Status Word} ausgew\"ahlt werden k\"onnen.
        \item Eine Division liefert Quotient und Rest.
-       \item Die DJNZ-Operation \footnote{decrement jump not zero} ist bei Schleifen mit einem 8-Bit Counter gut einsetzbar.
+       \item Die DJNZ-Operation\footnote{\texttt{decrement jump not zero}} ist bei Schleifen mit einem 8-Bit Counter gut einsetzbar.
 \end{itemize}
 
 Als etwas gew\"ohnungsbed\"urftig kann man folgende Features bezeichnen:
@@ -44,9 +44,8 @@ Das Ergebnis der \"Ubersetzung h\"angt von Vorbedingungen ab die nicht angegeben
 \end{itemize}
 
 \lstinputlisting[caption=MCS-51 Code]{8051.s}
-
 Das Timing wurde f\"ur die Original MCS-51 Architektur ermittelt.
 Es werden pro Schleifeniteration 21 Instruktionen ausgef\"uhrt. Dadurch ergibt sich eine Ausf\"uhrungszeit von 30$\mu$s (bei einer Clock von 12MHz) was 30 Maschinenzyklen beziehungsweise 360 Clocktakte entspricht. Die Codesize der Schleife ist 32 Bytes.
 
-Wenn man von 8-Bit Daten ausgehen w\"urde, h\"atte eine Schleifeniteration 5 Instruktionen, eine Ausf\"uhrungszeit von 8$\mu$s und eine Codesize von 6 Bytes. Es ist also sehr sch\"on zu sehen das Operationen mit 16-Bit Daten sehr teuer sind im Vergleich zu 8-Bit Daten.
+Wenn man von 8-Bit Daten ausgehen w\"urde, h\"atte eine Schleifeniteration f\"unf Instruktionen, eine Ausf\"uhrungszeit von 8$\mu$s und eine Codesize von 6 Bytes. Es ist also sehr sch\"on zu sehen das Operationen mit 16-Bit Daten sehr teuer sind im Vergleich zu 8-Bit Daten.