Inhaltsverzeichnis
   Übersicht Kapitel 2
2.1 Prinzipieller Aufbau eines Mikroprozessors      2.3 Die Behandlung von Ausnahmesituationen

2.2 Das Steuerwerk


2.2.1 Funktion und Aufbau

Das Steuerwerk (Control Unit CU) eines Mikroprozessors ist ein synchrones Schaltwerk. Bei einigen, insbesondere den älteren Mikroprozessortypen, wird die Erzeugung des benötigten Taktes extern in einem besonderen Baustein vorgenommen. Moderne Mikroprozessoren haben den Taktgenerator (Clock Generator) meist auf dem Chip integriert, so daß zur Stabilisierung der Frequenz extern nur noch ein Quarz zwischen zwei Anschlüsse des Prozessors gelegt werden muß (vgl. Bild 2.1-7). Im Taktgenerator wird durch einen freischwingenden Oszillator eine Rechteckschwingung mit fester Frequenz erzeugt. Heute sind Taktraten zwischen 1 und 650 MHz üblich; bis zum Jahr 2000 wird die 1-GHz-Grenze erreicht werden. Da einige Mikroprozessoren dynamische Schaltwerke sind, bei denen die Information in Kondensatoren gespeichert ist, darf bei ihnen die Taktfrequenz nicht unter einen Minimalwert fallen, sonst werden die Inhalte der internen Register nicht rechtzeitig aufgefrischt und gehen durch Leckströme verloren. Der Prozessortakt wird über einen Ausgang meist allen externen Komponenten als Systemtakt zur Verfügung gestellt, gegebenenfalls auf eine niedrigere Frequenz heruntergeteilt.
Manchmal werden im Taktgenerator noch weitere Zeitfunktionen abgeleitet. Dazu gehört z.B. die Erzeugung eines mit dem Prozessortakt synchronisierten Rücksetzsignals. Dieses Signal wird durch einen asynchron am RESET#-Eingang angelegten Impuls angestoßen und muß genaue zeitliche Spezifikationen erfüllen, um dem Prozessor eine geordnete Initialisierung zu ermöglichen. Diese wird durch ein (Mikro-)Programm des Steuerwerks durchgeführt und besteht vor allem darin, die internen Register mit bestimmten Anfangswerten zu laden. Das Rücksetzsignal wird bei einigen µP-Typen über einen RESET#-Ausgang auch allen anderen Komponenten des Systems zugeführt.


Exkurs 2.2-1: Zur Erzeugung eines RESET-Signals

Im Bild 2.2-1a ist eine kombinierte Schaltung dargestellt, die sowohl ein automatisches Rücksetzen des Prozessors nach dem Einschalten der Betriebsspannung (Power on Reset - POR) als auch ein manuelles Rücksetzen über einen Taster ermöglicht. Zur Funktion:
Nach dem Einschalten der Spannungsversorgung (im Zeitpunkt t=0) steigt die Betriebsspannung +UB sehr rasch auf ihren Endwert (z.B. +5 V, s. Bild 2.2-1b). Die dabei auftretende Verzögerung ist hauptsächlich dadurch bedingt, daß zunächst alle Kapazitäten des Systems aufgeladen werden müssen. Dazu gehören insbesondere die Kondensatoren mit unterschiedlichsten Aufgaben, aber auch die Störkapazitäten der Leiterbahnen, der Gattereingänge und der Transistoren. Nachdem die Betriebsspannung ihren Endwert erreicht hat, beginnt der Oszillator mit der Ausgabe des Systemtaktes. Mit der durch die Widerstands-Kondensator-Kombination vorgegebenen Zeitkonstanten t =R C, im Beispiel t =200 ms (1 ms=10-3 Sekunden), wird der Kondensator C allmählich (exponentiell) aufgeladen. Diese Zeitkonstante t muß bei einigen µP-Typen so groß gewählt werden, daß die eben beschriebene Initialisierungsroutine im Prozessor vollständig ausgeführt werden kann. Vom Hersteller wird die benötigte Zeit tRC durch eine Mindestanzahl von Taktzyklen angegeben. Erst wenn die Kondensatorspannung (am Ausgang RESET) einen bestimmten Schwellwert US überschreitet, wird mit der nächsten Schwingung des Systemtakts (bzw. eine fest vorgegebene Anzahl von Schwingungen später) der Programmzähler (s. Bild 2.1-7) mit der Adresse des ersten auszuführenden Maschinenbefehls geladen und dadurch die Programmausführung gestartet. (Bei anderen Prozessortypen wird die Initialisierung erst nach dem Erreichen des Schwellwertes US und vor derAusführung des ersten Maschinenbefehls durchgeführt.)
Wird während des laufenden Betriebs der Rücksetz-Taster betätigt, also geschlossen, so kann sich über ihn der Kondensator C gegen Masse entladen. Der Reihenwiderstand (R) sorgt dabei für eine Begrenzung des Entladestroms. Nach Lösen des Tasters können nun wiederum, wie oben beschrieben, die Initialisierungsroutine ablaufen und der Kondensator C sich über den Widerstand R erneut aufladen.



