Hallo Mmichael
bin grad an der vorbereitung für die prüfung. und da hab ich
doch gleich mal ne frage zum datenpfadentwurf. und zwar geht’s
um die offenbar von jedem prof verwendeten bildchen. zu finden
z.b. unter
http://inferno.informatik.uni-halle.de/~molitor/CDRO…
auf der seite „Erster Schritt einer R-Type-Instruktion“ is die
erweiterung für den branch-befehl eingezeichnet. frage:
wozu brauch ich den shifter?
Der „Shifter left 2“ entspricht einer Multiplikation mit 4. Im Prinzip werden einfach die 32-Datenleitungen um 2 bit versetzt angeschlossen und Bit.0 und Bit.1 sind fest auf „0“ angeschlossen, Bit.30 und Bit.31 sind überflüssig.
wie wird branch on NOT equal realisiert?
In der Zeichnung „Datenpfad-Operation bei Branch Equal“ ist ein Fehler: der „Zero“-Ausgang der Daten-ALU und der „Branch“-Ausgang der „Control“-Einheit sowie das UND-Gatter sind auch aktiv.
„Barnch on NOT equal“ wird realisiert in dem der „Zero“-Ausgang der Daten-ALU invertiert wird.
kann der pc nicht erniedrigt werden? der angegebene datenpfad
sieht nur eine erhöhung um jeweils 4 bzw. um die
sprungadresse+4 vor. was ist, wenn ich an eine frühere stelle
des programms springen will?
welche aufgabe hat das „sign extend“?
Wenn du einen NEGATIVEN Wert ADDIERST dann geht doch rückwärts!
Aus diesem Grund wird auch das „sign extend“ benötigt, da ja die Daten von 16 auf 32 Bit erweitert werden. Der „sign extend“ ist in diesem Fall recht einfach konstruiert: Bit.15 (Eingangswert) wird einfach mit Bits.15-31 (Ausgang) verbunden; Bits.0-14 (Eingang) werden 1:1 mit den Bits.0-14 (Ausgang) verbunden.
warum brauch ich zwei steuersignale MemRead und MemWrite? kann
ich denn gleichzeitig in den speicher schreiben und aus ihm
lesen?
Natürlich nicht, aber es gibt hat 3 Zustände auf dem Bus:
- Lesen
- Schreiben
- Ungültig (wenn keine gültige Adresse auf dem Bus anliegt oder die Signale gerade am umschalten sind).
Deshalb brauchst du mindestens 2 Bit um diese Zustände zu identifizieren. Eine Variante ist halt ein Read- und ein Write-Signal zu erzeugen die Andere ein Write- und ein AdressValid-Signal.
MfG Peter(TOO)