/media/sda-magnetic/david/Extern-Magnetic-2022-06-29/Extern01/Dokumente-11-2021-07-05/informatik-math/mips/mips-3-tmp.txt


Anmerkung vom Autor - 2:

Das geht jetzt nicht an mich - das ist extremst wichtig, was das Lernen betrifft

1.) Ich habe gestern einer Dame gesagt: In Kurzer Zeit werde ich in der Lage seinen, einen Prozessor auf einen FPGA unter zu bringen
Ich habe ihr gesagt: Dafür muss man den Prozessor aber genau kennen - weil verstehen Sie: Einen Prozessor, den ich nicht zu 100% kenne, den kann ich nicht unterbringen. Das hilft nichts. Wenn da irgendetwas in der Luft liegt, das tut dann einfach nicht. Das mag sonst, weiß der Kuckuck wie schön sein 

2.) Es gibt beim Lernen einen generellen Fehler. 

2 Beispiele

1.) Chemie 
2.) Jetzt schaue man sich die Bundesländer an, das ist nicht prägnante Beispiel.
Aber ich weiß: Baden-Württemberg, Saarland, Rheinlandpfalz, Nordrhein-Westfalen, Niedersachen, Schleswig-Holstein.
Ich denke, das sind zwei Sachen: Gehen wir vom Prozessor zur Geographie über: Dann stellen wir fest: Rein theoretisch können wir uns gut merken, wo auf der geographischen Karte was ist - warum auf dem Prozessor nicht
2.2.) Aber: Wenn ich jetzt anfange, die Bundesländer punkt für punkt ab zu malen, lerne ich nichts. Ich kann aber, die Bundesländer, auch die Länder Europas, Staaten von den USA noch machen, ganz genau. Und man muss einfach die Reihenfolge lernen

Aber: Übertragen auf den Prozessor ist das was anderes

1.) Es gibt sagen wir so: Kein 100% System, wo ich sagen, kann, wenn ich das als so ein Wort fasse, habe ich alles gesagt. Doch, das gibt es in der Chemie nämlich. Da kann ich ein Molekül so und so aussieht, als Wort sagen: Aber das könnte ich auch mit einer Schaltung. Indem ich das 1,2,3-Triazepin, so, wie einen Dekoder begreife.
Aber das gibt es nicht.
Es gibt aber einen Irrtum

1.) Wenn ich jetzt anfange und sehe: Da ist ein Befehlsdekoder - dann lerne ich was das Befehlsdekoder ist. Mit seinen Bits - ich muss die Bits wissen. Und das ist kein Hexenwerk

Aber: Ich lerne alle 
a) Elemente 
b) alle Bits

Und die Bits, das sind kein Hexenwerk - die haben alle einen Namen. Die Autoren von so einen Prozessor. Wollen einen Prozessor bauen. Die wollen nicht den Leser, auf Irrwege führen und verwirren. Die machen kein Verwirrspiel. Also geben sie Treffsichere Namen. Die muss man lernen

2.) Wenn ich sehe, da sind 4 Multiplexer. Dann wäre es sinnvoll zu lernen, es gibt, eine Funktionsdekodiereinheit, aber auch 4 Multiplexer. Und da weiß ich jetzt erst Mal nicht, wie genau. Die liegen auch irgendwie verschieden.
Aber gut wäre alles benennbare zu lernen.

Das wichtige ist glaube ich, und das ist das Fazit: Lernen, lernen, lernen.

Und ich sage so: Die Assembler-Befehle muss man so alle können. Man könnte fragen welche? MIPS oder Intel - egal, es gibt gibt Gemeinsamkeiten - wer die einen lernen kann, kann die anderen auch lernen. Und Assemblerbefehle sind nicht aus der Befehle. Das ist eine Rechenmaschine, die kann ADD, SUB, DIV, MUL. Und das ist wohl das entscheidenste.

