| Inhaltsverzeichnis
|  | Übersicht Kapitel 1
1.1 Aufbau eines Digitalrechners |  | 1.3 Entwicklungsgeschichte der Mikroprozessor-Technik

## 1.2 Erklärung wichtiger Begriffe

- 1.2.1 Zur Abgrenzung zwischen CISC- und RISC-Prozessoren

In diesem Abschnitt sollen zunächst die Begriffe erklärt werden, die in diesem Kurs wiederholt benutzt werden. Die wichtigsten von ihnen sind im Bild 1.2-1 zu finden.
Der Mikroprozessor (µP, Micro Processing Unit - MPU) ist die Zentraleinheit (oder ihr wesentlicher Teil) eines Digitalrechners, die in einem oder sehr wenigen programmierbaren Logikbaustein(en) untergebracht ist. Er umfaßt die im Abschnitt 1.1 beschriebenen Komponenten Steuerwerk, Operationswerk sowie eine Schnittstelle zum Systembus. Die Vorsilbe "Mikro-" bezieht sich nur auf die Größe des Prozessors, nicht jedoch auf seine Leistungsfähigkeit oder die Art der Realisierung des Steuerwerks. Danach kann man unterscheiden (vgl. Abschnitt 2.2) zwischen einem

- mikroprogrammierten µP, der ein Mikroprogramm-Steuerwerk (MPStW) besitzt, dessen Mikroprogramme vom Hersteller in einem Festwertspeicher (Control Memory/Store) untergebracht wurden und vom Benutzer nicht geändert werden können. Heute findet man diese Form des Steuerwerks hauptsächlich in den einfacheren Mikroprozessoren für Steuerungsaufgaben (Mikrocontroller, s.u.).

Bild 1.2-1: Zur Erklärung der wichtigsten Begriffe

- mikroprogrammierbaren µP, bei dem der Anwender die Mikroprogramme des MPStWs selbst erstellen und in einem Speicher (Festwert- oder Schreib-/Lese-Speicher) ablegen muß. Zu dieser Klasse gehören die "bipolaren Bitscheiben"-Mikroprozessoren (Bit Slice Processors), die in den Anfangsjahren der Mikroprozessor-Technik besonders durch ihre Schnelligkeit hervorragten. Sie wurden in der Regel nur in speziellen Anwendungen eingesetzt und besitzen heute keine große Bedeutung mehr.
- µP mit festverdrahtetem Schaltwerk, bei dem das Steuerwerk nicht durch ein MPStW, sondern durch direkte (kombinatorische) Schaltlogik realisiert ist. Zu dieser Klasse gehören viele der modernen RISC-Prozessoren (s.u.).

Nach architektonischen Gesichtspunkten unterscheiden wir die folgenden µP-Klassen:

- Universelle Mikroprozessoren (General Purpose Processors) sind Prozessoren ohne spezielle Schnittstellen oder Komponenten. Mit geeigneten Programmen und externen Erweiterungsbausteinen sind sie für alle allgemeinen Anwendungen einsetzbar. Sie sind der Hauptgegenstand dieses und des folgenden Kapitels. Daneben gibt es Mikroprozessoren für spezielle Anwendungen, die z.T. in den folgenden Kapiteln beschrieben werden. Universelle Mikroprozessoren können einer der im folgenden beschriebenen Prozessorklassen angehören.
- CISC-Prozessoren (Complex Instruction Set Computer)sind mikroprogrammierte universelle Mikroprozessoren. Sie sind (meist) nach dem von-Neumann-Prinzip aufgebaut, d.h. Befehle und Daten liegen im selben Arbeitsspeicher vermischt vor und werden über ein einziges Bussystem transportiert. Diese Prozessoren werden heute hauptsächlich in einfacheren Steuerungssystemen verwendet. In früheren Jahren dominierten die CISC-Prozessoren der Intel-80x86-Familie (bis 80486) den Markt der Personal Computer (PC). Die Bezeichnung CISC leitet sich ursprünglich von dem relativ umfangreichen Befehlssatz her. Weiter unten werden wir die CISC-Prozessoren den RISC-Prozessoren entgegenstellen.
- RISC-Prozessoren (Reduced Instruction Set Computer) sind (meist) nicht mikroprogrammierte universelle Mikroprozessoren. Die Bezeichnung RISC stammt als pars pro toto von dem relativ kleinen Befehlssatz dieser Prozessoren ab. Weiter unten werden wir jedoch weitere wichtige RISC-Eigenschaften beschreiben. RISC-Prozessoren besitzen meist eine sog. Harvard-Architektur, bei der Befehle und Daten in getrennten Speichern untergebracht und gleichzeitig über getrennte Bussysteme transportiert werden können. Sie werden hauptsächlich in den Mikrorechnern der höheren Leistungsklasse, den Arbeitsplatzrechnern (Workstations), verstärkt aber auch in anspruchsvollen Steuerungssystemen eingesetzt
- hybride CISC/RISC-Prozessoren stellen eine Mischform mit CISC- und RISC-Eigenschaften dar. Die Mehrzahl der eingesetzten Hochleistungs-µPs gehört heute dieser Klasse an. Insbesondere in den Personal Computern sind sie millionenfach vertreten (Intel Pentium-Familie und Kompatible).
- Unter einem Standard-Mikroprozessor wollen wir in diesem Kurs einen mikroprogrammierten, universellen CISC-Prozessor verstehen.

Nach ihren verschiedenen Einsatz- und Aufgabenbereichen, die sich auch in der Architektur niederschlagen, können wir die folgenden anwendungsorientierten Mikroprozessoren unterscheiden:

- Mikrocontroller (µC. Embedded Controller) verfügen in der Regel über besondere Schnittstellen, integrierte Speicher und festgelegte Programme zur Steuerung bestimmter Vorgänge. Sie werden nach dem CISC- oder RISC-Prinzip gebaut.
- Digitale Signalprozessoren (Digital Signal Processors - DSP) sind besonders zur digitalen Verarbeitung analoger Signale konzipierte Mikroprozessoren mit speziellen Befehlen und Hardwarekomponenten. Ihr Rechenwerk ist auf die schnelle Reihenberechnung (Multiply-Accumulate) ausgelegt, die in vielen Algorithmen der digitalen Signalverarbeitung eine zentrale Rolle spielt. Häufig besitzen DSPs integrierte Schnittstellen zur Kommunikation und Steuerung.
- Slave- oder Coprozessoren sind Mikroprozessoren mit festumrissenen, problemangepaßten Befehlssätzen für spezielle Aufgaben, z.B. Arithmetik- oder Graphikprozessoren. Sie arbeiten nicht eigenständig Anwendungsprogramme ab, sondern werden von einem Mikroprozessor dazu angeleitet.

Unter einem n-bit-µP (meistens n = 4, 8, 16, 32, 64) verstehen wir einen Prozessor, dessen Operationswerk in einem Schritt eine Information der Breite n bit verarbeiten kann. (Weniger sinnvoll ist die oft zu findende Definition, die an der Breite des Datenbusses festgemacht wird, d.h. an der Anzahl der parallel - gleichzeitig - übertragenen Datenbits.)
Ein Mikrorechner (µR,Mikrocomputer - µComputer) enthält neben dem µP als Zentraleinheit zusätzlich Daten- und Programmspeicher, Schnittstellen für diverse Peripheriegeräte sowie weitere Systembausteine (Zähler, Echtzeituhr, Digital/ Analog- bzw. Analog/Digital-Wandler etc.). Die Verbindung der Komponenten geschieht durch den Systembus, bestehend aus Adreß-, Daten- und Steuerbus. (In Analogie zum menschlichen Körper ist der µP das Gehirn des µCs und nicht - wie oft gesagt wird - sein Herz.) Spezialfälle von Mikrorechnern sind:

