FR 2461329 A1 19810130 FR 8014969 A 19800704 La présente invention concerne un dispositif de traite- ment de données. Il est bien connu dans les dispositifs de traitement de données, de mémoriser des données dans une mémoire principa- le et de prévoir une mémoire asservie, plus petite et plus rapide pour conserver des copies d'articles de données qui sont en cours d'utilisation, ces articles étant copiés à la demande de la mémoire principale dans la mémoire asservie. L'avantage de cette disposition de mémorisation à deux ni- veaux est qu'elle permet une grande vitesse moyenne d'accès, approchant celle de la mémoire asservie, mais avec un prix par bit de mémorisation plus bas que celui de la mémoire as- servie. Différentes dispositions ont été proposées pour placer les articles de données de la mémoire principale dans les positions de la mémoire asservie. On peut consulter par exem- ple l'article "Concepts for Buffer Storage" de C.J. Conti dans IEEE Computer Group News, Mars 1969, page 9. Certaines de ces dispositions impliquent la mise en place des données à plusieurs-contre-un. Autrement dit, chaque position de la mémoire asservie peut conserver une copie de l'un quelconque de plusieurs articles différents de données, tandis que cha- que article de données de la mémoire principale ne peut être copié que dans une position particulière de la mémoire asser- vie. Un exemple de cette disposition à plusieurs-contre-un est décrit à la page Il de l'article précité, sous le titre "Direct Mapping Buffer". Cette disposition à plusieurs-contre-un est relativement facile à mettre en oeuvre. Mais il peut quelquefois être né- cessaire ou souhaitable que deux ou plusieurs articles diffé- rents de données soient disponibles simultanément dans la mémoire asservie, et cela n'est évidemment pas possible si deux de ces articles sont affectés à la même position de la mémoire asservie. Cela a pour effet de ralentir le fonction- nement ou même, dans certains cas, d'interdire complètement qu'une opération soit terminée. L'invention a donc pour objet d'offrir un moyen d'élimi- ner ce problème. Selon un premier aspect, l'invention concerne donc un dispositif de traitement de données comportant une mémoire principale et une mémoire asservie plus petite et plus rapi- de dans laquelle des articles de données sont copiés à la demande depuis la mémoire principale, les articles de données de la mémoire principale étant affectés à des positions de la mémoire asservie selon la disposition à plusieurs-contre- un, un essai étant effectué en fonctionnement pour détecter les cas o deux ou plusieurs articles de données doivent être disponibles dans la mémoire à accès rapide mais ou ces articles sont affectés à la même position de la mémoire asservie de sorte qu'ils ne peuvent y être présents simul- tanément; lorsque cette situation est détectée, l'utilisa- tion de la mémoire asservie est suspendue momentanément et les articles de données nécessaires sont tous copiés dans une autre mémoire plus petite que la mémoire asservie mais avec une vitesse d'accès comparable à celle de cette der- nière. Selon un second aspect, l'invention concerne un disposi- tif de traitement de données comportant une mémoire princi- pale et.une mémoire asservie, plus petite et plus rapide dans laquelle des articles de données sont copiés à la demande depuis la mémoire principale, les articles de données de la mémoire principale étant affectés à des positions de la mé- moire asservie selon la disposition à plusieurs-contre-un; en fonctionnement, le dispositif exécute les opérations dont chacune nécessite l'accès à plusieurs articles de données, la disposition étant telle que si l'un quelconque des arti- cles de données requis n'est pas disponible dans la mémoire asservie, l'opération est interrompue, l'article est copié de la mémoire principale dans la mémoire asservie et l'opé- ration reprend à partir du début; en fonctionnement un essai est effectué pour détecter les cas o deux ou plusieurs des articles de données nécessaires pour l"opération en cours d'exécution sont affectés à la même position de la mémoire asservie de sorte qu'ils ne peuvent y être présents simul- tanément; lorsque ce cas est détecté, l'utilisation de la mémoire asservie est suspendue momentanément et les articles de données qui sont nécessaires sont tous copiés dans une autre mémoire de plus petite capacité que la mémoire asser- :3 vie et dont la vitesse d'accès est comparable à celle de cette dernière. D'autres caractéristiques et avantages de l'invention apparattront au cours de la description qui va suivre. Au dessin annexé donné uniquement à titre d'exemple nul- lement limitatif la figure 1 est un schéma simplifié du dispositif selon l'invention, et la figure 2 représente plus en détail l'unité de traduc- tion d'adresse. La figure 1 montre que le dispositif de traitement de données comporte une mémoire principale 10 qui contient des instructions et des opérandes. A chaque mot de la mémoire est affectée une adresse réelle RA spécifiant sa position physique réelle. Le dispositif comporte également une unité de traitement 11 commandée par un microprogramme. -En fonctionnement, cette unité extrait des instructions de la mémoire principale 10, les décode et exécute une routine appropriée de microprogramme pour l'exécution de chaque instruction. L'exécution de l'ins- truction peut impliquer l'accès à un ou plusieurs opérandes dans la mémoire principale. L'unité de traitement Il adresse des données (instruc- tions ou opérandes) non pas avec leurs adresses réelles, mais avec leurs adresses virtuelles VA. Chaque adresse vir- tuelle a une longueur de 32 bits, dont les 14 de plus grand poids représentent un numéro de segment SN tandis que les 18 de moindre poids représentent un numéro de mot WN donnant la position du mot de données souhaité dans le segment. Les adresses virtuelles peuvent être traduites en leurs adresses réelles correspondantes au moyen d'une table de segments conservée dans la mémoire principale. La table de segments comporte un certain nombre d'entrées, une pour chaque seg- ment, chaque entrée contenant l'adresse réelle de la base du segment considéré. Ainsi, une adresse virtuelle peut être traduite en utilisant d'abord sa partie SN de numéro de segment pour indexer la table de segment afin d'obtenir l'entrée de table de segment correspondante, et en addition- nant ensuite l'adresse de base du segment provenant de cette entrée avec la partie WN de numéro de mot de l'adresse vir- tuelle. Mais en pratique, si la table de segments doit être con- sultée chaque fois qu'un mot de données est adressé, la vi- tesse de fonctionnement de l'ensemble est sévèrement limi- tée. Par conséquent, les adresses virtuelles ne sont norma- lement pas traduites par référence à la table des segments. Au contraire, une unité 12 de traduction d'adresse est uti- lisée. L'unité 12 contient une petite mémoire asservie ra- pide qui contient des copies des entrées de la table des segments pour ceux des segments qui sont actuellement uti- lisés. Cela permet de traduire très rapidement les adresses virtuelles pourvu que les entrées correspondantes de la ta- ble des segments soient présentes dans la mémoire asservie. La table des segments dans la mémoire principale n'est con- sultée que si l'entrée correspondante de la table des seg- ments n'est pas présente dans la mémoire asservie. Les détails de l'unité de traitement Il et de la mémoire principale 10 ne concernent pas l'invention et ils ne seront donc pas décrits plus avant. En outre, l'utilisation des ta- bles de segments pour traduire des adresses virtuelles en des adresses réelles est bien connue et ne sera non plus décrite plus en détails. La figure 2 montre que l'unité de traduction d'adresse comporte une mémoire 21 à accès direct comprenant 1024 posi- - tions numérotées 0-1023. Les positions 256-1023 (désignées par la référence numérique 22) constituent la mémoire asservie mentionnée cidessus. Les positions 0-63 (indiquées par la référence numérique 23) constituent une autre mémoire, appelée ATM, et dont la fonction est décrite ci-après. Les autres positions de la mémoire 21 sont disponibles pour d'autres fonctions qui ne sont pas concernées par l'inven- tion. Chaque position de la mémoire asservie 22 contient une copie de l'une des entrées de la table des segments, avec le numéro du segment associé. La mémoire 21 est adressée par un multiplexeur 24 qui sélectionne normalement la sortie d'un circuit d'affectation 25. Ce dernier comporte un jeu de portes OU-EXCLUSIF, non représentées qui combinent des bits déterminés du numéro de segment SN de l'adresse virtuelle reçue de l'unité de trai- tement, de manière à produire une adresse affectée à 10 bits dans la plage 256-1023. Cette adresse affectée adresse donc une position dans la partie 22 de mémoire asservie dans la mémoire 21. Il résulte de cette disposition une affectation à plu- sieurs-contre-un des numéros de segment sur les adresses a:f- fectées et par conséquent, dans une disposition à plusieurs- contre-un des entrées de table de segments, sur les positions de la mémoire asservie. Lefonctionnement normale de l'unité de traduction d'adres- se est décrit ci-après. Quand l'unité de traitement 11 présente une adresse vir- tuelle à l'unité de traduction, la partie SN de numéro de segment de l'adresse est codée pour être affectée, et l'adres- se affectée qui en résulte est utilisée pour adresser la me- moire asservie 22. Le numéro de segment qui se trouve à la position adressée de la mémoire asservie est lu et il est comparé avec la partie SN de numéro de segment de l'adresse virtuelle au moyen d'un comparateur 26. Si les numéros sont égaux, un signal HIT est produit, indiquant que la position contient l'entrée voulue de la table de segments. L'adresse SB de base de segment peut donc être lue dans la mémoire asservie et être additionnée au numéro de mot WN de l'adresse virtuelle par le circuit additionneur 27 afin d'obtenir l'adresse réelle RA voulue. Si les nombres ne sont pas égaux, un signal MISS est émis. Selon la figure 1, le signal MISS est appliqué comme signal d'interruption à l'unité de traitement 11 et entraîne l'interruption de l'instruction en cours d'exécution. L'unité de traitement déclenche alors une routine spéciale de mi- corporgramme pour tenir compte de cette interruption. Cette routine consulte la table des segments dans la mémoire principale 10 et copie l'entrée correspondante dans la position actuellement adressée de la mémoire 21. Les détails de cette routine de microprogramme ne sont pas concernés par 246 1329 l'invention et ne seront pas décrits plus avant. L'exécu- tion de l'instruction qui a été interrompue est alors re- prise par le début. A ce moment, quand l'instruction pré- sente l'adresse virtuelle, l'entrée appropriée de table de segments est trouvée dans la mémoire asservie et l'adresse virtuelle peut ainsi être traduite de manière normale. Le dispositif décrit ci-dessus fonctionne bien pour les instructions qui ne nécessitent qu'un seul opérande. Mais certaines instructions peuvent nécessiter l'accès à plu- sieurs opérandes pendant leur exécution. Il n'y a encore au- cun problème dans la mesure o les entrées de table de seg- ments de ces opérandes sont toutes affectées à des posi- tions différentes de la mémoire asservie 22. Mais si deux ou plusieurs entrées-de table de segments sont affectées à la même position de la mémoire asservie, un état de con- flit apparatt dans lequel, si aucune précaution spéciale n'est prise, l'instruction est continuellement interrompue et reprise car elle ne trouve jamais simultanément les en- trées voulues de la table des segments dans la mémoire as- servie. Le présent dispositif détecte l'état de conflit de la manière suivante. Lorsqu'un signal MISS apparaât, l'adresse affectée apparaissant actuellement à la sortie du circuit est chargée dans un registre 28. Chaque adresse affectée lorsqu'elle apparaît est comparée avec le contenu actuel du registre 28, au moyen d'un comparateur 29. Le signal de sortie du comparateur 29 est appliqué à une entrée d'une porte ET 30 dont l'autre entrée reçoit le signal MISS. Par conséquent, la porte ET est ouverte lorsqu'un signal MISS est produit pour la seconde fois par rapport à la même adres- se affectée (c'est à dire lorsqu'un état de conflit appa- raît)-. La sortie de la porte ET 30 place à "1" un circuit bistable 31, plaçant l'unité de traduction d'adresse dans un mode de fonctionnement appelé mode anti-conflit. Lors- qu'il est à "1", le circuit bistable 31 produit un signal ATM qui commute le multiplexeur 24 de manière qu'il sélec- tionne maintenant la sortie d'un compteur 32 au lieu de l'adresse affectée. Le compteur 32 a une longueur de 6 bits et il délivre donc une sortie dans la plage de 0-63. La 2461S39 sortie du compteur adresse donc la partie de la mémoire 21 mentionnée cidessus sous le nom de mémoire ATM 23. Le compteur 32 est ramené à zéro chaque fois qu'une instruc- tion est déclenchée ou redéclenchée, et il progresse d'une position chaque fois qu'une adresse virtuelle est présen- tée pour être traduite. La mémoire ATM agit donc en fait comme une mémoire au premier entré, premier sorti. Il apparalt ainsi que dans le mode anti-conflit, ltuti- lisation de la mémoire asservie 22 est suspendue momenta- nément et que la mémoire ATM 23 est utilisée à sa place. Initialement, la mémoire ATM est vide et par conséquent, chaque fois qu'une nouvelle adresse virtuelle est présentée pour être traduite, un signal MISS est produit, de sorte que l'instruction est interrompue et que l'entrée appro- priée de table de s6gments est copiée dans la position d'adresse en cours de la mémoire 21. Ainsi, les entrées de table de segments qui sont nécessaires pour l'instruc- tion sont copiées, une à la fois, dans des positions succes- sives de la mémoire ATM. L'instruction peut donc être exécu- tée jusqu'à sa fin, sans aucune autre interruption. Quand l'instruction est terminée, l'unité de traitement 11 émet un signal EI de fin d'instruction qui ramène à "0" le circuit bistable 31, ramenant l'unité de traduction d'adresse dans son mode normal de fonctionnement. A titre d'exemple, il sera supposé qu'une instruction particulière sollicite trois opérandes avec les numéros de segment SN1, SN2, et SN3 respectivement. Il sera égale- ment supposé que ces numéros de segment sont affectés pour produire les adresses affectées A,B et A respectivement. Il faut observer que deux des numéros de segment, SN1 et SN2 donnent la même adresse affectée A. Autrement dit, deux des entrées nécessaires de table de segment sont affectées à la m9me position de la mémoire asservie et par conséquent, les deux entrées ne peuvent être présentes simultanément dans cette mémoire. Cette situation est détectée par les circuits de la figure 2, de la manière décrite ci-dessus, et le circuit bistable 31 est placé à "1" introduisant le mode anti- conflit. Dans ce mode, les trois entrées nécessaires de la table de segments sont extraites tour à tour de cette table dans la mémoire principale et sont copiées dans les posi- tions 0, 1 et 2 de la mémoire ATM 23. L'instruction peut alors être exécutée jusqu'à sa fin, utilisant le contenu de la mémoire 23 pour traduire les adresses virtuelles des opérandes. Bien entendu, des modifications sont possibles. Dans le dispositif décrit ci-dessus, la mémoire asservie 22 et la mémoire ATM 23 consistent en des parties de la m4me mémoire à accès direct 21. Cependant, dans d'autres formes de ltin- vention il est possible que ces deux mémoires soient réali- sées sous forme de deux mémoires physiquement distinctes. L'invention a été décrite ci-dessus dans le contexte de l'affectation d'entrée de table de segments dans une mémoire asservie. Il faut cependant remarquer que l'invention peut aussi s'appliquer à l'affectatinn d'autres types de données, par exemple des opérandes, d'une mémoire princi- pale à une mémoire asservie. l 2 4 6 1329 REVENDICATIONS 1 - Dispositif de traitement de données comprenant une mémoire principale et une mémoire asservie plus petite et plus rapide dans laquelle des articles de données sont co- piés à la demande depuis la mémoire principale, les arti- cles de données de la mémoire principale étant affectés aux positions de la mémoire asservie suIvant une disposition d'affectation à plusieurs-contre-un, dispositif caractéri- sé en ce que, en fonctionnement, un essai est effectué pour détecter des situations dans lesquelles deux ou plu- sieurs articles de données doivent être disponibles en mé- moire à grande vitesse d'accès, mais o ces articles sont affectés à la même position de la mémoire asservie(22) de sorte qu'ils ne peuvent y être présents simultanément, l'uti- lisation de la mémoire asservie (22) étant momentanément suspendue quand cette situation est détectée, et les arti- cles de données nécessaires étant tous copiés dans une autre mémoire (23) de plus petite capacité que la mémoire asservie et dont la vitesse d'accès est comparable à celle de cette dernière. 2 - Dispositif selon la revendication 1, caractérisé en ce que ladite autre mémoire (23) fonctionne comme une mémoire au premier entré, premier sorti.