Die wichtigsten Leitungen und Datenkanäle

Antworten
Benutzeravatar
davidvajda.de
Site Admin
Beiträge: 1482
Registriert: Di Jul 18, 2023 8:36 pm
Wohnort: D-72072, Tübingen
Kontaktdaten:

Die wichtigsten Leitungen und Datenkanäle

Beitrag von davidvajda.de »

Code: Alles auswählen

MUX4
MUX3
MUX2
MUX1

MUX4, Eingang: ALU, Datenspeicher
MUX3, Eingang: Addierer1, Addierer2
MUX2, Eingang: Registersatz, Vorzeichenerweiterungseinheit
MUX1, Eingang: Befehlswort

MUX4, Eingang: ALU, (Lesedaten, Datenspeicher)
MUX3, Eingang: Addierer1, Addierer2
MUX2, Eingang: (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit
MUX1, Eingang: (20:16, Befehlswort), (15:11, Befehlswort)

MUX4, Ausgang: Registersatz
MUX3, Ausgang: Befehlszähller
MUX2, Ausgang: ALU
MUX1, Ausgang: Registersatz

MUX4, Ausgang: (Schreibedaten, Registersatz)
MUX3, Ausgang: (PC(t+1), Befehlszähler)
MUX2, Ausgang: ALU
MUX1, Ausgang: (Schreiberegister, Registersatz)

MUX4, Eingang: ALU, (Lesedaten, Datenspeicher), Ausgang: (Schreibedaten, Registersatz)
MUX3, Eingang: Addierer1, Addierer2, Ausgang: (PC(t+1), Befehlszähler)
MUX2, Eingang: (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit, Ausgang: ALU
MUX1, Eingang: (20:16, Befehlswort), (15:11, Befehlswort), Ausgang: (Schreiberegister, Registersatz)

MUX4, ALU, (Lesedaten, Datenspeicher), (Schreibedaten, Registersatz)
MUX3, Addierer1, Addierer2, (PC(t+1), Befehlszähler)
MUX2, (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit, ALU
MUX1, (20:16, Befehlswort), (15:11, Befehlswort), (Schreiberegister, Registersatz)

MUX4: ALU, Datenspeicher, Registersatz
MUX3: Addierer1, Addierer2, Befehlszähler
MUX2: Registersatz, Vorzeichenerweiterungseinheit, ALU
MUX1: Befehlswort, Registersatz

ALU: 2 MUX
Registersatz: 3 MUX

ALU: 3, 4
Registersatz: 1, 2, 4

Registersatz: Bedient
1.) Schreiberegister
2.) Schreibedaten
3.) Lesedaten-2

Beide schreiben, ein Lesedaten!

ALU:
- Ausgang
- Eingang2

Code: Alles auswählen

R-Typ-Befehle
I-Typ-Befehle
J-Typ-Befehle

R-Typ
I-Typ
J-Typ

R-Typ: op rs rt rd sa func
I-Typ: op rs rt immediate
J-Typ: op target address

R-Typ:
    op
    rs
    rt
    rd
    sa
    func
I-Typ:
    op
    rs
    rt
    immediate
J-Typ:
    op
    target address


R-Typ:
    op      31 bis 26
    rs      25 bis 21
    rt      20 bis 16
    rd      15 bis 11
    sa      10 bis 6
    func    5 bis 0
I-Typ: op rs rt immediate
    op          31 bis 26
    rs          25 bis 21
    rt          20 bis 16
    immidiate   15 bis 0
J-Typ:
    op                  31 bis 26
    target  address     25 bis 0

Code: Alles auswählen

MUX4
MUX3
MUX2
MUX1

MUX4, Eingang: ALU, Datenspeicher
MUX3, Eingang: Addierer1, Addierer2
MUX2, Eingang: Registersatz, Vorzeichenerweiterungseinheit
MUX1, Eingang: Befehlswort

MUX4, Eingang: ALU, (Lesedaten, Datenspeicher)
MUX3, Eingang: Addierer1, Addierer2
MUX2, Eingang: (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit
MUX1, Eingang: (20:16, Befehlswort), (15:11, Befehlswort)

MUX4, Ausgang: Registersatz
MUX3, Ausgang: Befehlszähller
MUX2, Ausgang: ALU
MUX1, Ausgang: Registersatz

MUX4, Ausgang: (Schreibedaten, Registersatz)
MUX3, Ausgang: (PC(t+1), Befehlszähler)
MUX2, Ausgang: ALU
MUX1, Ausgang: (Schreiberegister, Registersatz)

MUX4, Eingang: ALU, (Lesedaten, Datenspeicher), Ausgang: (Schreibedaten, Registersatz)
MUX3, Eingang: Addierer1, Addierer2, Ausgang: (PC(t+1), Befehlszähler)
MUX2, Eingang: (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit, Ausgang: ALU
MUX1, Eingang: (20:16, Befehlswort), (15:11, Befehlswort), Ausgang: (Schreiberegister, Registersatz)

MUX4, ALU, (Lesedaten, Datenspeicher), (Schreibedaten, Registersatz)
MUX3, Addierer1, Addierer2, (PC(t+1), Befehlszähler)
MUX2, (Lesedaten-2, Registersatz), Vorzeichenerweiterungseinheit, ALU
MUX1, (20:16, Befehlswort), (15:11, Befehlswort), (Schreiberegister, Registersatz)

MUX4: ALU, Datenspeicher, Registersatz
MUX3: Addierer1, Addierer2, Befehlszähler
MUX2: Registersatz, Vorzeichenerweiterungseinheit, ALU
MUX1: Befehlswort, Registersatz

ALU: 2 MUX
Registersatz: 3 MUX

ALU: 3, 4
Registersatz: 1, 2, 4

Registersatz: Bedient
1.) Schreiberegister
2.) Schreibedaten
3.) Lesedaten-2

