【Windows】32位和64位区别

软件测试过程中,需要测试软件在不同系统中的兼容性,32位/64位,家庭版/旗舰版/专业版,Win XP/Win7/8/8.1/10,中文/英文,繁体/简体等等
在网上找一些资料整合,深入去了解一下各个的区别
现在先看看Windows系统–32位和64位的区别

设计初衷

64位操作系统的设计初衷是:满足机械设计和分析、三维动画、视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求
也可以说成是:
它们是高科技人员使用本行业特殊软件的运行平台,而32位操作系统是为普通用户设计的

x86 与 x64 代表的真实含义

x86 代表了 32 位, x64 代表了 64 位,相信很多人都知道这一点
但是,事实上并不是这样的。
32 位与 64 位只不过CPU 里面的其中一个特性,或者说只是一个技术而已。就 2011 年以前而言,所有的笔记本/台式机里的 CPU 都是基于 x86 构架的CPU。无论是 32 位 CPU 还是 64 位 CPU 都是基于 x86 构架的。而 x86 是一种构架的名称,除了 x86,还有 ARM 构跟 MIPS 构架,等等

为何现在都 x86 代表了 32 位, x64 代表了 64 位?
由于在 64 位出来之前,程序员写的程序基本都是 32 位( 16 位淘汰的太快了),而个人计算机用的 CPU 都是 x86 构架的,所以时间长了,在大家眼中 x86 就等于 32 位了。这个也解释了为什么 32 位不写成 x32 的原因了

32 位与 64 位物理层面上的区别

每一个内存单元都分配一个地址,或者说内存地址。而要访问内存里的数据的时候必须知道数据所在内存中的地址。
32 位与 64 位技术
32 位从本质上说,那是因为从 CPU 到内存控制器有 32 根物理信号线,
每一个时钟周期能够读取 32 位的数据也就是 4 个字节( B),然后移动到下一个要读取的地址
32 位计算机一共能够表示2^32个地址,每个地址都是 1B 大小的空间。一共就有2^32 × 1B = 2^32B = 4GB
同样的,64位计算机的内存支持提升到2^64B

运算速度

64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集可以运行64位数据指令,也就是说处理器一次可提取64位数据(只要两个指令,一次提取8个字节的数据),比32位(需要四个指令,一次提取4个字节的数据)提高了一倍,理论上性能会相应提升1倍

64 位技术的优缺点

优点:
64 位最多给我们带来了更加充裕的资源——支持更多 CPU,更大的硬盘还有更庞大的内存
64 位技术能够有效提升内存性能,使得内存延迟变得更低,带宽却更高。给用户带来急速的响应多任务下切换应用程序
64 位技术还能让 CPU 数据吞吐量直接翻倍, 32 位 CPU 每个时钟周期最大只能处理 32 位( 4B的数据),而 64 位却是 32 位的 2 倍,每个时钟周期处理 8 字节的数据。 这使得 64 位系统能够画面更加细腻,细节更加丰富
64 位 CPU 独有的 64 位指令集,大大加快计算速度,在特殊情况下性能直接能够提升到 32 位3.5 倍。并且使得数据精度更高,出错几率更小,可靠性大大提升,开发者的难度反而降低了
64 位技术的空间地址随机化,使得黑客攻击系统的难度还有复杂度不知道提升了多少层次。大度提高操作系统的稳定性
64 位拥有强大的可伸缩性,向下兼容 32 位,同时几乎不产生性能损耗
缺点:
64 位技术由于每个地址都是 64 位大小,是 32 位的 2 倍。所以 64 位会比 32 位更加消耗储存资源尤其是内存

软件实现

在兼容模式下,支持x86-64的64位操作系统起协调的作用。故首先是要识别程序的平台性质,如是32位还是64位
如果是32位,就在相应的程序指令前加上32位标志,CPU遇到这个标志时,就不会把程序应用在64位新特性中,为程序指定32位寄存器(虽然部分32位寄存器是64位寄存器的前一部分,但是它们的名字是不相同),内存空间也重新映射或者进行必要的转换。
也就是说,32位程序锁看到的寄存器仍然是32位的,内存只能访问4G或以下,它们不会发现CPU有任何异常

对于操作系统的软件部分,就拿Windows x64来说,它比对应的32位系统要臃肿一些,部分原因是64位指令数据要长一些,单个程序会大一些。但更明显的是操作系统中的很多东西都是“双份”的,也就是分别准备了64位的和32位的,这些主要是平台资源(如.NET框架)、资源库(如Visual C++库)和一些底层的系统工具(如CMD DXDiag)。更明显的是,打开系统分区,就能发现程序文件夹“Program Files”有两个,一个用于x86-64软件,另一个则用于x86软件。这可说明,不仅硬件完全支持x86/x86-64,操作系统也把这两个平台放在平等的地位

随着64位操作系统的推广,越来越多的软件开发者会同时在32位和64位环境下进行软件测试,保证软件的可靠性。但是要求全部开发纯64的版本是不现实的,虽然从x86过渡到x86-64理论上只需要重新编译,原来代码可以不作任何修改,但是得考虑成本因素。而且一些软件并不需要用到64位的计算特性,所以就直接写明支持x86-64位平台程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值