(57)【要約】【課題】装置、方法、システムおよびコンピュータ可読媒体を開示する。【解決手段】一実施形態において、装置はプロセッサである。プロセッサは、第１ハードウェアスレッドおよび第２ハードウェアスレッドのハードウェアスレッド割込み互換性情報をトラッキングできるスレッドリマッピングロジックを含む。プロセッサは、デバイスから出力され、第１ハードウェアスレッドに関連付けられたアフィニティを有する割込みを受信するロジックも含む。プロセッサは、第２ハードウェアスレッドが割込みをハンドリング出来ることをハードウェアスレッド割込み互換性情報が認証すると、割込みを第２ハードウェアスレッドへリダイレクトするロジックも含む。【選択図】図１
2013545150.tif 000002
【特許請求の範囲】
【請求項１】
第１ハードウェアスレッドおよび第２ハードウェアスレッドのハードウェアスレッド割込み互換性情報をトラッキングし、
デバイスから出力され、前記第１ハードウェアスレッドに関連付けられたアフィニティを有する割込みを受信し、
前記第２ハードウェアスレッドが前記割込みをハンドリング可能であることを前記ハードウェアスレッド割込み互換性情報が認証すると、前記割込みを前記第２ハードウェアスレッドへリダイレクトする、
スレッドリマッピングロジックを備える、第１プロセッサ。
【請求項２】
前記スレッドリマッピングロジックはさらに、前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドの電力状態情報をトラッキングする、請求項１に記載の第１プロセッサ。
【請求項３】
前記第１ハードウェアスレッドから前記第２ハードウェアスレッドへの前記割込みの前記リダイレクトは、少なくとも、前記第１ハードウェアスレッドが低電力状態にあり、前記第２ハードウェアスレッドがフル動作状態にある場合、実行される、請求項１または２に記載の第１プロセッサ。
【請求項４】
前記第１ハードウェアスレッドはさらに、前記第１ハードウェアスレッドの電力状態が移行したことに応じて、前記第１ハードウェアスレッドの電力状態が変化したことを知らせる電力状態移行メッセージを、第２プロセッサへ送信する、請求項２に記載の第１プロセッサ。
【請求項５】
前記スレッドリマッピングロジックはさらに、トランスペアレントに、前記第１ハードウェアスレッドが低電力状態に移行した時に、前記デバイスに対し、プログラムされた割込みリダイレクトを行うことなく通常動作を継続させる、請求項１から４のいずれか１項に記載の第１プロセッサ。
【請求項６】
前記第２ハードウェアスレッドが前記割込みに対応する、請求項１から５のいずれか１項に記載の第１プロセッサ。
【請求項７】
前記第１ハードウェアスレッドは前記第１プロセッサ内に存在し、前記第２ハードウェアスレッドは前記第２プロセッサ内に存在し、
前記電力状態移行メッセージは、前記第１プロセッサおよび前記第２プロセッサに結合されたプロセッサ間通信リンクを介して送信される、請求項４に記載の第１プロセッサ。
【請求項８】
前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドのそれぞれの前記ハードウェアスレッド割込み互換性情報および前記電力状態情報は、前記第２プロセッサ内に存在する第２スレッドリマッピングロジックによって同時にトラッキングされる、請求項７に記載の第１プロセッサ。
【請求項９】
第１ハードウェアスレッドおよび第２ハードウェアスレッドのハードウェアスレッド割込み互換性情報をトラッキングする段階と、
デバイスから出力され、前記第１ハードウェアスレッドに関連付けられたアフィニティを有する割込みを受信する段階と、
前記第２ハードウェアスレッドが前記割込みをハンドリング可能であることを前記ハードウェアスレッド割込み互換性情報が認証すると、前記割込みを前記第２ハードウェアスレッドへリダイレクトする段階と
を備える方法。
【請求項１０】
前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドの電力状態情報をトラッキングする段階をさらに備える、請求項９に記載の方法。
【請求項１１】
前記割込みを前記第１ハードウェアスレッドから前記第２ハードウェアスレッドへ前記リダイレクトする段階は、少なくとも、前記第１ハードウェアスレッドが低電力状態にあり、前記第２ハードウェアスレッドがフル動作状態にある場合、実行される、請求項９または１０に記載の方法。
【請求項１２】
前記第１ハードウェアスレッドの電力状態が移行したことに応じて、前記第１ハードウェアスレッドの電力状態が変化したことを知らせる電力状態移行メッセージを、前記第２ハードウェアスレッドへ送信する段階をさらに備える、請求項１０に記載の方法。
【請求項１３】
トランスペアレントに、前記第１ハードウェアスレッドが低電力状態に移行した時に、前記デバイスに対し、プログラムされた割込みリダイレクトを行うことなく通常動作を継続させる段階をさらに備える、請求項９から１２のいずれか１項に記載の方法。
【請求項１４】
前記第２ハードウェアスレッドが前記割込みに対応する段階をさらに備える、請求項９から１３のいずれか１項に記載の方法。
【請求項１５】
前記電力状態移行メッセージを、第１プロセッサおよび第２プロセッサに結合されたプロセッサ間通信リンクを介して送信する段階をさらに備え、
前記第１ハードウェアスレッドは前記第１プロセッサ内に存在し、前記第２ハードウェアスレッドは前記第２プロセッサ内に存在する、請求項１２に記載の方法。
【請求項１６】
前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドのそれぞれの前記ハードウェアスレッド割込み互換性情報および前記電力状態情報を、前記第２プロセッサ内に存在する第２スレッドリマッピングロジックによって同時にトラッキングする段階をさらに備える、請求項１５に記載の方法。
【請求項１７】
第１ハードウェアスレッドと第２ハードウェアスレッドとの間で情報を送信するハードウェアスレッド間通信リンクと、
少なくとも前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドのハードウェアスレッド割込み互換性情報を格納する第１記憶装置と、
少なくとも前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドの電力状態情報を格納する第２記憶装置と、
第１スレッドリマッピングロジックユニットと
を備え、
前記第１スレッドリマッピングロジックユニットは、
前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドの前記ハードウェアスレッド割込み互換性情報をトラッキングし、
デバイスから出力され、前記第１ハードウェアスレッドに関連付けられたアフィニティを有する割込みを受信し、
前記第２ハードウェアスレッドが前記割込みをハンドリング可能であることを前記ハードウェアスレッド割込み互換性情報が認証すると、前記割込みを前記第２ハードウェアスレッドへリダイレクトする、システム。
【請求項１８】
前記第１ハードウェアスレッドから前記第２ハードウェアスレッドへの前記割込みの前記リダイレクトは、少なくとも、前記第１ハードウェアスレッドが低電力状態にあり、前記第２ハードウェアスレッドがフル動作状態にある場合、実行される、請求項１７に記載のシステム。
【請求項１９】
前記第１スレッドリマッピングロジックユニットはさらに、前記第１ハードウェアスレッドの電力状態が移行したことに応じて、前記第１ハードウェアスレッドの電力状態が変化したことを知らせる電力状態移行メッセージを、前記第２ハードウェアスレッドへ送信する、請求項１７または１８に記載のシステム。
【請求項２０】
コンピュータプログラムであり、
プロセッサに実行されると、前記プロセッサに
第１ハードウェアスレッドおよび第２ハードウェアスレッドのハードウェアスレッド割込み互換性情報をトラッキングする手順と、
デバイスから出力され、前記第１ハードウェアスレッドに関連付けられたアフィニティを含む割込みを受信する手順と、
前記第２ハードウェアスレッドが前記割込みをハンドリング可能であることを前記ハードウェアスレッド割込み互換性情報が認証すると、前記割込みを前記第２ハードウェアスレッドへリダイレクトする手順と
を含む動作を実行させる、コンピュータプログラム。
【請求項２１】
前記動作が、前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドの電力状態情報をトラッキングする手順をさらに含む、請求項２０に記載のコンピュータプログラム。
【請求項２２】
前記割込みを前記第１ハードウェアスレッドから前記第２ハードウェアスレッドへ前記リダイレクトする手順は、少なくとも、前記第１ハードウェアスレッドが低電力状態にあり、前記第２ハードウェアスレッドがフル動作状態にある場合、実行される、請求項２０に記載のコンピュータプログラム。
【請求項２３】
前記動作が、前記第１ハードウェアスレッドの電力状態が移行したことに応じて、前記第１ハードウェアスレッドの電力状態が変化したことを知らせる電力状態移行メッセージを、前記第２ハードウェアスレッドへ送信する手順をさらに含む、請求項２２に記載のコンピュータプログラム。
【請求項２４】
前記動作が、前記電力状態移行メッセージを、第１プロセッサおよび第２プロセッサに結合されたプロセッサ間通信リンクを介して送信する手順をさらに含み、
前記第１ハードウェアスレッドは前記第１プロセッサ内に存在し、前記第２ハードウェアスレッドは前記第２プロセッサ内に存在する、請求項２３に記載のコンピュータプログラム。
【請求項２５】
前記動作が、前記第１ハードウェアスレッドおよび前記第２ハードウェアスレッドのそれぞれの前記ハードウェアスレッド割込み互換性情報および前記電力状態情報を、前記第２プロセッサ内に存在する第２スレッドリマッピングロジックによって同時にトラッキングする段階をさらに含む、請求項２４に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、ハードウェアスレッドの電力最適化に用いられる割込みリマッピングに関する。
【背景技術】
【０００２】
（例えばプロセッサ内の動作コアなど）のハードウェアスレッドは、低電力スリープまたはディープスリープ状態などの電力最適化状態に移行する機能を有していることがある。入力／出力（Ｉ／Ｏ）トラフィックはハードウェアスレッドへ割込みを送信し、一般的にはこれにより、低電力状態にあるスレッドが起動させられ、割込みに対応する。例えばハードウェアスレッドの起動を要求する割込みは、Ｐｌａｔｆｏｒｍ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）−Ｅｘｐｒｅｓｓデバイス、ＰＣＩデバイス、または入力／出力の高度なプログラム可能割込みコントローラ（ＩＯＡＰＩＣ）などから送信されることがある。これらの割込みを度々受信し、それぞれがハードウェアスレッドの起動を要求するとすれば、ハードウェアスレッドを電力最適化状態にするという目的を達成できない。
【図面の簡単な説明】
【０００３】
本願発明を例示する。本願発明は図面によってその範囲が限定されない。図面においては同様の符号は同様の要素を指す。
【図１】図１は、電力最適化割込み配信が可能なコンピュータシステムの一実施形態を示す。
【図２】図２は、電力最適化割込み配信が可能なコンピュータシステムの他の実施形態を示す。
【図３】図３は、ハードウェアスレッド／割込みタイプ互換性情報のマトリックスを格納するデータ構造、および各ハードウェアスレッドの現在の電力状態を格納するデータ構造を示す。
【図４】図４は、電力最適化割込み配信が可能な２ソケットコンピュータシステムの一実施形態を示す。
【図５】図５は、電力最適化割込み配信が可能な２ノードコンピュータシステムの一実施形態を示す。
【図６】図６は、電力最適化割込み配信の処理の一実施形態のフロー図である。
【発明を実施するための形態】
【０００４】
電力最適化割込み配信が可能なプロセッサ、システム、方法、およびコンピュータ可読媒体の実施形態を開示する。
【０００５】
コンピュータシステムは、いくつかのハードウェアスレッドを含んでよい。ハードウェアスレッドをプロセッサ内のコアとして見なすと、各プロセッサが複数のコアを有するマルチプロセッサシステムにおいては、多くのハードウェアスレッドが存在し得る。ハードウェアスレッドは、動作を行う必要がない場合、低電力状態に移行する機能を有し得る。低電力状態にあるハードウェアスレッドの数が多くなると、コンピュータシステムの全体的な消費電力は低くなる。
【０００６】
特定のハードウェアスレッドによる対応を必要とするＩ／Ｏ割込みが発生すると、ターゲットのハードウェアスレッドは、一般的に起動させられ、スリープ状態にあった当該ハードウェアスレッドのそれまでの省電力状態は解除される。よって、各ハードウェアスレッドの電力状態および各ハードウェアスレッドの割込み互換ハンドリングをトラッキングするスレッドリマッピングロジックが、コンピュータシステム内に存在してもよい。例えば、所与の割込みに対し、当該割込みをハンドリング出来るスレッドが４つあるとする。よって、その割込みが第１ハードウェアスレッドをターゲットにしており、第１ハードウェアスレッドが低電力状態にある場合、スレッドリマッピングロジックは他の、利用可能かつ当該割込みをハンドリング出来るハードウェアスレッドをサーチする。割込みをハンドリングする目的において適合するスレッドが利用可能である場合、スレッドリマッピングロジックは、当該割込みを転送／リマッピングし、他の見つけ出されたハードウェアスレッドにその割込みをハンドリングさせ、当初のターゲットのハードウェアスレッドは低電力状態を維持できるようにする。
【０００７】
図１は、電力最適化割込み配信が可能なコンピュータシステムの一実施形態を示す。
【０００８】
コンピュータシステム１００が示されている。コンピュータシステムは、デスクトップ型、サーバ、ワークステーション、ノート型、ＰＤＡ，テレビセットトップ、メディアセンター、ゲーム機、（車両で用いられるような）統合システム、または他のタイプのコンピュータシステムであってよい。いくつかの実施形態において、コンピュータシステム１００は、「プロセッサ」とも呼ばれる１以上の中央演算処理装置（ＣＰＵ）を含む。多くの実施形態においては多くのＣＰＵが存在し得るが、図１に示す実施形態では、説明を明確にするべく、ＣＰＵ１０２のみが示されている。ＣＰＵ１０２は、Ｉｎｔｅｌ（登録商標）ＣｏｒｐｏｒａｔｉｏｎのＣＰＵ、または、他のブランドのＣＰＵであってよい。ＣＰＵ１０２は、異なる実施形態において１以上のコアを含む。ＣＰＵ１０２は４つのコア（コア１０４、１０６、１０８、１１０）を含むものとして示されている。
【０００９】
多くの実施形態において各コアは、１以上の実行ユニット、リタイヤユニット、一式の汎用および特定用途レジスタなど、内部機能ブロックを含む。シングルスレッドコアにおいて、各コアをハードウェアスレッドと呼ぶこともある。マルチスレッドまたはハイパースレッドコアの場合、各コア内で動作するスレッドのそれぞれをハードウェアスレッドと呼ぶこともある。よって、コンピュータシステム１００で実行されるいずれの１つの実行スレッドもハードウェアスレッドと呼ばれることがある。例えば図１において、各コアがシングルスレッドコアである場合、システム内には４つのハードウェアスレッド（４つのコア）が存在する。一方、各コアがマルチスレッドであり、同時に２つのスレッドの状態を制御する機能を有する場合、システムには８つのハードウェアスレッド（４つのコアのそれぞれが２つのスレッドを有する）が存在することとなる。
【００１０】
ＣＰＵ１０２は、キャッシュ１１２など１以上のキャッシュを含んでよい。示されていない多くの実施形態において、キャッシュ１１２以外の追加的なキャッシュが実装される。これにより、各コアの実行ユニットとメモリとの間に、複数のレベルのキャッシュが存在する。異なる実施形態において、キャッシュ１１２は異なる方法で分配される。さらにキャッシュ１１２は、異なる実施形態において、多くの異なるサイズのうちのいずれかが選ばれる。例えばキャッシュ１１２は、８メガバイト（ＭＢ）キャッシュ、１６ＭＢキャッシュなどであってよい。さらに異なる実施形態において、キャッシュは、ダイレクトマップ方式キャッシュ、フルアソシアティブ方式キャッシュ、マルチウェイセットアソシアティブ方式キャッシュ、または他のタイプのマップ方式のキャッシュであってよい。多くの実施形態において、キャッシュ１１２は、全てのコア間で共有される１つの大きな部分を含んでよく、または、いくつかの別々に機能するスライス（例えば、各コアに対し１つのスライス）に分割されてよい。キャッシュ１１２は、全てのコア間で共有される１つの部分を含み、コアごとに別々の機能を有するスライスであるいくつかの他の部分を含んでもよい。
【００１１】
多くの実施形態において、ＣＰＵ１０２は、システムメモリ１１６との通信のインタフェースを提供する統合システムメモリコントローラ１１４を含む。示されない他の実施形態においてメモリコントローラ１１４は、コンピュータシステム１００内の他の場所に独立して設けられてもよい。
【００１２】
システムメモリ１１６は、ダブルデータレート（ＤＤＲ）ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のようなタイプなどのＤＲＡＭ、フラッシュメモリなどの不揮発性メモリ、相変化メモリ（ＰＣＭ）、または他のメモリ技術を用いたメモリなどを含んでよい。システムメモリ１１６は、ＣＰＵ１０２によって処理されるデータまたは動作が実行される命令を格納する汎用メモリであってよい。さらに、コンピュータシステム１００には、システムメモリから読み取り、またシステムメモリに書き込む機能を有する、ダイレクトメモリアクセス（ＤＭＡ）可能なＩ／Ｏ（入力／出力）デバイスなどの他のデバイスが存在し得る。
【００１３】
ＣＰＵ１０２をシステムメモリ１１６と結合するリンク（つまり、バス、インターコネクトなど）は、データ、アドレス、制御、およびクロック情報を転送できる１以上の光学、金属または他の配線（つまりライン）を含む。
【００１４】
（例えばＩ／Ｏコントローラハブなどの）Ｉ／Ｏコンプレックス１１８は、ＣＰＵ１０２と外部Ｉ／Ｏデバイスとの間の通信を可能とするＩ／Ｏインタフェース１２０を含む。Ｉ／Ｏコンプレックス１１８は、Ｉ／Ｏアダプタ１２２、１２４などの１以上のＩ／Ｏアダプタを含んでよい。Ｉ／Ｏアダプタは、ＣＰＵ１０２で用いるホスト通信プロトコルを、Ｉ／Ｏデバイス１２６など特定のＩ／Ｏデバイスと互換性のあるプロトコルへ変換する。任意のＩ／Ｏアダプタが変換するプロトコルには、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）、Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ（ＵＳＢ）、ＩＤＥ、ＳＣＳＩおよび１３９４「Ｆｉｒｅｗｉｒｅ」などが含まれる。さらに、１以上の無線プロトコルＩ／Ｏアダプタが存在してもよい。無線プロトコルの例には、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩＥＥＥ８０２．１１−ベースの無線プロトコル、およびセルラープロトコルなどが含まれる。
【００１５】
多くの実施形態において、ＢＩＯＳ１２８（ベーシック入力／出力システム）は、Ｉ／Ｏコンプレックス１１８と統合されるか、Ｉ／Ｏコンプレックス１１８に結合される。ＢＩＯＳは、ブート処理の間にコンピュータシステムの主要なコンポーネントを初期化する命令を保持する、コンピュータシステムに格納されたファームウェアである。
【００１６】
説明を明確にするべく示されてはいないが、ＣＰＵはグラフィックおよびネットワークトラフィックをハンドリングする高速Ｉ／Ｏインタフェースなどの追加的なインタフェースを有してよい。多くの実施形態において、これらの高速Ｉ／Ｏインタフェースは、１以上のＰＣＩ−Ｅｘｐｒｅｓｓインタフェースを含んでよい。
【００１７】
多くの実施形態において、コンピュータシステム１００は、バーチャル環境に対して、バーチャルマシン（ＶＭ）環境内で実行される１以上のゲストオペレーティングシステム（ＯＳ）を提供できるハードウェアおよびソフトウェアロジックを有する。バーチャルマシンモニタ（ＶＭＭ）またはハイパーバイザは、各ＶＭの動作環境を分離し、各ＶＭ、並びにＯＳおよび当該ＯＳ内で実行されるアプリケーションが、システム内に存在する他のＶＭから分離され、それら他のＶＭを認識しないよう、システム内のロジックで実装される。例えば、いくつかの実施形態において、記憶装置１１６内に存在するＶＭＭ１３４は、ＶＭ１３６およびＶＭ１４０、並びにそれぞれのＶＭで実行されるＯＳ１３８およびＯＳ１４２が使用するリソースを管理する。
【００１８】
また、ＣＰＵ１０２は、ＣＰＵ１０２に供給される電力（ＶＣＣ）を制御する電圧制御ロジック１４４を含んでよい。
【００１９】
シームレスなバーチャル環境を作り出すべく、バーチャルＩ／Ｏが一般的に用いられる。Ｉ／Ｏバーチャル化ロジック１３０は、Ｉ／Ｏデバイス１２６などのＩ／Ｏサブシステム内のＩ／Ｏデバイスをバーチャル化し、分離する機能を提供する。いくつかの実施形態において、Ｉ／Ｏバーチャル化ロジック１３０は、Ｉｎｔｅｌ（登録商標）ＶＴ−ｄアーキテクチャを含む。他の実施形態において、ｘ８６またはｘ８６以外のクラスのＩＯＭＭＵセットアップなど他のタイプのメモリがマッピングドＩ／Ｏ技術が用いられる。
【００２０】
Ｉ／Ｏデバイスが開始するデバイス転送（ＤＭＡ）および割込みは、任意のＶＭに対してデバイスの分離を要求する主要な処理である。多くの実施形態において、Ｉ／Ｏバーチャル化ロジック１３０は、システムソフトウェアが複数のＤＭＡ保護ドメインを作成することを可能とする。保護ドメインは、システムメモリのサブセットが割り当てられる分離された環境である。用いられるソフトウェアのモデルに応じて、ＤＭＡ保護ドメインは、ＶＭに割り当てられるメモリ、或いはＶＭ内で、またはＶＭＭ／ハイパーバイザそのものの一部として実行されるゲストＯＳドライバにより割り当てられるＤＭＡメモリを表す。Ｉ／Ｏバーチャル化ロジック１３０は、システムソフトウェアが１以上のＩ／Ｏデバイスを保護ドメインに指定することを可能とする。ＤＭＡの分離は、保護ドメインに指定されていないＩ／Ｏデバイスからの、当該保護ドメインの物理メモリへのアクセスを制限することにより達成できる。
【００２１】
割込みをハンドリングするべく、Ｉ／Ｏバーチャル化ロジック１３０は、割込みメッセージのフォーマットを、「メッセージ識別子」を含み実際の割込み属性を含まないＤＭＡ書き込み要求へ変更する。あらゆるＤＭＡ要求のように書き込み要求は、割込みを生成するＩ／Ｏデバイス機能の要求者ＩＤを特定する。そしてＩ／Ｏバーチャル化ロジック１３０が割込み要求を受信すると、割込みは、割込みのテーブル構造を用いてリマッピングされる。割込みリマッピングテーブルの各エントリは、必要なあらゆる割込み属性（例えば宛先ＣＰＵ，ベクトルなど）を含む、デバイスからの特有の割込みメッセージ識別子に対応する。
【００２２】
図１に示す実施形態において、Ｉ／Ｏバーチャル化ロジック１３０はＩ／Ｏインタフェース１２０を介し、１以上のＩ／Ｏデバイスから要求を受信する。Ｉ／Ｏバーチャル化ロジック１３０は上述したように、要求がメモリコントローラ１１４へ到達する前に、これらの要求をハンドリングする。
【００２３】
図１に示す実施形態を含む多くの実施形態において、スレッドリマッピングロジック（ＴＲＬ）１３２は、Ｉ／Ｏバーチャル化ロジック１３０内に存在する。他の実施形態において、ＴＲＬ１３２は、コンピュータシステム１００内でＣＰＵ１０２の他の位置、また場合によっては、図２に示すように他の要素と併せてＣＰＵ１０２の外部に存在する。
【００２４】
図２は、電力最適化割込み配信が可能なコンピュータシステムの他の実施形態を示す。
【００２５】
図２に示す実施形態において、ＣＰＵ１０２は図１に示すＣＰＵと同様であるが、Ｉ／Ｏコンプレックス２００がＣＰＵ１０２の外部に位置している点のみ異なる。Ｉ／Ｏコンプレックス２００は、Ｉ／Ｏバーチャル化ロジック２０２およびＴＲＬ２０４を含む。Ｉ／Ｏバーチャル化ロジック２０２およびＴＲＬ２０４は、図１に示すものと同じ機能を実行するが、それらをＣＰＵ１０２の外部から行う点のみが異なる。Ｉ／Ｏアダプタ２０６、２０８も同じ機能、つまりＩ／Ｏデバイス１２６などの１以上のＩ／Ｏデバイスに対し通信インタフェースを提供する機能を実行する。多くの実施形態において、Ｉ／Ｏコンプレックス２００は、システムのマザーボードに位置し、銅、光学、または他の物理的なタイプの一連のライン／配線を介してＣＰＵ１０２に結合された、独立したＩ／Ｏコントローラハブである。
【００２６】
図１に戻ると、ＴＲＬ１３２はいくつかの機能を実行する。第１に、ＴＲＬ１３２のロジックは、各ハードウェアスレッドの現在の電力状態をトラッキングする。多くのコンピュータシステムは、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）電力管理方式を実施する。ＡＣＰＩにより、業界標準の形態の電力管理を行うことが可能となる。ＡＣＰＩはソフトウェア、ＢＩＯＳ，またはハードウェア内で実行されてもよい。任意の時間においてハードウェアスレッドは、多数あるうちの１つの電力状態にあるか、または２つの電力状態間を移行している。ハードウェアスレッドがとることのできる電力状態の数は、実装方式によって異なる。例えば、ハードウェアスレッドがとりうる状態に例には、Ｃ０（フル動作）、Ｃ１（停止）、Ｃ２（ストップクロック）、Ｃ３（スリープ）、およびＣ４およびＣ６などのよりディープなスリープ状態がある。他の電力最適化状態は、ＭＯＮＩＴＯＲまたはＭＷＡＩＴのスレッド命令を用いてもよい。ハードウェアスレッドがとることの出来る各電力状態は、それぞれ異なる機能性を有しており、或いはそれら機能性が欠如している。一般的に電力の節約の程度が高ければ高い程、ハードウェアスレッドがその電力状態から抜け出すにはより長い時間がかかる。
【００２７】
Ｉ／Ｏデバイスから、省電力状態に移行しようとしている、または省電力状態のままでいようとするハードウェアスレッドへ送信される割込みを制限または完全に阻止することにより、一般的にシステム消費電力は節約される。問題は、デバイスがその割込みの対応を必要としていることである。よって、受信するＩ／Ｏデバイス割込みを省電力状態にない代替的なハードウェアスレッドへリダイレクトすることによって、当初のターゲットのスレッドが低電力消費状態のままでいられ、システム消費電力の節約を継続して行えるであろう。
【００２８】
ＴＲＬ１３２は、各種の割込みに適合するハードウェアスレッドについての情報を格納するリスト、テーブル、または他のタイプのデータ構造にアクセス可能である。言い換えると、任意のタイプの割込みに対し、対象となっている割込みに対応できる一式のハードウェアスレッドがある。例えば、特定の割込み（例えば割込みタイプ「Ａ」）がハードウェアスレッド１、２によって対応可能だとすれば、当該特定の割込みに対応する割込みタイプテーブルには、ハードウェアスレッド１、２が適合することが示されているであろう。よって、Ｉ／Ｏデバイス１２６などのＩ／Ｏデバイスは割込み「Ａ」をハードウェアスレッド１へ送信し、ハードウェアスレッド１が低電力状態にある場合、ＴＲＬ１３２は、トランスペアレントに割込みターゲットをハードウェアスレッド１からハードウェアスレッド２へリマッピングする。ＯＳまたはＶＭＭは、任意のタイプの割込みをハンドリングすることが出来る一式のハードウェアスレッドを構成できる。任意の割込みをハンドリング出来る当該一式のハードウェアスレッドは、スレッドアフィニティ、キャッシュ共有トポロジー、或いは他の静的なまたは動的な要因に基づいてよい。
【００２９】
図３は、ハードウェアスレッド／割込みタイプ互換性情報のマトリックスを格納するデータ構造、および各ハードウェアスレッドの現在の電力状態を格納するデータ構造を示す。
【００３０】
上述したように、ハードウェアスレッド／割込みタイプ互換性情報テーブルは、任意の割込みタイプをハンドリング出来る一式のスレッドに関する情報を格納する。図３に示す実施形態において、４つのコア（コア０〜３）が存在し、スレッドリマッピングロジック３００はそれらについての情報にアクセスできる。ハードウェアスレッド／割込みタイプマトリックステーブル３０２は、任意のタイプの割込みに対し適合するハードウェアスレッドのリストを含む。例えば、割込みタイプＡは、存在する全てのハードウェアスレッドによってハンドリング可能であり、割込みタイプＢは、ハードウェアスレッド０、２によってのみハンドリング可能である。
【００３１】
ハードウェアスレッドの現在の電力状態テーブル３０４は、各ハードウェアスレッドの現在の電力状態を含む。例示を目的とし、テーブルは、各スレッドが起動状態にあるか、スリープ状態にあるかのみを示しており、実際には、リストには多くの状態を表す情報を表示できる。例えば、スレッドがＣ状態（例えばＣ１、Ｃ２、Ｃ６など）のうちのいずれの電力状態にあるかを示すことが出来る。
【００３２】
Ｉ／Ｏデバイス割込み３０６をＴＲＬ３００が受信すると、ＴＲＬ３００は最初にハードウェアスレッドの現在の電力状態テーブル３０４を参照し、ターゲットのハードウェアスレッドが起動状態にあるか、スリープ状態にあるかを確認する。ハードウェアスレッドが起動状態にある場合、ＴＲＬ３００はそのまま当初のターゲットのハードウェアスレッドへ割込みを送信する。一方、当初のターゲットのハードウェアスレッドが起動状態にない場合、ＴＲＬ３００は、ハードウェアスレッド／割込みタイプマトリックステーブル３０２を参照し、スレッドハンドリング互換性を確認し、受信した割込みをハンドリング出来る他のハードウェアスレッドを検索し、他のハードウェアスレッドが利用可能である場合、ＴＲＬ３００は当該割込みを、ハンドリング可能であり利用可能である（つまり非スリープ状態にある）スレッドへリマッピングする。
【００３３】
多くの実施形態において、ＴＲＬはシステム内に存在する各ＣＰＵに存在するので、マルチソケットコンピュータシステムにおいては、複数のＴＲＬが存在する。
【００３４】
図４は、電力最適化割込み配信が可能な２ソケットコンピュータシステムの一実施形態を示す。
【００３５】
図４に示す実施形態では、２つのＣＰＵ（ＣＰＵ  Ａ４００、Ｂ４０２）が存在する。さらに、各ＣＰＵは２つのコア（ＣＰＵ  Ａ４００内にコアＡ０、Ａ１、ＣＰＵ  Ｂ４０２内にコアＢ０、Ｂ１）を含む。さらに、ＣＰＵ  Ａ４００はＴＲＬ  Ａ４０４を含み、ＣＰＵ  Ｂ４０２はＴＲＬ  Ｂ４０６を含む。多くの実施形態において、各ＴＲＬは、ハードウェアスレッド／割込みタイプマトリックステーブル（図３における３０２）およびハードウェアスレッドの現在の電力状態テーブル（図３における３０４）の自身が用いるコピーを含む。これらのテーブルには複数のコピーがあることとなるが、これらのテーブル内の情報はそれら複数のコピー間で同一であるので、各ＴＲＬは同じ情報を有することとなる。これら２つのテーブル内の情報のミラーコピーは、各ＣＰＵ上のＣＰＵ間リンクインタフェース（ＣＰＵ  Ａ４００上のインタフェース４１２、ＣＰＵ  Ｂ４０２上のインタフェース４１４）に結合されたＣＰＵ間リンク４１０でブロードキャストされるＣＰＵ間ブロードキャストメッセージ４０８内に保持される。
【００３６】
例えば、ハードウェアスレッドが２つの電力状態間を移行する時、電力状態移行メッセージが、ＣＰＵ間インターコネクトを介し、コンピュータシステムに存在する全てのＴＲＬにブロードキャストされる。各ＴＲＬはこのメッセージを取得し、自身が格納するハードウェアスレッドの現在の電力状態テーブル（図３におけるアイテム３０４）を更新し、対象となるハードウェアスレッドが移行した新しい電力状態を表示する。
【００３７】
いくつかの実施形態において、電力状態間を移行しているハードウェアスレッドは、自身のメッセージを全てのＴＲＬにブロードキャストする。他の実施形態において、電力状態間を移行しているハードウェアスレッドは、ローカルのＴＲＬに移行情報を送信し、当該ローカルのＴＲＬは、全ての他のＴＲＬに状態の移行をブロードキャストする。
【００３８】
図５は、電力最適化割込み配信が可能な２ノードコンピュータシステムの一実施形態を示す。
【００３９】
図４に示す実施形態では、２つのノード（ノードＡ、Ｂ）が存在する。ノードＡは２つのＣＰＵ（ＣＰＵ  Ａ０、Ａ１）を含む。各ＣＰＵは、２つのコアを含む。ＣＰＵ  Ａ０はコアＡ０ａ、Ａ０ｂを含み、ＣＰＵ  Ａ１は、コアＡ１ａ、Ａ１ｂを含み、ＣＰＵ  Ｂ０は、コアＢ０ａ、Ｂ０ｂを含み、ＣＰＵ  Ｂ１は、コアＢ１ａ、Ｂ１ｂを含む。ノードＡ、Ｂは、ノード間リンク５００を介し結合される。各ノードにはノードコントローラが存在する。ノードコントローラＡ５０２は、ノードＡの管理をサポートし、ノードコントローラＢは、ノードＢの管理をサポートする。ノード間通信トラフィックは、各ノードコントローラを介してルーティングされる必要がある。よって、ハードウェアスレッドが電力状態を移行する際に送信するメッセージは、（２つのノード間を繋ぐ点線で示すように）ノードコントローラを介してノード間でルーティングすることが出来る。
【００４０】
図６は、電力最適化割込み配信の処理の一実施形態のフロー図である。
【００４１】
処理は、ハードウェア、ソフトウェア、ファームウェア、またはこれらリストアップされたタイプの処理ロジックの任意の組み合わせによって実施される処理ロジックによって実施される。処理は、処理ロジックがＩ／Ｏデバイス割込みを受信することから開始する（処理ブロック６００）。
【００４２】
その後処理ロジックは、割込みターゲットであるハードウェアスレッド（つまり割込みがアフィニティを有するスレッド）は省電力状態にあるかどうかを判断する（処理ブロック６０２）。ターゲットのハードウェアスレッドが省電力状態にない場合、処理ロジックはそのままＩ／Ｏデバイス割込みを、当初のターゲットのハードウェアスレッドへ送信する（処理ブロック６０４）。
【００４３】
一方、ターゲットのハードウェアスレッドが省電力状態にある場合、処理ロジックは、（図３に示すハードウェアスレッド／割込みタイプ互換性マトリックス３０２のような、処理ロジックがアクセス可能なハードウェアスレッド互換性情報に基づいて）他のハードウェアスレッドが適合するかどうかを判断する（処理ブロック６０６）。
【００４４】
図６の処理フローで示す実施形態において、適合するハードウェアスレッドがない場合、処理ロジックはターゲットのハードウェアスレッドを起動させ（処理ロジック６０８）、割込みをターゲットのハードウェアスレッドへ送信する（処理ブロック６０４）。示されない他の実施形態において、処理ロジックは（命令された要求に依存して）互換性のあるＣＰＵハードウェアスレッドが利用可能となるまで割込みを保留してよい。
【００４５】
適合するハードウェアスレッドが存在した場合、処理ロジックは当該適合するハードウェアスレッドが利用可能であるかどうか判断する（処理ブロック６１０）。例えば、適合するハードウェアスレッドが存在するが同じくディープスリープ省電力状態にあり、直ぐには利用可能ではないものとする。多くの実施形態において、省電力状態にランク付けされた順序があり、２つの適合するスレッドの両方が省電力状態にあるとすると、処理ロジックは、最も「ディープ」ではない状態にあるスレッドを起動させ、より「ディープ」なスリープ状態にあるスレッドは、そのスリープ状態を維持できる。このことにより、同時に２つの効果が得られる。第１に、より多くのシステム消費電力を節約しているよりディープなスリープ状態にあるスレッドは、程度のより高い電力節約モードのままでいられる。第２に、よりディープではないスリープ状態になるスレッドは、より短い呼び出し時間で起動状態へと移行できる。なぜなら一般的に、よりディープなスリープ状態からの起動には、より長い起動呼び出し時間が必要となるからである。
【００４６】
図６に示す処理に戻ると、適合するハードウェアスレッドが利用可能ではない場合、処理ロジックは６０６に戻り、さらに他の適合するハードウェアスレッドがあるか判断する。反対に、適合するスレッドが利用可能である場合、処理ロジックはＩ／Ｏデバイス割込みを、見つけられた互換性のある代替的なハードウェアスレッドにリマッピングし（処理ブロック６１２）、リマッピングされた割込みを当該代替的なハードウェアスレッドへ送信する（処理ブロック６１４）。
【００４７】
原則的に、処理ロジックは任意のハードウェアスレッドから他のハードウェアスレッドへ割込みをトランスペアレントに（つまり、Ｉ／Ｏデバイスは原則的に、割込みをハンドリングするスレッドが移行したことを認識しないで）移行させることが出来る。
【００４８】
本願発明の実施形態の要素は、機械実行可能命令を格納する機械可読媒体として提供することも出来る。機械可読媒体は、フラッシュメモリ、光学ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ，ランダムアクセスメモリ（ＲＡＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、磁気または光学カード、伝搬媒体、または電子命令の格納に適した他のタイプの機械可読媒体が含まれ、またこれらに限定されない。
【００４９】
上記の説明および特許請求の範囲において、「含む」および「備える」などの用語、並びにそれらの派生語を用いることがあるが、それらは互いの同義語としては用いられていない。さらに、以下の説明および特許請求の範囲において、「結合」および「接続」といった用語、並びにそれらの派生語が用いられる。これらの用語は、互いの類義語として用いられるわけではないことを理解されたい。むしろ、特定の実施形態において「接続」とは、２以上の要素が互いに、物理的または電気的に直接接触することを示すのに用いられる。「結合」とは、２以上の要素が、物理的または電気的に直接接触することを意味する場合もある。しかし、「結合」とは、２つ以上の要素が互いに直接接触していなくてもよく、そういった場合であっても互いに協働し、作用し、通信を行うことも意味する。
【００５０】
上記の説明において、本願発明の実施形態を説明するべく、特定の用語を用いた。例えば、「ロジック」という用語は、１以上の機能を実行するハードウェア、ファームウェア、またはソフトウェア（或いはこれらの任意の組み合わせ）を代表的に表す。例えば、「ハードウェア」の例には、集積回路、有限状態機械、または組み合わせロジックまでも含まれ、またこれらに限定されない。集積回路は、マイクロプロセッサ、特定用途向け集積回路、デジタル信号プロセッサ、マイクロコントローラなどのプロセッサの形態であり得る。
【００５１】
本明細書を通じて「一実施形態」または「実施形態」などと言及した場合、それら実施形態に関連して説明した特定の特徴、構造、または特性が、本願発明の少なくとも一実施形態に含まれることを意味する。よって、本明細書の様々な個所において「実施形態」、「一実施形態」、または「代替的な実施形態」と２度以上言及した場合であっても、それらが必ずしも同一の実施形態を指すものではないことを強調したく、またそのことが理解されるべきである。さらに、特定の特徴、構造、または特性は、本願発明の１以上の実施形態において適切に組み合わせることが可能である。
【００５２】
同様に、上述した本願発明の実施形態の説明において、様々な特徴が単一の実施形態、図面またはその図面の説明において、併せてグループ化された。このことは、本開示を効率的なものとし、本願発明の１以上の様々な態様の理解を促すことを目的としている。しかしこの開示方法は、特許請求される対象が、各請求項で明示されるよりも多くの特徴を要するといった意図があることを反映しているものと解釈されるべきではない。むしろ、以下の請求項から読み取れるように、本願発明の態様は、上記で開示した単一の実施形態の全てを含んでいなくても実施可能である。よって、詳細な説明に続く特許請求の範囲は、この詳細な説明に明示的に組み込まれる。
【図１】
2013545150.tif 000003
【図２】
2013545150.tif 000004
【図３】
2013545150.tif 000005
【図４】
2013545150.tif 000006
【図５】
2013545150.tif 000007
【図６】
2013545150.tif 000008
【国際調査報告】
2013545150.tif 000009
2013545150.tif 000010