EP1190332A1 - Dispositif de gestion d'echanges de donnees entre materiels informatiques - Google Patents

Dispositif de gestion d'echanges de donnees entre materiels informatiques

Info

Publication number
EP1190332A1
EP1190332A1 EP00946003A EP00946003A EP1190332A1 EP 1190332 A1 EP1190332 A1 EP 1190332A1 EP 00946003 A EP00946003 A EP 00946003A EP 00946003 A EP00946003 A EP 00946003A EP 1190332 A1 EP1190332 A1 EP 1190332A1
Authority
EP
European Patent Office
Prior art keywords
symbols
arrangement
data
primary elementary
coding
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.)
Withdrawn
Application number
EP00946003A
Other languages
German (de)
English (en)
Inventor
Fabrice Rouillier
Jean-Charles Faugere
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institut National de Recherche en Informatique et en Automatique INRIA
Original Assignee
Institut National de Recherche en Informatique et en Automatique INRIA
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institut National de Recherche en Informatique et en Automatique INRIA filed Critical Institut National de Recherche en Informatique et en Automatique INRIA
Publication of EP1190332A1 publication Critical patent/EP1190332A1/fr
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • G06F7/768Data position reversal, e.g. bit reversal, byte swapping
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4013Coupling between buses with data restructuring with data re-ordering, e.g. Endian conversion
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4009Coupling between buses with data restructuring
    • G06F13/4018Coupling between buses with data restructuring with data-width conversion

Definitions

  • 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.
  • the data are generally stored in the form of "packets" of k bits (binary information) in registers with a capacity of (n * k) bits.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • the invention therefore aims to improve the situation in terms of data exchange.
  • 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.
  • a primary elementary datum such as an integer
  • This provides a fully configurable and dynamic converter.
  • the invention finds a particularly interesting application when first and second hardware wish to exchange primary elementary data.
  • 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).
  • 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)).
  • 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;
  • the operator 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.
  • the device according to the invention can be configured independently of the architectures of the equipment wishing to exchange data.
  • FIG. 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;
  • FIG. 2 is an algorithm describing an embodiment of the method according to the invention.
  • FIG. 1 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.
  • 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.
  • FIG. 1 does not represent the prior art as such, but that it makes it possible to present the elements
  • 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).
  • 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 coding of a 32-bit integer is the result of the coefficients of its base decomposition ⁇ 2 k ⁇ , ordered according to the decreasing powers.
  • 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.
  • a conversion module 5 is conventionally provided, generally installed in the form of software (or program) on the hard disk of each computer.
  • the conversion module can be produced in the form of an electronic circuit.
  • 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.
  • 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 .
  • 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.
  • the hardware is substantially homogeneous, so that the external encodings they use are identical.
  • 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).
  • a secondary datum generally an integer E
  • the encoding then consists in forming the secondary data:
  • 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.
  • 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.
  • the XDR software continues to perform its double conversion when the two materials are identical.
  • the invention provides a solution to this drawback.
  • microprocessors or even different software, possibly- They are all installed in the same machine (or computer), but operating according to different internal codings.
  • 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).
  • 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.
  • 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.
  • 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.
  • the symbol sets consist of an ordered sequence of n components which characterize, as indicated above, the first and second arrangements.
  • 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.
  • 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.
  • 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.
  • the microprocessor 1 of the computer M1 is of the 32-bit SPARC type
  • the microprocessor 1 ′ of the second computer M2 is of the 64-bit ALPHA type.
  • 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.
  • 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.
  • each part of the interrogation module 9-1 and 9-2 can be produced in the form of electronic circuits.
  • the entire interrogation module 9 is located on the first computer M1.
  • 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.
  • 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).
  • n is less than 2 k , the general case can be easily treated by composing the methods (or operating modes).
  • permutation ⁇ 2 kn amounts to constructing a noted table, for k fixed, permut, such that permut [n] is the ordered list representing ⁇ mkn .
  • 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.
  • 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.
  • the aforementioned ordered lists form tables.
  • the internal_coding [i] table is equal to M- ⁇ g ⁇ E) which varies depending on the computer (or machine considered).
  • the integer scalar having the largest admissible size in the C language; in general it is the largest integer understandable by machine or hardware.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • this implementation is linked to the language used, here the C language.
  • a transposition to another computer language can be easily obtained.
  • 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.
  • 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.
  • 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 .
  • the device according to the invention can also be adapted to the exchange of data between hardware having different external codings.
  • the device dynamically calculates a common external coding, which amounts to not a priori fixing a data exchange format.
  • 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.
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 ..
  • 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 ′.
  • 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.
  • 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.
  • module Mod8 of the appendix 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).
  • scalar data must be taken in its broad sense, that is to say as basic units.
  • 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.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Un dispositif de conversion de données comprend des moyens de mémorisation (7) pour stocker des premier et second jeux de symboles, tous distincts, formant des représentations d'un premier arrangement de mots, codant individuellement des données élémentaires primaires, et d'un second jeu de symboles tous distincts, formant une représentation d'un second arrangement de mots. Il comprend en outre en outre un opérateur (8) qui reçoit les premier et second jeux de symboles et une donnée élémentaire primaire pour effectuer sur cette donnée élémentaire primaire des transformations de mots définies uniquement par les premier et second jeux de symboles de manière à fournir une donnée secondaire équivalente.

