SMMUv3 (1)

一些词汇。

DVM: Distributed Virtual Memory,相互传递广播TLB维护操作的消息的协议;

RC: PCI-E的Root Complex,如下图:

Endpoint(EP): 一个PCIE功能,用于一个SMMU client节点设备的context

PASID: Process Address Space ID,一个PASID是一个Endpoint的本地ID,所以一个系统中一个PASID可能用很多遍,注意:PASID除了名字与PE的ASID有点靠近外,其实与ASID完全没关系。

ATS: PCIE提供给远端Endpoint TLB的Address Translation Service。

Split-stage ATS: 两阶段页表转化的SMMU提供的方式,ATS用1阶段页表转换,non-ATS用2阶段页表转换。

PRI:PCIE引入的Page Request Interface,是ATS的一个扩展项,是其允许Endpoint请求OS提供映射了页面的内存给DMA使用。

ATOS:SMMU用系统可访问的寄存器提供VA-IPA/PA转换;额外的,VATOS提供了次要的寄存器组,用于虚拟机直接使用,不过只能做VA-IPA转换。

TT:Translation table,就是页表,arm架构的。

TTD:Translation table discriptor,就是PTE。

HTTU:Hardware Translation Table Update,在访问或写入相关页面后,硬件自动更新相关页面的Access flag、Dirty state,就叫HTTU。

SSD:Secure StateDetermination,将client设备的一段数据流与Secure或Non-secure控制联系起来的方法,确定这段数据流的Secure或Non-secure设置。

STE:Stream table entry,流表条目。

L1STD:1级STE,用于两级流表。

CD:Context Descriptor,Context描述符。

L1CD:1级CD,用于两级CD表。

Client deivce:由SMMU控制访问系统内存行为能力的设备。

Bypass:一种设置,把一个阶段的页表转换不做任何地址转化,这种直通模式就是使用bypass;如果一个SMMU没有实现哪一阶段地址转换,那么这个阶段的地址转换就可以认为是Bypass了。

Stage N-only:一种对一段数据流的转换设置,两阶段转换只转换一个阶段,另一个Bypass掉,可以是设置成这样,也可以是SMMU被实现成这样

E2H:EL2 Host Mode,详见VHE的说明。

TR:Translation Request,用于在一个PCIE ATS的context中,请求SMMU或是其他实现来做请求中心节点做地址转换。

简述:

SMMU的行为与PE的MMU类似,在系统I/O设备的DMA请求发到系统之前进行地址转换。SMMU只为DMA工作。

对DMA的地址进行转换是为了隔离或快捷,为了将设备通讯与转换相关联,还要区分SMMU背后不同的设备,转换请求还需要除了地址、R/W、权限以外的额外属性,用来分辨一个流的属性;不同的流在逻辑上与不同的设备相关联,SMMU可以对不同的流实现不同的转换或检查,就算一个系统装置有一个client设备,SMMU的概念仍然不会变,只是会只有一个流。

一个系统中可能有很多个SMMU,一个SMMU可能为1个或多个设备做转换。

SMMU支持2阶段页表转换的方式与PE的MMU相似,1阶段VA->IPA,2阶段IPA->PA;1阶段转换主要是为了在一个VM内的DMA隔离,2阶段一般在支持虚拟化扩展的设备实现将DMA设备的虚拟化到VM内。

SMMUv1仅支持不多的context/流,通过寄存器设置,有限的可扩展性;SMMUv2把SMMUv1拓展到了ARMv8-A页表转换格式,更大的寻址空间,同样有限的context/流的支持。SMMUv1/v2映射一个数据流到基于寄存器的context内,这个context指示使用什么转换表、转换设置;同样也可能支持2阶段转换,而转换时的流会使用额外生成的ID来标志,还有一个次级ID来标志一个流或一组流的Security状态;基于寄存器的设置限制了context的数量,支持上千个context是不可能的,一个活着的数据流是可能在任意时间触发转换的,而能支持的context量其实就是同时活着的流的数量;比如说1000个连接了但没有数据出现的网卡,虽然此时没有数据出现,但是它的数据可能在任意时间出现,也就是DMA会在任意时间请求转换,所以就会占context,而且不能多设备分时使用SMMU,毕竟这是硬件中断级别的使用,切换SMMU的context足以让硬件里缓存耗尽,数据丢失了吧。

SMMUv3.0特性:

SMMUv3提供了支持PCIE Root Complexes的特性,并通过支持大量并行转换contex支持其他潜在大量I/O的系统。

1. 基于内存的配置结构,支持大量的流;

2. 具体实现可仅1阶段、仅2阶段或两阶段页表转换,从寄存器里可以查到具体实现,其他根据实现选配的参数也可以查到;

3. 最高16bit ASIDs

你可能感兴趣的:(SMMUv3 (1))