Aviso: esta é uma pergunta um pouco mais complexa do que você imagina e certamente mais do que a maioria das respostas retratou. Para tentar cobrir pelo menos um pouco mais da história, este post é bastante longo ...
Primeiro de tudo, a situação com memória de vídeo. A totalidade da memória da placa de vídeo não é (pelo menos normalmente) diretamente visível no espaço de endereço da CPU. Você geralmente tem uma "janela" de aproximadamente 128 a 256 megabytes de memória de vídeo visível para a CPU. A GPU pode mapear diferentes partes de sua memória para essa janela, para que você possa escrever normalmente na maioria das memórias da CPU, mas precisa informar à GPU com antecedência o que você vai escrever antes de fazer isso. Por exemplo, quando você usa o DirectX e deseja gravar diretamente na memória gráfica, pode fazer isso - mas, para isso, começa ligando LockRect
para que a GPU mapeie a memória correta na janela (e como assim que terminar, você ligaUnlockRect
para mapear outra memória conforme necessário). Pelo menos no caso típico, você pode ajustar o tamanho da janela de vídeo na configuração do BIOS.
Segundo, mesmo no modo de 32 bits, os processadores x86 suportam o chamado PAE (Physical Address Extensions), que permite à CPU endereçar mais de 4 Gig. de memória. A Microsoft oferece suporte ao PAE em algumas versões do Windows - mas apenas na relativamente cara Enterprise Edition do Windows Server. Além disso, o programa deve ser escrito especificamente para usar o AWE. Existem apenas alguns programas (por exemplo, SQL Server Enterprise Edition) que já o fizeram. Conclusão: é possível, mas bastante raro.
No que diz respeito à leitura de 64 bits por vez: o último processador a ler dados apenas 32 bits por vez foi o 486. Começando com o Pentium, todos os processadores tiveram barramentos de dados de 64 bits. Observe que o barramento de endereço não é o mesmo que o barramento de dados; portanto, a expansão para um barramento de dados de 64 bits não permitiu que o processador trabalhasse com mais memória (embora, por acaso, o PAE tenha sido adicionado ao Pentium Pro, portanto foi quase simultâneo com a expansão para um barramento de dados de 64 bits).
Embora o Pentium pudesse ler 64 bits de dados em um único ciclo de clock, internamente (principalmente) processava dados 32 bits por vez. O ônibus mais amplo , principalmente ajudou a compensar a diferença de velocidade entre a CPU ea memória principal. As instruções MMX do Pentium MMX suportavam o processamento de dados em blocos de 64 bits, mas era bastante desajeitado de usar e (em particular) a maioria dos compiladores não gerava código MMX, então você praticamente precisou escrever em linguagem assembly para usá-lo . O Pentium também suportava operações de 64 bits (e 80 bits) para números de ponto flutuante, mas isso é usado apenas para uma minoria razoavelmente pequena da maioria dos programas (e geralmente era mais lento do que trabalhar com números inteiros).
O design do x86-64 possui duas vezes mais registros de uso geral que o design do x86 de 32 bits, e cada um desses registradores tem 64 bits de largura. Quando a CPU está sendo executada no modo de 32 bits, no entanto, apenas o subconjunto dos registros que existiam nas CPUs de 32 bits é utilizável.
Voltando ao ponto flutuante por um momento, no modo de 32 bits, a matemática do ponto flutuante é feita usando o conjunto de instruções originalmente projetado para o coprocessador matemático Intel 8087. Isso usa um modelo que dificulta bastante o uso total de seus recursos. A Intel (e a AMD) adicionaram mais recentemente "Streaming SIMD Extensions", ou SSE. A maioria dos compiladores de 64 bits gera código que pode / usa SSE em vez de ponto flutuante compatível com 8087. O "SIMD" no SSE significa "instrução única, vários dados". O que isso significa é que uma instrução SSE pode executar duas operações de ponto flutuante em duas partes de dados separadas. Embora isso não necessariamente duplique a velocidade, geralmente melhora a velocidade pelo menos um pouco.
Finalmente, devo salientar que há uma parte da comparação que geralmente é um pouco injusta. Quando você instala um novo sistema operacional, quase sempre é pelo menos um pouco mais rápido que um sistema operacional em uso há um bom tempo. Os programas armazenam dados no registro, no disco rígido, etc. Quanto mais dados você adicionar, mais trabalho tende a ser envolvido na localização dos dados que você deseja a qualquer momento. Embora as empresas que vendem "produtos de limpeza de registro" exagerem esse efeito com frequência, isso é verdade até certo ponto. Como tal, se tudo o que você fez foi reformatar seu disco rígido e reinstalar exatamente o mesmo sistema operacional, você poderia esperar uma melhora na velocidade - e se você tiver o sistema operacional antigo instalado e usado intensamente por um longo tempo , essa melhoria (por si só) podeser bastante substancial. Pelo menos parte da melhoria de velocidade que você está vendo pode ser independente de qualquer diferença real entre os dois sistemas operacionais.
É claro que há mais do que isso, mas você começa a entender. Não se trata apenas de um único recurso fazer uma enorme diferença, como muitos recursos que geralmente fazem pequenas diferenças individualmente, mas muitos deles se juntam (ou até se multiplicam) para fazer uma diferença substancial no geral.