- die o.g. Mikrocontroller, die als Ein-Chip-Mikrocomputer (Single-Chip µComputer) vollständige Rechner mit Taktgenerator, Speicher, Schnittstellen, evtl. auch Zähler, Digital/Analog- bzw. Analog/ Digital-Wandler etc. in einem einzigen Halbleiterbaustein darstellen.
- die Ein-Platinen-Mikrocomputer, vollständige µR auf einer einzigen Platine ("gedruckte" Schaltung, Steckkarte).

Unter einem Mikrorechner-System (µRS, Mikrocomputer-System) verstehen wir einen Mikrorechner, zusammen mit allen angeschlossenen Peripheriegeräten. Dabei verlangen wir zur Abgrenzung von den Mikroprozessor-Systemen der einfachsten Form stets, daß ein MRS "frei" programmierbar ist und somit zur Lösung verschiedenster Aufgaben benutzt werden kann. (Bei einer Tastatur mit µP-Steuerung handelt es sich in diesem Sinne daher nicht um ein µRS.) Alle Komponenten eines µRS, die nicht zum µR selbst gehören, nennen wir die Peripherie des Systems.

### 1.2.1 Zur Abgrenzung zwischen CISC- und RISC-Prozessoren |

In den folgenden Abschnitten werden wir immer wieder auf die architektonischen Unterschiede zwischen CISC- und RISC-Prozessoren eingehen. Damit Sie dabei den Überblick behalten, wollen wir schon an dieser Stelle die Entwicklung der RISC-Prozessoren motivieren und die wesentlichen Merkmale beider Prozessortypen gegenüberstellen. Dabei werden wir bewußt keinen Leistungsvergleich zwischen CISC- und RISC-Prozessoren anstellen, wie er in vielen Veröffentlichungen zu finden ist. Allen diesen Vergleichen ist gemeinsam, daß sie an vielen Stellen mit Fragezeichen zu versehen und häufig durch die Prozessorhersteller "gefärbt" sind. Auch werden wir uns nicht um die (eher philosophische) Frage kümmern, wie man einen bestimmten Prozessor zweifelsfrei einer der beiden Klassen zuordnen kann. Denn die Grenzen zwischen beiden Klassen sind sehr verschwommen und verschieben sich laufend. Jeder Prozessorhersteller ist natürlich bemüht, in sein neues Produkt so viele gute Eigenschaften wie möglich aus beiden Klassen einfließen zu lassen. So findet man heute auch in Standard-Mikroprozessoren Merkmale, die bis vor kurzem noch den RISC-Typen vorbehalten waren. (Im Steuerwerk des Motorola 68040 sind z.B. einige häufig benutzte Befehle nicht mehr durch ein Mikroprogramm sondern in direkter Verdrahtung realisiert. Andererseits enthalten - wie oben bereits gesagt - einige RISC-Prozessoren auf dem Chip Komponenten, die ein mikroprogrammiertes Steuerwerk besitzen.) Zunächst sind im Bild 1.2-2 die zugrunde liegenden "Entwurfsphilosophien" skizziert.

Bild 1.2-2: Hardware/Software-Komplexität bei CISC/RISC-Prozessoren

Erklärtes Ziel der CISC-Entwicklung war es bis zur Mitte der 80er Jahre, die Grenze zwischen Hardware und Software immer weiter nach "oben" zu verschieben, d.h. möglichst viele Funktionen direkt durch die Hardware ausführen zu lassen. Als Endziel dachte man an einen Prozessor, der unmittelbar, also ohne Einsatz eines Compilers, in einer höheren Programmiersprache programmiert werden sollte. Als Folge ergaben sich Prozessoren mit einem umfangreichen Satz von bis zu einigen Hundert Befehlen in unterschiedlichsten Formaten, mit bis zu einigen Dutzend unterstützten Adressierungsarten und vielen verschiedenen Datentypen und Datenformaten. Die Realisierung dieser Prozessoren führt zu einigen technologischen und ökonomischen Problemen, die wir nun kurz skizzieren wollen.

- Die Realisierung eines großen Befehlssatzes mit vielen Adressierungsarten und Datentypen bedingt ein sehr komplexes Steuerwerk.
  - Die (funktionale) Komplexität verursacht hohe Entwicklungskosten und eine lange Entwicklungsdauer. Je komplexer das Steuerwerk ist, desto größer ist die Wahrscheinlichkeit von Entwurfsfehlern, die gar nicht oder nur sehr schwer und unter hohen Kosten zu beheben sind. Wegen der großen Zeitspanne zwischen Projektierung und Marktreife sind die rasanten Fortschritte der Mikroelektronik nur sehr schlecht zu nutzen.
  - Die vielen Fallunterscheidungen, die vom Steuerwerk zur Bearbeitung eines umfangreichen Befehlssatzes zu treffen sind, sind (beim augenblicklichen Stand der Technik) nur durch ein Mikroprogramm-Steuerwerk zu erbringen. Die Decodierung und Ausführung der Befehle in vielen Mikroprogrammschritten benötigt jedoch relativ viel Zeit.
  - Die genannten Gründe führen dazu, daß das Steuerwerk bei Standard-Mikroprozessoren in der Regel über 50% der Chipfläche belegt. (Beim Motorola 680x0 sollen es sogar bis zu 68% sein, vgl. Bild 2.1-4.) Einerseits verursacht diese Chipfläche direkte Materialkosten. Andererseits sinkt mit wachsender Chipfläche die Ausbeute an fehlerfrei arbeitenden Chips, wodurch natürlich wiederum die Produktionskosten steigen.
- Wegen der unterschiedlichen Komplexität der Befehle differiert ihre Ausführungszeit u.U. beträchtlich. Aber auch die Ausführung ein und desselben Befehls benötigt wegen der unterschiedlichen Adressierungsarten mehr oder weniger Taktzyklen. Dies wird besonders einsichtig bei den Adressierungsarten, bei denen zur Berechnung der effektiven Operandenadresse mehrfach auf den Speicher zugegriffen werden muß. Daher führt schon die einfachste Form der Parallelarbeit auf dem Chip, das OpCode-Prefetching, zu Problemen (vgl. Abschnitt 2.2). Eine vollständige "Fließband"-Bearbeitung (Pipelining, ), bei der die Befehle gleichzeitig, aber nacheinander mehrere Prozessorkomponenten durchlaufen und dort schrittweise verarbeitet werden, ist nahezu ausgeschlossen.
- Die Komplexität des Befehlssatzes, der Adressierungsarten und Datentypen erschwert die Entwicklung effizient arbeitender Compiler,denn
  - in diesem müssen bei jeder Befehlsübersetzung eine große Anzahl von Fallunterscheidungen durchgeführt werden. Durch die Vielzahl der Entscheidungsmöglichkeiten jedoch ist die Entwicklung optimierender Compiler sehr aufwendig.
  - Untersuchungen haben gezeigt, daß Compiler eine große Palette von Befehlen und Adressierungsarten schlecht nutzen und hauptsächlich die einfacheren Befehle und Adressierungsarten verwenden. Im Idealfall gibt es für jeden Befehl einer höheren Programmiersprache (High-Level Language - HLL) nur eine Übersetzungsmöglichkeit in eine Folge von Maschinenbefehlen.

Die dargestellten Probleme wurden schon in den Anfangsjahren der Mikroprozessor-Technik erkannt. So begann man schon in der Mitte der 70er Jahre nach Alternativen zu suchen. Ab 1975 entwickelte man bei der Firma IBM das Rechnersystem IBM 801, dessen Prozessor sich durch einen einfachen Befehlssatz für die Verarbeitung von Texten und ganzen Zahlen auszeichnete und für den Einsatz einfacher, optimierender Compiler konzipiert wurde. Anfang der 80er Jahre folgte dann an der Universität von Kalifornien in Berkeley die Entwicklung zweier Prozessoren RISC I und RISC II, die einer ganzen Klasse von Nachfolgern den Namen gegeben haben.
Ziel der RISC-Entwicklung ist es, die Grenze zwischen Hardware und Software so weit wie möglich nach "unten" zu verschieben, also Prozessoren zu bauen, die durch eine ganze Palette von Maßnahmen den oben erwähnten Nachteilen der CISC-Prozessoren begegnen. Dazu gehört insbesondere eine drastische Reduzierung der Komplexität des Steuerwerks. So liegt der Anteil der Chipfläche, die das Steuerwerk typischer RISC-Prozessoren belegt, unter 10% . Die eingesparte Fläche wurde zwar zum Teil für eine drastische Vergrößerung des Registersatzes verwendet, jedoch erlaubt die reduzierte Komplexität eine erhebliche Verkürzung der Entwicklungszeit und damit eine bessere Ausnutzung der Technologiefortschritte.

In den letzten Jahren ist aber auch eine gegenläufige Tendenz zu beobachten. So werden auf der durch die Reduzierung der Komplexität gewonnenen Chipfläche immer weitere Komponenten eines Mikrocomputer-Systems untergebracht und dadurch seine Hardware-Komplexität wieder vergrößert (s. Bild 1.2-2 rechts). Dazu gehören insbesondere schnelle Zwischenspeicher (Caches), Speicherverwaltungseinheiten (Memory Management Units - MMU) und weitere Rechenwerke.
Im Rest dieses Unterabschnitts werden wir die charakteristischen Eigenschaften von RISC-Prozessoren beschreiben.

Typische RISC-Eigenschaften

Wie nicht anders zu erwarten, sind einige der im folgenden beschriebenen typischen RISC-Merkmale gerade "komplementär" zu den bei den CISC-Prozessoren festgestellten Nachteilen. Die Auflistung der Eigenschaften darf nicht so mißverstanden werden, daß ein typischer RISC-Prozessor alle diese Eigenschaften besitzen muß. Vielmehr erfüllen alle realen RISC-Prozessoren nur eine mehr oder weniger große Teilmenge der gestellten Forderungen. Auch erhebt die Darstellung keinen Anspruch auf Vollständigkeit. Zu den typischen RISC-Merkmalen gehören:

- Die Komplexität des Steuerwerks wird durch die folgenden Punkte drastisch reduziert:

  - Der Prozessor besitzt einen kleinen Satz einfacher Befehle. Üblich sind zwischen 30 und 100 Befehle, die alle ein oder sehr wenige verschiedene Formate besitzen.
  - Es werden nur wenige - häufig sogar nur eine oder zwei - einfache Adressierungsarten unterstützt. Komplexere Adressierungsarten müssen softwaremäßig durch einfachere nachgebildet ("emuliert") werden.
  - Ein Zugriff auf den Arbeitsspeicher ist nur durch einen Lade- bzw. Speicherbefehl (LOAD/STORE) möglich. (Man spricht deshalb vereinfachend auch von einer LOAD/STORE-Architektur.) Ausgeschlossen sind dadurch insbesondere Speicher-Speicher-Befehle, die ihre Operanden aus dem Speicher holen und das Ergebnis dort wieder ablegen.
  - Alle anderen Befehle (außer LOAD und STORE) arbeiten ausschließlich mit Operanden, die in Registern des Prozessors zur Verfügung stehen oder als unmittelbare Daten im Befehl angegeben sind.
  - Bevorzugt wird das sog. Dreiadreß-Format eingesetzt, d.h. (bis zu) zwei Registerinhalte werden verknüpft und das Ergebnis in einem weiteren Register abgelegt (s.u.).
  - Die Ausführungsphase aller Befehle (außerLOAD und STORE) soll möglichst nur einen Taktzyklus lang dauern.
- Die vorstehenden Merkmale führen zu einem relativ einfachen Steuerwerk, das als festverdrahtetes Steuerwerk, also ohne Mikroprogrammierung realisierbar ist. Durch die geringe Signalverzögerung in diesem Steuerwerk kann die Takt-Zykluszeit des Prozessors klein gehalten, somit eine hohe Taktfrequenz benutzt werden.
- Die Breite aller internen und externen Datenwege sowie der Daten, die in einem Schritt von der ALU verarbeitet werden können, beträgt 32 oder 64 bit. (Nach unserer Nomenklatur handelt es sich also um 32/64-bit-Prozessoren.)
- Zur Erhöhung der Rate, mit der auf den Arbeitsspeicher zugegriffen werden kann, existieren häufig zwei getrennte Bussysteme, bestehend aus Adreß- und Datenbus sowie einigen Steuerleitungen, über die gleichzeitig ein Programm- und ein Datenspeicher angesprochen werden können. (Diese Form der Speicherankopplung ist ein Merkmal der sogenannten Harvard-Architektur.)
- Der Registersatz besteht aus relativ vielen 32-bit-Registern. Üblich ist eine Anzahl von 32, jedoch gibt es auch Prozessoren mit einigen Hundert Registern.
- Die Abarbeitung (fast) aller Befehle geschieht in einer vollständigen, linearen Pipeline ("Fließband") der Prozessorkomponenten in einem starren Zeitraster. Das Ziel, das RISC-Prozessoren mehr oder weniger gut erreichen, ist, daß in jedem Taktzyklus (wenigstens) ein Befehl beendet werden kann.
- Die Abarbeitung der Befehle in der Pipeline ist transparent für den Benutzer. Durch verschiedene Maßnahmen, auf die wir später eingehen werden, muß vermieden werden, daß in der Pipeline Verzögerungen eintreten ("Pipeline-Hemmnisse").
- RISC-Prozessoren sind nur im Zusammenhang mit Compilern und höheren Programmiersprachen sinnvoll einzusetzen. Für viele Typen existieren deshalb nicht einmal Assemblersprachen und Übersetzer.

Exkurs 1.2.1: Zu den Begriffen bit und byte
In der Literatur kann man leider keine einheitliche Schreibweise und Interpretation dieser Begriffe finden. Wir benutzen die folgende Konvention:
Bit | (Binary Digit) bezeichnet ein einzelnes Speicherelement eines Registers bzw. einer Speicherzelle, das nur den Wert '0' oder '1' aufnehmen kann, oder eine bestimmte Binärstelle innerhalb einer Adresse bzw. eines Datenwortes.
Byte | bezeichnet dementsprechend eine Gruppe von acht zusammenhängenden Bits in einem Register, einem Speicher-, Adreß- oder Datenwort.
bit | ist die Maßeinheit für den Informationsgehalt. Wir benutzen sie zur Angabe der Länge (Breite) eines Registers, eines Wortes oder der Kapazität eines Speichers. Häufig benutzt werden die abgeleiteten Maßeinheiten:
kbit | = 210 bit = 1 024 bit | (Kilobit),
Mbit | = 220 bit = 1 048 576 bit | (Megabit),
Gbit | = 230 bit = 1 073 741 824 bit | (Gigabit).
byte | ist eine vom bit abgeleitete Maßeinheit, für die die Berechnungsformel gilt: n byte = 8 x n bit. Sie wird bevorzugt dann benutzt, wenn die kleinste selektierbare Einheit eines Registers, eines Speicher-, Adreß- oder Datenwortes ein Byte ist. Gebräuchlich sind die abgeleiteten Maßeinheiten kbyte, Mbyte, Gbyte.
Ergänzung: Im Gegensatz zum Informationsgehalt werden Frequenzen gewöhnlich in 10er-Potenzen angeben. Demgemäß bedeuten die folgenden Übertragungsraten:
kbit/s | = 103 bit/s = 1 000 bit/s | (Kilobit/Sekunde),
Mbit/s | = 106 bit/s = 1 000 000 bit/s | (Megabit/Sekunde),
Gbit/s | = 10 9 bit/s = 1 000 000 000 bit/s | (Gigabit/Sekunde).

| Inhaltsverzeichnis
|  | Übersicht Kapitel 1
1.1 Aufbau eines Digitalrechners |  | 1.3 Entwicklungsgeschichte der Mikroprozessor-Technik