Beide schreiben, ein Lesedaten!

ALU:
- Ausgang
- Eingang2



lw-Befehl:

1.) Befehlszähler
2.) Befehlsspeicher
3.) Befehl -> Lese-Register-1
4.) Befehl -> Vorzeichenererweiterungsheit
5.) Registersatz -> ALU
6.) Vorzeichenerweiterungseinheit -> ALU
7.) ALU -> Datenspeicher

1.) Pfad: Befehlszähler -> Befehlsspeicher -> (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz) -> ALU -> (Addresse, Datenspeicher)
2.) Pfad: Befehlszähler -> Befehlsspeicher -> Vorzeichenererweiterungsheit -> ALU -> (Addresse, Datenspeicher)

1.) Befehlszähler -> Befehlsspeicher ->
2.1.) (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz)
2.2.) (vorzeichenerweiterungsinheit)
3.) -> ALU -> Datenspeicher

1.) Befehl -> Lese-Register-1
2.) Befehl -> Vorzeichenererweiterungsheit
3.) Registersatz -> ALU
4.) Vorzeichenerweiterungseinheit -> ALU
5.) ALU -> Datenspeicher

1.) Pfad: (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz) -> ALU -> (Addresse, Datenspeicher)
2.) Pfad: Vorzeichenererweiterungsheit -> ALU -> (Addresse, Datenspeicher)

1.1.) (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz)
1.2.) (vorzeichenerweiterungsinheit)
2.) -> ALU -> Datenspeicher

II.) Lesedaten -> (Schreibedaten, Registersatz)

1.) Befehlszähler
2.) Befehlsspeicher
3.) Befehl -> Lese-Register-1
4.) Befehl -> Vorzeichenererweiterungsheit
5.) Registersatz -> ALU
6.) Vorzeichenerweiterungseinheit -> ALU
7.) ALU -> (Addresse, Datenspeicher)
8.) (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

1.) Pfad: Befehlszähler -> Befehlsspeicher -> (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz) -> ALU -> (Addresse, Datenspeicher) -> (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)
2.) Pfad: Befehlszähler -> Befehlsspeicher -> Vorzeichenererweiterungsheit -> ALU -> (Addresse, Datenspeicher) -> (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

1.) Befehlszähler -> Befehlsspeicher ->
2.1.) (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz)
2.2.) (vorzeichenerweiterungsinheit)
3.) -> ALU -> Datenspeicher
4.) (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

1.) Befehl -> Lese-Register-1
2.) Befehl -> Vorzeichenererweiterungsheit
3.) Registersatz -> ALU
4.) Vorzeichenerweiterungseinheit -> ALU
5.) ALU -> Datenspeicher
6.) (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

1.) Pfad: (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz) -> ALU -> (Addresse, Datenspeicher) -> (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)
2.) Pfad: Vorzeichenererweiterungsheit -> ALU -> (Addresse, Datenspeicher) -> (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

1.1.) (Leseregister-1, Registersatz) -> (Lesedaten-1, Registersatz)
1.2.) (vorzeichenerweiterungsinheit)
2.) -> ALU -> Datenspeicher
3.) (Lesedaten, Datenspeicher) -> (Schreibedaten, Registersatz)

III.) Vom lw-Befehl - inkrementieren des Befehlszählers
(Befehlszähler, PC (t)) -> (Addierer1, +4) -> (PC (t+1), Befehlszähler)


+++++++++++++++++++++++++++

sw-Befehl

1.) (Registersatz, Lesedaten-2) -> (Schreibedaten, Datenspeicher)
2.) MemWrite = 1

++++++++++++++++++++++++++++

Erweiterter Datenpfad für R-Typ Befehle

1.) (Registersatz, Lese-Daten-2) -> (MUX / ALU-Src = 0) -> ALU - (ALU, Ergebnis) -> MUX4 -> (Schreibedaten, Registersatz)
2.) (Befehlswort, Bit 15:11) -> (Schreiberegister, Registersatz)

1.)
MemToReg = 0
ALUSrc = 0

2.) MUX1, RegDst = 1, Befehlswort

Wegen ALU-Src = 0, nicht Vorzeichenererweiterungsheit
Wegen MemToReg = 0, ALU-Ergebnis


++++++++++++++++++++++++++++++++

beq-Befehle

Zwei Fälle

1.) Fall - springen
2.) Fall - nicht springen

1.) Fall PCSrc = 1
2.) Fall PCsrc = 0

1.) Fall: Vorzeichenerweiterungseinheit -> << 2 -> Addierer -> MUX3 -> (PC (t+1), Befehlszähler)
2.) Fall: (Addierer1, + 4) -> MUX3 -> (PC (t+1), Befehlszähler)

Code: Alles auswählen

r-Typ-Befehle: add, sub, and, or, slt

Steuereinheit:
- func-Feld

ALUOp
00      Addition
01      subtraktion
10      Nutze das Func-Feld
11      n/a

Func:
- X
- X
- 100 000 - add
- 100 010 - sub
- 100 100 - and
- 100 101 - or
- 101 010 - slt

Dementsprechend die ALU-Operation

Befehl: ALU-OP: 00, x1, 1x - addition direkt, subtraktion direkt
Func Befehl für andere
Dann entsprechend ALU-Operation

ALU-Operation
010 - add
110 - sub
010 - add
110 - sub
000 - and
001 - or
111 - slt - set less than
Antworten