FR2919081A1 - Bijective operation implementing method for computer microprocessor, involves determining assignment sequence for assigning elementary memories from combined bijections for calculating bijective operation - Google Patents
Bijective operation implementing method for computer microprocessor, involves determining assignment sequence for assigning elementary memories from combined bijections for calculating bijective operation Download PDFInfo
- Publication number
- FR2919081A1 FR2919081A1 FR0705152A FR0705152A FR2919081A1 FR 2919081 A1 FR2919081 A1 FR 2919081A1 FR 0705152 A FR0705152 A FR 0705152A FR 0705152 A FR0705152 A FR 0705152A FR 2919081 A1 FR2919081 A1 FR 2919081A1
- Authority
- FR
- France
- Prior art keywords
- bijections
- assignments
- bijection
- elementary memories
- memories
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/441—Register allocation; Assignment of physical memory space to logical memory space
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
Description
IMPLEMENTATION DE CALCULS POUR PROCESSEURS La présente invention concerneIMPLEMENTATION OF CALCULATIONS FOR PROCESSORS The present invention relates to
les calculs réalisés par des processeurs. De manière générale, les processeurs réalisent des calculs par des 5 séquences d'opérations simples d'assignations sur des mémoires élémentaires, tels que des registres. Ces mémoires élémentaires sont en nombre limité et les accès du processeur à ces mémoires sont plus rapides que les accès aux autres mémoires périphériques associées aux processeurs. 10 Afin d'optimiser les temps de calcul, il faut donc limiter le nombre d'accès aux mémoires périphériques et optimiser l'utilisation des mémoires élémentaires. Plus précisément, les opérations de calcul sont souvent implémentées avec l'utilisation de mémoires élémentaires supplémentaires de temporisation. 15 Par implémentation, on entend la réalisation de la phase finale de l'élaboration d'un système qui permet aux éléments matériels ainsi qu'aux éléments logiciels d'entrer en fonction, c'est-à-dire la détermination de la séquence de contrôle dans un système informatique. Par exemple, une opération simple telle que l'échange du contenu de 20 deux registres notés A et B utilise en général un troisième mémoire C dans laquelle le contenu d'un des deux registres est mémorisé de manière temporaire. Il existe également d'autres méthodes d'implémentation des opérations de calcul utilisant des opérations entre les registres afin d'éviter l'utilisation de 25 mémoires élémentaires pour le stockage de valeurs tampons. Par exemple, la fonction d'échange du contenu de deux registres A et B peut être réalisée à l'aide des trois étapes suivantes : - le registre A prend la valeur de la somme des registres A et B ; - le registre B prend ensuite la valeur du registre A diminuée de 30 la valeur du registre B ; puis, le registre A prend la valeur du registre A diminuée de la valeur du registre B. A l'issue de ces trois étapes, les valeurs des registres A et B sont échangées. calculations made by processors. In general, the processors perform calculations by sequences of simple operations of assignments on elementary memories, such as registers. These basic memories are limited in number and processor access to these memories are faster than access to other peripheral memories associated with the processors. In order to optimize the calculation times, it is therefore necessary to limit the number of accesses to the peripheral memories and to optimize the use of the elementary memories. More specifically, computation operations are often implemented with the use of additional elementary memory memories. Implementation means the completion of the final phase of the development of a system that allows the hardware elements and the software elements to function, that is to say the determination of the sequence of control in a computer system. For example, a simple operation such as the exchange of the contents of two registers denoted A and B generally uses a third memory C in which the content of one of the two registers is stored temporarily. There are also other methods of implementing computation operations using operations between the registers to avoid the use of elementary memories for storing buffer values. For example, the exchange function of the contents of two registers A and B can be carried out using the following three steps: the register A takes the value of the sum of the registers A and B; register B then takes the value of register A minus the value of register B; then, the register A takes the value of the register A less the value of the register B. After these three steps, the values of the registers A and B are exchanged.
Il est démontré dans la publication Closed iterative calculus Theoritical Computer Science, n 158 de 1996, pages 371 à 378 par Serge Burckel, qu'il est possible d'implémenter n'importe quelle opération sur un nombre quelconque K de registres sans utiliser de variables supplémentaires à l'aide de telles séquences d'opérations. It is demonstrated in the publication Closed iterative calculus Theoritical Computer Science, n 158 of 1996, pages 371 to 378 by Serge Burckel, that it is possible to implement any operation on any number K of registers without using variables with such sequences of operations.
Si chacun de ces registres comporte N bits, tel que 32 bits par exemple, le nombre d'opérations nécessaires est de l'ordre de NxK2 comme démontré dans la publication Quadratic Sequential Computations of Bouleon Mappings, Theory of Computing Systems , n 37 de 2004, pages 519 à 525 par Serge Burckel et Marianne Morillon. If each of these registers has N bits, such as 32 bits for example, the number of necessary operations is of the order of NxK2 as demonstrated in the publication Quadratic Sequential Computations of Bouleon Mappings, Theory of Computing Systems, No. 37 of 2004 , pages 519-525 by Serge Burckel and Marianne Morillon.
Ces techniques requièrent donc un nombre élevé d'opérations. Comme indiqué précédemment, il est intéressant d'optimiser l'utilisation des registres afin de réduire les temps de calcul des processeurs. Ceci entraîne également des économies en énergie. Un avantage de l'invention est de permettre une implémentation plus 20 efficace des opérations, notamment sur des registres pour optimiser les temps de calcul et la consommation énergétique. A cet effet, la présente invention a pour objet un <REV 1> En conséquence, le nombre total d'opération est sensiblement réduit de sorte que le temps de calcul et la consommation sont également réduits. 25 Selon d'autres modes de réalisation : <REV secondaires> L'invention sera mieux comprise à la lumière de la description et des dessins, sur lesquels : la figure 1 est un organigramme général d'un mode de 30 réalisation de l'invention ; la figure 2 représente le détail d'une opération de coloration ; la figure 3 représente un exemple numérique de l'opération de coloration de la figure 2 ; - la figure 4 est un organigramme général d'un autre mode de réalisation de l'invention ; et -la figure 5 est un organigramme général d'encore un autre mode de réalisation de l'invention. Dans un premier mode de réalisation, l'invention est appliquée pour l'implémentation d'une opération bijective notée E sur un nombre K de registres binaires. These techniques therefore require a large number of operations. As indicated previously, it is interesting to optimize the use of the registers in order to reduce the computing times of the processors. This also results in energy savings. An advantage of the invention is to allow a more efficient implementation of operations, especially on registers to optimize computing times and energy consumption. For this purpose, the object of the present invention is a <REV 1>. Accordingly, the total number of operations is substantially reduced so that the calculation time and the consumption are also reduced. According to other embodiments: The invention will be better understood in the light of the description and the drawings, in which: FIG. 1 is a general flowchart of one embodiment of the invention; ; Figure 2 shows the detail of a staining operation; FIG. 3 represents a numerical example of the coloring operation of FIG. 2; FIG. 4 is a general flowchart of another embodiment of the invention; and FIG. 5 is a general flow diagram of yet another embodiment of the invention. In a first embodiment, the invention is applied for the implementation of a bijective operation denoted E on a number K of binary registers.
Une opération E est dite bijective, si et seulement si deux antécédents distincts, auxquels est appliquée cette opération, aboutissent forcément à deux images distinctes, c'est-à-dire que deux n-uplets différents n'auront pas la même image par E. A titre préalable, il convient également de rappeler que, de manière générale, on appelle un n-uplet un vecteur comprenant n composantes, chacune sélectionnée dans l'ensemble des valeurs possibles. Par exemple, dans le cas binaire, les valeurs possibles sont 0 et 1 et un 3-uplet est un mot de trois bits. Les registres peuvent être considérés chacun comme une mémoire élémentaire pouvant prendre un nombre M de valeurs. Dans le cas des registres binaires, ce nombre M est égal à 2 exposant le nombre N de bits du registre. II est également possible de considérer un nombre M de valeurs égales à 0 ou 1 et de calculer bit à bit, chaque bit du registre étant considéré comme une mémoire élémentaire. Les séquences d'assignations successives portant sur des bits d'un même registre peuvent ensuite être regroupées en une seule assignation de ce registre. En référence aux figures 1 à 3, on va maintenant décrire l'organigramme général du procédé de l'invention appliqué à une opération bijective E portant sur K mémoires élémentaires pouvant prendre M valeurs. An operation E is bijective, if and only if two distinct antecedents, to which this operation is applied, necessarily lead to two distinct images, that is to say that two different n-tuples will not have the same image by E As a preliminary, it should also be remembered that, in general terms, a n-tuple is a vector comprising n components, each selected from the set of possible values. For example, in the binary case, the possible values are 0 and 1 and a 3-tuple is a three-bit word. The registers can each be considered as an elementary memory that can take a number M of values. In the case of binary registers, this number M is equal to 2 exposing the number N of bits of the register. It is also possible to consider a number M of values equal to 0 or 1 and to calculate bit by bit, each bit of the register being considered as an elementary memory. The sequences of successive assignments relating to bits of the same register can then be grouped into a single assignment of this register. Referring to Figures 1 to 3, will now be described the general flowchart of the method of the invention applied to a bijective operation E on K elementary memories that can take M values.
Le procédé comporte tout d'abord une étape 10 de segmentation de l'opération en une série de bijections. The method firstly comprises a step 10 of segmenting the operation into a series of bijections.
Plus précisément, cette étape 10 de segmentation est une segmentation itérative, ou encore inductive, pour former M bijections à chaque itération jusqu'à ce que les fonctions bijectives obtenues soient directement calculables pas des assignations des mémoires élémentaires. More precisely, this segmentation step is an iterative or inductive segmentation to form M bijections at each iteration until the obtained bijective functions are directly calculable by the assignments of the elementary memories.
Ainsi, on considère formellement une table de MK lignes pour la définition de E où M est le nombre de valeurs possibles. De manière générale on note : Dans l'exemple, les mémoires élémentaires sont des bits dont les valeurs possibles sont S = {0,1} de sorte que M est égal à 2. Pour l'exemple numérique, K est sélectionné égal à 3. Une bijection E sur trois bits A, B, C est alors définie par une table de 23 lignes, soit huit lignes. On définit pour l'exemple la fonction E suivante : E(ABC) = (ac OR AbC OR Bc; A; aB OR AC) en notant NON(A) = a, NON(B)=b, NON (C) = c et A AND B = AB. Thus, we formally consider a table of MK lines for the definition of E where M is the number of possible values. In general, we note: In the example, the elementary memories are bits whose possible values are S = {0,1} so that M is equal to 2. For the numerical example, K is selected equal to 3 A three-bit bijection E on A, B, C is then defined by a table of 23 lines, ie eight lines. We define for the example the following function E: E (ABC) = (ac OR AbC OR Bc; A; aB OR AC) by noting NO (A) = a, NO (B) = b, NO (C) = c and A AND B = AB.
Cette fonction logique se définit par la table de huit lignes : E(000) = 100 ; E(001) = 000 ; E(010) = 101 ; E(011)=001 ; E(100) = 010 ; E(100)=010; E(101)=111 ; E(110) = 110 ; et E(111)=011. This logical function is defined by the table of eight lines: E (000) = 100; E (001) = 000; E (010) = 101; E (011) = 001; E (100) = 010; E (100) = 010; E (101) = 111; E (110) = 110; and E (111) = 011.
Au cours de l'étape 10, la bijection E est tout d'abord segmentée en M autres bijections. Au cours d'une étape 12, on applique une coloration des lignes définissant la fonction E, grâce à un théorème classique de Kôning en théorie des graphes. Cette coloration est réalisée en répartissant les termes de la fonction E sur les arêtes d'un graphe bipartite. Il est ainsi possible de donner une couleur parmi M à chaque ligne de la table définissant la fonction E en considérant de manière générale que deux lignes ont une couleur différente si les mêmes parties des vecteurs sources sont égales ou si les mêmes parties de vecteurs images sont égales. Ainsi, en considérant : = (y_1,y_2, ...y_K) et E=(b_1...b_K) = (z_1...z_K) si les parties droites des vecteurs source (a_2...a_K) et (b_2...b_K) ou encore les parties droites des vecteurs images (y_2, ...y_K) et (z_2, ...z_K) sont égales, alors les couleurs des deux lignes sont différentes. Dans le cas de l'ensemble binaire {0,1}, la coloration peut être obtenu 10 algébriquement comme une application booléenne notée C dans l'ensemble de solution {0,1} vérifiant : C(0,x) ≠ C(1,x) et C(E(0,x)) ~ C(E(1,x)) pour tout x appartenant à S. Dans ce cas, la couleur est donnée à la partie image des lignes. Des méthodes existantes permettent d'obtenir de telles colorations 15 selon la théorie des graphes. Dans le cas particulier illustré précédemment, avec S = {0,1}, il est possible d'utiliser l'algorithme suivant pour effectuer le coloriage des lignes de la table,définissant l'opération E. Cet algorithme est illustré sur la figure 2 : a) si toutes les lignes sont coloriées, la coloration est terminée ; 20 b) une ligne non coloriée est sélectionnée ; c) si la ligne courante est coloriée, aller en a) sinon la colorier par O. En considérant la partie droite de la ligne courante, c'est-à-dire la partie image, à l'exception du premier terme, aller à l'autre ligne ayant la même partie droite à l'exception du premier terme et la colorier par la valeur 1 ; 25 d) en considérant la partie gauche de la ligne courante, c'est-à-dire la partie antécédents, à l'exception du premier terme, aller à l'autre ligne dont la partie gauche est identique à l'exception du premier terme et se rendre à l'étape c). L'application de ce procédé aboutit dans le cas particulier illustré au 30 coloriage suivant illustré également en référence à la figure 3 : E(000) = 100: couleur 0 ; E(001) = 000 : couleur 1 ; E(10) = 101 : couleur 1 ; E(11) = 001 : couleur 0 ; E(100) = 010 : couleur 1 ; E(101) = 111 : couleur 0 ; E(110) = 110: couleur 0 ; et E(111) = 011 : couleur 1. Si l'on considère chaque ensemble de lignes de même couleur en ignorant leurs premières composantes, on obtient M bijections notées E_0 à E_M-1, chacune sur l'ensemble M K-' Ainsi dans l'exemple, les quatre lignes de couleur 0, en oubliant leur première composante respective, permettent d'obtenir la bijection E_0 définie par les lignes suivantes : E_0(00) = 00 ; E_0(11) = 01 ; E_0(01) = 11 ; et E_0(10) = 10. Pour les lignes de couleur 1, on obtient donc la bijection E_1 selon laquelle : 20 E_1(01) = 00 ; E_1(10) = 01 ; E_1(00) = 10 ; et E_1(11) = 11. Cette étape 12 de segmentation par coloration est répétée jusqu'à ce 25 que les fonctions bijectives obtenues soient directement transformables en des assignations des mémoires élémentaires, c'est-à-dire en des assignations des bits. En fonction des modes de réalisation, cette étape peut donc être répétée jusqu'à ce que l'on obtienne des bijections portant à chaque fois sur une 30 seule mémoire élémentaire ou alors jusqu'à ce que l'on obtienne des bijections compilables automatiquement, c'est-à-dire directement calculables en15 assignations. Ceci est représenté en référence à la figure 3, sur laquelle la segmentation est poursuivie jusqu'à l'obtention d'assignations unitaires. Un test 14 permet de déterminer si les fonctions obtenues sont calculables en des assignations, par exemple par comparaison avec une liste de fonctions connues. A l'issue de l'étape 10 de segmentation, le procédé délivre donc, pour chaque bijection, un nombre M de programmes de calcul portant sur K-1 mémoires, c'est-à-dire M séquences d'assignations de ces K-1 mémoires. De manière générale, on obtient ainsi pour chaque bijection E_i, pour i 10 de 0 à M-1, une séquence d'assignation de la forme suivante : R_2 : = E_i2 (R_2,...,R_K) ; During step 10, the bijection E is first segmented into M other bijections. During a step 12, a coloring of the lines defining the function E is applied, thanks to a classical Kôning theorem in graph theory. This coloration is achieved by distributing the terms of the function E on the edges of a bipartite graph. It is thus possible to give a color among M to each line of the table defining the function E by considering in general that two lines have a different color if the same parts of the source vectors are equal or if the same parts of the image vectors are equal. Thus, considering: = (y_1, y_2, ... y_K) and E = (b_1 ... b_K) = (z_1 ... z_K) if the straight parts of the source vectors (a_2 ... a_K) and ( b_2 ... b_K) or the straight portions of the image vectors (y_2, ... y_K) and (z_2, ... z_K) are equal, then the colors of the two lines are different. In the case of the binary set {0,1}, the coloring can be obtained algebraically as a Boolean mapping denoted C in the set of solution {0,1} satisfying: C (0, x) ≠ C (1 , x) and C (E (0, x)) ~ C (E (1, x)) for all x belonging to S. In this case, the color is given to the image part of the lines. Existing methods make it possible to obtain such colorations according to graph theory. In the particular case illustrated above, with S = {0,1}, it is possible to use the following algorithm to perform the coloring of the rows of the table, defining the operation E. This algorithm is illustrated in FIG. 2 a) if all the lines are colored, the coloring is complete; B) an unstained line is selected; c) if the current line is colored, go to a) if not coloring it by O. Considering the right part of the current line, that is to say the image part, with the exception of the first term, go to the other line having the same right part except for the first term and coloring it by the value 1; 25 d) considering the left part of the current line, that is to say the antecedents part, except for the first term, go to the other line whose left part is identical except for the first one term and proceed to step c). The application of this method results in the particular case illustrated in the following coloring also illustrated with reference to Figure 3: E (000) = 100: color 0; E (001) = 000: color 1; E (10) = 101: color 1; E (11) = 001: color 0; E (100) = 010: color 1; E (101) = 111: color 0; E (110) = 110: color 0; and E (111) = 011: color 1. If we consider each set of lines of the same color ignoring their first components, we obtain M bijections denoted E_0 to E_M-1, each on the set M K- '. in the example, the four color lines 0, forgetting their respective first component, make it possible to obtain the bijection E_0 defined by the following lines: E_0 (00) = 00; E_0 (11) = 01; E_0 (01) = 11; and E_0 (10) = 10. For lines of color 1, we thus obtain the bijection E_1 according to which: E_1 (01) = 00; E_1 (10) = 01; E_1 (00) = 10; and E_1 (11) = 11. This coloring segmentation step 12 is repeated until the obtained bijective functions are directly transformable into elementary memory assignments, i.e., bit assignments. Depending on the embodiments, this step can be repeated until we obtain bijections bearing each time on a single elementary memory or until we obtain automatically compilable bijections, that is, directly calculable in 15 assignments. This is shown with reference to FIG. 3, in which segmentation is continued until unit assignments are obtained. A test 14 makes it possible to determine whether the functions obtained can be computed into assignments, for example by comparison with a list of known functions. At the end of segmentation step 10, the method therefore delivers, for each bijection, a number M of calculation programs relating to K-1 memories, that is to say M sequences of assignments of these K -1 memories. In general terms, for each bijection E_i, for example from 0 to M-1, an assignment sequence of the following form is obtained: R_2: = E_i2 (R_2, ..., R_K);
R_(K-1) : = E_i(K-1) (R_2,...,R_K) ; R_K : = E_iK (R_2,...,R_K) ; R_(K-1) : = E'_i(K-1)(R_2,...,R_K) ; R_ (K-1): = E_i (K-1) (R_2, ..., R_K); R_K: = E_iK (R_2, ..., R_K); R_ (K-1): = E'_i (K-1) (R_2, ..., R_K);
R_2 : = E'_i2 (R_2,...,R_K). Par rapport à l'exemple précédent, on obtiendra les programmes suivants pour le calcul algébrique de E_0 : B:=B+C; C:=C;et B: = B. De même, le programme suivant est obtenu pour le calcul algébrique de E_1 : B: = 1 +B+C ; C: = 1+B+C ; et B: = B. Le procédé comprend ensuite une étape 16 de combinaison de ces M calculs en un calcul de la bijection traitée de la forme suivante : R_1 : = E_1 (R_1,...,R_K) ; R_2 : = E_2 (R_1,...,R_K) ; R_(K-1) : = E_(K-1) (R_1,...,R_K) ; 15 20 25 30 R_K : = E_K (R_1,...,R_K) ; R_(K-1) : = E'_(K-1) (R_1,..., R_K) ; R_2 : = ; et R_1 : = E'_1 (R_1,...,R_K). Pour le premier terme, on adopte la couleur de la ligne de sorte que : E_1(x_1,...,x_K)=la couleur de la ligne de E(x_1,x_2,...,x_K) Pour l'exemple : E_1 (000)=0 ; E_1 (001)=1 E_1 (010)=1 E_1(011)=0 ; E_1 (100) =1 E_1(101)=0 ; E_1 (110)=0 ; et E_1(111)=1. Ceci se traduit par l'assignation algébrique suivante : A := A+B+C. Les autres termes sont définis de manière conditionnelle en fonction du terme précédent. Ainsi, E_2 est définie par les cas suivants : 20 E_2(x_1,...,x_K) = si x_1 = 0 alors E_02(x_2,..,x_K) ; si x_1 = 1 alors E_12(x_2,..,x_K) ; R_2: = E'_i2 (R_2, ..., R_K). Compared to the previous example, we obtain the following programs for the algebraic calculation of E_0: B: = B + C; C: = C; and B: = B. Similarly, the following program is obtained for the algebraic calculation of E_1: B: = 1 + B + C; C: = 1 + B + C; and B: = B. The method then comprises a step 16 of combining these M calculations into a calculation of the processed bijection of the following form: R_1: = E_1 (R_1, ..., R_K); R_2: = E_2 (R_1, ..., R_K); R_ (K-1): = E_ (K-1) (R_1, ..., R_K); R_K: = E_K (R_1, ..., R_K); R_ (K-1): = E '_ (K-1) (R_1, ..., R_K); R_2: =; and R_1: = E'_1 (R_1, ..., R_K). For the first term, we adopt the color of the line so that: E_1 (x_1, ..., x_K) = the color of the line of E (x_1, x_2, ..., x_K) For the example: E_1 (000) = 0; E_1 (001) = 1 E_1 (010) = 1 E_1 (011) = 0; E_1 (100) = 1 E_1 (101) = 0; E_1 (110) = 0; and E_1 (111) = 1. This results in the following algebraic assignment: A: = A + B + C. The other terms are conditionally defined according to the previous term. Thus, E_2 is defined by the following cases: E_2 (x_1, ..., x_K) = if x_1 = 0 then E_02 (x_2, .., x_K); if x_1 = 1 then E_12 (x_2, .., x_K);
si x_1 = M-1 alors E_(M-1)2(x_2,..,x_K). De la même manière, on définit les assignation E_3,...,E_K,E'_(K-1),...,E'_2. 25 Pour l'exemple on obtient les assignations conditionnelles suivantes : B : = si A=0 alors (B+C) ; si A=1 alors (1+B+C) ; C = si A=0 alors (C) ; si A=1 alors (1+B+C) ; 30 B = si A=0 alors (B) ; et si A=1 alors (B). 10 15 Ces différentes assignations se traduisent en : B : = (1+A)*(B+C) + A*(1+B+C) ; C = (1+A)*C+ A*(1+B+C) ; et B : = (1+A)*B+ A*B. if x_1 = M-1 then E_ (M-1) 2 (x_2, .., x_K). In the same way, we define the assignments E_3, ..., E_K, E '_ (K-1), ..., E'_2. For the example we obtain the following conditional assignments: B: = if A = 0 then (B + C); if A = 1 then (1 + B + C); C = if A = 0 then (C); if A = 1 then (1 + B + C); B = if A = 0 then (B); and if A = 1 then (B). These different assignments translate into: B: = (1 + A) * (B + C) + A * (1 + B + C); C = (1 + A) * C + A * (1 + B + C); and B: = (1 + A) * B + A * B.
Il est alors possible de simplifier ces assignations lors d'une étape 18 pour obtenir les séquences suivantes : B : = A+B+C ; C = A+C+A*B ; et B B. It is then possible to simplify these assignments during a step 18 to obtain the following sequences: B: = A + B + C; C = A + C + A * B; and B B.
Enfin, la dernière assignation f'_1 est déterminée de manière similaire à f_1 en utilisant la couleur de la ligne de sorte que : = y_1 pour la ligne de couleur x_1 de la forme : E(...) = Dans l'exemple illustré précédemment : f'_1(000)=1 car la couleur 0 f'_1(001)=0 car la couleur 0 f'_1(010)=1 car la couleur 0 f'_1(011)=1 car la couleur 0 f'_1(100)=0 car la couleur 1 f'_l (101)=1 car la couleur 1 f'_1(110)=0 car la couleur 1 f'_l (111)=0 car la couleur 1 a été donnée a été donnée a été donnée a été donnée a été donnée a été donnée a été donnée a été donnée à E(000)=100 ; à E(011)=001 à E(110)=110 ; à E(101)=111 à E(001)=000 ; à E(010)=101 à E(100)=010 ; et à E(111)=011. Ceci se traduit algébriquement par l'assignation A : = 1+A+C+B*C. Finally, the last assignment f'_1 is determined in a similar way to f_1 using the color of the line so that: = y_1 for the color line x_1 of the form: E (...) = In the illustrated example previously: f'_1 (000) = 1 because the color 0 f'_1 (001) = 0 because the color 0 f'_1 (010) = 1 because the color 0 f'_1 (011) = 1 because the color 0 f'_1 (100) = 0 because the color 1 f'_l (101) = 1 because the color 1 f'_1 (110) = 0 because the color 1 f'_l (111) = 0 because the color 1 was data was given was data was data was given was given at E (000) = 100; at E (011) = 001 to E (110) = 110; at E (101) = 111 to E (001) = 000; at E (010) = 101 to E (100) = 010; and E (111) = 011. This is translated algebraically by the assignment A: = 1 + A + C + B * C.
II est alors possible après combinaison expression complète du calcul de la bijection E : et simplification d'obtenir une A : = A+B+C ; B = A+B+C ; C = A+C+A*B; B B ; et A = 1+A+C+B*C. It is then possible after combination complete expression of the calculation of the bijection E: and simplification to obtain a A: = A + B + C; B = A + B + C; C = A + C + A * B; B B; and A = 1 + A + C + B * C.
Le procédé de l'invention permet donc d'exprimer l'opération E par une série de 2K-1 assignations qui sont implémentables aisément au niveau du microprocesseur. Ces assignations sont réalisées dans un ordre croissant puis décroissant d'une première mémoire élémentaire à une dernière mémoire élémentaire puis dans l'ordre décroissant correspondant. Cependant, l'ordre initial des mémoires peut être choisi arbitrairement. Ces assignations peuvent notamment être implémentées par des méthodes standard, notamment avec des portes logiques, telles que des portes 10 NAND couramment utilisées dans les processeurs actuels. Il est également à noter que l'expression des opérations peut être faite indifféremment de manière polynomiale, logique ou binaire. Par ailleurs, le principe de l'invention peut également être étendu de manière plus générale à tout type d'opération et notamment à des opérations 15 non bijectives. Ainsi, en appelant E une opération quelconque sur K registres pouvant chacun prendre M valeurs, il est possible de calculer l'opération E par une séquence de 5K-4 assignations. La figure 4 représente un organigramme général du procédé de l'invention appliqué à une opération non bijective. 20 Le procédé débute par une étape 30 préalable de construction de deux bijections et d'une application simple. L'étape 30 comporte d'abord une sous-étape 32 de détermination d'une bijection F qui permet d'attribuer à tous les K-uplets ayant une même image par E des éléments consécutifs par paquets dans l'ordre lexicographique. 25 Ensuite, une application simple P est déterminée lors d'une sous-étape 34. Cette application P transforme des éléments consécutifs en le numéro du paquet correspondant, ce numéro étant lui-même représenté en base M par un K-uplet. Plus précisément, la bijection F et l'application P sont obtenues par 30 l'algorithme suivant à l'aide de la fonction NEXT qui, à un K-uplet donné, associe la valeur du K-uplet suivant dans l'ordre lexicographique : a) pour tous les K-uplets x, les images F(x) et P(x) sont indéfinies et R et T sont les K-uplets nuls : R==T=(0,0,0,...,0) ; b) si F est partout définie alors l'algorithme est fini ; c) pour un x tel que F(x) est indéfinie faire : tant qu'il existe un x' tel que E(x') = E(x) et F(x') est indéfinie faire : F(x') = T; P(T) = R; T = NEXT(T) ; d) faire R = NEXT(R) et aller en b). On reprend ci après un exemple numérique avec M = 2 et K = 3. On a NEXT(000) = 001; NEXT(001) = 010; NEXT(010)=011; NEXT(011) = 100 etc. On considère pour l'exemple, une opération E définie sur trois bits ABC par la table suivante : E(000)=101 E(001)=000 ; E(010)=101 E(011)=001 E(100)=000 ; E(101)=101 E(110)=001 ; et E(111)=000. Cette opération correspond à la définition logique suivante : E(ABC)=(ac OR AbC ; FAUX ; ac OR aB OR Bc OR AbC). The method of the invention thus makes it possible to express the operation E by a series of 2K-1 assignments which are easily implementable at the microprocessor level. These assignments are made in ascending and descending order from a first elementary memory to a last elementary memory and then in the corresponding descending order. However, the initial order of the memories can be chosen arbitrarily. These assignments may in particular be implemented by standard methods, in particular with logic gates, such as NAND gates 10 commonly used in current processors. It should also be noted that the expression of the operations can be done indifferently in a polynomial, logical or binary manner. Moreover, the principle of the invention can also be extended more generally to any type of operation and in particular to non-bijective operations. Thus, by calling E any operation on K registers that can each take M values, it is possible to compute the operation E by a sequence of 5K-4 assignments. FIG. 4 represents a general flowchart of the method of the invention applied to a non-bijective operation. The process begins with a preliminary step of constructing two bijections and a single application. Step 30 firstly comprises a substep 32 for determining a bijection F that makes it possible to assign consecutive elements in packets in the lexicographic order to all K-tuplets having the same image by E. Then, a simple application P is determined during a substep 34. This application P transforms consecutive elements into the corresponding packet number, this number being itself represented in base M by a K-tuplet. More precisely, the bijection F and the application P are obtained by the following algorithm using the function NEXT which, at a given k-tuplet, associates the value of the following k-tuplet in the lexicographic order: a) for all K-tuplets x, the images F (x) and P (x) are undefined and R and T are the null K-tuples: R == T = (0,0,0, ..., 0); b) if F is everywhere defined then the algorithm is finite; c) for an x such that F (x) is indefinite do: as long as there exists an x 'such that E (x') = E (x) and F (x ') is undefined make: F (x') = T; P (T) = R; T = NEXT (T); d) R = NEXT (R) and go to b). Here is a numerical example with M = 2 and K = 3. We have NEXT (000) = 001; NEXT (001) = 010; NEXT (010) = 011; NEXT (011) = 100 etc. For the example, consider an operation E defined on three bits ABC by the following table: E (000) = 101 E (001) = 000; E (010) = 101 E (011) = 001 E (100) = 000; E (101) = 101 E (110) = 001; and E (111) = 000. This operation corresponds to the following logical definition: E (ABC) = (ac OR AbC, FALSE, ac OR aB OR Bc OR AbC).
L'application de l'algorithme défini précédemment permet d'obtenir la définition suivante des fonctions F et P : 30 Le numéro en tête de ligne indique l'ordre dans lequel les lignes ont été considérées. Pour calculer l'application P, on identifie successivement chaque K-uplet (x_1,...,x_K) à son image P(x_1,..,x_K)=(Y_1,...,Y_K) de la droite vers la 1 : F(000) = 000 P(000)=000 ; 4 : F(001) = 011 P(011)=001 ; 2 : F(010) = 001 P(001)=000 ; 7 : F(011) = 110 P(110)=010 ; 5 : F(100) = 100 P(100) =001 ; 3 : F(101) = 010 P(010)=000 ; 8 : F(110) = 111 P(111)=010 ; et 6 : F(111) = 101 P(101)=001. gauche. Il suffit de K étapes d'assignation pour calculer P. Plus précisément, on définit K applications de M K dans M p_K,...,p_2,p_1 telles que pour tout K-uplet x et tout i de 1 à K : si x=(x_1,..,x_i,...,x_K) et P(x)=(Y_1,...,Y_i,...,Y_K) alors p_i(x_1,..,x_(i-1),x_i,Y_(i+1),..,Y_K)=Y_i. Dans le cas de l'exemple numérique utilisé précédemment, on obtient p_3,p_2,p_1 de {0,113 dans {0,1} selon le principe suivant : comme P(000) = (000) alors p_3(000) = 0 p_2(000) = 0 p_1(000) = 0 ; comme P(001) = (000) alors p_3(001) = 0 p_2(000) = 0 p_1(000) = 0 ; comme P(010) = (000) alors p_3(010) = 0 p_2(010) = 0 p_1(000) = 0 ; comme P(011) _ (001) alors p_3(011) = 1 p_2(011) = 0 p_1(001) = 0 ; comme P(100) = (001) alors p_3(100) = 1 p_2(101) = 0 p_1(101) = 0 ; comme P(101) = (001) alors p_3(101) = 1 p_2(101)=0p_1(101)=0; comme P(110) = (010) alors p_3(110) = 0 p_2(110) = 1 p_1(110) = 0 ; et comme P(111) = (010) alors p_3(111) = 0 p_2(110) = 1 p_1(110)=0. Les valeurs des p__i(x) non définies sont étendues arbitrairement. On peut les choisir de manière à rendre p_i la plus simplement calculable. Si on choisit ici p_2(111)=1 et p_1(111)=0, on obtient la séquence d'assignations suivante, exprimée sous forme logique : C: = aBC OR Ab ; B: = AB ; et A: = FAUX. Ou encore par la séquence d'assignations algébriques suivante : C: = A+A*B+A*B*C+B*C ; B: = A*B ; et A: = 0. Le procédé comporte ensuite une sous-étape 36 de détermination d'une autre bijection notée G qui transforme un numéro de paquet en l'image par E des K-uplets de départ identifiés par ce numéro de paquet. The application of the algorithm defined above makes it possible to obtain the following definition of the functions F and P: The number at the head of the line indicates the order in which the lines were considered. To calculate the application P, we identify successively each K-tuplet (x_1, ..., x_K) with its image P (x_1, .., x_K) = (Y_1, ..., Y_K) of the line towards the 1: F (000) = 000 P (000) = 000; 4: F (001) = 011 P (011) = 001; 2: F (010) = 001 P (001) = 000; 7: F (011) = 110 P (110) = 010; 5: F (100) = 100 P (100) = 001; 3: F (101) = 010 P (010) = 000; 8: F (110) = 111 P (111) = 010; and 6: F (111) = 101 P (101) = 001. left. K assignments are sufficient to calculate P. More precisely, we define K applications of MK in M p_K, ..., p_2, p_1 such that for every K-tuplet x and all i of 1 to K: if x = (x_1, .., x_i, ..., x_K) and P (x) = (Y_1, ..., Y_i, ..., Y_K) then p_i (x_1, .., x_ (i-1) , x_i, Y_ (i + 1), .., y_k) = y_i. In the case of the numerical example used previously, we obtain p_3, p_2, p_1 of {0,113 in {0,1} according to the following principle: as P (000) = (000) then p_3 (000) = 0 p_2 ( 000) = 0 p_1 (000) = 0; as P (001) = (000) then p_3 (001) = 0 p_2 (000) = 0 p_1 (000) = 0; as P (010) = (000) then p_3 (010) = 0 p_2 (010) = 0 p_1 (000) = 0; as P (011) _ (001) then p_3 (011) = 1 p_2 (011) = 0 p_1 (001) = 0; as P (100) = (001) then p_3 (100) = 1 p_2 (101) = 0 p_1 (101) = 0; as P (101) = (001) then p_3 (101) = 1 p_2 (101) = 0p_1 (101) = 0; as P (110) = (010) then p_3 (110) = 0 p_2 (110) = 1 p_1 (110) = 0; and as P (111) = (010) then p_3 (111) = 0 p_2 (110) = 1 p_1 (110) = 0. The values of the undefined p__i (x) are arbitrarily extended. They can be chosen in such a way as to make the most easily calculable. If we choose here p_2 (111) = 1 and p_1 (111) = 0, we obtain the following sequence of assignments, expressed in logical form: C: = aBC OR Ab; B: = AB; and A: = FALSE. Or by the sequence of algebraic assignments as follows: C: = A + A * B + A * B * C + B * C; B: = A * B; and A: = 0. The method then comprises a substep 36 for determining another bijection denoted by G which transforms a packet number into the image by E of the K-start tuples identified by this packet number.
La bijection G vérifie donc pour tout K-uplet, on a G(P(F(x)))=E(x). Dans l'exemple G est définie par : G(000) =101 car les éléments du paquet numéro 000 ont pour image 101 ; G(001) =000 car les éléments du paquet numéro 001 ont pour image 000 ; G(010) =001 car les éléments du paquet numéro 010 ont pour image 001 ; G(011) =au choix par exemple 011 ; G(100) =au choix par exemple 100 ; G(101) =au choix par exemple 010 ; G(110) =au choix par exemple 110 ; et G(111) =au choix par exemple 111. The bijection G thus verifies for every K-tuplet, we have G (P (F (x))) = E (x). In the example G is defined by: G (000) = 101 because the elements of the number 000 packet have an image 101; G (001) = 000 because the elements of the package number 001 have the image 000; G (010) = 001 because the elements of packet number 010 have the image 001; G (011) = optionally, for example, 011; G (100) = optionally, for example 100; G (101) = optionally, for example 010; G (110) = optionally, for example, 110; and G (111) = optionally, for example, 111.
L'opération E est donc exprimée sous la forme de deux bijections F et G et d'une application P. Da manière générale, on considère que la bijection F est déterminée à partir de l'opération à transformer afin d'attribuer une image différente à chaque antécédent ayant la même image par cette opération à transformer. The operation E is thus expressed in the form of two bijections F and G and an application P. In general, it is considered that the bijection F is determined from the operation to be transformed in order to assign a different image to each antecedent having the same image by this operation to be transformed.
L'application P fait le lien entre les antécédents et les images obtenues par la première bijection. La deuxième bijection G transforme les produits obtenus par la bijection F et l'application P pour former les termes de l'opération à transformer. Le procédé consiste ensuite à appliquer la segmentation du cas bijectif explicitée précédemment tour à tour à chacune des bijections F et G. Lors d'une étape 40, on transforme la bijection F en une séquence de 2K-1 assignations de sorte que tout K-uplet x est transformé en y=F(x) par une séquence d'assignations. On obtient ainsi à l'issue de l'étape 40, une séquence de 2K-1 25 30 assignations pour calculer F : :=f_K (R_1,...,R_K) ; R_K R_(K-1) :=f_(K-1) (R_1,...,R_K) ; R_2 :=f_2 (R_1,...,R_K) ; R_1 :=f_1 (R_1,...,R_K) ; R_2 :=f'_2 (R_1,...,R_K) ; R_(K-1) :=f'_(K-1) (R_1,...,R_K) ; et R_K :=f'_K (R_1,...,R_K). Dans le cas illustré, le calcul est construit de la droite vers la gauche. C'est une construction similaire au cas explicité précédemment car il suffit de symétriser pour transformer les relations F(x_1,...,x_K)=(y_1,...,y_K) en F'(x_K,...,x_1)=(y_K,...,y_1) puis d'appliquer la méthode de calcul pour la bijection F'. Dans le cas illustré, on obtient la fonction F' suivante : F(000)=000 donc F'(000) =000 ; F(001)=011 donc F'(100)=110 ; F(010)=001 donc F'(010)=100 ; F(011)=110 donc F'(110)=011 ; F(100)=100 donc F'(001)=001 ; F(101)=010 donc F'(101)=010 ; F(110)=111 donc F'(011)=111 ; et F(111)=101 donc F'(111)=101. Cette fonction est transformée, à l'issue de l'étape 40 en la séquence de calcul suivante : C =A+B+C+A*B ; B :==A+B+A*C ; A =A+B+B*C ; B :=B+C+A*C ; et C :=A+C+A*B. Le procédé comporte ensuite une étape 42 de calcul de l'application de la fonction P de sorte que tout K-uplet y est remplacé par son image z=P(y) en K étapes d'assignations : R_K :=p_K (R_1,...,R_K) ; R_(K-1) :=p_(K-1) (R_1,...,R_K) ; R_2 :=p_2 (R_1,...,R_K) ; et R_1 :=p_1 Dans l'exemple, cela se traduit par les assignations suivantes : C: = A+A*B+A*B*C+B*C ; B: = A*B ; et30 A: = O. Enfin, le procédé comporte une étape 44 de calcul de la bijection G selon la méthode explicitée précédemment de sorte que tout K-uplet z est transformé par la méthode des bijections en t= G(z) en 2K-1 étapes : R_1 :=g_1 (R_1,...,R_K) ; R_2 :=g_2 (R_1,...,R_K) ; The application P makes the link between the antecedents and the images obtained by the first bijection. The second bijection G transforms the products obtained by the bijection F and the application P to form the terms of the operation to be transformed. The method then consists in applying the segmentation of the bijective case explained previously in turn to each of the bijections F and G. During a step 40, the bijection F is transformed into a sequence of 2K-1 assignments so that any K- uplet x is transformed into y = F (x) by a sequence of assignments. Thus, at the end of step 40, a sequence of 2K-1 is obtained 30 assignments for calculating F :: = f_K (R_1, ..., R_K); R_K R_ (K-1): = f_ (K-1) (R_1, ..., R_K); R_2: = f_2 (R_1, ..., R_K); R_1: = f_1 (R_1, ..., R_K); R_2: = f'_2 (R_1, ..., R_K); R_ (K-1): = f '_ (K-1) (R_1, ..., R_K); and R_K: = f'_K (R_1, ..., R_K). In the illustrated case, the calculation is built from right to left. It is a construction similar to the case explained previously because it is enough to symmetry to transform the relations F (x_1, ..., x_K) = (y_1, ..., y_K) in F '(x_K, ..., x_1 ) = (y_K, ..., y_1) then apply the calculation method for the bijection F '. In the case illustrated, the following function F 'is obtained: F (000) = 000 therefore F' (000) = 000; F (001) = 011 therefore F '(100) = 110; F (010) = 001 therefore F '(010) = 100; F (011) = 110 therefore F '(110) = 011; F (100) = 100 therefore F '(001) = 001; F (101) = 010 therefore F '(101) = 010; F (110) = 111 therefore F '(011) = 111; and F (111) = 101 therefore F '(111) = 101. This function is transformed at the end of step 40 into the following calculation sequence: C = A + B + C + A * B; B: == A + B + A * C; A = A + B + B * C; B: = B + C + A * C; and C: = A + C + A * B. The method then comprises a step 42 of calculating the application of the function P so that every K-tuplet is replaced by its image z = P (y) in K assignment steps: R_K: = p_K (R_1, ..., R_K); R_ (K-1): = p_ (K-1) (R_1, ..., R_K); R_2: = p_2 (R_1, ..., R_K); and R_1: = p_1 In the example, this results in the following assignments: C: = A + A * B + A * B * C + B * C; B: = A * B; Finally, the method comprises a step 44 of calculating the bijection G according to the method explained previously so that any K-tuplet z is transformed by the bijections method into t = G (z) into 2K- 1 steps: R_1: = g_1 (R_1, ..., R_K); R_2: = g_2 (R_1, ..., R_K);
R_(K-1) :=g_(K-1) (R_1,...,R_K) ; R_K :=g_K (R_1,...,R_K) ; R_(K-1) :=g'_(K-1) (R_1,...,R_K) ; R_ (K-1): = g_ (K-1) (R_1, ..., R_K); R_K: = g_K (R_1, ..., R_K); R_ (K-1): = g '_ (K-1) (R_1, ..., R_K);
R_2 :=g'_2 (R_1,...,R_K) ; et R_1 :=g'_1 (R_1,...,R_K). Cette fois-ci, la bijection décomposée de gauche à droite à l'inverse de 15 la segmentation de la bijection F. Pour l'exemple on avait choisi : G(000)=101 G(001)=000 ; G(010)=001 20 G(011)=011 G(100)=100 ; G(101)=010 ; G(110)=110 ; et G(111)=111. 25 Le procédé de l'invention aboutit à la séquence d'assignations suivante pour le calcul de G : A A+B+B*C ; B :=B+A*C; C : = 1 +A+B+C ; 30 B : = B+A*C ; et A : = A+B+C. Les assignations sont ensuite combinées au cours d'une étape 46 afin d'obtenir 5K-2 assignations qui modifient successivement les registres de 10 numéros : K,K-1,...,2,1,2,...K-1,K,K,K-1,...,2,1,1,2,...,K-1,K,K-1,...2,1. Dans l'exemple, on obtient : C :==A+B+C+A*B ; B :==A+B+A*C ; A :==A+B+B*C ; B :==B+C+A*C ; C :==A+C+A*B ; C :==A+A*B+A*B*C+B*C ; B :==A*B ; A :=0 ; A :==A+B+B*C ; B :==B+A*C ; C :==1 +A+B+C ; B :==B+A*C ; et A :==A+B+C. Le procédé comporte enfin une étape 48 de simplification des assignations successives portant sur le même registre. Par exemple, la séquence de deux assignations : A: = (B+C)*F et A: = A*D+B+4*A, se résume 20 en une seule en remplaçant dans la seconde assignation les A par la valeur prise par A dans la première assignation. On obtient ainsi A: = [(B+C)*F]*D+B+4*[(B+C)*F]. De même, toujours à titre d'exemple, la séquence de deux assignations A: _ (B+C)*F et A: = G+H se résume en une seule en substituant dans la 25 seconde les A par la valeur prise par A dans la première. Toutefois, dans ce cas, la seconde assignation est indépendante de la valeur de A, de sorte que seule la seconde assignation est prise en compte pour obtenir : A: = G+H. Dans l'exemple, les assignations suivantes : C : =A+C+A*B ; et 30 C :=A+A*B+A*B*C+B*C, se résument formellement en : C :=A+A*B+A*B*[A+C+A*B]+B*[A+C+A*B] c'est-à-dire 10 15 A :=0;et A : = A+B+B*C, se résume en : :==[0]+B+B*C A c'est-à-dire :=B+B*C. A Le procédé permet donc d'obtenir pour le calcul de l'opération E, une 10 séquence de 5K-4 assignations qui modifient successivement les registres de numéros : K,K-1,...,2,1,2,...K-1,K,K-1,...,2,1,2,...,K-1,K,K-1,...2,1. Le calcul de l'exemple s'exprime donc en 5K-4=11 étapes : C :=A+B+C+A*B 15 B :==A+B+ A*C A :==A+B+B*C B :=B+C+A*C C :==A+C+A*B+B*C B :=A*B 20 A :=B+B*C B :=B+A*C C =1+A+B+C B :=B+A*C A :=A+B+C 25 Comme précédemment, toutes ces assignations peuvent être implémentées par des circuits électroniques avec des portes logiques et en particulier, des portes NAND uniquement comme c'est le cas actuellement dans les processeurs. En notant (PQ) pour P NAND Q, le calcul de l'exemple par des portes 30 NAND devient : C :=(((1 C)((1 A)(1 B)))((1 B)(1 (C(1 A))))) ; B ((B(A(1 C)))((1 C)(1(A(1 B))))) ; A ((A(B(1 C)))((1 C)(1(B(1 A))))) ; C : = A+A*B+B*C+A*B*C. De même, la séquence d'assignations : R_2: = g'_2 (R_1, ..., R_K); and R_1: = g'_1 (R_1, ..., R_K). This time, the bijection decomposed from left to right in contrast to the segmentation of the bijection F. For the example we chose: G (000) = 101 G (001) = 000; G (010) = 001 G (011) = 011 G (100) = 100; G (101) = 010; G (110) = 110; and G (111) = 111. The method of the invention results in the following sequence of assignments for the calculation of G: A A + B + B * C; B: = B + A * C; C: = 1 + A + B + C; B = B + A * C; and A: = A + B + C. The assignments are then combined in a step 46 to obtain 5K-2 assignments that successively modify the registers of 10 numbers: K, K-1, ..., 2,1,2, ... K- 1, K, K, K-1, ..., 2,1,1,2, ..., K-1, K, K-1, ... 2.1. In the example, we obtain: C: == A + B + C + A * B; B: == A + B + A * C; A = = A + B + B * C; B: == B + C + A * C; C: == A + C + A * B; C: == A + A * B + A * B * C + B * C; B: == A * B; A: = 0; A = = A + B + B * C; B: == B + A * C; C: == 1 + A + B + C; B: == B + A * C; and A: == A + B + C. The method finally comprises a step 48 for simplifying the successive assignments relating to the same register. For example, the sequence of two assignments: A: = (B + C) * F and A: = A * D + B + 4 * A, boils down to one by replacing in the second assignment the A's by the value taken by A in the first assignment. We thus obtain A: = [(B + C) * F] * D + B + 4 * [(B + C) * F]. Similarly, again as an example, the sequence of two assignments A: _ (B + C) * F and A: = G + H is summarized in one by substituting in the 25 second the A by the value taken by A in the first. However, in this case, the second assignment is independent of the value of A, so that only the second assignment is taken into account to obtain: A: = G + H. In the example, the following assignments: C: = A + C + A * B; and C: = A + A * B + A * B * C + B * C, are formally summarized as: C: = A + A * B + A * B * [A + C + A * B] + B * [A + C + A * B] that is 10 15 A: = 0, and A: = A + B + B * C, can be summarized as:: == [0] + B + B * CA that is to say: = B + B * C. The method thus makes it possible to obtain, for the calculation of operation E, a sequence of 5K-4 assignments which successively modify the number registers: K, K-1, ..., 2, 1, 2,. ..K-1, K, K-1, ..., 2,1,2, ..., K-1, K, K-1, ... 2.1. The calculation of the example is thus expressed in 5K-4 = 11 steps: C: = A + B + C + A * B 15 B: == A + B + A * CA: == A + B + B * CB: = B + C + A * CC: == A + C + A * B + B * CB: = A * B 20 A: = B + B * CB: = B + A * CC = 1 + A + B + CB: = B + A * CA: = A + B + C As before, all these assignments can be implemented by electronic circuits with logic gates and in particular, NAND gates only as is currently the case in the processors. Noting (PQ) for P NAND Q, the calculation of the example with NAND gates becomes: C: = (((1 C) ((1 A) (1 B))) ((1 B) (1 (C (1A))))); B ((B (A (1 C))) ((1 C) (1 (A (1 B))))); A ((A (B (1 C))) ((1 C) (1 (B (1 A))))); C: = A + A * B + B * C + A * B * C. Similarly, the sequence of assignments:
5 18 B ::=((B(C(1 A)))((1 B)(1 (C(1 A))))) ; C ::=(((1 B)(1(C(1 A))))((1 C)(1(A(1 B))))) ; B ::=(1(AB)) ; A ::=(1(B(1 C))) ; B ::=((B(AC))((1 B)(1(AC)))) ; C ::=(((AB)((AC)(BC)))((1 C)((AB)((1 A)(1 B))))) ; B ::=((B(AC))((1 B)(1(AC)))) ; et A ::=(((BC)((B(1 A))(C(1 A))))((C(AB))((1 C)(A(1 B))))). Le procédé de l'invention permet donc d'implémenter n'importe quelle 10 opération sur K registres à l'aide 5K-4 assignations sur ces registres ou avantageusement, 2K-1 assignations si cette opération est bijective. Le nombre d'opération est donc sensiblement réduit de sorte que le temps de calcul est limité et la consommation minimisée. Par ailleurs, il est également possible d'optimiser le procédé général 15 décrit précédemment afin de réduire la séquence d'assignations à 4K-3 assignations et éventuellement à 4K assignations, illustré en référence à la figure 5. Dans ce mode de réalisation, le procédé débute par une étape d'ordonnancement 50 des ensembles de K-uplets ayant même image par E de 20 façon à ce que, pour tout k, 0<k<K+1, et pour tout entier j positif ou nul, les ensembles consécutifs dont le numéro est compris entre j2Ak et (j+1)2Ak-1 aient un nombre total d'éléments multiple de 2^k. Plus précisément, cette étape d'ordonnancement 50 débute par le calcul 52du nombre n de ensembles de K-uplets ayant même image par E. 25 Ensuite, l'étape 50 comporte une numération 54 des ensembles par une application N de SAK dans l'intervalle d'entiers [1..n]. La numération est suivie d'une mémorisation 56 des tailles des ensembles par une application T de [1..n] dans [1..2^K]. Dans l'exemple, l'étape d'ordonnancement 50 est mise en oeuvre par 30 l'algorithme suivant dans lequel les K-uplets sont considérés comme des entiers compris entre 0 et 2AK-1 : a). Pour tous les K-uplets x, l'image N(x) est indéfinie. Initialisation: n:=05 b). Si N est partout définie alors STOP. c). Pour un x tel que N(x) est indéfinie faire : n:=n+1; N(x):=n; T(n):=1; Tant qu'il existe x' tel que N(x') indéfinie et E(x)=E(x') faire N(x'):=n; T(n):=T(n)+1 On définit ensuite un algorithme qui permettra un regroupement par induction satisfaisant les propriétés voulues. Cet algorithme est mis en oeuvre à partir de n qui est le nombre de ensembles et de T qui est la liste de tailles de ensembles. L'algorithme délivre une sortie m qui est le nombre de nouveaux ensembles et une sortie S qui est l'affectation des anciens ensembles dans les nouveaux. Dans le cas présent, il s'agit d'un algorithme de l'ensemble [1..n] dans l'ensemble [1..m] avec M qui est la liste de tailles des nouveaux ensembles divisées par 2. Cet algorithme s'exprime de la manière suivante : j:=1; parité:=faux; Pour i variant de 1 à n faire si T[i] est impair alors faire si parite=faux alors faire M[i]:=j; S[j]:=T[i]; parite:=vrai; si parite=vrai alors faire M[i]:=j; S[j]:=(S[j]+T[i])/2; j:=j+1; parite:=faux; Pour i variant de 1 à n faire si T[i] est pair alors faire M[i]:=j; S[j]:=T[i]/2; j:=j+1; m:=j-1; II est également possible deregrouper entre eux deux à deux les ensembles de cardinal pair. Toutefois, il peut rester à la fin un ensemble de cardinal pair isolé. Ensuite, on associe à chaque K-uplet une liste (N_1,N_2,...,N_{I-1},N_I) 30 de numéros de ensembles regroupés, en notant I le nombre de regroupements successifs effectués. Ceci se traduit par l'algorithme suivant : T_1:=T; n_1:=n; N_1:=N; i:=1; tant que n>0 faire Regroupement(Entrée: Sortie: M,T_{i+1},n_{i+1}) pour x variant de 0 à 2AK-1 faire N_{i+1}[x]:=M[N_i[x]]; i:=i+1; I:=i-1; On définit après un algorithme de comparaison colexicographique des I-uplets Fonction Inférieur (Entrée x, y: K-uplets): booléen Sortie t: vrai si x<y pour l'ordre considéré ou si E(x)=E(y) faux si x>y i:=1 tant que t est indéfinie et i>0 faire si N_i[x]<N_i[y] alors t=vrai si N_i[x]>N_i[y] alors t=faux 15 si N_i[x]=N_i[y] alors i:=i-1 si i=0 alors t:=vrai On définit enfin, lors d'une sous-étape 58, une bijection F et une application P. Ces bijection F et application P sont obtenues similairement au mode de réalisation précédent mais en respectant l'ordre de construction par 20 l'algorithme suivant : a). Pour tous les K-uplets x, les images F(x) et P(x) sont indéfinies. Initialisation: R et T sont les K-uplets nuls : R=T=(0,0,0,...,0). b). Si F est partout définie alors STOP. 25 c). Pour un x tel que F(x) est indéfinie ET tel que pour tout y tel que F(y) est indéfinie on a Inférieur(x,y) faire : Tant qu'il existe un x' tel que E(x')=E(x) et F(x') est indéfinie faire F(x')=T; P(T)=R; T=NEXT(T) 30 d). Faire R=NEXT(R) et aller en B. Comme souhaité, l'ordre obtenu des ensembles de K-uplets ayant même image par E vérifie : pour tout k, 0<k<K+1, et pour tout entier j positif ou nul, les ensembles consécutifs dont le numéro est compris entre j2Ak et 10 5 15 20 25 30 (j+1)2Ak-1 ont un nombre total d'éléments multiple de 2^k. A titre d'exemple, le procédé de l'invention va être appliqué à l'application E donnée par la table suivante : E(000)=101 E(001)=000 E(010)=101 E(011) =001 E(100)=000 E(101)=101 E(110)=001 E(111)=000 En parcourant l'ensemble des K-uplets, par exemple, dans l'ordre naturel, le premier regroupement N=N_1 est le suivant : N(000)=1 N(001)=2 N(010)=1 N(011)=3 N(100)=2 N(101)=1 N(110)=3 N(111)=2. On en déduit le premier tableau de tailles : T(1)=3 T(2)=3 T(3)=2. Ce premier tableau est déjà ordonné avec les ensembles de tailles impaires d'abord. On poursuit alors avec le second regroupement : N_2(000)=1 N_2(001)=1 N_2(010)=1 N_2(011)=2 N_2(100)=1 N_2(101)=1 N_2(110)=2 N_2(111)=1. Ce second regroupement aboutit à l'ordre colexicographique des (N_1 ,N_2) suivant : 000,010,101<001,100,111<011,110. Dans cet exemple on aboutit ainsi aux mêmes applications que précédemment. Ceci n'est toutefois pas le cas général. 5 18 B :: = ((B (C (1A))) ((1B) (1 (C (1A))))); C :: = (((1 B) (1 (C (1 A)))) ((1 C) (1 (A (1 B))))); B :: = (1 (AB)); A :: = (1 (B (1 C))); B :: = ((B (AC)) ((1 B) (1 (AC)))); C :: = (((AB) ((AC) (BC))) ((1 C) ((AB) ((1 A) (1 B))))); B :: = ((B (AC)) ((1 B) (1 (AC)))); and A :: = (((BC) ((B (1A)) (C (1A)))) ((C (AB)) ((1C) (A (1B))))). The method of the invention therefore makes it possible to implement any operation on K registers using 5K-4 assignments on these registers or, advantageously, 2K-1 assignments if this operation is bijective. The number of operations is therefore substantially reduced so that the calculation time is limited and the consumption minimized. On the other hand, it is also possible to optimize the general method described above in order to reduce the sequence of assignments to 4K-3 assignments and possibly 4K assignments, illustrated with reference to Fig. 5. In this embodiment, the process begins with a step of scheduling 50 sets of K-tuples with the same image by E so that, for all k, 0 <k <K + 1, and for any integer j positive or zero, the sets consecutive numbers whose number is between j2Ak and (j + 1) 2Ak-1 have a total number of elements multiple of 2 ^ k. More precisely, this scheduling step 50 begins by calculating the number n of K-tuplet sets having the same image by E. Next, step 50 comprises a set numbering 54 of the sets by an SAK N-application in the interval of integers [1..n]. The numbering is followed by a memorization 56 of the sizes of the sets by an application T of [1..n] in [1..2 ^ K]. In the example, the scheduling step 50 is implemented by the following algorithm in which the k-tuples are considered integers between 0 and 2AK-1: a). For all K-tuplets x, the image N (x) is undefined. Initialization: n: = 05 b). If N is everywhere defined then STOP. c). For an x such that N (x) is indefinite make: n: = n + 1; N (x) = n; T (n): = 1; As long as there exists x 'such that N (x') is indefinite and E (x) = E (x ') make N (x'): = n; T (n): = T (n) +1 We then define an algorithm that will allow induction grouping satisfying the desired properties. This algorithm is implemented from n which is the number of sets and T which is the list of sizes of sets. The algorithm delivers an output m which is the number of new sets and an output S which is the assignment of the old sets in the new ones. In this case, it is an algorithm of the set [1..n] in the set [1..m] with M which is the size list of the new sets divided by 2. This algorithm is expressed as follows: j: = 1; parity: = false; For i varying from 1 to n if T [i] is odd then do parity = false then make M [i]: = j; S [j] = T [i]; parity: = true; if parity = true then make M [i]: = j; S [j]: = (S [j] + T [i]) / 2; j: = j + 1; parity: = false; For i varying from 1 to n if T [i] is even then make M [i]: = j; S [j] = T [i] / 2; j: = j + 1; m = j-1; It is also possible to group pairs of cardinal pairs together. However, he may remain in the end a set of isolated cardinal pairs. Then, each k-tuplet is associated with a list (N_1, N_2, ..., N_ {I-1}, N_I) of grouped set numbers, noting I the number of successive groupings performed. This results in the following algorithm: T_1: = T; n_1: = n; N_1: = N; i: = 1; as n> 0 do Grouping (Input: Output: M, T_ {i + 1}, n_ {i + 1}) for x varying from 0 to 2AK-1 make N_ {i + 1} [x]: = M [N_i [x]]; i: = i + 1; I: = i-1; We define after a colexicographic comparison algorithm I-tuplets Function Lower (Input x, y: K-tuples): boolean Output t: true if x <y for the order considered or if E (x) = E (y) false if x> yi: = 1 as long as t is indefinite and i> 0 to do if N_i [x] <N_i [y] then t = true if N_i [x]> N_i [y] then t = false 15 if N_i [ x] = N_i [y] then i: = i-1 if i = 0 then t: = true We finally define, during a substep 58, a bijection F and an application P. These bijection F and application P are obtained similarly to the previous embodiment but in the order of construction by the following algorithm: a). For all K-tuples x, the images F (x) and P (x) are undefined. Initialization: R and T are the null K-tuples: R = T = (0,0,0, ..., 0). b). If F is everywhere defined then STOP. 25 (c). For an x such that F (x) is indefinite AND such that for all y such that F (y) is indefinite we have Lower (x, y) do: As long as there exists an x 'such that E (x') = E (x) and F (x ') is undefined make F (x') = T; P (T) = R; T = NEXT (T) 30 d). Make R = NEXT (R) and go to B. As desired, the order obtained from sets of K-tuples having the same image by E satisfies: for all k, 0 <k <K + 1, and for any integer j positive or zero, the consecutive sets whose number is between j2Ak and (j + 1) 2Ak-1 have a total number of elements multiple of 2 ^ k. By way of example, the method of the invention will be applied to the application E given by the following table: E (000) = 101 E (001) = 000 E (010) = 101 E (011) = 001 E (100) = 000 E (101) = 101 E (110) = 001 E (111) = 000 By traversing the set of K-tuplets, for example, in the natural order, the first grouping N = N_1 is the following: N (000) = 1 N (001) = 2 N (010) = 1 N (011) = 3 N (100) = 2 N (101) = 1 N (110) = 3 N (111) = 2. We deduce the first size table: T (1) = 3 T (2) = 3 T (3) = 2. This first array is already ordered with odd-sized sets first. We then proceed with the second grouping: N_2 (000) = 1 N_2 (001) = 1 N_2 (010) = 1 N_2 (011) = 2 N_2 (100) = 1 N_2 (101) = 1 N_2 (110) = 2 N_2 (111) = 1. This second grouping results in the colexicographic order of the following (N_1, N_2): 000,010,101 <001,100,111 <011,110. In this example we thus achieve the same applications as before. This however is not the general case.
15 Le procédé comporte ensuite une étape 60 de segmentation de la fonction F comme dans le mode de réalisation précédent. Toutefois, dans ce mode de réalisation les ensembles de K-uplets ayant même image par E sont envoyés sur des éléments consécutifs dans l'ordre calculé à l'étape 1. Par 20 opposition, n'importe quel ordre pouvait être utilisé dans le mode de réalisation précédent. La première bijection est calculée ici aussi de droite à gauche. Plus précisément, la bijection F est calculée par la méthode des bijections, exactement comme dans la méthode précédente, de la droite vers la gauche. 25 C'est à dire que l'on transforme tout K-uplet x en y=F(x) par une séquence d'opérations sur les registres (R_1,...,R_K) R_K :=f_K R_(K-1) :=f_(K-1) (R_1,...,R_K) R_2 :=f_2 (R_1, ... , R_K) R_1 :=f_1 (R_1,...,R_K) R_2 :=f'_2 (R_1,...,R_K) 1 : F(000)=000 P(000)=000 4 : F(001)=011 P(011)=001 2 : F(010)=001 P(001)=000 7 : F(011)=110 P(110)=010 5 : F(100)=100 P(100)=001 3 : 9101)=010 P(010)=000 8 : F(110)=111 P(111)=010 6 : F(111)=101 P(101)=001 30 R_(K-1) :=f'_(K-1) (R_1,..., R_K) Ri< :=f'_K (R_1,..., R_K) Dans l'exemple on obtient encore : C :=A+B+C+A*B B :=A+B+A*C A :=A+B+B*C B :=B+C+A*C C :=A+C+A*B Le procédé se poursuit, comme dans le cas précédent par une étape 70 de segmentation de la fonction G. Toutefois, la seconde bijection est calculée cette fois de droite à gauche, comme la première, et dans le "calcul complet" on s'arrête au calcul en 5K-2 assignations, juste avant la dernière simplification. Plus précisément, on définir ensuite une bijection G telle que pour tout K-uplet x on ait: G(P(F(x)))=E(x) Pour l'exemple on peut donc prendre de même : G(000)=101 car les éléments du paquet numéro 000 ont pour image 101 000 001 G(001)=000 car les éléments du paquet numéro 001 ont pour image G(010)=001 car les éléments du paquet numéro 010 ont pour image G(011)=au choix par ex 011 G(100)=au choix par ex 100 G(101) =au choix par ex 010 G(110)=au choix par ex 110 G(111)=au choix par ex 111 Cette bijection est à nouveau calculée par la méthode des bijections, mais cette fois de la droite vers la gauche. The method then comprises a step 60 of segmenting the function F as in the previous embodiment. However, in this embodiment the sets of K-tuplets having the same image by E are sent on consecutive elements in the order calculated in step 1. By contrast, any order could be used in the mode. previous realization. The first bijection is calculated here also from right to left. More precisely, the bijection F is computed by the bijections method, exactly as in the previous method, from right to left. That is, any K-tuplet x is transformed into y = F (x) by a sequence of operations on the registers (R_1, ..., R_K) R_K: = f_K R_ (K-1 ): = f_ (K-1) (R_1, ..., R_K) R_2: = f_2 (R_1, ..., R_K) R_1: = f_1 (R_1, ..., R_K) R_2: = f'_2 (R_1, ..., R_K) 1: F (000) = 000 P (000) = 000 4: F (001) = 011 P (011) = 001 2: F (010) = 001 P (001) = 000 7: F (011) = 110 P (110) = 010 5: F (100) = 100 P (100) = 001 3: 9101) = 010 P (010) = 0008: F (110) = 111 P (111) = 010 6: F (111) = 101 P (101) = 001 R1 (K-1): = f '_ (K-1) (R1,..., R_K) R1 = f _K (R_1, ..., R_K) In the example we obtain again: C: = A + B + C + A * BB: = A + B + A * CA: = A + B + B * CB: = B + C + A * CC: = A + C + A * B The process continues, as in the previous case by a step 70 of segmentation of the function G. However, the second bijection is calculated this time from right to left, like the first one, and in the "complete calculation" one stops at the calculation in 5K-2 assignments, just before the last simplification. More precisely, we then define a bijection G such that for every K-tuplet x we have: G (P (F (x))) = E (x) For the example we can therefore take the same: G (000) = 101 because the elements of the number 000 package have the image 101 000 001 G (001) = 000 because the elements of the package number 001 have the image G (010) = 001 because the elements of the package number 010 have the image G (011 ) = optional eg 011 G (100) = optional eg 100 G (101) = optional eg 010 G (110) = optional eg 110 G (111) = optional eg 111 This is again calculated by the bijections method, but this time from right to left.
Il en résulte que l'on transforme tout K-uplet z en t=G(z) par une séquence d'opérations sur les registres. Cette séquence est exprimée ici : R_K :=g_K (R_1,...,R_K) R_(K-1) :=g_(K-1) (R_1,...,R_K) 24 R_2 :=g_2 R_1 :=g_1 R_2 :=g'_2 (R_1,...,R_K) (R_1,...,R_K) (R_1,...,R_K) 10 15 20 R_(K-1) :=g'_(K-1) (R_1,..., R_K) As a result, any K-tuplet z is transformed into t = G (z) by a sequence of operations on the registers. This sequence is expressed here: R_K: = g_K (R_1, ..., R_K) R_ (K-1): = g_ (K-1) (R_1, ..., R_K) 24 R_2: = g_2 R_1: = g_1 R_2: = g'_2 (R_1, ..., R_K) (R1, ..., R_K) (R1, ..., R_K) R_ (K-1): = g '_ (K -1) (R_1, ..., R_K)
R_K Pour l'exemple on avait choisi G(000)=101 G(001)=000 G(010)=001 G(011)=011 G(100)=100 G(101)=010 G(110)=110 G(111)=111 La méthode pour les bijections donne le calcul : C := A+C+A*B B := B A := 1 +A+B+C+B*C B := 1 +A+B+C+A*C C := 1 +B+C Le procédé comporte ensuite une étape 80 de remplacement de la séquence des K premières assignations calculées à l'étape 70 appliquées aux 25 paquets définissant une bijection G_1 en une séquence de K assignations appliquées au K-uplets permettant de programmer directement l'application composée de G_1 et P. En comparaison avec le mode de réalisation précédent, on a ajouté une étape d'ordonnancement au débute et on a supprimé l'étape de calcul en K 30 assignations de l'application P, que l'on a remplacé par une étape finale de calcul en K assignations de l'application composée de P et de la première séquence de K assignations. Plus précisément, appelons G_1 la bijection définie par les K premières assignations définissant G qui est composée de G_2 et G_1, c'est à dire que u=G_1(z) est défini par R_K :=g_K (R_1,...,R_K) R_(K-1) :=g_(K-1) (R_1,..., R_K) R_2 :=g_2 (R_1,...,R_K) R_1 :=g_1 (R_1,...,R_K) où ont été calculées à l'étape précédente. L'application qui à y associe u=G_1(P(y))=H(y) est alors définie 10 directement par : R_K :=h_K (R_1,...,R_K) R_(K-1) :=h_(K-1) (R_1,...,R_K) R_K For the example we had chosen G (000) = 101 G (001) = 000 G (010) = 001 G (011) = 011 G (100) = 100 G (101) = 010 G (110) = 110 G (111) = 111 The method for the bijections gives the computation: C: = A + C + A * BB: = BA: = 1 + A + B + C + B * CB: = 1 + A + B + C + A * CC: = 1 + B + C The method then comprises a step 80 of replacing the sequence of the first K assignments calculated in step 70 applied to the 25 packets defining a bijection G_1 in a sequence of K assignments applied to the K -uplets for directly programming the application composed of G_1 and P. In comparison with the previous embodiment, a scheduling step was added at the beginning and the calculation step in K 30 assignments of the application P, which was replaced by a final step of calculation in K assignments of the application composed of P and the first sequence of K assignments. More precisely, let G_1 be the bijection defined by the first K assignments defining G which is composed of G_2 and G_1, that is to say that u = G_1 (z) is defined by R_K: = g_K (R_1, ..., R_K ) R_ (K-1): = g_ (K-1) (R_1, ..., R_K) R_2: = g_2 (R_1, ..., R_K) R_1: = g_1 (R_1, ..., R_K) where were calculated in the previous step. The application which associates u = G_1 (P (y)) = H (y) is then defined directly by: R_K: = h_K (R_1, ..., R_K) R_ (K-1): = h_ (K-1) (R_1, ..., R_K)
R_2 :=h_2 (R_1,...,R_K) 15 R_1 :=h_1 (R_1,...,R_K) où les applications h_i sont définies par : pour tout y=(y_1,..,y_i,...,y_K) avec P(y)=(Z_1,...,Z_i,...,Z_K) on a R_2: = h_2 (R_1, ..., R_K) 15 R_1: = h_1 (R_1, ..., R_K) where the applications h_i are defined by: for all y = (y_1, .., y_i, ... , y_K) with P (y) = (Z_1, ..., Z_i, ..., Z_K) we have
Cette definition est partielle mais suffisante pour les besoins du procédé 20 de l'invention. Dans l'exemple, l'application G_1 est définie par les trois assignations : C := A+C+A*B B := B A := 1 +A+B+C+B*C 25 C'est à dire : G_1 (000)=100 G_1 (001)=001 G_1 (010)=010 G_1 (011)=011 30 G_1(100)=101 G_1 (101)=000 G_1(110)=110 G_1(111)=111. 5 15 20 25 30 D'où l'application H programmée par la modification successives des variables C, B, A respectivement par h_3, h_2, h_1 H(000)=100 c'est à dire h_3(000)=0, h_2(000)=0, h_1 (000)=1 H(001)=100 c'est à dire h_3(001)=0, h_2(000)=0, h_1 (000)=1 H(010)=100 c'est à dire h_3(010)=0, h_2(010)=0, h_1(000)=1 H(011)=001 c'est à dire h_3(011)=1, h_2(011)=0, h_1 (001)=1 H(100)=001 c'est à dire h_3(100)=1, h_2(101)=0, h_1(101)=0 H(101)=001 c'est à dire h_3(101)=1, h_2(101)=0, h_1 (101)=0 H(110)=010 c'est à dire h_3(110)=0, h_2(110)=1, h_1(110)=0 H(111)=010 c'est à dire h_3(111)=0, h_2(110)=1, h_1(110)=0 Ce qui peut s'exprimer algébriquement, par exemple, par les formules : C :=A+A*B+B*C+A*B*C B :=A*B A :=1 +A Finalement, on a calculé l'application E comme composée de la bijection F en 2K-1 assignations, puis l'application G_1 composées avec P en K assignations, puis la bijection G_2 en K-1 assignations. On obtient donc une méthode en 4K-2 étapes qui modifient successivement les registres de numéros : K,K-1,...,2,1,2,...K-1,K,K,K-1,...,2,1,2,...,K-1 ,K l'exemple : C B A B C Comme précédemment, deux étapes successives sur un même registre K sont simplifiées en une seule opération lors d'une étape 90. On obtient donc Pour :=A+B+C+A*B :=A+B+A*C :=A+B+B*C :=B+C+A*C :=A+C+A*B :=A+A*B+B*C+ A*B*C :=A*B :=1 +A : = 1 +A+B+C+A*C :=1 +B+C 4K-3 opérations. Dans l'exemple, les deux assignations : C :=A+C+A*B C :=A+A*B+B*C+A*B*C peuvent être remplacées par l'assignation : C :=A+A*B+B*C+A*B*C On obtient donc finalement un procédé en 4K-3 étapes qui modifient successivement les registres de numéros : K,K-1,...,2,1,2,...K-1,K,K-1,...,2,1,2,...,K-1,K Dans l'exemple, l'application E de départ est programmée finalement par les 9 assignations : C :=A+B+C+A*B B :=A+B+A*C A :=A+B+B*C B :=B+C+A*C C :=A+A*B+B*C+A*B*C B :=A*B A :=1+A B :=1+A+B+C+A*C C :=1+B+C A titre complémentaire un autre exemple est décrit ici. On considère l'application E sur 3 bits définie par : E(000)=101 E(001)=001 E(010=101 E(011)=000 E(100)=110 E(101)=101 E(110)=000 E(111)=110 Le premier regroupement N=N_1 donne, par exemple : N(000)=3 N(001)=1 20 25 30 N(010=3 N(011)=2 N(100)=4 N(101)=3 N(110)=2 N(111)=4 Les tailles sont : T(1)=1 T(2)=2 T(3)=3 T(4)=2 Elles doivent être réordonnées pour avoir un ordre de tailles 1,3,2,2 (par exemple) d'où un second regroupement N_2(1)=1 N_2(2)=2 N_2(3)=1 N_2(4)=3 et les tailles associées : T_2(1)=2 T_2(2)=1 T_2(3)=1 Le troisième regroupement prévu par l'algorithme est inutile ici puisque les conditions voulues sont déjà satisfaites, c'est-à-dire que les deux paires consécutives ont un cardinal multiple de 4. Il est donc possible de s'arrêter à 1=2. Les K-uplets sont donc associés aux I-uplets suivants : 000 à (3,1) 001 à (1,1) 010à(3,1) 011 à (2,2) 100 à (4,3) 101 à (3,1) 110 à (2,2) 111 à (4,3) Ceci donne dans l'ordre colexicographique : 001<000,010,101 )l 1,110 <1 00,111 On obtient donc les applications F et et P suivante, en numérotant dans l'ordre de construction : 2: F(000)=001 P(001)=001 1: F(001)=000 P(000)=000 3: F(010)=010 P(010)=001 5: F(011)=100 P(100)=010 7: F(100)=110 P(110)=011 4: F(101)=011 P(011)=001 6: F(110)=101 P(101)=010 8: F(111)=111 P(111)=011 15 Ensuite, la bijection F s'obtient par la méthode de décomposition d'une bijection comme dans les modes de réalisation précédents. Pour simplifier la notation on l'écrit comme deux bijections successives F_1 puis F_2 composée de F_2 et F_1 et obtenues respectivement par les K premières assignations et les K-1 suivantes : F_1 (000)=000 F_2(000)=001 F_1 (001)=001 F_2(001)=000 F_1 (010)=010 F_2(010)=010 F_1(011)=111 F_2(111)=100 F_1(100)=100 F_2(100) =110 F_1(101)=011 F_2(011)=011 F_1(110)=110 F_2(110)=101 F_1(111)=101 F_2(101)=111 Par la suite, pour la bijection G on peut choisir par exemple : G(000)=001 G(001)=101 G(010=000 G(011)=110 G(100)=010 20 25 30 G(101)=011 G(110)=100 G(111)=111 Cette bijection G se calcule par la méthode des bijections, comme deux 5 bijections successives G_.1 puis G_2 obtenues respectivement par les K premières assignations et les K-1 suivantes : G_1 (000)=000 G_2(000)=001 G_1 (001)=101 G_2(101)=101 G_1 (010)=011 G_2(011)=000 G_1(011)=110 G_2(110)=110 G_1(100)=010 G_2(010) =010 G_1 (101)=001 G_2(001)=011 G_1(110)=100 G_2(100)=100 G_1(111)=111 G_2(111)=111 15 L'application H obtenue par P puis G_1 se calcule directement par K assignations des registres de K à 1: H(000)=000 c'est à dire h_3(000)=0, h_2(000)=0, h_1 (000)=0 H(001)=101 c'est à dire h_3(001)=1, h_2(001)=0, h_1(001)=1 H(010)=101 c'est à dire h_3(01 0)=1, h_2(011)=0, h_1(001)=1 20 H(011)=101 c'est à dire h_3(011)=1, h_2(011)=0, h_1(001)=1 H(100)=011 c'est à dire h_3(100)=1, h_2(101)=1, h_1(111)=0 H(101)=011 c'est à dire h_3(101)=1, h_2(101)=1, h_1(111)=0 H(110)=110 c'est à dire h_3(110)=0, h_2(110)=1, h_1(110)=1 H(111)=110 c'est à dire h_3(111)=0, h_2(110)=1, h_1(110)=1 25 Finalement l'application E obtenue par F_1 puis F_2 puis H puis G_2 est obtenue comme une séquence de 4K-2 assignations, et le registre K étant modifié deux fois consécutives au milieu de la table on peut simplifier en 4K-3 étapes. II est également possible de réduire le nombre d'assignations à 4K 30 lorsque, avec S={0,1....M-1 } on a 2^(k-1)<M<2^k+1. Dans ce cas, il est possible de regrouper k bits successifs. En effet, les trois simplifications effectuées lorsqu'un bit est modifié deux fois d'affilée sont supprimées car c'est tout le bloc de k bits qui doit être modifié. Il en résulte un gain de trois opérations 10 aboutissant à 4k assignations. Bien entendu, divers modes de réalisation sont envisageables. Notamment, la segmentation et l'implémentation peuvent être faits en temps réels dans un programme exécuté par un ordinateur ou un micro composant afin d'obtenir la séquence d'assignations. Le procédé peut également être utilisé pour créer des tables de référence permettant d'exprimer des fonctions sous la forme d'une séquence d'assignation. Un composant vient ensuite consulter ces tables lors de l'utilisation des fonctions. This definition is partial but sufficient for the purposes of the process of the invention. In the example, the application G_1 is defined by the three assignments: C: = A + C + A * BB: = BA: = 1 + A + B + C + B * C 25 That is to say: G_1 (000) = 100 G_1 (001) = 001 G_1 (010) = 010 G_1 (011) = 011 G_1 (100) = 101 G_1 (101) = 000 G_1 (110) = 110 G_1 (111) = 111. From where the application H programmed by the successive modification of the variables C, B, A respectively by h_3, h_2, h_1 H (000) = 100 ie h_3 (000) = 0, h_2 (000) = 0, h_1 (000) = 1 H (001) = 100 that is h_3 (001) = 0, h_2 (000) = 0, h_1 (000) = 1 H (010) = 100 c is h_3 (010) = 0, h_2 (010) = 0, h_1 (000) = 1 H (011) = 001 that is h_3 (011) = 1, h_2 (011) = 0, h_1 (001) = 1 H (100) = 001 that is to say h_3 (100) = 1, h_2 (101) = 0, h_1 (101) = 0 H (101) = 001 that is to say h_3 (101) ) = 1, h_2 (101) = 0, h_1 (101) = 0 H (110) = 010 that is h_3 (110) = 0, h_2 (110) = 1, h_1 (110) = 0 H ( 111) = 010 ie h_3 (111) = 0, h_2 (110) = 1, h_1 (110) = 0 Which can be expressed algebraically, for example, by the formulas: C: = A + A * B + B * C + A * B * CB: = A * BA: = 1 + A Finally, we calculated the application E as composed of the bijection F in 2K-1 assignments, then the application G_1 composed with P in K assignments, then the bijection G_2 in K-1 assignments. We thus obtain a method in 4K-2 steps that successively modify the number registers: K, K-1, ..., 2,1,2, ... K-1, K, K, K-1 ,. .., 2,1,2, ..., K-1, K the example: CBABC As previously, two successive steps on the same K register are simplified in a single operation during a step 90. We thus obtain For: = A + B + C + A * B: = A + B + A * C: = A + B + B * C: = B + C + A * C: = A + C + A * B: = A + A * B + B * C + A * B * C: = A * B: = 1 + A: = 1 + A + B + C + A * C: = 1 + B + C 4K-3 operations. In the example, the two assignments: C: = A + C + A * BC: = A + A * B + B * C + A * B * C can be replaced by the assignment: C: = A + A * B + B * C + A * B * C We finally obtain a process in 4K-3 stages that successively modify the number registers: K, K-1, ..., 2,1,2, ... K-1, K, K-1, ..., 2,1,2, ..., K-1, K In the example, the starting application E is finally programmed by the 9 assignments: C: = A + B + C + A * BB: = A + B + A * CA: = A + B + B * CB: = B + C + A * CC: = A + A * B + B * C + A * B * CB: = A * BA: = 1 + AB: = 1 + A + B + C + A * CC: = 1 + B + CA additional title another example is described here. We consider the application E on 3 bits defined by: E (000) = 101 E (001) = 001 E (010 = 101 E (011) = 000 E (100) = 110 E (101) = 101 E (110) ) = 000 E (111) = 110 The first grouping N = N_1 gives, for example: N (000) = 3 N (001) = 1 20 25 30 N (010 = 3 N (011) = 2 N (100) = 4 N (101) = 3 N (110) = 2 N (111) = 4 The sizes are: T (1) = 1 T (2) = 2 T (3) = 3 T (4) = 2 They must be reordered to have a size order 1,3,2,2 (for example) from which a second grouping N_2 (1) = 1 N_2 (2) = 2 N_2 (3) = 1 N_2 (4) = 3 and the associated sizes: T_2 (1) = 2 T_2 (2) = 1 T_2 (3) = 1 The third grouping provided by the algorithm is useless here since the desired conditions are already satisfied, that is to say that the two consecutive pairs have a cardinal multiple of 4. It is therefore possible to stop at 1 = 2. The K-tuples are therefore associated with the following I-tuples: 000 to (3,1) 001 to (1,1) 010a (3,1) 011 to (2,2) 100 to (4,3) 101 to (3,1) 110 to (2,2) 111 to (4,3) This gives in the colexicographic order: 001 <1,000,010,101) 1,110 <1 00,111 Thus we obtain the following applications F and and P, by numbering in the order of construction: 2: F (000) = 001 P (001) = 001 1: F (001) = 000 P (000) = 000 3: F (010) = 010 P (010) = 001 5: F (011) = 100 P (100) = 010 7: F (100) = 110 P (110) = 011 4: F (101) = 011 P (011) = 001 6: F (110) = 101 P (101) = 010 8: F (111) = 111 P (111) = 011 Then, the bijection F is obtained by the decomposition method d a bijection as in the previous embodiments. To simplify the notation it is written as two successive bijections F_1 then F_2 composed of F_2 and F_1 and obtained respectively by the first K and the following K-1 assignments: F_1 (000) = 000 F_2 (000) = 001 F_1 (001 ) = 001 F_2 (001) = 000 F_1 (010) = 010 F_2 (010) = 010 F_1 (011) = 111 F_2 (111) = 100 F_1 (100) = 100 F_2 (100) = 110 F_1 (101) = 011 F_2 (011) = 011 F_1 (110) = 110 F_2 (110) = 101 F_1 (111) = 101 F_2 (101) = 111 Subsequently, for the bijection G one can choose for example: G (000) = 001 G (001) = 101 G (010 = 000 G (011) = 110 G (100) = 010 20 25 30 G (101) = 011 G (110) = 100 G (111) = 111 This bijection G is calculated by the bijections method, as two successive bijections G_.1 then G_2 obtained respectively by the first K first assignments and the following K-1: G_1 (000) = 000 G_2 (000) = 001 G_1 (001) = 101 G_2 ( 101) = 101 G_1 (010) = 011 G_2 (011) = 000 G_1 (011) = 110 G_2 (110) = 110 G_1 (100) = 010 G_2 (010) = 010 G_1 (101) = 001 G_2 (001) = 011 G_1 (110) = 100 G_2 (100) = 100 G_1 (111) = 111 G_2 (111) = 111 The H application obtained p ar P then G_1 is calculated directly by K assignments of the registers of K to 1: H (000) = 000 ie h_3 (000) = 0, h_2 (000) = 0, h_1 (000) = 0 H ( 001) = 101 ie h_3 (001) = 1, h_2 (001) = 0, h_1 (001) = 1 H (010) = 101 that is h_3 (01 0) = 1, h_2 ( 011) = 0, h_1 (001) = 1 H (011) = 101 that is h_3 (011) = 1, h_2 (011) = 0, h_1 (001) = 1 H (100) = 011 c is h_3 (100) = 1, h_2 (101) = 1, h_1 (111) = 0 H (101) = 011 that is h_3 (101) = 1, h_2 (101) = 1, h_1 (111) = 0 H (110) = 110 that is to say h_3 (110) = 0, h_2 (110) = 1, h_1 (110) = 1 H (111) = 110 ie h_3 (111) ) = 0, h_2 (110) = 1, h_1 (110) = 1 Finally the application E obtained by F_1 then F_2 then H then G_2 is obtained as a sequence of 4K-2 assignments, and the register K being modified two consecutive times in the middle of the table can be simplified in 4K-3 steps. It is also possible to reduce the number of assignments to 4K 30 when, with S = {0,1 .... M-1} we have 2 ^ (k-1) <M <2 ^ k + 1. In this case, it is possible to group k successive bits. Indeed, the three simplifications performed when a bit is changed twice in a row are deleted because it is the entire block of k bits that must be modified. This results in a gain of three operations 10 resulting in 4k assignments. Of course, various embodiments are possible. In particular, the segmentation and the implementation can be done in real time in a program executed by a computer or a micro component in order to obtain the sequence of assignments. The method can also be used to create reference tables for expressing functions in the form of an assignment sequence. A component then comes to consult these tables when using the functions.
Ainsi, l'invention peut être mise en oeuvre par un compilateur ou encore lors de la conception de microprocesseurs. Les principes de l'invention peuvent être aussi appliqués à des ensembles de valeurs importants en combinant les suites d'assignation construites pour agir sur des bits successifs en les regroupant pour déterminer une assignation unique pour tous les bits du registre. Ainsi, le calcul est construit en agissant bit à bit puis, est regroupé par bloc d'assignation de bits en assignation de registres. Par exemple, la fonction d'échange du contenu de deux registres binaires A et B sur N bits peut être réalisée bit à bit et on obtient la séquence de calcul suivante sur les registres: 1 le registre A prend la valeur A XOR B ; 2 le registre B prend la valeur A XOR B ; 3 le registre A prend la valeur A XOR B ; où XOR est l'addition binaire bit à bit. A l'issue de ces trois étapes, les 25 valeurs des registres A et B sont échangées. Thus, the invention can be implemented by a compiler or during the design of microprocessors. The principles of the invention can also be applied to large sets of values by combining the assignment sequences constructed to act on successive bits by grouping them together to determine a single assignment for all the bits of the register. Thus, the computation is constructed by acting bit by bit then, is grouped by block of assignment of bits in assignment of registers. For example, the function of exchange of the contents of two bit registers A and B on N bits can be carried out bit by bit and the following calculation sequence is obtained on the registers: 1 the register A takes the value A XOR B; 2 the register B takes the value A XOR B; 3 the register A takes the value A XOR B; where XOR is the bitwise bitwise addition. At the end of these three steps, the 25 values of the registers A and B are exchanged.
Claims (19)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0705152A FR2919081B1 (en) | 2007-07-17 | 2007-07-17 | IMPLEMENTATION OF CALCULATIONS FOR PROCESSORS |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0705152A FR2919081B1 (en) | 2007-07-17 | 2007-07-17 | IMPLEMENTATION OF CALCULATIONS FOR PROCESSORS |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2919081A1 true FR2919081A1 (en) | 2009-01-23 |
FR2919081B1 FR2919081B1 (en) | 2011-03-25 |
Family
ID=39155490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0705152A Active FR2919081B1 (en) | 2007-07-17 | 2007-07-17 | IMPLEMENTATION OF CALCULATIONS FOR PROCESSORS |
Country Status (1)
Country | Link |
---|---|
FR (1) | FR2919081B1 (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3398402A (en) * | 1964-10-02 | 1968-08-20 | Int Standard Electric Corp | Simplified data-processing system |
US5812845A (en) * | 1996-05-13 | 1998-09-22 | Mitsubishi Denki Kabushiki Kaisha | Method for generating an object code for a pipeline computer process to reduce swapping instruction set |
-
2007
- 2007-07-17 FR FR0705152A patent/FR2919081B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3398402A (en) * | 1964-10-02 | 1968-08-20 | Int Standard Electric Corp | Simplified data-processing system |
US5812845A (en) * | 1996-05-13 | 1998-09-22 | Mitsubishi Denki Kabushiki Kaisha | Method for generating an object code for a pipeline computer process to reduce swapping instruction set |
Also Published As
Publication number | Publication date |
---|---|
FR2919081B1 (en) | 2011-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
US10997519B2 (en) | Co-scheduling quantum computing jobs | |
US11093682B2 (en) | Language and compiler that generate synchronous digital circuits that maintain thread execution order | |
EP3912074B1 (en) | Generating a synchronous digital circuit from a source code construct defining a function call | |
US10810343B2 (en) | Mapping software constructs to synchronous digital circuits that do not deadlock | |
EP3394797A1 (en) | Optimized neuron circuit, and architecture and method for executing neural networks | |
FR3091375A1 (en) | LOADING-STORAGE INSTRUCTION | |
FR3091389A1 (en) | REGISTER BENCHES IN A MULTIPLE PERFORMANCE WIRE PROCESSOR | |
US11620563B2 (en) | Synthesis of a quantum circuit | |
CN113302616A (en) | Generating synchronous digital circuits from source code constructs mapped to circuit implementations | |
US8280836B2 (en) | Converting unordered graphs to oblivious read once ordered graph representation | |
FR2822260A1 (en) | METHODS AND DEVICES FOR ACCELERATING THE CALCULATION TIME OF A MONTGOMERY PRODUCT BY MODULAR MULTIPLICATION AND EXPONENTIATION | |
CN117043751A (en) | Mitigation of readout errors in quantum computation | |
Ferrer Fioriti et al. | Deciding probabilistic automata weak bisimulation: theory and practice | |
FR2919081A1 (en) | Bijective operation implementing method for computer microprocessor, involves determining assignment sequence for assigning elementary memories from combined bijections for calculating bijective operation | |
WO2014195141A1 (en) | Material accelerator for handling red and black trees | |
US20220350570A1 (en) | Pipelined hardware to accelerate modular arithmetic operations | |
US11782683B1 (en) | Variable replacement by an artificial intelligence accelerator | |
FR2811168A1 (en) | METHOD FOR CONVERTING THE BINARY REPRESENTATION OF A NUMBER IN A SIGNED BINARY REPRESENTATION | |
Bertot et al. | * Proof by Reflection | |
JPH06149932A (en) | Expressing method for logical expression including arithmetic operation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 9 |
|
PLFP | Fee payment |
Year of fee payment: 10 |
|
PLFP | Fee payment |
Year of fee payment: 11 |
|
PLFP | Fee payment |
Year of fee payment: 12 |
|
PLFP | Fee payment |
Year of fee payment: 13 |
|
PLFP | Fee payment |
Year of fee payment: 14 |
|
PLFP | Fee payment |
Year of fee payment: 15 |
|
PLFP | Fee payment |
Year of fee payment: 16 |
|
PLFP | Fee payment |
Year of fee payment: 17 |