Zitat von Elshuber Martin <e9825286@xxxxxxxxxxxxxxxxxxxx>:
ldc r0,7 ... //irgendein code indem r0 nicht verändert wird ldc r0,2 nop add r1,r0,r0 wenn das add im ID ist wird gleichzeitig 2 ins register r0 geschrieben die relevanten leitungen sind also ID.ra=0 ID.rb=0 WB.alu_val=2 WB.wb_sel=WB_ALU WB.rd_en=1 WB.rd=0 es wird also gleichzeitig r0 gelesen und geschrieben. was soll das register file liefern? gleiches lässt sich auch für predikate konstruieren.
Sowas löst man laut VO dadurch, dass man bei der Positiven Taktflanke das Ergebnis schreibt und bei der negativen TF ausliest. So wird's in MIPS gemacht. Was das Register liefern soll ist klar: 2, steht ja so im Befehl. Die Frage ist eher, was wir implementieren :)
noch eine weitere sache: in block_2 könnte man für 'call' und 'b' operation die miss-prediction schon in EX ausführen ret,iret braucht den stack. das geht also erst im WB
Bringen wir mal das Ding zum Laufen, optimieren können wir immer noch.
lg martin
Günther