Description

Dispositif de gestion d'échanges de données entre matériels informatiques
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 .
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.
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.
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).
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.
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 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).
Dans cet exemple, on s'aperçoit qu'une permutation des coefficients différencie les deux codages internes.
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.
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) .
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.
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.
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.
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.
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.
En résumé, aucune solution connue n'apporte une entière satisfaction en matières de rapidité, d'efficacité et d'adaptabilité.
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.
On dispose ainsi d'un convertisseur entièrement paramétrable et dynamique.
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).
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)).
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;
* 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;
* 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 :
- 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.
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 .
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.
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 :
- 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
- la figure 2 est un algorithme décrivant un mode de réalisation du procédé selon l'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.
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.
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.
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éments
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) .
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.
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.
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.
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.
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.
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.
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.
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.
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))
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.
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).
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 ) )
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 :
Dk,n,(E) = •ιfk,n<Mlfkfn<=>>
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.
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 :
D2,k,n(E) - Φ2,k,n(M2,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) )
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.
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.
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.
Cette double conversion ralentit énormément (au moins d'un facteur deux (2) les vitesses de traitement des données.
L'invention vient apporter une solution à cet inconvénient.
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.
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.
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 ) .
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.
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.
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.
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.
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.
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.
De la sorte, on réalise un module de conversion perfectionné totalement configurable, et adaptable à tout type de matériel.
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.
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.
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.
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.
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.
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.
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).
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.
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
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.
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.
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.
Pour une valeur i fixée, on construit l'entier E = 1 + 2*2k + ... + 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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.
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é.
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) .
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.
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.
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.
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.
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..
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.
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.
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 .
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.
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).
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.
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.
Annexe
* Modl :
Typedef longlong Ilonglong
Typedef unsigned int UI32
#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 ;
* Mod2 :
τ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; \
pov**inc;\ res+« (top) *pow ; \ tπp++; \ >\ memcpyCCvoid *)tab_int, (void *) (très) ,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)
{ if(sz≈≈sizeof(char)H init_permut_char(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 (Ilonglong) ) { init_permut_Ilonglong(int_coding) ;
>
void 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;
>
/* nazsize_prot dé init la taille maximale des entiers devant être considères par le protocole */
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 find_elem(B8 elt, String tab,const UI32 sz) {
UI32 i*0; vhile ((i<sz) ftft ((tab[i]) !-(elt))) i++; return(i) ; >
void define_permutation(String int .coding, String ezt.coding.
UI32 ** peπα_ coding, const UI32 sz)
-C
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; }
void C initProtocolO
{
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;
> * 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] ; > } >
* Mod5 : void conv_nachine_2.prot_UI (const UI32 sz, String p.Cste.String m) i.
U132 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] ; > > >
* Mod6 :
*/ int jnain(int argc, char** argv)
UI32 te-123 ,re*0;
/* ouvre le canal de communication et lance le serveur */
BUS GB*creat eBuβ (argv [1] , argv [2] ) ;
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) ;
/* * Mod7 :
*/ int main(int argc, char** argv) i
UI32 te«0;
/* ouvre le canal de communication et lance le Bβrveur */
C initProtocolO ; rβad_n(sizeof(UI32) ,GB, (char *) (ftte) ,1) ; sβnd_n(sizeof (UI32) ,GB, (char *) (ftte) ,1) ;
* Mod8 :
void C rβinitProtocolO
UI32 i-1; UI32 *ptr; set .θxchange.O () C__initProtόcoi«.d() ; vhile (i<=maxsize_prot) ptr≈fc (permut [i] [0] ) ;
* Mod9 :
*/ int main (int argc, char** argv) i.
UI32 te*1234,re-0;
/* taille maximale d'entiers supportée par ce processeur */
B8 maxsizθ_loc«sizeof (long) ;
/• taille maximale d'entiers supportée par le client */
B8 maxsize_ext~0 ;
/* ouvre le canal de communication et lance le serveur */ BUS GB*ereateBus(argv[l] ,argv[2]) ;
/* initialisation par dé ut du protocole */ C 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) ;
/* réception du codage interne pour la machine sur laquelle onctionne le serveur des entiers admissible pour le protocole, affectation au codage d'échange
*/ 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 */
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) ;
* Mod 10 :
• int main(int argc, char** argv) i
/* taille maximale d'entiers supportée par ce processeur */
B8 maxsize_locs8izeof(long);
/* taille maximale d'entiers supportée par le .client */ B8 maxsize_ext*0;
/* ouvre le canal de communication et lance le serveur */
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> ;
* 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) ;
> f* on affecte au format d'échange le format interne deβ entiers admissibles pour le protocole
*/ 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++;
/* renvoit du résultat */ send_n(sizeof (UI32) ,GB, (char *) (fctβ) ,1) ;

