This commit is contained in:
David Schirrmeister 2024-04-30 14:38:14 +02:00
parent 1aeef7a49b
commit 94e4fb8d4c
22 changed files with 295 additions and 52 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@ -13,5 +13,8 @@
</toc-element> </toc-element>
<toc-element toc-title="Rechnerarchitektur"> <toc-element toc-title="Rechnerarchitektur">
<toc-element topic="Historie.md"/> <toc-element topic="Historie.md"/>
<toc-element topic="Prozessorkonzepte.md">
<toc-element topic="MU0Rechner.md"/>
</toc-element>
</toc-element> </toc-element>
</instance-profile> </instance-profile>

View File

@ -1,54 +1,89 @@
# Topic title # Historie
```timeline ```mermaid
[line-3, body-4, active-color-background-modifier-error-hover] stateDiagram
[*]--> ersteAutomaten
ersteAutomaten: 60 n Chr.
note right of ersteAutomaten
Alexandriner Heron entwickelte
viele Automaten z.B.
automatische Türen mit Hebeln
_
end note
+ 1100 v.Chr ersteAutomaten --> zeitDerUhrmacher
+ [[Abakus]] 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
+ 60 n.Chr zeitDerUhrmacher --> astronomischeUhr
+ [[Die ersten Automaten]] astronomischeUhr: 1354
+ note left of astronomischeUhr
Astronomische Uhr
_
end note
+ 12 - 14 Jahrhundert astronomischeUhr --> lochkartenWebstuhl
+ [[Die Zeit der Uhrmacher]] 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
+ 17 Jahrhundert lochkartenWebstuhl --> jaquesDesVaucanson
+ [[Napierstäbchen]], [[Mechanische Rechenmaschine]], 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
+ 18 Jahrhundert jaquesDesVaucanson --> jaquard
+ [[Die ersten Lochkartenautomation]] jaquard: Der Jaquard Webstuhl
+ note right of jaquard
asd erste frei programmierbare
+ 19 Jahrhundert Maschine, die in großer Menge
+ [[Charles Babbage|Differenzengine & Analytical Engine]], [[Vorlesungen_RA.pdf#page=49|Ada Lovelace]], [[Parallelisierung]] gefertigt wurde
+ _
end note
note right of jaquard
Der Lochkartenstreifen ist der
erste Datenträger, der
austauschbare Programme trägt
_
end note
+ 1927 - 1940 jaquard --> lochkartenSteuerungMusik
+ (Elektro-)mechanische Rechenmaschinen lochkartenSteuerungMusik: Ende 17. Jhd
+ note left of lochkartenSteuerungMusik
Drehorgeln, Orchestrion
(stellt ganzen Orchester dar)
Konnte noch nicht speichern
_
end note
+ 1940 -1955 lochkartenSteuerungMusik --> ersteRechenmaschine
+ 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
+
``` ```

View File

@ -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

View File

@ -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)