ARMv8系列 内存虚拟化

概念

非虚拟化场景:仅有一阶段地址映射Stage 1

虚拟化场景:

两阶段地址映射:

Stage 1: VM里面Guest VA -> Guest PA(本质就是HPA,ARM里又叫IPA Intermediate PA)

Stage 2: hyp里面Hyp VA -> Hyp PA(本质就是PA)

TTBRn_el1负责EL1 stage 1, vttbr_el2负责EL1 stage2

而ttbr0_el2是EL2 stage 1,用来管理hyp自身空间

除此外还有寄存器HCR_EL2,VM字段用来开启S2页表映射

影响S2页表映射的几大因素:

input address size: VM的GPA不能超过PA size

output address size: 系统支持的物理地址大小由 ID_AA64MMFR0_EL1.PARange 决定,Hypervisor 需要将其值填入 vTCR_EL2.PS 中,以正确配置虚拟化环境中的物理地址范围

定义:ID_AA64MMFR0_EL1 是一个系统寄存器,用于描述内存管理特性的支持情况。其中的 PARange 字段表示 物理地址范围(Physical Address Range)。

作用:PARange 的值指示了当前系统支持的物理地址位数。它是一个硬件特性,由 CPU 实现决定。

示例:

如果 PARange = 0b0100,表示支持 40 位物理地址。

如果 PARange = 0b0101,表示支持 44 位物理地址。

如果 PARange = 0b0110,表示支持 48 位物理地址。

页面粒度:由VCTR_EL2中的TG0来指定,PS决定物理内存最大值,SL0表示从哪一级页表开始查询,T0SZ指定IPA的范围

S2 concatenated页表:40bit+4KB举例

比如4那个地方,加上L1 index, 指向L1页表中的具体位置,这是原本的页表

使用串联页表后,原来L0直接放进L1索引了,L1相当于直接变成了两倍,索引范围变成两倍,这样就变成了三级页表

#通信硬件人笔面经互助##打工人的桌面壁纸都是啥样的?##985本硕1个中小厂offer,摆烂or继续努力##牛客创作赏金赛##运营人求职交流聚集地#
全部评论

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务