Der Mips Schnell erklärt

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

Re: Der Mips Schnell erklärt

Beitrag von davidvajda.de »

Bild

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.
Antworten