Home | Computer | Prozessor Basics | Site Map |
In meiner kleinen Reihe über Rechnerarchitekturen wurde schon beschrieben, wie man mit Pipelines die Durchlaufzeiten eines Befehls reduzieren kann oder mit Caches die Langsamkeit des Speichers austricksen kann. RISC und CISC sind dagegen Architekturkonzepte die den Befehlssatz betreffen, ähnlich wie die Konzepte von SIMD und VLIW. Dieser Artikel informiert sie über die Konzepte von CISC und RISC. Es gibt noch einen zweiten Artikel über die genauen Unterschiede der beiden Architekturen.
RISC und CISC stehen für die Begriffe Reduced Instruction Set Computer bzw. Complex Instruction Set Computer. Bei den Begriffen CISC und RISC geht es darum, wie die CPU eines Computers arbeitet. Damit sind zwei grundsätzliche Philosophien im Computerbau gemeint, sie ich im folgenden vorstellen will. Anders als andere Architekturentscheidungen betreffen diese den Befehlssatz und sind daher eine Designwahl, die später nicht mehr rückgängig zu machen ist, oder wenn nur mit hohem Aufwand.
Wenn man den Maschinencode für eine CPU erstellt, muss man sich entscheiden welche Befehle man implementiert und welche nicht. Weiterhin ist von Bedeutung wie viele Register, also interne Speicherplätze eine CPU hat. Ziel ist es einen schnellen und einen kompakten Code zu haben. Dies sind Forderungen die sich "beißen".
Dazu ein Beispiel. Jeder Befehl den eine CPU hat bekommt einen Opcode, eine Binäre Zahl. Schon einfache CPU's haben etwa 50-60 Befehle, brauchen also mindestens 6 Bit für den Opcode (26 = 64). Nun haben die meisten Befehle aber auch Daten angehängt, z.B. Zahlen die in ein Register geladen werden, oder auch nur Registernamen, die ja auch Speicherplätze sind.
Register haben den Vorteil, dass sie in der CPU liegen, man also nur wenige Bits braucht um sie zu adressieren. Hat eine CPU beispielsweise 8 Register, so braucht sie nur 3 Bits (2³ = 8) um eines anzusprechen. Üblicherweise arbeiten die meisten Befehle mit mehreren Registern, wie folgende Beispiele zeigen:
MOV R1,R2 ; Bewege Inhalt von R1 nach R2
ADD R1,R3 ; Addiere R1 und R3, Ergebnis in R1: 2 Register Architektur
ADD R1,R2,R3 ; Addiere R1 und R2, Ergebnis in R3: 2 Register Architektur
Für den ADD Befehl wurde exemplarisch zwei Architekturen vorgestellt. Bei Intels IA86 Architektur (8086...Pentium 4) überschreibt das Ergebnis eines Befehls eines der Quellregister. Bei der Architektur des Power PC (IBM/Motorola) wird das Ergebnis dagegen in einem neuen Register angelegt. Man nennt dies 2 bzw. 3 Adress- oder 2/3 Registerarchitektur.
Weiterhin braucht man oft noch einige Bits für Modi. So beherrschen viele Prozessoren z.B. das Aufteilen eines 32 Bit Registers in zwei 16 Bit Register. Auch dafür gibt es meist ein Bit das anzeigt ob dieser Modus aktiv ist und welche Hälfte des 32 Bit Registers benutzt wird. Andere Modi markieren Adressierungsmöglichkeiten (direkt, Register, indiziert, indirekt).
Das alles soll in den Befehl gepackt werden. Wie viele Bits braucht man nun? Nehmen wir mal an wir brauchen 6 Bit für den Opcode, 2 Bits für Modi, so ist schon ein Byte voll. Soll der Code also nicht länger als 2 Bytes werden, so kann man in dem zweiten Byte bei einer 2 Register Architektur jeweils 4 Bit für ein Register nutzen (maximal 16 Stück), bei einer 3 Register Architektur sogar nur 2-3 Bit also maximal 4-8 Register.
Bei einer Architektur hat man also zu wählen, ob man viele Register haben will, mit wenigen Befehlen oder viele Befehle und weniger Register.
CISC versucht dieses Problem wie folgt zu lösen: Die Befehle sind hier sehr "mächtig", d.h. sie können viel. Das können zum einen komplexe Befehle wie für die Multiplikation und Division sein, es können aber auch nur Befehle sein die einige einfache Befehle zusammen fassen.
So haben CISC Architekturen z.B. oft einen Befehl wie "Dekrementiere Register und Springe wenn nicht 0". Ein solcher Befehl wird z.B. benutzt bei einer Schleife, wo in einem Register ein Wert heruntergezählt wird und die Schleife solange wiederholt wird, bis der Wert 0 erreicht. Das ersetzt zwei Befehle: Dekrementiere Register und Springe wenn Zero Flag nicht gesetzt ist.
Andere Spezialbefehle sind Architekturspezifisch, so beinhaltet die IA86 Architektur z.B. Befehle zum Vergleichen , Kopieren und Durchsuchen von Speicherblöcken. Auch die vielseitige Nutzung von Registern lässt die Zahl der Befehle indirekt explodieren. Die Intel IA86 Architektur erlaubt es z.B. ein 16 Bit Register aufzuteilen in zwei 8 Bit Register und diese separat anzusprechen. Als diese Architektur später auf 32 Bit erweitert wurde konnte man ein 32 Bit Register wie zwei 16 Bit Register verwenden. Die Zahl der Befehle ändert sich zwar nicht, doch im Opcode müssen nun ein paar Bits sagen "Dieser Befehl gilt nur für die untere Hälfte eines 16 Bit Registers". Das ist gleichbedeutend, wie wenn man mehr Befehle / Adressierungsmodi zur Verfügung hätte.
Wie soll man nun den Code klein halten? Nun das wird bei CISC auf mehrerlei Weise getan:
Bisher gingen wir von einer einheitlichen Länge des Opcodes aus. In der Praxis ist dies nicht so, denn natürlich gibt es auch Befehle mit Daten (Werten oder Adressen), die dann dem Opcode folgen. Doch bei CISC ist auch oft der Opcode unterschiedlich lang. Der Ansatz ist der, dass man sagt: OK, die wichtigsten Befehle will ich in 2 Bytes unterbringen. Die anderen dürfen ein drittes Bytes belegen. Man nimmt dann einen Eintrag der Opcodeliste und diese sagt der CPU nichts anderes als: "Hole das nächste (dritte) Byte, da ist der Befehl drin. Mit diesem Trick kann man in dem dritten Byte natürlich viele neue (maximal 256) Befehle unterbringen.
Das Problem ist nur, das dies das Dekodieren erschwert, da man nicht im Voraus weis, wie lang ein Befehl ist. Dafür ist der Code, obwohl er viele Befehle nutzt, sehr kompakt.
Obgleich niemand verbietet eine CISC Architektur mit vielen Registern aufzubauen, verwenden die meisten CISC Architekturen wenige Register. Viele Register blähen den Code auf und CISC ist eine Architektur, die in den sechziger bis Anfang der achtziger Jahre ihre Blütezeit hatte, als Speicher noch knapper als heute war. Man findet bei CISC auch seltener 3 Registerarchitekturen denn das dritte Register belegt auch weitere Bits. Weiterhin brauchen Register und ihre Logik auch Transistoren auf der CPU und eine CISC CPU braucht für die vielen Befehle mehr Transistoren als eine RISC CPU. Daher verwenden CISC Architekturen wenige Register, typischerweise 4-8.
Wie schon erläutert sind die komplexeren Befehle einer CISC Architektur auch durch einfache Instruktionen ersetzbar. Nur braucht man nicht einen Maschinenbefehl, sondern 2-4 dazu. Das gilt auch für sehr komplexe Instruktionen für die Multiplikation die man durch ein kleines Maschinenprogramm ersetzen kann.
Eine CISC CPU macht nichts anderes. Sie hat einen Hardwareinterpreter an Bord, der die komplexen CISC Befehle in einfachere Befehle, genannt Mikrocode oder Mikroops zerlegen. Damit werden die komplexeren Befehle auf einfachere Befehle zurückgeführt. Gegenüber mehreren Einzelbefehlen ist dies trotzdem schneller, da nicht mehrere Befehle aus dem Speicher geholt und dekodiert werden müssen (für den Ablauf einer Befehlskodierung siehe Artikel über Pipelines).
Wie schon erläutert, begrenzt die Befehlszahl der Umstand, das der Code neben dem Opcode auch die Register aufnehmen muss, die zu dem Befehl gehören. Doch was ist wenn man diese Angabe einsparen kann? Dann kann man mehr Befehle verwenden, da diese Bits unbenutzt sind. CISC Architekturen haben daher oft Befehle die eines oder bestimmte Register implizit benutzen, ohne dass man es dafür angeben muss. Man kann dann nur dieses Register benutzen, doch der Opcode wird kleiner. Hier einige Beispiele vom Intel 8086 Prozessor und seinen Nachfolgern.
Diese Register sind aber für normale Rechenoperationen voll nutzbar. Weitere Register sind dagegen nur eingeschränkt nutzbar und werden für die Stringbefehle des 8086 benutzt. Dies sind die Register Source Index (SI) und Destination Index (DI). In ihnen werden die Startadressen der Strings bei den Stringbefehlen erwartet.
RISC ist ein anderer Ansatz den Maschinencode zu entwerfen. Man beschränkt sich auf die wirklich notwendigen Befehle. Verzichtet also bewusst auf Befehle, die bei CISC einem Programmierer das Leben erleichtern und schneller ausgeführt werden. Der Sinn dieser Beschränkung ist zuerst nicht verständlich. Dies scheint doch nachteilig zu sein. Doch natürlich kompensiert RISC diesen Nachteil durch andere Vorteile.
Es stellt sich nun die Frage, was ist ein einfacher Befehl? Im allgemeinen versteht man darunter einen elementaren Befehl, der nicht einfach durch eine Kombination anderer Befehle ersetzt werden kann. Bestimmte Befehle sind einfach, weil die entsprechende Logik auf einer CPU einfach zu realisieren ist. Dies sind z.B. logische Operationen (AND, OR, XOR, NOT), das Schieben von Bits über ein Register, die Addition und Subtraktion und Inkrement und Dekrement Befehle. Weiterhin gehören dazu Vergleiche (CMP), Sprünge, Unterprogrammaufrufe und Stackoperationen (PUSH/POP). Die 8 Bit RISC Architektur RCA 1802 kommt so auf 36 Befehle, während die 8 Bit CISC Architektur Z80 auf 78 Befehle kommt.
Die absolute Befehlszahl sagt allerdings nichts aus, es kommt auf den Vergleich zwischen Architekturen an. So ist z.B. ein Multiplikations- und Divisionsbefehl bei einer 16 Bit CPU eher ein Merkmal für eine CISC Architektur, während selbst einfache 32 Bit RISC Architekturen diese Befehle implementiert haben. Denn immer wird eine 32 Bit Architektur etwas mehr können als eine 16 Bit Architektur.
Weniger komplexe Befehle erlauben es die CPU mit weniger Transistoren zu entwerfen. Sie wird dadurch billiger. In einem Markt in dem der Preis zählt, wie bei den Mikrocontrollern haben sich RISC Chips daher weitgehend durchgesetzt. Weniger Transistoren bedeutet auch kleineres "Die" (Die Chipfläche) und damit eine höhere Taktrate, wodurch wiederum ein Geschwindigkeitsvorteil entsteht.
Die Ausführung des Codes kann man beschleunigen, wenn man ihn leichter dekodieren kann. CISC Code hat eine hohe Variabilität in der Länge. RISC Architekturen versuchen ein einheitliches Codeformat zu etablieren das schneller dekodiert werden kann und vor allem für die Einführung einer Pipeline das Vorrausschauende Laden und dekodieren erlaubt. Dies geht weil man keine Extrabytes für seltene Befehle benötigt. Bei der SPARC Architektur ist ein Befehl immer 32 Bit lang. Werden Daten oder Adressen benötigt so sind diese auch immer 32 Bit lang. Der Befehlsdekoder kann also immer 32 Bit auf einmal verarbeiten und muss nicht zuerst wie bei CISC schauen ob noch ein weiteres Opcodebyte folgt.
CISC kann einige komplexe Befehle schneller ausführen. Da RISC nun mehrere Befehle braucht, um eine CISC Operation zu ersetzen, will man sowohl den Mehrverbrauch an Speicher begrenzen, wie auch die Geschwindigkeit steigern. Dies geschieht durch mehr Register in der CPU, so dass man weniger oft auf den Speicher zugreifen muss. Auch erlaubt die geringere Komplexität der CPU mehr Register.
Dadurch kann man mehr Daten in den Registern halten und braucht weniger Befehle die auf den Speicher zugreifen. Der Speicherzugriff ist "teuer", denn Speicher ist langsamer als die CPU und die Dekodierung der Befehle braucht durch den zusätzlichen Speicherzugriff länger. Vor allem aber wird der Code durch die Adressen, die man zur Adressierung anfügen muss, länger.
Oftmals verzichten RISC Architekturen auch auf die bei CISC übliche Unterteilung von Registern in kleinere Unterregister. Dadurch spart man sich die Bits für die Kennzeichnung, welche Hälfte eines Registers benutzt wird ein, und vereinfacht die Logik. Die größere Registerzahl erlaubt es trotzdem effektiv zu arbeiten, weil man einfach ein größeres freies Register nimmt.
Da die Registerzahl beim Opcode angehängt werden muss, wird dieser länger - RISC Architekturen verfügen über 16 bis 128 Register und verfügen auch häufig über eine 3 Adressarchitektur. Um dies nicht ausufern zu lassen, gibt es hier auch Techniken wie bei dem SUN SPARC Prozessor. Dieser hat 128 Register, die aber in Gruppen von jeweils 32 ansprechbar sind, zwischen denen man per Befehl wechseln kann. Dadurch reduziert man bei seiner 3 Adressarchitektur den Opcode um 3 × 2 = 6 Bits.
Während CISC die komplexen Befehle in einfachere Mikroops zerlegt werden, können die einfachen RISC Befehle direkt ausgeführt werden. Der Zwischenschritt des Interpreters ist also nicht nötig. Der Decoder für die Befehle kann direkt an die Logik angebunden werden, wodurch die Befehle schneller ausgeführt werden. Man nennt dies auch Hardwareverdrahtung.
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 diese, und um so weniger Speicherplatz benötigt der Code. (Speicherplatz war schon immer knapp).
Auch bei den ersten Mikroprozessoren war CISC vorherrschend. Der erste 8 Bit Prozessor Intel 8080 war ebenso wie der kompatible und später enorm erfolgreiche Z80 ein typisches CISC Design. Es schien das ökonomisch vernünftigste zu sein. CISC brauchte weniger Speicher und vereinfachte das Programmieren in Assembler. Eine Maschine aber zeigte was RISC bedeutete:
Es war die Cyber CDC 6600, der erste Supercomputer des legendären Computerbauers Seymour Cray. Die Cyber war darauf getrimmt schnell zu sein - Sie schaffte bei ihrer Einführung 1965 schon stolze 9 Megaflops. Die Cyber war ein Computer mit einer Arbeitsbreite von 60 Bit. Zur Verfügung standen 16 Register zum Adressieren (18 Bit Breite) und ganze 60 Datenregister à 60 Bit. Die Cyber nahm mit 2 Recheneinheiten schon das vorweg, was der Pentium erst 30 Jahre später schaffte: Das Pipelining von 2 Recheneinheiten, im Gegensatz zum Pentium waren aber diese unabhängig voneinander. Dafür hatte die CDC 6600 nur 64 Maschinenbefehle - genau so viele wie in ein Byte von 6 Bits passten. Zum Vergleich der 8086 hatte 90 Maschinenbefehle und seitdem sind viele weitere hinzugekommen.
Um maximale Performance zu schaffen, hatten alle Befehle ein einheitliches Format: Eine Länge von 30 Bit, zusammen mit einem Halben Datenwort von 30 Bit. So hatten alle Befehle eine einheitliche Länge von 60 Bit. Der Lohn war die Geschwindigkeit. IBMs Standardmodell IBM 360 erreichte zur gleichen Zeit nur 330 KFlops, die Cyber 6600 war also nahezu 30 mal schneller als ein "normaler" Großrechner.
Obgleich die Cyber sehr erfolgreich war, und die Basis für Seymour Crays spätere Supercomputer war, inspirierte sich keine anderen Computer dieser Zeit. Bei den üblichen Großrechnern blieb man lieber bei CISC. Erfolgreich war dagegen 10 Jahre später der Prozessor MOS 6502, der auch im Apple II steckte. Durch sein RISC Konzept war er sehr preiswert herzustellen und schon bei niederen Taktraten sehr schnell. Ein ähnliches, noch heute erfolgreiches Design ist die MC 68HCxx Architektur von Motorola.
Die meisten 16 Bit Prozessoren die Ende der siebziger Jahre / Anfang der achtziger Jahre erschienen waren aber CISC Designs. Manche weil sie sich evolutionär aus 8 Bit Prozessoren entwickelt hatten, wie der Intel 8086. Andere, weil sie meinten ein 16 Bit Prozessor müsste erheblich mehr können, als ein 8 Bit Prozessor, wie z.B. der Z8000.
Nun änderte sich aber auch in der Programmierung bis Mitte der achtziger Jahre etwas. Bei der Einführung von Computern mit 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, das 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, das 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. Auch dies liegt auch am starren Vorgehen eines Compilers. Dieser hat nicht mehrere Codealternativen vorrätig - Eine wenn man Register X benutzen kann, eine andere wenn man Register Y benutzen kann, sondern eben nur eine Version und verwendet dazu idealerweise die Befehle die mit allen Registern arbeiten.
Impulse kamen vor allem aus den Hochschulen. Dort entwarf man Designs auf Basis von programmierbaren Schaltungen, mit denen man schon damals einen eigenen Prozessor entwerfen konnte. Doch diese mussten einfach sein, und so waren dies RISC Designs. Viele dieser Ideen fanden durch die Absolventen Niederschlag in zahlreichen Computerfirmen, die nun an die ersten 32 Bit Prozessoren gingen. Der erste kommerzielle RISC Mikroprozessor MIPS 2000, basierte auf einem im Jahre 1981 entwickelten Designs am MIT.
Dies war die Renaissance von RISC. Ende der achtziger Jahre bauten nahezu alle Hersteller RISC Prozessoren. Das gemeinsame Merkmal waren: Wenige, schnell zu dekodierende Befehle, einheitliches Befehlsformat und schnelle Dekodierung. Die einzelnen Konzepte waren durchaus unterschiedlich: RISC war 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 erschuf 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 1992 schon die fünfte Generation erlebt.
Eine traurige Rolle spielte der ARM Prozessor. Die meisten neuen RISC Prozessoren waren gedacht für Workstations. Doch Acorn - eine in England bekannte Firma, brachte 1988 einen PC mit diesem Prozessor heraus, der es mit einem 386 er 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 Mikrocontroller 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. Die meisten PDAs mit Windows CE benutzen diesen Prozessor, da er schnell und stromsparend ist. Inzwischen hat selbst Intel die ARM Technologie lizenziert und fertigt XScale Prozessoren für PDAs.
Sun läutete mit der Sun 4 und dem SPARC Prozessor 1987 als erste Firma den Wechsel vom 68000 zu RISC ein. Der SPARC hatte in der ersten Version nur 55.000 Transistoren, aber eine höhere Geschwindigkeit als ein 386 er mit 275.000 Transistoren. Spezielle Features machten vor allem die Hochsprachenprogrammierung auf diesem Prozessor schnell. Bald zogen andere Workstation Hersteller nach, wie MIPS oder DEC mit dem Alpha.
Eine Besonderheit waren die Transputer Prozessoren von INMOS. Mehrere dieser Prozessoren konnten zusammengeschaltet werden und parallel an einem Problem arbeiten. Die Abbildung der zeitgleich erschienen 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 internen Registern und 1 KByte Cache on Board und "rauh" wirkende Felder beim 80386, mit Logikfunktionen die erheblich mehr Transistoren erfordern. Der INMOS T400 war trotz geringerer Integrationsdichte schneller als der 80386.
Nach Einstellung der Motorola MC 68000 Serie gab es Anfang der neunziger Jahre nur noch zwei CISC Designs von Marktbedeutung. Intels IA86 Architektur und Hewlett Packards PA Serie. Inzwischen hatten Prozessoren mehrere Recheneinheiten um die Leistung zu erhöhen. Pipelines um die Dekodierung von Befehlen zu beschleunigen, Caches um die Speicherzugriffe zu minimieren. Je komplexer ein Befehl ist, desto schwieriger macht er es diese Einheiten auszulasten ohne Staus zu produzieren und die Last gleichmäßig zu verteilen.
Selbst INTEL brachte 1989 einen RISC Prozessor heraus, den Intel 860. Doch es waren die Kunden nicht bereit, sich vom althergebrachten PC Standard zu lösen. Der Prozessor ist zwar heute als Mikrocontroller verbreitet, doch er konnte sich nicht als Prozessor in PCs oder Workstations durchsetzen.
Andererseits konnte es so wie bisher auch nicht bei der IA86 Architektur weitergehen. Der Intel 486 Prozessor war praktisch der Endpunkt der CISC Architektur. Obgleich schon 1989 erhältlich, war er lange Zeit so teuer, dass die Käufer lange Zeit den billigeren 386 Prozessor bevorzugten. Intel suchte nun nach Wegen den Befehlssatz beizubehalten, aber die interne Arbeitsweise des Prozessors zu verändern.
Dies geschah bei dem Pentium Prozessor. Der interne Aufbau des Prozessors wurde völlig verändert, und nun arbeitet dort ein RISC Kern. Dieser versteht einfache RISC Operationen in einem einheitlichen Format und verfügt über mehr Register, als die CPU nach außen hin sichtbar macht, (um Zwischenergebnisse zu speichern und mehrere Recheneinheiten parallel zu betreiben). Der Befehlsdekoder zerlegt die komplexen Befehle des Pentium in einfachere RISC Mikroops, die dann von dem RISC Kern ausgeführt werden. Bei einfachen Befehlen kann ein x86 Befehl einer RISC Operation entsprechen, doch komplexere werden in zwei oder 3 RISC Operationen zerlegt.
Mit diesem Trick konnte Intel in der Performance mit RISC Designs mithalten und dank des hohen Absatzes kann man die höheren Entwicklungs- und Produktionskosten auch auf mehr Prozessoren (PC Kunden) umlegen. Der einzige Nachteil für den Verbraucher ist ein erhöhter Stromverbrauch. Ein CISC Design braucht mehr Transistoren als ein RISC Design und ein CISC zu RISC Übersetzer ebenfalls.
Man sollte bei der Einteilung nicht vergessen, dass die Einteilung in RISC oder CISC keine entweder/oder Einteilung ist. Es gibt nur wenige Beispiele für radikale RISC Designs oder radikale CISC Designs. Beide Extreme konnten sich auf dem Markt nicht durchsetzen. Das gilt sowohl für das radikale RISC Design des RCA 1802, der nicht einmal einen CALL Befehl hatte, wie auch für das radikale CISC Design Intel iAPX 432, bei dem man 3 Chips für die CPU brauchte und das Komplexe Design eine Zeitverzögerung von 3 Jahren ergab.
Die meisten Design haben daher einige RISC und einige CISC Eigenschaften. Vor allem aber bleiben Architekturen nicht stehen. Es kommen laufend neue Eigenschaften hinzu: Neue Befehle, Architekturerweiterungen wie MMX, SSE oder Altivec. Dadurch werden selbst RISC Designs allmählich komplexer und wandern mehr in Richtung CISC. Der Power PC hat seit 1992 nun schon die 5.te Generation erlebt und sein Design ist deutlich komplexer geworden, der Stromverbrauch und die Transistorenzahlen sind bei den beiden letzten Generationen deutlich angestiegen. Um dies zu verdeutlichen, hier eine Aufstellung der Zunahme an Befehlen der IA86 Architektur der letzten 25 Jahre.
Prozessor | Instruktionen | Adressierungsmodi | Jahr |
---|---|---|---|
8086 | 92 | 49.000 | 1978 |
80186 | +8 | 51.000 | 1981 |
80286 | +16 | 53.000 | 1982 |
80386 | +54 | 8.600.000 | 1985 |
80486 | +8 | 9.200.000 | 1989 |
Pentium | +8 | 9.300.000 | 1993 |
Pentium Pro | +16 | 10.500.000 | 1995 |
Pentium II | +2 | 10.500.000 | 1997 |
Pentium 4 | +0 | 10.500.000 | 2001 |
Hinzugekommene Funktionseinheiten | |||
8087 (Coprozessor) | +68 | 5.700 | 1982 |
80387 (Coprozessor) | +6 | 278.000 | 1985 |
FPU Pentium Pro | +11 | 278.000 | 1995 |
MMX | +47 | 1.880.000 | 1996 |
MMX2 | +18 | 2.310.000 | 1998 |
MMX3 | +3 | 2.420.000 | 2001 |
SSE | +28 | 1.250.000 | 2000 |
SSE2 | +99 | 5.000.000 | 2001 |
M-Stream | +10 | 78.000 | 2003 |
Was sich allerdings nicht geändert hat, ist das praktisch alle neuen Designs heute als RISC beginnen. Dies gilt durchgängig für viele Gebiete, auch für Mikrocontroller und Embedded Devices. Gerade im letzteren Markt wo neben Leistung auch der Preis eine viel wichtigere Rolle als bei PC und Servern spielt, ist ein RISC Design durch die geringere Transistorenzahl von Vorteil.
Der Aufsatz bis hierhin stammt ais dem Jahr 2004, wie man auch leicht an den besprochenen Prozessoren sieht. Ich möchte die Entwicklung seitdem Revue passieren lassen. Was sich seitdem geändert hat, ist das beide Architekturen (RISC und CSIS) an eine Grenze gekommen sind – die der Taktgeschwindigkeit. Der Pentium 4 erreichte 2004 erstmals die Taktfrequenz von 3 GHz. Er war damit höher getaktet als jeder RISC Prozessor dieser Zeit. Bisher glichen viele RISC Prozessoren wie der Alpha Chip den Nachteil, dass sie mehr Instruktionen für eine bestimmte Aufgabe brauchten, dadurch aus, das sie höher getaktet waren, also jede Instruktion weniger Zeit benötigte. Intel hat beim Pentium 4 mit der Netburst-Architektur einen Prozessor auf sehr hohe Taktgeschwindigkeiten ausgelegt und daher den Takt sehr schnell – Verdopplung innerhalb von zwei Jahren gesteigert. Seitdem hat sich jedoch beim Maximaltakt wenig getan. Der Grund sind Verlustleistungen, die bei jedem Takt bei jedem Transistor entstehen und die überproportional mit der Taktfrequenz steigen. Sie bedeuten ein Kühlproblem. Die letzten Versionen des Pentium 4 benötigten enorm voluminöse Kühler. Heute ist bei „normalen“ Prozessoren, die in Desktop-Rechnern und Notebooks landen, die thermische Design-Power (TDP), die maximale Verlustleistung deutlich geringer als damals. Seitdem wurde aber auch der Takt nur kaum gesteigert. Spitze sind 2020 rund 5 GHz. Das ist zwar 66 % mehr als vor 17 Jahren. Bedenkt man das in den 17 Jahren zuvor (1986-2003) aber der Takt von 16 auf 3000 MHz stieg, so wird klar, dass die Taktfrequenz an eine Grenze gekommen sind. Die 5 GHz erreichen die meisten Prozessoren auch nur auf einem von mehreren Kernen, der so die TDP der anderen Kerne mit benutzen kann. Rechnen alle Prozessorkerne, so liegt der Maximaltakt unter 4 GHz.
Prozessoren mit mehreren Kernen sind ebenfalls eine Neuerung. Sie begann bei der X86 Linie 2005 mit zwei Kernen, inzwischen hat das Groß der verkauften Prozessoren 4 bis 8 Kerne, sehr teuere Exemplare oder Server-Prozessoren der Xeon-Serie bis zu 32 Kerne.
Gemessen an der puren Rechenleistung hat die x86 Architektur RISC überholt. Diese trumpfen mit anderen Vorteilen. Vor allem die ARM Prozessoren – ARM steht eigentlich nur für eine Chipdesignschmide, die Prozessoren werden dann von verschiedenen Lizenznehmern produziert und meist kundenspezifisch erweitert sind heute weit verbreitet. Sie stecken in Routern, Smartphones und vielen anderen Geräten. Sie erreichen zwar nicht die Leistung der x86 Linie haben aber andere Vorteile wie einen geringen Stromverbrauch und gerinne Wärmeabgabe (wichtig für mobile Geräte) und die leichte Anbindung von Schnittstellen und Geräten in den Chipsatz und teilweise sogar in den Prozessor selbst. Das verkleinert Geräte und spart weiter Strom.
Geht es um die reine Rechenleistung, so haben heute die höchste Leistung keine Prozessoren, sondern GPU (Graphic Pocessing Unit), das Gegenstück zur CPU bei einer Grafikkarte. Sie sind nicht so universell einsetzbar, eigentlich nur für immer gleichartige Rechnungen, aber eine GPU hat bis zu mehreren Tauend Recheneinheiten anstatt maximal 64 bei einem Mehrkernprozessor. Auch wenn jede Einzelne langsamer als ein Prozessorkern ist und sie niedriger getaktet sind, so haben GPU durch die enorme Zahl ihrer Recheneinheiten eine Rechenleistung, die jeden Prozessor übertrifft. In Form von GPU-Beschleunigerkarten werden sie heute bei Servern und Supercomputern eingesetzt. Hier nutzt man aus das die Modelle, die meist berechnet werden, Daten auf immer die gleiche Weise manipuliert, meist jedoch nicht einen Datensatz, sondern Tausende auf einmal die man so auf die vielen Recheneinheiten einer GPU verteilen kann. In der Top 500 der schnellsten Computer weltweit dominieren denn auch 2020 X86 Systeme, meistens mit GPU-Beschleunigern. Intel versuchte auf Basis der x86 Technologie eine CPU mit vielen Recheneinheiten als Beschleunigerchip zu entwickeln. Der Xeon Phi war jedoch sehr teuer und erfüllt nicht die Erwartungen – Intel wollte bis zu 256 Kerne integrieren, kam aber nie über 50 hinaus.
RISC Prozessoren haben andere Qualitäten. Ohne sie wären lange Akkulaufzeiten bei kleinen Geräten – Smartphones, Tabletts, Smartwatches nicht möglich. Inzwischen gibt es auch den Vorstoß mit ARM-Kernen eine hohe Rechenleistung zu erreichen. Da jeder Kern jedoch eine geringere Leistung als ein Kern der x86 Architektur hat, verwendet man mehr Kerne. Fujitsu A64FX Armprozessor hat so 64 Kerne. Bei der x86 Architektur ist zum gleichen Zeitpunkt bei maximal 28 Kernen Schluss. Ein Rechner, der ihn einsetzt, führt im November 2020 die Top 500 Liste der weltweit schnellsten Rechner. Apple hat den ARM M1, ebenfalls eine Eigenkonstruktion als Nachfolgearchitektur für x86 Systeme ausgewählt. In gängigen Benchmarks ist er jedoch noch langsamer als der vorher verbaute iCore Prozessor,
Artikel verfasst 2004, Artikel zuletzt bearbeitet 23.12.2020
Zum Thema Computer ist auch von mir ein Buch erschienen. "Computergeschichte(n)" beinhaltet, das was der Titel aussagt: einzelne Episoden aus der Frühzeit des PC. Es sind Episoden aus den Lebensläufen von Ed Roberts, Bill Gates, Steve Jobs, Stephen Wozniak, Gary Kildall, Adam Osborne, Jack Tramiel und Chuck Peddle und wie sie den PC schufen.
Das Buch wird abgerundet durch eine kurze Erklärung der Computertechnik vor dem PC, sowie einer Zusammenfassung was danach geschah, als die Claims abgesteckt waren. Ich habe versucht ein Buch zu schreiben, dass sie dahingehend von anderen Büchern abhebt, dass es nicht nur Geschichte erzählt sondern auch erklärt warum bestimmte Produkte erfolgreich waren, also auf die Technik eingeht.
Die 2014 erschienene zweite Auflage wurde aktualisiert und leicht erweitert. Die umfangreichste Änderung ist ein 60 Seiten starkes Kapitel über Seymour Cray und die von ihm entworfenen Supercomputer. Bedingt durch Preissenkungen bei Neuauflagen ist es mit 19,90 Euro trotz gestiegenem Umfang um 5 Euro billiger als die erste Auflage. Es ist auch als e-Book für 10,99 Euro erschienen.
Mehr über das Buch auf dieser eigenen Seite.
Hier geht's zur Gesamtübersicht meiner Bücher mit direkten Links zum BOD-Buchshop. Die Bücher sind aber auch direkt im Buchhandel bestellbar (da ich über sehr spezielle Themen schreibe, wird man sie wohl kaum in der Auslage finden) und sie sind natürlich in den gängigen Online-Plattformen wie Amazon, Libri, Buecher.de erhältlich.
Sitemap | Kontakt | Impressum / Datenschutz | Neues | Hier werben / advertisment here | Buchshop | Bücher vom Autor |