AMD64, x64 ou x86-64, em informática, é o nome genérico dado à família (arquitetura) de processadores baseados na tecnologia de 64 bit, utilizada pelos processadores da AMD e da Intel. É 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.
A arquitetura é chamada x64 por uma questão de similaridade com a arquitetura x86, e essa por sua vez é denominada assim pois os primeiros processadores desta família eram identificados somente por números terminados com a sequência "86": o 8086, o 80186, o 80286, o 80386 e o 80486. Como não se pode ter uma marca registrada sobre números, a Intel e a maior parte de seus competidores começaram a usar nomes que pudessem ser registrados como marca, como Pentium, para as gerações de processadores posteriores, mas a antiga nomenclatura tinha forjado um termo para toda a família.
O x86-64 foi desenhado pela empresa Advanced Micro Devices (AMD), que o renomeou AMD64. A primeira família de processadores para 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 e EM64T e agora chamado Intel 64, é quase idêntica ao AMD64. x86-64 é compatível com códigos de 32 bits sem afetar o seu desempenho.
Por exemplo, os manuais dos colaboradores disponíveis da Intel na arquitetura IA-32 referem-se a IA-32 e IA-64. AMD licenciou seu projeto x86-64 à Intel, onde é introduzido no mercado sob o nome de Intel 64 (anteriormente EM64T). O projeto da AMD substituiu tentativas mais adiantadas por Intel de projetar suas próprias extensões x86-64, que tinham sido referidas como IA-64. Como Intel licencia à AMD o direito de usar a arquitetura x86 original (em cima de que x86-64 é baseado), estas companhias rivais confiam agora em si para o desenvolvimento 64-bit do processador. Isto conduziu a um exemplo da destruição mutuamente assegurada se uma ou outra companhia revoga sua licença respectiva. Se tal encenação ocorrer, AMD estaria desautorizada para produzir todos os processadores x86, e Intel seria autorizado já não produzir os processadores x86-64, forçando-a o de volta à arquitetura x86 de 32 bits agora-obsoleta. Os últimos processadores Intel manufacturado que não usaram o projeto AMD x86-64 eram versões adiantadas do Pentium 4 de núcleo Prescott, introduzido em fevereiro de 2004, e modelos Mobile da Intel núcleos introduzido até janeiro de 2006.
VIA Technologies, outro produtor de processadores x86, também incluídas instruções x86-64 no Isaiah, arquitetura utilizada no VIA Nano. Os termos x86-64 e x64 são usados frequentemente como termos vendedor-neutros em referência coletiva aos processadores x86-64 de toda a companhia. A especificação x86-64 é distinta da arquitetura de Intel Itanium (anteriormente IA-64), que não é compatível no nível nativo do grupo de instrução com as arquiteturas x86 ou o x86-64.
História
O AMD64 foi criado como uma alternativa para o IA-64 (Intel e Hewlett Packard), que era uma arquitetura radicalmente diferente. Anunciado originalmente como "x86-64" em agosto 2000, a arquitetura foi posicionada por AMD do começo como uma maneira evolucionária de adicionar capacidades de computação 64-bit à arquitetura x86 existente, em oposição à da Intel de se criar uma arquitetura 64-bit inteiramente nova com o IA-64. O primeiro processador baseado no AMD64, o Opteron (para servidores), foi liberado em abril 2003 e o Athlon 64 (para computadores de mesa - desktops) em setembro.
Características
A principal característica do AMD64 é a disponibilidade de registros 64-bit de uso geral, ou seja, Rax, rbx etc, operações de número inteiro 64-bit aritméticas e lógicas, e endereços virtuais 64-bit. Os projetistas tiveram a oportunidade de fazer outras melhorias também. As alterações mais significativas são:
- Manipular inteiros de 64-bit: Todos os registradores de uso geral (GPRS) são expandidos de 32 bits para 64 bits, e todas as operações aritméticas e lógicas, memória para registro e registro para memória, etc., podem agora operar diretamente sobre inteiros de 64-bit. Adições ao endereço de pilha estão sempre em 8 bytes, e ponteiros são 8 bytes de tamanho.
- Registradores adicionais: Além de aumentar o tamanho dos registradores de uso geral, o número deles é aumentado de oito (ou seja, EAX, EBX, ECX, EDX, EBP, ESP, ESI, EDI), em x86-32, para dezesseis (isto é, RAX, RBX, RCX, RDX, RBP, RSP, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15). É consequentemente possível manter mais variáveis locais nos registradores do que na pilha, e constantes frequentemente acessadas; os argumentos para sub-rotinas pequenas e rápidas podem igualmente ser passados nos registradores em maior medida. Entretanto, o AMD64 ainda tem poucos registradores do que muitos processadores comuns do RISC (que têm tipicamente 32-64 registradores) ou VLIW-como máquinas tais como o IA-64 (que tem 128 registradores).
- Registradores adicionais do MMX (SSE): Similarmente, o número de registradores de 128 bit do MMX (usados em instruções Streaming-SIMD) é aumentado igualmente de 8 a 16.
- Espaço de endereço virtual maior: Os modelos de processadores atuais que executam a arquitetura AMD64 podem endereçar até 256 TB(248 ou 281.474.976.710.656 bytes) do espaço de endereço virtual. Este limite pode ser aumentado nas implementações futuras a 16 EB (264 ou 18.446.744.073.709.551.616 bytes). Isto é comparado a apenas 4 GB (232 ou 4.294.967.296 bytes) para x86 de 32 bits. Isto significa que arquivos muito grandes podem ser operados pelo mapeamento de todo o arquivo para o processo de endereçamento de espaço (que por vezes é mais rápido do que trabalhar com chamadas de leitura/gravação do arquivo), em vez de ter de mapear regiões do arquivo para dentro e fora do espaço de endereçamento.
- Espaço de endereço físico maior: As execuções atuais da arquitetura AMD64 podem endereçar até 1 TB (240 ou 1.099.511.627.776 bytes) da RAM; a arquitetura permite estender esta a 4 PB (252 ou 4.503.599.627.370.496 bytes) no futuro (limitado pelo formato da entrada da tabela de páginas). No modo legado, a extensão do endereço físico (PAE) é incluída, enquanto está na maioria de processadores x86 de 32 bits atuais, permitindo o acesso a um máximo de 64 GB (236 ou 68.719.476.736 bytes).
- Ponteiro de Instrução de acesso a dados relativos: As instruções podem agora referenciar os dados relativos à instrução ponteiro (registrador RIP). Isto faz a posição do código ser independente, como é usado frequentemente em bibliotecas compartilhadas e em código carregados no tempo de execução, e mais eficiente.
- Instruções SSE: A original arquitetura AMD64 adotou da Intel as instruções SSE e SSE2 como núcleo de instruções. As instruções SSE3 foram adicionadas em abril 2005. O SSE2 substitui o conjunto x86 instrução set precisão do bocado de s IEEE 80 com a escolha de uma ou outra matemática flutuante de 32 bits ou 64-bit de IEEE. Isto fornece as operações de vírgula flutuante compatíveis com muitos outros processadores centrais modernos. As instruções SSE e SSE2 foram estendidas igualmente para operar sobre os oito registos novos do MMX. SSE e SSE2 estão disponíveis na modalidade de 32 bits nos processadores x86 modernos;entretanto, se são usado em programas de 32 bits, aqueles programas trabalhará somente em sistemas com processadores que têm a característica. Esta não é uma edição em programas 64-bit, porque todos os processadores AMD64 têm SSE e SSE2, assim que usar as instruções SSE e SSE2 em vez das instruções x86 não reduz o jogo das máquinas em que os programas x64 podem ser funcionados. SSE e SSE2 são geralmente mais rápidos do que, e duplicam a maioria das características das instruções x86 tradicionais, de MMX, e de 3DNow!.
- Não Executa-bit: O bit "NX" (63º bit da entrada da tabela de páginas) permite que o sistema operacional especifique quais páginas no espaço de endereçamento virtual podem conter códigos executáveis e quais não podem. Uma tentativa para executar código a partir de uma página etiquetada de "não executar" irá resultar em uma violação de acesso à memória, semelhante a uma tentativa de escrever para uma memória ROM. Isto deve tornar mais difícil, para um código malicioso, assumir o controle do sistema através de ataques de "buffer overflow" ou "buffer não checado". A mesma funcionalidade está disponível em processadores x86 desde o 80286 como um atributo dos descritores de segmento, no entanto, isso só funciona em um segmento inteiro de uma vez. O endereçamento segmentado há muito tempo é considerado um modo obsoleto de funcionamento, e todos os sistemas operacionais nos PC atuais burlam isso, configurando todos os segmentos para um endereço base de 0 e um tamanho de 4 GB (4.294.967.296 bytes). A AMD foi a primeira fornecedora da família x86 a implementar o Não-Executa no modo de endereçamento linear. O recurso também está disponível no modo legado sobre processadores AMD64, e os recentes processadores Intel x86, quando PAE é utilizado.
- Remoção das características mais velhos: Uma série de "sistema de programação" características da arquitectura x86 não são utilizados nos modernos sistemas operativos e não estão disponíveis em AMD64 em longas (64-bit e compatibilidade) modalidade. Estes incluem endereçamento segmentado (embora a FS e GS segmentos são mantidas em forma vestigial extra para utilização como base ponteiros para estruturas do sistema operacional), a tarefa estado mudar mecanismo e modo virtual 8086. Estas características fazem do curso continuem a ser totalmente implementado em "legacy mode", permitindo assim a correr estes processadores 32-bit e 16-bit sistemas operacionais sem modificação.
Detalhes do espaço de endereço virtual
Embora endereços virtuais são 64 bits de largura de 64 bits modo, os actuais implementações (e quaisquer fichas de ser conhecido no planeamento fases) não permitir que todo o espaço de endereço virtual 16 EB (18.446.744.073.709.551.616 bytes) a ser utilizado.A maioria dos sistemas operativos e aplicações que não necessitam de tal abordar um grande espaço para o futuro previsível (por exemplo, o Windows implementações AMD64 são apenas para preencher 16 TB (17.592.186.044.416 bytes), ou 44 bits' vale), de forma ampla implementação desses endereços virtuais simplesmente aumentar a complexidade e os custos de tradução de endereço, sem real benefício. AMD, por isso, decidiu que, nas primeiras implementações da arquitetura, apenas os 48 bits menos significativos de um endereço virtual seria efectivamente utilizado no endereço tradução (página tabela lookup). No entanto, 48 por 63 bits de qualquer endereço virtual deve ser cópias de 47 bits (em uma maneira similar a assinar extensão), ou o processador irá levantar uma exceção.Endereços conformes a esta regra são referidos como "forma canônica." Forma canônica executar endereços de 0 a 00007FFF FFFFFFFF »e, a partir FFFF8000» 00000000 através FFFFFFFF FFFFFFFF », para um total de 256 TB (281.474.976.710.656 bytes) de espaço utilizável endereço virtual.
Este "equívoco" permite uma importante característica para mais tarde escalabilidade para true 64-bit abordando: muitos sistemas operacionais (incluindo, mas não se limitando a, o Windows NT família) ter a maior meia-endereçado do espaço de endereçamento (denominado espaço do núcleo) para si mesmos e deixar a menor meia-endereçado (user space) para aplicação código de modo usuário empilhamentos, escombreiras, dados e outras regiões. O "endereço canônico" design garante que todos os AMD64 compatível execução tem, na verdade, duas metades de memória: a metade inferior começa a 00000000 e 00000000 » cresce para cima ", como endereço virtual mais bits se tornarem disponíveis, enquanto a maior metade é" encaixado " para o início do espaço de endereçamento e cresce para baixo. Além disso, fixa o conteúdo do endereço inutilizado bits impede seu uso pelo sistema operacional como bandeiras, privilégio marcadores, etc, que essa utilização pode tornar-se problemática quando a arquitetura é, de facto, alargada a 52, 56, 60 e 64 bits.
Atual 48-bit aplicação | 56-bit aplicação | Full 64-bit aplicação |
(não foi desenhada à escala) |
O modo de endereçamento de 64 bits ("modo longo") é um superconjunto de endereço físico extensões (PAE); por este motivo, página tamanhos podem ser de 4 KB (4.096 bytes), 2 MB (2.097.152 bytes), ou 1 GB (1073741824 bytes).No entanto, em vez dos três de nível de página tabela sistema utilizado pelos sistemas em modo PAE, os sistemas em execução no modo longo utilizar quatro níveis de página tabela: PAE's Page Directory Ponteiro-Quadro é prorrogado a partir de 4 inscrições para 512, e um adicional Page-Map Nível 4 Quadro é adicionado, contendo 512 entradas em 48 bits implementações.Em implementações proporcionando maior endereços virtuais, este último quadro quer crescer seria suficiente para acomodar as entradas para descrever toda a gama endereço, até um máximo teórico de 33.554.432 entradas para uma aplicação de 64 bits, ou ser mais ordenada por um novo mapeamento nível, tais como um PML5. Um mapeamento completo hierarquia de 4 KB (4.096 bytes) páginas para o conjunto de 48 bits espaço terá um pouco mais de 512 GB (549.755.813.888 bytes) de memória RAM (cerca de 0,196% dos 256 TB [281.474.976.710.656 bytes] espaço virtual).
Modos de operação
Modo de funcionamento | Sistema operacional necessária | Compilado-aplicação reconstruir exigido | Endereço padrão tamanho | Predefinição operando tamanho | Registre extensões | Típico GPR largura | |
---|---|---|---|---|---|---|---|
Modo longo | 64-bit modo | OS 64-bit com o apoio | Sim | 64 | 32 | Sim | 64 |
Modo de Compatibilidade | Não | 32 | 32 | Não | 32 | ||
16 | 16 | 16 | |||||
Legado Modo | Modo Protegido | Legado de 16 bits ou 32 bits OS | Não | 32 | 32 | Não | 32 |
16 | 16 | 16 | |||||
Modo Virtual 8086 | 16 | 16 | 16 | ||||
Modo Real | Legacy 16-bit OS |
Modo de funcionamento explicação
A arquitetura tem dois principais modos de funcionamento:
A arquitetura da primários destinados modo de operação, é uma combinação do processador nativo do modo de 64 bits e um combinado 32-bit e 16-bit o modo de compatibilidade. De acordo com um sistema operacional de 64 bits, 64 bits, 32 bits e 16 bits (ou 80.286) de modo protegido os pedidos podem ser executados.
Desde o ensino básico conjunto é o mesmo, quase não há perda de desempenho para executar código x86. Isto é diferente da Intel IA-64, onde as diferenças subjacentes no ISA significa que a execução de códigos de 32 bits deve ser feito quer em emulação de x86 (tornando o processo mais lento) ou com um núcleo dedicado x86. No entanto, sobre a plataforma x64, x86 de 32 bits aplicações podem ainda beneficiar de uma de 64 bits recompile, devido ao adicional de registos de 64 bits código, que um compilador pode usar para otimização.
O modo utilizado por 16 bits (modo protegido ou modo real) e sistemas operacionais de 32 bits. Neste modo, o processador atua apenas como um processador x86, e apenas de 16 bits ou 32 bits código pode ser executada. 64-bit programas não será executado.
Implementações x64 da AMD
Os seguintes processadores implementam a arquitetura AMD64:
- AMD Athlon 64
- AMD Athlon 64 X2
- AMD Athlon 64 FX
- AMD Opteron
- AMD Turion 64
- AMD Turion 64 X2
- AMD Sempron ("Palermo" stepping E6 e todos "Manila" modelos)
- AMD Phenom , muitas vezes seguido por X3 ou X4, para indicar o número de núcleos.
- AMD Phenom II ,(45 nm) freqüentemente seguidos por X2, X3, X4 ou X6 para indicar o número de núcleos.
- AMD FX Series , em versões X4 X6 ou X8, utilizado em socket AM3+ em placas-mãe DDR3
- AMD Ryzen , lançado em 2017 para placas-mãe DDR4 em versões de 4, 6 e 8 núcleos
Referências
- x86-64 technology white paper. Advanced Micro Devices, Inc. Disponível em <http://www.amd.com/br-pt/Processors/TechnicalResources/0,,30_182_739_7203,00.html>. Acesso em 24 dez 2006.
- AMD eighth-generation processor architecture. Advanced Micro Devices, Inc. Disponível em <http://www.amd.com/br-pt/Processors/TechnicalResources/0,,30_182_739_7203,00.html>. Acesso em 24 dez 2006.
- AMD64 architecture programmer's manual volume 1: application programming. <http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_7044,00.html>. Acesso em 24 dez 2006.
- AMD64 architecture programmer's manual volume 2: system programming. <http://www.amd.com/us-en/Processors/TechnicalResources/0,,30_182_739_7044,00.html>. Acesso em 24 dez 2006.