Pergunta

Eu sou novo em programação e vêm de um fundo não-CS (nenhum grau formal). Eu, principalmente, winforms programa usando C #.

Estou confuso cerca de 32 bits e 64 bits .... Quer dizer, já ouviu falar sobre OS 32 bits, processador de 32 bits e com base no qual um programa pode ter memória máxima. Como isso afeta a velocidade de um programa. Há muito mais perguntas que continuam vindo à mente.

Eu tentei passar por alguns livros Organização e Arquitetura de Computadores. Mas, seja eu sou burro demais para entender o que está escrito lá ou os escritores assumem que o leitor tenha algum fundo CS.

Alguém pode explicar-me essas coisas de uma forma simples planície Inglês ou apontar-me a algo que faz isso.

EDIT: Eu li coisas como modo Em 32 bits, eles podem acessar até 4GB de memória; no modo de 64 bits, eles podem acessar muito mais .... Eu quero saber por que todas essas coisas.

BOUNTY : As respostas abaixo são realmente bom .... esp um por Martin. Mas, eu estou olhando para uma explicação completa, mas em simples planície Inglês.

Foi útil?

Solução

É realmente tudo se resume a fios.

Em circuitos digitais, apenas 0 e 1 da (geralmente de baixa tensão e alta tensão) pode ser transmitida de um elemento (CPU) a outro elemento (chip de memória). Se eu tiver apenas 1 fio, só posso enviar um 1 ou um 0 sobre o fio por ciclo de clock. Isto significa que posso único endereço 2 bytes (assumindo byte endereçamento, e que os endereços inteiros são transmitidos em apenas 1 ciclo de velocidade!).

Se eu tiver 2 fios, posso abordar 4 bytes. Porque eu posso enviar: (0, 0), (0, 1), (1, 0), ou (1, 1) sobre os dois condutores. Então, basicamente, é 2 elevado à potência de # de fios.

Então, se eu tiver 32 fios, posso abordar 4 GB, e se eu tiver 64 fios, posso abordar muito mais.

Existem outros truques que os engenheiros podem fazer para resolver um espaço de endereço maior do que os fios permitem. Por exemplo. dividir o endereço em duas partes e o envio de uma meia no primeiro ciclo e a segunda metade do ciclo seguinte. Mas isso significa que a sua interface de memória será a metade da velocidade.

Editado meus comentários em aqui (não editado);.) E tornando-se um wiki se alguém tem alguma coisa interessante para adicionar assim

Como outras observações já mencionado, 2 ^ 32 (2 à potência de 32) = 4294967296, que é 4 GB. E 2 ^ 64 é 18.446.744.073.709.551.616. Para cavar ainda mais (e você provavelmente já leu isso em Hennesey & Patterson) processadores contém registros que ele usa como "espaço de rascunho" para armazenar os resultados de seus cálculos. A CPU só sabe como fazer aritmética simples e sabe como mover os dados. Naturalmente, o tamanho desses registros são a mesma largura em bits como o "# -bits" da arquitetura é, assim registros de uma CPU de 32 bits será de 32-bits de largura, e registros de CPU de 64 bits será de 64-bits Largo.

Não haverá exceções a esta quando se trata de ponto flutuante (para lidar com precisão dupla) ou outras instruções SIMD (Single Instruction-, vários comandos de dados). As cargas de CPU e salva os dados de e para a memória principal (RAM). Desde que a CPU também utiliza esses registros para endereços de memória de computação (físicos e virtuais), a quantidade de memória que ele pode endereço também é o mesmo que a largura de seus registros. Há algumas CPUs que a computação endereço de alças com registros prolongados especiais, mas aqueles que eu chamaria de "depois de pensamentos", acrescentou depois que os engenheiros perceberam que precisava.

No momento 64-bits é bastante para lidar com a memória física real. A maioria das CPUs de 64 bits vai omitir algumas fios quando se trata de fiação até a CPU à memória devido à praticidade. Ele não vai fazer sentido usar-se precioso motherboard imobiliário para passar os fios que sempre tem 0 do. Já para não falar, a fim de ter a quantidade máxima de RAM com a densidade DIMM de hoje exigiria 4 bilhões de slots DIMM:)

