Die von Neumann Rechnerarchitektur

Vorgestellt wird die von Neumann Rechnerarchitektur und die wichtigsten Kenngrößen, die die Komponenten eines Computers charakterisieren.

Einordnung des Artikels

Einführung

Mit den bisher besprochenen Konzepten (Algorithmus, höhere Programmiersprache, Maschinensprache, logische Operationen) ist es nicht mehr schwer die Architektur eines Computers zu verstehen wie sie von Neumann entwickelt hat. Der Algorithmus wird in einer höheren Programmiersprache geschrieben, dieser Quelltext ist fur den Computer später irrelevant, er benötigt den vom Compiler erzeugten Maschinencode, der im Hauptspeicher liegt. Durch die Eingabe des Benutzers wird dessen Abarbeitung angestoßen: sie erfolgt im Prozessor (CPU = Central Processing Unit).

Damit haben wir die wichtigsten Komponenten eines Computers kennengelernt (siehe Abbildung 1):

  1. Externe Geräte für Ein– und Ausgabe: zum Beispiel Tastatur, Bildschirm.
  2. Hauptspeicher: enthält das aktuell ausgeführte Programm und dazu benötigte Daten.
  3. Prozessor: zur eigentlichen Befehlsverarbeitung.
  4. Externes Bussystem: verbindet alle Komponenten zum Datenaustausch

Hauptspeicher und Prozessor werden zusammen als Zentraleinheit bezeichnet.

In diesem Kapitel wird eine Übersicht über die Rechnerarchitektur gegeben; in den folgenden Kapiteln werden die einzelnen Komponenten detaillierter vorgestellt.

Interaktion mit dem Computer

Wie der Nutzer auf den Computer zugreift und die Abarbeitung eines Programmes anstößt und anschließend Ausgaben empfängt, zeigt Abbildung 1.

Abbildung 1: Durch eine Eingabe des Nutzers wird die Zentraleinheit veranlasst, ein Programm auszuführen; es kann dazu auf externe Speicher zugreifen. Nachdem das Programm beendet ist, erscheint die Ausgabe auf einem externen Gerät.Abbildung 1: Durch eine Eingabe des Nutzers wird die Zentraleinheit veranlasst, ein Programm auszuführen; es kann dazu auf externe Speicher zugreifen. Nachdem das Programm beendet ist, erscheint die Ausgabe auf einem externen Gerät.

Die Abbildung mag aus heutiger Sicht etwas befremdlich wirken, sie stammt aus der Anfangszeit des Computers. Befremdlich aus zwei Gründen:

  1. Heutige Rechner sind Multi-Tasking-fähig, das heißt sie können mehrere Programme gleichzeitig abarbeiten. Benötigt ein Programm längere Zeit, muss der Nutzer nicht warten, bis dessen Abarbeitung beendet ist; er kann in der Zwischenzeit anderen Programmen Eingaben machen. Ein Rechner im Single-Tasking-Betrieb muss erst das laufende Programm vollständig abarbeiten, bevor er neue Eingaben entgegennehmen kann. Das Bild beschreibt daher die Interaktion eines Nutzers mit einem Programm.
  2. Der Zugriff auf den Speicher ist ausdrücklich gezeigt — heute ist er so selbstverständlich, dass man nicht auf die Idee kommen würde ihn einzuzeichnen. Die ersten Computer hatten keine Festplatte: alle Daten, die nicht im Hauptspeicher waren, mussten umständlich über Disketten oder andere Speichermedien geladen werden. Insofern gibt das Bild — auch aus heutiger Sicht- sehr gut wieder, dass die notwendigen Komponenten eines Computers nur Prozessor und Hauptspeicher sind; Prozessor und Hauptspeicher werden daher zur Zentraleinheit zusammengefasst.

Mit dem letzten Punkt sind die wichtigsten Komponenten des Computers nochmal ausdrücklich angesprochen worden; im folgenden Abschnitt soll jetzt endlich gezeigt werden, wie diese Komponenten zusammenarbeiten und welche besondere Stellung die Zentraleinheit besitzt.

Die Architektur eines Computers nach von Neumann

Die folgende Abbildung zeigt die bereits mehrfach genannten Komponenten eines von Neumann Computers.

Abbildung 2: Komponenten des von Neumann Computers.Abbildung 2: Komponenten des von Neumann Computers.

Zu den externen Geräten zählen Ein– und Ausgabegeräte (Tastatur, Maus, Bildschirm, Drucker und so weiter) und die Festplatte. (Auch wenn die Festplatte intern im Computer verbaut ist, zählt sie logisch gesehen — als reines Speichermedium, das nicht rechnen kann, — zu den externen Geräten.)

Im Hauptspeicher müssen die abzuarbeitenden Programme und die von ihnen verwendeten Daten liegen. Bei Berechnungen muss die Möglichkeit bestehen, direkt auf sie zuzugreifen oder sie dort abzulegen.

Das eigentliche Herzstück des Computers ist die CPU (= Central Processing Unit) auch genannt Prozessor. In der CPU befinden sich Steuerwerk, ALU und Register. Letztere sind ebenfalls Speicher, in denen Zwischenergebnisse bei der Programmabarbeitung abgelegt werden. Die Komponenten in der CPU sind durch den internen Bus verbunden; der Name Bus soll wirklich darauf hindeuten, dass hier etwas transportiert wird, nämlich die Daten, die zwischen den Komponenten der CPU ausgetauscht werden.

Der externe Bus verbindet die Komponenten außerhalb der CPU.

Abbildung 3: Detailliertere Darstellung der Komponenten des von Neumann Computers.Abbildung 3: Detailliertere Darstellung der Komponenten des von Neumann Computers.

Die Befehlsabarbeitung beim von Neumann Computer

Wie diese Komponenten zusammenwirken, soll an einem einfachen Beispiel erläutert werden.

Beispiel: Berechnung mit einem Taschenrechner (siehe Abbildung 4)

  1. Das Programm Taschenrechner wird gestartet:
    • Der Nutzer klickt dazu etwa das Symbol für den Taschenrechner (Verknüpfung). Hinter dem Symbol verbirgt sich eine .exe-Datei, die auf der Festplatte gesucht wird.
    • Der Maschinencode, etwa tr.exe, wird von der Festplatte in den Hauptspeicher geladen (externer Bus).
    • Zusätzlich werden Speicherzellen im Hauptspeicher für die Ein– und Ausgabedaten reserviert (und vermutlich mit Inhalt 0 vorbelegt).
  2. Nutzereingaben:
    • Durch Eingaben mit Maus (oder Touchpad) und Tastatur gibt der Nutzer die Eingabewerte ein (hier im Beispiel die Zahlen 17 und 3, die in die Eingabefelder des Taschenrechners geschrieben werden).
    • Diese Eingaben werden in die Speicherzellen des Hauptspeichers übertragen (externer Bus).
  3. Auslösen der Befehlsverarbeitung:
    • Durch eine weitere Eingabe (Button-Klick) kann der Nutzer zum Beispiel den Taschenrechner auffordern die beiden Zahlen 17 und 3 zu multiplizieren.
    • Im Maschinencode des Taschenrechners wird das Unterprogramm gesucht, das für die Multiplikation zuständig ist.
  4. Eigentliche Befehlsverarbeitung:
    • Das Unterprogramm für die Multiplikation wird zur CPU geschickt (externer Bus).
    • Das Steuerwerk nimmt die Befehle entgegen und decodiert sie. Der Maschinencode enthält genau gesagt nicht die Befehle, sondern eine Codierung der Befehle.
    • Decodieren heißt, dass das Steuerwerk entscheidet, wie der Befehl ausgeführt wird. Zum Beispiel müssen die Eingabewerte 17 und 3 aus dem Hauptspeicher geladen werden. Weiter müssen Schaltungen in der ALU angesprochen wird (die Multiplikation kann womöglich nicht von einer Schaltung erledigt werden, sondern sie wird in mehrere Additionen zerlegt). Dazu kann das Steuerwerk auf die Speicher im Register zugreifen, etwa um Zwischenergebnisse abzulegen.
    • Liegt das Endergebnis der Berechnung vor, hier 51, wird es in den Hauptspeicher in die dafür vorgesehene Speicherzelle geschrieben.
  5. Ausgabe des Ergebnisses:
    • Vom Hauptspeicher wird das Ergebnis an das entsprechende externe Gerät weitergegeben (hier das Textfeld im Taschenrechner-Programm).
    • Damit ist die Befehlsverarbeitung für den Mausklick Multiplikation beendet und der nächste Befehl kann eingegeben werden.

