主机Processor和Accelerator之间的可扩展I/O

应用程序和加速器之间高效协调,可有助于优化数据处理。

1. 介绍

以数据为中心的计算的新兴时代迫使人们更加关注加速工作负载和降低数据中心的Capex。用于这种加速的硬件方法包括CPU内核中的专用指令集架构(ISA)扩展可编程异构元素(如GPU和FPGA),以及用于数据移动和转换卸载加速引擎。

虽然主机 CPU 的指令集架构中引入专用指令集加速,但基于卸载的加速是从传统的 I/O 控制器设备驱动程序模型有机地演变而来的,没有一致的构造和功能。本文概述了即将推出的英特尔®至强®处理器上引入的各种加速器接口技术。这些技术旨在减少卸载开销最大限度地减少端到端延迟简化内存模型以及适用于通过虚拟机和/或容器部署工作负载的可扩展虚拟化功能。

2. 当前情况

从传统 I/O 控制器设计演变而来的加速硬件和软件卸载,面临着许多挑战。其中包括工作提交的开销内存管理复杂性工作完成同步开销以及多应用程序之间的共享加速器

2.1 工作提交开销

传统上,当APP将工作提交给加速器时,请求将路由到内核模式设备驱动程序,该驱动程序抽象化基础加速器设备的软件和硬件之间的接口。与内核 I/O 堆栈关联的延迟和开销可能会导致高性能流式处理加速器出现瓶颈。

2.2 内存管理复杂性开销

传统的加速器设计需要固定存储器才能在应用程序和硬件加速器之间共享数据。此外,加速器的内存视图(通过直接内存访问访问)与应用程序的视图有很大不同,通常需要底层软件堆栈通过昂贵的内存固定和取消固定以及 DMA 映射和取消映射操作来桥接这两个视图。

2.3 工作完成同步开销

加速器的现有软件堆栈依赖于中断驱动的处理完成状态寄存器的忙轮询内存中的描述符。操作系统内核中的中断处理体系结构通过上下文切换延迟处理带来了开销,这可能会降低系统性能。另一方面,繁忙的轮询会消耗更多功率,减少其他应用程序可用的 CPU 周期数,并可能对缩放产生负面影响。

2.4 加速器可共享性

跨多个并发应用程序、容器和虚拟机高效、安全地共享加速器是部署数据中心的基本要求。 硬件辅助 I/O 虚拟化(如 SR-IOV)通过根据Guest软件的要求从访问加速器的过程中消除VMM来加速 I/O 虚拟化。

但是,此类架构往往是硬件密集型的,不太适合两种设计:

  • 资源受限的片上系统 (SoC) 集成加速器设计;
  • 需要比基于虚拟机的用法中当前可用的更具可伸缩性的用例(例如,在数千个并发容器之间共享加速器的用法);

总之,加速器的系统架构必须满足以下要求:

  • 卸载效率 — 低开销、用户模式、功能卸载(可扩展和低延迟的工作调度、轻量级同步、事件信令等)
  • 内存模型 — 应用程序和卸载到加速器的功能的统一内存视图
  • 虚拟化 — 跨应用程序、容器和虚拟机高效共享加速器
  • 一致性 — 跨所有 IP 的一致硬件和软件接口以及 SoC 接口架构

3. 加速器接口技术

本节总结了即将推出的英特尔®至强®处理器上加速器接口技术的功能。

这些功能可满足上述要求,包括以下内容:

  • 用于优化卸载的工作调度指令(MOVDIRI、MOVDIR64B、ENQCMD/S)
  • 用户模式等待指令(UMONITOR、UMWAIT、TPAUSE)可实现高效同步
  • 低延迟用户中断
  • 共享虚拟内存
  • 可扩展的 I/O 虚拟化

3.1 卸载效率和可扩展性的增强功能

  • MOVDIRI
    使用直接存储语义实现高吞吐量(4B 或 8B)门铃写入,以使流式卸载模型受益,其中小工作单元以高速率流式传输到加速器。

  • MOVDIR64B
    支持对加速器工作队列进行 64 字节原子写入,以有利于低延迟卸载模型,其中加速器设备经过高度优化,能够以最小的延迟完成请求的操作。64 字节有效负载使加速器能够避免在获取工作描述符时出现 DMA 读取延迟,在某些情况下甚至提取实际数据(从而减少端到端延迟)。

  • ENQCMD/S
    支持从多个非协作软件实体(如应用程序、容器或虚拟机内的应用程序/容器)同时直接提交到加速器的工作队列(称为共享工作队列或 SWQ),如下图所示。将命令排队的说明(ENQCMD(排队命令)和 ENQCMDS(作为主管的排队命令))具有两个独特的功能:

    • 工作描述符包含一个进程地址空间标识符 (PASID),该标识符允许加速器基于每个描述符标识提交软件代理
    • 这些命令使用 PCIe* 可延迟内存写入 (DMWr) 请求来允许加速器执行或延迟传入的 DMWr 请求

ENQCMD/S 指令向软件返回“成功”或“重试”(延迟)指示。“成功”表示工作已被 SWQ 接受,而重试表示由于 SWQ 容量、QoS 或其他原因而未被接受。收到重试状态后,工作提交者可能会在以后重试。
在这里插入图片描述

  • UMONITOR/UMWAIT/TPAUSE
    在用户模式软件和卸载的任务之间启用低延迟同步。此外,允许处理器在等待加速器完成调度工作时进入依赖于实现的优化状态。优化状态可以是轻量级电源或性能优化状态,也可以是增强电源/性能优化状态。UMWAIT和TPAUSE指令允许软件在两种优化状态之间进行选择;它们还提供了一种机制来指定可选的超时值。TPAUSE 指令可以与事务同步扩展一起使用,以等待多个事件。这些指令允许超线程 (HT) 在同级线程高效等待事件时使用计算资源。

  • 用户中断
    启用轻量级机制,直接向用户模式软件发送信号。用户中断使事件无需任何内核干预即可传递到用户空间应用程序,并且内核代理可以使用它向用户空间应用程序发送通知,而不是使用操作系统信令机制。用户中断可减少高性能应用的端到端延迟、整体抖动和上下文切换开销。

