Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik...

22
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 Computertechnik Computersysteme 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. 1 Punkte: Aufg. 2 Aufg. 3 Aufg. 4 Aufg. 5 Aufg. 6 Summe 24.07.2014

Transcript of Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik...

Page 1: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Michael Zwick
Musterlösung
Page 2: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

Ü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

Page 3: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 4: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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.

Page 5: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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.

Page 6: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 7: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 8: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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.

Page 9: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

93.6 Funktionsaufrufe/Stack

Diese Seite ist absichtlich leer.

Page 10: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 11: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 12: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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)

Page 13: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 14: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 15: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 16: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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.

Page 17: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 18: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 19: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 20: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 21: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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

Page 22: Bachelorprüfung Modul Computertechnik€¦ · Bachelorprüfung Modul Computertechnik Computersysteme 1 Hier Etikett einkleben (Prüfungsaufsicht): Prüfungsfähigkeit: Weitere Hinweise:

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.