Aber: Die muss halt alle lernen. Verstehen Sie: Darum geht es. Da kann man nicht sagen: Och, das kann so oder so sein. Das kann nicht so sein, oder so sein. Das Ergbnis sieht man dann, mit dem so sein und so sein. Das sieht man dann am Ende. Ich mache das jetzt im Null-Komma-Nichts. Für mich sind die Befehle vom MIPS nicht besonders schlimm. Aber ohne die geht es jetzt nicht, zeigt sich. Das komische ist, wenn dann so ein Staunen kommt.

Lernen sie halt - sie müssen halt lernen - dann kommt am Ende kein Staunen. 

Aber das andere ist, das ist es gerade. Also

3.) Wenn jetzt 4 Multiplexer da sind, da können die irgendwie liegen. Weil, bei dem Befehlsdekoder, und dem Register, das ist durch die Benenung, der Pins eindeutig. Die Multiplexer sind nicht eindeutig. Multiplexer ist Multiplexer. 

Aber, wenn man das erst Mal, weiß, so und so und so - dann kann man die Schrittweise ein bauen, poe - a poe

Aber: Man könnte sich jetzt einen Zusatz Ding leisten. Man lernt das Blockschaltbild jetzt noch geographisch. Wie auf der Karte. Man lernt die Nachbarn. Also, man könnte jetzt rauf runter gehen


Aber das Entscheidende: 

Es geht um Funktionen - und das Problem ist: Man will automatisch alle Funktionen begreifen. Also, wenn man das Mikroprogrammsteuerwerk begreift ist das gut.
Aber Beispiel aus der Chemie. Es gibt zwei Arten Chemie zu lernen, würde ich sagen

a) Man weiß nichts - aber auch gar nichts. Und fängt dann über alle Reihenfolgen nach zu denken. Und über alle - keine Ahnung - alle Arten von Reaktionen. 
Ja, ich sage so: Das macht die Schule leider. Das ist die Schule. Die macht das falsch.

Das fängt mit der Mathematik-Formelsammlung an. Die kriegt man. In Folge dessen muss ich blos nachgucken, was die Logarithmengesetze sind. Oder ich kriege das Periodensystem der Elemente. Das muss ich haben, damit ich das lernen kann. Aber das ist nicht zum Nachgucken gedacht. Weil: Das brauche ich, sonst kann ich es nicht lernen. Aber ich gucke das nicht nach. Ich lerne das gerade alles nach. Für die späteren Elemente ist das gut. Die muss ich ja nicht alle wissen. Aber ich lerne die gerade alle.

Aber in der Schule kriegt man das so präsentiert: Man kriegt halt alle schönen Reihenfolgen. Dabei denkt man darüber nach, wie funktoniert was. 

Ich sage mal so: Aber, wenn man schon mal weiß, was was heißt, dann fällt einem vielleicht später, wie durch ein Wunder ein, wie das funktioniert. Also, ich kriege, was präsentiert. Dann denke ich kurz einen Moment: Seltsam. Aber, wissen Sie, wenn ich das mal benennen kann, dann fällt mir schon noch ein funktioniert. Erst wissen wie es heißt, und dann verstehen wie es funktioniert. Wenn natürlich was da ist, sonst geht nichts. Ein bisschen muss was da sein.

Aber das andere ist: Schauen Sie, Chemie ist ein gutes Beispiel: Da kriege, X Daten. Und wenn ich die Daten habe, kann ich die verbinden. Tun wir mal so, das meine ich jetzt nicht. Wir haben Elemente. Ich lerne, jetzt, wie beim Prozessor die Elemente. Das ist jetzt nicht so, aber tun wir mal so. Ich lerne jetzt alle Elmenent. Jetzt weiß ich bei jedem, wo ist was. Ich kenne jetzt jedes Element. Zur Funktion gehört die Verbindung. Dann ist gut, wenn ich die Elemente kenne. Die Verbindung kommt nachher.

Drehen wir das mal um: Ich denke über die Verbindung nach - aber bei jedem Element denke ich nach. Das kann nicht gehen, wenn ich das Element nicht kenne

Das andere ist: Gutes Beispiel, Anion und Kation. Kation ist + und Anion -. Da kann man sich deswegen nicht vertun, weil man es auswendig lernen kann. Oder Länge und Breite - westliche Länge, östliche Länge, nördliche Breite, südliche Breite.

