On Tue, 30 Apr, 2002 à 01:55:49PM +0200, frederic massot wrote: > georges mariano wrote: > > > > ... > > > > > Pourquoi Debian fait ça ? > > > - Parce que le gain de vitesse en compilant pour i686 est ridicule > > > pour la plupart des applications. > > Cela veut-il dire que la plus part des améliorations apportées aux > processeurs (ajout de nouvelles instructions, ...) sont inéfficaces ?
Pas du tout. Prenons un brave programmes compilé pour 386. Prenons 2 machines relativement identique (même fréquence, même RAM), l'une doté d'un 386 original et d'un 387 et l'autre d'un Pentium (I, II, III, Xeon, peu importe). Je ne sais pas à quelles turpitudes il faut se livrer pour trouver une 386 et un Pentium qui se ressemble à ce point, mais passons. Le programme va tourner (à fréquences égales je le rappelle), nettement plus vite sur le Pentium, de 2 à 5 fois plus vite grosso-modo. Magie ? Non, une même instruction s'exécute en moins de cycle d'horloge. Sur un 386, bon nombre d'instruction s'exécutent en plus de 10 cycles, sur un pentium, peu d'instructions nécessite plus de 3 cycles. De plus le pentium dispose de quelques avantages : mémoire cache intégré au proc, meilleure gestion du cache, prédiction de branchement (à partir du II il me semble) possibilité de paralléliser certaines instruction (ça ne va pas bien loin, mais on peut faire un calcul FPU en même temps qu'un opération CPU simple pour les premiers pentiums alors que les récents ont 2 ALU je crois). En fait, le 686 a été conçu pour améliorer les perfs des programmes fait pour le 386, c'est pour cela que la recompil n'apporte que des gains marginaux. > Quels sont les changements apportés à un programme compilé avec l'option > i686 à la place de i386 ? D'abord, éviter les branchements (*), alignements mémoire sur des multiples de 4 plus strict. Après, ça dépend de la qualité du compilateur, utiliser des instructions spécifiques pour certaines opérations peut représenter un gain de temps significatif (BSET par exemple). En général, ça ne vaut le coût de compiler spécialement que pour tirer parti de spécificités : MMX, SSE. Ça peut être intéressant pour optimiser certains calculs d'une librairie scientifique, mais ça ne concerne en général qu'une partie d'une librairie. (*) Dans l'absolu (en nb de cycles perdus), les branchements ne sont pas plus grave pour un 686 qu'un 386 mais en vitesse relative c'est la cata : perdre 10 cycles sur un 386 correspond au temps d'une instruction, alors que 10 cycles sur un 686 c'est de 5 à 15 instructions de perdues. -- ( >- Laurent PICOULEAU -< ) /~\ [EMAIL PROTECTED] /~\ | \) Linux : mettez un pingouin dans votre ordinateur ! (/ | \_|_ Seuls ceux qui ne l'utilisent pas en disent du mal. _|_/ -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]