当前位置: 首页 > news >正文

浅析PCIe 6.0 ATS地址转换功能

在现代高性能计算和虚拟化系统中,地址转换(Address Translation)是一个至关重要的机制。随着 PCIe 设备(如 GPU、网卡、存储控制器)直接访问系统内存的能力增强,设备对虚拟内存的访问需求日益增长。

图片

为了提升性能并确保安全访问,Address Translation Services(ATS) 应运而生。

图片

ATS 是 PCIe 规范中的一项关键功能,允许设备(如 Endpoint)在访问内存时自行进行虚拟地址到物理地址的转换,而无需依赖 CPU 的 MMU(Memory Management Unit)或操作系统介入。这不仅提升了性能,也增强了设备的自主性和安全性。

图片

在早期的 PCIe 架构中,设备(如网卡或存储设备)只能通过 DMA(Direct Memory Access)访问物理地址。这意味着设备必须依赖主机(Host)为它分配物理地址,或者由操作系统进行地址映射。

图片

这种方式存在以下问题:

  • 性能瓶颈

    :每次地址转换都需要主机介入,导致延迟增加。

  • 虚拟化支持差

    :在虚拟化环境中,多个虚拟机共享同一个物理设备,传统的物理地址访问方式难以满足隔离和安全需求。

  • 资源浪费

    :需要为每个虚拟机预留连续的物理内存区域。

扩展阅读:

浅析CXL P2P DMA加速数据传输的原理

PCIe P2P DMA全景解读

深度剖析:DMA对PCIe数据传输性能的影响

《存储IO路径》专题:数据魔法师DMA

为了解决上述问题,PCIe 3.0 引入了 Address Translation Services(ATS)。ATS 允许设备在访问内存时,使用虚拟地址,并通过 IOMMU(Input/Output Memory Management Unit)进行地址转换。设备可以缓存转换结果(ATC,Address Translation Cache),从而减少频繁的转换请求,提高性能。

图片

ATS 的实现依赖于以下关键组件:

组件

描述

IOMMU

输入/输出内存管理单元,负责将设备的虚拟地址转换为物理地址。

MMU

CPU 的内存管理单元,负责将 CPU 的虚拟地址转换为物理地址。

Translation Agent (TA)

负责处理 ATS 转换请求的实体,可以是 IOMMU 或 MMU。

Address Translation Cache (ATC)

设备内部缓存地址转换结果的结构,类似于 CPU 的 TLB。

Address Translation Protection Table (ATPT)

存储地址转换信息的数据结构,由 TA 使用。

图片

设备发起转换请求(Translation Request): 设备(如 Endpoint)向 Root Complex(RC)发送 ATS Translation Request,请求将虚拟地址转换为物理地址。请求中包含虚拟地址、PASID(Process Address Space Identifier)、访问权限等信息。

图片

Root Complex 转发请求至 Translation A

http://www.lryc.cn/news/600218.html

相关文章:

  • LP-MSPM0G3507学习--11ADC之二双通道高速DMA采样
  • Sweet Home 3D:一款免费的室内装修辅助设计软件
  • cocos creator 3.8.6 websocke的一直报错WebSocket is not a constructor
  • 力扣面试150题--寻找旋转排序数组中的最小值
  • 关于数据库表id自增问题
  • 第5章 Excel公式与函数应用指南(1):公式和函数基础
  • deepseek本地部署,轻松实现编程自由
  • 【实操记录】docker hello world
  • 渗透高级-----测试复现(第三次作业)
  • OpenCV摄像头打开及预览
  • C++ Qt6 CMake qml文件启动方式说明
  • 第三篇:VAE架构详解与PyTorch实现:从零构建AI的“视觉压缩引擎”
  • 我从农村来到了大城市
  • 虚拟直线阈值告警人员计数算法暑期应用
  • 【LeetCode刷题指南】--有效的括号
  • TDengine 转化函数 TO_UNIXTIMESTAMP 用户手册
  • 优秀案例:基于python django的智能家居销售数据采集和分析系统设计与实现,使用混合推荐算法和LSTM算法情感分析
  • Cacti命令执行漏洞分析(CVE-2022-46169)
  • 7.25总结
  • ZYNQ芯片,SPI驱动开发自学全解析个人笔记【FPGA】【赛灵思】
  • 开疆智能ModbusTCP转Profient网关连接西门子PLC与川崎机器人配置案例
  • 【PyTorch】图像多分类项目部署
  • 数组相关学习
  • Pandas 处理缺失数据
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(10):ような复习
  • Windows-WSL-Docker端口开放
  • 在 Ansys CFX Pre 中配置 RGP 表的分步指南
  • Haprxy七层代理
  • iOS —— 天气预报仿写总结
  • Zookeeper 3.6.3【详细技术讲解】整