Brevet FR2693579A1 — publié le 19940114

La présente invention concerne les processeurs et se rapporte plus particulièrement à un processeur particulièrement adapté aux applications de téléphonie numérique. Un certain nombre d'applications de téléphonie numérique utilisent un standard ADPCM G721 complet pour le codage/décodage de la voix. Un processeur de signal numérique, DSP, Standard, tel que le TMS320C25 nécessite 1300 cycles par échantillon à 8 KHz (10,4 Miss) L'invention vise à créer une nouvelle architecture BBSP de processeur de signal à bande de base, optimisée pour réduire d'une part le nombre de cycles au dessous de 1000 et d'autre part, la consommation d'énergie. La liste des opérations à effectuer dans le standard G721 sont représentées surle tableau 1. TABLEAU 1 FONCTIONS NOMBRE Add/sous 122 l ET 65 Pré-décalage dr. 53 Pré-décalage g. 46 Bit de test 37 Complément à2 24 Décalage dynam. 22 Normalisation 12 Xor 11 MPY 6*6 8 Post-décalage 11 MPY 13*7 1 L'unité de décalage : les fonctions de prédécalage post-décalage et de normalisation représentent 144 opérations sur 415. La valeur de décalage varie de 1 à 15 bits à droite ou à gauche. A la fois, des valeurs immédiates ou calculées sont utilisées. Le bit de test : le standard G721 est caractérisé par un nombre d'indications d'accès d'inclusion conditionnels où le résultat du test définit l'exécution d'un ou de plusieurs groupes d'actions. Multiplieur : Le standard G721 nécessite une fonction de multiplication. Le circuit TMS320C25 similaire à un multiplieur n'est pas acceptable du point de vue économique. L'algorithme de Booth avec la technique de décalage et d'addition est plus adapté et ne réduit les performances du processeur que de 3%. ALU : une unité arithmétique et logique ALU de 16 bits est nécessaire. Commande : Un sous-programme de G721 nécessite une fonctionnalité spécifique pour réduire le compte de cycle et la dissipation d'énergie telle qu'un bloc d'instructions de répétition, une ramification et un retour retardés, un bloc de normalisation et autres. Les structures des processeurs existants n'ont pas ces capacités et ne peuvent exécuter de façon efficace: les décalages, la normalisation, une exécution conditionnelle, une multiplication à faible coût dans un trajet de données à 16 bits. Le processeur de signal à bande de base (BBSP) utilise une architecture de Harvard modifiée pour améliorer la vitesse et la souplesse. Dans une architecture de Harvard, les mémoires de programme et de données se trouvent dans deux espaces séparés permettant un recouvrement total d'appel et d'exécution des instructions. L'invention vise à créer une architecture de processeur qui tout en étant d'un prix de revient modéré présente les performances indiquées ci-dessus. Elle a donc pour objet une architecture de processeur comprenant une unité centrale de traitement CPU, une mémoire de programme et une mémoire de données, l'unité centrale de traitement étant constituée fonctionnellement d'une partie d'exécution de programme et d'une partie de traitement de données, caractérisé en ce qu'afin de réduire le nombre de composants entrant dans la constitution du processeur, au moins un élément de la partie d'exécution de programme est disposé dans la partie de traitement de données. Elle a également pour objet une architecture de processeur du type défini ci-dessus dans laquelle la partie d'exécution de programme comporte un compteur de programme auquel sont associés un dispositif d'incrémentation et un dispositif d'adressage, un contrôleur et la mémoire de programme adressée par le compteur de programme, caractérisée en ce que le compteur de programme, et ses dispositifs d'incrémentation et d'adressage sont disposés dans la partie de traitement de données. 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 synoptique de l'architecture d'un processeur de signal à bande de base ou BBSP; - la Fig.2 est un schéma de la partie d'exécution de programme de l'unité centrale de traitement du BBSP de la Fig.1; - la Fig.3 est un schéma de la partie de traitement de données de l'unité centrale de traitement; - la Fig.4 est une vue schématique partielle d'un bloc de registres LM0 d'opérations, un le plus à gauche de l'unité centrale de traitement; - la Fig.5 est une vue schématique partielle d'un bloc compteur de programme faisant également partie des registres de la CPU; - la Fig.6 est une vue schématique partielle des registres X et B de l'unité centrale de traitement;; - la Fig.7 est une vue schématique partielle d'un bloc comprenant le registre M et le registre à décalage utilisé pour exécuter l'algorithme de Booth; - la Fig.8 est une vue schématique partielle du registre de status et de contrôle de l'unité centrale de traitement; - la Fig.9 est un schéma montrant le contenu du registre du compteur de programme de la Fig.5; - la Fig.10 est une vue schématique partielle de l'unité arithmétique et logique et de l'unité de décalage de l'architecture de la Fig.1; - la Fig.11 est un schéma représentant le fonctionnement de l'unité de décalage, en décalage immédiat; - la Fig.12 est un schéma représentant le fonctionnement de l'unité de décalage, en décalage dynamique;; - les Fig. 13a et 13b sont des vue schématiques partielles illustrant le fonctionnement de certains registres de la CPU, de l'unité de décalage et de l'unité arithmétique et logique en un le plus à gauche et en décalage dynamique respectivement; - la Fig.14 montre le champ de mémoire du BBSP suivant l'invention; - la Fig. 15 est un schéma représentant l'adressage d'opérande en modes direct et indirect; - la Fig.16 illustre le fonctionnement en mode pipeline de l'architecture du BBSP suivant l'invention; - la Fig.17 est une représentation du format d'instruction décodée dans la partie de contrôle du coeur du BBSP; et - la Fig.18 représente le code d'instructions utilisé dans l'architecture suivant l'invention. Comme représenté à la Fig.1, l'architecture du processeur BBSP de signal à bande de base comporte principalement trois blocs. Le coeur du BBSP constitué par l'unité centrale de traitement CPU 2 et 4, une mémoire de programme 1 et une mémoire de données 3. La CPU est un processeur à 16 bits qui est divisée fonctionnellement en deux parties - une partie 1 et 2 d'exécution de programme, - une partie 4 de traitement de données. La partie d'exécution de programme représentée à la Fig.2 comporte un compteur de programme à 14 bits 6, un contrôleur 8 et la mémoire de programme 1 qui est une ROM. Le compteur de programme 6 adresse la mémoire ROM de programme 1 par un bus d'adresse de programme à 14 bits 9. Le contrôleur 8 reçoit des instructions de la mémoire 1 par un bus d'instructions à 24 bits 10 et le décodage est assuré dans un décodeur fonctionnant en mode pipeline. Le bloc contrôleur 8 comporte un circuit de commande de compteur de répétition à 6 bits RPTC (Fig.2) pour répéter les instructions du bloc et un compteurdécompteur SP d'adresses de pile mémoire pour empiler les pointeurs utilisés pour sauvegarder le contexte au cours d'interruptions ou de l'éxécution de sous-programmes. Au compteur de programme 6 est associé un dispositif d'incrémentation 11 et un dispositif d'adressage 12. Afin de réduire la surface de silicium utilisée et d'améliorer les performances et la souplesse de programmation, le compteur de programme 6, le dispositif d'incrémentation 11 et le dispositif 12 d'adressage du compteur de programme, sont disposés dans la partie de traitement de données 4. A chaque cycle, le compteur de programme 6 engendre l'adresse PAB et appelle une instruction dans la mémoire ROM de programme 1. Normalement, le compteur de programme 6 est incrémenté de 1 par le dispositif d'incrémentation 11. Lors d'un branchement, d'une interruption ou d'un chargement du compteur de programme 6, l'état de ce compteur est modifié par une valeur PMA d'adresse de programme de mémoire transmise au compteur 6 par un bus à 14 bits 13 provenant d'un décodeur d'instruction ou de l'unité arithmétique et logique qui se trouve dans la partie de traitement de données. La partie 4 de traitement de donnée va maintenant être décrite en référence à la Fig.3. Elle comporte une pile de registres à 16 bits 15, une unité de décalage 16 et une unité arithmétique et logique ALU 17 à 16 bits. La partie de traitement de données est connectée au bloc de mémoire de données 3 (Fig.1) par un bus de données de 16 bits 18 et par un bus d'adresses de 15 bits 19. L'unité arithmétique et logique 17 effectue des opérations sur des mots de 16 bits de registre à registre et des opérations directes ou indirectes de mémoire à registre en une instruction. Une instruction est exécutée pendant chaque cycle de machine. En plus, des instructions arithmétiques habituelles, 1'ALU 17 peut assurer des opérations donnant la capacité de manipulation de bits requise d'un contrôleur à grande vitesse. L'unité de décalage 16 placé à l'entrée de I'ALU 17 permet à un décalage logique ou arithmétique vers la gauche ou la droite, d'un contenu de registre de O à 15 bits d'être positionné avant l'exécution d'une opération sur ce contenu par l'ALU 17. L'entrée A de l'ALU reçoit un mot de 16 bits de la pile de registres 15, de la mémoire de données 3 (Fig.1) ou du contrôleur 8. L'entrée B de l'ALU est connectée seulement à la pile de registres 15 par l'intermédiaire de l'unité de décalage 16. La sortie de l'ALU 17 est connectée aux registres 15 et à la mémoire de données 3. Les opérations de 1'ALU 17 avec l'unité de décalage 16 permettent d'extraire en deux instructions (et 2 cycles CPU) la mantisse et l'exposant d'un nombre. Une opération de multiplication est exécutée en instructions multiples à un cycle (MPY/MPY1). Les instructions de multiplication utilisent l'algorithme de Booth avec un procédé de décalage et d'addition. L'unité centrale de traitement CPU du BBSP contient huit registres internes à 16 bits qui peuvent être utilisés comme registres universels ou comme registres spécialisés avec une fonction dédiée. Les registres X et B peuvent être utilisés pour un adressage indirect avec une possibilité de post incrémentation. Le registre 6 est utilisé comme compteur de programme. Le registre M est utilisé pour la multiplication avec un décalage de 2 bits à droite. Le registre A2 est le registre de destination pour la normalisation d'instructions. SW est le registre de status. L'organisation de la CPU et de la mémoire du BBSP va maintenant être décrite. Le diagramme fonctionnel de la Fig.1 montre les principaux blocs et trajets de données dans le BBSP. La CPU du BBSP contient huit registres internes qui sont les suivants. Le registre X est un registre à 16 bits ou registre indirect. Le registre B est un registre à 16 bits ou registre indirect. Le registre Ao est un registre à 16 bits. Le registre AI est un registre à 16 bits. Le registre A2 est un registre à 16 bits. Le registre M est un registre à 16 bits ou un registre à décalage de Booth. Le registre SW est un registre de status ou de commande. Le registre PC 6 est un compteur de programme à 14 bits. Tous ces registres peuvent être des opérandes de source et/ou de destination d'une instruction exécutée par l'ALU. Ces registres et leur utilisation sont décrits ciaprès. Tous les registres internes sont des registres universels. Ils peuvent être utilisés comme opérande de source et/ou de destination Pour améliorer les performances de l'unité centrale de traitement CPU pour les applications de téléphonie numérique utilisant des algorithmes de compression de données du type ADPCM, certains registres universels ont des fonctions spécifiques qui sont commandées par un code d'instructions. Les registres à fonctions spécifiques travaillent en parallèle avec l'unité arithmétique et logique ALU 17. Le registre A2 et bloc LMO de 1 le plus à gauche, sont représentés à la Fig.4 en 20 et 21 respectivement. Lorsqu'un code d'instructions LMO de 1 le plus à gauche est spécifié, le résultat de l'opération 1 le plus à gauche est placé dans le registre A2 20. Le résultat de cette opération est le nombre de zéros contigus provenant du bit le plus significatif de la source. Le but est la normalisation d'un nombre positif. Le compteur de programme 6 est un registre à 14 bits qui contient l'adresse de la mémoire de programme de l'instruction suivante à exécuter. Le BBSP lit l'instruction provenant de l'empla- cement de la mémoire de programme adressé par le compteur de programme 6 et incrémente le compteur de programme pour l'appel de l'instruction suivante. Le compteur de programme 6 est initialisé à zéro après une mise sous tension du dispositif. Les bits 14 et 15 du compteur de programme ne sont pas utilisés pour l'adressage, une opération de lecture de ces bits donne le bit N et le bit Z pour les bits 15 et 14. Une opération d'écriture sur ces bits n'aura aucune action et N et Z ne sont pas modifiés. La valeur du compteur de programme 6 peut être modifiée par branchement, saut à un sous-programme retour et une opération où le compteur de programme 6 est utilisé comme registre de destination. Cette dernière possibilité est utilisée pour un branchement calculé. Les branchements calculés sont retardés, ce qui signifie que les instructions suivant le branchement calculé sont exécutées avant le branchement effectif. Par exemple LD (X), PC ; branchement calculé ST X, AO ; instruction exécutée ADD, AO, Ai ; instruction non exécutée " ST X, AO est exécutée avant le branchement, "ADD AO, Al n'est pas exécuté. Une instruction de répétition de bloc d'instruction permet de créer une boucle sans perte de temps de cycle de CPU. Cette fonction a été implémentée en créant une instruction RPTB qui précise le nombre de boucles comme paramètre et une condition (? eol) qui précise l'avant dernière instruction de la boucle. L'instruction RPTB transfère l'adresse de départ de la boucle dans un registre 23 d'adresse de mise en marche du compteur de programme 6. Elle stocke également dans le compteur de répétition 22 du bloc de contrôle 8 (Fig.2) le numéro de la boucle à exécuter. L'avant-dernière instruction doit être conditionnelle avec la condition ?eol. Cette condition seule signifie que le compteur de programme va être chargé avec l'adresse de début après l'instruction suivante. Les registres indirects B et X 24 et 25 représentés à la Fig.6, sont tous deux connectés à un dispositif d'incrémentation correspondant 26,27 qui fonctionne en parallèle avec l'ALU. Un adressage indirect est spécifié à l'intérieur du code d'instruction et utilise soit le registre X, soit le registre B comme registre d'adresse. Ils peuvent être auto-incrémentés après ltexécu- tion de l'instruction si cela est spécifié. MPY est une phase de l'algorithme de multiplication de Booth. L'opération est déterminée par les deux bits les moins significatifs du registre M 28 et le bit 1 précédent de M dans l'opération MPY précédente ou MPY1. MPY1 est la première phase de l'algorithme de Booth. MPY et MPY1 sont représentés dans le tableau ciaprès. L M M(t-l) Dest M 00 Ox d 00 d 00 lx d+(s décalé) 01 Ox d+(s décalé) 01 d+(s décalé) 01 lx d+2*(s décalé) 10 Ox d-2*(s décalé) 10 d-2*(s décalé) 10 lx d-(s décalé) ll Ox d-(s décalé) il d-(s décalé) 11 lx d Le registre M 28 est logiquement décalé vers la droite de 2 bits après les opérations MPY et MPY1. Le début d'une multiplication doit être MPY1. Une multiplication à 2n bits avec signe doit être MPY1 suivie par n-1 MPY. Une multiplication à 2n-1 bits sans signe doit être MPY1 suivie de n-l MPY. Lorsqu'une interruption se produit, le M(t-l) ième bit n'est pas sauvegardé, ce qui signifie que si le sous-programme d'interruption utilise MPY ou MPY1, il peut modifier le résultat d'une multiplication effectuée dans le sous-programme interrompu. Le registre de status 30 est représenté à la Fig.8. Il contient des bits de status, des drapeaux et des bits de commande. Toute instruction conditionnelle utilise ces bits de status pour déterminer un déroulement de programme. Les notations et définitions de bits du registre de status sont les suivantes. * bit O U bit d'utilisateur établi ou rétabli par l'utilisateur; ce bit est utilisé dans la condition ?U. * bit 1 U1 le bit d'utilisateur est établi ou rétabli par l'utilisateur. * bit 2 B/L bit de sélection du mode de lecture/ écriture de la mémoire de données. * bit 3 El Interruptions d'autorisation globale. Ce bit autorise/inhibe les interruptions masquables du BBSP. 0 = inhibition de la requête d'interrup tion globale masquable. 1 = autorisation de la requête d'inter ruption globale masquable. * bit 4 Ell Interruption d'autorisation 1:1 = inter ruption autorisée, 0 = interruption inhibée. * bit 9 C Report : ce bit de status est établi par des instructions arithmétiques lorsque l'opération donne un report. Une soustraction A - B est considérée comme une addition A +(-B) et le report est établi en conséquence (inverse de retenue). C = O si A L'opération A NEG A est effectuée comme une addition de SA + 1 et un report est établi en conséquence. * bit 10-12 D10-12 Numéro de page pour adressage direct. * bit 13 PZ Zéro précédent : PZ est une pile à un niveau pour le bit Z. PZ est chargé avec Z lorsque le status de mise à jour est requis. * bit 14 Z Zéro : passé à un par la CPU si le résultat de l'opération précédente était O; autrement, effacé. * bit 15 N Négatif : la CPU établit ce bit à la valeur du bit le plus significatif (bit de signe) du résultat de l'opération précédente. Les bits de condition N, Z, PZ , C indiquent le résultat de l'instruction précédente. Ils sont mis à jour chaque fois qu'un status de mise à jour (uS) est demandé par l'instruction. Lorsque le BBSP reconnaît une interruption, on exécute un sous-programme de saut (JSR), les bits de condition N,Z du registre de status (SW) sont automatiquement poussés dans la pile. Ces bits de condition sont combinés avec les 14 bits les moins significatifs du compteur de programme 6 et ensuite poussés dans le même mot dans la pile. La sortie normale hors du sous-programme est assurée par l'instruction de retour de sous-programme RTS. Lorsque le BBSP exécute l'instruction RTS de retour de sous-programme, il rétablit automatiquement le contenu du compteur de programme avec une opération de dépilage. Les deux bits de status N, Z ne sont pas emmagasinés et restent dans l'état auquel ils sont avant l'instruction RTS (Fig.9). La sortie normale hors d'une interruption est effectuée avec l'instruction RTI de retour d'un programme dinterruption. Lorsque le BBSP exécute une instruction RTI, il rétablit automatiquement le contenu du compteur de programme avec une opération de dépilage. Les deux bits de status N, Z sont rétablis à partir de la pile. On va maintenant considérer les pointeurs de pile SP. La pile fonctionne comme une mémoire de lecture/ écriture circulaire dernier entré, premier sorti. La pile est de façon typique utilisée pour stocker l'adresse de retour sur appels de sous-programmes ou d'interruptions et drapeaux de condition des registres de status 30. Le pointeur de pile SP est un compteur à 4 bits qui pointe sur les 16 premiers mots dans la mémoire de données à partir de l'adresse O x 0 jusqu'à 0 x 1E (16 mots de 16 bits). Ce compteur ne peut être atteint directement par le programmeur. Le pointeur SP pointe seulement sur un mot, jamais sur un octet même si l'instruction est une instruction sous forme d'octet. Le pointeur de pile est utilisé par les instructions JSR, RTS, RTI, lorsqu'on entre dans un sous-programme d'interruption et lorsqu'on utilise le pointeur de pile pour un adressage indirect. Un empilage dans la pile (JSR et interruption) est un stockage à l'adresse définie par le pointeur de pile et un incrément de pointeur de pile, dans cet ordre (post incrément de SP). Un dépilage dans la pile (RTS et RTI) est assuré par un décrément du pointeur de pile (prédécrément de SP). Ensuite, il y a lecture à l'adresse définie par la nouvelle valeur dans SP. L'unité de décalage 16 et l'unité arithmétique et logique 17 vont maintenant être décrits en référence à la Fig.10. L'unité de décalage 16 reçoit le contenu du registre RB de source/destination qui peut être décalé de façon logique ou de façon arithmétique vers la gauche ou vers la droite de O à 15 bits. La sortie de l'unité de décalage est connectée directement à l'entrée B de l'unité arithmétique et logique 17. Cette unité effectue une opération entre A et B. L'entrée A reçoit un fichier de registr RA, une constante K ou des données d'une mémoire et l'entrée B, seulement la sortie de l'unité de décalage 16. La valeur de décalage est définie dans le code d'instruction pour une opération de décalage immédiate ou dans le registre A2 pour un décalage dynamique. Décalage immédiat : L'opérande d'instruction définit - une valeur de décalage de O à 15, - une direction vers la gauche ou vers la droite, - un décalage logique ou arithmétique. Des exemples de décalages sont donnés ci-après. 1. ET AO, Ai,L 15 ; ET AO & Ai décalé de façon logique de 15 bits à droite, résultat à sauvegarder dans Ai. 2. ET AO, A ; ET AO & Ai résultat à sauvegarder dans Ai. 3. ET AO,A1, L I ; ET AO & Ai décalé de façon logique de 1 bit vers la gauche, résultat à sauvegarder dans Ai. 4. ET AO, Aî,A 1 ; ET AO & Ai décalé de façon arithmétique de 1 bit à droite, résultat à sauvegarder dans Ai. 5. ET AO, Al, A > > 15; ET AO & Al décalé de façon arithmétique de 15 bits à droite, résultat à sauvegarder dans Ai. Les codages de décalages des exemples 1 à 5 donnés ci-dessus sont représentés sur la Fig. il qui représente un décalage immédiat. Le décalage dynamique représenté à la Fig. 12 est un décalage à gauche, le nombre de bits de décalage étant une valeur avec signe contenue dans le registre A2. Ce mode a la possibilité de décaler RB de 32 à 31. Normalement, une opération un le plus à gauche, précède un décalage dynamique. Le résultat de l'opération LMO est le nombre de zéros contigus à partir du bit le plus significatif du registre source. Le résultat est placé dans le registre A2 20. L'opération de décalage dynamique place le premier du registre de source dans une position de bit le plus significatif. Pendant l'exécution de l'instruction LMO (Fig.13a), l'exposant de AO est placé dans A2. L'instruction de normalisation (Fig. 13b) décale AO d'une valeur définie dans A2. Le résultat de l'opéra- tion entre Ai (si demandée) et A2 est décalé en retour sur A2. On va maintenant décrire en référence à la Fig.14, l'organisation de la mémoire du BBSP. Le BBSP fait appel à une architecture de Harvard où la mémoire de données et celle de programme se trouvent dans des espaces séparés. Le BBSP fournit deux espaces d'adresses séparés pour la mémoire de programme et la mémoire de données. La Fig.14 montre les dispositions des régions de mémoire d'un BBSP. Dans l'espace de programme 30, les 14 bits du compteur de programme 6 du BBSP peuvent adresser des mots de 16 K 24 bits de la mémoire de programme (Fig.1). La partie supérieure de la mémoire contient le démarrage aux vecteurs d'adresses pour une interruption et une remise à l'état initial 2.2.2. L'espace de données, contient une RAM, une ROM et un ensemble d'entrée sortie I/O; l'espace d'adresses 31 est compris entre O et 7 FFFh. Il est organisé en octets. Toutes les adresses sont des adresses d'octets. Avec un mode d'adressage indirect, on peut accéder aux 32 kilooctets de l'espace de données. Les registres B ou X contiennent une adresse effective de 15 bits. Dans le mode d'adressage direct, on ne pourrait atteindre que les premiers 8 K octets. Le champ d'instructions "dma" contient un décalage d'adresse de 10 bits et le registre de status contient une adresse de page de 3 bits. Les deux bits les plus significatifs sont placés à zéro, comme représenté à la Fig.15 qui représente un schéma de l'adressage de 1 'opérande. On remarquera que l'espace I/O d'entrée sortie 32 est un espace de 32 mots placé à la fin des pages de données. Le BBSP utilise une architecture de Harvard modifiée dans laquelle la mémoire de données et la mémomire de programme se trouvent dans deux espaces séparés, ce qui permet un complet chevauchement de l'appel et de l'exécution des instructions. Ce chevauchement est possible en raison de l'architecture pipeline à deux niveaux adoptée pour le BBSP, comme représenté à la Fig.16. L'architecture pipeline est le meilleur compromis en termes de performances par rapport au nombre de transistors nécessaires et à l'énergie consommée. Le pipeline d'appel préalable/décodage-exécution est pratiquement invisible pour l'utilisateur. En fonctionnement du pipeline, les opérations d'appel préalable, de décodage et d'éxécution sont indépendantes ainsi que le montrent les groupes de flèches de la Fig.16. Premier niveau de pipeline. 1. Le compteur de programme 6 engendre l'instruction d'adresse suivante. 2. Appel de l'instruction. 3. Mise à jour de l'adresse de programme. 4. Décodage d'instruction. Second niveau de pipeline. 5. Génération d'une adresse d'opérande. 6. Lecture des opérandes. 7. Mise à jour des adresses des opérandes. (si l'adressage est indirect avec post incrémentation). 8. Exécution et sauvegarde du résultat dans un registre de destination ou en mémoire. On va maintenant examiner le jeu d'instructions du BBSP. Le BBSP comporte quatre formats d'instructions. Les instructions de registre à registre qui définissent une opération entre deux registres Ra et Rb. Les instructions indirectes de registre concernent une opération entre une adresse de mémoire de données définie dans le registre Ra et le registre Rb. Les instructions de registre à mémoire concernent des opérations entre une adresse de mémoire de données définie dans le champ d'instructions et le registre Rb. Les instructions de commande, assurent la commande du flux d'exécution du programme. Le format des instructions va maintenant être décrit en référence à la Fig.17 qui présente sous forme de quatre lignes les quatre formats d'instructions énumérés ci-dessus. Les instructions de registre à registre indirectes de registre et de registre à mémoire, sont des instructions entières. Le dernier format est l'instruction de commande. Le format d'instruction est choisi dans le champ [ 3.0J. Toutes les instructions ont une étendue de 24 bits afin de réduire la complexité du décodage et la dissipation d'énergie, les champs du format d'instructions t3.0 ] d'opcode [ 3.1 ] ou [ 3.2 ] du code de condition [ 3.3 ] sont identiques. Pour des instructions d'entiers, le status de mise à jour [ 3.4 ] et le registre source/destination [ 3.5 ] sont communs. Les autres champs dépendent du format. Le type d'instruction est décodé dans la partie de contrôle 8 du coeur du BBSP (Fig.1). Le code d'instructions est représenté en détail à la Fig.18. Les instructions d'entiers opcode de code d'opération sont divisées en quatre catégories. - opérations [ 3.15 ] avec décalage de l'opérande. - opérations [ 3.16 ] sans décalage. - opérations [ 3.17 ] de multiplications. - transfert d'octet [ 3.18 ] . Les instructions avec décalage de destination sont Addition ADD Addition soustraction conditionnelle A ASCA Addition soustraction conditionnelle B ASCB Soustraction A SUBA Soustraction B SUBB ET AND OU OR OU exclusif XOR Les instructions avec décalage de source sont Stockage ST Stockage conditionnel STNC Multiplication MPY Multiplication 1 MPY1 Stockage conditionnel d'octet STB Les instructions sans décalage sont Chargement LD Un le plus à gauche LMO Négation NEG Les instructions de commande opcode présentées en [ 3.2 ] sur la Fig.18 sont divisées en trois catégories: - Instructions [ 3.19 ] sans opérande. - Instructions [ 3.20 ] , [ 3.22 ] avec adresse de mémoire de programme. - Instructions [ 3.21 ] avec valeur de répétition. Les instructions opcode commandent le fonctionnement de l'unité arithmétique et logique 17. Les codes de condition sont représentés par le champ 3.3 sur la Fig.17. Ils sélectionnent la condition d'exécution d'une instruction. Les différentes conditions sont présentées en [ 3.3 ] à la Fig.18. La condition choisie est comparée avec le contenu de status en cours. Si la condition est vraie l'opérande de destination est modifiée par le résultat de l'exécution de l'opération en cours. Si la condition n'est pas vraie, la destination n'est pas modifiée. Le status de mise à jour est représenté par le champ [ 3.4 ] sur la Fig.17. Si le bit uS de mise à jour de status est un 1, le status est mis à jour avec le résultat de 1 'exécution de l'opération en cours dans l'ALU 17. En mode de mot, le status est établi sur le résultat à 16 bits de l'ALU. En mode d'octet B = 1, le status est établi sur le résultat à 8 bits de l'ALU. Si le bit uS n'est pas sélectionné, le status n'est pas modifié. Registres de source et de destination Le champ Rb sélectionne le registre source/destination. Le contenu du registre Rb est connecté à l'entrée B de l'ALU 17 par l'intermédiaire de l'unité de décalage 16. Registre de source ou adressage indirect Dans le format de registre à registre Ra [ 3.6 ] , on sélectionne le registre de source qui est connecté à l'entrée A de 1'ALU 17. En adressage indirect, le champ indirect Ra [ 3.23 ] [ 3.24 ] sélectionne un registre qui contient l'adresse des données dans la mémoire. Le registre peut être auto-incrémenté après exécution d'une instruction. Toutes les instructions autres que celles du contrôle pourraient être seulement un format d'octet ou de mot. Ces instructions sont L'addition ADD L'opération ET AND L'addition ou la soustraction conditionnelle A ASCA L'addition ou la soustraction conditionnelle B ASCB Le chargement LD Un le plus à gauche LMO La multiplication 1 MPY1 La multiplication MPY La négation NEG L'opération OU OR Le stockage ST Le stockage conditionnel STNC La soustraction A SUBA La soustraction B SUBB L'opération OU exclusif XOR La valeur de défaut est le format de mot ( "ADD AO, B") en additionnant .b après, que l'instruction mnémonique devient une instruction d'octet ("ADD.B, AO, B"). Cet élément de modification va avoir les conséquences suivantes - si le status de mise à jour est utilisé, le mot de status sera mis à jour avec les 8 bits les plus faibles du résultat. - dans le mode d'adressage indirect à autoincrémentation, l'indice sera incrémenté de 1 (au lieu de 2). - l'octet de poids fort des 16 bits envoyé à l'unité arithmétique et logique est établi à O, si les données proviennent de la mémoire de données. On comprendra que dans le mode octet, l'unité arithmétique et logique, (à l'exception du drapeau), fonctionne dans le mode à 16 bits. Ceci signifie que le résultat placé dans le registre de destination est un résultat à 16 bits. Les données provenant du registre source sont également des données à 16 bits. Cela signifie qu'un décalage à droite doit être utilisé avec attention du fait que l'unité de décalage fonctionne également dans le mode à 16 bits. Lorsque les données proviennent de la mémoire, l'octet de poids fort est mis à zéro et n'est pas modifié lorsque les données proviennent du registre. Ce moyen de modification des octets pourrait n'être utilisé que pour l'adressage de registre à registre ou l'adressage indirect. Il ne peut être utilisé dans l'adressage direct et l'adressage immédiat. Il ne peut être utilisé non plus dans les instructions de contrôle. Trois autres instructions d'octet sont ajoutées. LDB charger octet STB stocker octet CBB comparer octet et branchement LDB et STB peuvent seulement être utilisées avec l'adressage direct. Elles ne sont pas utilisables avec l'adressage de registre à registre et l'adressage indirect. Les instructions de registre à registre et de registre indirectes, contiennent un opérande de décalage [ 3.8 ] qui sélectionne des décalages arithmétiques ou logiques et un champ de 5 bits [ 3.9 ] qui sélectionne le décalage à gauche ou à droite et la valeur du décalage. Le champ DMA d'adressage direct de mémoire [ 3.10 ] représenté à la Fig.17 sélectionne l'adresse de l'opérande de source connecté à l'entrée A de l'unité arithmétique et logique 17. Lorsque les codes de conditions [ 3.3 ] 7 ou 15 sont sélectionnées. Ce champ est une constante avec signe [ 3.11 ] qui est utilisée comme opérande de source connecté à l'entrée A de l'ALU 17. L'opération de l'ALU est exécutée entre Rb et K. Le résultat est le registre de destination Rb. Le champ PMA [ 3.12 ] contient l'adresse de programme qui modifie le compteur de programme en instructions de contrôle. La valeur de répétition est chargée dans le compteur de répétition 22 (Fig.2) avec une instruction RPTB de bloc de répétition. RPTB déclenche un bloc d'instruction de répétition qui prend fin lorsque le compteur de répétition est à zéro et que le code de conditions EOL est sélectionne. A chaque boucle, le compteur de répétition est décrémenté de 1. REVENDICATIONS 1. Architecture de processeur comprenant une unité centrale de traitement CPU, (2,4) une mémoire de programme (1) et une mémoire de données (3), l'unité centrale de traitement étant constituée fonctionnellement d'une partie d'exécution de programme (1,2) et d'une partie de traitement de données (4), caractérisé en ce qu'afin de réduire le nombre de composants entrant dans la constitution du processeur, au moins un élément (6,11,12) de la partie d'exécution de programme (1,2) est disposé dans la partie de traitement de données (4). 2. Architecture de processeur suivant la revendication 1, dans laquelle la partie d'exécution de programme (1,2) comporte un compteur de programme (6) auquel sont associés un dispositif d'incrémentation (11) et un dispositif d'adressage (12), un contrôleur (8) et la mémoire de programme (1) adressée par le compteur de programme (6), caractérisée en ce que le compteur de programme (6), et ses dispositifs d'incrémentation et d'adressage (12) sont disposés dans la partie de traitement de données (4). 3. Architecture de processeur suivant l'une des revendications 1 et 2, dans lequel la partie de traitement de données (4) comporte une pile de registres (15) et une unité arithmétique et logique (17), la partie de traitement de données (4) étant connectée à la mémoire de données (3) par un bus de données (18) et un bus d'adresses (19), caractérisée en ce que le compteur de programme (6), son dispositif d'incrémentation et son dispositif d'adressage font partie de la pile de registres (15) de la partie de traitement de données (4). 4. Architecture de processeur suivant la revendication 3, caractérisée en ce que la partie de traitement de données (4) comporte en outre une unité de décalage (16) connectée entre la pile de registres (15) et l'unité arithmétique et logique (17) et permettant à un décalage logique ou arithmétique vers la gauche ou la droite d'un contenu de registre d'être positionné avant l'exécution d'une opération sur ce contenu par l'unité arithmétique et logique (17). 5. Architecture de processeur suivant l'une des revendications 1 à 4, caractérisée en ce que le compteur de programme (6) est en outre relié à l'unité arithmétique et logique (17) ou à un décodeur d'instructions de la partie de traitement de données (4) par un bus (13) de transmission d'un signal (PMA) de modification de l'état du compteur de programme (6) lors d'un branchement, d'une interruption ou d'un chargement du compteur de programme (6). 6. Architecture de processeur suivant l'une des revendications 1 à 5, caractérisée en ce que la partie de traitement de données (4) de l'unité centrale de traitement comporte plusieurs registres internes (X,B,AO, Ai, A2, M, SW, PC) pouvant être utilisés comme registres universels ou comme registres spécialisés avec une fonction dédiée. 7. Architecture de processeur suivant la revendication 6, caractérisée en ce que lesdits registres pouvant être utilisés comme registres universels ou comme registres spécialisés, comprennent des registres (X,B) connectés à un dispositif d'incrémentation qui fonctionne en parallèle avec l'unité arithmétique et logique (17) et utilisés comme registres d'adresses lors d'un adressage indirect, un registre (20) de réception du résultat d'une opération un le plus à gauche, associé à un bloc (21) d'opération un le plus à gauche, un registre (M) de multiplication à décalage de Booth (21), un registre (SW) de status ou de commande, un registre (PC) constituant le compteur de programme (6). 8. Architecture de processeur suivant la revendication 7, caractérisée en ce que la multiplication à l'aide du registre à décalage de Booth, est exécutée par une série d'instructions d'addition/décalage (MPY) dont la première (MPY1) permet d'initialiser la séquence de multiplication.