Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
pfan123 opened this issue Aug 15, 2022 · 0 comments
Open

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

pfan123 opened this issue Aug 15, 2022 · 0 comments

Comments

@pfan123
Copy link
Owner

pfan123 commented Aug 15, 2022

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

  • 什么是“位“?

  • 32位与64位有什么不同?

  • 我应该用什么系统?32位和64位系统那个好?

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

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

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

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

  • 32位操作系统针对的32位的CPU设计
  • 64位操作系统针对的64位的CPU设计

我们的 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位操作系统,必须建立在64位CPU基础之上;安装64位常用软件,必须建立在64位操作系统基础之上。换句话说就是:理想的“64位”,是CPU、系统、软件的“三位一体”。

  • 其二,64位CPU能够向下兼容32位操作系统。但是按照“向下兼容”安装运行32位操作系统,就会使64位CPU“运算处理快”的优势大打折扣甚至无从发挥。

  • 其三,64位操作系统向下兼容绝大部分32位常用软件。但是运行32位常用软件时,64位CPU“运算处理快”的优势同样会大打折扣甚至无从发挥。

  • 其四,目前,64位常用软件较少。64位操作系统虽有向下兼容功能,但在安装运行有些32位常用软件时,仍会出现“不大兼容”或“不兼容”的情况(不能满足需求)。

  • 其五,归根结底,最终运行的32位或64位常用软件,直接体现了64位CPU的性能发挥程度。溯本求源,64位常用软件的跟进,完全取决于64位操作系统“用户群”的多寡。

  • 其六,64位CPU并不要求“必须配置4G以上内存”。但在4G以下内存运行“特大型”软件、处理“大型”数据高性能计算时,不会享受到64位CPU带来的“超常运算速度”,甚至适得其反。

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

Other Resources

汇编语言入门教程

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant