Output Dependendy
04.11.2009 11:46:55
Hallo,

auf Wiki steht dieses Beispiel für output dependency:

ADD R3, R1, R2
ADD R3, R4, R5

Nur wenn ich mir das aufzeichne sehe ich das der 1. ADD Befehl in Takt 5 auf R3 schreibt, und der 2. ADD Befehl in Takt 6 auf R3 schreibt.

Aber wo ist denn jetzt das Problem (also ausser das es keinen SINN macht das gleiche Register zweimal hintereinander zu beschreiben?
Rein Technisch gesehen funktioniert das doch und gibt auch das erwartete Ergebnis, oder nicht?

Grüße,
Jan
Re: Output Dependendy
04.11.2009 12:18:51
Zunächst ist so eine Output Dependence irgendwie definiert, so wie z.B. auf dem Übungsblatt. Ob das nun sinnvoll oder nicht ist, spielt erstmal keine Rolle.
Für die 4a) ist es nur entscheidend die Output Dependencies zu erkennen und aufzuschreiben. Ob es dabei zu einen Konflikt kommt, ist hier dann irrelevant.
Schließlich: ob ein Konflikt daraus entstehen kann, ist genau die Frage, die in der Aufgabe 4c) diskutiert werden soll. Es wäre also dort zu begründen, ob so eine Abhängigkeit unter den gegebenen Bedingungen überhaupt kritisch in dem Sinne ist, dass ein Konflikt entstehen kann. Die Beantwortung deiner Frage näme damit die Lösung der Aufgabe vorweg.

Es kann übrigens sinnvoll sein ein Register zweimal hintereinander zu überschreiben. Angenommen, du hast eine RIESIGE Gleichung, die du ausrechnen willst (wobei... es reicht schon, wenn es mehr als eine arithmetische Operation ist. Also sowas wie: a+b*c). Dann musst du das zwangsläufig in mehrere Befehle aufteilen und Zwischenergebnisse weiterverwenden. In dem Fall könnte man immer wieder ein Register beschreiben in dem diese Zwischenergebnisse stehen.



1 mal bearbeitet. Zuletzt am 04.11.2009 12:20 von Sven Reimer.