Olhando agora para a memória. Um processador x86 a 32bit
está limitado a endereços de memória virtual
de 32bit, que é no máximo 4GB, esse espaço
tem que ser partilhado com o kernel do sistema operativo e todas
as aplicações em execução.
Memória para além dos 4GB tem que ser acedida
através de Physical Address Extensions, um sistema de
paginação que não é tão eficiente
como a memória física. E a tabela de paginação
tem que ficar nos primeiros 4gb de endereço de memória,
o quem põem um senão na sua escala. Por exemplo
a maior parte das versões do Windows só pode usar
PAE para oferecer 16GB de endereços de memória,
isto porque a tabela de paginação fica muito grande
para guardar nos primeiros 4GB.
Para resolver este problema, a arquitectura AMD64 introduziu
um espaço de endereçamento de memória a
64bit onde as implementações podem suportar menos
de 64bits de endereçamento. Isto dá 256 terabytes
de endereçamento de memória, que podem ser acedidos
directamente, sem paginação, por aplicações
a 64bits.
A única limitação é que uma aplicação
a 64bits tem que ser carregada por um SO a 64bits e que uma
aplicação não pode misturar 32 e 64 bits,
ou um ou outro. Claro que um SO a 64bits pode correr processos
a 32 e 64bits ao mesmo tempo, e estes processos podem usar a
estrutura de comunicação inter-processual para
passar dados entres eles.