x86的pae, pse和x86-64

    虽然经典的IA32架构为PC提供了高达4GB的存储空间,可是随着计算规模以及相应存储规模的扩大,4GB的空间有时也会显得不足。在这种情况 下,Intel在IA32的基础上推出了页地址扩展(PAE,Page Address Extension),页面大小扩展(PSE,大概是Page Size Extension的简称)。其后,为了满足更高的要求,Intel开始了IA64(号称安腾)架构的研究。IA64架构是Intel为了于IBM的 PPC(Power PC,采用Power系列的CPU,即PPU)竞争高端市场(如银行、证券等)而研发、生产的。换句话说,IA64并不是为了中低端的PC市场而诞生的, 而是一个纯64位的机器。所以,Intel在设计之初就完全抛弃了IA64与他的拳头产品x86相容的念头(这也是为什么我们几乎看不到安腾处理器用在普 通的桌面PC上的应用,当然除了那些发烧到烧坏脑子的玩家)。

AMD推出了AMD64是完全兼容32位的x86而设计的,它成功地将经典的IA32架构推向了64位,在这种新的平台上,原有的32位操作系统和应用软 件可以不经修改正常运行。同时,操作系统可以有选择地切换到64位,从而拥有和为应用程序提供更大的存储空间。可以说,AMD在PC从32位到64位的过 渡这一问题上,打了一场漂亮仗。

AMD64吓坏了Intel,因为这可能动摇到Intel在中低端市场的占用率,于是慌忙地推出了EM64T(EM64T全称Extended Memory 64 Technology,即扩展64bit内存技术),它是Intel IA-32架构的扩展,也称IA-32e(Intel Architectur-32 extension)。

由于对x86的扩展,技术多多,名词也很多,所以这里分几节来讨论。

一.PSE

1. 概述

Page Size Extension(PSE)技术的作用是在IA32架构中,实现大于传统的4KB的页面。这一技术在最初的Pentium处理器中被引入(注:386、486时代的机器就没有这项功能了),在这类处理器上,可以通过CPUID指令的返回结果,知道处理器是否支持PSE。

PSE技术被引入的目的,是为了满足应用对大内存的申请和使用。设想,在传统的IA32架构下,如果一个应用需要1MB的内存,那么操作系统就应该为其分 配256个4KB的物理页面,为了对这些物理页面进行管理,就需要256x4=1KB的额外空间来存储这些物理页面的页表项。同时,太多的页表项在内存被 引用的时候,也意味这更高的TLB刷新需求。可是,如果把一个物理页面的大小改为1MB,就能够自然地解决这个问题。PSE技术就是在这一个背景下被提 出,用于扩充物理页面大小的。

2. 实现

PSE技术允许4MB的页面于传统的4KB物理页面共存。

在传统的IA32架构中,x86利用两级页表对物理内存进行管理,并实现线性地址到物理地址的映射。页目录中存储了1024个页表地址,而每个页表里又存 储了1024个物理页面的首地址,CR3中存放了页目录的物理地址。而如果使用PSE技术的话(需要设置CR4中的第4位),页目录中的表项就拥有了一个 新的标识(第7位,又称为PS位,Page Size),如果它的PS=1的话,这个页目录表项就指向了一个4MB的大物理页面,而不是象原来那样指向一个页表。同时,使用PSE技术的页目录项实际 上只使用了传统IA32页目录结构中20个地址位的高10位(后面的32-10=22位在寻址的时候全部填0),所以,它指向的是一个4MB对齐的物理页 面!

注意,要使用4MB的大页面,这里的前提是:

1) 需要Pentium以上的CPU;

2) CR4中的PSE位(第4位)为1;

3) 页目录项的PS位(第7位)为1。

3. PSE-36

PSE-36是继PSE技术后推出的扩展技术,在Pentium III处理器以后进入x86的历史。跟PSE一样,为了判断CPU是否支持PSE-36技术,操作系统也可以使用CPUID指令来进行。

我们知道,PSE技术能够在IA32的基础上,让x86机器管理4MB的物理页面,而且,就改动的规模来说,PSE技术仍然使用了IA32的页表到页目录的结构,这是因为无论采用PSE与否,机器仍然还是32位的。可是,如果把地址总线扩展到36位呢?

我们知道,IA32采用的是固定的页目录到页表的结构,页目录和页表的每个位几乎都有特定的含义。如果地址总线扩展增加了4位(成为36位),为了满足寻 址(即使这个时候用户程序仍然使用32位的逻辑地址)和内存管理的需要,最直接的方法是对已有的两层地址映射结构进行扩展,成为3层结构(这种做法我们将 在PAE中讲述)。可是,这样,操作系统必须作出比较大的修改,才能够对36位地址进行支持。有没有能够保留IA32两层地址映射,同时又能实现到36位 物理地址(64GB)映射的方法呢?PSE-36就是为这一特殊需要而制定的。

我们知道,在传统IA32中,无论是页目录项还是页表项,都是用高20位来存储它所指向的页表或物理页面的物理地址的。而在使用PSE寻址4MB大页面的 时候,页目录项只使用了其中的高10位来存储物理页面的地址,而在PSE-36中,则使用了高14位,这样&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值