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 PDF

Info

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
Application number
FR9003950A
Other languages
English (en)
Other versions
FR2645293B1 (fr
Inventor
John H Crawford
Mustafiz R Choudhury
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of FR2645293A1 publication Critical patent/FR2645293A1/fr
Application granted granted Critical
Publication of FR2645293B1 publication Critical patent/FR2645293B1/fr
Granted 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format 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)

REVENDICATIONs
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".
FR9003950A 1989-03-30 1990-03-28 Procede et dispositif pour convertir des formats de donnees par une instruction de microprocesseur Granted FR2645293A1 (fr)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 自動表示装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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