Hammer AMD
PapyBoom le 22 février 2002 (10 750 lectures)
x86-64
Extensions
L'architecture x86-64 est la proposition d'AMD d'extension d'x86 à l'adressage 64 bits. Contrairement à IA-64 (présentée dans ce dossier), avancée par Intel et Hewlett-Packard, x86-64 ne prévoit pas de remise en cause complète de l'architecture IA-32. Au contraire, la plupart des évolutions sont très réduites.
Pour rappel, x86-64 enrichit l'architecture IA-32, telle qu'elle est utilisée notamment par les Athlon, des fonctions suivantes :
- modes d'adressage 64 bits
- extension des registres entiers et du compteur de programme de 32 à 64 bits
- ajout de 8 registres entiers (R8 à R15) aux 8 existants
- ajout de 8 registres SSE (XMM8 à XMM15) aux 8 existants
La disponibilité de modes d'adressage 64 bits, associée aux registres entiers étendus, permet d'utiliser une grande quantité de mémoire. Un processus s'exécutant en "Long Mode" peut accéder directement à un espace d'adressage virtuel de 16 exaoctets, soit plus de 17 milliards de gigaoctets. Qui plus est, cet accès ne nécessite aucune segmentation ou autre artifice compliquant singulièrement la tâche du programmeur ! Pour accéder à cet espace de mémoire virtuelle, l'unité de pagination est modifiée pour prendre en compte ce surcroît de taille des adresses. Bien entendu, seul un système d'exploitation spécifiquement adapté à x86-64 pourra gérer les modes d'adressage 64 bits. Avec son aide, des applications 32 bits non modifiées pourront fonctionner convenablement en cohabitation pacifique avec les applications 64 bits, sans cependant pouvoir accéder directement à plus de 4 Go.
L'ajout de registres accessibles au programmeur est principalement destiné à faciliter la tâche d'optimisation des compilateurs. Il permet de réduire le recours à la mémoire pour stocker des paramètres de sous-programmes ou des valeurs temporaires. De plus, si le code source s'y prête, un plus grand nombre d'instructions pourront s'exécuter simultanément, faisant ainsi un meilleur usage des ressources de traitement disponibles et cachant mieux la latence de la mémoire.
Calcul en virgule flottante
Bien que ce ne soit pas réellement une partie de l'architecture x86-64, il faut noter qu'AMD inclura dans ses futurs processeurs le support complet des instructions SSE2, telles qu'elles ont été définies par Intel pour le Pentium 4. Pour rappel, le principal apport de SSE2 par rapport à SSE concerne le traitement simultané de nombres en double précision (64 bits chacun) contenus dans des registres XMM (128 bits chacun, soit deux nombres par registre). Dans SSE, cette possibilité était limitée aux nombres en virgule flottante en simple précision (32 bits chacun). Accessoirement, des traitements sur les entiers analogues à ceux possibles avec l'unité MMX sont possibles en utilisant les registres XMM au lieu des registres flottants de l'unité x87. Au passage, les nouvelles instructions SSE2 portant sur les entiers bénéficient du traitement de 128 bits simultanément au lieu de seulement 64 bits dans le cas des instructions MMX.
En 2000, AMD annonçait l'arrivée d'une toute nouvelle architecture de traitement des programmes en virgule flottante baptisée "Technical Floating Point". L'objectif était de doter la nouvelle génération d'une unité de calcul en virgule flottante moderne pour remplacer l'antique unité x87 dont les performances sont handicapées par son grand âge. En particulier, un grand nombre de registres adressables directement devait faciliter le travail du compilateur, de même qu'un jeu d'instructions ternaires (le résultat d'un calcul sur deux registres peut être stocké dans un troisième registre distinct). Cependant, il semble qu'AMD ait préféré se rallier à Intel. Cela me semble un bon choix du point de vue de l'utilisateur final. En effet, les programmeurs n'auront qu'une seule cible à viser pour l'optimisation de leurs programmes en virgule flottante. Ils n'auront donc aucune excuse pour fournir des logiciels qui seraient rapides sur les processeurs Intel et lents sur ceux d'AMD, ou vice versa.
Impact sur la génération Hammer
La première implémentation commerciale d'x86-64 sera mise en œuvre dans les processeurs de la génération Hammer. Cependant, il est peu probable que cette fonctionnalité devienne rapidement un facteur important de différenciation par rapport aux processeurs concurrents. L'usage des modes 64 bits des Hammer devrait être faible, notamment par manque de présence d'AMD sur les marchés qui peuvent en tirer un avantage : les serveurs et les stations de travail de haut de gamme. Il est même possible qu'x86-64 ne parvienne jamais à devenir une fonctionnalité décisive, comme par exemple 3DNow! qui a été supplanté par MMX et SSE. Même AMD minimise l'intérêt des extensions x86-64 dans les annonces de ses processeurs Hammer.
Par contre, la généralisation des fonctionnalités SSE2 sur les processeurs de la gamme Hammer devrait permettre à AMD de se hisser au niveau de performances du Pentium 4 en calcul en virgule flottante, y compris dans les tests SPECfp en double précision. Ironiquement, les utilisateurs des processeurs AMD pourraient bénéficier des améliorations qu'Intel apporte continuellement aux compilateurs x86 pour améliorer les performances de ses Pentium 4 !
D'après AMD, la taille du cœur des Hammer ne devrait être que peu augmentée par l'ajout de ces nouvelles fonctionnalités, ce qui est crédible. C'est important car cela implique que le coût de production des processeurs ne fera pas un bon inconsidéré du seul fait de l'addition de fonctions sans intérêt à court terme pour la plupart des clients potentiels. AMD devrait donc être en mesure de continuer à proposer à ses clients des prix attractifs sans faire péricliter l'entreprise.
D'autre part, AMD revendique dans ce document qu'aucune réduction des fréquences atteignables n'est à craindre suite à l'incorporation d'x86-64, ce qui est tout simplement impossible. Je vois plusieurs explications possibles à cette prétention infondée :
- l'incompétence des personnels techniques
- le mensonge délibéré du service de relations publiques
- l'aveuglement dû à l'enthousiasme suscité par le projet Hammer
- on rase gratis chez AMD
Peut-être la réalité est-elle un mélange des différentes raisons ? La vérité serait-elle ailleurs ?
Globalement, il est tout de même raisonnable de penser que les extensions x86-64 ne seront pas très significatives pour le lancement des premiers processeurs de la génération Hammer. Cela ne devrait constituer ni un handicap sérieux ni un avantage décisif.
Extensions
L'architecture x86-64 est la proposition d'AMD d'extension d'x86 à l'adressage 64 bits. Contrairement à IA-64 (présentée dans ce dossier), avancée par Intel et Hewlett-Packard, x86-64 ne prévoit pas de remise en cause complète de l'architecture IA-32. Au contraire, la plupart des évolutions sont très réduites.

