为什么Windows 7 x64在我的PC上比x86版本工作更快?


11

为什么Windows 7 x64在我的PC上大多数使用x86功能,但在我的PC上却比x86版本的工作速度更快?我怎么了,我想念什么?

我使用的大多数东西都是x86(例如DAW,游戏,媒体播放器)。但是,它们中的相当大一部分是x64(尽管与x86对应的x64可以正常工作)。

我曾尝试在同一系统上使用相同的东西,但始终最终发现Windows 7 x64的运行速度略快于x86。我很观察 我什至注意到最小的窗口动画。

系统:Windows 7 Ultimate x64
CPU:Intel Core 2 Duo E7500 @ 2.93 GHz
RAM:2 GB x 2 = 4 GB DDR2 @ 332 MHz
主板:Intel D945GCNL
图形:ATI Radeon HD 4350 @ 1 GB专用
音频:M-Audio FastTrack Pro
硬盘:三星HD753LJ 733 GB和三星HD160JJ 156 GB

如您所见,我的系统很旧。


4
对于初学者,64位Windows将使用您分配的所有RAM。

3
您为什么关心它更快?您应该为它感到高兴。
Matt H

@Randolph我明白了,但是这如何影响x86?@马特不,我很高兴。我很好奇 对于我的一生,我无法理解为什么会这样。
贾斯珀

您主要是想像这种效果,因为您希望看到它。速度因PC的不同而不同,甚至同一台PC内的速度也有许多不同,这些因素远比从32位到64位的速度要重要得多。任何新安装的PC似乎都可以通过减少堆积物来实现更快的速度。
JamesRyan '16

Answers:


8

尝试通过汇总来自单个已有答案的位以及一些附加内容来提供完整答案。该列表试图涵盖一般情况下的所有可能性,即使可以排除这种情况下的某些可能性。

CPU指令集差异

Joel Coehoorn所述,对于本机x64代码,可以使用更大的寄存器集以及一些其他指令(例如,保证所有x64 CPU都实现SSE和SSE2指令)。这意味着本机x64 OS和驱动程序可以更高效。

更好的RAM利用率

64b 可以使用完整的4 GB(可用时甚至更多)。而且,使用64b OS增加某些操作系统内部限制(分页/非分页缓冲池,最大缓存大小)。结果,内存分页和文件缓存都可能更有效。

硬盘位置不同

当您在同一张光盘的两个分区上安装了两个OS时,这两个分区之一靠近外部边缘,通常更快

不同的操作系统状态

当您有两个操作系统时,每个操作系统可能处于略有不同的状态。其中一个可能比另一个更分散,其中之一的注册表可能更干净,或者安装的服务或后台应用程序比另一个少。

更好的司机

另一个可能性是x64驱动程序的质量可能比x8​​6更好,这不是因为某些基本体系结构差异,而仅仅是因为它们的供应商花费了更多精力来优化和微调它们。

64b寻址

我之所以添加它只是出于完整性的考虑,因为对于大多数日常应用程序而言,这种区别不起作用,并且绝对与Jasper在他的问题中描述的内容无关。

如果您有一个处理大量数据的应用程序(例如,在Photoshop中处理大量图片),则运行64b版本可能会产生很大的不同,前提是您安装了4 GB或更多的RAM。

“更快”的真正含义是什么?

以下是其他答案的评论列表,Jasper可以看到的“更快的东西”到底是什么:

  • Windows动画更流畅

说不清。Windows动画由Windows 7中的GPU完成,并且GPU相同。CPU上的负载可以忽略不计。(我想您正在使用Aero桌面)。

  • 某些照片编辑程序绘制速度更快(x86和x64)
  • 高清视频运行更加流畅(在MPC-HC x64上),并且整体上更加稳定。

可以更好地调整驱动程序或利用x64,的驱动程序。

  • 文件被复制的速度更快

可能是由于更快的分区(根本与操作系统无关)或x64 OS中更好的缓存处理引起的。

  • 游戏没有任何变化。

可以理解的 游戏性能由CPU和GPU决定。在CPU限制的情况下,限制代码是游戏本身,它是相同的x86代码,几乎不与x64 OS接口。因此,CPU性能是相同的。GPU是一样的。在一个经过良好编程的游戏中,驱动程序和操作系统的开销很低,因此此处不太可能显示任何驱动程序或操作系统的差异。


我对GrandmasterB的回答发表了自己的看法。在同一台计算机TWICE上安装的相同(数量)的东西(尤其是Windows自身的功能)如何使体验巧合?Windows 7在某种程度上针对x64进行了优化吗?硬件供应商是否对他们的x64驱动程序更加谨慎?如果程序和机器都保持一致,但差异一致,则似乎某些方法在某种方面比另一种方法更好。
贾斯珀,

