32位和64位系统


224

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

如果您都使用了它们,那么您经历了什么样的明显差异?

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


在物理寻址(访问ram),PEA影响这一点,主板影响这一点和逻辑寻址(每个进程的虚拟内存)之间,以及在Web上的其他位置上,这里都有很多混乱。在32位操作系统上,虚拟内存限制为4GB减去内核保留的内存。它与RAM无关,您可能具有0.1MB或8GB RAM,并且您将恰好具有4GB的虚拟内存(但有些由内核保留)。PEA可以用来拥有更多的RAM,但并不是完美的答案,因为内核无法完全访问它。
ctrl-alt-delor 2012年

Answers:


264

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

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

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

  • 所有指针占用8个字节,而不是4个字节。对RAM使用率的影响很小(因为您不太可能在应用程序中填充千兆字节的指针),但是在理论上最糟糕的情况下,这可能会使CPU高速缓存能够容纳1/2个指针(使得它实际上是尺寸的1/2)。对于大多数应用程序来说,这并不是什么大问题。

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

  • 即使您已安装4 GB,大多数32位OS确实仅允许单个应用程序使用2 GB RAM。这是因为另外2 GB的地址空间被保留,用于在应用程序之间,与OS共享数据以及与驱动程序进行通信。Windows和Linux将使您可以将此权衡调整为3 GB(对于应用程序)和1 GB(共享),但这对于某些不希望更改的应用程序会造成问题。我还猜测它可能会削弱具有1 GB RAM的图形卡(但我不确定)。64位OS可以为单独的32位应用程序提供更接近完整4 GB的播放空间。

从用户的角度来看:

  • 与32位OS上的32位版本的应用程序相比,在64位OS中使用64位应用程序的应用程序速度通常更快。但是,大多数用户不会看到这种速度提高。对于普通用户而言,大多数应用程序实际上并没有真正利用额外的寄存器,否则,通过更大的指针填充高速缓存来平衡其好处。

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

  • 某些硬件没有64位驱动程序。进行切换之前,请检查主板,所有插卡和所有USB设备。请注意,在Windows Vista的早期,驱动程序存在很多问题。如今,情况通常会更好。

  • 如果您一次运行的应用程序太多,而RAM却用完(通常可以告诉您,因为您的计算机开始变得非常缓慢,并且听到硬盘驱动器崩溃的声音),那么您将需要一个64位操作系统(以及足够的RAM)。

  • 您可以在64位Windows中运行32位应用程序(但不能运行驱动程序)而不会出现问题。对于64位Windows中的32位应用程序,我测得的最差减速速度约为5%(这意味着,如果在32位Windows中执行某项操作花费了60秒,则最多花费60 * 1.05 = 65秒在64位Windows中使用相同的32位应用程序)。

什么32位与64位并没有暗示:

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

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

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

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

  • 它不涉及物理数据总线的大小:与制造成本(CPU插槽中的引脚数)和缓存线的大小有关。


8
很好的答案。尤其是因为您注意到实际上没有4gb RAM限制,而是进程内存使用限制。仅供参考,我认为您应该看看以下链接:unawave.de/windows-7-tipps/32-bit-ram-barrier.html?lang=EN
突破

8
它们是无法在64位窗口上运行的应用程序:16位应用程序/使用32位或无符号内核模式驱动程序的应用程序。对于像我这样的软件瘾君子来说,这真是很多...
fluxtendu 2010年

1
@flextendu,鉴于这些旧程序的性能要求,您几乎可以肯定在虚拟机中运行它们。使用VMware Player,Virtual PC和Virtual Box,如果您拥有精湛的32位Windows许可证,就没有理由不尝试其中之一。如果您不想这样,它们也可能也可以在“ Windows XP Mode”下工作。
Mark Booth,2010年

6
顺便说一句,除非在清单中启用了特定标志,否则32位应用程序将不使用超过2 GiB的RAM。来源:blogs.technet.com/b/markrussinovich/archive/2008/11/17/...
Hello71

是的,我确定Hello71遇到了一些很重要的事情,但这里没有介绍:大多数32位应用程序永远不会直接利用额外的RAM。我认为这值得一提,不是吗?
Django Reinhardt,

107

基本上,您可以做更大的事情:

  1. 每个操作系统的 RAM 大多数情况下,x86在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. 划分多个系统资源:当您要运行至少一个VM来划分系统资源时,大量RAM内存非常重要。
  9. 可用的专用程序:几个新程序仅支持x64。示例Exchange 2007。
  10. 将来会过时的x86 ?:随着时间的流逝,将使用越来越多的64位,而不会使用越来越多的x86。因此,供应商将仅支持越来越多的64位。

64位体系结构的两种主要类型是x64和IA64体系结构。但是x64是迄今为止最受欢迎的。

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

正如@Phil所提到的,您可以在这里更深入地了解它的工作方式


1
嗯 IA64运行x86命令。但是,它不执行SSE扩展。在Itanium上有专用于运行x86指令的硬件。它是一个模拟器,但是在硬件中。
tzot

2
几年前,雷蒙德·陈(Raymond Chen)发表了有关2000线程“限制”的文章,这或多或少是一个城市传奇:blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx
bk1e

感谢Arstechnica的解释。
2009年

2
4GB的RAM限制不是很正确(这是对家庭用户Windows系统的人为限制),请检查PAE。使用最新硬件,Linux PAE内核(默认情况下用于32位)可以处理超过4GB的内存。同样适用于FreeBSD和NetBSD。
Izzy 2012年

32位系统不能使用超过4GB(第1点)的内存,因为该地址(第3点)。因为最高的32位数字是4.294.967.296(= 4GB)。因此,您的第一和第三点是相同的。您可以删除第三个点。:)
喷气机

46

目前人们会注意到的最大影响是一台32位PC最多只能处理4GB的内存。当您取出操作系统分配给其他用途的内存时,您的PC可能只会显示大约3.25GB的可用内存。移至64位,此限制消失。

如果您正在认真发展,那么这可能非常重要。尝试运行多个虚拟机,很快就会耗尽内存。服务器更可能需要额外的内存,因此您会发现服务器上的64位使用率远远大于台式机。摩尔定律可确保我们在计算机上拥有更多的内存,因此在某些时候,台式机也将转换为标准的64位。

有关处理器差异的详细说明,请参阅ArsTechnica的这篇出色文章。


7
32位平台和4GB的限制有点用词不当,主要是(操作系统)体系结构选择/设计限制。确实,进程VA空间中32位的4GB确实是有限的。物理地址在Intel 32位CPU上支持36位
Tall Jeff

1
您提出的观点是正确的。但是,对PC用户的现实影响是,那里的计算机不会使用他们所支付的全部4GB内存。我父亲遇到了这个问题,但仍然感到困惑,因为他支付的4GB无法完全使用。

2
理解您的观点,但只是试图提出一种想法,即修补程序不在处理器中或不在64位中,这只是对OS设计进行了一些改进。例如,在Windows的企业版甚至32位版本中都可以解决此问题。它允许64GB的RAM。
高大的杰夫

从技术上讲,限制不会消失。它进一步扩展到了在未来十年左右的任何时候都不可能/不可能在机器上安装这么多RAM的地方。

请参阅我上面关于PAE的评论:4GB的限制对于整个系统不是正确的-而是仅适用于单个进程(没有进程可以访问4GB本身)-但是整个系统(即所有进程在一起)都可以启用PAE )。因此,除非安装了能够访问4GB及更高版本的应用程序(例如具有大视频文件的视频编辑器/转换器) 8GB +的应用程序,否则无论使用32位还是64位都不会有太大区别。
Izzy 2012年

31