Pour rappel, x86-64 enrichit l'architecture IA-32, telle qu'elle est utilisée notamment par les Athlon, des fonctions suivantes :
- modes d'adressage 64 bits
- extension des registres entiers et du compteur de programme de 32 à 64 bits
- ajout de 8 registres entiers (R8 à R15) aux 8 existants
- ajout de 8 registres SSE (XMM8 à XMM15) aux 8 existants
La disponibilité de modes d'adressage 64 bits, associée aux registres entiers étendus, permet d'utiliser une grande quantité de mémoire. Un processus s'exécutant en "Long Mode" peut accéder directement à un espace d'adressage virtuel de 16 exaoctets, soit plus de 17 milliards de gigaoctets. Qui plus est, cet accès ne nécessite aucune segmentation ou autre artifice compliquant singulièrement la tâche du programmeur ! Pour accéder à cet espace de mémoire virtuelle, l'unité de pagination est modifiée pour prendre en compte ce surcroît de taille des adresses. Bien entendu, seul un système d'exploitation spécifiquement adapté à x86-64 pourra gérer les modes d'adressage 64 bits. Avec son aide, des applications 32 bits non modifiées pourront fonctionner convenablement en cohabitation pacifique avec les applications 64 bits, sans cependant pouvoir accéder directement à plus de 4 Go.
L'ajout de registres accessibles au programmeur est principalement destiné à faciliter la tâche d'optimisation des compilateurs. Il permet de réduire le recours à la mémoire pour stocker des paramètres de sous-programmes ou des valeurs temporaires. De plus, si le code source s'y prête, un plus grand nombre d'instructions pourront s'exécuter simultanément, faisant ainsi un meilleur usage des ressources de traitement disponibles et cachant mieux la latence de la mémoire.
Calcul en virgule flottante
Bien que ce ne soit pas réellement une partie de l'architecture x86-64, il faut noter qu'AMD inclura dans ses futurs processeurs le support complet des instructions SSE2, telles qu'elles ont été définies par Intel pour le Pentium 4. Pour rappel, le principal apport de SSE2 par rapport à SSE concerne le traitement simultané de nombres en double précision (64 bits chacun) contenus dans des registres XMM (128 bits chacun, soit deux nombres par registre). Dans SSE, cette possibilité était limitée aux nombres en virgule flottante en simple précision (32 bits chacun). Accessoirement, des traitements sur les entiers analogues à ceux possibles avec l'unité MMX sont possibles en utilisant les registres XMM au lieu des registres flottants de l'unité x87. Au passage, les nouvelles instructions SSE2 portant sur les entiers bénéficient du traitement de 128 bits simultanément au lieu de seulement 64 bits dans le cas des instructions MMX.
En 2000, AMD annonçait l'arrivée d'une toute nouvelle architecture de traitement des programmes en virgule flottante baptisée "Technical Floating Point". L'objectif était de doter la nouvelle génération d'une unité de calcul en virgule flottante moderne pour remplacer l'antique unité x87 dont les performances sont handicapées par son grand âge. En particulier, un grand nombre de registres adressables directement devait faciliter le travail du compilateur, de même qu'un jeu d'instructions ternaires (le résultat d'un calcul sur deux registres peut être stocké dans un troisième registre distinct). Cependant, il semble qu'AMD ait préféré se rallier à Intel. Cela me semble un bon choix du point de vue de l'utilisateur final. En effet, les programmeurs n'auront qu'une seule cible à viser pour l'optimisation de leurs programmes en virgule flottante. Ils n'auront donc aucune excuse pour fournir des logiciels qui seraient rapides sur les processeurs Intel et lents sur ceux d'AMD, ou vice versa.
Impact sur la génération Hammer
La première implémentation commerciale d'x86-64 sera mise en œuvre dans les processeurs de la génération Hammer. Cependant, il est peu probable que cette fonctionnalité devienne rapidement un facteur important de différenciation par rapport aux processeurs concurrents. L'usage des modes 64 bits des Hammer devrait être faible, notamment par manque de présence d'AMD sur les marchés qui peuvent en tirer un avantage : les serveurs et les stations de travail de haut de gamme. Il est même possible qu'x86-64 ne parvienne jamais à devenir une fonctionnalité décisive, comme par exemple 3DNow! qui a été supplanté par MMX et SSE. Même AMD minimise l'intérêt des extensions x86-64 dans les annonces de ses processeurs Hammer.
Par contre, la généralisation des fonctionnalités SSE2 sur les processeurs de la gamme Hammer devrait permettre à AMD de se hisser au niveau de performances du Pentium 4 en calcul en virgule flottante, y compris dans les tests SPECfp en double précision. Ironiquement, les utilisateurs des processeurs AMD pourraient bénéficier des améliorations qu'Intel apporte continuellement aux compilateurs x86 pour améliorer les performances de ses Pentium 4 !
D'après AMD, la taille du cœur des Hammer ne devrait être que peu augmentée par l'ajout de ces nouvelles fonctionnalités, ce qui est crédible. C'est important car cela implique que le coût de production des processeurs ne fera pas un bon inconsidéré du seul fait de l'addition de fonctions sans intérêt à court terme pour la plupart des clients potentiels. AMD devrait donc être en mesure de continuer à proposer à ses clients des prix attractifs sans faire péricliter l'entreprise.
D'autre part, AMD revendique dans ce document qu'aucune réduction des fréquences atteignables n'est à craindre suite à l'incorporation d'x86-64, ce qui est tout simplement impossible. Je vois plusieurs explications possibles à cette prétention infondée :
- l'incompétence des personnels techniques
- le mensonge délibéré du service de relations publiques
- l'aveuglement dû à l'enthousiasme suscité par le projet Hammer
- on rase gratis chez AMD
Peut-être la réalité est-elle un mélange des différentes raisons ? La vérité serait-elle ailleurs ?
Globalement, il est tout de même raisonnable de penser que les extensions x86-64 ne seront pas très significatives pour le lancement des premiers processeurs de la génération Hammer. Cela ne devrait constituer ni un handicap sérieux ni un avantage décisif.
Sommaire





