Brevet FR2606566A1 — publié le 19880513

l 2606566 Titre: PROCEDE D'INITIALISATION POUR UN CONTROLEUR DE CANAL. La présente invention se rapporte à un procédé d'initialisation pour un contrôleur de canal et, de façon plus spécifique, à un procédé d'initialisation pour un contrôleur de canal dans lequel on écrit dans la mémoire locale du contrôleur de canal lui-même, lors l'initialisation, les adresses, utilisées par le contrôleur de canal, des différentes zones de la mémoire principale qui contiennent les données de commande. Etant donné qu'un contrôleur de canal travaille en utilisant plusieurs zones de la mémoire principale qui contiennent des données de commande, il faut écrire dans la mémoire locale dudit contrôleur de canal l'adresse de chacune des zones. La technique d'initia- lisation de l'art antérieur pour satisfaire à cette condition se trouve dans le brevet canadien No. 1 081 855 dans lequel on décrit le procédé d'initialisation du module de microprogrammation du dispositif de trai- tement des données. Par ailleurs, le procédé de l'art antérieur pour la génération de l'adresse est décrit dans le brevet des Etats-Unis No. 3 839 706, dans lequel on décrit le moyen de traduire l'adresse de commande virtuelle d'un programme de canal en une adresse en mémoire réelle pour un ordinateur employant une mémoire virtuelle et/ou un système de transfert des pages de la mémoire virtuelle à la mémoire réelle. Il semble que l'on peut satisfaire la condition ci-dessus en combinant les procédés, mentionnés ci- dessus, d'initialisation et de génération d'adresse. Toutefois, du fait des caractéristiques fondamentales d'une mémoire virtuelle et/ou d'un système de transfert des pages de la mémoire virtuelle à la mémoire réelle, la combinaison rend complexe la traduction de l'adresse, avec le résultat que cela allonge le temps nécessaire pour l'initialisation. Il existe également un autre inconvénient en ce sens que le nombre de pas du micro- programme, ainsi que le matériel informatique néces- saire, s'accroissent. D'un autre côté, du fait que la capacité de mémoire nécessaire pour la zone des données de commande est généralement faible, il est à peine nécessaire d'établir l'adresse au moyen d'une mémoire virtuelle et/ou d'un système de transfert des pages de la mémoire virtuelle à la mémoire réelle. Un but de la présente invention est par conséquent de proposer, pour un contrôleur de canal, un procédé d'initialisation qui soit exempt des inconvénients mentionnés ci-dessus. Selon un aspect de l'invention, on propose un procédé pour initialiser un groupe de contrôleurs de canal dans un système de traitement de l'information dans lequel on écrit, dans les mémoires locales de chacun desdits contrôleurs de canal, les pointeurs d'adresse d'une pluralité de zones de données de com- mande, chaque zone étant associée à l'un desdits contrôleurs de canal. Le procédé de l'invention comporte: une étape pour mémoriser à l'avance dans la mémoire principale dudit système de traitement de l'information, les données d'initialisation composées des adresses de base des zones de données de commande, des dimensions des champs de données desdites zones de données de commande, des écarts entre les champs de données desdites zones de données de commande et lesdites adresses de base, et des données indiquant la fin de l'initialisation; une étape pour que chacun desdits contrôleurs de canal lise séquentiellement lesdites données 3 2606566 d'initialisation qui se trouvent dans ladite mémoire principale; une étape consistant en une opération arithmétique pour calculer les pointeurs d'adresse assignés audit contrôleur de canal, en accord avec la procédure prédéterminée, à partir desdites données d'initiali- sation lues au cours de ladite étape et à partir du numérodepériphérique dudit contrôleur de canal; une étape pour écrire, dans ladite mémoire locale dudit contrôleur de canal, les pointeurs d'adresse assignés audit contrôleur de canal sur la base du résultat de ladite opération arithmétique; et une étape pour terminer l'initialisation dudit contrôleur de canal lorsque l'on lit lesdites données indiquant la fin de l'initialisation dans ladite étape de lecture séquentielle. Les caractéristiques et avantages de la présente invention apparaitront à partir de la description détaillée qui suit d'une réalisation préférée de l'invention telle qu'illustrée sur les dessins joints sur lesquels: - la figure 1 représente un exemple d'un système de traitement de l'information pour concrétiser la présente invention; - la figure 2 représente le contenu de la mémoire principale et de la mémoire locale dans la figure 1; - la figure 3 représente le format des données d'initialisation utilisées pour l'initiali'sation du contrôleur de canal; - la figure 4 est un ordinogramme de l'initiali- sation du contrôleur de canal conforme à la présente invention; - la figure 5 représente le détail du processus d'initialisation donné dans un cadre 92 de la figure 4; et 4 J606566 - la figure 6 représente la procédure de génération d'adresse pour les zones de données de commande assignées au contrôleur de canal. Sur les figures 1 à 6, les mêmes chiffres de réfé- rence désignent les mêmes éléments de structure, respec- tivement. On va maintenant décrire une réalisation de la présente invention en se référant aux dessins joints. En se reportant à la figure 1, une réalisation de la présente invention comporte une mémoire principale et un contrôleur de canal 20 relié à la mémoire principale 10. Le contrôleur de canal 20 comprend un registre 21 pour mémoriser les données d'initialisation de deux mots lus dans la mémoire principale 10 par l'intermédiaire de la ligne 2; un registre de numéro de périphérique 27 qui contient le numéro de périphé- rique du contrôleur de canal 20; un circuit arithmé- tique 22 pour calculer les pointeurs d'adresse des zones de données de commande assignées au contrôleur de canal 20 dans la mémoire principale 10, en recourant à l'opération arithmétique sur les données provenant du registre 21 et sur le numéro de périphérique pro- venant du registre de numéro de périphérique 27; un registre 23 pour contenir le résultat de l'opération du circuit arithmétique 22; une mémoire locale 24 pour mémoriser les pointeurs d'adresse provenant du registre 23; un registre d'adresses 29 pour déterminer l'adresse, en mémoire, des pointeurs d'adresses pour désigner la mémoire locale 24; un circuit 25 pour vérifier si toutes les données sont des "1" pour détecter l'instant o toutes les données sont des "1", ce qui indique la fin de l'initialisation parmi les données mémorisées dans le registre 21; une bascule électronique (F/F) 26 positionnée en réponse au signal de sortie du cir- cuit 25 vérifiant que toutes les données sont des "1"; 2606566 un registre d'adresses 28 pour mémoriser l'adresse des données d'initialisation qui sont dans la mémoire principale 10, la valeur initiale de l'adresse étant déterminée par les données obtenues par l'intermédiaire de la ligne 1 et actualisée par accroissement d'une valeur de deux pour chaque répétition; une mémoire de commande 31 pour mémoriser le microprogramme prévu pour commander l'initialisation du contrôleur de canal ; un registre d'adresses 30, initialisé en réponse au signal de départ fourni par l'intermédiaire de la ligne 3, pour déterminer l'adresse de lecture dans la mémoire de commande 31; et un registre d'instructions 32 pour mémoriser le microprogramme lu dans la mémoire de commande 31. En se reportant maintenant à la figure 2, la mé- moire principale 10 contient cinq zones de commande, dont deux sont les zones d'enregistrement, une zone d'enregistrement d'erreur d'accès en mémoire (dénommée ci-dessous zone d'enregistrement MCK) et une zone d'enregistrement d'erreur de canal (dénommée ci-dessous zone d'enregistrement CCK), et dont les trois autres sont une zone de valeur de temporisation, une zone de communication et une zone d'interruption, respecti- vement. Les zones d'enregistrement MCK et CCK consti- tuent une zone d'enregistrement de dimension (dO). La zone d'enregistrement du contrôleur de canal 20 commence à une adresse de base (AO), tandis que celle du second contrôleur de canal 20' commence à (AO+dO). De la même façon, la zone d'enregistrement du contrôleur de canal suivant (non représenté) se détermine à l'aide du déplacement (do), à partir de l'adresse de départ du contrôleur de canal précédent. Les zones d'enregis- trement MCK et CCK sont séparées par l'écart (eO), en partant de la zone de départ de la zone d'enre- gistrement. La zone de valeur de temporisation, de dimension (dl) commence à une adresse (AO+el) voisine des zones d'enregistrement pour le premier contrôleur de canal 20. La zone de communication, de dimension (d2), pour le premier contrôleur de canal 20 commence à une adresse de base (A2) et celles des autres contrôleurs viennent à la suite. Voisine de la zone de communication, la zone d'interruption est assignée à une adresse (A2+e2), qui est commune à tous les contrôleurs de canal. D'un autre côté, les données d'initialisation, dont le format est représenté sur la figure 3, sont fournies à l'avance dans la zone de commande d'initia- lisation de la mémoire principale 10, qui est utilisée pour écrire, dans la mémoire locale du premier contrô- leur de canal 20 ou du second contrôleur de canal 20', les pointeurs d'adresse correspondant à la pluralité ci-dessus de zones de commande. En se reportant à la figure 3, les données d'ini- tialisation sont composées de deux mots. Le premier mot est le champ contenant l'adresse de base (A) de la mémoire principale oû commence la zone de commande. Le champ contenant la dimension (d) dans le second mot indique la dimension de la zone de commande. Le champ contenant l'écart (e) dans le second mot donne la distance entre l'adresse de départ de la zone de commande et l'adresse de base. En se reportant maintenant à la figure 4, qui représente brièvement le processus d'initialisation du contrôleur de canal conforme à la présente invention, le processus d'initialisation déclenche la procédure représentée dans un cadre 90. De façon plus précise, un processeur de service (SVP), non représenté, range dans la zone de commande d'initialisation les données de commande d'initialisation, en commençant à une adresse (x) de la mémoire principale 10. Puis, le processeur de service SVP exécute la procédure indiquée dans un cadre 91 de la figure 4 et selon laquelle le processeur SVP envoie sur la ligne 1 l'adresse de base (x) de la zone de la mémoire principale 10 qui est la zone de commande d'initialisation et, par l'intermé- diaire de la ligne 3, donne le signal de départ au registre d'adresses 30 du contrôleur de canal 20. Ensuite, en réponse au signal de départ, le contrô- leur de canal déclenche la procédure indiquée dans un cadre 92 de la figure 4. On va expliquer ci-dessous le détail de la procédure du cadre 92 en se reportant aux figures 5 et 6 qui représentent le détail du processus d'initialisation et de la procédure de géné- ration d'adresse pour la zone de commande du contrôleur de canal, respectivement. En réponse au signal de départ, le contrôleur de canal 20 positionne à zéro la valeur du registre d'adresses 3I; lit à l'adresse pointée par le contenu du registre d'adresses 30, le microprogramme prévu pour traiter la procédure dans un cadre 101 de la figure 5; le range dans le registre d'instruction 32; écrit l'adresse (x) dans le registre d'adresses 28; efface le registre d'adresses 29; et repositionne la bascule F/F 26. Ensuite le contrôleur de canal 20 actualise le registre d'adresses 30; lit le microprogramme prévu pour traiter la procédure indiquée dans un cadre 102 de la figure 5; le range dans le registre de commande 32; lit deux mots, rangés à l'adresse (x) dans la mémoire principale 10, qui sont l'adresse de base (AO) de la zone d'enregistrement MCK et (dO, 0); et place le premier mot (AO) dans le champ A du registre 21, place (dO) et (0) dans les champs d et e du registre 21, respectivement. Puis, le contrôleur de canal 20 actualise le registre d'adresses 30; lit le micropro- gramme prévu pour traiter la procédure indiquée dans 8 2606566 un cadre 103 de la figure 5; le range dans le registre d'instruction 32; puis, envoie, dans le circuit qui doit vérifier si toutes les données sont des "1", les données (AO) qui sont dans le champ A du registre 21, pour vérifier si ce sont ou non les données indiquant la fin de l'initialisation. Puisque ce ne sont pas des données qui sont toutes des "1", le signal de sortie du circuit 25 qui doit vérifier si toutes les données sont des "1" ne positionne pas la bascule F/F 26. Pour poursuivre, le contrôleur de canal 20 actua- lise le registre d'adresses 30; lit le microprogramme prévu pour traiter la procédure indiquée dans un cadre 104 de la figure 5; le range dans le registre d'instruc- tion 32; et vérifie si le signal de sortie de la bascule F/F 26 est ou non "1". Puisque c'est zéro, le contrôleur de canal 20 actualise le registre 30; lit le micropro- gramme prévu pour traiter la procédure indiquée dans un cadre 105 de la figure 5; le range dans le registre de commande 32; et détermine l'adresse de la zone d'enregistrement MCK en exécutant l'opération indiquée sur le figure 6. En se reportant à la figure 6, le contrôleur de canal 20 envoie dans le circuit arithmétique 22, pour les multiplier l'un par l'autre, les données concernant la dimension (dO) qui sont dans le champ du registre 21 et le numéro de périphérique qui est rangé dans le registre 27 de numéro de périphérique. Le signal de sortie du circuit 22 est la dimension modifiée, que le système écrit alors dans le registre 23. Par conséquent, la dimension modifiée pour le premier contrôleur de canal 20 est zéro, tandis qu'elle est (dO) pour le second contrôleur 20'. Puis, le contrôleur de canal 20 envoie dans le circuit arithmétique 22, pour les additionner l'un avec l'autre, l'adresse de base (AO) du champ A du registre 21 et l'adresse 9 2606566 modifiée qui se trouve dans le registre 23. Le signal de sortie du circuit 22 constitue l'adresse de base modifiée, que le système écrit alors dans le registre 23. L'adresse de base modifiée pour le premier contrô- leur de canal 20 est (AO), tandis qu'elle est (AO+dO) pour le second contrôleur 20'. Pour poursuivre, le contrôleur de canal 20 envoie dans le circuit arithmé- tique 22, pour les additionner l'une avec l'autre, la donnée concernant l'écart (0) et l'adresse de base modifiée qui se trouve dans le registre 23. Le signal de sortie du circuit 22 est le pointeur d'adresse correspondant à la zone d'enregistrement MCK, que le système écrit alors dans le registre 23. Par conséquent, ce pointeur d'adresse est (AO) pour le premier contr8- leur de canal 20 et (AO+dO) pour le second contrôleur de canal 20'. Ensuite, le contrôleur de canal 20 actualise le registre d'adresses 30; lit le programme prévu pour traiter la procédure indiquée dans un cadre 106 de la figure 5; le range dans le registre d'instruction 32; puis écrit, à l'emplacement de la mémoire locale pointé par le registre d'adresses 29, le pointeur d'adresse correspondant à la zone d'enregistrement MCK. Ensuite, le contrôleur de canal 20 actualise le registre d'adresses 30; lit le microprogramme prévu pour traiter la procédure indiquée dans un cadre 107 de la figure 5; le range dans le registre d'instruction 32; puis actualise le registre d'adresses 29; ensuite il actualise le registre d'adresse 30; lit le micro- programme prévu pour traiter la procédure indiquée dans un cadre 108 de la figure 5; le range dans le registre d'instruction 32; incrémente le registre d'adresses 28 de deux adresses de mot. Puis positionne le registre d'adresses 30 à l'adresse du microprogramme prévu pour traiter la procédure indiquée dans le cadre 102 de la figure 5. A nouveau, le contrôleur de canal 20 lit le micro- programme correspondant au cadre 102 et le range dans le registre d'instruction 32, qui a également lu dans la mémoire principale 10, et rangé dans le registre 21, les données d'initialisation pour la zone CCK, c'est-à-dire (AO) et (dO, eO). De même, après exécution des procédures des cadres 103 à 108, le pointeur d'adresse correspondant à la zone d'enregistrement CCK est rangé dans la mémoire locale 24 et le registre d'adresse 30 est à nouveau actualisé à l'adresse du microprogramme correspondant au cadre 102. La dimension modifiée, calculée comme indiqué sur la figure 6, est cette fois (0) pour le premier contrôleur de canal et (dO) pour le second contrôleur de canal 20', tandis que l'adresse de base modifiée est (AO > pour le premier contrôleur de canal 20 et (AO+dO) pour le second contrôleur de canal 20'. Le pointeur d'adresse pour la zone d'enregistrement CCK est (AO+eO) pour le premier contrôleur de canal 20 et (AO+dO+eO) pour le second contrôleur de canal 20'. De la même façon, le système écrit les pointeurs d'adresse pour la zone de valeur de temporisation, pour la zone de communication et pour la zone d'inter- ruption, dans la mémoire locale 24 en répétant la procédure des cadres 102 à 108. Du fait que les données d'intialisation pour la zone de la valeur de tempori- sation sont (AO) et (dl, el), la dimension modifiée est (0) pour le premier contrôleur de canal 20 et (dl) pour le second contrôleur de canal 20'. L'adresse de base modifiée est (AO) pour le premier contrôleur de canal 20 et (AO+dl) pour le second contrôleur de canal '. Par conséquent, le pointeur d'adresse correspondant à la zone de la valeur de temporisation est (AO+el) pour le premier contrôleur de canal 20 et (AO+ el+dl) pour le second contrôleur de canal 20'. Du fait que les données d'initialisation pour la zone de communi- cation sont (A2) et (d2, 0), la dimension modifiée est (0) pour le premier contrôleur de canal 20 et (d2) pour le second contrôleur de canal 20', avec le résultat que l'adresse de base modifiée est (A2) pour le premier contrôleur de canal 20 et (A2+d2) pour le second contrô- leur de canal 20'. Par conséquent, le pointeur d'adresse correspondant à la zone de communication est (A2) pour le premier contrôleur de canal 20 et (A2+d2) pour le second contrôleur de canal 20'. Les données d'initia- lisation pour la zone d'interruption sont (A2) et (0, e2). Du fait que les données de dimension sont (0), la dimension modifiée est donc (0). Par conséquent, l'adresse de base modifiée est (A2), à la fois pour le premier et pour le second contrôleurs de canal 20 et 20', avec le résultat que le pointeur d'adresse correspondant à la zone d'interruption est (A2+e2), indépendamment du numéro du périphérique. A nouveau, lors de l'exécution de la procédure du cadre 102, la donnée contenant les deux mots, dont le premier mot ne contient que des "1", est lue en mémoire principale 10. Après achèvement de la procédure du cadre 103, le signal de sortie du circuit 25, qui doit vérifier si toutes les données sont des "1", posi- tionne la bascule 26 pour détecter la condition de terminaison dans le cadre 104 de la figure 5. Puis le microprogramme prévu pour traiter la procédure indiquée dans un cadre 109 de la figure 5 est lu et rangé dans le registre d'instruction 32, de sorte que l'adresse de tête du microprogramme prévu pour commander l'opération normale est placée dans le registre d'adresse 30. Ceci signifie que le processus d'initia- lisation se termine. 12 2606566 Comme décrit ci-dessus, la présente invention présente les avantages que les données d'initialisation, mémorisées à l'avance en mémoire principale, sont communes à chaque contrôleur de canal, et que par conséquent, il faut peu de matériel informatique. Le pointeur d'adresse correspondant à la zone particulière assignée à un contrôleur de canal ne peut se déterminer qu'à partir des données d'initialisation lues dans la mémoire principale commune à tous les contrôleurs et à partir du numéro de périphérique du contrôleur de canal. De plus, il n'est pas nécessaire que le contrôleur de canal connaisse à l'avance la valeur modifiée correspondant à la zone de commande, ni l'ordre de positionnement des pointeurs d'adresse. De plus, puisque le processus d'initialisation se termine lorsque l'on rencontre la distribution de bits prédéterminée, il n'est pas nécessaire de connaitre à l'avance le numéro des pointeurs d'adresses à positionner, avec le résultat que le processus d'initialisation est très simple. La présente invention présente les autres avantages que l'on peut modifier les zones assignées à un contrô- leur de canal lors du processus d'initialisation de ce contrôleur de canal, sans aucun mécanisme supplé- mentaire. 13 2606566 REVENDICATION 1. Procédé d'initialisation d'un groupe de contrô- leurs de canal (20) dans un système de traitement de l'information, consistant à écrire dans les mémoires locales (24, 24') de chacun desdits contrôleurs de canal les pointeurs d'adresse correspondant à la plura- lité de zones de données de commande assignées à l'un desdits contrôleurs de canal, caractérisé en ce qu'il comporte: une étape pour mémoriser à l'avance, dans la mémoire principale (10) dudit système de traitement de l'information, les données d'initialisation composées des adresses de base (A) des zones de données de commande, des dimensions (d) des champs de données desdites zones de données de commande, des écarts (e) entre les champs de données desdites zones de données de commande et lesdites adresses de base, et des données indiquant la fin de l'initialisation; une étape pour que chacun desdits contrôleurs de canal (20) lise séquentiellement lesdites données d'initialisation qui se trouvent dans ladite mémoire principale; une étape consistant en une opération arithmétique pour calculer les pointeurs d'adresse assignés audit contrôleur de canal (20), en accord avec la procédure prédéterminée, à partir desdites données d'initiali- sation (A, d, e) lues au cours de ladite étape et à partir du numéro de périphérique dudit contrôleur de canal; une étape pour écrire, dans ladite mémoire locale (24) dudit contrôleur de canal (20), les pointeurs d'adresse assignés audit contrôleur de canal sur la base du résultat de ladite opération arithmétique; et une étape pour terminer l'initialisation dudit contrôleur de canal lorsque l'on lit lesdites données indiquant la fin de l'initialisation dans ladite étape de lecture séquentielle.