Rekonfigurierbares Computing - Reconfigurable computing

Rekonfigurierbares Computing ist eine Computerarchitektur, die einen Teil der Flexibilität von Software mit der hohen Leistung von Hardware kombiniert, indem sie mit sehr flexiblen Hochgeschwindigkeits-Computing-Strukturen wie feldprogrammierbaren Gate-Arrays (FPGAs) verarbeitet wird. Der Hauptunterschied im Vergleich zur Verwendung herkömmlicher Mikroprozessoren besteht in der Möglichkeit, zusätzlich zum Kontrollfluss wesentliche Änderungen am Datenpfad selbst vorzunehmen . Andererseits besteht der Hauptunterschied zu kundenspezifischer Hardware, dh anwendungsspezifischen integrierten Schaltungen (ASICs), in der Möglichkeit, die Hardware während der Laufzeit anzupassen, indem eine neue Schaltung auf die rekonfigurierbare Struktur "geladen" wird.

Geschichte

Das Konzept des rekonfigurierbaren Rechnens existiert seit den 1960er Jahren, als Gerald Estrin in seiner Arbeit das Konzept eines Computers vorschlug, der aus einem Standardprozessor und einer Reihe "rekonfigurierbarer" Hardware besteht. Der Hauptprozessor würde das Verhalten der rekonfigurierbaren Hardware steuern. Letzteres wäre dann so zugeschnitten, dass es eine bestimmte Aufgabe wie Bildverarbeitung oder Mustervergleich so schnell wie eine dedizierte Hardware erledigt. Sobald die Aufgabe erledigt war, konnte die Hardware angepasst werden, um eine andere Aufgabe zu erledigen. Dies führte zu einer hybriden Computerstruktur, die die Flexibilität von Software mit der Geschwindigkeit von Hardware kombiniert.

In den 1980er und 1990er Jahren gab es eine Renaissance in diesem Forschungsbereich mit vielen vorgeschlagenen rekonfigurierbaren Architekturen, die in Industrie und Wissenschaft entwickelt wurden, wie: Copacobana, Matrix, GARP, Elixent, NGEN, Polyp, MereGen, PACT XPP, Silicon Hive, Montium, Plejaden, Morphosys und PiCoGA. Solche Designs waren durch den ständigen Fortschritt der Siliziumtechnologie möglich, die es ermöglichte, komplexe Designs auf einem Chip zu implementieren. Einige dieser massiv parallel rekonfigurierbaren Computer wurden in erster Linie für spezielle Subdomänen wie molekulare Evolution, neuronale oder Bildverarbeitung gebaut. Der weltweit erste kommerzielle rekonfigurierbare Computer, der Algotronix CHS2X4, wurde 1991 fertiggestellt. Es war kein kommerzieller Erfolg, aber vielversprechend genug, dass Xilinx (der Erfinder des Field-Programmable Gate Array , FPGA) die Technologie kaufte und die Mitarbeiter von Algotronix anstellte . Später ermöglichten Maschinen erste Demonstrationen wissenschaftlicher Prinzipien, wie die spontane räumliche Selbstorganisation der genetischen Codierung mit MereGen.

Theorien

Tredennicks Klassifikation

Tabelle 1: Nick Tredennicks Paradigm-Klassifikationsschema
Frühe historische Computer:
  Programmierquelle
Ressourcen behoben keiner
Algorithmen behoben keiner
von Neumann-Computer:
  Programmierquelle
Ressourcen behoben keiner
Algorithmen variabel Software (Anweisungsströme)
Rekonfigurierbare Computersysteme:
  Programmierquelle
Ressourcenvariable Configware (Konfiguration)
Algorithmen variabel Flowware (Datenströme)

