인텔 로고

인텔 FPGA 프로그래밍 가능 가속 카드 D5005

Intel.-FPGA-프로그래밍 가능-가속-카드-D5005-제품

이 문서에 대하여

이 문서에서는 직접 메모리 액세스(DMA) 가속기 기능 장치(AFU) 구현과 하드웨어 또는 시뮬레이션에서 실행되도록 설계를 구축하는 방법을 설명합니다.

대상 청중

대상 독자층은 Intel FPGA 장치에 연결된 메모리에 로컬로 데이터를 버퍼링하기 위한 가속기 기능(AF)이 필요한 하드웨어 또는 소프트웨어 개발자로 구성됩니다.

컨벤션

문서 규칙

협약 설명
# 명령이 루트로 입력됨을 나타내는 명령 앞에 옵니다.
$ 사용자로 명령을 입력해야 함을 나타냅니다.
이 글꼴 File이름, 명령 및 키워드가 이 글꼴로 인쇄됩니다. 긴 명령줄은 이 글꼴로 인쇄됩니다. 긴 명령줄은 다음 줄로 줄바꿈될 수 있지만 반환은 명령의 일부가 아닙니다. Enter를 누르지 마십시오.
꺾쇠 괄호 사이에 나타나는 자리 표시자 텍스트를 적절한 값으로 바꿔야 함을 나타냅니다. 꺾쇠괄호는 입력하지 마세요.

약어

약어

약어 확장 설명
AF 가속기 기능 애플리케이션을 가속화하는 FPGA 로직에 구현된 컴파일된 하드웨어 가속기 이미지입니다.
영어: AFU (공중급유기) 가속기 기능 단위 성능을 향상시키기 위해 CPU에서 애플리케이션의 계산 작업을 오프로드하는 FPGA 로직에 구현된 하드웨어 가속기.
API 애플리케이션 프로그래밍 인터페이스 소프트웨어 애플리케이션 구축을 위한 서브루틴 정의, 프로토콜 및 도구 세트입니다.
CCI-P 코어 캐시 인터페이스 CCI-P는 AFU가 호스트와 통신하는 데 사용하는 표준 인터페이스입니다.
DFH 장치 기능 헤더 기능을 추가하는 확장 가능한 방법을 제공하기 위해 기능 헤더의 연결된 목록을 만듭니다.
계속되는…

인텔사. 판권 소유. 인텔, 인텔 로고 및 기타 인텔 마크는 인텔사 또는 그 자회사의 상표입니다. 인텔은 인텔의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 최신 사양으로 보증하지만 사전 통지 없이 언제든지 제품 및 서비스를 변경할 수 있는 권리를 보유합니다. 인텔은 인텔이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 어떠한 책임도 지지 않습니다. 인텔 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 다른 사람의 자산일 수 있습니다.

약어 확장 설명
핀엠 FPGA 인터페이스 관리자 FIU(FPGA 인터페이스 장치)와 메모리, 네트워킹 등을 위한 외부 인터페이스가 포함된 FPGA 하드웨어입니다.

AF(가속기 기능)는 런타임에 FIM과 인터페이스합니다.

금융감독원 FPGA 인터페이스 유닛 FIU는 PCIe*, UPI와 같은 플랫폼 인터페이스와 CCI-P와 같은 AFU 측 인터페이스 간의 브리지 역할을 하는 플랫폼 인터페이스 계층입니다.
영어: MPF (영어) 메모리 속성 공장 MPF는 AFU가 FIU와의 거래에 대한 CCI-P 트래픽 조절 작업을 제공하는 데 사용할 수 있는 기본 빌딩 블록(BBB)입니다.

가속 용어집

FPGA를 사용한 Intel® Xeon® CPU를 위한 가속 스택 용어집

용어 약어 설명
FPGA를 갖춘 Intel Xeon® CPU용 Intel® 가속 스택 가속 스택 Intel FPGA와 Intel Xeon 프로세서 간에 성능 최적화된 연결을 제공하는 소프트웨어, 펌웨어 및 도구 모음입니다.
인텔 FPGA 프로그래밍 가능 가속 카드 인텔 FPGA PAC PCIe FPGA 가속기 카드.

PCIe 버스를 통해 Intel Xeon 프로세서와 페어링되는 FPGA 인터페이스 관리자(FIM)를 포함합니다.

  • DMA 가속기 기능 장치 사용자 가이드: Intel FPGA 프로그래밍 가능한 가속 카드 D5005

DMA AFU 설명

소개

