ARM SMMU 是一种用于系统级内存管理单元(MMU)的架构,它支持基于translation表中的地址映射和内存属性信息的地址转换。
SMMU使用一组内存中的data structures来获取进一步translation需要的数据。
初始root structure(Stream Table)的base addresses在寄存器中保存。
一个Stream table entry (STE)包含stage 2 translation table的基指针,也可以包含stage 1 configuration structures(Context descriptor,其中包含stage 1)的基指针。
Context descriptor (CD)用于stage 1 translation
Stream table entry用于stage 2 translation。
因此,SMMU使用了两组不同的structures:
• Configuration structures,它们将事务的StreamID映射到translation table base pointers、configuration和context,这些是访问translation tables时需要用到的。
• Translation table structures,它们用于分别对stage 1(VA到IPA)和stage 2(IPA到PA)的地址进行转换。
SMMU处理一个输入事务的第一步是找到该事务所需的配置STE(由其StreamID和可选的SubstreamID标识)。从概念上讲,一个STE描述了一个client device的配置,指明它是否需要进行stage 1或stage 2 translation或两者都需要。
多个devices可以与一个Virtual Machine关联,因此多个STE可以共享相同的stage 2 Translation table。
多个devices(严格地说,是streams)可能共享相同的stage 1配置,因此多个STE可以共享相同的CD。
最后,使用该配置来找到Translation table structures。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !