pfan123 / Articles

经验文章
169 stars 25 forks source link

计算机操作系统64位和32位的区别及原理 #107

Open pfan123 opened 2 years ago

pfan123 commented 2 years ago

很多网友在选择系统时候喜欢问同一个问题:

实际上回答这个问题之前首先应弄明白怎样区分自己的电脑是多少位,位的含义是什么?对于系统有什么影响?什么样的系统适于普通用户使用,什么样系统适于专业用户使用?

首先排除一个误区并不是64位就好,也并不是64位就比32位快,内存为4G 或以上者可以考虑64位,但并不能说明就一定能发挥64位所有优势。

64位系统和32位系统的区别

操作系统只是硬件和应用软件中间的一个平台。

我们的 CPU 从原来的8位,16位,到现在的32位和64位

CPU 处理计算的时候“数据”和“指令”是不同对待的。

8位的CPU,一次只能处理一个8位的“数据”或者一个8位的"指令"。比如'00001101'. 又比如:“+1”这个运算,你要先指示CPU做“+”,完成后再输入“1”数据给CPU。

CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。

这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011[编译器](https://www.ruanyifeng.com/blog/2014/11/compiler.html)的作用,就是将高级语言写好的程序,翻译成一条条操作码。 x86 汇编语言是最早的指令集。

8位 的CPU优点是设计简单,处理速度比较快。缺点就是,软件设计复杂,繁琐,不利于计算机的发展。

后来推出了16位的CPU,我们就可以一次处理两个字节(16位)的数据了,比如“加1”这个命令。“加”是一个指令,占用8个位,余下的8位我们可以存放数据“1”了。

32位的CPU就更加方便了,我们就可以一次处理一个a=a+b这样的命令了。

一般来讲32位的CPU对于我们来讲是最理性的CPU,对于软件开发来讲足够了。

但是2的32次方 = 4294967296 bit = 4G左右。很显然32位CPU只有4G左右的内存寻址空间,对于一些服务器来讲4G的内存的远远不够的了。

我们需要更加大的内存寻址空间的话就需要对CPU进升级。64位CPU就这样诞生了。64位CPU的内存寻址空间是2的64次方(理论上)。

计算机地址空间

但现在的 AMD 和Inter的 64位 CPU并不是真正意义上的 64CPU,只是进行了部分64位的改进,比如64位的内存寻址等。

要是真的全部都是64位的了,那么现在市场上的软件将全部被淘汰不能使用了,想像一下会是什么样子。

64位 的操作系统针对 64位 CPU 设计的,增加了一些 64位的指令,但还是和 32位兼容的。对于我们普通用户来讲64位系统意义不大。

32位电脑与64位电脑有什么不同?

我们通常说的64位技术是相对于32位而言的,这个位数指的是 CPU GPRs(General-Purpose Registers,通用寄存器) 的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行 64bit 数据。

64位平台不管是在性能上,还是在功能上,都要领先于目前的32位平台,目前主流的32位处理器在性能执行模式方面存在一个严重的缺陷:当面临大量的数据流时,32位的寄存器和指令集不能及时进行相应的处理运算。32位处理器一次只能处理32位,也就是4个字节的数据;而64位处理器一次就能处理64位,即8个字节的数据。

如果将总长128位的指令分别按16位、32位、64位为单位进行编辑的话:32位的处理器需要4个指令,而64位处理器则只要两个指令。显然,在工作频率相同的情况下,64位处理器的处理速度比32位的更快。除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位处理器的寻址空间最大为4GB,而64位的处理器在理论上则可以达到1800万个TB(1TB=1024GB)。

从32位到64位,表面上好象只是CPU字节长增大了一倍,实际上它使寻址范围、最大内存容量、数据传输和处理速度、数值精度等指标也成倍增加,带来的结果就是CPU的处理能力得到大幅提升,尤其是对强烈依赖数值运算、存在巨量数据吞吐和需要超大并发处理的应用提升效果非常明显,如科学计算、人工智能、平面设计、视频处理、3D动画和游戏、数据库以及各种网络服务器等。

目前主流CPU使用的64位技术主要有AMD公司的AMD64位技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。其中IA-64是Intel独立开发,不兼容32位计算机,仅用于Itanium(安腾)以及后续产品Itanium 2,人们习惯性地称它为“纯64位技术”。

64位计算技术从2004年推出至今,其产品线不断丰富。目前,AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技术的CPU有使用 Nocona 核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。

面对32位/64位操作系统、32位/64位常用软件如何根据电脑硬件配置进行取舍呢?

首先向大家阐明微软开发64位操作系统的初衷:满足复杂的机械分析设计、三维动画视频编辑创作和“大型”数据高性能计算等领域需要4G以上内存和浮点性能的客户特殊需求。那么,就普通用户来说,面对32位/64位操作系统和32位/64位常用软件,如何根据电脑硬件配置进行取舍呢?

那么可以综合一句话,目前为止,64位系统则针对运行大型软件工作者而言,32则针对日常玩家而言,如果仅用来娱乐,看电影,32位系统就已经足够了,若用64位系统,则是大材小用,并不能发挥出64位系统极致所在,相反有些时候玩家不是很注重系统使用规范,这样反而会适得其反。

Other Resources

汇编语言入门教程

电脑系统32位和64位的区别

你用的32位还是64位?有什么区别呢?