arm, mmu

1.持续更新:

官方手册:ARM® Architecture Reference Manual ARMv8, for ARMv8-A architecture profile
Chapter D4 The AArch64 Virtual Memory System Architecture

D4.2.3 Memory translation granule size

The memory translation granule size defines both:

• The maximum size of a single translation table.

• The memory page size. That is, the granularity of a translation table lookup.

页粒度有两层定义:单个页表的最大尺寸为2^n; 内存进行分页的size也是2^n;

对于64位系统,4K页表:n=12; 每个页表为2^n, 每个entry为8bit,所以每个页表含有2^(n-3)个entries. IA[(n-1):0]为每个页的偏移量,the final level of lookup: IA[((n-1)+(n-3)):n],

The previous level of lookup: IA[((2n-4)+(n-3)):(2n-3)],以此类推,每次首尾两个地址都加上n-3;

对于4KB granule size, lookup level: Zero: IA[47:39]; First: IA[38:30]; Second, IA[29:21]; Third IA[20:12]; the initial lookup可以是level 0或level 1, 甚至level 2;

把页表的基地址存放在TTBR0_EL1中,MMU如何知道存的是第几级页表?

例如只采用两级页表,level1和level2,把level1的基地址告诉TTBR0_EL1;

这是MMU通过,TCR_EL1,T0SZ, bits [5:0],The region size is 2(64-T0SZ) bytes.知道虚拟地址的有效位,当转化时,把VA,bit[38:30]作为偏移量加上TTBR0_EL1中存的基地址,来寻找下一级页表;

2.aarch64配置mmu的流程:

2.1.配置TCR_EL1寄存器;

2.2.create_page_table创建页表,把初始页表的基地址赋值给,TTBR0_EL1寄存器;

2.3.配置SCTLR_EL1寄存器,开启mmu;

K7.1.2 Full translation flows for VMSAv8-64 address translation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值