虚拟内存改进和高性能处理器预取研究

虚拟内存的基本原理

由于程序所需的内存大于物理内存,人们发明了虚拟存储技术。虚拟存储为进程提供了比物理内存大得多的寻址空间,每个进程运行在独立的虚拟地址空间,在不同进程的虚拟空间不会相互影响。同时虚拟存储技术提供了内存映射,公平的物理内存分配和共享虚拟内存等功能。
使得程序员不需要考虑繁琐的物理内存分配,每个进程可以有独立的编程地址空间。例如在32位地址下,即使计算机的物理内存只有256MB,每个进程都可以使用0-4GB的地址空间,使用一个300MB的数组,处理器和操作系统会自动完成从虚地址到物理地址的转换,以及数据在内存和硬盘交换区(swap)的交换。
虚拟存储是实现从以进程为单位的虚拟地址空间到统一的系统物理地址空间映射的一种机制。由于要将有限的内存分配给多个进程使用,硬件完成cache块在内存和cache之间的搬运,页在内存和硬盘之间的搬运是由软件完成的,比cache块要大得多,可以为4KB,8KB,16KB,甚至是1GB的页,为了实现虚拟存储空间到物理空间的映射,操作系统需要为每个进程建立一个页表来记录虚拟页和物理页的对应关系。
页表是由操作系统记录虚拟页和物理页的对应关系。页表由操作系统管理保存在内存中,每次存储访问都先要访问内存中页表获得物理地址在访问cachej就太慢了,通常在处理器内部用硬件实现一个快速转换缓存Translation Lookaside Buffer,TLB,实现快速的虚实地址转换。使用virtual page numbe访问TLB或者页表,转换后得到物理帧号(physical frame number,PFN),然后和页内偏移组合为物理地址。
操作系统根据虚地址查找页表时先从寄存器中读取页表的起始地址,然后和虚地址的一级页表偏移量相加查找一级页表;然后读出二级页表的起始地址然后和二级页表偏移量相加得到三级页表起始地址跟三级页表偏移量相加得到物理页号然后跟页内偏移量组合形成物理地址。

MIPS处理器对虚拟存储的支持

3个权限模式:user mode、supervisor mode、kernel mode,状态寄存器中的EXL(Exception Level)、ERL(Error Level)
、KSU(Kernel Superuser User)决定。EXL=0,ERL=0,KSU=10是用户态,EXL=0,ERL=0,KSU=01是管态,EXL=1或ERL=1,KSU=00是管态。通过系统调用或者其他例外进入核心模式。像TLB管理、cache和寄存器控制的指令只能在核心模式执行,在用户模式执行这些指令,处理器发出保留指令例外。
32位地址有4GB的地址空间,0-2GB称为useg段,0x00000000-0x7fffffff,通过查找TLB,0x80000000-0x9fffffff是kseg0,后面是kseg1、kseg2(管态sseg)、kseg3。kseg0和kseg1不经过TLB的转换,之间映射到0-512MB的物理空间上。一方面系统初始化时,开机时,CPU刚上电,硬件复位信号只对一些非常必要的寄存器进行了初始化,而CPU中的cache、TLB以及各种寄存器都需要由软件进行初始化。CPU刚启动时Reset会把程序计数器PC置为0xbfc00000,在kseg1,减去0xa000000,0x1fc0000,对应到主板的BIOS,CPU从BIOS取指定对cache和控制寄存器进行初始化,没有使用cache,每条指令要上百拍cycles,初始化cache后BIOS程序跳到另一段地址空间kseg0段,可以使用cache,比kseg0

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值