FR2821449A1 - Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant - Google Patents

Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant Download PDF

Info

Publication number
FR2821449A1
FR2821449A1 FR0102647A FR0102647A FR2821449A1 FR 2821449 A1 FR2821449 A1 FR 2821449A1 FR 0102647 A FR0102647 A FR 0102647A FR 0102647 A FR0102647 A FR 0102647A FR 2821449 A1 FR2821449 A1 FR 2821449A1
Authority
FR
France
Prior art keywords
memory
instruction
stored
counter
fact
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR0102647A
Other languages
English (en)
Other versions
FR2821449B1 (fr
Inventor
Andrew Cofler
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SA
Original Assignee
STMicroelectronics SA
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 STMicroelectronics SA filed Critical STMicroelectronics SA
Priority to FR0102647A priority Critical patent/FR2821449B1/fr
Priority to US10/083,629 priority patent/US6854049B2/en
Publication of FR2821449A1 publication Critical patent/FR2821449A1/fr
Application granted granted Critical
Publication of FR2821449B1 publication Critical patent/FR2821449B1/fr
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

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

Abstract

L'unité de traitement DU est associée à une première mémoire RLDQ du type FIFO et à une deuxième mémoire DIDQ du type FIFO. Chaque instruction de chargement LDRx dans un registre est stockée dans la première mémoire RLDQ. Certaines au moins des autres instructions sont stockées dans la deuxième mémoire DIDQ. On extrait de la deuxième mémoire une instruction opérative impliquant au moins un registre, si aucune instruction de chargement temporellement plus ancienne et destinée à modifier la valeur du ou des registres associée à cette instruction opérative, n'est présente dans la première mémoire. Et, en présence d'une telle instruction de chargement temporellement plus ancienne, on extrait ladite instruction opérative de la deuxième mémoire seulement après que l'instruction modificatrice de chargement a été extraite de la première mémoire.Application à un processeur de traitement numérique du signal.

Description

<Desc/Clms Page number 1>
Procédé de gestion d'instructions au sein d'un processeur à architecture découplée, en particulier un processeur de traitement numérique du signal, et processeur correspondant.
L'invention concerne les processeurs, notamment les processeurs de traitement numérique du signal (DSP :"Digital Signal Processors"en langue anglaise), et notamment la gestion d'instructions au sein d'un tel processeur, telles que les instructions de chargement dans un registre d'une donnée mémorisée, en particulier lorsqu'elles sont gardées.
Un processeur concerné par la présente invention comporte généralement plusieurs unités de traitement fonctionnant en parallèle. Classiquement, il est prévu en tant qu'unités de traitement, une unité arithmétique et logique, une unité d'adressage et une unité de gestion de branchement. Outre ces unités de traitement, le processeur comporte généralement une unité de contrôle ou unité centrale qui dialogue avec la mémoire-programme et délivre aux différentes unités de traitement, des instructions élémentaires encore communément appelées microinstructions.
Par ailleurs, le processeur concerné par la présente invention est à architecture découplée, permettant, après un temps de latence initiale, une vitesse d'exécution des instructions plus importante.
Le principe d'une architecture découplée est déjà connu de l'homme du métier, par exemple par la demande de brevet européen no 0 949 565 ou par la demande de brevet européen nu 1 050799. On rappelle maintenant brièvement le principe d'une architecture découplée, l'homme du métier pouvant se référer pour plus de détails, si nécessaire, aux demandes de brevets européens précitées.
Outre les unités de traitement précitées, il est prévu une interface mémoire qui contient notamment une mémoire du type FIFO (premier entré-premier sorti) destinée à recevoir et à stocker temporairement les données contenues dans une mémoire de données, par exemple formée de deux bancs de mémoire SRAM.
Dans une architecture découplée, une instruction de chargement dans un registre d'une donnée mémorisée est partitionnée en deux micro-
<Desc/Clms Page number 2>
instructions ou instructions. Une première instruction est transmise au module d'adressage (unité d'adressage) qui calcule l'adresse effective de la donnée dans la mémoire de données. L'autre instruction, qui est une instruction de chargement dans le registre concerné, est temporairement stockée dans une mémoire FIFO associée à l'unité arithmétique et logique.
Cette deuxième instruction reste en attente jusqu'à ce que la donnée mémorisée, élaborée par l'unité d'adressage, soit disponible. Lorsqu'il en est ainsi, la mise à jour du registre concerné est effectivement réalisée.
Au bout d'un temps de latence initiale, l'unité d'adressage a pris de l'avance sur l'unité arithmétique et logique. La machine est alors "découplée". En contrepartie, vu de l'unité arithmétique et logique, la latence"fictive"est nulle.
Cependant, puisque les instructions destinées à l'unité arithmétique et logique sont traitées temporellement dans l'ordre, car elles sont stockées dans une FIFO, il est tout à fait possible qu'une première instruction de chargement d'une donnée mémorisée dans un premier registre soit à un instant donné stockée en tête de la FIFO, et par conséquent prête à être délivrée aux étages de"pipeline"de l'unité de traitement, et qu'une deuxième instruction impliquant des registres différents du premier registre, soit stockée juste derrière cette première instruction de chargement. Et, tant que cette première instruction de chargement reste bloquée en tête de la FIFO en attente de la donnée mémorisée élaborée par l'unité d'adressage, la deuxième instruction, immédiatement derrière celle-ci, reste également bloquée alors qu'elle est totalement indépendante de ladite instruction bloquée en tête de la FIFO.
L'invention vise à apporter une solution à ce problème.
L'invention a pour but de proposer un mécanisme de gestion des instructions totalement différent de celui existant jusqu'à maintenant, et qui puisse améliorer les performances générales d'un processeur à architecture découplée.
L'invention propose donc un procédé de gestion d'instructions au sein d'un processeur à architecture découplée, ce processeur comportant un coeur contenant plusieurs unités de traitement respectivement associées à des moyens de mémoire du type FIFO (premier entré-premier sorti) pour stocker séquentiellement les
<Desc/Clms Page number 3>
instructions respectives qui sont destinées aux unités correspondantes. Par ailleurs, la délivrance au coeur du processeur, d'une instruction de chargement dans un registre d'une donnée mémorisée, provoque la délivrance au moyen de mémoire d'une première unité de traitement, par exemple une unité arithmétique et logique, d'une instruction de chargement dans le registre et la délivrance au moyen de mémoire d'une deuxième unité de traitement, par exemple l'unité d'adressage, d'une instruction destinée à élaborer ladite donnée mémorisée. L'instruction de chargement n'est exécutée que lorsque ladite donnée mémorisée a été délivrée par ladite deuxième unité de traitement.
Selon une caractéristique générale de l'invention, le moyen de mémoire de la première unité de traitement comporte une première mémoire de type FIFO, et une deuxième mémoire de type FIFO distincte de la première. On stocke chaque instruction de chargement dans la première mémoire et certaines au moins des autres instructions opératives destinées à la première unité dans la deuxième mémoire (en pratique, on verra ci-après que selon un mode de mise en oeuvre particulièrement avantageux, il est préférable en présence d'instructions gardées, dont la signification sera détaillée ci-après, de stocker des instructions dites de transmission dans une troisième mémoire). On extrait de la deuxième mémoire une instruction opérative impliquant au moins un registre et ayant atteint la tête de cette deuxième mémoire, si aucune instruction de chargement temporellement plus ancienne et destinée à modifier la valeur du ou des registres associée à cette instruction opérative, n'est présente dans la première mémoire. Et, en présence d'une telle instruction modificatrice de chargement temporellement plus ancienne, on extrait ladite instruction opérative de la deuxième mémoire seulement après que l'instruction modificatrice de chargement a été extraite de la première mémoire.
En d'autres termes, selon l'invention, une instruction de chargement dans un registre d'une donnée mémorisée ne présente plus un "caractère bloquant"vis-à-vis d'instructions opératives temporellement plus jeunes qui n'impliquent pas au moins un registre concerné par cette instruction de chargement.
Selon un mode de mise en oeuvre du procédé selon l'invention, à
<Desc/Clms Page number 4>
chaque fois qu'on stocke dans la deuxième mémoire une instruction sans qu'il soit prévu de stocker simultanément dans la première mémoire une instruction de chargement, on stocke dans la première mémoire une instruction non-opérative (instruction NOP, selon une dénomination bien connue de l'homme du métier). Par ailleurs, à chaque fois qu'on extrait une instruction de la première mémoire, quelle qu'elle soit, on incrémente un premier compteur de lecture. A chaque fois qu'on stocke une instruction, quelle qu'elle soit, dans la première mémoire, on incrémente un premier compteur d'écriture.
Et, à chaque fois qu'on stocke dans la première mémoire une instruction de chargement, on mémorise la valeur courante du premier compteur d'écriture. Et, la détermination du caractère toujours présent de cette instruction de chargement dans la première mémoire prend en compte le résultat de la comparaison de ladite valeur courante mémorisée du premier compteur d'écriture avec la valeur courante du premier compteur de lecture.
En d'autres termes, on détermine si une instruction de chargement qui a été écrite dans la première mémoire est toujours présente dans cette première mémoire, en utilisant la comparaison de la valeur courante mémorisée du premier compteur d'écriture avec la valeur courante mémorisée du premier compteur de lecture.
En pratique, le premier compteur de lecture et le premier compteur d'écriture ont avantageusement une taille binaire identique et égale à la profondeur de la première mémoire. On associe alors, selon un mode de mise en oeuvre du procédé, à chaque premier compteur, un bit de dépassement changeant de valeur à chaque fois que le premier compteur correspondant revient à sa valeur initiale. Et, à chaque fois qu'on stocke dans la première mémoire une instruction de chargement, on mémorise également la valeur courante du bit de dépassement du premier compteur d'écriture. Et, la détermination du caractère toujours présent de cette instruction de chargement dans la première mémoire prend également en compte le résultat de la comparaison de la valeur courante du bit de dépassement du premier compteur de lecture avec ladite valeur mémorisée du bit de dépassement du premier compteur d'écriture.
Ceci permet de tenir compte du fait que le pointeur de lecture et
<Desc/Clms Page number 5>
le pointeur d'écriture de la première mémoire peuvent se situer dans deux fenêtres"circulaires"différentes.
En ce qui concerne les instructions opératives impliquant au moins un registre, selon un mode de mise en oeuvre du procédé selon l'invention, à chaque fois qu'on stocke dans la deuxième mémoire une instruction opérative impliquant au moins un registre, on lui associe une première"étiquette"contenant la valeur courante du premier compteur d'écriture qui a été mémorisée lorsque la dernière (c'est à dire la plus jeune) instruction de chargement modifiant l'un au moins des registres impliqués dans ladite instruction opérative a été stockée dans la première mémoire. Le critère d'extraction de cette instruction opérative ayant atteint la tête de la deuxième mémoire prend alors en compte le résultat de la comparaison entre ladite valeur courante mémorisée associée à cette instruction opérative (contenue dans la première étiquette), et la valeur courante du premier compteur de lecture.
En d'autres termes, le principe de base est ici de comparer la valeur courante du premier compteur de lecture avec la valeur courante du premier compteur d'écriture qui a été mémorisée lorsque la dernière instruction de chargement modifiant l'un au moins des registres impliqués dans ladite instruction opérative a été stockée dans la première mémoire.
Et, le principe de base consiste à autoriser l'extraction de l'instruction opérative ayant atteint la tête de la mémoire lorsque la valeur courante du premier compteur de lecture est supérieure à la valeur courante mémorisée contenue dans la première étiquette qui a été attachée à cette instruction opérative.
Cependant, là encore, il convient de prendre en compte notamment le cas où une instruction de chargement est écrite alors que le premier compteur d'écriture est dans une fenêtre circulaire donnée et que le premier compteur de lecture est toujours positionné dans la fenêtre circulaire précédente.
Aussi, pour résoudre de tels cas particuliers, selon un mode de mise en oeuvre du procédé selon l'invention, à chaque fois qu'on stocke une instruction opérative dans la deuxième mémoire, on lui associe également dans sa première étiquette la valeur courante du bit de dépassement du premier compteur d'écriture qui a été mémorisée lorsque
<Desc/Clms Page number 6>
la dernière instruction de chargement modifiant l'un au moins des registres impliqués dans ladite instruction opérative a été stockée dans la première mémoire. Et, le critère d'extraction de cette instruction opérative ayant atteint la tête de la deuxième mémoire prend également en compte le résultat de la comparaison entre cette valeur courante mémorisée associée à cette instruction opérative et la valeur courante du bit de dépassement du premier compteur de lecture.
Parmi les instructions délivrées aux unités de traitement, figurent des instructions dites"gardées"permettant une écriture plus performante du code programme.
L'utilisation d'instructions gardées dans un processeur est déjà connue de l'homme du métier, par exemple par la demande de brevet européen n 1 050 803. On rappelle ici brièvement le principe des instructions gardées, l'homme du métier pouvant se référer pour plus de détails, si nécessaire, à la demande de brevet européen précitée.
Une instruction gardée est une instruction affectée d'une indication dite"de garde", en pratique un bit de garde pouvant prendre la valeur 0 ou 1. L'instruction gardée sera alors exécutée ou non en fonction de la valeur du bit de garde, c'est-à-dire de l'indication de garde. Toutes les valeurs binaires des indications de garde, pouvant être au nombre de seize par exemple, sont contenues dans un registre dit"registre d'indications de garde". Ce registre centralisé est incorporé au sein d'une unité de traitement, par exemple l'unité arithmétique et logique, et contient à chaque instant les valeurs courantes des indications ou bits de garde. Les valeurs de ces indications de garde peuvent être modifiées par des instructions spécifiques dites"instructions modificatrices".
Pour lire la valeur d'une indication de garde associée à une instruction gardée, l'unité de traitement qui reçoit cette instruction gardée et qui n'a pas un accès direct au registre des indications de garde (par exemple l'unité de branchement), requiert un transfert de la valeur de l'indication de garde depuis l'unité de traitement qui détient le registre des indications de garde. En d'autres termes, la délivrance d'une instruction gardée à une unité de traitement qui ne détient pas le registre des indications de garde, provoque la délivrance à l'unité de traitement qui est la gardienne du registre des indications de garde, d'une instruction dite
<Desc/Clms Page number 7>
"de transmission"qui est destinée à faire transmettre à l'unité de traitement qui reçoit l'instruction gardée, la valeur de l'indication de garde associée à cette instruction gardée.
Et, l'instruction gardée est maintenue dans l'étage de tête (étage de sortie) de la mémoire d'instructions du type FIFO, associée à cette unité de traitement, jusqu'à ce que cette dernière reçoive de l'unité de traitement qui détient le registre des indications de garde, ladite valeur de l'indication de garde associée à cette instruction gardée. Ce n'est que lorsque l'unité de traitement qui détient le registre des indications de garde, aura exécuté l'instruction de transmission, que la valeur correspondante de l'indication de garde sera transmise à l'unité de traitement requérante, de façon que celle-ci puisse ou non exécuter son instruction gardée.
Or, si pour une raison ou pour une autre, l'instruction de transmission est bloquée dans la mémoire d'instructions de l'unité de traitement qui détient le registre des indications de garde, l'unité de traitement requérante va être en conséquence également bloquée jusqu'à ce qu'elle reçoive la valeur de l'indication de garde correspondante.
L'invention vise également à apporter une solution à ce problème.
L'invention a également pour but de proposer un mécanisme de gestion des instructions gardées totalement différent de celui existant jusqu'à maintenant, et qui puisse améliorer les performances générales d'un processeur utilisant un registre centralisé des indications de garde.
Par ailleurs, les instructions de chargement peuvent être ellesmêmes des instructions gardées. Or, compte tenu de la présence de la première mémoire, qui est destinée à stocker les instructions de chargement, il est nécessaire de s'assurer que la valeur d'une indication de garde délivrée par le registre des indications de garde et destinée à une instruction de chargement, est bien la bonne valeur attendue compte tenu de l'exécution dans l'ordre de toutes les instructions stockées dans les différentes FIFO.
L'invention apporte également une solution à ce problème.
Plus précisément, selon un mode de mise en oeuvre de l'invention, le moyen de mémoire de la première unité comporte une
<Desc/Clms Page number 8>
troisième mémoire de type FIFO, distincte de la première et de la deuxième mémoire, ainsi qu'une quatrième mémoire de type FIFO distincte des trois premières. La première unité contient par ailleurs un registre d'indications de garde.
La délivrance d'une instruction gardée au moyen de mémoire d'une autre unité de traitement différente de la première, par exemple l'unité de branchement, ou la délivrance d'une instruction de chargement gardée à la première unité, provoque la délivrance à la première unité de traitement et son stockage dans la troisième mémoire, d'une instruction de transmission destinée à faire transmettre à ladite autre unité (par exemple l'unité de branchement) ou à ladite quatrième mémoire, respectivement, la valeur de l'indication de garde associée à ladite instruction gardée ou à ladite instruction de chargement gardée, respectivement.
On extrait alors de la troisième mémoire, une instruction de transmission ayant atteint la tête de cette troisième mémoire, si aucune instruction modificatrice temporellement plus ancienne destinée à modifier la valeur de l'indication de garde associée à cette instruction de transmission, n'est présente dans la deuxième mémoire. Et, en présence d'une telle instruction modificatrice temporellement plus ancienne dans la deuxième mémoire, on extrait l'instruction de transmission de la troisième mémoire seulement après que l'instruction modificatrice a été extraite de la deuxième mémoire.
En d'autres termes, selon l'invention, une instruction de transmission peut"court-circuiter"toutes les autres instructions si aucune instruction temporellement plus ancienne stockée dans la deuxième mémoire n'est de nature à modifier la valeur de l'indication de garde associée à cette instruction de transmission.
Par ailleurs, selon l'invention, la quatrième mémoire qui est destinée à recevoir les valeurs des indications de garde des instructions de chargement gardées, est lue en parallèle avec la première mémoire destinée à recevoir les instructions de chargement, évitant ainsi une perte de synchronisation dans l'exécution des instructions.
Selon un mode de mise en oeuvre du procédé selon l'invention, à chaque fois qu'on extrait une instruction de la deuxième mémoire, on incrémente un deuxième compteur de lecture. De même, à chaque fois
<Desc/Clms Page number 9>
qu'on stocke une instruction dans la deuxième mémoire, on incrémente un deuxième compteur d'écriture.
Par ailleurs, à chaque fois qu'on stocke dans la deuxième mémoire une instruction modifiant la valeur d'une indication de garde, on mémorise la valeur courante du deuxième compteur d'écriture. Et, la détermination du caractère toujours présent d'une instruction modificatrice dans la deuxième mémoire prend en compte le résultat de la comparaison de ladite valeur courante mémorisée du deuxième compteur d'écriture avec la valeur courante du deuxième compteur de lecture.
En d'autres termes, on détermine si une instruction modificatrice qui a été écrite dans la deuxième mémoire est toujours présente dans cette deuxième mémoire, en utilisant la comparaison de la valeur courante mémorisée du deuxième compteur d'écriture avec la valeur courante du deuxième compteur de lecture.
En pratique, le deuxième compteur de lecture et le deuxième compteur d'écriture ont avantageusement une taille binaire identique égale à la profondeur de la deuxième mémoire. On associe alors, selon un mode de mise en oeuvre du procédé, à chaque deuxième compteur, un bit de dépassement changeant de valeur à chaque fois que le deuxième compteur correspondant revient à sa valeur initiale. Et, à chaque fois qu'on stocke dans la deuxième mémoire une instruction modifiant la valeur d'une indication de garde, on mémorise également la valeur courante du bit de dépassement du deuxième compteur d'écriture. Et, afin de tenir compte du fait que le pointeur de lecture et le pointeur d'écriture de la deuxième mémoire peuvent se situer dans deux fenêtres"circulaires" différentes, la détermination du caractère toujours présent de l'instruction modificatrice dans la deuxième mémoire prend également en compte le résultat de la comparaison de la valeur courante du bit de dépassement du deuxième compteur de lecture avec ladite valeur mémorisée du bit de dépassement du deuxième compteur d'écriture.
En ce qui concerne les instructions de transmission, selon un mode de mise en oeuvre du procédé selon l'invention, à chaque fois qu'on stocke une instruction de transmission dans la troisième mémoire et que l'on ne stocke pas simultanément une autre instruction dans la deuxième mémoire, on stocke simultanément dans la deuxième mémoire une
<Desc/Clms Page number 10>
instruction non-opérative (instruction NOP) de façon à ne pas désynchroniser les mécanismes. Par ailleurs, à chaque stockage d'une instruction de transmission, on associe à ladite instruction de transmission une deuxième"étiquette"comportant la valeur courante du deuxième compteur d'écriture qui a été mémorisée lorsque la dernière instruction modifiant l'indication de garde associée à ladite instruction de transmission a été stockée dans la deuxième mémoire. Le critère d'extraction de cette instruction de transmission ayant atteint la tête de la troisième mémoire, prend alors en compte le résultat de la comparaison entre ladite valeur courante mémorisée associée à cette instruction de transmission (contenue dans la deuxième étiquette), et la valeur courante du deuxième compteur de lecture.
En d'autres termes, le principe de base est ici de comparer la valeur courante du deuxième compteur de lecture avec la valeur courante du deuxième compteur d'écriture qui a été mémorisée lorsque la dernière instruction modifiant l'indication de garde associée à cette instruction de transmission a été stockée dans la deuxième mémoire. Et, le principe de base consiste à autoriser l'extraction de l'instruction de transmission ayant atteint la tête de la mémoire lorsque la valeur courante du deuxième compteur de lecture est supérieure à la valeur courante mémorisée contenue dans l'étiquette qui a été attachée à cette instruction de transmission.
Cependant, là encore, il convient de prendre en compte notamment le cas où une instruction modificatrice est écrite alors que le deuxième compteur d'écriture est dans une fenêtre circulaire donnée et que le deuxième compteur de lecture est toujours positionné dans la fenêtre circulaire précédente.
Aussi, pour résoudre de tels cas particuliers, selon un mode de mise en oeuvre du procédé selon l'invention, à chaque fois qu'on stocke une instruction de transmission dans la troisième mémoire, on lui associe également dans sa deuxième étiquette, la valeur courante du bit de dépassement du deuxième compteur d'écriture qui a été mémorisée lorsque la dernière instruction modifiant l'indication de garde associée à ladite instruction de transmission a été stockée dans la deuxième mémoire. Et, le critère d'extraction prend alors également en compte le
<Desc/Clms Page number 11>
résultat de la comparaison entre cette valeur courante mémorisée du bit de dépassement du deuxième compteur d'écriture, contenue dans la deuxième étiquette attachée à cette instruction de transmission, et la valeur courante du bit de dépassement du deuxième compteur de lecture.
L'invention a également pour objet un processeur à architecture découplée, comprenant un coeur contenant plusieurs unités de traitement, respectivement associées à des moyens de mémoire du type FIFO pour stocker séquentiellement les instructions respectives qui sont destinées aux unités correspondantes. Le coeur de processeur comporte par ailleurs une unité centrale apte en réponse à une instruction de chargement dans un registre d'une donnée mémorisée, à délivrer au moyen de mémoire d'une première unité de traiement, une instruction de chargement dans ledit registre, et à délivrer au moyen de mémoire d'une deuxième unité de traitement une instruction destinée à élaborer ladite donnée mémorisée.
L'instruction de chargement n'est exécutée que lorsque ladite donnée mémorisée a été délivrée par ladite deuxième unité de traitement.
Selon une caractéristique générale de l'invention, le moyen de mémoire de la première unité comporte une première mémoire de type FIFO, et une deuxième mémoire de type FIFO distincte de la première.
Le processeur comporte par ailleurs : - des moyens d'aiguillage ("dispatcher"en langue anglaise) aptes à stocker chaque instruction de chargement dans la première mémoire et certaines au moins des autres instructions opératives destinées à la première unité de traitement dans la deuxième mémoire, et - des premiers moyens de commande aptes . à extraire de la deuxième mémoire une instruction opérative impliquant au moins un registre et ayant atteint la tête de cette deuxième mémoire si aucune instruction de chargement temporellement plus ancienne et destinée à modifier la valeur du ou des registres associés à cette instruction opérative, n'est présente dans la première mémoire, et . en présence d'une telle instruction modificatrice de chargement temporellement plus ancienne, à extraire l'instruction opérative de la deuxième mémoire seulement après que l'instruction modificatrice de chargement a été extraite de la première mémoire.
Selon un mode de réalisation de l'invention, les premiers moyens
<Desc/Clms Page number 12>
de commande comportent : - un premier compteur de lecture incrémenté à chaque fois qu'une instruction est extraite de la première mémoire, - un premier compteur d'écriture incrémenté à chaque fois qu'une instruction est stockée dans la première mémoire, - un ensemble de premiers registres élémentaires respectivement associés à l'ensemble des registres capables d'être chargés par des données mémorisées, - un premier bloc de commande apte, à chaque fois qu'une instruction de chargement dans un registre est stockée dans la première mémoire, à stocker la valeur courante du premier compteur d'écriture dans un champ principal du premier registre élémentaire associé à ce registre, - un deuxième bloc de commande apte à déterminer le caractère toujours présent de cette instruction de chargement dans la première mémoire, ce deuxième bloc de commande comportant des premiers moyens de comparaison aptes à comparer le contenu dudit champ principal du premier registre élémentaire, avec la valeur courante du premier compteur de lecture.
Selon un mode de réalisation de l'invention, le premier compteur d'écriture et le premier compteur de lecture ont une taille binaire identique égale à la profondeur de la première mémoire. A chaque premier compteur, est associé un bit de dépassement changeant de valeur à chaque fois que le premier compteur correspondant revient à sa valeur initiale.
Chaque premier registre élémentaire comporte en outre un champ auxiliaire à un bit. Le premier bloc de commande est alors apte, à chaque fois qu'une instruction de chargement dans un registre est stockée dans la première mémoire, à stocker également la valeur courante du bit de dépassement du premier compteur d'écriture dans le champ auxiliaire du premier registre élémentaire correspondant. Le deuxième bloc de commande comporte alors des premiers moyens de comparaison auxiliaires aptes à comparer la valeur courante du bit de dépassement du premier compteur de lecture avec le contenu du champ auxiliaire.
Ces premiers moyens de comparaison auxiliaires comportent par exemple une porte logique NON OU EXCLUSIF (XNOR en langue anglaise).
<Desc/Clms Page number 13>
Selon un mode de réalisation de l'invention, chaque étage de la deuxième mémoire comporte un champ utile pour le stockage d'une instruction opérative, et un premier champ supplémentaire. (Ce premier champ supplémentaire va permettre de stocker une partie de la première étiquette attachée à l'instruction opérative, typiquement la valeur mémorisée du premier compteur d'écriture).
Les premiers moyens de commande comportent alors : - un troisième bloc de commande apte, à chaque fois qu'une instruction opérative impliquant au moins un registre est stockée dans le champ utile de l'étage d'entrée de la deuxième mémoire, à sélectionner parmi tous les premiers registres élémentaires associés à tous les registres impliqués dans ladite instruction opérative, celui correspondant à la dernière (la plus jeune) instruction de chargement modifiant l'un au moins de ces registres, et à transférer le contenu du champ principal du premier registre élémentaire sélectionné, dans le premier champ supplémentaire de l'étage d'entrée de la deuxième mémoire, et - un quatrième bloc de commande apte à élaborer le critère d'extraction de cette instruction opérative ayant atteint l'étage de tête de la deuxième mémoire, ce quatrième bloc de commande comportant des premiers moyens de comparaison aptes à comparer le contenu du premier champ supplémentaire de l'étage de tête avec la valeur courante du premier compteur de lecture.
Selon un mode de réalisation de l'invention, chaque étage de la deuxième mémoire comporte en outre un deuxième champ supplémentaire. Ce deuxième champ supplémentaire, par exemple un bit supplémentaire, va permettre de stocker une autre partie de la première étiquette attachée à l'instruction opérative, typiquement la valeur mémorisée du bit de dépassement du premier compteur d'écriture. Le troisième bloc de commande est alors apte, à chaque fois qu'une instruction opérative est stockée dans le champ utile de l'étage d'entrée de la deuxième mémoire, à transférer le contenu du champ auxiliaire du premier registre élémentaire sélectionné, dans le deuxième champ supplémentaire de l'étage d'entrée de la deuxième mémoire. Le quatrième bloc de commande comporte alors des premiers moyens de comparaison supplémentaires aptes à comparer le contenu du deuxième champ
<Desc/Clms Page number 14>
supplémentaire avec la valeur courante du bit de dépassement du premier compteur de lecture.
Là encore, ces moyens de comparaison supplémentaires peuvent comporter une porte logique NON OU EXCLUSIF (XNOR).
Selon un mode de réalisation de l'invention, plus particulièrement adapté à la gestion des instructions gardées, le moyen de mémoire de la première unité comporte une troisième mémoire de type FIFO, distincte de la première et de la deuxième mémoires, et une quatrième mémoire de type FIFO, distincte des trois premières.
La première unité de traitement contient un registre d'indications de garde.
L'unité centrale est alors apte : - à délivrer une instruction gardée au moyen de mémoire d'une autre unité de traitement différente de la première, ou bien une instruction de chargement gardée à la première unité de traitement, et - à délivrer au moyen de mémoire de la première unité de traitement, une instruction de transmission destinée à faire transmettre à ladite autre unité ou à ladite quatrième mémoire, respectivement, la valeur de l'indication de garde associée à ladite instruction gardée ou à ladite instruction de chargement gardée, respectivement.
Par ailleurs, les moyens d'aiguillage sont aptes à stocker chaque instruction de transmission dans la troisième mémoire.
Et, le processeur comporte en outre des deuxièmes moyens de commande aptes : - à extraire de la troisième mémoire une instruction de transmission ayant atteint la tête de cette troisième mémoire si aucune instruction modificatrice temporellement plus ancienne et destinée à modifier la valeur de l'indication de garde associée à cette instruction de transmission, n'est présente dans la deuxième mémoire, et en présence d'une telle instruction modificatrice temporellement plus ancienne, à extraire l'instruction de transmission de la troisième mémoire seulement après que l'instruction modificatrice a été extraite de la deuxième mémoire.
Selon un mode de réalisation de l'invention, les deuxièmes moyens de commande comportent :
<Desc/Clms Page number 15>
- un deuxième compteur de lecture incrémenté à chaque fois qu'une instruction est extraite de la deuxième mémoire, - un deuxième compteur d'écriture incrémenté à chaque fois qu'une instruction est stockée dans la deuxième mémoire, un ensemble de deuxièmes registres élémentaires respectivement associés à l'ensemble des indications de garde, - un cinquième bloc de commande apte, à chaque fois qu'une instruction modifiant la valeur d'une indication de garde est stockée dans la deuxième mémoire, à stocker la valeur courante du deuxième compteur d'écriture dans un champ principal du deuxième registre élémentaire associé à cette indication de garde, - un sixième bloc de commande apte à déterminer le caractère toujours présent de cette instruction modificatrice dans la deuxième mémoire, ce sixième bloc de commande comportant des deuxièmes moyens de comparaison aptes à comparer le contenu dudit champ principal du deuxième registre élémentaire, avec la valeur courante du deuxième compteur de lecture.
Selon un mode de réalisation de l'invention, le deuxième compteur d'écriture et le deuxième compteur de lecture ont une taille binaire identique égale à la profondeur de la deuxième mémoire. A chaque deuxième compteur, est associé un bit de dépassement changeant de valeur à chaque fois que le deuxième compteur correspondant revient à sa valeur initiale. Chaque deuxième registre élémentaire comporte en outre un champ auxiliaire à un bit.
Le cinquième bloc de commande est alors apte, à chaque fois qu'une instruction modifiant la valeur d'une indication de garde est stockée dans la deuxième mémoire, à stocker également la valeur courante du bit de dépassement du deuxième compteur d'écriture dans le champ auxiliaire du deuxième registre élémentaire correspondant.
Le sixième bloc de commande comporte alors des deuxièmes moyens de comparaison auxiliaires aptes à comparer la valeur courante du bit de dépassement du deuxième compteur de lecture avec le contenu du champ auxiliaire. Ces deuxièmes moyens de comparaison auxiliaires comportent par exemple une porte logique NON OU EXCLUSIF (XNOR en langue anglaise).
<Desc/Clms Page number 16>
Selon un mode de réalisation de l'invention, chaque étage de la troisième mémoire comporte un champ utile pour le stockage d'une instruction de transmission, et un premier champ supplémentaire. (Ce premier champ supplémentaire va permettre de stocker une partie de la deuxième étiquette attachée à l'instruction de transmission, typiquement la valeur mémorisée du deuxième compteur d'écriture).
Les deuxièmes moyens de commande comportent alors : - un septième bloc de commande apte, à chaque fois qu'une instruction de transmission est stockée dans le champ utile de l'étage d'entrée de la troisième mémoire, à transférer le contenu du champ principal du deuxième registre élémentaire associé à l'indication de garde correspondante, dans le premier champ supplémentaire de l'étage d'entrée de la troisième mémoire, et - un huitième bloc de commande apte à élaborer le critère d'extraction de cette instruction de transmission ayant atteint l'étage de tête de la troisième mémoire, ce huitième bloc de commande comportant des deuxièmes moyens de comparaison aptes à comparer le contenu du premier champ supplémentaire de l'étage de tête avec la valeur courante du deuxième compteur de lecture.
Selon un mode de réalisation de l'invention, chaque étage de la troisième mémoire comporte en outre un deuxième champ supplémentaire. Ce deuxième champ supplémentaire, par exemple un bit supplémentaire, va permettre de stocker une autre partie de la deuxième étiquette attachée à l'instruction de transmission, typiquement la valeur mémorisée du bit de dépassement du deuxième compteur d'écriture. Le septième bloc de commande est alors apte, à chaque fois qu'une instruction de transmission est stockée dans le champ utile de l'étage d'entrée de la troisième mémoire, à transférer le contenu du champ auxiliaire du deuxième registre élémentaire associé à l'indication de garde correspondante, dans le deuxième champ supplémentaire de l'étage d'entrée de la troisième mémoire. Le huitième bloc de commande comporte alors des deuxièmes moyens de comparaison supplémentaires aptes à comparer le contenu du deuxième champ supplémentaire avec la valeur courante du bit de dépassement du deuxième compteur de lecture.
Là encore, ces deuxièmes moyens de comparaison
<Desc/Clms Page number 17>
supplémentaires peuvent comporter une porte logique NON OU EXCLUSIF (XNOR).
D'autres avantages et caractéristiques de l'invention apparaîtront à l'examen de la description détaillée de modes de mise en oeuvre et de réalisation, nullement limitatifs, et des dessins annexés, sur lesquels :
Figure img00170001