Abbildung 4: Zur Erklärung der Befehlsabarbeitung beim von Neumann Computers am Beispiel eines Taschenrechners.Abbildung 4: Zur Erklärung der Befehlsabarbeitung beim von Neumann Computers am Beispiel eines Taschenrechners.

Versucht man die Befehlsabarbeitung allgemein zu beschreiben, erhält man etwa die folgende Kaskade, die immer abläuft, wenn ein Computer eine Berechnung durchführt; hier wird vorausgesetzt, dass das Programm bereits gestartet ist und sich damit zusammen mit den Daten des Programms schon im Hauptspeicher befindet:

  1. Der Nutzer macht Eingaben (über ein beliebiges Eingabegerät) und schickt einen Befehl ab, der eine Berechnung auslöst.
  2. Die Eingaben werden in den Hauptspeicher übertragen (über den externen Bus).
  3. Im Hauptspeicher wird das zuständige Unterprogramm gesucht (als Maschinencode) und an die CPU geschickt (wieder über den externen Bus); die nötigen Daten aus dem Hauptspeicher werden später bei der Ausführung des Unterprogrammes von den entsprechenden Maschinensprachebefehlen angefordert.
  4. Das Steuerwerk in der CPU decodiert die einzelnen Maschinensprachebefehle, das heißt es werden die richtigen Schaltungen in der ALU und die Speicherzellen des Registers angesprochen (über den internen Bus).
  5. Liegt das Endergebnis vor, wird es in die vorgesehene Speicherzelle des Hauptspeichers geschrieben und im externen Gerät ausgegeben (externer Bus).

Kenngrößen für einen Computer

Wie die einzelnen Bestandteile des Computers im Detail aufgebaut sind, soll erst später untersucht werden. Zunächst sollen die Kenngrößen benannt werden, mit denen man diese Komponenten charakterisieren kann; und es sollen die entsprechenden Zahlen — zumindest in ihrer Größenordnung — für einen heutigen Computer angegeben werden.

Exkurs: Dezimale Vorsätze in Physik und Informatik

In der Physik sind dezimale Vorsätze von Einheiten natürlich als Potenzen von 10 definiert; am Wichtigsten sind dabei die Abstufungen in Abständen von 1000. So gibt man für eine Frequenz, deren SI-Einheit Hz (Hertz) ist, etwa an:

1 kHz = 1 000 Hz = 103 Hz

1 MHz = 106 Hz

1 GHz = 109 Hz

1 THz = 1012 Hz

1 PHz = 1015 Hz

Die Abkürzungen stehen für kilo-Hertz, Mega-Hertz, Giga-Hertz , Tera-Hertz und Peta-Hertz.

Da für Adressen von Speicherplätzen Dualzahlen eingesetzt werden und 1000 keine Potenz von 2 ist, werden die dezimalen Vorsätze zur Angabe von Speichergrößen anders eingesetzt — aber die oben genannten Namen beibehalten, was leicht zu Verwirrung führen kann. Es wurde immer wieder vorgeschlagen, die dezimalen Vorsätze, die auf den Potenzen von 2 beruhen, anders zu benennen, diese Vorschläge haben sich aber nicht durchgesetzt.

