
컴퓨팅 스토리지 가속화를 위한 Eideticom의 쿼리 처리 장치 IP 코어
비트웨어 파트너 IP 쿼리 처리 장치(QPU) FPGA 기반 가속기를 구축하여 저장된 데이터 또는 스트리밍 데이터를 PCIe Gen4 속도로 쿼리, 분석 또는 재포맷할 수 있습니다! Eideticom의 쿼리
비트웨어의 루프백 예시는 몇 가지를 보여줍니다:
루프백의 기능은 이 예제의 주요 초점이 아닙니다. 위에 나열된 모든 글머리 기호 항목을 시연하는 데 중점을 두었습니다. 하지만 루프백은 가치가 있습니다. 비트웨어는 NIC 카드 및 스위치와 같은 타사 장치에 연결할 때 DAC 케이블 설정을 검증하는 데 루프백을 사용합니다.
루프백에는 처리할 프레임을 선택하는 L2 필터가 포함되어 있습니다. 해당 프레임에 IPv4 패킷이 포함된 경우 루프백은 MAC 계층과 IP 계층 모두에서 소스 및 대상 주소를 교환합니다. 루프백은 ARP 패킷에 응답할 수 있습니다. 이 기능은 타사 디바이스의 특수 구성에 대한 요구 사항을 없애기 위해 추가되었습니다.
루프백은 입력에서 출력으로 패킷을 반복하는 단일 QSFP 케이지에서 작동합니다. 추가 QSFP 케이지가 사용되지 않습니다.
이 루프백은 속도 등급 2의 자일링스 VU9P 칩이 포함된 BittWare XUP-P3R 보드에서 설계 및 테스트되었습니다. 루프백은 외부 메모리를 사용하지 않으며 CMAC가 포함된 모든 BittWare Xilinx UltraScale+ 칩에 포팅해야 합니다.
루프백의 FPGA 비트스트림에는 여러 컴포넌트가 포함되어 있습니다. 각 컴포넌트에는 입력과 출력 모두에 AXI4 스트림 인터페이스가 있으며, 이 인터페이스를 데이터 플레인으로 통합하여 사용합니다. 비트스트림의 컨트롤 플레인은 물리적 PCIe 인터페이스에 연결된 AXI4-Lite 인터페이스를 사용합니다.
루프백은 자일링스 IP 통합기 프로젝트로 제공됩니다. 여러 컴포넌트는 Verilog로 작성되었습니다. 세 개는 Verilog를 출력하는 Xilinx HLS 플로우를 사용하여 작성되었습니다.
현재 구현에서는 HLS로 작성된 세 가지 컴포넌트를 IP 통합자의 관점에서 단일 컴포넌트로 그룹화합니다. 그러나 이 세 가지 컴포넌트는 여기에 별도로 문서화되어 있습니다. 실제로는 4개의 별개의 컴포넌트로 문서화되어 있습니다. 이는 HLS 컴포넌트들이 공통의 "파서 라이브러리"를 공유하기 때문에 반복을 피하기 위해 별도로 문서화했기 때문입니다.
원칙적으로 재설정 시 모든 구성 요소는 활성화된 상태로 초기화되지만, '최소한의 피해'를 주는 모드로 초기화됩니다. 그런 다음 루프백이 성공적으로 작동하기 전에 소프트웨어에서 구성 요소를 구성해야 합니다.
또한 각 컴포넌트는 사용자가 하드웨어 또는 소프트웨어를 디버깅하는 데 도움이 되는 통계 레지스터를 노출합니다. 모든 통계 레지스터 값이 제 시간에 동기화되도록 스냅샷 신호가 포함되어 있습니다.
비트스트림의 인터페이스 폭과 클럭 속도는 100기가비트 이더넷 트래픽을 호스팅하기 위해 선택되었습니다. 데이터 플레인의 AXI4 스트림 인터페이스 폭은 512비트입니다. CMAC에 닿는 부분을 제외하고 인터페이스는 300MHz로 클럭됩니다. 프레임 메타데이터는 별도의 버스인 AXI TUSER 비트를 통해 이동하며, AXI TLAST가 높을 때 유효한 데이터를 전송합니다.
메타데이터는 비트스트림 전체에서 일관되지 않습니다. 따라서 각 컴포넌트와 관련된 문서에는 해당 컴포넌트가 입력 시 기대하는 메타데이터와 출력 시 전달되는 메타데이터가 설명되어 있습니다.
비트스트림 제어 인터페이스는 32비트 폭의 AXI4-Lite 슬레이브입니다. 모든 읽기 및 쓰기는 32비트입니다. 바이트 순서가 중요한 경우 루프백은 제어 레지스터가 네트워크 또는 빅 엔디안 바이트 순서로 데이터를 보유할 것으로 예상합니다.
컴포넌트 자체에 대한 설명과는 별도로 컴포넌트 컨트롤 플레인 레지스터를 한 곳에 문서화합니다. 사용자가 두 위치 사이를 탐색할 수 있도록 상호 참조가 존재합니다. 루프백의 제어 레지스터에 사용되는 메모리 맵은 Xilinx HLS 툴 체인에서 AXI4-Lite 인터페이스 구현의 요구 사항에 따라 크게 영향을 받습니다.
사용된 AXI의 공식적인 정의는 다음 링크(https://www.xilinx.com/support/documentation/ip_documentation/ug761_axi_reference_guide.pdf)에서 확인할 수 있는 자일링스 "AXI 참조 가이드"에 나와 있습니다.
BittWare 루프백 예제는 호스트 컴퓨터에 삽입된 PCIe 카드에서 실행됩니다. BittWare는 예제의 기능을 제어하기 위해 해당 호스트 컴퓨터용 소프트웨어를 제공합니다. 제어 소프트웨어는 호스트에서 실행되는 Python 3을 사용합니다.
이 예제의 소프트웨어는 비트웨어의 비트웍스 II 툴킷 위에 빌드됩니다. 좀 더 구체적으로 설명하면, BwHIL 및 BmcLib 라이브러리에 Python 바인딩을 추가합니다. 그런 다음 예제의 비트스트림이 PCIe 주소 공간에 노출하는 레지스터를 조작하기 위해 생성된 Python 컴포넌트 모음 내에서 이러한 바인딩을 활용합니다.
또한 루프백 예제 비트스트림은 일부 하드웨어 이벤트를 PCIe 인터럽트로 변환합니다. 이를 지원하기 위해 루프백의 소프트웨어는 이러한 인터럽트를 파이썬 호출로 변환합니다.
루프백 예제 비트스트림과의 아주 기본적인 상호작용을 예로 들어 설명하겠습니다:
$ # 먼저 툴킷의 명령줄을 사용하거나 GUI를 사용하여 PCIe 카드를 매핑합니다.
$ bwconfig --add=usb # 먼저 USB를 통해 장치 0으로 매핑합니다.
bwconfig --add=pci # 장치 1과 동일한 카드를 PCIe에 매핑합니다.
$ python3 # python3 호출
components.hildev에서 * 임포트 * >>>
>>> card = Card(1)
>>> card.show_stats() # 모든 구성 요소의 모든 통계를 표시합니다.
>>> # 몇 가지 옵션과 함께 첫 번째 CMAC 컴포넌트의 통계만 표시합니다.
>>> card.cmac[0].show_stats(showall=False, doTick=False)
>>> help()
>>> exit()
모든 Python 컴포넌트는 공통의 저수준 메서드 모음을 지원합니다. Python 구현에는 PCIe 메모리 맵이 하드 코딩되어 있지 않다는 점에 유의하세요. 대신 Python은 사용 가능한 FPGA 비트스트림 컴포넌트, 레지스터, 레지스터가 PCIe 주소 공간에서 어디에 위치하는지 정의하는 JSON 데이터베이스를 읽습니다. 이 JSON 데이터베이스는 루프백 예제의 문서에서 자동으로 생성됩니다.
Python API 문서 전문은 비트웨어의 개발자 사이트에서 확인할 수 있습니다.
낮은 수준의 방법에는 다음이 포함됩니다:
사용 가능한 더 높은 수준의 방법은 특정 구성 요소에 따라 다릅니다. 그러나 몇 가지 방법은 비교적 일반적입니다:
루프백에 대한 자세한 내용은 앱 노트에서 무료로 다운로드할 수 있으니 아래 양식을 통해 지금 바로 받아보세요!
이 페이지에 표시된 것은 루프백 예제에 대한 소개입니다. 전체 앱 노트에는 훨씬 더 자세한 내용이 있으며, 무엇보다도 무료로 다운로드할 수 있습니다! 양식을 작성하여 전체 앱 노트의 PDF 버전에 대한 액세스를 요청하세요.
"*"는 필수 필드를 나타냅니다.
비트웨어 파트너 IP 쿼리 처리 장치(QPU) FPGA 기반 가속기를 구축하여 저장된 데이터 또는 스트리밍 데이터를 PCIe Gen4 속도로 쿼리, 분석 또는 재포맷할 수 있습니다! Eideticom의 쿼리
백서 BittWare의 루프백 앱 소개 참고 사항 및 예제 개요 BittWare의 루프백 예제에서는 몇 가지 사항을 보여줍니다: 다음에서 자일링스 CMAC을 완벽하게 사용하는 방법
IA-440i 400G + PCIe Gen5 단일 폭 카드 Agilex의 성능을 갖춘 컴팩트한 400G 카드 인텔 Agilex 7 I 시리즈 FPGA는 애플리케이션에 최적화되어 있습니다.
강력한 IA-840f를 만나보세요: 엔터프라이즈급 인텔 애자일렉스 기반 FPGA 가속기 > 유연하고 맞춤형 하드웨어 > oneAPI 소프트웨어 지원 마우저에서 구매하기 강력한 성능 활용