diff --git a/Writerside/images/image_20.png b/Writerside/images/image_20.png new file mode 100644 index 0000000..fe5b312 Binary files /dev/null and b/Writerside/images/image_20.png differ diff --git a/Writerside/images/image_21.png b/Writerside/images/image_21.png new file mode 100644 index 0000000..a858cf4 Binary files /dev/null and b/Writerside/images/image_21.png differ diff --git a/Writerside/images/image_22.png b/Writerside/images/image_22.png new file mode 100644 index 0000000..40d9f2d Binary files /dev/null and b/Writerside/images/image_22.png differ diff --git a/Writerside/images/image_23.png b/Writerside/images/image_23.png new file mode 100644 index 0000000..4a67e25 Binary files /dev/null and b/Writerside/images/image_23.png differ diff --git a/Writerside/images/image_24.png b/Writerside/images/image_24.png new file mode 100644 index 0000000..06079b0 Binary files /dev/null and b/Writerside/images/image_24.png differ diff --git a/Writerside/images/image_25.png b/Writerside/images/image_25.png new file mode 100644 index 0000000..203b327 Binary files /dev/null and b/Writerside/images/image_25.png differ diff --git a/Writerside/images/image_26.png b/Writerside/images/image_26.png new file mode 100644 index 0000000..0ed38b0 Binary files /dev/null and b/Writerside/images/image_26.png differ diff --git a/Writerside/images/image_27.png b/Writerside/images/image_27.png new file mode 100644 index 0000000..ee818cb Binary files /dev/null and b/Writerside/images/image_27.png differ diff --git a/Writerside/images/image_28.png b/Writerside/images/image_28.png new file mode 100644 index 0000000..277e699 Binary files /dev/null and b/Writerside/images/image_28.png differ diff --git a/Writerside/images/image_29.png b/Writerside/images/image_29.png new file mode 100644 index 0000000..83ad461 Binary files /dev/null and b/Writerside/images/image_29.png differ diff --git a/Writerside/images/image_30.png b/Writerside/images/image_30.png new file mode 100644 index 0000000..c9dada5 Binary files /dev/null and b/Writerside/images/image_30.png differ diff --git a/Writerside/images/image_31.png b/Writerside/images/image_31.png new file mode 100644 index 0000000..cac8ecc Binary files /dev/null and b/Writerside/images/image_31.png differ diff --git a/Writerside/images/image_32.png b/Writerside/images/image_32.png new file mode 100644 index 0000000..685ec3c Binary files /dev/null and b/Writerside/images/image_32.png differ diff --git a/Writerside/images/image_33.png b/Writerside/images/image_33.png new file mode 100644 index 0000000..c5577a5 Binary files /dev/null and b/Writerside/images/image_33.png differ diff --git a/Writerside/images/image_34.png b/Writerside/images/image_34.png new file mode 100644 index 0000000..8c09985 Binary files /dev/null and b/Writerside/images/image_34.png differ diff --git a/Writerside/images/image_35.png b/Writerside/images/image_35.png new file mode 100644 index 0000000..84d73ec Binary files /dev/null and b/Writerside/images/image_35.png differ diff --git a/Writerside/images/image_36.png b/Writerside/images/image_36.png new file mode 100644 index 0000000..4aee296 Binary files /dev/null and b/Writerside/images/image_36.png differ diff --git a/Writerside/images/image_37.png b/Writerside/images/image_37.png new file mode 100644 index 0000000..4f5a8a6 Binary files /dev/null and b/Writerside/images/image_37.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index 6ce3ee5..08e549f 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -13,5 +13,8 @@ + + + \ No newline at end of file diff --git a/Writerside/topics/RA/Historie.md b/Writerside/topics/RA/Historie.md index afba572..0b00069 100644 --- a/Writerside/topics/RA/Historie.md +++ b/Writerside/topics/RA/Historie.md @@ -1,54 +1,89 @@ -# Topic title - -```timeline -[line-3, body-4, active-color-background-modifier-error-hover] - -+ 1100 v.Chr -+ [[Abakus]] -+ - -+ 60 n.Chr -+ [[Die ersten Automaten]] -+ - -+ 12 - 14 Jahrhundert -+ [[Die Zeit der Uhrmacher]] -+ - -+ 17 Jahrhundert -+ [[Napierstäbchen]], [[Mechanische Rechenmaschine]], -+ - -+ 18 Jahrhundert -+ [[Die ersten Lochkartenautomation]] -+ -asd -+ 19 Jahrhundert -+ [[Charles Babbage|Differenzengine & Analytical Engine]], [[Vorlesungen_RA.pdf#page=49|Ada Lovelace]], [[Parallelisierung]] -+ - -+ 1927 - 1940 -+ (Elektro-)mechanische Rechenmaschinen -+ - -+ 1940 -1955 -+ Elektronenröhren, Relais, Steckfelder, [[Zuse Z3]], [[ENIAC]], [[EDSAC]], [[EDVAC]] -+ - -+ 1955 - 1965 -+ [[Transistoren]], [[Stapelverarbeitung]], [[Mainframes]], [[Minicomputer]] -+ - -+ 1965 - 1980 -+ Integrierte Schaltungen, Dialogbetrieb -+ - -+ 1980 - 2000 -+ Hochintegrierte Schaltungen, [[Mikrocomputer|PCs/Workstations]] -+ - -+ 2000 -+ Verteilte Systeme, Mobile Systeme -+ +# Historie +```mermaid +stateDiagram + [*]--> ersteAutomaten + ersteAutomaten: 60 n Chr. + note right of ersteAutomaten + Alexandriner Heron entwickelte + viele Automaten z.B. + automatische Türen mit Hebeln + _ + end note + + ersteAutomaten --> zeitDerUhrmacher + zeitDerUhrmacher: 1348-1364 + note left of zeitDerUhrmacher + Giovanni de Dondi baute 1348-1364 die + erste Astronomische Uhr + _ + end note + note left of zeitDerUhrmacher + Eingabe: Takt + Ausgabe: Zeiger + Zahnräder: innerer Zustand + _ + end note + + zeitDerUhrmacher --> astronomischeUhr + astronomischeUhr: 1354 + note left of astronomischeUhr + Astronomische Uhr + _ + end note + + astronomischeUhr --> lochkartenWebstuhl + lochkartenWebstuhl: 1725-1728 + note right of lochkartenWebstuhl + Basile Bouchon 1725 und Jean + Babtiste Falcon 1728 erfanden + eine Apparatur die über + Lochkarten gesteuert wurde + _ + end note + + lochkartenWebstuhl --> jaquesDesVaucanson + jaquesDesVaucanson: 1745 + note left of jaquesDesVaucanson + Der mechanische Webstuhl wurde + durch Jacques de Vaucanson, einem + Erfinder um 1745 weiterentwickelt, + konnte sich aber immer noch nicht + durchsetzen + _ + end note + note left of jaquesDesVaucanson + Vaucanson entwickelte auch andere + Automaten, so die berühmte Ente + _ + end note + + jaquesDesVaucanson --> jaquard + jaquard: Der Jaquard Webstuhl + note right of jaquard + erste frei programmierbare + Maschine, die in großer Menge + gefertigt wurde + _ + end note + note right of jaquard + Der Lochkartenstreifen ist der + erste Datenträger, der + austauschbare Programme trägt + _ + end note + + jaquard --> lochkartenSteuerungMusik + lochkartenSteuerungMusik: Ende 17. Jhd + note left of lochkartenSteuerungMusik + Drehorgeln, Orchestrion + (stellt ganzen Orchester dar) + Konnte noch nicht speichern + _ + end note + + lochkartenSteuerungMusik --> ersteRechenmaschine + + + ``` \ No newline at end of file diff --git a/Writerside/topics/RA/MU0Rechner.md b/Writerside/topics/RA/MU0Rechner.md new file mode 100644 index 0000000..a75a267 --- /dev/null +++ b/Writerside/topics/RA/MU0Rechner.md @@ -0,0 +1,177 @@ +# MU0-Rechner +## Historie +- **SSEM** _Small Scale Experimental Machine_ erste erfolgreiche Implementierung des Von-Neumann-Rechners + - 1948 erstmals Programm aus dem Speicher ausgeführt + +## Elemente +![image_22.png](image_22.png) +- **[Steuerwerk](MU0Rechner.md#steuerwerk)** + - _Control_ - Takt, Steuerlogik + - _IR - Instruction Register_ - speichert den aktuellen Befehlscode + - _PC - Programm Counter_ - speichert die aktuelle Programmadresse +- **Rechenwerk** + - _[ALU](MU0Rechner.md#alu) - Arithmetic Logic Unit_ - kann rechnen + - _ACC - Akkumulator_ - Ergebnis Register für Rechnungen +- **[Speicherwerk](MU0Rechner.md#speicher)** + - _Memory_ - speichert Programme und Daten +- **Bus** - verbindet alle Elemente + +### Steuerwerk +- Steuert Elemente mithilfe von Steuersignalen +- Besteht aus + - Ablaufsteuerung / Steuerlogik + - Dekodierer + - Befehlsregister IR + - Befehls-Zähler PC +- **Endlicher Automat, der gemäß der Steuerlogik Steuersignale schaltet** +- führt für jeden Befehl ein Mikroprogramm aus Mikroschritten aus + +### Register +![image_23.png](image_23.png) +- Zwischenspeicher + - Register-Größe: 1 Wort (16 Bit) +- Arbeitsmodus Lesen / Schreiben + - _output enable_ liegt an → Daten ausgeben (schreiben) + - _input enable_ liegt an → Daten einlesen +- Ausgeben und Lesen erfolgt jeweils beim Flankenwechsel + - Ausgeben erfolgt einen halben Takt früher als das Lesen, sodass ein Register in einem Zyklus schreiben und lesen kann + - ![image_24.png](image_24.png) + +### Speicher +- Stelle im Speicher wird über eine Adresse angesprochen +- Adresse wird vom Adressbus gelesen +- Daten werden vom Datenbus gelesen bzw. geschrieben +- ![image_25.png](image_25.png) + +### Datenpfade +- je nach Steuerungscode lesen / schreiben +- geschriebene Daten liegen an Datenpfad an +- immer nur 1 Element schreiben +- ![image_26.png](image_26.png) + +### ALU +- über Steuercode wird Funktion ausgewählt + - Eingang A, B führt aus + - mögliche Funktionen: + - A+Β + - A-B + - A*Β + - Konjunktion (logisches UND, bitweise) + - Disjunktion (logisches ODER, bitweise) + - Vergleich von A und B (bitweise) + - ... + +## Beispiel für einen Befehlsablauf +![image_27.png](image_27.png) + +## Der Rechenzyklus +### Fetch +![image_28.png](image_28.png) +1. Wert des Programmcounters auf den Adressbus legen +2. Programmcode aus dem Speicher in das Instructionregister lesen +3. ALU erhöht gleichzeitig Wert des PC und speichert diesen wieder zurück + +### Decode/Execute/Write für Rechenoperationen +![image_29.png](image_29.png) +1. Adresse des Operanden aus dem Befehl dekodieren (1) +2. Wert des angesprochenen Speicherworts an einen Eingang des ALU schalten (2) +3. zweiter Eingang der ALU erhält seine Information vom Akkumulator (2) +4. Rechenoperation wird aus dem Befehl dekodiert und and der ALU über Steuercode gewählt (1) +5. Ergebnis der Rechnung wird wieder im Akkumulator gespeichert (3) + +## Taktsynchronität +- Register sind Zwischenspeicher und arbeiten getaktet + - Daten liegen taktsynchron am Bus an +- ALU und Speicher sind nicht taktsynchron + - folgen Steuercodes und dem Inhalt auf dem Bus + +## Umsetzung MU0-Struktur in Hardware +- Architektur muss in Gattern und getaktet umsetzbar sein +- Prinzip des minimalen Hardwareaufwands + +- Festlegung der Wortbreite: 16 Bit +- [Datenpfad-Modell](MU0Rechner.md#datenpfad-modell) +- Steuerung der Elemente durch Steuercodes +- Befehle (Instruction Set) + - Kodierung der Befehle + - Steuerlogik + +### Datenpfad-Modell +![image_30.png](image_30.png) +- bisheriges Bild lässt sich nicht 1:1 umsetzen + - ALU hat nur zwei Eingänge + - Getrennte Datenpfade für jeden ALU-Eingang + - Kontrolle der PFade für Daten und Adressen durch [Multiplexer](MU0Rechner.md#multiplexer) + +#### Multiplexer +![image_31.png](image_31.png) +- Schalter, der durch Anlegen eines Steuersignals das ausgewählte Eingangssignal auf den Ausgang legt + +#### Befehlsgruppen +- Multiplexer B steht auf 1 bei allen _Datenverarbeitungs-Befehlen_ und auf 0 bei allen _Sprung-Befehlen_ +- Multiplexer A wird nur für _Fetchzyklus_ auf 0 gestellt + - ansonsten wird S (unterer Teil von IR) immer als Adresse interpretiert +- Bei _Sprung-Befehlen erfolgt kein Datenzugriff, S (IR) wird direkt nach PC verschoben + +## Kennwerte +- Wortbreite des Prozessors: 16 Bit + - Registergröße + - Busbreite + - Eingänge/Ausgänge ALU +- Instruktionen immer 2 Takte lang + - Fetch + Instruction (= Execute): 2 Takte + - Schreiben + Lesen + Schreiben + Lesen: 4 Taktflanken + +## Elemente und Steuercodes +![image_32.png](image_32.png) + +## Speicher des MU0 +- Steuersignale des Datenbus: + - MemRQ (Memory Request) + - Speicherbaustein wird angesprochen + - RnW(Read / not Write) + - gibt an, ob (von oder in) den Speicher geschrieben wird + - _Lesen bei High, Schreiben bei Low_ + +## Instruction Set des MU0-Rechners (Befehlssatz) +![image_33.png](image_33.png) +- Prozessor kennt keine Befehle + - zum **Laden und Speichern** von Werten + - zur **Berechnung** + - zur **Ablaufkontrolle** + +- Die Instruktionen setzen sich zusammen aus + - einem 4 Bit Operation Code + - einer 12 Bit Adresse + → 16 Befehle möglich + +## MU0-Steuerlogik (_Kontroll-Logik_) +![image_34.png](image_34.png) + +### Fetchen +![image_35.png](image_35.png) + +### ADD S +![image_36.png](image_36.png) + +## Ein erstes MU0-Programm +![image_37.png](image_37.png) + +## Fazit +- Elemente der von-Neumann-Architektur + - Steuerwerk, Rechenwerk, Speicherwerk, I/O +- Speicherprogrammiert + - Programme (& Daten) liegen im Speicher +- Architektur muss in Gattern umsetzbar sein + - Datenpfad & Steuertabelle +- Von-Neumann-Zyklus: Fetch-Decode-Execute-Write +- Steuerlogik wird über Opcodes (Befehle) abgefragt und generiert Steuercodes + +- MU0 ist ein Modellrechner zum Lernen + - 16-Bit Wortbreite, binär + - Register: PC, IR, ACC + - Befehlssatz (Instruction Set) + - 4-Bit OpCode erlaubt 16 Befehle, 8 sind implementiert + - Takt + - Immer 2 Zyklen pro Mikroprogramm + diff --git a/Writerside/topics/RA/Prozessorkonzepte.md b/Writerside/topics/RA/Prozessorkonzepte.md new file mode 100644 index 0000000..15f4e52 --- /dev/null +++ b/Writerside/topics/RA/Prozessorkonzepte.md @@ -0,0 +1,28 @@ +# Prozessorkonzepte + +## Was sollte ein Rechner können +- Rechnen + - **`+` `-` `*` `/`** +- **Datenbewegung** (kopieren) +- **Strukturierte Lösung eines Problems** + - Abfolge von Rechenoperationen + - Verwendung von Daten, indirekte Adressierung, Pointer + - Schleifen, Sprünge + - Unterprogramme (Strukturen) +- **Spezielle Befehle** (z.B. Interrupts zur Anbindung von Peripherie) +- **Performance** + - Optimierung der Datenzugriffe (schneller) + - mehr Daten + - spezielle Algorithmen z.B. Graphik, Audio-Codecs, ... +- **Energieeffizienz** + +## Von-Neumann-Rechner (Speicherprogrammierter Rechner) +Veröffentlicht 1945 +![image_20.png](image_20.png) +- _Arithmetic Logic Unit_ - Rechenwerk +- _Control Unit_ - Steuerwerk +- _Memory_ - Speicherwerk +- _Input/Output_ - Ein-/Ausgabewerk + +## MU0 - MU7 +### [MU0 - Rechner: Basiskonzept](MU0Rechner.md) \ No newline at end of file