• Aucun résultat trouvé

Chapitre II Principe du pipeline et traitement vectoriel

N/A
N/A
Protected

Academic year: 2022

Partager "Chapitre II Principe du pipeline et traitement vectoriel"

Copied!
22
0
0

Texte intégral

(1)

Chapitre II

Principe du pipeline et traitement vectoriel

• Pipeline

• Principe

• Unidimensionnel

• Bidimensionnel

• Ordinateurs vectoriels

• Cray-1

• Vectorisation

(2)

Pipeline unidimensionnel

Hypothèses :

Ei : étage i (1≤ i ≤ k), T : tampon et H : horloge

Temps(Ei) =

t

i

,

Temps(T) =

t

0 et

t

= max{1 ≤ i ≤ k,

t

i} +

t

0

n tâches, T1 et Tk : temps sans et avec pipeline de k étages Tk =

t

0 + k

t

+ (n - 1)

t

= (k + n - 1)

t + t

0

Supposons que T1 = nk

t

 Rendement = T /T = nk

t

/ [(k + n - 1)

t + t

] ≈ nk/(k+n - 1) Concept : chaîne de montagne dans une usine

Objectif : amélioration des performances

E1 E2 Ek

tâches T T T T T

H

H H H H

(3)

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

= 0,0101 x 29 + 0,1101 x 29 --réduction au même exposant

= 1,0010 x 29 --addition des matisses

= 0,1001 x 210 --normalisation

(4)

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

(5)

Pipeline de l’addition flottante

A=a x 2p p a

Soustracteur d’exposants

Décaleur droite Sélecteur

de fraction

Compteur de zéros

Additionneur d’

exposants Additionneur

de

fraction Décaleur

gauche B=b x 2q

q

b

S1 S1 S1 S1

r=max(p,q)

t=| p – q |

Fraction avec min(p,q) Autre fraction

s

d C=A+B=d x 2s c

c c

u

d

(6)

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 ?

(7)

Exemples de UAL pipeline

Ordinateur Nombre d’étages

Star-100 4

TI-ASC 8

Cray-1 14

Cyber 20 26

(8)

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

(9)

Compilation

(10)

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.

(11)

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

(12)

Générations des ordinateurs vectoriels

génération Année Machine MFLOPS installations

première

1960 Star-100 50 7 en 1978

TI-ASC 30 4

Illiac-IV 1

deuxième

1975 Cray-1 160 60 en 1982

Cyber 200 800

Fujitsu VP-200 500 Troisième et

quatrième

VP-200 400

Cray-2 2000

Cyber-205 3000

Nec 5000

(13)

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,

(14)

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

(15)

Ordinateur vectoriel : Cray-1 (2/2)

VL : vector lenght

format d'instructions = 16 ou 32 bits

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 3 3 3 3 10

g h i j k m

(16)

Compilation

(17)

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

(18)

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

(19)

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(1) = A(1) + B(1) V(I) = A(I) + B(I) V(2) = A(2) + B(2)

10 CONTINUE V(3) = A(3) + B(3)

- - - -

V(1) = A(1) + B(1)

(20)

Vectorisation (2/3)

Indépendance des données

DO 10 I = 1, 20 X(1) = X(1) + 5 X(I) = X(I) + 5 X(2) = X(2) + 5

10 CONTINUE X(3) = X(3) + 5

……

Dépendance des données

DO 10 I = 2, 20 X(2) = X(1) + 5 X(I) = X(I-1) + 5 X(3) = X(2) + 5

10 CONTINUE 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

(21)

Vectorisation (3/3)

Eclatement de la boucle

DO 30 I = 1,100 DO 20 I=1,100 A(I) = A(I) + 2 A(I) = A(I)+2 B(I+1) = B(I) + 1 20 CONTIONUE

30 CONTINUE 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)

(22)

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).

Références

Documents relatifs

SLIT à temps discret – Réponse impulsionnelle - Convolution discrète – Réponse en fréquence – Fonction filtrage Filtre à Réponse Impulsionnelle Finie (RIF) - Filtre à

1) Les calculateurs sont des systèmes discrets : Ils peuvent tout au plus mémoriser et calculer les valeurs des signaux à des instants dénombrables. Il faut donc opérer

• Valeur du gain de ce filtre à la fréquence de coupure : –3dB (quel que soit l’ordre N).. Rm : le temps de propagation

Une variable simple (ce qu’on appelle &#34;un scalaire&#34;) est vue comme un tableau à une ligne et une colonne ; un vecteur de N éléments est vu comme une matrice à une colonne et

La même TFD que ci-dessus peut être appliquée en boucle, au signal entier, en découpant ce dernier en parties de tailles égales, appelées trames. Le résultat est alors un ensemble de

• C’est une opération préliminaire à tout traitement numérique d’un signal car les systèmes numériques ne travaillent que sur des quantités finies:

Comme on le verra, un outil très puis- sant pour étudier les signaux analogiques est la transformée de Fourier ou les dévelop- pements en séries de Fourier pour les signaux

n  Définition : On appelle numérisation d’un signal les opérations qui consistent à transformer un signal continu en un signal discrétisé temporellement et quantifié