A resposta atualmente aceita é geralmente correta, mas não especificamente. Não há realmente uma única coisa chamada "CPU de 32 bits" ou "CPU de 64 bits" - essa é uma descrição que se refere a apenas uma pequena parte da arquitetura da CPU. Em particular, ela faz referência ao número de linhas de seleção de endereço entre a CPU e a memória, ou seja, o chamado espaço de endereço disponível para operações de memória.
Nos dias de antigamente, quando a CPU, quando as pessoas costumavam se sentar e tecer (embrulhar) os fios entre um processador e a memória, você teria que usar 32 ou (teoricamente, porque não existia em o tempo) 64 fios entre a CPU e o controlador de memória que seriam usados para especificar qual endereço de memória você queria acessar. Por exemplo, digamos que temos uma arquitetura de memória de 2 bits: o envio de 00 selecionaria o endereço 0, 01 selecionaria o endereço 1, 10 selecionaria o endereço 2 e 11 selecionaria o endereço 3. Esse 2 bit nos dá 2 ^ 2 bytes de RAM (4 bytes).
Se você pegar uma CPU de 32 bits e adicionar mais 32 fios entre a CPU e o controlador de memória para poder suportar magicamente mais memória, agora você tem uma "CPU de 64 bits" que pode ser executada Código de 32 bits ou código de 64 bits. O que isso significa e como isso acontece? Bem, vamos pegar nossa CPU de 2 bits da parte anterior desta resposta e adicionar outro fio, transformando-o em uma CPU de 3 bits, levando de 4 bytes para 2 ^ 3 ou 8 bytes de RAM.
O código "2-byte" existente será executado, configurando os valores dos últimos 2 fios, como indicado acima (00-11). Conectaremos a conexão extra a zero por padrão, então, na verdade, quando o código de 2 bytes for executado, quando ele selecionar 00, ele realmente selecionará 000 e, quando selecionar 11, estará realmente selecionando 011. Fácil.
Agora, um programador deseja escrever código "nativo" de 3 bytes e grava seu software para aproveitar o espaço de endereço extra. Ela diz à CPU que ela sabe o que está fazendo e que assumirá o controle manual dos novos fios extras. Seu software conhece o (s) fio (s) extra (s) e envia corretamente 000-111, dando-lhe acesso total à faixa de memória suportada pela nova arquitetura da CPU.
Mas não é assim que tem que acontecer. De fato, isso normalmente não como as coisas acontecem. Quando as CPUs de 64 bits foram introduzidas pela primeira vez (e houve muitas), todas foram com arquiteturas / projetos totalmente novos. Eles não colocaram apenas 32 fios adicionais e dizem "aqui está, este é um processador de 64 bits que você pode usar no modo de 32 bits ou 64 bits", mas eles disseram "Este é o nosso novo processador e só é preciso programação nesta nova linguagem de máquina, comporta-se desta maneira inteiramente nova, resolve um bazillion de diferentes problemas muito mais elegantemente do que as antigas CPUs x86 / i386 de 32 bits, e é uma arquitetura nativa de 64 bits. "
Essa foi a história do Intel Itanium, agora conhecido como o "Itanic" por causa do quão massivamente afundou. Era para anunciar na nova era de 64 bits, e era algo para ser visto. Instruções de tamanho variável, caches enormes, espaço de endereço de 64 bits, toneladas de registros, super emocionante, super legal e super difícil de convencer a todos a recompilar ou reescrever 20 anos de código herdado. Isso ocorreu quando a AMD e a Intel estavam na verdade competindo, e a AMD teve a brilhante idéia de dizer "vamos esquecer tudo isso", resolver todos os problemas do mundo e adicionar mais 32 fios ao i386 e fazer um 64-bit compatível com 32-bit. CPU bit "e a arquitetura da CPU x86_64 nasceu.
Na verdade, se você olhar os nomes e fontes do kernel para os principais sistemas operacionais (Linux, Windows, BSDs, etc), você os encontrará repletos de referências a CPUs AMD64 e arquitetura AMD64. A AMD criou uma estratégia vencedora para fazer com que todos migrassem para o mundo de 64 bits, preservando a compatibilidade com aplicativos de 32 bits, de forma que um sistema operacional de 32 bits pudesse ser executado em hardware de 64 bits ou até mesmo em aplicativos de 32 bits. pode ser executado em um sistema operacional de 64 bits em hardware de 64 bits. A Intel seguiu a suíte mais cedo ou mais tarde com sua arquitetura "Intel EM64T" (que era basicamente idêntica à AMD64) e x86_64 venceu enquanto a Itanic e outras como MIPS64 e ALPHA64 não eram mais vistas no mercado de desktops e servidores.
As CPUs dr amd64, também conhecidas como x86_64, são projetadas para serem compatíveis tanto com o kernel quanto com o código de 32 e 64 bits, mas a maioria das CPUs de 64 bits é decididamente incompatível com as versões anteriores da mesma maneira. Uma CPU de 32 bits pode acessar no máximo 4GiB de memória, enquanto uma CPU de 64 bits pode acessar impressionantes 16 EiBs (16 × 1024 ^ 6 bytes ou 4
bilhões vezes mais memória que 4GiB) .