FR 2298138 A1 19760813 FR 7501326 A 19750116 La présente invention concerne d'une manière générale les ordinateurs, et plus particulièrement les processeurs de données foncsionnant en.mode "pipeline". Un processeur pipeline est un dispositif informatique comprenant plusieurs étages de traitement destinés à exécuter tour à tour les phases successives d'une instruction, différentes phases de différentes instructions pouvant être exécutées simultanément par différents étages du processeur. L'intérêt d'un tel dispositif est d'accélérer l'exécution des programmes car la vitesse effective de traitement dépend du rythme de prise en compte des instructions à exécuter, et non pas du temps total d'exécution d'une instruction particulière. L'appellation de "processeur pipeline" résulte d'un parallèle avec un oléoduc dans lequel la vitesse de transport du pétrole dépend du débit des stations de pompage et non pas du temps de transit du produit d'un bout à l'autre de la canalisation. Dans un processeur pipeline, il est essentiel de minimiser au niveau de chaque étage de traitement les attentes forcées qui risquent de bloquer le fonctionnement de l'ensemble du dispositif. Un exemple d'une telle attente forcée est le cas où l'un des étages doit écrire à une adresse spécifiée de la mémoire une information qui n'est pas disponible immédiatement car elle dée pend du résultat de l'exécution d'une phase ultérieure de l'instruction. Dans une telle situation, l'exécution de toutes les instructions suivantes est bloquée tant que l'information attendue n'est pas disponible. La présente invention a donc pour objet un processeur en mode pipeline comprenant plusieurs étages de traitement destinés à exécuter des phases successives d'une instruction, les différentes phases de différentes instructions étant exécutées simultanément par les différents étages du dispositif, une mémoire à laquelle peut accéder l'un des étages au cours de l'exécution d'une phase particulière d'une instruction, un registre associé à ladite mémoire est destiné à contenir une adresse de rangement de l'information qui sera disponible après l'exécution d'une phase ultérieure de l'instruction pour permettre à l'étage d'accéder ultérieurement à la mémoire sans qu'il soit nécessaire d'attendre que llinformation à écrire soit réellement dispcnible, et des circuits entrant en jeu dès que ladite information est disponible pour adresser 1' emplacement de mémoire indiqué et y transférer l'information. Dans une forme préférée de l'invention, la mémoire est une mémoire auxiliaire rapide contenant des informations en cours d'utilisation par l'étage associé du processeur, ces informations étant extraites à la demande d'une mémoire principale. D'autres caractéristiques et avantages de l'invention ressortiront de la description détaillée qui suit et des dessins sur lesquels: la figure 1 est un schéma synoptique des différents blocs fonctionnels d'un processeur pipeline; la figure 2 est un schéma plus détaillé d'une partie de la figure 1. Sur la figure 1, un dispositif de traitement informatique comprend une mémoire principale 100 qui contient les instructions du programme et également les opérandes (données et variables) sur lesquelles porte le traitement. La mémoire 100 peut être hiérarchisée et organisée en pages dont les informations sont adressées indirectement par l'intermédiaire d'un translateur d'adresses. Cependant, l'invention ne concerne pas directement ces caractéristiques et elles ne seront pas décrites en détail. Un segment de la mémoire est réservé pour un usage particulier décrit plus loin et constitue une pile du type "dernier entré premier sorti". Chaque instruction comprend un code de fonction représentant une opération arithmétique ou autre, et un opérande pour ladite fonction. Il existe différents types d'opérandes: a) Un opérande littéral est une valeur symbolique contenue dans l'instruction elle-même. b) Un opérande direct est obtenu par un simple accès à la pile. c) Un opérande indirect est obtenu par l'intermédiaire d'un descripteur contenu dans la pile qui fournit l'adresse de 1' opérande Pour simplifier la description du dispositif de la figure l, on n'utilisera au début que les opérandes indirects. Le traitement des instructions comportant des opérandes littéraux et d Y cts sera ensuite décrit. Be Joremier étage du dispositif pipeline de La figure 1 est ur compteur ordinal 101 fournissant les adresses des tnstruc- ions de programme sur une ligne 102. Ces adresses sont séquen tielles, sauf en cas de sauts provoqués par des conditions de braricherent ou d'interruption dans d'autres parties du dispositif. L'adresse d'instruction est appliquée à une unité de recherche 103 qui est associée à une mémoire auxiliaire 104 conte n an un petit nombre d'instructions (par exemple 32) copiées dans la mémoire principale 100. Le temps d'accès de la mémoire 104 est types court comparé à celui de la mémcire 100. A la réception d'une adresse d'instruction, l'unité de recherche 103 interroge une table associative pour déterminer si l'instruction figure dans la mémoire associative, auquel cas elle est disponible à brève échéance. Dans le cas contraire, l'accès à la mémoire principale 100 nécessite un certain délai.Il est cepen dant possible de minimiser l'effet de ces délais en prévoyant des registres tampon dans l'unité 103 et en copiant plusieurs instructions dans la mémoire 104 à chaque accès à la mémoire prIncipale. Le compteur ordinal 101, l'unité de recherche 103 et la mémoire auxiliaire 104 ne font pas partie de l'essence de la présente invention et pour plus de détail le lecteur pourra se reporter à la demande de brevet français n0 75/ déposée le même jour par la demanderesse. L'instruction obtenue par l'unité 103 est transmise par une ligne 10= à une unité de gestion de pile 106 qui la décode pour déterminer la façon d'accéder à l'opérande. Le décodage de l'instruction comporte la sélection d'un registre de base (non représenté) contenant une adresse particulière. L'addition de cette adresse de base à la valeur de déplacement contenue dans l'instruction fournit une adresse d'accès à la pile. En variante, l'adresse de pile peut être fournie par un registre spécial (non représenté) pointant le haut de la pile (c'est à dire la plus haute adresse occupée) qui est constamment mis à jour au fur et à mesure des entrées et des sorties de la pile. L'adresse de pile est transmise par une ligne 107 à une unité d'accès 108 qui permet d'obtenir l'intormation voulue dans la pile à partir d'une mémoire auxiliaire 110, l'information étant au préalable recherche dans la mémoire principale 100 si elle ne figure pas dans la mémoire auxiliaire 110. Dans le cas d'un opérande indirect, l'information ainsi obtenue est un descripteur pointant vers l'emplacement de l'opérande réel. L'unité d'accès 108 et sa mémoire auxiliaire 110 seront décrits en détail plus loin en regard de la figure 2. Le descripteur est transmis par une ligne 109 à une unité d'indexation 111 qui modifie une adresse contenue dans le descripteur par l'addition du contenu de l'un de plusieurs registres d'indexation (non représentés). On obtient ainsi l'adresse de l'opérande recherché sur une ligne de sortie 112. L'adresse d'opérande est appliquée à une unité d'accès 113 qui l'utilise pour rechercher l'opérande dans une mémoire auxiliaire 115 et éventuellement dans la mémoire principale 100 s'il ne figure pas dans la mémoire auxiliaire 115. En outre, ou à la place de certaines de ces opérations, il peut être nécessaire de mettre l'opérande à jour et de transcrire sa nouvelle valeur dans l'emplacement adressé de la mémoire auxiliaire 115. Malheureusement, la nouvelle valeur de opérande n'est pas disponible à ce stade de l'exécution de l'instruction car son calcul intervient à un stade ultérieur (voir ci-apres). Pour éviter une attente qui bloquerait le système pipeline jusqu'à obtention de ce résultat, un registre spécial appelé "registre d'écriture mémoire" est associé à la mémoire auxiliaire 115. Ce registre a pour rôle de marquer l'emplacement de l'opérande dans la mémoire auxiliaire. Le traitement se poursuit ensuite comme si l'opé- ration d'écriture s'était normalement déroulée. L'unité d'accès 113, sa mémoire auxiliaire 115 et le registre d'écriture mémoire seront décrit en détail en regard de la figure 2. En même temps que se déroulent les opérations ci-dessus, le code de l'instruction est transmis en synchronisme avec le fonctionnement des unités 106, 108, 111 et 113 à travers une série de registres de fonction 116-119. Ainsi, lorsque l'opérande voulu apparaît sur la ligne 114, le code de fonction associé apparaît simultanément sur la ligne de sortie 120 du dernier registre 119. Le code de fonction et l'opérande sont appliqués à travers des registres tampons 121 à un opérateur arithmétique classique 122 qui exécute la fonction commandée. Le rôle des registres tampons 121 est de réduire les délais d'attente du système pipeline lorsque l'opérateur arithmétique 122 exécute une in'tructi#n longue, telle que multiplication ou division. Ils servent alement à alimenter l'opérateur arithmétique en opérandes pour réduire l'attente dans le cas où l'étage d'accès 113 dott rechercher un opérande dans la mémoire principale. L'opérateur arithmétique 122 fournit généralement une nouvelle valeur d'opérande qui est appliquée à une ligne 124 pour être rangée dans l'emplacement précédemment marqué de la mémoire auxiliaire 115. Dans ce cas, l'opérande correspondant est égalenent mis à jour dans la mémoire principale 100 par un registre tampon d'écriture 123 et une ligne 125. Ce registre tampon d'écritue est décrit en détail dans la demande de brevet britannique n0 34428/73 de la demanderesse. La description précédente du fonctionnement du dispositif de l'invention concerne le cas d'une instruction utilisant un opérande indirect. Dans le cas d'un opérande direct, les opérations se réduisent à un accès direct à la pile par l'unité 108 et l'#nformation qui apparaît à la ligne 109 est l'opérande lui-même au lieu d'un descripteur. Cette opérande. est donc transmis sans modification à travers les unités 111, 113 et 121 à l'opérateur arithmétique 122.Si une mise à jour est spécifiée, l'adresse de l'opérande est marquée par un autre registre d'écri ture mémoire associé à la mémoire auxiliaire 110. Comme dans le cas précédent, ce registre permet d'éviter que le système pipeline soit mis en attente du nouvel opérande. Dès que cet opérande et fourni par l'opérateur arithmétique 122, il est rangé dans la mémoire auxiliaire 110 à l'emplacement précédemment marqué. Dans le cas où l'instruction comporte un opérande littéral, les opérations d'accès sont supprimées et l'opérande obtenu sur la ligne 105 est transmis sans modification par les unités 106, 108, 111, 113 et 121 à l'opérateur arithmétique 122. Bien que la description ci-dessus ne concerne que l'exé- cution d'une instruction unique, il va de soi qu'à un instant donné plusieurs instructions sont généralement en cours de traitement à des stades différents de leur cycle d'exécution. Par exemple, l'opérateur arithmétique 122 et être en train d'exécuter la phase de calcul d'une certaine instruction alors que l'unité d'accès 113 recherche l'opérande d'une autre instruction, et ainsi de suite. L'association de mémoires auxiliaires séparées aux différentes unités du dispositif de la figure 1 est décrite en détail dans la demande de brevet britannique n0 34430/73 de la demande resse. La figure 2 représente d'une manière plus détaillée une unité d'accès (soit l'unité d'accès 108 à la pile, soit l'unité d'accès 113 à l'opérande) et la mémoire auxiliaire associée (110 ou 115). Sur la figure 2, une mémoire auxiliaire 10 est subdivisée en quatre sections 31, 12, 13 et 14 d'une capacité unitaire de quatre mots. En pratique, une telle mémoire comporte normalement une section supplémentaire pour les bits de parité de chaque mot et éventuellement pour un bit de parité dladresse. Cette organisation de la mémoire auxiliaire 10 correspond au fait que la plus petite entité adressable de la mémoire principale (100 sur la figure 1) est le bloc de quatre mots. La mémoire 10 est une mémoire à lecture/écriture à accès direct. Dans le cas de la figure 1, la mémoire auxiliaire 110 de pile comporte seize emplacements d'une capacité unitaire de quatre mots de trente deux bits, alors que la mémoire auxiliaire 115 d'opérande en comporte trente deux. Ces mémoires peuvent être réalisées sous la forme de circuits intégrés à double ligne de contacts (boitiers DIP). L'adressage est assuré par un codeur 15 qui reçoit un signal sur 11 une des lignes d'un faisceau d'entrée 16 et fournit deux signaux d'adresse sur des groupes de lignes de sortie 17 et 18 assurant la sélection de l'emplacement de bloc en X et en Y. Un circuit 19 contrôle qutune seule ligne est excitée dans chacun des groupes 17 et 18 et fournit une sortie de commande 20,.par exemple pour déclencher une nouvelle tentative d'accès. Les lignes# d'entrée 16 proviennent de portes OU 21 recevant elles-mêmes les sorties de portes ET 22 et 23 sur desfaisceaux à 16 lignes 24 et 25 respectivement utilisés pour des opérations de lecture ou d'écriture. Avant tout accès à la mémoire auxiliaire 10, l'adresse de l'information nécessaire est appliquée par un faisceau multi ligne 29 à un registre d'adresse 30. Cette adresse se compose d'une adresse de bloc indiquant l'emplacement du bloc de quatre mots qui contient l'information requise, et de deux bits supplé mentaires désignant un mot à l'intérieur du bloc. L'adresse de bloc est transmise par une liaison 31 à une mémoire associative 32 qui contient une table des adresses des blocs presenterent contenus dans la mémoire auxiliaire 10.Si l'adresse de bloc demandée figure dans la mémoire associative 32, l'un de plusieurs marqueurs 33 est positionné et modifie l'état d'une lionne d'un faisceau de sortie 34. Pour une lecture du contenu de l'adresse correspondante de la mémoire 10, les portes ET 22 sont validées et les sections 1t à 14 de la mémoire fournissent des sorties respectives 35 à 38. Les sorties 35 à 38 sont respectivement reliées aux entrées A, B, C, D et D, A, B, C de deux groupes de portes à coincidence 39 et 40 qui fournissent des sorties représentant un mot unique sur des faisceaux de lignes 41 et 42. Chaque groupe de portes 39, 40 peut être considéré comme quatre ensembles de portes ET associées à un nombre de portes OU égal au nombre de bits d'un mot. Ce dispositif permet de choisir l'un des quatre mots du bloc par une validation sélective des sections A, B, C ou D des portes à colncidence 39 ou 40. Les deux derniers bits du registre d'adresse 30 sont appliqués à un décodeur binaire 43 qui fournit une sortie sur l'une de quatre lignes de sélection groupées en 44. Les lignes 44 portent des références A, B, C et D qui correspondent à celles des sections des portes 39 et 40 auxquelles elles sont reliées.L'ensemble de ces circuits fait apparaître sur les faisceaux de sortie 41 et 42 deux mots consé cutis 3p la mémoire auxiliaire 10 qui sont combinés en un mot de double longueur. Un groupe de portes ET 45 commandé par un indicateur de longueur de mot 48 permet de choisir une longueur simple ou double. En variante, l'indicateur 48 peut commander des portes ET agissant sur les lignes de sélection 44. Dans un processeur pipeline, lorsqu'il est nécessaire de modifier, c'est à dire de mettre à jour, un mot résidant dans la mémoire auxiliaire 10, son adresse est généralement connue avant que la nouvelle valeur du mot soit disponible et il est souhait au ble de ne pas bloquer la suite du processus de traitement portant sur les autres mots de la mémoire auxiliaire. Pour cela, une porte ET 50 est validée en cas de mise à jour pour établir une liaison entre la ligne 34 et une porte OU 52 dont la sortie est appliquée à un registre de mémoire d'écriture 53 de capacité égale au nombre de lignes du faisceau 34 (c'est à dire 16 dans le cas de la mémoire auxiliaire 110 et 32 dans le cas de la mémoire auxiliaire 115).Le registre 53 contient alors l'indication de l'emplacement (4 mots) de la mémoire auxiliaire qui contient le mot à modifier, ce qui permet de libérer le registre d'adresse 32 pour les cycles de lecture suivants. Dès que l'information attendue devient disponible, un cycle d'écriture est déclenché par la validation de la porte ET 23 qui permet le transfert du contenu du registre 53 au système d'adressage de la mémoire auxiliaire, et également par la validation de l'une des portes ET 55, 56, 57, 58 autorisant 11 entrée du nouveau mot dans les sections respectives 11, 12, 13, 14 de la mémoire 10. Le circuit de validation sélective des portes ET 55 à 58 comprend un registre 59 mémorisant la sortie du décodeur 43 par l'intermédiaire d'une liaison 60 et d'une porte ET 61 validée en même temps que la porte ET 50. Dans le registre d'écriture mémoire 53, un seul bit peut être positionné à un instant donné. Pour cela, la sortie 62 d'un circuit bistable 63 est utilisée pour inhiber toute nouvelle écriture dans le registre 53 tant que le circuit bistable est à l'état un. Le circuit 63 est mis à l'état un par la sortie 64 d'une porte OU 65 recevant par une liaison 66 la sortie du registre 53, et sa remise à zéro se fait en même temps que celle du registre 53 après chaque opération d'écriture. Dans ces conditions, une nouvelle demande de modification d'un bloc différent de la mémoire auxiliaire se traduit par une attente forcée du processeur si elle intervient avant la fin du cycle de mise à jour. Par contre, cette attente n'est pas nécessaire dans le cas où la mise à jour porte sur le même bloc de la mémoire.Ce cas particulier est détecté par un comparateur 67 qui reçoit à la fois le contenu du registre 53 par une liaison 68 et l'état des lignes 34 par une liaison 69 pour fournir une sortie 70 à une porte ET 71 dont l'autre entrée est validée par le circuit bistable 63. La porte ET 71 est échantillonnée une fois par cycle et sa sortie éventuelle 72 représente une seconde demande de modification dans le même bloc de quatre mots. Un compteur réversible 73 d'une capaciLé de quatre unités est incrémenté par chaque impulsion de la sortie 72 et décrémenté après chaque opération d'écriture. Le compteur 73 ne valide le transfert d'une nouvelle adresse dans le registre d'écriture mémoire 53 que si son contenu est nul, c'est à dire si toutes les mises à jours demandées pour le bloc courant ont été effectuées. Ce dispositif est particulièrement intéressant lorsque les mises à jour de plusieurs mots d'un même bloc sont selativement fréquentes. Si la mémoire associative 32 ne fournit aucune correspondance d'adresse de bloc, c'est que le bloc en question ne figure pas dans la mémoire auxiliaire 10 et doit être recherchée et copiée dans la mémoire principale 100 (figure 1). Comme on va maintenant le voir, le registre d'écriture mémoire 53 est également utilisé dans ce cas. Dans le circuit de la figure 2, lorsqu'un bloc est extrait de la mémoire principale et copié dans la mémoire auxiliaire, il remplace l'un des blocs contenus dans cette dernière. Le bloc éliminé est le moins utilisé et cette sélection est assurée par un mécanisme de pointeur de remplacement. A cet effet, la mémoire associative 32 reçoit un faisceau d'entrée multiple 75 dont une ligne est en permanence excitée pour indiquer le prochain emplacement à utiliser pour écrire un nouveau bloc dans la mémoire auxiliaire. Une liaison 76 est établie entre la liaison 75 et une porte ET 77 fournissant une seconde entrée à la porte OU 52 qui sert à autoriser l'accès au registre d'écriture mémoire 53. Cette porte ET 77 est validée lorsqu'une adresse est disponible pour un mot à écrire dans la mémoire auxiliaire 10. Comme dans le cas d'une mise à jour, le registre d'adresse 30 est libéré pour les cycles de lecture ultérieurs de la mémoire 10. Les transferts de données dans la mémoire auxiliaire se font toujours par bloc de quatre mots et les portes 55 à 58 sont simultanément validées lorsque fes données à introduire sont disponibles, c'est à dire lorsque la porte 23 est validée pour une écriture. L'état des lignes 75 est commandé par un compteur 78 et un décodeur binaire 79, ce dernier fonctionnant comme un registre à décalage recevant une impulsion d'horloge à chaque entrée de données. Pour minimiser le travail de réécriture de la mémoire auxiliaire 10, on améliore le mécanisme séquentiel simple du pointeur en rejetant à la fin de la liste de priorité de remplacement le bloc qui contient le dernier mot utilisé. Ceci est réalisé à l'aide d'un comparateur 80 qui reçoit sur une liaison 81 l'adresse du bloc en cours d'utilisation et sur une liaison 82 l'adresse du bloc à remplacer. Lorsque ces deux adresses coïncident, le comparateur 80 fournit une sortie sur une ligne 83 pour incrémenter le compteur 78. La première partie de chaque cycle de traitement est occupée par la consultation de la mémoire associative 32 et la seconde partie du cycle est suffisante pour une opération de lecture de la mémoire 10 à une adresse pour laquelle une coinci- dence a été obtenue pendant la première partie du même cycle. Il est donc~possible d'effectuer une opération d'écriture dans la mémoire auxiliaire pendant la première partie du cycle de traitement suivant à condition que celui-ci ne soit pas occupé par une lecture. L'emploi de mémoire auxiliaire relativement petite, par exemple 64 mots pour les mémoires d'instruction et de pile et 128 mots pour la mémoire d'opérande, chaque mémoire travaillant en bloc de quatre mots comme la mémoire principale, autorise des durées de cycle de traitement compatibles dans l'état actuel de la technologie des circuits intégrés utilisés pour la logique et les mémoires, avec les diverses opérations, telles que association d'adresses, lecture de la mémoire, décodage d'instruction ou de descripteur, addition d'adresses, et modification conditionnelle du déroulement du cycle suivant. Dans la pratique, on peut choisir un temps de cycle de 80 nanosecondes, Il va de soi que la description précédente n'est nullemont limitative et qu'on pourra y apporter diverses modifications ou variantes entrant dans le cadre et dans l'esprit de l'invention. REVENDICATIONS 1. Dispositif informatique caractérisé en ce qu'il comprend plusieurs étages de traitement destinés à exécuter à tour de rôle les phases successives d'une instruction de programme, différentes phases de différentes instructions pouvant être exécutées simultanément par différents étages du dispositif, une mémoire accessible par l'un desdits étages pendant l'exécution d'une phase particulière d'une instruction, un registre associé à ladite mémoire et destiné à contenir une adresse de rangement d'une information qui sera disponible après l'exécution d'une phase ultérieurede l'instruction pour permettre à l'étage d'accéder ultérieurement à la mémoire sans qu'il soit nécessaire d'attendre que l'information à écrire soit réellement disponible, et des circuits entrant en jeu dès que ladite information est disponible pour adresser l'emplacement de mémoire indiqué et y transférer l'information à écrire. 2. Dispositif selon la revendication 1, caractérisé en ce que la mémoire est une mémoire auxiliaire rapide contenant des informations en cours d'utilisation par l'étage associé du dispositif, lesdites informations étant extraites d'une mémoire principale du dispositif. 3. Dispositif selon la revendication 2, caractérisé en ce qu'à la mémoire auxiliaire est associée une mémoire adressable par son contenu ou mémoire associative contenant une table des adresses d'information présentes dans la mémoire auxiliaire, ladite mémoire associative étant agencée de manière qu'une adresse d'entrée soit comparée aux adresses de la table pour fournir une indication de l'emplacement de la mémoire auxiliaire dans lequel se trouve l'information correspondante, des circuits de conditionnement appliquant sélectivement la sortie de la mémoire associative au registre d'adressage pour y mémoriser l'indica- tion d'adresse. 4. Dispositif selon la revendication 3, caractérisé en ce qu'il comprend des circuits de conditionnement utilisant sélectivement soit le contenu du registre d'adresse, soit la sortie de la mémoire associative pour adresser la mémoire auxiliaire. 5. Dispositif selon l'une ou l'autre des revendications 3 et 4, caractérisé en ce que l'adressagesde la mémoire auxiliaire à l'aide du contenu du registre d'adresse peut se faire concurremment à la présentation d'une adresse d'entrée à la mémoire associative. 6. Dispositif selon l'une quelconque des revendications 2 à 5, caractérisé en ce qu'il comprend en outre un pointeur de remplacement désignant la prochaine adresse de la mémoire auxiliaire à utiliser pour le rangement d'une information extraite de la mémoire principale, et des circuits de transfert conditionnel du contenu du pointeur de remplacement dans le registre d'adresse pour y mémoriser l'adresse de l'emplacement dont le contenu devra être remplacé par l'information à transcrire de la mémoire principale, lorsque ladite information sera disponible. 7. Dispositif selon l'une quelconque des revendications 1 à 6 > caractérisé en ce qu'il comprend des moyens de préservation du contenu du registre d'adresse jusqu'à ce qu'une opération d'écriture ait été effectuée avec ledit contenu.