Rechnerarchitektur

Rechnerarchitektur

Lernziel und Überblick

  • Kennenlernen des prinzipiellen Aufbau eines (typischen) Computers: die von Neumann Architektur.

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.

Grundbegriffe

Hardware, Software Firmware
  • 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, Programm, Speicher
  • 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.

(alte) Definition eines Rechners:

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 Architektur

Von Neumann formulierte (1946) die folgenden sieben Prinzipien (nach A. Bode in [Rechenberg-Pomberger]):

  1. Der Rechner besteht aus 4 Werken:

    • Hauptspeicher für Programme und Daten.
    • Leitwerk, welches das Programm interpretiert.
    • Rechenwerk, welches arithmetische Operationen ausführt.
    • Ein- und Ausgabewerk zur Kommunikation mit der Umwelt.
  2. Die Struktur des Computers ist unabhängig von dem zu lösenden Problem (Universalitäts-Prinzip). Dies wird durch eine Programmsteuerung realisiert.

  3. Programme und Daten stehen in demselben Speicher, der während des Programmablaufs verändert werden kann.

  4. Der Hauptspeicher ist eingeteilt in Zellen gleicher Größe, welche durch fortlaufende Nummern (Adressen) bezeichnet werden.

  5. Das Programm besteht aus einer Folge von Befehlen, welche nacheinander ausgeführt werden (implizite Sequentialität)

  6. Durch explizite Sprungbefehle kann von der sequentiellen Ausführung der Maschinenbefehle abgewichen werden. Die Sprünge sind dabei von gespeicherten Werten abhängig.

  7. Die Maschine benutzt Binärcodes. (Zahlen werden dual dargestellt.)

In folgender Abbildung ist die von Neumann Maschine in ihrer Grundstruktur dargestellt.

image.png

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.

Von Neumann Operationsprinzip

Rechner, deren physische Komponenten nach der von Neumann Struktur zusammengesetzt sind, funktionieren nach dem von Neumann Prinzip.

Datenstruktur: von Neumann Variable

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.

Zwei Phasen Schema

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:

  • Interpretationsphase (fetch-phase): Maschinenbefehl (aus dem Speicher) holen.
  • Ausführungsphase (execution-phase): Maschinenbefehl (auf dem Prozessor) ausführen.

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:

  • Befehl
  • Datum
  • Adresse

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:

  1. Befehlszustand für Befehle
  2. Datumszustand für Daten und Adressen

Je nach Zustand werden unterschiedliche Arbeitsschritte im Rechner ausgeführt. Dabei gibt es spezielle Register auf dem Steuerwerk.

Befehlszustand

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:

  1. In der Holphase wird der Befehl aus dem Speicher geholt und in ein Register, das sogenannte Befehlsregister, geladen. Danach wird der Befehlszähler um eins erhöht oder bei einem expliziten Sprungbefehl auf die im Befehl stehende Sprungzieladresse gesetzt.
  2. Die Startphase bewirkt den Start der Befehlsausführung. Anschließend geht das Steuerwerk in den Datumszustand über.

Datumszustand

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:

  • In der Holphase wird die reale Adresse der Daten (Adressen) berechnet. Diese werden dann vom Arbeitsspeicher in Datenregister oder Adressregister abgelegt.
  • In der Verarbeitungsphase wird das Datum verarbeitet bzw. die Adresse verändert. Bei der Verarbeitung eines Datums wird noch unterschieden, ob es sich um ein binär codiertes Zeichen oder um eine Dualzahl handelt (vgl. Informationsdarstellung). Die Verarbeitung der Dualzahlen wird weiter in Gleitpunkt- und Ganzzahlarithmetik unterteilt.
  • Ablagephase: Die geänderten Daten oder Adressen werden von den Datenregister bzw. Adressregister in den Arbeitsspeicher geschrieben.

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.

Befehlssatz

Die Befehle lassen sich grob in folgende vier Klassen einteilen:

  • Verarbeitungsbefehle
    • Arithmetische und logische Befehle
    • Schiebebefehle
    • Vergleichbefehle
  • Transportbefehle
    • Externer Datentransport (E/A System, Arbeitsspeicher)
    • Externer Datentransport (Register - Register)
  • Sprungbefehle: Diese dienen dazu in Abhängigkeit von Werten den linearen Kontrollfluss des Programs zu verlassen.
  • Systembefehle-Beipiel: Unterbrechungsbearbeitung, Speicherverwaltung

Adressen und Arbeitsspeicher

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:

image.png

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.

Unterbrechungssteuerung

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).

Übung

Lernkontrollfragen

Aufgabe

Ein Computer besitzt einen Adressbus mit einer Breite von 16 Bit. Wie groß ist der Adressraum des Computers?

Aufgabe

Wie erkennt der von Neumann Rechner den Maschinen-Datentyp einer Neumann Variablen?

Aufgabe

Woher weiß der Prozessor, welcher Maschinenbefehl als nächster ausgeführt werden soll?

Aufgabe

Sehen Sie sich das folgende Video zum Beispiel einer Addition an: Additionsprogramm und Ausführung und versuchen Sie es zu verstehen.

Hinweise:

  • Im Speicher (RAM - random access memory) steht zu Beginn nur das Programm. Durch das Programm werden auch Daten in den Speicher geschrieben.
  • Der Bus ist weiter unterteilt in Datenbus, Adressbus und Kontrollbus.
  • IR steht für das Instruktionsregister: Hier wird der laufende Befehl zwischengespeichert.
  • ALU ist die Arithmetisch-logische_Einheit, d.h. das Rechenwerk.
  • AC ist der Akkumulator). Ein wichtiges Register, in dem das Ergebnisse der Berechung (der ALU) abgelegt werden.
  • PC (program counter) ist der Befehlszähler.
  • Der Decoder und der Multiplexer sind Teil des Steuerwerkes (Details nicht so wichtig).

Fragen:

  • Was bedeuten die Befehle?
  • Was ist der Unterschied zwischen LOAD #2 und LOAD 2?
  • In welcher Speicherstelle steht an Ende das Resultat der Addition?

Recherche

Aufgabe (Recherche)

Was ist die Speicher-Hierachie?

Aufgabe (Recherche)

Was ist die Harvard-Rechenarchitektur. Welche Vor- und Nachteile hat sie im Vergleich zu der von-Neumann Architektur.

Literatur

  • Rechenberg, Pomberger (Herausgeber): Informatik-Handbuch, Hanser Verlag 2010