retour à l'accueil dernière actualité articles interviews qcm dictionnaires bibliothèque forums inscription membre profile recherche sauvegardes contacts aides
entete 0titre de la page
menu du haut




index

ligne



Half-life 2 et les problèmes de FSAA
matière Par Tanguy Fautré le 23 Septembre 2003impressionlexiquerecherchesauvegarde

En juillet 2003 est annoncé un méchant scoop. Les cartes NVidia ne pourraient pas faire de FSAA correctement sous Half-Life 2 ! En fait il s'agit surtout d'un mauvais scoop. Ce problème n'était pas spécifique à NVidia, et pour finir il a été résolu aux dires de Valve, la société qui développe Half-Life 2. Par contre il peut être intéressant de revenir sur l'aspect technique du problème qu'a rencontré Valve et c'est ce que nous allons faire dans ce mini-article.

Le FSAA utilisé actuellement sur les cartes graphiques est de type multisampling (ou MSAA), c'est-à-dire qu'il effectue un anti-aliasing sur les bords des polygones uniquement, contrairement au super-sampling qui l'effectue sur la totalité de la scène. Le premier étant nettement plus rapide que le second d'où la raison de son utilisation actuellement.

Le principe du MSAA est de prendre des échantillons qui gravitent autour du point à définir pour générer l'anti-aliasing. Le point dont il faut définir la couleur de même que les échantillons proviennent d'une texture. Les coordonnées des points d'une texture 2D allant toujours de (0,0) à (1,1) avec toutes les valeurs intermédiaires. Le problème est que si la texture tombe pile-poil sur un polygone, c'est-à-dire que les coordonnées pointent vers le bord de la texture, certains échantillons auront des coordonnées en dehors de la texture. En temps normal avoir des coordonnées de texture en dehors de cet intervalle [0 , 1] ne pose pas de réel problème et on utilise une fonction f(x,y) -> (x',y') tel que x' et y' se retrouvent toujours dans l'intervalle [0 , 1]. Ce type de fonction effectue ce qu'on nomme un 'wrapping' de coordonnées. Par exemple en utilisant la fonction modulo 1 on a un effet de répétition de la texture (en OpenGL -> GL_REPEAT), on voit souvent ça dans les jeux. Il existe évidemment d'autres fonctions de wrapping f(x,y). f(x,y) -> (x',y').

Donc à priori tout va bien, sauf que pour des raisons d'optimisation les développeurs compactent plusieurs textures en une seule, ce qui est le cas des lightmaps. Pourquoi font-ils ça et où est le problème ? Une carte 3D applique une même texture tant qu'on ne lui dit pas de faire autrement (ici je fais simple, je suppose que la carte 3D ne sait pas faire de multitexturing). Chaque fois que l'on veut utiliser une autre texture il faut dire à la carte 3D : 'maintenant j'utilise cette texture-ci'. Cette opération est malheureusement assez coûteuse et on essaie de l'éviter tant que possible. Dans le cas des lightmaps on a souvent un très grand nombre de petites textures. L'idée est d'empaqueter plusieurs de ces petites textures en quelques grosses textures, par exemple en les regroupant par pièce dans le cas d'un jeu 3D dans une maison, pour augmenter les performances. On va donc avoir des images textures qui sont elles-mêmes le résultat de l'agglutinement de plusieurs petites images. La plupart des moteurs 3D fonctionnent de cette manière (ex: Quake(s), Unreal, etc ...).