没有什么是免费的:尽管64位应用程序可以访问的内存比32位应用程序多,但缺点是它们需要更多的内存。所有以前需要4个字节的指针,现在都需要8个字节。例如,为64位体系结构构建时,Emacs中的默认要求是增加60%的内存。这种额外的占用空间会损害内存层次结构各个级别的性能:较大的可执行文件从磁盘加载所需的时间更长,较大的工作集导致更多的分页,而较大的对象意味着较少的处理器缓存。如果考虑使用具有16K L1高速缓存的CPU,则32位应用程序可以在丢失并进入L2高速缓存之前使用4096个指针,但是64位应用程序仅在2048个指针之后就必须到达L2高速缓存。

在x64上,这可以通过其他体系结构改进(例如增加寄存器)来缓解,但是在PowerPC上,如果您的应用程序不能使用> 4G,则在“ ppc”上运行的速度可能会比“ ppc64”快。即使在Intel上,也有一些工作负载在x86上运行得更快,并且很少有x64上的运行速度超过5%。


2
这个答案表明PowerPC64不如x86-64好。事实是powerpc64并没有改善powerpc,因为powerpc没有损坏。
ctrl-alt-delor 2012年

3
Linux现在具有x32 ABI,具有x86-64的所有速度优势(更多寄存器,重新设计了ABI),但具有32位指针。+1指出64位模式的好处不是来自实际的宽度增加,而是来自减少阻碍体系结构的许多负担的机会。64bit reg对于某些应用程序很有价值,但是不太需要64bit指针空间。
彼得·科德斯

19

64位操作系统可以使用更多RAM。就是这样,实际上。64位Vista / 7在将重要组件放置在RAM中的位置时使用了更高级的安全功能,但实际上并不是那么“明显”。

从ChrisInEdmonton:

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


4
对于OS,仅32位与64位是指指针的大小(您的第一段正确讨论的内容)。-1:某些操作系统选择将默认整数大小锁定为指针大小,但是Windows和Linux都没有这样做。整数数学精度不变。没有广泛使用的OS会更改浮点精度(第二段声称)。不管操作系统使用32位还是64位指针,“ float”或“ single”都是32位,“ double”是64位。
福兹先生09年

啊,我显然弄错了,谢谢您解决这个问题:)
Phoshi

没问题。-1-> +1
Fooz先生09年

可能值得编辑您的答案以说明可以访问多少RAM。带有PAE的ix86系统上的32位操作系统可以寻址多达64 GB的RAM。x86-64上的64位操作系统最多可以访问256 TB的虚拟地址空间,尽管随后的处理器中可能会增加该虚拟地址空间,最高可达16 EB。请注意,某些操作系统会进一步限制地址空间,并且大多数主板都会有其他限制。
ChrisInEdmonton,2009年

我想保持简单,因为目前大多数数字已经足够高到可以忽略不计了,但是现在将它们坚持下去不会有什么坏处。
Phoshi

14

不知道我是否可以在不撰写整篇文章的情况下回答您的所有问题(总是有Google ...),但是您无需针对64位设计不同的应用程序。我想这是指您必须注意指针大小不再与整数大小相同的情况。对于某些类型的数据,如果假设四个字节长,可能就不再正确,因此您可能会承担很多潜在的问题。

这很可能会破坏应用程序中的所有内容-从文件保存/加载,遍历数据,数据对齐,一直到对数据进行按位操作等所有内容。如果您有一个现有的代码库正在尝试移植,或者两者都工作,那么很可能您会遇到很多麻烦。

我认为这是一个实现问题,而不是设计问题。也就是说,我认为无论照片大小如何,照片编辑包的“设计”都是相同的。我们编写的代码可以同时编译为32位和64位版本,并且两者之间的设计当然没有什么不同-它是相同的代码库。

64位的根本“大问题”是,您可以访问比32位更大的内存地址空间。这意味着您确实可以将超过4Gb的内存插入计算机,并真正发挥作用。

