FR 2820220 A1 20020802 FR 0101273 A 20010131 BREVET D'INVENTION DEPOSANT RIVIERE Jean Roland TITRE Procédé et dispositif réalisant un système de calcul des décisions rapides Structure du processeur rapide Stratégie et programmation associées à ce processeur rapide REVENDICATION DE PRIORITES SANS PRIORITE BREVET D'INVENTION FRANÇAIS (B. I. F.) 29 Revendications Réalisation d'un système de décisions rapides (Fast Operating System) Contexte et service à rendre : Les traitements numériques et les calculs des données ne sont pas actuellement les éléments qui limitent les performances d'un processeur. En effet de nombreuses structures de calcul (thread) peuvent fonctionner en parallèle pour réaliser ces opérations. De plus, les calculs peuvent être réduits au minimum, en utilisant massivement : le pré calcul, des tabulation intermédiaires de sous calculs, et des tables de transcodage quand cela est possible. Par contre les arrangements des données, leurs déplacements, et leurs classifications deviennent progressivement les opérations les plus fréquentes dans les machines (traitement d'images par exemple) Ceci oblige naturellement à développer des dispositifs optimisant la gestion de ces flux de données qui sont les grands consommateurs de temps et de structures de la machine. De plus les flux de données à traiter ont des débits qui augmentent très fortement (haut débit). Stratégie à développer pour gérer un flux de données : Si on désire fabriquer des systèmes informatiques performants, il faut redéfinir une stratégie efficace, et optimiser la gestion de ces manipulations de données. D'autre part, il faut adapter la structure physique de la machine de calcul à cette stratégie. Dans ce contexte, la stratégie algorithmique actuellement utilisée doit être abandonnée. La première instruction est chargée, puis la donnée est traitée. Quand le calcul est fini, la deuxième instruction est chargée, la donnée correspondante est alors traitée et ainsi de suite. Les processeurs de type actuel (Pentium) sont complètement adaptés à ce type de traitement algorithmique et leurs contraintes. Ils perdent beaucoup de temps car le programme est chargé en même temps que les donnée et il n'active en général qu'une seule structure de calcul dans un cycle d'horloge. En conséquence pour traiter les flux de données il faut que les ca- dences d'horloge soient de plus en plus rapides. Une stratégie opportuniste et adaptative (au programme) est souhaitable pour des résultats rapides. Séquenceur des instructions du programme : Pour exécuter un programme, il faut réaliser une séquence de tâches. Pendant l'exécution de celle-ci toute la machine est occupée et retarde les autres tâches. Pour accélérer, il faut s'affranchir de cette contrainte. Or il n'est pas toujours indispensable de réaliser les tâches dans un ordre naturel. Si tel est le cas, on peut choisir la priorité des tâches en fonction du temps d'exécution. Les tâches sont toutes lancées en même temps, la plus rapide est la première exécutée. Suivant les critères de priorité retenus, les résultats donnent des vitesses de traitement qui peuvent atteindre une multiplication par un facteur important (environ dix fois) Naturellement si on ne traite pas dans l'ordre les opérations, il faut prévoir un dispositif de reclassement, cette opération permet de réaliser un adressage dans le même cycle d'horloge, alors que les processeurs actuels vont nécessiter au moins quatre cycles. Structure et stratégie proposées pour l'entrée Structure de la machine destinée à gérer le flux : L'O. S. et la structure de la machine se préoccupent fondamentalement d'un flux de données en entrée, fortement parallélisé. L'objectif est une très forte diminution du temps de traitement. Suivant les besoins, on peut utiliser 32,64 ou 128 bits comme les machines actuelles, en fonction de la vitesse nécessaire pour l'utilisation haut débit souhaitée. Pour un bus à 200 MHz par exemple on obtient respectivement 6.4, 12.8, 25.6 Méga Bits/Sec à la vitesse maximum. Il est indispensable d'ajouter deux registres (comme l'indique la figure 2). I. Un registre contenant une information de rang pour les données (repère XI) dont la taille dépend du nom- bre de registres maximum. Par exemple a bits permet- tent 2a registres, 12 bits permettent 4096 registres à décalages. Cette taille est bien adaptée aux machines actuelles, les paquets sont ainsi dimensionnés en F. A. T. 32 II. Un registre contenant une information précisant la nature du ou des traitements à effectuer (repère X2) En général 8 bits sont suffisants pour permettre 256 instructions différentes qui peuvent être : Un change- ment de signe, un décalage, une addition etc. On peut réserver un bit pour les données traitées/non trai- tées, il reste dans ce cas 128 instructions différen- tes. Les données à traiter sont introduites dans un registre à décalage (RDI) Un dispositif conditionne les autres informations d'entrée : Le calcul du rang (RDR) et de la détermination de l'instruction (RDP) (En général par recyclage des registres correspondants qui arrivent au bout du décalage ou de la mémoire R. A. M. dans laquelle les programmes sont chargés) Chaque arrivée de données nouvelles décale d'une place les informations déjà présentes dans l'ensemble du registre à décalage d'entrée (RDI, RDR, RDP) Le registre de rang gère directement ou indirectement l'adressage et rend celui-ci implicite. Le registre de programme (ou d'instruction à exécuter) suit la donnée dans son décalage et permet en fin de registre à décalage si la donnée n'a pas été traitée d'injecter la tâche non présente en I. Structure de la machine destinée à s'adapter au programme : La donnée qui arrive en fin du registre à décalage sans être traitée, est déplacée dans une zone spéciale qui charge et traite immédiatement la tâche réclamée. Les tâches (thread) sont les structures de calcul implantées sur les processeurs dont une seule actuellement est activée par le registre d'instruction. Les tâches sont constituées de pré calculs, de tabulation intermédiaires de sous calculs, et de tables de transcodage quand cela est possible. Celle-ci est introduite dans (R4) en prenant le tour d'une autre tâche en file d'attente d'introduction. Les structures de traitements ne sont pas toujours présentes dans les tâches à exécuter (R4) Elles peuvent être en phase d'attente d'une introduction (I). Cette astuce permet d'obtenir une structure qui s'adapte en permanence très vite au programme qu'il faut traiter. Cette aptitude est fondamentale pour une grande vitesse d'exécution. Si une tâche est trop sollicitée, elle doit laisser passer des données non traitées pour qu'une autre tâche identique soit injectée (une tâche sollicitée ne sort ja- mais du traitement en (E) ). Les tâches se décalent en sens inverse des registres, tant qu'elles ne trouvent pas de calcul à effectuer. Ce qui permet d'éliminer les tâches non utilisées, dés qu'elles arrivent au début du registre (RDI) Les tâches éliminées sont rangées dans une file d'attente pour être à nouveau introduites en (I). Les données traitées perdent tout intérêt après exécution (RDI) Il faut simplement indiquer que la donnée est traitée en modifiant le bit prévu à cet effet ou les remettre à 0. Par contre on recycle seulement les registres (RDR ) et (RDP) arrivant en fin du registre à décalage, sans les avoir au préalable effacés. Ils sont recyclés à nouveau en entrée après avoir complètement parcouru le registre à décalage, pour une association avec les données suivantes. Ceci réalise une synchronisation de l'arrivée des données et du programme. Le dispositif (I) introduit dans ce cas la tâche la plus anciennement éliminée venant de (E). Cette autre propriété est également fondamentale pour une grande vitesse d'exécution. Le fait que des registres de données arrivent tous traités en fin du registre à décalage, nous montre, que la machine exécute correctement le programme, et que la configuration de calcul permet une exécution du programme sans défaillance (les bonnes tâches sont présentes ). Le choix du nombre de tâches actives est le fruit d'un compromis, entre l'importance de la structure matérielle né- cessaire et la vitesse désirée. Dans un programme, seules quelques instructions sont utilisées fréquemment (architecture RISC) 16 ou 32 applications actives sur 256 instructions possibles est un choix raisonnable. Ce qui donne aussi une accélération par 16 ou 32 de la vitesse d'exécution au maximum (sans ternir compte des autres avantages par rapport aux structures actuelles). Cette double rotation, des données d'une part dans un sens, et d'autre part en sens inverse des dispositifs de calculs (thread) donne une grande aptitude à l'adaptation de la structure de traitement mise en oeuvre pour exécuter le programme demandé. Ceci constitue un avantage considérable pour une forte accélération des calculs, sans consommer pour autant beaucoup de structures actives puisque seules les tâches les plus actives sont présentes. Les autres seront injectées à leurs tours, et si elles ne sont pas utilisées par des données, elles seront à nouveau très vite remises en phase d'attente. Cette structure nécessite une stratégie très différente pour la gestion des programmes. Des développements concernant les nouvelles priorités sont traités dans le paragraphe suivant. Une connaissance de la structure de la machine est indispensable pour l'utiliser dans de bonnes conditions la machine (les compilateurs devront intégrer toutes ces contraintes pour générer de bons programmes). Structure et stratégie pour les tâches de traitement : Sur les structures mono-tâche (*) par cycle d'horloge : Plusieurs phases intermédiaires sont possibles entre la structure présentée et les processeurs actuels. Le traite- ment peut se réduire à une seule tâche exécutée dans le même cycle d'horloge (structure mono-tâche). Il faut noter que très souvent il n'est pas toujours indispensable de réaliser les tâches dans un ordre naturel. On peut donc choisir la priorité des tâches en fonction du temps d'exécution. Les tâches sont toutes lancées en même temps, la plus rapide est la première exécutée. Suivant les critères de priorité retenus, les résultats donnent des vitesses de traitement qui peuvent atteindre une multiplication par un facteur important. Par exemple lors de la lecture d'un fichier sur un disque dur, la règle de priorité est alors liée à l'éloignement entre la donnée et la tète de lecture, ce qui réduit aussi les déplacements de celle-ci, et son usure. (*) Dans une phase intermédiaire, une seule tâche peut être exécutée dans le même cycle d'horloge. Le registre tournant peut être simulé sur des processeurs actuels. Dans ce cas plusieurs tâches (thread) sont lancées en même temps. Il suffit de gérer les priorités suivant les règles précédentes. Sur les structures multitâches par cycle d'horloge : La structure de traitement est constituée cette fois, d'une multitude de tâches appelées thread. Chaque application se décale en sens inverse de la progression des données pour trouver les informations qu'elle doit traiter. L'examen du rang (RDR) et de l'instruction (RDP) permet à toutes les tâches de traiter les plus anciennes données (RDI) dans le registre à décalage. On comprend mieux la nécessité des informations rang et nature de la tâche ajoutées au données pour effectuer ces choix et ces sélections. L'avantage de ce traitement à la volée des données fait que toutes les ressources de traitement de la structure de calcul sont en permanence mobilisées et sont toujours en phase active. Sauf si le registre à décalage ne contient aucune information qui nécessite l'utilisation de cette tâche. Si une tâche n'est pas sollicitée, elle arrive rapidement en (E) ou elle est éliminée, puis remise en file d'attente pour une introduction (I La tâche introduite est la plus ancienne dans la file d'attente ou une tâche qu'il faut impérativement traiter (comme il est indiqué précédemment). Ainsi la structure de calcul se modifie en fonction des besoins et s'adapte en permanence aux ressources nécessaires à la bonne exécution du programme. Ceci améliore la qualité du service rendu au client en s'adaptant rapidement à ses requêtes et donne des temps d'exécution très courts. Naturellement le chargement des données dans le registre à décalage (RDI) doit être plus rapide que le temps de traitement d'une application (16 ou 32 fois plus rapide en fonctions du nombre de tâches qui fonctionnent en même temps ) En effet plusieurs tâches sont exécutées simultanément, et donc vident autant de registres à décalage. On privilégie le prélèvement des informations les plus rapides à traiter en fonction des disponibilités des structures de calcul et de leur nature. Ceci permet à la fois d'exécuter les tâches rapidement, et de libérer très vite les processus de calcul qui seront alors disponibles pour d'autres tâches de traitement des données. De façon systématique les traitements exécutés préférentiellement sont ceux qui consomment le moins de temps et de structure. La synthèse des tâches peut être réalisée en utilisant des circuits logiques câblés. Mais avec ceux ci l'évolution comme la rotation des tâches actives est compliquée à obtenir. Une réalisation en utilisant une mémoire programmable est beaucoup plus adaptée au dispositif souhaité. De plus la technologie des mémoires est en très forte évolution, elle atteint actuellement des niveaux d'intégration très élevés, pour des coûts très bas. Dans ces conditions l'ensemble de la structure de traitement est une mémoire gérée par un sé- quenceur particulier. L'utilisation d'une mémoire autorise la modification des contenus des tables de transcodage (ce qui permet de redéfinir rapidement une nouvelle machine). Chaque tâche (écriture du programme ou compilateur) doit être conçue pour mobiliser un minimum de ressources, et très vite les libérer, afin de permettre conjointement la réalisation d'autres tâches. Globalement ce fonctionnement en parallèle de plusieurs applications, comme il a été décrit dans le paragraphe précédent va conduire à une vitesse du système fortement accélérée. Nouveaux modes de gestion du flux des données : Les ordinateurs sont constitués de deux mémoires : I. Une mémoire rapide, petite en taille mais très coûteuse (R. A. M.). II. Une mémoire lente d'accès, mais de taille énorme (disque dur). Le gestionnaire (repère R3) du registre tournant de traitement charge les données (R. A. M. ou R. A. M. cash) par des tâches internes en attente (intern thread) dont la priorité diminue avec l'importance de ce qui est déjà chargé. Ce registre, après traitement est déchargé sur la mémoire de masse lente (disque dur) par des tâches internes, dont la priorité augmente avec l'importance en taille de ce registre. Le traitement qui s'intercale entre le début et la fin du registre tournant dispose d'une priorité maximum pour une taille optimum (4096 registres) Si la taille du registre est plus grande, les tâches internes de déchargement deviennent prioritaires. Si au contraire le registre tournant est plus petit que la taille optimum, les tâches internes de chargement sont rendues prioritaires. A la taille optimum c'est le traitement qui est prioritaire (*) Les registres de programmation à décalage suppriment le besoin de rentrer le programme en même temps que les données sur le même bus. Pendant les phases de repos de la machine ( hors présence des données) les programmes peuvent être chargés dans les registres (RDP) et servir de programmation par leur rotation. Pendant la deuxième phase, la machine, ayant mis en mémoire un ou plusieurs programmes, seules des données entrent par le bus (Rl) et sont traitées par la machine. Ce type de traitement convient bien à la manipulation des fichiers informatiques. Ce qui définit deux phases implicites : I. Il OFF LINE introduction du programme par charge- ment de (RDP) II."ON LINE''introduction des données dans (RDI) et décalage de (RDP) et (RDR) La structure et la stratégie de cette machine sont très adaptées aux grands flux de données nécessitant très peu de programmes différents. Cette machine est environ 1000 fois plus rapide que les processeurs actuels, elle permet de traiter directement les hauts débits et les larges ban- des (10 Giga bits/sec et plus). Découpage de la machine en sous machines : Pour limiter l'occupation de la machine, un programme spécial (O. S. S. ) a été imaginé et mis en oeuvre pour gérer cette utilisation. L'occupation minimum permet en effet d'installer en machine plusieurs O. S. qui vont pouvoir fonctionner sur le même service (la méthode utilisée dans ce cas est décrite au paragraphe suivant, la machine est gérer comme plusieurs sous machines) ou sur des services différents, (par affectation des ressources en séquence dépendant des besoins du client) suivant la programmation de l'O. S. S. Cette taille optimum d'installation est pré calculée dés le début du programme et peut parfois évoluer si elle n'est plus adaptée à l'application. Ces prédéterminations devront être prises en charge par le compilateur de façon rationnelle. Chaque programme doit être conçu pour mobiliser un mi- nimum de ressources, et très vite les libérer, pour libérer les ressources, afin de permettre conjointement la réalisation d'autres programmes. Globalement ce fonctionnement en parallèle de plusieurs applications va conduire à une vitesse du système fortement accélérée. Toutes les sous machines pourront s'adapter de manière spécifique aux programmes qui ne nécessitent pas forcément tous des structures identiques. Ce procédé permet de faire fonctionner une partie de la structure auto adaptée à un certains type de programme, est une autre partie elle aussi adaptée, mais à une structure très différentes. Pour découper virtuellement la structure de calcul en sous machine, on procède de la façon suivante : quelques bits dans le registre de rang (RDR) sont réservés pour indiquer à quelles sous machines les données appartiennent et le reste du traitement est identique. On peut sans difficulté rendre prioritaire une sous machine par rapport aux autres, en injectant plus souvent ses données. Comme la machine s'adapte au traitement demandé, elle l'exécutera le plus vite possible. Utilisation de plusieurs machines du type décrit : Plusieurs systèmes (O. S. ) précédents peuvent être ins- tallés sur une machine informatique, et plusieurs machines peuvent traiter le flux de données, presque indépendamment les unes des autres (il faut seulement empêcher les machines de retraiter les décisions déjà prises) Nous avons affaire alors à une collectivité de machines, une sorte de socialisation logicielle (au sens vie en société) de la fonction pour rendre le service. C'est ainsi que des machines très lentes et peu puissantes peuvent s'attaquer en meute à l'impossible, en s'adaptant par conception aux services exigés par les be- soins à satisfaire. On peut dire qu'une grappe de machines ainsi équipées peut s'attaquer à tous objectifs avec de très fortes chances de réussite. Chaque machine traitant les données qu'elle peut traiter, en laissant passer les autres. Après chaque machine le flux des données non traitées diminue, jusqu'à se réduire à 0. La taille optimum attribuée à chaque O. S. doit être choisie en fonction de l'importance qui est accordée à une exécution rapide. Une grande taille des registres accélère fortement l'exécution du programme. Cependant si la taille est trop grande le retard entre les données en entrée et les sorties augmente et gène l'exécution. Donc le choix dépend du nombre de programme à mettre en ouvre et la taille disponible du registre à décalage sur la machine. Dans cette option pour découper virtuellement le flux de données en plusieurs flux plus lents pour chacune des machines, on procède de la façon suivante : un bit dans le registre des données en sortie indique si la donnée est traitée ou non. La première machine qui est disponible pour saisir la donnée, le fait et laisse passer les autres données, ce qui réduit la vitesse du flux de données non traitées et ainsi de suite avec d'autres machines. La machine s'adaptant au traitement demandé, elle l'exécutera le plus rapidement possible. Donc chaque machine réduit la vitesse du flux au maximum des capacités des dispositifs de calcul mis en oeuvre. Structure et gestion du flux de sortie : Les données après avoir été traitées par le système de tâches (en général par transcodage dans une mémoire) sont remises dans un registre à décalage de sortie en tenant compte de l'ordre d'arrivée (l'information de rangement ( RDR) aide à déterminer le rang dans le registre de sortie ( R2)) Elles libèrent ainsi le registre à décalage d'entrée (RDI) et les ressources de traitement, sans libérer les deux autres registres (RDR) et (RDP) En effet il est indispensable de synchroniser le programme et l'arrivée des données. Ces deux registres vont se décaler jusqu'à la fin pour être correctement recyclés. Pour certaines instructions, ce système de reclassement peut réaliser une opération et l'adressage direct dans le même cycle d'horloge, ce qui double encore la vitesse d'exécution des programmes. Ce reclassement est limité au nombre de registres de sortie (par exemple 512 registres de sortie permettent de traiter une ligne d'image) En général le registre à décalage de sortie est de taille limitée pour ne pas trop alourdir la structure des machines. Un nombre de registres compris entre 4 à 16 fois le nombre de tâches en fonctionnement est largement suffisant. Cette taille est liée à l'aptitude au reclassement. Un reclassement sur 256 ou 512 registres est largement suffisant (pour retrouver un mode d'adressage classique) Ce reclassement effectué en même temps qu'une autre tâche accélère l'exécution du programme (en effet dans le même cycle d'horloge on peut faire un calcul et un reclassement) La gestion du bus des données externe (R5) est très importante. La taille occupée par le registre des entrées et la taille occupée par le registre des sorties conditionnent les priorités respectives qui gèrent l'attribution du bus. Ainsi si le registre d'entrée ou le registre de sortie est plus grand que la taille optimum, le chargement ou le déchargement gagne de la priorité. Si les deux registres sont à la taille optimum c'est le dispositif de calcul qui est prioritaire. La structure (R3) réalise cette opération et attribue le sens lecture ou écriture R/W (en fonction du nombre de registres utilisés par l'entrée et la sortie) La gestion des sous machines et de leurs priorités respectives se traite aussi à ce niveau par l'aiguillage des données à traiter, dans la machine qui convient. Il faut injecter les données des sous machines chacune à leur tour en cas d'égalité de priorités identiques ou une fois sur deux ou sur quatre etc. Détermination et appellation des revendications : Le registre à décalage d'entrée, le dispositif de traitement parallèle qui tourne en sens inverse, et le registre à décalage en sortie avec reclassement automatique constituent un dispositif de traitement opportuniste et adaptatif du flux des données. Cet ensemble est appelé : LE REGISTRE TOURNANT DE TRAITEMENTS (*) Cette double rotation en sens inverse est une des originalités fondamentales de ce brevet. On obtient, ainsi une mise en présence très rapide des données et des structures de calcul. L'ensemble des règles des priorités de chacun des dispositifs concourant à l'exécution du service client constitue la stratégie de gestion du registre tournant de traitement. Ces règles de gestion s'appliquent également au registre tournant des entrées, au registre tournant des sorties, et à la gestion des applications en service. Tous les choix faits privilégient complètement le très haut débit, et la compatibilité avec d'autres machines. La structure décrite permet deux instructions dans le même cycle d'horloge, d'une part un calcul (multiplication ) et d'autre part un reclassement des données dans le registre de sortie d (k) Cette disposition est complètement adaptée, par exemple au calcul d'une convolution chaotique (BIF 022421 FR) : S (n) = L C (k) e [n-k-d (k)] k Une autre caractéristique originale de la machine est la mise en parallèle des tâches de calcul avec une rotation très rapide des tâches non utilisées puis mise en file d'attente, pour ré injection. Les tâches très utilisées ne se décalant pas à la recherche de données, restent alors présentes plus longtemps dans la zone active, ce qui donne une adaptation au programme. (*) La structure expliquée et les règles de gestion asso- ciées sont ensemble revendiquées. Résultats obtenus ou espérés (*) Une simulation de cette machine et de cet O. S. sur un Pentium III donne une vitesse moyenne de calcul des données 50 fois plus rapide qu'une exécution classique du programme. On pourrait obtenir une vitesse supérieure en remarquant que toutes les ressources de l'O. S. présentées ci-dessus n'ont pas été simulées. En effet certaines fonctionnalités exigent une structure de calcul spécifique (processeur adapté) Ces résultats semblent suffisamment encourageants pour nous conduire à déposer un brevet, et développer des machines spécifiquement étudiées pour cette stratégie de calcul. Un autre avantage nous pousse dans cette voie, c'est la demande du client utilisateur de ces machines. Il réclame du haut débit pour des traitements d'image vidéo, donc typiquement peu de calculs, mais très rapides (environ 1 million de bits pour 10 millisecondes 100Mégabits/sec) Il faut remarquer enfin que la gestion des priorités des systèmes de traitement est fondamentale et conditionne ''l'efficacité''ou''l'intelligence''du dispositif. Un grand nombre de tâches différentes, que la machine peut exécuter n'est pas une garantie de résultat. Une bonne gestion des priorités dans l'exécution des tâches est souvent beaucoup plus utile à une réalisation rapide du programme. Naturellement certains comportements donnent des résultats non prévus, ainsi il est indispensable de prévoir des remises à zéro en cas de situation trop éloignée des conditions usuelles de fonctionnement pour ce genre de programme. La structure initiale, toujours la même, sera déterminée en fonction de l'utilisation moyenne de ce genre de machines. Ceci permet de garantir une convergence rapide vers une structure proche de l'optimum. (*) Pour des raisons évidentes de coût et de délai, le dé- veloppement d'une structure spécifique sur une machine exactement conforme à celle qui est décrite n'a pas été réalisé. Mais des structures permettant de mettre en oeuvre les différentes fonctions de cette machine pour vérification et mesure des résultats ont été simulées. REVENDICATIONS : 1. Dispositif de traitement des données qui permet de forte- ment diminuer le temps de traitement en particulier des flux de données, caractérise en ce qu'il comporte un double registre tournant constitué de : Un bus de données bidirectionnel (R5). Un dispositif (R3) de commande des bus R1 entrée et R2 sortie. - Un bus de données en entrée (Ri). - Un registre à décalage des données dans un sens (RDI ). - Un registre à décalage dans le même sens de rang des données (RDR). Un registre à décalage dans le même sens de pro- gramme (RDP). - Un calculateur qui exécute les tâches de calcul, qui gère les priorités de ces tâches, et qui dispose d'une structure de rotation des tâches en sens inverse des données (R4). - Une zone d'injection (I) des tâches de traitement des données non traitées par la structure spécialisée ( R4). - Un dispositif de reclassement des données en sortie et d'un bus de donnée en sortie (R2). 2. Dispositif selon la revendication 1 caractérisé en ce que le registre de rang (RDR) suit la donnée, et gère directement ou indirectement l'adressage et rend celui-ci implicite. 3. Dispositif selon la revendication 1 caractérisé en ce que le registre de programme (RDP) suit la donnée et permet en fin de décalage, si la donnée n'a pas été traitée d'injecter la tâche non présente dans la zone d'exécution et de décalage des tâches. 4. Dispositif selon la revendication 1 caractérisé en ce que le registre de programmation (RDP) supprime le besoin de rentrer le programme en même temps que les données, ce qui définit deux phases implicites : g OFF LINE introduction du programme par chargement de RDP-.- ON LINE introduction des données dans RDI et décalage de RDP et RDR. Ces deux phases sont gérées par le programmeur. 5. Dispositif selon la revendication 1 caractérisé en ce que le calculateur (R4) réalise une adaptation de la configuration de la structure de calcul au programme à exécuter en décalant les tâches non utilisée en sens inverse des données puis en les rangeant en file d'attente (premier arrivé premier traité). 6. Dispositif suivant la revendication 1 caractérisé en ce que toute nouvelle arrivée de donnée décale d'une place les tâches inactives en sens inverse (en sautant les tâches ac- tives), les tâches actives, celles qui ont des données à traiter ne bougent pas et restent ainsi plus longtemps actives. 7. Dispositif suivant la revendication 1 caractérisé en ce que la donnée qui arrive en fin du registre à décalage sans être traitée est déplacée dans une zone spéciale. Cette tâche réclamée est prioritaire donc chargée et réalisée immédiatement. 8. Dispositif selon la revendication 1 caractérisé en ce qu'il utilise un reclassement en sortie des données. 9. Dispositif selon la revendication 1 caractérisé en ce que (R3) et (R5) réalisent une adaptation par structure de la taille occupée par le registre des entrées et la taille occupée par le registre des sorties conditionnent les priorités respectives qui gèrent l'attribution du bus. La structure (R3) réalise cette opération d'affectation en entrée ou sortie des données et attribue le sens lecture ou écriture (en fonction du nombre de registres utilisés par l'entrée et la sortie) 10. Procédé de traitement de données mis en oeuvre dans le dispositif selon les revendications de 1 à 9 caractérisé en ce qu'il comporte les étapes suivantes : '-Le programme est chargé dans (RDP) phase OFF LINE . 'Les données sont chargées phase ON LINE . A cha- que introduction d'une nouvelle donnée le processeur réalise dans le même cycle les opérations suivan- tes : o Introduction d'une donnée dans un registre à décalage. o Détermination du rang par le registre (RDR). o Détermination de l'instruction par le registre RDP o Le calcul des données en sortie et leur reclas- sement en sortie. Ceci tant que des données sont à traiter, ou que la programmeur ne demande pas une phase OFF LINE . 11. Procédé suivant la revendication 10 caractérisé en ce que toute nouvelle arrivée de donnée décale d'une place les informations présentes dans l'ensemble des registres à déca- . :, lages d'entrée (RDI,'RDR, RDP). 12. Procédé suivant la revendication 10 caractérisé en ce que toute nouvelle arrivée de donnée décale d'une place les tâches inactives en sens inverse (en sautant les tâches actives), les tâches actives ne sont pas décalées et restent ainsi plus longtemps actives. 13. Procédé suivant. les revendications 10 caractérisé en ce que la donnée qui arrive. en fin du registre à décalage sans être traitée est déplacée dans une zone spéciale. Cette tâche réclamée est prioritaire donc chargée et réalisée immédiatement en prenant la place d'une tâche à injecter en (I) zone d'injection d'une tâche imposée. 14. Procédé suivant la revendication 10 caractérisé en ce que, dans le cas d'une structure mono-tâche (R4) est ré- duit à une seule tâche. 15. Procédé suivant la revendication 10 caractérisé en ce que, dans le cas d'une structure multi-tâches (R4) les étapes sont les suivantes : Traitement des données, reclassement, et mise sur le bus (R2) qui sont élaborés séquentiellement.