Introduction to PCIe Address Translation Services

本文来源: 

http://liujunming.top/2019/11/24/Introduction-to-PCIe-Address-Translation-Services/

本文将介绍下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

Introduction to PCIe Address Translation Services

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

Introduction to PCIe Address Translation Services

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

Introduction to PCIe Address Translation Services

当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

(END)

Linux阅码场原创精华文章汇总

更多精彩,尽在"Linux阅码场",扫描下方二维码关注

Introduction to PCIe Address Translation Services

别忘了点“在看”鼓励哦~