JP2003531434A - Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム - Google Patents

Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム

Info

Publication number
JP2003531434A
JP2003531434A JP2001577137A JP2001577137A JP2003531434A JP 2003531434 A JP2003531434 A JP 2003531434A JP 2001577137 A JP2001577137 A JP 2001577137A JP 2001577137 A JP2001577137 A JP 2001577137A JP 2003531434 A JP2003531434 A JP 2003531434A
Authority
JP
Japan
Prior art keywords
host
jvm
host processor
computer
processor
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.)
Pending
Application number
JP2001577137A
Other languages
English (en)
Inventor
ロニー、シー.ゴフ
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.)
Koninklijke Philips NV
Original Assignee
Philips Electronics NV
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 Philips Electronics NV filed Critical Philips Electronics NV
Publication of JP2003531434A publication Critical patent/JP2003531434A/ja
Pending 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

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)
  • Stored Programmes (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 Javaコンピュータプログラムの実行においてホストコンピュータシステムをサポートするための方法および装置。Javaコンピュータプログラムの実行においてホストコンピュータシステムをサポートするため、特に、複数のプロセッサの補助システムが、バスを介して、ホストコンピュータシステムに接続されている。補助システムは、非ホストメモリに接続された複数の非ホストプロセッサを有している。これらの非ホストプロセッサのうちの1つの非ホストプロセッサは、Javaコンピュータプログラムの1または複数のスレッドを実行するために、Java仮想マシン(JVM)と接続する。JVMは、非ホストメモリ内で例示化することができる。新たなスレッドを実行するため、JVMは、JVMと接続して新たなスレッドを実行する別の非ホストプロセッサの割り当てを行なう。補助システムは、ホストコンピュータシステムの常設部分である必要はない。すなわち、一実施形態において、補助システムは、Javaプログラムを実行する必要が生じた時に、ホストコンピュータシステムに接続される。また、このような実施形態の補助システムは、必要に応じて、ホストコンピュータシステムから取り外すことができる。しかしながら、随意的に、補助システムは、ホストコンピュータシステムの常設部分として実施することもできる。すなわち、補助システムをホストコンピュータシステムから取り外すことができない。

Description

【発明の詳細な説明】
【0001】 (技術分野) 本明細書は、Javaコンピュータプログラムの実行に関する。特に、Jav
aコンピュータプログラムの実行に供するコンピュータ方法およびシステムに関
する。
【0002】 (背景) Javaプログラムは、1つのプログラム内で複数のパラレルパスを構成して
実行することができる複数のスレッドの実行をサポートする。複数のスレッド構
成は、複雑なプログラムの作成および実行を簡易化するために使用される技術で
ある。しかしながら、この技術は,Javaプログラムの性能を向上させない。
パラレルパスは、並列に(すなわち、同時に)実行しない。実際に、プログラム
の実行は、スレッドの切換えに関連するオーバーヘッドに起因して、更に遅くな
る。また、C++プログラム等の規格にしたがったプログラムに対して、Jav
aプログラムは、それが一般的に解釈されることから、非常にゆっくりと実行さ
れる。
【0003】 また、Java仮想マシン(JVM)は、1つのJavaアプリケーションだ
けを実行することができる。複数のJavaアプリケーションがコンピュータシ
ステムによって開始されると、複数のJVMが例示化される。この場合、各アプ
リケーションは、それ自身のJVM内で実行される。ホストコンピュータシステ
ムがマルチプロセッサシステムでない場合(大抵のシステムがそうではない)に
は、いずれのJavaアプリケーションも同時には実行されない。したがって、
1つのプロセッサコンピュータシステムにおいて、複数のJavaプログラムを
実行することは、関連する複数のJVMを実行しなければならないため、かなり
困難である。しかしながら、一般的なユーザーにとって、既存の1つのプロセッ
サコンピュータシステムをマルチプロセッサコンピュータシステムに切換えるこ
とは、費用的に有効な選択ではない。また、たとえマルチプロセッサコンピュー
タシステムが利用可能であっても、ユーザーは、複数のJavaアプリケーショ
ン及びそれらに関連するJVMを実行するために、マルチプロセッサをいかにし
て組み合せるかを考える必要がある。
【0004】 従来の幾つかの手法は、Javaプログラムの性能を向上させるために存在し
ている。これらの手法は、ネイティブJavaプロセッサの使用と、ネイティブ
Javaスレッドのマルチプロセッサの実行とを含んでいる。
【0005】 ネイティブJavaプロセッサは、その機械命令コードが解釈不能なJava
バイトコードである特殊なCPUである。この手法は、確かに性能を向上させる
。しかしながら、この手法は、業界で標準化されたプロセッサ(例えば、X86
やARMなど)のために既に存在する莫大な量のソフトウエアに適合できない。
【0006】 マルチプロセッサネイティブスレッドシステムは、Javaソフトウエアプロ
グラムがJVM内から呼び出すことができるネイティブスレッドを実行するよう
に構成されている。これは、非Javaコードを実行する複数のスレッドをJa
vaプログラムが実施する時だけ性能を向上させる非常に特殊で希な例外である
。これは、非常に複雑であり、あまりに特殊なケースである。したがって、この
システムは、一般のJavaコンピュータプログラムの実行にはあまり適さない
【0007】 したがって、Javaプログラムの実行速度を向上させる必要がある。特に、
スレッドの切換えに伴う性能低下を起こすことなく、1つのJavaプログラム
内で複数のスレッドを実行することが必要である。また、既存のソフトウエアに
適合しつつ、Javaプログラムの性能を向上させることが必要である。更に、
非常に限られた特殊なアプローチに依存することなく、Javaプログラムの性
能を向上させることが必要である。また、ユーザーの既存のコンピュータシステ
ムを交換することなく、複数のJavaプログラムを実行するための性能を向上
させることが必要である。
【0008】 (概要) 一般に、本発明は、Javaプログラムの実行速度を向上させるための方法お
よびシステムを提供する。特に、本発明は、スレッドの切換えに起因する性能低
下を起こすことなく、1つのJavaプログラム内で複数のスレッドを実行する
。また、本発明は、既存のソフトウエアに適合しつつ、Javaプログラムの性
能を向上させる。更に、本発明は、一般的なJavaプログラムに適用不可能な
特殊なアプローチに依存することなく、Javaプログラムの性能を向上させる
。また、本発明は、ユーザーの既存のコンピュータシステムを交換することなく
、複数のJavaプログラムを実行するための性能を向上させる。
【0009】 本発明の一実施形態において、Javaコンピュータプログラムの実行におい
てホストコンピュータシステムをサポートするために、複数のプロセッサから成
る補助システムは、バスを介して、ユーザーのホストコンピュータシステムに接
続される。補助システムは、非ホストメモリに接続された複数の非ホストプロセ
ッサを有している。これらの非ホストプロセッサのうちの1つの非ホストプロセ
ッサは、Javaコンピュータプログラムの1または複数のスレッドを実行する
ために、Java仮想マシン(JVM)と接続するようになっている。JVMは
、非ホストメモリ内で例示化することができる。新たなスレッドを実行するため
、JVMは、JVMと接続して新たなスレッドを実行する別の非ホストプロセッ
サを割り当てる。
【0010】 この実施形態において、補助システムは、ホストコンピュータシステムの常設
部分である必要はない。すなわち、補助システムは、Javaプログラムを実行
する必要が生じた時に、ホストコンピュータシステムに接続される。また、補助
システムは、必要に応じて、ホストコンピュータシステムから取り外すことがで
きる。しかしながら、随意的に、補助システムは、ホストコンピュータシステム
の常設部分として実施することもできる。すなわち、補助システムをホストコン
ピュータシステムから取り外すことができない。
【0011】 本発明のこれらの目的および他の目的並びに利点は、各種の図面に示される好
ましい実施形態の以下の詳細な説明を読めば、当業者にとって明らかとなること
は言うまでもない。
【0012】 この明細書に組み込まれて明細書の一部を成す添付図面は、明細書本文ととも
に本発明の実施形態を示しており、本発明の原理を説明するために役立つ。
【0013】 (発明の詳細な説明) 以下、本発明の好ましい実施形態について詳細に説明する。その実施形態が添
付図面に示されている。好ましい実施形態に関して本発明を説明するが、本発明
がこれらの実施形態に限定されないことは言うまでもない。逆に言うと、本発明
は、添付のクレームに規定されるように、本発明の思想および範囲内に含まれる
変形、改良、等価物を網羅するように意図されている。また、本発明の以下の詳
細な説明においては、本発明の一貫した理解を与えるために、多数の特定の内容
が示されている。しかしながら、当業者であれば分かるように、本発明は、これ
らの特定の内容を伴うことなく実施されても良い。他の例において、良く知られ
た方法、処理、構成要素、回路については、本発明の形態を不必要に曖昧にしな
いように、詳細には説明していない。
【0014】 (注釈および専門用語) 以下の詳細な説明の幾つかの部分は、手続き、工程、論理ブロック、処理、コ
ンピュータメモリ上で実行可能なデータビット演算の象徴的な表現によって与え
られている。これらの記述および表現は、データ処理技術の当業者が彼らの研究
内容を他の当業者に最も有効に伝えるために使用する手段である。手続き、コン
ピュータで実行される工程、論理ブロック、プロセスなどは、ここでは、一般に
、所望の結果に導く一貫した工程または命令のシーケンスになると考えられる。
工程は、物理量の物理的な扱いを必要とするものである。通常、必ずしもそうで
はないが、これらの物理量は、コンピュータシステム内で、記憶することができ
、送信することができ、組み合わせることができ、比較することができ、あるい
は扱うことができる電気信号や磁気信号の形態をとる。これらの信号を、ビット
、値、要素、記号、文字、用語、数等として言及することは、時として、特に共
通に使用するために、便利である。
【0015】 しかしながら、言うまでもなく、これらの用語及び類似の用語は、適当な物理
量に関連付けられており、また、これらの物理量に適用される単なる便利なラベ
ルである。以下の説明から明らかなように、特に述べられていない場合でも、本
発明の全体にわたって、例えば「処理」、「演算」、「行なう」、「演算する」
、「決定する」、「実行する(running)」、「例示化する」、「実行す
る(executing)」等の用語を使用した議論は、コンピュータシステム
のレジスタ内の物理(電子)量として表されるデータを操作および伝送し、コン
ピュータシステムのメモリ、レジスタ、他の情報記録媒体、伝送装置、あるいは
表示装置内の物理量として同様に表される他のデータに記憶する。
【0016】 図1に示されるように、この方法およびシステムの一部は、例えばコンピュー
タシステムのコンピュータで使用できる媒体中に存在するコンピュータで読むこ
とができ且つコンピュータで実行可能な命令から成る。図1は、本発明の一実施
形態にしたがって使用される典型的なコンピュータシステム100を示している
。図1のシステム100は単なる一例であり、多目的ネットワークコンピュータ
システム、埋込式コンピュータシステム、単独型コンピュータシステムを含む多
くの様々なコンピュータシステム内で本発明が動作できることは言うまでもない
。また、図1のコンピュータシステム100は、例えばフロッピー(登録商標)
ディスクやコンパクトディスク等のコンピュータで読むことができる媒体をうま
く接続させることができるようになっている。簡単のため、図1では、このよう
なコンピュータで読むことができる媒体をコンピュータシステム100に接続す
ることは示されていない。
【0017】 図1のシステム100は、情報通信用のアドレス/データバス102と、情報
および命令を処理するためにバス102に接続された中央演算処理装置(CPU
)104とを有している。CPU104は、80×86−ファミリーマイクロプ
ロセッサであっても良い。また、システム100は、CPU104のための情報
および命令を記憶するためにバス102に接続されたコンピュータで使用可能な
揮発性メモリ106、例えばランダムアクセスメモリ(RAM)などのデータ記
憶機能部と、CPU104のための静的な情報および命令を記憶するためにバス
102に接続されたコンピュータで使用可能な不揮発性メモリ108、例えば読
み出し専用メモリ(ROM)と、情報および命令を記憶するためにバス102に
接続されたデータ記憶装置110(例えば、磁気ディスクまたは光ディスクとデ
ィスクドライブ)とを有している。また、本発明のシステム100は、英数字キ
ー(文字数字キー)およびファンクションキーを含むオプションの英数字(アル
ファニューメリック)入力装置112を有している。この英数字入力装置112
は、情報およびコマンド選択をCPU104に送信するバス102に接続されて
いる。また、システム100は、ユーザ入力情報およびコマンド選択をCPU1
04に送信するためにバス102に接続されたカーソル制御装置114を選択的
に有している。また、本実施形態のシステム100は、情報を表示するためにバ
ス102に接続されたオプションのディスプレイ装置116を有している。
【0018】 図1に示されるように、図1のオプションのディスプレイ装置116は、液晶
装置、ブラウン管、あるいはユーザが認識できるグラフィック画像および英数文
字を形成するのに適した他の表示装置であっても良い。オプションのカーソル制
御装置114によれば、コンピュータのユーザは、ディスプレイ装置116の表
示スクリーン上における可視的な記号(カーソル)の二次元的な動きを動的に信
号で送ることができる。この技術分野では、トラックボール、マウス、タッチパ
ッド、ジョイスティック、あるいは、所定方向の動きや移動形態を信号で送るこ
とができる英数字入力装置112上の特定のキーを含むカーソル制御装置114
が多く用いられていることは知られている。また、特定のキーおよびキーシーケ
ンスコマンドを使用して、カーソルを方向付けたり或は英数字入力装置112か
らの入力を介して動かしたりすることができることは言うまでもない。また、本
発明は、例えばボイスコマンド等の他の手段によってカーソルを方向付けるのに
最適である。以下、本発明の実施形態を更に詳細に説明する。
【0019】 図2には、本発明の一実施形態に係るシステム200がブロック図として示さ
れている。システム200は、ホストコンピュータシステム210と補助システ
ム250とを有している。これらの2つのシステム(210,250)は、バス
290によって接続されている。システム200は、ホストコンピュータ210
と補助システム250との間で仕事量を分配することによって、Javaプログ
ラムの実行速度を向上させる。
【0020】 図2に示されるように、ホストコンピュータシステム210は、ホストプロセ
ッサ220とホストメモリ230とを有している。この実施形態において、ホス
トプロセッサ220は、インテル・ペンティアム型プロセッサ等のX86互換プ
ロセッサである。しかしながら、ホストプロセッサ220は、X86互換プロセ
ッサである必要はない。例えば、他の実施形態においては、RISCプロセッサ
等の異なるタイプのプロセッサが使用される。
【0021】 図2に示されるように、補助システム250は、非ホストメモリ260として
の「Javaメモリ」と、ここに示される3つの非ホストプロセッサ(271−
273)としての3つの「Javaプロセッサユニット」(JPU)とを有して
いる。非ホストプロセッサ271−273はそれぞれキャッシュ281−283
に接続されており、また、キャッシュ281−283は非ホストメモリ260に
接続されている。非ホストメモリ260はデュアル・ポート・メモリである。し
かしながら、他の実施形態において、非ホストメモリ260は、デュアル・ポー
ト・メモリである必要はない。ここで考えられているように、プロセッサタイプ
の非ホストプロセッサ(271−273)は、プロセッサタイプのホストプロセ
ッサと一致する必要はない。したがって、この実施形態において、非ホストプロ
セッサ271−273はARMプロセッサ等のRISCプロセッサである。しか
しながら、非ホストプロセッサ271−273はARMプロセッサである必要は
ない。他の実施形態において、非ホストプロセッサ271−273は、ARMプ
ロセッサとは異なるRISKプロセッサとして実施される。更なる他の実施形態
においては、非ホストプロセッサ271−273として、X86互換プロセッサ
を使用することができる。更に、ここで分かるように、非ホストプロセッサの数
は3つに固定される必要はなく、1または複数の非ホストプロセッサを使用する
ことができる。特に、補助システム250の非ホストプロセッサ271−273
の種類や数は、ホストコンピュータシステム210から隠される。また、他の実
施形態において、補助システム250は、各非ホストプロセッサ毎にキャッシュ
を有している必要はない。
【0022】 図2に示されるように、補助システム250は、システム200の常設部分と
して実施される必要はない。具体的には、補助システム250は、ホストコンピ
ュータシステムから取り外し可能なユニットとして形成することができる。一実
施形態において、取り外し可能な補助システム250は、破線251で示される
PCカード内に収容されている。したがって、ユーザは、既存のコンピュータシ
ステムにPCカード251を接続するだけで、既存のコンピュータシステム上に
おけるJavaプログラムの実行性能を向上させることができる。また、各非ホ
ストプロセッサは、特に、Javaコードを実行するために、したがって、Ja
va性能を更に向上させるために最適化することができる。
【0023】 図3には、本発明の一実施形態にしたがって、システム200を用いた様々な
コンピュータプログラムの相互作用が示されている。特に、これらのソフトウエ
アプログラムは、オペレーティングシステム(OS)310と、2つの非Jav
aアプリケーション321,322と、1つのJavaアプリケーション333
とを有している。
【0024】 図3に示されるように、OS310は、ホストメモリ230内にロードされ、
ホストプロセッサ220によって実行される。この実施形態において、OS31
0はウインドウズNTである。しかしながら、他の実施形態においては、ウイン
ドウズNTと異なるOS(例えば、UNIX(登録商標)またはVxWorks
)がOS310として用いられる。また、非Javaアプリケーション321,
322は、ホストメモリ230内にロードされ、ホストプロセッサ220によっ
て実行される。
【0025】 一方、Javaアプリケーション333は、ホストコンピュータシステム21
0と補助システム250の両方が関与するようにシステム200によって実行さ
れる。具体的には、Javaアプリケーション333が開始されると、その一次
クラスローダ(PCL)344がホストメモリ230内にロードされてホストプ
ロセッサ220によって実行される。次に、PCL344は、Javaアプリケ
ーション333を実行するために、バス290を経由して非ホストプロセッサの
割り当てを行なう。1つの非ホストプロセッサ、例えば非ホストプロセッサ27
1が割り当てられると、非ホストプロセッサ271と接続するために、PCL3
44によりJVM355が非ホストメモリ260内で例示化される。続いて、J
VM355を介して、非ホストプロセッサ271により、Javaアプリケーシ
ョン333のメインスレッド366が実行される。
【0026】 ここで分かるように、PCL344は、前述した割り当て工程および例示化工
程を行なうことができるように既存のPCLを修正したものである。しかしなが
ら、前述した割り当て工程および例示化工程は、PCL344によって実行され
る必要はない。実際に、その実行においては、本発明の任意のPCLを用いるこ
とができる。1つのPCL(例えばPCL344)は、Java実行のための開
始パッドである。それは、ホストコンピュータシステム210とJVM355と
の間のブリッジ(橋渡し)である。
【0027】 具体的には、1つのPCLは、ホストプロセッサのために書き込まれ且つホス
トコンピュータによって実行される非Javaアプリケーションである。既存の
PCLは、JVMをロードして初期化する通常の役割を有している。ここで、そ
の修正された形態において、PCLは、非ホストプロセッサリクルートメント(
割り当て)、割り当て、初期化を実行する。また、PCLは、JavaI/Oパ
ッケージおよびホストコンピュータシステム210で規定された様々なI/Oク
ラス間でランタイムI/Oブリッジを形成する。更に、PCLは、実行可能なJ
ava(すなわち、JVMおよび対応するアプリケーション、または、JVM実
行エンジンおよび関連するスレッド)を非ホストメモリ260内に記憶する。ホ
ストコンピュータシステム210によって実行時間が与えられると、PCLは、
ホストメモリ230と非ホストメモリ260との間で、I/O制御およびデータ
情報を送信して検索する。
【0028】 スレッド377等のJavaアプリケーション333の他のスレッド(例えば
スレッド377)を実行する場合、JVM355は、JVM355と接続してス
レッド377を実行するために他の非ホストプロセッサを検索するその方法st
art()を呼び出す。方法start()は、ここでは、JavaAPIに属
するように理解される。具体的には、方法start()は、JavaAPIに
したがうスレッドクラス方法(スレッド分類方法)である。非ホストプロセッサ
、例えば非ホストプロセッサ272が利用可能である場合には、この利用可能な
非ホストプロセッサは、JVM355と接続してスレッド377を実行する。ま
た、JVM355と接続してスレッド377を実行するために他の非ホストプロ
セッサを利用することができない場合には、非ホストプロセッサ271がメイン
スレッド366とともにスレッド377を実行する。
【0029】 ここで分かるように、JVM(例えばJVM355)は、柔軟性をもって実施
することができる。すなわち、一定の規則がJVMによって守られさえすれば、
様々な種類のJVMを用いることができる。この実施形態において、JVM35
5は、前述したプロセッサ検索工程を実行できるように一般的なJVMを修正し
たものである。特に、方法start()は、呼び出し時に、利用可能な非ホス
トプロセッサを検索するように修正されている。新たな非ホストプロセッサが利
用可能である場合には、方法start()は、新たなスレッドを実行するため
に、新たな非ホストプロセッサを初期化する。新たな非ホストプロセッサを利用
できない場合には、方法start()は、スレッドの実行を共有するために、
現在の非ホストプロセッサを初期化する。
【0030】 図3に示されるように、Javaアプリケーション333の更なる他のスレッ
ド(例えばスレッド388)が実行される場合、JVM355は、JVM355
と接続してスレッド388を実行するために更なる他の非ホストプロセッサを検
索するそのstart()方法を呼び出す。非ホストプロセッサ、例えば非ホス
トプロセッサ273が利用可能である場合には、この利用可能な非ホストプロセ
ッサは、JVM355と接続してスレッド388を実行する。また、JVM35
5と接続してスレッド388を実行するためにこれ以上非ホストプリセッサを利
用することができない場合には、非ホストプロセッサ272または非ホストプロ
セッサ271のいずれか一方がスレッド388を実行する。図3に示されるよう
に、非ホストプロセッサ273は、スレッド388を実行するために利用できな
いと仮定されており、したがって、非ホストプロセッサ272がスレッド377
およびスレッド388の両方を実行している。
【0031】 図4を参照すると、別のJavaアプリケーション433が開始される。具体
的には、Javaアプリケーション433が開始されると、その一次クラスロー
ダ(PCL)444がホストメモリ230内にロードされてホストプロセッサ2
20によって実行される。次に、PCL444は、Javaアプリケーション3
33を実行するために、バス290を経由して非ホストプロセッサの割り当てを
行なう。1つの非ホストプロセッサ、例えば非ホストプロセッサ273が割り当
てられると、非ホストプロセッサ273と接続するために、PCL444により
JVM455が非ホストメモリ260内で例示化される。続いて、JVM455
を介して、非ホストプロセッサ273により、Javaアプリケーション433
のメインスレッド466が実行される。
【0032】 図4に示されるように、Javaアプリケーション433の他のスレッド(例
えばスレッド477)が実行される場合、JVM455は、JVM455と接続
してスレッド477を実行するために他の非ホストプロセッサを検索するそのs
tart()方法を呼び出す。非ホストプロセッサが利用可能である場合には、
この利用可能な非ホストプロセッサは、JVM455と接続してスレッド477
を実行する。また、図4に示されるように、JVM455と接続してスレッド4
77を実行するためにこれ以上非ホストプリセッサを利用することができない場
合には、非ホストプロセッサ273がメインスレッド466とともにスレッド4
77を実行する。
【0033】 図5を参照すると、更なる他のJavaアプリケーション533が開始される
。具体的には、Javaアプリケーション533が開始されると、その一次クラ
スローダ(PCL)544がホストメモリ230内にロードされてホストプロセ
ッサ220によって実行される。次に、PCL544は、Javaアプリケーシ
ョン533を実行するために、バス290を経由して非ホストプロセッサの割り
当てを行なう。1つの非ホストプロセッサが割り当てられると、非ホストプロセ
ッサと接続するために、PCL544によりJVM555が非ホストメモリ26
0内で例示化される。続いて、JVM555を介して、割り当てられた非ホスト
プロセッサにより、Javaアプリケーション533のメインスレッド566が
実行される。また、図5に示されるように、JVM555と接続してメインスレ
ッド566を実行するために非ホストプロセッサを利用できない場合、PCL5
44は、ホストプロセッサ220と接続してメインスレッド566を実行するた
めに、ホストメモリ230内でJVM555を例示化する。Javaアプリケー
ション533の他のスレッドが実行される場合、ホストプロセッサ220は、そ
のスレッドをメインスレッド566とともに実行する。
【0034】 図6には、本発明の一実施形態の工程を概略的に説明するフローチャートが示
されている。この実施形態において、これらの工程は、ホストコンピュータシス
テムおよび補助システムを含む1つのコンピュータシステムによって実行される
。具体的には、ホストコンピュータシステムは、ホストプロセッサとホストメモ
リとを有している。また、ホストコンピュータシステムは、バスを介して、非ホ
ストメモリおよび1または複数の非ホストプロセッサを有する補助システムに接
続される。バスはPCIバスである。しかしながら、他の実施形態においては、
例えばASBバス、ISAバス、USBバス、IEEE1394バスといったP
CIバスとは異なるバスを用いることができる。
【0035】 この実施形態において、非ホストメモリおよび非ホストプロセッサは、ホスト
コンピュータシステムに接続されるようになっているPCカード内に収容されて
いる。また、そのような実施形態においては、ホストコンピュータシステムから
PCカードを取り外すことができる。また、非ホストメモリは、前記ホストコン
ピュータシステムに対してデュアルポートメモリとして接続される。キャッシュ
は、これらの非ホストプロセッサに接続される。非ホストプロセッサはARMプ
ロセッサである。
【0036】 問い合わせステップ602において、ホストプロセッサおよびホストメモリを
有するホストコンピュータシステムは、任意のJavaアプリケーションが開始
されたかどうかをチェックする。Javaアプリケーションが開始される場合に
は、ステップ604が実行される。
【0037】 ステップ604においては、ホストコンピュータシステムを補助する一連の非
ホストプロセッサから第1の非ホストプロセッサを割り当てるために、割り当て
が実行される。割り当てられた第1の非ホストプロセッサは、第1のJVMと接
続するようになっている。
【0038】 問い合わせステップ606において、非ホストプロセッサが割り当てられない
場合には、次に、ステップ652が実行される。一方、第1の非ホストプロセッ
サが割り当てられている場合には、ステップ608が実行される。
【0039】 ステップ608において、第1のJVMは、前記ホストコンピュータシステム
を補助する非ホストメモリ内で例示化される。この実施形態において、第1のJ
VMは、ホストコンピュータシステム上で実行中のOSによって実行される第1
のPCLにより、非ホストメモリ内で例示化される。
【0040】 ステップ610において、第1のJVMは、Javaアプリケーションの1ま
たは複数のスレッドを実行するために、第1の非ホストプロセッサと接続する。
【0041】 ステップ612において、Javaアプリケーションは、非ホストメモリ内に
ロードされ、第1の非ホストプロセッサによって実行される状態となる。
【0042】 ステップ614において、Javaアプリケーションのメインスレッドは、第
1の非ホストプロセッサによって実行される。
【0043】 問い合わせステップ616においては、任意の新たなスレッドが実行されるか
否かを確かめるチェックが行なわれる。新たなスレッドが実行されない場合には
、問い合わせステップ602が再び実行される。一方、新たなスレッドが実行さ
れる場合には、続いて、ステップ632が実行される。
【0044】 ステップ632において、第1のJVMは、新たなスレッドを実行するための
第2の非ホストプロセッサの割り当てを行なう。この実施形態において、第1の
JVMは、この割り当てを実施するために、そのstart()方法を呼び出す
【0045】 問い合わせステップ634では、第2の非ホストプロセッサの割り当てがうま
く成されたか否かを確かめるチェックが行なわれる。割り当てがうまく成されて
いない場合には、ステップ642が実行される。一方、割り当てがうまく成され
ている場合には、ステップ636が実行される。
【0046】 ステップ642においては、第2の非ホストプロセッサの割り当て不良に引き
続いて、既に第1のJVMと接続されている第1の非ホストプロセッサによって
新たなスレッドが実行される。
【0047】 ステップ636においては、第2の非ホストプロセッサの割り当てに引き続い
て、第1のJVMが第2の非ホストプロセッサと接続する。
【0048】 ステップ638では、第2の非ホストプロセッサによって新たなスレッドが実
行される。次に、問い合わせステップ616が再び実行される。
【0049】 問い合わせステップ606に戻って参照し、第1の非ホストプロセッサの割り
当てがうまく成されていない場合には、ステップ652が実行される。
【0050】 ステップ652では、ホストメモリ内の第1のPCLによって、第1のJVM
が例示化される。
【0051】 ステップ654では、ホストメモリ内の第1のJVMがホストプロセッサと接
続する。
【0052】 ステップ656では、Javaアプリケーションがホストメモリ内にロードさ
れる。
【0053】 ステップ658では、ホストメモリ内で実行中の第1のJVMを介して、ホス
トプロセッサによりJavaアプリケーションのメインスレッドが実行される。
【0054】 ステップ660では、Javaアプリケーションの任意の新たなスレッドが実
行されるか否かを確かめるチェックが行なわれる。新たなスレッドが実行されな
い場合には、問い合わせステップ602が再び実行される。一方、新たなスレッ
ドが実行される場合には、ステップ662が実行される。
【0055】 ステップ662では、ホストプロセッサによって新たなスレッドが実行される
。次に、問い合わせステップ660が再び実行される。
【0056】 他のJavaアプリケーションが実行される場合には、フローチャート600
のステップが再び実行される。具体的には、第1のJavaアプリケーションが
開始された後、問い合わせステップ602に戻って参照し、第2のJavaアプ
リケーションが開始される場合、OSは、第2のJVMを例示化するために第2
のPCLを実行する。この第2のJVMは、第2のJVMと接続して(ステップ
610によって)第2のJavaアプリケーションのスレッドを実行する(ステ
ップ614によって)ために、新たな非ホストプロセッサを割り当てることがで
きる(ステップ604によって)場合には、非ホストメモリ内で例示化される(
ステップ608によって)。
【0057】 第2のJVMの新たなスレッドが実行される場合には、第2のJVMは、新た
なスレッドを実行するための新たな非ホストプロセッサを割り当てる(ステップ
632によって)。新たな非ホストプロセッサが割り当てられると、第2のJV
Mが新たな非ホストプロセッサに接続する(ステップ636によって)。次に、
新たな非ホストプロセッサが新たなスレッドを実行する(ステップ638によっ
て)。一方、新たな非ホストプロセッサが割り当てのために利用できない場合に
は、既に第2のJVMと接続されている非ホストプロセッサが新たなスレッドを
実行する(ステップ642によって)。
【0058】 第2のJVMと接続するために割り当てられる非ホストプロセッサが1つもな
い場合には、第2のJavaアプリケーションを実行する際に(ステップ658
によって)、この第2のJVMは、ホストメモリ内の第2のPCLによって例示
化されて(ステップ652によって)、ホストプロセッサに接続される(ステッ
プ654によって)。
【0059】 同様に、第1および第2のJavaアプリケーションが開始された後、第3の
Javaアプリケーションが開始される場合には、OSは、第3のJVMを例示
化するために第3のPCLを実行する。この第3のJVMは、仮に非ホストプロ
セッサが(ステップ614により)第3のJavaアプリケーションのスレッド
を実行するために(ステップ610により)第3のJVMに接続するよう(ステ
ップ604により)割り当てることができるならば、(ステップ608により)
非ホストメモリで例示化される。
【0060】 第3のJVMの新たなスレッドが実行される場合には、第3のJVMは、新た
なスレッドを実行するための新たな非ホストプロセッサを割り当てる(ステップ
632によって)。新たな非ホストプロセッサが割り当てられると、第3のJV
Mは新たな非ホストプロセッサに接続する(ステップ636によって)。次に、
新たな非ホストプロセッサが新たなスレッドを実行する(ステップ638によっ
て)。一方、新たな非ホストプロセッサが割り当てのために利用できない場合に
は、既に第3のJVMと接続されている非ホストプロセッサが新たなスレッドを
実行する(ステップ642によって)。
【0061】 第3のJVMと接続するために割り当てられる非ホストプロセッサが1つもな
い場合には、第3のJavaアプリケーションを実行する際に(ステップ658
によって)、この第3のJVMは、ホストメモリ内の第3のPCLによって例示
化されて(ステップ652によって)、ホストプロセッサに接続される(ステッ
プ654によって)。
【0062】 このように、本発明は、概して、Javaプログラムの実行速度を向上させる
ための方法およびシステムを提供する。本発明は、スレッドの切換えに伴う性能
低下を引き起こすことなく、1つのJavaプログラム内で複数のスレッドを実
行する。また、本発明は、既存のソフトウエアに適合しつつ、Javaプログラ
ムの性能を向上させる。更に、本発明は、一般的なJavaプログラムに適用不
可能な特殊なアプローチに依存することなく、Javaプログラムの性能を向上
させる。また、本発明は、ユーザーの既存のコンピュータシステムを置き換える
ことなく、複数のJavaプログラムを実行するための性能を向上させる。
【0063】 要約すると、本発明は、JVMの複数の例示化またはマルチスレッドJava
アプリケーション或はこれらの両者の性能を有利に向上させる。システムに必要
なソフトウエアの変更は、変化が主にJavaPCLとコアJavaランゲージ
およびI/Oパッケージ内の複数のクラスとに対して孤立されているため、単純
である。また、マルチプロセッサ補助システムの構築に必要なハードウエアは、
高価ではなく、過度に複雑でもない。
【0064】 また、本発明は、マルチプロセッサJavaサブシステムを実施するために使
用可能なタイプのホストシステム(OSおよびプロセッサ)に限定されない。一
例として、ウインドウズマシンにおいて、Javaサブシステムは、PCIアド
インカード上に存在することができ、デュアルポートPCIメモリサブシステム
に取り付けられる複数のARMプロセッサによって構成することができる。
【0065】 本発明の特定の実施形態に関する先の記述は、例示および説明のために与えら
れている。これらは、完全なものはなく、正にその開示内容に本発明を限定する
ものでもない。先の教示内容を考慮すれば、多くの改良や変形を行なうことがで
きることは言うまでもない。実施形態は、本発明の原理およびその実用的な用途
を最も良く説明し、これによって当業者が本発明を最もうまく利用できるように
、選択されて述べられた。様々な改良を成す各種の実施形態は、考えられる特定
の使用に適している。本発明の範囲は、ここに添付されたクレームおよびそれら
の等価物によって規定される。
【図面の簡単な説明】
【図1】 一般的なコンピュータシステムを示している。
【図2】 本発明の一実施形態に係るシステムのブロック図を示している。
【図3】 本発明の一実施形態に係る(図2で説明された)システム200に関するJa
vaアプリケーションの実行を示している。
【図4】 本発明の一実施形態に係る(図2で説明された)システム200に関する別の
Javaアプリケーションの実行を示している。
【図5】 本発明の一実施形態に係る(図2で説明された)システム200に関する更に
別のJavaアプリケーションの実行を示している。
【図6】 本発明の一実施形態にしたがって実行される工程の概要を示すフローチャート
である。
───────────────────────────────────────────────────── フロントページの続き Fターム(参考) 5B045 DD02 DD12 EE03 GG09 5B098 AA10 GA05 GC01 GC15 【要約の続き】 形態の補助システムは、必要に応じて、ホストコンピュ ータシステムから取り外すことができる。しかしなが ら、随意的に、補助システムは、ホストコンピュータシ ステムの常設部分として実施することもできる。すなわ ち、補助システムをホストコンピュータシステムから取 り外すことができない。

Claims (33)

    【特許請求の範囲】
  1. 【請求項1】 ホストプロセッサおよびホストメモリを有するホストコンピュータのための補
    助システムであって、バスを介して前記ホストコンピュータシステムに接続され
    、Javaコンピュータプログラムを実行する際に前記ホストコンピュータシス
    テムをサポートする補助システムにおいて、 第1のJava仮想マシン(JVM)に接続されて、前記Javaコンピュー
    タプログラムの1または複数のスレッドを実行するようになっている第1の非ホ
    ストプロセッサと、 前記第1の非ホストプロセッサに接続され、前記第1のJVMを記憶する非ホ
    ストメモリと、 を備えている補助システム。
  2. 【請求項2】 前記第1の非ホストプロセッサを含む複数の非ホストプロセッサを更に備え、
    前記複数の非ホストプロセッサは前記非ホストメモリに接続されている請求項1
    に記載の補助システム。
  3. 【請求項3】 別のスレッドを実行するために、前記第1のJVMは、前記第1のJVMと接
    続して前記別のスレッドを実行するための第2の非ホストプロセッサの割り当て
    を行なう請求項2に記載の補助システム。
  4. 【請求項4】 前記第1のJVMは、前記第1のJVMと接続する前記第2の非ホストプロセ
    ッサを割り当てるために、そのstart()方法を呼び出す請求項3に記載の
    補助システム。
  5. 【請求項5】 前記第1のJVMと接続して前記別のスレッドを実行するために利用可能な非
    ホストプロセッサがない場合には、前記第1の非ホストプロセッサが前記別のス
    レッドを実行する請求項3に記載の補助システム。
  6. 【請求項6】 前記第1のJVMは、前記ホストメモリ内の第1の一次クラスローダ(PCL
    )によって前記非ホストメモリ内で例示化され、前記第1のPCLは前記ホスト
    プロセッサによって実行される請求項1に記載の補助システム。
  7. 【請求項7】 前記第1のJVMと接続するために利用可能な非ホストプロセッサがない場合
    には、前記第1のJVMは、前記ホストメモリ内の第1のPCLによって前記ホ
    ストメモリ内で例示化され、前記第1のPCLは前記ホストプロセッサによって
    実行される請求項1に記載の補助システム。
  8. 【請求項8】 別のJavaコンピュータプログラムを実行するため、前記非ホストメモリ内
    で例示化される第2のJVMと接続する第3の非ホストプロセッサが割り当てら
    れ、前記第3の非ホストプロセッサは、前記第2のJVMと接続して、前記別の
    Javaコンピュータプログラムの1または複数のスレッドを実行する請求項2
    に記載の補助システム。
  9. 【請求項9】 前記別のJavaコンピュータプログラムを実行するために利用可能な非ホス
    トプロセッサがない場合には、前記第2のJVMは、前記ホストメモリ内の第2
    のPCLによって、前記ホストメモリ内で例示化される請求項8に記載の補助シ
    ステム。
  10. 【請求項10】 前記非ホストメモリがデュアルポートメモリである請求項1ないし請求項9の
    いずれか1項に記載の補助システム。
  11. 【請求項11】 複数の命令キャッシュが前記非ホストプロセッサに接続されている請求項1な
    いし請求項10のいずれか1項に記載の補助システム。
  12. 【請求項12】 前記複数の非ホストプロセッサがARMプロセッサである請求項2ないし請求
    項11のいずれか1項に記載の補助システム。
  13. 【請求項13】 前記補助システムが前記ホストコンピュータシステムから取り外し可能である
    請求項2ないし請求項12のいずれか1項に記載の補助システム。
  14. 【請求項14】 前記取り外し可能な補助システムがPCカード内に収容されている請求項13
    に記載の補助システム。
  15. 【請求項15】 Javaコンピュータプログラムを実行するためにコンピュータで実施される
    方法において、 a)ホストプロセッサおよびホストメモリを有するホストコンピュータを補助
    する第1の非ホストプロセッサを割り当てる工程を備え、前記第1の非ホストプ
    ロセッサは第1のJVMと接続するようになっており、 b)前記第1の非ホストプロセッサが割り当てられている場合には、前記ホス
    トコンピュータシステムを補助する非ホストメモリ内で前記第1のJVMを例示
    化する工程を備え、前記第1のJVMは、前記Javaコンピュータプログラム
    の1または複数のスレッドを実行するために、前記第1の非ホストプロセッサと
    接続する、コンピュータで実施される方法。
  16. 【請求項16】 前記第1の非ホストプロセッサは、前記ホストコンピュータシステムを補助す
    る複数の非ホストプロセッサに属し、前記複数の非ホストプロセッサは前記非ホ
    ストメモリに接続されている請求項15に記載のコンピュータで実施される方法
  17. 【請求項17】 c)前記Javaコンピュータプログラムの新たなスレッドを実行する前に、
    前記複数の非ホストプロセッサから第2の非ホストプロセッサを割り当てる工程
    を更に備え、前記第2の非ホストプロセッサは、前記第1のJVMと接続して、
    前記新たなスレッドを実行する請求項16に記載のコンピュータで実施される方
    法。
  18. 【請求項18】 d)前記工程c)において、前記新たなスレッドを実行するために前記複数の
    非ホストプロセッサから非ホストプロセッサを利用することができない場合には
    、前記第1のJVMと既に接続されている前記第1の非ホストプロセッサによっ
    て前記新たなスレッドが実行されるように割り当てる工程を更に備えている請求
    項17に記載のコンピュータで実施される方法。
  19. 【請求項19】 前記工程a)および工程b)は、前記ホストメモリ内の第1のPCLを使用し
    て実施され、前記第1のPCLは前記ホストプロセッサによって実行される請求
    項15ないし請求項18のいずれか1項に記載のコンピュータで実施される方法
  20. 【請求項20】 e)前記第1のJVMと接続するために前記複数の非ホストプロセッサから非
    ホストプロセッサを利用することができない場合には、前記ホストメモリ内で前
    記第1のJVMを例示化する工程を更に備え、前記第1のJVMは、前記Jav
    aコンピュータプログラムの1または複数のスレッドを実行するために、前記ホ
    ストプロセッサと接続する請求項16ないし請求項19のいずれか1項に記載の
    コンピュータで実施される方法。
  21. 【請求項21】 前記工程c)において、前記第1のJVMは、前記第1のJVMと接続する前
    記第2の非ホストプロセッサを割り当てるために、start()方法を呼び出
    す請求項17ないし請求項20のいずれか1項に記載のコンピュータで実施され
    る方法。
  22. 【請求項22】 別のJavaコンピュータプログラムを実行するために、更に、 f)前記複数のプロセッサから第3の非ホストプロセッサを割り当てる工程を
    備え、前記第3の非ホストプロセッサは第2のJVMと接続するようになってお
    り、 g)前記第3の非ホストプロセッサが割り当てられた場合には、前記非ホスト
    メモリ内で前記第2のJVMを例示化する工程を備え、前記第2のJVMは、前
    記別のJavaコンピュータプログラムの1または複数のスレッドを実行するた
    めに、前記第3の非ホストプロセッサと接続し、 h)前記第2のJVM内で前記別のJavaコンピュータプログラムの新たな
    スレッドを実行する前に、前記第2のJVMと接続して前記新たなスレッドを実
    行する第4の非ホストプロセッサを前記複数の非ホストプロセッサから割り当て
    る工程を備えている請求項16ないし請求項21のいずれか1項に記載のコンピ
    ュータで実施される方法。
  23. 【請求項23】 i)前記第2のJVMと接続するために非ホストプロセッサを利用できない場
    合には、前記ホストメモリ内で前記第2のJVMを例示化する工程を更に備え、
    前記第2のJVMは、前記別のJavaコンピュータプログラムの1または複数
    のスレッドを実行するために、前記ホストプロセッサと接続する請求項22に記
    載のコンピュータで実施される方法。
  24. 【請求項24】 j)前記ステップh)において、前記新たなスレッドを実行するために前記複
    数の非ホストプロセッサから別の非ホストプロセッサを利用することができない
    場合には、前記第2のJVMと既に接続された前記第3の非ホストプロセッサに
    よって実行される前記新たなスレッドを割り当てる工程を更に備えている請求項
    22または請求項23に記載のコンピュータで実施される方法。
  25. 【請求項25】 前記工程f)および前記工程g)は、前記ホストメモリ内の第2のPCLを使
    用して実施され、前記第2のPCLは前記ホストプロセッサによって実行される
    請求項22ないし請求項24のいずれか1項に記載のコンピュータで実施される
    方法。
  26. 【請求項26】 前記第2のJVMを使用して前記工程h)が行なわれる請求項22ないし請求
    項25のいずれか1項に記載のコンピュータで実施される方法。
  27. 【請求項27】 前記複数の非ホストプロセッサがARMプロセッサである請求項22ないし請
    求項26のいずれか1項に記載のコンピュータで実施される方法。
  28. 【請求項28】 複数の命令キャッシュが前記非ホストプロセッサに接続されている請求項22
    ないし請求項27のいずれか1項に記載のコンピュータで実施される方法。
  29. 【請求項29】 前記非ホストメモリは、デュアルポートメモリとして、前記ホストコンピュー
    タシステムに接続されている請求項22ないし請求項28のいずれか1項に記載
    のコンピュータで実施される方法。
  30. 【請求項30】 前記ホストコンピュータシステムは、バスを介して、前記非ホストメモリおよ
    び前記複数の非ホストプロセッサに接続されている請求項22ないし請求項28
    のいずれか1項に記載のコンピュータで実施される方法。
  31. 【請求項31】 前記バスがPCI(peripheral component interconnect)バスである請求項
    30に記載のコンピュータで実施される方法。
  32. 【請求項32】 前記非ホストメモリおよび前記複数の非ホストプロセッサは、前記ホストコン
    ピュータシステムに接続されるようになっているPCカード内に収容され、前記
    PCカードは前記ホストコンピュータシステムから取り外すことができる請求項
    16ないし請求項31のいずれか1項に記載のコンピュータで実施される方法。
  33. 【請求項33】 補助システムが接続される複合コンピュータシステムのためのコンピュータ読
    み取り可能媒体であって、請求項15ないし請求項32のいずれか1項に記載の
    方法の工程を前記複合コンピュータシステムに実行させるコンピュータ読み取り
    可能コードを記憶した前記コンピュータ読み取り可能媒体において、ホストコン
    ピュータシステムを補助する前記第1の非ホストプロセッサが、前記補助システ
    ムの第1の非ホストプロセッサであるコンピュータ読み取り可能媒体。
