凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 3137737
  • 博文数量: 190
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 7172
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-23 18:56
个人简介

将晦涩难懂的技术讲的通俗易懂

文章分类

全部博文(190)

文章存档

2023年(2)

2022年(4)

2021年(12)

2020年(8)

2019年(18)

2018年(19)

2017年(9)

2016年(26)

2015年(18)

2014年(54)

2013年(20)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: linux

2023-05-14 17:11:07

iotlb和ats-凯发app官方网站

——lvyilong316

我们知道iommu的一个关键功能就是做dma remapping,类似cpummu功能,而类比cpu mmu为了加快地址转换引入了tlbiommu也也有类似技术,叫做iotlb

由于iotlb的特殊性(tlb只服务于cpu,并且同时只有设备访问。而iotlb则会有多个i/o设备同时访问)pci express{banned}最佳近有一个草案,叫做ats(address translation services)。主要思想就是为了加快转换,避免集中式的iotlb带来性能上的影响,在每个pci express设备中加入转换用的cache

ats的思想是:每个pci express设备都拥有自己的atc,这样就无需去查询iotlb,因而可以缓解iotlb的压力,提高访存性能。如下图所示。

 

这里需要说明的是taiommu的一部分,它主要负责iova的转换以及通过atpt来判断某个设备是否有权限access 某段内存;另外,从上图可以看到支持atc 功能的设备在拓扑结构上可分为三类:一类是直接链接到rc上,一类是直接链接到root port上,{banned}最佳后一类是通过switch链接到rp上。后两类拓扑结构如果pcie 设备要enable ats功能则root port必须要支持ats功能。

pcie deviceatc无法完成地址映射时,此刻就需要pcie device发送ats requesttata完成地址映射后,会将结果返还给pcie device,这样,pcie device中的atc就有地址映射项了。如下图

 

ta中对内存地址更改之后,会发送ats invalidate requestpcie devicedevice会取消该映射项,并将结果返还给ta如下图:

下面我们看一下如果支持ats需要哪些条件,软件侧的使能。atsenable是在intel iommu侧执行的,相关代码如下

点击(此处)折叠或打开

  1. if (ecap_dev_iotlb_support(iommu->ecap) &&
  2.         pci_ats_supported(pdev) && dmar_find_matched_atsr_unit(pdev))
  3.     info->ats_supported = 1;

即使能ats需要三个条件:

1.ecap_dev_iotlb_support(iommu->ecap)// 即判断iommu 硬件 ecapdt位是否为1

2. pci_ats_supported(pdev) // 判断pcie 设备有没有ats capability

3. dmar_find_matched_atsr_unit(pdev) //如果该pcie设备直接挂在rc上则返回true,如果该设备挂在rp上则判断rp是否支持ats

如果上面三个条件都为真时则表示这个设备是可以eanble ats的,然后在iommu_enable_dev_iotlb 函数里面会调用pci_enable_ats 在设备侧使能ats feature(ats control register 15位置1)

ats之于iommu就相当于tlb之于cpu,其起到的作用不言自明。但是目前支持ats的设备并不多,一方面是因为大部分业务场景下对这一块感知并不明显,那部分感知比较明显的比如hpc,机器学习这些业务主要依赖gpunv针对这些limit也早就做了优化比如gpudirect等;还有就是在设备上增加cache也是需要成本的,本来设备上的sram也没有多大,另外就是非虚拟化场景intel iommu也支持pt的方式从而避免了iova的转换的开销。

但是随着云原生和serverless的出现,可能就不一样了。比如一台128核的icelake(后面的spr256){banned}最佳多能启动512kata容器,按照每个容器一块磁盘一张网卡那么在dpu架构上也是需要1024块设备的,这种场景下对iommu侧的冲击就比较大了,此时ats的作用就比较明显了。

参考:

阅读(597) | 评论(0) | 转发(0) |
0

上一篇:从virtio看pcie设备实现

下一篇:没有了

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图