|
|
Par JF Maquiné le 28 Mai 2004 |    | |
Le principe de moindre action est un des principes les plus fascinants de la physique. Il contient à lui seul une bonne partie de la physique. Un objet mystérieux bien que très étudié, qui a toujours attiré à lui les grands physiciens comme les moins grands. Ok, ok, ceux qui ne savent pas de quoi je parle souhaiteraient que je passe de suite à l'explication au lieu de radoter.
Le principe minimum de Fermat C'est vers 1650 que Pierre de Fermat (mathématicien français) énonce un principe que Maupertuis (mathématicien français) reprendra et étendra pour donner le principe de moindre action. Le principe de Fermat est dit principe de minimum et consiste dans le constat que la lumière voyage toujours d'un point à un autre en minimisant son temps de trajet. Ce n'est pas forcément le chemin le plus court mais à tout les coups celui qui permettra à la lumière de faire le trajet le plus rapidement possible. Comment la lumière sait quel chemin est le plus rapide ? Mystère , mystère ...
Le principe de moindre action de Maupertuis Maupertuis n'est pas totalement satisfait du principe minimum de Fermat. Pourquoi la lumière prendrait le chemin du temps le plus court à celui de la distance la plus courte ? Maupertuis répond que la lumière ne prend aucun des deux, mais le chemin où la quantité d'actions qui s'exerce sur la lumière est la moindre, d'où le nom de principe de moindre action (1744). De plus le principe de Maupertuis ne s'applique pas seulement aux lois de l'optique mais à toute la mécanique. Donc que ce soit un rayon lumineux ou un boulet de canon, leur trajectoire est régie par le même principe, le principe de moindre action.
De Maupertuis à Lagrange C'est en 1788 que Lagrange (mathématicien français) propose une formulation mathématique du principe de moindre action et qui est encore en vigueur de nos jours.
La variable S est nommée action, (T - V) le lagrangien où T et V sont respectivement les énergies cinétiques et potentielles d'un système mécanique. La trajectoire du système que décrit la formule vaut la trajectoire physique quand S a une valeur minimale. Par exemple si un boulet lancé par un canon a une Trajectoire A, alors l'équation de Lagrange du principe de moindre action implique que quand S est minimal le membre de gauche décrit cette trajectoire. Dans le cas plus concret du boulet de canon, T = m*v²/2 et V = mgx ce qui nous donne :
Relation entre le principe de moindre action et la mécanique newtonienne Il existe une équivalence entre le principe de moindre action et la mécanique newtonienne. On peut à partir de la formule de Lagrange retrouver l'expression F = ma (Force = masse * accélération). Cette démonstration se trouve sur la page donnée en lien ci-dessous.
Thermodynamique et mécanique quantique Ce n'est pas seulement en optique et en mécanique newtonienne que le principe de moindre action s'applique, mais aussi en thermodynamique, où le flux de chaleur où d'électrons suit un trajet de moindre résistance. Concernant la mécanique quantique c'est plus délicat. C'est Richard Feynman qui trouva la version quantique du principe de moindre action et les trajectoires. Sa méthode se nomme intégrale de chemin.
J'espère qu'à présent vous avez une idée un peu plus nette de ce qu'est le principe de moindre action. Si vous voulez en savoir un peu plus je vous recommande le site cité déjà plus haut, et le magazine Pour la science : les génies de la science dédié ce trimestre (Mai-Août) à Richard Feynman et à sa théorie des intégrales de chemin.
|

|
Par JF Maquiné le 25 Mai 2004 |    | |
Euclide est un mathématicien grec qui vécu à Alexandrie 300 ans avant J.C. Il est surtout connu pour ses éléments de géométrie plane. Toutefois ses compétences ne se limitent pas à la géométrie, il a aussi fait un apport considérable à ce qu'on nomme aujourd'hui la théorie des nombres. En particulier il énonça le théorème célèbre sur les nombres premiers, à savoir qu'il en existe une infinité et en fit la démonstration. C'est cette démonstration que nous allons voir aujourd'hui.
La démonstration se base sur ce qu'on nomme en mathématique un raisonnement par l'absurde. Au lieu de tenter de prouver que l'affirmation est vraie, on tente de prouver l'affirmation contraire et se faisant montrer qu'elle ne l'est pas. Donc le principe du raisonnement par l'absurde est de montrer que l'affirmation contraire est fausse ce qui implique que l'affirmation de départ est vraie. C'est un type de démonstration très classique mais qui nécessite beaucoup d'astuces, comme beaucoup de démonstrations en mathématique.
Pour faire cette démonstration nous aurons besoin du théorème fondamental de l'arithmétique à savoir :
- Tout nombre entier n > 1 peut s'écrire comme un produit de nombres premiers et cette représentation est unique (l'ordre des nombres premiers n'ayant pas d'importance ici).
Démonstration : Supposons donc qu'il existe une quantité limitée de nombres premiers c'est-à-dire un ensemble fini. On les nomme p et on les numérote de P1,P2,...,Pk. Prenons à présent le nombre :
- n = P1 * P2 * ... * Pk + 1
Selon le théorème fondamental de l'arithmétique, ce nombre doit pouvoir se décomposer en un produit de nombres premiers.
Deux cas se présentent, soit le nombre n est premier soit il est composé. S'il est premier alors la démonstration s'arrête car l'affirmation comme quoi les nombres P1,P1,...,Pk sont tous les nombres premiers est fausse et donc il existe une infinité de nombres premiers.
Par contre si n est composé c'est-à-dire un nombre non premier alors l'affaire se corse. Si n est composé, et en vertu d'une part du théorème fondamental de l'arithmétique et d'autre part de notre affirmation de départ à savoir que les nombres premiers sont représentés par l'ensemble des nombres P1,P1,...,Pk, alors n doit nécessairement être divisible par au moins un des nombres premiers P1,P1,...,Pk. Mais cela implique aussi que ce nombre (n) divise 1 (le + 1 qui est dans l'équation définissant n). Or en théorie des nombres, seuls les nombres entiers sont pris en considération et donc rien ne peut diviser 1 sauf 1 lui-même. Or ce nombre n'est pas pris en compte pour une décomposition en facteur premier. En conséquence il y a contradiction à affirmer qu'il existe un nombre limité de nombres premiers et donc il faut en conclure qu'il y en a une infinité.
En plus de 2000 ans de mathématique, ce théorème a été démontré de nombreuses manières différentes. Ainsi on peut le démontrer en passant par les nombres de Fermat (F = 22r + 1) avec un raisonnement par récurrence, ou encore par les nombres de Mersenne (M = 2n - 1) en association avec le théorème de Lagrange sur les relations du cardinal d'un groupe multiplicatif et ce ses sous-groupes. On peut aussi le démontrer par la topologie, l'analyse, ...
Si vous avez des questions à poser n'hésitez pas, j'essayerais d'y répondre dans la mesure de mes moyens :). |

|
Par JF Maquiné le 24 Mai 2004 |    | |
Avec la récente affaire ATI concernant le filtrage très particulier des textures (filtrage trilinéaire), vous avez peut-être du lire que ATI a intégré un algorithme adaptatif dans sa manière de faire le filtrage trilinéaire. Force m'a été de constater que si de nombreux sites internet se sont attardés à accuser cette société, aucun ne s'est penché sur ce que représente un algorithme adaptatif leur rôle, leur intérêt, leur écueil, ... ainsi que les difficultés d'évalution de tels algorithmes. Sans prétendre vouloir en faire le tour (loin de là, voire très loin car c'est un sujet complexe en fait) je vais essayer de dégrossir le sujet, et je pense être assez bien placé étant donné qu'Onversity utilise de nombreux algorithmes adaptatifs.
Qu'est qu'un algorithme adaptatif ? Il n'y a pas de définition officielle de l'algorithme adaptatif, il est donc tout à fait possible qu'un jour vous rencontriez une définition qui ne soit pas exactement celle que je vais vous donner. Toutefois tout le monde est à peu près d'accord pour dire qu'un algorithme adaptatif est un algorithme qui modifie son comportement en fonction des données qu'il a traité. Cette modification de comportement est due à l'algorithme lui-même et non à une intervention extérieure. C'est l'algorithme qui s'ajuste lui-même.
A quoi sert un algorithme adaptatif ? Un algorithme statique (en opposition à un algorithme adaptatif) effectue toujours la même opération sur les données entrantes quelque soit ces données. De son côté, un algorithme adaptatif fera varier le travail mathématique qu'il fera sur les données en fonction des données qu'il reçoit. L'intérêt de cette variation réside dans le constat qu'il n'est pas toujours nécessaire d'appliquer la même complexité mathématique de traitement à toutes les données pour produire un résultat correct. En moyenne un algorithme adaptatif effectuera moins de calculs que son équivalent statique.
Toutefois ce n'est pas aussi simple. En pratique, un algorithme adaptatif n'est réellement efficace (offre un gain réellement important) que si on accepte de dégrader légèrement la qualité des calculs effectués. A partir de là commence la difficile quête du réglage de l'algorithme adaptatif et l'évaluation du ratio qualité moyenne obtenue / gain de performance. Mais avant de voir comment déterminer la pertinence d'un algorithme adaptatif, je voudrais parler des algorithmes adaptatifs de grande classe. C'est une catégorie d'algorithme que je nomme ainsi car ils permettent non pas de diminuer le temps de calcul moyen par une constante (souvent petite), mais de baisser le niveau de complexité de l'algorithme de base. Les gains peuvent alors être divisés par des facteurs 10, 100 ou plus, et plus la quantité de données est lourde plus le gain sera important.
Méthodologie de test des algorithmes adaptatifs (1) La première catégorie d'algorithmes adaptatifs produit le même résultat qu'un algorithme statique, sauf en termes de performances, c'est-à-dire que si un algorithme statique produit un ensemble de données B à partir d'un ensemble A, l'algorithme adaptatif produira le même résultat. Il n'y a pas de variation de qualité, mais seulement de performance. Pour cette première catégorie, la difficulté vient de l'évaluation des performances. En fonction de l'ensemble A, la vitesse de traitement d'un algorithme adaptatif peut varier grandement. Il faut donc effectuer une moyenne pondérée entre le meilleur cas et le plus mauvais cas tout en leur assignant des poids liés à leur fréquence probable d'apparition. Effectivement si le meilleur cas ne se produit quasiment jamais en pratique, la méthode adaptative risque de produire une perte de performance. Un autre aspect à prendre en considération est que souvent un algorithme adaptatif nécessite un pré-traitement afin justement de déterminer les paramètres d'adaptation de l'algorithme. Ce pré-traitement coûte en temps et doit toujours être inclus dans les performances finales afin d'avoir une idée réelle du temps d'exécution.
En résumé la problématique d'évaluation de ce type d'algorithme adaptatif concerne le gain réel qu'on peut en espérer. Généralement il est bon, mais excède rarement un gain de facteur 2 ou 3. L'algorithme D-loop que j'ai présenté il y a peu, peut être assimilé à un algorithme adaptatif de cette première catégorie. C'est ce type d'algorithme qu'ATI utilise aussi pour déterminer le niveau de filtrage anisotropique des textures d'une scène.
|

