FR2583904A1 - Systeme d'ordinateur du type a trains multiples de donnees et instruction unique (simd), avec traitement selectif des donnees - Google Patents

Systeme d'ordinateur du type a trains multiples de donnees et instruction unique (simd), avec traitement selectif des donnees Download PDF

Info

Publication number
FR2583904A1
FR2583904A1 FR8609106A FR8609106A FR2583904A1 FR 2583904 A1 FR2583904 A1 FR 2583904A1 FR 8609106 A FR8609106 A FR 8609106A FR 8609106 A FR8609106 A FR 8609106A FR 2583904 A1 FR2583904 A1 FR 2583904A1
Authority
FR
France
Prior art keywords
instruction
processors
test
state
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
FR8609106A
Other languages
English (en)
Inventor
Adam E Levinthal
Thomas K Porter
Thomas D S Duff
Loren C Carpenter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pixar
Original Assignee
Pixar
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pixar filed Critical Pixar
Publication of FR2583904A1 publication Critical patent/FR2583904A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

L'INVENTION CONCERNE UN ORDINATEUR COMPORTANT PLUSIEURS PROCESSEURS 11, 13, 15, 17 OPERANT EN PARALLELE SUR DES TRAINS SEPARES DE DONNEES MAIS EN REPONSE A DES INSTRUCTIONS COMMUNES; POUR AUTORISER SELECTIVEMENT ET INDIVIDUELLEMENT LE FONCTIONNEMENT DE CHAQUE PROCESSEUR 11, 13, 15, 17, IL EST PREVU POUR CHACUN D'EUX UN ETAGE A REGISTRE DE COMMANDE 37; CHAQUE REGISTRE PEUT ETRE COMMANDE, POUR PASSER ENTRE DES ETATS DE VALIDATION ET D'INVALIDATION CONCERNANT L'EXECUTION D'UNE INSTRUCTION COMMUNE, PAR LES RESULTATS D'UN TEST EFFECTUE PAR SON PROCESSEUR ASSOCIE 11, 13, 15, 17 EN REPONSE A UNE INSTRUCTION ANTERIEURE PAR LE COMPLEMENT DES RESULTATS DU TEST.

Description

