Por que o Windows 7 x64 funciona mais rápido que uma edição x86 no meu PC, mesmo que eu use principalmente coisas x86? O que há de errado comigo e o que estou perdendo?
A maioria das coisas que uso é x86 (por exemplo, DAWs, jogos, players de mídia). Uma quantidade considerável deles, no entanto, é x64 (embora seus equivalentes x86 funcionem perfeitamente).
Tentei usar as mesmas coisas no mesmo sistema, mas sempre acabei encontrando o Windows 7 x64 funcionando um pouco mais rápido que o x86. Eu sou muito observador. Eu até percebo as menores animações de janelas.
Sistema : Windows 7 Ultimate x64
CPU : Intel Core 2 Duo E7500 a 2,93 GHz
RAM : 2 GB x 2 = 4 GB DDR2 a 332 MHz
Placa - mãe : Intel D945GCNL Placa
gráfica : ATI Radeon HD 4350 a 1 GB
Áudio dedicado : M-Audio FastTrack Pro
HDD : Samsung HD753LJ 733 GB e Samsung HD160JJ 156 GB
Como você pode ver, meu sistema é antigo.
Respostas:
Esta é uma tentativa de fornecer uma resposta completa resumindo bits de respostas individuais já existentes, com algum conteúdo adicionado. A lista tenta incluir todas as possibilidades para um caso geral, mesmo que algumas possam ser descartadas para esse caso em particular.
Diferença do conjunto de instruções da CPU
Conforme descrito por Joel Coehoorn , para um código x64 nativo está disponível um conjunto de registros maior, além de algumas instruções adicionais (por exemplo, todas as CPUs x64 garantem a implementação de instruções SSE e SSE2). Isso significa que o sistema operacional x64 nativo e os drivers podem ser mais eficientes.
Melhor utilização da RAM
O 64b pode usar 4 GB completos (e ainda mais quando disponível). Além disso, alguns limites internos do sistema operacional (pool paginado / não paginado, tamanho máximo de cache) são aumentados com o sistema operacional 64b . Como resultado, a paginação de memória e o cache de arquivos podem ser mais eficientes.
Posição diferente do disco rígido
Quando você tem dois sistemas operacionais instalados em duas partições do mesmo disco, uma dessas duas partições é fechada na borda externa, o que geralmente é mais rápido .
Estado diferente do SO
Quando você tem dois sistemas operacionais, cada um deles pode estar em um estado um pouco diferente. Um deles pode ser mais fragmentado que o outro, um deles pode ter um registro um pouco mais limpo ou menos serviços instalados ou aplicativos em segundo plano que o outro.
Melhores condutores
Outra possibilidade é que os drivers x64 podem ter uma qualidade melhor que o x86, não por causa de algumas diferenças fundamentais da arquitetura, mas simplesmente porque o fornecedor deles se esforçou mais para otimizar e ajustá-los.
Endereçamento 64b
Acrescento isso apenas por uma questão de integridade, pois para a grande maioria dos aplicativos do dia a dia essa diferença não desempenha nenhum papel e, definitivamente, não é relevante para o que Jasper descreve em sua pergunta.
Se você possui um aplicativo que processa grandes quantidades de dados (por exemplo, trabalhando no Photoshop com imagens enormes), a execução da versão 64b pode fazer uma enorme diferença, desde que você tenha 4 GB ou mais de RAM instalada.
O que significa "mais rápido" realmente significa?
Aqui está a lista de um comentário em outra resposta , quais são exatamente as "coisas mais rápidas" que Jasper pode ver:
Difícil de explicar. A animação do Windows é feita pela GPU no Windows 7 e a GPU é a mesma. A carga na CPU é insignificante. (Suponho que você esteja usando o Aero desktop).
Pode haver drivers mais bem ajustados ou drivers aproveitando o x64,.
Pode ser causado por uma partição mais rápida (não relacionada ao sistema operacional) ou por uma melhor manipulação de cache no sistema operacional x64.
Compreensível. O desempenho dos jogos é determinado pela CPU e GPU. No caso de limitação da CPU, o código limitador é o próprio jogo, que é o mesmo código x86 com pouca interface para o sistema operacional x64. O desempenho da CPU é, portanto, o mesmo. A GPU é a mesma. A sobrecarga do driver e do sistema operacional em um jogo bem programado é baixa; portanto, é provável que nenhuma diferença de driver ou sistema operacional seja exibida aqui.
fonte
A mudança de 32 para 64 bits não é a única alteração na arquitetura x64. O x64 também adiciona mais registros de CPU e novas instruções de CPU. Um sistema operacional que sabe tirar proveito disso pode obter uma modesta melhora no desempenho do mesmo hardware. Ah, e recuperar 1 GB de RAM que costumava ser endereçado à sua placa de vídeo também não dói.
fonte
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.
fonte
Pode não ter nada a ver com 32 vs 64 bits.
Não está claro no seu post o que você quer dizer com '64 bits é mais rápido'. Devemos deduzir que você reinstalou o Windows de 64 bits em uma máquina com um Windows de 32 bits? Nesse caso, a 'redefinição' da estrutura do arquivo pode facilmente explicar as mudanças de velocidade. Uma nova instalação, principalmente se você reformatou, geralmente é mais responsiva do que uma instalação antiga, onde os arquivos são fragmentados, o espaço em disco fica baixo, o registro fica confuso, etc.
Também pode ser um dos drivers ... por exemplo, os drivers de vídeo mais recentes podem ser mais rápidos e otimizados pelo fornecedor do que as versões mais antigas do x86. Ou o driver do disco rígido pode ser melhor.
fonte
Simplificando, é porque o seu computador pode processar 64 bits (8 bytes) de dados por ciclo de clock. Seu processador recebe dados na forma de bits predeterminados conhecidas como palavras. As palavras na arquitetura x64 são duas vezes o tamanho das palavras na arquitetura x86. Embora seu processador possa não estar realmente processando dados mais rapidamente (seu Core 2 está em 2,93 Ghz em ambas as instalações), ele está processando dados com mais eficiência. Além disso, como mencionado nos comentários, permitirá que você endereça toda a sua RAM porque o seu processador está lendo a sua RAM em palavras de 64 bits. De Wikipedia :
Para um processador de 64 bits que não multiplica por 2, aumenta exponencialmente:
Este artigo , embora um pouco datado, é uma leitura muito informativo sobre como 64 obras de processamento bit.
Quero ressaltar que isso realmente não se traduz em um aumento de desempenho de 2x, porque o desempenho real depende de muitas outras variáveis (velocidade do disco, velocidade do barramento, cache do processador, memória disponível etc.). Mas você deve observar um aumento no desempenho do Windows, pois mais do sistema operacional pode ser carregado na memória e endereçado pelo processador com mais eficiência.
fonte
Eu acho que a razão mais profunda pela qual o sistema é mais rápido usando um sistema operacional de 64 bits é porque o sistema operacional de 32 bits não é capaz de utilizar toda a RAM do sistema.
O sistema operacional de 32 bits poderá controlar 32 bits, ou seja, 4 GB de espaço físico de endereço. Esse espaço de endereço inclui memória do sistema, memória de vídeo, dispositivos de entrada / saída, etc. Portanto, quando você possui uma ram de vídeo dedicada de 1 GB, pode subtrair o primeiro GB da ram disponível. Os outros dispositivos provavelmente subtrairão outros 200 MB ou mais.
Isso deixa você com apenas 2,8 GB de RAM para aplicativos. Não muito no Windows 7;)
O sistema operacional de 64 bits, por outro lado, é capaz de utilizar toda a sua RAM.
fonte
Instalei 32 e 64 bits em dois notebooks Lenovo x100e idênticos separados. 32 bits tinham 2G de RAM e 64 bits tinham 4G de RAM e os 32 bits ainda rodavam mais rápido, mais suave, mais responsivo, com muito menos atraso do que 64 bits, que era atrasado e lento. A CPU é uma CPU de 64 bits. Os mesmos drivers instalados e as atualizações do Windows feitas em ambos. Eu acho que 64 bits é para máquinas de ponta, e não de nível de entrada, mesmo com CPUs x64.
fonte