32 位操作系统可以在 64 位处理器上运行吗?

32 位操作系统可以在 64 位处理器上运行吗?

32 位操作系统和 64 位操作系统有什么区别?32 位操作系统可以在 64 位处理器上运行吗?

答案1

您的问题与架构有关。x64 本质上是 x86 架构的扩展。它支持 64 位地址空间。它提供了一些新指令和新寄存器。

您可以在 x64 机器上运行 32 位 x86 Windows。请注意,您无法在 Itanium 64 位系统上执行此操作。

答案2

64 位处理器可以运行 32 位和 64 位操作系统(至少 x64 可以)。32 位处理器只能原生运行 32 位。

区别在于大多大约是指针/引用的大小。在 64 位机器上,您可以引用 64 位地址范围内的地址(从而为您提供 2^64 字节的内存)。在 32 位上,您只能寻址 2^32 字节(=4 GB)。现在,如果您查看当前的计算机,就会明白为什么世界正在转向 64 位:32 位不再能轻松寻址所有 RAM。

在 x64 (AMD/Intel) 上,您可以享受 64 位的额外优势。CPU 拥有更多寄存器,因此可以运行更高效的代码。

在其他架构上,64 位和 32 位之间的差异不太明显。例如,任天堂 64(还记得吗?)是一台 64 位机器,但其大部分代码都是 32 位。因此在这种情况下,64 位更像是一种营销手段。

答案3

目前公认的答案一般是正确的,但并不具体。实际上并不存在所谓的“32 位 CPU”或“64 位 CPU”——这只是对 CPU 架构的一小部分的描述。具体来说,它指的是 CPU 和内存之间的地址选择线的数量,即所谓的地址空间可用于内存操作。

在过去,当人们坐下来编织(缠绕)处理器和内存之间的线路时,您必须在 CPU 和内存控制器之间使用 32 或(理论上,因为当时不存在)64 条线路,这些线路将用于指定要访问的内存地址。例如,假设我们有一个 2 位内存架构:发送 00 将选择地址 0,01 将选择地址 1,10 将选择地址 2,11 将选择地址 3。这 2 位为我们提供 2^2 字节的 RAM(4 字节)。

如果您使用 32 位 CPU,并在 CPU 和内存控制器之间添加 32 条线路,以便能够神奇地支持更多内存,那么您现在就拥有了一个可以运行 32 位代码或 64 位代码的“64 位 CPU”。这是什么意思?这是怎么发生的?好吧,让我们从本答案的前面部分中取出 2 位 CPU,并添加另一条线路,将其变成 3 位 CPU,将 RAM 从 4 字节变为 2^3 或 8 字节。

现有的“2 字节”代码将运行,设置最后 2 条线的值,如上所示 (00-11)。我们将默认将额外连接设置为零,因此实际上当 2 字节代码运行时,当它选择 00 时,它实际上是选择 000,而当它选择 11 时,它实际上是选择 011。很简单。

现在,程序员想要编写“原生”3 字节代码,并编写软件以利用额外的地址空间。她告诉 CPU,她知道自己在做什么,并且将手动控制新的额外线路。她的软件知道额外的线路,并正确地发送 000-111,使她能够完全访问此新 CPU 架构支持的内存范围。

但事情并不一定非得这样发生。事实上,这通常是不是事情是如何发生的。当 64 位 CPU 首次推出时(有很多),它们都采用了全新的架构/设计。它们并不是简单地添加额外的 32 条线路并说“好了,这是一个 64 位 CPU,您可以在 32 位或 64 位模式下使用”,而是说“这是我们的新 CPU,它只需要用这种全新的机器语言进行编程,以这种全新的方式运行,比旧的 x86/i386 32 位 CPU 更优雅地解决了无数不同的问题,而且它是一个原生的 64 位架构。玩得开心。”

这就是英特尔安腾 (Intel Itanium) 的故事,由于其沉没的程度之大,现在被称为“Itanic”。它本应预示着新的 64 位时代的到来,而且确实值得一看。可变长度指令、巨大的缓存、64 位地址空间、大量寄存器,超级令人兴奋、超级酷,而且很难说服每个人重新编译或重写 20 年的遗留代码。当时 AMD 和英特尔实际上正在竞争,AMD 提出了一个绝妙的想法,说“让我们忘掉所有这些‘解决世界上所有问题’的业务,只需在 i386 上增加 32 条线路,制造一个兼容 32 位的 64 位 CPU”,x86_64 CPU 架构就此诞生。

事实上,如果您查看主要操作系统(Linux、Windows、BSD 等)的内核名称和源代码,您会发现它们充斥着对 AMD64 CPU 和 AMD64 架构的引用。AMD 想出了一个成功的策略,让每个人都转向 64 位世界,同时保持与 32 位应用程序的兼容性,这样 32 位操作系统就可以在 64 位硬件上运行,甚至 32 位应用程序也可以在 64 位硬件上的 64 位操作系统上运行。英特尔很快跟进,推出了“Intel EM64T”架构(与 AMD64 基本相同),x86_64 胜出,而 Itanic 和 MIPS64 和 ALPHA64 等其他架构在桌面/服务器市场上已不复存在。

tl;dr amd64 又名 x86_64 CPU 被设计为兼容 32 位和 64 位内核和代码,但大多数 64 位 CPU 显然不是以同样的方式向后兼容。32 位 CPU 最多可以访问 4GiB 内存,而 64 位 CPU 可以访问惊人的 16 EiB(16 × 1024^6 字节,或 4十亿内存是 4GiB 的几倍)。

答案4

32 位和 64 位操作系统都可以在 64 位处理器上运行,但 64 位操作系统可以充分利用 64 位处理器的功能(更大的寄存器、更多的指令)——简而言之,它可以在相同的时间内完成更多的工作。32 位处理器仅支持 32 位 Windows 操作系统。

相关内容