Alternative Rechnerarchitekturen (Teil 4)

28.06.2005 von PROF. DR. CHRISTIAN SIEMERS 
Der Architekturansatz aller aktuellen PC-Prozessoren hat viele Nachteile. Diese Artikelserie beschreibt alternative Modelle. Im vierten Teil widmen wir uns dem UCB/UCM-Konzept.

Die s-Unit des >S<puter-Konzepts sowie der Übersetzungsalgorithmus PDSP lassen sich aus dem Konzept des superskalaren Mikroprozessors herauslösen und einzeln beziehungsweise in neuer Zusammensetzung benutzen. Hieraus ergibt sich eine interessante Mischung aus Programmier- und Ausführungsmodell. Das optimale Modell besteht – nach dem aktuellen Kenntnisstand – darin, dass die Programmkodierung einem sequenziellen Modell folgt, die Ausführung jedoch an die aktuellen Randbedingungen (auch zur Laufzeit) angepasst werden kann. Genau dies wird von dem UCB-/UCM-Modell (Universal Configurable Block/Machine) unterstützt.

Serie: Alternative Rechnerarchitekturen

Teil 1

Einführung in Reconfigurable Computing

Teil 2

>S<puter

Teil 3

Reconfigurable RISC

Teil 4

UCB/UCM;-Konzept

Teil 5

XPP-Architektur und Xputer

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.

Ausführungsphasen dieses Modells

Die ausführenden Blöcke (UCB) benötigen im Prinzip eine Konfiguration, die den Datenweg innerhalb des Blocks für eine Zeitspanne festlegt. Mehr noch als das, eigentlich ist ein Konfigurationsfluss notwendig, da man nicht davon ausgehen kann, dass im allgemeinen Fall eine einzige Konfiguration etwa eine komplette Schleife beinhaltet.

Dieser Konfigurationsfluss lässt sich aus dem Instruktionsfluss gewinnen, dies ist aus der >S<puter-Architektur bekannt. Damit ergeben sich drei (grobe) Ausführungsphasen, die nicht mit dem Phasen-Pipelining einer RISC-Architektur verwechselt werden dürfen (Bild 1, a)).

Im Fall einer Übersetzung zur Compile-Zeit – dies wird als Post-Assembler-Lauf bezeichnet, unterliegt jedoch den gleichen Regeln wie die Übersetzung zur Laufzeit – verringert sich die Anzahl der Grobphasen auf zwei (Bild 1, b)). Unabhängig davon, wann diese Übersetzung stattfindet, gilt jedoch, dass das Programmiermodell mit dem des zu Grunde liegenden Mikroprozessors übereinstimmt. Die bekannten Compiler einschließlich aller Optimierungen können weiterhin benutzt werden. Die nicht starr ausgeführte Kopplung zwischen Fetch/Übersetzung (wie sie definitiv bei Mikroprozessoren der Fall ist) ermöglicht den wichtigen Schritt, die Konfiguration so lange auszuführen, wie sie benötigt wird: Dies ist wie in Teil 1 beschrieben das Kriterium für Reconfigurable Computing.

Universal Configurable Blocks

Ein Universal Configurable Block (UCB) (Bild 2) besteht wie die s-Unit des >S<puter aus Operatoreinheiten und konfigurierbaren Datenpfaden.

Gegenüber dem >S<puter wurden nur wenige Teile ergänzt:

Procedural-driven Structural Programming

Der Übersetzungsalgorithmus, der zur Erzeugung einer Konfiguration aus einem Instruktionsfluss notwendig ist, entspricht demjenigen für rRISC und >S<puter (Teil 3) und wird Procedural Driven Structural Programming (PDSP) genannt. In speziellen Fällen werden zusätzlich Datenabhängigkeiten erkannt und aufgelöst, wie in Bild 3 dargestellt.

Im Beispiel wird der Inhalt von r1 (Variable a) mit der Konstanten 0 verglichen und davon abhängig der Inhalt in r2 (Variable b) kopiert oder nicht. Dies ist eine klare Datenabhängigkeit (RAW), die aber bei der Übersetzung in die Konfiguration aufgelöst wird und „lediglich“ eine Verlängerung der Bearbeitungszeit nach sich zieht. Die Übersetzung von Verzweigungsbefehlen ist speziell zu berücksichtigen. Alle Branches, die aus Verzweigungen stammen, lassen sich prinzipiell in bedingte Befehle (Bild 10.27) übersetzen. Das gilt nicht für Rückwärtssprünge, deren Herkunft in den Schleifen liegt. Schleifen lassen sich zwar entrollen, dies liefert im allgemeinen Fall aber nur eine Verringerung der Anzahl der Sprünge.

Konsequenterweise müssen die UCBs (oder die übergeordnete Maschine) Verzweigungen behandeln können. Eine solche Verzweigung bedeutet gegebenenfalls den Wechsel einer Konfiguration.

Multicontext-UCB

Die allgemeine Lösung zur Verwaltung von mehreren, sequenziell auszuführenden Konfigurationen sowie von Verzweigungen lautet Multicontext-UCB. Dieser besteht aus einem ausführenden UCB sowie mehreren Speicherebenen, die ausführbare Konfigurationen enthalten können. Der Kontext-Switch von einer Konfiguration zu einer anderen kann durch paralleles Laden im Rahmen eines Takts erfolgen, sofern die Konfigurationen vorgeladen sind.

Die Konfigurationssequenz sowie die Verzweigungen verwaltet der Konfigurationsmanager. Diese neue Einheit gehört insoweit zum UCB, wie dieser über mehrere Speicherebenen verfügt. Ansonsten ordnet man sie der nachfolgend beschriebenen höheren Maschine zu.

Universal Configurable Machine

Ein UCB muss mit fertigen Konfigurationen versehen werden. Diese Übersetzung obliegt dem PDSP-Algorithmus. Allerdings treten eine Reihe von weiteren Aufgaben auf, die allesamt in der höheren Maschine, mit UCM (Universal Configurable Machine) bezeichnet, vereinigt sind:

Bild 5 gibt einen Überblick zur Mikroarchitektur der UCMs. Hier sind mehrere Blöcke mit Signalisierungen und Kommunikationspfaden vorgesehen. Diese UCM-Architektur lässt sich durch vier Parameter, (b,h,s,c) beschreiben: b ist die Anzahl der UCBs, h der Hardware Scheduler, s der Instruktionsblock-Sequencer und c die Beschreibung der internen Kommunikation.

Die Fähigkeit einer UCM zur sequenziellen Ausführung von UCB-Konfigurationen (Hyperblocks) ist durch den Parameter s beschrieben. Bei s = 1 ist der Sequencer vorhanden, bei s = 0 nicht. Die Fähigkeit zur sequenziellen Bearbeitung bedeutet, dass die UCM wie ein Mikroprozessor arbeiten kann.

Trotz der offensichtlichen Einschränkung für s = 0 sind UCMs mit dieser Eigenschaft durchaus sinnvoll, insbesondere in kleineren Applikationen. Hier wird das Programm in dem Multicontext-UCB selbst gespeichert. Bei kleineren Applikationen geht man davon aus, dass lediglich eine kleine Anzahl von Rekonfigurationen überhaupt notwendig ist. Konsequenterweise besteht die kleinste UCM, eine (1, 0, 0,-)-UCM aus einem UCB mit Multicontext-Konfigurationsspeicher, einer PDSP-Übersetzungseinheit und einem Bootloader für den Start.

Der Parameter h ist interessanter. h = 1 beschreibt die Fähigkeit der UCM, UCBs zu schedulen, ihnen also exklusive oder sequenziell fortschreitende Aufgaben zuzuordnen. Dies ist eine sehr wichtige Funktion, die in den Bereich der Betriebssysteme fällt: Das Scheduling von Ressourcen bedeutet, dass die UCM auf besondere Aufgaben – Interrupt Service beispielsweise – vorbereitet sein kann.

Der Parameter c wurde zur Klassifizierung hinzugefügt, weil die Intra-Chip-Kommunikation gerade für Multiblock-Anwendungen mit zur Laufzeit veränderlichen Zuordnungen sehr wichtig ist. Dieser Parameter beschreibt Funktionalitäten: Die vordefinierte Funktion „lc“ (loosely coupled) beschreibt dabei jene Kopplung, in der Statusleitungen zwischen verschiedenen UCBs verfügbar sind, ein Datentransfer jedoch via Hauptspeicher ablaufen muss.

Im Gegensatz dazu beschreibt „tc“ (tightly coupled) die Kopplung benachbarter UCBs via Shared-Register. Eng gekoppelte Systeme können gerade bei hohem Datenkommunikationsaufkommen sehr effektiv arbeiten. Mit „-“ ist keine Kommunikation verfügbar, „x“ beschreibt eine nicht explizit definierte Kopplung.

Konsequenzen für verschiedene UCM-Typen

Universal Configurable Machines mit b > 1 (Multi-UCB) sind sowohl zur Erhöhung der Performance als auch zur Verbesserung (beziehungsweise Herstellung) von Echtzeitfähigkeit sowie für zuverlässige Systeme zu nutzen. Die Performance lässt sich dabei auf verschiedene Weisen unterstützen: Ein möglicher Weg besteht darin, dass verschiedene UCBs verschiedene Threads beziehungsweise Prozesse ablaufen lassen können. Dies entspricht mehr dem CMP-Ansatz (Chip-Integrated Multiprocessing) für Mikroprozessorarchitekturen [1], während für SMT-Ansätze (Simultaneous Multithreading) [1] mehr Unterstützung innerhalb der UCBs notwendig sein wird.

Eine andere Möglichkeit zur Performance-Verbesserung ist, gänzlich andere, für bestimmte Einsatzgebiete sehr gut geeignete Architekturen auf die UCM abzubilden. Dies kann für den Xputer (Abschnitt 10.4) sehr einfach geschehen, dieser entspricht einer (b, 0, 0, tc)-UCM. Für datenintensive Applikationen, etwa aus dem Bereich der Bildverarbeitung, erhält man hier verglichen mit mikroprozessorbasierten Lösungen große Beschleunigungsfaktoren bis zu 100 und mehr. Echtzeitapplikationen werden durch das Space-/Time-Mapping, die fundamentale Eigenschaft dieses Ansatzes, unterstützt. Hierdurch erhöht sich die Event-Dichte E, die die Reaktionsfähigkeit des Systems beschreibt, um Faktoren von zirka 100 bei Nutzung von (b, 1, 1, tc)-UCMs.

Ausblick

Die von PACT vorgestellte XPP-Architektur (XPP = eXtreme Processing Platform) ist ebenfalls als Coprozessor konzipiert. Mit einem RISC-Prozessorkern, der auch auf dem Chip integriert sein kann, wird hieraus ein vollständiger Prozessor mit enormen Rechenkapazitäten. Das soll Thema des nächsten Artikelteils sein.

Serie: Alternative Rechnerarchitekturen

Teil 1

Einführung in Reconfigurable Computing

Teil 2

>S<puter

Teil 3

Reconfigurable RISC

Teil 4

UCB/UCM;-Konzept

Teil 5

XPP-Architektur und Xputer

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] Šilc, J.; Robic, B.; Ungerer, T.: Processor Architecture – Berlin, Heidelberg, New York: Springer, 1999