有一個相對new Linux ABI referred to as x32,其中X86-64處理器在32位模式下運行,所以指針仍然只有32位,但在64位體系結構專用寄存器仍在使用。因此,與普通的32位一樣,您的內存使用量仍然限制在4GB以內,但是與64位相比,指針的緩存空間更少,您可以高效地執行64位算術操作,並且可以訪問更多寄存器(16)比你在香草32位(8)。<4GB工作負載在Linux x32 ABI中的性能會比x64差嗎?
假設你有一個工作量很好地配合4GB內,有沒有什麼辦法X32的表現可能會比在x86-64的差?
在我看來,如果你不需要額外的內存空間,不會丟失任何信息 - 你應該總是得到相同的PERF(當你已經裝入高速緩存)或更高(當指針節省空間可以讓你適應更多在緩存中)。但是,如果有分頁/ TLB /等,我不會感到驚訝。我不知道的細節。
邪惡的是細節,所以我會不會很驚訝,如果在某些罕見的情況下,在你的情況,有時X32可以比x86-64的差那麼一點點。但是我不相信這是很常見的......(你可以想象,對齊約束在x32上不太強大,並且這很少會影響緩存性能)。 –
請記住,指針大小不是兩個ABI之間唯一的區別 - x86-64也有更多的寄存器,這可以減少加載/存儲指令的數量,還有其他一些差異。因此,這個問題並不是一個簡單的答案,基準測試幾乎總是決定哪個「更好」的定義對於該特定項目很重要的最佳途徑。 – twalberg
@twalberg:我想你可能會誤解這個問題--x32和x86-64具有相同數量的寄存器。我不是在談論普通的32位。 –