Lexikon

Architekturen, rekonfigurierbare

Die immer weiter wachsende Zahl von Transistoren pro Chip nutzen die Hersteller von Prozessoren aktuell zur Implementierung von Multi-Core-Techniken, wachsenden Cache- Größen und größeren Bit-Breiten. Auch wenn sich dieser Trend noch einige Jahre fortsetzen lässt, stellt sich die Frage, ob man diese Menge an Transistoren nicht auch in anderer Form effizient nutzen kann. Rekonfigurierbare Architekturen können in den nächsten Jahren eine Alternative zu den etablierten Rechnerarchitekturen darstellen.

Motivation

Dank der rasanten Entwicklung und Miniaturisierung bei den elektrischen
Bauelementen in den letzten Jahrzehnten sind wir es gewohnt, dass sich die Leistung von Rechnern ca. alle zwei Jahre verdoppelt. Trotz dieser enormen Leistungssteigerung hat sich aber die grundsätzliche Organisationsstruktur von Rechenanlagen seit den 50er-Jahren kaum verändert und folgt immer noch dem sogenannten Von-Neumann-Prinzip, das auf einem sequenziellen Rechenprinzip basiert, sodass das Potenzial paralleler Rechenanlagen in heutigen Mikroprozessoren nicht genutzt wird.

Der steigende Leistungsverbrauch von High-Performance-Mikroprozessoren hat seit einigen Jahren allerdings zu einer Stagnation der erzielbaren Taktrate geführt. Als Konsequenz davon wird nun verstärkt auf Parallelverarbeitung als Alternative zur Performance-Steigerung gesetzt, in dem mehrere Prozessoren auf einem Chip integriert werden. Auf diese Weise sollen die nach dem Moore’schen Gesetz [6] postulierten Kapazitätssteigerungen der Mikrochips weiter in Leistungssteigerungen umgesetzt werden. Heute gängige PCs werden bereits mit Dual- und Quad-Prozessoren ausgestattet. Die Hersteller haben eine weitere Steigerung der Prozessorzahl angekündigt. So werden in dem in der Sony Playstation verbauten IBM-Cell-Prozessor bereits neun Prozessoren auf einem Chip integriert. Abseits von Server-Anwendungen bringen die zusätzlichen Prozessor-Kerne allerdings nicht die erhofften Leistungssteigerungen. Dies ist zum Einen auf die mangelnde Programmierbarkeit solcher Parallelrechner zurückzuführen, andererseits allerdings auch auf die mangelhafte Unterstützung vorhandener Software für die parallele Verarbeitung von Programmteilen („Multi-Threading“).

Der hohe Aufwand, der bei der Parallelisierung bestehender Applikationen betrieben werden muss, verteuert und verzögert die Entwicklung entsprechender Software zusätzlich. Ein weiteres Problem ist, dass Multi-Prozessoren die Energie- Bilanz nicht nachhaltig verbessern, sodass auch diese Rechnerarchitekturen schnell ihre Sättigung erreichen werden.

Eine interessante Alternative zu Multi-Prozessoren versprechen rekonfigurierbare Prozessoren zu werden [3]. Solche Architekturen, die gerade dem Forschungsstadium entweichen und in ersten kommerziellen Implementierungen zu finden sind, wählen einen anderen Weg, um höhere Verarbeitungsleistungen und eine verbesserte Energiebilanz zu erzielen. Sie basieren auf Bausteinen, deren interne Komponenten in Funktion und Verbindung nicht durch den Produktionsprozess festgelegt werden, sondern dynamisch umprogrammiert werden können. Dadurch lassen sich sequenzielle Berechnungen durch spezialisierte Schaltungen ersetzen, die aber für jede Anwendung ohne Austausch von Hardware neu definiert werden müssen.

Rekonfigurierbare Architekturen benötigen spezielle Unterstützung durch Compiler, die in Standard- Programmiersprachen wie C geschriebene Software auch auf solche Architekturen maschinell umsetzen. Gerade auf diesem Gebiet sind in den letzten Jahren große Fortschritte gemacht worden [4]. Mit rekonfigurierbaren Prozessoren lassen sich für spezielle Anwendungen enorme Steigerungen der Rechenleistung erzielen. Beispielhaft seien hier die Protein-Faltung [7], Monte-Carlo-Simulationen in der Finanzmathematik [2], aber auch Bildverarbeitung und -codierung [1] genannt. Rekonfigurierbare Prozessoren werden daher ähnlich wie DSPs oder Netzwerkprozessoren in speziellen Applikationsfeldern verstärkt zum Einsatz kommen.

Hardware-Architekturen

Historisch gesehen haben sich rekonfigurierbare Architekturen aus dem Einsatz von Field Programmable Gate Arrays (FPGAs) heraus entwickelt. Hierbei handelt es sich um Logikbausteine, die aus einer großen Zahl frei programmierbarer Basisblöcke bestehen. Auch die Verbindungen der Basisblöcke untereinander lassen sich frei programmieren. Im Falle rekonfigurierbarer Architekturen bestehen die Basisböcke aus Tabellen, in denen für eine relativ kleine Zahl von binären Eingangsvariablen ein Funktionswert abgelegt werden kann. Da diese Tabellen in Form kleiner RAMs realisiert werden, kann ihr Inhalt beliebig oft ausgetauscht werden. Ebenso lassen sich die Verbindungen zwischen den Basisblöcken beliebig oft neu konfigurieren.

Da im Falle von FPGAs die Funktionalität und die Verbindungen für einzelne Bits realisiert werden, spricht man hier auch von feingranularen Architekturen. Ein großer Teil der Chipfläche wird in diesem Fall für die Speicherung und das Management der Konfiguration verwendet. In vielen Fällen ist eine so detaillierte Kontrolle der Funktionalität aber gar nicht erforderlich. Sehr oft sollen auf einem Bündel von binären Signalen koordinierte Operationen durchgeführt werden (z.B. die Addition zweier 8-Bit-Zahlen, etc.). Daher haben sich neben den feingranularen Architekturen auch grobgranulare Architekturen entwickelt, bei denen ein Basisblock ein Wort oder zumindest eine größere Bit-Gruppe verarbeitet. Die Verbindung der Basisblöcke und die konkrete Funktion des Basisblocks kann ebenso individuell bestimmt und zur Laufzeit verändert werden. Häufig werden solche Strukturen im Gegensatz zu FPGAs als Coarse Grain Reconfigurable Array (CGRA) bezeichnet. Durch die drastisch eingeschränkten Konfigurationsmöglichkeiten wird wesentlich weniger Konfigurationsspeicher benötigt als bei FPGAs was auch den Leistungsverbrauch signifikant senkt. Die Basis-Funktionsblöcke lassen sich darüber hinaus ebenso effizient realisieren wie bei Standard-Prozessoren, was eine ähnlich hohe Taktung (im GHz Bereich) ermöglicht.

In jüngerer Zeit werden auch Ansätze untersucht, die verschiedene Granularitäten miteinander kombinieren. Solche Multi Grain Architekturen stellen jedoch besonders hohe Anforderungen an die Werkzeuge.

FPGAs und CGRAs stellen zwar die Basis rekonfigurierbarer Architekturen dar, brauchen aber zum wirklichen Funktionieren noch weitere Komponenten um den Rekonfigurationsprozess zu managen und um Anwendungsanteile zu übernehmen, die sich schlecht auf diese Techniken abbilden lassen. Daher werden FPGAs und CGRAs meistens mit General-Purpose-Prozessoren gekoppelt, die diese Aufgaben in der Software übernehmen können. Die Kopplung kann dabei auf verschiedene Arten realisiert werden: als Teil des Prozessors (dann meistens integriert in die Pipeline), als Peripherie- Komponente, die durch den Prozessor kontrolliert wird, oder aber als eigenständiger Prozessor, der quasi gleichberechtigt parallel zum normalen Prozessor arbeitet. Die Art der Anbindung hat dabei Auswirkungen auf die Effektivität und die erreichbare Beschleunigung der Anwendung.

Software-Tools

Die Abbildung eines Anwendungsprogramms auf eine räumliche, oder flächige, rechnende Struktur ist potenziell sehr aufwändig. Mit immer komplizierter werdenden Anwendungen und immer größeren rekonfigurierbaren Flächen ist eine manuelle Umsetzung nicht mehr praktikabel. Stattdessen kommen heute Flüsse bestehend aus einer ganzen Reihe von speziellen Software-Werkzeugen zum Einsatz. Das Prinzip des räumlich verteilten Rechnens zielt auf die Ausnutzung einer höheren Parallelität ab. Aus diesem Grund ist es naheliegend, in einer Hochsprache verfasste Programme durch Übersetzungstechniken (ähnlich den bei der Kompilierung für Parallelrechner verwendeten) zu bearbeiten. Ein Hochsprachen-Compiler für einen rekonfigurierbaren Rechner hat aber ungleich mehr Freiheitsgrade zur Verfügung: Hier kann der Compiler einen bunten Mix aus Vektorrechnungen (SIMD), unabhängiger Parallelverarbeitung (MIMD), systolischen Arrays und vielen anderen Techniken der Rechnerarchitektur verwenden, um das Eingabeprogramm optimal abzubilden. Dabei sind auch Kombinationen der zeitlichen und räumlichen Verteilung der Berechnung denkbar. Diese Idee wurde bei den oben vorgestellten Rechnern, die einen Software-programmierbaren Prozessor mit einer rekonfigurierbaren Recheneinheit verbinden, bereits auf der Ebene der Systemarchitektur berücksichtigt. Auf einem solchen Rechner ist es wünschenswert, dass die automatischen Werkzeuge auch die Aufteilung der Berechnung auf die unterschiedlichen Recheneinheiten, die sogenannte Partitionierung, vornehmen.

Automatische Werkzeuge können auch bei der Lösung eines verwandten Problems helfen, nämlich der Planung einer Ablauffolge von Berechnungen derart, dass die für eventuell erforderliche Rekonfigurationsvorgänge selbst benötigte Zeit minimiert wird. Nachdem der Compiler auf diese Art und Weise eine abstrakte Beschreibung der partitionierten und parallelisierten Berechnung erstellt hat, müssen diese nun auf die rechnende Fläche der RCU übertragen werden. Dies geschieht in mehreren Schritten: Zunächst werden die einzelnen abstrakten Rechenoperationen auf die tatsächlich auf dem rekonfigurierbaren Baustein verfügbaren Hardware- Rechenblöcke abgebildet. Bei feingranularen Bausteinen wird eine Rechenoperation in der Regel aus mehreren Basisblöcken zusammengesetzt (beispielsweise eine Addition aus einzelnen Bit-Slices). Gröber granulare Bausteine erlauben die Realisierung mehrerer Rechenoperationen auf einem Basisblock (z.B. die Kombination einer Addition und einer Multiplikation in einen Multiply-Accumulate-Block).

Nun gilt es, die Basisblöcke tatsächlich geometrisch den einzelnen Positionen auf dem rekonfigurierbaren Baustein zuzuordnen. Dafür kann aus der großen Auswahl von Platzierungsalgorithmen geschöpft werden, die auch im VLSI-Entwurf genutzt werden Hier sind oftmals nur geringfügige Änderungen an den Kostenfunktionen erforderlich, um den speziellen Eigenschaften der rekonfigurierbaren Bausteine Rechnung zu tragen.

Die einzelnen Basisblöcke müssen jetzt noch miteinander verbunden werden. Auf einigen wenigen rekonfigurierbaren Bausteinen geschieht dies zur Ausführungszeit der Berechnung durch ein Network-on-Chip, das flexibel Datenpakete zwischen allen Basisblöcken übertragen kann. Üblicherweise werden aber die Verbindungen bereits vorher durch die Berechnung der passenden Zustände für die einzelnen programmierbaren Schalter des rekonfigurierbaren Bausteins festgelegt. Hierbei handelt es sich um eine Art Verdrahtungsproblem, das allerdings einen ganz anderen Charakter als vergleichbare Probleme des klassischen VLSI-Entwurfs hat: Die Anzahl der auf dem rekonfigurierbaren Baustein verfügbaren Verbindungen ist bei dessen Herstellung festgelegt, die ermittelte Verdrahtung darf diese Ressourcengrenzen nicht überschreiten. Aspekte wie die Minimierung der Verzögerungsdauer oder des Energieverbrauchs sind daher nur nachrangige Ziele.

Nach erfolgreichem Abschluss dieser drei Phasen ist die Umsetzung der durch den Compiler vorgegebenen Mikroarchitektur für den rekonfgurierbaren Baustein nun vollständig beschrieben. Aus den Abbildungs-, Platzierungs- und Verdrahtungsangaben kann jetzt der sogenannte Konfigurations-Bit-Strom bestimmt werden. Dieser fasst alle Daten in einem sehr Hardware-nahen Format zusammen und kann so direkt in den rekonfigurierbaren Baustein geladen werden, der ab dann die gewünschte Funktion ausführt. Die hier beschriebenen Software-Werkzeuge haben allerdings sehr verschiedene Reifegrade. Die Zieltechnologie-nahen Schritte (z.B. Platzieren und Verdrahten auf den rekonfigurierbaren Bausteinen) werden nach mehr als 20-jähriger Forschungsarbeit seit der Einführung der ersten FPGAs recht gut beherrscht. Die dafür verwendeten Entwurfswerkzeuge sind auch für den industriellen Einsatz ausgereift, Verbesserungen finden hier in der Regel nur punktuell statt. Auf den oberen Entwurfsebenen (z.B. automatische Hardware-/Software-Compilierung) bietet sich leider ein anderes Bild: Trotz einiger Erfolge bei der Kompilierung von Anwendungsgebietsspezifschen Sprachen (z.B. einer Untermenge von MATLAB/Simulink im Bereich der digitalen Signalverarbeitung) gibt es auch heute noch keinen umfassenden durchgehenden Entwurfsfluss zur Verarbeitung allgemein höherer Programmiersprachen (C/C++, Java, etc.).

Die industrielle und akademische Forschung arbeitet zwar intensiv an der Lösung der Probleme, bisher sind aber bestenfalls stark eingeschränkte Prototypen entsprechender Werkzeuge verfügbar. Anwendungen für rekonfigurierbare Rechner werden daher überwiegend noch mit den Mitteln des klassischen digitalen Schaltungsentwurfs (z.B. Logiksynthese aus Hardware-Beschreibungssprachen wie Verilog oder VHDL) realisiert und erfordern z.B. auch weitergehende Kenntnisse der Computerarchitektur.

Das Gebiet der Entwurfswerkzeuge bietet daher auch für die vom Schaltungsentwurf etwas weiter entfernte Informatik noch viele fruchtbare Forschungsthemen.

Fazit

Rekonfigurierbare Architekturen konnten in der jüngeren Vergangenheit ihr hohes Potenzial in realen Anwendungen unter Beweis stellen. Sie bieten oft wesentlich bessere Performanz oder Energieeffizienz als traditionelle Lösungen auf Prozessorbasis. Andererseits offerieren sie eine wesentlich höhere Flexibilität als reine Hardware-Lösungen auf Basis von anwendungsspezifischen Schaltungen. Auch die großen Prozessorhersteller haben diese Vorteile erkannt und entwickeln rekonfigurierbare Module, die in herkömmlichen Rechnern anstelle von Prozessoren eingesetzt werden können [5]. Zur Programmierung dieser Module ist allerdings noch erhebliches Spezialwissen erforderlich, da Werkzeuge zur automatischen Hardware-/Software- Partionierung einer Anwendung noch nicht in allgemeingültiger Formvorliegen. Die Entwicklung dieser Software-Werkzeuge – insbesondere für die höheren Schichten des Übersetzungsvorgangs – stellt immer noch eine große Herausforderung der Informatik dar. Hier bietet sich also ein weites Feld für Forschungsarbeiten und Produktentwicklung.

Literatur

1. Arbelo C, Kanstein A, L´opez S, L´opez JF, Berekovic M, Sarmiento R, Mignolet J-Y (2007) Mapping control-intensive video kernels onto a coarse-grain reconfigurable architecture: the h.264/avc deblocking filter. In: DATE ’07: Proceedings of the conference on Design, Automation and Test in Europe, S 177–182, San Jose, CA, USA. EDA Consortium

2. Bower JA, Thomas DB, Luk W, Mencer O (2006) A reconfigurable simulation framework for financial computation. In: IEEE International Conference on Reconfigurable Computing and FPGAs (ReConFig), September 2006 3

. Hauck S, DeHon A (Hrsg) (2008) Reconfigurable Computing the theory and practice of FPGA-based computation. Morgan Kaufman Publishers, San Francisco

4. Mei B-F, Berekovic M, Mignolet J-Y (2007) ADRES and DRESC: architecture and compiler for coarse-grain reconfigurable processors. In: Vassiliadis S, Soudris D (Hrsg) Fine- and Coarse-Grain Reconfigurable Computing. Springer, Heidelberg

5. Merritt R (2006) Shifting battleground. www.eetimes.com/showArticle.jhtml

6. Moore GE (1965) Cramming more components onto integrated circuits. Electronics 38(8):4

7. Sotiriade E, Dollas A (2007) A general reconfigurable architecture for the BLAST algorithm. J VLSI Signal Proc Syst 48(3):198–208

Autoren und Copyright

Prof. Dr. Mladen Berekovic
TU Braunschweig
Institut für Datentechnik und Kommunikationsnetze
Hans-Sommer-Str. 66
38106 Braunschweig
E-Mail

Prof. Dr. Christian Hochberger
TU Dresden, Fakultät Informatik
Nöthnitzer Straße 46
01187 Dresden
E-Mail

Prof. Dr. Andreas Koch
TU Darmstadt, Fachbereich Informatik
Fachgebiet Eingebettete Systeme und ihre Anwendungen
Hochschulstr. 10
64289 Darmstadt
E-Mail

© Springer-Verlag 2008