Claims

Revendications
1. Dispositif de conversion de données, destiné à travailler sur des données élémentaires primaires codées individuel- lement selon un premier arrangement de mots, caractérisé en ce qu'il comprend :
* des moyens de mémorisation (7) pour stocker un premier jeu de symboles, tous distincts, formant une représentation dudit premier arrangement et un second jeu de symboles tous distincts, formant une représentation d'un second arrangement de mots, et
* un opérateur ( 8 ) agencé pour recevoir en entrée une donnée élémentaire primaire, ainsi que lesdits premier et second jeux de symboles, et pour effectuer sur cette donnée élémen- taire primaire des transformations de mots définies uniquement par lesdits premier et second jeux de symboles de manière à fournir en sortie une donnée secondaire correspondante et équivalente à ladite donnée élémentaire primaire.
2. Dispositif selon la revendication 1, dans lequel un premier matériel (1) délivre lesdites données élémentaires primaires codées selon ledit premier arrangement, et un moyen de conversion (5') délivre des données secondaires codées selon un troisième arrangement, après conversion de données élémentaires primaires codées selon un quatrième arrangement par un second matériel ( 1 ' ) , lesdits matériels (1,1') désirant échanger des données élémentaires primaires, caractérisé en ce que ledit opérateur (8) comprend des moyens d'interrogation (9) agencés pour : * fournir audit second matériel (1') un message contenant ledit second jeu de symboles et requérant l'envoi en retour audit opérateur (8) d'une donnée élémentaire primaire, transformée dudit second jeu de symboles par codage selon ledit quatrième arrangement, * déduire de cette donnée élémentaire primaire ainsi que des premier et second jeux de symboles un troisième jeu de symboles formant une représentation dudit quatrième arrangement, * remplacer ledit second jeu de symboles par ledit troisième jeu de symboles, dans ledit opérateur (8) et dans ledit moyen de conversion (5'), de sorte qu'en cas d'émission d'une donnée élémentaire primaire codée selon le premier, respecti- vement quatrième, arrangement et destinée audit second, respectivement premier, matériel, ledit opérateur (8) délivre à celui-ci, directement, une donnée élémentaire primaire codée selon le quatrième, respectivement premier arrangement.
3. Dispositif selon la revendication 2, caractérisé en ce que lesdits premier, second et troisième jeux de symboles sont des suites ordonnées de nombres.
4. Dispositif selon la revendication 3, caractérisé en ce que ledit second jeu de symboles est la suite [1, 2, 3,..., n-1, n], n étant le nombre de composantes d'une base sur laquelle la donnée secondaire est décomposée en mots de k bits, k étant supérieur ou égal à 1, et en particulier égal à 8.
5. Dispositif selon l'une des revendications 2 à 4, caractérisé en ce que lesdits second et troisième arrangements sont identiques.
6. Dispositif selon l'une des revendications 2 à 4, caractérisé en ce que lesdits second et troisième arrangements sont différents et sont associés à des jeux de symboles comportant des nombres de mots différents et/ou des mots de nombre de bits différents, et en ce que ledits moyens d'interrogation sont agencés pour adresser audit moyen de conversion (5') au moins un second jeu de symboles de sorte qu'il soit substitué audit troisième arrangement.
7. Dispositif selon la revendication 6, caractérisé en ce que lesdits moyens de mémorisation (7) stockent plusieurs seconds jeux de symboles comportant des nombres nA de mots différents et/ou de mots de nombre k± de bits différents, et en ce que lesdits moyens d'interrogation (9) sont agencés pour fournir audit second matériel (1'), par voie de message, un nombre choisi de premiers jeux de symboles différents.
8. Dispositif selon l'une des revendications 2 à 7, dans lequel ledit premier matériel ( 1 ) est implanté dans une première machine (Ml), en particulier un ordinateur, caractérisé en ce que lesdits moyens de mémorisation (7) et une partie au moins dudit opérateur (8,9-1) sont implantés dans ladite première machine.
9. Dispositif selon la revendication 8, caractérisé en ce que lesdits moyens de mémorisation (7) et une partie (8, 9-1) au moins dudit opérateur sont implantés sous forme d'un programme dans ladite première machine (Ml).
10. Dispositif selon l'une des revendications 8 et 9, dans lequel ledit second matériel ( 1 ' ) et ledit moyen de conversion (5) sont implantés dans une seconde machine (M2), en particulier un ordinateur, caractérisé en ce qu'une première partie (9-1) desdits moyens d'interrogation est implantée dans ladite première machine, tandis qu'une seconde partie ( 9-2 ) complémentaire est implantée dans ladite seconde machine (M2).
11. Dispositif selon la revendication 10, caractérisé en ce que lesdits moyens d'interrogation (9-2) sont implantés sous forme d'un programme.
12. Dispositif selon la revendication 11, caractérisé en ce que ledit opérateur (8) est agencé pour implanter ladite seconde partie (9-2) des moyens d'interrogation dans ladite seconde machine (M2) lorsque ledit premier matériel tente, pour la première fois, d'échanger des données élémentaires primaires avec ledit second matériel ( 1 ' ) .
13. Procédé de conversion de données élémentaires primaires codées individuellement selon un premier arrangement de mots, caractérisé en ce qu'il comprend les étapes suivantes : a) prévoir un premier jeu de symboles, tous distincts, formant une représentation dudit premier arrangement et un second jeu de symboles tous distincts, formant une représentation d'un second arrangement de mots, et b) recevoir une donnée élémentaire primaire, ainsi que lesdits premier et second jeux de symboles, et c) effectuer sur cette donnée élémentaire primaire des transformations de mots définies uniquement par lesdits premier et second jeux de symboles de manière à fournir en sortie une donnée secondaire correspondante et équivalente à ladite donnée élémentaire primaire.
14. Procédé selon la revendication 13, dans lequel on reçoit d'un premier matériel une donnée élémentaire primaire codée selon ledit premier arrangement, et d'un moyen de conversion une donnée secondaire codée selon un troisième arrangement, issue de la conversion d'une donnée élémentaire primaire codée selon un quatrième arrangement par un second matériel, caractérisé en ce qu'à l'étape b) : * on fournit audit second matériel un message contenant ledit second jeu de symboles et requérant l'envoi en retour d'une donnée élémentaire primaire, transformée dudit premier jeu de symboles par codage selon ledit quatrième arrangement, puis
* on déduit de cette donnée élémentaire primaire ainsi que des premier et second jeux de symboles un troisième jeu de symboles formant une représentation dudit quatrième arrangement, et
* on remplace partout ledit second jeu de symboles par ledit troisième jeu de symboles, de sorte qu'en cas d'émission d'une donnée élémentaire primaire codée selon le premier, respectivement quatrième, arrangement et destinée audit second, respectivement premier, matériel, on délivre à celui- ci, directement, une donnée élémentaire primaire codée selon le quatrième, respectivement premier arrangement.
EP00946003A 1999-06-25 2000-06-23 Dispositif de gestion d'echanges de donnees entre materiels informatiques Withdrawn EP1190332A1 (fr)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR9908172 1999-06-25
FR9908172A FR2795573B1 (fr) 1999-06-25 1999-06-25 Dispositif de gestion d'echanges de donnees entre materiels informatiques
PCT/FR2000/001767 WO2001001265A1 (fr) 1999-06-25 2000-06-23 Dispositif de gestion d'echanges de donnees entre materiels informatiques