Para além do aumento da quantidade de memória, processadores de 64 bits oferecem computação mais rápida para números inteiros maiores que 2 ^ 32. Anteriormente programadores (ou compiladores, que também é programado por programadores;) teria de simular tendo um registo de 64 bits, tendo-se dois registos de 32 bits e de manuseamento de quaisquer situações de transbordamento. Mas em CPUs de 64 bits que seria tratado pela própria CPU.

A desvantagem é que uma CPU de 64 bits (com tudo igual) iria consumir mais energia do que uma CPU de 32 bits apenas devido a (aproximadamente) duas vezes a quantidade de circuitos necessário. No entanto, na realidade, você nunca vai ficar comparação iguais porque CPUs mais recentes serão fabricados em processos de silício mais recentes que têm menos vazamento de energia, permitem que você empinar mais circuito no mesmo tamanho de morrer, etc. Mas arquiteturas de 64 bits iria consumir o dobro memória. O que antes era considerado "feio" de comprimento instrução variável de x86 é realmente uma vantagem agora em comparação com arquiteturas que usa um tamanho de instrução fixo.

Outras dicas

Vamos tentar responder a esta pergunta, olhando para pessoas contra computadores ; espero que isto vai lançar alguma luz sobre as coisas para você:

coisas para manter em mente

  • Como incrível como eles são, os computadores são muito, muito estúpido.

Memória

  • As pessoas têm memória (com excepção, sem dúvida, dos maridos e políticos.) Informações Pessoas loja em sua memória para uso posterior.
    • Com uma pergunta (por exemplo, "Qual é o seu número de telefone?") Uma pessoa é capaz de recuperar informações para dar uma resposta (por exemplo, "867-5309")
  • Todos os computadores modernos têm memória, e armazenar informações em sua memória para uso posterior.
    • Como os computadores são mudos, eles só pode ser feito uma pergunta muito específica para recuperar informações: "Qual é o valor em X em sua memória?"
      • Na pergunta acima, X é conhecido como um endereço , que também pode ser chamado de um ponteiro .

Portanto, temos aqui uma diferença fundamental entre pessoas e computadores: Para informações recordação da memória, os computadores precisam de ser dado um endereço , enquanto as pessoas não o fazem. (Bem, em certo sentido pode-se dizer "o seu número de telefone" é um endereço porque dá informações diferentes do que "seu aniversário", mas isso é outra conversa.)

Números

  • As pessoas usam o sistema de numeração decimal . Isso significa que para cada dígito em um número decimal, o dígito pode ser um de 0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9. As pessoas têm dez opções por dígito .
  • Todos os computadores modernos usam o sistema numérico binário . Isso significa que para cada dígito em um número binário, o dígito só pode ser 1 ou 0. Os computadores têm dois opções por dígito.
    • No jargão computador, um único dígito binário é chamado de pouco , abreviação de b inary escavação que .

Addresses

  • Cada endereço em um computador é um número binário.
  • Cada endereço em um computador tem um número máximo de dígitos (ou bits) que ele pode ter. Isto é principalmente porque o hardware do computador é inflexível (também conhecido como fixa ) e precisa saber antes do tempo que um endereço só será assim por muito tempo.
  • Termos como "32 bits" e "64 bits" estão falando sobre o endereço mais longo para que um computador pode armazenar e recuperar informações. Em Inglês "32-bit" neste meio dos sentidos "Este computador espera instruções sobre a sua memória para ter endereços não mais do que 32 dígitos binários longo."
    • Como você pode imaginar, os mais bits de um computador pode lidar com o mais longo o endereço pode olhar para cima e, portanto, mais memória ele pode gerenciar de uma vez.

32-bit v. Endereçamento de 64 bits

  • Para um número inflexível (fixo) de dígitos (por exemplo, 2 dígitos decimais) os números possíveis você pode representar é chamado Gama (por exemplo, 00 a 99, ou 100 números exclusivos). Adicionando um adicional multiplica decimal dígito da gama de 10 (por exemplo, 3 dígitos decimais -> 000 a 999, ou 1000 números únicos).
  • Isso se aplica a computadores, também, mas porque eles são binário máquinas em vez de decimal máquinas, adicionando um dígito binário adicional ( pouco ) só aumenta a gama por um fator de 2 .

    Dirigindo intervalos:
    • 1-bit de resolução permite que você falar sobre 2 endereços únicos (0 e 1).
    • 2 bits de endereçamento permite falar sobre 4 endereços exclusivos (00, 01, 10 e 11).
    • 3 bits de endereçamento permite falar sobre 8 endereços únicos (000, 001, 010, 011, 100, 101, 110, e 111).
    • e depois de um longo tempo ... endereçamento de 32 bits permite que você fale sobre 4294967296 endereços únicos.
    • e depois de uma ainda mais algum tempo ... endereçamento de 64 bits permite que você fale sobre 18,446,744,073,709,551,616 endereços únicos. Isso é um LOT de memória!

Implicações

O que tudo isto significa é que um computador de 64 bits pode armazenar e recuperar muito mais informação do que um computador de 32 bits. Para a maioria dos usuários isso realmente não significa muito, porque as coisas como navegar na web, verificar e-mail e jogar Solitaire todo o trabalho confortavelmente dentro dos limites de endereçamento de 32 bits. Quando o benefício de 64 bits vai realmente brilhar está em áreas onde você tem uma grande quantidade de dados que o computador terá a produzir através. processamento de sinal digital, fotografia gigapixel e jogos em 3D avançada são todas as áreas onde os seus enormes quantidades de processamento de dados veria um grande impulso em um ambiente de 64 bits.

Muitos processadores modernos pode ser executado em dois modos: modo de 32 bits, e modo de 64 bits. No modo de 32 bits, eles podem acessar até 4GB de memória; no modo de 64 bits, eles podem acessar muito mais. processadores mais antigos suportam apenas o modo de 32 bits.

sistemas de uso escolher utilizar os processadores em um destes modos: no momento da instalação, é feita uma escolha para se operar o processador no modo de 32 bits ou no modo de 64 bits. Mesmo que o processador pode continuar a operar no modo de 64 bits, a mudança de 32 bits para 64 bits exigiria uma reinstalação do sistema. Os sistemas mais antigos suportam apenas o modo de 32 bits.

As aplicações podem também ser escrito em (ou compilado para) o modo de 32 bits ou 64 bits. Compatibilidade aqui é mais complicado, como o processador, quando executado no modo de 64 bits, ainda pode suportar aplicações de 32 bits como um recurso de emulação. Portanto, em um sistema operacional de 64 bits, você pode executar tanto aplicativos de 32 bits ou aplicativos de 64 bits. Em um sistema operacional de 32 bits, você pode executar apenas aplicativos de 32 bits.

Mais uma vez, escolhendo o tamanho é principalmente uma questão de quantidade de memória principal que você deseja acessar. aplicativos de 32 bits são muitas vezes restrito a 2GB em muitos sistemas, desde que o sistema precisa de algum espaço de endereço por si.

Do ponto de vista do desempenho (velocidade), não há nenhuma diferença significativa. aplicativos de 64 bits pode ser pouco mais lento porque eles usam ponteiros de 64 bits, por isso eles precisam de mais acessos de memória para uma determinada operação. Ao mesmo tempo, eles também podem ser um pouco mais rápido, uma vez que pode executar operações de inteiros de 64 bits como uma instrução, ao passo que os processadores 32-bit precisa de imitar os com múltiplas instruções. No entanto, essas operações com números inteiros de 64 bits são bastante incomuns.

A pessoa também pode se perguntar o que o custo é de executar uma aplicação de 32 bits em um processador de 64-bit: nos processadores AMD64 e Intel64, este modo de emulação é principalmente em hardware, por isso não há perda de desempenho real sobre a execução do 32 aplicação -bit nativamente. Isto é significativamente diferente em Itanium, onde 32-bit (x86) aplicações são emulados muito mal.

