3. 配置和转换的查找

图中 描述了配置查找和转换查找所涉及的相关概念。

正如3.3.2中所描述的,传入的事务首先受配置查找的约束,而SMMU决定怎样开始进行事务的转换。这涉及到找到合适的STE,如果有必要也需要CD。

配置的查找不依赖于输入的地址,它取决于:

  1. SMMU全局寄存器的配置;
  2. 传入事务的StreamID;
  3. 传入事务的SubstreamID(如果有应用)

配置查找的结果是找到转换的stream或substream相关的配置,包括:

  1. stage1 转换表的基指针,ASID,以及用于修改的转换表解析或walk的属性(比如转换粒度);
  2. Stage2转换表的基指针,VMID,以及用于修改的转换表解析或walk的属性;
  3. stream相关的属性,如stream相关的streamworld(异常级别,转换区域)。

转换查找过程逻辑上与PE侧内存地址转换系统工作一样。输出给系统的是物理地址,它取决于:

  1. 输入地址;
  2. StreamWorld(安全状态和异常级别),ASID和VMID(由前一级来提供)

上图呈现在转换查找中被用到的TLB。ARM希望SMMU使用TLB来缓存转换而不是对每个事务都进行TTW,但不是强制的。

NOTE:为了清楚起见,图3.7没有呈现错误上报路径或从stage2转换获取CD(这也需要访问TLB或TTW)。实现可以选择上述一些步骤的flatten或组合,但需要保持相同行为。

缓存的事务与标明转换区域的streamworld相关联。Streamworld相当于PE中的异常级别。

事务的streamworld是由插入转换的配置决定的。缓存的转换的streamworld由STE的安全状态决定,STE.Config域/STE.STEW域/SMMU_CR2.E2H或SMMU_S_CR2.E2H配置。可以查看章节 5.2 stream table entry中的STE.STRW域。

除了插入到TLB外,Streamworld影响TLB的查找,TLB无效化的不同类型的范围。SMMU的实现不要求区分EL2和EL2-E2H的缓存转换。

对于TLB无效化行为,查看章节3.17 TLB tagging, VMIDs, ASIDs and participation in broadcast TLB maintenance。

每个转换与以下streamworld相关:

NS-EL1 在PE侧,等同于非安全的EL1

NS-EL2 等同于非安全的EL2(当E2H没有使用时,不带ASID)

NS-EL2-E2H 等同于非安全的EL2(当E2H使用时,带ASID)

  1. EL2 等同于非安全的EL2((当E2H没有使用时,不带ASID)
  2. EL2-E2H 等同于安全的EL2(当E2H使用时,带ASID)

Secure 等同于以下其一:1. 当运行在AArch32 EL3时,单个转换区域被安全EL1和安全EL3使用;2. 当运行在AArch64 EL3时,安全EL1;区域要求AISD,若支持安全stage2,需要VMID.

EL3 等同于AArch64 EL1和EL3

NOTE:在SMMU中Streamworld能够区分不同的转换区域,不同的转换区域与在不同异常级别的不同软件相关。比如,在安全EL3下对地址0X1000的转换与在非安全EL2下对地址0x1000的转化是不同的。通常,ARM期望为stream配置的streamworld,能够匹配软件控制stream或device的异常级别。

术语“any-EL2”用来描述NS-EL2和S-EL2的共同行为。术语“any-EL2-E2H”用来描述NS-EL2-E2H和S-EL2-E2H的共同行为。

在ARMV8-A 的MMU也同样,若定义了独一无二的输入参数{streamworld, VMID,ASID,Address},那么转换也是唯一的。

比如,下列是唯一的且可以在转换缓存中存在:

  1. 带相同的地址,但不同的ASID的条目;
  2. 带相同的地址和ASID,但不同的VMID;
  3. 带相同的地址和ASID,但不同的streamworld;

架构上,由streamID和substreamID来区分,转换时不唯一的。这会引起两个结果?:

  1. 一组事务的输入参数{streamID, substreamID}的转换时不唯一的。两个stream可以被配置为相同的转换配置,从配置查找中生成的ASID/VMID可以区分一组共享的转换缓存条目;
  2. 多个streamID/substreamID配置可能导致相同的ASID/VMID/streamworld配置,这时它必须维护能够影响TLB查找的相同配置。比如,两个stream,都配置为stage1,NS-EL1且AISD=3,这两stream必须使用相同转换表基地址和转换粒度。

在本文档中,术语TLB用来表示转换缓存的概念,由streamworld/VMID/ASID/VA来标识。

SMMU缓存维护命令分为两组:

  1. 配置缓存的维护,依赖于streamID和substreamID;
  2. 转换缓存的维护,依赖于地址/ASID/VMID/streamworld;

第二组命令直接匹配可能在PE侧有效的广播TLB维护操作。

SMMU架构手册之数据结构和转换流程(3)相关推荐

  1. SMMU架构手册之数据结构和转换流程(1)

    SMMU使用内存中一组数据结构来放置转换数据.寄存器指向初始根结构STE的基地址.STE包含stage2转换表基地址指针,同时也指向stage1的配置结构,该配置结构包含转换表基指针.CD表示stag ...

  2. SMMU架构手册之数据结构和转换流程(2)

    STE包含每个stream的配置: 是否使能来之设备的流量: 是否是stage1转换: 是否是stage2转换 哪个数据结构定位到stage1的转换表 若使用stage1,STE使用域STE.S1Co ...

  3. SMMU架构手册之数据结构和转换流程(4)

    4 事务的属性:incoming,两阶段转换和overrides 除了地址,size和读写属性,传入的事务还可能带有其他属性,如访问类型(例如对于设备,WB-cached普通内存),共性性(如oute ...

  4. SMMU架构手册之HTTU(译)

    HTTU(Hardware Translation Table Udate)即硬件更新转换表. SMMU可以支持硬件更新转换表的AF和dirty状态,该功能可选. 一些PE可能支持HTTU(Hardw ...

  5. SMMU架构手册之Address Size(2)

    1. 输入Address Size和虚拟Address Size 架构上SMMU输入地址size为64bit.如果client设备输出一个小于64bit,或在client设备和SMMU输入之间的中间s ...

  6. SMMU架构手册之中断和通知

    event被记录到event队列,PRI请求和全局error有相关中断来允许异步通知给PE. 实现可能支持MSI中断,该中断以32位数据写一个配置值到配置寄存器中,在GICv3系统中,为GITS_TR ...

  7. SMMU架构手册之stream编号(译)

    每个即将到来的事务有地址.size和属性如READ/WRITE,安全/非安全,共享性,CACHE一致性.若超过一个client device连接到SMMU,这需要使用StreamID来区分不同的来源. ...

  8. SMMU架构手册之Address Size(1)

    在SMMU中需要考虑三种地址size概念,从系统来的输入地址size,中间地址size(IAS),以及输出地址size(OAS). 1. SMMU输入地址size为64bit NOTE: 可以查看章节 ...

  9. 【FFmpeg】使用 FFmpeg 处理音视频格式转换流程 ( 解复用 | 解码 | 帧处理 | 编码 | 复用 )

    FFmpeg 系列文章目录 [FFmpeg]Windows 搭建 FFmpeg 命令行运行环境 [FFmpeg]FFmpeg 相关术语简介 [FFmpeg]FFmpeg 相关术语简介 二 [FFmpe ...

最新文章

  1. java 方法大全_java中的方法大全
  2. centos6.5 tar安装mysql_centos6.6安装mysql5.7.9tar包
  3. android压缩图片质量,Android 图片质量压缩有关问题
  4. Docker 修改容器名称
  5. Volcano:在离线作业混部管理平台,实现智能资源管理和作业调度
  6. Java中的break Label 和continue Label
  7. Qt之指针与float--setNum使用
  8. 设计模式-行为型软件设计模式(四)
  9. 计算机容量单位换算题,计算机储存容量计算单位换算
  10. 绘制流程图的基本规则
  11. 《新唐书·李白传》原文及翻译
  12. 维护最短路径条数和途径点的权值累加
  13. 标准焦距;焦距与景深的关系
  14. 关闭自动降频 linux,iPhone如何关闭降频?iPhone手动关闭降频方法[多图]
  15. ROS树莓派与电脑的主从机配置
  16. Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践
  17. 桌面总是提示windows没有软盘的提示框,下面的具体内容是红点白叉的错误标识
  18. Linux -- vim编辑器使用教程
  19. Spring框架总结【无比详细】
  20. Linux 防火墙安装与配置

热门文章

  1. .Net验证18位身份证格式
  2. 谈谈在电脑120的这些日子
  3. pmp-公司组织结构类型
  4. 700套dedecms5.7织梦dede模板企业网站模板淘客模板
  5. 详解RMQ-ST算法 ST模板
  6. 3GPP USIM milenage算法code
  7. 一文掌握tcp服务器epoll的多种实现
  8. 字符串内排序-C语言
  9. linux查找所有路径,linux – 如何在* nix上查找/ grep目录名与“x”匹配而不是“y”的所有路径?...
  10. 项目管理学习总结(1)——项目管理最佳实践入门