Quelle est la différence entre Intel 64 et AMD64?

29

Quelqu'un peut-il expliquer s'il existe une différence entre les architectures intel64 et amd64?

Grabuge
la source
3
IA64 = l'architecture Intel / HP Itanium VLIW. AMD64 est l'extension développée par AMD du jeu d'instructions x86 standard.
6
Commercialisation. AMD l'a développé, puis l'a concédé sous licence à Intel. AMD octroie une licence x86 à Intel et Intel octroie une licence x64 à AMD. Cela garantit que ni l'un ni l'autre ne peut poursuivre l'autre sans perdre les droits de vendre l'intégralité de sa gamme de processeurs, car ils se tireraient une balle dans le pied.
1
Voulez-vous dire x86-64 ou IA64? L'ancien est le même que AMD64 (littéralement exactement le même jeu d'instructions, ou vous auriez besoin de recompiler toutes les applications pour un processeur ou l'autre), et ce dernier est une architecture de processeur complètement différente.
Percée le
2
Je veux dire x86-64. Intel a initialement utilisé les noms IA-32e et EM64T avant de finalement choisir Intel 64 pour leur implémentation.
Mayhem

Réponses:

26

D'après ce que j'ai lu, la technologie de mémoire étendue 64 bits (EM64T) est la mise en œuvre d'Intel d'AMD64 d'AMD et les différences entre Intel64 et AMD64 sont:

  • Les instructions BSF et BSR d'EM64T agissent différemment lorsque la source est 0 et que la taille de l'opérande est de 32 bits. Le processeur met le drapeau zéro et laisse les 32 bits supérieurs de la destination indéfinis.

  • AMD64 prend en charge 3DNow! instructions. Cela inclut la prélecture avec l'opcode 0x0F 0x0D et PREFETCHW, qui sont utiles pour masquer la latence de la mémoire.

  • EM64T n'a pas la possibilité d'enregistrer et de restaurer une version réduite (et donc plus rapide) de l'état à virgule flottante (impliquant les instructions FXSAVE et FXRSTOR).

  • EM64T manque de registres spécifiques au modèle qui sont considérés comme architecturaux à AMD64. Il s'agit notamment de SYSCFG, TOP_MEM et TOP_MEM2.

  • EM64T prend en charge la mise à jour du microcode comme en mode 32 bits, tandis que les processeurs AMD64 utilisent un format de mise à jour du microcode différent et contrôlent les MSR.

  • L'instruction CPUID d'EM64T est très spécifique au fournisseur, comme c'est normal pour les processeurs de style x86.

  • EM64T prend en charge les instructions MONITOR et MWAIT, utilisées par les systèmes d'exploitation pour mieux gérer l'hyper-threading.

  • Les systèmes AMD64 permettent l'utilisation de l'ouverture AGP comme IO-MMU. Les systèmes d'exploitation peuvent en profiter pour laisser les périphériques PCI normaux DMA à une mémoire supérieure à 4 Gio. Les systèmes EM64T nécessitent l'utilisation de tampons de rebond, qui sont plus lents.

  • SYSCALL et SYSRET ne sont également pris en charge qu'en mode IA-32e (et non en mode de compatibilité) sur EM64T. SYSENTER et SYSEXIT sont pris en charge dans les deux modes.

  • Les branches proches avec le préfixe 0 × 66 (taille de l'opérande) se comportent différemment. Un type de CPU efface uniquement les 32 bits supérieurs, tandis que l'autre type efface les 48 bits supérieurs.

Grabuge
la source
D'où avez-vous lu ce texte?
Tamara Wijsman
4
Eh bien, certains forums / blogs + wikipedia ( en.wikipedia.org/wiki/EMT64#Intel_64 ). J'ai également regardé certains manuels d'Intel et d'AMD.
Mayhem
@Nubok: Veuillez ajouter la différence pour l'implémentation de l'architecture des technologies via (version 64 bits bien sûr)  !
user2284570
L'IO-MMU est un gros problème - en l'absence, cela signifie que vous devez absorber une quantité non négligeable de mémoire faible pour la mise en mémoire tampon (64 Mo est la valeur par défaut actuelle sous Linux). Intel a ensuite introduit quelque chose de similaire à VT-d et l'a utilisé pour un niveau de segmentation de produit ennuyeux - cependant la fiabilité du code (et dans certains cas du silicium) a eu tendance à faire en sorte qu'il ne soit pas utilisé par défaut sur Linux pour l'original fins.
GreenReaper
8

Sur la page x86 de Wikipedia, vous pouvez lire

En 1999-2003, AMD a étendu cette architecture 32 bits à 64 bits et l'a appelée x86-64 dans les premiers documents, puis AMD64. Intel a rapidement adopté les extensions architecturales d'AMD sous le nom IA-32e, qui a ensuite été renommé EM64T et enfin Intel 64.

En d'autres termes, le différenciateur est principalement le marketing. Il existe des extensions spécifiques Intel et AMD au jeu d'instructions, mais tant que vous écrivez des programmes dans l'espace utilisateur, vous n'avez généralement pas besoin de connaître la différence.

Joachim Isaksson
la source
3
you don't generally need to know the differenceFaux: même des différences mineures sur les instructions génériques sont très importantes. Bugs.chromium.org/p/nativeclient/issues/detail?id=2010
user2284570
4
Faux: même des différences mineures sur les instructions génériques sont très importantes Pour être juste, (1), il a dit que vous n'avez généralement pas besoin de connaître ces différences. De toute évidence, il existe des cas spécifiques où cela peut être important. (2) la plupart d'entre nous n'écrivent pas un bac à sable renforcé qui doit protéger tous les chemins d'instructions disponibles.
Eric W