说在前面
我们平时经常会听到诸如这个软件是64位的,那个操作系统是32位的等此类话语,之前一直处于无感的状态,直到有一次培训,我32位的excel
无法安装上64位中文版水晶球插件,这就勾起了我想了解其中缘由的兴趣。
那么64位的究竟比32位区别在哪里?我们可以任何时候都义无反顾的选择64位吗?让我们带着疑问一起走近科学。
冯诺依曼模型
在冯诺依曼模型中,他提出了内存的存储单位是二进制进行运算,计算机内部存储器来保存运算程序,这两个方案大大加快了计算机的速度和运算效率。
内存:存储的数据单位是一个二进制位,单位为bit。存储的单位叫做字节,单位为byte,一个字节对应一个内存地址, 1 byte = 8 bit 。
除了操作系统和应用程序,cpu
其实也是有位数的。大家都知道 cpu
负责计算,32位cpu
每次可以计算4个byte
,64位cpu
每次可以计算8个byte。
简单来算一下,一个byte
是8bit
,表示的范围就是0~255,按照这个范围来说,单讲计算能力,其实32位已经可以满足现实生活中绝大部分需求了。
总线
CPU和内存以及其他设备之间,需要通信,此时就需要总线的参与。那数据是如何通过线路来传递呢?答案是电压,低电压是0,高电压是1。
想像一下,如果想传递8这个数据,需要发送 1000
,如果总线有4条一次就可以发送过去,如果总线有1条,则需要发送4次,我们现在可以达成一个共识,总线越多,处理大数据传递的速度越快。 如果我们电脑CPU
是32位,那么就代表着有32条总线,2^32 = 4 * 2^30(byte) = 4GB
,好的,现在我们又知道了,32位的cpu
对应32位的操作系统(软件),只能支持4GB
的内存,反之,64位的则可以支持更大的内存。
结论
如果32位cpu
配了8G
的内存会怎么样呢?答案是和4G
内存一个样,完全不会有速度的提升。
32位的cpu
可以读入64位的数字吗?可以!通过一些算法,可以将64位的数字分两次读入,但是涉及到读入两次以及相关的计算,速度会慢一些。
32位的程序可以装在64位的机器上吗?可以兼容。反过来呢,64位的程序装在32位系统上,需要一套兼容机制,不一定能兼容。
因为之前自己不是很了解,学习了以后分享给大家。