Je disais ça dans le sens où avec le multicore, on a un moyen facile (mais couteux) de respecter la loi de Moore pour un bon moment. Mais merci pour le lien, je ne connaissais pas cette loi.Envoyé par Franck@x86
Je disais ça dans le sens où avec le multicore, on a un moyen facile (mais couteux) de respecter la loi de Moore pour un bon moment. Mais merci pour le lien, je ne connaissais pas cette loi.Envoyé par Franck@x86
Ca me parait assez logique (je ne connaissais pas Amdahl, merci Franck). Une fois que t'auras du Dual-Core partout, faudra bien revoir à réaccélérer ces cores, donc retour à des pipelines longs.
En plus, je suis pas spécialiste, mais les impacts en termes de développement semblent assez hallucinants. Je me trompe peut-être, mais c'est pas juste mono/multithread, non? Y a plein de cas où tu peux pas gagner, ou au mieux t'auras un gain avec 2 cores, mais en avoir 4 t'apportera rien, ou si peu que l'investissement pour optimiser à 4 (ou plus) est rédhibitoire. Déjà le boulot pour optimiser pour du multithread uch:
Plus ca va, plus je vois bien l'intérêt grand public en termes d'utilisation d'avoir 2 cores, mais pas beaucoup plus, genre freeplayer quand je suis en train de jouer - cas où l'HT suffit pas. A propos, pour les benches, ca me semble plus réaliste qu'encoder en Divx pendant les jeux. Mais au-delà, je vois pas trop. Résultat: faudra bien revoir à remonter en fréquence.
D'après Tanenbaum (Architecture de l'ordinateur) le p2 dispose de 40 registres int avec ROBEnvoyé par seb64
Mes propos n'engagent personne, même pas moi.
4 core, on peut encore espérer du gain, on a pu le voir avec les derniers G5 chez Apple, qui utilise 4 processeurs. Le truc c'est qu'un programme qui tire partie de 2 core correctement (genre compression vidéo) tirera bien parti de 4 core. Mais pour les programmes qui utilise pas 2 core correctement, passer à 4 change rien.Envoyé par ylyad
On risque donc d'avoir quelques programmes qui verront leurs perfs augmenter (essentiellement la vidéo) et seront utilisé dans les benchs constructeurs, et le reste qui offira un gain en puissance marginal, ce qu'on "oubliera" de nous dire.
C'était une question de mon exam d'architecture avancée. ... et j'ai pas répondu.Envoyé par Franck@x86
"si tout le monde s'etait dit "pour quoi faire ?" je pense qu'on tournerait encore sur 8086. Si tant est qu'on ait l'electricite ... " Franck@X86
If all goes well will Dell sell Cells?
<°)))><
Oui, y a des cas... Mais là où j'ai un doute, c'est le côté évident de "un programme qui tire partie de 2 core correctement tirera bien parti de 4 core". Parce que il me semble me souvenir d'une interview (Carmack? mais ce qu'il disait ne s'appliquait pas forcément qu'aux jeux) expliquant que le multithreading n'était pas forcément la panacée: problèmes de synchro, de latences, d'attentes... et arriver à gérer ca sur 2 threads ne veut pas forcément dire gérer ca correctement au-délà.Envoyé par dandu
Dans le cas de la video, ca me semble assez facile de décomposer les tâches au départ, de les traiter de manière indépendante, et des regrouper les résultats à la fin; mais ce principe est loin d'être applicable pour tout.
D'ailleurs, pour le côté parallèle, le GPU a une archi plus adaptée, non? Du coup, la prise en charge de ce genre de traitements par le GPU serait plus efficace que par le CPU.
A mon sens, le gain du multi-core va plus bénéficier au niveau global de l'ordinateur, soit deux applis pas forcément liées qui tournent en même temps, plutôt qu'à l'intérieur de la même appli.
Conséquences: primo, c'est le scheduler de l'OS qui est le point critique; secundo, la limite en nombre de cores va être vite atteinte.
Bon, c'est pas mon rayon non plus, donc y a sans doute des trucs que j'ai pas bien compris :D
Tiens comme par hasard dans le prochain PC Update (mars) y'a un article sur les optims dual/multi-cores :-)
Dans un jeu par exemple l'idée est de créer un thread par sous-système (IA, physique, collisions ...). Donc plus y'a de CPUs meilleure est la répartition, enfin ça me semble logique.
Ce n'était pas l'idée initiale du PPU ?Envoyé par Franck@x86
Non, le PPU prend en charge le moteur physique et les collisions. Donc PFD, forces, impulsions et tout le toutim. Il le fait rapidement (+ rapidement que le CPU), sûrement en parallèle en interne. La synchro avec le reste du moteur c'est pas son affaire.
A propos des registres renommes et du reorder buffer vu qu'il semblerait qu'il y a un peu de confusion dans un post au dessus.
Tous les microprocesseurs supportant l'execution dans le desordre ont un ROB afin de garantir que l'execution du programme est conforme aux specifications du jeu d'instruction (qui garantit pour l'utilisateur que le programme se passera comme si tout avait ete execute dans l'ordre, l'un apres l'autre).
Les faults, les ecritures memoires et bien d'autres choses ont besoin de cette garantie donc tous les microprocesseurs OOO en ont un.
Apres pour les registres de renommage il y a plusieurs choix d'implementation.
En theorie si un microprocesseur a un rob de X entrees il peut garder X instructions au vol qui chacune genere un resultat au maximum. Donc au maximum tu pourras avoir X registres temporaires en supplement des registres de l'architecture (x86 dans notre cas).
L'implementation triviale est celle qu'a employe le P6, associer ces X registres temporaires aux X entrees du Rob 1<->1 ce qui facilite pas mal la logique en interne car le numero de l'instruction en interne est aussi le numero de son registre.
C'est simple a faire et on est garanti que l'on ne manquera jamais de registres, ce sera toujours la taille du rob le facteur limitant.
En revanche prevoire pour le pire des cas est en general assez couteux, en effet en gros 1/4 des instructions ne generent pas de resultat dans un registre (branchements et store par exemple), donc on peut en fait avoir 3/4X registres et tres bien s'en sortir. Cela pose le probleme de numerotations, et il faut pour cela garder une table de renommage des registres (le numero de registre != numero de sequence). En plus de cette table il faut etre capable de restaurer l'etat de la machine avant un mauvais branchement donc il faut etre capable de faire des rollback sur la table de renommage (alors qu'en cas de stockage dans le rob il suffit de revenir dans le rob a l'instruction qui a cree le probleme de speculation). C'est cette derniere methode que P4 utilise ainsi que le K7/K8.
Donc pour revenir au commentaire d'origine, le P6 a des registres de renommage, le fait qu'ils soient joints au ROB n'est qu'une astuce algorithmique/architecturelle.
Voila c'etait mon 1/4 d'heure registres de renommage.
fefe - Dillon Y'Bon
Tu sais pourquoi ce choix sur P4 - K7/K8 ?
Pourquoi ne pas avoir systématiquement un registre temporaire pour chaque élément du ROB si c'est plus compliqué autrement ?
Quel est l'intêret de cette économie de quelques registres ?
Si je comprends bien, le PPU serait au GPU ce qu'était le coprocesseur 487 face au 486 et antécédents ??? Enfin de façon très imagée hein.Envoyé par Franck@x86
Le RoB du P6 faisait 20 entrees quand il a ete concu, la difference entre 16 et 20 registres est quelque peu negligeable, le P4 avec un RoB de 128 entrees la difference devient plus importante et avoir une table de renommage commence a couter moins cher en power et en surface.Envoyé par Yasko
A priori ce n'est pas cette raison qui les a pousse a employer cette methode mais plus le fait que le P4 et le K7 sont des machines "clusterisees" afin d'atteindre de hautes frequences, c'est a dire que les ports de dispatch sont separes pour l'entier la memoire et le FP. Cette clusterisation est faite en general pour essayer d'eviter d'avoir un point central d'ou tout part et tout revient comme le RoB et la RS du P6. Tu as donc des registres qui ont moins de ports en lecture ecriture, qui sont separes par type d'unites de calcul et localises juste a cote (avec de petits schedulers d instructions qui ne contiennent que les pointeurs vers les registres au lieu de la donnee en elle meme comme dans la RS), au lieu d'une RS centrale, et d'un ROB qui au final du a la quantite de ports de lecture/ecriture deviennent assez limites en taille.
La frequence montant les grosses structures centrales et loin des unites d'execution deviennent ingerables (il y a plein de choses qui doivent etre a tout pris finies en 1 cycle) et on doit changer tout ca pour obtenir des structures distribuees plus simples, localisees la ou il y en a besoin, mais au cout d'algorithmes d'allocation/desallocation/recuperation de prediction complexes (mais pipelinables en plusieurs cycles).
Le K7 a ete concu en prevoyant des frequences legerement plus elevees que le P6, le P4 encore plus, et les 2 visaient une machine OOO capable de garder plus d'instructions au vol. Au moment ou ils ont pris la decision d'abandonner RoB/RS centralise je pense qu'il n'y avait pas le choix car ils n'auraient jamais reussi a monter en frequence aussi vite.
Aujourd'hui la course a la frequence s'est arrete dans le mur du power, et les mecanismes simples d'hier peuvent redevenir interressants car avec les technos de gravages actuelles, peu importe si tu es limite a 2.5GHz quand la machine qui est concue pour tourner a 5GHz tourne a 3.6GHz (et donc a des performances lamentables).
La version simple avec les donnees dans le ROB est aussi assez limitee quand a son avenir, en effet pas mal de mecanismes (futuristes pour l'instant) d'optimisations sont plus a l'aise lorsqu'il manipulent des pointeurs vers les registres que la donnee elle meme (cf par exemple des articles sur le memory renaming).
J'espere que je reponds a ta question.
fefe - Dillon Y'Bon
quel bordel un CPU sans déconner
(ça c'est une remarque stérile de samedi soir)
Mais non c'est fun .Envoyé par Franck@x86
Heureusement qu'on n'a pas attaque une discussions sur replay, parce que la tu aurais ete dans le vrai .
fefe - Dillon Y'Bon
comme on évoque la loie de G Amdahl sur du parallelisme et ces limites
Quelqu'un pourrait il expliqué celle de gustafson
http://arxiv.org/ftp/cs/papers/0209/0209029.pdf
J'utilise un autre cours sur l'architecture systéme qui pourrait vous interesser. Je sais qu'il y en en bcps sur le net mais celui ci est tres progressif.
http://meseec.ce.rit.edu/.
Mon expérience c'est que un tés bon cpu ne remplace pas un trés bon compilateur
Mon experience me dit surtout que rien ne vaut un algorithme bien pense et bien code, et que le reste est un probleme secondaire.Envoyé par hellskey
fefe - Dillon Y'Bon
slt,
certainement, un bon algo à la base, c'est déja pas mal. Mais comme on ne va pas réecrire ts les pgm , il nous reste le premier élèment commun: le compilateur.
J'ai pas trouvé de topics sur les compilateurs. Cela interesse qq ?
Tiens ça me rappelle un vieux débat sur onversity.
http://www.onversity.net/cgi-bin/progcafe/cafetted.cgi?Eudo=bgteob&For=onversity&Cat=article s&Dom=informat&Inti=Langage+C+$3a+l$27optimisation +de+code&Numfor=00000838&Tri=date&LigQ=0&LigR=0&Di c=informat&Rload=a&Numquest=00000577&Sujet=Optimis ation+algorithmique+$3f$3f
(record du monde du lien le + long)
Hannnn c'était bien ca alors ?Envoyé par Franck@x86
En février 2004 je parlais de l'hypothèse de l'abandon des fast alu remplacées par le double d'alu normale personne m'a cru omnibulé par l'hypothèse plus sexy ... (bon ok, j'ai pas argumenté pendant deux ans non plus mais bon :D )
j'ai achete le mag. j'ai decouvert le OOO, et les pipelines longs, va falloir que intel trouve une pirouette marketing pour revenir plus tard a ces pipelines longs ( du genre : "on maitrise plus mieux")
A poil
Ridgefield/Wolfdale ?Envoyé par eponge