我不认为您的情况是偶然的。但是,为了完整说明,一般情况下应考虑这种可能性。例如,内部/外部分区会在加载时间上产生重大差异,并且与64b / 32b OS毫无关系。
Suma

我想补充一点信息。每次我安装7(在本例中为前两个x86安装,后两个x64安装)时,我总是将其全新安装在同一驱动器上,从而完全擦除了先前的安装。没有任何双重引导。大声笑。是的,我什至不动硬盘。
贾斯珀

更多:我在1080p显示器上使用Aero。另外,我总是执行快速格式而不是完整格式。
贾斯珀

“我一直将它全新安装在同一驱动器上,完全擦除了先前的安装。”很高兴知道,这排除了“更快地进行外部分区”的可能性以及OS状态的可能性。
Suma

16

从32位迁移到64位并不是x64体系结构中的唯一变化。x64还添加了更多的cpu寄存器和新的cpu指令。知道如何利用这些优势的操作系统可以从相同的硬件中获得适度的性能提升。哦,取回曾经用于您的视频卡的1GB RAM也不会受到损害。


实际上,即使在x64中,4 GB中也只有3.25 GB可用。我原本希望通过x86的升级可以解决此问题,但事实并非如此。
贾斯珀,

+1为视频内存,甚至没有注意到他有一个vid卡。
Supercereal 2011年

3
@Jasper:不确定我是否正确,但是我的一台计算机使用了我安装的整个8GB RAM(Win 7 x64 Ultimate)
xbonez

这确实是唯一对我有意义的事情。在同一系统上运行同一操作系统的32b和64b版本时,所有其他操作都相同。只有两个不同:1)增强的寄存器和指令集2)64b地址空间允许寻址完整的4 GB或RAM及更多空间
Suma

尽管如此,出于完整性考虑,关于1 GB卡隐藏1 GB RAM的部分绝对不正确,因为拥有4 GB RAM,32b OS以及此类卡的任何人都可以轻松见证(另请参阅我对Pete答案的评论)。
Suma

7

警告:这个问题比您可能意识到的要复杂得多,而且肯定比大多数答案所描述的要多。为了至少涵盖更多故事,这篇文章相当长...

首先,视频存储的情况。视频卡的整个内存在CPU的地址空间中不(至少正常情况下)不直接可见。通常,CPU可以看到大约128-256 MB的视频内存的“窗口”。GPU可以将其内存的不同部分映射到该窗口,因此通常可以从CPU写入大多数GPU内存,但是您需要提前告知GPU要写入的内容。举例来说,当您使用DirectX并想直接写入图形内存时,可以做到这一点-但要做到这一点,首先要调用LockRect让GPU将正确的内存映射到窗口中(并且完成后,您立即致电UnlockRect因此它可以根据需要映射其他内存)。至少在典型情况下,您可以在BIOS设置中调整视频窗口的大小。

其次,即使在32位模式下,x86处理器也支持所谓的物理地址扩展(PAE),它使CPU可以寻址4 Gig以上的地址。的记忆。Microsoft确实在某些Windows版本中支持PAE,但仅支持相对昂贵的Windows Server企业版。此外,必须使用AWE专门编写该程序。只有少数程序(例如,SQL Server企业版)曾经这样做过。底线:有可能,但相当罕见。

就一次读取64位而言:最后一次一次只能读取32位数据的处理器是486。从奔腾开始,所有处理器都具有64位数据总线。请注意,地址总线与数据总线不同,因此扩展到64位数据总线并不能使处理器使用更多的内存(尽管碰巧,Pentium Pro中添加了PAE,所以它是几乎与扩展到64位数据总线)并发的。

即使奔腾可以在一个时钟周期内读取64位数据,但在内部它(主要)一次只能处理32位数据。较宽的总线主要有助于弥补CPU和主内存之间的速度差异。奔腾MMX的MMX指令支持以64位块的形式处理数据,但是使用起来很笨拙,而且(尤其是)大多数编译器没有生成MMX代码,因此您几乎必须用汇编语言编写才能使用它。奔腾还支持浮点数的64位(和80位)操作,但这仅用于大多数编程中的一小部分(通常比使用整数慢得多)。

x86-64设计的通用寄存器确实是32位x86设计的两倍,并且每个寄存器的宽度都是64位。但是,当CPU在32位模式下运行时,只有32位CPU上存在的寄存器的子集可用。