Das Problem ist, dass wir Vorurteile haben. Kathode ist zum Beispiel bei der Elektronenstrahlröhre, negativ.

Blos, das ist alles scheiß: Man lernt 100.000x dass das Kation positiv ist. Und ich meine, was gibt es zu wissen - das ist die Frage - dass es +-Teilchen und --Teilchen, das leuchtet noch irgendwo ein. Wenn anders herum wäre - egal. Dann ist es halt anders herum - aber so lerne ich das auswendig.

Dann weiß ich das, was soll ich machen.

Und das andere ist: Ja, was soll machen? Man muss es halt lernen - wenn man das nicht lernt, da kann man nicht machen - dann kommt immer Funktion - Funktion - Funktion. Wenn man nichts lernt, kann man nichts machen. 

Das andere ist: 

IV.) Dann kommt NVDIA mit 24 Shedder-Einheiten. Ja, gut, wenn man jetzt ankommt, dann kommt da so: Ein Funktionsding raus. Man kann in wikipedia nachlesen, was so ungefähr das ist. Das ist gut. Blos, umgekehrte frage: Die GPU ist eine CPU - jetzt mal kurz: Kann man eine GPU verstehen, wenn man eine CPU nicht versteht? Wohl kaum. Und ich sage bei NVIDIA ist niemand so, dass er jetzt anfängt, die Einheiten zu sehen und dann über die Transistoren nachgedenkt. Es gibt VHDL und dann muss man nur sagen: Da und da die Einheit hin und die tut das und das. Aber dazu muss man die CPU verstanden haben. Aber in die andere Richtung geht es nicht


Nächste Frage: 

Dann kommt der Weltkrieg. Die Leute sagen sie machen, Geisteswissenschaften, weil Uj, das ist alles zu schlimm.

Und dann auf ein Mal, der Rest macht irgendetwas - dann gibt es einen dritten und vierten Weltkrieg. Da stellt man sich drei Fragen, eine laut, zwei Leise

a) Die Laute: Das Problem ist, dass man das den Leuten nachher nicht erklären kann. weil sie sind tot - oder sie blicken es nicht mehr. Nachdem sie einen Weltkrieg erlebt haben, ist das alls Pille-Palle. Und da hat man andere Sorgen - jetzt man Opfer - und schlimm sind mal wieder die Bösen. 
Das sind dann die Bösen. Und: Wenn man das den Leuten dann noch erklären könnte, weil sie gerade keine Opfer sind, oder weil sie nicht tot sind, weil, sie es gerade hören würden, dann würden die auf ein Mal denken, wenn man es ihnen erklären könnte - Hoppla, so einfach ist das.
Und dafür 20 Jahre Weltkrieg - wenn man ihnen nur erklärt hätte, so einfach ist das. 

Das ist deswegen seltsam: Weil es gibt Menschen, die kommen mit Moral. Und sagen, was die Menschen da machen, Schweinerei. Die beuten alle aus - keiner beutet irgendwen aus. Keiner hat jemanden was verboten - nichts los - aber die beuten alle aus. Ja, klar logisch. Alles klar.
Und dann machen die Weltkrieg - und dann kann ihnen das keiner erklären, niemnand wurde ausgebeutet.

Ich sage mal so: Aber verstehen Sie: Das geht dann am Anfang die ganze Zeit hier: Hier so und so. Und dann kommt - das und das und das und das. Und dann weitet sich das aus. Dann die schuldigen überall zu finden und dann geht es am Ende los. 
Und das Lustige ist: Alle müssen. Verstehen Sie.

