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 ****

Répondre à