Bild 2.2-1:
  Schaltung zum Rücksetzen des Prozessors
1 µF (Mikrofarad) = 10-6 Farad, 1 Farad = 1 As/V (Ampere x Sekunde/Volt)


Der Vollständigkeit halber sei angemerkt, daß die Diode als Stromventil wirkt, das einen Strom nur dann zum UB-Anschluß fließen läßt, wenn dort ein niedrigeres Potential liegt als am RESET-Anschluß. Sie sorgt dafür, daß nach dem Abschalten der Betriebsspannung (UB=0 V) der Kondensator schnell entladen wird, und damit der RESET-Eingang des Prozessors nicht auf hohem Potential liegen bleibt.

Der Aufbau des Steuerwerks wurde bereits im Bild 2.1-7 skizziert. Darin kann man das Befehlsregister, den Befehlsdecod(ier)er, die eigentliche Steuerlogik sowie das Steuerregister unterscheiden. Das Steuerwerk des Mikroprozessors liefert nach einem durch ein Programm vorgegebenen Ablauf Steuersignale in festgelegter zeitlicher Reihenfolge an das Rechenwerk, an die anderen Komponenten des Prozessors und über die Prozessoranschlüsse auch an alle externen Komponenten des Mikroprozessor-Systems. Von einigen internen und externen Komponenten treffen Meldesignale ein, die vom Steuerwerk zu Entscheidungen über den weiteren Ablauf herangezogen werden. Dazu gehören insbesondere Programmverzweigungen und -unterbrechungen. (Genau genommen, liegt hier also keine Steuerung, sondern eine Regelung vor.)

Ein Programm für den Mikroprozessor besteht aus einer Folge von Maschinenbefehlen (Makrobefehle). Diese werden im Maschinencode vom Steuerwerk sukzessiv in den Prozessor geladen. (Auf den Aufbau der Makrobefehle gehen wir in Kapitel 7 ausführlich ein.) Bild 2.2-2 zeigt die Phaseneinteilung der Befehlsbearbeitung im Prozessor.



Bild 2.2-2:  Phasenunterteilung der Befehlsbearbeitung


Exkurs 2.2-2: Grundlagen der Mikroprogramm-Steuerwerke

Wir betrachten hier einen einfachen Standardprozessor, dessen Steuerung als Mikroprogramm-Steuerwerke ausgelegt ist. Im Bild 2.2-4 ist sein MPStW skizziert.



Bild 2.2-4:  Aufbau eines einfachen Mikroprogramm-Steuerwerks

In einem Festwertspeicher des Steuerwerks (Mikroprogramm-Speicher, Control Memory/Store) liegt für jeden Macrobefehl ein Mikroprogramm vor. (Da die Mikroprogramme vom Benutzer nicht geändert werden können, ist dieser Prozessor somit zwar mikroprogrammiert aber nicht mikroprogrammierbar; vgl. Abschnitt 1.2). Der Operationscode (OpCode) des Makrobefehls, der im Befehlsregister gespeichert ist, wird vom Befehlsdecod(ier)er (Decoder, Instruction Unit - IU) interpretiert ("entschlüsselt"). Der Decoder liefert als Ergebnis dem Mikroprogramm-Steuerwerk die Anfangsadresse eines Mikroprogramms zur Ausführung des anstehenden Befehl. Außerdem stellt der Decoder fest, wie viele Operanden der Befehl benötigt, wo sie zu finden sind und welche Register dazu benötigt werden. Ein Mikroprogramm besteht aus einer Folge von Mikrobefehlen (Micro Instructions, s. Bild 2.2-5). Die Abfolge dieser Befehle wird durch einen Takt gesteuert, der (z.B.) durch das letzte Bit der Mikrobefehle beeinflußt, d.h. gestartet und gestoppt wird.
Den einzelnen Bits eines Mikrobefehls entsprechen Mikrooperationen, durch die die Auswahl- und Freigabesignale (Select, Enable) für die benötigten Komponenten bestimmt und die Datenwege im Prozessor und zu den externen Komponenten geschaltet werden. Das Steuerwort im Mikrobefehl kann in einzelne Felder unterteilt werden, deren Bits jeweils bestimmte Komponenten des Prozessors steuern, wie z.B. das Rechenwerk (s. Bild 2.2-5) Durch Verknüpfung der Signale mit dem Prozessortakt werden spezifische Steuertakte erzeugt, deren Flanken die Schaltzeitpunkte festlegen. Dadurch wird für die erforderliche zeitliche Abfolge der Komponentensteuerung gesorgt. Die Komponenten ihrerseits liefern Rückmeldesignale, aus denen über einen Multiplexer vom Steuerwort ein Signal ausgewählt und als Teiladresse an den Speicher gelegt werden kann. Auf diese Weise können, abhängig von einem bestimmten Zustand, Verzweigungen im Mikroprogramm durchgeführt werden. Schließlich meldet das Mikroprogramm-Steuerwerk dem Decoder das Ende der Befehlsausführung und fordert dadurch den nächsten Befehl an. Gleichzeitig wird der Takt des MPStW angehalten.



Bild 2.2-5:  Prinzipieller Aufbau eines Mikrobefehls

Das letzte Feld des im Bild 2.2-5 dargestellten Mikrobefehls erzeugt die externen Signale, die an den Anschlüssen des Prozessors zur Steuerung der Peripheriebausteine abgegriffen werden müssen. Andere Signale werden von diesen Bausteinen zum Steuerwerk des Prozessors geführt und dort ausgewertet. Dazu gehören typischerweise die im Unterabschnitt 2.2.2 beschriebenen Signalgruppen.



2.2.2 Ein-/Ausgangssignale des Steuerwerks


2.2.2.1 Zuteilung des Systembusses

Können in einem Mikroprozessor-System mehrere Komponenten aktiv auf den Systembus zugreifen, so benötigt man eine Technik zur Anforderung des Systembusses vom µP und zur Gewährung des Zugriffes durch den Prozessor (Bus Arbitration Control). Bei diesen Komponenten kann es sich um einen weiteren (Co-)Prozessor oder aber auch um einen Peripheriebaustein handeln (z.B. der im folgende beschriebene DMA-Controller - Direct Memory Access). Zur Regelung des Zugriffs auf den Systembus dienen die folgenden drei Signale. Die beschriebene Form der Buszuteilung wird auch als 3-Leitungs-Handshake oder Quittungsbetrieb bezeichnet.


2.2.2.2 Unterbrechungsanforderungen

Selbsttestaufgabe S2.2-1:  (–> Lösungsvorschlag)

Versuchen Sie, die wesentlichen Unterschiede zwischen den Signalen HOLD und HALT anzugeben.


2.2.2.3 Fehlermeldung

Durch die Fehlermeldung BERR (Bus Error) wird dem Prozessor von bestimmten Komponenten mitgeteilt, daß bei der augenblicklich auf dem Systembus ablaufenden Aktion ein Fehler festgestellt wurde. Beispiele dafür sind ein Zugriff auf einen geschützten Speicherbereich, das Ausbleiben eines Quittungssignals von einer Systemkomponente oder aber auch ein festgestellter Übertragungsfehler.


2.2.2.4 Statusinformationen

Durch eine Anzahl von Prozessor-Statussignalen, die beispielsweise mit FC1,..,FCn (Function Code) oder ST1,..,STn (Status) bezeichnet sind, kann der Prozessor den angeschlossenen Komponenten seinen Zustand bzw. den Typ der augenblicklich ausgeführten Operation mitteilen. Dazu gehören z.B., ob der Prozessor:


2.2.2.5 Kommunikation mit einem Coprozessor

Über einige weitere Signale korrespondiert der Prozessor mit einem eventuell im System vorhandenen Coprozessor. Diese Signale werden im Rahmen dieses Kurses nicht weiter behandelt.


2.2.2.6 Systembus-Steuersignale

Durch diese Signale werden insbesondere die Richtung des Datentransfers auf dem Systembus, das Einfügen von Wartezyklen beim Buszugriff sowie die Art der selektierten Komponente (Arbeitsspeicher oder Peripheriebaustein) festgelegt. Sie werden neben weiteren Signalen im Abschnitt 2.7 beschrieben.


Exkurs 2.2-3: Open-Collector- und Open-Drain-Eigenschaft

Zum Abschluß dieses Abschnitts soll noch einmal auf die Eingangssignale des Steuerwerks eingegangen werden. Als Beispiel werde das oben beschriebene HOLD#-Signal herangezogen. In der Regel gibt es in einem komplexen Mikrorechner-System mehr als eine Komponente, die vom µP den Zugriff zum Systembus verlangen kann. Nun ist es nicht ohne weiteres möglich, die HOLD#-Ausgänge aller dieser Komponenten einfach zu verbinden und zusammen auf den HOLD#-Eingang des Prozessors zu legen, da dadurch ein elektrischer Kurzschluß entstehen würde. Diese direkte Verbindung ist nur bei Gattern möglich, die sogenannte Open-Collector-Ausgänge (bzw. Open-Drain-Ausgänge) besitzen. (Weiter unten werden Sie die elektronischen Hintergründe für diese Bezeichnungen kennenlernen.) Im Bild 2.2-6 ist das Prinzip skizziert, nach dem mehrere Open-Collector-Ausgänge mit einem Eingang verbunden werden können.
Das kreisförmige Symbol in den Komponenten K1 und K2 stellt einen bipolaren Transistor, in der Komponente Kn einen MOS-Transistor (Metal-Oxid Semiconductor) dar. Ihre Funktion werden wir weiter unten genauer beschreiben. Hier reicht es zu wissen, daß diese Transistoren "leiten", wenn am zugehörigen Eingang Ei ein H-Pegel liegt. In diesem Fall wird der Komponenten-Ausgang Ai gegen Masse kurzgeschlossen.


Bild 2.2-6:
  Anschluß mehrerer Komponenten am HOLD-Eingang des Prozessors

Liegt hingegen an Ei ein L-Pegel, so "sperrt" der Transistor, der Ausgang ist dann hochohmig gegen Masse. Alle Ausgänge Ai sind über einen gemeinsamen Widerstand R mit der positiven Betriebsspannung +UB verbunden. Dieser sorgt hauptsächlich dafür, daß der HOLD#-Eingang auf H-Potential liegt, wenn alle Ausgänge Ai hochohmig gegen Masse geschaltet sind. Um den HOLD#-Eingang des Prozessors auf L-Potential herunterzuziehen und dadurch den Systembus anzufordern, reicht es nun stets, daß wenigstens ein Ausgang Ai auf Masse heruntergezogen wird, oder gleichbedeutend damit, daß wenigstens ein Steuereingang Ei auf H-Pegel liegt. Wie im Bild angedeutet, stellt daher die direkte Verbindung der Open-Collector-Ausgänge eine logische UND-Verknüpfung der (negierten) Signale Ai bzw. eine NOR-Verknüpfung der Signale Ei dar. In der Regel sind alle Ausgänge von Systembausteinen, die zur Ansteuerung gemeinsam benutzter Prozessor-Eingänge dienen, als Open-Collector- bzw. Open-Drain-Ausgänge realisiert.



