Skripte DHBW

Vorlesungsskripte aus dem DHBW-Studium

Das Steuerwerk und verschiedene Rechnerarchitekturen

aus der Vorlesung Rechnertechnik vom 22.03.2018


Der von-Neumann-Additionsalgorithmus

Frage: Wieviele Durchläufe sind im Mittel erforderlich?
Wir haben gesehen:

  1. Durchlauf: n2\frac{n}{2} Bits mit 11 belegt im YY-Register
  2. Durchlauf: 12n2=n4\frac{1}{2} \cdot \frac{n}{2} = \frac{n}{4} Bits mit 11 belegt im YY-Register
  3. Durchlauf: 12n4=n8\frac{1}{2} \cdot \frac{n}{4} = \frac{n}{8} Bits mit 11 belegt im YY-Register

Also: nach dem kk-ten Durchlauf sind n2k+1\frac{n}{2^{k + 1}} Bits mit 11 belegt.

Im Mittel ist der von-Neumann-Additionsalgorithmus beendet, wenn n2k+1<1 \frac{n}{2^{k + 1}} < 1

oder
n1<2k+1log2(n)<k+1log2(n)k \frac{n}{1} < 2^{k + 1} \rightarrow \log_2 (n) < k + 1 \rightarrow \log_2 (n) \le k

ist.

Fazit: Das von-Neumann-Addierwerk benötigt im Mittel also nur log2(n)\log_2 (n) Durchschaltzeiten eines Halbaddierers, um eine Summe zu berechnen.

Der Takt muss nur ein wenig länger sein als die Durchschaltzeit eines Halbaddierers T>tvHAT > t_{v_{\text{HA}}}.

Gegenüber dem zuerst betrachteten Addierwerk mit nn Durchschaltzeiten eines Volladdierers pro Addition sind log2(n)\log_2 (n) Durchschaltzeiten eines Halbaddierers eine enorme (exponentielle) Beschleunigung; Außerdem werden nur nn Halbaddierer anstelle nn Volladdierer benötigt.

Anmerkung: Es gibt noch eine Vielzahl weiterer Additionsverfahren für Dualzahlen, die noch schneller sind als der von-Neumann-Algorithmus; diese benötigen aber viel mehr zusätzliche Hardware, z.B. zur schnelleren Berechnung des Übertrags, der sich dann nicht mehr durch eine Folge von Addierern fortpflanzen muss, sondern durch eine spezielle Hardware direkt berechnet wird (Carry Look Ahead).


Konstruktion des Steuerwerks

Das Steuerwerk des Befehlsprozessors hat die Aufgabe, die Ausführung der Maschinenbefehle zu steuern. Dabei müssen Steuersignale erzeugt werden, die zeitlich passend zum ausführenden Maschinenbefehl bestimmte Teile des Datenprozessors, des I/O-Prozessors und des Arbeitsspeichers beeinflussen. Dabei werden Maschinenbefehle dekodiert und in unterschiedlichen Zeitphasen ausgeführt.

Clock und Ringzähler

Um die Zeitphasen während der Ausführung eines Befehls zu erkennen, hat jeder Prozessor einen Taktgeber oder auch Clock. Der Taktgeber gibt mit dem Takt die kleinste Zeiteinheit (Zeitscheibe) an, in welcher sich Zustände im Rechner ändern können. Allerdings dauern die Ausführungsphasen in der Regel mehrere Takte.

Um innerhalb der Ausführungsphasen spezielle Zeitpunkte, z.B. zur Erzeugung eines Steuerbefehls, zu bestimmen, werden spezielle Schaltwerke eingesetzt, die so genannten Ringzähler.

Man nehme beispielsweise an, dass in einem Rechner bestimmte Befehle mit Zeitphasen von 4 Takten arbeiten. Dazu wird ein Ringzähler modulo 4 eingesetzt, der ermöglicht, den 0., 1., 2., und 3. Takt dieser Zeitphasen zu erkennen.

Dazu folgende Wahrheitstabelle:

Takt x2x_2 x1x_1 f2f_2 f1f_1
00 00 00 00 11
11 00 11 11 00
22 11 00 11 11
33 11 11 00 00

f1=x1x2x2x1f_1 = \overline{x_1} \wedge \overline{x_2} \lor x_2 \wedge \overline{x_1}
=x1(x2x2)\quad \, = \overline{x_1} \wedge (x_2 \lor \overline{x_2})
=x11\quad \, = \overline{x_1} \wedge 1
f1=x1f_1 = \overline{x_1}

f2=x1x2x1x2f_2 = x_1 \wedge \overline{x_2} \lor \overline{x_1} \wedge x_2

entsprechendes Schaltnetz:

Schaltnetz Ringzähler
Abbildung 1: Schaltnetz eines Ringzählers

modulo 5 Ringzähler:

Takt x3x_3 x2x_2 x1x_1 f3f_3 f2f_2 f1f_1
00 00 00 00 00 00 11
11 00 00 11 00 11 00
22 00 11 00 00 11 11
33 00 11 11 11 00 00
44 11 00 00 00 00 00

f1=x1x2x3x1x2x3f_1 = \overline{x_1} \wedge \overline{x_2} \wedge \overline{x_3} \lor \overline{x_1} \wedge x_2 \wedge \overline{x_3}
=(x1x3)(x2x2)\quad \, = (\overline{x_1} \wedge \overline{x_3}) \wedge (\overline{x_2} \lor x_2)
=x1x3\quad \, = \overline{x_1} \wedge \overline{x_3}

Soll nun ein Steuersignal zu einem ganz bestimmten Takt aktiv werden, so kann dies mittels des Ringzählers und einer zusätzlichen Dekodierlogik realisiert werden.

Zum Beispiel kann mit nachfolgender Schaltung das Steuersignal nur in Takt 22 aktiv werden:

Schaltung Dekodierung Steuersignal
Abbildung 2: Dekodierlogik des Steuersignals

Dekodierung der Maschinenbefehle und Erzeugung

Jeder Maschinenbefehl ist in einer einzigartigen Bitkombination kodiert. Somit kann eine Dekodierlogik konstruiert werden, mit der alle Maschinenbefehle eindeutig unterschieden werden können. Zum Beispiel kann als Ausgang der Dekodierlogik für jeden Befehl eine eigene Steuerleitung existieren, deren Pegel 11 ist, wenn der Befehl erkannt wurde.

Beispiel: Betrachte Dekodiereinrichtung für 4 Maschinenbefehle

Schaltnetz Dekodiereinheit
Abbildung 3: Schaltnetz einer Dekodiereinheit

Mit Hilfe des Ringzählers können nun die notwendigen Steuersignale zur Ausführung eines bestimmten Befehls zum richtigen Zeitpunkt ausgeführt werden, indem das Signal aus dem Befehlsdekodierer zur richtigen Zeit als Steuersignal an die Hardware weitergeleitet wird.

Dies könnte zum Beispiel so realisiert sein, dass zu jedem dekodierten Maschinenbefehl eine separate Hardware zur Erzeugung der Steuersignale verwendet wird. Bei realen Prozessoren gibt es natürlich gleichzeitig ausgeführte Steuersignale bei unterschiedlichen Maschinenbefehlen.

Beispiel: Erzeugung von Steuersignalen für 4 Maschinenbefehle

Schema zur Erzeugung von 4 Maschinenbefehlen
Abbildung 4: Schema zur Erzeugung von 4 Maschinenbefehlen

Harvard-Architektur

Zur Erinnerung: Rechnerarchitekturen nach dem von-Neumann-Konzept sind gekennzeichnet durch einen gemeinsamen Hauptspeicher für Programmdaten und Verarbeitungsdaten. Die Architektur besteht vereinfacht aus drei Einheiten. Der genannte Hauptspeicher fasst Datenspeicher (Data Memory (DM)) und Programmspeicher (Program Memory (PM)).

Wesentlich ist, dass zu einer Zeit nur ein Zugriff auf den Hauptspeicher erfolgen kann; somit kann zu einer Zeit entweder ein Befehl (Programmdaten) oder ein Operand (Verarbeitungsdaten) aus dem Hauptspeicher geladen werden. Der Befehlsprozessor (Instruction Processor (IP)) ist dafür zuständig, die Maschinenbefehle einschließlich Operanden aus dem Hauptspeicher zu laden und zu dekodieren. Die Ausführung des Befehls erfolgt durch den Datenprozessor (Data Processor (DP)), der dafür unter anderem eine ALU enthält.

von-Neumann-Konzept

von-Neumann-Architektur
Abbildung 5: Die von-Neumann-Architektur

Um die oben genannten Beschränkungen der von-Neumann-Architektur zu umgehen, bedient man sich der Harvard-Architektur, bei der Datenspeicher (DM) und Programmspeicher (PM) als separate Speicher organisiert sind.

Klassische Harvard-Architektur

Die Harvard-Architektur
Abbildung 6: Die Harvard-Architektur

Hier kann zu einer Zeit ein Befehl durch den Befehlsprozessor und ein Operand durch den Datenprozessor geladen werden.

Die klassische Harvard-Architektur wurde durch eine architektonische Maßnahme erweitert, die es dem Datenprozessor ermöglicht, direkt auch auf den Programmspeicher zuzugreifen, um beispielsweise Filterkoeffizienten zu laden. Die zusätzliche Hardware ist ein Multiplexer (MUX).

Modifizierte Harvard-Architektur
Abbildung 7: Modifizierte Harvard-Architektur


Um den Durchsatz an Instruktionen noch mehr zu steigern, wurde eine weitere Optimierung durch zusätzliche Hardware vorgenommen. Es wurde zusätzlicher Cache-Speicher am Befehlsprozessor integriert.

Modifizierte Harvard-Architektur mit Cache
Abbildung 8: Modifizierte Harvard-Architektur mit Cache

Die Modifizierte Harvard-Architektur und die Modifizierte Harvard-Architektur mit Cache findet man hauptsächlich bei Digitalen Signal-Prozessoren (DSPs).