我不确定我的理解是正确的:不64位的操作系统运行的/编码快于一个32位的操作系统同样的系统?

我们使用的64位开放源码软件我在哪里,它似乎只会导致兼容性问题与传统的和专有软件。(我们正在运行Ubuntu9.04精神抖擞amd64)

有帮助吗?

解决方案

我将这个答案限制在x86-32(IA-32)vs x86-64(AMD64),因为我认为这是你实际要问的问题。

在处理器级别,有一些优点。首先也是最明显的是将每进程虚拟内存扩展到更宽的48位范围。 (如果内存服务,则允许64在体系结构中但不是必需的。)这使应用程序可以使用系统可用的更多内存,并为内存映射文件等操作开辟了大量空间未链接到实际内存的虚拟内存。它还为相关操作系统开辟了大量空间,因为它不必共享4 GB的数据限制。简而言之,应用程序和操作系统可以更好地利用机器的资源。

此外,AMD64架构解决了IA-32最大的问题之一,即完全没有寄存器。事实上,它使可用的寄存器加倍,这对某些类型的代码来说是一个巨大的胜利。 (实际上它几乎可以用于任何代码,但是有些应用程序会受到64位内存成本增加的影响,而且它会变得均匀。)

在Windows方面,MS将其视为打破一大堆历史兼容性问题的机会。这不是与旧世界的彻底决裂,但它是一个开始。我不认为Linux一开始会遇到同样的问题,而且我没有太多的观点来提供它们的64位优势。

其他提示

作为一般规则,在任何上下文中开发或使用64位操作系统将比相同的32位操作系统更慢。因为所有指针突然大两倍,所以你更有可能破坏缓存,并且可以在RAM中容纳更少的数据。这大大减慢了你的应用程序。当您的应用程序需要同时处理超过2到3 GB的数据时,您通常只会使用64位系统 - 这在科学计算和某些数据库情况下非常常见,但在其他方面非常罕见。这就是为什么Apple不主张在64位模式下无条件地编译PowerPC应用程序,例如:由于缓存未命中和内存不足导致的成本足够高,只有当你真正可以利用64位空间。

但x86诉AMD64,这是你真正要求的(因为你正在讨论Ubuntu),是一个非常特别的野兽。 AMD64不仅将所有指针扩展到64位;它修复了x86架构中的许多不足之处,将GPR数量增加了一倍,简化了指令,使其更加适合现代CPU设计等等。因此,仅在AMD64平台上,你会经常看到64位的性能提升。

还有另外一个领域,在软件开发中,转到64位是有意义的:你需要运行大量的虚拟机。运行几个虚拟机很容易让你超过操作系统的3 GB内存屏障,使得使用它们非常痛苦。 (它将起作用,因为英特尔发明了一种称为PAE或分页寻址扩展的技术来弥合32位系统和64位系统之间的差距,但结果很慢,很难与开发人员合作,而不是在Windows上得到了很好的支持。)使用64位操作系统可以带来巨大的好处。

(作为该评论员注意,这个答案是有点通用的,这些点不适用于intel/amd的筹码。)

答案是:它变化,对于几个原因:

  • 与较大的宽指令,你要得到更多的表现(或者更多种类的指示或更大能力对数据进行编码进入这些说明直接),这可能意味着数量减少的说明流通的机,这通常是一个赢得:所以++64位在这里。

  • 但有时较大的指令 可能会 采取更多的周期,以解和执行,因为它们可能更加复杂。因此,一个可能的-64位在这里。

  • 此外,需要将这些指令以及从中央处理器:64位的指令是两倍大的32位说明,这意味着更多的业务,并从存储器和缓存。Cpu的结构,以改善很多,这一费用,但这是一个微小的--64位在这里。

  • 更多的注册通常可在更广泛的指令集,这将导致较少的数据流量,并从栈或存储器。所以++64位在这里。

  • 并为每个人无疑问,要提一下,你有能力解决更多的存储器。

  • (几乎忘了这一)土"长期"或"int"的大小可能去了,这取决于建筑、意义的数据结构基于这些获得较大。大=更多的存储器的移动,这意味着更多的可能等待数据的移动:--64位如果你不小心。

根据你的建筑,很多其他关切可能适用。你可以放心,处理和编译器供应商都是工作他们的屁股,以降低"--"s上,增加"++"。

我有这个需要转换的5GByte数据库。在64位系统上,我只是将所有数据放入集合中。在32位系统中,我不得不考虑加载和转换的顺序。问题不在于运行时,而在于工程时间。切换到64位可以节省数周的开发时间。

兼容性问题:这不是错误,这是一个功能。它向您展示了谁编写了干净的软件。

使用64位操作系统也有一些安全优势。已经存在一些缓冲区溢出漏洞,它们通过暴力绕过地址空间布局随机化。在64位操作系统上,只有太多的地址才能使这种攻击成功。

如果您的编译过程受内存限制并且您使用64位操作系统来增加系统可用的内存量,它将加快编译速度。

我希望它稍慢,我有FC10的经验。我没有真正的理由,但绝对不是sizeof(指针)问题。 (*)

我自己的预感是,它只是一个不太优化的驱动程序或调整芯片组的问题。

同样,NTFS-3g在64位下很有趣,而它在32位下工作(相同的发行版,相同内核相同的分区,在某些情况下它只是“挂起”)

(*)大多数编译是磁盘绑定,而不是CPU绑定。此外,x86_64架构还有其他改进可以抵消这一事实(更好的PIC,更多的注册,SSE2默认开启,默认为686 cmov)。除非您的应用程序不会随机移动小块。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top