Loading AI tools
arquitetura de processadores Da Wikipédia, a enciclopédia livre
AMD64 (também conhecido como x64, x86_64, x86-64 e Intel 64), em informática, é o nome genérico dado à família (arquitetura) de processadores baseados na tecnologia de 64 bits desenhado pela empresa Advanced Micro Devices (AMD), utilizada pelos processadores da AMD, da Intel, da VIA, e outros. É um superconjunto da arquitetura x86. Portanto, processadores x86-64 podem executar programas x86 (x86-80) de 32-bit ou 16-bit sem perder a velocidade ou compatibilidade, e apoiar novos programas escritos em um alargado conjunto de instruções, que inclui um espaço alocado de endereçamento de 64-bit e outras capacidades. O x86-64 é compatível com códigos de 32 bits sem afetar o desempenho destes.
![]() | Foram assinalados vários problemas nesta página ou se(c)ção:
|
Este artigo resulta, no todo ou em parte, de uma tradução do artigo «x86-64» na Wikipédia em inglês, na versão original. |
O termo genérico x86-64 é as vezes encurtado para x64 como outro termo neutro para fornecedor para os processadores x86-64 de qualquer empresa.
A primeira família de processadores a suportar a arquitetura foi a linha AMD K8. Esta foi a primeira vez que qualquer empresa, fora a Intel, fez significativas adições à arquitetura x86. A Intel foi obrigada a seguir o exemplo, introduzindo modificações já no Pentium 4. A família de processadores NetBurst, inicialmente designada para IA-32, foi modificada para ser compatível com o IA-32e ou EM64T, agora chamado Intel 64, que é quase idêntico ao AMD64. A VIA Technologies, outro produtor de processadores x86, também incluiu instruções x86-64 no Isaiah, arquitetura utilizada no VIA Nano.
Posteriormente, a AMD introduziu o nome AMD64 para fins de marketing; A Intel introduziu sua nomenclatura Intel 64 logo em seguida.
A especificação x86-64 é distinta da arquitetura Intel Itanium (anteriormente IA-64), que não é compatível no nível nativo do conjunto de instrução com as arquiteturas x86 ou o x86-64.
O AMD64 (também referido pela AMD em sua literatura e documentação como “Tecnologia AMD de 64 bits” e “Arquitetura AMD x86-64”) foi criado como uma alternativa à radicalmente diferente arquitetura IA-64, projetada pela Intel e pela Hewlett Packard, que era incompatível com IA-32, a versão de 32 bits da arquitetura x86. A AMD anunciou originalmente o AMD64 em 1999[1] com uma especificação completa disponível em agosto de 2000.[2] Como a AMD nunca foi convidada para contribuir com a arquitetura IA-64 e qualquer tipo de licenciamento parecia improvável, a arquitetura AMD64 foi posicionada pela AMD desde o início como uma forma evolucionária de adicionar recursos de computação de 64 bits à arquitetura x86 existente enquanto oferece suporte ao código x86 legado de 32 bits, em oposição à abordagem da Intel de criar uma arquitetura de 64 bits totalmente nova e totalmente incompatível com x86 com IA-64.
O primeiro processador baseado no AMD64, o Opteron (para servidores), foi liberado em abril de 2003 e o Athlon 64 (para computadores de mesa - desktops) em setembro de 2003.
Os processadores da AMD que implementam a arquitetura AMD64 incluem Opteron, Athlon 64, Athlon 64 X2, Athlon 64 FX, Athlon II (seguido por "X2", "X3" ou "X4" para indicar o número de núcleos e modelos XLT), Turion 64, Turion 64 X2, Sempron ("Palermo" revisão E6 e todos os modelos "Manila"), Phenom, Phenom II (seguido por "X2", " X3", "X4" ou "X6" para indicar o número de núcleos), FX, Fusion/APU e Ryzen/Epyc.
A principal característica definidora do AMD64 é seu suporte para registradores de uso geral de 64 bits, operações lógicas e aritméticas inteiras de 64 bits e endereços virtuais de 64 bits. Os projetistas aproveitaram a oportunidade para fazer outras melhorias também. As mudanças mais significativas incluem:
Embora os endereços virtuais tenham 64 bits de largura no modo de 64 bits, as implementações actuais (e quaisquer chips conhecidos por estarem nos estágios de planeamento) não permitem que todo o espaço de endereço virtual de 16 EB (18.446.744.073.709.551.616 bytes) seja utilizado. A maioria dos sistemas operativos e aplicações não necessitará de um espaço de endereços tão grande para o futuro previsível (por exemplo, as implementações do Windows para AMD64 são apenas a povoar 16 TB (17.592.186.044.416 bytes), ou 44 bits), pelo que suportar endereços virtuais tão amplos iria simplesmente aumentar a complexidade e o custo da tradução de endereços sem qualquer benefício real. A AMD, por isso, decidiu que, nas primeiras implementações da arquitectura, apenas os 48 bits menos significativos de um endereço virtual seriam efectivamente utilizados na tradução de endereços (índice de tabela de páginas).
Além disso, a especificação da AMD exige que os 16 bits mais significativos de qualquer endereço virtual, bits 48 a 63, sejam cópias do bit 47 (de uma forma semelhante a uma extensão de assinatura). Se este requisito não for cumprido, o processador irá levantar uma exceção. Endereços conformes a esta regra são referidos como "forma canónica". Os endereços da forma canónica são executados de 0 a 00007FFF'FFFFFFFF, e a partir de FFFF8000'00000000 até FFFFFFFF'FFFFFFFF, para um total de 256 TB (281.474.976.710.656 bytes) de espaço de endereço virtual utilizável. Isto ainda é 65.536 vezes maior do que o espaço de endereçamento virtual de 4 GB de máquinas de 32 bits.
Esta característica facilita a escalabilidade posterior para endereçamento verdadeiro de 64 bits. Muitos sistemas operacionais (incluindo, mas não se limitando à família Windows NT) ocupam metade do espaço de endereçamento para si próprios (normalmente a metade superior, denominada espaço de kernel) e deixam a outra para as aplicações (espaço do utilizador). A concepção do "endereço canónico" assegura que cada implementação compatível com AMD64 tem, com efeito, duas metades de memória: a metade inferior começa em 00000000'00000000 e "cresce para cima" à medida que mais bits de endereço virtuais se tornam disponíveis, enquanto que a metade superior é "acoplada" ao topo do espaço de endereçamento e cresce para baixo. Além disso, fixar o conteúdo dos bits de endereço não utilizados evita seu uso pelo sistema operacional como sinalizadores, marcadores de privilégio, etc., o que pode se tornar problemático quando a arquitetura é de fato estendida para implementar mais bits de endereço virtual.
As primeiras versões do Windows para x64 não utilizavam nem mesmo os 256 TB completos; elas eram restritas a apenas 8 TB de espaço de usuário e 8 TB de espaço de kernel.[3] O Windows não suportava todo o espaço de endereços de 48 bits até o Windows 8.1, que foi lançado em outubro de 2013.[3]
O modo de endereçamento de 64 bits ("modo longo") é um superconjunto de Extensões de Endereços Físicos (PAE); devido a isto, os tamanhos de página podem ser 4 KiB (4.096 bytes) ou 2 MiB (2.097.152 bytes). Entretanto, no lugar do sistema de tabela de página de três níveis usado pelos sistemas em modo PAE, os sistemas que funcionam em modo longo usam tabela de página de quatro níveis: A Tabela de Páginas Diretas do PAE é estendida de 4 entradas para 512, e uma Tabela de Páginas Nível 4 adicional é adicionada, contendo 512 entradas em implementações de 48 bits. Em implementações que suportam endereços virtuais maiores, esta última tabela ou cresceria para acomodar entradas suficientes para descrever toda a faixa de endereços, até um máximo teórico de 33.554.432 entradas para uma implementação de 64 bits, ou seria classificada em excesso por um novo nível de mapeamento, tal como um PML5. De qualquer forma, uma hierarquia de mapeamento completa de 4 páginas KiB para todo o espaço de 48 bits levaria um pouco mais de 512 GiB de RAM (cerca de 0,196% do espaço virtual de 256 TiB).
O sistema operacional também pode limitar o espaço de endereço virtual. Os detalhes, quando aplicáveis, são fornecidos na seção "Compatibilidade do sistema operacional e características".
As implementações AMD64 atuais suportam um espaço de endereço físico de até 248 bytes de RAM ou 256 TB. Uma quantidade maior de RAM instalada permite que o sistema operacional mantenha mais dados e códigos pagináveis da carga de trabalho na RAM, o que pode melhorar o desempenho,[4] embora várias cargas de trabalho tenham diferentes pontos de retornos decrescentes.[5][6]
O limite superior de RAM que pode ser usado em um determinado sistema x86-64 depende de vários fatores e pode ser muito menor do que o implementado pelo processador. Por exemplo, em junho de 2010, não havia placas-mãe conhecidas para processadores x86-64 compatíveis com 256 TB de RAM.[7][8][9][10] O sistema operacional pode colocar limites adicionais na quantidade de RAM utilizável ou suportada. Os detalhes sobre esse ponto são fornecidos na seção "Compatibilidade do sistema operacional e características" deste artigo.
A arquitetura tem dois principais modos de funcionamento: modo longo e modo legado.
Operação | Sistema operacional requerido | Tipo de código sendo executado | Tananho (em bits) | No. de registradores de propósito geral | ||
---|---|---|---|---|---|---|
modo | sub-modo | endereços | operandos (padrão em itálico) | |||
Modo longo | modo de 64 bits | SO de 64 bits, firmware UEFI de 64 bits ou os dois anteriores interagindo por meio de uma interface UEFI de firmware de 64 bits | 64 bits | 64 | 8, 16, 32, 64 | 16 |
Modo de compatibilidade | Bootloader ou SO de 64 bits | 32 bits | 32 | 8, 16, 32 | 8 | |
modo protegido de 16 bits | 16 | 8, 16, 32 | 8 | |||
Modo legado | Modo protegido | Bootloader, SO de 32 bits, firmware UEFI de 32 bits, ou os dois últimos interagindo por meio da interface de firmware UEFI | 32 bits | 32 | 8, 16, 32 | 8 |
SO em modo protegido de 16 bits | modo protegido de 16 bits | 16 | 8, 16, 32[m 1] | 8 | ||
Modo 8086 virtual | modo protegido de 16 bits ou SO de 32 bits | subconjunto do modo real | 16 | 8, 16, 32[m 1] | 8 | |
Modo irreal | Bootloader ou SO em modo real | modo real | 16, 20, 32 | 8, 16, 32[m 1] | 8 | |
Modo real | Bootloader, sistema operacional em modo real ou qualquer interface do sistema operacional com uma interface de firmware BIOS[11] | modo real | 16, 20, 21 | 8, 16, 32[m 1] | 8 |
O modo de operação principal pretendido da arquitetura; é uma combinação do modo nativo de 64 bits do processador e um modo de compatibilidade combinado de 32 bits e 16 bits. É usado por sistemas operacionais de 64 bits. Em um sistema operacional de 64 bits, os programas de 64 bits são executados no modo de 64 bits e os aplicativos de modo protegido de 32 e 16 bits (que não precisam usar o modo real ou o modo 8086 virtual para executar em qualquer time) executado em modo de compatibilidade. Programas em modo real e programas que usam o modo 8086 virtual a qualquer momento não podem ser executados em modo longo, a menos que sejam emulados em software.
Como o conjunto de instruções básico é o mesmo, quase não há perda de desempenho para a execução do código x86 no modo protegido. Isso é diferente do IA-64 da Intel, onde as diferenças no conjunto de instruções subjacentes significam que a execução do código de 32 bits deve ser feita na emulação de x86 (tornando o processo mais lento) ou com um núcleo x86 dedicado. No entanto, na plataforma x86-64, muitos aplicativos x86 podem se beneficiar de uma recompilação de 64 bits, devido aos registros adicionais no código de 64 bits e ao suporte ao FPU baseado em SSE2 garantido, que um compilador pode usar para otimização. No entanto, aplicativos que lidam regularmente com números inteiros maiores que 32 bits, como algoritmos criptográficos, precisarão reescrever o código que lida com números inteiros enormes para aproveitar os registradores de 64 bits.
O modo usado por sistemas operacionais de 16 bits ('modo protegido' ou 'modo real') e 32 bits. Nesse modo, o processador age como um processador x86 de 32 bits e apenas códigos de 16 e 32 bits podem ser executados. O modo legado permite um endereçamento virtual máximo de 32 bits, o que limita o espaço de endereço virtual a 4 GB. Programas de 64 bits não podem ser executados no modo legado.
O modo protegido é transformado em um submodo do modo legado. É o submodo em que os sistemas operacionais de 32 bits e os sistemas operacionais de modo protegido de 16 bits operam quando executados em uma CPU x86-64.
O modo real é o modo inicial de operação quando o processador é inicializado e é um submodo do modo legado. É compatível com os processadores originais Intel 8086 e Intel 8088. O modo real é usado principalmente pelos gerenciadores de inicialização do sistema operacional, que são exigidos pela arquitetura para configurar os detalhes da memória virtual antes da transição para modos superiores. Este modo também é usado por qualquer sistema operacional que precise se comunicar com o firmware do sistema com uma interface de estilo BIOS tradicional.
O Intel 64 é a implementação da Intel de x86-64, usada e implementada em vários processadores fabricados pela Intel.
Historicamente, a AMD desenvolveu e produziu processadores padronizados após os designs originais da Intel, mas com x86-64, os papéis foram invertidos: a Intel se viu na posição de adotar a arquitetura que a AMD havia criado como uma extensão da própria linha de processadores x86 da Intel.
O projeto da Intel foi originalmente codinomeado Yamhill (em homenagem ao rio Yamhill no Vale do Willamette, no Óregon). Após vários anos negando sua existência, a Intel anunciou no IDF de fevereiro de 2004 que o projeto estava realmente em andamento. O presidente da Intel na época, Craig Barrett, admitiu que esse era um dos segredos mais mal guardados.[12][13]
O nome da Intel para este conjunto de instruções mudou várias vezes. O nome usado no IDF era CT (presumivelmente para Clackamas Technology, outro codinome de um rio de Oregon); dentro de semanas eles começaram a se referir a ele como IA-32e (para extensões do IA-32) e em março de 2004 revelou o nome "oficial" EM64T (Extended Memory 64 Technology). No final de 2006, a Intel começou a usar o nome Intel 64 para sua implementação, em paralelo ao uso do nome AMD64 pela AMD.[14]
O primeiro processador da Intel a ativar a tecnologia Intel 64 foi o processador multisoquete Xeon de codinome Nocona posteriormente em 2004. Em contraste, os chips Prescott iniciais (fevereiro de 2004) não permitiam esse recurso. A Intel subsequentemente começou a vender Pentium 4s habilitados para Intel 64 usando a revisão E0 do núcleo Prescott, sendo vendido no mercado OEM como o Pentium 4, modelo F. A revisão E0 também adiciona eXecute Disable (XD) (o nome da Intel para o Bit NX) para Intel 64, e foi incluído no Xeon atual com o codinome Irwindale. O lançamento oficial da Intel do Intel 64 (sob o nome EM64T na época) em processadores de desktop convencionais foi o N0 Stepping Prescott-2M. Todas as CPUs das séries 9xx, 8xx, 6xx, 5x9, 5x6, 5x1, 3x6 e 3x1 possuem Intel 64 habilitado, assim como as CPUs Core 2, assim como futuras CPUs Intel para estações de trabalho ou servidores. O Intel 64 também está presente nos últimos membros da linha Celeron D.
O primeiro processador móvel da Intel implementando o Intel 64 é a versão Merom do processador Core 2, lançada em 27 de julho de 2006. Nenhuma das CPUs de notebook anteriores da Intel (Core Duo, Pentium M, Celeron M, Mobile Pentium 4) implementa Intel 64.
Os processadores da Intel que implementam a arquitetura Intel 64 incluem o Pentium 4 série F/série 5x1, 506 e 516, Celeron D modelos 3x1, 3x6, 355, 347, 352, 360 e 365 e todos os Celerons posteriores, todos os modelos de Xeon desde "Nocona", todos os modelos de processadores Pentium Dual-Core desde "Merom-2M", o Atom 230, 330, D410, D425, D510, D525, N450, N455, N470, N475, N550, N570, N2600 e N2800, todas as versões dos processadores Pentium D, Pentium Extreme Edition, Core 2, Core i9, Core i7, Core i5 e Core i3 e os processadores Xeon Phi da série 7200.
A VIA Technologies apresentou sua primeira implementação da arquitetura x86-64 em 2008, após cinco anos de desenvolvimento por sua divisão de CPU, Centaur Technology.[15] Com o codinome "Isaiah", a arquitetura de 64 bits foi revelada em 24 de janeiro de 2008[16][17][18][19] e lançada em 29 de maio sob a marca VIA Nano.[20]
O processador oferece suporte a várias extensões x86 específicas da VIA projetadas para aumentar a eficiência em aparelhos de baixa potência. Espera-se que o VIA Isaiah seja duas vezes mais rápido em desempenho inteiro e quatro vezes mais rápido em desempenho de ponto flutuante do que o VIA Esther da geração anterior em uma velocidade de clock equivalente. Espera-se também que o consumo de energia esteja no mesmo nível das CPUs VIA da geração anterior, com potência de design térmico variando de 5 W a 25 W.[21] Sendo um design completamente novo, a arquitetura Isaiah foi construída com suporte para recursos como o conjunto de instruções x86-64 e virtualização x86 que não estavam disponíveis em seus predecessores, a linha VIA C7, mantendo suas extensões de criptografia.
Em 2020, por meio de uma colaboração entre AMD, Intel, Red Hat e SUSE, foram definidos três níveis de microarquitetura acima da linha de base x86-64: x86-64-v2, x86-64-v3 e x86-64-v4.[22][23] Esses níveis definem recursos específicos que podem ser direcionados por programadores para fornecer otimizações em tempo de compilação. Os recursos expostos por cada nível são os seguintes:[24]
Nível | Recursos da CPU | Exemplo de instrução |
---|---|---|
x86-64 (também x86-64-v1) (linha de base: todas as CPUs x86-64) |
CMOV | cmov |
CX8 | cmpxchg8b | |
FPU | fld | |
FXSR | fxsave | |
MMX | emms | |
OSFXSR | fxsave | |
SCE | syscall | |
SSE | cvtss2si | |
SSE2 | cvtpi2pd | |
x86-64-v2 (por volta de 2009: Nehalem e Jaguar) Também: |
CMPXCHG16B | cmpxchg16b |
LAHF-SAHF | lahf | |
POPCNT | popcnt | |
SSE3 | addsubpd | |
SSE4_1 | blendpd | |
SSE4_2 | pcmpestri | |
SSSE3 | phaddd | |
x86-64-v3 (por volta de 2015: Haswell e Excavator) Também:
|
AVX | vzeroall |
AVX2 | vpermd | |
BMI1 | andn | |
BMI2 | bzhi | |
F16C | vcvtph2ps | |
FMA | vfmadd132pd | |
LZCNT | lzcnt | |
MOVBE | movbe | |
OSXSAVE | xgetbv | |
x86-64-v4 (Subconjunto de uso geral do AVX-512) |
AVX512F | kmovw |
AVX512BW | vdbpsadbw | |
AVX512CD | vplzcntd | |
AVX512DQ | vpmullq | |
AVX512VL | n/a |
Todos os níveis incluem recursos encontrados nos níveis anteriores. As extensões do conjunto de instruções não relacionadas com a computação de uso geral, incluindo AES-NI e RDRAND, estão excluídas dos requisitos de nível.
Existem algumas diferenças entre os dois conjuntos de instruções. Os compiladores geralmente produzem binários que são compatíveis com ambos (ou seja, compatíveis com o subconjunto de X86-64 que é comum tanto para AMD64 quanto para Intel 64), tornando essas diferenças de interesse principalmente para desenvolvedores de compiladores e sistemas operacionais.
Nos supercomputadores rastreados pelo TOP500, o surgimento de extensões de 64 bits para a arquitetura x86 permitiu que os processadores x86 de 64 bits da AMD e da Intel substituíssem a maioria das arquiteturas de processador RISC usadas anteriormente em tais sistemas (incluindo PA-RISC, SPARC, Alpha e outros), bem como x86 de 32 bits, embora a própria Intel inicialmente tenha tentado, sem sucesso, substituir x86 por uma nova arquitetura incompatível de 64 bits no processador Itanium.
Desde 2020[update], um supercomputador baseado em Fujitsu A64FX chamado Fugaku é o número um. O primeiro supercomputador baseado em ARM apareceu na lista em 2018 e, nos últimos anos, os coprocessadores de arquitetura sem CPU (GPGPU) também desempenharam um papel importante no desempenho. Os coprocessadores Xeon Phi "Knights Corner" da Intel, que implementam um subconjunto de x86-64 com algumas extensões vetoriais, também são usados, juntamente com os processadores x86-64, no supercomputador Tianhe-2.
Os seguintes sistemas operacionais e versões suportam a arquitetura x86-64 executando em modo longo:
O trabalho de infra-estrutura preliminar foi iniciado em fevereiro de 2004 para um porte em x86-64.[30] Este desenvolvimento mais tarde estagnou. O desenvolvimento começou novamente em julho de 2007[31] e continuou durante o Google Summer of Code 2008 e SoC 2009.[32][33] O primeiro lançamento oficial a conter o suporte ao x86-64 foi a versão 2.4.[34]
FreeBSD adicionou pela primeira vez o suporte ao x86-64 sob o nome "amd64" como uma arquitetura experimental no 5.1-RELEASE em junho de 2003. Foi incluído como uma arquitetura de distribuição padrão a partir do 5.2-RELEASE em janeiro de 2004. Desde então, o FreeBSD designou-a como uma plataforma Tier 1. A versão 6.0-RELEASE limpou algumas peculiaridades com a execução de executáveis x86 de 32 bits no amd64, e a maioria dos drivers funciona exatamente como em arquiteturas x86 de 32 bits. Atualmente, está sendo feito um trabalho para integrar mais completamente a interface binária de aplicação (ABI) x86 de 32 bits, da mesma maneira que a compatibilidade com ABI de 32 bits do Linux funciona atualmente.
O suporte à arquitetura x86-64 foi confirmado pela primeira vez na árvore do fonte do NetBSD em 19 de junho de 2001. A partir do NetBSD 2.0, lançado em 9 de dezembro de 2004, NetBSD/amd64 é uma porte totalmente integrado e suportado.
OpenBSD oferece suporte ao AMD64 desde o OpenBSD 3.5, lançado em 1º de maio de 2004. A implementação in-tree completa do suporte ao AMD64 foi alcançada antes do lançamento inicial do hardware devido ao empréstimo de várias máquinas pela AMD para o hackathon do projeto naquele ano. Os desenvolvedores do OpenBSD adotaram a plataforma por causa de seu suporte para o bit NX, o que permitiu uma fácil implementação do recurso W^X.
O código para a porta AMD64 do OpenBSD também é executado em processadores Intel 64 que contém o uso clonado das extensões AMD64, mas como a Intel deixou de fora o bit NX da tabela de páginas nos primeiros processadores Intel 64, não há capacidade W^X nesses processadores Intel; processadores Intel 64 posteriores adicionaram o bit NX sob o nome de "bit XD". O multiprocessamento simétrico (SMP) funciona no porte para AMD64 do OpenBSD, começando com a versão 3.6 em 1º de novembro de 2004.
É possível entrar no modo longo no DOS sem um extensor do DOS,[35] mas o usuário deve retornar ao modo real para chamar as interrupções do BIOS ou do DOS.
Também pode ser possível entrar no modo longo com um extensor DOS semelhante ao DOS/4GW, mas mais complexo, pois o x86-64 não possui o Modo 8086 virtual. O próprio DOS não está ciente disso, e nenhum benefício deve ser esperado, a menos que execute o DOS em uma emulação com um back-end de driver de virtualização adequado, por exemplo: a interface de armazenamento em massa.
O Linux foi o primeiro kernel de sistema operacional a executar a arquitetura x86-64 em modo longo, começando com a versão 2.4 em 2001 (antes da disponibilidade do hardware físico).[36][37] O Linux também fornece retrocompatibilidade para execução de executáveis de 32 bits. Isso permite que os programas sejam recompilados no modo longo enquanto mantêm o uso de programas de 32 bits. Várias distribuições Linux atualmente vêm com kernels e userlands nativos x86-64. Alguns, como SUSE, Mandriva e Debian GNU/Linux, permitem que os usuários instalem um conjunto de componentes e bibliotecas de 32 bits ao instalar a partir de um DVD de 64 bits, permitindo assim que a maioria dos aplicativos de 32 bits existentes sejam executados junto com o SO de 64 bits. Outras distribuições, como Fedora, Ubuntu e Arch Linux, estão disponíveis em uma versão compilada para uma arquitetura de 32 bits e outra compilada para uma arquitetura de 64 bits.
Há uma tentativa de executar o kernel no modo de compatibilidade e poder executar aplicativos de 64 bits em um kernel de 32 bits. O nome deste projeto é LINUX PAE64.[38]
O Linux de 64 bits permite até 128 TiB (140.737.488.355.328 bytes) de espaço de endereço para processos individuais e pode endereçar aproximadamente 64 TiB (70.368.744.177.664 bytes) de memória física, sujeito às limitações do processador e do sistema.
Mac OS X v10.4.7 e versões superiores do Mac OS X v10.4 executam ferramentas de linha de comando de 64 bits usando as bibliotecas POSIX e de matemática em máquinas baseadas em Intel de 64 bits, assim como todas as versões do Mac OS X v10.4 e superior executá-los em máquinas PowerPC de 64 bits. Nenhuma outra biblioteca ou framework funciona com aplicativos de 64 bits no Mac OS X v10.4.[39] O kernel e todas as extensões do kernel são apenas de 32 bits.
O Mac OS X v10.5 oferece suporte a aplicativos GUI de 64 bits usando Cocoa, Quartz, OpenGL e X11 em máquinas baseadas em Intel de 64 bits, bem como em máquinas PowerPC de 64 bits.[40] Todas as bibliotecas e frameworks não GUI também oferecem suporte a aplicativos de 64 bits nessas plataformas. O kernel e todas as extensões do kernel são apenas de 32 bits.
Mac OS X v10.6 é a primeira versão do Mac OS X que suporta um kernel de 64 bits. No entanto, com seu primeiro lançamento (v10.6.0), nem todos os computadores de 64 bits são suportados atualmente. O kernel de 64 bits, como o kernel de 32 bits, suporta aplicativos de 32 bits; ambos os kernels também suportam aplicativos de 64 bits.[41] O kernel de 64 bits não oferece suporte a extensões de kernel de 32 bits e o kernel de 32 bits não oferece suporte a extensões de kernel de 64 bits.
OS X 10.8 inclui apenas o kernel de 64 bits, mas continua a oferecer suporte a aplicativos de 32 bits; no entanto, ele não oferece suporte a extensões de kernel de 32 bits.
O macOS 10.15 inclui apenas o kernel de 64 bits e não oferece mais suporte a aplicativos de 32 bits. Essa remoção de suporte apresentou um problema para o WineHQ (e a versão comercial CrossOver), pois ele ainda precisa ser capaz de executar aplicativos do Windows de 32 bits. A solução, denominada wine32on64, foi adicionar thunks que colocam e retiram a CPU do modo de compatibilidade de 32 bits no aplicativo nominal de 64 bits.
O Mac OS X usa o formato binário universal para empacotar as versões de 32 e 64 bits do aplicativo e do código da biblioteca em um único arquivo; a versão mais apropriada é selecionada automaticamente no momento do carregamento. No Mac OS X 10.6, o formato binário universal também é usado para o kernel e para as extensões de kernel que suportam kernels de 32 bits e 64 bits.
Solaris 10 e versões posteriores suportam a arquitetura x86-64. Assim como na arquitetura SPARC, há apenas uma imagem do sistema operacional para todos os sistemas x86 de 32 bits e 64 bits; isso é rotulado como a imagem de DVD-ROM "x64/x86".
O comportamento padrão é inicializar um kernel de 64 bits, permitindo a execução de executáveis de 64 bits e existentes ou novos de 32 bits. Um kernel de 32 bits também pode ser selecionado manualmente; nesse caso, apenas executáveis de 32 bits serão executados. O comando isainfo
pode ser usado para determinar se um sistema está executando um kernel de 64 bits.
As edições x86-64 do cliente e servidor Microsoft Windows—Windows XP Professional x64 Edition e Windows Server 2003 x64 Edition—foram lançadas em março de 2005. Internamente, elas são a mesma compilação (5.2.3790.1830 SP1), como eles compartilham a mesma base de origem e binários do sistema operacional, até mesmo as atualizações do sistema são lançadas em pacotes unificados, da mesma forma que as edições do Windows 2000 Professional e Server para x86. Windows Vista, que também possui muitas edições diferentes, foi lançado em janeiro de 2007. O Windows 7 foi lançado em julho de 2009. O Windows Server 2008 R2 foi vendido apenas nas edições x64 e Itanium; versões posteriores do Windows Server oferecem apenas uma edição x64.
As versões do Windows para x64 anteriores ao Windows 8.1 e Windows Server 2012 R2 oferecem o seguinte:
No Windows 8.1 e no Windows Server 2012 R2, os espaços de endereço virtual do modo de usuário e do modo kernel foram estendidos para 128 TB. Essas versões do Windows não serão instaladas em processadores que não possuam a instrução CMPXCHG16B.
As seguintes características adicionais se aplicam a todas as versões x64 do Windows:
Tanto o PlayStation 4 quanto o Xbox One, e todas as variantes desses consoles, incorporam processadores AMD x86-64, baseados na microarquitetura Jaguar. Firmware e jogos são escritos em código x86-64; nenhum código legado x86 está envolvido.
Suas próximas gerações, o PlayStation 5 e o Xbox Series X e Series S, respectivamente, também incorporam processadores AMD x86-64, baseados na microarquitetura Zen 2.
Apesar de ser considerado um PC, o Steam Deck usa uma unidade de processamento acelerado (APU) AMD x86-64 personalizada, baseada na microarquitetura Zen 2.
Como AMD64 e Intel 64 são substancialmente semelhantes, muitos produtos de software e de hardware usam um termo neutro para fornecedor para indicar sua compatibilidade com ambas as implementações. A designação original da AMD para esta arquitetura de processador, "x86-64", ainda é usada às vezes para esta finalidade, assim como a variante "x86_64".[47] Outras empresas, como Microsoft e Sun Microsystems/Oracle Corporation, usam a contração "x64" em material de marketing.
O termo IA-64 refere-se ao processador Itanium e não deve ser confundido com o X86-64, pois é um conjunto de instruções completamente diferente.
Muitos sistemas operacionais e produtos, especialmente aqueles que introduziram o suporte ao x86-64 antes da entrada da Intel no mercado, usam o termo "AMD64" ou "amd64" para se referir tanto ao AMD64 quanto ao Intel 64.
arch
do Terminal e na documentação do desenvolvedor.[48]A AMD licenciou seu projeto x86-64 à Intel, onde é introduzido no mercado sob o nome Intel 64 (anteriormente EM64T). O projeto da AMD substituiu tentativas anteriores feitas pela Intel de projetar suas próprias extensões do x86-64, que tinham sido referidas como IA-32e. Como a Intel licencia à AMD o direito de usar a arquitetura x86 original (em cima do que o x86-64 é baseado), estas companhias rivais agora dependem uma da outra para o desenvolvimento do processador de 64 bits. Isto levou a um exemplo de destruição mútua assegurada caso uma das empresas se recuse a renovar a licença.[49] Caso tal cenário ocorra, a AMD não estaria mais autorizada a produzir nenhum processador x86, e a Intel não estaria mais autorizada a produzir processadores x86-64, forçando-a a voltar para a arquitetura x86 de 32 bits. No entanto, o acordo[50] prevê que, se uma das partes violar o acordo, ela perde todos os direitos sobre a tecnologia da outra parte, enquanto a outra parte recebe direitos perpétuos sobre toda a tecnologia licenciada. Os únicos processadores Intel x86 atuais de 32 bits são versões do processador Intel Atom de baixo consumo.
Em 2009, a AMD e a Intel resolveram várias ações judiciais e divergências de licenciamento cruzado, estendendo seus acordos de licenciamento cruzado para o futuro previsível e resolvendo várias reclamações antitruste.[51]
The read/write speed of a hard drive is much slower than RAM, and the technology of a hard drive is not geared toward accessing small pieces of data at a time. If your system has to rely too heavily on virtual memory, you will notice a significant performance drop. The key is to have enough RAM to handle everything you tend to work on simultaneously.
There's a point of diminishing returns where adding more RAM won't give you better system performance.
There is, however, a point of diminishing returns at which adding memory to the server may not be justifiable based on price and performance.
Status: The kernel, compiler, tool chain work. The kernel boots and work on simulator and is used for porting of userland and running programs
This was the original paper describing the Linux x86-64 kernel port back when x86-64 was only available on simulators.
On x86-64 versions of Windows, the FS register has been replaced by the GS register.
The x87, MMX, and 3DNow! instruction sets are deprecated in 64-bit modes.
The kernel and developer tools have standardized on "x86_64" for the name of the Mach-O architecture