Programmierbare Intel FPGA-Beschleunigungskarte D5005
Über dieses Dokument
Dieses Dokument beschreibt die Implementierung der Accelerator Functional Unit (AFU) mit direktem Speicherzugriff (DMA) und wie das Design für die Ausführung auf Hardware oder in einer Simulation erstellt wird.
Zielgruppe
Die Zielgruppe umfasst Hardware- oder Softwareentwickler, die eine Accelerator Function (AF) benötigen, um Daten lokal im Speicher zu puffern, der mit dem Intel FPGA-Gerät verbunden ist.
Konventionen
Dokumentkonventionen
Konvention | Beschreibung |
# | Steht vor einem Befehl, der angibt, dass der Befehl als root eingegeben werden muss. |
$ | Zeigt an, dass ein Befehl als Benutzer eingegeben werden muss. |
Diese Schriftart | FileNamen, Befehle und Schlüsselwörter werden in dieser Schriftart gedruckt. Lange Befehlszeilen werden in dieser Schriftart gedruckt. Obwohl lange Befehlszeilen in die nächste Zeile umbrechen können, ist die Rückgabe nicht Teil des Befehls; drücken Sie nicht die Eingabetaste. |
Gibt an, dass der Platzhaltertext, der zwischen den spitzen Klammern angezeigt wird, durch einen geeigneten Wert ersetzt werden muss. Geben Sie die spitzen Klammern nicht ein. |
Akronyme
Akronyme
Akronyme | Erweiterung | Beschreibung |
AF | Accelerator-Funktion | Kompiliertes Hardwarebeschleuniger-Image, das in FPGA-Logik implementiert ist und eine Anwendung beschleunigt. |
AFU | Beschleuniger-Funktionseinheit | In FPGA-Logik implementierter Hardwarebeschleuniger, der eine Rechenoperation für eine Anwendung von der CPU entlastet, um die Leistung zu verbessern. |
API | Anwendungsprogrammierschnittstelle | Eine Reihe von Subroutinendefinitionen, Protokollen und Tools zum Erstellen von Softwareanwendungen. |
CCI-P | Core-Cache-Schnittstelle | CCI-P ist die Standardschnittstelle, die AFUs verwenden, um mit dem Host zu kommunizieren. |
DFH | Kopfzeile der Gerätefunktion | Erstellt eine verknüpfte Liste von Feature-Headern, um eine erweiterbare Möglichkeit zum Hinzufügen von Features bereitzustellen. |
Fortsetzung… |
Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit ohne Vorankündigung Änderungen an Produkten und Diensten vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung von hierin beschriebenen Informationen, Produkten oder Diensten ergeben, es sei denn, Intel hat ausdrücklich schriftlich zugestimmt. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beschaffen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Produkte oder Dienstleistungen bestellen. *Andere Namen und Marken können als Eigentum anderer beansprucht werden.
Akronyme | Erweiterung | Beschreibung |
FIM | FPGA-Schnittstellenmanager | Die FPGA-Hardware, die die FPGA Interface Unit (FIU) und externe Schnittstellen für Speicher, Netzwerk usw. enthält.
Die Beschleunigerfunktion (AF) bildet zur Laufzeit eine Schnittstelle mit dem FIM. |
FIU | FPGA-Schnittstelleneinheit | FIU ist eine Plattformschnittstellenschicht, die als Brücke zwischen Plattformschnittstellen wie PCIe*, UPI und AFU-seitigen Schnittstellen wie CCI-P fungiert. |
MPF | Speichereigenschaften-Fabrik | Der MPF ist ein Basic Building Block (BBB), den AFUs verwenden können, um CCI-P-Traffic-Shaping-Operationen für Transaktionen mit der FIU bereitzustellen. |
Beschleunigungs-Glossar
Beschleunigungsstapel für Intel® Xeon® CPU mit FPGAs Glossar
Begriff | Abkürzung | Beschreibung |
Intel® Acceleration Stack für Intel Xeon® CPU mit FPGAs | Beschleunigungsstapel | Eine Sammlung von Software, Firmware und Tools, die eine leistungsoptimierte Konnektivität zwischen einem Intel FPGA und einem Intel Xeon Prozessor bietet. |
Programmierbare Intel FPGA-Beschleunigungskarte | Intel FPGA-PAC | PCIe FPGA-Beschleunigerkarte.
Enthält einen FPGA Interface Manager (FIM), der über den PCIe-Bus mit einem Intel Xeon-Prozessor gekoppelt wird. |
- Benutzerhandbuch zur DMA-Beschleuniger-Funktionseinheit: Intel FPGA-programmierbare Beschleunigungskarte D5005
DMA AFU-Beschreibung
Einführung
Der Direct Memory Access (DMA) AFU exampIn dieser Datei wird gezeigt, wie Speicherübertragungen zwischen dem Hostprozessor und dem FPGA verwaltet werden. Sie können die DMA AFU in Ihr Design integrieren, um Daten zwischen dem Hostspeicher und dem lokalen FPGA-Speicher zu verschieben. Die DMA AFU besteht aus den folgenden Untermodulen:
- Grundlegender Baustein (BBB) der Memory Properties Factory (MPF)
- Core Cache Interface (CCI-P) zum Avalon® Memory-Mapped (Avalon-MM) Adapter
- DMA-Testsystem, das den DMA BBB enthält
Diese Untermodule werden im Thema „DMA AFU-Hardwarekomponenten“ weiter unten ausführlicher beschrieben.
Zugehörige Informationen
- Die DMA AFU Hardwarekomponenten auf Seite 6
- Spezifikationen der Avalon-Schnittstelle
Weitere Informationen zum Avalon-MM-Protokoll, einschließlich Zeitdiagrammen für Lese- und Schreibtransaktionen.
Das DMA AFU Softwarepaket
Der Intel Acceleration Stack für Intel Xeon CPU mit FPGAs-Paket file (*.tar.gz), enthält die DMA AFU example. Dieses Bspample stellt einen Userspace-Treiber bereit. Die Host-Anwendung verwendet diesen Treiber, sodass der DMA Daten zwischen Host- und FPGA-Speicher verschiebt. Die Hardware-Binärdateien, Quellen und der Userspace-Treiber sind im folgenden Verzeichnis verfügbar: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . Bevor Sie mit der DMA AFU experimentieren, müssen Sie das Softwarepaket Open Programmable Acceleration Engine (OPAE) installieren. Installationsanweisungen finden Sie unter Installieren des OPAE-Softwarepakets im Intel Acceleration Stack Quick Start Guide für die Intel FPGA Programmable Acceleration Card D5005. Dieser Quick Start Guide enthält auch grundlegende Informationen zur Open Programmable Acceleration Engine (OPAE) und zum Konfigurieren einer AFU. Nach der Installation des Softwarepakets Open Programmable Acceleration Engine (OPAE)ampDie Hostanwendung und der DMA AFU-Benutzerbereichstreiber sind im folgenden Verzeichnis verfügbar: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. Um den s auszuführenample Host-Anwendung, fpga_dma_test auf Ihrer Intel FPGA PAC D5005 Hardware, siehe die Schritte im Abschnitt Ausführen des DMA AFU Exampli. Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, es sei denn, Intel hat dem ausdrücklich schriftlich zugestimmt. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben. *Andere Namen und Marken können Eigentum anderer sein.
Zugehörige Informationen
- Schnellstartanleitung für den Intel Acceleration Stack für die programmierbare Intel FPGA-Beschleunigungskarte D5005
- Installieren des OPAE-Softwarepakets
Die DMA AFU Hardwarekomponenten
Die DMA AFU kommuniziert mit der FPGA-Schnittstelleneinheit (FIU) und dem FPGA-Speicher. Detaillierte Spezifikationen des FPGA-Speichers finden Sie im Datenblatt des FPGA-Schnittstellenmanagers für die programmierbare Intel FPGA-Beschleunigungskarte D5005. Die derzeit verfügbare Hardware gibt diese Speicherkonfiguration vor. Zukünftige Hardware unterstützt möglicherweise andere Speicherkonfigurationen. Sie können die DMA AFU verwenden, um Daten zwischen den folgenden Quell- und Zielspeicherorten zu kopieren:
- Der Host-to-Device-FPGA-Speicher
- Geräte-FPGA-Speicher zum Host
Ein Platform Designer-System, $OPAE_PLATFORM_ROOT/hw/samples/ dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys implementiert die meisten DMA
- AFU. Ein Teil der im Platform Designer-System implementierten DMA AFU finden Sie im Folgenden
Standort: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ Sie finden das DMA BBB an folgendem Ort:
- $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/dma_bbb
Benutzerhandbuch zur DMA-Beschleuniger-Funktionseinheit: Intel FPGA-programmierbare Beschleunigungskarte D5005
DMA AFU-Hardware-Blockdiagramm
Die DMA AFU umfasst die folgenden internen Module zur Schnittstelle mit der FPGA-Schnittstelleneinheit (FIU):
- Memory-Mapped IO (MMIO) Decoder Logic: erkennt MMIO-Lese- und Schreibtransaktionen und trennt sie vom CCI-P RX-Kanal 0, von dem sie kommen. Dadurch wird sichergestellt, dass der MMIO-Verkehr niemals das MPF BBB erreicht und von einem unabhängigen MMIO-Befehlskanal bedient wird.
- Memory Properties Factory (MPF): Dieses Modul stellt sicher, dass Leseantworten vom DMA in der Reihenfolge zurückgegeben werden, in der sie ausgegeben wurden. Das Avalon-MM-Protokoll erfordert, dass Leseantworten in der richtigen Reihenfolge zurückgegeben werden.
- CCI-P-zu-Avalon-MM-Adapter: Dieses Modul übersetzt zwischen CCI-P- und Avalon-MM-Transaktionen wie folgt:
- CCI-P-zu-Avalon-MMIO-Adapter: Dieser Pfad übersetzt CCI-P-MMIO-Transaktionen in Avalon-MM-Transaktionen.
- Avalon-zu-CCI-P-Hostadapter: Diese Pfade erstellen separate schreibgeschützte und schreibgeschützte Pfade für den DMA, um auf den Hostspeicher zuzugreifen.
- DMA-Testsystem: Dieses Modul dient als Wrapper um das DMA BBB, um die DMA-Master der restlichen Logik in der AFU zugänglich zu machen. Es stellt die Schnittstelle zwischen dem DMA BBB und dem CCI-P-zu-Avalon-Adapter bereit. Es stellt außerdem die Schnittstelle zwischen dem DMA BBB und den lokalen FPGA-SDRAM-Bänken bereit.
Zugehörige Informationen
FPGA Interface Manager-Datenblatt für die programmierbare Intel FPGA-Beschleunigungskarte D5005
DMA-Testsystem
Das DMA-Testsystem verbindet das DMA BBB mit dem Rest des FPGA-Designs, einschließlich der CCI-P-Anpassung und dem lokalen FPGA-Speicher.
Blockdiagramm des DMA-Testsystems
Dieses Blockdiagramm zeigt die internen Komponenten des DMA-Testsystems. Das DMA-Testsystem ist in Abbildung 1 auf Seite 7 als monolithischer Block dargestellt.
Das DMA-Testsystem umfasst die folgenden internen Module:
- Far Reach Bridge/Pipeline Bridge: Eine Pipeline Bridge mit einstellbarer Latenz zur Steuerung der Topologie und Verbesserung des Designs Fmax.
- DMA AFU Device Feature Header (DFH): Dies ist ein DFH für die DMA AFU. Dieser DFH verweist auf den nächsten DFH am Offset 0x100 (DMA BBB DFH).
- Null-DFH: Diese Komponente beendet die DFH-Linked-List. Wenn Sie dem Design weitere DMA-BBBs hinzufügen, stellen Sie sicher, dass sich die Null-DFH-Basisadresse am Ende der DFH-Linked-List befindet.
- MA Basic Building Block (BBB): Dieser Block verschiebt Daten zwischen dem Host und dem lokalen FPGA-Speicher. Er greift auch auf den Host-Speicher zu, um auf Deskriptorketten zuzugreifen.
DMA BBB
Das DMA BBB-Subsystem überträgt Daten von Quell- zu Zieladressen mithilfe von Avalon-MM-Transaktionen. Der DMA-Treiber steuert das DMA BBB, indem er auf die Steuer- und Statusregister der verschiedenen Komponenten im System zugreift. Der DMA-Treiber steuert das DMA BBB auch, indem er den gemeinsamen Speicher verwendet, um Übertragungsdeskriptoren zu kommunizieren. Das DMA BBB greift auf Daten im FPGA-Speicher am Offset 0x0 zu. Das DMA BBB greift auf Daten und Deskriptoren im Host-Speicher am Offset 0x1_0000_0000_0000 zu.
Blockdiagramm des DMA BBB-Plattform-Designers
Dieses Blockdiagramm schließt einige interne Pipeline Bridge IP-Kerne aus.
Benutzerhandbuch zur DMA-Beschleuniger-Funktionseinheit: Intel FPGA-programmierbare Beschleunigungskarte D5005
DMA AFU-Beschreibung
Die Komponenten im DMA BBB Platform Designer implementieren die folgenden Funktionen:
- Far Reach Bridge/Pipeline-Brücke: Eine Pipeline-Brücke mit einstellbarer Latenz zur Steuerung der Topologie und Verbesserung des Designs Fmax ist enthalten.
- MA BBB DFH: Dies ist ein Gerätefunktionsheader für das DMA BBB. Dieser DFH zeigt auf den nächsten DFH am Offset 0x100 (Null-DFH).
- Deskriptor Frontend: Verantwortlich für das Abrufen und Übertragen von Deskriptoren an den Dispatcher. Wenn eine DMA-Übertragung abgeschlossen ist, erhält das Frontend Statusinformationen vom Dispatcher und überschreibt den Deskriptor im Hostspeicher.
- Dispatcher: Dieser Block plant DMA-Übertragungsanforderungen an den Lese- und Schreibmaster.
- Meister lesen: Dieser Block ist dafür verantwortlich, Daten vom Host- oder lokalen FPGA-Speicher zu lesen und als Streaming-Daten an Write Master zu senden.
- Schreibmeister: Dieser Block ist für den Empfang von Streaming-Daten vom Lesemaster und das Schreiben der Inhalte in den Host- oder lokalen FPGA-Speicher verantwortlich.
Karten- und Adressräume registrieren
Die DMA AFU unterstützt zwei Speicher views: Der DMA view und der Gastgeber viewDer DMA view unterstützt einen 49-Bit-Adressraum. Die untere Hälfte des DMA view wird auf den lokalen FPGA-Speicher abgebildet. Die obere Hälfte des DMA view wird dem Host-Speicher zugeordnet. Der Host view umfasst alle Register, auf die über MMIO-Zugriffe zugegriffen werden kann, wie z. B. die DFH-Tabellen und die Steuer-/Statusregister der verschiedenen IP-Kerne, die innerhalb der DMA AFU verwendet werden. Die MMIO-Register in der DMA BBB und AFU unterstützen 32- und 64-Bit-Zugriff. Die DMA AFU unterstützt keine 512-Bit-MMIO-Zugriffe. Zugriffe auf die Dispatcher-Register innerhalb der DMA BBB müssen 32 Bit lang sein (Descriptor-Frontend implementiert 64-Bit-Register).
DMA AFU Registerkarte
Die DMA AFU-Registerkarte liefert die absoluten Adressen aller Speicherorte innerhalb der Einheit. Diese Register befinden sich im Host view weil nur der Host darauf zugreifen kann.
DMA AFU-Speicherzuordnung
Byte-Adress-Offsets | Name | Spanne in Bytes | Beschreibung |
0 x 0 | DMA AFU DFH | 0 x 40 | Gerätefunktionsheader für die DMA AFU. ID_L ist auf 0x9081f88b8f655caa und ID_H auf 0x331db30c988541ea eingestellt. Die DMA AFU DFH wurde so parametrisiert, dass sie auf den Offset 0x100 zeigt, um die nächste DFH (DMA BBB DFH) zu finden. Sie dürfen die Basisadresse der DMA AFU DFH nicht ändern, da sie gemäß der CCIP-Spezifikation an der Adresse 0x0 liegen muss. |
0 x 100 | DMA BBB | 0 x 100 | Gibt die Schnittstelle für DMA BBB-Steuerung und Statusregister an. Weitere Informationen finden Sie in der DMA BBB-Registerzuordnung. Innerhalb des DMA BBB bei Offset 0 enthält das DMA BBB sein eigenes DFH. Dieses DFH wurde so eingestellt, dass es das nächste DFH bei Offset 0x100 (NULL DFH) findet. Wenn Sie weitere DMA BBBs hinzufügen, platzieren Sie sie im Abstand von 0x100 und stellen Sie sicher, dass das NULL DFH dem letzten DMA um 0x100 folgt. |
0 x 200 | NULL DFH | 0 x 40 | Beendet die DFH-Linked-List. Die ID_L ist auf 0x90fe6aab12a0132f und die ID_H auf 0xda1182b1b3444e23 eingestellt. Der NULL-DFH wurde als letzter DFH in der Hardware parametriert. Aus diesem Grund befindet sich der NULL-DFH an der Adresse 0x200. Wenn Sie dem System zusätzliche DMA-BBBs hinzufügen, müssen Sie die NULL-DFH-Basisadresse entsprechend erhöhen, damit sie an der höchsten Adresse bleibt. Der DMA-Treiber und die Testanwendung verwenden diese Hardware nicht. |
Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit ohne Vorankündigung Änderungen an Produkten und Diensten vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung von hierin beschriebenen Informationen, Produkten oder Diensten ergeben, es sei denn, Intel hat ausdrücklich schriftlich zugestimmt. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beschaffen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Produkte oder Dienstleistungen bestellen. *Andere Namen und Marken können als Eigentum anderer beansprucht werden.
Karten- und Adressräume registrieren
DMA BBB-Speicherzuordnung
Die folgenden Byteadressen sind relative Offsets von der DMA BBB-Basisadresse im DMA AFU-System (0x100).
Byte-Adress-Offsets | Name | Spanne in Bytes | Beschreibung |
0 x 0 | DMA BBB DFH | 0 x 40 | Gerätefunktionsheader für die DMA AFU. Die ID_L ist auf 0xa9149a35bace01ea und die ID_H auf 0xef82def7f6ec40fc eingestellt. Das DMA BBB DFH wurde so parametrisiert, dass es für den nächsten DFH-Offset auf 0x100 zeigt. Dieser nächste Offset kann ein anderes DMA BBB, ein anderes DFH (nicht in diesem Design enthalten) oder das NULL DFH sein. |
0 x 40 | Dispatcher | 0 x 40 | Steuerport für den Dispatcher. Der DMA-Treiber verwendet diesen Speicherort, um den DMA zu steuern oder seinen Status abzufragen. |
0 x 80 | Deskriptor Frontend | 0 x 40 | Das Deskriptor-Frontend ist eine benutzerdefinierte Komponente, die Deskriptoren aus dem Hostspeicher liest und den Deskriptor überschreibt, wenn die DMA-Übertragung abgeschlossen ist. Der Treiber weist das Frontend an, wo der erste Deskriptor im Hostspeicher liegt, und dann kommuniziert die Frontend-Hardware hauptsächlich über im Hostspeicher gespeicherte Deskriptoren mit dem Treiber. |
DMA AFU-Adressraum
Der Host kann auf die in Tabelle 4 auf Seite 12 und Tabelle 5 auf Seite 13 aufgeführten Register zugreifen. Das DMA BBB-Subsystem hat Zugriff auf den gesamten 49-Bit-Adressraum. Die untere Hälfte dieses Adressraums umfasst die lokalen FPGA-Speicher. Die obere Hälfte dieses Adressraums umfasst den 48-Bit-Host-Adressspeicher. Die folgende Abbildung zeigt den Host und DMA views der Erinnerung.
Die DMA AFU und der Host ViewErinnerungen
Gerätefunktionsheader verknüpfte Liste
Das DMA AFU-Design exampDie Datei enthält drei Device Feature Header (DFH), die eine verknüpfte Liste bilden. Diese verknüpfte Liste ermöglicht es demampDie Anwendung identifiziert die DMA AFU und der Treiber identifiziert den DMA BBB. Die DFH-Liste enthält am Ende einen NULL-DFH. Durch die Aufnahme des Null-DFH am Ende der verknüpften Liste können Sie Ihrem Design weitere DMA BBBs hinzufügen. Sie müssen den NULL-DFH einfach an eine Adresse hinter den anderen BBBs verschieben. Jeder DMA BBB erwartet, dass sich der nächste DFH 0x100 Bytes von der Basisadresse des BBB entfernt befindet. Die folgende Abbildung zeigt die verknüpfte Liste für das DMA AFU-Designbeispielample.
Karten- und Adressräume registrieren
DMA AFU Device Feature Header (DFH)-Verkettung
Software-Programmiermodell
Die DMA AFU enthält einen Softwaretreiber, den Sie in Ihrer eigenen Host-Anwendung verwenden können. Die Dateien fpga_dma.cpp und fpga_dma.h files am folgenden Speicherort implementieren den Softwaretreiber: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw Dieser Treiber unterstützt die folgenden Funktionen:
API | Beschreibung |
fpgaAnzahlDMAKanäle | Durchsucht die Gerätefunktionskette nach DMA-BBBs und zählt alle verfügbaren Kanäle. |
fpgaDMAÖffnen | Öffnet einen Handle zum DMA-Kanal. |
fpgaDMASchließen | Schließt einen Handle zum DMA-Kanal. |
fpgaDMATransferInit | Initialisiert ein Objekt, das die DMA-Übertragung darstellt. |
fpgaDMATransferReset | Setzt das DMA-Übertragungsattributobjekt auf Standardwerte zurück. |
fpgaDMATransferDestroy | Zerstört das DMA-Übertragungsattributobjekt. |
fpgaDMATransferSetSrc | Legt die Quelladresse der Übertragung fest. Diese Adresse muss 64 Bytes lang sein. |
fpgaDMATransferSetDst | Legt die Zieladresse der Übertragung fest. Diese Adresse muss 64 Bytes lang sein. |
fpgaDMATransferSetLen | Legt die Übertragungslänge in Bytes fest. Bei Nichtpaketübertragungen müssen Sie die Übertragungslänge auf ein Vielfaches von 64 Bytes festlegen. Bei Paketübertragungen ist dies keine Voraussetzung. |
fpgaDMATransferSetTransferType | Legt den Übertragungstyp fest. Gültige Werte sind:
• HOST_MM_TO_FPGA_MM = TX (Host zu AFU) • FPGA_MM_TO_HOST_MM = RX (AFU zum Host) |
fpgaDMATransferSetTransferCallback | Registriert einen Rückruf zur Benachrichtigung über den Abschluss einer asynchronen Übertragung. Wenn Sie einen Rückruf angeben, kehrt fpgaDMATransfer sofort zurück (asynchrone Übertragung).
Wenn Sie keinen Rückruf angeben, kehrt fpgaDMATransfer zurück, nachdem die Übertragung abgeschlossen ist (synchrone/blockierende Übertragung). |
fpgaDMATransferSetLast | Gibt die letzte Übertragung an, damit der DMA mit der Verarbeitung der vorab abgerufenen Übertragungen beginnen kann. Der Standardwert beträgt 64 Übertragungen in der Pipeline, bevor der DMA mit der Verarbeitung der Übertragungen beginnt. |
fpgaDMAÜbertragung | Führt eine DMA-Übertragung durch. |
Weitere Informationen zur API sowie zu Eingabe- und Ausgabeargumenten finden Sie in der Kopfzeile file befindet sich in $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.hIntel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, sofern dies nicht ausdrücklich schriftlich von Intel vereinbart wurde. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben. Andere Namen und Marken können als Eigentum anderer beansprucht werden.
Software-Programmiermodell
Weitere Informationen zum Nutzungsmodell für Softwaretreiber finden Sie in der README-Datei. file befindet sich unter $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md
Ausführen von DMA AFU Example
Bevor Sie beginnen:
- Sie sollten mit dem Ex vertraut seinampDateien im Intel Acceleration Stack Quick Start Guide für die Intel FPGA Programmable Acceleration Card D5005.
- Sie müssen eine Umgebungsvariable definieren. Die Umgebungsvariable ist abhängig von der von Ihnen verwendeten Intel Acceleration Stack-Version:
- Legen Sie für die aktuelle Version die Umgebungsvariable auf $OPAE_PLATFORM_ROOT fest.
- Sie müssen die Intel Threading Building Blocks (TBB)-Bibliothek installieren, da der DMA-Treiber darauf angewiesen ist.
- Sie müssen außerdem zwei 1 GB große Hugepages einrichten, um den s auszuführenample-Anwendung. $ sudo sh -c „echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages“
Führen Sie die folgenden Schritte aus, um den DMA Accelerator Function (AF)-Bitstream herunterzuladen, die Anwendung und den Treiber zu erstellen und das Design-Ex auszuführenampauf:
- Wechseln Sie in das DMA-Anwendungs- und Treiberverzeichnis: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
- Erstellen Sie den Treiber und die Anwendung: make
- Laden Sie den DMA AFU-Bitstream herunter: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
- Führen Sie die Hostanwendung aus, um 100 MB in 1-MB-Portionen vom Hostspeicher in den FPGA-Gerätespeicher zu schreiben und wieder zurückzulesen: ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom
Zugehörige Informationen
Kurzanleitung zum Intel Acceleration Stack für die Intel FPGA Programmable Acceleration Card D5005 Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, sofern dies nicht ausdrücklich schriftlich von Intel vereinbart wurde. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben. *Andere Namen und Marken können Eigentum anderer sein.
Kompilieren des DMA AFU Example
Um eine Synthese-Build-Umgebung zum Kompilieren eines AF zu generieren, verwenden Sie den Befehl afu_synth_setup wie folgt:
- Änderung der DMA AFU sampDateiverzeichnis: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Generieren Sie das Design-Build-Verzeichnis: afu_synth_setup –source hw/rtl/filelist.txt build_synth
- Geben Sie im von afu_synth_setup generierten Synthese-Build-Verzeichnis die folgenden Befehle in einem Terminalfenster ein, um ein AF für die Zielhardwareplattform zu generieren: cd build_synth run.sh Das AF-Generierungsskript run.sh erstellt das AF-Image mit derselben Basis fileName wie die Plattformkonfiguration der AFU file (.json) mit der Endung .gbs am Standort: $OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, sofern dies nicht ausdrücklich schriftlich von Intel vereinbart wurde. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben. *Andere Namen und Marken können als Eigentum anderer beansprucht werden.
Simulation der AFU Example
Intel empfiehlt, dass Sie sich auf die Kurzanleitung zur Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE) für Ihr Intel FPGA PAC beziehen, um sich mit der Simulation ähnlicher Beispiele vertraut zu machen.ampdateien und zum Einrichten Ihrer Umgebung. Bevor Sie mit den folgenden Schritten fortfahren, überprüfen Sie, ob die Umgebungsvariable OPAE_PLATFORM_ROOT auf das OPAE SDK-Installationsverzeichnis eingestellt ist. Führen Sie die folgenden Schritte aus, um den Hardwaresimulator für die DMA AFU einzurichten:
- Änderung der DMA AFU sample-Verzeichnis: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Erstellen Sie eine ASE-Umgebung in einem neuen Verzeichnis und konfigurieren Sie sie für die Simulation einer AFU: afu_sim_setup –source hw/rtl/filelist.txt Build_ase_dir
- Wechseln Sie in das ASE-Build-Verzeichnis: cd build_ase_dir
- Erstellen Sie den Treiber und die Anwendung: make
- Simulation durchführen: make sim
SampDateiausgabe vom Hardwaresimulator:
[SIM] ** ACHTUNG: VOR dem Ausführen der Softwareanwendung ** [SIM] Legen Sie env(ASE_WORKDIR) im Terminal fest, in dem die Anwendung ausgeführt wird (kopieren und einfügen) => [SIM] $SHELL | Ausführen: [SIM] ———+————————————————— [SIM] bash/zsh | export ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/ase_mkdir/work [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/ase_mkdir/work [SIM] Für alle anderen $SHELLs wenden Sie sich an Ihren Linux-Administrator [SIM] [SIM] Bereit zur Simulation… [SIM] Drücken Sie STRG-C, um den Simulator zu schließen…Führen Sie die folgenden Schritte aus, um die DMA AFU-Software in der Simulationsumgebung zu kompilieren und auszuführen:
- Öffnen Sie ein neues Terminalfenster.
- Wechseln Sie in das Verzeichnis: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit ohne Vorankündigung Änderungen an Produkten und Diensten vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung von hierin beschriebenen Informationen, Produkten oder Diensten ergeben, es sei denn, Intel hat ausdrücklich schriftlich zugestimmt. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beschaffen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Produkte oder Dienstleistungen bestellen. *Andere Namen und Marken können als Eigentum anderer beansprucht werden.
Simulation der AFU Example
- Kopieren Sie die Umgebungs-Setup-Zeichenfolge (wählen Sie die für Ihre Shell geeignete Zeichenfolge) aus den obigen Schritten in der Hardware-Simulation in das Terminalfenster. Siehe die folgenden Zeilen im sample-Ausgabe vom Hardware-Simulator. [SIM] bash/zsh | export ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/build_ase_dir/work [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/Build_ase_dir/work
- Kompilieren Sie die Software: $ make USE_ASE=1
- Führen Sie die Hostanwendung aus, um 4 KB in 1-KB-Teilen im Loopback-Modus vom Hostspeicher zurück in den FPGA-Gerätespeicher zu schreiben: ./ fpga_dma_test -s 4096 -p 1024 -r mtom
Zugehörige Informationen
Kurzanleitung für das Intel Accelerator Functional Unit (AFU) Simulation Environment (ASE)
Optimierung für verbesserte DMA-Leistung
Die Implementierung der NUMA-Optimierung (Non-Uniform Memory Access) in fpga_dma_test.cpp ermöglicht dem Prozessor, schneller auf seinen eigenen lokalen Speicher zuzugreifen als auf nicht lokalen Speicher (lokaler Speicher eines anderen Prozessors). Eine typische NUMA-Konfiguration ist im folgenden Diagramm dargestellt. Der lokale Zugriff stellt den Zugriff von einem Kern auf lokalen Speicher desselben Kerns dar. Der Remote-Zugriff veranschaulicht den Pfad, der genommen wird, wenn ein Kern auf Knoten 0 auf Speicher zugreift, der sich im lokalen Speicher von Knoten 1 befindet.
Typische NUMA-Konfiguration
Verwenden Sie den folgenden Code, um die NUMA-Optimierung in Ihrer Testanwendung zu implementieren:
// Richten Sie bei Bedarf die richtige Affinität ein, wenn (cpu_affinity || memory_affinity) {unsigned dom = 0, bus = 0, dev = 0, func = 0; fpga_properties props;int retval; #if(FPGA_DMA_DEBUG)char str[4096]; #endifres = fpgaGetProperties(afc_token, &props); ON_ERR_GOTO(res, out_destroy_tok, „fpgaGetProperties“); res = fpgaPropertiesGetBus(props, (uint8_t *) & bus);ON_ERR_GOTO(res, out_destroy_tok, „fpgaPropertiesGetBus“); res = fpgaPropertiesGetDevice(props, (uint8_t *) & dev);ON_ERR_GOTO(res, out_destroy_tok, „fpgaPropertiesGetDevice“) res = fpgaPropertiesGetFunction(props, (uint8_t *) & func);ON_ERR_GOTO(res, out_destroy_tok, „fpgaPropertiesGetFunction“); // Gerät aus der Topologie suchen hwloc_topology_t topology; hwloc_topology_init(&topology); hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IO_DEVICES);Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Marken von Intel sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, es sei denn, Intel hat dem ausdrücklich schriftlich zugestimmt. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben. *Andere Namen und Marken können Eigentum anderer sein.
Optimierung für verbesserte DMA-Leistung
hwloc_topology_load(Topologie); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(Topologie, Dom, Bus, Dev, Funktion); hwloc_obj_t obj2 = hwloc_get_non_io_ancestor_obj(Topologie, Objekt); #if (FPGA_DMA_DEBUG) hwloc_obj_type_snprintf(str, 4096, Objekt2, 1); printf(„%s\n“, str);hwloc_obj_attr_snprintf(str, 4096, Objekt2, ” :: “, 1);printf(„%s\n“, str); hwloc_bitmap_taskset_snprintf(str, 4096, Objekt2->Cpuset); printf(„CPUSET ist %s\n“, str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->nodeset); printf(„NODESET ist %s\n“, str);#endif if (Speicheraffinität) { #wenn HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(Topologie, obj2->nodeset,HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_MIGRATE |HWLOC_MEMBIND_BYNODESET); #sonst retval =hwloc_set_membind_nodeset(Topologie, obj2->nodeset, HWLOC_MEMBIND_THREAD,HWLOC_MEMBIND_MIGRATE); #endifON_ERR_GOTO(retval, out_destroy_tok, „hwloc_set_membind“); } wenn (cpu_affinity) { retval = hwloc_set_cpubind(Topologie, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, „hwloc_set_cpubind“); } }
Benutzerhandbucharchiv für die DMA-Beschleuniger-Funktionseinheit
Intel Acceleration Stack-Version | Benutzerhandbuch (PDF) |
2.0 | Benutzerhandbuch zur DMA Accelerator Functional Unit (AFU) |
Dokumentrevisionsverlauf für das Benutzerhandbuch zur DMA-Beschleuniger-Funktionseinheit
Dokumentversion |
Intel-Beschleunigung Stack-Version |
Änderungen |
2020.08.03 |
2.0.1 (unterstützt von Intel
Quartus® Prime Pro Edition Ausgabe 19.2) |
Das AF-Bild wurde korrigiert file Name im Abschnitt Kompilieren des DMA AFU Example. |
2020.04.17 |
2.0.1 (unterstützt von Intel
Quartus Prime Pro Edition Ausgabe 19.2) |
Eine Aussage korrigiert in Zielgruppe Abschnitt. |
2020.02.20 |
2.0.1 (unterstützt von Intel
Quartus Prime Pro Edition Ausgabe 19.2) |
Tippfehler behoben. |
2019.11.04 |
2.0.1 (unterstützt von Intel Quartus Prime Pro Edition Ausgabe 19.2) |
• Ersetzte fpgaconf durch fpgasupdate bei der Konfiguration des FPGA mit der vorgefertigten AFU im Abschnitt Ausführen des DMA AFU Example.
• Untertitel hinzugefügt Programmierbare Intel FPGA-Beschleunigungskarte D5005 zum Dokumenttitel. • Umgebungsvariable $OPAE_PLATFORM_ROOT hinzugefügt. • Geänderter Abschnitt Software-Programmiermodell für kleinere Änderungen. • Neuer Abschnitt hinzugefügt Kompilieren des DMA AFU Example. • Geänderter Abschnitt Optimierung für verbesserte DMA-Leistung für kleinere Änderungen. |
2019.08.05 |
2.0 (unterstützt von Intel
Quartus Prime Pro-Edition 18.1.2) |
Erstveröffentlichung. |
Intel Corporation. Alle Rechte vorbehalten. Intel, das Intel-Logo und andere Intel-Marken sind Marken der Intel Corporation oder ihrer Tochtergesellschaften. Intel garantiert die Leistung seiner FPGA- und Halbleiterprodukte gemäß den aktuellen Spezifikationen gemäß der Standardgarantie von Intel, behält sich jedoch das Recht vor, jederzeit und ohne Vorankündigung Änderungen an Produkten und Dienstleistungen vorzunehmen. Intel übernimmt keine Verantwortung oder Haftung, die sich aus der Anwendung oder Verwendung der hierin beschriebenen Informationen, Produkte oder Dienstleistungen ergibt, sofern dies nicht ausdrücklich schriftlich von Intel vereinbart wurde. Intel-Kunden wird empfohlen, die neueste Version der Gerätespezifikationen zu beziehen, bevor sie sich auf veröffentlichte Informationen verlassen und bevor sie Bestellungen für Produkte oder Dienstleistungen aufgeben.
- Bei anderen Namen und Marken kann es sich um das Eigentum Dritter handeln.
Dokumente / Ressourcen
![]() |
Programmierbare Intel FPGA-Beschleunigungskarte D5005 [pdf] Benutzerhandbuch FPGA-programmierbare Beschleunigungskarte, D5005, FPGA-programmierbare Beschleunigungskarte D5005, DMA-Beschleuniger-Funktionseinheit |