Brevet FR2980611A1 — publié le 20130329

Domaine de l'invention La présente invention se rapporte à un circuit pour un système de traitement de données servant à traiter un ensemble de tâches à l'aide d'une unité centrale de traitement ainsi qu'un procédé correspondant de traitement d'un ensemble de tâches dans un système de traitement de données. Etat de la technique Dans les systèmes de traitement de données, comme par exemple dans les systèmes de calculateurs-microprocesseurs, les unités de commande, les périphériques ainsi que dans d'autres systèmes de traitement d'informations, on utilise souvent des unités centrales CPU pour effectuer les calculs comme unités centrales de traitement d'un ordinateur mais aussi seulement de simples unités arithmétiques et logiques ALU. Pour enregistrer et programmer les données, on utilise des mémoires telles que les mémoires RAM, ROM, EPROM, EEPROM. Le processeur ou l'unité CPU traite un programme et l'exécute. Le programme est en général composé de plusieurs parties de programme qui peuvent le cas échéant correspondre elles aussi à différentes tâches. Un tel système est un système multitâche. Suivant le scénario actuel, c'est-à-dire les tâches qui né- cessitent à ce moment un traitement, on décide quelle tâche doit être traitée par l'unité CPU. Pour cela, on peut attribuer des priorités différentes aux différentes tâches de sorte que le traitement des tâches prend en compte la priorité associée à chaque tâche et ainsi, on traite d'abord la tâche de plus grande priorité. Cela se fait par exemple en uti- lisant des interruptions. Une telle « interruption » est une coupure brève d'un programme pour exécuter un autre traitement de priorité supérieure ou critique dans le temps et appartenant à une autre tâche. Pour cela, on envoie d'abord une requête d'interruption puis on exécute une routine d'interruption, on coupe la tâche exécutée précédemment et à la fin de cette interruption, on poursuit cette tâche à l'endroit de l'interruption. Cela signifie qu'en général, une requête actuelle d'une tâche ayant une priorité supérieure à celle de la tâche précisément en cours d'exécution sera traitée prioritairement et que la tâche déjà en cours de traitement sera interrompue. L'interruption fait que l'unité CPU exécute une étape dans une étape de programme correspondante. La fonction de multitâche explicitée ci-dessus peut éga- lement assurer un partage de temps permettant de traiter apparemment simultanément plusieurs utilisateurs. En général, la fonction multi- tâche désigne la capacité d'une unité centrale CPU d'exécuter parallèlement plusieurs missions (tâches). Pour cela, les différents procédés sont activés à des intervalles brefs mais toujours alternés ce qui donne l'impression de la simultanéité. La sélection des priorités associées aux différentes tâches et des temps de traitement des tâches de priorité maximale peuvent néanmoins faire que les tâches de priorité moindre soient rarement exécutées et dans le cas extrême qu'elles ne soient jamais exécutées. Cela peut être le cas si, d'une manière quasi permanente, il y a des requêtes d'interruption comme précisées ci-dessus et qu'ainsi la dépendance d'une tâche de priorité moindre en relation avec une autre tâche ne sera jamais terminée. Dans ce cas, il faut prendre des mesures qui garantissent le temps d'exécution dans le cas le plus mauvais (temps WCET) et qui, ainsi, garantissent une capacité minimale de traitement pour l'unité CPU quelle que soit la tâche à exécuter. Toutefois, par le passé, on a constaté que de telles garanties étaient très compliquées et de plus elles pouvaient limiter la capacité de puissance du système associé. En outre, il faut pour cela un contrôleur d'interruption qui doit en plus avoir une commande de prio- rité. Il a déjà été décrit comment, par une requête cyclique de toutes les tâches même sans des spécificités, on pouvait distinguer quelle tâche serait à traiter d'abord. Pour cela, on a développé un circuit implémenté dans une architecture de traitement de données et configu- ré pour attribuer de manière correspondante les tâches à traiter à l'unité de traitement disponible pour le système. Le circuit commande ainsi la répartition de la capacité de traitement de l'unité de traitement régulièrement et indépendamment des besoins de chaque tâche respective, entre les tâches jusqu'à la fin de leur traitement respectif et en as- sociant aux différentes tâches l'unité de traitement pour effectuer le traitement de manière décalée dans le temps. Ainsi, chaque tâche sera automatiquement traitée, en particulier dans le temps défini tel que notamment le temps d'exécution dans le cas le plus mauvais (WCET) automatiquement, indépendamment d'une mise en priorité effectuée précédemment. Le temps entre chaque fois deux temps de planification pris par la planification ascendante correspond ainsi toujours au nombre de tâches N multiplié par la durée d'horloge TCLK pendant laquelle une tâche sera respectivement traitée. Cette grandeur sera appelée dans la suite temps d'exécution d'une tâche T. On a déjà présenté un circuit implémentant un algo- rithme modifié pour une planification de déroulement en attribuant des priorités à de telles tâches actives. Les tâches dites actives qui, de toute façon ne sont pas utilisées pour la capacité de calcul ALU ou l'unité CPU, ne sont pas intégrées dans la planification de sorte qu'en moyenne on accélère le traitement. Le changement cyclique de priorité qui se produit lors du traitement des tâches/données a toutefois l'inconvénient que l'algorithme correspondant pour planifier un système de traitement en plusieurs niveaux de pipeline conduit à un temps d'exécution T supé- rieur au produit évoqué ci-dessus qui est le nombre de tâches N multi- plié par la durée TCLK des tâches. But de l'invention La présente invention a pour but de développer une pos- sibilité d'utiliser les capacités de travail disponibles d'une unité centrale de calcul ou unité CPU pour assurer de manière simple que chaque tâche à traiter, qui demande actuellement un traitement, soit traitée dans une durée prédéfinie et garantissant en outre de ne pas dépasser pas le temps d'exécution maximum. Exposé et avantages de l'invention A cet effet, l'invention a pour objet un circuit d'un sys- tème de traitement de données pour traiter plusieurs tâches à l'aide d'une unité centrale de traitement avec une capacité de traitement associée à l'unité de traitement, - le circuit attribuant de manière décalée dans le temps, des unités de traitement pour effectuer le traitement des tâches respectives, pour commander le traitement des tâches dans un ordre prédéfini et les tâches sans demande actuelle de traitement seront sautées dans l'ordre du traitement, le circuit comportant une régulation de la succession des priorités qui détermine l'ordre dans lequel les tâches sont traitées, et à chaque sélection d'une tâche pour le traitement, on redétermine l'ordre des tâches et on commande la sélection de façon que pour un nombre N de tâches, il se passe au maximum N unité de temps jusqu'à ce que l'unité de traitement attribue une tâche ac- tive de nouveau une capacité de traitement. Le circuit selon l'invention peut être implémenté dans une architecture de traitement de données et être attribué à une unité de traitement disponible pour un système de traitement de données comme par exemple une unité centrale CPU ou une unité arithmétique et logique ALU, pour les tâches actuelles à traiter. Le circuit selon l'invention comporte un algorithme pour une planification des tâches dans le système cyclique de traitement de données et l'état d'activité de toutes les tâches est évalué pour accélérer le traitement des données. De plus, l'algorithme implémenté dans le cir- cuit garantit le non dépassement d'un temps d'exécution maximum égal à T = N*TCLK de sorte qu'en aucun cas on ne dépasse le temps d'exécution dans la situation la plus mauvaise (temps d'exécution WCET). Le circuit ou le procédé selon l'invention peuvent être im- plémentés dans un séquenceur multicanal MCS d'un module général d'horloge GTM. Le séquenceur multicanal dessert plusieurs canaux. Se- lon l'invention, le circuit étant configuré pour attribuer à chacune des tâches à traiter, chaque fois un canal avec ses propres registres et de sélectionner les propres registres en fonction de l'attribution de la tâche respective de l'unité de traitement et de les relier à l'unité de traitement. Suivant une autre caractéristique, le circuit associe l'unité de traitement à chacune des tâches avec une requête de traitement actuelle, c'est-à-dire les tâches dites actives, avec chaque fois une durée constante et identique pour toutes les tâches actives. On appelle passive, une tâche sans demande actuelle de traitement, c'est-à-dire une tâche qui actuellement ne signale pas de traitement. Les tâches actives dans le cadre de la présente description sont des tâches qui demande le traitement actuelle et le signalement de sorte qu'elles sont prises en compte par le traitement effectué par l'unité de traitement. Le circuit selon l'invention prévoit en outre de répartir ré- gulièrement la capacité de traitement ou capacité de calcul de l'unité de traitement du système de traitement de données tel que l'unité ALU ou l'unité CPU entre toutes les tâches. Selon un autre développement du circuit selon l'invention, la durée disponible pour chaque tâche, cohérente, correspond ainsi précisément à une cadence ou horloge de l'unité de traitement. Le circuit selon l'invention comporte une régulation de l'ordre des priorités qui fixe l'ordre du traitement des tâches. Cela signifie selon l'invention que pour chaque sélection actuelle d'une tâche à traiter ou redétermine chaque fois l'ordre des priorités pour le traitement des tâches. Selon un développement de l'invention, l'ordre des tâches à traiter est défini par une liste (appelée ci-après liste des priorités) avec des positions de liste en priorité croissante et la tâche choisie à l'instant pour être traitée correspond à la position de priorité la plus basse de la liste. Cette liste des priorités a toujours la même longueur c'est-à-dire qu'il y a toujours le même nombre de positions correspondant au nombre de tâches. Le dernier élément de la liste correspond à la tâche qui sera traitée avec la priorité la plus élevée dans l'étape présente de la planification des traitements. L'élément précédent de la liste des priorités correspond à la tâche qui sera traitée avec la seconde priorité la plus élevée pour l'étape de planification de traitement présente. La liste des priorités est initialisée au moment d'une re- mise à l'état initial du circuit avec les valeurs suivantes : LpRio[i]=i pour tout i=0,...,N-1 Selon un autre développement du circuit de l'invention, les positions de liste associées aux tâches sans requête actuelle de traitement dans la liste restent constantes mais tournent entre les tâches sans requête actuelle de traitement de sorte que la tâche sans requête de traitement qui a actuellement la priorité la plus élevée passera ensuite dans la position de liste ayant la priorité la plus basse. En outre, le circuit est configuré selon une autre forme de réalisation consistant à attribuer à chaque tâche un canal avec ses re- gistres propres et de sélectionner les registres respectifs selon l'association entre la tâche respective et l'unité de traitement pour la lier à cette unité de traitement. L'unité de traitement associe une même durée à chacune des tâches avec une requête actuelle de traitement, au plus tard après un temps d'attente maximum, cette durée étant constante, et la même pour toutes les tâches actives. La durée peut correspondre à une cadence d'un cycle d'horloge de l'unité de traitement. Le temps d'attente maximum défini, est selon un déve- loppement du circuit de l'invention, du produit du nombre de tâches et de la durée constante (unité de temps) dans laquelle l'unité de traite- ment est associée à une tâche respective pour le traitement et est reliée à celle-ci. En outre, le circuit selon l'invention est configuré pour traiter les ordres des registres respectifs des canaux respectifs des tâches avec une requête de traitement actuelle comme tâches actuelles dans un pipeline à plusieurs étages et le registre respectif à l'instant du traitement sera commuté dans le registre de pipeline cadencé, de manière correspondante et les niveaux de pipeline seront traités en parallèle dans un segment de temps mais chaque fois dans des canaux différents. Les décodages d'ordre et l'accès en mémoire pour une première tâche active se font ainsi de manière appropriée chaque fois dans des tranches de temps dans lesquelles l'unité de traitement est associée à au moins une seconde tâche active. L'invention a également pour objet un procédé de traite- ment de plusieurs tâches dans un système de traitement de données à l'aide d'une unité centrale de traitement ayant une capacité de traitement attribuée à l'unité de traitement, procédé selon lequel : - aux différentes tâches on associe l'unité de traitement pour effectuer le traitement de manière décalée dans le temps, les tâches étant trai- tées dans un ordre prédéfini et les tâches sans requête actuelle de traitement étant sautées dans l'ordre du traitement, et - à chaque sélection d'une tâche à traiter on définit l'ordre, des tâches et on commande la sélection de façon que pour un nombre N tâches, on laisse passer un maximum de N unités de temps jusqu'à ce que l'unité de traitement attribué à une tâche active une capacité de traitement. Dessins La présente invention sera décrite ci-après de manière plus détaillée à l'aide d'un exemple de circuit de système de traitement de données, multitâche, représenté dans les dessins annexés dans lesquels la figure 1 montre un modèle d'architecture pour appliquer le procédé de l'invention, la figure 2 montre un mode de réalisation possible d'un pipeline pour le traitement des ordres selon le procédé de l'invention, la figure 3 est une vue schématique d'un mode de réalisation d'un circuit selon l'invention. Description de modes de réalisation de l'invention Le procédé ou le circuit selon l'invention peuvent être im- plémentés, par exemple dans un séquenceur multicanal (MCS) de modules de temps génériques (GTM) avec une architecture possible d'un tel séquenceur multicanal représentée à la figure 1. Le séquenceur multicanal (MCS) 100 représenté com- porte plusieurs canaux, par exemple 8 ou 16 canaux, ce qui correspond aux tâches à traiter. Cela signifie qu'un canal est attribué à chacune des tâches à traiter. Le séquenceur MCS 100 dispose d'une unité centrale de traitement 10 telle que par exemple une unité ALU et une mémoire 20 telle que par exemple une mémoire RAM. Dans le cas présenté, le séquenceur MCS utilise N canaux ; chaque canal a son propre microprogramme logé en différents endroits de la mémoire. Pour traiter ce programme, chaque canal a son propre registre d'ordres (IR) 35, son propre compteur d'ordres (PC) 25, son propre registre d'état (STA) 45 et son propre registre d'usage général (GPR) 55 ; ces différents moyens portent les références 0...K-1. Cela signifie que dans l'architecture MCS présentée ici, il y a N registre d'ordres (N*IR) 35, N compteur d'ordres (N*PC) 25 et N registre d'état (N*STA) 45. Chaque canal a sa propre interface 30 telle que par exemple une interface ARU par laquelle les données sont trai- s tées dans chaque registre GPR 55 de manière asynchrone, c'est-à-dire sans attendre le traitement d'un canal correspondant, sans être actualisé ou sans émettre des données. La multiplicité des interfaces 30 en fonction du nombre de canaux est explicitée par le symbole superposant des interfaces. La 10 même remarque s'applique à l'ensemble des registres d'ordres 35, des compteurs d'ordres 25, des registres à usage général 55, des registres d'état 45 et des registres ABC 65. Pour la synchronisation, on bloque le travail d'un canal, ce qui signifie que l'opération à effectuer et ainsi la suite du déroule- 15 ment du programme du canal correspondant se feront lorsque les don- nées requises seront arrivées par l'interface ARU 30 associée au canal ou que ces données auront été recueillies. En outre, dans l'architecture ainsi présentée, l'interface ARU 30 d'un canal est complété chaque fois par son propre registre de bit de contrôle ACB 65. Ces bits de contrôle 20 sont transmis avec les données du registre GPRS 55 à l'interface ARU 30 ou sont actualisés avec chaque ordre de lecture ARU. L'état bloquant d'un canal est signalisé par la mise à l'état d'un bit correspondant (par exemple le bit de registre d'état STA 45). Tous les autres canaux continuent de traiter leur programme. La suspension d'un ordre bloquant est 25 déclenchée par l'interface ARU 30 de manière asynchrone, c'est-à-dire indépendamment de ce que le canal se trouve dans le pipeline dès que les données ont été envoyées ou reçues par l'intermédiaire du registre d'usage général GPR 55. Tous les canaux desservis par le séquenceur MCS 100 30 utilisent dans l'architecture présentée, la même unité centrale arithmé- tique et logique 10 (ALU), le même décodeur d'instructions 40, le même pré-décodeur d'instructions 50, la même mémoire 20, le même décodeur d'adresse 15 pour la mémoire 20 comme cela est représenté à la figure 1. Dans l'architecture 100 du séquenceur MCS représentée, une 35 unité CPU hôte intervient dans le déroulement par l'intermédiaire d'une interface CPU hôte 60 et la mémoire RAM 20, c'est-à-dire que des données sont transférées dans un cycle réservé à cet effet à partir ou vers l'interface de poignée de main 60 de l'unité centrale CPU hôte. Dans une forme d'exécution possible du circuit selon l'invention le traitement des ordres/tâches est effectué dans un pipeline avec plusieurs niveaux de pipeline. De manière préférentielle, on distingue quatre niveaux de pipeline. Le pipeline ou pipeline d'ordres désigne une sorte de bande sans fin qui décompose le traitement des ordres en ordres partiels correspondant au nombre des niveaux de pipe- line ; les niveaux de pipeline de plusieurs canaux (c'est-à-dire de plu- sieurs tâches) peuvent être exécutés en parallèle mais chaque fois dans un autre canal (voir figure 2). Cela signifie qu'au lieu de traiter complètement une tâche pendant un cycle de traitement de l'unité de traitement, on traite uniquement chaque fois une tâche partielle mais différentes tâches partielles pourront être traitées simultanément. Les étages de pipeline sont de préférence les suivants : Etage 0 : décodage d'accès RAM Etage 1 : accès RAM Etage 2 : pré-décodage de l'ordre Etage 3 : traitement de l'ordre. Dans l'étage 0, on forme tout d'abord les adresses et les signaux de commande pour l'accès RAM à faire dans l'étage suivant du pipeline. Un accès RAM peut consister à lire une donnée ou un ordre ou inscrire une donnée. Dans le cas de la lecture d'un ordre, on forme l'adresse à partir du compteur d'ordre concerné (compteur PC). L'étage 0 est représenté aux figures 1 et 2 respectivement avec la référence 0. Dans l'étage 1, on accède ensuite à la mémoire de travail 20 (RAMP) en chargeant l'ordre approprié de la mémoire de travail 20. L'étage 1 est représenté avec la référence 1 aux figures 1 et 2. Dans l'étage 2, le pré-décodeur d'instructions 50, effectue le pré-décodage d'un ordre. L'étage 2 est représenté aux figures 1 et 2 chaque fois avec la référence 2. Dans l'étage 3, on effectue finalement le traitement de l'ordre qui se fait pour toutes les tâches par une seule et même unité de traitement 10 telle que par exemple une unité ALU. L'étage 3 porte la référence 3 aux figures 1 et 2. Tous les étages de pipeline sont traités en parallèle mais chaque fois pour un autre canal, c'est-à-dire une tâche attribuée au ca- s nal correspondant. Toutefois le traitement se fait selon le circuit propo- sé ici uniquement pour les tâches actives, c'est-à-dire les canaux actifs liés. La nature du traitement dans le temps est représentée à la figure 2 à l'aide d'un flux de pipeline. Si le canal Ca 204 commence d'abord par le décodage de l'adresse RAM (étage 0), on exécute dans le canal Ca, lors 10 de l'horloge suivante, l'accès RAM (étage 2) alors que le canal Cb 206, est occupé par le décodage de l'adresse RAM (étage 0). Les registres « propres » N*PC et N*IR correspondants portant les références 25, 35 à la figure 1 sont commutés automatiquement suivant le canal. Les ordres qui ne nécessitent que le temps de traitement d'un cycle de tra- is vail traitent dans l'étage 3, les opérandes 200 et le cas échéant 300 de leur propre registre ou les opérandes directs du mot d'ordre et inscrivent le résultat en retour dans les registres correspondants. Pour une inscription en retour de données dans la mémoire 20 (RAM), il faut un autre cycle de travail. Pour cela, on met à l'état un bit dans le registre 20 d'état STA 45 du canal correspondant qui produit la réinscription dans le cycle d'ordre suivant. Cela signifie que si le canal correspondant est de nouveau traité dans l'étage 0, l'adresse RAM correspondante sera décodée et les données dans l'étage 1 seront inscrites à partir du registre général GPR 55 correspondant dans la mémoire 20 (RAM). Les 25 opérandes de la mémoire 20 (RAM) se comportent de la même manière. Il faut un déroulement complet de pipeline pour charger les données de la mémoire RAM 20 dans le registre GPR 55 correspondant. Ce n'est que lors du cycle de traitement suivant que cet opérande pourra être traité. Pour les ordres qui demandent plusieurs cycles de traitement, il 30 faut savoir que la fonction correspondante ou le canal correspondant restent activé(e), c'est-à-dire qu'un signal de requête RDYi correspondant reste mis à l'état jusqu'au traitement complet de l'ordre. Un registre spécial TRG 75 crée la possibilité du déclen- chement des canaux entre eux. Les canaux eux-mêmes peuvent décaler 35 un événement dans sa relation de temps actuel par des signaux rappor- tés au temps ou à la position (unité de base de temps TBU) 85 pour décaler un événement dans sa relation de temps actuel ou le commander en fonction des positions. Cette comparaison est effectuée dans l'unité de traitement 10, par exemple l'unité ALU dans laquelle par exemple l'unité TBU (unité de base de temps non représentée ici) fournit un opé- rande 85. L'accès aux données de l'interface 30 respective ou d'une interface ARU est attendu par le canal correspondant et est assuré par la lecture seule pour ne pas avoir d'incohérence de données. Le pré-décodeur d'instructions 50 fournit une date de la mémoire 20 RAM dans le cycle de fonctionnement suivant. Pour cela, une date RAM est convertie en une instruction qui inscrit la date dans le registre de destination requis. De plus, le pré-décodeur d'instructions 50 assure que pour des ordres bloquants, activés (le bit correspondant est mis à l'état dans le registre de contrôle), les ordres suivants des étages pipeline précédents sont rejetés. Pendant qu'un ordre bloquant est encore actif, l'ordre suivant est déjà traité dans les étages de pipeline 0 et 1 et transféré de la mémoire RAM ; dans l'étage de pipeline 2, on décide si l'ordre doit être traité maintenant dans l'étage pipeline 3 suivant (si l'ordre bloquant asynchrone est terminé par l'interface ARU) ou doit être rejeté (si l'ordre bloquant est encore en activité). Selon le procédé de l'invention et le circuit selon l'invention, on détermine tout d'abord le canal, c'est-à-dire la tâche qui doit être traitée ensuite chaque fois dans le cadre d'un cycle de traitement. Le procédé selon l'invention prévoit de déterminer le canal à trai- ter ensuite, c'est-à-dire le canal qui a été introduit dans le niveau de pipeline 0 dans le cycle d'horloge suivant avec un algorithme qui établit une liste, c'est-à-dire une liste de priorités LPRIO avec une planification ascendante. La planification ascendante sera décrite en détail à l'aide de la figure 3. La liste des priorités LPRIO a toujours la même longueur, c'est-à-dire le même nombre de positions correspondant au nombre N de tâches à traiter. Cette liste de priorités contient une association univoque entre chaque élément et une tâche par un numéro d'identification (ID) et l'ordre dans cette liste détermine la priorité avec laquelle la tâche doit être traitée. Chaque numéro d'identification n'apparaît précisément qu'une fois dans cette liste. Les positions de la liste des priorités sont référencées par LpRio[i] (i=0,...,N-1). Le dernier élément LpRio[N-1] de la liste désigne ainsi la tâche qui doit être traitée avec la priorité maximale lors de la future étape de planification. L'élément second sur la liste LpRio[N-2] désigne la tache qui doit être traitée lors de l'étape suivante de planification de déroulement avec la seconde priorité maximale ou encore la liste est initialisée à l'instant d'une remise à l'état du circuit par les valeurs : LpRio[i=i] pour tout i=/,...,N-1. A l'intérieur d'un cycle de cadence, on détermine le canal (s) qui a été glissé dans le niveau de priorité du pipeline, c'est-à-dire dont la tâche associée doit être traitée ensuite. Ainsi, en langage de programmation, on a : FOR i = N-1 DOWN TO 0 LOOP IF is_active(LpRio[i]) AND not_in_pipe(LpRio[i]) THEN s := LpRio[i] EXIT END END La fonction inhérente « is active(x) » est vraie si le canal x est un canal actif prêt à revendiquer la capacité de calcul de l'unité ALU. Pour indiquer cet état actif, chaque tâche active i émet un signal de requête RDYi. La fonction « not in pipe(x) » qui arrive ensuite est vraie si le canal x n'est plus dans un niveau de pipeline dans la cadence suivante, c'est-à-dire qu'il n'est plus actuellement traité et qu'il est ainsi disponible en combinaison avec un signal de requête correspondant pour être retraité. Pour simplifier la réalisation du circuit du séquenceur MCS, un canal ne doit jamais être actif plus d'une fois dans un étage de pipeline. En outre selon l'invention, dans chaque cycle de cadence, immédiatement après avoir déterminé (s), on actualise comme suit la liste des priorités LpRio[i]. Cela correspond au programme suivant : IF s = I-pRio[N-1] THEN LpRio[i] := 1-pRio[I-1] für aile i = 1... N-1 I-pRio[0] := s ELSE IF s = LpRio[0] THEN LpRio[i] := LpRio[i-1] für al le i = 2... N-1 LpRio[l ] := I-pRio[N-1] LpRio[0] s ELSE f := 0 FOR i = N-1 DOWN TO 2 LOOP IF LpRio[i-1] = s THEN f := 1 END IF f = 1 THEN LpRio[i] LpRio[I-2] ELSE LpRio[i] := END END LpRio[l LPRIO[N-1] LpRio[0] := s END Si chaque tâche se trouve au plus tard après N cadences (ou horloges) une fois dans la position de liste LpRio[N-1] (position de priorité suivante), on aura pour tous les x canaux actifs avec la fonction « is active(x) » est vraie, un temps d'exécution maximum de T N hor- lo loges (temps d'exécution du cas le plus défavorable) si le temps de trai- tement de chaque tâche est une horloge. L'algorithme ci-dessus favorise ce transfert car tous les éléments de la liste, c'est-à-dire que toutes les tâches ont été poussées dans chaque horloge au moins d'une nouvelle position et qu'à chaque instant, toutes les tâches sont contenues dans la liste. Il est ainsi prévu que la tâche respective ne sera traitée que si elle est considérée comme tâche active comme cela a été décrit ci- dessus. Cela signifie que les tâches qui ne demandent aucun traitement à l'instant actuel, c'est-à-dire qui n'envoient aucun signal de requête, seront passées dans l'ordre des tâches. Cela signifie que l'ordre prédéfini comprend toutes les tâches à traiter en prenant en compte pour le traitement des tâches, dans leur ordre, si la tâche est une tâche active, c'est-à-dire si cette tâche est effectuée d'un signal de requête. Chaque tâche active (i) et le canal actif (i) associé à celle-ci et dont le signal de requête est ainsi mis à l'état 1, c'est-à-dire RDYi = 1 seront toujours traités précisément dans un temps du cycle de traitement ou dans un autre temps de traitement analogue. On prévoit en outre que l'unité CPU dessert également une tâche dite réservée, c'est- à-dire en réservant au moins un canal supplémentaire à cet effet. Pour le canal supplémentaire, on considère l'écriture ou la lecture de la mémoire RAM ou plus généralement de la mémoire 20. Comme la mémoire 20 est avantageusement une mémoire RAM à port unique (pour écono- miser du circuit par rapport à un port RAM double), l'écriture ou la lec- ture de la mémoire RAM 20 par une unité CPU hôte par l'interface CPU/hôte 60 risquerait de conduire à des conflits si un autre procédé nécessitait simultanément l'accès à cette mémoire RAM 20. Cet autre procédé peut être le traitement du programme pour le canal précisé- ment en cours de traitement. Si un canal supplémentaire est réservé pour l'unité CPU hôte 60, seule cette unité CPU hôte aura accès par l'interface CPU hôte 60 dans la tranche de temps 250 correspondante, l'accès à la mémoire RAM 20 (voir figure 2). On peut par exemple également prévoir que ce canal supplémentaire permet des requêtes d'interruption si ces requêtes sont liées à la lecture ou à l'écriture dans la mémoire RAM 20. La figure 2 explicite de nouveau le traitement en parallèle des niveaux de pipeline pour N canaux. Dans le cas représenté, le pipeline 4 comporte quatre niveaux de pipeline représentés par niveau 0, niveau 1, niveau 2, niveau 3. Un cycle de traitement 202 correspond par exemple à (N + 1) horloges. Après la phase de démarrage, dans chaque horloge, on associe précisément un canal d'un niveau de pipeline et on traite de manière appropriée. Les niveaux de pipeline sont ainsi traités en parallèle mais chaque fois pour un autre canal. Comme déjà indiqué, l'unité centrale CPU se voit attribuer au moins une tranche de temps 250 supplémentaire de sorte que le cycle de traitement 202 comporte (N + 1) horloges. La figure 2 montre dans le détail que dans le premier étage pipeline, au cours du premier cycle de travail 202, on traite suc- cessivement un canal C a 204, un canal Cb 206, un canal C, 208, un canal Cd 210 et ainsi de suite. Enfin, pendant le premier cycle de travail 202, on traite le canal Ck 218 qui correspond au canal actif d'ordre N. La dernière tranche de temps 250 du cycle de traitement 202 est réservée à l'unité centrale CPU ou au canal de cette unité. Dans le cycle de traitement suivant, on traite un canal Cx 220, un canal Cy 222, un ca- nal Cz 224 c'est-à-dire toujours des canaux actifs. Pour les autres niveaux de pipeline, niveau 1, niveau 2, niveau 3, le traitement des canaux actifs respectifs est chaque fois décalé d'une horloge. Ainsi pour le premier niveau de pipeline 1 selon la figure 2, pendant le cycle de traitement 202, on traite le canal Ca 204, le canal Cb 206, le canal C, 208, etc. A la fin du cycle de travail 202, on traite le canal Ci 216 et le canal Ck 218. Dans le cycle de traitement suivant, on fournit à l'unité centrale CPU tout d'abord une tranche de temps 250 et ensuite on exécute le canal Cx 2220, le canal Cy 222, et ainsi de suite. De même, avec le décalage d'une cadence, on traite pour le second niveau de pipeline 2, pendant le premier cycle de traitement 202 tout d'abord le canal Ca 204 et le canal Cb 206. A la fin du cycle de traitement, on traite le canal Ci 214 et le canal Ci 216. Dans le cycle de traitement suivant, on traite tout d'abord le canal Ck 218, la tranche de temps 250 pour l'unité CPU et ensuite, le canal Cz et ainsi de suite. Pour le troisième niveau de pipeline 3, pendant le premier cycle de traitement 202, on traite le canal Ca 204 et ainsi de suite. A la fin du premier cycle de traitement 202, on traite le canal Ch 212 et le canal Ci 214. Dans le cycle de traitement suivant, on traite le canal C; 216 et le canal Ck 218. En résumé cela signifie que selon l'exemple de réalisation de la figure 2, après une phase de démarrage, dans chaque cycle de traitement, on traite par exemple N tâches actives et en plus, on fournit une tranche de temps pour une unité centrale CPU hôte ou un canal réservé pour cette unité centrale CPU hôte si bien que chaque cycle de traitement comporte (N + 1) horloges. Les différentes tâches actives sont traitées chaque fois dans les quatre niveaux de pipeline avec un déca- Tage pour chaque tâche active prise séparément ; ici, à la figure 2, on a un décalage d'une horloge. Les points de suspension laissés à la figure 2 désignent toutes les tâches actives qui sont traitées sans être nommées de manière explicite dans un cycle de traitement 202. La figure 3 montre un circuit composé de N registres 100_0 ... 100_N-1 et d'un réseau 103. Les registres 100_0 jusqu'à 100_N-1 servent à mémoriser les éléments de la liste des priorités LpRio[i] (i=O,...,N-1) et le réseau sert à sélectionner la tâche (s) (ou le canal s correspondant) qui est la prochaine tâche à travailler dans un cycle de traitement. Le procédé selon l'invention détermine le canal sui- vant à traiter, c'est-à-dire le canal qui a été glissé dans le cycle d'horloge suivant dans le niveau de pipeline O, l'algorithme décrit ci-dessus qui applique le plan d'exécution représenté par la liste des priorités LPRIO. Les registres 100_0 ... 100_N-1 de la liste des priorités sont référencés LpRio[i] (i=O,...,N-1), N étant le nombre de tâches. Le dernier élément de la liste 100_N-1 = LpRio[N-1] désigne la tâche qui doit être traitée avec la priorité la plus grande dans l'étape de planification en cours. Le registre précédent 100_N-2 = LpRio[N-2] désigne la tâche qui doit être traitée avec la seconde priorité la plus élevée dans l'étape de planification suivante, etc. Les registres 100 0...100 N-1 sont initialisés à l'instant d'une re- mise à l'état initial du circuit avec les valeurs suivantes : LpRio[i]=i pour tout i=0,...,N-1 Dans un cycle d'horloge, on détermine ou on sélectionne un canal (s) qui a été glissé dans le niveau 0 de pipeline, c'est-à-dire dont la tâche associée doit être traitée comme la suivante. Pour cela, l'algorithme réalisé dans le réseau 103 évalue les registres par les si- gnaux d'entrée 101 0...101 N-1 représentés ; la fonction « i actif » est réalisée par l'exploitation des N signaux d'entrée 104 et la fonction « not in pipe » est réalisée par l'exploitation des signaux d'entrée 105. La fonction « is actif » indique si une tâche (s) considérée précisément est active, c'est-à-dire si le canal associé est prêt à revendiquer la capa- cité de calcul de l'unité ALU. La fonction « not in pipe » vérifie si la tâche (s) de la cadence suivante n'est plus dans un étage de pipeline. Les informations pour former les fonctions « is actif » et « not in pipe » peuvent par exemple être fournies comme représentées par chaque fois N signaux d'entrée 104 et 105. Dans ce cas, un unique signal binaire donne l'état d'un seul canal prédéfini. Les registres 101 0...100 N-1 sont parcourus dans l'ordre décroissant et si les deux bits correspondants de 104 et 105 de la tâche considérée précisément sont vrais, cette tâche sera sélectionnée comme tâche (s) et sera glissée dans la cadence suivante dans le pipeline. En parallèle à cela, (s) sera glissé dans la ca- dence suivante par le signal 107 dans le registre de priorités 100_0 avec la priorité la plus faible. De plus, le réseau 103 met par les mutiplexeurs 106-1...106-N-1, les signaux de commande 102 1...102-N-1 dans la position souhaitée et cela précisément de façon que le canal sé- lectionné (s) ne se trouve plus dans les registres 100 1...100 N-1. Les canaux des registres 100 0...100 N-1 sont pour cela remontés d'une ou deux positions de liste dans la liste des priorités. La position de liste LpRio[i] est alors reçue par la tâche/élément précédent qui était précédemment à la position de liste LpRio[i-1] ou si l'élément (s) sélectionné était sur cette position de liste LPRio[i-1] ou si cet élément était déjà l'un des éléments/tâche précédent trouvé dans la liste au cours de l'itération précédente, qui était précédemment à la position de liste LpRio[i-2] de sorte que chaque tâche sera disponible pour le traitement au plus tard après N horloges, c'est-à-dire qu'elle aura la position de liste LpRio[N- 1 ] .35 18 NOMENCLATURE 10 Unité centrale de traitement 15 Décodeur d'adresse 20 Mémoire (RAM) 25 Compteur d'ordres 30 Interface ARU 35 Registre d'ordres 40 Décodeur d'instructions 45 Registre d'état 50 Pré-décodeur d'instructions 55 Registre général 60 Interface CPU hôte 65 Registre ABC 75 Registre spécial 85 Signaux de temps ou de position 100 Séquenceur multicanal 103 Réseau 200, 300 Opérande 202 Cycle de traitement 204, 206, 208, Canal 210, 216, 218 Canal 220, 222, 224 Canal 250 Tranche de temps25 REVENDICATIONS1°) Circuit d'un système de traitement de données pour traiter plusieurs tâches à l'aide d'une unité centrale de traitement avec une capacité de traitement associée à l'unité de traitement, dans lequel : le circuit attribue de manière décalée dans le temps, des unités de traitement pour effectuer le traitement des tâches respectives, pour commander le traitement des tâches dans un ordre prédéfini et pour sauter dans l'ordre de traitement les tâches sans demande de traitement actuel, le circuit comportant une régulation de la succession des priorités qui détermine l'ordre dans lequel les tâches sont traitées, et à chaque sélection d'une tâche pour le traitement, on redétermine l'ordre des tâches et on commande la sélection de façon que pour un nombre N de tâches, il se passe au maximum N unités de temps jusqu'à ce qu'une tâche active reçoive de nouveau une capa- cité de traitement de l'unité de traitement. 2°) Circuit selon la revendication 1, caractérisé en ce que l'ordre des tâches à traiter est déterminé par une liste avec des posi- tions de liste et une priorité croissante et la tâche sélectionnée actuellement pour être traitée est mise dans la position de la liste ayant la plus petite priorité. 3°) Circuit selon la revendication 2, caractérisé en ce que les tâches sans demande de traitement actuel restent identiques dans les positions associées à la liste mais tournent parmi les tâches sans demande de traitement actuel de façon que la position de liste de priori- té la plus faible soit associée à la tâche sans demande de traitement as- sociées à la priorité actuelle la plus élevée. 4°) Circuit selon la revendication 1, caractérisé en ce qu'il attribue en outre à chaque tâche chaque fois un canal avec ses propres registres et pour sélectionner les registres respectifs en fonction de l'association de la tâche respective à l'unité de traitement pour être reliée à cette unité de traitement. 5°) Circuit selon la revendication 1, caractérisé en ce que l'unité de traitement est attribuée à chacune des tâches à demande de traitement actuel, chaque fois au plus tard après un temps d'attente maximum et ensuite pendant une durée constante et identique pour toutes les tâches actives. 6°) Circuit selon la revendication 5, caractérisé en ce que la durée comme unité de temps correspond à une horloge de l'unité de traitement. 7°) Circuit selon la revendication 4, caractérisé en ce que le circuit assure le traitement des ordres des registres respectifs des différents canaux des tâches avec une demande de traitement actuel comme tâche active dans un pipeline à plusieurs niveaux, les registres respectifs étant commutés à l'instant du traitement dans des registres de pipeline cadencés correspondant et les ni- veaux de pipeline sont traités dans une tranche de temps, en pa- rallèle, mais chaque fois dans des canaux différents. 8°) Circuit selon la revendication 7, caractérisé en ce que le décodage d'ordre et l'accès à la mémoire pour la première tâche active se font chaque fois dans des tranches de temps dans lesquelles au moins une seconde tâche active est attribuée à l'unité de traitement. 9°) Procédé de traitement de plusieurs tâches dans un système de trai- terrent de données à l'aide d'une unité centrale de traitement ayant unecapacité de traitement attribuée à l'unité de traitement, procédé selon lequel : - aux différentes tâches on associe l'unité de traitement pour effectuer le traitement de manière décalée dans le temps, les tâches étant trai- s tées dans un ordre prédéfini et les tâches sans requête actuelle de traitement étant sautées dans l'ordre du traitement, et - à chaque sélection d'une tâche à traiter on redéfinit l'ordre, des tâches et on commande la sélection de façon que pour un nombre N tâches, on laisse passer un maximum de N unités de temps jusqu'à 10 ce que l'unité de traitement attribué à une tâche active une capacité de traitement. 10°) Procédé selon la revendication 9, caractérisé en ce qu' 15 à chaque tâche est attribué respectivement un canal avec ses propres registres et ces registres sont sélectionnés en fonction de l'association des différentes tâches à l'unité de traitement et ils sont reliés à cette unité de traitement. 20