32bit OS访问64GB物理内存——PAE技术

【写在开篇】

虽然是转载的文章,为了便于理解记忆,还是需要总结出以下几点:

1、PAE技术首先需要CPU支持,也就是指64位CPU(现在市面上基本都是这种类型)允许32位的操作系统识别到64GB(2^36)的物理内存。CPU的这项技术主要是通过页表寄存器来实现的。(是否应该由内存控制器来决定,而内存控制器可能位于主板的北桥芯片中,也可能被集成到CPU基板上?)

2、PAE技术还需要主板芯片组(地址总线)、操作系统(段页式内存管理)提供支持。

3、对于32位操作系统,经过段式地址转换后仍为32位线性地址,需要经过页式地址转换后,才能将32位的线性地址映射到最大64GB的物理内存上。

4、对于32位操作系统,每个应用程序(进程)自己的虚拟地址空间仍然为最大4GB。


以上总结只是个人理解,难免有讲述不正确或不清晰的地方,敬请指正,谢谢!


相关参考资料:

ARM64移动处理器解惑:http://www.csdn.net/article/2013-11-06/2817410

地址总线:http://baike.baidu.com/view/238412.htm

PAE:http://baike.baidu.com/view/493711.htm


【转载实体】

物理地址扩展(Physical Address Extension),又释实体位置延伸,是x86处理器的一个功能,让中央处理器在32位操作系统下存取超过4GB的实体内存。
PAE为IntelPentium Pro及以上级别的CPU(包括除了总线频率为400MHz的这个版本的奔腾M之外的所有新型号奔腾系列处理器)所支持,其他兼容的处理器,如速龙(Athlon)和AMD的较新型号的CPU也支持PAE。
x86的处理器增加了额外的地址线以选择那些增加了的内存,所以实体内存的大小从32位增加到了36位。最大的实体内存由4GB增加到了64GB。
32位的虚拟地址(线性地址)则没有变,所以一般的应用软件可以继续使用地址为32位的指令;如果用平面内存模式的话,这些软件的地址空间也被限制为4GB。操作系统用页表将这4GB的地址空间映射到大小为64GB的实体内存,而这个映射对各个进程一般是不一样的。这样一来,即使不能为单单一个程序所用,那些增加了的物理内存仍然可以发挥作用。
对于需要超过4GB内存的应用软件来说,除了一般的PAE支持,还需要操作系统提供另外的特殊的技术。在Windows上,这种技术叫做Address Windowing Extensions(AWE)。而在类Unix的系统上则有多种技术在使用,例如使用mmap()按需要把一部分文件映射到地址空间;但是,这还没有成为一个标准。
 
 NX,全名为“No eXecute”,即「禁止执行」,是应用在CPU的一种技术,用作把记忆体区域分隔为只供储存处理器指令集,或只供数据使用。任何使用NX技术的记忆体,代表仅供数据使用,因此处理器的指令集并不能在这些区域储存。这种技术可防止大多数的缓冲满溢攻击,即一些恶意程式,把自身的恶意指令集放在其他程式的数据储存区并执行,从而把整台电脑控制。
       类似的技术其实早已应用在SPARC、DECAlpha、IBM的PowerPC、甚至是英特尔的IA-64架构处理器Itanium上,但NX这个名称最先在AMD的Athlon 64、Opteron等支援AMD64的处理器上使用,并成为这些技术的代名词。 
在x86处理器的页表索引中,NX位元置于63号的位置(以0作第一位),即64位中的最后一位,如果NX位元的数值是0(关闭),在页表内的指令集可正常执行,但如果是1(启动)的话则不能执行页表的指令集,并会把页表的一切皆当作数据。在格式上,页表需为PAE格式,而非x86传统的格式。 
2001年,英特尔在自家的Itanium处理器加入这种技术,但未有在Pentium、Celeron、Xeon等x86处理器上使用。在AMD把NX应用在AMD64之后,英特尔也为Prescott版本的Pentium 4处理器加入类似技术,并以“XD”(eXecute Disable)的名义推出市场。在功能上,AMD的“NX”和Intel的“XD”完全相同,只是名称不同

SSE2(Streaming SIMD Extensions 2,Intel官方称为SIMD 流技术扩展 2或数据流单指令多数据扩展指令集 2)指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如,双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2、MP3、3D图形等之类的软件时增强性能。Intel是从Willamette核心的Pentium 4开始支持SSE2指令集的,而AMD则是从K8架构的SledgeHammer核心的Opteron开始才支持SSE2指令集的。它有两个部分组:SSE部分和MMX部分.SSE主要负责处理浮点数,MMX则专门计算整数.SSE2的寄存器容量是MMX的两倍。寄存器存属数据也增加了两倍。在指令处理器速度保持不变的的情况下,通过SSE2优化过的程序和软件运行速度也能提升两倍。由于SSE指令集和MMX指令集相兼容。因此,被MMX优化过的程序很容易背SSE2进行更深层次的优化,达到更好的效果。
——THE END

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值