我敢肯定,其他答案将比我更多地进入细节和收益。

就检测差异而言,然后以编程方式仅检查指针的大小(例如,sizeof(void *))。答案为4表示其32位,而答案8则表示您正在64位环境中运行。


4
如果您编写的程序偶然假定某些指针类型的大小与某些整数类型的大小相同,则不要这样做。长期以来一直如此。
David Thornley

@大卫:你是绝对正确的。不幸的是,有大量的代码可以做到这一点。

10

一个32位进程的虚拟地址空间为4 GB。对于某些应用程序来说可能太少了。64位应用程序实际上具有无限的地址空间(当然它是有限的,但您很可能不会达到此限制)。

在OSX上还有其他优点。请参阅以下文章,为什么让内核在64位地址空间中运行(无论您的应用程序运行64还是32位),或者让应用程序在64位地址空间中运行(而内核仍为32位)却会带来更好的性能。总结一下:如果一个是64位的(内核或应用程序,或者两者都为),则每次从内核切换为使用空间并返回时,都不必刷新TLB(“翻译后备缓冲区”) RAM访问)。

同样,使用“ long long int”变量(如uint64_t这样的64位变量)也可以提高性能。一个32位CPU可以将两个64位值相加/相除/相减/相乘,但不能在单个硬件操作中进行。相反,它需要将此操作拆分为两个(或更多)32位操作。因此,一个可以在64位数字上正常工作的应用程序将能够直接在硬件中进行64位数学运算,从而提高速度。

最后但并非最不重要的一点是,x86-64架构提供了比经典x86架构更多的寄存器。使用寄存器的速度比使用RAM的速度快得多,CPU拥有的寄存器越多,将寄存器值交换到RAM并变回寄存器的需求就越少。

要了解您的CPU是否可以在64位模式下运行,可以查看各种sysctl变量。例如打开终端并输入

sysctl machdep.cpu.extfeatures

如果列出了EM64T,则您的CPU根据x86-64标准支持64位地址空间。您也可以寻找

sysctl hw.optional.x86_64

如果显示为1(真/启用),则您的CPU支持x86-64位模式;如果显示为0(假/禁用),则不支持。如果根本找不到该设置,则认为它是错误的。

注意:您也可以从本机C应用程序中获取sysctl变量,而无需使用命令行工具。看到

man 3 sysctl

错误:“ machdep.cpu.extfeatures”是未知密钥

如果您不是很不幸拥有Intel,我想它也不叫EM64T。

9

请注意,地址空间可以用于更多(实际)内存。一个人还可以对大型文件进行内存映射,这可以在更奇特的访问模式下提高性能,因为更强大,更高效的块级VM级别的缓存得以实现。在64位上分配大内存块也更安全,因为堆管理器更少可能会遇到地址空间碎片,这将使其无法分配大块。

该线程中所说的某些内容(例如#寄存器加倍)仅适用于x86-> x86_64,通常不适用于64位。就像在x86_64下保证有SSE2、686个操作码和一种廉价的PIC方式这样的事实。这些功能严格来说不是关于64位的,而是关于减少旧版和补救已知的x86限制的。

而且,很多时候人们指出将寄存器加倍是加速的原因,而更可能的是使用默认的SSE2来达到目的(加速memcpy和类似功能)。如果为x86启用了相同的集合,则差异会小得多。(*)(***)

还请记住,通常会涉及初始损失,因为平均数据结构将仅由于指针的大小增加而增加。这也具有缓存效果,但值得注意的是,平均memcpy()(或任何与您的语言等效的内存复制)将花费更长的时间。这只是btw的百分之几,但是上面提到的提速也是如此。

通常,对齐开销在64位体系结构上也更大(以前的32位记录通常仅会变成32位和64位值的混合),从而使结构崩溃的可能性更大。

总体而言,我的简单测试表明,如果驱动程序和运行时库已完全适应,它们将彼此大致抵消,而对于普通应用程序而言,速度没有明显差异。但是,某些应用程序可能突然变得更快(例如,取决于AES)或变得更慢(关键数据结构不断移动/扫描/遍历并且包含很多指针)。尽管这些测试是在Windows上进行的,所以PIC的优化未进行基准测试。

请注意,大多数JIT-VM语言(Java,.NET)平均(内部)使用的指针比C ++多得多。它们的内存使用量可能比普通程序增加的更多,但我不敢将其直接等同于减慢效果(因为它们确实是复杂而又时髦的野兽,并且经常难以测量而无法预测)

Windows 64位默认使用SSE2作为浮点,这似乎可以加快简单操作的速度,并降低复杂的(sin,cos等)操作的速度。

(*)一个鲜为人知的事实是SSE寄存器的数量在64位模式下也翻了一番

(**)多布斯博士几年前有一篇很好的文章。


8

除了大多数人在这里提到的明显的内存空间问题外,我认为值得一提的是Knuth(以及其他人)最近在谈论的“流行词计算”的概念。通过位操作可以获得很多效率,并且对64位字的按位操作比对32位字的操作要远得多。简而言之,您可以在寄存器中执行更多操作而无需占用内存,并且从性能的角度来看,这是一个巨大的胜利。

看一下Fascicle 1A之前的第4卷,其中有一些我正在谈论的绝妙技巧的示例。


7

除了具有寻址更多内存的能力以外,x86_64还具有更多寄存器,可让编译器生成更有效的代码。但是,性能提升通常会很小。

x86_64体系结构与x86向后兼容。可以运行未修改的32位操作系统。也可以从64位操作系统运行未修改的32位软件。不过,这将需要所有常用的32位库。它们可能需要单独安装。


更多的寄存器和重新设计的ABI(在寄存器中传递函数args)通常会提高10%到15%,这是相当不错的。现在有一个带有32位指针的x32 Linux ABI,但是使用amd64 long模式和args-in-registers调用约定。因此,您将拥有amd64的所有速度优势,而无需每个指针都需要64位的开销。它对不需要> 4GB(虚拟)内存的所有内容都有好处。
彼得·科德斯

6

该线程已经太长,但是...

大多数答复都集中在您拥有更大的64位地址空间这一事实上,因此您可以寻址更多的内存。对于大约所有应用程序的99%,这是完全不相关的。大声呐喊。

64位良好的真正原因不是寄存器更大,而是寄存器的两倍!这意味着编译器可以将更多的值保留在寄存器中,而不必将它们溢出到内存中,并在以后的一些指令中重新加载它们。如果并且当一个优化的编译器为您展开循环时,它可以展开大约两倍的循环,这确实可以提高性能。

同样,已经定义了用于64位的子例程调用者/被调用者约定,以将大多数传递的参数保留在寄存器中,而不是调用者将它们压入堆栈,而被调用者将其弹出。

因此,仅通过重新编译64位,“典型” C / C ++应用程序即可获得大约10%或15%的性能提升。(假设应用程序的某些部分受计算限制。当然,这是不保证的;所有计算机都以相同的速度等待。您的里程可能会有所不同。)


尽管针对x64的指令集比针对x86的指令集更好,但这通常并不重要。同样,64位代码可能比32位慢,因为指令可能变得更大,因此容纳在缓存中的代码更少。(展开循环BTW在当今是一种非常可疑的技术,因为它会增加高速缓存未命中的次数。)在我工作的地方,我们需要64位来增加内存寻址。
David Thornley,2009年

David,x64和x86指令集几乎相同,除了操作数大小和某些寄存器前缀。如果使用IA64(又称为Itanium,又称为Itanic),则64位代码通常是x86代码的3倍,并且完全按照您所说的那样来处理指令缓存。这就是为什么该架构惨遭失败的一个重要因素。但是使用x86 aka AMD64 aka EM64T,该代码增长通常仅为10-20%。

尽管x64使更多的寄存器可寻址,但我不确定它实际上增加了多少可用的物理寄存器-所有最新的x86处理器都具有许多(> 100)“影子”寄存器,并使用“寄存器重命名” +投机执行允许独立的代码路径在一定程度上并行执行。实际上,如果正在执行n个独立的代码路径,则n倍的寄存器可用(直到所有影子寄存器用完)。

@j_random_hacker。这些技巧正在体系结构中进行是绝对正确的。但是,不管有多少影子寄存器可用,如果程序需要处理8个以上的数据项,并且指令集中仅公开8个寄存器,则编译器必须生成存储/重载指令。所以是的,X64确实使“可用”寄存器的数量增加了一倍

我的经验是,这种方法要少得多,并且会因要移动的平均内存块较大而被抵消。
Marco van de Voort,2009年

6

除了已经提到的优点外,这里还有一些有关安全性的内容:

  • x86_64 cpus在其页表中确实具有不执行位。即,这可以防止由于缓冲区溢出而导致的安全漏洞。32位x86 cpus仅在PAE模式下支持此功能。
  • 更大的地址空间可实现更好的地址空间布局随机化(ASLR),这使得对缓冲区溢出的利用更加困难。
  • x86_64 cpus功能与位置无关的代码,即相对于指令指针寄存器(RIP)的数据访问。

我想到的另一个优点是,vmalloc()在64位模式下,Linux内核中分配的虚拟连续内存量可能更大。


5

对于32位计算机,您只有4,294,967,295字节的内存可寻址。对于64位计算机,您具有1.84467441×10 ^ 19字节的内存。

维基百科说了这一点

64位处理器计算特定任务(例如大数字的阶乘)的速度是在32位环境中工作的两倍(给出的示例是从32位和64位Windows计算器之间的比较得出的;值得注意的是100000的阶乘) )。这使您对64位优化应用程序的理论可能性有了大致的了解。

尽管64位体系结构无疑使在数字视频,科学计算和大型数据库等应用程序中处理大数据集变得更加容易,但是对于它们还是它们的32位兼容模式是否会比同等价格更快的速度存在争议。用于其他任务的32位系统。在x86-64架构(AMD64)中,大多数32位操作系统和应用程序都可以在64位硬件上平稳运行。

与32位虚拟机相比,Sun的64位Java虚拟机的启动速度较慢,因为Sun仅为64位平台实现了“服务器” JIT编译器(C2)。[9] “客户端” JIT编译器(C1)产生的代码效率较低,但编译速度更快,在64位平台上不可用。

应当注意,在比较32位和64位处理器时,速度不是唯一要考虑的因素。如果部署正确,则多任务,压力测试和群集(用于高性能计算)HPC等应用程序可能更适合于64位体系结构。因此,64位群集已广泛部署在IBM,HP和Microsoft等大型组织中。


2
物理地址总线的长度与32位或64位处理器无关。某些32位处理器的地址总线大于32位,并且没有64位处理器的64位地址总线。

1
同意 从理论上讲,地址空间为2 ^ 64。实际上,CPU制造商使用较小的值,例如2 ^ 40或2 ^ 48。
Stu Thompson

5

Microsoft.com的报价:

在下表中,将基于Windows 64位版本和64位Intel处理器的计算机增加的最大资源与现有的32位资源最大值进行了比较。

MS表


2
有趣,但值得注意的是,某些32位版本的Windows允许更多的物理内存。参见例如,en.wikipedia.org / wiki /…
ChrisInEdmonton,2009年

@ChrisInEdmonton系统确实支持超过4GB或内存,但是每个进程的地址仍限制为2GB(具有大地址意识的3GB)。因此,即使您的系统有很多内存,它仍然无法帮助那些内存很大的程序,并且性能仍然落后于64位版本。而且,它对ASLR和内存映射文件的地址范围要小得多
phuclv 2014年

