Der Mips Schnell erklärt
- davidvajda.de
- Site Admin
- Beiträge: 1509
- Registriert: Di Jul 18, 2023 8:36 pm
- Wohnort: D-72072, Tübingen
- Kontaktdaten:
Re: Der Mips Schnell erklärt
Der MIPS ist relativ schnell erklärt
Lassen wir die Sprungbefehle und Verzweigungsbefehle erst Mal aus. Ausser in einer Hinsicht
es gibt
1.) Das Laden - load
2.) Das Speichern - store
Was hat es damit auf sich?
1.) Das Laden - load
2.) Das Speichern - store
3.) move
Wir haben generell einen Datenspeicher und einen Registersatz - Blick in den Schaltplan
Man spricht für gewöhnlich für einen RAM - ich kenne die späteren MIPS Versionen noch nicht so gut, aber bei
der einfachsten und trivialsten Version, gibt es
1.) Einen statischen Befehlsspeicher
2.) Einen dynamischen Arbeitsspeicher
Wir können also nicht einfach behaupten, wir laden die Daten aus Arbeitsspeicher in die Register oder speichern die Register im Arbeitsspeicher
Statt Arbeitsspeicher sagen wir - Datenspeicher
Es gibt die Befehle
1.) Laden
2.) Speichern
1.) Laden tun wir vom Arbeitsspeicher in die Register
2.) Speichern tun wir von den Registern im Arbeitsspeicher
3.) Move benutzen wir normalerweise von Register zu Register
Es gibt
- lb
- lh
- lw
- ld
- la
- li
- sb
- sh
- sw
- sd
Dazu kommen, die Verzweigungsbefehle
Hier wird ein Immidiate wert von 16 Bit, zum Befehlszähler adddiert. Der MIPS ist zunächst ein 32 Bit Prozessor
Gut - um zu verstehen, was der MIPS tut, kennen wir nun die Transportbefehle
Das Ziel sind arithmetische Logische Befehle, so wie Schiebe Befehle
1.) Arithmetisch
2.) Logisch
3.) Schiebe und Rotation
1.) Arithmetisch: add, addi, addiu, sub, subi, mult, multu, div, divu
2.) Logisch: and, andi, or, ori, xor, xori, not
3.) Schiebe und Rotation: sll, slr, ...
Gut, was passiert?
Ein Befehl besteht aus einer bestimmten Anzahl von Feldern - es gibt die
1.) R-Typ-Befehle
2.) I-Typ-Befehle
3.) J-Typ Befehle
Uns beschäftigen die R-Typ Befehle. Die arithmetischen sind diese
Gut, diese haben ein Dreiaddressformat
Es gibt
1.) Dreiaddressformat
2.) Zweiaddressformat
3.) Einaddressformat
4.) Nulladdressformat
Wir haben zwei Quelloperanden
1.) src1
2.) src2
Und einen Zieloperanden
3.) dest
Wir können uns vorstellen
c := a+b
Oft kommen wir mit zwei Operanden aus. Beim MIPS gibt es drei . Das ergebnis könnte sonst im ersten Zieloperanden landen
Gut, demnach hat der R-Typ Befehl drei Felder
rt
rs
rd
rs und rt, sind Quelloperanden und rd Zieloperand
Dazu haben wir den Opcode und das Func Feld
Darum geht es - ein Blick in das Schaltbild genügt
Es gibt einen
1.) Befehlsdekodierer
2.) Funktionsdekodierer
Der Unterschied ist, sie haben Eingänge, die liegen auf dem - man könnte sagen Befehlsbus, aber es ist auch ein Datenbus, es ist ein interner Bus
Dieser ist 32 Bit breit
Aber vorsicht, ohne die Struktur der Befehle können wir nicht denken. Das Befehlsformat ist direkt mit dem Bus verbunden
31 - 26: Entspricht dem OpCode es geht in den Befehlsdekodierer
25 - 21: Entspricht dem RS oder RT Quellooperanden muss nachschauen
20 - 16: Entspricht ebenso
...
6 .. 0: Entspricht dem Func Feld
Was hat es damit auf sich -
Zunächst am Befehlsdekodierer sind
1.) MemToReg
2.) MemWrite
3.) Branch
4.) ALU-Src
5.) ALU-Op
6.) RegDst
7.) RegWrite
An dem Funtionsdekodierer sind
- Func
- Func geht direkt von Bus, ebenso wie der Opcode in den Befehlsdekodierer geht
Die Func reguliert die ALU - die ALU hat folgende Bits
010 - add
110 - sub
000 - and
001 - or
111 - slt
Das sind die Bits zur Steuerung der ALU
Doch diese kommen durch den Funktionsdekodierer zustande
Wenn im Befehl steht
00 - add
01 - sub
10 - nutze das Func Feld
11 - n/a
Func Feld
100 000 / 4 0 - add
100 010 / 4 2 - sub
100 100 / 4 4 - and
100 101 / 4 5 - or
101 010 / 5 2 - slt
Das wäre alles.