JP2001577137A 2000-04-17 2001-03-27 Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム Pending JP2003531434A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/550,446 2000-04-17
US09/550,446 US6684390B1 (en) 2000-04-17 2000-04-17 Multi-processor JAVA subsystem
PCT/US2001/010109 WO2001080001A2 (en) 2000-04-17 2001-03-27 Computer method and system for executing java computer programs

Publications (1)

Publication Number Publication Date
JP2003531434A true JP2003531434A (ja) 2003-10-21

Family

ID=24197219

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001577137A Pending JP2003531434A (ja) 2000-04-17 2001-03-27 Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム

Country Status (5)

Country Link
US (1) US6684390B1 (ja)
EP (1) EP1319209B1 (ja)
JP (1) JP2003531434A (ja)
DE (1) DE60137346D1 (ja)
WO (1) WO2001080001A2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7146602B2 (en) * 2001-01-16 2006-12-05 Ajile Systems, Inc. Builder tool and interface for system supporting multiple virtual machines
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US20020143958A1 (en) * 2001-03-30 2002-10-03 Montero Gabriel G. Method and apparatus for asynchronous time-based updates of http sessions
US8037153B2 (en) * 2001-12-21 2011-10-11 International Business Machines Corporation Dynamic partitioning of messaging system topics
US7617490B2 (en) * 2003-09-10 2009-11-10 Intel Corporation Methods and apparatus for dynamic best fit compilation of mixed mode instructions
US7475257B2 (en) * 2003-09-25 2009-01-06 International Business Machines Corporation System and method for selecting and using a signal processor in a multiprocessor system to operate as a security for encryption/decryption of data
US7478390B2 (en) * 2003-09-25 2009-01-13 International Business Machines Corporation Task queue management of virtual devices using a plurality of processors
US7523157B2 (en) * 2003-09-25 2009-04-21 International Business Machines Corporation Managing a plurality of processors as devices
US20050071828A1 (en) * 2003-09-25 2005-03-31 International Business Machines Corporation System and method for compiling source code for multi-processor environments
US7549145B2 (en) * 2003-09-25 2009-06-16 International Business Machines Corporation Processor dedicated code handling in a multi-processor environment
US7516456B2 (en) * 2003-09-25 2009-04-07 International Business Machines Corporation Asymmetric heterogeneous multi-threaded operating system
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US7389508B2 (en) * 2003-09-25 2008-06-17 International Business Machines Corporation System and method for grouping processors and assigning shared memory space to a group in heterogeneous computer environment
US7444632B2 (en) * 2003-09-25 2008-10-28 International Business Machines Corporation Balancing computational load across a plurality of processors
US7496917B2 (en) * 2003-09-25 2009-02-24 International Business Machines Corporation Virtual devices using a pluarlity of processors
US7770034B2 (en) * 2003-12-16 2010-08-03 Intel Corporation Performance monitoring based dynamic voltage and frequency scaling
US20070266391A1 (en) * 2006-04-27 2007-11-15 Hoffman Philip M System and method for separating multi-workload processor utilization on a metered computer system
US20070256076A1 (en) * 2006-04-27 2007-11-01 Thompson James W System and method for separating multiple workloads processing in a single computer operating environment
US8769703B2 (en) * 2006-04-27 2014-07-01 Unisys Corporation System and method for providing a mechanism to virtualize a perpetual, unique system identity on a partitioned computer system
US8782675B2 (en) * 2006-10-13 2014-07-15 Texas Instruments Incorporated Method and system of accessing display window memory
US8108845B2 (en) * 2007-02-14 2012-01-31 The Mathworks, Inc. Parallel programming computing system to dynamically allocate program portions
US20080270653A1 (en) * 2007-04-26 2008-10-30 Balle Susanne M Intelligent resource management in multiprocessor computer systems
US8799693B2 (en) 2011-09-20 2014-08-05 Qualcomm Incorporated Dynamic power optimization for computing devices
US9098309B2 (en) 2011-09-23 2015-08-04 Qualcomm Incorporated Power consumption optimized translation of object code partitioned for hardware component based on identified operations
CN114520668B (zh) * 2020-11-20 2024-02-02 海能达通信股份有限公司 一种信号传输方法、信号传输系统及计算机存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069394A (ja) * 1996-06-10 1998-03-10 Lsi Logic Corp オブジェクト指向言語プログラム由来の中間コードデータストリーム、またはマルチメディアデータストリームの処理システム及び方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085307A (en) * 1996-11-27 2000-07-04 Vlsi Technology, Inc. Multiple native instruction set master/slave processor arrangement and method thereof
US6269391B1 (en) * 1997-02-24 2001-07-31 Novell, Inc. Multi-processor scheduling kernel
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
US6240440B1 (en) * 1997-06-30 2001-05-29 Sun Microsystems Incorporated Method and apparatus for implementing virtual threads
US5923892A (en) * 1997-10-27 1999-07-13 Levy; Paul S. Host processor and coprocessor arrangement for processing platform-independent code
US6295645B1 (en) * 1997-12-22 2001-09-25 Texas Instruments Incorporated Method and apparatus for providing downloadable functionality to an embedded coprocessor
US6058395A (en) * 1998-01-29 2000-05-02 Buzaglo; Jacques Computerized communication system for managing multi-disciplinary engineering virtual community
US6374286B1 (en) * 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6496871B1 (en) * 1998-06-30 2002-12-17 Nec Research Institute, Inc. Distributed agent software system and method having enhanced process mobility and communication in a computer network
US6393458B1 (en) * 1999-01-28 2002-05-21 Genrad, Inc. Method and apparatus for load balancing in a distributed object architecture

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1069394A (ja) * 1996-06-10 1998-03-10 Lsi Logic Corp オブジェクト指向言語プログラム由来の中間コードデータストリーム、またはマルチメディアデータストリームの処理システム及び方法

