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:
Hauptsächliche Hardware-Betriebsmittel einer Rechnerarchitektur sind Prozessoren, Speicher, Verbindungseinrichtungen (Busse, Kanäle, Verbindungsnetzwerke) und Peripheriegeräte.
Die physikalische Struktur eines Rechners umfasst den tatsächlichen Aufbau aus den Hardware-Betriebsmitteln mit dazugehörenden realen Signalverbindungen.
Die Hardware-Struktur ist gegeben durch Art und Anzahl der Hardware-Betriebsmittel sowie die Regeln für die Kommunikation und Kooperation zwischen diesen.
Die Kommunikationsregeln werden gegeben durch die Protokolle, die den Informationsaustausch zwischen den Hardware-Betriebsmitteln regeln. Die Kooperationsregeln legen fest, wie die Hardware-Betriebsmittel zur Erfüllung einer gemeinsamen Aufgabe zusammenwirken.
Definitionen, Teil 2
Im zweiten Teil der Definitionen grenzen wir den Begriff der Rechnerarchitektur ab. Hierzu sind Datentypen und Algorithmen notwendig:
Die Informationsstruktur eines Rechners wird durch die (semantischen) Typen der Informationskomponenten in der Maschine bestimmt sowie die Repräsentation dieser Informationskomponenten und die Menge der auf sie anwendbaren Operationen. Die Informationsstruktur lässt sich als eine Menge von abstrakten Datentypen spezifizieren.
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.
Die Kontrollstruktur eines Rechners wird durch Spezifikation der Algorithmen für die Interpretation und Transformation der Informationskomponenten der Maschine bestimmt.
Das Operationsprinzip definiert das funktionelle Verhalten der Architektur durch Festlegung einer Informationsstruktur und einer Kontrollstruktur.
Die Rechnerarchitektur ist bestimmt durch ein Operationsprinzip für die Hardware und die Struktur ihres Aufbaus aus den einzelnen Hardware-Betriebsmitteln.
Definitionen, Teil 3
Der dritte Teil der Definitionen umfasst die verbleibenden Begriffe für das Interface des Rechners zum Anwender hin:
Die Benutzerschnittstelle einer Rechnerarchitektur besteht aus der Sprache, in der der Benutzer dem Betriebssystem Anweisungen erteilen kann (Job Control Language, JCL), den auf dem System verfügbaren Programmiersprachen und den Direktiven zur Benutzung der Anlage.
Das Hardware-Software-Interface einer Central Processing Unit besteht aus den auf der CPU verfügbaren Assembler- beziehungsweise Binärbefehlen, aus dem Registermodell, das heißt der modellhaften Vorstellung der verfügbaren (direkt beeinflussbaren) Register, sowie dem Speichermodell.
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:
Ein Rechner bearbeitet zu einem Zeitpunkt eine oder mehrere Instruktionen.
Ein Rechner bearbeitet zu einem Zeitpunkt einen oder mehrere Datenwerte.
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
Serialität, bezogen auf ein bestimmtes Abstraktionsniveau, liegt dann vor, wenn auf diesem Niveau definierte Aktionen nicht gleichzeitig ausgeführt werden können. Dies bedeutet, dass zu einem Zeitpunkt höchstens eine Aktion ausgeführt werden kann.
Parallelität, bezogen auf ein bestimmtes Abstraktionsniveau, liegt dann vor, wenn zu einem gewissen Zeitpunkt mehr als eine auf diesem Niveau definierte Aktion ausgeführt werden kann. Dieser Begriff wird weiter in Nebenläufigkeit und Pipelining unterteilt:
Nebenläufigkeit, bezogen auf ein bestimmtes Abstraktions-niveau, liegt dann vor, wenn die Ressourcen des zu beschreibenden Rechners das gleichzeitige Ausführen vollständiger auf diesem Niveau definierter Aktionen erlauben.
Pipelining, bezogen auf ein bestimmtes Abstraktionsniveau, liegt dann vor, wenn die auf diesem Niveau definierten Aktionen in k Teilaktionen unterteilt worden sind, die in einer - meist linearen - Anordnung spezialisierter, taktsynchron arbeitender Teilwerke T1 ... Tk ausgeführt werden. Jede Aktion muss zu ihrer vollständigen Ausführung sämtliche k Teilpfade (also die Pipeline) durchlaufen, wobei nach jedem Takt zum nächsten Teilwerk übergegangen wird. Die Gesamtausführungszeit einer Aktion beträgt also k Taktintervalle, jedoch können sich in einer Pipeline zu einem Zeitpunkt bis zu k Aktionen zeitlich überlappend in Bearbeitung befinden. In einer Pipeline wird infolgedessen Parallelverarbeitung durchgeführt, wenn sich zu einem Zeitpunkt mehr als genau eine Aktion in Ausführung befindet.
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:
Das Leitwerk interpretiert ein gegebenes Maschinenprogramm Instruktion für Instruktion und steuert so die gesamten Abläufe im Rechner, indem das Programm interpretiert wird. Die Anzahl der Leitwerke wird mit k notiert.
Das Rechenwerk führt gemäß den Steueranweisungen Sequenzen von Mi-kroinstruktionen aus, interpretiert also den einzelnen Maschinenbefehl bis zur vollständigen Ausführung. Die Anzahl der Rechenwerke wird mit d notiert.
Die elementare Stelle des Rechenwerks führt gemäß der Steuerung eine Operation auf genau einer Bitstelle des Datenworts aus. Die Anzahl der elementaren Stellen wird mit w definiert.
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:
Serienrechner: k = 1, k' = 1, d = 1, d' = 1, w = 1, w' = 1.
Bitparalleler Rechner, Parallelwortrechner: w > 1
Multiprozessor: k > 1
Array Prozessor: d > 1
Macro-Pipelining (Aufteilung eines Befehls auf mehrere Prozessoren): k' > 1
Befehls-Pipelining (>S<puter): d' > 1
Phasen-Pipelining (RISC): w' > 1
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 eines Prozessors ist als der Kehrwert der Zeitspanne definiert, welche dieser für eine anwendungsspezifische Aufgabe benötigt:
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:
Program Counter/Instruction Pointer (PC, IP)
Processor Status Register
Datenregister, Akkumulator
Adressregister, Page Register
Stack Pointer Register
gegebenenfalls General Purpose Register
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