Memória Virtual

7 respostas
J

Olá pessoal … uma dúvida nada relacionada a Java, mas como criaram este espaço no fórum estou postando-a aqui …

O Pentium 4 é um processador de 32 bits … No entanto, lendo as especificações do processador na página da intel vi que ele opera com um barramento de endereço de 36 bits …

Agora eu pergunto : Como esses 36 bits podem ser aproveitados se o processor gera endereços de 32 bits e os processos consequentemente tem um espaço de endereçamento virtual de 4GB (2 ^ 32) ?

[]s

7 Respostas

louds

Pentium suporta endereçamento físico de ate 64gb. Porem o endereçamento virtual é fixo em 4gb.

Ou seja, um único processo não tem como exceder esse limite de 4gb, fora que dependendo do SO, existe um limite ainda menor para o heap, uma vez que alguma parte do vma tem que ser mapeavel para o kernel, no linux um processo só tem 3GB de heap, no windows eu não imagino.

A unica maneira com qual se tira proveito disso é rodando multiplos processos ou então ter um ZILHÃO de threads cada qual com TLS gigantesco.

dukejeffrie

Muito provavelmente, os outro 4 bits são de comando, né? ler, gravar, etc

Deve ter um jeito eficiente do processador saber se o módulo de memória tá falando com ele ou fazendo DMA, eu chutaria que um dos bits é pra isso.

Uma dúvida que eu sempre tinha era por que as placas de memória tinham pinos em número que não era potência de 2. Tem um tal “algoritmo de fulano” que serve pra corrigir erros de leitura e escrita…

[]s!!

louds

“dukejeffrie”:
Muito provavelmente, os outro 4 bits são de comando, né? ler, gravar, etc

Negativo, são 36 bits de endereçamento físico. Porem essa memoria só é acessivel via memoria virtual. Parece estranho? Mas é. O pentium, e quase todas cpus depois dele, possuem 36 pinos de endereçamento fisico. Oque permite operar com ate 64GB de ram instalada.

O padrão é utilizar apenas 32, funcionando como é de se esperar. O SO pode habilitar um modo especial que as entradas nas tabelas de páginas passam a ter 64 bits, ao inves de 32, porem alguns desses bits extras são ignorados. O mecanismo é realmente estranho para ser sincero.

“dukejeffrie”:

Deve ter um jeito eficiente do processador saber se o módulo de memória tá falando com ele ou fazendo DMA, eu chutaria que um dos bits é pra isso.

Uma dúvida que eu sempre tinha era por que as placas de memória tinham pinos em número que não era potência de 2. Tem um tal “algoritmo de fulano” que serve pra corrigir erros de leitura e escrita…

[]s!!

Tem sim, so falar com o controlador de DMA, ele serve para isso. Mas isso é outra historia completamente diferente…

Os pinos a mais da memoria são os de comando, que obviamente não podem ser transmitidos nos mesmos de dado.

Algorítmo de Hamming?
Que eu saiba nenhuma memoria usa Hamming para deteção de erro mas simplesmente paridade e impedancia eletrica.

dukejeffrie

É esse mesmo:
http://cs.ecs.baylor.edu/~donahoo/classes/4321/HammingCorrection.pdf

Eu esbarrei nesse algoritmo lendo sobre computadores quânticos. Mais ou menos um ano atrás, inventaram uma variação do algoritmo pra detectar erros nos spins dos elétrons, e que “agora sim a computação quântica vai andar”. O esquema original é o de usar alguns bits a mais pra garantir que sequências de bits estejam corretas após uma viagem. (por um bus, por exemplo, ou um cabo ethernet, qualquer fio).

Acho que tem Hamming pra ler e escrever do módulo de memória sim, vou pesquisar mais e te conto…

[]s!!

dukejeffrie

Bom…
descobri que DRAM usa Hamming pra correção sim…
maiores detalhes aqui:

http://www.cs.nmt.edu/~cs331/chap5.pdf

Só ainda não deu pra descobrir se a comunicação entre o processador e a memória usa o algoritmo ou se os módulos usam Hamming internamente, e o processador acredita neles… talvez por isso, quando vc liga o micro, o processador fica testando a sua RAM pra ver se ela lê e grava direito…

Aliás, descobri que apesar de toda essa evolução, a gente ainda usa memória do tempo dos afonsinhos!! Muitas operações sequenciais, um monte de coisas “boas o suficiente”… fiquei abismado!!

Mais um motivo pra eu usar Swing… Hehehehehe!!!

[]s!!

louds

Nesse ultimo pdf que vc citou, vi apenas codigo de hamming sendo explicado e em momento algum falar quais memorias utilizam dele.

Se bem que utilizar 1 bit de paridade para detectar 1 bit de erro pode ser considerado hamming de distancia 2.

Porem memorias comuns testam sua integridade apenas devido a falhar eletricas de comunicacao, ex: modulo-x nao respondeu, logo esta com defeito.

Tem as famosas memorias ECC, que usam um esquema semelhante a paridade para poder detectar erros de forma mais precisa e rapida.

Nos utilizamos memoria hoje em dia basicamente da mesma forma que o Von Neuman (assim que se escreve?) descreveu a maquina dele a mais de meio seculo atraz.

dukejeffrie

“louds”:
Nesse ultimo pdf que vc citou, vi apenas codigo de hamming sendo explicado e em momento algum falar quais memorias utilizam dele.

As duas, tanto DRAM quanto SRAM. Lê lá, o texto inteiro só fala disso, DRAM e SRAM… e pelo que eu vi, só fala do padrão PC. Não sei se outros padrões utilizam outras memórias…

O hamming que é mostrado lá não é de distância 2… é o ECC de sempre, usando os bits das potências.

[]s!!

Criado 23 de junho de 2003
Ultima resposta 1 de jul. de 2003
Respostas 7
Participantes 3