OK, sagen wir mal so: Richtig gelernt, blickt das jeder. Man muss es halt lernen. Das ist halt der Unterschied - lernen und lernen. Aber es mag sein, es gibt Naturen, die sind anders getaktet. Das ist aber nicht die Mehrheit, sondern die Minderheit - das ist der Unterschied. Ein normaler Mensch muss lernen, lernen, lernen.
Dann ist alles da. Nur: Lustig ist: Es gibt Menschen, die sagen: Nein, wir wollen keinen Krieg - ganz einfach. Das ist alles nicht das Richtige. 
Aber nicht dahin: Manche Menschen verstehen unter Pazifismus folgendes, und die meine ich, auch mit dem Verstehen Sie, von gerade eben. Pazifismus heißt für die. Ihr seid jetzt alle still. Weil der Mensch soll nicht überheblich sein. Für die liegt der Ursprung im Krieg, in der Überheblichkeit. So haben sie das gelernt. Das ist, was man den Leuten nachher nicht klar machen kann - für sie war das alles überheblich. Es wäre gut, wenn man ihnen nachher erklären könnte, dass man deswegen nicht überheblich war. Aber: Für die heißt, ethisches, moralisches Verhalten: Alle haben ihre Klappe zu halten, sonst sind sie überheblich. Dann halten die einen die Klappe, dann die nächsten.

Alles schön und gut. Wenn wenigstens mal ein Satz käme - dass sie keinen Krieg wollen. Aber das heißt auch: Sagen das finden wir alles nicht gut. Aber das sind die wenigstens. Das ist die Minderheit. Letzten Endes ist das die Minderheit - weil man muss nur lernen, lernen, lernen. Mehr muss man nicht machen.
Aber manche machen es nicht. Oder einige. Aber, von denen, obwohl, man mur lernen, lernen, lernen muss - kommt nicht Krieg ist scheiße. Krieg kommt für die, wegen der Ethik. Weil die Leute überheblich. Aber das ist keiner. Das empfinden die so - das ist ihr Problem.

Die machen dann Polit-Gewäsch von morgens bis abends, man weiß nicht, was das soll. Das sind die ersten, wegen allem unter die Decke gehen. Wissen Sie, es gibt solche Pazifisten und solche. Die einen sagen, ja, das ist alles eine Folge von Überheblichkeit. Die Überheblichkeit ist an allem Schuld. Dann folgen irgendwelche Theorien. Die auch sagen, dass die Überheblichkeit an allem Schuld ist, auch an den Kriegen dann folgen. Das ist alles eine Folge von Überheblichkeit. Und deswegen wäre das Beste, die Menschen essen nicht mehr und sind alle tot. Das ist dann Ethik. Dass alle tot sind. Tolle Ethik. Dann kommen 30 Jahre Regime - und dann erklären Sie: Oh, tut uns Leid, aber unsere Theorien waren gut gemeint, leider musstet ihr jetzt die ganze Zeit deswegen kaputt gemacht werden.
Und: Das ist so - aber es gibt die predigen - ich nehme das Wort nicht in den Mund, weil ich das nicht konsumieren.

Aber wissen Sie, es gibt zwei Formen. Es gibt in der Bibel spruch.

Sie predigen Wasser, aber trinken, sie wissen was ich meine. 

Ich bin da strikt und rigoros. Ich bin da kathegorisch - da kann man bei mir nichts machen. Ich predige auch nichts. Aber es gibt den Spruch 

Sie predigen Wasser, und sie wissen was ich meine.

Das halt das Problem. Schauen Sie mal, es gibt immer die Forderung nach Wahrheit - und Leute, die nach der Suche nach Wahrheit sind und die Wahrheit wollen, die sagen, Wahrheit ist das Wichtigste, dazu sage: Wahrheit und Unwahrheit mag wichtig sein - aber es gibt höhere Logik. Das Problem ist, wenn man Wahrheit predigt, heißt das noch lange nicht, dass man das selber tut. Der Vorwurf genau derer ist ja, zu sagen, es gibt Menschen, die hätten einen an der Waffel. Und deswgen folgen sie dem Wahrheitsprinzip nicht. Gut, wenn ich das jetzt predige, mag viel getan sein, blos: Andere tun das ja auch, so weil, sie so sind - und die Leute, die das so sagen, sind sie ja auch irgendwo wie sie sind. Wer sagt, also, dass sie das besser nur.

Nur schlimmer als Wahrheit und Unwahrheit ist, wenn man, die Wahrheit predigt, aber selber nicht zur Wahrheit kommt.

