DE69505717T2 - Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen - Google Patents
Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen UnterprogrammanrufenInfo
- Publication number
- DE69505717T2 DE69505717T2 DE69505717T DE69505717T DE69505717T2 DE 69505717 T2 DE69505717 T2 DE 69505717T2 DE 69505717 T DE69505717 T DE 69505717T DE 69505717 T DE69505717 T DE 69505717T DE 69505717 T2 DE69505717 T2 DE 69505717T2
- Authority
- DE
- Germany
- Prior art keywords
- domain
- address
- cross
- program
- crs
- 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 - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 20
- 238000001514 detection method Methods 0.000 claims description 8
- 102100029338 Suppressor of SWI4 1 homolog Human genes 0.000 description 39
- 101000700835 Homo sapiens Suppressor of SWI4 1 homolog Proteins 0.000 description 35
- 238000010563 solid-state fermentation Methods 0.000 description 35
- 230000006870 function Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 101710144764 Suppressor of SWI4 1 homolog Proteins 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- 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
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation of subprogram jump address
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Description
- Diese Erfindung betrifft allgemein Computersysteme, und insbesondere Techniken zum Erfassen und Ausführen von Kreuzdomänen-Unterprogrammaufrufen (cross-domain calls). Die Erfindung findet insbesondere Anwendung zum Betreiben eines Emulationssystems, um Programme auf einem Computersystem auszuführen, das eine Architektur hat, die eine andere als diejenige ist, für die die Programme geschrieben wurden. Die Erfindung findet auch insbesondere Anwendung bei einem Mehrfachprozessor-Computersystem, in welchem die Prozessoren unterschiedliche Architekturen haben.
- Eine Computerarchitektur kann als die Attribute eines Computers definiert werden, die auf der Hardware- und Maschinensprachenebene eingerichtet sind, im Gegensatz zu diejenigen, die zur Manipulation auf einer höheren Softwareebene verfügbar sind, wie beispielsweise durch Anwenderprogramme. Allgemein gesagt enthalten Architekturattribute beispielsweise einen Befehlssatz, ein Befehlsformat, Operationscodes, Adressierungsmoden, Registerstellen und Speicherstellen, einschließlich jenen, die einen Maschinenzustand definieren.
- CISC und RISC sind zwei Typen von Architekturen, die heutzutage weitverbreitet sind. "CISC" steht für ein Berechnen mit einem komplexen Befehlssatz, wie es beispielsweise in IBMTM-kompatiblen Personalcomputern verkörpert ist, in die 80 · 86-Prozessoren von Intel Corporation eingebaut sind. CISC-Maschinen sind durch Befehlsformate variabler Länge, eine große Anzahl von Adressierungsmoden, Registerdateien mit kleinen bis zu mittleren Größen, Register-zu-Speicher-(oder Speicher-zu-Speicher-)Befehlen und eine mikrocodierte Ausführung von Befehlen charakterisiert. "RISC" steht für ein Berechnen mit einem reduzierten Befehlssatz, wie es beispielsweise in Computern verkörpert ist, in die ALPHA AXPTM-Prozessoren von Digital Equipment Corporation eingebaut sind. RISC-Architekturen sind allgemein durch einfache Befehlsformate mit fester Länge, eine kleine Anzahl von Adressierungsmoden, große Registerdateien, ein Lade- Speicher-Befehlssatzmodell und eine direkte Hardwareausführung von Befehlen charakterisiert.
- Es ist oft wünschenswert, Programme auf Computern auszuführen, die mit einem Architekturtyp übereinstimmen, obwohl die Programme zur Ausführung auf Maschinen entwickelt wurden, die mit einem anderen unterschiedlichen Architekturtyp übereinstimmen. Beispielsweise kann es nötig werden, daß Programme, die zur Ausführung auf CISC-Computern entwickelt sind, auf RISC- Maschinen laufen. Um dies durchzuführen muß irgendeine Form von "Software"- Brücke zwischen den zwei Architekturen eingerichtet werden.
- Eine Komplikation beim Bereitstellen jener Software-Brücke entsteht aus der Notwendigkeit, bei vielen CISC-(z. B. 80 · 86)-Programmen, nach Systemservicefunktionen ("SSF") zum Unterstützen einer Programmausführung. SSF enthalten typischerweise (i) grundsätzliche Eingabe/Ausgabe-System- ("BIOS")-Funktionen zum Steuern von Video, eines Plattenzugriffs, eines Systemtakts, etc., und (ii) Betriebssystemfunktionen zum Bereitstellen eines Programmladens und -entladens, von Netzwerksteueroperationen, eines Dateienservice, etc.
- Während einer Ausführung "rufen" die Anwenderprogramme häufig SSFs "auf", d. h. sie verzweigen zu SSF-Unterprogrammen, die normalerweise vorgesehen sind, wie beispielsweise durch die CISC-Systemsoftware. Jede Verzweigung (d. h. ein Wechsel vom sequentiellen Programmablauf, der einen Aufruf anzeigt) wird direkt oder indirekt eine Zieladresse spezifizieren, zu welcher eine Steuerung weiterzureichen ist.
- Beispielsweise können die Anwenderprogramme Verzweigungen in der Form von Unterbrechungen enthalten. Die Unterbrechungen spezifizieren Unterbrechungsnummern zur Verwendung als Indizes in eine Unterbrechungsvektortabelle ("IVT"), die Zieladressen von SSF-Unterprogrammieren identifiziert. Eine Steuerung wird zu dem SSF-Unterprogramm weitergereicht, das durch die Unterbrechungsnummer bestimmt wird. Anwendbare Standards für IBMTM-kompatible Personalcomputer spezifizieren SSF-Unterprogramme, auf die über bestimmte Unterbrechungsnummern zugreifbar ist. Eine andere Form von Verzweigungen enthält Verzweigungsbefehle und Sprungbefehle, die typischerweise Zieladressen direkt spezifizieren.
- Die Software-Brücke zum Ermöglichen einer Kreuzdomänen-Architekturausführung von Anwenderprogrammen kann auf eine Anzahl unterschiedlicher Arten eingerichtet werden. Als erstes kann das Anwenderprogramm in ein neues Programm übersetzt werden, das beispielsweise auf dem RISC-Computer zur Ausführung gelangt. Dies kann ein zeitaufwendiges teures Verfahren sein, welches die Autorisierung eines Besitzers irgendwelcher Urheberrechte an dem Programm erforderlich machen kann. Als zweites kann als Alternative ein RISC-Computer zum vorzugsweise transparenten Emulieren der CISC-Architektur verwendet werden, um ihm dadurch zu ermöglichen, CISC-Anwenderprogramme auszuführen.
- Während einer Emulation erzeugt der RISC-Computer die Illusion einer CISC- Maschine für Programmausführungszwecke. Ein Erzeugen jener Illusion erfordert eine Emulation der Betriebsumgebung der CISC-Maschine einschließlich ihres Prozessors, ihrer Systemsoftware, ihrer peripheren Hardware und ihres Speichers; kurz gesagt eine Emulation aller Komponenten und Betriebsmittel, von denen das Anwenderprogramm "erwarten" würde, daß sie für es während einer Ausführung verfügbar sind.
- Nach einem Erzeugen jener Illusion führt der RISC-Computer das Anwenderprogramm unter Verwendung eines Prozesses aus, der "Interpretation" genannt wird. Anders ausgedrückt decodiert und zerlegt der RISC-Computer das Anwenderprogramm, um Zustandsinformationen zu erhalten, die aus einem Ausführen des Programms auf einer CISC-Maschine resultieren würden, und identifiziert dann einen entsprechenden Code im RISC-System, das äquivalente Operationen durchführt, und führt ihn aus.
- Während herkömmliche Emulationssysteme allgemein an ihre beabsichtigten Zwecke angepaßt sind, stoßen sie auf bestimmte Beschränkungen und Nachteile. Beispielsweise können herkömmliche Emulationssysteme Schwierigkeiten beim effizienten Ausführen von SSF haben, die durch Anwenderprogramme aufgerufen werden.
- Aufgerufene SSF-Unterprogramme können während einer Programmausführung entweder im CISC-Befehlssatz zur Ausführung über eine Übersetzung oder eine Interpretation bereitgestellt sein, oder im Befehlssatz der RISC-Architektur für eine direkte Ausführung. Eine direkte Ausführung der SSF-Unterprogramme im RISC- Computer kann eine Qualität und andere Vorteile gegenüber den anderen Techniken realisieren, weil sie schneller als eine Interpretation und ökonomischer als eine Übersetzung ist.
- Eine Ausführung der Anwenderprogramme über eine Interpretation mit einer direkten Ausführung aufgerufener SSF-Unterprogramme erfordert einen Mechanismus zum Erfassen, wann die Anwenderprogramme eine Steuerung zur Ausführung der SSF-Unterprogramme übertragen. Der Erfassungsmechanismus muß Aufrufe, die danach streben, eine Steuerung zu den SSF-Unterprogrammen weiterzugeben (d. h. zwischen der CISC-Emulation und der ursprünglichen RISC- Maschine), von jenen unterscheiden können, die lediglich danach streben, eine Steuerung zu anderen Unterprogrammen im selber Anwenderprogramm weiterzugeben. Die ersteren werden Kreuzdomänenaufrufe genannt, wobei die CISC-Emulation eine Domäne darstellt, und die RISC-Maschine die andere.
- Ein Erfassen von Kreuzdomänenaufrufen ist bei Zusammenhängen signifikant, die andere als Emulationssysteme sind. Beispielsweise haben viele Computersysteme Mehrfachprozessoren, z. B. innerhalb eines einzigen Gehäuses oder entfernt voneinander angeordnet und durch Kommunikationsverbindungen verbunden. In ansteigendem Ausmaß haben die Prozessoren innerhalb des Systems unterschiedliche Architekturen, weshalb gesagt werden kann, daß das System zwei oder mehrere (d. h. Mehrfach-)Domänen verkörpern. Um sich einen Vorteil aufgrund einer solchen heterogenen Umgebung zu verschaffen, führen die Prozessoren manchmal Kreuzdomänenaufrufe zur Ausführung von Unterprogrammen durch andere Prozessoren im System durch. Es wäre wünschenswert, einen Mechanismus zur effizienten und zuverlässigen Erfassung und Ausführung solcher Kreuzdomänenaufrufe zu schaffen.
- WO92/15961 lehrt ein System zum Erfassen von Kreuzdomänen-Befehlsaufrufen durch Prüfen von Adressenbereichen für ein bestimmtes Unterprogramm, um zu bestimmen, ob der nächste auszuführende Befehl innerhalb von Adressengrenzen des aktuellen Unterprogramm ist. US-5210832 beschreibt ein Verfahren einer implizierten Domänenadressierung, um zwischen Domänenspeicherzugriffen und Systemspeicherzugriffen unter Verwendung existierender Befehlsformate zu unterscheiden.
- Die Erfindung besteht in einer verbesserten Technik zum Erfassen von Aufrufen von einer ersten Domäne zu einer zweiten Domäne durch Bereitstellen eines Referenzadressenbereichs innerhalb der ersten Domäne, der einen Kreuzdomänenaufruf anzeigt. In ihrer allgemeinen Form besteht die Erfindung in einem computerimplementierten Verfahren zum Erfassen und Ausführen eines Aufrufs von einem ersten Programm zur Ausführung eines zweiten Programms gemäß Anspruch 1 und einer entsprechenden Vorrichtung gemäß Anspruch 4. Wenn die Zieladresse irgendeiner Verzweigung in den Referenzadressenbereich fällt, führt die Erfindung den Aufruf als Kreuzdomänenaufruf aus.
- Zum Ausführen des Kreuzdomänenaufrufs bestimmt die Erfindung eine aufgerufene Adresse in der zweiten Domäne entsprechend der Zieladresse in der ersten Domäne durch mathematisches Manipulieren der Zieladresse. Die Erfindung greift dann auf die aufgerufene Adresse zu und führt den darin gespeicherten Code in der zweiten Domäne aus. Die Erfindung kann dann die Ergebnisse einer Ausführung jenes Codes über einen Rücksprung-Kreuzdomänenaufruf zu dem Programm zurückbringen, das in der ersten Domäne ausführt, die den Aufruf aufrief.
- Die mathematische Manipulation der Zieladresse kann irgendeine einer Vielzahl unterschiedlicher Formen annehmen. Beispielsweise kann die arithmetische Differenz zwischen der Zieladresse und einer der Grenzen des vorbestimmten Bereichs berechnet und als Distanzadresse in einen zweiten vorbestimmten Adressenbereich in der zweiten Domäne verwendet werden, um die aufgerufene Adresse zu erhalten.
- Alternativ dazu kann eine arithmetische Operation in bezug auf die Zieladresse durchgeführt werden, wie beispielsweise die Addition, Subtraktion oder Multiplikation der Zieladresse (die für jene Zwecke als ganze Zahl behandelt wird) mit einer Konstanten. Ein weiteres Ausführungsbeispiel wendet ein Transformationspolynom auf die Zieladresse an, um die aufgerufene Adresse zu erhalten.
- Ein illustratives Ausführungsbeispiel der Erfindung verwendet eine "Phantom"- Tabelle, die "Kreuzdomänen-Referenzraum" oder "CRS" genannt wird, um den Referenzadressenbereich einzurichten. Der CRS kann beispielsweise eine Vielzahl von unabhängigen adressierbaren Speicherstellen haben, von welchen die kleinste durch die Architektur (z. B. ein einzelnes Byte) zugelassen wird und die jeweils einer aufrufbaren Adresse in der zweiten Domäne entsprechen. Die Inhalte des CRS werden vorzugsweise bei der Erfindung nicht verwendet, woraus die Bezeichnung jener Tabelle als "Phantom" folgt.
- Zum Bestimmen, ob bei diesem Ausführungsbeispiel ein bestimmter Aufruf ein Kreuzdomänenaufruf ist, wird die Verzweigungs-Zieladresse des Aufrufs als Zeiger verwendet, um eine entsprechende Adresse eines Eintrags im CRS zu bezeichnen, und zwar entweder direkt oder über eine Unterbrechungsvektortabelle. Wenn ein entsprechender Eintrag im Adressenraum des CRS für die Zieladresse existiert, wird der Aufruf als Kreuzdomänenaufruf behandelt.
- Dann wird eine Distanzadresse berechnet, die gleich der Differenz zwischen der bestimmten CRS-Adresse und beispielsweise der niedrigsten Adresse des CRS ist. Diese Distanzadresse wird dann beim Zugreifen auf eine Adressentabelle der zweiten Domäne verwendet.
- Die Adressentabelle der zweiten Domäne hat vorzugsweise dieselbe Anzahl von Einträgen wie der CRS, von welchen jeder eine Darstellung einer Adresse in dem Adressenraum der zweiten Domäne eines auszuführenden Codes enthält. Die berechnete Distanzadresse im CRS kann zum Zugreifen auf die Adressentabelle der zweiten Domäne beispielsweise durch Addieren von ihr zur niedrigsten Adresse innerhalb jener Tabelle und dann durch Verwenden der resultierenden Summe als Adresse eines Eintrags darin, auf den zuzugreifen ist, verwendet werden.
- Bei einer illustrativen Implementierung dieses Ausführungsbeispiels ist die Adressentabelle der zweiten Domäne eine Funktionsadressentabelle ("FAT"), und der Eintrag, auf den zugegriffen wird, enthält die Adresse eines aufgerufenen Systemservice-Unterprogramms, das in einem Systemservicefunktionsraum ("SSFS") gespeichert ist.
- Durch Ausführen dieses Ausführungsbeispiels kann das Programm, das den Aufruf aufrief, auf einem ersten Computersystem ausgeführt werden (z. B. durch eine Interpretation in einer emulierten Umgebung ausgeführt werden), das eine Architektur hat, die unterschiedlich von jener ist, für die das Programm geschrieben wurde. Darüber hinaus können die Systemservicefunktionen, die für jenes Programm erforderlich sind, direkt ausgeführt werden, wie beispielsweise auf dem Computersystem, das einen Host für die Emulation bildet, auch wenn es eine andere Architektur hat.
- Dieses Ausführungsbeispiel der Erfindung kann eine Anzahl zusätzlicher Vorteile erreichen. Beispielsweise verbraucht eine Kreuzdomänenerfassung unter Verwendung des CRS beispielsweise nur ein Byte eines Adressenraums in der emulierten CISC-Domäne pro jeweiliger Systemfunktion, und selbst dann muß der CRS Daten oder einen Code zum Zwecke der Erfindung nicht in jenem Adressenraum speichern. Wo die Emulation eine Emulation einer 80 · 86-Maschine mit ihrem notorisch begrenzten Adressenraum für einen herkömmlichen Speicher ist, kann diese Eigenschaft der Erfindung von besonderem Vorteil sein. Ein weiterer signifikanter Vorteil besteht darin, daß dieses Ausführungsbeispiel weder eine Modifikation der Anwenderprogramme benötigt, die gerade ausgeführt werden, noch eine hochentwickelte Interpretation des Programms. Ein weiterer Vorteil besteht darin, daß dieses Ausführungsbeispiel die Fähigkeit zur Verfügung stellt, handelsübliche Personalcomputer-Hardware, wie beispielsweise Graphikkarten und andere Vorrichtungen, die über einen Erweiterungsbus mit einem Computersystem einer nicht übereinstimmenden Architektur verbindbar sind, auf einfache Weise zu unterstützen.
- Ein detaillierteres Verstehen der Erfindung kann aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispiels erhalten werden, das anhand eines Beispiels angegeben ist, und das in Zusammenhang mit den beigefügten Zeichnungen zu verstehen ist, wobei:
- Fig. 1 ein Blockdiagramm eines Computersystems, das einen Emulator zum Ausführen von Anwenderprogrammen enthält, gemäß einem Ausführungsbeispiel der Erfindung ist;
- Fig. 2 eine illustrative Darstellung der Struktur und der Abbildung des Adressenraums des Speichers der Fig. 1 ist, welche jene Aspekte zeigen, die zur Erfassung und Ausführung von Kreuzdomänenaufrufen gehören;
- Fig. 3 ein Blockdiagramm eines Verfahrens zum Initialisieren des Computersystems der Fig. 1 zur Kreuzdomänenaufruferfassung und -ausführung durch Einstellen der Tabellen der Fig. 2 ist;
- Fig. 4 ein Blockdiagramm eines Laufzeitverfahrens zum Erfassen und Ausführen von Kreuzdomänenaufrufen im Computersystem der Fig. 1 ist; und
- Fig. 5 eine detailliertere Darstellung des Adressenraums der Fig. 2 gemäß einer illustrativen Implementierung der Erfindung ist.
- Fig. 1 zeigt ein Host-Computersystem 10 gemäß der Erfindung. Das Computersystem 10 verkörpert eine erste Architektur und hat eine herkömmliche CPU 12, Systemsoftware 14 (einschließlich beispielsweise eines Betriebssystems) zum Steuern des Betriebs des Systems 10 und einen Speicher 16.
- Das Host-Computersystem 10 enthält auch herkömmliche Anwenderschnittstellen 24 und periphere Hardware 26, die mit der CPU 12 gekoppelt ist. Die Anwenderschnittstellen 24 enthalten beispielsweise eine Anzeige oder einen Monitor 24A und eine Tastatur 24B zum Bereitstellen angezeigter Ausgaben bzw. zum Ermöglichen, daß ein Anwender Befehle und Daten eingibt. Die periphere Hardware 26 enthält beispielsweise herkömmliche Plattensteuerungen, Tastatursteuerungen und Eingabe/Ausgabe-("I/O")-Anschlußstellen (die nicht extra gezeigt sind).
- Der Hostcomputer 10 enthält weiterhin einen Emulator 30, der vorzugsweise mittels Software implementiert ist, die durch die CPU 12 ausführbar ist, zum Emulieren eines Computersystems 32, das eine zweite andere Architektur verkörpert.
- Herkömmliche Emulationssysteme sind Fachleuten auf dem Gebiet wohlbekannt. Um hierin bequemer zwischen den Computersystemen 10, 32 zu unterscheiden, soll das Host-Computersystem 10 und seine Komponenten und ein für die erste Architektur geschriebener Code "ursprünglich" genannt werden. Analog dazu soll das emulierte System 32 und seine Komponenten und ein für die zweite Architektur geschriebener Code "fremd" genannt werden.
- Das zweite System 32 ist im wesentlichen eine "Illusion", die durch den Emulator 30 erzeugt wird, aus einer fremden CPU 34 zum Ausführen eines fremden Codes, wie beispielsweise wenigstens eines fremden Anwenderprogramms 35. Der Emulator 30 erzeugt auch eine Emulation einer fremden Systemsoftware 36 zum Steuern des Betriebs des Computersystems 32 und eine Emulation einer fremden peripheren Hardware 38. Das Anwenderprogramm 35 weist eine Sequenz von Befehlen (d. h. Zeilen eines Codes) auf, die mit einem Befehlssatz übereinstimmt, der durch die zweite Architektur vorgeschrieben ist, welche Befehle zur Ausführung auf der fremden CPU 34 geeignet sind. Das Anwenderprogramm 35 enthält Verzweigungen (d. h. Wechsel vom sequentiellen Programmablauf) zum Weitergeben einer Steuerung zu einem oder mehreren SSF-Unterprogrammen, wie es nachfolgend beschrieben wird.
- Bei einer illustrativen Anwendung der Erfindung kann das Host-Computersystem 10 eine RISC-Maschine sein, wie beispielsweise der auf ALPHA-AXP basierende Computer, der oben angegeben ist, und das fremde Computersystem 32 kann eine CISC-Maschine sein, wie beispielsweise die auf 80 · 86 basierende Maschine, die ebenso oben angegeben ist (und die oft "IBM-kompatibler Computer" genannt wird, wobei IBM eine Handelsmarke ist).
- Fig. 2 zeigt einen Speicher 16 derart, daß er einen ursprünglichen Domänenadressenraum 52 und einen fremden Domänenadressenraum 54 enthält. Der ursprüngliche Domänenadressenraum 52 hat einen privilegierten Zugriff vom Computersystem 10 der ursprünglichen Domäne. Der fremde Domänenspeicherraum 54 hat einen privilegierten Zugriff vom Computersystem 32, das durch den Emulator 30 zur Verfügung gestellt wird. Der ursprüngliche Domänenadressenraum 52 enthält einen Systemservicefunktionsraum ("SSFS") 56 und eine Funktionsadressentabelle ("FAT") 58. Der fremde Domänenadressenraum 54 enthält einen Kreuzdomänenreferenzraum oder eine Tabelle ("CRS") 62 und eine Unterbrechungsvektortabelle ("IVT") 64.
- Als erstes wird der ursprüngliche Domänenadressenraum 52 detaillierter erörtert. Der SSFS 56 speichert die SSFs als Einträge, die mit SSF_0, SSF_1, ..., und SSF_N bezeichnet sind; jeder Eintrag wird innerhalb des ursprünglichen Domänenadressenraums 52 durch eine entsprechende Adresse SSF_ADN_0, SSF_ADN_1, ..., und SSF_ADN_K, wobei "K" eine positive ganze Zahl ist, eindeutig identifiziert.
- Die FAT 58 hat eine Anzahl von Einträgen, die mit 0 bis M bezeichnet sind, wobei "M" eine positive ganze Zahl ist, welche Einträge jeweils eine Darstellung einer der SSFS-Adressen SSF_ADN_0, SSF_ADN_1, ..., oder SSF_ADN_K eines entsprechenden Eintrags SSF_0, SSF_1, ..., oder SSF_K im SSFS 56 speichert. Vorzugsweise ist "M" kleiner als oder gleich "K", nämlich der Anzahl von Systemservicefunktionen, die durch Einträge im SSFS 56 dargestellt werden. ("M" kann kleiner als "K" sein, wo eine Untergruppe der SSF für eine Ausführung eines bestimmten Programms zur Verfügung zu stellen ist.) Die FAT 58 besitzt eine Bereich von Adressen FAT_ADN_0 bis FAT_ADN_M innerhalb des ursprünglichen Domänenadressenraums 52.
- Nun, in bezug auf den fremden Domänenadressenraum 54, hat der CRS 62 eine Anzahl von Einträgen, die mit Eintrag 0 bis Eintrag "M" bezeichnet sind und die an jeweiligen Adressen CRS_ADF_0 bis CRS_ADF_M angeordnet sind. Vorzugsweise besetzt jeder Eintrag 0 - M den kleinsten unabhängig zugreifbaren Block von Stellen in der fremden Domäne, wie beispielsweise ein einzelnes Byte.
- Darüber hinaus ist die Anzahl von Einträgen 0 - M im CRS 62 gleich der Anzahl von Einträgen 0 - M in der FAT 58, d. h. "M". Anders ausgedrückt sind die adressierbaren Stellen in der FAT 58 und im CRS 62 in zueinander passenden Paaren zugeteilt, wobei jedes Paar einer der zur Implementierung im System 10 verfügbaren SSFs entspricht.
- Der CRS 62 wird nur als Referenztabelle verwendet; daher ist es für die Erfindung nicht erforderlich, daß ein Code in den Einträgen 0 - M jener Tabelle gespeichert ist. Im wesentlichen ist der CRS 62 das Fremddomänen-Gegenstück der FAT 58 der ursprünglichen Domäne und wird nur beim Ableiten eines Zeigers in die FAT 58 verwendet. Tatsächlich kann der Abschnitt des emulierten Domänenadressenraums 54, der für den CRS 62 reserviert ist, unabhängig von der Erfindung zum Speichern von Daten oder eines Codes verwendet werden, die bzw. der für andere Anwendungen erforderlich ist.
- Die IVT 64 enthält eine Anzahl von Einträgen, die mit CRS_AD_0, CRS_AD_1, ..., CRS_AD_M bezeichnet sind, wobei jeder einer jeweiligen Unterbrechungsnummer INT_0 bis INT_ entspricht. Auf jeden IVT-Eintrag CRS_AD_0, CRS_AD_1, ..., CRS_AD_M kann unter Verwendung der entsprechenden Unterbrechungsnummer als ein Zeiger in die IVT 64 zugegriffen werden. Jeder Eintrag CRS_AD_0, CRS_AD_1, ..., CRS_AD_M stellt eine Adresse eines entsprechenden Eintrags im CRS 62 dar.
- Die IVT 64 kann auch Eintragsstellen haben, die Verzweigungs-Zieladressen MEM_AD_0, MEM_AD_2, ..., MEM_AD_P enthalten, die nicht in den Bereich von Adressen CRS_AD_0 bis CRS_AD_M im CRS 62 fallen und somit keine Kreuzdomänenaufrufe erfordern. Beispielsweise können die Adressen MEM_AD_0, MEM_AD_2, ..., MEM_AD_P Zieladressen für Aufrufe für Unterprogramme innerhalb des Anwenderprogramms 35 (Fig. 1) selbst sein.
- Fig. 3 zeigt ein Verfahren 100 zum Initialisieren des Computersystems 10 (Fig. 1), um die Tabellen 56, 58, 62, 64 (Fig. 2) einzustellen.
- Ein Block 102 erzeugt den CRS 62 durch Durchführen einer Anzahl von Unterschritten. Ein Unterblock 104 ordnet den CRS 62 an und bemaßt ihn durch Reservieren eines Bereichs von Adressen CRS_ADF_0 bis CRS_ADF_M (d. h. eines Abschnitts) des fremden Domänenadressenraums 54 für den CRS und durch Bestimmen der Anzahl von Bytes, die im Adressenbereich erforderlich sind, wie beispielsweise ein einzelnes Byte pro Adresse. Ein Unterblock 106 teilt Stellen im CRS 62 zu FAT-Einträgen zu. Beispielsweise entspricht jede Einzelbyte-Stelle im CRS 62 einem FAT-Eintrag, bei welchem eine Adresse (z. B. eine 32-Bit-Adresse) im ursprünglichen Adressenraum gespeichert ist, der mit der Architektur des Computersystems 10 übereinstimmt. Die gespeicherte Adresse ist von einer Eintragsstelle (z. B. einer ersten Zeile eines Codes oder eines ersten Befehls) eines SSF-Unterprogramms.
- ie vorangehend beschriebene Anordnung erreicht eine Anzahl von Vorteilen. Beispielsweise kann der CRS 62 derart konfiguriert sein, daß er eine minimale Größe hat, wie beispielsweise mit nur einem einzigen Bit pro SSF anstelle von Bytes, die zum Halten einer gesamten ursprünglichen Domänenadresse, wie beispielsweise 32 Bits, für jede SSF ausreichen.
- Ein Block 108 speichert den Adressenbereich des CRS 62 für eine spätere Anwendung, wie beispielsweise in einem Puffer 16C (Fig. 1) des Speichers 16 (Fig. 1). Ein Block 110 erzeugt die FAT 58 und die IVT 64. Ein Unterblock 112 ordnet FAT-Einträge einzelnen SSFs zu. Ein Unterblock 114 speichert SSF- Eintragsadressen in entsprechenden FAT-Einträgen. Ein Unterblock 116 lädt die Referenzadressen, die den einzelnen Einträgen des CRS 62 entsprechen, in entsprechende Einträge in der IVT 64, auf welche über entsprechende Unterbrechungsnummern zugegriffen wird.
- Fig. 4 zeigt ein Laufzeitverfahren 200 zum Ausführen des Programms 35, nachdem die FAT 58, der CRS 62 und die IVT 64 eingestellt worden sind, wie es gerade beschrieben worden ist. Ein Block 202 verwendet einen herkömmlichen Interpretierer 12A (Fig. 1), der vorzugsweise durch die CPU 12 (Fig. 1) implementiert ist, um den fremden Programmcode durch eine Interpretation auszuführen.
- Ein Block 204 erfaßt jeden Wechsel vom sequentiellen Programmablauf (der hierin "Verzweigung" genannt wird) und identifiziert eine Zieladresse für die erfaßte Verzweigung (d. h. die Adresse eines nach der Verzweigung nächsten auszuführenden Befehls). Anders ausgedrückt fängt das Verfahren 200 jede versuchte Übertragung einer Steuerung zu einem nicht sequentiellen Befehl ein. Wenn keine Verzweigung erfaßt wird, fährt der Block 202 damit fort, das Programm bis zu einer Beendigung seiner Ausführung auszuführen.
- Auf eine Erfassung einer Verzweigung hin bestimmt in einem Block 206 ein Detektor 12B, der vorzugsweise durch die CPU 12 (Fig. 1) implementiert ist, ob die Zieladresse für jene Verzweigung innerhalb des CRS-Bereichs der Adressen CRS_ADF_0 bis CRS_ADF_M ist. Der Detektor 12B führt eine Anzahl von Operationen durch, die durch Unterblöcke dargestellt sind. Ein Unterblock 208 holt den CRS-Adressenbereich CRS_ADF_0 bis CRS_ADF_M vom Puffer 16C des Speichers 16, und ein Unterblock 210 testet, ob die Verzweigungs-Zieladresse innerhalb jenes Bereichs ist. Vorzugsweise verwendet das Verfahren 200 eher einen einzelnen Bereichsadressenvergleich beim Erfassen von Kreuzdomänenaufrufen als beispielsweise einen Vergleich der Verzweigungs- Zieladresse mit mehrfachen unterschiedlichen Adressenbereichen.
- Wenn die Zieladresse nicht innerhalb des CRS-Bereichs ist, inkrementiert ein Block 212 die Programmzählerfunktion der CPU 12, und der nächste Befehl wird im Block 202 ausgeführt.
- Andererseits übernimmt dann, wenn die Verzweigungs-Zieladresse innerhalb des Bereichs CRS_ADF_0 bis CRS_ADF_M ist, in einem Block 216 ein Ausführungsmodul 12C (Fig. 1), das vorzugsweise durch die CPU 12 implementiert ist, eine Steuerung eines Ausführens eines Kreuzdomänenaufrufs. Das Ausführungsmodul 12C veranlaßt, daß eine Programmausführung durch eine Interpretation aufhört, ummantelt den Kreuzdomänenaufruf, um Parameter (z. B. Registeridentifikationen etc.) weiterzugeben, die mit den Konventionen der aufgerufenen Domäne übereinstimmen, und ermöglicht allgemein eine direkte Ausführung eines aufgerufenen Systemservice-Unterprogramms.
- Innerhalb des Blocks 216 enthält das Verfahren 200 eine Anzahl von Unterblöcken. Ein Unterblock 222 berechnet eine Distanzadresse in den CRS 62 gleich einer Differenz zwischen einer der Grenzadressen (d. h. einer der ersten Adresse CRS_ADF_0 und der letzten Adresse CRS_ADF_M) des CRS-Bereichs und der Verzweigungs-Zieladresse innerhalb des CRS 62.
- Ein Unterblock 224 verwendet die berechnete Distanzadresse als Index in die FAT 58, um auf einen entsprechenden FAT-Eintrag 0 - M zuzugreifen. Zur Darstellung kann die Distanzadresse als die Differenz zwischen der Zieladresse und der Grenzadresse CRS_ADF_0 berechnet werden. Dann kann die Distanzadresse als Index in die FAT 58 verwendet werden. Beispielsweise kann die Distanzadresse vom CRS 62 skaliert werden, wenn es nötig ist, wie beispielsweise mit dem Verhältnis der Eintragsgröße (in einer Anzahl von Bytes) in der FAT zu der Eintragsgröße im CRS multipliziert werden. Die resultierende skalierte Distanzadresse kann zur ersten Adresse FAT_ADN_0 der FAT 58 addiert werden, um eine FAT-Adresse eines entsprechenden FAT-Eintrags zu erhalten.
- Als nächstes verwendet ein Unterblock 262 den durch den Index identifizierten FAT-Eintrag als Adresse im ursprünglichen Domänenadressenraum 52 eines Eintrags SSF_0 - SSF_K im SSFS 56. Der so identifizierte SSFS-Eintrag ist die SSF-Eintragsstelle eines aufgerufenen SSF-Unterprogramms.
- Ein Block 228 holt das aufgerufene SSF-Unterprogramm beginnend mit der identifizierten SSF-Eintragsstelle und führt es aus. Irgendwelche Ergebnisse von der Ausführung des SSF-Unterprogramms können über einen Rücksprung- Kreuzdomänenaufruf mit einer durch die CPU 12 (Fig. 1) eingerichteten geeigneten Ummantelung zum Anwenderprogramm 35 zurückgebracht werden. Gleichgültig, ob ein Rücksprungaufruf erforderlich ist oder nicht, gibt das Verfahren 200 als nächstes eine Steuerung zum Block 212 für eine fortgeführte Ausführung eines fremden Codes des Anwenderprogramms 35 durch eine Interpretation weiter.
- Nun wird unter erneuter Bezugnahme auf die Fig. 1-4 eine illustrative Implementierung der Erfindung beschrieben. Eine bestimmte SSF kann einen Anzeigeservice bereitstellen und kann im SSFS 56 gespeichert werden, wie beispielsweise beim Eintrag SSF_1 mit der Adresse SSF_ADN_1. Ein Eintrag (z. B. der Eintrag 1) in der FAT 58 ist SSF_1 zugeordnet und enthält SSF_ADN_1 bei einer Adresse darin. Die Adresse jenes Eintrags ist unter Verwendung von beispielsweise einer Distanzadresse identifizierbar, die von der relativen Stelle einer Verzweigungs-Zieladresse innerhalb des Adressenbereichs CRS_ADF_0 - CRS_ADF_M im CRS 62 abgeleitet ist.
- Bei diesem Beispiel kann ein CRS-Eintrag 1, der die Adresse CRS_ADF_1 trägt, dem Anzeigeservice SSF entsprechen. Eine im Anwenderprogramm enthaltene Verzweigung kann den Anzeigeservice SSF aufrufen. Dafür wird die Verzweigung eine Zieladresse spezifizieren, die direkt in einem Verzweigungs- oder Sprungbefehl vorgesehen ist, oder indirekt über die IVT 64. Die Verzweigungs- Zieladresse wird CRS_ADF_1 sein. Die Distanzadresse kann durch Subtrahieren der niedrigsten Adresse im CRS 62, wie beispielsweise CRS_ADF_0, von der Verzweigungs-Zieladresse berechnet werden, um eine Distanzadresse von Eins zu erhalten.
- Der Aufruf für den Anzeigeservice SSF erfordert eine Domänenkreuzungsstelle für eine direkte Ausführung jener SSF, d. h. der Aufruf kreuzt die Domänengrenze 65 zwischen dem fremden Domänenadressenraum 54 und dem ursprünglichen Domänenadressenraum 52.
- Die Distanzadresse kann verwendet werden, um einen entsprechenden Eintrag in der FAT 58 zu identifizieren, wie beispielsweise durch Verwenden der Distanzadresse als Index in die FAT 58, wie es oben beschrieben ist. Wo die skalierte Distanzadresse gleich Eins ist und dieser Wert zur niedrigsten Adresse der FAT 58 addiert ist, liefert dieser Ansatz die Adresse FAT_ADN_1 eines Eintrags in der FAT 58, deren Inhalte die Adressen, z. B. SSF_ADN_1, einer Eintragsstelle des Anzeigeservice SSF sind. Dann kann der Anzeigeservice SSF ausgeführt werden.
- Diese Implementierung kann durch eine weitere Bezugnahme auf Fig. 5 besser verstanden werden. Jenes Diagramm zeigt eine Implementierung eines Speicheradressenraums 300 mit Abbildungen zwischen einem ursprünglichen Adressenraum 302 und einem emulierten Adressenraum 304 analog zur Fig. 2. Der ursprüngliche Adressenraum 302 hat eindeutig spezifizierte Adressen, die zu allen Speicherstellen der ursprünglichen Domäne zugeordnet sind, die für eine direkte Ausführung durch das Computersystem 10 (Fig. 1) verwendet wird. Der emulierte Adressenraum 304 wird durch einen Emulator 30 erzeugt und hat eindeutig spezifizierte Adressen, die allen Speicherstellen zugeordnet sind, auf die durch das emulierte Computersystem 32 (Fig. 1) zugegriffen werden kann.
- Ein Adressieren innerhalb des ursprünglichen und des emulierten Adressenraums 302, 304 stimmt vorzugsweise mit den jeweiligen Architekturen der Computer 10, 32 überein, die auf jene Räume zugreifen. Der ursprüngliche Adressenraum 302 enthält einen Raum 312 zum Speichern eines fremden Programms (z. B. einen Code zum Steuern der Anzeige 24A (Fig. 1) und dazugehörige Daten, und Anzeigepuffer und Register 314. Die Adressenräume 312, 314 können beispielsweise Abschnitten eines ursprünglichen Adressenraums 302 zugeordnet sein, der auf einer Graphikkarte 346 (Fig. 1) angeordnet ist, die mit der ursprünglichen CPU 12 mittels eines Erweiterungsbusses 318 verbunden ist.
- Der ursprüngliche Adressenraum 302 enthält auch eine FAT 322, einen SSFS 324, einen Speicherpuffer 326 und einen Adressenraum 328 für Systemsoftware, einschließlich eines ursprünglichen Betriebssystems. Die Adressenräume 322-328 können einem Direktzugriffsspeicher ("RAM") 16A eines Computersystems, wie beispielsweise des Systems 10 der Fig. 1, zugeordnet sein.
- Der emulierte Adressenraum 304 enthält einen CRS 332, einen Adressenraum 334 für ein Zielprogramm, Anzeigepuffer und einen Registerraum 336 für einen Graphikcode und Daten, und einen Adressenraum 338, der einem niedrigen Speicher zugeordnet ist, einschließlich einer IVT. Der Adressenraum 334 für das Zielprogramm ist einem Nurlesespeicher 16B (Fig. 1) zugeordnet, der das fremde Programm als das Ziel zur Ausführung durch eine Interpretation enthält, wie beispielsweise eine abgebildete Version des fremden Programms. Gleichermaßen enthält der Raum 336 die Inhalte der Anzeigepuffer und der Register 314 auf eine Weise, daß auf sie durch den Emulator 30 zugegriffen werden kann.
- Ein Aufruf kann die Form einer Standardunterbrechung für einen Anzeigeservice annehmen, die INT 10 genannt wird. Die lVT innerhalb des Adressenraums 338 kann eine Referenzadresse im CRS-Adressenraum 332 entsprechend der INT 10 enthalten, wie es durch einen Pfeil "a" dargestellt ist.
- Die Referenzadresse kann zum Erhalten einer Distanzadresse verwendet werden, was einen Zugriff auf einen entsprechenden Eintrag im FAT-Adressenraum 322 zuläßt, wie es durch einen Pfeil "b" dargestellt ist, um eine Adresse darin im ursprünglichen Adressenraum 302 zu erhalten.
- Die geholte Adresse aus dem FAT-Adressenraum 322 kann dann beim Zugreifen auf den SSFS 324 verwendet werden, wie es durch einen Pfeil "c" dargestellt ist, um daraus eine Eintragsstelle, wie beispielsweise einen ersten Befehl oder eine Zeile eines Codes für den Anzeigeservice zu holen.
- Der Anzeigeservice wird dann direkt ausgeführt, und eine Steuerung wird für eine erneute Ausführung des Zielprogramms durch eine Interpretation zum emulierten Adressenraum 304 zurückgebracht.
- Die oben beschriebenen Fig. 1-5 zeigen die Erfindung, wie sie in bezug auf eine Unterbrechungsbehandlung für ein Verzweigen zu SSF ausgeführt wird, die durch eine IVT bestimmt sind, unter Verwendung einer Distanzadresse, um Zieladressen für Kreuzdomänenaufrufe zu bestimmen.
- Die Erfindung kann allgemeiner durch Erfassen von Kreuzdomänenaufrufen resultierend aus Verzweigungs- oder Sprungbefehlen oder irgendwelchen anderen Ereignissen oder Bedingungen, die Verzweigungen für eine Ausführung von Unterprogrammen in einer Kreuzdomäne veranlassen, ausgeführt werden.
- Ebenso muß die Erfindung keine Distanzadresse verwenden, um eine Verzweigungs-Zieladresse in einer Domäne in eine Zieladresse in einer anderen Domäne zu übersetzen. Statt dessen kann die Verzweigungs-Zieladresse im CRS mathematisch manipuliert werden, um die andere Adresse zu erhalten. Die mathematische Manipulation der Verzweigungs-Zieladresse kann irgendeine einer Vielzahl unterschiedlicher Formen annehmen. Beispielsweise kann eine arithmetische Operation an der Verzweigungs-Zieladresse durchgeführt werden, wie beispielsweise die Addition, Subtraktion oder Multiplikation der Verzweigungs- Zieladresse (die für diese Zwecke als ganze Zahl behandelt wird) mit einer Konstanten, um die entsprechende Adresse in der ursprünglichen Domäne zu ergeben. Ein weiteres Ausführungsbeispiel kann ein Transformationspolynom in bezug auf die Zieladresse verwenden, um die andere Adresse zu ergeben.
- Zusätzlich zu den Emulationsanwendungen, die oben diskutiert sind, kann die Erfindung eine besondere Anwendung bei Multiprozessor-Computersystemen finden, wobei die Prozessoren unterschiedliche Architekturen haben. Bei einer solchen Anwendung der Erfindung kann ein erster Prozessor als die ursprüngliche CPU 12 der Fig. 1 bestimmt werden, und ein zweiter Prozessor kann als der fremde Prozessor 34 bestimmt werden, und die Erfindung kann ausgeführt werden, wie es gezeigt und beschrieben ist, ohne eine direkte Ausführung gegenüber einer Ausführung durch eine Interpretation zu berücksichtigen, und ohne eine Emulation zu berücksichtigen.
- Die Erfindung ist hierin zuvor in bezug auf ein illustratives Ausführungsbeispiel von ihr gezeigt und beschrieben worden. Die Worte und Ausdrücke, die verwendet worden sind, sind beschreibend und nicht beschränkend verwendet. Es sollte von Fachleuten auf dem Gebiet verstanden werden, daß die vorangehenden und verschiedene andere Änderungen, Hinzufügungen und Substitutionen, wie sie durch das illustrative Ausführungsbeispiel beispielhaft gezeigt sind, durchgeführt werden können, ohne vom Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen definiert ist.
Claims (6)
1. Verfahren, das in einem Computersystem ausgeführt wird, zum Erfassen und
Ausführen eines Aufrufs von einem ersten Programm (35), das zu einer
ersten Architekturdomäne (32, 304) gehört, zu einem zweiten Programm (14),
das zu einer zweiten Architekturdomäne (10, 302) gehört, wobei die erste
Architekturdomäne eine erste Architektur mit einem ersten Befehlssatz hat,
wobei die zweite Architekturdomäne eine zweite andere Architektur mit einem
zweiten Befehlssatz hat, wobei das erste Programm (35, 334) zur Ausführung
in der ersten Architekturdomäne (32) angepaßt ist und Befehle vom ersten
Satz von Befehlen enthält, wobei das zweite Programm (14) zur Ausführung
in der zweiten Architekturdomäne (10) angepaßt ist und Befehle vom zweiten
Satz von Befehlen enthält, wobei das Verfahren folgende Schritte aufweist:
Erfassen (206), ob der Aufruf ein Kreuzdomänenaufruf ist; und
auf eine Erfassung eines Kreuzdomänenaufrufs hin Holen und
Ausführen (228) von Befehlen des zweiten Programms, das durch die
aufgerufene Adresse spezifiziert ist, in der zweiten Architekturdomäne, wobei
das Computersystem das erste Programm innerhalb der ersten
Architekturdomäne ausführt, und Erfassen und Ausführen des Aufrufs und der
Befehle, die im zweiten Programm enthalten sind, das zur aufgerufenen
Adresse gehört, dadurch gekennzeichnet, daß
der Schritt zum Erfassen (206) eines Kreuzdomänenaufrufs ein
Erfassen (208, 210) enthält, ob der Aufruf eine Zieladresse innerhalb
eines Kreuzdomänen-Referenzadressenbereichs (62, 332) in der
ersten Architekturdomäne spezifiziert, wobei der Kreuzdomänen-
Referenzadressenbereich einen Bereich von Adressen von
Kreuzdomänenaufrufen anzeigt; und
in Antwort darauf, daß die Zieladresse innerhalb des
Kreuzdomänen-Referenzadressenbereichs ist, ein Bestimmen (224, 226) einer
aufgerufenen Adresse (322) in der zweiten Architekturdomäne
entsprechend der Zieladresse in der ersten Domäne unter Verwendung
der Zieladresse.
2. Verfahren nach Anspruch 1, wobei der Kreuzdomänen-
Referenzadressenbereich (62) erste und zweite Grenzadressen (CRS_AD_0,
CRS_AD_M) enthält, die den Kreuzdomänen-Referenzadressenbereich
definieren, und der Bestimmungsschritt den Schritt zum Verwenden der
Zieladresse zum Bestimmen der aufgerufenen Adresse (FAT_AD) durch
Durchführen folgender Schritte enthält:
Bestimmen (222) einer Distanzadresse zwischen der Zieladresse
und einer der ersten und zweiten Grenzadressen; und
Verwenden (224, 226) der Distanzadresse innerhalb eines
zweiten vorbestimmten Adressenbereichs in der zweiten
Architekturdomäne, um die aufgerufene Adresse zu identifizieren, bei der der
zweite Programmcode gespeichert ist.
3. Verfahren nach Anspruch 1, das weiterhin folgende Schritte enthält:
Einrichten (102) einer Kreuzdomänen-Referenztabelle (62) mit
einer Vielzahl unabhängig adressierbarer Speicherstellen (CRS_AD),
die jeweils einer aufrufbaren Adresse (FAT_AD) in der zweiten
Architekturdomäne und einer der Adressen im Kreuzdomänen-
Referenzbereich entsprechen; und
Bestimmen (210), ob die Zieladresse eine der Stellen in der
Kreuzdomänen-Referenztabelle spezifizierte.
4. Vorrichtung zum Erfassen und Ausführen eines Aufrufs von einem ersten
Programm (35), das in einer ersten Architekturdomäne (32, 304) ausgeführt
wird, zur Ausführung eines zweiten Programms in einer zweiten
Architekturdomäne (10, 302), wobei das erste Programm Befehle eines ersten
Befehlssatzes enthält und wobei das zweite Programm Befehle eines zweiten
Befehlssatzes enthält, wobei die Vorrichtung eine Einrichtung zum Erfassen
eines Kreuzdomänenaufrufs aufweist, und eine Einrichtung, die auf die
Erfassung antwortet, um einen Befehl des zweiten Programms, das durch die
aufgerufene Adresse spezifiziert ist, in der zweiten Architekturdomäne zu holen
und auszuführen, wobei die Vorrichtung dadurch gekennzeichnet, daß
die Erfassungseinrichtung eine Einrichtung aufweist, die während
einer Ausführung des ersten Programms betreibbar ist, um zu erfassen, ob
der Aufruf eine Zieladresse innerhalb eines Kreuzdomänen-
Referenzadressenbereichs (62, 332) spezifiziert, wobei der
Kreuzdomä
nen-Referenzadressenbereich einen Bereich von Adressen von
Kreuzdomänenaufrufen in der ersten Domäne anzeigt;
und gekennzeichnet ist durch eine Einrichtung, die mit der
Erfassungseinrichtung gekoppelt ist und auf die Zieladresse antwortet, die
innerhalb des Kreuzdomänen-Referenzadressenbereichs ist, zum
Bestimmen (224, 226) einer aufgerufenen Adresse in der zweiten Domäne
entsprechend der Zieladresse in der ersten Domäne durch mathematisches
Manipulieren der Zieladresse.
5. Vorrichtung nach Anspruch 4, wobei der Kreuzdomänen-
Referenzadressenbereich (62) erste und zweite Grenzadressen (CRS_AD_0,
CRS_AD_M) enthält, die Grenzen des Kreuzdomänen-
Referenzadressenbereichs definieren, und die Bestimmungseinrichtung eine
Einrichtung zum mathematischen Manipulieren der Zieladresse enthält, die
folgendes enthält:
eine Einrichtung zum Bestimmen (222) einer Distanzadresse
zwischen der Zieladresse und einer der ersten und zweiten
Grenzadressen; und
eine Einrichtung zum Verwenden (224, 226) der Distanzadresse
innerhalb eines zweiten vorbestimmten Adressenbereichs in der
zweiten Domäne, um die aufgerufene Adresse zu identifizieren, bei
der der zweite Programmcode gespeichert ist.
6. Vorrichtung nach Anspruch 4, wobei die Bestimmungseinrichtung die
Zieladresse durch Durchführen einer arithmetischen Operation an der Zieladresse
mathematisch manipuliert, um die aufgerufene Adresse zu ergeben.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US20745394A | 1994-03-08 | 1994-03-08 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69505717D1 DE69505717D1 (de) | 1998-12-10 |
DE69505717T2 true DE69505717T2 (de) | 1999-06-24 |
Family
ID=22770608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69505717T Expired - Fee Related DE69505717T2 (de) | 1994-03-08 | 1995-02-21 | Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen |
Country Status (5)
Country | Link |
---|---|
US (1) | US5666519A (de) |
EP (1) | EP0671685B1 (de) |
JP (1) | JP2965884B2 (de) |
KR (1) | KR950033823A (de) |
DE (1) | DE69505717T2 (de) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289390B1 (en) | 1993-08-18 | 2001-09-11 | Microsoft Corporation | System and method for performing remote requests with an on-line service network |
US6901433B2 (en) * | 1995-06-07 | 2005-05-31 | Microsoft Corporation | System for providing users with a filtered view of interactive network directory obtains from remote properties cache that provided by an on-line service |
US5956489A (en) * | 1995-06-07 | 1999-09-21 | Microsoft Corporation | Transaction replication system and method for supporting replicated transaction-based services |
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US5933599A (en) * | 1995-07-17 | 1999-08-03 | Microsoft Corporation | Apparatus for presenting the content of an interactive on-line network |
US5956509A (en) * | 1995-08-18 | 1999-09-21 | Microsoft Corporation | System and method for performing remote requests with an on-line service network |
US5941947A (en) * | 1995-08-18 | 1999-08-24 | Microsoft Corporation | System and method for controlling access to data entities in a computer network |
US5892934A (en) * | 1996-04-02 | 1999-04-06 | Advanced Micro Devices, Inc. | Microprocessor configured to detect a branch to a DSP routine and to direct a DSP to execute said routine |
US5721945A (en) * | 1996-05-06 | 1998-02-24 | Advanced Micro Devices | Microprocessor configured to detect a DSP call instruction and to direct a DSP to execute a routine corresponding to the DSP call instruction |
US6513057B1 (en) * | 1996-10-28 | 2003-01-28 | Unisys Corporation | Heterogeneous symmetric multi-processing system |
US6360244B1 (en) * | 1997-04-11 | 2002-03-19 | Fujitsu Limited | System and method for multi-level memory domain protection |
US6128679A (en) * | 1998-02-26 | 2000-10-03 | Unisys Corporation | Computer for executing I/O instructions, by emulation, in a foreign application program wherein the emulator result thread is blocked from running between processes |
JPH11296381A (ja) * | 1998-04-08 | 1999-10-29 | Matsushita Electric Ind Co Ltd | 仮想マシン及びコンパイラ |
US6308255B1 (en) | 1998-05-26 | 2001-10-23 | Advanced Micro Devices, Inc. | Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system |
US6480952B2 (en) | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US7305451B2 (en) * | 1998-08-24 | 2007-12-04 | Microsoft Corporation | System for providing users an integrated directory service containing content nodes located in different groups of application servers in computer network |
EP1151374B1 (de) * | 1999-01-28 | 2017-08-02 | Advanced Silicon Technologies, LLC | Ausführung von programmen für eine erste rechnerarchitektur auf einem rechner mit einer zweiten architektur |
US6882968B1 (en) * | 1999-10-25 | 2005-04-19 | Sony Computer Entertainment Inc. | Method of measuring performance of an emulator and for adjusting emulator operation in response thereto |
WO2002039272A1 (en) * | 2000-11-10 | 2002-05-16 | Chipwrights Design, Inc. | Method and apparatus for reducing branch latency |
US6732253B1 (en) * | 2000-11-13 | 2004-05-04 | Chipwrights Design, Inc. | Loop handling for single instruction multiple datapath processor architectures |
US6931518B1 (en) | 2000-11-28 | 2005-08-16 | Chipwrights Design, Inc. | Branching around conditional processing if states of all single instruction multiple datapaths are disabled and the computer program is non-deterministic |
JP4783527B2 (ja) | 2001-01-31 | 2011-09-28 | 株式会社ガイア・システム・ソリューション | データ処理システム、データ処理装置およびその制御方法 |
JP4865960B2 (ja) | 2001-06-25 | 2012-02-01 | 株式会社ガイア・システム・ソリューション | データ処理装置およびその制御方法 |
US6993674B2 (en) | 2001-12-27 | 2006-01-31 | Pacific Design, Inc. | System LSI architecture and method for controlling the clock of a data processing system through the use of instructions |
US6970985B2 (en) | 2002-07-09 | 2005-11-29 | Bluerisc Inc. | Statically speculative memory accessing |
US20050114850A1 (en) | 2003-10-29 | 2005-05-26 | Saurabh Chheda | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control |
US7996671B2 (en) | 2003-11-17 | 2011-08-09 | Bluerisc Inc. | Security of program executables and microprocessors based on compiler-architecture interaction |
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US8020141B2 (en) * | 2004-12-06 | 2011-09-13 | Microsoft Corporation | Operating-system process construction |
US7716642B1 (en) | 2005-05-03 | 2010-05-11 | Emc Corporation | Techniques for detecting coding incompatibilities |
US8078740B2 (en) | 2005-06-03 | 2011-12-13 | Microsoft Corporation | Running internet applications with low rights |
US8849968B2 (en) | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US20070094495A1 (en) * | 2005-10-26 | 2007-04-26 | Microsoft Corporation | Statically Verifiable Inter-Process-Communicative Isolated Processes |
US8074231B2 (en) * | 2005-10-26 | 2011-12-06 | Microsoft Corporation | Configuration of isolated extensions and device drivers |
US8250082B2 (en) | 2006-06-23 | 2012-08-21 | Microsoft Corporation | Cross domain communication |
US8185737B2 (en) | 2006-06-23 | 2012-05-22 | Microsoft Corporation | Communication across domains |
US8032898B2 (en) * | 2006-06-30 | 2011-10-04 | Microsoft Corporation | Kernel interface with categorized kernel objects |
US20080126766A1 (en) | 2006-11-03 | 2008-05-29 | Saurabh Chheda | Securing microprocessors against information leakage and physical tampering |
US8789063B2 (en) * | 2007-03-30 | 2014-07-22 | Microsoft Corporation | Master and subordinate operating system kernels for heterogeneous multiprocessor systems |
US20080244507A1 (en) * | 2007-03-30 | 2008-10-02 | Microsoft Corporation | Homogeneous Programming For Heterogeneous Multiprocessor Systems |
US10019570B2 (en) * | 2007-06-14 | 2018-07-10 | Microsoft Technology Licensing, Llc | Protection and communication abstractions for web browsers |
US8595821B2 (en) | 2011-01-14 | 2013-11-26 | International Business Machines Corporation | Domains based security for clusters |
US8832389B2 (en) * | 2011-01-14 | 2014-09-09 | International Business Machines Corporation | Domain based access control of physical memory space |
US8631123B2 (en) | 2011-01-14 | 2014-01-14 | International Business Machines Corporation | Domain based isolation of network ports |
WO2014172710A1 (en) * | 2013-04-19 | 2014-10-23 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for binary compatibility |
US9830176B2 (en) | 2013-04-19 | 2017-11-28 | The Trustees Of Columbia University In The City Of New York | Methods, systems, and media for binary compatible graphics support in mobile operating systems |
US10423537B2 (en) * | 2018-01-31 | 2019-09-24 | Arm Limited | Address space resizing table for simulation of processing of target program code on a target data processing apparatus |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4503492A (en) * | 1981-09-11 | 1985-03-05 | Data General Corp. | Apparatus and methods for deriving addresses of data using painters whose values remain unchanged during an execution of a procedure |
US5210832A (en) * | 1986-10-14 | 1993-05-11 | Amdahl Corporation | Multiple domain emulation system with separate domain facilities which tests for emulated instruction exceptions before completion of operand fetch cycle |
US5210874A (en) * | 1988-03-22 | 1993-05-11 | Digital Equipment Corporation | Cross-domain call system in a capability based digital data processing system |
US5339422A (en) * | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
US5287490A (en) * | 1991-03-07 | 1994-02-15 | Digital Equipment Corporation | Identifying plausible variable length machine code of selecting address in numerical sequence, decoding code strings, and following execution transfer paths |
MX9200935A (es) * | 1991-03-07 | 1993-03-01 | Digital Equipment Corp | Sistema y metodo para detectar llamadas de instruccion de dominio cruzado en un sistema de computadora |
US5307504A (en) * | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | System and method for preserving instruction granularity when translating program code from a computer having a first architecture to a computer having a second reduced architecture during the occurrence of interrupts due to asynchronous events |
JPH05233570A (ja) * | 1991-12-26 | 1993-09-10 | Internatl Business Mach Corp <Ibm> | 異オペレーティング・システム間分散データ処理システム |
JPH05346872A (ja) * | 1992-06-15 | 1993-12-27 | Toshiba Corp | 異種計算機命令の疑似実行方法および装置 |
JPH05346871A (ja) * | 1992-06-15 | 1993-12-27 | Toshiba Corp | 異種計算機命令の疑似実行方法および装置 |
US5497463A (en) * | 1992-09-25 | 1996-03-05 | Bull Hn Information Systems Inc. | Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system |
-
1995
- 1995-02-21 EP EP95301096A patent/EP0671685B1/de not_active Expired - Lifetime
- 1995-02-21 DE DE69505717T patent/DE69505717T2/de not_active Expired - Fee Related
- 1995-03-07 JP JP7047337A patent/JP2965884B2/ja not_active Expired - Fee Related
- 1995-03-08 KR KR1019950004685A patent/KR950033823A/ko not_active Application Discontinuation
-
1996
- 1996-09-30 US US08/721,842 patent/US5666519A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH07287659A (ja) | 1995-10-31 |
KR950033823A (ko) | 1995-12-26 |
EP0671685A2 (de) | 1995-09-13 |
JP2965884B2 (ja) | 1999-10-18 |
EP0671685A3 (de) | 1996-05-15 |
DE69505717D1 (de) | 1998-12-10 |
EP0671685B1 (de) | 1998-11-04 |
US5666519A (en) | 1997-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69505717T2 (de) | Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen | |
DE3587622T2 (de) | Emulationseinrichtung in einem Datenverarbeitungssystem. | |
DE69227774T2 (de) | Speicherverwaltungsverfahren | |
DE10393679B4 (de) | Prozessor, der einen Übergang zwischen einem virtuellen Maschinen Betriebsmodus (VM) und einem virtuellen Maschinen Monitor Betriebsmodus (VMM) unterstützt | |
DE69131637T2 (de) | Registerhaltige Datenbearbeitung in einem Prozessor mit reduziertem Befehlssatz | |
DE69804115T2 (de) | Datenübertragung auf einem nichtflüchtigen speichermedium | |
DE69723286T2 (de) | Echtzeitprogramm-sprachbeschleuniger | |
EP0502857B1 (de) | Verfahren zur dynamischen bindung von definierbaren programmelementen eines interaktiven datenverarbeitungssystems | |
DE69615637T2 (de) | Verfahren zur objektorientierten Programmierung mit dynamischer Schnittstelle | |
DE3586899T2 (de) | Instruktionsvorgriffsystem fuer bedingte sprungbefehle in einer zentralen verarbeitungseinrichtung. | |
DE60131864T2 (de) | Speichern von stapeloperanden in registern | |
DE68916853T2 (de) | Unabhängige Programmlader für virtuelle Maschinenarchitektur. | |
DE69226484T2 (de) | System zur umwandlung von unterprogrammaufrufen in einer simulierten umgebung zur programmentwicklung | |
DE69621493T2 (de) | Hardwareunterstützung zur schnellen Emulation von nicht-implementierten Befehlen | |
DE69332458T2 (de) | Vektorprozessor | |
DE3587591T2 (de) | Mikroprozessor für Forth-ähnliche Sprache. | |
DE69622663T2 (de) | Zweistufige vorausholungspufferstruktur und verfahren mit bypass | |
DE69724322T2 (de) | Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung | |
DE69505224T2 (de) | Computersystem | |
DE60028069T2 (de) | Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen | |
DE4329336A1 (de) | Einrichtung und Verfahren zur Identifizierung eines Computer-Mikroprozessors | |
DE69727177T2 (de) | Emulation von asynchronen Signalen mit Verzweigungsmechanismus | |
DE3750951T2 (de) | Verfahren zur Kodeerzeugung für Rechner mit beschränktem Befehlssatz. | |
DE2517276A1 (de) | Datenverarbeitungssystem | |
DE3650006T2 (de) | Verfahren und Mittel zum Transportieren von Bytes in einem Rechner mit reduziertem Befehlssatz. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |
|
8339 | Ceased/non-payment of the annual fee |