CH690157B5 - Dispositif multitâche de traitement de séquences d'instructions. - Google Patents

Dispositif multitâche de traitement de séquences d'instructions. Download PDF

Info

Publication number
CH690157B5
CH690157B5 CH02388/95A CH238895A CH690157B5 CH 690157 B5 CH690157 B5 CH 690157B5 CH 02388/95 A CH02388/95 A CH 02388/95A CH 238895 A CH238895 A CH 238895A CH 690157 B5 CH690157 B5 CH 690157B5
Authority
CH
Switzerland
Prior art keywords
execution
instructions
tasks
instruction
task
Prior art date
Application number
CH02388/95A
Other languages
English (en)
Other versions
CH690157GA3 (fr
Inventor
Christian Piguet
Jean-Felix Perotto
Pierre Marchal
Original Assignee
Suisse Electronique Microtech
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 Suisse Electronique Microtech filed Critical Suisse Electronique Microtech
Publication of CH690157GA3 publication Critical patent/CH690157GA3/fr
Publication of CH690157B5 publication Critical patent/CH690157B5/fr

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
Description
La présente invention est relative à un dispositif multitâche de traitement de séquences d'instructions, et plus particulièrement, à un dispositif du type qui comprend des moyens de stockage de N séquences d'instructions correspondant à N tâches différentes, des moyens pour activer une pluralité quelconque desdites tâches, des moyens pour exécuter successivement une instruction de chaque tâche active et des moyens pour entrelacer les exécutions des instructions des tâches actives.
On connaît de tels dispositifs multitâches, en particulier de la demande internationale de brevet WO-A9 415 287 déposée le 10 décembre 1993 au nom de Centre Electronique Horloger S.A. Le dispositif décrit dans cette demande de brevet comprend un microprocesseur pour traiter en simultanéité et en partage de temps une pluralité quelconque de N tâches, un séquenceur multitâches pour commander l'exécution desdites tâches par le microprocesseur, des moyens de stockage de N compteurs d'instructions utilisés par le séquenceur pour commander l'enchaînement d'une particulière desdites tâches. Ainsi le séquenceur sélectionne l'instruction de la tâche suivante par un autre compteur lorsque l'instruction de la tâche précédente est terminée, ce qui évite un transfert de données à partir de moyens de stockage de ces données. Avantageusement, le microprocesseur du dispositif comprend aussi autant d'accumulateurs et de registres d'index que de compteurs d'instructions, toujours pour éviter des transferts de données. On diminue ainsi la consommation d'énergie du dispositif et on entrelace l'exécution des tâches ce qui améliore le temps de réponse du dispositif. Ceci est particulièrement intéressant dans le domaine horloger où les microprocesseurs sont alimentés en basse tension, cette basse tension affectant défavorablement la vitesse d'exécution des instructions par le microprocesseur.
Dans un dispositif multitâche tel que décrit dans la demande de brevet précitée, l'exécution d'une instruction demande plusieurs phases d'horloge, par exemple 4. Compte tenu de la contrainte de basse consommation en basse tension posée en microélectronique horlogère, on comprend qu'il existe un besoin pour un dispositif capable d'exécuter, par exemple, une instruction par phase, ce qui quadruplerait la vitesse avec une même fréquence d'horloge et une même tension d'alimentation, ou permettrait d'exécuter le même nombre d'instructions à une fréquence 4 fois inférieure autorisant une tension d'alimentation réduite.
On connaît aussi la technique du traitement d'instructions décomposées en plusieurs phases successives, dite en «chevauchement» ou en «pipeline» suivant l'expression anglo-saxonne. A chaque instant, des phases différentes de plusieurs instructions successives sont traitées ce qui permet de réduire la durée apparente d'exécution d'une instruction complète et donc de réduire la durée d'exécution d'une séquence d'instructions. Le traitement en pipeline présente néanmoins deux graves inconvénients qui réduisent le gain en durée que l'on peut en attendre. D'une part, quand la séquence comprend un branchement, il faut le plus souvent «vider» le pipeline avant de le remplir avec une nouvelle suite d'instructions, ce qui entraîne des phases à vide ralentissant l'exécution de la séquence. On observe le même inconvénient quand l'exécution d'une instruction fait appel à un résultat encore non disponible car produit par une instruction précédente qui n'est pas encore sortie du pipeline.
La présente invention a pour but de réaliser un dispositif de traitement de séquences d'instructions qui ne souffre pas des contraintes qui réduisent la vitesse d'exécution des dispositifs de traitement «multitâches» ou en «pipeline» et qui permette, en particulier, de réduire au minimum le nombre des phases à vide.
On atteint ces buts de l'invention, ainsi que d'autres qui apparaîtront à la lecture de la description qui va suivre, avec un dispositif multitâche de traitement de séquences d'instructions, du type qui comprend des moyens de stockage de N séquences d'instructions correspondant à N tâches différentes, des moyens pour activer une pluralité quelconque desdites tâches, et des moyens pour entrelacer les exécutions des instructions de X tâches actives (X < N) de telle sorte que l'exécution d'une instruction d'une tâche active suive l'exécution d'une instruction de la tâche active précédente, ce dispositif étant remarquable en ce qu'il comprend des moyens de traitement en pipeline de M phases successives de chacune de plusieurs instructions entrelacées, et un gestionnaire de tâches sensible à des événements impliquant l'activation desdites tâches pour commander les moyens de traitement de manière à assurer l'exécution en pipeline des phases successives des instructions entrelacées des tâches actives.
Comme on le verra dans la suite, il résulte de la structure multitâche du dispositif suivant l'invention que les instructions successives qui sont traitées en chevauchement ou en «pipeline» n'appartiennent pas aux mêmes séquences d'instructions. Ainsi, la vitesse d'exécution du dispositif n'est abaissée ni par l'attente du résultat d'une instruction non complètement exécutée ni par un «vidage» du pipeline exigé par l'exécution d'une instruction de branchement.
Suivant un mode de réalisation du dispositif selon l'invention, conçu pour l'exécution de quatre tâches actives au maximum, les moyens de traitement en pipeline traitent des instructions décomposées en trois phases, de lecture en mémoire de stockage d'instructions, de réalisation d'une opération dans une unité arithmétique et logique, et de rangement du résultat en mémoire simultanément à une incrémentation de compteur de programme ou à un chargement d'adresse de branchement, respectivement.
Suivant une première variante du dispositif selon l'invention, conçue pour l'exécution de quatre tâches actives, les moyens de traitement et le gestionnaire de tâches commandent l'exécution d'instructions décomposées en deux phases, d'extraction et d'exécution respectivement.
3
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
Suivant une deuxième variante du dispositif selon l'invention, conçue pour l'exécution de quatre tâches actives au maximum par des instructions décomposées en quatre phases, les moyens de traitement et le gestionnaire de tâches commandent l'adressage d'accumulateurs, de compteurs de programme, d'une mémoire vive associée au microprocesseur et des moyens de stockage des quatre séquences d'instructions, de manière à assurer l'exécution d'une tâche active dans un temps constant, quel que soit le nombre de tâches actives.
Suivant une troisième variante du dispositif selon l'invention, la suite des M phases d'une instruction est choisie de manière à éviter tout blocage du traitement en pipeline quand le nombre de tâches actives est supérieur ou égal à un nombre prédéterminé inférieur au nombre N des séquences d'instructions en mémoire dans les moyens de stockage.
D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre et à l'examen du dessin annexé, dans lequel:
la fig. 1 représente schématiquement l'architecture d'un mode de réalisation du dispositif suivant l'invention et,
les fig. 3, 5 et 6 représentent schématiquement l'architecture de trois variantes de ce dispositif, et les fig. 2, 4 et 7 sont des chronogrammes des instructions exécutées par les dispositifs des fig. 1, 3 et 6, respectivement.
On se réfère à la fig. 1 du dessin annexé où l'on a représenté l'architecture d'un mode de réalisation du dispositif suivant l'invention, adapté à l'exécution de quatre tâches au maximum, avec un traitement des instructions en «pipeline» à trois étages. Les quatre séquences d'instructions correspondant aux quatre tâches sont stockées dans des sections différentes d'une mémoire permanente ROM formant partie du premier étage de l'architecture «pipeline» du dispositif. Celui-ci comprend un microprocesseur formé d'une unité arithmétique et logique ALU, d'une mémoire vive RAM montée entre un bus 1 et un bus 2 et, comme le dispositif multitâche décrit dans la demande de brevet précitée, une pluralité de compteurs de programme PCO à PC3 pour adresser la mémoire ROM et une pluralité correspondante d'accumulateurs AC0 à AC3 associés à l'unité arithmétique et logique ALU. Ces compteurs et accumulateurs sont sélectivement adressés, en lecture, comme en écriture, par un gestionnaire de tâches G commandé par une boucle B à jeton, qui sélectionne les tâches activées par des événements. Dans ce mode de réalisation, le gestionnaire sélectionne soit trois tâches soit quatre tâches. Dans l'hypothèse ou une ou deux tâches seulement devraient être activées, le gestionnaire pourrait insérer des phases à vide, aux dépens de la vitesse d'exécution du dispositif.
Les événements déclenchant la sélection d'une tâche peuvent être d'origine interne (commande d'un moteur pas à pas dans une montre, par exemple) ou externe (sélection de la fonction chronomètre, par exemple). La sélection s'opère de la manière suivante. Si le jeton J, par exemple, est dans une cellule CO de la boucle qui correspond à la tâche O, le gestionnaire de tâches pointe en sortie la tâche s = 0 pour commander l'activation du compteur de programme PCO, de l'accumulateur AC0, etc... Quand le jeton passe à la tâche 1, = 1, ce qui sélectionne AC1, PC1, etc... Comme le dispositif multitâche suivant l'invention assure aussi un traitement en pipeline des diverses phases des instructions, les différents étages du pipeline traitent des tâches différentes.
Sur la fig. 1, il apparaît que le gestionnaire de tâches sélectionne en lecture (L) le compteur PCi (i = 0, 1, 2, 3) correspondant à la tâche s, sélectionne en écriture (E) l'accumulateur ACi correspondant à la tache (s—1 ), sélectionne en lecture l'accumulateur et en écriture le compteur qui correspondent à la tâche s-2.
La mémoire RAM utilisée dans le dispositif suivant l'invention doit pouvoir être lue et écrite à chaque phase des instructions. On choisit donc une mémoire rapide à double accès par le bus 1 et le bus 2.
On remarquera encore, dans le dispositif de la fig. 1, la présence de deux registres d'instructions RI 1 et RI 2 placés en série dans cet ordre entre la mémoire ROM et l'entrée des compteurs de programme PCO à PC3. La présence de ces deux registres résulte du phasage choisi pour les instructions, qui s'établit comme suit:
C'est ainsi qu'une instruction est exécutée en trois phases, la première pour lire la mémoire à l'adresse indiquée par le compteur de programme PCi (i = 0, 1, 2, 3), la deuxième pour réaliser une opération dans l'unité ALU et charger l'accumulateur ACi et la troisième pour ranger le résultat en mémoire et in-crémenter le compteur de programme PCi ou le charger avec une adresse ad de saut, en cas de branchement. L'instruction lue dans la mémoire est inscrite dans le registre RI 1 pendant la première phase et le contenu de RI 1 transféré dans RI 2 pendant la deuxième phase.
phase 1 phase 2 phase 3
RI 1 ROM (PCi)
ACi <- ALU (ACi, RAM), RI 2 <- RI 1
RAM <- ACi, PCi PCi + 1 ou PCi <- ad
4
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
Pour quatre tâches actives 1, 2, 3 et 4 et les accumulateurs et compteurs de programme de mêmes indices qui leur sont affectés, le traitement multitâche en pipeline à trois étages des quatre séquences d'instructions correspondantes se développe dans le temps selon le chronogramme représenté à la fig. 2. Sur cette fig., il apparaît que les trois phases d'une même instruction s'étagent en marches d'escalier, les instructions successives s'imbriquant les unes dans les autres. C'est ainsi que, à titre d'exemple, pendant la troisième phase de la première instruction de la tâche 0:
- l'étage 3 du pipeline est occupé par une instruction de la tâche 0. On adresse l'accumulateur AC0 en lecture pour le décharger dans la RAM adressée en écriture et on adresse le compteur PCO soit pour l'incrémenter, soit pour le charger avec une adresse ad de branchement,
- l'étage 2 du pipeline est occupé par une instruction de la tâche 1. On adresse l'accumulateur AC1 pour le charger avec le résultat d'une opération f exécutée dans l'unité ALU, opération dont les opérandes sont les contenus de AC1 et de la RAM, adressée en lecture,
- l'étage 1 du pipeline lit dans la mémoire ROM une instruction de la tâche 2 en adressant en lecture le compteur de programme PC2.
Autrement dît, la tâche 2 étant traitée dans l'étage 1, on a s = 2 (voir fig. 1). La tâche précédente s—1 = 1 est dans l'étage 2 et la tâche s-2 = 0 est dans l'étage 3.
Si la tâche 3 était dans l'étage 1 (s = 3), on aurait la tâche 2 dans l'étage 2 (s-1 = 2) et la tâche 1 dans l'étage 3 (s-2 = 1).
Il apparaît que la gestion des tâches et du pipeline dans le dispositif suivant l'invention permet de faire en sorte que chaque instruction de chaque tâche soit exécutée tour à tour, chacune n'ayant pas de rapport avec les autres instructions traitées dans le pipeline.
Ainsi, plus généralement, lors de l'exécution de N tâches différentes en multiprogrammation, avec un pipeline à M étages (avec M < N), les M instructions contenues dans le pipeline sont indépendantes. Le pipeline n'est alors jamais bloqué par l'intervention d'un branchement ou par le fait qu'une instruction doit attendre le résultat d'une instruction précédente incomplètement exécutée. Les délais ainsi supprimés notamment lors des branchements (qui représentent couramment environ 25% des instructions), permettent d'accroître sensiblement la vitesse d'exécution des tâches ou de maintenir une vitesse d'exécution donnée avec un dispositif à consommation abaissée, conformément aux objectifs que l'on s'était fixés.
On se réfère à la fig. 3 du dessin annexé où l'on a représenté schématiquement l'architecture d'une variante du dispositif suivant l'invention, conçu pour exécuter au maximum quatre tâches avec un pipeline à deux étages. Dans cette figure comme dans les suivantes, des références identiques à des références déjà utilisées désignent des éléments ou organes identiques ou similaires. C'est ainsi que, comme le mode de réalisation de la fig. 1, celui de la fig. 3 comprend quatre compteurs de programme PCO à PC3 et quatre accumulateurs ACO à AC3, chaque paire de compteur et d'accumulateur de même indice numérique étant dévolue à l'exécution de l'une des quatre tâches possibles. Le dispositif comprend aussi un gestionnaire G des tâches s et (s-1) pour commander respectivement la sélection en lecture de l'un quelconque des compteurs, la sélection en écriture de ces compteurs et la sélection en écriture ou lecture des accumulateurs. Le dispositif comprend un seul registre d'instructions et une unité centrale de traitement CPU telle qu'un microprocesseur comprenant classiquement une unité de traitement ALU et une mémoire RAM, non représentées, tout comme le dispositif de la fig. 1.
Les deux étages du pipeline, d'extraction F et d'exécution E, exécutent les opérations suivantes:
Le premier étage assure l'extraction de l'instruction, soit la lecture de la mémoire ROM et le chargement du registre d'instructions RI avec l'instruction lue, puis une précharge Pch de la mémoire ROM (sous-phases 1A et 1B). Le deuxième étage réalise «l'exécution», soit le chargement de l'accumulateur ACi associé à une tâche active i particulière, par une opération réalisée dans l'unité ALU, le chargement de la RAM par l'accumulateur ACi et l'incrémentation du compteur de programme PCi ou son chargement avec une adresse ad de branchement (sous-phases 2A et 2B). La mémoire ROM contient les quatre tâches et est lue à chaque phase.
On a représenté à la fig. 4 le chronogramme des opérations exécutées dans le cas où il y a quatre tâches actives. Dans ce chronogramme lo,i, par exemple, se lit «instruction 0 de la tâche 1». Il est clair que le traitement en pipeline n'est jamais bloqué (c'est-à-dire encombré de phases à vide) dès que deux tâches au moins sont activées. A cette condition, la vitesse d'exécution de ces tâches est optimale. S'il n'y a qu'une seule tâche active, le gestionnaire peut insérer une tâche à vide (c'est-à-dire sans «extraction» ni «exécution»). On peut aussi choisir de faire fonctionner le dispositif suivant le seul traitement en pipeline des instructions. Il faut alors insérer un «délai» (soit par exemple l'instruction inopérante «NOP» dans le langage mnémonique des microprocesseurs du type MC 6800) après une instruction de branchement ou ignorer l'instruction qui suit un branchement effectif.
Phase 1A Phase 1B
Extraction RI <- ROM (PC) PchRom
Phase 2A Phase 2B
Exécution ACi <- ALU (ACi, RAM)
RAM <- ACi; PCi <- PCi + 1 ou ad
5
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
On se réfère maintenant à la fig. 5 du dessin annexé où l'on a représenté une deuxième variante du dispositif selon l'invention. Dans cette variante, les moyens de stockage des instructions des N tâches (N = 4) sont constitués par N mémoires ROM 0 à ROM 3 en parallèle, affectées chacune aux instructions d'une des tâches. Chaque mémoire est lue seulement une fois toutes les N phases d'horloge ce qui permet d'utiliser des mémoires moins rapides que si l'on utilisait une seule mémoire pour stocker les N séquences d'instructions. En variante, on pourrait aussi installer des mémoires caches rapides entre la mémoire ROM (fig. 1 et 3) ou les mémoires ROM (fig. 5) et le microprocesseur.
Le dispositif de la fig. 5 comprend des moyens de précharge des ROMi commandés par des signaux de précharge PRi (i = 0, 1,2, 3). Il se distingue encore du dispositif de la fig. 1 en ce qu'il comprend quatre registres-maîtres Mi associés chacun à un des compteurs de programme PCi. Le gestionnaire de tâches G commande l'accès en lecture ou en écriture de ces registres. L'incrémentation, ou le saut à une adresse de branchement, des compteurs de programme est déterminé par un multiplexeur Mux commandant les registres Mi. Pour le reste, le dispositif de la fig. 5 comprend deux registres d'instruction RI 1 et RI 2 et un microprocesseur conforme à celui du dispositif de la fig. 1. On remarquera que la RAM associée à l'unité ALU devant être adressée à chaque phase en double accès (écriture et lecture) doit être rapide. On pourrait utiliser aussi des RAM plus petites, spécifiques à chaque tâche et adressées plus lentement.
Le dispositif de la fig. 5 est conçu pour exécuter jusqu'à quatre tâches, chaque instruction se décomposant en quatre phases 1 à 4, pour être exécutée comme suit dans un pipeline à quatre étages:
phase 0 Précharge ROMi (PRi actif)
phase 1 RI 1 <— ROMi (PCi)
phase 2 ACi ALU (ACi, RAM, Mi (PCi + 1 ou ad, RI 2 <— RI 1
phase 3 RAM <- ACi, PCi <- Mi, précharge ROMi
Pour l'exécution des instructions, le gestionnaire de tâches G donne toujours la main cycliquement aux quatre tâches, même si une ou plusieurs d'entre elles sont inactives, auquel cas, il y aura interposition de phases à vide. Avec quatre tâches actives, pendant la durée d'une phase des diverses instructions traitées dans le pipeline, les opérations suivantes sont réalisées par le dispositif suivant l'invention, en prenant l'exemple de l'exécution d'une instruction de la tâche 0 dans l'étage 3:
Etage 0
Précharge ROM 3
tâche 3
Etage 1
RI 1 <- ROM 2 (PC2)
tâche 2
Etage 2
AC1 ALU (AC1, RAM) M1 <- (PC1 + 1) ou ad RI 2 <- RT 1
tâche 1
Etage 3
RAM <- AC0 PCO <- MO Précharge ROM 0
tâche 0
Ainsi dans cet étage il y a sélection en lecture de AC0 pour le chargement de la RAM, elle-même adressée évidemment en écriture, sélection en lecture du registre MO maître de PCO pour le chargement de ce dernier et précharge de ROM 0 (le signal PRO est activé).
L'étage 2 est alors occupé par une instruction de la tâche 1. Il y a sélection en écriture de AC1 pour y charger le résultat d'une opération exécutée dans l'ALU dont un opérande provient de la RAM, sélection de PC1 en lecture pour charger la nouvelle adresse PC1 + 1 ou l'adresse ad de branchement stockée dans le registre RI 1 et sélection de Ml, registre-maître de PC1, en écriture pour le chargement de la nouvelle adresse.
L'étage 1 est occupé par une instruction de la tâche 2. Il s'opère alors une lecture de la mémoire ROM 2 adressée par le compteur PC2 et un chargement de l'instruction lue dans le registre RI 1.
L'étage 0 est occupé par une instruction de la tâche 3, soit une précharge de la mémoire ROM 3, préludant à la lecture d'une instruction dans cette mémoire au cours de la phase suivante du traitement multitâches et pipeline exécuté par le dispositif selon l'invention.
On retrouve le jeu d'opérations décrit ci-dessus dans les phases du traitement qui suivent celle décrite, avec une permution circulaire (0, 1, 2, 3, 0, 1...) des indices numériques des accumulateurs ACi, mémoires ROMi, compteurs PCi, registres Mi.
Il apparaît alors que la durée d'exécution d'une tâche dans le dispositif de la fig. 5 est constante, quel que soit le nombre de tâches actives. Il s'ensuit que si une seule tâche est activée, le traitement en pipeline des instructions ne permet pas de réduire la durée d'exécution de cette tâche. Par contre,
6
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
l'activation soudaine d'autres tâches ne ralentit pas l'exécution de la tâche en cours. Le concepteur optimisera évidemment le rendement du dispositif en programmant à chaque instant le maximum de tâches actives.
On se réfère maintenant à la fig. 6 qui représente une troisième variante du dispositif suivant l'invention, conçue pour faire en sorte que le traitement en pipeline ne soit jamais bloqué par des phases à vide, même lorsque le nombre de tâches actives est inférieur au nombre M d'étages du pipeline. On retrouve dans le dispositif de la fig. 6 les différents organes de celui de la fig. 5, à l'exception des registres-maîtres Mi des compteurs PCi. Sur le plan matériel, le dispositif de la fig. 6 se distingue encore de celui de la fig. 5 par la présence d'un troisième registre d'instructions RI 3 en aval du deuxième, et en amont de l'entrée d'écriture de la mémoire RAM associée à l'unité de traitement ALU, et par la présence d'un deuxième multiplexeur MUX 2 commandé par le gestionnaire de tâches (de même que le multiplexeur MUX). Le multiplexeur MUX 2 détermine la fourniture à l'unité arithmétique et logique ALU d'une condition de branchement Fi, pour un but que l'on verra plus loin.
On peut obtenir le résultat énoncé ci-dessus (l'absence de blocage du pipeline), par un traitement en pipeline à quatre étages, avec deux tâches actives seulement. Dans ce cas, et avec quatre mémoires ROM 0 à ROM 3, le pipeline contient à chaque instant, dans deux de ses quatre étages, deux instructions appartenant à la même tâche. Il est alors nécessaire de gérer en conséquence le fonctionnement du pipeline.
A cet effet on modifie comme suit la suite des phases des instructions, par rapport à celle décrite en liaison avec la description du dispositif de la fig. 5:
Cette séquence se décompose alors comme suit
- une phase d'extraction pour lire une instruction et la charger dans RI 1,
- une phase de «décodage» pendant laquelle l'instruction glisse dans le registre RI 2, alors que le compteur de programme PCi attaché à la tâche active j est mis à jour et que la mémoire ROMi est préchargée. La mise à jour du compteur de programme s'opère par calcul de la condition Fi qui peut prendre la valeur 1 ou 0. Si Fi = 0, il y a incrémentation du compteur. Si Fi = 1 c'est une adresse de branchement ad qui est chargée dans le compteur de programme,
- une première phase d'exécution («exécution 1 ») au cours de laquelle l'unité ALU calcule un résultat à partir des contenus de l'accumulateur ACi et de mémoire RAM. L'unité calcule aussi la condition de branchement Fi qui doit être disponible à la phase suivante pour l'instruction suivante de la tâche, qui se trouve dans le pipeline, sans qu'il soit nécessaire d'attendre la fin de l'exécution de l'instruction. Pendant cette première phase d'exécution, le contenu du registre RI 2 glisse dans le registre RI 3,
- une deuxième phase d'exécution («exécution 2») pendant laquelle le contenu de l'accumulateur ACi passe dans la mémoire RAM.
Avec un tel séquencement, la lecture d'une instruction et la mise à jour du compteur de programme se réalisent en deux phases seulement (extraction et décodage). L'exécution des instructions de la séquence intervient alors suivant le diagramme temporel représenté à la fig. 7.
Selon ce diagramme, l'exécution de la tâche 0 ou de la tâche 1 dans le pipeline à quatre étages s'effectue en deux phases successives:
- une première phase pendant laquelle une instruction de la tâche 1 (par exemple) s'exécute dans l'étage 2 du pipeline (AC1 <- ALU (AC1, RAM)), l'ALU calculant aussi la condition de branchement R, alors que l'instruction 3 suivante de la tâche 1 (un branchement par exemple) est lue dans l'étage 1 du pipeline,
- une deuxième phase dans laquelle cette instruction décide du branchement ou non à partir de la condition F1 calculée pendant la première phase
PC1 <- FT* (PC1 + 1 ou F1* ad
Les deux phases du diagramme ci-dessus se répètent cycliquement pendant toute la durée du traitement des deux tâches actives 0 et 1. On constate que le séquencement choisi et le glissement séquentiel des instructions entrelacées des deux tâches dans les trois registres RI 1, RI 2, RI 3 permet d'éviter toute phase à vide et donc tout blocage du pipeline.
Bien entendu le dispositif de la fig. 6 permet aussi d'exécuter quatre tâches actives sans phases à vide, tout comme celui de la fig. 5. Par contre, en présence d'une seule tâche active (tâche 1 par exemple, le gestionnaire de tâches G doit insérer des phases à vide (par le code d'instructions «NOP» par exemple), dans toutes les cases du diagramme de la fig. 7 affectées à la tâche 0.
extraction décodage
RI 1 <- ROMi (PCi)
RI 2 <- RI 1; PCi <- Fi* (PCi + 1) ou Fi ad, Prech ROMi
RI 3 <- RI 2; Fi, ACi <- ALU (ACi, RAM) RAM <- ACi exécution 1 exécution 2
7
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
On notera que, en présence de deux tâches actives, l'instruction précédent un branchement doit fournir la variable booléenne F1 ou F0, résultant du calcul d'une condition provenant, par exemple, d'une comparaison, sans attendre la fin de son exécution. A la fig. 7, la variable booléenne F1 est calculée par une instruction de la tâche 1 dans l'étage 2 lors de la première phase et la flèche indique qu'elle est directement utilisée par l'instruction suivante de la tâche 1, qui est une instruction de branchement, lors de la deuxième phase dans l'étage 1. C'est le gestionnaire de tâches qui, s'il n'y a que deux tâches actives, aiguille la valeur de cette variable booléenne F1, par le multiplexeur MUX 2, vers l'ensemble des compteurs de programme.
Il apparaît maintenant que l'invention permet bien d'atteindre les buts fixés, à savoir fournir un dispositif de traitement de séquences d'instructions combinant les avantages des traitements «multitâches» et en pipeline, sans en présenter les inconvénients. On accroît ainsi la vitesse d'exécution des diverses tâches confiées au dispositif par rapport à la vitesse observée dans les dispositifs comparables connus à basse consommation d'énergie, tels que celui décrit dans la demande internationale de brevet précitée. L'invention fournit en particulier l'architecture d'un dispositif qui permet de ne jamais bloquer un pipeline à quatre étages traitant au moins deux tâches actives, moyennant un phasage approprié des instructions.
Bien entendu, l'invention n'est pas limitée aux modes de réalisation décrits et représentés, qui n'ont été donnés qu'à titre d'exemple. Ainsi, l'invention pourrait trouver aussi application dans des dispositifs multitâches non soumis à une contrainte de basse consommation d'énergie.

Claims (13)

Revendications
1. Dispositif multitâche de traitement de séquences d'instructions, du type qui comprend:
- des moyens de stockage de N séquences d'instructions correspondant à N tâches différentes,
- des moyens pour activer une pluralité quelconque desdites tâches, et
- des moyens pour entrelacer les exécutions des instructions de X tâches actives (X < N) de telle sorte que l'exécution d'une instruction d'une tâche active suive l'exécution d'une instruction de la tâche active précédente, caractérisé en ce qu'il comprend:
- des moyens de traitement en pipeline de M phases successives de chacune de plusieurs instructions entrelacées, et
- un gestionnaire de tâches (G) sensible à des événements impliquant l'activation desdites tâches pour commander les moyens de traitement de manière à assurer l'exécution en pipeline des phases successives des instructions entrelacées des tâches actives.
2. Dispositif conforme à la revendication 1, caractérisé en ce que les moyens de traitement comprennent un microprocesseur équipé d'un jeu d'accumulateurs (ACi) et un jeu de compteurs de programme (PCi) associés en paires (ACi, PCi) dont chacune intervient dans l'exécution d'une des tâches, le gestionnaire de tâches (G) commandant sélectivement la lecture et l'écriture de ces accumulateurs et compteurs.
3. Dispositif conforme à la revendication 1 ou 2, caractérisé en ce qu'il comprend des moyens pour insérer des instructions inopérantes (NOP), lorsque le nombre de tâches actives est inférieur au nombre M de phases.
4. Dispositif conforme à l'une quelconque des revendications 1 et 2, conçu pour l'exécution de quatre tâches actives au maximum, caractérisé en ce que les moyens de traitement en pipeline traitent des instructions décomposées en trois phases, de lecture en mémoire (ROM) de stockage d'instructions, de réalisation d'une opération dans une unité arithmétique et logique (ALU), et de rangement du résultat en mémoire simultanément à une incrémentation de compteur de programme ou à un chargement d'adresse (ad) de branchement, respectivement.
5. Dispositif conforme à la revendication 4, caractérisé en ce que les moyens de traitement comprennent deux registres d'instructions (RI 1, RI 2), le contenu d'un registre (RI 1) étant chargé dans l'autre registre (RI 2) pendant l'exécution de la deuxième phase d'une instruction.
6. Dispositif conforme à l'une quelconque des revendications 1 et 2, conçu pour l'exécution de quatre tâches actives, caractérisé en ce que les moyens de traitement et le gestionnaire de tâches (G) commandent l'exécution d'instructions décomposées en deux phases d'extraction (F) et d'exécution (E), respectivement.
7. Dispositif conforme à la revendication 2, conçue pour l'exécution de quatre tâches actives au maximum par des instructions décomposées en quatre phases, caractérisé en ce que les moyens de traitement et le gestionnaire de tâches (G) commandent l'adressage des accumulateurs (ACi), de compteurs de programme (PCi), d'une mémoire vive (RAM) associée au microprocesseur et des moyens de stockage (ROMi) des quatre séquences d'instructions, de manière à assurer l'exécution d'une tâche active dans un temps constant, quel que soit le nombre de tâches actives.
8. Dispositif conforme à la revendication 7, caractérisé en ce que chaque compteur de programme (PCi) est commandé par un registre-maître (Mi) lui-même commandé par le gestionnaire de tâches (G).
9. Dispositif conforme à l'une quelconque des revendications 1 et 2, caractérisé en ce que la suite des M phases d'une instruction est choisie de manière à éviter tout blocage du traitement en pipeline
8
5
10
15
20
25
30
35
40
45
50
55
60
65
CH 690 157G A3
quand le nombre de tâches actives est supérieur ou égal à un nombre prédéterminé inférieur au nombre (N) de séquences d'instructions en mémoire dans les moyens de stockage.
10. Dispositif conforme à la revendication 8, caractérisé en ce que N = 4, M = 4 et le nombre prédéterminé est 2.
11. Dispositif conforme à l'une quelconque des revendications 1 à 10, caractérisé en ce que les moyens de stockage comprennent une mémoire morte (ROM) unique divisée en N sections contenant autant de séquences d'instructions.
12. Dispositif conforme à l'une quelconque des revendications 1 à 10, caractérisé en ce que les moyens de stockage comprennent N mémoires mortes (ROMi) contenant chacune une des N séquences d'instructions.
13. Dispositif conforme à l'une quelconque des revendications 1 à 12, caractérisé en ce que les moyens d'activation d'une pluralité quelconque de tâches comprennent une boucle à jeton (B) commandée par des événements.
9
CH02388/95A 1994-09-26 1995-08-22 Dispositif multitâche de traitement de séquences d'instructions. CH690157B5 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9411439A FR2725054B1 (fr) 1994-09-26 1994-09-26 Dispositif multitache de traitement de sequences d'instructions, a basse consommation d'energie

Publications (2)

Publication Number Publication Date
CH690157GA3 CH690157GA3 (fr) 2000-05-31
CH690157B5 true CH690157B5 (fr) 2000-11-15

Family

ID=9467259

Family Applications (1)

Application Number Title Priority Date Filing Date
CH02388/95A CH690157B5 (fr) 1994-09-26 1995-08-22 Dispositif multitâche de traitement de séquences d'instructions.

Country Status (2)

Country Link
CH (1) CH690157B5 (fr)
FR (1) FR2725054B1 (fr)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006529043A (ja) * 2003-05-09 2006-12-28 サンドブリッジ テクノロジーズ インコーポレーテッド 飽和あり、または飽和なしで、オペランドの積和を実行するプロセッサ簡約ユニット

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4197579A (en) * 1978-06-06 1980-04-08 Xebec Systems Incorporated Multi-processor for simultaneously executing a plurality of programs in a time-interlaced manner
ATE188559T1 (de) * 1992-12-23 2000-01-15 Centre Electron Horloger Multi-tasking-steuerungsgerät mit geringem energieverbrauch

Also Published As

Publication number Publication date
FR2725054A1 (fr) 1996-03-29
CH690157GA3 (fr) 2000-05-31
FR2725054B1 (fr) 1997-01-17

Similar Documents

Publication Publication Date Title
EP0020202B1 (fr) Système multiprocesseur de traitement de signal
EP0439855B1 (fr) MicrocontrÔleur pour l&#39;exécution rapide d&#39;un grand nombre d&#39;opérations décomposables en séquences d&#39;opérations de même nature
EP0826169A1 (fr) Circuit integre perfectionne et procede d&#39;utilisation d&#39;un tel circuit integre
EP0173383B1 (fr) Processeur pour effectuer suivant différents modes le traitement de données et dispositif de multiplication convenant pour un tel processeur
EP0558125B1 (fr) Processeur neuronal à cellules synaptiques reparties
EP1176505A1 (fr) Processeur DSP à architecture parallèle
EP1027644B1 (fr) Microprocesseur, notamment pour carte a puce et procede de traitement d&#39;une instruction
FR2770659A1 (fr) Processeur de traitement perfectionne
EP0006478A1 (fr) Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données
FR3075444A1 (fr) Systeme comportant une memoire adaptee a mettre en oeuvre des operations de calcul
FR2809508A1 (fr) Systeme et methode de gestion d&#39;une architecture multi-ressources
EP0684551A1 (fr) Circuit électronique d&#39;utilisation d&#39;un coprocesseur
EP1803061B1 (fr) Systeme de processeur parallele reconfigurable, modulaire et hierarchique
FR2965948A1 (fr) Systeme d&#39;ordonnancement de l&#39;execution de taches cadence par un temps logique vectoriel
CH690157B5 (fr) Dispositif multitâche de traitement de séquences d&#39;instructions.
FR2662281A1 (fr) Processeur comprenant un fichier de registres adressables en plusieurs jeux de registres contenus dans des fenetres.
EP0927928B1 (fr) Procédé de production amélioré d&#39;un paramètre JO associé à la mise en oeuvre d&#39;opérations modulaires selon la méthode de Montgomery
EP0845787B1 (fr) Dispositif de protection après une écriture de page d&#39;une mémoire électriquement programmable
EP1027642B1 (fr) Microprocesseur comprenant des moyens de concatenation de bits
WO1992015096A1 (fr) Dispositif d&#39;adressage sequentiel d&#39;une memoire, notamment pour carte a memoire
EP0709768B1 (fr) Dispositif d&#39;exécution d&#39;un programme d&#39;instructions
FR2864320A1 (fr) Nouvelle architecture de memoire fifo et procede de gestion d&#39;une telle memoire.
FR2666670A1 (fr) Coprocesseur de calcul parallele optimise pour les traitements a base de matrices creuses.
FR2558612A1 (fr) Appareil de multiplication binaire
FR2965946A1 (fr) Systeme d&#39;ordonnancement de l&#39;execution de taches cadence par un temps logique vectoriel

Legal Events

Date Code Title Description
PL Patent ceased