Por que aplicações Off-the-shelf de trabalho em ambos os processadores Intel e AMD?

StackOverflow https://stackoverflow.com/questions/832007

  •  06-07-2019
  •  | 
  •  

Pergunta

Uma coisa que me falta entendimento sobre é como código pode compilado para um trabalho de CPU Intel em um CPU AMD.

O meu entendimento de base é que se você compilar o código C, por exemplo, o compilador transforma o código-fonte em linguagem de máquina que terá instruções para um processador particular. Então, você precisa compilar com um compilador para qualquer plataforma que você quiser que seu aplicativo para uso. Por que você não requerem um compilador para AMD contra a Intel, e tem que comprar software para um processador particular?

Eu sei que os processadores AMD e processadores Intel compartilhar alguma compatibilidade nas instruções x86 mais antigos; o que eu gostaria de saber é como eles fazem isso? Quer dizer, não é como AMD ou Intel estão chamando um ao outro e dizendo uns aos outros os seus segredos comerciais, assim como eles podem criar conjuntos de instruções que são compatíveis?

É tudo compatibilidade ainda com base no conjunto 386 instrução, com um monte de declarações como "IF AMD CPU, fazer isso MAIS QUE A INTEL fazer isso"?

Foi útil?

Solução

AMD e Intel x86 e x86-64 CPUs são quase inteiramente compatível. Ambos implementar todas x86 e x86-64. Cada um deles tem suas próprias extensões (como MMX e 3DNow), mas compiladores geralmente não usá-los a menos que você diga a eles para. Hoje em dia, AMD e Intel ambos apoio quase todas as extensões do outro. A única vez que você pode ter que se preocupar com a diferença é quando você está fazendo realmente coisas do kernel de baixo nível.

A propósito, o conjunto de instruções não é realmente um "segredo comercial". A implementação é. Ambas as empresas produzem documentação sobre o conjunto de instruções, de modo que cada um pode copiá-lo. A razão para isso é provavelmente que, se mais empresas produzir chips compatíveis, mais software será escrito para este conjunto de instruções, para que mais pessoas vão comprar esses chips. x86 / x86-64 é basicamente a arquitetura padrão para desktops, garantindo que as pessoas vão continuar a comprar chips da Intel e AMD. Intel e AMD têm muito diferentes implementações, eles só executar o mesmo código.

Outras dicas

Na verdade, eles têm um acordo de licenciamento cruzado. Informação e inovação fluiu da Intel para AMD de volta na década de 90, quando a AMD foi uma segunda fonte de 386 e 486 processadores, e depois da AMD para Intel quando a Intel adotou as extensões x86-64.

Lembre-se também que os conjuntos de instruções para estes processadores são publicamente documentado; tipicamente um fornecedor vai inventar um novo conjunto de instruções e uma ou duas gerações depois, o outro fornecedor será implementar extensões compatíveis. Como tal, em vez de IF 386 .... você tem algo mais ao longo das linhas de IF SSE4 É APOIADO ..., sem levar em conta o fornecedor específico.

Ambos os fornecedores implementar o mesmo conjunto de instruções, de modo que quando o código compilado se transformou em instruções de máquina, eles vão trabalhar em ambas as fichas. No entanto, existem alguns conjuntos especiais de instrução, como SSE que pode ser específico de um fornecedor ou de outra. Se você quiser melhorar o desempenho de um aplicativo, você pode fazer verificações de tempo de execução para usar esses recursos quando disponível.

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