1 1 - la figure 1 illustre schématiquement l'architecture générale d'un processeur selon l'invention ; - la figure 2 illustre plus en détail mais toujours schématiquement le coeur du processeur de la figure 1 ; - la figure 3 illustre plus en détail mais toujours schématiquement une architecture permettant une gestion des instructions de chargement dans un registre de données mémorisées, selon l'invention ; - les figures 4 à 7 illustrent schématiquement des organigrammes relatifs à des modes de mise en oeuvre du procédé de gestion d'instructions de chargement de données mémorisées, selon l'invention ; - la figure 8 illustre plus en détail mais toujours schématiquement un mode de réalisation permettant en outre une gestion des instructions gardées, selon l'invention ; - les figures 9 à 13 illustrent schématiquement des organigrammes relatifs à des modes de mise en oeuvre de la gestion d'instructions gardées, selon l'invention ; et - la figure 14 illustre toujours schématiquement et plus spécifiquement les quatre mémoires FIFO présentes dans l'unité de traitement arithmétique et logique, ainsi que leur interdépendance temporelle, en association avec le registre des indications de garde.
Sur la figure 1, la référence PROC désigne un processeur, par exemple un processeur de traitement numérique du signal.
Le processeur PROC comporte une mémoire-programme PM contenant les instructions de programme. Cette mémoire-programme est adressée par un contrôleur de mémoire PMC qui coopère avec le coeur CR du processeur.
Le coeur CR du processeur dialogue également avec un contrôleur de mémoire DMC qui contrôle l'accès à une mémoire de
<Desc/Clms Page number 18>
données DMM, par exemple deux bancs de mémoire SRAM.
Sur la figure 2, on voit que le coeur CR du processeur comporte une unité centrale CU et plusieurs unités de traitement, ici trois unités de traitement distinctes DU, AU et GU.
Dans le mode de réalisation illustré sur la figure 2, on ne prend pas en compte le fait que les instructions puissent être gardées. On ne décrira donc, en référence aux figures 2 à 7, uniquement que la gestion des instructions de chargement dans un registre des données mémorisées.
L'unité de contrôle CU est l'unité maîtresse du système. En général, elle gère toutes les activités de commande. Plus particulièrement, elle délivre au contrôleur de mémoire PMC des adresses programme, et répartit les instructions correspondantes vers les différentes unités de traitement. Plus précisément, l'unité centrale CU comporte une interface PFAL avec le contrôleur de mémoire PMC, qui effectue notamment un formatage des instructions en instructions prêtes à être décodées. Les instructions sont décodées ensuite dans un décodeur DCD qui transforme chaque instruction machine en une ou plusieurs micro-instructions qui pourront être traitées par les différentes unités de traitement. Dans la suite du texte, à des fins de simplification, on désigne sous le vocable
Figure img00180001

