Brevet FR2693571A1 — publié le 19940114

La présente invention concerne les systèmes de traitement de données du type microprocesseur et en particulier un système de traitement de données dont le programme de commande comporte des instructions dépendant des paramètres du registre d'état déterminés par le résultat des opérations arithmétiques et logiques. Au cours de la dernière décennie l'informatique a envahi la technique industrielle. Les systèmes de traitement de données remplissent maintenant beaucoup plus rapidement et plus précisément des fonctions autrefois accomplies par des hommes. L'avènement des microprocesseurs ou de façon générale la possibilité d'intégrer un système de traitement de données sur une seule puce minuscule a permis d'automatiser et de rendre beaucoup plus performants la majorité des équipements dans quelque domaine que ce soit. Ces progrès considérables ont été rendus possibles grâce à la technologie de fabrication des circuits élémentaires constituant les systèmes de traitement de données qui a permis une miniaturisation de plus en plus poussée entraînant un accroissement énorme de la vitesse de traitement des instructions, une puissance de traitement toujours plus grande et une réduction des coûts de fabrication du fait de l'emploi de circuits élémentaires identiques, généralement des transistors, et de la consommation réduite du matériau à la base de ces circuits, le silicium. Parallèlement à ces améliorations dues principalement à la technologie des semiconducteurs, on cherche à améliorer les systèmes de traitement de données par d'autres moyens tels que la réduction du nombre des instructions du programme de commande nécessaires pour aboutir à un résultat déterminé. C'est précisément le but de l'invention. Ainsi, un programme d'instructions pour la commande d'un système de traitement de données tel qu'un microprocesseur, comporte souvent des instructions à exécuter différentes selon le résultat d'une ou plusieurs instructions précédentes. Par exemple ceci peut être courant dans un système de traitement de données spécialisé tel qu'un processeur de signal numérique (DSP). Dans ce type de processeur, le résultat d'une comparaison détermine s'il y a lieu d'effectuer une addition ou une soustraction. Selon le résultat de la comparaison le programme se déroule en séquence s'il s'agit d'une addition ou fait un branchement consistant en un saut d'une ou plusieurs instructions s'il s'agit d'une soustraction. Bien entendu il faut de nouveau prévoir un saut de la ou des instructions de soustraction lorsque le programme effectue une addition.C'est donc un double jeu d'instructions (addition et soustraction) qu'il faut inclure dans le programme, et également prévoir des instructions de branchement et de saut d'instructions. Tout ceci augmente de façon substantielle le nombre d'instructions du programme, et surtout consomme du temps au détriment de la vitesse de traitement de l'ensemble des opérations. Le but de l'invention est donc de réaliser un système de traitement de données tel qu'un microprocesseur comportant un nombre réduit d'instructions dépendant du résultat d'opérations antérieures. Un autre but de l'invention est de réaliser un système de traitement de données comportant une seule instruction à la place de plusieurs instructions alternatives dépendant du résultat d'opérations antérieures. L'objet de l'invention est un système de traitement de données du type comportant une unité arithmétique et logique pour effectuer des opérations arithmétiques et logiques commandées par le code opération des instructions d'un programme et un registre d'état contenant des paramètres d'état dont la valeur dépend d'opérations arithmétiques ou logiques effectuées par l'unité arithmétique et logique, et comprenant un circuit de décodage des paramètres contenus dans le registre d'état pour modifier le code opération d'une instruction transmis à l'unité arithmétique et logique en fonction des paramètres d'état de façon à fournir une pluralité de codes opérations équivalant à plusieurs instructions alternatives dont l'exécution dépend des paramètres d'état. L'invention sera mieux comprise à la lecture de la description qui suit faite en référence aux dessins dans lesquels - la figure 1 représente un schéma synoptique d'un système de traitement de données dans lequel l'invention est mise en oeuvre - la figure 2 illustre de façon schématique un dispositif mettant en oeuvre l'invention ; et - la figure 3 est un schéma synoptique d'un mode de réalisation préféré de l'invention. La figure 1 représente l'organisation d'un système de traitement de données incorporant l'invention. Un tel système de traitement de données préféré pour mettre en oeuvre l'invention est un processeur de données du type processeur de signal numérique ou un microprocesseur, sans que ce choix soit limitatif pour autant. Les instructions du programme, quelquefois appelées micro-instructions lorsque le système de traitement de données est un microprocesseur, sont emmagasinées dans une mémoire de programme 10. La mémoire de programme 10 est généralement une mémoire morte ou à lecture seulement (ROM) du type programmable (PROM) ou effaçable (EPROM). Mais la mémoire 10 pourrait être également une mémoire vive (RAM). La mémoire 10 communique par le bus 12 avec une unité de décodage et contrôle 14 qui contient l'essentiel de la logique du système chargée de décoder les instructions en provenance de la mémoire de programme 10 et de contrôler le cheminement des informations décodées dans les instructions. Ces informations peuvent être utilisées soit pour l'accès aux données, soit pour des opérations arithmétiques et logiques. Pour ce faire l'unité de décodage et contrôle 14 est reliée au bus d'adressage 16. Le bus 16 est connecté d'une part à un bloc de registres de traitement 18 qui contient les registres généraux utilisés pour le traitement de instructions. Ces registres sont destinés à contenir les opérandes contenus dans les instructions ou en provenance de la mémoire de données, ou peuvent servir de registres d'index pour l'adressage indirect. Mais ces registres de traitement peuvent avoir d'autres fonctions dévolues la plupart du temps à l'unité de décodage et contrôle.Ainsi, le bloc de registres de traitement 18 peut contenir le compteur de programme (PC), des registres d'incrémentation, des registres de décalage utilisés principalement lors des opérations de multiplication ou division, tels qu'un registre à décalage de Booth, ou encore le registre d'état qui contient un certain nombre de paramètres déterminés après l'exécution d'une instruction du type arithmétique ou logique tels que les indications de résultat zéro, résultat négatif ou de report. La plupart des registres du bloc 18 sont adressables au moyen du bus d'adressage 16. Le bus d'adressage 16 est également une entrée d'une unité de décodage d'adresse 20 dont la fonction est de décoder les adresses résultant du décodage des instructions par l'unité de décodage et contrôle 14 de façon à accéder aux données emmagasinées dans une mémoire de données 22. La mémoire de données est généralement une mémoire vive (RAM) mais ce pourrait être également une mémoire morte ou tout autre type de mémoire. On notera que le bloc de registres de traitement 18 est connecté au bus d'adressage 16 de sorte que le contenu de certains registres du bloc 18 puisse être transmis à l'unité de décodage d'adresse 20 lorsque ce contenu est une adresse d'accès à la mémoire de données 22. De façon à effectuer les opérations arithmétiques et logiques commandées par le contenu des instructions du programme, une unité arithmétique et logique (ALU) 24 est connectée à la sortie du bloc de registres de traitement 18. La sortie de l'unité arithmétique et logique 24 est soit un emmagasinage de données dans la mémoire de données 22 par le bus de données 26, soit un nouvel adressage d'un des registres du bloc de registres de traitement 18 par le bus de résultat 28. Les données en provenance de la mémoire de données 22 dont l'adresse a été fournie par l'unité de décodage d'adresse 20 sont transmises à l'entrée de l'unité arithmétique et logique 24 au moyen du bus de lecture de mémoire 30. Enfin, le bloc de registres de traitement 18 est relié à l'unité de contrôle des unités périphériques 32 au moyen du bus entrée/sortie 34. Le système de traitement de données qui vient d'être décrit est du type Harvard, c'est-à-dire que la mémoire 10 contenant les instructions est complètement séparée de la mémoire 22 contenant les données. Mais l'invention pourrait également être mise en oeuvre dans des systèmes de traitement de données d'un autre type. Le système de traitement de données peut être un microprocesseur à vocation universelle, ou bien, selon un mode de réalisation préféré, un processeur spécialisé tel qu'un processeur de signal numérique (DSP) utilisé dans un dispositif de transmission de données et en particulier dans un dispositif de radio cellulaire (GSM, DECT, ou équivalent). Le principe général de l'invention est de prévoir des instructions dont le code opération est variable selon les paramètres d'état du système. Ce principe est maintenant décrit en référence à la figure 2 qui représente un mode de réalisation général de l'invention. Comme illustré sur la figure 2, chaque instruction 40 comprend un champ 42 contenant le code opération (OPCODE) de l'instruction. Ce code opération qui est décodé par l'unité de décodage et contrôle 14 (déjà illustrée sur la figure 1), est le code qui commande le type d'opération à effectuer tel qu'Addition, Soustraction, Comparaison,... En réponse au décodage, les signaux sur les lignes de sortie 44 commandent alors soit l'adressage de registres de traitement, soit l'adressage de données en mémoire comme on l'a vu précédemment en référence à la figure 1. Un groupe 46 de lignes de sortie, qui peut d'ailleurs se réduire à une seule ligne comme on le verra ci-après, est connecté à un circuit de décodage 48. Ces lignes 46 fournissent les signaux produits par le décodage des instruc tions utilisées pour la mise en oeuvre de l'invention alors que pour toutes les autres instructions les signaux de décodage sont fournis sur les lignes 44. Les informations fournies sur les lignes 46 par le décodage du code opération d'une instruction dépendant des paramètres d'état sont utilisées par le circuit de décodage 48 conjointement avec certains paramètres d'état se trouvant dans le registre d'état 50 du bloc de registres de traitement 18. Les paramètres d'état du registre d'état 50 utilisés dans le cadre de l'invention sont N : bit à 1 lorsque le bit de signe (MSB) de l'opération précédente est à 1, indiquant que le résultat de cette opération est néga tif, Z : bit à 1 lorsque le résultat de l'opération précédente est nul, C : bit de report à 1 lorsque l'opération génère un report. Selon la valeur des paramètres d'état N, Z, ou C, le circuit de décodage 48 fournit un code de commande sur les lignes 52, en réponse aux signaux reçus sur les lignes 46 provenant du décodage du code opération d'une instruction dépendant des paramètres d'état. Ce code de commande est transmis directement à l'unité arithmétique et logique 24 dont l'opération sera différente selon le code. Sur la figure 2, 3 lignes 52 sont représentées parce que 8 codes de commande différents peuvent être fournis en réponse aux 8 combinaisons possibles des paramètres N, Z et C. Mais il va de soi que le nombre de lignes peut être inférieur ou supérieur à 3 sans déroger au principe de l'invention. La figure 3 illustre un mode de réalisation préféré de l'invention qui permettra de mettre en évidence, grâce à un exemple réel, la réduction du nombre d'instructions rendue possible par la mise en oeuvre de l'invention. L'exemple illustré en liaison avec la figure 3 concerne une séquence d'instructions dans laquelle l'opération à effectuer est soit une addition, soit une soustraction, le choix dépendant du résultat d'une comparaison antérieure. Dans un système de traitement de données classique, la séquence d'instructions se présente de la façon suivante (pour la compréhension, AO, Al, X et B sont des registres du bloc de registres de traitement). 1ère instruction comparer AO et Al 2ème instruction brancher en L1 si N = 1 3ème instruction additionner X + B, résultat dans B 4ème instruction continuer en L2 L1 Sème instruction soustraire B - X, résultat dans B L2 6ème instruction Dans ce mode de réalisation de l'invention, seul le paramètre d'état N du registre d'état 50 est utilisé. La valeur de N est utilisée comme première entrée d'un circuit OU-EXCLUSIF 60 (correspondant au circuit de décodage de la figure 2). La deuxième entrée du circuit 60 est un bit du code opération d'une instruction dépendant des paramètres d'état qui en comporte 4 dans le cas illustré. Selon que N a la valeur O ou la valeur 1 dépendant du résultat de la comparaison qui précède, ce bit de code opération sera inversé ou non.Le signal de sortie du circuit OU-EXCLUSIF 60 sur la ligne 62 est donc le même que le bit de code d'entrée lorsque N = O et l'inverse lorsque N = 1. Ce bit sur la ligne 62 est fourni à l'unité arithmétique et logique 24 qui effectue une addition lorsque N = O et une soustraction lorsque N = 1. On doit noter qu'au même moment l'unité ALU 24 est conditionnée par les autres bits du code opération (trois dans le cas présent) pour effectuer soit une addition, soit une soustraction. Grâce au dispositif illustré sur la figure 3, la séquence d'instructions à exécuter est la suivante 1ère instruction comparer AO et Al 2ème instruction additionner B + X si N = O et soustraire B - X si N = 1, résultat dans B On voit donc que, grâce à l'invention, la séquence d'instructions ne nécessite plus que deux instructions au lieu de cinq avec un système de traitement de données classique. En pratique, la mise en oeuvre de l'invention permet un gain substantiel d'environ 500 000 instructions sur un total de 8 millions d'instructions nécessaires pour un programme du type ADPCM utilisé dans un codeur-décodeur vocal, ce qui représente un accroissement de la performance du processeur de l'ordre de 6 à 7 . Bien que l'invention ait été mise en pratique dans le mode de réalisation illustré sur la figure 3 dans lequel seul le paramètre d'état N est utilisé, on peut envisager aisément un mode de réalisation dans lequel les deux paramètres d'état N et Z sont utilisés. Dans ce cas le code d'entrée du circuit de décodage comportera deux bits, et le circuit de décodage lui-même devra comporter deux circuits OU-EXCLUSIF en série. Les quatre sorties possibles du circuit de décodage pourraient être utilisées pour commander l'unité arithmétique et logique à effectuer une parmi quatre opérations telles que l'addition, la soustraction, la mise à zéro et la mise à un. REVENDICATIONS 1. Système de traitement de données dont le fonctionnement est commandé par le déroulement d'un programme composé d'une séquence d'instructions comprenant une unité arithmétique et logique (24) pour effectuer des opérations arithmétiques et logiques commandées par le code opération des instructions de ladite séquence d'instructions et un registre d'état (50) contenant des paramètres d'état dont la valeur dépend des résultats d'opérations arithmétiques ou logiques effectuées par ladite unité arithmétique et logique; ledit système étant caractérisé en ce qu'il comprend un circuit de décodage (14) des paramètres d'état contenus dans ledit registre d'état pour modifier le code opération (42) d'une instruction transmis à l'unité arithmétique et logique dépendant de paramètres d'état en fonction desdits paramètres de façon à fournir une pluralité de codes de commande équivalant à plusieurs instructions alternatives dont l'exécution dépend desdits paramètres d'état, l'un desdits codes de commande dépendant de la valeur desdits paramètres d'état étant transmis à ladite unité arithmétique et logique pour que celle-ci exécute une opération arithmétique ou logique associée audit code de commande. 2. Système de traitement de données selon la revendication 1, caractérisé en ce que lesdits paramètres d'état utilisés pour modifier le code opération (42) d'une instruction dépendant de paramètres d'état sont N qui est à 1 lorsque le résultat de l'opération précédente est négatif, Z qui est à I lorsque le résultat de l'opération précédente est nul et C qui est à 1 lorsque l'opération précédente a généré un report. 3. Système de traitement de données selon la revendication 2, caractérisé en ce que ledit circuit de décodage est un circuit OU-EXCLUSIF (60) dont la première entrée est fournie par le paramètre d'état N et la deuxième entrée par un des bits du code opération d'une instruction dépendant de paramètres d'état, la sortie dudit circuit OU-EXCLUSIF commandant l'exécution par ladite unité arithmétique et logique (24) d'une parmi deux opérations possibles déterminée par la valeur dudit paramètre N. 4. Système de traitement de données selon la revendication 3, caractérisé en ce que lesdites deux opérations possibles dont le choix est déterminé par la valeur dudit paramètre d'état N, sont l'addition ou la soustraction.