(57)【要約】【課題】電子装置内に、高速で、消費電力ができるだけ小さく、必要なメモリができるだけ小さいという機能性を実現するシステムと方法を提供する。【解決手段】制御入力に基づいて第１のプロセッサ（１０４）内のメモリ（１０６）の一部に事前割振りを行い、事前割振りされたメモリ（１０６）の部分が或るメモリ割振り要求を満足するかどうか第２のプロセッサ（１０２）内で判定することを含む方法とこれに関連するシステム（１００）である。またこの方法では、事前割振りされたメモリ（１０６）の一部が或るメモリ割振り要求を満足する場合はメモリ（１０６）の事前割振りされた部分を割振り要求に割り当てるが、事前割振りされたメモリ（１０６）の一部がメモリ割振り要求を満足しない場合は第１のプロセッサ（１０４）内のメモリ（１０６）の一部を割振り要求に割り振る。【選択図】図１
2005011348.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
制御入力に基づいて第１のプロセッサ内のメモリの一部に事前割振りを行い、
事前割振りされたメモリの前記部分が或るメモリ割振り要求を満足するかどうか第２のプロセッサ内で決定し、
事前割振りされたメモリの一部が或るメモリ割振り要求を満足する場合はメモリの前記事前割振りされた部分を前記割振り要求に割り当て、事前割振りされたメモリの一部が或るメモリ割振り要求を満足しない場合は前記第１のプロセッサ内のメモリの一部を前記割振り要求に割り振る、
ことを含む割振り方法。
【請求項２】
システムであって、
第１のプロセッサと、
第２のプロセッサと、
前記第１および第２のプロセッサに結合するメモリと、
前記第１のプロセッサ内の前記メモリの一部に事前割振りを行って初期化する制御論理と、
を備え、
メモリ割振り要求を満足するメモリの事前割振りされた部分が前記第２のプロセッサ内に存在する場合は、前記制御論理はメモリの前記事前割振りされた部分を前記メモリ割振り要求に割り当て、
メモリ割振り要求を満足するメモリの事前割振りされた部分が存在しない場合は、前記制御論理は前記第１のプロセッサ内のメモリの一部を前記メモリ割振り要求に割り振って初期化する、
割振りシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にプロセッサに関するもので、特にプロセッサに関連するメモリの管理に関するものである。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
多くの種類の電子装置は電池駆動なので、電力消費は小さいほど好ましい。その一例は携帯電話である。また携帯電話などの電子装置内に種々のマルチメディア機能性を実現することが望ましい。マルチメディア機能性の例としては、ゲームや、オーディオ・デコーダや、ディジタル・カメラなどがあり、別に制限はない。したがって、他の条件が同じであれば、高速で、消費電力ができるだけ小さく、かつ必要なメモリができるだけ小さいという機能性を電子装置内に実現することが望ましい。
【課題を解決するための手段】
【０００３】
或る実施の形態では、制御入力に基づいて第１のプロセッサ内のメモリの一部に事前割振り（pre-allocating）を行い、事前割振りされたメモリのこの部分が或るメモリ割振り要求を満足するかどうか第２のプロセッサで決定する方法を提供する。また、事前割振りされたメモリの一部が或るメモリ割振り要求（allocation request）を満足する場合は、この方法はメモリのこの事前割振りされた（pre-allocated）部分をこの割振り要求に割り当てる（assigning）ことを含む。しかし事前割振りされたメモリの一部が或るメモリ割振り要求を満足しない場合は、この方法は第１のプロセッサ内のメモリの一部をこの割振り要求に割り振ることを含む。
【０００４】
別の実施の形態では、第１のプロセッサと、第２のプロセッサと、前記第１および第２のプロセッサに結合するメモリと、前記第１のプロセッサ内のメモリの一部に事前割振りを行って初期化する制御論理とを備えるシステムを提供する。メモリ割振り要求を満足するメモリの事前割振りされた部分が第２のプロセッサ内に存在する場合は、制御論理は好ましくはメモリのこの事前割振りされた部分をこのメモリ割振り要求に割り当てる。しかし、メモリ割振り要求を満足するメモリの事前割振りされた部分が存在しない場合は、制御論理は好ましくは第１のプロセッサ内のメモリの一部をメモリ割振り要求に割り振って初期化する。
【０００５】
（表記法と命名法）
以下の説明とクレームを通して、或る用語は特定のシステム構成要素を指す。当業者が認識するように、半導体メーカによって同じ構成要素を別の名称で呼ぶことがある。この明細書では、名称は異なるが機能が同じ構成要素は区別しない。以下の説明とクレームでは「含む」と「備える」とは制限なしに用いるので、「含むが、これに限らない」と解釈すべきである。また「結合する」という用語は直接または間接に接続することを意味する。したがって、第１の装置を第２の装置に結合する場合は、直接に接続してもよいし、他の装置や接続を介して間接的に接続してもよい。
【実施例】
【０００６】
本発明の種々の実施の形態について以下に説明する。１つまたは複数のかかる実施の形態は好ましいものであるが、別に指定しない限り、ここに開示する実施の形態はクレームを含むこの開示の範囲を制限するものと解釈したり用いたりしてはならない。また、当業者が理解するように以下の説明は広範囲の用途を有するものであって、どの実施の形態の説明も単にその実施の形態の例に過ぎず、クレームを含む開示の範囲はその実施の形態に限定されるものではない。
【０００７】
この開示の主題は、スタックに基づく言語（例えば、ジャバ（登録商標）（Java（登録商標））に関連するプログラムを記憶するメモリを有するプロセッサなどの、プログラム可能な電子装置に関する。プログラムは、ハードウエアか、ソフトウエアか、またはハードウエアとソフトウエアとの組合わせで実現される「仮想」機械により実行してよい。仮想機械はプログラムを機械語（例えば、ジャバ（登録商標）・バイトコード（Java（登録商標) bytecode））に変換する。
【０００８】
スタックの他に、メモリの一部をジャバ（登録商標）・オブジェクト用に確保してよい。メモリのこの部分はランタイム（例えば、ジャバ（登録商標）仮想機械）が必要とするクラスとメタ・データとで記述されるフィールド値を含む。メモリのこの部分を「ヒープ（heap）」と呼ぶ。ジャバ（登録商標）・オブジェクトが作成されると、このオブジェクトはヒープ内のメモリに割振りされて初期化される。ジャバ（登録商標）・オブジェクトが初期化されると、フィールド値はそれぞれのデフォルトに初期化され、メタ・データはランタイムに従って初期化される。ヒープ内に割振りされるメモリの大きさは、作成されたジャバ（登録商標）・オブジェクトのクラスと、関連するメタ・データの大きさとに従う。メモリ割振りに続いてジャバ（登録商標）・オブジェクトを初期化するプロセスをこの開示では「オブジェクト割振り」と呼ぶ。
【０００９】
上に述べたオブジェクト割振りプロセスは一般に、メモリの一部を動的割振り（dynamic allocation）のために確保している任意のコンピュータ・プログラムに適用される。メモリのこの部分を「ヒープ」と呼ぶ。動的割振りのためのメモリが必要な場合は、ヒープの一部が割振りされて恐らく初期化される。ヒープ内に割振りされた部分の大きさはメモリを要求するアプリケーションにより決まる。メモリ割振りに続いてこのメモリを初期化するプロセスをこの開示では「メモリ割振り」と呼ぶ。
【００１０】
オブジェクト割振りプロセスの動作を以下に説明する。このプロセスは、「オブジェクト」を「メモリの部分」に置き換え、また「オブジェクトのクラス」を「メモリの部分に関連する大きさ」に置き換えることにより、容易にメモリ割振りに拡張することができる。
【００１１】
以下に、２個のプロセッサを用いるシステムの好ましい実施の形態の動作を説明する。一般に、第１のプロセッサは第２のプロセッサにより割振りされたオブジェクトを持つアプリケーションを走らせる。第２のプロセッサは少なくとも２つの方式の１つにより、第１のプロセッサのためのオブジェクト割振りを行う。第１の方式は割振りの要求が来る前に非同期的にオブジェクト割振りを行う。この方式を「事前割振り」と呼ぶ。第２の方式は、第１のプロセッサから要求されたときに要求に応じて同期的にオブジェクト割振りを行う。この方式を「同期割振り」と呼ぶ。同期割振りでは第１のプロセッサから第２のプロセッサに要求すると第２のプロセッサ内に割込みが発生するので、第１のプロセッサ内に遅れを生じる。したがって、事前割振りの方が同期割振りより効率的である。しかし事前割振り方式に従って事前割振りされるオブジェクトは特定のクラスに関連する。第１のプロセッサからのオブジェクト割振り要求が、オブジェクトが事前割振りされた特定のクラスに関連するときだけ、要求は事前割振り方式を用いることができる。事前割振りされていない他のクラスのオブジェクトに関連する要求は、事前割振り方式を用いることはできない。
【００１２】
図１に、本発明の好ましい実施の形態に係るシステム１００を示す。図に示すように、このシステムは少なくとも２個のプロセッサ１０２，１０４を含む。この開示では、プロセッサ１０２をジャバ（登録商標）・スタック機械（Java（登録商標) Stack Machine）（ＪＳＭ）と呼び、プロセッサ１０４を主プロセッサ・ユニット（ＭＰＵ）と呼ぶ。またシステム１００は、ＪＳＭ１０２とＭＰＵ１０４の両方に結合して両プロセッサからアクセス可能なメモリ１０６を含む。メモリ１０６の少なくとも一部は両プロセッサの共有である。すなわち、両プロセッサは同じ共有メモリ位置にアクセスすることができる。また必要であれば、メモリ１０６の一部をどちらかのプロセッサの専用に指定してよい。またシステム１００はジャバ（登録商標）仮想機械（ＪＶＭ）１０８と、コンパイラ１１０と、ディスプレイ１１４とを含む。好ましくは、ＪＳＭ１０２はユーザがシステム１００の種々の形態を制御するためのキーパッドなどの１つまたは複数の入力／出力（Ｉ／Ｏ）装置とのインターフェースを含む。更に、データ・ストリームはＩ／Ｏ空間からＪＳＭ１０２に受けてＪＳＭ１０２で処理してよい。必要に応じて他の構成要素（特に図示しない）を含んでよい。
【００１３】
図１において、周知のようにジャバ（登録商標）・コードは複数の「バイトコード」１１２を含む。バイトコード１１２はＪＶＭ１０８に与えられ、コンパイラ１１０によりコンパイルされ、ＪＳＭ１０２および／またはＭＰＵ１０４に与えられて実行される。本発明の好ましい実施の形態では、ＪＳＭ１０２はジャバ（登録商標）・バイトコードの少なくとも一部を、一般には大部分を実行してよい。しかし必要であればＪＳＭ１０２は、ＪＳＭ１０２が実行しないかまたは実行できない１つまたは複数のジャバ（登録商標）・バイトコードを実行するようにＭＰＵ１０４に要求してよい。ジャバ（登録商標）・バイトコードを実行する他に、ＭＰＵ１０４は非ジャバ（登録商標）命令も実行してよい。またＭＰＵ１０４はオペレーティング・システム（Ｏ／Ｓ）（特に図示しない）を管理してよい。オペレーティング・システムは、システム・メモリ管理や、ＪＶＭ１０８やシステム上で走る多くのまたは全ての他の本来のタスクのスケージューリングを行うシステム・タスク管理や、ディスプレイ１１４の管理や、入力装置からの入力の受信などの種々の機能を行う。ジャバ（登録商標）・コードを用いて、マルチメディアや、ゲームや、システム１００内のウエブに基づくアプリケーションなど、特に制限なく種々の任意のアプリケーションを行ってよいが、非ジャバ（登録商標）・コード（これはＯ／Ｓやその他の本来のアプリケーションを含んでよい）もシステム上でＭＰＵ１０４上で走ってよい。
【００１４】
ＪＶＭ１０８は一般にソフトウエアとハードウエアとの組合わせで構成する。ソフトウエアはコンパイラ１１０を含んでよく、ハードウエアはＪＳＭ１０２を含んでよい。ＪＶＭは、クラス・ローダ（class loader）や、バイトコード・ベリファイア（bytecode verifier）や、ガーベッジ・コレクタ（garbage collector）や、ＪＳＭプロセッサ１０２上で実行されないバイトコードを解釈するためのバイトコード・インタープリタ・ループ（bytecode interpreter loop）を含んでよい。
【００１５】
本発明の好ましい実施の形態では、事前割振りと同期のオブジェクト割振りを行うための、種々の機能エンティティを含む制御論理がＪＳＭ１０２とＭＰＵ１０４の中に存在する。かかる各エンティティは好ましくは、要求の形の入力を受けて２つのオブジェクト割振り方式の一方に関連する機能を行う実行可能ルーチンの形をとる。このルーチンは、ソフトウエアか、ハードウエアか、またはこの両者の組合わせで実現してよい。同期オブジェクト割振り方式に関連するエンティティについては、事前割振りオブジェクト割振り方式に関連するエンティティを説明した後で説明する。
【００１６】
図２に、事前割振りオブジェクト割振り方式に関連する３つのエンティティを示す。第１のエンティティはオブジェクトの割振りを行う。このエンティティを「事前割振りオブジェクト・プロデューサ（pre-allocated objects producer）」２０８と呼び、これが割振りを行うオブジェクトを「事前割振りオブジェクト（pre-allocated objects）」２０６と呼ぶ。
【００１７】
事前割振り方式では、或るクラスに関連するオブジェクト割振りの要求は事前割振りオブジェクト・コンシューマ（pre-allocated objects consumer）」２０４が受け、好ましくは事前割振りオブジェクト２０６を調べて、要求されたクラスと同じクラスのオブジェクトが存在するかどうか判定する。事前割振りオブジェクト２０６内に同じクラスのオブジェクトが存在する場合は、この事前割振りオブジェクトをその要求に割り当てる。
【００１８】
事前割振りオブジェクト・プロデューサ２０８は、オブジェクト割振りに関する情報を監視する第２のエンティティ（「ホットクラス監視（hotclass monitoring）」２１８と呼ぶ）からの入力に従って特定のクラスの事前割振りオブジェクトを作成する。好ましくは、ホットクラス監視２１８は「ヒューリスティック（heuristic）」と呼ぶ規則を用いて、事前割振りオブジェクト・プロデューサ２０８が作成すべきオブジェクトを決定する。ヒューリスティック（例えば、最も頻繁に割振りが行われる）は、事前割振りオブジェクト・プロデューサ２０８が例示する（instantiate）べき特定のクラスを決定し、ホットクラス監視２１８は対応する信号「作成する」を事前割振りオブジェクト・プロデューサ２０８に送る。ホットクラス監視２１８の目的はシステム内で最も例示される可能性のあるクラスを決定することである。ホットクラス監視２１８内のヒューリスティックは、過去のオブジェクト割振りに関する情報を用いた後で「作成する」信号を事前割振りオブジェクト・プロデューサ２０８に送る。
【００１９】
ヒューリスティックが用いるオブジェクト割振りに関する情報は「プロファイリング・データ（profiling data）」２２４と呼ぶ共有メモリ内に記憶される。プロファイリング・データ２２４はメモリ１０６（図１）内に記憶される。ホットクラス監視２１８はプロファイリング・データ２２４にアクセスして過去のオブジェクト割振りに関する情報を検索し、この情報をヒューリスティックに渡す。ホットクラス監視２１８のヒューリスティックは特定の「可能な（likely）」クラスを識別するのを助ける。かかるクラスの識別は事前割振りオブジェクト・プロデューサ２０８に与えられ、かかるクラスのオブジェクトはこれに従って事前割振りが行われる。
【００２０】
本発明の別の実施の形態では、ヒューリスティックは共有のプロファイリング・データ２２４を用いない。その代わりに、種々のエンティティからホットクラス監視２１８に通知を送る。この通知はシステム内の過去のオブジェクト割振りに関する情報を含む。次にホットクラス監視２１８のヒューリスティックはかかる通知の頻度を用いてその専用のプロファイリング・データを構築し、事前割振りオブジェクト・プロデューサ２０８がどのオブジェクトを作成すべきかを決定する。
【００２１】
事前割振りオブジェクト・プロデューサ２０８がオブジェクトを作成すると、第３のエンティティが事前割振りオブジェクト２０６内のオブジェクトをオブジェクト割振りの要求に割り当てる。このエンティティを「事前割振りオブジェクト・コンシューマ」２０４と呼ぶ。事前割振りオブジェクト・コンシューマ２０４はジャバ（登録商標）の「新（new）」命令２０２を受けてよい。「新」命令２０２は或るクラスのオブジェクト割振りを要求する。事前割振りオブジェクト・コンシューマ２０４は、「新」命令が要求するクラスと同じクラスのオブジェクトが事前割振りオブジェクト２０６内に存在するかどうか判定する。一致するオブジェクトが見つかった場合は、事前割振りオブジェクト・コンシューマ２０４はそのオブジェクトをその要求に割り当てる。事前割振りオブジェクト・プロデューサ２０８と事前割振りオブジェクト・コンシューマ２０４との間のオブジェクトの交換は事前割振りオブジェクト方式の基礎である。
更に図２において、事前割振りオブジェクト２０６は好ましくは共有メモリ内でオブジェクト参照の集合の形をとるので、一貫性を保つ必要がある。
【００２２】
オブジェクトの事前割振りを行うエンティティの間に同期が存在してよい。同期には２種類ある。第１の種類の同期は、事前割振りオブジェクト２０６を効率的に管理するための事前割振りオブジェクト・プロデューサ２０８と事前割振りオブジェクト・コンシューマ２０４との間の同期である。この同期を用いれば２つの異なる可能な状態を防ぐことができる。その第１の状態は、事前割振りオブジェクト・コンシューマ２０４が事前割振りオブジェクト２０６内に或る事前割振りオブジェクトを見つけることができないときである。その第２の状態は、事前割振りオブジェクト２０６内で或る事前割振りオブジェクトが消失することである。「強い」同期方式は、事前割振りオブジェクト２０６内のオブジェクトの集合を細かくロックして、事前割振りオブジェクト・プロデューサ２０８と事前割振りオブジェクト・コンシューマ２０４とが事前割振りオブジェクトを同時に作成も消費もしないようにして、２つの望ましくない状態を防ぐことである。「弱い」同期方式は性能を高めるために、集合を細かくロックしない。ガーベッジ・コレクション・プロセスがある場合は弱い同期を用いてよい。第２の状態として述べた、消失した可能性のある事前割振りオブジェクトは識別されて管理される。弱い同期方式か強い同期方式が用いられる。
【００２３】
再び図２において、第２の種類の同期は事前割振りオブジェクト・コンシューマ２０４で用いられるもので、２つのコンシューマが同じ事前割振りオブジェクトを別々の要求に割り当てようとするのを防ぐことである。例えば、２つの同じ「新」命令がＪＳＭ１０２に与えられることがある。事前割振りオブジェクト・コンシューマ２０４は第１の命令を事前割振りオブジェクト２０６内の或るオブジェクトに割り当ててよいが、第２の同じ「新」命令を同じオブジェクトに割り当ててはならない。この望ましくない状態を防ぐために種々の同期化方式を用いてよい。
【００２４】
本発明の好ましい実施の形態では、同期オブジェクト割振りは追加された２つのエンティティにより達成される。再び図２を参照して、「オブジェクト割振りクライアント（object allocation client）」２１０と呼ぶ第１のエンティティは割振りされるオブジェクトを同期的に要求する。オブジェクト割振りクライアント２１０は好ましくはＪＳＭ１０２内で実現してよい。「同期オブジェクト・アロケータ（synchronous object allocator）」２１２と呼ぶ第２のエンティティは、オブジェクト割振りクライアント２１０から要求されたオブジェクトの割振りを行う。好ましくは、同期オブジェクト・アロケータ２１２はオブジェクト割振りクライアント２１０から、必要であればＭＰＵ１０４に割り込みをかけてオブジェクト割振り要求を受けて、要求されたオブジェクトの割振りを行う。
【００２５】
本発明の好ましい実施の形態では、ジャバ（登録商標）「新」命令を含むバイトコードがＪＳＭ１０２に与えられると、オブジェクト割振り要求が事前割振りオブジェクト・コンシューマ２０４に送られる。事前割振りオブジェクト・コンシューマ２０４は事前割振りオブジェクト２０６を調べて、「新」命令で指定されたクラスのオブジェクトが事前割振りオブジェクト２０６内にすでに存在するかどうか判定する。事前割振りオブジェクト２０６を調べたとき、以下に説明する２つの場合が生じる。
【００２６】
第１の場合は、「新」命令が指定するクラスのオブジェクトが事前割振りオブジェクト２０６内に存在しないときに起こる。この場合は、事前割振りオブジェクト方式を用いることはできない。この第１の場合は、オブジェクト割振りの同期方式を用いる。
【００２７】
事前割振りオブジェクト・コンシューマ２０４からの「利用可能なオブジェクトなしメッセージ」により、割振り要求のオブジェクトが事前割振りオブジェクト２０６内に存在しないと事前割振りオブジェクト・コンシューマ２０４が判定すると、オブジェクト割振りクライアント２１０は同期オブジェクト割振りのためのＡｓｋＯｂｊｅｃｔ要求２１４を同期オブジェクト・アロケータ２１２に送る。好ましくは、同期オブジェクト・アロケータ２１２はＡｓｋＯｂｊｅｃｔ要求に対する回答としてＧｉｖｅＯｂｊｅｃｔ回答２１６を送る。好ましくは、回答２１６は要求に同期的に割振りされるオブジェクトの参照を含む。
【００２８】
同期オブジェクト・アロケータ２１２がＡｓｋＯｂｊｅｃｔ要求２１４を受けると、好ましくはプロファイリング・データ２２４は事前割振りオブジェクト２０６内に適当なオブジェクトがないことを反映するよう調整される。好ましくは、ホットクラス監視２１８は調整されたプロファイリング・データ２２４を、用いるヒューリスティックに挿入する。別の実施の形態では、同期オブジェクト・アロケータ２１２は通知２２８をホットクラス監視２１８に直接送り、ホットクラス監視２１８はこの通知２２８をヒューリスティックに挿入する。
【００２９】
事前割振りオブジェクト・コンシューマ２０４の第２の場合は、「新」命令が指定するクラスのオブジェクトが事前割振りオブジェクト２０６内に存在するときに起こる。この場合は、事前割振りオブジェクト方式を用いる。事前割振りオブジェクト・コンシューマ２０４は識別されたオブジェクトを事前割振りオブジェクト２０６から移す。
【００３０】
該当するオブジェクトが事前割振りオブジェクト２０６内に存在すると事前割振りオブジェクト・コンシューマ２０４が判定した後、好ましくは「オブジェクト消費通知機能（object consumption notifier）」２２２と呼ぶエンティティがプロファイリング・データ２２４内のデータを調整する。オブジェクト消費通知機能２２２は好ましくはプロファイリング・データ２２４を更新して、事前割振りオブジェクト２０６内のオブジェクトが消費されたことを反映する。ホットクラス監視２１８は調整されたプロファイリング・データ２２４を、用いるヒューリスティック内に挿入する。別の実施の形態では、オブジェクト消費通知機能２２２は非同期通知２２６をホットクラス監視２１８に直接送り、ホットクラス監視２１８は通知２２６をヒューリスティック内に挿入してよい。
【００３１】
ホットクラス監視２１８は過去のオブジェクト割振りに関する情報を好ましくは２つのエンティティから得る。第１のエンティティはオブジェクト消費通知機能２２２で、特定のクラスの事前割振りオブジェクトが用いられたことをホットクラス監視２１８に通知する。したがって、ホットクラス監視２１８内のヒューリスティックは事前割振りオブジェクト・プロデューサ２０８に、要求を満足させるために同じクラスの他のオブジェクトを割り振るよう通知してよい。第２のエンティティは同期オブジェクト・アロケータ２１２で、これから受けた情報は特定のクラスに関連するオブジェクト割振りが事前割振りオブジェクト割振り方式を用いなかったことを示す。したがってホットクラス監視２１８内のヒューリスティックは事前割振りオブジェクト・プロデューサ２０８に、要求を満足させるために特定のクラスのオブジェクトを作成するよう通知してよい。ホットクラス監視２１８内のヒューリスティックはこの情報を挿入して、一般に効率的な事前割振り方式を用いるオブジェクト割振りの数を増やすように努める。
【００３２】
好ましくは、ホットクラス監視はタイマ２３０に従って所定の間隔で実行する。更に、ホットクラス監視はタイマ２３０を用いて所定の時刻にプロファイリング・データ２２４を更新してよい。また、好ましくは、ホットクラス監視２１８内のヒューリスティックはメモリ使用２３２からのメモリ使用情報を用いて、事前割振りオブジェクト・プロデューサ２０８がいつ、またどのオブジェクトを作成すべきかを効率的に決定する。
【００３３】
上記の開示を完全に理解すれば、当業者には種々の変更や修正が明らかになる。クレームは全てのかかる変更や修正を含むものである。
【００３４】
以上の説明に関して更に以下の項を開示する。
（１）  方法であって、
制御入力に基づいて第１のプロセッサ内のメモリの一部に事前割振りを行い、
事前割振りされたメモリの前記部分が或るメモリ割振り要求を満足するかどうか第２のプロセッサ内で決定し、
事前割振りされたメモリの一部が或るメモリ割振り要求を満足する場合はメモリの前記事前割振りされた部分を前記割振り要求に割り当て、事前割振りされたメモリの一部が或るメモリ割振り要求を満足しない場合は前記第１のプロセッサ内のメモリの一部を前記割振り要求に割り振る、
ことを含む割振り方法。
【００３５】
（２）  前記事前割振りは前記割振りされたメモリの部分を初期化することを更に含む、（１）記載の割振り方法。
（３）  前記割振りは前記割振りされたメモリの部分を初期化することを更に含む、（１）記載の割振り方法。
（４）  前記制御入力は大きさの集合を含む、（１）記載の割振り方法。
【００３６】
（５）  第１のプロセッサ内のメモリの部分の前記事前割振りは、メモリ割振り情報に基づいて前記制御入力と前記大きさの集合とを関連させるようヒューリスティックを実行することを更に含む、（４）記載の割振り方法。
（６）  前記ヒューリスティックの実行はタイマが示す時刻に行う、（５）記載の割振り方法。
（７）  前記ヒューリスティックは、メモリの使用に関する情報を用いて前記制御入力と前記大きさの集合とを関連させる、（５）記載の割振り方法。
【００３７】
（８）  前記メモリ割振り情報は前記第２のプロセッサで生成された前記第１のプロセッサへの非同期信号である、（５）記載の割振り方法。
（９）  前記メモリ割振り情報は前記第１のプロセッサと第２のプロセッサとがアクセス可能なメモリ内に記憶される、（５）記載の割振り方法。
【００３８】
（１０）  システムであって、
第１のプロセッサと、
第２のプロセッサと、
前記第１および第２のプロセッサに結合するメモリと、
前記第１のプロセッサ内の前記メモリの一部に事前割振りを行って初期化する制御論理と、
を備え、
メモリ割振り要求を満足するメモリの事前割振りされた部分が前記第２のプロセッサ内に存在する場合は、前記制御論理はメモリの前記事前割振りされた部分を前記メモリ割振り要求に割り当て、
メモリ割振り要求を満足するメモリの事前割振りされた部分が存在しない場合は、前記制御論理は前記第１のプロセッサ内のメモリの一部を前記メモリ割振り要求に割り振って初期化する、
割振りシステム。
【００３９】
（１１）  前記制御論理は弱い同期方式の複数の制御論理エンティティを含む、（１０）記載の割振りシステム。
（１２）  前記制御論理はジャバ（登録商標）準拠のハードウエアまたはソフトウエアで実現される、（１０）記載の割振りシステム。
【００４０】
（１３）  システムであって、
メモリ・コンシューマの事前割振りされた部分と、
メモリ・プロデューサの事前割振りされた部分と、
メモリ・コンシューマの事前割振りされた部分とメモリ・プロデューサの事前割振りされた部分とにアクセス可能なメモリの複数の事前割振りされた部分と、
メモリ・コンシューマの事前割振りされた部分にアクセス可能なメモリ割振りクライアントの一部と、
メモリ割振りクライアントの前記部分に結合するメモリ・アロケータの同期部分と、
を備え、
割振り要求に応じて、メモリ・コンシューマの事前割振りされた部分は前記割振り要求に応じるメモリの事前割振りされた部分が存在するかどうか判定し、メモリのかかる事前割振りされた部分が存在する場合はメモリの前記事前割振りされた部分を前記割振り要求に割り当て、前記割振り要求に応じるメモリの事前割振りされた部分が存在しない場合は、メモリ割振りクライアントの前記部分はメモリ・アロケータの前記同期部分に要求を送り、メモリの部分の割振りを行いまた前記割振り要求に割り当てる、
割振りシステム。
【００４１】
（１４）  メモリ・プロデューサの前記事前割振りされた部分とメモリ・コンシューマの前記事前割振りされた部分とは弱く同期する、（１３）記載の割振りシステム。
（１５）  メモリ・プロデューサの前記事前割振りされた部分はヒューリスティックを含むエンティティに結合する、（１３）記載の割振りシステム。
（１６）  前記割振り要求は非同期信号である、（１３）記載の割振りシステム。
【００４２】
（１７）  制御入力に基づいて第１のプロセッサ内のメモリの一部に事前割振りを行い、事前割振りされたメモリの部分が或るメモリ割振り要求を満足するかどうか第２のプロセッサ内で判定することを含むプロセスとこれに関連するシステムである。また、事前割振りされたメモリの一部が或るメモリ割振り要求を満足する場合は、この方法はメモリの事前割振りされた部分を割振り要求に割り当てることを含む。しかし事前割振りされたメモリの一部がメモリ割振り要求を満足しない場合は、この方法は第１のプロセッサ内のメモリの一部を割振り要求に割り振ることを含む。
【図面の簡単な説明】
【００４３】
本発明の好ましい実施の形態を詳細に説明するため、以下の添付の図面を参照していただきたい。
【図１】ジャバ（登録商標）・スタック機械（ＪＳＭ）と主プロセッサ・ユニット（ＭＰＵ）とを含む、本発明の好ましい実施の形態に係るシステムの図を示す。
【図２】本発明の好ましい実施の形態に係るオブジェクト割振り手続きの図を示す。
【符号の説明】
【００４４】
１００  割振りシステム
１０２  第２のプロセッサ（ジャバ（登録商標）・スタック機械）
１０４  第１のプロセッサ（主プロセッサ・ユニット）
１０６  メモリ
【図１】
2005011348.tif 000003
【図２】
2005011348.tif 000004