DMA(Direct Memory Access) AFU example는 호스트 프로세서와 FPGA 간의 메모리 전송을 관리하는 방법을 보여줍니다. DMA AFU를 설계에 통합하여 호스트 메모리와 FPGA 로컬 메모리 간에 데이터를 이동할 수 있습니다. DMA AFU는 다음 하위 모듈로 구성됩니다.

  • 메모리 속성 팩토리(MPF) 기본 빌딩 블록(BBB)
  • Avalon® 메모리 맵(Avalon-MM) 어댑터에 대한 코어 캐시 인터페이스(CCI-P)
  • DMA BBB를 포함하는 DMA 테스트 시스템

이러한 하위 모듈은 아래의 DMA AFU 하드웨어 구성 요소 항목에서 더 자세히 설명됩니다.

관련 정보

  • 6페이지의 DMA AFU 하드웨어 구성 요소
  • Avalon 인터페이스 사양

읽기 및 쓰기 트랜잭션에 대한 타이밍 다이어그램을 포함하여 Avalon-MM 프로토콜에 대한 자세한 내용을 확인하세요.

DMA AFU 소프트웨어 패키지

FPGA 패키지가 포함된 Intel Xeon CPU용 Intel 가속 스택 file (*.tar.gz)에는 DMA AFU ex가 포함됩니다.amp르. 이 전ample는 사용자 공간 드라이버를 제공합니다. 호스트 애플리케이션은 이 드라이버를 사용하여 DMA가 호스트와 FPGA 메모리 간에 데이터를 이동합니다. 하드웨어 바이너리, 소스 및 사용자 공간 드라이버는 다음 디렉토리에서 사용할 수 있습니다. $OPAE_PLATFORM_ROOT/hw/samples/dma_afu . DMA AFU를 실험하기 전에 OPAE(Open Programmable Acceleration Engine) 소프트웨어 패키지를 설치해야 합니다. 설치 지침은 Intel FPGA Programmable Acceleration Card D5005용 Intel Acceleration Stack 빠른 시작 가이드의 OPAE 소프트웨어 패키지 설치를 참조하십시오. 이 빠른 시작 가이드에는 OPAE(Open Programmable Acceleration Engine) 및 AFU 구성에 대한 기본 정보도 포함되어 있습니다. OPAE(Open Programmable Acceleration Engine) 소프트웨어 패키지를 설치한 후,amp호스트 애플리케이션과 DMA AFU 사용자 공간 드라이버는 다음 디렉토리에서 사용할 수 있습니다: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw. s를 실행하려면ampIntel FPGA PAC D5005 하드웨어의 호스트 애플리케이션인 fpga_dma_test의 경우 DMA AFU Ex 실행 섹션의 단계를 참조하세요.ample. Intel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 타인의 재산으로 주장될 수 있습니다.

관련 정보

  • 인텔 FPGA 프로그래밍 가능 가속 카드 D5005용 인텔 가속 스택 빠른 시작 가이드
  • OPAE 소프트웨어 패키지 설치

DMA AFU 하드웨어 구성 요소

DMA AFU는 FPGA 인터페이스 유닛(FIU) 및 FPGA 메모리와 인터페이스합니다. FPGA 메모리의 자세한 사양은 Intel FPGA Programmable Acceleration Card D5005용 FPGA 인터페이스 관리자 데이터 시트를 참조하십시오. 현재 사용 가능한 하드웨어가 이 메모리 구성을 결정합니다. 향후 하드웨어는 다른 메모리 구성을 지원할 수 있습니다. DMA AFU를 사용하여 다음 소스 및 대상 위치 간에 데이터를 복사할 수 있습니다.

  • 호스트 대 장치 FPGA 메모리
  • 호스트에 대한 디바이스 FPGA 메모리

Platform Designer 시스템, $OPAE_PLATFORM_ROOT/hw/samples/ dma_afu/hw/rtl/TEST_dma/ /dma_test_system.qsys는 대부분의 DMA를 구현합니다.

  • AFU. Platform Designer 시스템에 구현된 DMA AFU의 일부는 다음에서 찾을 수 있습니다.

위치:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/hw/rtl/TEST_dma/ 다음 위치에서 DMA BBB를 찾을 수 있습니다.

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

DMA 가속기 기능 장치 사용자 가이드: Intel FPGA 프로그래밍 가능한 가속 카드 D5005

DMA AFU 하드웨어 블록 다이어그램

인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-1

