Mit Computer sind dabei die heute üblichen Digitalrechner, nämlich Personalcomputer (PCs), oder Workstations gemeint. Aber auch in anderen Geräten und Maschinen, wie beispielsweise in Mobiltelefonen, Automobilen etc., befindet sich heute Computertechnologie.
Als Hardware werden alle physischen Komponenten der Rechner bezeichnet, also alles, was materiell an einem Computer vorhanden ist.
Unter Software versteht man Computer-Programme, die auf Rechnern ablaufen können. Insbesondere unterscheidet man hier zwischen Betriebssystemen und Anwendungssoftware.
Firmware nimmt eine Zwischenstellung zwischen Software und Hardware ein. Es ist die Software, die spezifisch zu einer Hardware gehört, dort bleibend gespeichert und zum Funktionieren der Hardware notwendig ist, wie beispielsweise Funktionen zur Steuerung eines Gerätes.
Befehl: Eine elementare Hardware-nahe Anweisung, wie ein Arbeitsschritt zu erfolgen hat.
Programm: Abfolge von Befehlen, die beschreibt, wie Daten zu bearbeiten sind.
Speicher: Bereich innerhalb eines Rechnersystems, der zur Aufnahme, Aufbewahrung und Abgabe von Befehlen und Daten dient.
Satz an Maschinenbefehlen des Rechners, d.h. den Befehlen, die der Rechner ausführen kann. Diese Befehle können in Computerprogrammen verwendet werden.
Von Neumann formulierte (1946) die folgenden sieben Prinzipien (nach A. Bode in [Rechenberg-Pomberger]):
Der Rechner besteht aus 4 Werken:
Die Struktur des Computers ist unabhängig von dem zu lösenden Problem (Universalitäts-Prinzip). Dies wird durch eine Programmsteuerung realisiert.
Programme und Daten stehen in demselben Speicher, der während des Programmablaufs verändert werden kann.
Der Hauptspeicher ist eingeteilt in Zellen gleicher Größe, welche durch fortlaufende Nummern (Adressen) bezeichnet werden.
Das Programm besteht aus einer Folge von Befehlen, welche nacheinander ausgeführt werden (implizite Sequentialität)
Durch explizite Sprungbefehle kann von der sequentiellen Ausführung der Maschinenbefehle abgewichen werden. Die Sprünge sind dabei von gespeicherten Werten abhängig.
Die Maschine benutzt Binärcodes. (Zahlen werden dual dargestellt.)
In folgender Abbildung ist die von Neumann Maschine in ihrer Grundstruktur dargestellt.
Der Systembus verbindet dabei die entsprechenden Einheiten, über die Daten, Signale und Befehle übertragen werden. Eine ausführliche Beschreibung von Rechner-Bussen folgt noch.
Im Prozessor, der zentralen Einheit, sind Rechenwerk und Leitwerk untergebracht.
Hier sind auch Register untergebracht. Diese dienen zur kurzfristigen, schnellen Speicherung eines Datums (oder mehrerer). In den Prozessorregistern können Daten (wie Adressen, Zahlen, Operationscode) kurzfristig gespeichert werden.
Das Ein- und Ausgabewerk dient zur Kommunikation mit der Umwelt. Hierüber werden die Eingangsdaten eingegeben und das Ergebnis der Berechnung erhalten und ggf. als Ausgangsdaten dargestellt.
Die Komponenten Speicher- und Rechen- und Leitwerk werden später behandelt.
Rechner, deren physische Komponenten nach der von Neumann Struktur zusammengesetzt sind, funktionieren nach dem von Neumann Prinzip.
Bei der von Neumann Maschine nehmen die Zellen des Arbeitsspeichers das Programm und auch die Daten auf. Daher gibt es beim von Neumann Operationsprinzip lediglich eine Struktur der Daten, die von Neumann Variable, mit den beiden Komponenten:
Identifikator; dieser ist eine Adresse, die eine Speicherzelle eindeutig identifiziert.
Wert, der dem Inhalt der Speicherzelle entspricht. Dieser Wert ist eine unstrukturierte Bitkette.
Die wesentliche Aufgabe eines Computers ist, gespeicherte Informationen, d.h. Daten, zu verarbeiten.
Diese Verarbeitung wird beim von Neumann Rechner vom Steuerwerk nach einem strengen sequentiellen zwei Phasen Schema (Fetch-Execute-Cycle) vorgenommen:
Die Maschinenbefehle setzen sich dabei zusammen aus dem Operationscode (Operationsteil) und keinem, einem oder zwei Operanden.
Man sagt hier: der Operationscode ist vom Datentyp Befehl und der (Direkt-)Operand vom Datentyp Datum.
Da aber nicht nur Direktoperanden erlaubt sind, sondern auch Adressangaben, d.h. Verweise auf Speicherzellen, gibt es auch den Datentyp Adresse. Eine Operation wird beim Datentyp Adresse auf den Inhalt der Speicherzelle(n) ausgeführt (vgl. das Beipiel Additionsoperation).
Eine von Neumann Maschine besitzt also drei verschiedene Maschinen-Datentypen, mit denen sie operiert:
Bei modernen Rechnern dauert die fetch-phase, also das Holen der Daten aus dem Speicher, erheblich länger als die Ausführung des Befehls. Dies wird als der von Neumann Flaschenhals bezeichnet.
Die Datenstruktur der von Neumann Variable besitzt den Datentyp nicht explizit, da es durch das feste Operationsprinzip der von Neumann Maschine klar wird, um welchen Typ es sich handelt. Der Wert der von Neumann Variable wird also unterschiedlich als Befehl, Datum oder Adresse interpretiert. Hierfür besitzt das Steuerwerk zwei Zustände:
Je nach Zustand werden unterschiedliche Arbeitsschritte im Rechner ausgeführt. Dabei gibt es spezielle Register auf dem Steuerwerk.
Das Programm, d.h. eine Abfolge von Befehlen, steht im Arbeitsspeicher, wobei diese in der Regel hintereinander ausgeführt werden (implizite Sequentialität). An welcher Speicherstelle des Programms sich der Rechner befindet, ist in einem Register, dem Befehlszähler, vermerkt.
Im Befehlszustand wird der Inhalt der von Neumann Variable als Befehl interpretiert und die folgenden beiden Arbeitsschritte ausgeführt:
Im Datumszustand werden die Werte der von Neumann Variable als Datum oder Adresse interpretiert. Die Unterscheidung zwischen diesen beiden Typen hängt von dem vorangegangenen Befehl ab. Der Datumszustand entspricht der Ausführung des Befehls. Dabei werden folgende Arbeitsschritte durchgeführt:
Nach Beendigung des Datumszustands wird wieder in den Befehlszustand gewechselt. Es erfolgt also ein ständiger Wechsel zwischen den beiden Zuständen: Befehlszustand, Datumszustand, Befehlszustand, Datumszustand, Befehlszustand, Datumszustand ...
Dabei wird immer mit dem Befehlszustand begonnen. Dies entspricht dem oben erwähnten Zwei Phasen Schema.
Die Befehle lassen sich grob in folgende vier Klassen einteilen:
Daten (eigentliche Daten und Programme) werden im Computer im Arbeitsspeicher aufbewahrt. Dieser besteht aus Speicherzellen, welche linear geordnet und nummeriert sind, wobei die Nummerierung mit Null beginnt.
Jede Speicherzellen kann eine Bitkette fester Länge aufnehmen. In der Regel hat eine Speicherzelle die Größe 1 Byte, also 8 Bit.
Die Speicherzellen können mit ihrer Nummer identifiziert und angesprochen werden. Die Nummer der Speicherzelle wird als ihre Adresse bezeichnet.
Kurzer Ausschnitt aus dem Arbeitsspeicher mit zufälligen Werten in den einzelnen Speicherzellen:
Typischerweise kann pro Adresse ein Byte (8 Bit) gespeichert werden.
Die Adressen werden im Computer (wie alle Zahlen) dual codiert und sie sind ganze positive Zahlen (plus die Null). Je nachdem wieviele Bits zur Adressierung zur Verfügung stehen, ergibt sich die Anzahl der möglichen ansprechbaren Speicherzellen:
Der Adressraum ist die Menge aller möglichen Adressen.
Beispiel: 32 Bit stehen zur Adressierung zur Verfügung, dies bedeutet, es sind $2^{32} = 4294967296$ Speicherzellen prinzipiell ansprechbar.
Der Adressraum ist nicht mit der Speicherkapazität zu verwechseln. Die Speicherkapazität gibt den wirklich vorhandenen Speicherplatz an, ist also ein Maß für den physikalisch vorhandenen Speicher.
Mit Hilfe spezieller Signale kann ein laufendes Programm (ein sogenannter Prozess) unterbrochen werden. Dies wird als Unterbrechung (interupt) bezeichnet. Ein Peripheriegerät kann so dem Prozessor anzeigen, dass es einen "Bedienungswunsch" hat, wie "bin bereit zum Empfang von Daten". Hierfür gibt es spezielle Eingänge des Prozessors am Steuerbus, die Interrupt-Eingänge. Bei Aufruf eines Interupts wird dem Prozessor auch angezeigt, welche Art der Unterbrechung vorhanden ist. So wird die gewünschte Interupt-Routine dann vom Prozessor ausgeführt.
Es sei auch noch erwähnt, dass nicht nur Peripheriegeräte Interupts auslösen können, sondern auch Softwareprogramme, z.B. durch Ausnahmesituationen (wie Division durch Null).
Ein Computer besitzt einen Adressbus mit einer Breite von 16 Bit. Wie groß ist der Adressraum des Computers?
Wie erkennt der von Neumann Rechner den Maschinen-Datentyp einer Neumann Variablen?
Woher weiß der Prozessor, welcher Maschinenbefehl als nächster ausgeführt werden soll?
Sehen Sie sich das folgende Video zum Beispiel einer Addition an: Additionsprogramm und Ausführung und versuchen Sie es zu verstehen.
Hinweise:
Fragen:
LOAD #2
und LOAD 2
? Was ist die Speicher-Hierachie?
Was ist die Harvard-Rechenarchitektur. Welche Vor- und Nachteile hat sie im Vergleich zu der von-Neumann Architektur.