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

如果您同时使用了这两种系统,您会遇到什么样的尖锐差异?

在某些情况下在64位系统上使用32位程序是否会出现问题?

评论

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

#1 楼

注意:这些答案适用于基于x86的标准PC CPU(Intel和AMD)和Windows(通常为最终用户配置)。其他32位或64位芯片,其他操作系统以及其他操作系统配置可能会有不同的权衡。 >
允许单个进程分别处理超过4 GB的RAM(实际上,大多数(但不是全部)32位操作系统也将总可用系统RAM限制为少于4 GB,而不仅仅是每个应用程序的最大值) 。
所有指针占用8个字节,而不是4个字节。对RAM使用率的影响很小(因为您不太可能在应用程序中填充千兆字节的指针),但在理论上最糟糕的情况下,这可能会使CPU高速缓存能够容纳1/2个指针(它实际上是尺寸的1/2)。对于大多数应用程序来说,这并不是什么大问题。
还有更多的64位模式通用CPU寄存器。寄存器是整个系统中最快的内存。在32位模式下只有8个,在64位模式下只有16个通用寄存器。在我编写的科学计算应用程序中,通过以64位模式重新编译,我看到了30%的性能提升(我的应用程序实际上可以使用额外的寄存器)。
大多数32位OS确实只能让即使已安装4 GB,单个应用程序也会使用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位OS。
有些硬件没有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类型的大小。这是由特定的编译器实现决定的,大多数流行的编译器在64位系统上选择32位int
它不直接引用普通非指针寄存器的大小。但是,使用64位算术寄存器恰好要求应用程序和OS也以64位指针模式运行。
它不直接涉及物理地址总线的大小。例如,具有64位宽的高速缓存行和最大512GiB内存的系统在其地址总线(即log2(512*1024**3) - log2(64) = 33)中仅需要33位。
它不是指物理数据总线的大小:更多与制造成本(CPU插槽中的引脚数)和缓存线大小有关。


评论


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

–突破
2010年1月13日,12:25

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

–fluxtendu
2010-2-26在19:21



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

– Mark Booth
2010年5月4日13:14

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

– Hello71
2010年8月25日14:37



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

– Django Reinhardt
2011-02-15 13:14

#2 楼

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




每个操作系统的RAM:x86操作系统的RAM限制为4GB(大多数情况下)

每个进程的RAM:x86上进程的RAM限制为4GB(始终)。如果您认为这并不重要,请尝试运行大型MSSQL数据库密集型应用程序。如果有可用空间,它将自身使用> 4GB并运行得更好。

地址:地址是64位而不是32位,从而使您拥有使用更多内存的“更大”程序。
<程序可用的句柄:您可以创建更多的文件句柄,进程,...在Windows x64上,每个进程可以创建2000个线程,但在x86上则接近数百个。

可用的其他程序:在x64上,您可以运行x86和x64程序。 (示例Windows:wow64,Windows64仿真上的Windows32)

仿真选项:在x64上,您可以同时运行x86和x64 VM。

更快:某些计算在a 64位CPU

划分多个系统资源:要运行至少一个VM来划分系统资源时,大量RAM内存非常重要。

可用的专用程序:几个新程序仅支持x64。示例Exchange2007。

x86会过时吗?:随着时间的推移,将使用越来越多的64位,而不会使用越来越多的x86。因此,供应商将越来越多地仅支持64位。

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

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

评论


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

–tzot
08-09-25 at 14:06

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

– bk1e
08-09-26 at 4:02

感谢Arstechnica的解释。

– Avihu Turzion
09年8月5日在7:29

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

–晕
2012年7月2日14:58



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

– Jet
2013年9月26日在16:40



#3 楼

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

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

有关处理器差异的详细说明,请查看此出色的产品。 ArsTechnica的文章。

评论


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

–高杰夫
08-09-25 at 12:38

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

–菲尔·赖特(Phil Wright)
08-09-25 at 12:41

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

–高杰夫
08-09-25 at 12:47

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

–Jason Z
08-09-25 at 13:40

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

–晕
2012年7月2日在15:04

#4 楼

