• [^] # 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é à 6.

    Dans quel cas un tel réordonnancement se justifie-t-il ?

    Le ré-ordonnancement est une optimisation importante du compilateur. Un truc important est de générer du code qui minimise les dépendances immédiates entre deux instructions. Par exemple (si R0 et R1 sont des registres) :

    charger 12 dans R0
    charger 42 dans R1
    utiliser R0
    utiliser R1
    

    Ici l'instruction « charger 42 dans R1 » peut s'exécuter alors que « charger 12 dans R0 » n'est pas terminée (exécution pipelinée). Par contre, si on avait écrit :

    charger 12 dans R0
    utiliser R0
    charger 42 dans R1
    utiliser R1
    

    alors le processeur serait obligé d'attendre la fin des instructions « charger » avant les instructions « utiliser » correspondantes. Les performances seraient moins bonnes pour le même comportement.