C'est parti : http://www.realworldtech.com/page.cf...WT082610181333
Ca m'a l'air relativement novateur.
C'est parti : http://www.realworldtech.com/page.cf...WT082610181333
Ca m'a l'air relativement novateur.
Impressionnant, un module de Bulldozer est capable d'utiliser 4 décodeurs en même temps pour passer la serpillière sur les Dispatch Group Buffers, ça va les nettoyer super vite !
Hum… bon, je vais lire la suite.
Un petit die shot :
(ça n'apporte que peu d'info mais ça embellit un peu le topic )
edit: c'est extrait de ce PDF
Dernière modification par Foudge ; 02/09/2010 à 01h44.
Euh, si, ça apporte de l'info... Là l'archi et la répartition sont flagrantes.
Mes propos n'engagent personne, même pas moi.
Je ne comprend même pas pourquoi les 4 modules ne sont pas identiques
edit: + les zones floues, les défauts d'alignements, ça pue le Photoshop pour ne pas tout dévoiler, en espérant que ce n'est pas un vulgaire patchwork
Dernière modification par Foudge ; 02/09/2010 à 01h42.
Oui ça a été photoshoppé et flouté à la barbare… D'après John Fruehe, pas de "vrai" die shot avant le lancement.
Je m'étais demandé hier soir si c'était mes yeux, l'alcool, la fatigue, ou la photo qu'était floue...
Elle est nulle cette photo. Et les modules haut et bas sont vraiment très différents
Mes propos n'engagent personne, même pas moi.
De toute façon, comparé à l'Atom tout est killer.
Bobcat vise le meilleur rapport perf/mm²/W possible, et en x86 je pense que ça doit être ce qui se fait de mieux de ce point de vue. Ça n'a rien de transcendant mais bon, le core ne fait que 4,6 mm², donc si ça atteint effectivement 80 % des performances d'un Athlon II, c'est pas mal du tout.
J'en profite pour poser une question sur un truc qui me travaille un peu.
Les unitées FMAC de Bulldozer sont censées être capables de faire un MUL, ou un ADD, ou un FMAC, mais j'ai l'impression à la lecture des différents articles sur Bulldozer, qu'elles sont incapables de faire un MUL + un ADD simultanément.
Dans ma tête, une unité FMAC, ça doit ressembler à ça (c'est du paint, soyez cléments) :
Si je ne m'abuse, avec la partie en noir, on peut faire soit un MUL, soit un ADD, soit un FMAC ; et il suffirait d'ajouter la partie en rouge pour pouvoir faire un MUL + un ADD en même temps.
Serait-ce vraiment si coûteux ? Ou le problème est-il lié à la gestion de deux instructions en même temps ? Aux opérandes ? C'est peut-être une question un peu naïve mais bon…
Je tente une réponse plusvaguegénérale.
Dans un FMA classique (disons de l'IBM RS/6000 à l'Itanium), tu n'as pas d'opérande D qui arrive : pour faire une addition tu transmets A à travers le multiplieur.
Pour faire une multiplication tu transmets A*B à travers l'additionneur.
Tu peux même avoir un jeu d'instructions qui n'a qu'une instruction FMA, et on multiplie par 1 ou on soustrait 0 pour faire des ADD et des MUL.
Toutes les opérations passent par tout le pipeline et ont la même latence (avec un bypass éventuel qui réduit juste la conso).
L'intérêt par rapport à un ADD et un MUL séparés ou cascadés, c'est que la latence est à peine plus grande que celle du MUL seul, et largement plus faible que celle d'un MUL suivi d'un ADD. En surface c'est kif-kif. En conso je sais pas.
Ce qui coûte cher dans l'addition flottante c'est le shifter qui va aligner les mantisses. Pour la multiplication c'est le multiplieur proprement dit.
Dans un FMA tu peux approximer très tôt l'exposant de A*B (c'est l'exposant de A + celui de B à 1 près), et commencer le shift en même temps que tu fais la multiplication. Donc tu recouvres le gros de la latence.
Pour ce qui est de Bulldozer (d'après les rumeurs...), le FMA est un peu bâtard parce qu'il est construit avec un "bridge" entre un MUL et un ADD classique. Il prend donc bien un opérande D tel que tu le décris. Et de ce que je comprends, oui, il permet de faire un ADD et un MUL simultanément.
C'est l'intérêt d'ailleurs : ils perdent en latence et en surface à la fois par rapport à un "vrai" FMA et par rapport à un ADD+MUL.
Mais ils gardent le même débit qu'une FPU traditionnelle sur le code existant, tout en gérant l'instruction FMA.
AMD ne s'attend pas à ce que les codes flottants se mettent à utiliser plein de FMA du jour au lendemain... Donc ils en font le minimum pour le supporter dans le jeu d'instruction. Un jour, ils décideront peut-être de remplacer le Bridged FMA par 2 FMA conventionnels, par exemple...
Edit: bien sûr, tout ça est conditionné par le fait que le FMA de Bulldozer soit bien basé sur l'unité bridged-FMA de Quinnell... Rien n'exclut qu'ils aient décidé d'employer un FMA classique à la place.
Dernière modification par Møgluglu ; 04/09/2010 à 23h06.
Merci !
J'avais pensé à zapper l'opérande D et à se contenter de faire (A × 1) + C, mais ça me paraissait pas terrible niveau power.
Je posais la question parce que je lis ici et là qu'un module de Bulldozer aura un throughput inférieur à un core de Sandy Bridge, sauf si le FMA est utilisé sur BD. Il me semble que D. Kanter le dit dans son récent article, mais j'arrive plus à retrouver la citation exacte.
Or, SB peut faire 1 MUL 256 bits + 1 ADD 256 bits par cycle, donc si un module de Bulldozer peut faire 2 × (1 MUL 128 + 1 ADD 128) ça revient au même, avec plus de macro-ops/µops, certes.
C'est toujours moins tant pire que de rajouter un opérande et un port de lecture dans le banc de registres...
Sur un proco x86 la majorité de ton budget power va dans le fetch/décodage/ordonnancement/spéculation/etc. par instruction.
Globalement, tu as intérêt à faire plus de travail par instruction (SIMD, fusion d'ops x86, FMA), même si tu tu retrouves à faire des calculs inutiles.
(Sachant qu'on sait très bien faire du clock-gating sur les datapaths inutilisés.)
Page 7, quand il dit que Bulldozer avec FMA > Bulldozer sans FMA?Je posais la question parce que je lis ici et là qu'un module de Bulldozer aura un throughput inférieur à un core de Sandy Bridge, sauf si le FMA est utilisé sur BD. Il me semble que D. Kanter le dit dans son récent article, mais j'arrive plus à retrouver la citation exacte.
Thank you Captain Obvious.Envoyé par DK
Mais la comparaison avec SNB n'est pas très honnête. Si quelqu'un doit revectoriser son appli pour AVX, il peut aussi bien en faire une version avec FMA pour Bulldozer.
Et dire "ouais mais un MUL+ADD est plus souple qu'un FMA, vu qu'on n'a pas toujours des chaînes multiplication-addition dépendantes", c'est oublier qu'un programme n'est pas juste un gros graphe de ADD et MUL flottants...
Un FMA (surtout à 4 opérandes avec double négation gratuite comme chez AMD) est aussi bien plus puissant qu'un MUL suivi d'un ADD, et sa latence est plus faible.
Tu peux certainement trouver plein d'applis qui brilleront avec un FMA (genre GMP).
Donc si un cluster Bulldozer utilise des FMA conventionnels, sa perf crête sera la même qu'un core Sandy Bridge (qu'on se limite à SSE ou qu'on utilise les nouveaux jeux d'instructions). Après, tout dépend des applis.
Intéressant... Au passage on voit même si on dit "intégrer un GPU dans le CPU", en surface c'est plutôt le contraire qui se passe...Envoyé par newbie06
Edit: Anand donne Tegra 2 pour 49mm² dont 10% occupée par les A9 [sans L2?]. Autrement dit, un Bobcat = 2 Cortex A9.
Dernière modification par Møgluglu ; 05/09/2010 à 11h03.
Euh, pour les perfs d'une version dédiée SNB vs version dédiée BD, je dirais 3DNow! et je relance direct d'un AVX. Question de parts de marché. Et d'ICC. Et de manuels bleus, ...
Mes propos n'engagent personne, même pas moi.
Quel mauvais esprit. Non, cette fois-ci il y aura un disclaimer au milieu du contrat de licence d'icc qui dira que les perfs ne sont pas forcément optimales sur les proco concurrents, donc ça change tout.
Mais bon, avant de penser à AVX/XOP faudrait déjà être arrêter le x87 et passer à SSE...
Oui j'ai vu ça, question perfs/mm² c'est clairement très prometteur. En ce qui concerne les perfs/W, par rapport à Atom, faut voir.
Intuitivement j'aurais pensé le contraire, mais vu comme ça, c'est logique.
Ça va dans ce sens, mais il me semble avoir lu une affirmation plus précise… ça devait pas être Kanter. Faut pas m'en vouloir, je suis un peu sénile.
J'y crois pas des masses, mais on verra !
Double négation gratuite ? D'après Google, t'es le seul mec au monde à avoir employé cette expression… :D Enfin maintenant on est deux, mais moi je sais pas ce que ça veut dire.
C'est à peu près pareil pour Llano, le die fait 225 mm², et chaque core fait un peu moins de 10 mm², et quelque chose comme 16~17 mm² avec le cache.
Les 3 ou 4 mecs qui utilisent les 80 bits de précision du x87 auraient râlé…
Non, IA64 n'est pas x64.
Et se passer, en mode 64bits de x87 pour faire du sse scalaire (sans préjudice à faire du x87 en mode 32bits), ça permettait de conserver la compatibilité binaire tout en se débarrassant du x87.
Par contre, il y a les 7 mecs dans le monde qui utilise le 80bits qui auraient posé problème.
Mes propos n'engagent personne, même pas moi.
N'empêche, à une époque j'étais aussi le seul mec au monde à dire "Unfused Multiply-Add", maintenant il y a plein de gens qui l'emploient.
Je voulais parler du fait que tu as des instructions pour faire tous les calculs de la forme ±a*b±c (VFMADDxx, VFMSUBxx, VFNMADDxx, VFNMSUBxx). Les 2 négations possibles dans l'expression sont gratuites.
En fait, je vois pas où est le problème. Il y a effectivement 17 personnes sur terre qui utilisent le x87 en mode 64-bit, mais quel est le tord qu'il font aux autres?
Tous les compilos x64 que je connais génèrent du SSE par défaut (*). Il faut aller chercher dans des options de compil obscures pour faire autrement.
Les programmes "legacy" qui utilisent le x87 sont juste des programmes compilés en 32-bit pour Windows. Parce que tu vas pas embrouiller les utilisateurs à choisir entre 2 versions alors que la version 32-bit tournera parfaitement sur les deux plates-formes IA-32 et x64.
Interdire le x87 en x64 ne changerait rien à l'affaire.
(*) À l'exception de certains bouts de MSVC semble-t-il, mais faut comprendre Microsoft en même temps : SSE est tellement une technologie de pointe qu'ils n'ont pas encore eu le temps de recompiler leur libm. Et c'est pas à cause du mode 80-bit, qui pour autant que je sache n'a jamais existé sous Windows.
Dernière modification par Møgluglu ; 05/09/2010 à 16h32.
http://dl.dropbox.com/u/232602/NV-40-T20-Blocks.png
Attention ce sont des A9 sans les instructions SIMD (NEON). Avec SIMD, c'est bien plus gros.