Wie werden Speichergrößen angegeben? Man kann dies leicht an Abbildung 3 verdeutlichen: Im Register sind Speicherzellen zu sehen, die mit 4 Bit adressiert werden können. Und da 24 = 16, ist es sinnvoll 16 Speicherzellen anzubieten. (Bei weniger Speicherzellen gäbe es 4 Bit-Adressen, die keiner Speicherzelle zugeordnet sind; bei mehr Speicherzellen wären längere Adressen nötig.) FALSCH ist in Abbildung 3, dass dort in jeder Speicherzelle 4 Bit abgelegt sind. Üblicherweise bekommt jedes Byte eine eigene Adresse — so wie es für den Hauptspeicher dargestellt ist.

Im Hauptspeicher in Abbildung 3 werden 8 Bit für eine Adresse angegeben; jetzt würde man den Speicher mit 28= 256 Speicherzellen aufbauen.

Und da 1000 keine Potenz von 2 ist, wird niemand auf die Idee kommen, einen Speicher mit 1000 Zellen zu bauen. Dagegen ist 1024 eine Potenz von 2, nämlich 210 = 1024.

Folglich definiert man:

8 Bit = 1 B (B ist die Abkürzung für Byte)

1 kB = 1024 B

1 MB = 1024 kB = 1024 * 1024 B = 210 * 210 B = 220 B = 1 048 576 B

1 GB = 1024 MB = 230 B = 1,074 * 109 B

1 TB = 1024 GB = 240 B = 1,100 * 1012 B

1 PB = 1024 TB = 250 B = 1,126 * 1015 B

Aufgaben:

  1. Wieviele Byte kann ein Speicher besitzen, wenn die Adressen 4, 8, 16, 32 beziehungsweise 64 Bit lang sind (jedes Byte wird adressiert)? Geben Sie das Ergebnis mit einem geeigneten dezimalen Vorsatz an.
  2. Wie lang müssen die Adressen für eine Speicher mit 8 GB beziehungsweise 64 GB sein?

Lösungen:

1. Speichergröße in Abhängigkeit von der Adresslänge:

2. Adresslänge für 8 GB:

8 GB = 8 * 230 B = 23 * 230 B = 233 B

Man benötigt also 33 Bit für die Adressen.

Adresslänge für 64 GB:

64 GB = 64 * 230 B = 26 * 230 B = 236 B

Man benötigt also 36 Bit für die Adressen.

Kenngrößen für einen heutigen Computer

Die folgenden Kenngrößen gelten für aktuelle handelsübliche PCs und Notebooks.

1. Festplatte:

Das wichtigste externe Gerät ist die Festplatte. Es erscheint widersinnig, sie als externes Gerät zu bezeichnen, da sie fest im Computer verbaut ist. Man muss sich aber vergegenwärtigen, dass die ersten Computer keine Festplatte hatten — stattdessen war man auf andere Speichermedien angewiesen (wie etwa Disketten mit 100 oder 400 kB Speicher). Und logisch gesehen ist eine Festplatte ein Speichermedium.

Die Speicherkapazität (fest verbauter Festplatten in PCs und Notebooks) liegt heute in der Größenordnung 256 GB bis 8 TB — und wird sicher in den nächsten Jahren weiter steigen. Eine weitere wichtige Größe ist die Lese- und Schreibgeschwindigkeit (die auch als Datenrate bezeichnet wird); sie liegt heute bei etwa 600 MB/s. Die Größe der Festplatte hängt von ihrem Einsatzort ab und beträgt meist 2,5 Zoll für Notebooks und 3,5 Zoll für PCs. Soll ein Computer als Server betrieben werden, ist es wichtig zu wissen, ob die Festplatte auf 24 Stunden-Betrieb ausgelegt ist — PC-Festplatten sollte man dazu nicht missbrauchen.

2. Hauptspeicher:

Seine Speicherkapazität beträgt heute meist 4 bis 16 GB. Für aktuelle Betriebssysteme ist es auch nicht empfehlenswert einen kleineren Hauptspeicher zu verwenden. Reicht der Hauptspeicher nicht aus, werden Daten und Programme auf die Festplatte ausgelagert. Da dort die Zugriffszeiten sehr viel länger sind, wird die Geschwindigkeit der Programmausführung deutlich verringert.

