PCIe SR-IOV:为什么需要SR-IOV

2024-03-27 22:50
文章标签 需要 pcie sr iov

本文主要是介绍PCIe SR-IOV:为什么需要SR-IOV,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PCIe SR-IOV:为什么需要SR-IOV

目录

  • PCIe SR-IOV:为什么需要SR-IOV
    • 1. SR-IOV的最终目标
    • 2 发展历程
      • 2.1 原始状态v1.0
      • 2.2 进化版v2.0
      • 2.3 进化版v3.0 —— SR-IOV

1. SR-IOV的最终目标

终极目标:提高硬件资源利用率。

2 发展历程

2.1 原始状态v1.0

在这里插入图片描述
上图展示了在没有引入任何虚拟化技术时,一个PCIe系统的状态。它主要有以下组件构成:

  • 处理器:可以是通用处理器、嵌入式处理器、专用处理器等等。
  • 内存
  • PCIe Root Complex(RC):一个平台系统下,可以包含一个或多个RC。
  • PCIe Root Port(RP):每个RC可以支持一个或多个RP。每个RP代表了一个独立的层次结构。SR-IOV中的SR(single root)就是指只有一个RP的场景。
  • PCIe Switch:用于PCIe扩展,即允许连接更多的PCIe设备或PCIe Switch。
  • PCIe Device:PCIe设备终端,可以是网卡、存储等等。
  • System Image:操作系统。

既然是原始状态,那么也就意味着当前系统状态的硬件资源利用率存在可优化的空间,因此衍生出了进化版v2.0

2.2 进化版v2.0

在这里插入图片描述

为了在不改变硬件的情况下提升资源利用率,在硬件资源和System Image之间增加一个虚拟化中间层(Virtualization Intermediary,简称VI)。与此同时,System Image的数量也增加了(此时的SI可以看做是运行在服务器上的多个虚拟机)。

这种系统架构下,VI负责管理所有硬件并将硬件虚拟化之后提供给SI。每个SI可以使用的硬件资源可以根据负载或者用户需求进行调整。这种架构可以应对许多使用场景,但是由于每一笔I/O操作都需要VI层的参与,导致性能明显下降,因此在I/O性能要求较高的场景下很难满足需求。

基于当前架构的局限性,PCI-SIG开发出了SR-IOV技术。

2.3 进化版v3.0 —— SR-IOV

在这里插入图片描述
SR-IOV的优点:

  • 主要数据传输阶段(DMA、内存空间访问、中断处理等)不再需要VI的参与,明显提升了性能。
  • 通过SR-PCIM(Single Root PCI Manager)对SR-IOV资源进行标准化配置和管理。
  • 只需要比较少的硬件投入,就可以在一个设备中添加大量的I/O Function支持。
  • 能够将SR-IOV与其他I/O虚拟化技术集成在一起,从而创建健壮、完整的I/O虚拟化解决方案。相关的虚拟化技术包括:Address Translation Services (ATS)、Address Translation and Protection Table (ATPT)技术、interrupt remapping technologies。

SR-IOV架构中新增的组件:

  • Single Root PCI Manager(SR-PCIM)

软件实现。负责SR-IOV capability的配置、PF和VF的管理、错误事件的处理、设备的统筹管理(例如电源管理、热插拔等)。

  • Optional Translation Agent(TA)

硬件实现或者软硬件联合实现。负责将PCIe事务中的地址转化成实际的物理地址。TA中可能包含Address Translation Cache,用于加速地址转换表的访问。TA可能支持Address Translation Services(ATS),ATS能够使PCIe Function在开启DMA之前预先获取目标内存的地址转换关系。如果PCIe事务表明他们包含了转换之后的地址,那么就可以省略address translation的查表过程,所以,ATS能提升性能。

  • Optional Address Translation and Protection Table(ATPT)

ATPT就是存放地址转换关系的表,供TA访问。

  • Optional Address Translation Cache(ATC)

本质就是Cache,能够加速Address Translation的查表效率。

  • Optional Access Control Services(ACS)

ACS能够决定一个TLP能够routed normally,blocked或者redirected。在SR-IOV系统中,还能防止属于VI或者不同SI的设备Function之间直接通信。(这个不太理解,以后再细研究)

  • Physical Function(PF)

PF就是支持SR-IOV capability,并且能被SR-PCIM、VI或者SI访问的PCIe Function。

  • Virtual Function(VF)

VF是一个轻量级的PCIe Function,能够被SI直接访问。
VF中与主要数据传输有关的资源可以被VI直接访问。配置资源(Configuration resources)应该只允许被受信任的软件访问,例如VI,SR-PCIM。

参考资料:《Single Root I/O Virtualization and Sharing Specification Revision 1.1》

这篇关于PCIe SR-IOV:为什么需要SR-IOV的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/853657

相关文章

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

如何编写Linux PCIe设备驱动器 之二

如何编写Linux PCIe设备驱动器 之二 功能(capability)集功能(capability)APIs通过pci_bus_read_config完成功能存取功能APIs参数pos常量值PCI功能结构 PCI功能IDMSI功能电源功率管理功能 功能(capability)集 功能(capability)APIs int pcie_capability_read_wo

Vue2电商项目(二) Home模块的开发;(还需要补充js节流和防抖的回顾链接)

文章目录 一、Home模块拆分1. 三级联动组件TypeNav2. 其余组件 二、发送请求的准备工作1. axios的二次封装2. 统一管理接口API----跨域3. nprogress进度条 三、 vuex模块开发四、TypeNav三级联动组件开发1. 动态展示三级联动数据2. 三级联动 动态背景(1)、方式一:CSS样式(2)、方式二:JS 3. 控制二三级数据隐藏与显示--绑定styl

使用WebP解决网站加载速度问题,这些细节你需要了解

说到网页的图片格式,大家最常想到的可能是JPEG、PNG,毕竟这些老牌格式陪伴我们这么多年。然而,近几年,有一个格式悄悄崭露头角,那就是WebP。很多人可能听说过,但到底它好在哪?你的网站或者项目是不是也应该用WebP呢?别着急,今天咱们就来好好聊聊WebP这个图片格式的前世今生,以及它值不值得你花时间去用。 为什么会有WebP? 你有没有遇到过这样的情况?网页加载特别慢,尤其是那

插件maven-search:Maven导入依赖时,使用插件maven-search拷贝需要的依赖的GAV

然后粘贴: <dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version> </dependency>

js基础需要注意的点

1 js中单引号和双引号都能创建字符串,但是html的元素属性规定必须用双引号,所以js优先用单引号定义字符串。

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越

xml数据作为表单参数在网络传递也需要用urlencode处理

xml数据作为表单参数在网络传递也需要用urlencode处理。才能确保数据被正确的传递和解析。需要加深对数据在web上传递的理解。

url参数中带有号,需要用先把url做个解析,使其方便在网络上传递

需求:提交异步通知地址给宝付的投标接口,发现投标成功后,异步通知地址没有被调用 排查:通过和宝付技术对接,发现是203,地址重定向错误。深入排查,发现异步通知返回的地址中&号之后的参数宝付没有收到 结论:表单提交的参数中的异步通知地址中的&号没有做urlencode()处理导致传递丢失参数。 地址参数中带有&号,java在做提交的时候,不能正确传递&,导致地址中&之后的内容丢失。故此需要ur