Brevet FR2742891A1 — publié le 19970627

La présente invention concerne un procédé pour fournir un ensemble d'instructions à un processeur. Les processeurs universels exécutent des fonctions en réponse à un ensemble d'instructions qui forment un programme. Celui-ci est stocké dans une mémoire de programme. La capacité de la mémoire nécessaire au stockage du programme est liée à la longueur du mot- instruction et au nombre des étapes d'instruction du programme. Les instructions présentes dans la mémoire du programme sont utilisées pour produire des signaux de commande parallèles dans une unité de décodage qui commande les opérations exécutées par le processeur. La complexité de la logique nécessaire à la traduction des mots-instructions en commande est liée à la longueur des mots- instructions entrant dans l'unité de décodage. Dans le but de rendre optimales les performances d'un processeur en termes de vitesse et de consommation d'énergie, il est souhaitable de fournir au concepteur du logiciel autant d'instructions que possible, lui permettant d'accéder à la pleine fonctionnalité du processeur. Si l'on utilise un ensemble de mots-instructions entièrement flexible, spécifiant individuellement chaque fonction que le processeur peut exécuter, le concepteur dispose d'un maximum de liberté pour concevoir la mise en oeuvre optimale d'un algorithme. Un ensemble d'instructions efficace permettant d'accéder totalement à la fonctionnalité d'un processeur qui satisfait les besoins futurs en matière de performances de l'industrie des télécommunications est de loin supérieur à 16 bits, ce qui constitue la norme courante. Aux présentes fins, on suppose qu'un mot- instruction de 90 bits convient. Des ensembles d'instruc- tions encore plus grands peuvent cependant être souhaitables à un certain moment, se traduisant par des mots-instructions encore plus longs. Avec des mots-intructions de 90 bits, la mémoire de programme peut être aussi grande que 90 bits et de l'ordre de 16 bits de long pour tenir compte du programme 2 2742891 devant mettre en oeuvre un algorithme typique de processeur pour radiotéléphonie. Cela présente l'inconvénient que, pour des applications de faible coût, une grande mémoire est néces- saire pour stocker le programme car les mots-instructions auront 90 bits de long. L'interface entre la mémoire de programme et le décodeur d'instruction doit avoir des interconnexions additionnelles pour permettre la réception des mots-instructions de 90 bits par l'unité de décodage. Cela, là encore, augmente la taille et la consommation d'énergie du processeur. Finalement, la logique nécessaire pour mettre en oeuvre l'unité de décodage augmente en proportion à peu près directe avec le nombre des broches d'entrée. Par conséquent, l'unité de décodage est davantage complexe et donc plus chère. Dans les articles du commerce alimentés par batterie dans lesquels le coût et la consommation d'énergie sont une préoccupation considérable pour le concepteur, il y a lieu de faire un compromis entre la souplesse de l'ensemble d'instructions et le rendement énergétique et la longueur des mots-instructions et l'augmentation du coût. Une solution classique pour résoudre cet antago- nisme consiste à établir la longueur des mots-instructions en déterminant à l'avance un nombre limité d'instructions dans lesquelles le concepteur est à même de faire un choix. Le choix de l'ensemble d'instructions limitées est d'impor- tance considérable et concernera généralement les instruc- tions perçues comme étant les plus utiles pour une gamme de fonctions que le processeur pourrait avoir à exécuter. Cette solution a l'inconvénient que si l'ensem- ble d'instructions limitées ne comprend pas une instruction particulière ou les blocs de construction de cette instruc- tion, bien que le processeur ait un matériel capable de fonctionner en conformité avec cette instruction, il ne sera pas à même de fonctionner de cette façon. Cela peut conduire à des compromis de conception qui peuvent réduire l'effica- cité du dispositif que le processeur entraîne et rendre les performances requises pour le dispositif commandé par le processeur difficiles à atteindre. Si l'ensemble d'instructions ne comprend pas une instruction particulière, il peut être encore possible de créer la même instruction en combinant un certain nombre d'autres instructions. Cela se traduira inévitablement par une plus grande consommation d'énergie lors de la fourniture des performances désirées que si l'instruction désirée avait fait partie de l'ensemble des instructions limitées. Selon la présente invention, on fournit un procédé pour concevoir un processeur pouvant fonctionner en réponse à des signaux de commande produits par des program- mes composés de mots-instructions,- le processeur étant capa- ble d'exécuter un ensemble de fonctions et de fonctionner pour exécuter chaque fonction de l'ensemble en réponse à un mot respectif de commande, chaque mot de commande ayant une relation réciproque avec un mot-instruction respectif d'un ensemble d'instructions d'origine, le procédé comprenant l'écriture d'un programme pouvant fonctionner pour commander le processeur en utilisant des instructions choisies dans l'ensemble d'instructions d'origine, la sélection d'un sous- ensemble de mots-instructions dans l'ensemble d'instructions d'origine comprenant les instructions utilisées dans le programme, le changement de nom des instructions respectives du sous-ensemble et la fourniture d'un moyen pour produire les mots de commande respectifs ayant une relation réci- proque avec les mots-instructions du sous-ensemble en réponse aux motsinstructions correspondants ayant changé de nom. En choisissant l'ensemble d'instructions rédui- tes que le processeur doit utiliser avec la connaissance du programme avec lequel le processeur fonctionnera, il n'est pas nécessaire de faire un compromis entre la longueur des mots-instruction et les performances. Les performances sont les mêmes que celles rendues possibles en employant l'ensem- ble d'instructions d'origine car la sélection des mots pour le programme est faite à partir de cet ensemble. Cependant, la longueur d'un mot peut être aussi courte que possible pour le nombre des mots individuels du programme que le processeur devra passer. La longueur réduite d'un mot-instruction permet au décodeur d'instruction d'être plus simple, réduisant le nombre et le coût des composants et la consommation d'éner- gie. La mémoire de programme nécessaire au stockage de l'algorithme d'exploitation est également réduite en termes tant de largeur du motinstruction ayant changé de nom qu'en longueur par suite de l'expression plus succincte de la fonctionnalité du processeur. Dès que le décodeur d'instruction a été conçu, il n'y a aucune opportunité à ajouter des instructions supplémentaires au processeur. Si les mots de code qui représentent une instruction, ou les blocs de construction d'une instruction, n'existent pas, une fonction ne peut être exécutée. Pour donner davantage de souplesse au concepteur dès que le processeur a été développé, le sous-ensemble de mots-instructions peut comprendre des mots-instructions additionnels correspondant aux mots de commande potentiel- lement utiles. Ces instructions additionnelles peuvent comprendre celles qui sont utiles pour corriger les erreurs typiques du programme ou peuvent inclure certaines instruc- tions de base afin de permettre le support d'autres fonctions. Dès que le nombre des mots-instructions individuels du programme a été déterminé, la longueur de mot la plus courte permettant de libeller individuellement ces instructions peut être établie. Il est probable qu'il y aura des mots de réserve dès que le sous-ensemble de mots- instructions a changé de nom en utilisant la longueur de mot la plus courte possible. Le nombre des mots qui ne sont pas nécessaires pour identifier de manière unique le sous- ensemble des mots-instructions peut être suffisamment grand pour que ceux-ci puissent être utilisés pour supporter les instructions additionnelles. Cependant, cette redondance pourrait être exploitée pour simplifier la logique des 2742891 moyens de production des mots de commande respectifs. Un mot-instruction ayant changé de nom, plus long que le minimum nécessaire à l'identification de manière unique des mots-instructions respectifs du sous-ensemble peut être utilisé pour établir une certaine redondance et permettre de réduire la complexité de la logique. Le procédé selon la présente invention présente l'avantage que le programmeur peut atteindre des perfor- mances optimales car il peut utiliser un ensemble d'instruc- tions totalement flexible. En théorie, il n'y a aucune limite au nombre des instructions qui peuvent être fournies dans le premier ensemble d'instructions autres que les fonctions que le processeur peut exécuter. Le facteur de limitation de la largeur de la mémoire de programme et de la taille du décodeur d'instruction est le nombre d'instruc- tions uniques utilisées pour la mise en oeuvre de l'algorithme. La longueur ainsi que la largeur de la mémoire de programme et la taille du décodeur d'instruction sont rendues minimales, présentant des avantages en matière de coût et de puissance. Le procédé peut être automatisé dès que le programme a été déterminé de sorte qu'il peut être intégré dans des procédés existants et peut être facilement répété pour une série de programmes différents afin de donner à une série de processeurs des ensembles d'instruc- tions optimisées, le cas échéant. La mémoire réduite et le décodeur d'instruction de taille réduite permettent de diminuer la consommation d'énergie du dispositif pour des performances données. Pour des programmes devant utiliser un grand nombre d'instructions communes, un seul processeur pourrait être mis au point pour faire passer un certain nombre de programmes différents. Le sous-ensemble de mots-instructions pourrait alors être déterminé en utilisant plusieurs programmes devant être utilisés pour plusieurs applications. La longueur de mot nécessaire à supporter les fonctions respectives devra être prise en considération et tout cela devra faire contrepoids aux avantages de la banalisation. Cependant, les avantages de la présente inventions seront conservés car le sous-ensemble d'instructions pouvant être exploité pour commander le processeur sera déterminé avec la pleine connaissance des programmes que le processeur devra faire passer. La présente invention sera mieux comprise lors de la description suivante faite en liaison avec les dessins annexés dans lesquels: La figure 1 est un schéma sous forme de blocs d'une mémoire centrale de processeur; La figure 2 est un organigramme de développement de logiciel; et La figure 3 est un organigramme du processus de tassement de mémoire morte d'un mode de réalisation de l'invention. L'une des utilisations des procédés selon la présente invention concerne la conception d'un Processeur de Signal Numérique (PSN). On décrira l'invention en liaison avec la réalisation d'un PSN pour les algorithmes d'une bande de base d'un radiotéléphone. La figure 1 représente une vue d'ensemble de l'architecture d'un PSN. Un programme écrit par des ingénieurs PSN est stocké dans une mémoire morte programmable 10. Une adresse de programme est généralement spécifiée sur un bus d'adresses de programme (BAP) 11 de 16 bits par une unité 12 d'extraction et de décodage (UED). L'instruction à cet emplacement de la mémoire de programme est chargée dans le décodeur d'instruction 13 de l'unité UED 12 via le bus des données de programme (BDP) 14. Dans un dispositif PSN de conception classique, entièrement flexible (c'est-à-dire qui supporte un ensemble complet d'instructions), le BDP 14 peut avoir une largeur, par exemple, de 90 bits. Les instructions chargées dans le décodeur d'instruction 13 sont décodées pour produire des mots de commande, c'est-à-dire les signaux nécessaires pour comman- 7 2742891 der l'unité de traitement de données 15 (UTD), l'unité de génération d'adresses de mémoire des données (UGAM) 16 qui adresse les contenus des mémoires de données 17, l'UED ou des accès de bus pour fournir des données pour le programme. Un PSN de la technique antérieure et un PSN selon la présente invention ne fonctionneront pas dans d'une manière différente. Un PSN produit en conformité avec la présente invention aura, cependant, une plus petite mémoire de programme 10, un BDP 14 de largeur réduite, et un décodeur d'instruction 13 plus petit à l'intérieur de l'UED 12 qu'un PSN classique fournissant la même fonctionnalité. On décrira ci-dessous, en liaison avec les figures 2 et 3, un procédé selon.la présente invention qui produit un processeur de signaux numériques pour radio- téléphone ayant les avantages discutés ci-dessus. Comme avec les procédés de l'art antérieur, les algorithmes de bande de base doivent être codés, c'est-à- dire que le ou les programmes doivent être écrits. Cependant,-alors que dans les procédés de la technique antérieure une décision aura déjà été prise à ce stade en ce qui concerne le compromis entre l'ensemble d'instructions mis à la disposition du programmeur et la longueur des mots- instructions acceptable, le concepteur aura accès, selon la présente invention, à un ensemble complet d'instructions. En figure 2 on représente un procédé selon la présente invention. Comme étape initiale, le fichier source est écrit (20). Ce fichier est un fichier de texte entré dans l'ordinateur par le programmeur. Le fichier de texte est constitué des instructions en langage d'assemblage et de macro "instructions" de haut niveau, qui sont des fonctions pré-définies écrites en langage d'assemblage. Le processeur (21) traduit alors automatiquement toutes les macro instructions en source d'assembleur (22) qui sont des instructions en langage d'assemblage. L'assembleur traduit alors le fichier source en langage d'assemblage (23), qui peut être compris par le programmeur, en fichiers objets (24), qui peuvent être compris par le processeur. Pour les grandes applications PSN, il est probable que le programme sera fractionné en plusieurs fichiers sources. Un éditeur de lien (25) prend tous les fichiers objets correspondants et les lie pour former un fichier exécutable (26). Dès que les algorithmes pour le fichier exécutable ont été codés, ils seront simulés dans un simulateur (27) et leur exactitude sera vérifiée. Le code est alors gelé. Dans un mode de réalisation de la présente invention, aucun changement ne sera apporté aux algorithmes codés après ce point car l'ensemble d'instructions mis à disposition pour emploi est maintenant défini. Cependant, on discutera ultérieurement un exemple pour indiquer comment des changements de l'algorithme peuvent encore être faits après ce stade bien qu'idéalement aucun autre changement ne soit nécessaire. Dès que l'algorithme a été vérifié, le convertisseur de format d'objet (28) convertit le fichier exécutable (26) en un format qui peut être utilisé pour produire la mémoire de programme. D'autres stades du processus peuvent alors être suivis en utilisant un outil appelé aux fins de la présente description un compacteur de mémoire morte (29) afin de permettre le support par le PSN des seules instructions utilisées dans les algorithmes. Le fichier exécutable (26), qui est la sortie de l'éditeur de lien (25), est converti en un format que le compacteur peut utiliser (30) via le convertisseur de format d'objet (28). Pour un programme ou un algorithme de longueur typique pour un radiotéléphone, environ 25 000 des 290 ensembles d'instructions disponibles seront utilisés. De manière à identifier uniquement chacune des 290 instructions, il faut une longueur de mot de 90 bits. Les 25 000 mots individuels réels pourraient être spécifiés en utilisant un mot de 16 bits. En général, 2N mots peuvent être uniquement identifiés en utilisant un mot de N bits. Il n'y a aucune corrélation entre le nombre des instructions que l'ensemble d'instructions entièrement flexible fournit et le nombre des instructions utilisées dans le codage de l'algorithme. Si l'on imagine un algorithme codé en utilisant 25 000 lignes de code, il y aura au plus 25 000 instructions individuelles utilisées. Certaines instructions seront presque inévitable- ment utilisées plus d'une fois. Toute duplication se traduira par une réduction du nombre des instructions uniques employées pour écrire le code. Le programme est analysé et chaque mot- instruction utilisé dans le programme est noté (31). Les instructions non-utilisées dans le programme sont ignorées. Le résultat est un ensemble d'instructions réduit (32) qui contient seulement les instructions réellement utilisées dans le programme. Si nécessaire, un sous-ensemble d'instructions qui peut être utile pour la mise au point de programmes peut être ajouté à l'ensemble d'instructions réduites (33) afin de donner un ensemble d'instructions limitées (34). Il peut être également souhaitable d'inclure d'autres sous-ensembles de l'ensemble d'instructions d'ori- gine qui peuvent être utilisés si des changements sont apportés au programme. Naturellement, à chaque fois qu'un sous-ensemble désirable d'instructions est pris en considé- ration, la liste des instructions du programme sera vérifiée afin d'éviter la duplication des instructions. Le concepteur devra décider si les avantages contrebalencent les inconvé- nients dans le cas o l'inclusion d'instructions addition- nelles nécessite l'addition d'une ligne supplémentaire au PSN et d'une broche supplémentaire conséquentielle au décodeur d'instruction ou enlève une partie de la redondance utile pour simplifier la conception du décodeur d'instruction. Cependant, en commençant avec l'ensemble des instructions réellement utilisées dans le codage d'un algorithme la pleine liberté de conception de l'ensemble entièrement flexible a été utilisée et il n'y a aucun compromis entre performances et longueur de mot. Des instructions additionnelles ajoutées à la capacité du processeur peuvent être employées pour un certain degré de 2742891 flexibilité après le codage de l'algorithme. Tout changement sera des plus vraissemblablement limité à la correction des erreurs et des instructions additionnelles peuvent être choisies en ayant cela à l'esprit. -Maintenant, le compacteur de mémoire morte détermine la largeur nécessaire des bits (35). Cela est déterminé en examinant le nombre total des instructions dans l'ensemble d'instructions réduites ou limitées. La largeur de bit est la largeur des mots qui seront utilisés pour changer le nom des ensembles d'instructions réduites ou limitées employés pour coder les instructions. Les instructions sont alors triées pour grouper des instructions similaires. Chacune des instructions est l'objet d'une relation réciproque avec un mot de commande qui fournit les signaux pour commander la fonction du PSN. Dès que l'ensemble d'instructions utilisé dans le programme a été identifié, celles-ci peuvent recevoir un préfixe respectif. Cela permet de trier facilement les instructions de façon que des instructions similaires soient placées ensemble pour rendre minimale la logique résultante dans le décodeur d'instruction. Pour minimiser encore la logique du décodeur, toute redondance résultant d'un nombre d'instructions inférieur à 2N est utilisée dans ce processus de trie. La largeur de mot choisie peut nécessiter une certaine redondance incorporée additionnelle afin de permettre à la logique du décodeur d'instruction 13 de rester simple. La largeur de bit choisie peut par conséquent être plus longue que le minimum nécessaire pour identifier de manière unique l'ensemble des instructions réduites ou limitées. Dès qu'elles sont triées, les instructions sont codées en utilisant des nombres binaires (36). Simplement, le nouveau mot-instruction pourrait être la ligne sur la liste triée des instructions uniques. Cela se traduit par un ensemble d'instructions codées de manière optimale (37). Le fichier exécutable 26 est alors réécrit automatiquement (38) en remplaçant les vieux mots-instructions par les nouveaux il 2742891 mots-instructions correspondants afin de produire un nouveau code de programme (39) qui peut être stocké dans une mémoire de programme de largeur réduite (40). La mémoire de programme peut être adressée de la manière classique en utilisant un bus d'adresses de 16 bits. Cependant, le bus des données de programme, au lieu d'être de 80 ou de 90 bits comme cela aurait été nécessaire si le programme avait été écrit en utilisant l'ensemble d'instructions d'origine, sera au contraire d'une longueur de 15 ou 16 bits en fonction de la quantité de duplication dans le programme. Pour la mise en oeuvre du programme, un décodeur d'instruction qui fournit des mots de commande ayant une relation réciproque avec les nouveaux mots-instructions respectifs est nécessaire. Le décodeur d'instruction est une unité logique qui fournit la sortie corrélée du mot de commande en réponse à l'entrée d'un mot respectif des nouveaux mots-instructions. La logique du décodeur est produite (41) en faisant la-corrélation de chaque nouveau mot-instruction avec le mot de commande associé à l'ancien mot-instruction. Les entrées et les sorties d'un décodeur d'instruction sont ainsi spécifiées. Des langages de description du matériel sont disponibles pour spécifier les entrées et les sorties d'un décodeur d'instruction. Ceux-ci sont alors utilisés en conjonction avec un outil tel que le Synopsys pour déterminer un agencement logique approprié pour le décodeur d'instruction. Cet outil produit une liste d'interconnexions du décodeur d'instruction (42), fournissant un flux (43) de conception ASIC (Circuit Intégré Spécifique d'Application) pour produire la logique pour le décodeur d'instruction. Dès que la disposition du décodeur d'instruction a été déterminée, celuici peut être fabriqué avec les autres circuits de l'unité d'extraction et de décodage et la mémoire de programme. Les divers blocs du PSN seront généralement intégrés sur un circuit ASIC. Dans un autre mode de réalisation, au lieu de concevoir un processeur spécialisé pour une application 12 2742891 spécifique, un processeur capable de faire passer deux programmes ou plus avec un haut degré de banalisation, c'est-à-dire des programmes utilisant une grande mémoire d'instructions similaires, pourrait être conçu. La présente invention n'est pas limitée aux exemples de réalisation qui viennent d'être décrits, elle est au contraire susceptible de variantes et de modifications qui apparaîtront à l'homme de l'art. En particulier, l'invention est applicable à la conception de processeurs pour des dispositifs autres que des radiotéléphones REVENDICATIONS 1 - Procédé pour concevoir un processeur pouvant fonctionner en réponse à des signaux de commande produits par des programmes constitués de motsinstructions, le processeur étant capable d'exécuter un ensemble de fonctions et pouvant fonctionner pour exécuter chaque fonction de l'ensemble en réponse à un mot de commande respectif, chaque mot ee commande ayant'une relation réciproque avec un mot- instruction respectif d'un ensemble d'instructions d'origine, caractérisé en ce qu'il comprend l'écriture d'un programme pouvant être exploité pour commander le processeur en utilisant des instructions choisies dans l'ensemble d'instructions d'origine, le choix d'un sous- ensemble de mots-instructions dans l'ensemble d'instructions d'origine comprenant les instructions utilisées dans le programme, le changement de nom des instructions respectives du sous- ensemble et la fourniture d'un moyen pour produire les mots de commande respectifs ayant une relation réciproque avec les mots-instructions du sous-ensemble en réponse aux mots- instructions correspondants qui ont changé de nom. 2 - Procédé selon la revendication 1, caractérisé en ce que le programme formé à partir des instructions ayant changé de nom est stocké dans une mémoire de programme (10). 3 - Procédé selon la revendication 1 ou 2, caractérisé en ce que le moyen de production comprend un décodeur d'instruction (13). 4 - Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que la fonctionnalité du processeur est confirmée en utilisant une application codée dans l'ensemble d'instructions d'origine. - Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que le sous- 14 2742891 ensemble d'instructions comprend des instructions pour exécuter les fonctions désirables pour la correction des erreurs. 6 - Procédé selon l'une quelconque des revendications précédentes, caractérisé en ce que les instructions ayant changé de nom ont une longueur minimum de sorte que chaque mot-instruction du sous-ensemble peut être identifié de manière unique. 7 - Procédé selon l'une quelconque des revendications 1 à 5, caractérisé en ce que les instructions ayant changé de nom sont plus longues que la longueur minimum de chaque mot-instruction du sous-ensemble de manière à être uniquement identifiables.