Micro Systèmes n°101 octobre 1989
Micro Systèmes n°101 octobre 1989
  • Prix facial : 30 F

  • Parution : n°101 de octobre 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 198

  • Taille du fichier PDF : 160 Mo

  • Dans ce numéro : première mondiale... tous les secrets du bios.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 158 - 159  |  Aller à la page   OK
Pages suivantes >
158 159
FENETRE SUR facilement comment les branchements réduisent le nombre d'opérations effectuées en parallèle par l'ordinateur. En revanche, une machine VLIW pourrait exécuter les quatre opérations et chercher si R4 est supérieur ou inférieur à zéro en une seule opération. Elle écrirait automatiquement les résultats des deux premières opérations dans RI et R3. Si R4 est supérieur à zéro, elle mémoriserait le résultat de R5 x 2 dans R5 et se débarrasserait du calcul de R6 x R6. Dans l'autre cas, si R4 est inférieur ou égal à zéro, elle procéderait à l'opération inverse. L'ensemble du processus serait effectué en un seul cycle, ce qui représente une économie de temps importante par rapport aux trois cycles nécessaires précédemment. Certaines limites empêchent évidemment l'ordinateur VLIW d'exécuter un programme important en un seul cycle. Dans l'exemple choisi, les quatre opérations peuvent être exécutées simultanément parce qu'aucune elles ne dépend des résultats d'une autre opération. Ces interdépendances rendent souvent impossible l'exécution de grandes portions de programmes en un seul cycle. Une opération située après le branchement peut avoir à utiliser les résultats contenus dans R5, qui ont été obtenus par une opération exécutée avant le saut. Il est difficile de savoir combien de fois cette situation se produira dans des programmes réels, car chaque programme a son propre système d'interdépendances. C'est au compilateur qu'il incombe d'exploiter toutes les possibilités de parallélisme, et il faut pour cela des techniques de compilation très sophistiquées. S'il est facile de déterminer quelles opérations peuvent être effectuées simultanément, cette tâche est extrêmement fastidieuse. Les ordinateurs VLIW pourraient être programmés en code machine, mais il s'avérerait alors difficile de faire fonctionner la totalité de l'UC. Et si les opérations peuvent être automatisées, il n'y a pas de raison de ne pas laisser l'ordinateur faire le travail. Le seul problème consiste à concevoir les algorithmes permettant une exécution aussi efficace que possible des opérations. Les deux méthodes principales servant à l'élaboration du code VLIW sont désignées par les termes « programmation trace » et « programmation par percolation ». Ces deux méthodes condensent le code de sorte que les opérations qui peuvent être effectuées simultanément le soient effectivement lorsque cela est possible. Cependant, ces deux méthodes suivent un principe différent. Compilation par « programmation trace » La programmation trace a été mise au point par Josh Fisher avec plusieurs de ses étudiants de Yale. Cette méthode part du principe qu'un ordinateur passe son temps à exécuter des séries d'opérations disposées le long d'une branche ou « trace », tout au long d'un programme. L'ordinateur peut de temps à autre remonter le long d'un branchement qui s'écarte de la branche, mais un compilateur de programmation trace espère que ce processus sera vite inversé. Une fois que le compilateur a trouvé la trace, il condense le code le long de cette trace et rassemble toutes les opérations pouvant être exécutées simultanément dans la même instruction. La compilation d'un programme pour une machine VLIW revient à déterminer quelle est la bonne branche avant que le programme ne l'exécute, ce qui est souvent un défi difficile à relever. Mais il est parfois facile de trouver la trace, c'est le cas des boucles où le programme a toutes les chances de revenir au début de la boucle. Malheureusement, le compilateur ne peut pas toujours prévoir beaucoup d'autres branchements. La moitié du temps il a raison, et l'autre moitié il a tort. La figure 1 présente un fragment de code organisé selon une architecture arborescente qui met tout particuliè- R3 x 2 —0-R3 R1 + R2 —0-R1 R4 + R5 A gauche si R9 > 0, sinon à droite R6x2—.-R6 R7x2R7 rement l'accent sur la trace choisie par le compilateur. Après compilation, la figure 1 devient : Instl Rl+R2—i-R I ; if R9<=0 then Inst2 else R4+R5—..R5 ; if R8<=0 then Inst3 else Inst2 : R3*2 R3 Inst3 : R6*2 R6 Il faut remarquer que l'ordinateur va effectuer trois opérations en même temps. Le compilateur a prévu que la machine déterminerait sûrement que R8 et R9 sont inférieurs à zéro. Les branchements déterminent quels résultats sont conservés et lesquels sont rejetés. Si les branchements s'écartent de la trace, tout ce qui est situé après le branchement est rejeté. Les trois opérations appartiennent toutes à la trace que le compilateur a choisie. Si celui-ci s'est trompé et que R9 est en fait supérieur à zéro, tout le travail supplémentaire ne sert à rien. Compilation par « programmation par percolation » La programmation par percolation est un modèle plus général adapté aux machines VLIW. Il a été inventé par Alex Nicolau, ancien élève de Josh Fisher et maintenant professeur à l'université de Californie à Irvine. Cette méthode de compilation traite l'ensemble des opérations exécutées à chaque cycle comme une structure arborescente dont la trace est composée de branchements et non d'une ligne droite. Cette procédure évite au processeur d'avoir à prévoir une trace A gauche si R8 > O. sinon à droite Fig. 1. - Un fragment de code avec cinq instructions et deux branchements. La compilation par programmation trace a choisi les trois instructions essentielles en prévoyant le cheminement de l'ordinateur à chaque branche. 158 - MICRO-SYSTEMES Octobre 1989
particulière. La machine doit exécuter toutes les opérations de la structure arborescente et mémoriser le résultat de celle qui se trouve sur le chemin que le processus emprunte. Les diverses combinaisons de branchements pouvant être organisées en structure arborescente et non en simple trace, cette méthode est plus générale. Un compilateur à programmation par percolation pourrait rassembler toutes les opérations de la figure 1 en une seule instruction. L'ordinateur exécuterait alors simultanément les cinq instructions et prélèverait les résultats dont il a besoin après avoir résolu les branchements. Le compilateur crée les instructions en « percolant » toutes les instructions aussi loin qu'il est possible, sans que le déroulement du programme soit modifié. Il commence avec un code ordinaire puis classe chaque instruction dans un noeud qui lui est propre et considère que le programme est une liste de noeuds à exécuter l'un après l'autre. Le compilateur commence à « percoler » en comparant chaque noeud avec le noeud précédent. Si les instructions des deux noeuds peuvent être exécutées simultanément sans interférence, le compilateur rassemble les deux noeuds. S'il lui semble que seules quelques instructions du noeud inférieur peuvent être déplacées vers le noeud supérieur, il ne déplace que les instructions concernées. Le compilateur cherche à déplacer autant d'instructions que possible dans le sens de déroulement du programme. Cette action revient en fait à la compression effectuée par le programmateur par trace, mais elle est effectuée d'une façon plus générale. Les différences existant entre ces deux méthodes deviennent apparentes lorsque l'un des noeuds contient un branchement. Si les branchements et les instructions des deux noeuds peuvent être effectués simultanément, le compilateur rassemble les deux noeuds et les opérations de ce noeud commencent à être organisées comme la structure arborescente de la figure 1. Parfois ces structures deviennent très touffues, et la proportion de tâches conservées par la machine diminue car seul le travail de l'une des traces est mémorisé dans le registre. En fait, ce manque d'efficacité illustre en partie la loi de la réduction des retours. Un nombre croissant de processeurs exécutant des structures de plus en plus touffues sont nécessaires pour éviter l'exécution d'une nouvelle et fastidieuse opération. Octobre 1989 Les machines d'aujourd'hui et de demain Certains ordinateurs VLIW sont déjà lancés sur le marché, mais il s'agit en fait de grosses machines destinées au marché des mini-ordinateurs et des super-ordinateurs. Des versions plus réduites sont déjà annoncées pour les micro-ordinateurs. Des versions plus importantes vont certainement suivre. Le processeur Intel 80860 possède également de nombreuses similitudes avec le VLIW. La Multiflow Computer Company, installée à Branford dans le Connecticut, fabrique une machine destinée au marché des mini-ordinateurs/superordinateurs. Le modèle de base, le Trace 7, peut exécuter simultanément sept opérations. Il comporte deux unités de traitement en virgule flottante et deux unités de traitement des entiers. Les unités de traitement des entiers fonctionnent deux fois plus vite que les unités de traitement en virgule flottante ; six opérations sont donc exécutées en même temps. Le compilateur travaille en programmation trace. Kemal Ebcioglu, du laboratoire de recherches IBM de Yorktown Heights, fabrique actuellement un ordinateur VLIW expérimental. Cette machine est destinée à utiliser un compilateur à programmation par percolation qui crée des instructions organisées en structure arborescente. Il comportera seize unités arithmétiques et logiques et huit unités servant à échanger des informations avec la mémoire. Pendant que les unités arithmétiques et logiques évaluent ces opérations, l'UC peut également choisir l'une des seize branches de l'arbre et décider à partir de cette information quel résultat elle va garder. La machine d'IBM comportera 128 registres. Puisque 16 opérations arithmétiques à deux opérandes et huit mémorisations peuvent être effectuées à chaque cycle, la matrice de registres doit comporter 48 entrées. Chaque unité arithmétique et logique pourra avoir accès à l'un des 128 registres. La plupart des autres éléments de l'ordinateur sont des composants électroniques courants, mais cette matrice de registres a exigé un travail tout particulier. Le prototype du compilateur de l'ordinateur IBM a été réalisé bien avant que les détails de l'architecture matérielle aient été réglés. De nombreux programmes différents ont été compilés. Les données obtenues ont servi de guide aux recherches. Une version préliminaire du matériel ne possédait que huit unités fonctionnelles car le compilateur n'avait jusque-là généré que des noeuds comportant huit instructions. Puis, une nouvelle méthode de compilation et de percolation a produit certains exemples qui pouvaient occuper jusqu'à 16 unités fonctionnelles. L'architecture matérielle a alors été étendue pour prendre ce nouveau facteur en compte. Les expériences ont également démontré qu'un programme d'application réel utiliserait environ six des unités fonctionnelles en moyenne, ce qui signifie que le programme fonctionnerait environ six fois plus vite sur une machine VLIW que sur une machine dotée d'un seul processeur. Malheureusement, il est difficile de faire fonctionner six unités fonctionnelles à la fois. Il est donc rare d'obtenir un gain de vitesse proportionnel à la multiplication des unités fonctionnelles. Les résultats des expériences ont prouvé que l'UC rejetait en moyenne 40% des opérations parce que le programme ne suivait que l'une des branches possibles. Le compilateur à programmation par percolation a programmé de nombreuses opérations sur toutes ces branches, en en choisissant une par anticipation. On peut déjà voir ici une application de la loi des retours réduits. VLIW : un RISC étendu ? De nombreux préceptes régissant la conception du VLIW sont en fait des extensions de la philosophie RISC. Par de nombreux aspects, le VLIW en est la prochaine étape logique. Comme le processeur RISC, il faut que toutes les opérations arithmétiques effectuées par les machines VLIW d'IBM reçoivent leurs opérandes de registres et mémorisent les résultats dans des registres. Les chargements et les mémorisations de données doivent être exécutés séparement. Cette séparation permet à la machine d'effectuer autant de tâches que possible sans être ralentie par le bus qui est en train de récupérer de l'information provenant de la mémoire. Pour que son architecture soit aussi simple que possible, l'architecture RISC utilise des compilateurs intelligents afin de réorganiser le code. Dans le meilleur des cas, le jeu de processeurs RISC peut commencer une nouvelle instruction à chaque cycle, même lorsque l'exécution de l'instruction précédente n'est pas finie. Le compilateur doit organiser les instructions pour éviter les conflits avec d'au- MICRO-SYSTEM ES - 159



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 101 octobre 1989 Page 1Micro Systèmes numéro 101 octobre 1989 Page 2-3Micro Systèmes numéro 101 octobre 1989 Page 4-5Micro Systèmes numéro 101 octobre 1989 Page 6-7Micro Systèmes numéro 101 octobre 1989 Page 8-9Micro Systèmes numéro 101 octobre 1989 Page 10-11Micro Systèmes numéro 101 octobre 1989 Page 12-13Micro Systèmes numéro 101 octobre 1989 Page 14-15Micro Systèmes numéro 101 octobre 1989 Page 16-17Micro Systèmes numéro 101 octobre 1989 Page 18-19Micro Systèmes numéro 101 octobre 1989 Page 20-21Micro Systèmes numéro 101 octobre 1989 Page 22-23Micro Systèmes numéro 101 octobre 1989 Page 24-25Micro Systèmes numéro 101 octobre 1989 Page 26-27Micro Systèmes numéro 101 octobre 1989 Page 28-29Micro Systèmes numéro 101 octobre 1989 Page 30-31Micro Systèmes numéro 101 octobre 1989 Page 32-33Micro Systèmes numéro 101 octobre 1989 Page 34-35Micro Systèmes numéro 101 octobre 1989 Page 36-37Micro Systèmes numéro 101 octobre 1989 Page 38-39Micro Systèmes numéro 101 octobre 1989 Page 40-41Micro Systèmes numéro 101 octobre 1989 Page 42-43Micro Systèmes numéro 101 octobre 1989 Page 44-45Micro Systèmes numéro 101 octobre 1989 Page 46-47Micro Systèmes numéro 101 octobre 1989 Page 48-49Micro Systèmes numéro 101 octobre 1989 Page 50-51Micro Systèmes numéro 101 octobre 1989 Page 52-53Micro Systèmes numéro 101 octobre 1989 Page 54-55Micro Systèmes numéro 101 octobre 1989 Page 56-57Micro Systèmes numéro 101 octobre 1989 Page 58-59Micro Systèmes numéro 101 octobre 1989 Page 60-61Micro Systèmes numéro 101 octobre 1989 Page 62-63Micro Systèmes numéro 101 octobre 1989 Page 64-65Micro Systèmes numéro 101 octobre 1989 Page 66-67Micro Systèmes numéro 101 octobre 1989 Page 68-69Micro Systèmes numéro 101 octobre 1989 Page 70-71Micro Systèmes numéro 101 octobre 1989 Page 72-73Micro Systèmes numéro 101 octobre 1989 Page 74-75Micro Systèmes numéro 101 octobre 1989 Page 76-77Micro Systèmes numéro 101 octobre 1989 Page 78-79Micro Systèmes numéro 101 octobre 1989 Page 80-81Micro Systèmes numéro 101 octobre 1989 Page 82-83Micro Systèmes numéro 101 octobre 1989 Page 84-85Micro Systèmes numéro 101 octobre 1989 Page 86-87Micro Systèmes numéro 101 octobre 1989 Page 88-89Micro Systèmes numéro 101 octobre 1989 Page 90-91Micro Systèmes numéro 101 octobre 1989 Page 92-93Micro Systèmes numéro 101 octobre 1989 Page 94-95Micro Systèmes numéro 101 octobre 1989 Page 96-97Micro Systèmes numéro 101 octobre 1989 Page 98-99Micro Systèmes numéro 101 octobre 1989 Page 100-101Micro Systèmes numéro 101 octobre 1989 Page 102-103Micro Systèmes numéro 101 octobre 1989 Page 104-105Micro Systèmes numéro 101 octobre 1989 Page 106-107Micro Systèmes numéro 101 octobre 1989 Page 108-109Micro Systèmes numéro 101 octobre 1989 Page 110-111Micro Systèmes numéro 101 octobre 1989 Page 112-113Micro Systèmes numéro 101 octobre 1989 Page 114-115Micro Systèmes numéro 101 octobre 1989 Page 116-117Micro Systèmes numéro 101 octobre 1989 Page 118-119Micro Systèmes numéro 101 octobre 1989 Page 120-121Micro Systèmes numéro 101 octobre 1989 Page 122-123Micro Systèmes numéro 101 octobre 1989 Page 124-125Micro Systèmes numéro 101 octobre 1989 Page 126-127Micro Systèmes numéro 101 octobre 1989 Page 128-129Micro Systèmes numéro 101 octobre 1989 Page 130-131Micro Systèmes numéro 101 octobre 1989 Page 132-133Micro Systèmes numéro 101 octobre 1989 Page 134-135Micro Systèmes numéro 101 octobre 1989 Page 136-137Micro Systèmes numéro 101 octobre 1989 Page 138-139Micro Systèmes numéro 101 octobre 1989 Page 140-141Micro Systèmes numéro 101 octobre 1989 Page 142-143Micro Systèmes numéro 101 octobre 1989 Page 144-145Micro Systèmes numéro 101 octobre 1989 Page 146-147Micro Systèmes numéro 101 octobre 1989 Page 148-149Micro Systèmes numéro 101 octobre 1989 Page 150-151Micro Systèmes numéro 101 octobre 1989 Page 152-153Micro Systèmes numéro 101 octobre 1989 Page 154-155Micro Systèmes numéro 101 octobre 1989 Page 156-157Micro Systèmes numéro 101 octobre 1989 Page 158-159Micro Systèmes numéro 101 octobre 1989 Page 160-161Micro Systèmes numéro 101 octobre 1989 Page 162-163Micro Systèmes numéro 101 octobre 1989 Page 164-165Micro Systèmes numéro 101 octobre 1989 Page 166-167Micro Systèmes numéro 101 octobre 1989 Page 168-169Micro Systèmes numéro 101 octobre 1989 Page 170-171Micro Systèmes numéro 101 octobre 1989 Page 172-173Micro Systèmes numéro 101 octobre 1989 Page 174-175Micro Systèmes numéro 101 octobre 1989 Page 176-177Micro Systèmes numéro 101 octobre 1989 Page 178-179Micro Systèmes numéro 101 octobre 1989 Page 180-181Micro Systèmes numéro 101 octobre 1989 Page 182-183Micro Systèmes numéro 101 octobre 1989 Page 184-185Micro Systèmes numéro 101 octobre 1989 Page 186-187Micro Systèmes numéro 101 octobre 1989 Page 188-189Micro Systèmes numéro 101 octobre 1989 Page 190-191Micro Systèmes numéro 101 octobre 1989 Page 192-193Micro Systèmes numéro 101 octobre 1989 Page 194-195Micro Systèmes numéro 101 octobre 1989 Page 196-197Micro Systèmes numéro 101 octobre 1989 Page 198