PG332 ERNIC Datasheet Translation

Overview

Navigating Content by Design Process

Core Overview

本章概述了 ERNIC IP Core以及应用程序、许可要求和标准一致性的详细信息。 ERNIC 是一种通过融合以太网 (RoCE v2) 协议实现 RDMA 的软 IP,用于嵌入式目标或发起设备。 该实现基于 InfiniBand Artchitecture Specification Volume 1 ,附件A16 RoCE 和附件17 RoCE V2 [参考文献 1] 中描述的规范。
图 1-1 显示了 ERNIC 及其与子系统中其他 IP 的连接。
在这里插入图片描述

Figure 1-1: ERNIC IP Block Diagram

注意:连接到 ERNIC 的 user logictarget IP 称为应用程序,箭头方向是从 master 到 slave。
除了 ERNIC IP,ERNIC 子系统还包括 Xilinx Ethernet IP (CMAC)AXI DMAAXI Interconnect以及其他 IP。 在用户应用程序前端,ERNIC IP 公开了边带接口(side band interfaces),无需通过互连即可实现高效的门铃交换。
每个队列由一组读写指针标识,称为Producer Index(写指针)和Consumer Index(读指针)。 这些指针的寄存器地址位置在本文档中称为门铃。 门铃交换或门铃响铃表示相应的寄存器位置已更新。

Feature Summary

ERNIC IP 使用 AXI4-Stream 接口与任何Ethernet MAC IP 接口交互。访问 DDR 或任何其他内存区域对用于读取和写入 RDMA 数据包处理的各种数据结构是必要的。这种连接是使用多个 AXI4 接口实现的。 IP 在 512 位内部数据路径上工作,可以完全硬件加速且无需任何软件干预数据传输。所有可恢复的故障(例如由于丢包而导致的重传)也完全在硬件中处理。
ERNIC IP 实现嵌入式 RNIC 功能。因此,与通用 RNIC 相比,仅实现了以下 RoCE v2 功能子集:

  • 支持传入和传出数据包的 RDMA SEND、RDMA READ、RDMA WRITE、RDMA SEND INVALIDATE、RDMA SEND IMMEDIATE 和 RDMA WRITE IMMEDIATE。不支持原子操作。
  • 支持多达 254 个连接。
  • 多达 255 个 RDMA 队列对的可扩展设计。

注意:默认 Vivado 策略允许定时传递多达 127 个队列对。要匹配 255 个队列对的时序,请使用 Vivado 策略 — Performance_refinePlacement。

  • 支持动态内存注册。
  • 硬件握手机制,用于与用户应用逻辑进行有效的门铃交换。

注意:在握手模式下切换时,上层在该特定 QP 上不应有任何流量。

ERNIC Module

ERNIC IP 由本节介绍的以下主要模块组成。

  • QP Manager
  • WQE Processor Engine
  • RX PKT Handler
  • Response Handler
  • Flow Control Manager

QP Manager
QP Manager模块包含所有 QP 的配置,并为处理器提供 AXI4-Lite 接口。它还对各种 SEND Queue进行仲裁并缓存 SEND 工作队列条目 (Send Work Queue Entries, WQE)。然后将这些 WQE 提供给 WQE 处理器模块进行进一步处理。该模块还处理重传时的 QP 指针更新。

WQE Processor Engine
WQE Processor Engine从 QP 管理器模块读取缓存的 WQE 并处理以下任务:

  • 验证传入的 WQE 是否存在任何无效的操作码 (invalid opcode)。
  • 根据有效负载最大传输单元 (PMTU) 为 RDMA 数据包创建header,并对内部 DMA 引擎进行编程。
  • 它还触发 DMA 开始传出数据包传输。

WQE Processor Engine还负责为传入的 RDMA SEND/WRITE 请求发送传出确认数据包 (acknowledgment packets, ACK),并为传入的 RDMA READ 请求发送读取响应 (read responses)。

RX PKT Handler
RX PKT Handler模块接收传入的 RDMA 数据包。在 RX PKT Handler (roce_cmac_s_axis) 接口接收之前,应过滤掉非 RDMA 数据包。 ERNIC IP 处理以下类型的传入 RoCE v2 数据包:

  • RDMA SEND、RDMA WRITE、RDMA READ 和 RDMA READ(从 ERNIC 发出的请求) 的响应数据包
  • RDMA SEND with Invalidate, RDMA SEND with immediate, RDMA WRITE with immediate packet
  • RDMA WRITE/RDMA SEND (从 ERNIC 发送的请求)的确认数据包 (ACK)
  • 到 QP1 的通信管理(管理数据报)数据包

