X86_X64
来源:互联网 发布:逃犯 熊孩子 知乎 编辑:程序博客网 时间:2024/06/06 17:16
如何判断CPU是否支持64位系统
1.首先从一个常理来说,如果你的CPU是双核,应该是支持64位的了!
2.当然你也可以用CPU-Z来检查一下自己的CPU是否包含有EM64T (INTEL)或者X86_64(AMD)指令!
如果包含,那就说明支持64位!
64bit计算主要有两大优点:1.可以进行更大范围的整数运算;2.可以支持更大的内存。
最近,品牌机预装的OEM系统的首选已经是64位的了,很多朋友一个劲地抱怨64位兼容性太差不能装32位的
软件或64位软件太少什么的。64位用32位软件其实没有问题,理论兼容 x86 全平台,兼容性应该是最全的才
对,省略一万字以后,不知是哪里听说的,误解太深,最后已经无力解释了。于是干脆写了一篇长篇大论,以
后就直接 copy-paste 了,虽然是常识,还是分享一下吧。
历史:
平常桌面电脑使用的所谓64位平台其实是 x86-64,也就是说在原有的 x86 平台上实现 64 位
什么是 x86 平台呢,也就是 Intel 在 8086 之后一系列处理器中使用的架构,8086 是 16 位的,后来扩展到 32 位
的 80386,之后一直沿用就形成最流行的的 32 位处理器系列,这种架构也叫做 IA32(Intel 实现32位),注意 AMD 也
是使用 Intel 的技术。32 位 x86 处理器经过大力发展,性能已经比较强大,完全适合于桌面计算机和通用服务器,用户
和开发者数量庞大。但是 32 位 CPU 的内存寻址能力(可访问 4G 内存)有限,于是 AMD 公司率先开发出了 x86-64(
也称为 AMD64)架构处理器,它完全可以实现 64 位计算。后来 Intel 自然不会示弱,也开发了EM64T(扩展内存 64 位
技术),也就实现了和 AMD64 几乎一样的 IA32e(Intel 实现32位扩展)架构处理器。
但是要注意的是在 AMD64 诞生之前, Intel 和 HP 等公司合作开发了 IA64 (Intel 实现64位)架构,这个是一个全新的
但是要注意的是在 AMD64 诞生之前, Intel 和 HP 等公司合作开发了 IA64 (Intel 实现64位)架构,这个是一个全新的
64 位架构,不兼容原有的 32 位程序,只能通过模拟器模拟执行,而且效果完全不尽人意。不过这和我们现在讨论的 64
位没有关系,这大概就是误解的来源之一.
硬件:
那么,64 位计算是如何实现的呢?首先要说明 x86-64 是站在 x86 的肩膀上的,并没有另起炉灶,CPU 指令长度(即指
那么,64 位计算是如何实现的呢?首先要说明 x86-64 是站在 x86 的肩膀上的,并没有另起炉灶,CPU 指令长度(即指
令占有的二进制位数)不变,原有的指令集也一律保留,所以 x86 和 x86-64 总体的架构是一致的,指令完全兼容。改变
的部分,原有通用寄存器容量均增长为 64 位,顺便还加了 8 个,同时增加了 8 个 128 位的 XMM 寄存器,内部总线(即
CPU 部件间的数据通道)宽带也增至 64 位或更多。当然还有增加用于支持这些寄存器的相关指令。由此可以看出,CPU
处理的数据均支持 64 位,内存编址理论上也可达到 2的64次方 个地址空间,但由于是在 x86 的架构上构建的 64 位计算,
64 位线性寻址能力还不成熟,实际上的可编址并没有这么多,但可改进。之前也一再强调,x86-64 只不过是 x86 的扩展,
因此现有的 64 位处理器可以同时运行 32 和 64 位程序。下面以 Intel 的技术(AMD 的原来其实一样)为例说明。具体情
况要分为下面几类:
--1. 没有激活 64 位(传统模式/ IA32 模式)。也就是没有为机器安装 64 操作系统,只使用 32 位操作系统。这时 CPU 只
--1. 没有激活 64 位(传统模式/ IA32 模式)。也就是没有为机器安装 64 操作系统,只使用 32 位操作系统。这时 CPU 只
会工作在纯 32 位模式,第二节中提到的硬件和指令都被屏蔽掉了。(下面这些是涉及 32 位模式和兼容 16 位程序指令的,
这里就不再详细说明了。)
----1.1. 实模式
----1.2. 虚拟 8086 模式
----1.3. 保护模式
--2. 已经激活 64 位。这时已经安装 64 位操作系统,操作系统在启动时就将 CPU 置为 64 位工作状态。所有新寄存器、扩
----1.1. 实模式
----1.2. 虚拟 8086 模式
----1.3. 保护模式
--2. 已经激活 64 位。这时已经安装 64 位操作系统,操作系统在启动时就将 CPU 置为 64 位工作状态。所有新寄存器、扩
展寄存器和指令都被激活并可用。
----2.1. IA32e 模式/ EM64T 模式。这时正在运行 64 位程序,CPU 完全以 64 位特性工作。
----2.2. 兼容模式。这就是在 64 位系统下运行 32 位程序的模式了。具体的情况下面会详细说明。
----2.1. IA32e 模式/ EM64T 模式。这时正在运行 64 位程序,CPU 完全以 64 位特性工作。
----2.2. 兼容模式。这就是在 64 位系统下运行 32 位程序的模式了。具体的情况下面会详细说明。
如何实现:
在兼容模式下,支持 x86-64 的 64 位操作系统就要起到协调作用了,它首先要是识别程序的平台性质,如 16 位
在兼容模式下,支持 x86-64 的 64 位操作系统就要起到协调作用了,它首先要是识别程序的平台性质,如 16 位
(Windows x64 并不支持 16 位子系统,因此无法执行 MS-DOS 16 位程序)、32 位,还是 64 位。如果是 32 位,
就在相应的程序指令前加上 32 位标志,CPU 遇到这个标志时,就不会把程序应用的 64 位新特性中,为程序指
定 32 位寄存器(虽然部分 32 位寄存器是 64 位寄存器的前一部分,但它们名字是不相同),内存空间也重新映
射或进行必要转换(这还不太确定)。也就是说,32 位程序所看到的寄存器仍然是 32 位的,内存仍然只能访问
4G 或以下,它们不会发现 CPU 有任何异常。
对于操作系统的软件部分,就拿 Windows x64 来说,我们可以发现,它比对应的 32 位系统要臃肿一些,部分原
对于操作系统的软件部分,就拿 Windows x64 来说,我们可以发现,它比对应的 32 位系统要臃肿一些,部分原
因是 64 位指令数据要长一些,单个程序会大一些。但更明显的是操作系统中的很多东西都是“双份”的,也就是分
别准备了 64 位的和 32 位的,这些主要是平台资源(如 .NET 框架)、库资源(如 Visual C++ 库)和一些底层的
系统工具(如 CMD、DXDiag)。更明显的表现是,打开系统分区,我们就能发现程序文件夹“Program Files”有
两个,一个用于 x86-64 软件,另一个则用于 x86(32位)软件。这可说明,不仅硬件完全支持 x86/x86-64,操作
系统也把这两个平台放在平等的地位。
随着 64 位操作系统的推广,越来越多的软件开发者会同时在 32 位和 64 位环境下进行软件测试,保证软件的可靠
随着 64 位操作系统的推广,越来越多的软件开发者会同时在 32 位和 64 位环境下进行软件测试,保证软件的可靠
性。但是要他们统统开发纯 64 的版本是不现实的,虽然从 x86 过度到纯 x86-64 理论上只要重新编译,原来的代码
可以不作任何修改,但有时并不这么简单,同时还要考虑经济效率(再次开发是要花钱的),再说一些软件并不需
要用的用到 64 位的计算特性(所以也没有修改和重新编译的必要)。所以就放心的用那些已经写明支持 x86 64位
平台的程序好了,就算没有声明支持 x86-64 也是可以运行的。
兼容问题和解决方案
对于任何一个新的操作系统,都会用不兼容的情况。如果遇到不兼容,应该先考虑是否是操作系统自身升级带来的,
对于任何一个新的操作系统,都会用不兼容的情况。如果遇到不兼容,应该先考虑是否是操作系统自身升级带来的,
打个比方,对于一个为 Windows XP 开发的程序如果在 Windows 7 x86 上运行没有问题,那在 Windows 7 x64 上运
行应该也不会有问题。当然还是不推荐已经过时的程序。
另一点需要注意的是,前面已经提到那些需要准备“双份”中的 32 位的平台或库资源是否安装了,它们是支持开发软
另一点需要注意的是,前面已经提到那些需要准备“双份”中的 32 位的平台或库资源是否安装了,它们是支持开发软
件的基础,32 位和 64 位必须一一对应。如果缺失了相应的 32 位版本,需要它支持的 32 位程序自然不能运行。解决
方法就是使用程序的安装向导重新安装(而不是使用绿色安装包),或者查找程序说明后再到微软下载中心下载缺失
的组件。
推荐使用 64 位而不用 32 位的情况
和硬件打交到的驱动程序,因为他们的底层工作特性,64 位是必不可少的。这就是为什么 64 位操作系统推广缓慢的
和硬件打交到的驱动程序,因为他们的底层工作特性,64 位是必不可少的。这就是为什么 64 位操作系统推广缓慢的
原因,也是 64 位“兼容性差”的表现。还好当前硬件厂商都默认发布 Windows 64 位版本。
除了驱动程序还有什么软件必须用 64 位的?这个并不好说,一般说来是那些需要频繁处理大量数据或者需要占用很多
除了驱动程序还有什么软件必须用 64 位的?这个并不好说,一般说来是那些需要频繁处理大量数据或者需要占用很多
内存空间(甚至会超出 4G 内存空间)的程序。比如(1)一些大型的开发平台或服务器平台,如 AutoCAD 、Photoshop
和 SQL Server 等;(2)编/解码器,如 PotPlayer 及对应解码器,如果你要看一些质量很高的电影,用 64 位软件
渲染自然会流程一些;(3)一些非常常用的工具,如果你要 Internet Explorer 一次同时打开十几个页面,或者要
杀毒软件监控全部文件和数据区,那还是用 64 位的吧。
至于其他小巧的软件,就没必要这么纠结了,如果有 64 位的就用,没用就用 32 位的替代。不过说实话,我们都希望用
至于其他小巧的软件,就没必要这么纠结了,如果有 64 位的就用,没用就用 32 位的替代。不过说实话,我们都希望用
64 位,即使软件性能没有什么改进,至少运行效率会高一些,还有“原生 64 位”听起来很正统啊。
0 0
- X86_X64
- JVM tiered x86_x64 flags
- rhel6u2 x86_x64安装TimesTen 112230
- hadoop 2.3.0 安装部署 基于CentOS6.5 x86_x64
- VMware 9.0+redhat 6.5(rhel-server-6.5-x86_x64)+oracle11gr2 rac 各种坑
- wait函数和waitpid函数比较
- Oracle数据库SqlLoad常用技巧总结(转载)
- 黑马程序员_JAVA动态代理技术学习笔记
- matlab 读取excel 数据
- 初学opencv心得:imshow中断退出问题和stitcher报错问题
- X86_X64
- JAVA 包.算法
- DLNA介绍(包括UPnP,2011/6/20 更新)
- JSON教程之JSON-lib包方法解析(JAVA)
- ubuntu获得root权限
- source insight 配置文件
- 《Head First 设计模式》组合模式
- 导出目录结构文档tree
- Android 图片缓存处理