AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Technische Informatik: Datenabhängigkeit in der Pipeline
Thema durchsuchen
Ansicht
Themen-Optionen

Technische Informatik: Datenabhängigkeit in der Pipeline

Ein Thema von Nikolas · begonnen am 16. Nov 2007 · letzter Beitrag vom 16. Nov 2007
 
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#1

Technische Informatik: Datenabhängigkeit in der Pipeline

  Alt 16. Nov 2007, 09:57
Hallo Delphianer.
Ich habe ein kleines Problem mit einem Zettel. In der Aufgabe geht es um diesen Code:
Code:
S1: JMP S3       ; springe nach S3 
S2: LOAD 100 R4  ; Reg[4]:=D[100]
S3: LOAD 200 R1  ; Reg[1]:=D[200]
S4: LOAD 300 R2  ; Reg[2]:=D[300]
S5: MUL R1 R2 R1 ; Reg[1]:=Reg[1]·Reg[2]
S6: ADD R1 R2 R2 ; Reg[2]:=Reg[1]+Reg[2]
Annahme ist, dass es sich um eine fünfstufige Pipeline handelt (Befehl holen, Dekodieren, operanden holen, ausführen, abspeichern).
Im vierten Takt wird der JMP dann ausgeführt, der Befehlszähler also auf 3 gesetzt. Zu diesem Zeitpunkt wurden schon S2, S3 und S4 geholt.
Wenn ist jetzt richtig denke, müssten doch die Befehlereihenfolge dann 1,2,3,4,3,4,5,6 lauten, oder?
Also nichts mit 1,3,4,5,6 wie mein erster Ansatz war.

Jetzt muss ich auch noch die Datenabhängigkeiten angeben. Ein Beispiel wäre dafür
Zitat:
True Dependence(read after write): S2 liest ein Register, das in S1 beschrieben wird.
Ein Beispiel dafür müsste doch S5 und S3 sein. Operand holen und Operand speichern liegen zwei Takte enfternt, wenn also S5 Reg(1) ausliest, wird es gerade von S3 geschrieben.

Wenn das aber stimmt, habe ich ein Problem mit dem zweiten Aufgabenteil, da hier Pipelinekonflikte gefunden und mit NOPs geklärt werden müssen. Unter einer Datenabhängigkeit würde ich in diesem Fall eher verstehen, wenn ein späterer Befehl aus einem Register liest, dass irgendwann vor ihm beschrieben wurde um man z.B. dafür sorgen muss, dass jetzt kein ADD aus einem leeren Register liest . (Was passiert dann eigentlich? Ist dann da auch irgendwas zufälliges drin, wie bei nicht initialisierten Variablen?)

Ich habe mich leider erst letzte Woche entschieden, diese Vorlesung zu hören und war deswegen in keiner der Vorlesungen zu diesem Thema und muss den Stoff jetzt alleine lernen.

Nikolas
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz