Logo firmy Intel

Programowalna karta akceleracyjna Intel FPGA D5005

Intel.-FPGA-Programmable-Acceleration-Card-D5005-produkt

O tym dokumencie

W niniejszym dokumencie opisano implementację jednostki funkcjonalnej akceleratora (AFU) z bezpośrednim dostępem do pamięci (DMA) oraz sposób tworzenia projektu umożliwiającego jego uruchomienie na sprzęcie lub w symulacji.

Docelowa grupa odbiorców

Grupa docelowa obejmuje deweloperów sprzętu i oprogramowania, którzy wymagają funkcji akceleratora (AF) do buforowania danych lokalnie w pamięci podłączonej do układu Intel FPGA.

Konwencje

Konwencje dokumentów

Konwencja Opis
# Poprzedza polecenie, które wskazuje, że polecenie ma zostać wprowadzone jako root.
$ Wskazuje, że polecenie ma zostać wprowadzone jako użytkownik.
Ta czcionka FileNazwy, polecenia i słowa kluczowe są drukowane tą czcionką. Długie wiersze poleceń są drukowane tą czcionką. Chociaż długie wiersze poleceń mogą przechodzić do następnego wiersza, powrót nie jest częścią polecenia; nie naciskaj enter.
Wskazuje, że tekst zastępczy, który pojawia się między nawiasami ostrymi, musi zostać zastąpiony odpowiednią wartością. Nie wchodź w nawiasy kątowe.

Akronimy

Akronimy

Akronimy Ekspansja Opis
AF Funkcja akceleratora Skompilowany obraz akceleratora sprzętowego zaimplementowany w logice FPGA, który przyspiesza działanie aplikacji.
AFU Jednostka funkcjonalna akceleratora Akcelerator sprzętowy zaimplementowany w logice FPGA, który odciąża aplikację od CPU w celu poprawy wydajności.
API Interfejs programowania aplikacji Zestaw definicji podprogramów, protokołów i narzędzi do tworzenia aplikacji.
CCI-P Główny interfejs pamięci podręcznej CCI-P to standardowy interfejs używany przez AFU do komunikacji z hostem.
DFH Nagłówek funkcji urządzenia Tworzy połączoną listę nagłówków funkcji, aby zapewnić rozszerzalny sposób dodawania funkcji.
dalszy…

Korporacja intelektualna. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi firmy Intel Corporation lub jej podmiotów zależnych. Firma Intel gwarantuje wydajność swoich produktów FPGA i półprzewodników zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją firmy Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym czasie bez powiadomienia. Firma Intel nie ponosi żadnej odpowiedzialności wynikającej z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez firmę Intel. Klienci firmy Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach oraz przed złożeniem zamówienia na produkty lub usługi. *Inne nazwy i marki mogą być przedmiotem praw osób trzecich.

Akronimy Ekspansja Opis
FIM Menedżer interfejsu FPGA Sprzęt FPGA zawierający moduł interfejsu FPGA (FIU) i zewnętrzne interfejsy pamięci, sieci itp.

Funkcja akceleratora (AF) łączy się z FIM w czasie wykonywania.

FIU Moduł interfejsu FPGA FIU to warstwa interfejsu platformy, która działa jako pomost między interfejsami platformy, takimi jak PCIe*, UPI i interfejsy po stronie AFU, takie jak CCI-P.
MPF Fabryka właściwości pamięci MPF jest podstawowym blokiem konstrukcyjnym (BBB), który jednostki AFU mogą wykorzystać do zapewnienia operacji kształtowania ruchu CCI-P dla transakcji z FIU.

Słowniczek akceleracji

Stos akceleracyjny dla procesorów Intel® Xeon® z układami FPGA Słownik

Termin Skrót Opis
Intel® Acceleration Stack dla procesorów Intel Xeon® z układami FPGA Stos przyspieszenia Zbiór oprogramowania, oprogramowania układowego i narzędzi zapewniający zoptymalizowaną pod względem wydajności łączność między układem Intel FPGA a procesorem Intel Xeon.
Karta akceleracyjna programowalna Intel FPGA PAC Intel FPGA Karta akceleratora PCIe FPGA.

Zawiera menedżera interfejsu FPGA (FIM), który łączy się z procesorem Intel Xeon poprzez magistralę PCIe.

  • Podręcznik użytkownika jednostki funkcjonalnej akceleratora DMA: Programowalna karta akceleracyjna Intel FPGA D5005

Opis DMA AFU

Wstęp

Bezpośredni dostęp do pamięci (DMA) AFU example pokazuje, jak zarządzać transferami pamięci między procesorem hosta a FPGA. Możesz zintegrować DMA AFU ze swoim projektem, aby przenosić dane między pamięcią hosta a pamięcią lokalną FPGA. DMA AFU obejmuje następujące podmoduły:

  • Fabryka Właściwości Pamięci (MPF) Podstawowy Blok Budulcowy (BBB)
  • Interfejs pamięci podręcznej rdzenia (CCI-P) do adaptera Avalon® Memory-Mapped (Avalon-MM)
  • System testowy DMA zawierający DMA BBB

Podmoduły te opisano bardziej szczegółowo w poniższym temacie poświęconym składnikom sprzętowym DMA AFU.

Informacje powiązane

  • Komponenty sprzętowe DMA AFU na stronie 6
  • Specyfikacja interfejsu Avalon

Więcej informacji na temat protokołu Avalon-MM, w tym diagramy czasowe dla transakcji odczytu i zapisu, znajdziesz tutaj.

Pakiet oprogramowania DMA AFU

Pakiet Intel Acceleration Stack dla procesorów Intel Xeon z układami FPGA file (*.tar.gz), obejmuje DMA AFU example. Ten example udostępnia sterownik przestrzeni użytkownika. Aplikacja hosta używa tego sterownika tak, że DMA przesyła dane między pamięcią hosta a FPGA. Pliki binarne sprzętu, źródła i sterownik przestrzeni użytkownika są dostępne w następującym katalogu: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . Przed eksperymentowaniem z DMA AFU należy zainstalować pakiet oprogramowania Open Programmable Acceleration Engine (OPAE). Instrukcje instalacji można znaleźć w części Instalowanie pakietu oprogramowania OPAE w podręczniku Intel Acceleration Stack Quick Start Guide dla karty Intel FPGA Programmable Acceleration Card D5005. Ten podręcznik Quick Start Guide zawiera również podstawowe informacje o Open Programmable Acceleration Engine (OPAE) i konfigurowaniu AFU. Po zainstalowaniu pakietu oprogramowania Open Programmable Acceleration Engine (OPAE), jakampAplikacja hosta i sterownik przestrzeni użytkownika DMA AFU są dostępne w następującym katalogu: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. Aby uruchomić sampW przypadku aplikacji hosta fpga_dma_test na sprzęcie Intel FPGA PAC D5005 zapoznaj się z krokami opisanymi w sekcji Uruchamianie DMA AFU Example. Intel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi Intel Corporation lub jej spółek zależnych. Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez Intel. Klientom Intel zaleca się uzyskanie najnowszej wersji specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi. *Inne nazwy i marki mogą być własnością innych osób.

Informacje powiązane

  • Przewodnik szybkiego startu Intel Acceleration Stack dla programowalnej karty akceleracyjnej Intel FPGA D5005
  • Instalowanie pakietu oprogramowania OPAE

Komponenty sprzętowe DMA AFU

Interfejs DMA AFU łączy się z jednostką interfejsu FPGA (FIU) i pamięcią FPGA. Szczegółowe specyfikacje pamięci FPGA można znaleźć w arkuszu danych menedżera interfejsu FPGA dla karty Intel FPGA Programmable Acceleration Card D5005. Obecnie dostępny sprzęt dyktuje tę konfigurację pamięci. Przyszły sprzęt może obsługiwać inne konfiguracje pamięci. Możesz użyć DMA AFU do kopiowania danych między następującymi lokalizacjami źródłowymi i docelowymi:

  • Pamięć FPGA hosta do urządzenia
  • Pamięć FPGA urządzenia do hosta

System projektanta platformy, $OPAE_PLATFORM_ROOT/hw/samples/ dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys implementuje większość funkcji DMA

  • AFU. Część DMA AFU zaimplementowana w systemie Platform Designer znajduje się w następującym

lokalizacja:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ Biuro DMA BBB znajdziesz w następującym miejscu:

  • $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/dma_bbb

Podręcznik użytkownika jednostki funkcjonalnej akceleratora DMA: Programowalna karta akceleracyjna Intel FPGA D5005

Schemat blokowy sprzętu AFU DMA

Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-1

Moduł DMA AFU obejmuje następujące moduły wewnętrzne umożliwiające komunikację z jednostką interfejsu FPGA (FIU):

  • Logika dekodera MMIO (Memory-Mapped IO): wykrywa transakcje odczytu i zapisu MMIO i oddziela je od kanału CCI-P RX 0, z którego pochodzą. Dzięki temu ruch MMIO nigdy nie dociera do MPF BBB i jest obsługiwany przez niezależny kanał poleceń MMIO.
  • Memory Properties Factory (MPF): Ten moduł zapewnia, że ​​odpowiedzi odczytu z DMA zwracają się w kolejności, w jakiej zostały wydane. Protokół Avalon-MM wymaga, aby odpowiedzi odczytu zwracały się w prawidłowej kolejności.
  • Adapter CCI-P do Avalon-MM: Ten moduł tłumaczy transakcje między CCI-P i Avalon-MM w następujący sposób:
  • Adapter CCI-P do Avalon-MMIO: Ta ścieżka tłumaczy transakcje CCI-P MMIO na transakcje Avalon-MM.
  • Adapter hosta Avalon do CCI-P: Ścieżki te tworzą oddzielne ścieżki tylko do odczytu i tylko do zapisu dla DMA w celu uzyskania dostępu do pamięci hosta.
  • System testowy DMA: Ten moduł służy jako opakowanie wokół DMA BBB, aby udostępnić mastery DMA reszcie logiki w AFU. Zapewnia interfejs między DMA BBB a adapterem CCI-P do Avalon. Zapewnia również interfejs między DMA BBB a lokalnymi bankami FPGA SDRAM.

Informacje powiązane
Arkusz danych menedżera interfejsu FPGA dla programowalnej karty akceleracyjnej Intel FPGA D5005

System testowy DMA

System testowy DMA łączy DMA BBB z resztą projektu FPGA, w tym z adaptacją CCI-P i lokalną pamięcią FPGA.

Schemat blokowy systemu testowego DMA
Ten schemat blokowy pokazuje wnętrze systemu testowego DMA. System testowy DMA jest pokazany jako monolityczny blok na Rysunku 1 na stronie 7.Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-2

System testowy DMA składa się z następujących modułów wewnętrznych:

  • Far Reach Bridge/Pipeline Bridge: mostek rurociągowy z regulowanym opóźnieniem, służący do kontrolowania topologii i poprawy projektowanego Fmax.
  • Nagłówek funkcji urządzenia DMA AFU (DFH): To jest DFH dla DMA AFU. Ten DFH wskazuje na następny DFH znajdujący się przy przesunięciu 0x100 (DMA BBB DFH).
  • Null DFH: Ten komponent kończy listę DFH. Jeśli dodasz więcej DMA BBB do projektu, upewnij się, że adres bazowy null DFH znajduje się na końcu listy DFH.
  • MA Basic Building Block (BBB): Ten blok przenosi dane między pamięcią hosta a lokalną pamięcią FPGA. Uzyskuje również dostęp do pamięci hosta, aby uzyskać dostęp do łańcuchów deskryptorów.

DMA BBB

Podsystem DMA BBB przesyła dane z adresów źródłowych do docelowych za pomocą transakcji Avalon-MM. Sterownik DMA steruje DMA BBB, uzyskując dostęp do rejestru sterowania i stanu różnych komponentów wewnątrz systemu. Sterownik DMA steruje również DMA BBB, wykorzystując pamięć współdzieloną do komunikowania deskryptorów transferu. DMA BBB uzyskuje dostęp do danych w pamięci FPGA przy przesunięciu 0x0. DMA BBB uzyskuje dostęp do danych i deskryptorów w pamięci hosta przy przesunięciu 0x1_0000_0000_0000.

Schemat blokowy projektanta platformy DMA BBB
Ten schemat blokowy nie obejmuje niektórych wewnętrznych rdzeni IP mostu rurociągowego.Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-6

Podręcznik użytkownika jednostki funkcjonalnej akceleratora DMA: Programowalna karta akceleracyjna Intel FPGA D5005

Opis DMA AFU

Komponenty wchodzące w skład DMA BBB Platform Designer implementują następujące funkcje:

  • Most Far Reach/Most rurociągowy: W celu kontrolowania topologii i poprawy projektowanego Fmax wprowadzono mostek potokowy z regulowanym opóźnieniem.
  • MA BBB DFH: To jest nagłówek funkcji urządzenia dla DMA BBB. Ten DFH wskazuje na następny DFH znajdujący się przy przesunięciu 0x100 (Null DFH).
  • Deskryptor Frontend: Odpowiedzialny za pobieranie deskryptorów i przesyłanie ich do Dispatchera. Gdy transfer DMA zostanie ukończony, frontend otrzymuje formację statusu od Dispatchera i nadpisuje deskryptor w pamięci hosta.
  • Dyspozytor: Ten blok planuje żądania transferu DMA do serwera nadrzędnego odczytu i zapisu.
  • Przeczytaj Mistrza: Blok ten odpowiada za odczyt danych z pamięci hosta lub lokalnej FPGA i przesyłanie ich jako danych strumieniowych do Write Master.
  • Napisz Mistrzu: Blok ten odpowiada za odbieranie strumieniowych danych z modułu Read Master i zapisywanie zawartości do pamięci hosta lub lokalnej pamięci FPGA.

Zarejestruj mapę i przestrzenie adresowe

Moduł DMA AFU obsługuje dwa moduły pamięci views: DMA view i gospodarz view.DMA view obsługuje 49-bitową przestrzeń adresową. Dolna połowa DMA view mapuje do lokalnej pamięci FPGA. Górna połowa DMA view mapy do pamięci hosta. Host view obejmuje wszystkie rejestry dostępne poprzez dostęp MMIO, takie jak tabele DFH i rejestry kontrolne/statusowe różnych rdzeni IP używanych wewnątrz DMA AFU. Rejestry MMIO w DMA BBB i AFU obsługują dostęp 32- i 64-bitowy. DMA AFU nie obsługuje dostępu MMIO 512-bitowego. Dostęp do rejestrów Dispatcher wewnątrz DMA BBB musi być 32-bitowy (frontend deskryptora implementuje rejestry 64-bitowe).

Mapa rejestru DMA AFU

Mapa rejestrów DMA AFU zawiera adresy bezwzględne wszystkich lokalizacji w jednostce. Rejestry te znajdują się w hoście view ponieważ tylko host ma do nich dostęp.

Mapa pamięci AFU DMA

Przesunięcia adresów bajtów Nazwa Rozpiętość w bajtach Opis
0x0 DMA AFU DFH 0x40 Nagłówek funkcji urządzenia dla DMA AFU. ID_L jest ustawiony na 0x9081f88b8f655caa, a ID_H jest ustawiony na 0x331db30c988541ea. DMA AFU DFH został sparametryzowany tak, aby wskazywał przesunięcie 0x100 w celu znalezienia następnego DFH (DMA BBB DFH). Nie wolno modyfikować adresu bazowego DMA AFU DFH, ponieważ musi on znajdować się pod adresem 0x0 zgodnie ze specyfikacją CCIP.
0x100 DMA BBB 0x100 Określa interfejs rejestru kontrolnego i stanu DMA BBB. Więcej informacji można znaleźć w mapie rejestrów DMA BBB. W obrębie DMA BBB przy przesunięciu 0 DMA BBB zawiera własny DFH. Ten DFH został ustawiony tak, aby znaleźć następny DFH przy przesunięciu 0x100 (NULL DFH). Jeśli dodasz więcej DMA BBB, rozmieść je w odstępie 0x100 i upewnij się, że NULL DFH następuje po ostatnim DMA o 0x100.
0x200 NULL DFH 0x40 Kończy listę łączoną DFH. ID_L jest ustawione na 0x90fe6aab12a0132f, a ID_H na 0xda1182b1b3444e23. NULL DFH został sparametryzowany tak, aby był ostatnim DFH w sprzęcie. Z tego powodu NULL DFH znajduje się pod adresem 0x200. Jeśli do systemu dodasz dodatkowe BBB DMA, musisz odpowiednio zwiększyć adres bazowy NULL DFH, aby pozostał pod najwyższym adresem. Sterownik DMA i aplikacja testowa nie używają tego sprzętu.

Korporacja intelektualna. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi firmy Intel Corporation lub jej podmiotów zależnych. Firma Intel gwarantuje wydajność swoich produktów FPGA i półprzewodników zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją firmy Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym czasie bez powiadomienia. Firma Intel nie ponosi żadnej odpowiedzialności wynikającej z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez firmę Intel. Klienci firmy Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach oraz przed złożeniem zamówienia na produkty lub usługi. *Inne nazwy i marki mogą być przedmiotem praw osób trzecich.

Zarejestruj mapę i przestrzenie adresowe

Mapa pamięci DMA BBB
Podane adresy bajtów stanowią względne przesunięcia względem adresu bazowego DMA BBB w systemie DMA AFU (0x100).

Przesunięcia adresów bajtów Nazwa Rozpiętość w bajtach Opis
0x0 DMA BBB DFH 0x40 Nagłówek funkcji urządzenia dla DMA AFU. ID_L jest ustawiony na 0xa9149a35bace01ea, a ID_H na 0xef82def7f6ec40fc. DMA BBB DFH został sparametryzowany tak, aby wskazywał na 0x100 dla następnego przesunięcia DFH. To następne przesunięcie może być innym DMA BBB, innym DFH (nieuwzględnionym w tym projekcie) lub NULL DFH.
0x40 Dyspozytor 0x40 Port kontrolny dla dyspozytora. Sterownik DMA używa tej lokalizacji do kontrolowania DMA lub sprawdzania jego statusu.
0x80 Deskryptor Frontend 0x40 Frontend deskryptora to niestandardowy komponent, który odczytuje deskryptory z pamięci hosta i nadpisuje deskryptor po zakończeniu transferu DMA. Sterownik instruuje frontend, gdzie pierwszy deskryptor znajduje się w pamięci hosta, a następnie sprzęt frontendu komunikuje się ze sterownikiem głównie za pośrednictwem deskryptorów przechowywanych w pamięci hosta.

Przestrzeń adresowa AFU DMA

Host może uzyskać dostęp do rejestrów wymienionych w Tabeli 4 na stronie 12 i Tabeli 5 na stronie 13. Podsystem DMA BBB ma dostęp do pełnej 49-bitowej przestrzeni adresowej. Dolna połowa tej przestrzeni adresowej obejmuje lokalne pamięci FPGA. Górna połowa tej przestrzeni adresowej obejmuje 48-bitową pamięć adresową hosta. Na poniższym rysunku pokazano hosta i DMA views pamięci.

DMA AFU i Gospodarz Views Pamięci

Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-3

Nagłówek funkcji urządzenia Lista powiązana

Projekt DMA AFUample zawiera trzy nagłówki funkcji urządzenia (DFH), które tworzą listę powiązaną. Ta lista powiązana umożliwia sample aplikacja do identyfikacji DMA AFU, a także sterownik do identyfikacji DMA BBB. Lista DFH zawiera NULL DFH na końcu. Umieszczenie null DFH na końcu listy łączonej pozwala na dodanie większej liczby DMA BBB do projektu. Wystarczy przenieść NULL DFH na adres następujący po innych BBB. Każdy DMA BBB oczekuje, że następny DFH będzie zlokalizowany 0x100 bajtów od adresu bazowego BBB. Poniższy rysunek przedstawia listę łączoną dla projektu DMA AFU example.

Zarejestruj mapę i przestrzenie adresowe

Łańcuchowanie nagłówka funkcji urządzenia AFU (DFH) DMA

Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-4

Model programowania oprogramowania

DMA AFU zawiera sterownik oprogramowania, którego możesz używać we własnej aplikacji hosta. fpga_dma.cpp i fpga_dma.h fileznajduje się w następującej lokalizacji i implementuje sterownik oprogramowania:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw Ten sterownik obsługuje następujące funkcje:

API Opis
fpgaLicznikDMAKanałów Skanuje łańcuch funkcji urządzenia w poszukiwaniu kanałów DMA BBB i zlicza wszystkie dostępne kanały.
fpgaDMAOpen Otwiera uchwyt kanału DMA.
fpgaDMAZamknij Zamyka uchwyt kanału DMA.
fpgaDMATransferInit Inicjuje obiekt reprezentujący transfer DMA.
fpgaDMATransferReset Przywraca wartości domyślne obiektu atrybutu transferu DMA.
fpgaDMATransferZniszcz Niszczy obiekt atrybutu transferu DMA.
fpgaDMATransferSetSrc Ustawia adres źródłowy transferu. Ten adres musi być wyrównany do 64 bajtów.
fpgaDMATransferSetDst Ustawia adres docelowy transferu. Ten adres musi być wyrównany do 64 bajtów.
fpgaDMATransferSetLen Ustawia długość transferu w bajtach. W przypadku transferów niepakietowych należy ustawić długość transferu jako wielokrotność 64 bajtów. W przypadku transferów pakietowych nie jest to wymagane.
fpgaDMATransferSetTypTransferu Ustawia typ transferu. Prawidłowe wartości to:

• HOST_MM_TO_FPGA_MM = TX (Host do AFU)

• FPGA_MM_TO_HOST_MM = RX (AFU do hosta)

fpgaDMATransferSetTransferCallback Rejestruje wywołanie zwrotne w celu powiadomienia o zakończeniu transferu asynchronicznego. Jeśli określisz wywołanie zwrotne, fpgaDMATransfer zwraca natychmiast (transfer asynchroniczny).

Jeżeli nie określisz wywołania zwrotnego, fpgaDMATransfer zwróci wartość po zakończeniu transferu (transfer synchroniczny/blokujący).

fpgaDMATransferSetOstatni Wskazuje ostatni transfer, aby DMA mógł rozpocząć przetwarzanie wstępnie pobranych transferów. Wartość domyślna to 64 transfery w potoku, zanim DMA zacznie pracować nad transferami.
fpgaDMATransfer Wykonuje transfer DMA.

Aby uzyskać więcej informacji na temat interfejsu API, argumentów wejściowych i wyjściowych, zapoznaj się z nagłówkiem file znajduje się w $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.hIntel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi Intel Corporation lub jej spółek zależnych. Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez Intel. Klienci Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi. Inne nazwy i marki mogą być roszczone jako własność innych osób.

Model programowania oprogramowania

Aby dowiedzieć się więcej o modelu użycia sterownika oprogramowania, zapoznaj się z plikiem README file znajduje się w $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md

Uruchomienie DMA AFU Example

Zanim zaczniesz:

  • Powinieneś znać byłegoampznajdują się w Podręczniku szybkiego startu programu Intel Acceleration Stack dla programowalnej karty akceleracyjnej Intel FPGA D5005.
  • Musisz zdefiniować zmienną środowiskową. Zmienna środowiskowa jest zależna od wersji Intel Acceleration Stack, której używasz:
    • W przypadku bieżącej wersji ustaw zmienną środowiskową na $OPAE_PLATFORM_ROOT
  • Musisz zainstalować bibliotekę Intel Threading Building Blocks (TBB), ponieważ sterownik DMA od niej zależy.
  • Musisz także skonfigurować dwie strony hugepage o rozmiarze 1 GB, aby uruchomić sampaplikacja le. $ sudo sh -c „echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages”

Wykonaj poniższe kroki, aby pobrać strumień bitów funkcji akceleratora DMA (AF), zbudować aplikację i sterownik oraz uruchomić projekt exampna:

  1. Przejdź do katalogu aplikacji i sterowników DMA: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
  2. Zbuduj sterownik i aplikację: make
  3. Pobierz strumień bitów DMA AFU: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
  4. Uruchom aplikację hosta, aby zapisać 100 MB w 1 MB porcjach z pamięci hosta do pamięci urządzenia FPGA i odczytać je z powrotem: ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom

Informacje powiązane
Intel Acceleration Stack Quick Start Guide dla Intel FPGA Programmable Acceleration Card D5005 Intel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki towarowe Intel są znakami towarowymi Intel Corporation lub jej spółek zależnych. Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez Intel. Klienci Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi. *Inne nazwy i marki mogą być własnością innych osób.

Kompilacja DMA AFU Example

Aby wygenerować środowisko kompilacji syntezy w celu skompilowania AF, należy użyć polecenia afu_synth_setup w następujący sposób:

  1. Zmiana w DMA AFUampkatalog le: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
  2. Wygeneruj katalog projektu: afu_synth_setup –source hw/rtl/filelista.txt kompilacja_synth
  3. Z katalogu kompilacji syntezy wygenerowanego przez afu_synth_setup wprowadź następujące polecenia w oknie terminala, aby wygenerować obraz AF dla docelowej platformy sprzętowej: cd build_synth run.sh Skrypt generowania obrazu AF run.sh tworzy obraz AF z tą samą bazą filenazwa jako konfiguracja platformy AFU file (.json) z sufiksem .gbs w lokalizacji:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki towarowe Intel są znakami towarowymi Intel Corporation lub jej spółek zależnych. Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez Intel. Klienci Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi. *Inne nazwy i marki mogą być własnością innych osób.

Symulacja AFU Example

Firma Intel zaleca zapoznanie się z podręcznikiem szybkiego startu środowiska symulacyjnego (ASE) jednostki funkcjonalnej akceleratora (AFU) firmy Intel dla układu PAC FPGA firmy Intel, aby zapoznać się z symulacją podobnych zdarzeń.amples i skonfigurować środowisko. Przed wykonaniem poniższych kroków sprawdź, czy zmienna środowiskowa OPAE_PLATFORM_ROOT jest ustawiona na katalog instalacyjny OPAE SDK. Wykonaj następujące kroki, aby skonfigurować symulator sprzętowy dla DMA AFU:

  1. Zmiana w DMA AFUampkatalog le: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
  2. Utwórz środowisko ASE w nowym katalogu i skonfiguruj je do symulacji AFU: afu_sim_setup –source hw/rtl/filelista.txt build_ase_dir
  3. Przejdź do katalogu kompilacji ASE: cd build_ase_dir
  4. Zbuduj sterownik i aplikację: make
  5. Utwórz symulację: Utwórz symulację

SampWyjście z symulatora sprzętowego:

[SIM] ** UWAGA: PRZED uruchomieniem aplikacji ** [SIM] Ustaw env(ASE_WORKDIR) w terminalu, w którym zostanie uruchomiona aplikacja (kopiuj i wklej) => [SIM] $SHELL | Uruchom:[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] W przypadku innych $SHELL skontaktuj się z administratorem Linuksa [SIM] [SIM] Gotowy do symulacji… [SIM] Naciśnij CTRL-C, aby zamknąć symulator…

Aby skompilować i uruchomić oprogramowanie DMA AFU w środowisku symulacyjnym, wykonaj następujące kroki:

  1. Otwórz nowe okno terminala.
  2. Zmień katalog na: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw

Korporacja intelektualna. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi firmy Intel Corporation lub jej podmiotów zależnych. Firma Intel gwarantuje wydajność swoich produktów FPGA i półprzewodników zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją firmy Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym czasie bez powiadomienia. Firma Intel nie ponosi żadnej odpowiedzialności wynikającej z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez firmę Intel. Klienci firmy Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach oraz przed złożeniem zamówienia na produkty lub usługi. *Inne nazwy i marki mogą być przedmiotem praw osób trzecich.