La présente invention se rapporte d'une façon générale à des techniques et
ordinateurs de traitement de données en parallèle et spécifiquement des systèmes dans lesquels chacun d'une pluralité de processeurs en parallèle exécute simultanément la même instruction sur une donnée différente. Un tel ordinateur est couramment appelé un système de traitement de trains multiples de données avec une
seule instruction (SIMD).
Il existe de nombreuses applications de traitement de données dans lesquelles des trains multiples de données peuvent être traités de la même manière. Un exemple concerne le domaine des traitements graphiques par ordinateurs, o des signaux vidéo séparés de rouge, de vert, de bleu et
alphanumériques peuvent être traités de façon identique.
Pour obtenir la vitesse maximale de traitement, il est par conséquent commode de traiter ces quatre trains de données simultanément avec la même séquence d'instructions. Ainsi, à un instant donné, des données séparées de rouge, de vert, de bleu et alphanumériques concernant un élément d'image particulier pour affichage en couleur sont simultanément traitées. Un traitement en parallèle est particulièrement rapide si le programme en train d'être exécuté sur les trains parallèles de données est constitué par une série invariante d'instructions. Il est plus courant cependant que le programme de commande contienne des instructions conditionnelles qui dépendent, pour leur exécution, des données se trouvant dans
chacun des processeurs en parallèle. Puisque les données en -
train d'être traitées dans chaque train sont différentes,
on doit prendre dans ce cas des mesures pour que les proces-
seurs dont les données ne satisfont pas à la condition contenue dans l'instruction du programme soient rendus non opérationnels pendant le temps o les processeurs restants sont en train d'exécuter l'instruction particulière. Il est connu qu'une instruction WHILE-DO ( FAIRE... TANT QUE...) constitue le minimum nécessaire pour la réalisation de tous
les processus de commande de transmission possibles.
Un exemple courant d'une telle instruction conditionnelle de programme est une instruction "IF-THEN" (SI...ALORS..): cela signifie que les processeurs individuels reçoivent tous une instruction d'exécution d'une certaine manipulation de leurs trains de données individuels, mais seulement "si" leurs données satisfont à une certaine condi-
tion exprimée dans l'instruction du programme. Les proces-
seurs dont les données ne satisfont pas à cet instant à la condition n'exécutent pas cette instruction. Une instruction "IF-THEN" est souvent complétée par un modificateur "ELSE ( SINON...); cela signifie que les processeurs n'exécutant pas l'instruction "IF-THEN" reçoivent ensuite une instruction d'exécution d'une opération différente sur leurs données à l'instant suivant tandis que les processeurs qui n'exécutaient
pas l'instruction "IF-THEN" sont rendus inopérants.
Un objet général de la présente invention est de créer des techniques et circuits perfectionnés pour commander sélectivement ceux d'une pluralité de processeurs en parallèle
qui exécutent des instructions conditionnelles spécifiques.
Cet objet et d'autres sont réalisés par la présente invention selon laquelle, brièvement, chacun des processeurs en parallèle comporte un élément de commande séparé, tel qu'un bit d'un registre de commande, qui autorise le processeur à exécuter une instruction commune fournie à tous les processeurs quand l'élément se trouve dans un premier état et qui interdit au processeur d'exécuter cette instruction lorsque l'élément se trouve dans son autre état. L'état de chaque élément de
commande est établi pour commander l'exécution d'une instruc-
tion particulière en fonction de ce que la donnée concernant ce processeur satisfait au test d'une instruction précédente,
comme une instruction "IF-THEN". Lors d'une exécution complé-
mentaire suivante, comme cela se produit dans une instruction "ELSE", les états des éléments de commande sont inversés de sorte que les processeurs qui n'ont pas exécuté la première
instruction exécutent l'instruction suivante, et inversement.
En outre, pour fournir une possibilité d'exécution emboîtée de ces types complémentaires d'instructions, il est prévu un dispositif de mémorisation ( dans une réalisation préférée une pile mémoire)-pour mémoriser les états des éléments de commande individuels lorsque l'instruction conditionnelle emboîtée se produit. Lorsque l'exécution de l'instruction emboîtée est terminée, les états des éléments de commande au moment de l'emboîtement de l'instruction conditionnelle sont rétablis de sorte que leur traitement
peut se poursuivre.
D'autres caractéristiques et avantages de l'inven-
tion seront mis en évidence dans la suite de la description,
donnée à titre d'exemple non limitatif, en référence aux dessins annexés dans lesquels: la figure 1 représente sous la forme d'un schéma général à blocs un processeur SIMD; la figure 2 représente une première réalisation des circuits de commande du système de la figure 1; les figures 3 et 4 représentent des tableaux qui illustrent le fonctionnement du système de la figure 1 lorsqu'il est équipé du circuit de commande de la figure 2, la figure 5 représente une seconde réalisation des circuits de commande du système de la figure 1;
les figures 6 et 7 donnent des tableaux illustrant le fonction-
nement du système de la figure 1 lorsqu'il est équipé du circuit de commande de la figure 5-: et la figure 8 donne des détails logiques concernant une autre
partie du circuit de la figure 1.
En référence à la figure 1, on va décrire l'architecture d'ensemble d'un ordinateur utilisant les différents aspects de la présente invention. Des processeurs séparés 11, 13, 15 et 17 reçoivent, respectivement, des trains de données indépendants dans des Iignes d'entrée 19, 21, 23 et 25. De façon analogue, des lignes indépendantes 27, 29, 31 et 33 transmettent respectivement les signaux de sortie des éléments de traitement. Quatre processeurs de données en parallèle sont illustrés dans cet exemple mais il va de soi que les principes de la présente invention s'appliquent à un système en parallèle contenant arbitrairement de nombreux éléments de traitement en parallèle. Quatre processeurs
sont avantageusement utilisés dans un ordinateur pour repré-
sentations graphiques, un canal étant utilisé pour traiter des données concernant la composante rouge d'un signal vidéo, un autre pour traiter la composante verte, un troisième pour traiter la composante bleue et un quatrième pour traiter
une composante alphanumérique qui fournit une autre informa-
tion de l'image. Un traitement en parallèle est adapté en
particulier pour une application concernant des représenta-
tions graphiques puisqu'un traitement rapide est impératif et
que la même séquence d'instructions d'un programme est exécu-
tée simultanément dans les quatre voies de transmission de
données.
Il existe cependant certaines instructions de programme qui nécessitent qu'un ou plusieurs éléments de traitement ne participent pas à l'exécution d'une instruction particulière du programme qui est appliquée simultanément par l'intermédiaire d'un bus d'instruction 35 aux quatre éléments de traitement 11, 13, 15 et 17. Pour commander celui des
quatre éléments de traitement devant intervenir pour l'exécu-
tion d'une instruction particulière, il est prévu un circuit de commande associé à chacun d'eux, comme un circuit 37 qui commande le fonctionnement de l'élément de traitement 11. Une ligne 39 transmet un signal à l'élément de traitement 11 de
façon à le commander s'il est autorisé à exécuter une instruc-
tion transmise par le bus 35. Par exemple une tension dans la ligne 39 représentant un "1" logique fait en sorte que l'élément de traitement exécute l'instruction alors qu'une tension représentant un "0" logique empêche le fonctionnement de l'élément de traitement pendant l'exécution de cette
instruction particulière par d'autres éléments de traitement.
Chacun des quatre circuits de commande du système de la figure 1, comme le circuit 37, détermine s'il faut autoriser à fonctionner son élément de traitement associé, comme le processeur 11, sur la base de plusieurs rubriques
d'information. L'une est constituée par une condition initia-
le qui est présentée à l'extérieur du circuit de la figure 1
dans une ligne d'activation 41. Une autre rubrique d'informa-
tion est une instruction d'état transmise par un bus 43 et qui spécifie, pour les instructions de processeurs transmises par le bus 35 et pouvant nécessiter que l'instruction soit exécutée par certains et non tous les éléments de traitement, des instructions additionnelles pour déterminer l'état du signal d'autorisation transmis par la ligne 39. Une rubrique finale d'information est constituée par un signal "1" vrai ou un signal "0" faux transmis par une ligne 45 et qui donne le résultat d'un test exécuté par l'élément de traitement 11 sur
sa donnée en réponse à une instruction en cours ou immédiate-
ment précédente transmise par le bus 35. Chacun des quatre circuits de commande représentés sur la figure 1 fonctionne d'une manière semblable, excepté que le signal représentant le résultat du test et reçu en provenance de son élément de traitement associé peut être différent et faire en sorte par conséquent que certains processeurs soient autorisés à fonctionner et que d'autres soient empêchés de fonctionner à
un instant donné.
Le fonctionnement des circuits de commande du système de la figure 1 va être expliqué de façon plus complète en référence à ses deux réalisations préférées, dont l'une est représentée sur les figures 2 à 4 et l'autre sur les figures 5 à 7. Cependant avant de décrire ces
réalisations, on va d'abord expliquer certaines particulari-
tés générales du système de la figure 1. Les instructions de processeur transmises par le bus 35 et les instructions
d'état 43 ont pour origine une unité de commande microprogram-
mée telle que le micro-séquenceur 47. Une unité de commande microprogrammée se compose de la mémoire de microprogramme et des structures nécessaires pour déterminer l'adresse de la micro-instruction suivante, cela correspondant à des
structures spécifiques qui sont bien connues.
Un circuit logique 49 comporte comme entrées les lignes de transmission de résultats de tests individuels associées à chacun des éléments de traitement. Le circuit logique 49 produit un code de condition dans une ligne de
sortie 51 quand les signaux transmis par les-lignes de résul-
tats de tests d'entrée définissent une ou plusieurs combinai-
sons particulières. Le signal transmis par la ligne 51 est appliqué à l'entrée de code de condition du micro-séquenceur 47, en autorisant ainsi un changement dans la séquence d'instructions en réponse à une combinaison particulière des sorties de résultats de tests. Une autre entrée dans les circuits logiques 49 est assurée au moyen d'une ligne 53, correspondant à une zone d'instruction du micro-séquenceur
47.
Dans une réalisation particulière du système de la figure 1 pour un traitement de représentations graphiques en couleur par ordinateur, chacun des éléments de traitement contient comme composants primaires un multiplicateur de 16 bits et une unité logique et arithmétique de 16 bits (ALU). Un traitement extrêmement rapide est souhaité dans des applications concernant des représentations graphiques par
ordinateur du fait du grand nombre d'éléments d'image inter-
venant dans chaque trame d'une image, chaque élément d'image
étant défini par quatre mots de 16 bits.
Sur la figure 2 est représenté un circuit qui convient pour être utilisé, conformément à une réalisation, comme chacun des circuits de commande représentés sur la figure 1, tel que le circuit 37. Un circuit à bascule 61 est relié par sa sortie à la ligne de validation 39. Une ligne d'entrée 63 est reliée à une sortie d'un multiplexeur à quatre positions 65. Le multiplexeur 65 comporte quatre entrées séparées 0-3. L'instruction d'état transmise par le bus 43 sélectionne celle des entrées 0-3 qui est reliée à la sortie 63. L'entrée O du multiplexeur est reliée directement à la sortie de la bascule 61, en permettant ainsi de maintenir l'état présent de la bascule 61 quand le multiplexeur 65 est commuté sur son entrée 0. Inversement, quand il est commuté sur son entrée numéro 3, l'état de la bascule 61 est modifié puisque sa sortie est reliée en retour à son entrée par l'intermédiaire d'un inverseur 67. Les positions d'entrée numéro 1 et numéro 2 du multiplexeur 65 sont constituées respectivement par la ligne de résultat de test 45 et la ligne d'activation 41 précédemment décrites en référence à la
figure 1.
Les exemples de circuit spécifique qui viennent d'être décrits sont adaptés en particulier pour l'exécution d'instructions de programme IFTHEN-ELSE. Le tableau de la figure 3 indique les quatre conditions possibles du circuit de commande de la figure 2, en fonction des instructions d'état transmises par le bus 43. Quand le multiplexeur 65 est commuté sur son entree 0, le signal de sortie transmis par la ligne 39 est maintenu, ce qui constitue la condition
désirée quand l'opération logique commandée par l'instruc-
tion transmise par le bus 35 de la figure 1 doit permettre l'exécution d'une opération. L'instruction d'état suivante, sélectionnant l'entrée 1 du multiplexeur 65, fait en sorte que le résultat de test de son élément de traitement associé soit mémorisé, comme précédemment décrit, cette opération accompagnant une instruction IF dans le bus 35. L'instruction
d'état 2 produit une activation de la bascule 61, c'est-à-
dire une instruction d'état transmise par le bus 43 et qui accompagne une instruction END IF incorporée à l'instruction pour élément de traitement transmise par le bus 35. En dernier lieu, une instruction d'état 3 provoque un changement d'état
de la bascule 61 afin d'autoriser à fonctionner les proces-
seurs précédemment invalidés, et inversement d'interdire le
fonctionnement des processeurs précédemment validés. L'ins-
truction d'état 3 est présentée dans le bus 43 en même temps que l'instruction ELSE dans le bus 35. Un micro-code se trouvant dans le micro-séquenceur 47 fait en sorte que les instructions transmises par les bus 35 et 43 correspondent au tableau de la figure 3 en accord avec d'autres impératifs
particuliers d'une application correspondante.
Le tableau de la figure 4 explique mieux le
fonctionnement du circuit de la figure 1, lors de l'utilisa-
tion d'un circuit de commande conforme à la figure 2, à l'aide d'un exemple spécifique. On va considérer l'exemple d'une instruction IF demandant si le signal d'entrée de donnée appliqué à chaque élément de traitement (DI) est supérieur à 1. Comme indiqué à la ligne 2 du tableau de la figure 4, on a supposé dans la colonne " résultat de test que le premier et le troisième élément de traitement ont satisfait au test, en présentant ainsi un "1" logique dans leurs lignes 45 de sortie de résultats de tests, tandis que le second et le quatrième élément de traitement n'ont pas satisfait au test et ont produit par conséquent un signal logique de résultat de test ayant la valeur "0". Même si chaque processeur est en train d'exécuter la même instruction IF, les résultats du test effectué par chacun d'eux peuvent être différents du fait que la donnée en train d'être
traitée par chacun d'eux est généralement différente.
En même temps que l'instruction IF est en train d'être exécutée, l'instruction d'état transmise par le bus 43 fait en sorte que le multiplexeur 65 de chacun des circuits de commande du système de la figure 1 soit commuté dans sa position 1 de façon à recevoir les résultats de tests provenant des processeurs correspondants. Ces résultats de tests, à chaque fois qu'un test produit correctement un "1" ou incorrectement un "0", sont ensuite mémorisés dans les éléments à bascules individuels. Les signaux de validation sortant des quatre bascules sont indiqués comme les quatre signaux de validation dans le tableau de la figure 4, appelés de façon équivalente dans cet exemple des" indicateurs de fonctionnement ". A la ligne 2 du tableau de la figure 4, les indicateurs de fonctionnement font en sorte que les éléments de traitement qui ont satisfait aux tests soient autorisés à fonctionner, c'est-à-dire soient validés, alors que ceux qui n'ont pas satisfait aux tests sont empêchés de fonctionner, c'est-à-dire invalidés. Ceux qui sont validés sont ensuite obligés, comme indiqué. à la ligne 3 du tableau de la figure 4, d'exécuter une instruction, qui est choisie dans cet exemple comme assurant la mise à 1 du signal de sortie de donnée (DO Y des éléments de traitement qui ont été validés. Les éléments de traitement qui ont été invalidés
ne font rien à ce moment.
Une instruction ELSE est ensuite appliquée à tous
les éléments de traitement en vue d'une exécution, c'est-à-
dire que les processeurs qui n'ont pas satisfait au test IF sont maintenant appelés pour effectuer quelque chose de différent, comme illustré aux lignes 4 et 5 du tableau de la figure 4. L'instruction de traitement ELSE est accompagnée par l'instruction d'état 3 qui fait en sorte que les circuits de commande, représentés sur la figure 2, inversent tous les états de leurs bascules. On peut constater cela par une comparaison des indicateurs de fonctionnement des lignes 3 et 4 de la figure 4, dont l'un constitue le complément de l'autre. Une fois que les processeurs précédemment invalidés sont maintenant validés, une instruction est exécutée, comme indiqué à la ligne 5 de la figure 4, à savoir dans cet exemple une instruction faisant en sorte que la valeur de donnée de sortie soit rendue égale à la valeur de donnée d'entrée. Le résultat du sous-programme représenté sur la figure 4 consiste par conséquent dans une mise à 1 de la valeur transmise par les lignes de sortie de données 27 à 31 et par une égalité entre les valeurs des données sorties par les lignes 29 et 33 et les valeurs des données d'entrées correspondantes. Une opération complémentaire des processeurs pour exécuter les instructions IF et ELSE est rendue possible par la prévision d'un moyen simple, dans chacun des circuits de commande, pour inverser tous leurs états en réponse à une
seule instruction d'état.
Les circuits logiques 49 de la figure 1 sont utilisables pour détecter des conditions o, à cause d'une combinaison particulière de données d'entrée, certaines instructions n'ont pas besoin d'être exécutées. Dans ce cas, le micro-séquenceur 47 est alors obligé de sauter par dessus les instructions n'ayant pas à être exécutées. Les circuits logiques 49 peuvent être omis dans des réalisations o des séquences d'instructions non exécutées peuvent être autorisées à se produire. DAns l'exemple de la figure 4, si les résultats de tests représentés à la ligne 2 ont tous
donné des 0, il n'est alors pas nécessaire d'exécuter l'exé-
cution de la ligne 3 puisque tous les processeurs seront invalidés. En conséquence dans cet exemple particulier, les circuits logiques 49 sont conçus pour détecter lorsque tous les résultats de tests des processeurs produisent des O et modifient le code de condition dans la ligne 51, avec changement résultant de la séquence d'instructions émise par le microséquenceur 47. Additionnellement, si les résultats
de tests donnent tous des 1, alors les instructions correspon-
dant aux lignes 4 et 5 de la figure 4 n'ont pas besoin d'être exécutées, de sorte que le code de condition transmis par la lgne 51 peut provoquer un contournement de cette séquence d'instructions. Un signal transmis par la ligne 53 agit de façon à permettre une vérification d'une condition fausse (0) ou d'une condition vraie (1). En conséquence, on obtient une possibilité ( en coopération avec l'instruction d'état transmise par le bus 43) de contrôler si une quelconque ou
bien toutes les conditions sont vraies ou fausses.
Un exemple d'une logique spécifique permettant d'exécuter les fonctions précitées est indiqué sur la figure 8. Une porte OU 52 comporte comme entrées les lignes de
résultats de tests provenant de tous les éléments de traite-
ment. Le signal de sortie de la porte constitue un signal d'entrée pour une porte OU exclusif 54, la ligne de sélection 53 constituant la seconde entrée. La sortie de la porte 54 est constituée par la ligne de transmission de code de condition 51. La porte 54 opère de façon à laisser passer le signal de sortie de la porte 52 quand la ligne de sélection 53 prend une condition fausse (O) et a laissé passer un complément de ce signal de sortie quand la ligne 53 prend une
condition vraie (1).
Certaines applications nécessitent que les circuits de commande des éléments individuels de traitement puissent
traiter un ensemble d'instructions qui est emboîté à l'inté-
rieur d'une série d'instructions IF-THEN-ELSE. Quand cela est nécessaire, les indicateurs de fonctionnement déterminés en résultat de l'exécution de l'instruction IF sont mémorisés pendant que l'ensemble d'instructions emboîté est en train d'être exécuté. Une fois que les instructions emboîtées
ont été exécutées, les indicateurs de fonctionnement mémori-
sés sont extraits de la mémoire de façon que le reste de
l'ensemble d'instructions IF-THEN-ELSE puisse être exécuté.
Le circuit de commande de la figure 5 permet une
opération avec une telle instruction de programme emboîtée.
En addition au circuit de la figure 1, il est prévu une pile mémoire 81, associée à des circuits décodeurs de commande 83. Les circuits représentés à l'intérieur du rectangle en trait interrompu sur la figure 5 ne sont pas i il répétés à l'intérieur de chacun des quatre circuits de commande de la figure 1, mais au contraire ils sont partagés
par eux. Les circuits de décodage 83 répondent à des instruc-
tions d'état transmises par le bus 43 pour faire en sorte que les signaux de validation (indicateurs de fonctionnement) de chacun des circuits de commande soient mémorisés dans la pile mémoire 81 ( "chargement") par l'intermédiaire
des lignes 85 ou bien soient extraits de la mé-
moire ( "extraction") par l'intermédiaire des lignes 87. Comme cela est bien connu, les piles mémoires effectuent la lecture ( "extraient") de la donnée écrite ( "chargée") en dernier. En outre à chaque fois qu'une donnée est écrite lorsqu'il se trouve déjà une donnée dans la pile mémoire, la donnée existante est poussée versunniveau inférieur demanière qu'elle puisse être extraite de la mémoire seulement apres que la donnée écrite le plus récemment est extraite. En d'autres termes,
une donnée est extraite ou lue dans une séquence premier-
entré, dernier-sorti.
En revenant à la figure 5, on va décrire pour cette réalisation l'agencement de chacun des quatre circuits de commande de la figure 1. On emploie une bascule 91 du même type que celle utilisée dansla réalisation de la figure 2,
son signal de sortie étant le signal de validation, correspon-
dant à un bit de l'indicateur de fonctionnement à quatre bits. Son signal d'entrée appliqué par une ligne 93 est également transmis à une sortie du multiplexeur 95. Cependant le multiplexeur comporte cinq positions 0-4, c'est-à-dire une position de plus que celle utilisées dans la réalisation de la figure 2. Une de ces entrées est sélectionnée à un moment donné pour être reliée à l'entrée de la bascule 91 par l'instruction d'état transmise dans le bus 43. L'entrée O est reliée directement à la sortie de bascule, en servant ainsi à maintenir la bascule dans l'état o elle se trouve lors d'une commutation dans ladite position. L'entrée 1 du multiplexeur reçoit la sortie de la porte ET 97, recevant à une entrée le signal de sortie de la bascule 91 et à l'autre entrée le signal de résultat de test transmis par la ligne 45 du processeur associé. Comme indiqué dans le tableau de la figure 6, l'instruction d'état 1 est également décodée par des circuits 83 pour mémoriser ( "charger") à la partie supérieure de la pile mémoire 81 les signaux de sortie ( indicateurs de fonctionnement) des bascules existant dans
les circuits de commande de la figure 1.
L'entrée 2 du multiplexeur est reliée à la ligne d'activation 41. L'entrée numéro 3 est reliée à la pile
mémoire 81 pour assurer l'activation des bascules en concor-
dance avec ce qui a été précédemment enregistré en haut de la pile mémoire. Les circuits de décodage 83 produisent une extraction des données se trouvant en haut de la mémoire
81 lors de la réception de l'instruction d'état 3.
La dernière entrée du multiplexeur 95, commandée en réponse à une instruction d'état numéro 4, reçoit le signal de sortie d'une autre porte ET 99 dont deux entrées sont reliées à la sortie de la pile mémoire et à la sortie de la bascule 91 par l'intermédiaire d'un inverseur 101. Le résultat consiste dans une combinaison logique ET de la donnée mémorisée en haut de la pile mémoire et
d'un complément des indicateurs de fonctionnement en cours.
Le circuit de commande de la figure 5, dont le fonctionnement logique est mis en évidence dans le tableau de
la figure 6, est spécialement adapté pour exécuter la séquen-
ce d'opérations indiquée sur la figure 7. Dans cette séquence, une séquence d'instructions de programme IF-THEN-ELSE est exécutée aux lignes 1, 2, 3, 9, 10, 11, 17, 18 et 19. Une autre série d'instructions IF-THENELSE, apparaissant aux lignes 4 à 8, est emboîtée à l'intérieur des parties IF ou ELSE de l'ensemble d'instructions précité. De façon analogue, une seconde série d'instructions de ce genre est emboîtée aux lignes 12 à 16 à l'intérieur de la séquence fondamentale d'instructions. Dans chacune des trois séries d'instructions IF-THEN-ELSE, on a supposé un résultat de test différent, comme indiqué dans la colonne "résultat de test " de la figure 7. Ces résultats de tests différents produisent des indicateurs de fonctionnement différents pour chacune des trois séries d'instructions IF-THEN-ELSE. Les flèches en pointillés montrent le transfert des bits des indicateurs de fonctionnement au cours du fonctionnement de la pile mémoire 81, les flèches orientées généralement vers la droite étant le résultat d'une opérationdechargement tandis que celles orientées vers la gauche sont le résultat d'une
opération d'extraction.
Bien entendu l'invention n'est pas limitée aux exemples de réalisation cidessus décrits et représentés, à partir desquels on pourra prévoir d'autres modes et d'autres formes de réalisation, sans pour cela sortir du cadre de l'invention.