Das grundlegende Modell des rekonfigurierbaren Rechenmaschine Paradigmas, das datenstrombasierten anti Maschine wird durch die Unterschiede zu anderen Maschinen Paradigmen gut veranschaulicht , die zuvor eingeführt wurden, wie durch gezeigt Nick Tredennick ‚s folgendes Klassifizierungsschema von Rechen Paradigmen (siehe„Table 1: Nick Tredennicks Paradigm Classification Scheme").

Hartensteins Xputer

Der Informatiker Reiner Hartenstein beschreibt rekonfigurierbares Computing im Sinne einer Anti-Maschine , die seiner Meinung nach einen grundlegenden Paradigmenwechsel weg von der konventionelleren von Neumann-Maschine darstellt . Hartenstein nennt es Reconfigurable Computing Paradox, dass die Migration von Software zu Configware (Software zu FPGA ) zu gemeldeten Beschleunigungsfaktoren von bis zu mehr als vier Größenordnungen sowie zu einer Reduzierung des Stromverbrauchs um bis zu fast führt vier Größenordnungen – obwohl die technologischen Parameter von FPGAs um etwa vier Größenordnungen hinter der Gordon-Moore-Kurve liegen und die Taktfrequenz deutlich niedriger ist als die von Mikroprozessoren. Dieses Paradox wird teilweise durch das Von-Neumann-Syndrom erklärt .

High Performance Computing

High-Performance Reconfigurable Computing (HPRC) ist eine Computerarchitektur Reconfigurable Computing-basierten Beschleuniger wie die Kombination von Field-Programmable - Gate - Array mit CPUs oder Multi-Core - Prozessoren .

Die Zunahme der Logik in einem FPGA hat es ermöglicht, größere und komplexere Algorithmen in das FPGA zu programmieren. Der Anschluss eines solchen FPGA an eine moderne CPU über einen Hochgeschwindigkeitsbus, wie PCI Express , hat es der konfigurierbaren Logik ermöglicht, eher wie ein Coprozessor als wie ein Peripheriegerät zu fungieren . Dies hat rekonfigurierbares Computing in den Bereich der Hochleistungsrechner gebracht .

Darüber hinaus hat die Replikation eines Algorithmus auf einem FPGA oder die Verwendung einer Vielzahl von FPGAs die Herstellung rekonfigurierbarer SIMD- Systeme ermöglicht, bei denen mehrere Rechenvorrichtungen gleichzeitig mit unterschiedlichen Daten arbeiten können, was hochgradig paralleles Rechnen ist .

Diese heterogene Systemtechnik wird in der Computerforschung und insbesondere im Supercomputing verwendet . Ein Papier aus dem Jahr 2008 berichtete über Beschleunigungsfaktoren von mehr als 4 Größenordnungen und Energieeinsparungsfaktoren von bis zu fast 4 Größenordnungen. Einige Supercomputerfirmen bieten heterogene Verarbeitungsblöcke an, einschließlich FPGAs als Beschleuniger. Ein Forschungsgebiet ist die für solche heterogenen Systeme erzielte Twin-Paradigma-Programmierwerkzeugflussproduktivität.

Die US National Science Foundation verfügt über ein Zentrum für High-Performance Reconfigurable Computing (CHREC). Im April 2011 fand in Europa die vierte Many-Core and Reconfigurable Supercomputing Conference statt.

Kommerzielle rekonfigurierbare Hochleistungs-Computersysteme beginnen mit der Ankündigung, dass IBM FPGAs in seinen POWER- Prozessor integriert.

Teilweise Neukonfiguration

Eine teilweise Neukonfiguration ist der Prozess des Änderns eines Teils der rekonfigurierbaren Hardware- Schaltung, während der andere Teil seine vorherige Konfiguration beibehält. Feldprogrammierbare Gate-Arrays werden oft als Unterstützung für eine teilweise Neukonfiguration verwendet.

Elektronische Hardware kann wie Software modular aufgebaut werden, indem Unterkomponenten und dann übergeordnete Komponenten erstellt werden, um diese zu instanziieren. In vielen Fällen ist es sinnvoll, eine oder mehrere dieser Subkomponenten austauschen zu können, während das FPGA noch in Betrieb ist.

Normalerweise erfordert die Neukonfiguration eines FPGA, dass es im Reset gehalten wird, während ein externer Controller ein Design darauf neu lädt. Die partielle Rekonfiguration ermöglicht den weiteren Betrieb kritischer Teile des Designs, während ein Controller entweder auf dem FPGA oder außerhalb davon ein partielles Design in ein rekonfigurierbares Modul lädt. Die teilweise Neukonfiguration kann auch verwendet werden, um Platz für mehrere Designs zu sparen, indem nur die Teildesigns gespeichert werden, die sich zwischen den Designs ändern.

Ein übliches Beispiel dafür, wann eine teilweise Neukonfiguration nützlich wäre, ist der Fall eines Kommunikationsgeräts. Wenn das Gerät mehrere Verbindungen steuert, von denen einige eine Verschlüsselung erfordern , wäre es nützlich, verschiedene Verschlüsselungskerne laden zu können, ohne den gesamten Controller herunterzufahren.

Eine teilweise Neukonfiguration wird nicht auf allen FPGAs unterstützt. Ein spezieller Software-Flow mit Schwerpunkt auf modularem Aufbau ist erforderlich. Typischerweise werden die Designmodule entlang gut definierter Grenzen innerhalb des FPGA gebaut, die eine spezielle Abbildung des Designs auf die interne Hardware erfordern.

Von der Funktionalität des Designs kann die teilweise Rekonfiguration in zwei Gruppen unterteilt werden:

  • dynamische partielle Rekonfiguration , auch als aktive partielle Rekonfiguration bekannt - ermöglicht es, den Teil des Geräts zu ändern, während der Rest eines FPGA noch läuft;
  • statische partielle Rekonfiguration - das Gerät ist während des Rekonfigurationsprozesses nicht aktiv. Während die Teildaten in das FPGA gesendet werden, wird der Rest des Gerätes gestoppt (im Shutdown-Modus) und nach Abschluss der Konfiguration wieder hochgefahren.

Aktuelle Systeme

Computeremulation

Ein FPGA-Board wird verwendet, um den Vector-06C-Computer nachzubauen

Mit dem Aufkommen erschwinglicher FPGA-Boards versuchen Studenten- und Bastlerprojekte, alte Computer nachzubauen oder neuartigere Architekturen zu implementieren. Solche Projekte werden mit rekonfigurierbarer Hardware (FPGAs) erstellt, und einige Geräte unterstützen die Emulation mehrerer Vintage-Computer mit einer einzigen rekonfigurierbaren Hardware ( C-One ).

COPACOBANA

Ein vollständig FPGA-basierter Computer ist der COPACOBANA, der Cost Optimized Codebreaker and Analyzer und sein Nachfolger RIVYERA. Ein Spin-off-Unternehmen SciEngines GmbH des COPACOBANA-Projekts der Universitäten Bochum und Kiel in Deutschland setzt die Entwicklung vollständig FPGA-basierter Computer fort.

Mitrionik

Mitrionics hat ein SDK entwickelt, mit dem Software, die in einer einzigen Zuweisungssprache geschrieben wurde, auf FPGA-basierten Computern kompiliert und ausgeführt werden kann. Die Softwaresprache Mitrion-C und der Mitrion-Prozessor ermöglichen Softwareentwicklern das Schreiben und Ausführen von Anwendungen auf FPGA-basierten Computern auf dieselbe Weise wie bei anderen Computertechnologien, wie z Einheiten („PPUs“), Multi-Core-CPUs und herkömmliche Single-Core-CPU-Cluster. (geschlossen)

National Instruments

National Instruments hat ein Hybrid-Embedded-Computing-System namens CompactRIO entwickelt . Es besteht aus einem rekonfigurierbaren Chassis mit dem anwenderprogrammierbaren FPGA, Hot-Swap-I/O-Modulen, einem Echtzeit-Controller für deterministische Kommunikation und Verarbeitung und einer grafischen LabVIEW-Software für die schnelle RT- und FPGA-Programmierung.

Xilinx

Xilinx hat zwei Arten der teilweisen Neukonfiguration von FPGA-Geräten entwickelt: modulbasiert und differenzbasiert . Die modulbasierte partielle Neukonfiguration ermöglicht die Neukonfiguration unterschiedlicher modularer Teile des Designs, während die differenzbasierte partielle Neukonfiguration verwendet werden kann, wenn eine kleine Änderung an einem Design vorgenommen wird.

Intel

Intel unterstützt die teilweise Neukonfiguration seiner FPGA-Geräte auf 28-nm-Geräten wie Stratix V und auf den 20-nm-Arria 10-Geräten. Der Intel FPGA-Teilrekonfigurationsablauf für Arria 10 basiert auf der hierarchischen Designmethodik der Quartus Prime Pro-Software, bei der Benutzer physische Partitionen des FPGA erstellen, die zur Laufzeit neu konfiguriert werden können, während der Rest des Designs weiterläuft. Die Quartus Prime Pro-Software unterstützt auch hierarchische teilweise Neukonfiguration und Simulation von teilweiser Neukonfiguration.

Klassifizierung von Systemen

Als aufstrebendes Gebiet werden Klassifikationen rekonfigurierbarer Architekturen immer noch entwickelt und verfeinert, wenn neue Architekturen entwickelt werden; Bisher wurde keine vereinheitlichende Taxonomie vorgeschlagen. Es können jedoch mehrere wiederkehrende Parameter verwendet werden, um diese Systeme zu klassifizieren.

Die Granularität

Die Granularität der rekonfigurierbaren Logik ist definiert als die Größe der kleinsten Funktionseinheit (Konfigurierbarer Logikblock, CLB), die von den Mapping-Tools adressiert wird. Eine hohe Granularität, die auch als feingranular bezeichnet werden kann, impliziert oft eine größere Flexibilität bei der Implementierung von Algorithmen in die Hardware. Dies ist jedoch mit einem Nachteil in Bezug auf erhöhte Leistung, Fläche und Verzögerung aufgrund einer größeren Menge an Routing, die pro Berechnung erforderlich ist, verbunden. Feinkörnige Architekturen arbeiten auf der Manipulationsebene auf Bitebene; während grobkörnige Verarbeitungselemente (rekonfigurierbare Datenpfadeinheit, rDPU) besser für Standard-Datenpfadanwendungen optimiert sind. Einer der Nachteile grobkörniger Architekturen besteht darin, dass sie dazu neigen, einen Teil ihrer Nutzung und Leistung zu verlieren, wenn sie kleinere Berechnungen durchführen müssen, als ihre Granularität bietet, zum Beispiel würde ein Add-On um ein Bit zu einer vier Bit breiten Funktionseinheit drei Bits verschwenden . Dieses Problem kann gelöst werden, indem ein grobkörniges Array ( rekonfigurierbares Datenpfad-Array , rDPA) und ein FPGA auf demselben Chip vorhanden sind.

Grobkörnige Architekturen ( rDPA ) sind für die Implementierung von Algorithmen gedacht, die Datenpfade mit Wortbreite (rDPU) benötigen. Da ihre Funktionsblöcke für große Berechnungen optimiert sind und typischerweise wortbreite Arithmetik-Logik-Einheiten (ALU) umfassen, führen sie diese Berechnungen schneller und mit höherer Energieeffizienz durch als ein Satz miteinander verbundener kleinerer Funktionseinheiten; Dies liegt daran, dass die Anschlussdrähte kürzer sind, was zu einer geringeren Drahtkapazität und damit zu schnelleren und leistungsärmeren Designs führt. Eine potenzielle unerwünschte Folge größerer Rechenblöcke ist, dass, wenn die Größe der Operanden nicht mit dem Algorithmus übereinstimmt, eine ineffiziente Nutzung von Ressourcen resultieren kann. Oftmals ist die Art der auszuführenden Anwendungen im Voraus bekannt, so dass die Logik-, Speicher- und Routing-Ressourcen angepasst werden können, um die Leistung des Geräts zu verbessern, während dennoch ein gewisses Maß an Flexibilität für zukünftige Anpassungen bereitgestellt wird. Beispiele hierfür sind domänenspezifische Arrays, die darauf abzielen, eine bessere Leistung in Bezug auf Leistung, Fläche und Durchsatz als ihre allgemeineren, feinkörnigeren FPGA- Cousins ​​durch Reduzierung ihrer Flexibilität zu erzielen.

Rekonfigurationsrate

Die Konfiguration dieser rekonfigurierbaren Systeme kann zur Bereitstellungszeit, zwischen Ausführungsphasen oder während der Ausführung erfolgen. In einem typischen rekonfigurierbaren System wird ein Bitstrom verwendet, um das Gerät zur Bereitstellungszeit zu programmieren. Feinkörnige Systeme erfordern von Natur aus eine längere Konfigurationszeit als grobkörnigere Architekturen, da mehr Elemente adressiert und programmiert werden müssen. Grobkörnigere Architekturen profitieren daher von einem potenziell geringeren Energiebedarf, da weniger Informationen übertragen und genutzt werden. Intuitiv ist der Energieverbrauch umso geringer, je langsamer die Rekonfigurationsrate ist, da sich die damit verbundenen Energiekosten der Rekonfiguration über einen längeren Zeitraum amortisieren. Die teilweise Neukonfiguration soll ermöglichen, dass ein Teil des Geräts neu programmiert wird, während ein anderer Teil noch aktive Berechnungen durchführt. Eine teilweise Neukonfiguration ermöglicht kleinere rekonfigurierbare Bitströme, wodurch keine Energie für die Übertragung redundanter Informationen in dem Bitstrom verschwendet wird. Eine Komprimierung des Bitstroms ist möglich, jedoch muss eine sorgfältige Analyse durchgeführt werden, um sicherzustellen, dass die durch die Verwendung kleinerer Bitströme eingesparte Energie nicht durch die zum Dekomprimieren der Daten erforderliche Berechnung aufgewogen wird.

Host-Kopplung

Häufig wird das rekonfigurierbare Array als ein Verarbeitungsbeschleuniger verwendet, der an einen Host-Prozessor angeschlossen ist. Die Kopplungsebene bestimmt die Art der Datenübertragung, Latenz, Leistung, Durchsatz und Overhead, die bei der Verwendung der rekonfigurierbaren Logik beteiligt sind. Einige der intuitivsten Designs verwenden einen Peripheriebus, um eine coprozessorartige Anordnung für das rekonfigurierbare Array bereitzustellen. Es gab jedoch auch Implementierungen, bei denen die rekonfigurierbare Struktur viel näher am Prozessor liegt, einige wurden sogar unter Verwendung der Prozessorregister in den Datenpfad implementiert. Die Aufgabe des Host-Prozessors besteht darin, die Steuerfunktionen auszuführen, die Logik zu konfigurieren, Daten zu planen und externe Schnittstellen bereitzustellen.

Routing/Verbindungen

Die Flexibilität bei rekonfigurierbaren Geräten beruht hauptsächlich auf ihrer Routing-Verbindung. Ein von den FPGA- Anbietern Xilinx und Altera populärer Verbindungstyp ist das Layout im Island-Stil, bei dem Blöcke in einem Array mit vertikalem und horizontalem Routing angeordnet sind. Ein Layout mit unzureichendem Routing kann unter schlechter Flexibilität und Ressourcenauslastung leiden und daher eine begrenzte Leistung bereitstellen. Wenn zu viele Verbindungen bereitgestellt werden, erfordert dies mehr Transistoren als nötig und damit mehr Siliziumfläche, längere Drähte und mehr Stromverbrauch.

Herausforderungen für Betriebssysteme

Eine der Hauptherausforderungen für rekonfigurierbares Computing besteht darin, eine höhere Entwurfsproduktivität zu ermöglichen und eine einfachere Möglichkeit zur Verwendung rekonfigurierbarer Computersysteme für Benutzer bereitzustellen, die mit den zugrunde liegenden Konzepten nicht vertraut sind. Eine Möglichkeit, dies zu tun, besteht darin, Standardisierung und Abstraktion bereitzustellen, die normalerweise von einem Betriebssystem unterstützt und durchgesetzt werden.

Eine der Hauptaufgaben eines Betriebssystems besteht darin, die Hardware zu verbergen und Programme (und ihre Programmierer) mit schönen, sauberen, eleganten und konsistenten Abstraktionen zu präsentieren, mit denen man stattdessen arbeiten kann. Mit anderen Worten, die beiden Hauptaufgaben eines Betriebssystems sind Abstraktion und Ressourcenmanagement .

Abstraktion ist ein leistungsfähiger Mechanismus, um komplexe und unterschiedliche (Hardware-)Aufgaben auf wohldefinierte und allgemeine Weise zu handhaben. Eine der elementarsten OS-Abstraktionen ist ein Prozess. Ein Prozess ist eine laufende Anwendung, die den Eindruck hat (vom Betriebssystem bereitgestellt), dass sie eigenständig auf der zugrunde liegenden virtuellen Hardware ausgeführt wird. Dies kann durch das Konzept von Threads gelockert werden, wodurch verschiedene Aufgaben gleichzeitig auf dieser virtuellen Hardware ausgeführt werden können, um die Parallelität auf Aufgabenebene auszunutzen. Damit verschiedene Prozesse und Threads ihre Arbeit koordinieren können, müssen Kommunikations- und Synchronisationsmethoden vom Betriebssystem bereitgestellt werden.

Neben der Abstraktion ist eine Ressourcenverwaltung der zugrunde liegenden Hardwarekomponenten erforderlich, da die virtuellen Computer, die den Prozessen und Threads vom Betriebssystem bereitgestellt werden, verfügbare physische Ressourcen (Prozessoren, Speicher und Geräte) räumlich und temporär gemeinsam nutzen müssen.

Siehe auch

Verweise

Weiterlesen

  • Cardoso, Abgeordneter João; Hübner, Michael (Hrsg.), Reconfigurable Computing: From FPGAs to Hardware/Software Codesign , Springer, 2011.
  • S. Hauck und A. DeHon, Reconfigurable Computing: The Theory and Practice of FPGA-Based Computing , Morgan Kaufmann , 2008.
  • J. Henkel, S. Parameswaran (Hrsg.): Designing Embedded Processors. Eine Low-Power-Perspektive; Springer Verlag, März 2007
  • J. Teich (Herausgeber) et al.: Reconfigurable Computing Systems. Sonderausgabe des Journal it — Informationstechnologie , Oldenbourg Verlag, München. vol. 49(2007) Ausgabe 3
  • TJ Todman, GA Constantinides, SJE Wilton, O. Mencer, W. Luk und PYK Cheung, „Reconfigurable Computing: Architectures and Design Methods“, IEEE Proceedings: Computer & Digital Techniques, Vol. 2, No. 152, Nr. 2, März 2005, S. 193–208.
  • A. Zomaya (Herausgeber): Handbook of Nature-Inspired and Innovative Computing: Integrating Classical Models with Emerging Technologies; Springer Verlag, 2006
  • JM Arnold und DA Buell, „VHDL-Programmierung auf Splash 2“, in More FPGAs, Will Moore und Wayne Luk, Herausgeber, Abingdon EE & CS Books, Oxford, England, 1994, S. 182–191. (Proceedings, International Workshop on Field-Programmable Logic, Oxford, 1993.)
  • JM Arnold, DA Buell, D. Hoang, DV Pryor, N. Shirazi, MR Thistle, "Splash 2 and its applications", Proceedings, International Conference on Computer Design, Cambridge, 1993, S. 482-486.
  • DA Buell und Kenneth L. Pocek, „Custom Computing Machines: An Introduction“, The Journal of Supercomputing , V. 9, 1995, S. 219–230.

Externe Links