Placă de accelerație programabilă Intel FPGA D5005
Despre acest document
Acest document descrie implementarea unității funcționale a acceleratorului (AFU) cu acces direct la memorie (DMA) și modul de construire a designului pentru a rula pe hardware sau în simulare.
Publicul vizat
Publicul vizat include dezvoltatori de hardware sau software care necesită o funcție de accelerare (AF) pentru a stoca datele local în memoria conectată la dispozitivul Intel FPGA.
Convenții
Convențiile documentelor
Convenţie | Descriere |
# | Precedează o comandă care indică că comanda trebuie introdusă ca root. |
$ | Indică o comandă care urmează să fie introdusă ca utilizator. |
Acest font | Filenumele, comenzile și cuvintele cheie sunt tipărite în acest font. Liniile lungi de comandă sunt tipărite în acest font. Deși liniile de comandă lungi se pot încheia la următoarea linie, revenirea nu face parte din comandă; nu apăsați enter. |
Indică că textul substituent care apare între parantezele unghiulare trebuie înlocuit cu o valoare adecvată. Nu introduceți parantezele unghiulare. |
Acronime
Acronime
Acronime | Expansiune | Descriere |
AF | Funcția de accelerare | Imagine compilată Hardware Accelerator implementată în logica FPGA care accelerează o aplicație. |
AFU | Unitate Funcțională Accelerator | Accelerator hardware implementat în logica FPGA care descarcă o operație de calcul pentru o aplicație de pe CPU pentru a îmbunătăți performanța. |
API | Interfață de programare a aplicației | Un set de definiții de subrutine, protocoale și instrumente pentru construirea de aplicații software. |
CCI-P | Core Cache Interfață | CCI-P este interfața standard utilizată de AFU pentru a comunica cu gazda. |
DFH | Antet caracteristică dispozitiv | Creează o listă legată de anteturi de caracteristici pentru a oferi o modalitate extensibilă de a adăuga caracteristici. |
a continuat… |
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Acronime | Expansiune | Descriere |
FIM | Manager de interfață FPGA | Hardware-ul FPGA care conține unitatea de interfață FPGA (FIU) și interfețe externe pentru memorie, rețea etc.
Funcția de accelerație (AF) interfață cu FIM în timpul rulării. |
FIU | Unitate de interfață FPGA | FIU este un strat de interfață de platformă care acționează ca o punte între interfețele platformei precum PCIe*, UPI și interfețele laterale AFU, cum ar fi CCI-P. |
MPF | Fabrica de proprietăți memorie | MPF este un element de bază (BBB) pe care AFU-urile îl pot folosi pentru a furniza operațiuni de modelare a traficului CCI-P pentru tranzacțiile cu FIU. |
Glosar de accelerare
Stiva de accelerare pentru procesorul Intel® Xeon® cu glosar FPGA
Termen | Abreviere | Descriere |
Intel® Acceleration Stack pentru procesorul Intel Xeon® cu FPGA | Stiva de accelerare | O colecție de software, firmware și instrumente care oferă conectivitate optimizată pentru performanță între un procesor Intel FPGA și un procesor Intel Xeon. |
Placă de accelerație programabilă Intel FPGA | Intel FPGA PAC | Placă de accelerare PCIe FPGA.
Conține un manager de interfață FPGA (FIM) care se asociază cu un procesor Intel Xeon prin magistrala PCIe. |
- Ghid de utilizare al unității funcționale a acceleratorului DMA: placă de accelerație programabilă Intel FPGA D5005
Descriere DMA AFU
Introducere
Accesul direct la memorie (DMA) AFU exampfișierul arată cum să gestionați transferurile de memorie între procesorul gazdă și FPGA. Puteți integra DMA AFU în designul dvs. pentru a muta datele între memoria gazdă și memoria locală FPGA. DMA AFU cuprinde următoarele submodule:
- Memory Properties Factory (MPF) Basic Building Block (BBB)
- Core Cache Interface (CCI-P) la adaptorul Avalon® Memory-Mapped (Avalon-MM)
- Sistem de testare DMA care conține DMA BBB
Aceste submodule sunt descrise mai detaliat în subiectul Componente hardware DMA AFU de mai jos.
Informații conexe
- Componentele hardware DMA AFU la pagina 6
- Specificațiile interfeței Avalon
Pentru mai multe informații despre protocolul Avalon-MM, inclusiv diagrame de timp pentru tranzacțiile de citire și scriere.
Pachetul software DMA AFU
Intel Acceleration Stack pentru procesorul Intel Xeon cu pachet FPGA file (*.tar.gz), include DMA AFU example. Acest exampchiul oferă un driver de spațiu pentru utilizator. Aplicația gazdă folosește acest driver astfel încât DMA mută datele între gazdă și memoria FPGA. Binarele hardware, sursele și driverul spațiului utilizator sunt disponibile în următorul director: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . Înainte de a experimenta cu DMA AFU, trebuie să instalați pachetul software Open Programmable Acceleration Engine (OPAE). Consultați Instalarea pachetului software OPAE din Ghidul de pornire rapidă Intel Acceleration Stack pentru Intel FPGA Programable Acceleration Card D5005 pentru instrucțiuni de instalare. Acest Ghid de pornire rapidă include, de asemenea, informații de bază despre Open Programmable Acceleration Engine (OPAE) și configurarea unui AFU. După instalarea pachetului software Open Programmable Acceleration Engine (OPAE), caampAplicația gazdă și driverul de spațiu utilizator DMA AFU sunt disponibile în următorul director: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. Pentru a rula sampaplicația gazdă, fpga_dma_test pe hardware-ul dvs. Intel FPGA PAC D5005, consultați pașii din secțiunea Rularea DMA AFU Example. Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Informații conexe
- Ghid de pornire rapidă Intel Acceleration Stack pentru placa de accelerație programabilă Intel FPGA D5005
- Instalarea pachetului software OPAE
Componentele hardware DMA AFU
DMA AFU interfață cu unitatea de interfață FPGA (FIU) și memoria FPGA. Consultați fișa de date FPGA Interface Manager pentru Intel FPGA Programable Acceleration Card D5005 pentru specificații detaliate ale memoriei FPGA. Hardware-ul disponibil în prezent dictează această configurație de memorie. Hardware-ul viitor poate suporta diferite configurații de memorie. Puteți utiliza DMA AFU pentru a copia date între următoarele locații sursă și destinație:
- Memoria FPGA de la gazdă la dispozitiv
- Memoria FPGA a dispozitivului către gazdă
Un sistem Platform Designer, $OPAE_PLATFORM_ROOT/hw/samples/ dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys implementează cea mai mare parte a DMA
- AFU. O parte din DMA AFU implementată în sistemul Platform Designer poate fi găsită în cele ce urmează
locație:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ Puteți găsi DMA BBB în următoarea locație:
- $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/dma_bbb
Ghid de utilizare al unității funcționale a acceleratorului DMA: placă de accelerație programabilă Intel FPGA D5005
Diagrama bloc hardware DMA AFU
DMA AFU include următoarele module interne pentru interfața cu unitatea de interfață FPGA (FIU):
- Memory-Mapped IO (MMIO) Decoder Logic: detectează tranzacțiile de citire și scriere MMIO și le separă de canalul 0 CCI-P RX de la care ajung. Acest lucru asigură că traficul MMIO nu ajunge niciodată la MPF BBB și este deservit de un canal de comandă MMIO independent.
- Memory Properties Factory (MPF): Acest modul asigură că răspunsurile citite de la DMA revin în ordinea în care au fost emise. Protocolul Avalon-MM necesită răspunsuri citite pentru a reveni în ordinea corectă.
- Adaptor CCI-P la Avalon-MM: Acest modul se traduce între tranzacțiile CCI-P și Avalon-MM, după cum urmează:
- Adaptor CCI-P la Avalon-MMIO: Această cale traduce tranzacțiile CCI-P MMIO în tranzacții Avalon-MM.
- Adaptor gazdă Avalon la CCI-P: Aceste căi creează căi separate numai pentru citire și doar pentru scriere pentru ca DMA să acceseze memoria gazdă.
- Sistem de testare DMA: Acest modul servește ca un înveliș în jurul DMA BBB pentru a expune master-urile DMA la restul logicii din AFU. Acesta oferă interfața dintre DMA BBB și adaptorul CCI-P la Avalon. De asemenea, oferă interfața dintre DMA BBB și băncile locale FPGA SDRAM.
Informații conexe
FPGA Interface Manager Data Sheet pentru Intel FPGA Programable Acceleration Card D5005
Sistem de testare DMA
Sistemul de testare DMA conectează DMA BBB la restul designului FPGA, inclusiv adaptarea CCI-P și memoria FPGA locală.
Diagrama bloc a sistemului de testare DMA
Această diagramă bloc arată elementele interne ale sistemului de testare DMA. Sistemul de testare DMA este prezentat ca un bloc monolitic în Figura 1 de la pagina 7.
Sistemul de testare DMA include următoarele module interne:
- Far Reach Bridge/Pipeline Bridge: Un pod de conductă cu latență reglabilă inclusă pentru a controla topologia și a îmbunătăți designul Fmax.
- Antet caracteristică dispozitiv DMA AFU (DFH): Acesta este un DFH pentru DMA AFU. Acest DFH indică următorul DFH situat la offset 0x100 (DMA BBB DFH).
- Null DFH: Această componentă termină lista legată DFH. Dacă adăugați mai multe DMA BBB la proiect, asigurați-vă că adresa de bază DFH nulă este situată la sfârșitul listei conectate DFH.
- MA Basic Building Block (BBB): Acest bloc mută datele între gazdă și memoria FPGA locală. De asemenea, accesează memoria gazdă pentru a accesa lanțurile de descriptori.
DMA BBB
Subsistemul DMA BBB transferă date de la adresele sursă la adresa de destinație folosind tranzacții Avalon-MM. Driverul DMA controlează DMA BBB accesând registrul de control și stare al diferitelor componente din interiorul sistemului. Driverul DMA controlează, de asemenea, DMA BBB utilizând memoria partajată pentru a comunica descriptorii de transfer. DMA BBB accesează datele din memoria FPGA la offset 0x0. DMA BBB accesează datele și descriptorii din memoria gazdă la offset 0x1_0000_0000_0000.
Diagrama bloc pentru proiectantul platformei DMA BBB
Această diagramă bloc exclude unele nuclee IP interne Pipeline Bridge.
Ghid de utilizare al unității funcționale a acceleratorului DMA: placă de accelerație programabilă Intel FPGA D5005
Descriere DMA AFU
Componentele din DMA BBB Platform Designer implementează următoarele funcții:
- Podul îndepărtat/Podul conductei: O punte de conducte cu latență reglabilă inclusă pentru a controla topologia și a îmbunătăți designul Fmax.
- MA BBB DFH: Acesta este un antet de caracteristică a dispozitivului pentru DMA BBB. Acest DFH indică următorul DFH situat la offset 0x100 (DFH nul).
- Descriptor Frontend: Responsabil pentru preluarea descriptorilor și transferul lor către Dispatcher. Când un transfer DMA se termină, interfața primește formarea stării de la Dispatcher și suprascrie descriptorul în memoria gazdă.
- Dispecer: Acest bloc programează cererile de transferuri DMA către masterul de citire și scriere.
- Citeste Maestrul: Acest bloc este responsabil pentru citirea datelor din memoria gazdă sau FPGA locală și trimiterea lor ca date de streaming către Write Master.
- Scrie maestru: Acest bloc este responsabil pentru primirea datelor în flux de la Read Master și scrierea conținutului pe gazdă sau în memoria FPGA locală.
Înregistrați Hartă și Spații de Adresă
DMA AFU acceptă două memorie views: DMA view iar gazda view. DMA view acceptă un spațiu de adrese de 49 de biți. Jumătatea inferioară a DMA view mapează la memoria FPGA locală. Jumătatea superioară a DMA view hărți pentru memoria gazdă. Gazda view include toate registrele accesibile prin accesările MMIO, cum ar fi tabelele DFH și registrele de control/stare ale diferitelor nuclee IP utilizate în interiorul AFU DMA. Registrele MMIO în DMA BBB și AFU acceptă acces pe 32 și 64 de biți. DMA AFU nu acceptă accesări MMIO pe 512 biți. Accesurile la registrele Dispatcher din interiorul DMA BBB trebuie să fie de 32 de biți (frontend-ul Descriptor implementează registre de 64 de biți).
Harta de înregistrare DMA AFU
Harta registrului DMA AFU oferă adresele absolute ale tuturor locațiilor din unitate. Aceste registre sunt în gazdă view pentru că doar gazda le poate accesa.
Harta memoriei DMA AFU
Byte Address Offsets | Nume | Spațiu în octeți | Descriere |
0x0 | DMA AFU DFH | 0x40 | Antetul caracteristicii dispozitivului pentru DMA AFU. ID_L este setat la 0x9081f88b8f655caa și ID_H este setat la 0x331db30c988541ea. DMA AFU DFH a fost parametrizat pentru a indica 0x100 pentru a găsi următorul DFH (DMA BBB DFH). Nu trebuie să modificați adresa de bază a DMA AFU DFH, deoarece aceasta trebuie să fie localizată la adresa 0x0, așa cum este definită de specificația CCIP. |
0x100 | DMA BBB | 0x100 | Specifică controlul DMA BBB și interfața registrului de stare. Puteți consulta harta registrului DMA BBB pentru mai multe informații. În cadrul DMA BBB la offset 0, DMA BBB include propriul DFH. Acest DFH a fost setat să găsească următorul DFH la offset 0x100 (NULL DFH). Dacă adăugați mai multe DMA BBB, distanțați-le la 0x100 și asigurați-vă că NULL DFH urmează ultimul DMA cu 0x100. |
0x200 | DFH NULL | 0x40 | Termină lista de conexiuni DFH. ID_L este setat la 0x90fe6aab12a0132f și ID_H este setat la 0xda1182b1b3444e23. DFH NULL a fost parametrizat pentru a fi ultimul DFH din hardware. Din acest motiv DFH NULL este localizat la adresa 0x200. Dacă adăugați BBB-uri DMA suplimentare la sistem, trebuie să creșteți adresa de bază DFH NULL în mod corespunzător, astfel încât să rămână la cea mai înaltă adresă. Driverul DMA și aplicația de testare nu folosesc acest hardware. |
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Înregistrați Hartă și Spații de Adresă
Harta memoriei DMA BBB
Următoarele adrese de octeți sunt decalaje relative față de adresa de bază DMA BBB din sistemul DMA AFU (0x100).
Byte Address Offsets | Nume | Spațiu în octeți | Descriere |
0x0 | DMA BBB DFH | 0x40 | Antetul caracteristicii dispozitivului pentru DMA AFU. ID_L este setat la 0xa9149a35bace01ea și ID_H este setat la 0xef82def7f6ec40fc. DMA BBB DFH a fost parametrizat pentru a indica 0x100 pentru următorul offset DFH. Următorul offset poate fi un alt DMA BBB, un alt DFH (nu este inclus în acest design) sau NULL DFH. |
0x40 | Dispecer | 0x40 | Port de control pentru dispecer. Driverul DMA folosește această locație pentru a controla DMA sau pentru a interoga starea acestuia. |
0x80 | Descriptor Frontend | 0x40 | Frontend-ul descriptorului este o componentă personalizată care citește descriptori din memoria gazdă și suprascrie descriptorul atunci când transferul DMA se termină. Driverul indică frontend-ului unde locuiește primul descriptor în memoria gazdă și apoi hardware-ul frontend comunică cu driverul în primul rând prin descriptori stocați în memoria gazdă. |
Spațiu de adresă DMA AFU
Gazda poate accesa registrele enumerate în Tabelul 4 de la pagina 12 și Tabelul 5 de la pagina 13. Subsistemul DMA BBB are acces la spațiul complet de adrese de 49 de biți. Jumătatea inferioară a acestui spațiu de adrese include memoriile locale FPGA. Jumătatea superioară a acestui spațiu de adrese include memoria de adrese gazdă pe 48 de biți. Următoarea figură arată gazda și DMA views de memorie.
DMA AFU și gazdă Views de Memorie
Lista conexă antet caracteristici dispozitivului
Designul DMA AFU exampfișierul conține trei anteturi de caracteristici ale dispozitivului (DFH) care formează o listă legată. Această listă legată permite sampaplicația pentru a identifica DMA AFU, precum și driverul pentru a identifica DMA BBB. Lista DFH include un DFH NULL la sfârșit. Includerea DFH nulă la sfârșitul listei conectate vă permite să adăugați mai multe DMA BBB la designul dvs. Trebuie doar să mutați NULL DFH la o adresă după celelalte BBB. Fiecare DMA BBB se așteaptă ca următorul DFH să fie localizat la 0x100 de octeți de adresa de bază a BBB. Următoarea figură ilustrează lista legată pentru designul DMA AFU, de example.
Înregistrați Hartă și Spații de Adresă
DMA AFU Device Feature Header (DFH) Chaining
Model de programare software
DMA AFU include un driver software pe care îl puteți utiliza în propria aplicație gazdă. Fpga_dma.cpp și fpga_dma.h files situat în următoarea locație implementează driverul software:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw Acest driver acceptă următoarele funcții:
API | Descriere |
fpgaCountDMAChannels | Scanează lanțul de caracteristici ale dispozitivului pentru a găsi BBB-uri DMA și numără toate canalele disponibile. |
fpgaDMAOpen | Deschide un mâner pentru canalul DMA. |
fpgaDMACnchide | Închide un mâner la canalul DMA. |
fpgaDMATransferInit | Inițializează un obiect care reprezintă transferul DMA. |
fpgaDMATransferReset | Resetează obiectul atributului de transfer DMA la valorile implicite. |
fpgaDMATransferDestroy | Distruge obiectul atribut de transfer DMA. |
fpgaDMATransferSetSrc | Setează adresa sursă a transferului. Această adresă trebuie să fie aliniată pe 64 de octeți. |
fpgaDMATransferSetDst | Setează adresa de destinație a transferului. Această adresă trebuie să fie aliniată pe 64 de octeți. |
fpgaDMATransferSetLen | Setează lungimile de transfer în octeți. Pentru transferurile fără pachete, trebuie să setați lungimea transferului la un multiplu de 64 de octeți. Pentru transferurile de pachete, aceasta nu este o cerință. |
fpgaDMATransferSetTransferType | Setează tipul de transfer. Valorile legale sunt:
• HOST_MM_TO_FPGA_MM = TX (gazdă către AFU) • FPGA_MM_TO_HOST_MM = RX (AFU către gazdă) |
fpgaDMATransferSetTransferCallback | Înregistrează apel invers pentru notificare la finalizarea transferului asincron. Dacă specificați un apel invers, fpgaDMATransfer revine imediat (transfer asincron).
Dacă nu specificați un apel invers, fpgaDMATransfer revine după finalizarea transferului (transfer sincron/blocare). |
fpgaDMATransferSetLast | Indică ultimul transfer, astfel încât DMA să poată începe procesarea transferurilor preluate în prealabil. Valoarea implicită este de 64 de transferuri în curs înainte ca DMA să înceapă să lucreze la transferuri. |
fpgaDMATransfer | Efectuează un transfer DMA. |
Pentru mai multe informații despre API, argumentele de intrare și de ieșire, consultați antetul file situat $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.hIntel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Model de programare software
Pentru a afla mai multe despre modelul de utilizare a driverului software, consultați README file situat la $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md
Rularea DMA AFU Example
Înainte de a începe:
- Ar trebui să fii familiarizat cu fostulampfișierele din Ghidul de pornire rapidă Intel Acceleration Stack pentru Intel FPGA Programable Acceleration Card D5005.
- Trebuie să definiți o variabilă de mediu. Variabila de mediu depinde de versiunea Intel Acceleration Stack pe care o utilizați:
- Pentru versiunea curentă, setați variabila de mediu la $OPAE_PLATFORM_ROOT
- Trebuie să instalați biblioteca Intel Threading Building Blocks (TBB), deoarece driverul DMA se bazează pe aceasta.
- De asemenea, trebuie să configurați două pagini uriașe de 1 GB pentru a rula sample aplicație. $ sudo sh -c „echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages”
Efectuați următorii pași pentru a descărca fluxul de biți DMA Accelerator Function (AF), pentru a construi aplicația și driverul și pentru a rula proiectarea examppe:
- Schimbați la aplicația DMA și directorul driverului: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
- Construiește driverul și aplicația: make
- Descărcați fluxul de biți DMA AFU: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
- Executați aplicația gazdă pentru a scrie 100 MB în porțiuni de 1 MB din memoria gazdă în memoria dispozitivului FPGA și citiți-o înapoi: ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom
Informații conexe
Ghid de pornire rapidă Intel Acceleration Stack pentru placa de accelerație programabilă Intel FPGA D5005 Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Compilarea DMA AFU Example
Pentru a genera un mediu de compilare de sinteză pentru a compila un AF, utilizați comanda afu_synth_setup după cum urmează:
- Schimbați la AFU-urile DMAampdirectorul fișierelor: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Generați directorul de construcție a designului: afu_synth_setup –source hw/rtl/filelist.txt build_synth
- Din directorul de compilare de sinteză generat de afu_synth_setup, introduceți următoarele comenzi dintr-o fereastră de terminal pentru a genera un AF pentru platforma hardware țintă: cd build_synth run.sh Scriptul de generare run.sh AF creează imaginea AF cu aceeași bază filenume ca configurație a platformei AFU file (.json) cu un sufix .gbs la locația:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Simularea AFU Example
Intel vă recomandă să consultați Ghidul de pornire rapidă pentru mediul de simulare (ASE) al unității funcționale Intel Accelerator (AFU) pentru Intel FPGA PAC pentru a vă familiariza cu simularea ex.ampfișiere și pentru a vă configura mediul. Înainte de a trece prin următorii pași, verificați dacă variabila de mediu OPAE_PLATFORM_ROOT este setată la directorul de instalare OPAE SDK. Parcurgeți următorii pași pentru a configura simulatorul hardware pentru DMA AFU:
- Schimbați la AFU-urile DMAampdirectorul fișierelor: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
- Creați un mediu ASE într-un director nou și configurați-l pentru simularea unui AFU: afu_sim_setup –source hw/rtl/filelist.txt build_ase_dir
- Schimbați în directorul de compilare ASE: cd build_ase_dir
- Construiește driverul și aplicația: make
- Face simulare: face sim
SampIeșirea fișierului din simulatorul hardware:
[SIM] ** ATENȚIE : ÎNAINTE de a rula aplicația software ** [SIM] Setați env(ASE_WORKDIR) în terminalul unde va rula aplicația (copy-and-paste) => [SIM] $SHELL | Rulați:[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] Pentru orice alt $SHELL, consultați administratorul Linux [SIM] [SIM] Gata pentru simulare... [SIM] Apăsați CTRL-C pentru a închide simulatorul...Parcurgeți următorii pași pentru a compila și executa software-ul DMA AFU în mediul de simulare:
- Deschideți o nouă fereastră de terminal.
- Schimbați directorul în: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Simularea AFU Example
- Copiați șirul de configurare a mediului (alegeți șirul potrivit pentru shell-ul dvs.) din pașii de mai sus din simularea hardware în fereastra terminalului. Vezi următoarele rânduri din sampIeșirea chi-ului din simulatorul 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ți software-ul: $ make USE_ASE=1
- Executați aplicația gazdă pentru a scrie 4 KB în porțiuni de 1 KB din memoria gazdă înapoi în memoria dispozitivului FPGA în modul loopback: ./ fpga_dma_test -s 4096 -p 1024 -r mtom
Informații conexe
Ghid de utilizare rapidă a mediului de simulare (ASE) pentru unitatea funcțională a acceleratorului Intel (AFU).
Optimizare pentru performanță DMA îmbunătățită
Implementarea optimizării NUMA (acces neuniform la memorie) în fpga_dma_test.cpp permite procesorului să acceseze propria memorie locală mai rapid decât accesarea memoriei non-locale (memoria locală la alt procesor). O configurație tipică NUMA este prezentată în diagrama de mai jos. Accesul local reprezintă accesul de la un nucleu la memorie locală la același nucleu. Accesul de la distanță ilustrează calea parcursă atunci când un nucleu de pe Nodul 0 accesează memoria care se află în memoria locală a Nodului 1.
Configurație tipică NUMA
Utilizați următorul cod pentru a implementa optimizarea NUMA în aplicația dvs. de testare:
// Configurați afinitatea corespunzătoare dacă este solicitat dacă (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, “fpgaPropertiesGetDevice”; // Găsiți dispozitivul din topologia hwloc_topology_t topology; hwloc_topology_init(&topology); hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IO_DEVICES);Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricărui produs și serviciu în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii. *Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Optimizare pentru performanță DMA îmbunătățită
hwloc_topology_load(topologie); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(topologie, dom, bus, dev, func); hwloc_obj_t obj2 = hwloc_get_non_io_ancestor_obj(topology, 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 este %s\n”, str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->nodeset); printf(„NODESET este %s\n”, str);#endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(topology, obj2->nodeset,HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_THREAD, HWLOC_MEMBINDBY_NOMIGRATE |HWLOC_SET_MEMBIND); #else retval =hwloc_set_membind_nodeset(topology, obj2->nodeset, HWLOC_MEMBIND_THREAD,HWLOC_MEMBIND_MIGRATE); #endifON_ERR_GOTO(retval, out_destroy_tok, „hwloc_set_membind”); } if (cpu_affinity) { retval = hwloc_set_cpubind(topology, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_cpubind”); } }
Unitatea funcțională Accelerator DMA Ghidul utilizatorului Arhive
Versiunea Intel Acceleration Stack | Ghidul utilizatorului (PDF) |
2.0 | Ghid de utilizare pentru unitatea funcțională a acceleratorului DMA (AFU). |
Istoricul revizuirilor documentului pentru Ghidul utilizatorului unității funcționale Accelerator DMA
Versiunea documentului |
Accelerație Intel Versiunea stivă |
Schimbări |
2020.08.03 |
2.0.1 (acceptat cu Intel
Quartus® Prime Pro Edition Edition 19.2) |
Am corectat imaginea AF file nume în secțiune Compilarea DMA AFU Example. |
2020.04.17 |
2.0.1 (acceptat cu Intel
Ediția Quartus Prime Pro Edition 19.2) |
A corectat o declarație în Publicul vizat secțiune. |
2020.02.20 |
2.0.1 (acceptat cu Intel
Ediția Quartus Prime Pro Edition 19.2) |
S-a rezolvat o greșeală de scriere. |
2019.11.04 |
2.0.1 (acceptat cu Intel Ediția Quartus Prime Pro Edition 19.2) |
• S-a înlocuit fpgaconf cu fpgasupdate la configurarea FPGA cu AFU prebuild în secțiune Rularea DMA AFU Example.
• Subtitrare adăugată Placă de accelerație programabilă Intel FPGA D5005 la titlul documentului. • S-a adăugat variabila de mediu $OPAE_PLATFORM_ROOT. • Secțiune modificată Model de programare software pentru editări minore. • A fost adăugată o nouă secțiune Compilarea DMA AFU Example. • Secțiune modificată Optimizare pentru performanță DMA îmbunătățită pentru editări minore. |
2019.08.05 |
2.0 (acceptat cu Intel
Quartus Prime Pro Edition 18.1.2) |
Lansare inițială. |
Intel Corporation. Toate drepturile rezervate. Intel, sigla Intel și alte mărci Intel sunt mărci comerciale ale Intel Corporation sau ale subsidiarelor sale. Intel garantează performanța produselor sale FPGA și semiconductoare conform specificațiilor actuale, în conformitate cu garanția standard Intel, dar își rezervă dreptul de a face modificări oricăror produse și servicii în orice moment, fără notificare. Intel nu își asumă nicio responsabilitate sau răspundere care decurge din aplicarea sau utilizarea oricăror informații, produse sau servicii descrise aici, cu excepția cazului în care Intel a convenit în mod expres în scris. Clienții Intel sunt sfătuiți să obțină cea mai recentă versiune a specificațiilor dispozitivului înainte de a se baza pe orice informații publicate și înainte de a plasa comenzi pentru produse sau servicii.
- Alte nume și mărci pot fi revendicate ca fiind proprietatea altora.
Documente/Resurse
![]() |
Placă de accelerație programabilă Intel FPGA D5005 [pdfGhid de utilizare Placă de accelerație programabilă FPGA, D5005, placă de accelerație programabilă FPGA D5005, unitate funcțională de accelerare DMA |