英特尔本机环回加速器功能单元 (AFU)

关于本文档
公约
表 1. 文档约定
| 习俗 | 描述 |
| # | 位于指示该命令以 root 身份输入的命令之前。 |
| $ | 指示要作为用户输入的命令。 |
| 这种字体 | File名称、命令和关键字以这种字体打印。 长命令行以这种字体打印。 尽管长命令行可能会换行到下一行,但返回不是命令的一部分; 不要按回车。 |
| 指示尖括号之间出现的占位符文本必须替换为适当的值。 不要输入尖括号。 |
缩略词
表 2. 首字母缩略词
| 缩略词 | 扩张 | 描述 |
| AF | 加速器功能 | 在加速应用程序的 FPGA 逻辑中实现的编译硬件加速器图像。 |
| 安福 | 加速器功能单元 | 在 FPGA 逻辑中实现的硬件加速器可将应用程序的计算操作从 CPU 中卸载以提高性能。 |
| API | 应用程序编程接口 | 一组用于构建软件应用程序的子程序定义、协议和工具。 |
| 日月光 | AFU仿真环境 | 协同仿真环境,允许您在仿真环境中使用相同的主机应用程序和 AF。 ASE 是面向 FPGA 的英特尔® 加速堆栈的一部分。 |
| CCI-P | 核心缓存接口 | CCI-P 是 AFU 用于与主机通信的标准接口。 |
| CL | 缓存行 | 64 字节缓存行 |
| 东风 | 设备功能标题 | 创建功能标题的链接列表以提供添加功能的可扩展方式。 |
| 财务管理信息模块 | FPGA接口管理器 | FPGA 硬件包含 FPGA 接口单元 (FIU) 和用于存储器、网络等的外部接口。
加速器功能 (AF) 在运行时与 FIM 接口。 |
| 金融情报机构 | FPGA接口单元 | FIU 是一个平台接口层,充当 PCIe*、UPI 等平台接口和 CCI-P 等 AFU 侧接口之间的桥梁。 |
| 持续… | ||
英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。
| 缩略词 | 扩张 | 描述 |
| 强积金 | 内存属性工厂 | MPF 是一个基本构建块 (BBB),AFU 可以使用它为与 FIU 的交易提供 CCI-P 流量整形操作。 |
| 信息 | 信息 | Message——控制通知 |
| 国家法律顾问委员会 | 本机环回 | NLB 对 CCI-P 链路执行读取和写入以测试连接性和吞吐量。 |
| 路线_I | 读取行无效 | 内存读取请求,FPGA 缓存提示设置为无效。 该行没有缓存在FPGA中,但可能造成FPGA缓存污染。
笔记: 缓存 tag 跟踪 Intel Ultra Path Interconnect (Intel UPI) 上所有未完成请求的请求状态。 因此,即使 RdLine_I 在完成时被标记为无效,它也会消耗缓存 tag 暂时通过 UPI 跟踪请求状态。 此操作可能会导致缓存行被逐出,从而导致缓存污染。 优势tag使用RdLine_I的e是它不被CPU目录跟踪; 因此它可以防止从 CPU 中窥探。 |
| RdLine-S | 读取线路共享 | FPGA 缓存提示设置为共享的内存读取请求。 尝试以共享状态将其保存在 FPGA 缓存中。 |
| 写字线_I | 写行无效 | 内存写入请求,FPGA 缓存提示设置为无效。 FIU 写入数据时无意将数据保存在 FPGA 缓存中。 |
| 写字线_M | 写行修改 | 内存写入请求,FPGA 缓存提示设置为已修改。 FIU 写入数据并将其以修改后的状态保留在 FPGA 缓存中。 |
加速词汇
表 3. 采用 FPGA 的英特尔至强® CPU 的加速堆栈
| 学期 | 缩写 | 描述 |
| 面向带有 FPGA 的英特尔至强® CPU 的英特尔加速堆栈 | 加速堆栈 | 一组软件、固件和工具,可在英特尔 FPGA 和英特尔至强处理器之间提供性能优化的连接。 |
| 英特尔 FPGA 可编程加速卡(英特尔 FPGA PAC) | 英特尔 FPGA PAC | PCIe FPGA 加速卡。 包含通过 PCIe 总线与英特尔至强处理器配对的 FPGA 接口管理器 (FIM)。 |
本机环回加速器功能单元 (AFU)
本机环回 (NLB) AFU 结束view
- NLB sample AFU 包含一组 Verilog 和 System Verilog files 来测试内存读写、带宽和延迟。
- 该软件包包括三个 AFU,您可以从相同的 RTL 源构建它们。 您对 RTL 源代码的配置会创建这些 AFU。
NLB Samp加速器功能 (AF)
$OPAE_PLATFORM_ROOT/hw/samples 目录存放以下 NLB 的源代码ample AFU:
- nlb_模式_0
- nlb_mode_0_stp
- nlb_模式_3
笔记: $DCP_LOC/hw/samples 目录存放 NLB samp1.0 发布包的 AFU 源代码。
了解 NLBamp关于 AFU 源代码结构及其构建方式,请参阅以下快速入门指南之一(取决于您使用的英特尔 FPGA PAC):
- 如果您使用带有英特尔 Arria® 10 GX FPGA 的英特尔 PAC,请参阅带有英特尔 Arria 10 GX FPGA 的英特尔可编程加速卡。
- 如果您使用的是英特尔 FPGA PAC D5005,请参阅英特尔 FPGA 可编程加速卡 D5005 的英特尔加速堆栈快速入门指南。
发布包提供了以下三个amp乐AF:
- NLB 模式 0 AF:需要 hello_fpga 或 fpgadiag 实用程序来执行 lpbk1 测试。
- NLB 模式 3 AF:需要 fpgadiag 实用程序来执行中断、读取和写入测试。
- NLB 模式 0 stp AF:需要 hello_fpga 或 fpgadiag 实用程序来执行 lpbak1 测试。
笔记: nlb_mode_0_stp 是与 nlb_mode_0 相同的 AFU,但启用了 Signal Tap 调试功能。
fpgadiag 和 hello_fpga 实用程序帮助适当的 AF 诊断、测试和报告 FPGA 硬件。
英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。
图 1. 本机环回 (nlb_lpbk.sv) 顶级包装器

表 4. NLB Files
| File 姓名 | 描述 |
| nlb_lpbk.sv | 实例化请求者和仲裁者的 NLB 的顶级包装器。 |
| 仲裁者.sv | 实例化测试 AF。 |
| 请求者.sv | 接受来自仲裁器的请求并根据 CCI-P 规范格式化请求。 还实现了流量控制。 |
| nlb_csr.sv | 实现 64 位读/写控制和状态 (CSR) 寄存器。 这些寄存器支持 32 位和 64 位读写。 |
| nlb_gram_sdp.sv | 实现具有一个写入端口和一个读取端口的通用双端口 RAM。 |
NLB 是一个 AFU 的参考实现,它与 Intel Xeon CPU 的 Intel Acceleration Stack 和 FPGAs Core Cache Interface (CCI-P) 参考手册兼容。 NLB 的主要功能是使用不同的内存访问模式来验证主机连接性。 NLB 还测量带宽和读/写延迟。 带宽测试有以下选项:
- 100% 阅读
- 100% 写入
- 50% 读取和 50% 写入
相关信息
- 适用于采用 Arria 10 GX FPGA 的英特尔可编程加速卡的英特尔加速堆栈快速入门指南
- 具有 FPGA 核心高速缓存接口 (CCI-P) 参考手册的英特尔至强 CPU 加速堆栈
- 英特尔 FPGA 可编程加速卡 D5005 的英特尔加速堆栈快速入门指南
本机环回控制和状态寄存器说明
表 5. CSR 名称、地址和说明
| 字节地址 (OPAE) | 单词 地址(CCI-P) | 使用权 | 姓名 | 宽度 | 描述 |
| 0x0000 | 0x0000 | RO | 东风 | 64 | AF 设备功能标头。 |
| 0x0008 | 0x0002 | RO | AFU_ID_L | 64 | AF ID 低。 |
| 0x0010 | 0x0004 | RO | AFU_ID_H | 64 | AF ID 高。 |
| 0x0018 | 0x0006 | RSVD | CSR_DFH_RSVD0 | 64 | 强制保留 0。 |
| 0x0020 | 0x0008 | RO | CSR_DFH_RSVD1 | 64 | 强制保留 1。 |
| 0x0100 | 0x0040 | RW | CSR_SCRATCHPAD0 | 64 | 暂存器寄存器 0。 |
| 0x0108 | 0x0042 | RW | CSR_SCRATCHPAD1 | 64 | 暂存器寄存器 2。 |
| 0x0110 | 0x0044 | RW | CSR_AFU_DSM_BASE L | 32 | AF DSM 基地址的低 32 位。 低 6 位为 4×00,因为地址与 64 字节缓存行大小对齐。 |
| 0x0114 | 0x0045 | RW | CSR_AFU_DSM_BASE H | 32 | AF DSM 基地址的高 32 位。 |
| 0x0120 | 0x0048 | RW | CSR_SRC_ADDR | 64 | 源缓冲区的起始物理地址。 所有读取请求都针对此区域。 |
| 0x0128 | 0x004A | RW | CSR_夏令时地址 | 64 | 目标缓冲区的起始物理地址。 所有写请求都针对这个区域 |
| 0x0130 | 0x004C | RW | CSR_NUM_LINES 个 | 32 | 缓存行数。 |
| 0x0138 | 0x004E | RW | CSR_CTL | 32 | 控制测试流程,启动、停止、强制完成。 |
| 0x0140 | 0x0050 | RW | CSR_配置文件 | 32 | 配置测试参数。 |
| 0x0148 | 0x0052 | RW | CSR_INACT_THRESH | 32 | 不活动阈值限制。 |
| 0x0150 | 0x0054 | RW | CSR_中断0 | 32 | SW 为设备分配中断 APIC ID 和向量。 |
| DSM 偏移图 | |||||
| 0x0040 | 0x0010 | RO | DSM_状态 | 32 | 测试状态和错误寄存器。 |
表 6. 带有 Ex 的 CSR 位域amp莱斯
此表列出了取决于 CSR_NUM_LINES 值的 CSR 位字段, . 在前amp下面乐= 14。
| 姓名 | 位域 | 使用权 | 描述 |
| CSR_SRC_ADDR | [63:] | RW | 2^(N+6)MB 对齐地址指向读取缓冲区的开始。 |
| [-1:0] | RW | 0x0。 | |
| CSR_夏令时地址 | [63:] | RW | 2^(N+6)MB 对齐地址指向写入缓冲区的开始。 |
| [-1:0] | RW | 0x0。 | |
| CSR_NUM_LINES 个 | [31:] | RW | 0x0。 |
| 持续… | |||
| 姓名 | 位域 | 使用权 | 描述 |
| [-1:0] | RW | 要读取或写入的缓存行数。 对于每个测试 AF,此阈值可能不同。
笔记: 确保源和目标缓冲区足够大以容纳 缓存行。 CSR_NUM_LINES 应小于或等于 . |
|
| 对于以下值,假设 =14。 然后,CSR_SRC_ADDR 和 CSR_DST_ADDR 接受 2^20 (0x100000)。 | |||
| CSR_SRC_ADDR | [31:14] | RW | 1MB 对齐地址。 |
| [13:0] | RW | 0x0。 | |
| CSR_夏令时地址 | [31:14] | RW | 1MB 对齐地址。 |
| [13:0] | RW | 0x0。 | |
| CSR_NUM_LINES 个 | [31:14] | RW | 0x0。 |
| [13:0] | RW | 要读取或写入的缓存行数。 对于每个测试 AF,此阈值可能不同。
笔记: 确保源和目标缓冲区足够大以容纳 缓存行。 |
|
表 7. 附加 CSR 位字段
| 姓名 | 位域 | 使用权 | 描述 |
| CSR_CTL | [31:3] | RW | 预订的。 |
| [2] | RW | 强制测试完成。 将测试完成标志和其他性能计数器写入 csr_stat。 强制测试完成后,硬件状态与非强制测试完成相同。 | |
| [1] | RW | 开始测试执行。 | |
| [0] | RW | 低电平有效测试复位。 低电平时,所有配置参数都更改为其默认值。 | |
| CSR_配置文件 | [29] | RW | cr_interrupt_testmode 测试中断。 在每次测试结束时生成一个中断。 |
| [28] | RW | cr_interrupt_on_error 出错时发送中断 | |
| 检测。 | |||
| [27:20] | RW | cr_test_cfg 配置每个测试模式的行为。 | |
| [13:12] | RW | cr_chsel 选择虚拟通道。 | |
| [10:9] | RW | cr_rdsel 配置读取请求类型。 编码有 | |
| 以下有效值: | |||
| • 1'b00:RdLine_S | |||
| • 2'b01:RdLine_I | |||
| • 2'b11:混合模式 | |||
| [8] | RW | cr_delay_en 启用请求之间的随机延迟插入。 | |
| [6:5] | RW | 配置测试模式,cr_multiCL-len。 有效值为 0,1、3 和 XNUMX。 | |
| [4:2] | RW | cr_mode,配置测试模式。 以下值有效: | |
| • 3'b000:LPBK1 | |||
| • 3'b001:读取 | |||
| • 3'b010:写入 | |||
| • 3'b011:TRPUT | |||
| 持续… | |||
| 姓名 | 位域 | 使用权 | 描述 |
| 有关测试模式的更多信息,请参阅 测试模式 下面的主题。 | |||
| [1] | RW | c_cont 选择测试翻转或测试终止。
• 当为1'b0 时,测试终止。 更新状态 CSR 已达到 CSR_NUM_LINES 计数。 • 当为1'b1 时,测试在达到CSR_NUM_LINES 计数后翻转到起始地址。 在翻转模式下,测试仅在出现错误时终止。 |
|
| [0] | RW | cr_wrthru_en 在 WrLine_I 和 Wrline_M 请求类型之间切换。
• 1'b0:WrLine_M • 1'b1:WrLine_I |
|
| CSR_INACT_THRESHOLD | [31:0] | RW | 不活动阈值限制。 在测试运行期间检测失速的持续时间。 计算连续空闲周期的数量。 如果不活动算
> CSR_INACT_THRESHOLD,没有发送请求,没有响应 收到,并设置 inact_timeout 信号。 将 1 写入 CSR_CTL[1] 可激活该计数器。 |
| CSR_中断0 | [23:16] | RW | 设备的中断向量号。 |
| [15:0] | RW | apic_id 是设备的 APIC OD。 | |
| DSM_状态 | [511:256] | RO | 错误转储形式测试模式。 |
| [255:224] | RO | 结束开销。 | |
| [223:192] | RO | 开始开销。 | |
| [191:160] | RO | 写入次数。 | |
| [159:128] | RO | 读取次数。 | |
| [127:64] | RO | 时钟数量。 | |
| [63:32] | RO | 测试错误寄存器。 | |
| [31:16] | RO | 比较和交换成功计数器。 | |
| [15:1] | RO | 每个 DSM 状态写入的唯一 ID。 | |
| [0] | RO | 测试完成标志。 |
测试模式
CSR_CFG[4:2] 配置测试模式。 可以进行以下四种测试:
- LPBK1: 这是内存复制测试。 AF 将 CSR_NUM_LINES 从源缓冲区复制到目标缓冲区。 测试完成后,软件会比较源缓冲区和目标缓冲区。
- 读: 此测试强调读取路径并测量读取带宽或延迟。 AF从CSR_SRC_ADDR开始读取CSR_NUM_LINES。 这只是带宽或延迟测试。 它不验证读取的数据。
- 写: 此测试强调写入路径并测量写入带宽或延迟。 AF从CSR_SRC_ADDR开始读取CSR_NUM_LINES。 这只是带宽或延迟测试。 它不验证写入的数据。
- 输出: 该测试结合了读取和写入。 它从 CSR_SRC_ADDR 位置开始读取 CSR_NUM_LINES,并将 CSR_NUM_LINES 写入 CSR_SRC_ADDR。 它还测量读取和写入带宽。 此测试不检查数据。 读写没有依赖关系
下表显示了四个测试的 CSR_CFG 编码。 此表集和CSR_NUM_LINES, =14。 您可以通过更新 CSR_NUM_LINES 寄存器来更改缓存行数。
表 8. 测试模式
FPGA 诊断:fpgadiag
fpgadiag 实用程序包括多项测试,用于诊断、测试和报告 FPGA 硬件。 使用 fpgadiag 实用程序运行所有测试模式。 有关使用 fpgadiag 实用程序的更多信息,请参阅开放式可编程加速引擎 (OPAE) 工具指南中的 fpgadiag 部分。
NLB Mode0 Hello_FPGA 测试流程
- 软件将设备状态存储器 (DSM) 初始化为零。
- 软件将 DSM BASE 地址写入 AFU。 CSR 写入(DSM_BASE_H),CSR 写入(DSM_BASE_L)
- 软件准备源和目标内存缓冲区。 这种准备是特定于测试的。
- 软件写入 CSR_CTL[2:0]= 0x1。 此写入使测试退出重置并进入配置模式。 只有CSR_CTL[0]=1 & CSR_CTL[1]=1时才能进行配置。
- 软件配置测试参数,如src、destaddress、csr_cfg、num lines等。
- 软件 CSR 写入 CSR_CTL[2:0]= 0x3。 AF 开始测试执行。
- 测试完成:
- 当测试完成或检测到错误时,硬件完成。 完成后,硬件 AF 更新 DSM_STATUS。 软件轮询 DSM_STATUS[31:0]==1 以检测测试完成。
- 软件可以通过写入 CSR 写入 CSR_CTL[2:0]=0x7 来强制完成测试。 硬件 AF 更新 DSM_STATUS。
本机环回加速器功能单元 (AFU) 用户指南的文档修订历史
| 文档版本 | 英特尔加速 堆栈版本 | 更改 |
| 2019.08.05 | 2.0(支持英特尔
Quartus Prime 专业版 18.1.2) 和 1.2(支持 英特尔 Quartus Prime 专业版 17.1.1) |
在当前版本中添加了对英特尔 FPGA PAC D5005 平台的支持。 |
| 2018.12.04 | 1.2(支持英特尔
Quartus® Prime 专业版 17.1.1) |
维护发布。 |
| 2018.08.06 | 1.1(支持英特尔
Quartus Prime 专业版 17.1.1) 和 1.0(支持 英特尔 Quartus Prime 专业版 17.0.0) |
更新了 NLB 的源代码位置amp乐AFU在 NLB Samp加速器功能 (AF) 部分。 |
| 2018.04.11 | 1.0(支持英特尔
Quartus Prime 专业版 17.0.0) |
初始版本。 |
英特尔公司。 版权所有。 英特尔、英特尔徽标和其他英特尔标志是英特尔公司或其子公司的商标。 英特尔根据英特尔的标准保修保证其 FPGA 和半导体产品的性能符合当前规格,但保留随时更改任何产品和服务的权利,恕不另行通知。 英特尔不承担因应用或使用此处描述的任何信息、产品或服务而产生的任何责任或义务,除非英特尔明确书面同意。 建议英特尔客户在依赖任何已发布信息和下订单购买产品或服务之前获取最新版本的设备规格。 *其他名称和品牌可能被认为是他人的财产。
文件/资源
![]() |
英特尔本机环回加速器功能单元 (AFU) [pdf] 用户指南 本机环回加速器功能单元 AFU、本机环回、加速器功能单元 AFU、功能单元 AFU |





