RISC - Nur ein Schlagwort?

Die Diskussion über RISC conta CISC ist überflüssig

05.10.1990

RISC-Prozessoren werden oft als Gegenstück zu herkömmlichen CISC-Prozessoren bezeichnet. Allerdings mag schon allein die Tatsache bedenklich stimmen, daß moderne RISC-Chips mehr Befehle haben als manche CISC-Pendants. Auch gibt es den "RISC-Prozessor" als Modell nicht. Vielmehr ist RISC ein Entwurfsprinzip der Computerarchitektur, das die Entwicklung der Computertechnik nachhaltig beeinflussen wird.

RISC-Reduced Instruction Set Computer - , ist die Bezeichnung für ein Prozessorkonzept, das zunehmend als Vorabgarantie für hohe Prozessorleistung im Applikationsbereich der Workstations und zunehmend auch im Embedded-Controller-bereich Verwendung findet. RISC steht zwar konzeptionell im Gegensatz zu CISC. Das heißt aber nicht, daß eine geschlossene Definition für RISC existieren würde. Viele Hersteller verführt dieser definitionsfreie Raum dazu, den Begriff RISC auch als Marketingschlagwort zu verwenden.

Keine klare Definition von RISC

Begonnen hatte es mit der Vorstellung des RISC I an der University of California, Berkeley, wobei die Grundlagen der RlSC-Entwicklung etwa 15 Jahre zurückliegen. Drei verschiedene Entwicklungskonzeptionen die sich aus technologischen Überlegungen speisen, dürften der Anstoß für die eigentliche moderne RlSC-Entwicklung sein:

Zunächst handelt es sich um die Bestrebung, einen Prozessor zu schaffen, der in jedem Taktzyklus einen Befehl ausführen kann. Zudem machten sich die Entwickler Gedanken über Erkenntnisse, die man über die statistische Verwendungshäufigkeit von Befehlen in herkömmlichen komplexen Prozessoren gewonnen hatte. Aus diesen ergaben sich Schlußfolgerungen beziehungsweise die Überlegung, einen für eine bestimmte Aufgabenstellung maßgeschneiderten Befehlssatz zu schaffen.

Untersuchungen hatten nämlich gezeigt, daß bis zu 50 Prozent der vorhandenen Befehle komplexer Prozessoren in typischen Hochsprachkompilaten nicht oder nur mit sehr weniger Verwendungswahrscheinlichkeit zur Ausführung kommen. Die Ursache dafür kann sowohl darin gesucht werden, daß die verwendeten Compiler unzulänglich sind. Möglich ist jedoch auch, daß manchen Programmierern die Verwendung dieser Befehle offensichtlich nicht sinnvoll erscheint.

Die diesen Überlegungen zugrundeliegenden Entwicklungen - neben der Berkeley- vor allem die Stanford-Variante, welche die Firma Mips bevorzugt - lassen es nun trotzdem nicht zu, für den Begriff RISC eine klare Definition niederzulegen. Es ist viel eher möglich, eine Auflistung von Eigenschaften und Konstruktionsprinzipien dieser Chip-Architektur zu erstellen, wobei die einzelnen RlSC-Prozessoren durchaus mehr oder eben weniger RISC-Elemente beinhalten können.

Der gemeinsame Nenner der RlSC-Entwicklungen besteht in Folgendem: Ein Prozessor soll einerseits mit einem Befehlssatz ausgestattet sein, der so einfach ist, daß die Realisierung des Steuerwerkes es erlaubt, die größte Anzahl der Befehle in einem Zyklus auszuführen. Andererseits aber sollte der Aufwand für die Implementierung des Steuerwerks am Chip minimal bleiben. Dieses Konstruktionsprinzip bringt an und für sich noch keinen wesentlichen Vorteil von RISC- gegenüber CISC-Prozessoren mit sich. Immerhin handelt es sich bei den Befehlen, die man im Zusammenhang mit diesem Konstruktionsprinzip auswählt, in der Regel um einfache Instruktionen. Meist können sie unter Anwendung einer Drei-Adreß-Architektur in einem Registersatz zur Ausführung gebracht werden. Oberflächlich betrachtet, müßten zur Lösung einer definierten Aufgabe bei RISC- gegenüber komplexen Prozessoren mehr Befehle zur Ausführung kommen, um zu einer Lösung zu gelangen. Außerdem sollte man erwarten, daß diese einfachen Befehle in einer vergleichsweise kürzeren Ausführungszeit durchgeführt werden könnten. Daraus läßt sich jedoch noch kein Gewinn in der Verarbeitungsgeschwindigkeit ableiten. RISC-Prozessoren wären auf diese Art und Weise auch lediglich Subsets von komplexen Prozessoren.

