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

10

Os limites teóricos de memória em 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, para 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 tenho dual boot de um sistema operacional de 32 bits e um sistema operacional de 64 bits. Eu posso acessar todos os 16GB a partir de 64 bits, mas apenas 3.21GB em 32 bits.

Então, minha pergunta é, se os sistemas operacionais de 16 bits permitiram um acesso maior de 64 KB devido à segmentação de memória, por que as máquinas de 32 bits não seguem as mesmas condições principais?

    
por series0ne 22.02.2013 / 22:39

5 respostas

10

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

Na verdade, o Windows 8 requer uma CPU compatível com o PAE em sua 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 a RAM fique acima de 4 GB para os sistemas operacionais 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, você provavelmente pode gastar mais em um sistema operacional).

    
por 22.02.2013 / 23:02
11

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

Tenha também em mente que o suporte PAE nas versões Windows 32bit vem com muito dinheiro. O XP nem mesmo poderá usar 4 GiB de RAM normalmente, porque o MS escolheu 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 Vista de 32 bits .

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 total de 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 fossem capazes de lidar com o PAE.

Apenas uma observação: nenhum dos atuais processadores de 64 bits baseados em x86 pode até mesmo endereçar todo o intervalo do espaço de endereço de 64 bits fisicamente (para referência

    
por 22.02.2013 / 23:18
1

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.

    
por 22.02.2013 / 22:46
1

As CPUs de 8 bits geralmente tinham um barramento de endereços de 16 bits. (A Motorola tinha 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 IO dos 8088 e 8086 ultrapassaram os limites do 8080 & ; CPUs 8085.)

Os processadores Intel 8088 e 8086 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 acessada 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. O HiMem.sys tinha menos flexibilidade e basicamente podia usar a RAM extra para armazenamento.

Memória excedendo esse limite requer uma MMU (Memory Management Unit) 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.

    
por 19.06.2015 / 08:56
0

The theoretical memory limits in 16, 32 and 64 bit machines are as follows ...

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 a mesma que a largura dos endereços de 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 um espaço de endereço virtual de 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 em 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.

O setor tem um histórico longo de máquinas cuja "largura de bit" não corresponde ao 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) são de fato de 32 bits ... mas os endereços físicos do VAX têm apenas 30 bits - e metade do espaço de endereço físico é dedicado aos registradores de dispositivos de E / S, de modo que a RAM máxima 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 define o endereço máximo de RAM. Exemplo: as séries "superior 3000" do CDC eram máquinas de 36 bits. Você acha que eles poderiam endereçar 64 GiB de RAM? Não dificilmente! Essas máquinas surgiram em meados dos anos 60! Caramba, nós 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?)

    
por 21.10.2016 / 02:29