• # À propos de SSE et AVX

    Posté par . En réponse à la dépêche Intel Sandy Bridge et Linux : état des lieux. Évalué à 7.

    Le jeu d’instructions MMX a ainsi été complété par les jeux d’instructions SSE, SSE 2, SSE 3, puis SSE 4, pour un bénéfice pas toujours évident.
    Sandy Bridge apporte de nouvelles fonctions d’opérations vectorielles en 256 bits, sous le nom Advanced Vector Extensions (AVX).

    Plus précisément, le MMX opère sur des entiers, et le SSE sur des flottants. À l'origine, l'extension SSE était la réponse du berger à la bergère (en l’occurrence l'extension «3DNow!» de AMD).

    Le SSE pouvait remplacer avantageusement le FPU, sauf pour la précision (64 bits pour le SSE et 80 bits pour le FPU). De même, l'architecture du FPU (l'accès à ses registres ne pouvait se faire que par une pile, et sans concurrence avec le CPU) ne facilitait pas l'optimisation.

    Je me souviens encore avec émotion de ma compilation de xpdf, avec le support SSE2.
    xpdf s'est mis à fonctionner environ 30% plus rapidement sur un pdf d'une lenteur extrème (un manuel rempli de photos). Et encore, je n'avais même pas recompilé la lib jpeg avant de faire ce premier essai.

    Je n'ai pas besoin d'une grande précision arithmétique, ne mettant pas de fusées sur orbite. J'ai donc toujours été très satisfait des performances de SSE2 et suivants, par rapport au support FPU par défaut.

    AVX est destiné à remplacer SSE, et semble déja prometteur.

    Un test avec Blender 2.59 sur un Core i5-2400.
    (avec ce bench: http://www.eofw.org/bench/ )

    Version binaire générique: 9,73 secondes
    Version compilée avec support AVX (GCC 4.6.1): 6,53 secondes.

    Le gain est là, et bien là.

    Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr