DE60223990T2 - System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode - Google Patents

System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode Download PDF

Info

Publication number
DE60223990T2
DE60223990T2 DE60223990T DE60223990T DE60223990T2 DE 60223990 T2 DE60223990 T2 DE 60223990T2 DE 60223990 T DE60223990 T DE 60223990T DE 60223990 T DE60223990 T DE 60223990T DE 60223990 T2 DE60223990 T2 DE 60223990T2
Authority
DE
Germany
Prior art keywords
command
code
processor
instruction
subgroup
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
DE60223990T
Other languages
English (en)
Other versions
DE60223990D1 (de
Inventor
Tetsuyuki. Kobayashi
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.)
Aplix Corp
Original Assignee
Aplix Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aplix Corp filed Critical Aplix Corp
Application granted granted Critical
Publication of DE60223990D1 publication Critical patent/DE60223990D1/de
Publication of DE60223990T2 publication Critical patent/DE60223990T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

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)
  • Input From Keyboards Or The Like (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Stored Programmes (AREA)

Description

  • Um ein Programm zur Verfügung zustellen, das nicht von einer Plattform eines Computers, wie Hardware oder einem Betriebssystem, abhängt, wurde ein Verfahren zum Erstellen einer virtuellen Maschine (VM) auf jeder Plattform durch eine Software-Technik, oder eine Hardware-Technik, und Ausführen eines Zwischencode zwischen einem Quellcode und einem Objektcode auf der virtuellen Maschine vorgeschlagen. Eine der Programmsprachen, die ein solches Verfahren übernimmt, ist Java (R), die eine Form des Zwischencodes übernimmt, die ein Class-File genannt wird. Festzuhalten ist, dass die Hardware und die virtuelle Maschine, die auf der Hardware erstellt ist, im Folgenden insgesamt als Zwischencode-Ausführungssystem bezeichnet werden kann.
  • Gemäss dem oben beschriebenen Verfahren, ist es, da ein einzelner Programmcode an verschiedene Plattformen zur Verfügung gestellt und ausgeführt werden kann, nicht länger nötig, einen Objektcode vorzubereiten, der nur auf jeder Plattform ausgeführt werden kann. Als Ergebnis kann nicht nur die Verteilung des Programms vereinfacht werden, sondern die Softwareentwickelung kann auch effektiv gestaltet werden. Daher wurde die virtuelle Maschine auf Plattformen von verschiedenen Computern erstellt. Weiterhin wurde in den letzten Jahren die Erstellung der virtuellen Maschine auf einem Prozessor auch in verschiedenen elektronischen Vorrichtungen begonnen (die im Folgenden als zusammengesetzte Vorrichtungen bezeichnet werden), welche einen darin angebrachten Prozessor aufweisen.
  • Hier ist eine solche Maschine als virtuelle Maschine bekannt, die ein Interpretierer-Typ ist, die auf der Plattform als Software erstellt ist, und die der Reihe nach Byte-Code-Befehle übersetzt und ausführt, die in einem Class-File enthalten sind. Die virtuelle Interpretierer-Typ-Maschine erfordert ein Verfahren mit Entnehmen von einzelnen Byte-Code-Befehlen aus dem Class-File und Interpretieren ihrer Inhalte. Dieses Verfahren wird im Stand der Technik zur Somit wurde ein JIT-Compiler-(Just In Time Compiler)-System, ein AOT-Compiler-(Ahead Of Time Compiler), oder dergleichen vorgeschlagen, welcher das Class-File in einen ursprünglichen Code kompiliert, der jeder Hardware eigen ist, und diesen ausführt, um die Leistung zu steigern. Weiterhin, wurden Versuche unternommen, eine virtuelle Maschine in Form von Hardware, wie einem Java-Chip, zu erstellen, der besonders dazu ausgelegt ist, eine direkte Ausführung der Byte-Code-Befehle zu ermöglichen.
  • Da in dem oben erwähnten Compiler-System, wie JIT oder AOT, der ursprüngliche Code des Prozessors ausgeführt wird, ist dies dem Interpretierer-System überlegen, wenn nur die Geschwindigkeit der Befehlsausführung betrachtet wird. Das Compiler-System erfordert jedoch einen Arbeitsbereich, der für einen Kompilierungsbetrieb selbst notwendig ist, oder einen Bereich, um den ursprüngliche Code zu speichern, der viermal bis zehnmal so gross ist, wie das Class-File, und damit wird ein grösseres Speichervolumen in einer unvorteilhaften Weise erforderlich als in dem Interpretierer-System. Ein solches Problem tritt besonders in der zusammengesetzten Vorrichtung auf, bei der die Beschränkung in Bezug auf Hardware-Ressourcen strenger ist, als insbesondere in einem üblichen Computer. Weiterhin, wenn man mit der Kompilierung nach der Steuerung der Ausführung des Class-File beginnt, dann wird der Compiler-Betrieb zur Belastung, und die ausreichende Leistung kann möglicherweise nicht erlangt werden.
  • Weiterhin ist gemäss dem oben erwähnten Java-Chip, obwohl das Class-File mit der hohen Leistung ausgeführt werden kann, ohne eine Kompilierung durchzuführen, eine grosse Menge von Entwicklungskosten bei der Entwickelung eines solchen zweckorientierten Chip erforderlich, und die Steigerung der Kosten des Chips selbst ist zwangsläufig. Weiterhin, im Lichte der Tatsache, dass eine Versionsaktualisierung oder Fehlerbeseitigung in der Sprachspezifikation gemäss dem Fortschritt in der Technologie oder gemäss Markterfordernissen richtig ausgeführt wird, gibt es einen Aspekt, dass die Erstellung der virtuellen Maschine in der Form von Hardware nicht notwendigerweise vorzuziehen ist. Insbesondere ist in der virtuellen Maschine in der zusammengesetzten Vorrichtung eine Übernahme des Java-Chip wegen einer Kombination der ausgeprägten Erfordernisse, Kosten einzusparen, und die Version der Spezifikation in einem kurzen Zyklus zu aktualisieren, nicht realistisch.
  • Da es wie oben beschrieben schwierig ist, die virtuelle Maschine, wie das Compiler-System, oder den Java-Chip in der zusammengesetzten Vorrichtung oder dergleichen anzuwenden, ist die Steigerung der Leistung bei der Ausführung des Class-File in der virtuellen Maschine wünschenswert, die ein Interpretierer-System aufweist, welches das kompakte Class-File ausführen kann, wie es in der Form von Software angebracht ist, die mit Änderungen in der Spezifikation zu Recht kommt, ohne von einer speziellen Hardware Auslegung abhängig zu sein.
  • Eine Aufgabe der vorliegenden Erfindung ist es, die Leistung eines Zwischencode-Ausführungssystem zu verbessern, das einen Zwischencode mit einem Interpretierer-System ausführt.
  • Das US-Patent 5889996 kann als ein System zum Ausführen eines Zwischencodes offenbarend betrachtet werden, der durch Kompilieren eines Quell-Codes erlangt wird, der in einer vorbestimmten Programmsprache erzeugt wird, die eine Befehlsgruppe aufweist, wobei das System einen Prozessor aufweist, der betrieblich dazu geeignet ist zu beurteilen, ob ein von dem Zwischencode entnommener Befehl zu einer Untergruppe von Befehlen gehört, die aus den Befehlen von dieser Befehlsgruppe ausgewählt wurden, und wenn dies der Fall ist, einen Hochgeschwindigkeitsspeicher zu verwenden, um den entnommenen Befehl zu interpretieren und auszuführen, und falls nicht, um einen anderen Speicherteil zu verwenden, als den genannten Hochgeschwindigkeitsspeicher, um den entnommen Befehl zu interpretieren und auszuführen, wobei der Hochgeschwindigkeitsspeicher eine höhere Geschwindigkeit der Übertragung der Daten an den Prozessor aufweist, als der Speicherabschnitt. Dieses System verwendet ein Niveau-1-Cache des Prozessors als Hochgeschwindigkeitsspeicher. Eine ursprüngliche Anwendung wird von dem System ausgeführt, um ein Abbild (eine Kopie) eines Codesegments in das Cache zu laden, wobei das Codesegment in der ursprünglichen Sprache des Prozessors geschrieben ist, und jeweils für sich jedem der virtuellen Maschinenbefehle entspricht. Jedes Abbild eines Codesegments besetzt eine einzelne Cache-Zeile in dem Cache. Wenn die Codesegmentbilder in das Cache geladen wurden, dann wird das Cache „gepinnt", so dass der Cache-Kontroller daran gehindert wird, die Inhalte irgendeiner Cache-Zeile zu ersetzen. Dann kann der Prozessor während der folgenden Ausführung anderer Java-Anwendungen auf die Codesegmente zugreifen, welche dazu erforderlich sind, um alle Java-Befehle zu interpretieren und durch Zugriff auf das Cache auszuführen, deren Codesegmentbefehle in die Caches geladen wurden, anstatt auf den Hauptspeicher zugreifen zu müssen. Weniger als eine volle Befehlsgruppe kann in das Cache vorgeladen werden.
  • Ein Zwischencode-Ausführungssystem, das einen ersten Aspekt der vorliegenden Erfindung verkörpert wird, ist gekennzeichnet durch: ein erstes Software-Interpretationsmodul, welches dazu eingerichtet ist, in dem genannten Hochgeschwindigkeitsspeicher gespeichert zu werden, während das System sich in Betrieb befindet, und zumindest ein Software-Programm aufweist, welches, wenn von dem Prozessor ausgeführt, den Prozessor dazu veranlasst, die Beurteilung, ob der entnommene Befehl zu der Untergruppe gehört, und das Interpretieren und das Ausführen eines jeden entnommenen Befehls auszuführen, der von dem ersten Software-Interpretationsmodul so beurteilt wird, als dass er zu der Untergruppe gehört, wobei das erste Software-Interpretationsmodul dazu betrieben werden kann, wenn es diese Beurteilung durchführt, einen Betriebscode des entnommenen Befehls mit entsprechenden Betriebscodes der Befehle zu vergleichen, die in diese Untergruppe von Befehlen in absinkender Auftrittshäufigkeit der Befehle dieser Untergruppe gehören; und ein zweites Software-Interpretationsmodul, welches dazu eingerichtet ist, in dem genannten Speicherabschnitt gespeichert zu werden, wenn das System sich in Betrieb befindet, und welches zumindest ein Software-Programm umfasst, welches, wenn durch den Prozessor ausgeführt, den Prozessor dazu veranlasst, die Interpretation und Ausführung eines verbleibenden Befehls der Gruppe von Befehlen durchzuführen, der von dem ersten Software-Interpretationsmodul nicht als zu dieser Untergruppe gehörig bestimmt wurde.
  • Gemäss einem zweiten Aspekt der vorliegenden Erfindung wird ein Verfahren zum Ausführen von Zwischencode zur Verfügung gestellt, der durch Kompilieren eines Quellcode erlangt wurde, der in einer vorbestimmten Programmsprache erzeugt wurde, wobei die vorbestimmte Programmsprache eine Befehlsgruppe aufweist, und das Verfahren die Verwendung eines Prozessors umfasst, um zu beurteilen ob ein Befehl, der von dem Zwischencode entnommen wurde, in eine Untergruppe von Befehlen gehört, die von den Befehlen dieser Befehlsgruppe entnommen wurden, und wenn ja einen Hochgeschwindigkeitsspeicher zu verwenden, um den entnommenen Befehl zu interpretieren und auszuführen, und wenn nicht, einen anderen Speicherabschnitt, als den Hochgeschwindigkeitsspeicher zu verwenden, um den entnommenen Befehl zu interpretieren und auszuführen, wobei der Hochgeschwindigkeitsspeicher eine höhere Übertragungsgeschwindigkeit für Daten an den Prozessor aufweist, als der Speicherabschnitt, gekennzeichnet durch: Verwenden eines ersten Software-Interpretationsmoduls, welches in dem Hochgeschwindigkeitsspeicher gespeichert ist und zumindest ein Software-Programm umfasst, um den Prozessor dazu zu veranlassen, die Beurteilung, ob der entnommene Befehl zu dieser Untergruppe gehört, und die Interpretation und Ausführung eines jeden entnommenen Befehls auszuführen, von dem das erste Software-Interpretationsmodul entscheidet, dass er zu dieser Untergruppe gehört, wobei diese Beurteilung dadurch ausgeführt wird, dass ein Betriebscode des entnommenen Befehls mit entsprechenden Betriebscodes der Befehle verglichen wird, die zu dieser Untergruppe von Befehlen in absteigender Häufigkeitsanordnung der Befehle dieser Gruppe gehören; und Verwenden eines zweiten Software-Interpretationsmoduls, das in dem Speicherabschnitt gespeichert ist und zumindest ein Software-Programm umfasst, das den Prozessor dazu veranlasst, die Interpretation und die Ausführung eines verbleibenden Befehls von dieser Befehlsgruppe auszuführen, die nicht von dem ersten Software Übersetzungsmodul so beurteilt wird, dass sie zu dieser Untergruppe gehört.
  • Gemäss einem dritten Aspekt der vorliegenden Erfindung wird ein Computer-Programm zu Verfügung gestellt, welches dazu ausgelegt ist, von einem Prozessor ausgeführt zu werden, um den Prozessor dazu zu veranlassen, Zwischencode auszuführen, der durch Kompilierung eines Quell-Codes erlangt wird, der in einer vorbestimmten Programmsprache erzeugt wird, wobei die vorbestimmte Sprache eine Befehlsgruppe aufweist, der Prozessor Zugriff auf einen Hochgeschwindigkeitsspeicher und einen anderen Speicherabschnitt als diesen Hochgeschwindigkeitsspeicher hat, und der Hochgeschwindigkeitsspeicher eine höhere Datenübertragungsgeschwindigkeit an den Prozessor aufweist, als der Speicherabschnitt, und das Programm umfasst: ein erstes Software-Interpretationsmodul, welches dazu angepasst ist, in dem Hochgeschwindigkeitsspeicher gespeichert zu werden, und welches, wenn von dem Prozessor ausgeführt, den Prozessor dazu veranlasst, zu beurteilen, ob ein aus dem Zwischencode entnommener Befehl zu einer Untergruppe von Befehlen gehört, die aus den Befehlen dieser Befehlsgruppe ausgewählt sind, und jeden entnommenen Befehl zu interpretieren und auszuführen, der von dem ersten Software-Interpretationsmodul so beurteilt wird, dass er zu dieser Untergruppe gehört, wobei diese Beurteilung dadurch ausgeführt wird, dass ein Betriebscode des entnommenen Befehls mit betreffenden Betriebscodes der Befehle verglichen wird, die zu dieser Untergruppe von Befehlen in absinkender Reihenfolge der Auftrittshäufigkeit der Befehle dieser Untergruppe gehören; und ein zweites Software-Interpretationsmodul, welches dazu eingerichtet ist, in diesem Speicherabschnitt gespeichert zu werden, und welches, wenn von dem Prozessor ausgeführt, den Prozessor dazu veranlasst, einen verbleibenden Befehl dieser Gruppe von Befehlen, von dem das erste Software-Interpretationsmodul entschieden hat, dass er zu dieser Untergruppe gehört, zu interpretieren und auszuführen.
  • Diese Zusammenfassung der Erfindung beschreibt nicht notwendigerweise alle notwendigen Eigenschaften, so dass die Erfindung auch eine Unterkombination der beschriebenen Eigenschaften sein kann.
  • Die Erfindung kann besser verstanden werden, wenn man der nun folgenden eingehenden Beschreibung in Verbindung mit den beigefügten Zeichnungen folgt, wobei:
  • 1 ist eine Konzeptansicht, die eine Hardware-Konfiguration zeigt, die auf eine erste Ausführungsform gemäss der vorliegenden Erfindung anwendbar ist;
  • 2 ist ein Funktionsblockdiagramm eines Zwischencode-Ausführungssystems, welches auf die erste Ausführungsform gemäss der vorliegenden Erfindung anwendbar ist;
  • 3 ist ein Flussdiagramm, das den Betrieb des Zwischencode-Ausführungssystems zeigt, das auf die erste Ausführungsform gemäss der vorliegenden Erfindung anwendbar ist;
  • 4 ist ein Funktionsblockdiagramm eines Zwischencode-Ausführungssystem, welches auf eine zweite Ausführungsform gemäss der vorliegenden Erfindung anwendbar ist; und
  • 5 ist ein Flussdiagramm, welches den Betrieb des Zwischencode-Ausführungssystem zeigt, das auf die zweite Ausführungsform der vorliegenden Erfindung anwendbar ist.
  • Ein erstes Ausführungsbeispiel gemäss der vorliegenden Erfindung wird zuerst mit Bezug auf die 1, 2 und 3 beschrieben.
  • 1 ist eine Ansicht, die schematisch eine Hardware-Konfiguration eines Zwischencode-Ausführungssystems 1 gemäss der ersten Ausführungsform der vorliegenden Erfindung zeigt, und 2 ist ein Funktionsblockdiagramm des Zwischencode-Ausführungssystems 1.
  • Wie in 1 gezeigt, enthält die Hardware-Konfiguration des Zwischencode-Ausführungssystems 1 einen Chip 1, der einen Prozessor 2, wie z. B. eine CPU oder eine MPU, und einen Hochgeschwindigkeitsspeicher 3 aufweist, und einen Speicherabschnitt 6, der einen RAM 7 und einen ROM 8 aufweist. Weiterhin kann eine Eingabevorrichtung, eine Anzeigevorrichtung, eine externe Schnittstelle oder dergleichen vorhanden sein, aber sie haben nicht direkt etwas mit der Struktur, und Wirkungen/Vorzügen dieser Ausführungsform zu tun, und werden daher weggelassen.
  • Hier sind der Prozessor 2 und der Speicherabschnitt 6 durch einen externen Bus 5 verbunden, wohingegen der Prozessor 2 und der Hochgeschwindigkeitsspeicher 3 durch einen internen Bus 4 verbunden sind, der eine grössere Busbreite, als der externe Bus 4 aufweist, und der Hochgeschwindigkeitsspeicher 3 kann Daten an den Prozessor 2 mit einer höheren Geschwindigkeit übertragen, als in den Speicherabschnitt 6. Obwohl ein interner Speicher oder ein Cache-Speicher für eine solchen Hochgeschwindigkeitsspeicher 3 verwendet werden kann, wird eine Beschreibung in Bezug auf den Fall gegeben, wo der interne Speicher in dieser Ausführungsform verwendet wird.
  • In der oben beschriebenen Hardware-Konfiguration kann das Zwischencode-Ausführungssystem 1, welches das Funktionsblockdiagramm, wie in 2 gezeigt, bildet, dadurch ausgeführt werden, dass verschiedene Arten von Software unter Verwendung des Prozessors 2 ausgeführt werden, die in dem Speicherabschnitt 6 gespeichert sind. Das Zwischencode-Ausführungssystem 1 führt einen Zwischencode aus, der nicht von einer Plattform abhängig ist, und die Ausführung eines Class-File, das durch Kompilierung eines Quellcodes erlangt wird, der in der Java Sprache erzeugt wurde, wird in dieser Ausführungsform beschrieben. Nun wird jeder Funktionsblock beschrieben.
  • Das Zwischencode-Ausführungssystem 1 enthält einen Verarbeitungsbefehlerfassungsabschnitt 13, einen ersten Verarbeitungsbefehlausführungsabschnitt 15, und einen zweiten Verarbeitungsbefehlausführungsabschnitt 17.
  • Der Befehlserfassungsabschnitt 13 holt der Reihe nach einen nächsten Befehlscode, der aus dem Class-File ausgeführt werden soll, und der geholte Befehlscode wird zu dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 übertragen.
  • Der erste Verarbeitungsbefehlsausführungsabschnitt 15 enthält einen ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 14 und Verarbeitungsmodule 11, und er weist eine Funktion auf, um der Reihe nach Untergruppen von Byte-Code-Befehlen zu interpretieren und auszuführen, die aus allen Byte-Code-Befehlen ausgewählt sind, die in einem Befehlssystems der Java-Sprache enthalten sind. Genauer noch, in dem ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 14 wird ein Befehlscode, der von dem Verarbeitungsbefehlserfassungsabschnitt 13 entnommen wurde, mit jedem Byte-Code-Befehl verglichen, der in der Untergruppe enthalten ist, und das Verarbeitungsmodul 11, das dem Byte-Code-Befehl entspricht, wird ausgeführt, wenn sie mit einander übereinstimmen. Das Verarbeitungsmodul 11 ist ein Software-Programm, das gemäss jedem Byte-Code-Befehl zur Verfügung gestellt wird, der in der Untergruppe enthalten ist, und veranlasst den Prozessor 2, eine Verarbeitung gemäss einem bestimmten Inhalt jedes Byte-Code-Befehls auszuführen. Wenn es keinen gleichen Befehlscode in den Byte-Code-Befehlen gibt, die in der Untergruppe enthalten sind, dann wird der entnommene Befehlscode auf den zweiten Verarbeitungsbefehlsausführungsabschnitt 17 übertragen.
  • Der zweite Verarbeitungsbefehlsausführungsabschnitt 17 enthält einen nicht gewählten Verarbeitungsbefehlsspezifikationsabschnitt 16 und ein Verarbeitungsmodul 12, und hat eine Funktion, um der Reihe nach Byte-Code-Befehle zu interpretieren und auszuführen, die nicht in der Untergruppe enthalten sind. Genauer noch wird in dem nicht ausgewählten Verarbeitungsbefehlsspezifikationsabschnitt 16 der entnommene Befehlscode mit jedem der Byte-Code-Befehle verglichen, die nicht in der Untergruppe enthalten sind. Dann, wenn sie miteinander übereinstimmen, wird das Verarbeitungsmodul 12, das dem Byte-Code-Befehl entspricht, ausgeführt. Wie oben beschrieben, wird die vorbestimmte Verarbeitung in dem Verarbeitungsmodul 11 oder 12 entsprechend dem entnommenen Befehlscode durch eine Kombination des ersten Verarbeitungsbefehlsausführungsabschnitts 15 und des zweiten Verarbeitungsbefehlsausführungsabschnitts 17 ausgeführt.
  • Wie oben beschrieben, werden in dieser Ausführungsform die Byte-Code-Befehle in diejenigen unterschieden, die in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 ausgeführt werden, und diejenigen, die in dem zweiten Verarbeitungsbefehlsausführungsabschnitt 17 ausgeführt werden. Hier können die Byte-Code-Befehle in der Java(R)-Sprache ungefähr in vier operationsgestützte Befehle eingeteilt werden (iadd, isub, imul, idiv, ...), oder in Bit-Betrieb gestützte Befehle (ior, band, ishl, ...), deren Feinheit klein ist, auf Speicherbetrieb gestützte Befehle (iload, istore, iaload, ...), deren Feinheit mittel ist, und Java-eigene Befehle (new, invokespecial, ...), deren Feinheit gross ist. Weiterhin gibt es allgemein eine Tendenz, dass eine Auftrittshäufigkeit in dem Class-File bei Befehlen hoch ist, deren Feinheit klein ist, und sie ist niedrig in den Befehlen, deren Feinheit gross ist.
  • Damit werden in dieser Ausführungsform Befehle, deren Grösse klein ist und deren Auftrittshäufigkeit gross ist, aus allen Byte-Code-Befehlen vorab ausgewählt, und die ausgewählten Byte-Code-Befehle werden in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 ausgeführt, und die verbleibenden Byte-Code-Befehle werden in dem zweiten Verarbeitungsbefehlsausführungsabschnitt 17 ausgeführt. Das bedeutet, der erste Verarbeitungsbefehlsausführungsabschnitt 15 weist das Verarbeitungsmodul 11 auf, das jedem der gewählten Byte-Code-Befehle entspricht. Weiterhin vergleicht der ausgewählte Verarbeitungsbefehlsbeurteilungsabschnitt 14 einen Betriebscode eines vorgegebenen Befehlscodes einzeln mit Betriebscodes des ausgewählten Byte-Code-Befehls, und führt das entsprechende Verarbeitungsmodul 11 aus, wenn sie miteinander übereinstimmen. Weiterhin hat der zweite Verarbeitungsbefehlsausführungsabschnitt 17 das Verarbeitungsmodul 12, das jedem der verbleibenden Byte Codes entspricht. Weiterhin vergleicht der nicht ausgewählte Verarbeitungsbefehlsspezifikationsabschnitt 16 den Betriebscode des vorgegebenen Befehlscodes einzeln mit Betriebscodes der verbleibenden Byte-Code-Befehle, und führt das Verarbeitungsmodul 12 aus, wenn sie miteinander übereinstimmen.
  • Jedoch unterscheidet sich ein Byte-Code-Befehl, der eine hohe Häufigkeit aufweist in Abhängigkeit von der Umgebung, in der das Zwischencodeausführungssystem 10 angebracht ist. Zum Beispiel haben der Fall, wo es in einem Mobiltelefon angebracht ist, der Fall, wo es in einem Autonavigationssystem angebracht ist, und der Fall, wo es in einem PDA angebracht ist, alle verschiedene Use-Objekte und Use-Situationen, und damit hat ein Befehl mit einer hohen Häufigkeit in einer gegebenen Umgebung nicht notwendigerweise die grosse Häufigkeit in einem beliebigen anderen System. Daher ist es vorzuziehen, Auftrittshäufigkeiten der Byte-Code-Befehle gemäss jeder Umgebung zu untersuchen, in der das Zwischencodeausführungssystem 10 angebracht ist, und die Byte-Code-Befehle gestützt auf das Untersuchungsergebnis auszuwählen, die in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 ausgeführt werden sollen.
  • Zusätzlich führt in dieser Ausführungsform ein Code des Software-Programms, das den ersten Verarbeitungsbefehlsausführungsabschnitt 15 darstellt, der die oben beschriebene Struktur aufweist (erstes Interpretationsmodul) das Class-File aus, während der betreffende Code in dem Hochgeschwindigkeitsspeicher 3 gespeichert wird. Zum Beispiel kann das Zwischencode-Ausführungssystem 10 einen Code des ersten Verarbeitungsbefehlsausführungsabschnitts 15 in den Hochgeschwindigkeitsspeicher 3 aus dem Speicherabschnitt 6 kopieren, bevor das Class-File ausgeführt wird. Um dies zu erreichen, wird die Anzahl der ausgewählten Byte-Code-Befehle, die in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 ausgeführt werden sollen, angepasst, und das Software-Programm, welches den ersten Verarbeitungsbefehlsausführungsabschnitt 15 darstellt, wird auf eine Grösse gebracht, die in dem Hochgeschwindigkeitsspeicher 3 gespeichert werden kann.
  • Andererseits kann ein Code des Software-Programms, das den zweiten Verarbeitungsbefehlsausführungsabschnitt 17 darstellt (zweites Interpretationsmodul) in dem Speicherabschnitt 6 gespeichert bleiben.
  • Der Betrieb des Zwischencodeausführungssystems 10 gemäss dieser Ausführungsform wird nun mit Bezug auf 3 beschrieben. Hier weist das Zwischencodeausführungssystem 10 den Verarbeitungsbefehlserfassungsabschnitt 13 den ersten Verarbeitungsbefehlsausführungsabschnitt 15 einschliesslich des ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitts 14 und des Verarbeitungsmoduls 11, und den zweiten Verarbeitungsbefehlsausführungsabschnitts 17, einschliesslich des nicht ausgewählten Verarbeitungsbefehlsspezifikationsabschnitts 16 und des Verarbeitungsmoduls 12 auf und alle werden dargestellt durch Ausführen einer Reihe von Software-Programmen durch den Prozessor 2 die in dem Speicherabschnitt 6 gespeichert sind.
  • Zum Beispiel akzeptiert das Zwischencodeausführungssystem 10 ein Class-File der Java-Anwendung von einer nicht beschriebenen Informationseingabeseite, und speichert das akzeptierte Class-File in dem RAM-Speicher 7 des Speicherabschnitts 6 (S1). Dann führt das Zwischencodeausführungssystem 10 das Software-Programm aus, und führt weiterhin das Class-File durch eine Reihe von Operationen aus, die unten erwähnt werden. In diesem Moment wird das Software-Programm, welches den ersten Verarbeitungsbefehlsausführungsabschnitt 15 darstellt (erstes Interpretationsmodul) in dem Hochgeschwindigkeitsspeicher 3 vorab gespeichert gehalten. Die folgende Operation wird auch auf das Zwischencodeausführungsverfahren gemäss der ersten Ausführungsform angewandt.
  • Der Verarbeitungsbefehlserfassungsabschnitt 13 wird zuerst durch Ausführen des Software-Programms durch den Prozessor 2 dargestellt, und ein Befehlscode wird aus dem Class-File entnommen (S2).
  • Danach wird das Software-Programm, welches den ersten Verarbeitungsbefehlsausführungsabschnitt 15 (erstes Interpretationsmodul) darstellt, welches in dem Hochgeschwindigkeitsspeicher 3 gespeichert ist, ausgeführt, wobei die Beurteilung ausgeführt wird, auf welche der ausgewählten Byte-Code-Befehle der bei S2 entnommene Befehlscode spezifiziert werden kann (S3), und das Verarbeitungsmodul 11, welches dem Befehlscode entspricht, wird wenn möglich ausgeführt (S4). Genauer gesagt dient die hier ausgeführte Verarbeitung zum Vergleich des Betriebscodes des entnommenen Befehlscodes mit den Betriebscodes des entnommenen Byte-Code-Befehls, jeweils der Reihe nach in dem ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 14 in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15, und zum Ausführen des entsprechenden Verarbeitungsmodul 11, wenn sie miteinander übereinstimmen.
  • Wenn festgestellt wird, dass es bei S3 unmöglich ist, nämlich wenn festgestellt wird, dass der Betriebscode des entnommenen Befehlscode nicht mit irgendeinem Betriebscode der ausgewählten Byte-Code-Befehle in dem ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 14 übereinstimmt, dann wird das Software-Programm ausgeführt, welches den zweiten Verarbeitungsbefehlsausführungsabschnitt 17 (zweites Interpretationsmodul) bildet, einer der verbleibenden Byte-Code-Befehle, dem der Befehlscode entspricht, wird spezifiziert (S5), und das Verarbeitungsmodul 12, welches dem spezifizierten Befehlscode entspricht, wird ausgeführt (S6). Genauer gesagt dient die hier ausgeführte Verarbeitung dem Vergleich des Betriebscodes des betreffenden Befehlscodes mit Betriebscodes der verbleibenden Byte-Codes, der Reihe nach, in dem nicht ausgewählten Verarbeitungsbefehlsspezifikationsabschnitt 16 in dem zweiten Verarbeitungsbefehlsausführungsabschnitt 17, und das entsprechende Verarbeitungsmodul 12 wird ausgeführt, wenn sie miteinander übereinstimmen.
  • Danach werden die ähnlichen Verfahren mit Bezug auf den nächsten Befehlscode ausgeführt, der in dem Class-File enthalten ist, und das Class-File wird durch Wiederholung dieser Verfahren ausgeführt.
  • Gemäss der oben beschriebenen Betriebsweise werden die Byte-Code-Befehle, die aus allen Byte-Code-Befehlen ausgewählt werden, durch die Verarbeitung durch Bilden einer inneren Schleife ausgeführt, die durch das Bezugszeichen L1 gekennzeichnet ist, und die verbleibenden Byte-Code-Befehle werden durch eine Verarbeitung ausgeführt, die eine äussere Schleife bildet, die mit L2 bezeichnet ist.
  • Wie oben beschrieben, werden in dieser Ausführungsform die Byte-Code-Befehle mit einer geringen Grösse und einer hohen Auftrittshäufigkeit zuerst aus all denjenigen Byte-Code-Befehlen vorab ausgewählt, eine Interpretation und eine Ausführung der Befehlscodes in dem ersten Verarbeitungsbefehlsausführungsabschnitt 15 entsprechend den ausgewählten Byte-Code-Befehlen ausgeführt, und die Befehlscodes, die noch nicht ausgeführt wurden, dann in dem zweiten Verarbeitungsbefehlsausführungsbefehl 17 interpretiert und ausgeführt. Daher kann die Interpretation und Ausführung des Byte-Code-Befehls mit der höchsten Auftrittshäufigkeit nach Priorität ausgeführt werden. Zusätzlich, da das Software-Programm, welches den ersten Verarbeitungsbefehlsausführungsabschnitt 15 (erstes Interpretationsmodul) bildet, in dem Hochgeschwindigkeitsspeicher 3 gespeichert ist, kann der erste Verarbeitungsbefehlsausführungsabschnitt 15 eine Interpretation und Ausführung des Byte-Code-Befehls mit der hohen Auftrittshäufigkeit mit hoher Geschwindigkeit ausführen. Daher können gemäss dieser Ausführungsform Byte-Code-Befehle mit der hohen Auftrittshäufigkeit mit hoher Geschwindigkeit nach Priorität ausgeführt werden. Andererseits, da die Byte-Code-Befehle mit der geringen Auftrittshäufigkeit von dem zweiten Verarbeitungsbefehlsausführungsabschnitt interpretiert und ausgeführt werden, kann die Geschwindigkeit beim Ausführen der Byte-Code-Befehle nicht gesteigert werden. Jedoch ist der Effekt des Ausführens der Byte-Code-Befehle mit der hohen Auftrittshäufigkeit durch den ersten Verarbeitungsbefehlsausführungsabschnitt 15 mit hoher Geschwindigkeit sehr hoch, und die Leistung des Zwischencodeausführungssystems 10 kann verbessert werden, wenn die gesamte Verarbeitungsausführung des Class-File betrachtet wird.
  • Weiterhin kann in dieser Ausführungsform das Software-Programm, welches den Verarbeitungsbefehlsausführungsabschnitt 15 (erstes Interpretationsmodul) bildet, konfiguriert sein, um optimal zur Ausführung der ausgewählten Befehlscodes zu sein, und die Leistung des Zwischencodeausführungssystems 10 kann dadurch weiter verbessert werden.
  • Zum Beispiel kann sowohl das Software-Programm, welches den ersten Verarbeitungsbefehlsausführungsabschnitt 15 (erstes Interpretationsmodul) bildet, und die Software, welche das zweite Verarbeitungsbefehlsausführungsmodul 17 (zweites Interpretationsmodul) bildet, durch Verwendung einer Hochsprache, wie C oder C++ erzeugt werden, aber die Vorgenannten können durch Verwendung der Assemblersprache so konfiguriert sein, dass sie optimal sind.
  • Weiterhin wird, wenn der ausgewählte Verarbeitungsbefehlsbeurteilungsabschnitt 14 den Betriebscode des entnommenen Befehlscodes mit den Befehlscodes der ausgewählten Byte-Code-Befehle vergleicht und eine Beurteilung trifft, ob diese miteinander übereinstimmen, der Vergleich in der Reihenfolge mit dem Byte-Code-Befehl mit höherer Häufigkeit durchgeführt. Dies kann vorzugsweise auch auf den nicht ausgewählten Verarbeitungsbefehlsspezifikationsabschnitt 16 angewendet werden.
  • In Anbetracht des Computerprogrammprodukts, welches verwendet wird, um den Zwischencode auszuführen, ist die Ausführungsform wie folgt.
  • Das bedeutet, hier wird ein Computerprogrammprodukt zur Verfügung gestellt, welches einen Zwischencode ausführt, der durch Umwandeln eines Source-Code erlangt wird, der in einer vorbestimmten Programmsprache auf einem Prozessor erzeugt wird, mit dem der Hochgeschwindigkeitsspeicher 3 und der Speicherabschnitt 6 verbunden sind, wobei das erste Interpretationsmodul, welches einer Untergruppe einer Befehlsgruppe der Programmsprache entspricht, in dem Hochgeschwindigkeitsspeicher 3 gespeichert ist, wobei das erste Interpretationsmodul verwendet wird, um zu beurteilen, ob ein Befehl, der aus dem Zwischencode entnommen ist, irgendeinem der Untergruppe entspricht, wobei dieser Befehl ausgeführt wird, wenn der entsprechende Befehl in der Untergruppe vorhanden ist, wobei das zweite Interpretationsmodul, das den verbleibenden Befehlen der Befehlsgruppe entspricht in dem Speicherabschnitt 6 gespeichert wird, und das zweite Interpretationsmodul verwendet wird, um zu spezifizieren welchem der verbleibenden Befehle der Befehl entspricht, und um ihn auszuführen, wenn sich kein entsprechender Befehl in der Untergruppe befindet. In diesem Fall wird angenommen, dass die Untergruppe der Befehlsgruppe der Programmsprache vorher bestimmt wird.
  • Eine zweite Ausführungsform gemäss der vorliegenden Erfindung wird nun mit Bezug auf die 4 und 5 beschrieben.
  • 4 ist ein Funktionsblockdiagramm eines Zwischencodeausführungssystems 20 gemäss der zweiten Ausführungsform der vorliegenden Erfindung. In 4 kennzeichnen gleiche Bezugszeichen Bestandteile, die gleichwertig mit denen in der ersten Ausführungsform sind.
  • Das Zwischencodeausführungssystem 20 gemäss der zweiten Ausführungsform ist ähnlich zu demjenigen gemäss der ersten Ausführungsform in der Grundstruktur, aber es unterscheidet sich von diesem dadurch, dass ein erster ausgewählter Verarbeitungsbefehlsausführungsabschnitt 24 und ein zweiter ausgewählter Verarbeitungsbefehlsausführungsabschnitt 26 anstatt des ersten Verarbeitungsbefehlsausführungsabschnitts 15 in der ersten Ausführungsform vorgesehen ist. Eine Beschreibung wird hauptsächlich mit Bezug auf diesen Unterschied gegeben.
  • Der erste ausgewählte Verarbeitungsbefehlsausführungsabschnitt 24 enthält einen ersten ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 23 und Verarbeitungsmodule 21 und weist eine Funktion auf, um der Reihe nach eine erste Untergruppe von Byte-Code-Befehlen zu interpretieren und auszuführen, die aus allen Byte-Code-Befehlen ausgewählt sind.
  • Der zweite ausgewählte Verarbeitungsbefehlsausführungsabschnitt 26 enthält einen zweiten ausgewählten Verarbeitungsbefehlsbeurteilungsabschnitt 25 und Verarbeitungsmodule 22 und weist eine Funktion auf, um der Reihe nach eine zweite Untergruppe von Byte-Code-Befehlen zu interpretieren und auszuführen, die aus den verbleibenden Byte-Code-Befehlen ausschließlich der ersten Untergruppe ausgewählt werden.
  • Das Verarbeitungsmodul 21 ist ein Software-Programm, welches einen Prozessor 2 dazu veranlasst, eine Verarbeitung gemäss einem bestimmten Inhalt eines jeden Byte-Code-Befehls auszuführen, der zu der ersten Untergruppe gehört, und das Verarbeitungsmodul 21 ist ein Software-Programm, welches den Prozessor 2 dazu veranlasst, eine Verarbeitung gemäss einem bestimmten Inhalt eines jeden Byte-Code-Befehls auszuführen, der zu der zweiten Untergruppe gehört.
  • Weiterhin sind konkrete Funktionen des ersten ausgewählten Verarbeitungsbefehlsausführungsabschnitts 24 und des zweiten ausgewählten Verarbeitungsbefehlsausführungsabschnitts 26 im Wesentlichen ähnlich zu denjenigen des Verarbeitungsbefehlsausführungsabschnitts 15 in der ersten Ausführungsform. Wenn ein entnommener Befehlscode der selbe ist, wie einer der Byte-Code-Befehle, der zu der ersten Untergruppe oder der zweiten Untergruppe gehört, dann führen diese Abschnitte den Byte-Code-Befehl aus.
  • Hier enthält die erste Untergruppe einen Byte-Code-Befehl, der eine höhere Auftrittshäufigkeit in einem Class-File aufweist, und die zweite Untergruppe enthält einen Byte-Code-Befehl, der die zweit höchste Auftrittshäufigkeit in dem Class-File aufweist. Weiterhin wird in dieser Ausführungsform ein Code des Software-Programms, das den ersten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 24 bildet in einem Hochgeschwindigkeitsspeicher 3 gespeichert. Obwohl es vorzuziehen ist, einen Code des Software-Programms, welches den zweiten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 26 bildet in dem Hochgeschwindigkeitsspeicher 3 zu speichern, wenn genügend freie Speicherkapazität vorhanden ist, kann er in einem Speicherabschnitt 6 gespeichert werden, wenn der Hochgeschwindigkeitsspeicher 3 nicht genügend freie Kapazität aufweist.
  • Der Betrieb des Zwischencodeausführungssystems 20 wird nun mit Bezug auf 5 beschrieben.
  • Wie in der ersten Ausführungsform nimmt das Zwischencodeausführungssystem 10 zuerst das Class-File der Java-Anwendung aus der nicht dargestellten Informationseingabeseite, speichert das angenommene Class-File in einem RAM 7 des Speicherabschnitts 6 (S11), und führt das Class-File durch die folgenden Verfahren mit dem Software-Programm aus, das den ersten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 24 bildet, der in dem Hochgeschwindigkeitsspeicher 3 gespeichert ist.
  • Ein Befehlscode wird zuerst von dem Class-File, wie in der ersten Ausführungsform entnommen (S12).
  • Dann wird das Software-Programm, das den ersten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 24 bildet, der in dem Hochgeschwindigkeitsspeicher 3 gespeichert ist, ausgeführt, wobei eine Beurteilung durchgeführt wird, ob der entnommene Befehlscode spezifiziert werden kann als irgendein Byte-Code-Befehl in der ersten Untergruppe (S13), und das Verarbeitungsmodul 21, welches diesem Befehlscode entspricht, wird ausgeführt, wenn die Spezifikation möglich ist (S14).
  • Wenn festgestellt wird, dass eine Spezifikation bei S13 nicht möglich ist, dann wird das Software-Programm, das den zweiten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 17 bildet, ausgeführt, wobei eine Beurteilung in Bezug darauf durchgeführt wird, ob der Befehlscode spezifiziert werden kann, als irgendein Byte-Code-Befehl in der zweiten Untergruppe (S15), und das Verarbeitungsmodul 22, welches diesem Befehlscode entspricht, ausgeführt wird, wenn die Spezifikation möglich ist (S16).
  • Weiterhin wird, wenn festgestellt wird, dass eine Spezifikation bei S15 nicht möglich ist, das Software-Programm, das den zweiten Verarbeitungsbefehlsausführungsabschnitt 17 bildet, ausgeführt, wobei einer der verbleibenden Byte-Code-Befehle, dem der Befehlscode entspricht, spezifiziert wird (S17), und das Verarbeitungsmodul 12, welches dem spezifizierten Befehlscode entspricht ausgeführt wird (S18).
  • Ähnliche Verfahren werden mit Bezug auf den nächsten Befehlscode ausgeführt, der in dem Class-File enthalten ist, und das Class-File wird durch Wiederholen dieser Verfahren ausgeführt.
  • Gemäss dieser Ausführungsform, welche das Class-File mit der oben beschriebenen Betriebsweise ausführt, kann der Byte-Code-Befehl mit der höchsten Auftrittshäufigkeit in dem Class-File mit hoher Geschwindigkeit und mit Priorität, wie in der ersten Ausführungsform, ausgeführt werden, und der Byte-Code-Befehl mit der nächst höchsten Auftrittshäufigkeit in dem Class-File kann mit Priorität über alle anderen Byte-Code-Befehle ausgeführt werden.
  • Zusätzlich kann bei dem oben beschriebenen Betrieb, obwohl der Code des Software-Programms, das den ersten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 24 bildet, in dem Hochgeschwindigkeitsspeicher 3 vorab gespeichert ist, eine freie Kapazität in dem Hochgeschwindigkeitsspeicher detektiert werden, wenn das Class-File ausgeführt wird, und der Code des Software-Programms, das den zweiten ausgewählten Verarbeitungsbefehlsausführungsabschnitt 26 bildet, kann gleichsam in dem Hochgeschwindigkeitsspeicher 3 gespeichert werden, wenn genügend freie Kapazität vorhanden ist.
  • Obwohl die obige Darstellung das Zwischencodeausführungssystem gemäss der ersten und zweiten Ausführungsform beschrieben hat, ist die vorliegende Erfindung nicht auf diese Ausführungsformen beschränkt.
  • Zum Beispiel ist, obwohl der interne Speicher als Hochgeschwindigkeitsspeicher 3 in den vorgenannten Ausführungsformen vorgesehen ist, die vorliegende Erfindung nicht darauf beschränkt, und der Hochgeschwindigkeitsspeicher 3 kann ein Cachespeicher sein. Zusätzlich ist die vorliegende Erfindung nicht auf das Beispiel der Hardware-Konfiguration, die in 1 gezeigt ist, eingeschränkt, und es ist möglich, jede Hardware-Konfiguration solange anzuwenden, wie ein vergleichsweise schneller Speicher und ein vergleichsweise langsamer Speicher, beide in dieser Konfiguration zur Verfügung gestellt werden. Der Chip 1 kann z. B. ein ASIC oder Mikrokontroller sein, und eine Struktur die eine Mehrzahl von Chips 1 oder Prozessoren 2 enthält, kann ausreichen.
  • Wenn der Cachespeicher als Hochgeschwindigkeitsspeicher 3 in der ersten Ausführungsform verwendet wird, dann kann die Ausführung des Class-File damit begonnen werden, dass der Code des Software-Programms, das den ersten Verarbeitungsbefehlsausführungsabschnitt 15 bildet, in dem Speicherabschnitt 6 gespeichert wird. In diesem Fall, da der Code mit einem vorbestimmten Cache-Mechanismus in dem Cachespeicher gespeichert wird, welcher der Hochgeschwindigkeitsspeicher 3 ist, kann die Leistung des Zwischencodeausführungssystems 10 verbessert werden, wie bei dem vorgehenden Ausführungsformen. Dies ist auch der Fall bei Verwendung des Cachespeichers in der zweiten Ausführungsform.
  • Weiterhin ist, obwohl mit Bezug auf den Fall eine Beschreibung gegeben wurde, wo das Class-File aus Java als Zwischencode in jeder der vorgenannten Ausführungsformen ausgeführt wird, die vorliegende Erfindung darauf nicht beschränkt.
  • Weiterhin kann das Software-Programm, welches das Zwischencodeausführungssystem bildet, vorher in dem Speicherabschnitt 6 gespeichert werden, oder es kann von ausserhalb des Zwischencodeausführungssystem nach Bedarf geliefert werden. In diesem Fall ist die Bestätigung des Empfangs des Software-Programms von der Aussenseite des Zwischencodeausführungssystem nicht beschränkt auf Herunterladen von einem Server durch ein Netz, und die Software kann von einem Speichermedium, wie z. B. einer CD-ROM oder einem portablen Speicher geliefert werden.

Claims (12)

  1. System zum Ausführen eines Zwischencodes, der durch Kompilieren eines Quellcodes erlangt wird, der in einer vorbestimmten Programmsprache erzeugt ist, wobei die vorbestimmte Sprache einen Befehlssatz aufweist, und das System einen Prozessor (2) umfasst, der betrieben werden kann, um zu beurteilen, ob ein Befehl, der aus dem Zwischencode entnommen ist, in eine Untergruppe von Befehlen gehört, die aus den Befehlen dieser Befehlsgruppe ausgewählt sind, und, wenn dies der Fall ist, einen Hochgeschwindigkeitsspeicher (3) verwendet, um den entnommenen Befehl zu interpretieren und auszuführen, und, wenn dies nicht der Fall ist, einen anderen Speicherabschnitt (6), der sich von dem Hochgeschwindigkeitsspeicher (3) unterscheidet, dazu verwendet, den entnommenen Befehl zu interpretieren und auszuführen, wobei der Hochgeschwindigkeitsspeicher (3) eine höhere Datenübertragungsgeschwindigkeit zu dem Prozessor aufweist, als der Speicherabschnitt (6); gekennzeichnet durch: ein erstes Software-Interpretationsmodul (15; 24), das dazu angepasst ist, in dem Hochgeschwindigkeitsspeicher (3) gespeichert zu sein, wenn sich das System in Gebrauch befindet, und zumindest ein Software-Programm umfasst, welches, wenn von dem Prozessor ausgeführt, den Prozessor dazu veranlasst, die Beurteilung zu treffen, ob der entnommene Befehl zu dieser Untergruppe gehört, und die Interpretation und Ausführung eines jeden entnommenen Befehls durchzuführen, über den durch das erste Software-Interpretationsmodul geurteilt wurde, dass er zu dieser Untergruppe gehört, wobei das erste Software-Interpretationsmodul (15; 24) dazu betrieben werden kann, wenn es diese Beurteilung ausführt, einen Betriebscode des entnommenen Befehls mit betreffenden Betriebscodes derjenigen Befehle, die zu dieser Untergruppe von Befehlen gehören, in der Reihenfolge der absinken den Auftrittshäufigkeit der Befehle dieser Untergruppe zu vergleichen; und ein zweites Software-Interpretationsmodul (17), das dazu angepasst ist, in dem Speicherabschnitt (6) gespeichert zu sein, wenn sich das System in Gebrauch befindet, und zumindest ein Software-Programm umfasst, welches, wenn von dem Prozessor ausgeführt, den Prozessor veranlasst, die Interpretation und die Ausführung eines verbleibenden Befehls dieser Gruppe von Befehlen durchzuführen, von dem von dem ersten Software-Interpretationsmodul nicht geurteilt wurde, dass er zu dieser Untergruppe gehört.
  2. System nach Anspruch 1, dadurch gekennzeichnet, dass die vorbestimmte Programmsprache Java-Sprache ist.
  3. System nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass der Zwischencode ein Class-File ist, das Java-Byte-Code-Befehle enthält.
  4. System nach Anspruch 1, 2 oder 3, dadurch gekennzeichnet, dass der Befehl ein Java-Byte-Code-Befehl ist.
  5. System nach einem der vorgehenden Ansprüche, dadurch gekennzeichnet, dass die Untergruppe der Befehlsgruppe der Programmsprache aus ausgewählten Verarbeitungsbefehlen aufgebaut ist, die in dem Zwischencode mit einer vorbestimmten Häufigkeit oder einer grösseren Häufigkeit enthalten sind, und diese Untergruppe im voraus, gestützt auf vorbestimmte Bedingungen, betreffend eine Ausführungsumgebung, in der das System angebracht ist, ausgewählt wird.
  6. Verfahren zum Ausführen von Zwischencode, der durch Kompilieren eines Quellcodes, der in einer vorbestimmten Programmsprache erzeugt ist, erlangt wurde, wobei die vorbestimmte Programmsprache eine Befehlsgruppe aufweist und das Verfahren die Verwendung eines Prozessors (2) umfasst, um zu beurteilen, ob ein Befehl, der aus dem Zwischencode entnommen ist, zu einer Untergruppe von Befehlen ge hört, die aus den Befehlen der Befehlsgruppe ausgewählt wurde, wobei, wenn dies der Fall ist, ein Verwenden eines Hochgeschwindigkeitsspeichers (3), um den entnommen Befehl zu interpretieren und auszuführen, und, falls nicht, ein Verwenden eines Speicherabschnitts (6), der sich von diesem Hochgeschwindigkeitsspeicher (3) unterscheidet, um den entnommenen Befehl zu interpretieren und auszuführen, vorgesehen ist, wobei der Hochgeschwindigkeitsspeicher (3) eine höhere Übertragungsgeschwindigkeit von Daten an den Prozessor aufweist als der Speicherabschnitt (6), gekennzeichnet durch: Verwenden eines ersten Software-Interpretationsmoduls (15; 24), das in diesem Hochgeschwindigkeitsspeicher (3) gespeichert ist, und zumindest ein Software-Programm umfasst, um den Prozessor dazu zu veranlassen, die Beurteilung durchzuführen, ob der entnommene Befehl zu der Untergruppe gehört, und das Interpretieren und Ausführen eines jeden entnommenen Befehls, über den durch das erste Software-Interpretationsmodul geurteilt wurde, dass er zu der Untergruppe gehört, wobei die Beurteilung dadurch ausgeführt wird, dass ein Betriebscode des entnommenen Befehls mit betreffenden Betriebscodes derjenigen Befehle, die zu dieser Untergruppe von Befehlen gehören, in der Reihenfolge der absinkenden Auftrittshäufigkeit der Befehle dieser Untergruppe verglichen wird; und Verwenden eines zweiten Software-Interpretationsmoduls (17), das in dem Speicherabschnitt (6) gespeichert ist und zumindest ein Software-Programm umfasst, um den Prozessor dazu zu veranlassen, die Interpretation und Ausführung eines verbleibenden Befehls dieser Befehlsgruppe durchzuführen, von dem durch das erste Software-Interpretationsmodul nicht geurteilt wurde, dass er zu der Untergruppe gehört.
  7. Verfahren nach Anspruch 6, dadurch gekennzeichnet, dass die vorbestimmte Programmsprache Java-Sprache ist.
  8. Verfahren nach Anspruch 6 oder 7, dadurch gekennzeichnet, dass der Zwischencode ein Class-File ist, welches Java-Byte-Codes enthält.
  9. Verfahren nach Anspruch 6, 7, oder 8, dadurch gekennzeichnet, dass der Befehl ein Java-Byte-Code-Befehl ist.
  10. Verfahren nach einem der Ansprüche 6 bis 9, dadurch gekennzeichnet, dass die Untergruppe der Befehlsgruppe der Programmsprache aus ausgewählten Verarbeitungsbefehlen aufgebaut ist, die in dem Zwischencode mit einer vorbestimmten Häufigkeit oder einer grösseren Häufigkeit enthalten sind, und diese Untergruppe im voraus ausgewählt wird, gestützt auf vorbestimmte Bedingungen, betreffend eine Ausführungsumgebung.
  11. Computer-Programm, dazu angepasst, von einem Prozessor ausgeführt zu werden, um den Prozessor zu veranlassen, einen Zwischencode auszuführen, der durch Kompilieren eines Quellcodes erlangt wurde, der in einer vorbestimmten Programmsprache erzeugt ist, wobei die vorbestimmte Sprache einen Befehlssatz aufweist, der Prozessor Zugriff auf einen Hochgeschwindigkeitsspeicher (3) und auf einen Speicherabschnitt (6) hat, der sich von dem Hochgeschwindigkeitsspeicher unterscheidet, und der Hochgeschwindigkeitsspeicher (3) eine höhere Datenübertragungsgeschwindigkeit zu dem Prozessor aufweist, als der Speicherabschnitt (6), wobei das Programm umfasst: ein erstes Software-Interpretationsmodul (15; 24), welches dazu angepasst ist, in diesem Hochgeschwindigkeitsspeicher (3) gespeichert zu sein, und welches, wenn durch den Prozessor ausgeführt, den Prozessor veranlasst, zu beurteilen, ob ein Befehl, der aus dem Zwischencode entnommen ist, zu einer Untergruppe von Befehlen gehört, die aus den Befehlen der Befehlsgruppe entnommen ist, und jeden entnommenen Befehl zu interpretieren und auszuführen, über den von dem ersten Software-Interpretationsmodul geurteilt wurde, dass er zu dieser Untergruppe gehört, wobei diese Beuteilung dadurch ausgeführt wird, dass ein Betriebscode des entnommenen Befehls mit betreffenden Betriebscodes derjenigen Befehle, die zu dieser Untergruppe von Befehlen gehören, in der Reihenfolge der absinkenden Auftrittshäufigkeit der Befehle dieser Untergruppe verglichen wird; und ein zweites Software-Interpretationsmodul (17), welches dazu angepasst ist, in dem Speicherabschnitt (6) gespeichert zu sein, und welches, wenn von dem Prozessor ausgeführt, den Prozessor veranlasst, einen verbleibenden Befehl der Befehlsgruppe zu interpretieren und auszuführen, über den von dem ersten Software-Interpretationsmodul nicht geurteilt wurde, dass er zu der Untergruppe gehört.
  12. Computer-Programm nach Anspruch 11, dadurch gekennzeichnet, dass die Untergruppe der Befehlsgruppe der Programmsprache aus ausgewählten Verarbeitungsbefehlen aufgebaut ist, die in dem Zwischencode mit einer vorbestimmten Häufigkeit oder einer grösseren Häufigkeit enthalten sind, und diese Untergruppe vorab gemäss vorbestimmten Bedingungen in Bezug auf die Ausführungsumgebung ausgewählt ist.
DE60223990T 2001-10-31 2002-10-28 System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode Expired - Lifetime DE60223990T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001334822 2001-10-31
JP2001334822 2001-10-31

Publications (2)

Publication Number Publication Date
DE60223990D1 DE60223990D1 (de) 2008-01-24
DE60223990T2 true DE60223990T2 (de) 2008-12-04

Family

ID=19149897

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60223990T Expired - Lifetime DE60223990T2 (de) 2001-10-31 2002-10-28 System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode

Country Status (5)

Country Link
US (1) US20030084431A1 (de)
EP (1) EP1313011B1 (de)
CN (1) CN100343809C (de)
AT (1) ATE381059T1 (de)
DE (1) DE60223990T2 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6964039B2 (en) * 2000-12-13 2005-11-08 Esmertec Ag Method to create optimized machine code through combined verification and translation of JAVA™ bytecode
US6978451B2 (en) * 2001-05-31 2005-12-20 Esmertec Ag Method for fast compilation of preverified JAVA bytecode to high quality native machine code
US7844958B2 (en) * 2005-03-11 2010-11-30 Aptana, Inc. System and method for creating target byte code
US7707547B2 (en) * 2005-03-11 2010-04-27 Aptana, Inc. System and method for creating target byte code
JP4692231B2 (ja) * 2005-11-04 2011-06-01 株式会社デンソー 車両用の電子制御装置
CN101136780A (zh) * 2007-09-12 2008-03-05 华为技术有限公司 获取用户命令信息的方法、系统及用户命令注册的装置
US8914774B1 (en) 2007-11-15 2014-12-16 Appcelerator, Inc. System and method for tagging code to determine where the code runs
US8954989B1 (en) 2007-11-19 2015-02-10 Appcelerator, Inc. Flexible, event-driven JavaScript server architecture
US8260845B1 (en) 2007-11-21 2012-09-04 Appcelerator, Inc. System and method for auto-generating JavaScript proxies and meta-proxies
US8719451B1 (en) 2007-11-23 2014-05-06 Appcelerator, Inc. System and method for on-the-fly, post-processing document object model manipulation
US8566807B1 (en) 2007-11-23 2013-10-22 Appcelerator, Inc. System and method for accessibility of document object model and JavaScript by other platforms
US8756579B1 (en) 2007-12-03 2014-06-17 Appcelerator, Inc. Client-side and server-side unified validation
US8806431B1 (en) 2007-12-03 2014-08-12 Appecelerator, Inc. Aspect oriented programming
US8819539B1 (en) 2007-12-03 2014-08-26 Appcelerator, Inc. On-the-fly rewriting of uniform resource locators in a web-page
US8527860B1 (en) 2007-12-04 2013-09-03 Appcelerator, Inc. System and method for exposing the dynamic web server-side
US8938491B1 (en) 2007-12-04 2015-01-20 Appcelerator, Inc. System and method for secure binding of client calls and server functions
US8639743B1 (en) 2007-12-05 2014-01-28 Appcelerator, Inc. System and method for on-the-fly rewriting of JavaScript
US8335982B1 (en) 2007-12-05 2012-12-18 Appcelerator, Inc. System and method for binding a document object model through JavaScript callbacks
US8285813B1 (en) 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8291079B1 (en) 2008-06-04 2012-10-16 Appcelerator, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8880678B1 (en) 2008-06-05 2014-11-04 Appcelerator, Inc. System and method for managing and monitoring a web application using multiple cloud providers
US7596620B1 (en) 2008-11-04 2009-09-29 Aptana, Inc. System and method for developing, deploying, managing and monitoring a web application in a single environment
US8762532B2 (en) 2009-08-13 2014-06-24 Qualcomm Incorporated Apparatus and method for efficient memory allocation
US9038073B2 (en) 2009-08-13 2015-05-19 Qualcomm Incorporated Data mover moving data to accelerator for processing and returning result data based on instruction received from a processor utilizing software and hardware interrupts
US8788782B2 (en) 2009-08-13 2014-07-22 Qualcomm Incorporated Apparatus and method for memory management and efficient data processing
CN104392151B (zh) * 2014-11-27 2017-12-26 北京深思数盾科技股份有限公司 一种软件保护方法及系统
CN106372463B (zh) * 2016-08-22 2018-09-11 北京深思数盾科技股份有限公司 中间件保护方法、装置及系统
CN106971096B (zh) * 2017-04-06 2018-12-18 北京深思数盾科技股份有限公司 软件保护方法和系统

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
US5507030A (en) * 1991-03-07 1996-04-09 Digitial Equipment Corporation Successive translation, execution and interpretation of computer program having code at unknown locations due to execution transfer instructions having computed destination addresses
JP2921190B2 (ja) * 1991-07-25 1999-07-19 日本電気株式会社 並列実行方式
CA2118169A1 (en) * 1993-10-27 1995-04-28 Michael R.C. Seaman Event architecture for system management in an operating system
US5923878A (en) * 1996-11-13 1999-07-13 Sun Microsystems, Inc. System, method and apparatus of directly executing an architecture-independent binary program
US5889996A (en) * 1996-12-16 1999-03-30 Novell Inc. Accelerator for interpretive environments
US5983310A (en) * 1997-02-13 1999-11-09 Novell, Inc. Pin management of accelerator for interpretive environments
EP0988591A1 (de) * 1997-06-09 2000-03-29 Intertrust, Incorporated Verfinsterungstechniken zur verbesserung der softwaresicherheit
US6321323B1 (en) * 1997-06-27 2001-11-20 Sun Microsystems, Inc. System and method for executing platform-independent code on a co-processor
US6021273A (en) * 1997-06-30 2000-02-01 Sun Microsystems, Inc. Interpreter generation and implementation utilizing interpreter states and register caching
DE19732324A1 (de) * 1997-07-28 1999-02-04 Kloeckner Moeller Gmbh Schaltungsanordnung und Verfahren zur Speicherplatzverwaltung und zur Abarbeitung von Anwenderprogrammen in Kleinsteuerungen
JP3377419B2 (ja) * 1997-11-11 2003-02-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 命令列生成方法及び装置、変換方法、及びコンピュータ
US6356996B1 (en) * 1998-03-24 2002-03-12 Novell, Inc. Cache fencing for interpretive environments
US6141732A (en) * 1998-03-24 2000-10-31 Novell, Inc. Burst-loading of instructions into processor cache by execution of linked jump instructions embedded in cache line size blocks
US6578193B1 (en) * 1998-03-24 2003-06-10 Novell, Inc. Endian-neutral loader for interpretive environment
US6760907B2 (en) * 1998-06-30 2004-07-06 Sun Microsystems, Inc. Code generation for a bytecode compiler
US6256784B1 (en) * 1998-08-14 2001-07-03 Ati International Srl Interpreter with reduced memory access and improved jump-through-register handling
US6854113B1 (en) * 1998-08-28 2005-02-08 Borland Software Corporation Mixed-mode execution for object-oriented programming languages
US6826749B2 (en) * 1998-12-08 2004-11-30 Nazomi Communications, Inc. Java hardware accelerator using thread manager
US6332216B1 (en) * 1999-03-09 2001-12-18 Hewlett-Packard Company Hybrid just-in-time compiler that consumes minimal resource
US6418310B1 (en) * 1999-08-05 2002-07-09 Ericsson Inc. Wireless subscriber terminal using java control code
US6578020B1 (en) * 1999-12-07 2003-06-10 International Business Machines Corporation Method and system for converting code to executable code using neural networks implemented in a very large scale integration (VLSI) integrated circuit
EP1316014A1 (de) * 2000-08-31 2003-06-04 Koninklijke Philips Electronics N.V. System zur ausführung virtueller maschinenbefehle
US7024187B2 (en) * 2000-12-08 2006-04-04 Samsung Electronics Co., Ltd. System and method for performing diagnostics on a mobile station using over-the-air transfer of interpreted byte-code program
US20030023958A1 (en) * 2001-07-17 2003-01-30 Patel Mukesh K. Intermediate language accelerator chip

Also Published As

Publication number Publication date
ATE381059T1 (de) 2007-12-15
CN100343809C (zh) 2007-10-17
EP1313011A2 (de) 2003-05-21
EP1313011A3 (de) 2004-01-07
DE60223990D1 (de) 2008-01-24
US20030084431A1 (en) 2003-05-01
EP1313011B1 (de) 2007-12-12
CN1419191A (zh) 2003-05-21

Similar Documents

Publication Publication Date Title
DE60223990T2 (de) System zum Ausführen von Zwischenkode, Methode zum Ausführen von Zwischenkode, und Computerprogrammprodukt zum Ausführen von Zwischenkode
DE69926602T2 (de) Hybrider Rechtzeitkompiler der minimale Betriebsmittel verwendet
DE60208710T2 (de) Plattformunabhängige im-voraus-kompilierung
DE69029956T2 (de) Vorrichtung zur Parallelisierung von Programmen
DE69615445T2 (de) Kompilierer zur Verbesserung der Leistung von Datencachespeichern
DE68921906T2 (de) Verfahren für ein Multiprozessorsystem mit sich selbst zuordnenden Prozessoren.
DE69723286T2 (de) Echtzeitprogramm-sprachbeschleuniger
DE69938218T2 (de) Vorrichtung und Verfahren zum Laden eines Java Anwendungsprogramms
DE69129519T2 (de) Vorrichtung zur wirksamen Übertragung von Programmabläufen zwischen Unterprogrammen
DE60035745T2 (de) Verfahren zum bei Bedarf Laden und Ausführen einer Netzwerkanwendung
DE69434728T2 (de) Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel
DE69328665T2 (de) Gerät zur Auflösung von Datenreferenzen in erzeugtem Kode
DE69922015T2 (de) Verfahren und vorrichtung zum übersetzen und ausführen von arteigenem code in einer umgebung mit virtuellen maschinen
DE69724322T2 (de) Verfahren und Anordnung zum frühzeitigen Einfügen von Assemblercode zwecks Optimierung
DE69814174T2 (de) Java laufzeitsystem mit veränderter sammlung von konstanten
DE69905875T2 (de) Dynamische umsetzung von statisch gebundenen funktionsaufrufen in dynamisch gebundenen funktionsaufrufen ohne rekompilierung
DE69620057T2 (de) Optimierer
DE602004006253T2 (de) Vorrichtungen und verfahren zur wiederherstellung der synchronisation für objektorientierte softwareanwendungen in verwalteten laufzeitumgebungen
DE3688171T2 (de) Nach Ziel anpassbarer Kompiler.
DE69621751T2 (de) System und Verfahren zur Laufzeit-Optimierung von Funktionsaufrufen auf private Variable in einem sicheren Interpretierer
DE19945992A1 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE60028069T2 (de) Verfahren und vorrichtung zur kontexterhaltung unter ausführung von übersetzten befehlen
DE112012000303T5 (de) Dynamische binäre Optimierung
DE10393481T5 (de) Verfahren und Vorrichtung zum Durchführen einer Cache-Umgehung
DE60002327T2 (de) Ableitung von operandtypen innerhalb einer zwischensprache

Legal Events

Date Code Title Description
8364 No opposition during term of opposition