Und ich sage so: Verstehen Sie: Ich zum Beispiel bin Vegetarier. Weil, mir tun die Tiere Leid. Aber ich sage so: Nicht, dass ich das Gefühl schwach zu werden, das weiß ich, dass ich eigentlich jetzt nicht werde. Es ist nicht die Schwäche.

Nur wie sagt man so schön: Viele Wege führen nach Rom und der Weg zur Hölle ist mit vielen guten Vorsätzen gepflastert. 




Anmerkung vom Autor: 

Was wir beim Steuerwerk nicht vergessen dürfen: Funktionsdekodierer für die ALU

Also, Befehlsdekodierer, liefert Steuersignale an alle Einheiten.
Eines an die Funktionsdekodierer. Der Funktionsdekodierer ist aber selber mit den Befehlen verbunden. Er liefert Signale an die ALU

Also, Steuereinheit: 

1. Befehlsdekodierer
2. Funktionsdekodierer

Jetzt: Genereller Irrtum!

Einzyklenmikroarchitektur: 

(1.) Getaktetes Holen eines Befehls 
(2.) Ausführen eines Befehls durch ein Schaltnetz

Jetzt lassen wir (1.) weg. Das ist klar. 

Was unlogisch klingt: Wenn ich 5 Zyklen habe - brauche ich 5 Takte. Aber wenn ich einen Zyklus habe - brauche ich einen Takt. Also, muss zweiteres Schneller sein.

Egal. Die Frage, richtet sich nach der technischen Realisierung. Ich dachte: Dass man einen Befehl nur in mehreren Zyklen ausrechnen kann. Das heißt, man nimmt den Befehl, er kommt in den Registersatz. 
Dann macht den Registersatz auf (1.) Takt. Dann macht man (2.) Takt die ALU auf (3.) den Datenspeicher (4.) Takt wieder den Registersatz.

Aber warum - also, wenn ich ein Schaltnetz baue, 

Dann schließe ich sagen wir 4 ALU's hintereinander. Ich kann die kombinieren. Das heißt, der Datenpfad ist nicht eindeutig. Selbst, wenn nicht eindeutig. Ich kann die alle gleichzeitig öffnen.

Was den Registersatz betrifft, das kenne ich ja von meinen Schaltwerken - die Daten gehen raus - in ein Schaltnetz und das Schaltnetz hat die Daten dann schon und sie gehen wieder ins Register. 

Das ist beim Registersatz auch so - die Daten gehen bei Lesedaten raus - durch die ALU und so weiter. Dann führen sie zu Schreibedaten. Das macht aber nichts - weil, das geht gleichzeitig. 

Jetzt aber: 

Jetzt haben wir so zu sagen auf dem Weg - erst Mal so viel gar nicht - das ist gar nicht mal viel. Das ist ein Registersatz und eine ALU könnte man fast sagen. Eigentlich war das schon das Elementare.

Aber, es gibt einen Registersatz, zwei MUX eine ALU, einen datenspeicher. Das ist fast schon alles. 

Aber es wiederspricht nichts, beim Registersatz, die Lesedaten-1, die Lesendaten-2 zu öffnen, diese direkt in die ALU zu schicken, was auch sonst - ich muss keine ALU öffnen, das ist ja quatsch - die muss ich ja nicht öffnen, das ist ein Schaltnetz und hat Eingangssignale - wenn ich die Daten aus dem Registersatz nehme sind sie da und gehen  zwangsweise in die ALU. 

Jetzt kommt es zum Datenspeicher. Dafür brauche ich keinen Takt. Wenn das offen ist, ist es offen und die MUX machen auch, was sie wollen.

Richtig ist: Dass jede Funktionseinheit Steuersignale braucht. Das geht ja auch nicht anders. Wenn der MUX und die ALU kein Steuersignal hat, geht es nicht. Wie soll das gehen. Aber, diese Signale kann ich alle gleichzeitig erzeugen. Ich muss ja nicht erst das eine Signal und dann das andere erzeugen. Ich kann die auch gleichzeitig erzeugen..

