- 01/25
- 2024
-
QQ扫一扫
-
Vision小助手
(CMVU)
GigEVision + GVSP
图 GVSP 帧和数据包结构
我们将花点时间了解 GigEVision 背后的技术。GVSP 是当前标准中使用的以太网流协议。流由多个帧(或图像)组成。每个帧由一个前导数据包、多个图像(或有效负载)数据包和一个尾部数据包组成。所有数据包都遵循 UDP 以太网协议,这是一种未连接的协议。这只是意味着相机发送数据包并让接收器完成将数据放入目标缓冲区的工作。作为一个未连接的协议,这意味着它的网络开销为 0,从而实现最大的网络性能。这也意味着支持多播等基础知识。我们必须正确设计接收器以避免数据丢失。CXP 也遵循相同的协议,并让接收方完成将数据放入目标缓冲区的工作。这导致高质量接收器的最佳性能和最低延迟和抖动。我们会注意到,一些公司无法设计出高质量的接收器,这导致他们走上了替代道路。
演示将 GigEVision 网络数据包分割成图像的过程。标头、前导部分和尾部分由控制进程使用,而图像部分最终位于连续的内存缓冲区中。当软件用于此过程时,整个数据包被写入内存,然后需要从内存中读出图像部分并以非碎片(或连续)方式写回另一个内存位置。此过程可以通过软件来完成,其成本是内存带宽的 3 倍,也可以通过卡的标头分割功能来完成以获得最佳性能。
传统 GigEVision + GVSP
传统的 GVSP 在软件中使用标头拆分 从 GVSP 数据包中剥离标头并将 有效负载数据包中的图像数据放入连续的内存缓冲区。 这个过程会提高 CPU 使用率,但更重要的是会消耗 与 3 副本实现相比,系统内存带宽使用量增加了 0 倍。 这导致系统效率为 33%,其中因素 以多种方式进入系统成本。 这是一个设计不佳的接收器的例子,市场上有很多 即使在 10GigE 上仍在这样做,但我们仍然看到一些情况 公司难以在单个服务器中运行多个 1GigE 摄像头 所有这些都与糟糕的接收器设计有关。
演示不使用零拷贝(或标头分割)技术的系统的三重内存带宽使用情况。当内存带宽耗尽时,这样的系统可能会导致数据丢失。当CPU和内存不允许进一步传输时,网卡中的缓冲区溢出,就会发生数据丢失。顺便说一句,这就是 RDMA 支持者在讨论传统 GigEVision 和 RDMA 的优缺点时所进行的比较,这是非常具有误导性的,因为这是最坏情况的例子。
图 传统 GigEVision + GVSP 实施中的数据路径
优化的 GigEVision + GVSPNvidia/Mellanox、Broadcom、Intel 和 Marvell 的现代 NIC 确实可以实现带有标头分割的零拷贝。Emergent 已经部署了 Nvidia/Mellanox 和 Broadcom 的实现,这些是 RDMA/RoCE 实验者探索的主要 NIC,消除了有关互操作性的任何担忧。事实上,Emergent 已使用相同的方法超过 15 年,并且拥有任何接口标准中最大的设计密度和与之相匹配的可靠性。同样的方法也适用于面向海量媒体和娱乐市场的 ST2110。
图 GigEVsion 优化实施中的数据路径
图 Emergent Vision Technologies的合作伙伴
零拷贝不能保证任何接口或协议实现中的零数据丢失。任何性能系统仍然需要适当的设计和裕度才能达到预期的结果。这适用于 CXP、RDMA / RoCE,甚至优化的 GVSP 实施。但我们可以保证最佳的 GVSP 实施将等于或更好的 RDMA / RoCE,而无需将 GigEVision 转变为点对点协议并消除多年来使 GigEVision 成为最灵活和流行的接口的因素。需要提醒的是,当 RDMA 的重传功能启用时,这是系统备份的标志,这也是经常出现不期望的延迟和抖动的标志。还需要提醒的是,CXP 不使用重发或流量控制,但能够维持高数据传输速率,并具有最佳接收器性能、低延迟和抖动。这在很大程度上要归功于零拷贝技术和 CXP 所需的专用图像采集卡上的足够缓冲。低成本 NIC 通常缺乏足够的缓冲能力,但现代 NIC 可以以经济高效的价格点轻松获得,并具有充足的物理缓冲。
值得注意的是,在 25Gbps 及更高速率下,熟悉的 PoE(以太网供电)已经失效。因此,新的部署应侧重于 SFP 技术和分布式电源系统。值得注意的是,即使在 10GigE 速度下,大型 NIC 提供商也不支持 PoE,这迫使相机供应商出售其专有的卡解决方案。
演示使用零拷贝的优化的基于 GVSP 的系统的零拷贝内存带宽使用情况。我们在该动画的第一部分中看到系统未优化,因此即使网卡中适当大小的缓冲区也会溢出。在动画的第二部分中,由于零拷贝和系统优化,数据自由可靠地流动。
GPU直接传输
零拷贝通过仅写入内存一次来最大限度地减少 CPU 和内存带宽利用率,但我们可以通过直接写入 GPU 来完全避免这种传输 - 这称为 GPU Direct。在许多性能应用程序中,将数据直接发送到 GPU 进行处理,然后将较低带宽结果传送到 CPU 和内存以供用户或系统交互是有意义的。
4 年多来,Emergent 一直在 Windows 和 Linux 上的各种应用程序中支持 GPU Direct 与 Nvidia GPU。Nvidia RTXA6000/5000/4000、Orin 和 Xavier 用于许多使用 Emergent 相机的应用中。
不幸的是,对于 RDMA 用户来说,Nvidia / Mellanox 仅允许 Windows 上的 GPU Direct 来选择 Emergent 等合作伙伴,并且 80% 的机器视觉应用程序继续部署在该操作系统上。然而,Linux 仍然是 RDMA 和 GPU Direct 的一个选择。
演示使用 GPU Direct 的零传输过程,该过程完全绕过内存,仅利用 CPU 的 PCIe 端点,实现 0% 内存和 0% CPU 利用率。
FPGA
零拷贝很棒。GPU Direct 对此进行了很大改进。但如果我们在一张卡上接收和处理来自摄像机的数据,那将是最终的成就。在这种情况下,CPU、内存和所有服务器资源根本没有被使用。Emergent 为此目的支持 AMD/Xilinx Alveo 卡,并且有多种利用该技术的性能应用程序。Emergent 还与 Nvidia 密切合作,提供 Bluefield NIC 支持。将 Bluefield 视为 Nvidia NIC 与 Nvidia GPU 的合并。在这两种情况下,计算机都可以是非常低端的 PC,主要为所选卡供电。
这个简短的动画展示了 FPGA 卡的流程,它完全绕过内存和 CPU,实现 0% 内存和 0% CPU 利用率。
采用 10GigEVision 及更高版本
以下是采用 GigEVision 产品的快速快照,速度范围从 10GigE 高达 100GigE. Emergent 展示了如何实现顶级性能,并开辟了许多市场,包括使用此类技术的机器视觉。一些公司刚刚开始利用我们的努力来发布 25G 和更高速度的产品,但距离发布经批准的高性能产品还有很长的路要走。
图 Emergent Vision Technologies 是第一家基于 10GigE、25GigE、50GigE 和 100GigE 接口的相机供应商。