[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: i386, i686 et paquets debian



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                                      -< )
 /~\       laurent@nerim.net                                    /~\
|  \)    Linux : mettez un pingouin dans votre ordinateur !    (/  |
 \_|_    Seuls ceux qui ne l'utilisent pas en disent du mal.   _|_/


-- 
To UNSUBSCRIBE, email to debian-user-french-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: