(57)【要約】  機械可読メディア、方法、および装置は、複数の割り込み通知メッセージを発行するために記載される。複数の開示された実施形態において、デバイスは、複数のエッジトリガ特性の割り込み通知メッセージにかかわらず、デバイスを適切に提供するために、レベルセンシティブセマンティクスで書き込まれたデバイスドライバを有効にする方法で、複数の割り込み通知メッセージを生成する。
2007513433.tif 000002
【特許請求の範囲】
【請求項１】
サービスを要求する少なくとも１つのインタラプトを示す第１インタラプトステータスを第２インタラプトステータスにアップデートする段階と、
前記アップデートする段階の後に、前記第２インタラプトステータスが、少なくとも１つのインタラプトがサービスを要求することを示す場合に、インタラプトサービスを要求すべく、割り込み通知メッセージを発行する段階と
を備える方法。
【請求項２】
アップデートする段階は、インタラプトステータスレジスタをアップデートする段階を有する請求項１に記載の方法。
【請求項３】
アップデートする段階は、インタラプトイネーブルレジスタをアップデートする段階を有する請求項１に記載の方法。
【請求項４】
アップデートする段階は、インタラプトステータスレジスタおよびインタラプトイネーブルレジスタをアップデートする段階を有する請求項１に記載の方法。
【請求項５】
アップデートする段階は、前記第１インタラプトステータスから前記第２インタラプトステータスに変化させるべく、インタラプトレジスタの１つの値をアップデートする段階を有し、
前記方法は、
前記インタラプトレジスタのポーリングに応答して、前記第１インタラプトステータスから前記第２インタラプトステータスへの前記変化を検出する段階と、
前記変化の検出に応答して、前記割り込み通知メッセージを発行する段階と
をさらに備える請求項１に記載の方法。
【請求項６】
アップデートする段階は、前記第１インタラプトステータスから前記第２インタラプトステータスに変化させるべく、インタラプトレジスタに１つの値を書き込む段階を有し、
前記方法は、
前記値の書き込みに応答して、前記第１インタラプトステータスから前記第２インタラプトステータスへの前記変化を検出する段階と、
前記変化の検出に応答して、前記メッセージを発行する段階と
をさらに備える請求項１に記載の方法。
【請求項７】
前記割り込み通知メッセージを発行する段階は、メッセージアドレスにメッセージデータを書き込む段階を有する請求項１に記載の方法。
【請求項８】
アップデートする段階は、１つ以上の有効なインタラプトに対してサービスを要求すべく、前記１つ以上の有効なインタラプトをアクティブにする段階を有する請求項１に記載の方法。
【請求項９】
アップデートする段階は、１つ以上のアクティブインタラプトに対してサービスを要求すべく、前記１つ以上のアクティブインタラプトを有効にする段階を有する請求項１に記載の方法。
【請求項１０】
アップデートする段階は、全てのインタラプトに対してサービスを要求しないために、サービスを要求している全てのインタラプトを非アクティブにする段階を有する請求項１に記載の方法。
【請求項１１】
アップデートする段階は、１つの非アクティブにされたインタラプトに対して要求しているサービスを中止すべく、サービスを要求している複数のインタラプトのうちの１つを非アクティブにする段階を有する請求項１に記載の方法。
【請求項１２】
アップデートする段階は、
非アクティブにされたインタラプトに対して要求しているサービスを中止すべく、１つ以上のインタラプトを非アクティブにする段階と、
アクティブにされたインタラプトに対してサービスを要求すべく、１つ以上のインタラプトをアクティブにする段階と
を有する請求項１に記載の方法。
【請求項１３】
１つ以上のインタラプトを有効にするインタラプトイネーブルレジスタと、
１つ以上のインタラプトをアクティブにするインタラプトステータスレジスタと、
前記インタラプトステータスレジスタがアップデートされ、前記インタラプトイネーブルレジスタおよび前記インタラプトステータスレジスタが、サービスを要求する少なくとも１つのインタラプトを示す場合に、割り込み通知メッセージを発行するメッセージシグナルインタラプトジェネレータと
を備える装置。
【請求項１４】
前記インタラプトステータスレジスタがアップデートされて、前記インタラプトステータスレジスタへの書き込みに応答して、前記メッセージシグナルインタラプトジェネレータに信号を送るデバイスインターフェース
をさらに備える請求項１３に記載の装置。
【請求項１５】
前記インタラプトステータスレジスタをアップデートするコア機能を提供し、前記インタラプトステータスレジスタのアップデートに応答して、前記コア機能に対してインタラプトサービスを要求し、さらに前記メッセージシグナルインタラプトジェネレータに信号を送るコアロジック
をさらに備える請求項１３に記載の装置。
【請求項１６】
前記インタラプトイネーブルレジスタがアップデートされ、前記インタラプトイネーブルレジスタおよび前記インタラプトステータスレジスタが、サービスを要求する少なくとも１つのインタラプトを示す場合、前記メッセージシグナルインタラプトジェネレータは、割り込み通知メッセージさらに発行する請求項１３に記載の装置。
【請求項１７】
前記インタラプトイネーブルレジスタがアップデートされ、前記インタラプトイネーブルレジスタへの書き込みに応答して、前記メッセージシグナルインタラプトジェネレータに信号を送るデバイスインターフェース
をさらに備える請求項１６に記載の装置。
【請求項１８】
コア機能に対して１つ以上のインタラプトを有効にすべく、前記インタラプトイネーブルレジスタをアップデートするコア機能を提供し、前記インタラプトステータスレジスタのアップデートに応答して、前記メッセージシグナルインタラプトジェネレータに信号を送るコアロジック
をさらに備える請求項１６に記載の装置。
【請求項１９】
前記メッセージシグナルインタラプトジェネレータは、前記インタラプトステータスレジスタおよび前記インタラプトイネーブルレジスタのアップデートを検出すべく、前記インタラプトステータスレジスタおよび前記インタラプトイネーブルレジスタをポーリングする請求項１３に記載の装置。
【請求項２０】
インタラプトステータスがアップデートされ、前記インタラプトステータスが、サービスを要求する少なくとも１つのインタラプトを示す場合に、割り込み通知メッセージを発行するデバイスと、
サービスを要求する前記デバイスの複数のインタラプトを提供するプロセッサ内で実行された結果に応答するデバイスドライバと
を備えるシステム。
【請求項２１】
前記デバイスドライバは、レベルセンシティブセンマンティクスに基づいて、前記プロセッサに、複数のインタラプトをさらに提供させる請求項２０に記載のシステム。
【請求項２２】
前記デバイスドライバは、前記プロセッサに、前記デバイスのインタラプトを非アクティブする結果をさらにもたらし、
前記デバイスは、前記プロセッサが前記インタラプトを非アクティブにすること、および少なくとも１つのインタラプトがサービスをさらに要求することに応答して、割り込み通知メッセージを発行する請求項２０に記載のシステム。
【請求項２３】
前記デバイスドライバは、前記プロセッサに、サービスが要求された前記デバイスの全てのインタラプトを非アクティブにする結果をさらにもたらし、
前記デバイスは、前記プロセッサが、サービスを要求する前記デバイスの全てのインタラプトを非アクティブにしたにもかかわらず、少なくとも１つのインタラプトがサービスをさらに要求することに応答して、割り込み通知メッセージを発行する請求項２０に記載のシステム。
【請求項２４】
前記デバイスドライバは、前記プロセッサに、前記デバイスのアクティブインタラプトを有効にする結果をさらにもたらし、
前記デバイスは、前記プロセッサが前記デバイスの前記アクティブインタラプトを有効にすることに応答して、割り込み通知メッセージを発行する請求項２０に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
２００２年３月２９日の改訂版２．３のＰＣＩローカルバス仕様は、ピンベースインタラプトおよび割り込み通知メッセージ（ｍｅｓｓａｇｅ  ｓｉｇｎａｌｅｄ  ｉｎｔｅｒｒｕｐｔ）（ＭＳＩ）の双方の複数のＰＣＩデバイスに対する振る舞いを定める。特に、ＰＣＩデバイスは、ＰＣＩデバイスのインタラプトピン上で、インタラプト信号をアサートおよびホールドすることによって、ピンベースインタラプトを生成する。反対に、ＰＣＩデバイスは、ＭＳＩアドレスに対してＭＳＩデータを書き込むことによって、ＭＳＩを生成する。したがって、ＰＣＩローカルバス仕様は、複数のレベルトリガイベントとしてのピンベースインタラプト、および複数のエッジトリガイベントとしてのＭＳＩを定める。
【図面の簡単な説明】
【０００２】
ここに記載されている本発明は、複数の添付の図面に制限されず、一例として図解される。説明を単純および明瞭にするため、複数の図面に図解された複数の要素は、必ずしも原寸に比例して描かれていない。例えば、複数の要素の複数の寸法は、明瞭にするため、他の複数の要素に比べて大きく描かれ得る。さらに、適切であると考えられるところにおいて、複数の参照ラベルは、対応するまたは類似の複数の要素を示すべく、複数の図面の間で繰り返される。
【０００３】
【図１】複数の割り込み通知メッセージを生成するデバイスを備えるコンピュータデバイスの一実施形態を示す。
【０００４】
【図２】複数のインタラプトステータスの変化が信号で伝えられるＭＳＩ方法の一実施形態を示す。
【０００５】
【図３】複数のインタラプトステータスの変化が獲得されるＭＳＩ方法の一実施形態を示す。
【発明の詳細な説明】
【０００６】
下記の説明は、複数の割り込み通知メッセージを提供するための複数の技術を説明する。下記の説明において、例えば、ロジック実装、オペコード、オペランドを特定する手段、リソースの分割／共有化／二重化の実装、システムの構成要素の種類および相互関係、並びにロジックの分割／統合の選択等の、多数の特定の詳細は、本発明のより十分な理解を提供するために説明される。しかしながら、そのような特定の詳細なしで本発明が実施されることが、当業者によって理解され得る。他の場合においては、複数のコントロールストラクチャ、複数のゲートレベル回路、複数のフルソフトウェア命令シーケンスは、本発明を分かり難くしないために、詳細に示されない。当業者は、包含される説明によって、必要以上の実験なしで、適切な機能を実施できる。
【０００７】
本明細書における"１つの実施形態"、"一実施形態"、"一例の実施形態"等の言及は、その説明された実施形態が、特定の特徴、構造、または特性を含むが、全ての実施形態が、必ずしも特定の特徴、構造、または特性を含むわけでないことを示す。さらに、そのような語句は、必ずしも同一の実施形態を言及しているわけではない。さらに、特定の特徴、構造、または特性が、一実施形態に関連して説明される場合、明示的に記載されているか否かに関わらず、他の複数の実施形態に関連して、そのような特徴、構造、または特性を生じることが、当業者の知識の範囲内で提起される。
【０００８】
本発明の複数の実施形態は、ハードウェア、ファームウェア、ソフトウェア、またはこれらの任意の組み合わせに実装される。本発明の複数の実施形態は、また、１つ以上のプロセッサによって読み込まれて実行される、機械可読メディアに格納された複数の命令として実装される。機械可読メディアは、機械（例えば、コンピュータデバイス）が読める形式で情報を格納または伝送するために、任意の構造を含む。例えば、機械可読メディアは、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶メディア、光学式記憶メディア、フラッシュメモリデバイス、電気的、光学的、音響学的、または増殖された複数の信号の他の複数の形式（搬送波、赤外線信号、デジタル信号等）、およびその他のものを含む。さらに、ファームウェア、ソフトウェア、複数のルーチン、複数の命令は、特定の複数の動作を実行するようにここに記載される。しかしながら、そのような説明は、単に便宜のためであり、そのような動作は、事実上、ファームウェア、ソフトウェア、複数のルーチン、複数の命令を実行するコンピュータデバイス、プロセッサ、コントローラ、または他のデバイスに起因することが理解されるべきである。
【０００９】
図１を参照すると、複数の割り込み通知メッセージ（ＭＳＩ）をサポートするコンピュータデバイスの一実施形態が示されている。コンピュータデバイスは、プロセッサ１００、チップセット１０２、メモリ１０４、およびデバイス１０６を含む。プロセッサ１００は、メモリ１０４から複数の命令を読み出して実行する。さらに、プロセッサ１００は、メモリ１０４からデータを読み取り、メモリ１０４にデータを書き込む。１つの実施形態において、プロセッサ１００は、そのコンピュータデバイスの複数の構成要素を初期化および制御すべく、オペレーティングシステム１０８を実行し、また、デバイス１０６の複数のＭＳＩイベントを提供すべく、デバイスドライバ１１０を実行する。
【００１０】
チップセット１０２は、プロセッサ１００をメモリ１０４およびデバイス１０６に接続する１つ以上の集積回路パッケージまたは複数のチップを含む。チップセット１０２は、プロセッサ１００およびデバイス１０６の複数の要求の読み出しおよび書き込みに応答して、メモリ１０４からデータを読み出すため、および／またはメモリ１０４にデータを書き込むためのメモリコントローラ１１２を備える。メモリ１０４は、データおよび複数の命令が読み出された位置から、および／またはデータおよび複数の命令が書き込まれた位置へ、アドレス可能な複数の記録位置を提供する１つ以上のメモリデバイスを備える。メモリ１０４は、また、例えば、複数のＤＲＡＭ（ダイナミックランダムアクセスメモリ）デバイス、複数のＳＲＡＭ（シンクロナスＤＲＡＭ）デバイス、複数のＤＤＲ（ダブルデータレート）ＳＤＲＡＭデバイス、または他の複数の揮発性および／または不揮発性メモリデバイス等の１つ以上の異なる種類の複数のメモリデバイスを備える。
【００１１】
チップセット１０２は、また、動作可能にデバイス１０６とチップセット１０２とのインターフェースをとる１つ以上のデバイスインターフェース１１４を備える。１つの実施形態において、デバイスインターフェース１１４は、ＰＣＩローカルバスインターフェース、ＰＣＩエクスプレスバスインターフェース、および／または任意の他の種類のデバイスインターフェースを備える。複数のＰＣＩエクスプレスバスについての詳細は、ＰＣＩエクスプレスベース仕様書改訂版１．０ａに記載されている。
【００１２】
図示のように、メモリ１０４は、デバイス１０６の複数のインタラプトイベントを提供するためのデバイスドライバ１１０を備える。１つの実施形態において、デバイスドライバ１１０は、複数のレベルトリガイベントである複数のＰＣＩピンベースインタラプトを提供するために書き込まれる。したがって、デバイスドライバ１１０は、全てのインタラプトが提供されているわけではない場合に、デバイスドライバ１１０が再度呼び出された事実を利用するレベルセンシティブセマンティクスで書き込まれる。したがって、ドライバ１１０は、他の複数のインタラプトが退去する前に提供される必要があるか否かを確認するためにチェックしない。
【００１３】
したがって、１つの実施形態におけるデバイス１０６は、複数のＭＳＩイベントが複数のエッジトリガイベントであり、ドライバ１１０がレベルトリガイベントのために書き込まれたにもかかわらず、デバイスドライバ１１０と互換性がある方法で、複数のＭＳＩイベントを生成する。図示のように、デバイス１０６は、コアロジック１１６、およびデバイス１０６とチップセット１０２とのインターフェースをとるデバイスインターフェース１１８を備える。１つの実施形態において、デバイスインターフェース１１８は、ＰＣＩローカルバスインターフェース、ＰＣＩエクスプレスバスインターフェース、および／または任意の他の種類のデバイスインターフェースを備える。コアロジック１１６は、デバイス１０６のためのコア機能を提供する。例えば、ハードディスクコントローラのコアロジック１１６は、ハードディスクドライブをコントロールするためのコア機能を備え、音声コントローラのコアロジック１１６は、スピーカに適した複数の音声信号を生成するためのコア機能を備える。
【００１４】
デバイス１０６は、また、インタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２を備える。インタラプトステータスレジスタ１２０は、１つ以上のインタラプトのステータスを示し、インタラプトイネーブルレジスタ１２２は、複数のインタラプトを選択的に有効にする。１つの実施形態において、インタラプトステータスレジスタ１２０は、１つ以上のビットを備え、それぞれのビットは、インタラプトのステータスを示す。例えば、インタラプトステータスレジスタ１２０は、８つの別個のインタラプトのステータスを示すために８ビットを備える。１つの実施形態において、インタラプトステータスレジスタ１２０のビットは、そのビットに関連するインタラプトがアクティブであることを示すためにセットされ、そのビットに関連するインタラプトが非アクティブであることを示すためにクリアされる。同様に、１つの実施形態におけるインタラプトイネーブルレジスタ１２２は、１つ以上のビットを備え、それぞれのビットは、インタラプトが有効か否かを示す。例えば、インタラプトイネーブルレジスタ１２２は、８つの別個のインタラプトを選択的に有効／無効にするために８ビットを備える。１つの実施形態において、インタラプトイネーブルレジスタ１２２のビットは、そのビットに関連するインタラプトが有効であることを示すためにセットされ、そのビットに関連するインタラプトが無効であることを示すためにクリアされる。
【００１５】
デバイス１０６は、また、ＭＳＩ機能構造１２４およびＭＳＩジェネレータ１２６を備える。ＭＳＩ機能構造１２４は、ＭＳＩメッセージを構成するために使用されるメッセージアドレス１２８およびメッセージデータ１３０を備える。１つの実施形態において、オペレーティングシステム１０８は、適切な複数のＭＳＩメッセージを送信するべくＭＳＩジェネレータ１２６を構成するために、デバイス初期設定の間に、メッセージアドレス１２８およびメッセージデータ１３０をセットする。特に、ＭＳＩジェネレータ１２６は、ＭＳＩ機能構造１２４によって特定されたメッセージアドレス１２８に、ＭＳＩ機能構造１２４によって提供されたメッセージデータ１３０を書き込むことによって、ＭＳＩメッセージを送信する。１つの実施形態において、ＭＳＩジェネレータ１２６は、メッセージデータ１３０の１つ以上のより下位のオーダーのビットを変更すること、および変更されたメッセージデータ１３０をメッセージアドレス１２８に書き込むことによって、異なる複数のＭＳＩメッセージを生成する。
【００１６】
さらに、ＭＳＩジェネレータ１２６は、ピンベースインタラプトに関連して信号を送っているレベルトリガインタラプトをエミュレートする方法で、複数のＭＳＩメッセージを生成する。１つの実施形態において、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０またはインタラプトイネーブルレジスタ１２２のいずれかのアップデートに応答して、他の新しいＭＳＩメッセージを発行するか否かを判断する。特に、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０またはインタラプトイネーブルレジスタ１２２のいずれかのアップデートが検出された後に、アクティブである有効なインタラプトがないことを示すインタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２に応答して、他のＭＳＩメッセージを発行することを中止する。さらに、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０またはインタラプトイネーブルレジスタ１２２のいずれかのアップデートが検出された後に、少なくとも１つの有効なインタラプトがアクティブであることを示すインタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２に応答して、他のＭＳＩメッセージを発行する。
【００１７】
例えば、コアロジック１１６は、コア機能のためのインタラプトサービスを要求すべく、１つ以上のインタラプトをアクティブにする。特に、コアロジック１１６は、インタラプトイネーブルレジスタ１２２によって有効にされた複数のインタラプトに関連する、インタラプトステータスレジスタ１２０の１つ以上のビットをセットする。
インタラプトステータスレジスタ１２０のアップデートに応答して、ＭＳＩジェネレータ１２６は、メッセージアドレス１２８にメッセージデータ１３０を書き込むことによって、１つのＭＳＩメッセージを発行する。
【００１８】
さらなる例において、インタラプトステータスレジスタ１２０は、アクティブな１つ以上の有効なインタラプトを備える。コアロジック１１６は、コア機能のためのインタラプトサービスを要求すべく、１つ以上のインタラプトをアクティブにする。特に、コアロジック１１６は、インタラプトイネーブルレジスタ１２２によって有効にされた複数のインタラプトに関連する、インタラプトステータスレジスタ１２０の１つ以上のビットをセットする。インタラプトステータスレジスタ１２０のアップデートに応答して、ＭＳＩジェネレータ１２６は、複数の有効なインタラプトのサービスを要求すべく、１つのＭＳＩメッセージを発行する。
【００１９】
他の例として、ソフトウェア（例えば、オペレーティングシステム１０８またはデバイスドライバ１１０）は、インタラプトステータスレジスタ１２０の有効かつ予めアクティブなインタラプトのいくつかをクリアするが、全てをクリアするわけではない。インタラプトステータスレジスタ１２０のアップデートに応答して、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２が少なくとも１つのインタラプトがサービスを要求していることをまだ示すことに起因して、ＭＳＩメッセージを再度発行する。
【００２０】
さらに他の例において、ソフトウェア（例えば、オペレーティングシステム１０８またはデバイスドライバ１１０）は、インタラプトステータスレジスタ１２０の全てのインタラプトをクリアする。ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０のアップデートに応答して、インタラプトステータスレジスタ１２０がサービスを要求しているインタラプトを有しないことに起因して、他のＭＳＩメッセージを発行することを中止する。
【００２１】
さらに他の例として、ソフトウェア（例えば、オペレーティングシステム１０８またはデバイスドライバ１１０）は、インタラプトステータスレジスタ１２０の全てのインタラプトをクリアする。しかしながら、同一の期間（例えば、クロックサイクル、ポーリングインターバル）中にコアロジック１１６は、インタラプトステータスレジスタ１２０の有効なインタラプトをセットする。したがって、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０のアップデートに応答して、ソフトウェアが全ての有効なインタラプトをクリアしたにもかかわらず、インタラプトステータスレジスタ１２０が少なくとも１つのアクティブである有効なインタラプトをまだ有することに起因して、他のＭＳＩメッセージを発行する。
【００２２】
さらに、ソフトウェア（例えば、オペレーティングシステム１０８またはデバイスドライバ１１０）は、他の例において、予め使用不可能であるがインタラプトステータスレジスタのアクティブなインタラプトを有効にするために、インタラプトイネーブルレジスタ１２２のビットをセットする。ＭＳＩジェネレータ１２６は、インタラプトイネーブルレジスタ１２２のアップデートに応答して、予め使用不可能であるがアクティブなインタラプトを有効にすること起因して、他のＭＳＩメッセージを発行する。
【００２３】
図２を参照すると、インタラプトステータスの変化が信号で伝えられるＭＳＩ方法の一実施形態が示されている。ブロック２００において、デバイス１０６のコアロジック１１６、オペレーティングシステム１０８、またはデバイスドライバ１１０は、インタラプトステータスレジスタ１２０および／またはインタラプトイネーブルレジスタ１２２をアップデートする。１つの実施形態において、コアロジック１１６、オペレーティングシステム１０８、またはドライバ１１０は、セットされた複数のビットに関連する複数のインタラプトをアクティブにするために、インタラプトステータスレジスタ１２０の１つ以上のビットをセットする、および／またはクリアされた複数のビットに関連する複数のインタラプトを非アクティブにするために、インタラプトステータスレジスタ１２０の１つ以上のビットをクリアする、インタラプトステータスレジスタ１２０に１つの値を書き込む。さらに、コアロジック１１６、オペレーティングシステム１０８、またはドライバ１１０は、セットされた複数のビットに関連する複数のインタラプトを有効にするために、インタラプトイネーブルレジスタ１２２の１つ以上のビットをセットする、および／またはクリアされた複数のビットに関連する複数のインタラプトを無効にするために、インタラプトイネーブルレジスタ１２２の１つ以上のビットをクリアする、インタラプトイネーブルレジスタ１２２に１つの値を書き込む。
【００２４】
ＭＳＩジェネレータ１２６は、ブロック２０２において、インタラプトステータスのアップデートを検出する。１つの実施形態において、コアロジック１１６および／またはデバイスインターフェース１１８は、コアロジック１１６および／またはデバイスインターフェース１１８がインタラプトステータスレジスタ１２０および／またはインタラプトイネーブルレジスタ１２２への書き込みを検出すると、ＭＳＩジェネレータ１２６に信号を送る。ＭＳＩジェネレータ１２６は、そのため、コアロジック１１６またはデバイスインタラプト１１８がインタラプトステータスの変化を信号で伝えるか否かにに基づいて、インタラプトステータスのアップデートまたは変化を検出する。
【００２５】
インタラプトステータスの変化に応答して、ＭＳＩジェネレータ１２６は、ブロック２０４において、サービスを要求している１つ以上のインタラプトのためのサービスを要求するために、１つのＭＳＩメッセージを発行するか否かを判断する。１つの実施形態において、ＭＳＩジェネレータ１２６は、少なくとも１つの有効なインタラプトがアクティブであることを示すインタラプトサービスレジスタ１２０およびインタラプトイネーブルレジスタ１２２に応答して、１つのＭＳＩメッセージを発行することを決定する。
【００２６】
少なくとも有効なインタラプトがアクティブであることに応答して、ＭＳＩジェネレータは、ブロック２０６において、サービスを要求している１つ以上のインタラプトのサービスを要求するために、１つのＭＳＩメッセージを発行する。特に、ＭＳＩジェネレータ１２６は、１つの実施形態において、ＭＳＩ機能構造１２４のメッセージデータ１３０を、ＭＳＩ機能構造１２４によって示されるメッセージアドレス１２８に書き込む。
【００２７】
それ以外では、インタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２がアクティブである有効なインタラプトがないことを示す場合に、ＭＳＩジェネレータ１２６は、サービスを要求しているインタラプトがないので、検出されたインタラプトステータスの変化に応答して、１つのＭＳＩメッセージを発行することを中止する。
【００２８】
図３を参照すると、インタラプトステータスの変化がポーリングされるＭＳＩ方法の一実施形態が示されている。ブロック３００において、デバイス１０６のコアロジック１１６、オペレーティングシステム１０８、またはデバイスドライバ１１０は、インタラプトステータスレジスタ１２０および／またはインタラプトイネーブルレジスタ１２２をアップデートする。１つの実施形態において、コアロジック１１６、オペレーティングシステム１０８、またはドライバ１１０は、セットされた複数のビットに関連する複数のインタラプトをアクティブにするために、インタラプトステータスレジスタ１２０の１つ以上のビットをセットする、および／または、クリアされた複数のビットに関連する複数のインタラプトを非アクティブにするために、インタラプトステータスレジスタ１２０の１つ以上のビットをクリアするインタラプトステータスレジスタ１２０に１つの値を書き込む。さらに、コアロジック１１６、オペレーティングシステム１０８、またはドライバ１１０は、セットされた複数のビットに関連する複数のインタラプトを有効にするために、インタラプトインタラプトレジスタ１２２の１つ以上のビットをセットする、および／または、クリアされた複数のビットに関連する複数のインタラプトを無効にするために、インタラプトイネーブルレジスタ１２２の１つ以上のビットをクリアするインタラプトイネーブルレジスタ１２２に１つの値を書き込む。
【００２９】
ＭＳＩジェネレータ１２６は、ブロック３０２において、インタラプトステータスが変化したか否かを判断する。１つの実施形態において、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２の前のインタラプトステータスを追跡するための１つ以上のレジスタ（図示せず）を備える。そのような実施形態において、ＭＳＩジェネレータ１２６は、インタラプトステータスレジスタ１２０またはインタラプトイネーブルレジスタ１２２の内容がこれらのレジスタ１２０、１２２の前の内容と等しい場合に、インタラプトステータスの変化を検出する。他の実施形態において、ＭＳＩジェネレータ１２６は、前の期間（例えば、黒尾区サイクル、ポーリングインターバル）の間に、有効でアクティブであった複数のインタラプトを追跡するための１つ以上のレジスタ（図示せず）を備える。そのような実施形態において、ＭＳＩジェネレータ１２６は、サービスを要求している複数のインタラプトの中の変化を示すインタラプトステータスレジスタ１２０および／またはインタラプトイネーブルレジスタ１２２に応答して、インタラプトステータスの変化を検出する。
【００３０】
インタラプトステータスの変化がないと判断することに応答して、ＭＳＩジェネレータ１２６は、特定の期間（例えば、クロックサイクル、ポーリングインターバル）後に、ブロック３０２に戻る。それ以外では、ＭＳＩジェネレータ１２６は、ブロック３０４において、サービスを要求する１つ以上のインタラプトのためのサービスを要求するために、１つのＭＳＩメッセージを発行するか否かを判断する。１つの実施形態において、ＭＳＩジェネレータ１２６は、サービスを要求する少なくとも１つの有効なインタラプトを示すインタラプトサービスレジスタ１２０およびインタラプトイネーブルレジスタ１２２に応答して、１つのＭＳＩメッセージを発行することを決定する。
【００３１】
サービスを要求している少なくとも１つのインタラプトに応答して、ＭＳＩジェネレータ１２６は、ブロック３０６において、１つ以上のインタラプトのサービスを要求するために、１つのＭＳＩメッセージを発行する。特に、ＭＳＩジェネレータ１２６は、１つの実施形態において、ＭＳＩ機能構造１２４のメッセージデータ１３０を、ＭＳＩ機能構造１２４によって示されるメッセージアドレス１２８に書き込むことによって、１つのＭＳＩメッセージを発行する。
【００３２】
それ以外では、インタラプトステータスレジスタ１２０およびインタラプトイネーブルレジスタ１２２がサービスを要求するインタラプトがないことを示す場合に、ＭＳＩジェネレータ１２６は、サービスを要求するインタラプトがないので、１つのＭＳＩメッセージを発行することを中止する。
【００３３】
本発明の特定の特徴が、複数の実施形態を参照して説明された。しかしながら、本明細書は、限定する意味で解釈されることを意図としない。複数の実施形態の様々な変形は、本発明の他の複数の実施形態と同様に、本発明の精神および範囲内にあると見なされることが、本発明に関連する当業者にとって明らかである。
【図１】
2007513433.tif 000003
【図２】
2007513433.tif 000004
【図３】
2007513433.tif 000005
【国際調査報告】
2007513433.tif 000006
2007513433.tif 000007