Brevet FR2708359A1 — publié le 19950203

"Procédé pour exploiter un processeur numérique de signal et dispositif mettant en oeuvre le procédé." DESCRIPTION: La présente invention concerne un procédé pour exploiter un processeur numérique de signal muni d'un interpréteur d'instructions destiné à assurer l'exécution d'instructions placées dans une mémoire de programme, contenue dans le processeur numérique de signal, le dit processeur étant en outre associé à une mémoire extérieure contenant des instructions à exécuter, qui sont amenées séquentiellement dans la dite mémoire de programme. L'invention concerne aussi un dispositif comportant un processeur numérique de signal muni d'un interpréteur d'instructions destiné à assurer l'exécution d'instructions placées dans une mémoire de programme, contenue dans le processeur numérique de signal, le dispositif comportant en outre une mémoire extérieure au processeur numérique de signal, contenant des instructions à exécuter, et étant muni de moyens pour amener séquentiellement les dites instructions dans la dite mémoire de programme. De tels processeurs numériques de signal, qui sont appelés couramment "DSP" (pour: "Digital Signal Processor"), sont utilisés depuis environ 1980 dans le monde industriel, essentiellement pour les calculs numériques en temps réel. Ils peuvent aussi être utilisés en temps différé, par exemple en simulation et traitement d'images. Ils sont en outre employés dans des matériels grand-public, par exemple dans des terminaux de télématique, par exemple pour des applications de traitement de signaux audio, ou dans des MODEMs. Un processeur numérique de signal est un microprocesseur spécialisé dans le calcul numérique en temps réel. Son architecture est déterminée essentiellement par la recherche de la plus grande vitesse de calcul, au détriment des commodités de programmation et surtout de la capacité de mémoire, notamment de la mémoire de programme. C'est pourquoi on a imaginé d'utiliser une mémoire extérieure contenant un programme d'application, éventuellement de grande taille, et dont les instructions sont amenées séquentiellement dans la dite mémoire de programme du processeur numérique de signal. Un dispositif mettant en oeuvre une telle procédure est connu du document EP-A-0 472 386. Selon ce document un processeur numérique de signal interprète les instructions d'une mémoire de programme interne, dont les éléments logiciels sont des portions d'un programme d'application plus grand qui y sont amenées sous le contrôle d'une unité centrale, autrement dit d'un microprocesseur principal auquel le processeur numérique de signal est associé, ce microprocesseur principal stockant le dit programme d'application dans une bibliothèque de programmes, placée dans une mémoire autre que celle du processeur numérique de signal. L'invention se propose de rendre plus économique la réalisation d'un système utilisant un processeur numérique de signal avec un programme d'application de grande taille, notamment en permettant de se passer du microprocesseur principal, mentionné plus haut, pour contrôler la gestion du transfert des instructions, depuis la mémoire contenant le programme d'application, vers la mémoire de programme du processeur numérique de signal. Ceci est obtenu du fait qu'on place dans la propre mémoire de programme du processeur numérique de signal une couche logicielle constituée d'instructions pour lire des instructions dans la mémoire extérieure et en gérer le transfert vers la mémoire de programme. Un dispositif selon l'invention est ainsi remarquable en ce que les dits moyens pour amener séquentiellement les dites instructions sont constitués par une couche logicielle située à l'intérieur même de la mémoire de programme du processeur numérique de signal, couche logicielle constituée de moyens logiciels pour lire des instructions dans la mémoire extérieure et en gérer le transfert vers la mémoire de programme. L'invention repose donc sur l'idée d'utiliser une partie (environ 30%) de la mémoire du processeur numérique de signal pour y placer en quelque sorte une unité centrale rudimentaire. Un avantage additionnel de procéder ainsi est que l'on peut en outre gagner du temps sur les opérations de transfert des instructions de la mémoire externe vers la mémoire interne, du fait qu'un processeur numérique de signal est en général plus rapide qu'un microprocesseur. Avantageusement la dite couche logicielle est pourvue de moyens logiciels pour, lorsque l'instruction courante dans la mémoire externe est interprétable par l'interpréteur du processeur numérique de signal, la transférer directement dans la mémoire de programme, et pour traiter directement une instruction courante de la mémoire externe, lorsque cette instruction est une instruction de direction qui n'est pas interprétable par l'interpréteur du processeur numérique de signal. En outre la dite couche logicielle est avantageusement pourvue de moyens logiciels pour gérer une pile, et pour gérer une pagination dans la mémoire externe. Une telle organisation est très souple et adaptable puisqu'il suffit de modifier la couche logicielle qui gère les instructions extérieures pour permettre l'emploi de nouveaux types d'instructions, par exemple de type "MACRO". Ces aspects de l'invention ainsi que d'autres aspects plus détaillés apparaitront plus clairement grâce à la description suivante d'un mode de réalisation non limitatif. La figure 1 représente très schématiquement une partie d'un dispositif comportant un processeur numérique de signal associé à une mémoire externe contenant des instructions à exécuter. La figure 2 représente très schématiquement un terminal télématique muni d'un écran d'affichage et d'un processeur numérique de signal. La figure 3 est un diagramme fonctionnel illustrant le fonctionnement des moyens logiciels qui lisent des instructions dans la mémoire extérieure et en gèrent le transfert vers la mémoire de programme. Le fonctionnement du dispositif sera décrit à titre d'exemple avec référence à un traitement de signal audio de type téléphonique, signal qui est transformé en échantillons numériques comprimés, au moyen d'un échantillonnage réalisé toutes les 125 PS. Une telle compression des données nécessite des calculs très rapides effectués en temps réel pour chaque échantillon. Il est clair pourtant que le dispositif pourrait aussi s'appliquer à tout autre calcul numérique en temps réel ou en temps différé. Le dispositif dont le schéma est représenté sur la figure 1 comprend un processeur numérique de signal 1 muni d'un interpréteur d'instructions 2 destiné à assurer l'exécution d'instructions 3 placées dans une mémoire de programme 4, elle même contenue dans le processeur numérique de signal 1, ces instructions traitant des données contenues dans la mémoire de données 9, elles aussi amenées (puis éventuellement renvoyées) depuis (ou vers) une mémoire extérieure plus grande, sous la commande de certaines instructions 3. Le processeur numérique de signal comprend deux mémoires et deux bus distincts, les mémoires 4 et 9 respectivement pour le programme et pour les données, et les bus 8 et 7 respectivement pour le programme et pour les données. La mémoire 4 a habituellement une taille de l'ordre de quelques milliers d'instructions. Le dispositif comporte en outre une mémoire 5 extérieure au processeur numérique de signal, contenant des instructions 10 d'un programme d'application à exécuter, par exemple un programme de compression de données audio. Des moyens logiciels, constitués par une couche logicielle 6 dite "noyau" qui est placée à l'intérieur même de la mémoire de programme 4 du processeur numérique de signal, permettent d'amener séquentiellement les instructions 10 à la place des instructions 3 dans la mémoire 4. Ceci est possible sans difficulté du fait qu'un processeur numérique de signal est en général capable d'adresser des mémoires extérieures de grande taille, et est capable en outre de gérer plusieurs taches simultanément, ce qui permet de traiter le signal audio au moyen des intructions 3 tout en mettant à jour ces instructions au moyen des instructions 6 (il s'agit d'une sorte d'auto-programmation). Les instructions 6 en question sont exécutées pendant des temps libres. L'exécution des instructions 6 de noyau au moyen de l'interpréteur 2 permet de lire des instructions dans la mémoire 5 et d'en gérer le transfert vers la mémoire de programme 4. Ce noyau possède notamment des instructions ou "codes" permettant de gérer un pointeur pour désigner l'instruction courante dans la mémoire externe. Une instruction courante est d'abord lue et enregistrée dans une mémoire tampon. Puis elle est analysée (par des instructions du noyau) pour savoir si elle est interprétable par l'interpréteur 2. Si cela est le cas, le noyau transfère directement cette instruction de la mémoire 5 dans la mémoire de programme 4. Lorsqu'au contraire cette instruction est une instruction de direction (saut vers une adresse non consécutive dans la mémoire 5, ou code conditionnel impliquant un saut subséquent) qui n'est pas interprétable par l'interpréteur du processeur numérique de signal, alors le noyau l'interprète lui même (c'est-à-dire qu'il peut par exemple avoir à chercher l'adresse nouvelle dans la mémoire 5, suite à une instruction 10 de type "aller à") et l'exécute jusqu'à ce qu'il retrouve une instruction 10 exécutable par l'interpréteur 2. Le noyau est donc à la fois un éditeur et un interpréteur des instructions 10. Pour lui donner les moyens d'une telle exécution de certaines instructions 10, le noyau est muni d'un pointeur de pile pour gérer une pile supplémentaire. Comme la propre pile du processeur numérique de signal est de taille très réduite, il faut en effet prévoir d'utiliser une pile supplémentaire pour la gestion particulière du transfert de programme de la mémoire 5 vers la mémoire 4. Une partie de la mémoire de données 9 peut être utilisée pour y installer cette pile, mais elle pourrait aussi être située dans la mémoire 5. Le noyau est en outre muni d'instructions pour gérer une pagination dans la mémoire externe 5 (c'est-à-dire placer dans un registre le numéro de la page en cours dans la mémoire 5). La gestion des subroutines dans le programme 10 (appel, retour au programme principal) est bien entendu réalisée aussi par le noyau 6: il s'agit d'opérations de même nature que la gestion de sauts, conditionnels ou non. Le fonctionnement du noyau peut être expliqué plus en détail au moyen du diagramme de la figure 3. A un instant donné le noyau lit une instruction dans la mémoire externe (5, figure 1), ceci étant représenté par le cadre 19, "READ". Ensuite cette instruction est décodée par le noyau (cadre 20, "DECOD"), un test est appliqué (losange 21, "INSTR") pour savoir si cette instruction est une instruction standard ("STD") ou une instruction de branchement ("FLOW"). Dans le premier cas un second test suit (losange 22, "APPL") pour déterminer si la partie de la mémoire 4 de la figure 1, réservée pour des instructions d'application, est pleine ou non. Si elle est pleine ("Y"), l'ensemble des instructions qu'elle contient est exécuté (cadre 24, "EXEC"), la mémoire 4 en étant vidée au fur et à mesure, puis l'instruction venant de la mémoire externe est chargée dans la mémoire 4. Si le test 22 montre que la mémoire 4 n'est pas pleine, autrement dit s'il y reste encore de la place, l'instruction venant de la mémoire externe est tout de suite chargée dans l'espace ad-hoc de la mémoire 4. Après ce chargement, le programme vient à la lecture (cadre 19) de l'instruction suivante dans la mémoire 5 de la figure 1, et la procédure continue. Si après le test 21 il est constaté que l'instruction lue dans la mémoire 5 est une instruction de branchement ou assimilée ("FLOW"), alors un autre second test est utilisé (losange 23, "APPL") pour déterminer si la partie de la mémoire 4 de la figure 1 réservée pour des instructions d'application est vide ou non. Si elle est vide ("Y"), ce qui est relativement rare mais l'éventualité doit néanmoins être considérée, on passe directement au cadre 27, "SIMUL". Si elle n'est pas vide ("N"), les instructions qu'elle contient sont exécutées (cadre 24, "EXEC") de manière à pouvoir ensuite "passer à autre chose", puis on passe au cadre 27, "SIMUL", o l'instruction venant de la mémoire externe est simulée, c'est-à-dire exécutée directement par le noyau. Il peut s'agir par exemple d'une instruction "GO TO" renvoyant à une adresse non consécutive dans les instructions 10 de la figure 1. Alors la simulation consiste à aller lire une instruction 10 de la figure 1 à cette nouvelle adresse, cette lecture étant effectuée à nouveau dans le cadre 19, "READ", ou la procédure continue comme décrit ci-dessus. Le terminal télématique de la figure 2 est constitué des éléments suivants, articulés autour d'un bus 13: - un modem 12 relié à une ligne téléphonique d'abonné 18, - un processeur numérique de signal 11 (DSP), une mémoire principale 15, - et une unité de traitement vidéo 14, qui est par exemple un circuit spécifique (de type dit "ASIC"), reliée à un écran d'affichage 17. Aucun microprocesseur classique n'est prévu, et de ce fait le processeur numérique de signal doit gérer non seulement les traitements de compression de signal, mais aussi les fonctions du terminal téléphonique, ce qu'il fait au moyen d'un programme placé dans la mémoire 15 et placé par morceaux successifs dans sa mémoire interne de programme de la manière décrite plus haut. Il est relié en outre au clavier 16 du terminal par le bus 13. REVENDICATIONS: 1. Procédé pour exploiter un processeur numérique de signal muni d'un interpréteur d'instructions destiné à assurer l'exécution d'instructions placées dans une mémoire de programme, contenue dans le processeur numérique de signal, le dit processeur étant en outre associé à une mémoire extérieure contenant des instructions à exécuter, qui sont amenées séquentiellement dans la dite mémoire de programme, caractérisé en ce qu'on place dans la propre mémoire de programme du processeur numérique de signal une couche logicielle constituée de moyens logiciels pour lire des instructions dans la mémoire extérieure et en gérer le transfert vers la mémoire de programme. 2. Dispositif comportant un processeur numérique de signal muni d'un interpréteur d'instructions destiné à assurer l'exécution d'instructions placées dans une mémoire de programme, contenue dans le processeur numérique de signal, le dispositif comportant en outre une mémoire extérieure au processeur numérique de signal, contenant des instructions à exécuter, et étant muni de moyens pour amener séquentiellement les dites instructions dans la dite mémoire de programme, caractérisé en ce que les dits moyens pour amener séquentiellement les dites instructions sont constitués par une couche logicielle située à l'intérieur même de la mémoire de programme du processeur numérique de signal, couche logicielle constituée de moyens logiciels pour lire des instructions dans la mémoire extérieure et en gérer le transfert vers la mémoire de programme. 3. Dispositif selon la revendication 2, caractérisé en ce que la dite couche logicielle est pourvue de moyens pour, lorsque l'instruction courante dans la mémoire externe est interprétable par l'interpréteur du processeur numérique de signal, la transférer directement dans la mémoire de programme. 4. Dispositif selon la revendication 2, caractérisé en ce que la dite couche logicielle est pourvue de moyens pour traiter directement une instruction courante de la mémoire externe, lorsque cette instruction est une instruction de direction qui n'est pas interprétable par l'interpréteur du processeur numérique de signal. 5. Dispositif selon l'une quelconque des revendications 2 à 4, caractérisé en ce que la dite couche logicielle est pourvue d'instructions pour gérer une pile. 6. Dispositif selon l'une quelconque des revendications 2 à 5, caractérisé en ce que la dite couche logicielle est pourvue d'instructions pour gérer une pagination dans la mémoire externe.