PCIe ATS介绍

PCIe ATS(Address Translation Services)旨在通过在设备和根复合体(Root Complex, RC)之间建立请求-完成协议,提高地址转换的性能。ATS缓存(ATC)在设备端缓解TA资源压力,减少对系统翻译缓存大小的依赖。ATS请求可以在多个事务类(TC)上并发,完成翻译后,设备可以发送预翻译请求以优化访问延迟。ATS还涉及无效化协议,确保TA和ATC之间的地址转换一致性。ATS服务包括翻译请求和完成、页请求接口扩展等功能,支持进程地址空间ID(PASID),优化虚拟化环境下的设备访问。" 96857644,6934982,CUDA-Docker配置与深度学习框架安装,"['Docker', 'CUDA', '深度学习', '框架安装']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ATS Architectural Overview

DMA access time can be significantly lengthened due to the time required to resolve the actual physical address.

主机侧使用IOMMU完成设备地址到物理memory地址的转换,以及设备访问权限的检查。但如果所有PCIe设备都在进行DMA操作,则TA(Translation Agent)和ATPT(Address Translation and Protection Table)则会成为瓶颈,从而影响系统的latency。

To mitigate these impacts, designs often include address translation caches in the entity that performs the address translation. In a CPU, the address translation cache is most commonly referred to as a translation look-aside buffer (TLB). For an I/O TA, the term address translation cache or ATC is used to differentiate it from the translation cache used by the CPU.

为了解决地址转换性能问题,设计者通常会实现一个地址转换cache,在CPU侧通常称为translation look-aside buffer (TLB);对于IO侧,则称为address translation cache or ATC。

While there are some similarities between TLB and ATC, there are important differences. A TLB serves the needs of a CPU that is nominally running one thread at a time. The ATC, however, is generally processing requests from multiple I/O Functions, each of which can be considered a separate thread

与TLB不同的是,ATC通常处理的是多线程的请求。

这一区别使得主机侧的ATC很难针对系统的IO Function数目来确定cache的大小。

. The benefits of having an ATC within a Device include: • Ability to alleviate TA resource pressure by distributing address translation caching responsibility (reduced probability of “thrashing” within the TA) • Enable ATC Devices to have less performance dependency on a system’s ATC size • Potential to ensure optimal access latency by sending pretranslated requests to central complex

设备侧ATC中存放有TA和ATPT的内容,从而降低设备性能对系统cache大小的依赖。

There are a number of considerations a Function or software can use in making such a determination; for example: • Memory address ranges that will be frequently accessed over an extended period of time or whose associated buffer content is subject to a significant update rate • Memory address ranges, such as work and completion queue structures, data buffers for low-latency communications, graphics frame buffers, host memory that is used to cache Function-specific content, and so forth

针对设备Funcion访问某一个需要被频繁刷新的地址,或者对latency特别敏感的访问,ATC能显著提高软件性能。

Address Translation Services (ATS) Overview

ATS uses a request-completion protocol between a Device and a Root Complex (RC) to provide translation services.

  1. ATS Request的路由规则和序的规则同Non-Posted Memory Read
  2. ATS Request可以在1个或多个TC上outstanding地发送

TA收到ATS Translation Request之后

  1. 检查该Function是否开启ATS能力
  2. 检查该Function是否有权限访问该段地址
  3. 检查是否可以给该Function提供页表
    1. 页表请求是否合规
      1. Page size必须为2的幂次方,并且地址需要对齐到page size
      2. 最小的page size为4096 bytes
    2. 为了提供系统资源的利用效率,该Function必须被告知minimum translation或invalidate size,并且该Fucntion需要支持该size。最小的minimum translation size必须为4096 bytes
  4. TA告诉RC请求的结果是成功还是失败,RC产生ATS Translation Completion通过RP返回给Device Function
    1. RC针对1条ATS Translation Request至少返回1条ATS Translation Completion
      1. A successful translation can result in one or two ATS Translation Completion TLPs per request.
      2. An RC may pipeline multiple ATS Translation Completions,并且多条ATS Translation Completion的序是任意的
      3. RC需要按照与ATS Translation Request相同的TC返回Completion
    2. 如果Reques
### PCIe ATS(Address Translation Services)的实现与使用 PCIe ATS 是一种硬件加速技术,用于支持 I/O 虚拟化环境中的高效地址转换。它允许设备直接参与虚拟地址到物理地址的映射过程,从而减少软件层面对地址转换的干预,提高性能。以下是关于 PCIe ATS 的详细信息: #### 1. ATS 的基本原理 ATS 的核心功能是将设备生成的虚拟地址转换为实际的物理地址。这一过程通过设备内部维护的页表缓存(Page Table Cache)来完成。当设备接收到一个虚拟地址时,它会查询页表缓存以找到对应的物理地址[^2]。 如果缓存中没有命中,则设备会向主机发送一个翻译请求(Translation Request),主机随后返回正确的映射关系并将其存储在设备的页表缓存中以供后续使用[^3]。 #### 2. ATS 的实现方式 ATS 的实现依赖于 PCIe 设备和主机之间的协作。以下是其实现的关键要素: - **页表缓存管理**:设备需要维护一个页表缓存,用于存储最近访问过的虚拟地址到物理地址的映射关系。缓存大小有限,因此需要支持替换策略以确保高效利用[^4]。 - **无效化机制**:当虚拟机的内存布局发生变化时(例如页面被重新分配或释放),主机需要通知设备使相应的缓存条目失效。这通常通过发送无效化消息(Invalidate Message)来完成[^5]。 - **硬件支持**:设备必须支持 ATS 功能,并且能够处理翻译请求和无效化消息。此外,设备还需要支持 PCIe 的 Extended Capability Register Block,这是配置 ATS 参数的地方[^6]。 #### 3. ATS 的使用场景 ATS 主要用于 I/O 虚拟化环境,例如虚拟机中的 SR-IOV(Single Root I/O Virtualization)。在这种场景下,多个虚拟机可能共享同一个物理设备,而 ATS 可以确保每个虚拟机的内存访问都被正确地映射到其专属的物理地址空间[^7]。 以下是一个简单的代码示例,展示如何启用 ATS 功能(假设使用 Linux 环境): ```bash # 启用 ATS 功能 echo 1 > /sys/bus/pci/devices/0000:01:00.0/ats ``` 上述命令通过写入 `1` 到设备的 `ats` 文件来启用 ATS 功能。需要注意的是,只有支持 ATS 的设备才具备该文件[^8]。 #### 4. ATS 的优势 - **降低 CPU 开销**:通过将地址转换任务卸载到设备上,减少了主机 CPU 的负担。 - **提高带宽利用率**:由于避免了频繁的软件干预,数据传输可以更高效地进行。 - **增强安全性**:设备只能访问分配给它的物理地址范围,从而防止越权访问[^9]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值