X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=1_isacmp%2Fspear2.tex;h=291be4e9cf47e8cb4c42d071bddff06592a3e80c;hb=cce7e862c52416bed9792a91a7d41803ca07f539;hp=2f222adb46c6cafcb1bf8253f94e755fdfd424b0;hpb=dfd8bc686aa333a3ce6eccb8234e4b81370721c2;p=calu.git diff --git a/1_isacmp/spear2.tex b/1_isacmp/spear2.tex index 2f222ad..291be4e 100644 --- a/1_isacmp/spear2.tex +++ b/1_isacmp/spear2.tex @@ -14,7 +14,7 @@ Entwickler die Wahl, welchen Algorithmus er in Hardware und welchen Software imp \subsection{Conditional Instructions und Jumps} Alle Abh\"angigkeiten werden von der Hardware \"uberpr\"uft und entsprechend behandelt. D.h. im ISA-Level m\"ussen keine Abh\"angigkeiten ber\"ucksichtigt werden. Im Falle von CI wird entweder -ein NOP-eingef\"ugt (bzw. Ctrl-Signale deaktiviert) oder die Instruktion wird normal behandelt. +ein \texttt{NOP} eingef\"ugt (bzw. Ctrl-Signale deaktiviert) oder die Instruktion wird normal behandelt. Alle Conditional- und Jump Tests passiern in der Decode-Stufe und die eigentliche Ausf\"uhrung wird in der Exec-Stage abgeschlossen, wobei Ctrl-Signale an die Decode-Stufe zur\"uckgef\"uhrt werden. Es wurden keine Stalls oder \"ahnliches eingef\"uhrt, damit die Programm Execution einer Instruktion konstant bleibt. @@ -26,7 +26,8 @@ diese als Erweiterungsmodule implementiert werden. Somit kann der Spear2 relativ und eine h\"ohere Taktrate erzielen als eine Hardcore-Architektur. Au\ss erdem ist SW leichter zu warten und verstehen, dies wiederrum verk\"urzt die Entwicklungszeit. Dennoch wird ein Fixedfunction-Core bessere Ergebnisse erzielen, wenn sich die Funktionalit\"at des Softcore-Prozessors nicht mehr von diesem unterscheidet. -Da aber die ISA relativ begrenzt ist (add, sub, comp, load, store,...), wird die Programmgr\"o\ss e (fixed OP-Code) nat\"urlich +Da aber die ISA relativ begrenzt ist (\texttt{add}, \texttt{sub}, \texttt{comp}, +\texttt{load}, \texttt{store},...), wird die Programmgr\"o\ss e (fixed OP-Code) nat\"urlich bei komplexen Operationen wachsen. Dennoch ist der OP-Code mit 16-Bit relativ klein. Damit auf Extension-Module oder Speicher schnell zugegriffen werden kann (Stackoperation), gibt es sogenannte Framepointer. @@ -37,24 +38,25 @@ Prinzipiell ist diese ISA eine sehr kompakte und elegante Form einer RISC-Archit w\"unschenswert gewesen, da bei verschachtelten Subroutine-Calls die Software die R\"ucksprungadresse speichern muss. F\"ur einen stack\"ahnlichen Betrieb kann nat\"urlich ein Framepointer herangezogen werden. Dennoch w\"achst dadurch der Code. \subsection{Listing} -Register r14 wird f\"ur die R\"ucksprungadresse verwendet, r0 f\"ur den R\"uckgabewert und r1-r4 f\"ur die Argumente. -r5-r8 wird f\"ur tempor\"are Register verwendet (Caller-Save). +Register \texttt{r14} wird f\"ur die R\"ucksprungadresse verwendet, \texttt{r0} f\"ur den R\"uckgabewert und \texttt{r1-r4} f\"ur die Argumente. +\texttt{r5-r8} wird f\"ur tempor\"are Register verwendet (Caller-Save). \begin{lstlisting}[caption=Spear2 Code]{Spear2-Code} -ldli r0, 0 #sum=0 -ldli r5,-20 #Framepointer X -ldli r6, 0 #i=0 -stw r2, r5 #fpx -> &arr[0] +ldli r0, 0 #sum=0 +ldli r5,-20 #Framepointer X +ldli r6, 0 #i=0 +stw r2, r5 #fpx -> &arr[0] cmp_eq r1, r6 #for jmpi_ct, 4 #i