Windows Fun

Windows fun!

Intel rajoute le support SIMD dans Microsoft Edge

Microsoft vient de publier Windows 10 Build 10122 aux Windows Insiders. Cette version contient une nouvelle version de Edge très rapide. Mais ce n’est pas tout: Intel vient d’annoncer avoir rajouté le support SIMD dans Edge.

SIMD: C’est quoi ?
SIMD décrit une forme de parallélisme appliquée aux instructions du processeur. Les instructions classiques s’appliquent à une seule donnée: par exemple, multiplier deux nombres, comparer deux nombres, incrémenter un nombre. Le SIMD, pour Single Instruction Multiple Data (ou une seule instruction pour des données multiples en Français) permet d’appliquer la même instruction (single instruction) à plusieurs données (multiple data).

Cela peut paraître complexe, mais prenons par exemple deux vecteurs: [1,2,3,4] et [1,1,1,1]. Pour additionner ces deux vecteurs avec une instruction non SIMD (ou SISD: Single Instruction Single Data), il faudrait répéter l’opération addition sur chaque élément des deux vecteurs.

L’instruction SIMD permet, en une seule instruction, d’effectuer l’addition sur tous les éléments du vecteur. Autrement dit, l’opération vectorielle. Le schéma suivant illustre cette différence:

A gauche, 4 opérations sont nécessaires, à droite, grâce au SIMD, une seule instruction est effectuée

A gauche, 4 opérations sont nécessaires, à droite, grâce au SIMD, une seule instruction est effectuée

MMX, Altivec, Neo
Les calculs vectoriels dans les processeurs de nos ordinateurs ne sont pas nouveaux: depuis le milieu des années 90, les processeurs RISC possédaient des instructions SIMD: c’est le cas du G4 de Motorola, avec l’AltiVec (renommé Velocity Engine par Apple), du MMX puis SSE par Intel, du 3DNow! par AMD, et plus récemment du Neon pour les processeurs ARM. Tout ce charabia aussi bien technique que commercial décrit en fait la présence d’instructions SIMD dans les processeurs.

Et le rapport avec Edge ?
Le rapport est simple: jusqu’à maintenant, si vous vouliez effectuer des calculs vectoriels en JavaScript (ce qui est très fréquent lorsque l’on travaille dans la 3D par exemple), même si le processeur possédait des instructions SIMD, elles n’étaient pas utilisées, et au lieu d’effectuer une addition d’un vecteur en une instruction, il en fallait 4 (pour l’exemple précédent).

Intel et Microsoft on collaboré sur une proposition pour le prochain ECMAScript qui permettra d’effectuer ce genre de calculs, afin que les instructions SIMD des processeurs puissent être utilisées afin d’obtenir des gains de performances jusqu’à 4x plus importants.

Cet exemple de Microsoft illustre bien la différence de vitesse entre les deux:

simd-sisd

Rendez-vous sur le blog de Windows pour plus de détails techniques sur le support SIMD implémenté dans le navigateur Edge.

Source: Blog Windows

Via: Microsoft News