(57)【特許請求の範囲】
【請求項１】
オペレーティングシステム（ＯＳ）によりスケジューリングされＯＳ可視シーケンサで実行中のＯＳスレッドに基づき、命令セットエクステンションを用いて、前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作と独立してＯＳ分離シーケンサで実行されるユーザレベルスレッドである持続的なユーザレベルスレッドを生成する段階
を備え、
前記ＯＳは、前記持続的なユーザレベルスレッドの命令に対してスケジューリングを行わず、
前記持続的なユーザレベルスレッドは、前記ＯＳによりスケジューリングされるスレッドがコンテキストスイッチされた時でも前記ＯＳ分離シーケンサで動作を継続し、
前記持続的なユーザレベルスレッドは、前記ＯＳ可視シーケンサで実行される別のユーザレベルスレッドから生成される
方法。
【請求項２】
前記持続的なユーザレベルスレッドを前記ＯＳ分離シーケンサで実行する段階
をさらに備える請求項１に記載の方法。
【請求項３】
前記ＯＳによりスケジューリングされるスレッドおよび前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
請求項１または２に記載の方法。
【請求項４】
前記持続的なユーザレベルスレッドの実行中にＯＳによる処理を必要とするイベントが発生した場合に、前記持続的なユーザレベルスレッドの実行を一時中断する段階
をさらに備える請求項１から３のいずれかに記載の方法。
【請求項５】
別のＯＳ可視シーケンサで実行されるサービススレッドに、前記一時中断された持続的なユーザレベルスレッドに対して、ＯＳサービスを提供させる段階
をさらに備える請求項４に記載の方法。
【請求項６】
前記サービススレッドおよび前記持続的なユーザレベルスレッドは、同じアプリケーションのコンテキストで実行される
請求項５に記載の方法。
【請求項７】
前記持続的なユーザレベルスレッドに対してＯＳサービスを提供する段階は、
前記別のＯＳ可視シーケンサに対して、制御移行命令を伝える段階と、
前記制御移行命令を特権レベルで実行する段階と
を有する請求項５または６に記載の方法。
【請求項８】
前記特権レベルにはＲｉｎｇ  ０レベルが含まれる
請求項７に記載の方法。
【請求項９】
前記持続的なユーザレベルスレッドに対してＯＳサービスを提供する段階は、
前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させる段階と、
前記持続的なユーザレベルスレッドに対して代理実行を行う段階と、
前記持続的なユーザレベルスレッドに実行後状態を戻す段階と
を有する請求項５から８のいずれかに記載の方法。
【請求項１０】
前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開する段階
をさらに有する請求項９に記載の方法。
【請求項１１】
前記サービススレッドは、前記持続的なユーザレベルスレッドと共有している仮想アドレス空間を通じて前記持続的なユーザレベルスレッドの状態を取得する
請求項９または１０に記載の方法。
【請求項１２】
前記持続的なユーザレベルスレッドは、当該ユーザレベルスレッドを生成したスレッドである前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作と独立して、動作を継続する
請求項１から１１のいずれかに記載の方法。
【請求項１３】
前記命令セットエクステンションは、前記ＯＳ可視シーケンサおよび前記ＯＳ分離シーケンサを識別するオペランドを持つ命令を含む
請求項１から１２のいずれかに記載の方法。
【請求項１４】
ＯＳによりスケジューリングされＯＳ可視シーケンサで実行中のスレッドに基づき、命令セットエクステンションを用いて、前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作とは独立してＯＳ分離シーケンサで実行されるユーザレベルスレッドである持続的なユーザレベルスレッドを生成するシーケンサマネージャ
を備え、
前記ＯＳは、前記持続的なユーザレベルスレッドの命令に対してスケジューリングを行わず、
前記持続的なユーザレベルスレッドは、前記ＯＳによりスケジューリングされるスレッドがコンテキストスイッチされた時でも前記ＯＳ分離シーケンサで動作を継続し、
前記シーケンサマネージャは、前記ＯＳ可視シーケンサで実行される別のユーザレベルスレッドから前記持続的なユーザレベルスレッドを生成する
装置。
【請求項１５】
前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作とは独立して前記持続的なユーザレベルスレッドを実行する前記ＯＳ分離シーケンサ
をさらに備える請求項１４に記載の装置。
【請求項１６】
前記ＯＳによりスケジューリングされるスレッドおよび前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
請求項１４または１５に記載の装置。
【請求項１７】
前記シーケンサマネージャは、前記持続的なユーザレベルスレッドの実行中にＯＳによる処理を必要とするイベントが発生した場合に、前記持続的なユーザレベルスレッドの実行を一時中断する
請求項１４から１６のいずれかに記載の装置。
【請求項１８】
前記シーケンサマネージャは、別のＯＳ可視シーケンサで実行されるサービススレッドに、前記持続的なユーザレベルスレッドに対してＯＳサービスを提供させる
請求項１４から１７のいずれかに記載の装置。
【請求項１９】
前記サービススレッドと前記持続的なユーザレベルスレッドは、同じアプリケーションのコンテキストで実行される
請求項１８に記載の装置。
【請求項２０】
前記シーケンサマネージャは、前記別のＯＳ可視シーケンサに対して、制御移行命令を伝え、前記制御移行命令を特権レベルで実行させる
請求項１８または１９に記載の装置。
【請求項２１】
前記シーケンサマネージャは、前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させ、前記持続的なユーザレベルスレッドに対して代理実行を行い、前記持続的なユーザレベルスレッドに実行後状態を戻す
請求項１８から２０のいずれかに記載の装置。
【請求項２２】
前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開する
請求項２１に記載の装置。
【請求項２３】
前記サービススレッドは、前記持続的なユーザレベルスレッドと共有している仮想アドレス空間を通じて前記持続的なユーザレベルスレッドの状態を取得する
請求項２１または２２に記載の装置。
【請求項２４】
前記ＯＳ分離シーケンサは、前記持続的なユーザレベルスレッドを生成したスレッドである前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作と独立して、前記持続的なユーザレベルスレッドの動作を継続させる
請求項１４から２３のいずれかに記載の装置。
【請求項２５】
前記命令セットエクステンションは、前記ＯＳ可視シーケンサおよび前記ＯＳ分離シーケンサを識別するオペランドを持つ命令を含む
請求項１４から２４のいずれかに記載の装置。
【請求項２６】
システムであって、
ＯＳ、少なくとも１つのユーザレベルプログラム、前記プログラムを接続するためのアプリケーションプログラムインターフェース、および前記プログラムの実行をスケジューリングするスケジューラを格納しているメモリと、
少なくとも１つのＯＳ可視シーケンサおよび少なくとも１つのＯＳ分離シーケンサを有するマルチシーケンサと、
ＯＳによりスケジューリングされＯＳ可視シーケンサで実行中のスレッドに基づき、命令セットエクステンションを用いて、前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作とは独立してＯＳ分離シーケンサで実行されるユーザレベルスレッドである持続的なユーザレベルスレッドを生成するシーケンサマネージャと
を備え、
前記ＯＳは、前記持続的なユーザレベルスレッドの命令に対してスケジューリングを行わず、
前記持続的なユーザレベルスレッドは、前記ＯＳによりスケジューリングされるスレッドがコンテキストスイッチされた時でも前記ＯＳ分離シーケンサで動作を継続し、
前記シーケンサマネージャは、前記ＯＳ可視シーケンサで実行される別のユーザレベルスレッドから前記持続的なユーザレベルスレッドを生成する
システム。
【請求項２７】
前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作とは独立して前記持続的なユーザレベルスレッドを実行する前記ＯＳ分離シーケンサ
をさらに備える請求項２６に記載のシステム。
【請求項２８】
前記ＯＳによりスケジューリングされるスレッドと前記持続的なユーザレベルスレッドは仮想アドレススペースを共有する
請求項２６または２７に記載のシステム。
【請求項２９】
前記シーケンサマネージャは、前記持続的なユーザレベルスレッドの実行中にＯＳによる処理を必要とするイベントが発生した場合、前記持続的なユーザレベルスレッドの実行を一時中断する
請求項２６から２８のいずれかに記載のシステム。
【請求項３０】
前記シーケンサマネージャは、前記ＯＳ可視シーケンサで実行されるサービススレッドに、前記持続的なユーザレベルスレッドに対して、ＯＳサービスを提供させる
請求項２６から２９のいずれかに記載のシステム。
【請求項３１】
前記シーケンサマネージャは、前記ＯＳ可視シーケンサに対して、制御移行命令を伝え、前記ＯＳ可視シーケンサに前記制御移行命令を特権レベルで実行させる
請求項３０に記載のシステム。
【請求項３２】
前記シーケンサマネージャは、前記サービススレッドに前記持続的なユーザレベルスレッドの状態を取得させ、前記持続的なユーザレベルスレッドに対して代理実行を行い、前記持続的なユーザレベルスレッドに実行後状態を戻す
請求項３０または３１に記載のシステム。
【請求項３３】
前記実行後状態から前記持続的なユーザレベルスレッドの実行を再開する
請求項３２に記載のシステム。
【請求項３４】
前記サービススレッドは、前記持続的なユーザレベルスレッドと共有している仮想アドレス空間を通じて前記持続的なユーザレベルスレッドの状態を取得する
請求項３２または３３に記載のシステム。
【請求項３５】
前記ＯＳ分離シーケンサは、前記持続的なユーザレベルスレッドユーザレベルスレッドを生成したスレッドである前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作と独立して、前記持続的なユーザレベルスレッドの動作を継続させる
請求項２６から３４のいずれかに記載のシステム。
【請求項３６】
前記命令セットエクステンションは、前記ＯＳ可視シーケンサおよび前記ＯＳ分離シーケンサを識別するオペランドを持つ命令を含む
請求項２６から３５のいずれかに記載のシステム。
【請求項３７】
コンピュータに、
ＯＳによりスケジューリングされＯＳ可視シーケンサで実行中のスレッドに基づき、命令セットエクステンションを用いて、前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作とは独立してＯＳ分離シーケンサで実行されるユーザレベルスレッドである持続的なユーザレベルスレッドを生成する手順
を実行させ、
前記ＯＳは、前記持続的なユーザレベルスレッドの命令に対してスケジューリングを行わず、
前記持続的なユーザレベルスレッドは、前記ＯＳによりスケジューリングされるスレッドがコンテキストスイッチされた時でも前記ＯＳ分離シーケンサで動作を継続し、
前記持続的なユーザレベルスレッドを生成する手順は、前記ＯＳ可視シーケンサで実行される別のユーザレベルスレッドから前記持続的なユーザレベルスレッドを生成する手順を有する
プログラム。
【請求項３８】
前記コンピュータに、
前記持続的なユーザレベルスレッドを前記ＯＳ分離シーケンサで実行する手順
をさらに実行させる請求項３７に記載のプログラム。
【請求項３９】
前記コンピュータに、
前記ＯＳによりスケジューリングされるスレッドおよび前記持続的なユーザレベルスレッドに仮想アドレススペースを共有させる手順
をさらに実行させる請求項３７または３８に記載のプログラム。
【請求項４０】
前記コンピュータに、
前記持続的なユーザレベルスレッドの実行中にＯＳによる処理を必要とするイベントが発生した場合に、前記持続的なユーザレベルスレッドの実行を一時中断させる手順
をさらに実行させる請求項３７から３９のいずれかに記載のプログラム。
【請求項４１】
前記コンピュータに、
別のＯＳ可視シーケンサで実行されるサービススレッドに、前記持続的なユーザレベルスレッドに対して、ＯＳサービスを提供させる手順
をさらに実行させる請求項３７から４０のいずれかに記載のプログラム。
【請求項４２】
前記ＯＳサービスを提供させる手順は、
前記別のＯＳ可視シーケンサに対して、制御移行命令を伝え、前記制御移行命令を特権レベルで実行させる手順
を有する請求項４１に記載のプログラム。
【請求項４３】
前記ＯＳサービスを提供させる手順は、
前記サービススレッドに、前記持続的なユーザレベルスレッドと共有している仮想アドレス空間を通じて前記持続的なユーザレベルスレッドの状態を取得させる手順
を有する請求項４１または４２に記載のプログラム。
【請求項４４】
前記ＯＳ分離シーケンサに、前記持続的なユーザレベルスレッドユーザレベルスレッドを生成したスレッドである前記ＯＳによりスケジューリングされるスレッドに対するコンテキストスイッチ動作と独立して、前記持続的なユーザレベルスレッドの動作を継続させる
請求項３７から４３のいずれかに記載のプログラム。
【請求項４５】
前記命令セットエクステンションは、前記ＯＳ可視シーケンサおよび前記ＯＳ分離シーケンサを識別するオペランドを持つ命令を含む
請求項３７から４４のいずれかに記載のプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
マルチシーケンサコンピュータシステムまたはマルチシーケンサコンピュータプラットフォームにおいて、技術上ならびにコスト上の制約から、特定用途向けのコンピューティング資源、プロセッサまたはプロセッシングユニットの編成が非対称になってしまうことがある。本出願の以下の部分においては、プロセッサまたはプロセッシングユニットも「シーケンサ」または「プロセッシングコア」と呼ぶ。一般的に言って、シーケンサが数多く実装されたコンピュータプラットフォームでは、オペレーティングシステム（ＯＳ）がうまく機能しないことがある。特に、複数のシーケンサが非対称に編成された状態で効率よく処理が行えないことがある。
【０００２】
コンピュータプラットフォームは、実装されるシーケンサの種類に関して、その編成が非対称になることがある。例えば、ＯＳに対して「可視」で、ＯＳカーネルが管理するシーケンサがある。本明細書では、このようなシーケンサを「ＯＳ可視シーケンサ」と呼ぶ。ここで、ＯＳカーネルは、ＯＳ可視シーケンサの特権状態を管理することができ、ＯＳ可視シーケンサによってスレッドが実行されている間に、割り込みおよび／または例外を処理する例外ハンドラを提供することができるとしてもよい。このような「ＯＳ可視シーケンサ」に対し、ＯＳに対して「不可視」なシーケンサがある。本明細書では、このようなシーケンサを「ＯＳ分離シーケンサ」と呼ぶ。ＯＳ分離シーケンサは、ＯＳコードを実行せず、シーケンサマネージャに管理されるとしてもよい。
【０００３】
最近になって、マルチシーケンサ・ＭＩＭＤ（複数命令／複数データ）方式ＩＳＡ（命令セットアーキテクチャ）エクステンションが提案された。これは、１つのＯＳスレッドコンテキストにおいて複数のユーザレベルスレッドを同時に実行すべく、ＯＳ分離シーケンサをＲｉｎｇ  ３のユーザレベルアーキテクチャリソースとして扱うことを可能にする命令セットを定義するものである。このため、ＯＳ分離シーケンサをユーザレベルアプリケーションに利用できるようになる。ユーザレベル・マルチシーケンサ・ＭＩＭＤ・ＩＳＡエクステンションを用いる場合、ＯＳ可視シーケンサで実行中のアプリケーションスレッドに、ＯＳから分離されたシーケンサを使用することができるようになる。マルチシーケンサ・ＭＩＭＤ・ＩＳＡエクステンションによれば、ＯＳに対して可視または不可視なシーケンサに処理を任せることにより、アプリケーションは、ＯＳとは無関係に、多くのシーケンサに対して対応できるようになる。ＯＳはこの間、ＯＳに対して可視なシーケンサ上で動作を継続してもよい。このようなユーザレベル・ＭＩＭＤ・ＩＳＡエクステンションによって、ユーザレベルスレッドをＯＳ分離シーケンサ上で実行できるようになり、該ユーザレベルスレッドは、それらを生成し且つＯＳ可視シーケンサで実行されるＯＳスレッドと同時に実行されるとしてもよい。
【図面の簡単な説明】
【０００４】
以下では、添付の図面を用いて本発明の実施形態を詳細に説明し、本発明の内容をより明らかにする。
【０００５】
【図１】本発明の一実施形態に係るマルチシーケンサシステムを示すブロック図である。
【０００６】
【図２】本発明の一実施形態に係るマルチシーケンサシステムの一部であるハードウェアを示す簡略化論理図である。
【０００７】
【図３】本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供することができるマルチシーケンサシステムを示す簡略図である。
【０００８】
【図４】本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供することができるマルチシーケンサシステムを示す概念図である。
【０００９】
【図５】本発明の一実施形態に係る、マルチシーケンサシステムの命令セットアーキテクチャを示す図である。
【００１０】
【図６】本発明の一実施形態に係る制御移行命令の命令フォーマットの例を示す簡略図である。
【００１１】
【図７】本発明の一実施形態に係る、監視命令の命令フォーマットの例を示す簡略図である。
【００１２】
【図８】本発明の一実施形態に係る、持続的なユーザレベルスレッドの実行について説明するための簡略化フローチャートである。
【００１３】
【図９】本発明の一実施形態に係る、持続的なユーザレベルスレッドの実行について説明するための簡略化フローチャートである。
【００１４】
説明を簡潔且つ明瞭なものとできるよう、図中に示す構成要素は実寸を反映したものではない。例えば、図示した構成要素の中には分かりやすいようほかの構成要素との相対的なサイズが誇張されているものもある。
【発明を実施するための最良の形態】
【００１５】
以下において、具体的且つ詳細な事例を数多く挙げて本発明の実施形態を細部にいたるまで説明する。しかし、以下で説明する内容以外の実施形態を本発明が含むことは、当業者には明らかである。また、公知の方法および処理は、本発明の実施形態の説明をあいまいにしない程度に、詳細に説明する。
【００１６】
以下の説明では一部、コンピュータメモリ内でデータビットまたはバイナリデジタル信号に対して行われる処理のアルゴリズムやそのような処理を表す符号を用いている。データ処理の分野においては、当業者同士間で作業の内容を伝える場合に、このようなアルゴリズムによる説明を用いる。
【００１７】
本明細書内および一般的にアルゴリズムとは、所望の結果を得るために一貫した順序で実施される一連の動作または処理と考えられている。これには、物理量を物理的に操作することも含まれる。必ずしもそうではないが多くの場合、そのような物理量とは電気または磁気信号で、記憶、移動、合成、比較といった操作を行うことができる。こういった信号は、利便性を考慮し一般的な用語を使うべく、ビット、値、成分、符号、文字、項、数字などと呼ばれる。しかし、こういった用語はすべて適切な物理量に対応するものであって、対応する物理量に用いられる便利な名称にすぎない。
【００１８】
本明細書において、特に明示されていない限り、「処理」「演算」「計算」「決定」等の用語を用いている部分は、コンピュータや演算処理システム、または同様の演算電子デバイスによる処理および／または動作に関する。こういったコンピュータシステムは、システム内のレジスタおよび／またはメモリ内の物理量（例えば電子量）として表されたデータを操作および／または変換して、同システム内のメモリ、レジスタまたは同様の情報記憶／送信／表示装置内に同様に物理量として表される別のデータを得る。
【００１９】
本発明の実施形態は例えば、命令または命令セットを格納した機械可読媒体または機械可読装置を用いて実施されるとしてもよい。このような命令または命令セットが機械によって実行されると当該機械は、本発明の実施形態に係る方法および／または動作を行う。このような機械の例を挙げると、適切なプロセッシングプラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、プロセッシングデバイス、コンピューティングシステム、プロセッシングシステム、コンピュータまたはプロセッサなどがある。また、このような機械は、ハードウェアおよび／またはソフトウェアを適切に組み合わせることによって実施するとしてもよい。上述の機械可読媒体または機械可読装置は例えば、適切な種類のメモリユニット、メモリデバイス、メモリ装置、メモリ媒体、ストレージデバイス、ストレージ装置、ストレージ媒体および／またはストレージユニットであり、例として、メモリ、取り外し可能／不可能なメディア、消去可能／消去不可能なメディア、書き込み可能／書き換え可能なメディア、デジタル／アナログメディア、ハードディスク、フロッピーディスク、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｃｏｒｄａｂｌｅ）、ＣＤ−ＲＷ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  Ｒｅｗｒｉｔａｂｌｅ）、光ディスク、磁気メディア、さまざまな種類のＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、テープまたはカセットなどが挙げられる。命令は適切な種類のコードであってもよく、例として、ソースコード、ターゲットコード、コンパイラ型コード、インタープリータ型コード、実行可能コード、スタティックコードまたはダイナミックコードなどが挙げられる。このような命令を実行するには、適切な高レベル、低レベル、オブジェクト指向、ビジュアル、コンパイラ型および／またはインタープリータ型のプログラミング言語を用いるとしてもよい。このようなプログラミング言語の例として、Ｃ、Ｃ++、Ｊａｖａ、ＢＡＳＩＣ、Ｐａｓｃａｌ、Ｆｏｒｔｒａｎ、Ｃｏｂｏｌ、アセンブリ言語、マシンコードなどが挙げられる。
【００２０】
本発明の実施形態は、本明細書に記載する動作を行う装置を含むとしてもよい。このような装置は、所望の目的を達成するように構成されてもよいし、コンピュータ内に格納されたコンピュータプログラムが選択的にアクティブ状態にしたり再構成したりする汎用コンピュータであってもよい。このようなコンピュータプログラムは、コンピュータ可読ストレージ媒体に格納されるとしてもよい。このようなストレージ媒体としてディスクが挙げられ、例えばフロッピーディスク、光ディスク、ＣＤ−ＲＯＭ、光磁気ディスク、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、磁気／光カードが含まれる。または、ストレージ媒体の例として、その他の種類の、命令を電子状態で格納することに適しておりコンピュータシステムバスに接続が可能な媒体が挙げられる。
【００２１】
本明細書で言及する処理およびディスプレイは必ずしも、特定のコンピュータや装置に関するものではない。本明細書の教示に基づいたプログラムとともに用いるのはさまざまな汎用システムであってよいし、所望の方法を実施するためより特化した装置を構築する方が良い場合もあると考えられる。これらさまざまなシステムの望ましい構造は、以下の説明で明らかにする。また、本発明の実施形態の説明は特定のプログラミング言語に基づくものではない。本明細書で説明する本発明の教示は、さまざまなプログラミング言語を用いて実施することができるとしてもよい。
【００２２】
以下の部分において、図や表、フローチャート、モデルなどさまざまな手段に基づき、本出願で提案される本発明の実施形態を効率よく説明する。当業者には明らかであるが、以下の説明で挙げる実施形態は単なる例にすぎず、本発明を限定するものではない。
【００２３】
図１は、本発明の一実施形態に係るマルチシーケンサシステム１００を示すブロック図である。
【００２４】
図１に示すように、マルチシーケンサシステム１００は、メモリ１０２およびマルチシーケンサハードウェア１０４を備えるとしてもよい。メモリ１０２は例えば、ユーザレベルプログラム１０６、スケジューラ１０８、ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）１１０およびオペレーティングシステム（ＯＳ）１１２を有するとしてもよい。マルチシーケンサハードウェア１０４は例えば、シーケンサマネージャ１１４および複数のシーケンサ（例えば、シーケンサ１１６、１１８、１２０および１２２、図１ではそれぞれＳＩＤ０、ＳＩＤ１、ＳＩＤ２およびＳＩＤ３と表す）を有するとしてもよい。図１に図示したシーケンサは４つであるが、マルチシーケンサハードウェア１０４が有するシーケンサの数は４つに限定されない。
【００２５】
シーケンサマネージャ１１４は、ドライバ、ＯＳ（例えばＯＳ１１２）のエクステンション、これ以外のハードウェア、またはハードウェアとソフトウェアの組み合わせとして実施されるとしてもよい。マルチシーケンサハードウェア１０４は、シーケンサ１１６、１１８、１２０および／または１２２の種類に関して、対称であってもよいし非対称であってもよい。シーケンサ１１６、１１８、１２０および／または１２２のうち幾つかは、自分の実行リソースセットを有する物理プロセッサであってもよい。もしくは、シーケンサ１１６、１１８、１２０および／または１２２のうち幾つかが、ほかの論理プロセッサと物理リソースを共有する論理プロセッサ（例えばハイパースレッド）であってもよい。シーケンサ１１６、１１８、１２０および１２２を実現するハードウェアコアは、１つであってもよいし複数の独立したものであってもよい。
【００２６】
マルチシーケンサシステム１００の例を挙げると、デスクトップパソコン、ワークステーション、サーバーコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、携帯型コンピュータ、携帯情報端末（ＰＤＡ）、携帯電話、ゲームコンソールなどがあるが、これらに限定されない。
【００２７】
メモリ１０２の例を挙げると、半導体デバイス、光学デバイス、磁気デバイスのいずれか、もしくはこれらの組み合わせが考えられるが、これらに限定されない。半導体デバイスとしては、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）デバイス、ＲＤＲＡＭ（ＲＡＭＢＵＳ  ＤＲＡＭ）デバイス、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリデバイス、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）デバイス、フラッシュメモリ（ＦＭ）デバイス、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）デバイス、不揮発性（ＮＶ）ＲＡＭデバイス、取り外し可能なＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリデバイスといったものが例として挙げられる。光学デバイスには、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ  ＲＯＭ）などがある。磁気デバイスには、ハードディスク、フロッピーディスク、磁気テープなどがある。メモリ１０２は、システム１００内に固定されるとしてもよいし、システム１００から取り外し可能な構成としてもよい。
【００２８】
本発明の一実施形態によれば、ユーザレベルプログラム１０６がＡＰＩ１１０を介してスレッドライブラリにアクセスするとしてもよい。ＡＰＩ１１０は、ユーザレベルプログラム１０６に対して、スレッドの作成、制御および同期を行うとしてもよい。スケジューラ１０８は、マルチシーケンサハードウェア１０４上での実行に向けて、スレッドの命令をスケジューリングするとしてもよい。
【００２９】
マルチシーケンサハードウェア１０４の例を挙げると、複数のシングルスレッド型／マルチスレッド型中央演算処理装置（ＣＰＵ）、デジタル信号プロセッサ（ＤＳＰ）、縮小命令セットコンピュータ（ＲＩＳＣ）、復号命令セットコンピュータ（ＣＩＳＣ）などがあるが、これらに限定されない。また、マルチシーケンサ１０４は特定用途向け集積回路（ＡＳＩＣ）の一部であってもよいし、特定用途・一般顧客向けＬＳＩ（ＡＳＳＰ）の一部であってもよい。
【００３０】
本発明の一実施形態によると、マルチシーケンサハードウェア１０４は、例えば論理プロセッサであるシーケンサ１１６、１１８、１２０および１２２（ＳＩＤ０−ＳＩＤ３）を実装したシングルコアプロセッサであってもよい。シングルコアプロセッサ１０４は、例えば並列マルチスレッディング（ＣＭＴ）、同時マルチスレッディング（ＳＭＴ）および／またはＳｗｉｔｃｈ−ｏｎ−Ｅｖｅｎｔマルチスレッディング（ＳＯＥＭＴ）に対応可能としてもよい。一実施形態によれば、シーケンサＳＩＤ０〜ＳＩＤ３はそれぞれ独自の次命令ポインタ論理を有し、シングルコアプロセッサ１０４はスレッドの命令をすべて実行するとしてもよい。論理プロセッサＳＩＤ１〜ＳＩＤ３はそれぞれ、アーキテクチャ状態の独自のバージョンを保持するが、シングルコアプロセッサ１０４の実行リソースは、複数の並列スレッド、同時スレッドおよび／またはＳｗｉｔｃｈ−Ｏｎ−Ｅｖｅｎｔスレッドの間で共有するとしてもよい。
【００３１】
上述した一実施形態に係るマルチシーケンサハードウェア１０４はシーケンサ毎に１つのスレッドという構成であるとしてもよいが、本明細書の開示はシングルスレッドプロセッサに限定されない。本明細書で説明する技術内容は、ＣＭＰ（チップマルチプロセッシング）システムまたはＳＭＰ（同時マルチスレッディングプロセッサ）システムにも同様に応用することができる。また、ＣＭＰプロセッサの各コアはＳＭＰプロセッサまたはＳｗｉｔｃｈ−Ｏｎ−Ｅｖｅｎｔマルチプロセッサ（ＳｏｅＭＰ）である、ＣＭＰプロセッサとＳＭＰプロセッサを備えるハイブリッドシステムにも応用できる。例えば、シングルチップハードウェアパッケージ１０４内のマルチスレッドプロセッシングコアを備えるシステムに、本明細書で開示する技術内容を利用するとしてもよい。
【００３２】
上述したが、シーケンサＳＩＤ０〜ＳＩＤ３は、例えば処理速度、処理能力や電力消費量といった演算能力に影響する要因に関して、必ずしも均一である必要はなく非対称であってもよい。例えば、シーケンサＳＩＤ０は、所定の命令セットアーキテクチャ（例えば、３２ビットプロセッサに対応したＩＡ−３２命令セットアーキテクチャ）において命令の大半を処理するように構成されている「主」シーケンサとしてもよい。そして、シーケンサＳＩＤ１は、これらの命令のうち選択された命令サブセットを処理する「副」シーケンサであるとしてもよい。本発明の別の実施形態によれば、主プロセッサは副プロセッサよりも早い速度で命令を処理するものと定義してもよい。また、ＯＳに対して可視のシーケンサと不可視のシーケンサがあるとしてもよい。例えば、シーケンサＳＩＤ０がＯＳ１１２に対して可視で、シーケンサＳＩＤ１〜ＳＩＤ３はＯＳ１１２から分離されているとしてもよい。しかし、主シーケンサがＯＳに対して可視で、副シーケンサがＯＳから分離されているというわけではない。ＯＳは、分離状態にあるシーケンサ（このようなシーケンサを本明細書ではＯＳ分離シーケンサと呼ぶ）上で実行される命令に対してスケジューリングを行わないということである。
【００３３】
本発明の実施形態によると、マルチシーケンサシステム１００は持続的なユーザレベルスレッド（ＰＵＬＴ）のサービスを提供するとしてもよい。ＰＵＬＴについては、以下で図２から図８を参照しつつ詳述する。本出願において、通常のユーザレベルスレッド（以下では単にユーザレベルスレッドと呼ぶ）は、ユーザレベルまたはＲｉｎｇ  ３レベルで実行される非特権命令だけから成る一連の命令であるとしてもよい。ユーザレベルスレッドは通常、ＯＳスレッドに「水面下で」サポートされるとしてもよい。このようなＯＳスレッドは、ネイティブＯＳスレッドと呼んでもよいし、単にネイティブスレッドとしてもよい。このＯＳスレッドのコンテキストにおいて、少なくとも１つのユーザレベルスレッドがＯＳ可視シーケンサまたはＯＳ分離シーケンサの一方で実行されるとしてもよい。ＯＳがＯＳスレッドをコンテキストスイッチすると、このＯＳスレッドに属するすべてのシーケンサのコンテキストが保存／復元される。従って、これらのシーケンサで動作中のユーザレベルスレッドは中断／再開される。本発明の一実施形態によれば、持続的なユーザレベルスレッド（ＰＵＬＴ）は、ＯＳ分離シーケンサ上で動作するユーザレベルスレッドである。ＰＵＬＴが実行される環境は例えば、該ＰＵＬＴを生成する別のユーザレベルスレッドの仮想アドレススペース（ＶＡＳ）である。ＰＵＬＴの実行は、当該ＰＵＬＴを生成したユーザレベルスレッドの実行とは無関係に、従って同期せずに行われるとしてもよい。ユーザレベルスレッドが属するＯＳスレッドがコンテキストスイッチされた時でも、ＰＵＬＴはＯＳ分離シーケンサ上で動作を継続するとしてよい。本明細書では、このような状態、つまりＰＵＬＴの生成元であるスレッドに関するＯＳスレッドのコンテキストスイッチ動作とは関係なく、ユーザレベルスレッドが動作を継続する特性を「持続的」と呼ぶ。
【００３４】
図２は、本発明の一実施形態に係るマルチシーケンサシステムの一部であるハードウェア２００を示す簡略化論理図である。
【００３５】
ハードウェア２００は、図１に示すマルチシーケンサシステム１００の一部であるマルチシーケンサハードウェア１０４に対応するとしてもよい。マルチシーケンサハードウェア１０４は、図１に示すように、シーケンサマネージャ１１４および、例えば複数のシーケンサ１１６、１１８、１２０および１２２を有するとしてもよい。本発明の一実施形態によれば、シーケンサマネージャ１１４は、シーケンサ１１６、１１８、１２０および１２２がユーザレベルプログラム１０６に対して均一且つ対称であるように見えるように、シーケンサ１１６、１１８、１２０および１２２を仮想化できるとしてもよい。つまり、図１のシーケンサマネージャ１１４に対応するシーケンサマネージャ２０１は、シーケンサ２１１、２１２、２１３および２１４の非対称性を隠して、図２に同じサイズの正方形で示すように、アセンブリ言語プログラマが論理的に見た場合、シーケンサ２１１、２１２、２１３および２１４が均一且つ対称に見えるようにする。シーケンサ２１１、２１２、２１３および２１４は図１に示す論理プロセッサＳＩＤ０、ＳＩＤ１、ＳＩＤ２およびＳＩＤ３に対応するとしてもよい。
【００３６】
図３は、本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供できるマルチシーケンサシステム３００を示した簡略図である。
【００３７】
本発明の一実施形態によれば、アプリケーション３０１（例えば図１に示すユーザレベルプログラム１０６）の実行はＯＳ３０２が管理するとしてもよい。ＯＳ３０２は、各々がユーザレベルスレッドを含んでいる可能性がある１以上のネイティブスレッドを生成およびスケジューリングして、アプリケーション３０１を実行するとしてもよい。このようなネイティブスレッドの例を挙げると、例えばＯＳ３０２に対して可視である一連のシーケンサ（例えばシーケンサ３１１および３１２）のうちの１つで実行される図３のネイティブスレッド３０３がある。ＯＳ３０２は、ＯＳカーネルに基づきシーケンサ３１１および３１２を管理するとしてもよい。ＯＳ３０２はさらに、シーケンサ３１１および３１２の特権状態を制御し、シーケンサ３１１および３１２で生じる割り込みおよび例外を処理するとしてもよい。
【００３８】
本発明の一実施形態によれば、シーケンサマネージャ３１０は、ＯＳに対して可視であるシーケンサ３１１および３１２ならびに、別の一連のシーケンサ、例えばＯＳ３０２から分離されておりＯＳ３０２のカーネルが管理していないシーケンサ３１３、３１４、３１５、３１６、３１７および３１８へのアクセスを制御できるとしてもよい。シーケンサ３１３、３１４、３１５、３１６、３１７および３１８は、ＯＳ分離シーケンサまたは「ＯＳ不可視」シーケンサである。
【００３９】
本発明の一実施形態によれば、ＯＳがスケジューリングしたスレッド（例えば、ユーザレベルスレッドを含む可能性があるネイティブスレッド）は、ハードウェア、ソフトウェアもしくは両者の組み合わせによって構成されるインターフェースを介して、シーケンサマネージャ３１０と通信を行うとしてもよい。ＯＳ３０２に不可視なシーケンサ（例えばシーケンサ３１３、３１４、３１５、３１６、３１７および３１８）を使用したい場合、ＯＳがスケジューリングしたスレッド（例えばネイティブスレッド３０３）が、ＯＳ分離シーケンサのうちの１つ（例えばシーケンサ３１３）で動作するユーザレベルスレッド（例えばスレッド３０４）を生成するように、シーケンサマネージャ３１０に要求を送るとしてもよい。本発明の一実施形態によれば、ユーザレベルスレッド３０４は、ネイティブスレッド３０３のＯＳコンテキストスイッチ動作とは無関係なシーケンサ３１３で実行されるので、持続的なユーザレベルスレッド（ＰＵＬＴ）であるとしてもよい。
【００４０】
以下においては、ネイティブスレッド３０３を例として、持続的なユーザレベルスレッドの作成および実行について説明する。以下の説明がほかのスレッド、例えばネイティブスレッドに属するユーザレベルスレッドにも当てはまることは、当業者には明らかである。
【００４１】
本発明の一実施形態によれば、ＯＳ分離シーケンサ３１３は、ＯＳ可視シーケンサ３１１で実行されるユーザレベルスレッド３０３と共有する仮想アドレススペース（ＶＡＳ）３２０で、ＰＵＬＴ３０４を実行するとしてもよい。ＶＡＳ３２０は、ＯＳ３０２によってアプリケーション３０１を実行するために生成されるとしてもよい。本発明の一実施形態によれば、ＶＡＳ３２０が共有されているので、シーケンサマネージャ３１０は、ＯＳ可視シーケンサ３１１で実行されるユーザレベルスレッド３０３の実行環境、例えば、仮想アドレスマップを取得して、この実行環境をＯＳ分離シーケンサ３１３で実行されるＰＵＬＴ３０４に用いることができるとしてもよい。本発明の一実施形態によれば、ＯＳ分離シーケンサ３１３は、仮想アドレススペースの変化を自動的に記録できるスヌープ方式のＴＬＢ（変換索引バッファ）を有するとしてもよい。ここで、ＴＬＢとはプロセッサ内にある小型のキャッシュで、高速で検索できるように仮想アドレスから物理アドレスへの変換を記録するとしてもよい。プロセッサは、このようなＴＬＢを用いることによって、仮想アドレスを物理アドレスへと変換する場合の不必要なページウォークを避けることができる。
【００４２】
図４は、本発明の一実施形態に係る、持続的なユーザレベルスレッドのサービスを提供できるマルチシーケンサシステム４００を示す概念図である。
【００４３】
本発明の一実施形態に係るマルチシーケンサシステム４００は、複数のＯＳ分離シーケンサ（例えばシーケンサ４１１、４１２、４１３および４１４）およびＯＳ可視シーケンサ（例えばシーケンサ４０５および４０６）を管理するシーケンサマネージャ４１０を備えるとしてもよい。ＯＳ４０２は、ユーザレベルアプリケーション（例えばアプリケーション４０１Ａおよび４０１Ｂ）の実行を管理するとしてもよい。ＯＳ４０２は、１以上のスレッド（例えば、ＯＳ可視シーケンサ４０５および４０６で動作するユーザレベルスレッド４０３および４０４）ならびにネイティブスレッドを生成することによって、アプリケーション４０１Ａおよび４０１Ｂを管理する。
【００４４】
シーケンサマネージャ４１０は、ＯＳ４０２から分離されておりＯＳ４０２が管理していないシーケンサ４１１、４１２、４１３および４１４へのアクセスに基づき、アプリケーション４０１Ａおよび４０１Ｂに対して実行リソースを提供するとしてもよい。なお、この場合のアクセスは、ＯＳ可視シーケンサ４０５および４０６で実行されているスレッド４０３および４０４またはＯＳがスケジューリングするネイティブスレッドからの要求に基づいて、行われるとしてもよい。この結果、アプリケーション４０１Ａおよび４０１Ｂは、ユーザレベルスレッド４０３および／または４０４、もしくはネイティブスレッドに基づき、ＯＳ分離シーケンサ４１１、４１２，４１３および４１４にアクセスできるようになるとしてもよい。
【００４５】
本発明の一実施形態によると、シーケンサマネージャ４１０は、ユーザレベルスレッド４０３および４０４によってアプリケーション４１０Ａおよび４０１Ｂ用に生成された持続的なユーザレベルスレッド実行のために、さまざまなタイムスロットをシーケンサ４１１、４１２、４１３および４１４に割り当てるとしてもよい。例えば、図４に示した参照符号ｔ１、ｔ２、ｔ３、ｔ４、ｔ５およびｔ６はそれぞれ、ＰＵＬＴであるＴ１、Ｔ２、Ｔ３、Ｔ４、Ｔ５およびＴ６の実行用に割り当てられたタイムスロットを示すものであってもよい。
【００４６】
本発明の一実施形態によると、シーケンサマネージャ４１０は、ＯＳ分離シーケンサ（例えば、シーケンサ４１１、４１２、４１３および４１４）用に、割り込み記述子テーブル（例えば、テーブル４２１、４２２、４２３および４２４）を設定するとしてもよい。テーブル４２１を例に挙げて説明すると、割り込み記述子テーブルはシーケンサ４１１で発生するイベントを処理するイベントハンドラ４３１を含むとしてもよい。ＯＳ分離シーケンサ（例えば、シーケンサ４１１）上でＰＵＬＴ（例えばＰＵＬＴ  Ｔ３）を実行している間（例えば、ｔ３）、ＯＳ４０２による対処が必要となるイベントや状況（例えばページフォルトまたはシステムコール）が発生する可能性がある。この場合、イベントハンドラ４３１はＰＵＬＴ  Ｔ３の実行を一時中断し、当該イベントが発生したときのＰＵＬＴ  Ｔ３の実行状態を保存するとしてもよい。
【００４７】
本発明の別の実施形態によると、ページフォルトやシステムコールが発生した場合、ＯＳ不可視シーケンサ（例えばシーケンサ４１１）は、ＯＳ可視シーケンサ（例えば、ＰＵＬＴ  Ｔ３を起動したシーケンサ４０５）の実行に直接割り込むとしてもよい。この場合、続いてシーケンサ４１１は、トリガをシーケンサマネージャ４１０に送って割り込み処理を要求する。本発明のさらに別の実施形態によると、ＯＳ分離シーケンサ４１１はＲｉｎｇ  ０サービスチャネル、もしくはページフォルトまたはシステムコールを処理するチャネルをプログラムするとしてもよい。ここでチャネルとは、アーキテクチャ状態（例えば、トリガがアーキテクチャが定義された一連のプロセッサ状態であり、レスポンスがサービスルーチンであるトリガ−レスポンス・マッピングを含む）を保持するレジスタであってもよい。またチャネルは、例えばユーザレベル命令によってプログラムされるとしてもよい。ページフォルトまたはシステムコールが発生した場合、ＯＳ分離シーケンサ４１１は、そのアドレスがチャネル内で特定されているハンドラを起動するとしてもよい。
【００４８】
ＰＵＬＴ  Ｔ３の中断は、同じアプリケーション４０１Ａを実行するための新しいユーザレベルスレッド（例えば、スレッド４０９）がＯＳ可視シーケンサで実行されるようスケジューリングされるまで、継続するとしてもよい。スレッド４０９（サービススレッドとも呼ぶ）は、一時中断されているＰＵＬＴがあるかどうか、および例えば代理実行によって提供されるＯＳサービスを待っているＰＵＬＴがあるかどうか確認または検証するよう、シーケンサマネージャ４１０に対して要求するとしてもよい。代理実行は、シーケンサマネージャ４１０からＰＵＬＴ  Ｔ３の状態を取得することによって、ＰＵＬＴ  Ｔ３を模倣するスレッド４０９に基づいて行われるとしてもよい。ＰＵＬＴ  Ｔ３の実行状態は、アドレススペース（例えば、共有仮想アドレススペース（ＶＡＳ）、図３を参照のこと）を共有しているサービススレッド４０９によって再開されるとしてもよい。スレッド４０９は続いて、ＰＵＬＴ  Ｔ３を一時停止させた原因である実行条件に対して処理を行うとしてもよい。スレッド４０９はこの処理が終了すると、実行後状態を保存し、当該状態をシーケンサマネージャ４１０に戻すとしてもよい。シーケンサマネージャ４１０は続いて、当該状態をＰＵＬＴ  Ｔ３に渡して、ＰＵＬＴ  Ｔ３の実行を再開するとしてもよい。
【００４９】
上述した代理実行により、アプリケーションプログラマに対してマルチシーケンサシステムが対称性を有すると見せかけることができ、マルチシーケンサシステム（例えばシステム１００）が非対称性を有するものとして構築されたことを隠すとしてもよい。
【００５０】
図５は、本発明の一実施形態に係るマルチシーケンサシステムの命令セットアーキテクチャ（ＩＳＡ）５００を示す図である。
【００５１】
ＩＳＡは、アセンブリ言語プログラマ、バイナリトランスレータ、アセンブラなどから見た場合のシステムの論理図を定義するものである。ＩＳＡ５００は、論理ストレージ５０２および命令セット５０４を備えるとしてもよい。論理ストレージ５０２は、マルチシーケンサシステム（例えば、図１に示したマルチシーケンサシステム１００）用の可視メモリ階層、アドレス割当方法、レジスタセットなどを定義するとしてもよい。一方命令セット５０４は、命令およびマルチシーケンサシステム１００がサポートする命令のフォーマットを定義するとしてもよい。
【００５２】
命令セット５０４は、ＩＡ−３２命令セットとして公知である命令セットを含むとしてもよい。本発明の実施形態に係る命令セットは、これらに限定されないが、ＩＡ−３２命令セットのエクステンションやそれ以外の命令セットであってもよい。本発明の一実施形態によると、命令セット５０４は例えば、ＳＸＦＲ制御−移行命令およびそのエクステンションを含むＥ−ＳＸＦＲ命令、ならびにＳＥＭＯＮＩＴＯＲ監視命令およびそのエクステンションを含むＥ−ＳＥＭＯＮＩＴＯＲ命令を有するとしてもよい。同じＯＳネイティブスレッドに属する２つのシーケンサの間で行われ得るＳＸＦＲおよびＳＥＭＯＮＩＴＯＲとは違い、Ｅ−ＳＸＦＲおよびＥ−ＳＥＭＯＮＩＴＯＲは、異なる特権レベルで動作する２つの別々のＯＳネイティブスレッドにそれぞれ属する２つのシーケンサの間で実行することができる。例えば、一方のスレッドはＯＳコンテキストスイッチされるユーザレベルアプリケーションであり、他方のスレッドは、デバイスドライバのように、特権レベルで持続的に実行されるＰＵＬＴであり、ＯＳコンテキストスイッチには影響されないとしてもよい。
【００５３】
本発明の一実施形態によると、Ｅ−ＳＸＦＲ命令を用いて、第１シーケンサから第２シーケンサに信号を送り、Ｅ−ＳＥＭＯＮＩＴＯＲ命令を用いて、第１シーケンサから送信される信号を監視するよう、第２シーケンサを構成するとしてもよい。また、Ｅ−ＳＸＦＲ制御移行命令およびＥ−ＭＯＮＩＴＯＲ監視命令はシーケンサを認識しており、 シーケンサを認識したほかの複合命令を構築するために用いられるとしてもよい。
【００５４】
本発明の一実施形態によると、Ｅ−ＳＸＦＲ命令は図６に例示する命令フォーマットを持つとしてもよい。図６に示すように、Ｅ−ＳＸＦＲ命令はＯＰコード６０２、オペランド６０４、６０６、６０８、６１０および６１２を含むとしてもよい。本発明の一実施形態によると、シーケンサマネージャは、一時中断された持続的なユーザレベルスレッドを処理するための実行環境を作りだすために、シーケンサの特権状態などのオペランドを有するＥ−ＳＸＦＲ命令を提供するとしてもよい。
【００５５】
一実施形態によると、オペランド６０４は、Ｅ−ＳＸＦＲ命令信号の送信先であるデスティネーション／ターゲットシーケンサのシーケンサＩＤ（ＳＩＤ）に対応するとしてもよい。オペランド６０６は、シナリオまたは制御メッセージを含むとしてもよい。このようなシナリオまたは制御メッセージは、条件または予測されるイベントを表す、そのアーキテクチャが定義された識別コードであってもよい。シナリオは非同期制御移行に影響を与えるとしてもよい。この詳細は表１を参照して後述する。
【００５６】
一実施形態によると、オペランド６０８は、Ｅ−ＳＸＦＲ命令を実行するシーケンサで命令を実行するかどうか決定する条件となるパラメータを含むとしてもよい。図６に条件パラメータと示すそのようなパラメータの例を挙げると、「ＷＡＩＴ」パラメータまたは「ＮＯ−ＷＡＩＴ」パラメータがある。例えば、Ｅ−ＳＸＦＲ命令が代理実行シナリオで用いられる場合、ＷＡＩＴ条件パラメータに基づき、Ｅ−ＳＸＦＲ命令を実行するシーケンサでの命令の実行を取りやめ、別のシーケンサでの代理実行の完了を保留にする。一方、ＮＯ−ＷＡＩＴ条件パラメータであれば、Ｅ−ＳＸＦＲ命令を実行するシーケンサでの命令の実行が別の命令を実行するシーケンサでの代理実行と並行して継続するとしてもよい。
【００５７】
一実施形態によると、オペランド６１０は、シナリオ固有ペイロードまたはデータメッセージを含むとしてもよい。例えばＦＯＲＫシナリオの場合、該ペイロードはオペランド６０４が示すシーケンサでの実行が始まる箇所である命令ポインタを含むとしてもよい。別の実施形態によると、ペイロードオペランド６１０は命令ポインタ、スタックポインタ、一連の制御レジスタなどを含むとしてもよい。ペイロードオペランド６１０に含まれるアドレスは、例えばリテラル、レジスタ間接および／またはベース／オフセットアドレッシングなど、さまざまなアドレス指定モードで指定するとしてもよい。
【００５８】
一実施形態によると、オペランド６１２は、オペランド６０４に含まれるＳＩＤに関するルーティング方法またはルーティング関数を特定するとしてもよい。ルーティング関数は、Ｅ−ＳＸＦＲ命令を実行した結果生成される信号が、ブロードキャスト信号、ユニキャスト信号またはマルチキャスト信号のうちどの信号として送信されるかを制御する。ルーティング関数はさらに、例えば、信号を配信するためのルーティングにおいて基本構成要素であるシーケンサ間のインターコネクトをアシストするために用いられるトポロジー固有情報のような情報を符号化するとしてもよい。
【００５９】
一実施形態によると、Ｅ−ＳＥＭＯＮＩＴＯＲ指示は、図７に例示するような命令フォーマットを有するとしてもよい。図７に示すように、Ｅ−ＳＥＭＯＮＩＴＯＲ命令はＯＰコード７０２およびオペランド７０４、７０６および７０８を含むとしてもよい。オペランド７０４、７０６および７０８は、持続的なユーザレベルスレッドの実行環境の形成を手助けするべくシーケンサの特権状態に関する情報を含むとしてもよい。例えば、オペランド７０４はシナリオＩＤを含み、シナリオを特定するとしてもよい。オペランド７０６は、シーケンサＩＤ（ＳＩＤ）および命令ポインタ（ＥＩＰ）に関する情報を含むとしてもよい。説明の便宜上、オペランド７０６に含まれる情報を本明細書では、図７に示すように、「ＳＩＤＥＩＰ」と呼ぶ。
【００６０】
Ｅ−ＳＥＭＯＮＩＴＯＲ命令は、オペランド７０４で指定されたシナリオとオペランド７０６で指定されたＳＩＤＥＩＰをマッピングする。シナリオのＳＩＤＥＩＰへのマッピングを本明細書では、「サービスチャネル」のマッピングと呼ぶとしてもよい。オペランド７０８によってプログラマは所定のサービスチャネルをどのように処理されるか特定または制御するための制御パラメータを入力できるようになるとしてもよい。例えば、プログラマはＥ−ＳＥＭＯＮＩＴＯＲ命令に基づき、シーケンサが監視するサービスチャネルをプログラムするとしてもよい。
【００６１】
上記の説明から、Ｅ−ＳＸＦＲ命令およびＥ−ＳＥＭＯＮＩＴＯＲ命令は両方とも、特定のシーケンサを指定しているオペランドを有することから、「シーケンサを認識した」命令であることが分かる。
【００６２】
図８および図９は、本発明の実施形態に係る、持続的なユーザレベルスレッドの実行を説明するための簡略化フローチャートである。両図において、同じ参照番号は同じ動作を示している。
【００６３】
本発明の一実施形態によると、ブロック８０１に示すように、ＯＳ分離シーケンサ８２２が持続的なユーザレベルスレッドを実行するとしてもよい。本明細書では説明の便宜上、当該持続的なユーザレベルスレッドを、ＰＵＬＴ−１と呼ぶ。ＰＵＬＴ−１は例えば、第１ＯＳ可視シーケンサによって実行される第１ユーザレベルスレッドによって生成されるとしてもよい。ＰＵＬＴ−１の実行中、ＯＳのサービスが必要なイベントが１以上発生するとしてもよい。ここで、以下に詳述するように、第２ユーザレベルスレッドが必要なＯＳサービスをＰＵＬＴ−１に対して提供するとしてもよい。第２ユーザレベルスレッドはＰＵＬＴ−１を生成した第１ユーザレベルスレッドと同じユーザレベルスレッドであってもよいし、違うものであってもよい。また、第２ＯＳ可視シーケンサ（例えば、ＯＳ可視シーケンサ８２１）またはこれ以外のＯＳ可視シーケンサで実行するとしてもよい。
【００６４】
本発明の一実施形態によると、図８および図９のブロック８０２で示すように、ＰＵＬＴ−１を実行中の時間ｔ１においてＯＳサービスを必要とするイベントが発生するとしてもよい。このイベントを検出すると、ブロック８０３に示すように、シーケンサマネージャ８２０は時間ｔ１（例えば、論理ポインタ）でのＰＵＬＴ−１の状態を保存する手順を開始するとしてもよい。ブロック８０３に示すようにＰＵＬＴ−１の状態が保存されると、ブロック８０４に示すようにＰＵＬＴ−１の実行は時間ｔ２から一時中断されるとしてもよい。本発明の一実施形態によると、ＯＳサービスを必要とするイベントについて通知を受け取った後、外部割込みに基づき、シーケンサマネージャ８２０はＰＵＬＴ−１の実行を一時中断するとしてもよい。ＰＵＬＴ−１の実行の一時中断は、例えばサービススレッドによる代理実行に基づき必要なＯＳサービスの提供が行われるまで続くとしてもよい。
【００６５】
本発明の一実施形態によると、ブロック８０５に示すように、ある時点において、ＯＳがスケジューリングしたスレッド（例えば新規ユーザレベルスレッド）がＯＳ可視シーケンサ８２１で動作を開始するとしてもよい。この新規ユーザレベルスレッドは、ＰＵＬＴ−１と同じアプリケーション用に実行されるとしてもよい。このスレッドは、例えば代理実行によって、ＰＵＬＴ−１に対してＯＳサービスを提供するとしてもよく、このため本明細書ではサービススレッドと呼んでもよい。ＯＳサービスの提供を開始する前に、ブロック８０６に示すように、当該サービススレッドは、ＯＳサービスの提供を待つ一時中断されたＰＵＬＴがあるかどうかシーケンサマネージャ８２０に確認または検証するとしてもよい。
【００６６】
このサービススレッドは、ＯＳサービスの提供を待つスレッドとして、ＰＵＬＴ−１を特定するとしてもよい。本発明の一実施形態によると、ブロック８０７に示すように、続いてサービススレッドは、例えば共有仮想アドレススペース（ＶＡＳ）に基づきＰＵＬＴ−１の実行状態を取得することによって、ＰＵＬＴ−１を模倣、つまり真似するとしてもよい。サービススレッドによって模倣されたＰＵＬＴ−１は、該サービススレッドを実行するＯＳ可視シーケンサで実行され、ＯＳサービスを受け取るとしてもよい。この結果、ブロック８０８に示すように、サービススレッドの代理実行によってＰＵＬＴ−１に対してＯＳサービスが提供され、ＰＵＬＴ−１が一時中断された条件についてＯＳによる処理が行われる。本発明の一実施形態によると、ＯＳ可視シーケンサ（例えば、ＯＳ可視シーケンサ８２１）で動作するユーザレベルスレッドは、シナリオを用いてアドレス位置を監視することによって、一時中断中のＰＵＬＴを検出するとしてもよい。ここで、サービスシナリオは、例えばキャッシュミスを監視するための条件である。キャッシュミスが発生してその結果例えばしきい値を超えた場合、サービスチャネルのハンドラが起動されるとしてもよい。
【００６７】
本発明の一実施形態によると、ＰＵＬＴ−１が一時中断された条件に対してＯＳが行う処理が完了すれば、ブロック８０９に示すように、ＰＵＬＴ−１の実行後状態が保存され、シーケンサマネージャ８２０を介してＯＳ分離シーケンサ８２２に戻される。ＯＳ分離シーケンサ８２２は、サービススレッドから実行後状態を受け取った後、ブロック８１０に示すようにＰＵＬＴ−１の実行を再開するとしてもよい。
【００６８】
表１に、本発明の実施形態に係るシナリオの例をまとめて示す。
【００６９】
【表１】
0004690988.tif 000002
【００７０】
本発明の実施形態によると、表１に示したシナリオには出方向サービスと入方向サービスの２つに関するものがある。各サービスについて、動作および制御メッセージは、ＳＰＵ（Ｓｈｒｅｄ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の特性の１つである、ＯＳに対する可視性に基づき特徴付けるとしてもよい。出方向サービスの中で、ＲＮＡ（Ｒｅｓｏｕｒｃｅ  ｎｏｔ  ａｖａｉｌａｂｌｅ：利用可能なリソースなし）のカテゴリに当てはまる動作のシナリオがある。このＲＮＡというカテゴリは、ＯＳ分離シーケンサで利用不可能なリソースに対するアクセスのため、シーケンサで実行中に生成されたイベント用のものである。本発明の一実施形態によると、ＲＮＡのカテゴリに入るシナリオは例えば、直接ＯＳサービスをアクティブにできないＯＳ分離シーケンサ上でのページフォルト処理および／またはＩ／Ｏアクセスを含むとしてもよい。
【００７１】
本発明の実施形態によれば、上述した動作のシナリオには一連の送信制御メッセージが付随する。一実施形態によれば、このようなメッセージは例えば、表１の出方向サービスシナリオの欄に示したメッセージを含むとしてもよい。しかし、本発明はこれらに限定されず、示したもの以外のメッセージを用いるとしてもよい。制御メッセージはＯＳ可視シーケンサに送信される。
【００７２】
上述した出方向サービスシナリオに関連して、ＯＳ分離シーケンサからのサービス要求に対してリソースを提供するＯＳ可視シーケンサのカテゴリに入る入方向サービスシナリオがある。表１の入方向サービスシナリオの欄に示すように、これらのサービスは出方向サービスシナリオにそのまま対応するが、ＯＳ可視シーケンサを介して利用可能である。一実施形態によると、入方向サービスに付随する受信制御メッセージには、表１の入方向サービスシナリオの欄に示したメッセージが含まれるとしてもよい。しかし、本発明はこれらに限定されず、示したもの以外のメッセージを用いるとしてもよい。受信メッセージはＯＳ分離シーケンサから受信するとしてもよい。
【００７３】
本発明の実施形態によると、出方向サービスに対処する命令は例えば、コアの複雑性という点から見れば比較的単純なＳＳＥ１３命令である。また、例えばＯＳ分離シーケンサからの入方向サービスまたは要求に対処する命令は、概してより複雑なものである。
【００７４】
本明細書では本発明の特徴を具体的に説明してきたが、当業者であれば数多くの変形例や代替例、変更および同様の技術内容に想到することは明らかである。このため、本願の請求項は、本発明の範囲内にある変形例や変更はすべて含むものと解釈されるべきである。
【図１】
0004690988.tif 000003
【図２】
0004690988.tif 000004
【図３】
0004690988.tif 000005
【図４】
0004690988.tif 000006
【図５】
0004690988.tif 000007
【図６】
0004690988.tif 000008
【図７】
0004690988.tif 000009
【図８】
0004690988.tif 000010
【図９】
0004690988.tif 000011