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
[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
+
```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
``` ```

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)