2012-03-29 147 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

相關問題