Module : Système d’exploitation II Chapitre IV : Introduction aux architectures parallèles
Responsable : NINI B. Page 1
1
Introduction aux architectures parallèles
Aujourd'hui, la plupart des serveurs sont des machines parallèles (des multiprocesseurs). C'est
ainsi qu'un ordinateur peut exécuter des instructions aussi rapidement que la vitesse de la lumière. En
réalité, il s'agit d'une structure dite de "pipe-line" qui consiste à décomposer l'exécution d'une
instruction en étapes élémentaires traitées en parallèle par plusieurs processeurs. De la sorte, le temps
moyen d'exécution d'une instruction est considérablement accéléré.
1 Parallélisme et Architectures Parallèles
Il existe plusieurs domaines d'applications pour lesquels l'exploitation du parallélisme est
fondamentale : le traitement numérique, les bases de données, le traitement d'images, etc. Pour traiter
ces applications, les architectures parallèles peuvent être généralistes (c'est-à-dire capables de
répondre aux besoins d'une grande diversité d'applications) ou spécialisées. Les architectures
spécialisées sont destinées à exploiter les caractéristiques spécifiques d'une catégorie d'applications ou
même d'une seule application.
1.1 Motivations pour le parallélisme
1.1.1 Besoins des applications
Le parallélisme peut être exploité pour répondre à la puissance de traitement qui recouvre
deux grandes notions : la latence et le débit de traitement. La latence représente le temps nécessaire
pour l'exécution d'un traitement. Le débit représente le nombre de traitements exécutables par unité de
temps.
Réduire la latence est plus difficile qu'augmenter le débit. Dans le premier cas, il s'agit de
lutter contre le temps qui, en dernier ressort, est fixé par les possibilités technologiques. Alors que,
dans le deuxième cas, si plusieurs traitements sont indépendants, l'augmentation du nombre de
ressources suffit pour exécuter plus de traitements en même temps.
La puissance de traitement dépend aussi de la capacité et de l'organisation de la mémoire d'un
ordinateur. Certaines applications requièrent des ensembles de données dont la taille est supérieure à
la capacité d'adressage d'un ordinateur séquentiel. Certaines organisations d'architectures parallèles
permettent d’adresser plus de mémoire que des architectures séquentielles.
La résistance aux pannes suppose que l'arrêt d'une partie de l'ordinateur (pour panne,
maintenance, etc.) n’entraîne pas son arrêt complet. Si l'élément arrêté est le processeur, il est évident
Module : Système d’exploitation II Chapitre IV : Introduction aux architectures parallèles
Responsable : NINI B. Page 2
2
que seul un autre permet de résister à un manque. La redondance repose donc sur la mise en parallèle
d'éléments assurant les mêmes fonctionnalités.
1.1.2 Limites des architectures séquentielles
Les limites de l'exécution séquentielle découlent des limites des microprocesseurs actuels. Les
microprocesseurs possèdent des formats de leurs données et de leurs opérations inadéquates aux
caractéristiques de certaines applications. Il peut être préférable, en termes de performance et de coût,
de concevoir un ordinateur dont les opérateurs de traitement, l'organisation mémoire, etc. sont adaptés
aux calculs à réaliser. L'utilisation simultanée de plusieurs ressources entraîne la nécessité de gérer la
coordination de ces ressources et complexifie la programmation.
1.2 Niveaux de parallélisme
Le traitement de plus d'une tâche à la fois sur un ordinateur (parallélisme) peut se faire par une
exécution concurrente des tâches (simultanéité apparente) ou par une exécution simultanée. La
simultanéité réelle ne peut être obtenue que par la multiplication des unités fonctionnelles. Elle
implique la duplication de certains éléments de la machine. L'exécution concurrente peut être réalisée
soit par la machine elle-même, soit par le logiciel.
Le fait que le parallélisme soit réel ou apparent dépend du niveau de la fonction à exécuter
dans le système. Il existe plusieurs niveaux auxquels le parallélisme des opérations est possible.
1.2.1 Cheminement des données
A ce niveau, le parallélisme est défini par la "largeur" des voies de transfert des données d'une
unité fonctionnelle à l'autre à l'intérieur de la machine ; c'est le nombre de bits qu'il est possible de
transférer simultanément entre ces unités.
1.2.2 Entre les étapes du traitement des instructions
A ce niveau, le parallélisme repose sur l'existence d'au moins deux étapes dans l'exécution
d'instructions. Ces deux étapes sont habituellement constituées par une phase "instruction"
l'instruction est amenée de la mémoire à l'unité de traitement, puis décodée, suivie d'une phase
d'"exécution" pendant laquelle l'instruction se roule. Si les circuits logiques participant aux deux
phases ne comportent pas la partie commune, partagée, alors la machine est capable d'exécuter une
instruction pendant qu'elle prépare la suivante. Il en résulte un certain degré de superposition dans le
traitement des instructions. Cette caractéristique est connue sous le nom de "look-ahead".
Module : Système d’exploitation II Chapitre IV : Introduction aux architectures parallèles
Responsable : NINI B. Page 3
3
Potentiellement, cette caractéristique permet de doubler le taux de traitement de la machine.
Mais en fait, ce doublement est rarement atteint à cause de goulets d'étranglements apparaissant dans
le système : interférence d'accès à la mémoire retardant l'arrivée de l'information requise par l'une des
phases, retards dus au traitement des instructions de branchement conditionnel qui empêchent
l'arrivée de l'instruction suivante jusqu'au moment la direction de branchement est connue, ou
retards dus à la durée variable d'exécution de certaines instructions en fonction des opérandes
(division, par exemple), ce qui immobilise l'unité d'exécution pendant une période plus ou moins
longue et retarde donc le démarrage de l'instruction suivante.
1.2.3 Entre les instructions
Le parallélisme entre instructions repose sur la multiplication de certaines unités
fonctionnelles. Le parallélisme est d'ailleurs souvent limité à la phase d'exécution. Ceci repose sur la
technique du "pipe-line" qui est une extension de la technique "look-ahead". La phase d'exécution des
instructions est fragmentée en plusieurs étapes intermédiaires. A un instant donné, il y a plusieurs
instructions en train d'être exécutées, chacune à une étape différente de son exécution. A un instant
donné, on peut avoir par exemple une multiplication virgule flottante, un transfert à mémoire, une
addition d'entier s'exécutant simultanément.
1.2.4 Entre régions d'un programme
On appellera région une zone de code telle que son exécution peut avoir lieu indépendamment
d'autres zones. Par exemple, deux zones constituent des régions si elles ne se passent pas de
paramètre et si leur exécution peut être lancée de façon indépendante. Le parallélisme entre régions
d'un même programme est obtenu par diverses combinaisons entre machine et logiciel. Pour qu'il y ait
simultanéité réelle dans l'exécution des différentes régions, la machine doit être dotée de possibilités
de parallélisme au niveau de la phase de décodage/préparation d'instructions multiples. Par contre, la
simultanéité apparente entre régions d'un programme peut être obtenue avec un logiciel de
multiprogrammation. Les techniques machine/logiciel nécessaires pour une simultanéité réelle ou
apparente entre deux régions impliquent l'existence d'un moyen de :
reconnaître leur indépendance,
démarrer leur exécution "en parallèle",
établir les conditions d'une fusion ultérieure des deux chemins parallèles.
1.2.5 Entre tâches formalisées
Le parallélisme entre tâches formalisées d'un programme structuré est obtenu par
l'intermédiaire du programme de contrôle du système répondant à des directives données par le
Module : Système d’exploitation II Chapitre IV : Introduction aux architectures parallèles
Responsable : NINI B. Page 4
4
programmeur. La différence fondamentale entre parallélisme gional et parallélisme de ches réside
dans la dimension de l'unité à traiter et dans l'utilisation du programme de contrôle dans le deuxième
cas.
1.2.6 Entre programmes indépendants
Le degré le plus général de parallélisme est obtenu avec la possibilité d'exécuter
simultanément des flux de programmes entièrement indépendants. Il est réalisé par couplage de
systèmes indépendants en une association formant un système multiprocesseur. Le couplage peut être
un partage d'unités de contrôle et/ou d'unités E/S, ou des flux d'E/S des jobs.
En dehors des contraintes normales de rialisation dans l'utilisation des ressources partagées,
ces deux arrangements ne requièrent que peu ou pas de coordination entre les différents flux de jobs.
1.3 Définition du parallélisme
1.3.1 Approche intuitive du parallélisme
C'est le parallélisme présent dans une application qui permet d'exécuter simultanément, par
des ressources matérielles différentes, plusieurs parties de cette application. Le corps de la boucle
suivante ne comporte qu'une seule opération.
Pour i de 1 à n faire
A[ i ] B[ i ] + C [ i ]
FinPour
A[ 1 ] B[ 1 ] + C [ 1 ] (a)
A[ 2 ] B[ 2 ] + C [ 2 ] (b)
A[ 3 ] B[ 3 ] + C [ 3 ] (c)
Quelque soit l'ordre d'exécution ex : a, b, c ou c, b, a, ou encore b, c, a, etc. les résultats en
mémoire sont identiques. La sémantique du programme ne dépend pas de l'ordre d'exécution des
itérations de cette boucle. Ces itérations peuvent donc être exécutées en parallèle.
1.3.2 Définition
Bernstein a introduit en 1966 un ensemble de conditions permettant d'établir la possibilité
d'exécuter plusieurs programmes (processus) en parallèle. Supposons deux programmes : P1 et P2
chacun utilise des variables en entrée (respectivement E1 et E2) et produit des résultats en sortie
(respectivement S1 et S2). Selon Bernstein, les programmes P1 et P2 sont exécutables en parallèle
(notation : P1 II P2) si les conditions suivantes sont respectées :
{E1 S2 = , E2 S1 = , S2 S1 = }
Module : Système d’exploitation II Chapitre IV : Introduction aux architectures parallèles
Responsable : NINI B. Page 5
5
Plus généralement, un ensemble de programmes P1, P2, ... Pk peuvent être exécutés en
parallèle ssi les conditions de Bernstein sont satisfaites c'est à dire si Pi II Pj pour tout couple (i; j)
avec i j.
L'exemple intuitif et les conditions de Bernstein introduisent la notion de dépendances entre
deux ou plusieurs programmes (ou opérations). Pour que deux programmes ou deux opérations
puissent être exécutées en parallèle, il faut :
1) qu'ils (elles) soient indépendants (elles),
2) que l'on puisse détecter cette indépendance et
3) qu'il existe suffisamment de ressources pour les exécuter simultanément.
1.4 Les sources du parallélisme
1.4.1 Le parallélisme de données
Le parallélisme de données est un type de parallélisme pour lequel la même opération est
réalisée simultanément par de nombreux processeurs sur des données différentes. Un exemple simple
est celui du calcul matriciel.
Pour i de 1 à n
Pour j de 1 à n
A[i][ j] B[i][j ] +C [i ][j]
FinPour
FinPour
Les itérations de cette boucle sont indépendantes. Il y a n2 itérations avec une opération par
itération. Le potentiel de parallélisme exploitable dans cette boucle est donc de n2 opérations
simultanées. Son ampleur exploitable dépend directement de la taille des structures de données
manipulées. Les données sont de loin la source de parallélisme qui offre le plus de potentiel.
Généralement le nombre de processeurs est beaucoup plus petit que le parallélisme potentiel et
chaque processeur devra donc traiter plusieurs données.
1.4.2 Le parallélisme de contrôle
Le parallélisme de contrôle est un type de parallélisme pour lequel des opérations différentes
sont réalisées simultanément. C’est l'absence de dépendances entre différentes parties du programme
qui est la source du parallélisme de contrôle. Ceci est un exemple très simple de programme pour un
serveur et ci-dessous le programme correspondant pour le traitement client :
faire toujours
détecter demande-client
si demande client vrai
lancer traitement-client
1 / 13 100%