2.2.3 Das Steuerregister

Mit Hilfe des Steuerregisters (Control Register) kann die aktuelle Arbeitsweise des Prozessors beeinflußt werden. Dazu wird während des Programmlaufes ein spezifisches Steuerwort in dieses Register geschrieben. Die einzelnen Bits des Steuerregisters besitzen eine von Prozessor zu Prozessor verschiedene Funktion. Im folgenden werden nur einige Beispiele für diese Steuerbits angegeben.

In den nun folgenden Fallstudien zu den Steuerwerken realer Mikroprozessoren werden einige weitere, sehr spezielle Steuerbits beschrieben. Leider wird in den Datenblättern der Mikroprozessor-Hersteller das Steuerwerk meist sehr knapp abgehandelt. Deshalb können einige Punkte bei der folgenden Beschreibung zweier Mikroprogramm-Steuerwerke nur sehr pauschal dargestellt werden.


Fallstudie 2.2-1: Das Steuerwerk des Motorola MC68000

In der Literatur konnten wir eine genauere Beschreibung des MPStWs nur für den Prozessor 68000 der Firma Motorola finden, die glücklicherweise auch Aussagen über die exakte Organisation des Mikroprogrammspeichers macht. Das Steuerwerk ist in Bild 2.2-7 skizziert. (Interne Steuersignale des Steuerwerks sind darin zur Vereinfachung nicht eingezeichnet.)
Über den internen Bus gelangen die Operationscodes (OpCodes) in das Befehlsregister. Dort werden sie vom Befehlsdecoder ausgewertet, der daraus eine 10-bit-Startadresse für das Mikroprogramm ermittelt und diese an den Mikrobefehlszähler des MPStWs übergibt. Außerdem kann der Decoder bereits die Steuersignale aktivieren, die während der Ausführungsphase konstant bleiben. Dazu gehören z.B. die Auswahlsignale eines bestimmten Registers oder der ALU.
Alle anderen Steuersignale, die zur zeitgerechten Aktivierung der Prozessorkomponenten oder der anderen Systembausteine dienen, werden dann vom MPStW erzeugt. Ein OpCode-Prefetch-Verfahren findet in der oben beschriebenen einfachen Form statt, daß während der Decodier- oder Ausführungsphase eines Befehles schon ein weiterer OpCode in das Befehlsregister geladen werden kann.
Das MPStW ist zweistufig mikroprogrammiert, d.h. der Mikrocodespeicher enthält nicht die Steuerwörter selbst, sondern nur deren Adresse im Steuerwortspeicher (Nanocodespeicher). Dadurch wird sehr viel Speicherplatz gespart, denn sich häufig wiederholende Steuerwörter brauchen jeweils nur ein einziges Mal im Speicher abgelegt zu werden. So sind für den gesamten Befehlsvorrat des Prozessors ca. 640 Mikrobefehle im Mikrocodespeicher nötig, die jeweils nur 10 bit lang sind. Eines dieser 10 Bits liefert ein Rückmeldesignal zum Befehlsdecoder und meldet z.B. das Ende eines Mikroprogramms. Der Nanocodespeicher enthält ungefähr 280 Steuerwörter mit jeweils ca. 70 Bits. Insgesamt umfaßt der Mikroprogrammspeicher also ungefähr 26 kbit. Berechnungen haben gezeigt, daß dieser bei einer einstufigen Organisation fast doppelt so groß geworden wäre.



