(57)【要約】  幾らかの実装例では、装置であって、論理割り込み識別番号作成ロジックを備え、論理割り込み識別番号作成ロジックは、複数の物理プロセッサ識別番号を受信して、複数の物理プロセッサ識別番号を利用して複数の論理プロセッサ識別番号を作成する。複数の論理プロセッサ識別番号の各々は、複数の物理プロセッサ識別番号のいずれか１つに対応しており、複数の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含む。プロセッサクラスタ識別番号はそれぞれ、位置をシフトされた対応する物理プロセッサ識別番号からのビット群を含むように形成され、イントラクラスタ識別番号はそれぞれ、対応する物理プロセッサ識別番号のビットのうち他のものの値に呼応して形成される。【選択図】  図１
2010538373.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
論理割り込み識別番号作成ロジックを備え、
前記論理割り込み識別番号作成ロジックは、
複数の物理プロセッサ識別番号を受信して、
前記複数の物理プロセッサ識別番号を利用して複数の論理プロセッサ識別番号を作成し、
前記複数の論理プロセッサ識別番号の各々は、前記複数の物理プロセッサ識別番号のいずれか１つに対応しており、前記複数の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含み、前記プロセッサクラスタ識別番号はそれぞれ、位置をシフトされた対応する物理プロセッサ識別番号からのビット群を含むように形成され、前記イントラクラスタ識別番号はそれぞれ、対応する物理プロセッサ識別番号の前記ビットのうち他のものの値に呼応して形成される装置。
【請求項２】
前記イントラクラスタ識別番号はそれぞれ、対応する物理プロセッサ識別番号の幾らかのビットに含まれる量分だけ値をシフトさせることで形成される請求項１に記載の装置。
【請求項３】
前記複数の論理プロセッサ識別番号（論理ＩＤ）の各々は、対応する物理プロセッサ識別番号（物理ＩＤ）に関する、論理ＩＤ＝［（物理ＩＤ［１９：４］＜＜１６）｜｜（１＜＜物理ＩＤ［３：０］）という式に従い形成される請求項１に記載の装置。
【請求項４】
前記複数の論理プロセッサ識別番号および前記複数の物理プロセッサ識別番号のそれぞれが関連付けられるプロセッサパッケージ内の複数のプロセッサをさらに備える請求項１に記載の装置。
【請求項５】
前記複数のプロセッサはそれぞれ、ローカルＡＰＩＣ（マルチプロセッサ用割込み制御機構）を有し、前記論理割り込み識別番号作成ロジックは前記ローカルＡＰＩＣに含まれる請求項４に記載の装置。
【請求項６】
複数のローカルＡＰＩＣをさらに備え、前記論理割り込み識別番号作成ロジックは前記複数のローカルＡＰＩＣに含まれる請求項１に記載の装置。
【請求項７】
前記複数の論理プロセッサ識別番号はそれぞれ論理ＡＰＩＣ識別番号（ＩＤ）であり、前記複数の物理プロセッサ識別番号はそれぞれ物理ＡＰＩＣ  ＩＤである請求項１に記載の装置。
【請求項８】
前記ＡＰＩＣ  ＩＤはｘＡＰＩＣ  ＩＤである請求項７に記載の装置。
【請求項９】
前記ＡＰＩＣ  ＩＤは拡張ｘＡＰＩＣ  ＩＤである請求項７に記載の装置。
【請求項１０】
方法であって、
複数のプロセッサに対してそれぞれ物理割り込み識別番号を割り当てる段階と、
複数の物理プロセッサ識別番号を利用して複数の論理プロセッサ識別番号を作成する段階とを備え、
前記複数の論理プロセッサ識別番号の各々は、前記複数の物理プロセッサ識別番号のいずれか１つに対応しており、前記複数の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含み、前記プロセッサクラスタ識別番号はそれぞれ、位置をシフトされた対応する物理プロセッサ識別番号からのビット群を含むように形成され、前記イントラクラスタ識別番号はそれぞれ、対応する物理プロセッサ識別番号の前記ビットのうち他のものの値に呼応して形成される方法。
【請求項１１】
前記イントラクラスタ識別番号はそれぞれ、対応する物理プロセッサ識別番号の幾らかのビットに含まれる量分だけ値をシフトさせることで形成される請求項１０に記載の方法。
【請求項１２】
前記複数の論理プロセッサ識別番号（論理ＩＤ）の各々は、対応する物理プロセッサ識別番号（物理ＩＤ）に関する、論理ＩＤ＝［（物理ＩＤ［１９：４］＜＜１６）｜｜（１＜＜物理ＩＤ［３：０］）という式に従い形成される請求項１０に記載の方法。
【請求項１３】
前記複数の論理プロセッサ識別番号は、ＡＰＩＣで作成される請求項１０に記載の方法。
【請求項１４】
システムであって、
第１のプロセッサクラスタと、第１の論理割り込み識別番号作成ロジックとを有する第１のプロセッサパッケージと、
第２のプロセッサクラスタと、第２の論理割り込み識別番号作成ロジックとを有する第２のプロセッサパッケージとを備え、
前記第１の論理割り込み識別番号作成ロジックは、
それぞれが前記第１のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第１群の物理プロセッサ識別番号を受信して、
それぞれが前記第１のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第１群の論理プロセッサ識別番号を作成し、
前記第１群の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含み、前記プロセッサクラスタ識別番号は、位置をシフトされた前記第１群の物理プロセッサ識別番号のうち対応するものからのビット群を含むように形成され、前記イントラクラスタ識別番号はそれぞれ、前記第１群の物理プロセッサ識別番号のうち対応するものの前記ビットのうち他のものの値に呼応して形成され、
前記第２の論理割り込み識別番号作成ロジックは、
それぞれが前記第２のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第２群の物理プロセッサ識別番号を受信して、
それぞれが前記第２のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第２群の論理プロセッサ識別番号を作成し、
前記第２群の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含み、前記プロセッサクラスタ識別番号は、位置をシフトされた前記第２群の物理プロセッサ識別番号のうち対応するものからのビット群を含むように形成され、前記イントラクラスタ識別番号はそれぞれ、前記第２群の物理プロセッサ識別番号のうち対応するものの前記ビットのうち他のものの値に呼応して形成されるシステム。
【請求項１５】
前記第１群の論理プロセッサ識別番号の前記イントラクラスタ識別番号はそれぞれ、前記第１群の物理プロセッサ識別番号のうち対応するものの幾らかのビットに含まれる量分だけ値をシフトさせることで形成され、前記第２群の論理プロセッサ識別番号の前記イントラクラスタ識別番号はそれぞれ、前記第２群の物理プロセッサ識別番号のうち対応するものの幾らかのビットに含まれる量分だけ値をシフトさせることで形成される請求項１４に記載のシステム。
【請求項１６】
前記論理プロセッサ識別番号（論理ＩＤ）の各々は、対応する物理プロセッサ識別番号（物理ＩＤ）に関する、論理ＩＤ＝［（物理ＩＤ［１９：４］＜＜１６）｜｜（１＜＜物理ＩＤ［３：０］）という式に従い形成される請求項１４に記載のシステム。
【請求項１７】
前記第１のプロセッサクラスタの前記プロセッサはそれぞれ、ローカルＡＰＩＣを含み、前記第１の論理割り込み識別番号作成ロジックは前記第１のプロセッサクラスタの前記ローカルＡＰＩＣに含まれる請求項１４に記載のシステム。
【請求項１８】
前記第１群の物理プロセッサ識別番号はそれぞれローカルＡＰＩＣ識別番号である請求項１７に記載のシステム。
【請求項１９】
前記論理プロセッサ識別番号はそれぞれ論理ＡＰＩＣ識別番号（ＩＤ）であり、前記物理プロセッサ識別番号はそれぞれ物理ＡＰＩＣ  ＩＤである請求項１４に記載のシステム。
【請求項２０】
前記第１のプロセッサパッケージは、第３のプロセッサクラスタと、第３の論理割り込み識別番号作成ロジックとを有し、
前記第３の論理割り込み識別番号作成ロジックは、
それぞれが前記第３のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第３群の物理プロセッサ識別番号を受信して、
それぞれが前記第３のプロセッサクラスタのプロセッサのいずれか１つに関連付けられる第３群の論理プロセッサ識別番号を作成し、
前記第３群の論理プロセッサ識別番号の各々は、プロセッサクラスタ識別番号とイントラクラスタ識別番号とを含み、前記プロセッサクラスタ識別番号は、位置をシフトされた前記第３群の物理プロセッサ識別番号のうち対応するものからのビット群を含むように形成され、前記イントラクラスタ識別番号はそれぞれ、前記第３群の物理プロセッサ識別番号のうち対応するものの前記ビットのうち他のものの値に呼応して形成される請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、概してプロセッサの割り込みに係る。
【背景技術】
【０００２】
ＡＰＩＣ（マルチプロセッサ用割込み制御機構）は、プログラム可能な手順または優先度に応じて、割り込み要求を受け取り、割り込み出力を提供するプログラム可能な割り込みコントローラ（ＰＩＣ）である。ローカルＡＰＩＣはプロセッサ（例えばマイクロプロセッサ）で利用される。Ｉ／Ｏ  ＡＰＩＣは、チップセットデバイス（例えば入力（Ｉ／Ｏ）コントローラハブ（ＩＣＨ））および周辺デバイスで利用される。周辺デバイスの例には、ＰＣＩ規格（Peripheral Component Interconnect）規格のいずれか、または、ＰＣＩ−ＳＩＧ（登録商標）が提供する２００６年１２月２０日発行のＰＣＩエクスプレス（登録商標）ベース仕様改訂版２．０等のＰＣＩエクスプレス（ＰＣＩｅ）規格のいずれかに準拠したＩＣＨに連結されるデバイスが含まれる。ｘＡＰＩＣは拡張ＡＰＩＣであり、所期のＡＰＩＣに類似しているが、さらなる特徴が追加されており、ｘＡＰＩＣアーキテクチャでは、ローカルおよびＩ／Ｏ  ＡＰＩＣは、ＡＰＩＣバスを介するのではなく、システムバスを介して通信する。さらなる拡張ｘＡＰＩＣには、さらに拡張および特徴が追加されている。
【０００３】
プロセッサパッケージは、１を超える数のコアを含んでよく、これら各々が１を超える数のプロセッサを含んでよい。物理モード割り込みは、割り込みデバイスが対象プロセッサを物理識別番号により指定する、あるいは、全てのプロセッサにブロードキャストする割り込みである。論理モード割り込みは、割り込みデバイスが論理識別番号（１または複数）により対象プロセッサ（１または複数）を指定する割り込みである。ＡＰＩＣ割り込み配信には、有向割り込み（単一のプロセッサを対象とする）、マルチキャスト（多数のプロセッサを対象とする）、およびブロードキャスト（全てのプロセッサ）が含まれる。最低優先度割り込みでは、割り込みに応答する際に最低プロセッサ優先度のプロセッサを選択する手順が利用される。最低優先度は、チップセットにおいて決定されていてよく、しばしばアドホック様式で、または、古いプロセッサ優先度とともに存在している。優先度情報は信頼性が低い場合が多いので、チップセットのなかには単に特定のプロセッサを選択して（ラウンドロビン方式等により）、割り込みをブロードキャスト様式でそのプロセッサに提供して、他のプロセッサもその割り込みを受信するが応答はできないようにしているものがある。
【０００４】
論理モードは、有向割り込みに比して柔軟性が大きく、Microsoft Windows（登録商標）および幾らかのLinux（登録商標） shrink-wrapオペレーティングシステムで用いられているモードである。ｘＡＰＩＣアーキテクチャの論理モードは、オペレーティングシステムのソフトウェアに対して、システムの各プロセッサに固有の識別子である論理ＡＰＩＣ識別番号（ＩＤ）の初期設定における柔軟性を与える。プロセッサはさらに物理ＡＰＩＣ  ＩＤも有する。他のプロセッサおよびデバイスまたはＩＯｘＡＰＩＣも、このＩＤを利用してこのプロセッサに対して割り込みを送る。論理ｘＡＰＩＣ  ＩＤの初期設定における柔軟性を前提とすると、プラットフォームの実際の物理トポロジーと、ＩＤの割り当て方法との間に関係性はない。オペレーティングシステムの初期設定によりオペレーティングシステムにはプロセッサのグループ化における大きな柔軟性が与えられるが、プラットフォームレベルでは、これにより、有向論理モード割り込みのルーティングに複雑性が増す。論理モード割り込みのルーティングは、割り込みをブロードキャストして、論理プロセッサロジックに、論理ＡＰＩＣ  ＩＤと整合する場合にその割り込みを受諾させることにより実行される。
【０００５】
各プロセッサにすべての割り込みをチェックさせることにより、性能面および電力効率の面両方に悪影響が出る。例えば、ブロードキャスト法においては、各プロセッサが、例え低電力状態にある間であっても、ある割り込みがそのプロセッサに向けられたものであるかをチェックすることになる。割り込みはかなり頻繁に起こるので、プロセッサが深い低電力状態に留まることが難しくなる。さらに、割り込みが向けられていないパッケージへの割り込みを送る相互接続にもトラフィックが存在してしまうので、性能が低減する。一つの方法としては、オペレーティングシステムが、プロセッサの開始順序に応じて論理ＩＤを割り当てることで同じパッケージ内のプロセッサについて論理プロセッサクラスタを持つようにするというものがある。この方法は利用されたとしても部分的な解決にしかならず、ブロードキャストは依然として利用されることになる。故に、効率的にプロセッサにルーティング可能な論理ＡＰＩＣを作成する必要性がある。
【図面の簡単な説明】
【０００６】
本発明は、以下の詳細な記載および本発明の実施形態の添付図面からより完全な理解が促されるが、これらは本発明をこれら記載される特定の実施形態に限定するとして捉えられるべきものではなく、説明を容易にして、理解を促す目的のみから提示されていることを理解されたい。
【０００７】
【図１】本発明の幾らかの実施形態によるマルチコアプロセッサパッケージ、入出力ハブ、およびデバイスを含むシステムのブロック図である。
【０００８】
【図２】本発明の幾らかの実施形態によるマルチコアプロセッサパッケージ、入出力ハブ、およびデバイスを含むシステムのブロック図である。
【０００９】
【図３】本発明の幾らかの実施形態で利用される回路基板上のソケットのブロック図である。
【００１０】
【図４】本発明の幾らかの実施形態で利用される物理ＡＰＩＣ  ＩＤレジスタのブロック図である。
【００１１】
【図５】本発明の幾らかの実施形態で利用される論理ＡＰＩＣ  ＩＤレジスタのブロック図である。
【００１２】
【図６】論理ＡＰＩＣ  ＩＤ作成ロジックのブロック図である。
【００１３】
【図７】本発明の幾らかの実施形態で利用される物理ＡＰＩＣ  ＩＤからの論理ＡＰＩＣ  ＩＤの生成法を示す。
【００１４】
【図８】本発明の幾らかの実施形態による、１パッケージにつき４つのコアおよび１コアにつき２つの論理プロセッサを有する２つのソケットシステム用の物理および論理ＡＰＩＣ  ＩＤを示す。
【００１５】
【図９】本発明の幾らかの実施形態で利用される多数のエントリを有するＡＰＩＣリダイレクションテーブルのブロック図である。
【００１６】
【図１０】本発明の幾らかの実施形態で利用されるＡＰＩＣリダイレクションテーブルのエントリのブロック図である。
【発明を実施するための形態】
【００１７】
幾らかの実施形態では、システムは、プロセッサ物理ＩＤから各プロセッサ用に論理ＡＰＩＣ  ＩＣを作成する。論理ＡＰＩＣ  ＩＤは、プロセッサクラスタＩＤおよびクラスタのプロセッサ番号（イントラクラスタＩＤ）を有する。論理ＡＰＩＣ  ＩＤは、１クラスタ内の全てのプロセッサが同じプロセッサパッケージ内に含まれるように作成される。これにより、割り込みを、全てのプロセッサパッケージに対してブロードキャストするのではなく、１つだけのプロセッサパッケージに向けることができるので、インターコネクト上のトラフィックが低減される。さらに、これにより、他のプロセッサパッケージ内のプロセッサ（場合によっては同じプロセッサパッケージ内の他のクラスタも含む）が割り込みを受信しないので、割り込みが彼らに向けられたものであるか否かを判断する手間が省け、消費電力も低減される。場合によっては、これにより、プロセッサは、スリープ状態から退出する必要もなくなる。
【００１８】
幾らかの実施形態では、論理宛先識別番号は、割り込みに応答可能なプロセッサを含むことができる。プロセッサ選択ロジックは、利用可能なプロセッサのうち１つを選んで、割り込みを受信させる。
【００１９】
以下の説明では、物理ＡＰＩＣ  ＩＤは、物理プロセッサ識別番号の例であり、論理ＡＰＩＣ  ＩＤは論理プロセッサ識別番号の例である。論理ＡＰＩＣ  ＩＤ作成ロジックは、論理識別番号作成ロジックの一例である。
１．システムの概略
【００２０】
図１は、本発明の幾らかの実施形態で利用されうるシステムを示しているが、他の実施形態は、詳細の異なるシステムを含むことができる。図１を参照すると、システムでは、少なくとも１つのプロセッサパッケージ０とプロセッサパッケージ１とが入出力ハブ（ＩＯＨ）１２に連結されている。ＩＯＨ１２は、ＩＯＨ  Ｉ／Ｏ  ＡＰＩＣ１４、リダイレクションロジック１８、およびプロセッサ選択ロジック２０を含む。ＰＣＩｅ  Ｉ／Ｏ  ＡＰＩＣ２８を含むＰＣＩｅデバイス２６が、割り込みインタフェース回路３０を介してＩＯＨ１２に連結されている。デバイス３６（例えばキーボードおよびマウス）は、ＩＯＨ  Ｉ／Ｏ  ＡＰＩＣ１４を介して割り込みを提供する。ＩＯＨ  Ｉ／Ｏ  ＡＰＩＣ１４、Ｉ／Ｏ  ＰＣＩｅ  ＡＰＩＣ２８、およびローカルＡＰＩＣ７２−１・・・７２−４および７８−１・・・７８−４は、ｘＡＰＩＣまたは拡張ｘＡＰＩＣ等の様々な種類のＡＰＩＣであってよい。または、ＡＰＩＣ以外の割り込みコントローラを利用することもできる。
【００２１】
パッケージ０は、コア０および１、および、非コア４２と称される追加回路を含む。コア０は、プロセッサ７０−１および７０−２を含み、これらはローカルＡＰＩＣ７２−１および７２−２をそれぞれ含み、コア１はプロセッサ７０−３および７０−４を含み、これらはローカルＡＰＩＣ７２−３および７２−４をそれぞれ含む。パッケージ１は、コア２および３、および、非コア５２と称される追加回路を含む。コア１は、プロセッサ７６−１および７６−２を含み、これらはローカルＡＰＩＣ７８−１および７８−２をそれぞれ含み、コア３はプロセッサ７６−３および７６−４を含み、これらはローカルＡＰＩＣ７８−３および７８−４をそれぞれ含む。パッケージ０および１は、特に図示されていない様々なコンポーネントを含んでよい。メモリ６４（メインメモリＤＲＡＭ等）が非コア４２に連結され、メモリ６６が非コア５２に連結される。メモリ６０（オペレーティングシステム（ＯＳ）を保持するハードドライブを含む）が、ＩＯＨ１２に連結されている。メモリ６０とＩＯＨ１２との間には複数の中間コンポーネントが存在していてよい。ＢＩＯＳメモリ６２がＩＯＨ１２に連結されている。
【００２２】
プロセッサ７０−１、７０−２、７０−３、および７０−４は、物理ＡＰＩＣ  ＩＤ  Ｐ０、Ｐ１、Ｐ２、およびＰ３をそれぞれ有する。プロセッサ７０−１、７０−２、７０−３、および７０−４は、物理ＡＰＩＣ  ＩＤＰ０、Ｐ１、Ｐ２、およびＰ３をそれぞれ有する。論理ＡＰＩＣ  ＩＤ作成ロジック（図６参照）は、それぞれ物理ＩＤ  Ｐ０、Ｐ１、Ｐ２、およびＰ３、且つ、Ｐ１６、Ｐ１７、Ｐ１８、およびＰ１９に基づいて、論理ＡＰＩＣ  ＩＤ  Ｌ０、Ｌ１、Ｌ２、およびＬ３、且つ、Ｌ１６、Ｌ１７、Ｌ１８、およびＬ１９を提供する。もちろん、Ｐ０・・・Ｐ４およびＰ１６・・・Ｐ１９およびＬ０・・・Ｌ３およびＬ１６・・・Ｌ１９は、ＩＤビットを表し、「Ｐ」「Ｌ」とその番号だけを表すのではない。幾らかの実施形態では、パッケージ０および１は、２を超える数のコア（例えば図８を参照）を含み、１つのコアが２を超える数のプロセッサを含みうる。図示されている実施形態では、物理ＩＤにはＰ３とＰ１６と間に間隙があり、対応する論理ＩＤにもＬ３とＬ１６との間に間隙がある。この理由は、これら実施形態では、１つのクラスタが、実際のプロセッサが１６個はないとしても、１６個のプロセッサのＩＤを含む。１つのプロセッサパッケージは、１つのチップ（ダイ）または１を超える数のチップを含みうる。１つのプロセッサパッケージは０、１、またはそれ以上のメモリチップを含みうる。
【００２３】
リダイレクションロジック１８は、デバイス２６から値（例えば１６ビットの値）を受信して、パッケージ０またはパッケージ１に割り込みを提供する。割り込みに応答するのに利用するプロセッサの決定は、様々な場所で行われうる。実施形態によっては、決定は、ＩＯＨ１２内のプロセッサ選択ロジック２０でなされてよく、および／または、非コアのプロセッサ選択サブロジック（非コア４２のプロセッサ選択サブロジック４６、または非コア５２のプロセッサ選択サブロジック５６等）で行われてよい。サブロジック４８のフィルタ４８、およびサブロジック５６のフィルタ５８は、例えば電力状態（ｃ状態）および／またはプロセッサ優先度に基づいてプロセッサ候補をフィルタリングするのに利用されてよい。同様のフィルタがプロセッサ選択ロジック２０で利用されてもよい。幾らかの実施形態では、プロセッサ選択ロジック２０がなく、単にプロセッサ選択サブロジックのみがある。
【００２４】
図２は図１に類似しており、ＩＯＨ  ＡＰＩＣ１１４、リダイレクションロジック１１８、プロセッサ選択ロジック１２０、および割り込みインタフェース回路１３０（これらは、それぞれ図１のＩＯＨ  ＡＰＩＣ１４、リダイレクションロジック１８、プロセッサ選択ロジック２０、および割り込みインタフェース回路３０に類似していてよい）を有するＩＯＨ１１２を示す。図２はさらに、プロセッサクラスタ０、プロセッサクラスタ１を含むプロセッサパッケージ０、プロセッサクラスタ２、プロセッサクラスタ３を含むプロセッサパッケージ１、および、プロセッサクラスタ２（Ｎ−１）、プロセッサクラスタ２（Ｎ−１）＋１を含むプロセッサパッケージＮ−１を示す。プロセッサパッケージ０、１、・・・Ｎ−１は、インターコネクト１４２−０、１４２−１、・・・１４２−Ｎ−１によりＩＯＨ１１２に連結されている。幾らかの実施形態では、プロセッサ間を分割するインターコネクトが複数独立して存在してもよく、他の実施形態では、各プロセッサパッケージまたは各クラスタ用の一式の割り込みに利用される一式のインターコネクトが存在してもよい。割り込みのクラスタＩＤは、クラスタのうちいずれに割り込みを受信させるかを示す。
【００２５】
例えば、クラスタＩＤが００００００００００００００１０ｂである場合（ｂは二値を表す）を仮定する。これは、クラスタ２が割り込みを受け取ることを示している。これは、全てのプロセッサに対して割り込みをブロードキャストする方法に比して低電力で行われ、インターコネクト上のトラフィックも少ない。割り込みは、インターコネクト１４２−０および１４２−Ｎ−１で送信しないことで、帯域幅利用を促進し、且つ電力を低減させるクラスタ０、１、３、２（Ｎ−１）、および２（Ｎ−１）＋１のプロセッサは、割り込みが自身に対して向けられているかチェックする必要がないので、電力を低減につながる（プロセッサが、割り込みが自身に向けられているかを決定するべく深い低電力状態から抜ける必要がある場合等に特に有効である）。さらに、局所化を行ったために、異なるクラスタ内のプロセッサ間ではキャッシュライントラフィックがより低くなりうる。他の実施形態は、プロセッサパッケージ内により多くの数のプロセッサクラスタを含んでもよい。他のコンポーネント（例えば含まれる場合には非コア）は図２には示されていない。ＩＯＨとプロセッサパッケージとの間にはブリッジ等のさらなるコンポーネントがあってもよい。さらに、システム内には１を超える数のＩＯＨが存在しうる。
【００２６】
図３は、回路基板１９０（例えばプリント回路基板）が、プロセッサパッケージ０を受信するソケット０、プロセッサパッケージＮ−１を受信するソケットＮ−１、およびＩＯＨチップを受信するソケット１９４を含むソケットを含む。幾らかの実装例では、回路基板１９０は、プロセッサパッケージおよび様々な他のチップ用に追加ソケットを含むが、他の実装例では、回路基板１９０は２つのソケットしか含まない。ここで利用する用語「ソケット」は、回路基板へチップ（１または複数）を連結する様々な技術を包括する概念である。
【００２７】
２．ＡＰＩＣ  ＩＤ初期設定  幾らかの実施形態では、物理ＡＰＩＣ  ＩＤは、例えばリセットから抜け、次の電力サイクルまで存続する（persist）際に、ハードウェアおよび／またはマイクロコードにより静的に初期設定／ラッチされる。図４は、幾らかの実施形態では対応するローカルＡＰＩＣに含まれる３２ビットの物理ＡＰＩＣ  ＩＤを保持するレジスタ１１０を示す。
【００２８】
論理モードで利用される論理ＡＰＩＣ  ＩＤは、２つのフィールド（そのプロセッサクラスタ内の１６ビット幅のクラスタＩＤと１６ビット幅の論理ＩＤ）に分割されている。論理ＩＤの１６個の最上位ビットは、宛先クラスタのアドレスまたは識別番号を含み、これより下位の１６ビットは、クラスタ内の個々のローカルＡＰＩＣユニットを識別する。論理ＩＤ部分は、クラスタ内の１つのプロセッサにつき１ビットのビットマスクであってよい（例えば、ビット０がプロセッサクラスタのプロセッサ０に設定され、ビット１がプロセッサクラスタのプロセッサ１に設定される、等である）。図５は、３２ビットの論理ＡＰＩＣ  ＩＤを保持するレジスタ１１２を示し、うち、ビット１６から３１がクラスタＩＤを保持し、ビット０−１５がイントラクラスタ論理ＩＤを保持する。実際的には、多くのシステムは、例えば１または２つのビットのみがクラスタＩＤの識別に利用される等、少数のプロセッサクラスタを有する。異なる実施形態では、残りのビットは異なる方法で処理されてよい。例えば、あるシステムでビットのうち幾らかが無視され、他のシステムで利用される。
【００２９】
初期設定アルゴリズムにより、プラットフォームトポロジーに基づいて論理ＡＰＩＣ  ＩＤと物理ＡＰＩＣ  ＩＤとの間に永久的な関係が構築されてよい。これにより、ブロードキャストの実行と対照的に、ルーティング構造に、割り込みをルーティングする特定のプロセッサパッケージ（ソケット）の知識が提供される。
【００３０】
プロセッサクラスタが１６個のプロセッサという制限を課せられた場合には、１６個を超える数のプロセッサが１つのプロセッサパッケージにある場合、１つのパッケージについて多数のクラスタを設ける。１つのクラスタ内に１６個をより少ないプロセッサがある場合には、ＡＰＩＣ  ＩＤのパディングが利用されてよい。
【００３１】
論理ＡＰＩＣ  ＩＤ作成ロジック２１６は、物理ＡＰＩＣ  ＩＤから論理ＡＰＩＣ  ＩＤを作成する。論理ＡＰＩＣ  ＩＤ作成ロジック２１６は、ハードウェア、ソフトウェア、またはマイクロコード、またはこれらの組み合わせで実装されてよい。ハードウェアは非コアあるいはローカルＡＰＩＣ内にあっても、その他の場所にあってもよい。幾らかの実施形態では、論理ＡＰＩＣ  ＩＤが、物理ＡＰＩＣ  ＩＤの下位４ビットが、「復号」され（つまり、１＜＜物理ＡＰＩＣ  ＩＤ［３：０］）、１６ビットの論理ＩＤがクラスタ内に提供されるように論理ＡＰＩＣ  ＩＤを導出する。物理ＡＰＩＣ  ＩＤの残りの１６ビットは、論理ｘＡＰＩＣ  ＩＤのクラスタＩＤ部分を形成する。故に、論理ｘＡＰＩＣ  ＩＤが、以下の式を利用して論理ｘＡＰＩＣ  ＩＤから導出される。
【００３２】
論理ＡＰＩＣ  ＩＤ＝［（物理ＡＰＩＣ  ＩＤ［１９：４］＜＜１６）｜｜（１＜＜物理ＡＰＰＩＣ  ＩＤ［３：０］）
この式では、記号｜｜は、「ＯＲ」を表すが、加算（addition）として置き換えても同様の結果が得られるであろう。この式は、以下のような換言も可能である。
論理ＩＤ＝（１＜＜ローカルｘＡＰＩＣ  ＩＤ［３：０］）  ／／イントラクラスタ論理ＩＤ
｜｜（ローカルｘＡＰＩＣ  ＩＤ［１９：４］＜＜１６）／／クラスタＩＤ
【００３３】
図７は、レジスタ２１０の物理ＡＰＩＣ  ＩＤをレジスタ２１２の論理ＡＰＩＣ  ＩＤに変換することで論理ＡＰＩＣを導出する処理の一例を示す。ビット２０−３１は無視され、様々な用途に利用されてよい。
【００３４】
図８は、プロセッサパッケージ０および１（各々が２つのプロセッサをそれぞれ含む４つのコアを含む）に、論理ＡＰＩＣ  ＩＤを物理ＡＰＩＣ  ＩＤから得る一例を示す。１つのパッケージについて１６個よりも少ない数のプロセッサがあるので、１つのパッケージには１つのクラスタだけがある。パッケージ０を参照すると、プロセッサＰ０の物理ＡＰＩＣ  ＩＤが０００００ｂとして示されている。「ｂ」は二値である。第１の０は、クラスタＩＤからのものであり、このクラスタがパッケージ０のものであることを示す。図面のスペースを確保する目的から、クラスタＩＤからの他のビットは図８に示されていない。４つの下線が施された０が、イントラクラスタＩＤにあり、物理ＡＰＩＣ  ＩＤが０であることを示す（全てのゼロはリストしない）。上述の手順に続いて、さもなくばゼロを含むイントラクラスタ論理ＩＤの最下位ビット（ＬＳＢ）の「１」から初めて、物理ＩＤの最初の４つのビットに見つかる量分だけ「１」をシフトさせることで、論理ＡＰＩＣ  ＩＤを作成する。プロセッサＰ０の物理ＩＤの最初の４つのビットは００００であるので、「１」はシフトされず、故に、論理ＩＤは０００１ｈとなる（「ｈ」は１６進数である）。１６進数を利用することで、大量の数を図８に示すことができる。クラスタＩＤ（０）は、物理ＩＤのビット４−１９の場合と同じになる。プロセッサＰ１の場合、物理ＩＤの４つのＬＳＢは０００１であるので、「１」を１ビット分シフトして、クラスタ０のクラスタＩＤが０となり、論理ＩＤが、１を１ビット分シフトすることで生成される０００２ｈとなるようにする。例えば、プロセッサＰ５の場合には、「１」は、左に５ビット分シフトするが、これは、二進法では３２であり１６進法では２０に相当する。同様のことはパッケージ１にも当てはまるが、物理および論理ＡＰＩＣ  ＩＤ両方についてクラスタＩＤが１となる点が異なる。
【００３５】
初期設定は、例えば実装の容易さ等に応じて、多数の時点で起こりうる。初期設定が起こりうる時の例としては、物理ＡＰＩＣ  ＩＤを初期設定するべくリセットから出る間、または、オペレーティングシステムが最初に論理ＡＰＩＣ  ＩＤを読み出す時点が含まれる。上述したＡＰＩＣ  ＩＤのパディングを行うアルゴリズムでは、適宜、各ＡＰＩＣクラスタを単一のプロセッサパッケージに収めるようにする。
【００３６】
３．プロセッサ選択ロジックおよびリダイレクション
【００３７】
プロセッサ選択ロジックは、利用可能な選択肢の中から割り込みを受信するプロセッサを選択する。ローカルＡＰＩＣに割り込みを受信させることは、プロセッサが割り込みを受信することの一例である。先行技術では、最低優先度スキームにより割り込み用のプロセッサが選択されてきた。しかし以下に説明するように、どのプロセッサに割り込みを受信させるかの決定については、プロセッサ優先度以外の、またはプロセッサ優先度に加えて、他の要素を考慮に入れることができる。
【００３８】
オペレーティングシステムは、あるクラスタおよびクラスタ内の少なくとも１つのプロセッサを、割り込みに利用可能であるとして選択することができる。この情報は、例えば図１のデバイス２６等のデバイスが提供する割り込み内に直接または間接的に含まれていてよい。例えば、直接的な実装例では、割り込みは１６ビットフィールドを含み、これは、クラスタの各プロセッサにつき１つずつ、ビットマップ様式で割り当てられていてよい（プロセッサの数が１６個未満である場合には、利用されないビットも出てくるであろう）。そのプロセッサに関連付けられた位置の「１」として利用可能なプロセッサでは、その位置が図８について上述した式の物理ＡＰＩＣ  ＩＤから論理ＡＰＩＣ  ＩＤを提供するのに利用される。これは論理宛先ＩＤと称されてよい。例えば、論理宛先ＩＤビットマスクは、００１０１１０１であり、これはプロセッサＰ０、Ｐ２、Ｐ３、およびＰ５が割り込み用に利用可能であることを示す。これは、１つのクラスタに８個のプロセッサが存在することを仮定しているが、最も左側の８個のビットは示されていない。もちろん、０が利用可能なプロセッサを表し、１が利用不可能なプロセッサを表すという「０」「１」の役割は保持することができる。上述のプロセッサ選択ロジックは、利用可能なプロセッサのうちいずれにより割り込みを受信するかを選択することができる。通常は１つのプロセッサしか割り込みを受信しないが、場合によっては、１を超える数のプロセッサに割り込みを向けることもできる。
【００３９】
この代わりに、デバイス３６からの割り込みは、インデックス（例えば１６‐ビットのインデックス）を含むことができ、インデックスは、図１のリダイレクションロジック１９に含まれうるリダイレクションテーブルに提供される。図９を参照すると、リダイレクションテーブル２３０は、例えば、それぞれ異なるインデックス値について６４ビットのエントリを含む。エントリ２３４は一例である。図１０は幾らかの実施形態による例示的なエントリ２３４の詳細を示し、他の実施形態では、これが異なっていてもよい。図１０を参照すると、ビット４８−６３は、クラスタＩＤを示し、図１０の例では、これはクラスタ２が割り込みを受信されることを示す。図２の例を参照のこと。図１０を参照すると、論理宛先ＩＤは、プロセッサ選択ロジック（またはサブロジック）が考慮可能な利用可能プロセッサをリストしている。宛先ＩＤビットマスク０１１ｂは、プロセッサＰ０およびＰ１が利用可能であり、他のプロセッサが利用不可能であることを示す。説明の便宜上、１６ビットのうち３つが図１０に示されている。宛先ビットマスクは、００１０１１０１ｂであり、これは、プロセッサＰ０、Ｐ２、Ｐ３、およびＰ５が利用可能であり、プロセッサＰ１、Ｐ４、Ｐ６、およびＰ７が利用不可能であることを示していてよい。この例にはプロセッサＰ８−Ｐ１５が存在しない。プロセッサは１つだけが利用可能であることもある。ビット０から３１は、直接割り込みが関与するか否か等の様々な種類のルーティング情報を有することができる。「最低優先度」は図１０に示されているが、上述したように、電力状態等の他の要素も考慮することができるので、厳密に言うと、最低優先度選択法とは考えられないであろう。
【００４０】
プロセッサ電力状態の知識および優先度に基づくクラスタ内の割り込みのルーティングには、幾らかの実装例が存在する。「非コア」の１つの可能性ある実装例は、プロセッサ電力状態の知識および優先度を利用して、割り込みルーティングを行い、電力および性能面両方を考慮に入れた割り込みルーティングを可能とする。非コアは、プロセッサのＣ状態（節電状態）についての知識を有し、これらは、例えばＣ０、Ｃ１、Ｃ２、・・・Ｃ６と称され、Ｃ０はプロセッサ（またはコア）がコードを実行している状態であり、Ｃ１、・・・Ｃ６は、プロセッサが休止しているアイドル状態である（Ｃ１は、最低節電状態であり、Ｃ６がこれより高い節電状態である）。さらに、Ｃ１に入るまでの待ち時間（およびマイクロアーキテクチャ側の効果）が最短となり、Ｃ６に入るまでの待ち時間が最長となる。より深いＣ状態（例えばＣ６）から最高値を提供するには、Ｃ６に入ったプロセッサをその状態に最長時間留まらせると好適であろう。この可能性ある実装例では、非コアは、（１）最低数のＣ状態にあるプロセッサを特定し、（２）これらプロセッサ内で最低優先度を有するプロセッサを見つけて、割り込み対象とすることにより、対象を特定してよい。これら方法の実装には幾らかの方法がある。１つの実装例では、パッケージ内の様々なＣ状態のプロセッサのビットマップを維持し、且つ、これらを受信する対象ビットマップと対照して、このビットマップ内の最高または最低ＡＰＩＣ  ＩＤを対象として選択する。他の実装例も利用可能である。
【００４１】
別の情報および実施形態について  ここで利用する「論理」は、回路、ソフトウェア、マイクロコード、またはこれらの組み合わせに実装されてよい。
【００４２】
一実施形態とは、本発明の実装例または例示のことである。明細書中の「一実施形態」「１つの実施形態」「幾らかの実施形態」「他の実施形態」といった言い回しは、その実施形態との関連で記載された特定の特徴、構造、または特性が、少なくとも幾らかの実施形態に含まれることを示すが、必ずしも全ての実施形態に含まれなくてもよい。「一実施形態」「１つの実施形態」「幾らかの実施形態」といった言い回しは随所に出てくるが、必ずしもこれら全部が同じ実施形態のことを意味しているわけではない。
【００４３】
要素「Ａ」が要素「Ｂ」に連結されているという場合、要素Ａは直接、要素Ｂに連結されている場合もあれば、例えば要素Ｃを介して間接的に連結されている場合もある。
【００４４】
明細書または請求項が、コンポーネント、特徴、構造、プロセス、または特性Ａが、コンポーネント、特徴、構造、プロセス、または特性Ｂを「引き起こす」、というように書かれている場合、これは、「Ａ」が少なくとも部分的に「Ｂ」の原因であるという意味であり、「Ｂ」の誘発にはさらに少なくとも１つの他のコンポーネント、特徴、構造、プロセス、または特性が関与してもよい。同様に、ＡがＢに応答する、といった言い回しは、Ｃに応答しない、という意味ではない。
【００４５】
明細書がコンポーネント、特徴、構造、プロセス、または特性が含まれうる、含まれてよい、含まれる場合がある、含んでもよい、等の言い回しを利用している場合、特定のコンポーネント、特徴、構造、プロセス、または特性を含むことは必須ではない。明細書または請求項が、１つの要素について言及する場合、これはその要素が１つだけしかないという意味ではない。
【００４６】
本発明は、ここに記載する特定の詳細に限定されない。上述の記載および図面には、本発明の範囲内で多くの他の変形例が可能である。故に、添付請求項には、本発明の範囲を定義する補正が含まれうる。
【図１】
2010538373.tif 000003
【図２】
2010538373.tif 000004
【図３】
2010538373.tif 000005
【図４】
2010538373.tif 000006
【図５】
2010538373.tif 000007
【図６】
2010538373.tif 000008
【図７】
2010538373.tif 000009
【図８】
2010538373.tif 000010
【図９】
2010538373.tif 000011
【図１０】
2010538373.tif 000012
【国際調査報告】
2010538373.tif 000013
2010538373.tif 000014