Por que o Windows 7 x64 funciona mais rápido que uma edição x86 no meu PC?


11

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.


4
Para iniciantes, o Windows de 64 bits usará toda a sua RAM alocada.

3
Por que você se importa que seja mais rápido? você deveria estar feliz por isso.
Matt H

@ Randolph eu entendo isso, mas como isso afeta as coisas x86? @ Matt Não, estou feliz, é claro. Eu sou apenas muito curioso. Eu não consigo entender por que isso está acontecendo.
Jasper

Você está imaginando amplamente esse efeito porque espera vê-lo. A velocidade difere de PC para PC e mesmo dentro do mesmo PC por vários fatores que são muito mais significativos do que a etapa de 32 a 64 bits. Qualquer PC recém-instalado parece mais rápido por ter menos cruft instalado.
JamesRyan

Respostas:


8

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:

  • janelas animando mais suave

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).

  • determinados programas de edição de fotos desenhando mais rapidamente (x86 e x64)
  • Vídeos em HD com uma execução mais suave (no MPC-HC x64) e uma experiência geral mais estável.

Pode haver drivers mais bem ajustados ou drivers aproveitando o x64,.

  • arquivos sendo copiados muito mais rápido

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.

  • Os jogos não mostraram nenhuma alteração.

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.


Comentei com minhas experiências na resposta de GrandmasterB. Como as experiências podem coincidir com as mesmas (quantidade de) coisas instaladas (especialmente as próprias funções do Windows) na mesma máquina DUAS VEZES? O Windows 7 foi de alguma forma mais otimizado por ser x64? Os fornecedores de hardware são mais cuidadosos com os drivers x64? Se os programas e a máquina permanecerem os mesmos com uma diferença consistente, parece que algumas coisas estão sendo melhor otimizadas de uma maneira que a outra.
Jasper

Não afirmo que a experiência seja coincidência no seu caso particular. No entanto, para uma explicação completa, essa possibilidade deve ser considerada em um caso geral. Por exemplo, a partição interna / externa é algo que pode fazer uma diferença significativa nos tempos de carregamento e não está relacionado ao SO 64b / 32b.
Suma

Eu gostaria de adicionar um pequeno pedaço de informação. Sempre que instalei o 7 (neste caso, as duas primeiras instalações x86 e as duas últimas instalações x64), sempre o instalei recentemente na mesma unidade, apagando completamente a instalação anterior. Não havia botas duplas envolvidas. Ri muito. Sim, até deixei as unidades intocadas.
Jasper

Mais: Estou usando o Aero em um monitor 1080p. Além disso, sempre executei um formato rápido em vez de um formato completo.
Jasper

"Eu sempre o instalei recentemente na mesma unidade, apagando completamente a instalação anterior" É bom saber que isso exclui a possibilidade de "partição externa mais rápida", bem como a possibilidade de estado do SO.
Suma

16

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.


Na verdade, apenas 3,25 GB são utilizáveis ​​em 4 GB, mesmo em x64. Eu esperava que isso fosse corrigido com minha atualização do x86, mas não foi.
Jasper

+1 na memória de vídeo, nem percebeu que ele tinha um cartão de vídeo.
Supercereal

3
@Jasper: Não tenho certeza se eu estou recebendo-lo bem, mas um dos meus computadores usa toda a 8GB de RAM eu tenho instalado (Win 7 x64 Ultimate)
xbonez

Esta é realmente a única coisa que faz sentido para mim. Todas as outras coisas são iguais ao executar as edições 32b e 64b do mesmo sistema operacional no mesmo sistema. Existem apenas duas diferenças: 1) reforçada registo e Instruction Set 2) espaço de endereço 64b permitindo ao endereço completo 4 GB ou RAM e mais
Suma

Ainda assim, por uma questão de perfeição, a parte de cerca de 1 GB de memória oculta 1 GB de RAM definitivamente não é verdadeira, pois qualquer pessoa com 4 GB de RAM, 32b OS e esse cartão pode testemunhar facilmente (veja também meu comentário à resposta de Pete).
Suma

7

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 LockRectpara que a GPU mapeie a memória correta na janela (e como assim que terminar, você ligaUnlockRectpara 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.


Esta é uma explicação muito boa. É importante saber que muitos binários de 32 bits foram projetados para serem executados em várias versões do Windows, incluindo XP e, possivelmente, mais cedo. Eles devem ser executados no i386 ou no mínimo i586. O AMD64 não precisa oferecer suporte a nada menos que o Pentium 4. É claro que, se for de código aberto, você pode recompilar, existem graus de SSE, que é uma das razões pelas quais o Silverlight afundou tanto.
Mckenzm

4

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.


1
Boa ideia. Saber mais o que "mais rápido" significa realmente pode ajudar. Os aplicativos são carregados mais rapidamente? Janela animar mais rápido? Os jogos têm fps mais altos? Os arquivos são copiados mais rapidamente? É bem possível que toda a explicação aqui, apesar de interessante entender a diferença de SO 32b e 64b, seja realmente irrelevante para a diferença real que Jasper descreve.
Suma

Tudo bem, deixe-me dar uma imagem mais clara do que estou falando. Eu tinha o Windows 7 x86 por um tempo com 100% do meu software e jogos necessários instalados. Reinstalei o mesmo sistema na mesma máquina, juntamente com a mesma quantidade de software e jogos, e isso me proporcionou uma experiência idêntica. Limpo meus registros uma vez por dia, fragmento meus discos rígidos a cada poucos dias e sempre mantenho uma quantidade razoável de espaço livre em cada unidade. De qualquer forma, depois disso, instalei o Windows 7 x64 duas vezes com 100% das coisas necessárias apenas para encontrar as duas experiências idênticas. [Continuar]
Jasper

As coisas que pareciam melhores: janelas animando de maneira mais suave, arquivos sendo copiados muito mais rapidamente, determinados programas de edição de fotos sendo mais rápidos (x86 e x64), vídeos em HD rodando mais suavemente (no MPC-HC x64) e uma experiência geral mais estável. Os jogos não mostraram nenhuma alteração.
Jasper

Você vê, estas são pequenas coisas. Mas, eu não estou entendendo por que essas pequenas coisas estão acontecendo que deu origem a esta pergunta. =) Eu não teria me incomodado se tivesse mais de 4 GB de RAM. Eu daria os créditos ao Windows 7 x64 para lidar com isso, mas esse não é o caso aqui, o que o torna um pouco mais complexo.
Jasper