回到浮点状态,在32位模式下,浮点数学运算使用最初为Intel 8087数学协处理器设计的指令集完成。这样使用的模型很难充分利用其功能。英特尔(和AMD)最近添加了“流式SIMD扩展”或SSE。大多数64位编译器生成的代码可以/确实可以使用SSE而不是8087兼容的浮点。SSE中的“ SIMD”代表“单个指令,多个数据”。这意味着一条 SSE指令可以对两个单独的数据执行两个浮点运算。尽管这不一定使速度提高一倍,但通常至少会提高一点速度。

最后,我可能应该指出,比较的一部分通常有点不公平。当您安装新的操作系统时,它几乎总是比已经使用了一段时间的操作系统至少快一点。程序将数据存储在注册表,硬盘等中。添加的数据越多,在任何给定时间查找所需的数据往往涉及更多的工作。虽然销售“注册表清洁器”之类的公司经常夸大这种影响,但在某种程度上还是如此。因此,如果您要做的只是重新格式化硬盘驱动器并重新安装完全相同的操作系统,那么您可能会期望看到一些速度上的改进-如果您已经安装了旧的操作系统并长时间使用它, ,这种改进(全部)可以非常充实。您看到的至少部分速度提升可能与两个操作系统之间的实际差异无关。

当然,还有更多,但您开始明白了。与单个功能产生巨大差异无关紧要,因为许多功能通常通常会产生很小的差异,但是其中许多功能相加(甚至相乘)在一起就可以带来相当大的差异。


这是一个很好的解释。重要的是要知道,许多32位二进制文​​件被设计为在Windows的许多版本(包括XP或更早的版本)下运行。它们必须在i386或至少在i586上运行。AMD64不需要支持奔腾4以外的任何东西。当然,如果您可以重新编译开源代码,那么SSE就有一定程度,这就是Silverlight表现如此糟糕的原因之一。
mckenzm '16

4

它可能与32位和64位无关。

从您的帖子中还不清楚“ 64位更快”的含义。我们是否要从您以前安装过32位Windows的计算机上重新安装64位Windows的观点出发?如果是这样,文件结构的“重置”可以轻松说明速度变化。与较旧的安装(文件碎片,磁盘空间不足,注册表混乱等)相比,新的安装(尤其是重新格式化的安装)通常比旧安装的响应速度更快。

它也可能是驱动程序之一……例如,与较早的x86版本相比,新的视频驱动程序可能由供应商提供更快,更好的优化。否则硬盘驱动器可能会更好。


1
好想法。了解更多“更快”的实际含义可能会有所帮助。应用程序加载速度更快吗?窗口动画更快吗?游戏的fps是否更高?文件复制速度更快吗?尽管理解32b和64b OS的差异很有趣,但这里的所有解释都是很有可能的,但实际上与Jasper所描述的实际差异无关。
Suma

好吧,让我给您更清楚地了解我在说什么。我在Windows 7 x86上安装了100%所需的软件和游戏一段时间。我将相同的系统以及相同数量的软件和游戏重新安装在同一台计算机上,它为我带来了相同的体验。我每天清洁注册表一次,每隔几天将硬盘碎片化一次,并始终在每个驱动器中保持相当数量的可用空间。无论如何,在这些之后,我安装了Windows 7 x64两次,其中包含100%所需的东西,只是发现两者的体验相同。[继续]
贾斯珀

感觉更好的事情包括:窗口动画更流畅,文件复制更快,某些照片编辑程序绘制更快(x86和x64),高清视频运行更流畅(在MPC-HC x64上)以及整体上更加稳定的体验。游戏没有任何变化。
贾斯珀,

你看,这些都是小事。但是,我不理解为什么这些小事情正在发生,这催生了这个问题。=)如果我有4 GB以上的RAM,我就不会打扰。我已经将Windows 7 x64能够处理这一点功劳归功于此,但是在这种情况下情况并非如此,这使其变得更加复杂。
贾斯珀,

2

简而言之,这是因为您的计算机每个时钟周期可以处理64位(8字节)的数据。您的处理器以称为字的预先安排的位的形式接收数据。x64体系结构中的单词是x86体系结构中单词的两倍。尽管您的处理器实际上可能无法更快地处理数据(两次安装的Core 2的频率均为2.93 Ghz),但是它可以更有效地处理数据。另外,如注释中所述,由于您的处理器正在以64位字的形式从RAM读取数据,因此它将允许您寻址所有RAM。从维基百科

很多时候,当提到一台现代计算机的字长时,也描述了该计算机上地址空间的大小。例如,所谓的“ 32位”计算机通常也允许32位内存地址;例如,一台可字节寻址的32位计算机可以寻址2 ^ 32 = 4,294,967,296字节的内存,即4吉字节(GB)。这似乎合乎逻辑且有用,因为它允许将一个内存地址有效地存储在一个字中。

对于64位处理器,它不是2的倍数,而是呈指数增长:

带有适当的操作系统支持的现代字节可寻址64位计算机可以寻址2 ^ 64字节(或16 exbibytes),从2011年起,这实际上是无限的。

这篇文章虽然过时了,但是却对64位处理的工作原理很有帮助。

我想指出的是,这实际上并不意味着性能会提高2倍,这是因为实际性能取决于许多其他变量(磁盘速度,总线速度,处理器缓存,可用内存等)。但是您应该会看到Windows中的性能提高,因为可以将更多的OS加载到内存中并由处理器更有效地寻址。


13
“每个时钟周期可以处理64位(8字节)数据”这听起来很合理,但实际上是无稽之谈。几乎没有任何计算使用8个字节来进行有用的处理。至于内存流量,底层CPU相同,高速缓存和内存流量使用相同的BUS。
苏马

5
再次“由于可以将更多的操作系统加载到内存中”,这是不正确的。如果“更多操作系统”将超过4 GB,这将是正确的。使用4 GB以下的数据时,64b寻址根本没有帮助。
Suma

6
@Kyle:再次阅读问题。该处理器是相同的,因为它是在同一台机器上。这是关于同一台计算机上操作系统行为的差异,而不是两台计算机之间的差异。还有,我想坚持下去。对人大喊大叫从来没有帮助过任何人。另外,我是计算机用户,这是计算机用户的问题。那我为什么不回答呢?
Joris Meys 2011年

6
没有足够稠密的皮肤,您无法在公共论坛上回答问题。您还必须能够通过问题和答案的每个细节来处理计算机呆子的古怪性质。不要费劲,但要确保对帖子进行认真的思考。改正为已证明的错误,并在正确时站稳脚跟。
WernerCD'2

6
关于“更多的OS可以加载到内存中并由处理器更有效地解决”的部分是绝对的垃圾。我的Win7使用大约500MB的RAM,这远远低于32位CPU所限制的4GB限制。寻址(如果有的话)的效率较低,因为指针的大小是内存的两倍,并且会消耗更多有价值的数据缓存。真正的性能增益来自更大的寄存器集;对L1缓存中的数据进行操作是3个时钟周期,对寄存器中的数据进行操作是1个时钟周期。
zvrba 2011年

2

我认为使用64位OS来使系统运行更快的最深刻的原因是因为32位OS不能利用系统中的所有RAM。

32位操作系统将能够控制32位,即4GB的物理地址空间。该地址空间包括系统内存,视频内存,IO设备等。因此,当您有1GB专用视频内存时,可以从可用内存中减去第一个GB。然后其他设备可能会再减去200MB左右。

这样,您只有2.8 GB的RAM用于应用程序。在Windows 7上不是很多;)

另一方面,64位操作系统可以利用您的所有RAM。


“因此,如果您有1GB的专用视频内存,则可以从可用的内存中减去第一个GB。” 很抱歉在这里造成如此麻烦,但是事实并非如此。我有一个带有4 GB RAM和1 GB专用VRAM GPU的WinXP系统,并且我有3.6 GB的RAM可用于该系统。地址空间问题非常复杂:例如,每个进程都有4 GB的虚拟地址空间。驱动程序需要将GPU RAM映射到虚拟地址空间,以便他们可以访问它,但是操作系统无需将GPU RAM映射到物理RAM。
Suma

@Suma可能不是所有的VRAM都未映射到物理内存。但是32位Windows XP,Vista和7不能使用超过4GB的物理地址空间。Windows的某些32位服务器版本将能够处理更多地址,但是使用物理地址扩展名(尽管您可以在32位桌面Windows操作系统中启用物理地址扩展名,但它仍将拒绝寻址超过4GB的物理地址空间)。因此,在32位Windows 7中放置4GB的RAM,您将无法使用全部。进程的虚拟地址空间与此限制无关
Pete

“但是32位Windows XP,Vista和7不能使用超过4GB的物理地址空间。” 是的,这是真的。有关详细说明,请参见codinghorror.com/blog/2007/03/…。GPU肯定会占用4 GB的空间。我只想纠正常见的误解,即需要访问GPU RAM占用的地址空间,实际上不是。在这方面,superuser.com / questions / 242562 /…中的描述是正确的。
Suma

-1

我在两个单独的相同Lenovo x100e笔记本电脑上安装了32位和64位。32位具有2G内存,而64位具有4G内存,而32位仍然比64位的延迟和速度较慢,运行速度更快,更流畅,响应速度更快。cpu是64位cpu。安装相同的驱动程序,并在两者上完成Windows更新。我认为64位适用于高端计算机,即使是x64 cpu也不适用于入门级。


这是错误的,因为x64机器上运行了几乎90%的x86应用程序,所以有时它们的“用户体验”非常糟糕。
Francisco Tapia
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.