Brevet FR2666160A2 — publié le 19920228

FR 2666160 A2 19920228 FR 9010536 A 19900821 On a décrit dans le brevet français N0 89 381 et dans le certificat d'addition N0 89 125 un dispositif de transfert décodage perfectionné appelé module M @ permettant à un microprocesseur mP2 de traiter un programme codé sans que l ' utilisateur ait connaissance du programme décodé Ce dispositif est caractérisé par la présence de circuits spécialisés mP3 travaillant en parallèle , transferrant et décodant un fichier codé situé en mémoire centrale M.C de l'ordinateur Ces circuits spécialisés mP3 travaillant en parallèle sont sous le contrôle du microprocesseur principal mP2 du module qui charge en une RAM INIT du module, accessible aux mP3, les adresses des blocs à décoder, et les adresses où stocker en Ram RAMCHAR du module les blocs décodés, le décodage étant fait à l'aide de blocs de cécodage B1 et B2 siutés en des RAM RAMCODE. Des RAM tempons RAMTEMP permettent de stocker dans le module des blocs codés Des circuits MUXi permettent 1' indépendance des différentes liaisons . et en particulier un multiplexeur MUXI contrôle les entrées et les sorties du module . FIGURE 1 Les exemples prenaient en compte des blocs codés de 2**8= 256 octets et le microprocesseur Z80 trailant les données sur 1 octet et les adresses sur 2 octets, ces valeurs n'étant pas limitatives de l'invention. Dans ces circonstances , la partie basse de 1 'adresse d ' un octet décodé est la même que celle du programme clair , et fixée par le programmeur , mais la partie haute est celle du bloc . et donc différente car liée à l ' organisation du module L'appel des blocs codés successivement transferrés et décodés, est déterminé par une instruction de saut lue normalement par le microprocesseur principal mP2 du module. Un inconvenient de ce dispositif est que mP2 doit d'abord attendre le transfert décodage du bloc codé, ou éventuellement de la partie utile de ce bloc , et effectuer les opérations qu ' il y trouve, avant de lire l'instruction de saut et l'adresse d'arrivée lui permettant d'appeler un nouveau bloc. Le but de la présente invention est d'anticiper les besoins de mP2 pour qu'il trouve en RAM du module le programme décodé dont il a besoin Lorsque mP2 gère seul les mP3 il appelle au fur et à mesure de ses besoins les blocs à décoder par leurs adresses hautes et ensuite trouve l'adresse basse d'arrivée dans les RAMCHAR dans lesquelles il a fait charger par les mP3 les blocs décodés Dans le dispositif perfectionné suivant l'invention, mP2 ne s'occupe plus de la gestion du module, mais il est nécessaire qu ' il puisse trouver en RAMCHAR les éléments de fichier dont il a besoin et qu'il ne connait que par les adresses de sauts en mémoire centrale, qu'il trouve dans le fichier décodé au fur et à mesure de son travail. Le but de la présente invention est atteint 1 En anticipant les besoins de mP2 par le transfert le décodage et le chargement en RAM du Module des blocs potentiellement appelables par mP2 2 En permettant à mP2 d'arriver sans recherche à 1' adresse voulue par le programme , bien que le bloc décodé soit en RAM du Module 3 En optimisant la gestion du module de façon à ce que cette anticipation soit économiquement réalisable Dans cette nouvelle disposition , suivant 1 'invention mP2 ne charge pas lui même , en général , les informations en INIT Les INIT sont confondus avec ou associées à une table d'affectation des RAM du module ou TAR , contenue dans la RAM RAMTAR Le transfert des blocs codés de la mémoire centrale vers les RAMTEMP est assuré , suivant l'invention par un ou préférentiellement des circuits spécialisés mP6 La FIGURE 2 montre une disposition générale du module Des circuits MUXi permettent les liaisons des différents composants sous le contrôle des différents circuits spécialisés mPi pour assurer les différentes fonctions suivant les règles de l'art L'anticipation est réalisée 1.1 En mettant , suivant l'invention, au début de chaque bloc codé des informations d anticipation IA permettant l ' appel anticipé des blocs , ou parties utiles des blocs appelés par ce bloc , ou en recherchant , dès le décodage d ' un bloc , ces informations .FIGURE 3 Les informations d'anticipation placées en début de bloc sont de deux sortes Celles qui peuvent être connues de 1' utilisateur par la simple observation des adressages en mémoire centrale se faisant à partir du bloc appelant elles peuvent être en clair Celles qui ne peuvent être connues de cette façon si elles sont en clair , elles permettent une analyse du programme qui peut être préjudiciable ; elles seront préférentiellement codées suivant 1' invention , mais elles pourront être en clair si on accepte I ' analyse du programme qui peut en résulter Les premières sont essentiellement Les Les adresses hautes Mci des blocs Bloci appelés par le bloc appelant Bloc(i-1) , l'indice i n'indiquant que l'ordre logique d'intervention 1.1 . b Un signal , pouvant être un octet codé , séparant les données claires des données codées Les secondes sont Les adresses basses des arrivées dans ces blocs appelés - 1.1.d Les adresses appelantes App(i-1) du bloc appelant. 1.1.e Les sauts internes dans ces blocs appelés. I.I.f Un signal , pouvant être un octet codé , séparant les informations d'anticipation des blocs appelés , des octets codés constituant le programme ou fichier destiné à mP2 Les adresses appelantes App(i-1) du bloc appelants contiennent les adresses Mci en mémoire centrale des blocs appelés. Leur connaissance est indispensable pour y remplacer cette daresse Mci en mémoire centrale par l'adresse Rci en mémoire RAMCHAR du module où, sera placé ce bloc appelé lorsqu'il sera décodé. La connaissance de cette adresse appelante App(i-1) doit seulement être antérieure à sa lecture par mP2 pour pour que l'on puisse y charger l'adresse Rci, remplaçant l'adresse Mci, avant cette lecture. Il est donc parfois suffisant que App(i-1) soit détecté au cours du décodage du bloc Bloc(i-1) par mP3. Dans ces conditions, la sécurité est maximum; aucun octet codé ne peut être rattaché à une fonction particulière, et aucun octet clair ne peut servir à analyser le fichier programme. 1.2. L'antipation est également réalisée en chargeant les adresses des blocs appelés en INIT. La TAR, ou une partie de celle ci, est divisée en groupes d'octets INIT, destinés à recevoir les informations d'anticipation et de gestion des blocs codés appelés par un bloc appelant déja transferré . FIGURE 4 . Ces INIT sont chargés et/ou lus par mP6, mP3 et mP8 qui assurent la gestion de base de l'anticipation, et par mP10 qui améliore éventuellement cette gestion. A chaque groupe INIT est associé, suivant l'invention, des paires de bits drapeaux a et b, placés, soit à l'exterieur de l'INIT dans un ou plusieurs octets, soit dans l'INIT. Ces bits drapeaux permettent de signaler à mP6 et mP3 l'état actif, 1 par exemple, ou inactif, 0 dans l'exemple, des INIT correspondants; les bits a, ou du premier octet, pouvrant par exemple être relatifs à mP6, et les bits b, ou du second octet , relatifs à mP3 . L'etat est actif pour mP6 ou mP3 lorsqu'il y a des informations à lire pour l'un ou pour l'autre, et inactif dans le cas contraire. 1.2.a Pour trasferrer de la mémoire centrale vers une RAMTEMP un bloc codé, on utilise, suivant l'invention, un ou des circuits spécialisés mP6, qui, éventuellement sous le contrôle de mP2, mP3 ou mP9, par le biais d'adresses déposées en INIT, gèrent le transfert des blocs codés de la mémoire centrale vers les RAMTEMP . Les circuits mP3 reprennent les blocs codés en RAMTEMP pour les décoder et les charger en RAMCHAR, ou les transferrent directement à partir de la mémoire centrale. Ce circuit mP6, suivant l'invention, est susceptible de détecter l 'octet signal séparant les adresses claires des données codées Les données claires sont chargées en TAR et les données codées en RAMTEMP . L'adresse de la première donnée codée est chargée en INIT pour que ce soit éventuellement à la même adresse dans le bloc de décodage , que commence l ' utilisation de ce bloc de décodage - Nous supposons d ' abord une situation élémentaire ou chaque bloc n ' appelle qu'il autre bloc et ou la gestion du module n'est pas optimisée . 1.2.b Les blocs à décoder sont identifiés par leur adresse en mémoire centrale . Le bloc BLOC i occupe 1 'adresse Mci en mémoire centrale Ses adresses d'anticipation sont Mc(i+1) et Appi . Les deux premiers octets de chaque INIT recoivent des informations d'anticipations relatives à un bloc BLOC i @ trouvées dans un bloc BLOC (i-1) précédemment transferré et éventuellement décodé Ce sont l ' adresse Mci du bloc BLOC i , appelable en mémoire centrale par BLOC (i-1) et et l'adresse appelante App(i-l) contenant, dans BLOC (i-1), l'adresse Mci, cette adresse App(i-1) étant connue soit directement comme Mci soit apres décodage du bloc . Les deux octets suivants recoivent 1' adresse Rti de la RAMTEMP où mP6 doit charger le bloc codé BLOC i , et l'adresse Rci de la RAMCHAR où mP3 doit charger ce même BLOC i apres décodage . 1.2.c Il existe , suivant l'invention , des des adresses en TAR que nous appelerons PilRt et PilRc où seront chargées les adresses disponibles Rti et Rci des RAMTEMP et RAMCHAR disponibles Les adresses redevenues disponibles seront immédiatement chargées dans ces mémoires dans les quelles les circuits spécialisés du module trouveront les RAMTEMP et RAMCHAR à affecter à un bloc . Les mP6 et mP3 fonctionnent , suivant l ' invention avec un cycle de recherche et un cycle de travail . Au cours du cycle de recherche ils explorent les bits drapeaux des INIT , et lorsqu ' ils ont trouvé des informations en INIT , il effectuent le transfert et le décodage du bloc dont l'adresse a été trouvée en INIT A la mise en route du module les INIT sont initialisés à a= et b= . Le microprocesseur principal mP2 du module appelle le bloc BLOC 1 du fichier programme en plaçant dans 1' INIT 0 l ' adresse Mcl de ce BLOC 1 , et en activant cet INIT . A partir de ce moment , 'anticipation est effectuée par mP6 et/ou mP3 , indépendamment de mP2 , par un processus d'auto alimentation - 1.3 La connaissance des instructions de saut et des adresses correspondantes et/ou des sauts internes dans le bloc en cours de décodage , peut , suivant 1 'invention être obtenue sans l ' utilisation d'adresses claires en début de bloc . FIGURE 5. Ceci est réalisé en détectant grace à un circuit spécialisé mP5 , les instructions de saut au cours de leur chargement par les mP3 dans les RAMCHAR , et en particulier à la sortie du multiplexeur MUX4 contrôlant l'acces au bus BUSCHAR alimentant les RAMCHAR Le circuit de détection de saut mP5 est constitué d'un ensemble de circuits de comparaison et de transfert placés en dérivation sur le bus BUSMUX4 . Le circuit mP5 détecte une instruction de saut et lit 'adresse Mci en mémoire centrale , du bloc à décoder BLOC i pouvant être appelé par le bloc courant Bloc (i-I) Il détecte également , sur le bus d'adresse , adresse basse appelante Rc(i-1)b, de la RAMCHAR courante Rc(i-1), où est chargée cette adresse appelée Mci. Cette adresse en RAMCHAR est l'adresse appelante App(i-l) du bloc courant BLOC (i-1) en cours de décodage . Cette adresse appelante App(i-l) est chargée en INIT à l'emplacement vu précédemment, de façon à pouvoir être chargée par un mP3, dans ce bloc BLOC (i-1), de l'adresse future en RAMCHAR du bloc BLOC 1 appelé par l'adresse Mcl Lorsque un mP3 disponible aura trouvé en INIT l'adresse Mcl du bloc BLOC 1 à décoder , il y trouvera également l'adresse appelante App(i-1) associée, du bloc BLOC (i-1) déja décodé, et siuté en RAMCHAR Rc(i-1), et l'adresse Rci de la RAMCHAR où charger le bloc BLOC i décodé. Il chargera l ' adresse Rci de la RAMCHAR à 1' adresse appelante AFP(i-I) du bloc appelant BLOC (i-1), , mémorisée en INIT . 1.4 La connaissance des adresses App(i-1) contenant les adresses de saut Mci peut aussi être obtenue par voie purement logiciele grace à une instruction spéciale du fichier programme précédant le saut et lue par mP3 . 2.1 Cycle de mP6-mP3 . FIGURES 6 et 7 . mP6 détecte un bit a à 1 correspondant à l ' INIT 1 où sont les données d'anticipation Mcl et éventuellement App de BLOC O Chargement de Mcl , adresse du bloc BLOC 1 à transferrer dans un régistre A de mP6 . Chargement de l ' adresse Rtl dans un régistre B , à partir de PilRt Chargement de Rtl en INIT Recherche et detection d ' un bit a à O indiquant que 1 'INIT 2 est libre pour recevoir les données d'anticipation de BLOC 1 Début du transfert du bloc BLOC 1 Chargement dans l'INIT 2 des adresses d'anticipation Mc2 et éventuellement Appl trouvées en tête de BLOC 1 . Détection de 1 'octet signal indiquant la fin des octets clairs. Mise à 1 du bit a de l'INIT 2 pour rendre cet INIT actif pour mP6 . Transfert des données codées du bloc Blocl dans la RAMTEMP Rtl mP6 met à 1 le bit b de l 'INIT 1 pour rendre cet INIT actif pour mP3. Fin du transfert de BLOC 1 en RAMTEMP Rt1; mP6 débute un nouveau cycle de test . Cycle de mP3 . FIGURE 7 . mP3 détect le bit b mis à 1 par mP6 dans l'INIT 1. Chargement dans un régistre de mP3 d'une adresse Rci de RAMCHAR libre à partir de la mémoire PilRc. Chargement dans un second régistre de l'adresse Rt1 prise dans l'INIT 1 Chargement dans un troisiemme régistre de 1 'adresse appelante App0. Transfert décodage de BLOC 1, de la RAMTEMP Rt1 à la RAMCHAR RcI - Detection de l'adresse App0 contenant l'adresse Mci, et chargement de cette adresse App dans 1' INIT 1 si cette adresse n'est pas déja en INIT 1 Chargement de 1 'adresse Rcl à la place de Mcl dans l ' octet d'adresse App de BLOC 0 , bloc appelant BLOC 1 - Remise de l'adresse Rtl, , devenue libre , sur PilRt . Fin du cycle de travail , début d ' un nouveau cycle de tests - Le bloc décodé BLOC 1 est disponible pour un saut direct de mP2 à partir de l'adresse App0 de BLOC 0. 2.2 Lorsque les blocs codés ne transitent pas par les RAMTEMP ce sont les mP3 qui gèrent le transfert décodage . FIGURE 8. Dans ce cas les mP3 recherchent le signal de fin des données anticipatives ; tant que ce signal n'a pas été détecté les octets sont chargés directement , ou apres décodage , en TAR . Lorsque le signal est détecté le décodage du programme ou du fichier commence ; les octets décodés sont chargés en RAMCHAR et 1 'adresse Rcl de la RAMCHAR est placée à 1 'adresse App du bloc appelant BLOC 0, comme précédemment. A la fin du cycle de mP3 le bloc décodé BLOC 1 est disponible pour un saut direct de mP2 à partir de l'adresse appelante App du bloc BLOC 0 . 2.3 Dans les solutions précédentes , on a remplacé dans le bloc appelant , grace au circuit mP3 . adresse haute des blocs appelés , correspondant à une adresse de bloc en mémoire centrale , par 1 'adresse haute en RAM du module où se trouvera effectivement le bloc décodé Une autre solution , suivant 1 invention consiste à utiliser un ou préférentiellement des circuits programmables mP7 contrôlés par mP9 et situés en dérivation sur le bus BUSMODULE . FIGURE 9 . Ces circuits permettent 1 'accès à un bus BUSRAM desservant les RAMCHAR à la place de BUSMODULE . Ils font correspondre à 1 'adresse d'entrée Mci d ' un couple Mci Rci , apparaissant sur BUSMODULE , une adresse de sortie Rci apparaissant sur BUSRAM. De cette façon, lorsque mP2 lance une instruction de saut en mémoire centrale sur BUSMODULE , elle aboutit à 1 'adresse RAMCHAR correspondante Mais il ne s'agit pas d'une simple transformarion d'adresse Il faut d ' abord s ' assurer que 1 adresse apparaissant à l ' entrée appartient bien à un couple Mci Rci existant en INIT - Ce résultat est obtenu en comparant dans un circuit de comparaison les valeurs émises par mP2 apparaissant sur les lignes d'adresses aux valeurs Mci chargées par mP9 dans le circuit de comparaison. FIGURE 10. Chaque fois qu ' un bit est identique , le circuit de comparaison donne une valeur résultante active Si toutes les résultantes sont actives le circuit laisse passer 1' adresse Mci Cette adresse est remplacée par 1 'adresse Rci qui apparait sur les lignes d'adresses de BUSRAM Si une résultante au moins est négative le circuit ne transmet pas l'adresse. Lorsque un circuit de comparaison mP7 est activé c'est à dire si 1 'adresse demandée Mci par mP2 a été remplacée par Rci mP9 charge un nouveau couple Mci Rci dans le circuit mP7 libéré . Si le couple d'adresses ainsi éliminé correspond à un choix unique entre plusieurs couples, et si ces couples se trouvaient placés sur d'autres circuits de comparaison transformation, ces couples devenus inutiles, sont remplacés par d'autres couples pris en TAR de façon à ce que les circuits de comparaison transformation soient toujours chargés de couples d adresses Mci Rci potentiellement utilisables par mP2 . De même , si aucun des couples d'adresses prédisposés dans les circuits de comparaison/transformation n'est l'adresse demandée par mP2, c'est à dire si tous les circuits sont inactifs mP9 charge de nouvelles adresses en ces circuits jusqu ' à ce que la bonne adresse soit trouvée . Il est possible de disposer , suivant 1 'invention les cases mémoires de la TAR en autant de groupes qu ' il y a de circuits de comparaison Chaque circuit de comparaison agit individuellement avec son propre circuit de transfert mP7 et sa propre réserve d'adresses en TAR - 3 L'optimisation de la gestion du module est constituée suivant l ' invention , de la gestion des filiations de blocs et de la sélection des parties utiles de ces blocs . 3.1 Gestion des filiations des blocs . Un bloc peut appeler plusieurs blocs fils et ces différents blocs fils seront des blocs frères . FIGURE 11 . Le choix d ' un des blocs fils par mP2 élimine , suivant 'invention , le le bloc père et les blocs frères et neveux devenus inutiles L ' élimination d ' un bloc se fait par la mise à 0 des bits a et b de l'INIT correspondant et la remise des adresses Rti et Rci dans PilRt et PilRc . La connaissance de l'adresse du premier bloc fils , ou fils ainé c'est à dire de celui par exemple dont l'adresse est la plus faible , et la connaissance chez ce fils de 1 adresse du frère immédiatement plus jeune c'est à dire dont l'adresse est immédiatement plus grande, et l'adresse chez un frère du frère plus jeune, permet un chaînage de tous les blocs issus d'un bloc donné , si pour boucler le chaînage le plus jeune connait l'adresse de l'ainé. Pour parvenir à ce résultat, on dispose, suivant l'invention, dans chaque INIT, de mémoires supplémentaires, préférentiellement trois octets dans lesquels seront chargées 'adresse du père , l ' 1' adresse du premier fils et l'adresse d ' un éventuel frère ou plus particulièrement les adresses des INIT où sont chargés les informations d anticipation des blocs pères fils et frères chaque bloc ayant nécessairement un bloc père un bloc fils , mais pas nécessairement un bloc frère . FIGURES 12 13 et 14 . Les INIT , suivant l'invention sont préférentiellement numérotés de 0 à n. Un octet de chaînage peut chaîner 256 INIT successifs; ceci peut être souvent exessif . En choisissant, suivant l'invention, un nombre d'INIT inférieur à 256, on peut disposer dans chaque octet d'un ou plusieurs bits d informations supplémentaires ; 128 INIT occupant 7 bits de l'octet, et 64 INIT 6 bits par exemple. On dispose alors de plusieurs bitzs, correspondant à plusieurs informations supplémentaires , dont l'un peut être suivant l'invention un bit de sécurité s interdisant d'éliminer 'INIT ses fils et ses neveux , si cette INIT est demandé par ailleurs dans une autre filiation ou si le saut correspond à 'appel d ' un sous programme , et les autres , les bits a et b d'activation des INIT vus plus haut Les cycles des mP6 et mP3 en cas d'adresses Mci multiples sont illustrés par les FIGURES 12 et 13. Dans la figure 12 mp6 recherche les INIT dont les bits a sont à O et dans la figure 13 les INIT dont les bits a sont à 1. 3.2 La connaissance du bloc fils choisi par mP2, dans le cas de plusieurs sauts possibles, ne peut avoir lieu, qu'au moment même du saut par mP2 dans un nouveau bloc , 'est à dire dans une nouvelle RAMCHAR . Pour détecter ce changement de RANCHAR, on dispose, suivant 'invention, un circuit spécialisé mP8 sur le bus d'adresse de BUSMODULE et plus particulièrement sur les voies contrôlant l'adressage des RAMCHAR. FIGURE 9. Ce circuit détecte les modifications d'adresses correspondant à l'adressage d'une RAMCHAR différente de la RANCHAR courante, c'est à dire correspondant à la sortie de cette RAMCHAR vers une autre RAMCHAR . Il cherche 1 'INIT dans laquelle se trouve l ' adresse Rci de la nouvelle RAMCHAR et grace au chaînage qu'il trouve dans cet INIT il met à 0 les bits a et b des INIT frères et neveux éliminés par le choix de mP2 , à moins qu'il ne trouve le bit s de sécurité actif Il cherche ensuite l ' INIT dans laquelle se trouve 1 adresse Rc(i-1) de la RAMCHAR que mP2 vient de quitter et met ses bits a et b à 0 . Cette recherche de 1' INIT est facilitée par une table de correspondance Rci-INIT ordonnée par rapport aux Rci et dans laquelle sont chargées , en regard des Rci , les adresses des INIT contenant ces Rci . Le circuit mP8 charge également en PilRt et PilRc les adresses Rti et Rci trouvées dans ces INIT , ainsi que 1' adresse Rci de la RAMCHAR quittée devenues réutilisables .. La mise à O des bits a et b est réalisée suivant le cycle de travail de mP8 illustré FIGURE 14 . 3.2.a Une autre solution , suivant l'invention pour signaler le saut de mP2 hors du bloc décodé courant et donc hors de la RAMCHAR courante consiste à mettre dans le fichier programme destiné à mP2 , avant 1 'instruction de saut , une instruction de chargement en RAMTAR de l'adresse de saut Avant de quitter la RAMCHAR courante , mP2 charge cette adresse de saut à une adresse prédéterminée de la TAR et met à une valeur active un bit signalant à mP9 , mP6 ou mP3 que la RAMCHAR courante a été abandonnée et que 1 'adresse de la nouvelle RAMCHAR a été déposée à l' adresse prédéterminée . 3.3 L ' optimisation de la gestion du module est obtenue également en éliminant les sauts impossibles . Les octets potentiellement utiles à mP2 sont compris dans le bloc décodé , entre deux adresses extrêmes . La première adresse peut être 1 adresse d arrivée dans ce bloc, et la dernière, l'adresse de sortie. Mais, s'il existe des sauts internes, la première adresse peut être plus petite, et la dernière, plus grande. 3.3.a Elimination des sauts impossibles . L'élimination des adresses de blocs ne pouvant pas être appelées par mP2 compte tenu de leurs positions relatives pr rapport à l'adresse d'entrée dans le bloc, aux sauts impèratifs et aux sauts internes dans le bloc, est importante pour une bonne gestion de la mémoire du module . On donne un exemple figure 15 où l ' on voit que si l ' entrée dans le bloc se fait en A , toutes les adresses de sorties B , C et D ne sont pas également probables ou possibles . S'il n , y a pas de saut interne partant apres A et arrivant avant B , B peut être éliminé . Si C est un saut impératif et s ' il n'y a pas de saut interne partant entre A et C et aboutissant entre C et D D peut être éliminé La recherche des adresses appelées utilisables est réalisée suivant l'invention par le circuit mPl qui teste les différentes possibilités de saut hors du bloc . FIGURE 9 . Deux cas peuvent se présenter suivant le type de codage du bloc 3.3.al Les bits de chaque octets du fichier programme sont dispersés dans la totalité du bloc . Il est alors nécessaire de décoder le bloc entier . Dans le cas général , il y a plusieurs blocs appelés possibles il y aura plusieurs adresses appelantes App(i-1) et plusieurs adresses appelées Mci . Le circuit mP6 charge chacune des paires d adresses Mci App(i-1) dans un INIT différent . Il y aura également des sauts internes . Les informations d'anticipation sont plus nombreuses et augmentent la taille nécessaire des INIT . On dispose en RAMTAR , suivant l ' invention pour conserver une petite taille aux INIT , d ' une mémoire tempon de plus grande taille dans laquelle seront chargées initialement par mP6 les données d'anticipation. Ces données seront analysées par mPl qui en sortira les couples d'adresses appelantes appelées App(i-1) Mci et les adresses initiales I et finales F de la partie du bloc à conserver et les chargera en INIT . FIGURE 16 . 3 .3 . a2 Le codage est effectué octet par octet , chaque octet restant à sa place dans le bloc . On peut alors ne décoder que la partie utile du bloc . On peut également ne transferrer que la partie utile du bloc. Ceci suppose que mP6 transfert d abord les informations d'anticipation en RAMTEMP , et que mP3 en décode éventuellement la partie codée . Ou encore que mP3 transferre et éventuellement décode d abord les informations d anticipation seules , , à partir de la mémoire centrale . Il les charge dans le tempon de la TAR et mPl en fait 'analyse ; les adresses extrêmes et les couples d adresses appelantes appelées sont placés en INIT et mP3 effectue le seul transfert décodage de la partie utile . Les parties utiles sont le plus souvent plus petites que le bloc entier . On peut donc disposer , , suivant 1 'invention de mémoires RAMCHAR de tailles plus faibles que la taille d'un bloc codé , par exemple la moitié ou le quart de cette taille . On peut aussi disposer une ou préférentiellement deux RAM appelées RAM d'optimisation RAMOPT , mP10, de taille plus grande qu'un bloc , mP10 et où les parties utiles seront disposées séquentiellement ou en désordre au gré des places vacantes . 3.4 Transfert des parties utiles . Lorsque le décodage du bloc entier est rendu nécessaire par le type de codage employé , le transfert des parties utiles est effectué par le circuit mPl, des RAMCHAR vers RAMOPT . Cette RAMOPT sera préferentiellement double l'autre pour permettre à mPl d'écrire dans l'une , etet à mP2 de lire dans l ' astre l'autre. Revendications 1 Dispositif selon la revendication 1 du brevet principal caractérisé en ce que des données d'anticipation sont mises au début de chaque bloc de fichier programme codé , et en ce que un signal les sépare du fichier programme codé . 2 Dispositif selon 1 caractérisé en ce que les données d anticipation sont , les adresses Mci en mémoire centrale des blocs appelés, , les adresses appelantes App(i-1) , les sauts internes dans le bloc appelant . 3 Dispositif selon 1 caractérisé en ce que existe dans le module M un (ou des) circuit mP6 chargé de transferrer , à partir de la mémoire centrale vers des mémoires RAMTEMP du module , les blocs du fichier programme , et en ce que ce circuit transfert d ' abord le contenu des blocs à décoder en des mémoires INIT du module , et ensuite , apres détection d ' un signal , en RAMTEMP - 4 Dispositif selon 1 et 3 caractérisé en ce que existe dans chaque INIT , ou en liaison avec chaque INIT , des bits a , b et s qui peuvent être actifs ou inactif4, et en ce que le bit a est activé lorsque un certain circuit doit y lire des données que le bit b est activé lorsque un autre circuit doit y lire des données et que le bit s est activé pour interdire la désactivation des bits a et b . 5 Dispositif selon 1 caractérisé en ce que les données d'anticipation contenues dans un INIT sont : l ' adresse Mci d ' un bloc à appeler , I ' adresse l'adresse App(i-1) contenant cette adresse Mci 'adresse Rti de la RAMTEMP où doit être transferré le bloc codé l ' adresse Rci de la RAMCHAR où va être transferré le bloc décodé 'adresse de chaînage d ' un bloc frère , 'adresse de chaînage d ' un bloc fils , l'adresse de chainage du bloc père , les adresses extrèmes de la partie utile du bloc 1 'adresse du premier octet de décodage utilisé pour le décodage de la partie codée . 6 Dispositif selon 1 caractérisé en ce que il existe dans le module M des mémoires PilRt et PilRc, dans lesquelles sont chargées les adresses des RAMTEMP et RAMCHAR libres . 7 Dispositif selon 1 caractérisé en ce que les circuits mP6 et mP3 au début de leur cycle de travail testent respectivement les bits a et b des INIT jusqu'à ce qu'ils en trouvent un à 1 et en ce qu ' ils exécutent ensuite leur cycle de travail à partir des données d'anticipation qu ' ils trouvent dans ces INIT.# 8 Dispositif selon 1 caractérisé en ce que le circuit mP6 lorsqu ' il trouve plusieurs adresses Mci de blocs appelés @ en tête d ' un bloc appelant , charge chacune de ces adresses Mci dans un INIT différent et chaîne les différents blocs à partir des adresses des différents INIT . 9 Dispositif selon 1 et 3 caractérisé en ce que existe dans le module M une table de correspondance Rci-INIT actifs ordonnée suivant les Rci . Dispositif selon 1 caractérisé en ce que un circuit mP8 surveille les adressages des RAMCHAR par mP2 , détecte l ' adressage d'une nouvelle RAMCHAR d'adresse Rci par mP2, recherche l'INIT dans la quelle se trouve cette Rci r et en ce que grace au chaînage qu'il trouve dans cet INIT , désactive les INIT contenant les adresses des blocs frères ou neveux du bloc d adresse Rci adressé par mP2 . Il Dispositif selon 1 caractérisé en ce que un circuit spécialisé mP10 analyse les positions relatives , d ' arrivée dans le bloc, de sorties de bloc, de sauts internes, et détermine la, ou les parties utiles du bloc, et en ce que ce circuit charge les adresses extrêmes de ces parties utiles en INIT . 12 Dispositif selon 1 caractérisé en ce que un circuit spécialisé mPS détecte apres leur décodage par mP3 les instructions de saut et charge en INIT les adresses qui les suivent 13 Dispositif selon 1 caractérisé en ce que un circuit mP7 isole le bus BUSMODULE d ' un bus BUSRAM reliant les multiplexeurs MUX3i et en ce que , lorsque mP2 dépose à l'entrée de ce circuit d'adresse Mci d'un bloc BLOC i se trouvant dans la RAMCHAR d'adresse Rci, et appartenant à un couple d'adresses Mci Rci, il apparait à la sortie de ce circuit mP7 sur les lignes du bus BUSRAM, l'adresse Rci. 14 Dispositif selon 1 caractérisé en ce que existe dans le fichier programme des instructions lisibles par mP2 situées avant les instructions de saut hors des blocs, et provoquant l'écriture par mP2 des adresses de ces sauts, dans des mémoires prédéterminées du module , ainsi que l ' activation de bits drapeaux lisibles par certains des circuits mPi du module .