Brevet FR2974918A1 — publié le 20121109

Coprocesseur apte à coopérer avec un microprocesseur. 1. Domaine de l'invention Le domaine de l'invention est celui des microprocesseurs, et des commandes utilisées par de tels microprocesseurs pour manipuler des données. Plus précisément, l'invention concerne la mise en oeuvre de traitements de type «bitslice » dans un microprocesseur, de façon simple et efficace. 2. Art antérieur Il est parfois nécessaire, dans le cadre du traitement de données numériques, d'appliquer une opération particulière sur le n-ième bit d'une série de mots de données. Ce traitement est actuellement long et fastidieux, car on doit considérer chaque mot l'un après l'autre, pour en extraire le n-ième bit, le traiter, puis restituer le mot modifié. Ce mode de fonctionnement est dit « binaire ». On connaît un mode de fonctionnement plus rapide, dit « bitslice » ou «slice », consistant à effectuer des opérations sur des mots de données intermédiaires directement et non sur un bit de chaque mot de données. Pour cela, on utilise un mot de données intermédiaire, constitué de tous les n-ièmes bits d'une série de mots à traiter, et on effectue, en une opération unique sur le mot modifié, le traitement souhaité (par exemple l'ajout d'un mot binaire formé de « 1 », si l'opération à effectuer est le changement de valeur de chaque n-ième bit). Cette technique permet de gagner en efficacité pour des calculs identiques s'appliquant à une pluralité de mots de données. Cependant, cette technique reste complexe, car elle suppose plusieurs opérations logicielles, c'est-à-dire l'appel à une série d'instructions programmée par un informaticien (inscriptions des n mots dans des registres, extraction du mot intermédiaire, modification du mot intermédiaire, ré-intégration du mot intermédiaire modifié, récupération des n mots ainsi modifiés). Un inconvénient de cette technique de l'art antérieur réside dans son coût en temps et en opérations logicielles.30 3. Objectifs de l'invention L'invention a pour objectif de pallier au moins certains inconvénients de ces techniques connues. Plus précisément, un objectif est de fournir une technique permettant 5 d'effectuer des opérations de type «bitslice » ou « slice », de façon simple et efficace. 4. Exposé de l'invention L'invention propose une solution nouvelle qui ne présente pas l'ensemble de ces inconvénients de l'art antérieur, sous la forme d'un circuit intégré traitant 10 des mots de données de n bits. Selon l'invention, un tel circuit intégré met en oeuvre une commande de basculement, dite « SUCE », assurant un basculement d'un premier mode, dit mode de fonctionnement binaire, à un second mode, dit mode de fonctionnement par tranche, dans lequel on dispose d'au moins un mot intermédiaire d'indice i 15 constitué par le i-ème bit de chacun des mots de données, et comprend des moyens de restitution du mot intermédiaire d'indice i. Ainsi, l'invention repose sur une approche nouvelle et inventive de la mise en oeuvre de traitements de type « bitslice » dans un microprocesseur, utilisant une instruction matérielle de basculement permettant une opération de type « bitslice » 20 sur un certain nombre de mots de données binaires. Le terme « commande » fait ici référence aux commandes de base que connaît le circuit intégré, en « langage machine », c'est-à-dire les commandes que le circuit intégré est capable d'exécuter directement, et qui correspondent donc à des actions inscrites en « hardware » dans le circuit intégré, par opposition à des 25 instructions de plus haut niveau, qui correspondent à des « sous-programmes » en langage machine, regroupant un ensemble programmé de commandes. En d'autres termes, l'invention concerne une instruction « hardware » spécifique, agissant directement sur des registres et des connexions entre ces registres, et non des sous-programmes logiciels, selon l'approche connue. L'invention, selon ses différents modes de réalisation, permet notamment de s'affranchir des inconvénients de l'art antérieur liés à la programmation logicielle de ce type de traitement «bitslice » et propose une solution ne présentant pas les ralentissements dus à la mise en oeuvre des différentes instructions logicielles pour une seule opération de type « bitslice ». Par ailleurs, l'invention permet de minimiser les risques d'erreurs liées à la programmation d'une pluralité d'instructions logicielles. En particulier, le circuit intégré contrôle deux jeux de registres : - un premier jeu de p premiers registres pouvant stocker chacun un des mots de données, et - un second jeu de n seconds registres, pouvant stocker chacun un des n mots intermédiaires. Selon un mode de réalisation particulier, la commande de basculement « SUCE » est accompagnée d'au moins un paramètre i et le circuit intégré restitue le mot intermédiaire d'indice i. Ainsi, même si tous les mots intermédiaires sont générés, ce mode de réalisation de l'invention permet de n'en restituer qu'un, par exemple pour effectuer ensuite une opération de modification sur ce mot intermédiaire. Selon un autre aspect de l'invention, le circuit intégré met en oeuvre une commande de basculement inverse, dite « UNSLICE », assurant un basculement du second mode, dit mode de fonctionnement par tranche, au premier mode, dit mode de fonctionnement binaire. En particulier, la commande de basculement «UNSLICE » est accompagnée d'au moins un paramètre i, et le circuit intégré remplace le i-ème bit de chacun des mots de données par le bit correspondant du i-ème mot intermédiaire. Selon un autre mode de réalisation de l'invention, le circuit intégré comprend des moyens de mise en oeuvre d'au moins une opération de modification d'au moins un des mots intermédiaires. Ainsi, avant de restituer un ou plusieurs des mots intermédiaires obtenus suite à l'exécution d'une commande « SUCE », le circuit intégré comprend des moyens de mise en oeuvre d'une ou plusieurs opérations modifiant ce ou ces mots intermédiaires. Par exemple, une telle opération de modification correspond à une opération du type : - un forçage à 0 d'au moins un des bits ; - un forçage à 1 d'au moins un des bits ; - un complément à 1 d'au moins un des bits ; - une addition par une valeur prédéterminée ; - une multiplication par une valeur prédéterminée ; - une rotation des bits ; - un décalage des bits ; - En particulier, le circuit intégré est un coprocesseur matériel apte à coopérer avec un microprocesseur traitant des mots de données de n bits. Selon un mode de réalisation de l'invention, un tel circuit intégré met en oeuvre uniquement les deux commandes « SLICE » et « UNSLICE ». Ainsi, un tel coprocesseur matériel est dédié aux deux seules commandes « SUCE » et « UNSLICE ». 5. Liste des figures D'autres caractéristiques et avantages de l'invention apparaîtront plus clairement à la lecture de la description suivante d'un mode de réalisation particulier, donné à titre de simple exemple illustratif et non limitatif, et des dessins annexés, parmi lesquels : - la figure 1 présente un exemple de structure d'un circuit intégré selon un mode de réalisation de l'invention ; - les figures 2a et 2b illustrent des exemples de structure simplifiée d'un microprocesseur coopérant avec un circuit intégré selon un mode de réalisation de l'invention.30 6. Description d'un mode de réalisation de l'invention Le principe général de l'invention repose sur la mise en oeuvre matérielle par un circuit intégré de deux types de commandes, appelés par la suite « SUCE » et « UNSLICE » (il est bien sûr possible de nommer différemment ces commandes), permettant d'effectuer des opérations sur des mots de données binaires de manière globale, par tranche, sur un ou plusieurs bits de chacun des mots de données. Ainsi, la mise en oeuvre étant matérielle et non plus logicielle, les performances en termes de temps d'exécution et de minimisation des risques 10 d'erreurs sont améliorées. On présente maintenant, en relation avec la figure 1, un exemple de structure d'un circuit intégré selon un mode de réalisation de l'invention. Un tel circuit intégré comprend notamment deux jeux de registres, notés respectivement A pour le premier jeu de p registres pouvant stocker chacun un 15 mot de données de n bits, et B pour le second jeu de n registres, pouvant stocker chacun un des n mots intermédiaires. Les jeux de registres sont reliés de façon à pouvoir mettre en oeuvre les commandes « SUCE » et « UNSLICE », c'est-à-dire de façon à permettre, en particulier, l'exécution de la commande « SUCE » sur le premier jeu A de 20 registres ou sur le deuxième jeu B de registres. Par exemple, une telle commande appliquée au premier jeu A de registres a pour effet une opération de copie des registres de A vers les registres de B, de la manière suivante : - le 1 er bit du 1 er registre de A est copié vers le 1 er bit du 1 er registre de B, 25 - le 2ème bit du 1 er registre de A est copié vers le 1 er bit du 2ème registre de B, - le 3ème bit du ter registre de A est copié vers le ter bit du 3ème registre de B, - - le neme bit du 1 er registre de A est copié vers le 1 er bit du nème registre de B, et 30 - le 1 er bit du 2ème registre de A est copié vers le 2ème bit du 1 er registre de B, - le 2eme bit du 2eme registre de A est copié vers le 2ème bit du 2ème registre de B, - le neme bit du 2eme registre de A est copié vers le 2ème bit du nème registre de B, - ... et ainsi de suite. Ainsi, une fois la commande « SUCE » exécutée selon ce mode de réalisation de l'invention, les registres de B stockent chacun un mot intermédiaire d'indice i (i=1... n), constitué par le i-ème bit de chacun des mots de données stockés préalablement dans les registres de A. Selon ce mode de réalisation de l'invention, le circuit intégré comprend également des moyens de restitution des mots intermédiaires stockées dans les registres de B. Ainsi, lorsque le circuit intégré coopère avec un microprocesseur, il 15 restitue, en réponse à la requête d'exécution de la commande « SLICE », les mots intermédiaires contenus dans les registres de B. La mise en oeuvre d'une telle commande a principalement pour objectif de permettre de modifier rapidement les i-ème bits de chacun des mots de données, sans agir sur chacun de ces bits indépendamment. En effet, il suffit de modifier 20 tous les bits du i-ème mot intermédiaire stocké dans le i-ème registre de B pour obtenir un mot intermédiaire modifié. Ces modifications peuvent par exemple être une inversion de la valeur de chaque bit du registre, un forçage à 1 ou à 0 pour tous les bits du registre, une rotation ou un décalage des bits du registre, une addition ou une multiplication par 25 une valeur prédéterminée,... Dans tous les cas, une seule opération sur le i-ème registre de B suffit pour agit sur tous les i-ème bits des registres de A. On verra en effet par la suite qu'une commande « UNSLICE » appliquée aux registres de B permet de restituer dans les registres de A les mots de données initiaux dont le i-ème bit a été modifié. Selon une variante de réalisation, la commande « SUCE » peut être accompagnée d'au moins un paramètre i, spécifiant ainsi sur quel bit des mots de données des registres de A la commande doit être effectuée et quel mot intermédiaire des registres de B est à restituer. Ainsi, même si le câblage, nécessairement « statique », est réalisé de façon à pouvoir mettre en oeuvre la commande « SLICE » sur tous les registres de A, cette variante de réalisation permet de ne pas traiter tous les bits des registres de A, mais seulement le i-ème selon l'indice requis dans la commande « SLICE ». Selon une autre variante de réalisation, le circuit intégré comprend donc également des moyens de mise en oeuvre d'une commande « UNSLICE », permettant de copier des registres de B vers les registres de A, de la manière suivante : - le 1 er bit du 1 er registre de B est copié vers le 1 er bit du 1 er registre de A, - le 2ème bit du 1 er registre de B est copié vers le 1 er bit du 2ème registre de A, - le 3ème bit du ter registre de B est copié vers le ter bit du 3ème registre de A, - - le peine bit du 1 er registre de B est copié vers le 1 er bit du peine registre de A, et - le 1 er bit du 2ème registre de B est copié vers le 2ème bit du 1 er registre de A, 20 - le 2ème bit du 2ème registre de B est copié vers le 2ème bit du 2ème registre de B, - - le pème bit du 2ème registre de B est copié vers le 2eme bit du peine registre de A, 25 - ... et ainsi de suite. Cette variante est particulièrement adaptée dans le cas où le circuit intégré comprend également des moyens de mise en oeuvre d'au moins une opération de modification d'au moins un mot intermédiaire stocké dans l'un des registres de B. En effet, de cette manière, le circuit intégré restitue les mots de données stockés dans les registres de A, après les opérations de « SLICE », de modification et de « UNSLICE ». Par exemple, le circuit intégré met en oeuvre une commande « SLICE » sur les registres de A (ou au moins le i-ème bit des registres de A), pour obtenir au moins un mot intermédiaire dans un des registres de B. Ensuite, le circuit intégré modifie au moins ce mot intermédiaire stocké dans l'un des registres de B, par exemple pour complémenter chacun des bits de ce mot intermédiaire, puis met en oeuvre une commande « UNSLICE » sur au moins le mot intermédiaire modifié stocké dans l'un des registres de B, de façon à restituer des mots de données modifiés stockés dans les registres de A. Ainsi, si l'on veut forcer à 0 le 4ème bit de chacun des mots de données, le circuit intégré met en oeuvre la commande « SLICE », sur tous les bits de chaque registre de A ou seulement sur le 4ème bit de chaque registre de A selon la variante choisie, de façon à obtenir au moins un mot intermédiaire dans le 4ème registre de B. Ensuite, le circuit intégré force à 0 tous les bits de ce 4ème registre de B et met en oeuvre la commande « UNSLICE », sur tous les registres de B ou seulement sur le 4ème, selon la variante choisie. Les registres de A stockent donc les mots de données initiaux dont le 4ème bit a été forcé à 0. On décrit maintenant, en relation avec les figures 2a et 2b, des exemples de 20 structures simplifiées d'un microprocesseur coopérant avec un circuit intégré mettant en oeuvre l'invention. Selon une première variante illustrée en figure 2a, le circuit intégré 20a est un coprocesseur matériel, contrôlant deux jeux de registres A et B, et coopérant avec un microprocesseur µP 21a. 25 Selon cette première variante, le coprocesseur matériel 20a met en oeuvre uniquement les commandes « SLICE » et « UNSLICE », respectivement sur les registres de A et de B. C'est ensuite le microprocesseur µP 21a qui traite les mots intermédiaires des registres de B, par exemple en les modifiant à l'aide moyens de modification 22. Le microprocesseur µP 21a transmet ensuite au coprocesseur 20a 30 une requête d'exécution d'une commande «UNSLICE », à partir des mots intermédiaires des registres de B, de façon à obtenir, dans les registres de B, des mots de données modifiés. Selon une deuxième variante illustrée en figure 2b, le circuit intégré 20b contrôle deux jeux de registres A et B, coopère avec un microprocesseur µP 21b et comprend également des moyens de modification 22. Ainsi, comme indiqué précédemment, le circuit intégré peut restituer au microprocesseur µP 21b soit des mots intermédiaires stockés dans les registres de B, après la mise en oeuvre d'une commande « SLICE » sur les registres de A, soit des mots intermédiaires modifiés par les moyens 22, soit des mots de données modifiés stockés dans les registres de A, après la mise en oeuvre d'une commande «UNSLICE» sur les mots intermédiaires modifiées stockés dans les registres de B. REVENDICATIONS1. Circuit intégré traitant des mots de données de n bits, caractérisé en ce qu'il met en oeuvre une commande de basculement, dite « SUCE », assurant un basculement d'un premier mode, dit mode de fonctionnement binaire, à un second mode, dit mode de fonctionnement par tranche, dans lequel on dispose d'au moins un mot intermédiaire d'indice i constitué par le i-ème bit de chacun desdits mots de données, et en ce qu'il comprend des moyens de restitution dudit mot intermédiaire d'indice i. 2. Circuit intégré selon la revendication 1, caractérisé en ce qu'il contrôle deux jeux de registres : - un premier jeu (A) de p premiers registres pouvant stocker chacun un desdits mots de données, et - un second jeu (B) de n seconds registres, pouvant stocker chacun un 15 desdits n mots intermédiaires. 3. Circuit intégré selon la revendication 1 ou 2, caractérisé en ce que ladite commande de basculement « SUCE » est accompagnée d'au moins un paramètre i et en ce que ledit circuit intégré restitue ledit mot intermédiaire d'indice i. 4. Circuit intégré selon l'une quelconque des revendications 1 à 3, caractérisé 20 en ce qu'il met en oeuvre une commande de basculement inverse, dite «UNSLICE », assurant un basculement dudit second mode, dit mode de fonctionnement par tranche, audit premier mode, dit mode de fonctionnement binaire. 5. Circuit intégré selon la revendication 4, caractérisé en ce que ladite 25 commande de basculement «UNSLICE » est accompagnée d'au moins un paramètre i, et en ce que ledit circuit intégré remplace le i-ème bit de chacun desdits mots de données par le bit correspondant dudit i-ème mot intermédiaire. 6. Circuit intégré selon l'une quelconque des revendications 1 à 5, caractérisé en ce qu'il comprend des moyens de mise en oeuvre d'au moins une opération de 30 modification d'au moins un desdits mots intermédiaires. 7. Circuit intégré selon l'une quelconque des revendications 1 à 6, caractérisé en ce qu'il s'agit d'un coprocesseur matériel (20a) apte à coopérer avec un microprocesseur traitant des mots de données de n bits. 8. Circuit intégré selon les revendications 3, 4 et 7, caractérisé en ce qu'il met 5 en oeuvre uniquement lesdites deux commandes « SLICE » et « UNSLICE ».