Publications (1)

Publication Number Publication Date
EP1190332A1 true EP1190332A1 (fr) 2002-03-27

Family

ID=9547323

Family Applications (1)

Application Number Title Priority Date Filing Date
EP00946003A Withdrawn EP1190332A1 (fr) 1999-06-25 2000-06-23 Dispositif de gestion d'echanges de donnees entre materiels informatiques

Country Status (3)

Country Link
EP (1) EP1190332A1 (fr)
FR (1) FR2795573B1 (fr)
WO (1) WO2001001265A1 (fr)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07505972A (ja) * 1992-12-21 1995-06-29 オリヴェッティ・アドヴァンスト・テクノロジー・センター・インコーポレーテッド 異なるバイト順序を有する要素間の通信を容易にする装置,システム及び方法
US5627975A (en) * 1994-08-02 1997-05-06 Motorola, Inc. Interbus buffer for use between a pseudo little endian bus and a true little endian bus
US5928349A (en) * 1995-02-24 1999-07-27 International Business Machines Corporation Mixed-endian computing environment for a conventional bi-endian computer system
US6351750B1 (en) * 1998-10-16 2002-02-26 Softbook Press, Inc. Dynamic conversion of byte ordering for use on different processor platforms

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO0101265A1 *

Also Published As

Publication number Publication date
FR2795573A1 (fr) 2000-12-29
WO2001001265A1 (fr) 2001-01-04
FR2795573B1 (fr) 2001-11-30