RX PKT Handler 模块负责验证传入的数据包。它还为传入的 RDMA SEND 和 RDMA WRITE 请求触发传出确认数据包,并将通过验证的数据包推送到相应的内存位置。 RDMA READ 的响应数据包直接传送到目标应用程序。模块处理传入的 RDMA READ 请求并将请求转发到 TX 路径。

RX PKT 处理程序模块还解码 RDMA SEND 无效/立即和 RDMA WRITE 立即数据包。 IETH 或 IMMDT headers中的 32 位数据在单独的 AXI4-Stream 接口上提供。 在这个流接口上为每个条目提供了 64 位数据。 下表显示了这 64 位的编码。
在这里插入图片描述

	Table 1-1: Invalidate/Immediate Data Entry Structure

需要实现外部硬件逻辑来处理此接口上提供的无效/立即数据。例如,AXI DMA IP 将流接口 (AXIS)转换为 AXI 内存映射接口 (AXI MM),并将数据写入特定位置并通知软件或硬件应用程序。

用于RDMA traffic的外发的暂停请求 (Pause requests)在此模块内处理。当剩余的缓冲区位置达到 XON 条件时,它触发 Pause ON 并在缓冲区指针达到 XOFF 条件时取消断言。

Response Handler
Response Handler模块管理未完成的队列。这些队列保存有关发送到远程主机但尚未确认或响应的所有数据包的信息。此外,如果远程主机发送否定确认 (NAK),此模块会触发重新传输。如果该模块在指定的时间(timeout value)内没有收到远程主机的响应,则触发超时相关的重传。

由于传入的 NACK 或内部超时会触发重传。 当触发重传时,ERNIC IP 负责以下事项:

  1. 标识要重传的 PSN 和 MSN 值。
  2. 回滚该队列对(Queue Pair)的 PSN 和 MSN 值。
  3. 将当前的SQ指针回滚到需要重传的WQE。
  4. ERNIC 在重试的情况下重新传输完整的 WQE。不支持部分 WQE 重传。

Flow Controll Manager
该模块在 RX 路径中维护单独的缓冲器,并根据这些缓冲器的可编程满状态生成 PFC 控制信号。同样在 TX 路径中,它也有两个独立的 RoCE 和非 RoCE 缓冲区。在任何暂停信号断言时,模块将停止从缓冲区读取。

Product Specification

ERNIC IP 提供了支持 RoCE v2 的 NIC 的嵌入式实现。 RDMA 技术允许通过标准以太网更快地移动数据,同时完全卸载 CPU 带宽。 ERNIC IP Core随附可移植到任何 Zynq® MPSoC 或 FPGA 设备的软件驱动程序。 这允许 ERNIC IP 独立于任何外部处理器运行。

RDMA Enabled NIC

Xilinx® Embedded RDMA enabled NIC (ERNIC) 控制器可以使用以下方法之一与任何用户应用程序交互:

  • 紧密集成的硬件握手机制,为目标系统提供低延迟、轻量级的接口
  • OFED-complaint RDMA 硬件驱动程序和用户空间库,提供标准 SW API 以向 ERNIC 发布工作请求

图 2-1 显示了具有多个主机 CPU 和多个本机 NVMe 设备的示例端到端系统,这些设备通过 Xilinx ERNIC + NVMEOFABRIC IP 子系统在网络结构上进行通信。
在这里插入图片描述

图 2-1:Xilinx ERNIC + NVMe over Interconnect

图 2-1 所示的主机端启用 RDMA 的 NIC (RNIC) 需要支持 RoCE v2 技术。以下部分描述了 ERNIC 实现中使用的关键数据结构。

Work Requests/Work Queue Entries (WQE)

工作请求(Work Request)用于向 ERNIC IP 提交工作单元。 应用程序可以发布到发送工作队列(Send Work Queue)的操作是:

  • RDMA Write
  • RDMA WRITE Immediate
  • RDMA SEND
  • RDMA SEND Immediate
  • RDMA Read
  • RDMA SEND Invalidate

