it-swarm-pt.tech

Limites de memória em sistemas de 16, 32 e 64 bits

Os limites teóricos de memória nas máquinas de 16, 32 e 64 bits são os seguintes:

  • 16 bits = 65, 536 bytes (64 kilobytes)

  • 32 bits = 4, 294, 967, 295 bytes (4 gigabytes)

  • 64 bits = 18, 446, 744, 073, 709, 551, 616 (16 exabytes)

Eu me lembro do DOS/Windows 3.11 dias, que a memória de 16 bits poderia ser separada em segmentos, de modo que uma máquina de 16 bits pudesse acessar uma quantidade maior de memória do que 64 Kilobytes.

Eu tenho uma máquina com 16GB de memória e sou dual boot um sistema operacional de 32 bits e um sistema operacional de 64 bits. Eu posso acessar todos os 16GB de 64 bits, mas apenas 3,21 GB em 32 bits.

Então, a minha pergunta é, se os sistemas operacionais de 16 bits permitiram um acesso maior de 64 KB por causa da segmentação de memória, por que as máquinas de 32 bits não seguem o mesmo padrão?

15
series0ne

Eles fazem, o sistema é chamado Physical Address Extension (PAE) . Aqui está uma lista de windows OS'es e sua memória máxima, qualquer sistema de 32 bits que permita mais de 4GB de RAM está usando a PAE para acessar a memória (Por exemplo, Windows 2003 R2 Datacenter 32 bits permite 128 GB de memória RAM).


De fato, o Windows 8 requer uma CPU compatível com o PAE - requisitos mínimos .


Para resolver sua pergunta "não solicitada" sobre o motivo pelo qual seu sistema operacional de 32 bits não pode acessar o RAM se existir: Licenciamento. Eles optam por não permitir que RAM fique acima de 4 GB para seus SOs de 32 bits, a menos que você pague por uma edição de data center (é por isso que eles vendem uma edição de data center, se você precisa que muito ram, você provavelmente pode gastar mais dinheiro em um sistema operacional).

12
Scott Chamberlain

Em vez de explicar por mim mesmo, eu vou deixar alguém que tem que manter um kernel com suporte a PAE falar de maneiras encantadoras, Linus Torvalds

Também tenha em mente que o suporte PAE nas versões de 32 bits do Windows vem com muito dinheiro. XP não será capaz de usar 4 GiB de RAM normalmente, porque o MS optou por não ativar os recursos da PAE nele. Um kernel intimamente relacionado, o Windows 2003 Server, suporta PAE. No entanto, mesmo lá, a sua "Edição Standard" suportará apenas até 4 GiB (mas trabalhando em torno do buraco da memória da BIOS), enquanto as edições mais caras permitirão até 64 GiB de RAM. O mesmo vale para 2-bit Vista .

No entanto, não em todos os casos é essa limitação imposta pelo Windows. Se fosse, inicializar um kernel Linux habilitado para PAE ainda permitiria usar o full 4 GiB (ou mais). Não é assim, alguns fabricantes de hardware optaram por impor essa limitação no nível do BIOS, embora a CPU e o chipset pudessem manipular o PAE.


Apenas uma nota: nenhum dos atuais processadores de 64 bits baseados em x86 pode até mesmo endereçar o intervalo total do espaço de endereço de 64 bits fisicamente (para referência consulte esta pergunta e respostas).

12
0xC0000022L

CPUs de 8 bits geralmente tinham um barramento de endereços de 16 bits. (A Motorola possuía um barramento de endereços unificado,RAM e E/S periférica compartilhavam o mesmo espaço de endereço, a Intel optou por dividir os dois. No caso da Intel, os limites de endereços de IOo 8088 e o 8086 carregaram os limites dos processadores 8080 e 8085.)

Os 8088 e 8086 da Intel possuíam um barramento de endereços de memória de 20 bits (1MB), enquanto o 68000 da Motorola possuía um barramento de endereços de 24 bits (16 MB). IIRC, o [80] 286 saltou para um barramento de endereços de 24 bits. Ambos foram posteriormente expandidos para um barramento de endereços de 32 bits com o [80] 386 e o ​​68020, respectivamente.) Com os chips Pentium, o barramento de endereços expandiu para 64 bits. (Acho que os chips PowerPC da Motorola/IBM também foram direcionados para o barramento de endereços de 64 bits.)

A memória disponível abaixo e até o máximo que pode ser acessado diretamente pela CPU foi limitada apenas pelos chips de hardware de suporte (chipset) e pelo sistema operacional. Bill Gates era famoso no passado por afirmar que ninguém precisava de mais de 640K de RAM, assim o DOS nunca evoluiu para acessar diretamente mais RAM. Com o HiMem.sys e o EMM386, o DOS foi estendido para acessar mais memória "superior", com o EMM386 sendo usado para acessar diretamente toda a RAM disponível. HiMem.sys tinha menos flexibilidade e poderia basicamente usar o extra RAM para armazenamento.

A memória excedente desse limite exigiu uma MMU (Unidade de gerenciamento de memória) para dividir a memória em segmentos e mapeá-la no espaço de memória endereçável da CPU. É como o CoCo 3, o Commodore 128 e outros computadores de 8 bits podem acessar mais de 64 K de RAM.

Mais favorável agora é usar a memória virtual para estender os limites de memória física do passado, embora com os limites impostos pelo sistema operacional.

1
William

Porque não há razão prática para isso. Extensões de endereço físico permitem a mesma funcionalidade e seu uso ainda é muito limitado entre os usuários. Nos dias do Windows 3.1, havia restrições que simplesmente não estão presentes hoje.

1
OCDtech

Os limites teóricos de memória em máquinas de 16, 32 e 64 bits são os seguintes ...

A falha fundamental aqui é a noção de que a "largura de bit" do processador, que geralmente é o tamanho dos registradores de propósito geral da máquina, é necessariamente igual à largura dos endereços RAM.

Em x86 com paginação habilitada, mas sem PAE, os endereços que o programa e o código do sistema operacional usam são chamados de "endereços lineares" pela Intel - normalmente os chamamos de "endereços virtuais". Eles são 32 bits de largura. Isso permite que um espaço de endereço virtual 4 GiB.

Mas é mais ou menos coincidência, apenas um artefato do formato das entradas da tabela de páginas que o tamanho de um endereço físico (RAM) também é de 32 bits.

Com o PAE, o último é de 36 bits (inicialmente ... mais amplo nas implementações posteriores). Portanto, só porque é, por exemplo, uma "máquina de 32 bits" não significa que os endereços de memória física estejam limitados a 32 bits.

A indústria tem um histórico long de máquinas cuja "largura de bit" não correspondia ao seu tamanho máximo de endereço físico. Por exemplo, a arquitetura VAX define uma máquina de 32 bits e os endereços virtuais (que são os endereços usados ​​pelo código quando a conversão de endereço está ativada) têm 32 bits ... mas os endereços físicos do VAX têm apenas 30 bits de largura - e metade do espaço de endereço físico é dedicado aos registradores de dispositivos de E/S, portanto, o máximo RAM era de apenas 512 MiB.

Mesmo sem o hardware de tradução de endereço, não é necessariamente o caso que a "largura de bit" da máquina defina o endereço máximo RAM. Exemplo: as séries "superior 3000" do CDC eram máquinas de 36 bits. Você acha que eles poderiam endereçar 64 GiB da RAM? Não dificilmente! Essas máquinas saíram em meados dos anos 60! Caramba, não poderíamos ter 64 GB de espaço em disco naqueles dias. (A série CDC 6000 era de 60 bits. Preciso continuar?)

0
Jamie Hanrahan