ARMv8-A编程指导之MMU(5)

4 ARMv8-A的转换表

        ARMv8-A架构提供了三种不同转换表格式的支持:

(1)ARMv8-A AArch64 长描述符格式

(2)ARMv7-A长描述符格式如LPAE,ARM Cortex-A15处理器

(3)ARMv7-A短描述符

        在AArch32中,你可以使用已经存在的ARMv7-A长和短描述符格式来执行已经存在的操作系统以及没有修改的应用代码。ARMv7-A短描述符仅用于EL0和EL1 stage1转换。因此他们不能被hypervisor或安全monitor代码。

        通常在AArch64中使用ARMv8-A长描述符格式。它与ARMv7-A长描述符格式LPAE类似。它使用64位长描述符格式,但有些修改。它引入了新的level0表索引,它使用与level1表相同的描述符格式。这支持48位输入和输出地址。输入虚拟地址来自于64位寄存器。但是,因为架构不支持完全64位地址,bit 63:48必须相同,全0或全1,或高8位用于虚拟地址tagging。

        AArch64支持三种不同转换粒度。这定义了转换表的最小级别块大小且控制转换表的大小。更大的粒度大小减少了要求的页表级别数目,且这也在使用hypervisor提供虚拟化的系统中重要的考虑。

        支持的粒度为4KB,16KB和64KB,并且由实现定义支持这三种。创建页表的代码可以读取系统寄存器ID_AA64MMFR0_EL1来找到支持的大小。Cortex-A53处理器支持这三种大小,但这不是处理器早期版本的情况,比如Cortex-A57,不支持16K粒度。每个转换表配置在大小在TCR_EL1。

4.1 AArch64描述符格式

        你可以 使用页表所有级别(从level0到level3)的描述符格式。Level0描述符只能输出level1表的地址。Level3描述符不会指向另外的页表且只输出块地址。因此表的格式在level3上有些不一样。

        下图描述了table描述符类型,这通过bit1:0定义:

  1. 下一级页表的地址,这种情况下内存可以被分成更小块;
  2. 可变大小块的内存地址;
  3. 标记为fault或invalid的表项;

 NOTE:上图并没有指定这些域的位宽。

4.2 粒度对转换表的影响

        三种不同的粒度可以影响要求的转换表的数目和大小。

NOTE: 对于所有情况,如果虚拟地址的范围限制在42位时,你可以忽略页表的第一级。

        依赖于可能虚拟地址的范围大小,这可以更少的级别。对于4KB粒度,比如,如果TTBCR被设置,低地址可跨1GB,level0和level1不需要且转换表从level2开始,对4KB页可以走到level3。

4KB:当你使用4KB粒度大小时,硬件可以使用4级查找过程。48位地址对每个级别有9个地址位,即512个转换项,用直接从原始地址的最后12位在4KB内选择byte。

        虚拟地址的bit 47:39索引L0表的512个页表项。这些页表项的每个都跨512GB且指向L1表。在512个L1表项中,bit38:30用于索引选择一个页表项,每个页表项指向1GB块或L2表。Bit 29:21索引到L2表的512项,每个页表项指向2MB块或下一级表。在最后一级中,bit 20:12索引L3表的512项,每个页表项指向4KB块。

64KB:当你使用64KB粒度,硬件可以使用3级查找过程。Level1表仅包含64个页表项。

        虚拟地址的bit 47:42用于从L1表的64个页表项选择描述符。这些页表项的每个跨4TB范围且指向L2表。在L2表中的8192页,bit 41:29用于索引选择一个页表项且每个页表项指向512MB块或L2表。在最后转换阶段,bit 28:16索引L3表的8192个页表项,每个页表项指向64KB块。

4.3 cache配置

        MMU使用转换表和转换寄存来控制哪个内存位置被缓存。MMU控制cache策略,内存属性,和访问权限,并提供虚拟地址到物理地址的转换。

        由系统寄存器发出软件配置。

        在一些设计中,外部内存系统可能包含外部内存的实现特定的cache。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值