Skripte DHBW

Vorlesungsskripte aus dem DHBW-Studium

Multiprozessoren und die von-Neumann Architektur

aus der Vorlesung Rechnertechnik vom 13.02.2018


In diesem Sinne sind nachrichtengekoppelte Multiprozessorsysteme vom Typ No-Remote-Memory-Access (NORMA). Bezüglich der Übertragungszeit von Nachrichten unterscheidet man folgende Typen:

Das NUCA-Modell kommt bei nachrichtengekoppelten Multiprozessoren am häufigsten vor. Es wird hier eine Nachricht i.a. vom Sende- bis zum Ziel-Prozessor über mehrere Zwischen-Prozessoren geleitet (multiple hops).

Sind die Prozessoren gleichartig, so spricht man von homogenen Multiprozessorsystemen, ansonsten von inhomogenen Multiprozessoren.

Die von-Neumann Architektur

Die von Neumann Architektur ist eine Rechnerarchitektur mit minimalem Hardware-Aufwand; sie besteht aus folgenden Komponenten:

Funktion einer von-Neumann Architektur:

Der Datenprozessor hat die Aufgabe, Verarbeitungsdaten zu verarbeiten. Dazu besitzt er ein Rechenwerk und mindestens drei Register zur Aufnahme von Operanden. Register sind Speicher mit geringer Speicherkapazität, jedoch mit hoher Zugriffsgeschwindigkeit (kurze Zugriffszeiten).

Das Memory Buffer Register ist ein Puffer-Speicher, über den der Datenaustausch mit dem Speicher abgewickelt wird. Akkumulator und Multiplikationsregister dienen zur Aufnahme von Additions- und Multiplikationsoperanden (Verarbeitungsdaten) und der Ergebnisse nach der Verarbeitung. Im Steuerwerk des Befehlsprozessors werden die Maschinenbefehle dekodiert (entschlüsselt) und Steuersignale zur Ausführung der Befehle erzeugt. Dabei befindet sich der aktuell bearbeitete Maschinenbefehl im Befehlsregister (Instruction Register). Die Adresse, an welcher sich der nächste auszuführende Befehl im Speicher befindet, steht im Program Counter Register.

Ein typischer Befehlsablauf in einer von-Neumann Architektur sieht wie folgt aus:

  1. In der Fetch-Phase wird der Inhalt des Program Counters auf den Adressbus übertragen. Anschließend wird der Speicher mit dieser Adresse angesprochen und der Befehl über den Datenbus in das Memory Buffer Register geladen und von dort in das Befehlsregister. Handelt es sich um einen Befehl mit Operanden, dann folgen dem Befehl noch Arbeitsspeicheradressen und die Operanden werden, auf die gleiche Weise wie vorher der Befehl, aus dem Speicher geholt und dann in den Datenprozessor geladen. Handelt es sich bei dem auszuführenden Befehl nicht um einen Sprungbefehl, so wird der Program Counter einfach inkrementiert. Bei Sprungbefehlen kann der Program Counter mit beliebigen Speicheradressen belegt werden, wodurch dann auch Programmschleifen möglich werden.
  2. Nach der Fetch-Phase folgt die Execution-Phase mit der eigentlichen Befehlsausführung und ggf. Speicherung der Ergebnisse im Arbeitsspeicher.

Die Maschinenbefehle eines Programms werden also im Wechsel von Fetch- und Execution-Phasen ausgeführt, wobei diese Phasen bei realen CPUs deutlich komplizierter sind. So müssen häufig Adressberechnungen durchgeführt werden, oder es handelt sich um indirekte Adressen, die bei einem Befehl angegeben sind; d.h., dass der Inhalt einer Speicherzelle erst die Adresse der eigentlichen Operanden enthält.

Die Zeit für die Befehlsausführung ist bei den heutigen Prozessoren sehr gering im Vergleich zu Zugriffszeiten auf den Arbeitsspeicher. Daher spricht man bei der Kommunikation zwischen Prozessor und Arbeitsspeicher vom sogenannten “von-Neumann Flaschenhals”. Zur Verbesserung dieser Situation werden heutzutage eine Reihe von architektonischen Maßnahmen ergriffen, wie z.B. schneller Cache-Speicher für wiederholte Speicherzugriffe.

Wesentliche Eigenschaften des Operationsprinzips eines von-Neumann Rechners:

Übung

Als Beispiel für die Verarbeitung von Maschinenbefehlen betrachte man die Addition von einzugebenden Zahlen in einer Schleife, bis eine Null eingegeben wird und dann das Ergebnis der bis dahin addierten Zahlen ausgegeben wird.

Ein fiktiver Modellrechner soll u.a. über folgende mnemonischen Befehle verfügen:

Befehl Beschreibung
CLA (Clear Accu) Setzt den Akkumulatorinhalt auf 0 zurück.
INA (Input Accu) Liest einen Wert in den Akkumulator ein.
OUT (Output Accu) Gibt den Wert des Akkumulators aus.
ADD (addr) addiert den Inhalt der Speicherzelle, die durch die Adresse addr angesprochen wird, zum Inhalt des Akkumulators und legt das Ergebnis im Akkumulator ab.
STR (addr) (Store) speichert den Akkumulatorinhalt im Arbeitsspeicher an die Stelle addr
SKP (addr) springt unbedingt zur Adresse addr
SKZ (addr) springt zur Adresse addr, wenn Akkumulatorinhalt 0 ist, sonst wird der nächste Befehl ausgeführt.
HLT (halt) Programmende