Claims (3)

REVENDICATIONS
1. Ordinateur comportant une pluralité de processeurs qui opèrent chacun dans une voie de données différente, tous les processeurs étant connectés de façon à recevoir une instruction commune à un instant donné, l'ordinateur compor- tant un système pour exécuter au moins une premièreet une seconde instruction dans une séquence temporelle o la première instruction fait en sorte que les données se trouvant dans lesdites voies soient testées par rapport à une condition commune tandis que la seconde instruction est exécutée seulement dans les voies o le test de la première
instruction a donné un certain résultat prédéfini, caracté-
risé en ce qu'il comprend: - un registre (37; 61) associé à chacun desdits processeurs (11, 13, 15, 17) d'une manière telle que le processeur soit autorisé à fonctionner pour exécuter une instruction quand le registre se trouve dans un premier état et soit empêché de fonctionner quand il se trouve dans un second état, - des moyens reliant chaque processeur (11, 13, 15, 17) avec son registre associé (37; 61) pour faire passer ledit registre dans ledit second état quand le test de la première instruction donne ledit résultat prédéfini, et dans ledit premier état quand ledit test ne donne pas ledit résultat prédéfini, et - des moyens répondant à ladite seconde instruction pour changer l'état desdits registres avant que l'un quelconque desdits processeurs (11, 13, 15, 17) exécute ladite seconde instruction, les processeurs exécutant la seconde instruction étant ceux dont le test de condition de ladite première instruction a donné ledit résultat prédéfini
tandis que les autres processeurs sont empêchés de fonction-
ner pendant la seconde instruction.
2. Ordinateur selon la revendication 1, caractérisé en ce que ladite première instruction comprend une instruction IF (SI) et en ce que ladite seconde instruction comprend une
instruction ELSE ( SINON).
3. Ordinateur selon la revendication 1, caractérisé en ce qu'il comprend additionnellement une mémoire (81)
reliée auxdits registres (37; 61) pour mémoriser tempo-
rairement et remettre en place les contenus desdits registres, afin que d'autres instructions puissent être emboitées entre une exécution desdites première et seconde instructions sans perte des résultats du test de la première instruction pour une utilisation lors de la reprise de l'exécution de la
seconde instruction.
FR8609106A 1985-06-24 1986-06-24 Systeme d'ordinateur du type a trains multiples de donnees et instruction unique (simd), avec traitement selectif des donnees Withdrawn FR2583904A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US74840985A 1985-06-24 1985-06-24

Publications (1)

Publication Number Publication Date
FR2583904A1 true FR2583904A1 (fr) 1986-12-26

Family

ID=25009327

Family Applications (1)

Application Number Title Priority Date Filing Date
FR8609106A Withdrawn FR2583904A1 (fr) 1985-06-24 1986-06-24 Systeme d'ordinateur du type a trains multiples de donnees et instruction unique (simd), avec traitement selectif des donnees

Country Status (8)

Country Link
EP (1) EP0227811A1 (fr)
JP (1) JPS6254359A (fr)
AU (1) AU6128486A (fr)
CA (1) CA1267230A (fr)
DE (1) DE3620982A1 (fr)
FR (1) FR2583904A1 (fr)
GB (1) GB2177526B (fr)
WO (1) WO1987000318A1 (fr)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
GB2201015B (en) * 1987-02-10 1990-10-10 Univ Southampton Parallel processor array and array element
US5262965A (en) * 1988-10-31 1993-11-16 Bts-Broadcast Television Systems, Inc. System and method for high speed computer graphics image computation using a parallel connected, asynchronous multiprocessor ring coupled to a synchronous special purpose video processing ring
JP2578286Y2 (ja) * 1992-03-18 1998-08-06 日本精工株式会社 等速ジョイント
FR2693576B1 (fr) * 1992-07-13 1994-09-30 Texas Instruments France Système multiprocesseur à contrôle local.
FR2735253B1 (fr) * 1995-06-08 1999-10-22 Hewlett Packard Co Synchronisation de donnees entre plusieurs dispositifs de restitution asynchrones de donnees
AU717336B2 (en) * 1997-04-30 2000-03-23 Canon Kabushiki Kaisha Graphics processor architecture
US6366999B1 (en) * 1998-01-28 2002-04-02 Bops, Inc. Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution
JPH11246581A (ja) * 1998-02-28 1999-09-14 Tonen Corp 亜鉛−モリブデン系ジチオカルバミン酸塩誘導体、その製造方法およびそれを含有する潤滑油組成物
US6732253B1 (en) 2000-11-13 2004-05-04 Chipwrights Design, Inc. Loop handling for single instruction multiple datapath processor architectures
US6931518B1 (en) 2000-11-28 2005-08-16 Chipwrights Design, Inc. Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US7434028B2 (en) * 2004-12-15 2008-10-07 Intel Corporation Hardware stack having entries with a data portion and associated counter
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
JP5452066B2 (ja) * 2009-04-24 2014-03-26 本田技研工業株式会社 並列計算装置
JP5358287B2 (ja) * 2009-05-19 2013-12-04 本田技研工業株式会社 並列計算装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0035647A2 (fr) * 1980-03-10 1981-09-16 International Business Machines Corporation SIMD-système de traitement des données

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4101960A (en) * 1977-03-29 1978-07-18 Burroughs Corporation Scientific processor
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0035647A2 (fr) * 1980-03-10 1981-09-16 International Business Machines Corporation SIMD-système de traitement des données

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
AFIPS PROCEEDINGS OF THE NATIONAL COMPUTER CONFERENCE, New York, 7-10 juin 1976, pages 769-775, AFIPS PRESS, Montvale, New Jersey, US; G.J. NTT: "A parallel processor for evaluation studies" *
COMPCON, 6TH ANNUAL IEEE COMPUTER SOCIETY INTERNATIONAL CONFERENCE, San Francisco, 12-14 septembre 1972, pages 57-60, Bell Telephone Laboratories, Inc., New York, US; B.A. CRANE et al.: "PEPE computer architecture" *
COMPUTER GRAPHICS, vol. 18, no. 3, juillet 1984, pages 77-82; A. LEVINTHAL et al.: "Chap - a SIMD graphics processor" *
PROCEEDINGS OF THE 3RD INTERNATIONAL CONFERENCE ON DISTRIBUTED COMPUTING SYSTEMS, Miami, 18-22 octobre 1982, pages 870-875, IEEE, New York, US; M. KUBO et al.: "A parallel processor system dedicated to SIMD and its application to three-dimensional color graphics" *
PROCEEDINGS OF THE NATIONAL ELECTRONICS CONFERENCE, Chicago, 9-10 octobre 1972, vol. 27, pages 312-317; R.O. BERG et al.: "PEPE - An overview of architecture, operation, and implementation" *

