Heutige Computer basieren auf der von John von-Neumann entwickelten Architektur. Zwar sind heute zahlreiche Optimierungen dabei, die Grundkomponenten sind aber die gleichen.
Von-Neumann-Architektur
1945 beschrieb John von-Neumann sein Konzept erstmals. Das Konzept war damals revolutionär, da zuvor entwickelte Rechner an ein festes Programm gebunden waren. Die meisten der heute gebräuchlichen Computer basieren auf dem Grundprinzip der Von-Neumann-Architektur.
Ein Von-Neumann-Rechner beruht auf folgenden Komponenten, die bis heute in Computern verwendet werden:
- Rechenwerk
- führt Rechenoperationen und logische Verknüpfungen durch
- Steuerwerk
- interpretiert die Anweisungen eines Programms und regelt die Befehlsabfolge
- Bus System
- dient zur Kommunikation zwischen den einzelnen Komponenten
- Speicherwerk
- speichert sowohl Programme als auch Daten, welche für das Rechenwerk zugänglich sind
- Ein-/Ausgabewerk
- steuert die Ein- und Ausgabe von Daten, zum Anwender (Tastatur, Bildschirm) oder zu anderen Systemen (Schnittstellen)
Bus-System
Man unterscheidet drei verschiedene Busse: Adressbus, Datenbus und Steuerbus
- Adressbus
- überträgt Speicheradressen
- Busbreite bestimmt den adressierbaren Speicher
- Datenbus
- überträgt Daten
- Busbreite bestimmte maximale Datenmenge die pro Schritt verarbeitet werden kann
- Steuerbus
- steuert Bus-Vorgänge wie z.B. Lesen oder Schreiben
Von-Neumann-Zyklus
In der Von-Neuman-Architektur kommt beim Abarbeiten von Programmen der Von-Neumann-Zyklus zum Zug. Dieser beschreibt 5 sich-wiederholende Schritte, wobei die 3 letzten Schritte nicht bei jedem Befehl ausgeführt werden müssen.
- Fetch
- Befehlsabruf – Aus dem Speicher wird der nächste zu bearbeitende Befehl entsprechend der Adresse im Befehlszähler in das Befehlsregister geladen und der Befehlszähler wird um die Länge des Befehls erhöht.
- Decode
- Dekodierung – Der Befehl wird durch das Steuerwerk in Schaltinstruktionen für das Rechenwerk aufgelöst.
- Fetch Operands
- Operandenabruf – Aus dem Speicher werden nun die Operanden geholt. Das sind die Werte, die durch den Befehl verändert werden sollen oder die als Parameter verwendet werden.
- Execute
- Befehlsausführung – Eine arithmetische oder logische Operation wird vom Rechenwerk ausgeführt. Bei Sprungbefehlen und erfüllter Sprungbedingung wird an dieser Stelle der Befehlszähler verändert.
- Write Back
- Rückschreiben des Resultats – Sofern notwendig, wird das Ergebnis der Berechnung in den Speicher zurückgeschrieben.
Little Man Computer
LMC ist eine Simulation eines Rechners. Sie lässt sich online starten:
- Der PROGRAM COUNTER beinhaltet zweistellige Zahlen (0 bis 99).
- Der ACCUMULATOR beinhaltet dreistellige Zahlen und ein Vorzeichen (-999 bis 999).
- Der OUTPUT beinhaltet Informationen in einer Liste (in zwei Kolonnen, Inhalt scrollt).
- Die INPUT-Instruktion erwartet nach der Eingabe einer Zahl noch ein ENTER.
Die erste Ziffer in einem vom Memory gelesenen Befehl gibt die Instruktion an («was ist zu tun»). Damit wir uns die Instruktion besser merken können, besitzt sie auch einen Kurznamen. Die zwei weiteren Ziffern beinhalten die Adresse, die mit der Instruktion verwendet wird.
Aufgabe: Einstieg «Little Man Computer»
Wir machen Schritt für Schritt ein Einstiegsbeispiel in welchem 2 Zahlen addiert werden. Diese Zahlen werden vom Benutzer als Input mitgegeben. Das Resultat sollte als Output ausgegeben werden.
- Öffne den Little Man Computer
- Schreibe diesen Code in das Textfeld and klicke auf Submit
INP
STA NUM1
INP
STA NUM2
LDA NUM1
ADD NUM2
STA RESULT
OUT
HLT
NUM1 DAT
NUM2 DAT
RESULT DAT
- Klicke auf Run und beobachte was passiert
- Beschreibe in eigenen Worten was Zeile für Zeile im Programm passiert
- Erkennst du den Von-Neumann-Zyklus?
- Bei welchen Befehle werden nicht alle Schritte des Zyklus ausgeführt?
Code | Name | Description |
---|---|---|
0 | HLT | Stop (Little Man has a rest). |
1 | ADD | Add the contents of the memory address to the Accumulator |
2 | SUB | Subtract the contents of the memory address from the Accumulator |
3 | STA or STO | Store the value in the Accumulator in the memory address given. |
4 | This code is unused and gives an error. | |
5 | LDA | Load the Accumulator with the contents of the memory address given |
6 | BRA | Branch - use the address given as the address of the next instruction |
7 | BRZ | Branch to the address given if the Accumulator is zero |
8 | BRP | Branch to the address given if the Accumulator is zero or positive |
9 | INP or OUT | Input or Output. Take from Input if address is 1, copy to Output if address is 2. |
9 | OTC | Output accumulator as a character if address is 22. (Non- standard instruction) |
DAT | Used to indicate a location that contains data. |
Aufgabe: Beispielprogramme
Untersuchen Sie die eingebauten Beispielprogramme add
, max
, overwrite
, ascii table
- Lese die Erläuterung in der LMC-Help: http://www.peterhigginson.co.uk/LMC/help.html
- Spiele die Programme langsam und schnell durch.
Aufgabe: Maximum 3
Erstelle ein Programm max3
, das drei Zahlen einliest und die grösste der drei Zahlen ausgibt.
Zusatzaufgabe: Bootloader
- Erstelle einen «Bootloader»:
- Ein Programm, das so lange Zahlen einliest, bis die Zahl 0 eingegeben wird, die Zahlen der Reihe nach ab Adresse 30 in den Speicher füllt.
- Nach Eingabe der Zahl 0 soll das Programm zur Adresse 30 springen und dort mit der Programmausführung weiterfahren.
- Teste den Bootloader, indem Sie über den Input das Programm
add
eingeben und ausführen lassen.
Erweiterungen der Von-Neumann-Architektur
Heute Computer sind nicht mehr ganz so einfach aufgebaut, wie es die Von-Neumann-Architektur erahnen liesse. Die Architektur wurde in vieler Hinsicht auf Geschwindigkeit und Effizienz optimiert.
Aufgabe: Recherche Erweiterungen
Untenstehend findest du 6 Erweiterungen welche die Rechnerarchitektur optimieren können. Erkläre diese mit Hilfe einer Internetrecherche in wenigen Sätzen und ev. sogar mit Hilfe einer Grafik.
Damit nicht alle oben beginnen, soll der Würfe entscheiden, welchen Begriff du recherchierst!
Recherchiere mindestens 3 Begriffe und halte deine Erklärungen schriftlich fest!
1. Pipelining
Die Pipeline (auch Befehls-Pipeline oder Prozessor-Pipeline) bezeichnet bei Mikroprozessoren eine Art «Fließband», mit dem die Abarbeitung der Maschinenbefehle in Teilaufgaben zerlegt wird, die für mehrere Befehle parallel durchgeführt werden.
– Wikipedia
2. Cache
Cache ([kæʃ], auch [kaʃ]) bezeichnet in der Informationstechnik einen schnellen Pufferspeicher, der (wiederholte) Zugriffe auf vergleichsweise langsame Datenspeicher oder aufwendige Neuberechnungen zu vermeiden hilft.
– Wikipedia
3. Harvard-Architektur
Die Harvard-Architektur bezeichnet in der Informatik ein Schaltungskonzept, bei dem der Befehlsspeicher logisch und physisch vom Datenspeicher getrennt ist.
Der Vorteil dieser Architektur besteht darin, dass Befehle und Daten gleichzeitig geladen bzw. geschrieben werden können. Bei einer klassischen Von-Neumann-Architektur sind hierzu mindestens zwei aufeinander folgende Buszyklen notwendig.
– Wikipedia
4. Mehrkernprozessoren und Parallelprogrammierung
Der Begriff Mehrkernprozessor (abgeleitet vom englischen Begriff auch Multicore-Prozessor oder Multikernprozessor) bezeichnet einen Mikroprozessor mit mehr als einem vollständigen Prozessorkern in einem einzigen Chip.
Mehrkernprozessoren wurden entwickelt, weil eine Erhöhung der Rechenleistung durch höhere Taktfrequenzen große technische Probleme verursachte.
Die tatsächliche Leistungssteigerung hängt vor allem davon ab, wie gut die Software parallelisiert ist.
Parallele Programmierung ist ein Programmierparadigma. Es umfasst zum einen Methoden, ein Computerprogramm in einzelne Teilstücke aufzuteilen, die nebenläufig ausgeführt werden können, zum anderen Methoden, nebenläufige Programmabschnitte zu synchronisieren. Dies steht im Gegensatz zur klassischen, sequentiellen (oder seriellen) Programmierung.
– Wikipedia
5. SIMD/MIMD
SIMD-Computer, auch bekannt als Array-Prozessoren oder Vektorprozessoren, dienen der schnellen Ausführung gleichartiger Rechenoperationen auf mehrere gleichzeitig eintreffende oder zur Verfügung stehende Eingangsdatenströme.
Viele moderne Prozessorarchitekturen (wie PowerPC und x86) beinhalten inzwischen SIMD-Erweiterungen, das heißt spezielle zusätzliche Befehlssätze, die mit einem Befehlsaufruf gleichzeitig mehrere gleichartige Datensätze verarbeiten.
– Wikipedia
MIMD-Computer führen gleichzeitig verschiedene Operationen auf verschieden gearteten Eingangsdatenströmen durch, wobei die Verteilung der Aufgaben an die zur Verfügung stehenden Ressourcen, meistens durch einen oder mehrere Prozessoren des Prozessorverbandes, selbst zur Laufzeit durchgeführt wird. Jeder Prozessor hat Zugriff auf die Daten anderer Prozessoren.
– Wikipedia
6. RISC/CISC
Reduced Instruction Set Computer (RISC, englisch für Rechner mit reduziertem Befehlssatz) ist eine Designphilosophie für Computerprozessoren.
Die RISC entgegengesetzte Designphilosophie wird als Complex Instruction Set Computer (CISC) bezeichnet. In der heutigen Zeit hat die Unterscheidung in RISC und CISC weitgehend an Bedeutung verloren. Ehemalige RISC-Prozessorfamilien haben mittlerweile auch komplexere Befehle aufgenommen, CISC-Prozessoren haben seit Mitte der 1990er Jahre RISC-ähnliche Designkomponenten erhalten und sind ebenfalls superskalar.
– Wikipedia
Wilkensa via Virtuelle Fachhochschule (CC-BY) ↩︎