FR2645293A1 - Procede et dispositif pour convertir des formats de donnees par une instruction de microprocesseur - Google Patents
Procede et dispositif pour convertir des formats de donnees par une instruction de microprocesseur Download PDFInfo
- Publication number
- FR2645293A1 FR2645293A1 FR9003950A FR9003950A FR2645293A1 FR 2645293 A1 FR2645293 A1 FR 2645293A1 FR 9003950 A FR9003950 A FR 9003950A FR 9003950 A FR9003950 A FR 9003950A FR 2645293 A1 FR2645293 A1 FR 2645293A1
- Authority
- FR
- France
- Prior art keywords
- format
- data
- lines
- bit
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/76—Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
- G06F7/768—Data position reversal, e.g. bit reversal, byte swapping
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Abstract
Le microprocesseur comprend une mémoire, un décaleur circulaire permettant de décaler un double mot de donnée, ce décaleur recevant des données d'entrée sur un premier et un second bus (DSMA, DSMB) et produisant une sortie avec décalage ou rotation sur un troisième bus DSL, et des moyens d'exécution d'instruction pour modifier le format d'un élément de donnée sur 32 bits d'un premier format en un second format. Selon l'invention, les moyens d'exécution d'instruction comprennent : - un décaleur circulaire 20 comprenant une pluralité de lignes d'entrée, une pluralité de lignes de sortie, une pluralité de multiplexeurs, ces multiplexeurs reliant électriquement les bits de rang 0-7, 8-15, 16-23 et 24-31 à des positions binaires de rang 24-31, 16-23, 8-15 et 0-7, respectivement, des lignes de données de sortie lorsque lesdits multiplexeurs sont activés; - des moyens de commande, couplés à cette pluralité de multiplexeurs pour activer ceux-ci. On peut notamment convertir ainsi, par l'exécution d'une unique instruction, un format " forts en premier " vers un format " faibles en premier ".
Description
La présente invention concerne le- domaine des micropro-
cesseurs à semiconducteurs.
La présente invention se rapporte à une inrstruc-tion
d'échange d'octets qui peut être mise en oek-rú dans Il'ar-
chitecture d'un microprocesseur. Le microprocesseur utilisé avec la présente invention est le microprocesseur Intel 80486 , souvent appelé processeur 486@. Le processeur 486 est une version améliorée du microprocesseur Intel 80386 , également connu sous le nom-de processeur 356 (Intel, 80386, 386, 80486 et 486 sont des marques déposées de Intel Corporation). En général, l'information est conservé dans!. mémoire d'un système à microprocesseur sous forme de structures de données dont la longueur es_ une valeur quelconque variant, typiquement, entre 8 et 64 bits. Dans le microprocesseur 486, un "mot" est défini comme ayant une largeur de 16 bits, tandis qu'un "double mot" est défini comme ayant une largeur de 32 bits. Les mots sont conservés en mermoire sur deux octets (8 bits) consécutifs, l'octet de poids le plus faible étant à l'adresse inférieure et l'octet de poids le plus
fort étant à l'adresse supérieure. Les double mots sont con-
serves en mémoire sur quatre octets consécutifs, l'octet de poids le plus faible étant à l'adresse inférieure et i'octet
de poids le plus fort étant à l'adresse supérieure. L'a-
dresse d'un élément de donnée constitué d'un mnt ou d'un double mot est, dans le microprocesseur, l'adresse d'octet de l'octet de poids le plus faible. Ce type d'adressage, en particulier en ce qui concerne un élément de donnée en forme de double mot, est appelé procédé little-endian ou procédé "faibles en premier" de mémorisation dés types de données de taille supérieure à un octet. Tous les éléments de la famille Intel x86 utilisent le procédé "faibles en premier"
pour mémoriser les types de données.
L'autre procédé de mémorisation de ce type de données dans une mémoire d'un microprocesseur est appelé procédé big-endian ou procédé "forts en premier". Dans le procédé "forts en premier", on mémorise les données ayant les bits de poids le plus fort à l'octet présentant l'adresse la plus
2645293-
faible. Ainsi, le format "forts en premier" est le contraire du format opposé "faibles en premier". La distinction entre les deux tient simplement au point de savoir quel octet d'une quantité de plusieurs octets on affecte à.l'adresse la plus faible, et quel octet on affecte à l'adresse la plus
élevée. En format "forts en premier", comme son nom l'indi-
que, les octets de poids le plus fort viennent les premiers, c'est-à-dire que les bits de poids le plus fort se trouvent aux adresses les plus faibles. Le format de mémoire "forts en premier" est utilisé par le série d'ordinateurs 370 d'IBM ainsi que par la série de microprocesseurs 68000 fabriqués
par Motorola. En outre, de nombreux processeurs RISC (Redu-
ced Instruction Set Computer: calculateur à jeu d'instruc-
tions réduit) utilisent le format "forts en premier".
Très souvent, un programmeur souhaite former une base de données comprenant plusieurs formats mémoire de données mélangés. D'autres programmeurs souhaitent souvent envoyer sur un réseau des données depuis un ordinateur mémorisant des données entières sous un format "forts en premier" vers 2C un autre ordinateur qui mémorise les.données entières sous un format "faibles en premier". Ainsi, à un certain moment, il faut exécuter une conversion pour transformer les données
conservées dans un format mémoire en l'autre format mémoire.
Dans un environnement 16 bits, la.conversion entre
formats mémoire est directe. Un certain nombre d'instruc-
tions sont généralement disponibles dans un microprocesseur pour, simplement, faire tourner ou permuter des registres sur 8 bits. En d'autres termes, les quantités sur 8 bits qui forment l'élément de donnée sur 16 bits peuvent simplement
être permutées ou échangées.
Les permutations d'octets d'un nombre plus élevé de bits, par exemple de quantité sur 32 ou. 64 bits posent plus de problèmes. Par exemple, une méthode que peut utiliser un microprocesseur de l'art antérieur pour exécuter cette opération de permutation d'octets sur un élément de 32 bits consiste à exécuter tout d'abord une.permutation d'octets des deux octets inférieurs, puis à les faire tourner de 16 positions, puis à exécuter une seconde permutation d'octets sur les octets restants. Il faut donc trois instructions séparées pour exécuter une conversion. Chaque instruction ayant besoin de deux cycles d'horloge pour être opérée, il faut un total de six cycles d'horloge pour ia conversion complète. En outre, du fait que chaque instruction a céné-
ralement une longueur de deux à trois octets, il faut pro-
duire un volume important de code - vraisemblablement neuf octets d'instruction - pour ces trois instructions de rotation. Une autre manière de procéder consisterait à effectuer la conversion du format mémoire par des étapes consécutives de microcode. Cependant, l'utilisation du mi.crocode prendrait toujours' six cycles d'horloge ou plus, avec un nombre
important d'octets d'instructior.s. C'est pourquoi, pour exé-
cuter des conversions de format mémoire de "forts en premier" à "faibles en premier", ou vice versa, les machines connues nécessitent un volume important de mémoire interne
et grèvent notablement les perfcrmances.
Une manière de procéder différente qui est utilisée par certains processeurs RISC est appelée "brochace variable" cu pin-srrapping. Le brochage variable consiste tout simplement en une commutation statique càblée sur la carte de circuit supportant le microprocesseur. L'option de câblage variable force l'ordinateur à traiter la mémoire soit d'une façon soit d'une autre, par exemple soit sous un format "forts en premier" soit sous un format "faibles en- premier". Cette
manière de procéder par câblage possède l'inconvénient évi-
dent qu'elle est statique et donc insusceptible d'être prc-
grammée ou commandée dynamiquement par le microprocesseur ou
par l'utilisateur.
Comme on le verra, la présente invention remplace ces manières de procéder antérieures par une unique instruction de permutation d'octets capable de convertir un double mct d'un format "forts en premier" en un format "faibles en premier". Cette instruction assure une conversion rapide
entre les deux formats sans grever le matériel ou les per-
formances. On a constaté une amélioration approximative de % de la vitesse pour des programmes qui font un usage intensif de données- en format "forts en premier" lorsaue
l'on exécute ces programmes sur un processeur 486 (c'est-
à-dire une machine fonctionnant en "faibles en premier").
On va maintenant décrire une instruction spécialisée de microprocesseur optimisée pour l'exécution d'une permutation sur place d'octets sur un type de données sur 32 bits. Cette opération de permutation d'octets est particulièrement utile pour convertir des données conservées dans un format mémoire
"forts en premier" en un format mémoire "faibles en pre-
1 mier", ou vise versa. L'invention comporte-un décaleur cir-
culaire modifié qui comprend une pluralité de multiplexeurs permettant de relier sélectivement des données d'un ou plusieurs bus d'entrée à un bus de sortie. Le couplage des diverses lignes de bits des bus de données est conçu de
S manière que les bits 0-7, 8-15, 16-23 et 34-31 du bus d'en-
trée soient reliées aux bits correspondant 24-31, 16-23, 8-15 et 0-7, respectivement. Les lignes de commande reliées à chacun des multiplexeurs procurent un moyen de contrôler
l'opération de permutation d'octets.
L'i-nstructionr. de permutation d'octets que l'on décrira ici permet au programmeur de convertir des données d'un format mémoire 'forts en premier" en un format de données
"faibles en premier", et inversement, sans subir les pénali-
sations des performances que l'on rencontrait avec les microprocesseurs antérieurs. En outre, cette instruction unicue ne nécessite qu'un seul cycle d'horloge pour exécuter la conversion, tandis que les microprocesseurs de l'art antérieur nécessitaient habituellement trois instructions et
six cycles d'horloge.
La présente invention sera mieux comprise à la lecture de
ea description détaillée ci-dessous et des dessins anhexés
du mode de réalisation préféré de l'invention, aqui ne devra cependant pas être considéré comme limitant l'invention à ce mode de réalisation particulier, mais simplement pour les
besoins de l'explication et de la compréhension de l'in-
vention. La figure 1 est une comparaison entre lés formats mémoire "faibles en premier" et "forts en premier". Les deux formats
mémoire sont illustrés avec les adresses mémoire corres-
pondantes et leur numérotation des bits. Le bit de poids le plus fort est représenté par le bit 31, tandis que le bit de
poids le plus faible est le bit 0.
La figure 2 est un schéma par blocs illustrant le flux de données dans le décaleur circulaire du micrc-crocesseur de
l'invention.
Les figures 3A à 3L, considérées dans leur ensemble, correspondent à un schéma de circuit du décaleur circulaire utilisé dans le mode de réalisat. on actuellement préféré de
la présente invention.
La figure 4 montre le schéma du circuit pour le multiplexeur 4x4 utilisé dans le décaleur circulaire de la
ficure 3.
2^
Cn va décrire un r. m-croprocesseur comprenant une instruc-
tion de permutation d'octets servant à convertir les formats
de données mémoire d'un type en un autre. Dans la des-
cription qui va suivre, on donnera de nombreux détails particuliers tels que des longueurs en nombre de bits, etc. afin de permettre une compréhension complête de la présente
invention. Il est bien entendu évident pour l'homme du mé-
tier que ces détails particuliers n'ont pas besoin d'être
repris pour mettre en oeuvre la présente inver.tion. Inver-
sement, des structures. et des circuits bien connus n'ont pas été décrits en détail afin de ne pas alourdir inutilement la
description de la présente invention.
La figure 1 illustre les différences entre les formats mémoire "forts en premier" et "faibles en premier" pour des doubles mots ayant une longueur de 32 bits. Sur la figure 1, aussi bien pour le format mémoire "faibles en premier" qua pour le format mémoire "forts en premier", les 32 bits de donnée ont été représentés avec le bit de poids le plus faible portant le numéro 0, le bit de poids le plus fort
pcrtant le numéro 31, et les adresses mémoire étant numé-
ro_ées en partie supérieure.
Comme illustré, chaque double mot de 32 bits est partitionné en quatre octets de 8 bits. Ceux-ci sont
désignés par les lettres majuscules A-D sur la figure 1.
Dans le format mémoire "faibles en premier", les doubles
mots sont conservés en mémoire sur quatre octets consécu-
tifs, avec l'octet de poids le plus faible placé à l'adresse inférieure et l'octet de poids le plus fort placé à l'adresse supérieure. Ceci est illustré sur la figure 1 o, pour un format mémoire "faibles en premier", les bits 0-7 sont conservés à l'adresse mémoire M, les bits 8-15 sont conservés à l'adresse mémoire M+1, les bits 16-22 sont conservés à l'adresse mémoire M+2 et les bits 24-31 sont conservés à l'adresse mémoire M+3. L'adresse d'un élément de dcnnée de double mot en format "'faibles en premier" est l'adresse d'octet de l'octet de rang inférieur (par exemple, l'adresse mémoire "M") Dans le format mémoire de données "forts en premier", les bits sont disposés en ordre inverse. En d'autres termes, une donnée en "forts en premier" est conservée avec les bits de poids le plus fort dans l'octet d'adresse inférieure, et les bits de poids le plus faible, dans l'octet d'adresse mémoire supérieure. Ainsi, comme illustré figure 1, dans un format "forts en premier", les bits 0-7 sont conservés à l'adresse mémoire M+3, les bits 8-15 sont conservés à l'adresse mémoire M+2, les bits 16-23 sont conservés à l'adresse mémoire M+1 et les bits 24-31 sont conservés à l'adresse mémoire M. L'adresse d'un élément de donnée sous forme de double mot en format mémoire "forts en premier" est
l'adresse d'octet de l'octet de poids le plus fort.
Pour exécuter une conversion d'un format mémoire "forts en premier" à un format mémoire "faibles en premier", il faut suivre le processus que l'on va indiquer. Tout d'abord, l'élément de donnée est déplacé de la mémoire vers un registre interne. Ensuite, l'octet A, correspondant aux bits 2431 en format "forts en premier", a besoin d'être l
transféré ou permuté avec le contenu de l'octet D, cor-
respondant aux bits 0-7. De la même façon, l'octet B a besoin d'être permuté avec l'octet C. Cette opération de permutation d'octets es_ exécutée, dans le mode de réalisation préféré, en utilisant le décaleur circulaire situé à l'intérieur de l'unité d'exécution des calculs sur
nombres entiers du microprocesseur. Enfin, l'élément de don-
née permuté est verrouillé dans un registre ou verrou tempo-
raire afin d'être ultérieurement réinscrit en mémoire dans
le registre source/destination.
Si l'on se réfère maintenant à la figure 2, on y a illustré un schéma par blocs montrant le flux de données dans le décaleur circulaire utilisé pour mettre en oeuvre l'instruction de permutation d'octets de la présente invention. Le déealeur circulaire 20 est un composant bien connu de la technique, et on le trouve habituellement dans la plupart des microprocesseurs. Le décaleur circulaire 20 peut effectuer un décalage/rotation d'un mot de données de N positions en une seule opération - N pouvant varier de 0 à la dimension du mot. Habituellement, le décaleur circui-_re
est utilisé pour des opérations. très diverses. Par exem-
ple, on utilise le décaleur circulaire 20 pour des ins-
tructions de décalage, des instructions de rotation, des scrutations de bits, etc. Dans ie microprocesseur de l'inventicn, li décaleur
circulaire 20 est formé de deux parties: un élément matri-
ciel 23 et un arbre 24. La matrice 23 reçoit des entrées de
données sur des bus de 32 bits 21 et 22, désignés respec-
tivement DSMA et DSbM. En général, les.données délivrées sur la ligne de bus 21 sont identiques aux données délivrées sur
la ligne de bus 22. Ceci facilite une rotation ou un déca-
lage rapide des données, comme on le verra. La matrice 23 reçoit ces entrées de données et exécute une opération de décalage par fractions de demi-octet (c'est-à-dire que l'on décale la donnée d'un multiple de 4). De cette manière, à la première étape de l'opération de décalage les données sont initialement décalées de multiples de 4 (par exemple 4, 8, 12, 16, etc.). Un décalage supplémentaire d'une quantité quelconque inférieure à 4 (c'est-à-dire comprise entre 0 et 3) est exécutée par l'arbre 24. La matrice 23 est reliée à l'arbre 24 par le bus 24 désigné DST. L'arbre 24 délivre alors au registre de sortie de _ inité arithmétique et logaique 27 une donnée de sortie sur un bus 26 de 32 bits
désigné DSL.
Si l'on se réfère maintenant aux figures 3A à 3L, on y a
représenté un schéma de circuit détaillé du décaleur cir-
culaire 20 utilisé dans le mode de réalisation actuellement préféré de la présente invention. Le décaleur circulaire 20 comporte une pluralité de lignes d'entrée verticales reliées aux lignes de bus DSMA et DSMB 21 et 22, respectivement. Ces lignes d'entrée de données sont illustrées constituées de lignes de bits individuelles DSMAO-31 et DS-BO-31. Chaque
î5 ligne est reliée aux entrées d'une pluralité de multiple-
xeurs 4x4. Par exemple, DSM31 est relié à l'entrée 14 des
multiplexeurs 42 à 49.
On a également indiqué sur les figures 3A à 3L une pluralité de lignes de sortie de données horizontales. Ces lignes de bits de données horizontales forment le bus DST25
et sont reliées aux sorties d'une pluralité de multi-
plexeurs. Les diverses lignes de bit du bus DST25 ont été représentées avec les références DST0-31 et sont reliées au registre de sortie 27 de l'unité arithmétique et logique, comme on l'a exposé à propos de la figure 2. On a représenté des lignes supplémentaires, par exemple DST35, mais comme elles sont sans rapport avec l'invention, on ne les décrira
pas). Par exemple, on a représenté DST31 relié aux multi-
plexeurs 42, 59, 68, 77, 86, 95, 104 et 113. Une commande
est appliquée à chacun des multiplexeurs du décaleur circu-
laire 20 par l'intermédiaire de lignes de commande désignées
DSMC0-22.
Chacun des multiplexeurs 41 à 119 (à l'exclusion des composants 57, 66, 75, 84, 93, 102 et 111 qui ne sont
utilisés qu'à l'égard de l'arbre 24) comprend un multi-
ziexeur à quatre broches d'entrée (par exemple Il à I4), quatre broches de sortie (par exemple 01 à 04) et une broche de co.mmande (par exemple C) . En fonctionnement, lorsque l'on applique un signal à la ligne de commande d'un multiplexeur donné, les lignes de données d'entrée sont électri;uement couplées aux lignes de données de sortie. Par exempie, lorsque la ligne d'entrée de commande du mul__tlexeur 110 reçoit un signal, les données présentent sur la broche d'entrée Il (par exemple, DSMBO)0 sont électriquement appliquées à la borne de sortie CO (par exemple, DST0). De façon semblable, les données associées aux broches I2, I3 et I4 (par exemple, DSMB!, DSMB2 et SMB;3, respectivement), sont électriquement reliées aux broches de sortie 02, 03 et
04, respectivement (par exemple DSTI, DST2 et DST3, respec-
tivement-). Ainsi, chaque multiplexeur donné situé àà l'int-é-
rieur du décaleur circulaire 20 fonctionne en tant qu'élé-
ment de commutaz on reliant des groupes d'entrée de données
à des lignes de sortie correspondantes.
Si l'on se réfere maintenant à la figure 4, on y a illustré un schéma de circuit du multiplexeur 4x4 utilisé
pour le mode de réalisation actuellement préféré de la pré-
sente invention. Ce multiplexeur ccmprend des composants à effet de champ 120-123 qui sont de préférence constitués de composants MOS à canal n ordinalres. La grille de chacun de ces transistors à effet de champ est reliée à la ligne de commande 124. Les régions de drain et de source de chaque transistor sont reliées à une paire differente de lignes 2 5 d'entrée et de sortie. Par exemple, le transistor 123 a sa source reliée à la ligne d'entrée 128 réféeencée Il, et son drain relié à la ligne de sortie 129 référencée 01. Lorsque la ligne de commande 124 reçoit un signal en l'amenant à un potentiel haut positif, il se forme un canal conducteur entre les régions de source et de drain des composants 120 à 123. Ce canal conducteur réalise une liaison électrique
entre les broches d'entrée et de sertie correspondantes.
Ainsi, un potentiel positif élevé sur la liane de commande 124 réalise une liaison électrique entre les lignes 128 et
129, 127 et 130, 126 et 131 et 125 et 132.
Le décaleur circulaire 20 du microprocesseur de l'inven-
tion est semblable aux décaleurs circulaires que l'on peut trouver dans les microprocesseurs de l'art antérieur tel que
le 80386, à l'exception du fait que certains signaux de-
commande ont été fractionnés afin de pouvoir tenir compte de la convertion de format selon la présente invention. Le signal de commande de matrice d'origine DSMC2 du processeur 386 a été fractionné en trois signaux de commande DSMC2a, DSMC2b et DSMC2c afin de faciliter la réalisation en un cycle d'horloge d'exécution de l'instruction de permutation d'octets BSWAP. En outre, le signal DSMC17 a été représenté fractionné en trois signaux DSMC17a-c. Pour des opérations C ordinaires (tout sauf une permutation d'octets BSWAP), ces lignes de commande sont fusionnées sous leur forme d'origine et le décaleur circulaire 20 opère de façon normale. Ce
n'est que lors de l'exécution de l'exécution BSWAP de permu-
tation d'octets que le fractionnement en lignes distinctes
devient important.
A la phase n l du cycle d'horloge d'exécution de l'instruction BSWAP, on n'applique que quatre des signaux de ccmmande de matrice. Tous les autres signaux de commande de la matrice sont supprimes. Les quatre signaux de la matrice 23 qui sont appliqués comprennent DSM-21 (qui multiplexe les bits 24-31 du bus DSMB sur les bits 0-7 du bus DST de sortie de la matrice), DSMC17b (qui multiplexe les bits 16 à 23 du bus DSMB sur les bits 8-15 du bus DST de sortie de la matrice), DSMC2b (qui multiplexe les bits 8 à 15 du bus DSMA sur les bits 16-23 du bus DST de sortie de la matrice) et DSMCI7c (qui multiplexe les bits 0 à 7 du bus DSMA sur les bits 24-31 du bus DST de sortie de la matrice). A la phase n 2 du cycle d'horloge d'exécution, le décaleur circulaire reçoit les entrées de données sur les bus DSMA et DSMB et
permute les octets en réalisant simplement une liaison élec-
trique appropriée entre les bus DSMA, DSMB et les lignes de
sortie DST. Ainsi, le format de données mémoire est auto-
matiquement converti soit de "forts en premier" à "faibles
en premier", soit de "faibles en premier" à "forts en pre-
mier". Les données de sortie converties par la matrice traversent l'arbre du décaleur sans décalage supplémentaire, et sont ensuite chargées dans le -verrou de sortie 27 de
l'unité arithmétique et logique.
Z1 Dans le mode de réalisation actuellement préféré, l'instruction BSWAP est constituée de deux octets d'instruction sur 8 bits. Treize des bits do l'instruction sont définis comme constituant le code d'opération, tandis que les quatre bits inférieurs du second octet spécifient le
registre devant participer à l'opération.
Un aspect important de la présente invention est que l'instruction BSWAP a le mrne effet que l'instruction qui en serait la réciproque, de sorte qu'il n'est pas nécessaire de
prévoir une instruction différente pour effectuer une con-
version inverse à partir d'un format précédemm.ent converti.
En d'autres termes, les données délivrées sur les bus d'en-
trée de données 21 et 22 peuvent être-converties par la même instruction aussi bien de "forts en premier" à "faibles en
premier" que de "faibles er. premier" à "forts en premier".
Une autre opération o l'instruction BSWAP s'avère utile
a lieu lors des opérations de chargemnent/mérmorisaion. -Con-
sidérons le cas o un utilisateur souhaite exécuter des opérations sur une mac..-ine qui mémorise toutes les données en un format "faibles en premier". Si l'utilisateur exécute
un chargement normal dans un registre suivi d'une ins-
truction BSWAP, le format "forts en premier" est traduit automatiquement en format "faibles en premier", ce qui
permet au processeur d'opérer dessus immédiatement (c'est-à-
dire de procéder a une addition, une soustraction, une mul-
tiplication, etc.). -Une fcis achevées toutes les opérations arithmétiques, le programmeur peut exécuter un autre BSWAP suivi d'une mémorisation normale en mémoire, qui restaure les données en mémoire à leur format originel. Si l'on veut
réaliser une séquence d'opérations identiques sur un micro-
processeur de l'art antérieur tel que le 80386, il faut bien
plus de temps et de place mémoire.
Bien que l'instruction de permutation d'octets de la présente invention soit définie ici pour des doubles mots de 32 bits, elle constitue également un bloc de base pour des conversions de forma, mémoire d'ordre supérieur (par exemple sur 64 bits et plus). Lors de l'exécution d'une permutation sur 64 bits, la machine commence par charger la quantité sur 64 bits dans deux registres. Ensuite, elle exécute des instructions BSWAP sur chacun des registres. Après cela, le processeur renomme simplement les registres dans l'ordre inverse. En d'autres termes, le registre contenant les bits de poids le plus fort est renommé comme étant le registre deÀ
poids le plus faible, et vice versa. Cette manière de pro-
céder o l'on renomme les registres évite d'avoir à permuter
physiquement les registres. Les avantages en termes de per-
formances deviennent considérables lorsque l'on met en
oeuvre l'invention pour des conversions sur 64 bits et plus.
13 2645293
Claims (16)
1. Des moyens d'exécution d'instruction pour permuter l'ordre des octets (A-D)d'un éliment àe dcr.nnée sur 32 bits conservé dans un registre d'un microprocesseur, caractérisé en ce qu'ils ccmprennenrt: - des moyens de couplage(20;23,24) pour coupler cet éloentde donnée présent sur une pluralité de lignes de données d'entrée (21,22; DSMA, DSMB)à une pluralité correspondante de lignes
de données desortie (26;DSL),ie couplage étant conçu de ma-
nière que les bits 0-7, 8-15, 16-23 et 24-31 de cet élément
de donnée soient couplés, respectivement, aux positions bi-
naires correspondantes 24-31, 16-23, 8-15, et 0-7 des lignes de données de sortie, et -des moyens de commande, reliés à ces moyens de couplage
afin de commander cette permutation de l'ordre des octets de.
l'élément de donnée.
2. Les moyens d'exécution d'instruction de la revendica-
tion 1, comprenant en outre des moyens formant registre (27), couplés aux lignes de données de sortie (26;DSL) pour
mémoriser l'élément de donrée permuté.
3. Les moyens d'exécution d'instruction de la revendica-
tion 2, dans lesquels les moyens de couplage comprennent un
décaleur circulaire-(20) comportant une pluralité de multi-
plexeurs (41-119) couplant chacun au moins un bit de l'élé-
ment de donnée présent sur les lignes de données d'entrée (21,22; DSMA, DSMB) à ladite ligne de données de sortie (26;
DSL) correspondante.
4. Les moyens d'exécution d'instruction de la revendica-
tion 2, dans lesquels l'instruction (BSWAP) comprend deux
octets d'instruction.
5. Les moyens d'exécution d'instruction de la revendica-
tion 2, dans lesquels la permutation de l'ordre des octets
(A-D) est opérée en un cycle d'exécution d'horloge.
6. Un microprocesseur comprenant une mémoire, un décaleur circulaire (20) per-mettantde décaler un double mot'de donnée, ce décaleur recevant des données d'entrée sur un premier et un
sezond bus (21,22;DSMA,DSM) et produisant une sortie avec déca-
lage ou rotation sur un troisième bus (26;DSL), t conprenant des moyens d'exécution d'instruction pour modifier le format d'un élément de donnée sur 32 bits d'un premier format en un second format,
caractérisé en ce que lesdits moyens d'exécution d'ins-
truction comprennent: - un décaleur circulaire (20) comprenant une pluralité de
lignes d'entrée, une pluralité de lignes de sortie, une plu-
ralité de multiplexeurs (41-119), ces multiplexeurs reliant électriquement les bits de rang 0-7, 8-15, 16-23 et 24-31 à des positions binaires de rang 24-31, 16-23, 8-15 et 0-7,
respectivement, des lignes de données de sortie lorsque les-
dits multiplexeurs sont activés, et - des moyens de commande, couplés à cette pluralité de
multiplexeurs pour activer ceux-ci.
7. Le microprocesseur de la revendication 6, dans lequel lesdits moyens d'exécution d'instruction modifient également le format de l'élément de donnée dudit second format en
ledit premier format.
8. Le microprocesseur de la revendication 7, dans lequel ledit premier format est le format "forts en premier" et
ledit second format est le format "faibles en premier".
9. Le microprocesseur de la revendication 8, dans lequel
l'instruction comprend deux octets d'instruction.
10. Le microprocesseur de la revendication 7, dans lequel la modification desdits formats est opérée en un cycle
d'horloge d'exécution.
- 11. Un procédé pour convertir, dans un microprocesseur comprenant un jeu de registres internes et un décaleur circulaire (20), un élément de donnée mémorisé sous un premier format mémoire en un second format mémoire, caractérisé en ce qu'il comprend les étapes consistant à a: - appliquer en entrée ledit élément de donnée au décaleur circulaire sur une paire de bus d'entrée (DSMA, DSMB), - appliquer certains signaux de comr.ande au décaleur circulaire de manière à déclencher une conversion, - relier les bits de rang 0-7, 8-15, 16-23 et 24-31 dudit
élément de donnée présents sur les bus d'entrée aux posi-
tions binaires correspondantes de rang 24-31, 16-23, 8-15 et 0-7, respectivement, d'un bus de données de sortie DSLO, de
manière à produire ainsi un élément de donnée converti.
12. Le procédé de la revendication 1l, comportant en outre une étape consistant à verrouiller ed élément de
donnée converti dans un emplacement de mémore (27).
13. Un procédé pour convertir, dans un crdinateur com-
portant une mémoire o les données sont mémorisées selon un premier format mémoire, un élément de donnée sur 32 bits en un second format mémoire, caractérisé en ce qu'il comprend les étapes consistant - déplacer ledit élément de donnée de la memoire vers un registre, - permuter l'ordre des octets de cet élément de donnée de manière que les bits de rang 0-7, 8-15, 16-23 et 23-31 de cet élément de donnée sous le premier format correspondent aux positions binaires de rang 24-31, 16-23, 8-15 et 0-7, respectivement, dudit registre, l'élément de donnée ainsi permuté étant sous ledit second format, et - verrouiller dans un verrou (27) cet élément de donnée
per- muté.
14. Le procédé de la revendication 13, dans lequel, l'ordinateur comprenant en outre un déealeur circulaire (20) comportant une pluralité de lignes de bits d'entrée (CSA, DSMB) et une pluralité de lignes de bits de sortie (DSL), l'etape de permutation comprend les étapes consistant à
- appliquer des signaux de commande à ce décaleur circu-
faire de manière à relier électriquement les positions bi-
naires de rang 0-7, 8-15, 16-23 et 24-31 desdites lignes de bit d'entrée aux positions binaires correspondantes de rang 24-31, 16-23, 8-15 et 0-7, respectivement, desdites lignes de bits de sortie, et - lire sur ces lignes de bits de sortie l'élément de
donnée.
15. Le procédé de la revendication 14, dans lequel l'étape de permutation a lieu au cours d'un unique cycle
d'horloge d'exécution.
16. Le procédé de la revendication 15, dans lequel ledit
permier formar est le format "faibles en premier" et ledit-
second format est le format "forts en premier".
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US33164089A | 1989-03-30 | 1989-03-30 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| FR2645293A1 true FR2645293A1 (fr) | 1990-10-05 |
| FR2645293B1 FR2645293B1 (fr) | 1994-12-02 |
Family
ID=23294766
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| FR9003950A Granted FR2645293A1 (fr) | 1989-03-30 | 1990-03-28 | Procede et dispositif pour convertir des formats de donnees par une instruction de microprocesseur |
Country Status (7)
| Country | Link |
|---|---|
| US (1) | US5948099A (fr) |
| JP (1) | JPH02285426A (fr) |
| DE (1) | DE4010119C2 (fr) |
| FR (1) | FR2645293A1 (fr) |
| GB (1) | GB2229832B (fr) |
| HK (1) | HK107293A (fr) |
| IT (1) | IT1239828B (fr) |
Families Citing this family (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5446482A (en) * | 1991-11-13 | 1995-08-29 | Texas Instruments Incorporated | Flexible graphics interface device switch selectable big and little endian modes, systems and methods |
| US5687337A (en) * | 1995-02-24 | 1997-11-11 | International Business Machines Corporation | Mixed-endian computer system |
| US5928349A (en) * | 1995-02-24 | 1999-07-27 | International Business Machines Corporation | Mixed-endian computing environment for a conventional bi-endian computer system |
| US5778406A (en) * | 1995-06-30 | 1998-07-07 | Thomson Consumer Electronics, Inc. | Apparatus for delivering CPU independent data for little and big endian machines |
| US6643765B1 (en) | 1995-08-16 | 2003-11-04 | Microunity Systems Engineering, Inc. | Programmable processor with group floating point operations |
| US5819117A (en) * | 1995-10-10 | 1998-10-06 | Microunity Systems Engineering, Inc. | Method and system for facilitating byte ordering interfacing of a computer system |
| WO1998044409A1 (fr) * | 1997-04-03 | 1998-10-08 | Seiko Epson Corporation | Micro-ordinateur, dispositif electronique et procede de traitement d'information |
| US6243808B1 (en) * | 1999-03-08 | 2001-06-05 | Chameleon Systems, Inc. | Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups |
| KR20020074564A (ko) * | 2001-03-20 | 2002-10-04 | 엘지전자 주식회사 | Cpu 코어와 외부 호스트의 인터페이스 장치 및 방법 |
| NL1017870C2 (nl) | 2001-04-18 | 2002-10-25 | Marc Van Oldenborgh | Werkwijze voor invers multiplexen. |
| US20030014616A1 (en) * | 2001-07-02 | 2003-01-16 | Thavatchai Makphaibulchoke | Method and apparatus for pre-processing a data collection for use by a big-endian operating system |
| NL1018463C2 (nl) * | 2001-07-04 | 2003-01-08 | Marc Van Oldenborgh | Werkwijze, inrichting en programmatuur voor digitaal inverse multiplexen. |
| US6877019B2 (en) * | 2002-01-08 | 2005-04-05 | 3Dsp Corporation | Barrel shifter |
| US6670895B2 (en) * | 2002-05-01 | 2003-12-30 | Analog Devices, Inc. | Method and apparatus for swapping the contents of address registers |
| US6996735B2 (en) * | 2002-11-22 | 2006-02-07 | Texas Instruments Incorporated | Apparatus for alignment of data collected from multiple pipe stages with heterogeneous retention policies in an unprotected pipeline |
| US7051197B2 (en) | 2002-11-22 | 2006-05-23 | Texas Instruments Incorporated | Tracing through reset |
| US6889311B2 (en) * | 2002-11-22 | 2005-05-03 | Texas Instruments Incorporated | Pipeline stage single cycle sliding alignment correction of memory read data with integrated data reordering for load and store instructions |
| US7720977B1 (en) * | 2003-02-11 | 2010-05-18 | Foundry Networks, Inc. | Cookie invalidation or expiration by a switch |
| US7404019B2 (en) * | 2003-03-07 | 2008-07-22 | Freescale Semiconductor, Inc. | Method and apparatus for endianness control in a data processing system |
| US20040221274A1 (en) * | 2003-05-02 | 2004-11-04 | Bross Kevin W. | Source-transparent endian translation |
| US7181562B1 (en) * | 2004-03-31 | 2007-02-20 | Adaptec, Inc. | Wired endian method and apparatus for performing the same |
| US20050273559A1 (en) | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
| US7552427B2 (en) * | 2004-12-13 | 2009-06-23 | Intel Corporation | Method and apparatus for implementing a bi-endian capable compiler |
| WO2007049150A2 (fr) | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture pour des systemes a base de microprocesseur comportant une unite de traitement de type instruction unique, donnees multiples (simd) et systemes et procedes associes |
| US8595452B1 (en) | 2005-11-30 | 2013-11-26 | Sprint Communications Company L.P. | System and method for streaming data conversion and replication |
| US7721077B2 (en) * | 2006-12-11 | 2010-05-18 | Intel Corporation | Performing endian conversion |
| US8667250B2 (en) | 2007-12-26 | 2014-03-04 | Intel Corporation | Methods, apparatus, and instructions for converting vector data |
| JP2009230591A (ja) * | 2008-03-25 | 2009-10-08 | Panasonic Corp | 情報処理装置 |
| US20120191956A1 (en) * | 2011-01-26 | 2012-07-26 | Advanced Micro Devices, Inc. | Processor having increased performance and energy saving via operand remapping |
| EP2689325B1 (fr) * | 2011-03-25 | 2018-01-17 | NXP USA, Inc. | Système de processeurs avec un registre de prédicat, système d'ordinateur, procédé de gestion de prédicats, produit-programme d'ordinateur |
| EP2798475A4 (fr) * | 2011-12-30 | 2016-07-13 | Intel Corp | Instruction de transposition |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| BE657399A (fr) * | 1963-12-20 | 1965-04-16 | ||
| EP0282969A2 (fr) * | 1987-03-18 | 1988-09-21 | Hitachi, Ltd. | Calculateur ayant un mécanisme de conversion de l'ordre des octets |
Family Cites Families (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3930232A (en) * | 1973-11-23 | 1975-12-30 | Raytheon Co | Format insensitive digital computer |
| US4509144A (en) * | 1980-02-13 | 1985-04-02 | Intel Corporation | Programmable bidirectional shifter |
| US4373180A (en) * | 1980-07-09 | 1983-02-08 | Sperry Corporation | Microprogrammed control system capable of pipelining even when executing a conditional branch instruction |
| US4437166A (en) * | 1980-12-23 | 1984-03-13 | Sperry Corporation | High speed byte shifter for a bi-directional data bus |
| US4556978A (en) * | 1983-07-20 | 1985-12-03 | Sperry Corporation | Error checked high speed shift matrix |
| GB8406846D0 (en) * | 1984-03-16 | 1984-04-18 | British Telecomm | Digital filters |
| US4653019A (en) * | 1984-04-19 | 1987-03-24 | Concurrent Computer Corporation | High speed barrel shifter |
| DE3685982T2 (de) * | 1985-04-03 | 1993-03-04 | Nippon Electric Co | Digitale datenverarbeitungsschaltung mit bitumkehrfunktion. |
| EP0236615B1 (fr) * | 1986-02-06 | 1992-11-11 | Mips Computer Systems, Inc. | Unité fonctionnelle pour ordinateurs |
| US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
| JPS6491228A (en) * | 1987-09-30 | 1989-04-10 | Takeshi Sakamura | Data processor |
| JPS6428752A (en) * | 1987-07-24 | 1989-01-31 | Toshiba Corp | Data processor |
| US5132898A (en) * | 1987-09-30 | 1992-07-21 | Mitsubishi Denki Kabushiki Kaisha | System for processing data having different formats |
| US4918624A (en) * | 1988-02-05 | 1990-04-17 | The United States Of America As Represented By The United States Department Of Energy | Vector generator scan converter |
| EP0344347B1 (fr) * | 1988-06-02 | 1993-12-29 | Deutsche ITT Industries GmbH | Dispositif pour le traitement numérique de signaux |
| JP2633331B2 (ja) * | 1988-10-24 | 1997-07-23 | 三菱電機株式会社 | マイクロプロセッサ |
| JPH0649102B2 (ja) * | 1989-05-02 | 1994-06-29 | 株式会社竹屋 | パチンコ島台における呼出表示装置 |
| JPH0451981A (ja) * | 1990-06-19 | 1992-02-20 | San Denshi Kk | 自動表示装置 |
-
1990
- 1990-02-12 GB GB9003070A patent/GB2229832B/en not_active Expired - Lifetime
- 1990-03-27 IT IT19824A patent/IT1239828B/it active IP Right Grant
- 1990-03-28 FR FR9003950A patent/FR2645293A1/fr active Granted
- 1990-03-29 DE DE4010119A patent/DE4010119C2/de not_active Expired - Lifetime
- 1990-03-30 JP JP2084796A patent/JPH02285426A/ja active Pending
-
1991
- 1991-08-12 US US07/744,818 patent/US5948099A/en not_active Expired - Lifetime
-
1993
- 1993-10-14 HK HK1072/93A patent/HK107293A/xx not_active IP Right Cessation
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| BE657399A (fr) * | 1963-12-20 | 1965-04-16 | ||
| EP0282969A2 (fr) * | 1987-03-18 | 1988-09-21 | Hitachi, Ltd. | Calculateur ayant un mécanisme de conversion de l'ordre des octets |
Also Published As
| Publication number | Publication date |
|---|---|
| IT1239828B (it) | 1993-11-15 |
| US5948099A (en) | 1999-09-07 |
| DE4010119C2 (de) | 1995-10-26 |
| FR2645293B1 (fr) | 1994-12-02 |
| IT9019824A0 (it) | 1990-03-27 |
| IT9019824A1 (it) | 1991-09-27 |
| GB2229832A (en) | 1990-10-03 |
| DE4010119A1 (de) | 1990-10-04 |
| JPH02285426A (ja) | 1990-11-22 |
| GB2229832B (en) | 1993-04-07 |
| GB9003070D0 (en) | 1990-04-11 |
| HK107293A (en) | 1993-10-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| FR2645293A1 (fr) | Procede et dispositif pour convertir des formats de donnees par une instruction de microprocesseur | |
| US7676784B2 (en) | Methods and apparatus for implementing parameterizable processors and peripherals | |
| FR2588980A1 (fr) | Processeur de traitement de signal numerique comportant plusieurs multiplicateurs | |
| EP0006478B1 (fr) | Dispositif programmable de verrouillage de signaux de commande dans un système de traitement de données | |
| FR2522171A1 (fr) | Architecture d'addition en virgule flottante | |
| JPH09153789A (ja) | 圧縮された構成ビット・ストリームを使用してゲート・アレイをプログラムするプログラム可能論理回路、及びその方法 | |
| US20050198474A1 (en) | Bit field manipulation | |
| EP1619590B1 (fr) | Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé | |
| US3997771A (en) | Apparatus and method for performing an arithmetic operation and multibit shift | |
| FR2561429A1 (fr) | Dispositif d'adressage pour fournir a une memoire des codes d'adresse | |
| FR2678400A1 (fr) | Processeur de protocole destine a l'execution d'un ensemble d'instructions en un nombre reduit d'operation. | |
| CA2051559C (fr) | Generateur d'adresses pour la memoire de donnees d'un processeur | |
| EP0251861B1 (fr) | Unité de gestion de mémoire | |
| FR2794259A1 (fr) | Dispositif materiel destine a l'execution d'instructions programmables basees sur des micro-instructions | |
| EP0520579B1 (fr) | Dispositif de traitement de l'information plus particulièrement adapté à un langage chaíné, du type FORTH notamment | |
| FR3089322A1 (fr) | Gestion des restrictions d’accès au sein d’un système sur puce | |
| FR2796736A1 (fr) | Procede pour effectuer une multiplication avec accumulation dans un corps de galois | |
| FR2645665A1 (fr) | Dispositif de decodage d'instructions en pipeline pour microprocesseur | |
| JPH079646B2 (ja) | マイクロコンピュ−タ装置 | |
| FR2720173A1 (fr) | Circuit intégré comprenant des moyens pour arrêter l'exécution d'un programme d'instructions quand une combinaison de points d'arrêt est vérifiée. | |
| FR2558612A1 (fr) | Appareil de multiplication binaire | |
| EP0254628B1 (fr) | Circuit de traitement numérique de signal réalisant une transformation cosinus | |
| EP3531419A1 (fr) | Procédé de gestion du routage de transactions entre des équipements sources, au moins un équipement cible, par exemple une mémoire multiports, et système sur puce correspondant | |
| EP0006485A1 (fr) | Dispositif d'adressage de pages dans un système de traitement de données | |
| CA2359198C (fr) | Unite de calcul pour l'execution d'un protocole cryptographique |