Brevet FR2378312A1 — publié le 19780818

La présente invention concerne un dispositif pour microprocesseur, selon lequel pendant qu'une instruction est exécutée, la suivante est déjà rendue disponible afin de réduire le temps d'accès en mémoire. Selon le brevet déposé aux Etats Unis d'Amérique sous le numéro 3 162 841, il est proposé une méthode permettant de commander l'accès en mémoire avec deux compteurs dtinstructions et un registre à deux étages de telle façon que pendant l'exécution d'une instruction contenue dans le second étage, la suivante soit déjà disponible dans le premier étage. Il en résulte que le temps de mise à disposition des instructions ne rentre pas dans celui de traitement. Ce procédé de commande d'accès en mémoire présente un inconvénient du fait que l'adresse devant être partagée pour d'autres raisons, deux lignes omnibus distinctes sont nécessaires pour l'adressage des instructions. De plus, cet arrangement conduit à l'utilisation d'un matériel coûteux et complexe. L'objet de l'invention est de présenter un dispositif pour commander l'accès en mémoire dans un microprocesseur. Selon l'invention,il est fait emploi d'un compteur de macro-instructions extérieur au microprocesseur. Ce compteur commande la lecture d'une macro-instruction d'une mémoire vers un des m étages d'un registre "premier entre#-premier sorti" (FIFO), le microprocesseur exécutant les instructions chargées d'abord dans le registre FIFO à m étages. Le nombre m est choisi en fonction du rapport obtenu en divisant le temps maximum d'un macrocycle par le temps d'un cycle de mémoire.Après ltexécution de chaque instruction, le microprocesseur augmente d'une unité le nombre indiqué par un compteur de programme et le compteur de macroinstructions passe à l'état suivant à chaque fois qu'une macro-instruction est lue dans le registre FIFO. Il est fait également emploi d'une mémoire de données différente de celle de programme. Le compteur de macro-instructions extérieur au microprocesseur est associé en permanence à la mémoire de programme de telle façon que la lecture de cette dernière ait lieu sans retard par suppression de toute technique d'attribution. Cette solution est claire et simple. Ce dispositif permet que le registre FIFO soit chargé lorsque le calculateur fonctionne. Le microprocesseur exécute alors continuement les instructions stockées dans tout le registre FIFO, ce qui évite les cycles ineffectifs. Pendant l'exécution, le registre FIFO est rechargé en permanence ce qui fait que l'on obtient un mode de fonctionnement asynchrone entre la mémoire de programme et le registre FIFO. La mémoire de données, distincte de celle de programme, et la disponibilité de l'instruction dans le registre FIFO permettent au microprocesseur d'avoir accès aux données et à l'instruction en même temps, Selon une version du dispositif conforme à l'invention, un registre intermédiaire est disponible entre la mémoire de programme et le registre FIFO à m étages. Ceci permet que le temps pris par un cycle entre deux accès en mémoire de programme soit de courte durée si ce registre est situé aussi près que possible des mémoires ; si des mémoires dynamiques sont utilisées, il en resultera que les besoins en puissance de l'alimentation seront inférieurs. L'invention sera maintenant mieux comprise à la lecture de la description détaillée qui va suivre, donnée à titre d'exemple non limitatif et en se reportant à la figure annexée qui représente un schéma synoptique du dispositif. Les compteurs de programme PZ et de macro-instructions MZ sont à zéro. Ainsi, le compteur de macro-instructions MZ présente l'adresse initiale à une mémoire de programme PS auquel il est associé en permanence et appelle une première macro-instruction stockée à cette adresse. Cette première macro-instruction est introduite dans un registre Intermédiaire ZR. A l'aide de ce dernier, la période entre le commencement d'un premier cycle et le commencement du cycle suivant, c'est-à-dire la durée d'un cycle, peut être aussi courte que possible. Puisque la présente version fait emploi de mémoires dynamiques, les besoins de puissance de l'alimentation sont réduits. Le registre intermédiaire ZR est relié à un registre FIFO BS à m étages et assure le transfert de son contenu vers le registre BS si ce dernier dispose d'emplacements libres. Avec chaque chargement, le compteur MZ progresse d'une unité. Le microprocesseur pP exécute les instructions dans l'ordre dans lequel le registre BS est chargé. La sortie de ce dernier est reliée à l'entrez "instructions" du microprocesseur. Le registre BS peut être réalisé soit à l'aide de registres à décalage soit à l'aide de mémoires à trois états. Dès que le microprocesseur, alors qu'il exécute une instruction, commence le dernier microcycle de l'instruction, le compteur PZ, qui jusque la était resté à zéro, est amene# à un par l'intermédiaire d'une ligne sP. Le compteur de macro-instructions MZ, qui pendant ce temps a chargé n étages (n c m) du registre BS, est à n. Lorsqu'unie macro-instruction est lue dans ce dernier, le compteur MZ passe a ltétat suivant, de telle façon que le comptage est à n+l. Ce même compteur MZ présente cette adresse, laquelle appelle la macro-instruction suivante comme il a été précédemment décrit, à la mémoire de programme PS.Le temps d'accès peut donc être réduit à celui nécessaire au transfert d'une instruction du registre FIFO BS vers le microprocesseur pP. Ce temps de transfert est déterminé par la longueur de la ligne. Le microprocesseur uP saisit les données qui lui sont nécessaires durant l'exécution d'instructions à partir d'une mémoire de données DS en adressant l'emplacement en mémoire désiré sur une ligne d'adresse aD. L'adressage a lieu sans retard ; le temps habituel d'attente qui est du au fait qu'un accès en mémoire de programme alterne avec un accès en mémoire de données est éliminé car l'accès en mémoire de programme a eu lieu avant et l'instruction appelée a déjà été rendue disponible dans le registre BS. Le microprocesseur pP a donc accès au programme et aux données en même temps. Dans le cas d'une interruption de programme ou d'une instruction de saut, le compteur de macro-instructions MZ et le compteur de programme PZ doivent etre simultanément chargés par une nouvelle adresse de programme sur une ligne aP. Dans ces cas, tout comme à la mise en marche, il n'est pas possible de réduire le temps d'accès du fait que le registre BS doit être chargé en premier. Dans l'exemple décrit ci-dessus, le registre BS comporte deux étages et par ce dernier l'accès à la mémoire de programme commandé par le compteur de macro-instructions MZ peut avoir lieu de façon a;yn#hrone.Le décalage maximum possible est de deux cycles qui se manifeste dans la différence existant entre les comptages. Il est bien évident que la description qui précède n'a été donnée qu'à titre d'exemple non limitatif et que de nombreuses variantes peuvent etre envisagées sans sortir pour autant du cadre de l'invention. REVENDICATIONS 1. Dispositif pour microprocesseur, permettant que durant l'exécution d'une instruction, la suivante est déjà disponible afin de réduire le temps d'accès en mémoire, caractérisé par le fait que, situé extérieurement au microprocesseur, il est fournit un compteur de macro-instructions qui commande la lecture de macro-instructions d'une mémoire de programme vers l'un des m étages d'un registre "premier entré-premier sorti", le microprocesseur exécutant tout d'abord l'instruction chargée dans ledit registre à m étages, que le nombre m d'étages est choisi en fonction du rapport obtenu en divisant la durée maximum d'un macrocycle par la durée d'un cycle dé mémoire, qu'après l'exécution de chaque-instruction le microprocesseur fait passer le compteur de programme à l'état suivant, que le nombre représenté par le compteur de macro-instructions est augmenté d'une unité à chaque fois qu'une macroinstruction est lue dans le registre "premier entré-premier sorti", et qu'une mémoire de données est disponible extérieurement au programme de mémoire. 2. Dispositif conforme à celui de la revendication 1, caractérisé par le fait qu'il est fait emploi d'un registre intermédiaire entre le compteur de programme et le registre à m étages.