DMA AFU에는 FPGA 인터페이스 장치(FIU)와 인터페이스하기 위한 다음과 같은 내부 모듈이 포함되어 있습니다.

  • 메모리 맵 IO(MMIO) 디코더 로직: MMIO 읽기 및 쓰기 트랜잭션을 감지하고 도착하는 CCI-P RX 채널 0에서 분리합니다. 이를 통해 MMIO 트래픽이 MPF BBB에 도달하지 않고 독립적인 MMIO 명령 채널에서 서비스되도록 합니다.
  • 메모리 속성 팩토리(MPF): 이 모듈은 DMA에서 읽기 응답이 발행된 순서대로 반환되도록 보장합니다. Avalon-MM 프로토콜은 읽기 응답이 올바른 순서로 반환되도록 요구합니다.
  • CCI-P에서 Avalon-MM 어댑터로: 이 모듈은 다음과 같이 CCI-P와 Avalon-MM 트랜잭션 간을 변환합니다.
  • CCI-P에서 Avalon-MMIO 어댑터로: 이 경로는 CCI-P MMIO 트랜잭션을 Avalon-MM 트랜잭션으로 변환합니다.
  • Avalon-CCI-P 호스트 어댑터: 이러한 경로는 DMA가 호스트 메모리에 액세스하기 위한 별도의 읽기 전용 및 쓰기 전용 경로를 생성합니다.
  • DMA 테스트 시스템: 이 모듈은 DMA BBB를 감싸는 래퍼 역할을 하여 DMA 마스터를 AFU의 나머지 로직에 노출시킵니다. DMA BBB와 CCI-P to Avalon Adapter 간의 인터페이스를 제공합니다. 또한 DMA BBB와 로컬 FPGA SDRAM 뱅크 간의 인터페이스도 제공합니다.

관련 정보
Intel FPGA 프로그래밍 가능 가속 카드 D5005용 FPGA 인터페이스 관리자 데이터 시트

DMA 테스트 시스템

DMA 테스트 시스템은 DMA BBB를 CCI-P 적응 및 로컬 FPGA 메모리를 포함한 나머지 FPGA 설계에 연결합니다.

DMA 테스트 시스템 블록 다이어그램
이 블록 다이어그램은 DMA 테스트 시스템의 내부를 보여줍니다. DMA 테스트 시스템은 1페이지의 그림 7에 모놀리식 블록으로 표시됩니다.인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-2

DMA 테스트 시스템에는 다음과 같은 내부 모듈이 포함됩니다.

  • Far Reach Bridge/Pipeline Bridge: 토폴로지를 제어하고 설계 Fmax를 개선하기 위해 조정 가능한 대기 시간이 포함된 파이프라인 브리지입니다.
  • DMA AFU 장치 기능 헤더(DFH): 이것은 DMA AFU를 위한 DFH입니다. 이 DFH는 오프셋 0x100(DMA BBB DFH)에 위치한 다음 DFH를 가리킵니다.
  • Null DFH: 이 구성 요소는 DFH 연결 목록을 종료합니다. 설계에 DMA BBB를 더 추가하는 경우 null DFH 기본 주소가 DFH 연결 목록의 끝에 있는지 확인하십시오.
  • MA 기본 빌딩 블록(BBB): 이 블록은 호스트와 로컬 FPGA 메모리 간에 데이터를 이동합니다. 또한 호스트 메모리에 액세스하여 디스크립터 체인에 액세스합니다.

DMA BBB

DMA BBB 서브시스템은 Avalon-MM 트랜잭션을 사용하여 소스에서 대상 주소로 데이터를 전송합니다. DMA 드라이버는 시스템 내부의 다양한 구성 요소의 제어 및 상태 레지스터에 액세스하여 DMA BBB를 제어합니다. DMA 드라이버는 또한 공유 메모리를 사용하여 전송 설명자를 통신하여 DMA BBB를 제어합니다. DMA BBB는 오프셋 0x0에서 FPGA 메모리의 데이터에 액세스합니다. DMA BBB는 오프셋 0x1_0000_0000_0000에서 호스트 메모리의 데이터 및 설명자에 액세스합니다.

DMA BBB 플랫폼 디자이너 블록 다이어그램
이 블록 다이어그램에서는 일부 내부 파이프라인 브리지 IP 코어가 제외되었습니다.인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-6

DMA 가속기 기능 장치 사용자 가이드: Intel FPGA 프로그래밍 가능한 가속 카드 D5005

DMA AFU 설명

DMA BBB 플랫폼 디자이너의 구성 요소는 다음 기능을 구현합니다.

  • Far Reach Bridge/Pipeline Bridge: 토폴로지를 제어하고 설계 Fmax를 개선하기 위해 조정 가능한 대기 시간을 갖춘 파이프라인 브리지가 포함되어 있습니다.
  • MA BBB DFH: 이것은 DMA BBB의 장치 기능 헤더입니다. 이 DFH는 오프셋 0x100(Null DFH)에 위치한 다음 DFH를 가리킵니다.
  • 설명자 프런트엔드: 설명자를 페치하여 디스패처로 전송하는 역할을 담당합니다. DMA 전송이 완료되면 프런트엔드는 디스패처로부터 상태 형성을 수신하고 호스트 메모리에 있는 설명자를 덮어씁니다.
  • 디스패처: 이 블록은 읽기 및 쓰기 마스터에 대한 DMA 전송 요청을 예약합니다.
  • 마스터 읽기: 이 블록은 호스트 또는 로컬 FPGA 메모리에서 데이터를 읽고 이를 스트리밍 데이터로 Write Master로 전송하는 역할을 합니다.
  • 마스터를 쓰세요: 이 블록은 Read Master로부터 스트리밍 데이터를 수신하고 해당 내용을 호스트 또는 로컬 FPGA 메모리에 쓰는 역할을 합니다.

지도 및 주소 공간 등록

DMA AFU는 두 개의 메모리를 지원합니다 views: DMA view 그리고 호스트 view.DMA view 49비트 주소 공간을 지원합니다. DMA의 하위 절반 view 로컬 FPGA 메모리에 매핑합니다. DMA의 상단 절반 view 호스트 메모리에 매핑합니다. 호스트 view DFH 테이블과 같은 MMIO 액세스를 통해 액세스할 수 있는 모든 레지스터와 DMA AFU 내부에서 사용되는 다양한 IP 코어의 제어/상태 레지스터를 포함합니다. DMA BBB 및 AFU의 MMIO 레지스터는 32비트 및 64비트 액세스를 지원합니다. DMA AFU는 512비트 MMIO 액세스를 지원하지 않습니다. DMA BBB 내부의 디스패처 레지스터에 대한 액세스는 32비트여야 합니다(설명자 프런트엔드는 64비트 레지스터를 구현).

DMA AFU 등록 지도

DMA AFU 레지스터 맵은 단위 내의 모든 위치의 절대 주소를 제공합니다. 이러한 레지스터는 호스트에 있습니다. view 호스트만 접근할 수 있기 때문입니다.

DMA AFU 메모리 맵

바이트 주소 오프셋 이름 바이트 단위의 범위 설명
0x0 DMA AFU DFH 0x40 DMA AFU의 장치 기능 헤더입니다. ID_L은 0x9081f88b8f655caa로 설정되고 ID_H는 0x331db30c988541ea로 설정됩니다. DMA AFU DFH는 다음 DFH(DMA BBB DFH)를 찾기 위해 오프셋 0x100을 가리키도록 매개변수화되었습니다. CCIP 사양에서 정의한 대로 주소 0x0에 위치해야 하므로 DMA AFU DFH의 기본 주소를 수정해서는 안 됩니다.
0x100 DMA BBB 0x100 DMA BBB 제어 및 상태 레지스터 인터페이스를 지정합니다. 자세한 내용은 DMA BBB 레지스터 맵을 참조할 수 있습니다. 오프셋 0의 DMA BBB 내에서 DMA BBB는 자체 DFH를 포함합니다. 이 DFH는 오프셋 0x100(NULL DFH)에서 다음 DFH를 찾도록 설정되었습니다. DMA BBB를 더 추가하는 경우 0x100 간격으로 간격을 두고 NULL DFH가 마지막 DMA 뒤에 0x100이 오도록 합니다.
0x200 널 DFH 0x40 DFH 연결 목록을 종료합니다. ID_L은 0x90fe6aab12a0132f로 설정되고 ID_H는 0xda1182b1b3444e23으로 설정됩니다. NULL DFH는 하드웨어의 마지막 DFH가 되도록 매개변수화되었습니다. 이러한 이유로 NULL DFH는 주소 0x200에 위치합니다. 시스템에 추가 DMA BBB를 추가하는 경우 NULL DFH 기본 주소를 그에 따라 늘려서 가장 높은 주소에 유지되도록 해야 합니다. DMA 드라이버와 테스트 애플리케이션은 이 하드웨어를 사용하지 않습니다.

인텔사. 판권 소유. 인텔, 인텔 로고 및 기타 인텔 마크는 인텔사 또는 그 자회사의 상표입니다. 인텔은 인텔의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 최신 사양으로 보증하지만 사전 통지 없이 언제든지 제품 및 서비스를 변경할 수 있는 권리를 보유합니다. 인텔은 인텔이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 어떠한 책임도 지지 않습니다. 인텔 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 다른 사람의 자산일 수 있습니다.

지도 및 주소 공간 등록

DMA BBB 메모리 맵
다음 바이트 주소는 DMA AFU 시스템의 DMA BBB 기본 주소(0x100)로부터의 상대적 오프셋입니다.

바이트 주소 오프셋 이름 바이트 단위의 범위 설명
0x0 DMA BBB DFH 0x40 DMA AFU의 장치 기능 헤더. ID_L은 0xa9149a35bace01ea로 설정되고 ID_H는 0xef82def7f6ec40fc로 설정됩니다. DMA BBB DFH는 다음 DFH 오프셋에 대해 0x100을 가리키도록 매개변수화되었습니다. 이 다음 오프셋은 다른 DMA BBB, 다른 DFH(이 설계에 포함되지 않음) 또는 NULL DFH가 될 수 있습니다.
0x40 디스패처 0x40 디스패처용 제어 포트. DMA 드라이버는 이 위치를 사용하여 DMA를 제어하거나 상태를 쿼리합니다.
0x80 설명자 프런트엔드 0x40 설명자 프런트엔드는 호스트 메모리에서 설명자를 읽고 DMA 전송이 완료되면 설명자를 덮어쓰는 사용자 지정 구성 요소입니다. 드라이버는 프런트엔드에 호스트 메모리에서 첫 번째 설명자가 있는 위치를 지시한 다음 프런트엔드 하드웨어는 주로 호스트 메모리에 저장된 설명자를 통해 드라이버와 통신합니다.

DMA AFU 주소 공간

호스트는 4페이지의 표 12와 5페이지의 표 13에 나열된 레지스터에 액세스할 수 있습니다. DMA BBB 하위 시스템은 전체 49비트 주소 공간에 액세스할 수 있습니다. 이 주소 공간의 하반부에는 로컬 FPGA 메모리가 포함됩니다. 이 주소 공간의 상반부에는 48비트 호스트 주소 메모리가 포함됩니다. 다음 그림은 호스트와 DMA를 보여줍니다. view기억의 s.

DMA AFU 및 호스트 View기억의 s

인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-3

장치 기능 헤더 연결 목록

DMA AFU 설계 example에는 연결 목록을 형성하는 세 개의 장치 기능 헤더(DFH)가 포함되어 있습니다. 이 연결 목록은 s를 허용합니다.ampDMA AFU를 식별하는 le 애플리케이션과 DMA BBB를 식별하는 드라이버. DFH 목록에는 끝에 NULL DFH가 포함됩니다. 연결 목록 끝에 null DFH를 포함하면 설계에 더 많은 DMA BBB를 추가할 수 있습니다. 다른 BBB 뒤의 주소로 NULL DFH를 이동하기만 하면 됩니다. 각 DMA BBB는 다음 DFH가 BBB의 기본 주소에서 0x100바이트 떨어진 곳에 있을 것으로 예상합니다. 다음 그림은 DMA AFU 설계 ex에 대한 연결 목록을 보여줍니다.amp르.

지도 및 주소 공간 등록

DMA AFU 장치 기능 헤더(DFH) 체이닝

인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-4

소프트웨어 프로그래밍 모델

DMA AFU에는 자체 호스트 애플리케이션에서 사용할 수 있는 소프트웨어 드라이버가 포함되어 있습니다. fpga_dma.cpp 및 fpga_dma.h file다음 위치에 있는 s는 소프트웨어 드라이버를 구현합니다:$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw 이 드라이버는 다음 기능을 지원합니다:

API 설명
fpgaCountDMA채널 DMA BBB에 대한 장치 기능 체인을 스캔하고 사용 가능한 모든 채널을 계산합니다.
fpgaDMA열기 DMA 채널의 핸들을 엽니다.
fpgaDMA닫기 DMA 채널의 핸들을 닫습니다.
fpgaDMA 전송 초기화 DMA 전송을 나타내는 객체를 초기화합니다.
fpgaDMA 전송 재설정 DMA 전송 속성 개체를 기본값으로 재설정합니다.
fpgaDMA 전송 파괴 DMA 전송 속성 객체를 파괴합니다.
fpgaDMATransferSetSrc 전송의 소스 주소를 설정합니다. 이 주소는 64바이트로 정렬되어야 합니다.
fpgaDMATransferSetDst 전송의 대상 주소를 설정합니다. 이 주소는 64바이트로 정렬되어야 합니다.
fpgaDMATransferSetLen 전송 길이를 바이트 단위로 설정합니다. 패킷이 아닌 전송의 경우 전송 길이를 64바이트의 배수로 설정해야 합니다. 패킷 전송의 경우 이는 필수 사항이 아닙니다.
fpgaDMATransferSetTransferType 전송 유형을 설정합니다. 합법적인 값은 다음과 같습니다.

• HOST_MM_TO_FPGA_MM = TX(호스트에서 AFU로)

• FPGA_MM_TO_HOST_MM = RX(AFU에서 호스트로)

fpgaDMATransferSetTransferCallback 비동기 전송 완료에 대한 알림을 위한 콜백을 등록합니다. 콜백을 지정하면 fpgaDMATransfer가 즉시 반환됩니다(비동기 전송).

콜백을 지정하지 않으면 fpgaDMATransfer는 전송이 완료된 후 반환됩니다(동기/차단 전송).

fpgaDMATransferSetLast DMA가 사전 페치된 전송을 처리할 수 있도록 마지막 전송을 나타냅니다. 기본값은 DMA가 전송 작업을 시작하기 전에 파이프라인에서 64개의 전송입니다.
fpgaDMA 전송 DMA 전송을 수행합니다.

API, 입력 및 출력 인수에 대한 자세한 내용은 헤더를 참조하세요. file $OPAE_PLATFORM_ROOT/hw/s에 위치함amples/dma_afu/sw/fpga_dma.hIntel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. 다른 이름과 브랜드는 타인의 재산으로 주장될 수 있습니다.

소프트웨어 프로그래밍 모델

소프트웨어 드라이버 사용 모델에 대해 자세히 알아보려면 README를 참조하세요. file $OPAE_PLATFORM_ROOT/hw/s에 위치함amples/dma_afu/README.md

DMA AFU Ex 실행ample

시작하기 전에:

  • 당신은 전직에 대해 잘 알고 있어야 합니다.ampIntel FPGA 프로그래머블 가속 카드 D5005에 대한 Intel 가속 스택 빠른 시작 가이드의 파일입니다.
  • 환경 변수를 정의해야 합니다. 환경 변수는 사용 중인 Intel Acceleration Stack 버전에 따라 달라집니다.
    • 현재 버전의 경우 환경 변수를 $OPAE_PLATFORM_ROOT로 설정하세요.
  • DMA 드라이버가 Intel Threading Building Blocks(TBB) 라이브러리에 의존하므로 이를 설치해야 합니다.
  • 또한 s를 실행하려면 두 개의 1GB 거대 페이지를 설정해야 합니다.ample 응용 프로그램. $ sudo sh -c “echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/ nr_hugepages”

DMA 가속기 기능(AF) 비트스트림을 다운로드하고, 애플리케이션과 드라이버를 빌드하고, 디자인 ex를 실행하려면 다음 단계를 수행하십시오.amp르 :

  1. DMA 애플리케이션 및 드라이버 디렉토리로 변경: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw
  2. 드라이버 및 애플리케이션 빌드: make
  3. DMA AFU 비트스트림을 다운로드하세요: sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
  4. 호스트 애플리케이션을 실행하여 호스트 메모리에서 FPGA 장치 메모리로 100MB 단위로 1MB를 쓰고 다시 읽습니다. ./ fpga_dma_test -s 104857600 -p 1048576 -r mtom

관련 정보
Intel FPGA 프로그래머블 가속 카드 D5005용 Intel 가속 스택 빠른 시작 가이드 Intel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 타인의 재산으로 주장될 수 있습니다.

DMA AFU Ex 컴파일ample

AF를 컴파일하기 위한 합성 빌드 환경을 생성하려면 다음과 같이 afu_synth_setup 명령을 사용합니다.

  1. DMA AFU로 변경ample 디렉토리: $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
  2. 디자인 빌드 디렉토리 생성: afu_synth_setup –source hw/rtl/filelist.txt 빌드_합성
  3. afu_synth_setup에서 생성된 합성 빌드 디렉토리에서 터미널 창에서 다음 명령을 입력하여 대상 하드웨어 플랫폼에 대한 AF를 생성합니다. cd build_synth run.sh run.sh AF 생성 스크립트는 동일한 기본을 사용하여 AF 이미지를 생성합니다. fileAFU의 플랫폼 구성으로 이름 지정 file (.json) .gbs 접미사가 있는 위치:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs Intel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 타인의 재산으로 주장될 수 있습니다.

AFU Ex 시뮬레이션ample

Intel은 Intel FPGA PAC에 대한 Intel Accelerator Functional Unit(AFU) Simulation Environment(ASE) 빠른 시작 가이드를 참조하여 유사한 ex 시뮬레이션에 익숙해지도록 권장합니다.amples 및 환경을 설정합니다. 다음 단계를 진행하기 전에 OPAE_PLATFORM_ROOT 환경 변수가 OPAE SDK 설치 디렉토리로 설정되어 있는지 확인합니다. 다음 단계를 완료하여 DMA AFU에 대한 하드웨어 시뮬레이터를 설정합니다.

  1. DMA AFU로 변경ample 디렉토리: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu
  2. 새 디렉토리에 ASE 환경을 만들고 AFU 시뮬레이션을 위해 구성합니다: afu_sim_setup –source hw/rtl/filelist.txt 빌드_아세_디렉토리
  3. ASE 빌드 디렉토리로 변경: cd build_ase_dir
  4. 드라이버 및 애플리케이션 빌드: make
  5. 시뮬레이션을 만드세요: make sim

Samp하드웨어 시뮬레이터의 출력:

[SIM] ** 주의: 소프트웨어 애플리케이션을 실행하기 전에 ** [SIM] 애플리케이션을 실행할 터미널에서 env(ASE_WORKDIR)을 설정합니다(복사 및 붙여넣기) => [SIM] $SHELL | 다음을 실행합니다.[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] 다른 $SHELL에 대해서는 Linux 관리자에게 문의하십시오. [SIM] [SIM] 시뮬레이션 준비 완료… [SIM] CTRL-C를 눌러 시뮬레이터를 닫습니다…

시뮬레이션 환경에서 DMA AFU 소프트웨어를 컴파일하고 실행하려면 다음 단계를 완료하세요.

  1. 새로운 터미널 창을 엽니다.
  2. 디렉토리를 다음으로 변경하세요: cd $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw

인텔사. 판권 소유. 인텔, 인텔 로고 및 기타 인텔 마크는 인텔사 또는 그 자회사의 상표입니다. 인텔은 인텔의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 최신 사양으로 보증하지만 사전 통지 없이 언제든지 제품 및 서비스를 변경할 수 있는 권리를 보유합니다. 인텔은 인텔이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 어떠한 책임도 지지 않습니다. 인텔 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 다른 사람의 자산일 수 있습니다.