3. Prozessor:

Die Abarbeitung der Befehle im Prozessor ist getaktet, das heißt für jede Aufgabe steht ein gewisses Zeitintervall zur Verfügung, das vom Taktgeber vorgeschrieben wird. In einem Takt kann etwa ein Register gelesen werden oder eine logische Schaltung angesprochen werden oder ein Ergebnis in das Register geschrieben werden und so weiter.

Bei heutigen Rechnern liegt die Taktfrequenz etwa bei 2 bis 4 GHz. Und diese Zahl ist schon nahe an der physikalischen Grenze, die dadurch vorgegeben ist, wie schnell die verwendeten Transistoren ein- und ausgeschaltet werden können. Würde man noch schneller takten, könnte man nicht mehr unterscheiden, ob ein Signal ausgeschaltet und wieder eingeschaltet wurde oder ob es die ganze Zeit eingeschaltet war.

4. Bus:

In den Abbildungen wurde der Bus pauschal als ein einziger Bus dargestellt; dies ist nicht richtig, sondern man unterscheidet:

Zudem können die Abbildungen so missverstanden werden, dass der Bus beliebige Pakete (von Daten, Adressen, Steuersignalen) transportieren kann. Auch das ist falsch: Wie die 4 eingezeichneten Leitungen in Abbildung 3 und 4 andeuten sollen, besteht der Bus aus einem Bündel von Leitungen (in Ihrem Computer als Plastikband mit parallelen Leitungen zu erkennen) und auch der Transport ist getaktet. Je nach Anzahl der Leitungen kann der Bus pro Takt eine gewisse Anzahl von Bits übertragen. Diese Anzahl wird als Wortbreite bezeichnet.

Genauer sollte man drei Wortbreiten unterscheiden, um einen Computer zu charakterisieren — sie müssen nicht identisch sein:

Die Taktfrequenz des Bussystems ist etwas kleiner als die des Prozessors, da die Ausführung eines Maschinensprachebefehles mehrere Takte benötigt und daher nicht nach jedem Takt des Prozessors neue Daten geliefert werden müssen.

Aufgaben:

1. Suchen Sie sich für einen beliebigen Hersteller von Notebooks je ein Gerät im Preisbereich von 300 bis 400 EUR beziehungsweise von 1000 bis 1500 EUR heraus. Wie groß sind die hier besprochenen Kenngrößen?

Welche weitere Kenngrößen werden in der Beschreibung der Geräte angegeben. Versuchen Sie ihre Bedeutung zu erklären und mit den hier gegebenen Erklärungen in Verbindung zu bringen.

Wodurch wird der Preisunterschied gerechtfertigt?

2. Der Heimcomputer Commodore 64 war bei seinem Erscheinen 1982 eine wahre Sensation — zuvor waren vergleichbare Computer etwa dreimal so teuer und nur als Arbeitsplatzrechner interessant.

Versuchen Sie die Kenngrößen des C 64 herauszufinden.

Multi-Tasking beim von Neumann Computer

Die Beschreibung der Befehlsabarbeitung wirkt als könnte ein Computer (mit von Neumann-Architektur) immer nur ein Programm abarbeiten, denn die Maschinensprachebefehle müssen nacheinander an die CPU geschickt werden. Sollen mehrere Programme von der CPU gleichzeitig bedient werden, geraten deren Befehle und Daten durcheinander.

