Linux 在64位操作系统上开发有什么优势吗?

Linux 在64位操作系统上开发有什么优势吗?,linux,ubuntu,64-bit,compatibility,x86-64,Linux,Ubuntu,64 Bit,Compatibility,X86 64,我不确定自己是否理解正确:在同一系统上,64位操作系统运行/编译代码的速度是否比32位操作系统快 我们现在使用的是64位OSs,它似乎只会导致与传统和专有软件的兼容性问题。(我们正在运行Ubuntu9.04 Jaunty amd64)如果您的编译过程内存有限,并且您使用64位操作系统来增加系统可用的内存量,那么它将加快编译速度。我将把这个答案限制在x86-32(IA-32)与x86-64(amd64)之间,因为我相信这是您实际要问的问题 在处理器级别,有几个优点。第一个也是最明显的是将每个进程的

我不确定自己是否理解正确:在同一系统上,64位操作系统运行/编译代码的速度是否比32位操作系统快


我们现在使用的是64位OSs,它似乎只会导致与传统和专有软件的兼容性问题。(我们正在运行Ubuntu9.04 Jaunty amd64)

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

我将把这个答案限制在x86-32(IA-32)与x86-64(amd64)之间,因为我相信这是您实际要问的问题

在处理器级别,有几个优点。第一个也是最明显的是将每个进程的虚拟内存扩展到更宽的48位范围。(64在体系结构中是允许的,但如果内存可用,则不是必需的。)这使应用程序能够使用更多的系统可用内存,并为诸如在虚拟内存上运行的内存映射文件(未链接到实际内存)之类的内容打开大量空间。它还为有问题的操作系统打开了大量的工作空间,因为它不必为其数据共享您的4GB限制。简言之,应用程序和操作系统可以更好地利用计算机的资源

此外,AMD64体系结构解决了IA-32的一个最大问题,即完全缺乏寄存器。事实上,它将可用寄存器增加了一倍,这对于某些类型的代码来说是一个巨大的胜利。(事实上,几乎所有代码都能从中获益,但有些应用程序会因64位内存成本的增加而受到影响,而且会趋于平衡。)

在Windows方面,微软利用这一机会打破了一系列历史上的兼容性问题。这不是与旧世界的彻底决裂,但这是一个开始。我不认为Linux从一开始就存在同样的问题,我对它们的64位优势也没有太多的看法。

(正如评论员所指出的,这个答案有些笼统,其中一些观点不适用于intel/amd芯片。)

答案是:情况各不相同,原因如下:

  • 使用更大宽度的指令,您将获得更高的表达能力(更多种类的指令或将数据直接编码到这些指令中的更大容量),这可能意味着流经机器的指令数量减少,这通常是一个win:so++64位

  • 但有时较大的指令可能需要更多的周期来解码和执行,因为它们可能更复杂。所以这里可能是64位

  • 此外,您还需要将这些指令传输到CPU和从CPU传输:64位指令是32位指令的两倍,这意味着内存和缓存之间的通信量会增加。CPU的结构可以大大降低这一成本,但这里的成本只有64位

  • 在更广泛的指令集中,通常有更多的寄存器可用,这会减少进出堆栈和/或内存的数据流量。所以这里是+64位

  • 毫无疑问,每个人都会提到,你有能力处理更多的内存

  • (差点忘了这一点)本机的“long”或“int”大小可能会增加,这取决于体系结构,这意味着基于它们的数据结构会变大。越大=移动的内存越多,这意味着等待数据移动的可能性越大:--64位,如果不小心的话


根据您的体系结构,许多其他问题也可能适用。您可以放心,处理器和编译器供应商正在竭尽全力减少上面的“-”s并增加“+”s.

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

但是x86v。AMD64是一个非常特别的野兽,这正是你真正想问的(因为你正在讨论Ubuntu)。AMD64不仅将所有指针扩展到64位;它修复了x86体系结构中的许多缺陷,将GPRs的数量增加了一倍,简化了指令,使之对现代CPU设计更加友好,等等。正因为如此,仅在AMD64平台上,您经常会看到64位的性能大幅提升


在软件开发中,还有一个领域使用64位是有意义的:您需要运行很多虚拟机。运行两个虚拟机可以轻松地让您突破操作系统的3 GB内存障碍,使使用它们变得非常痛苦。(由于Intel发明了一种称为PAE或分页寻址扩展(Paged Addressing Extensions)的技术,这项技术可以在32位系统和64位系统之间架起桥梁,但其结果很慢,开发人员很难使用,而且在Windows上也不太受支持。)使用64位操作系统可以带来巨大的好处。

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


兼容性问题:这不是bug,这是一个特性。它显示了谁编写了干净的软件。

还有一些安全优势