(57)【特許請求の範囲】
【請求項１】
サブプロセスを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能記憶媒体において、
前記コンピュータ・プログラム・コードは、
前記サブプロセスが以前に内部メモリにロードされたことが保証された後のみ、オペレーティング・システム・カーネルが最初に実行対象の前記サブプロセスが前記内部メモリに存在するか判断することなく、前記サブプロセスを実行する、高速実行サブプロセス命令を実行し、
前記サブプロセスが以前に実行されたことを保証し、
前記サブプロセスが以前に実行を終了した後、前記サブプロセスを実行しているプロセスが任意の他のサブプロセスをコールしないことを保証する、
ためのコードを具備する、媒体。
【請求項２】
前記高速実行サブプロセス命令は、前記高速実行サブプロセス命令のコールと前記サブプロセスの前のローディングおよび前の実行との間に、他のサブプロセスが前記内部メモリにロードされていないまたはコールするプロセスによって実行されていない場合に、実行する、請求項１の媒体。
【請求項３】
前記高速実行サブプロセス命令は、システムが、前記サブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、実行する、請求項１の媒体。
【請求項４】
前記カーネルが前記内部メモリに前記サブプロセスをロードし前記サブプロセスを実行する実行サブプロセス命令をさらに具備し、
前記カーネルは、前記カーネルが前記サブプロセスが前記内部メモリに存在することを確認した後に、前記サブプロセスを実行する、請求項１の媒体。
【請求項５】
前記カーネルは、リアルタイム・オペレーティング・システム（ＲＴＯＳ）カーネルである、請求項４の媒体。
【請求項６】
前記カーネルは、前記サブプロセスの実行前に、前記内部メモリに存在しない前記サブプロセスのセグメントをスワップインする、請求項４の媒体。
【請求項７】
前記高速実行サブプロセス命令は、システム全体の中の実行するサブプロセスとして前記サブプロセスを指し示す、請求項１の媒体。
【請求項８】
前記高速実行サブプロセス命令は、前記サブプロセスを呼び出すプロセスのプロセス制御ブロックに、ベースおよび長さレジスタの値をコピーする、請求項１の媒体。
【請求項９】
高速実行サブプロセスが呼び出された場合に、フラグをセットするためのコードをさらに具備し、
前記フラグは、特定の高速実行サブプロセス命令、または標準の実行サブプロセス命令が実行されるかを示す、請求項１の媒体。
【請求項１０】
オペレーティング・システムにおいてサブプロセスを実行する場合にメモリを管理するための方法において、
カーネルに、プロセッサの内部メモリに第１のサブプロセスをロードすることを命令すること、
前記カーネルに、前記内部メモリにロードされた後に前記第１のサブプロセスを実行することを命令し、前記カーネルは、前記第１のサブプロセスの実行前に前記第１のサブプロセスのｂｉｎの実在について前記内部メモリをチェックすること、
他のサブプロセスが、前記第１のサブプロセスの実行終了後から、コールするプロセスによって実行されていない場合に、前記第１のサブプロセスのｂｉｎの実在について前記内部メモリをチェックすることなく、前記第１のサブプロセスを再実行するために高速サブプロセスをコールすること
を具備する、方法。
【請求項１１】
前記プロセッサは、デジタル・シグナル・プロセッサ（ＤＳＰ）である、請求項１０の方法。
【請求項１２】
前記ＤＳＰは、少なくとも一つのファームウェアより小さいメモリの量を持つ、請求項１１の方法。
【請求項１３】
前記高速サブプロセスをコールすることは、前記高速サブプロセスをコールするプロセスが、前記第１のサブプロセスの最後の実行から、他のサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項１０の方法。
【請求項１４】
前記高速サブプロセスをコールすることは、システムが、前記第１のサブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項１０の方法。
【請求項１５】
前記高速サブプロセスをコールすることは、他のサブブロセスが、前記第１のサブプロセスを実行して以来、ロードされなかったまたは実行されなかった場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、請求項１０の方法。
【請求項１６】
内部メモリと、
第１のサブプロセスが以前に前記内部メモリにロードされたことが保証された後のみ、最初に前記第１のサブプロセスの命令が前記内部メモリに存在するか否かをチェックすることなく、プロセスによってコールされた前記第１のサブプロセスの命令を実行し、
前記第１のサブプロセスが以前に実行されたことを保証し、
前記第１のサブプロセスが以前に実行を終了した後、前記第１のサブプロセスを実行しているプロセスが任意の他のサブプロセスをコールしないことを保証する
プロセッシング・ユニットと
を具備する、デジタル・シグナル・プロセッサ（ＤＳＰ）。
【請求項１７】
前記プロセッサは、前記内部メモリに前記第１のサブプロセス命令をロードするカーネル命令を実行し、前記第１のサブプロセス命令が前記内部メモリに存在することを確認した後、前記第１のサブプロセスが以前に前記内部メモリにロードされたことが保証された後のみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するかチェックすることなく、前記第１のサブプロセスを実行する、請求項１６のデジタル・シグナル・プロセッサ（ＤＳＰ）。
【請求項１８】
前記プロセッサは、前記カーネルが以前に前記内部メモリに前記サブプロセス命令をロードしており、以前に前記サブプロセス命令を実行した場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を続いて実行する、請求項１７のデジタル・シグナル・プロセッサ（ＤＳＰ）。
【請求項１９】
前記プロセッサは、前記サブプロセス命令の以前の実行と前記サブプロセス命令の現在の実行との間に、他のサブプロセス命令が、コールするプロセスによって前記内部メモリにロードされず、実行されなかった場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を実行する、請求項１６のデジタル・シグナル・プロセッサ（ＤＳＰ）。
【請求項２０】
前記プロセッサは、前記第１のサブプロセス命令の以前の実行と前記第１のサブプロセス命令の現在の実行との間に、オーバーラップするサブプロセス命令が、前記内部メモリにロードされなかった場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を実行する、請求項１６のデジタル・シグナル・プロセッサ（ＤＳＰ）。
【請求項２１】
プロセスユニットを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能記憶媒体において、
コールするプロセスによって呼び出されることに応じて、および、前記プロセスユニットが内部メモリに存在するかチェックすることなく、前記プロセスユニットを実行する高速実行コマンドと、
すべてのプロセスユニットが前記内部メモリにロードされた、および実行されたときを書き留めるプロセスユニット追跡コードセグメントと、
を具備し、
前記高速実行コマンドは、前記呼び出されるプロセスユニットが以前に前記内部メモリにロードされおよび以前に実行されたと前記プロセスユニット追跡コードセグメントが判断した場合に、使用され、
前記コンピュータプログラムコードは、前記プロセスユニットが以前に前記内部メモリにロードされたことが保証された後のみ、前記プロセスユニットが前記内部メモリに存在するかチェックすることなく、前記プロセスユニットを実行し、
前記コンピュータプログラムコードは、前記プロセスユニットが以前に実行されたことを保証し、
前記コンピュータプログラムコードは、前記プロセスユニットが以前に実行を終了した後、前記プロセスユニットを実行しているプロセスが任意の他のサブプロセスを実行しないことを保証する、媒体。
【請求項２２】
前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他のプロセスユニットが、前記高速実行コマンドの現在の使用と前記呼び出されるプロセスユニットの以前の実行との間に、前記内部メモリにロードされまたは実行されなかったと判断した場合に、使用される、請求項２１の媒体。
【請求項２３】
前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他の以前に呼び出されたプロセスユニットが前記呼び出されるプロセスユニットとオーバーラップしないと判断した場合に、使用される、請求項２１の媒体。
【請求項２４】
請求項１の媒体において、
前記コンピュータプログラムコードは、
前記保証の失敗のうえで前記高速実行サブプロセスに対応する標準のサブプロセス命令を実行するためのコードをさらに具備し、
前記標準のサブプロセス命令を実行することは、実行対象の前記サブプロセスが前記内部メモリに存在するか、前記オペレーティング・システム・カーネルによって判断することを具備する、媒体。
【請求項２５】
サブプロセスを実行するための装置において、
前記サブプロセスが以前に内部メモリにロードされたことが保証された後のみ、オペレーティング・システム・カーネルが最初に実行対象の前記サブプロセスが前記内部メモリに存在するか判断することなく、前記サブプロセスを実行する、高速実行サブプロセス命令を実行する手段と、
前記サブプロセスが以前に実行されたことを保証する手段と、
前記サブプロセスの以前の実行後、前記サブプロセスを実行しているプロセスが任意の他のサブプロセスをコールしないことを保証する手段と、
を具備する、装置。
【請求項２６】
携帯電話、パーソナルデータアシスタント、固定位置データユニット、マイクロプロセッサ、および／または、コンピュータ、に統合される、請求項２５の装置。
【請求項２７】
最初に第１のサブプロセスの命令が内部メモリに存在するか否かをチェックすることなく、プロセスによってコールされた前記第１のサブプロセス命令を実行する手段と、
前記第１のサブプロセスが、実行前に、以前に前記内部メモリにロードされたことを保証する手段と、
前記第１のサブプロセスが、以前に実行されたことを保証する手段と、
前記第１のサブプロセスが以前に実行を終了した後、前記第１のサブプロセスを実行しているプロセスが任意の他のサブプロセスをコールしないことを保証する手段と
を具備する、装置。
【請求項２８】
携帯電話、パーソナルデータアシスタント、固定位置データユニット、マイクロプロセッサ、および／または、コンピュータ、に統合される、請求項２７の装置。
【請求項２９】
携帯電話、パーソナルデータアシスタント、固定位置データユニット、マイクロプロセッサ、および／または、コンピュータ、に統合される、請求項１の媒体。
【請求項３０】
携帯電話、パーソナルデータアシスタント、固定位置データユニット、マイクロプロセッサ、および／または、コンピュータ、に統合される、請求項１６のＤＳＰ。
【請求項３１】
携帯電話、パーソナルデータアシスタント、固定位置データユニット、マイクロプロセッサ、および／または、コンピュータ、に統合される、請求項２１の媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータ・オペレーティング・システムに関する。より具体的には、本開示は、オペレーティング・システムによるメモリ管理に関する。
【背景】
【０００２】
マイクロプロセッサは、マイクロプロセッサによる実行のための命令およびデータを記憶するための内部メモリを持っている。マイクロプロセッサは、ある場合において外部メモリを使用することができる。しかし、マイクロプロセッサによって外部メモリにアクセスすることは、内部メモリにアクセスすることより、より多くの時間消費となる。内部メモリは、より速いが、利用可能な内部メモリの量は、通常、マイクロプロセッサに利用可能な外部メモリの量よりはるかに小さい。ある場合には、マイクロプロセッサは、外部メモリから実行することを許可されない。
【０００３】
マイクロプロセッサの内部メモリが、実行される命令を含むソフトウェア・イメージのサイズより小さい場合、メモリ管理サポートは望ましい。そのようなメモリ管理は、必要な場合には、プロセスユニット(必要なソフトウェア・イメージの)が内部メモリに属し、ほかの時は、それほど高価でないメモリに属することを保証するべきである。例えば、コールされた時、プロセスユニットは、実行に使用することができないメモリスペースから、実行に使用することができる内部メモリスペースに、移動されるべきである。
【０００４】
同じことはオペランドに対して該当する。別のプロセスがその内部メモリスペースで実行されているならば、タスクを実行するために必要とされるオペランドのための内部メモリスペースには、十分な空間がないかもしれない。したがって、これらのような内部メモリスペース限界が生じる場合、オペランドは、別のアクセス可能なメモリ領域にしばしば移動される。しかしながら、ある程度の後の時に、より速い内部メモリをオペランドに対して使用することは、望ましいかもしれない。
【０００５】
ソフトウェア・イメージ全体を記憶するために十分なメモリに関連する２レベルのメモリキャッシュは、メモリ管理を援助すること（またはメモリ管理に対する必要を除去すること）ができたが、例えばデジタルシグナルプロセッサ（ＤＳＰ）のようないくつかのマイクロプロセッサは、必ずしも、そのような２レベルのメモリキャッシュ・アーキテクチャを含むとは限らない。利用可能なメモリの量がソフトウェア・イメージ全体をロードするのに不十分な場合、メモリ管理は必要である。
【０００６】
ハードウェア・メモリ管理ソリューションは利用可能であるが、いくつかのアーキテクチャはそのようなハードウェアの使用を許可しない。ハードウェアが利用可能でない場合、あるタイプのメモリ管理は、オペレーティング・システムに、直ちに全体のメモリ領域を移動させる。全体のメモリスペースを移動させることに関する問題は、メモリーバス帯域幅が拘束として作用するであろうということである。追加の欠点は、ソフトウェアにおける待ち時間とより高い電源消費とを含む。
【０００７】
別のメモリ管理ソリューションは、あるタイプのメモリから別のものに実際に移動されるメモリの量を最小化する。このソリューションでは、実行するプロセスは、部分または「ｂｉｎ（ビン）」に分けられる。したがって、いくつかのｂｉｎだけおよび全体ではないプロセスは、新しい実行プロセスに対するスペースを作成するために、スワップアウトされることができる。
【０００８】
このｂｉｎｎｉｎｇの概念を使用する既知のオペレーティング・システムは、プロセスがサブプロセスをコールした場合にはいつも、典型的には２つのオペレーションを使用する。２つのオペレーションは、１）ロードサブプロセス、２）実行サブプロセス、である。既知の実行サブプロセス・オペレーションで、オペレーティング・システムのカーネル部分は、コールされたサブプロセスの全てのｂｉｎが現在駐在することを保証するために、メモリをチェックする。ロードされたサブプロセスのｂｉｎがスワップアウトされた可能性があるため、そのチェックは、サブプロセスをロードすることと、サブプロセスの実行を要求することとの間で、発生する。もし、呼び出されたサブプロセスのすべてのｂｉｎが駐在でない場合、対象のアドレスに他がなければ直ちに、また、対象のアドレスに現時点で駐在する任意のｂｉｎをスワップアウトした後に、カーネルは、内部メモリへそれぞれの非駐在のｂｉｎをスワップする。ｂｉｎがすでにメモリにあるかチェックするために必要とされる時間とリソースおよびその後の必要時のスワッピングは、システム・パフォーマンスを減少させる。サブプロセスが１行で２度コールされる場合、そのようなチェックはリソースの浪費である。
【概要】
【０００９】
システムと方法は、ある条件が満たされた場合に、サブプロセスが内部メモリに存在するか否かをカーネルが最初に判断する必要がなく、サブプロセスを実行する。ある実施形態において、条件のうちの１つは、サブプロセスが以前に内部メモリにロードされおよび実行されたとプログラマが判断することである。他の実施形態において、条件は、最後の実行と現在の実行リクエストとの間に、サブプロセスをコールするプロセスが任意の他のサブプロセスをコールしていないことをプログラマが保証したことである。さらに他の実施形態は、最後の実行と現在の実行リクエストの間に、システムが他のオーバーラップするサブプロセスをコールしていないことをプログラマが保証することである。
【００１０】
ある局面において、コンピュータ読み取り可能媒体は、サブプロセスの実行のためにコンピュータ・プログラムを記憶する。媒体は、オペレーティング・システム・カーネルが実行対象のサブプロセスが内部メモリに実際に存在するか否かを最初に判断することなく、サブプロセスを実行する高速実行サブプロセスコマンドを含む。
【００１１】
また、他の局面において、方法は、オペレーティング・システムにおいてサブプロセスを実行する場合にメモリを管理するために提供される。方法は、カーネルに、プロセッサの内部メモリに第１のサブプロセスをロードすることを命令することを含む。方法は、また、カーネルに、内部メモリにロードされた後に第１のサブプロセスを実行することを命令することを含む。カーネルは、第１のサブプロセスの実行前に第１のサブプロセスのｂｉｎの実在について内部メモリをチェックする。他のサブプロセスが第１のサブプロセスの実行終了後から実行されていない場合に、方法は、また、第１のサブプロセスのｂｉｎの実在について内部メモリをチェックすることなく、第１のサブプロセスを再実行するために高速サブプロセスをコールすることを含む。
【００１２】
また、他の局面において、デジタル・シグナル・プロセッサ（ＤＳＰ）は、ソフトウェア・イメージを記憶するための十分なメモリを欠いている。ＤＳＰは、内部メモリと、プロセッシング・ユニットを含む。プロセッシング・ユニットは、最初にサブプロセス命令が内部メモリに存在するか否かをチェックすることなく、プロセスによって呼び出されたサブプロセス命令を実行する。
【００１３】
さらなる局面において、コンピュータ読み取り可能媒体は、プロセスユニットを実行するためのコンピュータ・プログラム・コードを記憶する。媒体は、コールするプロセスによって呼び出されることに応じて、プロセスユニットを実行する高速実行コマンドを含む。媒体は、また、すべてのプロセスユニットが内部メモリにロードされたおよび実行されたときを書き留めるプロセスユニット追跡コードセグメントを含む。高速実行コマンドは、呼び出されるプロセスユニットが以前に内部メモリにロードされおよび以前に実行されたとプロセスユニット追跡コードセグメントが判断した場合に、使用される。
【００１４】
上記のものは、以下の発明の詳細な記述が一層よく理解されるように、本発明の特徴および技術的利点をやや広く概説した。本発明の追加の特徴および効果は、本発明の請求項の主題を形成する以下に記述されるだろう。開示された概念と特定の実施形態が、本発明の同じ目的を実行するための修正または他の構造の設計に対する根拠として、容易に利用されることは、当業者によって評価されるべきである。さらに、そのような等価な構造が、添付された請求項で示すような発明の趣旨および範囲からそれないことは、当業者によって理解されるべきである。本発明の特徴として考えられる新しい特徴は、その構成およびオペレーションの方法の双方に関して、さらなる目的および利点とともに、付随している図面と連結して検討された場合に、以下の記述からよりよく理解されるだろう。しかしながら、そのそれぞれの図面はただ例示および説明の目的で提供され、本発明の限定の定義として意図されない。
【図面の簡単な説明】
【００１５】
本発明のより完全な理解のために、添付の図面に関連して得られる以下の記述が今参考にされる。
【図１】図１は、発明の実施形態が有利に使用されることができる例示的な無線通信システムを示すブロック図である。
【図２】図２は、高速サブプロセスの実行のための例示的なロジック・フローを示すフローチャートである。
【詳細な説明】
【００１６】
図1は、発明の実施形態が有利に使用されることができる例示的な無線通信システム１００を示す。例示の目的として、図１は、３つのリモートユニット１２０，１３０，１５０および２つの基地局１４０を示す。典型的な無線通信システムが多くのさらなるリモートユニットおよび基地局を持つとしてもよいことが認識されるだろう。リモートユニット１２０，１３０，１５０は、それぞれ、以下で議論されるような本発明の実施形態に係る、リアルタイム・オペレーティング・システム（ＲＴＯＳ）を実行する改良されたマイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃを含む。図１は、基地局１４０とリモートユニット１２０，１３０，１５０からのフォワードリンク信号１８０と、リモートユニット１２０，１３０，１５０から基地局１４０へのリバースリンク信号１９０を示す。
【００１７】
図１において、リモートユニット１２０は、モバイル電話として示される。リモートユニット１３０は、ポータブルコンピュータとして示される。また、リモートユニット１５０は、無線ローカルループシステムにおける固定位置リモートユニットとして示される。
【００１８】
例えば、リモートユニットは、携帯電話、携帯型のパーソナル通信システム（ＰＣＳ）ユニット、パーソナルデータアシスタントのようなポータブルデータユニット、またはメータ読み取り設備のような固定位置データユニットでもよい。図１は、本発明の教えに係るリモートユニットを例示するが、本発明はこれらの典型的な例示されるユニットに限定されない。本発明は、マイクロプロセッサを含むあらゆるデバイスに適切に使用されてもよい。
【００１９】
マイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃは、実行されることが可能な命令のセットを含むことができ、これによりマイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃに、以下で説明される任意の１以上の方法またはコンピュータベースの機能を実行させることができる。
【００２０】
図１に例示されるように、リモートユニット１２０，１３０，１５０は、例えば、それぞれ、中央処理装置（ＣＰＵ）、グラフィックプロセッサユニット（ＧＰＵ）、またはデジタルシグナルプロセッサ（ＤＳＰ）のような、マイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃを含む。さらに、リモートユニット１２０，１３０，１５０は、バスを介して互いに通信可能な内部メモリおよび外部メモリを含むことができる。リモートユニット１２０，１３０，１５０は、液晶ディスプレイ（ＬＣＤ）、有機発光ダイオード（ＯＬＥＤ）、フラットパネル・ディスプレイ、ソリッドステート・ディスプレイ、または陰極線管（ＣＲＴ)のようなビデオディスプレイユニットをさらに含むとしてもよい。さらに、リモートユニット１２０，１３０，１５０は、キーボードのような入力装置、およびトラックボールのようなカーソル制御装置を含むとしてもよい。リモートユニット１２０，１３０，１５０は、また、ディスクドライブユニット、スピーカまたはリモートコントロールのような信号発生装置、および例えば無線トランシーバのようなネットワーク・インタフェース装置を含むことができる。
【００２１】
特定の実施形態において、図１に示されるように、ディスクドライブユニットは、命令の１以上のセット(例えばソフトウェア)が埋め込まれることができるコンピュータ読み取り可能媒体を含んでいてもよい。さらに、命令は、ここで説明されるような方法またはロジックのうちの１以上を具体化するとしてもよい。特定の実施形態において、命令は、マイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃによる実行の間、完全に、または少なくとも部分的に、内部メモリおよび／または外部メモリ内に属するとしてもよい。メモリは、コンピュータ読み込み可能媒体を含むとしてもよい。
【００２２】
プロセッサ１２５Ａ，１２５Ｂ，１２５Ｃのいずれかのような、マイクロプロセッサが、ソフトウェア・イメージを記憶するために、あまりにも小さい内部メモリを持つ場合、メモリ管理は、プログラマによって確立されたときのオペレーションの適切なシーケンスによってコントロールされる。例えば、ファームウエア・イメージがマイクロプロセッサの内部メモリより大きい場合、そのようなメモリ管理が発生する。プログラマは、本開示のメモリ管理特徴を含めるために、リアルタイム・オペレーティング・システム（ＲＴＯＳ）のような、コンピュータ・プログラムを設計する。メモリの管理の結果、コンピュータ・プログラムは、プログラムの実行のスリム化により、より効率的に実行することができる。トラッキングメモリ割り当てによって、プログラマは、コールされたサブプロセスがメモリに属するか否かを確認することが必要なときを決定し、適切なときに最適化されたサブプロセスコールを許可する。スリム化された実行は、高速サブプロセスとして言及されるだろう。ある実施形態において、マイクロプロセッサ１２５Ａ，１２５Ｂ，１２５Ｃは、デジタルシグナルプロセッサ（ＤＳＰ）である。
【００２３】
複数のプロセスは、独立してマルチタスキング環境で複数のプログラムを実行している。複数のプロセスは、別個のアプリケーションまたは単一アプリケーションのマルチインスタンスを表すことができる。それぞれのプロセスは、それ自身の個別の仮想アドレス空間を持ち、１以上のサブプロセスを含むことができる。
【００２４】
サブプロセスは、ユーザアプリケーションによってダイナミックにロードされ実行されるプロセスユニットである。サブプロセスは、ファンクションコールのように実行するが、それ自身のコンテキストを持ち、それ自身のメモリ空間でランする。概して言えば、プロセスレベル機能性は、１つのサブプロセス以上に分割される。
【００２５】
一旦ロードされると、サブプロセスは、そのコールするプロセスが実行しているときに、内部メモリに存在する必要がある。もし、サブプロセスが別のプロセスによってスワップアウトされる場合、カーネルは、コールするプロセスが起こされたときにそれを再ロードする。したがって、上で注記されたように、既存のサブプロセス実行では、カーネルは、サブプロセスを実行する前に、内部メモリに既に駐在であるか否かを、チェックする。
【００２６】
より具体的には、カーネルは、コールされるサブプロセスのセグメント(ｂｉｎ)がすべて内部メモリにロードされているか否か、チェックする。
【００２７】
本開示によれば、高速実行コマンド(すなわち、高速実行サブプロセス)は、ｂｉｎがメモリに存在するか否かチェックすることなく、コールされるサブプロセスを実行するために提供されることができる。換言すれば、実行コマンド処理は、スリム化されることができる。高速サブプロセス（すなわち、高速実行コマンドで実行されたサブプロセス)は、いくつかの条件が満たされたことを保証するために、アプリケーションまたはプログラマに依存する。したがって、一度コールされると、高速実行サブプロセスコマンドは、ｂｉｎチェックを実行することなく、コールされたサブプロセスを実行し、それにより実行時間パフォーマンスとサイクルオーバーヘッドを改善する。
【００２８】
高速サブプロセスのコール前に、プログラマは、サブプロセスの必要なｂｉｎが既にメモリにロードされるように、プログラムが設計されていることを保証する。ある実施形態において、プログラマの責任は、高速サブプロセスをコールする時点で、そのサブプロセスが以前にロードされおよび実行されたことを保証することである。プログラムは、また、実行するプロセスが他のサブプロセスをコールしていないことを保証するために書かれている。最後に、プログラマは、高速サブプロセスとオーバーレイされる他のサブプロセスが、全実行(実行するプロセスの内部からだけに限らず)の間に呼び出されないことを、保証する。もし、３つの条件がすべて満たされている場合、プログラムは、標準のサブプロセスよりもむしろ、高速サブプロセスを使用するために設計されることができる。
【００２９】
プログラマは、プロセスの使用モデルおよび全面的な実行プロファイルに基づいて、コールされるサブプロセスがロードされるか否か認識する。全面的な実行プロファイルから、プログラマは、他のサブプロセス(プロセスの外からの)が高速サブプロセスとオーバーレイするだろうか否か認識する。プログラマは、何がそれぞれのメモリ位置にあるか知るために、ローカルメモリマップを使用する。プロセスの使用モデルは、プログラマに、潜在的な高速サブプロセスの最後のローディングおよび実行から、プロセスがコールされる他のサブプロセスを持つか否か通知する。したがって、プロセス内で、プログラマは、さらにメモリマップを使用して、メモリにあるものの跡を追う。プログラマは、高速サブプロセスを使用してプログラムを設計する場合に、このすべてを考慮に入れる。
【００３０】
上に注記されるように、プログラマは、サブプロセスがメモリ中でどのように重複するか知っている。したがって、サブプロセスが最近ロードされたサブプロセスのｂｉｎをスワップアウトした場合のシナリオにプログラマが遭遇する場合、プログラマは、ｂｉｎがすべてメモリにあることを保証するためのノーマルのサブプロセス実行を要求する。しかし、プログラマがコールされたサブプロセスのｂｉｎがプッシュアウトされないことを知っている使用モデルでは、プログラマは高速サブプロセスを使用することができる。
【００３１】
明細書は条件が満たされたことを保証するプログラマについて論述するが、同様の決定は、プログラムの実行の間に発生可能である。この場合、サブプロセスが内部メモリにロードされおよび実行されるときに、オペレーティング・システムは追跡可能である。オペレーティング・システムが、呼び出されたサブプロセスが以前に内部メモリにロードされ、以前に実行されたと判断した場合、高速実行コマンドは、使用される。現在の高速実行コマンドの使用と、呼び出されたサブプロセスの以前のロード及び以前の実行との間に、他のサブプロセスが内部メモリにロードされておらずまたは実行されていないことが判断された場合、オペレーティング・システムは、高速サブプロセスを実行可能である。高速実行コマンドを使用するために、オペレーティング・システムは、また、以前に呼び出されたサブプロセスが、呼び出されるサブプロセスとオーバーラップしないことを保証するべきである。さらに別の実施形態では、コンパイラは解析を行なう。
【００３２】
ある実施形態において、高速サブプロセスは、複数のプロセスにわたって相互の排他を強制しない。すなわち、別のプロセスからの別のサブプロセスが、コールされるサブプロセスを持つメモリ中でオーバーラップするだろうか否かに関わらず、もし別のサブプロセスがコールされると、高速サブプロセスは使用されるべきでない。述べられる別の方法では、一旦高速サブプロセスがロードされれば、他のサブプロセスのいずれもがロードされるべきでない。別のサブプロセスが、高速サブプロセスを備えたベース及び長さレジスタとオーバーラップしてもしなくても、このことは真実である。
【００３３】
この実施形態において、カーネルは、すべてのロードされるサブプロセスのための複数のデータ構造の１セットを保守する。もし、あるサブプロセスがロードされ、次にカーネルが別のサブプロセスをロードすると、より後のサブプロセスはそれらの複数のデータ構造をオーバーライドする。この実施形態において、一旦データ構造が居住されると、それらは触れられることがなく、カーネルは、それらが正確であることを保証する必要はない。したがって、この実施形態において、他のサブプロセスがコールされていないことを保証することは、プログラマの責任である。
【００３４】
代替の実施形態において、他の相互の排他のサブプロセスは、高速サブプロセスを実行する前にコールされることができる。すなわち、もし、別のサブプロセスがコールされたが、その別のサブプロセスが高速サブプロセスのｂｉｎをスワップアウトしないであろう場合には、高速サブプロセスは、今までどおり使用されることが可能である。
【００３５】
ある実施形態において、高速サブプロセスは、サブプロセスのすべてを実行する。別の実施形態において、高速サブプロセスは、サブプロセスのうちのいくつかだけを実行する。換言すれば、あるサブプロセスは高速サブプロセスとすることができ、別のサブプロセスはノーマルのサブプロセスとすることができる。
【００３６】
今、図２を参照すると、プロセス２００が高速サブプロセスを実行するための例示のロジック・フローであることが記述されるだろう。最初に、プロセス２０１は、現在実行するプロセスの位置を記憶する。ある実施形態において、プログラムカウンタ（アドレス）は、実行するプロセスに対するプロセス制御ブロック内に保存される。位置ストレージは、サブプロセスが実行を終えた後、正しい位置に対するリターンを可能にするだろう。
【００３７】
プロセス２０２は、現在実行するプロセスのサブプロセスのリストを格納する。換言すれば、現在のサブプロセスは、システムにおける複数の実行するサブプロセスのうちの１つとしてセットされる。リストのストレージは、スケジューラが、必要ならば、サブプロセスに属するｂｉｎをスワップアウトすべきか否か決定することを可能にする。もし、スケジューラがコールされると、スケジューラは、サブプロセスによって所有されるｂｉｎがすべて内部メモリにあるかチェックすることができる。そうでなければ、スケジューラは、外部メモリからの適切なｂｉｎをスワップインすることができる。
【００３８】
より高い優先度のサブプロセスが呼び出される場合、または優先権を比較することができるように別のサブプロセスがコールされる場合、リストは使用されることができる。さらに、もし、あるデータまたはタイマが期待される間にサブプロセスが待ち状態に入ると、異なるプロセスまたはサブプロセスが実行可能である。スケジューラは、オリジナルのプロセスに返る場合に、もしそれがサブプロセスを実行している場合、サブプロセスのｂｉｎがスワップインされるべきであることを保証する。
【００３９】
プロセス２０３は、他のプロセスとともにサブプロセスの共有を許可するサブプロセスの親として、現在の実行するプロセスをセットする。プロセス２０３は図２に描かれるが、そのようなプロセスは、プロセス２００の全体の機能性に影響することなく、容易に省略させることができた。別の実施形態においては、プロセス２０３を実行するか否かに関する決定が、ダイナミックに発生する。すなわち、共有が発生する場合、プロセス２０３は実行する。共有が発生しない場合、プロセス２０３は省略される。
【００４０】
プロセス２０４は、サブプロセスに対するベースおよび長さレジスタの値を、現在実行するプロセスのプロセス制御ブロックにコピーする。ベースおよび長さレジスタの値は、例えば、外部メモリのような、それらのストレージ位置からコピーされる。プロセス制御ブロック内のこれらの値は、その後、サブプロセスのコンテキストをセット・アップするために使用される。ベースおよび長さレジスタの値は、メモリ管理とプロテクションのためにマイクロプロセッサ内にセットされる。
【００４１】
プロセス２０５は、ベースおよび長さレジスタの値にしたがってマイクロプロセッサレジスタをセットする。これらの値は次に実行されるプロセスのプロセス制御ブロックから得られる。
【００４２】
最後に、プロセス２０６は、サブプロセス・エントリポイントに対する制御を通過する。ある実施形態において、その制御は、サブプロセスのエントリポイントがプロセス２０３においてプッシュされたスタックのトップへのＲＴＩ（割り込みからのリターン）とともに通過される。本開示によれば、スケジューラへのジャンプはこの時点で発生しない。したがって、チェックもｂｉｎのスワッピングも、サブプロセスの実際の実行に先立って発生しない。
【００４３】
ある実施形態では、高速サブプロセスおよび標準のサブプロセスは、共通コードを含む。高速サブプロセスが呼び出される場合、フラグは同じことを示す設定である。異なるコードは、フラグがセットされるか否かに基づいて実行される。例えば、プロセス２０６は、直接サブプロセスにむけて、高速サブプロセスをジャンプする。その時の標準のサブプロセスでは、スケジューラはコールされるだろう。したがって、チェックは、(フラグに基づいて)高速サブプロセスが呼び出されたか否か確かめるために行われる。もしそうであれば、プロセス２０６が実行する。もしそうでなければ、標準のサブプロセスが実行する。
【００４４】
したがって、本開示は、不必要なオーバヘッドを引き起こすことなく、サブプロセスを実行するために効率的な解決策を提供する。
【００４５】
代替的な実施形態において、特定用途向け集積回路、プログラマブル・ロジック・アレイおよび他のハードウェアデバイスのような専用ハードウェア実装は、ここに記述された方法の１以上を実装するために構築されることができる。
【００４６】
様々な実施形態の装置およびシステムを含むとしてもよいアプリケーションは、広く様々な電子およびコンピュータ・システムを含むことができる。ここで記述された１以上の実施形態は、複数のモジュールの間および通過で通信されることが可能な関連される制御およびデータ信号を備えた２以上の特定の相互に連結されたハードウェア・モジュールまたはデバイスを使用して、または、アプリケーション特定の集積回路の部分として、機能を実行してもよい。したがって、本システムは、ソフトウェア、ファームウェア、およびハードウェア実装を包含する。
【００４７】
本開示の様々な実施形態にしたがって、ここで記述された方法は、コンピュータ・システムによって実行可能なソフトウエアプログラムによって実現されてもよい。さらに、例示において、制限しない実施形態では、実行は、分散処理、コンポーネント/オブジェクト分散処理、および並行処理を含むことができる。あるいは、仮想コンピュータ・システム処理は、ここで記述されるような方法または機能性の１以上を実行するために構築されることができる。
【００４８】
本開示は、命令を含むコンピュータ読み取り可能媒体を熟考し、または、ネットワークに接続された装置がネットワークを越えてボイス、ビデオまたはデータを通信することができるように、指示を受信および実行する。さらに、命令は、ネットワークを通して、ネットワーク・インタフェース装置経由で、送信または受信されてもよい。
【００４９】
コンピュータ読み取り可能媒体が単一の媒体として示されている場合、用語「コンピュータ読み取り可能媒体」は、集中型または分散データベースのような単一の媒体または複数の媒体、および／または、結合されているキャッシュ、および、命令の１以上のセットを記憶するサーバを含む。用語「コンピュータ読み取り可能媒体」は、また、プロセッサによる実行のための命令のセットを記憶、エンコーディング、または運搬することが可能な、または、コンピュータ・システムに、ここで説明された任意の１以上の方法またはオペレーションを実行させる、任意の媒体を含むだろう。
【００５０】
特定の非限定において、例示の実施形態では、コンピュータ読み取り可能媒体は、メモリーカード、または１以上の不揮発性リード・オンリー・メモリを収容する他のパッケージのような、ソリッドステートメモリを含むことができる。さらに、コンピュータ読み取り可能媒体は、ランダム・アクセス・メモリまたは他の揮発性の再書き込み可能メモリであることができる。さらに、コンピュータ読み取り可能媒体は、送信媒体上を通じて通信されたデータを捕らえるためのディスクまたはテープまたは他の記憶装置のような、マグネト光学または光学媒体を含むことができる。電子メールまたは他の自己に含まれている情報アーカイブまたはアーカイブのセットのディジタルファイル添付は、具体的な記憶媒体と等価な分布媒体と考えられてもよい。したがって、本開示は、データまたは命令が記憶されることができるコンピュータ読み取り可能媒体または分布媒体および他の同等および後継の媒体のうちの任意の１以上を含むと考えられる。
【００５１】
本発明とその利点は詳細に記述されたが、添付された請求項によって定義されるような発明の趣旨および範囲から外れることなく、様々な変更、代用および代替は、ここで行なうことができることは理解されるべきである。例えば、ロジックはサブプロセスの呼び出しに関して記述されたが、ロジックはプロセスの呼び出しに関して適用を持つことは想像される。さらに、本出願の範囲は、明細書に記述されたプロセス、マシン、製造、合成物、手段、方法およびステップの特定の実施形態に制限されることは意図されない。当業者の一人が本発明、プロセス、マシン、製造、合成物、手段、方法あるいはステップの開示から容易に認識する場合、ここで記述された対応する実施形態と実質的に同じ機能を実行しまたは実質的に同じ結果を達成する現存在または開発された後のものは、本発明にしたがって利用されてもよい。したがって、添付された請求項は、それらの範囲内にそのようなプロセス、マシン、製造、合成物、手段、方法あるいはステップを含むように意図される。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
［１］
サブプロセスを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能媒体において、
オペレーティング・システム・カーネルが最初に実行対象の前記サブプロセスが内部メモリに存在するか判断することなく、前記サブプロセスを実行する、高速実行サブプロセス命令を具備する、媒体。
［２］
前記高速実行サブプロセス命令は、前記サブプロセスが以前に前記内部メモリにロードされおよび以前に実行された場合に、実行する、［１］の媒体。
［３］
前記高速実行サブプロセス命令は、前記高速サブプロセス命令のコールと前記サブプロセスの前のローディングおよび前の実行との間に、他のサブプロセスが前記内部メモリにロードされていないまたはコールするプロセスによって実行されていない場合に、実行する、［１］の媒体。
［４］
前記高速実行サブプロセス命令は、システムが、前記サブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、実行する、［１］の媒体。
［５］
前記カーネルが内部メモリに前記サブプロセスをロードし前記サブプロセスを実行する実行サブプロセス命令をさらに具備し、
前記カーネルは、前記カーネルが前記サブプロセスが前記内部メモリに存在することを確認した後に、前記サブプロセスを実行する、［１］の媒体。
［６］
前記カーネルは、リアルタイム・オペレーティング・システム（ＲＴＯＳ）カーネルである、［５］の媒体。
［７］
前記カーネルは、前記サブプロセスの実行前に、内部メモリに存在しない前記サブプロセスのセグメントをスワップインする、［５］の媒体。
［８］
前記高速実行サブプロセス命令は、システム全体の中の実行するサブプロセスとして前記サブプロセスを指し示す、［１］の媒体。
［９］
前記高速実行サブプロセス命令は、前記サブプロセスを呼び出すプロセスのプロセス制御ブロックに、ベースおよび長さレジスタの値をコピーする、［１］の媒体。
［１０］
前記高速実行サブプロセスコードセグメントが呼び出された場合に、フラグをセットするためのコードをさらに具備し、
前記フラグは、特定の高速実行サブプロセス命令、またはノーマルの実行サブプロセス命令が実行されるかを示す、［１］の媒体。
［１１］
オペレーティング・システムにおいてサブプロセスを実行する場合にメモリを管理するための方法において、
カーネルに、プロセッサの内部メモリに第１のサブプロセスをロードすることを命令すること、
前記カーネルに、前記内部メモリにロードされた後に前記第１のサブプロセスを実行することを命令し、前記カーネルは、前記第１のサブプロセスの実行前に前記第１のサブプロセスのｂｉｎの実在について前記内部メモリをチェックすること、
他のサブプロセスが、前記第１のサブプロセスの実行終了後から、コールするプロセスによって実行されていない場合に、前記第１のサブプロセスのｂｉｎの実在について前記内部メモリをチェックすることなく、前記第１のサブプロセスを再実行するために高速サブプロセスをコールすること
を具備する、方法。
［１２］
前記プロセッサは、デジタル・シグナル・プロセッサ（ＤＳＰ）である、［１１］の方法。
［１３］
前記ＤＳＰは、少なくとも一つのファームウェアより小さいメモリの量を持つ、［１２］の方法。
［１４］
前記高速サブプロセスをコールすることは、前記高速サブプロセスをコールするプロセスが、前記第１のサブプロセスの最後の実行から、他のサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、［１１］の方法。
［１５］
前記高速サブプロセスをコールすることは、システムが、前記第１のサブプロセスを実行してから、オーバーラップするサブプロセスをコールしていない場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、［１１］の方法。
［１６］
前記高速サブプロセスをコールすることは、他のサブブロセスが、前記第１のサブプロセスを実行して以来、ロードされなかったまたは実行されなかった場合にのみ、前記高速サブプロセスをコールすることをさらに具備する、［１１］の方法。
［１７］
内部メモリと、
最初に第１のサブプロセスの命令が前記内部メモリに存在するか否かをチェックすることなく、プロセスによってコールされた前記第１のサブプロセス命令を実行するプロセッシング・ユニットと
を具備する、デジタル・シグナル・プロセッサ（ＤＳＰ）。
［１８］
前記プロセッサは、前記内部メモリに前記第１のサブプロセス命令をロードするカーネル命令を実行し、前記第１のサブプロセス命令が前記内部メモリに存在することを確認した後、前記第１のサブプロセスを実行する、［１７］のデジタル・シグナル・プロセッサ（ＤＳＰ）。
［１９］
前記プロセッサは、前記カーネルが以前に内部メモリに前記サブプロセス命令をロードしており、以前に前記サブプロセス命令を実行した場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を続いて実行する、［１８］のデジタル・シグナル・プロセッサ（ＤＳＰ）。
［２０］
前記プロセッサは、前記サブプロセス命令の以前の実行と前記サブプロセス命令の現在の実行との間に、他のサブプロセス命令が、コールするプロセスによって前記内部メモリにロードされず、実行されなかった場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を実行する、［１７］のデジタル・シグナル・プロセッサ（ＤＳＰ）。
［２１］
前記プロセッサは、前記第１のサブプロセス命令の以前の実行と前記第１のサブプロセス命令の現在の実行との間に、オーバーラップするサブプロセス命令が、前記内部メモリにロードされなかった場合にのみ、最初に前記第１のサブプロセス命令が前記内部メモリに存在するか否かをチェックすることなく、前記第１のサブプロセス命令を実行する、［１７］のデジタル・シグナル・プロセッサ（ＤＳＰ）。
［２２］
プロセスユニットを実行するためのコンピュータ・プログラム・コードを記憶するコンピュータ読み取り可能媒体において、
コールするプロセスによって呼び出されることに応じて、前記プロセスユニットを実行する高速実行コマンドと、
すべてのプロセスユニットが内部メモリにロードされた、および実行されたときを書き留めるプロセスユニット追跡コードセグメントと、
を具備し、前記高速実行コマンドは、前記呼び出されるプロセスユニットが以前に前記内部メモリにロードされおよび以前に実行されたと前記プロセスユニット追跡コードセグメントが判断した場合に、使用される、媒体。
［２３］
前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他のプロセスユニットが、前記高速実行コマンドの現在の使用と前記呼び出されるプロセスユニットの以前の実行との間に、前記内部メモリにロードされまたは実行されなかったと判断した場合に、使用される、媒体。
［２４］
前記高速実行コマンドは、前記プロセスユニット追跡コードセグメントが、他の以前に呼び出されたプロセスユニットが前記呼び出されるプロセスユニットとオーバーラップしないと判断した場合に、使用される、媒体。
［２５］
前記高速実行コマンドおよび前記プロセスユニット追跡コードセグメントオペレーティング・システムの一部である、［２２］の媒体。
【図１】
0005389899.tif 000002
【図２】
0005389899.tif 000003