Brevet FR2775089A1 — publié le 19990820

Circuit intégré comportant une banque de registres partiellement utilisée. L'invention concerne un circuit intégré comportant une banque de registres partiellement utilisée. L'invention concerne plus particulièrement les circuits intégrés dont les banques de registres partiellement utilisées sont réalisées à l'aide d'au moins un circuit de mémoire. Le développement coûteux d'un circuit intégré et la spécificité des opérations que lautilisateurs veut en faire ont augmentés le nombre de circuits programmables. Quel que soit le type de circuits programmables, celui-ci va utiliser un certain nombre de registres internes pour sa configuration et pour son fonctionnement. Les registres internes peuvent être en nombre plus ou moins importants. L'homme du métier connaît sous l'appellation banque de registres le regroupement de registres dans un circuit intégré utilisé par une unité fonctionnelle donnée. Suivant le nombre de registres dans une banque de registres, il est utilisé soit des bascules de mémorisation soit de la mémoire, les bascules ayant pour avantage d'être plus rapide que la mémoire et la mémoire occupant une surface de silicium beaucoup moins importante que des bascules. Lorsque le nombre de registres devient important un système d'adressage est utilisé, notamment pour pouvoir désigner les registres dans un programme ou lors d'un chargement d'information à partir de l'extérieur. Généralement, les registres sont regroupés par type à des adresses successives afin de rendre plus simple la programmation du circuit. Par ailleurs, les fabricants de circuit intégré utilisent souvent des macro-fonctions entourant un coeur de circuit afin de réduire les temps de développement. Un coeur de circuit doit donc être prévu pour fonctionner avec différents éléments qui peuvent utilisés de manière optionnelle. Les circuits de ce genre les plus connus sont les micro-contrôleurs qui associent autour d'un coeur de micro-processeur différents éléments pour réaliser différents types de composants programmables. Par ailleurs, la constitution d'éléments de bibliothèque compatibles permet de réduire fortement les coûts de développement de circuits à la demande. La figure 1 représente un exemple de circuit intégré 1 utilisant un coeur de processeur 2. Le circuit intégré 1 comporte en outre une mémoire 3, une banque de registre 4, un circuit d'horloge 5, des ports de communication 6 à 8, un circuit de contrôle d'alimentation 9 (communément appelé chien de garde de l'anglais WATCHDOG) et douze circuits élémentaires de filtrage 10 à 12. Les différents éléments 2 à 12 sont connectés à un bus central 13 qui englobe un bus de données, un bus d'adresse et un bus de contrôle et commande. Chacun des ports de communication est par ailleurs connecté à respectivement une borne d'entrée/sortie 14 à 16 correspondant avec le type de port associé pour que le circuit intégré 1 puisse communiquer avec des circuits externes. Dans certaines architectures, la banque de registres 4 peut être reliée uniquement avec le coeur de processeur 2 ou peut être connectée à la fois au bus central 13 et au coeur de processeur 2. Dans l'exemple de la figure 1, le circuit intégré 1 a pour fonction d'émuler tout type de filtre numérique et dispose de douze filtres élémentaires 10 à 12 qui sont par exemple des cellules canoniques de filtrage utilisant chacune six coefficient K1 à K6. Chacun des éléments 2 à 12 va partager des registres avec le coeur de processeur 2. La figure 2 représente un exemple de répartition interne de la banque de registre 4. La banque de registre dispose de trois groupes de registres. Un premier groupe de registres correspond aux registres nécessaires au fonctionnement du coeur de processeur 2. Un deuxième groupe correspond aux périphériques standard que l'on retrouve dans la plupart des circuits intégrés 1 à coeur de processeur 2. Les adresses des registres du deuxième groupe sont généralement prédéfinies en fonction des périphériques classiquement utilisés par le coeur de processeur 2. Ainsi les adresses de registre hlO à hlF sont définies comme correspondant à quatre ports de communication, laissant ainsi les quatre registres correspondant aux adresses hlC à hlF vides et indisponible car le circuit intégré 1 ne comporte que trois ports de communication. Un troisième groupe de registres correspond aux périphériques dédiés, dans notre exemple les douze filtres 10 à 12 noté filtre O à filtre 11 sur la partition de la figure 2. Pour des raisons de souplesse d'utilisation chaque périphérique dédié réserve un nombre de registres égal à une puissance de deux, dans notre exemple, huit registres sont réservés. Cette réservation de registres a pour but de simplifier les adressages des registres dédiés aux périphériques. En effet l'adressage des registres se fait en spécifiant sur les bits de poids fort le périphérique concerné et sur les bits de poids faible l'adresse du registre référencé par rapport aux registres disponibles pour un périphérique. Les bits de poids fort correspondent par ailleurs à l'adresse du périphérique. Le calcul d'une adresse de registre pour un périphérique se fait alors en réunissant poids fort et poids faible sans avoir à effectuer de calcul réel d'adresse ce qui entraîne une simplicité de mise en oeuvre et augmente la rapidité du traitement. Dans l'exemple décrit, les filtres élémentaires disposent de six coefficients chacun et n'ont besoin que de six registres chacun ce qui à pour effet d'avoir des registres inutilisés en nombre important. Si la banque de registres est réalisée avec des registres réels (avec des bascules élémentaires), il est connu de l'homme du métier d'omettre les registres inutilisés. Cependant lorsque la banque de registres est de taille importante par exemple 128 mots de 32 bits chacun, une mémoire même partiellement utilisée occupe une surface beaucoup moins importante sur la puce. Les mémoires étant réalisées de manière optimisée pour être compacte, il n'est pas possible de les modifier pour supprimer les éléments de mémorisation répartis de manière dispersée dans la matrice de mémorisation. La perte de surface engendrée par les trous dans la banque de registres représente environ 25k de la taille de ladite banque dans notre exemple. En terme de transistors, pour l'exemple considéré, cela représente plus de 6000 transistors pour une mémoire statique organisée en 32 bits. L'évolution des coeurs de processeur et du nombre de périphériques gérés par le coeur de processeur tend à rendre la taille de cette place inutilisable de plus en plus importante. L'invention a pour but de remédier au moins partiellement et simplement aux problèmes de surdimentionnement des circuits spécifiques. L'invention consiste à ajouter un circuit de redirection d'adresse devant le bus d'accès d'une mémoire contenant une banque de registres afin de regrouper les adresses utiles pour utiliser une mémoire de taille plus réduite, les adresses non utilisées étant redirigées dans une zone de la mémoire que l'on n'implémente pas sur le circuit. L'invention a pour objet un circuit intégré comportant au moins un coeur de processeur, au moins une banque de registres adressée par le coeur de processeur et au moins un bus d'adresse servant à convoyée une adresse associée à un registre de la banque par le coeur de processeur, la banque comportant un circuit de logique combinatoire entre au moins une entrée d'adresse d'une mémoire de la banque et le bus d'adresse pour modifier l'adresse physique du registre dans la mémoire. Dans un mode de réalisation particulier, le circuit intégré dispose d'un bus d'adresse qui est utilisé par une pluralité de périphériques ayant également accès à la banque de registres. L'invention sera mieux comprise et d'autres particularités et avantages apparaîtront à la lecture de la description qui va suivre, la description faisant référence aux dessins annexés parmi lesquels: la figure 1 représente un circuit intégré utilisant un coeur de processeur selon l'art antérieur, la figure 2 représente un plan d'adressage de banques de registres selon l'art antérieur, la figure 3 représente une banque de registres selon l'invention, et la figure 4 représente une redirection d'adresses de registres selon l'invention. La figure 3 représente la banque de registres 4 modifiée selon l'invention pour être incorporée dans le circuit intégré de la figure 1. La banque de registres 4 comporte une mémoire 301 et un circuit de logique combinatoire 302. La mémoire 301 dispose d'entrées d'adresses, d'entrées/sorties de données, et d'entrées de commande. Les entrées/sorties de données et les entrées de commande de la mémoire 301 sont connectées aux bus correspondant du bus central 13. Le circuit de logique combinatoire 302 dispose d'entrées et de sorties, les entrées étant connectées au bus d'adresse du bus central 13, et les sorties étant connectées aux entrées d'adresses de la mémoire 301. Le circuit de logique combinatoire 302 va mélanger les adresses provenant du bus central afin de regrouper les adresses utiles dans la mémoire. Les relations entre les entrées et sorties du circuit de logique combinatoire sont définies par des équations logiques qui font correspondre une adresse à chacune des adresses présentes sur le bus central. Il est possible, pour simplifier les équations, que des adresses inutilisées puisse pointer sur une même adresse car les emplacements de mémorisation correspondant sont absent du circuit intégré. Par contre, en aucun cas deux adresses utilisées ne doivent pointer sur une même adresse. La figure 4 représente un exemple de mise en oeuvre du circuit de logique combinatoire 302 appliqué au circuit intégré 1 de la figure 1. Cette figure 4 comporte une première cartographie 401, une deuxième cartographie 402 et une table de conversion 403. La première cartographie 401 correspond à la cartographie des adresses de registres utilisés par le coeur de processeur 2 et les autres éléments du circuit intégré 1. La deuxième cartographie 402 correspond à la disposition des registres dans la mémoire 301. La table de conversion 403 indique les équations logiques à réaliser dans le circuit de logique combinatoire 302 pour avoir le mélange d'adresse indiqué. Sur la première cartographie 401, les emplacements marqués "réservé" indiquent les registres non-utilisés dans la configuration du circuit intégré 1. On remarque que les ports de communication n'utilisent que trois registres sur les quatre qui leurs sont alloués. De même pour les filtres, seuls les six premier registres sur les huit alloués sont utilises. Le nombre des registres nonutilisés est de 35 sur un total de 128 registres, soit 27% de la mémoire. Le nombre de combinaison pour regrouper les registres utilisés et les registres non-utilisés est relativement important. La table de correspondance 403 correspond à une série d'équation possible qui permet de regrouper 32 des registres inutilisés à la fin de la mémoire. Dans la table de correspondance, il est noté Ai la donnée présente sur le fil de poids i à l'entrée de la mémoire 301; il est noté ai la donnée présente sur le fil de poids i du bus d'adresse contenu dans le bus central 13; les points correspondent à des opérations logiques ET; les symboles "+" correspondent à des opérations logiques OU; et les barres horizontale correspondent à l'opération logique NON. La taille de mémoire nécessaire est de 96 mots au lieu des 128 mots nécessaires. On peut remarquer qu'il reste encore trois mots sur 96 qui sont inutilisés mais ce n'est pas gênant si la mémoire utilisée dispose d'une matrice qui comporte des lignes de quatre mots car on ne peut jouer que sur le nombre de lignes de la matrice de mémorisation. Lors du fonctionnement du circuit intégré 1, toutes les adresses sont redirigées automatiquement par le circuit de logique combinatoire 302 pour correspondre à l'emplacement réel dans la mémoire 301. A titre d'exemple, si le coeur de processeur 2 veut accéder au registre qui contient le coefficient K1 du filtre 1, il va adresser le registre d'adresse h28 et le circuit de logique combinatoire 302 va transformer cette adresse afin d'accéder au registre placé à l'adresse h05 de la mémoire 301. De même, l'adresse inutilisée hlC est transformée par le circuit de logique combinatoire 302 en adresse h72 qui pointe en dehors de la mémoire 301. De nombreuse variantes de réalisation sont possibles en fonction des différents cas de figure qui peuvent se présenter. Par ailleurs, il est possible d'imaginer que les mémoires de bibliothèque puissent également configurer avec un nombre de colonnes variable. Dans ce cas, il est possible dans notre exemple de disposer les emplacements vides sur une ou plusieurs colonnes à une extrémité de la matrice de mémorisation. Pour l'exemple décrit, il est possible avec une matrice organisée en quatre colonnes de mots de déplacer les emplacements inutilisés sur la colonne correspondant aux adresses bXXX XX11 afin de supprimer la colonne de mots placée à l'extrémité de la matrice de mémorisation. Par ailleurs, la mémoire sera alors organisées par lignes de trois mots ce qui permettra de placer les trois emplacements inutilisés aux adresses h7C à h7E et de supprimer une ligne de la matrice. Il est évident que l'invention peut s'appliquer à toute unité fonctionnelle équivalente à un coeur de processeur. L'équivalence de l'unité fonctionnelle doit s'apprécier sur la capacité d'adressage d'une banque de registres et non par rapport aux différentes autres fonctions d'un coeur de processeur. REVENDICATIONS 1. Circuit intégré (1) comportant au moins un coeur de processeur (2), au moins une banque de registres (4) adressée par le coeur de processeur (2), et au moins un bus d'adresse (13) servant à convoyer une adresse associée à un registre de la banque (4) par le coeur de processeur (2), caractérisé en ce que la banque (4) comporte un circuit de logique combinatoire (302) entre au moins une entrée d'adresse d'une mémoire (301) de la banque (4) et le bus d'adresse pour modifier l'adresse physique du registre dans la mémoire (301). 2. Circuit selon la revendication 1, caractérisé en ce que le bus d'adresse (13) est utilisé par une pluralité de périphériques (5 à 12) ayant également accès à la banque de registres (4).