FR 2558613 A1 19850726 FR 8501003 A 19850124 5 8 6 13 La présente invention concerne un appareil de trai- tement de données. Le moyen consistant à arranger des instructions destinées à un appareil de traitement de données de manière qu'elles soient séparées en plusieurs phases est connu. Par exemple, chaque instruction peut avoir une phase au cours de laquelle au moins un opérande est lu dans la mémoire, une phase au cours de laquelle une opération est effectuée sur l'opérande, et une autre phase au cours de laquelle un résultat est écrit dans la mémoire. Les phases d'instructions successives peuvent se chevaucher de sorte que, pendant qu'une instruction effectue la phase d'écriture, l'instruction immédiatement suivante se trouve à la phase d'exécu- tion et l'instruction venant encore apres en est à la phase de lecture de l'opérande. Ce chevauchement des phases des instruc- tions successives est ordinairement appelé une technique de pipeline. L'appareil est habituellement commandé par un signal d'horloge qui fait avancer chaque instruction à sa phase suivante pour chaque battement d'horloge. Dans un tel montage, il est clair que l'appareil doit pouvoir accéder à deux opérandes ou plus au cours de chaque bat- tement d'horloge, c'est-à-dire qu'il doit pouvoir écrire le résul- tat d'une instruction dans la mémoire et lire l'opérande ou les opérandes de l'instruction suivante pendant le même battement d'horloge. Une manière d'effectuer cela consiste à utiliser une mémoire à plusieurs points d'accès qui permet d'accéder simulta- nément à deux emplacements ou plus. Toutefois, ces mémoires sont complexes et coûteuses. Un but de l'invention est de surmonter ce problème. Selon l'invention, il est proposé un appareil de traitement de données du type pipeline conçu pour obéir à une séquence d'instructions possédant chacune une phase de lecture pendant laquelle un ou plusieurs opérandes sont lus dans une mémoire, une phase d'exécution au cours de laquelle une opération est effectuée par une unité d'exécution, et une phase d'écriture au cours de laquelle un résultat est écrit dans la mémoire, les phases des instructions successives étant en chevauchement et 255861.3 l'appareil étant commandé par un signal d'horloge qui fait avancer chaque instruction à sa phase suivante à la fin de chaque battement d'horloge, o chaque battement d'horloge est divisé en un sous- battement d'écriture pendant lequel l'instruction qui se trouve alors dans sa phase d'écriture écrit son résultat dans la mémoire et au moins un sous-battement de lecture pendant lequel L'instruc- tion qui en est alors à sa phase de lecture lit un opérande dans la mémoire. On peut voir que, en divisant le battement d'horloge en sous-battements distincts, il est possible d'effectuer, en un unique battement d'horloge, plusieurs accès en mémoire. Ainsi, il est possible de faire en sorte qu'une mémoire à un seul point d'accès se comporte comme si elle était une mémoire à plusieurs points d'accès. La description suivante, conçue à titre d'illustration de l'invention, vise à donner une meilleure compréhension de ses caractéristiques et avantages; elle s'appuie sur les dessins annexés, parmi lesquels: - la figure 1 est un schéma de principe du processeur; la figure 2 est un diagramme temporel montrant les divers signaux temporels produits au cours de chaque battement d'horloge; - la figure 3 est un schéma montrant la manière dont les instructions se chevauchent; et - la figure 4 illustre le fonctionnement du processeur. Comme on peut le voir sur la figure 1, le processeur possède une unité 10 de prise en charge d'instructions servant à prendre en charge des séquences d'instructions dans une mémoire principale (non représentée). Chaque instruction est alors décodée par un circuit logique de décodage 11 qui produit une paire d'adresses MA et RA de lecture d'opérande et un code fonction FN. Le code de fonction est délivré à un registre 12 o il est maintenu jusqu'à ce qu'il en soit besoin. Les adresses MA et RA sont appliquées aux entrées d'un multiplexeur 13, en même temps qu'une adresse d'écriture WA. Chacune des adresses MA, RA et WA comporte quatre bits. La sortie du multiplexeur 13 est connectée à l'entrée d'adresse d'une mémoire à accès direct, ou mémoire vive (MEV), 14 possédant seize emplacements adressables un à un, qui joue le rôle d'une section de registre du processeur. Le signal de sortie du multiplexeur 13 est également délivré à un registre 15, appelé le registre de maintien, puis à un registre 16, appelé le registre d'adresse d'écriture, ou registre WA. La sortie du registre d'adresse d'écriture 16 fournit le signal WA d'adresse d'écriture au multiplexeur 13. La MEV 14 possède une connexion d'entrée-sortie de données qui est raccordée à un bus bidirectionnel 17. Le bus 17 est lui-même raccordé aux entrées de registres 18 et 19 à deux opérandes, appelés les registres R et M. La sortie du registre M est connectée, via un circuit 20 de décalage de byte, à un registre 21, appelé le registre S. Le circuit 20 de décalage de byte peut décaler l'opérande vers la droite ou vers la gauche d'un certain nombre de multiples de huit bits. Les sorties des registres R et S sont raccordées à des entrées d'une unité arithmétique et logique 22. Celle-ci peut effectuer diverses opérations sur les deux signaux d'entrée, sous commande du code de fonction FN venant du registre 12. La sortie de l'unité arithmétique et logique 22 est connectée à un registre 23 de donnée d'écriture, ou registre WR, connecté au bus 17 et, par conséquent, au point d'entrée- sortie de la MEV 14 et aux registres R 18 et M 19. Les signaux de sortie de la MEV 14 et du registre WR 23 sont des signaux logiques à trois états; c'est-à-dire que, en cas d'invalidation, il prend un état neutre dans lequel il n'exerce aucune influence sur l'état du bus 17. Un comparateur 24 compare en continu le signal de sortie du multiplexeur 13 avec le contenu du registre WA 16. En cas d'égalité le comparateur produit un signal de commande qui valide le signal de sortie du registre WR 23, de sorte que celui-ci applique son contenu au bus 17. Inversement, si le comparateur 24 détecte l'inégalité, il valide le signal de sortie de la MEV 14 au lieu de celui du registre WR 23. Signaux d'horloge (venant du circuit d'horloge 25) On se reporte maintenant à la figure 2, o l'on voit que le processeur possède un battement d'horloge de base de nanosecondes, qui est défini par un signal d'horloge EC qui apparaît à la fin de chaque battement. Un autre signal d'horLoge MC est produit à la moitié de chaque battement, soit 60 nanosecondes après EC. Le battement est divisé en trois sous-battements, par le moyen de signaux d'horloge C13 et 2C/3 qui apparaissent respectivement 40 nanosecondes et 80 nanosecondes après EC. La figure 2 montre également la manière selon laquelle le multiplexeur 13 (figure 1) est commandé. Pendant le premier, le deuxième et le troisième sous-battement, il est commuté de façon à respectivement sélectionner les signaux d'entrée WA, MA et RA. Fonctionnement La figure 3 montre la progression de trois instructions successives N, N+1 et N+2. Chaque instruction possède quatre phases: prise en charge, lecture, exécution et écriture. Comme représenté, les phases des instructions se chevauchent si bien que, par exemple, tandis que l'instruction N est dans la phase d'écriture, l'instruction N+1 est dans la phase d'exécution et l'instruction N+2 est dans la phase de lecture. Chaque phase occupe un battement d'horloge, allant d'un signal EC au suivant. On va maintenant décrire, en se reportant de nouveau à la figure 1, le fonctionnement du processeur pour chaque phase d'une instruction particulière. Pendant la phase de prise en charge, l'instruction est prise en charge par le circuit 10. Au début de la phase de lecture, L'instruction est décodée par le circuit logique de décodage 11 afin de produire les adresses d'opérande MA et RA et le code de fonction FN. Pen- dant le deuxième sous-battement de la phase de lecture, le multi- pLexeur 13 sélectionne l'adresse MA et l'applique à la MEV 14 de façon à adresser le premier opérande. Cet opérande est ensuite 2558 6 13 appliqué au registre M en synchronisme avec le signal d'horLoge C/3. Pendant le troisième sous-battement de La phase de lecture, le multiplexeur 13 sélectionne l'adresse RA et L'appLique à la MEV 14 de manière à adresser le deuxième opérande. Celui-ci est alors appliqué au registre R en synchronisme avec le signal d'horloge EC. Dans le même temps, le contenu du registre M est transféré au registre S via le circuit 20 de décalage de byte. Le signal d'hor- loge EC applique également le signal de sortie du registre 13 (soit l'adresse RA) au registre de maintien 15 en synchronisme avec le signal d'horloge. Pendant la première moitié de la phase d'exécution, l'unité arithmétique et logique effectue l'opération spécifiée par le code FN dans le tampon 12. Ensuite, au moment du signal d'hor- loge MC, le résultat de l'opération est appliqué, en synchronisme, au registre WR 23.'De plus, au moment du signal d'horloge C/3, le contenu du registre de maintien 15 est transféré au registre 16 d'adresse d'écriture. Lors du premier sous-battement de la phase d'écriture, le multiplexeur 13 sélectionne l'adresse d'écriture WA dans le registre 16 d'adresse d'écriture et l'applique à la MEV 14 de façon à adresser l'emplacement auquel la donnée doit être écrite. Au moment du signal d'horloge C/3, un signal WE de validation d'écriture est produit, qui provoque l'écriture du contenu du registre d'écriture WR 23 dans la MEV 14. La figure 4 résume le fonctionnement ci-dessus décrit et montre la relation existant entre l'adresse de la MEV (provenant du multiplexeur 13) et le contenu des registres de maintien 15 et d'adresse d'écriture 16. On peut voir que, lors du premier sous-battement de chaque battement d'horloge, la MEV est adressée par l'adresse d'écriture WA pour une instruction particulière (l'instruction N par exemple). Ensuite, lors du deuxième et du troisième sous- battement, la MEV est adressée par les adresses de lecture MA et RA pour l'instruction venant en deuxième place (N+2). De plus, pendant la première moitié du battement d'horloge, l'unité arithmé- tique et logique 22 effectue l'opération spécifiée pour l'instruction intermédiaire (N+1). On peut également voir que l'adresse de lecture RA de l'instruction N est chargée en premier dans le registre de maintien 15, puis dans le registre d'adresse d'écriture 16 de manière à être disponible, lors du premier battement de la phase d'écriture de l'instruction N, pour pouvoir faire fonction d'adresse d'écriture WA. Ainsi, l'adresse d'écriture WA de chaque instruction est toujours identique à la deuxième adresse d'opérande RA. Comme ci-dessus décrit, le contenu du registre d'adresse d'écriture 16 est comparé de manière continue avec l'adresse de la MEV 14 par l'intermédiaire du comparateur 24. Comme le montre la figure 4, ceci signifie que le contenu du registre d'adresse d'écriture 16, après son chargement au moyen de L'adresse de Lecture RA relative à l'instruction N, est comparé lors des sous- battements successifs avec les adresses de lecture MA et RA de l'instruction N+1 et avec l'adresse d'écriture WA de l'instruction N. Cette dernière comparaison conduit toujours évidemment à L'égalité, puisque l'adresse d'écriture WA provient du registre d'adresse d'écriture 16. Ainsi, le signal de sortie du registre WR 23 est toujours validé par le comparateur 24 pendant le sous-battement d'écriture. Ceci permet d'écrire le contenu du registre WR 23 dans la MEV 14 comme ci-dessus indiqué. Si aucune des adresses MA et RA n'est égale au contenu du registre d'adresse d'écriture 16, le comparateur 24 indique l'inégalité pendant les deux sous-battements de lecture. Ainsi, le comparateur valide le signal de sortie de la MEV, ce qui permet la lecture des opérandes adressés dans la MEV et leur délivrance aux registres M 19 et R 18, comme ci-dessus indiqués. On suppose maintenant que l'instruction N écrit un opérande dans la MEV 14 et que l'instruction suivante N+1 demande d'écrire le même opérande, c'est-à-dire que l'une des adresses de lecture MA et RA de l'instruction N+1 est égale à l'adresse d'écriture WA de l'instruction N. On peut voir sur La figure 4 que ceci crée un probLème, puisque Les sous-battements de Lecture de l'instruction N+1 se produisent avant le sous-battement d'écri- ture de l'instruction N. Cette situation est détectée par le comparateur 24, qui détecte l'égalité entre le contenu du registre d'adresse d'écri- ture 16 et l'adresse de la MEV 14 pendant le sous-battement MA ou RA de l'instruction N+1. Le comparateur valide donc le signal de sortie du registre WR 23, et non pas celui de la MEV. Ceci permet d'écrire le signal de sortie du registre WR 23 dans le registre M 19 ou R 18 lorsque ce registre est cadencé. Ainsi, le résultat de l'instruction N (qui est maintenu dans le registre WR 23) est directe- ment délivré au registre M 19 ou R 18, sans passer par la MEV 14. L'opérande demandé est donc disponible pour l'instruction N+1 au moment correct. Le contenu du registre WR 23 est également écrit dans la MEV de la manière normale lors du battement suivant. On peut donc voir que le comparateur 24 possède une double fonction. (a) IL valide le signal de sortie du registre WR 23 au moment du sousbatement approprié afin de permettre l'écriture du résultat d'une instruction dans La MEV 14. (b) Il détecte également les conflits de lecture et d'écriture en comparant l'adresse d'écriture de chaque instruction avec les deux adresses de lecture de l'instruction suivante. Ainsi, le comparateur 24 représente une utilisation très économique de circuit logique. On peut également voir que la division du battement d'horloge en trois sous-battements permet à la MEV 14 de se comporter effectivement comme une mémoire à trois points d'accès, autorisant un accès d'écriture et deux accès de lecture pendant chaque bat- tement d'horloge. Bien entendu, l'homme de l'art sera en mesure d'ima- giner, à partir de l'appareil dont la description vient d'être donnée à titre simplement illustratif et nullement limitatif, diverses variantes et modifications ne sortant pas du cadre de l'invention. 2558 6 13 REVENDICATIONS 1. Appareil de traitement de données du type pipeline qui obéit à une séquence d'instructions possédant chacune une phase de lecture pendant laquelle un ou plusieurs opérandes sont lus dans une mémoire, une phase d'exécution pendant laquelle une opération est effectuée par une unité d'exécution, et une phase d'écriture pendant laquelle un résultat est écrit dans la mémoire, les phases des instructions successives se chevauchant, et l'appareil étant commandé par un signal d'horloge qui fait avancer chaque instruction à sa phase suivante à la fin de chaque battement d'horloge, caracté- risé en ce que chaque battement d'horloge est divisé en un sous- battement d'écriture (EC-C/3) pendant lequel l'instruction qui se trouve alors dans sa phase d'écriture écrit son résultat dans la mémoire (14), et au moins un sous-battement de lecture (C/3; 2C/3-EC) pendant lequel l'instruction qui se trouve alors dans sa phase de lecture lit un opérande dans la mémoire. 2. Appareil selon la revendication 1, caractérisé en ce que chaque instruction possède au moins une adresse de lecture (MA; RA) et une adresse d'écriture (WA) servant à adresser la mémoire (14) pendant les phases de lecture et d'écriture. 3. Appareil selon la revendication 2, caractérisé en ce que l'adresse d'écriture (WA) de chaque instruction est déduite de l'adresse de lecture (RA) (ou d'une des adresses de lecture) de cette instruction. 4. Appareil selon la revendication 2 ou 3, caractérisé en ce que, pendant que chaque instruction est dans la phase de lecture, son adresse de lecture (MA; RA) est comparée avec l'adresse d'écriture (WA) de l'instruction se trouvant alors dans sa phase d'exécution, et, si ces adresses sont égales, un résultat (WR) venant de l'unité d'exécution est rendu directement disponible comme opérande pour l'instruction qui se trouve alors dans la phase de Lecture. 5. Appareil selon la revendication 2 ou 3, caractérisé en ce qu'il comporte un registre (16) d'adresse d'écriture qui emmagasine l'adresse d'écriture (WA) de chaque instruction pendant la phase d'exécution de cette instruction et qui sert à adresser 2558 6 13 la mémoire (14) lorsque l'instruction atteint sa phase d'écriture. 6. Appareil selon la revendication 5, caractérisé en ce que l'adresse d'écriture de chaque instruction est chargée dans le registre (16) d'adresse d'écriture à la fin de chaque sous- battement d'écriture pendant la phase d'exécution de cette instruc- tion et y est emmagasinée jusqu'à la fin du sous-battement d'écri- ture pendant la phase d'écriture de cette instruction. 7. Appareil selon la revendication 5 ou 6, caractérisé en ce qu'il comporte un comparateur (24) qui compare le contenu du registre (16) d'adresse d'écriture avec chaque adresse de lecture et d'écriture appliquée à la mémoire (14), o (a),si Le comparateur détecte une inégalité, un opérande est lu dans la mémoire pour être appliqué à l'unité d'exécution (22) et (b),si le comparateur détecte une égalité, un résultat de l'unité d'exé- cution est écrit dans la mémoire si l'égalité est détectée pendant un sous-battement d'écriture, ou bien est renvoyé, comme opérande, à l'unité d'exécution, si l'égalité est détectée pendant un sous- battement de lecture. 8. Appareil selon la revendication 7, caractérisé en ce qu'il comporte un registre (23) de donnée d'écriture qui est chargé au moyen du résultat de l'unité d'exécution (22) pendant le sous- battement de lecture, ou le premier sous-battement de lecture, de chaque battement d'horloge. 9. Appareil selon la revendication 8, caractérisé en ce que le registre (23) de donnée d'écriture est connecté à l'entrée de donnée de la mémoire (14) et est également connecté,en même temps que la sortie de donnée de la mémoire, à l'entrée de l'unité d'exécution. 10. - Appareil selon la revendication 9, caractérisé en ce que le signal de sortie de la mémoire (14) est validé lorsque le comparateur (24) détecte l'inégalité, et le signal de sortie du registre (23) de donnée d'écriture est validé lorsque le compa- rateur détecte l'égalité.