Das letzte Argument ist natürlich richtig, dennoch sind von Neumann-Rechner Multi-Tasking-fähig: Liegen im Hauptspeicher mehrere Programme, die gleichzeitig ausgeführt werden sollen, werden vom scheduler (einem Dienstprogramm des Betriebssystems) Prioritäten für deren Abarbeitung vergeben und dann Zeitintervalle berechnet, wie lange ein Programm maximal auf die CPU zugreifen darf. (Maximal, weil die Abarbeitung vorzeitig beendet sein könnte.) Diese Zeitintervalle werden auch als Zeitscheiben bezeichnet. Sie liegen in der Größenordnung 1 ms (Milli-Sekunde) bis 10 ms und sind daher für den Menschen kaum wahrnehmbar, wodurch eine parallele Programm-Ausführung vorgetäuscht wird. Für den Computer ist 1 ms eine lange Zeitdauer, da man sie zur Taktfrequenz in Beziehung setzen muss: Der Prozessor kann in 1 ms etwa 1 Millionen Maschinensprachebefehle abarbeiten.

Manche Betriebssysteme verzichten auf die Berechnung der Prioritäten und arbeiten die Programme gemäß round robin (Reihum-Methode) ab.

Der Harvard-Rechner

Beim von Neumann-Rechner sind im Hauptspeicher sowohl Daten als auch Programme gespeichert. Dies kann zu Sicherheitsproblemen führen, da Computer-Viren leichter eingeschleußt werden können. Beim sogenannten Harvard-Rechner werden Daten und Programme in zwei unterschiedlichen Speichern abgelegt (Daten-Speicher und Programm-Speicher).

Der Nachteil der Harvard-Architektur ist, dass man im Voraus nicht weiß, wie der Computer später eingesetzt werden soll. Und daher ist es schwer, die Größe der beiden Speicher zu dimensionieren. Für eingebettete Systeme (embedded systems) trifft dies nicht zu; dort wird die Harvard-Architektur oft eingesetzt, bei PCs dominiert immer noch die von Neumann-Architektur (mit den noch zu besprechenden Verbesserungen).

Der Vorteil der Harvard-Architektur besteht vor allem darin, dass für Daten und Programme ein eigenes Bussystem bereitsteht. Der Daten-Speicher muss nur mit dem Rechenwerk kommunizieren, der Programm-Speicher nur mit dem Steuerwerk. Daher ist der Bus insgesamt sehr viel schneller als beim von Neumann-Rechner. Dort kann das Bussystem leicht zum Flaschenhals des Rechners werden, das heißt dass es nicht schnell genug die Daten und Programmteile für den Prozessor nachliefern kann.

Der von Neumann-Rechner und aktuelle Computer-Architektur

Die von Neumann-Architektur wurde etwa 1946 entwickelt. Bei der rasanten Entwicklung der Komponenten eines Rechners ist es kaum zu glauben, dass diese Architektur heute noch aktuell sein soll. Aber bis auf wenige Unterschiede wird die von Neumann-Architektur auch bei heutigen Computern realisiert.

Die Unterschiede bestehen vor allem in folgender Hinsicht:

1. Mehr-Kern-Prozessor:

Der von Neumann-Rechner besitzt einen Prozessor; die wichtigste Aufgabe des Rechners ist ja einen Algorithmus abzuarbeiten und dies sollte zunächst nacheinander geschehen. Heutige Rechner, sogar im unteren Preisbereich, werden fast ausschließlich als Mehr-Kern-Prozessoren angeboten. Das heißt es gibt mehrere Prozessoren, die es erleichtern, dass viele Programme gleichzeitig abgearbeitet werden können (Multi-Tasking).

2. Cache-Speicher:

Wie beim Harvard-Rechner besprochen, kann beim von Neumann-Rechner das Bussystem leicht zum Flaschenhals des Rechners werden. Dies kann man vermeiden, indem man zwischen dem Hauptspeicher und dem Prozessor einen (oder sogar mehrere) Cache-Speicher anbietet. Im Cache-Speicher befinden sich dann Daten und Programmteile, auf die der Prozessor oft zugreifen muss. Er wird zwar nur als klein (im Vergleich zum Hauptspeicher) realisiert, aber auf ihn kann sehr schnell zugegriffen werden. Mit einem geschickten Speicher-Management (was wird im Speicher abgelegt?) kann die Befehlsabarbeitung deutlich schneller ablaufen.