armv8虚拟内存架构简述

本文解析ARMv8架构下的虚拟内存转换机制,包括两级转换(stage1和stage2)、控制寄存器如SCTLR_EL1和TCR_EL1的功能,以及MMU如何通过TTBR系列寄存器实现地址转换。探讨了虚拟化环境下内存访问效率问题及TLB如何优化性能。

粗略看了一下armv8的虚拟内存的文档。记录一下,细节留待以后用到时再去细究。

程序在运行的时候使用的内存一般是虚拟内存,需要经过转换才能接触到物理内存。其中的底层支持就是硬件架构,现代架构都是支持硬件虚拟内存转换的,一般就是说提供MMU。armv8架构作为现代架构也不例外,但是不太一样的是armv8架构支持两级转换:stage 1 和stage 2.

上图包含了安全世界和非安全世界的东西,由于安全世界的东西过于复杂(主要是我也不懂),下面我们就忽略掉安全世界的东西。从上图的第四条:VA->IPA->PA.很明显,VA到PA可以最多经过两次转换,当然每个stage都是可以取消的,比如只有stage1 或只有stage2. 为什么需要两级转换呢?这是为支持虚拟化而设置的,对于虚拟机内的程序一般需要经过两级转换才能访问到主机的物理地址。所以一般地可以认为,对于主机上跑的应用程序只需要一级转换,而在虚拟机中的程序要经过两级转换。那怎样控制这些内存转换机制呢?

控制虚拟内存转换的接口就是一系列寄存器,主要有:SCTLR_EL1,TCR_EL1, TCR_EL2, HCR_EL2,TTBR0_EL1, TTBR1_EL1, VTTBR_EL2。下面分别介绍一下。

SCTLR_EL1:顶级系统控制寄存器,其中Mbit控制MMU 对EL0和EL1的stage 1的使能,一旦置位1,第一级虚拟内存转换就启动了。次要一点的EEbit用来控制大小端控制。

SCTLR_EL2: Mbit控制MMU对EL2的stage1使能。

HCR_EL2: VMbit控制MMU对EL0和EL1的stage2转换使能。

TCR_EL1: 转换控制寄存器。 这个寄存器直接控制EL0和EL1的第一级虚拟内存转换。

        TG1, 控制TTBR1_EL1的转换颗粒

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值