Zurück


CISC und RISC - Die Gegensätze der Rechnerarchitekturen

Von Bernd Leitenberger


Was bedeuten die Abkürzungen?

RISC und CISC stehen für die Begriffe "Reduced Instruction Set Computer", bzw. "Complex Instruction Set Computer". Damit sind zwei grundsätzliche Philosophien im Computerbau gemeint. Computer sind heute meistens keine reinen RISC- oder CISC-Maschinen, sondern haben von beiden etwas übernommen. 

CISC - die natürliche Evolution

Bei den Begriffen geht es darum, wie die CPU eines Computers arbeitet. Bei dem CISC-Modell hat die CPU üblicherweise wenige Register (Speicherplätze in der CPU), wovon manche auch meist Spezialaufgaben haben. Dazu finden sich viele Befehle, darunter auch sehr mächtige, die z. Bsp. in einer Schleife gleich mehrere Register bearbeiten. Die Befehle haben meist ungleiche Befehlslängen. Die häufigsten benutzten nur ein Byte, weniger häufige zwei oder drei Bytes. Dadurch kann der Code kompakt gehalten werden. 

Wenn eine CPU weiterentwickelt wird, kommt es oft vor, daß sie immer mehr in Richtung CISC wandert. Der Grund ist relativ einfach. Man kann immer mehr Transistoren auf einem Chip zu integrieren. So hatte die erste "8086"-CPU 29.000 Transistoren und ein Pentium IV verfügt über 42 Millionen Transistoren. Diese Möglichkeit wird fast immer genutzt, um neue Befehle zu integrieren, die z. Bsp. das Programmieren erleichtern. Dadurch wird aber das gesamte Design komplexer. 

(...) 

Auch bei den Großrechnern früherer Tage war oft die CISC-Architektur vorherrschend: Man war der Überzeugung,  je "mächtiger" die Befehle einer CPU sind, um so schneller sind diese und um so weniger Speicherplatz benötigt der Code. Ein prinzipieller Nachteil von CISC ist, daß es in der Regel nicht möglich ist, viele Register zu verwenden. Register sind Speicherplätze in der CPU und damit der schnellste Speicher den eine CPU adressieren kann. Die kleine Anzahl liegt daran, daß bei den meisten Befehlen auch das Register auf das er wirkt, mit einkodiert wird. Je mehr Register man hat, desto weniger Befehle kann man realisieren. Sehr oft gab es dann Zwischenlösungen, wie z. Bsp. Befehle, die nur mit bestimmten Registern arbeiteten. 

RISC - Reduziert auf Geschwindigkeit

RISC geht einen anderen Weg. Man beschränkt sich auf die wirklich notwendigen Befehle. Als Ausgleich gibt es erheblich mehr Register (bis zu 256) auf dem Chip, so daß man viel öfter schnelle Register-Register-Operationen hat, als langsame Speicher-Register-Operationen. Die wenigen Befehle machen das Design einfacher und man kann den Prozessor billiger herstellen. Gleichzeitig wird das Datenformat vereinheitlicht. Bei RISC haben alle Befehle eine einheitliche Länge, wodurch das Dekodieren schneller geht, aber der Code zwangsläufig größer ist. 

CISC oder RISC - Der Kampf der Heimcomputer

Das historische Duell fing 1975 zwischen dem "8080" und dem "6502" an und sollte sich über 10 Jahre hinziehen. 

Beide Architekturen waren erfolgreich, obwohl Sie nicht verschiedener hätten sein können. Der "8080" war schon ein typischer CISC-Vertreter. 

Der "8080" hatte einen Akkumulator (A) und sechs 8 Bit-Register (B,C,D,E,H,L), die zusammen zu 16 Bit-Registern (BC, DE, HL) geschaltet werden konnten. Dazu kam der 16 Bit-Stackpointer und der Programmzähler. Speicheroperationen gingen beim "8080" nur übers HL Register, dafür bot dieses auch 16 Bit-Operationen wie Addition und Subtraktion. Der "Z80" erweiterte das Design des "8080". Er führte einen zweiten Registersatz ein, dazu zwei neue Register IX und IY, die für Indexoperationen benutzt wurden. Die BC- und DE-Register wurden genauso tauglich wie das HL-Register für Speicheroperationen und 16 Bit-Rechnungen, dazu kamen eine Fülle von Befehlen: Blockoperationen, In/Out, Bitweise Rotation / Verschiebung. Aus den 57 Befehlen des "8080" machte der "Z80" über 600! Das kostete aber Zeit beim Dekodieren. Ein Befehl konnte zwischen einem und 5 Byte lang sein. Die Ausführung dauerte zwischen 4 und 28 Takte. 

Wie einfach war dagegen das Design des "6502", nur drei Register à 8 Bit, sogar nur ein 8 Bit-Stackpointer. Der Stack lag fest zwischen Adresse 256 und 511 und über die Indexregister konnte man die Adressen 0 bis 255 ansprechen (und darüber das restliche RAM). Man konnte aber diese 256 Byte RAM auch als 256 zusätzliche Register ansehen, denn bei Erscheinen des "6502" waren die RAM's schneller als Mikroprozessoren. Zudem waren die Befehle schnell zu dekodieren (in 1-2 Takten), da der "6502" sowohl aufsteigende wie absteigende Flanke des Taktsignales nutzte (so konnte man die Taktfrequenz im Vergleich zu einem "8080" oder "Z80" schon halbieren). 

So verschieden die Designs waren, in der Realität waren beide erfolgreich. Zwar war der "6502" bei gleicher Taktfrequenz schneller als ein "Z80", aber das glich sich dadurch aus, daß dieser meist zwischen 1-2 MHz lief, während der "Z80" 3-4 MHz aufwies. Ab 1983 wurden noch schnellere "Z80"-Versionen herausgebracht, die bis 10 MHz gingen. Diese Entwicklung war beim "6502" nicht möglich, da er zwingend auf das schnelle RAM angewiesen war. Dafür war ein "6502" immer ein Stück preiswerter, weil er einfacher herzustellen war. 

Der wohl radikalste Ansatz von RISC im 8 Bit Zeitalter war der relativ selten eingesetzte RCA "1802". Der Prozessor war mit nur 16 Befehlen ausgestattet, lief dafür schon 1975 mit 6 MHz, während der "6502" mit einem und der "8080" mit 2,5 MHz eingeführt wurden. Er spielte auf dem Heimcomputermarkt keine Rolle, steckt dafür aber in zahlreichen Raumsonden, da er technisch sehr robust und wenig anfällig gegenüber statischer Elektrizität war. 

Intel und der IBM PC

Der Intel "8086" ist ebenfalls ein typischer Vertreter von CISC. Er wurde im "IBM PC" verwendetet. Die Rechenleistung der x86-Architektur galt spätestens ab 1986 als das Maß aller Dinge. Grund für das CISC-Design war, daß man, um Entwicklungskosten und Zeit zu sparen, das "8080"-Design aufgebläht hatte. Dadurch hatte der x86 einige Macken, die seine Architektur komplex machten. Die wichtigste war, daß er direkt nur 3 Segmente (Code, Daten und Stack) à 64 KB ansprechen konnte. Diese Fenster wurden in einem Adreßraum von 1 MB verschoben. Als man mit dem 286er die Architektur auf volle 16 MB Adreßraum erweiterte und später mit dem 386er sogar auf 4 GB bei 32 Bit, blieb die alte "Real Mode" als zusätzlicher Modus immer noch erhalten. Zudem konnte man nicht einfach neue Register einführen, obwohl der Befehlssatz der x86-Serie im Laufe der Zeit erweitert wurde. 

(...)

Die Renaissance von RISC

Nun änderte sich aber auch in der Programmierung bis Mitte der 80er Jahre etwas. Bis zum "8086", mit seiner begrenzten Rechenleistung und kleinem Speicher, war es nötig, für schnelle Programme in Assembler zu programmieren. Bei der Einführung des viermal schnelleren 286er samt mehr Speicher, gewannen aber Programme die mit Hochsprachen wie C entwickelt wurden immer mehr Bedeutung und Assembler wurde auf kleine systemnahe Routinen beschränkt. Nun ergaben aber Untersuchungen, daß Compiler weitaus weniger als der menschliche Programmierer den Befehlssatz eines Prozessors ausschöpften. 80% des Compilercodes verwendeten nur 20% der Befehle, ja bestimmte Befehle wurden überhaupt nicht verwendet. Dies liegt daran, daß Compiler ein sehr starres Muster haben. Mehr noch, viele Vorteile von CISC, mächtige Befehle, die nur mit einem bestimmten Register arbeiteten, wurden oft gar nicht genutzt. Dies liegt auch am starren Vorgehen eines Compilers. Dieser hat nicht mehrere Codealternativen vorrätig, sondern eben nur eine Version und verwendet dazu idealerweise die Befehle, die mit allen Registern arbeiten. 

Dies war die Renaissance von RISC. Ende der 80er Jahre bauten nahezu alle Hersteller RISC-Prozessoren. Die gemeinsamen Merkmale waren: Wenige, schnell zu dekodierende Befehle, einheitliches Befehlsformat und schnelle Dekodierung. Die einzelnen Konzepte waren durchaus unterschiedlich. RISC war auch eine Möglichkeit, mit relativ wenigen Transistoren eine sehr hohe Rechenleistung zu erreichen. Dies war wichtig für Hersteller denen im Prozessormarkt von Intel immer mehr Marktanteile entzogen wurden. Motorola schuf zusammen mit Apple und IBM den "Power PC Chip". Der Chip hatte dadurch sehr unterschiedliche Anforderungen zu erfüllen: Apple und Motorola wollten einen Nachfolger für die in die Jahre gekommene "68000"-Serie, so konnte dieser deren Befehle emulieren. IBM wollte aber gleichzeitig einen schnellen Prozessor für Minicomputer und sogar Großrechner. Der "Power PC" ist sehr erfolgreich und hat seit 1993 schon die vierte Generation erlebt. Erst mit dieser ist die Einführung eines Passivkühlers notwendig geworden, bei sonst ähnlicher Rechenleistung wie ein Pentium-Pendant (aber immer etwas niedrigerem Takt). 

Eine traurige Rolle spielte der "ARM"-Prozessor. Die meisten neuen RISC-Prozessoren waren für Workstations gedacht. Doch Acorn, eine in England bekannte Firma, brachte 1988 einen PC mit diesem Prozessor heraus, der es mit einem 386er aufnehmen konnte- zu einem Bruchteil der Kosten. Doch es fehlte der Firma an Bekanntheit, um dieses Gerät, den "Archimedes", zu etablieren. ARM hat die Zeichen der Zeit erkannt und den "ARM"- Prozessor als Microcontroller erfolgreich gemacht. "ARM"-Prozessoren haben im 32 Bit- Mikrocontroller-Bereich einen Marktanteil von 70% und werden in Lizenz von zahlreichen Unternehmen, sogar von Intel, gefertigt. 

Sun läutete mit der "Sun 4" und dem "SPARC"-Prozessor 1987 als erste Firma den Wechsel ein. Der "SPARC" hatte in der ersten Version nur 55.000 Transistoren, aber eine höhere Geschwindigkeit als ein 386er mit 275.000 Transistoren. Spezielle Features machten vor allem die Hochsprachenprogrammierung auf diesem Prozessor schnell. Bald zogen andere Workstation-Hersteller wie MIPS oder DEC mit ihrem "Alpha", der bis heute die Krone in der Geschwindigkeit hält, nach. 

Eine Besonderheit waren die Transputer-Prozessoren von INMOS. Mehrere dieser Prozessoren konnten zusammengeschaltet werden und parallel an einem Problem arbeiten. Die Abbildung der zeitgleich erschienenen Prozessoren "Intel 80386" und "INMOS T400" zeigt auf dem Prozessor die Unterschiede zwischen CISC und RISC:

Große, gleichförmige Felder beim "T400" mit viel interen Registern und 1 KB Cache on Board:

"Rauh" wirkende Felder beim "80386" mit Logikfunktionen, die erheblich mehr Transtistoren erfordern: 

Der "INMOS T400" war trotz geringerer Integrationsdichte schneller als der "80386". 

Wodurch wird RISC schnell?

Nun, dazu muß man wissen wie ein Befehl von einem Mikroprozessor ausgeführt wird. Jeder Prozessor hat mindestens 4 elementare Operationen pro Befehl auszuführen: 

  • Daten vom Speicher holen. 

  • Daten dekodieren, d. h. feststellen, was für ein Befehl gemeint ist. 

  • Befehl ausführen. 

  • Daten in Register / Speicher zurückschreiben. 

Für jede Stufe braucht ein Prozessor mindestens einen Taktzyklus, meistens aber mehrere. Nun gibt es hier einige Dinge die wichtig sind: 

  • Die Daten vom Speicher zu holen benötigt Zeit. Speicherbausteine sind langsam im Vergleich zu einem Prozessor. 

  • Je mehr und je komplexere Befehle ein Prozessor hat, desto länger dauert das Dekodieren 

CISC-Prozessoren haben nun folgende Strategie: Das Dekodieren dauert hier länger, da der Code kein einheitliches Format hat, dafür aber sehr kurz ist (geringerer Speicherzugriff). Als Ausgleich können die Befehle mehr, so das weniger ausgeführt werden müssen. Viele Register sind, wegen der Forderung nach kurzem Code, nicht möglich. Die komplexen Befehle werden im Chip in einfachere Instruktionen zerlegt. Dafür gibt es Microcode- ein ROM auf dem Chip. 

(...) 

RISC versucht die Speicherzugriffe auf zwei Weisen zu minimieren: 

  • Viele Register. Die Daten können in diesen gehalten werden. Bei den meisten Befehlen fallen die Angaben von Speicheradressen weg. Idealerweise gibt es nur einen Befehl der direkt mit dem Speicher kommuniziert- einen Lade- und Speicherbefehl. Alle anderen Befehle arbeiten mit Registern und sind dementsprechend schnell. Als weiteren Vorteil entfallen die zusätzlichen Zyklen für einen Speicherzugriff. RISC-Prozessoren verfügen je nach Typ zwischen 32 und 256 Registern, die universell benutzt werden können. CISC-Typen, wie der Motorola "680x0" oder Intel "80x86", haben 16 bzw. 12 Register. 

  • Einheitliches Befehlsformat. 

 (...)

CISC-Prozessoren müssen sich viel einfallen lassen, um die verschiedenen Kombinationsmöglichkeiten in einer Pipeline zu dekodieren. Die Pipelines sind dort lang, weil es so viele Möglichkeiten gibt und man deswegen mehr Stufen benötigt. RISC-Prozessoren wissen dagegen genau, wo der nächste Befehl beginnt und können mehr automatisieren. Die Pipeline ist kürzer. Das ist von Vorteil, wenn ein Sprung im Programm kommt, denn dann stimmen alle Daten in der Pipeline nicht mehr. 

Die Forderung nach einfachen Befehlen erwächst auch hieraus: Das schnelle Dekodieren der Befehle im "Fließband" hat nur einen Vorteil, wenn auch die Befehle schnell ausgeführt werden, denn sonst hat man nichts von dem Geschwindigkeitsvorteil.
Daher gibt es nur elementare Befehle, die idealerweise in einem Takt ausgeführt werden. 

Intel
's Sieg - Ein CISC Sieg?

Selbst INTEL brachte 1989 einen RISC-Prozessor heraus, den "Intel 860". Doch bei Intel waren Kunden nicht bereit, sich vom althergebrachten PC-Standard zu lösen. Mitte der 90er Jahre hatte Intel seine x86-Reihe soweit gesteigert, daß er nun auch mit Multiprozessorsystemen in den Markt der RISC-beherrschten Workstations eindrang. Dank Rückgriff auf PC-Hardware waren diese deutlich billiger herzustellen. Nun rächte es sich, daß Hersteller wie Sun, Silicon Graphics oder DEC den PC-Markt nie beachteten.
Als dann etwa zur gleichen Zeit auch vermehrt Netzwerke ihren Einzug in Firmen hielten, blieben die Kunden, die bisher PC's hatten, auch bei dem was sie kannten: Server mit x86-Hardware und "Windows NT", anstatt Workstations und "UNIX". 

