Hiermit bestätige ich, dass ich vor Prüfungsbeginn darüber in Kenntnis gesetzt wurde, dass ich im Falle einer plötzlich während der Prüfung auftretenden Erkrankung das Aufsichtspersonal umgehend informieren muss. Dies wird im Prüfungsprotokoll vermerkt. Danach muss unverzüglich ein Rücktritt von der Prüfung beim zuständigen Prüfungsausschuss beantragt werden. Ein vertrauensärztliches Attest - ausgestellt am Prüfungstag - ist unverzüglich nachzureichen. Wird die Prüfung hingegen in Kenntnis der gesundheitlichen Beeinträchtigung dennoch regulär beendet, kann im Nachhinein kein Prüfungsrücktritt aufgrund von Krankheit beantragt werden. Wird die Prüfung wegen Krankheit abgebrochen, wird die Klausur mit der Note "5,0 - nicht erschienen" gemeldet und - unabhängig von einem Rücktrittsantrag - nicht bewertet.
Name:
Hörsaal: Reihe: Platz:
Bachelorprüfung Modul ComputertechnikComputersysteme 1
Hier Etikett einkleben (Prüfungsaufsicht):
Prüfungsfähigkeit:
Weitere Hinweise:
Die Prüfungsdauer beträgt 75 Minuten.!Es sind keine Hilfsmittel erlaubt, auch keine Taschenrechner!
Heftung nicht öffnen - keine Blätter abtrennen! Lösungen bitte immer nur in den dafür vorgesehenen Abschnitt eintragen. An anderen Stellen eingetragene Lösungen werden nicht bewertet. Ggf. zweiten Angabebogen anfordern. !Verwenden Sie zum Schreiben bitte einen dunklen Stift - die Prüfungen werden eingescannt!!Die Prüfung besteht inkl. Anhang und Konzeptpapier aus 22 Seiten - bitte überprüfen!!Die angegebene Anzahl zu erreichender Punkte ist als vorläufig zu betrachten.!Alle Aufgaben sind unabhängig von der Lösung vorangegangener Aufgaben lösbar. Vorange-gangene Angaben können benötigt werden.
-!-!-!-!!-!-!-!-
Fakultät: EI EDU BWL INF
Matrikel-Nr.:
Vorname:
Unterschrift:
Bitte ausfüllen:
Aufg. 1Punkte:
Aufg. 2
Aufg. 3
Aufg. 4
Aufg. 5
Aufg. 6
Summe
24.07.2014
Übersicht
1 Komponenten Computer-Systeme (4 Punkte) 3
2 Zahldarstellung (4 Punkte) 3
3 MMIX (30 Punkte) 4
3.1 Assembler- und Loaderbefehle (3 Punkte) . . . . . . . . . . . . . . . . 4
3.2 MMIX Befehlsformat - Übersetzungstabelle (3 Punkte) . . . . . . . . 4
3.3 Befehls-Definitionen (4 Punkte) . . . . . . . . . . . . . . . . . . . . . . 5
3.4 Lade- und Speicherbefehle – Alignment (7 Punkte) . . . . . . . . . . . 6
3.5 Arithmetische Befehle (6 Punkte) . . . . . . . . . . . . . . . . . . . . . 7
3.6 Funktionsaufrufe/Stack (7 Punkte) . . . . . . . . . . . . . . . . . . . . 8
4 Mikroarchitektur (21 Punkte) 10
4.1 MMIX-Datenpfad (10 Punkte) . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2 Entwurf eines Moore-Automaten (7 Punkte) . . . . . . . . . . . . . . . 12
4.3 ROM basierte Steuerung (4 Punkte) . . . . . . . . . . . . . . . . . . . . 14
5 Pipelining (18 Punkte) 16
6 Cache (10 Punkte) 18
3
1 Komponenten Computer-Systeme (4 Punkte)
a) Nennen Sie drei logische Grundeinheiten eines Prozessors. (3 Punkte)
z.B.
• Rechenwerk/ALU
• Registerblock
• Steuerwerk/Leitwerk
• Befehlsregister
• Befehlszähler
• Flags
• Bus-Treiber
• Cache
• Einheit zur Adress-Umsetzung
b) Wo sind die Direkt-Operanden eines Befehls gespeichert? (1 Punkt)
Im Befehlswort
2 Zahldarstellung (4 Punkte)
a) Welchen Wert hat eine Zahl, deren Kodierung als 64 Bit breite Gleitkomma-Zahl
0xC02B 8000 0000 0000 lautet? Geben Sie den Rechenweg an! (4 Punkte)
0xC02B 8000 0000 0000) 1 10000000010 10111000...0e - K = 1026) e = 1026 - 1023 = 3
Mantisse: 1,1011100...0
) Wert: -1,1011100...0 · 23 = -1101,1100...) -13,75
4 3 MMIX
3 MMIX (30 Punkte)
Hinweis: Sie können in allen Aufgaben buf, buf1, ... als Pufferregister verwenden.
3.1 Assembler- und Loaderbefehle (3 Punkte)
a) Geben Sie die Anweisung an, mit der Sie Register 1 durch den Namen ergansprechbar machen. (1 Punkt)
erg IS $1
b) Wie können Sie einen Namensraum beenden? (1 Punkt)
PREFIX :
c) Mit welchem Befehl können Sie im Speicher ein 16 Bit breites Datenwort zur
Aufnahme einer Zahl im 2er-Komplement reservieren? (1 Punkt)
WYDE
3.2 MMIX Befehlsformat - Übersetzungstabelle (3 Punkte)
Beachten Sie die Tabelle auf der rechten Seite.
a) In welches Befehlswort wird der Befehl SUB $1,$1,3 übersetzt? (2 Punkte)
0x25010103 (Ausgehend von 2 Punkten wird für falschen Opcode, falsches $X,$Y oder Z jeweils 1 Punkte abgezogen. Insgesamt werden maximal 2 Punkte
abgezogen.)
b) Was bedeutet in der Tabelle der Ausdruck [B]? (1 Punkt)
B = Backward; Sprung zurück.
53.3 Befehls-Definitionen
! "#$%
!"#"$% &'()*+,-.%(*/%012'(*/%!&'(!)*+*,-(#.*-/!01234/*5!67*8434/*9!:;</!=*8>((!7'3,+4-=*7/*<!?'@*--*!A@*<(*BCBD!!
0x..0 0x..1 0x..2 0x..3 0x..4 0x..5 0x..6 0x..7
TRAP 5ν FCMP ν FUN ν FEQL ν FADD 4ν FIX 4ν FSUB 4ν FIXU 4ν
FMUL 4ν FCMPE 4ν FUNE ν FEQLE 4ν FDIV 40ν FSQRT 40ν FREM 4ν FINT 4ν
SETH ν SETMH ν SETML ν SETL ν INCH ν INCHM ν INCML ν INCL νORH ν ORMH ν ORML ν ORL ν ANDNH ν ANDNMH ν ANDNML ν ANDNL ν
POP 3ν RESUME 5ν SYNC ν SWYM ν GET ν TRIP 5ν0x..8 0x..9 0x..A 0x..B 0x..C 0x..D 0x..E 0x..F
SUB[I] ν
CSNP[I] νZSP[I] ν
SUBU[I] ν16ADDU[I] νNEGU[I] νSRU[I]ν
BOD[B] ν+πBEV[B] ν+πPBOD[B] 3ν-π
CMPU[I] νSLU[I] νBZ[B] ν+πBNZ[B] ν+πPBZ[B] 3ν-π
CSNZ[I] νZSZ[I] ν
ADD[I] ν
CSNN[I] νZSN[I] ν
ADDU[I] ν4ADDU[I] ν
PBNZ[B] 3ν-πCSZ[I] ν
0x0.. 0x0..FLOT[I] 4ν FLOTU[I] 4ν SFLOT[I] 4ν SFLOTU[I] 4ν
PUSHJ[B] ν GETA[B] ν PUT[I] ν[UN]SAVE 20µ+ν
XOR[I] νNXOR[I] νODIF[I] νMXOR[I] ν
STWU[I] µ+νSTOU[I] µ+νSTUNC[I] µ+νPUSHGO[I] 3ν
LDWU[I] µ+νLDOU[I] µ+νLDUNC[I] µ+νGO[I] 3ν
CSOD[I] νPBEV[B] 3ν-π
ZSEV[I] ν
CSEV[I] νZSOD[I] ν
NAND[I] νTDIF[I] νMOR[I] ν
STO[I] µ+νSTCO[I] µ+νSYNCID[I] νNOR[I] ν
LDO[I] µ+νCSWAP[I] 2µ+2νPREGO[I] νSTW[I] µ+ν
PBNP[B] 3ν-πCSP[I] ν
ZSNP[I] νLDW[I] µ+ν
BNP[B] ν+πPBP[B] 3ν-π
8ADDU[I] νNEG[I] νSR[I] νBP[B] ν+π
ORN[I] νANDN[I] νWDIF[I] νSADD[I] ν
STBU[I] µ+νSTTU[I] µ+νSTHT[I] µ+νPREST[I] ν
LDBU[I] µ+νLDTU[I] µ+νLDHT[I] µ+νPRELD[I] ν
ZSNZ[I] ν
BDIF[I] νMUX[I] ν
JMP[B] ν
STSF[I] µ+νSYNCD[I] νOR[I] νAND[I] ν
LDSF[I] µ+νLDVTS[I] νSTB[I] µ+νSTT[I] µ+ν
BNN[B] ν+πPBN[B] 3ν-πPBNN[B] 3ν-πCSN[I] ν
ZSNN[I] νLDB[I] µ+νLDT[I] µ+ν
2ADDU[I] νCMP[I] νSL[I] νBN[B] ν+π
0xC..
0xD..
0xE..
0xF..
0x8..
0x9..
0xA..
0xB..
0xD..
0xE..
0xF..
0x1..
0x2..
0x3..
0x4..
0x5..
0x6..
0x7..
0x9..
0xA..
0xB..
0xC..
0x5..
0x6..
0x7..
0x8..
0x1..
0x2..
0x3..
0x4..
MUL[I] 10ν MULU[I] 10ν DIV[I] 60ν DIVU[I] 60ν
!!!&'(!*<(B*!E;@@-*!0F!);B#G*<B9!/*(!1234/*(!*7B(2<;3,B!/*<!&422*-C*;-*!0H!@;(!IJ95! ;7!/*<!(;3,!/*<!)*#+*,-(34/*!@*+;7/*BD!!!&'(!C:*;B*!E;@@-*!/*(!1234/*(!*<=;@B!(;3,!:;*!+4-=BK!!
−! 6L)!0);B!E<D!"9!/*(!C:*;B*7!E;@@-*(!+! H5!:*77!(;3,!/*<!)*+*,-!;8!4@*<*7!?*;-!/*<!&422*-!"#$"!@*+;7/*B!+! I5!:*77!(;3,!/*<!)*+*,-!;8!M7B*<*7!?*;-!/*<!&422*-!"#$"!@*+;7/*B!!
!−! );B(!$5!I!M7/!H!/*(!C:*;B*7!E;@@-*(!*7B(2<*3,*7!/*<!%&'$("!0H!@;(!%95!;7!/*8!(;3,!/*<!)*+*,-(#34/*!@*+;7/*B!
![I]!@*/*MB*BK!N88*/;'B*#O'<;'7B*!/*(!)*+*,-(!
−! ;88*/;'B*!⇔!&;<*PB42*<'7/!−! ADD $1,$2,$3K!7;3,B!;88*/;'B*5!/'!/*<!"D!12*<'7/!*;7!Q*=;(B*<!;(B!M7/!P*;7*!R',-!−! ADD $1,$2,3K!;88*/;'B*5!/'!'-(!"D!12*<'7/!*;7*!R',-!'7=*=*@*7!;(B!M7/!P*;7!Q*=;(B*<!−! /*<! 1234/*! /*<! ;88*/;'B*#O'<;'7B*! *;7*(! )*+*,-(! ;(B! ;88*<! M8! I! ,S,*<! '-(! /;*! 7;3,B#;88*/;'B*#O'<;'7B*!/*(!)*+*,-(!0(B*,B!;7!/*<!&422*-)&'$("!'-(4!<*3,B(9!
−! *;7*! ;88*/;'B*#O'<;'7B*!/*(!)*+*,-(!:;</!T48!U((*8@-*<!'MB48'B;(3,!'7,'7/!/*(! +*,-*7/*7!&4--'<#R*;3,*7(! 0$9! *<P'77B5! :*(,'-@! ;8! V<4=<'88! 7;3,B! *W2-;C;B!ADDI! =*(3,<;*@*7! :*</*7!8M((!!!
3.3 Befehls-Definitionen (4 Punkte)
a) Welchen Effekt hat der Ausdruck rA rA|u064(2
5) ? (2 Punkte)
In Spezialregister rA wird das Bit mit der Nummer 5 auf den Wert 1 gesetzt.
b) Wozu wird beim SETL-Befehl der Ausdruck u064(u(YZ)) verwendet? (2 Punkte)
Das 16 Bit breite Wort YZ wird auf 64 Bit erweitert.
6 3 MMIX
3.4 Lade- und Speicherbefehle – Alignment (7 Punkte)
a) Tragen Sie in nachfolgende Tabelle den Speicherinhalt des MMIX-Prozessors ein,
der sich nach Ausführung der angegebenen Befehle ergibt. (3 Punkte)
LOC Data_SegmentGREG @BYTE 17WYDE 25
0x2000000000000000
0x2000000000000001
0x2000000000000002
0x2000000000000003
0x2000000000000004
Adresse: Daten:
17
?
0
25
?
Das folgende MMIX-Programm wird augeführt:
LOC Data_SegmentGREG @ $254 @
A WYDE #C3B OCTA #ABCD0123
LOC #100Main LDBU $1,A
LDB $2,$254,1LDT $3,$254,15STO $3,ATRAP 0,Halt,0
73.5 Arithmetische Befehle
Geben Sie für den Zeitpunkt der Ausführung des TRAP-Befehls hexadezimal alle 64 Bit ...
b) ... des in Register 1 gespeicherten Datenworts an. (1 Punkt)
0x0000000000000000
c) ... des in Register 2 gespeicherten Datenworts an. (1 Punkt)
0xFFFFFFFFFFFFFFC3
d) ... des in Register 3 gespeicherten Datenworts an. Geben Sie ebenfalls hexadezi-
mal alle Bits eines über die Marke A adressierten 32 Bit breiten Datenworts an.
(2 Punkte)
$3: 0xFFFFFFFFABCD012332 Bit breites Datenwort an Marke A: 0xFFFFFFFF
3.5 Arithmetische Befehle (6 Punkte)
a) Geben Sie MMIX-Befehle an, mit denen Sie X = 2,5 ·a +p
b berechnen und das
Ergebnis im Speicher an der Marke X ablegen. Die Variable a und b sind bereits
als Gleitkommazahlen in den Registern a und b abgelegt. (6 Punkte)
Hinweis: Die Wurzel können Sie mit dem Befehl FSQRT berechnen.
FLOT buf1,25 1/2 PktFLOT buf2,10 1/2 PktFDIV buf1,buf1,buf2 1 PktFMUL buf1,a,buf1 1 PktFSQRT buf2,b 1 PktFADD buf1,buf1,buf2 1 PktSTO buf1,X 1 Pkt
8 3 MMIX
3.6 Funktionsaufrufe/Stack (7 Punkte)Eine mit 2 Parametern aufgerufene Funktion hat die Register 0, 1, 2 und 3 (in dieser
Reihenfolge) auf den Stack gesichert, ein Ergebnis berechnet und dieses in Register
1 abgelegt. Die Rücksprungadresse wurde in Register 0 übergeben und soll auch
wieder dort abgelegt werden. Der Stackpointer kann über die global definierte Marke SPreferenziert werden.
a) Geben Sie MMIX-Befehle an, mit denen Sie – aus dem Namensraum Fkt: heraus
– das Ergebnis auf den Stack sichern, die Register wiederherstellen, und zum
Funktionsaufrufer zurückspringen. (5 Punkte)
Hinweis: Der Stackpointer zeigt auf die Sicherung von Register 0.
STO $1,:SP,5*8 1 Pkt.LDO $0,:SP,0 1/2 Pkt.LDO $1,:SP,1*8 1/2 Pkt.LDO $2,:SP,2*8 1/2 Pkt.LDO $3,:SP,3*8 1/2 Pkt.ADD :SP,:SP,5*8 1 Pkt.GO $0,$0,0 1 Pkt.
b) Geben Sie MMIX-Befehle an, mit denen Sie – aus dem Namensraum Main: heraus
– das Ergebnis o.g. Funktion vom Stack in das Register $1 einlesen und den
Stackpointer anpassen. (2 Punkte)
LDO $1,:SP,0 1 Pkt.ADD :SP,:SP,1*8 1 Pkt.
93.6 Funktionsaufrufe/Stack
Diese Seite ist absichtlich leer.
10 4 Mikroarchitektur
4 Mikroarchitektur (21 Punkte)
4.1 MMIX-Datenpfad (10 Punkte)
Interrupt Enable-Bits ermöglichen das Freischalten (1) oder Sperren (0) von Interrupts.
Interrupt Event-Bits zeigen an, ob ein entsprechendes Ereignis aufgetreten ist (1) oder
nicht (0). Im Spezialregister rA dienen die Bits V zur Steuerung der Interrupt-Behandlung
von Festkommazahl-Überläufen.
V V
interrupt enable interrupt event061463
rA
a) Tragen Sie in nachfolgende Abbildung eine Schaltung ein, die das Ausgangssignal
interrupt auf 1 setzt, wenn ein Festkommazahl-Überlauf stattgefunden hat und der
entsprechende Interrupt freigeschaltet ist. (2 Punkte)
64 1interruptrA
6
14
Nehmen Sie an, dass der MMIX-Prozessor über einen Befehl RETI mit Opcode 0xF9verfügt, der aus einer Interrupt-Service-Routine zurückspringt.
b) Tragen Sie in nachfolgende Abbildung eine Schaltung ein, die für den Fall, dass im
Befehlsregister der RETI-Befehl steht, den Ausgang RETI auf 1 setzt, anderenfalls
auf 0. (2 Punkte)
32 1RETI
Befehls- Register
31..2724
2526
114.1 MMIX-Datenpfad
Die nachfolgend abgebildete Schaltung soll folgende Funktion erfüllen:
• Wenn ein Interrupt auftritt (Signal interrupt wechselt von 0 auf 1), soll
• in die Interrupt Service Routine (ISR) verzweigt werden und
• die Rücksprungadresse imRegisterRücksprungadresse abgelegt wer-
den.
• Wenn der RETI-Befehl ausgeführt wird (RETI = 1), soll an die im Register
Rücksprungadresse stehende Adresse verzweigt werden.
• Anderenfalls soll der im Speicher auf den aktuellen Befehl folgende Befehl
ausgeführt werden.
c) Tragen Sie in nachfolgende Schaltung geeignete Verbindungen ein, damit sich das
beschriebene Verhalten ergibt. (6 Punkte)
64ISR
Adresse
1RETI
1interrupt
64
Befehls- zähler
4
ADD
1
0 1
0
Rück- sprung- adresse
12 4 Mikroarchitektur
4.2 Entwurf eines Moore-Automaten (7 Punkte)Für nachfolgend angegebenen Datenpfad soll eine Steuerung entwickelt werden.
0
4
1
0
clk_offset
1
0
Lese- Adresse
Schreib- Adresse
resetOffset
Daten- Speicher
Adr.
Daten
schreiben
Ausg.
ADD
Steuerung
ADD
clk_m
em
ende
write
0
1R1
0
0
1R2
0
0
1R3
0
Mittelwert
clk_rx
reset
Ende- Detektor
Die Steuer- und Signalleitungen sind jeweils 1 Bit breit, die Datenleitungen > 1 Bit.
Die Steuerung soll wie folgt funktionieren:
• In den Zuständen 0 und 1 sollen das Register Offset sowie die Register Rx (x =
1, 2, 3) mit 0 initialisiert werden (1,5 Punkte).
• In den Zuständen 2 und 3 soll der im Speicher an der Adresse Lese-Adresse +
Offset stehende Wert in das Register R1 übernommen werden (1,5 Punkte).
• In den Zuständen 4 und 5 soll das durch den Block Mittelwert berechnete
Datenwort im Speicher an der Adresse Schreibadresse + Offset abgelegt
werden. (1 Punkt).
• Ist im Zustand 5 ende == 0, soll in den Zustand 2 verzweigt werden, anderenfalls
in den Zustand 6 (1 Punkt).
• Beim Übergang von Zustand 5 auf 2 soll der im Register Offset stehende Wert
um 4 erhöht werden (1 Punkt).
• Ausgehend vom Zustand 0 soll bis zum Zustand 5 immer in den nächsten
Zustand verzweigt werden. Beim Übergang in den Zustand 6 sollen sich die in
den Registern bzw. im Speicher abgelegten Werte nicht ändern (1 Punkt)
134.2 Entwurf eines Moore-Automaten
a) Tragen Sie in nachfolgenden Moore-Automaten geeignete Ausgangswerte und
Übergänge ein, so dass sich das gewünschte Verhalten ergibt. (7 Punkte)
clk_offset
clk_rx
clk_mem
reset
write
Initialisierung
0
clk_offset
clk_rx
clk_mem
reset
write
Initialisierung
1
clk_offset
clk_rx
clk_mem
reset
write
Schieben
2
clk_offset
clk_rx
clk_mem
reset
write
Schieben
3
clk_offset
clk_rx
clk_mem
reset
write
Speichern
4
clk_offset
clk_rx
clk_mem
reset
write
Speichern
5
clk_offset
clk_rx
clk_mem
reset
write
Ende
6
immer
0
0
0
1
X
1
1
0
1
X
1
0
0
0
0
0
1
0
0
0
0
0
0
X
1
0
0
1
0
1
0
0
0
X
X
immer
ende == 0
ende == 1immer
immer immer immer
14 4 Mikroarchitektur
4.3 ROM basierte Steuerung (4 Punkte)Nachfolgende Abbildung zeigt einen anderen Moore-Automaten.
clk_offset
clk_rx
clk_mem
reset
write
Initialisierung
0
clk_offset
clk_rx
clk_mem
reset
write
Initialisierung
1
1
0
clk_offset
1
clk_rx
X
clk_mem
1
reset
0
write
1
0
Schieben
X
2
1
1 clk_offset
1 clk_rx
1 clk_mem
1 reset
0 write
1
1
Schieben
0
3
1
0
clk_offset 0
clk_rx 0
clk_mem 1
reset X
write 1
1
Speichern
0
4
0
X
clk_offset
1
clk_rx
1
clk_mem
0
reset
0
write
X
X
Speichern
5
clk_offset
clk_rx
clk_mem
reset
immer
write
ende == 1
Ende
immer
6
immer
immer ende == 0
immer
ende == 0
ende
==
1
154.3 ROM basierte Steuerung
Der abgebildete Moore-Automat soll mit folgender ROM-basierten Steuerung imple-
mentiert werden:
D0
D2
Q0
Q2
clk
D1
Q1
ROM Speicher01234567
012
clk_rxclk_memresetwrite
ende
3
clk_offset
a) Tragen Sie in nachstehende ROM-Tabelle binär die Daten ein, die an den
angegebenen Adressen abgelegt sein müssen, damit die Steuerung den gezeigten
Moore-Automaten realisiert. (4 Punkte)
Hinweis: Zustand 0 wird als 000 codiert, Zustand 1 als 001, Zustand 2 als 010, ...
000010010010
Adresse Daten3 2 1 0 7 6 5 4 3 2 1 0
1100
1 0 1 X 1 0 0 10 1 0 X 1 1 0 01 1 1 1 0 0 1 10 0 1 X 1 1 0 1
16 5 Pipelining
5 Pipelining (18 Punkte)
Gegeben ist der bekannte Pipelining-Datenpfad.
Befehls-Speicher
32 Lesen $ZLesen $Y
Schreiben/Lesen $X
Schreib-Daten $X
Lese-Daten $Z
Lese-Daten $Y
Registerblock
0..78..15
Daten
ALU64
BZ64
Adresse
Add64
4
64
Schreiben
640
1
24..31
32
64BR
64
64
0
1
2
64
64
64
ES
ALU-Funktion
64
Daten-Speicher
Adr.
Lese-Daten $X
64 Schreib-Daten
SP
AFDirektoperand
ES
SP ES
2Zugriffs-Art
Zugriffs-Art
Lese-Daten
Ergebnisauswahl
16..23
Reg.-Schreiben
8 8
8
8
Sp.-Schreiben
Schrei-ben
0
1
32
64
Steuerung
8
8Clk1
Clk2Clk3
Clk4
Reg.-Puls
Sp.-Puls
X-Au
swah
l
16..23 $X
$Y
$Z
DirOp.
X X X
ErgALU
$X
ErgALU
LeseDat.
648
056
a) Welche Funktion haben Forwarding-Pfade? Wozu ist das nötig? (2 Punkte)
Forwarding-Pfade leiten Ergebnissen an unmittelbar folgende Befehle weiter. Das
ist nötig, da nachfolgende Befehle Ergebnisse verwenden können, die noch nicht
in den Registerblock zurückgeschrieben worden sind und in der BD-Phase noch
nicht zur Verfügung stehen.
Betrachten Sie folgenden Ausschnitt aus einem MMIX-Programm:FMUL $1,$2,$3 Zeile_1FSUB $3,$2,$1 Zeile_2FADD $2,$1,$3 Zeile_3STO $3,:A Zeile_4
b) Geben Sie alle auftretenden Datenkonflikte an. (4 Punkte)
1. Datenkonflikt zwischen Zeile 1 und Zeile 2 wegen Register $1.2. Datenkonflikt zwischen Zeile 1 und Zeile 3 wegen Register $1.3. Datenkonflikt zwischen Zeile 2 und Zeile 3 wegen Register $3.4. Datenkonflikt zwischen Zeile 2 und Zeile 4 wegen Register $3.
17
c) Erklären Sie den Begriff Strukturkonflikt und geben Sie ein Beispiel an. (2 Punkte)
• Erklärung: Verschiedene Komponenten wollen auf nur einmal verfügbare
Resource zugreifen.
• Beispiel: STO-Befehl will $X auslesen, während ADD-Befehl Ergebnis in
Registerblock abspeichern will.
d) Erklären Sie den Begriff Steuerungskonflikt und geben Sie ein Beispiel an.
(2 Punkte)
• Erklärung: Es müssen Entscheidungen getroffen werden basierend auf
Ereignissen, die noch nicht bekannt sind.
• Beispiel: Sprung ja/nein.
Nehmen Sie folgende Register-Belegung an: $1 = 0x11, $2 = 0x22, $3 = 0x33, $254 =
0x2000000000000000. Nehmen Sie desweiteren an, dass im Speicher an der OCTA-
Adresse 0x2000000000000000 der Wert 0x0123456789ABCDEF steht.
e) Tragen Sie in nachfolgende Abbildung den Inhalt der Pipeline-Register für die unter
den Pipeline-Registern angegebenen Befehle ein. Geben Sie für alle irrelevanten
Einträge ‘‘X’’ an. Nehmen Sie an, dass die benötigten Forwarding-Pfade zwischen
der SP/AF-Phase und der BD-Phase geschaltet sind. (8 Punkte)
Reg. Schr.:
Erg. Ausw.:
Sp. Schr.:
Zugr.-Art:
ALU:
Dir. Op.:
$X:
Dir. Op.:
$Y:
$Z:
X:
Reg. Schr.:
Erg. Ausw.:
Sp. Schr.:
Zugr.-Art:
$X:
Erg. ALU:
X:
Reg. Schr.:
Erg. Ausw.:
Lese-Daten:
X:
Erg. ALU:
ADDU $1,$1,$2 SUB $2,$2,#11 LDB $1,$254,5
STT $1,$254,0
STT $1,$254,0
0x21
1
1
0
X
1
0
0xFF...FAB
0x20..05
0x01
0x0xFF...FAB
0xFF...FAB
0x11
0x02
0x01
0
1
1
0
X
0x22
0x11
0x02 1/4
1
1
1/4
1/4
1/4
1/4
1/4
1/4
1
1/4
1/4
1/2
1/2
1/2
1/2
1/4
1/2
18 6 Cache
6 Cache (10 Punkte)
a) Erläutern Sie die Zuordnung Arbeitsspeicheradresse! Rahmen bei einem Direkt-
abgebildeten, einem Set-Assoziativen und einem Vollassoziativen Cache.
(3 Punkte)
• Direktabgebildet: Adressen sind einem bestimmten Rahmen zugeordnet
• Set-Assoziativ: Adressen werden einer Menge (=Set) an Rahmen zuge-
ordnet
• Voll-Assoziativ: Keine feste Zuordnung
b) Wie groß ist ein vollassoziativer Cache, wenn der Schlüssel mit 128 Datenworten
der Größe 52 Bit verglichen werden muss und die Adressbreite 64 Bit beträgt?
(3 Punkte)
• Anzahl der Rahmen: 128 = 27
• Byteauswahl = 64 - 52 = 12 Bit) Rahmengröße = 212 Byte (4 kB)
• Cachegröße: 27+12 = 219 = 512 kByte
c) Über wieviele Cache-Rahmen verfügt ein 4 fach Set-Assoziativer Cache-Speicher,
wenn zur Codierung der Set-Nummer 10 Bit verwendet werden? (2 Punkte)
210· 4 = 4096
d) Welcher Rahmen wird bei einem direktabgebildeten Cache beim Zugriff mit der
64 Bit breiten Arbeitsspeicher-Adresse 0x0123456789ABCDEF ausgewählt, wenn
der Schlüssel mit 36 Bit und die Byteauswahl mit 16 Bit codiert wird? (2 Punkte)
0x9AB
19
2.3
MMIX
Befehle
47
Lade-undSpeicherbefehle
Datenvom
Speicherin
ein
Registerladen
Befehl
Operanden
Name/Aktion
Definition
LDB
$X,$
Y,$Z
Loadbyte
$X
s0 64(s
(M1[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadbyteim
mediate
$X
s0 64(s
(M1[u
($Y)
+u(Z
)]))
LDBU
$X,$
Y,$Z
Loadbyteunsigned
$X
u0 64
(u(M
1[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadbyteuns.im
med.
$X
u0 64
(u(M
1[u
($Y)
+u(Z
)]))
LDW
$X,$
Y,$Z
Loadwyde
$X
s0 64(s
(M2[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadwydeim
mediate
$X
s0 64(s
(M2[u
($Y)
+u(Z
)]))
LDWU
$X,$
Y,$Z
Loadwydeunsigned
$X
u0 64
(u(M
2[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadwydeuns.im
med.
$X
u0 64
(u(M
2[u
($Y)
+u(Z
)]))
LDT
$X,$
Y,$Z
Loadtetra
$X
s0 64(s
(M4[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadtetraim
mediate
$X
s0 64(s
(M4[u
($Y)
+u(Z
)]))
LDTU
$X,$
Y,$Z
Loadtetraunsigned
$X
u0 64
(u(M
4[u
($Y)
+u($Z)
]))
$X,$
Y,Z
Loadtetrauns.im
med.
$X
u0 64
(u(M
4[u
($Y)
+u(Z
)]))
LDO
$X,$
Y,$Z
Loadocta
$X
M8[u
($Y)
+u($Z)
]
$X,$
Y,Z
Loadocta
immediate
$X
M8[u
($Y)
+u(Z
)]
LDOU
$X,$
Y,$Z
Loadocta
unsigned
$X
M8[u
($Y)
+u($Z)
]
$X,$
Y,Z
Loadocta
uns.
immed.
$X
M8[u
($Y)
+u(Z
)]
54
2Assemblerprogrammierung
Adress
enin
einReg
isterladen
Befehl
Operanden
Name/Aktion
Definition
LDA
$X,$
Y,$Z
Getaddress(abso
lute)
$X
u0 64
(u($Y)
+u($Z)
)
$X,$
Y,Z
Getaddressim
med.(absolute)
$X
u0 64
(u($Y)
+u(Z
))
GETA
$X,Y
ZGetaddress(relativ)
$X
u0 64
(u(@
)+
4·s
(YZ)
)
a)
WasistderUnterschiedzw
ischendem
BefehlLDA
unddenLadebefehlenLD
B,...?
DieLadebefehleLD
B,...ladenDatenwortevom
SpeicherineinRegister.DerBefehl
LDAlädteineAdresse
inein
Register.
NehmenSie
die
folgendenBefehle
an:
LOC
Data
_Seg
ment
GREG
@$2
54
@A
BYTE
#12
LOC
#100
Main
LDA
$0,A
TRAP
0,Ha
lt,0
b)
InwelcheshexadezimaleBefehlswortwirdderBefehlLDA
$0,A
übersetzt?
Warum?
0x23
00FE
00.DerAssemblerlöst
die
MarkeAin
$254
+0aufund
ersetztden
BefehlLD
A$0
,AdurchAD
DUI
$0,$
254,
0.DerBefehlAD
DUIaddiert
denWert
im
Basisregister254unddenOffset0undspeichertdasErgebnisinRegister0.Damit
enthältRegister0danndie
AdressederMarkeA.
c)
Inwelcheshexadezimale
Befehlswort
sollte
derBefehlLD
A$0
,Mai
nübersetzt
werden?
0x23
00FF
00
56
2Assemblerprogrammierung
Datenvom
Registerin
denSpeicherschreiben(speichern)
Befehl
Operanden
Name/Aktion
Definition
STB
$X,$
Y,$Z
Store
byte;withove
rflow
M1[u
($Y)
+u($Z)
]
($X)
7...0
s($X
)�
27)
rA
rA|u
0 64(2
6)
s($X
)<�
27)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
byteim
med.;ovf.
M1[u
($Y)
+u(Z
)]
($X)
7...0
s($X
)�
27)
rA
rA|u
0 64(2
6)
s($X
)<�
27)
rA
rA|u
0 64(2
6)
STBU
$X,$
Y,$Z
Store
byteunsigned
M1[u
($Y)
+u(Z
)]
($X)
7...0
$X,$
Y,Z
Store
byteuns.
imm.
M1[u
($Y)
+u(Z
)]
($X)
7...0
STW
$X,$
Y,$Z
Store
wyd
e;withove
rflow
M2[u
($Y)
+u(Z
)]
($X)
15...0
s($X
)�
215)
rA
rA|u
0 64(2
6)
s($X
)<�
215)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
wyd
eim
med.;ovf.
M2[u
($Y)
+u(Z
)]
($X)
15...0
s($X
)�
215)
rA
rA|u
0 64(2
6)
s($X
)<�
215)
rA
rA|u
0 64(2
6)
STWU
$X,$
Y,$Z
Store
wyd
eunsigned
M2[u
($Y)
+u(Z
)]
($X)
15...0
$X,$
Y,Z
Store
wyd
euns.
imm.
M2[u
($Y)
+u(Z
)]
($X)
15...0
STT
$X,$
Y,$Z
Store
tetra;withoverflow
M4[u
($Y)
+u(Z
)]
($X)
31...0
s($X
)�
231)
rA
rA|u
0 64(2
6)
s($X
)<�
231)
rA
rA|u
0 64(2
6)
$X,$
Y,Z
Store
tetraim
med.;ovf.
M4[u
($Y)
+u(Z
)]
($X)
31...0
s($X
)�
231)
rA
rA|u
0 64(2
6)
s($X
)<�
231)
rA
rA|u
0 64(2
6)
STTU
$X,$
Y,$Z
Store
byteunsigned
M4[u
($Y)
+u(Z
)]
($X)
31...0
$X,$
Y,Z
Store
byteuns.
imm.
M4[u
($Y)
+u(Z
)]
($X)
31...0
STO
$X,$
Y,$Z
Store
octa
M8[u
($Y)
+u(Z
)]
$X$X
,$Y,
ZStore
octa
immediate
M8[u
($Y)
+u(Z
)]
$X
STOU
$X,$
Y,$Z
Store
octa
unsigned
M8[u
($Y)
+u(Z
)]
$X$X
,$Y,
ZStore
octa
uns.
imm.
M8[u
($Y)
+u(Z
)]
$X
La
de
n a
us S
pe
ich
er
Sc
hre
ibe
n in
Sp
eic
he
r
72
2Assemblerprogrammierung
Sch
iebe-Befeh
le
Befehl
Operanden
Name/Aktion
Definition
SL
$X,$
Y,$Z
Shiftleft;withove
rflow
$X
u0 64
(u($Y�
u($Z)
))
u($Y)
·2u($Z)�
264)
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Shiftleftim
mediate;withovf.
$X
u0 64
(u($Y�
u(Z
)))
u($Y)
·2u(Z
)�
264)
rA
rA|u
0 64(2
5)
SLU
$X,$
Y,$Z
Shiftleftuns.,noove
rflow
$X
u0 64
(u($Y�
u($Z)
))
$X,$
Y,Z
Shiftleftuns.
immed.;noovf.
$X
u0 64
(u($Y�
u(Z
)))
SR$X
,$Y,
$ZShiftright;fillwithsign
$X
$Y�
su($Z)
$X,$
Y,Z
Shiftrightim
m.;fillwithsign
$X
$Y�
su(Z
)
SRU
$X,$
Y,$Z
Shiftrightunsigned;fillwith0
$X
$Y�
uu($Z)
$X,$
Y,Z
Shiftrightuns.
imm.;fillw.0
$X
$Y�
uu(Z
)
Sc
hie
be
n
Ma
rke
n a
ufl
öse
n/A
dre
sse
n la
de
n
20
64
2Assemblerprogrammierung
UmwandlungGleitkommazahl�
Festkommazahl
Befehl
Operanden
Name/Aktion
Definition
FLOT
$X,$
ZConvertfixedto
floating
$X
f0 64(s($Z
))
$X,Z
Conv.fixedto
float.im
m.
$X
f0 64(u(Z
))
FLOT
U$X
,$Z
Conv.uns.
fixedto
floating
$X
f0 64(u($Z)
)
$X,Z
Conv.uns.
fixedto
float.
imm.
$X
f0 64(u(Z
))
FIX
$X,$
ZConvertfloatingto
fixed
withoverflow
$X
s0 64(r(
f 64($Z)
))
f 64($Z)
<�
263)
rA
rA|u
0 64(2
5)
f 64($Z)
>26
3�
1)
rA
rA|u
0 64(2
5)
FIXU
$X,$
ZConvertfloatingto
fixed
withoutove
rflow
$X
s0 64(r(
f 64($Z)
))
a)
WelcheAktionführtderOperatorr(
)aus?
r()rundeteineGleitkommazahlineineFestkommazahl.DasRundenerfolgtwiein
SpezialregisterrA
eingestellt.
b)
Geben
Sie
den
Befehlan,mit
dem
Sie
Register0
die
Gleitkommazahl15,0
zuweisen.
FLOT
$0,1
5
c)
GebenSie
denBefehlan,mitdem
Sie
eineGleitkommazahlin
Register1in
eine
Festkommazahlu
mwandeln.
FIX
$1,$
1
2.3
MMIX
Befehle
65
ArithmetischeBefehle
ArithmetischeBefehle
aufFestkommazahlen
BefehlO
peranden
Name/Aktion
Definition
ADD
$X,$
Y,$Z
Add;signed,withove
rflow
$X
s0 64(s
($Y)
+s($Z
))
(s($Y)
+s($Z
)<�
263)
||(s
($Y)
+s($Z
)�
263))
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Addim
mediate;signed,withove
rflow
$X
s0 64(s
($Y)
+u(Z
))
(s($Y)
+s(Z)
<�
263)
||(s
($Y)
+s(Z)�
263))
rA
rA|u
0 64(2
5)
ADDU
$X,$
Y,$Z
Addunsigned;noove
rflow
$X
u0 64
(u($Y)
+u($Z)
)
$X,$
Y,Z
Addunsigned;noove
rflow
$X
u0 64
(u($Y)
+u(Z
))
SUB
$X,$
Y,$Z
Subtract;signed,withove
rflow
$X
s0 64(s
($Y)�
s($Z
))
(s($Y)�
s($Z
)<�
263)
||(s
($Y)�
s($Z
)�
263))
rA
rA|u
0 64(2
5)
$X,$
Y,Z
Subtractim
mediate;signed,withove
rflow
$X
s0 64(s
($Y)�
u(Z
))
(s($Y)�
s(Z)
<�
263)
||(s
($Y)�
s(Z)�
263))
rA
rA|u
0 64(2
5)
SUBU
$X,$
Y,$Z
Subtractunsigned;noove
rflow
$X
u0 64
(u($Y)�
u($Z)
)
$X,$
Y,Z
Subtractunsignedim
med.;noovf.
$X
u0 64
(u($Y)�
u(Z
))
NEG
$X,Y
,$Z
Negate;signed,withove
rflow
$X
s0 64(u
(Y)�
s($Z
))
u(Y
)�
s($Z�
263))
rA
rA|u
0 64(2
5)
$X,Y
,ZNegate
immediate;signed,withove
rflow
$X
s0 64(u
(Y)�
s(Z)
)
NEGU
$X,Y
,$Z
Negate
unsigned;noove
rflow
$X
s0 64(u
(Y)�
s($Z
))
$X,Y
,ZNegate
unsignedim
med.;noove
rflow
$X
s0 64(u
(Y)�
u(Z
))
MUL
$X,$
Y,$Z
Multiply;signed,withove
rflow
$X
s0 64(s
($Y)
·s($Z)
)
$X,$
Y,Z
Multiplyim
mediate;signed,withovf.
$X
s0 64(s
($Y)
·u(Z
))
MULU
$X,$
Y,$Z
Multiplyunsigned;rH
($Y
·$Z)
127.
..64
rH$X
u0 12
8(u
($Y)
·u($Z)
)
$X,$
Y,Z
Multiplyuns.
imm.;rH
($Y
·Z) 1
27...6
4rH
$X
u0 12
8(u
($Y)
·u(Z
))
66
2Assemblerprogrammierung
DIV
Divide;signed,withoverflow
$X
s0 64(�
s($Y
)/s($Z
)�)
$X,$
Y,$Z
(case
$Z�=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64
(0)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;noove
rflow;
$X
u0 12
8(�u
(rD$
Y)/u
($Z)�)
(case
u($Z)
>u(rD)
)rR
u0 12
8(u(rD$
Y)%
u($Z)
)
Divideunsigned;noove
rflow;
$X
rDnoove
rflow
(case
u($Z)�
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 12
8(�u
(rD$
Y)/u
(Z)�
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 12
8(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rDnoove
rflow
(case
u(Z
)�
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlose
alsauchfürvorzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisseswerden
imSpezialregisterrH
abgelegt.
68
2Asse
mblerprogrammierung
ArithmetischeBefehle
aufGleitkommazahlen
Befehl
Operanden
Name/Aktion
Definition
FADD
$X,$
Y,$Z
Floatingpointadd
$X
f0 64(f 6
4($Y)
+f 6
4($Z)
)
FSUB
$X,$
Y,$Z
Floatingpointsu
btract
$X
f0 64(f 6
4($Y)�
f 64($Z)
)
FMUL
$X,$
Y,$Z
Floatingpointmultiplication
$X
f0 64(f 6
4($Y)
·f64
($Z)
)
FDIV
$X,$
Y,$Z
Floatingpointdivide
$X
f0 64(f 6
4($Y)
/f64
($Z)
)
FSQR
T$X
,$Z
Square
root
$X
f0 64(�
f 64($Z)
)
a)
GebenSie
MMIX-B
efehle
an,die
�=
3.14
15in
Registeraablegen.
SET
a,31
415
FLOT
a,a
SET
buf,
1000
0FL
OTbu
f,bu
fFD
IVa,
a,bu
f2.3
MMIX
Befehle
79
Zug
riffau
fSpez
ialreg
ister
Befehl
Operanden
Name/Aktion
Definition
GET
$X,Z
Getva
lueofsp
ecialp
urposeregister
$X
r[Z]
PUT
X,$Z
Putva
lueto
specialp
urposeregister
r[X]
$ZX,
ZPutim
med.va
lueto
spec.purp.reg.
r[X]
u0 64
(u(Z
))
a)
TragenSie
innachfolgenderBefehlsse
quenzBefehle
zurBerechnungderFest-
kommadivisionidi
vide
nd/d
ivis
orein
und
speichern
Sie
dasErgebnis
an
der
MarkeQu
otie
ntunddenDivisionsrest
anderMarkeRe
main
derab.
LOC
Data
_Seg
ment
GREG
@Di
vide
ndOC
TA7
Divi
sor
OCTA
3Qu
otie
ntOC
TARe
main
der
OCTA
divi
dend
IS$0
divi
sor
IS$1
quot
ient
IS$2
rema
inde
rIS
$3
LOC
#100
Main
LDO
divi
dend
,Div
iden
dLD
Odi
viso
r,Di
viso
r
DIV
quot
ient
,div
iden
d,di
viso
rGE
Tre
main
der,
rRST
Oqu
otie
nt,Q
uoti
ent
STO
rema
inde
r,Re
main
der
TRAP
0,Ha
lt,0
66
2Assemblerprogrammierung
DIV
Divide;signed,withove
rflow
$X
s0 64(�
s($Y
)/s($Z
)�)
$X,$
Y,$Z
(case
$Z�=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64
(0)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;noove
rflow;
$X
u0 12
8(�u
(rD$
Y)/u
($Z)�)
(case
u($Z)
>u(rD)
)rR
u0 12
8(u(rD$
Y)%
u($Z)
)
Divideunsigned;noove
rflow;
$X
rDnoove
rflow
(case
u($Z)�
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 12
8(�u
(rD$
Y)/u
(Z)�
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 12
8(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rDnoove
rflow
(case
u(Z
)�
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlose
alsauchfürvo
rzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisse
swerden
imSpezialregisterrH
abgelegt.
Ari
thm
eti
sc
he
Be
feh
le (
Fe
stk
om
ma
)
Ari
thm
eti
sc
he
Be
feh
le (
Gle
itk
om
ma
)
Um
wa
nd
lun
g F
estk
om
ma
<->
Gle
itk
om
ma
Sp
ezia
lre
gis
ter
21
2.3
MMIX
Befehle
61
Direktoperandin
Registerschreiben
Befehl
Operanden
Name/Aktion
Definition
SETL
$X,Y
ZSetto
low
wyde
$X
u0 64
(u(YZ)
)
SETM
L$X
,YZ
Setto
med.low
wyd
e$X
u0 64
(u(YZ�
16))
SETM
H$X
,YZ
Setto
med.highwyde
$X
u0 64
(u(YZ�
32))
SETH
$X,Y
ZSetto
highwyde
$X
u0 64
(u((YZ�
48))
INCL
$X,Y
ZIncrease
bylow
wyde
$X
u0 64
(u($X)
+u(YZ)
)
INCM
L$X
,YZ
Inc.bymed.low
wyde
$X
u0 64
(u($X)
+u(YZ�
16))
INCM
H$X
,YZ
Inc.bymed.highwyd
e$X
u0 64
(u($X)
+u(YZ�
32))
INCH
$X,Y
ZIncrease
byhighwyd
e$X
u0 64
(u($X)
+u(YZ�
48))
a)
GebenSiedieBefehlean,mitdenenSieausschließlichdurchdieVerw
endungvon
Direktoperandendie
Zahl0x0
12345
6789
ABCD
EFin
Register$0
schreiben.
SETH
$0,#
123
INCM
H$0
,#45
67IN
CML
$0,#
89AB
INCL
$0,#
CDEF
74
2Assemblerprogrammierung
LogischeOperationenaufBit-E
bene
Befehl
Operanden
Name/Aktion
Definition
AND
$X,$
Y,$Z
BitwiseAND
$X
$Y&$Z
$X,$
Y,Z
BitwiseANDim
mediate
$X
$Y&
u0 64
(u(Z
))
ANDN
$X,$
Y,$Z
BitwiseANDNOT
$X
$Y&�
$Z$X
,$Y,
ZBitww
ANDNOTim
med.
$X
$Y&�
u0 64
(u(Z
))
ANDN
L$X
,YZ
Bitw.ANDNOTlow
wyd
e$X
$X&�
u0 64
(u(YZ)
)
ANDN
ML$X
,YZ
Bw.ANDNOTmed.l.wd.
$X
$X&�
(u
0 64(u(YZ)
)�
16)
ANDN
MH$X
,YZ
Bw.ANDNOTmed.h.wd.
$X
$X&�
(u
0 64(u(YZ)
)�
32)
ANDN
H$X
,YZ
Bw.ANDNOThighwyd
e$X
$X&�
(u
0 64(u(YZ)
)�
48)
NAND
$X,$
Y,$Z
BitwiseNOTAND
$X �
($Y
&$Z
)
$X,$
Y,Z
BitwiseNOTANDim
med.
$X �
($Y
&u
0 64(u(Z
)))
OR$X
,$Y,
$ZBitwiseOR
$X
$Y|$
Z$X
,$Y,
ZBitwiseORim
mediate
$X
$Y|u
0 64(u(Z
))
ORL
$X,Y
ZBitwiseORlow
wyd
e$X
$X|u
0 64(u(YZ)
)
ORML
$X,Y
ZBitw.ORmed.low
wyd
e$X
$X|(
u0 64
(u(YZ)
)�
16)
ORMH
$X,Y
ZBitw.ORmed.highwyd
e$X
$X|(
u0 64
(u(YZ)
)�
32)
ORH
$X,Y
ZBitwiseORhighwyd
e$X
$X|(
u0 64
(u(YZ)
)�
48)
ORN
$X,$
Y,$Z
BitwiseORNOT
$X
$Y|�
$Z$X
,$Y,
ZBitwiseORNOTim
mediate
$X
$Y|�
u0 64
(u(Z
))
NOR
$X,$
Y,$Z
BitwiseNOTOR
$X �
($Y
|$Z)
$X,$
Y,Z
BitwiseNOTORim
mediate
$X �
($Y
|u0 64
(u(Z
)))
XOR
$X,$
Y,$Z
BitwiseXOR
$X
$Y�$Z
$X,$
Y,Z
BitwiseXORim
mediate
$X
$Y�
u0 64
(u(Z
))
NXOR
$X,$
Y,$Z
BitwiseNOTXOR
$X �
($Y�$Z
)
$X,$
Y,Z
Bitw.NOTXORim
mediate
$X �
($Y�
u0 64
(u(Z
)))
2.3
MMIX
Befehle
81
Verzw
eigun
gsb
efeh
le
Unb
edingte
Verzw
eigun
g
Befehl
Operanden
Name/Aktion
Definition
JMP
XYZ
Jump
@
u0 64
(u(@
)+
4·s
(XYZ
))
Bed
ingte
Verzw
eigun
gen
Befehl
Operanden
Name/Aktion
Definition
BZ$X
,YZ
Branchifzero
s($X
)=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBZ
$X,Y
ZProbable
br.ifzero
s($X
)=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNZ
$X,Y
ZBranchifnonzero
s($X
)�=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNZ
$X,Y
ZProb.br.ifnonzero
s($X
)�=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BN$X
,YZ
Branchifnegative
s($X
)<
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBN
$X,Y
ZProb.br.ifnegative
s($X
)<
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNN
$X,Y
ZBranchifnonneg.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNN
$X,Y
ZProb.br.ifnonneg.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BP$X
,YZ
Branchifpositive
s($X
)>
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBP
$X,Y
ZProb.br.ifpositive
s($X
)>
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNP
$X,Y
ZBranchifnonpositive
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNP
$X,Y
ZProb.br.ifnonpos.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BEV
$X,Y
ZBranchifeve
ns($X
)%
2=
0)
@
u0 64
(u(@
)+4·
s(YZ
))
PBEV
$X,Y
ZProb.branchifeven
s($X
)%
2=
0)
@
u0 64
(u(@
)+4·
s(YZ
))
BOD
$X,Y
ZBranchifodd
s($X
)%
2=
1)
@
u0 64
(u(@
)+4·
s(YZ
))
PBOD
$X,Y
ZProb.branchifodd
s($X
)%
2=
1)
@
u0 64
(u(@
)+4·
s(YZ
))
84
2Assemblerprogrammierung
Befehle
fürFunktionsaufrufe
Befehl
Operanden
Name/Aktion
Definition
GO$X
,$Y,
$ZGoto
location
$X
u0 64
(u(@
)+
4));
@
u0 64
(u($Y)
+u($Z)
)
$X,$
Y,Z
Goto
locationim
mediate
$X
u0 64
(u(@
)+
4));
@
u0 64
(u($Y)
+u(Z
))
a)
WasistderHaupt-Unterschiedzw
ischendem
JMP-Befehlu
nddem
GO-B
efehl?
•JM
PbenutztRelative
Adressierung,währendGO
Abso
lute
Adressierung
verw
endet.
•GO
speichertdie
Rücksp
rungadresseab,JM
Pnicht.
b)
Wosp
eichern
GO-B
efehle
die
Rücksp
rungadresseab?
Die
Rücksp
rungadressewirdin
RegisterXabgelegt.
c)
Wasistdie
‘‘Rücksp
rungadresse’’?
Die
Rücksp
rungadresseistdie
AdressedesnächstenBefehlsworts.
WennGO
an
einerdurchvierteilb
arenAdresse
asteht,dannistdie
Rücksp
rungadresse
a+
4.
d)
WennGO
Abso
lute
Adressierungve
rwendet:Wie
wirddie
Abolute
Adresse(64Bit)
im32BitbreitenBefehlswortabgelegt?
Genauso
wie
esallgemein
beiM
arkengemachtwird:DerAsse
mblertransform
iert
die
AdressederMarkein
eineBasisa
dresse,die
inRegisterYgesp
eichertwird,
undeinem
Offse
t,derin
RegisterZoderim
DirektoperandenZgesp
eichertwird.
e)
GebenSie
denBefehlan,mitdem
Sie
die
Funktionfk
taufrufenunddie
Rück-
sprungadressein
Register0ablegen.
GO$0
,fkt
66
2Assemblerprogrammierung
DIV
Divide;signed,withove
rflow
$X
s0 64(�
s($Y
)/s($Z
)�)
$X,$
Y,$Z
(case
$Z�=
0)rR
s0 64(s($Y
)%
s($Z
))
$X,$
Y,Z
Divideim
mediate;signed,withovf.
$X
u0 64
(0)
(case
$Z=
0)rR
$Y
DIVU
$X,$
Y,$Z
Divideunsigned;noove
rflow;
$X
u0 12
8(�u
(rD$
Y)/u
($Z)�)
(case
u($Z)
>u(rD)
)rR
u0 12
8(u(rD$
Y)%
u($Z)
)
Divideunsigned;noove
rflow;
$X
rDnoove
rflow
(case
u($Z)�
u(rD)
)rR
$Y
$X,$
Y,Z
Divideunsignedim
mediate;
$X
u0 12
8(�u
(rD$
Y)/u
(Z)�
)
noove
rflow;(case
u(Z
)>
u(rD)
)rR
u0 12
8(u(rD$
Y)%
u(Z
))
Divideunsignedim
medediate;
$X
rDnoove
rflow
(case
u(Z
)�
u(rD)
)rR
$Y
a)
Inwelchem
Wertebereich
können
die
Direktoperanden
beiden
Arithmetischen
Befehlenliegen?
0...2
55so
wohlfürvo
rzeichenlose
alsauchfürvo
rzeichenbehaftete
Operationen.
b)
Kannmitdem
ADDBefehl3
+5in
einereinzigenCodezeile
berechnetwerden?
Nein,daderAD
D-Befehlnureine
nDirektoperandenunterstützt,muss
derzw
eite
Operandzu
vorin
ein
Allzweckregistergeladenwerden.
c)
Wie
kannman
5�
3in
einereinzigenCodezeile
berechnen?
NEG
$0,5
,3
d)
WasistderUnterschiedzw
ischendenBefehlenMU
LundMU
LU?
•MU
L:Quell-
undZieloperandenhabenjeweils
64Bit
•MU
LU:Die
Quelloperandenhabenjeweils
64Bit,derZieloperandhat128
Bit.Die
oberen
64
BitdesErgebnisse
swerden
imSpezialregisterrH
abgelegt.
Lo
gis
ch
e O
pe
rati
on
en
Ve
rzw
eig
un
ge
n
Fu
nk
tio
nsa
ufr
uf
2.3
MMIX
Befehle
81
Verzw
eigun
gsb
efeh
le
Unb
edingte
Verzw
eigun
g
Befehl
Operanden
Name/Aktion
Definition
JMP
XYZ
Jump
@
u0 64
(u(@
)+
4·s
(XYZ
))
Bed
ingte
Verzw
eigun
gen
Befehl
Operanden
Name/Aktion
Definition
BZ$X
,YZ
Branchifzero
s($X
)=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBZ
$X,Y
ZProbable
br.ifzero
s($X
)=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNZ
$X,Y
ZBranchifnonzero
s($X
)�=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNZ
$X,Y
ZProb.br.ifnonzero
s($X
)�=
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BN$X
,YZ
Branchifnegative
s($X
)<
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBN
$X,Y
ZProb.br.ifnegative
s($X
)<
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNN
$X,Y
ZBranchifnonneg.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNN
$X,Y
ZProb.br.ifnonneg.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BP$X
,YZ
Branchifpositive
s($X
)>
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBP
$X,Y
ZProb.br.ifpositive
s($X
)>
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BNP
$X,Y
ZBranchifnonpositive
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
PBNP
$X,Y
ZProb.br.ifnonpos.
s($X
)�
0)
@
u0 64
(u(@
)+
4·s
(YZ)
)
BEV
$X,Y
ZBranchifeve
ns($X
)%
2=
0)
@
u0 64
(u(@
)+4·
s(YZ
))
PBEV
$X,Y
ZProb.branchifeve
ns($X
)%
2=
0)
@
u0 64
(u(@
)+4·
s(YZ
))
BOD
$X,Y
ZBranchifodd
s($X
)%
2=
1)
@
u0 64
(u(@
)+4·
s(YZ
))
PBOD
$X,Y
ZProb.branchifodd
s($X
)%
2=
1)
@
u0 64
(u(@
)+4·
s(YZ
))
Dir
ek
top
era
nd
en
22 Konzeptpapier
Konzeptpapier
Verwenden Sie dieses Blatt für Notizen. Falls Inhalte dieses Blatts bewertet werden
sollen, müssen Sie das auf diesem Blatt und bei der jeweiligen Teilaufgabe kenntlich
machen.