2012-03-29 159 views
6

如果我们在64位机器上运行32位二进制,会有什么影响?如果机器具有超过4 GB的RAM,它会有什么影响(系统中的RAM是8GB)?在64位机器上运行32位二进制

+5

答案“否”就足够了吗? – Mehrdad 2012-03-29 07:53:09

+0

如果通过影响你的意思是积极的影响,那么在某种程度上:更多的RAM意味着更多的磁盘缓存... – dbrank0 2012-03-29 08:23:41

回答

5

当运行在64位计算机的32位二进制文​​件(假设OS是在64位模式运行),您有以下限制:

  1. 二元不能充分利用64位运算指令。这可能会降低性能。
  2. 该二进制文件无法寻址超过4GB的虚拟内存。

但是,这些4GB可以位于8GB内存中的任何位置。因此,如果您运行的是多个32位应用程序,每个应用程序使用少于4GB,则可充分利用所有8GB内存。

请注意,由于各种限制,您的应用程序实际上可能只能分配2GB的虚拟内存。

+0

点号。 1(二进制不能利用64位算术指令)对于至少两个平台是错误的。 (sparcv9-linux/solaris和[x32 - * - linux](http://en.wikipedia.org/wiki/X32_ABI)) – 2012-03-29 08:25:56

+0

在x64上,32位二进制文​​件无法访问[通用寄存器]的高32位(http://en.wikipedia.org/wiki/X64#Operating_modes)。因此,当添加两个64位数字时,一个32位二进制必须发出两条指令而不是一条指令。 @jørgensen – user1202136 2012-03-29 08:40:48

+0

x86-64增加了更多的东西:更多的寄存器,PIC相对寻址,使用寄存器进行函数调用的更精确的ABI,通常导致性能改进,这些偏移大大抵消了使用更大(更不缓存不友好)类型。在其他平台(sparc64 vs sparc?mips64 vs mips?)从32位到64位可能实际上会降低性能。 – ninjalj 2012-03-29 10:38:08

相关问题