FR 2298139 A1 19760813 FR 7501327 A 19750116 ba présente invention concerne d'une manière générale les ordinateurs, et en particulier la recherche et l'exécution des instructions de programme. Dans un ordinateur, les instructions constituant le programme sont généralement enregistrées dans une mémoire centrale d'cù elles sont extraites au moment voulu pour être exécutées. La vitesse de traitement d'un tel ordinateur est évidemment influencée par le temps d'accès aux instructions. On a donc pensé à associer à la mémoire principale une petite mémoire auxiliaire à accès rapide pouvant contenir une copie de la partie du programme qui est en cours d'exécution. Une telle mémoire auxiliaire peut réduire considérablement le temps d'accès à une instruction et améliorer la vitesse de traitement de l'ordinateur, particulièrement lorsque le programme comprend une boucle d'ins- tructions qui peut être entièrement enregistrée dans la mémoire -auxiliaire, auquel cas la boucle peut être exécutée répétitivement sans aucun accès à la mémoire principale.Cependant, dans le cas où le programme comprend de nombreuses séquences d'instructions sans boucles, la solution de la mémoire auxiliaire est peu efficace car un grand nombre d'instructions doivent être extraites de la mémoire principale. L'invention a donc pour objet un ordinateur comprenant une mémoire principale contenant des instructions de programme sous la forme d'une séquence de blocs de plusieurs mots, une mémoire auxiliaire dont le temps d'accès et la capacité sont inférieurs à ceux de la mémoire principale, un registre tampon d'irstructiensayant une capacité d'un bloc et partagé en deux sections d'inégales longueurs, des circuits analysant répétitivement le contenu du registre tampon selon une séquence déterminée pour en extraire une série d'instructions à exécuter, des circuits approximativement déclenchés au début de l'analyse de la plus grande section du registre tampon pour adresser le bloc suivant de la séquence et pour lancer la recherche et le transfert en parallèle des mots correspondants de la mémoire principale à la mémoire auxiliaire Si le bloc ne figure pas déjà dans cette derniée, des circuits fonctionnant pendant l'analyse de la plus grande section du registre tampon pour écrire une partie correspondante du bloc adreseé dans la plus petite section, et des circuits fonctionnant-peddant-la période d'analyse de la plus petite section du registre tampon pour transférer le reste du bloc adressé dans la plus grande section du registre tampon. Comme on le verra, l'emploi d'un registre tampon d'instructions divisé en deux sections d'inégales longueurs contribue à accélérer la recherche et le transfert des instructions à exécuter séquentiellement et améliore les performances de l'ordinateur. D'autres caractéristiques et avantages de l'invention ressortiront de la description détaillée qui suit et du dessin unique qui représente schématiquement un dispositif de recherche et de transfert des instructions dans un ordinateur. Le dispositif de l'invention comprend une mémoire principale 100 contenant les instructions du programme de l'ordinateur. La mémoire 100 est capable de contenir un grand nombre de blocs de quatre mots représentant des séquences d'instructions. En pratique, les mots utilisés par l'ordinateur peuvent avoir une longueur de 32 bits. On supposera également que les instructions enregistrées dans la mémoire 100 sont de deux types, l'un d'une longueur d'un demi-mot (16 bits), l'autre d'une longueur d'un mot entier (32 bits) occupant deux demi-mots consécutifs de la mémoire. L'ordinateur peut accéder individuellement à chaque bloc de la mémoire en appliquant son adresse sur un faisceau de lignes 101, en réponse à quoi il obtient les quatre mots correspondants sur des lignes parallèles 102. Une mémoire auxiliaire rapide 10 est associée à la mémoire principale 100. La mémoire auxiliaire est caractérisée par une faible capacité, par exemple 16 blocs de quatre mots, et par un temps d'accès très court, par exemple 100 nanosecondes alors que le temps d'accès de la mémoire principale est 1000 nanosecondes. Sur la figure, on voit que la mémoire auxiliaire 10 est subdivisée en quatre sections 11-14 correspondantes aux quatre mots d'un bloc. N'importe quel bloc de quatre mots de la mémoire auxiliaire peut être lu en appliquant une adresse sur des lignes 15. Le contenu des quatre mots de l'emplacement adressé apparaît en parallèle sur quatre groupes de lignes 17 à 20. De plus, les quatre mots du bloc adressé peuvent être chargés en parallèle à partir de la sortie 102 de la mémoire principale qui aboutit à un faisceau de lignes 21. Les scrties 17 à 20 sont appliquées à des portes ET 22 à 25 elles-mêmes reliées par des liaisons 27 à 30 à un registre tampon d'instruction 26 ayant quatre emplacements de mot 31 à 3 resrectlvement associés aux liaisons 27 à 30. Chaque emplacement de mot du registre tampon est partagé en deux moitiés M et L correspondant respectivement au demi-mot supérieur et au demi-mot inférieur dans l'ordre des poids. Le sorties M et L des quatre emplacements de mot sont appliquées à deux ensembles de conditionnement 35 et 36 comprenant chacun des portes OU pour 16 bits alimentée par huit groupers 4 à H de portes ET pour 16 bits recevant les sorties M et L du registre 26. L'ensemble 35 reçoit dans l'ordre les sorties du registre 26, c'est à dire que 31M est reliée à 35A, et ainsi de suite jusqu'à 34L qui est reliée à 35H.Pour l'ensemble 36, les connexions sont d'un cran, c'est à dire que 31L est reliée à 36A et 34L à 36G, 31M étant reliée à 3611. Avec ce système de connexion, lorsqu'une paire homologue de portes ET A à H est simultanément validée dans les ensembles 35 à 36, deux demi-mots consécutifs du registre 26 sont tranférés aux sorties 37 et 38 des ensembles de conditionnement 35 et 36. On constatera que pour lire séquentiellement des instructions de demi-longueur contenues dans le registre 26, il suffit de valider tour à tour les portes ET A à H de l'ensemble 35. Dans ce cas, les instructions apparaissent à la sortie 37 et la sortie 38 qui n'est pas utilisée est bloquée par une porte ET 39. Lorsque le registre 26 contient une séquence d'instructions de longueur normale, il faut valider une porte ET sur deux des deux ensembles 35 et 36 pour que les instructions apparaissent tour à tour aux deux sorties 37, 38 (la porte 39 étant validée). Par exemple, si le registre 26 contient quatre instructions occupant chacune un emplacement de mot 31 à 34, ces instructions pourront être lues en validant tour à tour les portes A, C, E et G des deux ensembles. Le circuit de validation sélective des portes A à H comprend un décodeur 40 fournissant huit sorties A à H correspondant aux portes ET des ensembles de conditionnement 35, 36. Le décodeur 40 utilise trois bits de l'adresse d'instruction pour identifier chaque demi-mot à l'intérieur d'un bloc de quatre mots. Ces trois bits sont mémorisés dans un registre 41 dont la sortie 42 est appliquée au décodeur 40. Le contenu du registre 41 est également appliqué à un additionneur 43 qui incrémente sa valeur de 1 ou de 2 (001 ou 010 en binaire) selon la longueur des instructions traitées. La sortie de l'additionneur 42 est appliquée à un autre registre 44 dont la sortie 45 est reliée à travers une porte ET 46 à une porte OU 47 associée à l'entrée du registre 41. La porte ET 46 est validée à chaque cycle de l'unité de recherche d'instruction, sauf en cas de branchement interrompant la séquence normale des instructions. L'ensemble constitué par les registres 41 et 44, l'additionneur 43 et les portes 46 et 47 se comporte comme un compteur séquentiel dont l'incrément est 1 ou 2 selon la longueur de l'instruction traitée. Le décodeur 40 convertit le contenu du registre 41 en un signal de validation appliqué à l'une des lignes A à H. Les lignes A à H sont excitées séquentiellement ou de deux en deux selon la nature des instructions, ce qui permet de traiter des séquences mixtes d'instructions courtes et longues. Ainsi, le décodeur 40 sert à adresser séquentiellement les instructions qui ont été chargées dans le registre tampon 26 et il-est évident que la relative simplicité de la logique de comptage et de sélection des sorties 37 et 38 permet un adressage ultra-rapide. Comme indiqué schématiquement sur la figure, le registre tampon 26 est divisé par une "cloison" 50 en une première section comprenant le premier emplacement# de mot 31 et en une secsn- de section comprenant les trois autres emplacements de mot 32 à 34. Pendant l'exécution des instructions de la seconde section, une porte ET 22 est validée pour commander le transfert du premier mot du bloc suivant de la mémoire auxiliaire 10 au premier emplacement 31 du registre tampon. Evidemment, si le nouveau bloc n'est pas présent dans la mémoire auxiliaire, le transfert est retardé jusqu'à ce qu'il ait été extrait de la mémoire principale. Cette recherche des blocs sera décrite plus loin.De même, pendant l'exécution de l'instruction contenue dans l'emplacement 31, les portes ET 23 à 25 sont validées pour commander le chargement de la seconde section 32 à 34 du registre tampon avec les trois mots restants du bloc suivant de la mémoire auxi- liaize 10. Normalement, c'est à dire en l'absence d'une instruction de branchement, ces trois mots sont déjà présents dans la mémoire auxiliaire dans laquelle ils ont éventuellement été transférés à partir de la mémoire principale pendant l'exécution du bloc précédent. Il est évident que la divisicn du registre tampon 26 en deux parties inégales ménagent une période plus longue pour le chargement du premier mot d'un bloc d'instructions car c'est à ce point que la probabilité d'attente est la plus grande et non pas lors du chargement des trois autres mots du bloc. Les portes ET 22 et 23 à 25 sont respectivement commandées par des signaux de validation api'tiqués à des lignes 51 et 52 par des portes OU 53 et 54. La porte OU 53 réunit les sorties A et 3 du décodeur 40, alors que la porte OU 54 réunit les sorties C à H de ce décodeur. On verra que ceci permet de valider les portes 22 à 25 de la manière indiquée ci-dessus. L'adressage normal en séquence des blocs d'instructions se déroule de la manière suivante. L'adresse du bloc en cours d'exécution est mémorisée dans un registre d'instruction "actuelle" 67 Cette adresse est appliquée par une liaison 66 à un additionneur 91 qui l'incrémente d'une unité avant de l'appliquer à une porte ET 90. La porte 90 est validée au début de l'analyse de la seconde section du registre tampon 26 au moyen d'un signal de la porte OU 54, de façon à laisser passer l'adresse de bloc incrémentée vers une porte OU 80 qui constitue l'entrée d'un registre de "prochaine instruction" 70. Le contenu du registre 7O est ultérieurement transféré dans le registre d'instruction actuelle 67 à travers une porte ET 68. La répétition de ce cycle fournit une séquence d'adresses de bloc consécutives. L'adresse de bloc contenue dans le registre 70 est transmise par une liaison 76 à une mémoire adressable par son contenu ou mémoire associative 71 qui contient une table des adresses des blocs présents dans la mémoire auxiliaire 10. L'adresse de bloc présentée sur les lignes 76 est recherchée dans la table des adresses et si elle y figure, la mémoire associative 71 indique l'emplacement du bloc correspondant dans la mémoire auxiliaire 10. Cette adresse est appliquée à l'entrée de sélection 15 de la mémoire auxiliaire 10 pour provoquer le transfert dans le registre tampon 26 du contenu de l'emplacement désigné (voir plus haut). Par contre, si l'adresse de bloc ne figure pas dans la mémoire auxiliaire, un signal apparaît sur une ligne 85 et valide une porte ET 84. La porte 84 permet le transfert de la nouvelle adresse de bloc à l'entrée de sélection 101 de la mémoire principale 100. Le bloc demandé apparaît à la sortie 102 de la mémoire principale et est chargé dans l'un des emplacements de la mémoire auxiliaire à la place d'un bloc qui est détruit. Le nouveau bloc est ensuite lu et transféré dans le registre tampon 26 comme dans le cas précédent. La sélection du bloc à détruire dans la mémoire auxiliaire est assurée par un mécanisme de pointeur de remplacement qui est décrit en détail dans la demande de brevet français 75/ déposée ce même jour par la demanderesse pour "Processeur de données en mode pipeline". Schématiquement, ce circuit comprend un compteur qui indique le premier emplacement à surcharger dans la mémoire auxiliaire 10. Après une opération d'écriture ou de lecture dans cet emplacement, le compteur est incrémenté. Son contenu indique donc en permanence l'emplacement du bloc le plus anciennement utilisé. Lorsque un bloc est transféré de la mémoire principale à la mémoire auxiliaire, son adresse est évidemment inscrite dans la case correspondante de la table de la mémoire associative. Comme indiqué ci-dessus, les blocs d'instructions sont normalement adressés en séquences. Cependant, en cas de branchement ou d'interruption, il y a rupture de la séquence normale des instructions. Dans ces conditions, la porte ET 90 est bloquée pour inhiber la transmission de l'adresse normalement incrémentée par la porte OU 80. Dans le cas d'un branchement une uneautre porte ET 78 est validée pour laisser passer vers la porte OU 80 une adresse de branchement présentée sur une liaison 58. La porte ET 68 est également validée pour que la nouvelle adresse figure dans les registres 70 et 67. De même, dans le cas d'une interruption (INT), une porte ET 79 est validée pour laisser passer vers la porte OU 80 une adresse d'interruption présentée sur une liaison 59. En plus des adresses de bloc de branchement et d'interrup tion, les liaisons 58 et 59 fournissent une adresse de mot indiquant celui des quatre mots du bloc adressé qui contient la première instruction à exécuter. Ces adresses de mot sont respectivement transmises par des liaisons 60 et 61 à des portes ET 62 et 63 dont les sorties 64 et 65 sont reliées à des entrées de la porte OU 47. Pendant l'exécution des instructions en séquence normale, la porte ET 46 est validée et les portes 52 et 63 sont bloquées. En cas de branchement, c'est la porte 62 qui est validée à la place de la porte 46 pour transférer la nouvelle adresse de mot dans le registre 41. De même, en cas d'interruption, c'est la porte 63 qui est validée à la place de la porte 46. Dans la description qui précède, on a vu que le registre de prochaine instruction 70 était chargé au début de l'analyse de la plus grande section 32 à 34 du registre 26 de façon à déclencher le plus tôt possible la recherche du nouveau bloc d'instruction dans la mémoire principale s'il ne figurait pas déjà dans la mémoire auxiliaire. En pratique, le registre 70 peut être chargé à un instant quelconque après le transfert des instructions dans la section 32 à 34 du registre tampon, et notamment pendant l'analyse de la section 31. Il va de soi que la description précédente n'est nullement limitative et qu'on pourra y apporter diverses modifications ou variantes entrant dans le cadre et dans l'esprit de l'invention. E V E N D I C A T I O N S Dispositif informatique caractérisé en ce qu'il comprend une mémoire principale contenant des instructions de programme sous la forme d'une séquence de blocs de plusieurs mots, une mémoire auxiliaire dont le temps d'accès et la capacité sont inférieurs à ceux de la mémoire principale, un registre tampon d'instructions ayant une capacité d'un bloc et partagé en deux sections d'inégale longueur, des circuits analysant répétitivement le contenu du registre tampon selon une séquence déterminée pour en extraire une série d'instructions à exécuter, des circuits approximativement déclenchés au début de l'analyse de la plus grande section du registre tampon pour adresser le bloc suivant de la séquence et pour lancer la recherche et le transfert en parallèle des mots correspondants de la mémoire principale à la mémoire auxiliaire si le bloc ne figure pas déjà dans cette dernière, des circuits fonctionnant pendant l'analyse de la plus grande section du registre tampon pour écrire une partie correspondante du bloc adressé dans la plus petite section, et des circuits fonctionnant pendant la période d'analyse de la plus petite section du registre tampon pour transférer le reste du bloc adressé dans la plus grande section du registre tampon. 2. Dispositif selon la revendication 1, caractérisé en ce que les circuits d'analyse du registre tampon sont capables d'analyser des segments de longueur variable pour lire dans le registre tampon des instructions de différentes longueurs. Dispositif selon l'une ou l'autre des revendications 1 et 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 des blocs présents dans la mémoire auxiliaire, une adresse de nouveau bloc étant présentée à la mémoire associative pour accéder à l'emplacement correspondant de la mémoire auxiliaire si ladite adresse de bloc figure dans la table, ou pour provoquer la recherche de ce bloc dans la mémoire principale et son transfert à la mémoire auxiliaire.