Brevet FR2477301A1 — publié le 19810904

"Sous-système de traitement pour un système d'ordinateur, et _sn- circuit logique de Drélè-vement" La présente invention concerne les circuits intermédiaires assurant le transfert d'instructions de programme d'ordinateur d'une mémoire vers un processeur d'instructions et elle porte plus particu- lièrement sur des circuits qui découplent la largeur du bus de contrô- leur de mémoire par rapport à la largeur du bus de processeur d'ins- tructions. L'industrie des semiconducteurs a bénéficié récemment d'énor- mes progrès technologiques. La fabrication en masse de micro- processeurs extrêmement perfectionnés a constitué l'un des développe- ments les plus spectaculaires de l'industrie des semiconducteurs.Ces microprocesseurs accomplissent pratiquement toutes les fonctions qui sont accomplies par les unités centrales d'ordinateurs beaucoup plus grands. Un microprocesseur peut être combiné avec quelques autres circuits intégrés pour former un système de micro-ordinateur puis- sant mais néanmoins économique dont les possibilités rivalisent avec celles de systèmes d'ordinateur gros et coûteux fabriqués il y a seulement quelques années. Les premiers microprocesseurs étaient limités en ce qui concerne la quantité d'information qui pouvait être transférée simul- tanément en parallèle vers eux ou à partir d'eux. Par exemple, les largeurs de bus d'adresse et de données étaient habituellement limi- tées de façon à permettre seulement le transfert simultané de 8 bits (c'est-à-dire 1 octet) entre le microprocesseur et d'autres éléments du système de micro-ordinateur. Cette restriction sur la largeur de bus constituait une limitation importante des possibilités des micro- processeurs. Au moment o les premiers microprocesseurs ont été mis sur le marché, un grand système d'ordinateur de type caractéristique était équipé d'une unité centrale avec des largeurs de bus comprises de façon caractéristique dans la plage de deux à huit octets. Pour offrir un jeu d'instructions puissant et perfectionné, les concepteurs de microprocesseurs ont développé des jeux d'ins- tructions comprenant des instructions de plusieurs longueurs, c'est-à- dire de un à trois octets. Les instructions à plusieurs octets néces- sitent le prélèvement séquentiel du nombre d'octets approprié dans la mémoire de programme. Le prélèvement séquentiel des octets formant une seule instruction prend un temps important, ce qui limite la cadence d'exécution des instructions. Une instruction à un seul octet, ne nécessitant qu'un seul prélèvement dans {a mémoire de programme,pour- rait être exécutée en une durée beaucoup plus courte. Pour accélérer l'exécution des instructions, un jeu d'instructions de microprocesseur est conçu de façon que les instructions à un seul octet accomplissent le plus grand nombre possible des fonctions de traitement qui sont les plus fréquemment désirées. Les fonctions de traitement moins fré- quemment utilisées sont alors affectées aux instructions plus longues. De telles conceptions des jeux d'instructions ont optimisé l'ar- chitecture du système de microprocesseur et ont compensé les largeurs de bus limitées des dispositifs. De ce fait, la capacité de traitement des systèmes de micro-ordinateur a commencé à s'approcher de celle de systèmes d'ordinateur plus grands ayant des largeurs de bus notable- ment supérieures. Un grand volume de logiciel a été écrit pour les microprocesseurs, du fait de leur grande diffusion. De nombreuses sociétés ont consacré beaucoup de temps et d'argent au logiciel relatif à des microproces- seurs particuliers. Les utilisateurs de microprocesseurs ayant une largeur de bus d'un octet désirent maintenir la compatibilité du logiciel entre ces premières générations de microprocesseurs et les générations suivantes. Du fait des progrès de la technologie des semi- conducteurs, des microprocesseurs ayant des largeurs de bus de deux octets sont commercialisés à l'heure actuelle. On s'attend à trouver dans un futur proche des microprocesseurs ayant des largeurs de bus de quatre octets. Néanmoins, ces microprocesseurs perfectionnés ren- contreront une résistance sur le marché, à moins qu'ils soient capa- bles d'exécuter le logiciel conçu à l'origine pour être exécuté sur des microprocesseurs ayant une largeur de bus d'un octet. Par exemple, le langage informatique Pascal a été développé dans les années 1970 pour être utilisé essentiellement avec les microproces- seurs. Le Pascal est un langage évolué qui est compilé de façon caractéristique en un "Code P". La définition du Pascal et de son Code P'a été plus ou moins normalisée. Ceci permet d'exécuter un programme Pascal sur n'importe quel ordinateur capable d'exécuter le Code P ou qui comporte un programme permettant de l'interpréter. Le Code P contient des instructions d'une longueur de un à quatre octets. Lorsqu'un processeur d'ordinateur exécute le Code P, soit directement soit par interprétation, il doit traiter un octet à la fois. Si le système d'ordinateur a une largeur de bus permettant de transférer plus d'un octet à la fois entre la mémoire de programme et le proces- seur, on rencontre une difficulté pour "analyser" les octets multiples qui sont transférés simultanément dans les unités d'octet qui forment les instructions du Code P. Il n'est pas souhaitable de transférer plusieurs octets en parallèle vers le microprocesseur et de faire en sorte que ce dernier les rejette tous, sauf le seul octet de Code P qu'il désire. Si on faisait ceci, on annulerait l'avantage d'une largeur de bus supé- rieure,-c'est-à-dire le fait qu'il faut un plus petit nombre d'accès en mémoire, prenant du temps. Un but de l'invention est donc de réaliser un circuit logique numérique qui assure l'interface entre un processeur ayant un jeu d'instructions dont les instructions sont des multiples d'une première taille, et un système d'ordinateur ayant un système de bus permettant *15 des transferts d'instructions de programme d'une seconde taille. L'in- vention a également pour but de réaliser un circuit logique de prélè- vement d'instructions qui assure un enregistrement temporaire des instructions prélevées dans une mémoire de programme et qui les four- nit comme le demande le processeur. L'invention a également pour but de réaliser un système d'ordinateur dans lequel les longueurs d'ins- truction possibles sont indépendantes de la largeur de bus entre le processeur et les parties restantes du système d'ordinateur. Le circuit logi4ue numérique décrit ici permet d'atteindre ces buts de l'invention, ainsi que d'autres. Certaines positions choisies d'un registre d'instruction sont chargées à partir de données transférées depuis la mémoire de programme. Un circuit de commande détermine quels emplacements du registre d'instruction doivent être chargés par chaque partie du programme prélevée dans la mémoire du programme. Le circuit de commande transfère également de façon commandée le contenu d'autres parties choisies du registre d'instruction vers un processeur, à la demande de ce dernier. Il existe un registre d'adresse d'instruction qui a pour fonction de conserver l'adresse courante dans la mémoire de la partie du programme qui est prélevée. Ce registre contient l'adressedans la mémoire de programme, de la partie courante du programme qui a été prélevée en dernier. Le circuit de commande incrémente ce registre lorsque c'est nécessaire pour demander la partie suivante du programme, à partir de la mémoire de programme. Le circuit de commande conserve un registre d'état de translation. Ce registre indique quelles parties des données contenues dans le registre d'instruction doivent être transférées ensuite vers le processeur et il indique si des données de programme supplémentaires doivent être prélevées dans la mémoire pour être placées dans le registre d'instruction. Un aspect de l'invention porte sur un sous-système de traite- ment pour un système d'ordinateur exécutant un programme en Code P du langage Pascal, dans lequel le Code P comprend des instructions d'une longueur de 1,2,3 et 4 octets, le système comprenant une mémoire qui enregistre le programme sous la forme d'une séquence de mots de deux octets, indépendamment de la longueur de chaque instruction indivi- duelle, caractérisé en ce qu'il comprend: un circuit logique de traitement d'instruction qui produit une demande de prélèvement pour obtenir l'octet suivant d'une instruction dans la séquence de pro- gramne et qui, à la réception du premier octet d'une instruction du Code P, produit 0,1,2,ou 3 demandes de prélèvement supplémentaires, conformément à ce qui est nécessaire pour obtenir l'instruction com- plète; un registre d'instruction qui enregistre un mot à deux octets obtenu à partir de la mémoire; un-registre d'état de translation qui enregistre un code d'état spécifiant les actions à accomplir pour obtenir et transférer vers le circuit logique de traitement d'instruc- tion l'octet suivant dans la séquence de programme; et un circuit logique de commande qui, lorsqu'il reçoit une demande de prélèvement à partir du circuit logique de traitement d'instruction, (1) prélève dans la mémoire le mot suivant dans la séquence du programme et l'enregistre dans le registre d'instruction si le code d'état spé- cifie que le registre d'instruction ne contient pas l'octet suivant à transférer vers le circuit logique de traitement d'instruction,-(2) transfère du registre d'instruction vers le circuit logique de traite- ment d'instruction l'octet suivant dans la séquence de programme, comme le spécifie le code d'état, et (3) restaure le code d'état pour spécifier les actions à accomplir à la réception de la demande de prélèvement suivante, le sous-système de traitement accomplissant ainsi la commande de prélèvement des instructions de programme indé- pendamment du nombre d'octets dans chaque instruction. Un autre aspect de l'invention poirte sur un circuit logique de prélèvement d'instruction pour un système d'ordinateur comprenant une structure de bus destinée au transfert en parallèle de mots de données de deux octets entre des modules qui lui sont couplés, des moyens de mémoire permettant le prélèvement d'un mot de programme spécifié par une adresse, et un circuit logique de traitement d'ins- truction destiné à produire un signal de demande de prélèvement demandant un octet de programme pour l'exécution, caractérisé en ce qu'il comprend: un registre d'instruction couplé au bus du système et conservant un mot de programme prélevé dans les moyens de mémoire; un registre d'adresse qui enregistre l'adresse du mot de programme qui est prélevé dans les moyens de mémoire pour le registre d'ins- truction; un multiplexeur qui est couplé au registre d'instruction et qui applique au circuitela uie de traitement d'instruction le contenu d'un octet choisi d'instruction, comme il est spécifié par un signal de sélection; un registre d'état de translation qui enre- gistre une information spécifiant quel est l'octet de programme con- servé dans le registre d'instruction qui doit être transféré vers le circuit logique de traitement d'instruction, au moment de sa pro- chaine demande de prélèvement; et un circuit logique de prélèvement comprenant (1) des moyens destinés à examiner l'information contenue dans le registre d'état de translation au moment de la réception du signal de prélèvement à partir du circuit logique de traitement d'instruction, pour déterminer la partie d'octet de programme sui- vante à transférer vers le circuit logique de traitement d'instruction, (2) des moyens destinés à modifier le contenu du registre d'ins- truction pour qu'il corresponde à l'adresse, dans les moyens de mémoire, du mot de programme contenant la partie d'octet suivante à transférer vers le circuit logique de traitement d'instruction, à appliquer le contenu du registre d'adresse aux moyens de mémoire,par l'intermédiaire de la structure de bus, pour assurer le prélèvement du mot de programme adressé, et à transférer vers le registre d'ins- truction le mot de programme prélevé; (3) des moyens destinés à pro- duire le signal de sélection appliqué au multiplexeur, afin de sélectionner pour le transfert vers le circuit logique de traitement d'instruction l'octet de programme contenu dans le registre d'ins- truction qui est spécifié par le registre d'état de translation,et (4) des moyens destinés à restaurer le contenu du registre d'état de translation pour spécifier l'octet de programme suivant à trans- férer vers le circuit logique de traitement d'instruction, ce qui a pour effet d'appliquer au circuit logique de traitement d'instruction une séquence d'octets successifs différents du programme, sous l'ef- fet des signaux de prélèvement successifs provenant du circuit logique de traitement d'instruction. Un autre aspect de l'invention porte sur un circuit logique de prélèvement pour un système d'ordinateur comprenant des moyens de mémoire destinés à enregistrer des données de programme et à trans- férer en parallèle des parties à m bits des données de programme spécifiées par un signal d'adresse, sous l'effet de la réception d'un signal de lecture, et un processeur d'instruction qui produit un signal de prélèvement lorsque des parties à n bits des données de programme, avec n # m, doivent être transférées vers lui en parallèle, caractérisé en ce qu'il comprend: des moyens d'enre- gistrement d'adresse qui enregistrent une adresse de programme spécifiant la partie suivante à m bits des données de programme dans la séquence de programme et qui appliquent l'adresse de programme aux moyens de mémoire, sous la forme du signal d'adresse; un circuit de registre d'instruction qui enregistre dans des positions de registre sélectionnées les parties à m bits des données de pro- gramme qui sont transférées par les moyens de mémoire et qui, à la réception d'un signal de commande de sortie spécifiant certaines de ses positions de registre, transfère en parallèle le contenu des positions de registre spécifiées vers le processeur d'instruc- tion; un registre d'état qui conserve une information spécifiant quelles sont, éventuellement, les positions du circuit de registre d'instruction qui contiennent la partie de programme suivante à n bits qui doit être transférée vers le processeur d'instruction; et des moyens de commande couplés au registre d'état, au circuit de registre d'instruction et aux moyens d'enregistrement d'adresse,qui (1) examinent le registre d'état, à la réception du signal de pré- lèvement à partir du processeur d'instruction, pour déterminer les positions du circuit de registre d'instruction qui enregistrent la partie suivante à n bits des données de programme à transférer vers le processeur d'instruction, (2) appliquent le signal de lecture aux moyens de mémoire si l'information du registre d'état indique que le circuit de registre d'instruction ne contient pas la partie de données de programme à n bits suivante, afin que les moyens de mémoire trans- fèrent vers le circuit de registre d'instruction la partie de données de programme à m bits suivante dans la séquence, et (3) appliquent le signal de commande de sortie au circuit de registre d'instruction pour provoquer le transfert en parallèle de la partie de données de programme à n bits suivante dans la séquence, vers le processeur d'instruction L'invention sera mieux comprise à la lecture de la description qui va suivre d'un mode de réalisation donné à titre non limitatif.La suite de la description se réfère aux dessins annexés sur lesquels La figure 1 est un schéma synoptique d'un système de micro- ordinateur caractéristique utilisant un mode de réalisation de l'in- vention. La figure 2 est une représentation schématique des étapes de traitement accomplies par un système de micro-ordinateur Pascal pour traiter un programme. Les figures 3A-3C représentent schématiquement le transfert de parties consécutives d'un programme de la mémoire de programme vers un processeur d'instruction. La figure 4 est un schéma logique d'un mode de réalisation préféré de l'invention dans lequel la largeur du bus branché à la mémoire est de deux octets et la largeur du bus branché au processeur d'instruction est d'un octet. La figure 5 est un organigramme qui illustre le fonctionnement du circuit de la figure 4 dans le contexte d'un système de micro- ordinateur tel que celui qui est représenté sur la figure 1. La figure 1 est une représentation schématique d'un système de micro-ordinateur caractéristique utilisant les principes de l'in- vention, tel que le processeur de la marque Pascal Microengine,fabri- qué par la firme Western Digital Corporation, Newport Beach, Califor- nie, qui exécute le Code P du langage Pascal. Le système de micro- ordinateur 101 comporte un bus de système 102 qui transfère les don- nées entre ses diverses modules de circuits. Le bus de système 102 permet le transfert parallèle simultané de l'information. Le processeur 103 comporte un circuit logique de traitement dlinstruction 105 et le circuit logique de prélèvement d'instruction 104 sur lequel porte l'invention. Le circuit logique de traitement d'instruction 105 accom- plit les opérations nécessaires pour exécuter les instructions du programme d'ordinateur particulier qui est exécuté. Le circuit logique de prélèvement d'instruction 104 corres- pondant à l'invention peut être utilisé avec un bus de système qui transfère n'importe quel nombre arbitraire m de bits de données en parallèle et avec un circuit logique de traitement d'instruction 105 vers lequel on doit transférer n'importe quel nombre arbitraire n de bits de données de programme, lorsqu'il demande la partie suivante des données de programme. Dans le mode de réalisation préféré, le bus de système 102 transfère 16 bits, c'est-à-dire deux octets, en parallèle, et le circuit logique de traitement d'instruction 105 demande des parties de données de programme à 8 bits (un octet). Le circuit logi- que de prélèvement d'instruction 104 fait fonction de mémoire inter- médiaire pour la circulation des données de programme à partir de la mémoire de programme 107, par le bus de système d'une largeur de deux octets, vers le circuit logique de traitement d'instruction 105 qui a une largeur d'un seul octet. Les instructions de Code P à exécuter sont enregistrées dans la mémoire 106. On peut se représenter la mémoire 106 comme étant divisée en une mémoire de programme 107 et une mémoire de données 108, bien qu'il ne faille pas considérer que la mémoire 106 peut être séparée physiquement en une mémoire de programme 107 et une mémoire de données 108. Un contrôleur de mémoire 129 assure l'interface entre la mémoire 106 et le bus de système 102. Le contrôleur de mémoire 129 reçoit des signaux d'adresse qui spécifient quels sont les deux octets particuliers dans la mémoire 106 qui sont adressés par l'inter- médiaire du bus 102. D'autres signaux de commande transmis par le bus 102 spécifient si les octets adressés doivent être prélevés ou modi- fiés. Le circuit logique de prélèvement d'instruction 104 conserve l'adresse de la partie à m bits suivante du programme situé dans la mémoire de programme 107 qui doit être traitée par le circuit logique de traitement d'instruction 105. Il transmet l'adresse appropriée au contrôleur de mémoire 129 par l'intermédiaire du bus de système 102.La partie appropriée des données de programme est prélevé dans la mémoire de programme 107 par le contrôleur de mémoire 129 et elle est achemi- née par le bus 102 vers le circuit logique de prélèvement d'instruction 104. Le circuit logique de prélèvement d'instruction 104 fournit alors au circuit logique de traitement d'instruction 105 la partie à n bits appropriée du programme qui est exécuté. En plus du circuit logique de prélèvement d'instruction 104 et du circuit logique de traitement d'instruction 105, l'exemple de processeur 103 de la figure 4 comporte un circuit d'horloge 109, un circuit logique d'interruption 110 et divers registres 111, accessi- bles par logiciel. Le circuit d'horloge 109 produit des signaux d'hor- loge multiphases destinés à être utilisés pour coordonner les activi- tés du système de micro-ordinateur 101. Le circuit logique d'inter- ruption 110 permet l'interruption par un événement externe du pro- gramme qui est exécuté par le circuit logique de traitement d'ins- truction 105. L'apparition de ces événements externes est notifiée au circuit logique d'interruption 110 par l'intermédiaire du bus de sys- tème 102, à partir de divers contrôleurs de périphériques 112...118. Le système de micro-ordinateur 101 représenté à titre d'exem- ple comprend deux contrôleurs de transmission de type série, 112, 114. Ces contrôleurs 112,114 convertissent les données qu'ils reçoi- vent en format parallèle par le bus de système 102 en un format série, afin de les acheminer vers des dispositifs externes, comme une liaison de transmission 113 ou un terminal d'opérateur 115. Les contrôleurs de transmission série 112,114 convertissent également les données reçues en série à partir de ces dispositifs externes 113, 115 pour leur donner un format parallèle convenant à la transmission vers le bus de système 102. Le système 101 comprend également un contrôleur de transmission parallèle 116. Le contrôleur de transmission parallèle 116 convertit des données sélectionnées qu'il reçoit par le bus de système 102 pour leur donner un format de transmission parallèle approprié afin de les acheminer vers une imprimante 117 ou un autre dispositif de ce type ayant une interface parallèle. Un contrôleur de disque 118 permet de connecter une unité de mémoire à disque 119 au système 101. Cette unité de mémoire 119 permet un accès direct à une grande quantité de données. Le bus de système 102 du processeur de la marque Pascal Microengine mentionné précédemment offre la possibilité de transférer simultanément deux octets de données entre les divers modules qui lui sont connectés. La largeur du bus de système, c'est-à-dire deux octets, offre une amélioration de vitesse considérable par rapport à un système d'ordinateur ayant un bus de système d'une largeur d'un octet. Néan- moins, le circuit logique de traitement d'instruction 105 ne demande qu'un seul octet de programme en Code P à la fois, à partir du circuit logique de prélèvement d'instruction 104. Le bus 120 entre le circuit logique de traitement d'instruction 105 et le circuit logique de pré- lèvement d'instruction 104 a une largeur d'un octet. La figure 2 illustre la circulation de l'information depuis une instruction d'un programme Pascal écrit par un programmeur d'ordina- teur, jusqu'à son traitement par le circuit logique de traitement d'instruction 105. A titre d'exemple uniquement, la représentation schématique faite sur la figure 2 des étapes de traitement accomplies par un système de micro-ordinateur 101 pour exécuter un programme suppose que le système 101 compile les programmes écrits en Pascal pour les transformer en Code P et exécute directement le Code P généré. Naturellement, les principes de l'invention ne s'appliquent pas seule- ment à un tel système d'ordinateur et sont beaucoup plus généraux. On ne doit donc pas limiter le cadre de l'invention à une telle confi- guration. Premièrement, un programmeur génère un programme Pascal 201. Une fois généré, le programme est introduit dans le système de micro- ordinateur 101 par le terminal de données 115. Le Pascal est un langage évolué, c'est-à-dire qu'il n'est pas directement exécuté par un ordi- nateur, mais doit être traduit en Code P qui est le jeu d'instructions normalisé de niveau inférieur dans lequel sont convertis les programmes Pascal. Cette opération de traduction du programme Pascal 201 en Code P est accomplie par un programme compilateur écrit préalablement. La compilation 202 du programme Pascal 201 donne une chaîne d'octets 203 d'instructions en Code P. La figure 2 indique qu'une partie du programme Pascal 201 a été décomposée en instructions A à G. L'instruction A est une ins- truction de Code P à trois octets, chaque octet étant désigné par un indice approprié. De façon similaire, l'instruction B a une longueur de deux octets et l'instruction C a une longueur d'un octet. il Une fois que le compilateur a formé cette chaîne d'octets de Code P, 203, elle est enregistrée dans la mémoire de programme 107. A titre de définition, on considérera que l'unité de mémoire adressable de la mémoire de programme 107 est un mot de deux octets: l'octet d'ordre supérieur (H) et l'octet d'ordre inférieur (L). Comme il est indiqué sur la figure 2, A1 est enregistré dans le mot 0, octet infé- rieur. Des octets supplémentaires de la chaîne d'octets de Code P,203, sont organisés en mots de deux octets et sont enregistrés dans des positions consécutives de la mémoire de programme 107. Lorsque le programme est exécuté, le circuit logique de prélè- vement d'instruction 104 demande par l'intermédiaire du bus de système 102 le contenu du mot particulier de la mémoire de programme 107 qui contient l'octet suivant à exécuter dans la chaîne d'octets de Code P, 203. Le contrôleur de mémoire 129 transfère le mot adressé vers le circuit logique de prélèvement d'instruction 104 par le bus de sys- tème 102. Le circuit logique de prélèvement d'instruction 104 transmet alors au circuit logique de traitement d'instruction 105 l'octet suivant à exécuter, par le bus 120. Comme on l'a indiqué précédemment, alors que dans ce mode de réalisation le bus de système 102 transfère deux octets en parallèle, le bus 120 allant du circuit logique de pré- lèvement d'instruction 104 au circuit logique de commande de traite- ment d'instruction 35 ne transfère qu'un seul octet en parallèle. Les figures 3A-3C représentent schématiquement la circulation de parties d'instructions de programme dans le circuit logique de prélèvement d'instruction 104 d'un mode de réalisation préféré dans lequel le bus de système a une largeur de 16 bits et le circuit logi- que de traitement d'instruction 105 a une largeur de bus de 8 bits.Un registre d'instruction 301 enregistre un mot du programme qui est exécuté. Ce registre 301 est divisé en un sous-registre d'octet supé- rieur 301H et un sous-registre d'octet inférieur 301L. Le registre d'instruction 301 est branché à un multiplexeur 302. Le circuit logi- que de commande de prélèvement 303 indique au multiplexeur 302 si c'estl'octet supérieur ou l'octet inférieur du registre d'instruction 301 qui doit être transféré vers un registre d'octet d'instruction 304. Le registre d'octet d'instruction 304 est branché au circuit logique de commande de processeur 105 par le bus 120 et il applique au circuit logique 105 un seul octet à la fois. Le circuit logique de commande de prélèvement 303 comprend un fegistre d'état de transla- tion 305 (ou en abrégé "R E T"). Le R E T 305 enregistre des indica- teurs d'état qui sont utilisés par le circuit logique de commande de prélèvement 303 pour commander le multiplexeur 302. Dans le mode de réalisation préféré, le registre d'état de translation 305 enregistre trois bits de données qui sont désignés par RETO, RET1 et RET2. Les figures 3A-3C indiquent l'effet que des valeurs particu- lières enregistrées dans le RET 305 du mode de réalisation préféré ont sur la commande du transfert de l'instruction de programme de la mémoire de programme 107 vers le circuit logique de traitement d'ins- truction 105, par l'intermédiaire du circuit logique de prélèvement d'instruction 104. Le circuit logique de commande de prélèvement 303 restaure les valeurs contenues dans le RET 305 après que chaque octet de programme a été transféré vers le circuit logique de traitement d'instruction. Sur les figures 3A-3C, les nouvelles valeurs enregis- trées dans le RET 305 après qu'un octet a été transféré vers le cir- cuit logique de traitement d'instruction 105 par le circuit logique de commande de prélèvement 305 sont indiquées au-dessous des valeurs initiales affectées. Sur les figures 3A-3C, un "0" dans une position d'enregistrement du RET 305 indique qu'un bit zéro doit être présent dans la position considérée, un "1" indique qu'un bit un doit être présent, et un "X" indique qu'un bit zéro ou un peut être présent. Sur la figure 3A, le RET 305 contient initialement la valeur "XOO". Une telle valeur indique que le registre d'instruction 301 con- tient une partie du programme qui doit être appliquée ensuite au cir- cuit logique de traitement d'instruction 105. Plus précisément, l'oc- tet supérieur, qui se trouve dans le sous-registre d'instruction 301H, doit être appliqué au circuit logique de traitement d'instruction 105 au moment de la réception à partir de ce dernier d'un signal de pré- lèvement demandant l'octet suivant. Par conséquent, à la réception de la demande de prélèvement, le circuit logique de commande de prélève- ment 303 commande le multiplexeur 302 de façon à transférer le contenu de l'octet supérieur du registre d'instruction 301 vers le registre d'octet d'instruction 304, o il est disponible pour le circuit logi- que de traitement d'instruction 105. Une fois que ceci a été fait, le circuit logique de commande de prélèvement 303 met à jour les indica- teurs situés dans le RET 305, en leur donnant les valeurs "010". Sur la figure 3B, le RET 305 a la vNaleur "XO1". Cette valeur indique au circuit logique de commande de prélèvement 303 que le registre d'instruction 301 ne contient pas de parties du programme devant être transférées vers le circuit logique de traitement d'ins- truction 105. Par conséquent, le circuit logique de commande de pré- lèvement 303 déclenche une opération de lecture en mémoire pour trans- férer un mot du programme de la mémoire de programme 107 vers le registre d'instruction 301. De plus, ces valeurs du RET indiquent qu'après la mise à jour du registre d'instruction 301 avec le mot suivant des données de programme, l'octet supérieur de ce registre doit être transféré vers le registre d'octet d'instruction 304. Le circuit logique de commande de prélèvement 303 applique le signal de commande approprié au multiplexeur 302 pour produire ce transfert.Le circuit logique de commande de prélèvement 303 positionne ensuite à "010" les valeurs contenues dans le registre d'état de translation 305. Sur la figure 3C, le registre d'état de translation a la valeur "X1XM'. Cette valeur indique au circuit logique de commande de prélè- vement 303 que le registre d'instruction 301 ne contient pas la par- tie du programme qui doit être appliquée ensuite au circuit logique de commande de traitement d'instruction 105. Par conséquent, le cir- cuit logique de commande de prélèvement 303 déclenche une opération de lecture en mémoire qui provoque le transfert d'un mot du programme de la mémoire de programme 107 vers le registre d'instruction 301. * Une fois que ceci a été effectué, le circuit logique de commande de prélèvement 303 applique au multiplexeur 302 un signal de commande qui provoque le transfert vers le registre d'octet d'instruction 304 de la valeur contenue dans le sous-registre d'octet inférieur 301L. Une fois que ce transfert a été effectué, le circuit logique de com- mande de prélèvement 303 repositionne à "100" les valeurs contenues dans le registre d'état de translation 305. Le tableau A, en annexe, montre les principales décisions logi- ques et les principales valeurs de registre du circuit logique de prélèvement d'instruction 104 de la figure 3 pendant le transfert de la chaîne d'octets de Code P, 203, de la figure 2. Chaque ligne du tableau A correspond à une seule demande de prélèvement émise par le circuit logique de traitement d'instruction 105. A titre d'exemple, on suppose que l'instruction à deux octets B, enregistrée dans les mots 1 et 2 de la mémoire de programme 107, est une instruction de commande de transfert qui provoque la poursuite de l'exécution du programme à l'instruction à deux octets F, enregistrée dans les mots 5 et 6 de la mémoire de programme 107. On suppose que le RET 305 a été initialisé à "X10" par d'autres parties du système de micro-ordinateur 101. Sous l'effet de la première demande de prélèvement produite par le circuit logique de traitement d'instruction 105, le circuit logique de commande de prélèvement 303 examine le RET 305. Comme il est indiqué sur la figure 3C, un mot provenant de la mémoire de programme 107 est trans- féré vers le registre d'instruction 301. On suppose que le mot zéro de la mémoire de programme 107 contient les deux octets suivants à exécuter dans la chaîne d'octets de Code P,203. Le contenu du registre d'instruction est donc fixé à A2A1. En outre, comme il est indiqué sur la figure 3C, l'octet inférieur, c'est-à-dire A1, est transféré vers le registre d'octet d'instruction 304, dans lequel il est disponible pour le circuit logique de traitement d'instruction 105, pour l'exécution. Le RET 305 est ensuite positionné à "100". A la réception de la seconde demande de prélèvement prove- nant du circuit logique de traitement d'instruction 105, l'octet su- périeur, c'est-à-dire A2, du registre d'instruction 301 est transféré vers le registre d'octet d'instruction 304. Le RET 305 est ensuite positionné à '010". De façon similaire, les troisième et quatrième demandes de prélèvement émises par le circuit logique de traitement d'ins- truction 105 commandent le transfert du contenu du mot 1 de la mémoire de programme 107 vers le circuit logique de traitement d'ins- truction 105, un octet à la fois. La cinquième demande de prélèvement émise par le circuit logique de traitement 105 provoque le transfert du mot 2 de la mémoire de programme 107 vers le registre d'instruc- tion 301. L'octet inférieur, contenant B2, du registre d'instruction 301, est transféré vers le registre d'octet d'instruction 304 pour être traité par le circuit logique de traitement d'instruction 105. Comme mentionné précédemment, on suppose que l'instruction B provoque un transfert de commande vers l'instruction F qui est enre- gistrée dans le mot 5 de la mémoire de programme 107. Le circuit logique de traitement d'instruction 105exécute une instruction de transfert de commande en positionnant de façon appropriée le RET 305 et l'adresse de mot d'instruction de façon à provoquer la poursuite de l'exécution du programme à l'emplacement désiré dans la chaîne d'octets de Code P. 203. Comme il est indiqué à la ligne 6, le cir- cuit logique de traitement d'instruction 105 provoque le transfert de commande en positionnant l'adresse-de mot d'instruction à 5 et le RET 305 a "101". Comme il est indiqué sur la figure 3B, sous l'effet d'une telle valeur pour le RET 305, le circuit logique de commande de prélèvement 303 demande la lecture d'un mot à partir de la mémoire de programme 107. Par conséquent, le mot 5, ayant la valeur F1E3, est enregistré dans le registre d'instruction 301. De plus, le contenu de l'octet supérieur 30111 du registre d'instruction 301 est ensuite transféré vers le registre d'octet d'instruction 304. On notera que le contenu de l'octet inférieur du registre d'instruction 301 n'est pas transféré vers le registre d'octet d'instruction 304, du fait que l'instruction de transfert de commande a spécifié que l'exécution du programme devait se poursuivre à un octet de Code P qui était enregistré dans l'octet supérieur d'un mot contenu dans la mémoire de programme 107. Lorsque la chaîne d'octets de Code P. 203, est enre- gistrée dans la mémoire de programme 107, la possibilité d'adresser n'importe lequel des octets de Code P impose que, dans certains cas, l'octet de Code P vers lequel s'effectue le transfert se trouve dans l'octet supérieur d'un mot contenu dans la mémoire de programme 107. 2S Dans ce cas, comme il est indiqué sur la figure 3B et à la sixième ligne du Tableau A, un seul des deux octets transférés vers le registre d'instruction 301 est utilisé. Le traitement de la septième demande de prélèvement par le circuit logique de traitement d'instruction 105 est similaire à celui des première, troisième et cinquième demandes de prélèvement. La figure 4 est un schéma logique d'un mode de réalisation préféré du circuit logique de prélèvement d'instruction 104 corres- pondant à l'invention. Le Tableau B donne la liste des codes mnémoni- ques des lignes de signal qui sont utilisées dans le schéma de la figure 4. Le mode de réalisation de la figure 4 est destiné à être utilisé dans un système de micro-ordinateur 101 dans lequel le bus de système 102 transfère 16 bits en parallèle et le circuit logique de traitement d'instruction 105 demande 8-bits de données de programme à la fois. Le circuit d'horloge'109 produit des signaux d'horloge à qua- tre phases. Pendant la première phase, le signal CM1 est à 1, pendant la seconde phase, le signal CK2 est à 1, et ainsi de suite pour les signaux CK3 et CK4. Dans un but de clarté, les parties du circuit logique de prélèvement d'instruction 104 qui forment le circuit logi- que de commande de prélèvement 303 ne sont pas indiquées, à l'excep- tion des registres 301 et 304 et du multiplexeur 302, mais ces parties comprendraient divers registres et portes similaires à ceux représen- tés sur la figure 4. Lorsque le circuit logique de traitement d'instruction 105 demande l'octet suivant de la séquence, il produit une impulsion de démarrage de prélèvement sur la ligne de signal SF. La ligne SF cons- titue une entrée d'une bascule 401. La bascule est restaurée par une ligne de signal C4, qu'on décrira ci-après. La sortie de la bascule 401 est constituée par la ligne de signal F. Lorsque la ligne F est à 1, elle indique qu'un prélèvement d'un octet d'instruction pour le circuit logique de traitement d'instruction 105 est en cours. Le RET 305 comprend trois bascules de retard 406,407,408. Une bascule de retard est une bascule qui conserve son signal de sortie précédent jusqu'à la fin d'une impulsion d'horloge qui charge un nou- est utile veau signal d'entrée. Une telle bagcuIe'/lors4u'on utilise son signal de sortie pour déterminer son signal d'entrée suivant. Chacune des trois bascules de retard 406,... 408 reçoit comme signal d'horloge le signal C3 décrit ci-après. La bascule 408 conserve la valeur du bit 0 du RET 305 et elle applique sa valeur sur la ligne de signal RETO. Les bascules 407 et 406 accomplissent la même fonction pour les bits 1 et 2 du RET 305. Les figures 3A-3C décrivent de façon fonctionnelle l'effet des trois bits du PET 305. Le bit 2 du RET 305 prend la valeur qu'avait le bit 1 pendant le prélèvement précédent d'un octet d'instruction. La ligne RET2 est nécessitée par d'autres circuits dans le système de micro-ordinateur 101, de la marque Pascal Microengine. Le bit 1 du RET 305 détermine si c'est l'octet supérieur 301H (bit 1 = 0) ou l'octet inférieur 301L (bit 1 = 1) du registre d'instruction 301 qui sera transféré vers le registre d'octet d'instruction 304 pour être utilisé par le circuit logique de traitement d'instruction 105.Lors- que le bit 1 du RET 305 est à "1", une opération de lecture en mé- moire est effectuée pour transférer un mot de la mémoire 107 vers le registre d'instruction 301. Lorsque le bit 1 du RET 305 est à 0, le bit 0 du registre d'état de translation 305 détermine si un Mot doit être transféré de la mémoire de programme 107 vers le registre d'ins- truction 301. Si le bit 0 est à 1, le registre d'instruction 301 est mis à jour à partir de la mémoire de programme 107. Comme on le décrira ci-après de façon plus détaillée, la ligne de signal C3, c'est-à-dire la ligne d'entrée d'horloge des bascules du registre d'état de translation 305, n'est à 1 que pendant les étapes finales d'une opération de prélèvement. C'est à ce moment que le registre d'état de translation 305 est mis à jour. Le circuit logique de commande de prélèvement 303 comprend un circuit logique de commande d'état 450 qui positionne le RET 305 à la fin de chaque demande de prélèvement par le circuit logique de traite- ment d'instruction 105, en préparation de la demande de prélèvement suivante. Le circuit logique de commande d'état 450 fait en sorte que le RET 305 contienne l'information appropriée pour déterminer quelle est la partie du registre d'instruction 304 qui doit être transférée ensuite vers le circuit logique de traitement d'instruction 105, et si une lecture de données de programme supplémentaires dans la mémoire de programme 107 sera nécessaire au moment de la réception de la demande de prélèvement suivante provenant du circuit logique de trai- tement d'instruction 105. Dans le mode de réalisation de la figure 4, le circuit logique de commande d'état 450 fonctionne de la manière suivante. Si le cir- cuit logique de traitement d'instruction 105 fait apparaître une demande de prélèvement sur la ligne de signal SF, la ligne de signal F, c'est-àdire la sortie de la bascule 401, est à 1. La sortie de l'inverseur 409 est à 0, ce qui fait passer la bascule 408 à 0. Si aucun prélèvement n'était en cours, la ligne F est à 0, ce qui place à 0 la sortie de l'inverseur 409. Dans ce cas, l'état courant de la ligne RETO est ramené sur la bascule 408, par l'intermédiaire de la porte ET 410, ce qui maintient la valeur du bit 0 du RET 305. L'inverseur 411 et la porte ET 412 accomplissent une fonction similaire pour le bit 1 du RET 305. Cependant,-si la ligne de signal F est à 1, la valeur courante du bit 1 du IET 305 est inversée par l'inverseur 414 et transmise par la porte ET 413. La porte OU 415 combine les signaux de sortie des portes ET 412 et 413 et elle les présente à la bascule 407, en tant que nouvelle valeur pour le bit 1 du RET 305. L'inverseur 416 et la porte ET 417 maintiennent la valeur du bit 2 du RET 305 dans le cas o le circuit logique de traitement d'ins- truction 105.n'a pas demandé un prélèvement d'un octet d'instruction, SI c'est-à-dire/la ligne F est à 0. Si au contraire, la ligne F estàl, la porte ET 418 et la porte OU 419 transmettent la valeur du bit 1 du RET 305 à la bascule 406. En d'autres termes, le bit 2 du RET 305 contient la valeur qu'avait le bit 1 au cours de l'opération de pré- lèvement précédente. Sur la figure 4, le contrôleur de mémoire 129 est branché au circuit logique de prélèvement d'instruction 104 par diverses lignes de signal. Bien que ceci ne soit pas représenté sur la figure 4, ks lignes de signal branchées entre le contrôleur de mémoire 129 et le circuit logique de prélèvement d'instruction 104 font normalement par- tie du bus de système 102 du système de micro-ordinateur 101. L'exemple de contrôleur de mémoire 129 de la figure 4 comporte un registre d'adresse de mémoire 420 et un registre tampon de mémoire 421. Le bus CIA est positionné à l'adresse du mot suivant dans la mémoire de programme 107 qui doit être enregistré dans le registre d'instruction 301. Lorsque la ligne de signal LMAR est à 1, le con- trôleur de mémoire 129 charge le contenu du bus CIA dans le registre d'adresse de mémoire 420. Lorsque la ligne de signal R est à 1, elle indique qu'on désire lire dans la mémoire de programme 107 le mot qui est spécifié sur le bus CIA. Le bus de signal MBR transfère le contenu du registre tampon de mémoire 421 du contrôleur de mémoire 129 vers le circuit logique de prélèvement d'instruction 104. La ligne de signal MRC est commandée par le contrôleur de mémoire 129 et elle est à 1 lorsque le registre tampon de mémoire 421 contient le mot provenant de la mémoire de programme 107 qui est spécifié par l'adresse enregistrée dans le registre d'adresse de mémoire 420.Bien que ceci ne soit pas représenté sur la figure 4, la liaison entre le contrôleur de mémoire 129 et le circuit logique de prélèvement d'ins- truction 104 s'effectue de façon caractéristique par le bus de système 102. Dans le mode de réalisation de la f gure 4, le bus MBR transfère en parallèle 16 bits de données, c'est-à-dire deux octets ou un mot. Un registre d'adressé d'instruction 422 contient l'adresse dans la mémoire de programme 107 de la partie suivante des données de pro- gramme à prélever à partir de la mémoire de programme 107. Le signal de sortie du registre d'adresse d'instruction 422 est appliqué au con- trôleur de mémoire 129 par l'intermédiaire du bus de signal CIA. En outre, ce signal de sortie est transmis à un-additionneur 423. Cet additionneur 423 incrémente la valeur contenue dans le registre d'adresse d'instruction 422 et il l'applique en tant que signal d'en- trée 0 au multiplexeur 424. Lorsque la ligne de signal F est à 1, l'in- verseur 425 commande le multiplexeur 424 de façon à sélectionner le signal de son entrée 0 en tant que signal d'entrée appliqué au regis- tre d'adresse d'instruction 422. De cette manière, la valeur contenue *15 dans le registre d'adresse d'instruction 422 est incrémentée pour assu- rer l'accès séquentiel à la mémoire de programme 107. Dans le cas o un transfert de commande doit être exécuté, la nouvelle valeur pour le registre d'adresse d'instruction 422 est appliquée sur le bus de signal IA, correspondant à l'entrée 1 du multiplexeur 424. Dans la mesure o aucun octet d'instruction n'est prélevé pendant un positionnement forcé du registre d'adresse d'ins- truction 422, la ligne de signal F est à 0, ce qui fait que le multi- plexeur 424 sélectionne le signal de l'entrée 1 en tant que signal d'entrée appliqué au registre d'adresse d'instruction 422. Ce posi- tionnement forcé du registre d'adresse d'instruction 422 est déclenché par le positionnement à 1 de la ligne de signal LIAR. Le bus de signal IA et la ligne de signal LIAR peuvent être commandées par le circuit logique de traitement d'instruction 105 ou par d'autres modules de circuits, pendant l'initialisation du système, par exemple, ou pour déclencher le traitement d'une interruption. La ligne de signal 426, c'est-à-dire la sortie de la porte OU 425, est à 1 si le circuit logique de traitement d'instruction 105 a fait une demande de prélèvement (c'est-à-dire si la-ligne de signal F est à 1) et si le bit 0 ou le bit 1 du registre d'état de translation 305 est à 1. En d'autres termes, la ligne de signal 426 est à 1 si les valeurs des bits 0 et 1 du RET 305 ne sont pas celles qui sont indi- quées sur la figure 3A, mais plutôt celles qui sont indiquées sur l'une quelconque des figures 3B ou 3C. La ligne de signal 426 est à 1 lors- que la partie suivante,-en séquence, des données de programme doivent être lues dans la-mémoire de programme 107. Les lignes de signal R et LMAR sont donc branchées à la ligne de signal 426. De plus, lorsque la ligne de signal 426 est à 1, elle indique que l'additionneur 423 doit incrémenter la valeur contenue dans le registre d'adresse d'ins- truction 422. Si la ligne de signal LIAR ou la ligne de signal 426 est à 1, la porte OU 427 commande au registre d'adresse d'instruction 422 de charger le signal de sortie du multiplexeur 424 en tant que nouvelle valeur pour le registre d'adresse d'instruction 422. Comme on l'à indiqué précédemment, le signal présent sur la ligne de signal MRC est produit par le contrôleur de mémoire 129 lorsque le registre tampon de mémoire 421 contient le mot demandé provenant de la mémoire de programme 107. Le signal de sortie de la porte ET 428, c'est-àdire le signal de la ligne de signal Cl, est à 1 après qu'une opération de lecture dans la mémoire de programme 107 a été demandée par l'intermédiaire de la ligne de signal R et a été achevée, ce qui est indiqué par l'état 1 de la ligne de signal SRC. Le mode de réalisation de l'invention qui est représenté sur la figure 4 assure le chargement forcé du registre d'instruction 301. Pour réaliser ceci, la ligne de signal FIRL est positionnée à 1, et la valeur désirée à enregistrer dans le registre d'instruction 301 est présentée au multiplexeur 429 sur la ligne de signal IF. Si une opé- ration de prélèvement est en cours, l'inverseur 430 commande le multi- plexeur 429 de façon qu'il présente en entrée du registre d'instruc- tion 301 le contenu du bus de signal MBR. Si au contraire aucune opé- ration de prélèvement n'est en cours, et si la ligne de signal FIRL est à l'état haut, le multiplexeur 429 applique le contenu du bus IF au registre d'instruction 301. Le registre d'instruction 301 charge le contenu de sa ligne d'entrée, si la porte OU 431 indique que l'une ou l'autre des lignes de signal FIRL ou Cl est à l'état haut. La ligne de signal C2, c'est-à-dire la sortie de la porte ET 432, est à 1 si la ligne de signal F est à 1, c'est-à-dire si un pré- lèvement est en cours et si la sortie de la porte OU 433 est à 1. La sortie de la porte OU 433 est à 1 si la ligne Cl est à 1, c'est-à-dite si une lecture dans la mémoire de programme 107a été demandée et achevée, ou si la sortie inversée de la porte OU 434 est à 1, c'est- à-dire si les bits O et 1 du registre d'état de translation 305 sont tous deux à 0. On voit intuitivement que la ligne C2 est à 1 si le registre d'instruction 301 contient l'octet d'instruction suivant à acheminer vers le circuit logique de traitement d'instruction. 105.La partie d'octet supérieure 301H du registre d'instruction 301 est ap- pliquée sur l'entrée O du multiplexeur 302; la partie d'octet infé- rieur 301L est appliquée sur l'entrée 1 du multiplexeur 302. Les entrées 2 et 3 du multiplexeur 302 sont positionnées par le bus de signal IBF. Le bus de signal IBF est utilisé en association avec la ligne de signal FIBR pour forcer un chargement du registre d'octet d'instruction 304. Ceci peut être nécessité par diverses autres par- ties des circuits du processeur 103 pour forcer l'exécution d'une certaine instruction par le circuit logique de traitement d'instruc- tion 105, à la suite de l'instruction courante. Le multiplexeur 302 achemine l'un de ses quatre signaux d'entrée vers le registre d'octet d'instruction 304, conformément aux signaux de commande reçus sur ses entrées de sélection O et 1. L'en- trée de sélection O est déterminée par la sortie de la porte ET 405. Cette entrée n'est à 1 que si un prélèvement est en cours (F à 1) et si la ligne RETl est à 1. En d'autres termes, si la ligne de signal F est à 1, la valeur du bit 1 du RET 305 détermine si c'est la valeur contenue dans la partie d'octet supérieur 301H ou la valeur contenue dans la partie d'octet inférieur 301L du registre d'instruction 301 qui est acheminée par le multiplexeur 302 vers le registre d'octet d'instruction 304. Si la ligne de signal F est à 0, l'inverseur 436 fait en sorte que le multiplexeur 302 applique le contenu du bus de signal IBF au registre d'octet d'instruction 304. Le registre d'octet d'instruction 304 est chargé sous l'effet du signal de sortie de la porte OU 438, c'est-à-dire si la ligne de signal FIBR est à 1, ce qui indique que la valeur du registre d'octet d'instruction 304 est forcée, ou si le signal de sortie de la porte ET 437, c'est-à-dire le signal présent sur la ligne de signal C3, est à 1. La ligne de signal C3 est à 1 pendant la phase 3 du cycle d'hor- loge du système (signal CK3 à 1), lorsque la ligne 2 est à 1. Comme on l'a indiqué précédemment, on utilise la ligne de signal C3 pour appliquer un signal d'horloge aux bascules 406......408 qui forment le RET 305. La ligne C3 est à 1 pendant la phase 3 du cycle d'horloge du système si le registre d'instruction 301 contient l'octet approprié du programme à transférer vers le registre d'octet d'instruction 304. Le signal de sortie du registre d'octet d'instruction 304 est appliqué au circuit logique de traitement d'instruction 105 par le bus de signal NIB qui fait partie du bus 120. La ligne de signal C4, c'est-à-dire la sortie de la porte ET 439, est à 1 pendant la phase 4 du cycle d'horloge du système, lorsque la ligne C2 est à 1. La ligne de signal C4 est branchée au circuit logique de traitement d'instruction 105 pour indiquer que le prélève- ment de l'octet d'instruction suivant a été achevé et que le contenu du bus NIB correspond à la partie suivante appropriée des données de programme. La figure S est un exemple d'organigramme du mode de réalisa- -15 tion du circuit logique de prélèvement d'instruction 104 qui est re- présenté sur la figure 4, en ce qui concerne ses interactions avec d'autres parties du processeur 103. Après la mise sous tension du système d'ordinateur (510), l'initialisation du système (502) est effectuée. Le processeur 103 doit s'assurer qu'un programme est pré- sent dans la mémoire de programme 107, pour être exécuté, et il ini- tialise divers registres, parmi lesquels le registre d'adresse d'ins- truction 422 et le RET 305. Après que ces tâches de servitude ont été effectuées, le processeur 103 doit déterminer s'il existe des inter- ruptions en attente (503). S'il y a une interruption en attente, une instruction de transfert de commande est exécutée (520). Pour accom- plir ceci, le circuit logique d'interruption 110 positionne le regis- tre d'adresse d'instruction 422 et le RET 305 de façon que le circuit logique de prélèvement d'instruction prélève ensuite le premier mot duprogramme d'interruption approprié. t Une fois que ceci a été effectué, ou si aucune interruption n'est en attente, le circuit logique de traitement d'instruction 105 est prêt à traiter la partie suivante du programme. Le circuit logi- que de traitement d'instruction 105 applique donc une demande de pré- lèvement au circuit logique de prélèvement d'instruction 104 (521).Le circuit logique de prélèvement d'instruction 104 examine la valeur du bit 1 du RET 305 (504). Si c'est un 1, le contenu du registre d'adres- se d'instruction 422 est transféré par le bus CIA vers le contrôleur de mémoire 129 et une lecture du mot de mémoire adressé est demandée par la ligne de signal R. Une fois que la partie adressée des données de programme a été transférée vers le registre d'instruction 301, l'octet inférieur 301L du registre d'instruction 301 est transféré vers le registre d'octet d'instruction 304 et il est mis à la disposi- tion du circuit logique de traitement d'instruction 105 (506). Le RET 305 est ensuite positionné à "100" (case 507). Si le circuit logique de traitement d'instruction 105 déter- mine qu'une instruction de transfert de commande est exécutée (509),il positionne de façon appropriée le registre d'adresse d'instruction 422 et le RET 305, de façon que le circuit logique de prélèvement d'instruction 104 applique l'octet désiré du programme au circuit logique de traitement d'instruction 105, au moment o il produira sa demande de prélèvement suivante. Si l'instruction qui est exécutée ne transfère pas la commande à une autre partie du programme, ou après que le registre d'adresse d'instruction et le RET ont été positionnés de façon appropriée pour produire le transfert de commande désiré, le circuit logique d'interruption 110 détermine à nouveau si une inter- ruption est en attente (502). En retournant à la case de décision 504, on note que si le bit 1 du RET 305 est à zéro, le bit 0 est testé (511). C'est seulement si le bit 0 est à 1 que le circuit logique de prélèvement d'instruc- tion 104 demande le-mot d'instruction suivant approprié dans la mémoire de programme 107 (512). A la case 513, l'octet supérieur 301H du registre d'instruction 301 est alors transféré vers le registre d'octet d'instruction 304 et vers le circuit logique de traitement d'instruc- tion 105. Le RET 305 est ensuite positionné à "010" (case de traitement 514). De cette manière, sous l'effet des demandes de prélèvement suc- cessives produites par le circuit logique de traitement d'instruction , le circuit logique de prélèvement d'instruction 104 fournit au circuit logique 105 les parties d'octet consécutives du programme. Le circuit logique de prélèvement d'instruction 104 correspondant à l'in- vention conserve toute l'information nécessaire pour transférer séquen- tiellement les octets de programme vers le circuit logique de traite- ment d'instruction 105. Le circuit logique de prélèvement d'instruc- tion 104 ne connaît pas la division du programme en instructions sépa- rées. Néanmoins, en produisant le nombre approprié de demandes de prélèvement, le circuit logique de traitement d'instruction 105 peut obtenir par l'intermédiaire de son bus 120, d'une largeur d'un octet, des instructions de longueur arbitraire, indépendamment de la manière selon laquelle les instructions sont enregistrées dans la mémoire de programme 107 ou de la largeur du bus de système 102 qui est utilisé pour transférer les instructions vers le circuit logique de prélève- ment d'instruction 104. - Il va de soi que de nombreuses modifications peuvent être apportées au mode de réalisation décrit et représenté, sans sortir du cadre de l'invention. Par exemple, le circuit logique de prélèvement d'instruction correspondant à l'invention qui est représenté sur la figure 4 peut être facilement étendu de façon à faire fonction de mémoire tampon entre un bus de système 102 de n'importe quelle largeur arbitraire, et un circuit logique de traitement d'instruction ayant un bus 120 de n'importe quelle autre largeur arbitraire. Plus précisément, si la largeur du bus de système est un multiple de la largeur du bus - qui existe entre le circuit logique de prélèvement d'instruction et le circuit logique de traitement d'instruction, le registre d'ins- truction peut être divisé en plusieurs sous-registres dont le contenu peut être acheminé sélectivement par un multiplexeur vers le circuit logique de traitement d'instruction, sous la commande d'un circuit logique de commande de prélèvement. O r- -4. Z Zd afiMIUJNI Z1D 9 IfO OLO L Li UnflHUdnS ú L S InO LOL 9 Za MRHIHEMNI aL9L Z InO OLO s 19 unIllIdfiS úV[I L NON OOL úV UflgIUgNI LEYa L IfO OLO ú ZV UflUIUldnS I Zv 0 NON OOL Z Lv UngIUIENI LVZV O IO OLX l NOI. DflTlSNSI é &gDOOa MIlE IPmINI NOIJDflLLSNI4 Q T1SID3I f0 lflIIU:TdSIDI9 NOI.DflLnSNI 1Q NOIDL:)nuJSNI U àLI tlgSSgDOdd nf nfi fh'LOD -NdflS 1.D0O fIna I NNOD 'úI 61Q aSSglI(1V JN3IId:T d 9 aG nI u flNENOD JN3ï2IAIlITdd HI oN V nVHqSV& NE TABLEAU B CODE MODNIQUE F O N C T I O N CK1 Phase 1 de 1' horloge CK2 Phase 2 de l'horloge CK3 Phase 3 de l'horloge CK4 Phase 4 de l'horloge SF Démarrage prélèvement IA Adresse d'instruction LIAR Chargement du registre d'adresse d'instruction CIA Adresse d'instruction courante JIMUR Chargement du registre d'adresse de mémoire R Lecture dans la mémoire de programme MBR Registre tampon de mémoire IF Instruction forcée FIRL IBF b1RC FIBR NIB FD RETO RET 1 RET2 F C1 C2 Forçage du chargement du registre d'instruction Forçage de l'octet d'ins- truction Lecture en mémoire achevée Forçage du chargement du registre d'octet d'ins- truction Octet d'instuction suivant Prélèvement accompli Registre d'état de trans- lation - Bit O Registre d'état de trans- lation - Bit 1 Registre d'état de trans- lation - Bit 2 Prélèvement accompli Lecture en mémoire demandée et achevée Le registre d'instruction contient l'octet d'instruction suivant GENERATION __________ Circuit d'horloge ilI! .. .. Circuit logique de trai- tement d'instruction i. t, I. Circuit logique de pré- vement d'instruction il.l.. .., Contrôleur de mémoire Circuit logique de trai- tement d'instruction if i, il .., Contrôleur de mémoire Circuit logique de trai- tement d'instruction Circuit logique de prélè- vement d'instruction i, i. t, !I1 1 1 t, t, .l. ..1 f t, t t t' I! t' fi 1 1 .t Circuit logique de prélè- vement d'instruction C3 C4 REVENDICATIONS 1. Sous-système de traitement pour un système d'ordi- nateur exécutant un programme en Code P du langage Pascal, dans lequel le Code P comprend des instructions d'une lon- gueur de 1, 2, 3 et 4 octets, le système comprenant une mé- moire qui enregistre le programme sous la forme d'une sé- quence de mots de deux octets, indépendamment de la longueur de chaque instruction individuelle, caractérisé en ce qu'il comprend: un circuit logique de traitement d'instruction (105) qui produit une demande de prélèvement pour obtenir l'octet suivant d'une instruction dans la séquence de pro- gramme et qui, à la réception du premier octet d'une instruc- tion du Code P. produit 0, 1, 2 ou 3 demandes de prélèvement supplémentaires, conformément à ce qui est nécessaire pour obtenir l'instruction complète; un registre d'instruction (301) qui enregistre un mot à deux octets obtenu à partir de la mémoire (106); un registre d'état de translation (305) qui enregistre un code d'état spécifiant les actions à accomplir pour obtenir et transférer vers le circuit logi- que de traitement d'instruction (105) l'octet suivant dans la séquence de programme; et un circuit logique de comman- de (303) qui, lorsqu'il reçoit une demande de prélèvement à partir du circuit logique de traitement d'instruction,(l) prélève dans la mémoire (106) le mot suivant dans la séquen- ce du programme et l'enregistre dans le registre d'instruc- tion (301) si le code d'état spécifie que le registre d'ins- truction ne contient pas l'octet suivant à transférer vers le circuit logique de traitement d'instruction, (2) transfè- re du registre d'instruction (301) vers le circuit logique de traitement d'instruction (105) l'octet suivant dans la séquence de programme, comme le spécifie le code d'état, et (3) restaure le code d'état pour spécifier les actions à accomplir à la réception de la demande de prélèvement sui- vante, le sous-système de traitement accomplissant ainsi la commande de prélèvement des instructions de programme indé- pendamment du nombre d'octets dans chaque instruction. 2. Sous-système de traitement selon la revendication 1, caractérisé en ce que le registre d'état d'instruction (301) est divisé en un sous-registre d'octet-supérieur (301H) et un sous-registre d'octet inférieur (301L), et en ce que le registre d'état de translation (305) enregistre sous la for- me d'une partie au moins du code d'état des premier et se- cond indicateurs d'état qui, en combinaison, spécifient la- quelle des trois actions suivantes doit être entreprise pour transférer l'octet suivant dans la séquence de program- me, du registre d'instruction (301) vers le circuit logique de traitement d'instruction (104): (a) le contenu du sous- registre d'octet supérieur doit être transféré vers le cir- cuit logique de traitement d'instruction, (b) le mot sui- vant dans la séquence de programme doit être prélevé dans la mémoire et enregistré dans le registre d'instruction (301), et le contenu mis à jour du sous-registre d'octet supérieur doit être transféré vers le circuit logique de traitement d'instruction (105),-ou (c) le mot suivant dans la séquence de programme doit être prélevé en mémoire et enregistré dans le registre d'instruction (301), et le con- tenu mis à jour du sous-registre d'octet inférieur doit être transféré vers le circuit logique de traitement d'ins- truction (105). 3. Sous-système de traitement selon la revendication 2, caractérisé en ce que le premier indicateur d'état spécifie si c'est le contenu du sousregistre d'octet supérieur (301H) ou du sous-registre d'octet inférieur (301L) qui sera trans- féré ensuite vers le circuit logique de traitement d'instruc- tion (105). 4. Sous-système de traitement selon la revendication 1, caractérisé en ce qu'il comporte en outre: un registre d'adresse (420) qui enregistre l'adresse dans la mémoire du mot de programme qui a été transféré en dernier vers le registre d'instruction (301); un additionneur (423) qui incré- mentelladresse enregistrée dans le registre d'adresse (420) sous l'effet de la réception d'un signal d'incrément; et en ce que le circuit logique de commande a une configuration telle qu'il produit le signal d'incrément et applique à la mémoire (106) le contenu résultant du registre d'adresse (420), en tant qu'adresse du mot de programme suivant dans la mémoire (106). 5. Sous-système de traitement selon la revendication 2, _ caractérisé en ce que le circuit logique de commande com- prend un circuit logique de commande d'état (450) qui, une fois qu'un octet de programme a été transféré vers le cir- cuit logique de traitement d'instruction, restaure le code d'état dans le registre d'état de translation, en prépara- tion de la prochaine demande de prélèvement, de la manière suivante: (a) pour transférer ensuite le contenu du sous- registre opposé à celui contenant l'octet de programme qui vient juste d'être transféré; et (b) si le contenu du sous- lO registre d'octet supérieur (301H) vient juste d'être trans- féré, pour prélever dans la mémoire (106) le mot de program- me suivant et pour l'enregistrer dans le registre d'instruc- tion (301) avant tout transfert du contenu du registre d'ins- truction vers le circuit logique de traitement d'instruc- tion (105). 6. Circuit logique de prélèvement d'instruction pour un système d'ordinateur comprenant une structure de bus des- tinée au transfert en parallèle de mots de données de deux octets entre des modules qui lui sont couplés, des moyens de mémoire (106) permettant le prélèvement d'un mot de pro- gramme spécifié par une adresse, et un circuit logique de traitement d'instruction (105) destiné à produire un signal de demande de prélèvement demandant un octet de programme pour l'exécution, caractérisé en ce qu'il comprend: un registre d'instruction (301) couplé au bus du système et conservant un mot de programme prélevé dans les moyens de mémoire; un registre d'adresse (422) qui enregistre l'adres- se du mot de programme qui est prélevé dans les moyens de mémoire pour le registre d'instruction; un multiplexeur (302) qui est couplé au registre d'instruction et qui ap- plique au circuit logique de traitement d'instruction (105) le contenu d'un octet choisi du registre d'instruction, comme il est spécifié par un signal de sélection; un regis- tre d'état de translation (305) qui enregistre une informa- tion spécifiant quel est l'octet de programme conservé dans le registre d'instruction (301) qui doit être transféré vers le circuit logique de traitement d'instruction, au moment de sa prochaine demande de prélèvement; et un cir- cuit logique de prélèvement (303) comprenant (1) des moyens destinés à examiner l'information contenue dans le registre d'état de translation au moment de la réception du signal de prélèvement à partir du circuit logique de traitement d'instruction, pour déterminer la partie d'octet de program- me suivante à transférer vers le circuit logique de traite- ment d'instruction, (2) des moyens destinés à modifier le contenu du registre d'instruction pour qu'il corresponde à l'adresse, dans les moyens de mémoire, du mot de programme contenant la partie d'octet suivante à transférer vers le circuit logique de traitement d'instruction, à appliquer le contenu du registre d'adresse (420) aux moyens de mémoire, par l'intermédiaire de la structure de bus, pour assurer le prélèvement du mot de programme adressé, et à transférer vers le registre d'instruction (301) le mot de programme prélevé; (3) des moyens destinés à produire le signal de sélection appliqué au multiplexeur, afin de sélectionner pour le transfert vers le circuit logique de traitement d'instruction l'octet de programme contenu dans le registre d'instruction qui est spécifié par le registre d'état de translation, et (4) des moyens destinés à restaurer le con- tenu du registre d'état de translation (305) pour spécifier l'octet de programme suivant à transférer vers le circuit logique de traitement d'instruction (105), ce qui a pour effet d'appliquer au circuit logique de traitement d'ins- truction (105) une séquence d'octets successifs différents du programme, sous l'effet des signaux de prélèvement suc- cessifs provenant du circuit logique de traitement d'instruc- tion. 7. Sous-système de traitement pour un système d'ordi- nateur exécutant un programme en Code P du langage Pascal, dans lequel le Code P comprend des instructions d'une lon- gueur de 1, 2, 3 et 4 octets, le système comprenant une mé- moire (106) qui enregistre le programme sous la forme d'une séquence de mots de deux octets et un circuit logique de traitement d'instruction (105) qui commande l'exécution des instructions par le système, caractérisé en ce que: le cir- cuit logique de traitement d'instruction (105) comprend des moyens qui produisent une demande de prélèvement pour obte- nir le premier octet d'une instruction dans la séquence de programme et qui, après obtention de ce premier octet, pro- duisent 0, 1, 2 ou 3 demandes de prélèvement supplémentaires, conformément à ce qui est nécessaire pour obtenir l'instruc- tion de Code P complète; et en ce que le sous-système de traitement comprend: un registre d'instruction (301) des- tiné à enregistrer un mot à deux octets prélevé dans la mé- moire (106); un registre d'état de translation (305) qui est associé au registre d'instruction et à la mémoire de fa- çon à commander sélectivement le prélèvement d'un mot dans la mémoire et l'introduction de ce mot dans le registre d'ins- truction, ainsi que l'application d'un certain octet du mot contenu dans le registre d'instruction au circuit logique de traitement d'information, conformément à un ensemble de valeurs de code d'état; et un circuit logique de commande (303) qui est associé au registre d'état de translation (305) et qui réagit à la réception d'une demande de prélève- ment provenant du circuit logique de traitement, pour faire en sorte que le registre d'état de translation (305)- accom- plisse l'opération suivante spécifiée par la valeur de code d'état courante et positionne le code d'état à une nouvelle valeur sous l'effet de laquelle l'octet d'instruction sui- vant dans la séquence de programme sera appliqué au circuit logique de traitement d'instruction, en réponse à la demande de prélèvement suivante reçue. 8. Sous-système de traitement selon la revendication 7, caractérisé en ce qu'il comprend en outre: un registre d'a- dresse d'instruction (422) destiné à spécifier l'adresse du mot à-deux octets suivants à prélever dans la mémoire (106), le circuit logique de commande (104) incrémentant l'adresse spécifiée sous l'effet de l'accomplissement d'opérations qui sont spécifiées par certaines valeurs de code d'état; et en ce que le circuit logique de traitement d'instruction (105) reconnaît en outre certaines instructions comme des instructions spécifiant un transfert de commande et, sous l'effet de ces instructions, il révise de-façon correspon- - dante le contenu du registre d'adresse d'instruction et mo- difie la valeur de code d'état de façon qu'à l'apparition de la demande de prélèvement suivante, le mot ayant l'adres- se qui est maintenant spécifiée par le registre d'adresse d'instruction soit prélevé et introduit dans le registre d'instruction (301) pour être fourni par octets au circuit logique de traitement d'instruction (105). 9. Circuit logique de prélèvement pour un système d'ordinateur comprenant des moyens de mémoire destinés à enregistrer des données de programme et à transférer en parallèle des parties à m bits des données de programme spécifiées par un signal d'adresse, sous l'effet de la ré- ception d'un signal de lecture, et un processeur d'instruc- tion qui produit un signal de prélèvement lorsque des par- ties à n bits des données de programme, avec n 0 m, doivent être transférées vers lui en parallèle, caractérisé en ce qu'il comprend: des moyens d'enregistrement d'adresse qui enregistrent une adresse de programme spécifiant la partie suivante à m bits des données de programme dans la séquence de programme et qui appliquent l'adresse de programme aux moyens de mémoire, sous la forme du signal d'adresse; un circuit de registre d'instruction (301) qui enregistre dans des positions de registre sélectionnées les parties à m bits des données de programme qui sont transférées par les moyens de mémoire (106) et qui, à la réception d'un signal de com- mande de sortie spécifiant certaines de ses positions de registre, transfère en parallèle le contenu des positions de registre spécifiées vers le processeur d'instruction; un registre d'état qui conserve une information spécifiant quelles sont, éventuellement, les positions du circuit de registre d'instruction qui contiennent la partie de program- me suivante à n bits qui doit être transférée vers le pro- cesseur d'instruction; et des moyens de commande couplés au registre d'état, au circuit de registre d'instruction et aux moyens d'enregistrement d'adresse, qui (1) examinent le registre d'état, à la réception du signal de prélèvement à partir du processeur d'instruction, pour déterminer les positions du circuit de registre d'instruction qui enregis- trent la partie suivante à n bits des données de programme à transférer vers le processeur d'instruction, (2) appli- quent le signal de lecture aux moyens de mémoire si l'infor- mation du registre d'état indique que le circuit de registre d'instruction (301) ne contient pas la partie de données de programme à n bits suivante, afin que les moyens de mémoire transfèrent vers le circuit de registre d'instruction la partie de données de programme à m bits suivante dans la séquence, et (3) appliquent le signal de commande de sortie au circuit de registre d'instruction (301) pour provoquer le transfert en parallèle de la partie de données de pro- gramme à n bits suivante dans la séquence, vers le proces- seur d'instruction. 10. Circuit logique de prélèvement selon la revendica- tion 9, caractérisé en ce que le circuit de registre d'ins- truction (301) comprend: un registre de conservation qui enregistre kn bits des données de programme et qui est di- visé en une suite de k sous-registres, chacun d'eux enre- gistrant n bits des données de programme; et un multiplexeur de sortie, branché aux k sous-registres et utilisant le signal de commande de sortie pour désigner un sous-registre particulier afin de transférer son contenu vers le proces- seur d'instruction. 11. Circuit logique de prélèvement selon la revendication 10, caractérisé en ce que m = kn, et en ce que le circuit de registre d'instruction (301) comprend en outre un multi- plexeur d'entrée qui comporte plusieurs entrées à m bits, comprenant une première entrée branchée aux moyens de mé- moire, le multiplexeur d'entrée transférant le contenu de l'une de ses entrées vers le registre de conservation et l'entrée dont le contenu est transféré étant spécifiée par un signal de commande d'entrée qui sélectionne la première entrée lorsque le signal de prélèvement est présent. 12. Circuit logique de prélèvement selon la revendica- tion 10, caractérisé en ce que le circuit de registre d'ins- truction (301) comprend en outre un registre tampon (421), branché à la sortie du multiplexeur de sortie et au proces- seur d'instruction, qui enregistre le contenu du sous-regis- tre désigné, pour permettre au processeur d'instruction (103) d'y accéder. 13. Circuit logique de prélèvement selon la revendica- tion 9, caractérisé en ce que les moyens d'enregistrement d'adresse acceptent un signal d'incrément destiné à faire avancer l'adresse de programme jusqu'à la partie de program- me à m bits consécutive suivante; et en ce que les moyens de commande produisent un signal d'incrément lorsqu'ils produisent le signal de lecture. 14. Circuit logique de prélèvement selon la revendica- tion 13, caractérisé en ce que les moyens d'enregistrement d'adresse (422) comprennent en outre un registre d'adresse qui enregistre l'adresse de programme; et un additionneur (423) branché au registre d'adresse qui incrémente le con- tenu du registre d'adresse (420) lorsqu'il reçoit le signal d'incrément, ce qui fait avancer l'adresse de programme jusqu'à la partie de données de programme à m bits suivante, dans la séquence.