FPGAs sind flexibel programmierbare Chips, die sich für spezialisierte Aufgaben mit hoher Parallelität und niedriger Latenz eignen. Im Artikel erfahren Sie, wie FPGAs funktionieren, wo sie eingesetzt werden und worin die Unterschiede zu CPUs und GPUs liegen. Wir beleuchten Vorteile, Nachteile und typische Anwendungsgebiete von FPGAs.
FPGA (Field Programmable Gate Array) sind programmierbare Halbleiterchips, deren interne Logik auch nach der Produktion noch anpassbar ist. Im Gegensatz zu herkömmlichen CPUs, bei denen Programme auf festgelegten Kernen laufen, lässt sich bei einer FPGA die Hardwarestruktur selbst gezielt für spezielle Aufgaben konfigurieren. Die FPGA-Technologie nimmt damit eine besondere Stellung zwischen universellen CPUs und spezialisierten ASICs ein: Sie kann beliebig oft umprogrammiert werden und bietet für bestimmte Anwendungen eine Leistung, die an dedizierte Hardware heranreicht.
Der Name Field Programmable Gate Array beschreibt die zentrale Eigenschaft dieser Technologie: "Field Programmable" bedeutet, dass sich die Chip-Konfiguration auch nach der Auslieferung beim Kunden verändern lässt - es ist kein neuer physischer Chip nötig. Das Herzstück einer FPGA bilden zahlreiche kleine, frei programmierbare Logikelemente, die je nach Aufgabe zu komplexen digitalen Schaltungen verbunden werden können.
Man kann sich eine FPGA wie einen riesigen elektronischen Baukasten vorstellen: Der Hersteller liefert Logikblöcke, Speicher und Verbindungen, der Entwickler entscheidet, wie sie kombiniert und genutzt werden.
Die Architektur der meisten digitalen Chips ist festgelegt. Bei einem Prozessor lassen sich Anzahl und Funktion der Kerne, Caches oder Ausführungseinheiten nicht per Software verändern. Programme steuern nur, welche Befehle das vorhandene System ausführt.
In einer FPGA ist der Ansatz grundlegend anders: Nach dem Laden der Konfiguration kann ein Teil der Logikelemente als Zähler, ein anderer als Schnittstellencontroller und ein weiterer als Signalprozessor agieren. Die Verbindungen und Funktionen werden vom Entwickler exakt vorgegeben. So kann ein und derselbe Chip je nach Konfiguration als Videoverarbeitungseinheit, Netzwerkknoten oder Steuerung für Industrieanlagen dienen - ohne dass sich die physische Lage der Transistoren ändert. Nur die Konfiguration der Logikblöcke und Verbindungen wird angepasst, wodurch elektrische Signale auf neue Bahnen gelenkt werden.
Ihr größter Vorteil spielt FPGA dort aus, wo sehr spezielle Aufgaben mit minimaler Latenz und hoher Parallelität gefragt sind. Beispielsweise lassen sich hardwarebasierte Verarbeitungspipelines realisieren, bei denen Daten in mehreren Stufen parallel verarbeitet werden. So erscheinen nach der Initialisierung der Pipeline Ergebnisse nahezu in jedem Taktzyklus.
Ein weiterer Pluspunkt ist die deterministische Verzögerung: Eine FPGA muss - anders als eine CPU - keine Kontextwechsel zwischen vielen Softwareprozessen durchführen. Ist die Schaltung für eine bestimmte Aufgabe entworfen, durchlaufen Signale vorhersagbare Hardwarestrukturen. FPGAs werden deshalb häufig in Echtzeitsystemen, Netzwerkhardware, Telekommunikation, industrieller Automatisierung, Video- und Signalverarbeitung, Messtechnik, Rechenzentren und als spezialisierte Beschleuniger eingesetzt.
Das Fundament jeder FPGA bilden programmierbare Logikblöcke mit kleinen Lookup-Tables (LUTs), Flip-Flops und Hilfslogik. LUTs speichern die Ergebnisse logischer Operationen für verschiedene Eingangskombinationen, sodass ein Block je nach Konfiguration AND, OR, XOR oder komplexere Funktionen übernehmen kann. Mit Flip-Flops werden Zustandsbits gehalten und die Schaltung synchronisiert. Durch Kombination dieser Elemente entstehen Zähler, Register, Automaten, Schnittstellencontroller oder sogar komplette Prozessor-Kerne.
Damit die Logikblöcke zusammenarbeiten, durchzieht ein Netzwerk aus programmierbaren Leitungen und Schaltern den Chip. Die Konfiguration legt nicht nur die Funktion jedes Blocks, sondern auch die Signalwege fest. So entsteht im Inneren eine maßgeschneiderte digitale Schaltung für die jeweilige Anwendung. Im Gegensatz zur CPU, bei der die Verbindungen fest sind, kann der Entwickler bei einer FPGA die Architektur tiefgreifend beeinflussen und parallele Operationen abbilden.
Moderne FPGAs enthalten neben universeller Logik auch spezielle Hardwareblöcke, die Standardaufgaben effizienter erledigen. Beispielsweise gibt es Block RAM für schnellen Datenspeicher, der als Puffer, Tabelle oder Queue genutzt werden kann. DSP-Blöcke sind für Multiplikation, Addition und andere mathematische Operationen optimiert - ideal für Signalverarbeitung, Bildverarbeitung und Machine Learning. Oft sind auch Hochgeschwindigkeits-Transceiver und fertige Schnittstellencontroller integriert, sodass Entwickler nicht jede Funktion aus einzelnen Logikblöcken zusammensetzen müssen.
Vor dem Einsatz wird in die FPGA ein Konfigurationsfile (Bitstream) geladen, das den Zustand aller Blöcke, LUTs und Verbindungen festlegt. Im Gegensatz zur CPU, die Programme Befehl für Befehl interpretiert, existiert nach der Initialisierung in der FPGA eine eigene Hardwarestruktur für die gewünschte Aufgabe. So lassen sich beispielsweise mehrere unabhängige Datenströme parallel in Hardwarepipelines verarbeiten - jede nutzt eigene Ressourcen und arbeitet gleichzeitig. Die Latenz ist minimal und vorhersehbar, hängt aber von der Qualität des Schaltungsdesigns und der Ressourcennutzung ab.
Die Entwicklung für FPGA unterscheidet sich grundlegend von der klassischen Softwareentwicklung: Anstatt eine Abfolge von Anweisungen zu programmieren, beschreibt der Entwickler die gewünschte Schaltung als Hardwarebeschreibung in Sprachen wie Verilog oder VHDL. Hier werden Register, Logikoperationen, Verbindungen und das Verhalten im Zeitverlauf definiert. Obwohl der Code teilweise wie eine Programmiersprache aussieht, beschreibt er parallele Hardwareblöcke, die gleichzeitig arbeiten - ein anderes Denkmodell als bei sequenziellen CPU-Programmen.
HDL-Code wird nicht direkt auf den Chip geladen, sondern durchläuft mehrere Schritte: Zunächst wandeln Synthesetools die Beschreibung in eine Liste realer FPGA-Ressourcen (Logik, Register, Speicher etc.) um. Dann werden die Elemente physisch auf dem Chip platziert und die Signalrouten festgelegt. Dabei sind logische Korrektheit und Signal-Laufzeiten entscheidend - zu lange Wege können die Taktrate limitieren. Nach erfolgreicher Platzierung und Routing entsteht der Bitstream, der die FPGA konfiguriert.
Der Entwicklungsablauf: Entwickler beschreibt die Logik → Tools synthetisieren die Schaltung → Platzierung und Routing auf der FPGA → Bitstream wird erzeugt und geladen.
Für die Entwicklung auf höherer Ebene gibt es High-Level Synthesis (HLS), bei der Algorithmen in Sprachen wie C oder C++ beschrieben und automatisch in Hardware umgewandelt werden. Das erleichtert den Einstieg und beschleunigt die Entwicklung bestimmter Beschleuniger, etwa für Mathematik, Bildverarbeitung oder Datenströme. Dennoch wird auch hier der Code in Hardware abgebildet und muss die Ressourcen- und Timing-Anforderungen der FPGA erfüllen. Automatische Synthese erzeugt nicht immer die effizienteste Schaltung, daher bleiben Hardware-Kenntnisse und Architektur-Optimierung wichtig.
Die FPGA-Programmierung liegt damit an der Schnittstelle von Softwareentwicklung und digitalem Hardwaredesign: Neben dem Algorithmus ist ein tiefes Verständnis der resultierenden Schaltungsstruktur nötig.
Die CPU ist ein universeller Prozessor mit fest vorgegebener Architektur. Ihre Kerne lesen nacheinander Befehle aus Programmen, dekodieren sie und führen sie mit festen Ausführungseinheiten aus. Moderne CPUs können mehrere Befehle und Threads parallel bearbeiten, doch die Hardwarestruktur bleibt unveränderlich. Die Stärke der CPU liegt in ihrer Vielseitigkeit - sie eignet sich für Betriebssysteme, Anwendungen, Spiele und Serverdienste gleichermaßen. Diese Flexibilität erfordert jedoch komplexe Steuerlogik, Caches und viele Zusatzfunktionen. Bei hochspezialisierten Aufgaben wird ein Teil der Ressourcen oft nicht optimal genutzt.
Der Trend geht verstärkt zu einer Aufgabenteilung zwischen verschiedenen Hardwareblöcken. Mehr dazu im Artikel Warum spezialisierte Prozessoren die Zukunft bestimmen.
Auch die GPU besitzt eine feste Architektur, ist aber für massive Parallelität ausgelegt. Statt weniger starker Kerne enthält sie viele einfache Recheneinheiten, die ähnliche Operationen an großen Datenmengen gleichzeitig ausführen können. Ursprünglich für Grafikberechnungen entwickelt, bewährte sich dieses Prinzip später auch bei wissenschaftlichen Berechnungen und Machine Learning. GPUs sind besonders effizient, wenn eine Operation auf Millionen von Elementen parallel angewendet wird - vorausgesetzt, der Algorithmus lässt sich entsprechend aufteilen. Die interne Hardwarestruktur kann aber nicht verändert werden; die Software verteilt die Arbeit auf die vorhandenen Einheiten.
Die FPGA ermöglicht einen ganz anderen Ansatz: Anstatt Programme auf vordefinierten Kernen laufen zu lassen, erstellt der Entwickler eine eigene Hardwarestruktur aus den verfügbaren Logikelementen. Ein Algorithmus mit mehreren Verarbeitungsschritten - etwa Daten empfangen, prüfen, multiplizieren, transformieren und weiterleiten - würde auf einer CPU sequenziell und auf einer GPU parallel für viele Datensätze ausgeführt. In der FPGA kann jeder Schritt als eigener Hardwareblock realisiert und zu einer Pipeline verbunden werden, in der verschiedene Datenpakete gleichzeitig verarbeitet werden. Auch mehrere Kopien einer Schaltung sind möglich, sofern die Ressourcen ausreichen. Der Parallelitätsgrad wird nicht durch die Anzahl der CPU-/GPU-Kerne begrenzt, sondern durch das Chipdesign.
| Eigenschaft | CPU | GPU | FPGA |
|---|---|---|---|
| Architektur | Fest | Fest | Konfigurierbar |
| Prinzip | Sequenzielle Befehlsausführung | Massive Parallelität | Spezielle Hardwareschaltung |
| Vielseitigkeit | Sehr hoch | Hoch | Abhängig von Konfiguration |
| Parallelität | Durch Kerne/Threads limitiert | Sehr hoch | Durch Schaltungsdesign bestimmt |
| Latenz | Abhängig von Programm/System | Effizient bei großen Datenpaketen | Sehr niedrig und vorhersehbar möglich |
| Entwicklung | Relativ einfach | Erfordert Parallelitätskenntnisse | Erfordert Hardwaredesign |
| Energieeffizienz bei Spezialaufgaben | Mittel | Hoch | Sehr hoch möglich |
Das heißt nicht, dass FPGA immer schneller ist als CPU oder GPU. Das Ergebnis hängt stark von der Aufgabe ab: Bei sich ständig ändernden Algorithmen oder komplexer Logik ist die CPU oft praktischer. Für große Matrixoperationen und massive Parallelität ist die GPU meist im Vorteil. FPGAs sind besonders attraktiv, wenn sich der Rechenprozess als spezialisierte Hardwarepipeline abbilden lässt und minimale Latenz gefragt ist.
FPGAs sind ideal für Systeme, die kontinuierlich Daten mit niedriger Latenz verarbeiten müssen - etwa in Netzwerk- und Telekommunikationsgeräten. Hier übernehmen sie Aufgaben wie Paketverarbeitung, Traffic-Filterung, Codierung/Decodierung und die Anbindung an Hochgeschwindigkeitsschnittstellen. Die Logik lässt sich nachträglich an neue Protokolle oder Funktionen anpassen, oft genügt ein Software-Update statt eines Hardwareaustauschs.
Ein weiteres großes Einsatzfeld sind Echtzeitsysteme in der Industrie: FPGAs lesen Sensordaten aus, steuern Aktoren und verarbeiten Signale - oft alles parallel und mit garantierter Reaktionszeit. Gerade wenn vorhersehbare Latenz wichtiger ist als maximale Leistung, spielen FPGAs ihre Stärken aus. Ähnliche Anforderungen gibt es in Messgeräten, Videosystemen, Radaren, Fahrzeug-Elektronik und bei der Signalverarbeitung.
Auch in Rechenzentren werden FPGAs als spezialisierte Beschleuniger eingesetzt: Die CPU steuert das Hauptprogramm, während repetitive Aufgaben wie Netzwerk-Processing, Datenkompression, Verschlüsselung oder Teile der KI-Inferenz an FPGAs ausgelagert werden. Das entlastet die CPU und ermöglicht spezialisierte Hardwarepipelines, ohne gleich einen eigenen Chip entwickeln zu müssen.
Moderne IT-Systeme bauen immer häufiger auf eine Kombination verschiedener Beschleuniger. Details dazu finden Sie im Artikel Hybride Rechensysteme: Wie CPU, GPU, NPU und FPGA gemeinsam arbeiten.
Für KI-Anwendungen sind FPGAs jedoch nicht immer die beste Wahl: GPUs bieten eine ausgereifte Entwicklungsumgebung und sind leichter zu programmieren, spezialisierte KI-Beschleuniger können bei bestimmten Aufgaben noch effizienter sein.
Mehr zu diesem Thema finden Sie im Artikel ASIC-Prozessoren: Warum sie extrem schnell, aber nicht vielseitig sind.
ASICs verzichten auf die programmierbare Architektur, was sie effizienter macht, jedoch ist ihre Funktion nach der Herstellung unveränderlich. Die Entwicklung eines ASIC ist zudem wesentlich aufwendiger und teurer.
Deshalb besetzen FPGAs eine Nische zwischen Flexibilität und Spezialisierung: Anwendungsbezogen konfigurierbar wie kein anderer Chip, aber mit höherem Entwicklungsaufwand und geringerer Software-Unterstützung als CPU oder GPU.
FPGA unterscheidet sich grundlegend von CPU und GPU: Der Entwickler gestaltet nicht nur den Algorithmus, sondern auch die Hardwarestruktur selbst. Logikblöcke, Speicher und Verbindungen werden zu einer spezialisierten Schaltung kombiniert, die Daten parallel und mit vorhersehbarer Verzögerung verarbeitet.
Für allgemeine Programme und komplexe Logik bleibt die CPU die beste Wahl, für massive Parallelverarbeitung die GPU. FPGA-Chips lohnen sich dort, wo ein hardwarebasierter Verarbeitungspfad für eine bestimmte Aufgabe, hohe Reaktionsgeschwindigkeit oder eine spätere Anpassung gefragt ist - ohne einen neuen Chip fertigen zu müssen.
Dennoch sind FPGAs keine Universalersatz für Prozessoren oder Grafikkarten: Die Entwicklung ist komplex und die Effizienz hängt stark vom Einsatzzweck ab. In der Praxis arbeiten FPGAs daher oft im Verbund mit CPUs, GPUs und anderen Beschleunigern - jeweils dort, wo ihre Architektur den größten Vorteil bietet.