• Aucun résultat trouvé

1.4 Au-delà de l’horizon

3.1.1 Taxonomie de Flynn

Parmi les diverses façons de caractériser les architectures, celle de FlynnFly66détient une place privi-

légiée car elle est toujours perçue comme une façon simple et presque intuitive de la description du mode de fonctionnement d’une machine. Elle caractérise les machines selon le type de flux d’instructions et de flux de données.

En dépit de cette simplicité, cette taxonomie n’est pas l’une des plus discriminatoires et présente ainsi de grands désavantagesCT93, principalement dues à l’absence de caractérisation du système de la

mémoire. Malgré les travauxDun90, Ski98 essayant de compléter ce système de caractérisation, la taxo-

nomie de Flynn reste toujours le premier outil de description dans un grand nombre de publications scientifiques. Nous la mentionnons pour pouvoir introduire et expliquer les termes qui seront utilisés par la suite.

La Taxonomie de Flynn classe les architectures en ces 4 catégories :

• architectures SISD et SISD confluant (Single Instruction (stream), Single Data (stream)) - à flux

simple d’instructions et à flux simple de données,

• architectures SIMD (Single Instruction (stream), Multiple Data (stream)) - à flux simple d’instruc-

tions et à flux multiple de données,

• architectures MISD (Multiple Instruction (stream), Single Data (stream)) - à flux multiple d’ins-

tructions et à flux simple de données,

• architectures MIMD (Multiple Instruction (stream), Multiple Data) - à flux multiple d’instructions

UC

P1 P2 Pn

MI

Flux d’entrée Flux dérivés Flux de sortie

MD

(a)Exécution en pipeline, type SISD confluent UC P1 P2 P3 Pn Réseau d’interconnexions M1 M2 M3 Mn (b)type SIMDCT93 UC1 UC2 UCn P1 P2 Pn MI1 MI2 MIn

Flux d’entrée Flux dérivés Flux de sortie

MD (c)type MISD UC globale UC1 UC2 UC3 UCn P1 P2 P3 Pn Réseau d’interconnexions M1 M2 M3 Mn (d)type MIMDCT93

FIG. 3.1 : Les types d’architectures selon la taxonomie de Flynn. Légende : UC - unité centrale, P - processeur, M - mémoire, MI - mémoire d’instructions, MD - mémoire de données

3.1.1.1 Architecture SISD et SISD confluant

Dans ce type d’architectures, nous pouvons distinguer le mécanisme sériel de décodage d’instructions et, par conséquent, le traitement d’un seul flux d’instructions. Une seule donnée peut être traitée dans le laps de temps ∆t, dérivé du cycle d’horloge et lié ainsi à la fréquence de l’architecture.

Le type d’architectures SISD a un fonctionnement séquentiel et n’est pas, en effet, explicitement parallèle. Mais il englobe également le traitement SISD confluant et inclut ainsi les architectures avec un pipeline dont la structure est illustrée sur la fig 3.1(a).

Un pipeline est utilisé pour maximiser l’usage des blocs d’exécution en divisant une opération d’une granularité donnée en une séquence sérielle des opérations de granularité plus fine. Le traitement est toujours effectué avec un seul flux d’instructions sur un seul flux de données. Seule une donnée peut être traitée par une unité de traitement distincte dans l’intervalle ∆t. Avec cette structure, l’unité du calcul parvient à une augmentation de bande passante exprimée par le nombre d’instructions par seconde. Nous présentons un exemple pratique d’exécution en pipeline du processeur SH-5, q.v. fig 3.2.

3.1.1.2 Architecture SIMD

Dans ce type d’architectures, cf. fig 3.1(b), un seul flux d’instruction est utilisé pour contrôler le fonc- tionnement de plusieurs unités élémentaires du calcul. Ainsi, l’architecture est capable de traiter plusieurs données à la fois. Les données y arrivent comme un flux multiple, composé d’un certain nombre d’élé- ments de base. On classe dans cette catégorie également les machines vectorielles, les réseaux cellulaires et les réseaux systoliques.

WB D F1 F2 E1 E2 E3 WB D F1 F2 E1 E2 E3 WB D F1 F2 E1 E2 E3 Temps Instruction n+0 Instruction n+1 Instruction n+2

FIG. 3.2 : Exécution dans le pipeline du processeur SH-5 se poursuit de gauche à droite. Légende : F1, F2 (fetch) - phases de la mise en pipeline d’une instruction ; D - décodage de l’instruction ; E1, E2, E3 (execute) - jusqu’à 3 phases d’exécution, fonction exacte (mémoire, calcul en entiers, en virgule flottante) dépend de l’instruction, WB (writeback) - écriture des résultats dans le registre

Plus généralement, nous pouvons parler dans le même cadre d’une architecture SPMD (Single Pro- gram, Multiple Data) - architecture à un programme et à données multiples - qui a la même configuration mais les unités élémentaires du calcul exécutent d’une façon synchrone une même séquence d’instruc- tions ou un même programme plus complexe. La façon synchrone d’exécution est ici indispensable et constitue le lien avec la catégorie SIMD travaillant de la même façon au niveau d’instructions.

3.1.1.3 Architecture MISD

Dans ce type d’architectures, plusieurs instructions sont destinées à traiter la même donnée. Chaque unité reçoit une instruction spécifique.

Ce type inclut également le traitement en pipeline où la tâche est divisée en étapes distinctes et où nous ne pouvons pas identifier plusieurs unités du calcul qui seraient indépendantes, une dédiée à chaque étape. En contraste avec le pipeline classé sous SISD confluent où les blocs du pipeline étaient commandés tous par une même unité centrale et où ils formaient un seul macro-bloc fonctionnel, le pipeline du type MISD correspond à un enchaînement des macro-blocs, chacun ayant sa propre unité centrale, cf. 3.1(c).

3.1.1.4 Architecture MIMD

La catégorie MIMD est implicitement perçue comme asynchrone ce qui la diffèrencie grandement d’autres catégories de la taxonomie de Flynn.

Les architectures de ce type sont composées de plusieurs unités de calcul séparées qui peuvent exé- cuter différents flux d’instructions sur différents flux de données, indépendamment les unes des autres et en utilisant leurs propres données locales, cf. 3.1(d).

Cette catégorie n’exige explicitement aucune forme de synchronisation entre les unités. Dans la pra- tique, la synchronisation, si on en a besoin, est effectuée par l’intermédiaire d’une mémoire partagée ou par le biais de passage des messages par un réseau d’interconnexions.