Klassifizierungssysteme für Prozessoren

04.08.2004 von PROF. DR. CHRISTIAN SIEMERS 
Die Leistungsfähigkeit von Prozessoren relativ zueinander einzuordnen, ist schwierig. Oft basieren die CPUs auf verschiedenen Architekturen. Mit Taktfrequenz und Benchmarks ist es bei der Klassifizierung nicht getan.

Prozessoren zur Programmausführung sind seit über 50 Jahren bekannt, so dass sich fast zwangsläufig eine Vielfalt von Typen bilden musste - nicht zuletzt durch den ewigen Bedarf nach mehr Rechenleistung. Dies führte gleichzeitig dazu, nach einer Klassifizierung von Prozessoren zu suchen, um die Leistungsfähigkeit zumindest relativ zueinander einordnen zu können.

Dieser Artikel gibt eine summarische, aber keineswegs vollständige Darstellung. In der Praxis hat sich herauskristallisiert, dass die Klassifizierung zwar in wenigen Bereichen angenommen wurde, jedoch Benchmark-Ergebnisse für die Einordnung der jeweiligen Architektur für den Anwender relevanter sind.

Diesen Artikel und eine ganze Reihe weiterer Grundlagenthemen zu Prozessoren finden Sie auch in unserem tecCHANNEL-Compact "Prozessor-Technologie". Die Ausgabe können Sie in unserem Online-Shop versandkostenfrei bestellen. Ausführliche Infos zum Inhalt des tecCHANNEL-Compact "Prozessor-Technologie" finden Sie hier.

Bestimmende Begriffe der Rechnerarchitektur

Es sind wenige Prinzipien, die die Architektur eines Rechners bestimmen. Hierzu zählen die physikalische Struktur (und mit ihr die tatsächlichen elektrischen Verbindungen), das Operationsprinzip und diverse Strukturen zur Kontrolle, die wir im Folgenden definieren [1].

Definitionen, Teil 1

Im ersten Teil werden Hardware-bezogene Definitionen gegeben:

Definitionen, Teil 2

Im zweiten Teil der Definitionen grenzen wir den Begriff der Rechnerarchitektur ab. Hierzu sind Datentypen und Algorithmen notwendig:

Diese Definition bedeutet unter anderem, dass (semantisch) verschiedene Datentypen eine durchaus identisch aussehende Repräsentation im Rechner haben können. Beispiele dafür sind Maschinenbefehle, Integer- und Floating-Point-Werte in einer 32-Bit-Repräsentation. All diese Informationskomponenten können zur Informationsstruktur des Rechners gehören, falls dieser darauf anwendbare Operationen besitzt.

Definitionen, Teil 3

Der dritte Teil der Definitionen umfasst die verbleibenden Begriffe für das Interface des Rechners zum Anwender hin:

Klassifizierungen von Rechnerarchitekturen

In der folgenden Darstellung der Klassifizierungen von Prozessoren und Rechnern nehmen wir besonders auf den Begriff der Rechnerarchitektur (und davon abgeleitet Prozessorarchitektur als deren Teil) Bezug. Es ist also das Operationsprinzip, weniger das Hardware-Software-Interface, das einen Maßstab benötigt.

Die Klassifizierung nach Flynn

Die von Flynn angegebene Klassifizierung für Rechnerarchitekturen orientiert sich an der Effektivität verschiedener Organisationsformen. Rechner werden hierin als Operatoren auf zwei verschiedenen Informationsströmen, dem Befehlsstrom und dem Datenstrom, angesehen. Dementsprechend ergibt sich eine zweidimensionale Klassifizierung nach den Kriterien:

Das entspricht der Einteilung in die vier Klassen SISD, SIMD, MISD und MIMD, wobei der Klasse MISD nur eine Bedeutung innerhalb von Teilbereichen der CPU zukommt, etwa im Pipelining-Aufbau. SISD bezeichnet die klassischen Von-Neumann-Rechner, SIMD die Vektorprozessoren, MIMD die Parallelrechner.

Die Flynn'sche Klassifizierung enthält zwei wesentliche Schwachpunkte:

1. Das sehr hohe Abstraktionsniveau der einzelnen Klassen führt dazu, dass sehr unterschiedliche Rechnerarchitekturen letztendlich in der gleichen Klasse geführt werden, obwohl sie unterschieden werden müssten.

2. Die Klasse MISD ist in der Systematik nur aus Vollständigkeitsgründen enthalten; gegenwärtige Rechnertypen in dieser Klasse existieren nicht.

Insbesondere der erste Schwachpunkt führt dazu, dass dieses Klassifizierungsschema in der Praxis zwar gerne für grobe Einteilungen (schlagwortartig) genutzt wird, real aber keine Relevanz besitzt.

Das Erlanger Klassifizierungssystem ECS

Das Erlanger Klassifizierungssystem ECS (Erlanger Classification System, [2]) existiert seit 1974 (mit Erweiterungen). Es unterscheidet drei verschiedene Ebenen des Parallelismus und notiert diese in einer einfachen Tripel-Notation. Die Ebenen selbst werden nochmals getrennt in Nebenläufigkeit (das heißt echter Parallelismus) und Pipelining. Für die Klassifizierung von zusammengesetzten, gegebenenfalls dynamisch rekonfigurierbaren Strukturen werden Operatoren für die Tripel-Stellen definiert.

Das ECS bietet somit zwei Aussagen zur Klassifizierung: Zum einen wird die maximale Leistungsfähigkeit (im Sinne der Parallelität) beschrieben (in relativem Maßstab), zum anderen sind auch Aussagen zur Flexibilität (Anzahl der Arbeitsmodi und so weiter) möglich. Das Klassifikationsschema setzt stark auf den Begriffen Serialität, Parallelität, Nebenläufigkeit und Pipelining auf.

Dies ist nur möglich bezogen auf ein bestimmtes Abstraktionsniveau, in dem für die Rechnerarchitektur passive Strukturen wie Register, Daten und Aktionen beziehungsweise Operatoren auf diesen Strukturen wie logische Verknüpfungen, ALUs und so weiter betrachtet werden.

Definitionen

Die Beschreibung der Grobstruktur eines Rechners durch ECS wird in drei logischen Ebenen vollzogen, die sich als reine Hardware-Elemente oder als Hardware-Elemente mit steuernden Programmelementen auffassen lassen:

Die Zahlen k, d und w definieren demnach den Umfang der Nebenläufigkeit des Rechners auf der jeweiligen Betrachtungsebene. Bei Pipeline-Organisationen können zusätzlich zu der Nebenläufigkeit k' spezialisierte Leitwerkteile ein größeres Programm bearbeiten, entsprechend d' spezialisierte Teile des Rechenwerks und w' elementare Teilwerke auf den jeweiligen Bitpositionen.

Ideale Eigenschaft eines Rechners

Mit den zuvor eingeführten Größen lässt sich eine Beschreibung von Rechenanlagen angeben:

Dieses Tripel charakterisiert also die ideale Eigenschaft eines Rechners, in der jede Form von Nebenläufigkeit und Pipelining vollständig in die Performance des Rechners eingeht. Einige Wertekombinationen lassen sich leicht identifizieren:

Das ECS führt weitere Operatoren ein, die das Verhalten eines Rechners bei komplexen Gesamtstrukturen beschreiben. "*" wird für das Zusammensetzen innerhalb einer einzelnen, homogenen Rechnerstruktur (CPU) verwendet, als auch für zusammengesetzte Strukturen, die wie ein Makro-Pipelining funktionieren.

Für andere Fälle existieren die Operatoren "+" und "v". "+" beschreibt im Sinn eines ODER den Fall der Struktur, wo Teile alternativ oder parallel zueinander arbeiten können. "v" wird für die Flexibilität einer Rechneranlage genutzt: Rekonfigurierbare Hardware, Fehlertoleranz und so weiter, die sich nicht in erhöhter Rechengeschwindigkeit, jedoch in Sicherheit beziehungsweise Flexibilität niederschlägt, wird mit diesem Operator dargestellt.

Das Erlanger Klassifikationssystem ergibt ein gewisses Maß der Leistungsfähigkeit von Rechnern, indem die Tripelwerte miteinander multipliziert werden. Dieses Maß ist weder absolut noch besonders anerkannt, lässt sich aber zum Vergleich von Architekturen mit identischem Befehlssatz heranziehen. Die Einflüsse der Makrobefehle auf die Berechnungsgeschwindigkeit von Algorithmen ist im ECS nicht berücksichtigt.

Benchmarks

Den im vorangegangenen Abschnitt dargestellten Klassifizierungen ist eines gemeinsam: Sie sind nicht zur effektiven Messung beziehungsweise Darstellung der Leistungsfähigkeit geeignet. Für den Entwickler einer Mikroprozessor- oder -Controller-basierten Anwendung hingegen ist es unabdingbar, eine Möglichkeit zum echten Leistungsvergleich (was auch immer unter "Leistung" verstanden wird) durchführen zu können.

Maßzahlen zur Bewertung von Mikro-Controllern

Um die Anforderungen einer Anwendung sicher bewerten zu können, sind definierte Maßzahlen erforderlich. Hierbei ist unbedingt zu beachten, dass diese Maßzahlen jeweils nur für eine spezifische Anwendung (Benchmark) beziehungsweise für eine spezifische Hardware-Umgebung (Hardware-Plattform) gelten können. Bei den folgenden Angaben ist ein Index x kennzeichnend für eine anwendungsspezifische Maßzahl.

Performance

Die wohl wichtigste Maßzahl zur Bewertung ist die tatsächliche Performance (Leistungsfähigkeit) eines Prozessors:

Die Performance ist eine Maßzahl zur Bewertung des Gesamtsystems eines Mikroprozessors/-Controllers. Für einige weit verbreitete Programme, häufig synthetischen Ursprungs, wird sie in einheitenlose Maßzahlen umgewandelt. Zu diesen Programmen zählen Dhrystone, Whetstone, SPECint, SPECfp, BAPCo.

Anwendungsspezifischer Leistungsverbrauch

Für Rechner mit Netzenergieversorgung ist dieses Maß zwar noch weit gehend irrelevant, für Mikro-Controller-Anwendungen auf Batteriebasis ist es allerdings sehr wichtig:

Instruction Count

Der Instruction Count zählt die Anzahl der Instruktionen (Maschinenbefehle), um eine anwendungsspezifische Aufgabe zu kodieren. Der Instruction Count stellt damit ein Maß für die Güte des Befehlssatzes dar.

Clock Cycles per Instruction (CPI)

Bei Prozessoren ähnlichen Aufbaus - dies ist der Fall bei RISC- und superskalaren CPUs, die wir in den weiteren Kapiteln behandeln - liefert die Angabe der CPI einen guten Anhaltspunkt zur Leistungsfähigkeit der jeweiligen Architektur:

Demgegenüber sollte man native MIPS (Mega Instructions Per Second) nicht verwenden, die als Quotienten der Anzahl der Instruktionen, dividiert durch die Ausführungszeit, sowie MFLOPS (Mega Floating Point Operations Per Second) definiert sind. Ihre Aussagekraft ist sehr gering. Dabei wird keinerlei Bezug auf die Komplexität des Programms genommen. Oftmals sind die Herstellerangaben auch nur Spitzenwerte, die theoretisch erreichbar sind.

Clockrate

Fast alle Mikro-Controller oder -Prozessoren (die Ausnahme bilden hier asynchrone, das heißt selbst synchronisierende Prozessoren) verwenden einen Takt mit einer konstanten Rate, welche festlegt, wann die Hardware bestimmte Funktionen ausführt.

Diese diskreten Zeitintervalle heißen Zyklen (Cycles, Ticks, Perioden), der Kehrwert auch Clockrate. Die Clockrate (Taktrate) ist nach oben begrenzt durch Verlustleistung, Signallaufzeiten et cetera. Nach unten ist sie gegebenenfalls durch dynamische Effekte limitiert, wobei bei statischen Designs die minimale Taktrate 0 Hz beträgt.

Codedichte (Code-Density)

Die Codedichte spielt besonders in Systemen mit harten Speicherplatzbeschränkungen eine wichtige Rolle. Sie beurteilt gemeinsam den Instruktionssatz und die Güte des Compilers.

Kontextwechselzeit

In einem Multitasking- oder Multithreading-System (Thread = Faden; wird als in sich geschlossener Programmfaden innerhalb eines Tasks genutzt) muss der Prozessor zwischen verschiedenen Tasks beziehungsweise Threads wechseln können und daher auch den Kontext. Hierbei sind verschiedene Register zu sichern, wie:

Interrupt-Antwortzeit

Die Interrupt-Antwortzeit (Interrupt Latency Time) ist als Zeitspanne zwischen dem Auftreten eines Interrupts (asynchrone Programmunterbrechung durch externe Signalisierung) und der Ausführung des ersten Befehls definiert. Diese Zeit ist stark abhängig von dem momentanen Zustand aller äußeren Einflüsse (Anzahl der momentan aktiven Quellen) sowie von dem Kontext des Programms (nicht unterbrechbare Codeabschnitte).

Interrupt-Overhead-Zeit

Die Interrupt-Overhead-Zeit ist als die maximale Zeit definiert, die eine Interrupt-Anforderung den Prozessor-Core für andere Aufgaben blockiert, bis die erste Anweisung der entsprechenden Interrupt-Service-Routine (ISR) ausgeführt wird. Gründe für diese Blockade können die Überprüfung der Priorisierung, die Verzweigung in die ISR, die Kontextsicherung sowie die Löschung der Interrupt-Anforderung sein.

Diesen Artikel und eine ganze Reihe weiterer Grundlagenthemen zu Prozessoren finden Sie auch in unserem tecCHANNEL-Compact "Prozessor-Technologie". Die Ausgabe können Sie in unserem Online-Shop versandkostenfrei bestellen. Ausführliche Infos zum Inhalt des tecCHANNEL-Compact "Prozessor-Technologie" finden Sie hier. (mec)

Literatur

[1] Giloi, W.: Rechnerarchitektur - Berlin, Heidelberg, New York, Springer-Verlag, 1981. ISBN 3-540-10352-X

[2] Märtin, C. (Hrsg.): Rechnerarchitekturen - CPUs, Systeme, Software-Schnittstellen - 2. Auflage - München, Wien: Carl Hanser Verlag, 2000