Brevet FR2586490A1 — publié le 19870227

1. La présente invention concerne un unité de trai- tement d'instruction de branchement capable d'exécuter des instructions de branchement commandé par comptage pour la commande des boucles dans un programme. Dans un programme de calculs scientifique et technique, tel que les boucles DO, dans un programme FORTRAN, le même traitement est souvent répété un certain nombre, limité, de fois. Dans ce cas, on utilise fréquemment, en tant qu'instruction de branchement, des instructions de branchement commandé par comptage (que l'on désignera, ci- dessous par le terme de "instructions BCT"). Avec une instruction BCT, le contenu d'un registre désigné est lu, on lui soustrait la valeur "1", puis on le stocke à nouveau dans le registre initial. Si le résultat de la soustraction est "0", on juge que le branchement n'a pas réussi, alors que si ce résultat est différent de "0", on juge que le branchementa réussi. Une telle instructions BCT est placée à la fin d'un groupe d'instructions devant être envoyées dans des boucles et l'emplacement du branchement est indiqué par l'adresse de l'instruction qui se trouve tout en haut du groupe. Après chargement du nombre de répétitions des boucles dans un registre spécifique, les instructions du groupe sont successivement exécutées à partir de l'instruction de faite et ce groupe d'instructions est répété un nombre de fois détermi- né. Conformément à l'art antérieur, deux opérations 2. de traitement doivent être effectuées en série pour l'exé- cution de l'instruction BCT; à savoir: (1) l'opération de soustraction de la valeur "ln d'un registre spécifique, (2) l'opération consistant à discerner si le branchement est, ou n'est pas,effectué, en se fondant sur le résultat de la soustraction. Du fait qu'une unité de traitement d'instruc- tion de branchement de type usuel ne peut pas exécuteren parallèle les deux opérations de traitement susmentionnées, chaque instruction BCT prend, de manière indésirable, un temps plus long pour son exécution que les autres instruc- tions de branchement qui ne nécessitent pas l'opération de soustraction (1) mentionnée ci-dessus. En vu de surmonter cette difficulté, une techni- que a été proposée par la société Itachi, Ltd. dans la deman- de de brevet japonais publiéeNo. 20385/1984. Conformément à la technique ainsi proposée, on utilise un registre d'affi- chage 8 qui correspond à un registre non spécialisé (regis- tre à buts multiples) 3 qui stocke le nombre de répétition des boucles en vu d'afficher si le contenu du registre 3 est, ou n'est pas,"1". Le registre d'affichage 8 est réglé en réponse à l'écriture de la valeur "1" dans le registre non spécialisé 3. Avant l'exécution d'une instruction BCT, le contenu du registre d'affichage 8 est lu et on discerne, en fonction du contenu de la lecture, si le branchement est, ou n'est pas, réussi. Cette technique permet de discerner immédiate- ment si le branchement doit, ou ne doit pas être effectué, selon le contenu du registre d'affichage 8 au commencement de l'exécution de chaque instruction BCT et, en conséquence, elle peut améliorer la vitesse d'exécution. Toutefois, si l'on utilise pour le traitement d'une instruction BCT, une pluralité de registres non spécialisés (désignés cidessous par les initiales "GP>) pour stocker le nombre de répétition 3. des boucles, il faut utiliser un nombre correspondant de registresd'affichage pour détecter le registre GP qui doit être utilisé pour l'instruction BCT, ce qui augmente de manière indésirable le matériel nécessaire. En conséquence, l'invention a pour objet de fournir une unité de traitement d'instruction de branche- ment capable d'exécuter des instructions BCT à vitesse plus élevée, en vu de pallier aux inconvénients susmentionnés de l'art antérieur. A cet effet, l'unité de traitement d'instruc- tion de branchement selon l'invention, qui permet l'exécu- tion d'instruction BCT pour la commande de boucles d'un programme, sous commande de pipeline, est caractérisée en ce qu'elle comprend un moyen de mémorisation pour stocker le nombre de répétition de boucles de chaque instruction BCT, un premier moyen de stockage pour stocker le signal de sortie du moyen de mémorisation, un moyen de détection pour détecter si le signal de sortie du moyen de mémorisation a, ou n'a pas, la valeur "1" alors que le signal de sortie du moyen de mémorisation est stocké dans le premier moyen de stockage, un second moyen de stockage pour stocker le signal de sortie du premier moyen de stockage, et un moyen de discernement de branchement qui discerne si chaque instruction de branchement est, ou n'est pas, donnée avec succès en réponse à la détection de la valeur "1" par le moyen de détection, alors que le signal de sortie du premier moyen de stockage est en cours de stockage dans le second moyen de stockage. L'invention sera mieux comprise grâce à la description détaillée qui va suivre, d'exemples non limita- tifs de la mise en oeuvre de l'invention, en se référant au dessin annexé, dans lequel: La figure 1 est un schéma bloc d'une forme d'exécution de l'unité de traitement selon l'invention; La figure 2 est un schéma bloc d'une unité d'accès de mémoire 2, représentées la figure 1; 4. La figure 3 est un schéma explicatif pour la description de chaque étape de commande de pipeline; La figure 4 est un schéma bloc d'une unité de commande avancée 3, représentée à la figure 1; La figure 5 est un schéma de circuit d'un circuit de détection 13 et d'un circuit de discernement de branchement 15, représenté à la figure 1; La figure 6 est un diagramme chronologique permettant d'illustrer un mode opératoire d'un dispositif de commande dans la forme d'exécution représentée; et La figure 7 est un diagramme chronologique per- mettant d'illustrer un mode opératoire d'un dispositif de traitement de données faisant partie de cette forme d'exécution. Des chiffres de référence identiques désignent les mêmes éléments de structure. On va maintenant décrire plus en détail une forme d'exécution de l'unité de traitement selon l'invention, en se référant au dessin. En se référant à la figure 1, on voit que la forme d'exécution de l'unité de traitement selon l'invention comprend une unité de mémoire principale (désignée,ci- dessous, par le terme de "MMU") 1 qui stocke les programmes ou les données, une unité d'accès de mémoire 2, permettant d'accéder à la MMU 1, une unité de commande avancée 3 pour le décodage d'une instruction provenant de la MMU 1, par l'intermédiaire de l'unité d'accès de mémoire 2 et dirigeant l'unité 2 pour l'exécution d'un opérande tel qu'un résultat de lecture, un tampon d'opérande 4 pour stocker un opérande qui a été lu à partir de la MMU 1, en réponse à une instruc- tion de lecture d'opérande provenant de l'unité 2, un groupe de registres non spécialisés (GP) 5 qui comprend un fichier à registres contenant 16 registres GP et qui stocke les opérandes d'instruction et les résultats de calcul, un sélecteur 6 pour sélectionner un opérande ou résultat de 5. calcul à partir soit du tampon d'opérande 4 soit du groupe de registres GP, un sélecteur 7 pour sélectionner un opérande, un résultat de calculs ou une constante à partir du tampon d'opérande 4, du groupe de registres GP 5, ou d'un générateur de constante 8, un registre d'opérande 9 pour stocker le résultat de la sélection effectuée par le sélecteur 6, un registre d'opérande 10 pour stocker le ré- sultat de la sélection effectuée par le sélecteur 7. La forme d'exécution de l'unité de traitement d'instruction de branchement comprend en outre une unité arithmétique et logique (ALU) 11 permettant l'exécution d'un calcul arithmé- tique comme spécifié, en se fondant sur les valeurs desdits registres d'opérande 9 et 10, un registre de résultat 12 pour stocker le résultat de calcul de l'unité ALU 11,un circuit de détection 13 pour détecter si le contenu de l'un des registres GP sélectionné dans le groupe de registres GP correspond ou ne correspond pas au niveau logique "1" ("00.... 01", en chiffres binaires), un basculeur 14 posi- tionné en réponse à la détection du niveau logique "1" par le circuit de détection 13, un registre 22 pour stocker l'information de commande pour instructions de branchement envoyée à partir de l'unité de commande avancée 3, un cir- cuit de discernement de branchement 15, réagissant à un genre d'instructions données par le registre 22, par l'intermédiaire d'une ligne de signal 107 et d'un signal de rythme de branchement donné à partir de celui-ci par l'intermédiaire d'une ligne de signal 108, pour discerner si le branchement doit, ou ne doit pas, être effectué, lorsque la valeur du basculeur 14 correspond au niveau logique "1" ainsi que pour discerner si le branchement doit, ou ne doit pas, être effectué lorsque cette valeur correspond au niveau logique "0" et lorsque le type de branchement donné indique une instruction BCT, un basculeur 16 positionné en réponse au discernement effectué par le circuit de discernement de branchement 15, des registres 17 et 18 pour stocker les 6. adresses de destination de branchement des instructions de branchement envoyées lorsque l'unité de commande avancée prévoit la réussite d'un branchement, un registre d'adresses d'instructions 20 pour la rétention de l'adresse d'instruc- tion en cours d'exécution, et un additionneur 21 pour ajou- ter la valeur "1" au contenu du registre d'adresses d'ins- tructions 20, et un sélecteur 19, agissant en réponse au signal de sortie du basculeur 16 pour sélectionner des don- nées à partir du contenu du registre 18 et à partir de l'additionneur 21. On va maintenant décrire le fonctionnement de l'unité de traitement d'instruction de branchement selon l'invention. Une instruction BCT est lue selon les étapes suivantes. En se référant à la figure 2, une adresse virtuel- le pour la lecture de l'instruction BCT à partir de l'unité de commande avancée 3 représentée à la figure 1, est stockée dans un registre d'adresses virtuelles 200. Les bits de poids fort de l'adresse stockée dans le registre 200 sont, si nécessaire, traités par un circuit de traitement de mise en page 201 et, en même temps, l'adresse virtuelle est con- vertie en une adresse réelle par l'alignement d'adresses TLB (translation lookaside buffer = tampon d'observation latérale de: traduction) 202 et l'alignement de données TLB 203. L'adresse réelle convertie est stockée dans la zone de bit de poids fort d'un registre de pré-adresses 211 par l'intermédiaire des sélecteurs 206 et 209.Dans la zone de bit de poids faible du registre 211, on stocke le contenu de la zone de bit de poids faible du registre d'adresses virtuelles 200. Si l'adresse stockée dans le registre de pré-adresses 211 a été stocké,dans l'alignement de pré- adresses 214, l'instruction BCT stockée dans l'alignement de pré-données 215 est lue et envoyée à l'unité de commande avancée 3 par l'intermédiaire du sélecteur 220. Si l'adres- se réelle désirée n'a pas été stockée dans l'alignement de pré-adresses 214, l'adresse réelle est fournie à partir du 7. registre de pré-adresses 211 à l'unité MMU 1 représentée à la figure 1, par l'intermédiaire du tampon de stockage 207. L'instruction, BCT lue à partir de l'unité MMU 1, en correspondance avec l'adresse réelle, est temporairement stockée dans l'alignement de pré-donnée 215, par l'inter- médiaire du registre de données de mémoire 208, du sélec- teur 212 et du registre de pré-inscription 213. L'instruc- tion BCT stockée dans l'alignement 215 est donnée à l'unité de commande avancée 3 par l'intermédiaire du sélecteur 220. On va maintenant décrire la commande de pipeli- ne de cette forme d'exécution. En se référant à la figure 3, on voit que cha- que instruction comprend 7 étages, à savoir: un étage de décodage d'instructions D, un étage de calcul d'adresses A, un étage d'accès au TLB (conversion d'adresse) P, un étage d'accès à l'antémémoire C, un étage T de lecture du registre général 5 ou du tampon d'opérande 4, un étage d'exécution d'instruction E et un étage d'écriture W. On va décrire plus en détail le fonctionnement du dispositif de commande dans cette forme d'exécution, en se référant à la figure 6 dans laquelle les 7 étages sus- mentionnés sont portés sur l'axe des X, ainsi qu'aux fi- gures 1, 4 et 5. En se référant aux figures 4 et 6, on voit que l'instruction BCT provenant de l'unité d'acces de mémoire 2 est stockée dans le registre d'instructions 302 par l'inter- médiaire d'une ligne 100 et d'un tampon d'instructions 301. Le contenu de la zone d'adresses BCT alimentée par l'inter- médiaire du sélecteur 311, et le contenu du fichier à registres d'index 312 sont ajoutés au moyen d'un addition- neur d'adresses effectives 314. Le résultat de l'addition effectué par l'additionneur 314, c'est-à-dire l'adresse effective de l'instruction de branchement, est stocké dans un registre d'adresses effectives 315. L'adresse effective du registre 315 est stockée dans une pile d'adresses 8. effectives 307. D'autre part, les codes OP (opération) du registre d'instructions 302 sont décodés par un décodeur d'instruction 303 et positionné dans un registre d'instruc- tions décodées 305. Le résultat du décodage est stocké dans une pile d'instructio rsdécodées306. Le traitement susmention- né est exécuté par l'unité de commande avancée 3. En se référant aux figures 1, 4 et 6, on voit que les données sous forme de 36 bits lues à partir du groupe de registres GP 5 sont détectées par le circuit de détection 13 afin de discerner si elles sont, ou ne sont pas, au niveau logique "1" dans l'étage T. L'adresse ef- fective et le résultat du décodage sont lus à partir de la pile d'adresses effectives 307 et de la pile d'instruc- tions décodées 306 pour les lignes 104 et 103. En se référant aux figures 1 et 6, on voit que les opérandes sont lus à partir du groupe de registre GP 5, dans le dispositif de données. Dans l'étage E, l'opérande de lecture est sto- cké dans le registre d'opérande 9 et soustrait par l'unité ALU 11 si le contenu du reaistre d'opérande 10 est "1". Dans le dispositif de commande, le résultat de décodage don- né par l'intermédiaire de la ligne 103 est stocké dans le registre 22 et, en même temps, l'adresse effective donnée par l'intermédiaire de la ligne 104 est stockée dans le registre 17. Si le résultat détecté par le circuit de dé- tection 13 est de "1", le basculeur 14 est positionné, Le circuit de discernement de branchement 15 discerne si le branchement indiqué par l'instruction BCT est, ou n'est pas, effectué, en se fondant sur le signal de sortie du - -bascu!eur 14, le type d'instruction de branchement provenant du registre 22 par la ligne 107, et le signal de rythme de branchement provenant du registre 22 par la ligne 108. On va maintenant décrire plus en détail, en se référant à la figure 5, le mode opératoire du discernement de l'instruction de branchement. A la figure 5, on voit qu'un type d'instruction 9. de branchement donné par l'intermédiaire de la ligne 107 est décodé par un décodeur 450 et que diverses conditions de branchement sont sélectionnées pour chaque instruction de branchement. Les conditions de branchement pour les instructions de branchement IR0-IRn autres que les instructions BCT sont stockées dans un registre indicateur (non représenté). Dans le cas des instructions BCT, la ligne de signal 458 faisant partie des sorties du décodeur 450 prend le niveau logique "1" pour être soumiseà une opé- ration logique ET avec le signal de sortie négatif du basculeur 14, au moyen d'une porte logique ET 454. Le si- gnal de sortie de cette dernière est fourni à la porte logique ET 456, par l'intermédiaire d'une porte logique OU 455 et soumis à une opération logique ET- avec le signal de rythme de branchement fourni par la ligne 108 et transmis aux lignes 105 et 106 en tant que signaux d'établissement de branchement. En d'autres termes, dans le cas o l'ins- truction de branchement est une instruction BCT, et quand-le contenu du basculeur 14 est "0", le chiffre "1" sur les lignes 105 et 106 indique que le branchement est effectué. Lorsque le contenu du basculeur 14 est "1", le signal "0" sur les lignes 105 et 106 signifie que le branchement n'est pas effectué. Dans l'étage W, l'adresse effective est stockée à partir du registre 17, dans le registre 18. Les signaux d'établissement du branchement fournispar la ligne 106 sont appliqués au basculeur 16. Le signal d'établissement de branchement est donné à l'unité de commande avancée 3 par la ligne 105 pour actionner le circuit de commande de tam- pon d'instruction 300, représenté à la figure 4, et pour stocker l'instruction suivante à partir du tampon d'instruc- tion 301 dans le registre d'instruction 302. Quand le con- tenu du basculeur 16 est "1", ou lorsque le branchement est effectué, l'adresse de branchement qui a été transférée par l'intermédiaire des registres 17 et 18 est sélectionnée de 10. façon à être appliquée au registre d'adresses d'instruction 20. D'autre part, lorsque le signal de sortie du basculeur 16 est "0" ou que le branchement n'est pas effectué ou en- core lorsqu'il ne correspond pas au rythme de branchement, on ajoute la valeur "1" au contenu du compteur d'instruc- tion 20 en raison du fait que le sélecteur 19 choisit l'additionneur 21. On va expliquer l'amélioration obtenue grâce à l'invention dans le rendement d'exécution de chaque instruction BCT, en se référant à une forme d'exécution de l'unité de traitement d'instruction de branchement selon l'invention, comparée avec une unité de traitement d'instruc- tion de branchement conforme à l'état de la technique antérieure. En se référant à la figure 7, on voit que, dans la forme d'exécution de l'unité de traitement selon l'inven- tion, on détecte le contenu de l'un des registre GP, dans le groupe de registres GP 5, afin de savoir s'il est, ou non, de "1" dans l'étage T, et on positionne le basculeur 14. On discerne si le branchement est, ou n'est pas,effectué selon le contenu du basculeur 14. L'opération correspondan- te est effectuée à l'étage E, selon l'invention, afin d'améliorer le rendement lors de l'exécution des instruc- tions de branchement. Il est bien entendu que la description qui précède d'une forme d'exécution de l'unité de traitement d'instruction branchement selon l'invention n'est faite qu'à titre d'exemple non limitatif et que de nombreuses variations pourraient lui être apportées sans sortir du cadre de l'invention. 11. REVENDICATION 1 - Unité de traitement d'instruction de bran- chement pour i execution d'instructions de branchement com- mandé par comiptage pOu --ia coi2annde de boucles duun program- me sous commande de pipeline, caractérisée en ce qu'elle comprend un moyen de mémorisation pour stocker le nombre de répétition de boucle de ces instructions de branchement commandé par comptage; un premier moyen de stockage pour stocker le signal de sortie dudi-n mioyen de mémorisation un îm Oyei.n de dtec tion pour détecter si un si- gnal de sortie ducit iolYen de memorisation a0 ou n'a pas, la valeur "1"111, alors que le signal de sortie du moyen de mémorisation est stocké dans le premier moyen de stockageî un second moyen de stockage pour stocker un signal de sortie dudit premier moyen de stockage; et un moyen de discernement de branchement qui discerne si l'inst.-uction de branchement commandé par comptage est donnée avec succes en réponse à la détection de la valeur "1" par ledit moyen de détection alors qu'un signal de sortie dudit premier moyen de stockage est stocké dans ledit second moyen de stockageo