(57)【要約】【課題】非同期制御転送を実行する方法及び装置について記載される。【解決手段】一実施形態で、イベント（例えば、アーキテクチャ上のイベント。）の発生時に、サービスルーチンデータブロック（ＳＲＤＢ）は、イールドサービスルーチンのアドレスを得るようアクセスされる。他の実施形態についても記載される。【選択図】図１
2008165793.tif 000002
【特許請求の範囲】
【請求項１】
イベントに対応するデータを記憶する第１の記憶ユニットと、
前記イベントに対応するイールドサービスルーチンのアドレスを記憶する第２の記憶ユニットと、
前記イベントの発生に応答して前記第１の記憶ユニットを更新する第１のロジックと、
前記イベントの発生に応答して前記イールドサービスルーチンを引き起こすよう前記第２の記憶ユニットへのアクセスを行う第２のロジックとを有する装置。
【請求項２】
前記イベントに対応する前記データは、チャネル識別子、シナリオ識別子、カウント、若しくは前記第２の記憶ユニット内の場所へのインデックスのうちの１又はそれ以上を有する、請求項１記載の装置。
【請求項３】
前記インデックスは、前記イールドサービスルーチンの前記アドレスを指し示す、請求項２記載の装置。
【請求項４】
前記第２の記憶ユニットは、前記サービスルーチンによってアクセスされるべきスタックのアドレスを記憶する、請求項１記載の装置。
【請求項５】
前記第１又は第２の記憶ユニットのうちの１又はそれ以上は、プライベートキャッシュ、共有キャッシュ、若しくはアプリケーションメモリのうちの１又はそれ以上を有する、請求項１記載の装置。
【請求項６】
前記イールドサービスルーチンを記憶する第３の記憶ユニットを更に有する、請求項１記載の装置。
【請求項７】
前記イベントの発生を引き起こす１又はそれ以上の命令を実行する実行ユニットを更に有する、請求項１記載の装置。
【請求項８】
前記第１のロジックを有する実行ユニットを更に有する、請求項１記載の装置。
【請求項９】
複数のプロセッサコアを更に有し、
前記複数のプロセッサコアのうちの少なくとも１つは、前記第１のロジック若しくは前記第１の記憶ユニットのうちの１又はそれ以上を有する、請求項１記載の装置。
【請求項１０】
前記第１のロジック、前記第１の記憶ユニット、複数のプロセッサコア、若しくはキャッシュのうちの１又はそれ以上は、同じ集積回路ダイ上にある、請求項１記載の装置。
【請求項１１】
第１の記憶ユニットにおいてイベントに対応するデータを更新するステップと、
第２の記憶ユニットに前記イベントに対応するイールドサービスルーチンのアドレスを記憶するステップと、
前記イベントの発生に応答して前記イールドサービスルーチンを引き起こすステップとを有する方法。
【請求項１２】
モニタへ１又はそれ以上の条件を定義するステップを更に有する、請求項１１記載の方法。
【請求項１３】
前記第１の記憶ユニットに前記イベントに対応するデータを記憶するステップは、前記定義された１又はそれ以上の条件に従って実行される、請求項１２記載の方法。
【請求項１４】
前記イベントが発生したことを示す信号を発生させて、該発生した信号に応答して前記第２の記憶ユニットにアクセスするステップを更に有する、請求項１１記載の方法。
【請求項１５】
前記イベントに対応するデータをスタック若しくはサービスルーチンデータブロック（ＳＲＤＢ）に保存するステップを更に有する、請求項１１記載の方法。
【請求項１６】
前記イベントに対応するデータをスタック又はＳＲＤＢからリストアするステップを更に有する、請求項１１記載の方法。
【請求項１７】
プロセッサで実行される場合に、前記プロセッサを、
第１の記憶ユニットにイベントに対応するデータを記憶し、
第２の記憶ユニットに前記イベントに対応するイールドサービスルーチンのアドレスを記憶し、
前記イールドサービスルーチンを引き起こすよう前記イベントの発生に応答して前記第２の記憶ユニットにアクセスする
よう設定する１又はそれ以上の命令を有するコンピュータ読み取り可能な媒体。
【請求項１８】
前記プロセッサを、モニタへ１又はそれ以上の条件を定義するよう設定する１又はそれ以上の命令を更に有する、請求項１７記載のコンピュータ読み取り可能な媒体。
【請求項１９】
前記プロセッサを、スタック若しくはＳＲＤＢにおいて前記イベントに対応するデータを読み出すよう設定する１又はそれ以上の命令を更に有する、請求項１７記載のコンピュータ読み取り可能な媒体。
【請求項２０】
前記プロセッサを、スタック若しくはＳＲＤＢから前記イベントに対応するデータをリストアするよう設定する１又はそれ以上の命令を更に有する、請求項１７記載のコンピュータ読み取り可能な媒体。
【請求項２１】
サービスルーチンデータブロック（ＳＲＤＢ）に対応するデータを記憶するメモリと、
前記サービスルーチンデータブロックにアクセスするよう前記メモリへ結合されるプロセッサとを有し、
前記プロセッサは、
イベントに対応するデータを記憶するチャネルと、
前記イベントの発生に応答して前記イベントに対応するイールドサービスルーチンを引き起こすよう前記サービスルーチンデータブロックへのアクセスを生ずる第１のロジックとを有する、コンピュータシステム。
【請求項２２】
前記イベントに対応する前記データは、チャネル識別子、シナリオ識別子、カウント、若しくは第２の記憶ユニット内の場所へのインデックスのうちの１又はそれ以上を有する、請求項２１記載のシステム。
【請求項２３】
前記インデックスは、前記イールドサービスルーチンのアドレスを指し示す、請求項２２記載のシステム。
【請求項２４】
前記サービスルーチンデータブロックは、前記イールドサービルルーチンに対応するスタックのアドレスを記憶する、請求項２１記載のシステム。
【請求項２５】
前記メモリは、プライベートキャッシュ、共有キャッシュ、若しくはアプリケーションメモリのうちの１又はそれ以上を含む、請求項２１記載のシステム。
【請求項２６】
前記メモリは、前記イールドサービスルーチンを記憶する、請求項２１記載のシステム。
【請求項２７】
前記イベントの発生を引き起こす１又はそれ以上の命令を実行する実行ユニットを更に有する、請求項２１記載のシステム。
【請求項２８】
前記第１のロジックを有する実行ユニットを更に有する、請求項２１記載のシステム。
【請求項２９】
複数のプロセッサコアを有し、
前記プロセッサは、前記複数のプロセッサコアを有し、
前記複数のプロセッサコアのうちの少なくとも１つは、前記第１のロジックを有する、請求項２１記載のシステム。
【請求項３０】
前記メモリへ結合される音声装置を更に有する、請求項２１記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、エレクトロニクスの分野に関する。より具体的に、本発明の実施形態は、選択イベントの発生後にプロセッサにおいて実行フローを非同期的に制御するための技術に関する。
【背景技術】
【０００２】
様々なメカニズムは、プロセッサにおいて制御のフロー（例えば、処理経路若しくは後に続く命令シーケンスなど。）を変更するために使用され得る。例えば、割り込みは、非同期的にプロセッサにおいて制御のフローを変更するために使用され得る。一般に、従来の割り込みは、プロセッサとは異なった集積回路チップ上の外部デバイスによってトリガされる。次いで、プロセッサは、割り込み処理ルーチンへと飛ぶことによって割り込みに応答することができる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、割り込みは、概して、オペレーティングシステム、又は、オペレーティングシステム以外の、より低い権限レベルを有する他のソフトウェアプログラムによってマスキングをかけられ得、オペレーティングシステム（ＯＳ）を変更することなくこのような制御フロー変更条件を変える機会は存在し得ない。従って、プロセッサにおいて制御のフローを非同期的に変更するための現在の技術は、１つには、このような技術が外部デバイスによって発生した割り込みに依存しうるので、制限されている。
【課題を解決するための手段】
【０００４】
上記解題を解決するために、イベントに対応するデータを記憶する第１の記憶ユニットと、前記イベントに対応するイールドサービスルーチンのアドレスを記憶する第２の記憶ユニットと、前記イベントの発生に応答して前記第１の記憶ユニットを更新する第１のロジックと、前記イベントの発生に応答して前記イールドサービスルーチンを引き起こすよう前記第２の記憶ユニットへのアクセスを行う第２のロジックとを有する装置が提供される。
【発明の効果】
【０００５】
本発明により、選択イベントの発生後にプロセッサにおいて実行フローを非同期的に制御するための技術が提供され得る。
【発明を実施するための最良の形態】
【０００６】
詳細な記載は、添付の図面を参照して提供される。図面中で、参照番号の一番左の数字は、参照番号が最初に現れるところの図を示す。異なる図における同じ参照番号の使用は、同一の又は類似する事項を示す。
【０００７】
以下の記載で、多数の具体的詳細が、様々な実施形態の徹底的な理解を提供するために示されている。しかし、本発明の様々な実施形態は、具体的詳細を用いずとも実施され得る。他の例で、よく知られている方法、手順、構成要素、及び回路は、本発明の特定の実施形態を分かりにくくしないように記載されていない。更に、本発明の実施形態の様々な態様は、例えば、集積半導体回路（“ハードウェア”）、１又はそれ以上のプログラムにまとめられたコンピュータ読み取り可能な命令（“ソフトウェア”）、又はハードウェア及びソフトウェアのある組合せなど、様々なメカニズムを用いて実行され得る。本開示のために、“ロジック”への言及は、ハードウェア、ソフトウェア、又はそれらのある組合せのいずれかを意味する。
【０００８】
ここで論じられる実施形態の幾つかは、イベント処理動作を実行するために利用され得る。実施例において、“イベント”は、幾つかのアクションがロジックによって取られることを必要とする若しくは必要としない状態をいう。更に、イベントは、取られるべきアクションに基づいて、様々な種類に分類され得る。例えば、ある例外（例えば、零による分割。）は、対応する命令が実行されるたびに生ずる同期イベントとして特徴付けられ得る。他方で、外部デバイスによって発生する割り込みは、１つには、割り込みがいつでも起こり得るので、非同期イベントとして特徴付けられ得る。一実施形態で、“アーキテクチャ上のイベント”は、例えば、アーキテクチャ上のイベントに対応する情報を、図２を参照して論じられるように、チャネルにプログラミングすることによって、監視され得るイベント若しくは状態をいう。実施例において、ソフトウェアは、別な方法ではソフトウェア及び／又はハードウェアによって観測可能でないあるアーキテクチャ上のイベントを監視するよう、チャネルを構成することができる。例えば、最後のレベルのキャッシュミスは、動的プロファイルに基づく最適化（ＰＧＯ）を実行するために使用されるアーキテクチャ上のイベントとして定義される。また、アーキテクチャ上のイベントは、プロセッサと同じ集積回路チップ上に配置されている、あるいは、プロセッサと通信しているコプロセッサにおいて起こっている状態を監視するよう定義され得る。実施例において、“アーキテクチャ上のイベント”は、概して、プロセッサと同じ集積回路チップ上にある処理リソース又は他のロジック内で起こるイベント若しくは状態をいう。幾つかの実施例で、アーキテクチャ上のイベントは、様々な世代のプロセッサにおいてサポートされ得る。
【０００９】
一実施形態で、イベント（例えば、アーキテクチャ上のイベント。）が起こった（あるいは、起こったことが検出された）後、対応する発生応答（例えば、イールド（ｙｉｅｌｄ）。）は、記憶ユニットに記憶されているアドレスを利用することによって初期化され得る。アドレスは、目的応答（例えば、イールドサービスルーチンとも呼ばれるイールドイベント処理ルーチン。）を指し示すことができる。更に、（サービスルーチンデータブロック（ＳＲＤＢ）とも呼ばれる）記憶ユニットは、イベント若しくは状態に応答して、例えば、スタックの切替、制御の転送、及び／又は、新しいメモリコンテキストの使用など、コンピュータシステムを準備する情報を記憶することができる。記憶ユニットは、また、イベント若しくは状態が処理された後にリストアされ得るシステムコンテキストを記憶するための空間を提供することができる。
【００１０】
実施例で、プロセッサにおいて提供される様々なロジックは、例えば、図１、２、５及び６を参照して論じられるプロセッサのように、イベント処理タスクを実行するために使用され得る。より具体的に、図１は、本発明の実施形態に従うコンピュータシステム１００のブロック図を表す。システム１００は、１又はそれ以上のプロセッサ１０２−１乃至１０２−Ｎ（概して、本明細書中で“プロセッサ１０２”と呼ばれる。）を有することができる。プロセッサ１０２は、相互接続ネットワーク若しくはバス１０４を介して通信することができる。各プロセッサは様々な構成要素を有し、これらの構成要素のうちの幾つかは、明瞭さのために、プロセッサ１０２−１のみを参照して論じられる。従って、残りのプロセッサ１０２−２乃至１０２−Ｎの夫々は、プロセッサ１０２−１を参照して論じられる同一の又は類似する構成要素を含みうる。
【００１１】
実施例において、プロセッサ１０２−１は、１又はそれ以上のプロセッサコア１０６−１乃至１０６−Ｍ（本明細書中で“コア１０６”と呼ばれる。）、共有キャッシュ１０８、及び／又はルータ１１０を有することができる。プロセッサコア１０６は、単一の集積回路（ＩＣ）チップ上で実施され得る。更に、チップは、１又はそれ以上の共有キャッシュ（例えば、キャッシュ１０８。）及び／又はプライベートキャッシュ（例えば、概して“Ｌ１キャッシュ１１１”と呼ばれるレベル１（Ｌ１）キャッシュ１１１−１。）、バス若しくは相互接続（例えば、バス若しくは相互接続ネットワーク１１２。）、メモリコントローラ（例えば、図５及び６を参照して論じられるもの。）、あるいは、他の構成要素を有することができる。
【００１２】
一実施形態で、ルータ１１０は、プロセッサ１０２−１及び／又はシステム１００の様々な構成要素の間で通信するために使用され得る。更に、プロセッサ１０２−１は、１よりも多いルータ１１０を有しても良い。更に、多数のルータ（１１０）は、プロセッサ１０２−１の内側若しくは外側の様々な構成要素の間のデータルーティングを可能にするよう通信することができる。
【００１３】
共有キャッシュ１０８は、例えばコア１０６など、プロセッサ１０２−１の１又はそれ以上の構成要素によって利用されるデータ（例えば、命令を含む。）を記憶することができる。例えば、共有キャッシュ１０８は、プロセッサ１０２の構成要素による高速アクセスのために、メモリ１１４に記憶されたデータを局所的にキャッシュに格納することができる。実施例で、キャッシュ１０８は、中間レベルキャッシュ（例えば、キャッシュのレベル２（Ｌ２）、レベル３（Ｌ３）、レベル４（Ｌ４）、若しくは他のレベル。）最後のレベルのキャッシュ（ＬＬＣ）、及び／又はそれらの組合せを含みうる。更に、プロセッサ１０２−１の様々な構成要素は、バス（例えば、バス１１２。）、及び／又はメモリコントローラ若しくはハブを介して、直接に共有キャッシュ１０８と通信することができる。図１に示されるように、サービスルーチンデータブロック（ＳＲＤＢ）１２０はメモリ１１４に記憶され得る。更に、ＳＲＤＢ１２０は、例えば、図２乃至４を参照して、本明細書中で更に論じられるように、イベント発生に応答してイールドサービスルーチンの起動を引き起こすために、コア１０６の構成要素によって利用され得る。
【００１４】
図２は、本発明の実施形態に従うコンピュータシステムのプロセッサコア１０６及び他の構成要素の部分のブロック図を表す。一実施形態で、図２に示される矢印は、コア１０６を通る命令のフロー方向を表す。１又はそれ以上のプロセッサコア（例えば、プロセッサコア１０６。）は、例えば、図１を参照して論じられるような、単一の集積回路チップ（ダイ（ｄｉｅ））において実施され得る。更に、チップは、１又はそれ以上の共有キャッシュ及び／又はプライベートキャッシュ（例えば、図１のキャッシュ１０８。）、相互接続（例えば、図１の相互接続１０４及び／又は１１２。）、メモリコントローラ、あるいは、他の構成要素を含みうる。
【００１５】
図２に表されるように、プロセッサコア１０６は、コア１０６による実行のための命令を取ってくる（フェッチする）フェッチユニット２０２を有することができる。命令は、例えば、メモリ１１４及び／又は図５及び６を参照して論じられるメモリデバイスのような、いずれかの記憶装置から取り出され得る。コア１０６は、また、取り出された命令を復号するデコードユニット２０４を有することができる。例えば、デコードユニット２０４は、取り出された命令を複数のｕＯＰｓ（マイクロオペレーションズ）に復号することができる。更に、コア１０６は、スケジュールユニット２０６を有することができる。スケジュールユニット２０６は、命令がディスパッチのために準備ができるまで、例えば、復号された命令の全てのソース値が利用可能となるまで、復号された命令（例えば、デコードユニット２０４から受け取った命令。）の記憶に関連する様々な動作を実行することができる。一実施形態で、スケジュールユニット２０６は、実行用の実行ユニット２０８へ、復号された命令をスケジュール及び／又は発行（即ち、ディスパッチ）することができる。実行ユニット２０８は、命令が（例えば、デコードユニット２０４によって）復号されて、（例えば、スケジュールユニット２０６によって）ディスパッチされた後、ディスパッチされた命令を実行することができる。実施例で、実行ユニット２０８は、例えば、メモリ実行ユニット、整数実行ユニット、浮動小数点実行ユニット、若しくは他の実行ユニットのような、１又はそれ以上の実行ユニットを有しうる。実行ユニット２０８は、また、例えば、加算、減算、乗算、及び／又は除算のような、様々な算術演算を実行することができ、１又はそれ以上の算術論理演算ユニット（ＡＬＵ）を有しうる。実施例で、コプロセッサ（図示せず。）は、実行ユニット２０８と協働して、様々な算術演算を実行することができる。
【００１６】
更に、実行ユニット２０８は、ばらばらの順序で命令を実行することができる。従って、プロセッサコア１０６は、一実施形態で、アウト・オブ・オーダ・プロセッサであっても良い。コア１０６は、また、リタイアメントユニット２１０を有することができる。リタイアメントユニット２１０は、命令が実行された後に、実行された命令を退去させることができる。実施例で、実行された命令の退去により、結果として、プロセッサの状態は命令の実行から引き渡され、命令によって使用される物理的なレジスタは割当を解除される、などのことが起こる。
【００１７】
コア１０６は、更に、（例えば。フェッチユニット２０２によって）取り出された命令のマイクロコード及び／又はトレースを記憶するトレースキャッシュ若しくはマイクロコード読み出し専用メモリ（μＲＯＭ）２１２を有することができる。μＲＯＭ２１に記憶されるマイクロコードは、コア１０６の様々なハードウェア構成要素を設定するために使用され得る。実施例で、μＲＯＭ２１２に記憶されるマイクロコードは、例えば、コンピュータ読み取り可能な媒体若しくは図５及び６を参照して論じられる他の記憶装置など、プロセッサコア１０６と通信する他の構成要素からロードされ得る。コア１０６は、また、１又はそれ以上のバス（例えば、バス１０４及び／又は１１２。）を介するプロセッサコア１０６の構成要素と他の構成要素（例えば、図１を参照して論じられる構成要素。）との間の通信を可能にするバスユニット２１４を有することができる。コア１０６は、更に、コア１０６の様々な構成要素によってアクセスされるデータを記憶する１又はそれ以上のレジスタ２１６を有することができる。
【００１８】
更に、図１に表されるプロセッサコア１０６は、アーキテクチャ状態の組に対応する１又はそれ以上のチャネル２１８を有することができる。各権限レベル（例えば、権限レベル０又は監督権限レベル（例えば、最も高い権限レベル。）、権限レベル３（例えば、実施例におけるユーザレベル権限に対応しうる比較的低い権限レベル。）など。）は、対応するチャネルを有する。更に、各チャネル２１８は、また、シナリオがロジック条件を定義する場合に、１又はそれ以上のシナリオにより設定され得る。従って、チャネルは、アーキテクチャ状態の組と、更に、設定されるロジック条件の記述とを含みうる。実施例で、チャネル２１８は、シナリオ規格を含みうる。次いで、イールドイベントは、チャネルにおけるアーキテクチャ状態が、チャネルの設定されるロジック条件（即ち、シナリオ。）に一致するか、あるいは、それを越える場合に、信号により伝送され得る。従って、イールドイベントは、シナリオへの発生応答である。更に、チャネルの実施形態に関する詳細については、図３を参照して論じられる。
【００１９】
従って、コア１０６は、例えば、対応するイールドイベントをトリガするために使用され得る（例えば、チャネル２１８における）アーキテクチャ上定義されるシナリオに関連する１又はそれ以上のイベントの発生を監視するよう、イベント監視ロジック２２０を有することができる。図２に示されるように、ロジック２２０は、実行ユニット２０８内に設けられ得る。しかし、ロジック２２０は、プロセッサコア１０６の他の場所に設けられても良い。例えば図３及び４を参照して、本明細書中で更に論じられるように、ロジック２２０は、監視されるイベントが起こった後に信号を発生することができ、それに応じて、監視ロジック２２１は、例えば、チャネル２１８に記憶されるデータに基づいて、（メモリ１１４、Ｌ１キャッシュ１１１、及び／又は共有キャッシュ１０８に記憶され得る）ＳＲＤＢ１２０及び／又はスタックに記憶されるデータを更新することができる。例えば、（例えば、チャネル２１８に記憶されるデータを参照して）監視されるイベントは、プロセッサコア１０６における現在の命令シーケンスの実行に関して、非同期的に起こり得る。
【００２０】
更に、図２に示されるように、ＳＲＤＢ１２０は、メモリ１１４の代わりに、あるいは、メモリ１１４に加えて、キャッシュ１１１及び／又は１０８のうちの１又はそれ以上に記憶（又はキャッシュに格納）され得る。メモリ１１４は、また、（例えば、ロジック２２０によるイベントの検出に応答して起動され得る）イールドイベント処理若しくはサービスルーチン２２２、（例えば、コア１０６を含むコンピュータシステムのハードウェア若しくはソフトウェアリソースを管理する）オペレーティングシステム２２４、及び／又は（例えば、ＯＳ２２４と、図５及び６を参照して論じられるもののような様々な装置との間の通信を可能にする）デバイスドライバ２２５のうちの１又はそれ以上を記憶することができる。一実施形態で、ロジック２２０が、監視ロジック２２１に、監視されるイベントの検出に応答してＳＲＤＢ１２０にアクセスさせた後、イールドサービスルーチン（２２２）のアドレスがＳＲＤＢ１２０から得られる。
【００２１】
図３は、実施例に従うコンピュータシステムの様々な部分を表す。例えば、チャネル２１８に記憶される可能な情報が図３に示されており、これは、少なくとも１つの命令セット・アーキテクチャに従ってＥＭＯＮＩＴＯＲ命令のパラメータとしてチャネルへ送られる。かかるパラメータは、レジスタｅａｘにおけるシナリオ固有情報と、レジスタｅｃｘにおけるチャネル識別子及び／又はシナリオ識別子と、レジスタｅｄｘにおける基準ポインタ（ＳＲＤＳ）と、レジスタｅｂｘにおけるオフセット値（ＳＲＤＰＢ）とを含みうる。レジスタｅａｘにおけるシナリオ固有情報はカウント値を示すことができる。カウント値は、ｓａｍｐｌｅ  ａｆｔｅｒ  ｖａｌｕｅと呼ばれる初期値からカウントダウンする。カウント値が零に達すると、そのアンダーフロー（ｕｎｄｅｒｆｌｏｗ）はイールドサービスルーチンを起動させうる。このｓａｍｐｌｅ  ａｆｔｅｒ  ｖａｌｕｅが大きくなればなるほど、サンプリングレートはますます低くなる。チャネル識別子は、命令の実行によって設定されるべきチャネルを示すことができる。シナリオ識別子は、チャネル識別子によって特定されるチャネルが設定されるシナリオの一意の識別子を示す。ＳＲＤＳ及びＳＲＤＢＰは、集合的に、ＳＲＤＢ１２０の場所へのポインタとして働くことができる。ＳＲＤＢ１２０は、サービスルーチンスタックポインタ（ＳＲＳＰ）と共に、メモリ１１４に記憶される対応するイールドイベントスタックを示すサービスルーチンスタックセグメント（ＳＲＳＳ）を含みうる。代替的に、単一の値が、ＳＲＤＢ１２０を指し示すために、あるいは、ＳＲＤＢ１２０にインデックスを付すために使用され得る。図３に示されるように、ＳＲＤＢ１２０は、また、サービスルーチン命令ポインタ（ＳＲＩＰ）及びサービスルーチンコードセグメント（ＳＲＣＳ）を記憶することができる。これらは、集合的に、メモリ１１４に記憶されるイールドサービス（２２２）ルーチンを示す。様々な実施例で、ＳＲＤＢ１２０に存在するフィールドの幾つか又は全ては、代わりに、プロセッサコア１０６に存在しても良い。それらをメモリで保持することにより、コンテキスト切替をなされる必要があるソフトウェアスレッド固有状態の量を減らすことができる。
【００２２】
従って、ＳＲＤＢ１２０は、実施例においてスタックを切替え、制御を転送し、且つ、新しいデータメモリコンテキストを使用するために使用され得る情報を記憶することができる。更に、ＳＲＤＢ１２０は、コンテキスト切替を通してアプリケーションメモリ（例えば、メモリ１１４の一部。）に保たれ、保存又はリストアをなされる必要がない。更に、単一の値が、メモリ１１４に記憶されるイールドサービスルーチン（２２２）及び／又はイールドイベントスタックを指し示すために使用され得る。また、イールドサービスルーチン（２２２）及びイールドサービススタックは、（例えば、メモリ１１４のアプリケーションメモリ部でありうる）メモリ１１４に加えて、あるいは、メモリ１１４に代わって、Ｌ１キャッシュ１１１及び／又は共有キャッシュ１０８に記憶され得る。また、データは、如何なる順序でもＳＲＤＢ１２０に記憶され得る。従って、図３に示されるＳＲＤＢ１２０の構成は、単なる一実施形態の例である。
【００２３】
図４は、実施例に従う、イベントの発生に応答してイールドの発生を生ずる方法４００のフロー図を表す。幾つかの実施例で、図１乃至３並びに５及び６を参照して論じられる様々な構成要素は、図４を参照して論じられる動作の１又はそれ以上を実行するために利用され得る。例えば、図４を参照して論じられる動作のうちの少なくとも幾つかは、図２及び３を参照して論じられるＳＲＤＢエントリを参照することによって実行され得る。
【００２４】
図１乃至４を参照すると、動作４０２で、様々な条件（例えば、シナリオ。）が（例えば、プログラマによって）定義され得る。実施例で、動作４０２の定義される条件に対応するデータは、チャネル２１８に記憶されても良い。また、図２及び３のＳＲＤＢ１２０に関する様々な情報は、動作４０２で設定され得る。情報は、例えば、図３を参照して論じられるような、チャネル２１８に記憶され得るＳＲＤＢ１２０にインデックスを付す値の１又はそれ以上を含む。動作４０４で、１又はそれ以上のイベントが（例えば、シナリオに対応するアーキテクチャ上のイベント。）が発生したかどうかが判断される。実施例で、ロジック２２０は、動作４０４で、チャネル２１８における１又はそれ以上のイベントが発生したかどうかを決定することができる。
【００２５】
動作４０４が、監視されるイベントの発生を決定すると、目標応答が動作４０６で決定され得る。例えば、チャネル２１８に記憶されるデータは、例えば、図３を参照して論じられるもののように、動作４０６でアクセスされ得る。動作４０７Ａ及び４０７Ｂで、対応する状態が更新されるべきかどうかが判断される。その状態の幾つかは、例えば、カウンタ値のように、チャネル固有であり、幾つかは、例えば、イールドが取られた命令へのポインタ、又はブランチヒストリ（ｂｒａｎｃｈ  ｈｉｓｔｏｒｙ）情報のように、チャネル間で共有され得る（チャネル間状態）。動作４０８で、現在のイベントに対応するデータが、また、メモリに保存されるべきかどうかが判断され得る。動作４０８で、イールドが引き起こされるべきかどうかが判断され得る。そうである場合、動作４１２は、イールドサービスルーチンを起動するために必要な動作を処理することができる。例えば、監視されるイベントの発生時に、現在のＳＳ、ＳＰ、ＤＳ、ＣＳ、ＩＰ及びフラッグ値は、動作４１３でＳＲＤＢ１２０に記憶され得、サービスルーチンに関連するＳＳ、ＳＰ、ＤＳ、ＣＳ及びＩＰは、ＳＲＤＢ１２０からプロセッサにロードされ得る。ＳＳ及びＳＰは、スタックを切り替えることが不要であると知られる実施例では、ＳＲＤＢ１２０には保存されず、ＳＲＤＢ１２０に記憶される値へ切り替えられない。代替の実施例で、ＳＲＤＢ１２０に保存されるイールドの前の実行コンテキストからの情報は、代わりに、スタックへ保存されて、サービスルーチンの終了時にリストアされ得る。更なる他の実施例で、その情報は、ＳＲＤＢ１２０によって指し示されるスタックに置かれても良い。これらのアプローチは、例えば、イールドサービスルーチンが起動され、一方、他のイールドサービスルーチンが実行を終えていない場合に、イールドイベント処理のネスティングを容易にすることができる。
【００２６】
実施例で、イールドサービスルーチンの間、チャネル固有の且つチャネル間の状態は、プロセッサレジスタ若しくはメモリに読み出され得る。この状態は処理され得、他の動作が、４１３Ｂに示されるように、取られ得る。４１４に示されるようにイールド処理が行われると、特定の命令が、イベント処理が終了した（４１５）ことを示すよう、イールドサービスルーチン（２２２）の終了時に実行され得る。イールドサービルルーチンの起動前にＳＲＤＢ１２０に又はスタック（例えば、ＳＳ、ＳＰ、ＤＳ、ＣＳ、ＩＰ、及びフラッグ。）に前もって保存されているデータは、プロセッサへリストアされ得、命令ストリームの実行が続く。
【００２７】
幾つかの実施例で、イールドはネストすることができる。即ち、イールドサービルルーチンを実行している間、他のイールドを取るための条件は、例えば、イールドがイールドサービスルーチンによって（例えば、イールドブロックビット（ＹＢＢ）をクリアすることによって）取り除かれた後に、満足され得る。このようなネスティングが認容されるべきである場合に、実施例において、以下の動作がＹＢＢをクリアする前に実行され得る。
【００２８】
（１）チャネルからＳＲＤＢ１２０のセグメントベース（ＳＲＤＳ）及びオフセット（ＳＲＤＢＰ）を読み出し、それを、ＳＲＤＢを見つけて、そのＳＲＤＢにおいてＳＲＳＰフィールドを変更するために使用する。
【００２９】
（２）そのＳＲＳＰを、余地が利用可能なであることが知られる場合に、現在のＳＲＳＰの直下へと、あるいは、他のスタックへと調整する。ＳＲＤＢ１２０で必要とされるスタック間のリンクを構成する。これは、ＳＲＤＢ又は古いスタックのいずれか一方を指し示す新しいスタックでの情報の記憶を生じさせる。従って、スタックウォーキングルーチン及びデバッガは、スタック移行にわたって、円滑にナビゲートすることができる。
【００３０】
更に、以下が、イールドサービスルーチンを実行する前に実行され得る。
【００３１】
（１）ＹＢＢを設定する。
【００３２】
（２）チャネルからＳＲＤＢ１２０のセグメントベース（ＳＲＤＳ）及びオフセット（ＳＲＤＢＰ）を読み出し、それを、ＳＲＤＢにおいてＳＲＳＰフィールドを見つけて変更するために使用する。
【００３３】
（３）そのＳＲＳＰフィールドを、動作４１３Ａでスタックに保存されたその前の値へと調整する。
【００３４】
図５は、本発明の実施形態に従うコンピュータシステム５００のブロック図を表す。コンピュータシステム５００は、相互接続ネットワーク（又はバス）５０４を介して通信する１又はそれ以上の中央演算処理ユニット（ＣＰＵ）５０２又はプロセッサを有することができる。プロセッサ５０２は、汎用プロセッサ、（コンピュータネットワーク５０３を介してやりとりされるデータを処理する）ネットワークプロセッサ、又は（縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサ又は複数命令セットコンピュータ（ＣＩＳＣ）を含む）他の種類のプロセッサを含みうる。更に、プロセッサ５０２は、単一の又は複数のコア設計を有しうる。複数のコア設計を有するプロセッサ５０２は、同じ集積回路（ＩＣ）ダイに異なる種類のプロセッサコアを組み込むことができる。また、複数のコア設計を有するプロセッサ５０２は、同期又は非同期マルチプロセッサとして実施され得る。実施例で、プロセッサ５０２の１又はそれ以上は、図１のプロセッサ１０２と同一又は類似であっても良い。例えば、プロセッサ５０２の１又はそれ以上は、図１及び／又は図２を参照して論じられたコア１０６の１又はそれ以上を有することができる。また、図１乃至４を参照して論じられた動作が、システム５００の１又はそれ以上の構成要素によって実行されても良い。
【００３５】
チップセット５０６は、また、相互接続ネットワーク５０４と通信することができる。チップセット５０６は、メモリ制御ハブ（ＭＣＨ）５０８を有することができる。ＭＣＨ５０８は、（図１のメモリ１１４と同一又は類似でありうる）メモリ５１２と通信するメモリコントローラ５１０を有することができる。メモリ５１２は、ＣＰＵ５０２、又はコンピュータシステム５００に含まれるその他装置によって実行され得る命令のシーケンスを含むデータを記憶することができる。本発明の一実施形態で、メモリ５１２は、例えば、ランダムアクセスメモリ（ＲＡＭ）、動的ＲＡＭ（ＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、静的ＲＡＭ（ＳＲＡＭ）、又は他の種類の記憶装置などの、１又はそれ以上の揮発性記憶装置（又はメモリ装置）を含みうる。不揮発性メモリが、また、例えばハードディスクのように、利用されても良い。更なる装置は、例えば、複数のＣＰＵ及び／又は複数のシステムメモリのように、相互接続ネットワーク５０４を介して通信することができる。
【００３６】
ＭＣＨ５０８は、また、表示装置５１６と通信するグラフィックインターフェース５１４を有することができる。本発明の一実施形態で、グラフィックインターフェース５１４は、グラフィック専用高速バス（ＡＧＰ）を介して表示装置５１６と通信することができる。本発明の実施例で、表示装置５１６（例えば、フラットパネルディスプレイ。）は、例えば、信号変換器を介して、グラフィックインターフェース５１４と通信することができる。信号変換器は、ビデオメモリ若しくはシステムメモリのような記憶装置に記憶される画像のデジタル表示を、表示装置５１６によって解釈されて表示される表示信号に変換する。表示装置によって生成される表示信号は、表示装置５１６によって解釈されて、その後に表示される前に、様々な制御装置を通っても良い。
【００３７】
ハブインターフェース５１８は、ＭＣＨ５０８及び入出力制御ハブ（ＩＣＨ）５２０が通信することを可能にする。ＩＣＨ５２０は、コンピュータシステム５００と通信する入出力（Ｉ／Ｏ）装置を提供することができる。ＩＣＨ５２０は、例えば、周辺構成要素相互接続（ＰＣＩ）ブリッジ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、又は他の種類の周辺ブリッジ若しくはコントローラなどの、周辺ブリッジ（又はコントローラ）５２４を介して、バスと通信することができる。ブリッジ５２４は、ＣＰＵ５０２と周辺装置との間にデータ経路を提供することができる。他の種類のトポロジーが利用されても良い。また、複数のバスは、例えば複数のブリッジ若しくはコントローラを介して、ＩＣＨ５２０と通信することができる。更に、ＩＣＨ５２０と通信する他の周辺装置は、本発明の様々な実施例において、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）若しくは小型コンピュータ用周辺機器インターフェース（ＳＣＳＩ）ハードドライブ、ＵＳＢポート、キーボード、マウス、パラレルポート、シリアルポート、フロッピー（登録商標）ディスクドライブ、デジタル出力サポート（例えば、デジタルビデオインターフェース（ＤＶＩ）。）、又は他の装置を含みうる。
【００３８】
バス５２２は、音声装置５２６、１又はそれ以上のディスクドライブ５２８、及び（コンピュータネットワーク５０３と通信する）ネットワークインターフェース装置５３０と通信することができる。他の装置が、バス５２２を介して通信しても良い。また、様々な構成要素（例えば、ネットワークインターフェース装置５３０。）は、本発明の幾つかの実施例でＭＣＨ５０８と通信することができる。加えて、プロセッサ５０２及びＭＣＨ５０８は、単一のチップを形成するよう結合されても良い。更に、グラフィック・アクセラレータが、本発明の他の実施例において、ＭＣＨ５０８内に含まれても良い。
【００３９】
更に、コンピュータシステム５００は、揮発性メモリ及び／又は不揮発性メモリ（即ち、記憶ユニット）を有しても良い。例えば、不揮発性メモリは、読み出し専用メモリ（ＲＯＭ）、プログラム可能ＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、ディスクドライブ（例えば、５２８。）、フロッピー（登録商標）ディスク、コンパクトディスクＲＯＭ（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、フラッシュメモリ、光磁気ディスク、又は、他の種類の（例えば、命令を含む）電子データを記憶可能な不揮発性の機械読取可能な媒体、のうちの１又はそれ以上を含みうる。
【００４０】
図６は、本発明の実施例に従う、２地点間（ＰｔＰ）構成で配置されるコンピュータシステム６００を表す。具体的に、図６は、プロセッサ、メモリ、及び入出力装置が多数の２地点間インターフェースによって相互接続されるところのシステムを示す。図１乃至５を参照して論じられた動作は、システム６００の１又はそれ以上の構成要素によって実行され得る。
【００４１】
図６に表されるように、システム６００は、幾つかのプロセッサを有することができる。これらのプロセッサのうちの２つのプロセッサ６０２及び６０４しか、明瞭さのために示されない。プロセッサ６０２及び６０４は、夫々、メモリ６１０及び６１２との通信を可能にする局所メモリコントローラハブ（ＭＣＨ）６０６及び６０８を有することができる。メモリ６１０及び／又は６１２は、例えば、図５のメモリ５１２を参照して論じられたように、様々なデータを記憶することができる。
【００４２】
実施例で、プロセッサ６０２及び６０４は、図５で論じられたプロセッサ５０２の１つであっても良い。プロセッサ６０２及び６０４は、夫々、ＰｔＰインターフェース回路６１６及び６１８を用いて、ＰｔＰインターフェース６１４を介してデータを交換することができる。また、プロセッサ６０２及び６０４は、夫々、ＰｔＰインターフェース回路６２６、６２８、６３０及び６３２を用いて、個々のＰｔＰインターフェース６２２及び６２４を介してチップセット６２０とデータを交換することができる。チップセット６２０は、更に、例えば、ＰｔＰインターフェース回路６３７を用いて、グラフィックインターフェース６３６を介してグラフィックス回路６３４とデータを交換することができる。
【００４３】
本発明の少なくとも１つの実施形態は、プロセッサ６０２及び６０４内に設けられ得る。例えば、図１及び２のコア１０６の１又はそれ以上は、プロセッサ６０２及び６０４内に配置されても良い。しかし、本発明の他の実施形態は、図６のシステム内の他の回路、ロジックユニット、若しくは装置に存在しうる。更に、本発明の他の実施形態は、図６に表される幾つかの回路、ロジックユニット、若しくは装置の全体にわたって分布しうる。
【００４４】
チップセット６２０は、ＰｔＰインターフェース回路６４１を用いて、バス６４０と通信することができる。バス６４０は、例えば、バスブリッジ６４２若しくはＩ／Ｏ装置６４３などの１又はそれ以上の装置と通信することができる。バス６４４を介して、バスブリッジ６４２は、例えば、キーボード／マウス６４５、通信装置６４６（例えば、モデム、ネットワークインターフェース装置、若しくは、コンピュータネットワーク５０３と通信することができる他の通信装置。）、音声Ｉ／Ｏ装置６４７、及び／又はデータ規則装置６４８などの他の装置と通信することができる。データ記憶装置６４８は、プロセッサ６０２及び／又は６０４によって実行され得るコード６４９を記憶することができる。
【００４５】
本発明の様々な実施例で、例えば図１乃至６を参照して本明細書中で論じられる動作は、ハードウェア（例えば、ロジック回路。）、ソフトウェア、ファームウェア、若しくはそれらの組合せとして実施され得る。それらは、例えば、本明細書中で論じられる処理を実行するようコンピュータをプログラムするために使用される命令（若しくはソフトウェアプロシージャ）を記憶した機械読取可能な又はコンピュータ読取可能な媒体を含む、コンピュータプログラムプロダクトとして提供され得る。機械読取可能な媒体は、図１乃至６を参照して論じられたような記憶装置を含んでも良い。
【００４６】
更に、このようなコンピュータ読取可能な媒体は、コンピュータプログラムプロダクトとしてダウンロードされても良い。このとき、プログラムは、通信リンク（例えば、バス、モデム、又はネットワーク接続。）を介して、搬送波若しくは他の伝播媒体において具現されるデータ信号によって、遠くのコンピュータ（例えば、サーバ。）から要求中のコンピュータ（例えば、クライアント。）へ転送され得る。従って、ここで、搬送波は、機械読取可能な媒体を含むと考えられる。
【００４７】
明細書における“一実施形態”、“実施例”、又は“幾つかの実施例”への言及は、その実施形態に関連して記載される特定の特性、構成、又は特徴が少なくとも１つの実施に含まれうることを意味する。明細書中の様々な場所での“一実施形態で”というフレーズの出現は、全て、同じ実施形態について述べているわけでない。
【００４８】
また、明細書及び特許請求の範囲において、用語“結合される”及び“接続される”並びにそれらの派生物が使用され得る。本発明の幾つかの実施例で、“接続される”は、２又はそれ以上の要素が、互いに直接的な物理的若しくは電気的接触状態にあることを示すために使用され得る。“結合される”は、２又はそれ以上の要素が、直接的な物理的若しくは電気的接触状態にあることを示すために使用され得る。しかし、“結合される”は、また、２又はそれ以上の要素は、互いに直接的に接していないが、互いに協働又は作用することができることを意味しうる。
【００４９】
このように、本発明の実施形態は、構造的特徴及び／又は方法論的作用に特有な言語で記載されてきたが、当然、請求される主題は、記載される特有の特徴及び作用に限定されない。むしろ、特有の特徴及び作用は、請求される主題を実施する参考形態として開示される。
【図面の簡単な説明】
【００５０】
【図１】本明細書中で説明される様々な実施例を実施するために利用され得るコンピュータシステムの実施形態のブロック図を表す。
【図２】本発明の実施例に従うコンピュータシステムのプロセッサコア及び他の要素の部分のブロック図を表す。
【図３】実施例に従うコンピュータシステムの様々な部分を表す。
【図４】実施例に従う、イベントの発生に応答してイールドの発生を生ずる方法のフロー図を表す。
【図５】本明細書中で説明される様々な実施例を実施するために利用され得るコンピュータシステムの実施形態のブロック図を表す。
【図６】本明細書中で説明される様々な実施例を実施するために利用され得るコンピュータシステムの実施形態のブロック図を表す。
【符号の説明】
【００５１】
１００，５００，６００  コンピュータシステム
１０２，５０２，６０２，６０４  プロセッサ
１０４，５０４  相互接続ネットワーク若しくはバス
１０６  プロセッサコア
１０８  共有キャッシュ
１１０  ルータ
１１１  Ｌ１キャッシュ
１１２  バス若しくは相互接続ネットワーク
１１４，５１２，６１０，６１２  メモリ
１２０  サービスルーチンデータブロック（ＳＲＤＢ）
２０２  フェッチユニット
２０４  デコードユニット
２０６  スケジュールユニット
２０８  実行ユニット
２１０  リタイアメントユニット
２１２  トレースキャッシュ／マイクロコードＲＯＭ
２１４  バスユニット
２１６  レジスタ
２１８  チャネル
２２０  イベント監視ロジック
２２１  監視ロジック
２２２  イールドイベント処理ルーチン
２２４  オペレーティングシステム（ＯＳ）
２２５  デバイスドライバ
５０３  コンピュータネットワーク
５０６，６２０  チップセット
５０８，６０６，６０８  メモリコントローラハブ（ＭＣＨ）
５１０  メモリコントローラ
５１４  グラフィックインターフェース
５１６  表示装置
５２０  入出力制御ハブ（ＩＣＨ）
５２４  周辺ブリッジ
５２６，６４７  音声装置
５２８  ディスクドライブ
５３０  ネットワークインターフェース装置
６１４，６２２，６２４，６３４  ＰｔＰインターフェース
６１６，６１８，６２６，６２８，６３０，６３２，６３７  ＰｔＰインターフェース回路
６３６  グラフィックス回路
６４２  バスブリッジ
６４３  Ｉ／Ｏ装置
６４５  キーボード／マウス
６４６  通信装置
６４８  データ記憶装置
【図１】
2008165793.tif 000003
【図２】
2008165793.tif 000004
【図３】
2008165793.tif 000005
【図４】
2008165793.tif 000006
【図５】
2008165793.tif 000007
【図６】
2008165793.tif 000008