Sicher ist: Der Befehl ist kurz. Der passt in 32 Bit. Oder so. Die ganzen Steuersignale, als ein Pfad und Bus sind groß. Man muss die ALU öffnen. Man muss den Registersatz öffnen und so weiter - deswegen wird das am Ende eine eigene Sache. Aber im Befehl steht kein Steuerbit für die ALU. 



Steuereinheit:
1. Befehlsdekodierer
2. Funktionsdekodierer

Befehlsdekodierer: 
1. MemtoReg
2. MemWrite
3. Branch
4. ALUSrc
5. RegDst
6. RegWrite 
7. ALUOp

Funktionsdekodierer: ALU Operation: 3 Bit 

Funktionsdekodierer: 
1. Ausgang: ALU Operation: 3 Bit 
2. Eingang: Func - vom Befehl - 6 Bit
3. Eingang: ALUOp, 2 Bit vom Befehlsdekodierer 

Befehlsdekodierer
Funktionsdekodierer
Registersatz
ALU 
Datenspeicher 
Befehlsspeicher
Befehlszähler
Vorzeichenerweiterungseinheit
4 x MUX 
1 x AND 
2 x Addierer
1 x Bit Shifter 



Befehlsdekodierer: 
1. MemtoReg
2. MemWrite
3. Branch
4. ALUSrc
5. RegDst
6. RegWrite 
7. ALUOp

Funktionsdekodierer: 
1. Func
2. ALUOp
3. ALU Operation 

Registersatz: 
- Lese-Register 1
- Lese-Register 2
- Schreiberegister 
- Schreibedaten 
- WE
- Lese-Daten 1
- Lese-Daten 2

ALU:
- ALU-Ergebnis 
- Null

AND:
- PCSrc

Datenspeicher:
- Addresse
- Schreibedaten 
- WE
- Lesedaten 

Befehlsspeicher: 
- Leseaddresse
- Lesedaten 

Befehlszähler: 
- PC (t+1)
- PC (t)


Alle Datenwege:


1. MemtoReg (Befehlsdekodierer)
2. MemWrite (Befehlsdekodierer)
3. Branch (Befehlsdekodierer)
4. ALUSrc (Befehlsdekodierer)
5. RegDst (Befehlsdekodierer)
6. RegWrite (Befehlsdekodierer)
7. ALUOp (Befehlsdekodierer)
8. Func (Funktionsdekodierer)
9. ALUOp (Funktionsdekodierer)
10. ALU Operation (Funktionsdekodierer)
11. Lese-Register 1 (Registersatz)
12. Lese-Register 2 (Registersatz)
13. Schreiberegister (Registersatz) 
14. Schreibedaten (Registersatz) 
15. WE (Registersatz)
16. Lese-Daten 1 (Registersatz)
17. Lese-Daten 2 (Registersatz)
18. ALU-Ergebnis (ALU)
19. Null (ALU)
20. PCSrc (AND)
21. Addresse (Datenspeicher)
22. Schreibedaten (Datenspeicher) 
23. WE (Datenspeicher)
24. Lesedaten (Datenspeicher) 
25. Leseaddresse (Befehlsspeicher)
26. Lesedaten (Befehlsspeicher) 
27. PC (t+1) (Befehlszähler)
28. PC (t) (Befehlszähler)

Abgeschrieben, das war aus dem Blockschaltbild - aber allgemeiner Prozessor (OpenSource - und kann jeder verwenden):

ALUOp       Func            ALU Operanden 
00          X               010 - add 
X1          X               110 - sub 
1X          100000 - add    010 - add 
1X          100010 - sub    110 - sub 
1X          100100 - and    000 - and 
1X          100101 - or     001 - or
1X          101010 - slt    111 - set les than 

        Op-Code Reg-Write   Reg-Dst ALU-Src Branch  Mem-Write   Mem-toReg   ALU-Op
R-Typ   000000  1           1       0       0       0           0           10
lw      100011  1           0       1       0       0           1           00
sw      101011  0           X       1       0       1           X           00
beq     000100  0           X       0       1       0           X           01