Existem vários fatores de intercalação.
Primeiro de tudo, você nunca poderá montar um sistema que tenha 2 64 bytes (16 exibytes) de RAM física.
Segundo, só porque uma arquitetura usa ponteiros de 64 bits, não significa que todos os bits desses ponteiros sejam realmente usados. Notavelmente, as atuais CPUs x86-64 (também conhecidas como AMD64 e os atuais chips de 64 bits da Intel) usam linhas de endereço de 48 bits (AMD64) e linhas de endereço de 42 bits (Intel) (consulte link ), teoricamente permitindo 256 terabytes de RAM física.
Segundo, as placas-mãe têm seus próprios limites em relação à quantidade de RAM que podem suportar, tanto física quanto logicamente. Fisicamente, só haverá tantos slots disponíveis para RAM. Quanto aos limites "lógicos", eu não entendo completamente porque este ainda é o caso do x86-64 (o controlador de memória há muito tempo foi migrado para a própria CPU), mas aí está. Presumivelmente cantos estão sendo cortados em linhas de endereço para economizar alguns dólares em design e fabricação.Em terceiro lugar, um sistema operacional pode ter limitações internas quanto à quantidade de RAM que ele pode suportar com eficiência. Em parte, isso é na verdade para evitar a necessidade de estruturas de dados muito grandes para acompanhar o uso da memória que não está realmente lá. A última vez que verifiquei, o Linux permite 128 TB de espaço de endereço virtual por processo no x86-64 e, teoricamente, pode suportar 64 TB de RAM física.
Em quarto lugar, alguns sistemas operacionais (por exemplo, Windows) limitarão artificialmente a quantidade de RAM usada como tática para fazer com que os usuários atualizem para versões mais caras se quiserem mais RAM (o Windows 7 Starter é limitado a 2 GB, Home Basic a 8 , Home Premium para 16 e Professional e superior são 192 GB e as versões do Windows Server têm limites muito maiores).