FR 2720530 A1 19951201 FR 9406580 A 19940527 DISPOSITIF POUR L'OPTIMISATION DES PERFORMANCES D'UN PROCESEUR. La présente invention concerne un dispositif pour l'optimisation des performances d'un processeur avec utilisation de mémoires mortes à temps d'accès lent pour le programme applicatif associé à un processeur. On sait qu'avec les nouveaux processeurs, par exemple de type 88100, SPARC 601, DSP 320CXX..., la pleine performance du processeur est obtenue dès lors que la mémoire et, plus particulièrement, la mémoire instruction, est capable de fournir une instruction à chaque cycle horloge. Si tel n'est pas le cas, la performance maximale du processeur est divisée par le nombre de cycles nécessaires pour accéder à une instruction (soit, par exemple une puissance divisée par 2 si la mémoire répond en 2 cycles). Ainsi, pour qu'un processeur fonctionnant à une fréquence de 25 MHz (c'est-à-dire, avec des cycles de 40 ns), soit pleinement performant, il faut utiliser des mémoires instructions capables de fournir des instructions dans une gamme de temps allant de 20 à 25 ns. Pour un processeur fonctionnant à 33 MHz, ce temps tombe à 15 ns. - 2 - En pratique, ces temps d'accès sont disponibles dans la technologie des mémoires RAM, ce qui implique, pour le code applicatif (programme), une recopie des instructions d'un espace mémoire morte dans un espace mémoire RAM à la mise sous tension du processeur. Toutefois, cette solution ne convient pas pour de nombreuses applications: Dans le cas d'un processeur embarqué, par exemple, à bord d'un aérodyne, la nécessité de disposer d'une multiplicité de boîtiers mémoires (toujours onéreux) pour la recopie du code applicatif est particulièrement dissuasive. En outre, la conservation du contenu de la mémoire RAM ne peut pas être garantie lors d'une coupure d'alimentation dont la durée dépasse une période de temps prédéterminée. En outre, pour des applications critiques telles que, par exemple, des commandes de vol faisant intervenir des programmes applicatifs de plus de 100 koctets, la recopie du programme en mémoire RAM entraîne nécessairement une interruption de service inadmissible. Par ailleurs dans un dispositif de ce genre, l'insertion d'un code correcteur d'erreur n'est pas satisfaisante, car cette logique se place sur le chemin critique du temps d'accès à la mémoire et ne permet pas de garantir des corrections suffisantes. La protection mémoire RAM d'exécution par pile ou batterie est, quant à elle, psychologiquement difficile à admettre pour des fonctions critiques. L'invention a donc plus particulièrement pour but de supprimer ces inconvénients. Elle propose un dispositif apte à fournir, sur le bus des données d'un processeur, une instruction par cycle en -3- provenance de mémoires mortes utilisées comme mémoire d'exécution, et ce, sans nécessiter l'emploi par le processeur de signal spécifique, autre que les adresses qu'il délivre sur son bus des adresses et les signaux de commande qu'il génère lors des accès mémoire. Selon l'invention, dans ce dispositif, les instructions du programme d'application sont contenues dans au moins deux blocs mémoires mortes dont les entrées d'adressage sont respectivement reliées à deux compteurs connectés au bus adresse et dont les sorties de lecture sont reliées au bus donnée par l'intermédiaire de deux barrières ("buffers"). Un circuit logique est alors prévu pour commander, en fonction de la nature des adresses émises sur le bus des adresses et au rythme de celles-ci, une succession de cycles comprenant chacun le transfert sur le bus des données via l'une ou l'autre des barrières, des données générées par l'un ou l'autre des blocs mémoires et l'incrémentation du compteur associé à l'autre bloc mémoire, de manière à anticiper le transfert de données qui s'effectuera au cycle suivant. Avantageusement, le susdit circuit logique pourra comprendre deux comparateurs logiques destinés à comparer les sorties des compteurs à l'adresse fournie par le processeur, de manière à habiliter, en fin de cycle, le transfert des données contenues dans la mémoire tampon et qui correspondent, en principe à ladite adresse, seulement dans le cas o la comparaison révèle une identité, et à interdire ledit transfert dans le cas o ladite comparaison révèle une différence. Un mode d'exécution de l'invention sera décrit ci-après, à titre d'exemple non limitatif, avec référence aux dessins annexés dans lesquels: La figure 1 est un schéma synoptique d'un dispositif selon l'invention; -4- La figure 2 est un diagramme temporel illustrant une séquence linéaire de code du dispositif représenté figure 1; La figure 3 est un diagramme temporel illustrant un cycle de fonctionnement du dispositif représenté sur la figure 1 avec rupture de séquence. Dans cet exemple, le dispositif comprend deux blocs de mémoire morte MI, MP, dont les entrées d'adressage sont respectivement connectées au bus des adresses AB du microprocesseur pP par l'intermédiaire de deux compteurs respectifs CP, CI, et dont les sorties de lecture sont connectées au bus des données DB du microprocesseur pP par l'intermédiaire de deux barrières respectives BP, BI. Les compteurs CP et CI sont destinés à recevoir respectivement les adresses paires et impaires engendrées sur le bus AB, sauf le bit de poids faible d'adresse qui est chargé dans un registre R dont la sortie Q est reliée à un circuit logique LC qui effectue la commande de l'incrémentation des compteurs CP et CI et de l'ouverture de l'une ou l'autre des barrières BP et BI pour transmettre les données émises sur les blocs mémoire MP ou MI sur le bus des données du microprocesseur pP. Ces compteurs CP et CI sont conçus de manière à délivrer les adresses respectives des blocs mémoires MP et MI auxquels ils sont associés, sauf le bit de poids faible de l'adresse provenant du microprocesseur pP, (qui n'est pas reçu par les blocs mémoires MP et MI). Les barrières BP, BI reçoivent sur leurs entrées les données contenues par les blocs mémoires respectifs MP, MI aux adresses indiquées par les compteurs CP, CI. - Le registre R fonctionne à la façon d'une bascule bistable à chaque cycle. La sortie Q de ce registre R est utilisée par le circuit logique LC pour déterminer quelle barrière BP ou BI va fournir la donnée issue du bloc mémoire MP ou MI au microprocesseur PP pour échantillonnage sur le cycle courant. Ainsi, si la sortie Q du registre est à l'état O, on est sur un cycle adresse paire et c'est le registre tampon BP qui est habilité à transmettre les données qu'il contient. Si la sortie Q est à l'état logique 1, c'est la barrière BI qui est ouverte pour que le bloc mémoire MI transmette son contenu sur le bus des données DB. Comme il ressort du diagramme temporel représenté sur la figure 2, dans le cas d'une séquence linéaire de code, à partir du moment o une adresse A est générée sur le bus des adresses AB par le processeur pP (adresse micro), le cycle de fonctionnement CA du dispositif précédemment décrit est le suivant: - Si l'adresse A est paire En début de cycle CA, le compteur CP contient l'adresse A qu'il avait acquise au cycle précédent. Il présente cette adresse à la mémoire MP. Le circuit logique LC dont l'entrée est à l'état logique O incrémente le compteur CI qui passe à l'adresse A+l (sortie CI). En fin de cycle CA, la barrière BP est ouverte pour que le bloc mémoire MP transmette la donnée DA qui était contenue à l'adresse A (sortie MP). Le microprocesseur pP échantillonne alors la donnée DA. La barrière BI est fermée pendant le cycle A. - Au cycle suivant (cycle CA+1) 35. En début de ce cycle, le compteur CP est incrémenté (sortie CP) et présente au bloc mémoire MP, pendant le cycle CA+2, l'adresse A+2. - 6 - Le compteur CI contient depuis le cycle CA, l'adresse A+1 (sortie CI) et la maintient pendant le cycle A+1. En fin de cycle A+1, la barrière BI est ouverte pour que le bloc mémoire MI transmette la donnée DA+l (bus de données). Le microprocesseur pP peut alors échantillonner la donnée DA+1i. La barrière BP est fermée pendant le cycle A+1. La difficulté rencontrée pour l'application de cette technique se trouve dans les ruptures de séquence qu'il faut détecter avant que le microprocesseur échantillonne une donnée erronée liée à l'anticipation d'adresse fournie par les compteurs. C'est la raison pour laquelle le dispositif comprend un circuit de détection d'erreurs faisant intervenir deux comparateurs logiques CompP, CompI (donc très rapides) qui comparent respectivement les sorties des compteurs CP et CI et l'adresse fournie par le processeur pP. Si la sortie Q du registre R est à l'état logique 0, c'est la sortie du comparateur CompP qui est valide pendant le cycle. Si le résultat de la comparaison effectuée par le comparateur CompP révèle une identité, l'adresse anticipée par le compteur CP est correcte par rapport à celle fournie sur le bus AB (adresse micro) par le microprocesseur pP. En conséquence, la donnée contenue dans la mémoire MP à cette adresse peut passer la barrière BP et être échantillonnée par le microprocesseur pP à la fin du cycle. Si le résultat de la comparaison effectuée par le comparateur CompP révèle une différence, par exemple due au fait que le microprocesseur pP vient d'effectuer une rupture de séquence et, qu'en conséquence, il présente sur le bus des adresses AB l'adresse B et non l'adresse A - 7 - (figure 3), l'adresse A anticipée par le compteur CP (qui a été incrémenté au cycle précédent) est donc incorrecte par rapport à celle fournie par le microprocesseur pP sur le bus des adresses AB. Il convient alors de bloquer la réponse "prêt" envoyée par la logique LC au microprocesseur pP pour interdire que ce dernier échantillonne une donnée incorrecte. Outre ce blocage, la différence détectée par le comparateur CompP provoque le chargement des compteurs CP, CI et du registre R par le bus des adresses AB (le registre R étant chargé par le bit de poids faible de l'adresse présente sur le bus des adresses AB). Ce chargement a lieu en fin de cycle B. Après ce chargement, si la sortie Q du registre R est à l'état logique 0, ceci signifie que l'adresse B est paire. De ce fait, le compteur CI est incrémenté à la fin du cycle suivant. Par contre, si la sortie Q est à l'état logique 1, c'est le compteur CP qui est incrémenté à la fin du cycle suivant. La donnée DB contenue dans la mémoire M à l'adresse B est fournie en trois cycles au lieu d'une séquence linéaire. La donnée DB+i est ensuite fournie en un cycle après la fourniture de la donnée DB. Si la sortie Q du registre R est à l'état logique 1, c'est le comparateur CompI qui est valide pendant le cycle. Si le résultat de la comparaison effectuée par le comparateur CompI révèle une identité, l'adresse anticipée par le compteur CI est correcte par rapport à celle fournie par le processeur pP. La donnée fournie par la mémoire MI via la barrière BI peut être échantillonnée par le processeur pP en fin de cycle. Si le résultat de la comparaison effectuée par le comparateur CompI révèle une différence en raison du fait - 8 - que le processeur pP vient d'effectuer une rupture de séquence et présente sur le bus AB l'adresse B et non l'adresse A. L'adresse A anticipée par le compteur CI est incorrecte par rapport à celle fournie par le processeur pP. Le circuit logique LC agit de manière à bloquer la réponse "prêt" envoyée au processeur pour interdire l'échantillonnage d'une donnée incorrecte. Par ailleurs, les compteurs CP et CI sont chargés par le bus des adresses AB, tandis que le registre R reçoit le bit de poids faible de l'adresse présente sur le bus AB. Ce chargement a lieu en fin de cycle B. Après ce chargement, si la sortie Q du registre est à l'état logique 0, l'adresse B est paire et le compteur CI est incrémenté à la fin du cycle suivant. La donnée DB est alors fournie en trois cycles au lieu d'une séquence linéaire. La donnée suivante DB+1 est alors fournie au cycle après la donnée DB. Le dispositif précédemment décrit permet de soutenir la performance du microprocesseur malgré l'utilisation de mémoires plus lentes, une légère dégradation étant cependant observée lors de ruptures de séquence du processeur pP, telles que celles occasionnées par des instructions de branchement. Ainsi, dans le cas d'un programme utilisant 15% d'instructions de branchement, ce dispositif permet d'atteindre une efficacité de 77% au lieu de 100% (obtenue avec un code en RAM sans temps d'attente). Avec un programme utilisant 10% d'instructions de branchement, on aurait une efficacité de 83%. Bien entendu, l'invention ne se limite pas au mode d'exécution précédemment décrit. -9- Ainsi, le nombre de circuits comprenant un compteur CP, CI, un bloc mémoire MP, MI et une barrière BP, BI pourrait être supérieur à 2. Ce nombre pourrait, par exemple, être égal à 4. Dans ce cas, le registre R doit être conçu de manière à recevoir un couple de bits de poids faible des adresses engendrées sur le bus adresse AB. Le circuit logique LC comprend des moyens de décodage des deux bits contenus dans le registre R et pour commander l'incrémentation de l'un des quatre compteurs CP, CI ainsi que l'ouverture de l'une des quatre barrières BP, HI, en fonction de la valeur dudit couple de bits. Quatre comparateurs CompP, CompI seront en outre prévus pour comparer les sorties des quatre compteurs CP, CI avec l'adresse fournie par le processeur pP et pour valider l'adresse anticipée par le compteur CP, CI ou pour interdire l'échantillonnage d'une donnée incorrecte par le processeur, selon un processus similaire à celui précédemment décrit. -10 - Revendications 1. Dispositif pour l'optimisation des performances d'un processeur (pP) délivrant sur un bus des adresses (AB), les adresses des instructions d'un code applicatif qu'il désire échantillonner sur un bus des données (DB), caractérisé en ce que lesdites instructions sont contenues dans au moins deux mémoires mortes (MP, MI) dont les entrées d'adressage sont respectivement reliées à deux compteurs (CP, CI) connectés au bus des adresses (AB) et dont les sorties de lecture sont reliées au bus des données (DB) par l'intermédiaire de deux registres tampons (BP, BI), un circuit de commande (R, LC) étant prévu pour commander, en fonction de la nature des adresses émises sur le bus des adresses (AB) et au rythme de celles-ci, une succession de cycles comprenant chacun le transfert sur le bus des données (DB), des données contenues dans le registre tampon (BP, BI) associé à l'une des mémoires (MP) et l'incrémentation du compteur associé à l'autre mémoire (MI), de manière à anticiper le transfert de données qui s'effectuera au cycle suivant. 2. Dispositif selon la revendication 1, caractérisé en ce que les compteurs (CP, CI) sont destinés à recevoir les adresses engendrées sur le bus (AB) qui permettent d'accéder respectivement aux blocs mémoire (MP, MI), sauf un ou plusieurs bits de poids faible d'adresse qui est chargé dans un registre (R) qui commande l'incrémentation des compteurs (CP) et (CI) et l'habilitation de l'une ou l'autre barrières (BP, BI) à transmettre exclusivement les données émises par les mémoires (MP, MI) sur le bus des données (DB). 3. Dispositif selon la revendication 2, caractérisé en ce que le registre (R) est chargé par un bit de poids faible d'adresse de manière à commander l'incrémentation de l'un ou l'autre des compteurs (CP) et - 11 - (CI) et l'habilitation de l'une ou l'autre des barrières (BP, BI), selon que l'adresse est paire ou impaire. 4. Dispositif selon l'une des revendications 1 à 3, caractérisé en ce qu'il comprend deux comparateurs logiques (CompP, CompI) destinés à comparer les adresses fournies aux sorties des compteurs (CP, CI) à l'adresse fournie par le processeur (pP), et un circuit logique (LC) permettant d'habiliter en fin de cycle le transfert des données contenues dans la mémoire tampon (BP, BI) qui est censée inclure les données correspondant à ladite adresse seulement si la comparaison effectuée par le comparateur (CompP, CompI) correspondant révèle une identité et à interdire ledit transfert, dans le cas o ladite comparaison révèle une différence. 5. Dispositif selon la revendication 4, caractérisé en ce que le susdit circuit logique (LC) comprend des moyens permettant le chargement par le bus des adresses (AB) des susdits compteurs (CP, CI) et du susdit registre (R). 6. Dispositif selon l'une des revendications 1 et 2, caractérisé en ce qu'il comprend quatre circuits comprenant chacun un compteur (CP, CI), un bloc mémoire (MP, MI) et une barrière (BP, BI), et en ce que le registre (R) est conçu de manière à recevoir un couple de bits de poids faible des adresses engendrées sur le bus adresse (AB), le circuit logique (LC) comportant alors des moyens de décodage pour commander l'incrémentation de l'un des quatre compteurs (CP, CI) ainsi que l'ouverture de l'une des quatre barrières (BP, BI) en fonction de la valeur dudit couple de bits. - 12 - 7. Dispositif selon la revendication 6, caractérisé en ce que quatre comparateurs (CompP, CompI) sont en outre prévus pour comparer les sorties des quatre compteurs (CP, CI) avec l'adresse fournie par le processeur (pP) et pour valider l'adresse anticipée par l'un des compteurs (CP, CI) ou pour interdire l'échantillonnage d'une donnée incorrecte par le processeur.