Introduction

AVX (Advanced Vector Extensions) est un jeu d’instructions pour les processeurs x86, proposé par Intel en mars 2008. Je ne vais pas ici me lancer dans une nième explication sur cette technologie, de nombreuses ressources sont déjà disponibles sur le Web. Je vais aborder ici une présentation « différente » en prenant pour point de départ la représentation d’un point dans l’espace.

En 3 dimensions, un point est représenté par trois coordonnées réelles \((x,y,z)\).

_images/espace.png

L’ensemble de ces points forme l’espace vectoriel \({\mathbb R}^3\). En tant qu’espace vectoriel, \({\mathbb R}^3\) est muni d’une loi + qui exprime l’addition de 2 points en fonction de l’addition de ses coordonnées. Si \(P=(x_1,y_1,z_1)\) et \(Q=(x_2,y_2,z_2)\) sont deux points de \({\mathbb R}^3\), alors \(P+Q\) est le point de coordonnées \((x_1+x_2,y_1+y_2,z_1+z_2)\). Ainsi faire une addition de 2 points se traduit en trois additions de réels.

C’est exactement ce que permet de faire la technologie AVX, réaliser en une seule instruction (notre addition de points) la même opération sur plusieurs données (trois additions sur des réels par exemple). C’est ce que l’on appelle une architecture SIMD (Single Instruction on Multiple Data).