(57)【要約】本発明は、プロセス間でコンテキストを切り替えるオペレーティングシステム命令を受けるように構成されるプロセッサ及びキャッシュメモリを含み、プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、キャッシュデータをメモリ手段に書き戻す制御手段を含むコンピュータ実行システムのための方法及び装置を提供し、これによれば、コンテキスト切り替えの開始時に、キャッシュされたデータが既にメモリに書き戻されているため、動作速度が向上する。
2005521937.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュされたデータをメモリ手段に書き戻すコンピュータオペレーティングシステムにおいて、
プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、前記キャッシュされたデータを前記メモリ手段に書き戻すステップを含む、
プロセス間でコンテキストを切り替える方法。
【請求項２】
前記プロセスの終了の後に、キャッシュされたデータがメモリに書き戻されたことを示すフラグをセットするステップを含む、請求項１に記載の方法。
【請求項３】
コンテキスト切り替えを要求する時点で、先のプロセスでのキャッシュされたデータがメモリに書き戻されたかどうかを確認するために前記フラグをチェックするステップを含む、請求項２に記載の方法。
【請求項４】
前記フラグがセットされていることを確認して、さらにキャッシュをメモリに書き戻すことなく、前記コンテキスト切り替えを実行するステップを含む、請求項３に記載の方法。
【請求項５】
前記フラグがセットされていることが確認されなかった場合、コンテキスト切り替えを要求する時点でキャッシュされたデータのメモリへの書き戻しを実行するステップを含む、請求項３に記載の方法。
【請求項６】
プロセス間でコンテキストを切り替えるオペレーティングシステム命令を受けるように構成されるプロセッサ及びキャッシュメモリを含み、
プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、キャッシュデータをメモリ手段に書き戻す制御手段を含む、
コンピュータを用いたシステム。
【請求項７】
スリープ期間中にキャッシュデータをメモリに自動的に書き戻すためプロセッサスリープモードを利用するように構成された、請求項６に記載のシステム。
【請求項８】
ＣＰＵスリープ動作中にデータキャッシュの書き戻しを示すフラグを有する状態レジスタを含む、請求項６に記載のシステム。
【請求項９】
前記オペレーティングシステムにデータキャッシュを書き戻すための付加的なスリープコード命令が備わる、請求項６に記載のシステム。
【請求項１０】
前記プロセッサの前記スリープコードは付加的なデータキャッシュ書き戻し命令を含む、請求項９に記載のシステム。
【請求項１１】
プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、キャッシュされたデータをメモリ手段に書き戻すように、コンピュータオペレーティングシステムにおいてプロセッサ間のコンテキスト切り替えを制御する、コンピュータプログラム命令を含むコンピュータプログラムプロダクト。
【請求項１２】
請求項２から５のいずれか一項以上に記載された方法の実行を制御するための命令を含む、請求項１１に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータオペレーティングシステムにおけるコンテキスト切り替えの方法及び装置に関する。
【背景技術】
【０００２】
オペレーティングシステムは、システムのプロセッサ稼働率を高めるためにコンピュータシステム内で使用される。プロセッサと、例えば、入出力装置との間の動作速度の差を考慮して、オペレーティングシステムは、プロセッサにスケジュールの指示を行うことによって、プロセッサがその高速な動作速度によって休止状態となる時間を制限する。
【０００３】
マルチタスキング、及びマルチスレッディングの開発と共に、オペレーティングシステムによって処理されるべき割込の数は増加し、それに応じて異なるプロセス間の頻繁なコンテキスト切り替えが必要になる。
【０００４】
例えば、ＵＮＩＸライクなカーネルでは、実行中プロセス間の切り替えはできるだけ速くすべきであり、できるだけ最低限のプロセッササイクルを利用すべきである。しかし、新プロセスへのコンテキスト切り替えの前に、先の実行中プロセスのキャッシュされたデータは、キャッシュの内容とメモリの内容との間の整合性を保つためメモリに書き戻される。コンテキスト切り替えが実施されるべきであることが確認されると、キャッシュされたデータをメモリに書き戻すために要する時間は、コンテキスト切り替えを実行するために要する総時間に対して不利な制限となる。
【０００５】
例えば、米国特許出願公開第６  ００６  ３２０号に記載されているように、コンテキスト切り替え時間を短縮する試みがなされている。この場合、二重算術論理ユニット、命令及びデータキャッシュ、レジスタセット、ならびに、ロード／ストアユニットがコンテキスト切り替えプロセスを高速化するため設けられる。しかし、この問題に対するこのようなアプローチは、上記のハードウェアの重複を必要とする点で不利であると考えられ、不必要に複雑であることがわかる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、本発明は、コンテキスト切り替え時間遅延の問題に対する簡易な解決法の提供を目的とする。
【課題を解決するための手段】
【０００７】
本発明のある特徴によれば、キャッシュされたデータをメモリ手段に書き戻すコンピュータオペレーティングシステムにおいて、プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、前記キャッシュされたデータを前記メモリ手段に書き戻すステップを含む、プロセス間でコンテキストを切り替える方法が提供される。
【０００８】
本発明は、アイドルループを利用し、例えば、実行可能なプロセスが一旦完了し、プロセッサが入力／出力動作の完了のような次のイベントの発生を待機する間に、プロセッサがそのアイドルループに入る点で有利である。このようなアイドルループ中に、使われないプロセッササイクルが浪費されるが、本発明はキャッシュされたデータをメモリに書き戻すためこのようなサイクルを有利に利用する。
【０００９】
したがって、あるプロセスの終わりに、キャッシュされたデータは、ある程度自動的にメモリに書き戻されるので、コンテキスト切り替えが必要であるならば、コンテキスト切り替えを開始する前に、最初に、キャッシュされたデータをメモリに書き戻す必要がない。これは、オペレーティングシステムにおけるコンテキスト切り替えのため必要な切り替え時間を実質的に増加させることができる。
【００１０】
請求項２の特徴は、コンテキスト切り替えが必要であるか否かに応じて適切な後続の制御ステップへつながるように、キャッシュされたデータの書き戻しが行われたことを示す効率的な手段を提供する点で有利である。
【００１１】
請求項３から５の主題は、必要に応じて適当なプロセス切り替えの方式へつながるように、特に効率的な形で請求項２の主題をさらに適合させる点で有利である。
【００１２】
本発明の他の特徴によれば、プロセス間でコンテキストを切り替えるオペレーティングシステム命令を受けるように構成されるプロセッサ及びキャッシュメモリを含み、プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、キャッシュデータをメモリ手段に書き戻す制御手段を含むコンピュータを用いたシステムが提供される。
【００１３】
本発明のさらなる特徴によれば、プロセスの終了時及びコンテキスト切り替えの開始前のプロセッサアイドルサイクル中に、キャッシュされたデータをメモリ手段に書き戻すように、コンピュータオペレーティングシステムにおいてプロセッサ間のコンテキスト切り替えを制御する、コンピュータプログラム命令を含むコンピュータプログラムプロダクトが提供される。
【００１４】
したがって、本発明は、上記の問題に対するソフトウェア又はハードウェアによる解決法として提供されることがわかるであろう。
【発明を実施するための最良の形態】
【００１５】
以下、一例として添付図面を参照して本発明をさらに説明する。
【００１６】
本発明は、キャッシュされたデータを直前の実行中プロセスのメモリに書き戻すためアイドリング時間を使用し、これにより、プロセス切り替え時点でこの動作の時間的な不利益を排除することを提案する。キャッシュされたデータがメモリに書き戻されると、それが実行されたことを示すため、そのプロセスについてのフラグがセットされる。
【００１７】
実行可能なプロセス間の切り替えが行われるとき、直前の実行可能なプロセスのフラグは、そのキャッシュされたデータがＣＰＵのアイドル中に書き戻されたかどうかを調べるためチェックされ、もしフラグがセットされているならば、切り替えのためにキャッシュを書き戻す必要がない。しかし、ＣＰＵがアイドル状態へ入らず、このために直前の実行可能なプロセスのフラグがセットされていないならば、プロセス切り替え動作のためにキャッシュを書き戻すことが必要である。
【００１８】
これにより得られる効果は、特に定まっていないＣＰＵアイドル時間を有するシステムでは、プロセス間の切り替えはより高速であり、ユーザに対するシステムの応答性がより良くなる。現在の高速プロセッサであれば、プロセッサのアイドル時間は、最も適度にロードされたシステムに利用できる。プロセッサのアイドル時間は、プロセッサが入力／出力ステップを使用しているとき、及び、プロセッサがこれらのトランザクションの完了を待機しているときに発生する。
【００１９】
図１は、現在プロセス１０がステップ１２で再スケジュールされる本発明の一実施例を説明するフローチャートである。ステップ１４で、次の実行可能プロセスの検索が行われ、一つのプロセスが見つけられたならば、先の実行中プロセスのフラグがセットされているかどうかを確認するためのチェックがステップ１６で行われる。フラグがセットされていないならば、ステップ１８で先の実行中プロセスのキャッシュのコピーを戻すことが決定され、ステップ１４で特定された次の実行可能プロセスのフラグがステップ２０でクリアされる。ステップ１４で、先の実行中プロセスのフラグがセットされていると判定された場合、この方法はそのままステップ２０に進む。ステップ２２において、新プロセスへのコンテキスト切り替えが行われ、ステップ２４において、新プロセスは現在実行中プロセスになる。
【００２０】
ステップ１４へ戻ると、次の実行可能プロセスが見つからなかった場合、この方法は、先の実行中プロセスのフラグがセットされているかどうかをチェックする。フラグがセットされていないならば、キャッシュされたデータはステップ２８でコピーして戻され、先の実行中プロセスのプロセス識別子にステップ３０でフラグがセットされる。次に、ステップ３２において、例えば、割込が発生し、この方法がアイドルループの一部としてステップ１４へ戻るまで、スリープモードへ入る。
【００２１】
ステップ２６において、先の実行中プロセスのフラグがセットされていると判定された場合、この方法は、例示されているようにステップ３０に進む。
【００２２】
図２は、本発明を具現化し、オペレーティングシステムカーネル３６及びユーザモードプロセス３８を含むコンピュータシステム３４を説明する。ユーザモードプロセスは３つのプロセス４０、４２及び４４を含み、このシステムは、スケジューラ４４がプロセス４２へ再スケジュールするようにプロセス４０がブロックされている例を示す。実行可能プロセスのそれぞれは、それぞれのフラグ４６ａ、４８ａを有する実行可能プロセスリスト４６、４８と関連付けられる。図２に例示された構成は、例えば、プロセス間のコンテキスト切り替えと、実行可能プロセス識別子リストが実行可能プロセスを識別するために指示する方式とを例示するためのものである。
【００２３】
最後に、図３は、コンピュータシステム５６のＣＰＵ５０、データキャッシュ５２及びメモリ５４を例示し、特に、キャッシュされたページ５８−６２が、本発明に基づいてメモリのそれぞれのメモリロケーション６４−６８に書き戻される方法を例示する。データキャッシュページ５８−６２は、プロセスのフラグがセットされていない場合にメモリ５４に書き戻されることがわかるであろう。
【００２４】
フィリップス製ＴｒｉＭｅｄｉａ  １３００（外部メモリ管理ユニット付き）プロトタイプボード上の解析により、典型的な１Ｍｂのユーザモードアプリケーションは、プロセスのデータキャッシュをメモリに書き戻すために、全コンテキスト切り替え時間の約３０から５０％である約６０００から７０００ＣＰＵサイクルを要することがわかった。データキャッシュがＣＰＵアイドル時間中にメモリに書き戻されるならば、コンテキスト切り替え時間はこの３０から５０％のオーバーヘッドが減少し、コンテキスト切り替え速度が殆ど２倍になる。勿論、これらの数字は、アプリケーションのサイズとキャッシュされたメモリ領域の数とに応じて変化することがわかる。
【００２５】
本発明は、レベル１又はレベル２キャッシュと共にプロセッサを使用するＬｉｎｕｘ（登録商標）、ＦｒｅｅＢＳＤ（登録商標）、Ｓｏｌａｒｉｓ（登録商標）等のようなＵＮＩＸ（登録商標）ライクなシステムに特に用途がある。このようなＵＮＩＸライクなシステムのすべては、事実上浪費されたＣＰＵサイクルを利用するアイドルループ又はアイドルプロセスを有し、最新型のプロセッサは、プロセッサ内に、又は、プロセッサと主メモリとの間に、ある形式のメモリキャッシュを搭載する。
【００２６】
したがって、本発明は、殆どの最新のコンピュータオペレーティングシステムで使用することが可能である。
【００２７】
上述のように、本発明は従来技術の問題に対するソフトウェア又はハードウェアの解決法を含む。この着想がハードウェアで実施された場合、種々の方法のうちの一つが使用され得る。例えば、ＣＰＵスリープモードは、スリープ期間中に自動的なデータキャッシュ書き戻しのため利用できる。また、状態レジスタの「スリープ中のデータキャッシュのフラッシュ」フラグは、データキャッシュ書き戻しを実行するためＣＰＵスリープ動作を知らせるために利用できる。さらに、通常のスリープオペコードの他に、データキャッシュ書き戻しを実行する特別なスリープオペコードを追加することができる。データキャッシュ書き戻しオペランドのＣＰＵスリープオペコードへの追加は、また、オプションである。
【００２８】
したがって、明らかではあるが、本発明は、コンピュータオペレーティングシステムにおけるコンテキスト切り替えを加速し簡素化するためプロセッサアイドル時間を有利に利用する。本発明は、キャッシュされたデータをメモリに書き戻すための一般的な要求に起因して生じる、実行可能なプロセス／タスク間の比較的遅いコンテキスト切り替え速度の問題を解決する。従来技術では、このキャッシュされたメモリの書き戻しは実際のコンテキスト切り替えの時点で行われるので、オペレーティングシステムのアイドルループにおいて本発明の他では使われなかったプロセッササイクルを利用することは、コンテキスト切り替えを開始する時点で、キャッシュされたデータが既にメモリに書き戻されているため、動作速度を高めるために有利に作用する。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施例によるコンテキスト切り替え動作のフローチャートである。
【図２】本発明の一実施例によるオペレーティングシステム及び関連した制御手段を含むコンピュータシステムの概略ブロック図である。
【図３】本発明を具現化し、キャッシュされたページの転送を説明するコンピュータシステムの概略ブロック図である。
【図１】
2005521937.tif 000003
【図２】
2005521937.tif 000004
【図３】
2005521937.tif 000005
【国際調査報告】
2005521937.tif 000006
2005521937.tif 000007