Ub5-Tomasulo Algorithm

SS19, Übungsblatt 5, Aufgabe 3

Annahme

  • Die Multiplikation benötigt vier Takte, die Division acht Takte, alle anderen Operationen zwei Takte zur Ausführung.
  • Der Prozessor verfüge über eine Mul-/Div-Einheit und eine Add-/Sub-Einheit.
  • Die Mul-/Div-Einheit hat eine Reservierungstabelle mit zwei Einträgen, die der Add-/Sub-Einheit vier.
  • Der Prozessor kann nur eine Instruktion pro Takt auf die Reservierungstabellen zuteilen.
  • Die Instruktionen werden in-order zugeteilt.
  • Der Prozessor verfüge über nur einen Ergebnisbus (kein Forwarding).
  • Wenn mehrere Operationen gleichzeitig fertig werden, hat die Add-/Sub-Einheit Vorrang gegenüber der Mul-/Div-Einheit.

Lösungsablauf

Instr.
Queue
Instr….
Registers
Registers
r1
r1
r2
r2
r3
r3
r4
r4
3
3
4
4
6
6
7
7
9
9
10
10
Add-/Sub-
RS
Add-/Sub-…
1
1
2
2
5
5
8
8
Mul-/Div-
RS
Mul-/Div-…
Add-/Sub-
Einheit
Add-/Sub-…
Mul-/Div-
Einheit
Mul-/Div-…
CDB
CDB
Operation 
Bus
Operation…
Operand
Bus
Operand…
1: Takt 1
1: Takt 1
1
1
: Befehl 1
: Befehl 1
Takt
Takt
Verhalten
Verhalten
1
1
Befehl 1 zuteilen
Befehl 1 zuteilen
2
2
  • Befehl 1 ausführen
  • Befehl 2 zuteilen (Mul/Div-RS voll)
Befehl 1 ausführen…
3
3
  • Befehl 3 zuteilen
  • Befehl 2 wartet auf Befehl 1
Befehl 3 zuteilen…
4
4
  • Befehl 4 zuteilen
  • Befehl 3 wartet auf Befehl 2
Befehl 4 zuteilen…
5
5
Befehl 1 ausführen
Befehl 1 ausführen
6
6
Ergebnis Befehl 1 auf Bus
Ergebnis Befehl 1 auf Bus
7
7
  • Befehl 5 zuteilen
  • Befehl 2 startet
Befehl 5 zuteilen…
8
8
  • Befehl 6 zuteilen
  • Befehl 5 wartet auf Befehl 4
Befehl 6 zuteilen…
9
9
  • Befehl 7 zuteilen (Add/Sub-RS voll)
  • Befehl 6 wartet auf Befehl 4
Befehl 7 zuteilen (Add/Sub-RS voll)…
10 - 14
10 - 14
Befehl 2 ausführen
Befehl 2 ausführen
15
15
Befehl 2 fertig, Ergebnis Befehl 2 auf Bus
Befehl 2 fertig, Ergebnis Befehl 2 auf Bus
16
16
  • Befehl 8 zuteilen (Mul/Div-RS voll)
  • Befehl 3 startet
Befehl 8 zuteilen (Mul/Div-RS voll)…
17
17
Befehl 3 ausführen
Befehl 3 ausführen
18
18
Befehl 3 fertig
Befehl 3 fertig
19
19
  • Befehl 9 zuteilen
  • Befehl 4 startet
Befehl 9 zuteilen…
20
20
Befehl 4 ausführen
Befehl 4 ausführen
21
21
Befehl 4 fertig
Befehl 4 fertig
22
22
  • Befehl 10 zuteilen
  • Befehl 5 und 6 starten
Befehl 10 zuteilen…
23
23
Befehl 5 und 6 ausführen
Befehl 5 und 6 ausführen
24
24
  • Befehl 6 fertig
  • Befehl 7 wartet auf Befehl 5
Befehl 6 fertig…
25 - 29
25 - 29
Befehl 5 ausführen
Befehl 5 ausführen
30
30
Befehl 5 fertig
Befehl 5 fertig
31
31
Befehl 7 startet
Befehl 7 startet
32
32
Befehl 7 ausführen
Befehl 7 ausführen
33
33
Befehl 7 fertig
Befehl 7 fertig
34
34
Befehl 8 und 9 starten
Befehl 8 und 9 starten
35
35
Befehl 8 und 9 ausführen
Befehl 8 und 9 ausführen
36
36
Befehl 9 fertig
Befehl 9 fertig
37
37
Befehl 8 ausführen
Befehl 8 ausführen
38
38
Befehl 8 fertig
Befehl 8 fertig
39
39
Befehl 10 startet
Befehl 10 startet
40
40
Befehl 10 ausführen
Befehl 10 ausführen
41
41
Befehl 10 fertig
Befehl 10 fertig
1
1
1
1
2
2
2
2
3
3
4
4
6
6
7
7
7
7
2
2
8
8
9
9
15
15
16
16
16
16
3
3
18
18
19
19
19
19
4
4
21
21
22
22
22
22
22
22
5
5
6
6
24
24
30
30
31
31
7
7
33
33
34
34
34
34
36
36
9
9
38
38
8
8
39
39
41
41
10
10
: Dataabhängigkeit
: Dataabhängigkeit
Viewer does not support full SVG 1.1

Previous
Next