|
Par JF Maquiné le 24 Mai 2004 |    | |
Méthodologie de test des algorithmes adaptatifs (2) La deuxième catégorie d'algorithmes adaptatifs ont la particularité de produire un ensemble B' de données à partir d'un ensemble A avec B' équivalent à B mais non égal. Ce type d'algorithme est utilisable quand l'ensemble des données produites doit être interprété et ne nécessite pas des valeurs exactes. Les plus connus permettent de faire des fichiers MP3 pour l'audio ou encore MPEG4 pour la vidéo. C'est notre cerveau qui effectue l'interprétation des données. Si la dégradation est trop importante l'interprétation est mauvaise ou erronée. De fait ce type d'algorithme dispose de moyen de réglages pour la dégradation, moyen automatique (c'est l'algorithme qui détermine le niveau de dégradation), ou manuel (c'est l'utilisation qui définit les paramètres de dégradation).
L'évaluation de ce type d'algorithme est très délicate car elle implique en partie une interprétation et donc nécessairement une part de subjectivité, mais c'est bien plus complexe que ça. En premier dans la mesure où il y a une perte d'informations, le gain en performances doit être net pour justifier cette perte, et c'est généralement le cas. L'évaluation des performances ne pose donc pas de problème à priori et est relayé comme un problème secondaire. Toute la difficulté de l'évaluation se pose sur la qualité. Je vais dans la suite du texte utiliser la nouvelle méthode de filtrage trilinéaire d'ATI pour étayer l'aspect technique et les difficultés d'une évaluation de la qualité, mais cela n'implique en rien une critique positive ou négative, j'espère que cela reste clair dans l'esprit de tout lecteur.
Le premier problème réside dans l'établissement des critères de qualité. En premier on peut être tenté de définir les critères de qualité sur la base de l'algorithme statique. Mais un algorithme adaptatif va certes diminuer plus ou moins la qualité mais peut aussi l'améliorer sur des critères que l'on ne prend pas en compte sur la base de l'algorithme statique. Par exemple dans le cas du trilinéaire, le critère de choix est la qualité des transitions entre niveau de mip map. Mais le trilinéaire implique lui-même une baisse de qualité en ajoutant un flou supplémentaire moyen. Il y a perte d'informations, cette perte est d'autant plus remarquable si on se rappelle qu'il s'agit d'une interpolation linéaire. Un filtrage tri-cubique par exemple serait supérieur à un filtrage trilinéaire; certes beaucoup plus coûteux en temps, mais cela montre bien que le filtrage trilinéaire n'est pas la panacée et sert lui-même une approximation. En résumé, définir des critères d'évaluation d'un algorithme adaptatif en prenant comme modèle le filtrage statique pose des difficultés et ce d'autant plus si le modèle statique est lui-même une approximation.
Le deuxième problème est l'évaluation des critères. Une fois les critères déterminés il faut définir un ordre d'importance. Ainsi dans le cas du nouveau filtrage d'ATI, il fournit une qualité de transition moindre, mais un léger gain en netteté dans l'ensemble avec un excellent gain en performance. Or les utilisateurs sont souvent plus réceptifs à la netteté qu'à la qualité des transitions, du moins jusqu'à un certain point. Je l'ai déjà démontré sur Onversity dans mon article sur l'effet visuel Depth of field. Parce que le joueur peut poser son regard sur l'ensemble de la scène, il privilégie une vision la plus nette possible sur la scène. Si la qualité des transitions reste suffisante, elle reste un critère secondaire. En même temps tenter de baser une analyse de critère subjectif sur une analyse objective peut devenir un leurre. Ainsi dans l'échantillon supposé de personne, il peut y avoir des joueurs qui seront plus sensibles aux critères de transition que de netteté et d'autres ne faisant attention qu'aux performances sans égard à la netteté, ni à la qualité des transitions. Dans ce type d'analyse on a un exemple historique que les audiophiles connaissent bien. Lors de l'arrivée des amplificateurs à transistors, beaucoup de magazines ont tenté de déterminer des critères objectifs sur un aspect subjectif : la musicalité. Or on ne peut pas le faire, mais à ce petit jeu les amplificateurs à tubes sont devenus selon ces critères de mauvais amplificateurs. Mais c'est faux, leur capacité dynamique et la richesse des timbres qu'ils produisent restent souvent sans égal. En résumé, l'évaluation de critères subjectifs par des critères objectifs reste un exercice périlleux, mais ne pas le faire pousserait à l'immobilisme, alors il faut assumer ses choix tout en sachant qu'il restera toujours une part de subjectivité.
Le troisième et dernier aspect concernant l'évaluation d'algorithmes adaptatifs est le cas où on doit faire une évaluation d'échantillons de données produits par cet algorithme et évoluant dans le temps. Par exemple dans une animation graphique, on peut avec un algorithme statique, prendre quelques images voire une seule puis comparer à une image idéale. La différence entre les deux peut informer sur la qualité de l'algorithme statique qu'on peut ensuite généraliser à l'ensemble des images produites. Avec un algorithme adaptatif qui est fonction du temps chaque échantillon n'est pas représentatif des autres. Avec un algorithme statique, on peut évaluer en grande partie ses performances dans une analyse statique. Avec un algorithme adaptatif, c'est mission impossible. Ainsi pour une vidéo, prendre quelques images au hasard n'a qu'un intérêt relativement limité (pas totalement inutile mais très limité), il faut voir un échantillon animé pour se faire une meilleure idée de la qualité de l'algorithme.
Conclusion Il est amusant de voir à quel point les algorithmes adaptatifs sont plébiscités quand on en voit que le résultat, comme avec le mp3, divX, ... Mais lorsqu'il s'agit de présenter un algorithme adaptatif en remplacement d'un algorithme statique comme le trilinéaire, ils sont décriés. Il y a là une résistance qui touche parfois à l'intransigeance. Les gens en grande majorité aiment les algorithmes statiques quand ils ne connaissent que ça, car ils peuvent parfaitement évaluer les performances et qualités, alors qu'avec un algorithme adaptatif, surtout de la deuxième catégorie, leurs points de repère sont pour la plupart inappropriés. Je dois dire que j'ai été confronté à ce type de réaction (parfois vive) quand j'ai présenté la technique D-loop, et je comprends très bien les difficultés d'ATI à prouver le bien-fondé de leur démarche (indépendamment du fait que leur technique soit ou non bien-fondée).
Les algorithmes adaptatifs sont dans de nombreuses situations l'avenir des algorithmes, cela s'est avéré vrai en audio, en vidéo, ou même pour les moteurs de recherches. De plus je peux vous assurer que ces algorithmes offrent des possibilités d'évolution très intéressantes car il est rare que les premières versions d'un algorithme adaptatif soient les meilleures vu la complexité d'analyse et parfois de mise en oeuvre de tels algorithmes.
|

