rechnerarchitektur

Von: , Frage gestellt am Do, 18. Jan 2001

hallo.

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?

wie wird branch on NOT equal realisiert?

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"?

warum brauch ich zwei steuersignale MemRead und MemWrite? kann ich denn gleichzeitig in den speicher schreiben und aus ihm lesen?

soviel erstmal :-)

gruß

michael

2 Antworten zu dieser Frage

  1. Antwort von nach 2 Stunden hilfreich
    Re: rechnerarchitektur

    hallo.

    wozu brauch ich den shifter?

    Die Sprungbefehle kommen offenbar relativ und in ganzen Befehlen.
    Die Startadressen sind immer 4 auseinander. Shift um 2 Bits nach links ist dasselbe wie *4.


    wie wird branch on NOT equal realisiert?

    Sehe ich hier nur als Programm:

    0 branch on eq 1
    4 branch sonstwohin
    8 NOP

    ueberspringt halt 4 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"?
    kein Ahnung, aber ich vermute mal, dass damit Sprünge nach hinten
    durch das erzeugen von negativen Zahlen ermöglicht werden. wahrscheinlich - ich kenne den rest der VOrlesung ja nicht- kommt der Befehl als sign + Entfernung und wird hier in die entsprechende Komplementdarstellung umgewandelt. warum brauch ich zwei steuersignale MemRead und MemWrite? kann
    ich denn gleichzeitig in den speicher schreiben und aus ihm
    lesen?

    Du möchtest doch manchmal gar nicht mit dem Speicher arbeiten.
    Es gibt also mindestens die Zustände read, write und nix. da komst Du mit zwei Leitungen nicht hin. soviel erstmal :-)

    gruß

    michael

  2. Antwort von nach 3 Stunden hilfreich
    Re: rechnerarchitektur

    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:
    1. Lesen
    2. Schreiben
    3. 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)

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!