Veröffentlicht: 8. Mai 2024
Mitwirkende: Josh Schneider, Ian Smalley
Ein Field Programmable Gate Array (FPGA) ist eine vielseitige Art von integriertem Schaltkreis, der im Gegensatz zu herkömmlichen Logikgeräten wie anwendungsspezifischen integrierten Schaltungen (ASICs) so konzipiert ist, dass er programmierbar (und oft umprogrammierbar) ist, um für verschiedene Zwecke, insbesondere Hochleistungs-Computing( HPC) und Prototyping, geeignet zu sein.
Der Begriff Field Programmable (vor Ort programmierbar) bezieht sich auf die Fähigkeit eines FPGA, „vor Ort“ oder nach der Freigabe des Chips vom Hersteller programmiert zu werden. Xilinx, ein Technologiehersteller, führte FPGAs erstmals im Jahr 1985 ein.
FPGAs können an zahlreiche Anwendungsfälle angepasst werden, auch für neue oder experimentelle Zwecke, ohne dass ihre Hardware physisch modifiziert oder verändert werden muss. Diese rekonfigurierbare Vielseitigkeit wird durch eine Reihe von festen programmierbaren Logikblöcken (PLBs) und flexiblen Verbindungen erreicht, die so konfiguriert werden können, dass sie entweder komplexe Operationen ausführen oder als einfache Logikgatter dienen. FPGAs enthalten auch Speicherelemente, die von Single-Bit-Flip-Flops bis hin zu sehr dichten Speicherarrays reichen und zur digitalen Datenspeicherung innerhalb des Geräts dienen.
FPGAs werden für ihre Kombination aus hoher Leistung und extremer Vielseitigkeit sehr geschätzt. Sie sind besonders in Anwendungen nützlich, die hohe Leistung, geringe Latenz und Echtzeitflexibilität erfordern. Aus diesem Grund werden sie häufig in der Telekommunikations-, Automobil- und Luft- und Raumfahrtindustrie eingesetzt.
FPGAs und ASICs dienen unterschiedlichen Zwecken.
Ein ASIC wird für eine bestimmte Anwendung entwickelt und optimiert und kann nicht neu konfiguriert werden. Die internen Schaltungselemente (Transistoren) sind in einer festen Struktur angeordnet, zwischen denen sich eine feste und unveränderliche Verbindung (Verdrahtung) befindet.
Weil ein ASIC nur einem Zweck dient, beinhaltet er nur die logischen Elemente, die für diesen Zweck notwendig sind. Wenn zum Beispiel kein Gleitkomma-Multiplikator benötigt wird, dann ist er nicht in das Design integriert.
Umgekehrt kann ein FPGA für alle potenziellen Anwendungen konfiguriert und neu konfiguriert werden. Wie bei einem ASIC sind die internen Schaltungselemente in einer festen Struktur angeordnet (programmierbare Logikblöcke oder PLBs), jedoch mit rekonfigurierbaren Verbindungen dazwischen. Die Logikelemente in einem FPGA werden so ausgewählt, dass sie eine Vielzahl von Anwendungen unterstützen, leiden jedoch unter dem Prinzip „Use it or lose it“, wenn bestimmte Logikelemente nicht verwendet werden. Wenn für eine bestimmte Anwendung kein Gleitkommamultiplikator erforderlich ist, das FPGA jedoch einen enthält, ist diese Ressource nicht verbunden und stellt „verschwendeten Speicherplatz“ innerhalb des FPGAs dar.
Beide Geräte können zwar Hunderte Millionen von Transistoren enthalten, aber ein ASIC kann diese Transistoren verwenden, um hohe Effizienz und Leistung auf Kosten der Flexibilität zu erzielen. Die anfänglichen NRE-Gebühren für die Entwicklung eines ASIC können exorbitant sein, während die Kosten pro Einheit relativ niedrig sein können.
Ein FPGA nutzt seine Transistoren, um eine hohe Effizienz und hohe Leistung zu liefern, aber auch eine enorme Flexibilität. Die NRE-Gebühren für die Entwicklung eines FPGA können im Voraus extrem niedrig sein, während die Kosten pro Einheit in der Regel höher sind. Es ist wichtig zu beachten, dass dies keine festen Regeln sind. Im Performance-Bereich haben sich beispielsweise die jüngsten FPGAs zu Taktraten von mehr als 500 MHz weiterentwickelt und werden in der Regel auf dem neuesten Stand der Technik in Silizium-Prozessgeometrien hergestellt. Kurz gesagt: Die Grenze zwischen FPGAs und ASIC wird mit jeder neuen FPGA-Generation immer unschärfer.
Ein FPGA wird zu einem angepassten Hardwaregerät, indem seine PLBs und Verbindungen mit einer Standard-Hardwarebeschreibungssprache (HDL) wie Verilog oder VHDL konfiguriert werden.
Spezifische FPGA-basierte Funktionen sowie die Verbindungen zwischen diesen Funktionen werden in einem HDL „beschrieben“. Die Beschreibung wird kompiliert, um eine FPGA-Konfigurationsdatei zu erstellen. Durch die Verwendung einer Hardwarebeschreibungssprache ist es möglich, integrierte FPGA-Ressourcen (Speicherarrays, PCI-Kerne und viele mehr) zu verwenden und aus primitiveren FPGA-Elementen benutzerdefinierte Logikschaltungen (Addierer, Multiplexer und andere anwendungsspezifische Funktionen) zu erstellen.
In einem Prozess, der als Synthese bekannt ist, wird der HDL-Code in eine Netzliste übersetzt, eine effektive Beschreibung der Logikgatter und Verbindungen, die zur Implementierung des HDL-Codes benötigt werden. Die Netzliste wird dann auf die PLBs und Verbindungen gemappt, die physisch die einzigartige Schaltung bilden.
Moderne FPGAs von Herstellern wie Intel und Altera bieten eine breite Palette digitaler und analoger Funktionen, darunter beeindruckende Logikdichten, Flash-Speicher, eingebettete Prozessoren und Blöcke zur digitalen Signalverarbeitung (DSP). FPGAs können konfiguriert und neu konfiguriert werden, indem elektrische Ein- und Ausgänge geändert werden, ausgewählt wird, welche internen Ressourcen verwendet werden, und über konfigurierbare Routing-Ressourcen bestimmt wird, wie diese Ressourcen verbunden werden. Das Endergebnis ist eine dedizierte Hardwarelösung zur Lösung eines bestimmten Problems.
Wie bei der Software kann die Entwicklung komplexer FPGA-Designs durch die Verwendung vorgefertigter Bibliotheken mit verschiedenen Funktionen und digitalen Schaltkreisen, die als IP-Cores (Intellectual Property) bezeichnet werden, rationalisiert werden. Diese Bibliotheken können von FPGA-Anbietern und Drittanbietern, die oft auf die Entwicklung verschiedener Funktionen spezialisiert sind, gekauft oder geleast werden.
Zusätzlich zu den traditionellen Schaltungskomponenten wie Mikrocontrollern und Wandlern verwenden moderne FPGA-Bauelemente eine Kombination aus verschiedenen programmierbaren Elementen, um ihre rekonfigurierbaren Funktionen zu erreichen.
Bei diesen programmierbaren Elementen handelt es sich in erster Linie um konfigurierbare Logikblöcke (CLBs), programmierbare Verbindungselemente, programmierbares Routing, programmierbare Eingabe-/Ausgabeblöcke (IOBs), On-Chip-Speicher und digitale Signalverarbeitungsblöcke (DSPs).
Konfigurierbare Logikblöcke (CLBs) sind die Hauptkomponente von FPGAs. CLBs enthalten in der Regel einige primitive Logikelemente (Logikgatter, kleine Nachschlagetabellen, Flip-Chips, Multiplexer und vieles mehr). Innerhalb des CLB dient ein Flip-Flop in der Regel als Hauptdatenspeicherelement, obwohl neuere Gerätefamilien auch flache Speicherelemente innerhalb des CLB enthalten können.
Verbindungen, die aus Kabelsegmenten bestehen, die durch elektrisch programmierbare Schalter verbunden sind, ermöglichen Routingpfade zwischen dem Logikblock des FPGA. Schaltkästen mit mehreren grundlegenden Halbleiterschaltern werden häufig verwendet, um die programmierbare Verbindung eines FPGAs herzustellen. Über diese Verbindungen können die Outputs einer bestimmten Einheit oder eines Eingangspads mit einer anderen Zelle oder einem anderen Pad innerhalb der Schaltungstechnik verknüpft werden.
Vorgefertigte Kabelsegmente werden durch die programmierbaren Verbindungen miteinander verbunden (oder offen gelassen), um eine vollständig programmierbare Routing-Infrastruktur innerhalb eines FPGA zu schaffen. Routing-Ressourcen sind hierarchischer Natur, mit einer Kombination aus langen, mittleren und kurzen Leitungen, die verschiedene „Längen“ innerhalb des FPGA abdecken. Diese programmierbare Routing-Infrastruktur, die durch die programmierbaren Verbindungen entsteht, ermöglicht es Benutzern, FPGA-Ressourcen für die Implementierung einer bestimmten Aufgabe oder Anwendung zu konfigurieren.
Die Schnittstelle zwischen einem FPGA und anderen externen Geräten wird durch Eingabe/Ausgabe (I/O) in Blöcken (IOBs) ermöglicht. IOBs sind programmierbare Ein- und Ausgaberessourcen, die so konfiguriert sind, dass sie den Protokollen aller externen Geräte entsprechen, mit denen der FPGA verbunden ist. Alle Signale, die in das FPGA eintreten oder es verlassen, erfolgen über Gerätepins und zugehörige IOBs.
Die frühesten FPGAs verwendeten nur Flip-Flops (FFs), um Speicher in die FPGA-Logikblöcke zu integrieren. Mit der Zunahme der FPGA-Funktionen erforderten die immer komplexeren Designs jedoch einen dedizierten On-Chip-Speicher für die Pufferung und Wiederverwendung von Daten. Moderne FPGAs verwenden große SRAM-Speicherarrays, kleinere Look-up-Tabellen (LUTs) und traditionelle Flip-Flop-Elemente, um den erforderlichen Speicher für eine bestimmte Anwendung bereitzustellen.
In frühen FPGAs waren die einzigen verfügbaren arithmetischen Ressourcen einfache Addierer. Alles Komplexere wurde aus einfacheren Logikelementen aufgebaut. Mit dem Fortschritt der Siliziumtechnologie wurden jedoch komplexere arithmetische Ressourcen in FPGAs integriert, was im modernen FPGA-DSP-Block gipfelte. DSP-Blöcke stellen hochoptimierte Ressourcen (Multiplikatoren, Akkumulatoren und vieles mehr) für die Implementierung von besonders leistungsstarken arithmetischen Funktionen zur Verfügung.
Durch ihre Verwendung entfällt die Notwendigkeit, diese Funktionen in universelle CLBs zu implementieren, wodurch die CLBs für andere Zwecke frei werden. Diese Ressourcen können bei Operationen wie digitaler Filterung, Faltung, Fourier-Transformationen, trigonometrischen Operationen und vielen weiteren zum Einsatz kommen, um Echtzeitleistung in Anwendungen wie der Radarverarbeitung, Strahlformung, Mustererkennung und anderen zu erzielen.
FPGAs sind in verschiedenen Varianten erhältlich, die verschiedene Arten von Konfigurierbarkeit, Stromverbrauch, programmierbaren Elementen und On-Chip-Speicher bieten.
FPGAs sind von Natur aus vielseitig einsetzbar und eignen sich für viele verschiedene Anwendungen.
FPGAs werden aufgrund ihrer Hochgeschwindigkeits- und Parallelverarbeitungsfähigkeiten für die Signalverarbeitung und Datenerfassung bevorzugt.
Aufgrund ihrer schnellen Algorithmen zur Signalverarbeitung eignen sich FPGAs gut für die Durchführung von Flugsteuerungs-, Sensorverarbeitungs- und Kommunikationsaufgaben, die in unbemannten Luftfahrzeugen wie Drohnen verwendet werden.
Industrielle Steuerungssysteme zur Überwachung von Infrastrukturen wie Stromnetzen, Ölraffinerien und Wasseraufbereitungsanlagen verwenden FPGAs, die leicht optimiert werden können, um die individuellen Anforderungen verschiedener Branchen zu erfüllen. In diesen kritischen Branchen können FPGAs verwendet werden, um verschiedene Automatisierungen und hardwarebasierte Verschlüsselungsfunktionen für eine effiziente Cybersicherheit zu implementieren.
FPGAs sind zwar nützliche Lösungen für Aufgaben, die Flexibilität erfordern, aber aufgabenspezifische ASICs eignen sich oft besser für standardisierte Abläufe. Bei der Entwicklung neuer Systeme sind FPGAs wertvoll für die Entwicklung und das Prototyping neuer ASICs für neue Technologien.
FPGAs steigern den Wert von Rechenzentren, indem sie Server sowie Netzwerk- und Speicherinfrastrukturen mit hoher Bandbreite und geringer Latenz ermöglichen.
Auf Unternehmen abgestimmter Speicher, der mit Ihnen zusammen wächst. IBM Storage FlashSystem 5300 ist eine NVMe-Speicheroption für Unternehmen, die gerade am Anfang stehen und einen kompakten, leistungsstarken Speicher benötigen. Es vereinheitlicht die Datenverwaltung im Kern, in der Cloud und am Edge und verfügt über einen revolutionären 1U-Formfaktor.
Ein Coprozessor, mit dem Sie rechenintensive kryptografische Prozesse von Ihrem Host-Server abladen können. IBM PCIe Cryptographic Coprocessors sind eine Familie von Hochleistungs-Hardware-Sicherheitsmodulen (HSM). Diese programmierbaren PCIe-Karten arbeiten mit bestimmten IBM Z, x64 und IBM Power-Servern zusammen, um rechenintensive kryptografische Prozesse wie sichere Zahlungen oder Transaktionen vom Host-Server zu entlasten.
Ein Open-Source-Framework für Cluster Computing, das Daten enorm schnell und in großen Mengen verarbeitet. Apache Spark wurde im AMPLab an der UC Berkeley entwickelt. Es kann dabei helfen, die Komplexität von Dateninteraktionen zu verringern, die Verarbeitungsgeschwindigkeit zu erhöhen und geschäftskritische Anwendungen mit tiefer Intelligenz zu optimieren.
Flash-Speicher ist eine Solid-State-Speichertechnologie, die Flash-Speicherchips zum Schreiben und Speichern von Daten verwendet. Dies wird auch als Ein-/Ausgabeoperation pro Sekunde (IOPS) bezeichnet.
Die IT-Infrastruktur, auch als Informationstechnologie-Infrastruktur bekannt, bezieht sich auf die kombinierten Komponenten, die für den Betrieb und die Verwaltung von IT-Services und IT-Umgebungen eines Unternehmens erforderlich sind.
Die Datenspeicherung bezieht sich auf magnetische, optische oder mechanische Medien, die digitale Informationen für laufende oder zukünftige Operationen aufzeichnen und aufbewahren.
Apache Spark ist eine blitzschnelle Engine zur Open Source Datenverarbeitung für maschinelles Lernen und KI-Anwendungen, unterstützt von der größten Open-Source-Community im Bereich Big Data.
KI ist ein Begriff, der sich auf die Hardware und Software bezieht, die zum Erstellen und Bereitstellen von KI-gestützten Anwendungen und Lösungen erforderlich ist.
Datenverschlüsselung ist eine Möglichkeit, Daten vom Klartext (unverschlüsselt) in Chiffretext (verschlüsselt) zu übersetzen.