Michael Opdenacker wrote:
Bonjour,
juste pour info : un PIV pour augmenter sa fréquence a dû aussi
augmenter la longeur des pipelines.... or il faut savoir qu'un cpu
actuel pour ne pas perdre trop de temps lors d'un branchement
ie une structure d'un prgramme
if (condition)
{
branche 1....
}
else
{
branche2...
}
utilisé dans tous les programmes, va engender un prédiction de
branchement, cad que le cpu va commencer à exécuter les commandes de
la branche la plus probable (par exemple la branche1)
il va donc commencer à mettre des instructions dans le pipeline.....
hors si par malheur la prédiction fut fausse, le pipeline rempli doit
être flushé..... hors ce méchanisme est extrêmement gourmand en
temps.....
sur un programme sans branche (il faut bien rêver) un PIV serait
beaucoup plus rapide qu'un AMD ou un centrino (qui au passage est un
jeu de puces et non pas un proc, le PIV M est un proc [qui d'ailleur
dérive de l'architecture PIII et non pas PIV] mais je m'égare....)
mais il s'avère que tout cpu ne sait pas lire le marc de café.....
donc un PIV va passer son temps à flusher ses pipelines.....
question ménage c'est bien.....
Intéressante, cette discussion.
Au passage, c'est souvent le programmeur le mieux placé pour aider le
processeur à deviner ce qui est le plus probable. Par exemple, le
noyau linux fournit des macros "likely" ou "unlikely" (voir
http://lxr.linux.no/ident?i=likely) que les programmeurs peuvent
utiliser.
Est-ce que certain(e)s d'entre vous sauraient faire ca dans un
programme utilisateur C ou C++? C'est à dire indiquer au compilateur
quelle est la branche la plus probable?
:-)
Michael.
semblerai qu'il faille utiliser __built_expect(test, valeur probable)
mais là tu perds toute protabilité.... cela ne fonctionnera plus que
sous GCC
en général c'est la branche 1 qui est sélectionnée (permet d'accéder aux
instructions sans changer d'@ en mode "burst" ) mais je n'en suis pas
certain.... en tout cas si c'était à faire en asm je pense que cela
serait fait comme cela....
le pb c'est que souvent, les tests sont non prédictable.... on ne sait
vraiment pas lequel sera le plus probable.... et dans ce cas l'arch du
cpu fait toute la diff....
mais pas de soucis : l'arch netburst est en fin de vie et le PIV M sur
lequel les prochaines génération intel seront basés ont des pipes plus
cours donc plus rapidement flushés..... donc qui vont plus vite ^_^ tout
en consommant moins
Linux-Azur : http://www.linux-azur.org
D�sinscriptions: http://www.linux-azur.org/liste.php3
**** Pas de message au format HTML, SVP ****