FR 2432735 A1 19800229 FR 7918531 A 19790712 La présente invention concerne le traitement des données et, plus particulièrement, des procédés et des dispositifs permettant d'extraire des ensembles de données d'une mémoire. La plupart des calculateurs numériques comportent une mémoire principale ou une mémoire dite de travail (WCS). Les dimensions de ce dispositif sont en général relativement faibles par rapport à celles des ensembles de données programmés qui doivent être utilisés par le calculateur pour exécuter des séquences d'instructions de programme. De ce fait, un calculateur programmable est généralement programmé de manière à assurer notamment le transfert par pages d'ensembles d'instructions d'une memoire externe, telle qu'une mémoire à accès sélectif (DASD), à sa mémoire principale (WCS).Lorsque la mémoire DASD est externe, c'est-à-dire lorsqu'une instruction dite de Départ E/S (SIO) est nécessaire pour mettre en oeuvre un sous-systeme de mémoire de façon à obtenir le recouvrement ou les pages de la mémoire de travail, le transfert par pages à cette dernière des ensembles de données peut prendre un temps con sidérale, particulièrement lorsque les ensembles de données de programme sont divisés en segments, ce qui est généralement le cas. Ce type de centrale programmé s'-applique notamment à une mémoire de masse dans laquelle un petit calculateur fait fonction de mémoire de travail (WCS). En pareil cas, le transfert des données par pages devient un facteur de rendement très important. Il est donc souhaitable de réduire les impératifs propres au transfert par pages sans pour autant nuire au rendement de la mémoire de masse, c'est-à-dire en faisant en sorte que le calculateur de commande de la mémoire de masse n'ait pas à attendre que ses instructions aient été exécutées. L'un des objets de la présente invention est donc de faciliter le transfert par pages d'ensembles de données d'un système de mémoire à une mémoire de travail. Selon l'invention, un procédé permettant d'extraire d'une mémoire divers ensembles de données ayant fait l'objet d'une concaténation (ou chaînés) consiste notamment à déterminer en premier lieu les associations qui existent entre ces ensembles et les chemins logiques d'exécution programme qu'ils comportent, c'est-à-dire qu'un ensemble de données commun ou qui est utilisé initialement peut être suivi d'un de plusieurs ensembles de données chaînés plus importants.Lors de l'extraction desdits ensembles, préférence est donnée aux ensembles channes suivants, de telle sorte qu'ils puissent être extraits en même temps que l'ensemble initialement utilise, ce qui permet de réduire le nombre d'opérations d'accès à la mémoire qui les contient. Selon une version préférée de l'invention, cette extraction préferentielle consiste à déterminer les ensembles de données chaînés les plus fréquemment utilisés ou exécutés et à les extraire en même temps que l'ensemble initialement utilise. Au fur et à mesure que l'utilisation des ensembles de données chaînés évolue, l'extraction fait suite à l'utilisation dynamique, de telle sorte que la probabilité d'utiliser des ensembles pre-extraits reste constamment élevée. Selon une caractéristique particulière de l'invention, des compteurs sont utilises pour chaque chemin logique suivi par les ensembles de données chaînés. Chaque fois qu'un chemin logique donne est emprunté, la valeur du compteur associé est incrémentée. En cas de dépassement de capacité de l'un des compteurs, tous les autres compteurs sont remis à zéro et le premier compteur est mis à la valeur 1 (ou toute autre valeur) afin de permettre de procéder de nouveau à l'opération d'extraction préférentielle. Entre ces modifications successives, le compteur dont la valeur est la plus élevée indique celui des ensembles de données chaînés qui a été le plus frequemment utilisé. 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. La Fig. 1 représente schématiquement une mémoire de masse utilisant la présente invention. La Fig. 2 représente schématiquement le système de commande de la mémoire de masse de la Fig. 1 qui permet de mettre en oeuvre la présente invention. Sur les deux figures, les éléments identiques sont désignés par les mêmes numéros de référence. Un système de mémoire de masse comprend une mémoire de masse (MSF) 10 du type décrit dans le brevet français N0 70 26331 déposé par la demanderesse le 7 juillet 1970. Cette mémoire est commandée'par une unité 12 qui comprend une mémoire de travail (WCS) 13, un canal de transfert 14, une unité de commande de mémoire de masse 18 et un ensemble de connexions de canal (non representéesr. Différentes techniques connues peuvent être utilisées pour réaliser les composants 12, 13 et 14. N'importe laquelle d'un certain nombre d'unités centrales (CPU) associées à la mémoire de masse peut accéder à cette dernière par l'intermédiaire d'un ou plusieurs adaptateurs de répartition 15, chacun desquels comporte quatre connexions de canal désignées A, B, C et D. La connexion A est réservée aux connexions établies avec l'unité de commande 12 par l'intermédiaire de son canal 14. Chacun des adaptateurs 15 possède une liaison directe avec la mémoire de masse 10 afin d'échanger des signaux de données avec celle-ci Par ailleurs, chaque adaptateur est connecte à un ou plusieurs groupes de mémoires à accès sélectif (DASD) 16, dont la réalisation et la connexion aux adaptateurs 15 sont effectuées à-l'aide de techniques connues.En général, une unité centrale (CPU) communique avec-l'unité de commande 12 afin d'effectuer des opérations prélimi- naires à l'intérieur du système de mémoire de manière à transférer des signaux de données de la mémoire de masse 10 aux mémoires à accès sélectif (DASD) 16. Les adaptateurs 15 transmettent les signaux de données de façon classique aux unités centrales. Cependant, avant que les signaux puissent être transmis de la mémoire de masse 10 à l'unité DASD 16, l'unité de commande 12 doit communiquer avec un adaptateur 15 en transmettant l'instruction Départ E/S (SI0) par l'intermédiaire du câble 17. Il en va de même dans le sens inverse, c'est-à-dire aux fins de la transmission des signaux de l'unité 16 à la mémoire de masse 10. L'un des problèmes qui se posent en l'occurrence réside dans le fait que la transmission de chaque instruction SIO par l'intermédiaire du câble 17 prend une certaine partie du temps de la mémoire de masse. Il y a donc intérêt à réduire le nombre de ces instructions, particulièrement dans le cas du transfert d'ensembles de données d'une mémoire DASD 16 à la mémoire de travail 13 par l'intermédiaire des adaptateurs 15 et du câble 17. En effet, l'unité de commande 12 a une longue séquence de signaux qui se recouvrent et qui sont nécessairement transférés par pages à la mémoire de travail 13.Cette séquence comprend des signaux dits d' "anomalie de cylindre" indiquant une anomalie afférente aux enregistrements contenus dans un cylindre du fichier qui sont reçus d'un adaptateur 15 après réception d'une demande de transfert, émanant d'une unite centrale, de signaux de données à une mémoire à accès sélectif DASD (16) alors que cette dernière ne contient aucun signal de données ; des signaux dits-de- "reservation-libération" permettant de réserver ou de libérer des unités virtuelles transposées dans une mémoire 16 ; et les nombreux signaux qui, lors de certaines interruptions,-sonttransmis de la mémoire 16 à la mémoire de travail 13. En effet, les tables (non représentées) afferenteso l'unité de commande 12 de la mémoire de masse sont emmagasinées dans la mémoire 16. Chaque accès effectué aux fins d'une opération de lecture exige une instruction S10 et la mise en file d'attente de la tâche correspondante. Du point de vue des unités centrales qui demandent les données, plus le nombre d'instructions SIO transmises par l'unité de commande 12 aux adaptateurs 15 est élevé, moins l'accès aux données est rapide. Toute réduction du nombre de SIO entraîne donc une amélioration du rendement effectif des mémoires DASD. En particulier, un ensemble de données correspondant à un module de programme dit de sauvegarde d'interruption" est suivi d'un module de programme-dit d' "anomalie de cylindre" ou de "réservation-l ibération", lesquels modules peuvent être lus simultanément par une unique instruction Départ E/S (SIO). En effet, le module "sauvegarde d'interruption" se trouve être un module de programme- court qui est toujours lu le premier. Compte tenu de l'utilisation faite des modules "anomalie de cylindre" et "réservation-l iberation", l'un ou l'autre de ces ensembles de données chaînés est lu en même temps que le module '!sauvegarde d'interruption", qui est l'ensemble de données initialement lu.Un fonctionnement optimum est obtenu en analysant les historiques distincts des demandes afférentes aux modules "reservation-liberation" et "anomalie de cylindre". En fonction des résultats de cette analyse et de la fonction actuellement emmagasinée dans la mémoire de travail 13, un ensemble de données de programme supplémentaire est lu en même temps que le premiér ensemble de données utilisé, c'est-à-dire le module "sauvegarde d'interruption". La Fig. 2 illustre le fonctionnement de l'invention dans l'unité de commande 12 et ses rapports avec la mémoire DASD 16 et l'adaptateur 15. On tiendra compte du fait que cette figure montre la façon dont le matériel et le logiciel fonctionnent dans l'unité de commande 12 de la mémoire de masse. Les lignes 20 représentent les séquences d'instructions qu'une unité de commande 12 de mémoire de masse est en train d'exécuter. En 21, une demande d'extraction de la sous-routine d'i#nterruption "X" de la mémoire DASD 16 est effectué en transmettant une instruction Demande E/S (SIO) par l'intermédiaire du câble 17. Cette demande est décodée par l'unité de commande 12 au moyen d'un circuit de décodage 22. Ce dernier comprend un programme d'instructions permettant de comparer les valeurs du compteur Y 23 et du compteur Z 24, lesquelles correspondent respectivement aux nombres d'ensembles de données chaînés "réservation libération et "anomalies de cylindre". Ces valeurs sont comparées dans un comparateur 25.Si Y est supérieur à Z, l'ensemble "réservation libération Y doit être extrait en même temps que l'interruption X; Ce résultat est obtenu au moyen du circuit ET 26 qui sélectionne les ensembles de données chaînés X, Y, soit un premier chemin logique. Un codeur 27 code X, Y de façon appropriée à l'aide de techniques classiques de traitement de données. afin d'engendrer une adresse destinée à la mémoire DASD 16. Cette dernière fournit alors les ensembles de données X, Y 28 contenant les-instructlons relatives aux modules de programme "interruption" et "réservation-l ibération". Si, au contraire, la valeur du compteur Z 24 est supérieure à celle du compteur Y-23, le comparateur 25 transmet un signal "Z > Y" au circuit ET 30, qui transmet alors un signal X Z au codeur 27. Ce dernier engendre une adresse de mémoire #afin d'extraire les ensembles de données X, Z 31 de la mémoire DASD 16 Cette dernière fournit alors ces ensembles à la mémoire de travail 13, par l'intermédiaire de l'adaptateur 15 et du câble 17, ce transfert étant représenté en 32. Les instructions sont ensuite décodées par l'unité de commande 12, ce qui est représenté en 33. Cela se traduit par l'exécution du programme X, c(est-à-dire du programme d'interruption, en 34.Les etapes 33 et 34 sont effectuees simultanément. L'execution de ce programme conduit l'unité de commande 12 à sélectionner soit le programme Y, soit le programme Z, ce qui est indiqué en 35. En supposant que le programme Y ait ete extrait en tant que partie des ensembles de données 28, il est très vraisemblable que l'étape 35 du programme se traduira par la sélection du programme Y. L'unité de commande 12 exécute donc le programme Y, ce qui est représente en 36. On notera que cela rend inutile la transmission d'une instruction SIO. supplémentaire sur le cible 17. Une fois le programme Y exécuté en 36, on ajoute "1" à la valeur du compteur Y 23, ce qui est indiqué en 37. Si, au contraire, l'étape 34 permet de déterminer que l'on a besoin du programme Z, une instruction SIO supplémentaire est transmise par l'intermediaire du câble 17 l'adaptateur 15 afin d'extraire le programme Z, te qui indiqué en 38. Ce dernier programme peut ensuite être exécuté, ce qui est indiqué en 39. Une fois ce programme exécuté, on ajoute "1" à la valeur du compteur-Z, ce qui indiqué en 40. La sortie du programme Y- ou du programme Z est ensuite appliquée au circuit OU 41 afin derejoindre la séquence d'instructions que l'on est en train d'exécuter en 42. L'unité de commande 12 établit toujours une sélection préférentielle en faveur de celui des programmes Y et Z qui doit être annexé au programme X, cette sélection étant modifiée à- chaque dépassement de capacite du compteur Y ou du compteur Z en mettant en service ou en restaurant une bascule 45 dite de dépassement de capacité. Chaque fois que cette bascule est rendue active, en raison, par exemple, d'un dépassement de capacité du#compteur Z 24, ce dernier est mis à la valeur "1" cependant que le compteur Y 23 est mis à la valeur "O". Par ailleurs, tout depassement de capacité du compteur Y 23 a pour effet de restaurer la bascule 45.Cette dernière est alors mise à la valeur "1" et le compteur Z 24 à "O", ce qui a également pour effet de modifier l'état du circuit de sélection préférentielle. Du fait de ces modifications, le circuit de sélection préférentielle se conforme à l'utilisation dynamique qui est faite du système de mémoire de masse.Il est sous-entendu#que le circuit de sélection préférentielle peut comporter plus de deux compteurs, et que l'ensemble de données Y, par exemple, peut faire l'objet d'une concaténation avec des ensembles de données élémentaires possédant leur propre fonction de sélection préferentielle..Par ailleurs, les emplacements physiques des séquences de programmes X-Y et X-Z peuvent être séparés ou se trouver dans une même partie de la mémoire DASD 16, la reproduction du programme X-Y pouvant se trouver dans une piste donnée et celle du programme X-Z dans une autre piste. Le programme X peut également se trouver dans une piste et être suivi du programme Y, celui-ci étant lui-même suivi du programme Z. La chose importante en l'occurrence est que le nombre d'instructions Départ E/S (SIO) émanant de l'unité de commande 12 soit limité par le circuit de sélection préférentiel le de façon indiquée ci-dessus à propos de la Figure 2. Bien que l'on ait décrit dans ce qui précède et représenté sur les dessins 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 de ladite invention. REVENDICATIONS 1.- Procédé de commande de transfert d'ensembles de données à partir d'une'mémoire d'un système de traitement de données permettant de concaténer à un premier ensemble de données appelé de la- mémoire un autre ensemble de-données associé. Ce procédé est caractérisé en ce qu'il comporte les opérations suivantes: affectation d'un moyen de comptage à chacun des ensembles de données à concaténer à un premier ensemble de données, ce moyen de comptage étant incrémenté d'une unité chaque fois que l'ensemble de données correspondant est exécuté; appel d'un premier ensemble de données en mémoire et appel de l'ensemble de données associe le plus-fréquemment exécuté comme indiqué par le moyen de comptage contenant la plus forte valeur. 2.- Procédé selon la revendication 1 caractérisé en ce que les ensembles de données contiennent des instructions devant être exécutées par le système de traitement de données. 3.- Procédé selon la revendication 2 caracterise en ce qu'il comporte en outre les opération suivantes: appel des instructions en mémoire et exécution de ces instructions; appel d'une séquence d'instructions comportant des ensembles de données concaténées à un premier ensemble de données et déterminées par les valeurs respectives contenues dans les-moyens de comptage correspondants; exécution des instructions contenues dans le premie#r ensemble de données; détermination de celui des autres ensembles de données devant être ensuite exécuté, et appel d'un nouvel ensemble à données en mémoire si l'ensemble de données concaténé au premier ensemble n'est pas l'ensemble à exécuter;; incrementation d'une unité de la valeur contenue dans le moyen de comptage correspondant à l'ensemble de données concaténé au premier ensemble de données. 4.- Procédé selon l'une-quelconque des revendications précédentes caractérisé en ce qu'une valeur prédéterminée est réintroduite dans celui des moyens de comptage contenant, après incrémentation, une valeur égale à la capacité maximale de comptage, les autres moyens de comptage étant remis à zéro. 5.- Procédé selon l'une quelconque des revendications 1, 2 ou 3 caractérisé en ce que des valeurs prédéterminées sont réintroduites dans les moyens de comptage quand l'un de ces moyens de comptage contient une valeur égale à la capacite maximum de comptage. 6.- Dispositif mettant en oeuvre le procédé selon l'une quelconque des revendications précédentes et comportant des unités de mémoire contenant des ensembles de données. Ce dispositif est caractérisé en ce qu'il comporte: des moyens indiquant des chemins logiques au cours de l'exécution d'instructions pouvant être réalisés par concaténation d'ensemble de données; des moyens de comptage affectés à chacun des chemins logiques indiquant le degré d'utilisation de chacun de ces chemins, les moyens de comptage affectés à un chemin logique étant incrémentés d'une unité lorsque ce chemin est utilisé au cours de l'exécution d'un programme; des moyens de comparaison comparant les valeurs contenues dans les moyens de comptage pour déterminer la valeur la plus élevée parmi ces valeurs de comptage permettant ainsi de sélectionner le chemin logique correspondant à cette valeur de comptage;; des moyens d'accès en mémoire permettant d'appeler en mémoire, à l'aide d'une seule opération d'acces en mémoire, les ensembles de données concaténés formant par le chemin logique sélectionné, une nouvelle opération d'accès en mémoire n'étant effectuée que si l'exécution du programme demande l'appel en mémoire d'un ensemble de données autre que celui qui a été sélectionné par les moyens de comparaison. 7.- Dispositif-selon la revendication 6 caractérisé en ce qu'il comporte en outre des moyens modifiant, à des instants prédéterminés, les valeurs contenues dans les moyens de comptage. 8.- Dispositif selon la revendication 6 caractérisé en ce qu'il comporte en outre des moyens modifiant les valeurs contenues dans les moyens de comptage après chaque exécution de programme. 9.- Dispositif selon la revendication 6 caractérisé en ce qu'il comporte en outre des moyens rendus actifs quand l'un des moyens de comptage contient une valeur prédéterminée de-comptage, ces moyens introduisant une nouvelle valeur dans ce moyen de comptage et remettant à zéro tous les autres moyens de comptage. 10.- Dispositif selon l'une quelconque des revendications 6 à 9 caractérisé en ce qu'il est utilisé pour le transfert par pages d'ensembles de données d'un système de mémoire à une mémoire de travail.