英特尔徽标

Intel FPGA 可编程加速卡 D5005

Intel.-FPGA-Programmable-Acceleration-Card-D5005-产品

关于本文档

本文档描述了直接内存访问 (DMA) 加速器功能单元 (AFU) 的实现以及如何构建设计以在硬件或仿真中运行。

目标读者

目标受众包括需要加速器功能 (AF) 以在连接到英特尔 FPGA 设备的内存中本地缓冲数据的硬件或软件开发人员。

公约

文档约定

习俗 描述
# 位于指示该命令以 root 身份输入的命令之前。
$ 指示要作为用户输入的命令。
这种字体 File名称、命令和关键字以这种字体打印。 长命令行以这种字体打印。 尽管长命令行可能会换行到下一行,但返回不是命令的一部分; 不要按回车。
指示尖括号之间出现的占位符文本必须替换为适当的值。 不要输入尖括号。

缩略词

缩略词

缩略词 扩张 描述
AF 加速器功能 在加速应用程序的 FPGA 逻辑中实现的编译硬件加速器图像。
安福 加速器功能单元 在 FPGA 逻辑中实现的硬件加速器可将应用程序的计算操作从 CPU 中卸载以提高性能。
API 应用程序编程接口 一组用于构建软件应用程序的子程序定义、协议和工具。
CCI-P 核心缓存接口 CCI-P 是 AFU 用于与主机通信的标准接口。
东风 设备功能标题 创建功能标题的链接列表以提供添加功能的可扩展方式。
持续…

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

缩略词 扩张 描述
财务管理信息模块 FPGA接口管理器 FPGA 硬件包含 FPGA 接口单元 (FIU) 和用于存储器、网络等的外部接口。

加速器功能 (AF) 在运行时与 FIM 接口。

金融情报机构 FPGA接口单元 FIU 是一个平台接口层,充当 PCIe*、UPI 等平台接口和 CCI-P 等 AFU 侧接口之间的桥梁。
强积金 内存属性工厂 MPF 是一个基本构建块 (BBB),AFU 可以使用它为与 FIU 的交易提供 CCI-P 流量整形操作。

加速词汇

带有 FPGA 的英特尔® 至强® CPU 的加速堆栈

学期 缩写 描述
面向带有 FPGA 的英特尔至强 CPU 的英特尔® 加速堆栈 加速堆栈 一组软件、固件和工具,可在英特尔 FPGA 和英特尔至强处理器之间提供性能优化的连接。
Intel FPGA 可编程加速卡 英特尔 FPGA PAC PCIe FPGA 加速卡。

包含通过 PCIe 总线与英特尔至强处理器配对的 FPGA 接口管理器 (FIM)。

  • DMA 加速器功能单元用户指南:英特尔 FPGA 可编程加速卡 D5005

DMA AFU 说明

介绍

直接内存访问 (DMA) AFU examp文件展示了如何管理主机处理器和 FPGA 之间的内存传输。 您可以将 DMA AFU 集成到您的设计中,以在主机存储器和 FPGA 本地存储器之间移动数据。DMA AFU 包含以下子模块:

  • 内存属性工厂 (MPF) 基本构建模块 (BBB)
  • 内核高速缓存接口 (CCI-P) 到 Avalon® 内存映射 (Avalon-MM) 适配器
  • 包含 DMA BBB 的 DMA 测试系统

这些子模块在下面的 DMA AFU 硬件组件主题中有更详细的描述。

相关信息

  • DMA AFU 硬件组件(第 6 页)
  • Avalon 接口规范

有关 Avalon-MM 协议的更多信息,包括读写事务的时序图。

DMA AFU 软件包

英特尔至强 CPU 和 FPGA 封装的英特尔加速堆栈 file (*.tar.gz),包括 DMA AFU examp乐。 这个前任ample 提供了一个用户空间驱动程序。 主机应用程序使用此驱动程序,以便 DMA 在主机和 FPGA 内存之间移动数据。 硬件二进制文件、源代码和用户空间驱动程序位于以下目录:$OPAE_PLATFORM_ROOT/hw/samp莱斯/dma_afu 。 在试验 DMA AFU 之前,您必须安装开放可编程加速引擎 (OPAE) 软件包。 有关安装说明,请参阅 Intel Acceleration Stack Quick Start Guide for Intel FPGA Programmable Acceleration Card D5005 中的安装 OPAE 软件包。 本快速入门指南还包括有关开放式可编程加速引擎 (OPAE) 和配置 AFU 的基本信息。 安装 Open Programmable Acceleration Engine (OPAE) 软件包后,如amp文件主机应用程序和 DMA AFU 用户空间驱动程序位于以下目录中: $OPAE_PLATFORM_ROOT/hw/samp莱斯/dma_afu/sw。 运行 sample 主机应用程序 fpga_dma_test 在您的英特尔 FPGA PAC D5005 硬件上,请参阅运行 DMA AFU Ex 部分中的步骤amp乐。 英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔保证其 FPGA 和半导体产品的性能符合英特尔标准保修的当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

相关信息

  • 英特尔 FPGA 可编程加速卡 D5005 的英特尔加速堆栈快速入门指南
  • 安装 OPAE 软件包

DMA AFU 硬件组件

DMA AFU 与 FPGA 接口单元 (FIU) 和 FPGA 存储器连接。 有关 FPGA 存储器的详细规格,请参阅 Intel FPGA 可编程加速卡 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/硬件/秒amp莱斯/dma_afu/hw/rtl/dma_bbb

DMA 加速器功能单元用户指南:英特尔 FPGA 可编程加速卡 D5005

DMA AFU 硬件框图

Intel.-FPGA-可编程加速卡-D5005-fig-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 到 Avalon 适配器之间的接口。 它还提供了 DMA BBB 和本地 FPGA SDRAM bank 之间的接口。

相关信息
用于英特尔 FPGA 可编程加速卡 D5005 的 FPGA 接口管理器数据表

DMA测试系统

DMA 测试系统将 DMA BBB 连接到 FPGA 设计的其余部分,包括 CCI-P 适配和本地 FPGA 存储器。

DMA 测试系统框图
此框图显示了 DMA 测试系统的内部结构。 DMA 测试系统在第 1 页的图 7 中显示为一个整体块。Intel.-FPGA-可编程加速卡-D5005-fig-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,请确保空 DFH 基地址位于 DFH 链表的末尾。
  • MA Basic Building Block (BBB):该块在主机和本地 FPGA 存储器之间移动数据。 它还访问主机内存以访问描述符链。

DMABBB

DMA BBB 子系统使用 Avalon-MM 事务将数据从源地址传输到目标地址。 DMA 驱动程序通过访问系统内部各种组件的控制和状态寄存器来控制 DMA BBB。 DMA 驱动程序还通过使用共享内存来控制 DMA BBB 来传递传输描述符。 DMA BBB 访问 FPGA 存储器中偏移 0x0 处的数据。 DMA BBB 访问主机内存中偏移 0x1_0000_0000_0000 处的数据和描述符。

DMA BBB 平台设计器框图
此框图不包括一些内部流水线桥 IP 内核。Intel.-FPGA-可编程加速卡-D5005-fig-6

DMA 加速器功能单元用户指南:英特尔 FPGA 可编程加速卡 D5005

DMA AFU 说明

DMA BBB 平台设计器中的组件实现以下功能:

  • 远桥/管道桥: 包含具有可调节延迟的流水线桥接器,用于控制拓扑并改进设计 Fmax。
  • MA BBB DFH: 这是 DMA BBB 的设备功能标头。 此 DFH 指向位于偏移 0x100(空 DFH)处的下一个 DFH。
  • 描述符前端: 负责获取描述符并将它们传输到 Dispatcher。 当 DMA 传输完成时,前端从 Dispatcher 接收状态信息并覆盖主机内存中的描述符。
  • 调度员: 该模块将 DMA 传输请求调度到读写主机。
  • 读大师: 该模块负责从主机或本地 FPGA 存储器读取数据并将其作为流数据发送到 Write Master。
  • 写大师: 该模块负责从 Read Master 接收流数据并将内容写入主机或本地 FPGA 存储器。

寄存器映射和地址空间

DMA AFU 支持两个内存 views:DMA view 和主人 view. DMA view 支持 49 位地址空间。 DMA的下半部分 view 映射到本地 FPGA 存储器。 DMA的上半部分 view 映射到主机内存。 主人 view 包括可通过 MMIO 访问访问的所有寄存器,例如 DFH 表,以及 DMA AFU 内部使用的各种 IP 内核的控制/状态寄存器。 DMA BBB 和 AFU 中的 MMIO 寄存器支持 32 位和 64 位访问。 DMA AFU 不支持 512 位 MMIO 访问。 访问 DMA BBB 内的 Dispatcher 寄存器必须是 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 已被参数化为指向偏移 0x100 以找到下一个 DFH (DMA BBB DFH)。 不得修改 DMA AFU DFH 的基地址,因为它必须位于 CCIP 规范所定义的地址 0x0。
0x100 DMABBB 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 已被参数化为指向 0x100 以用于下一个 DFH 偏移。 下一个偏移量可以是另一个 DMA BBB、另一个 DFH(未包含在此设计中)或 NULL DFH。
0x40 调度员 0x40 调度程序的控制端口。 DMA 驱动程序使用此位置来控制 DMA 或查询其状态。
0x80 描述符前端 0x40 描述符前端是一个自定义组件,它从主机内存读取描述符并在 DMA 传输完成时覆盖描述符。 驱动程序向前端指示第一个描述符在主机内存中的位置,然后前端硬件主要通过存储在主机内存中的描述符与驱动程序进行通信。

DMA AFU 地址空间

主机可以访问第 4 页的表 12 和第 5 页的表 13 中列出的寄存器。DMA BBB 子系统可以访问完整的 49 位地址空间。 该地址空间的下半部分包括本地 FPGA 存储器。 该地址空间的上半部分包括 48 位主机地址存储器。 下图显示了主机和 DMA views 的记忆。

DMA AFU 和主机 View记忆

Intel.-FPGA-可编程加速卡-D5005-fig-3

设备功能标题链表

DMA AFU 设计前ample 包含三个构成链表的设备特征标头 (DFH)。 这个链表允许 samp文件应用程序来识别 DMA AFU 以及驱动程序来识别 DMA BBB。 DFH 列表末尾包含一个 NULL DFH。 在链表末尾包含空 DFH 允许您将更多 DMA BBB 添加到您的设计中。 您只需将 NULL DFH 移动到其他 BBB 之后的地址。 每个 DMA BBB 期望下一个 DFH 位于距 BBB 基地址 0x100 字节的位置。 下图描述了 DMA AFU 设计 ex 的链表amp勒。

寄存器映射和地址空间

DMA AFU 设备功能头 (DFH) 链接

Intel.-FPGA-可编程加速卡-D5005-fig-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 传输属性对象。
fpgaDMA传输集源 设置传输的源地址。 该地址必须是 64 字节对齐的。
fpgaDMA传输集目标 设置传输的目标地址。 该地址必须是 64 字节对齐的。
fpgaDMA传输设置长度 以字节为单位设置传输长度。 对于非数据包传输,您必须将传输长度设置为 64 字节的倍数。 对于数据包传输,这不是必需的。
fpgaDMATransferSet传输类型 设置传输类型。 法律价值是:

• HOST_MM_TO_FPGA_MM = TX(主机到 AFU)

• FPGA_MM_TO_HOST_MM = RX(AFU 到主机)

fpgaDMATransferSetTransferCallback 注册回调以通知异步传输完成。 如果指定回调,fpgaDMATransfer 会立即返回(异步传输)。

如果不指定回调,则 fpgaDMATransfer 在传输完成后返回(同步/阻塞传输)。

fpgaDMA传输集最后 指示最后一次传输,以便 DMA 可以开始处理预取的传输。 在 DMA 开始处理传输之前,默认值为流水线中的 64 次传输。
fpgaDMA传输 执行 DMA 传输。

有关 API、输入和输出参数的更多信息,请参阅标题 file 位于 $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/sw/fpga_dma.h英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔保证其 FPGA 和半导体产品的性能符合英特尔标准保修的当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 其他名称和品牌可能会被视为他人的财产。

软件编程模型

