Pourquoi les applications standard fonctionnent-elles sur les processeurs Intel et AMD?

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

  •  06-07-2019
  •  | 
  •  

Question

Je ne comprends pas bien comment le code compilé pour un processeur Intel peut fonctionner sur un processeur AMD.

D'après ce que je comprends de base, si vous compilez du code C, par exemple, le compilateur transforme le code source en langage machine qui contiendra des instructions pour un processeur particulier. Vous devez donc compiler avec un compilateur quelle que soit la plate-forme que votre application souhaite utiliser. Pourquoi n'avez-vous pas besoin d'un compilateur pour AMD par rapport à Intel et devez acheter des logiciels pour un processeur particulier?

Je sais que les processeurs AMD et Intel partagent une certaine compatibilité avec les anciennes instructions x86; Ce que j'aimerais savoir, c'est comment ils font ça? Je veux dire, ce n’est pas comme si AMD ou Intel s’appelaient et se disaient leurs secrets commerciaux. Comment peuvent-ils créer des jeux d’instructions compatibles?

La compatibilité est-elle toujours basée sur le jeu d'instructions 386, avec un ensemble d'instructions du type "IF CPU AMD, à faire autrement", sinon VALEUR SI INTEL le fait "?

Était-ce utile?

La solution

Les processeurs AMD et Intel x86 et x86-64 sont presque entièrement compatibles. Ils implémentent tous les x86 et x86-64. Ils ont chacun leur propre extension (comme MMX et 3DNow), mais les compilateurs ne les utilisent généralement pas à moins que vous ne le leur demandiez. De nos jours, AMD et Intel prennent en charge la quasi-totalité des extensions. La seule fois où vous aurez peut-être à vous soucier de la différence, ce sera quand vous ferez des choses très basses sur le noyau.

En passant, le jeu d'instructions n'est pas vraiment un "secret commercial". La mise en œuvre est. Les deux sociétés produisent une documentation sur le jeu d'instructions afin que chacune puisse la copier. La raison en est probablement que si plus d’entreprises produisent des puces compatibles, plus de logiciels seront écrits pour ce jeu d’instructions, de sorte que plus de personnes achèteront ces puces. x86 / x86-64 est à la base de l’architecture standard des ordinateurs de bureau, garantissant que les utilisateurs continueront à acheter des puces Intel et AMD. Intel et AMD ont des implémentations très différentes, ils exécutent simplement le même code.

Autres conseils

En fait, ils ont un contrat de licence réciproque. Les informations et les innovations ont été transmises d’Intel à AMD dans les années 90, lorsque AMD était une deuxième source de processeurs 386 et 486, puis d’AMD à Intel lorsque Intel avait adopté les extensions x86-64.

N'oubliez pas non plus que les jeux d'instructions de ces processeurs sont documentés publiquement. En général, un fournisseur inventera un nouvel ensemble d'instructions et une génération ou deux plus tard, l'autre fournisseur implémentera des extensions compatibles. En tant que tel, plutôt que IF 386 ... vous avez quelque chose de plus semblable à SI SSE4 EST SUPPORTÉ ..., sans tenir compte du fournisseur spécifique.

Les deux fournisseurs implémentent le même jeu d'instructions. Ainsi, lorsque votre code compilé est transformé en instructions machine, ils fonctionnent sur les deux puces. Toutefois, certains jeux d'instructions spéciaux, tels que SSE, peuvent être spécifiques à un fournisseur ou à un autre. Si vous souhaitez améliorer les performances d'une application, vous pouvez effectuer des vérifications à l'exécution pour utiliser ces fonctionnalités lorsqu'elles sont disponibles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top