tbk
Tomasulo Forwording und Blatt 6 Aufgabe 4
17.09.2013 16:08:06
Hallo,

Bei der Aufgabe 4 auf dem Blatt 6 müssen wir den Tomasulo Algorithmus abarbeiten.

Dabei stellen sich mir zwei Fragen.

1) In der Vorlesung und Musterlösung wird während eines Writeback-phase einer Instruktion in der ReservationStation-Tabelle für die FunktionaleUnit der Flag Empty auf 1 gesetzt, aber die Restlichen Einträge bleiben stehen. Muss man das so machen, bzw gibt es dafür einen bestimmten Grund oder kann man sich das abschreiben der Werte in den nächsten Zyklus sparen?

2) In der Musterlösung braucht man 9 Zyklen, da in Zyklus 7 erst die Daten aus dem CDB gelesen werden und dann erst wird die sub Instruktion in die FunktionalUnit geschickt (InFU=1). Ich dachte aber, dass ich da nicht erst noch warten ("lesen") muss, da ich ja an der stelle so etwas wie Forwording mache und dementsprechend hab ich dann doch die Daten schon anliegen. Zumindest verstehe ich den Satz in Kapitel 8.3 Seite 35 so ("CDB enables simultaneous loading of results as soon as they are available (information flow principle))".

Gruß
Tamas
Re: Tomasulo Forwording und Blatt 6 Aufgabe 4
17.09.2013 16:51:05
Hallo Tamas,

ad 1) Das stehen lassen ist im Prinzip optional, da die Werte ja im Prinzip obsolet geworden sind, wie du richtig mitbekommen hast. Sollte eine entsprechende Aufgabe drankommen, ließe sich dein Problem ja durch eine Konvention beheben. Man könnte ja sagen, jede Zelle behält ihren vorherigen Wert, solange kein neuer explizit eingetragen wurde. So etwas in der Art, dann müsste man nicht immer alles neu hinschreiben.

ad 2) Auch wenn die Daten in Takt 7 bereits auf dem CDB anliegen, werden Werte erst in Takt 8 in die Reservation Station übernommen. Weiterhin wird dann im folgenden Takt die eigentlich Berechnung angestoßen. Das Forwarding ist hier so zu verstehen, dass die RS nicht erst wartet, bis der Wert im Registerfile steht und dann erst daraus liest, sondern die Werte wie beschrieben vom Bus direkt ausliest. Würde man diesen Weg gehen, hätte man mindestens einen Taktzyklus mehr als Waitstate. Wenn du dir anschaust, wie Flip-Flops funktionieren, wird das Problem eventuell klarer. Wichtig ist aber, dass du dir merkst, erst CDB, dann RS, dann FU.

Grüße,
Martin