几个概念:x86、x86-64和IA-32、IA-64

  最近在学习操作系统方面的知识,学习操作系统难免要和CPU打交道,虽然现在CPU和操作系统不像计算机发展初期一样是绑定在一起的,但是大家都知道操作系统和CPU Architecture的联系是很紧密的,有多紧密呢,差不多跟你和你女朋友的关系一样紧密,哈哈~~,闲话少说,开始进入正文。

  学习计算机的(我想还包括不是计算机专业)肯定都听过大名鼎鼎的摩尔定律,不知道的可以参见http://en.wikipedia.org/wiki/Moore%27s_law。现在的硬件发展正在随着摩尔定律的预言在阔步向前,从最初的8-bit CPU到后来的16-bit CPU,再到后来的32-bit CPU,最后到时下大热的64-bit CPU,硬件的性能得到大幅度的提升。提到CPU,不得不提到Intel AMD;提到CPU的发展,我们不得不提到操作系统的发展,提到操作系统,我们不得不提到Mcirosoft、Linux。这些都是国际上有名的大厂商,客户遍及全世界的各个角落。硬件发展这么快,不是所有的这些大厂的客户在每次硬件或者操作系统跟新的时候都会去购买新的硬件设备或者操作系统的,这样随着时间的流逝,可能CPU发展到了64bit了,还有很多企业在使用装配32-bit的CPU的机器呢。这样就出现了兼容性的问题了。这些国际大厂(比如Intel、Microsoft)为了更好的服务这些厂商,当然也是为了不惹怒客户,在设计新一代的产品的时候,都是考虑向后兼容的(backwards compatible)。

  提到CPU、提到操作系统,经常听到几个名词,x86、x64、x86-64、IA-32、IA-64。由于对于底层的硬件和操作系统不是很熟悉(所以才来学习的吗),虽然我是学习计算机专业,在听到上面几个名词有时候也会不免产生一些疑问:x64和x86-64什么区别,IA-32、IA-64和x86、x64什么关系?32-bit CPU的机器能装64-bit的操作系统吗?64-bit CPU的机器能装32-bit操作系统吗?Win32应用程序能运行在64-bit windows操作系统上吗?带着这几个疑问,我发挥一个计算机专业学生的本能--求助于收索引擎,发现都是一些零星的不完整的解答,故有了这篇博客。一是想为自己在这方面的学习记一下笔记,方便以后继续学习的时候查阅,二是为了很好的解答一下这些问题,我相信这些问题不仅仅是我一个人的问题,肯定有很多人也有类似的疑惑,三是为了检验一下自己的语言组织及写作能力,平时比较懒,很少写一些东西。

  下面逐一回答上面的几个问题,不过回答问题之前,先让我们来了解几个概念。介绍了下面的几个概念以后上面的几个问题就清楚了。

    X86:这是对于Intel 8086及后续CPU产品的统一称呼,具体参见http://en.wikipedia.org/wiki/X86

    X64:兼容X86CPU的64-bit CPU,具体参见:http://en.wikipedia.org/wiki/X86-64

    X86-64:X64的另一种称呼。

    X86_64:同X86-64

    IA-32:Intel Architecture-32的缩写,是一种不向下兼容的Intel 32-bit CPU 架构,具体参见:http://en.wikipedia.org/wiki/IA-32

    IA-64:Intel Architecture-64的缩写,是一种不向下兼容的Intel 64-bit CPU 架构,具体参见:http://en.wikipedia.org/wiki/IA-64

    除了这些概念,我们可能也会接触到一些名词,像AMD64、Itanium,这里一并解释了。

    AMD64:跟上面的X64、X86-64、X64是一样的(注:AMD也是一家设计CPU的国际大厂)

    Itanium:是Intel 的64-bit不向下兼容的CPU架构,具体参见:http://en.wikipedia.org/wiki/Itanium

  到这里相信你对64-bit,兼容X86的64-bit,IA-32、IA-64以及常见的X86有了比较好的理解。

  那么,32-bit X86 CPU的机器上能装64-bit操作系统吗?

  不能。因为64-bit操作系统需要64-bit 的CPU,它的向下兼容性只体现在Win32应用程序能运行在64-bit的windows上。

  那么,64-bit X64 CPU的机器上能装32-bit操作系统吗?

  能。因为X64向下兼容32-bit指令。

  到了这里,我们也知道了IA-32 CPU,只能安装32-bit操作系统,IA-64 CPU,只能安装64-bit操作系统,不能像X64CPU一样也能安装32-bit操作系统,因为IA-64不向下兼容32-bit指令。

  版权所有,欢迎转载,转载请标明出处,以及本文链接。

  The End。

  

时间: 2024-10-16 08:52:58

几个概念:x86、x86-64和IA-32、IA-64的相关文章

32位与64位内存区别

分为内核区域 与 用户区域 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit).它的功能主要是解释计算机指令以及处理计算机软件中的数据. 中央处理器主要包括运算器(算术逻辑运算单元,ALU,Arithmetic Logic Unit)和高速缓冲存储器(Cache)及实现它们之间联系的数据(Data).控制及状态的总线(Bus).它与内部存储器(Memory)和输入/输出(I/O)

现代32位或64位x86汇编

在学习了基于8086的x86汇编指令后,继续学习了32位.64位的x86汇编指令.其基本原理与8086基本一致,只是增加了X87浮点单元,以及用于浮点运算和多媒体处理的SIMD(Single Instruction Multiple Data,单指令多数据流)指令. 无论是64位.32位.16位.8位处理器,都是可以(不是绝对)向前兼容的. 1.寄存器变化 32位:(1)通用寄存器扩展到32位,增加到8个(2)增加了x87浮点单元,及相关指令(3)地址总线32位 64位处理器:(1)通用寄存器扩

dll文件32位64位检测工具以及Windows文件夹SysWow64的坑(很详细,还有自动动手编程探测dll)

阅读目录 dll文件不匹配导致数据库无法启动 究竟是System32还是SysWow64 区分dll文件32位64位的程序让我倍感迷惑 再次判断究竟是System32还是SysWow64——意想不到的坑 Program Files (x86)与Program Files 32位程序真的需要访问System32吗 32位程序与64位程序的区别总结 参考资料 自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program

dumpbin判断windows程序是32还是64位(包括DLL)

http://blog.csdn.net/csfreebird/article/details/10105681 dumpbin /HEADERS gdal18.dll(or xxx.exe) 如果安装过VS2012的话,直接打开一个VS 2012提供的控制台窗口,比如VS2012 x64 Native Tools Command Prompt. 用下面的命令查看程序的头部信息: [cpp] view plain copy gdal_1.8_rtc>dumpbin /HEADERS gdal18

SQLite的.NET应用自适应32位/64位系统 z

如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不同了. SQLite的.NET开发包来自是System.Data.SQLite,完成兼容ADO.NET接口,也提供了Linq和Entity Framework 6实现.但这不重要,重要的是System.Data.SQLite是由两部分代码组成的,一部分是非托管的C++代码实现,一部分是托管代码与.NET 框架接口.由于非托管代码不能构建成“Any CPU”

如何在WIN2008或WIN2012 64位系统安装32位SQL2000

如何在WIN2008或WIN2012 64位系统安装32位SQL2000 在日常服务器,云服务器或VPS中,因尔特网络工程师遇到部分使用了WIN2008 或WN2012 64位系统的用户需要安装SQL2000数据库软件,但是在安装过程提示该数据库软件与系统不兼容的字样,在这里,我们建议你可以改为安装MSSQL2005或MSSQL2008即可. 如果你仍然需要安装SQL2000的话,方法如下: 第一个方法:另外下载MSSQL2000 64位数据库软件安装即可.不过这个方法比较费时.笔者建议你采用第

Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统 调试原来的工程,由于在其中引用了"SQLite"的32位的dll,导致在64为位下程序无法运行(但是编译可以通过) 后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题 打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码 代码如下: <Reference Include="Syst

Tomcat Can&#39;t load AMD 64-bit .dll on a IA 32

1.下载64位的tcnative-1.dll替换tomcat中bin目录下的tcnative-1.dll就解决了 2.tcnative-1.dll下载地址 请点击 这里 Tomcat Can't load AMD 64-bit .dll on a IA 32

32位机 64位机 32位操作系统 64位操作系统

32位机: 一般指的是32位的CPU就是说CUP一次能计算32位. 64位机: 一般指的是64位的CPU就是说CPU一次能计算64位. 32位操作系统: 为32位机而制作的.指的是操作系统的字长是32位的 ,也就间接的影响了地址总线,因此,最大寻址空间也就自然是2的32次方,4G.注意:32位操作系统只能安装再32位机子上. 64位操作系统: 为64位机而制作的.指的是操作系统的字长是64位的,也就间接的影响了地址空闲,因此最大寻址空间也就是2的64次方,128G.注意:64位操作系统可以安装在

%1不是有效的 win32应用程序(64位转换32位)

phpmyadmin打开时候显示 HTTP500内部服务器错误,用火狐浏览器显示的是%1不是有效的 win32应用程序.谷歌一下,终于找出问题,原来是windows2003 64位的操作系统和32位IIS的问题..最终找到解决方法如下: 要运行 32 位版本的 ASP.NET 2.0,请按照以下步骤操作:1. 单击"开始",单击"运行",键入 cmd,然后单击"确定". 2. 键入以下命令启用 32 位模式: cscript %SYSTEMDRI