不允许以下工作请求:

  • ATOMIC
  • Bind Memory Window
  • Local Invalidate
  • Fast Register Physical MR

接收队列工作(Recieve Queue Work)请求不需要由应用程序发布,因为 ERNIC 硬件会根据配置的接收队列深度自动重新发布消耗的接收缓冲区。
表 2-1 显示了发送工作请求的结构。 每个工作队列条目 (WQE) 的大小为 64 字节。
在这里插入图片描述
在这里插入图片描述

Table 2-1: WQE Structure

Work Completions

发送队列(SQ)上发布的每个 WQE 都会发布工作完成(WC)。 接收队列 (RQ) 条目的完成不会发布,而是在传入的 RDMA SEND 请求消耗新的接收缓冲区时,在 RQWPTRDBADDi 指向的地址处的每个队列对 (QP) 敲响门铃。 完成队列条目 (CQE) 的结构在表 2-2 中给出。 每个 CQE 大小为 4 个字节。
在这里插入图片描述

Table 2-2: Completion Queue Entry Structure

RDMA Queues

ERNIC IP 实现以下 RDMA 队列,如接收队列 (Recieve Queue, RQ)、发送队列 (Send Queue, SQ) 和完成队列 (Completion Queue, CQ)。 这些队列称为队列对(Queue Pairs)或 QPs。 SQ 包含用户应用程序发布的send WQE。
在这里插入图片描述

Figure 2-2: RDMA Queues

RQ 容纳传入的 RDMA SEND 数据包。 完成队列通知用户应用程序有关已完成的 SEND WQE。 这些队列中的每一个都被实现为循环缓冲区。 各种门铃和写指针寄存器定义了这些队列的当前状态。 图 2-2 显示了不同的队列和定义队列状态的变量/寄存器。 突出显示的变量由 ERNIC IP 间接访问。 寄存器 CQDBADDi 指向 sq_cmpl_db 的地址,而 RQWPTRDBADDi 寄存器指向 rq_wrptr_db 的地址。

这些队列在 ERNIC IP 之外的内存区域中实现。 ERNIC 通过各种 AXI master 接口访问 IP。 有关 ERNIC 内存要求的详细信息,请参见表 3-2。

接下来的几节简要概述了 ERNIC IP 的传入 (RX) 和传出 (TX) 数据流。

ERNIC RX PATH

ERNIC RX Path 通过 AXI4-Stream 接口从 MAC (网卡)获取数据包数据。 如果 XRNICCONF[5] 的值设置为 1,则验证所有传入的数据包,并且所有未通过数据包验证的数据包 headers 都将发送到错误缓冲区(由 ERRBUFBA[31:0] 指定的基地址)。 根据表 2-3,ERNIC RX packet handler 模块为 header 加上错误综合症 (error syndrome) 前缀。 这些缓冲区为传入的数据包错误提供有用的调试信息。

Table 2-3: Packet Validation Error Syndrome

大多数数据包验证错误完全由硬件处理,不需要软件干预。 但是,如果传入的数据包导致 QP 进入 FATAL 状态,则需要软件干预来处理错误并启动断开连接。 此类错误在由 IPKTERRQBA、IPKTERRQSZ 和 IPKTERRQWPTR 寄存器定义的传入数据包错误状态缓冲区中,可用于 SW。 每个错误状态缓冲区条目都是 64 位宽的。 错误状态的格式如图 2-3 所示。
在这里插入图片描述

Figure 2-3: Error Status Format

Fatal table decoding is shown in Table 2-4.

Table 2-4: Decoding for FATAL Codes

传入的 RDMA SEND/WRITE/READ 请求应该连接在RX端。所有其他类型的数据包都是传出请求的响应数据包。 传入 RDMA SEND 请求的数据流如图 2-4 所示。 箭头的方向显示数据流。 在连接的 QP 上接收到有效的 RDMA SEND 传入数据包时,数据包内容(不包括标头)被推入相关 QP 的 RX 缓冲区。 根据 QPCONFi[4] 的配置,ERNIC 使用边带接口 (side band interface) 或通过 AXI 接口,响起 RQ Producer Index Doorbell (RQPI DB),以指示新数据包可用。 此时还会向远程主机发布确认 (ACK)。 用户应用程序可以通过敲响 RQ Consumer Index Doorbell (RQCI DB) 来通知 ERNIC 已消耗新数据包。 收到此门铃后,相应的 RX 缓冲区可用于新传入的数据包。
在这里插入图片描述

Figure 2-4: RDMA SEND RX Data Flow

对于任何 RDMA 设备上的传入 RDMA READ/WRITE 请求支持以及向网络中的其他 RDMA 设备发送读/写请求,设备应该知道目标 RDMA 客户端的地址、长度和 RKEY。 为此,应用层应实现自己的协议,以便在任何数据传输之前交换地址和 RKEY 值。 图 2-5 和图 2-6 中的示例显示了一个额外的 RDMA_SEND 操作,用于交换 RDMA READ/WRITE 事务所需的详细信息。 当详细信息交换时,RNIC 将向 ERNIC 发送 RDMA READ/WRITE 数据包,ERNIC 将以 RDMA read response 或 ACK 进行响应。 图 2-5 显示了 RDMA READ 事务的数据流。 图 2-6 显示了 RDMA WRITE 事务的数据流。
在这里插入图片描述

Figure 2-5: RDMA READ Request RX Data Flow

在这里插入图片描述

Figure 2-6: RDMA WRITE Request RX Data Flow

ERNIC TX PATH

TX 路径由传出 RDMA READ、RDMA WRITE 事务和传入 RDMA SEND/WRITE 请求的 ACK 数据包和传入 RDMA READ 请求的响应组成。基于 SQPIi 门铃,处理发送工作队列(Send Work Queue)请求。 DMA 模块配置为所有传出事务的数据传输。 RDMA WRITE/SEND 的 TX 数据流如图 2-7 所示。

用户应用程序通过在特定 QP 的 SEND Queue 上发布 WQE 并响起相应的 SQ Producer Index Doorbell (SQPI DB),来请求 ERNIC IP 传输 RDMA WRITE/SEND/READ 数据包。 ERNIC 处理 WQE 并根据 WQE 中提供的信息为 RDMA WRITE/SEND 命令提取数据。该数据连同相关 headers 一起被推送到链接上。一旦收到来自远程主机的确认 (ACK packet) ,ERNIC 会通过发布 CQE(基于 QPCONFi[5] 的配置)和通过边带接口 (side band interface) 发布完成计数,来通知用户应用程序 WQE 成功完成。相应的 QP 的 CQHEAD 也会更新。对于 RDMA READ 请求,RX packet handler 提示 TX 路径。对于此通信,每个 QP 都有一个未完成的读取请求队列 (read request queue)。队列的深度由传入请求资源的参数确定。当未完成的读取请求队列已满时,它会被指示给 RX 路径。对 QP 的任何进一步请求都将导致 NAK-Invalid 并且 QP 进入致命状态 (fatal state)。

注:箭头方向表示数据流向。

在这里插入图片描述

Figure 2-7: RDMA SEND/WRITE Data Flow

图 2-8 显示了从 ERNIC 到远程主机的 RDMA READ 请求流。
在这里插入图片描述

Figure 2-8: RDMA READ Data Flow

图 2-8 显示了从 ERNIC 到远程主机的 RDMA READ 请求的流程。 用户应用程序请求 ERNIC IP 向远程主机发送 RDMA READ 请求,方法是在特定 QP 的 SEND Queue 上发布 WQE 并响起相应的 SQ Producer Index Doorbell (SQPI DB)。 ERNIC 处理 WQE 并创建带有相关 headers 的请求数据包并将其推送到链路上。 一旦从远程主机接收到响应数据包,ERNIC 将数据(在删除标头后)写入 WQE 中提供的本地缓冲区地址。 然后它通过发布 CQE(基于 QPCONFi[5] 的配置)并通过边带接口发布完成计数,来通知用户应用程序 WQE 成功完成。 相应 QP 的 CQHEAD 也会更新。

STANDARDs

PERFORMANCE

RESOURCE ULTILIZATION

PORT DESCRIPTIONS

PARAMETER DISCRIPTIONS

REGISTER SPACE

所有 ERNIC 寄存器都与 AXI4-Lite 域同步。 以下寄存器表中未指定的任何位都被视为保留,并在读取时将值返回为 0。 除非在定义中指定,否则控制寄存器的上电复位值为 0。 除非另有说明,否则您应该始终使用 0 写入保留位置。 下表中仅列出了地址偏移,并且基地址由 AXI interconnect 在系统级别进行配置。 保护域表的内容用于头部验证,如下图所示。
在这里插入图片描述

Figure 2-9: PDT Table Implementation
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: RDMA(远程直接内存访问)是一种高性能网络通信技术,可用于实现低延迟和高带宽的数据传输。下面是一个RDMA程序的指南: 1. 硬件需求:RDMA程序需要使用支持RDMA技术的网络适配器和交换机。这些硬件设备必须支持InfiniBand或以太网RDMA(如RoCE)协议。 2. 软件需求:RDMA程序需要使用RDMA库和驱动程序。常用的RDMA库包括RDMA Core、Libibverbs和OpenFabrics Enterprise Distribution(OFED)。驱动程序需要与操作系统和硬件设备兼容。 3. RDMA通信模式:RDMA程序可以使用两种主要的通信模式:发送/接收(Send/Receive)和远程直接内存访问(Remote Direct Memory Access)。 - 发送/接收模式:发送方将数据缓冲区中的数据发送到接收方的缓冲区,接收方从自己的缓冲区中读取数据。 - 远程直接内存访问模式:发送方可以直接读取接收方的内存,或将数据写入接收方的内存,而不需要CPU的参与。 4. 连接建立:RDMA程序需要在发送方和接收方之间建立连接(QPs)。发送方和接收方的QPs需要进行初始化和绑定,以确保它们能够进行RDMA操作。 5. 编程接口:RDMA程序可以使用不同的编程接口,如标准的sockets API或RDMA特定的API。RDMA特定的API包括Verbs API和无锁(lockless)API。 6. 内存管理:RDMA程序需要对内存进行管理,包括内存的注册和注销,以及内存的分配和释放。内存注册是指将应用程序的内存页注册到RDMA适配器的内存区域。 7. 数据传输:RDMA程序可以使用发送/接收操作或RDMA读/写操作来传输数据。发送/接收操作基于缓冲区的复制,而RDMA操作可以直接访问内存。 8. 错误处理:RDMA程序需要处理可能发生的错误,如连接断开、RDMA操作失败等。可以使用错误处理机制来监测和处理错误情况。 RDMA程序的开发需要熟悉RDMA技术和相关的编程接口。掌握RDMA编程可以帮助实现高性能、低延迟和高带宽的网络通信应用。 ### 回答2: RDMA(远程直接内存访问)程序指南是一份包含有关如何编写和使用RDMA程序的详细说明的文档。下面是关于RDMA程序指南的回答: RDMA是一种高性能网络通信技术,它允许网络节点之间直接访问彼此的内存区域,而无需经过操作系统的内核。RDMA程序指南提供了有关如何编写和使用支持RDMA的程序的指导。 首先,该指南可能会介绍RDMA的基本概念和原理,包括RDMA的工作原理,RDMA传输协议和通信模型等。这将帮助开发人员了解RDMA技术的核心概念。 接下来,该指南可能会提供有关如何设置和配置RDMA环境的信息。这可能包括了解适用于RDMA的硬件和软件要求,安装RDMA驱动程序和库,以及配置RDMA网络和设备等。 然后,指南可能会介绍如何使用RDMA API和库来编写RDMA程序。这可能包括使用RDMA原语(如RDMA读取和写入)进行内存访问,通过创建和管理RDMA通信队列来进行通信,以及通过操作RDMA传输层来完成数据传输等。 此外,RDMA程序指南可能还提供了一些示例代码和案例研究,以帮助开发人员更好地理解和应用RDMA技术。这些示例代码可以涵盖各种应用场景,如分布式计算、大数据处理和网络存储等。 最后,该指南可能会提供有关如何调试和优化RDMA程序的建议。这包括了解常见问题和错误,以及使用性能分析工具来识别和解决性能问题等。 总之,RDMA程序指南是一份详细的文档,旨在帮助开发人员了解、学习和使用RDMA技术来构建高性能和可扩展的网络应用程序。通过遵循该指南,开发人员可以更有效地编写和优化RDMA程序,并充分利用RDMA的优势。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值