Bild 2.2-7:  Das Steuerwerk des MC68000 von Motorola

Die Komponenten des Mikroprozessors benötigen näherungsweise 200 Steuersignale, die hauptsächlich vom Nanocodespeicher erzeugt werden müssen. Durch die nachfolgende Demultiplexerlogik werden die 70 Signale des Nanocodespeichers selektiv auf ca. 180 Steuerleitungen der Komponenten geschaltet. Es reicht dabei, jedes Bit des Steuerwortes über den Demultiplexer mit maximal 2 bis 3 Steuerleitungen zu verbinden.
Durch die mit Zeitsteuerung bezeichnete Komponente werden die Signale des Steuerwortes mit dem Systemtakt so verknüpft, daß sie die einzelnen Komponenten zeitgerecht ansteuern.




Fallstudie 2.2-2: Das Steuerwerk des Intel 80486

Bild 2.2-8 zeigt den groben Aufbau des Steuerwerks beim Intel 80486. Der 80486 besitzt einen Befehlsregister-Block, der in Form eines FIFO-Speichers mit 32 byte ausgelegt ist. Die Prefetch-Steuerung sorgt dafür, daß dieser Speicher immer so weit wie möglich gefüllt ist. Das Füllen geschieht dabei mit großer Wahrscheinlichkeit aus dem Chip-internen Cache über einen 128 bit breiten Datenpfad, über den der FIFO-Speicher in nur zwei Taktzyklen vollständig neu geladen werden kann. Müssen jedoch Daten oder Befehle aus dem Arbeitsspeicher geholt werden, so haben diese Zugriffe höhere Priorität als eventuelle Schreibzugriffe des Prozessors auf den externen Datenbus. Die auszugebenden Daten (und ihre Zieladressen) werden in diesem Fall in den vier Schreibpuffern (Write Buffer) zwischengelagert. Liegt in einem Schreibpuffer eine neuere Version des zu ladenden Datums, so wird das von der Steuerung erkannt und das Datum nicht aus dem Speicher, sondern aus dem Puffer geladen.
Es werden ganze Befehle, bestehend aus OpCodes und Operanden in die Warteschlange übertragen. (Dabei verhindert die FIFO-Steuerung, daß Befehle aus Speicherbereichen entnommen werden, die durch die Speicherverwaltung nicht dem aktuell ausgeführten Programm zugeteilt sind.)
Aus der Warteschlange gelangt jeder Befehl zum Befehls-Vordecoder (Instruction Predecode). Hier werden einerseits die unmittelbar im Befehl angegebenen Operanden ("unmittelbare Daten") oder ihre Adreßdistanzen (Offset) zu bestimmten Basisadressen abgezweigt und in einem separaten Speicher abgelegt.
Andererseits wird der OpCode soweit vorverarbeitet, daß dem nachfolgenden Decoder alle wesentlichen Informationen über die Art der Operation, die benutzten Register usw. zur Verfügung gestellt werden. Die vordecodierten Befehle werden in eine weitere FIFO-Warteschlange eingefügt, die maximal drei Befehle aufnehmen kann.
Nach jeder Befehlsausführung entnimmt der Decoder den nächsten vordecodierten Befehl aus dieser Warteschlange und ermittelt für die Mikrobefehlssteuerung die Startadresse des erforderlichen Mikroprogramms.



Bild 2.2-8:  Das Steuerwerk des 80486 von Intel

Die Signale des Mikroprogramm-Speichers werden in der Komponente Zeitsteuerung mit Hilfe des Taktes zu den Steuersignalen der Komponenten verknüpft. Die gestrichelte Linie soll auch hier andeuten, daß einige der Steuersignale auch direkt vom Decoder geliefert werden können.


  Inhaltsverzeichnis
  Übersicht Kapitel 2
2.1 Prinzipieller Aufbau eines Mikroprozessors      2.3 Die Behandlung von Ausnahmesituationen