Hardware Reference
In-Depth Information
type
tPipeline
is record
PCount : tInstrAdr;
Instr : tInstr;
OReg_A, OReg_B : tDaten;
Opcode : tOpcode;
ARegY1, ARegY2 : tRegAdr;
Ergebnis : tErgebnis;
Ctrl_EX, Ctrl_RW: tOpTyp;
end record
;
5.4.10 Die Übergangsfunktion für einen Pipeline-Schritt
Das Funktionsmodell für einen einzelnen Pipeline-Schritt soll als Prozedur mit
dem Pipeline-Objekt, dem Registersatz und dem Datenspeicher als les- und
veränderbare Signale und dem Befehlsspeicher und dem Konstantenspeicher
als nur lesbare Konstanten beschrieben werden:
procedure
PipeStep(
signal
pp:
inout
tPipeline;
InstrMem: tInstrMem;
signal
RegSet:
inout
tDatMem(
0
to
2
**cRegAdrBreite-
1
);
signal
DatMem:
inout
tDatMem;
KonstMem: tDatMem)
is
begin
Das Verhaltensmodell, das alle Befehle zusammenfasst, besteht aus den Si-
gnalzuweisungen für die einzelnen Pipeline-Phasen mit den entsprechenden
Fallunterscheidungen nach Befehlstyp. Unser Modell soll mit den Registerzu-
weisungen für Verarbeitungsbefehle aus Abb. 5.19 beginnen und diese in den
nachfolgenden Fallunterscheidungen bei Bedarf überschreiben. Ausgenommen
seien die Zuweisung an das Ergebnisregister in der Ausführungsphase (EX)
und die Schreiboperationen in die Blockspeicher in der Ergebnisschreibpha-
se (RW). Diese Zuweisungen werden später in den Fallunterscheidungen für
die EX- bzw. RW-Phase mit berücksichtigt. Dem Kontrollregister »Ctrl_EX«
wird dazu für Verarbeitungsbefehle der Wert »wr« für »Ergebnis in den Re-
gistersatz schreiben« zugewiesen:
-- Befehlszähler weiterschalten
pp.PCount <= pp.PCount+
1
;
-- IF: Befehlswort lesen
pp.Instr <= read(InstrMem, pp.PCount));
-- OF: Operanden lesen, Operationscode, Zieladresse und
-- Kontrollwert für Verarbeitungsbefehle weitergeben
pp.OReg_A <= read(RegSet, pp.Instr(tInstrRA'range));
pp.OReg_B <= read(RegSet, pp.Instr(tInstrRB'range));
pp.OpCode <= pp.Instr(tInstrOp'range);
pp.ARegY1 <= pp.Instr(tInstrRY'range);
pp.Ctrl_EX <= wr;