Branchement
![](http://upload.wikimedia.org/wikipedia/commons/thumb/0/02/Circle-icons-computer.svg/35px-Circle-icons-computer.svg.png)
Cet article est une ébauche concernant l’informatique.
Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.
![Si ce bandeau n'est plus pertinent, retirez-le. Cliquez ici pour en savoir plus.](http://upload.wikimedia.org/wikipedia/commons/thumb/3/38/Info_Simple.svg/12px-Info_Simple.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/a1/2017-fr.wp-orange-source.svg/45px-2017-fr.wp-orange-source.svg.png)
Cet article ne cite pas suffisamment ses sources ().
Si vous disposez d'ouvrages ou d'articles de référence ou si vous connaissez des sites web de qualité traitant du thème abordé ici, merci de compléter l'article en donnant les références utiles à sa vérifiabilité et en les liant à la section « Notes et références ».
En pratique : Quelles sources sont attendues ? Comment ajouter mes sources ?
En informatique, un branchement est une instruction consistant à modifier le flot de contrôle d'un programme, en lui faisant exécuter une instruction indiquée dans le code de l'instruction de branchement au lieu de l'instruction qui suit séquentiellement.
Déroulement d'une opération de branchement
Un processeur est une unité de traitement séquentielle, ce qui signifie qu'il exécute un ensemble d'instructions en effectuant celles-ci les unes après les autres. Pour cela, le processeur dispose en interne d'un compteur, indiquant l'adresse mémoire de la prochaine instruction à exécuter, compteur qui est normalement incrémenté à chaque cycle pour pointer sur l'instruction suivant immédiatement l'instruction courante.
Une opération de branchement vient interrompre ce fonctionnement séquentiel en modifiant la valeur du compteur par une adresse arbitraire afin de faire en sorte que le processeur charge et exécute une partie du code se situant dans une section de la mémoire différente de celle attendue par le comportement linéaire. Ceci permet notamment de sauter vers une sous-routine, ou encore d'exécuter différentes instructions en fonction du résultat d'un test conditionnel. Ainsi, l'exécution ou non d'un branchement repose souvent sur le test de la valeur du registre d'état du processeur, registre indiquant le résultat d'un calcul antérieur.
Branchements et pipeline
Un processeur est généralement formé d'un pipeline contenant à la fois l'instruction actuellement exécutée, mais également les prochaines instructions, chacune à un état d'exécution différent, afin d'augmenter la vitesse de traitement. Or, l'exécution d'un branchement vient interrompre le fonctionnement linéaire du programme, ce qui signifie que les instructions chargées par avance dans le pipeline ne doivent en réalité pas être exécutées, au profit de celles se situant à la nouvelle adresse mémoire. Le pipeline doit donc être vidé, et rempli à nouveau par les instructions correctes.
Les processeurs actuels intègrent donc souvent des mécanismes de prédiction de branchement, qui tentent de prédire le résultat d'un branchement avant l'exécution du calcul permettant de décider de l'exécution du saut ou non, afin de charger par avance les instructions correctes dans le pipeline. Si une prédiction incorrecte produit le vidage du pipeline, en revanche, une prédiction correcte permettra de poursuivre l'exécution du code sans interruption.
Notes et références
Voir aussi
Articles connexes
- Goto (informatique)
- Prédiction de branchement
Portail de l’informatique