Brevet FR2231295A1 — publié le 19741220

L'invention concerne un registre à empilement (dit aussi mémoire silo) servant de mémoire-tampon entre une source d'informations et une unité de traitement d'informations non synchronisées. Pour transmettre des informations entre deux systèmes fonctionnant chacun à des vitesses instantanées qui leur sont propres, donc a priori différentes, il faut interposer entre ces deux systèmes une memoire-tampon. Cette mémoire doit pouvoir stocker les informations au rythme imposé par la source de données et envoyer ces informations, dans l'ordre exact où elles ont été reçues, à l'unité de traitement d'informations sur sa demande. L'entrée et la sortie des informations, écriture et lecture, doivent donc se faire de façon totalement asynchrone. On connaît des registres à empilement ou mémoires qui remplissent ces conditions dont le principe de fonctionnement peut être comparé à un magasin dit "silo" car les unités d'information sont transmises aussitot qu'elles arrivent vers la place la plus proche de la sortie disponible. Ainsi, lorsqu'une information entre dans le registre qui est complètement vide, elle est décalée jusqu'au dernier étage du registre, l'information suivante doit occuper l'avant-dernier étage et ainsi de Suite. Du côté de l'unité de traitement d'informations, on peut donc lire immédiatement la première unité d'information, appelée ci-après "mot", et après la lecture, les autres mots doivent se décaler d'un étage vers la sortie. Ce mode de fonctionnement est obtenu dans des registres connus par un décalage en bloc de tous les mots succédant un étage vide à la suite de l'enlèvement d'un mot par la sortie du registre. Un mot qui arrive à l'entrée du registre est aussitôt décalé jusqu'à l'étage vide le plus proche de la sortie. Pour réaliser ce mode de fonctionnement, des circuits de commande très complexes tels que décrits notamment dans l'article de G. FRAGAKIS tiré de la revue Electronique Nouvelle, mai 1971, sont nécessaires pour bien coordonner tous les mouvements à l'intérieur du registre, et pour éviter toute perte d'informations lorsque le registre est saturé ou lors de ce transfert à l'intérieur du registre. Ces circuits de commande doivent à tout moment connaître l'état de remplissage de chaque étage et en déduire le plus vite possible les signaux de transfert correspondants. Dans ces registres à empilement connus, le signal de transfert doit en général traverser un nombre de portes qui croit avec le nombre d'étages, et la vitesse de fonctionnement diminue donc quand le nombre d'étages augmente. L'invention vise à simplifier ces circuits de commande en proposant un registre à empilement servant de memoire-tampon entre une source et une unité de traitement d'informations non synchronisées qui est caractérisé par le fait que le transfert de l'information contenue dans l'étage n vers l'étage n+1 du registre est conditionné uniquement par l'absence d'information dans l'étage n+1 indépendamment du remplissage d'autres étages, n étant variable entre I et le nombre total des étages moins 1. On voit donc que chaque étage est commandé par un signal de transfert qui lui est propre et qui dépend seulement de l'état de remplissage de l'étage qui doit recevoir les informations : ce signal de transfert n'a lieu que si cet étage est vide. Si le principe des bascules utilisées le permet, le transfert peut se faire non synchronisé, mais en général il est utile de prévoir une horloge interne au registre qui conditionne tous les mouvements à l'intérieur du registre sauf éventuellement l'écriture dans le premier étage et la lecture du dernier étage du registre. Dans cette réalisation, le signal de transfert ne traversant qu'une porte par étage et étant indépendant pour chaque étage, la vitesse de fonctionnement n'est pas limitée par le nombre d'étages qui peut donc etre très grand. Ainsi, outre la simplification apportée aux circuits de commande, la structure proposée permet d'accroitre la vitesse de fonctionnement du système, ainsi que la fiabilité. En outre, la structure adoptée permet de réaliser les étages du registre au moyen de bascules de type et de technologie quelconques ce qui permet l'emploi de bascules les moins onéreuses, réduisant ainsi le coût du système. Dans une réalisation préférée de l'invention, le registre comporte dans chaque étage p+l bascules dont p bascules sont réservées à l'enregistrement d'un mot d'information de p bits et dont la dernière bascule de chaque étage dite de marquage reçoit un UN lorsque l'étage porte une information et un ZERO lorsque l'étage est libre. Le signal qui commande le transfert entre l'étage n et le suivant est uniquement fonction de l'état de la bascule de marquage appartenant à l'étage n+1. Pour signaler à la source d'informations que le registre tampon est saturé ou que simplement l'étage d'entrée n'est pas encore disponible pour de nouvelles informations, on relie la sortie de la bascule de marquage appartenant à l'étage d'entrée aux circuits de commande de la source d'informations. D'autre part, on relie l'entrée de cette première bascule à la source d'information, permettant à cette dernière d'indiquer au registre qu'elle a envoyé une information. De même, on relie la sortie de la bascule de marquage appartenant au dernier étage du registre à l'unité de traitement d'informations, pour signaler que la mémoire-tampon contient au moins une information qu'elle peut délivrer à la source. De la même façon, on relie une entrée de remise à zéro de la bascule de marquage appartenant au dernier étage du registre à l'unité de traitement d'informations permettant à cette dernière de signaler au registre qu'elle a bien reçu le mot contenu dans le dernier étage et que le tampon peut donc éliminer ce mot et se décaler pour offrir un nouveau mot à l'unité de traitement. L'invention sera décrite ci-après en détail à l'aide d'un exemple de réalisation qui est représenté sur la figure unique ci-jointe. Entre une source d'informations 1 et un collecteur d'informations 2 qui peut être une unité de traitement de telles informations, on interpose une memoire tampon qui est réalisée avec un registre à empilement dont chaque étage comporte plusieurs mémoires binaires qui sont réalisées en bascules. Les informations sont regroupées en plusieurs éléments binaires (bits) qui sont transférés d'un étage à l'autre en parallèle : on appelle cet ensemble "mot". Soit p le nombre d'éléments binaires d'un mot et également le nombre de bascules par étage réservées à l'enregistrement de ce mot. Les bascules peuvent être réalisées selon toute technique connue. Souvent, une entrée de commande leur est associée qui conditionne tout changement d'état binaire en fonction des potentiels qui sont présents sur leurs entrées. Pour obtenir un transfert d'un mot en parallèle, toutes les entrées de commande d'un étage sont mises en parallèle et constituent l'entrée unique de commande de transfert de l'étage. Dans la figure, on distingue un étage d'entrée 3, un étage de sortie 4 et trois étages intermédiaires 5, 6 et 7. En général le nombre d'étages intermédiaires n'est pas limité. Les entrées uniques de commande de transfert de chaque étage portent les chiffres de référence 13 à 17. A chaque étage est associée une bascule supplémentaire dite de marquage qui conditionne la génération des signaux de commande de transfert de cet étage. Ces bascules portent les références 23 à 27 ; elles indiquent l'état de remplissage du registre en prenant l'état ZERO lorsque l'étage correspondant est vide et l'état UN lorsque l'étage est rempli d'un mot. Chaque bascule contient une entrée directe 8, une entrée inverse 9, une sortie directe 10 et une sortie inverse Il. La sortie directe 10 de chaque bascule de marquage est directement liée à l'entrée directe de la bascule suivante tandis que la sortie inverse de chaque bascule de marquage est liée à l'entrée inverse de la bascule précédente. Toutes les bascules de marquage sont directement commandées par une horloge 12 qui délivre sur leurs entrées 20 une cadence d'impulsions aussi rapide qu'il est possible tenant compte de la vitesse de basculement. Les bascules de marquage étant ainsi reliées, sous la commande de l'horloge 12, toute bascule vide (état ZERO sur sa sortie directe) ne se remplit que si la précédente est pleine (état UN sur sa sortie directe) et toute bascule pleine ne se vide que si la suivante est vide. La sortie inverse de chaque bascule de marquage est, en plus, reliée à une première entrée d'une porte ET 33 à 37 dont la sortie est directement branchée sur l'entrée de commande de transfert appartenant à l'étage 3 à 7 respectivement. Les deuxièmes entrées de toutes les portes ET 33 à 37 sont reliées directement à la sortie de l'horloge 12. Un signal de transfert est donc délivré par une porte ET en synchronisme avec l'horloge lorsque la bascule de marquage de l'étage correspondant indique que l'étage est vide. Sous l'effet de ce signal, le mot contenu dans l'étage précédent (n-l) est transféré dans l'étage considéré (n). Il est à signaler ici que cette opération est effectuée indépendamment de l'état de remplissage de cet étage précédent. En effet, si l'étage précédent est au préalable vide, c'est un mot non significatif qui est transféré, mais les bascules de marquage correspondantes aux étages (n) et (n-1) gardent l'état ZERO. Bien qu'un tel transfert soit à priori inutile, il n'est toutefois pas génant et il simplifie énormément les circuits logiques. Par contre, si l'étage précédent (n-l) est au préalable plein, c' est un mot significatif (envoyé par la source) qui est transféré dans l'étage considéré (n), la bascule de marquage correspondant à l'étage (n) prend l'état UN et la bascule de marquage correspondant à l'étage (n-l) sera remise à ZERO dès l'impulsion d'horloge 12 suivante. Ainsi se développe donc le processus d''empilement" des mots du côté du collecteur. De la même façon, après lecture d'un mot, se réalise le décalage du stock de mots empilés, puisque chaque mot transféré produit un étage vide derrière lui, entraine le transfert du mot vers cet étage, et ainsi de suite. A la structure décrite ci-dessus, sont en outre associées une bascule 30 de commande d'entrée d'informations dans le registre d'empilement et une bascule 31 de commande de sortie ; ces bascules 30 et 31 sont interposées respectivement entre la source 1 et la première bascule de marquage et entre le collecteur 2 et la dernière bascule de marquage. La bascule 30 comporte une entrée de mise à UN, reliée par une connexion 19 à la source d'informations 1, et une entrée de mise à ZERO commandée par la sortie inverse 11 de la première bascule de marquage 23. La sortie de la bascule 30 est reliée à l'entrée directe 8 de la première bascule de marquage. La bascule 31 est identique à la bascule 30 et présente une entrée de mise à UN reliée à la sortie directe de la dernière bascule de marquage 24 et une entrée de mise à ZERO reliée par une connexion 22 au collecteur 2. La sortie inverse de la bascule 30 est reliée à l'entrée inverse de la bascule de marquage 24. La sortie inverse 11 de la bascule de marquage 23 du premier étage 3 est reliée par une connexion 18 à la source d'informations I et signale à la source 1 la disponibilité du registre à recevoir un mot. Lorsque la source ensuite veut livrer un nouveau mot, elle délivre alors une impulsion par la liaison 19 à l'entrée de la bascule 30 de commande qui prend l'état UN. De la même façon, la dernière bascule de marquage 24 a sa sortie normale reliée par une liaison 21 à l'unité de traitement 2 indiquant à cette dernière qu'un mot se trouve dans le dernier étage 4 du registre. Quand l'unité a bien lu ce mot, elle envoie, par la liaison 22, sur l'entrée de remise à zéro de la bascule 31 une impulsion mettant cette dernière à ZERO (UN sur la sortie inverse). La cadence d'entrée et de sortie du registre selon l'invention peut atteindre la moitié de la fréquence de l'horloge interne 12 car il faut une impulsion de l'horloge pour transférer un mot d'un étage n à l'étage n+l et une deuxième impulsion pour remettre à zéro la bascule de marquage de l'étage n. A la mise sous tension, toutes les bascules doivent être mises à zéro indiquant que le registre est complètement vide. Dans le registre selon l'invention, on peut remplacer les circuits spéciaux de remise à zéro par la simulation d'une lecture du registre tout en interdisant l'entrée de mots et ceci pendant une durée supérieure au temps maximal de transfert. L'invention n'est pas limitée à la réalisation décrite en détail. On peut, en particulier, appliquer l'invention à d'autres types de bascules et à un registre linéaire qui ne comporte qu'un bit par mot. En plus, on peut, dans certains cas, epargner les bascules de marquage lorsque les codes utilisés pour les mots excluent l'appartenance de ZERO simultanément dans toutes les positions du mot. Dans ce cas, la sortie d'une porte OU réunissant toutes les bascules d'un étage porte sans ambiguité l'information sur l'état de remplissage de l'étage. L'invention est applicable dans tous les dispositifs de traitement d'informations binaires entre deux unités qui ne sont pas parfaitement synchronisées. REVENDICATIONS 1/ Registre à empilement servant de mémoire-tampon entre une source et une unité de traitement d'informations non synchronisées, caractérisé par le fait que le transfert de l'information contenue dans l'étage n vers l'étage n+l du registre est conditionné uniquement par l'absence d'information dans l'étage n+1 indépendamment du remplissage d'autres étages, n etant variable entre 1 et le nombre total d'étages moins 1. 2/ Registre selon la revendication 1, caractérisé par le fait que le transfert est également commandé par une impulsion d'une horloge. 3/ Registre selon l'une des revendications 1 et 2, caractérisé par le fait que chaque étage comporte p+l bascules, dont p bascules sont réservées à l'enregistrement d'un mot d'information de p bits et dont la dernière bascule de chaque étage dite de marquage reçoit un UN lorsque l'étage porte une information et un ZERO lorsque l'étage est libre, la génération du signal qui commande le transfert entre l'étage n et le suivant étant autorisée uniquement par la bascule de marquage appartenant à l'étage n+l.