FR 2128360 A1 19721020 FR 7206386 A 19720222 72 06386 1 2128360 La présente invention concerne le traitement des données et,.plus particulièrement, une technique de compression des données. L'utilisation de codes de longueur variable pour obtenir une compression des données est bien connue dans l'art antérieur. Selon ce procédé de conversion 5 de codes, les caractères ou autres éléments fondamentaux constituant les données à traiter sont codés en chaînes de bits de longueur variable, les chaînes les plus courtes étant affectées aux éléments qui se présentent le plus fréquemment de telle sorte que les chaînes de bits représentant respectivement ces éléments aient une longueur moyenne nettement inférieure à celle des chaînes de bits re-10 présentant de tels éléments dans un format classique de code de langueur fixe. L'emploi de codes de langueur variable permet donc de transmettre et/ou d'emmagasiner les données pendant qu'elles se trouvent sous une forme comprimée, et, par conséquent, de gagner du temps lors de leur transmission et d'économiser la place disponible en mémoire. Toutefois, lorsque de telles données doivent 15 être utilisées dans un calculateur, il est nécessaire qu'elles soient reconverties en un format de code de longueur fixe. Les moyens employés pour effectuer cette conversion ne devraient pas présenter d'inconvénients susceptibles de se traduire par la perte des avantages obtenus grâce au processus de compression des données. 20 Dans tout système de codage à code de longueur variable, des considérations pratiques limitent le nombre maximum de bits qui peuvent être traités en tant qu'unité d'information pendant le processus de conversion des codes. Par exemple, si la longueur de chaque unité d'information dans le format à code de longueur fixe ne peut dépasser huit bits Cc'est à dire un octet), le système ne peut 25 traiter les informations que caractère par caractère puisqu'il faut un octet pour représenter un caractère dans le format classique de code de longueur fixe. Il est évidement souhaitable que le traitement des données se fasse par unités aussi importantes que possible, mais les codes de longueur variable peuvent être beaucoup plus courts ou beaucoup plus longs que les codes correspondants de 30 longueur fixe, et par conséquent le dispositif de décodage doit être capable de traiter le plus long des codes de longueur variable qui peut résulter du processus de codage. Les dimensions, le prix et la complexité de ce dispositif deviennent donc des facteurs limitatifs. Ce qui est souhaitable à l'heure actuelle c'est un nouveau concept de codage à codes de longueur variable permettant de 35 traiter les données à une vitesse beaucoup plus élévée au moyen des opérations nécessaires de conversion de codes sans pour autant entraîner une augmentation inacceptable du coût et de la complexité du matériel employé. L'un des principaux objets de la présente invention est donc d'augmenter la longueur de l'unité d'information de base qui peut être traitée par un 40 système de compression des données du type à code de longueur variable (par 72 06386 2 2128360 exemple d'un octet à trois octets), et par conséquent, d'augmenter considérablement la vitesse de traitement de ces données, sans pour autant augmenter dans des proportions inacceptables le coût et la complexité des différents dispositifs d'emmagasinge et de traitement des données utilisées lors du processus de 5 conversion des codes. Un autre objet de l'invention est de réduire la longueur moyenne des codes de longueur variable qui résultent du codage de codes de longueur fixe d'une longueur donnée. L'invention permet d'atteindre les objectifs ci-dessus à l'aide d'un princi-10 pe de codage original qui permet d'exécuter le processus de conversion des codes grâce à un ensemble de dispositifs tant originaux que classiques de type original, la partie originale du système étant relativement petite et peu coûteuse, et la partie classique étant réalisable dans le cadre d'une installation normale de calculateur. 15 Pour les besoins de l'application de l'invention, les données initiales à coder sont traitées par chaînes relativement longues de bits ou de "mots", chacune d'elles contenant par exemple trois octets ou 24 bits. Ces mots sont codés selon un procédé original en vertu duquel un certain nombre de mots qui se présentent le plus fréquemment tpar exemple 1023 mots sur un maximum possible 24 20 de 2 mots) sont codés en mots de longueur variable de telle sorte que chaque mot de code de longueur variable comporte un préfixe indiquant la longueur de ce mot à l'exclusion de tout autre mot. Ces préfixes eux-mêmes ont une longueur variable. En conséquence, le processus de codage combine effectivement deux opérations de codage de mots de longueur variable ce qui permet de réduire la lon-25 gueur moyenne des mots de code de longueur variable qui sont engendrés par le processus de codage. Tous les mots de code et tous les préfixes sont d'une nature telle qu'aucun mot de code ne constitue le début d'un mot de code plus long et qu'aucun préfixe ne constitue le début d'un préfixe plus long. Pour décoder de tels mots de longueur variable, on emploie une petite mémoire 30 associative du type dit à "recherche seulement" (c'est-à-dire une mémoire qui est uniquement tenue d'engendrer un signal d'indication d'accord) pour décoder les seuls préfixes. Une mémoire d'un type plus classique récupère, en réponse au préfixe décodé et au reste du mot de code de longueur variable, le mot de code de longueur fixe correspondant. L'indication de longueur permet d'informer cette 35 dernière mémoire du nombre de bits contenus dans le reste du mot à décoder. Etant donné que la mémoire associative n'est tenue d'assurer aucune fonction de récupération des informations, ses dimensions et son coût sont relativement modestes. Un processus de codage différent est employé dans le cas des mots de code 24 qui se présentent moins fréquemment Ce'est-à-dire le groupe de 2 - 1023 mots) 40 qui ne sont pas traités de la façon ci-dessus. Ce groupe de mots est identifié 72 06386 3 2128360 collectivement par un préfixe de code dit "DUPLICATION", et chaque mot sous sa forme codée se compose de ce code DUPLICATION suivi des 24 bits du mot de code de longueur fixe initial. Ces mots ont donc une longueur fixe qui dépasse leur longueur fixe initiale de la longueur du code DUPLICATION. Cependant, cette lon-5 gueur totale est inférieure aux longueurs qu'auraient un grand nombre des mots de code de longueur variable correspondants moins fréquents, et comme les mots codés à l'aide du code DUPLICATION se produisent assez peu fréquemment, ils n'augmentent pas de façon appréciable la moyenne globale des langueurs des mots de code dans la base de données codée. Le décodage d'un mot codé de cette façon 10 particulière consiste simplement à rejeter le préfixe du coaeDUPLICATIQN et à utiliser le reste inchangé du mot de code comme code de sortie de longueur fixe. D'autres objets, caractéristiques et avantages de la présente invention ressortiront mieux'de l'exposé qui suit, fait en référence aux dessins annexés à ce texte, qui représentent un mode de réalisation préféré de celle-ci. 15 La figure 1 représente de façon très schématique la façon dont les mots de code initiaux de longueur fixe CLF3 peuvent être codés en mots de longueur variable CLV) conformément aux principes de la présente invention. La figure 2 représente ce processus de codage appliqué à un exemple particui-lier. 20 La figure 3 est un schéma synoptique représentant quelques uns des composants d'un décodeur fonctionnant conformément à la présente invention. La figure 4 représente de façon plus spécifique le système de décodage de la figure 3. La figure 5 est un schéma synoptique représentant l'ensemble du décodeur et 25 montrant les rapports qui existent entra ses différents composants. Les figures 6A et 6b constituent un sfahéma des circuits de la partie du décodeur désignée Unité I sur les figures précédantes. La figure 7 représente schématiquement la partie du décodeur désignée Unité II sur les figures précédantes. 30 Les figures 8A et 8B constituent un schéma des circuits de la logique de commande du décodeur. Les figures 9A et Sd constituent un schéma des circuits du générateur d'impulsions. La figure 10 est un organigramme illustrant le fonctionnement du décodeur. 35 La figure 11 est un schéma représentant quelques détails des circuits de la mémoire associative et de ses commandes. La présente invention permet, lorsqu'elle est appliquée à des systèmes de compression des données, de traiter ces dernières par unités importantes ou blocs (c'est-à-dire plusieurs octets à la fois) sans nécessiter de dispositifs 40 compliqués pour effectuer les fonctions de conversion des codes. Comme on l'a 72 06386 4 2128360 mentionné ci-dessus, trois octets ou davantage de données codées de façon classique peuvent être codés à la fois en codes LV, puis décodés de façon à obtenir une vitesse de traitement des données beaucoup plus élevée et une compression beaucoup plus élevée des données que cela n'est possible dans le cas des 5 systèmes de conversion des codes qui ne peuvent traiter qu'un octet à la fois. Le système de conversion des codes représenté schématiquement sur les figures 1 à 4 est conçu de manière à traiter deux caractères de données à la fois. Si l'on suppose que chaque caractère est représenté par un octet de données codé de façon classique, il est théoriquement possible que la base de données i 6 10 comporte jusqu'à 2 paires de caractères différentes, ce nombre étant le nombre total de configurations différentes à deux octets. Dans l'exemple présent, étant donné le type particulier de base de données considéré, on suppose que 21 des paires de caractères disponibles se produiront suffisamment souvent pour justifier l'emploi de codes LV et d'obtenir une compression de ces paires de caractè* • 15 res. La fréquence d'apparition des paires de caractères restantes est si faible quilne autre forme de codage est jugée plus pratique. Dans ce dernier cas, la représentation initiale par codes de deux octets de chacune de ces paires de caractères est ajoutée à un code DUPLICATION, qui devient le préfixe du mot de code résultant. Les suppositions faites ci-dessus quant à la longueur de l'unité 20 de données d'entrée et à la fréquence d'apparition des ensembles de caractères ont simplement pour but de faciliter la compréhension de l'invention et ne sont pas nécessairement afférentes à la description d'un système utilisable en pratique. La table A ci-dessous représente, à titre d'exemple, le codage d'une base 25 de données supposée dans laquelle la paire de caractères "IS" est supposée être la paire se présentant le plus fréquemment, suivie par ordre de fréquence décroissante par "TH", "W (ces symboles représentant deux caractères blancs ], et ainsi de suite. Les 21 paires de caractères se présentant le plus fréquemment sont représentées par les codes LV dans la seconde colonne de la table A. La 30 longueur de ces codes varie de 2 bits à 8 bits dans le présent exemple. Chaque code LV comporte un préfixe de longueur variable qui identifie la longueur du code, c'est à dire que chaque préfixe n'indique qu'une longueur donnée de mot de code. Par exemple, comme on peut le constater en se reportant aux deuxième, troisième et quatrième colonnes de la table A, chaque code LV dont le premier 35 bit est un "0" a une longueur de deux bits, et, par conséquent, le préfixe "0" représente une longueur de code de 2. Toujours à titre d'exemple, tout mot de code qui commence par la combinaison de bits "110" a une longueur de 5 bits et, par conséquent, le préfixe "110" représente une longueur de code de 5. Dans certains cas, plusieurs préfixes différents peuvent être affectés à un même mot 40 de code. Toutefois, un meme préfixe ne peut pas etre affecté à plus d'une 72 06386 5 2128360 longueur de de code. Ainsi, par exemple, la longueur.de code 7 peut être représentée par l'un ou l'autre des préfixes "11101" et "111001", mais aucun de ces deux préfixes ne peut représenter une longueur de code autre que 7. Un mot de code LV [100) a un préfixe mais pas de reste dans le présent exemple. TABLE A 1 Paire de Mot de Longueur Préfixe Reste caractères Code LV du code IS 10 TH m WE EA IT 15 slS AN CH LY ON 20 IN BR OU GE AU 25 GI F0 RT NG 0F 30 Toutes les autres 00 01 100 1011 1010 11000 11001 11010 11011 111101 111100 1110100 1110101 1110110 1110111 1110011 1110010 11100000 11100001 11100010 11100011 11111 (DUPLICATION) 2 2 3 4 4 5 5 5 5 6 6 7 7 7 7 7 7 8 8 8 8 5 0 0 100 101 101 110 110 110 110 11110 11110 11101 11101 11101 11101 111001 111001 111000 111000 111000 111000 11111 0 1 Néant I 0 00 01 10 II I 0 00 01 10 II I 0 00 01 10 II Ne s'applique pas (Voir paragraphe suivant) 35 40 paires Note : iS = caractère blanc Comme le montre la table A, les paires de caractères codés peuvent avoir l'un quelconque de neuf préfixes différents (en considérant le code DUPLICATION comme un préfixe), chaque préfixe désignant une longueur de code particulière à l'exclusion de touteautre. Le code DUPLICATION de 5 bits 11111 est son propre préfixe et est considéré comme représentant une longueur de code de 5, pour 72 06386 B 2128360 une raison qui apparaitra bientôt. Cependant, tout mot de code dont le préfixe est le code DUPLICATION aura Cdans le présent example) un total de 21 bits, soit le .code DUPLICATION de 5 bits suivi des 16 bits initiaux (2 octets) qui représentaient la paire de caractères sous sa forme initiale, c'est-à-dire sous celle 5 d'un code de lobgueur fixe CLF). La longueur du code DUPLICATION peut être déterminée par la fréquence d'apparition collective des membres de son ensemble de mots de codej il s'ensuit que le code DUPLICATION peut être traité comme l'un des préfixes de longueur variable et également comme un mot de code LV, bien quil ne possède lui-même aucune contre-partie dans les mots de code LF. Les -jq différents préfixes et les longueurs de code qu'ils représentent sont indiqués dans la table B ci-dessous. TABLE B Préfixe Longueur du Code 0 2 15 100 3 101 4 110 5 11111 (DUPLICATION) 5 11110 6 20 11101 7 111Q01 7 111000 8 Le dispositif permettant de coder les paires de caractères n'est pas décrit ci-après de façon détaillée parce que sa construction particulière est sans 25 rapport avec le principe de codage et que son mode de fonctionnement ressortira clairement des fonctions analogues assurées par le dispositif de décodage dont on trouvera plus loin les descriptions détaillées. Une table de codage telle que la table A ci-dessus est emmagasinée dans une mémoire 10 (figure 1) qui peut être d'un type classique au une mémoire associative. Le mot de code LF 30 (2 octets) représentant la paire de caractères à coder est utilisé comme adresse pour trouver dans la table 10 le mot de code LV correspondant ou, le cas échéant, le code DUPLICATION. Pour réduire au minimum l'espace requis dans la mémoire, le code DUPLICATION peut être emmagasiné dans une unique position de mémoire qui est adressée en commun par tous les mots de code LF qui ne correspondent à 35 aucune des adresses auxquelles les autres mots de code LV sont emmagasinés. Les techniques permettant d'obtenir ce résultat sont bien connues.-Le mot de code adressé est alors lu dans la mémoire et transféré à un registre de données 12. Les informations emmagasinées dans le registre 12 contiennent non seulement le mat de code désiré, mais également, d'ordinaire, quelques bits indésirables. 40 Par exemple, si le registre 12 est conçu de manière à emmagasiner le mot de 72 06386 7 2128360 code le plus long de la table de code [supposé ici avoir une longueur de 8 bits) et si un mot de code de trois bits est lu dans la table 10, seuls les trois premiers bits emmagasinés dans le registre 12 sont utiles. Un moyen doit donc être prévu pour lire le nombre désiré de bits dans le registre 12 à l'exclusion 5 des autres. Ce résultat est obtenu à l'aide d'un dispositif de décalage du contenu du registre qui fonctionne sous le contrôle d'un compteur de longueur 14. Chaque fois qu'un mot de code est lu dans la mémoire et transféré au registre 12, une indication de longueur (troisième colonne de la table A ci-dessus) est chargée dans le compteur de longueur 14 afin d'indiquer le nombre de bits qui 10 doivent être transférés par décalage hors du registre 12 afin de constituer le mot de code de sortie désiré. Dans le cas d'un code DUPLICATION, cinq bits sont ainsi transférés hors du registre 12, mais lorsque le code de sortie est transmis à une unité d'emmagasinage ou à un dispositif de décodage, les 16 bits du mot d'entrée LF initial sont ajoutés au code DUPLICATION de 5 bits pour former 15 le code de sortie définitif, qui a une longueur de 21 bits. Un exemple de codage simple est illustré par la figure 2, dans laquelle le symbole "id" représente un espacement. Le texte d'entrée à coder est constitué par la phrase anglaise suivante : WELL, itfTHIStffeSISlrikSEASY, tfISN'Ti!ÎIT?tf 20 Ce texte est codé deux caractères à la fois. En se reportant à la table A, on voit que la première paire de caractères "WE" donne le mot de code de 4 bits 1011, dans lequel 101 est le préfixe d'indication de longueur. La paire de caractères suivante"LLM est supposée ne pas se trouver parmi les 21 paires de caractères qui se produisent le plus fréquemment dans la base de données consi-25 dérées. Son codage consiste donc d'abord à engendrer le code DUPLICATION de 5 Bits, 1111, puis à ajouter à ce dernier les 16 bits qui représentaient MLL" dans le format initial à codes LF. En d'autres termes, le code à 8 bits 11010011, qui représente normalement "L" dans la natation classique afférente aux codes LF, est successivement engendré deux fois après que le code DUPLICATION ait été 30 engendré, ce qui donne la représentation à 21 bits de "LL" illustrée sur la figure 2. Dans le cas d'autres bases de données, il peut arriver que MLLH soit une paire de caractères se présentant plus fréquemment et un code LV pourrait par conséquent être affecté à cette paire. Le processus de codage se poursuit de la façon indiquée dans la figure 2 35 conformément au système de codage de la table A, et donne finalement une série de bits qui représente le texte d'entrée sous sa forme codée à l'aide de codes LV. Les données sont donc comprimées, avec tous les avantages que cela présente en ce qui concerne leur transmission et/ou leur emmagasinage à long terme. Toutefois, avant qu'elles ne puissent être utilisées dans un calculateur, les 40 données ainsi comprimées doivent être décodées, c'est-à-dire reconverties dans 72 06386 8 2128360 le format initial à codes LF. Un dispositif de décodage permettant de réaliser cette conversion conformément à la présente invention est représenté d'une façon très générale par la figure 3 et de façon plus détaillée par la figure 4. Chaque préfixe de mot de code LV est utilisé comme 5 argument pour rechercher un mot correspondant dans une mémoire associative 20 [figure 3), de préférence du type à trois états décrite ci-après. Etant donné que ces préfixes sont eux-mêmes de longueur variable, la mise en place correcte de chaque préfixe successif dans une position où il peut servir d'argument de recherche constitue l'un des problèmes que la présente invention doit résoudre, 10 La façon dont ce problème est résolu est décrite ci-après. La mémoire associative 20 est du type "recherche seulement", ce qui signifie qu'elle est uniquement tenue d'engendrer un signal d'indication d'accord dans la rangée contenant le mot pour lequel il y a accord. Ce signal désigne simplement le numéro ou l'adresse d'un mot particulier emmagasiné dans une mémoire 22 du type "lecture 15 seulement", dont les éléments d'emmagasinage sont d'un type classique. Les informations nécessaires aux fins du processus de décodage sont lues dans la mémoire 22. Les mémoires 20 et 22, prises ensemble, constituent le premier étage du décodeur, ci-après appelé unité I. Parmi les informations lues dans la mémoire 22 ( qui est décrite ci-après 20 de façon plus détaillée) se trouve une adresse de base choisie qui (avec quelques modifications) est utilisée dans une mémoire adressée 24 de type classique constituant le second étage du décodeur, désigné ci-après unité II. La sélection de l'adresse de base est déterminée par le préfixe au mot de code LV utilisé comme argument d'entrée pour la mémoire 20. Le reste éventuel de ce mot de code 25 LV consitue une autre entrée de l'unité II afin d'indiquer un déplacement qui doit être effectué et employé en même temps que l'adresse de base choisie pour constituer une adresse finale dans la mémoire 24 adresse à laquelle se trouve le mot de code LF ou "objet" correspondant au mot de code LV d'entrée. La description ci-dessus résune brièvement le processus de décodage. La 30 mémoire associative 20 emmagasine uniquement les préfixes d'un nombre relativement faible de mots de code LV, représentant les combinaisons de caractères les plus fréquemment employées, plus un code DUPLICATION qui est le préfixe commun de tous les autres mots de code d'entrée, et indique simplement une position de la mémoire 22 où se trouvent les informations nécessaires pour 35 assurer l'opération de décodage. Une faible partie seulement des éléments d'emmagasinage auxquels fait appel le processus de décodage doit donc être constituée par des éléments de la mémoire associative, et par conséquent les dimensions de la mémoire associative 20 peuvent être beaucoup plus faibles que celles des mémoires 22 et 24. 40 La figure 4 représente de façon plus détaillée les principales étapes du 72 06386 S 2128360 processus de décodage. Dans un but de simplification, la disposition des composants diffère de celle représentée sur les autres figures. La série de bits d'entrée, contenant les bits de mots de code d'entrée successifs, entre dans le registre d'arguments R5 de la mémoire associative 20. On suppose dans le pré-5 sent exemple que le préfixe le plus long contient six bits (comme indiqué par la table B ci-dessus).Par conséquent, le registre d'arguments f?5 est capable d'emmagasiner 6 bits. Cela donne une "fenêtre" de 6 bits qui permet d'examiner la série de bits d'entrée, comme l'indique les crochets référencés 26 dans la partie inférieure droite de la figure 26. La mémoire 20 procède à une recherche 10 associative à partir de l'argument de 6 bits emmagasiné dans le registre R5. La mémoire associative 20 convertit l'argument en un signal d'indication d'accord qui est transmis sur l'une d'un groupe de lignes de sortie, une de ces lignes étant prévue pour chaque préfixe disponible. Chacun de ces préfixes est emmagasiné dans une rangée ou "mot" de la mémoire 20. Les éléments d'emma-15 gasinage de la mémoire 20 sont des dispositifs à trois états, à savoir "O" binaire,"1"binaire, et "indifférence" (ce dernier état étant représenté par des X sur la figure 4). La construction de tels dispositifs d'emmagasinage est bien connue dans l'art antérieur. Chaque dispositif à trois états peut emmagasiner l'un des bits d'un préfixe. Ainsi, les cellules qui n'ont pas pour mission 20 d'emmagasiner des bits (dans les mots contenant des préfixes courts) sont mises dans leur état " d1indifférence", ce qui les empêche d'être interrogées. Si l'on suppose que les 6 premiers bits de la série de données d'entrée (représentés entre les crochets 26 sur la figure 4) ont été introduits dans le registre d'arguments R5, la recherche associative est effectuée sur la base 25 de cet ensemble de 6 bits, qui est supposé, dans l'exemple présent, être 101111. Le seul mot de la mémoire associative 20 qui correspond à cette combinaison de bits particulière est le mot numéro 2, qui contient le préfixe 101. En pareil cas, la sortie de la mémoire 20 est un signal d'indication d'accord transmis sur la ligne de sortie correspondant au mot N°2. Comme on peut le voir 30 que la figure 4, cette inoication d'accord désigne un mot de la mémoire 22 dont l'adresse porte le même numéro. On notera que, des 6 bits qui ont été introduits dans le registre d'arguments R5, seuls les trois premiers sont utilisés en l'occurrence. Etant donné que tous les préfixes de longueur variable ne comportent pas de préfixes, (dans le sens qu'aucun préfixe ne peut constituer 35 le oébut d'un préfixe plus long), il ne peut y avoir qu'un seul accord pour chaque argument avec lequel on adresse la mémoire 20. Un code DUPLICATION (11111) est traité de la même façon que n'importe quel autre préfixe. Ainsi, un code DUPLICATION emmagasiné dans les cinq cellules de gauche du registre d'argument R5 concorde avec le mot N° 4 de "la mémoire 20, 40 et par conséquent, un signal d'indication d'erreur est engendré sur la ligne 72 06386 10 2128360 de sortie de ce mot. Un exemple est donné plus loin. Toujours dans le cas des conditions représentées sur la figure 4, où le préfixe 101XXX (mot N°2) a été choisi, le signal d'indication d'accord adresse le mot possédant le numéro correspondant dans la mémoire "lecture seulement" 5 22 .Chaque mot emmagasiné dans la mémoire 22 possède quatre champs. Le premier champ, qui contient 3 bits, représente la longueur du préfixe* le second champ, contenant deux bits, représente la longueur du reste du code LV en cours, après déduction de celui-ci du préfixe. Etant donné que chaque préfixe n'indique qu'une unique longueur de code particulière, la longueur du préfixe et la lon-10 gueur du reste du code sont connues à partir du préfixe lui-même, et cette information peut par conséquent être pré-emmagasinée dans la mémoire 22. Le troisième champ, qui contient un bit, est mis dans un état "1" ou dans un état "D" selon que le préfixe est ou non un code DUPLICATION. Dans le présent exemple, le seul des bits du troisième champ (à savoir, celui qui se rapporte au mot N°4) 15 est mis dans l'état"1ï ceux des autres mots étant mis dans l'état "0". Le quatrième champ de la mémoire 22 contient les différentes adresses de base qui, comme on l'a expliqué ci-dessus à l'aide de la figure 3, sont normalement utilisées pour déterminer la position du mot de sortie finalement décodé dans la mémoire 24 constituant l'unité II. 20 Lorsque le signal d'indication d'erreur engendré par la mémoire 20 est appli qué à la mémoire 22, les données emmagasinées dans les différents champs du mot adressé dans la mémoire 22 sont lues et transférées respectivement dans les registres de données R1, R2, R3 et R4. L'indication relative à la longueur du préfixe emmagasinée dans le registre R1 est utilisée (de la façon décrite ci-25 après) pour décaler le contenu du registre d'argument R5 du nombre de bits contenus dans le préfixe du code LV qui vient d'être décodé. Ainsi, dans le présent exemple, les trois bits 101 du préfixe sont transférés par décalage hors du registre R5 et abandonnés. L'adresse de base emmagasinée dans le registre R4 doit à présent être modifiée d'une certaine valeur afin de trouver l'adresse fi-30 nale correcte dans la mémoire 24. Cette modification d'adresse est effectuée de la façon suivante: Le nombre de bits restant dans le code LV en cours est indiqué par la longueur du reste (01) emmagasinée dans le registre R2. Cette information est utilisée pour décaler le contenu du registre R5 du nombre de bits contenus dans ce 35 reste, soit dans le présent exemple d'1 bit. Le bit 1 qui est lu dans le registre R5 dans le présent exemple est introduit à l'extrémité de plus faible poids du registre R4, et le contenu du registre R4 est simultanément décalé vers la gauche d'une position de bit. L'effet de cette opération est le même que si l'adresse de base initiale 00111 avait été convertie en une nouvelle adresse 40 de base 01110, à laquelle un 1 avait ensuite été ajouté pour créer une nouvelle 72 06386 11 2128360 adresse de 01111. Cette adresse résultante:01111, ou 15 en notation décimale, est introduite dans le registre R4 en tant qu'adresse finale permettant de déterminer la position de la paire de caractères décodés dans la mémoire 24. Cette paire de caractères, HWEM, est ensuite introduite dans le registre R7, où 5 elle est lue en tant qu'objet" décodé. Par suite des différentes opérations de décalage décrites ci-dessus, les 4 premiers bits, 1011, de la combinaison initiale de six bits emmagasinée dans le registre d'arguments R5 (c'est-à-dire les six bits 101111 entre les crocnets 2B sur la figure 4) ont été extraits par décalage du registre R5. La combinaison 10 initiale à six bits a ainsi été remplacée par une nouvelle combinaison à six bits (mise entre les crochets 28) dans laquelle les deux premiers bits sont les mêmes que les deux derniers bits de la combinaison précédente. Cela est indiqué par le recouvrement partiel, de deux bits, des bits contenus entre les crochets 26 et 28. Ces rapports sont évidemment susceptibles de varier car des modifica-15 tions des longueurs du préfixe et du reste se produisent au cours au processus de décodage. □ans l'exemple considéré, le second ensemble de six bits (111111) qui est maintenant emmagasiné dans le registre d'arguments R5 a pour préfixe le code DUPLICATION de 5 bits, 11111. L'opération de recherche s'effectue comme précé-20 demment dans la mémoire 20, à cela prés que, dans le cas présent, c'est le mot N° 4 (11111X) qui est le mot pour lequel il y a accord. Lorsque les données emmagasinées dans le mot 4 de la mémoire 22 sont lues et introduites dans les registres de données R1, R2, R3 et R4, le bit a'idication de DUPLICATION emmagasiné dans le registre R3 est mis dans l'état 1 et non dans T'état "0", 25 Gomme précédemment. Il en résulté une modification de la série des opérations, comme on le verra plus loin. Les informations contenues dans le registre R1 sont employées comme précédemment pour décaler le contenu du registre d'arguments R5 vers la gauche du nombre de bits contenus dans le préfixe (5 bits dans l'exemple présent), ces bits étant 30 extraits du registre R5 et abandonnés. Ainsi, les 5 bits du code DUPLICATION 11111 ont été transférés hors du registre R5. En même temps, cinq nouveaux bits provenant de la série de bits d'entrée sont introduits dans le registre R5 depuis son extrémité droite ou de plus faible poids. Les six bits qui se trouvent à présent dans le registre R5 sont, dans le cas présent, les six premiers bits 35 d'une série de 16 bits constituant le mot ae code LF représentant la paire de caractères en cours, "LL". La présence d'un 1 dans le registre R3 provoque une modification du fonctionnement dans laquelle 16 bits de données sont introduits par décalage dans le registre R5, ce qui se traduit par le transfert par décalage d'un nombre correspondant de bits du registre R5 au registre Rd à 16 bits. 40 En effet, les 16 bits qui faisaient suite au code DUPLICATION dans la suite de 72 06386 12 2128360 bits ont été acheminés jusqu'au registre R6. Etant donné que cette combinaison de bits est identique au code LF initial pour la paire de caractères considérée, elle peut être lue directement dans le registre RB en tant que mot de sortie décodé. 5 Pour récapituler, si aucun code DUPLICATION n'est présent, l'opération de décodage consiste à faire passer les informations contenues dans la série de bits d'entrée par les registres R5 et R4 et à chercher la sortie décodée dans la mémoire 24. Tous les champs de la mémoire 22 sont utilisés pour effectuer cette opération. Si, au contraire, un code DUPLICATION est présent, les informations 10 contenues dans la série de bits d'entrée sont acheminées par 1'intermédiaire du registre R5 jusqu'au registre R6, dans lequel la sortie décodée est obtenue directement On notera que dans ce dernier type d'opération, seuls le premier et le troisième champs de la mémoire 22 sont effectivement utilisés. Les informations contenues dans les deuxième et quatrième champs sont en l'occurrence 15 superflues. Les mémoires 22 et 24 de la figure 4 sont des mémoires à vitesse de fonctionnement élevée du type généralement utilisé dans les calculateurs classiques, et les registres R1 à R4, R6 et R7 peuvent être du nombre des registres standard associés à de telles mémoires. La mémoire associative 20 possède un registre 20 d'arguments R5, mais n'exige pas de registres de données, puisque sa sortie adresse directement la mémoire "lecture seulement" 22. Toutes les unités indiquées sur la figure 4, ainsi que d'autres parties du calculateur qui les utilise, sont décrites de façon plus détaillée ci-après. La figure 5 représente schématiquement le décodeur, dont les différentes 25 parties sont représentées de façon détaillée sur les figures BA à 9B. Les unités I et II du décodeur correspondent aux unités portant les mêmes désignations des figures 3 et 4. La logique de commande, figures 5, SA et 8B, en réponse aux impulsions d'horloge ou de synchronisation engendrées par le générateur d'impulsions, figures 5, 9A et SB, commande les opérations du premier étage de décodage, 30 unité I (figures 5 et 6A] et du second étage de décodage, unité II (figures 5 et 7). Les lignes numérotées qui relient les différentes unités de la figure 5 correspondent aux câbles portant les mêmes numéros qui sont représentés sur les figures suivantes. Comme on l'a mentionné précédemment, l'unité I, figures 6A et SB , comprend 35 une mémoire associative 20 (qui est également représentée de façon schématique sur la figure 4) contenant des cellules de mémoire à trois états, chacune desquelles peut être mise dans un état "1" binaire, "0" binaire ou d'indifférence, ce dernier état interdisant l'interrogation de la cellule, c'est-à-dire empêchant celle-ci d'engendrer un signal de désaccord, qu'un signal d'interrogation 40 1 ou 0 lui soit appliqué. Les cellules de mémoire associatives à trois états 72 06386 13 2128360 et d'autres cellules à états multiples sont bien connues [cf. par exemple, le brevet N° 1 581 240 déposé en France par la demanderesse le 19 Août 1966]et la construction d'une telle cellule n'est donc pas décrite ci-après de façon détaillée. Un autre type de cellule de mémoire associative utilisant deux cel-5 Iules de mémoire classiques fonctionnant ensemble dans un mode à trois états est connu dans l'art antérieur, Etant donné que la mémoire associative 20 ne contient qu'un unique mot susceptible de correspondre à un préfixe en cas d'interrogation, on peut supposer qu'il n'y aura correspondance ou accord que dans une unique rangée de cette mémoire à chaque interrogation. Les circuits de com-10 mande 30 des figures BA et 11, qui connectent la sortie de la mémoire associative 20 à l'entrée de la memoire "lecture seulement" 22, peuvent donc être d'une construction relativement simple. Comme le montre la figure 11, chaque rangée ou "mot" de cellules dans la mémoire 20 possède une ligne de désaccord 32 sur laquelle un signal apparait si 15 l'une quelconque de ces cellules (autres qu'une cellule dans son état "d'indifférence" contient un bit dont la valeur diffère de celui du bit d'interrogation dans cette colonne. Le mot pour lequel il y a accord est par conséquent celui qui est indiqué par l'absence d'un signal sur sa ligne de désaccord 32. Chaque ligne 32 est respectivement couplée à la borne d'entrée 0 d'une bascule bistable 20 34 d'indication d'accord. Les bornes d'entrée 1 des indicateurs d'accord 34 sont connectées à une ligne U5, qui est excitée par intermittence (de la façon décrite plus loin] afin de mettre tous les indicateurs d'accord 34 dans leur état 1.Pendant l'interrogation de la mémoire 20, tous les indicateurs d'accord 34 sont remis dans leur état 0, à l'exception de celui qui est associé au mot contenu 25 dans la mémoire 20 pour lequel il y a accord. La sortie 1 de chaque indicateur 34 est connectée à la borne d'entrée d'un circuit ET 36 à deux entrées qui lui est associé. L'autre borne d'entrée de chaque circuit ET 3B est connectée à une ligne D7 qui est excitée à l'instant approprié pour lire la sortie de la mémoire associative 20. L'un des circuits ET 36, celui qui est associé au mot 30 pour lequel il y a accord dans la mémoire 20, est conducteur, ce qui permet à l'impulsion de lecture de passer dans la ligne d'adresses 36 connectée à la sortie de ce circuit ET. Une ligne 38 est prévue pour chaque rangée de cellules de mémoire dans la mémoire 22 (figures 11 et 43. Ainsi, l'absence d'un signal de désaccord sur l'une des lignes 32 choisie provoque l'apparition d'un signal 35 d'indication d'accord sur la ligne d'adresses 38 correspondante. Il résulte de ce qui précède que chaque fois qu'un préfixe d'interrogation est appliqué en tant qu'argument à la mémoire associative 20, une rangée choisie de cellules de mémoire dans la mémoire 22 est adressée par ce préfixe. Le registre d'arguments R5, figure 4 et 6B, possède une capacité suffisante pour emmage-40 siner le préfixe le plus long, qui est supposé dans le présent exemple contenir 72 06386 14 2128360 B bits. Chaque mot de la mémoire 20 est de même capable d'emmagasiner un maximum de six bits. Cependant, certains des mots comportent moins de bits significatifs que d'autres. Avant qu'une interrogation valable puisse avoir lieu, le préfixe d1interogation doit être correctement introduit dans le registre d'argu-5 ments R5, son bit de poids le plus élevé étant placé à l'extrémité de poids le plus élevé du registre R5. Lorsque l'interrogation est terminée, le préfixe suivant doit être disposé de la façon requise en vue de 1'interrogtion. Etant donné que le nombre de bits compris entre le début d'un préfixe et le début du préfixe suivant peut varier d'un mot de code d'entrée à l'autre, la logique de commande 10 doit déterminer depuis l'unité I le nombre de bits d'entrée qui doivent être traités dans le décodeur, et comment ils doivent être traités, afin de réaliser le décodage de chaque mot de code d'entrée avant que le déchiffrement du mot de code d'entrée suivant ne puisse commencer. La suite de la présente description permettra de mieux comprendre la façon dont cette opération est effectuée. 15 Pour les besoins de la présente description, on suppose que l'opérateur du système sait d'avance le nombre de mots de code d'entrée qui doivent être décodés. Ce nombre est mis dans un compteur de mots 40, figure 0B, dans les circuits logiques de commande, au début d'un décodage et est progressivement décrémenté au fur et à mesure que chaque mot de code d'entrée est déchiffré. Le processus 20 de décodage prend fin lorsque le nombre de mots restant à décoder est réduit à zéro. On comprendra mieux le fonctionnement du système en se reportant fréquemment à l'organigramme de la figure 10 au cours de la description qui suit. Chacun des blocs de cet organigramme est associé à différentes étapes du processus de déco-25 dage indiquées par des numéros de référence précédés de la lettre □ (par exemple D1, 02, etc..) Les désignations 01, 02, etc... , sont également appliquées à différentes lignes partant des monostables du générateur d'impulsions, figures 9A et 9B, qui engendrent les impulsions d'horloge requises aux fins de la chronologie les différentes opérations du décodeur de la façon décrite ci-après. 30 Le processus de décodage est déclenché par l'application d'une impulsion dite de départ à une ligne 42, figure 9A, qui aboutit à la borne d'entrée d'un monostable 44, qui est le premier d'une chaîne de monostables qui commande la chronologie des différentes fonctions de décodage. Le monostable 44 passe à son niveau haut et engendre une impuslion d'horloge qui est transmise sur la 35 ligne D1, laquelle aboutit par l'intermédiaire d'un câble 46, figures 9A, 8B et 8A, puis d'un câble 48, figures 8A et 6A, à un dispositif approprié Cnon représenté) pour mettre le registre R1, figure 6A à la valeur binaire 0110 , ou 6 en notation décimale. Pendant cette phase, le registre R1 fonctionne à la manière d'un compteur décroissant afin que 6 bits de données d'entrée puissent 40 être introduits dans le registre d'arguments à 6 bits R5, figure 6B, de la 72 06386 15 2128360 mémoire associative 20. La façon dont cette opération est effectuée est décrite ci-dessous. Lorsqu'il passe à son niveau bas, le monostable 44, figure 9A, engendre un signal qui est transmis par l'intermédiaire du circuit OU 50 à un monostable 5 52, qui passe à son niveau haut et engendre une impulsion de chronologie qui est transmise sur la ligne D2 (câble 46), figures 9A et 8A. Cette dernière impulsion est acheminée en parallèle, par l'intermédiaire des circuits OU 54 et 56, figure 8A, jusqu'aux lignes 58 et 60, respectivement, qui pénètrent dans le câble 48. Comme on peut le voir sur la figure 6A, l'impulsion transmise sur 10 la ligne 60 est appliquées un dispositif de décrémentation (non représenté) afférent au registre R1, es qui a pour effet de décrémenter le contenu de ce registre d'une unité. Dans cet exemple, étant donné que le registre R1 était initialement mis à 0110 (ou 6 en notation décimale), cette valeur est à présent ramené à 0101[ou 5 en notation décimale), Entre temps, l'impulsion transmise 15 sur la ligne 58, figures 6A et 6B, est appliquée à une porte 62, laquelle fait alors passer le premier digit de la série de bits d'entrée dans la position de plus faible poids du registre d'arguments R5 de la mémoire associative 20. Le premier bit de l'argument est ainsi introduit dans le registre R5. Il devient maintenant nécessaire de vérifier la valeur des registres R1 20 (qui est utilisé comme compteur de bits d'arguments) afin de déterminer si cette valeur a été ramenée à zéro. Dans le cas présent, on a supposé que cette valeur venait d'être ramenée de 6 à 5 et, par conséquent, le registre ne contient pas uniquement des zéros. Les sorties"0Mdes différentes bascules bistables du registre R1 sont appliquées en parallèle à un circuit ET 66, figure 6A. Lorsque la 25 valeur du registre R1 diffère de zéro, la sortie du circuit ET 66 est telle qu'aucun signal n'est appliqué à la ligne de sortie 68. La valeur du compteur de longueur est vérifiée lorsque le monostable 52, figure 9A, passe à son niveau bas, ce qui a pour effet de faire passer le monostable 64 à son niveau haut et d'exciter la ligne D3. Cela rend conductrice une porte 70, figure 6A, qui trans-30 met le signal non zéro par l'intermédiaire de l'inverseur 74 à une ligne 76, qui aboutit, par l'intermédiaire du câble 78, figures 8A, 8B et 9A, au monostable 80, lequel passe à son niveau haut afin d'engendrer une impulsion de chronologie sur la ligne 04. Cette dernière impulsion traverse le circuit OU 82, figure 6A, et est ensuite acheminée, par l'intermédiaire d'une ligne 84, figures 35 8A, 6A et 6L, à un dispositif de décalage à gauche du registre d'arguments R5. Le contenu de ce registre est alors décalé vers la gauche d'une position de bit, ce qui laisse la position de bit de poids le plus faible libre afin de recevoir le bit d'entrée suivant. Lorsqu'il passe à son niveau bas, le monostable 80, figure 9A, engendre une 40 impulsion "qui est transmise par l'intermédiaire de la ligne 85 et du circuit 72 06386 16 2128360 OU 50, au monostable 52, qui passe de nouveau à son niveau haut. Cela déclenche de nouveau les étapes 02 et D3 afin d'introduire un autre bit dans le registre d'arguments R5, figure 6B, de décrémenter le compteur de longueur R1, figure 6A, et de vérifier la valeur résultante de ce compteur. Si cette valeur est 5 toujours différente de zéro, le monostable 60 passe de nouveau à son niveau haut afin d'exécuter l'étape 04 ce qui provoque un décalage à gauche du contenu du registre d'arguments et un retour à l'étape 02. Cette série d'étapes D1 à D4 est résumée ci-dessous: 01 Mise du compteur de longueur R1 à 0110 (6 décimal) 10 02 Introduction d'un bit à l'extrémité droite du registre R5.Décrémen tation de R1. Passage à l'étape D3. D3 Vérification du registre R1. Si son contenu est différent de zéro, passage à l'étape D4. (S'il est égal à zéro, passage à l'étape Û5, décrite plus loin). 15 D4 Décalage du contenu du registre R1 d'un bit vers la gauche. Retour à l'étape 02. Finalement, six bits de données seront introduits dans le registre d'arguments R5 et la valeur du compteur de longueur R1 sera ramenée à zéro. Dans ces conditions, lorsque l'impulsion de chronologie 03 est appliquée à la porte 70, 20 figure 8A, un signal d'indication de zéro est transmis depuis la ligne 66, par l'intermédiaire de la porte 70 à une ligne 86, figures 8A et 9A, et de là, par l'intermédiaire d'un circuit OU 88, à un monostable 90, qui passe à son niveau haut pour engendrer une impulsion de chronologie sur la ligne 05. Cette dernière impulsion traverse le câble 46, figures 9A, 6B et 6A, puis le câble 48, figures 25 8A et 6A, pour parvenir aux circuits de commande 30 de la mémoire associative 20, figures 6A et 11, afin de mettre les indicateurs d'accord de la mémoire associative dans leur état "1". Cela prépare la mémoire associative 20 à procéder à une recherche à partir de l'argument emmagasiné dans le registre d'arguments R5. Le registre R5 contient un argument de 6 bits qui comprend le préfixe du 30 mot de code à décoder. Il peut arriver qu'un mot de code d'entrée ait un préfixe de 6 bits, mais dans la plupart des cas le préfixe a moins de 6 bits; en conséquence, l'argument peut contenir un ou plusieurs bits provenant du reste du mot d'entrée en cours de traitement, et l'argument pourra dans certains cas contenir tous les bits d'un mot de code suivis d'un ou plusieurs bits dans le mot 35 de code suivant. Comme on l'a expliqué précédemment, la mémoire associative 20 est conçue de manière à n'agir que sur le préfixe qui est disposé à l'extrémité de poids le plus élevé (à gauche) du registre d'arguments R5. L'opération de recherche est déclenchée lorsque le monostable 90, figure 9A, passe à son niveau bas, ce qui a pour effet de faire passer le monostable 92 à son niveau haut et 40 d'engendrer sur la ligne D6 une impulsion qui parvient, par l'intermédiaire des 72 06386 17 2128360 câbles 46 et 46, figures 9A, 8B, 6A et 6A, au registre d'arguments R5, figure ainsi 6b, provoquant/1'application de l'argument emmagasiné dans ce registre à la mémoire associative 20. Le mot pour lequel il y a accord contenu dans cette mémoire 20 est ainsi déterminé et le mot correspondant de la mémoire 22 est 5 prêt à être lu. Lorsque le monostable 92, figures 9A, passe à son niveau bas, le monostable 94 passe à son niveau haut et engendre une impulsion de chronologie qui est appliquée, par l'intermédiaire de la ligne D7, figures 9A, 8A et 6A, à la ligne de lecture pour les circuits de commande 30 de la mémoire associative. 10 Cela se traduit par la lecture des différentes informations emmagasinées dans la rangée de mots associée de la mémoire 22. Ainsi, l'indication de longueur au préfixe est lue dans le premier champ de la mémoire 22 et introduite dans les trois positions de plus faible poids du registre R1. Ce registre a une capacité de 4 bits parce qu'il est employé comme compteur de longueur lors d'une phase 15 ultérieure, pendant laquelle il doit être capable d'emmagasiner une valeur de 15 (ou 1111 en notation binaire). Toutefois, pendant la phase actuelle, trois positions de bits seulement du registre R1 sont utilisées pour emmagasiner une indication de langueur du préfixe. La quatrième position ou position de poids le plus élevé doit par conséquent être mise à zéro. Cette mise à zéro est ef-20 fectuée par l'impulsion de chronologie D7 à l'instant où la ligne de lecture est excitée comme l'indiquB la figure 6A. Les deux bits qui sont lus dans le second champ de la mémoire 22, figure 6A, lequel champ indique le nombre de bits restant dans le mot de code d'entrée à l'exclusion de son préfixe, sont chargés dans le registre R2. Un unique bit, 25 qui est un "1" si le préfixe en cours de traitement est un code DUPLICATION et un "0" dans tous les autres cas, est chargé dans le registre R3. Une adresse de base à 5 bits est lue dans le quatrième champ de la mémoire 22 et emmagasinée dans le registre R4. Les registres R1 à R4, figures SA et SB, contiennent donc à présent des informations qui indiquent respectivement: la longueur du préfixe; 30 la longueur du reste du mot de code d'entrée; si le préfixe est ou non un code DUPLICATION; et une adresse de base qui constitue une partie des données nécessaires pour engendrer l'adresse finale à laquelle on trouvera le mot déchiffré dans l'unité II (figures 4 et 7). Lorsqu'il passe à son niveau bas, le monostable 94, figure 9A, engendre 35 une impulsion qui est transmise par l'intermédiaire de la ligne 96 et du circuit OU 98 au monostable 100, lequel passe à son niveau haut et engendre une impulsion Cela de chronologie qui est transmise sur la ligne D8./déclenche (voir l'organigramme de la figire 10) une série d'étapes D8, D9 et D10 dont le but est de décaler le préfixe du mat de code d'entrée en cours de traitement de manière à le faire 40 sortir du registre d'arguments R5, et d'introduire dans ce même registre un 72 06386 18 2128360 nombre équivalent de nouveaux bits cependant que le reste du mot d'entrée en cours de traitement est décalé vers la gauche pour remplacer le préfixe. Ce dernier devient inutile une fois que la recherche associative a été effectuée par la mémoire 20. 5 Les étapes qui viennent d'être décrites sont étudiées ci-après d'une façon plus détaillée. L'impulsion de chronologie D8 engendrée par le monostable 100, figure SA, est appliquée à une porte 102, figure 8A, laquelle autorise alors le passage d'un signal zéro ou non zéro selon le cas, provenant du compteur de longueur R1, figure 6A. Etant donné que l'indication de longueur du préfixe se 10 trouve emmagasinée dans le registre R1, ce dernier a une sortie non zéro sur la ligne 68, figures 6A et 8A, laquelle sortie est inversée par l'inverseur 74 et transmise par l'intermédiaire de la porte 102 à une ligne 104 passant dans le câble 78 et aboutissant au monostable 106, figure 9A. Entre temps, le monostable 100 passe à son niveau bas sans que ce changement d'état ait un effet 15 quelconque. Lorsqu'il passe à son niveau haut, le monostable 106 engendre une impulsion de chronologie qui est transmise sur la ligne D9 et est transmise, par l'intermédiaire du circuit OU 82, figure 6A, et de la ligne 84, figures 6A et 6B, au dispositif de décalage à gauche du registre d'arguments R5. De ce fait, le premier bit de l'ancien préfixe est décalé et sort du registre R5. 20 Lorsque le monostable 106 à son niveau bas, le monostable 108 passe à son niveau haut et engendre une impulsion de chronologie qui est transmise sur la ligne 010, figures 8A et 9A, puis traverse les circuits OU 54 et 56 et est appliquée respectivement aux lignes 58 et 60. L'impulsion présente sur la ligne 58 est transmise à la porte d'entrée 62, figure SB, afin de permettre l'intro-25 duction du bit suivant dans le registre d'arguments R1. Simultanément, l'impulsion présente sur la ligne 60, figures 8A et 6A, a pour effet de décrémenter d'une unité la valeur du registre R1. Lorsqu'il passe à son niveau bas, le monostable 108 engendre une impulsion qui est retransmise, par l'intermédiaire de la ligne 110 et du circuit OU 98, 30 au monostable 100, figure 9A, ce qui a pour effet de le faire de nouveau passer à son niveau haut. De ce fait, une impulsion de chronologie 08 est de nouveau engendrée. Par suite, la porte 102, figure 8A est de nouveau rendue conductrice et vérifie la valeur du registre R1, figure 6A. Si la valeur de ce. registre n'a pas encore été ramenée à zéro, cela indique qu'un ou plusieurs bits de 35 l'ancien préfixe se trouvent encore dans le registre d'arguments R5. Les étapes D9 et D10 sont par conséquent répétées afin d'extraire par décalage un autre bit du registre R5, introduisant ainsi un nouveau bit dans ce registre et réduisant la valeur du compteur de longueur R1 de la façon décrite ci-dessus. La valeur du registre R1 est finalement ramenée à zéro.Ce point étant 40 atteint, lorsque l'impulsion de chronologie D8 est engendrée par le monostable 72 06386 19 2128360 100, figure 9b, et que la porte 102, figure 8A, est rendue conductrice, le signal z6ro transmis depuis le registre R1 par l'intermédiaire de la ligne 63 et de la porte 102, est appliqué à la ligne 112, figures 8A et 9A. Cela a pour effet de faire passer le monostable 114. à son niveau haut et d'engendrer une 5 impulsion de chronologie sur la ligne D11, figures 9A et SA, rendant ainsi une porte 116 conductrice. L'entrée appliquée à la porte 116 est soit un oit "1',' soit un bit "0" fourni par le registre R3 contenant un bit, figure 6A et indique si le préfixe du mot de code d'entrée en cours de traitement est ou non un code DUPLICATION. Cette vérification est indiquée sur l'organigramme de la figu-10 re 10 comme étant l'étape D11. Pour le moment, on supposera que le préfixe qui vient d'être décodé n'est pas un code DUPLICATION. Dans ces conditions, la valeur du registre R3 est ramenée à zéro, ce qui fait apparaître une sortie sur une ligne 118 aboutissant à la porte 116, figure SA. (Si le préfixe avait été un code DUPLICATION, c'est la ligne 119 et non la ligne 118 qui aurait été excitée). 15 Toujours dans la même hypothèse, l'impulsion présente sur la ligne 118 est transmise par l'intermédiaire de la porte 116, figure 8A, de la ligne 120, figures 8A et 9A, et du circuit OU 122, à un monostable 124. Cela déclenche une nouvelle étape dont le but est de déterminer s'il reste ou non des digits dans le mot de code d'entrée en cours de traitement une fois que le préfixe a été 20 déduit de celui-ci. L'indication relative au nombre de bits éventuellement contenus dans le reste de ce mot, est emmagasinée dans le registre R2, figure 6A. Lorsqu'il passe à son niveau haut, le monostable 124, figure 9A, engendre une impulsion qui est transmise sur la ligne D12, figures 9A et 8A, et rend conductrice une porte 126. L'information relative au contenu du registre R2 est ache-25 minée par une ligne 128, figure 6A, partant de la sortie d'un circuit ET 130. Le côté entrée du circuit ET 130 est connecté aux bornes 0 des basculés bistables du registre R2. S'il reste au moins un bit dans le mot de code d'entrée en cours de traitement après déduction de son préfixe, aucun signal ne traverse le circuit ET 130 et la ligne 128 reste à son niveau normal, c'est-à-dire à son niveau 30 bas. Un signal est de ce fait transmis par l'inverseur 132, figure 8A, par l'intermédiaire de la porte 126 et de la ligne 134, figures 8A et 9A, au monostable 136, qui passe à son niveau haut et engendre une impulsion sur la ligne D13. Cette impulsion est acheminée par l'intermédiaire des câbles 46 et 48 jusqu'au aispositif de décalage à gauche du registre R4, lequel contient à cet 35 instant la valeur lue dans le quatrième champ (contenant les adresses de base) de la mémoire 22. Le contenu du registre R4 est par conséquent décalé d'un bit vers la gauche, figure 6B. Lorsque ce décalage se produit, il est nécessaire de transférer dans le registre R4 (à son extrémité de plus faible poids) le bit restant qui se trouve 40 emmagasiné à l'extrémité de poids le plus élevé du registre R5. Ce transfert est 72 06386 20 2128360 effectué lorsque le monostable 136, figure 9A, passe à son niveau bas et provoque le passage au niveau haut du monostable 140, lequel engendre alors sur la ligne D4 une impulsion qui est transmise par l'intermédiaire des câbles 46 et 48 à la porte 142, figura 60. Lorsqu'elle est ainsi rendue conductrice, cette 5 porte transfère le bit "1" ou "0" de l'extrémité de poids le plus élevé du registre R5 à l'extrémité de plus faible poids du registre R4. Lorsqu'il passe son niveau bas, le monostable 140, figure 9A, engendre une impulsion qui est transmise sur une ligne 144 et fait passer le monostable 146, figure 93, à son niveau haut afin qu'une impulsion soit engendrée sur la ligne D15. Cela entraîne 10 un décalage à gauche du contenu du registre R5 afin que le bit suivant du mot de code passe à la position de poids le plus élevé de ce registre. Ainsi, l'impulsion de chronologie présente sur la ligne D15, figures 9A et 8A, est transmise par l'intermédiaire du circuit OU 82 à la ligne 84, qui aboutit au dispositif de décalage à gauche du registre R5, figure 6B. Le contenu du registre R5 est 15 alors décalé vers la gauche d'une position de bit. Un nouveau bit doit alors être mis dans la position de plus faible poids du registre R5. Cela se produit lorsque le monostable 146, figure 9b, passe à son niveau bas et provoque le passage au niveau haut du monostable 150, lequel engendre une impulsion sur la ligne D16. Cette dernière impulsion est transmise par l'intermédiaire du circuit 20 OU 54, figure 8B, à la ligne 58 qui aboutit à la porte 62, figure SES, laquelle introduit un nouveau bit dans la position de plus faible poids du registre R5. Simultanément, l'impulsion transmise sur la ligne. Û16 parvient à un dispositif de décrémentation du registre R2 afin de réduire sa valeur d'une unité [figure 6A ) L'étape D12 est alors répétée pour vérifier le contenu du registre 25 R2. Lorsqu'il passe à son niveau bas, le monostable 150, figure 9B, engendre une impulsion qui est transmise sur une ligne 152, par l'intermédiaire d'un circuit OU 122, figure 9A, au monostable 124, régénérant ainsi l'impulsion de chronologie de la ligne U12. Comme on l'a précédemment mentionné, cela a pour effet de rendre la porte 126, figure 8A de nouveau conductrice afin de vérifier 30 le contenu du registre R2. Si cette vérification montre de nouveau que le contenu du registre est non zéro, il se produit une répétition de la séquence constituée par les étapes D13 (décalage à gauche du contenj du registre R4), D14 (transfert du bit le plus à gauche du registre R5 à la position de bit la plus à droite du registre R4), D15 (décalage à gauche du contenu du registre R5), 016 (introduc-35 tion d'un bit dans la position la plus à droite du registre R5 et décrémentation du contenu du registre R2) et 012 (vérification du contenu du registre R2). Tous les bits restants du mot de code d'entrée en cours de traitement sont finalement décalés et introduits dans le registre R4 par son extrémité droite et, parallèlement, l'adresse de base initiale emmagasinée dans le registre R4 40 est décalée vers la gauche d'un nombre correspondant de positions de bits. Ce 72 06386 21 2128360 processus combine en fait une adresse de base modifiée [correspondant au préfixe) et une valeur de déplacement correspondant au reste du mot de code d'entrée en cours de traitement qui a maintenant disparu du registre d'arguments R5. Le registre R5 contient à présent, à la place de ce mot, le début au moins du 5 mot de code d'entrée suivant, dont le bit de poids le plus élevé se trouve à l'extrémité gauche du registre R5. Ainsi, tous les décalages requis ont été effectués pour mettre le mot de code suivant dans la position voulue afin de permettre une recherche associative. Il est maintenant nécessaire de lire dans l'unité II, 10 figure 7, le code LF équivalent au mot de code d'entrée qui vient d'être décalé et extrait du registre R5. La valeur du contenu du registre R2 a entre-temps été ramenée à zéro. Cette valeur du registre R2 est vérifiée en temps opportun, lorsqu'une impulsion est transmise sur la ligne D12 afin de rendre conductrice la porte 126, figure 8A, et le signal non zéro présent sur la ligne 128, figu-15 res 6A et 9A, est transmis, par l'intermédiaire de la porte 126 et de la ligne 154, au monostable 156, figure 9B. Lorsqu'il passe à son niveau haut, ce monostable engendre une impulsion qui est transmise par l'intermédiaire de la ligne D17 et des câbles 46 et 158, figure» 9A, 8B, 8A et 7, au dispositif d'accès à la mémoire 24 de l'unité II du calculateur, figure 7, en vue d'une opération 20 de lecture. Lorsqu'on accède ainsi à la mémoire 24» celle-ci lit les données emmagasinées à l'adresse indiquée par le registre R4, figure 6B, qui fait à présent fonction de registre d'adresses de mémoire pour la mémoire 24. Dans cet exemple, les données qui doivent être lues sont une paire de caractères. Cette adresse est 25 communiquée à la mémoire 24 depuis le registre R4 par l'intermédiaire des cables 160, 72 et 158 (figures 6B, 8A, 8B et 7) et enfin du câble 162, figure 7. La lecture dans la mémoire 24 du mot adressé (c'est-à-dire de la paire de caractè-res)et son transfert au registre de données R7 commence alors. Afin d'avoir la certitude que cette opération d'accès et de lecture sera terminée avant le début 30 de toute autre opération, une vérification de l'achèvement de l'opération de lecture est effectuée. Cette vérification a lieu lorsque le monostable 156, figure 9B, passe à son niveau bas et transmet une impulsion, par l'intermédiaire du circuit OU 164 au monostable 166, qui passe à son niveau haut et engendre une impulsion sur la ligne D18. Cette dernière impulsion est appliquée à la porte 35 168, figure 8B, qui est rendue conductrice afin de vérifier l'achèvement de l'opération d'accès et de lecture. Une bascule bistable 170 associée à la porte 16B avait été mise dans son état 1 antérieurement à l 'application à la ligne D17 d'une impulsion afin de déclencher l'opération d'accès et de lecture. Si la bascule 170 se trouve toujours dans son état 1, la porte 168 transmet alors un 40 signal à la ligne 172 aboutissant au monostable 174, figure 9B. Lorsqu'il passe 72 06386 22 2128360 à son niveau haut, le monostable 174 engendre une impulsion qui est transmise par l'intermédiaire de la ligne 176 et du circuit OU 164 au monostable 166, ce dernier étant de ce fait maintenu à son niveau haut. Le monostable 174 est lui-même maintenu à son niveau haut tant que le monostable 166 rests à son 5 niveau haut. Ainsi, les monostables 166 et 174 restent tous deux à leur niveau haut jusqu'à ce que l'opération d'accès à la mémoire 24, figure 7, et de lecture de celle-ci soit achevée. On notera que la vérification ci-dessus, requise dans le cas de la mémoire 24 de l'unité II, n'est pas nécessaire dans le cas de la mémoire 22 de l'unité 10 I. Cela est dû au fait que l'on accède à la mémoire 24 par l'intermédiaire d'un registre d'adresses de mémoire et que la mémoire 24 fonctionne selon un cycle classique de lecture et de régénération pendant lequel les données adressées sont lues de façon destructive, puis ré-écrites. En revanche, on suppose dans la présente réalisation que l'on accède directement à la mémoire 22 15 par l'intermédiaire des indicateurs d'accord de la mémoire associative 20 (figure 11), et que les données qu'elle contient sont lues de façon non destructive, sans régénération; il n'est donc pas nécessaire de vérifier l'achèvement de l'opération d'accès et de lecture dans ce cas. Lorsque la position des données adressées a été déterminée et que ces 20 données ont été lues et transférées au registre R7, la mémoire 24 engendre un signal d'achèvement de l'opération d'accès et de lecture, lequel signal est transmis par l'intermédiaire de la ligne 180, figure 7, du câble 182, figures 7, 8A et 8B, à la borne d'entrée "0" de la bascule bistable 170. La restauration de cette bascule provoque le passage au niveau bas de la ligne 172 et 25 l'application d'une impulsion à la ligne 184, qui aboutit au monostable 186, figure 96. Les monostables 174 et 166 passent alors à leur niveau bas. Le monostable 186 passe à son niveau haut et engendre une impulsion de chronologie sur la ligne D20, ce qui a pour effet d'extraire le mot de code LF du registre R7 (2 octets dans l'exemple cité). Ainsi, l'impulsion transmise sur la ligne 30 D20 rend conductrice une porte 188, figure 8B, permettant ainsi au contenu du registre R7 de parvenir, par l'intermédiaire des câbles 130 et 132, figures 7, 8A et 8B, et de la porte 1B8, au dispositif extérieur. Dans le même tempsi l'impulsion présente sur la ligne D20 est également transmise par 1'intermédiai» re d'un circuit OU 192, figure 8B, au dispositif de décrémentation du compteur 35 de mots 40, réduisant ainsi la valeur de ce dernier d'une unité. La lecture du mot décodé est à présent terminée. Avant de poursuivre, il est nécessaire que le système vérifie le contenu du compteur de mots 40 afin de déterminer s'il existe d'autres mots de code d'entrée à décoder. S'il n'en existe pas, l'opération prend fin. Cette vérification est déclenchée lorsque 40 le monostable 186, figure 9B, passe à son niveau bas et engendre une impulsion 72 06386 23 2128360 qui est transmise par l'intermédiaire du circuit OU 1S4 au monostable 196. Lorsque ce dernier passe à son niveau haut, il engendre une impulsion sur la ligne 021 aboutissant à la porte 196, figure SB, laquelle vérifié la sortie d'un convertisseur 2ÛD associé au compteur 40. Le convertisseur 200 convertit 5 la valeur du compteur de mots en une sortie zéro ou non zéro. En supposant que le contenu du compteur 40 n'ait pas encore été ramené à zéro, le signal non zéro est transmis par l'intermédiaire de la porte 19B à une ligne 202, puis, par l'intermédiaire du circuit OU 68, au monostable 90, figure 9A. Comme le montre l'organigramme de la figure 10, cela déclenche de nouveau la série 10 d'étapes commençant par l'étape 05. Le préfixe du nouveau mot de code d'entrée contenu dans le registre d'arguments R5 est à présent utilisé comme argument pour déclencher un nouveau processsus de décodage. Si la valeur du compteur de mots 40 de la figure 6b est nulle lors de la vérification, la sortie "0" du convertisseur 200 traverse la porte 198 à, 15 l'instant voulu (D21 ) pour produire un signal mettant fin au fonctionnement du décodeur. Il n'y a pas de répétition de l'étape 05 dans de telles conditions. □ans la description qui précède, on a supposé que le mot de code à déchiffrer était un mot de code LV dont le préfixe n'était pas constitué par le code DUPLICATION. Lorsqu'on se trouve en présence d'un mot d'entrée dont le préfixe 20 est constitué par le code DUPLICATION, le registre R3, figure 6A, emmagasine un bit "1" après que les données contenues dans la position de mémoire adressée par le code DUPLICATION aient été lues dans la mémoire 22 et extraites de celle-ci. En pareil cas, les données emmagasinées dans les registres R2 et R4 sont sans importance. La valeur binaire 0101, ou 5 en notation décimale, qui est la 25 longueur du code DUPLICATION dans l'exemple cité, est emmagasinée dans le registre R1. Les étapes D5 à 010, figure 10, sont effectuées, dans le cas d'un préfixe constitué par le code DUPLICATION, de la même façon que dans le cas de n'importe quel autre préfixe. Le code DUPLICATION quitte le registre R5. A l'étape D11 30 Ce'est-à-dire lorsqu'une impulsion est transmise sur la ligne D11, figures 9A et 8A), c'est à la ligne oe sortie "1" 119 Cet non à la ligne de sortie "0" 76) provenant du registre R3, figure 6A, qu'une impulsion est appliquée. Dans ces conditions, la porte 116, figure bA, transmet l'impulsion présente sur la ligne 119 à la ligne 204, figures SA et 9B, aboutissant à un monostable 206, ce qui 35 a pour effet de déclencher une serie spéciale d'étapes D22 à 028, figure 10, au lieu de la série normale a'étapes des D12 à 020. Lorsqu'il passe à son niveau haut, le monostable 206 engendre une impulsion qui est transmise sur la ligne D22, par l'intermédiaire des câbles 46 et 48, figures 9B, 8B, 8A et 6A, à un dispositif permettant de mettre le registre R1 à 40 une valeur représentant l'équivalent binaire de la valeur décimale 16, celle-ci 72 06386 24 2128360 étant le nombre cie bits à extraire par décalage du registre R5 dans le présent exemple lorsque le système fonctionne en moae DUPLICATION. Etant donné que le registre R1 est supposé avoir une capacité de quatre bits seulement dans cette réalisation, la valeur binaire 10000 Cou 16) prend effectivement la forme 0000 aans le registre R1. Lorsqu'il passe à son niveau bas, le monostable 206, figure 95, engendre une impulsion qui est transmise par l'intermédiaire au circuit DU 206 au monostable 210, lequel passe à son niveau haut et engendre une impulsion qui est transmise sur la ligne D23, par l'intermédiaire des câbles 46 et 48, figures 9B, SB et 6A, à la porte 212, figure 6B. Lorsqu'elle est rendue conductrice, la porte 212 ouvre une voie de transfert qui permet de transférer le bit emmagasiné dans la position la plus à gauche du registre R5 à la position la plus à droite du registre R6. Ainsi, le premier bit du mot de 16 bits faisant suite au code DUPLICATION est introduit dans le registre R6. Le monostable 210, figure 9B, passe alors à son niveau bas et fait passer à son niveau haut le monostable suivant 214, qui engendre une impulsion sur la ligne D24, figures 9B et 6A. Cette dernière impulsion est transmise par l'intermédiaire du circuit OU 82, figure 8A, et de la ligne 04, figures 8A, 6A et 6B, au dispositif de décalage à gauche du registre R5, ce qui a pour effet de décaler le contenu du registre R1 vers la gauche d'une position de bit. Lorsqu'il passe à son niveau bas, le monostable 214, figure 9B, fait passer à son niveau haut le monostable 216 qui engendre une impulsion sur la ligne 025, figures 9B et 8A. Cette dernière impulsion est transmise par l'intermédiaire des circuits OU 54 et 56 aux lignes 56 et 60, figures 8A, 6A et 6B, afin de rendre conductrice la porte 62, celle-ci introduisant alors un nouveau bit dans le registre R5 et décrémentant le contenu du registre R1. Cette décrémentation a en l'occurrence pour effet de faire passer la valeur du du registre R1 de ODOQ à 1111 Cou 15 en notation décimale). Lorsqu'il passe à son niveau bas, le monostable 216 fait passer à son niveau haut le monostable 218, figure 9B, qui engendre une impulsion de chronologie sur ligne D26, figures 9B et 8A, aboutissant à la porte 220. Cette dernière est alors rendue conductrice et provoque la vérification au contenu du registre R1. Dans le cas présent, le registre R1 ne se trouve pas à zéro et, par conséquent, un signal non zéro est transmis par l'inverseur 74, par l'intermédiaire de la porte 220 et de la ligne 222, figure 8A, au monostable 224, figure SB, qui passe à son niveau haut et engendre une impulsion de chronologie qui est transmise sur la ligne D27, par l'intermédiaire des câbles 46 et 48, figures 9û, BB, 6A et 6B, à un dispositif de décalage à gauche du registre R6. Le contenu de ce dernier registre est de ce fait décalé vers la gauche d'une position de bit. Lorsqu'il passe à son niveau bas, le monostable 224, figure 9B, engendre 72 06386 25 2128360 une impulsion qui est transmise, par l'intermédiaire de la ligne 22B et du circuit OU 208 au monostable 210, qui passe à son niveau haut et déclenche de nouveau la série d'étapes D23 à D27 de la façon qui vient d'être décrite. Pour récapituler : le bit le plus à gauche du registre R5, figure 6B, est transféré 5 à la position la plus à droite du registre R6j le contenu du registre R5 est décalé vers la gauche d'un bit; un nouveau bit est introduit dans le registre R5 et mis à la position la plus à droite de celui-ci; le contenu du registre R1 est décrémenté d'une unité; le contenu du registre R1 est vérifié pour déterminer s'il s'agit d'une condition zéro ou non zéro; et dans ce dernier cas, le 10 contenu du registre R6 est décalé vers la gauche d'un bit. Ce cycle est répété autant de fois qu'il le faut jusqu'à ce que les 16 bits du mot de code d'entrée qui faisaient précédemment suite au code DUPLICATION soient passés du registre R5 au registre R6. On suppose à présent que la valeur du registre R1 a été ramenée à zéro. 15 Lorsque l'impulsion de chronologie transmise sur la ligne D26, figures 9B et 8A, est engendrée en temps opportun dans de telles conditions, la porte 220 autorise la transmission, par l'intermédiaire de la ligne 230, au monostable 232, figure 9B, d'un signal de sortie zéro provenant du registre R1 et acheminé par l'intermédiaire du circuit ET 65 et de la ligne 58, figures 6A et 8A. Lorsqu'il passe 20 à son niveau haut, le monostable 232 engendre une impulsion qui est transmise par l'intermédiaire de la ligne D28 et du câble 46 à une porte 234, figure 8B. Celle-ci est alors rendue conductrice, ce qui se traduit par la transmission du contenu du registre R6, constitué par le mot de code LF à 16 bits, par l'intermédiaire des câbles 235 et 72, figures 6A, 8A et 8B, au dispositif ex-25 térieur. Ainsi, le mot ae code à 16 bits précédemment ajouté au préfixe constitué par le cooe DUPLICATION est mis à part et transmis au dispositif sortie. Dans le mime temps, l'impulsion de chronologie présente sur la ligne D28 est également transmise par l'intermédiaire du circuit OU 192, figure 8B, au dispositif de décrémentation du compteur de mots 40, diminuant la valeur de ce 30 dernier d'une unité. Lorsqu'il passe à son niveau bas, le monostable 232, figure 9B, engendre une impulsion qui est transmise par l'intermédiaire de la ligne 236 et du circuit OU 194 au monostable 196, qui passe à son niveau haut et engendre une impulsion de chronologie sur la ligne 021, figures 9b et 8B. Comme on l'a précédemment 35 mentionné, cela a pour effet de rendre la porte 198 conductrice afin de vérifier le contenu du compteur de mots et de déterminer si l'on se trouve en présence d'un état-zéro ou non-zéro. Un état zéro met fin au processus,de décodage. Un état non-zéro provoque un retour à l'étape D5, figure 10, afin de traiter le mot de code suivant dans le décodeur. 40 Afin de résumer le fonctionnement du décodeur d'une façon passablement plus 72 06386 26 2128360 détaillée que ne le montre l'organigramme de la figure 10, la table C ci-dessous constitue une liste des différentes fonctions (étapes D1, 02, etc...) correspondant aux impulsions de chronologie engendrée par le générateur d'impulsions des figures 9A et 9B. TABLE C Etape ou Impulsion de chronologie ! 01 D2 10 15 20 25 30 35 D3 D4 □ 5 D6 07 08 D9 D10 D11 Fonctions R1= 0110. Passer à D2. Introduire le bit le plus à droite du registre R5. Décrémenter le contenu du registre R1. Passer à D3. ! Vérifier le contenu du registre R1. S'ii[ est égal à 0000, passer à D5. Dans le cas contraire, passer à D4. Décaler vers la gauche le contenu du registre R5. Passer à D2. Mettre les indicateurs d'accord dans l'état 1. Passer à D6. Effectuer une recherche associative sur la base de l'argument contenu dans le registre R5. Passer à 07. Lire le mot pour lequel il y a accord dans la mémoire 22. Restaurer le bit le plus à gauche du registre R1 à 0. Passer ; à D8 'vérifier le contenu du registre R1. S'il 1 est égal à 0000, passer à D11. Dans le ■ cas contraire, passer à D9. Décaler le contenu du registre R5 vers : la gauche. Passer à D10 j Introduire le bit le plus à droite du j registre R5. Décrémenter le contenu du jregistre R1. Passer à D8. : Vérifier le contenu du registre R3. S'il l est égal à "0", passer à D12. S'il est I ! égal à *1", passer à D22. 72 06386 27 2128360 TABLE C [Suite 1) Etape ou Impulsion de chronologie □12 □ 13 10 15 20 25 30 □ 14 j15 □ 16 D17 D18 019 D20 35 Fonctions Vérifier le contenu du registre R2. S'il est égal à 00, passer à D17. Dans le cas contraire, passer à 013. Décaler le contenu au registre R4 vers la gauche. Passer à 014. Transférer le bit le plus à gauche du registre R5 à la position la plus à droite au registre R4. Passer à 015. Décaler le contenu du registre R5 vers la gauche. Passer à D16. Introduire le bit le plus à droite du registre R5. Décrémenter le contenu du registre R2. Passer à 012. Procéder à une opération d'accès à la mémoire 24 de l'unité II suivie d'une lecture, en utilisant le registre R4 comme registre d'adresses de mémoire. Passer à D18. Vérifier l'exécution de l'opération d'accès et de lecture. i Si cette opération est terminée, passer [ à 019. Sinon passer .à 020 j Différer les autres opérations si j l'opération d'accès et de lecture est toujours en cours. Revenir à 018. Lorsque l'opération d'accès et de lecture est terminée et que la paire de caractères adressée se trouve dans le registre R7, transférer cette paire de caractères hors du registre R7. Décrémenter le contenu du compteur de mots 40. Passer à 021. 72 06386 28 2128360 TABLE C (Suite 2) 10 15 20 25 30 Etape ou Impulsion de chronologie D21 Fonctions D24 025 35 40 I Vérifier le contenu du compteur de mots , 40. S'il est égal à zéro, mettre fin à l'opération. Si le contenu est non-zéro, revenir à D5. 022 Si le contenu du registre R3 est égal à "1" (étape D11), remettre le registre R1 à 0000(4 bits de plus faible poids du 16 binaire) et passer à D23. D23 Transférer le bit le plus à gauche du registre R5 à la position la plus à droite du registre RB. Passer à D24. Décaler le contenu du registre R5 vers la gauche. Passer à D25. Introduire le bit le plus à droite du registre R5. Décrémenter le contenu du registre R1. Passer à 026. D26 Vérifier le contenu du registre R1. S'il est égal à 0000, passer à D28. Sinon, passer à 027. D27 Décaler le contenu du registre R6 vers la gauche. Passer à D23. D28 Transférer le contenu du registre R6 hors de celui-ci. décrémenter le compteur de mots. Passer à 021 j L'invention décrite ci-dessus permet aux systèmes de traitement de données d'utiliser des mots de code de longueur fixe qui ont été comprimés de manière à obtenir des mots de code courts de longueur variable à l'aiole d'un procédé original qui code les mots non seulement en fonction de leur fréquence d'apparition, mais aussi en fonction des fréquences respectives auxquelles les différentes longueurs des mots de code se produiraient dans des conditions normales de codage faisant appel à des codes de longueur variable. L'invention permet d'autre part de décoder -facilement les données qui ont été ainsi codées. Elle permet également de réduire au minimum le matériel nécessaire aux fins de ces 72 06386 29 2128360 différentes opérations de codage et de décodage, sans pour autant entraîner une diminution appréciable du degré de compression, grâce à l'emploi du code DUPLICATION qui permet de traiter pratiquement les mots de code de lobgueur fixe qui se produisent relativement peu fréquemment, comme des mots non codés. 5 La logique de commande (figures 5, 8A et 8b) et le générateur d'impulsions (figures 5, 9A et 9b) qui, lorsqu'ils sont employés conjointement, commandent la série des opérations effectuées par les unités I et II du décodeur représenté, ont été décrits ci-dessus comme des unités à usage spécial. Il est cependant évident que le processus de décodage pourrait être effectué à l'aide d'un calcule lateur à usages multiples équipé d'une petite mémoire associative du type décrit plus haut, la série d'opérations étant commandée par des instructions de programme emmagasinées dont l'effet serait le même que celui des impulsions de chronologie engendrées par les monostables représentés sur les figures 9A et 9B. bien que l'on ait décrit dans ce qui précédé et représenté sur les dessins 15 les caractéristiques essentielles de l'invention appliquées à un mode de réalisation préféré de celle-ci, il est évident que l'homme de l'art peut y apporter toutes modifications de forme ou de détail qu'il juge utiles sans pour autant sortir du cadre et de la portée de ladite invention» 72 06386 30 2128360 REVENDICATIONS 1.- Procédé pour le codage de mots à longueur fixe en mots de code à longueur variable du genre faisant usage d'une unité de codage, caractérisé en ce qu'il comporte les étapes suivantes: 5 a) emmagasiner dans des emplacements adressables à l'intérieur de la mémoire de ladite unité de codage un ensemble de mots de code à longueur variable qui correspondent respectivement aux dits mots de code à longueur fixe, les dits mots de code à longueur variable comprenant des préfixes à longueur variable dont les plus courts sont associés avec les mots se présentant le plus 10 fréquemment, chacun des dits préfixes représentant de manière unique une longueur de mot de code particulière, b) utiliser chacun des dits mots de code à longueur fixe qui doit être codé afin d'adresser l'emplacement dans ladite mémoire qui contient le mot à longueur variable correspondant et 15 c) lire dans ladite mémoire le mot de code à longueur variable ainsi adressé. 2.- Procédé pour le décodage de mots de code d'entrée qui ont été obtenus par le procédé de codage selon la revendication 1 du genre faisant usage d'une unité de décodage.caractérisé en ce qu'il comporte les étapes suivantes: 20 a) utiliser les N bits de tête des mots de code d'entrée successifs (où N est un nombre entier au moins égal au nombre de bits du plus long des dits préfixes) pour adresser des emplacements choisis dans une première mémoire de ladite unité de décodage, chacun des dits emplacements de cette première mémoire étant alloué à un préfixe indicateur de longueur particulier et à un seul, 25 b) emmagasiner dans une seconde mémoire de ladite unité de décodage, dans un ensemble d'emplacements qui correspondent respectivement aux emplacements adressables de ladite première mémoire, des informations se rapportant à tous • les mots de code contenant ledit préfixe indicateur de longueur particulier auquel l'emplacement de la première mémoire concerné est alloué, ces informations 30 comprenant une adresse de base assignée à tous les mots de code présentant le même préfixe, c) emmagasiner dans une troisième mémoire de ladite unité de décodage, en des emplacements qui sont adressables par des combinaisons d'une adresse de base prédéterminée et de déplacements choisis, un ensemble de mots de code à 35 longueur fixe qui sont les équivalents décodés d'au moins ceux des mots de code à longueur variable se présentant le plus fréquemment, d) lire une adresse de base dans l'emplacement de ladite seconde mémoire qui correspond à l'emplacement de ladite première mémoire adressée par le 72 06386 31 2128360 préfixe du mot de code d'entrée en cours ae décodage, e) former, à partir de l'adresse de base lue à l'étape précédente, une adresse finale qui incorpore une valeur de déplacement indiquée par le reste des Dits du mot de code d'entrée en cours et 5 f) lire dans 1 ' emplacement de ladite troisième mémoire qui est indiquée par ladite adresse finale ls mot de code à longueur fixe correspondant au mot de code d'entrée en cours. 3.- Procédé de codage selon la revendication 1, caractérisé en ce que les 10 mots de code emmagasinés dans la mémoire de ladite unité de codage comporte un mot de code spécial emmagasiné dans un emplacement qui peut être adressé par n'importe lequel des mots de code d'entrée se présentant moins fréquemment, et en ce que ce procédé comporte en outre une étape consistant chaque fois que ledit mot de code est lu dans la mémoire, a accrocher le mot de code à longueur 15 fixe provoquant cette lecture à l'extrémité audit mot ae code spécial de manière v - code a former ainsi un mot de code combiné dans lequel ledit mot de/spécial est le préfixe et ledit mot de code à longueur fixe est le reste du mot de code combiné. 20 4.- Procédé pour le décodage de mots de code d'entrée obtenu par le procédé selon la revendication 3 et utilisant une unité de décodage, caractérisé en ce qu'il comporte les étapes suivantes: a) utiliser les premiers bits des mots de coae d'entrée successifs [où i\i est un nombre entier au moins égal au nombre de bits du plus long des dits 25 préfixes) pour adresser des emplacements choisis dans une première mémoire de ladite unité de décodage, chacun de ces emplacements de ladite première mémoire étant alloué à un préfixe indicateur de longueur particulier et à un seul, b) emmagasiner dans une seconde mémoire de ladite unité de décodage, en des emplacements qui correspondent respectivement aux emplacements adressables de 30 ladite première mémoire, des informations se rapportant aux différents préfixes, ces informations comprenant, dans le cas des préfixes qui sont associés avec des mots de code d'entrée se présentant le plus fréquemment, des adresses de base qui sont particulières à ces préfixes et, dans le cas des mots de code d'entrée se présentant moins fréquemment et identifiés par ledit préfixe composé 33 du code spécial, une indication qu'un tel préfixe a bien été détecté, c) emmagasiner dans une troisième mémoire de ladite unité de décodage les mots de code à longueur fixe qui sont les équivalents décodés des mots de code à longueur variable se présentant le plus suivent, d) lire les informations contenues dans l'emplacement de ladite seconde 40 mémoire qui correspond à l'emplacement de ladite première mémoire qui est 72 06386 32 2128360 adressé à ce moment par un préfixe de mot de code à longueur variable et e) accomplir l'une des étapes suivantes suivant le type d'information lu oans ladite seconde mémoire : e1) si une indication de code spécial est absente, utiliser alors l'adresse 5 de base correspondant au préfixe en conjonction avec le reste du mot de code d'entrée pour former une adresse finale pour ladite troisième mémoire et lire dans cette troisième mémoire le mot de code à longueur fixe ainsi adressé qui représente la sortie décodée ou, e2) si l'indication de code spécial est présente, ne pas tenir compte du 10 préfixe composé du code spécial et identifier le reste du mot de code d'entrée comme sortie décodée. 5.- Dispositif pour la mise en oeuvre du procédé selon la revendication 2 caractérisé en ce qu'il comporte: 15 a) un registre d'argument, b) des moyens pour introduire dans ledit registre d"argument au mains cette partie du mot de code d'entrée qui en contient le préfixe, c) une mémoire associative contenant des mots de code, chacun de ces mots de code correspondant de manière unique à un préfixe indicateur de longueur, 20 ladite mémoire associative agissant en réponse à l'argument introduit dans ledit registre d'argument pour engendrer un signal indicatif d'accord se rapportant de manière distinctive au préfixe inclus dans cet argument, d) une unité d'emmagasinage contenant des emplacements de mots correspondant respectivement audit préfixe indicateur de longueur et respectivement adressables 25 par les signaux indicateurs d'accord qui sont engendrés par ladite mémoire associative en réponse à de tels préfixes, chacun de ces emplacements contenant un mot qui incorpore une adresse de base caractéristique du préfixe concerné et d'autres informations indiquant, parmi les positions de bits d'un mot de code d'entrée de cette longueur, celles qui sont occupées par des bits n'appartenant 30 pas au préfixe, e) un registre de données pour emmagasiner l'adresse de base incorporée dans le mot de ladite unité d'emmagasinage qui est indiquée par le signal indicateur d'accord provenant de ladite mémoire associative, f) des moyens agissant en réponse aux autres informations contenues dans le 35 mot ainsi désigné pour former dans ledit registre de données une nouvelle adresse qui est déterminée en partie par ladite adresse de base et en partie par le reste du mot de code d'entrée en cours, sans son préfixe, g) une mémoire présentant des emplacements d'emmagasinage qui sont adressables à l'aide d'adresses emmagasinées dans ledit registre de données, chacun 40 de ces emplacements emmagasinant un mot de code à longueur fixe correspondant 72 06386 33 2128360 au mot de code d'entrée qui a produit l'adresse emmagasinée dans ledit registre de données et h) des moyens pour lire dans la mémoire visée au g,en tant que sortie décodée dudit dispositif, le mot de code à longueur fixe indiqué par l'adresse 5 emmagasinée dans ledit registre de données. B.- Dispositif pour la mise en oeuvre du procédé selon la revendication 4 caractérisé en ce qu'il comporte l'ensemble des éléments a] à h) de la revendication 5, caractérisé en outre en ce que les informations contenues dans chacun des mots emmagasinés dans l'unité d'emmagasinage d) contiennent une in- 10 dication sur la possibilité que le mot considéré soit adressé par ledit préfixe de code spécial, et caractérisé enfin par ce qu'il comporte en outre; i] des moyens agissant en réponse à une indication que le mot désigné dans l'unité d'emmagasinage d) est adressé par ledit préfixe de code spécial, de manière à provoquer la lecture de la série de bits attachés à ce préfixe et de 15 fournir ainsi la sortie décodée du dispositif.