DE4010119C2 - Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor - Google Patents
Anordnung und Verfahren zur Umordnung eines Speicherformats in einem MikroprozessorInfo
- Publication number
- DE4010119C2 DE4010119C2 DE4010119A DE4010119A DE4010119C2 DE 4010119 C2 DE4010119 C2 DE 4010119C2 DE 4010119 A DE4010119 A DE 4010119A DE 4010119 A DE4010119 A DE 4010119A DE 4010119 C2 DE4010119 C2 DE 4010119C2
- Authority
- DE
- Germany
- Prior art keywords
- format
- data field
- data
- endian
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System (AREA)
Description
Die Erfindung bezieht sich auf ein Verfahren nach dem
Oberbegriff des Anspruchs 1 und auf eine Anordnung zur
Durchführung des Verfahrens.
Normalerweise ist die Information im Speicher eines Mikro
prozessorsystems in Datenstrukturen gespeichert, die typischer
weise zwischen 8 und 64 Bit in der Länge variieren. In dem 486-
Mikroprozessor ist ein "Wort" in 16-Bit-Breite festgelegt,
während ein Doppelwort oder "D-Wort" 32-Bits breit ist. Worte
werden im Speicher in zwei aufeinanderfolgenden 8-Bit-Bytes ge
speichert, wobei das niedrigerwertige Byte bei der unteren
Adresse und das höherwertige Byte bei der oberen Adresse liegt.
D-Worte werden in vier aufeinanderfolgenden Bytes mit dem
niedrigerwertigen Byte an der unteren Adresse und dem höher
wertigen Byte an der oberen Adresse gespeichert. Die Adresse
eines Einfach- oder Doppelwortdatenfeldes im Mikroprozessor ist
die Byte-Adresse des niedrigstrangigen Bytes. Diese Art der
Adressierung ist, insbesondere im Hinblick auf Doppelwortdaten
felder, bekannt als "little-endian"-Verfahren für das Speichern
von Datentypen, die länger als ein Byte sind. Alle Intel
prozessoren der x86-Familie verwenden das "little-endian"-Ver
fahren zur Speicherung der Datenarten.
Das alternative Verfahren für die Speicherung von Datentypen im
Speicher eines Mikroprozessors wird als "big-endian"-Verfahren
bezeichnet. Beim "big-endian"-Verfahren werden die Daten mit den
höherwertigen Bits an den niedrig adressierten Bytes gespei
chert. Das "big-endian"-Format ist daher umgekehrt zum "little-
endian"-Gegenstück. Die Unterscheidung zwischen beiden liegt
einfach darin, welches Byte einer Einheit aus mehreren Bytes der
niedrigsten Adresse und welches der höchsten Adresse zugeordnet
ist. Beim "big-endian"-Format kommen, wie der Name schon sagt,
die großen oder oberen Bytes zuerst, d. h. die höherwertigen
Bits sind an den unteren Adressen. Das "big-endian"-Speicher
format wird bei den IBM-Computern der 370er Reihe und ebenfalls
bei der 68000er Reihe der von Motorola hergestellten Mikro
prozessoren verwendet. Weiterhin verwenden viele RISC-Prozesso
ren das "big-endian"-Format.
Sehr häufig kommt es vor, daß ein Programmierer eine Datenbank
mit gemischten Datenformaten erstellen möchte. Andere Program
mierer wollen häufig Daten über ein Netzwerk von einem Computer,
der Integer-Daten in einem "big-endian"-Format speichert, an
einen anderen Computer schicken, der Integer-Daten in einem
"little-endian"-Format speichert. Es muß daher zu irgendeinem
Zeitpunkt eine Konversion oder Umordnung durchgeführt werden,
die in dem einen Speicherformat gespeicherte Daten in das andere
Format konvertiert.
In einer 16-Bit-Umgebung ist die Konvertierung von Speicher
formaten unproblematisch.Gewöhnlich sind in einem Mikroprozessor
eine ganze Anzahl von Befehlen verfügbar, die 8-Bit-Register
einfach rotieren oder austauschen. In anderen Worten, die 8-Bit-
Einheiten, die das 16-Bit-Datenfeld bilden, können einfach umge
kehrt (swapped) oder ausgetauscht werden.
Byte-Umkehrungen mit höherwertigen Bitzahlen,
z. B. 32- oder 64-Bit-Einheiten, sind problematischer. Ein Weg, mit dem beispiels
weise ein Mikroprozessor nach derzeitigem Stand der Technik eine
Byte-Austauschoperation an einem 32-Bit-Feld ausführen könnte,
ist, daß zuerst eine Byte-Austauschoperation der unteren beiden
Bytes ausgeführt wird, dann eine Rotation um 16 und dann eine
zweite Byte-Austauschoperation der verbleibenden zwei Bytes. Es
sind also drei getrennte Befehle erforderlich, um ein Konver
tieren durchzuführen - dabei nimmt jeder Befehl für die Reali
sierung zwei Takte in Anspruch, also insgesamt 6 Takte für die
gesamte Konvertierung. Weil jeder Befehl normalerweise zwei oder
drei Bytes lang ist, muß auch eine beträchtliche Kodierung -
wahrscheinlich neun Befehlsbytes - für diese drei Rotations-Be
fehle erzeugt werden. Die Rotation wird dabei vorzugs
weise von einem Trommelshifter
ausgeführt. Trommelshifter sind
bspw. aus dem Artikel "Schnellste
Daten-Bit-Manipulation mit
Barrel-Shiftern", Elektronik,
Heft 6, 21. 03. 1986, S. 65-70, in
der Technik bekannt und be
finden sich in den meisten
Mikroprozessoren. Trommelshifter
können ein Datenwort in
einem Arbeitsgang um N Positionen
verschieben/rotieren - wobei N
zwischen 0 und der Wortgröße
liegt.
Trommelshifter können
zum Beispiel für Schiebebefehle,
Rotierbefehle, Bitscans usw. ver
wendet werden.
Ein alternativer Ansatz wäre die Speicherformat-Konvertierung in
aufeinanderfolgenden Schritten in Mikrocode erfolgen zu lassen.
Bei Verwendung von Mikrocode würden jedoch immer noch sechs
Takte oder mehr und eine große Zahl von Befehls-Bytes gebraucht.
Folglich erfordert die Konvertierung von Speicherformaten von
"big-endian" in "little-endian" oder umgekehrt bei bekannten
Maschinen ein beträchtliches Maß internen Speicherraums und
bringt entscheidende Nachteile im Arbeitsablauf mit sich.
Ein anderer Ansatz, der bei gewissen RISC-Prozessoren verwendet
wird, wird als "pin-strapping" bezeichnet. Pin-strapping be
steht in nichts anderem als einem fest eingebautem Schalter, der
auf dem Board, das den Mikroprozessor beherbergt, fest verdrah
tet ist. Die Pin-strap-Option zwingt den Computer, Gespeichertes
in der einen oder der anderen Weise zu behandeln, d. h. entweder
als "big-endian" oder als "little-endian"-Format. Diese festver
drahtete Möglichkeit hat den offensichtlichen Mangel, daß sie
statisch und daher nicht in der Lage ist, programmiert oder
dynamisch durch den Mikroprozessor oder den Benutzer gesteuert
zu werden.
Aufgabe der Erfindung ist es des
halb, die Konvertierung zwischen
zwei Speicherformaten zu beschleu
nigen, ohne zusätzliche Hardware- oder
Arbeits-Kosten zu verursachen. Diese Aufgabe wird
bei einem Verfahren der gattungs
gemäßen Art mit den Merkmalen
des Patentanspruchs 1 gelöst.
Wie gezeigt werden wird, ersetzt die vorliegende Erfindung diese
früheren Versuche durch eine Umordnung mit einem einzigen Byte,
die ein "big-endian"-D-Wort in ein "little-endian"-Format kon
vertieren kann. Für Pro
gramme, die bei Ausführung auf einem 486-Prozessor (d. h. einer
"little-endian"-Maschine) starken Gebrauch von "big-endian"-
Daten machen, wird eine Geschwindigkeitssteigerung von ca. 10%
festgestellt.
Im folgenden wird ein besonderer Mikroprozessor-Befehl beschrie
ben, der für die Durchführung eines Byte-Austauschs an 32-Bit-
Datentypen am Ort optimiert ist. Diese Byte-Austauschoperation
ist bei der Konvertierung von in einem "big-endian"-Speicher
format gespeicherten Daten in ein "little-endian"-Format oder
umgekehrt besonders nützlich. Die erfindungsgemäße Anordnung um
faßt einen modifizierten Trommelshifter, der eine Vielzahl von
Multiplexern zum selektiven Koppeln von Daten von einer oder
mehreren Eingabebussen auf einen Ausgabebus aufweist. Die Kopp
lung der einzelnen Bit-Leitungen der Datenbusse ist so einge
richtet, daß die Bits 0-7, 8-15, 16-23 und 24-31 des Eingabe
busses mit den entsprechenden Bits 24-31, 16-23, 8-15 und 0-7
gekoppelt sind. Steuerleitungen, die mit jedem der Multiplexer
verbunden sind, ermöglichen die Steuerung der Byte-Umordnungs-
bzw. -Austausch-Operation.
Die hier beschriebene Byte-Umordnung erlaubt dem Programmierer,
Daten aus einem "big-endian"-Speicherformat in ein "little-
endian"-Datenformat umzuwandeln und wieder zurück, ohne daß die
Nachteile im Arbeitsablauf entstehen, wie bei bekannten Mikro
prozessoren. Ferner erfordert der Befehl nur einen Taktzyklus
für die Durchführung der Konvertierung, während bekannte Mikro
prozessoren meist drei Befehle und sechs Takte brauchen.
Nachfolgend wird die Erfindung anhand der beigefügten Zeichnung
des derzeit bevorzugten Ausführungsbeispiels näher beschrieben.
In der Zeichnung zeigt
Fig. 1 einen Vergleich zwischen dem "little-endian"- und
dem "big-endian"-Speicherformat - beide Spei
cherformate sind mit ihren zugehörigen Spei
cheradressen und Bitnumerierungen gezeigt, das
höchstwertige Bit ist Bit 31, das
niedrigstwertige 0 -,
Fig. 2 ein Blockdiagramm, das den Datenfluß durch den
Trommelshifter darstellt,
Fig. 3A bis 3L umfassen zusammen ein Schaltbild des im
bevorzugten Ausführungsbeispiel verwendeten
Trommelshifters und
Fig. 4 zeigt ein Schaltbild für die im Trommelshifter
von Fig. 3 verwendeten 4×4-Multiplexer.
Beschrieben wird ein Mikroprozessor mit einer Anordnung zum Um
ordnen von Bytes für die Konvertierung des Datenspeicherformats
aus einem Typ in einen anderen. In der nachfolgenden Beschrei
bung sind zahlreiche spezielle Details genannt, wie Bitlängen,
etc., um ein genaues Verständnis der Erfindung zu ermöglichen.
Dem auf dem einschlägigen Gebiet tätigen Fachmann wird jedoch
klar sein, daß diese speziellen Details für die Ausführung der
Erfindung nicht essentiell sind. An anderer Stelle werden be
kannte Strukturen und Schaltungen nicht im Detail gezeigt, um
die Darstellung der Erfindung nicht unnötig zu belasten.
Fig. 1 illustriert den Unterschied zwischen den "big-endian"-
und "little-endian"-Speicherformaten für D-Worte mit 32 Bit
Länge. In Fig. 1 sind die 32 Datenbits, sowohl für das "little-
endian" als auch für das "big-endian"-Format, mit dem unteren
Bit als Bit 0 und dem oberen Bit als Bit 31 nummeriert und mit
der Speicheradressennumerierung entlang der Oberkante gezeigt.
Wie gezeigt, ist jedes 32-Bit-D-Wort in vier 8-Bit-Bytes unter
teilt. Diese sind in Fig. 1 mit Großbuchstaben A bis D bezeich
net. Im "little-endian"-Speicherformat sind die D-Worte im Spei
cher in vier aufeinanderfolgenden Bytes mit dem unteren Byte an
der niedrigsten Adresse und dem oberen Byte an der höchsten
Adresse gespeichert. In Fig. 1 ist dies so dargestellt, daß
Bits 0-7 in Speicheradresse M, Bits 8-15 in Speicheradresse M+1,
Bits 16-23 in Speicheradresse M+2 und Bits 24-31 in Spei
cheradresse M+3 abgespeichert sind. Die Adresse eines D-Wort-
Datenfeldes im "little-endian"-Format ist die Byte-Adresse des
niedrigsten Bytes (d. h.: Speicheradresse "M").
Im "big-endian"-Daten-Speicherformat sind die Bits in der umge
kehrten Reihenfolge angeordnet. Das heißt, "big-endian"-Daten
sind mit den hohen Bits an dem niedrigsten Adress-Byte und den
niedrigsten Bits an dem höchsten Speicheradress-Byte gespei
chert. Wie also in Fig. 1 gezeigt, sind im "big-endian"-Format
die Bits 0-7 bei Speicheradresse M+3 gespeichert, Bits 8-15 bei
Speicheradresse M+2, Bits 16-23 bei Speicheradresse M+1 und Bits
24-31 bei Speicheradresse M. Die Adresse eines D-Wort-Daten
feldes im "big-endian"-Speicherformat ist die Byte-Adresse des
höchstwertigen Bytes.
Um eine Konvertierung vom "big-endian"-Speicherformat ins
"little-endian"-Format durchzuführen, muß der folgende Prozeß
ablaufen. Zuerst wird das Datenfeld aus dem Speicher in ein
internes Register übertragen. Als nächstes muß Byte A, ent
sprechend Bits 24-31 im "big-endian"-Format, transferiert oder
vertauscht werden mit dem Inhalt von Byte D, entsprechend Bits
0-7. Ähnlich muß Byte B mit Byte C ausgetauscht werden. Diese
Byte-Umordnungs-Operation wird bei dem bevorzugten Ausführungs
beispiel mit einem modifizierten Trommelshifter ausgeführt, der innerhalb der
Ganzzahl-Ausführeinheit des Mikroprozessors angeordnet ist.
Schließlich wird das umgeordnete Datenfeld in einen Zwischen-
Latch oder ein Zwischenregister geladen, um danach in das ur
sprüngliche und dafür vorgesehene Register im Speicher zurück
geschrieben zu werden.
Im folgenden wird auf Fig. 2 Bezug genommen. Fig. 2 zeigt ein
Blockdiagramm des Datenflusses durch den Trommelshifter, der für
die Realisierung des Byte-Umordnungs-Befehls nach der vorliegen
den Erfindung verwendet wird.
Der Trommelshifter 20 besteht aus zwei Teilen: Einem Matrixelement 23 und einem
Baum 24. Matrixelement 23 erhält Eingabedaten über die 32-Bit-
Busse 21 und 22, die als DSMA und DSMB gekennzeichnet sind. Die
über Bus 21 angelegten Daten sind i. a. identisch mit den über
Bus 22 angelegten Daten. Wie gezeigt werden wird, erleichtert
dies ein schnelles Rotieren oder Verschieben der Daten. Matrix
element 23 erhält diese Dateneingaben und führt eine Verschiebe-
Operation in Halbbyte-Abstand durch (d. h., die Daten werden um
ein Vielfaches von 4 verschoben). Auf diese Weise werden die
Daten zu Anfang im ersten Stadium der Verschiebeoperation um
Vielfache von 4 (d. h., 4, 8, 12, 16, etc.) verschoben. Weiteres
Verschieben um alles, was kleiner als 4 ist (d. h. 0-3) er
folgt in Baum 24. Das Matrixelement 23 ist mit Baum 24 über
einen Bus 25 verbunden, der als DST bezeichnet ist. Der Baum 24
gibt über 32-Bit-Bus 26, der mit DSL bezeichnet ist, an ALU-Aus
gaberegister 27 aus.
Im weiteren wird auf die Fig. 3A bis 3L Bezug genommen, die
ein detailliertes Schaltbild des bei dem derzeitig bevorzugten
Ausführungsbeispiel der Erfindung verwendeten Trommelshifters 20
zeigen. Der Trommelshifter 20 hat eine Vielzahl von vertikalen
Dateneingangsleitungen, die mit den Leitungen 21 und 22 der
Busse DSMA und DSMB verbunden sind. Diese Dateneingangsleitungen
sind als aus einzelnen Bitleitungen DSMAO-31 und DSMBO-31
zusammengesetzt gezeigt. Jede der Leitungen ist mit den Ein
gängen einer Vielzahl von 4×4-Multiplexern verbunden. DSMB31 ist
zum Beispiel mit dem Eingang 14 von Multiplexern 42 bis 49 ver
bunden.
In Fig. 3A bis 3L sind ebenfalls mehrere horizontale Daten
ausgangsleitungen enthalten. Diese horizontalen Datenbit
leitungen umfassen DST-Bus 25 und sind mit den Ausgängen einer
Vielzahl von Multiplexern verbunden. Die einzelnen Bitleitungen
von DST-Bus 25 sind als
DSTO-31 bezeichnet und mit dem ALU-Aus
gaberegister 27 verbunden, wie in Zusammenhang mit Fig. 2 be
schrieben (weitere Leitungen sind gezeigt, z. B. DST35, aber
diese sind nicht wesentlich für die Erfindung und werden daher
hier nicht diskutiert). DST31 ist beispielsweise in der Dar
stellung mit Multiplexern 42, 59, 68, 77, 86, 95, 104 und 113
verbunden. Die Steuerung jedes der Multiplexer von Trommel
shifter 20 erfolgt über die mit DSMCO-22 bezeichneten Steuer
leitungen.
Jeder der Multiplexer 41-119 (außer 57, 66, 75, 84, 93, 102
und 111, die nur in Verbindung mit dem Baum 24 verwendet werden)
weist vier Eingangspins (d. h. 11 bis 14), vier Ausgangspins
(d. h. O1 bis O4) und einen Steuerpin (d. h. C) auf. Während des
Betriebs, wenn die Steuerleitung eines einzelnen Multiplexers
angesprochen wird, sind die Eingangsdatenleitungen elektrisch
mit den Ausgangsdatenleitungen gekoppelt. Wenn beispielsweise
die Steuereingangsleitung zu Multiplexer 110 angesprochen wird,
sind die an Eingangspin I1 (d. h. DSMBO) anstehenden Daten
elektrisch mit Ausgangspin O1 (d. h., DSTO) verbunden. In ähn
licher Weise sind die Daten, die mit Pins I2, I3 und I4 (d. h.,
DSMB1, DSMB2 und DSMB3) verknüpft sind, elektrisch mit den Aus
gangspins O2, O3 und O4 (d. h., DST1, DST2, und DST3) verbunden.
Auf diese Weise wirkt jeder einzelne Multiplexer in Trommel
shifter 20 als Schaltelement, das Gruppen von Eingangsdaten mit
entsprechenden Ausgangsleitungen verbindet.
In Fig. 4 ist ein Schaltbild des bei dem derzeit bevorzugten
Ausführungsbeispiel der Erfindung verwendeten 4×4-Multiplexers
gezeigt. Dieser Multiplexer umfaßt Feldeffekt-Bauelemente 120
bis 123, die vorzugsweise gewöhnliche n-Kanal-MOS-Bauelemente
enthalten. Das Gate jedes dieser Feldeffekt-Transistoren ist mit
Steuerleitung 124 gekoppelt. Die Drain- und Source-Zonen jedes
Transistors sind mit einem anderen Paar von Eingangs- und Aus
gangsleitungen gekoppelt. Die Source-Elektrode von Transistor
123 zum Beispiel ist mit Eingangsleitung 128 verbunden, die noch
als I1 bezeichnet ist, und seine Drain-Elektrode ist mit der als
O1 bezeichneten Ausgangsleitung 129 verbunden. Wenn Steuer
leitung 124 aktiviert wird, indem sie auf ein hohes positives
Potential gesetzt wird, wird ein Leitungskanal zwischen den
Source- und Drain-Zonen von Bauelement 120-123 gebildet. Die
ser Leitungskanal bewirkt eine elektrische Verbindung zwischen
den zugehörigen Eingangs- und Ausgangspins. Ein hohes positives
Potential auf Steuerleitung 124 bewirkt also eine elektrische
Verbindung zwischen Leitungen 128 und 129, 127 und 130, 126 und
131 und 125 und 132.
Der Trommelshifter 20 der erfindungsgemäßen Anordnung
ähnelt solchen in bekannten Mikroprozessoren, wie dem 80386, mit
der Ausnahme, daß bestimmte Steuersignale aufgesplittet worden
sind, um eine Abstimmung auf die Format-Konvertierung der vor
liegenden Erfindung zu erzielen. Das ursprüngliche Matrix-
Steuersignal DSMC2 des 386-Prozessors wurde in drei Steuer
signale, DSMC2a, DSMC2b und DSMC2c aufgeteilt, um die Implemen
tierung des Byte-Umordnungsbefehls (Byte swap, BSWAP) in einem
Ausführungstakt zu unterstützen. Ebenso ist das DSMC17-Signal
wie gezeigt in drei Signale aufgeteilt, DSMC17a-c. Für gewöhn
liche Operationen (alle außer BSWAP), laufen diese Steuerlei
tungen in ihre ursprüngliche Form zusammen, und Trommelshifter
20 arbeitet normal. Nur während der Ausführung eines BSWAP-Be
fehls werden die getrennten Leitungen bedeutsam.
In Phase 1 des Ausführungs-Taktzyklus des BSWAP-Befehls wer
den vier der Matrix-Steuersignale angelegt. Alle anderen Steuer
signale der Matrix werden negiert. Die vier Matrix-Steuer
signale, die angelegt werden, umfassen DSMC21 (das Bits 24-31
vom DSMB-Bus an Bits 0-7 des Matrix-Ausgabebusses DST multi
plext), DSMC17b (das Bits 16-23 vom DSMB-Bus an Bits 8-15 des
Matrix-Ausgabebusses DST multiplext), DSMNC2b (das Bits 8-15 des
DSMA-Busses an Bits 16-23 des Matrix-Ausgabebusses DST multi
plext) und DSMC17c (das Bits 0-7 des DSMA-Busses an Bits 24-31
des Matrix-Ausgabebusses DST multiplext). In Phase 2 des Aus
führungstakts, empfängt der Trommelshifter die Dateneingaben
über die DSMA- und DSMB-Busse und ordnet die Bytes einfach um,
durch Herstellung der entsprechenden elektrischen Verbindung
zwischen den DSMA- und DSMB-Bussen und DST-Ausgangsleitungen. Das
Datenfeld-Speicherformat wird also automatisch von "big-endian"
in "little-endian" oder umgekehrt umgewandelt. Die von der Ma
trix umgewandelten Ausgabedaten gehen ohne weitere Verschie
bungen durch den Baum des Shifters und werden anschließend in
das ALU-Ausgaberegister 27 geladen.
Bei dem derzeitig bevorzugten Ausführungsbeispiel umfaßt der
BSWAP-Befehl zwei 8-Bit-Befehlsbytes. Dreizehn der Bits des Be
fehls sind als Operationscode definiert, während die unteren
vier Bits des zweiten Bytes das an der Operation teilnehmende
Register spezifizieren.
Ein wesentlicher Aspekt der Erfindung besteht darin, daß der
BSWAP-Befehl als seine eigene Umkehrung wirkt, so daß ein geson
derter Befehl für die Rückumwandlung eines zuvor konvertierten
Formats unnötig ist. Anders ausgedrückt, können die Daten, die
auf Datenbussen 21 und 22 anliegen, vom "big-endian" ins
"little-endian" oder vom "little-endian" ins "big-endian" mit
dem gleichen Befehl umgewandelt werden.
Eine weitere nützliche Anwendung des BSWAP-Befehls liegt in
LADE/SPEICHERE-Operationen. Angenommen, ein Benutzer möchte Ope
rationen auf einer Maschine ausführen, die alle Daten in einem
"little-endian"-Format speichert. Wenn der Benutzer nun ein
normales Einladen in ein Register, gefolgt von einem BSWAP-Be
fehl durchführt, wird das "big-endian"-Format automatisch in das
"little-endian"-Format übersetzt, was den Prozessor in die Lage
versetzt, unmittelbar zu bearbeiten (d. h., zu addieren, subtra
hieren, multiplizieren, usw.). Nach Abschluß aller arithme
tischer Operationen kann der Programmierer einen weiteren BSWAP
ausführen, gefolgt von einem normalen Speichern, um die Daten
erneut in ihrem ursprünglichen Format im Speicher zu speichern.
Um die gleiche Sequenz von Operationen auf einem bisher bekann
ten Mikroprozessor, wie z. B. dem 80386, durchzuführen, war er
heblich mehr Zeit und Speicherplatz erforderlich.
Obgleich der Byte-Umordnungs-Befehl der vorliegenden Erfindung
derzeit für 32-Bit-D-Worte definiert ist, stellt er doch auch
einen Grundbaustein für höherwertige Speicherformat-Umordnungen
(d. h., 64-Bits und mehr) zur Verfügung. Bei der Durchführung
einer 64-Bit-Umordnung, lädt die Maschine zuerst die 64-Bit-Ein
heit in zwei Register. Als nächstes führt sie BSWAP-Befehle auf
jedem dieser Register aus. Danach benennt der Prozessor einfach
die Register in umgekehrter Reihenfolge. Anders gesagt, wird das
Register mit den höheren Bits in das niedrigerwertige Register
umbenannt und umgekehrt. Dieses Umbenennungs-Schema umgeht die
Notwendigkeit, die Register physikalisch umzu
ordnen. Bei Anwen
dung auf Konvertierungen von 64 Bits und mehr erhöht sich noch
die Ersparnis in den Betriebskosten.
Claims (12)
1. Verfahren zum Konvertieren eines in einem ersten Spei
cherformat gespeicherten Datenfeldes in ein zweites Speicher
format,
dadurch gekennzeichnet,
daß die Byte-Reihenfolge des Datenfeldes mit einem einzigen
Befehl so umgeordnet wird, daß die Bits an den geordneten Bit-
Positionen 0-7, 8-15, 16-23 und 24-31 des Datenfeldes im we
sentlichen gleichzeitig mit den Bits an den geordneten Bit-Posi
tionen 24-31, 16-23, 8-15 bzw. 0-7 des Registers ausgetauscht
werden, wodurch das Datenfeld das zweite Speicherformat erhält.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß
ein in einem ersten Speicherformat in einem Computerspeicher
gespeichertes Datenfeld zunächst aus dem Speicher in ein Regi
ster überführt wird und nach der Byte-Reihenfolge-Umordnung das
Datenfeld in dem zweiten Speicherformat in einen Latch-Speicher
(27) geladen wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeich
net, daß das Datenfeld zum Umordnen der Byte-Reihenfolge über
ein Paar von Eingabebussen (21, 22) an einen Trommelshifter (20)
angelegt wird und außerdem bestimmte Kontrollsignale mit dem
Trommelshifter verbunden werden, um die Umordnung zu initiieren.
4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, daß
das Datenfeld in jedem Eingabebus des Trommelshifters auf eine
Vielzahl von Dateneingabeleitungen eingelesen wird und diese
Eingabeleitungen in Abhängigkeit von den Kontrollsignalen mit
einer Vielzahl von Datenausgabeleitungen des Trommelshifters
verbunden werden.
5. Verfahren nach einem der Ansprüche 1 bis 4, dadurch ge
kennzeichnet, daß das erste Speicherformat ein "big-endian"-
Format und das zweite Speicherformat ein "little-endian"-Format
ist.
6. Verfahren nach einem der Ansprüche 1 bis 4, dadurch ge
kennzeichnet, daß das erste Speicherformat ein "little-endian"-
Format und das zweite Speicherformat ein "big-endian"-Format
ist.
7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch ge
kennzeichnet, daß der Befehl zum Umordnen zwei Befehlsbytes um
faßt.
8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch ge
kennzeichnet, daß das Umordnen der Byte-Reihenfolge in einem
Ausführungstaktzyklus eines Prozessors ausgeführt wird.
9. Anordnung zur Durchführung des Verfahrens nach einem der
Ansprüche 1 bis 8, gekennzeichnet durch
Kopplungsmittel zum Verbinden einer Vielzahl von mit dem Datenfeld beaufschlagten Dateneingabeleitungen mit einer ent sprechenden Anzahl von Datenausgabeleitungen, wobei die Verbin dung so ausgeführt ist, daß zur Konvertierung des in dem ersten Speicherformat gespeicherten Datenfeldes in das zweite Spei cherformat die geordneten Bit-Positionen 0-7, 8-15, 16-23 bzw. 24-31 des Datenfeldes mit den geordneten Bit-Positionen 24-31, 16-23, 8-15 bzw. 0-7 auf den Datenausgabeleitungen verbunden sind, und
Steuermittel, die zur Steuerung der Byte-Reihenfolge-Umord nung des Datenfeldes mit den Kopplungsmitteln des Datenfeldes verbunden sind.
Kopplungsmittel zum Verbinden einer Vielzahl von mit dem Datenfeld beaufschlagten Dateneingabeleitungen mit einer ent sprechenden Anzahl von Datenausgabeleitungen, wobei die Verbin dung so ausgeführt ist, daß zur Konvertierung des in dem ersten Speicherformat gespeicherten Datenfeldes in das zweite Spei cherformat die geordneten Bit-Positionen 0-7, 8-15, 16-23 bzw. 24-31 des Datenfeldes mit den geordneten Bit-Positionen 24-31, 16-23, 8-15 bzw. 0-7 auf den Datenausgabeleitungen verbunden sind, und
Steuermittel, die zur Steuerung der Byte-Reihenfolge-Umord nung des Datenfeldes mit den Kopplungsmitteln des Datenfeldes verbunden sind.
10. Anordnung nach Anspruch 9, dadurch gekennzeichnet, daß
die Kopplungsmittel einen Trommelshifter (20) aufweisen.
11. Anordnung nach Anspruch 9 oder 10, dadurch gekennzeich
net, daß sie eine arithmetische Logikeinheit mit einem mit dem
Register gekoppelten Latch-Speicher zum Verriegeln des Daten
feldes in dem zweiten Speicherformat aufweist.
12. Anordnung nach Anspruch 10 oder 11, dadurch gekenn
zeichnet, daß der Trommelshifter (20) außerdem eine Vielzahl
von Multiplexern (41 bis 119) aufweist, von denen jeder wenig
stens ein Bit des Datenfeldes auf den Dateneingabeleitungen
mit den entsprechenden Datenausgabeleitungen verbindet.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US33164089A | 1989-03-30 | 1989-03-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE4010119A1 DE4010119A1 (de) | 1990-10-04 |
DE4010119C2 true DE4010119C2 (de) | 1995-10-26 |
Family
ID=23294766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4010119A Expired - Lifetime DE4010119C2 (de) | 1989-03-30 | 1990-03-29 | Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor |
Country Status (7)
Country | Link |
---|---|
US (1) | US5948099A (de) |
JP (1) | JPH02285426A (de) |
DE (1) | DE4010119C2 (de) |
FR (1) | FR2645293A1 (de) |
GB (1) | GB2229832B (de) |
HK (1) | HK107293A (de) |
IT (1) | IT1239828B (de) |
Families Citing this family (30)
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 |
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 |
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 |
US7720977B1 (en) * | 2003-02-11 | 2010-05-18 | Foundry Networks, Inc. | Cookie invalidation or expiration by a switch |
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 (en) | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
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 |
WO2012131426A1 (en) * | 2011-03-25 | 2012-10-04 | Freescale Semiconductor, Inc. | Processor system with predicate register, computer system, method for managing predicates and computer program product |
US20140164733A1 (en) * | 2011-12-30 | 2014-06-12 | Ashish Jha | Transpose instruction |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3348207A (en) * | 1963-12-20 | 1967-10-17 | Control Data Corp | Data exchanger |
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 |
EP0198341B1 (de) * | 1985-04-03 | 1992-07-15 | Nec Corporation | Digitale Datenverarbeitungsschaltung mit Bitumkehrfunktion |
ATE82412T1 (de) * | 1986-02-06 | 1992-11-15 | Mips Computer Systems Inc | Funktionseinheit fuer rechner. |
US4814976C1 (en) * | 1986-12-23 | 2002-06-04 | Mips Tech Inc | Risc computer with unaligned reference handling and method for the same |
EP0282969A3 (de) * | 1987-03-18 | 1989-03-15 | Hitachi, Ltd. | Computersystem mit einer Vorrichtung um die Reihenfolge des Bytes zu wechseln |
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 |
DE3886739D1 (de) * | 1988-06-02 | 1994-02-10 | Itt Ind Gmbh Deutsche | Einrichtung zur digitalen Signalverarbeitung. |
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
Also Published As
Publication number | Publication date |
---|---|
HK107293A (en) | 1993-10-22 |
FR2645293B1 (de) | 1994-12-02 |
IT1239828B (it) | 1993-11-15 |
GB2229832B (en) | 1993-04-07 |
IT9019824A1 (it) | 1991-09-27 |
FR2645293A1 (fr) | 1990-10-05 |
DE4010119A1 (de) | 1990-10-04 |
US5948099A (en) | 1999-09-07 |
GB9003070D0 (en) | 1990-04-11 |
GB2229832A (en) | 1990-10-03 |
JPH02285426A (ja) | 1990-11-22 |
IT9019824A0 (it) | 1990-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4010119C2 (de) | Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor | |
DE2755273C2 (de) | ||
DE19914210B4 (de) | Verfahren und Prozessor für eine gestaffelte Ausführung einer Anweisung | |
DE69620499T2 (de) | Matrizen Tranzposition | |
DE19882363B4 (de) | Prozessor mit einem Umgehungsnetzwerk und mehreren Ports | |
DE2322674C3 (de) | Mikroprogramm-Steuereinrichtung | |
DE2748991C2 (de) | Einrichtung zur Umsetzung von Dezimalzahlen | |
DE19735348B4 (de) | Vektorprozessor zur Einzelbefehl-Mehrdaten-Verarbeitung unter Verwendung von mehreren Bänken von Vektorregistern und zugehöriges Verfahren zum Betreiben desselben | |
DE2907181C2 (de) | Prozessor mit einem Befehlssatz-Modifizierregister | |
DE69033444T2 (de) | Signalprozessor mit einer arithmetischen und logischen Einheit und einer Multiplizier-Akkumulatoreinheit, die gleichzeitig betrieben werden können | |
DE2318069C2 (de) | Mikroprogrammierte Rechenanlage mit Erweiterung von Steuerfunktionen mittels festverdrahteter logischer Matrix | |
DE1549523B2 (de) | Datenverarbeitungsanlage | |
EP0010185B1 (de) | Virtuell-Adressiervorrichtung für einen Computer | |
DE19914617A1 (de) | Prozessor und Verfahren zum Ausführen von Befehlen an gepackten Daten | |
DE2117936B2 (de) | Mikroprogrammgesteuerte Zentraleinheit eines elektronischen Datenverarbeitungssystems | |
DE2540975A1 (de) | Multi-mikro-prozessor-einheit | |
CH650600A5 (de) | Zentralprozessoreinheit einer datenverarbeitungsanlage mit operationscode-erweiterungsregister. | |
DE2339636A1 (de) | Programmsteuereinrichtung | |
DE3856139T2 (de) | Mikroprozessor | |
DE3786633T2 (de) | Zweiunddreissig-Bit-Bitscheibe. | |
DE2625113C2 (de) | Speicherschutzeinrichtung | |
DE69804562T2 (de) | Prozessarchitektur und Verfahren zur Durchführung von verschiedenen Adressierungsarten | |
DE69807412T2 (de) | Prozessorarchitekturschema und Befehlssatz zur Maximierung verfügbarer Opcodes und zum Einsetzen verschiedener Adressierungsmodi | |
DE2245284A1 (de) | Datenverarbeitungsanlage | |
DE2747304B2 (de) | Einrichtung zur Mikrobefehlssteuerung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition |