FR 2678400 A1 19921231 FR 9107985 A 19910627 La présente invention est relative aux processeurs et se rapporte plus particulièrement aux processeurs de protocole. La tendance à l'intégration de plus en plus poussée des matériels informatiques conduit à la nécessité de disposer pour ces matériels d'une puissance de calcul de plus en plus élevée. Dans toutes les applications, il existe des besoins différents de traitement des informations. On distingue deux classes de traitement. - traitement scalaire ne faisant pas appel à un processeur numérique spécialisé (DSP) - traitement vectoriel faisant appel à un DSP. Le traitement scalaire englobe une tâche de haut niveau qui est le contrôle de l'application ou la gestion du fonctionnement et des tâches qui sont généralement réalisées par une logique câblée ou un processeur qui sont le traitement de protocole. Le traitement vectoriel comprend des tâches de traitement du signal réalisées généralement par un DSP et le calcul matriciel qui demande une structure plus performante que celle du DSP et qui est généralement du type "processeur en réseau Actuellement dans les applications de faible coût, on cherche à réduire au minimum le nombre des processeurs, si bien que selon le type d'application, le processeur principal qui contrôle le déroulement d'un algorithme, va être soit un microprocesseur, soit un DSP. S'il y a dans cette application un besoin de traitement de protocole, on recherche à traiter ce protocole dans le processeur ou dans le processeur numérique spécialisé DSP. Le traitement de protocole étant très orienté vers la manipulation de bits et les interruptions, il ne sera pas très coûteux s'il est réalisé par le microprocesseur. Par contre, si l'on utilise un DSP, la structure du processeur et le jeu d'instructions seront mal adaptés et il en découlera une perte d'efficacité en ce sens que plus d'instructions seront nécessaires et que l'utilisation du silicium disponible sera mauvaise. La même remarque est à faire en ce qui concerne le traitement matriciel qui peut être effectué par un DSP puisqu'il contient un multiplieur câblé. Cependant, un microprocesseur est très mal adapté pour effectuer un tel traitement matriciel. L'invention vise donc à créer une architecture particulière de processeur orientée vers le traitement de protocole et ayant une structure très simple et peu coûteuse en nombre de transistors tout en permettant de décharger le processeur principal d'un système, de tâches simples qui sont mal adaptées à sa complexité. Elle a donc pour objet un processeur de protocole destiné à être associé à au moins un processeur principal d'un système en vue de l'exécution de tâches auxquelles le processeur principal n'est pas adapté, caractérisé en ce qu'il comporte une partie de programme comprenant un registre d'incrémentation, une mémoire programme reliée au registre d'incrémentation pour en recevoir des adresses, une partie de décodage destinée à recevoir des instructions de la mémoire programme de la partie de programme en vue exécuter lesdites instructions en deux cycles, et une partie de données d'exécution des instructions. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant aux dessins annexés, sur lesquels - la Fig.1 est un schéma de la répartition des tâches dans un système de traitement de l'information mettant en oeuvre l'utilisation de plusieurs processeurs; - la Fig.2 est un schéma d'une application d'un processeur de protocole à un ensemble de radios cellulaires; - la Fig.3 est un tableau indiquant les performances pour une routine de codage/décodage de canaux; - la Fig.4 est un tableau représentant les performances pour une routine de modem; - la Fig.5 est un schéma d'une mémoire de communication entrant dans la structure du processeur de protocole suivant l'invention; - la Fig.6 représente l'écriture par un programme Pi de paramètres pour un programme P2 dans une mémoire du système;; - la Fig.7 est un schéma synoptique général d'un processeur de protocole suivant l'invention; - la Fig.8 est un schéma synoptique plus détaillé du processeur de protocole de la Fig.7; - la Fig.9 est un diagramme représentant des signaux en divers points du processeur de protocole de la Fig.8; - la Fig.10 représente un jeu d'instructions pour le processeur de protocole suivant l'invention; - la Fig. 11 est une représentation de l'affectation de bits d'instructions; - la Fig.12 représente en détail les différents champs; - la Fig.13 représente la manière dont le bloc de contrôle de condition est connecté dans le processeur de protocole suivant l'invention; - la Fig.14 est un schéma partiel des moyens de génération d'une impulsion d'écriture;; - la Fig. 15 est un tableau représentant un exemple de code d'instruction pour le processeur de protocole suivant l'invention; - la Fig.16 est un schéma d'un exemple montrant l'avantage d'une structure suivant l'invention par rapport à un DSP TMS320 C25 classique dans la génération d'un code CRC; et - la Fig.17 montre un schéma de fonctionnement de l'unité arithmétique et logique du processeur de protocole suivant l'invention. Comme déjà indiqué dans le préambule de la présente description, dans toutes les applications, il existe des besoins différents de traitement des informations, parmi lequels on distingue le traitement scalaire et le traitement vectoriel. Comme représenté à la Fig.1, dans des applications à faible coût, on recherche à minimiser le nombre des processeurs, si bien que selon le type d'application, un système de traitement d'informations comporte un processeur principal qui contrôle le déroulement de l'algorithme et est constitué soit par un microprocesseur 1, soit par un DSP 2 Dans une telle application, on a besoin d'un traitement de protocole 3 que l'on cherche à traiter dans le processeur 1 ou dans le DSP 2. Comme indiqué plus haut, le traitement du protocole n'est pas très coûteux s'il est réalisé par le microprocesseur 1, mais si l'on utilise le DSP 2, la structure d'un tel processeur et le jeu d'instructions seront mal adaptés et il en découlera une perte d'efficacité due à la nécessité d'un nombre d'instructions plus important et à une mauvaise utilisation du silicium. La même remarque est à faire en ce qui concerne le traitement matriciel 4 qui peut être effectué par un DSP 2 puisqu'il contient un multiplieur câblé, mais pour l'exécution duquel un microprocesseur est mal adapté. La Fig.2 montre une application radio-cellulaire dans laquelle un processeur principal 5 est constitué par un processeur numérique spécialisé ou DSP. Il effectue à la fois la gestion de l'application considérée et la partie vocodeur. La partie traitement de protocole est réalisée par un processeur spécifique 6 adapté au traitement de bits. La partie modem du système qui demande une grande puissance de calcul orientée vers le traitement vectoriel est réalisée dans un processeur spécifique 7 du type processeur en réseau. Dans ce cas, il y a un besoin important de traitement sur des vecteurs, de trois à huit bits de précision et le coeur d'un DSP travaillant généralement sur 32 bits est très mal adapté à une telle tâche. De plus, les circuits intégrés au silicium d'un tel système sont très mal utilisés. Un autre avantage de partager une application sur plusieurs processeurs ayant des caractéristiques différentes, est que chaque processeur travaille sur sa propre tâche en parallèle avec les autres. Si, dans l'exemple de la Fig.2, les trois processeurs 5,6 et 7 fonctionnent à la même fréquence d'horloge, la puissance globale du circuit est multipliée par trois. Il faut ajouter également à ces avantages, le facteur d'efficacité du jeu d'instructions qui est adapté à la tâche considérée. Pour deux routines classiques de traitement de protocole, le calcul du CRC et l'identification, l'ef fi- cacité du processeur 6 par rapport à un DSP du type TMS 320 C50 est de 2,2 alors que le rapport en nombre de transistors pour réaliser les deux processeurs, est de 0,11. Le tableau de la Fig.3 montre les performances des routines de codage/décodage de canaux. La seconde colonne à partir de la gauche indique la routine nécessaire pour l'emploi d'un DSP, tandis que la troisième colonne montre des éléments d'une routine impliquant l'utilisation d'un processeur de protocole. Il résulte de ce qui précède que le rapport de performance MIPS/XTOR est de 19,6 en faveur du processeur de protocole 6. Dans le cas d'un processeur en réseau, tel que le processeur 7 du système de la Fig.2, dont les performances pour des routines de modem sont représentées au tableau de la Fig.4, on montre aussi que pour une routine du modem, il y a également un rapport important en efficacité entre le DSP 5 et le processeur 7, le gain étant de 10 en MIPS. Plusieurs processeurs travaillant en parallèle sur des tâches différentes, permettent d'augmenter la puissance de traitement. L'application est partagée entre les différents processeurs qui doivent échanger des informations. Les moyens d'échange sont généralement constitués par un lien série ou une mémoire de communication. Sur la Fig.5, on a représenté une telle mémoire de communication. On voit sur cette figure, le DSP 5 et le processeur 6 du dispositif de la Fig.2, le coeur 8 du DSP 5 est relié au coeur 9 du processeur 6 par un circuit de synchronisation 10. Le DSP 5 comporte en outre une mémoire ROM de programme 11 et une mémoire RAM locale 12. Le processeur de protocole 6 comporte lui aussi, une mémoire ROM de programme 13 et une mémoire RAM locale 14. Les mémoires RAM locales 12 et 14 du DSP 5 et du processeur 6 sont reliées par une mémoire DPRAM 15 commune à double port. La synchronisation des processus P1 et P2 s'effectue par une instruction TAS (Test and Set) de test et de positionnement qui permet, comme indiqué à la Fig.6 de s'assurer qu'un seul processeur utilise la mémoire 15 (ou zone de mémoire) au même instant. Il existe aussi d'autres mécanismes de synchronisation de processus. Par exemple avec l'instruction TAS de la Fig.6, le programme Pi écrit dans la mémoire DPRAM 15 des paramètres pour le programme P2. Les paramètres étant liés,si P2 accède à la mémoire 15 durant la modification par P1, il y a risque d'erreur. Le programme Pi teste avec l'instruction TAS si la mémoire 15 est disponible et génère un signal d'occupation. Durant la modification des paramètres a,b,c,d qui se trouvent dans la mémoire 15, si le programme P2 demande un accès à cette zone de mémoire, son instruction TAS lui retourne un signal d'occupation. Le programme Pi libère la mémoire 15 en fin d'accès et le programme P2 peut accéder alors à la mémoire s'il fait une nouvelle demande. Comme le montre la Fig.5, chaque processeur a sa propre mémoire programme ROM 11,13 respectivement, une mémoire locale de travail 12,14 et un coeur de processeur 8,9. Les moyens de synchronisation 10 et la DPRAM 15 sont communs aux deux processeurs. Sur la Fig.7, on a représenté le schéma synoptique d'un processeur de protocole. Le processeur comporte un processeur proprement dit 16 relié à une mémoire programme 17 par un bus d'adresses 18 et un bus d'instructions 19. Il est relié au niveau du flux de données à un processeur principal 20 à travers une mémoire RAM 21 de communication reliée à chacun des processeurs par un bus de données 22, 23 et d'adresse 24, 25 correspondant. Le processeur 16 peut aussi être relié par des bus de données et de sélection et d'adresse 27, 28 à un bloc de logique câblé 26 permettant la mise en forme de signaux ou un traitement particulier qu'il serait trop coûteux de réaliser au moyen du processeur de protocole 16. Le bloc logique 26 est de plus connecté au processeur 16 par une ligne d'interruption 29. La Fig.8 montre de façon plus détaillée le processeur de protocole suivant l'invention. Ce processeur comporte en fait trois parties. Une partie de programme désignée par le numéro général de référence 30 contient un registre dtincrémen- tation 31 qui est incrémenté à chaque cycle sauf si une valeur immédiate PMA est chargée par l'intermédiaire d'un bus 32. Le registre 31 génère l'adresse d'une mémoire en forme de programme 33 qui génère elle-même une instruction sur un bus 34. Le processeur comporte en outre une partie décodeur désigné par le numéro de référence général 35 qui reçoit le code de l'instruction de la mémoire ROM de programme 33. Cette instruction est exécutée en deux cycles en mode Pipe-line comme le montre le diagramme de la Fig.9. Durant le cycle 1 indiqué sur cette figure, la mémoire programme 33 est lue à l'adresse PC1 du registre d'incrémentation 31. En fin de cycle, l'instruction Il délivrée par la mémoire de programme 33 est décodée. Durant le cycle 2, les opérateurs de l'instruction sont lus aux adresses spécifiées par le code et la partie de données 36 qui complète le processeur et qui sera décrite par la suite exécute l'instruction. Le résultat est stocké à l'adresse spécifiée par le code de l'instruction en fin de cycle 2. Durant le cycle 2, le décodeur 37 de la partie de décodage, exécute le même processus sur l'instruction I2 située à l'adresse PC2 du registre 31. Le décodeur génère à chaque cycle, sur le bus 38 l'adresse du registre utilisé dans l'instruction et/ou une adresse de mémoire RAM sur le bus 39. Le décodeur 37 qui joue également le rôle de dispositif de contrôle reçoit de part et d'autre des signaux d'interruption et des signaux TAS de test et de positionnement qui sont destinés à la synchronisation. La partie données 36 du processeur est constituée d'un banc de registres 40 relié à deux multiplexeurs MUX A et MUX B 41 et 42, destinés à sélectionner les différents registres ou les mémoires RAM à l'entrée d'une unité arithmétique et logique et de décalage 43. L'opération définie dans le champ de l'instruction est exécutée entre les deux valeurs aux entrées A et B de l'unité arithmétique et logique et de décalage 43 et le résultat est porté dans le même cycle à l'adresse de destination. Cette adresse de destination est matérialisée sur le schéma de la Fig.8 par une mémoire à double port 44 qui est commune au processeur de protocole et à l'unité de traitement principale CPU 45 à laquelle il est associé. La mémoire 44 est reliée à la CPU 45 au moyen de bus de données et d'adresses 46, 47. Sur la Fig.10, on a représenté un jeu d'instructions destiné aux processeurs de protocole suivant l'invention. Il comprend trois classes d'instructions - Entiers : Opérations arithmétiques et logiques sur les nombres entiers. - Transfert : entre registre et registre/mémoire. - Contrôle : toutes les opérations modifiant la valeur du registre d'incrémentation ou PC 31 (Fig.8). On va maintenant décrire les champs de l'instruction du processeur de protocole représentés à la Fig.lO. On désigne par 50, un champ de 5 bits réservé au code de l'instruction. Il définit l'opération exécutée entre les opérateurs Srcl-2. 51 désigne un champ de conditions qui définit sous quelles conditions cette instruction est exécutée. Les conditions correspondantes sont définies dans les tableaux 10-1 et 10-2 de la Fig.10. Cette partie sera décrite en détail par la suite. 52 définit une instruction W établissant si l'opération est exécutée entre des mots de 16 bits ou des octets. 53 indique un champ @ + décalage dans lequel @ indique que les registres X ou B contiennent l'adresse d'accès à la mémoire DPRAM commune 44 de la Fig.8. + désigne les registres X ou B incrémentés par l'accès à la mémoire. Décalage désigne le résultat de l'opération décalé sur le tableau 10-3 de la Fig.lO avant l'écriture dans le registre de destination. 54 désigne les instructions SRC1 dans lesquelles: K : constante - DMA : valeur contenue dans la DPRAM 44 à 1'a- dresse DMA - Rn : registre 55 SRC2/DEST Rm : registre source et destination dans le cas des opérations sur " Entiers " et registre de destination dans les autres cas. L'affectation des bits de l'instruction est définie selon cinq types comme représenté à la Fig. 11. Les différents champs sont définis en détail à la Fig.12. Comme le montre le jeu d'instructions de la Fig.10, certaines instructions très utilisées dans la manipulation de bits, ne sont pas disponibles directement. On va voir que les instructions telles que CMP Comparer BITC test de bit BSET Réglage de bit CSIF Comparer et sauter sont construites par l'adjonction du champ de conditions Cc représenté à la Fig.12 à celui du code ou de l'opération effectuée dans l'unité arithmétique et logique. La Fig. 13 montre la manière dont un bloc de contrôle de conditions 60 est connecté dans le processeur de protocole suivant l'invention entre le dispositif de contrôle et de décodage 37 et la pile de registres 40. Ce bloc de contrôle de conditions reçoit d'une part les informations du registre d'état SW 40d de la pile de registres 40 et du champ de conditions de l'instruction. Comme le montre avec plus de détails la Fig.14, les signaux " ECRITURE REG " ou " ECRITURE MEMOIRE génèrent une impulsion d'écriture si l'entrée d'un multiplexeur 61 sélectionné par le code de condition présent sur ses entrées 62 est au niveau haut. Dans ce cas, le résultat de l'opération effectuée par l'unité arithmétique et logique 43 est écrit dans l'opérateur destination. Dans le cas contraire, il n'y a pas de modification de la destination. Le registre d'état SW 40d est affecté par le résultat de l'opération en cours. La Fig.15 montre un exemple de code d'instructions. Le code utilisateur est : CMP (X)+, A. Le contenu du registre A 40c est composé avec le contenu de l'adresse mémoire définie par le registre X 40a. Le résultat affecte les bits d'état suivants C = 1 si A 2 (X) z = 1 si A = (X) N signe du résultat Après accès, l'adresse contenue dans X est incrémentée. En réalité, en sélectionnant le code de condition O = Jamais avec le code d'ALU SUB (soustrat), le résultat est atteint puisque la comparaison est une soustraction sans modification de la destination. Un autre exemple est Etiquette Sous, A, U Si le bit utilisateur U a été positionné à 1, le résultat de la soustraction : A - Etiquette est placé dans A, et l'état est modifié. Si U = O, le résultat n'est pas sauve. Sur la Fig. 16, on a représenté en vue partielle, le multiplexeur 61 connecté à la pile de regitres 40 du processeur de protocole représenté à la Fig.13. On voit sur cette figure, que CMP (X)+, A est équivalent à SOUS (X)+, A, Jamais. Le code condition Jamais sélectionne l'entrée du multiplexeur 61 qui est au niveau "0" et l'impulsion WE reste sans effet sur le signal ECRITURE REG. qui transfère le résultat de l'unité arithmétique et logique 43 dans le registre A 40c. L'exemple ci-dessus montre l'avantage d'une telle structure par rapport à un DSP TMS320 C25 dans la génération d'un code CRC. Code C25 Nombre de cycles LAC R, 15 1 XOR CRC 1 ET M.8000 1 Bz BCRl 2 LAC POLYGEN 1 XOR CRC 1 SACL CRC 1 BCR1 LAC CRC,1 1 SACL CRC 1 10 Code PP. Nombre de cycles 1) ET x, A, Jamais 1 2) ET 8000, B, Jamais 1 3) XOR POLYGEN, B, Zd I 4) SLL B 1 4 Les quatre opérations obtenues à l'aide du processeur de protocole suivant l'invention sont détaillées en référence à la Fig.17. OPERATION 1 C'est une opération ET du bit 0040 avec le registre A 40c (Fig.13). Le résultat n'est pas écrit dans le registre A. tes bits Z, C, Zd sont positionnés de la manière indiquée à droite de l'unité arithmétique et logique 43 (Fig.17). OPERATION 2 C'est une fonction logique ET du code 8000, B, Ne. Le code CRC se trouve dans le registre B 40b, le bit MSB le plus significatif, c'est à dire le bit 8000 est testé. Z = 1 si le bit le plus significatif du registre B est zéro. Le Z du cycle précédent est transmis à Z-1. OPERATION 3 XOR POLYGEN, B, Zd. L'opération logique XOR entre le polynome générateur et le code CRC est ensuite réalisée dans l'unité arithmétique et logique 43. Le résultat est écrit dans le registre B 40b si le bit Zd est égal à 1, Zd étant défini par la condition Z O Z-1. OPERATION 4 : SLL B Le registre B 40b (code CRC) est décalé d'une position vers la gauche. L'architecture du processeur orienté vers le traitement du protocole qui vient d'être décrit est une structure très simple et peu coûteuse en nombre de transistors. Elle permet de décharger le processeur principal de tâches simples qui sont mal adaptées à sa complexité. Le processeur de protocole et le processeur principal travaillant en parallèle, des moyens de synchronisation des tâches sont prévus. Le jeu d'instructions est limité dans le présent exemple à 15 afin de simplifier la structure. Les instructions sont divisées en trois groupes " Entier, Transfert, et Contrôle ". Dans chacune de ces instructions, un champ conditionnel permet de sélectionner une condition de sauvegarde du résultat dans le registre de destination. Les conditions utilisent les bits du registre d'état qui ont été modifiés par les résultats de la ou des instructions précédentes. Un bit de validation de modification de l'état permet le fonctionnement facile en mode protégé. REVENDICATIONS 1. Processeur de protocole destiné à être associé à au moins un processus principal d'un système en vue de l'exécution de tâches auxquelles le processeur principal n'est pas adapté, caractérisé en ce qu'il comporte une partie de programme (30) comprenant un registre d'incrémentation (31), une mémoire programme (33) reliée au registre d'incrémentation (31) pour en recevoir des adresses, une partie de décodage (35) destinée à recevoir des instructions de la mémoire programme (33) de la partie de programme (30) en vue d'exécuter ladite instruction en deux cycles, et une partie de données (36) d'exécution de l'instruction. 2. Processeur de protocole suivant la revendication 1, caractérisé en ce que la partie de décodage (35) comporte un décodeur (37) destiné à générer à chaque cycle l'adresse d'un registre utilisé dans l'instruction et/ou une adresse de mémoire RAM, le décodeur (37) assurant également la fonction de dispositif de contrôle recevant des signaux d'interruption et des signaux (TAS) de test et de positionnement destinés à la synchronisation du système. 3. Processeur de protocole suivant l'une des revendications 1 et 2, caractérisé en ce que la partie de données (36) est constituée d'un banc de registres (40) relié à des multiplexeurs A et B (41,42) destinés à sélectionner les différents registres ou les mémoires RAM à l'entrée d'une unité arithmétique et logique (43), une opération définie dans le champ d'une instruction étant exécutée entre deux valeurs aux entrées de l'unité arithmétique et logique et de décalage (43) et le résultat de cette opération étant porté dans le même cycle à l'adresse de destination contenue dans une mémoire (44) commune au processeur de protocole et à une unité de traitement principale (45) à laquelle il est associé, 4.Processeur de protocole suivant l'une des revendications 1 à 3, caractérisé en ce qu'un jeu d'instructions composé d'au moins un champ de conditions d'exécution (Fig. 10) qui lui est destiné comprend trois classes d'instructions - entiers correspondant aux opérations arithmétiques et logiques sur les nombres entiers, - transfert correspondant aux opérations de transfert entre registre et mémoire, - contrôle, correspondant au contrôle de toutes les opérations modifiant la valeur du registre d'incrémentation (31). 5. Processeur de protocole suivant l'une des revendications 3 et 4, caractérisé en ce qu'il comporte en outre un bloc (60) de contrôle de conditions connecté entre le dispositif de contrôle et de décodage (37) et la pile de registres (40), le bloc de contrôle de conditions (60) recevant les informations du registre SW (40d) de la pile de registres (40) et du champ de conditions d'une instruction à exécuter.