• [^] # Re: Réordonnancement étrange...

    Posté par (site web personnel) . En réponse à la dépêche De la nécessité d’adopter les opérations atomiques C11 ?. Évalué à 3.

    Non, les processeurs font plein d'opérations en parallèle et ré-ordonne les instructions pour pouvoir les exécuter plus vite.

    Bien sûr, mais le processeur ne peut pas exécuter une opération (par exemple "ADD x, y") quand il n'a pas les données correspondantes (x et y). On peut essayer de spéculer, mais sur un truc aussi bête qu'une addition, on ne va pas spéculer les 2^{32} additions possibles s'il manque un opérande ... Techniquement, le ré-ordonnancement peut éviter les bulles dans le pipeline.

    Bien sûr, tout dépend de l'architecture cible. Tous les processeurs ne réordonnent pas les instructions. Les processeurs Intel le font très bien sur mon exemple donc le compilateur x86 n'a pas besoin de se soucier de ce cas, mais tous les processeurs ne sont pas out-of-order comme ça il y a des tas d'architectures où c'est au compilateur de faire ce boulot.

    En fait c'est le contraire: On utilise les opération atomique pour dire au compilateur d'introduire des barrières dans le code pour que le processeur ne ré-ordonne pas ces opérations.

    Euh, pas compris le contraire de quoi. On dit la même chose là ;-).