FR 2489555 A1 19820305 FR 8116379 A 19810827 Système de traitement de données à commande par pipeline La présente invention concerne un système de traite- ment de données permettant de traiter simultanément une plu- ralité d'instructions (appelé ci-après "système de traite- ment de données à commande par pipeline"). Un système classique de traitement de données à commande par pipeline est équipé d'une unité d'exécution constituée d'une pluralité de sous-unités, qui sont capables de fonctionner à haute vitesse pour procéder au traitement simple de plusieurs instructions. Plus spécifiquement, cha- que sous-unité traite l'une ou l'autre partie d'une certaine instruction à un instant donné, de sorte que l'unité d'exé- cution peut procéder au traitement simultané de ces instruc- tions. Cependant, étant donné que chaque exécution des ins- tructions pour l'ensemble des sous-unités est faite à la suite, le temps de traitement total devient de plus en plus long. On trouvera des détails d'un tel système dans un article intitulé: "The IBM System/360 Model 91: Machine Philosophy and Instruction Handling" par D.W. Anderson et al, IBM Journal of Research and Development, Vol. 11, No. 1, pp. 8-24, No. de janvier 1967 (référence 1). Pour éliminer un tel inconvénient du système repré- senté dans la référence 1, un autre type de système de trai- tement de données à commande par pipeline, dans lequel tou- tes les instructions sont traitées en parallèle, est traité dans un article intitulé: "An Efficient Algorithm for Exploiting Multiple Arithmetic Units" par R.M. Tomasulo, IBM Journal of Research and Development, Vol. 11, No. 1, pp. 25-33, No. de janvier 1967 (référence 2). Cependant, dans ce système, une commande et un matériel compliqués sont absolument nécessaires. Un objet de la présente invention est par conséquent un système de traitement de données à commande par pipeline exempt des inconvénients cités ci-dessus des systèmes de l'art antérieur. Selon l'un des aspects de la présente invention, on prévoit un système de traitement de données à commande par pipeline ayant un registre arithmétique pour stocker un résultat d'opération, une unité de mémoire principale pour stocker une pluralité d'instructions, chaque instruction ayant une partie de code opération et une partie d'adresse, une unité d'antémémoire pour stocker les mêmes instructions que les instructions stockées dans la mémoire principale, et un moyen de traitement pour traiter à la sui- te une série d'instructions et traiter simultanément diffé- rents cycles des séries d'instructions avec des décalages de sorte que des cycles correspondants de traitement de chaque instruction, ne se recouvrent pas. Ce système de traitement comprend en outre: un moyen de détection permettant de détecter si le code opé- ration d'une première instruction donnée pour désigner l'opération et la charge du résultat de l'opération dans le registre arithmétique, et le code - opération d'une seconde instruction donnée pour désigner le stockage de la sortie du registre arithmétique à la fois dans une adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et une adresse de l'unité d'anté- mémoire désignée par la partie d'adresse de la seconde instruction sont donnés dans cet ordre; et un moyen répon- dant aux première et seconde instructions et à la détection de l'occurence consécutive des première et seconde instruc- tions par le moyen de détection de façon à exécuter la char- ge du résultat de l'opération obtenu pendant l'exécution de la première instruction dans le registre arithmétique en parallèle avec le stockage du résultat de l'opération obte- nu pendant l'exécution de la première instruction dans l'adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et l'adresse de l'unité d'antémémoire désignée par la partie d'adresse de la seconde instruction, tout en commandant le moyen de traitement pour qu'il arrête l'opération de stockage devant être exécutée par la seconde instruction. La présente invention sera bien comprise à la lec- ture de la description suivante faite en relation avec les dessins ci-joints dans lesquels: la figure lA représente un premier mode de réalisa- tion de la présente invention; la figure 1B représente un diagramme décrivant un format d'instruction; la figure 2 représente un diagramme de temps pour décrire le fonctionnement d'un système classique ayant fait l'objet de la description de la référence 2; la figure 3 représente un diagramme de temps pour décrire le fonctionnement du mode de réalisation de la présente invention; la figure 4 représente un second mode de réalisation de la présente invention; et les figures 5 et 6 sont des diagrammes de temps dé- crivant le fonctionnement du second mode de réalisation de la présente invention. Dans les figures, les mêmes numéros de référence représentent les mêmes éléments de structure. En liaison avec la figure lA, le premier mode de réalisation de la présente invention comprend une mémoire- tampon 5 de pré-recherche d'instructions, un premier registre d'instructions 6, un second registre d'instructions 1, un premier décodeur 8, un second décodeur 9, un circuit de détection 10, un registre 11, un circuit de commande 12, un registre d'index 13, une unité de préparation d'adresse 14, un registre d'adresses virtuelles 15,une unité de traduc- tion de lecture 16, une antémémoire 17, un registre d'anté- mémoire 18, un registre arithmétique 19, et une unité d'exé- cution 20. L'antémémoire 17 mémorise les mêmes instructions que les instructions stockées dans la mémoire principale (non représentée). Le premier décodeur 8 est constitué d'une mémoire morte dont la sortie 81 est "1" lorsqu'une instruc- tion établie dans le registre 7 désigne l'opération et le chargement du résultat de l'opération dans le registre 19. Le second décodeur 9 est également constitué d'une mémoire morte dont la sortie 91 est "1" lorsqu'une instruction du registre 6 désigne le stockage de la sortie du registre 19 dans la mémoire 17 et la mémoire principale. Le circuit de détection 10 comprend une porte ET. L'unité de commande 17 comprend des bascules 121 et 122, et une porte ET 123. L'unité de préparation d'adresse 14, l'antémémoire 17, et l'unité d'exécution 20 ont respectivement la même structure que l'unité de préparation d'adresse 704-3, l'antémémoire 750, et l'unité d'exécution 714 représentées en figure 2 dans le brevet des Etats-Unis d'Amérique No. 4 179 736. L'unité de traduction d'adresse 16 est constituée de l'ensembleassociatif 22, des circuits de commande d'adresse 24, et des portes 15 représentés dans la figure 1 et dans les figures 10 à 22 du brevet des Etats-Unis d'Amérique No. 3 593 165. En liaison avec la figure 1B, une instruction utili- sée dans la présente invention comporte une partie à code opération (code OP) et une partie d'adresse. Le fonctionnement du premier mode de réalisation de la présente invention sera maintenant décrit en détail en liaison avec les figures lA à 3. En liaison avec la figure lA, une série d'instruc- tions W, X et Y provenant de la mémoire 17 sont stockées dans la mémoiretampon 5 et lues successivement dans cette mémoire pour être stockées dans le registre 6. Le code OP (partie) d'une instruction X du registre 6 est donné au registre 7 et au décodeur 9 dans le cycle machine suivant. Une autre instruction W lue dans le cycle prédédant immédiatement le cycle de lecture de l'instruction X est déjà donnée au déco- deur 8. Un produit logique de la sortie 91 et de la sortie 81 est obtenu par le circuit de détection 10. La sortie du circuit 10 est "1" lorsque le code OP de l'instruction W désigne l'opération et le chargement du résultat de l'opéra- tion dans le registre 19 et l'instruction X le chargement de la donnée du registre 19 dans la mémoire 17 et dans la mémoi- re principale. Alors, le code OP d'une instruction Y est donné par la mémoire-tampon 5 au registre 6 et au décodeur 9, dans un cycle machine à l'arrière du cycle de lecture de l'instruction X. A ce moment-là, le code OP de l'instruc- tion X dans le registre 7 a déjà été donné au décodeur 8 de façon à permettre au circuit de détection 10 d'obtenir un produit logique du résultat décodé du code OP de l'instruc- tion X par le décodeur 8 et le résultat décodé de celui de l'instruction Y par le décodeur 9. En liaison avec la figure 2, SX et SY représentent les séquences d'exécution des instructions X et Y, respective- ment. De plus, chaque intervalle de temps t2-tl, t3-t2, t4-t3, t5-t4, et t6-t5 est égal à un cycle machine. En liaison maintenant avec les figures lA et 2, en réponse au "0" de chacun des résultats décodés des deux pai- res d'instructions W-X et X-Y, la sortie du circuit de détec- tion 10 devient "0" et est alors stockée dans le registre 11. Entre les instants t1 et t2, l'adresse (partie) de la pre- mière instruction X dans le registre 6 est donnée à l'unité 14 de façon à générer une adresse virtuelle d'une donnée d'opérande à stocker dans le registre 15 (cette opération est effectuée dans le cycle de génération d'adresses vir- tuelles A pour l'instruction X). Entre les instants t2 et t3, l'adresse virtuelle est alors transformée en adresse physi- que dans l'unité de traduction d'adresse 16 et la donnée d'opérande est lue dans la mémoire 17 pour être stockée dans le registre 18 (cette opération est exécutée dans le cycle de recherche d'opérande C de l'instruction X). Pendant la même période de ce cycle, le cycle A de l'instruction X est exécuté. Dans ce cas, un cycle d'exécution (appelé ici simplement "cycle EX") E1 du cycle machine de traite- ment de l'instruction X est continu à un cycle d'exécution E2 du cycle machine utilisé pour exécuter l'instruc- tion Y. En liaison avec la figure 3, l'instruction X a la même séquence que l'instruction correspondante représentée en figure 2. L'instruction Y a la même séquence que l'ins- truction correspondante représentée en figure 2 jusqu'à l'instant t3, mais a une séquence différente à partir de l'instant représenté en figure 2 suivant le point t3* Plus spécifiquement, au point t3, un signal de démarrage du cycle E de l'instruction X est donné par une unité de commande (non représentée) à la bascule 121. La sortie de la bascule 121 est appliquée à l'unité 20, de sorte que les contenus des registres 18 et 19 sont ajoutés dans cette unité. La sor- tie de la bascule 121 est chargée dans une bascule 122. La sortie de la bascule 122 est appliquée à l'unité 20 et au registre 21 pour permettre le stockage du résultat de l'addition de l'unité 20 dans le registre 19. En réponse à une sortie 1 du registre 11, la sortie de la bascule 122 est fournie à la mémoire 17 par l'intermédiaire d'une porte ET 123, de façon que la sortie du registre 19 soit stockée dans une adresse de la mémoire 17 et désignée par l'adresse de l'ins- truction Y. Cette opération de stockage est effectuée dans un cycle d'exécution E12. Par conséquent, en réponse à une sortie "1" du registre 11, l'instruction X est exécutée et l'opération alternative effectuée. Par conséquent, le même résultat que le résultat qui proviendrait de l'exécution des instructions X et Y est obtenu à un instant t5. Ce mode de réalisation permet par conséquent de réduire le temps total de traitement (t1-t5) d'un cycle machine par rapport au temps (tl-t6) d'un système classique. En liaison avec la figure 4, un second mode de réa- lisation comprend une mémoire-tampon de pré-recherche d'instruc- tions 5, un premier registre d'instructions 6, un second re- gistre d'instructions 7, un premier décodeur 8, un.second décodeur 9, un circuit de détection 10, un registre 11' ayant deux bascules 1101 et 1102, un circuit de commande 12, un registre d'index 13, une unité de préparation d'adresses 14, un registre d'adresses virtuelles 15, une unité de traduction d'adresse 16, une antémémoire 17, un registre de lecture d'antémémoire 18, un registre arithmétique 19, une unité d'exécution 20, un registre 21 et un circuit de détection d'identité d'adresse 22. Le premier décodeur 8 est constitué d'une mémoire morte dont la sortie 81 est "1" lorsque l'instruction du registre 7 désigne l'opération et le chargement du résultat de l'opération dans le registre 19. Le second décodeur 9 comprend également une mémoire morte dcnt la sortie 91 est "1" lorsque l'instruction dans le registre 6 désigne le stockage de la sortie du registre 19 dans la mémoire 17 et dans la mémoire principale. En outre, la sortie 92 du décodeur 9 prend la valeur "1" lors- qu'une autre instruction du registre 6 désigne le chargement de données de la mémoire 17 dans le registre 19 par l'inter- médiaire du registre 18 et d'un sélecteur 25. Le circuit de détection 10 est constitué de portes ET 101 et 102 et d'une porte OU 103. Le circuit de commande 12 comprend des bascu- les 121, 122, 123 et 128, et des portes ET 124, 125, 126 et 127. L'unité d'exécution 20 est constituée d'un circuit d'exécution 23 et de sélecteurs 24 et 25. L'unité de prépa- ration d'adresse. 14, l'antémémoire 17 et le circuit d'exé- cution 23 ont respectivement les mêmes structures que l'unité de préparation d'adresse 704-3, l'unité d'anté- mémoire 750 et l'unité d'exécution 714 représentées dans la figure 2 du brevet des Etats-Unis d'Amérique No.4 179 736. L'unité de traduction d'adresse. 16 comprend l'ensemble associatif 22, les circuits de commande d'adresse 24, et les portes 15 représentés dans les figures 1 et 10 à 22 du brevet des Etats-Unis d'Amérique No. 3 693 165. Le circuit de détection de coïncidence d'adresses 22 est cons- titué de 43 portes NON-OU Exclusif 222 à 22n et d'une porte ET 221. Dans la figure 4, chaque cercle représenté aux sor- ties des circuits 128, 222, et 22n signifie que chacune des sorties est inversée. Le fonctionnement de ce mode de réalisation sera maintenant décrit en détail en liaison avec les figures 4, et 6. Les codes OP des trois instructions consécutives X, Y et Z sont examinés par le circuit de détection 10, et en même temps,-les trois adresses des instructions X, Y et Z sont examinées par le circuit 22 de façon à détecter si les deux adresses entre chacune des deux instructions consécuti- ves, c'est-à-dire X et Y, et Y et Z,sont identiques l'une à l'autre. Lorsque soit l'instruction X ne désigne pas l'opé- ration et le chargement du résultat de l'opération dans le registre 19, soit l'instruction Y ne désigne pas le stockage de la sortie du registre 19 dans la mémoire 17 et dans la mémoire principale, au moins l'une ou l'autre des sorties 81 et 91 est O.. Il en résulte que la sortie de la porte ET 101 dans le circuit 10 est. "O",-et à moins que la sortie de la porte ET 102 soit "1", la sortie 111 de la bascule 1101 du registre 11' est également "O". Le "O" de la sortie 111 est alors donné à la mémoire 17 et au sélecteur 24 par l'intermédiaire des portes ET 124 et 126, respectivement. En liaison maintenant avec la figure 5, le cycle_ EX E1 pour l'instruction X, le cycle-EX E2 pour l'instruc- tion Y, et le cycle-EX E3 pour l'instruction Z sont exécutés à la suite sans interruption. L'exécution des trois instruc- tions est terminée à l'instant t8. Ensuite, lorsque l'instruction X désigne l'opération et le chargement du résultat de l'opération dans le registre 19, l'instruction Y désigne le stockage de la sortie du registre 19 dans la mémoire 17 et dans la mémoire principale, et l'instruction Z ne désigne pas le chargement des données de la mémoire 17 dans le registre 19 par l'intermédiaire du registre 18 et du sélecteur 25, les bascules 1101 et 1102 du registre 11' deviennent "1" et "0", respectivement. Il en résulte que le cycle-EX E1 pour l'instruction X et le cycle-EX E12 pour l'opération alternative à l'instruction Y sont exécutés en parallèle. Le cycle-EX E3 pour l'instruc- tion Z est démarré à l'instant t5 à l'issue de cette exécu- tion en parallèle des cycles E1 et E12' Lorsque l'instruction X désigne l'opération et le chargement du résultat de l'opération dans le registre 19, l'instruction Y désigne le stockage de la sortie du registre 19 dans la mémoire principale, et l'instruction Z désigne le chargement des données de la mémoire 17 dans le registre 19 par l'intermédiaire du registre 18 et du circuit 25, les bascules 1101 et 1102 du registre 11' prennent les valeurs "1" et "1", respectivement. Cependant, dès que le circuit 22 détecte la coïncidence entre une adresse d'écriture de la mémoire 17 désignée par l'adresse de l'instruction Y et une adresse de lecture de la mémoire 17 désignée par l'adresse de l'instruction Z, la sortie de la bascule 128 dans le cir- cuit 12 pendant l'exécution de l'instruction Y devient "0". Il en résulte que le cycle-EX E1 pour l'instruction X et le cycle-EX E12 pour l'opération alternative à l'instruction Y sont exécutés en parallèle, et le cycle-EX E3 pour l'ins- truction Z est démarré en série à l'instant t5 à l'issue de l'opération en parallèle dans les cycles E1 et E 12' En liaison avec la figure 6, en réponse aux "1" et "1" des bascules 1101 et 1102 du registre 11' et à la détec- tion de la non coïncidence entre l'adresse d'écriture et l'adresse de lecture par le circuit 22, le cycle-EX E1 pour le chargement du résultat de l'exécution dans le registre 19 est inhibé par le circuit 12. Le cycle E dans le cycle EX pour l'instruction X est démarré à l'instant t5. Dans une telle opération d'inhibition, le cycle.EX E12 pour l'opération alternative et le cycle-EX E3 sont exé- cutés en parallèle à l'instant t5. Le résultat de l'opéra- tion obtenu pour l'exécution de l'instruction X est stocké dans l'adresse d'écriture de la mémoire 17 désignée par l'adresse de l'instruction Y dans le cycle E12* Dans le cy- cle E3 pour l'exécution de l'instruction Z, la donnée est lue dans la mémoire 17 et transmise au registre 19. Ensuite, le fonctionnement des trois cycles-EX sera décrit avec davantage de détails en liaison avec la figure 4. En réponse au "1" de la porte ET 126 du circuit 12, le sélecteur 24 envoie le résultat de l'opération du circuit 23 à un trajet 241. Le résultat de l'opération est mémorisé dans une adresse de la mémoire 17 désignée par l'adresse de l'instruction Y. Cette opération est faite pendant le cycle E12 pour l'opération alternative. En parallèle avec ces opé- rations, le sélecteur 25 envoie la sortie du registre 18 à un trajet 251 en réponse à une sortie "1" de la porte 127. La donnée ainsi envoyée est stockée dans le registre 19. Cette opération est effectuée dans le cycle-EX E3 pour l'instruction Z. Le cycle EXE12 constitue une partie du cy- cle E1 pour l'instruction X. Dans le cycle E12, le résultat de l'opération provenant du circuit 23 est stocké dans le registre 19 par l'intermédiaire du sélecteur 25 et du trajet 251. Dans le cycle-EX E2 pour l'instruction Y, le résultat de l'opération provenant du registre 19 est stocké dans la mémoire 17 par l'intermédiaire du sélecteur 24 et du trajet 241. Par conséquent, le même résultat que le résultat de l'exécution des instructions X et Y et Z est obtenu à l'ins- tant t6. Cela veut dire que le temps de traitement total des instructions avec le second mode de réalisation de la présente invention est raccourci de deux cycles machine par rapport à un système classique. La présente invention n'est pas limitée aux exemples de réalisation qui viennent d'être décrits, elle est au contraire susceptible de variantes et de modifications qui apparaîtront à l'homme de l'art. REVENDICATIONS 1. Système de traitement de données à commande par pipeline comportant un registre arithmétique pour stocker un résultat d'opération, une unité de mémoire principale pour stocker une pluralité d'instructions, chaque instruc- tion ayant une partie de code opération et une partie d'adresse, une unité d'antémémoire pour stocker les mêmes instructions que les instructions stockées dans la mémoire principale, et un moyen de traitement pour traiter à la sui- te une série d'instructions et traiter simultanément des cycles différents des séries d'instructions avec des décala- ges de façon que des cycles correspondants de traitement de chaque instruction ne se chevauchent pas, caractérisé en ce qu'il comprend: - un moyen de détection permettant de détecter si le code opération d'une première instruction donnée pour la désignation de l'opération et du chargement du résultat de l'opération dans le registre arithmétique, et le code opération d'une seconde instruction donnée pour la désigna- tion du stockage de la sortie du registre arithmétique dans une adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et une adresse de l'uni- té d'antémémoire désignée par la partie d'adresse de la seconde instruction sont donnés dans cet ordre; - un moyen répondant aux première et seconde ins- tructions et à la détection de l'occurence consécutive des première et seconde instructions par le moyen de détection de façon à effectuer le chargement du résultat de l'opéra- tion obtenu pendant l'exécution de la première instruction dans le registre arithmétique en parallèle avec le stockage du résultat de l'opération obtenu pendant l'exécution de la première instruction dans l'adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et l'adresse de l'unité d'antémémoire désignée par la partie d'adresse de la seconde instruction, tout en commandant le moyen de traitement pour qu'il y ait arrêt de l'opération de stockage à exécuter par la seconde instruction. 2. Système de traitement de données à commande par pipeline comportant un registre arithmétique pour stocker un résultat d'opération, une mémoire principale pour stocker une pluralité d'instructions, chaque instruction ayant une partie de code opération et une partie d'adresse., une unité d'antémémoire pour stocker les mêmes instructions que les instructions stockées dans la mémoire principale, et un moyen de traitement pour traiter à la suite une série d'instructions et traiter simultanément des cycles différents des séries des instructions avec des décalages de façon que des cycles correspondants pour le traitement de chaque ins- truction ne se chevauchent pas, caractérisé en ce qu'il com- prend: - un premier moyen de détection permettant de détecter si le code opération d'une première instruction donnée pour désigner l'opération et le chargement de l'opé- ration dans le registre arithmétique et le code opération d'une seconde instruction donnée pour désigner le stockage de la sortie du registre arithmétique dans une adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et une adresse de l'unité d'anté- mémoire désignée par la partie d'adresse de la seconde ins- truction sont consécutivement donnés dans cet ordre et détecter si les première et seconde instructions, et une troisième instruction pour désigner le chargement de la sortie soit de la mémoire principale soit de l'unité d'anté- mémoire dans le registre arithmétique sont données consécu- tivement dans cet ordre; - un second moyen de détection permettant de dé- tecter la coïncidence entre une adresse d'écriture de l'unité d'antémémoire désignée par la partie d'adresse de la seconde instruction et une adresse de lecture de l'unité d'antémémoi- re désignée par la partie d'adresse de la troisième instruc- tion; - un moyen répondant aux première et seconde ins- tructions et à la détection de l'occurence consécutive des première et seconde instructions par le premier moyen de détection de façon à exécuter le chargement du résultat de l'opération de la première instruction dans le registre arithmétique en parallèle avec le stockage du résultat de l'opération dans l'adresse de la mémoire principale dési- gnée par la partie d'adresse de la seconde instruction et l'adresse de l'unité d'antémémoire désignée par la partie d'adresse de la seconde instruction, tout en commandant le moyen de traitement pour qu'il y ait arrêt de l'opération de stockage à exécuter par la seconde instruction; et - un moyen répondant aux première, seconde, et troisième instructions et à la détection de la non-coinci- dence par le second moyen de détection entre l'adresse d'écriture de l'unité d'antémémoire désignée par la partie d'adresse de la seconde instruction et l'adresse de lecture de l'unité d'antémémoire désignée par la partie d'adresse de la troisième instruction de façon à exécuter la lecture soit de la mémoire principale, soit de l'unité d'antémémoire dans le registre arithmétique en parallèle avec le stockage du résultat de l'opération de la première instruction dans l'adresse de la mémoire principale désignée par la partie d'adresse de la seconde instruction et l'adresse de l'unité d'antémémoire désignée par la seconde instruction, tout en commandant le moyen de traitement pour qu'il y ait arrêt de l'opération de stockage devant être exécutée par la seconde instruction et du chargement du résultat de l'opération dans le registre arithmétique devant être exécuté par la première instruction.