4

Kristof和Poshi指出了32位和64位操作系统之间的主要技术差异,用户体验通常与理论上存在很大差异。迄今为止,Windows的64位消费者版本(XP和Vista)在驱动程序支持方面存在很大的漏洞。我有很多打印机,扫描仪和其他外部设备无法与64位版本一起使用,而32位版本可以正常使用。这些设备具有64位驱动程序,但仍然无法正常工作。在这一点上,我建议您远离任何来自Microsoft的基于64位消费者的应用程序,直到您从真正的最终用户那里了解到Windows 7如何处理此问题为止,而不仅仅是当前可以使用它的超级极客。给它至少六个月的时间,看看人们正在经历什么。


可能会有更少的驱动程序,但是听起来并不算差。自2007年以来,我一直在运行64位,并且从未遇到任何困难。话虽如此,我没有连接任何晦涩或古老的设备。
RomanSt

1
我最近使用Vista 64位操作系统的是上个月在使用2个月的Dell系统上使用的全新HP多功能打印机。戴尔和惠普都放弃了,我的客户付钱给我换上XP Pro并摆脱Vista。任何一个都没什么晦涩难懂的。
凯文·K

1
通常,如果您购买的计算机具有64位操作系统,则一切正常。在尝试更新较旧的计算机之前,或者如果我具有较旧的打印机,或者如果我想自己进行升级,我会很小心。
David Thornley,2009年

想要在Windows上使用Works经过认证可与Windows徽标一起使用的硬件,必须提供64位驱动程序。也许下次再找。但是确实,有时候厂商不会为消费者的硬件打扰,因为大多数消费者可能仍会使用32位。
乔伊

2

一些游戏程序使用位图表示。例如,国际象棋,棋子和奥赛罗有8x8的电路板,即64个正方形,因此在一个机器字中至少有64位可以显着提高性能。

我记得曾经读过一个象棋程序,它的64位编译速度几乎是32位版本的两倍。


2

术语32位和64位是指计算机处理器(也称为CPU)处理信息的方式。Windows的64位版本比32位系统更有效地处理大量随机访问内存(RAM)。

我认为速度可能会有所不同


1

关于Microsoft Windows的这一点的另一点是,多年以来一直存在Win32 API,该Win32 API用于32位操作系统,并且未针对64位编译进行优化。当我为应用程序编写一些DLL时,我通常会在Win32中进行编译,而Win32并不是64位版本。在Vista之前,我相信没有很多成功的64位Windows版本,因为我的工作场所是我的新机器具有4 GB的RAM,但是我仍在使用32位Windows XP Pro,因为它是已知的稳定O / S相对于XP64或Vista。

我认为您可能还想回顾一下从16位转换到32位的情况,以了解更多有关为何这种转换对某些人来说很重要的更多详细信息。公司可能在台式机上运行的任务关键型应用程序(例如小型会计程序包)可能无法在64位操作系统上运行,因此有必要使虚拟机或虚拟机始终处于旧状态。

更改地址的大小可能会产生很大的影响和影响。


1

对于大多数实际目的,您可能不会注意到差异。

您必须具有64位CPU(最近几年中的大多数CPU)才能安装64位操作系统。

64位操作系统有一些优点:

  • 它将允许您运行超过4GB的RAM(在32位操作系统中可以寻址的最大数量为2 ^ 32 = 4GB)
  • 这对于处理大型数据集(例如在Excel中)和某些计算量大的任务(例如Photoshop和大文件)很有帮助
  • 您只能在64位OS上运行64位程序,但可以在两个OS上都运行32位程序(请注意,很多程序都是同时提供的,因此没有太多的64位程序程式)。

在大多数情况下,64位程序会使用更多的内存,但是对于个人计算机,通常不会注意到这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.