Deixe-me contar a história de Binville, uma pequena cidade no meio do nada. Binville tinha uma estrada que conduz a ele. Cada pessoa quer chegar a ou deixando Binville teve que dirigir nesta estrada. Mas, como você se aproximou da cidade, havia um garfo. Você poderia ir para a esquerda ou vá para a direita.

Na verdade, cada estrada tinha um garfo nele, exceto para as estradas que levam até as próprias casas. Essas estradas simplesmente terminou na casa. Nenhuma das estradas tinham nomes; eles não precisam de nomes graças a um engenhoso esquema de endereçamento criado pela Comissão de Planeamento Binville. Está aqui um mapa de Binville, mostrando as estradas e as casas:

              ------- []  00
             /
       ------
      /      \
     /        ------- []  01
-----
     \        ------- []  10
      \      /
       ------
             \
              ------- []  11

Como você pode ver, cada casa tem um endereço de dois dígitos. Esse endereço é suficiente para a) identificar cada casa (não há repetições) e b) dizer-lhe como chegar lá. É fácil de obter em torno da cidade, você vê. Cada garfo é marcado com um zero ou um, que a Comissão de Planejamento chama a Binville Intersection Tracer, ou pouco para breve. Ao se aproximar do primeiro garfo, olhar para o primeiro bit do endereço. Se for um zero, vá para a esquerda; se é um um, vá para a direita. Então olha para o segundo dígito quando você chegar ao segundo garfo, indo para a esquerda ou para a direita, conforme apropriado.

Vamos dizer que você quer visitar seu amigo que vive em Binville. Ela diz que vive na casa 10. Quando você chegar à primeira bifurcação do Binville, vá para a direita (1). Em seguida, na segunda bifurcação, vire à esquerda (0). Você está lá!

Binville existiu assim por vários anos, mas a palavra começou a dar a volta sobre a sua localização idílica, ótimo sistema de parque, e cuidados de saúde generoso. (Afinal, se você não tem que gastar dinheiro em placas de rua, você pode usá-lo em coisas melhores.) Mas havia um problema. Com apenas dois bits, o esquema de endereçamento foi limitado a quatro casas!

Assim, a Comissão de Planejamento colocar suas cabeças juntas e veio com um plano: que gostaria de acrescentar um pouco para cada endereço, duplicando assim o número de casas. Para implementar o plano, que iria construir um novo garfo na borda da cidade e todo mundo iria obter novos endereços. Aqui está o novo mapa, mostrando a nova bifurcação que leva à cidade ea nova parte de Binville:

                     ------- []  000
                    /
              ------
             /      \
            /        ------- []  001
       -----                            Old Binville
      /     \        ------- []  010
     /       \      /
    /         ------
   /                \
  /                  ------- []  011
--
  \                  -------     100
   \                /
    \         ------
     \       /      \
      \     /        ------- []  101
       -----                            New Binville (some homes not built yet)
            \        -------     110
             \      /
              ------
                    \
                     -------     111

Você notou que todos na parte original do Binville simplesmente adicionado um zero à frente de seu endereço? O novo bit representa o novo cruzamento que foi construído. Quando o número de bits é aumentada de um, o número de endereços duplica. Os cidadãos sempre soube o tamanho máximo de sua cidade: tudo o que tinham a fazer era calcular o valor de dois elevado à potência do número de bits. Com três bits, eles poderiam ter 2 3 = 8 casas.

Alguns anos se passaram e Binville foi mais uma vez lotado. Mais pessoas queriam mudar, assim que um outro bit foi adicionado (juntamente com a intersecção requisite), duplicando o tamanho da cidade para dezesseis casas. Em seguida, outro pouco, e outra, e outra ... endereços de Binville foram logo em dezesseis bits, capaz de acomodar até 2 16 (16.384) casas, mas não foi o suficiente. As pessoas se divertir e vindo!

Assim, a Comissão de Planejamento decidiu resolver o problema de uma vez por todas: eles iriam saltar todo o caminho até trinta e dois bits. Com endereços suficientes para mais de quatro bilhões casas (2 32 ), certamente que seria suficiente!

E foi ... por cerca de 25 anos, quando Binville já não era uma pequena cidade no meio do nada. Era agora uma grande metrópole. Na verdade, ele estava começando a ser tão grande como uma nação inteira com bilhões de habitantes. Mas os parques foram ainda nice e todos tinham grande cuidado de saúde, para que a população continuou a crescer.

Diante da crescente população, a Comissão de Planejamento mais uma vez colocar suas cabeças juntas e propôs uma nova expansão da cidade. Desta vez, eles usariam 64 bits. Sabe quantas casas poderiam caber dentro dos limites da cidade Binville agora? É isso mesmo: 18, 446.744.073.709.551.616. Esse número é tão grande, que poderia preencher cerca de dois bilhões de Terras e dar a todos o seu próprio endereço.

Usando 64 bits não foi uma panacéia para todos os seus problemas de endereçamento. Os endereços de tomar duas vezes mais espaço para escrever como os antigos endereços de 32 bits fez. Pior, alguns cidadãos ainda não tinham actualizado os seus endereços para usar o novo formato de 64 bits, então eles foram forçados a uma murada-off seção da cidade reservada especificamente para quem ainda usa endereços de 32 bits. Mas isso era OK: as pessoas que usam 32 bits teve acesso a mais do que suficiente da cidade para atender às suas necessidades. Eles não sentem a necessidade de mudança ainda.

Will 64 bits será suficiente? Quem sabe neste momento, mas os cidadãos de Binville estão à espera para o anúncio de endereços de 128 bits ...

A resposta de Martin é principalmente correta e detalhada.

Eu pensei que seria apenas mencionar que todos os limites de memória são por aplicação de memória virtual limites, não limites para a memória física real no computador. Na verdade, é possível trabalhar com mais de 4 GB de memória no pedido único, mesmo em sistemas de 32 bits, ele só requer mais trabalho, uma vez que não pode ser tudo usando ponteiros acessíveis ao mesmo tempo. link de texto

Outra coisa que não foi mencionado é que a diferença entre o processador x86 tradicional e x86-64 é não só no tamanho do ponteiro, mas também no conjunto de instruções. Enquanto os ponteiros são maiores e consumir mais memória (8 bytes em vez de 4) é compensado pelo maior conjunto de registradores (15 registos de uso geral em vez de 8, IIRC), de modo que o desempenho pode realmente ser melhor para o código que faz o trabalho computacional.

A resposta de Martin é excelente. Só para acrescentar alguns pontos adicionais ... desde que você menciona NET, você deve observar que o CLI / JIT tem algumas diferenças entre x86 e x64, com diferentes otimizações (tail-chamada, por exemplo), e algum comportamento sutil diferente do avançado coisas como volatile. Isso tudo pode ter um impacto sobre seu código.

Além disso, nem todos código funciona em x64. Qualquer coisa que usa DirectX ou certas características COM podem lutar. Não é realmente um desempenho recurso, mas importante saber.

(I removido "DirectX" - Eu poderia estar falando lixo lá ... mas simplesmente: você precisa verificar que tudo o que depender é estável em sua plataforma de destino)

Pense em uma memória de computadores genéricos como um cartão de bingo enorme, com milhares de milhões de praças. Para abordar qualquer quadrado indivíduo na placa existe um esquema para etiquetar cada linha e coluna B-5, I-12, O-52..etc.

Se não houver número suficiente de praças no cartão, eventualmente, você vai ficar sem cartas então você vai precisar para começar a reutilizar mais letras e escrever um número maior de continuar a ser capaz de abordar exclusivamente cada quadrado.

Antes que você perceba o locutor está jorrando números irritantemente enormes e combinações de letras para que você saiba qual quadrado para marcar no seu 10 bilhões cartão quadrado. BAZC500000, IAAA12000000, OAAAAAA523111221

A contagem do computador bit especifica o limite da complexidade das letras e números para resolver qualquer quadrado específico.

32-bits meios se o cartão é qualquer maior do que 2 ^ 32 praças do computador não tem suficiente fios e transisters para permitir que ele para tratar exclusivamente fisicamente qualquer específica praça necessário para ler um valor ou escreva um novo valor para o especificado memória local.

computadores de 64 bits pode endereçar individualmente um maciço de 2 ^ 64 quadrados .. mas a fazê-lo cada quadrado precisa de muito mais letras e números para se certificar de cada quadrado tem seu próprio endereço exclusivo. É por isso que computadores de 64 bits precisa de mais memória.

Outros exemplos comuns de limites de endereçamento são números de telefone locais. Eles são ususally 7 dígitos 111-2222 ou reformatados como um número 1.112.222 .. o que acontece quando existem mais de 9.999.999 pessoas que querem seus próprios números telelphone? Você pode adicionar códigos de área e códigos de país e seu número de telefone vai de 7 dígitos para 10-11 ocupar mais espaço.

Se você estiver familiarizado com a iminente escassez de IPv4 é o mesmo problema .. Os endereços IPv4 são 32 bits ou seja, há apenas 2 ^ 32 (~ 4 bilhões) endereços IP únicos possível e há muitas mais pessoas do que vivo hoje .

Há sobrecarga em todos os esquemas que mencionei (computadores, telefones, endereços IPv4), onde certas partes são reservados para fins de organização de modo que o espaço utilizável é muito menor.

A promessa de desempenho para o mundo dos 64 bits é que em vez de enviar 4 bytes de cada vez (ABCD) um computador de 64 bits pode enviar 8 bytes de cada vez (ABCDEFGH) para o alfabeto é transferido entre diferentes áreas da memória até duas vezes mais rápido que um computador de 32 bits. Há também benefícios para algumas aplicações que só funcionam mais rápido quando eles têm mais memória que pode usar.

No mundo real processadores para desktop de 64 bits da Intel et al não são realmente verdade processadores de 64 bits e ainda estão limitados a 32 bits para vários tipos de operações assim no mundo real o desempenho entre 32-bit e 64 aplicações bits é marginal. modo de 64 bits dá-lhe mais registos de hardware para trabalhar com o que faz melhorar o desempenho, mas adressing mais memória em um processador de 64-bit "fake" pode desempenho também ferido em algumas áreas pelo que a sua ususally uma lavagem. No futuro nós estaremos vendo mais melhorias de desempenho quando processadores para desktop tornar-se totalmente de 64 bits.

Eu não acho que eu já vi muito da palavra 'registo' nas respostas anteriores. Um computador digital é um monte de registros, com a lógica de aritmética e memória para dados e armazenar programas.

Mas primeiro ... computadores digitais usam uma representação binária de números porque os dígitos binários ( 'bits') 0 e 1 são facilmente representados pelos dois estados (ON / OFF) de um interruptor. Os primeiros computadores usados ??interruptores eletromecânicos; computadores modernos usam transistores porque eles são menores e mais rápidos. Muito menor, e muito mais rápido.

Dentro do CPU, os interruptores são agrupados em registros de comprimento finito, e as operações são normalmente realizadas nos registos inteiros: Por exemplo, adicionar este registo a isso, e assim por diante. Como seria de esperar, uma CPU de 32 bits tem registos de 32 bits de comprimento. Estou simplificando aqui, mas urso comigo.

Não faz sentido para organizar a memória do computador como uma série de 'locais', cada um segurando o mesmo número de bits como um registo CPU: por exemplo, carregar este registo a partir desse local de memória. Na verdade, se pensarmos em memória como bytes , que é apenas uma fração conveniente de um registo e que migh carregar um registo a partir de uma série de posições de memória (1, 2, 4, 8).

Como transistores ficam menores, lógica adicional para a aritmética mais complexo pode ser implementado no espaço limitado de um chip de computador. CPU imobiliário é sempre em um prêmio.

Mas, com melhorias na fabricação de chips, mais transistores podem ser feitas de forma confiável em chips apenas ligeiramente maiores. Registros podem ser mais longos e os caminhos entre eles podem ser mais amplo.

Quando os registros que detêm os endereços dos locais de memória são mais longos, eles abordam memórias e dados maiores podem ser manipulados em pedaços maiores. Em combinação com a lógica aritmética mais complexo, as coisas são feitas mais rapidamente.

