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继续努力##牛客创作赏金赛##运营人求职交流聚集地#