【写在开篇】
虽然是转载的文章,为了便于理解记忆,还是需要总结出以下几点:
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