|
Par JF Maquiné le 19 Mai 2004 |    | |
Farcry est un jeu exploitant les plus récents développements dans le domaine de la 3D (commercialement parlant s'entend) avec le succès qu'on lui connaît. Or avec l'arrivée imminente de la nouvelle génération de cartes graphiques, NVidia et ATI font les yeux doux à Crytek auteur de Farcry. ATI pour l'intégration de la technologie 3Dc et NVidia pour que Farcry utilise leur SM 3.0 (Shader model 3.0 = Pixel et vertex shader 3.0). Dans ce dernier cas, on a pu voir des vidéos et screenshots des pixel shader 3.0 dont dispose la série GeForce 6800, et le résultat est intéressant, mais contrairement à ce que croient certains internautes, il s'agit uniquement de parallax mapping et non de displacement mapping. Ce mini-article se propose de faire le point sur certaines définitions.
Les vertex shader sont des unités de calcul intégrées au processeur 3D prenant en charge des calculs de géométrie. La géométrie dans un jeu 3D concerne avant tout la forme des objets et personnages. Les pixel shader sont des unités de calcul destinées à faire un travail sur les textures. D'un point de vue pratique leur principal travail consiste à produire des effets visuels.
Le displacement mapping consiste à générer et modifier de la géométrie. Cette technique permet de générer des reliefs réels et pas des effets visuels de relief (impression de relief) comme le bump mapping. Le parallax mapping, qui se nommait précédemment offset bump mapping, est une amélioration de la technique de bump mapping. En gros le bump mapping consiste à associer une texture contenant des couleurs à une texture contenant des valeurs de hauteur décriant des reliefs. Le parallax mapping amplifie le résultat du bump mapping en lui donnant un effet visuel très proche du displacement mapping. De fait on dit parfois que le parallax mapping est une simulation par effet visuel du displacement mapping, mais ce n'en est pas une ! Alors que le displacement mapping sera généré par des vertex shader, le parallax mapping n'est généré que par les pixel shader.
La photo ci-dessous montre le jeu Farcry avec un patch utilisant les pixel shader 3.0 de la GeForce 6800. Il s'agit bien de parallax mapping et non de displacement mapping. Si vous n'êtes pas encore convaincus je vais vous donner un autre argument. Imaginez des centaines de galets décrits par de la géométrie, cela alourdirait considérablement le travail du processeur 3D, alors que le parallax peut dans ce cas faire quasiment la même chose en coûtant bien moins cher en termes de travail à accomplir. Le displacement mapping est encore hors de portée même pour la nouvelle génération de carte graphique du moins pour décrire une plage complète de galets.
 Un dernier point. Le parallax mapping n'est pas exclusif au pixel shader 3.0. Cette technique a été conçue par Terry Welsh avec des pixel shader 2.0. Cela signifie que toute utilisation de parallax mapping pour Farcry est applicable tant aux GeForce 6800 qu'aux X800 d'ATI. Mais Crytek va-t-il faire une version de son jeu (un patch) utilisant le parallax mapping (ce qui serait assez cool) pour le pixel shader 3.0 ET 2.0 ? |

|
Par JF Maquiné le 18 Mai 2004 |    | |
La technologie Tree-SSA a pour objectif de permettre au compilateur GCC une meilleure analyse des codes sources permettant de fournir un meilleur déboguage, de meilleures optimisations et plus d'évolutibilité vers des algorithmes d'optimisation de plus en plus sophistiqués.
Le site GCC a annoncé le 13 mai l'intégration de cette technologie dans le noyau GCC en cours de développement. Cela ne signifie pas nécessairement que cette technologie sera exploitée de suite pour les versions finales, mais à partir de cette date toutes les versions en cours de développement l'intégreront. Toutefois cette intégration ne se fera pas sans de possibles grincements si on en croit Diego Novillo :
I am glad to announce that Tree SSA has been merged into mainline. The branch is now closed and mainline is, once again, open for business.
I guess the first thing I want to say is Thanks. These last 4 years have certainly been fun and interesting. I appreciate all the work both in testing and implementation that many folks have put into making Tree SSA possible. The project is now officially over, but this was just the first step. With the basic framework now in mainline we can now start doing interesting things with it.
The second thing that comes to mind is Sorry. Things are going to be, um, unstable for a while. Yes... unstable... that's it (for the lack of a better term). Dans tous les cas, GCC va passer un cap délicat. Certes c'est un cap important, et il faut les féliciter, mais délicat et ce n'est pas moi qui le dit. Dans cette phase de transition, si vous avez besoin d'une version solide, la version GCC 3.3.3 ou mieux 3.3.4 qui devrait sortir d'ici 2 semaines sera une alternative forte en attendant d'y voir plus clair. |


|
Par JF Maquiné le 14 Mai 2004 |    | |
On se demande souvent comment un constructeur peut optimiser la performance de ses cartes graphiques 3D. Nous allons en voir trois et ainsi démystifier une pratique courante et bénéfique aux utilisateurs, mais qui aujourd'hui est parfois regardée avec suspicion à cause de trop nombreux dérapages visant à mettre en avant certaines cartes graphiques lors de tests de performances.
Les drivers Depuis près de 2 ans une équipe travaille sur une refonte complète des drivers OpenGL et à priori on devrait voir le fruit de ce résultat au courant de l'année, mais ATI n'a précisé aucune date. Pourquoi faire une refonte complète et pourquoi cela prend-il autant de temps ? Les performances des drivers OpenGL ne sont pas aussi bonnes que celles de NVidia, c'est particulièrement vrai soit dans les applications 3D professionnelles lourdement optimisées OpenGL ou dans les jeux très dépendants du microprocesseur et moins de la carte graphique (quoique cela dépend aussi des réglages utilisés, mais dans l'ensemble on est dans cette situation). OpenGL c'est une documentation d'environ 1500 pages techniques et de centaines de fonctions. Outre l'implémentation et le déboguage, ce sont des milliers de situations à prendre en compte et à optimiser en fonction des paramètres à envoyer à ces fonctions. C'est un travail titanesque.
Du côté de DirectX 3D, ATI ne souffre pas des mêmes difficultés, vraisemblablement d'une part parce qu'ils sont partis sur une meilleure base, mais aussi à cause des différences de fonctionnement entre les API DirectX et OpenGL. Alors qu'avec OpenGL on peut directement adresser à les drivers de la carte graphique, DirectX-3D impose une couche logicielle supplémentaire ne permettant pas au développeur d'accéder directement au drivers de la carte graphique. Cette surcouche logicielle fait que certaines optimisations ne peuvent avoir lieu et d'autre part celles qui peuvent avoir lieu voient leur gain en partie dilués dans cette surcouche logicielle.
Comment communique-t-on avec les drivers ? Les drivers sont un ensemble de fonctions qui se chargent en mémoire au démarrage de l'ordinateur. Une fois lancé, le driver établit une liste de ses fonctions et des adresses en mémoire de chacune de ses fonctions. OpenGL ou D3D demande la liste des fonctions aux drivers, récupérant par la même occasion la liste de leur adresse. Ainsi lorsque le développeur utilise une fonction d'une API, celle-ci connaît l'adresse de son équivalent dans les drivers et peut donc s'exécuter.
Le compilateur de shader Les shader sont de petits programmes écrits à la main par les développeurs. On distingue les shader destinés à la géométrie (vertex shader) et ceux destinés aux effets visuels (pixel shader). Les shader sont enregistrés dans des fichiers texte par le développeur, ce qui explique par exemple pourquoi un développeur a pu modifier les shader pour que la démo de Ruby puisse s'exécuter sur des 9800 pro/XT. Evidemment les shader en mode texte ne sont pas compréhensibles par le processeur graphique. Il faut un compilateur de shader qui transforme des instructions texte en instructions binaires. La compilation des shader s'effectue généralement au lancement du jeu et ce à chaque lancement.
Si les performances des shader dépendent en premier lieu de la manière dont le développeur les écrit, elles dépendent aussi beaucoup des capacités du compilateur à optimiser le code des shader produit pour le processeur graphique. Si faire un compilateur est un exercice courant pour tout informaticien qui se respecte, faire des optimisations de compilation est réservé à des spécialistes et fait appel aux plus récentes avancées informatiques et mathématiques comme l'utilisation de la théorie des graphes.
Si ATI dispose déjà d'un compilateur de shader honnête, ils ont quand même fait appel à une ancienne équipe d'ingénieurs de DEC qui travaillait sur les compilateurs (C/C++/Fortran/...) pour réaliser un nouveau compilateur de shader. Celui-ci devrait être intégré au Catalyst d'ici quelques mois. Il ne faudra pas s'attendre à des merveilles mais des gains de quelque pourcents dans des jeux comme HL2 ou DOOM3 sont envisageables. En fait si on suppose qu'ils font bien leur travail, alors plus les shader seront longs, et ils peuvent comporter plusieurs centaines d'instructions sur une X800, plus le gain pourra être important.
Le contrôleur mémoire Les habitués de la bidouille et de l'optimisation de leur machine savent qu'on a accès en gros à 3 ou 4 paramètres pour optimiser les accès à la mémoire RAM (CAs, RAS-to-cas, ...). En fait il y en a beaucoup plus, près d'une dizaine. Les constructeurs de carte graphique doivent jouer avec tous ces paramètres pour exploiter au mieux leur carte graphique. Optimiser la carte pour les hautes résolutions, pour le FSAA, etc ... Il y a des millions de combinaisons possibles et seules quelques unes sont réellement intéressantes. ATI a justement changé de contrôleur mémoire pour sa génération X800. Les changements de paramètres du contrôleur mémoire d'une carte graphique peuvent être beaucoup plus sensibles que pour un ordinateur, car la relation processeur 3D et mémoire est plus directe et exclusive. Plusieurs conversations et interviews sur des forums (Beyond 3D) semblent indiquer que les réglages actuels sont loins des réglages optimums et des gains significatifs en particulier en FSAA sont à attendre pour les X800.
Conclusion Dans les mois à venir, les possesseurs de carte graphique ATI devraient voir les performances de leur carte s'améliorer, en particulier les futurs possesseurs de carte X800, avec un cas particulier pour la X800 Pro. Effectivement, ATI a indiqué que les premiers drivers étaient orientés pour tirer partie de l'architecture 16 pipelines. Or la X800 Pro n'en dispose que de 12. Donc entre les optimisations de drivers OpenGL, de compilateur de shader, de contrôleur mémoire et la prise en compte des spécificités de l'architecture 12 pipelines, cette carte devrait se bonifier de manière particulièrement intéressante.
|

