Qual é a diferença entre Intel 64 e AMD64?


29

Alguém pode explicar se existe alguma diferença entre as arquiteturas intel64 e amd64?


3
IA64 = a arquitetura Intel / HP Itanium VLIW. AMD64 é a extensão desenvolvida pela AMD do conjunto de instruções x86 padrão.

6
Marketing. A AMD a desenvolveu e depois a licenciou para a Intel. A AMD está licenciando x86 da Intel e a Intel está licenciando x64 da AMD. Isso garante que nenhum dos dois possa processar o outro sem perder os direitos de vender toda a sua linha de CPUs, pois eles estariam atirando no próprio pé.

1
Você quer dizer x86-64 ou IA64? O anterior é o mesmo que o AMD64 (literalmente, exatamente o mesmo conjunto de instruções, ou você precisará recompilar todos os aplicativos para uma CPU ou outra), e o último é uma arquitetura de CPU completamente diferente.
Breakthrough

2
Quero dizer x86-64. A Intel usou inicialmente os nomes IA-32e e EM64T antes de finalmente se instalar no Intel 64 para sua implementação.
Mayhem

Respostas:


26

Pelo que li, a Tecnologia de memória estendida de 64 bits (EM64T) é a implementação da AMD64 da AMD e as diferenças entre a Intel64 e a AMD64 são:

  • As instruções BSF e BSR do EM64T agem de maneira diferente quando a fonte é 0 e o tamanho do operando é 32 bits. O processador define o sinalizador zero e deixa os 32 bits superiores do destino indefinidos.

  • AMD64 suporta 3DNow! instruções. Isso inclui pré-busca com o opcode 0x0F 0x0D e PREFETCHW, que são úteis para ocultar a latência da memória.

  • O EM64T não possui a capacidade de salvar e restaurar uma versão reduzida (e, portanto, mais rápida) do estado de ponto flutuante (envolvendo as instruções FXSAVE e FXRSTOR).

  • O EM64T não possui alguns registros específicos do modelo que são considerados arquitetônicos para o AMD64. Isso inclui SYSCFG, TOP_MEM e TOP_MEM2.

  • O EM64T suporta a atualização de microcódigo como no modo de 32 bits, enquanto os processadores AMD64 usam um formato de atualização de microcódigo diferente e controlam os MSRs.

  • A instrução CPUID do EM64T é muito específica do fornecedor, como é normal para processadores no estilo x86.

  • O EM64T suporta as instruções MONITOR e MWAIT, usadas pelos sistemas operacionais para lidar melhor com o Hyper-threading.

  • Os sistemas AMD64 permitem o uso da abertura AGP como um IO-MMU. Os sistemas operacionais podem tirar proveito disso para permitir que os dispositivos PCI DMA normais tenham memória acima de 4 GiB. Os sistemas EM64T requerem o uso de buffers de retorno, que são mais lentos.

  • SYSCALL e SYSRET também são suportados apenas no modo IA-32e (não no modo de compatibilidade) no EM64T. SYSENTER e SYSEXIT são suportados nos dois modos.

  • Ramos próximos com o prefixo 0 × 66 (tamanho do operando) se comportam de maneira diferente. Um tipo de CPU limpa apenas os 32 bits principais, enquanto o outro tipo limpa os 48 bits superiores.


De onde você leu esse texto?
Tamara Wijsman

4
Bem, alguns fóruns / blogs + wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). Também examinei alguns manuais da Intel e AMD.
Mayhem

@Nubok: Por favor, adicione a diferença para a implementação da arquitetura via technologies (versão de 64 bits, é claro)  !
user2284570

O IO-MMU é muito importante - na falta dele, é necessário absorver uma quantidade não trivial de pouca memória para o buffer (64 MB é o padrão atual no Linux). Posteriormente, a Intel introduziu algo semelhante ao VT-d e o usou para um nível irritante de segmentação de produtos - no entanto, a confiabilidade do código (e em alguns casos o silício) tendeu a resultar no fato de ele não ser usado por padrão no Linux para o original propósitos.
GreenReaper

8

Na página x86 da Wikipedia, você pode ler

Em 1999-2003, a AMD estendeu essa arquitetura de 32 bits para 64 bits e se referiu a ela como x86-64 nos primeiros documentos e posteriormente como AMD64. A Intel logo adotou as extensões arquiteturais da AMD com o nome IA-32e, que mais tarde foi renomeado para EM64T e, finalmente, Intel 64.

Em outras palavras, o diferencial é principalmente o marketing. Existem extensões específicas da Intel e da AMD para o conjunto de instruções, mas desde que você esteja escrevendo programas no espaço do usuário, geralmente não precisa saber a diferença.


3
you don't generally need to know the differenceErrado: mesmo pequenas diferenças nas instruções genéricas são muito importantes bugs.chromium.org/p/nativeclient/issues/detail?id=2010
user2284570

4
Errado: mesmo pequenas diferenças nas instruções genéricas são muito importantes. Para ser justo, (1), ele disse que você geralmente não precisa conhecer essas diferenças. Obviamente, existem casos específicos em que isso pode importar. (2) a maioria de nós não está escrevendo uma caixa de proteção reforçada que deve proteger todo e qualquer caminho de instrução disponível.
Eric W
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.