2

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 :

Muitas vezes, ao se referir ao tamanho da palavra de um computador moderno, também se descreve o tamanho do espaço de endereço nesse computador. Por exemplo, um computador a ser dito "32-bit" também geralmente permite que endereços de memória de 32 bits; um computador de 32 bits endereçável por byte pode endereçar 2 ^ 32 = 4.294.967.296 bytes de memória ou 4 gibibytes (GB). Isso parece lógico e útil, pois permite que um endereço de memória para ser eficientemente armazenado em uma palavra.

Para um processador de 64 bits que não multiplica por 2, aumenta exponencialmente:

Um computador moderno de 64 bits endereçável por byte - com suporte adequado ao SO pode endereçar 2 ^ 64 bytes (ou 16 exbibytes) que, a partir de 2011, são considerados praticamente ilimitados.

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.


13
"pode ​​processar 64 bits (8 bytes) de dados por ciclo de clock" isso pode parecer razoável, mas na verdade não faz sentido. Quase nenhum cálculo usa 8 bytes para qualquer coisa útil. Quanto ao tráfego de memória, a CPU subjacente é a mesma, o cache e o tráfego de memória usam o mesmo BUS.
Suma

5
"uma vez que mais do sistema operacional pode ser carregado na memória" novamente, não é verdade. Isso seria verdade se o "mais do sistema operacional" tivesse mais de 4 GB. O endereçamento 64b não ajuda em nada ao trabalhar com dados com menos de 4 GB.
Suma

6
@ Kyle: leia a pergunta novamente. O processador é o mesmo da mesma máquina. É sobre a diferença de comportamento do SO na mesma máquina, não a diferença entre duas máquinas. e para sua informação, eu gostaria de manter a discussão. Gritar com as pessoas nunca ajudou ninguém. Além disso, eu sou um usuário de computador e essa é uma pergunta do usuário de computador. Então, por que não devo responder?
Joris Meys

6
Você não pode responder em um fórum público sem pele grossa o suficiente para suportar alguns caroços. Você também deve ser capaz de lidar com a natureza pedante dos nerds de computadores, escolhendo todos os detalhes da pergunta E resposta. Não dê socos, mas pense bem nas postagens. faça as correções como comprovadamente erradas e mantenha-se firme quando estiver certo.
WernerCD

6
A parte sobre "mais do sistema operacional pode ser carregado na memória e tratada pelo processador com mais eficiência" é um lixo total. O My Win7 usa cerca de 500 MB de RAM, bastante abaixo do limite de 4 GB ao qual as CPUs de 32 bits estão limitadas. O endereçamento, se houver, é menos eficiente, pois os ponteiros têm o dobro do tamanho da memória e consomem mais do valioso cache de dados. O ganho real de desempenho vem de um conjunto maior de registros; operar em dados no cache L1 é de 3 ciclos de clock, operar em dados em um registro é de 1 ciclo de clock.
zvrba

2

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.


"Então, quando você tem 1 GB de ram de vídeo dedicado, pode subtrair o primeiro GB da sua ram disponível." Lamento ser um incômodo aqui, mas isso não parece ser verdade. Eu tinha um sistema WinXP com 4 GB de RAM e 1 GB de GPU VRAM dedicada e tinha 3,6 GB de RAM disponíveis para o sistema. A questão do espaço de endereço é bastante complicada: por exemplo, cada processo possui 4 GB de espaço de endereço virtual. O driver precisa mapear a RAM da GPU no espaço de endereço virtual para que eles possam acessá-lo, mas não há necessidade do sistema operacional mapear a RAM da GPU para a RAM física.
Suma

@Suma então talvez nem todo o VRAM não esteja mapeado para a ram física. Mas o Windows XP, Vista e 7 de 32 bits não poderá usar mais de 4 GB de espaço físico de endereço. Algumas versões de servidor de 32 bits do Windows poderão endereçar mais, no entanto, usando extensões de endereço físico (embora você possa habilitar extensões de endereço físico nos sistemas operacionais Windows de 32 bits, ele ainda se recusará a endereçar mais de 4 GB de espaço de endereço físico). Portanto, coloque 4 GB de RAM em um Windows 7 de 32 bits e você não poderá usar tudo. O espaço de endereço virtual para os processos não têm nada a ver com esse limite
Pete

"Mas o Windows XP, Vista e 7 de 32 bits não poderá usar mais de 4 GB de espaço físico de endereço". Sim isso é verdade. Para uma explicação detalhada, consulte codinghorror.com/blog/2007/03/… . A GPU definitivamente consome parte do espaço de 4 GB. Eu só queria corrigir o equívoco comum de que o espaço de endereço consumido é necessário para acessar a RAM da GPU, o que de fato não é. A descrição em superuser.com/questions/242562/… está correta a este respeito.
Suma

-1

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.


isso está errado, a "Experiência do usuário" com a máquina x64 às vezes é bastante ruim, pois eles executam quase 90% de aplicativos x86 nela.
Francisco Tapia
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.