Forum Clubic

Prédiction de branchement (CPU) et programmation - ça a un rapport ?

Bonjour,

est ce que le prédiction de branchement des processeurs (la chose qui leur pemet de prédire l’éxecution de tel ou tel “morceau de codes” (en gros)) et les structures conditionelles en prgrammation ont un rapport ? je veux dire, est ce qu’il vaut mieux privilégier dans une structure “si” d’éxecuter dans le “alors” la chose la plus probable car le processeur (pré)éxecute le “alors” ?

je sais pas si vous m’avez compris mais moi je programme comme cela en géénral ? ca sert à quelque chose ? (amélioration des perfs, sur un très gros programme bien sur ?)

Les deux choses n’ont rien à voire mais une meilleur logique d’éxécution de ses conditions permettent néanmoins une optimisation.

Pourquoi aucun rapport ?

Les deux sont plus ou moins liés quand même, bien que ce soit compliqué à expliquer. Par contre, je ne sais pas si c’est vraiment possible d’optimiser du code en tenant compte du fonctionnement du branch predictor. :neutre:

Non non, la prédiction de branchement n’a rien à voire avec les conditions, tu peux ne pas en avoir tout en ayant une prédiction de branchement,
Exemple : pour l’instruction FMUL, le CPU ira forcément à ST et fera un POP de ce registre (pour y stocker le résultat), il activera aussi les exceptions du FPU, tout ça est fait alors qu’il n’y a aucune condition.

Je ne vois pas trop de quoi tu parles ? :??:

Pour moi, la prédiction de branchement c’est ce qui permet au CPU de commencer à décoder les instructions après une condition, en se basant sur des statistiques. C’est ce qui fait que selon la situation, le CPU va décoder la branche “then”, d’autres fois la branche “else”.

Cf. http://en.wikipedia.org/wiki/Branch_prediction

oui je pensais que ça marchais comme ça, c’est pour ça que je me demandais donc si c’était “mieux” de mettre la condition la plus probable dans le “alors”. :neutre:

T’inquiete, je sais de quoi je parle , mon exemple a été peut être mal choisis mais dans tous les cas, en prog, il est difficile de programmer en tenant en compte cette variable (sauf en asm).
Tu peux utiliser néanmoins le concept du déroullement des boucles qui aura pour conséquence au cpu de prédire plus efficacement via l’utilisation de son pipeline.

Désolé je dois être mal réveillé aujourd’hui, parce que je ne vois toujours pas plus le rapport avec la prédiction de branchement. :pt1cable:

Dans ton lien, le seul passage que j’ai trouvé qui en parle, c’est ça :

Mais c’est pas très explicatif… je pense qu’on ne parle pas de la même chose. :wink:

Enfin en tout cas, je suis d’accord avec toi sur le fait que ce soit quasi-impossible de programmer en prenant le BP en compte, c’est même assez inutile vu que les processeurs actuels utilisent des algos très fiables pour ce genre de choses.