没有什么是免费的:尽管64位应用程序可以访问的内存比32位应用程序多,但缺点是它们需要更多的内存。所有那些以前需要4个字节的指针,现在都需要8个字节。例如,为64位体系结构构建时,Emacs中的默认要求是增加60%的内存。这种额外的占用空间会损害内存层次结构各个级别的性能:较大的可执行文件从磁盘加载所需的时间更长,较大的工作集导致更多的分页,而较大的对象意味着较少的处理器缓存。如果考虑使用具有16K L1高速缓存的CPU,则32位应用程序可以在丢失并进入L2高速缓存之前使用4096个指针,但是64位应用程序仅在2048个指针之后就必须到达L2高速缓存。 br />
在x64上,可以通过其他体系结构改进(例如更多的寄存器)来减轻这种情况,但是在PowerPC上,如果您的应用程序不能使用> 4G,则在“ ppc”上运行的速度可能会比“ ppc64”快。即使在Intel上,也有一些工作负载在x86上运行得更快,并且很少有x64上的运行速度比x86快5%以上。

评论


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

–ctrl-alt-delor
2012年9月13日在21:53

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

– Peter Cordes
15年7月15日在16:26

#5 楼

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

来自ChrisInEdmonton :


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


评论


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

–福斯先生
09-10-17在17:40

啊,我显然弄错了,感谢您清理掉了:)

– Ph子
09-10-17在18:03

没问题。 -1-> +1

–福斯先生
09-10-17在18:26

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

– ChristInEdmonton
09-10-30在12:49

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

– Ph子
09-10-30在13:21

#6 楼

不知道我是否可以在不撰写整篇文章的情况下回答您的所有问题(总是有Google ...),但是您不需要针对64位设计不同的应用程序。我想这是指您必须注意诸如指针大小不再与整数大小相同的事情。而且,对于某些类型的数据(长度为四个字节)的内在假设,您可能会承受大量潜在问题,这可能不再成立。

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

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

64位的基本“重要之处”是您可以访问内存地址空间比32位大得多。这意味着您可以真正将超过4Gb的内存插入计算机,并真正发挥作用。

我相信其他答案将比我更详细地介绍和受益。

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

评论


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

– David Thornley
08年11月25日在21:16

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

– j_random_hacker
09年5月25日在10:38

#7 楼

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

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

使用“ long long int”变量(如uint64_t之类的64位变量)时,也可以提高性能。一个32位CPU可以将两个64位值相加/相除/相减/相乘,但不能在单个硬件操作中进行。相反,它需要将此操作拆分为两个(或更多)32位操作。因此,一个可以在64位数字上正常工作的应用程序将能够直接在硬件中完成64位数学运算。因此,但并非最不重要的一点是x86-64架构比经典的x86体系结构。使用寄存器的速度比使用RAM的速度快得多,CPU拥有的寄存器越多,将寄存器值交换到RAM并返回到寄存器的频率就越少。

查找CPU是否可以运行在64位模式下,您可以查看各种sysctl变量。例如。打开终端,然后键入
如果它列出了EM64T,则您的CPU支持x86-64标准的64位地址空间。您也可以查找

sysctl machdep.cpu.extfeatures


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

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

sysctl hw.optional.x86_64


评论


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

– alamar
09年5月29日在12:55

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

– alamar
09年5月29日在12:56

#8 楼

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

