next up previous contents index
Next: Du programme-source au module Up: Du fonctionnement et de Previous: Où la soustraction n'est   Contents   Index

Architecture et fonctionnement de l'ordinateur

Dans ce paragraphe, on reste très schématique, uniquement le principe de fonctionnement étant évoqué [TRELEAVEN]. Dans la figure suivante on présente la structure typique d'un ordinateur à processeur scalaire et à flot de données uniques. On parle alors de processeur SISD, signifiant single instruction single data stream. La plupart des ordinateurs monoprocesseurs conventionnels (par exemple IBM 370, DEC VAX, SUN) fonctionnent, plus ou moins, sur ce principe.

unit=5mm (28,15) (5mm,5mm) (2.5,7)romROM (7.5,7)ramRAM (7.5,12)pram (2.5,12)prom (1,12)(26,12) (1,14)(26,14) (14,13)busBus des données, des adresses, des commandes et du contrôle <->rampram ->romprom (14,9)procProcesseur (14,7.5)ulaULA (14,5.5)regregistres (12,4)(16,10) <->(14,10)(14,12) (14,2)clockHorloge (14,4)pclock ->clockpclock (21.5,7)esE/S (21.5,12)pes <->espes [lb](25,9)Disques [lb](25,7.5)Dérouleurs [lb](25,6)Écrans [lb](25,4.5)Claviers [lb](25,3)Modems <->(23,7.5)(24.8,9.5) <->(23,7.25)(24.8,8) <->(23,7)(24.8,6.5) <->(23,6.75)(24.8,5) <->(23,6.5)(24.8,3.5)

À chaque cycle d'horloge, l'unité logique et arithmétique (ULA) du processeur exécute une opération élémentaire indiquée par le programme-machine. Si par exemple on veut ajouter deux nombres, d'abord l'adresse mémoire du premier est mise dans un registre lu par le processeur pour aller chercher à la bonne place de la mémoire RAM ; ensuite le nombre est rappelé de la mémoire dans le registre d'addition. La même opération est recommencée avec l'autre opérande. Ensuite, l'opération d'addition est exécutée, le résultat remplace le contenu du registre correspondant et finalement est sauvé dans la mémoire RAM. Évidemment, les registres, qui sont des mémoires très rapides, ne peuvent contenir qu'un très petite quantité de données et rappeler chaque fois que le besoin se présente la donnée nécessaire. Comme les accès à la mémoire RAM sont plus lents que les accès des registres, plusieurs cycles d'horloge s'écoulent pour le rappel des données pendant lesquels le processeur reste inactif. Quelques règles de bon sens et l'utilisation des compilateurs de plus en plus optimisés peuvent minimiser ce va-et-vient incessant.

Une avancée révolutionnaire fut la conception et la réalisation des premiers processeurs vectoriels. Pour comprendre leur mode de fonctionnement, imaginons que l'on veuille ajouter deux vecteurs, ce qu'en FORTRAN, par exemple, est effectué par la boucle



Si l'addition de deux nombres scalaires nécessite cycles d'horloge, l'addition de deux vecteurs à composantes nécessite cycles sur un processeur scalaire. En effet, la boucle précédente est décomposée en instructions machine plus élémentaires sous la forme



Il est donc évident pourquoi l'addition de deux vecteurs nécessite cycles sur un processeur scalaire. Les processeurs vectoriels disposent, outre les registres scalaires, des registres vectoriels dont les contenus peuvent être additionnés ou multipliés en un cycle. Si donc les registres vectoriels sont suffisamment grands pour contenir les composantes d'un vecteur, la boucle ci-dessus ne nécessitera que cycles, autant que l'addition de deux nombresC.1. On parle alors d'architecture SIMD qui signifie single instruction multiple data stream. Des ordinateurs monoprocesseurs vectoriels (comme le CRAY 1) ou matriciels (comme le FPS) fonctionnent sur ce principe.

On constate donc qu'on a un gain de temps spectaculaire s'il est possible de faire subir la même opération à toutes les composantes d'un vecteur sur un processeur vectoriel. On dit alors que l'algorithme est vectorisable.

Cette remarque explique le soin que l'on a pris dans le chapitre sur les simulations dynamiques à montrer qu'il est possible de faire un balayage séquentiel selon un ordre pré-établi ; si les sites choisis lors du balayage sont suffisamment éloignés (plus loin que le double de la portée de l'interaction), la mise à jour de la configuration à un site donné est indépendant du site suivant dans l'ordre du balayage. L'algorithme de Metropolis pour le sous-ensemble des sites sélectionnés est alors vectorisable.

Dans la course vers la performance calculatoire, les ordinateurs parallèles furent l'étape de sophistication suivante. Dans cette architecture, plusieurs processeurs exécutent des tâches identiques ou comparables sur des données partagées tant qu'il n'y ait pas de conflit d'accès et de préséance des opérations sur les données partagées. Cette architecture est appelée MIMD de multiple instruction multiple data stream. Des ordinateurs multiprocesseurs avec des mémoires partagées (comme le SYMMETRY) ou des systèmes avec des mémoires locales (comme l'Intel iPSC) fonctionnent sur ce principe.

Pour une taxonomie plus approfondie sur les diverses architectures, on peut consulter l'article de [FLYNN]. Paradoxalement, aujourd'hui la technologie avance plus rapidement que la conception de nouveaux algorithmes parallèles efficaces. Un des défis de l'algorithmique est donc la conception de tels algorithmes [GIBBONS ET AL. 1989].


next up previous contents index
Next: Du programme-source au module Up: Du fonctionnement et de Previous: Où la soustraction n'est   Contents   Index
Dimitri Petritis 2003-07-03