1.2 Erklärung wichtiger Begriffe
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:
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). |
|
