Gerne. Dann endlich btt.
Jo jeder noch nen allerletzten Kommentar, wenns sein muss, und dann Ende ;-)
Hier noch meiner:
Es scheint, also wird genau hier die Abarbeitung abgebrochen, eben um den Energieverbrauch zu senken - denn spekulativ kann eben auch einmal falsch sein. Ergo: Einer der der Decoder wird auch mit der Decodierung spekulativer Sprungziele gefüttert, der andere (wenn es denn 3 sind, die beiden identischen hier zusammengefasst) nicht. In diesem Fall entfällt selbstverständlich auch Ausführung.
Jo so wies ausschaut wurde darüber jetzt die ganze Zeit gestritten, ob abgebrochen wird, oder erst gar nicht losgeschickt wird.
Ich bin eben auf den Standpunkt, dass die Dekoder dekodieren und sonst nichts.
Deinen Sachverhalt, dass sich die Dekoder darum kümmern würden, was sie spekulativ ausführen oder nicht, halte ich für viel zu kompliziert.
Rein von der Logik her, sollte man das Problem an der Wurzel also der Branch Pred. anpacken und erst gar keine spekulativen Sprünge mit komplexen Instruktionen abschicken. Das geht mit dem Zweizeiler Pseudocode von mir oben kinderleicht.
Ausserdem sitzt in der Branch Pred. schon ne Menge an Logikschaltkreisen. Das dort unterzubringen wäre die offensichtliche Wahl. Die Dekoder haben dagegen eben nur Dekoder-Schaltkreise.
Letztes Argument wäre der Stromverbrauch, wieso sollte man die Branch Pred. mühsam rumrechen lassen, bis die einen spekulativen Sprung mit complex Instr. auf den Weg schickt, der dann in der nächsten Stufe gleich abgebrochen werden würde ... -> seehr unpraktisch. Dem kann man mit dem complex Instr. Verbot, ganz am Anfang der Branch Pred. gleich nen Riegel vorschieben.
So das wars dann schönen Sonntag noch.
ciao
Alex