[CALU] Re: Blockdiagram

  • From: Günther Wimpassinger <e0525147@xxxxxxxxxxxxxxxxxxxx>
  • To: calu-ss2010-tuwien@xxxxxxxxxxxxx
  • Date: Tue, 27 Apr 2010 18:32:58 +0200

Zitat von David Markvica <david@xxxxxxxxxxxxxxxxxxx>:

Hej!

Hab einen vorlaeufigen Entwurf mal ins git gestellt. Das sollt so
ungefaehr das sein, was ich mim Bene zu mittag kurz besprochen hab..

Sachen die dabei aufgekommen sind:
- Stack ist im Daten-Memory, nicht in einem separaten Speicherbereich.

Die Speicherarchitektur ist mir sowieso noch nicht ganz klar.
Spätestens beim Realisieren in HW werden wir sehen, was sich sinnvoll
machen laesst.

- Wir brauchen einen Speicherbereich auf den wir dummy-Stores
ausfuehren koennen wg. konstanter Ausfuehrungszeit.

Ich bin mir nicht sicher ob ich das richtig Verstehe. Es geht darum,
nicht benötigte Ergebnisse irgendwo hin zu speichern, weil das
predicate-bit nicht gesetzt war?

- Sollten wir vielleicht nur den ALU-Operationen predicates erlauben?
Wenn wir predicated Loads haben, muessen wir beispielsweise die ganze
pipeline stallen, bis die durch sind.

Ich würde gerne die grundsätzliche Struktur der ISA nicht mehr ändern.
Das muss überall berücksichtigt werden. Ich hätte die predicated
instructions alle ganz normal ausgeführt und in der MEM (bei Store)
bzw. WB (bei allen anderen Instr) Stufe wird entschieden, ob das
Ergebnis übernommen wird, oder nicht. Branches/Calls nicht berücksichtigt.

Anmerkungen zum Diagramm:

Ich dachte unser "Instruction Prefetch Buffer" hier als Instr-Mem
dargestellt, wird Wortweise adressiert. Der PC wird aber um 3 erhöht.
Gibt's einen bestimmten Grund dafür?

Das Registerfile braucht einen 3. Ausgang (rd/rz) damit st
Instruktionen implementiert werden können.
"st rbase+roffs<<sh,rdata" alles Quellregister.

Ein Shifter muss vor die ALU, damit shresult=(roffs<<sh) berechnet
werden kann bevor rbase+shresult berechnet wird. Wobei in unserer ISA
leider einmal der Registerinhalt von ra und rb bits (lsl/lsr/..)
verschoben wird, und einmal rb um sh bits (ld/st) verschoben wird.
Entweder man ändert die ld/st Befehle oder man baut einen Mini-Shifter
vor die ALU für ld/st

Der PC wird bis zur ALU geführt, damit man ihn auf den Stack puschen
kann. Wie kommt ein Wert vom Stack in den PC zurück?

Worin liegt der Vorteil Stack und Data Memory zu vereinen?

Das Predicate-Register-File muss auch auf den Stack, dass ist im Moment
nicht möglich. pushpred/poppred

Interrupts wurden überhaupt ausgespart.

lg
Günther



Other related posts: