Den Abgleich der verfügbaren Ressourcen erledigen meist Mano-Tools (Management and Orchestration). Um die verfügbaren Ressourcen optimal nutzen zu können, sind Mano-Tools die allsehenden Augen und allhörenden Ohren des Netzwerks, mit denen sich Prozesse in Bruchteilen von Sekunden ein- und ausschalten lassen. Wenn das Netzwerk eine nahezu unbegrenzte Menge an Verarbeitungsressourcen unterstützen würde, diese sich 1:1 kopieren und unendlich replizieren ließen, käme es auf das Management an. Das ist aber nicht der Fall, weshalb der Orchestrierungsaspekt auch an die verfügbaren Ressourcen gebunden ist.

eck-daten

FPGAs haben sich über Jahrzehnte hinweg weiterentwickelt und verfügen mittlerweile über eine hohe Leistungsfähigkeit. Ihre regelmäßige Architektur ist ein gutes Testfeld für neue Halbleiterfertigungsprozesse. Aus diesem Grund werden FPGAs auch stets mit den aktuellsten Prozessknoten hergestellt. Für Entwickler sind FPGAs eine wichtige Komponente zur Beschleunigung zeitkritischer Netzwerkfunktionen.

In diesem Zusammenhang würde das Beschleunigen einer Task bedeuten, mehr Ressourcen für deren Dauer zuzuweisen. Je mehr Ressourcen, desto kürzer ist die Task. Da die zugrundeliegende Hardware immer noch die gleiche ist, besteht eine ziemlich lineare Beziehung zwischen der Beschleunigung und der Anzahl der Ressourcen. Ist die Hardware jedoch dafür ausgelegt, einen bestimmten Typ oder Teil einer Task zu beschleunigen, könnte die Beschleunigung viel bedeutender sein.

Der Übergang von einer normalen, festverdrahteten Hardwareplattform zu etwas, das für eine bestimmte Task konfiguriert ist und sich dann für eine andere rekonfigurieren lässt, mag schwer vorstellbar sein, ist aber genau das, was FPGAs bieten. Sie sind rekonfigurierbare Hardwaresysteme, die auf vielfältige Weise zum Einsatz kommen können, um jede Art von Verarbeitungs-Task zu beschleunigen.

FPGAs in den Griff bekommen

Nur wer weiß, wie sich ein FPGA von einer MPU unterscheidet, kann auch ihre Leistungsfähigkeit erkennen. Die zweite Hälfte des Namens (Gate Array) beschreibt den Weg, wie sich das gesamte Potenzial des FPGA ausschöpfen lässt. Die hier in Frage kommenden Gates sind Logikgatter – die einfachen Bausteine jeder digitalen Schaltung. Zusammengesetzt in Zeilen und

Adobestock: 294290776

Viele FPGAs lassen sich heute in Echtzeit rekonfigurieren, während Bereiche des Bausteins noch in Betrieb sind. Adobestock: 294290776

Spalten bilden sie ein Array. Selbst der komplexeste Prozessor lässt sich in Blöcke von Logikgattern (einfachen ANDs und ORs) unterteilen, die zu Schiebern, Addierern, Multiplizierern, Flipflops, Registern und Akkumulatoren verbunden sind. Diese Granularität geht bei der heutigen groß angelegten Integration oft verloren, bei der einzelne Aktionen als komplette Funktionen vorverpackt und zu Prozessoren, ASICs oder System-on-a-Chip-Bausteinen (SoCs) zusammengesetzt sind.

Der „programmierbare“ Teil des Namens zeigt an, dass die Art und Weise, in der die Logikgatter miteinander verbunden sind, nicht vordefiniert ist. Dies bedeutet, dass es für ein FPGA keine vordefinierten Konfigurationen gibt. Bei einem hochgefahrenen FPGA handelt es sich im Wesentlichen um eine Anordnung nicht festgeschriebener Logik. Die Konfiguration erfolgt über Designdateien, die normalerweise außerhalb des Chips gespeichert sind und die der FPGA erst beim Einschalten lädt. Diese Dateien teilen dem FPGA mit, wie die Logik zu verknüpfen ist, um größere Funktionen zu erstellen. Dies können beispielsweise mehrere Addierer oder MACs sein, um eine Reihe von DSP-Funktionen zu erstellen. Entwickler erstellen diese Konfigurationen, oft mit Hilfe von IP-Bibliotheken, die bereits für eine bestimmte FPGA-Fabric validiert sind. Entwickler können Funktionen auch auf einer viel niedrigeren Ebene entwerfen und optimieren, um die gewünschte Performance zu erzielen.

Der Teil „Feld“ bezieht sich auf die Tatsache, dass die Konfiguration beim Einschalten erfolgt – jedes Mal, wenn jemand die Stromversorgung aus- und wieder einschaltet. Wenn ein FPGA hochfährt, lässt es sich auf verschiedene Arten konfigurieren. Tatsächlich ist es nicht einmal nötig, es aus- und wieder einzuschalten. Viele FPGAs lassen sich heute in Echtzeit rekonfigurieren, während Bereiche des Bausteins noch in Betrieb sind. Diese Fähigkeit, praktisch jede Task mit speziell dafür entwickelter Hardware auszuführen, macht den Wert von FPGAs in Hochleistungsanwendungen wie Rechenzentren deutlich.

Entwickeln mit FPGAs

Grundsätzlich sind Systeme, die sich rein über ihre Software definieren, durch ihre Hardware eingeschränkt. Dies ist bei MPUs der Fall: was immer sie in Software umsetzen, führen sie auch immer auf der gleichen zugrundeliegenden Hardware aus. Die Abstraktion zwischen beiden nehmen Compiler vor.

Es ist relativ einfach und vorteilhaft, homogene Multicore-Prozessoren in einem System einzusetzen, um eine Task mit symmetrischem Multiprocessing zu beschleunigen – aber jemand muss immer noch die Software schreiben, um den verfügbaren Hardware-Ressourcen zu entsprechen. Die Performance der Hardware wiederum ist durch das Design festgelegt; sie kann nur einer definierten Ausführungspipeline folgen und eine bekannte Anzahl von Operationen pro Sekunde ausführen. Selbstverständlich verwenden aktuelle Prozessorarchitekturen verschiedene Techniken, damit die Hardware die Software immer besser unterstützen kann, wie zum Beispiel Parallelität auf Befehlsebene, Superskalarität und VLIW.

Dies stellt eine größere Belastung für den Compiler dar, wenn er die verfügbare Hardwarearchitektur voll auszunutzen soll. Ist dies jedoch gut umgesetzt, kann es erhebliche Vorteile bieten. Bei einem FPGA muss die (normalerweise in Software definierte) Task nicht der Hardwarearchitektur entsprechen. Vielmehr ist das Gegenteil der Fall. Die Hardware entspricht der Task, die sich nicht mehr durch Software definieren lassen muss – zumindest nicht im herkömmlichen Sinne.

Gleichzeitige Ausführung

Adobestock: 123526629

Bei einem FPGA beschreibt die Software direkt die Hardware und ist damit von Natur aus parallel. Adobestock: 123526629

Der wohl einfachste Weg, ein FPGA mit einer MPU zu vergleichen, ist die Art und Weise, wie die Anwender mit der Software umgehen. In jedem herkömmlichen Prozessor-Core, auch wenn er Multitasking unterstützt, wird die High-Level-Software nacheinander ausgeführt. Die meisten höheren Softwaresprachen wie C bieten von sich aus keine Unterstützung für Parallelität oder gleichzeitige Ausführung. Parallelität bleibt dem Compiler überlassen.

Bei einem FPGA beschreibt die Software direkt die Hardware und ist damit von Natur aus parallel. Erfolgt also die Programmierung eines Multiplikators in FPGA-Software, dann ist er automatisch auch als Multiplikator in die Hardware implementiert. Noch einfacher ausgedrückt, die FPGA-Software führt jede Codezeile zur gleichen Zeit aus.

HDL, der Schlüssel zur FPGA-Nutzung

Die zur Definition der Hardwarestruktur eines FPGA verwendete Sprache ist syntaktisch ähnlich wie andere Hochsprachen und trägt zur besseren Unterscheidung die Bezeichnung Hardware-Beschreibungssprache (HDL; Hardware Description Language). Das Kompilieren einer HDL heißt Synthese. Der Entwicklungsablauf für ein FPGA ist dem eines ASIC sehr ähnlich. Entscheidend beim Design ist die Überprüfung, ob die Hardware den Spezifikationen entspricht. Da es sich um echte, gleichzeitig ausgeführte, Hardware handelt, ist das Timing ebenfalls zu überprüfen. Die Timing Closure kann eine der schwierigsten, aber entscheidendsten Phasen des Designs sein. Als Hilfe stehen hochentwickelte EDA-Tools zur Verfügung, um den gesamten Entwicklungszyklus zu vereinfachen.

FPGAs im Einsatz

Eine gute Möglichkeit, die Vorteile von FPGAs in einer realen Anwendung wie einem Rechenzentrum zu nutzen, ist eine Intel FPGA Programmable Acceleration Card (PAC). Intel bietet PACs auf Basis des Arria 10 GX FPGA und Stratix 10 SX FPGA an. Ein Beispiel ist die Intel FPGA PAC N3000 zur Beschleunigung von Netzwerkfunktionen. Sie enthält eine Netzwerkkarte (NIC; Network Interface Card) und virtualisiert die Netzwerkfunktion, was sie vor allem für Hersteller von Telekommunikationsgeräten und Anbietern virtueller Netzwerkfunktionen interessant macht.