Scheda di accelerazione programmabile Intel FPGA D5005
Informazioni su questo documento
Questo documento descrive l'implementazione dell'Accelerator Functional Unit (AFU) ad accesso diretto alla memoria (DMA) e come costruire il progetto per l'esecuzione su hardware o in simulazione.
Pubblico di destinazione
Il pubblico previsto comprende sviluppatori hardware o software che richiedono una funzione di accelerazione (AF) per memorizzare i dati localmente nella memoria connessa al dispositivo Intel FPGA.
Convenzioni
Convenzioni sui documenti
Convenzione | Descrizione |
# | Precede un comando che indica che il comando deve essere immesso come root. |
$ | Indica che un comando deve essere immesso come utente. |
Questo tipo di carattere | Filenomi, comandi e parole chiave vengono stampati in questo tipo di carattere. Le lunghe righe di comando vengono stampate con questo tipo di carattere. Sebbene lunghe righe di comando possano passare alla riga successiva, il ritorno non fa parte del comando; non premere invio. |
Indica che il testo segnaposto che appare tra le parentesi angolari deve essere sostituito con un valore appropriato. Non inserire le parentesi angolari. |
Acronimi
Acronimi
Acronimi | Espansione | Descrizione |
AF | Funzione acceleratore | Immagine compilata dell'acceleratore hardware implementata nella logica FPGA che accelera un'applicazione. |
AFU | Unità Funzionale Acceleratore | Acceleratore hardware implementato in logica FPGA che scarica un'operazione di calcolo per un'applicazione dalla CPU per migliorare le prestazioni. |
API | Interfaccia di programmazione dell'applicazione | Un insieme di definizioni di subroutine, protocolli e strumenti per la creazione di applicazioni software. |
CCI-P | Interfaccia della cache principale | CCI-P è l'interfaccia standard utilizzata dagli AFU per comunicare con l'host. |
DFH | Intestazione della funzione del dispositivo | Crea un elenco collegato di intestazioni di funzionalità per fornire un modo estensibile per aggiungere funzionalità. |
continua… |
Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche attuali in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Acronimi | Espansione | Descrizione |
FIM | Gestore interfaccia FPGA | L'hardware FPGA contenente l'FPGA Interface Unit (FIU) e le interfacce esterne per memoria, rete, ecc.
La funzione Accelerator (AF) si interfaccia con la FIM in fase di esecuzione. |
Unità di informazione finanziaria | Unità di interfaccia FPGA | FIU è un livello di interfaccia della piattaforma che funge da ponte tra le interfacce della piattaforma come PCIe*, UPI e interfacce lato AFU come CCI-P. |
MPF | Fabbrica di proprietà di memoria | L'MPF è un Basic Building Block (BBB) che le AFU possono utilizzare per fornire operazioni di traffic shaping CCI-P per le transazioni con la FIU. |
Glossario di accelerazione
Stack di accelerazione per CPU Intel® Xeon® con FPGA Glossario
Termine | Abbreviazione | Descrizione |
Stack di accelerazione Intel® per CPU Intel Xeon® con FPGA | Pila di accelerazione | Una raccolta di software, firmware e strumenti che fornisce connettività ottimizzata per le prestazioni tra un FPGA Intel e un processore Intel Xeon. |
Scheda di accelerazione programmabile Intel FPGA | PAC FPGA Intel | Scheda acceleratore PCIe FPGA.
Contiene un FPGA Interface Manager (FIM) che si accoppia con un processore Intel Xeon sul bus PCIe. |
- Guida per l'utente dell'unità funzionale dell'acceleratore DMA: Scheda di accelerazione programmabile Intel FPGA D5005
Descrizione DMA AFU
Introduzione
L'AFU per l'accesso diretto alla memoria (DMA) esample mostra come gestire i trasferimenti di memoria tra il processore host e l'FPGA. È possibile integrare l'AFU DMA nel progetto per spostare i dati tra la memoria host e la memoria locale FPGA. L'AFU DMA comprende i seguenti sottomoduli:
- Memory Properties Factory (MPF) Basic Building Block (BBB)
- Core Cache Interface (CCI-P) all'adattatore Avalon® Memory-Mapped (Avalon-MM)
- Sistema di test DMA che contiene il DMA BBB
Questi sottomoduli sono descritti più dettagliatamente nell'argomento Componenti hardware DMA AFU di seguito.
Informazioni correlate
- I componenti hardware DMA AFU a pagina 6
- Specifiche dell'interfaccia Avalon
Per ulteriori informazioni sul protocollo Avalon-MM, inclusi i diagrammi temporali per le transazioni di lettura e scrittura.
Il pacchetto software DMA AFU
Lo stack di accelerazione Intel per CPU Intel Xeon con pacchetto FPGA file (*.tar.gz), include l'AFU DMA esample. Questo esample fornisce un driver per lo spazio utente. L'applicazione host utilizza questo driver in modo tale che il DMA sposti i dati tra l'host e la memoria FPGA. I binari hardware, i sorgenti e il driver dello spazio utente sono disponibili nella seguente directory: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . Prima di sperimentare con l'AFU DMA, è necessario installare il pacchetto software OPAE (Open Programmable Acceleration Engine). Per le istruzioni di installazione, fare riferimento a Installazione del pacchetto software OPAE nella Guida introduttiva rapida Intel Acceleration Stack per Intel FPGA Programmable Acceleration Card D5005. Questa Guida introduttiva include anche informazioni di base sull'OPAE (Open Programmable Acceleration Engine) e sulla configurazione di un'AFU. Dopo aver installato il pacchetto software Open Programmable Acceleration Engine (OPAE), comeampl'applicazione host e il driver dello spazio utente DMA AFU sono disponibili nella seguente directory: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. Per eseguire la sample host application, fpga_dma_test sull'hardware Intel FPGA PAC D5005, fare riferimento ai passaggi nella sezione Esecuzione di DMA AFU Example. Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche correnti in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Informazioni correlate
- Guida rapida di Intel Acceleration Stack per la scheda di accelerazione programmabile Intel FPGA D5005
- Installazione del pacchetto software OPAE
I componenti hardware DMA AFU
Il DMA AFU si interfaccia con l'FPGA Interface Unit (FIU) e la memoria FPGA. Fare riferimento alla scheda tecnica FPGA Interface Manager per la scheda di accelerazione programmabile Intel FPGA D5005 per le specifiche dettagliate della memoria FPGA. L'hardware attualmente disponibile determina questa configurazione di memoria. L'hardware futuro potrebbe supportare diverse configurazioni di memoria. È possibile utilizzare l'AFU DMA per copiare i dati tra le seguenti posizioni di origine e destinazione:
- La memoria FPGA da host a dispositivo
- Memoria FPGA del dispositivo all'host
Un sistema Platform Designer, $OPAE_PLATFORM_ROOT/hw/samples/ dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys implementa la maggior parte del DMA
- AFU. Parte dell'AFU DMA implementata nel sistema Platform Designer può essere trovata di seguito
posizione:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ Puoi trovare il DMA BBB nella seguente posizione:
- $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/dma_bbb
Guida per l'utente dell'unità funzionale dell'acceleratore DMA: Scheda di accelerazione programmabile Intel FPGA D5005
Diagramma a blocchi hardware DMA AFU
L'AFU DMA include i seguenti moduli interni per interfacciarsi con l'unità di interfaccia FPGA (FIU):
- Logica del decodificatore MMIO (Memory-Mapped IO): rileva le transazioni di lettura e scrittura MMIO e le separa dal canale CCI-P RX 0 da cui arrivano. Ciò garantisce che il traffico MMIO non raggiunga mai l'MPF BBB e sia servito da un canale di comando MMIO indipendente.
- Memory Properties Factory (MPF): questo modulo garantisce che le risposte di lettura dal DMA restituiscano nell'ordine in cui sono state emesse. Il protocollo Avalon-MM richiede che le risposte di lettura restituiscano nell'ordine corretto.
- Adattatore da CCI-P a Avalon-MM: questo modulo converte le transazioni CCI-P e Avalon-MM, come segue:
- Adattatore da CCI-P a Avalon-MMIO: questo percorso converte le transazioni CCI-P MMIO in transazioni Avalon-MM.
- Adattatore host da Avalon a CCI-P: questi percorsi creano percorsi separati di sola lettura e di sola scrittura per consentire al DMA di accedere alla memoria host.
- Sistema di test DMA: questo modulo funge da wrapper attorno al DMA BBB per esporre i master DMA al resto della logica nell'AFU. Fornisce l'interfaccia tra il DMA BBB e l'adattatore da CCI-P ad Avalon. Fornisce inoltre l'interfaccia tra il DMA BBB e le banche SDRAM FPGA locali.
Informazioni correlate
Scheda tecnica FPGA Interface Manager per scheda di accelerazione programmabile Intel FPGA D5005
Sistema di prova DMA
Il sistema di test DMA collega il DMA BBB al resto del progetto FPGA, compreso l'adattamento CCI-P e la memoria FPGA locale.
Diagramma a blocchi del sistema di test DMA
Questo diagramma a blocchi mostra i componenti interni del sistema di test DMA. Il sistema di test DMA è mostrato come un blocco monolitico nella Figura 1 a pagina 7.
Il sistema di test DMA comprende i seguenti moduli interni:
- Far Reach Bridge/Pipeline Bridge: un ponte di tubazioni con latenza regolabile inclusa per controllare la topologia e migliorare il design Fmax.
- DMA AFU Device Feature Header (DFH): questo è un DFH per DMA AFU. Questo DFH punta al DFH successivo situato all'offset 0x100 (DMA BBB DFH).
- Null DFH: questo componente termina l'elenco collegato DFH. Se aggiungi più BBB DMA al progetto, assicurati che l'indirizzo di base DFH nullo si trovi alla fine dell'elenco collegato DFH.
- MA Basic Building Block (BBB): questo blocco sposta i dati tra l'host e la memoria FPGA locale. Accede anche alla memoria dell'host per accedere alle catene di descrittori.
DMA BBB
Il sottosistema DMA BBB trasferisce i dati dagli indirizzi di origine a quelli di destinazione utilizzando le transazioni Avalon-MM. Il driver DMA controlla il DMA BBB accedendo al registro di controllo e stato dei vari componenti all'interno del sistema. Il driver DMA controlla anche il DMA BBB utilizzando la memoria condivisa per comunicare i descrittori di trasferimento. Il DMA BBB accede ai dati nella memoria FPGA con offset 0x0. Il DMA BBB accede a dati e descrittori nella memoria host con offset 0x1_0000_0000_0000.
Diagramma a blocchi del designer della piattaforma DMA BBB
Questo diagramma a blocchi esclude alcuni core IP interni del Pipeline Bridge.
Guida per l'utente dell'unità funzionale dell'acceleratore DMA: Scheda di accelerazione programmabile Intel FPGA D5005
Descrizione DMA AFU
I componenti di DMA BBB Platform Designer implementano le seguenti funzioni:
- Ponte di portata lontana/ponte di tubazioni: Un ponte di tubazioni con latenza regolabile incluso per controllare la topologia e migliorare il design Fmax.
- MA BBB DFH: Questa è un'intestazione di funzionalità del dispositivo per DMA BBB. Questo DFH punta al successivo DFH situato all'offset 0x100 (Null DFH).
- Frontend del descrittore: Responsabile del recupero dei descrittori e del loro trasferimento al Dispatcher. Quando un trasferimento DMA viene completato, il frontend riceve la formazione dello stato dal Dispatcher e sovrascrive il descrittore nella memoria dell'host.
- Spedizioniere: Questo blocco pianifica le richieste di trasferimento DMA al master di lettura e scrittura.
- Leggi il Maestro: Questo blocco è responsabile della lettura dei dati dalla memoria FPGA host o locale e dell'invio come dati di streaming a Write Master.
- Maestro di scrittura: Questo blocco è responsabile della ricezione dei dati in streaming dal Read Master e della scrittura dei contenuti nella memoria FPGA host o locale.
Registra spazi mappa e indirizzo
Il DMA AFU supporta due memorie views: Il DMA view e l'ospite view. Il DMA view supporta uno spazio di indirizzi a 49 bit. La metà inferiore del DMA view mappa alla memoria FPGA locale. La metà superiore del DMA view mappe per ospitare la memoria. Il padrone di casa view include tutti i registri accessibili tramite accessi MMIO come le tabelle DFH e i registri di controllo/stato dei vari core IP utilizzati all'interno dell'AFU DMA. I registri MMIO nel DMA BBB e AFU supportano l'accesso a 32 e 64 bit. L'AFU DMA non supporta gli accessi MMIO a 512 bit. Gli accessi ai registri Dispatcher all'interno del DMA BBB devono essere a 32 bit (il frontend del descrittore implementa i registri a 64 bit).
Mappa del registro DMA AFU
La mappa del registro DMA AFU fornisce gli indirizzi assoluti di tutte le posizioni all'interno dell'unità. Questi registri sono nell'host view perché è solo l'host che può accedervi.
Mappa della memoria DMA AFU
Byte indirizzo offset | Nome | Intervallo in byte | Descrizione |
0x0 | DMA AFU DFH | 0x40 | Intestazione della funzione del dispositivo per l'AFU DMA. ID_L è impostato su 0x9081f88b8f655caa e ID_H è impostato su 0x331db30c988541ea. Il DMA AFU DFH è stato parametrizzato per puntare all'offset 0x100 per trovare il prossimo DFH (DMA BBB DFH). Non è necessario modificare l'indirizzo di base del DMA AFU DFH poiché deve trovarsi all'indirizzo 0x0 come definito dalla specifica CCIP. |
0x100 | DMA BBB | 0x100 | Specifica il controllo DMA BBB e l'interfaccia del registro di stato. È possibile fare riferimento alla mappa del registro DMA BBB per ulteriori informazioni. All'interno del DMA BBB all'offset 0, il DMA BBB include il proprio DFH. Questo DFH è stato impostato per trovare il DFH successivo all'offset 0x100 (NULL DFH). Se aggiungi più BBB DMA, distanziali di 0x100 e assicurati che NULL DFH segua l'ultimo DMA di 0x100. |
0x200 | NULLO DFH | 0x40 | Termina l'elenco collegato DFH. ID_L è impostato su 0x90fe6aab12a0132f e ID_H è impostato su 0xda1182b1b3444e23. Il NULL DFH è stato parametrizzato per essere l'ultimo DFH nell'hardware. Per questo motivo il NULL DFH si trova all'indirizzo 0x200. Se si aggiungono BBB DMA aggiuntivi al sistema, è necessario aumentare di conseguenza l'indirizzo di base NULL DFH in modo che rimanga all'indirizzo più alto. Il driver DMA e l'applicazione di prova non utilizzano questo hardware. |
Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche attuali in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Registra spazi mappa e indirizzo
Mappa della memoria DMA BBB
I seguenti indirizzi di byte sono offset relativi dall'indirizzo di base DMA BBB nel sistema DMA AFU (0x100).
Byte indirizzo offset | Nome | Intervallo in byte | Descrizione |
0x0 | DMA BBB DFH | 0x40 | Intestazione della funzione del dispositivo per l'AFU DMA. ID_L è impostato su 0xa9149a35bace01ea e ID_H è impostato su 0xef82def7f6ec40fc . Il DMA BBB DFH è stato parametrizzato per puntare a 0x100 per il successivo offset DFH. Questo offset successivo può essere un altro DMA BBB, un altro DFH (non incluso in questo progetto) o il NULL DFH. |
0x40 | Spedizioniere | 0x40 | Porta di controllo per lo spedizioniere. Il driver DMA utilizza questa posizione per controllare il DMA o per interrogarne lo stato. |
0x80 | Frontend descrittivo | 0x40 | Il frontend del descrittore è un componente personalizzato che legge i descrittori dalla memoria host e sovrascrive il descrittore al termine del trasferimento DMA. Il driver indica al frontend dove risiede il primo descrittore nella memoria host e quindi l'hardware frontend comunica con il driver principalmente tramite i descrittori archiviati nella memoria host. |
Spazio indirizzi DMA AFU
L'host può accedere ai registri elencati nella Tabella 4 a pagina 12 e nella Tabella 5 a pagina 13. Il sottosistema DMA BBB ha accesso all'intero spazio degli indirizzi a 49 bit. La metà inferiore di questo spazio di indirizzi include le memorie FPGA locali. La metà superiore di questo spazio di indirizzi include la memoria degli indirizzi host a 48 bit. La figura seguente mostra l'host e il DMA viewdi memoria.
Il DMA AFU e Host Views di memoria
Elenco collegato intestazione funzionalità dispositivo
Il design DMA AFU esample contiene tre intestazioni di funzionalità del dispositivo (DFH) che formano un elenco collegato. Questo elenco collegato consente alla sample applicazione per identificare la DMA AFU e il driver per identificare la DMA BBB. L'elenco DFH include un DFH NULL alla fine. L'inclusione del DFH nullo alla fine dell'elenco collegato ti consente di aggiungere più BBB DMA al tuo progetto. Devi semplicemente spostare il NULL DFH in un indirizzo dopo gli altri BBB. Ciascun DMA BBB prevede che il successivo DFH si trovi a 0x100 byte dall'indirizzo di base del BBB. La figura seguente mostra l'elenco collegato per il design DMA AFU esamplui.
Registra spazi mappa e indirizzo
Concatenamento DMA AFU Device Feature Header (DFH).
Modello di programmazione software
L'AFU DMA include un driver software che è possibile utilizzare nella propria applicazione host. fpga_dma.cpp e fpga_dma.h fileI messaggi che si trovano nella seguente posizione implementano il driver software:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw Questo driver supporta le seguenti funzioni:
API | Descrizione |
fpgaCountDMAchannels | Esegue la scansione della catena di funzionalità del dispositivo alla ricerca di BBB DMA e conta tutti i canali disponibili. |
fpgaDMAOpen | Apre un handle al canale DMA. |
fpgaDMAChiudi | Chiude un handle al canale DMA. |
fpgaDMATransferInit | Inizializza un oggetto che rappresenta il trasferimento DMA. |
fpgaDMATransferReset | Reimposta l'oggetto attributo di trasferimento DMA sui valori predefiniti. |
fpgaDMATransferDestroy | Distrugge l'oggetto attributo di trasferimento DMA. |
fpgaDMATransferSetSrc | Imposta l'indirizzo di origine del trasferimento. Questo indirizzo deve essere allineato a 64 byte. |
fpgaDMATransferSetDst | Imposta l'indirizzo di destinazione del trasferimento. Questo indirizzo deve essere allineato a 64 byte. |
fpgaDMATransferSetLen | Imposta le lunghezze di trasferimento in byte. Per i trasferimenti non di pacchetto, è necessario impostare la lunghezza del trasferimento su un multiplo di 64 byte. Per i trasferimenti di pacchetti, questo non è un requisito. |
fpgaDMATransferSetTransferType | Imposta il tipo di trasferimento. I valori legali sono:
• HOST_MM_TO_FPGA_MM = TX (ospita su AFU) • FPGA_MM_TO_HOST_MM = RX (da AFU a host) |
fpgaDMATransferSetTransferCallback | Registra la richiamata per la notifica sul completamento del trasferimento asincrono. Se si specifica una richiamata, fpgaDMATransfer restituisce immediatamente (trasferimento asincrono).
Se non si specifica una richiamata, fpgaDMATransfer ritorna al termine del trasferimento (trasferimento sincrono/bloccante). |
fpgaDMATransferSetLast | Indica l'ultimo trasferimento in modo che il DMA possa iniziare a elaborare i trasferimenti precaricati. Il valore predefinito è 64 trasferimenti in cantiere prima che il DMA inizi a lavorare sui trasferimenti. |
fpgaDMATransfer | Esegue un trasferimento DMA. |
Per ulteriori informazioni sull'API, sugli argomenti di input e di output, fare riferimento all'intestazione file trova $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.hIntel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche correnti in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Modello di programmazione software
Per saperne di più sul modello di utilizzo del driver software, fare riferimento a README file situato a $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md
Esecuzione di DMA AFU esample
Prima di iniziare:
- Dovresti avere familiarità con l'example nella Guida di avvio rapido dello stack di accelerazione Intel per la scheda di accelerazione programmabile Intel FPGA D5005.
- È necessario definire una variabile di ambiente. La variabile di ambiente dipende dalla versione Intel Acceleration Stack in uso:
- Per la versione corrente, imposta la variabile di ambiente su $OPAE_PLATFORM_ROOT
- È necessario installare la libreria Intel Threading Building Blocks (TBB) poiché il driver DMA si basa su di essa.
- Devi anche impostare due hugepage da 1 GB per eseguire il file sampl'applicazione. $ sudo sh -c “echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages”
Eseguire i passaggi seguenti per scaricare il flusso di bit della funzione di accelerazione DMA (AF), per creare l'applicazione e il driver ed eseguire la progettazione exampon:
- Passare all'applicazione DMA e alla directory del driver: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
- Compila il driver e l'applicazione: make
- Scarica il bitstream DMA AFU: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
- Eseguire l'applicazione host per scrivere 100 MB in porzioni da 1 MB dalla memoria host alla memoria del dispositivo FPGA e rileggerla: ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom
Informazioni correlate
Guida rapida di Intel Acceleration Stack per la scheda di accelerazione programmabile Intel FPGA D5005 Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche attuali in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Compilazione del DMA AFU Esample
Per generare un ambiente di compilazione di sintesi per compilare un AF, utilizzare il comando afu_synth_setup come segue:
- Modifica al DMA AFU sampdirectory: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Genera la directory di costruzione del progetto: afu_synth_setup –source hw/rtl/filelist.txt build_synth
- Dalla directory build di sintesi generata da afu_synth_setup, immettere i seguenti comandi da una finestra del terminale per generare un AF per la piattaforma hardware di destinazione: cd build_synth run.sh Lo script di generazione AF run.sh crea l'immagine AF con la stessa base filenome come configurazione della piattaforma dell'AFU file (.json) con un suffisso .gbs nella posizione:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche correnti in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Simulazione dell'AFU Esample
Intel consiglia di fare riferimento alla Guida di avvio rapido dell'ambiente di simulazione (ASE) Intel Accelerator Functional Unit (AFU) per conoscere la simulazione di un PAC FPGA Intelample e per configurare il proprio ambiente. Prima di procedere con i seguenti passaggi, verificare che la variabile di ambiente OPAE_PLATFORM_ROOT sia impostata sulla directory di installazione di OPAE SDK. Completare i seguenti passaggi per configurare il simulatore hardware per l'AFU DMA:
- Modifica al DMA AFU sampdirectory: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Crea un ambiente ASE in una nuova directory e configuralo per simulare un'AFU: afu_sim_setup –source hw/rtl/filelist.txt build_ase_dir
- Passare alla directory di build ASE: cd build_ase_dir
- Compila il driver e l'applicazione: make
- Fare simulazione: fare sim
Sample output dal simulatore hardware:
[SIM] ** ATTENZIONE: PRIMA di eseguire l'applicazione software ** [SIM] Impostare env(ASE_WORKDIR) nel terminale in cui verrà eseguita l'applicazione (copia e incolla) => [SIM] $SHELL | Esegui:[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] Per qualsiasi altro $SHELL, consulta il tuo amministratore Linux [SIM] [SIM] Pronto per la simulazione... [SIM] Premi CTRL-C per chiudere il simulatore...Completare i seguenti passaggi per compilare ed eseguire il software DMA AFU nell'ambiente di simulazione:
- Aprire una nuova finestra del terminale.
- Cambia directory in: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche attuali in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Simulazione dell'AFU Esample
- Copia la stringa di configurazione dell'ambiente (scegli la stringa appropriata per la tua shell) dai passaggi precedenti nella simulazione hardware nella finestra del terminale. Si vedano le righe seguenti nella sample output dal simulatore hardware. [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
- Compila il software: $ make USE_ASE=1
- Eseguire l'applicazione host per scrivere 4 KB in porzioni da 1 KB dalla memoria host alla memoria del dispositivo FPGA in modalità loopback: ./ fpga_dma_test -s 4096 -p 1024 -r mtom
Informazioni correlate
Guida per l'utente di avvio rapido dell'ambiente di simulazione (ASE) Intel Accelerator Functional Unit (AFU).
Ottimizzazione per prestazioni DMA migliorate
L'implementazione dell'ottimizzazione NUMA (accesso alla memoria non uniforme) in fpga_dma_test.cpp consente al processore di accedere alla propria memoria locale più velocemente rispetto all'accesso alla memoria non locale (memoria locale di un altro processore). Una tipica configurazione NUMA è mostrata nel diagramma seguente. L'accesso locale rappresenta l'accesso da un core alla memoria locale allo stesso core. L'accesso remoto illustra il percorso intrapreso quando un core sul nodo 0 accede alla memoria che risiede nella memoria locale al nodo 1.
Tipica configurazione NUMA
Utilizza il codice seguente per implementare l'ottimizzazione NUMA nella tua applicazione di test:
// Imposta l'affinità corretta se richiesto if (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”); // Trova il dispositivo dalla topologia hwloc_topology_t topology; hwloc_topology_init(&topologia); hwloc_topology_set_flags(topologia, HWLOC_TOPOLOGIA_FLAG_IO_DEVICES);Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche attuali in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi. *Altri nomi e marchi possono essere rivendicati come proprietà di altri.
Ottimizzazione per prestazioni DMA migliorate
hwloc_topology_load(topologia); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(topologia, dom, bus, dev, func); hwloc_obj_t obj2 = hwloc_get_non_io_ancestor_obj(topologia, obj); #if (FPGA_DMA_DEBUG) hwloc_obj_type_snprintf(str, 4096, obj2, 1); printf(“%s\n”, str);hwloc_obj_attr_snprintf(str, 4096, obj2, ” :: “, 1);printf(“%s\n”, str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->cpuset); printf("CPUSET è %s\n", str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->nodeset); printf("NODESET is %s\n", str);#endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(topology, obj2->nodeset,HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_MIGRATE |HWLOC_MEMBIND_BYNODESET); #else retval =hwloc_set_membind_nodeset(topologia, obj2->nodeset, HWLOC_MEMBIND_THREAD,HWLOC_MEMBIND_MIGRATE); #endifON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_membind”); } se (affinità_cpu) { retval = hwloc_set_cpubind(topologia, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_cpubind”); } }
Archivi della guida per l'utente dell'unità funzionale dell'acceleratore DMA
Versione dello stack di accelerazione Intel | Guida per l'utente (PDF) |
2.0 | Guida per l'utente dell'unità funzionale dell'acceleratore DMA (AFU). |
Cronologia delle revisioni del documento per la Guida per l'utente dell'unità funzionale DMA Accelerator
Versione del documento |
Accelerazione Intel Versione in pila |
Cambiamenti |
2020.08.03 |
2.0.1 (supportato con Intel
Quartus® Prime Pro Edition Edizione 19.2) |
Corretta l'immagine AF file nome nella sezione Compilazione del DMA AFU Esample. |
2020.04.17 |
2.0.1 (supportato con Intel
Quartus Prime Edizione Pro Edizione 19.2) |
Corretta una dichiarazione in Pubblico di destinazione sezione. |
2020.02.20 |
2.0.1 (supportato con Intel
Quartus Prime Edizione Pro Edizione 19.2) |
Corretto errore di battitura. |
2019.11.04 |
2.0.1 (supportato con Intel Quartus Prime Edizione Pro Edizione 19.2) |
• Sostituito fpgaconf con fpgasupdate durante la configurazione dell'FPGA con l'AFU precompilata nella sezione Esecuzione del DMA AFU Esample.
• Aggiunti sottotitoli Scheda di accelerazione programmabile Intel FPGA D5005 al titolo del documento. • Aggiunta la variabile d'ambiente $OPAE_PLATFORM_ROOT. • Sezione modificata Modello di programmazione software per modifiche minori. • Aggiunta nuova sezione Compilazione del DMA AFU Esample. • Sezione modificata Ottimizzazione per prestazioni DMA migliorate per modifiche minori. |
2019.08.05 |
2.0 (supportato con Intel
Quartus Prime Pro Edizione 18.1.2) |
Versione iniziale. |
Intel Corporation. Tutti i diritti riservati. Intel, il logo Intel e altri marchi Intel sono marchi di Intel Corporation o delle sue consociate. Intel garantisce le prestazioni dei suoi prodotti FPGA e semiconduttori in base alle specifiche correnti in conformità con la garanzia standard di Intel, ma si riserva il diritto di apportare modifiche a qualsiasi prodotto e servizio in qualsiasi momento senza preavviso. Intel non si assume alcuna responsabilità derivante dall'applicazione o dall'uso di qualsiasi informazione, prodotto o servizio qui descritto, salvo quanto espressamente concordato per iscritto da Intel. Si consiglia ai clienti Intel di ottenere la versione più recente delle specifiche del dispositivo prima di fare affidamento su qualsiasi informazione pubblicata e prima di effettuare ordini per prodotti o servizi.
- Altri nomi e marchi potrebbero essere rivendicati come proprietà di terzi.
Documenti / Risorse
![]() |
Scheda di accelerazione programmabile Intel FPGA D5005 [pdf] Guida utente Scheda di accelerazione programmabile FPGA, D5005, Scheda di accelerazione programmabile FPGA D5005, Unità funzionale acceleratore DMA |