该线程中所说的某些内容(例如将#寄存器加倍)仅适用于x86-> x86_64 ,而不是一般的64位。就像在x86_64下保证有SSE2、686个操作码和一种便宜的PIC方式这样的事实一样。这些功能严格地说不是关于64位的,而是关于减少遗留的和纠正已知的x86限制的。使用SSE2可以解决问题(加速memcpy和类似功能)。如果为x86启用相同的集合,则差异会小得多。
(*)
(***)

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

总体而言,我的简单测试表明,如果驱动程序和运行时库已完全适应,它们将彼此大致抵消,而对于普通应用程序而言,速度没有明显差异。但是,某些应用程序可能突然变得更快(例如,取决于AES时)或变得更慢(关键数据结构不断移动/扫描/遍历并且包含很多指针)。虽然测试是在Windows上进行的,所以没有对PIC优化进行基准测试。 C ++。它们的内存使用量可能比普通程序增加的更多,但我不敢将其直接等同于减慢效果(因为它们确实是复杂而又时髦的野兽,并且经常无法测量而难以预测)
Windows 64位默认使用SSE2进行浮点运算,这似乎可以加快简单操作的速度,并降低复杂的(sin,cos等)操作的速度。

(*)鲜为人知的事实是, SSE寄存器在64位模式下也加倍。

(**)几年前Dobbs博士发表了一篇不错的文章。

#9 楼

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

#10 楼

除具有寻址更多内存的能力外,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(虚拟)内存的所有内容都有好处。

– Peter Cordes
15年7月15日在16:22

#11 楼

这个线程已经太长了,但是...

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

64位有效的真正原因不是寄存器更大,而是寄存器的两倍!这意味着编译器可以将更多的值保留在寄存器中,而不用将其溢出到内存中,并在稍后的一些指令中重新加载。如果并且当一个优化的编译器为您展开循环时,它可以展开大约两倍的循环,这确实可以提高性能。定义为将大多数传递的参数保留在寄存器中,而不是调用方将它们压入堆栈,而被调用方将其弹出。仅通过重新编译64位,性能可提高15%。 (假定该应用程序的某些部分受计算限制。当然,这不能保证;所有计算机都以相同的速度等待。您的里程可能会有所不同。)

评论


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

– David Thornley
09年5月1日21:45

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

–死在Sente
09年5月1日在22:38

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

– j_random_hacker
09年5月26日在16:41

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

–死在Sente
09年5月27日在20:54

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

– Marco van de Voort
09年5月29日在12:40

#12 楼

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

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

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

#13 楼

对于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位硬件上顺利运行。
Sun的64位Java虚拟机的启动速度比其64位虚拟机慢。 32位虚拟机,因为Sun仅为64位平台实现了“服务器” JIT编译器(C2)。[9] “客户端” JIT编译器(C1)产生的代码效率较低,但编译速度更快,在64位平台上不可用。
应注意,在比较32时,速度不是唯一要考虑的因素位和64位处理器。如果正确部署,诸如多任务,压力测试和群集(用于高性能计算)HPC等应用程序可能更适合于64位体系结构。因此,64位群集已广泛部署在IBM,HP和Microsoft等大型组织中。


评论


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

–尼克·约翰逊(Nick Johnson)
08-09-25在12:25

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

– Stu Thompson
08-09-25 at 12:34

#14 楼

Microsoft.com的报价:


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




评论


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

– ChristInEdmonton
09-10-30在12:51

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

–phuclv
2014年6月5日在8:34

#15 楼

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

评论


可能会有更少的驱动程序,但实际上还没有听起来那么糟糕。自2007年以来,我一直在运行64位,从未遇到任何困难。话虽如此,我没有连接任何晦涩或古老的设备。

–RomanSt
09-10-17在16:04

我最近使用Vista 64位操作系统的是上个月在使用2个月的Dell系统上使用的全新HP多功能打印机。戴尔和惠普都放弃了,我的客户付钱给我换上XP Pro并摆脱Vista。这两个单元都没什么晦涩的地方。

–凯文K
09-10-20在20:28

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

– David Thornley
09-10-30在14:02

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

–乔伊
2010-12-23 17:07

#16 楼

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

我记得读过一篇有关其棋子程序的文章64位构建的速度几乎是32位版本的两倍。

#17 楼

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

#18 楼

关于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位操作系统上运行,因此有必要在虚拟机或真实机上保留旧机器。

更改地址的大小可能会带来很大的影响和影响。

#19 楼

出于大多数实际目的,您可能不会注意到有什么区别。

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

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


它可以让您运行超过4GB的RAM(在32位操作系统为2 ^ 32 = 4GB)
对于处理大型数据集(例如,在Excel中)和某些计算量大的任务(例如,Photoshop和大文件)很有帮助
在64位OS上可以运行64位程序,但是您可以在两个程序上都运行32位程序(请注意,很多程序都同时运行,所以没有太多的仅64位程序)。 />
在大多数情况下,64位程序会使用更多的内存,但是对于个人计算机,通常不会注意到这一点。