DE4010119C2 - Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor - Google Patents

Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor

Info

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
Application number
DE4010119A
Other languages
English (en)
Other versions
DE4010119A1 (de
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 DE4010119A1 publication Critical patent/DE4010119A1/de
Application granted granted Critical
Publication of DE4010119C2 publication Critical patent/DE4010119C2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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)
  • 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.
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.
DE4010119A 1989-03-30 1990-03-29 Anordnung und Verfahren zur Umordnung eines Speicherformats in einem Mikroprozessor Expired - Lifetime DE4010119C2 (de)

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)

* 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
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)

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

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