DE69124437T2 - Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner - Google Patents

Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner

Info

Publication number
DE69124437T2
DE69124437T2 DE69124437T DE69124437T DE69124437T2 DE 69124437 T2 DE69124437 T2 DE 69124437T2 DE 69124437 T DE69124437 T DE 69124437T DE 69124437 T DE69124437 T DE 69124437T DE 69124437 T2 DE69124437 T2 DE 69124437T2
Authority
DE
Germany
Prior art keywords
program
byte
byte order
bits
address
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
DE69124437T
Other languages
English (en)
Other versions
DE69124437D1 (de
Inventor
Mark I Himmelstein
Earl A Killian
Larry B Weber
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.)
MIPS Tech LLC
Original Assignee
Silicon Graphics Inc
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 Silicon Graphics Inc filed Critical Silicon Graphics Inc
Publication of DE69124437D1 publication Critical patent/DE69124437D1/de
Application granted granted Critical
Publication of DE69124437T2 publication Critical patent/DE69124437T2/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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes

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)
  • Stored Programmes (AREA)
  • Memory System (AREA)

Description

  • Diese Erfindung liegt auf dem Gebiet der digitalen Computer. In einer bevorzugten Ausführungsform wird ein Verfahren und eine Einrichtung offenbart, um einen Computer in die Lage zu versetzen, Programme laufen zu lassen, die eine beliebige von wenigstens zwei verschiedenen Bytereihenfolgen verwenden.
  • Es ist bekannt, daß verschiedene Computersysteme die Datenworte in ihren Speichern unterschiedlich organisieren. Manche Computer speichern Datenworte derart, daß das niedrigststellige Bit an der niedrigsten Adresse abgelegt ist. Diese Maschinen weisen die sog. "kleine Endung" ("LE") Architektur auf. Andere Programme speichern Daten mit dem höchststelligen Bit (oder in manchen Fällen dem Vorzeichenbit) an der niedrigsten Adresse. Diese Maschinen weisen eine "große Endung" ("BE") Architektur auf. Zahlreiche Artikel beschreiben diese Datenorganisationssysteme in größeren Einzelheiten. Ein derartiger Artikel ist Cohen, "On Holy Wars and a Plea for Peace", Computer, 10/81, Seiten 48-54.
  • Ob eine Maschine vom Typ BE oder LE ist, macht kaum einen Unterschied innerhalb dieser einzelnen Maschine. Obgleich jede Architektur ihre Fürsprecher hat, scheint Konsens darüber zu herrschen, daß beide Architekturen gleichermaßen vorteilhaft sind.
  • Die Verwendung von zwei Architekturen stellt ein Problem dar, wenn Maschinen unterschiedlicher Architektur miteinander in Verbindung treten müssen oder wenn Software, die für den einen Maschinentyp geschrieben worden ist, auf einer Maschine von einem anderen Typ laufen gelassen wird. In diesen Situationen würden in einer Maschine gemäß der einen Architektur gespeicherte Daten oder Programme durch eine Maschine von einer verschiedenen Architektur fehlinterpretiert werden. Zusätzlich würden Befehle, die auf Teile der Datenworte zugreifen oder diese manipulieren, stark unterschiedliche Ergebnisse haben.
  • Die Inkompatibilität zwischen den Maschinen mit kleiner und mit großer Endung hat zahlreiche Versuche bewirkt, deren gegenseitige Verfügbarkeit zu verbessern. Die meisten dieser Versuche haben zu einer Hardwareeinrichtung geführt, die üblicherweise in einer Kombination von Shiftregistern und verschiedenen Logikgattern umfaßt ist. Obgleich eine solche Hardware sowohl den Betrieb von BE als auch von LE Befehlen zuläßt, erhöht die Hardware die Komplexität des Coumputersystems und setzt dessen Geschwindigkeit herab. Diese beiden Ergebnisse sind unerwünscht. Die in den Ansprüchen definierte vorliegende Erfindung befaßt sich mit diesem Problem.
  • Die vorliegende Erfindung korrigiert in einem ihrer Ausführungsbeispiele die bekannten Nachteile des Standes der Technik durch das Schaffen eines Softwaremoduls, welches mit den meisten Mikroprozessoren kompatibel ist und welches zuläßt, daß ein BE Programm auf einer LE Maschine läuft und umgekehrt.
  • Das Modul ist Teil der Betriebssystemsoftware und verwendet die Tatsache, daß für Computerworte, die vier Datenbytes enthalten, die Ausführung einer Exklusives-Oder-Operation über die niedrigen zwei Bits der Adresse eines Wortes mit einer binären 3 zu einer Adressierung des erwünschten Bytes für eine Maschine der umgekehrten Bytereihenfolge führt. Obgleich die Diskussion der Erfindung im folgenden nur den Einsatz mit 4-Byte Worte beschreibt, kann die Erfindung für Worte verwendet werden, die eine unterschiedliche Anzahl von Bytes aufweisen.
  • Sowohl eine Software- als auch eine Hardwareimplementation der vorliegenden Erfindung sind möglich. Obgleich eine Softwareimplementation keine zusätzliche oder besondere Hardware erfordert, läuft sie langsamer als eine hartverdrahtete Einrichtung für die Ausführung derselben Funktion. Daher würde u.U. eine Hardwareimplementation der vorliegenden Erfindung wünschenswert sein. In der Hardwareimplementation wird ein Bit in einem Register gesetzt oder nicht gesetzt als Anzeige, ob eine große oder kleine Endungseigenschaft vorliegt. Das Bit zeigt an, daß die Endungseigenschaft gewisser Teilwort-Befehle geändert werden muß.
  • Die Erfindung wird nachstehend im einzelnen beschrieben unter Bezugnahme auf die folgenden Abbildungen, in welchen:
  • Fig. 1 den Vorgang des Ladens eines Wortes von einem Speicher zeigt;
  • Fig. 2 zeigt, wie ein "Lade Byte"-Befehl verschiedene Bytes aufruft in Abhängigkeit von der Bauart der Maschine, die den Befehl ausführt;
  • Fig. 3 zeigt, wie die Bytereihenfolge transponiert werden kann unter Verwendung einer Exklusives-Oder-Anweisung;
  • Fig. 4 zeigt, wie eine Veränderung des Versatzes einer Maschine die Natur der Maschine ändern kann;
  • Fig. 5 zeigt, wie das Übertragen von Daten von einer Datei von der Bytereihenfolge abhängt;
  • Fig. 6 zeigt, wie Ladevorgänge für eine Maschinenbauart in Ladevorgänge für eine verschiedene Maschinenbauart konvertiert werden können;
  • Fig. 7 zeigt, wie die Speicherorte der Bytes in einem Wort vertauscht werden; und
  • Fig. 8 ist ein Diagramm, das den möglichen Maschinenoverhead darstellt, der erforderlich ist, um Bytereihenfolgen zu emulieren.
  • BESCHREIBUNG DER SPEZIFISCHEN AUSFÜHRUNGSFORM(EN)
  • Die vorliegende Erfindung erlaubt einem einzigen Computer, Programme laufen zu lassen, die entweder für BE oder LE Reihenfolge bestimmt sind. Eine einfache Technik, die als Endungs-Umschalten bezeichnet wird, versetzt einen Computer in die Lage, einen Computer einer verschiedenen Bytereihenfolge bei einem geringen Leistungsoverhead zu simulieren.
  • Die meisten Computer sind wortadressierte Maschinen. Auf Daten wird unter durchschnittlichen Bedingungen in Worten zugegriffen, nicht in Teilen von Worten. Zwei Maschinen verschiedener Bytereihenfolgen sind durchaus vergleichbar in bezug auf Worte. Daten werden in Worten gespeichert, und ein Maschinenvorgang ist derselbe zwischen einer Maschine mit großer Endung und mit kleiner Endung bezüglich Vorgängen, die Worte verwenden oder ansprechen. Ein Programm, das Worte lediglich anspricht, würde auf einer Maschine einer beliebigen von beiden Bytereihenfolgen laufen.
  • Dieses Prinzip wird durch den Lade Wort-Befehl, der in Fig. 1 gezeigt ist, demonstriert, welcher Befehl für eine LE Maschine ist. Derselbe Lade Wort-Befehl würde in der identischen Weise funktionieren, wenn eine BE Maschine verwendet werden würde. In dieser Beschreibung wird eine Adresse durch ein Symbolpaar repräsentiert werden, umfassend eine Wortadresse, gefolgt durch eine Zwei-Bit Byteadresse.
  • Der Unterschied zwischen BE und LE Maschinen ist hierin dargestellt durch die Interpretation der niedrigen zwei Bits der Adresse, wenn ein Bytespeichervorgang verwendet wird. Eine LE Maschine wählt die 8 Bits aus, die die niedrigststelligen Bits ("LSB") umfassen, wenn die Adresse 00 als die niedrigen zwei Bits aufweist. Eine BE Maschine wählt die 8 Bits aus, die die höchststelligen Bits ("MSB") umfassen, wenn sie dieselben Adressbits verwendet. In manchen BE Maschinen würde das ausgewählte Byte das Bit für das Vorzeichen der Daten umfassen.
  • Fig. 2 zeigt einen Lade Byte-Vorgang für sowohl eine BE als auch eine LE Maschine. In der Figur wird das Wort, das in dem erwünschten Byte enthalten ist, aus dem Speicher herausgeholt unter Verwendung lediglich der Wortadresse und wird in einem Ausrichtregister plaziert. In beiden Maschinen wird eine Zeitrücksetz-Setze Ende-Markierung, die während der Anfahrroutinen initialisiert wird, verwendet als Anzeige, von welcher Bauart die gerade verwendete Maschine ist und welche 8 Bits in die LSB Positionen in dem Register plaziert werden sollen. Wie in der Figur gezeigt, plaziert der BE Speicher das Vorzeichen und das höchststellige Bit in die niedrigste Byteadresse, und der LE Speicher plaziert das niedrigststellige Bit an denselben Platz.
  • Fig. 3 illustriert das Prinzip, das durch Verwendung der beiden Adressbits niedriger Ordnung für die Nummerierung der Bytes, beginnend entweder mit dem niedrigststelligen Bit ("LSB") oder dem höchststelligen Bit ("MSB"), entweder eine BE oder eine LE Maschine schaffen kann. In dem dargestellten Beispiel enthält das durch die niedrigen zwei Bits 00 für die BE Maschine adressierte Byte ein 'M' und die zwei hohen Bits 11 adressieren ein Byte, das ein 'S' enthält. Für die LE Maschine ist die Situation genau umgekehrt -das durch 00 adressierte Byte enthält ein 'S' und das durch 11 adressierte Byte enthält ein 'M'. Wie dargestellt, führt die Ausführung eines Exklusives-Oder ('XOR') über die von jeder der Maschinen verwendete Adresse mit "11" (Binär 3) zu der korrekten Byteadresse für den Zugriff auf dieselben Daten unter Verwendung der entgegengesetzten Datenreihenfolgekonvention. Fig. 4 zeigt ferner, wie die beiden Maschinentypen wirklich sehr ähnlich sind dadurch, daß ein geringfügiges Ändern des Versatzes einer gegebenen Adresse eine gegebene Maschine dazu veranlassen kann, wie eine Maschine einer unterschiedlichen Bytereihenfolge zu handeln. Es sollte festgehalten werden, daß der Versatz für unterschiedliche Maschinen in diesem Beispiel Spiegelbilder voneinander sind.
  • Ursprünglich mag das Behandeln von BE und LE Maschinen als identisch in bezug auf Worte inkorrekt erscheinen. Im allgemeinen ist bekannt, daß sowohl eine BE als auch eine LE Maschine von derselben AS- CII-Datei lesen kann, wobei Probleme auftreten, wenn die Maschinen Binärdaten bzgl. Wortlängen austauschen. Wenn aufeinanderfolgende Bytes in eine Datei geschrieben werden, sind die Ergebnisse für beide Maschinentypen erwartungsgemäß. Wenn jedoch die Menge von Bytes als einzelnes Wort behandelt wird, sind die Ergebnisse oft inkorrekt. Diese Diskrepanzen können erklärt werden, wenn man weiß, daß das Eingabe/Ausgabe ('I/O')-System jeder Maschine weiß, wie Worte in eine Byte-Kette disassembliert werden. Alle I/O-Operationen sind zeichenorientiert. Jedes System und jede Maschine hat eingebaut Mittel zum Assemblieren und Disassemblieren von Worten als Teil seiner I/O-Einrichtung. Fig. 5 zeigt eine Zeichenkette in einer Datei 15 und wie diese Zeichen durch eine BE Maschine 20 und eine LE Maschine 25 in ein Wort gepackt werden. Wie die Figur darstellt, ist es die Kombination der Weise, wie ein Prozessor Bytes aus einem Wort extrahiert und wie das I/O-System die Worte assembliert und disassembliert, welches etabliert, ob eine Maschine BE oder LE ist.
  • Emulation der Bytereihenfolge
  • Wie die vorhergehende Diskussion anzeigt, wird eine richtige Bytereihenfolgebehandlung durch zwei Dinge gesteuert: die Interpretation der niedrigen Adressbits und die I/O-Regeln für das Übersetzen zwischen einem Bytestrom und einem Wort im Speicher. Wenn diese beiden Ausgänge entweder in einer Hardware oder in einer Software bewältigt werden können, kann eine Maschine geschaffen werden, die ein Programm in jeglicher Bytereihenfolge laufen läßt.
  • Die erste Konvention, die Interpretation der niedrigen Adressbits, ist in einer bevorzugten Ausführungsform der vorliegenden Erfindung als Teil des Computers in einer Software implementiert und beruht auf der Beobachtung, daß Byteadressen in einer Bytereihenfolge dazu gebracht werden können, jene der anderen Bytereihenfolge zu simulieren, indem die beiden Bits niedriger Ordnung der ersten Bytereihenfolge mit einer binären drei einer Exklusives-Oder-Operation unterzogen werden. Die Software für die Ausführung dieser Aufgabe funktioniert bei oder nach der Kompilierzeit des Programms. Beispielsweise kann der Computer, der die vorliegende Erfindung für die Invertierung der Bytereihenfolge enthält, das zu ladende Programm lesen und jede partielle Referenz auf ein Speicherwort anpassen, um den verschiedenen Konventionen, wie die Bytes in einem Wort gepackt sind, Rechnung zu tragen.
  • Drei Standardtypen von Byteadressierbefehlen müssen in einem Konversionsprogramm aufgenommen werden, um in konsistenter Weise die Bytereihenfolge zu ändern oder anzupassen. Diese Fälle sind in Fig. 6 dargestellt.
  • In Fall 1 ist bekannt, daß das Basisregister immer auf ein Wort ausgerichtet ist. In diesem Fall wird die Berechnung der neuen Basisadresse durch den Systemcompiler ausgeführt, der im wesentlichen den Versatz mit einer binären 3 einer Exklusives-Oder-Operation unterwirft, um die richtige Versetzung anzugeben.
  • In dem zweiten Fall besteht Null oder kein Versatz, und die Basisausrichtung ist unbekannt. Wenn Bytes in dieser Weise adressiert werden, wird der Wert in dem Basisregister mit einer binären 3 einer Exklusives-Oder-Operation unterworfen. Das Ergebnis wird als der korrekte Versatz verwendet.
  • Wenn weder die Basisausrichtung noch die Versatzausrichtung bekannt sind, werden die drei in Fig. 6 (C) gezeigten Befehle verwendet, um das korrekte Byte in der neuen Reihenfolge zu adressieren. Diese Befehle laufen sehr schnell, so daß ein Ausführen der zusätzlichen Befehle kaum die Systemleistungsfähigkeit berührt.
  • Wie gesagt, behandeln alle drei Fälle die richtige Interpretation der niedrigen Adressbits. Obgleich das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung Software für die Ausführung dieser Adresskonversionen verwendet, kann eine Hardwaremodifikation des Systemprozessors dieselbe Zielsetzung erreichen. Manche Prozessoren erlauben es, die Bytereihenfolge des Prozessors am Systemrücksetzzeitpunkt festzulegen. In diesem Fall ist es relativ leicht, die Maschinenbytereihenfolge in Abhängigkeit von dem jeweiligen Programm (Aufgabe) anzupassen, unter Verwendung eines Benutzermodusprogramms. Die einfachste Weise dies zu tun, ist es, ein Bit in dem Statusregister zu definieren, das anzeigt, ob der neue Prozess in derselben oder einer verschiedenen Bytereihenfolge laufen soll als die Bytereihenfolge, die entweder in dem vorhergehenden Programm oder bei dem letzten Rücksetzen spezifiziert wurde. Das Setzen dieser Markierung würde für die Dauer des neuen Programms ein universelles Umschalten der Bytereihenfolge bewirken. Wenn diese Technik in Hardware implementiert ist, merkt sich das System, daß das Bit, das eine unterschiedliche "Endungseigenschaft" anzeigt, angeschaltet wurde. Befehle, die auf Teile von Worten zugreifen, werden nicht verändert. Statt dessen hat der 32-Bit Adressbus eine Verzweigung. 30 Bits der Adresse werden in einem Ladeausrichtregister plaziert. Die verbleibenden zwei Bits werden mit einer binären 3 einer Exklusives- Oder-Operation unterzogen, um die korrekte Byteadresse zu erhalten. Die 30-Bits und die 2-Bits werden anschließend in dem Ladeausrichtteil rekombiniert. Dieses Verfahren setzt die Systemleistung nicht herab, da das Programm exakt so arbeitet, als wenn die Zeitrücksetzmarkierung auf die angebene Bytereihenfolge gesetzt worden wäre. Diese Vorgänge werden nur auftreten, wenn das System sich gleichzeitig im Benutzermodus befindet und das umgekehrte-Endungseigenschafts-Bit an ist. Die betroffenen Befehle umfassen die Lade- und die Speicherbefehle.
  • Die zweite Konvention, nämlich die Konversion von Worten in und von Byteströmen in dem I/O-System, wird in dem bevorzugten Ausführungsbeispiel auch als Software verwirklicht. Durch gleichförmiges Wortvertauschen eines jeden Datenpuffers, der gelesen wird oder auf den geschrieben wird, kann die in die Maschine eingebaute Konvention eingepaßt werden. Wortvertauschen ist der Vorgang des Austauschens der beiden äußeren Bytes und der beiden inneren Bytes (Umschalten von Bytes 0 und 3 und Umschalten von Bytes 1 und 2). Wortvertauschen und der für die Implementation erforderliche Code sind in Fig. 7 dargestellt.
  • Implementation eines Endungs-Schalters
  • Zahlreiche verschiedene Verfahren für die Implementation der beiden beschriebenen Konventionen sind möglich. Da viele Maschinen nicht die hier diskutierten Hardwaremodifikationen für eine Bytereihenfolgeemulation aufweisen werden, wird auch eine reine Softwareemulation betrachtet werden.
  • Wenn wir unterstellen, daß der Computer, auf welchem LE und BE Programme laufen sollen, keine Hardwaremodifikationen aufweist, könnte ein Konversionsprogramm verwendet werden. Das Programm würde sowohl das Programm als auch die initialisierten Daten wortvertauschen. Auch müßte der Code zum Adressieren der partiellen Worte richtig "überschrieben" werden. Die Modifikationen könnten vorgenommen werden, wenn das Programm in die Maschine eingegeben wird, und das veränderte Programm kann in seiner übersetzten Form gespeichert werden.
  • Wenn wir in einer Umgebung, umfassend ein Netzwerk von Maschinen unterschiedlicher Bytereihenfolge, irgendein Programm auf irgendeiner Maschine ausführen wollen, kann die Bytereihenfolge nicht vor Ausführung festgelegt werden. In diesem Fall wird das Programm als Teil seiner Ausführung modifiziert werden, wobei die Konversion stattfindet, wenn das Programm in den Systemspeicher verlagert wird. Die Ausführzeit des Konversionsprogramms ist gering, und der Arbeitsaufwand für das Modifizieren der partiellen Wortspeicheroperationen ist auch relativ gering. Wenn die Maschine die vorstehend angesprochene Hardwaremodifikation aufweist, um die niedrigen zwei Bits in einer Adresse zu interpretieren, wird einzig eine Programmodifikation benötigt, um das Programm und die initialisierten Daten wortzuvertauschen. Wenn die Wortvertauschung verzögert wird, bis das Anwendungsprogramm aktuell geladen ist (Wortvertauschung auf Nachfrage), wird der Maschinenoverhead, der für den Konversionsprozess erforderlich ist, über die gesamte Laufzeit des Programms amortisiert.
  • Unterschiede zwischen BE und LE Maschinen betreffend die Serialisierung von Datenbytes in dem I/O-System werden behandelt, wenn Daten von dem Ausgabepuffer gelesen oder auf diesen geschrieben werden. Die gesamten Daten in dem Ausgabepuffer werden unmittelbar nach dem Lesen oder unmittelbar vor dem Schreiben des physischen I/O von bzw. auf die Platte wortvertauscht.
  • Betriebssystemunterstützung
  • Das Betriebssystem muß in der Lage sein, sowohl die umgekehrte Bytereihenfolge zu emulieren als auch die Systemvoraussetzungen des gerade laufenden Programms zu emulieren. Dies kann sowohl einen kompatiblen Systemaufrufvektor als auch möglicherweise die Konversion der durchlaufenden Datenstruktur erfordern. Jedes binäre Lademodul hat seine Bytereihenfolge, die am Anfang des Moduls gespeichert ist. Diese informiert das Betriebssystem über die Maßnahmen, die benötigt werden, um die Systemvoraussetzungen des Programms zu emulieren.
  • Ähnlichkeiten zwischen UNIX-Systemen machen viele der Betriebssystemschnittstellen von anderen Systemen relativ leicht zu unterstützen. Wenn es inkompatible Elemente in dem Systemaufrufvektor gibt, kann damit auf verschiedene Weise umgegangen werden. Das Betriebssystem kann eine Binärzahl unterschiedlicher "Endungseigenschaft" identifizieren und einen separaten Vektor auswählen. Wenn es keine oder nur wenige Überlappungen in den zugewiesenen Systemaufrufen gibt, kann der Eingang zu dem entgegengesetzten Endungssystemaufruf die durchlaufende Datenstruktur (wenn überhaupt) ändern und in den ursprünglichen Systemaufruf verzweigen.
  • Programme werden als Dateien in einer Bytereihenfolge gespeichert, welche unterstellt, daß der Eingabe/Ausgabe-Mechanismus die Zeichendaten in Worte konvertiert. Daher muß die Organisation von Programmen geändert werden, bevor das Programm ausgeführt wird. Dies ist, wie beschrieben, relativ leicht, da jeder Befehl in dem Lademodul und jedes initialisierte Datenwort vertauscht werden wird. Ein Grund dafür, daß die Bytes vertauscht werden, ist, weil die Netzwerkschnittstelle Byteorientiert ist und intrinsisch Worte vertauscht, wenn sie von BE zu LE und zurück wechselt. Eine Kompensation wird daher benötigt.
  • Fig. 8 zeigt eine Schätzung des Einflusses der Simulation der umgekehrten Bytereihenfolge in Software. Wie vorstehend ausgeführt, unterliegt die Hardwareerweiterung keinen Leistungskosten während des Berechnungsteils des Programms, da das Programm exakt so läuft, wie es auf einer Maschine der anderen Bytereihenfolge laufen würde. Wie in Fig. 8 gezeigt, liegt der Bereich der Software(laufzeit)strafe zwischen 2 und 8,8 %. Die Konvertierung der Eingabe-/Ausgabepuffer wird ebenfalls einen gewissen Leistungsverlust bewirken. Dieser liegt in der Ordnung von 11,7 % für das längere Lesen und Wortvertauschen einer Datei gegenüber dem einfachen Lesen der Datei.
  • Schlußfolgerung
  • Die in der Beschreibung gezeigte und diskutierte Software versetzt ein Programm in die Lage, auf sowohl einer LE als auch einer BE Maschine zu laufen. Datenaustausch zwischen Systemen unterschiedlicher Bytereihenfolgen, umfassend Daten, die auf Platte oder Speicher gespeichert sind, liegt nicht innerhalb der spezifischen Lehren dieser Erfindung, aber die vorliegende Lehre wäre hilfreich beim Lösen der Probleme, die bei solchen Transfers auftreten.

Claims (4)

1. Verfahren zum Konvertieren eines Programms, das eine erste vorgegebene Bytereihenfolgeadressiermethode verwendet, in ein Programm, das eine zweite vorgegebene Bytereihenfolgeadressiermethode verwendet, wobei die zweite vorgegebene Bytereihenfolge gegenüber der ersten vorgegebenen Bytereihenfolge umgekehrt ist, umfassend die Schritte:
Finden aller Befehle in dem Programm, die Datenbytes verarbeiten;
Ausführen einer exklusiven ODER-Verknüpfung der niedrigen zwei Bit der Byteadresse mit einer binären drei; und
Ersetzen der niedrigen zwei Bit der Byteadresse mit dem Ergebnis der exklusiven ODER-Verknüpfung.
2. Vorrichtung zum Konvertieren eines Programms, das eine erste vorgegebene Bytereihenfolgeadressiermethode verwendet, in ein Programm, das eine zweite vorgegebene Bytereihenfolgeadressiermethode verwendet, wobei die zweite vorgegebene Bytereihenfolge gegenüber der ersten vorgegebenen Bytereihenfolge umgekehrt ist, umfassend:
Mittel zum Finden aller Befehle in dem Programm, die Datenbytes verarbeiten;
Mittel zum Ausführen einer exklusiven ODER-Verknüpfung der niedrigen zwei Bit mit einer binären drei; und
Mittel zum Ersetzen der niedrigen zwei Bit der Byteadresse durch das Ergebnis der exklusiven ODER-Verknüpfung.
3. Ein Compiler, der in der Lage ist, Programme der selben oder einer verschiedenen Bytereihenfolgeadressiermethode für einen digitalen Computer, der eine erste vorgegebene Bytereihenfolgeadressiermethode aufweist, zu kompilieren, wobei die verschiedene Bytereihenfolge gegenüber der ersten vorgegebenen Bytereihenfolge umgekehrt ist, wobei der Compiler umfaßt:
Mittel zum Erfassen, ob ein neues Programm eine verschiedene Bytereihenfolgeadressiermethode aufweist als das vorhergehend kompilierte Programm; und
Mittel zum Konvertieren der Befehle, die auf Computerworte zugreifen, in die vorgegebene Bytereihenfolgeadressiermethode des Computers und umfassend:
Mittel zum Finden aller Befehle in dem Programm, die Datenbytes verarbeiten;
Mittel zum Ausführen einer exklusiven ODER-Verknüpfung der niedrigen zwei Bit der Byteadresse mit einer binären drei; und
Mittel zum Ersetzen der niedrigeren zwei Bit der Byteadresse durch das Ergebnis der exklusiven ODER-Verknüpfung.
4. Compiler nach Anspruch 3, bei dem das Mittel zum Konvertieren der Befehle ferner umfaßt:
Mittel zum Erfassen der niedrigeren zwei Bit der Byteadresse.
DE69124437T 1990-08-09 1991-08-06 Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner Expired - Lifetime DE69124437T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US56492390A 1990-08-09 1990-08-09

Publications (2)

Publication Number Publication Date
DE69124437D1 DE69124437D1 (de) 1997-03-13
DE69124437T2 true DE69124437T2 (de) 1997-07-03

Family

ID=24256454

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69124437T Expired - Lifetime DE69124437T2 (de) 1990-08-09 1991-08-06 Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner

Country Status (4)

Country Link
US (2) US5398328A (de)
EP (1) EP0470570B1 (de)
JP (1) JP3556955B2 (de)
DE (1) DE69124437T2 (de)

Families Citing this family (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69124437T2 (de) * 1990-08-09 1997-07-03 Silicon Graphics Inc Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner
JP2763207B2 (ja) * 1991-04-25 1998-06-11 株式会社東芝 情報処理装置
US5408664A (en) * 1992-06-19 1995-04-18 Silicon Graphics, Incorporated System and Method for booting computer for operation in either of two byte-order modes
KR950702719A (ko) * 1992-07-13 1995-07-29 윌리엄 이. 힐러 프로그램 루프를 처리하는 장치를 갖는 데이타-프로세싱 시스템(data-processing system with a device for handling program loops)
FR2693586B1 (fr) * 1992-07-13 1994-09-30 Texas Instruments France Dispositif de lecture/écriture de données en mode sélectif dans un système de traitement de données.
JP3187539B2 (ja) * 1992-07-28 2001-07-11 株式会社東芝 データ転送装置
WO1994015269A2 (en) * 1992-12-21 1994-07-07 Olivetti Advanced Technology Center, Inc. Apparatus, system and method for facilitating communication between components having different byte orderings
US5519842A (en) * 1993-02-26 1996-05-21 Intel Corporation Method and apparatus for performing unaligned little endian and big endian data accesses in a processing system
US5524256A (en) * 1993-05-07 1996-06-04 Apple Computer, Inc. Method and system for reordering bytes in a data stream
US5603041A (en) * 1994-12-13 1997-02-11 International Business Machines Corporation Method and system for reading from a m-byte memory utilizing a processor having a n-byte data bus
US5898857A (en) * 1994-12-13 1999-04-27 International Business Machines Corporation Method and system for interfacing an upgrade processor to a data processing system
US5928349A (en) * 1995-02-24 1999-07-27 International Business Machines Corporation Mixed-endian computing environment for a conventional bi-endian computer system
US5687337A (en) * 1995-02-24 1997-11-11 International Business Machines Corporation Mixed-endian computer system
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
US5634013A (en) * 1995-05-03 1997-05-27 Apple Computer, Inc. Bus bridge address translator
US5828853A (en) * 1995-05-08 1998-10-27 Apple Computer, Inc. Method and apparatus for interfacing two systems operating in potentially differing Endian modes
US5778406A (en) * 1995-06-30 1998-07-07 Thomson Consumer Electronics, Inc. Apparatus for delivering CPU independent data for little and big endian machines
US5907865A (en) * 1995-08-28 1999-05-25 Motorola, Inc. Method and data processing system for dynamically accessing both big-endian and little-endian storage schemes
US5819117A (en) * 1995-10-10 1998-10-06 Microunity Systems Engineering, Inc. Method and system for facilitating byte ordering interfacing of a computer system
US5781923A (en) * 1996-05-28 1998-07-14 Hewlett-Packard Company Adding a field to the cache tag in a computer system to indicate byte ordering
US5761490A (en) * 1996-05-28 1998-06-02 Hewlett-Packard Company Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US5898896A (en) * 1997-04-10 1999-04-27 International Business Machines Corporation Method and apparatus for data ordering of I/O transfers in Bi-modal Endian PowerPC systems
US5938763A (en) * 1997-08-06 1999-08-17 Zenith Electronics Corporation System for transposing data from column order to row order
US7616200B1 (en) 1998-06-12 2009-11-10 3Dlabs Inc. Ltd. System for reducing aliasing on a display device
WO2000004484A2 (en) 1998-07-17 2000-01-27 Intergraph Corporation Wide instruction word graphics processor
WO2000004496A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processor with texture memory allocation system
US6157393A (en) * 1998-07-17 2000-12-05 Intergraph Corporation Apparatus and method of directing graphical data to a display device
WO2000004482A2 (en) 1998-07-17 2000-01-27 Intergraph Corporation Multi-processor graphics accelerator
US6518971B1 (en) 1998-07-17 2003-02-11 3Dlabs Inc. Ltd. Graphics processing system with multiple strip breakers
WO2000004436A1 (en) 1998-07-17 2000-01-27 Intergraph Corporation Graphics processing with transcendental function generator
US6480913B1 (en) * 1998-07-17 2002-11-12 3Dlabs Inc. Led. Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter
US6188410B1 (en) 1998-07-17 2001-02-13 3Dlabs Inc. Ltd. System for processing vertices from a graphics request stream
US6459453B1 (en) 1998-07-17 2002-10-01 3Dlabs Inc. Ltd. System for displaying a television signal on a computer monitor
DE69929450D1 (en) * 1998-10-10 2006-04-06 Transitive Ltd Endian-transformation
GB9822074D0 (en) * 1998-10-10 1998-12-02 Univ Manchester Endian transformation
US6674440B1 (en) 1999-04-05 2004-01-06 3Dlabs, Inc., Inc. Ltd. Graphics processor for stereoscopically displaying a graphical image
US6671219B1 (en) * 1999-05-28 2003-12-30 Hitachi, Ltd. Storage, storage method, and data processing system
US6691307B2 (en) * 1999-08-03 2004-02-10 Sun Microsystems, Inc. Interpreter optimization for native endianness
US6349360B1 (en) * 1999-11-09 2002-02-19 International Business Machines Corporation System bus read address operations with data ordering preference hint bits
US6874063B1 (en) * 1999-11-09 2005-03-29 International Business Machines Corporation System bus read data transfers with data ordering control bits
US6360297B1 (en) 1999-11-09 2002-03-19 International Business Machines Corporation System bus read address operations with data ordering preference hint bits for vertical caches
US6535957B1 (en) 1999-11-09 2003-03-18 International Business Machines Corporation System bus read data transfers with bus utilization based data ordering
US6819325B2 (en) * 2000-03-07 2004-11-16 Microsoft Corporation API communications for vertex and pixel shaders
US7159041B2 (en) * 2000-03-07 2007-01-02 Microsoft Corporation Method and system for defining and controlling algorithmic elements in a graphics display system
US6567884B1 (en) 2000-03-21 2003-05-20 Cypress Semiconductor Corp. Endian-controlled counter for synchronous ports with bus matching
JP3776732B2 (ja) * 2001-02-02 2006-05-17 株式会社東芝 プロセッサ装置
US20020116852A1 (en) * 2001-02-27 2002-08-29 Kock Lori Ann Mat for visual artwork and method of making same
US6828975B2 (en) * 2001-03-01 2004-12-07 Microsoft Corporation Method and system for managing graphics objects in a graphics display system
US6831635B2 (en) * 2001-03-01 2004-12-14 Microsoft Corporation Method and system for providing a unified API for both 2D and 3D graphics objects
US7023431B2 (en) * 2001-03-01 2006-04-04 Microsoft Corporation Method and system for providing data to a graphics chip in a graphics display system
US6874150B2 (en) 2001-03-01 2005-03-29 Microsoft Corporation Method and system for maintaining connections between surfaces and objects in a graphics display system
US6812923B2 (en) 2001-03-01 2004-11-02 Microsoft Corporation Method and system for efficiently transferring data objects within a graphics display system
KR100445637B1 (ko) * 2002-07-03 2004-08-25 삼성전자주식회사 엔디안 정보를 제공하는 컴퓨터 시스템 및 그 컴퓨터시스템의 데이터 전송 방법
US7404019B2 (en) * 2003-03-07 2008-07-22 Freescale Semiconductor, Inc. Method and apparatus for endianness control in a data processing system
JP4446373B2 (ja) 2003-03-19 2010-04-07 パナソニック株式会社 プロセッサ、データ共有装置
US20050114549A1 (en) * 2003-11-26 2005-05-26 Durham David M. Mechanism for extensible binary mappings for adaptable hardware/software interfaces
US7721069B2 (en) * 2004-07-13 2010-05-18 3Plus1 Technology, Inc Low power, high performance, heterogeneous, scalable processor architecture
US7634762B1 (en) 2005-04-19 2009-12-15 Paravirtual Corp. Selective post-compile conversion
CN102150139A (zh) 2008-09-12 2011-08-10 瑞萨电子株式会社 数据处理装置及半导体集成电路装置
US20180232427A1 (en) * 2017-02-13 2018-08-16 Raytheon Company Data structure endian conversion system
CN109976751B (zh) * 2019-03-28 2022-12-27 中科寒武纪科技股份有限公司 模型操作方法、相关装置及计算机可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4109310A (en) * 1973-08-06 1978-08-22 Xerox Corporation Variable field length addressing system having data byte interchange
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US4215402A (en) * 1978-10-23 1980-07-29 International Business Machines Corporation Hash index table hash generator apparatus
JPS6019809B2 (ja) * 1979-12-26 1985-05-18 株式会社日立製作所 デ−タ処理装置
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
US4559614A (en) * 1983-07-05 1985-12-17 International Business Machines Corporation Interactive code format transform for communicating data between incompatible information processing systems
EP0236615B1 (de) * 1986-02-06 1992-11-11 Mips Computer Systems, Inc. Funktionseinheit für Rechner
US4999808A (en) * 1986-09-26 1991-03-12 At&T Bell Laboratories Dual byte order data processor
US4814976C1 (en) * 1986-12-23 2002-06-04 Mips Tech Inc Risc computer with unaligned reference handling and method for the same
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
JP2748957B2 (ja) * 1987-09-30 1998-05-13 健 坂村 データ処理装置
JP2633331B2 (ja) * 1988-10-24 1997-07-23 三菱電機株式会社 マイクロプロセッサ
US5265237A (en) * 1988-12-07 1993-11-23 Xycom, Inc. Byte swapping apparatus for selectively reordering bytes of an N-bit word communicated between an at computer and VME bus
DE69124437T2 (de) * 1990-08-09 1997-07-03 Silicon Graphics Inc Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner

Also Published As

Publication number Publication date
JPH06124201A (ja) 1994-05-06
EP0470570A3 (en) 1993-06-30
US5398328A (en) 1995-03-14
EP0470570A2 (de) 1992-02-12
DE69124437D1 (de) 1997-03-13
US5572713A (en) 1996-11-05
JP3556955B2 (ja) 2004-08-25
EP0470570B1 (de) 1997-01-29

Similar Documents

Publication Publication Date Title
DE69124437T2 (de) Verfahren und Vorrichtung zum Umkehren von Byteordnung in einem Rechner
DE1499722C2 (de) Einrichtung zur Modifizierung von Informationswörtern
DE3587591T2 (de) Mikroprozessor für Forth-ähnliche Sprache.
DE69129565T2 (de) Hochleistungsfähiger Emulator mit Pipelining
DE68907518T2 (de) Inhaltsadressierte Speicheranordnung.
DE3586603T2 (de) Datenprozessor fuer interpretierende und kompilierte sprache.
DE1931966C3 (de) Datenverarbeitungsanlage mit Assoziativspeichern
EP0097725B1 (de) Einrichtung im Befehlswerk eines mikroprogrammgesteuerten Prozessors zur direkten hardwaregesteuerten Ausführung bestimmter Instruktionen
DE2113891A1 (de) Datenverarbeitungssystem
DE2230102A1 (de) Rechenwerk fuer variable wortlaengen
DE2813128A1 (de) Mikroprogrammspeicher
DE2505384A1 (de) Steuerteil fuer eine elektronische datenverarbeitungsanlage
DE2846495A1 (de) Digitales datenverarbeitungssystem
DE2424810A1 (de) Datenverarbeitungsanlage, insbesondere kleine mikroprogramm-datenverarbeitungsanlage mit mehrsilbenmikrobefehlen
DE3856139T2 (de) Mikroprozessor
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
DE69616718T4 (de) Vorrichtung und verfahren zur bestimmung von adressen fehlausgerichteter daten
DE69229771T2 (de) Datenverarbeitungsverfahren und -vorrichtung
DE69130513T2 (de) Verfahren zur Durchführung boolescher Operationen zwischen zwei beliebigen Bits von zwei beliebigen Registern
DE2458096A1 (de) Mikroprogramm-ladeeinrichtung fuer die ladezeit-festlegung
DE2625113C2 (de) Speicherschutzeinrichtung
DE2458286A1 (de) Datenverarbeitungssystem zum verschieben von datenfeldern mit verschiedenen strukturen
DE3900246A1 (de) Informationsverarbeitungsvorrichtung
DE2336676C3 (de) Einrichtung zur Modifizierung von Mikroprogrammbefehlen
DE3501903A1 (de) Im pipelinebetrieb arbeitende datenverarbeitungseinrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: MIPS TECHNOLOGIES,INC., MOUNTAIN VIEW,CALIF.,, US