3.2. 共享虚拟内存 (SVM)

SVM 架构通过以下方式实现来自 CPU 和加速器的统一内存视图:

  • 允许加速器使用与 CPU 相同的虚拟地址
  • 使加速器能够访问未固定内存并从 I/O 页错误中恢复

即将推出的英特尔至强处理器支持 SVM 功能,例如进程地址空间标识符 (PASID)、地址转换服务 (ATS) 和页面请求服务 (PRS)。系统软件分配一个 PASID 来识别提交工作的每个客户端的地址空间,并且英特尔®虚拟化技术(英特尔® VT)用于定向 I/O(英特尔® VT-d)被扩展为与英特尔 VT-d 共享客户端的 CPU 页表,以执行 PASID 粒度 DMA 重新映射,并帮助加速器从 I/O 页面故障中恢复。

加速器使用 SVM 功能直接处理来自应用程序地址空间的数据。收到工作描述符后,加速器会查找设备转换后备缓冲区 (DevTLB) 以获取 DMA 地址转换;如果地址转换已被缓存(DevTLB 命中方案),则 DMA 请求将与从 DevTLB 获取的已转换主机物理地址 (HPA) 一起发出。在 DevTLB 未命中时,加速器向 IOMMU 发出 ATS 地址转换请求,IOMMU 查阅其地址转换表以获取转换。成功转换后,返回的地址转换信息将缓存在 DevTLB 中,并发出 DMA 请求。在不成功的转换(即 I/O 页面错误)上,加速器可以向系统软件发出 PRS 页面请求,以请求对故障页面进行“页面输入”(如 CPU 页面错误处理)。收到成功的页面响应后,加速器会在主机上成功处理故障后重新发出地址转换请求以获取转换。

系统软件可以通过修整进程的工作集、处理对 VMM 内存的过度提交、拆除应用程序或 VM 等来更改应用程序/VM 页表。如果发生这种情况,系统软件会告诉加速器使与此更改关联的 DevTLB 条目无效,然后同步响应。

在这里插入图片描述

3.3 英特尔®可扩展 I/O 虚拟化(英特尔®可扩展 IOV)

英特尔可扩展 IOV 是一种全新的硬件辅助 I/O 虚拟化方法。它支持跨隔离域(应用程序、VM、容器等)对 I/O 设备进行细粒度、灵活、高性能的共享,同时降低端点硬件设备此类共享的复杂性。它还允许将细粒度、已置备的设备资源(例如,工作队列、队列对或上下文)独立地分配给客户机域。对加速器的软件访问分为“直接路径”或“截获路径”。直接路径访问(例如,工作提交或工作完成处理)直接映射到加速器资源以提高性能。拦截的路径访问(如配置操作)由虚拟设备组合模块 (VDCM) 模拟,以实现更大的灵活性。英特尔可扩展 IOV 还扩展了英特尔® VT-d,以支持 PASID 粒度 DMA 重新映射,以实现分配给不同域的设备资源之间的细粒度隔离。
在这里插入图片描述
英特尔可扩展 IOV 提供具有不同地址域和使用不同抽象的设备资源的灵活共享,例如应用程序进程的系统调用或虚拟机的虚拟设备接口。它还支持将 VDEV 动态映射到设备资源,从而允许 VMM 过度预配设备资源。更广泛地说,英特尔可扩展 IOV 使 VMM 能够通过使用 VDCM 虚拟化 VDEV 的功能并呈现兼容的 VDEV 功能,使 VMM 能够保持数据中心的代际兼容性,而不管不同代的物理 I/O 设备如何。这可确保可以将具有 VDEV 驱动程序的给定来宾操作系统映像部署或迁移到任何物理机。
在这里插入图片描述

4. 加速器接口技术与英特尔®数据流加速器

英特尔®数据流加速器(英特尔® DSA)是一款用于复制和转换数据的高性能加速器,已集成到即将推出的英特尔至强处理器中。英特尔 DSA 的目的是优化流数据的移动和转换,这在专为高性能存储、网络、持久内存和各种数据处理应用而设计的应用中很常见。

英特尔 DSA 利用前面所述的加速器接口技术来实现高效且可扩展的加速器卸载,同时降低与构建此类可扩展加速器硬件相关的成本和复杂性。

英特尔 DSA 支持设备托管的专用工作队列 (DWQ),允许单个客户端拥有或控制其工作队列的流/占用,以及设备托管的共享工作队列 (SWQ),可实现可扩展的共享。如下图所示,软件可以将 DWQ 分配给单个客户端,同时将 SWQ 映射到一个或多个客户端。软件使用 MOVDIR64B 指令向 DWQ 提交 64 字节工作描述符,使用 ENQCMD/S 指令向 SWQ 提交 64 字节工作描述符。工作描述符还可以请求完成中断和/或完成写入,从而通过 UMONITOR/UMWAIT 指令实现高效同步。

英特尔 DSA 支持 SVM 和可恢复的 I/O 页面故障,支持简化的编程模型,并使其在应用、操作系统和虚拟机管理程序软件中无缝采用。支持可扩展的 I/O 虚拟化功能,使英特尔 DSA 能够在虚拟机或基于容器的部署中卸载,并使实时迁移可行,同时保持将英特尔 DSA 虚拟设备分配给虚拟机或容器。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值