Den Endverbraucher interessiert das "was hinten rauskommt", um einen Bundeskanzler zu zitieren. Was nützt es, wenn ein Power-PC mit 450 MHz und passivem Kühler genauso schnell ist, wie ein Pentium III mit 700 MHz und aufwendigem Kühler? Solange ein PC billiger als ein Mac ist, weil er viel häufiger hergestellt wird, geht die Rechnung zugunsten des PC auf. Und Intels Prozessoren können mithalten. Anstatt den Prozessorcode zu verändern, steigerte man die Taktfrequenz, integrierte L1- und L2-Cache in den Kern, um die Geschwindigkeit zu steigern. 

Cisc hat also gesiegt- oder?

Nein! Zum einen gibt es zahlenmäßig erheblich mehr RISC- als CISC-Prozessoren. Denn zum Einsatz kommen Sie überall dort, wo keine IBM-Kompatibilität verlangt wird: Als Druckercontroller, in PDA's (wegen dem Stromverbrauch), in den Spielkonsolen und in
zahllosen Elektronikbauteilen im Auto (Ein Mittelklassewagen besitzt zwischen 13 und 30 Mikroprozessoren, die meisten als "Embedded Controller"). 

Zum andern gibt es heute die Trennung CISC und RISC nicht mehr. Intels erster 64 Bit- Prozessor "Itanium" hat Anleihen an RISC gemacht. Die RISC-Prozessoren wurden mit der Weiterentwicklung auch komplexer und nähern sich CISC. Schlußendlich aber gibt es die CISC-Architektur des x86 Prozessors nicht mehr... 

Bei Intel hat sich seit dem 486er einiges getan. Der 486er kam 1989 raus und zeigte, daß die x86-Architektur so langsam am Ende war.
Durch eine 5-stufige Pipeline konnte man nun 80% der Befehle in einem Taktzyklus ausführen- schneller ging es mit der x86-Architektur nicht, trotzdem war der 486er nur ca. 60% schneller als ein 386er und lange Zeit zu teuer. Erst 1993 konnten die Verkäufe die des 386er überflügeln, wobei Intel noch geärgert haben dürfte, daß vorher AMD mit der 40 MHz-Version des 386er (Intel hatte nur eine 33 MHz-Version), das große Geschäft machte. 

Kurzum: Der 486er- Nachfolger "Pentium" mußte kompatibel und neu sein. Was Intel machte, war folgendes: Nach dem Dekodieren der Befehle, werden diese in einfachere RISC-Befehle übersetzt, umgruppiert und zwei Rechenwerken die reine RISC-Maschinen sind, zugeführt. Seit dem "Pentium Pro" ist dies so, und ein "Pentium IV" ist im Prinzip ein guter x86-Emulator. Eine x86-Instruktion kann dabei eine, aber auch 3 oder 4 einfache RISC-Operationen umfassen. Dabei sind diese relativ lang, beim "Pentium III" 118 Bit. Beim "Pentium IV" wahrscheinlich nur etwa die Hälfte. 

(...) 

Mit dem neuen 64 Bit "Itanium"-Prozessor wird auch bei Intel eine RISC-Einheit mit 128 Registern einziehen. 

Der neue 64 Bit-Modus ist eine richtige RISC-Architektur mit konstanter Befehlsbreite von 41 Bit, wobei zur Optimierung 3 Befehle zu einem 128 Bit-Doppelwort zusammengefaßt werden- der Compiler, und nicht der Prozessor, soll in den verbleibenden 5 Bit's Informationen über die Abhängigkeit der Befehle speichern. Dadurch will man die aufwendige spekulative Ausführung und Umgruppierung der x86-Serie erleichtern. 

(...)


Kontakt: www.bernd-leitenberger.de


Zurück