Un processeur vectoriel est un processeur conçu pour exécuter des opérations sur les vecteurs plutôt que les nombres simples.
Contrairement aux processeurs scalaires, les processeurs vectoriels sont spécialement conçus et optimisés pour exécuter la même instruction sur chacune des données contenues dans un tableau. Ils sont surtout utilisés pour le calcul intensif sur supercalculateur.
Leur architecture est basée sur les pipelines :
Lors de la réalisation d'une opération terme à terme sur deux vecteurs, un processeur vectoriel réalise ces opérations en pipeline. Au fur et à mesure que les cases mémoires utilisées pour le premier calcul se vident, elles se re-remplissent de manière à traiter le second sans attendre le résultat du premier. Ce type de fonctionnement est efficace à partir du moment où on a des opérations répétitives ; en pratique, dès que l'on travaille avec des vecteurs de plus de six éléments on est gagnant. Développé pour des applications scientifiques et exploité par les machines Cray et les supercalculateurs qui lui feront suite, ce type d'architecture a rapidement montré ses avantages pour des applications grand public (on peut citer la manipulation d'images) et est actuellement soit physiquement installé dans les processeurs (unité vectorielle AltiVec) soit simulé par des instructions de type vectoriel de bas niveau (SSE).
Ces marques fabriquent, ou bien ont fabriqué, des ordinateurs basés sur, ou contenant, des processeurs vectoriels :
Des consoles de jeu utilisent également le processeur vectoriel, telle la Playstation 2 ou la Playstation 3.
L'exemple ci dessous montre comment le code FORTRAN :
DO I = 1, N A(I) = B(I) + C(I) ENDDO
va être traduit, en termes d'opérations à effectuer, sur un processeur scalaire, ou sur un processeur vectoriel.
processeur scalaire | processeur vectoriel |
---|---|
INITIALISER I = 1 10 LIRE B(I) LIRE C(I) ADDITIONNER B(I) + C(I) STOCKER A(I) <- B(I) + C(I) INCREMENTER I <- I + 1 SI I <= N ALLER À 10 STOP | A(1:N) = B(1:N) + C(1:N) |