SMMU VA->PA的转换流程介绍

描述

cache技术

一笔输入的transaction会经过以下几个逻辑步骤:

1. 如果SMMU全局禁用(例如,刚结束复位SMMU_CR0.SMMUEN == 0),则transaction将通过SMMU而不进行任何地址转换。全局属性,例如 memory type或Shareability,可能从SMMU的SMMU_GBPA寄存器应用,或者SMMU_GBPA寄存器可以配置为abort所有transactions

2. 如果SMMU没有全局禁用或者全局bypass,则首先确定VA->PA转换的配置:

• 索引到STE。

• 如果STE启用了stage2转换,则STE包含stage2 translation table base。

• 如果STE启用了stage1转换,则继续索引CD。如果STE启用了stage2转换,则从IPA空间获取CD,否则从PA空间获取CD。

3. 如果配置有效(STE+CD),则执行VA->PA转换。

• 如果配置了stage1转换,则CD包含一个translation table base,否则bypass stage1转换,并将输入地址直接提供给stage2。

• 如果配置了stage2转换,则STE包含一个translation table base用于stage2(输入可能是VA,也可能是stage1的输出IPA)。如果没有配置stage2,则输入就会直接作为输出地址(bypass)。

4. 具有有效配置且在VA->PA转换过程中未发生fault的transaction将输出地址以及memory attributes。

上面步骤展示了Non-secure stream transaction 处理的流程,如果支持 Secure stream,则流程也是类似的。过程中使用到的寄存器有所区别: 

SMMU_S_CR0.SMMUEN

SMMU_S_GBPA

实现可能会根据需要cache这些步骤中的任何数据。此外,在处理过程中的几个stage可能会发生 fault。如果transaction未能找到有效配置,则会

terminated with an abort, and an event might be recorded。

如果transaction进展到transaction(已经找到了有效的配置),则fault可能出现在transaction的任一stage。如果发生了fault,其后的行为取决于使用的CD和STE的配置,确定是否terminated或者stalled。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分