AFU Ex 시뮬레이션ample

  1. 하드웨어 시뮬레이션에서 위의 단계의 환경 설정 문자열(셸에 적합한 문자열 선택)을 터미널 창으로 복사합니다. s에서 다음 줄을 참조하세요.amp하드웨어 시뮬레이터의 le 출력. [SIM] bash/zsh | export ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/빌드_아제_디렉토리/작업 [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/build_ase_dir/work
  2. 소프트웨어를 컴파일합니다: $ make USE_ASE=1
  3. 루프백 모드에서 호스트 메모리에서 FPGA 장치 메모리로 4KB 단위로 1KB를 쓰기 위해 호스트 애플리케이션을 실행합니다. ./ fpga_dma_test -s 4096 -p 1024 -r mtom

관련 정보
인텔 가속기 기능 장치(AFU) 시뮬레이션 환경(ASE) 빠른 시작 사용자 안내서

개선된 DMA 성능을 위한 최적화

fpga_dma_test.cpp에서 NUMA(비균일 메모리 액세스) 최적화를 구현하면 프로세서가 비로컬 메모리(다른 프로세서의 로컬 메모리)에 액세스하는 것보다 더 빠르게 자체 로컬 메모리에 액세스할 수 있습니다. 일반적인 NUMA 구성은 아래 다이어그램에 나와 있습니다. 로컬 액세스는 코어에서 동일한 코어의 로컬 메모리로의 액세스를 나타냅니다. 원격 액세스는 노드 0의 코어가 노드 1의 로컬 메모리에 있는 메모리에 액세스할 때의 경로를 보여줍니다.

일반적인 NUMA 구성

인텔.-FPGA-프로그래밍 가능-가속-카드-D5005-그림-5

테스트 애플리케이션에서 NUMA 최적화를 구현하려면 다음 코드를 사용하세요.

// 요청 시 적절한 친화성 설정 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”); // 토폴로지에서 디바이스 찾기 hwloc_topology_t topology; hwloc_topology_init(&topology); hwloc_topology_set_flags(topology, HWLOC_TOPOLOGY_FLAG_IO_DEVICES);Intel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. 인텔은 인텔의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. 인텔은 인텔이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. 인텔 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다. *다른 이름과 브랜드는 타인의 재산으로 주장될 수 있습니다.

개선된 DMA 성능을 위한 최적화

hwloc_topology_load(토폴로지); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(토폴로지, dom, 버스, dev, 함수); hwloc_obj_t obj2 = hwloc_get_non_io_ancestor_obj(토폴로지, 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은 %s\n입니다", str); #endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(토폴로지, obj2->nodeset, HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_MIGRATE |HWLOC_MEMBIND_BYNODESET); #else retval =hwloc_set_membind_nodeset(토폴로지, 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(토폴로지, obj2->cpuset, HWLOC_CPUBIND_STRICT); ON_ERR_GOTO(retval, out_destroy_tok, "hwloc_set_cpubind"); } }

DMA 가속기 기능 장치 사용자 가이드 아카이브

인텔 가속 스택 버전 사용 설명서 (PDF)
2.0 DMA 가속기 기능 장치(AFU) 사용 설명서

DMA 가속기 기능 단위 사용자 가이드에 대한 문서 개정 내역

 

문서 버전

인텔 가속 스택 버전  

변화

 

 

2020.08.03

2.0.1(인텔에서 지원됨

Quartus® Prime Pro Edition 에디션 19.2)

 

AF 이미지를 수정했습니다 file 섹션의 이름 DMA AFU Ex 컴파일ample.

 

 

2020.04.17

2.0.1(인텔에서 지원됨

Quartus Prime Pro Edition Edition 19.2)

 

 

다음 문장을 수정했습니다. 대상 청중 부분.

 

 

2020.02.20

2.0.1(인텔에서 지원됨

Quartus Prime Pro Edition Edition 19.2)

 

 

오타를 수정했습니다.

 

 

 

 

2019.11.04

 

 

2.0.1(인텔에서 지원됨

Quartus Prime Pro Edition Edition 19.2)

• 섹션에서 사전 빌드 AFU로 FPGA를 구성할 때 fpgaconf를 fpgasupdate로 교체했습니다. DMA AFU Ex 실행ample.

• 자막 추가 인텔 FPGA 프로그래밍 가능 가속 카드 D5005 문서 제목으로.

• $OPAE_PLATFORM_ROOT 환경 변수가 추가되었습니다.

• 수정된 섹션 소프트웨어 프로그래밍 모델 사소한 편집을 위해서.

• 새로운 섹션 추가 DMA AFU Ex 컴파일ample.

• 수정된 섹션 개선된 DMA 성능을 위한 최적화 사소한 편집을 위해서.

 

 

2019.08.05

2.0(인텔에서 지원됨

Quartus 프라임 프로 에디션 18.1.2)

 

 

최초 출시.

Intel Corporation. 모든 권리 보유. Intel, Intel 로고 및 기타 Intel 마크는 Intel Corporation 또는 그 자회사의 상표입니다. Intel은 Intel의 표준 보증에 따라 FPGA 및 반도체 제품의 성능을 현재 사양에 따라 보증하지만, 사전 통지 없이 언제든지 모든 제품과 서비스를 변경할 권리를 보유합니다. Intel은 Intel이 서면으로 명시적으로 동의한 경우를 제외하고 여기에 설명된 정보, 제품 또는 서비스의 적용 또는 사용으로 인해 발생하는 책임이나 의무를 지지 않습니다. Intel 고객은 게시된 정보에 의존하고 제품이나 서비스를 주문하기 전에 최신 버전의 장치 사양을 얻는 것이 좋습니다.

  • 다른 이름과 브랜드는 다른 사람의 재산이라고 주장될 수 있습니다.

 

문서 / 리소스

인텔 FPGA 프로그래밍 가능 가속 카드 D5005 [PDF 파일] 사용자 가이드
FPGA 프로그래밍 가능 가속 카드, D5005, FPGA 프로그래밍 가능 가속 카드 D5005, DMA 가속기 기능 장치

참고문헌

댓글을 남겨주세요

이메일 주소는 공개되지 않습니다. 필수 항목은 표시되어 있습니다. *