本文将介绍下PCIe中的 ATS。

  • Address Translation Services(ATS)
  • Address Translation Cache (ATC)
  • Translation Agent(TA)

1. 背景

读者需要建立iommu的概念。其中,iotlb是iommu中的tlb映射项。

2. motivation

iotlb会被多个I/O设备同时访问,因此,这种集中式的iotlb会影响系统的性能。为此,ATS应运而生。

ATS defines a protocol between PCIe Device and Root Complex for faster DMA remapping.

ATS的思想是:每个PCI Express设备都拥有自己的ATC,这样就无需去查询iotlb,因而可以缓解iotlb的压力,提高访存性能。

3. detail


详细描述请参见Address Translation Services, Revision 1.1p11 to p12。


当PCIe Device的ATC无法完成地址映射时,此刻就需要PCIe Device发送ATS Request给TA。TA完成地址映射后,会将结果返还给PCIe Device,这样,PCIe Device中的ATC就有地址映射项了。


当TA中对内存地址更改之后,会发送ATS Invalidate Request给PCIe Device,Device会取消该映射项,并将结果返还给TA。


参考资料:

  1. Address Translation Services, Revision 1.1
  2. IOMMU简介
  3. Rethinking the I/O Memory Management Unit