Dispositif de gestion d'échanges de données entre matériels informatiquesDevice for managing data exchanges between computer hardware
L'invention concerne le domaine de l'échange de données entre matériels informatiques de types identiques ou non, tels que des logiciels, des microprocesseurs, des bases de données, et analogues .The invention relates to the field of data exchange between computer hardware of identical or different types, such as software, microprocessors, databases, and the like.
Dans le domaine informatique, l'utilisation de microprocesseurs de plus en plus puissants permet de réduire toujours plus les temps de calcul ou de traitement. Cependant, cela entraîne une manipulation, en temps réel, d'un nombre de données toujours plus important, par exemple supérieur à 1 Go (Giga-octets) dans le cas des systèmes tels que FGB et RS, ou dans le cas de systèmes de gestion de bases de données (SGBD) et de traitement d'images.In the IT field, the use of increasingly powerful microprocessors makes it possible to reduce ever more computation or processing times. However, this leads to an manipulation, in real time, of an ever-increasing amount of data, for example greater than 1 GB (Gigabytes) in the case of systems such as FGB and RS, or in the case of communication systems. database management (DBMS) and image processing.
Dans un microprocesseur, ou plus généralement dans un matériel informatique, les données sont généralement stockées sous forme de "paquets" de k bits (information binaire) dans des registres d'une capacité de (n * k) bits. On entend ici par registre, les registres flottants, certains composants mémoire des microprocesseurs, les cartes graphiques, les MMX et analogues. Un microprocesseur ne sait donc pas traiter des données (entiers) dont la taille est supérieure à la capacité de ses registres, soit (n * k) bits.In a microprocessor, or more generally in computer hardware, the data are generally stored in the form of "packets" of k bits (binary information) in registers with a capacity of (n * k) bits. By register is meant here, floating registers, certain memory components of microprocessors, graphics cards, MMX and the like. A microprocessor therefore does not know how to process (whole) data the size of which is greater than the capacity of its registers, ie (n * k) bits.
En général, chaque "paquet" comprend k = 8 bits. On parle alors d'octet. Par exemple, le plus grand entier que peut traiter un microprocesseur 32 bits comprend 4 octets (n=4, k=8).In general, each "packet" includes k = 8 bits. We then speak of a byte. For example, the largest integer that a 32-bit microprocessor can process includes 4 bytes (n = 4, k = 8).
L'ordre dans lequel sont stockés les paquets de k bits (par exemple des octets) varie souvent d'une machine à l'autre. On dit alors que les matériels présentent des codages internes différents, ou en d'autres termes des arrangements de paquets de k bits différents.
Or, quelle que soit la machine, la représentation binaire d'un objet-donnée (par exemple un entier) de taille inférieure à k bits est invariante (tous les bits sont donnés dans le même ordre). Une telle représentation est donc commune à tout le monde.The order in which the k-bit packets (for example bytes) are stored often varies from machine to machine. It is then said that the hardware has different internal encodings, or in other words arrangements of packets of k different bits. However, whatever the machine, the binary representation of a given object (for example an integer) of size less than k bits is invariant (all the bits are given in the same order). Such a representation is therefore common to everyone.
Un réel problème se pose donc lorsque deux matériels fonctionnant selon des codages internes différents souhaitent échanger des objets-données (scalaires) dont les dimensions sont supérieures ou égales à k bits. Ce problème est encore renforcé lorsque les dimensions (k * n) des registres des matériels diffèrent.A real problem therefore arises when two pieces of equipment operating according to different internal codings wish to exchange data objects (scalars) whose dimensions are greater than or equal to k bits. This problem is further reinforced when the dimensions (k * n) of the material registers differ.
A titre d'exemple, l'entier 33.751.553 qui se décompose dans la base {28} sous la forme 1 + 2*28 + 3*216 + 2*224, est codé dans un microprocesseur de type ALPHA ou PC par la suite de n = 4 coefficients [1,2,3,2]. Or, dans un microprocesseur de type SPARC cet entier est codé par la suite de n = 4 coefficients [2,3,2,1] qui pour un microprocesseur désigne l'entier 16.909.058 (2 + 3*28 + 2*216 + 224).For example, the integer 33,751,553 which breaks down in the base {2 8 } in the form 1 + 2 * 2 8 + 3 * 2 16 + 2 * 2 24 , is coded in a microprocessor of the ALPHA type or PC thereafter of n = 4 coefficients [1,2,3,2]. Now, in a microprocessor of the SPARC type, this integer is coded thereafter by n = 4 coefficients [2,3,2,1] which for a microprocessor designates the integer 16,909,058 (2 + 3 * 2 8 + 2 * 2 16 + 2 24 ).
Dans cet exemple, on s'aperçoit qu'une permutation des coefficients différencie les deux codages internes.In this example, we see that a permutation of the coefficients differentiates the two internal codings.
Pour permettre à de tels matériels d'échanger leurs entiers, il est donc indispensable qu'ils connaissent leurs codages internes respectifs, ou en d'autres termes les permutations qui leurs permettront de transformer leurs codages respectifs.To allow such materials to exchange their integers, it is therefore essential that they know their respective internal codings, or in other words the permutations which will allow them to transform their respective codings.
Or, actuellement, les permutations sont données en fonction de couples (k,n) fixés une fois pour toute, généralement à l'aide d'un logiciel tel que XDR (Marque déposée par la Société SUN) .However, currently, the permutations are given as a function of couples (k, n) fixed once and for all, generally using software such as XDR (Trademark registered by the SUN Company).
Un tel logiciel assure en fait la transcription d'entiers machine et flottants codables sur 8, 16 et 32 bits (une convention est proposée pour les entiers de 64, mais pas au- delà) en un codage externe (ou codage de transmission) qui se
trouve être identique au codage interne des microprocesseurs de type SPARC. Le codage externe peut être qualifié de "langage commun ou universel". Dans ce logiciel, l'arrangement des k bits de chaque paquet (octet pour k=8) est toujours invariant.Such software in fact provides transcription of machine and floating-point integers codable on 8, 16 and 32 bits (a convention is proposed for integers of 64, but not beyond) in an external coding (or transmission coding) which himself is found to be identical to the internal coding of microprocessors of the SPARC type. External coding can be described as "common or universal language". In this software, the arrangement of the k bits of each packet (byte for k = 8) is always invariant.
Ce type de transcription nécessite, pour chaque échange de données, une première conversion (ou encodage) du premier code interne du matériel "émetteur" vers le codage externe, puis une seconde conversion (ou décodage) du code externe vers le second code interne du matériel récepteur.This type of transcription requires, for each data exchange, a first conversion (or encoding) of the first internal code of the "transmitting" material to the external encoding, then a second conversion (or decoding) of the external code to the second internal code of the receiving equipment.
La double conversion s'effectue également lorsque les matériels sont compatibles entre eux (même codage interne et incompatible avec un codage externe de type XDR) . Pour éviter cela il est bien entendu possible de reconfigurer le logiciel XDR, mais cela impose une manipulation par un opérateur.Double conversion is also carried out when the materials are compatible with each other (same internal coding and incompatible with external XDR type coding). To avoid this, it is of course possible to reconfigure the XDR software, but this requires manipulation by an operator.
Par ailleurs, en l'état, le logiciel XDR est difficile à utiliser dans les environnements de 64 bits, et inutilisable dans les environnements de 128 bits. Plus généralement, dès que des données scalaires dépassent 32 bits, le logiciel XDR laisse la direction des opérations ("la main") à l'utilisateur pour traiter les données supérieures à 32 bits. D'autre part, il n'est pas prévu pour fonctionner avec des paquets différents de 8 bits.Furthermore, as it stands, XDR software is difficult to use in 64-bit environments, and unusable in 128-bit environments. More generally, as soon as scalar data exceeds 32 bits, the XDR software leaves the direction of operations ("the hand") to the user to process data greater than 32 bits. On the other hand, it is not intended to work with different 8-bit packets.
Les solutions connues ne permettent donc pas une paramétrisa- tion dynamique et/ou des échanges entre matériels indépendam- ment de leurs architectures respectives.The known solutions therefore do not allow dynamic parameterization and / or exchanges between materials independently of their respective architectures.
En résumé, aucune solution connue n'apporte une entière satisfaction en matières de rapidité, d'efficacité et d'adaptabilité.In summary, no known solution brings complete satisfaction in terms of speed, efficiency and adaptability.
L'invention a donc pour but d'améliorer la situation en matière d'échange de données.
Elle propose à cet effet un dispositif destiné à travailler sur des données élémentaires primaires codées individuellement selon un premier arrangement de mots (ou codage interne), et comprenant : * des moyens de mémorisation où se trouvent stockés des premier et second jeux de symboles, tous distincts, formant respectivement une représentation du premier arrangement et d'un second arrangement de mots (ou codage externe), à priori distinct du premier, et * un opérateur capable de recevoir en entrée les premier et second jeux de symboles et une donnée élémentaire primaire, tel qu'un entier, pour effectuer sur celle-ci des transformations de mots définies uniquement par les premier et second jeux de symboles, de manière à fournir en sortie une donnée secondaire correspondante et équivalente à la donnée élémentaire primaire.The invention therefore aims to improve the situation in terms of data exchange. To this end, it proposes a device intended to work on primary elementary data coded individually according to a first arrangement of words (or internal coding), and comprising: * storage means where the first and second sets of symbols are stored, all distinct, respectively forming a representation of the first arrangement and of a second arrangement of words (or external coding), a priori distinct from the first, and * an operator capable of receiving as input the first and second sets of symbols and a primary elementary datum , such as an integer, in order to effect on it transformations of words defined only by the first and second sets of symbols, so as to provide as output a corresponding secondary datum and equivalent to the primary elementary datum.
On dispose ainsi d'un convertisseur entièrement paramétrable et dynamique.This provides a fully configurable and dynamic converter.
L'invention trouve une application particulièrement intéressante lorsqu'un premier et un second matériel souhaitent échanger des données élémentaires primaires. Dans ce cas, le premier matériel délivre des données élémentaires primaires codées selon le premier arrangement (ou premier codage interne), tandis que des données élémentaires primaires codées selon un quatrième arrangement (second codage interne) par un second matériel sont converties par un moyen de conversion sous forme de données secondaires codées selon un troisième arrangement (second codage externe).The invention finds a particularly interesting application when first and second hardware wish to exchange primary elementary data. In this case, the first material delivers primary elementary data coded according to the first arrangement (or first internal coding), while primary elementary data coded according to a fourth arrangement (second internal coding) by a second material are converted by a means of conversion in the form of secondary data coded according to a third arrangement (second external coding).
Comme indiqué en introduction, le mot arrangement doit être ici considéré en tant qu'agencement de groupes de bits dans un registre (en pratique, chaque groupe étant généralement formé de 8 bits (ou octet)).As indicated in the introduction, the word arrangement must be considered here as an arrangement of groups of bits in a register (in practice, each group generally being formed of 8 bits (or byte)).
Selon l'invention, l'opérateur du dispositif comprend des moyens d'interrogation qui effectuent les opérations suivantes :
* tout d'abord, ils fournissent au second matériel un message qui contient le second jeu de symboles et requiert l'envoi, en retour, d'une donnée élémentaire primaire, transformée du second jeu de symboles par le codage selon le quatrième arrangement;According to the invention, the operator of the device comprises interrogation means which carry out the following operations: * first of all, they provide the second hardware with a message which contains the second set of symbols and requires the sending, in return, of a primary elementary datum, transformed from the second set of symbols by the coding according to the fourth arrangement;
* puis, ils déduisent de cette donnée élémentaire primaire et des premier et second jeux de symboles un troisième jeu de symboles formant une représentation du quatrième arrangement;* then, they deduce from this primary elementary datum and from the first and second sets of symbols a third set of symbols forming a representation of the fourth arrangement;
* ensuite, ils remplacent le second jeu de symboles par le troisième jeu de symboles, à la fois dans l'opérateur et dans le moyen de conversion, de sorte que :* then, they replace the second set of symbols with the third set of symbols, both in the operator and in the conversion means, so that:
- en cas d'émission d'une donnée élémentaire primaire codée selon le premier arrangement et destinée au second matériel, l'opérateur lui délivre, directement, une donnée élémentaire primaire codée selon le quatrième arrangement, et en cas d'émission d'une donnée élémentaire primaire codée selon le quatrième arrangement et destinée au premier matériel, l'opérateur lui délivre, directement, une donnée élémentaire primaire codée selon le premier arrangement.- in the event of transmission of a primary elementary data coded according to the first arrangement and intended for the second material, the operator delivers to it, directly, a primary elementary data coded according to the fourth arrangement, and in the event of transmission of a primary elementary data coded according to the fourth arrangement and intended for the first material, the operator delivers to it, directly, a primary elementary data coded according to the first arrangement.
De la sorte, notamment lorsque les matériels sont de types radicalement différents, et par conséquent présentent des codages internes (premier et quatrième arrangements) et externes (second et troisième arrangements) différents, le dispositif selon l'invention peut être configuré indépendamment des architectures des matériels souhaitant échanger des données .In this way, in particular when the materials are of radically different types, and consequently have different internal (first and fourth arrangements) and external (second and third arrangements) codings, the device according to the invention can be configured independently of the architectures of the equipment wishing to exchange data.
Une fois que le dispositif a établi une liaison directe (c'est à dire à réalisé un "opérateur de conversion directe" entre les premier et second codages internes ) , le temps nécessaire à l'échange de données entre les matériels est très notablement réduit.Once the device has established a direct link (that is to say a "direct conversion operator" between the first and second internal codings), the time necessary for the exchange of data between the materials is very significantly reduced .
L'invention concerne également les procédés qui seront décrits ci-après et qui permettent au dispositif d'assurer leurs conversions.
D'autres caractéristiques et avantages de l'invention apparaîtront à l'examen de la description détaillée ci-après, et des dessins annexés, sur lesquels :The invention also relates to the methods which will be described below and which allow the device to ensure their conversions. Other characteristics and advantages of the invention will appear on examining the detailed description below, and the appended drawings, in which:
- la figure 1 est un schéma illustrant un mode de réalisation de 1 ' invention dans une application à l'échange de données entre deux ordinateurs (ou plus généralement deux matériels informatiques) de types différents; et- Figure 1 is a diagram illustrating an embodiment of one invention in an application to the exchange of data between two computers (or more generally two computer hardware) of different types; and
- la figure 2 est un algorithme décrivant un mode de réalisation du procédé selon l'invention.- Figure 2 is an algorithm describing an embodiment of the method according to the invention.
Les dessins annexés sont, pour l'essentiel, de caractère certain. En conséquence, ils pourront non seulement servir à compléter celle-ci, mais aussi contribuer à la définition de l'invention le cas échéant.The attached drawings are, for the most part, certain. Consequently, they may not only serve to supplement it, but also contribute to the definition of the invention if necessary.
On se réfère tout d'abord à la figure 1 pour dresser un état des lieux de ce qui se faisait avant la présente invention en matière d'échange de données entre deux matériels informatiques, tels que des ordinateurs (ou station de travail) Ml et M2.We first refer to FIG. 1 to draw up an inventory of what was done before the present invention in terms of data exchange between two computer hardware, such as computers (or workstation) Ml and M2.
Bien entendu, il pourrait s'agir, plus simplement, de microprocesseurs, ou même de logiciels différents ou de bases de données, éventuellement implantés dans une même machine (ou ordinateur), mais fonctionnant selon des codages internes et/ou externes différents.Of course, it could more simply be microprocessors, or even different software or databases, possibly installed in the same machine (or computer), but operating according to different internal and / or external codings.
II est important de noter que la figure 1 ne représente pas l'art antérieur en tant que tel, mais qu'elle permet de présenter les élémentsIt is important to note that FIG. 1 does not represent the prior art as such, but that it makes it possible to present the elements
Dans l'exemple illustré sur la figure 1, l'ordinateur Ml comporte un microprocesseur 1, par exemple de type SPARC à 32 bits. Ce microprocesseur 1 est installé sur une carte électronique pour pouvoir coopérer avec un disque dur 2.
Le microprocesseur 1, sous le contrôle du système d'exploitation 3 de l'ordinateur, stocké sur le disque dur 2, effectue des opérations sur des données, et délivre sur une sortie 4 des données de 32 bits (lorsqu'il est de type SPARC) selon un premier arrangement (ou premier codage interne) .In the example illustrated in FIG. 1, the computer M1 comprises a microprocessor 1, for example of the 32-bit SPARC type. This microprocessor 1 is installed on an electronic card in order to be able to cooperate with a hard disk 2. The microprocessor 1, under the control of the operating system 3 of the computer, stored on the hard disk 2, performs operations on data, and delivers 32 bit data on an output 4 (when it is of the type SPARC) according to a first arrangement (or first internal coding).
Chaque donnée de 32 bits est alors délivrée en sortie 4 du microprocesseur 1 sous la forme d'une suite ordonnée de quatre octets (8 bits). On appelle code interne Mlk n(E) la suite ordonnée de quatre (n) octets (k=8) représentant un entier E dans un microprocesseur SPARC 32 bits. Avec un tel microprocesseur SPARC, le codage interne d'un entier de 32 bits est la suite des coefficients de sa décomposition en base {2k}, ordonnée selon les puissances décroissantes.Each 32-bit datum is then delivered at the output 4 of the microprocessor 1 in the form of an ordered sequence of four bytes (8 bits). The internal code Ml kn (E) is called the ordered sequence of four (n) bytes (k = 8) representing an integer E in a 32-bit SPARC microprocessor. With such a SPARC microprocessor, the internal coding of a 32-bit integer is the result of the coefficients of its base decomposition {2 k }, ordered according to the decreasing powers.
A titre d'exemple, dans un microprocesseur PC ou ALPHA, le codage interne d'un entier de 32 bits est la suite des coefficients de sa décomposition en base {28}, ordonnée selon les puissances croissantes.For example, in a PC or ALPHA microprocessor, the internal coding of a 32-bit integer is the result of the coefficients of its base decomposition {2 8 }, ordered according to increasing powers.
Pour permettre la transmission de tels entiers E, de l'ordinateur Ml à l'ordinateur M2, il est nécessaire que les entiers présentent un même format, ou codage externe. Tel n'est pas toujours le cas, comme on le verra plus loin.To allow the transmission of such integers E, from the computer Ml to the computer M2, it is necessary that the integers have the same format, or external coding. This is not always the case, as we will see below.
En conséquence, on prévoit, classiquement, un module de conversion 5, généralement implanté sous la forme d'un logiciel (ou programme) sur le disque dur de chaque ordinateur. Bien entendu, le module de conversion peut être réalisé sous la forme d'un circuit électronique.Consequently, a conversion module 5 is conventionally provided, generally installed in the form of software (or program) on the hard disk of each computer. Of course, the conversion module can be produced in the form of an electronic circuit.
Quoiqu'il en soit, ce module de conversion 5 est relié à une interface 6 couplée, par exemple par une liaison filaire, à l'interface 6' de l'ordinateur M2 avec lequel il souhaite échanger des données.Anyway, this conversion module 5 is connected to an interface 6 coupled, for example by a wired link, to the interface 6 'of the computer M2 with which it wishes to exchange data.
Pour définir le codage externe (ou second arrangement), on fait appel à une base {1, 2k, 22k, ... 2nk}, où k et n désignent respectivement le nombre de bits de chaque mot de
l'arrangement et le nombre d'éléments de la base, et où n*k est égal au nombre de bits de la donnée.To define the external coding (or second arrangement), use is made of a base {1, 2 k , 2 2k , ... 2 nk }, where k and n denote respectively the number of bits of each word of the arrangement and the number of elements of the base, and where n * k is equal to the number of bits of the data.
Par exemple, dans le cas précité, le premier arrangement est défini par n = 4 mots de k = 8 bits, soit n*k ≈ 32 bits.For example, in the aforementioned case, the first arrangement is defined by n = 4 words of k = 8 bits, that is n * k ≈ 32 bits.
Dans cet exemple, le module de conversion 5 a donc pour fonction de convertir une donnée élémentaire primaire délivrée par la sortie 4 du microprocesseur 1 (c'est-à-dire fournie selon le premier codage interne ou premier arrangement Mx k n) en une donnée secondaire codée selon le codage externe, ou second arrangement, Oλ k n.In this example, the conversion module 5 therefore has the function of converting a primary elementary datum delivered by the output 4 of the microprocessor 1 (that is to say provided according to the first internal coding or first arrangement M xkn ) into a datum secondary coded according to external coding, or second arrangement, O λ kn .
Généralement, ce qui différencie le codage interne du codage externe, dans un même matériel, c'est une opération de type permutation. Dans ce cas, on a la relation : Dl,kfn(E) = Φι,k,n <Mιfk,n(B))Generally, what differentiates internal coding from external coding, in the same hardware, is a permutation type operation. In this case, we have the relation: D l , kf n (E) = Φι, k , n <Mι fk , n (B))
Il est bien évident, que dans certains cas, la permutation φ k n ( =l'2) peut être l'identité. Dans ce cas, M et D sont constitués de la même suite ordonnée de mots définissant l'entier. On dit alors qu'ils présentent le même arrangement, ou format.It is quite obvious, that in certain cases, the permutation φ k n ( = l'2) can be the identity. In this case, M and D are made up of the same ordered sequence of words defining the integer. They are said to have the same arrangement, or format.
Ce qui vient d'être dit pour le premier ordinateur Ml s ' applique également au second ordinateur M2. Seuls le codage interne M2 k n, ainsi qu'éventuellement le codage externe D 2 k n' sont différents. On entend ici par différents, soit des arrangements (ou suites) dont les éléments (ou mots) sont ordonnés de façon différente, soit des arrangements qui ne présentent pas le même nombre d'éléments (kl et k2 différents et/ou ni et n2 différents).What has just been said for the first computer Ml also applies to the second computer M2. Only the internal coding M 2 kn , as well as possibly the external coding D 2 k n 'are different. Here we mean by different, either arrangements (or sequences) whose elements (or words) are ordered differently, or arrangements which do not have the same number of elements (kl and k2 different and / or ni and n2 different).
Généralement, notamment lorsque l'on se trouve dans un environnement de type client-serveur, les matériels sont sensiblement homogènes, si bien que les codages externes qu'ils utilisent sont identiques. Dans ce cas, on a la relation suivante :
Φ2 , , n ( M2 , k f n ( E ) ) = Dk, n ( E ) = •ι f k,π (Ml f kf ll ( E ) )Generally, especially when one is in a client-server type environment, the hardware is substantially homogeneous, so that the external encodings they use are identical. In this case, we have the following relation: Φ2,, n (M 2 , kf n (E)) = D k , n (E) = • ι fk , π (M lf kf ll (E))
Dans les machines classiques, pour chaque donnée élémentaire primaire délivrée par le microprocesseur 1, sur sa sortie 4, et codée selon le premier arrangement (ou premier codage interne), le module de conversion 5 effectue un encodage (ou première conversion) destiné à fournir à l'interface 6 une donnée secondaire (généralement un entier E) codée selon le second arrangement (ou premier codage externe). En d'autres termes, en sortie du moyen de conversion 5 on dispose de la donnée suivante :In conventional machines, for each primary elementary data item delivered by the microprocessor 1, on its output 4, and coded according to the first arrangement (or first internal coding), the conversion module 5 performs an encoding (or first conversion) intended to provide at the interface 6 a secondary datum (generally an integer E) coded according to the second arrangement (or first external coding). In other words, at the output of the conversion means 5, the following data is available:
Dk,n,(E) = •ιfk,n<Mlfkfn<=>>D k , n, ( E ) = • ι f k, n <M lfkf n <= >>
Cette donnée secondaire est alors adressée au second ordinateur M2, qui va la décoder (seconde conversion) à l'aide de son module de conversion 5' (M2 n(E) = Φ_1 2 k n(D k n, ( )))' pour fournir au microprocesseur l' une donnée élémentaire primaire codée selon son second codage interne (ou quatrième arrangement), de sorte qu'il puisse traiter cette donnée.This secondary data is then sent to the second computer M2, which will decode it (second conversion) using its 5 'conversion module (M 2 n (E) = Φ _1 2 kn ( D k n, ()) ) 'to provide the microprocessor with primary elementary data coded according to its second internal coding (or fourth arrangement), so that it can process this data.
Il en va de même lorsque le second ordinateur M2 souhaite transmettre une donnée élémentaire primaire au premier ordinateur Ml, et notamment à son microprocesseur 1. L'enco- dage consiste alors à former la donnée secondaire :The same applies when the second computer M2 wishes to transmit primary elementary data to the first computer M1, and in particular to its microprocessor 1. The encoding then consists in forming the secondary data:
D2,k,n(E) - Φ2,k,n(M2,k,n(E)) D 2, k, n (E) - Φ 2 , k , n ( M 2, k, n (E))
et le décodage de la donnée secondaire fournie par le second ordinateur M2 s'effectue dans le module de conversion 5 du premier ordinateur Ml . Ce qui fournit une donnée élémentaire primaire selon le premier arrangement (ou premier codage interne) : M1 k,n(E) = -1 1,k,n(Dkfri/ (E) )and the decoding of the secondary data supplied by the second computer M2 is carried out in the conversion module 5 of the first computer M1. Which provides a primary elementary data according to the first arrangement (or first internal coding): M 1 k , n (E) = - 1 1 , k , n (D kfri / (E))
Le module de conversion 5 de chaque matériel Mi (i=l,2) ne peut effectuer qu'un seul et unique codage du codage interne vers le codage externe, et réciproquement. Il en résulte que ce type de matériel ne peut fonctionner qu'avec des matériels présentant au moins un codage externe Dk n commun.
L'homme de l'art a proposé d'implanter dans certains matériels, par exemple sur leur disque dur, un logiciel d'échange de données. On citera, par exemple, le logiciel XDR (Marque déposée) du fabricant de stations de travail SUN. Ce logiciel propose une bibliothèque de fonctions d'encodage/décodage qui permettent à un premier matériel d'un premier type, d'échanger des données avec un second matériel d'un second type, une fois que les types respectifs de ces matériels ont été déclarés. Il s'agit, par conséquent, d'une opération de conversion de type purement statique, puisqu'elle requiert l'intervention d'un opérateur connaissant les types respectifs des deux matériels.The conversion module 5 of each material Mi (i = 1.2) can only carry out a single coding from the internal coding to the external coding, and vice versa. As a result, this type of hardware can only operate with hardware having at least one common external coding D kn . Those skilled in the art have proposed to install data exchange software in certain hardware, for example on their hard disk. These include, for example, the XDR software (Trademark) from the manufacturer of SUN workstations. This software offers a library of encoding / decoding functions which allow a first device of a first type to exchange data with a second device of a second type, once the respective types of this device have been declared. It is, therefore, a purely static type conversion operation, since it requires the intervention of an operator knowing the respective types of the two materials.
En outre, ce type de logiciel effectue systématiquement, pour chaque donnée à échanger, une double conversion. La première conversion consiste en l'encodage de la donnée élémentaire primaire selon le premier codage interne en une donnée secondaire selon le codage externe. La seconde conversion consiste en un décodage de la donnée secondaire selon le codage externe en une donnée élémentaire primaire selon le second codage interne.In addition, this type of software systematically performs, for each data item to be exchanged, a double conversion. The first conversion consists of the encoding of the primary elementary data according to the first internal coding into a secondary data according to the external coding. The second conversion consists in a decoding of the secondary data according to the external coding into a primary elementary data according to the second internal coding.
Par ailleurs, à moins d'être reconfiguré à la main, par un spécialiste, le logiciel XDR continue d'effectuer sa double conversion lorsque les deux matériels sont identiques.In addition, unless reconfigured by hand, by a specialist, the XDR software continues to perform its double conversion when the two materials are identical.
Cette double conversion ralentit énormément (au moins d'un facteur deux (2) les vitesses de traitement des données.This double conversion greatly slows (at least a factor of two (2)) the data processing speeds.
L'invention vient apporter une solution à cet inconvénient.The invention provides a solution to this drawback.
Dans ce qui suit, l'invention va être décrite, en référence aux figures 1 et 2, dans une application à l'échange de données entre deux matériels informatiques, tels que des ordinateurs (ou station de travail) Ml et M2.In what follows, the invention will be described, with reference to FIGS. 1 and 2, in an application to the exchange of data between two computer hardware, such as computers (or workstation) M1 and M2.
Bien entendu, il pourrait s'agir, plus simplement, de microprocesseurs, ou même de logiciels différents, éventuel-
lement implantés dans une même machine (ou ordinateur), mais fonctionnant selon des codages internes différents.Of course, it could be, more simply, microprocessors, or even different software, possibly- They are all installed in the same machine (or computer), but operating according to different internal codings.
L'invention propose un dispositif comprenant une première partie qui remplace le module de conversion 5 dans le premier matériel Ml, et une seconde partie qui complète la première et est implantée au moins partiellement dans le premier matériel Ml (le reste étant alors implanté dans le second matériel M2 ) .The invention provides a device comprising a first part which replaces the conversion module 5 in the first material M1, and a second part which completes the first and is implanted at least partially in the first material Ml (the rest then being implanted in the second M2 material).
De préférence, le dispositif est réalisé sous la forme de modules logiciels implantés sur le(s) disque(s) dur(s). Mais, il peut également être réalisé sous la forme de circuits électroniques. Une combinaison des deux (logiciel et circuit) peut également être envisagée.Preferably, the device is produced in the form of software modules installed on the hard disk (s). However, it can also be produced in the form of electronic circuits. A combination of the two (software and circuit) can also be considered.
Dans le premier ordinateur Ml, se trouvent implantés des moyens de mémorisation capables de stocker un premier jeu (ou suite) de symboles, tous distincts, formant une représenta- tion du premier arrangement (ou premier codage interne). De tels moyens de mémorisation sont, par exemple, réalisés sous la forme de lignes de programmes qui renvoient à des adresses de registres ou mémoires du disque dur 2 de l'ordinateur Ml.In the first computer M1, there are installed memory means capable of storing a first set (or series) of symbols, all distinct, forming a representation of the first arrangement (or first internal coding). Such storage means are, for example, produced in the form of program lines which refer to addresses of registers or memories of the hard disk 2 of the computer M1.
Les moyens de mémorisation 7 stockent également un second jeu (ou suite) de symboles, tous distincts, formant une représentation du second arrangement de mots (ou premier codage externe), généralement distinct du premier arrangement. Il peut en effet être identique dans certains cas.The storage means 7 also store a second set (or series) of symbols, all distinct, forming a representation of the second arrangement of words (or first external coding), generally distinct from the first arrangement. It can indeed be identical in certain cases.
De préférence, les jeux de symboles sont constitués d'une suite ordonnée de n composantes qui caractérisent, comme indiqué ci-avant, les premier et second arrangements.Preferably, the symbol sets consist of an ordered sequence of n components which characterize, as indicated above, the first and second arrangements.
Le dispositif comprend en outre, un opérateur 8 couplé aux moyens de mémorisation 7, ainsi qu'à la sortie 4 du microprocesseur 1. Il peut ainsi recevoir sur une entrée les premier et second jeux de symboles, ainsi que chaque donnée élémen-
taire primaire codée selon le premier arrangement par le microprocesseur 1.The device further comprises an operator 8 coupled to the storage means 7, as well as to the output 4 of the microprocessor 1. It can thus receive on an input the first and second sets of symbols, as well as each elementary data. primary shutter coded according to the first arrangement by the microprocessor 1.
Cet opérateur 8 est de préférence réalisé sous la forme d'un module logiciel (ou programme) faisant appel à une bibliothèque de calculs mathématiques. Il a pour fonction d'effectuer sur la donnée élémentaire primaire, reçue sous la forme d'une suite ordonnée de mots, des transformations de mots définies, uniquement, à partir des premier et second jeux de symboles. En sortie de cet opérateur 8, est délivrée une donnée secondaire équivalente à la donnée élémentaire primaire reçue. Le mot transformation doit être compris, ici, dans sa définition mathématique, c'est-à-dire en tant que fonction ou application.This operator 8 is preferably produced in the form of a software module (or program) using a library of mathematical calculations. Its function is to perform on the primary elementary data, received in the form of an ordered sequence of words, transformations of defined words, only, from the first and second sets of symbols. At the output of this operator 8, secondary data equivalent to the primary elementary data received is delivered. The word transformation must be understood here in its mathematical definition, that is, as a function or application.
De la sorte, on réalise un module de conversion perfectionné totalement configurable, et adaptable à tout type de matériel.In this way, an improved conversion module is produced which is fully configurable and adaptable to any type of material.
Le dispositif selon l'invention permet en outre d'accélérer de manière très sensible la vitesse d'échange de données entre deux matériels Ml et M2 de types différents, notamment. Dans ce qui suit, on considérera que non seulement les codages internes des deux matériels Ml et M2 sont différents, mais que leurs codages externes sont également différents. Par exemple, le microprocesseur 1 de l'ordinateur Ml est de type SPARC à 32 bits, tandis que le microprocesseur l' du second ordinateur M2 est de type ALPHA à 64 bits.The device according to the invention also makes it possible to accelerate very significantly the speed of data exchange between two materials Ml and M2 of different types, in particular. In what follows, it will be considered that not only the internal codings of the two materials M1 and M2 are different, but that their external codings are also different. For example, the microprocessor 1 of the computer M1 is of the 32-bit SPARC type, while the microprocessor 1 ′ of the second computer M2 is of the 64-bit ALPHA type.
Pour permettre à ces deux matériels Ml et M2 de communiquer, le dispositif selon l'invention met en oeuvre un protocole d'interrogation. Ce protocole est initié par le premier ordinateur Ml dans le but de déterminer le codage interne (ou quatrième arrangement) du microprocesseur l' du second ordinateur M2.To allow these two materials M1 and M2 to communicate, the device according to the invention implements an interrogation protocol. This protocol is initiated by the first computer M1 in order to determine the internal coding (or fourth arrangement) of the microprocessor l 'of the second computer M2.
L'interrogation est réalisée par un module d'interrogation 9, qui est constitué par un module logiciel (ou programme). Ce module logiciel d'interrogation est, de préférence, implanté
pour une partie 9-1 sur le disque dur de l'ordinateur Ml, et pour une autre partie 9-2 complémentaire sur le disque dur 2' de l'ordinateur M2. Bien entendu, comme indiqué précédemment, chaque partie du module d'interrogation 9-1 et 9-2 pourra être réalisée sous la forme de circuits électroniques.The interrogation is carried out by an interrogation module 9, which is constituted by a software (or program) module. This interrogation software module is preferably installed for a part 9-1 on the hard disk of the computer Ml, and for another complementary part 9-2 on the hard disk 2 'of the computer M2. Of course, as indicated above, each part of the interrogation module 9-1 and 9-2 can be produced in the form of electronic circuits.
Par ailleurs, on peut envisager une variante dans laquelle l'intégralité du module d'interrogation 9 se trouve implantée sur le premier ordinateur Ml. Dans ce cas, le module logiciel d'interrogation 9 est conçu de manière à implanter spontanément, lors d'une première interrogation, quelques lignes choisies de programme (sensiblement équivalentes à 9-2) sur le disque dur 2 ' du second ordinateur M2 , et de préférence dans son module de conversion 5 ' , lorsque celui-ci est réalisé sous la forme d'un module logiciel.Furthermore, it is possible to envisage a variant in which the entire interrogation module 9 is located on the first computer M1. In this case, the interrogation software module 9 is designed so as to spontaneously implant, during a first interrogation, a few selected program lines (substantially equivalent to 9-2) on the hard disk 2 ′ of the second computer M2, and preferably in its 5 ′ conversion module, when this is produced in the form of a software module.
On décrit maintenant un mode (ou procédé) de fonctionnement du dispositif selon l'invention dans lequel le codage externe D k,n est supposé fixé à l'avance et identique pour les deux ordinateurs. Ce mode permet d'émuler le mode de fonctionnement du logiciel XDR.We will now describe a mode (or method) of operation of the device according to the invention in which the external coding D k , n is assumed to be fixed in advance and identical for the two computers. This mode emulates the operating mode of the XDR software.
Selon l'invention, le jeu de seconds symboles (représentatifs du second arrangement) est une suite ordonnée composée d'élé- ments distincts les uns des autres : [1, 2, 3, ..., n] et égale à Dk n(E). Cette suite ordonnée est associée à l'entier E = 1 + 2*2k + 3*22k + ... + n*2<n"1)* , qui va être adressée au second ordinateur M2 pour déterminer son quatrième arrangement.According to the invention, the set of second symbols (representative of the second arrangement) is an ordered sequence composed of elements distinct from each other: [1, 2, 3, ..., n] and equal to D kn (E). This ordered sequence is associated with the integer E = 1 + 2 * 2 k + 3 * 2 2k + ... + n * 2 < n " 1) * , which will be sent to the second computer M2 to determine its fourth arrangement .
Pour des raisons de commodité, on suppose ici que n est inférieur à 2k, le cas général pouvant être facilement traité en composant les procédés (ou modes de fonctionnement).For reasons of convenience, it is assumed here that n is less than 2 k , the general case can be easily treated by composing the methods (or operating modes).
En d'autres termes, en adressant l'entier E indiqué ci- dessus, ou plus exactement en adressant la suite ordonnée [1, 2, 3, ..., n] comportant des nombres tous distincts les uns des autres, on va, en retour, en déduire le second code interne (ou quatrième arrangement) de la seconde machine M2.
A titre d'exemple, on prend k = 8 et k*n ≥ 32.In other words, by addressing the integer E indicated above, or more exactly by addressing the ordered sequence [1, 2, 3, ..., n] comprising numbers all distinct from each other, we will , in return, deduce the second internal code (or fourth arrangement) of the second machine M2. As an example, we take k = 8 and k * n ≥ 32.
Pour déterminer complètement la permutation 2 k n mise en oeuvre par le module de conversion 5' du second ordinateur M2, il suffit de prendre l'entier E = 1 + 2*28 + 3*216 + 4*224 et la donnée secondaire Dk n(E) formée de la suite de symboles
To completely determine the permutation 2 kn implemented by the conversion module 5 'of the second computer M2, it suffices to take the integer E = 1 + 2 * 2 8 + 3 * 2 16 + 4 * 2 24 and the data secondary D kn (E) formed by the sequence of symbols
En pratique, la détermination de la permutation Φ2 k n revient à construire un tableau noté, pour k fixé, permut, tel que permut[n] soit la liste ordonnée représentant Φm k n.In practice, the determination of the permutation Φ 2 kn amounts to constructing a noted table, for k fixed, permut, such that permut [n] is the ordered list representing Φ mkn .
Le programme de détection du codage interne et de la construction du codage externe est donné à titre d'exemple, en langage C, dans le module Mod2 de l'annexe.The program for detecting the internal coding and the construction of the external coding is given as an example, in C language, in the Mod2 module of the appendix.
Les fonctions construisent des listes ordonnées external_co- dingfi] et internal_coding[i] , pour des valeurs de i prenant les tailles des entiers usuels du langage C (char, short, int, et long). Il est rappelé qu'en langage C (qui n'est qu'un exemple de langage de programmation utilisable) la variable long indique la taille maximale des registres qu'utilise le microprocesseur pour stocker les données scalaires ) . Les variables external__coding et internal_coding représentent respectivement le codage externe Dk n et le codage interne Mk n. Ces variables sont données à titre d'exemple dans le module Modl de l'annexe, où "B8" est le type invariant qui permet de représenter un entier de la valeur 0 (zéro) à la valeur 255.The functions construct ordered lists external_codingfi] and internal_coding [i], for values of i taking the sizes of the usual integers of the C language (char, short, int, and long). It is recalled that in C language (which is only an example of a usable programming language) the long variable indicates the maximum size of the registers that the microprocessor uses to store scalar data). The variables external__coding and internal_coding respectively represent the external coding D kn and the internal coding M kn . These variables are given by way of example in the Modl module of the appendix, where "B8" is the invariant type which makes it possible to represent an integer from the value 0 (zero) to the value 255.
Pour une valeur i fixée, on construit l'entier E = 1 + 2*2k + ... + n*2 *(i-D.For a fixed value i, we construct the integer E = 1 + 2 * 2 k + ... + n * 2 * (i -D.
Les listes ordonnées précitées forment des tableaux. Le tableau external_coding[i] est alors égal, pour k = 8, au codage externe D8 fi(E) = [1, 2, 3, — , i]. Le tableau internal_coding[i] est, quant à lui, égal à M-^g^E) qui varie selon l'ordinateur (ou machine considérée).
On définit ensuite un ensemble (ou multiplicité) de plusieurs fonctions de permutation Φm 8 ± pour des valeurs de i variant de 1 à sizeof(long) (ou dans certains cas de 1 à sizeof(lon- glong) . Cette dernière variable définit le scalaire entier présentant la plus grande taille admissible dans le langage C; en générale il s'agit du plus grand entier compréhensible par la machine ou matériel. Ces fonctions de permutation assurent une prise en compte d'entiers codables sur 8, 16, 32 et 64 bits. Elles peuvent être aisément étendues à des valeurs plus grandes, notamment 128 bits.The aforementioned ordered lists form tables. The array external_coding [i] is then equal, for k = 8, to the external coding D 8 fi (E) = [1, 2, 3, -, i]. The internal_coding [i] table is equal to M- ^ g ^ E) which varies depending on the computer (or machine considered). We then define a set (or multiplicity) of several permutation functions Φ m 8 ± for values of i varying from 1 to sizeof (long) (or in some cases from 1 to sizeof (long). the integer scalar having the largest admissible size in the C language; in general it is the largest integer understandable by machine or hardware. These permutation functions take into account integers codable on 8, 16, 32 and 64 bits, they can be easily extended to larger values, especially 128 bits.
Les fonctions de permutation sont définies, à titre d'exemple, dans le module Mod3 de l'annexe. On notera, que la formulation de ce module de programme permet de détecter les valeurs de i pour lesquelles aucune permutation n'est nécessaire.The permutation functions are defined, for example, in the Mod3 module of the appendix. It will be noted that the formulation of this program module makes it possible to detect the values of i for which no permutation is necessary.
Il faut ensuite décrire des fonctions d'encodage/décodage qui vont être utilisées lorsque les paramètres du problème, à savoir les codage interne, codage externe et fonction de permutation auront été déterminés.It is then necessary to describe the encoding / decoding functions which will be used when the parameters of the problem, namely the internal coding, external coding and permutation function have been determined.
Par exemple, la fonction permettant de transformer le codage externe d'un entier (ou tableau de m éléments de 8 bits) de taille donnée (sz) en son format interne peut être définie par le module Mod4 de l'annexe.For example, the function allowing the external coding of an integer (or array of m 8-bit elements) of given size (sz) to be transformed into its internal format can be defined by the Mod4 module of the appendix.
Comme le remarquera l'homme de l'art, le module Mod4 décrivant les fonctions d'encodage/décodage propose des fonctions génériques, dans la mesure où, d'une part, elles ne dépendent que de la taille des entiers à traiter, et que d'autre part, on prend soin de ne faire des permutations que si cela s'avère nécessaire.As will be appreciated by those skilled in the art, the Mod4 module describing the encoding / decoding functions offers generic functions, insofar as, on the one hand, they only depend on the size of the integers to be processed, and that on the other hand, care is taken to make permutations only if this proves necessary.
De la même manière, on définit les fonctions inverses qui permettent de transformer le codage interne d'un entier (tableau m d'élément de 8 bits) de taille donnée (sz) en un autre codage interne (tableau p d'éléments de 8 bits). Ces fonctions inverses sont définies, à titre d'exemple, par le
module Mod5 de l'annexe. Elles permettent donc de convertir directement une donnée élémentaire primaire codée selon le premier, respectivement quatrième, arrangement en une donnée élémentaire primaire codée selon le quatrième, respectivement premier, arrangement.In the same way, the inverse functions are defined which make it possible to transform the internal coding of an integer (array m of element of 8 bits) of given size (sz) into another internal coding (array p of elements of 8 bits). These inverse functions are defined, for example, by the Mod5 module in the appendix. They therefore make it possible to directly convert a primary elementary datum coded according to the first, respectively fourth, arrangement into a primary elementary datum coded according to the fourth, respectively first, arrangement.
A l'aide des modules Modl à Mod5, on réalise un protocole (ou procédé) d'échange de données binaires dont l'implantation ne dépend en aucune manière des architectures respectives des ordinateurs (ou machines) considérés. Bien entendu, cette implantation est liée au langage utilisé, ici le langage C. Mais, une transposition vers un autre langage informatique peut être aisément obtenue.Using Modl to Mod5 modules, a protocol (or process) for exchanging binary data is implemented, the implementation of which does not depend in any way on the respective architectures of the computers (or machines) considered. Of course, this implementation is linked to the language used, here the C language. However, a transposition to another computer language can be easily obtained.
Pour faire fonctionner le protocole d'échanges, le premier ordinateur Ml ouvre le canal de communication qui le relie au second ordinateur M2, puis active ce second ordinateur M2 et lui envoie l'entier E défini par le second jeu de symboles, ici [1, 2, 3, 4], sur le canal de communication choisi. Le second ordinateur M2 lit l'entier, le transforme en le codant selon son quatrième arrangement (ou second codage interne) et retourne cette transformée sur le canal de communication.To operate the exchange protocol, the first computer M1 opens the communication channel which connects it to the second computer M2, then activates this second computer M2 and sends it the whole E defined by the second set of symbols, here [1 , 2, 3, 4], on the chosen communication channel. The second computer M2 reads the whole, transforms it by coding it according to its fourth arrangement (or second internal coding) and returns this transform on the communication channel.
Un exemple de module de programme permettant de réaliser les opérations citées ci-dessus, est donné dans le module Mod6 (pour ce qui concerne la partie 9-1 implantée dans le premier ordinateur Ml) et dans le module Mod7 (pour ce qui concerne la partie 9-2 implantée dans le second ordinateur M2).An example of a program module making it possible to carry out the operations mentioned above is given in the Mod6 module (as regards part 9-1 installed in the first computer Ml) and in the Mod7 module (as regards the part 9-2 located in the second M2 computer).
Bien entendu, et comme indiqué précédemment, la partie 9-2 destinée à activer le second ordinateur M2 peut être implantée à distance par le premier ordinateur Ml. Pour ce faire, il suffit que le module d'interrogation 9 de Ml adresse une adaptation du module de programme proposé dans Mod7.Of course, and as indicated above, the part 9-2 intended to activate the second computer M2 can be installed remotely by the first computer Ml. To do this, it suffices that the interrogation module 9 of MI addresses an adaptation of the program module proposed in Mod7.
Dans le module Mod6, deux arguments sont appelés : un premier nom de machine (premier ordinateur) et un second nom de machine (second ordinateur) qui doit être activé par la première machine. Par ailleurs, dans Mod7, deux arguments
sont également appelés : un nom de machine (ou ordinateur) et un port.In the Mod6 module, two arguments are called: a first machine name (first computer) and a second machine name (second computer) which must be activated by the first machine. By the way, in Mod7, two arguments are also called: a machine (or computer) name and a port.
Dans ces deux modules, les fonctions send_n (nb, bus, buf, n), respectivement read_n (nb, bus, buf, n), écrivent, respectivement lisent, un tableau buf de n*k bits (k est en pratique fixé à la valeur 8) constitué d'entiers machines de nb*k bits sur un canal noté bus.In these two modules, the functions send_n (nb, bus, buf, n), respectively read_n (nb, bus, buf, n), write, respectively read, an array buf of n * k bits (k is in practice fixed at the value 8) consisting of integer machines of nb * k bits on a channel denoted bus.
II est clair que ces fonctions vont dépendre du canal de communication choisi (mémoire partagée, fichiers, bases de données (SGBD), cartes graphiques, microprocesseur, formats de stockage d'image et/ou de sons (multimédia), sockets et analogues ) . De telles fonctions font appel ( sous forme de boucles) aux fonctions conv_machine_2_prot_UI et reorder_UI, et gèrent les buffers d'entrée/sortie si nécessaire.It is clear that these functions will depend on the chosen communication channel (shared memory, files, databases (DBMS), graphics cards, microprocessor, image and / or sound storage formats (multimedia), sockets and the like) . Such functions call (in the form of loops) the functions conv_machine_2_prot_UI and reorder_UI, and manage the input / output buffers if necessary.
Dans ce qui précède, le codage externe Dk n était supposé fixé à l'avance. Il correspondait donc à un mode de réalisation du dispositif selon l'invention particulièrement bien adapté aux matériels pouvant communiquer entre eux en raison d'un même codage externe Dk n.In the above, the external coding D kn was assumed to be fixed in advance. It therefore corresponded to an embodiment of the device according to the invention which is particularly well suited to equipment which can communicate with one another due to the same external coding D kn .
Cependant, le dispositif selon l'invention peut être égale- ment adapté à l'échange de données entre des matériels présentant des codages externes différents. Dans ce cas, le dispositif calcule de façon dynamique un codage externe commun, ce qui revient à ne pas fixer a priori de format d'échange des données.However, the device according to the invention can also be adapted to the exchange of data between hardware having different external codings. In this case, the device dynamically calculates a common external coding, which amounts to not a priori fixing a data exchange format.
Une solution préférentielle consiste à fixer comme codage externe d'échange le codage interne de l'une des deux machines (ou ordinateurs) de sorte que l'une des deux permutations k n et Φ2 k, n, utilisées par ces deux machines soit égale à l'identité.A preferential solution consists in fixing as internal exchange coding the internal coding of one of the two machines (or computers) so that one of the two permutations kn and Φ 2 k , n , used by these two machines is equal to identity.
Les principales étapes de détermination dynamique d'un format d'échange (ou codage externe) selon l'invention vont maintenant être décrites en référence à la figure 2.
Tout d'abord, dans une étape 10, le microprocesseur 1 du premier ordinateur Ml adresse au dispositif implanté, ici sur le disque dur 2 , une donnée codée selon le premier arrangement (ou premier codage interne) .The main steps of dynamic determination of an exchange format (or external coding) according to the invention will now be described with reference to FIG. 2. First of all, in a step 10, the microprocessor 1 of the first computer M1 addresses to the implanted device, here on the hard disk 2, a data item coded according to the first arrangement (or first internal coding).
Cette donnée étant destinée au second ordinateur M2, dont on ne connaît ni le codage externe (ou troisième arrangement) ni le codage interne (ou quatrième arrangement), on effectue, dans une étape 20, une initialisation de la partie 9-1 du protocole contenue dans le premier ordinateur Ml, et notamment dans l'opérateur 8. Cela consiste à fixer une valeur par défaut pour Dk n. En fait, cette valeur par défaut pour Dk n est la suite ordonnée décrite précédemment [1, 2, 3, ..., n]. S'ensuit alors, dans une étape 30, une initialisation de la partie 9-2 du protocole qui se trouve dans le second ordinateur M2.This data being intended for the second computer M2, for which neither the external coding (or third arrangement) nor the internal coding (or fourth arrangement) is known, an initialization of the part 9-1 of the protocol is carried out in a step 20 contained in the first computer Ml, and in particular in the operator 8. This consists in fixing a default value for D kn . In fact, this default value for D kn is the ordered sequence described previously [1, 2, 3, ..., n]. Then follows, in a step 30, an initialization of the part 9-2 of the protocol which is in the second computer M2.
Il est clair, comme indiqué précédemment, que lorsque l'intégralité du programme d'interrogation se trouve implan- tée dans le premier ordinateur Ml, les lignes de programme 9- 2 assurant l'initialisation du second ordinateur M2 doivent être transférées à celui-ci, par exemple dans son module de conversion 5'. Cette étape 30 consiste donc à remplacer le codage externe D2 k, n, (ou troisième arrangement) du second ordinateur M2 par la valeur par défaut Dk n fixée à l'étape 20.It is clear, as indicated above, that when the entire interrogation program is installed in the first computer M1, the program lines 9-2 ensuring the initialization of the second computer M2 must be transferred to it ci, for example in its 5 'conversion module. This step 30 therefore consists in replacing the external coding D 2 k , n , (or third arrangement) of the second computer M2 by the default value D kn fixed in step 20.
En fait, Ml adresse à M2 un message d'interrogation contenant le second jeu de symboles qui représente le second arrange- ment, ou bien une ou plusieurs variantes de celui-ci, comportant un (des) nombre(s) de symboles différent(s) (supérieur ou inférieur), de sorte qu'en cas de formats d'échange différents, l'un au moins de ces jeux de symboles puisse être traité par le module de conversion 5' de M2. Dans ce cas, ce sont les moyens de mémorisation 7 de Ml qui stockent les différentes variantes de jeux de symboles comportant des nombres n de mots différents et/ou de mots de nombre k± de bits différents.
Le microprocesseur 1 ' de M2 renvoie en retour au module de conversion 5', qui code désormais au format d'échange Dk n imposé par défaut, une donnée élémentaire primaire codée selon son quatrième arrangement (ou second codage externe) M2 , n,. Cette donnée est convertie (encodée) selon le codage externe Dk n et adressée à Ml sur le canal de communication.In fact, Ml sends an interrogation message to M2 containing the second set of symbols which represents the second arrangement, or one or more variants thereof, comprising a different number (s) of symbols ( s) (higher or lower), so that in the case of different exchange formats, at least one of these symbol sets can be processed by the 5 'conversion module of M2. In this case, it is the memory means 7 of M1 which store the different variants of symbol sets comprising numbers n of different words and / or words of number k ± of different bits. The microprocessor 1 'of M2 returns in return to the conversion module 5', which now codes in the exchange format D kn imposed by default, a primary elementary datum coded according to its fourth arrangement (or second external coding) M 2 , n , . This data is converted (encoded) according to the external coding D kn and addressed to Ml on the communication channel.
Dans une étape 40, le module d'interrogation 9-1 implanté dans le premier ordinateur Ml va lire sur le canal de communication la donnée M2 k, n, (transformée du second jeu de symbole Dk n) qui représente le codage interne du second ordinateur M2.In a step 40, the interrogation module 9-1 installed in the first computer M1 will read on the communication channel the data M 2 k , n , (transformed from the second set of symbol D kn ) which represents the internal coding of the second M2 computer.
Dans une étape 50, le module d'interrogation 9-1 du premier ordinateur Ml remplace alors la valeur par défaut du codage externe Dk n par la donnée reçue du second ordinateur M2, à savoir M2fk,fn..In a step 50, the interrogation module 9-1 of the first computer M1 then replaces the default value of the external coding D kn with the data received from the second computer M2, namely M 2fk , fn ..
Puis, dans une étape 60, on remplace dans le second ordina- teur M2, et notamment dans son module de conversion 5', la valeur par défaut de Dk n fournie lors de l'étape 30.Then, in a step 60, the default value of D kn supplied during step 30 is replaced in the second computer M2, and in particular in its conversion module 5 ′.
On peut noter que, du fait du remplacement dans M2 de Dk n (codage externe imposé par défaut) par M2 k, n, (codage interne du microprocesseur l'), on se retrouve dans le module de conversion 5' de M2 avec une permutation Φ2 < n< égale à l'identité. De même, on se retrouve dans le "module de conversion" 5 de Ml avec un codage externe identique au codage interne de M2, si bien que toute donnée élémentaire primaire d'un microprocesseur 1 ou l', codée selon le premier ou le quatrième arrangement, peut être convertie directement en une donnée élémentaire primaire de l'autre microprocesseur 1' ou 1, codée selon le quatrième ou le premier arrangement.We can note that, due to the replacement in M2 of D kn (external coding imposed by default) by M 2 k , n , (internal coding of the microprocessor l '), we find ourselves in the 5' conversion module of M2 with a permutation Φ 2 < n <equal to the identity. Similarly, we find ourselves in the "conversion module" 5 of Ml with an external coding identical to the internal coding of M2, so that any primary elementary data of a microprocessor 1 or the, coded according to the first or the fourth arrangement, can be converted directly into primary elementary data of the other microprocessor 1 ′ or 1, coded according to the fourth or the first arrangement.
Les deux machines Ml et M2 sont désormais prêtes à échanger directement des données élémentaires primaires dans une étape 70.
Une donnée élémentaire primaire délivrée par le microprocesseur l' de M2, ou par le module de conversion 5 de Ml, ne va donc pas subir de conversion dans le module de conversion 5 ' . Ce module de conversion 5' est, en quelque sorte, court- circuité. Par ailleurs, une donnée destinée au microprocesseur 1 de Ml est convertie, directement, du format interne (quatrième arrangement) de M2 au format interne (premier arrangement ) de Ml .The two machines M1 and M2 are now ready to exchange primary elementary data directly in a step 70. Primary elementary data delivered by the microprocessor l 'of M2, or by the conversion module 5 of Ml, will therefore not undergo conversion in the conversion module 5'. This 5 'conversion module is, in a way, short-circuited. Furthermore, data intended for the microprocessor 1 of Ml is converted, directly, from the internal format (fourth arrangement) of M2 to the internal format (first arrangement) of Ml.
II est clair, que le procédé qui vient d'être décrit en référence à l'algorithme illustré sur la figure 2 s'adapte automatiquement, par une phase de négociation, au cas, décrit précédemment, dans lequel les deux ordinateurs (ou machines) présentent d'origine le même codage externe. Dans ce cas, les étapes d'initialisation 20 et 30 sont inutiles.It is clear that the process which has just been described with reference to the algorithm illustrated in FIG. 2 adapts automatically, through a negotiation phase, to the case described above, in which the two computers (or machines) have the same external coding as original. In this case, the initialization steps 20 and 30 are unnecessary.
Un exemple de programme, permettant de mettre en oeuvre 1 ' algorithme illustré sur la figure 2 , est donné dans le module Mod8 de l'annexe. A ce programme sont associés, comme indiqué précédemment, deux programmes, du type de ceux donnés dans les modules Mod6 et Mod7 de l'annexe. Il s'agit des programmes permettant respectivement d'activer le module de conversion 5 du premier ordinateur (module Mod9 de l'annexe) et du module permettant d'activer le second ordinateur M2 (module ModlO de l'annexe).An example program, making it possible to implement the algorithm illustrated in FIG. 2, is given in module Mod8 of the appendix. To this program are associated, as indicated previously, two programs, of the type of those given in the Mod6 and Mod7 modules of the appendix. These are the programs allowing respectively to activate the conversion module 5 of the first computer (Mod9 module of the appendix) and the module allowing to activate the second computer M2 (ModlO module of the appendix).
Dans cette invention, la définition des données scalaires doit être prise dans son sens large, c'est-à-dire en tant qu'unités de base. Dans ces conditions, la notion de codage doit également être prise dans son sens le plus large, c'est- à-dire en tant que procédé (ou mode) destiné à ordonner des unités scalaires. Le codage pourra donc être forcé ou initié par un utilisateur, en tant que de besoins.In this invention, the definition of scalar data must be taken in its broad sense, that is to say as basic units. Under these conditions, the notion of coding must also be taken in its broadest sense, that is to say as a method (or mode) intended to order scalar units. Coding can therefore be forced or initiated by a user, as needed.
L'invention ne se limite pas aux modes de réalisation de dispositif et de procédé décrits ci-avant, seulement à titre d'exemple, mais elle englobe toutes les variantes que pourra envisager l'homme de l'art dans le cadre des revendications ci-après.
Ainsi, on a décrit un dispositif et le procédé associé dans lesquels le second jeu de symboles (représentatif du second arrangement) était constitué d'une suite de n éléments, tous distincts et de valeurs croissant de 1 à n. Mais, il est clair que toute autre suite de n éléments distincts pourra être utilisée.
The invention is not limited to the embodiments of the device and method described above, only by way of example, but it encompasses all the variants that a person skilled in the art may envisage within the framework of the claims below. -after. Thus, a device and the associated method have been described in which the second set of symbols (representative of the second arrangement) consisted of a series of n elements, all distinct and with values increasing from 1 to n. However, it is clear that any other series of n distinct elements can be used.
AnnexeAnnex
* Modl :* Modl:
Typedef longlong IlonglongTypedef longlong Ilonglong
Typedef unsigned int UI32Typedef unsigned int UI32
#dβf ine _max_sizθ_typβ 255# dβf ine _max_sizθ_typβ 255
B8 θitβrnal_coding[_ ax_sizβ_typβ] [_πιax_sizβ_typβ] ; B8 intθrnal_coding[_ ax_3izβ_typβ] [_max_sizθ_typθ] ; UI32 pβπButL_œax_sizβ_typβ] Lιnax_sizθ_typθD ;B8 θ itβrnal_coding [_ ax_sizβ_typβ] [_πιax_sizβ_typβ]; B8 intθrnal_coding [_ ax_3izβ_typβ] [_max_sizθ_typθ]; UI32 pβπButL_œax_sizβ_typβ] Lιnax_sizθ_typθD;
* Mod2 :* Mod2:
τoid inlt_peπnαt_c ar(String tab.int) { tab_int[0]-l ; >τoid inlt_peπnαt_c ar (String tab.int) {tab_int [0] -l; >
«definβ gêner θ_perαut (typ) \ τόîd inlt.perαα _ #t typ t# (String tab.int) \ { \ typ rββ*l; \“Definβ hinder θ_perαut (typ) \ τόîd inlt.perαα _ #t typ t # (String tab.int) \ {\ typ rββ * l; \
pov**inc;\ res+« (top) *pow ; \ tπp++; \ >\ memcpyCCvoid *)tab_int, (void *) (très) ,sizeof (typ)) ;\ pov ** inc; \ res + «(top) * pow; \ tπp ++; \> \ memcpyCCvoid *) tab_int, (void *) (very), sizeof (typ)); \
generθ.peπαut (short) genβre.pθrααt (int) geaere_peraut (long) genere.permut (Ilonglong)
void set _permutation_0 (String int_coding,const UI32 sz)generθ.peπαut (short) genβre.pθrααt (int) geaere_peraut (long) genere.permut (Ilonglong) void set _permutation_0 (String int_coding, const UI32 sz)
{ if(sz≈≈sizeof(char)H init_permut_char(int_coding) ;{if (sz≈≈sizeof (char) H init_permut_char (int_coding);
> if (sz≈sizeof (short) ){ init_permut_short(int_coding) ;> if (sz≈sizeof (short)) {init_permut_short (int_coding);
> if (sz*"sizeof (int) ) i init_peπmιt_int(int_coding) ; y if(sz≈≈sizeof(long))-C init_pβπnut_long(iαt_coding) ;> if (sz * "sizeof (int)) i init_peπmιt_int (int_coding); y if (sz≈≈sizeof (long)) - C init_pβπnut_long (iαt_coding);
> if (sz«sizeof (Ilonglong) ) { init_permut_Ilonglong(int_coding) ;> if (sz "sizeof (Ilonglong)) {init_permut_Ilonglong (int_coding);
>>
void sβt_pem-utations_00 Cvoid sβt_pem-utations_00 C
UI32 i-1 ; vhile (i<=maxsize_prot) { set .permutât ion.0(fc (int ernal_coding[i] [0]) ,i) ; i*-2;UI32 i-1; vhile (i <= maxsize_prot) {set .permutât ion.0 (fc (int ernal_coding [i] [0]), i); i * 2;
>>
/* nazsize_prot dé init la taille maximale des entiers devant être considères par le protocole *// * nazsize_prot init init the maximum size of the integers to be considered by the protocol * /
void set_exchangβ_0() <void set_exchangβ_0 () <
UI32 i-l.j ; vhile (i<=maxsize_prot) -C for(j=0;j<i;j++H external_coding[i] [j]=j+l ; > i*»2;
* Mθd3 :UI32 il.j; vhile (i <= maxsize_prot) -C for (j = 0; j <i; j ++ H external_coding [i] [j] = j + l;> i * »2; * Mθd3:
UI32 find_elem(B8 elt, String tab,const UI32 sz) {UI32 find_elem (B8 elt, String tab, const UI32 sz) {
UI32 i*0; vhile ((i<sz) ftft ((tab[i]) !-(elt))) i++; return(i) ; >UI32 i * 0; vhile ((i <sz) ftft ((tab [i])! - (elt))) i ++; return (i); >
void define_permutation(String int .coding, String ezt.coding.void define_permutation (String int .coding, String ezt.coding.
UI32 ** peπα_ coding, const UI32 sz)UI32 ** peπα_ coding, const UI32 sz)
-C-VS
UI32 i; if ( strncmp ( int.codin , ext .codin , sz) ) . permnt.type [sz] *NEED_PERlfuT; for(i»0;i<sz;i++) {UI32 i; if (strncmp (int.codin, ext .codin, sz)). permnt.type [sz] * NEED_PERlfuT; for (i "0; i <sz; i ++) {
(*peπa_coding) [i]=f ind_elem(int_coding[i3 , ezt.coding, sz) ; > > else pertπut_type[sz]«HO_PERMϋT; } (* peπa_coding ) [i] = f ind_elem (int_coding [i3, ezt.coding, sz); >> else pertπut_type [sz] "HO_PERMϋT; }
void C initProtocolOvoid C initProtocolO
{{
UI32 i-1; UI32 *ptr; set .exchange.O ()UI32 i-1; UI32 * ptr; set .exchange.O ()
C initProtocol_0() ; vhile
{ ptr=k (permut [i] [0] ) ; def ine_perπιαtation(fc(internal_coding[i] [0]) , external_coding[i3 ,fcptr,i) ; i*-2;C initProtocol_0 (); vhile {ptr = k (permut [i] [0]); def ine_perπιαtation (fc (internal_coding [i] [0] ) , external_coding [i3, fcptr, i ) ; i * 2;
>
* Mod4 : void reordβr.UI (const UI32 sz, String m) i UI32 i; static B8 tmp jnax.Bize.type] ; UI32 *permut_tmp~NULL; if (permut .type [sz] ≈HEED.PEBMUT) {. permut _tmp«* (permut [sz] [0] ) ; for(i=0;i<sz;i++H tmp[i]*m [permut _tmp[i]] ;> * Mod4: void reordβr.UI (const UI32 sz, String m) i UI32 i; static B8 tmp jnax.Bize.type]; UI32 * permut_tmp ~ NULL; if (permut .type [sz] ≈HEED.PEBMUT) {. permut _tmp "* (permut [sz] [0]); for (i = 0; i <sz; i ++ H tmp [i] * m [permut _tmp [i]];
> for (i«0 ; i<sz ; i++) { m[i]=tmp[i] ; > } >> for (i "0; i <sz; i ++) {m [i] = tmp [i]; >}>
* Mod5 : void conv_nachine_2.prot_UI (const UI32 sz, String p.Cste.String m) i.* Mod5: void conv_nachine_2.prot_UI (const UI32 sz, String p.Cste.String m) i.
U132 i;U132 i;
permut _tmp*fc (permut [sz] [0] ) ; f or (i«0 ; i<sz ; i++) -C p [permut _tmp [i] ] *m[i] ; permut _tmp * fc (permut [sz] [0]); f or (i "0; i <sz; i ++) -C p [permut _tmp [i]] * m [i];
> > else { for(i-0;i<sz;i++){ p[i]^[i] ; > > >>> else {for (i-0; i <sz; i ++) {p [i] ^ [i]; >>>
* Mod6 :* Mod6:
*/ int jnain(int argc, char** argv)* / int jnain (int argc, char ** argv)
UI32 te-123 ,re*0;UI32 te-123, re * 0;
/* ouvre le canal de communication et lance le serveur *// * open the communication channel and start the server * /
BUS GB*creat eBuβ (argv [1] , argv [2] ) ;BUS GB * creat eBuβ (argv [1], argv [2]);
C initProtocolO ;C initProtocolO;
Bβndjα(sizeof (UI32) ,GB , (char *) (fcte) , 1) ; read_n(sizeof (UI32) ,GB , (char *) (axe) , 1) ; fprintf (stderr , » 'Xu* ' ,te) ; fprintf (stderr , » 'Xu* ' ,re) ;Bβndjα (sizeof (UI32), GB, (char *) (fcte), 1); read_n (sizeof (UI32), GB, (char *) (axis), 1); fprintf (stderr, »'Xu *', te); fprintf (stderr, »'Xu *', re);
/*
* Mod7 :/ * * Mod7:
*/ int main(int argc, char** argv) i* / int main (int argc, char ** argv) i
UI32 te«0;UI32 te "0;
/* ouvre le canal de communication et lance le Bβrveur */
/ * open the communication channel and launch the Bβrveur * /
C initProtocolO ; rβad_n(sizeof(UI32) ,GB, (char *) (ftte) ,1) ; sβnd_n(sizeof (UI32) ,GB, (char *) (ftte) ,1) ;C initProtocolO; rβad_n (sizeof (UI32), GB, (char *) (ftte), 1); sβnd_n (sizeof (UI32), GB, (char *) (ftte), 1);
* Mod8 :* Mod8:
void C rβinitProtocolOvoid C rβinitProtocolO
UI32 i-1; UI32 *ptr; set .θxchange.O () C__initProtόcoi«.d() ; vhile (i<=maxsize_prot) ptr≈fc (permut [i] [0] ) ;UI32 i-1; UI32 * ptr; set .θxchange.O () C__initProtόcoi «.d (); vhile (i <= maxsize_prot) ptr≈fc (permut [i] [0]);
* Mod9 :* Mod9:
*/ int main (int argc, char** argv) i.* / int main (int argc, char ** argv) i.
UI32 te*1234,re-0;UI32 te * 1234, re-0;
/* taille maximale d'entiers supportée par ce processeur *// * maximum size of integers supported by this processor * /
B8 maxsizθ_loc«sizeof (long) ;B8 maxsizθ_loc "sizeof (long);
/• taille maximale d'entiers supportée par le client *// • maximum size of integers supported by the client * /
B8 maxsize_ext~0 ;B8 maxsize_ext ~ 0;
/* ouvre le canal de communication et lance le serveur */ BUS GB*ereateBus(argv[l] ,argv[2]) ;/ * open the communication channel and launch the server * / BUS GB * ereateBus (argv [l], argv [2]);
/* initialisation par dé ut du protocole */ C initProtocolO ;/ * initialization via protocol ut / * initProtocolO;
read_n(l,GB, (char *) C&Cmaxsize.ext)) ,1) ; send_n(l,GB, (char *) (fc(maxsize.loc)) ,1) ; /* calcul de la taille maximale d'entiers supportée par le protocole */
maxsize_prot=min(maxsize.loc ,maxsizθ_ext) ;read_n (l, GB, (char *) C & Cmaxsize.ext)), 1); send_n (l, GB, (char *) (fc (maxsize.loc)), 1); / * calculation of the maximum size of integers supported by the protocol * / maxsize_prot = min (maxsize.loc, maxsizθ_ext);
/* réception du codage interne pour la machine sur laquelle onctionne le serveur des entiers admissible pour le protocole, affectation au codage d'échange/ * reception of the internal coding for the machine on which the integer server running is eligible for the protocol, allocation to the exchange coding
*/ f or (i≈l ; i<=( (UI32)maxsize_prot) ; i**2H read_n(l,GB, (char *) (fc(external_coding[i] [0])) ,i) ;* / f or (i≈l; i <= ((UI32) maxsize_prot); i ** 2H read_n (l, GB, (char *) (fc (external_coding [i] [0])), i);
>>
/* re-initialisation du protocole avec le nouveau format d'échange */ C reinitProtocolO ; /* envoi des commandes *// * re-initialization of the protocol with the new exchange format * / C reinitProtocolO; / * sending orders * /
8βnd_n(sizeof(UI32) ,GB, (char *) (fcte) ,1) ;8βnd_n (sizeof (UI32), GB, (char *) (fcte), 1);
/* lecture du résultat •/ read_n(sizeof(UI32) ,GB, (char *) (axe) ,1) ; fprintf(stderr, ' 'ta" ,te) ; fprintf(stderr, "%u" ,re) ;/ * reading the result • / read_n (sizeof (UI32), GB, (char *) (axis), 1); fprintf (stderr, '' ta ", te); fprintf (stderr,"% u ", re);
* Mod 10 :* Mod 10:
• int main(int argc, char** argv) i
• int main (int argc, char ** argv) i
/* taille maximale d'entiers supportée par ce processeur *// * maximum size of integers supported by this processor * /
B8 maxsize_locs8izeof(long);B8 maxsize_loc s 8izeof (long);
/* taille maximale d'entiers supportée par le .client */ B8 maxsize_ext*0;/ * maximum size of integers supported by the .client * / B8 maxsize_ext * 0;
/* ouvre le canal de communication et lance le serveur *// * open the communication channel and start the server * /
BUS GB*createBus(argv[l] , arg [2]) ;BUS GB * createBus (argv [l], arg [2]);
/* initialisation par défaut du protocole */ C initProtocolO; send_n(l,GB, (char *) (c(maxsize_loc)) ,1) ; read_n(l,GB, (char *) (sdαaxsize.ext)) ,1) ;
/* calcul de la taille maximale d'entiers supportée par le protocole
naxsizθ_prot=min(max8izθ_loc ,maxsize_ext> ;/ * initialization of the protocol by default * / C initProtocolO; send_n (l, GB, (char *) (c (maxsize_loc)), 1); read_n (l, GB, (char *) (sdαaxsize.ext)), 1); / * calculation of the maximum size of integers supported by the protocol naxsiz θ _prot = min (max8izθ_loc, maxsize_ext>;
* envoi du codage interne pour cette machine des entiers admissible pour le protocole */ f or (i«l ; i<=( (UI32)maxsize.prot) ; i*-2){ sendjι(l,GB, (char *) (ft(internal_coding[i] [0] )) ,i) ;* sending of the internal coding for this machine of the integers admissible for the protocol * / f or (i " l; i <= ((UI32) maxsize.prot); i * -2) {sendjι ( l, GB, ( char * ) (ft (internal_coding [i] [0])), i);
> f* on affecte au format d'échange le format interne deβ entiers admissibles pour le protocole> f * the internal format of integers β admissible for the protocol is assigned to the exchange format
*/ forCi-l;i<»CCUT32)maxsizβ_prot) ;i**2) { forCj-0;j<i;j++) { external.codingCi] [j]≈internal_coding[i] [j] ; > }* / forCi-l; i <»CCUT32) maxsizβ_prot); i ** 2) {forCj-0; j <i; j ++) {external.codingCi] [j] ≈internal_coding [i] [j]; >}
/* re-initialisation du protocole avec le nouveau format d'échange */ C reinitProtocolC) ; /* lecture des commandes */ read_n(l,GB,(char *)(ft(te)),l) ; te++;/ * re-initialization of the protocol with the new exchange format * / C reinitProtocolC); / * read commands * / read_n (l, GB, (char *) (ft (te)), l); you ++;
/* renvoit du résultat */ send_n(sizeof (UI32) ,GB, (char *) (fctβ) ,1) ;
/ * returns the result * / send_n (sizeof (UI32), GB, (char *) (fctβ), 1);