Eu estava lendo este artigo sobre computação de 64 bits e menciona:
Por exemplo, a arquitetura AMD64 em 2011 permitia 52 bits para memória física e 48 bits para memória virtual
Eu pensaria que faria mais sentido permitir mais memória virtual do que memória física, então por que é realmente o contrário?
Pergunta bônus: O que significa "permitir" 52 ou 48 bits em uma arquitetura de 64 bits? Para que os outros bits são usados?
memory
64-bit
computer-architecture
dougvk
fonte
fonte
Respostas:
Aqui está uma foto de uma tabela de páginas AMD64 (no Guia do Programador de Arquitetura AMD, Vol. 2, Rev 3.23, 2013, página 132).
O tamanho "natural" de uma página na arquitetura AMD64 é 2 12 = 4096 bytes. (Existem modos em que você pode ter 2 21 = 2 MB de páginas, mas vamos ignorá-las por enquanto.)
Cada entrada de tabela de página (PTE) (ou, dependendo do nível chamado PDE, PDPE ou PML4E) é de 64 bits = 2 3 bytes. Portanto, existem 2 9 entradas por página. Portanto, quatro níveis de tabela de páginas oferecem 4x9 + 12 = 48 bits de endereço virtual por processo. Andar pela tabela da página é caro, então eles não serão expandidos para 5 ou 6 níveis, a menos que / até que haja demanda do consumidor.
Não sei por que eles decidiram um limite de endereço físico de 52 bits. Isso pode ser estendido até 63 bits no futuro. Nos preços de outubro de 2013 (cerca de 1US $ / Gigabit para chips 4Gbit), custaria mais de 32.000.000,00 US $ para criar uma memória de 2 52 bytes, por isso levará um tempo até que exista uma demanda significativa para aumentar o limite de endereço físico. Existem vários tipos de razões pelas quais você deseja manter os endereços físicos o menor possível: as tags TLB e cache precisam conter endereços físicos, por exemplo.
Não é necessariamente para trás que há mais memória física do que virtual. A memória virtual é por processo enquanto a memória física é compartilhada por todos os processos. Portanto, um servidor com endereços virtuais de 48 bits e 2 52 bytes de memória poderia suportar 16 processos simultâneos e ainda garantir a não necessidade de troca.
fonte
Alguns pontos a considerar, a RAM física é cara. Com certeza, 16 GB são mais baratos agora que os 4 GB eram apenas alguns anos atrás, mas 2 ^ 64 (16 exabytes) ridiculamente grandes.
Portanto, as extensões do x86 para x64 da AMD "permitiram" até 2 ^ 52 limitando os registros . Isso faz duas coisas, reduz o custo dos processadores e melhora o desempenho. Mais registros que não são usados significa que há muito espaço vazio que ainda deve ser levado em consideração durante as operações.
E, caso você não seja um matemático ... A diferença entre três tamanhos é enorme! Eu não sou um guru de matemática, mas, por um decimal de 52 bits, é cerca de 0,02% de 64 bits. 48 bits é 6% de 52. (alguém verifica minha matemática?)
Quanto ao motivo pelo qual a AMD permitiu mais RAM física do que virtual, o artigo afirma que é porque a AMD estava pensando em servidores. Os servidores precisam de grandes quantidades de RAM física. A RAM virtual é muito lenta para suportar os aplicativos de servidor comuns para centenas ou milhares de funcionários.
Meus próprios pensamentos: deixamos o tempo em que a RAM era pequena e os discos rígidos tinham que suportar RAM. O preço da RAM caiu a um ponto em que a pessoa média pode colocar mais do que suficiente RAM. Tome aplicativos típicos, como o Office, que requer 1-2 GB de RAM. Meu computador há 7 anos poderia lidar com isso. Embora com velocidades de leitura e gravação em disco, espero nunca ter que recuperar um arquivo de 7 GB da memória virtual (usando a antiga filosofia PM * 2.5).
Também posso apenas supor que a AMD queria deixar espaço para registros que usam os registros físicos de RAM, como RAM em GPUs integradas.
fonte