FR 2010529 A1 19700220 FR 6911153 A 19690417 69 11153 1 2010529 La présente invention concerne des systèmes d'évaluation de la performance d'ordinateurs et plus particulièrement, un dispositif de commande utilisant une mémoire associative. On connaît déjà, des systèmes d'évaluation qui ont été conçus pour ras-5 sembler, réduire et présenter des données de performances et ils peuvent être classés en compteurs et en dispositifs traceurs. Le degré de précision de l'accumulation des données dépend dans une grande mesure du procédé de contrôle utilisé. De plus, les résultats de l'accumulation peuvent être donnés à l'utilisateur sous forme détaillée explicite (telle qu'un signal de sortie 10 représentant le tracé complet du programme) ou sous forme résumée (tels que le temps d'attente total compté dans un intervalle de huit heures). Les compteurs ont l'avantage d'être très précis et de fournir une certaine variété dans le choix des données. Ils ont l'inconvénient que la sortie est limitée à des statistiques et à la chronologie et le procédé nécessite 15 que l'utilisateur sache à quoi s'attendre. Les dispositifs traceurs résolvent les inconvénients des compteurs en fournissant un signal de sortie qui indique la séquence aussi bien que les statistiques et la chronologie et tendent à révéler ce à quoi on ne s'attend pas. Les dispositifs traceurs présentent cependant l'inconvénient d'avoir 20 une faible résolution et le choix des données est limité aux adresses et à quelques conditions d'état. Les deux classes de systèmes de l'art antérieur présentent des inconvénients communs tels que la nécessité pour l'utilisateur de faire une préparation minutieuse pour le traitement ultérieur des données enregistrées et 25 les problèmes d'identification des programmes et des adresses. Un objet de l'invention est de réaliser un système de contrôle pour évaluer la performance d'un ordinateur, qui supprime les limitations des systèmes de contrôle de l'art antérieur. Un autre objet de l'invention est de réaliser un système pour la mise 30 au point et l'amélioration de l'efficacité du programme dans un ordinateur à programme emmagasiné. Un objet de l'invention est aussi de réaliser un moyen pour contrôler un programme pendant que le programme est en cours d'exécution par un système d'ordinateur. 35 En bref, conformément à l'invention une mémoire associative est reliée à un ordinateur à programme emmagasiné pour obtenir et emmagasiner les données essentielles décrivant les adresses de la mémoire et les codes opération des instructions au fur et à mesure qu'elles sont exécutées par l'ordinateur. Cette information Identifie des blocs d'instructions qui sont toujours 40 exécutés séquentiellement aussi bien que les liaisons parmi les blocs. Les 69 1115$ 2 2010529 liaisons définissent généralement différents chemins de programmes basés sur des instructions de branchement conditionnels. L'information obtenue définit la structure logique du programme exécuté par l'ordinateur. L'organisation logique de la mémoire associative et son système de regis-5 très, de circuits de données et de coircnandes sont conçus de façon à réaliser un algorithme qui identifie les points d'entrée» de sortie et de destinations des blocs d'instructions séquentielles. A partir de ces données rassemblées, on construit un organigramme^/^programme qui décrit 1'activité du programme exécuté par l'ordinateur. 10 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 annexai à ce texte, qui représentent un mode de réalisation préféré de celle-ci. La figure 1 représente un bloc diagramme simplifié d'un système de contrôle d'ordinateurs dans lequel l'Invention est utilisée. 15 La figure 2 représente un bloc diagramme de l'affectation d'un compteur à la zâne d'exécution initiale. Les figures 3a, 3b et 3c sont des blocs diagramme de l'attribution du compteur suivant à la zône d'exécution suivante. La figure 4 est un bloc diagramme de la corrélation de la zone exécutée 20 avec l'activité des canaux. La figure 5 est un bloc diagramme de l'enregistrement, de l'occupation et des transitions des zones d'exécution. La figure G est un diagramme des temps représentant le fonctionnement simultané de la mémoire supplémentaire et de la mémoire associative. 25 La figure 7a représente un diagramme du format des instructions de la mémoire associative. La figure 7b représente un diagrairme du format des instructions de la mémoire supplémentaire. La figure 8 représente un diagramme d'un algorithme pour les combinai-30 sons des événements et des états. La figure 9 -est un organigramme d'un algorithme pour trouver les distributions des événements. La figure 10 est un organigramme d'un algortihme pour trouver des séquences courtes. 35 La figure 11 est un organigramme d'un algorithme pour suivre des séquen ces longues. . La figure 12 est un diagramme des temps montrant la relation des blocs en cours aux blocs déjà tracés dans un algorithme de représentation des blocs0 La figure 13 .est un organigramme d'un algorithme-de représentation des 40 blocs. 11153 3 2010529 Le problème fondamental pour contrôler le fonctionnement d'un ordinateur est l'existence d'un trop grand nombrede données. Pour qu'un système de contrôle de dispositifs soit pratique, il doit être capable de réduire les données en une quantité maniable. 5 La mémoire associative ou mémoire adressable par son contenu est utilisée pour sa possibilité unique de n'enregistrer que les données importantes. La mémoire peut être conçue pour n'enregistrer une donnée que si elle est nouvelle c'est-à-dire si la donnée a déjà été examinée et emmagasinée, il n'est pas nécessaire de l'emmagasiner de nouveau. 10 Dans le dispositif de la présente invention, les procédés associatifs fondamentaux d'interrogation et d'emmagasinage sont étendus au moyen d'un système d'acheminement de données et de commande de champ de mots en procédés permettant de réaliser des algorithmes de traitement de données et de réduction de données avancés. Les algorithmes sont programmés et conservés dans 15 une mémoire de programme où ils peuvent être ajoutés ou modifiés par l'utilisateur. Le brevet français 1 548 765 déposé le 27 Novembre 1967 au nom de la demanderesse décrit une mémoire associative qui peut itre utilisée dans la présente invention. 20 La figure 1 représente un bloc diagramme des registres de données et des circuits du dispositif de contrôle. Chaque ligne représente un passage pour un multiplet (8 bits) de données, et un point où deux lignes se coupent indique une connexion programmable. Un groupe de six passages (48 bits) transporte les données contrôlées provenant de l'interface avec l'ordinateur 30 25 à l'entrée de la mémoire associative 32. Lbs divers registres et le commutateur 34 réalisent l'emmagasinage temporaire et la corrmandë sur ces données. Un autre passage 36 d'un multiplet de large connecte les sorties de la mémoire 38 et 40 aux entrées 42 et 44 par l'intermédiaire d'un additionneur 46 pour permettre de réaliser les fonctions de traitement internes. 30 Les circuits logiques 48 relient la mémoire supplémentaire 50 à la mé moire associative 32 et réalisent une fonction d'adressage pour les deux mémoires. Cette fonction d'adressage est réalisée lorsque la mémoire associative est interrogée par les données dans son registre d'entrée 42. Si les données dans une cellule de mot associative quelconque sont égales aux don-35 nées d'interrogation, cette cellule de mots ou une cellule de mots dans la mémoire supplémentaire 50 dans une correspondance bi-univoque avec elle, ou bien les deux cellules peuvent être sélectionnées pour l'introduction ou la récupération des données. Les adresses explicites pour les cellules de mots ne sont pas nécessaires dans les instructions du programme. Les circuits lo-40 giques de mots 48 réalisent aussi d'autres fonctions comprenant un dispositif 69 11153 4 2010529 pour le règlement des compétitions, c'est-à-dire l'attribution des priorités dans le cas d'accords multiples et un signal accord/pas d'accord pour le branchement conditionnel dans le programme. La commande sur l'acheminement des données est réalisée à l'intérieur 5 d'une instruction obtenue à partir de la mémoire de programme 52 au moyen de spécifications d'acheminement. Le format d'instruction classique est reprê©-senté sur la figure 7a. Le code opération pour l'instruction AM détermine une des opérations suivantes : 10 Interrogation: comparer les contenus du registre d'entrée 42 avec tous les mots emmagasinés et mettre à un les indicateurs d'accord pour les cellules ayant des contenus égaux. Interrogation suivante - Cette opération est analogue à la précédente sauf que l'indicateur d'accord pour la cellule suivante est mis à un. 15 Ecriture - Emmagasiner le contenu du registre d'entrée dans toutes les cellules dont les indicateurs d'accord sont à un. Nouvelle écriture - Emmagasiner le contenu du registre d'entrée dans la première cellule de mot libre. Ecriture dans une cellule Errmagasiner le contenu du registre d'entrée 20 dans la première cellule dont l'indicateur d'accord est à un. Ecriture dans toutes les cellules - Emmagasiner le contenu du registre d'entrée dans toutes les cellules indépendamment des Indicateurs d'accord. Lecture - Mettre le contenu de la première cellule dont l'indicateur d'accord est à un dans le registre de sortie 38. 25 Deux champs de données peuvent être déplacés simultanément au moyen de deux spécifications d'acheminement: acheminement 1, acheminement 2. Ces champs peuvent avoir un, deux ou trois multiplets de long, ou bien un symbole littéral d'un multiplet peut être mis à la place d'une des spécifications d'acheminement. 30 La spécification d'acheminement dans le format standard contient 16 bits identifiés de la manière suivante: - Code Changement (un bit). Un zéro indique que le Registre A 54 doit être laissé inchangé, et un "un" indique que le champ déterminé par l'adresse de source (décrit ci-dessous) doit être introduit dans le Registre A avant 35 d'être acheminé plus loin. - Code Littéral (un bit). Un "un" fait qu'une constante égale à un multiplet provenant de l'instruction est introduite dans le Registre A avant d'être acheminée plus loin. Cette constante remplace la spécification d'adresse de source et de longueur de champ. 40 - Longueur de champ (trois bits). Elle détermine le nombre de multiplets 11153 5 2010529 du champ acheminé. La longueur de champ maximum provenant du registre de contrôle 56 est de trois bits et cella provenant des autres sources est de 7 bits. Une longueur de champ nulle ne provoque pas de transfert de données.. - Adresse de Source (six bits). Elle détermine l'emplacement où sera 5 trouvé ls multiplet d'ordre inférieur du champ à acheminer. Les multiples successifs du même champ sont déplacés suivant la spécification de longueur. - Adresse "destination" (ciq bits}. Elle détermine l'emplacement vers lequel le multiplet d'ordre inférieur dû champ doit être acheminé. Les adresses sont données par le tableau ci-dessous et portent les appellations confor- 10 mément à la figure 1. Sources Sortie Mémoire Supplémentaire 00 - 07 Sortie Mémoire Associative 10-17 Vide 1A 15 Entrée I/O 1B Horloge 1C - 1F Interface dispositif de contrôle 20 - 25 Constante 26 20 Destinations Entrée Mémoire Supplémentaire 00 - 07 Entrée Mémoire Associative 10-17 Vide 1A Sortie I/O 1B Les adresses sont données en héxadécimal. L'adresse pour la constante n'est pas utilisée lorsque la constante est déterminée comme un symbole littéral, mais si la valeur de la constante est inchangée, la constante peut Être acheminée soit seule comme un champ d'un multiplet soit comme une partis d'un champ de deux ou trais multiplets aux adresses (25 ou 24}. Si un vide ^ est déterminé comme source, la destination correspondante est remise à zéro. Si un vide est déterminé comme destination, les positions du registre A correspondant à la source sont remises è leur nouvelle valeur. Les deux spécifications d'acheminement par instruction permettent aux deux champs d'être déplacés simultanément st en parallèle à partir de l'in-35 terface du registre de contrôle au registre d'entrée 42 de la mémoire associative par l'intermédiaire du registre A 54 et du commutateur 34. Las transferts des données à partir de sources autres que le registre de centrôle ont lieu sur un bus 1B qui peut acheminer un multiplet st sont par conséquent réalisés en série par multiplet. En conséquence, un seul de ces transferts ? 11153 6 2010529 peut être demandé dans chaque instruction en utilisant la première spécification d'acheminement, La seconde spécification d'acheminement peut être utilisée pour un transfert simultané à travers le commutateur. Un symbole littéral peut n'être déterminé que par la seconde spécification. 5 Les spécifications "instruction suivante" réalisent un branchement condi tionnel au programme, basé sur la condition collective des indicateurs d'accord. Le choix de l'instruction suivants dépend des opérations suivantes: INTERROGATION - s'il y a un seul accord ou plusieurs accords : Instr. 1 10 si pas d'accord Instr. 2 ECRITURE OU LECTURE - si un ou plusieurs indicateurs d'accords MI sont à un : Instr. 1 si aucun indicateur d'accord 15 MI n'est à un : Instr. 2 La mémoire associative 32 est constituée de plusieurs registres de mots auxquels on peut accéder en parallèle pour les interroger ou pour introduire ou rechercher des données. Ces registres sont adressés par contenu plutôt que par emplacement» au moyen dlune interrogation dans laquelle tout l'en-20 semble des registres de mots est comparé simultanément avec le registre d'entrée 42. Un indicateur d'accord 48 est mis à un pour chacun des registres de mots dont le contenu est égal à celui du registre d'entrée. En général, certains champs seulement seront utilisés dans l'interrogation, les positions de bits restantes étant ignorées en mettant des zéros dans les positions cor-25 respondantes du registre de masque 43. A la suite de l'interrogation, les indicateurs d'accord MI sont mis à un pour tous les mots dont les valeurs de bits non masquées sont les mêmes que les valeurs de bits dans le registre d'entrée. Il peut en résulter que plusieurs mots soient accordés à un instant et si on le désire, les données 30 peuvent être introduites dans tous les mots simultanément en faisant que les indicateurs d'accord conditionnent les registres de mots pour l'écriture. Les contenus non masqués du registre d'entrée sont emmagasinés dans tous les registres de mots ainsi sélectionnés. PQur retrouver les données et pour un autre type d'introduction de don-35 nées, un seul mot peut être sélectionné à un instant, même si plusieurs indicateurs d'accord ont été mis à un. Dans ce but un autre type de conditionnement pour îa lecture ou l'écriture permet de mettre à "un" un seul des indicateurs d'accord pour sélectionner un mot pour l'opération. Cet indicateur d'accord peut être mis à zéro au cours de 1'.opération sans affecter les autres 40 indicateurs d'accord» de sorte qu'une succession d'opérations de lecture ou 69 11153 2010529 d'écriture peut progresser dans les mots accordés. Une autre forme de circuit logique de sélection est aussi utilisée: au lieu de sélectionner les mots qui ont été accordés, les indicateurs d'accord sont utilisés pour sélectionner les mots suivants dans un ordre chronologique. 5 Cette possibilité permet de traiter des groupes de mots sous forme de série ordonnée de façon plus commode qu'avec la correspondance sélection/ accord sur le même mot. Plusieurs interrogations peuvent être réalisées successivement sans restaurer les indicateurs d'accords. Ceci ajoute une fonction OU à la sélection 10 des mots en plus de la fonction ET que réalise l'utilisation normale des registres d'entrée et de masque. D'autres fonctions sont réalisées à l'aide des bits d'état qui sont actuellement contenus dans le mot associatif. Un de ces bits, généralement utilisé est le bit de "vacance'' qui fait la distinction entre les registres de 15 mots contenant des données valides et les registres qui sont disponibles pour l'emmagasinage de nouvelles informations. D'autres bits d'état peuvent être établis pour indiquer des qualifications, comme par exemple l'Indication duù dernier mot emmagasiné ou l'Indication des mots suivants à interroger. Les opérations dans lesquelles les bits d'état apparaissent sont préparées en 20 utilisant des configurations de bits constantes dans les registres d'entrée et de masque. La mémoire supplémentaire SS 50 est utilisée pour conserver les temps, les valeurs et les codes de condition pour lesquels le traitement associatif n'est pas nécessaire. Cependant, chaque cellule de mots de la mémoire supplé-25 mentaire 50 correspond à une cellule de mot unique dans la mémoire associative (AMI 32 et peut être sélectionnée chaque fois qu'une Interrogation de la mémoire associative met à "un" un indicateur d'accord (non représenté, mais placé dans le circuit logique de mot 48), pour la cellule AM correspondante. Le concept général est que la cellule de mots Ali conserve les données décri-30 vant l'état de l'ordinateur contrôlé 30, tandis que la cellule de mot de la mémoire supplémentaire SS collecte les statistiques relatives à cet état. Le caractère des algorithmes des dispositifs de contrôle est tel qu'il y a une séries d'opérations n'impliquant que la mémoire associative» établissant ou identifiant un enregistrement pour l'état de l'ordinateur contrôlé. 35 Ce procédé sera généralement terminé lorsque l'ordinateur a pris un nouvel état, mais un indicateur d'accord sera à un, indiquant ainsi l'enregistrement de l'état précédent. Si l'algorithme fournit une instruction SS à ce moment, la cellule de mot de la mémoire SS est sélectionnée et misa à jour conformément à l'instruction SS. Une fois que la sélection a été réalisée, 40 elle n'est pas affectée par une modification quelconque des indicateurs 69 11153 " 2010529 d'accord jusqu'à ce que l'instruction SS soit terminée et qu'une autre instruction soit délivrée. La mise à jour est réalisée par 1•interfflétfisirs de l'additionneur 43 et des registres d'entrée et de sortie 33 44 et 40. 11 est possible que les 5 opérations AH et SS se poursuivent indépendamment une fois que la silaetion d'une cellule de mot SS a été réalisée. Cette simultanéité a lieu automatiquement pour toutes les instructions AH sauf celles qui demandent le transfert des données entre la mémoire associative et la mémoire supplémentaire ou au dispositif entrée/sortie CI/Oî 58» 10 Le traitement simultané est représenté sur la figure 8. Le moment auquel l'ordinateur contrôlé prend un nouvel état, est choisi de façon à stra le moment de la réception des nouvelles données contrôlées comme indiqué par le signal de découpage approprié provenant de l'ordinateur. Puisqu'il y a généralement un retard d'un cycle avant que le nouvel état soit identifié, 15 les signaux de l'horloge 60 sont conservés temporairement de sorte qua l'horlege peut être restaurée pour enregistrer une nouvelle période de temps commençant à partir du signal de découpage tandis que l'ancienne période de temps est conservée pendant l'utilisation dans l'instruction SS. Si aucun nouvel état ne s'est produit, les anciennes et nouvelles périodes de temps sont combinées. 20 La mise à jour d'un mot dans la mémoire supplémentaire est commandée par une seule instruction (voir figure 7b3 contenant des spécifications pour réaliser différentes opérations sur quatre champs du mot. Ces champs peuvent avoir de un à sept multiplets de longueur, la longueur combinée n'exédant pas les 16 multiplets du mot SS. L'instruction SS occupe la mémoire du pro-25 gramme comme une partie de l'algorithme programmée mais elle diffère du point de vue format de l'instruction AM. L'emplacement de départ détermine le multiplet d'ordre inférieur du champ 1 qui est mis à jour suivant sa spécification de longueur et d'opération. Les champs restants sont contigus dans le mot SS et sont traités suecessive-30 ment. Si dans une application donnée, les 16 multiplets du mot ne sont pas utilisés, l'emplacement de départ peut être différent de zéro, et la durée de la réalisation de l'instruction SS sera raccourcie. En plus-, de la longueur du champ (LF), la spécification de champ peut demander une des opérations suivantes sur le champ COF 3 s 35 1. Incrémenter le champ 2. Ajouter l'horloge au champ 3. Placer la partie inférieure de la lecture de l'horloge et ds l'ancienne valeur du champ dans le champ. 4. Placer la partie supérieure de la lecture de l'horloge et de 40 l'ancienne valeur du champ dans le champ. bad original' 69 lit53 g 2010529 5. Ajouter par une opération OU le multiplet d'interface au champ 6. Pas d'opération. On va maintenant décrire le fonctionnement fondamental du système. Pour mesurer la performance d'un ordinateur, il est souvent nécessaire de connaître 5 combien de temps on passe pour exécuter les progranpes dans les diverses zônes de la mémoire principale. Pour déterminer ces durées un compteur doit être attribué à chacune des zênes actives. Lorsqu'une instruction est recherchée à partir d'une zône de la mémoire de l'ordinateur, les impulsions d'horloge comaancent à incrémenter le compteur attribué et continuent jusqu'à ce qu'une 10 instruction soit amenée à partir d'une zône quelconque différente. □ans le système de la présente invention, les compteurs sont placés dans la mémoire supplémentaire 50 et sont attribués aux zones de la mémoire supplémentaire automatiquement par l'intermédiaire d'une technique d'accord de la mémoire associative. Initialement, la mémoire associative 32 est vide et les 15 compteurs placés dans la mémoire 50 sont à zéro. L'adresse de la première instruction est transférée depuis le registre d'adresse de la mémoire de l'ordinateur à travers l'interface du dispositif de contrôle par l'intermédiaire du registre de contrôle 56, du registre A 54 et d'un commutateur 34 au registre d'entrée 42 de la mémoire associative. Cette adresse d'instruction est 20 emmagasinée dans un emplacement de mots de la mémoire associative comme représenté sur la figure 2. Dans la représentation de la figure 2, ce met sert à contrôler la zône de la mémoire 00100 à 001FF. Cette fonction est réalisée par la possibilité de comparaison de la mémoire associative, qui compare les contenus des cel-25 Iules de mots AM avec chaque nouvelle adresse d'instruction amenée dans le registre d'entrée 42 de la mémoire associative. Les bits d'ordre inférieur sont ignorés en utilisant le registre de masque 43. Quand il y a égalité dans les bits d'ordre supérieur 001 de l'adresse, un accord est indiqué et l'indicateur d'accord 48 de cette cellule conditionne un compteur correspondant 30 dans la mémoire supplémentaire 50, ce qui permet d'accumuler une valeur en faisant avancer par pas le compteur conformément à un intervalle de chronologie fondamentale (horloge 60). Le processus d'interrogation est repris jusqu'à ce qu'une inégalité entra la valeur emmagasinée dans la cellule et l'adresse d'instruction contrôlée 35 produise un désaccord. Le désaccord signale que l'exécution du programme dans l'ordinateur 30 a passé à une zône différente de la mémoire principale de l'ordinateur. En réponse à l'indication de désaccord, le compteur 50 est désexcité ce qui fait que le programme de commande 52 se branche à un cycle d'écriture afin d'enregistrer une nouvelle zônB active comme illustré par l'organi-40 gramme de la figure 3a. 69 11153 10 2010529 Comme représenté sur la figure 3a, le programme de contrôle attribue les compteurs au fur et à mesure qu'ils sont nécessaires et enregistre leur attribution dans les cellules de mots associatives. Par exemple, sur la figure 3b une nouvelle adresse de zônes 049 est contrôlée, ce qui provoque un désac-5 cord. Le programme de contrôle effectue un branchement (figure 3a) st écrit l'adresse 049 dans la mémoire associative 32, ce qui entraîne l'attribution d'un nouveau compteur dans la mémoire supplémentaire 50 à la nouvelle zône. La cellule de mot AN après cette opération est représentée sur la figure 3c*, Si au cours de l'exécution du programme, l'ordinateur contrôlé revient à une 10 zône déjà identifiée par le contrôleur de programme, telle que la zône 001 dans l'exemple ds la figure 2, la cellule de mot initiale AN accorde l'adresse et le compteur est ré-excité pour des accumulations supplémentaires. La procédure de contrôle à deux branchements représentée par la figure 3a est utilisée pour produire de nombreux types d'information. Comme représen-15 té sur la figure 4» l'activité du canal (entrée/sortie 5BÎ est contrôlée et présentée à l'interface sous forme d'un champ de bits (le canal B identifié par l'adresse 2). Ce champ est juxtaposé avec l'adresse de la mémoire de l'ordinateur comme représenté sur la figure 4. Ainsi, une corrélation est réalisés automatiquement entre l'utilisation de la mémoire et l'activité du canal. 20 Ceci est indépendant pour le dispositif de contrôle du type de données qui sont amenées à son interface. Par conséquent, l'utilisateur peut réaliser les corrélations,sur des combinaisons quelconques d'événements qui sont représentées par les signaux digitaux. Un autre exemple d'une telle corrélation est représenté par la figure 25 5. Cette corrélation produit une information sur la séquence des événements qui ont lieu dans le système contrôlé. Chaque événement est associé à l'événement qui le précède en formant un couple ordonné au registre d'entrée de la mémoire associative. Deux types d'événements sont enregistrés dans ce procédé l'occupation d'une zône particulière et la transition d'une zône à l'autre. 30 L'adresse est d'abord placée dans la champ de gauche (le champ courant) du registre AM 42 et une interrogation de la mémoire associative est réalisée par l'adresse courante et l'adresse précédente. Une fois que l'indication d'accord a été utilisée, l'adresse est alors placée dans le champ de droite (le champ précédent) et elle est conservée à cette place jusqu'à ee que l'adras-35 se suivante arrive et le cycle est repris. Une opération typique représentée sur la figure 5 peut impliquer deux zônes d'adresses séquentielles de la mémoire commençant à l'adresse 001 pour la première zône et l'adresse 004 pour la seconde. Chaque zône impliquera naturellement une série d'adresses. En poursuivant l'exemple, on suppose que 40 la première zône 001 est utilisée par le système contrôlé. La première adresse 69 1 1153 11 2010529 est amenée à partir du registre d'adresses de la mémoire de l'ordinateur et placée dans le registre d'entrée 42 de la mémoire associative. Puisque c'est la première référence d'adresse, il n'est pas nécessaire d'interroger la mémoire associative qui au départ ne contiendra pas d'information. Par conséquent 5 cette première adresse peut être placée immédiatement dans la partie de droite du registre d'entrée, le segment d'adresse précédent de ce registre. En supposant que l'adresse suivante référencée soit aussi dans la zone 001, cette adresse est amenée à partir de cette zône et placée dans la portion courante du registre d'entrée 42. La mémoire associative est alors interrogée et puis-10 qu'il n'y a rien danB cette mémoire, un cycle d'écriture est réalisé pour emmagasiner le contenu du registre d'entrée c'est-à-dire 001 001. (Les parties non significatives de chaque adresse sont masquées par le registre de masque 43). A la fin de l'opération d'écriture, l'adresse précédente est écartée 15 et l'adresse courante est déplacée depuis le registre d'entrée à la portion d'adresse précédente sur la droite. L'adresse suivante est amenée depuis le registre d'adresses de la mémoire de l'ordinateur et placée dans la position courante, soit la plus à gauche du registre d'entrée 42. En supposant que l'adresse suivante provienne aussi de la zâne 001, un accord se produit dans 20 la mémoire associative mettant à "un" l'indicateur d'accord pour ce mot. Le compteur associé au mot accordé, est incrémenté de sorte qu'il indique maintenant un 2, le nombre de références qui ont été faites à la zône de mémoire 001. Le contenu du registre d'entrée est décalé vers la droite de sorte que 25 l'adresse courante est placée dans la portion d'adresse précédente et l'adresse précédente est écartée. On suppose maintenant que le programme contrôlé a fait une transition d'une zône 001 à une autre zone 004. Le contenu du registre d'adresses de la mémoire qui contient maintenant les digits 004 est transféré à la portion 30 courante du registre d'entrée 42. Le registre d'entrée contient maintenant l'adresse comnençant à 004 dans la portion courante Bt l'adresse commençant à 001 dans la portion précédente. Les cellules dB mots de la mémoire associative sont interrogées et aucun accord ne se produit car ce mot n'est pas emmagasiné dans la mémoire associative. ( le seul mot qui est emmagasiné à ce point 35 est 001 001). Un cycle d'écriture est réalisé et le contenu du registre d'entrée est emmagasiné dans une cellule de mots disponible de la mémoire associative et le compteur correspondant à ce mot est incrémenté de 1. Le contenu de la portion courante du registre d'entrée est maintenant placé dans la portion précé-40 dente et la portion précédente est écartée. 69 11153 12 2010529 Sï dés références sont faites à la zône 004 de la mémoire, elles seront enregistrées comme on l'a décrit précédemment pour la zône 001, ce qui fait que le troisième mot emmagasiné dans la mémoire associative, c'est-à-dire . 004 004, et le compteur correspondant seront incrémentés. L'adresse dans la 5 portion courante du registre d'entrée est maintenant placée dans la portion précédente. On suppose maintenant que le programme contrôlé revient à la zône 001. Le contenu du registre d'adresses de la mémoire (001) est placé dans la portion courante du registre d'entrée 42. Le registre d'entrée contient maintenant 10 001 004. Puisqu'aucun accord ne se produit, le contenu du registre d'entrée est placé dans la cellule de mots de la mémoire associative et le compteur associé à cette cellule est incrémenté de 1. L'adresse courante est déplacée à l'adresse précédente dans le registre d'entrée 42. Si l'adresse suivante est aussi dans la zône 001 il ne se produit pas de transition. Le contenu 15 du registre d'adresse de la mémoire est placée dans la partie d'adresse courante du registre d'entrée. Le registre d'entrée contient par conséquent 001 001. Une Interrogation provoque un accord avec la première cellule de mots de la mémoire associative (001 001) et le compteur correspondant est incrémenté. D'autres transitions de la zône 001 à la zône 004 donneront un accord 20 dans la seconde cellule de mots de la mémoire associative et le compteur correct est incrémenté. Les statistiques représentées, enregistrées sur la figure 5, indiquent que l'activité est transférée entre deux zônes de mémoire 001 et 004; et que 8 transferts sont réalisés de la zône 001 à la zône 004, que 7 transferts 25 sont réalisés de la zône 004 à la zône 001, que 123 références sont réalisées aux adresses à l'intérieur de la zône 001, et 678 références aux adresses à l'intérieur de la zône 004. Ce procédé permet d'obtenir un graphique du fonctionnement du système dans la mémoire associative et est utilisé pour étudier l'opération de mise 30 en page des algorithmes. Si l'adresse complète de l'instruction est appliquée à la mémoire associative en modifiant le contenu du registre de masque, toutes les liaisons d'un programme sont enregistrées et sont utilisées pour tracer le diagramme du programme conme il est exécuté en réalité. Cette technique prend beaucoup de place et elle est peu pratique sauf dans le cas des program-35 mes très courts. Un procédé plus complexe décrit ci-dessous élimine la plupart des informations redondantes et rend possible la représentation par blocs avec des mémoires associatives. Qn vient de décrire dans ce qui précède les possibilités d'enregistrement logique du dispositif de contrôle de programme. Les fonctions d'enregistrement 4G ont lieu, dans les compteurs qui sont en réalité des cellules de mots dans 69 1H53 13 2010529 la mémoire supplémentaire adressée par la mémoire associative à la suite du procédé d'interrogation. Ces cellules de mots sont établies de différentes façons pour enregistrer des valeurs, des temps ou la présence de conditions de l'ordinateur suivant les mesures particulières désirées. 5 Dans les exemples d'application qui vont suivre, les algorithmes sont donnés sous forme de blocs diagrammes, dans lesquels chaque bloc représente une instruction comprenant l'acheminement des données, l'opération (écriture ou interrogation), et le masquage pour les opérations AH. Les données sont acheminées par champs qui sont constants au cours de chaque application et 10 sont représentées en lettres majuscules généralement sous forme mnémonique. L'emplacement d'un champ est indiqué par un indice identifiant le registre impliqué dans l'acheminement ou la mémoire elle-même. Ces indices sont: b - registre de contrôle 56 a - registre d'entrée au commutateur (Registre A 54) 15 i - registre d'entréB 42 à la mémoire associative s - cellules d'emmagasinage de la mémoire associative o - registre de sortie 38 de la mémoire associative p - registres entrée/sortie 40, 44 de la mémoire supplémentaire Les divers champs utilisés dans un algorithme forment une série ordonnée 20 à l'entrée de la mémoire associative et après avoir été écrits dans une cellule de mot particulière. La notation pour une telle série ordonnée est: S est le champ combinant les bits de canal occupé et d'état de programme (B bits)j P est la page d'instruction (8 bits) et C est ls dernier indicateur 25 d'état. Si l'interrogation est l'opération à réaliser, elle porte généralement sur une série ds tels mots. Cette série n'est pas ordonnée et est écrite de la manière suivante: 30 ^BPr> Dans cet exemple, S et P identifient les champs servant à l'interrogation et les tirets indiquent que le champ occupant cet emplacement relatif dans le mot est masqué. APPLICATION 1 : COMBINAISON D'EVENEMENTS ET D'ETATS. 35 Le problème posé consiste à trouver quels états du système se produisent pendant une période de fonctionnement de l'ordinateur, combien de fois chaque état se produit et combien de temps il est utilisé pour chaque état. Dans cette application un état du système est défini comme une combinaison à l'intérieur des classes suivantes de signaux contrôlés: 2010529 1 bit 1 bit 1 bit 3 bits 8 bits L'interface entre l'ordinateur 30 et le registre de contrôle SB est réglés de façon à fournir tous les signaux précédents (sauf le signal page d'instruction) sur une base oui ou non. La page d'instruction aonstitue la groupe 10 de 8 bits d'ordre supérieur de l'adresse d'instruction dont la présence à 1'interface est signalée au moyen du "daeoupaga d'instructions". Una évaluation de l'état du système doit être réalisée à chaque découpage d'instruction ou. si les instructions ne sont pas an cours d'exécution, à chaque changement dans les conditions restantes. 15 Procédure : Chaque état du système est représenté par une configuration de bits particulière dans l'ensemble précédent de 14 bits et est enregistré dans un mot de la mémoire associative. L'intervalle de temps et l'utilisation de chaque état sont assemblés dans le mot correspondant de la mémoire supplémentaire. Si les instructions sont en cours d'exécution (états de pro-20 gramme opérationnel et d'exécution), on utilise toute la configuration de bits, autrement seuls les états de programme et de canaux sont emmagasinés. Chaque fois qu'un changement d'état se produit, la configuration da bits appropriée est comparée à toutes celles précédemment emmagasinées dans la mémoire associative 32. Si on ne trouve pas d'accord, indiquant un nouvel 25 état, la nouvelle configuration de bits est emmagasinée dans l'emplacement de mot vacant suivant et les champs statistiques correspondant dans la mémoire supplémentaire sont mis aux conditions initiales. Si on trouve un accord, ceci indique une répétition, les statistiques correspondantes sont mises à jour. 30 Les interrogations de la mémoire associative peuvent se produire à la suite des découpages d'instructions sans qu'il y ait un changement de l'état de l'interrogation précédente. Pour détecter les changements, un bit de commande est ajouté à l'ensemble de 14 bits et mis à un dans le mot représentant l'état courant du systèms. 35 Résultats : A la fin de l'évaluation, un mot de données pour chaque état du système qui s'est produit en réalité sera emmagasiné dans la mémoire associative. Ces mots peuvent être imprimés en utilisant le procédé de recherche ordonné pour présenter les états de non exécution an premier et ensuite les états par ordre de page. 40 Algorithme pour la combinaison d'événements et d'états (figure 8). 69 11153 14 Marche/arrêt Etat opérationnel/ Etat attente Superviseur/problème Canaux occupés Page d'instructions 2 possibilités 2 possibilités 2 possibilités 8 possibilités 256 possibilités BAD ORIGINAL. 69 11153 2010529 S - champ combinant les bits d'état de programme et ds canaux occupés (6 bits au total). P - Page d'instruction (B bits) C - Dernier indicateur d'état 5 Champs dans la mémoire : /S P C \ mémoire associative S. s s s/ ^temps + Utilisation^ mémoire supplémentaire En se référant à la figure 8, on peut voir que, lorsqu'une découpage d'instruction (découpage I) amorce un cycle (étape B), les bits? contrôlés sont acheminés par l'intermédiaire du registre A 54 (figure 1) au registre 10 d'entrée AM 42 pour interroger la mémoire associative 32. Un accord indique qu'il n'y a pas de changement ds l'état du système et termine le cycle. Si Isa instructions ne sont pas en cours d'exécution, le changement de l'état de programme ou de canal (changement d'état) amorce le cycle (figure 8 étape A) dans lequel seuls les bits S sont pris à partir du registre de 15 contrôle 58 et des zéros sont placés dans le champ P du registre d'entrée AM 42. Avant que le nouvel état soit enregistré, l'instant (enregistré par l'horloge 60) dans le dernier état doit être ajouté au total pour cet état (dans la mémoire 50) et "l'utilisation" est incrémentée. Ceci est réalisé 20 en interrogeant la mémoire associative avec le dernier indicateur d'état Cg afin de sélectionner le dernier mot enregistré et ainsi le mot correspondant dans la mémoire supplémentaire (figure B, étape C, D). Après la restauration du dernier indicateur d'état obtenue en écrivant un zéro dans le champ C (étape E), une interrogation (étape F) est réalisée 3 25 laissant P et S encore dans le registre d'entrée AM pour déterminer si l'état actuel du système est un état qui a été précédemment enregistré. Si c'est le cas (étape G), seul le dernier indicateur d'état est chargé en préparation du cycle suivant, autrement (étape H) tout le contenu du registre d'entrée AM est écrit dans le mot vacant suivant pour enregistrer le nouvel état. 30 APPLICATION 2 : DISTRIBUTION DES EVENEMENTS Problème : La longueur du chemin entre les branchements réalisés, peut être définie comme le nombre d'instructions séquentielles exécutées avant un branchement à une adresse non séquentielle. Il est important de déterminer jusqu'où un ordinateur doit faire des prévisions dans ces recherches d'ins-35 tructions. Cette application détermine quel longueur de chemin se produit en réalité dans les programmes et si elle se produit fréquemment. On doit trouver les distributions pour les chemins précédant chaque type d'instructions de branchement. Les signaux amenés au registre de contrôle sont le code opération, un 69 11153 2010529 bit indiquant si ls branchement est réalisé et un découpage d'instructions. Si le bit pour "branchement réalisé" n'est pas disponible, l'adresse st la longueur de l'instruction peuvent être utilisées pour faire une vérification arithmétique pour les instructions non séquentielles. 5 Procédure : La mémoire associative est chargée au préalable avec la série des codes opération des instructions de branchement, un mot pour chaque code. Ces mots contiennent aussi un "un" dans un champ à un seul bit pour indiquer "que le branchement est réalisé" et un champ de longueur de chemin contenant des zéros. Un champ de fréquence dans la mémoire supplémentaire est utilisé 10 pour indiquer le nombre de fois que l'on rencontre la même longueur de chemin. De plus, un mot spécialement marqué est placé à l'écart dans la mémoire associative pour la valeur opérationnelle (dans la mémoire supplémentaire) qui est intialement nulle. Comme chaque bit de code opération et de "branchement réalisé" est amené 15 au registre de contrôle, la combinaison de ces deux champs est comparée avec la série préchargée de codss. Si on ne trouve pas d'accord, le champ de valeur opérationnelle est incrémenté de un. Si on trouve un accord le champ de valeur opérationnelle est acheminé au champ de longueur de chemin non masqué et une seconde interrogation est réalisée. S'il en résulte un accord, le champ de 20 fréquence du mot accordé est incrémenté, autrement, la nouvelle longueur de chemin est emmagasinée dans un mot vacant avec une fréquence initiale de un. Le champ de valeur opérationnelle est remis à zéro. Résultats : A la fin de l'opération, il y aura un mot emmagasiné dans la mémoire associative pour chaque code opération et de longueur de chemin. 25 Ces mots peuvent être imprimés en utilisant la procédure de recherche d'intervalle pour condenser les différentes longueurs de chemin en groupes. Algorithme pour trouver les distributions d'événements (figure 9) 0 - Bit de code opération et de branchement réalisé (série préchargée de codes branchement avec L = 0) 30 L - Longueur de chemin C - Code pour le mot de valeur opérationnelle R - Valeur opérationnelle F - Fréquence Champs dans la mémoire /0 L C\ mémoire associative \ S s s/ 35 ^FN mémoire supplémentaire Chaque découpage d'instruction (découpage I) amorce un test (figure 9, étape A) pour trouver si un branchement est réalisé pour un des codes opération prédéterminés. Ces codes ne doivent pas être nécessairement la série entière 40 de codes de l'ordinateur. 69 11153 17 2010529 Si l'on ne trouve pas de branchement réel (pas d'accord)la valeur opérationnelle est incrémentée en sélectionnant le mot où elle est emmagasinée avec une interrogation pour trouver son code (étape B). Le champ de valeur opérationnelle est extrait de la mémoire supplémentaire acheminé par l'in-5 termédiaire du dispositif d'incrémentation et réemmagasiné dans le mime mot (étape C). Si ls branchement a eu lieu (accord), la valeur opérationnelle est sélectionnée (étape □), et acheminée dans le registre d'entrée AM où elle devient la longueur de chemin (étape E). Le champ de valeur opérationnelle est alors 10 restauré (étape E). La combinaison du code opération et de la longueur de chemin est alors emmagasinée (étape G), ou bien, si elle est déjà dans la mémoire, elle incrémente le champ de fréquence (étape H). APPLICATION 3 ; SEQUENCES COURTES ET MELANGES Problème : La connaissance de mélanges d'instruction peut être un facteur 15 Important dans la plannification de nouveaux systèmes. Il y a un certain nombre de manières suivant lesquelles le rassemblement des données de mélange peut Stre déterminé, toutes ces manières impliquant une forme quelconque de poursuites ou de découvertes de séquences. Dans cet exemple, le problème est de trouver quel code opération précède immédiatement les instructions de branche-20 ment conditionnelles jusqu'à un maximum de 10 y compris le branchement. Procédure : Un mot de la mémoire associative est utilisé pour chaque mélange, les codes opération étant distribués dans le mot dans dix champs de un multiplet chacun. Au fur et à mesure que les codes opération arrivent au registre de contrôle, ils sont acheminés aux champs successifs dans le 25 registre d'entrée AM et aussi à un champ mis de côté pour la comparaison, avec la série des codes de branchements conditionnels qui occupent une série spécial le de mots chargée au préalable. Lorsque l'on trouve un de ces codes, l'ensemble des dix champs dans le registre d'entrée AM est utilisé pour interroger le reste de la mémoire associative qui contient les ensembles déjà trouvés 30 et l'entrée appropriée de mise à jour est réalisée. Le registre d'entrée AM est remis à zéro, et le code opération suivant amorce une nouvelle séquence. La séquence peut aller au delà de neuf codes avant que l'on trouve un branchement conditionnel. Dans ce cas, le onzième code prend la place du premier etc.. jusqu'à ce que l'on trouve un branchement conditionnel. 35 Résultat : Chaque mot contient un mélange de dix codes opération ou moins » Le code de branchement conditionnel final peut occuper un quelconque des dix champs mais s'il y a au moins un zéro après lui la séquence entière est telle qu'elle a été enregistrée! si non, les neuf codes précédents'sont lus l'un après l'autre en commençant par la fin. 69 11153 18 2010529 Algorithme pour trouver les séquences courtes (figure 10) 0 - Code opération reçu à l'interface de contrôle B - Code opération de branchement préerrmagasiné Champs dans la mémoire 5 /B^ 0 0 0 0 0 0 0 0 0 0^ série de codes branchement 1 2 3 4 v (0003030SB6000000) mélange de quatre codes en séquence de quatre Â 0 011 012 0Î3 014 Q15 B16 07 08 09 O1^) mélange de dix codes en V»S8SaS3SS8S/ - J sequence de saizs au moins Les codes opération successifs sont placés dans des champs 0 successifs dans ls registre d'entrée AM au moyen d'une chaîne de macroinstructions ne 10 différant que dans la micro-instruction d'acheminement, (figure 10, étapes A, B, ... C). Lorsqu'un code opération de branchement est reçu, une routine coitmune (étape D) est suivie pour ajouter le nouveau mélange à la mémoire (étape E)E) ou incrémenter le champ utile dans un mélange existant (étape F). 15 APPLICATION 4 : SEQUENCES LONGUES Problème : Une façon permettant de déterminer les performances d'un système consiste à voir la fréquence à laquelle se produisent des séquences prédéterminées d'événements. Dans cet exemple, on doit tester un système avec uns charge connue pour déterminer si des séquences de demandes de superviseur, 20 d'interruptions et de programmes objet sont suivies. Les séquences peuvent être très longues, peuvent se chevaucher ou coïncider et elles peuvent commencer ou se terminer avec un élément arbitraire quelconque. Le passage à un nouveau mot d'état deogramme PSW représente une étape dans la séquence et peut être détecté par le fait qu'il y a une interruption 25 dans le système récepteur ou qu'une instruction (chargement de mots d'état de progranme) est exécutée. L'adresse du mot d'état de programme PSW identifia l'élément de la séquence et est obtenue à partir de l'interface de contrôle chaque fois qu'un changement se produit. Procédure : La mémoire associative est chargée au préalable avec les 30 séquences à suivre, les éléments ds chaque séquence étant placés dans des mots successifs de la mémoire. Dans le mot, le code pour chaque élément occups un champ, dans ce cas 24 bits d'adresse. Ls mot contient aussi dsux champs à un seul bit, un de ces champs contient un "un" pour indiquer le premier élément et l'autre un "un" pour indiquer l'élément final. 35 Ce procédé utilise une opération d'interrogation spéciale pour la mémoire associative-dans laquelle, lorsque un mot est accordé, le mot suivant dans l'ordre physique est sélectionné pour l'introduction des données. Dans ce cas, un bit d'état est introduit dans le mot après l'interrogation afin de 69 11153 2010529 conserver la trace de la progression dans la séquence st l'interrogation spéciale est réalisée simultanément sur le bit d'adresse et d'état. Si l'interrogation est réussie après que l'élément suivant a été reçu, le bit d'état est déplacé au mot suivant. 5 En plus d'enregistrer les succès dans la réalisation de séquences com plètes, on peut réaliser des statistiques sur les réalisations partielles dans les mots de la mémoire supplémentaire correspondant aux éléments intermédiaires de la séquence. Résultat : A la fin du test, la mémoire associative contient les séquences 10 testées et la mémoire supplémentaire contient l'enregistrement de la façon suivant laquelle ces séquences ont été suivies. Les séquences peuvent alors être imprimées sous forme d'un enregistrement complet du test dans un format permettant de réaliser une comparaison article par article avec les résultats des tests de variation de la charge du système. 15 Algorithme pour suivre des séquences longues (figure 113 C - Code pour l'élément de la séquence B, E - Début et fin S - Bit d'état I Initialement et à la fin de chaque cycle (étape F) les bits d'état sont 20 mis à un pour tous les premiers éléments. Lorsque le code suivant est reçu à partir du registre de contrôle, une interrogation (étape A) est d'abord réalisée pour trouver si ce code correspond aux derniers éléments attendus des séquences suivies jusqu'à présent de façon satisfaisante. S'il en est ainsi, (étape B) les statistiques sont 25 mises à jour et cet élément est remis à l'état zéro (sans affecter les autres éléments dans cette séquence). Le même code est alors utilisé (étape C) pour interroger la série de tous las éléments dont le bit d'état est un. Cette opération utilise l'opération d'interrogation de l'élément suivant (décrite précédemment) pour préparer 30 l'introduction éventuelle d'un "un" dans le bit d'état du mot suivant. Des zéros sont alors mis dans tous les bits d'état (étape D), indépendamment des indicateurs d'accord et sans les restaurer. Cette étape met à zéro tous les éléments qui ne s'accordent pas avec ce dernier code. Finalement tous les premiers éléments sont sélectionnés (étape E) pour 35 être Introduits en utilisant une opération d'interrogation normale. Cette sélection est ajoutée par une opération OU à la sélection obtenue par l'opération d'interrogation de l'élément suivant décrite précédemment. Les bits d'état sont mis à "un" (étape F) dans tous les mots sélectionnés, c'est-à-dire tous les premiers éléments et le mot sélectionné par l'opération d'in-40 terrogation de l'élément suivant. 1 1 153 20 2010529 APPLICATION 5 : ORDINOGRAMMES Problème : Pour mettre au point ou évaluer la performance d'un programme» il est important de connaître si les segments au programme sont exécutés dans l'ordre correct, combien de temps il faut pour cnaque segment, si ils se che-5 vauchent bien avec l'activité du canal et si il faut attendre pour l'exécution» Bien qu'un segment ou quelques segments puissent être séparés pour être examinés par des procédés analogues à ceux des applications précédentes, il y a une difficulté à prévoir ce qu'il faut considérer et il y a une chance de manquer une chose d'important. 10 Si chaque adresse d'instruction est appariée avec l'adresBe qui la suit* appelée successeur dans la chaîne d'instructions et si la combinaison est appliquée à la mémoire associative, la mémoire pourra éventuellement contenir toutes les liaisons entre les instructions pour ce programma. Cependant la plupart des instructions ont des successeurs uniques et cette technique perdra 15 beaucoup de place dans la mémoire pour l'information redondante. L'information essentielle n'est contenue que dans les liaisons issues d'instructions ou allant vers des instructions qui ont plusieurs successeurs ou prédécesseurs. Ces liaisons peuvent être identifiées à partir des codes opération et des adresses dans la chaîne d'instructions. 20 Procédure : chaque mot de la mémoire associative contient trois champs d'adresse, "l'entrée", et la "sortie", et la "destination". Les adresses d'entrée et de sortie sont les premières et les dernières d'un bloc d'instructions séquentielles et la destination est l'entrée d'un bloc suivant de sorte que chaque mot emmagasiné représente une liaison dans la structure logique du 25 programme. Certaines adresses sont identifiées comme des sorties lorsqu'elles se produisent dans la chaîne d'instructions accompagnées par un code opération de branchement. La première adresse après une sortie est automatiquement une entrée à un bloc courant qui occupera une des quatre relations possibles par 30 rapport aux blocs déjà trouvés. Quand les adresses d'entrée et les adresses suivantes apparaissent dans la chaîne d'instructions, elles sont comparées avec les entrées et les sorties précédemment emmagasinées pour trouver si le bloc d'instruction en cours est nouveau ou si c'est un bloc pour lequel on doit revenir, en arrière, ou bien voir si la bloc en cours ou un bloc an-35 cien peut être morcelé. Au fur et à mesure que l'exécution du programme se poursuit avec des répétitions de ces segments, la plupart des liaisons seront suivies une ou plusieurs fois et la division correspondante de la chaîne d'adresses en blocs sera établie. Lorsque ces éléments sont trouvés ou répétés, leur durée et 40 leur utilisation sont notées et les états des canaux et d'attente sont corrélés 69 11153 2010529 avec eux en utilisant la mémoire supplémentaire pour ces données supplémentaires. Résultats : On peut voir que chaque instruction de branchement conditionnel donnera deux liaisons au moins et pas plus de quatre et que le nombre 5 de blocs établi par le branchement est toujours inférieur de un au nombre des liaisons. Puisqu'un mot de la mémoire est nécessaire pour chaque liaison 2700 blocs approximativement peuvent être enrsgistrés dans uns îtlmoirs de 4036 mots. Suivant la complexité ds la structure du pragraîrene» la rclsnoire peut fonctionner avec dsa programmes comprsnant ds 8300 ë 16000 instraefeîons «, 10 a la fin de l'ordinogramme, la mémoire associative soutiendra la compo sition du point de vue structure du programme conformément à son exécution réelle et la mémoire supplémentaire contiendra les statistiques corréléss avec chacun des éléments de la structure. La représentation standard de cette information sera donnée dans une liste de blocs avec leurs liaisons de sortie 15 commandant leur ordre. Une fois que l'information a été rassemblée, d'autres procédures peuvent Stre utilisées pour remplir des conditions spéciales. Pour la documentation du programme, il peut Stre souhaitable de présenter le bloc diagramme sous forme illustrée en utilisant l'ordinateur récepteur pour calculer et imprimer 20 le programme. Lorsque le programme doit être amélioré par essais, il n'est pas toujours nécessaire d'imprimer toute la liste mais de n'Imprimer que les éléments prenant beaucoup de temps. Description détaillée de la procédure : Si une Instruction est un branchement conditionnel, la première fois où l'on rencontre son code opération 25 riant la chaîne d'instructions, il est identifié de façon à avoir la possibilité d'avoir un successeur différent dans une exécution future, et par conséquent elle est enregistrée comme la sortie d'un bloc. Son successeur du moment, est une "destination" et aussi une "entrée" à un autre bloc ou même au même bloc. L'enregistrement fondamental est ainsi constitué de trois adresses identl-30 fiant l'entrée, la sortie, et une destination du bloc. Lorsqu'un branchement conditionnel identifie l'adresse suivante, comme une entrée à un bloc, ce bloc peut couper un bloc quelconque déjà obtenu à partir de la chaîne d'instructions. Il y a quatre relations possibles d'un bloc en cours aux blocs déjà tracés comme représenté sur la figure 12. 35 Dans le cas 1, on trouve qu'aucune des adresses de l'adresse d'entrée en cours Ne, à l'adresse de sortie en cours Xc, ne s'accorde aux entrées ou sorties précédemment emmagasinées Np ou Xpj le bloc est par conséquent nouveau et peut Stre ajouté à la mémoire. Une entrée en cours ne peut être Identifiée, mais peut être suivie par 40 une adresse qui s'accorde à une entrée quelconque précédemment emmagasinée. 69 11153, 2010529 L'adresse qui précède juste celle qui s'accorde à Np devient la sortie en cours d'un bloc comme représenté dans le cas 2 et le bloc est enregistré avec Np coimne destination. Le programme continuera en répétant ^Np Xp^ , car Xc n'est pas un branchement. 5 La destination d'un bloc peut être une entrée déjà enregistrée corone représenté dans le cas 3. En supposant qu'il n'y a pas de changement du code opération, la mime sortie doit suivre et le bloc ne doit pas nécessairement être enregistré de nouveau à moins que la destination soit différente. Il se peut que dans l'exécution du programme on ne rencontre que le cas 3. 10 Si un branchement conditionnel ou inconditionnel a conduit à une nouvelle entrée à l'intérieur d'un bloc, conme représenté dans le cas 4, ce fait ne sera pas connu immédiatement. Cependant, plus ou moins tôt une adresse s'accordera à l'adresse de sortie Np pour signaler la condition. Le bloc en cours peut être ajouté à la mémoire mais le bloc précédent est coupé par lui. 15 Afin de morceler le bloc coupé découvert dans ce cas, il est nécessaire de déterminer l'adresse ayant un emplacement précédant l'entrée en cours. Cette sortis ne peut être calculée exactement lorsque des instructions de longueur variable sont exécutées mais elle peut se produire de nouveau dans la chaîne d'instructions et être identifiée car son successeur ne s'accorde 20 pas avec l'entrée en question. Pour que ceci se produise, un drapeau est ajouté au bloc coupé, ce qui l'empêche d'être utilisé par l'algorithme de sorte que si le bloc doit être répété, à partir de son entrée originale, la situation se résoudra d'elle même dans le cas 2. Le bloc ayant le drapeau peut comprendre une routine de mise aux condi-25 tions initiales qui n'est jamais répétée et le bloc contiendra les données de temps et d'état qui ne peuvent être distribuées dans ces morcellements. Par conséquent, le bloc muni du drapeau est conservé pour la lecture finale et la présentation des résultats. Des opérations spéciales dans le prograimie telles que des branchements 30 à plusieurs voies, ne posent pas de difficulté pour la réalisation de l'algorithme lorsqu'elles sont basées sur des codes opérations identifiables. Si le programme change un code opération en un branchement comme mentionné dans • le cas 3 précédent, l'algorithme doit être modifié pour prendre en considération certains cas en plus des quatre cas décrits. 35 Algorithme d'ordinogrammes (figure 13) A - Adresse N - Adresse d'entrée X - Adresse de sortie D - Adresse de destination 40 0 - Code opération COPY 69 11153 23 SÔI0529 S - Bit d'état : 1 pour un nouveau bloc F - Bit de drapeau : 1 pour un bloc coupé (cas 43 Champs dans la mémoire /N X D 0 S F S Mémoire associative > s s s s s 5/ ^statistique^ Mémoire supplémentaire 5 On va se référer maintenant à la figure 13 étape A, initialement, une adresse A dans le registre A est transférée au champ d'entrée (N.3 du régis- 3 x tre d'entrée en même temps qu'un 0 dans le champ drapeau (F^3. En supposant qu'il résulte de l'interrogation un accord, l'adresse est alors une adresse qui a été considérée précédemment comme une adresse d'entrée pour la séquence 10 du programme. Ceci correspond au cas 3, de la figure 12. Dans l'étape B, la même adresse A qui est errfiîcgasinée dans le registre A est maintenant acheminée fi par l'intermédiaire du commutateur à la position de l'adresse de sortie X^ dans le registre d'interrogation. Une interrogation est réalisée sur l'entrée (Ng3 et sur la sortie CXs3 ainsi que sur le bit de drapeau (Fg). S'il n'existe 15 pas de condition d'accord, la routine du programme commence maintenant à réaliser une boucle. L'adresse suivante A^ dans le registre de contrôle est transférée au registre A et le code opération est placé dans le champ de code opération (0^3 du registre d'interrogation et le programme revient à l'étape B. Cette boucle laisse l'adresse d'entrée seule et continue à rechercher l'adres-20 se de sortie en transférant les adresses ultérieures au registre d'interrogation jusqu'à ce que l'on trouve une adresse de sortie. Ainsi le programme suit le chemin du cas 3 jusqu'à ce qu'il trouve une adresse de sortie. Lorsque l'on trouve une adresse de sortie dans l'étape B, il se produit une condition d'accord et la boucle est rompue, le programme continuant à l'étape D. L'adres-25 se suivante après l'adresse de sortie est une adresse de destination et elle est transférée à partir du registre de contrôle au registre A au champ de destination du registre d'interrogation (D^3 comme représenté dans l'étape D. Une interrogation est réalisée sur les champs d'entrée, de sortie et de destination du registre. Si un accord se produit, il montre que ce bloc d'ins-30 truction va à la même destination qu'un bloc précédent et les statistiques sont mises à jour dans le mot accordé (étape F3 terminant ainsi la routine. Si dans l'étape D il se produit une condition "pas d'accord", ceci montre que l'adresse ne va pas à la même destination. Ainsi un nouveau chemin a été suivi et un nouveau mot doit être écrit pour ce chemin. Ceci est réalisé dans 35 l'étape E en plaçant un Q dans le bit d'état et le champ de drapeau et en écrivant les statistiques complètes. Le prograrrtne revient à l'étape A. A ce moment l'adresse dans le registre A n'a pas été changée. Cette adresse (qui était l'adresse de destination du bloc précédent3 est maintenant une adresse d'entrée pour l'interrogation en cours réalisée dans .l'étape A. 69 11153 2010529 □n suppose maintenant qu'une condition "pas d'accord" se produit après l'interrogation réalisée par l'étape A. Dans ce cas, le bloc en cours de transposition tombera dans le cas 1, 2 ou 4 de la figure 12. L'étape suivante G consiste à écrire un mot partiel dans la mémoire en utilisant l'adresse 5 corrme entrée quand on sait que l'on doit écrire un nouveau mot une fois que l'on a obtenu les caractéristiques complètes pour le bloc en cours de transposition. Dans l'étape G, un "un" est placé dans le bit d'état pour indiquer qu'un nouveau bloc est en cours de transposition. Dans l'étape H, l'adresse est déplacée au champ de sortie X^ du1 registre d'interrogation st une interro-10 gation est réalisée. S'il se produit une condition "pas d'accord" le programme passe è l'étaps 1 dans laquslls une interrogation est réalisée le code opération étant comparé à une série de codes de branchement OP emmagasiné dans la mémoire associative pour rechercher un branchement possible. Si une condition "pas d'accord" se produit le programme passe à l'étape J et reçoit une nouvelle 15 adresse Afa dans le registre de contrôle qui est transféré au registre A et ensuite au champ d'entrés du registre d'interrogation. S'il se produit une condition "pas d'accord", le prograrrme revient à l'étape H. Dans le cas le plus simple, un accord se produit à l'étape I qui est une situation analogue au cas 1. Ceci signifie qu'un code d'opération de bran-20 chement a été trouvé, ce qui indique qu'une adresse de sortie a été trouvée. Ls programme passe à l'étape n. A ce moment dans le registre d'entrée, est emmagasiné le code entrée, sortie et opération. L'adresse suivante qui se produit dans le registre de contrôle Afa doit être une adresse de destination. Puisqu'un 1 a été écrit dans le champ d'état une interrogation est maintenant 25 réalisée dans l'étape n et le champ d'état est sélectionné pour ce mot. Dans l'étape suivante N, on écrit le mot sélectionné par le champ des bits d'état pour terminer les statistiques et ainsi terminer la boucle du programme pour ce bloc. On trouve une situation correspondante au cas 2 lorsque pendant la boucla 30 des étapes H - I - J, un accord se produit dans l'étape J. Ceci signifie que l'on a trouvé une adresse qui correspond à l'adresse d'entrée emmagasinée dans la mémoire associative. Ceci signifie que le dispositif de contrôle a tracé une chaine d'instructions dont une des adresses conduit dans un bloc qui a été tracé précédemment. C'est-à-dire sur la figur= 12, cas 2, X est 5 35 le même que Np. Le programme de contrôle termine maintenant cette chaine d'instructions comme un bloc. Dans l'étape H, l'instruction immédiatement précédente a été emmagasinée dans le champ de sortie de sorte que la position de sortie du registre d'entrée est l'adresse qui précède immédiatement celle où s'est produit un accord dans la position d'entrée dans l'étape J. Ainsi, 40 la dernière adresse doit être emmagasinée danp le champ de destination. Ceci ^ 11153 2010529 est réalisé en interrogeant le bit d'état dans l'étape K pour obtenir le mot qui a été écrit dans l'étape G. Finalement dans l'étape N," un 0 est écrit dans la position d'état ainsi que dans les adresses es sortie st dssfeîna-ticn. 5 Le dernier cas que l'on peut considérer est le cas 4 dans lequel l'adres se d'entrée se produit quelque part au milieu du bloc. Nais naturellement ce cas n'est pas reconnu immédiatement. Dans l'étape A, une interrogation est réalisée avec l'adresse au champ d'entrée. S'il ne se produit pas de condition d'accord, cette adresse n'a jamais été rencontrée auparavant, et le dis-10 positif de contrfile se branche à l'étape G. Un mot nouveau est écrit, plaçant cette adresse dans le champ d'entrée ainsi qu'un bit d'état pour référencer le nouveau mot. Le programme passe à l'étape H et la mime adresse A emmaga- S ainés dans le registre A est utilisée pour interroger le champ de sortie ds la mémoire associative. S'il se produit une condition "pas d'accord", le pro-15 gramme continue dans la boucle HïJ. En supposant qu'un accord se produise dans l'étape H pendant une de ces boucles, il se produit une situation correspondant au cas 4. Ainsi, le bloc qui a été tracé est un dérivé d'un bloc quelconque précédemment emmagasiné puisqu'on a un accord pour l'adresse de sortie mais pas d'accord pour l'adresse d'entrée. Un "un" est placé dans le champ 20 de drapeau dans l'étape L pour montrer que le bloc dérivé a été intercepté et qu'il ne peut maintenant subir d'autres interrogations. L'adresse suivante A^ provenant du registre de contrôle est placée dans le champ de destination du registre d'interrogation dans l'étape N. Une interrogation est réalisée sur le bit d'état pour trouver le mot sur lequel on travaille et, dans l'étape 25 N, on écrit sur le mot les adresses de sortie et de destination pour terminer de ce fait les statistiques. Bien que l'on ait décrit dans ce qui précède et représenté sur le dessin, 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 30 y apporter toutes modifications de forme ou de détail qu'il juge utiles, sans pour autant sortir du cadre de ladite invention. 69 11153 26 2010529 REVENDICATIONS 1.- Dispsoitif de contrôle d'un systims logique, destiné à accumuler des sta-'Sistïlqyss ^slatives au fonctionnement da ce système caractérisé en e® qu'il comprend un comparateur pour retenir Isa informations décrivant l'état ds fcne- 5 tionnsmsnt du système et pour comparer les états présents aux états précédents qui y sont retenus, uns mémoire pour collecter des statistiques relatives à ces états, des connexions reliant les comparateur et la mémoire pour fournir l'adressage d'emplacements en mémoire selon les résultats obtenus des comparaisons logiques aoearipliss par le comparateur, un commutateur pour assurer pour le trans-10 fert des informations des chemins qui peuvent être connectés sélectivement, et des moyens de contrôle permettant le contrôle du commutateur afin d'assurer2a sélection de chemins pour chaque fonction de contrôle spécifique. 2.- Dispositif de contrôle selon la revendication 1, caractérisé en ce que des circuits sont prévus qui répondent aux moyens de contrôle afin de modifier 15 les statistiques emmagasinées dans la mémoire. 3.- Dispositif de contrôle selon les revendications 1 ou 2 caractérisé en ce que le comparateur est une mémoire associative qui retient les informations décrivant l'état de fonctionnement du système, cette mémoire associative étant pourvue de registres d'entrée, de sortie st de masquage, le registre d'entrée 20 de cette mémoire associative et le registre d'entrée de la mémoire collectant las statistiques étant reliées par le commutateur qui assure le cheminement approprié des informations. 4.- Dispositif de contrôle selon la revendication 2, caractérisé en ce que les organes de modification des statistiques emmagasinées dans la mémoire sont 25 constitués par un additionneur et une horloge, de telle façon que sous le contrôle des moyens de contrôle un mot emmagasiné dans la mémoire en est extrait et transféré à l'additionneur et incrémenté par la dite horloge puis renvoyé vers la mémoire à travers les chemins de données. fi.-- Dispositif-de contrôle d'un calculateur, caractérisé en ce qu'il eem-30 prend des moyens d'enregistrerait pour enregistrer les états contrôlés du calculateur, une mémoire associative possédant un registre d'entrée, un registre de masquage pour masquer n'importe quelle portion du contenu du registre d'entrée, et un registre de sortie, une mémoire supplémentaire possédant un registre d'entrée et un de sortie, un additionneur, un commutateur d'sntrée 35 pour commuter de façon sélective la sortie des moyens d'enregistrement à 69 1 1153 27 2010529 l'entrée dudit additionneur d'une part et la sortie de cet additionneur au registre d'entrée de la mémoire associative au registre d'entrée de la mémoire supplémentaire d'autre part, un cornnutateur pour connecter sélectivement la sortie des moyens d'enregistrement à l'entrée de la mémoire associative et à 5 l'entrée de la mémoire supplémentaire, des moyens logiques de mots reliant la mémoire associative à la mémoire supplémentaire comprenant des moyens d'enregistrement ds l'accord ou de l'absence d'accord des mots emmagasinés dans la mémoire associative avec des mots d'interrogation de cette mémoire associative, interrogation qui s'effectue au moyen des registres d'entrée st de masquage 10 d'une part et grâce au moyen logique de mots en vus de la sélection de mots emmagasinés dans la mémoire supplémentaire d'autre part, un commutateur de sortie pour connecter les sorties desdits registres de la mémoire associative et le registre de sortie de la mémoire supplémentaire aux moyens d'enregistrement, une horloge connectée à l'entrée desdits moyens d'enregistrement, un 15 organe de contrôle pour contrôler le cheminement des informations en fermant et en ouvrant de façon sélective les organes de commutation dudit commutateur, du commutateur de sortie et du commutateur d'entrée, de telle façon que si lors d'une Interrogation un mot emmagasiné dans la mémoire associative s'accorde avec un mot dans le registre d'entrée, cette mémoire associative excite un 20 indicateur d'accord dans la logique de mots qui choisit un mot associé dans la mémoire supplémentaire, et un champ de comptage dans le mot sélecté emmagasiné dans la mémoire supplémentaire en est extrait et placé dans l'additionneur et incrémenté par l'horloge puis renvoyé dans la mémoire supplémentaire. 25 C