Por que a quantidade de RAM é utilizável por um computador limitado pelos bits do processador?

2

Eu estava pensando recentemente em como os processadores de 32 bits suportam apenas até 4 GB de memória, e não consegui entender por que a quantidade de bits que um processador tem limita sua memória. Eu entendo, como outras questões aqui afirmam, que um número binário com 32 dígitos pode endereçar até 4 GB. Mas por que um computador não pode usar duas variáveis para referenciar a memória, e efetivamente 'agir' como se fosse 64 bits (tipo, como processadores de 32 bits podem usar inteiros de 64 bits)?

Isso é possível e reduziria o desempenho? Se isso reduzir o desempenho, e se o sistema operacional usar as referências de memória de 64 bits 'falsas' com determinados programas, em vez de usar todo o sistema?

    
por Oztaco 28.11.2015 / 04:38

3 respostas

3

Artigo da Wikipédia sobre o PAE : "As versões originais do Windows XP e do Windows XP SP1 usavam o modo PAE para permitir que a RAM ultrapassar o limite de endereços de 4 GB. No entanto, isso levou a problemas de compatibilidade com drivers de terceiros que levaram a Microsoft a remover esse recurso no Windows XP Service Pack 2. " Algumas "versões do Windows de 32 bits (Windows XP SP2 e posterior, Windows Vista, Windows 7) limitam o espaço de endereçamento físico aos primeiros 4 GB de compatibilidade de driver por meio do mecanismo de limitação de licenciamento". "O Microsoft Windows suporta PAE se inicializado com a opção apropriada, mas de acordo com Geoff Chappell, a Microsoft pode limitar as versões de 32 bits do Windows a 4 GB como uma questão de política de licenciamento."

Blog atribuído a Mark Russinov "Windows de 32 bits continuar a ignorar a memória acima, porque ainda há alguns difíceis de medir risco, e os OEMs estão (ou pelo menos deveriam estar) se movendo para o Windows de 64 bits, onde não é um problema ".

O Windows 2000 DataCenter 32-bit é compatível com até 32 GB e versões mais recentes até 64 GB.

Mais tarde, o artigo da Wikipedia discute o FreeBSD e diz: "Nem todos os drivers suportam mais de 4 GB de memória física; esses drivers não funcionam corretamente em um sistema com PAE". Portanto, a questão da compatibilidade de drivers tem afetado mais do que o Microsoft Windows.

Portanto, em conclusão, não há nenhuma razão técnica pela qual seria absolutamente impossível que o software se referisse a mais de 32 bits de espaço de endereço. Avanços / soluções alternativas, como o que você teoriza, poderiam existir, mas tal suporte não foi amplamente implementado, aparentemente devido à compatibilidade e preocupações de estabilidade.

    
por 28.11.2015 / 05:32
2

O processador é projetado para usar uma variável para o ponteiro de instrução e uma variável para o ponteiro da pilha. Todo o código é escrito assumindo isso, se você começou a jogar com duas variáveis você quebraria todo o código lá fora.

O que você pode fazer é mudar em torno de que 4gb de memória que você está usando a qualquer momento. Esse é o PAE do qual o TOOGAM está falando. Qualquer programa ainda estaria limitado a 4gb, a menos que passasse por muitos obstáculos para acessar a memória extra (e nenhum programador de aplicativos faria isso hoje em dia - se você está fazendo algo que realmente precisa de mais de 4gb você tem um Você pode ditar os termos para o usuário: 64 bits ou eu não corro) e você introduz dores de cabeça com comunicações entre processos. Compartilhar um pedaço de dados puros é bom, compartilhar um pedaço de dados contendo um ponteiro causará problemas porque o ponteiro apontará para o lugar errado no espaço de endereço do segundo programa. Esta é a causa das dores de cabeça que o TOOGAM menciona.

    
por 28.11.2015 / 05:47
2

Por que a quantidade de RAM é utilizável por um computador limitado pelos bits do processador? Não é. Historicamente, não tem sido com exemplos onde o tamanho do endereço era maior ou menor que o "bitness" da CPU.

Veja CPUs de 8 bits como o 6502 & Z80 que endereçou 64 KiB. O 8086 de 16 bits endereçou 20 bits e o de 16 bits 80286 24 bits.

Por outro lado, o Motorola 68000 de 32 bits possuía endereçamento de 32 bits, mas executava apenas 24 bits em fios, limitando-o a 16 MiB. Qual é a abordagem dos chips x64 que eu conheço, eles não estão executando 64 linhas para o mundo exterior.

Quando as arquiteturas de 32 bits estavam sendo estabelecidas, 4GiB de memória estava praticamente além da compreensão. O 80386 foi lançado em 1985. Em 1996, a Microsoft lança o MS-DOS 3.2, que ainda limita o tamanho máximo de um disco rígido. partição para 32MiB. Muito poucas pessoas estavam pensando em discos rígidos GiB, e muito menos em memória. O SPARC foi lançado em 1987. PowerPC 601 em 1992, agora estamos chegando perto dos discos rígidos GiB, se ainda não chegaram lá. As estações de trabalho Unix podem ter dois dígitos no valor de MiB RAM. A necessidade de mais de 4GiB ainda estava longe. Adicionar o hardware e a complexidade de suportar endereços maiores que 32 bits não valeu a pena.

Quando uma arquitetura é lançada e em uso, você não pode alterar facilmente os fundamentos, como o tamanho do endereço. Pode-se adicionar, como PAE no x86, ou controladores de memória externa em um 6502.

Editado para adicionar E o inverso também aconteceu. O IBM 360 , lançado em 1964, era uma máquina de 32 bits com endereçamento de 24 bits. O CRAY-2, lançado em 1985, era uma máquina de 64 bits com endereçamento de 32 bits. (Se eu estou lendo este folheto corretamente, veja "Arquitetura e design" começando página 6.) Observe que o CRAY-2 parece ser endereçável por palavra de 64 bits, portanto, o endereçamento de 32 bits forneceria um espaço de endereço de 8 * 4 Gi ou 32 GiB.

Outra nota

Eu tenho falado sobre o espaço de endereços. O título da pergunta é sobre RAM. A RAM, ausente de um controlador de memória externo que remapeie a memória, será limitada pelo número de fios da linha de endereço vindos da CPU. Algumas CPUs tinham menos linhas de endereço do que bits em seu espaço de endereço. Um exemplo famoso é o Motorola 68000, que tinha um espaço de endereço de 32 bits com apenas 24 linhas de endereço . Outro exemplo é o 80386SX da Intel, novamente 32 bits de endereço e 24 linhas de endereço.

    
por 13.01.2016 / 07:29