Also Published As

Publication number Publication date
AU6128486A (en) 1987-01-30
WO1987000318A1 (fr) 1987-01-15
DE3620982A1 (de) 1987-01-29
JPH031699B2 (fr) 1991-01-11
GB2177526B (en) 1990-02-14
EP0227811A1 (fr) 1987-07-08
GB2177526A (en) 1987-01-21
JPS6254359A (ja) 1987-03-10
GB8614907D0 (en) 1986-07-23
CA1267230A (fr) 1990-03-27

Similar Documents

Publication Publication Date Title
FR2583904A1 (fr) Systeme d'ordinateur du type a trains multiples de donnees et instruction unique (simd), avec traitement selectif des donnees
EP3660849B1 (fr) Circuit mémoire adapté à mettre en oeuvre des opérations de calcul
FR2472784A1 (fr) Matrice de traitement de donnees en parallele, notamment pour l'analyse d'images prises par un satellite
FR2636152A1 (fr) Processeur d'images en pipeline
FR2588980A1 (fr) Processeur de traitement de signal numerique comportant plusieurs multiplicateurs
FR2606903A1 (fr) Procede et dispositif de gestion de points d'arret dans un moniteur de logiciel
FR2635601A1 (fr) Processeur de donnees a fonctions multiples
FR2489555A1 (fr) Systeme de traitement de donnees a commande par pipeline
CH629319A5 (fr) Installation de traitement de donnees.
FR2819073A1 (fr) Microarchitecture d'unite arithmetique
FR2491237A1 (fr) Appareil didactometrique
FR2672709A1 (fr) Machine d'etat d'ordre.
EP0578540A1 (fr) Procédé pour tester le fonctionnement d'un circuit intégré spécialisé, et circuit intégré spécialisé s'y rapportant
FR2491654A1 (fr) Appareil de commande par microprogramme
FR2558066A1 (fr) Appareil de jeu video
FR2632092A1 (fr) Circuit de conditionnement d'ecriture d'antememoire retarde pour un systeme de microcalculateur a bus double comprenant une unite 80386 et une unite 82385
WO2006042736A1 (fr) Systeme de processeur parallele reconfigurable, modulaire et hierarchique
EP0043745B1 (fr) Système de traitement et de mémorisation de données numériques, notamment pour tomodensitomètre
WO2017148856A1 (fr) Procede de d'affichage d'une animation lors de la phase de demarrage d'un dispositif electronique et dispositif electronique associe
EP0344052B1 (fr) Mémoire modulaire
EP0359607B1 (fr) Unité centrale pour système de traitement de l'information
EP0680015B1 (fr) Dispositif d'alimentation en pixels d'une série d'opérateurs d'un circuit de compression d'images mobiles
FR2619462A1 (fr) Systeme de traitement numerique a bus multi-donnees
CH631018A5 (en) Data processing installation
EP0109337A2 (fr) Dispositif informatique à multi micro-ordinateur pour le traitement d'images

Legal Events

Date Code Title Description
ST Notification of lapse