Artigo 32-bit vs 64-bit e os 4GB de memória.

Não é emular. Ele corre nativamente a 32-bit porque o CPU funciona em modo 32-bit ou 64-bit. A perda de performance é mínima (nunca mais de 1 a 2%) e apenas será causada pelo overhead gerado por ter mais informação em memória (bibliotecas de 32-bit e 64-bit em simultâneo) e as fracções de segundos que poderá eventualmente demorar o CPU a mudar do modo 32-bit para 64-bit. Na prática a diferença é virtualmente nula. Certamente quem nota problemas em jogos ou são jogos algo antigos que não se safam bem em SOs 64-bit ou então é efeito placebo :P
 
Boas


Só uma correcção, a palavra de controlo não tem propiamente a ver com os 32bits/64bits. Por exemplo, o Pentium (r), ou seja, a primeira versão do pentium datada de 1993, tinha uma palavra de controlo de 36bits, sendo um processador de 32bits. Outro exemplo, Pentium II, 32bits, data bus interno de 36bits, data bus externo de 64bits. O que dita ser um CPU de 32bits é a unidade funcional.

O que torna a maquina de 32bits ou 64bits é a unidade funcional do CPU, que tem a unidade aritmética e a unidade lógica. O CPU trabalha ao nivel de registos. Se a unidade funcional é de 32bits, quando quer fazer uma transferencia entre os registos, só pode mover 32bits.

Não sei numeros, mas a nivel de acesso a memória, o vosso CPU não acede directamente aos 2GB ou aos 4GB de memória que têm na maquina, nem tão pouco usa 32bits para aceder a memória, mas sim, muito menos. Ele acede a uma tabela na memória que por sua vez tem o endereço dos dados a serem lidos. Essa tabela (que corresponde aos primeiros campos da memória) é preenchida aleatóriamente e o seu preenchimento pode ser feito com base em vários algoritmos (como por exemplo o Buddy). A memória em si não está dividida em porções menores que 8bytes (4bytes no caso dos 80486 e 2bytes no caso dos 8086). Por isso, o CPU acaba por pouco importar para a história da memória. Ele só faz operações de 32bits e por muito boa vontade que tenha, só faz operações com registos de 32bits.

O controlador de memória, esse sim é o responsavel. Um controlador de memória, no chipset, projectado para permitir 3GB de RAM:
3GB = 3072MB = 3.221.225.472bytes
dividindo por 8(bytes) temos no máximo de fragmentação, 402.653.184bytes extra para a tabela de alocação
somando os 2 valores, o controlador está feito para trabalhar com 3GB de ram e precisa de 384mb para o fazer (no pior dos casos), por isso, está preparado para identificar 3,375GB de RAM.

Depois há sempre áreas reservadas para hardware (e não estou a falar da gráfica).
Existem na maquina muitos dispositivos com suporte DMA (Direct Memory Access). Para o acesso directo, o dispositivo chega a tabela de alocação e escreve lá um codigo que permite ao controlador perceber que aquela zona de memória não está disponivel. No própio dispositivo (seja um HDD, placa rede, som, etc), há uma memória com os endereços de RAM dos seus dados. Desta forma, o dispositivo em vez de aceder a tabela e depois aceder a ram, acede directamente a ram. Tipicamente perde-se 32mb a 128mb de RAM neste tipo de dispositivos.

Está assim justificado este tipo de valor:
epox-mb-4gb-3.jpg



As gráficas são um caso a parte, ou têm memória partilhada ou então só reservam acesso directo para pequenas tarefas. Uma gráfica de 256MB de memória nativa, se não partilhar memória de sistema, apenas reserva para si 1 ou 2mb de memória de sistema. Já uma GMA950, reserva 8MB e faz uso de outros 248/216 (dependendo da bios) acedendo a tabela, ou seja, partilhando os recursos e fragmentando os seus dados. Uma GMA900 reserva integralmente 32~128MB para acesso directo (dependendo do que está definido na bios).


O meu netbook por exemplo, tem 13MB reservados para hardware, 8MB são de certeza para a GMA950, os restantes 5MB estão divididos entre DMA para o HDD, DMA para o controlador de Audio e eventualmente DMA para a placa de rede.
 
Última edição:
Pessoal, não li todo o tópico, mas fiquei com uma dúvida. Então se um SO de 32 bit, só detecta até 4GB, então se tiver instalado mais do que 4GB, por ex. 6GB, não vou notar diferença a nivel do rendimento da máquina?
 
eu já li o 1º post do tópico e não vejo a resposta a minha pergunta... :S

O tópico só tem 6 páginas por isso não custava muito leres um pouco...

mas pronto, vou resumir-te a resposta: Ou funciona só com 3,25GB sem penalização de performance ou então funciona com 6GB (modo PAE) com penalização de performance ligeira que é agravada à medida que a memória em utilização pelo SO aumenta.
 
O tópico só tem 6 páginas por isso não custava muito leres um pouco...

mas pronto, vou resumir-te a resposta: Ou funciona só com 3,25GB sem penalização de performance ou então funciona com 6GB (modo PAE) com penalização de performance ligeira que é agravada à medida que a memória em utilização pelo SO aumenta.

obrigado pela resposta ;)
 
um pequeno erro
"Assim, facilmente se observa que 2^32 = 4294967296 posições de memória. Dado que cada posição de memória é constituida por 8 bits = 1 byte teremos os 4294967296 bytes de memória para endereçar."

Na realidade cada posição de memória é constituída por 9 bits em sistemas de 64bits.
(o bit extra indica se a palavra na memória que se deve aceder é uma palavra de 32 ou de 64 bits)
Não encontro fonte mas foi discutido isto numa aula de Arquitectura de Computadores @ IST

Ou sou eu que confundi os termos?

EDIT: A única info que encontrei foi sobre "RAM parity"
 
Última edição:
Acho isso um bocado para o impossível. Visto que isso impossibilitaria o uso de hardware feito para 32bits em sistemas de 64bits, uma vez que iria estar a faltar um bit em cada posição de memória.

Mas pergunta ao stor que ele responde-te.
 
Acho isso um bocado para o impossível. Visto que isso impossibilitaria o uso de hardware feito para 32bits em sistemas de 64bits, uma vez que iria estar a faltar um bit em cada posição de memória.

Mas pergunta ao stor que ele responde-te.


Nem por isso diutsu.
Os sistemas de 32 bits iriam ter sempre esse bit a 0.

Mas assim que puder envio o e-mail ao stor para ver o que ele me pode explicar.
 
Isso iria provocar problemas de compatibilidade com sistemas anteriores.
Não se pode "a meio caminho" colocar um bit extra de controlo, se os software's mais antigos não souberem que ele lá está para o interpretar.

Esse bit de controlo existe em diversos sitios, como protocolo da internet para controlo se a informação foi bem enviada ou não.
Na ram dos pc's não me parece ;) ( pelo menos por esse motivo indicado )
 
obrigado pela resposta ;)
Para quem usa 4, 6 ou até mais GB de memória acho que uma coisa boa a fazer é criar uma RAM Drive de 1gb ou mais. E endereçar os directórios temporários para essa drive.

De um modo geral por exemplo no meu portatil tenho um muito bom acréscimo de desempenho por ter 4gb de memoria, sendo 1gb da mesma RamDrive, do que ter a ramdrive desactivada.
 
Back
Topo