Symulacja AFU Example

  1. Skopiuj ciąg konfiguracji środowiska (wybierz ciąg odpowiedni dla swojej powłoki) z powyższych kroków w symulacji sprzętu do okna terminala. Zobacz następujące wiersze w sampwyjście z symulatora sprzętowego. [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/katalog_build_ase/work
  2. Skompiluj oprogramowanie: $ make USE_ASE=1
  3. Uruchom aplikację hosta, aby zapisać 4 KB w 1 KB porcjach z pamięci hosta z powrotem do pamięci urządzenia FPGA w trybie pętli zwrotnej: ./ fpga_dma_test -s 4096 -p 1024 -r mtom

Informacje powiązane
Skrócona instrukcja obsługi środowiska symulacyjnego akceleratora Intel Accelerator (AFU) (ASE).

Optymalizacja w celu poprawy wydajności DMA

Implementacja optymalizacji NUMA (non-uniform memory access) w fpga_dma_test.cpp pozwala procesorowi na szybszy dostęp do własnej pamięci lokalnej niż do pamięci nielokalnej (pamięci lokalnej innego procesora). Typowa konfiguracja NUMA jest pokazana na poniższym diagramie. Dostęp lokalny reprezentuje dostęp z rdzenia do pamięci lokalnej tego samego rdzenia. Dostęp zdalny ilustruje ścieżkę pokonywaną, gdy rdzeń na węźle 0 uzyskuje dostęp do pamięci znajdującej się w pamięci lokalnej węzła 1.

Typowa konfiguracja NUMA

Intel.-FPGA-Programmable-Acceleration-Card-D5005-fig-5

Użyj poniższego kodu, aby zaimplementować optymalizację NUMA w swojej aplikacji testowej:

// Ustaw właściwe powinowactwo, jeśli jest wymagane 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”); // Znajdź urządzenie z topologii hwloc_topology_t topology; hwloc_topology_init(&topology); hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IO_DEVICES);Intel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi firmy Intel Corporation lub jej spółek zależnych. Firma Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją firmy Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Firma Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez firmę Intel. Klientom firmy Intel zaleca się uzyskanie najnowszej wersji specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi. *Inne nazwy i marki mogą być własnością innych osób.

Optymalizacja w celu poprawy wydajności DMA

hwloc_topology_load(topologia); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(topologia, dom, magistrala, dev, funkcja); 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(“ZESTAW PROCESORA to %s\n”, str); hwloc_bitmap_taskset_snprintf(str, 4096, obj2->nodeset); printf(“ZESTAW WĘZŁÓW to %s\n”, str);#endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(topologia, 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”); } jeśli (powinowactwo_procesora) { retval = hwloc_set_cpubind(topologia, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, “hwloc_set_cpubind”); } }

Archiwum podręczników użytkownika jednostki funkcjonalnej akceleratora DMA

Wersja stosu akceleracji Intel Instrukcja użytkownika (PDF)
2.0 Podręcznik użytkownika jednostki funkcjonalnej akceleratora DMA (AFU).

Historia rewizji dokumentu dla Podręcznika użytkownika jednostki funkcjonalnej akceleratora DMA

 

Wersja dokumentu

Przyspieszenie Intel Wersja stosu  

Zmiany

 

 

2020.08.03

2.0.1 (obsługiwane przez Intel

Quartus® Prime Pro Edycja Edycja 19.2)

 

Skorygowano obraz AF file nazwa w sekcji Kompilacja DMA AFU Example.

 

 

2020.04.17

2.0.1 (obsługiwane przez Intel

Quartus Prime Pro Edycja Edycja 19.2)

 

 

Poprawiono oświadczenie w Docelowa grupa odbiorców sekcja.

 

 

2020.02.20

2.0.1 (obsługiwane przez Intel

Quartus Prime Pro Edycja Edycja 19.2)

 

 

Naprawiono literówkę.

 

 

 

 

2019.11.04

 

 

2.0.1 (obsługiwane przez Intel

Quartus Prime Pro Edycja Edycja 19.2)

• Zastąpiono fpgaconf poleceniem fpgasupdate podczas konfigurowania układu FPGA przy użyciu wstępnie skompilowanego pliku AFU w sekcji Uruchomienie DMA AFU Example.

• Dodano napisy Programowalna karta akceleracyjna Intel FPGA D5005 do tytułu dokumentu.

• Dodano zmienną środowiskową $OPAE_PLATFORM_ROOT.

• Sekcja zmodyfikowana Model programowania oprogramowania do drobnych poprawek.

• Dodano nową sekcję Kompilacja DMA AFU Example.

• Sekcja zmodyfikowana Optymalizacja w celu poprawy wydajności DMA do drobnych poprawek.

 

 

2019.08.05

2.0 (obsługiwane przez Intel

Quartus Prime Pro Edition 18.1.2)

 

 

Pierwsze wydanie.

Intel Corporation. Wszelkie prawa zastrzeżone. Intel, logo Intel i inne znaki Intel są znakami towarowymi Intel Corporation lub jej spółek zależnych. Intel gwarantuje wydajność swoich produktów FPGA i półprzewodnikowych zgodnie z aktualnymi specyfikacjami zgodnie ze standardową gwarancją Intel, ale zastrzega sobie prawo do wprowadzania zmian w dowolnych produktach i usługach w dowolnym momencie bez powiadomienia. Intel nie ponosi żadnej odpowiedzialności ani zobowiązań wynikających z zastosowania lub wykorzystania jakichkolwiek informacji, produktów lub usług opisanych w niniejszym dokumencie, z wyjątkiem przypadków wyraźnie uzgodnionych na piśmie przez Intel. Klienci Intel powinni uzyskać najnowszą wersję specyfikacji urządzeń przed poleganiem na jakichkolwiek opublikowanych informacjach i przed złożeniem zamówień na produkty lub usługi.

  • Inne nazwy i marki mogą być własnością osób trzecich.

 

Dokumenty / Zasoby

Programowalna karta akceleracyjna Intel FPGA D5005 [plik PDF] Instrukcja użytkownika
Karta akceleracyjna programowalna FPGA, D5005, Karta akceleracyjna programowalna FPGA D5005, Jednostka funkcjonalna akceleratora DMA

Odniesienia

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *