- UID
- 1029342
- 性别
- 男
|
虚拟存储器系统构架;本文介绍基于内存管理单元(MMU)的虚拟存储器系;1,虚拟存储器系统构架(VMSA)简介;2,内存访问顺序;3,内存访问控制;4,存储区属性;5,异常;6,故障地址和故障状态寄存器;7,硬件页表转换;8,精页表以及对微页表的支持;9,CP15协处理器;一,虚拟存储器系统构架(VMSA)简介;复杂的操作系统都会使用虚拟存储器系统来为不同的进
虚拟存储器系统构架
本文介绍基于内存管理单元(MMU)的虚拟存储器系统构架(VMSA),包括以下几个主要内容:
1, 虚拟存储器系统构架(VMSA)简介
2, 内存访问顺序
3, 内存访问控制
4, 存储区属性
5, 异常
6, 故障地址和故障状态寄存器
7, 硬件页表转换
8, 精页表以及对微页表的支持
9, CP15协处理器
一, 虚拟存储器系统构架(VMSA)简介
复杂的操作系统都会使用虚拟存储器系统来为不同的进程提供独立、受保护的地址空间。内存管理单元(MMU)负责一个进程的动态内存分配以及管理剩余的存储器资源的分配与映射。通过MMU内部的转换快表(TLB,里面包含有从虚拟地址到物理地址的映射机制以及相对应的存储器的属性),MMU可以很准确的提供对存储器系统的控制。TLB中的内容是直接通过硬件转换来管理的(硬件通过查询一组储存在存储器中的页表来管理)。
一个完整的对页表的查找过程称为页表遍历(TTW)。它通过硬件自动完成,需要花费比较多的执行时间,至少一个主存储器访问周期,通常是两个。TLBs通过把一次页表遍历的结果缓存起来以降低存储器访问的平均时间。在实际应用中有两种不同的TLB结构,统一编址的TLBs结构(冯·诺依曼结构)和指令与代码独立编址的TLBs结构(哈佛结构)。
在ARMv6版本中,VMSA的功能已经有较大的增强,对应的版本为VMSAv6。在上下文切换过程中,为了阻止使TLB无效的操作发生,每一个从虚拟地址到物理地址的映射都能被标记为是用于某个特定的应用空间,或者是作为全局的用于所有的应用空间。只有全局的或者是作为当前应用空间的TLB才可以任意使用。通过改变应用空间标识符(ASID),能够更改那些TLB的虚拟地址到物理地址的映射可以被使用。VMSAv6还增加了一些功能定义为不同的存储器类型(参考对 存储器属性 的介绍)和存储器属性(参考 存储器访问控制)。在系统控制寄存器,CP15的寄存器1中,增加为了支持兼容前面的ARM版本的控制位XP,可以参考 协处理器寄存器1:控制寄存器 的具体内容。
与每一个页表项相关的存储器的属性包括以下几项内容:
内存访问权限控制
控制程序对内存区域的不可访问、只读和读写访问权限。当访问一个不被允许访问的内存时,将会给处理器发送一个存储器异常信号。
内存的存取访问权限级别通过代码是运行在用户模式还是特权模式以及存储器所在的域共同控制。
内存的区域属性
描述内存区域的性质。比如包括设备(VMSAv6),不缓存,直写和后写。
虚拟地址到物理地址映射
由ARM处理器产生的地址是叫做虚拟地址。MMU允许把这些虚拟地址映射到不同的物理地址上。这个物理地址标示出是哪个主存储器位置正在被访问。
MMU能用很多种方法来管理物理存储器的分配。比如,它能用来给不同的进程分配有潜在地址映射冲突的存储器,或者通过分配给一个不连续的地址的应用程序使用一块连续的物理存储器空间。
------------注----------------
考虑到有快速上下文切换扩展(Fast Context Switch Extension,FCSE)的原因,在这里所有提到的虚拟地址均是指修正后的虚拟地址,除非有明确的说明。在FCSE功能被禁止(PID=0)的情况下虚拟地址和修正后的虚拟地址是完全等同的。
在ARMv6版本中,FCSE功能仅仅是为了向后兼容以前的版本。在新系统中已经不赞成使用。
-------------------------------
系统控制协处理器寄存器在比较顶层的级别控制这个系统,比如页表的存放位置。他们也用来给ARM处理器提供内存异常的状态信息。
VMSA也可以用来在TLB中锁定一些特定的页表项,这样就能保证访问这些相关的内存区域从来不需要通过页表遍历来查找。这样就能确定和最小化在最坏情况下对一些实时例程的代码和数据的访问时间。
当在存储器中的页表被改变或者是选择了不同的页表(通过改写协处理器的寄存器2)时,先前缓存在TLBs中的页表遍历结果将不再有效。因此VMSA提供了清空TLBs的操作。
(一) VMSAv6版本中的主要变化介绍
下面的列表总结了在VMSAv6中的一些变化:
· 页表项能与一些应用空间标识符相关联,或者标识可全局映射的。这样能消除在大多数上小文切换时对TLB清空的要求。
· 访问权限扩展到同时支持享有特权级别只读,和特权/用户只读模式。使用系统(S)位和ROM(R)位来控制访问权限检测仅仅是为了支持向后兼容以前的版本。
· 一个页标记的内存区域属性可以被多个处理器共享。
· 微页以及二级精细页表格式的使用现在已经被废弃了。 |
|