Jas*_*per 11 windows-7 64-bit x86
为什么 Windows 7 x64 比我的 PC 上的 x86 版本运行得更快,即使我主要在其中使用 x86 的东西?我有什么问题,我错过了什么?
我使用的大部分东西都是 x86(例如 DAW、游戏、媒体播放器)。然而,其中相当一部分是 x64(尽管它们的 x86 对应项工作得很好)。
我曾尝试在同一系统上使用相同的东西,但最终发现 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
如您所见,我的系统很旧。
Joe*_*orn 16
从 32 位到 64 位的转变并不是 x64 架构的唯一变化。x64 还添加了更多的 cpu 寄存器和新的 cpu 指令。知道如何利用这些优势的操作系统可以从相同的硬件中获得适度的性能提升。哦,找回 1GB 的 RAM 用于解决您的视频卡也没有坏处。
这是尝试通过总结个别现有答案中的部分内容并添加一些内容来提供完整答案。该列表试图包括一般情况的所有可能性,即使对于这种特殊情况可以排除某些可能性。
正如Joel Coehoorn所描述的,对于原生 x64 代码,可以使用更大的寄存器集,以及一些额外的指令(例如,所有 x64 CPU 都保证实现 SSE 和 SSE2 指令)。这意味着原生 x64 操作系统和驱动程序可以更高效。
64b能够使用完整的 4 GB(可用时甚至更多)。此外,一些操作系统内部限制(分页/非分页池、最大缓存大小)随着 64b OS 增加。因此,内存分页和文件缓存都可能更有效。
当您在同一磁盘的两个分区上安装了两个操作系统时,这两个分区之一靠近外边缘,通常速度更快。
当您有两个操作系统时,它们中的每一个可能处于不同的状态。其中一个可能比另一个更分散,其中一个的注册表可能比另一个更干净,或者安装的服务或后台应用程序更少。
另一种可能性是 x64 驱动程序的质量可能比 x86 更好,这不是因为一些基本的架构差异,而仅仅是因为他们的供应商花了更多的精力来优化和微调它们。
我添加这个只是为了完整起见,对于绝大多数日常应用程序来说,这种差异没有任何作用,而且它绝对与 Jasper 在他的问题中描述的内容无关。
如果您有一个处理大量数据的应用程序(例如在 Photoshop 中处理大量图片),如果您安装了 4 GB 或更多的 RAM,运行 64b 版本会产生巨大的差异。
以下是对其他答案的评论列表,Jasper 可以看到的“更快的东西”到底是什么:
很难解释。Windows 动画是由 Windows 7 中的 GPU 完成的,GPU 是相同的。CPU 上的负载可以忽略不计。(我想您正在使用 Aero 桌面)。
可以更好地调整驱动程序或利用 x64、.
可能是由更快的分区(根本与操作系统无关)或 x64 操作系统中更好的缓存处理引起的。
可以理解。游戏性能由CPU和GPU决定。在 CPU 限制的情况下,限制代码是游戏本身,它是相同的 x86 代码,与 x64 操作系统的接口很少。因此 CPU 性能是相同的。GPU是一样的。良好编程的游戏中的驱动程序和操作系统开销很低,因此这里不可能显示任何驱动程序或操作系统差异。
警告:这是一个比您可能意识到的更复杂的问题,当然也比大多数答案所描绘的要复杂。为了至少覆盖更多的故事,这篇文章很长......
首先是显存的情况。整个视频卡的内存在 CPU 的地址空间中不是(至少通常)直接可见的。您通常有一个 CPU 可见的大约 128-256 兆字节视频内存的“窗口”。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。从 Pentium 开始,所有处理器都有 64 位数据总线。请注意,地址总线是不一样的数据总线,所以扩大到64位数据总线并没有让处理器工作,更多的内存(虽然,因为它发生,PAE在奔腾Pro的增加,所以它是几乎与扩展到64位数据总线)并发的。
尽管 Pentium 可以在单个时钟周期内读取 64 位数据,但在内部它(主要)一次处理 32 位数据。更宽的总线主要有助于弥补 CPU 和主存储器之间的速度差异。Pentium MMX 的 MMX 指令支持以 64 位块处理数据,但使用起来相当笨拙,而且(特别是)大多数编译器不生成 MMX 代码,因此您几乎必须用汇编语言编写才能使用它. Pentium 还支持 64 位(和 80 位)浮点数运算,但这仅用于大多数编程的一小部分(并且通常比处理整数慢)。
x86-64 设计的通用寄存器数量是 32 位 x86 设计的两倍,并且每个寄存器都是 64 位宽。但是,当 CPU 在 32 位模式下运行时,只有 32 位 CPU 上存在的寄存器子集可用。
暂时回到浮点,在 32 位模式下,浮点数学是使用最初为 Intel 8087 数学协处理器设计的指令集完成的。这使用的模型使得充分利用其功能相当困难。Intel(和 AMD)最近添加了“Streaming SIMD Extensions”或 SSE。大多数 64 位编译器生成的代码可以/确实使用 SSE 而不是 8087 兼容的浮点。SSE 中的“SIMD”代表“单指令、多数据”。这意味着一条SSE 指令可以对两个独立的数据块执行两个浮点运算。虽然这不一定会使速度加倍,但它通常至少会提高一点速度。
最后,我可能应该指出,比较的一部分通常有点不公平。当你安装一个新的操作系统时,它几乎总是至少比已经使用了很长时间的操作系统快一点。程序将数据存储在注册表、硬盘驱动器等中。添加的数据越多,在任何给定时间查找所需数据所需的工作就越多。虽然销售“注册表清理器”的公司经常夸大这种效果,但无论如何在某种程度上确实如此。因此,如果您所做的只是重新格式化您的硬盘驱动器并重新安装完全相同的操作系统,您可以期望看到一些速度提升——如果您已经安装并使用了很长时间的旧操作系统,这种改进(完全靠它自己)可以相当可观。您所看到的至少部分速度提升可能与两个操作系统之间的任何实际差异无关。
当然,还有更多,但你开始明白了。与其说是单个功能产生巨大差异的问题,不如说是许多功能通常单独产生相当小的差异,但其中许多功能相加(甚至相乘)在一起以产生相当大的整体差异。
| 归档时间: |
|
| 查看次数: |
33692 次 |
| 最近记录: |