AMD64
AMD64 est le nom de l'architecture des premiers microprocesseurs Modèle:Unité de la société Advanced Micro Devices. Son nom de code est Modèle:Lang (de l'anglais marteau) remplaçant l'appellation x86-64. Le nom x86-64 est généralement utilisé lorsque l'on parle de ce jeu d'instructions, sans faire référence à la marque AMD. En effet, si dans un premier temps Intel était parti sur un jeu d'instructions IA64 incompatible avec l'AMD64, les processeurs Modèle:Unité d'Intel en dehors des Itanium 1 et 2 sont compatibles x86-64.
Cette architecture est compatible avec le standard Modèle:Unité x86 d'Intel. Elle est utilisée par les Athlon 64, Athlon 64 FX, Athlon 64 X2, Sempron 64, Turion, Opteron, Fusion et Phenom.
Intel a par la suite adopté cette architecture, sous le nom de Intel 64, EM64T ou IA-32e, dans ses processeurs de type Pentium 4, Pentium D, Modèle:Lang, Celeron D, Xeon, et sur les plus récents Core i3, Core i5 et Core i7. Microsoft communique sur cette technologie sous le nom de x64.
Dirk Meyer, ingénieur ayant travaillé sur les processeurs Alpha de DEC, a participé au projet.
Architecture
Le jeu d'instructions de l'architecture AMD x86-64 est une extension de l'architecture Intel IA-32 (x86-32). Les caractéristiques principales de l'architecture AMD64 sont le support de registres généraux de Modèle:Unité, de l'arithmétique des entiers et des opérations logiques Modèle:Unité ainsi que des adresses virtuelles Modèle:Unité. Les créateurs ont profité de l'opportunité d'une nouvelle architecture pour proposer d'autres améliorations, incluant principalement :
- Support complet des entiers Modèle:Unité : tous les registres généraux (GPRs : Modèle:Lang) passent de 32 à Modèle:Unité et toutes les opérations logiques et arithmétiques, de la mémoire vers les registres et des registres vers la mémoire, etc. sont disponibles nativement pour les entiers Modèle:Unité. Les Modèle:Lang (empilement) et les Modèle:Lang (dépilement) sur la pile sont toujours d'une largeur de Modèle:Unité (Modèle:Unité), de même que les pointeurs.
- Registres supplémentaires : le nombre des registres généraux est doublé pour atteindre 16. Il y a par conséquent moins besoin de sauvegarder les registres, de les restaurer et plus généralement de les manipuler ; la plupart des arguments de la plupart des fonctions peut de même être passée par les registres plutôt que sur la pile. À titre de comparaison l'architecture PowerPC 970 dispose de 32 GPRs. La taille et le nombre de registres est en effet un des points faible du x86. Avec des applications optimisées, on peut attendre un gain de performances, notamment pour les programmes disposant de nombreuses boucles.
- Registres XMM supplémentaires : de manière similaire, le nombre de registres XMM (utilisés pour les instructions SIMD) est aussi augmenté de 8 à 16.
- Espace mémoire virtuelle plus grand : les modèles de processeurs implémentant actuellement l'architecture AMD64 peuvent adresser jusqu'à Modèle:Unité d'adresse mémoire virtuelle (Modèle:Unité). Cette limite peut être étendue dans de futures implémentations à Modèle:Unité (Modèle:Unité). Ceci peut être comparé aux Modèle:Unité pour les architectures x86 Modèle:Unité.
- Espace mémoire vive plus grand : les modèles de processeurs implémentant actuellement l'architecture AMD64 peuvent adresser Modèle:Unité d'adresses mémoire vive. Cette limite peut être étendue dans de futures implémentations à Modèle:Unité (Modèle:Unité) (limités par le format des entrées de la table de page). En Modèle:Lang (mode compatible x86), l'extension PAE (Modèle:Lang) est supportée, comme sur les processeurs x86 Modèle:Unité les plus courants, autorisant l'accès à un maximum de Modèle:Unité.
- Accès aux données relatives au pointeur d'instruction : les instructions peuvent désormais référencer les données relativement au pointeur d'instruction (registre RIP). Ceci permet de générer du code indépendant de la position du programme en mémoire (PIC, ou Modèle:Lang) plus efficace ; ceci est souvent utilisé dans les bibliothèques partagées ou les codes chargés à l'exécution.
- Instructions SSE : l'architecture originale AMD64 a adopté les instructions SSE et SSE2 au sein du cœur du processeur. Les instructions SSE3 ont été ajoutées en Modèle:Date. SSE2 remplace le jeu d'instructions x87 de Modèle:Unité de précision, incluant le choix d'opérations mathématiques flottantes en 32 ou Modèle:Unité. Ceci permet des opérations en virgule flottante compatibles avec les autres CPUs modernes. Les instructions SSE et SSE2 ont aussi été étendues pour supporter les huit nouveaux registres XMM. SSE et SSE2 sont disponibles en Modèle:Unité sur les processeurs x86 modernes ; cependant s'ils sont utilisés par des programmes Modèle:Unité, ces derniers ne pourront fonctionner que sur des processeurs supportant ces instructions. Ceci n'est pas un problème pour des programmes Modèle:Unité, du fait que tous les processeurs AMD64 supportent ces jeux d'instructions. Utiliser les instructions SSE et SSE2 au lieu des x87 ne réduit alors pas le nombre de plates-formes sur lesquelles les programmes pourront fonctionner. Du fait que les instructions SSE et SSE2 sont généralement plus rapides et fournissent les mêmes fonctionnalités que les jeux MMX et 3DNow!, ces derniers sont considérés comme dépassés sur AMD64.
- Modèle:Lang : le bit 'NX' (Modèle:Nobr des entrées de la table des pages) permet au système d'exploitation de spécifier quelles pages d'adresse mémoire virtuelle peuvent contenir du code exécutable et quelles pages ne le peuvent pas. Une tentative d'exécuter du code d'une page identifiée comme Modèle:Lang provoquera une violation d'accès mémoire, identique à celle générée lors d'une tentative d'écriture sur une page en mode « lecture seule ». Ceci devrait rendre plus difficile pour un code malicieux de prendre le contrôle du système via les attaques par « Modèle:Lang » ou liées à des problèmes de vérification des tampons mémoire. Une fonctionnalité identique était déjà disponible sur les processeurs x86 depuis le 80286 à l'aide d'un attribut des descripteurs de segment, mais ne peut alors s'appliquer qu'à un segment entier. L'adressage par segment est considéré comme obsolète depuis longtemps et tous les systèmes d'exploitation actuels pour PC ne l'utilisent effectivement pas, en plaçant l'adresse de base de chacun d'entre eux à 0 et sa taille à Modèle:Unité. AMD a été le premier vendeur de la famille x86 à supporter l'accès non exécutable en mode d'adressage linéaire. Cette fonctionnalité est aussi disponible en mode Modèle:Lang sur les processeurs AMD64, ainsi que les processeurs Intel x86 récents, avec l'utilisation du mode PAE.
- Suppression de fonctionnalités anciennes : un certain nombre de fonctionnalités de programmation système de l'architecture x86 non utilisées dans les systèmes d'exploitation modernes ne sont plus disponibles sur AMD64 en « Modèle:Lang ». Ceci inclut l'adressage mémoire segmenté (bien que les segments FS et GS subsistent, pour la compatibilité avec le code Windows), le mécanisme de changement de tâches (Modèle:Lang) et le Mode virtuel 8086. Ces fonctionnalités subsistent en « Modèle:Lang », pour permettre à ces processeurs d'exécuter complètement les codes 32 et Modèle:Unité sans modification. Si, dans le futur, ne devrait plus subsister de code Modèle:Unité utilisant ces fonctionnalités, leur support pourrait être supprimé des processeurs pour améliorer la conception des processeurs et économiser sur les coûts de production. Ces fonctionnalités pourraient de plus être émulées par le système d'exploitation pour préserver la compatibilité avec les applications « Modèle:Lang ».
Les différents modes de fonctionnement
Mode de fonctionnement | Système d'exploitation requis | Recompilation requise | Taille des adresses par défaut | Taille des opérandes par défaut | Extensions de registres | Taille typique des registres GPR | |
---|---|---|---|---|---|---|---|
Modèle:Lang | Modèle:Lang | OS compatibles 64-bit (x86-64) (par exemple Windows 7, Linux x86-64) | oui | 64 | 32 | oui | 64 |
Modèle:Lang | non | 32 | 32 | non | 32 | ||
16 | 16 | 16 | |||||
Modèle:Lang | Modèle:Lang | OS « Modèle:Lang 16-bit ou 32-bit » | non | 32 | 32 | non | 32 |
16 | 16 | 16 | |||||
mode virtuel 8086 | 16 | 16 | 16 | ||||
Modèle:Lang | Modèle:Lang |
Description de ces modes
- Modèle:Lang : mode Modèle:Unité natif avec compatibilité Modèle:Unité (des programmes non recompilés peuvent être utilisés sans perte de performance notable). Il nécessite un système d'exploitation Modèle:Unité comme GNU/Linux, les BSDs, Solaris 10, Windows XP Pro x64, Windows Vista Modèle:Unité ou encore Windows 7.
- Modèle:Lang : dans ce mode le processeur fonctionne classiquement avec le jeu d'instructions x86, avec tous les systèmes d'exploitation précédents comme MS-DOS et Windows non Modèle:Unité.
Implémentations
Les processeurs suivants implémentent l'architecture AMD64 :
- AMD K8
- AMD Athlon 64
- AMD Athlon 64 X2
- AMD Athlon 64 FX
- AMD Opteron
- AMD Turion 64
- AMD Sempro Palermo
- AMD K10
Implémentations sur une autre architecture commune : Intel 64
Les processeurs suivants implémentent l'architecture Intel 64 :
- Intel NetBurst
- Intel Xeon (quelques modèles depuis 'Nocona')
- Intel Celeron D (quelques modèles depuis 'Prescott')
- Intel Pentium 4 (quelques modèles depuis 'Prescott')
- Intel Pentium D
- Intel Modèle:Lang
- Intel Core
- Intel Core 2 (Quad, Duo, Solo) et dérivés (Celeron 4x0, Celeron Dual Core, Pentium E)
- Intel Xeon
- Intel Atom
- Intel Atom 230
- Intel Atom 330
Nomenclature Industrielle
Puisque les architectures AMD64 et Intel 64 sont relativement similaires, beaucoup de produits logiciels et matériels utilisent un terme commercial neutre pour indiquer leur compatibilité avec les deux implémentations. La désignation d'origine d'AMD pour l'architecture de ce processeur, "x86-64", est encore parfois utilisée dans ce but, tout comme "x86_64"<ref>Modèle:Lien web</ref>. D'autres entreprises, comme Microsoft et Sun Microsystems, utilisent la contraction "x64" au niveau marketing.
Beaucoup de systèmes d'exploitation et de produits, spécialement ceux qui introduisirent la prise en charge de x86-64 avant la venue d'Intel sur cette architecture, utilisent le terme "AMD64" ou "amd64" pour se référer à la fois à AMD64 et à Intel 64.
- Fedora, PackageKit, openSUSE, et Arch Linux la nomment "x86_64".
- Java Development Kit (JDK): Le nom "amd64" est utilisé pour les noms de répertoires contenant des fichiers x86-64.
- Mac OS X: Apple parle de "x86_64" notamment dans la commande de Terminal
arch
et dans la documentation<ref>arch(1) Mac OS X Manual Page</ref>.
- Microsoft Windows: Les versions x64 de Windows utilisent le AMD64 moniker pour désigner divers composants qui utilisent ou sont compatibles avec cette architecture. Par exemple, le dossier système dans un CD-ROM d'installation du « Windows x64 Edition » est nommé "AMD64", pour le différencier de ceux des versions 32 bits nommés "i386".
- Solaris: La commande "isalist" de Solaris, le système d'exploitation de Sun identifie à la fois les systèmes à base de AMD64- et Intel 64– comme "amd64".
Notes et références
Annexes
Articles connexes
Liens externes
- {{#invoke:Langue|indicationDeLangue}} Documentation technique de l'architecture AMD64