E não é isso o que estamos todas depois?

Para explicar por que o modo de 32 bits só pode acessar 4 GB de RAM:

espaço de memória acessível máxima = 2 n bytes, onde n é a palavra comprimento da arquitetura. Assim, em uma arquitetura de 32 bits, o máximo de espaço de memória acessível é 2 32 = 4294967296 = 4 GB de RAM.

64 bit arquitetura seria capaz de Acesso 2 64 = muita memória.

Só notei comentários Tchens passando por cima deste. De qualquer forma, sem um fundo CS, sim organização computador e livros de arquitetura vão ser difícil de entender na melhor das hipóteses.

  • O processador utiliza base-2 para armazenar números. Base 2 provavelmente foi escolhido porque é o "mais simples" de todas as bases:., Por exemplo, a tabela base-2 multiplicação tem apenas 4 células, enquanto base "10" tabela de multiplicação tem 100 células
  • Antes de 2003, os processadores de PC comuns eram apenas "32-bit capaz".
    • Isso significa que as operações numéricas nativas do processador fosse para números de 32 bits.
    • Você ainda pode fazer operações numéricas para números maiores, mas aqueles teria que ser realizada por programas executados pelo processador, e não ser as "ações primitivas" (comandos na máquina-language) suportados pelo processador como aqueles para 32 bit-inteiros (na época)
    • 32 bits foram escolhidos porque os engenheiros da CPU é apreciador de potências de 2 e 16-bits não foram suficientes
  • Por que não eram de 16 bits o suficiente? Com 16 bits pode representar inteiros na faixa de 0-65535
    • 65535 = 1111111111111111 em binário (= 2 0 2 1 2 2 ... + 2 15 = 2 16 -1)
    • 65535 não é suficiente porque, por exemplo, um software de gestão hospitalar precisa ser capaz de contar mais de 65535 pacientes
    • Normalmente as pessoas considerar o tamanho da memória do computador quando se discute o quão grande seus inteiros deve ser. 65535 definitivamente não é o suficiente. Os computadores têm forma mais RAM do que isso, e não importa se você contar em "Bytes" ou bits
  • 32 bits foi considerado suficiente por um tempo. Em 2003 AMD lançou o primeiro de 64 bits com capacidade de "x86" processador . Intel logo em seguida.
  • Na verdade 16 bits foi considerado suficiente um longo tempo atrás .
  • É prática comum para os lotes de hardware e software para ser compatível com versões anteriores. Neste caso, isso significa que as CPUs de 64 bits com capacidade também pode executar todos os software as CPUs de 32 bits capazes puder.
    • A compatibilidade é esforçado para como uma estratégia de negócios. Mais usuários vão querer fazer o upgrade para o processador melhor se ele também pode fazer tudo o anterior podia.
    • Em CPUs meios compatibilidade com versões anteriores de que as novas acções os suportes de CPU são adicionados à linguagem de máquina anterior. Por exemplo, a linguagem de máquina anterior pode tinha alguma especificação como "todos os opcodes que começam em 1111 são reservados para uso futuro"
    • Em teoria seria não tinha sido necessário esse tipo de CPU compatibilidade com versões anteriores como todo o software poderia ter sido apenas recompilados para a máquina-linguagem compatível novo e não. No entanto esse não é o caso, porque de estratégias corporativas e sistemas políticos ou econômicos. Em um mundo utópico "open source", compatibilidade com versões anteriores de linguagens de máquina provavelmente não seria uma preocupação.
  • A compatibilidade com versões anteriores de x86-64 (linguagem de máquina as CPUs de 64 bits comuns) vem na forma de um 'modo de compatibilidade'. Isto significa que qualquer programa que pretendam fazer uso das novas capacidades CPU precisa para notificar a CPU (através do OS) que ele deve ser executado em "modo de 64 bits". E então ele poderia usar para capacidades de 64 bits grandes nova CPU.
  • Portanto, para um programa para usar recursos de 64 bits da CPU: A CPU, o sistema operacional eo programa, todos têm de "suporte de 64 bits"
  • .
  • 64-bits é suficiente para dar a cada pessoa no mundo vários números únicos. Provavelmente é grande o suficiente para a maioria dos esforços de computação atuais. É pouco provável que as futuras CPUs vai mudar ainda mais para 128 bits. Mas se o fizerem, isso é definitivamente o suficiente para tudo o que eu posso imaginar, e, portanto, uma transição 256-bits não será necessário.

Espero que isso ajude.

É importante notar que certas aplicações (por exemplo. Multimídia codificação / decodificação e renderização) ganho significativo (2x) aumento de desempenho quando escritos para utilizar totalmente de 64 bits.

Veja 32 bits versus 64 bits benchmarks para Ubuntu e Windows Vista

Para a pessoa não CS. 64 bits irá funcionar melhor para cálculos (todos os tipos de) que será bom também vai permitir que você tenha mais memória RAM.

RAM Além disso, se você tiver limitado (em VPS, por exemplo, ou pequeno-RAM servidor dedicado) -. Escolher 32 bits, serviços não vai comer menos RAM

Esta é uma explicação muito simples, uma vez que tudo acima é bastante detalhado.

32-bit se refere aos registos. Os registros são lugares para armazenar dados, e todos os programas funcionam manipulando essas coisas. Assembléia opera diretamente sobre eles (e, portanto, por que as pessoas são muitas vezes animado para o programa em assembly).

32-bit significa o conjunto básico de registros pode conter 32-bits ofinformation. meios 64 bits, sem surpresa, 64 bits de informação.

Por isso pode tornar os programas mais rápido? Porque você pode fazer operações maiores mais rápido. Só vai fazer certos tipos de programas mais rápido, pelo caminho. Jogos, normalmente, pode tirar grande vantagem de otimizar por processador , por causa de suas operações matemáticas-pesado (e, portanto, registrar o uso).

Mas divertidamente, como Tchen mencionado, os seus são muitas outras 'coisas' que lhe permitem realizar operações maiores de qualquer maneira. SSE, SSE2, etc, terá registros de 64 bits e registradores de 128 bits, mesmo em um sistema '32 bit'.

O aumento da capacidade de memória de endereços fala diretamente com o aumento de tamanho do registro base, com base em (imagino) sistema de endereçamento de memória específica do Windows'.

Espero que ajude um pouco. outros cartazes são muito mais precisos do que a mim, estou apenas tentando explicar de maneira muito simples (que ajuda que eu sei muito pouco:)

Eu tenho uma resposta maravilhosa para esta pergunta, mas não cabe tudo dentro neste bloco resposta .... A resposta simples é que para o seu programa para obter um byte de memória, ele precisa de um endereço. Em CPUs 32-bit, o endereço de memória de cada byte é armazenado em um número inteiro de 32-bit (sem sinal), que como um valor máximo de 4 GB. Quando você usa um processador de 64 bits, o endereço de memória é um número inteiro de 64 bits, o que lhe dá cerca de 1,84467441 × 10 ^ 19 endereços de memória possíveis. Isso realmente deve ser suficiente se você é novo em programação. Você realmente deve ser mais focado em aprender a programar, do que sobre o funcionamento interno do seu processador, e por que você não pode acessar mais de 4 GB de memória RAM em seu CPU de 32 bits.

A resposta é simples de explicar intervalo de memória endereçável com 32 processadores bit é:

Vamos supor que você tem apenas 3 dígitos números permitidos para construir número para máxima u pode ir até é 999. Faixa de números é (0 - 999). Você tem apenas 1000 números para uso.

Mas se u são autorizados a ter 6 dígitos números, em seguida, o número máximo que você pode construir é 999999. Agora intervalo é (0-999999). Então, agora vc tem 1 milhão de números com você ao uso.

Da mesma forma mais bits que estão autorizados a ter em um processador, maior conjunto de endereços (números do exemplo anterior), você pode construir e eventualmente usar para armazenar dados etc ..

Qualquer coisa mais simples do que isso seria interessante para ler!

-AD.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top