Skip to content

Von-Neumann

Rechnerarchitektur

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.

Komponenten eines Von-Neumann-Rechners[1]

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

Schematischer Aufbau eines Von-Neumann-Rechners mit dem zugehörigen Bussystem[2]
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.
Screenshot LMC

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.

		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?
Befehle des LMC
CodeNameDescription
0HLTStop (Little Man has a rest).
1ADDAdd the contents of the memory address to the Accumulator
2SUBSubtract the contents of the memory address from the Accumulator
3STA or STOStore the value in the Accumulator in the memory address given.
4This code is unused and gives an error.
5LDALoad the Accumulator with the contents of the memory address given
6BRABranch - use the address given as the address of the next instruction
7BRZBranch to the address given if the Accumulator is zero
8BRPBranch to the address given if the Accumulator is zero or positive
9INP or OUTInput or Output. Take from Input if address is 1, copy to Output if address is 2.
9OTCOutput accumulator as a character if address is 22. (Non- standard instruction)
DATUsed to indicate a location that contains data.

Aufgabe: Beispielprogramme

Untersuchen Sie die eingebauten Beispielprogramme add, max, overwrite, ascii table

  1. Lese die Erläuterung in der LMC-Help: http://www.peterhigginson.co.uk/LMC/help.html
  2. 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

  1. 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.
  2. 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


  1. Wilkensa via Virtuelle Fachhochschule (CC-BY) ↩︎

  2. Medvedev via Wikimedia (CC-BY-SA 3.0) ↩︎

Gymnasium Kirchenfeld, fts & lem