32 位系统与 64 位系统

32 位系统与 64 位系统

32位系统和64位系统有什么区别?

如果您都使用过它们,您感受到了什么样的明显差异?

在某些情况下在 64 位系统上使用 32 位程序会有问题吗?

答案1

注意:这些答案适用于基于 x86 的标准 PC CPU(Intel 和 AMD)和 Windows(通常为最终用户配置)。其他 32 位或 64 位芯片、其他操作系统和其他操作系统配置可能有不同的权衡。

从技术角度来看,64 位操作系统可以为您提供:

  • 允许各个进程分别处理超过 4 GB 的 RAM(实际上,大多数(但不是全部) 32 位操作系统也将总可用系统 RAM 限制为小于 4 GB,而不仅仅是每个应用程序的最大值)。

  • 所有指针都占用 8 个字节,而不是 4 个字节。对 RAM 使用的影响很小(因为您的应用程序不太可能充满 GB 的指针),但在最坏的理论情况下,这会使 CPU 缓存能够容纳 1/2 的指针(使其实际上为 1/2 的大小)。对于大多数应用程序来说,这不是什么大问题。

  • 64 位模式下有更多通用 CPU 寄存器。寄存器是整个系统中最快的内存。32 位模式下只有 8 个通用寄存器,64 位模式下有 16 个通用寄存器。在我编写的科学计算应用程序中,通过在 64 位模式下重新编译,我看到性能提升高达 30%(我的应用程序确实可以使用额外的寄存器)。

  • 大多数 32 位操作系统实际上只允许单个应用程序使用 2 GB 的 RAM,即使您安装了 4 GB 的 RAM。这是因为其他 2 GB 的地址空间保留用于在应用程序之间、与操作系统共享数据以及与驱动程序通信。Windows 和 Linux 允许您调整此权衡,将应用程序分配 3 GB,共享 1 GB,但这可能会给一些不期望这种变化的应用程序带来问题。我还猜测这可能会损坏具有 1 GB RAM 的显卡(但我不确定)。64 位操作系统可以为单个 32 位应用程序提供接近完整的 4 GB 空间。

从用户的角度来看:

  • 64 位操作系统上的 64 位应用程序通常比 32 位操作系统上的 32 位应用程序运行速度更快,但大多数用户不会看到这种加速。大多数面向普通用户的应用程序并没有真正利用额外的寄存器,或者更大的指针填满缓存抵消了这些好处。

  • 如果您有任何占用大量内存的应用程序(例如照片编辑器、视频处理、科学计算等),如果您有(或可以购买)超过 3 GB 的 RAM,并且您可以获得 64 位版本的应用程序,那么选择很简单:使用 64 位操作系统。

  • 某些硬件没有 64 位驱动程序。在切换之前,请检查主板、所有插卡和所有 USB 设备。请注意,在 Windows Vista 的早期,驱动程序存在很多问题。现在情况总体上有所好转。

  • 如果您同时运行太多应用程序,以致内存不足(通常您可以通过计算机运行速度开始变得非常慢并且您会听到硬盘驱动器发出嘎吱嘎吱的声音来判断),那么您将需要一个 64 位操作系统(和足够的内存)。

  • 您可以在 64 位 Windows 中毫无问题地运行 32 位应用程序(但不能运行驱动程序)。我测量过的 64 位 Windows 中 32 位应用程序的最严重减速约为 5%(这意味着如果在 32 位 Windows 中执行某项操作需要 60 秒,则在 64 位 Windows 中执行相同的 32 位应用程序最多需要 60*1.05 = 65 秒)。

32 位与 64 位的区别不是意味着:

在 x86 系统上,32 位与 64 位直接地指的是指针的大小。就是这样。

  • 它不指 Cint类型的大小。那由特定的编译器实现决定,大多数流行的编译器int在 64 位系统上选择 32 位。

  • 它不是直接地参考普通非指针寄存器的大小。但是,使用 64 位算术寄存器恰好要求应用程序和操作系统也以 64 位指针模式运行。

  • 它不是直接地指物理地址总线的大小。例如,具有 64 位宽缓存行和最大 512GiB 内存的系统在其地址总线中只需要 33 位(即log2(512*1024**3) - log2(64) = 33)。

  • 它不是指物理数据总线的大小:它更多地与制造成本(CPU 插槽中的针脚数量)和缓存行大小有关。

答案2

基本上,你可以做任何更大规模的事情:

  1. 每个操作系统的 RAM:x86 操作系统的 RAM 限制为 4GB(大多数情况下)
  2. 每个进程的 RAM:x86 上进程的 RAM 限制为 4GB(始终)。如果您认为这并不重要,请尝试运行大型 MSSQL 数据库密集型应用程序。如果您有可用内存,它将使用 > 4GB 内存,并且运行得更好。
  3. 地址:地址是 64 位而不是 32 位,允许您拥有使用更多内存的“更大”程序。
  4. 程序可用的句柄:您可以创建更多文件句柄、进程等...例如,在 Windows x64 上,每个进程可以创建 > 2000 个线程,但在 x86 上则接近几百个。
  5. 更广泛的可用程序:从 x64 上,您可以运行 x86 和 x64 程序。(例如 windows:wow64、windows64 仿真上的 windows32)
  6. 仿真选项:您可以从 x64 运行 x86 和 x64 VM。
  7. 快点:在 64 位 CPU 上,某些计算速度更快
  8. 划分多个系统资源:当您想要运行至少一个划分系统资源的虚拟机时,大量的 RAM 内存非常重要。
  9. 独家提供的计划:一些新程序仅支持 x64。例如 Exchange 2007。
  10. 未来将淘汰的 x86?随着时间的推移,64 位将得到越来越多的使用,而 x86 将越来越少被使用。因此,供应商将越来越多地只支持 64 位。

64 位架构的两大类型是 x64 和 IA64 架构。但 x64 是目前最受欢迎的。

x64 可以运行 x86 命令以及 x64 命令。IA64 也可以运行 x86 命令,但它不执行 SSE 扩展。Itanium 上有专门用于运行 x86 指令的硬件;它是一个模拟器,但在硬件中。

正如@Phil提到的,你可以更深入地了解这里是如何运作的

答案3

目前人们会注意到的最大影响是 32 位 PC 最多只能处理 4GB 内存。当您扣除操作系统分配给其他用途的内存时,您的 PC 可能只会显示大约 3.25GB 的可用内存。转移到 64 位后,这个限制就消失了。

如果你正在从事严肃的开发工作,那么这可能非常重要。尝试运行多个虚拟机,你很快就会耗尽内存。服务器更有可能需要额外的内存,因此你会发现服务器上 64 位的使用率远高于台式机。摩尔定律确保我们将在机器上拥有更多的内存,因此在某个时候台式机也将切换到 64 位作为标准。

有关处理器差异的更详细描述,请查看这篇来自ArsTechnica

答案4

64 位操作系统可以使用更多 RAM。实际上就是这样。64 位 Vista/7 使用更高级的安全功能来将重要组件放置在 RAM 中,但这一点并不“引人注目”。

来自 ChrisInEdmonton:

具有 PAE 的 ix86 系统上的 32 位操作系统最多可以寻址 64 GB 的 RAM。x86-64 上的 64 位操作系统最多可以访问 256 TB 的虚拟地址空间,但在后续处理器中,这个数字可能会增加到 16 EB。请注意,某些操作系统会进一步限制地址空间,并且大多数主板还会有其他限制。

相关内容