"d'instruction"une micro-instruction.
Enfin, un moyen d'aiguillage DISP ("Dispatcher"en langue anglaise) envoie les instructions générées par le décodeur aux unités de traitement auxquelles sont destinées ces instructions.
Les unités de traitement du coeur de processeur comportent ici une unité arithmétique et logique DU qui exécute la plupart des opérations arithmétiques.
L'unité DU contient tous les registres Rx dans lesquels on souhaite stocker (charger) des données mémorisées. Ces registres Rx peuvent être au nombre de 16, par exemple.
Il est par ailleurs prévu une unité d'adressage AU qui effectue les calculs d'adresses effectives nécessaires pour adresser les opérandes dans la mémoire. Cette unité AU contient tous les registres de pointage Px nécessaires à cette tâche.
Une troisième unité de traitement est une unité de branchement GU qui effectue tous les calculs de branchement d'adresse et les transfère
<Desc/Clms Page number 19>
à l'unité centrale CU.
L'unité de traitement DU comporte un moyen de mémoire du type FIFO composé, comme on le verra plus en détail ci-après, d'une première mémoire RLDQ destinée à stocker des instructions de chargement et une deuxième mémoire DIDQ destinée à stocker toutes les autres instructions destinées à cette unité DU, en particulier des instructions opératives DUOPx impliquant au moins un registre Rx.
Outre ces unités DU, AU et GU, il est prévu une interface mémoire DMI qui contient notamment une autre mémoire du type FIFO, LDQ, destinée à recevoir et à stocker temporairement les données contenues dans les bancs de mémoire SRAM.
Par ailleurs, au même titre que l'unité DU comporte un moyen de mémoire du type FIFO, chaque autre unité de traitement, à savoir l'unité AU et l'unité GU, contient également un moyen de mémoire du type FIFO, référencé AIDQ, et destiné à stocker les instructions destinées à ces unités de traitement.
On se réfère maintenant plus particulièrement à la figure 3, pour décrire le mécanisme selon l'invention de gestion des instructions de chargement de donnée mémorisée dans un registre.
A titre d'exemple, une instruction de chargement dans un registre Rx d'une donnée mémorisée s'écrit :
LD Rx, [Py]
Cette notation représente une instruction signifiant que l'on doit charger (stocker) dans le registre Rx la donnée mémorisée dans la mémoire DMM à l'adresse fournie par le contenu du registre de pointage Py.
L'unité centrale qui reçoit une telle instruction la scinde en une instruction d'élaboration de la donnée mémorisée, destinée à l'unité d'adressage AU, et en une instruction de chargement destinée à l'unité DU.
L'instruction d'élaboration va permettre à l'unité AU, via le contrôleur de mémoire DMC, de lire la donnée mémorisée à l'adresse fournie par le pointeur Py et de transférer cette donnée mémorisée à la mémoire LDQ.
L'instruction de chargement LDRx, qui s'écrit Rx=LDQ, va permettre à l'unité DU de charger (stocker) dans le registre Rx le contenu
<Desc/Clms Page number 20>
de la mémoire LDQ.
Une instruction opérative DUOPx impliquant un registre Rx est par exemple une instruction du type Rx=Rx+l, consistant dans ce cas à incrémenter d'une unité le contenu du registre Rx.
Une instruction opérative peut impliquer plus d'un registre, par exemple 4 registres. Une telle instruction opérative est alors par exemple RO = Ri. R2 + R3.
Dans la suite du texte, la référence DUOpx désigne une instruction opérative, et x désigne le numéro du registre Rx impliqué dans cette instruction opérative.
Comme indiqué ci-avant, le moyen de mémoire associé à l'unité DU comporte une première mémoire du type FIFO, référencée RLDQ, et une deuxième mémoire du type FIFO, référencée DIDQ. La deuxième mémoire DIDQ est destinée à stocker toutes les instructions opératives INST destinées à l'unité DU, et notamment des instructions DUOpx.
Cette deuxième mémoire DIDQ comporte plusieurs étages (ici quatre), référencés LETG1-LETG4. Chaque étage LETGi comporte un champ utile LCHUi pour le stockage d'une instruction INST. L'écriture et la lecture dans la deuxième mémoire DIDQ sont gérées par un pointeur d'écriture PE2 et un pointeur de lecture PL2. Une instruction INST qui aurait été stockée dans l'étage LETG 1, va alors se propager séquentiellement depuis l'étage d'entrée LETG 1 de la mémoire jusqu'à l'étage de sortie LETG4, ou étage de tête, de la mémoire DIDQ. Bien entendu si à un instant donné, la FIFO est partiellement remplie ou vide, une instruction pourra être stockée directement au premier étage disponible, par exemple LETG2, ou LETG3 ou bien LETG4, comme cela est bien connu de l'homme du métier. Ainsi au sens de la présente invention l'étage d'entrée n'est donc pas nécéssairement l'étage LETGI.
Chaque instruction de chargement LDRx impliquant un registre Rx est stockée dans la première mémoire RLDQ. L'écriture et la lecture dans cette première mémoire RLDQ sont gérées également de façon classique par un pointeur d'écriture PE1 et un pointeur de lecture PLI. Les deux mémoires RLDQ et DIDQ ont, dans l'exemple décrit ici, la même profondeur (taille) égale à quatre. Il convient également de noter que les pointeurs PEI et PLI associés à la mémoire RLDQ sont décorrélés (c'est-
<Desc/Clms Page number 21>
à-dire commandés de façon indépendante) par rapport aux pointeurs PE2 et PL2 associés à la mémoire DIDQ.
Outre ces deux mémoires de type FIFO, le processeur comporte des premiers moyens de commande MCTL1, par exemple incorporés au sein de l'unité DU. Ces premiers moyens de commande vont permettre, comme on va le voir plus en détail ci-après, de délivrer dans certains cas les instructions opératives DUOpx beaucoup plus rapidement aux étages d'exécution pipelinés de l'unité DU.
Plus précisément, ces premiers moyens de commande MCTL1 vont extraire de la mémoire DIDQ une instruction opérative DUOpx ayant atteinte la tête LETG4 de cette mémoire DIDQ, si aucune instruction de chargement LDRx temporellement plus ancienne destinée à modifier la valeur du registre Rx associé à cette instruction opérative DUOpx, n'est présente dans la mémoire RLDQ.
Et, ces premiers moyens de commande MCTL1 vont, en présence d'une telle instruction de chargement LDRx temporellement plus ancienne stockée dans la première mémoire RLDQ, extraire l'instruction opérative DUOpx dès que l'instruction de chargement LDRx a été extraite de la mémoire RLDQ.
Dans un mode de réalisation, tel que celui illustré sur la figure 3, les premiers moyens de commande MCTL1 comportent un premier compteur de lecture RDCTR1, circulaire, incrémenté à chaque fois qu'une instruction, quelle qu'elle soit, est extraite de la deuxième mémoire DIDQ.
Les moyens MCTL1 comportent par ailleurs un premier compteur d'écriture WRCTR1, circulaire, incrémenté à chaque fois qu'une instruction, quelle qu'elle soit, est stockée dans la deuxième mémoire DIDQ.
Dans l'exemple décrit ici, les deux compteurs ont une taille identique. Cette taille identique est un nombre de bits nécessaire à coder en binaire la profondeur de la deuxième mémoire DIDQ. Dans l'exemple illustré, puisque la mémoire DIDQ a une profondeur de quatre, les compteurs sont des compteurs sur deux bits, c'est-à-dire que la valeur
Figure img00210001

courante WRVL1 du premier compteur d'écriture WRCTR1 et la valeur courante RDVL1 du premier compteur de lecture RDCTR1 sont des mots
<Desc/Clms Page number 22>
de deux bits. Bien entendu la profondeur de la FIFO peut être plus importante.
Par ailleurs, à chaque premier compteur est associé un bit de
Figure img00220001

dépassement (WROVFL1 pour le premier compteur d'écriture et RDOVFL1 pour le compteur de lecture). Ce bit de dépassement change de valeur à chaque fois que le premier compteur correspondant revient à sa valeur initiale. En d'autres termes, au rythme des fenêtres circulaires successives de comptage, le bit de dépassement prend successivement les valeurs 0 et 1.
Outre le premier compteur d'écriture et le premier compteur de lecture, les premiers moyens de commande MCTL1 comportent un ensemble de premiers registres élémentaires RTO-RT15, respectivement associés à l'ensemble des registres RO-R15. Ainsi, le registre élémentaire RTx est associé au registre Rx portant le numéro x.
Chaque registre élémentaire RTx comporte un champ principal LCHx, ainsi qu'un premier champ auxiliaire LBAx et un deuxième champ auxiliaire LBBx. On reviendra plus en détail sur la signification et la fonction de ces champs auxiliaires qui, dans l'exemple décrit ici, sont des champs à un bit.
Les premiers moyens de commande MCTL1 comportent, par ailleurs, quatre blocs de commande MCOO-MC13 dont on va maintenant décrire plus en détail la fonctionnalité en se référant aux figures 4 et suivantes.
Le premier bloc de commande MCOO est apte, à chaque fois qu'une instruction de chargement LDRx concernant le registre Rx, est stockée dans la première mémoire RLDQ (étape 400, figure 4), à stocker la valeur courante WRVL1 du premier compteur d'écriture WRCTR1 dans le champ principal LCHx du premier registre élémentaire RTx associé au registre Rx. Par ailleurs, le bit LBBx (deuxième champ auxiliaire) du premier registre élémentaire RTx, initialement à 0, prend la valeur 1 pour indiquer qu'une instruction de chargement LDRx a été effectivement stockée dans la mémoire RLDQ (étape 410).
Enfin, la valeur courante du bit de dépassement WROVFL1 du premier compteur d'écriture est stockée dans le premier champ auxiliaire
Figure img00220002

(un bit) LBAx du premier registre élémentaire RTx.
<Desc/Clms Page number 23>
En fait, la valeur stockée dans le champ principal LCHx du premier registre élémentaire RTx, dont la taille en bit est égale à la profondeur de la première mémoire (ici deux bits), représente la position "symbolique"de la dernière instruction de chargement LDRx écrite dans la mémoire RLDQ. Le premier champ auxiliaire LBAx, destiné à recevoir la valeur courante du bit de dépassement du premier compteur d'écriture, permet de prendre en compte et de gérer les positions éventuelles respectives des pointeurs dans des fenêtres circulaires de comptage différentes.
Dans l'étape 420, on va maintenant déterminer si l'instruction de chargement LDRx est toujours présente dans la mémoire RLDQ, ou bien si elle a quitté cette mémoire. Ceci est effectué par le deuxième bloc de commande MC 11 et va maintenant être décrit plus en détail en se référant plus particulièrement à la figure 5.
Basiquement, le deuxième bloc de commande MC11 comporte des premiers moyens de comparaison MC100 qui vont comparer le contenu du champ principal LCHx du premier registre élémentaire RTx
Figure img00230001

avec la valeur courante RDVL1 du premier compteur de lecture. Cette comparaison va permettre de déterminer si l'instruction LDRx est toujours présente ou a quitté la mémoire RLDQ.
Ceci étant, afin de prendre en compte les effets des fenêtres circulaires de comptage, il est prévu que le deuxième bloc de commande MC 11 comporte également des premiers moyens de comparaison auxiliaires, formés ici d'une première porte logique NON OU EXCLUSIF (XNOR), référencée PLO 10. Cette porte logique est destinée à élaborer un premier signal logique SW10 à partir du contenu du premier champ auxiliaire LBAx et de la valeur du bit de dépassement RDOVFL1 du premier compteur de lecture.
Figure img00230002
En d'autres termes, ce signal logique SW10 indique si le pointeur de lecture PL2 est dans la même fenêtre circulaire que la position de la dernière instruction LDRx affectant le registre Rx.
On teste alors, dans l'étape 4200, la valeur du premier signal logique Ski 0. Si ce signal logique est à 0, on teste, dans l'étape 4220, si la valeur du mot contenu dans le champ principal LCHx est strictement
Figure img00230003

supérieure à la valeur courante RDVL1 du premier compteur de lecture. Si
<Desc/Clms Page number 24>
tel est le cas, alors cela signifie que l'instruction LDRx a quitté la mémoire RLDQ (étape 4230) et on met alors le bit LBBx à 0 (étape 430, figure 4).
Si, par contre, la valeur du mot contenu dans le champ principal LCHx n'est pas strictement supérieure à la valeur courante RDVL1 du premier compteur de lecture, alors cela signifie que l'instruction de chargement LDRx est toujours présente dans la mémoire RLDQ (étape 4240). Dans ce cas, le bit LBBx est maintenu à 1.
Si, par contre, dans l'étape 4200, le signal logique SW10 est à 1, les premiers moyens de comparaison MC100 vont tester si la valeur courante du premier compteur de lecture RDVL1 est strictement supérieure au mot contenu dans le champ principal LCHx du premier registre élémentaire RTx (étape 4210).
Si tel est le cas, cela signifie que l'instruction de chargement LDRx a quitté la mémoire RLDQ (étape 4230). Dans ce cas, le bit LBBx est mis à 0 (étape 430, figure 4).
Dans le cas contraire, cela signifie (étape 4240) que l'instruction de chargement LDRx est toujours présente dans la mémoire RLDQ.
On va maintenant décrire plus en détail, en se référant plus particulièrement aux figures 6 et 7, les traitements effectués lorsqu'une instruction opérative DUOPx est stockée dans le champ utile LCHU1 de l'étage d'entrée LETG1 de la mémoire DIDQ, ainsi que l'élaboration de son critère d'extraction, lorsque cette instruction opérative DUOPx a atteinte la tête de la mémoire DIDQ, c'est-à-dire lorsqu'elle est présente dans le champ utile LCHU4 de l'étage de sortie LETG4.
A des fins de simplification, on suppose dans un premier temps que l'instruction opérative DUOPx n'implique qu'un seul registre, à savoir le registre Rx.
Afin de ne pas perturber le bon synchronisme temporel des traitements, à chaque fois qu'une instruction opérative DUOPx est stockée dans la mémoire DIDQ, et si simultanément une instruction de chargement n'est pas stockée dans la mémoire RLDQ, on stocke également dans la mémoire RLDQ une instruction non-opérative NOP. Comme cela est connu de l'homme du métier, une instruction NOP ne modifie pas le contenu des registres architecturaux du coeur de processeur.
Par ailleurs, à chaque fois qu'une instruction opérative DUOPx
<Desc/Clms Page number 25>
est stockée dans la mémoire DIDQ, par exemple dans le champ utile LCHU1 de l'étage LETG1, on lui associe une étiquette qui correspond au contenu du registre élémentaire RTx correspondant.
Et, cette étiquette va continuellement être attachée à l'instruction opérative DUOPx dans la mémoire DIDQ.
En pratique (figure 3), l'étiquette associée à une instruction opérative DUOPx est formée dans chaque étage de la mémoire DIDQ par - un premier champ supplémentaire LDtag, - un deuxième champ supplémentaire (1 bit) AuxLD, et - un troisième champ supplémentaire (1 bit également) ActLD.
Lorsqu'une instruction opérative DUOPx est stockée dans l'étage de tête de la mémoire DIDQ (étape 600, figure 6), le troisième bloc de commande MC12 transfère (étape 61, figure 6) - le contenu du champ principal LCHx dans le premier champ supplémentaire LDtag, - le contenu du premier champ auxiliaire LBAx dans le deuxième champ supplémentaire AuxLD, et, - le contenu du deuxième champ auxiliaire LBBx dans le troisième champ supplémentaire ActLD.
Et, le contenu de cette étiquette va rester inchangé lors de la propagation de l'instruction DUOPx à laquelle elle est rattachée, jusqu'à ce que cette instruction atteigne la tête de la mémoire DIDQ.
A ce moment-là, le quatrième bloc de commande MC 13 va tester (étape 620) la présence ou l'absence d'une instruction de chargement LDRx temporellement plus ancienne dans la mémoire RLDQ.
Si une instruction de chargement LDRx est présente, alors le troisième bloc de commande MC12 va attendre, pour extraire l'instruction opérative de la mémoire DIDQ, que l'instruction de chargement LDRx ait été extraite de la mémoire RLDQ (étape 640).
Si, par contre, aucune instruction LDRx n'est détectée dans la mémoire RLDQ, le troisième bloc de commande MC 12 va extraire immédiatement l'instruction opérative DUOPx de la tête de la mémoire DIDQ (étape 630).
Et, c'est le quatrième bloc de commande MC 13 qui va élaborer le critère d'extraction de cette instruction opérative DUOPx ayant atteinte la
<Desc/Clms Page number 26>
tête de la deuxième mémoire.
Pour déterminer si une instruction de chargement LDRx est présente dans la mémoire RLDQ, le bloc MC13 va tout d'abord tester la valeur du bit ActLD de l'étiquette attachée à l'instruction opérative DUOPx (étape 6200, figure 7).
Si ce bit ActLD est égal à 0, alors cela signifie qu'aucune instruction LDRx temporellement plus ancienne que l'instruction DUOPx n'est présente dans la mémoire RLDQ (étape 6210). Dans ce cas, l'instruction opérative DUOPx peut être immédiatement extraite de la mémoire DIDQ (étape 630, figure 6).
Si, par contre, le bit ActLD est à 1, alors il convient basiquement de comparer le contenu du premier champ supplémentaire LDtag avec la valeur courante RDVL1 du premier compteur de lecture. C'est le rôle des deuxièmes moyens de comparaison MC300.
Et, basiquement, une absence d'instruction LDRx se traduira par une valeur RDVL 1 strictement supérieure au premier champ supplémentaire LDtag.
Ceci étant, là encore, il convient de prendre en compte les effets des fenêtres circulaires de comptage.
C'est la raison pour laquelle il est prévu que le bloc de commande MC 13 comporte des premiers moyens de comparaison supplémentaires, formés ici d'une deuxième porte logique NON OU EXCLUSIF,
Figure img00260001

référencée PLO30, et apte à comparer le bit AuxLD avec le bit de dépassement RDOVFL1 du premier compteur de lecture. Le résultat de cette comparaison fournit un deuxième signal logique SW30. Ce signal SW30 indique si le pointeur de lecture PLI de la première mémoire RLDQ est dans la même fenêtre circulaire que la position de la dernière instruction de chargement LDRx, ayant potentiellement un effet sur l'instruction opérative DUOPx.
Si le signal SW30 est à 1, alors l'instruction opérative DUOPx pourra être transmise si la valeur RDVL1 est supérieure à LDtag (étape 6230, figure 7).
Dans le cas contraire, cela signifie qu'une instruction LDRx est toujours présente dans la première mémoire RDLQ (étape 6250). Et, il convient d'attendre avant d'extraire l'instruction opérative DUOPx de la
<Desc/Clms Page number 27>
tête de la mémoire DIDQ.
Si le signal SW30 est à 0, alors on pourra extraire l'instruction opérative DUOPx si la valeur du mot LDtag est strictement supérieure à la valeur du premier compteur de lecture RDVL1 (étape 6240).
Dans le cas contraire, il conviendra d'attendre (étape 6250).
Matériellement, les différents blocs de commande MC 10-MC 13 peuvent être réalisés sous la forme d'un circuit intégré en utilisant des outils de synthèse logique.
Dans le cas où une instruction opérative DUOpxy implique plus d'un registre, par exemple 2 registres Rx et Ry, le troisième bloc de commande Mol 2 va, lorsque ladite instruction opérative est stockée dans la deuxième mémoire DIDQ, sélectionner parmi tous les premiers registres élémentaires RTx, RTy associés à tous les registres Rx, Ry impliqués dans ladite instruction opérative DUOPxy, celui correspondant à la dernière (c'est-à-dire temporellement la plus jeune) instruction de chargement modifiant l'un au moins de ces registres impliqués.
Et, c'est alors le contenu du champ principal du premier registre élémentaire sélectionné, par exemple RTx, qui va être transféré dans le premier champ supplémentaire LDTag de l'étage d'entrée de la mémoire DIDQ.
Matériellement, les différents blocs de commande MCOO-MC13 peuvent être réalisés sous la forme d'un circuit intégré en utilisant des outils de synthèse logique.
Le mode de réalisation qui vient d'être décrit permet une mise en oeuvre très simple du procédé selon l'invention. Il convient de noter également que la profondeur de la mémoire RLDQ peut être différente de celle de la mémoire DIDQ.
Par ailleurs tout ce qui vient d'être décrit pour un registre Rx, est effectué en réalité en parallèle simultanément pour tous les registres.
Dans le mode de réalisation illustré sur la figure 8, on suppose maintenant que le fonctionnement du processeur incorpore le principe des instructions gardées. Les instructions gardées peuvent être destinées à des unités de traitement différentes de l'unité DU, par exemple l'unité AU ou l'unité GU. Elles peuvent être également destinées à l'unité de traitement DU. Et, parmi les instructions gardées destinées à l'unité de traitement
<Desc/Clms Page number 28>
DU, on trouve des instructions gardées de chargement dans un registre de données mémorisées.
Le moyen de mémoire de l'unité DU comporte en outre, comme on le verra plus en détail ci-après, une troisième mémoire SNDGQ destinée à stocker des instructions de transmission et une quatrième mémoire RCGQ destinée à stocker toutes les valeurs d'indications de garde associées aux instructions de chargement gardées, et issues du registre des indications de garde GR.
L'unité DU comporte le registre des indications de garde GR. Ce registre stocke les valeurs courantes de toutes les indications de garde, qui sont par exemple au nombre de seize.
On rappelle ici qu'une instruction gardée, signifie que cette instruction est affectée d'une indication de garde, prise parmi les seize indications de garde du registre GR, et, en fonction de la valeur de cette indication de garde, l'instruction sera ou non exécutée.
On se réfère maintenant plus particulièrement à la figure 9, pour décrire un mécanisme particulièrement avantageux de gestion de ces instructions gardées, selon l'invention.
Lorsqu'une instruction gardée est délivrée au moyen de mémoire AIDQ d'une unité de traitement, par exemple l'unité AU ou l'unité GU, qui ne détient pas le registre d'indications de garde GR, cette délivrance provoque la délivrance au moyen de mémoire de l'unité de traitement DU, qui contient le registre des indications de garde, d'une instruction dite"de transmission"destinée à faire transmettre à l'unité AU ou GU la valeur de l'indication de garde associée à ladite instruction gardée qui a été délivrée à l'unité AU ou GU.
Par ailleurs, lorsqu'une instruction de chargement gardée est délivrée à l'unité DU, une instruction de transmission SNDGx destinée à faire transmettre à la quatrième mémoire REGQ la valeur de l'indication de garde associée à ladite instruction gardée, est également stockée dans la mémoire SNDGQ.
Par contre, toute autre instruction gardée, par exemple une instruction opérative gardée, délivrée à l'unité DU, est stockée dans la mémoire DIDQ et ne donne pas lieu à la délivrance d'une instruction de transmission SNDGx.
<Desc/Clms Page number 29>
Sur la figure 9, la référence SNDGx désigne une telle instruction de transmission, et x désigne le numéro de l'indication de garde Gx associée à l'instruction gardée qui a été délivrée à l'une des unités AU ou GU, ou bien associée à une instruction de chargement gardée qui peut être celle référencée LDRx (impliquant le registre Rx), ou bien référencée LDRy (impliquant un registre Ry). Dans la suite du texte, à des fins de simplification, on supposera que l'indication Gx est associée le cas échéant à l'instruction LDRx.
La troisième mémoire SNDGQ comporte plusieurs étages (ici quatre), référencés ETG 1-ETG4. Chaque étage ETGi comporte un champ utile CHUi pour le stockage d'une instruction de transmission SNDGx. L'écriture et la lecture dans la troisième mémoire SNDGQ sont gérées par un pointeur d'écriture PE3 et un pointeur de lecture PL3. Une instruction de transmission SNDGx qui aurait été stockée dans l'étage ETG1, va alors se propager séquentiellement depuis l'étage d'entrée ETG 1 de la mémoire jusqu'à l'étage de sortie ETG4, ou étage de tête, de la mémoire SNDGQ.
Bien entendu si à un instant donné, la FIFO est partiellement remplie ou vide, une instruction pourra être stockée directement au premier étage disponible, par exemple ETG2, ou ETG3 ou bien ETG4, comme cela est bien connu de l'homme du métier. Ainsi au sens de la présente invention l'étage d'entrée n'est donc pas nécéssairement l'étage ETGI.
La deuxième mémoire DIDQ est destinée à stocker toutes les autres instructions INST destinées à l'unité DU, à l'exception des instructions de chargement LDRx, et notamment les instructions dites "modificatrices", c'est-à-dire destinées à modifier la valeur d'une indication de garde stockée dans le registre des indications de garde GR.
Une instruction modificatrice destinée à modifier la valeur de l'indication de garde portant le numéro x, est référencée dans la suite du texte par GMIx.
Les deux mémoires SNDGQ et DIDQ ont, dans l'exemple décrit ici, la même profondeur (taille) égale à quatre. Il convient également de noter que les pointeurs PE3 et PL3 associés à la mémoire SNDGQ sont décorrélés (c'est-à-dire commandés de façon indépendante) par rapport aux pointeurs PE2 et PL2 associés à la mémoire DIDQ.
Le processeur comporte des deuxièmes moyens de contrôle
<Desc/Clms Page number 30>
MCTL2, par exemple incorporés au sein de l'unité DU. Ces deuxièmes moyens de contrôle vont permettre, comme on va le voir plus en détail ci- après, de délivrer les instructions de transmission SNDGx beaucoup plus rapidement aux étages d'exécution pipelinés de l'unité DU, et par conséquent au registre des indications de garde GR, de façon à permettre la délivrance de la valeur de l'indication de garde associée à l'instruction gardée qui est en attente d'exécution - dans le moyen de mémoire associé à une autre unité de traitement, par exemple l'unité GU, ou bien - dans la mémoire RLDQ.
Plus précisément, ces deuxièmes moyens de commande MCTL2 vont extraire de la mémoire SNDGQ une instruction de transmission SNDGx ayant atteinte la tête ETG4 de cette mémoire SNDGQ, si aucune instruction GMIx temporellement plus ancienne destinée à modifier la valeur de l'indication de garde Gx associée à cette instruction de transmission SNDGx, n'est présente dans la mémoire DIDQ.
Et, ces moyens de commande MCTL2 vont, en présence d'une telle instruction modificatrice GMIx temporellement plus ancienne stockée dans la deuxième mémoire DIDQ, extraire l'instruction de transmission SNDGx dès que l'instruction modificatrice GMIx a été extraite de la mémoire DIDQ.
Dans un mode de réalisation, tel que celui illustré sur la figure 9, les deuxièmes moyens de commande MCTL2 comportent un deuxième compteur de lecture RDCTR2, circulaire, incrémenté à chaque fois qu'une instruction, quelle qu'elle soit, est extraite de la deuxième mémoire DIDQ.
Les moyens MCTL2 comportent par ailleurs un deuxième compteur d'écriture WRCTR2, circulaire, incrémenté à chaque fois qu'une instruction, quelle qu'elle soit, est stockée dans la deuxième mémoire DIDQ.
Dans l'exemple décrit ici, les deux compteurs ont une taille identique. Cette taille identique est un nombre de bits nécessaire à coder en binaire la profondeur de la deuxième mémoire DIDQ. Dans l'exemple illustré, puisque la mémoire DIDQ a une profondeur de quatre, les deuxièmes compteurs sont des compteurs sur deux bits, c'est-à-dire que la
<Desc/Clms Page number 31>
valeur courante WRVL2 du deuxième compteur d'écriture WRCTR2 et la valeur courante RDVL2 du deuxième compteur de lecture RDCTR2 sont des mots de deux bits. Bien entendu la profondeur de la FIFO peut être plus importante.
Par ailleurs, à chaque deuxième compteur est associé un bit de dépassement (WROVFL2 pour le compteur d'écriture et RDOVFL2 pour le compteur de lecture). Ce bit de dépassement change de valeur à chaque fois que le compteur correspondant revient à sa valeur initiale. En d'autres termes, au rythme des fenêtres circulaires successives de comptage, le bit de dépassement prend successivement les valeurs 0 et 1.
Outre le compteur d'écriture et le compteur de lecture, les moyens de commande MCTL2 comportent un ensemble de registres élémentaires GTO-GT15, respectivement associés à l'ensemble des indications de garde GO-G15. Ainsi, le registre élémentaire GTx est associé à l'indication de garde Gx portant le numéro x.
Chaque registre élémentaire GTx comporte un champ principal CHx, ainsi qu'un premier champ auxiliaire BAx et un deuxième champ auxiliaire BBx. On reviendra plus en détail sur la signification et la fonction de ces champs auxiliaires qui, dans l'exemple décrit ici, sont des champs à un bit.
Les moyens de commande MCTL2 comportent, par ailleurs, quatre blocs de commande MCO-MC3 dont on va maintenant décrire plus en détail la fonctionnalité en se référant aux figures 10 et suivantes.
Le cinquième bloc de commande MCO est apte, à chaque fois qu'une instruction GMIx modifiant la valeur de l'indication de garde Gx, est stockée dans la deuxième mémoire DIDQ (étape 40, figure 10), à stocker la valeur courante WRVL2 du compteur d'écriture WRCTR2 dans le champ principal CHx du registre élémentaire GTx associé à l'indication de garde Gx. Par ailleurs, le bit BBx (deuxième champ auxiliaire) du registre élémentaire GTx, initialement à 0, prend la valeur 1 pour indiquer qu'une instruction modificatrice GMIx a été effectivement stockée dans la mémoire DIDQ (étape 41).
Enfin, la valeur courante du bit de dépassement WROVFL2 du compteur d'écriture est stockée dans le premier champ auxiliaire (un bit) BAx du registre élémentaire GTx.
<Desc/Clms Page number 32>
En fait, la valeur stockée dans le champ principal CHx du registre élémentaire GTx, dont la taille en bit est égale à la profondeur de la deuxième mémoire (ici deux bits), représente la position"symbolique" de la dernière instruction modificatrice GMIx écrite dans la mémoire DIDQ. Le premier champ auxiliaire BAx, destiné à recevoir la valeur courante du bit de dépassement du compteur d'écriture, permet de prendre en compte et de gérer les positions éventuelles respectives des pointeurs dans des fenêtres circulaires de comptage différentes.
Dans l'étape 42, on va maintenant déterminer si l'instruction modificatrice GMIx est toujours présente dans la mémoire DIDQ, ou bien si elle a quitté cette mémoire. Ceci est effectué par le sixième bloc de
Figure img00320001

commande MC1 et va maintenant être décrit plus en détail en se référant plus particulièrement à la figure 11.
Basiquement, le sixième bloc de commande MC 1 comporte des deuxièmes moyens de comparaison MC 10 qui vont comparer le contenu du champ principal CHx du registre élémentaire GTx avec la valeur courante RDVL2 du compteur de lecture. Cette comparaison va permettre de déterminer si l'instruction GMIx est toujours présente ou a quitté la mémoire DIDQ.
Ceci étant, afin de prendre en compte les effets des fenêtres circulaires de comptage, il est prévu que le sixième bloc de commande MCI comporte également des deuxièmes moyens de comparaison auxiliaires, formés ici d'une première porte logique NON OU EXCLUSIF
Figure img00320002

(XNOR), référencée PL01. Cette porte logique est destinée à élaborer un premier signal logique SW1 à partir du contenu du premier champ auxiliaire BAx et de la valeur du bit de dépassement RDOVFL2 du compteur de lecture.
En d'autres termes, ce signal logique SW 1 indique si le pointeur de lecture PL2 est dans la même fenêtre circulaire que la position de la dernière instruction GMIx affectant l'indication de garde Gx.
On teste alors, dans l'étape 420, la valeur du premier signal logique SW1. Si ce signal logique est à 0, on teste, dans l'étape 422, si la valeur du mot contenu dans le champ principal CHx est strictement supérieure à la valeur courante RDVL2 du compteur de lecture. Si tel est le cas, alors cela signifie que l'instruction GMIx a quitté la mémoire DIDQ
<Desc/Clms Page number 33>
(étape 423) et on met alors le bit BBx à 0 (étape 43, figure 10).
Si, par contre, la valeur du mot contenu dans le champ principal CHx n'est pas strictement supérieure à la valeur courante RDVL2 du compteur de lecture, alors cela signifie que l'instruction modificatrice GMIx est toujours présente dans la mémoire DIDQ (étape 424). Dans ce cas, le bit BBx est maintenu à 1.
Si, par contre, dans l'étape 420, le signal logique SW1 est à 1, les moyens de comparaison MC10 vont tester si la valeur courante du compteur de lecture RDVL2 est strictement supérieure au mot contenu dans le champ principal CHx du registre élémentaire GTx (étape 421).
Si tel est le cas, cela signifie que l'instruction modificatrice GMIx a quitté la mémoire DIDQ (étape 423). Dans ce cas, le bit BBx est mis à 0 (étape 43, figure 10).
Dans le cas contraire, cela signifie (étape 424) que l'instruction modificatrice GMIx est toujours présente dans la mémoire DIDQ.
On va maintenant décrire plus en détail, en se référant plus particulièrement aux figures 12 et 13, les traitements effectués lorsqu'une instruction de transmission SNDGx est stockée dans le champ utile CHU1 de l'étage d'entrée ETG1 de la mémoire SNDGQ, ainsi que l'élaboration de son critère d'extraction, lorsque cette instruction de transmission SNDGx a atteint la tête de la mémoire SNDGQ, c'est-à-dire lorsqu'elle est présente dans le champ utile CHU4 de l'étage de sortie ETG4.
Afin de ne pas perturber le bon synchronisme temporel des traitements, à chaque fois qu'une instruction de transmission SNDGx est stockée dans la mémoire SNDGQ et que l'on ne stocke pas simultanément une autre instruction dans la mémoireDIDQ, on stocke également dans la mémoire DIDQ une instruction non-opérative NOP.
Par ailleurs, à chaque fois qu'une instruction de transmission SNDGx est stockée dans la mémoire SNDGQ, par exemple dans le champ utile CHU 1 de l'étage ETG1, on lui associe une étiquette qui correspond au contenu du registre élémentaire GTx correspondant.
Et, cette étiquette va continuellement être attachée à l'instruction de transmission SNDGx dans la mémoire SNDGQ.
En pratique (figure 9), l'étiquette associée à une instruction de transmission SNDGx est formée dans chaque étage de la mémoire SNDGQ
<Desc/Clms Page number 34>
par - un premier champ supplémentaire Sndgtag, - un deuxième champ supplémentaire (1 bit) Auxgmi, et - un troisième champ supplémentaire (1 bit également) Actgmi.
Lorsqu'une instruction de transmission SNDGx est stockée dans l'étage de tête de la mémoire SNDGQ (étape 60, figure 12), le septième bloc de commande MC2 transfère (étape 61, figure 12) - le contenu du champ principal CHx dans le premier champ supplémentaire Sndgtag, - le contenu du premier champ auxiliaire BAx dans le deuxième champ supplémentaire Auxgmi, et, - le contenu du deuxième champ auxiliaire BBx dans le troisième champ supplémentaire Actgmi.
Et, le contenu de cette étiquette va rester inchangé lors de la propagation de l'instruction SNDGx à laquelle elle est rattachée, jusqu'à ce que cette instruction atteigne la tête de la mémoire SNDGQ.
A ce moment-là, le huitième bloc de commande MC3 va tester (étape 62) la présence ou l'absence d'une instruction modificatrice GMIx temporellement plus ancienne dans la mémoire DIDQ.
Si une instruction modificatrice GMIx est présente, alors le troisième bloc de commande MC2 va attendre, pour extraire l'instruction de transmission de la mémoire SNDGQ, que l'instruction modificatrice GMIx ait été extraite de la mémoire DIDQ (étape 64).
Si, par contre, aucune instruction GMIx n'est détectée dans la mémoire DIDQ, le septième bloc de commande MC2 va extraire immédiatement l'instruction de transmission SNDGx de la tête de la mémoire SNDQ (étape 63).
Et, c'est le huitième bloc de commande MC3 qui va élaborer le critère d'extraction de cette instruction de transmission SNDGx ayant atteint la tête de la première mémoire.
Pour déterminer si une instruction modificatrice GMIx est présente dans la mémoire DIDQ, le bloc MC3 va tout d'abord tester la valeur du bit Actgmi de l'étiquette attachée à l'instruction de transmission SNDGx (étape 620, figure 13).
Si ce bit Actgmi est égal à 0, alors cela signifie qu'aucune instruction GMIx temporellement plus ancienne que l'instruction SNDGx
<Desc/Clms Page number 35>
n'est présente dans la mémoire DIDQ (étape 621). Dans ce cas, l'instruction de transmission SNDGx peut être immédiatement extraite de la mémoire SNDGQ (étape 63, figure 12).
Si, par contre, le bit Actgmi est à 1, alors il convient basiquement de comparer le contenu du premier champ supplémentaire Sndgtag avec la valeur courante RDVL2 du compteur de lecture. C'est le rôle des moyens de comparaison MC30.
Et, basiquement, une absence d'instruction GMIx se traduira par une valeur RDVL2 strictement supérieure au premier champ supplémentaire Sndgtag.
Ceci étant, là encore, il convient de prendre en compte les effets des fenêtres circulaires de comptage.
C'est la raison pour laquelle il est prévu que le bloc de commande MC3 comporte des deuxièmes moyens de comparaison supplémentaires, formés ici d'une deuxième porte logique NON OU EXCLUSIF, référencée PLO3, et apte à comparer le bit Auxgmi avec le bit de dépassement RDOVFL2 du compteur de lecture. Le résultat de cette comparaison fournit un deuxième signal logique SW3. Ce signal SW3 indique si le pointeur de lecture PL2 de la deuxième mémoire DIDQ est dans la même fenêtre circulaire que la position de la dernière instruction modificatrice GMIx, ayant potentiellement un effet sur l'instruction de transmission SNDGx.
Si le signal SW3 est à 1, alors l'instruction de transmission SNDGx pourra être transmise si la valeur RDVL est supérieure à Sndgtag (étape 623, figure 7).
Dans le cas contraire, cela signifie qu'une instruction GMIx est toujours présente dans la deuxième mémoire DIDQ (étape 625). Et, il convient d'attendre avant d'extraire l'instruction de transmission SNDGx de la tête de la mémoire SNDGQ.
Si le signal SW3 est à 0, alors on pourra extraire l'instruction de transmission SNDGx si la valeur du mot Sndgtag est strictement supérieure à la valeur du compteur de lecture RDVL (étape 624).
Dans le cas contraire, il conviendra d'attendre (étape 625).
Matériellement, les différents blocs de commande MCO-MC3 peuvent être réalisés sous la forme d'un circuit intégré en utilisant des
<Desc/Clms Page number 36>
outils de synthèse logique.
Il convient de noter également que la profondeur de la mémoire SNDGQ peut être différente de celle de la mémoire DIDQ.
Par ailleurs, tout ce qui vient d'être décrit pour une indication de garde Gx, est effectué en réalité en parallèle simultanément pour toutes les indications de garde.
Sur la figure 14, qui illustre à nouveau les quatre mémoires FIFO selon l'invention, permettant la gestion globale d'instructions selon l'invention, y compris les instructions de chargement de données mémorisées dans un registre, les instructions gardées, et en particulier les instructions de chargement gardées, on voit qu'une instruction de transmission destinée à faire transmettre la valeur de l'indication de garde associée à l'instruction de chargement qui a été stockée dans la mémoire RLDQ, va être délivrée au registre des indications de garde GR. Puis, la valeur correspondante de l'indication de garde va être stockée dans la quatrième mémoire RCGQ.
Bien entendu, comme déjà indiqué ci-avant, dans le cas d'une indication gardée qui a été délivrée à une autre unité de traitement, par exemple l'unité AU ou l'unité GU, la valeur de l'indication de garde associée à ces instructions gardées va être délivrée à cette autre unité AU ou GU.
Par ailleurs, sur la figure 14, les chiffres 1,2 et 3 situés dans un cercle reprennent les dépendances"temporelles"des trois mémoires RLDQ, DIDQ et SNDGQ.
En d'autres termes, en présence d'une instruction modificatrice de chargement temporellement plus ancienne destinée à modifier la valeur d'au moins un registre associé à une instruction opérative, on extrait ladite instruction opérative de la deuxième mémoire DIDQ seulement après que l'instruction modificatrice de chargement a été extraite de la première mémoire RLDQ.
De même, en présence d'une instruction modificatrice temporellement plus ancienne destinée à modifier la valeur de l'indication de garde associée à une instruction de transmission, on extrait cette instruction de transmission de la troisième mémoire seulement après que l'instruction modificatrice a été extraite de la deuxième mémoire.
<Desc/Clms Page number 37>
Par ailleurs, il est bien entendu que certaines instructions de chargement peuvent être non gardées. Dans ce cas, elles sont stockées dans la mémoire RLDQ et il n'y a pas d'instructions correspondantes de transmission stockées dans la mémoire SNDGQ. De plus, dans ce cas, on ne lit pas le contenu de l'étage de sortie de la quatrième mémoire RCGQ.

Claims (24)

REVENDICATIONS
1. Procédé de gestion d'instructions au sein d'un processeur à architecture découplée, le processeur comportant un coeur contenant plu- sieurs unités de traitement (DU, AU, GU) respectivement associées à des moyens de mémoire du type FIFO pour stocker séquentiellement les instructions respectives qui sont destinées aux unités correspondantes, procédé dans lequel la délivrance au coeur de processeur, d'une instruction de chargement d'une donnée mémorisée dans un registre, provoque la délivrance au moyen de mémoire d'une première unité de traitement (DU) d'une instruction de chargement dans ledit registre et la délivrance au moyen de mémoire d'une deuxième unité de traitement (AU) d'une instruction destinée à élaborer ladite donnée mémorisée, l'instruction de chargement n'étant exécutée que lorsque ladite donnée mémorisée a été délivrée par ladite deuxième unité de traitement, caractérisé par le fait que le moyen de mémoire de la première unité de traitement comporte une première mémoire de type FIFO (RLDQ), et une deuxième mémoire de type FIFO (DIDQ) distincte de la première, par le fait qu'on stocke chaque instruction de chargement (LDRx) dans la première mémoire (RLDQ) et certaines au moins des autres instructions opératives (INST) destinées à la première unité (DU) dans la deuxième mémoire (DIDQ), par le fait qu'on extrait de la deuxième mémoire (DIDQ) une instruction opérative impliquant au moins un registre (DUOPx) et ayant atteint la tête (ETG4) de cette deuxième mémoire, si aucune instruction de chargement (LDRx) temporellement plus ancienne destinée à modifier la valeur du ou des registres associés à cette instruction opérative, n'est présente dans la première mémoire, et par le fait qu'en présence d'une telle instruction modificatrice de chargement (LDRx) temporellement plus ancienne, on extrait ladite instruction opérative (DUOPx) de la deuxième mémoire (DIDQ) seulement après que l'instruction modificatrice de chargement (LDRx) a été extraite de la première mémoire (RLDQ).
2. Procédé selon la revendication 1, caractérisé par le fait qu'à chaque fois qu'on stocke dans la deuxième mémoire (DIDQ) une instruction sans qu'il soit prévu de stocker simultanément dans la première mémoire (RLDQ) une instruction de chargement (LDRx), on stocke dans la
<Desc/Clms Page number 39>
on mémorise la valeur courante (WRVL1) du premier compteur d'écri- ture, et par le fait que la détermination du caractère toujours présent de cette instruction de chargement (LDRx) dans la première mémoire prend en compte le résultat de la comparaison de ladite valeur courante mémorisée du premier compteur d'écriture avec la valeur courante du premier compteur de lecture (RDVL1).
Figure img00390001
première mémoire (RLDQ) une instruction non-opérative (NOP), par le fait qu'à chaque fois qu'on extrait une instruction (LDRx, NOP) de la pre- mière mémoire (RLDQ), on incrémente un premier compteur de lecture (RDCTR1), par le fait qu'à chaque fois qu'on stocke une instruction (INST) dans la première mémoire (RLDQ), on incrémente un premier compteur d'écriture (WRCTR1), par le fait qu'à chaque fois qu'on stocke dans la première mémoire (RLDQ) une instruction de chargement (LDRx),
3. Procédé selon la revendication 2, caractérisé par le fait que le
Figure img00390002
premier compteur d'écriture (WRCTR1) et le premier compteur de lecture (RDCTR1) ont une taille binaire identique égale à la profondeur de la première mémoire (RLDQ), par le fait qu'on associe à chaque premier compteur un bit de dépassement (WROVFL1, RDOVFL1) changeant de valeur à chaque fois que le premier compteur correspondant revient à sa valeur initiale, par le fait qu'à chaque fois qu'on stocke dans la première mémoire une instruction de chargement (LRDx), on mémorise également la valeur courante du bit de dépassement (WROVFL 1) du premier compteur d'écriture, et par le fait que la détermination du caractère toujours présent de cette instruction de chargement (LRDx) dans la première mémoire prend également en compte le résultat de la comparaison de la valeur courante du bit de dépassement (RDOVFL) du premier compteur de lecture avec ladite valeur mémorisée du bit de dépassement du premier compteur d'écriture.
4. Procédé selon la revendication 2 ou 3, caractérisé par le fait qu'à chaque fois qu'on stocke dans la deuxième mémoire (DIDQ) une instruction opérative (DUOPx) impliquant au moins un registre (DUOPx), on lui associe une première étiquette contenant la valeur courante du premier compteur d'écriture qui a été mémorisée lorsque la dernière instruction de chargement (LRDx) modifiant l'un au moins des registres impliqués dans ladite instruction opérative a été stockée dans la première mémoire, et par le fait que le critère d'extraction de cette instruction opé-
<Desc/Clms Page number 40>
rative (DUOPx) ayant atteint la tête (ETG4) de la deuxième mémoire (DIDQ) prend en compte le résultat de la comparaison entre ladite valeur courante mémorisée associée à cette instruction opérative, et la valeur courante du premier compteur de lecture (RDVL1).
5. Procédé selon les revendications 3 et 4, caractérisé par le fait qu'à chaque fois qu'on stocke une instruction opérative dans la deuxième mémoire, on lui associe également dans sa première étiquette la valeur courante du bit de dépassement du premier compteur d'écriture qui a été mémorisée lorsque la dernière instruction de chargement (LRDx) modifiant l'un au moins des registres impliqués dans ladite instruction opérative a été stockée dans la première mémoire, et par le fait que le critère d'extraction de cette instruction opérative ayant atteint la tête de la deuxième mémoire prend également en compte le résultat de la comparaison entre cette valeur courante mémorisée associée à cette instruction opérative et la valeur courante du bit de dépassement (RDOVFL1) du premier compteur de lecture.
6. Procédé selon l'une des revendications précédentes, caractérisé par le fait que le moyen de mémoire de la première unité comporte une troisième mémoire de type FIFO (SNDGQ), distincte de la première et de la deuxième mémoires, et une quatrième mémoire de type FIFO (RCGQ), distincte des trois premières, par le fait que la première unité (DU) contient un registre d'indications de garde (RG), par le fait que la délivrance d'une instruction gardée au moyen de mémoire (AIDQ) d'une autre unité de traitement différente de la première (AU ou GU), ou la délivrance d'une instruction de chargement gardée à la première unité, provoque la délivrance à la première unité de traitement (DU) et son stockage dans la troisième mémoire (SNDGQ), d'une instruction de transmission (SNDGx) destinée à faire transmettre à ladite autre unité (AU ou GU) ou à ladite quatrième mémoire (RCGQ), respectivement, la valeur de l'indication de garde (Gx) associée à ladite instruction gardée ou à ladite instruction de chargement gardée, respectivement, par le fait qu'on extrait de la troisième mémoire (SNDGQ) une instruction de transmission
Figure img00400001
(SNDGx) ayant atteint la tête (ETG4) de cette troisième mémoire si aucune instruction modificatrice (GMIx) temporellement plus ancienne destinée à modifier la valeur de l'indication de garde (Gx) associée à cette
<Desc/Clms Page number 41>
instruction de transmission (SNDGx), n'est présente dans la deuxième mémoire (DIDQ), et par le fait qu'en présence d'une telle instruction modificatrice (GMIx) temporellement plus ancienne, on extrait l'instruction de transmission (SNDGx) de la troisième mémoire (SNDGQ) seulement après que l'instruction modificatrice (GMIx) a été extraite de la deuxième mémoire (DIDQ).
7. Procédé selon la revendication 6, caractérisé par le fait qu'à chaque fois qu'on extrait une instruction (INST) de la deuxième mémoire (DIDQ), on incrémente un deuxième compteur de lecture (RDCTR2), par le fait qu'à chaque fois qu'on stocke une instruction (INST) dans la deuxième mémoire (DIDQ), on incrémente un deuxième compteur d'écriture (WRCTR2), par le fait qu'à chaque fois qu'on stocke dans la deuxième mémoire (DIDQ) une instruction (GMIx) modifiant la valeur d'une indication de garde (Gx), on mémorise la valeur courante (WRVL2) du deuxième compteur d'écriture, et par le fait que la détermination du caractère toujours présent de cette instruction modificatrice (GMIx) dans la deuxième mémoire prend en compte la comparaison de ladite valeur courante mémorisée du deuxième compteur d'écriture avec la valeur courante du deuxième compteur de lecture (RDVL2).
8. Procédé selon la revendication 7, caractérisé par le fait que le deuxième compteur d'écriture (WRCTR2) et le deuxième compteur de lecture (RDCTR2) ont une taille binaire identique égale à la profondeur de la deuxième mémoire (DIDQ), par le fait qu'on associe à chaque deuxième compteur un bit de dépassement (WROVFL2, RDOVFL2) changeant de valeur à chaque fois que le deuxième compteur correspondant revient à sa valeur initiale, par le fait qu'à chaque fois qu'on stocke dans la deuxième mémoire une instruction (GMIx) modifiant la valeur d'une indication de garde, on mémorise également la valeur courante du bit de dépassement (WROVFL2) du deuxième compteur d'écriture, et par le fait que la détermination du caractère toujours présent de cette instruction modificatrice (GMIx) dans la deuxième mémoire prend également en compte la comparaison de la valeur courante du bit de dépassement (RDOVFL2) du deuxième compteur de lecture avec ladite valeur mémorisée du bit de dépassement du deuxième compteur d'écriture.
9. Procédé selon la revendication 7 ou 8, caractérisé par le fait
<Desc/Clms Page number 42>
qu'à chaque fois qu'on stocke une instruction de transmission (SNDGx) dans la troisième mémoire (SNDGQ), on lui associe une étiquette contenant la valeur courante du deuxième compteur d'écriture qui a été mémorisée lorsque la dernière instruction (GMIx) modifiant l'indication de garde (Gx) associée à ladite instruction de transmission a été stockée dans la deuxième mémoire, et par le fait que le critère d'extraction de cette instruction de transmission (SNDGx) ayant atteint la tête (ETG4) de la troisième mémoire (SNDGQ) prend en compte le résultat de la comparaison entre ladite valeur courante mémorisée associée à cette instruction de transmission, et la valeur courante du deuxième compteur de lecture (RDVL2).
10. Procédé selon les revendications 8 et 9, caractérisé par le fait qu'à chaque fois qu'on stocke une instruction de transmission dans la troisième mémoire, on lui associe également dans son étiquette la valeur courante du bit de dépassement du deuxième compteur d'écriture qui a été mémorisée lorsque la dernière instruction (GMIx) modifiant l'indication de garde associée à ladite instruction de transmission a été stockée dans la deuxième mémoire, et par le fait que le critère d'extraction de cette instruction de transmission ayant atteint la tête de la troisième mémoire prend également en compte le résultat de la comparaison entre cette valeur courante mémorisée associée à cette instruction de transmission et la valeur courante du bit de dépassement (RDOVFL2) du deuxième compteur de lecture.
Figure img00420001
11. Processeur à architecture découplée, comprenant un coeur contenant plusieurs unités de traitement (DU, AU, GU) respectivement associées à des moyens de mémoire du type FIFO pour stocker séquentiellement les instructions respectives qui sont destinées aux unités correspondantes, et une unité centrale (CU) apte en réponse à une instruction de chargement d'une donnée mémorisée dans un registre, à délivrer au moyen de mémoire d'une première unité de traitement (DU), une instruction de chargement dans ledit registre, et à délivrer au moyen de mémoire d'une deuxième unité de traitement (AU) une instruction destinée à élaborer ladite donnée mémorisée, l'instruction de chargement n'étant exécutée que lorsque ladite donnée mémorisée a été délivrée par ladite deuxième unité de traitement, caractérisé par le fait que le moyen de mémoire de la pre-
<Desc/Clms Page number 43>
mière unité comporte une première mémoire de type FIFO (RLDQ), et une deuxième mémoire de type FIFO (DIDQ) distincte de la première, et par le fait que le processeur comporte des moyens d'aiguillage (DISP) aptes à stocker chaque instruction de chargement (LDRx) dans la première mémoire (RLDQ) et certaines au moins des autres instructions opératives (INST) destinées à la première unité (DU) dans la deuxième mémoire, et des premiers moyens de commande (MCTL1) aptes à extraire de la deuxième mémoire (DIDQ) une instruction opérative impliquant au moins un registre (DUOPx) et ayant atteint la tête (ETG4) de cette deuxième mémoire, si aucune instruction de chargement (LDRx) temporellement plus ancienne destinée à modifier la valeur du ou des registres associés à cette instruction opérative, n'est présente dans la première mémoire (DIDQ), et en présence d'une telle instruction modificatrice de chargement (LDRx) temporellement plus ancienne, à extraire ladite instruction opérative (DUOPx) de la deuxième mémoire (SNDGQ) seulement après que l'instruction modificatrice de chargement (LDRx) a été extraite de la première mémoire (RLDQ).
12. Processeur selon la revendication 11, caractérisé par le fait que les premiers moyens de commande (MCTL1) comportent un premier compteur de lecture (RDCTR 1) incrémenté à chaque fois qu'une instruction est extraite de la première mémoire (RLDQ), un premier compteur d'écriture (WRCTR1) incrémenté à chaque fois qu'une instruction est stockée dans la première mémoire (RLDQ), un ensemble de premiers registres élémentaires (RTO-RT15) respectivement associés à l'ensemble des registres (RO-R15) capables d'être chargés par des données mémorisées, un premier bloc de commande (MCOO) apte, à chaque fois qu'une instruction de chargement (LDRx) dans un registre (Rx) est stockée dans la première mémoire (RLDQ), à stocker la valeur courante (WRVL1) du premier compteur d'écriture dans un champ principal (LCHx) du premier registre élémentaire (RTx) associé à ce registre (Rx), un deuxième bloc de commande (MC 11) apte à déterminer le caractère toujours présent de cette instruction de chargement (LDRx)
<Desc/Clms Page number 44>
dans la première mémoire (RLDQ), et comportant des premiers moyens de comparaison (MC100) aptes à comparer le contenu du champ principal (LCHx) du premier registre élémentaire (RTx), avec la valeur courante (RDVL1) du premier compteur de lecture.
13. Processeur selon la revendication 12, caractérisé par le fait que le premier compteur d'écriture et le premier compteur de lecture ont une taille binaire identique égale à la profondeur de la première mémoire (RLDQ), par le fait qu'à chaque premier compteur est associé un bit de dépassement (WROVFL1, RDOVFL1) changeant de valeur à chaque fois que le premier compteur correspondant revient à sa valeur initiale, par le
Figure img00440001
fait que chaque premier registre élémentaire (RTx) comporte en outre un champ auxiliaire à un bit (LBAx), par le fait que le premier bloc de commande (MCOO) est apte, à chaque fois qu'une instruction de chargement (LDRx) dans un registre (Rx) est stockée dans la première mémoire (RLDQ), à stocker également la valeur courante du bit de dépassement (WROVFL1) du premier compteur d'écriture dans le champ auxiliaire (LBAx) du premier registre élémentaire correspondant (RTx), et par le
Figure img00440002
fait que le deuxième bloc de commande (MC 11) comporte des premiers moyens de comparaison auxiliaires (PLOIO) aptes à comparer la valeur courante du bit de dépassement (RDOVFL1) du premier compteur de lecture avec le contenu du champ auxiliaire (LBAx).
14. Processeur selon la revendication 13, caractérisé par le fait que les premiers moyens de comparaison auxiliaires comportent une porte logique NON OU EXCLUSIF (PLO10).
15. Processeur selon l'une des revendications 12 à 14, caractérisé par le fait que chaque étage (LETGi) de la deuxième mémoire (DIDQ) comporte un champ utile (LCHUi) pour le stockage d'une instruction opérative (DUOPx) impliquant au moins un registre (Rx) ou bien pour le stockage d'une instruction non-opérative (NOP), et un premier champ supplémentaire (LDtag), par le fait que les moyens de commande (MCTL1) comportent un troisième bloc de commande (MC12) apte, à chaque fois qu'une instruction opérative (DUOPx) impliquant au moins un registre (Rx) est stockée dans le champ utile (LCHU1) de l'étage d'entrée de la deuxième mémoire, à sélectionner parmi tous les premiers registres élé-
<Desc/Clms Page number 45>
mentaires associés à tous les registres impliqués dans ladite instruction opérative, celui correspondant à la dernière instruction de chargement (LDRx) modifiant l'un au moins de ces registres impliqués, et à transférer le contenu du champ principal (LCHx) du premier registre élémentaire sélectionné (RTx), dans le premier champ supplémentaire (LDtag) de l'étage d'entrée de la deuxième mémoire (DIDQ), et un quatrième bloc de commande (MC13) apte à élaborer le critère d'extraction de cette instruction opérative (DUOPx) ayant atteint l'étage de tête (LETG4) de la deuxième mémoire (DIDQ), et comportant des premiers moyens de comparaison (MC300) aptes à comparer le contenu dudit premier champ supplémentaire (LDtag) de l'étage de tête avec la valeur courante (RDVL1) du premier compteur de lecture.
16. Processeur selon la revendication 15 prise en combinaison avec la revendication 13 ou 14, caractérisé par le fait que chaque étage de la deuxième mémoire comporte en outre un deuxième champ supplémentaire (AuxLD), par le fait que le troisième bloc de commande (MC12) est apte, à chaque fois qu'une instruction opérative est stockée dans le champ
Figure img00450001
utile (LCHU1) de l'étage d'entrée de la deuxième mémoire, à transférer le contenu du champ auxiliaire (LBAx) du premier registre élémentaire sélectionné (RTx), dans le deuxième champ supplémentaire (AuxLD) de l'étage d'entrée de la deuxième mémoire, et par le fait que le quatrième bloc de commande (MC 13) comportent des premiers moyens de comparaison supplémentaires (PLO30) aptes à comparer le contenu du deuxième champ supplémentaire (AuxLD) avec la valeur courante du bit de dépassement (RDOVFL1) du premier compteur de lecture.
17. Processeur selon la revendication 16, caractérisé par le fait que les premiers moyens de comparaison supplémentaires comportent une porte logique NON OU EXCLUSIF (PLO30).
18. Processeur selon l'une des revendications 11 à 17, caractérisé par le fait que le moyen de mémoire de la première unité (DU) comporte une troisième mémoire de type FIFO (SNDGQ), distincte de la première et de la deuxième mémoires, et une quatrième mémoire de type FIFO (RCGQ), distincte des trois premières, par le fait que la première unité (DU) contient un registre d'indications de garde (GR), par le fait que l'unité centrale (CU) est apte
<Desc/Clms Page number 46>
à délivrer une instruction gardée au moyen de mémoire (AIDQ) d'une autre unité de traitement (GU) différente de la première, ou une instruction de chargement gardée à la première unité de traitement (DU), et à délivrer au moyen de mémoire de la première unité de traitement (DU), une instruction de transmission (SNDGx) destinée à faire transmettre à ladite autre unité (GU) ou à ladite quatrième mémoire (RCGQ), respectivement, la valeur de l'indication de garde (Gx) associée à ladite instruction gardée ou à ladite instruction de chargement gardée, respectivement, par le fait que les moyens d'aiguillage (DISP) sont aptes à stocker chaque instruction de transmission (SNDGx) dans la troisème mémoire (SNDGQ), et par le fait que le processeur comporte en outre des deuxièmes moyens de commande (MCTL) aptes à extraire de la troisième mémoire (SNDGQ) une instruction de transmission (SNDGx) ayant atteint la tête (ETG4) de cette troisième mémoire si aucune instruction modificatrice (GMIx) temporellement plus ancienne destinée à modifier la valeur de l'indication de garde associée à cette instruction de transmission, n'est présente dans la deuxième mémoire (DIDQ), et en présence d'une telle instruction modificatrice (GMIx) temporellement plus ancienne, à extraire l'instruction de transmission de la troisième mémoire (SNDGQ) seulement après que l'instruction modificatrice (GMIx) a été extraite de la deuxième mémoire (DIDQ).
19. Processeur selon la revendication 18, caractérisé par le fait que les deuxièmes moyens de commande (MCTL) comportent un deuxième compteur de lecture (RDCTR2) incrémenté à chaque fois qu'une instruction est extraite de la deuxième mémoire, un deuxième compteur d'écriture (WRCTR2) incrémenté à chaque fois qu'une instruction est stockée dans la deuxième mémoire, un ensemble de deuxièmes registres élémentaires (GTO-GT15) respectivement associés à l'ensemble des indications de garde (GO-G15), un cinquième bloc de commande (MCO) apte, à chaque fois qu'une instruction (GMIx) modifiant la valeur d'une indication de garde
<Desc/Clms Page number 47>
(Gx) est stockée dans la deuxième mémoire, à stocker la valeur courante (WRVL2) du deuxième compteur d'écriture dans un champ principal (CHx) du deuxième registre élémentaire (GTx) associé à cette indication de garde, un sixième bloc de commande (MC 1) apte à déterminer le caractère toujours présent de cette instruction modificatrice (GMIx) dans la deuxième mémoire, et comportant des deuxièmes moyens de comparaison (MC10) aptes à comparer le contenu du champ principal (CHx) du deuxième registre élémentaire (GTx), avec la valeur courante (RDVL2) du deuxième compteur de lecture.
20. Processeur selon la revendication 19, caractérisé par le fait que le deuxième compteur d'écriture et le deuxième compteur de lecture ont une taille binaire identique égale à la profondeur de la deuxième mémoire (DIDQ), par le fait qu'à chaque deuxième compteur est associé un bit de dépassement (WROVFL2, RDOVFL2) changeant de valeur à chaque fois que le deuxième compteur correspondant revient à sa valeur initiale, par le fait que chaque deuxième registre élémentaire (GTx) comporte en outre un champ auxiliaire à un bit (BAx), par le fait que le cinquième bloc de commande (MCO) est apte, à chaque fois qu'une instruction (GMIx) modifiant la valeur d'une indication de garde est stockée dans la deuxième mémoire, à stocker également la valeur courante du bit de dépassement (WROVFL2) du deuxième compteur d'écriture dans le champ auxiliaire (BAx) du deuxième registre élémentaire correspondant, et par le fait que le sixième bloc de commande
Figure img00470001
(MCI) comporte des deuxièmes moyens de comparaison auxiliaires (PLO 1) aptes à comparer la valeur courante du bit de dépassement (RDOVFL2) du deuxième compteur de lecture avec le contenu du champ auxiliaire (BAx).
21. Processeur selon la revendication 20, caractérisé par le fait que les deuxièmes moyens de comparaison auxiliaires comportent une porte logique NON OU EXCLUSIF (PLO1).
22. Processeur selon l'une des revendications 19 à 21, caractérisé par le fait que chaque étage (ETGi) de la troisième mémoire (SNDGQ) comporte un champ utile (CHUi) pour le stockage d'une instruction de transmission (SNDGx), et un premier champ supplémentaire (Sndgtag),
<Desc/Clms Page number 48>
par le fait que les deuxièmes moyens de commande (MCTL) comportent un septième bloc de commande (MC2) apte, à chaque fois qu'une instruction de transmission est stockée dans le champ utile (CHU1) de l'étage d'entrée de la troisième mémoire, à transférer le contenu du champ principal (CHx) du deuxième registre élémentaire (GTx) associé à l'indication de garde correspondante (Gx), dans le premier champ supplémentaire (Sndgtag) de l'étage d'entrée de la troisième mémoire, et un huitième bloc de commande (MC3) apte à élaborer le critère d'extraction de cette instruction de transmission ayant atteint l'étage de tête (ETG4) de la troisième mémoire, et comportant des deuxièmes moyens de comparaison (MC30) aptes à comparer le contenu dudit premier champ supplémentaire (Sndgtag) de l'étage de tête avec la valeur courante (RDVL2) du deuxième compteur de lecture.
23. Processeur selon la revendication 22 prise en combinaison avec la revendication 20 ou 21, caractérisé par le fait que chaque étage de la troisième mémoire comporte en outre un deuxième champ supplémentaire (Auxgmi), par le fait que le septième bloc de commande (MC2) est apte, à chaque fois qu'une instruction de transmission est stockée dans le champ utile (CHU1) de l'étage d'entrée de la troisième mémoire, à transférer le contenu du champ auxiliaire (BAx) du deuxième registre élémentaire (GTx) associé à l'indication de garde correspondante (Gx), dans le deuxième champ supplémentaire (Auxgmi) de l'étage d'entrée de la troisième mémoire, et par le fait que le huitième bloc de commande (MC3) comportent des deuxièmes moyens de comparaison supplémentaires (PLO3) aptes à comparer le contenu du deuxième champ supplémentaire (Auxgmi) avec la valeur courante du bit de dépassement (RDOVFL2) du deuxième compteur de lecture.
24. Processeur selon la revendication 23, caractérisé par le fait que les deuxièmes moyens de comparaison supplémentaires comportent une porte logique NON OU EXCLUSIF (PLO3).
FR0102647A 2001-02-27 2001-02-27 Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant Expired - Fee Related FR2821449B1 (fr)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FR0102647A FR2821449B1 (fr) 2001-02-27 2001-02-27 Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant
US10/083,629 US6854049B2 (en) 2001-02-27 2002-02-26 Method of handling instructions within a processor with decoupled architecture, in particular a processor for digital signal processing, and corresponding processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0102647A FR2821449B1 (fr) 2001-02-27 2001-02-27 Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant

Publications (2)

Publication Number Publication Date
FR2821449A1 true FR2821449A1 (fr) 2002-08-30
FR2821449B1 FR2821449B1 (fr) 2003-07-04

Family

ID=8860493

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0102647A Expired - Fee Related FR2821449B1 (fr) 2001-02-27 2001-02-27 Procede de gestion d'instructions au sein d'un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant

Country Status (2)

Country Link
US (1) US6854049B2 (fr)
FR (1) FR2821449B1 (fr)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040158695A1 (en) * 1999-05-03 2004-08-12 Laurent Ugen Method and apparatus for handling transfer of guarded instructions in a computer system
US7107187B1 (en) * 2003-11-12 2006-09-12 Sprint Communications Company L.P. Method for modeling system performance
US9225727B2 (en) 2010-11-15 2015-12-29 Blackberry Limited Data source based application sandboxing
US10353707B2 (en) 2017-07-12 2019-07-16 International Business Machines Corporation Efficient pointer load and format

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0133477A2 (fr) * 1983-07-06 1985-02-27 Nec Corporation Système de traitement d'information de type à commande simultanée
US5664137A (en) * 1994-01-04 1997-09-02 Intel Corporation Method and apparatus for executing and dispatching store operations in a computer system
EP0840209A2 (fr) * 1996-11-01 1998-05-06 Matsushita Electric Industrial Co., Ltd. Procédé et dispositif de préextraction d'instructions
EP1050805A1 (fr) * 1999-05-03 2000-11-08 STMicroelectronics SA Transmission de valeurs de protection dans un système d' ordinateur

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1994008287A1 (fr) * 1992-09-29 1994-04-14 Seiko Epson Corporation Systeme et procede pour la gestion des operations de chargement et/ou de stockage dans un microprocesseur superscalaire
US5854914A (en) * 1996-02-13 1998-12-29 Intel Corporation Mechanism to improved execution of misaligned loads
US6463514B1 (en) * 1998-02-18 2002-10-08 International Business Machines Corporation Method to arbitrate for a cache block
US6560674B1 (en) * 1998-10-14 2003-05-06 Hitachi, Ltd. Data cache system
EP1050807A1 (fr) * 1999-05-03 2000-11-08 Sgs Thomson Microelectronics Sa Accès à mémoire dans une mémoire d'ordinateur
US6704817B1 (en) * 2000-08-31 2004-03-09 Hewlett-Packard Development Company, L.P. Computer architecture and system for efficient management of bi-directional bus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0133477A2 (fr) * 1983-07-06 1985-02-27 Nec Corporation Système de traitement d'information de type à commande simultanée
US5664137A (en) * 1994-01-04 1997-09-02 Intel Corporation Method and apparatus for executing and dispatching store operations in a computer system
EP0840209A2 (fr) * 1996-11-01 1998-05-06 Matsushita Electric Industrial Co., Ltd. Procédé et dispositif de préextraction d'instructions
EP1050805A1 (fr) * 1999-05-03 2000-11-08 STMicroelectronics SA Transmission de valeurs de protection dans un système d' ordinateur

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
TOYOHIKO YOSHIDA ET AL: "A STRATEGY FOR AVOIDING PIPELINE INTERLOCK DELAYS IN A MICROPROCESSOR", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER DESIGN: VLSI IN COMPUTERS AND PROCESSORS. CAMBRIDGE, MA., SEPT. 17 - 19, 1990, LOS ALAMITOS, IEE COMP. SOC. PRESS, US, 17 September 1990 (1990-09-17), pages 14 - 19, XP000201400, ISBN: 0-8186-2079-X *
TRYGGVE FOSSUM ET AL: "DESIGNING A VAX FOR HIGH PERFORMANCE", COMPUTER SOCIETY INTERNATIONAL CONFERENCE (COMPCON). SPRING MEETING, LOS ALAMITOS, FEB. 26 - MAR. 2, 1990, LOS ALAMITOS, IEEE COMP. SOC. PRESS, US, vol. CONF. 35, 26 February 1990 (1990-02-26), pages 36 - 43, XP000146163, ISBN: 0-8186-2028-5 *
ZHANG Y ET AL: "PERFORMANCE MODELING AND CODE PARTITIONING FOR THE DS ARCHITECTURE", COMPUTER ARCHITECTURE NEWS, ASSOCIATION FOR COMPUTING MACHINERY, NEW YORK, US, vol. 26, no. 3,SPECISSUE, 1 June 1998 (1998-06-01), pages 293 - 304, XP000784225, ISSN: 0163-5964 *

Also Published As

Publication number Publication date
FR2821449B1 (fr) 2003-07-04
US6854049B2 (en) 2005-02-08
US20020147901A1 (en) 2002-10-10

Similar Documents

Publication Publication Date Title
FR2881540A1 (fr) Procede et systeme destines a empecher que des lignes de memoire cache soient videes jusqu&#39;a ce que les donnees stockees dans celles-ci ne soient utilisees.
EP0434483B1 (fr) Processeur à plusieurs unités de traitement microprogrammées
FR2677472A1 (fr) Unite de controle pour memoire cache de second niveau.
FR2645663A1 (fr) Procedes et circuits pour gerer une pile en memoire
FR2682506A1 (fr) Processeur a memoire cache utilisant des adresses a zone de repere et zone de decalage ainsi que memoire cache pour processeurs de ce type.
FR3103586A1 (fr) Procédé de gestion du fonctionnement d’un système sur puce formant par exemple un microcontrôleur, et système sur puce correspondant
EP0030504A1 (fr) Dispositif de synchronisation et d&#39;affectation de processus entre plusieurs processeurs dans un système de traitement de l&#39;information
FR2621407A1 (fr) Systeme de reaffectation des adresses et de purge des blocs d&#39;antememoire pour station de travail a antememoire a adressage virtuel et a reinscription
EP1710703A1 (fr) Cohérence de cache dans un système multiprocesseurs à mémoire partagée
EP1617335A1 (fr) Procédé de programmation d&#39;un contrôleur de DMA dans un système sur puce et système sur puce associé
EP0392932B1 (fr) Procédé et dispositif pour accélérer les accès mémoire, utilisant un algorithme LRU modifié
EP1619590A1 (fr) Procédé de programmation d&#39;un controleur de DMA dans un système sur puce et système sur puce associé
EP1607878B1 (fr) Procédé de traitement d&#39;une adresse virtuelle pour la programmation d&#39;un contrôleur de DMA, système sur puce et programme d&#39;ordinateur associés
EP1739561A1 (fr) Cohérence de cache dans un système multiprocesseurs à mémoire partagée
EP0837396B1 (fr) Opération atomique sur mémoire distante et dispositif permettant d&#39;effectuer cette opération
FR3055992A1 (fr) Gestion d&#39;index dans une memoire flash
FR3017226A1 (fr) Procede de securisation d&#39;un code programme, systeme et processeur correspondants
FR2821449A1 (fr) Procede de gestion d&#39;instructions au sein d&#39;un processeur a architecture decouplee, en particulier un processeur de traitement numerique du signal, et processeur correspondant
FR2808902A1 (fr) Systeme de pre-extraction speculative de donnees dans un systeme de processeur d&#39;execution non ordonnee d&#39;instructions
EP1175122A1 (fr) Dispositif de gestion de mémoire permettant l&#39;inscription de blocs de données par substitution
EP0435718A1 (fr) Processeur à plusieurs unités microprogrammées avec mécanisme d&#39;exécution anticipée des instructions
EP1235141A1 (fr) Procédé de gestion d&#39;instructions gardées au sein d&#39;un processeur, et processeur correspondant
US11321146B2 (en) Executing an atomic primitive in a multi-core processor system
EP1235140A1 (fr) Procédé de gestion d&#39;instructions de branchement au sein d&#39;un processeur
EP3629185A1 (fr) Procédé de gestion de la fourniture d&#39;informations, en particulier des instructions, à un microprocesseur et système correspondant

Legal Events

Date Code Title Description
ST Notification of lapse

Effective date: 20071030