|
Par JF Maquiné le 13 Mai 2004 |    | |
Cette semaine est sortie le Dothan, microprocesseur dédié aux portables et successeur du Banias. Le Dothan est avant tout un Banias, gravé en 0.09 micron d'un plus gros cache L2 (2 Mo contre 1 Mo), mais il intègre aussi quelques améliorations comme le prefetching de données, ou la gestion des registres internes. Les articles parus sur internet et testant le Dothan montrent un gain net de performances. Gain essentiellement du au cache L2 de 2 Mo et au fait qu'Intel ait préservé la grande rapidité d'accès à ce cache (Banias : 9 cycles, Dothan : 10 cycles). Ceci étant dit certains articles ont fait des comparaisons du Dothan face à des microprocesseurs de bureau (Athlon-64, Pentium 4).
Je dois avouer que je reste perplexe face à de telles comparaisons. Si l'objectif est de montrer que les performances des microprocesseurs de portable avoisinent celles des ordinateurs de bureau, c'est entendu. Par contre si l'objectif est de démontrer qu'un Dothan pourrait prendre la place d'un microprocesseur de bureau je suis très sceptique et ce sont les raisons de ce scepticisme que je vais vous expliquer dans ce mini-article.
Se baser sur les scores du Dothan puis laisser extrapoler les lecteurs sur le fait que s'il pouvait disposer d'une mémoire DDR double canal (le FSB étant déjà à 200 MHz) il deviendrait un ordinateur de bureau exceptionnel, c'est aller un peu vite en besogne. Ce n'est pas parce qu'un Northwood est un dévoreur de bande passante mémoire que tous les microprocesseurs le sont. Ainsi pour les Athlon-64, le gain de passage à un double canal DDR n'apporte qu'un gain modeste de 5% (estimation généralement admise).
Un autre argument qu'on suggère aux lecteurs est que ce microprocesseur pourrait fonctionner à une vitesse bien supérieure à 2 GHz (maximum défini par Intel pour les portables). Bien sûr je suis moi-même convaincu que ce microprocesseur pourrait tourner à 2.2 voire 2.4 GHz dans un ordinateur de bureau car celui-ci permet souvent l'utilisation de refroidisseurs bien plus efficaces que ceux des portables, mais permettrait aussi d'augmenter la tension appliquée au core. Toutefois c'est perdre de vue que l'architecture du Dothan dispose d'un pipeline court (11 étages - lire compléments). En fait c'est même très court déjà pour 2 GHz. Or la longueur du pipeline reste un élément central de l'architecture d'un microprocesseur pour monter en fréquence. Donc ceux qui rêvent d'un Dothan à 2.8 GHz en version commerciale en version bureau en seront pour leur frais.
D'autres éléments ne militent pas en faveur du Dothan pour une version de bureau. Ses performances FPU indépendamment de ses mémoires caches restent assez faibles comparées à des Pentium 4 Northwood ou Athlon-64 comme le montre le site aceshardware (lire : Tejas dead, long live PIII-M ?). La puissance en calcul flottant est un élément important de la puissance d'un ordinateur de bureau car il manipule plus souvent des applications multimédias et plus lourdes, en tout cas son cahier des charges prend beaucoup plus en considération ce type de calcul. Sinon il suffit de prendre les jeux comme exemple. Les portables n'ont pas de problème avec cela car leur carte graphique est leur principal facteur limitant, mais si ce n'était pas le cas le Dothan ne serait pas à la fête. Quoique la taille monumentale de sa mémoire cache L2 et son faible temps d'accès cache en grande partie cette faiblesse.
Je donnerais encore un dernier point. Le Dothan est un microprocesseur gravé en 0.09 micron. Ce n'est pas parce que les résultats du Prescott, premier microprocesseur de bureau gravé en 0.09, ont été pour l'instant décevants qu'il faut supposer qu'il en sera toujours ainsi ou que l'Athlon-64 suivra la même voie. Attendez quelques mois et si un site décide de faire la comparaison entre le Dothan 2.0 GHz et un Athlon-64 en 0.09 micron à 2.6 GHz intégrant quelques améliorations, ou encore un Prescott à 4 GHz avec 2 Mo de cache L2, vous verrez que le Dothan ne joue pas dans la même cours.
Ceci étant dit il n'en reste pas moins que le Dothan est un beau microprocesseur, et son principal atout réside dans un rapport performances/consommation excellent. Toutefois je ne dirais pas exceptionnel. L'Athlon-64 mobile arrive et sa version 0.09 micron devrait donner du fil à retordre au Dothan en particulier dans les calculs scientifiques. Par contre en agrément d'utilisation et en bureautique le Dothan devrait rester devant (merci à son cache L2 exceptionnel).
Maintenant si tant de gens rêvent d'un Dothan, pour leur PC de bureau, ce n'est pas nécessairement à cause de ses performances, mais plutôt parce que les gens commencent peut-être à trouver totalement ridicule cette course à la puissance au détriment de la consommation énergétique, de la dissipation de chaleur et de problème de maîtrise du bruit que font les systèmes de refroidissement. L'engouement pour le Dothan révèle peut-être un malaise des utilisateurs de PC qui n'a pas grand chose à voir avec la puissance. Je serais curieux de connaître votre avis sur la question, alors n'hésitez pas à utiliser le forum dédié à ce mini-article.
Compléments La profondeur du pipeline du Dothan est de 11, même chose pour le Banias et de 10 pour la génération Pentium 3, pentium 2, Pentium pro. L'Athlon-64 a une profondeur de 12. La faible différence de profondeur de pipeline entre le Dothan et l'Athlon-64, si elle explique en partie la différence de capacité de monter en fréquence, ne l'explique pas totalement. A partir du moment ou vous avez une taille de pipeline défini et une fréquence vous pouvez ou ne pouvez pas vous permettre de faire certaines choses. Ainsi l'extraordinaire faible latence du cache L2 du Dothan ne s'explique en partie que parce qu'Intel savait qu'il ne définirait qu'une faible fréquence de fonctionnement, d'un autre coté AMD visait la fréquence la plus élevée possible en fonciton du pipeline défini. ainsi les latences de leur cache L2 sont plus élevées. Le pipeline ne participe qu'en partie a définir la latence du cache L2, mais elle y participe. A titre d'information la latence globale du cache Lé du Dothan est de 10 cycles et celle de l'Athlon-64 de 16 cycles.
|