RISC-Prozessoren bieten hinsichtlich der Rechenleistung gegenüber CISC-Bausteinen aber dennoch wesentliche Vorteile: Sie ergeben sich aus schon vor der RISC-"Geburt" verwendeten Prinzipien, die in Zusammenhang stehen mit der einfachen Befehlsstruktur und dem einfachen Steuerwerk. Man nützt die

durch die Verkleinerung des Steuerwerks freigewordene Chipfläche dazu, zusätzliche und für den Einsatzzweck des Prozessors nützliche Hardware-Ressourcen auf dem Chip unterzubringen.

Weniger Zugriffe auf den Hauptspeicher

Bei Allzweckprozessoren - und darum handelt es sich bei den meisten, wenn auch nicht allen RISC-Entwicklungen - werden oft große Registerfelder auf dem Chip realisiert. Diese ermöglichen es, eine große Anzahl von Variablen am Chip zu halten und die statistische Notwendigkeit für Hauptspeicherzugriffe wesentlich zu reduzieren. Darüber hinaus wurde bei der Berkeley-Variante und den darauf aufbauenden kommerziellen Produkten (Sparc) die sogenannte Register-Window-Technik verwirklicht. Sie erlaubt es, mit einem einfachen Befehl von einer Unterprogrammebene zur anderen zwischen unterschiedlichen Registersätzen umzuschalten. In anderen Prozessortypen nutzt man diese freie Chipfläche durch mathematische Co-Prozessoren oder durch Datenverbindungen (Transputer).

Der wichtigste Beitrag zur Performance von RISC-Prozessoren wird allerdings durch die Anwendung der sogenannten Pipeline-Technik erreicht. Dabei wird ein Befehlszyklus in Abschnitte zerlegt, die so allgemein sind, daß sie sich für alle Befehle gleich darstellen. Als Beispiele lassen sich das Laden des Befehlscodes, das Entschlüsseln, das Laden von Operanden sowie die eigentliche Befehlsausführung nennen.

Diesen Abschnitten - man spricht auch von Phasen - werden im Prozessor eigene Hardwarebereiche zugeordnet, die unabhängig voneinander arbeiten können. Jeder Befehl verwendet nach dem Stadium der Ausführung, in dem er sich gerade befindet, nur den entsprechenden Hardwareteilbereich. Hintereinander liegende Befehle lassen sich so überlappend parallel verarbeiten. Im optimalen Fall - wenn alle Pipelinestufen gleich lang und ständig beschäftigt sind - ließe sich so bei einer vierstufigen Pipeline eine Vervierfachung der Ausführungsgeschwindigkeit erzielen.

RlSC-Prozessoren nutzen "Finegrain Parallelismus"

Diese Technologie bringt allerdings auch Probleme mit sich: Beim Entwurf der Hardwarearchitektur muß sichergestellt werden, daß keine Benutzungskonflikte der einzelnen Pipeline-Stufen vorliegen. Bei der Generierung des Codes für die Programmausführung gilt es zu bedenken, daß nicht jeder Befehl im Maschinencode zum Zeitpunkt seiner Ausführung darauf bauen kann, daß der unmittelbar vor ihm liegende tatsächlich schon komplett ausgeführt ist.

Daraus resultiert für RISC-Architekturen, daß sich ihre Vorteile und die prinzipiell mögliche hohe Rechnerleistung in den Pipelinestufen nur durch spezielle, optimierende Compiler nutzen lassen.

Moderne RlSC-Prozessoren wie der 860 von Intel oder das IBM-Power-System nutzen den auf dem Chip verfügbaren Platz, beziehungsweise das Architekturkonzept, nicht nur zur Parallelisierung von Befehlsausführungen durch überlappende Verarbeitung von Befehlsphasen. Sie versuchen darüber hinaus auch, den sogenannten "Finegrain Parallelismus" - das ist die mögliche Parallelausführung unmittelbar aufeinanderfolgender Befehle - zu nützen.

Nur Vorteile oder auch Nachteile?

Hierfür wird der Prozessor in sogenannte Function-Units geteilt, die bestimmten Befehlsklassen zugeordnet sind. Beispiele dafür sind der Branch-, der Fixed-Point- und der Floating-Point-Prozessor in der IBM-Power-Architektur. Liegen Befehle so hintereinander, daß sie voneinander unabhängig parallel ausgeführt werden können sorgt das Steuerwerk dafür, daß im optimalen Fall die drei unterschiedlichen Function-Units gleichzeitig an der Ausführung von drei hintereinander folgenden Befehlen arbeiten. Architekturen, die eine Parallelverarbeitung auf dieser Ebene bezwecken, nennt man Super-Skalar-Rechner.

Bringen also RISC-Prozessoren nur Vorteile, oder hat ihre Anwendung auch Nachteile? Aus der Sicht des Anwenders, der primär an hoher Rechenleistung interessiert ist, mag es unerheblich sein, ob ein RISC- oder CISC-Prozessor sein Programm ausführt. Aus der Sicht des Systemdesigners bringen RISC-Prozessoren Probleme mit sich.

Immerhin benötigen RISC-Prozessoren in jedem Taktzyklus einen Befehl und können durchaus auch in jedem Taktzyklus mehrere Daten verarbeiten. Das bedeutet aber auch, daß ein entsprechend schneller Kanal zwischen CPU und Hauptspeicher zur Verfügung gestellt werden muß, der es erlaubt die entsprechenden Informationen zu transferieren. Dabei taucht - wenn auch in veränderter Form - das alte Problem des "Von-Neumann-Flaschenhalses" wieder auf. Für RISC-Prozessoren bedarf es daher in der Regel Maßnahmen, die dieses Problem entschärfen. Die Hardware-Architekten greifen deshalb meist auf mehrstufige Cache-Architekturen zurück. Bei Mehrprozessorsystemen mit RISC-Bausteinen bietet die Notwendigkeit der Cache-Kohärenz durchaus Schwierigkeiten und noch lohnende Forschungsaufgaben.

Chancen liegen in der Designidee

Die Aufgabe des Softwaredesigners und der Compilerbauer hingegen wird durch die Verwendung von RISC tendenziell einfacher, da in der Aufgabe der "Large Case Analysis", die einem Compiler zugrunde liegt, die Anzahl der Fälle reduziert wird. Allerdings sind im Zusammenhang mit RISC noch verschiedene Optimierungsaufgaben zu lösen. Bei parallelen Systemen auf RlSC-Basis gibt es darüber hinaus weitere Probleme, die derzeit noch Gegenstand von verschiedenen Forschungsprojekten sind.

Die Zukunft der RlSC-Systeme mag sachlich vielleicht weniger davon bestimmt sein, daß mehr und neue RISC-Prozessoren auf den Markt kommen. Hier sorgen die verschiedenen Marketingabteilungen schon dafür, daß noch einige Generationen neuer Prozessoren mit RISC betitelt werden. Vielmehr liegen die Chancen und Perspektiven des ClSC-Konkurrenten in der Designidee: Wenn man in zukünftigen Prozessoren Pipelining- und Finegrain-ParalIelismus Verfahren richtig nutzt, wenn zudem über die Verwendung der Chipfläche unter dem Aspekt des zu erwartenden Nutzens für die jeweilige Applikation entschieden wird,

dann wird auch die Diskussion über die Vorteile von CISC- gegenüber RlSC-Prozessoren überflüssig.

Moderne RISC-Prozessoren können durchaus mehr Befehle haben als derzeitige CISC-Prozessoren und trotzdem die beschriebenen Vorteile des RISC-Prinzips nutzen. Weiterentwicklungen der RISC-Technologie in bezug auf die Computerarchitektur kann man einerseits in einer noch stärkeren Koppelung zwischen Befehlssatzentwurf und Nutzen für die Aufgabenstellung beim Entwurf des Befehlssatzes erwarten.

Andererseits dürften sich die Hardware-Ressourcen beispielsweise für verbesserte Parallelverarbeitungsmechanismen nutzen lassen. Beim Befehlssatzentwurf mag dies dazu führen, daß man - entsprechend einigen derzeit laufenden Forschungsprojekten - in Zukunft Befehlssätze unter dem Blickwinkel und mit dem Begriff Entropie bewerten wird. Hier werden statistische Gegebenheiten der Befehlsausführung berücksichtigt.

Auf dem Gebiet der Parallelverarbeitung wäre etwa an Bewährtes zu denken: Mit RISC-Prozessoren könnten zukünftig bekannte Verfahren wie Very Long Instruction Word Maschinen (VLIW), aber auch Datenflußalgorithmen, die auf Prozedurebene laufen, implementiert werden.

Die "RISC-Welle" mag aus der Sicht des Marketing-Menschen vielleicht früher oder später enden. Aus dem Blickwinkel der CPU-Designer hat die RISC-Entwicklung dazu geführt, beim CPU-Entwurf die Anwendung selbst stärker zu berücksichtigen und auch quantitativ zu bewerten. Dieser Einfluß wird - das ist zumindest zu hoffen - noch in vielen CPU-Generationen zu finden sein.