Chapitre II Principe du pipeline et traitement vectoriel • Pipeline • Principe • Unidimensionnel • Bidimensionnel • Ordinateurs vectoriels • Cray-1 • Vectorisation Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 1 Pipeline unidimensionnel Concept : chaîne de montagne dans une usine Objectif : amélioration des performances tâches T H E1 T H E2 T H … T H Ek T H Hypothèses : Ei : étage i (1≤ i ≤ k), T : tampon et H : horloge Temps(Ei) = ti, Temps(T) = t0 et t = max{1 ≤ i ≤ k, ti} + t0 n tâches, T1 et Tk : temps sans et avec pipeline de k étages Tk = t0 + kt + (n - 1)t = (k + n - 1)t + t0 Supposons que T1 = nkt Rendement = T1/Tk = nkt/ [(k + n - 1) t + t0] ≈ nk/(k+n - 1) Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 2 Additionneur des virgules flottante Entrée : deux nombres en virgules flottante normalisée. A = a x 2p et B = b x 2q a et b : matisses et p et q : exposants. On veut calculer : A + B = c x 2r = d x 2s où r = max(p.q) et 0,1 d < 1. Exemple : A = 0,101 x 28 et B = 0,1101 x 29 A + B = 0,101 x 28 + 0,1101 x 29 -- réduction au même exposant = 0,0101 x 29 + 0,1101 x 29 -- addition des matisses = 1,0010 x 29 -- normalisation = 0,1001 x 210 Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 3 Algorithme de calcul 1. Déterminer r = max(p,q) et t = | p – q | 2. Décaler à droite la mantisse associée au plus petit exposant par t bits 3. Additionner les mantisses pour obtenir c 4. Normaliser le résultat : si c < 1 alors u = 0 si c > 1 alors u = 1 5. Le résultat final est : d = c << u et s = r + u Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 4 Pipeline de l’addition flottante S1 S1 Soustracteur p S1 c r=max(p,q) S1 c Additionneur d’exposants a s d’ t=| p – q | exposants A=a x 2p Autre fraction Compteur Additionneur c de q Décaleur Sélecteur b de fraction fraction droite Fraction avec min(p,q) u C=A+B=d x 2s de zéros Décaleur d d gauche B=b x 2q Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 5 Réduction des délais Hypothèses : t0 = 10 ns, t1 = 90 ns, t2 = 70 ns, t3 = 60 ns et t3 = 40 ns la période du pipeline P ≥ 90 + 10 = 100 ns = 10-7s la fréquence f = 1/P = 107 Hz = 10 Mhz après initialisation, exécution d'une opération toutes les 100 ns T1 = (90 + 70 + 60 + 40) * n = 260 * n Tk = 285 + 100 * (n - 1) = 185 + 100 * n Rendement ≈ 260/100 = 2,6 < 4 Exercice : Pouvez-vous réduire le temps en fusionnant S3 et S4 ? Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 6 Exemples de UAL pipeline Ordinateur Nombre d’étages Star-100 4 TI-ASC 8 Cray-1 14 Cyber 20 26 Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 7 Pipeline à 2 dimensions Produit matriciel C= A * B où A et B sont 2 matrices d’ordre n soit t : temps d’éxécution d’une multiplication Algorithme classique (SISD) nombre de multiplications = n3 si n = 103 et t = 1 ms temps d'exécution = 103 s ≈ 16 mn Réseau systolique (MISD) nombre de cellules de base = 3n²-3n+1 multiplication est complétée après 3n-1 périodes si n = 104 et une période en 1 ms ≈ 3 M processeurs et temps d'exécution ≈ 3 ms Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 8 Compilation Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 9 Ordinateurs pipeline Chevauchement du traitement de données dans : - UAL - UC - Processeur d'E/S - Hiérarchie de la mémoire La performance peut se dégrader de façon significative à cause de la dépendance des données ---> conflit des ressources. Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 10 Ordinateurs vectoriels Un superordinateur est caractérisé par : - haute vitesse de calcul - MP et MS grandes et rapides - logiciels // généralement conçu pour effectuer le calcul - vectoriel - ou matriciel utilisé dans les applications scientifiques : prévision météorologique, recherche nucléaire, intelligence artificielle Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 11 Générations des ordinateurs vectoriels génération Année Machine MFLOPS installations 1960 Star-100 50 7 en 1978 TI-ASC 30 4 première Illiac-IV 1975 deuxième 1 Cray-1 160 Cyber 200 800 60 en 1982 Fujitsu VP-200 500 Troisième et quatrième VP-200 400 Cray-2 2000 Cyber-205 3000 Nec 5000 Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 12 Coprocesseurs scientifiques (Scientific Attaches Processors) Caractéristiques Reliés à un ordinateur hôte une structure pipeline traitement des vecteurs et nombres en virgule flottante Génération du micro-code pour les applications vectorielle spécifiques (traitement du signal,...) Interface rapide Exemple : AP-120B + VAX11/780 ---> 12 MFLOPS 80386 (33 Mhz) + 80387 ---> 80486 (50 Mhz). Remarque : la vitesse maximale n'est jamais atteinte. la vitesse moyenne Cray-1 est de 24 MFLOPS au lieu de 160 car les logiciels n'exploitent pas efficacement (proprement) le matériel (langage, compilation, vectorisation, optimisation). Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 13 Ordinateur vectoriel : Cray-1 (1/2) Premier ordinateur vectoriel moderne période de l'horloge = 12.5 ms fréquence = 80 Mhz. cycle de la mémoire = 50 ms, bipolaire (SECDED) transfert de (4 mots) /période de l'horloge) de ou vers la mémoire.= 320 M mots/s les canaux ont un taux de transfert = 80 M mots/s 4 canaux opèrent simultanément pour achever le taux maximum de transfert. 266 tampons d'instruction 800 registres 12 unités fonctionnelles pipeline (1 à 14 étages). Registres adresses (A) 8 x 24 bits scalaires (S) 8 x 64 bits vectors (V) 8 x 64 x 64 bits vectors (V) 8 x 64 x 64 bits Tampons-adresse (B) 64 x 24 bits Tampons-scalaire (T) 64 x 64 bits Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 14 Ordinateur vectoriel : Cray-1 (2/2) VL : vector lenght format d'instructions = 16 ou 32 bits g h i j k m 4 3 3 3 3 10 Algorithme LRU de remplacement des tampons d'instruction *P = Program counter 22 bits NIP = Next Instruction Parcel 16 bits CIP = Current Instruction Parcel 16 bits LIP = Lower Instruction Parcel 16 bits *Recip Ap : Inverse approximatif d'un opérande de 64 bits en virgule flottante. Pop/17 : compter le nombre de "1" dans l'opérande/ compter le nombre de '0' précédant un "1" *Nombres en virgule flottante (64 bits) et en double précision (128 bits) Dans Cray-1, une opération sur 1 vecteur ayant 3 éléments s'exécutent plus rapidement en mode scalaire 4 éléments ou plus s'exécutent plus rapidement en mode vecteur. Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 15 Compilation Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 16 Exemples de programmes Cray-1 Instructions indépendantes V0 <--- V1 + V2 V3 <--- V4 + V5 Réservation de l'unité fonctionnelle V3 <--- V1 + V2 V6 <--- V4 + V5 Réservation de l'opérande V3 <--- V1 + V2 V6 <--- V1 * V5 Réservation de l'opérande et de l'unité V0 <--- V1 + V2 V3 <--- V1 + V5 Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 17 Exemple d’une boucle Soient A et B deux vecteurs de longueur N. D0 I = 1, N A(I) = 5 * B(I) + C 10 CONTINUE Q N div 64 R N mod 64 pour i = 1 à Q faire Calculer (A,64) Calculer (A,R) Fonction Calculer(A,longueur) S0 5 initialiser le registre scalaire par une constante S1 C charger C dans le registre scalaire VL N initialiser la longueur du vecteur V0 B multiplier chaque élément du vecteur par une constante V1 S0 * V0 multiplier une constante V2 S1 + V1 additionner une constante A V2 sauvegarder le résultat dans A Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 18 Vectorisation (1/3) Vectorisation : ensemble de transformations apportées à un programme scalaire conduisant à de bonnes performances lorsqu'il est exécuté sur un ordinateur vectoriel. Rôle : Compilateur ou manuellement (règles ou critères) Exemple: D0 10 I = 1, 10 V(I) = A(I) + B(I) 10 CONTINUE V(1) = A(1) + B(1) V(2) = A(2) + B(2) V(3) = A(3) + B(3) --------V(1) = A(1) + B(1) Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 19 Vectorisation (2/3) Indépendance des données DO 10 I = 1, 20 X(I) = X(I) + 5 10 CONTINUE Dépendance des données DO 10 I = 2, 20 X(I) = X(I-1) + 5 10 CONTINUE X(1) = X(1) + 5 X(2) = X(2) + 5 X(3) = X(3) + 5 …… X(2) = X(1) + 5 X(3) = X(2) + 5 X(4) = X(3) + 5 …… Restructuration du programme DO 20 I = 1, 1000 DO 20 J = 1,100 DO 20 J = 1, 100 DO 20 I = 1,1000 A(I,J+1) = A(I,J) + B(I,J) A(I,J+1) = A(I,J) + B(I,J) 20 CONTINUE 20 CONTINUE Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 20 Vectorisation (3/3) Eclatement de la boucle DO 30 I = 1,100 A(I) = A(I) + 2 B(I+1) = B(I) + 1 30 CONTINUE DO 20 I=1,100 A(I) = A(I)+2 20 CONTIONUE DO 30 I =1,100 B(I+1)=B(I)+1 30 CONTINUE Instruction conditionnelle et de branchement DO 30 I = 1,100 DO 30 I=1,100 10 if (A(I) > 0) Goto 30 10 S(I) = A(I) > 0 20 B(I) = C(I) * 5 20 if S(I) then B(I) = C(I)*5 30 CONTINUE 30 CONTINUE Exemples : ACTUS (1979) et VECTRAN (1975) Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 21 Vectorisation assistée Vectorisation automatique (compilateur) n'est pas encore une solution satisfaisante pour optimiser la performance d'un ordinateur vectoriel car : • réalisation d'un compilateur vectoriel est complexe • algorithmes sophistiqués Vectorisation assistée : • compilateur détecte les zones du programmes requérant le plus de temps d'exécution. • utilisateur peut intervenir pour restructurer le code du module. Outils : • bibliothèque de sous-programmes vectorisés (écrits par l'utilisateur ou par le constructeur). Par exemple : opérations matricielles, équations d'algèbre linéaire, détermination des valeurs propres, traitement du signal (TFR), … • Expérience de l'utilisateur (architecture, compilateur, bibliothèque). Architectures parallèles, M. Eleuldj, Département Génie Informatique, EMI, octobre 2008 22