Brevet FR2693573A1 — 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 comportant un registre d'état contenant des paramètres d'état qui sont fonction des résultats des opérations arithmétiques et logiques et dont la mise à jour dépend du programme. 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. Un programme d'instructions pour la commande d'un système de traitement de données classique tel qu'un microprocesseur ou un processeur de signal numérique (DSP) comprend des instructions du type arithmétique et logique et des instructions de rupture de séquence telles que des branchements conditionnels ou inconditionnels ou des sauts d'instructions. Les instructions du type arithmétique et logique commandent des opérations arithmétiques et logiques effectuées par l'unité arithmétique et logique (ALU). Il résulte d'une opération de ce type qu'un certain nombre de paramètres dits d'état, se trouvant généralement mémorisés dans un registre d'état, sont modifiés. Ces paramètres sont entre autres, les paramètres indiquant que le résultat de l'opération est nul (Z) ou est négatif (N), ou encore que l'opération a généré un report (C).A chaque instruction du type arithmétique et logique, les paramètres d'état se trouvant dans le registre d'état sont donc mis à jour par les résultats fournis par l'unité arithmétique et logique. Cependant, cette mise à jour automatique présente l'inconvénient que le programmeur n'est pas maître du contenu du registre d'état puisqu'il peut être modifié à chaque instruction. Mais surtout, dans le cas d'un test conditionnant un branchement, il n'est pas possible d'insérer des instructions du type arithmétique et logique entre l'instruction dont le résultat doit être utilisé (c'est-à-dire les paramètres d'état) et l'instruction de branchement car cette dernière pourrait être conditionnée de façon erronée par les paramètres d'état modifiés par des instructions intermédiaires puisque la mise à jour de ces paramètres a lieu automatiquement. Le but de l'invention est donc de réaliser un système de traitement de données dans lequel les paramètres d'état résultant d'opérations arithmétiques et logiques ne sont pas mis à jour automatiquement. L'objet de l'invention est un système de traitement de données du type énoncé ci-dessus dans lequel les instructions arithmétiques et logiques comportent un champ de mise à jour et les paramètres d'état mémorisés dans le registre d'état sont mis à jour seulement lorsque le champ de mise à jour a une valeur prédéterminée. 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 ; et - la figure 2 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 des 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, ctest-à-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). Comme il vient d'être mentionné, le bloc de registres de traitement 18 comprend un registre d'état dont le rôle est de mémoriser des paramètres d'état qui résultent des opérations arithmétiques et logiques effectuées par l'unité arithmétique et logique (ALU). Dans les systèmes de traitement de données antérieurs, le registre d'état est un registre particulier qui ne fait pas partie des registres généraux de traitement, son contenu est mis à jour automatiquement à chaque opération arithmétique et logique par les paramètres d'état provenant des opérations effectuées par 1'ALU, même si ces paramètres ne sont pas modifiés d'une opération à l'autre. La mise à jour automatique du registre d'état à chaque opération arithmétique et logique présente l'inconvénient pour le programmeur de ne pas avoir du tout le contrôle du registre d'état. Ceci a au moins deux conséquences gênantes. La première est qu'un test du registre d'état doit suivre immédiatement l'instruction dont il dépend sans pouvoir insérer entre cette instruction et le test des instructions arithmétiques et logiques qui pourraient modifier le contenu du registre d'état. La deuxième conséquence gênante dans un système de traitement de données classique est l'impossibilité de pouvoir disposer du registre d'état pour des opérations sous la dépendance du programmeur. C'est pourquoi, dans le système de traitement de données mettant en oeuvre l'invention, le registre d'état est un registre général au même titre que les autres registres généraux, fait partie du bloc de registres de traitement et son contenu est modifiable par programmation et donc reste sous le contrôle du programmeur. Mais à la différence des systèmes antérieurs, le registre d'état n'est mis à jour par les résultats en provenance de l'unité arithmétique et logique que par l'exécution d'une instruction commandant spécifiquement cette mise à jour. La figure 2 représente schématiquement le dispositif de mise en oeuvre de l'invention. Sur la figure, seul le registre d'état 40 a été représenté parmi les registres du bloc de registres de traitement. Le registre d'état 40 contient les paramètres d'état N indiquant un résultat d'opération négatif, Z un résultat nul et C le report d'opération. Ces trois paramètres sont, dans le mode de réalisation préféré, ceux qui sont mis à jour par les résultats d'une opération arithmétique et logique effectuée par l'ALU 24 en utilisant le dispositif de la figure 2. Mais il est évident que ce choix n'est pas limitatif et qu'un plus grand nombre de paramètres d'état peuvent être mis à jour. Chaque instruction du programme contient de façon classique un champ (42) affecté au code opération ou OPCODE et un champ (44) de code condition. En outre, l'instruction comporte un champ (US) 46 de mise à jour des paramètres N, Z et C. Dans le mode de réalisation préféré de la figure 2, le champ US est un seul bit, mais ceci n'est aucunement limitatif et le champ US pourrait contenir plusieurs bits sans que l'on sorte du cadre de l'invention Le bit 46 sert d'entrée à un circuit ET 48 dont l'autre entrée est le signal d'écriture W qui intervient de façon classique à chaque cycle d'instruction. Lorsque le bit 46 est à 1, le circuit ET devient passant et le signal d'écriture W commande le chargement des nouveaux paramètres d'état N, Z et C au moyen des lignes 50 en provenance de l'unité arithmétique et logique 24, dans le registre d'état 40.En l'absence de l'invention, les paramètres d'état du registre d'état 40 seraient mis à jour automatiquement au moyen des lignes 50, à chaque instruction lorsque le signal W est activé. Le circuit permettant d'effectuer cette mise à jour qui n'est pas modifié (mis à part le circuit ET 48) est classique et sa description n'est pas nécessaire pour la compréhension de l'invention. On voit donc que la mise à jour du registre d'état a lieu seulement lorsque le bit US 46 est à 1. Cette mise à jour reste donc sous la commande du programmeur. La mise en application de l'invention prend tout son sens lorsqu'elle est utilisée en combinaison avec des instructions conditionnelles. Le principe des instructions conditionnelles, tel qu'il est décrit dans la demande de brevet français FR-A-91 07985, consiste à prévoir un champ de code condition, duquel va dépendre l'exécution de l'instruction. Ainsi, comme il est expliqué dans la demande citée ci-dessus, il n'est pas nécessaire de modifier le registre de destination par le résultat d'une soustraction si cette soustraction est effectuée dans un but de comparaison. Dans ce cas, c'est le code condition qui indique qu'il n'y a pas chargement du résultat dans le registre de destination. L'exemple suivant permettra de mieux comprendre tout l'intérêt de l'invention utilisée conjointement aux instructions conditionnelles. La séquence d'instructions suivante est classique dans un système de traitement de données antérieur 1ère instruction soustraire a - b 2ème instruction si N = 0 continuer, sinon brancher en L 3ème instruction opération X L 4ème instruction opération Y La première instruction est une instruction de comparaison dont le résultat conditionne la suite du programme. Si le résultat est négatif N = 0, l'instruction 3 est exécutée. Sinon le programme saute l'instruction 3 et continue à partir de l'instruction 4. Ce type de branchement dans lequel seulement une instruction est sautée lorsqu'une condition n'est pas remplie, est très fréquent dans les processeurs utilisés dans les transmissions de données tels que les processeurs de signal numérique (DSP), dont le programme est conforme à un protocole donné. En utilisant les instructions conditionnelles ainsi que l'instruction de mise à jour du registre d'état telle que l'enseigne l'invention, la séquence d'instructions devient: 1ère instruction soustraire a - b, mise à jour registre d'état 2ème instruction opération X si N = 0 3ème instruction opération Y La première instruction, en plus de l'opération de soustraction commande la mise à jour du registre d'état. L'instruction 2 comporte un champ code opération commandant l'exécution d'une opération X mais également un champ de code condition qui ne permet l'exécution de l'opération X déterminée par le code opération que si N = O. Généralement les instructions de branchement telles que montrées dans l'exemple ci-dessus demandent plusieurs cycles, soit 2, 3 ou 4 cycles. On voit donc que le temps consommé dans l'exemple ci-dessus sans la mise en oeuvre de l'invention, c'est-à-dire avec l'instruction de branchement, est de 4, 5 ou 6 cycles dans le cas le plus favorable. Par contre, lorsque l'invention est mise en oeuvre, seulement 3 cycles sont nécessaires puisque l'instruction de branchement qui utilisait plusieurs cycles a disparu. L'exemple suivant illustre une séquence d'instructions qui pourrait se rencontrer dans un programme exécuté dans un système de traitement de données mettant en oeuvre l'invention. 1ère instruction soustraire a - b, mise à jour du registre d'état 2ème instruction opération Ol faisant intervenir le registre d'état 6ème instruction opération 02 si condition Cl réalisée 7ème instruction opération 03 faisant intervenir le registre d'état 14ème instruction opération 04 faisant intervenir le registre d'état 15ème instruction opération OS si condition C2 réalisée 16ème instruction opération 06 faisant intervenir le registre d'état 19ème instruction opération 07 si condition C3 réalisée 23ème instruction opération 08 faisant intervenir le registre d'état 27ème instruction opération 09 si condition C4 réalisée 36ème instruction soustraire a - b, mise à jour du registre d'état Dans la séquence ci-dessus de 36 instructions, il y a 4 instructions mettant en jeu des conditions, soit les instructions 6, 15, 19 et 27. Sans l'utilisation conjointe des instructions conditionnelles et de la mise à jour commandée du registre d'état, il aurait fallu prévoir 4 instructions de branchement conditionnelles nécessitant une consommation non négligeable de cycles. La mise à jour du registre d'état n'a lieu qu'à l'instruction 1 et à l'instruction 36. Ceci permet au programmeur de maîtriser parfaitement le déroulement du programme. Il peut ainsi prévoir de placer une instruction conditionnelle tenant compte des valeurs de N, Z et C (condition C1) qu'à la 6ème instruction. Ceci n'aurait pas été possible dans un système de traitement de données antérieur puisque les instructions intermédiaires mettaient à jour, automatiquement, le registre d'état.Au contraire, dans la mesure où il détermine lui-même à quelles instructions la mise à jour du registre d'état sera effectuée, le programmeur utilise le registre d'état comme registre de traitement dans les instructions 2, 7, 14, 16 et 23, ce qui bien entendu n'était pas possible dans la technique antérieure On voit donc que la mise en oeuvre de l'invention permet au programmeur de garder le contrôle du registre d'état et de se servir de ce dernier comme n'importe quel autre registre de traitement. En outre, utilisée conjointement avec l'emploi des instructions conditionnelles, l'invention permet d'éviter de nombreux branchements consommant beaucoup de cycles. Ces deux avantages contribuent à réduire de façon substantielle le nombre d'instructions du programme. En pratique, la mise en oeuvre de l'invention a permis de diminuer d'environ 2 millions le nombre d'instructions sur un total d'environ 10 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 20 %. 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 exécuter des opérations déterminées par des instructions arithmétiques et logiques et un registre d'état (40) contenant des paramètres d'état dont la valeur dépend des résultats desdites opérations effectuées par ladite unité arithmétique et logique ; ledit système étant caractérisé en ce que lesdites instructions arithmétiques et logiques comportent un champ de mise à jour (46) et au moins une partie des paramètres d'état (N, Z, C) dudit registre d'état (40) sont mis à jour seulement lorsque ledit champ de mise à jour (46) a une valeur prédéterminée. 2. Système selon la revendication 1, dans lequel ledit champ de mise à jour (46) de chaque instruction arithmétique et logique comprend un seul bit (US) dont la valeur est mise à 1 dans une instruction pour commander la mise à jour dudit registre d'état lors de l'exécution de ladite instruction. 3. Système selon la revendication 2, comprenant en outre un circuit ET (48) dont une première entrée est fournie par ledit bit (US) du champ de mise à jour (46) et une seconde entrée est un signal d'écriture (W) dans ledit registre d'état (40), ce dernier étant mis à jour, lorsque ledit bit (US) a la valeur 1, par les paramètres d'état résultant d'une opération arithmétique et logique effectuée par l'unité arithmétique et logique (24). 4. Système selon l'une quelconque des revendications 1 à 3, dans lequel lesdits paramètres d'état mis à jour lorsque le bit (US) dudit champ de mise à jour est à 1 sont un bit N indiquant un résultat négatif, un bit Z indiquant un résultat nul et un bit C indiquant un report. 5. Système selon l'une quelconque des revendications précédentes, dans lequel ledit registre d'état (40) est inclus dans le bloc de registres de traitement du système (18) et est utilisé en tant que registre de traitement par le programme.