Zyklus Nr 0
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
LD F6,34(R1)
LD F6,34(R1) MU3
0 LD 34 r1 NONO
MU3
on CDB in Cycle
Ladebefehl kann reserviert werden.
0
Zyklus Nr 1
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
LD F0,45(R3)
LD F6,34(R1) MU3
LD 34 r1 NONO r1+34
MU3
on CDB in Cycle
Ladebefehl kann reserviert werden. Die effektive Adresse von MU3 berechnet sich.
LD F0,45(R3) MU2
MU2
0 LD 45 r3 NONO
0
Zyklus Nr 2
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
MULD F0,F0,F6
LD F6,34(R1) MU3
LD 34 r1 NONO r1+34
MU3
on CDB in Cycle
Multiplikation wird reserviert, und merkt sich als Oper-anden MU2, MU3. MU3 wird aktiv und geht im Zyklus 3 auf den CDB. MU2 berechnet seine effektive Adresse
LD F0,45(R3) MU2
MU2
0 LD 45 r3 NONO r3+45
MULD F0,F0,F6 MUL1
MUL1
0 MD MU3MU2
31
SUBD F8,F6,F2
MUL1
1
Zyklus Nr 3
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
LD F6,34(R1) MU3
LD 34 r1 NONO r1+34
MU3
MU3
on CDB in Cycle
Die Subtraktion wird reserviert. MU3 geht auf den CDB. MU2 wird aktiv und schreibt in 4 auf den CDB
LD F0,45(R3) MU2
0 LD 45 r3 NONO r3+45
3
A:=D[r1+34]
MULD F0,F0,F6 MUL1 0 MD MU3MU2 A
A
1 4
SUBD F8,F6,F2 ADD1
0 SD f67
ADD1
A MU3
MUL1
Zyklus Nr 4
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINT
MU1MU2
MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
MU2
on CDB in Cycle
Die Division wird reserviert. Da MU2 auf dem CDB liegt, uebernimmt MUL1 seinen Operanden. MU2 terminiert. Die Subtraktion startet und geht im Zyklus 6 auf den CDB.
LD F0,45(R3) MU2
LD 45 r3 NONO r3+45
B:=D[r3+45]
MULD F0,F0,F6 MUL1
0 MD MU2 A
A
1 4
BSUBD F8,F6,F2 ADD1
0 SD f67A
DIVD F10,F0,F6
DIVD F10,F0,F6 DIV
0 DD MUL1 A
1 6
DIV
MUL1
Zyklus Nr 5
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
on CDB in Cycle
Die Addition wird reserviert. Der Multiplizierer kann aktiv werden und geht in Zyklus 13 auf den CDB.
MULD F0,F0,F6 MUL1
0 MD A
A
SUBD F8,F0,F6 ADD1
1 SD A
ADD1
B
f67
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13
ADDD F6,F8,F4
ADDD F6,F8,F4 ADD20 AD ADD1 f45
ADD2
6
MUL1
Zyklus Nr 6
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Subtraktion endet und die Addition startet, geht also in Zyklus 8 auf den CDB. Es könnte nun kein weiterer Befehl ausgegeben werden, weil die Schlange voll ist.
MULD F0,F0,F6 MUL1
0 MD A
A
SUBD F8,F0,F6 ADD1
0 SD A
ADD1
B
f67
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13
1 6
ADDD F6,F8,F4 ADD20 AD ADD1 f45
ADD2
ADD1 C:=A-f67
1 8
C
stall
MUL1
Zyklus Nr 7
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Die Operationen laufen noch. Es könnten nun ein weiterer Befehl ausgegeben werden.
MULD F0,F0,F6 MUL1
0 MD A
A
B
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13ADDD F6,F8,F4 ADD2
0 AD ADD1 f45
ADD2
1 8
C
MUL1
Zyklus Nr 8
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Die Addition endet. Es könnten nun ein weiterer Befehl ausgegeben werden.
MULD F0,F0,F6 MUL1
0 MD A
D
B
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13ADDD F6,F8,F4 ADD2
0 AD ADD1 f45
ADD2
1 8
C
ADD2 D:= C+f45
MUL1
Zyklus Nr 9
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Für unser Beispiel geschieht nun nichts mehr bis zum Zyklus 13. Es könnten aber weitere Befehle ausgegeben werden.
MULD F0,F0,F6 MUL1
0 MD A
D
B
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13
C
MUL1
Zyklus Nr 13
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Die Multiplikation endet. Es könnten weitere Befehle ausgegeben werden.
MULD F0,F0,F6 MUL1
0 MD A
D
B
DIVD F10,F0,F6 DIV
DIV
0 DD MUL1 A
1 13
C
MUL1 E:=B*A
E
E
01
Zyklus Nr 14
Instruction Queue
Instruction tag
Instruction Register
IF StageIF Stage
CDB
name bADD1ADD2ADD3MUL1MUL2DIVINTMU1MU2MU3
Reservations
OP V1 Q1 V2 Q2
effective address
R0 R1 R2 R3
R4
R8
R12
F0
F4
F8
F12
R7
R11
R15
F3
F7
F11
F15
XXX…...
on CDB in Cycle
Nun erst kann die Division anlaufen und endet im Zyklus 38. Es könnten weitere Befehle ausgegeben werden.
D
DIVD F10,F0,F6 DIV
DIV
DD A 38
C
E
E