Le gros problème vient du fait que la fonction f(x,y) qui est censée s'assurer que les coordonnées de textures ne pointent jamais hors de la texture, ne peut pas fonctionner correctement avec un agglutinement de petites textures. Puisque pour la carte 3D qui ne voit qu'une seule texture les coordonnées seront toujours valides, mais pour l'application les coordonnées varieront entre plusieurs textures, et cela donnera des anomalies visuelles. Voici un petit logiciel fait à l'occasion et montrant ce type de problèmes en MSAA (infos et téléchargement en fin d'article).

Il faut bien se rendre compte que le problème dont il est question est un léger problème de qualité et non quelque chose qui va vous empêcher d'admirer un jeu et encore moins vous empêcher d'y jouer. Le programme montre ce problème et j'ai fait un zoom comparant l'affichage avec les options nearest / repeat (figure 1) et nearest / clamp to edge (figure 2). On voit bien que sur la figure 1, il y a du blanc là où il ne devrait y avoir qu'un dégradé de bleu et du bleu là où il ne devrait y avoir qu'un dégradé de blanc.

En conclusion, comme vous pouvez vous en rendre compte, ce n'est pas un problème critique et dans un jeu les bords des polygones texturés sembleront plus ou moins entourés d'un fil de couleur plus clair ou plus sombre. Toutefois quand je dis critique cela dépend du point de vue où on se place. Dans le cas de Valve qui a apporté un grand soin du détail à l'ensemble de son jeu, ce détail a pu leur paraître important. L'est-il dans l'absolu ? Oui, parce que l'avenir des jeux passe impérativement par des méthodes de FSAA et que la qualité graphique est un problème grandissant pour les concepteurs.

Annexe :
L'application utilise une texture damier de 4 cases sur 4. Vous pouvez lire en haut à gauche les informations suivantes :

Filter : Nearest / linear : donne le filtrage en cours d'utilisation.
Wrap mode : Donne la fonction f(x,y) utilisée telle que f(x,y) = (g(x),g(y)). GL_REPEAT -> g(x) ~= x modulo 1 (~= : environ égal) et GL_clamp_to_edge -> g(x) = x si x est dans l'intervalle [0 , 1], x = 0 si x < 0 et x = 1 si x > 1.

Le fichier à télécharger est au format .zip. Vous y trouverez un fichier .txt qui vous donnera les différentes commandes pour passer d'un mode à un autre. Ce programme est une application OpenGL et vous devez activer le mode FSAA (x4 ou plus) dans vos drivers. Attention, le programme peut mettre plusieurs secondes à démarrer.


index




Les formats de nombres en informatique
matière Par JF Maquiné le 18 Septembre 2003impressionlexiquerecherchesauvegarde

Un microprocesseur, que ce soit celui de votre ordinateur ou de votre carte graphique, sait calculer rapidement. Maintenant qui dit rapide ne dit pas forcément souple et intelligent. Ainsi pour nous, calculer 1*1 c'est très facile, par contre 1245 * 102030445 l'est beaucoup moins. Pourtant un ordinateur calculera ces deux opérations à la même vitesse. En fait un processeur ne sait pas calculer en fonction du contexte, il n'est pas capable de déterminer si telle opération a besoin de précision ou non. Prendre des décisions de ce type est assez simple pour nous mais extrêmement compliqué pour un processeur. En conséquence pour éviter qu'il ait à prendre des décisions de ce genre, les processeurs calculent toujours avec la précision la plus grande. Evidemment il ne s'agit pas d'une précision infinie, en fait celle-ci bien qu'assez faible est suffisante pour les besoins standards et est déterminée (figée) lors de la conception du processeur.

La précision de calcul en processeur varie en fonction de deux choses, le nombre de bits utilisés et le format des nombres c'est-à-dire la manière dont sont utilisés les bits pour produire un nombre. Il existe trois grands formats de nombres en informatique c'est-à-dire de manière de gérer les bits. Les entiers, les flottants et les entiers fixes. A cela s'ajoute une distinction sur le signe des nombres qui fera l'objet d'un paragraphe particulier. Dans l'immédiat, examinons nos trois formats de nombres dans le cas où il ne s'agit que de nombres positifs.

Format des nombres entier
Quand on dit qu'un nombre entier est composé de 8 bits, cela signifie qu'il gère des nombres allant de 0 à 255. S'il est composé de 16 bits qu'il gère les nombres allant de 0 à 65535 soit 65536 valeurs. Pour calculer cela on utilise la formule :

2n (n = nombre de bits de l'entier)

Dans les microprocesseurs actuels (Athlon, Pentium 4, ...) les entiers les plus utilisés sont composés de 32 bits et permettent donc de travailler avec des chiffres allant de 0 à 232 (mais on peut utiliser des entiers plus grands si nécessaire par le biais de l'unité de calcul vectoriel SSE, mais ce n'est pas le sujet de l'article).

Dans le schéma ci-dessus, chaque case correspond à 1 bit et chaque bit, en fonction de sa position, a une puissance de deux. Les cases sont numérotées de droite à gauche de 0 à 31. Par exemple la case numéro 3 vaut 23 soit 2*2*2 = 8. Par définition 20 vaut 1. Cette représentation avec des 1 et des 0 est appelée représentation binaire.

Pour connaitre la valeur de 1007 en représentation binaire, on va additionner toutes les valeurs de type 2p. On commence toujours par la plus grande. Ici c'est 512 soit 29. On ne prend pas 1024 car c'est plus grand que 1007. On additionne ensuite 256, puis 128 ... tant que la somme des valeurs qu'on additionne est inférieure à 1007. quand c'est égal (ça l'est forcément à un moment) on a trouvé la représentation binaire de 1007 qui vaut : 111101111. Les nombres entiers binaires se lisent dans le même sens que les nombres décimaux de droite à gauche.

Format des nombres fixes
C'est un format de nombres qu'on ne rencontre pas dans nos microprocesseurs, mais qui est parfois utilisé dans des processeurs spécialisés comme les processeurs 3D. Leur particularité est de pouvoir associer valeur entière et valeur décimale. La taille de la partie entière est déterminée par le nombre de bits qu'on lui affecte. On parle de rang. Un format fixe de rang 0 n'a pas de partie entière et correspond à des nombres décimaux allant de 0 à 1. Un format fixe de rang 1 correspond à des nombres allant de 0 à 2, un format de rang 2 de nombres allant de 0 à 4, pour le rang 3 de 0 à 8, etc ...

Le rang d'un nombre fixe correspond non seulement au nombre de bits affectés à la partie entière, mais aussi à la position de la virgule. Cette position est figée ou fixe. C'est de là que vient le terme de format fixe. Nous verrons dans le prochain paragraphe un format de nombres dont la position de la virgule n'est pas figée, mais mobile. On dit qu'elle est flottante.

Quel est l'intérêt du format fixe ? Quand on travaille avec de petits nombres entiers (de 0 à 255 par exemple, comme la composante d'une couleur) et qu'on effectue des divisions on peut avoir une perte importante de précision. Par exemple 254 / 17 = 14, au lieu de 14,9411 ..., soit environ 7% de perte de précision. Cette perte a lieu même si vous utilisez un format entier de 32 bits car un petit nombre entier qu'il soit dans un format 8 bits ou 128 bits aura une perte de précison équivalente. Si on prend un format fixe de 12 bits de rang 8 (8 bits pour la partie entière et 4 bits pour la partie décimale) la division de 254 / 17 = 14,9375 soit une perte de précision d'environ 0,2 %. C'est nettement mieux ! Evidemment vous vous demandez comment j'ai calculé la précision de la partie décimale ? Nous allons le voir de suite, mais avant sachez qu'il y a d'autres cas où le format fixe est intéressant. Par exemple le calcul des fonctions sinus, cosinus, tangente, racine carrée, qui fournissent souvent de petites valeurs entières, mais dont la partie décimale est importante.

Comment calcule t'on la partie décimale d'un nombre binaire ? 0,1 en décimale ca vaut 1 /10. 0,1 en binaire vaut 1 / 2. soit 0,5. Mathématiquement 1/2 vaut 2-1. On a vu que les nombre entier en binaire s'écrivent sous la forme 2n, les nombres décimaux en binaire s'écrivent sous la forme 2-n. Voici un petit tableau :

Comment calcule-t-on 0,9411 en binaire ? De la même manière que lorsqu'il s'agit de nombres entiers. On commence par la plus grande valeur de type 2-n, soit 2-1 qui vaut 0,5 qu'on additionne ensuite à 2-2 soit 0,250 (la somme vaut 0,750). On continue ainsi avec 2-3, 2-1 soit jusqu'à ce qu'on trouve la valeur exacte soit qu'on ait rempli tous les bits du nombre. Dans notre exemple on utilisait un nombre de format fixe de rang 8 avec 12 bits de précison soit 8 pour la partie entière et 4 pour la partie décimale. Donc le 14,9375 correspond pour la partie entière à 8 + 4 + 2 et le 0,9375 de la partie décimale à 0,5 + 0,25 + 0,125 + 0,0625.

Dans les processeurs 3D, les calculs sont faits en format fixe pour les pixels shaders 1.1 à 1.4 et en format flottant pour les pixels shaders 2.0. Format que nous allons voir à présent.

Note : Selon la définition du rang que je donne il correspond à la position de la virgule dans le format du nombre. Toutefois certains donnent au rang une autre définition. Il correspond dans ce cas à l'intervalle de valeur que peut gérer la partie entière. Par exemple pour eux un format de rang 8 correspond à un format fixe dont les valeurs entières s'étalent de 0 à 8. Ce n'est pas idiot, mais je ne suis pas d'accord avec cette manière de voir dans la mesure où elle ne renseigne pas directement sur la position de la virgule. Dans tous les cas, le principal réside dans la notion du format fixe. La notion de rang peut être arbitraire sans que cela ne change la définition de nombres au format fixe.


index




Les formats de nombres en informatique (suite et fin)
matière Par JF Maquiné le 18 Septembre 2003impressionlexiquerecherchesauvegarde

Comme nous l'avons vu, le format fixe est très intéressant pour éviter les pertes importantes de précision que peut avoir le format entier dans certaines circonstances. Toutefois cela implique d'avoir une idée du type de nombres. Il est nécessaire que la taille de la partie entière corresponde à l'intervalle des nombres qu'on manipule. C'est faisable, mais pas toujours. Il arrive selon le type de calculs qu'on ait absolument aucune idée du type des nombres qui seront utilisés et calculés. Dans cette situation, le format fixe n'est d'aucune utilité. La solution se nomme nombre flottant et c'est celle que nous allons voir à présent.

Format des nombres flottants
Dans le format fixe, la position de la virgule est figée, dans le format flottant elle est variable, d'où le nom de flottant. De fait le format flottant s'adapte aussi bien aux nombres ayant une petite valeur entière qu'une grande, bref à tout type de nombres et fournit en permanence la précision la plus grande en fonction du nombre de bits utilisés pour décrire le nombre. Super vous allez me dire, pourquoi n'utilise-t-on pas systématiquement le format flottant ? Parce que pour gérer une position de virgule flottante, on doit réserver un partie des bits du nombre à la valeur de la position de la virgule. Comme le montre le graphique ci-dessous un nombre flottant est composé de deux parties. La première est appelée mantisse et contient le nombre à proprement parler, la seconde la valeur de la position de la virgule ou exposant.



L'intérêt des nombres flottants ne s'arrête pas au fait que la virgule peut avoir une position variable, ils permettent aussi de représenter des très grands ou très petits nombres. Ceci est possible grâce à la gestion de l'exposant. Ainsi si vous souhaitez multiplier la masse de la Terre par la constante de Planck vous pourrez calculer : 5,98*1024 * 6,63*10-34. Cela peut s'écrire aussi 5,98E24 * 6,63E-34. La mantisse contient la partie à gauche de E et l'exposant la partie à droite de E. Bien sûr il y a une perte de précision, mais au moins le calcul est possible et donne une première approximation, souvent suffisante.

La taille de la mantisse et de l'exposant dépend du nombre total de bits utilisés par le nombre flottant. Voici un résumé :

Flottant 32 bits : 24 bits pour la mantisse, 8 bits pour l'exposant
Flottant 64 bits : 52 bits pour la mantisse, 12 bits pour l'exposant
Flottant 80 bits : 64 bits pour la mantisse, 16 bits pour l'exposant



Le signe des nombres
En informatique toute information qui doit être stockée a un coût en termes de place mémoire. La gestion du signe d'un nombre n'y échappe pas et il en coutera 1 bit. Ainsi un entier 32 bits sera composé de 1 bit de signe, et 31 bits pour le nombre, il en va de même pour les formats de nombres fixes et flottants. La conséquence c'est que la gestion du signe prend 1 bit sur la représentation du nombre et donc sa précision. Pour palier à cela en partie on distingue en informatique les nombres strictement positifs nommés non-signés (ou sans signe) et les nombres pouvant être positifs ou négatifs nommés signés (ou avec signe). La raison de cette dissociation est due au fait que si vous savez que votre nombre sera toujours positif il ne sert à rien d'utiliser un bit de signe. Toutefois cette distinction s'applique aux nombres entiers et fixes, mais pas aux nombres flottants.

Conclusion :
Comme vous avez pu le constater, il n'y a pas beaucoup de calculs dans ce mini-article. Le but n'était pas là, mais plutôt d'expliquer les concepts qui se cachent derrière les différents formats. De même je n'ai pas fait d'approfondissement des nombres flottants parce que ce n'était pas le but. Pourtant sur les flottants il y aurait beaucoup de choses à dire, comme la manière dont ils sont gérés par les unité de calculs vectoriels (le format que je vous ai montré est celui utilisé par la FPU), de même décrire les normes IEEE à ce niveau pourrait apporter un plus, mais bon si quelqu'un veut s'en charger, qu'il se fasse connaître :).

Liens utiles :


index




Comprendre les disques durs : les solutions au superparamagnétisme
matière Par JF Maquiné le 16 Septembre 2003impressionlexiquerecherchesauvegarde

Si les capacités de stockage des disques durs ont connu un bond prodigieux entre 1996 et 2002 (2 Go contre 200 Go pour les disques durs IDE), on constate que cette progression a déjà commencé à connaître un ralentissement et pourrait se voir stoppé si un certain nombre de problèmes techniques n'étaient pas résolus. Toutefois en lisant le communiqué de presse du CNRS du 19 juin 2003, il semble que des équipes de chercheurs européens dont le laboratoire Louis Nèel de Grenoble aient trouvé une solution au problème le plus délicat à savoir le superparamagnétisme. Quels sont les problèmes que rencontrent les technologies d'aujourd 'hui et quelle sont les solutions que tentent d'apporter les chercheurs tels seront les thèmes de ce mini-article.

Conception d'un disque dur
Un disque dur est un boitier contenant des plateaux en rotation. Ces plateaux sont composés de disques rigides et d'un revêtement magnétique. Ce revêtement très fin appelé film est composé de particules ferromagnétiques. Chacune de ces particules va permettre de stocker une information binaire ou bit (0 - 1).

Pourquoi utilise-t-on des particules ferromagnétiques et pas d'autres ? On désigne par ferromagnétisme des matériaux ayant la propriété de s'aimenter en présence d'un champ magnétique et de conserver cette aimentation. Ce sont les têtes de lecture / écriture des disques durs qui vont aimenter ces particules, et le sens de leur aimentation déterminera s'il s'agit d'un 0 ou d'un 1.

De quoi est fait le revêtement ? Les revêtements, depuis une dizaine d'années, contiennent généralement du Cobalt (Co). Il existe de nombreuses variantes mais les plus utilisées associent du Cobalt et du Chrome (CoCr). C'est d'ailleurs la découverte de revêtements à base de Cobalt qui est à l'origine de la spectaculaire progression de capacité de stockage de ces 7 dernières années. De 1991 à 1996, la progression a été plus modeste (facteur 4 à 8).

Cours express sur le moment magnétique
Les sujets abordés dans ce mini-article sont de haut niveau, j'ai réussi à extraire toutes les définitions trop théoriques, pour vous exposer les concepts de base. Toutes, sauf une et pour cause, sans elle il n'y a plus d'explication possible. Toutefois elle n'est pas si terrible que ça et sera par la suite représentée graphiquement par une flèche, ce qui est cool pour suivre des explications :).

Le moment magnétique correspond au niveau d'aimentation d'un atome, d'une molécule ou d'une particule (ensemble d'atomes ou de molécules). C'est un vecteur représenté par une flèche. Le sens de la flèche indique le sens de son aimentation, et sa taille la grandeur de cette aimentation. Dans tout le reste de l'article seul son sens nous intéressera.

Position du problème : l'effet superparamagnétique
Définition : Le superparamagnétisme correspond au passage d'un état ordonné d'un matériau ferromagnétique à un état désordonné du aux perturbations de l'énergie thermique.

Explication : Une particule (ou matériau) ferromagnétique a les propriétés suivantes :

  • Une particule ferromagnétique devient aimentée quand on la soumet à un champ magnétique (généré par les têtes de lecture/écriture) et conserve cet état (très important pour que les disques durs conservent les informations).

  • Une particule ferromagnétique est composée d'atomes. Une fois aimentés tous les atomes de cette particule ont un moment magnétique de même sens. Le fait qu'ils aient le même sens est une propriété des matériaux ferromagnétiques. On dit qu'il s'agit d'un état ordonné de la matière.

  • La 'somme' des moments magnétiques des atomes définit le moment magnétique total de la particule. Ce moment ne peut avoir que deux sens (bas en haut ou haut en bas) et définit soit un 0 ou un 1.

  • Le fait que tous les atomes aient un moment magnétique de même sens est du à des échanges d'énergie entre les atomes qui les maintiennent ensemble. Plus ils sont nombreux, plus leur cohésion est forte.

Comment peut-on rompre l'ordonnancement des atomes d'un matériau ferromagnétique et donc générer l'effet superparamagnétique ?

  • Tout matériau est soumis à une agitation thermique donnée à une température donnée. Au delà d'une certaine température (dite température de Curie) les matériaux ferromagnétiques perdent leur propriété et les atomes qui les composent ont des moments magnétiques de sens aléatoire.

  • Toutefois si la quantité d'atomes que contient la particule ferromagnétique descend en dessous d'un certain seuil, l'ordonnancement des moments magnétiques des atomes peut être brisé à des températures plus faibles que la température de Curie. Cet effet est nommé superparamagnétisme.

  • Lorsque l'effet superparamagnétique se produit les moments magnétiques des atomes deviennent aléatoires et donc la somme de ces moments donne un moment magnétique de sens aléatoire et les têtes de lecture / écriture ne savent plus s'il s'agit d'un 1 ou d'un 0.

En résumé, l'effet superparamagnétique correspond au moment où l'apport d'énergie thermique devient supérieur à l'énergie de cohésion des atomes qui composent les particules ferromagnétiques et qui leur donnent les propriétés permettant de les utiliser dans nos disques durs.


index




Comprendre les disques durs : les solutions au superparamagnétisme (suite)
matière Par JF Maquiné le 16 Septembre 2003impressionlexiquerecherchesauvegarde

Nous allons dans cette partie voir trois solutions permettant de dépasser ou de contourner l'effet superparamagnétique pour les années à venir. Il s'agit de trois approches différentes, mais la première que nous allons examiner peut être associée à d'autres méthodes. Avant de commencer, voici quelques précisions qui vous seront utiles. Les particules ferromagnétiques qui composent le revêtement des plateaux des disques durs ont la forme d'un galet aplati dont les dimensions sont d'environ quelques dizaines de nanomètres (10). On estime aujourd'hui qu'avec les technologies actuelles l'effet superparamagnétique se produira quand les galets arriveront à quelques nanomètres. Les chiffres que je donne sont des ordres de grandeur, car les dimensions précises ne sont pas connues. D'une part parce que les rapports scientifiques sur le sujet ne sont pas nombreux et pas forcément à jour, d'autre part ces chiffres changent tous les 12 à 18 mois suite aux recherches menées tambour battant par les laboratoires. En fait, les recherches dans ce domaine ne s'appliquent pas seulement aux disques durs, mais aussi aux bandes magnétiques, aux mémoires magnétiques, ... Bref il s'agit d'un marché important encore en pleine croissance.

Optimiser l'organisation des particules en fonction de leur forme
Les particules ferromagnétiques qui composent le revêtement des plateaux des disques durs sont placées de manière horizontale. Il en a toujours été ainsi depuis que les disques durs existent. La principale raison est qu'en étant horizontale elles présentent leur face la plus grande aux têtes de lecture/écriture. Si elles étaient en position verticale, la face présentée serait de 4 à 8 fois plus petite exigeant un gain de précison de lecture du même ordre. Une autre raison existe, à savoir qu'en étant horizontale l'axe du moment magnétique est perpendiculaire au plateau et orienté vers les têtes de lecture. Or ce que lisent les têtes de lecture c'est le moment magnétique. En positionnant les particules verticalement, l'axe du moment magnétique devient horizontal et se trouve donc dans les revêtements ce qui pose de sérieux problèmes aux têtes de lecture pour détecter le sens du moment magnétique et donc définir s'il s'agit d'un 1 ou d'un 0.

Pourtant c'est vers cette solution qu'on va s'orienter d'ici 2 à 3 ans, et sur laquelle travaillent les chercheurs depuis presque 10 ans. Donc avant 2010 tous les disques durs auront des particules du revêtement de leurs plateaux positionnées de manière verticale. L'intérêt de cette méthode est de permettre d'augmenter la densité de particules sans devoir diminuer leur taille, du moins dans un premier temps. C'est une solution qui permet de repousser l'apparition de l'effet superparamagnétique, mais en aucun cas de le contrer. Les gains qu'on peut attendre sont de l'ordre d'un facteur 4. D'un point de vue de l'utilisateur le seul reproche qu'on peut faire à cette méthode est de n'augmenter que la densité du nombre de pistes et non de particules par piste. Or seulement cette dernière permet d'augmenter les performances en plus de la densité.

Contrer le paramagnétisme : Les matrices antiferromagnétiques
C'est une méthode qui a été récemment mise au point par des chercheurs européens dont le laboratoire Louis Néel de Grenoble. L'antiferromagnétisme comme le ferromagnétisme est un type de magnétisme de la matière. Tous deux sont des états ordonnés des moments magnétiques des atomes. Comme le ferromagnétisme, les matériaux antiferromagnétique peuvent avoir un état désordonné au dessus d'une certaine température dite point de Néel (prix Nobel de physique 1970). La différence se situe dans le fait que l'antiferromagnétisme implique que les atomes s'organisent en deux sous-réseaux ayant chacun des moments magnétiques opposés. La résultante de ces moments étant nulle, on ne peut pas l'utiliser pour détecter une aimentation.

La découverte, c'est que si on pose une particule ferromagnétique sur une matrice antiferromagnétique celle-ci provoque une modification de l'orientation des moments magnétiques de chacun des sous-réseaux. Leur résultante n'est plus nulle et génère une force qui va obliger les particules ferromagnétiques a avec un moment magnétique parallèle au moment résultat des deux sous-réseaux, force qui va contrer jusqu'à un certain point l'effet superparamagnétique.

Cette technique est le résultat d'une recherche fondamentale sur les propriétés des matériaux magnétiques. Sa mise en application est encore confrontée à des problèmes de précision dans le dépôt et la conception du revêtement. Toutefois cette solution est compatible avec l'organisation verticale des particules et pourrait permettre à terme un facteur d'ordre 5 à 10.


index




Comprendre les disques durs : les solutions au superparamagnétisme (fin)
matière Par JF Maquiné le 16 Septembre 2003impressionlexiquerecherchesauvegarde

Dans cette dernière partie, nous allons voir une approche qui est déjà utilisée par IBM et d'autres fabricants de disques durs, à savoir l'antiferromagnétisme couplé (AFC) aussi appelé : Pixie Dust. J'ai déjà eu l'occasion d'écrire un mini-article sur le sujet, mais je n'avais pas à l'époque les connaissances dont je dispose aujourd'hui et je vais donc en profiter pour compléter mon explication.

Contourner le superparamagnétisme : l'antiferromagnétisme couplé
Nous avons vu dans la partie précédente que la particularité de l'antiferromagnétisme est d'être naturellement constitué de deux sous-réseaux d'atomes (imbriqués) et que leur moment magnétique s'annule car ils sont antiparallèles. IBM reprend cette propriété physique, mais non pas avec un matériau qui le génère naturellement comme l'oxyde de fer (FeO) mais en le fabricant artificiellement. Pour ce faire, il utilise deux couches ferromagnétiques séparées par une couche amagnétique (composée de ruthenium) très fine (3 atomes d'épaisseur). La communication entre les deux couches peut se faire mais les particules ne peuvent pas se joindre. Elles ont des réactions indépendantes mais couplées. Couplé signifie que quand une des particules est orientée dans un sens, l'autre particule se place dans le sens opposé. C'est un principe de physique connu depuis longtemps. Si on prend deux aimants présentant chacun une face nord et sud, les deux faces nord ou sud se repoussent. Par contre si on place une face nord d'un aimant à la face sud de l'autre elles s'attirent. Une particule ferromagnétique étant équivalente à un aimant permament avec une face nord et sud, les particules ferromagnétiques auront nécessairement des orientations opposées.

En résumé, les revêtements contruits ainsi sont constitués de trois couches. La première de particules ferromagnétiques dont le moment magnétique pointe vers le haut. La seconde de particules ferromagnétiques dont le moment magnétique pointe vers le bas. La troisième couche d'un matériau amagnétique séparant les deux couches de particules. On est donc bien en présence de deux sous-réseaux ayant des moments magnétiques opposés comme dans un matériau antiferromagnétique, par contre comme il s'agit de deux particules agissant comme des aimants la direction de ces moments est couplée, d'où le nom d'antiferromagnétique couplé. De part leur organisation ces deux particules se maintiennent l'une et l'autre dans un état ordonné, du moins jusqu'a une certaine dimension ensuite l'effet superparamagnétique va reprendre le dessus.


Comment lit-on les informations d'un revêtement AFC ?
De la même manière que pour les autres revêtements, on lit le moment magnétique (son sens). La tête de lecture se positionne au-dessus d'une particule, émet un faible champ magnétique. La réaction de champ magnétique avec le moment magnétique de la particule est analysée par la tête de lecture. Oui, mais dans les revêtements AFC il y a deux particules ! Ce n'est pas important ce qui l'est c'est le moment magnétique. IBM s'arrange pour que les particules de la première couche ferromagnétique et la seconde aient des particules de tailles différentes donc des moments magnétiques de valeurs différentes (leur sens reste antiparallèle). C'est le moment magnétique résultant des particules de chaque couche qui est analysé. De fait ce n'est plus la taille des particules qui compte mais la différence de leur moment magnétique. Ca c'est en théorie. En pratique la taille des particules ne peut pas diminuer indéfiniment ne serait-ce que pour des problèmes de précision de fabrication. IBM donne pour la technologie AFC (pixie dust pour les intimes) une limite de 100 Gigabits par inch carré, soit environ un plateau de disque dur ayant des faces de 60 Go (120 Go pour un plateau). Actuellement nous en sommes à 80 Go par plateau.

Comment écrit-on les informations d'un revêtement AFC ?
La tête de lecture/écriture produit un champ plus puissant que pour la lecture qui va inverser le moment magnétique de la particule de la première couche. C'est d'ailleurs cette particule qui est la plus grosse. La particule de la seconde couche ferromagnétique va s'aligner en sens inverse à cause du principe d'action et de réaction des aimants. C'est ce que vous pouvez voir sur l'animation présentée au format Quick Time.

Conclusion
Malgré le temps que j'ai passé à essayer de simplifier toutes les explications données dans ce long mini-article, j'ai parfaitement conscience du niveau important d'attention qu'il requiert. Toutefois si j'ai passé autant de temps sur ces textes c'est parce que je suis convaincu de la nécessité qu'il y ait à disposition du grand public au moins un document expliquant en détail les théories des revêtements des plateaux des disques durs, sans utiliser un grand nombre de termes scientifiques et sans aucune formule. Tel est l'objectif de ces textes et j'espère qu'il est atteint . Si vous avez des remarques constructives ou des questions, n'hésitez pas à m'en faire part sur les forums.

Remerciements

Je tiens à remercier Dominique Givord du laboratoire Louis Néel (CNRS) de Grenoble pour avoir eu la gentillesse de répondre à mes questions.

Liens interessants :


index




Liaisons chimiques - 2 : le modèle de Lewis
matière Par JF Maquiné le 10 Septembre 2003impressionlexiquerecherchesauvegarde

Les modèles de liaison en chimie ont pour but de prévoir quand une liaison entre un atome ou une molécule peut avoir lieu avec un autre atome ou molécule. Un des plus anciens modèles est celui de la liaison ionique, liaison entre deux ions (atome ou molécule ayant un déficit ou un excédent d'électrons). Ce modèle est basé sur le principe électrostatique à savoir une charge électrique négative et positive s'attire. Donc quand un ion positif rencontre un ion négatif, ils se marient. C'est un heureux évènement mais ce modèle n'explique pas par exemple des liaisons aussi simples que celles de la molécule d'eau (H2O). Ni les deux atomes d'hydrogène, ni celui de l'oxygène ne sont déficitaires ou excédentaire d'une charge électrostatique. On dit que leur équilibre électrostatique est stable. C'est Lewis qui proposa en 1916 un modèle permettant de prévoir des relations entre atome ou molécule ne présentant pas d'instabilité au niveau électrostatique. Mais alors qu'est-ce qui pousse les atomes ou molécules à s'associer ensemble ? c'est ce que nous allons voir dans cette seconde partie consacrée aux liaisons chimiques.

Les éléments de base du modèle de lewis
Le modèle de Lewis se base sur deux choses. La première est une conséquence du modèle atomique de Bohr que nous avons vu le mois dernier. A savoir que l'énergie des électrons dépend de leur distance au noyau, et que cette énergie est quantifiée. Cela signifie d'une part qu'il existe différents niveaux d'énergie et d'autre part que chaque niveau correspond à une orbite où se situe plusieurs électrons. On parle de couche d'électrons. La première couche, la plus proche du noyau en contient un maximum de deux, la seconde huit et la troisième 18. Il existe d'autres couches après mais elles ne seront pas utiles pour expliquer le modèle de Lewis. La seconde qui est en fait un constat fait par lui est que les gaz rares (Hélium, Néon, Argon, ...) qui ont la caractéristique d'avoir leur couche d'électrons remplie, sont très peu réactifs avec les autres atomes ou molécules. De ce constat, Lewis en déduit qu'un atome va vouloir acquérir des électrons pour tendre vers une structure de type gaz rare, qui est celle paraissant la plus équilibrée.

Exemples
Pour être plus clair, prenons l'exemple de l'eau composée de 3 atomes (deux d'hydrogène et un d'oxygène). Pour le suivre vous aurez besoin d'avoir le tableau de classification périodique sous les yeux. Vous pouvez en voir un ici (classification périodique des éléments). L'hydrogène est de période 1 (sur la première ligne). Il dispose d'une seule couche d'électrons occupée par un seul électron. Le gaz rare de cette période est l'Hélium. L'hydrogène va donc avoir tendance, selon Lewis, à tendre vers une organisation de sa couche d'électron ressemblant à celle de l'hélium. L'hydrogène va donc tendre à gagner un électron. L'oxygène est de période 2 (sur la deuxième ligne) il dispose donc de deux couches d'électrons, la première est remplie avec deux électrons, et la seconde contient 6 électrons. Le gaz rare de cette période est le Néon. L'oxygène va donc tendre à avoir la même organisation d'électrons que le Néon, à savoir gagner deux électrons supplémentaires. L'hydrogène et l'oxygène tentent donc de compléter leur dernière couche d'électrons.

La liaison covalente
C'est avec ce contat que chaque atome tend à compléter sa dernière couche d'électrons que Lewis explique l'attraction que peuvent avoir certains atomes ou molécules entre-elles. On nomme cette liaison : liaison covalente. Elle correspond à la mise en commun pour chaque atome d'un électron. Par exemple, l'hydrogène va se mettre en liaison avec l'oxygène en lui prêtant son électron et l'oxygène va faire de même en prêtant un de ses électrons. Dans cette situation, il ne s'agit pas de céder, mais bien de mettre en commun. L'hydrogène aura une configuration d'électrons comparable à un gaz rare avec deux électrons et l'oxygène aura l'équivalent de 7 électrons. Pour ce dernier il manque un électron pour tendre vers la configuration du Néon. L'oxygène va tendre à accaparer un électron de plus qu'il trouvera dans un autre atome d'hydrogène. On obtient au final la molécule d'eau : H2O. Cette molécule est composée de deux liaisons covalentes.

Les électrons de valence sont les électrons de la dernière couche d'un atome et ce sont eux qui définissent majoritairement les réactions chimiques qui peuvent se produire. La covalence d'un atome est le nombre d'électrons (électrons de la dernière couche) qu'il peut mettre en commun pour faire des liaisons covalentes (oxygène : 2, Carbone : 4, ...). La liaison covalente est une mise en commun d'électrons, mais sans les céder. On peut s'imaginer les atomes se rapprochant de telle manière que leur dernière couche devienne en partie commune permettant ainsi à des électrons provenant d'atomes différents de participer à la configuration électronique de deux atomes.

Représentation de Lewis
Pour représenter les liaisons de covalence possibles pour un atome on les symbolise par des traits. Par exemple la molécule de dichlore se représente de la manière suivante. On voit sur le schéma que les deux atomes de chlore sont représentés par une liaison, et par 6 traits (trois pour chaque atome de clore) représentant chacun la possibilité d'une liaison de covalence.


index




Liaisons chimiques - 2 : le modèle de Lewis (compléments)
matière Par JF Maquiné le 10 Septembre 2003impressionlexiquerecherchesauvegarde

Règle de l'octet
Il existe un certain flou sur la définition de cette règle. Dans certains livres de cours on trouve une explication quasiment spécifique à l'atome de carbone, dans d'autres cas elle est limitée aux atomes de la seconde période du tableau périodique des éléments. En fait toutes ces confusions sont liées au terme octet ou huit en français commun et à des interprétations de leur auteur en fonction des connaissances d'aujourd'hui. Car on sait depuis un certain temps que cette règle n'est pas exempte de défauts. Originellement Lewis définit la règle de l'octet de la manière suivante :

Une molécule atteint sa stabilité maximale quand tous les atomes qui la composent et qui appartiennent à la seconde et/ou troisième période sont entourés de quatre paires d'électrons.

Remarques sur la règle de l'octet
Si cette règle peut se comprendre aisément pour les atomes de la seconde période ou pour des molécules composées en partie d'atomes de la seconde période, puisque ceux-ci ont une dernière couche qui ne peut comporter que huit électrons, elle est beaucoup moins compréhensible pour les atomes de la troisième période. Effectivement, ces derniers ont trois couches d'électrons et cette dernière couche peut recevoir 10 électrons. A priori la règle de l'octet devrait être prise en défaut. En fait à partir de la troisième période d'autres interactions peuvent intervenir et certains atomes de cette période peuvent se contenter d'avoir 4 paires d'électrons engagées dans 4 liaisons de covalence.

Exception à la règle de l'octet
La première exception que l'on peut donner est celle du Bore. Bien qu'appartenant à la seconde période, il peut ne former que 3 liaisons de covalence comme dans la molécule B(CH3)3 où trois molécules CH3sont reliées à l'atome de Bore pour former le triméthyleborane. Donc comparé à la régle de l'octet, il y a un déficit d'électron, pourtant cette molécule est stable. La deuxième exception est celle d'un atome de la troisième période établissant 5 liaisons de covalence. PCl5 représente un atome de phosphore associé à 5 atomes de chlore. Ce type de molécules est parfois nommé composé hypervalent.

Liaison dative ou de coordination
Avec le temps, on s'est aperçu que les liaisons de covalence étaient parfois plus subtiles qu'il n'y paraissait. On a identifié un type de liaison de covalence appelée aujourd'hui liaison dative ou de coordination où les deux électrons formant la liaison de covalence ne sont pas fournis par chacun des atomes participant à cette liaison mais par un seul atome qui fournit les deux électrons nécessaires. L'exemple le plus représentatif et certainement le plus simple est celui de la molécule NH3 de l'ammoniac qui se transforme en NH4+ en présence d'acide (ion ammonium). Les trois liaisons de l'ammoniac avec des atomes d'hydrogène, sont des liaisons de covalence classiques, par contre lors de sa transformation en ion ammonium, l'azote attire à lui un ion hydrogène sans électron et pour établir la liaison, va lui founir deux électrons libres qu'il lui reste. Une fois la liaison faite elle sera indicernable des autres liaisons de covalence, elle deviendra une liaison de covalence au même titre que les autres.

Notions sur l'électronégativité
L'électronégativité est une valeur qui indique la tendance d'un atome à attirer des électrons à lui. Si la différence d'électronégativité entre deux atomes est suffisamment importante, celui qui est le plus électronégatif va prendre un électron à l'autre. Dans le cas où cette différence est moins marquée, l'électronégativité va permettre d'estimer comment sont répartis les électrons dans une liaison de covalence. Effectivement, si dans le cas d'une molécule H2 où les atomes d'hydrogène ont la même électronégativité, on peut considérer que la position des électrons formant la liaison de covalence est répartie équitablement, ce n'est pas forcément toujours le cas. Ainsi quand des atomes forment ce type de liaison et qu'ils ont une électronégativité différente les électrons participant à une liaison de covalence peuvent se trouver plus ou moins proche d'un des deux atomes. En résumé toutes les liaisons de covalence ne répartissent pas les électrons qui y participent de la même manière. L'electronégativité permet donc de mieux comprendre pourquoi certaines relations se font plus facilement que d'autres, de même pourquoi certaines sont plus facilement 'cassables'.


index




Pixel Shader : Révolution ou dû ?
matière Par Patrice Arrighi le 08 Septembre 2003impressionlexiquerecherchesauvegarde

Il y a une chanson qui disait… « Je vous parle d'un temps que les moins de 20 ans ne peuvent pas connaître… ». En effet, au début des années 90, les cartes accélératrices 3D étaient réservées à une élite professionnelle. Ce n'est qu'à partir de 1997, si mes souvenirs sont bons, que 3DFx a ouvert la voie de la 3D grand public avec la carte graphique Voodoo 1. A cette époque le prix de la carte avoisinait les 1500Francs (~225€). Pourtant il y avait déjà des jeux en 3D avant cela : 4D Stunt Driving (dont un remake est en cours de réalisation), Indy500 GP, Alone in the dark, etc… Comment pouvait-on faire des jeux en 3D sans carte 3D ? Et bien c'est simple, c'est le processeur qui faisait tous les calculs ! Les développeurs maîtrisaient ainsi toutes les étapes du rendu, depuis la lecture des données en mémoire centrale jusqu'à l'écriture du pixel en mémoire vidéo. Entre les 2, il pouvait faire à peu près tout et n'importe quoi, tant que cela restait (plus ou moins) temps réel. On a donc vu naître des moteurs qui utilisaient des technologies très différentes de celles qu'on voit partout aujourd'hui (lire : annexe). Par exemple, certains moteurs utilisaient des polygones non coplanaires, d'autres n'utilisaient même pas de triangle. La plus connue des méthodes sans triangle était celle utilisée dans Comanche Maximum Overkill : le VoxelSpace ou l'univers était composé de « pixel 3D ».

La technique la plus prometteuse demeurait cependant celle des triangles. En voici un pipeline simplifié :

  • Données : Ensemble de triangles
  • Etape 1 : Transformation 3D + calcul des éclairages + projection + clipping
  • Etape 2 : Affichage du résultat de l'étape 1, en y intégrant une texture et les contraintes du Z-Buffer
  • Résultat : Affichage 3D

C'était également la plus « simple » à transformer en circuit électronique. C'est probablement le constat qui a été fait par les fondateurs de 3DFx et qui les poussa à créer leur première carte. Cette carte, en parallèle avec une carte graphique 2D classique, possédait un processeur 3D qui permettait de dessiner des triangles 3D.

Avantage : L'étape 2 du pipeline était considérablement plus rapide.

Inconvénient : Le développeur était contraint d'exploiter la méthode des triangles et il ne maîtrisait plus la dernière étape. Par exemple, il était impossible d'appliquer un calcul particulier lors de l'écriture du pixel dans la mémoire vidéo.

Puis vint NVidia qui proposait, en plus de l'étape 2, de faire supporter par le matériel l'étape 1. C'était l'époque du T&L. Le rendu s'est encore accéléré, la maîtrise a disparu un peu plus. Il n'était plus possible, par exemple, d'appliquer des déformations spéciales sur les sommets des triangles.

En quelques années, le rendu a ainsi connu une accélération foudroyante et le développeur une perte de contrôle quasi totale. Certains disent que c'est un bien (la 3D a connu un essor incroyable), d'autres que c'est un mal (en allant aussi vite, on a laissé de côté certains types de 3D et tué une forme de créativité), mais ce débat dépasse le cadre de ce mini-article.

Donc, en ce qui concerne les pixels shaders (et même les vertex shaders), finalement ce n'est que la restitution aux développeurs de ce qu'ils avaient perdu avec l'accélération 3D. La question est maintenant de savoir si ces développeurs sauront retrouver l'imagination fertile dont ils faisaient preuve en ce temps là.

Annexe : Dans les moteurs 3D actuels, les objets sont représentés par leur surface. Cette surface est décomposée en un ensemble de triangles ce qui permet d'accélérer l'affichage. Certaines fonctions de rendu 3D permettent de représenter une surface par des polygones mais à condition que ceux-ci soient coplanaires, c'est-à-dire que tous leurs sommets appartiennent au même plan.


index




Règle générale de dérivation
matière Par JF Maquiné le 07 Septembre 2003impressionlexiquerecherchesauvegarde

Connaissez-vous la fonction dérivée de : x² ? C'est 2*x. D'accord, ce n'est pas particulièrement difficile surtout si vous avez un peu de mémoire, mais savez-vous comment calculer la dérivée de : x² ? Vous allez me dire qu'il suffit d'appliquer la formule : n*xn-1. D'accord, vous connaissez vos tables de dérivation par coeur, mais savez-vous comment trouver cette formule ou calculer une dérivée d'une fonction qui ne serait pas dans l es tables de dérivation généralement enseignées ? Je sens des hésitations dans les rangs;). C'est ce que nous allons voir aujourd'hui.

Qu'est-ce qu'un accroissement ?
Si on prend une variable x qui passe d'une valeur (x1) à une autre (x2). On détermine son accroissement en faisant la différence de ces deux valeurs. Cette différence est notée :

L'accroissement peut être positif ou négatif. On dit aussi que l'accroissement est la mesure de la variation de la valeur x.

Qu'est-ce que le taux d'accroissement ?
L'accroissement mesure la variation entre deux valeurs. Mais si on souhaitait connaître la variation d'une fonction, comment faudrait-il faire ? La solution se nomme taux d'accroissement. Prenons l'équation d'une fonction soit : y = f(x). Si on applique la variation à x, on obtiendra la valeur de la variation de y. Il ne nous reste plus qu'à la diviser par la variation de x pour obtenir la variation de la fonction f(x) en fonction de x. L'expression finale qu'on obtient se nomme le taux de variation de la fonction f(x).

En fait, cette formule est connue des lycéens qui l'utilisent pour calculer si une fonction est croissante ou décroissante sur un intervalle donné. Mais l'intérêt de cette formule de s'arrête pas là. Elle permet aussi de définir ce qu'est une fonction dérivée.

Qu'est-ce que la dérivée ?
La définition 'littéraire' de la dérivée est : la dérive d'une fonction est une fonction permettant de tracer la courbe des accroissements de la fonction dont elle est dérivée. La définition plus mathématique est que la dérivée est la limite du taux d'accroissement quand l'accroissement de x tend vers zéro. Ce qui se résume par la formule suivante :

A présent comment calculer la fonction dérivée d'une fonction à partir des informations dont on dispose ? Prenons comme exemple la fonction : y = x². Faisons varier x d'une certaine quantité et exprimons la variation de y. Soustrayons à présent y = x² de cette expression :

Il nous suffit maintenant de diviser cette dernière expression par la variation de x pour obtenir la fonction du taux de variation de y = x². Comme il s'agit de trouver la dérivée et non son taux de variation, il nous reste à faire tendre la variation de x vers zéro ce qui a pour conséquence de supprimer le dernier terme et on trouve donc la solution que la fonction dérivée de x² vaut 2*x.

On peut étendre ce raisonnement à de nombreuses fonctions, je ne dis pas toutes car je crois me rappeler qu'il existe des fonctions réticentes, si quelqu'un peut confirmer ou infirmer cela qu'il se fasse connaître :). Vous en savez maintenant un peu plus sur la dérivée et j'espère que ce petit texte vous aura remis les idées au clair ou donné des idées pour vos propres cours :).

Précisions (10/09/2003) : Il semble qu'il y ait un quiproquo avec ce mini-article. Son objectif n'est pas d'expliquer ce qu'est une dérivée, mais d'apporter un complément de formation sur la dérivée à ceux qui la connaissaient déjà.


index




Trousse de secours pour comprendre les Pixel shader 2.0
matière Par JF Maquiné le 04 Septembre 2003impressionlexiquerecherchesauvegarde

Je ne sais pas si vous êtes au courant mais d'ici quelques semaines sortira le jeu Half-Life 2. Ce jeu intègrera de nombreuses technologies novatrices dont le fameux pixel shader 2.0. En fait ce ne sera pas le premier jeu à l'utiliser, Tomb Raider : Angel of Darkness l'a précédé. L'utilisation du pixel shader 2.0 va se généraliser, car il apporte de nombreuses possibilités graphiques comme le depth of field (DOF : capacité à générer un flou sur les objets distants accentuant la présence des objets et surtout personnages de premier plan). Ces nouvelles possibilités graphiques ne sont pas toujours reproductibles avec des cartes graphiques n'en disposant pas. En fait le fossé que creuse cette technologie est suffisamment important pour considérer qu'il y a deux types de cartes : celles disposant du pixel shader 2.0 et les autres. Pour en disposer il faut avoir une carte graphique conforme aux spécifications DirectX 9.0.

Certains me diront qu'on pourra dire la même chose des pixels shaders 3.0, à savoir que cela crée un fossé avec les anciennes générations de cartes, mais ce n'est pas pareil. Le pixel shader 2.0 implique de profondes modifications dans l'architecture des processeurs graphiques (modifications sur lesquelles se baseront les pixels shaders 3.0) et ce n'est pas parce que ATI a su passer le cap avec un semblant de facilité que ça l'est ! NVidia, avec sa série FX5800 et FX5900, éprouve les plus grandes difficultés, et un jeu comme Tomb Raider préfère désactiver les pixels shaders 2.0 lorsqu'il détecte une de ces cartes (en mode réglage automatique). Bref les pixels shaders 2.0 sont un pas important dans le monde graphique et il est urgent de comprendre ce qui se cache derrière cette technologie et comment elle fonctionne.

Que signifie pixel shader 2.0
Pixel et fragment : Pixel shader est un terme avant tout destiné aux utilisateurs, les développeurs parlent quant à eux de fragment shader. C'est la même chose, seul le point de vue change. Un pixel est un point de couleur à l'écran (ce que voit l'utilisateur). Il est le résultat d'un calcul associant des points provenant de différentes textures (fragments) et d'opérations mathématiques. Les développeurs travaillent avec des fragments et le résultat est un pixel, ce que voit l'utilisateur. Par exemple si vous regardez dans une pièce à travers une fenêtre les couleurs ne seront pas tout à fait les mêmes si elle est ouverte ou fermée. On va associer les fragments de la fenêtre avec ceux des objet de la pièce pour produire le pixel final. En OpenGL les pixels shaders se nomment les fragments shaders.

Texel et fragment : Vous n'avez peut-être jamais rencontré le terme de fragment et vous êtes tenté de penser qu'il s'agit d'un texel. Ce serait une erreur. Un texel est un point appartenant à une texture avant son application à un triangle. Ce triangle appartient à la géométrie (représentation en fil de fer) d'un objet ou personnage. Pour appliquer une texture à ce triangle, il faut la déformer puis appliquer un filtrage (voir article : filtrage des textures) pour éviter d'avoir des effets visuels indésirables. Il n'y a donc plus de correspondance directe entre les texels (point de la texture) et les points du triangle texturé, qu'on nomme fragment. Les fragments ne sont pas issus directement des textures stockées en mémoire.

Shader : Les shaders sont de petits programmes envoyés au processeur graphique et exécutés par lui. Attention c'est bien le processeur graphique qui va exécuter le programme et non le microprocesseur principal. Pour créer ces programmes on utilise un langage de programmation des shaders. Il en existe deux : Cg (C for Graphics) développé par NVidia et HLSL (High Level Shader Language) développé par Microsoft. En fait Cg et HLSL sont assez semblables, la raison c'est qu'il y a eu une coopération entre NVidia et Microsoft pour élaborer ces compilateurs.

Différence entre Cg et HLSL : Cg produit du code pour les API DirectX ou OpenGL, tandis que HLSL uniquement pour DirectX. Une deuxième différence importante existe et cela concerne les utilisateurs ! Cg optimise pour utiliser le moins de buffers possible et HLSL le moins d'instructions possible sans prendre en compte le nombre de buffers nécessaires. C'est quoi ces buffers et pourquoi sont-ils si importants ? Les buffers dont on parle ici sont des mémoires internes au processeur graphique qui permettent de stocker des valeurs provisoires lors de l'exécution d'un shader. Si le nombre de buffers est insuffisant, le processeur devra stocker ces informations provisoires dans la mémoire de la carte graphique, ce qui peut considérablement ralentir leur vitesse d'exécution. Les spécifications de DirectX 9 mentionnent la nécessité d'avoir 12 buffers au moins pour les shaders. Les FX 5800 et FX5900 n'en possèdent que 2 spécifiques aux shader, les autres provenant de la mémoire de la carte graphique et donc lent d'accès (note : ces cartes respectent donc bien les spécifications DX9 sur le nombre de buffers, leur vitesse n'étant pas précisée par DX9). Ceci explique pourquoi le Cg compile les programmes de shaders dans la seule optique de limiter le nombre de buffers nécessaires et donc d'utiliser le plus souvent les 2 buffers spécifiques aux shaders. La conséquence est que le Cg optimise pour les cartes graphiques NVidia, comme l'a montré un test du site Beyond3D sur le jeu Tomb Raider. Lorsque les shaders du pixel shader 2.0 sont compilés avec le Cg, les performances des cartes ATI et NVidia sont du même ordre. Lorsqu'ils ont été compilés avec HLSL, les ATI se montrent deux fois plus rapides, et les scores des NVidia baissent d'environ 10%. Conclusion il faut espérer que les développeurs utilisent HLSL pour les pixels shaders 2.0 de leur jeux.

Que se passe-t-il si ma carte n'a pas de pixels shaders 2.0 et que le jeu l'utilise ?
Pas de problème, les programmes de jeux disposent de 'path', c'est-à-dire de chemins d'exécution différents pour chaque carte graphique. Quand le jeu est installé, il détecte automatiquement le type de processeur de votre carte graphique. Grâce à une table intégrée dans le programme, il sait pour chaque processeur graphique quelles sont les possibilités graphiques (en termes de technologie) dont il dispose. A partir de là, lorsqu'il y a un effet graphique à faire, le programme de jeu exécute la fonction gérant cet effet en fonction de votre processeur. Bien sûr cela n'implique pas forcément que l'effet soit aussi joli que si vous disposiez d'une carte graphique compatible DirectX 7, 8 ou 9.

Différence entre pixel shader et vertex shader
Les pixels shaders s'occupent du rendu d'une image et travaillent sur les couleurs. Les vertex shaders travaillent sur la géométrie des objets. Physiquement dans le processeur graphique, les unités de calculs du vertex shader se situent avant celles des pixels shaders. Ce qui signifie qu'on effectue les calculs de géométrie avant les calculs de rendu d'image.

Pourquoi est-ce si difficile de mettre au point les pixels shaders ?
Cela fait des années qu'on parle de pixel shader et on en parlera encore pendant un bout de temps. C'est la technologie qu'attendaient de nombreux développeurs car c'est elle qui permettra de donner un rendu réaliste aux animations 3D. D'un point de vue conception des processeurs graphiques, on peut dire que les vertex shaders sont une technologie qui est ajoutée, tandis que les pixels shaders s'intègrent à ce qui est déjà existant et modifient la manière dont est fait le traitement des textures. Cela pose des problèmes complexes comme conserver la compatibilité avec les anciens jeux et donc les anciennes technologies.


index




Trousse de secours pour comprendre les Pixel shader 2.0 (suite)
matière Par JF Maquiné le 04 Septembre 2003impressionlexiquerecherchesauvegarde

Différence entre pixel shader 2.0 et pixel Shader 1.1, 1.4
Pixel shader 1.1 : La première carte graphique à avoir utilisé les pixels shaders 1.1 était la GeForce 3. Bien qu'on puisse trouver des traces de pixels shaders dans les Radeon 1 et même les GeForce 2 (à l'état embrionnaire), on considère que l'histoire des pixels shaders commence avec la GeForce 3 et DirectX 8.0 qui en établissait les spécifications. Les pixels shaders 1.1 sont dont la première technologie permettant véritablement la programmation d'effets de rendu et donc d'opérations mathématiques complexes sur les couleurs.

Pixel shader 1.4 : Il apporte avant tout une souplesse d'utilisation qui étend les possibilités du pixel shader 1.1 comme le nombre simultané de textures pouvant être gérées par le shader. C'est ATI qui proposa la première carte (Radeon 8500) intégrant totalement les pixels shaders 1.4. C'est DirectX 8.1 qui en établissait les spécifications. Il existe des versions intermédiaires 1.2 et 1.3, mais elles sont très semblables à la version 1.1. Donc les deux étapes à retenir pour les pixels shaders version 1 sont 1.1 et 1.4.

Pixel shader 2.0 : Deux différences essentielles sont à noter face aux anciennes versions. La première concerne la taille des shaders (programmes). On dit que le pixel shader 2.0 permet de gérer des shaders longs. Bien que le nombre d'instructions maximum que peut contenir un shader varie d'une carte graphique à une autre (sur ce point les constructeurs ont tendance à augmenter les spécifications définies par DirectX), l'ordre de grandeur entre les pixels shaders 1.1, 1.4 et 2.0 est de plusieurs dizaines à plusieurs centaines. A partir d'une centaine on peut déjà réaliser des shaders basés sur des algorithmes mathématiques très complexes permettant des simulations sophistiquées d'effets de lumière sur des matières aussi diverses que l'eau ou la mousse de l'écorce des arbres. La seconde différence se situe dans l'utilisation de nombres flottants (ou réels), au lieu de nombres entiers. C'est important pour le pixel shader 2.0 d'en disposer car plus un shader est long (autrement dit plus un programme a d'instructions) plus il risque de générer des calculs intermédiaires. Or l'ordinateur ne calcule pas avec une précision infinie, ce qui fait qu'à chaque opération mathématique, il y a un risque d'une petite perte de précision. Evidemment plus il y a de calculs plus cette perte va s'accumuler. Si les problèmes de précision pouvaient être tolérés avec les pixel shader 1.1 et 1.4 dans la mesure où il ne pouvait gérer que de petits shaders, il n'en plus de même pour les pixels shaders 2.0, d'où l'introduction des nombres flottants. Il faut donc bien se rendre compte que l'utilisation des nombres flottants va de pair avec l'augmentation de taille des shaders que le processeur graphique peut gérer. Cela est encore plus vrai si on sait qu'un processeur comme le R350 (ATI 9800) intègre une technologie nommée F-buffer qui permet de gérer des shaders de taille infinie !

Pixel shader 3.0 et avenir du pixel shader
Bien que les spécifications ne soient pas encore fixées, beaucoup de développeurs parlent de l'intégration d'instructions permettant un contrôle plus avancé des shaders. Les shaders s'exécutent actuellement de manière assez linéaire. Avec les pixels shaders 3.0, il sera possible, grâce au branchement conditionnel (if then else), de dire au processeur graphique d'exécuter telle ou telle partie de programme en fonction de valeurs de calculs. D'un point de vue pratique, cela va permettre par exemple d'intégrer des variations dans des motifs répétitifs.

OpenGL et pixel shader 2.0
En OpenGL les pixels shaders se nomment les fragments shaders. En version 1.5, il n'y a pas de gestion des fragments shaders de type pixel shader 2.0. Toutefois les constructeurs mettent à la disposition des développeurs OpenGL des extensions (fonctions spécifiques à un constructeur) qui leur permettent de les utiliser. Toutefois ces extensions n'étant pas compatibles entre elles, cela implique de devoir écrire un 'path' différent pour chaque carte graphique. Il faudra attendre encore quelques mois pour voir la version 2.0 d'OpenGL.

Fillrate et pixel shader 2.0
Le fillrate c'est quoi ? : Le fillrate c'est la quantité de pixels que peut produire/envoyer à l'écran le processeur graphique, mais celui-ci varie en fonction de l'utilisation. Le fillrate absolu dépendant de la fréquence du GPU, de son architecture. On distingue aussi le fillrate en mode single-texturing et multi-texturing, mais : dans le cas où on utilise des shaders c'est le mode single-texturing qui nous intéresse. On utilise pour cela la formule :

Fillrate absolu = Fréquence du microprocesseur * nombre de pipes

Un pipe étant une unité de production de pixel. La FX5900Ultra dispose de 4 pipes et a une fréquence de 450 MHz (soit 1800 MPixel/s) et la 9800Pro de 8 pipes à 380 MHz (soit 3040 Mpixel/s).

Le fillrate des pixels shaders 2.0 : Quand on utilise les pixels shaders 2.0, le fillrate dépend de ce que fait le shader (le programme). Toutefois en généralisant le principe de fonctionnement d'un shader 2.0 on peut se faire une idée. Un shader va contenir des instructions vectorielles (instructions manipulant les trois composantes couleurs) et des instructions scalaires (instructions manipulant généralement la valeur de transparence). Ces instructions travaillent / appellent un certain nombre de textures. Le fillrate d'une carte graphique utilisant les pixels shaders 2.0 dépend du fillrate absolu, divisé par une variable qui correspond aux capacités de l'architecture du processeur graphique à manipuler les instructions et les textures définies par le shader.On obtient la formule suivante :

Fillrate pixel shader = Fillrate absolu / X

Déterminons X pour la 9800Pro contre FX5900Ultra : La 9800Pro sait calculer simultanément une instruction vectorielle avec une instruction scalaire ou une texture. Comme le nombre d'instructions vectorielles dépasse normalement le nombre d'instructions scalaires et le nombre de textures utilisées, la valeur X pour la 9800Pro est égal au nombre d'instructions vectorielles. Pour la FX5900 c'est plus complexe. Cette carte ne sait pas gérer simultanément les instructions vectorielles, scalaires et de texturing. X sera donc égal au moins à la somme de toutes les instructions utilisées. Donc X sera toujours plus grand pour la FX5900Ultra que pour la 9800Pro. Mais même égale l'équation du fillrate pixel shader sera toujours favorable à la 9800Pro ! (pour voir un exemple détaillé de ce calcul lisez l'article de Damien Triolet - voir ci-dessous).

Remerciements
Ce long mini-article fait suite à la parution d'un article fait par Damien Triolet du site TT-hardware. Son article, qui faisait réfèrence lui-même au test comparatif pixel shader 2.0 basé sur le jeu Tomb Raider du site beyond3D, expliquait de manière détaillée les raisons des faibles performances des cartes FX5900 en pixel shader 2.0 comparé aux ATI 9800. Son article contient une telle richesse d'informations que je trouvais dommage qu'il ne puisse être compris par un grand nombre de lecteurs. J'ai donc pris contact avec lui et après l'avoir harcelé de questions j'écrivais mon propre article visant à présenter les éléments de base du pixel shader 2.0. Je tiens donc à remercier Damien pour son aide précieuse :).


index




Pourquoi l'équation Sony + NVidia = PS3 n'est pas valide !
matière Par JF Maquiné le 03 Septembre 2003impressionlexiquerecherchesauvegarde

Une rumeur est apparue sur le net annonçant que NVidia serait le prochain fournisseur de Sony pour le processeur graphique de la PS3. Cette rumeur est sortie quelques jours après l'annonce de l'accord ATI /Microsoft pour la conception de la Xbox-2. L'idée directrice de cette rumeur est que NVidia dans son combat avec ATI se doit d'être le fournisseur du processeur graphique d'une console de jeux si ce n'est la Xbox-2 alors ça sera la PS3. Bien sûr, tant que la PS3 n'est pas en cours de fabrication cette rumeur ne pourra pas être totalement contredite, mais elle me paraît hautement improbable pour des raisons de divergences techniques importantes entre Sony et NVidia.

La PS2 est basée sur une architecture qui concentre tous les calculs sur ses processeurs vectoriels. Le processeur graphique ne dispose donc pas d'unités spécialisées pour le calcul géométrique. La PS3 aura vraisemblablement le même type d'architecture, si on se réfère au fait qu'elle sera équipée d'une unité de calcul centrale nommée 'Cell'. L'expertise de NVidia dans les unités de vertex shader ne risque pas de manquer à Sony. On peut toutefois supposer que le processeur graphique de la PS3 disposera d'unités de pixel shader, mais vu que NVidia a montré son manque de compétence dans ce domaine, avec l'absence de pixel shader 1.4 dans les GeForce 4 et les performances plutôt faiblardes en pixel shader 2.0 de sa série FX5900, on peut douter que Sony ait besoin de faire appel à NVidia pour ça. A cela il faut ajouter qu'il y a de fortes chances pour que le processeur graphique de la PS3 tout comme celui de la PS2 soit équipé d'une mémoire interne programmable (8 a 16 Mo ?). Si tel est le cas, alors NVidia n'a rien à apporter à Sony dans ce domaine puisque c'est quelque chose qu'ils n'ont jamais fait.

Bref si NVidia devait participer à la PS3, ils devraient sortir les billets car rien ne montre que Sony puisse avoir besoin d'eux. De plus je ne suis pas sûr qu'NVidia ait tant d'argent à dépenser pour une console, vu la pression qu'ATI met et continuera de mettre sur le marché des cartes graphiques. Pour moi NVidia + Sony ça n'a pas de sens aujourd'hui.


index




Darmstadtium : Le 110ème élément chimique
matière Par JF Maquiné le 02 Septembre 2003impressionlexiquerecherchesauvegarde

En 1994 une équipe allemande découvre un nouvel élément, lors d'expériences dans un accélérateur à ions lourds (on en a deux en France, un à Caen et l'autre à Strasbourg, ce dernier fermera ses portes cette année). Ce nouvel atome a été produit en bombardant des atomes de plomb par des atomes de nickel. Il est composé de 110 protons et 161 neutrons selon la formule N = A - Z, où Z est le nombre atomique (110 ici) A sa masse atomique (271) et N le nombre de neutrons. Sa demi-vie est inférieure à un dixième de seconde et son symbole Ds. Le Darmstadtium a été officialisé le 16 août 2003 lors d'une assemblée générale de l'IUPAC (International Union of Pure and Applied Chemistry).

Le Darmstadtium doit son nom au fait que l'expérience s'est déroulée dans des laboratoires situés à Darmstadt. Bien qu'il soit assez rare qu'on affecte le nom d'une ville ou d'une région à un atome, ce n'est pas la première fois comme l'atteste l'atome Californium. Avant son officialisation, le Darmstadtium était nommé provisoirement 'ununnillium' (un=1, nillium=0), c'est une convention de désignation en attendant son officialisation. Le nom définitif est généralement proposé par l'équipe qui le découvre.

Les atomes comme le Darmstadtium sont des atomes créés artificiellement, comme tous ceux qui ont un numéro atomique > 92. Ces atomes ont généralement une durée de demi-vie très courte.


index




IBM - Intel : Hyper-Threading contre Multi-Threading Simultané (présentation)
matière Par JF Maquiné le 01 Septembre 2003impressionlexiquerecherchesauvegarde

Lors d'une consultation du site Macfinder, je suis tombé sur un article intitulé : Hyper-threading pour le Power 5. Cet article faisait la relation entre les technologies multi-threading qui équiperont les processeurs POWER 5 d'IBM et les PowerPC. L'hypothèse de l'auteur c'est que nous ne verrons pas tout de suite ces technologies pour les PowerPC d'Apple, car elles restent trop récentes, trop coûteuses pour une intégration dans des microprocesseurs grand public. Mon hypothèse que j'ai déjà donnée le mois dernier, est qu'IBM a conçu sa famille de microprocesseurs (POWER et PowerPC) de telle manière qu'une amélioration technologique de l'un puisse être adaptée rapidement à l'autre à cause des fortes similitudes existantes entre chaque microprocesseur. Type de similitude n'existant pas forcément chez Intel (un Pentium n'a pas grand chose à voir avec un Itanium) et donc cette hypothèse ne serait pas valide pour eux. Les deux seules différences importantes entre PowerPc et POWER sont pour le PowerPC l'utilisation d'unités multimédias Altivec, non nécessaires actuellement à la gamme POWER, et pour le POWER l'utilisation de la technologie double core très coûteuse à la production et donc incompatible avec la production de masse de microprocesseurs grand public. Ainsi je ne vois rien qui s'oppose à l'utilisation de la technologie de multi-threading simultané développée pour la série POWER5 dans la série PowerPC et donc dans les futurs Apple G5.

Parallélisme et compagnie ?
On parle de parallélisme d'un microprocesseur, lorsqu'on parle d'instructions qui s'exécutent simultanément dans plusieurs unités de calculs. Augmenter le parallélisme, c'est un des meilleurs moyens d'augmenter le rendement d'un microprocesseur et donc la puissance de calcul à une fréquence donnée. Trois technologies principales permettent d'augmenter le rendement (mais pas forcément le parallélisme) d'un microprocesseur : superscalaire, multi-threading et multi-threading simultané.

Comparaison des méthodes d'optimisation de parallélisme
Superscalaire : Cette technique d'optimisation remonte à une dizaine d'années. Le concept de base du superscalaire est la gestion non-ordonnée des instructions, c'est-à-dire la capacité du microprocesseur à réorganiser les instructions qu'il reçoit pour tenter de les associer de manière à ce qu'elles puissent s'exécuter simultanément. Elle a donné de bons résultats mais elle ne résout pas tous les problèmes d'optimisation. Ainsi, comme le montre le graphique ci-dessous il peut arriver qu'entre deux cycles du microprocesseur il n'y ait aucune instruction à exécuter. Ces temps mort existent à cause de la dépendance des opérations à exécuter dans un programme. Par exemple, vous ne pourrez pas calculer B = c*d tant que vous ne connaîtrez pas les valeurs de c et d (dans la mesure où elles doivent être calculées). Je vous invite à lire ou relire mon article : Les concepts de base du microprocesseur

Multi-threading : Cette technologie permet de faire gérer et exécuter plusieurs tâches (thread) par le microprocesseur. La conséquence est que le multi-threading remplit les trous laissés par la technologie superscalaire, car lorsqu'il il y a une dépendance d'instructions dans une tâche, le microprocesseur peut exécuter une instruction d'une autre tâche. Le nombre d'instructions exécutées simultanément augmente, mais pas le parallélisme. En fait le multi-threading intègre le superscalaire, ainsi l'ordre d'exécution des instructions d'une tâche donnée peut être modifié par le microprocesseur afin d'augmenter le nombre d'instructions exécutées simultanément. Le problème c'est que la technologie superscalaire intégrée au multi-threading ne s'applique qu'à une tâche donnée, et donc le nombre d'instructions simultanément exécutables à un cycle donné ne diffère pas du superscalaire, comme le montre le graphique ci-dessous. Je récapitule, le multi-threading permet d'augmenter le nombre d'instructions exécutées sur un nombre de cycles donnés (2 cycles minimum), ce qui correspond sur le graphique au fait qu'il remplit les trous laissés par la technologie superscalaire, mais ne permet pas d'augmenter le nombre d'instructions pour un cycle donné.

Multi-threading simultané : En anglais cette technologie se nomme 'simultanous multi-threading ou SMT. Elle permet à un microprocesseur d'exécuter plusieurs tâches simultanément comme le multi-threading, mais en plus elle permet d'appliquer la technologie superscalaire entre les instructions de deux tâches ou plus. Elle permet donc dans un cycle donné d'exécuter des instructions provenant de plusieurs threads, alors que pour le multi-threading chaque cycle d'exécution appartient à un thread bien déterminé. Le SMT permet donc d'augmenter le nombre d'instructions exécutées simultanément (au sens propre, d'où son nom) et donc le parallélisme, chose qu'on n'avait plus vraiment réussi à faire depuis l'introduction du superscalaire il y a une dizaine d'années. En fait le parallélisme a augmenté légèrement, mais on a seulement joué avec l'architecture des microprocesseurs pour permettre à la technologie superscalaire de mieux travailler.


index




IBM - Intel : Hyper-Threading contre Multi-Threading Simultané (conclusion)
matière Par JF Maquiné le 01 Septembre 2003impressionlexiquerecherchesauvegarde

Selon le document ci-dessous, un microprocesseur équipé de multi-threading simultané pour deux tâches, serait en théorie plus performant qu'une machine équipée de deux microprocesseurs. J'avoue que j'hésite à penser que dans la pratique cela soit vrai. Toutefois un gain d'un facteur 1,5 à 1,7 devrait pouvoir être constaté à terme avec les microprocesseurs qui en disposeront. D'ailleurs quels sont-ils ? Le G5 n'en dispose pas actuellement, mais il n'y a pas de doute qu'un de ses successeurs en disposera et donc les machines Apple d'ici une ou deux années. Pour AMD, la situation est plus délicate. S'ils disposent de cette technologie alors elle devrait apparaître avec la prochaine génération d'Opteron et d'Athlon-64, sinon on peut envisager un accord technologique entre AMD et IBM. De toute manière, ils devront en disposer à terme, car un microprocesseur qui ne possédera pas la technologie SMT d'ici deux ans aura de graves problèmes de performances face à ses concurrents.

Le cas Intel est plus complexe. Officiellement ils disposent de cette technologie et elle est intégrée à leur Pentium 4. Dans la pratique les gains observés sont bien moindres que ceux estimés dans l'article et donc j'émets l'hypothèse que le SMT des Pentium 4 n'est pas très performant, voire s'apparente plus à du multi-threading tout court. Deux raisons à cela. Le P4 est un microprocesseur à faible rendement et cela est dû en partie à certaines instructions qui ont un temps d'exécution plus long que ses concurrents. Plus une instruction met de temps à s'exécuter dans une unité de calcul, moins souvent cette dernière pourra être disponible pour d'autres instructions. En conséquence le Pentium 4 génère plus de 'trous' (dépendance d'instructions) que ses concurrents. Pour résoudre ce problème, la première solution consiste à baisser le temps d'exécution des instructions (les plus importantes). C'est ce que fait le Prescott avec des instructions comme la multiplication d'entiers très utilisée dans le calcul des indices pour les variables contenues dans des tableaux et/ou structures. La seconde consiste à augmenter le nombre de threads pouvant être gérés simultanément par le microprocesseur. Actuellement ce nombre est de deux et devrait passer à 4 avec le Prescott ou son successeur le Tejas. Quant à savoir s'il fait du vrai SMT donc s'il est capable d'exécuter dans un même cycle des instructions provenant de plusieurs threads différents, je pense que oui, mais très mal. D'ailleurs Intel prévoit des améliorations des mécanismes de son hyper-threading pour le Prescott et le Tejas. Mais le mécanisme n'est pas tout, il va falloir augmenter la taille du cache L1 des données que se partagent les threads et qui a une taille modeste de 8 Ko contre 64 Ko pour le G5 et les Athlon. La taille du trace cache (cache instructions) sera doubler avec le Tejas mais pas sur le Prescott (dommage :( ). Dans une architecture SMT la taille des caches L1 est importante car si le microprocesseur ne trouve pas l'instruction et/ou les données dans ce cache, des temps de latence sont à ajouter aux instructions et donc augmentent la possibilité d'apparitions de 'trous' dans l'exécution. D'autres éléments sont à prendre en compte, comme le nombre d'instructions que le microprocesseur peut gérer simultanément pour décider de leur réorganisation. Le G5 peut en gérer près de 200 alors que le Pentium 4, un peu plus d'un centaine.

Pour finir. La faiblesse des Pentium 4 réside dans son faible rendement, mais comme je l'ai montré dans cette analyse et d'autres, Intel a tout intérêt à l'augmenter considérablement. Toutefois, ce n'est peut-être pas en exécution monotâche qu'il faut s'attendre à une augmentation significative, mais en exécution multitâche. Ainsi le Prescott pourrait voir ses performances augmenter de 7% à 9% en moyenne, et de 12% à 16% en fonctionnement multitâche. Je recommande donc aux testeurs, de comparer le Pentium 4 Northwood et le Prescott dans ces deux types de fonctionnement s'ils veulent donner une idée claire des avancées qu'Intel à fait sur le Prescott, d'ailleurs à l'avenir ce type de tests devra être généralisé à tous les microprocesseurs. Concernant l'Athlon et surtout le G5, on peut constater que ce sont des microprocesseurs qui disposent d'ors et déjà d'une architecture prête pour exploiter pleinement le SMT, cela implique que lorsqu'ils en disposeront les gains seront plus spectaculaires que ceux constatés avec les premiers Pentium 4 SMT.


index





YOUM
(analyseur syntaxique temps réel)
Nombre de définitions trouvées
183
Multi-dico par texte : actif   -   Multi-mots par définition : 4






fonction
menu de droite
liste actualitéliste des actualités


consultation Septembre consultation
consultation 2003 consultation
Par 10

fin de menu

qcm du mois
Télescope spatial Hubble
fin qcm


Page générée en : 0.016 secondes
ligne
Technologies Onversity : Hydrogen 1.0 (moteur de base de données) - SE.EN 1.0 (moteur de recherche) - YOUM 2.0 (analyseur syntaxique temps réel)
Tous droits réservés à Jean-François MAQUINÉ
ligne