|
Par JF Maquiné le 12 Mai 2004 |    | |
Vous l'avez sans doute appris ce week-end, Intel a annoncé la fin du Tejas c'est-à-dire du successeur du Prescott. C'est une surprise soyons clair, personne ne s'y attendait. Maintenant beaucoup de questions restent en suspend.
Pourquoi le Tejas a-t-il été annulé ? Personne n'a la réponse exacte sauf Intel et ça m'étonnerait qu'ils l'a donnent. Mais il faut recituer le contexte de la série Pentium 4. Il y a d'abord eu le Willamette (1ère génération d'architecture Netburst) ensuite le Northwood qui, malgré le fait qu'il n'était qu'un Willamette avec un plus cache L2 et un FSB plus important, a montré un bon niveau de performances. Vient ensuite le Prescott (2ème génération). Devait succéder au Prescott le défunt Tejas. Mais était-il comme le Northwood un Prescott amélioré et surtout avec de plus gros caches ou un Pentium 4 de 3ème génération ? Dans mon article sur le Prescott je laissais sous-entendre comme de nombreux autres que le Tejas serait au Prescott à peu près ce que le Northwood était au Willamette à ceci près qu'il aurait aussi des caches L1 plus gros et quelques petites améliorations mais rien de plus.
Or avec les informations dont je dispose aujourd'hui je suis convaincu que le Tejas n'était pas une vulgaire suite au Prescott mais le Pentium 4 de 3ème génération. En premier le Tejas devait intégrer une évolution de l'hyper-threading. Ensuite le Tejas devait effectivement avoir un pipeline modifié. Dans quel sens ? En fait le Tejas était prévu pour être fabriqué en 0.065 micron, même si une version 0.09 aurait vu le jour en premier. On peut donc supposer qu'Intel en aurait profité pour monter en fréquence. Or pour ça et vu les gains de plus en plus faibles que permet la baisse de taille des procédés de fabrication, il aurait fallu à nouveau agrandir le pipeline (35/40/45 étages ? A vous de choisir). Le Tejas devait aussi être le premier Pentium 4 à disposer d'instructions 64 bits fonctionnelles (tiens on retrouve un point commun avec l'Itanium). A cela s'ajoute en version 0.065 micron un cache L2 supérieur à 2 Mo (4 Mo ?). Bref le Tejas aurait plus ressemblé à un Itanium qu'à un Pentium 4 (pas dans l'architecture mais dans la puissance). Ainsi peut-on se demander si le Tejas n'aurait pas fait de l'ombre à l'Itanium ? oui et non. Oui parce qu'en tant que processeur 64 bits il aurait bien pu faire de l'ombre à l'Itanium, en tant que processeur de calculs flottants, l'Itanium reste un monstre. Non, car il existe un autre aspect. Avec l'arrivée des processeurs multi-core le Tejas n'était peut-être plus adapté au marché. En fait je me demande sérieusement si le core du Tejas se prêtait si bien au multi-core. Il n'y a évidemment rien de sûr, mais j'ai comme un sérieux doute. Bref en résumé. Le Tejas aurait été un monstre de puissance, de fréquence, de mémoire cache L2 pouvant faire de l'ombre à l'Itanium mais inadapté à l'orientation rapide du marché vers le multi-core.
Les conséquences de l'annulation du Tejas En annulant le Tejas, Intel réoriente ses priorités pour foncer droit sur le multi-core avec comme base le core Dothan (j'ai dit base pas le Dothan lui-même, on verra d'ici 1 an). En même temps on a deux projets bien séparés : multi-core 64 bits grand public et petit serveur, Itanium multi-core pour gros serveur. Alors qu'avec le Tejas les idées de fusion entre processeur petit serveur et gros serveur semblaient germées dans l'esprit d'Intel. L'idée n'est pas nouvelle et est déjà appliquée par IBM avec ses POWER et ses PowerPC ayant une base commune. Intel dépense beaucoup d'argent pour maintenir deux projets de front (architecture Epic avec l'Itanium et l'architecture IA32/64 avec les banias/Dothan et les Northwood/Prescott). En fait si on remarque que l'architecture Netburst (Pentium 4) est assez différente de celle des Banias/Dothan (issue plutôt du l'architecture P6), Intel travaille simultanément sur trois architectures totalement différentes.
L'architecture Netburst s'arrête-t-elle avec la mort du Tejas ? Honnêtement je n'en sais rien (ce qui ne m'empêche pas d'avoir mon idée). On sait aujourd'hui que le Prescott va avoir une durée de vie très courte et sera remplacé par le Prescott II, à la manière dont le Northwood a remplacé le Willamette. Plus gros cache L2 et FSB plus important (200 MHz quadpumped, contre 266 MHz quadpumped). Toutefois au regard du paragraphe précédent, on peut penser qu'Intel est gêné avec le développement de trois projets de front qui ont peu de points en commun. Cela coûte de l'argent (quoique Intel en ait pas mal) mais aussi du temps. Ce dernier point est important car on est dans une ère de transition (microprocesseur 64 bits grand public et multi-core). Or la recherche sur le 64 bits Itanium n'est pas transférable sur l'architecture Netburst de même que sur l'architecture P6. De même l'hyper-threading n'a jamais été transféré au banias, le récent Dothan n'en dispose pas non plus. D'un autre côté quand IBM a développé le 64 bits pour ses Power il était viable pour ses PowerPC, de même que ses travaux sur le multi-core. Certes avec des adaptations, mais aussi avec énormément de points communs ce qui est un gain en R&D, en argent et surtout en temps.
Conclusion Evidemment nous disposons de peu d'informations et Intel pourrait très bien continuer de maintenir le développement de ses 3 fronts de recherches sur des architectures assez différentes. Mais cela va coûter beaucoup d'argent alors que ses concurrents optimisent les développements en créant de multiples passerelles entre microprocesseur destinés au marché des professionnels et grand public. Mais plus encore que le gain d'argent c'est la réactivité d'Intel à pouvoir transférer les résultats de recherches dans un domaine donné (SMT, 64 bits, multi-core, ...) vers l'ensemble de ses microprocesseurs ce qui n'est pas le cas actuellement à quelques exceptions près comme le SSE. Au final, soit Intel va nous sortir une surprise de derrière les fagots là où on ne les attendait pas, soit ils vont recentrer leur R&D sur deux fronts et l'architecture Netburst sera abandonnée. Il faut se rappeler que lors de la sortie du premier Pentium 4, un certain nombre d'ingénieurs chez Intel s'étaient exprimés et pensaient que cette architecture était une erreur, mais sauvée par la compétence de l'entreprise dans ses moyens techniques de fabrication.
J'irais plus loin. Non seulement je pense que l'architecture Netburst est finie, mais je pense qu'Intel va tout faire pour avoir le plus grand nombre de points communs entre les projets restants afin de maximiser les retombés de ses différents groupes de recherches et ainsi disposer de meilleures capacités de réaction pour intégrer des innovations techniques.
|


|
Par JF Maquiné le 05 Mai 2004 |    | |
Durant le week-end, des informations complémentaires sont apparues sur internet. La première est (et pas des moindres) que les dual-core qui, je le rappelle, sont basés sur l'Athlon-64 seront compatibles avec les opteron actuels. Cela signifie que si vous possédez une machine à base d'opteron, vous pourrez le remplacer par un dual-core. A l'heure où beaucoup s'interrogent sur les capacités pratiques d'évolution des PC, il s'agit là d'un coup de maître d'AMD pour imposer sa technologie.
La seconde remarque concerne le fait que si j'ai pinaillé sur l'absence d'un cache commun pour le premier dual-core d'AMD, il faut aussi rappeler à juste titre que d'une part l'hyper-transport permettant la communication entre processeur et core est très efficace chez AMD, ensuite que ces microprocesseurs disposent d'un contrôleur cache intégré permettant de réduire les temps de latence, ce qui en termes de multiples et importants échanges est un atout. Donc si les caches L2 sont bien indépendants, les liens hyper-transport quant à eux relient les core. Bien que restant inférieures à une solution de mémoire cache interne partagée, les performances devraient être au rendez-vous.
La troisième remarque concerne le fait qu'AMD, après avoir sorti un processeur 32/64 bits performant damnant le pion à Intel, récidive avec une version dual-core pour 2005, alors qu'aucune solution de ce type n'est prévue chez Intel avant 2006. En tout cas pas dans cette catégorie. Cela est d'autant plus remarquable qu'AMD fait ça avec une technologie de gravure de 0.09 micron SOI, alors qu'Intel est empêtrée dans des problèmes de design et de gravure en 0.09.
La quatrième remarque concerne le core utilisé. Est-ce les modèles actuels, ou les nouveaux core intégrant SSE3, optimisation du prefetching, ... ? Si le SSE3 n'est essentiel comme technologie pour des microprocesseurs de ce type, le prefetching hardware serait par contre un plus indéniable.
Cinquième remarque. J'en ai déjà touché deux mots à travers quelques mini-articles, mais je le rappelle ici. Les processeurs multi-core sont des processeurs gourmands en bande passante mémoire. Donc le fait d'utiliser les dual-core d'AMD pour remplacer les opteron si cela s'avère un bon plan, il n'en restera pas moins que cela ne révèlera pas leur véritable puissance, il faudra attendre de les voir fonctionner sur des solutions double canal mémoire pour s'en faire une meilleure idée.
Dernière remarque : Je vais cette fois-ci être moins optimiste pour AMD. Si pour l'année 2004/2005 AMD fait montre d'une certaine domination dans des choix technologiques intelligents, je crains le pire pour 2006, lors de la sortie des solutions dual-core d'Intel. Pourquoi ? Parce que tout porte à croire que la norme sera des processeurs hyper-core (terme que j'ai inventé il y a quelques temps). Hyper-core signifiant multi-core et multi-threating. Or AMD semble totalement absent sur les technologies multi-threading, il n'y a même pas l'ombre d'une rumeur. Il se peut qu'ils aient quelque chose dans leur carton, mais je rappelle que la mise en place d'une technologie multi-threading et de préférence simultanément multi-threding (SMT) est une des choses les plus complexes à mettre en oeuvre actuellement dans un microprocesseur. Il serait étonnant qu'ils puissent sortir cette technologie d'un chapeau de magicien en 2 mois. 2 possibilités se présentent : ils travaillent dessus avec ou sans l'aide d'IBM. Ils n'en proposeront pas avant 3 ou 4 ans. Une chose est sûre c'est que ce n'est pas une technologie interchangeable comme le SSE3. Ils ne pourront donc pas demander à Intel d'utiliser celle qu'ils auront développé à ce moment.
|

|
Par JF Maquiné le 04 Mai 2004 |    | |
Le site Anandtech a sorti un test du chipset de carte mère ATI 9100 Pro IGP et on a eu droit à une surprise de taille. Sur cette carte mère le Prescott 2.8 GHz fait souvent mieux que le Northwood 2.8 GHz. Ceci est d'autant plus remarquable que le Prescott voit ses performances moins baisser avec une augmentation de fréquence. Ce qui signifie qu'à 3.4 GHz la différence Prescott / Northwood serait carrément en faveur du Prescott.
Il est clair qu'en voyant de tels résultats, et rien ne laisse supposer qu'ils puissent être biaisés, force est de constater que les sites qui ont fait un article sur le Prescott (Onversity y compris) ont oublier de prendre en compte un élément et que celui-ci explique vraisemblablement la raison des bonnes performances du Prescott dans le test de Anandtech. Oui, mais lequel ?
Qu'est-ce qui différencie le Northwood du Prescott au point de pouvoir rattraper les 5 à 10% de différences de performances constatées dans la majorité des tests lors de son lancement ? On pense de suite au SSE3, mais les programmes utilisés pour faire la comparaison n'utilisent pas encore le SSE3. Ce n'est donc pas cela du moins en grande partie et j'y reviendrais en fin de mini-article. Il faut chercher quelque chose qui soit en rapport avec le chipset. Une différence importante concerne les write buffers. Le Prescott en a deux fois plus. Mais en quoi cela influe-t-il sur les performances et à quoi correspond l'optimisation spécifique du chipset pour le Prescott ? Voici mon hypothèse. Les write buffers permettent une communication directe entre le processeur et la mémoire sans activer les mécanismes de mémoire cache. L'écriture ou la lecture en RAM est donc plus rapide avec les write buffers. Or ce qui sépare le processeur de la RAM c'est le chipset (le northbridge pour être précis) qui intègre le contrôleur mémoire. Force est de constater que le design du chipset ATI a été défini pour exploiter au mieux la grande quantité de write buffers du Prescott. De quelle manière ? Je vois deux possibilités. La première serait que le nombre ou la taille d'entrées / sorties permettant la communication entre les write buffers du Prescott et les buffers servant de mémoire cache aurait été augmenté. La seconde est vraisemblablement que plus le nombre de write buffers augmente, la vitesse de remplissage / désemplissage des buffers du chipset augmente quasiment proportionnellement. Donc les buffers du chipset seraient bien plus importants que ceux de chipsets dédiés au Northwood comme le i865 ou i875. En résumé avec un Prescott le chipset ATI 9100 Pro IGN effectue des opérations mémoires bien plus rapidement qu'avec un Northwood.
Toutefois cela ne signifie pas que la bande passante mémoire pour les applications classiques augmente de manière importante. Effectivement les write buffers sont efficaces lors de gros transferts. Or ce type de transfert s'effectue majoritairement lors de la mise en oeuvre de l'AGP. Ceci permettrait d'expliquer les termes de : chipset et port AGP optimisés Prescott.
Pour en revenir au SSE3. Dans mon article sur le Prescott j'avais constaté un certain potentiel en particulier dans sa capacité à mieux laisser s'exprimer les nouveaux mécanismes de prefetching hardware du Prescott. On peut donc raisonnablement penser qu'ATI a développé un driver AGP optimisé SSE3. Ce qui joue certainement son rôle dans les très bons scores du Prescott dans les jeux. Plus généralement, il faudra manifestement compter plus que prévu sur le SSE3. En premier il serait bien que Microsoft optimise DirectX aussi pour SSE3, ensuite nous verrons d'ici peu des drivers de carte graphique optimisés SS3 et pour finir des applications optimisées SSE3. Lorsque tout cela sera réuni, je crois que le Prescott sera un microprocesseur parfaitement honorable et surtout recommandable. Toutefois il reste regrettable qu'à instruction égale le Prescott soit plus lent de 5 à 10%, mais j'ai eu des échos que cela pourrait bien être réparé par Intel avec le Tejas qui semble avoir retenu la leçon ;).
Plusieurs conclusions. En premier, peut-on s'attendre à voir un Prescott véloce sur les futurs chipsets Intel (i915, i925) ? Si mon hypothèse est exacte, certainement. Donc le Prescott devrait très bien fonctionner sur ces futurs chipsets. En second, peut-on penser que le Prescott sera plus ou autant performant qu'un Northwood sur les cartes mères compatibles Prescott équipées des chipsets i865 et i875 ? Lorsque les différentes applications comme DirectX, les jeux, ... seront optimisées SSE3 il y aura un mieux, mais d'une part ces chipsets ne disposent pas d'optimisation de leur gestion de buffers pour le Prescott ce qui signifie que la taille de leurs buffers est insuffisante et qu'ils n'utilisent pas vraisemblablement pas tous les write buffers du Prescott au mieux. Cette optimisation du chipset est à mon avis l'optimisation la plus importante. Je doute aussi qu'Intel fasse un driver pour port AGP optimisé SSE3 et ceci afin de ne pas dévaloriser leur futur chipset.
Un dernier point. On sait le Northwood particulièrement friand de bande passante, mais avec un doublement des write buffers et un prefetching hardware nettement amélioré, le Prescott risque de s'avérer encore plus gourmand. La DDR-2 sera donc un allié de choix pour ce microprocesseur. |

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


 
 
|