要了解更多关于软件驱动使用模型的信息,请参阅 README file 位于 $OPAE_PLATFORM_ROOT/hw/samples/dma_afu/README.md 文件

运行 DMA AFU Example

开始之前:

  • 你应该熟悉前任amp英特尔 FPGA 可编程加速卡 D5005 的英特尔加速堆栈快速入门指南中的文件。
  • 您必须定义一个环境变量。 环境变量取决于您使用的英特尔加速堆栈版本:
    • 对于当前版本,将环境变量设置为 $OPAE_PLATFORM_ROOT
  • 您必须安装英特尔线程构建模块 (TBB) 库,因为 DMA 驱动程序依赖于它。
  • 您还必须设置两个 1 GB 的大页面来运行amp应用程序。 $ sudo sh -c “echo 2 > /sys/kernel/mm/hugepages/hugepages-1048576kB/nr_hugepages”

执行以下步骤以下载 DMA 加速器功能 (AF) 比特流,构建应用程序和驱动程序,并运行设计 examp乐:

  1. 切换到 DMA 应用程序和驱动程序目录: cd $OPAE_PLATFORM_ROOT/hw/samp莱斯/dma_afu/sw
  2. 构建驱动程序和应用程序:make
  3. 下载 DMA AFU 比特流:sudo fpgasupdate ../bin/dma_afu_unsigned.gbs
  4. 执行主机应用程序以将 100 MB 的 1 MB 部分从主机内存写入 FPGA 设备内存并读回:./ fpga_dma_test -s 104857600 -p 1048576 -r mtom

相关信息
英特尔 FPGA 可编程加速卡 D5005 英特尔公司的英特尔加速堆栈快速入门指南。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔保证其 FPGA 和半导体产品的性能符合英特尔标准保修的当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

编译 DMA AFU Example

要生成综合构建环境来编译 AF,请使用 afu_synth_setup 命令,如下所示:

  1. 更改为 DMA AFUamp文件目录:$OPAE_PLATFORM_ROOT/hw/samp莱斯/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 映像 file名称为 AFU 的平台配置 file (.json) 在以下位置带有 .gbs 后缀:$OPAE_PLATFORM_ROOT/hw/samples/build_synth/dma_afu_s10.gbs 英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔保证其 FPGA 和半导体产品的性能符合英特尔标准保修的当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

模拟 AFU Example

英特尔建议您参考英特尔加速器功能单元 (AFU) 仿真环境 (ASE) 快速入门指南,让您的英特尔 FPGA PAC 熟悉模拟类似的 examp文件并设置您的环境。 在继续执行以下步骤之前,请验证 OPAE_PLATFORM_ROOT 环境变量是否设置为 OPAE SDK 安装目录。 完成以下步骤以设置 DMA AFU 的硬件模拟器:

  1. 更改为 DMA AFUamp文件目录: cd $OPAE_PLATFORM_ROOT/hw/samp莱斯/dma_afu
  2. 在新目录中创建 ASE 环境并对其进行配置以模拟 AFU:afu_sim_setup –source hw/rtl/filelist.txt 构建目录
  3. 切换到 ASE 构建目录: cd build_ase_dir
  4. 构建驱动程序和应用程序:make
  5. 制作模拟:制作模拟

Samp硬件模拟器的输出:

[SIM] ** 注意:在运行软件应用程序之前 ** [SIM] 在应用程序将运行的终端中设置 env(ASE_WORKDIR)(复制和粘贴)=> [SIM] $SHELL | 运行:[SIM] ———+————————————————— [SIM] bash/zsh | 导出 ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/ase_mkdir/work [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/硬件/秒amples/dma_afu/ase_mkdir/work [SIM] 对于任何其他 $SHELL,请咨询您的 Linux 管理员 [SIM] [SIM] 准备好模拟... [SIM] 按 CTRL-C 关闭模拟器...

完成以下步骤,在仿真环境中编译和执行 DMA AFU 软件:

  1. 打开一个新的终端窗口。
  2. 将目录更改为: cd $OPAE_PLATFORM_ROOT/hw/samp莱斯/dma_afu/sw

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

模拟 AFU Example

  1. 将硬件模拟中上述步骤中的环境设置字符串(选择适合您的 shell 的字符串)复制到终端窗口。 请参阅 s 中的以下行amp文件来自硬件模拟器的输出。 [SIM] bash/zsh | 导出 ASE_WORKDIR=$OPAE_PLATFORM_ROOT/hw/samples/dma_afu/build_ase_dir/工作 [SIM] tcsh/csh | setenv ASE_WORKDIR $OPAE_PLATFORM_ROOT/硬件/秒amp莱斯/dma_afu/build_ase_dir/work
  2. 编译软件: $ make USE_ASE=1
  3. 执行主机应用程序,以环回模式将主机内存中 4 KB 部分中的 1 KB 写回 FPGA 设备内存:./ fpga_dma_test -s 4096 -p 1024 -r mtom

相关信息
英特尔加速器功能单元 (AFU) 仿真环境 (ASE) 快速入门用户指南

优化以提高 DMA 性能

在 fpga_dma_test.cpp 中实现 NUMA(非统一内存访问)优化允许处理器访问自己的本地内存比访问非本地内存(另一个处理器本地的内存)更快。 典型的 NUMA 配置如下图所示。 本地访问表示从内核到同一内核本地的内存的访问。 远程访问说明了当节点 0 上的核心访问驻留在节点 1 本地内存中的内存时所采用的路径。

典型的 NUMA 配置

Intel.-FPGA-可编程加速卡-D5005-fig-5

使用以下代码在您的测试应用程序中实现 NUMA 优化:

// 如果请求,设置适当的亲和性 if (cpu_affinity || memory_affinity) {unsigned dom = 0, bus = 0, dev = 0, func = 0; fpga_properties 道具;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(拓扑,HWLOC_TOPOLOGY_FLAG_IO_DEVICES);英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔保证其 FPGA 和半导体产品的性能符合英特尔标准保修的当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。

优化以提高 DMA 性能

hwloc_topology_load(拓扑); hwloc_obj_t obj = hwloc_get_pcidev_by_busid(拓扑,dom,总线,dev,func); 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 is %s\n", str);#endif if (memory_affinity) { #if HWLOC_API_VERSION > 0x00020000 retval = hwloc_set_membind(topology, obj2->nodeset,HWLOC_MEMBIND_THREAD, HWLOC_MEMBIND_MIGRATE |HWLOC_MEMBIND_BYNODESET); #else retval =hwloc_set_membind_nodeset(拓扑, 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”); } }

DMA 加速器功能单元用户指南档案

英特尔加速堆栈版本 用户指南(PDF)
2.0 DMA 加速器功能单元 (AFU) 用户指南

DMA 加速器功能单元用户指南的文档修订历史

 

文档版本

英特尔加速 堆栈版本  

更改

 

 

2020.08.03

2.0.1(支持英特尔

Quartus® Prime Pro Edition 19.2)

 

修正了 AF 图像 file 部分名称 编译 DMA AFU Example.

 

 

2020.04.17

2.0.1(支持英特尔

Quartus Prime Pro Edition 19.2)

 

 

更正了一个声明 目标读者 部分。

 

 

2020.02.20

2.0.1(支持英特尔

Quartus Prime Pro Edition 19.2)

 

 

修正了错字。

 

 

 

 

2019.11.04

 

 

2.0.1(支持英特尔

Quartus Prime Pro Edition 19.2)

• 在使用预构建 AFU 部分配置 FPGA 时,将 fpgaconf 替换为 fpgasupdate 运行 DMA AFU Example.

• 添加了字幕 Intel FPGA 可编程加速卡 D5005 到文档标题。

• 添加了环境变量$OPAE_PLATFORM_ROOT。

• 修改部分 软件编程模型 进行小的编辑。

• 添加了新部分 编译 DMA AFU Example.

• 修改部分 优化以提高 DMA 性能 进行小的编辑。

 

 

2019.08.05

2.0(支持英特尔

Quartus Prime 专业版 18.1.2)

 

 

初始版本。

英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。

  • 其他名称和品牌可能属于他人财产。

 

文件/资源

Intel FPGA 可编程加速卡 D5005 [pdf] 用户指南
FPGA可编程加速卡,D5005,FPGA可编程加速卡D5005,DMA加速功能单元

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *