-i- 2027419 La présente invention est relative à un calculateur numérique dans lequel les instructions du programme utilisateur emmagasinées, relatives à des données à lire, à des données à écrire et, ou les instructions que l'on doit aller chercher pour l'exécution, doivent 5 être protégées. Dans un calculateur, à plusieurs programmations il est souvent souhaitable de protéger certaines zones de mémoire de différentes façons. Par exemple, il peut être souhaitable d'avoir un niveau de protection qui empêche l'entrée des données dans une certaine 10 partie de la mémoire, c'est-à-dire un dispositif de protection d'écriture. Des systèmes antérieurs, tels que les "Scientific data systems Sigma 7" comportent un tel dispositif de protection. Dans certains domaines d'application des ordinateurs il est désirable d'avoir 15 une partie de la mémoire protégée de sorte que le code contenu dans cette partie peut seulement être exécuté et n'est accessible ni à une lecture ni à une écriture de données. On dispose maintenant de calculateurs électroniques numériques qui comportent des dispositifs- de mémoire élaborés, avec une unité 20 centrale de traitement qui fonctionne en liaison avec un grand nombre d'unités de traitement périphérique sur une base de partage de temps de façon à profiter de la grande vitesse d'exécution de l'unité centrale de traitement. L'invention est relative à la commande de l'accès à la mémoire 25 pour l'unité centrale de traitement en réponse à un programme utilisateur. Des programmes sont écrits pour l'unité de traitement périphérique pendant le développement d'un calculateur donné et sont en général bien isolés des programmes utilisateurs. Ainsi le principal intérêt de l'invention est la protection de données et d'ins-30 truetions stockées en mémoire et appelées par l'unité centrale de traitement sous le contrôle du programme utilisateur. Plus particulièrement, suivant l'invention, une protection indépendante des limites de mémoire est fournie pour les données qui doivent être lues ou écrites et les instructions que l'on doit 35 aller chercher pour l'exécution. Une paire de registre de limites supérieures et de limites inférieures emmagasine les adresses mémoire inférieures et supérieures relatives à chacune des adresses mémoire de lecture, d'écriture et d'exécution. Des comparateurs de limites sont prévus, l'un d'entre eux étant .40 relié.à chaque paire de registres de limites. 69 43144 -2- 2027419 Une source de mots de demande, de mémoire fournit à la mémoire et aux comparateurs des bits de code ID (ID=Identification), des bits d'adresse de mémoire et de la place pour les bits de données. Un dispositif comportant un circuit logique de décodage répond aux 5 bits de pode ID permet la mise en route du cycle mémoire si_les bits d'adresses satisfont le comparateur " sélectionné par les bits de code ID. Suivant un autre aspect de l'invention il est prévu tin dispositif pour faire varier la réponse de chacun desdits dispositifs 10 comparateurs d'une comparaison des limites intérieures à line comparaison des limites extérieures. D'autres caractéristiques et avantages de l'invention apparaîtront au cours de la description qui va suivre : Au dessin annexe, donné uniquement à titre d'exemple : 15 la Fig. 1 représente un ensemble de composants de calculateur auquel peut s'appliquer l'invention ; la Fig. 2 est un schéma synoptique du dispositif de la Fig. 1 ; la Fig. 3 est un schéma synoptique qui montre la commutation entre l'unité centrale de traitement et l'unité périphérique des 20 Fig.l et 2.. la Fig. 4 est un schéma plus détaillé représentant l'unité de commande de mémoire. Pour décrire l'invention, un ensemble calculateur évolué dont l'invention fait partie est décrit d'abord globalement, puis 25 les composants particuliers, le rôle de l'invention et les inte -ractions avec d'autres composants de l'ensemble sont expliqués. Comme le montre la Fig. 1, le calculateur comporte une unité centrale de traitement (CPU) 10 et une unité périphérique de traitement (PPU) 11. Une mémoire est prévue pour la CPU 10 et la PPU 30 11 sous forme de quatre modules 12 à 15 d'emmagasinage à pellicules minces. De telles unités de mémoire peuvent ôtré de type classique. Dans le mode de réalisation représenté, chaque module d'emmagasinage contient 16.384 mots. La mémoire permet des durées de cycle de 160 nanosecondes et O C le temps d'accès moyen est de 100 nanosecondes. Des mots de mémoire de 256 bits chacun sont divisés en 8 zones de 32 bits chacune. Ainsi, les mots de mémoire sont emmagasinés sous forme de blocs de 8 mots dans chacun des mots de mémoire de 256 bits, soit des groupes de 2.048 mots par module. 69 43144 3- 2027419 En plus des nodules de stockage 12 à 15, on dispose d'unités de disques de mémoire à accès rapide 16, 17 dont le temps d'accès moyen est d'environ 16millisecondes. Une unité de commande de mémoire 18, à laquelle l'invention se 5 rapporte surtout commande le fonctionnement, l'accès et le stockage de la mémoire. Un lecteur de cartes 19 et un perforateur de cartes 20 sont prévus pour l'entrée et les sorties. De plus des ensembles à bandes 21 & 26 sont utilisés aussi bien comme organes d'entrée / sortie que 10 comme mémoires. Une imprimante à lignes 27 permet d'effectuer les sorties sous la commande de la PPU 11. Il est clair que le dispositif de traitement possède ainsi une hiérarchie de mémoire ou de stockage à 4 niveaux. L'emmagasinage à accès le plus rapide est celui de la CPU 10. Ensuite, le plus rapide 15 est celui des unités de stockage à pellicules minces 12 à 15, puis viennent les unités de mémoire à disque 16, 17. Enfin, les unités à bandes 21 £ 26 complètent la gamme des dispositifs d'emmagasinage. On dispose d'une console de supervision 28 comportant deux tubes cathodiques (CRT). La console 28 comporte deux unités terminales 20 adaptées à un tube à rayon cathodique et clavier qui sont commandées par la PPU 11 en tant que dispositif d'entrée / sortie. Elle peut également être utilisée par un opérateur pour commander l'ensemble aussi bien pour des opérations de vérification de hardware et de software que pour coopérer avec le système au point de vue opéra- 25 tionnel en permettant à l'opérateur, par l'intermédiaire de la console 28, d'interrompre un programme donné, en un point choisi pour revoir une opération quelconque^ sa progression ou ses résultats et déterminer ensuite l'opération suivante. De telles opérations peuvent impliquer le traitement ultérieur des données ou conduire l'unité à subir un transfert de façon à opérer sur un pro-30 gramme différent ou sur des données différentes. LTorganisation du calculateur va maintenant être décrite globalement à l'aide de la Fig. 2. Les empilements mémoire 12 à 15 sont commandés par le dispositif de commande de mémoire 18 de façon à faire entrer des mots de données dans les empilements ou à les en 35 faire sortir. Le dispositif de commande de mémoire 18 assure, selon le cas, la commande, la représentation et, comme on l'expliquera en détail, la protection des données à l'intérieur des empilements mémoire. Une ligne 29 de transport des signaux relie le dispositif de 4° commande de mémoire 18 à ua canal 30 de transfert des données, munie 69 43144 -4- 2027419 de mémoires tampons, qui èst connecté aux disques 16, 17. Le canal 30 de transfert des données a pour unique fonction d'assister la mémoire représentée par les disques 16 et 17 et est un simple calculateur à programme câblé capable de transférer les données aux 5 disques de, mémoire 16, 17 ou de les en extraire. Ce n'est que sur commande que le canal 30 de transfert des données peut transférer les données de mémoire des disques 16, 17 par l'intermédiaire de la ligne 29 et du dispositif de commande de mémoire 18. Deux canaux bi-directionnels relient les disques 16, 17 reapec-10 tivement au canal 30, à raison de 1 canal par unité à disque. Pour chaque unité, un seul mot de donnée peut être transmis à la fois entre cette unité et le canal 30. Les données en provenance des empilements de mémoire 12 à 15 sont transmises entre le canal 30 et le dispositif de commande de mémoire 18 sous forme de blocs de 8 15 mots. Une mémoire à tambour magnétique 31 (représentée en pointillés), si elle est prévue, peut Ôtre connectée au canal 30 quand on désire augmenter les possibilités de mémoire de l'ensemble calculateur. line ligne unique 32 relie le dispositif de commande de mémoire 20 18 à la PPU 11. La PPU 11 régit tous les organes d'entrée / sortie à l'exception des disques 16, 17. Les données en provenance des empilements de mémoire 12 à 15 sont envoyées pour traitement à la PPU 11 puis renvoyées par l'intermédiaire du dispositif de commande de mémoire 18 sous forme de blocs de 8 mots. 25 Quand il y a lecture à partir de la mémoire, une opération de lecture / remise en mémoire est effectuée dans l'empilement de mémoire. Les huits mots sont "canalisés" de sorte qu'un seul des huit mots est utilisé dans la PPU 11. Le fait de "canalis&r" les mots est souhaitable à. cause de l'utilisation relativement lente des données 30 Imposée par la PPU 11 et les organes d'entrée / sortie par rapport à celle de la CPU 10. Un taux de transfert classique, des mots qui peut être atteint par un organe d'entrée / sortie contrôlé par la PPU 11 est d'environ 100.000 mots par seconde. La PPU 11 contient 8 unités de traitement virtuelles dont la 35 majorité peut ôtre programmée pour régir divers organes d'entrée / sortie selon les cas. Les unités à bande 21, 22 utilisent des bandes magnétiques de (25,4 mm) de large et ces unités 23 à 26, des bandes magnétiques de 12,7 mm de façon, à augmenter les possibilités de l'ensemble . 40 La PPU 11 fonctionne de façon très efficace à l'aide du programme 69 43144 -5- 2027419 contenu dans la mémoire et exécuté par les unités de traitement virtuelles et fournit en outre des commandes de supervision aux programmes se déroulant dans la CPU 10. La CPU 10 est reliée aux empilements de mémoire 12 à 15 par 5 l'intermédiaire du dispositif de commande de mémoire 18 et d'une ligne 33. La CPU 10 peut utiliser les 8 mots sous forme d'un bloc de mots fourni par les empilements 12 à 15. En outre la CPU 10 est capable de lire ou d'écrire une combinaison quelconque de ces 8 mots. La ligne 33 transfère 3 mots toutes les 50 nanosecondes dont 10 deux mots en entrée vers la CPU 10 et un mot en sortie vers le dispositif de commande de mémoire 18. Une ligne 34 est reliée au dispositif de commande de mémoire 18 pour utilisation lorsque les possibilités du calculateur doivent être augmentées par adjonction d'autres unités de traitement ou 15 analogues. Chacune des lignes 29, 32, 33, 34 est commandée indépendamment par chaque module de mémoire, ce qui permet d'avoir des cycles de mémoire qui se recouvrent et d'augmenter ainsi la vitesse de traitement. Une priorité déterminée est établie dans les commandes de 20 mémoire pour satisfaire les demandes contradictoires en provenance des diverses unités reliées au dispositif de commande de mémoire 18. Le dispositif de commande de mémoire interne 18 reçoit la plus forte priorité, les lignes externes 29, 32, 33, 34 étant desservies dans cet ordre. Les connecteurs des unités de traitement de ligne 25 externes sont identiques, ce qui permet aux imités de traitement d'être rangées dans n'importe quel autre ordre de priorité désiré. La Fig. 3 représente sous forme d'un schéma synoptique les circuits de laison entre la PPU 11 et la CPU 10 pour fournir une commutation automatique de programme de la CPU tout en "prévoyant" 30 dans le temps de façon à éliminer un dialogue prenant beaucoup de temps entre la PPU 11 et la CPU 10. Lors du fonctionnement, la CPU 10 exécute les programmes utilisateurs sur une base de multiprogram--mation. La PPU 11 satisfait .les demandes des programmes en cours d'exécution par la CPU 10 en ce qui concerne les entrées et les 35 sorties. La PPU 11 régit également la séquence dans laquelle les programmes utilisateurs vont être traités par la CPU 10. Plus particulièrement, les programmes utilisateurs en cours d'exécution dans la CPU 10 demandent des opérations d'entrée / sortie à la PPU 11 soit par une commande appel et continuation du traitement (SCP) 40 soit par une commande appel et attente(SCW). Le programme utilisa 69 43144 -6- 2027419 teur contenu dans la CPU 10 émet une de ces commandes en exécutant l'instruction qui correspond à l'appel, La commande SCP est émise par un programme utilisateur quand il lui est possible de procéder au traitement sans attendre que les entrées / sorties soient ter-5 minées, n^iis pendant qu'elles se poursuivent, la PPU 11 peut aller chercher ou préparer de nouvelle données ou un nouveau programme qui sera nécessaire à la CPU dans des opérations à venir, La PPU 11 fournit alors les entrées / sorties à la CPU 10 en temps utile pour utilisation par le programme utilisateur. La commande SCP est 10 envoyée à la PPU 11 par l'intermédiaire de la ligne 41. La commande SCW est émise par un programme utilisateur contenu dans la CPU 10 quand il n'est pas possible à ce programme de as dérouler tant que les entrées / sorties ne sont pas fournies par la PPU 11. Cette commande est émise par l'intermédiaire de la ligne 15 42. La PPU 11 analyse sans arrêt les programmes qui sont contenus dans la CPU 10 et qui ne sont pas en coure d'exécution, pour déter.-ner lequel de ces programmes doit être ensuite exécuté par la CPU 10. Lorsque le programme suivant a été choisi, l'indicateur de commutation 44 est positionné. 20 Quand le programme en cours d'exécution par la CPU 10 atteint un état dans lequel la demande SCW est émise par la CPU 10, la commande SCW est appliquée à la ligne 42 pour envoyer le signal de commutation de programme sur la ligne 45. De façon plus précise, un indicateur de commutation 44 a 25 mis en fonctionnement le commutateur 43 de sorte que l'indication du prochain programme qui doit être exécuté est automatiquement fournie à la CPU 10 par 1'intermédiaire de la ligne 45. Ceci permet au prochain programme ou partie de programme d'être automatiquement pris et exécuté par la CPU 10 sans le retard généralement rencontré 30 lors de l'interrogation de la PPU 11 et de la réponse de la PPU 11 à la CPU 10. Si pour une raison quelconque, la PPU 11 n'a pas encore fourni la description du prochain programme, l'indicateur de commutation 44 n'a pas été positionné et le commutateur de programme est stoppé. Dans une telle éventualité, le programme (contenu dans 35 la CPU 10) qui a émis l'appel SCW est encore dans l'unité de trai-. tement utilisateur, mais est inactif dans l'attente de la commutation de programme. Quand cette dernière se produit, l'indicateur de commutation 44 est rétabli . La possibilité de "prévision" que fournit la PPU 11 en ce 40 qui concerne le programme utilisateur qui n'est pas en coure d'exé- 69 43144 -7- 2027419 eut ion à l'intérieur de la CPU 10 permet à la commutation de programme d'être automatiquement réalisée sans nécessiter le moindre dialogue entre la CPU 10 et la PPU 11. La perte de temps pour la CPU 10 est ainsi considérablement réduite par élimination de 5 l'habituel dialogue ordinateur. Selon l'invention, la protection de la mémoire qui est fournie par l'utilisation de l'unité de commande de mémoire 18 est représentée sur la Fig. 4. L'unité de commande 18 comporte une unité logique de comparaison pour commander les demandes de mémoire qu'é-10 met la CPU 10 à l'attention des empilements de mémoire 12 à 16. La demande mémoire peut comporter un mot dont le premier groupe de bits identifié une demande de lecture, d'écriture ou d'exécution seulement. nies à la mémoire ou bien en sont extraites. Dans l'exemple suivant, le code ID est un code à 2 bits qui est adressé par la CPU 10 aux empilements de mémoire 12 à 15 par l'intermédiaire du canal 70. Les bits d'adresse, au nombre de 24, 20 sont envoyés par les canaux 71. Uh canal 72 permettant de transmettre des données de 256 bits est également fourni. Les canaux 70 à 72 sont représentés de façon fonctionnelle. Le code ID de 2 bits est envoyé à une unité de décodage 75. Dans le cas présent, le canal 70 se divise en 2 lignes, a première 25 ligne,la 70a. .se connecte à l'unité dé mémoire 12 à 15. Ainsi, le signal qui lui est envoyé à la mémoire par la ligne 70otcomporte un caractère pour des demandes de lecture et d'exécution seulement. En particulier, si le code est celui du tableau 1, on peut voir qu'un état "tin" apparaît dans la ligne 70a pour des commandes de 30 lecture et d'exécution et un état zéro pour des commandes d'écriture de sorte que les différentes catégories de demandes sont signalées à la mémoire en plus de l'application d'un signal de mise en service du cycle de mémoire qui va maintenant être expliqué. 15 Un deuxième groupe de bits spécifie l'adresse en mémoire. Un troisième groupe peut consister en données qui sont four- TABLEAU 1 lecture Ecriture Exécution 0 1 1 0 1 1 ligne 70 a 35 Le signal de sortie de l'unité 75 est appliqué à des portes 69 43144 -8- 2027419 ET 76, 77, 78. Une des entrées de chaque porte ET 76, à 78 est reliée aux canaux 71. Ainsi, dès qu'il y a une demande de mémoire, les trois portes ET sont mises en service par le bit amené par le canal 71. En fait, une seule des portes ET (76 à 78) est active 5 à un momept donné car seule une des lignes de l'unité de décodage 75 est excité. Plus précisément, les portes ET 76 à 78 sont reliées à des unités logiques de comparaison 80, 81 et 82 respectivement. Les unités logiques sont toutes reliées par leurs canaux de sortie à une porte OU 83 qui va signaler à la PPU tout refus de demande 10 de mémoire. Ces sorties sont aussi reliées à une porte OU 84 qui pamet à un cycle de mémoire de se terminer. Le cycle de mémoire est autorisé par l'utilisation de trois paires de registres de limites, c'est-à-dire, les registres 86,87, 88, 89, 9o et 91. Chaque registre de limites est relié par l'in-15 termédiaire des canaux 92 à la PPU de sorte que la PPU peut charger dans les registres 86 et 87 les limites supérieures et inférieures des adresses de mémoire des données qui doivent ôtre lues dans la mémoire en réponse à un programme utilisateur. De façon analogue, les limites supérieures et inférieures sont emmagasinées dans les 20 registres 88 et 89 pour protéger les zones de mémoire dans lesquelles des données doivent ôtre écrites. Les registres de limites 90 et 91 servent à stocker les limites supérieures et inférieures des instructions qui doivent ôtre seulement exécutées. 25 Le registre 86 est connecté à l'unité logique 80 par le canal 100. De môme, les canaux 101 à 105 connectent les registres 87 à 91 aux imités logiques de comparaison; 81 et 82, comme le montre la Fig. 4. Les unités logiques 8o, 81, 82 comparent n'importe quelle 30 adresse amenée par les canaux 71 avec les adresses stockées dans les registres de limites supérieures et inférieures. Si la comparaison est positive, un cycle de mémoire est mis en actiôn par l'application d'un signal de mise en action de cycle de mémoire au canal 110 par la porte OU 84. Un des canaux 92 est connecté à l'unité logique de 35 comparaison 80 par l'intermédiaire d'une imité 120 de bit interne / externe(I/E). Par exemple, si l'adresse dans les canaux 71 située à l'intérieur des limites stockées dans les registres 86 et 87 (la porte ET 76 étant en service) et s'il y a un état zéro sur la ligne 121, la sortie sur la ligne 122 est à l'état un et un cycle de mé 69 43144 -9- 2027419 moire est permis. Il y aura un état zéro en ligne. Ainsi une comparaison de limites internes est régie par l'état de la ligne 121 issue de l'unité I/E 120. Si une comparaison de limites externes doit être faite, la 5 ligne 121 peut être placée à l'état un. Dans ce cas, si l'adresse transmise par les canaux 71 est à l'intérieur des limites stockées dans les registres 86 et 87 la demande est, rejetée. C'est-à-dire, il y aura un état zéro sur la ligne 122 et un état un sur la ligne 123. Ce n'est que si l'adresse demandée est extérieure aux limites 10 que la ligne 122 sera à l'état un. De façon analogue, les comparaisons des adresses demandées avec les limites emmagasinées dans la paire 88, 89. et dans la paire 90, 91 sont commandées par les unités I/E 124 et 125 respectivement . 15 Dans chaque cas, les paramètres de protection de mémoire sont chargés, par la PPU 11 dans les registres 86 à 91 et dans les unités 120, 124, 125. Puisque les mots sont stockés en mémoire en groupe ( 8 mots de 32 bits chacun dans l'exemple donné ici) la protection de mémoire est fournie au niveau de l'octet pour 20 des demandes de lecture, d'écriture et d'exécution seulement faites par la CPU 10 sous le contrôle du programme utilisateur. 43144 -10- 2027419 REVENDICATIONS 1. - Procédé de protection d'une mémoire qui contient des informations à protéger, caractérisé en ce que des limites supérieures et inférieures des adresses de mémoire accessibles sont stockées Séparément de cette mémoire, les parties adresse des 5 demandes de mémoire sont comparées à ces limites et, finalement selon le résultat de la comparaison, la mémoire est bloquée ou ouverte. 2. - Procédé suivant la revendication 1, caractérisé en ce qu'un bit de domaine externe est engendré pour inverser le résultat de la 10 comparaison de sorte que lorsque le résultat de comparaison est positif, les adresses de mémoire, extérieures au domaine défini par lesdites limites, sont accessibles. 3. - Procédé suivant l'une quelconque des revendications 1 ou 2f caractérisé en ce que des limites séparées sont emmagasinées pour 15 les instructions se rapportant à la lecture et à l'écriture de données ou d'instructions. 4. - Dispositif de protection de mémoire pour la mise en oeuvre du procédé suivant la revendication 1, pour un calculateur comprenant une mémoire de stockage d'informations, caractérisé en ce qu'il 20 comprend au moins deux registres de limites (86 à 91) pour stocker la limite supérieure et la limite inférieure des adresses de mémoire accessibles, lesdits registres étant suivis d'un comparateur (80 à 82) ainsi que par un dispositif de déclenchement de mémoire qui est relié à la sortie du comparateur pour libérer les adresses de mé- 25 moire définies par lesdites limites si ledit résultat de comparaison est positif. 5. - Dispositif suivant la revendication 4, caractérisé en ce que pour l'exécution des instructions qui, outre les bits d'adresse contiennent au moins des bits de code d'identification d'instructions 30 pour référencer des ordres concernant des ordres d'extraction d'instructions ou de données, ou des ordres d'écriture, un décodeur (75) prévu pour traiter lesdits bits de code d'identification, deux registres de limites ainsi qu'un comparateur étant fournis pour chaque type d*instruction, lès sorties des décodeurs étant connectés auxdits 35 comparateurs. 6. - Dispositif suivant l'une quelconque des revendications 4 ou 5, caractérisé en ce que les entrées des registres de limites (86 à 91) sont reliés à une unité de traitement périphérique (11) du calculateur. 69 43144 -ii- 2027419 7i- Dispositif suivant la revendication 6, caractérisé en ce qu'il comprend un dispositif ( 120, 124, 125) d'inversion du résultat de comparaison de caque comparateur, ledit dispositif étant commandé par l'imité de traitement périphérique (11). 5 8.- Dispositif suivant l'une quelconque des revendications 5 à 7, caractérisé en ce qu'il comprend un autre dispositif (70a) pour fournir à la mémoire ( 12 à 15) des signaux différents selon que l'instruction est un ordre de lecture ou d'écriture. 9.- Dispositif suivant l'une quelconque des revendications 10 5 à 8, caractérisé en ce que chacune des trois sorties des décodeurs (75) est suivie d'une porte ET (76 à 78), les entrées desdites portes ET qui ne sont pas connectées aux dites sorties des décodeurs étant reliés à la partie adresse (71) du canal instruction (70,71) conduisant à la mémoire et en ce que chacune des sorties 15 des portes ET et reliée à l'entrée du comparateur correspondant. 10.- Dispositif suivant l'une quelconque des revendications 6 à 9, caractérisé en ce qu'un canal de réponse ( 123, 83) relie le comparateur ( 80 à 82) à l'unité de traitement périphérique (il) pour indiquer un résultat de comparaison négatif. 20 11.- Dispositif suivant l'une quelconque des revendications 4 à 10 caractérisé en ce que la mémoire est constituée d'octets. 12.- Dispositif suivant l'une quelconque des revendications 5 à 11, caractérisé en ce qu'un mot comportant une instruction comporte en outre des bits de données (72).