基于X86-64架构的处理器如何实现兼容的应用模式
扫描二维码
随时随地手机看文章
为了使用户的计算平台实现从32位到64位体系结构的平滑过渡,amd公司开发了独特的x86-64结构。与目前的一些64位平台相比,基于x86结构的处理器可以实现对现有32位程序的完全兼容,而且这种兼容运行模式是完全基于硬件的,而不是通过低效率的模拟32位指令方式来实现。这样我们可以在x86-64平台上继续使用现有的应用程序,不必等待开发人员或软件厂商对程序的源代码进行重新编译,这将为用户省去大量的购买以及相关的培训费用。
在某种程度上基于x86-64架构的opteron处理器平台可以看作是以往x86-32的扩展,如果不考虑对64位指令的支持,基于x86-64结构的处理器在指令的执行顺序以及处理过程都是一样的。amd对opteron处理器的寄存器作出了较大改进。寄存器是处理器内部在运算过程中暂时存放数据的存储单元,里面保存着那些正准备要处理的数据或者是已经处理过的数据。cpu的运算单元访问寄存器所用时间要比访问处理器缓存以及内存的时间都要短。 增加寄存器,可减少cpu 访问处理器l1、l2缓存以及内存次数,从而提高cpu的工作速度。 寄存器中的通用寄存器用途广泛并可由软件开发人员自行规定其用途。通用寄存器的数目因处理器结构而异,x86-32位处理器具有eax、ebx、ecx、edx、esi、edi、ebp、esp共8个32位通用寄存器等。与以往的32位x86结构相比,amd的64位处理器在原有的8个通用寄存器的基础上又增添了8个寄存器。这8个寄存器是工作在64位下,经过64位编码的程序就可以使用到它们。amd同时也将原有的eax等寄存器扩展至64位的rax。从扩充方式上看,eax等寄存器可以看作是rax的一个子集,系统仍旧可以完整地执行以往的32位编码程序。通用寄存器除了可高效的存储数据外,还可作为寻址时的地址指针,从而缩短指令长度和指令执行时间,加快cpu的运算处理速度,同时也给编程带来方便。单单从寄存器结构来看,x86-64较多的寄存器将会大幅度的提升处理器的性能,也会更加受到软件开发人员的喜爱。 目前的处理器产品都采用了simd(单指令多数据)技术来提高处理器的运算能力,常见的单指令多数据技术分别有intel公司的sse、sse2以及amd公司的3dnow!,以往的x86-32结构的amd处理器除了具备3dnow!技术外还提供了对intel sse指令集的兼容,而x86-64则通过16个寄存器来提供对sse2的支持。在simd技术方面,amd的x86-64结构将提供比以往任何设计都要出色的兼容性。 为了更好的在32/64位混合模式下工作,x86-64结构提供了多种处理器工作模式。在“长模式”下如果用户使用64位操作系统以及为64位计算编译的软件,那么就可以获得8个新增64位通用寄存器、扩展6 4位通用寄存器等众多新特性。“长模式”下还包含了一种“兼容模式”,在此模式下用户可以在64位操作系统上运行32位的应用程序,从应用程序的角度看,在“兼容模式”下其所使用的处理器也就是普通32位x86处理器。而从操作系统的角度来看,常规的地址变换,中断以及系统数据结构操作都是在64位“长模式”下进行的。“传统模式”则是amd的64位处理器为32位应用所提供的运行模式,这种模式下的x86-64结构处理器的运行与一般的32位处理器没有区别,可以完全兼容目前的32位操作系统以及32位应用程序。