Similar Documents

Publication Publication Date Title
US10216580B1 (en) System and method for mainframe computers backup and restore on object storage systems
FR2824215A1 (fr) Procede et dispositif de traitement d&#39;un message dans un reseau de communication
FR3100631A1 (fr) Méthode d’authentification sélective d’un utilisateur de chaine de blocs auprès d’un contrat intelligent
EP3242243B1 (fr) Procédé de sauvegarde et de restauration de données d&#39;un élément sécurisé
CN113841141A (zh) 用于加密包的安装时按规程内容生成
EP1774484A1 (fr) Enregistrement d&#39;une cle dans un circuit integre
JP7289081B2 (ja) フォーマット保持暗号化を通じて透かしを入れるための方法
FR2923042A1 (fr) Systeme pour le deploiement de composants logiciels sur des unites de calcul limitees en capacite de traitement.
EP1190332A1 (fr) Dispositif de gestion d&#39;echanges de donnees entre materiels informatiques
EP0251861B1 (fr) Unité de gestion de mémoire
EP3147811B1 (fr) Stockage et lecture d&#39;un code d&#39;authentification de message dans une mémoire externe
EP1141903B1 (fr) Dispositif et procede d&#39;initialisation d&#39;un programme applicatif d&#39;une carte a circuit integre
US10148285B1 (en) Abstraction and de-abstraction of a digital data stream
FR2747488A1 (fr) Dispositif d&#39;authentification d&#39;un fichier de donnees
FR2842623A1 (fr) Procede de traduction d&#39;un message d&#39;un premier langage de balisage dans un second langage de balisage
CN109240849B (zh) 数据备份方法、装置及用于视频会议系统的多点控制单元
EP1538857A2 (fr) Procédé de sauvegarde des données d&#39;un téléphone mobile
EP1506479A2 (fr) Procede pour accomplir des fonctions cryptographiques dans une application informatique
EP1721246A2 (fr) Procede et dispositif pour accomplir une operation cryptographique
EP4028888B1 (fr) Procédé de communication entre des entités logicielles via une api
US12204968B1 (en) System and method for high-capacity secure QR codes
EP3654613A1 (fr) Protocole de transmission d&#39;un flux de données transitant entre un ordinateur hôte et un client distant
US20210303330A1 (en) System for providing access to a virtual machine via a hub interface
EP1185913B1 (fr) Procede pour securiser l&#39;utilisation d&#39;un logiciel a partir d&#39;une unite de traitement et de memorisation d&#39;un secret et systyme en faisant application
EP3256948B1 (fr) Procédé d&#39;exécution d&#39;une requête d&#39;échange de données entre des premier et deuxième espaces d&#39;adressage physiques disjoints de circuits sur carte ou puce

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20011219

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE

AX Request for extension of the european patent

Free format text: AL;LT;LV;MK;RO;SI

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20060103