Also Published As

Publication number Publication date
EP1319209B1 (en) 2009-01-07
WO2001080001A3 (en) 2003-03-27
WO2001080001A2 (en) 2001-10-25
EP1319209A2 (en) 2003-06-18
US6684390B1 (en) 2004-01-27
DE60137346D1 (de) 2009-02-26

Similar Documents

Publication Publication Date Title
JP2003531434A (ja) Javaコンピュータプログラムを実行するためのコンピュータ方法およびシステム
US6711605B2 (en) Multi OS configuration method and computer system
US7000072B1 (en) Cache memory allocation method
CA2059921C (en) Scsi device drivers for multitasking operating system
US6321323B1 (en) System and method for executing platform-independent code on a co-processor
JP5735070B2 (ja) パーティション分割されたシステムにおいて、デバイスがメモリにアクセスするための、ゲスト・アドレスからホスト・アドレスへの変換
JP3546678B2 (ja) マルチos構成方法
US7194597B2 (en) Method and apparatus for sharing TLB entries
JP4639233B2 (ja) プロセッサ・リソースの仮想化のためのシステムおよび方法
CN102625934B (zh) 共享虚拟存储器
US7165164B2 (en) Method and apparatus including heuristic for sharing TLB entries
US8453132B2 (en) System and method for recompiling code based on locality domain and thread affinity in NUMA computer systems
US20030188122A1 (en) Mapping of interconnect configuration space
US20230196502A1 (en) Dynamic kernel memory space allocation
US20030187904A1 (en) Device virtualization and assignment of interconnect devices
US7558724B2 (en) Operation region describing a virtual device
JP2010186465A (ja) ヘテロジニアス処理ユニットのための集中デバイス仮想化レイヤ
US6216216B1 (en) Method and apparatus for providing processor partitioning on a multiprocessor machine
US7620951B2 (en) Hiding memory latency
US20130262784A1 (en) Memory Heaps in a Memory Model for a Unified Computing System
KR100988395B1 (ko) 태스크 스케줄링 방법, 태스크 스케줄링 지원 장치, 코프로세싱 스케줄러에 관련하여 사용하기 위한 코프로세서, 및 컴퓨터 판독가능 저장 매체
US5894563A (en) Method and apparatus for providing a PCI bridge between multiple PCI environments
US7093257B2 (en) Allocation of potentially needed resources prior to complete transaction receipt
US7660939B2 (en) Operating system arrangement for flexible computer system design
KR101130361B1 (ko) 코프로세서 내의 연산을 스트림라인하는 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080325

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080626

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090911

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100319