以下において、複数の処理ユニットの中央化されたAPICのための方法、システム及び製造物の選択された各実施例が説明される。ここに記載される各機構は、シングルコア又はマルチコアマルチスレッドシステムにより利用されるかもしれない。以下において、プロセッサタイプ、マルチスレッド環境、システムコンフィギュレーション、並びにマルチシーケンサシステムのシーケンサの個数及びタイプなどの多数の具体的な詳細が、本発明のより完全な理解を提供するため与えられる。しかしながら、本発明がそのような具体的な詳細なく実現可能であるということは当業者に理解されるであろう。さらに、本発明を不要に不明りょうにしないように、周知の構成、回路などは詳細には説明されない。
図1は、中央化されたインタラプトコントローラ110を有するシステム100の少なくとも1つの実施例を示すブロック図である。システム100は、複数のコア104(0)〜104(n)を有する。図1の破線と楕円は、システム100が任意数n(n≧2)のコアを有することが可能であることを示す。当業者は、システムの他の実施例が、以下に説明されるように、単一の同時マルチスレッディング(SMT)コア(n=1となるように)を有することが可能であることを認識しているであろう。
図1は、単一の中央化されたインタラプトコントローラ110が物理的にコア104(0)〜104(n)から分離されていることを示す。図1はまた、システム100の各コア104(0)〜104(n)がローカルインターコネクト102を介し中央化されたインタラプトコントローラ110に接続されていることを示す。中央化されたインタラプトコントローラ110は、ローカルインターコネクト102を介し各処理コアとインタフェースをとる。中央化されたインタラプトコントローラ110のハイレベルな目的は、複数のAPICの動作を、当該APICが従来のコア単位のAPICシステムと同様にパラレルに動作しているようにシステム100に見えるようにシリアルに模倣することである。
システム100の単一のコア104は、同時マルチスレッディング(SMT)、スイッチ・オン・イベントマルチスレッディング(SoeMT)及び/又はタイム多重化マルチスレッディング(TMUX)を含む各種マルチスレッディングスキームの何れかを実現することが可能である。複数のハードウェアスレッドコンテクスト(論理プロセッサ)からの命令が、何れかの時点において同時にプロセッサ304上で実行されると、それはSMTと呼ばれる。あるいは、シングル・コアマルチスレッディングシステムは、プロセッサパイプラインが複数のハードウェアスレッドコンテクスト間で多重化されるが、所与の時点では、1つのハードウェアスレッドコンテクストからの命令のみがパイプラインで実行されるSoeMTを実装するかもしれない。SoeMTについては、スレッドスイッチイベントがタイムベースである場合、それはTMUXとなる。SoeMT及びTMUXをサポートするシングルコアはマルチスレッディングをサポート可能であるが、それらは“シングルスレッド”コアと呼ばれる。なぜなら、1つのハードウェアスレッドコンテクストからの命令しか何れか所与の時点で実行されないためである。
各コア104は、シングルスレッドを実行可能な単一の処理ユニットであるかもしれない。あるいは、1以上のコア104が、当該コアしかある時点で1つのスレッドに対する命令を実行しないように、SoeMT又はTMUXマルチスレッディングを実行するマルチスレッディングコアであるかもしれない。このような実施例では、コア104は“処理ユニット”と呼ばれる。
少なくとも1つの他の実施例では、各コア104は、SMTコアなどのマルチスレッドコアである。SMTコア104については、コア104の各論理プロセッサが“処理ユニット”と呼ばれる。ここで使用される“処理ユニット”とは、スレッドを実行可能な任意の物理的又は論理的ユニットであるかもしれない。各処理ユニットは、所与のスレッドについて実行される次の命令を決定するため、次命令ポインタロジックを有するかもしれない。また、処理ユニットは、“シーケンサ”と同義的に使用されるかもしれない。
何れかの実施例について(シングルスレッドコアとマルチスレッドコア)、各処理ユニットは、自らのインタラプトコントローラの機能のロジックが各処理ユニット内で自己完結せず、中央化されたインタラプトコントローラ110により提供されたとしても、当該機能に関連付けされる。何れかのコア104がSMTコアである場合、各コア104の各論理プロセッサは、ローカルインターコネクト102を介し中央化されたインタラプトコントローラ110に接続されるかもしれない。
図3を参照するに、上述されるように、処理ユニット(又は“シーケンサ”)は、論理プロセッサ又は物理プロセッサであるかもしれない。図3において、論理処理ユニットと物理処理ユニットの間の相違が示されている。図3は、開示される技術を実行可能なマルチシーケンサシステムの実施例310と350の選択されたハードウェア構成を示すブロック図である。
図3は、シングルコアマルチシーケンサマルチスレッディング環境310の選択されたハードウェア構成を示す。図3はまた、各シーケンサが独立した物理プロセッサコアとなっているマルチコアマルチスレッディング環境350の選択されたハードウェア構成を示す。
シングルコアマルチスレッディング環境310では、単一の物理プロセッサ304は、オペレーティングシステム及びユーザプログラムに対してLP1〜LPnにより参照される複数の論理プロセッサ(図示せず)として見えるようにされる。各論理プロセッサLP1〜LPnはそれぞれ、アーキテクチャ状態AS1〜ASnの完全なセットを維持する。このアーキテクチャ状態は、少なくとも1つの実施例については、データレジスタ、セグメントレジスタ、コントロールレジスタ、デバッグレジスタ及びモデルに固有のレジスタの大部分を有する。論理プロセッサLP1〜LPnは、キャッシュ、実行ユニット、ブランチプレディクタ、コントロールロジック、バスなどの物理プロセッサ304の他の大部分のリソースを共有する。しかしながら、各論理プロセッサLP1〜LPnは、自らのAPICに関連付けされるかもしれない。
多数のハードウェア構成が共有されるが、マルチスレッディング環境310における各スレッドコンテクストは、次命令アドレスを独立に生成することが可能である(及び、例えば、命令キャッシュ、実行命令キャッシュ又はトレースキャッシュなどからのフェッチの実行が可能である)。このため、プロセッサ304は、複数の論理シーケンサが単一の物理フェッチ/デコードユニット322において実現可能であっても、各スレッドコンテクストの命令をフェッチする論理的に独立した次命令ポインタフェッチロジック320を有する。シングルコアマルチスレッディングの実施例では、“シーケンサ”という用語は、スレッドコンテクストの少なくとも次命令ポインタフェッチロジックと共に、当該スレッドコンテクストの関連付けされたアーキテクチャ状態312の少なくともいくつかを含む。シングルコアマルチスレッディングシステム310のシーケンサはシンメトリックである必要はないことに留意すべきである。例えば、同じ物理コアの2つのシングルコアマルチスレッディングシーケンサは、それぞれが維持するアーキテクチャ状態情報の情報量について異なるかもしれない。
このため、少なくとも1つの実施例では、マルチシーケンサシステム310は、同時マルチスレッディングをサポートするシングルコアプロセッサ304である。このような実施例について、各シーケンサは、同一の物理プロセッサコア304がすべてのスレッド命令を実行するが、自らの次命令ポインタフェッチロジックと自らのアーキテクチャ状態情報とを有する論理プロセッサである。このような実施例について、論理プロセッサは、シングルプロセッサコアの実行リソースが同時に実行されるスレッド間で共有される可能性があるが、自らのアーキテクチャ状態のバージョンを維持する。
図3はまた、マルチコアマルチスレッディング環境350の少なくとも1つの実施例を示す。このような環境350は、異なるスレッド/シュレッドの少なくとも一部の実行が同時に進行可能となるとなるように、異なるスレッド/シュレッドをそれぞれが実行可能な2以上の独立した物理プロセッサ304a〜304nを有する。各プロセッサ304a〜304nは、各自のスレッド又はシュレッドのための命令情報をフェッチするため、物理的に独立したフェッチユニット322を有する。各プロセッサ304a〜304nが単一のスレッド/シュレッドを実行する実施例では、フェッチ/デコードユニット322は、単一の次命令ポインタフェッチロジック320を実装する。しかしながら、各プロセッサ304a〜304nが複数のスレッドコンテクストをサポートする実施例では、フェッチ/デコードユニット322は、サポートされる各スレッドコンテクストについて異なる次命令ポインタフェッチロジック320を実装する。マルチプロセッサ環境350における追加的な次命令ポインタフェッチロジック320の任意的な性質が、図3において破線により示される。
図3に示されるマルチコアシステム350の少なくとも1つの実施例について、各シーケンサは、単一のチップパッケージ360にある複数のコア304a〜304nを有するプロセッサコア304であるかもしれない。各コア304a〜304nは、シングルスレッド又はマルチスレッドプロセッサコアであるかもしれない。チップパッケージ360は、マルチコアシステム350の図示されたシングルチップの実施例が単なる一例であることを示すため、図3において破線により示されている。他の実施例では、マルチコアシステムのプロセッサコアは別々のチップに常駐するかもしれない。すなわち、マルチコアシステムは、マルチソケットシンメトリックマルチプロセッシングシステムであるかもしれない。
説明の簡単化のため、以下の説明ではマルチコアシステム350の実施例に着目する。しかしながら、この着目は、後述される機構がマルチコア又はシングルコアの何れのマルチシーケンサ環境においても実行可能であるという点で限定的なものと解されるべきでない。
図1を参照するに、システム100のコア104(0)〜104(n)は、ローカルインターコネクト102を介し互いに接続可能であることは理解できる。ローカルインターコネクト102は、コア間で要求されるすべての通信機能(キャッシュスヌープなど)を提供するかもしれない。各コア104(0)〜104(n)は、ローカルインターコネクト102を介しインタラプト関連メッセージを送受信するための比較的小さなインタフェースブロックを有するかもしれない。一般に、コアのこのようなインタフェースは、それがインタラプト関連メッセージに関するアーキテクチャ状態を保持せず、またそれがここに記載される中央化されたインタラプトコントローラ110により実行される他の関連する機能を実行せず、又はインタラプトを優先させないため、比較的にシンプルなものである。
コア104(0)〜104(n)は、シングルダイ150(0)上にあるかもしれない。少なくとも1つの実施例について、図1に示されるシステム100はさらに、任意的な追加的ダイを有するかもしれない。1以上の追加的なダイ(〜150(n))の任意的な性質は、図1において破線及び楕円により示される。図1は、他のダイ(150(n))上の処理ユニットからのインタラプトメッセージが、システムインターコネクト106を介し第1ダイ(150(0))に通信されることを示す。中央化されたインタラプトコントローラ110は、システムインターコネクト106を介し他の何れかのダイ(〜150(n))及び周辺のI/O装置114に接続される。
当業者は、図1に示されるダイ150の構成が、単なる一例に過ぎず、限定的なものと解されるべきでないことを認識するであろう。他の実施例では、例えば、150(0)と150(n)の両方の要素が、同一のシリコン部分に常駐し、同一のローカルインターコネクト102に接続されるかもしれない。他方、各コア104は、必ずしも同一のチップ上に常駐する必要はない。各コア104(0)〜104(n)及び/又はローカルインターコネクト102は、同一のダイ150上に常駐しないかもしれない。
システム100の各コア104(0)〜104(n)はさらに、ローカルインターコネクト102を介し他のシステムインタフェースロジック112に接続されるかもしれない。このようなロジック112は、例えば、シーケンサがシステムインターコネクトを介し他のシステム要素とインタフェースをとることを可能にするキャッシュコヒーレンスロジック又は他のインタフェースロジックなどを有するかもしれない。他のシステムインタフェースロジック112はさらに、システムインターコネクト106を介し他のシステム要素116(メモリなど)に接続されるかもしれない。
図2は、中央化されたインタラプトコントローラ110の少なくとも1つの実施例のさらなる詳細を示すブロック図である。一般に、図2は、中央化されたインタラプトコントローラ110がシステムのコア(図1のコア104(0)〜104(n)など)とは物理的に分離されているが、中央化されたインタラプトコントローラ110は各シーケンサに関連付けされる各APICインスタンスの完全なアーキテクチャ状態を維持することを示す。中央化されたインタラプトコントローラ110は、従来システムのコア単位の専用のAPICにより通常は処理されるインタラプトキューイング及び優先付け機能のすべてを管理する。以下に詳細に説明されるように、中央化されたインタラプトコントローラ110はまた、システムインターコネクト106に接続されるシステムの残りとシーケンサとの間のファイアウォールとして機能するかもしれない。
図2は、中央化されたインタラプトコントローラ110が中央化されたAPIC状態202を有することを示す。APIC状態202は、典型的なAPIC処理に通常関連付けされるアーキテクチャ状態を含む。すなわち、APIC処理は、アプリケーションプログラマにはアーキテクチャ的に可視的な構成であり、このようなインタフェースは本開示により変更されることを意図したものでない。システムが従来のAPICハードウェア(すなわち、各処理ユニットについて1つの自己完結したAPIC)又はここに記載される中央化されたインタラプトコントローラを有するか否かに関係なく、少なくとも1つの実施例について、このようなハードウェア設計の選択はアプリケーションプログラマに透過であるべきことが予期される。このように、同時にオペレーティングシステムベンダ及びアプリケーションプログラマが期待する同一のアーキテクチャインタフェースを維持しながら、面積、ダイナミックパワー及びパワーリークの各コストを、システムの単一の中央化されたインタラプトコントローラ110を利用することにより低減することができる。
このため、ブロック202におけるAPIC状態情報の中央レポジトリとして維持されるアーキテクチャ状態は、一般には従来システムのおける各APICについて維持される状態となる。例えば、システムに8つのシーケンサがある場合、中央化されたAPIC状態202は、各エントリが従来システムのシーケンサについて維持されるアーキテクチャAPIC状態を反映した8つのエントリのアレイを含むかもしれない。(以下の図4の説明は、各エントリがまた特定のマイクロアーキテクチャ状態を含むことを示す。)
少なくとも1つの実施例について、中央化されたAPIC状態202は、レジスタファイル又はアレイなどの単一のメモリ記憶領域として実現される。レジスタファイル構成は、ランダムロジックとしてコア単位APIC状態を実現した従来アプローチより良好なエリア効率を可能にするかもしれない。
一般に、中央化されたインタラプトコントローラ110は、ローカルインターコネクト102及び/又はシステムインターコネクト106を介し受信されるインタラプトメッセージの受信を監視し、レジスタファイル202の適切なエントリに関連するメッセージを格納する。少なくとも1つの実施例では、これは、入力メッセージのデスティネーションアドレスを監視し、当該デスティネーションアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、入力メッセージキュー204、206により実行されるかもしれない。
同様に、中央化されたインタラプトコントローラ110は、出力インタラプトメッセージの生成を監視し、このようなメッセージがサービス及び送信されるまで、レジスタファイル202の適切なエントリにメッセージを格納するかもしれない。少なくとも1つの実施例では、これは、出力メッセージのソースアドレスを監視し、ソースアドレスに係るAPICインスタンスエントリにメッセージを格納することにより実現される。このような機能は、以下で詳細に説明されるように、出力メッセージシーケンス208、210により実行されるかもしれない。
一般に、中央化されたインタラプトコントローラ110のインタラプトシーケンサブロック214は、その後、サービスのため中央化されたAPIC状態202に反映されるように、保留中のインタラプトメッセージをスケジューリングするかもしれない。以下で詳細に説明されるように、これは、シーケンサの何れの保留中のインタラプト動作も繰り返し無視されないように、公平性スキームに従って実現されるかもしれない。インタラプトシーケンサブロック214は、サービスを実行するため、APICインタラプト提供ロジック212を呼び出すかもしれない。
図2は、中央化されたインタラプトコントローラ110がAPICインタラプト提供ロジック212を有することを示す。システムの各シーケンサのAPICロジックを複製するのでなく(SMTコアの各論理プロセッサ又は各シングルスレッドコアなど)、中央化されたインタラプトコントローラ110は、システムのすべてのシーケンサについてインタラプトをサービスするため、APICロジック212の単一の冗長でないコピーを提供する。
例えば、システム(図1のシステム100など)が、それぞれが8つの同時的なSMTスレッドをサポートする4つのコアを有する場合、システムは従来はAPICロジック212の32このコピーを必要とする。他方、図2に示される中央化されたインタラプトコントローラ110は、APICロジック212の単一のコピーを利用して、所与の時点でアクティブな32個のスレッドのすべてにインタラプトコントローラのサービスを提供する。
システムの複数のシーケンサが同時に保留中のインタラプト動作を有する可能性があるため、APICロジック212は、複数のシーケンサから競合を受けるかもしれない。このため、中央化されたインタラプトコントローラ110は、インタラプトシーケンサブロック214を有する。インタラプトシーケンサブロック214は、APICロジック212の各シーケンサに公平なアクセスを提供するように、システムのすべてのインタラプトのサービスをシーケンス処理する。中央化されたインタラプトコントローラ110のインタラプトシーケンサブロック214は、単一のAPICロジックブロック212へのアクセスを制御する。
このため、インタラプトシーケンサブロック214は、共有されるAPICロジック212へのシーケンサのアクセスを制御する。この機能は、各シーケンサがAPICロジックへの直接的なアドホックアクセスを有するように、各シーケンサの専用のAPICロジックブロックを提供する従来のAPICシステムと対照的なものである。シングルAPICロジックブロック212は、システムの各処理ユニットなどのインタラプト優先化に関するAPICの完全なアーキテクチャ要求を提供するかもしれない。
システムの何れかの処理ユニットについて、APICを通過するインタラプトのソース/デスティネーションは、他の処理ユニット又は周辺装置とすることが可能である。イントラダイ処理ユニットのインタラプトは、ローカルインターコネクト102を介し中央化されたインタラプトコントローラ110により提供される。他のダイ上の周辺装置又は処理ユニットに対するインタラプトは、システムインターコネクト106を介し提供される。
図2は、ローカルインターコネクト102及びシステムインターコネクト106を介し入出力インタラプトメッセージを処理するため、入力システムメッセージキュー204、入力ローカルメッセージキュー206、出力ローカルメッセージキュー208及び出力システムメッセージキュー210の4つのメッセージキューを有することを示す。入力ローカルメッセージキュー206と出力ローカルメッセージキュー208は、ローカルインターコネクト102に接続され、入力システムメッセージキュー204と出力システムメッセージキュー210は、システムインターコネクト106に接続される。各キュー204、206、208、210は、制御ロジックと共にデータストレージを有するミニコントローラキューである。
キュー204、206、208、210の動作のさらなる説明が、図1、2及び4を参照してなされる。図4は、中央化されたAPIC状態202の少なくとも1つの実施例の詳細な図を提供する。図4は、中央化されたAPIC状態202が、アーキテクチャ状態302と共にマイクロアーキテクチャ状態301、303の両方を有することを示す。上述されるように、各シーケンサ104(0)〜104(n)について維持されるアーキテクチャ状態302は、シーケンサに従来関連付けされるAPIC状態を反映する。アーキテクチャAPIC状態302の各エントリ410は、ここでは“APICインスタンス”と呼ばれる。例えば、APICンスタンスの入力インタラプトメッセージは、当該インスタンスに係るアーキテクチャAPIC状態302のエントリ410に格納されるかもしれない。少なくとも1つの実施例について、240までの入力インタラプトメッセージが、APICインスタンスのエントリ410に維持されるかもしれない。
アーキテクチャ状態302に加えて、中央化されたAPIC状態202は、一般的なマイクロアーキテクチャ状態303と共に各APICインスタンス410に係るマイクロアーキテクチャ状態301を有するかもしれない。一般的なマイクロアーキテクチャ状態303は、インタラプトシーケンサブロック214(図2を参照されたい)がAPICロジック212(図2を参照されたい)にアクセスする必要があるのは何れのシーケンサであるか決定するのに役立つためのスコアボード304を有するかもしれない。少なくとも1つの実施例では、スコアボード304は、システムの各シーケンサのためのビットを維持するかもしれない。シーケンサのビットの値は、APICロジック212が要求される何れかの保留中の動作をシーケンサが有しているか示すかもしれない。少なくとも1つの実施例では、インタラプトシーケンサブロック214(図2)がAPICロジック212の注意を何れのシーケンサが必要とするか容易かつ迅速に確認することが可能となるように、スコアボード304がアトミックに読み込まれるかもしれない。
インタラプトシーケンサブロック214の1つの特徴は、APICロジック212へのアクセスを公平に可能にすることであるが、スコアボード304は、インタラプトシーケンサブロック214がAPICロジック212の処理を同時には必要としないシーケンサの処理リソースを浪費することを要求することなく、公平性スキームが利用されることを可能にする。このため、スコアボードは、入力メッセージと上記発行されたリクエストの処理の現在の状態とに基づき、何れのAPICインスタンスが実行するべき作業を有しているか追跡する。インタラプトシーケンサブロック214は、アクティブなAPICインスタンスについて中央化されたAPIC状態202から現在の状態を読み込み、(当該APICインスタンス410のアーキテクチャ状態302とマイクロアーキテクチャ状態301の両方に記録されるような)現在状態に適したアクションをとり、その後に(スコアボード304のビットにより示されるような)保留中の作業による次のAPICインスタンスについて当該処理を繰り返す。
入力インタラプトメッセージがローカルインターコネクト102を介し同一ダイ上の他のシーケンサに向けて投入されると、入力ローカルメッセージキュー206がこのメッセージを受信し、それの送信先を決定する。インタラプトメッセージは、シーケンサの1つ、多数又はすべてを対象とすることが可能であり、又はその何れも対象としないこともある。キュー206は、インタラプトをキューアップするため、対象とされる各シーケンサのアーキテクチャ状態エントリ(図4の410など)に書き込むかもしれない。このようなケースでは、インタラプト動作が保留され、シングルAPICロジックブロック212のサービスが対象となるシーケンサに必要とされていることを示すため、スコアボードエントリがすでに設定されていない場合、キュー206はまた対象とされるシーケンサのスコアボードエントリを設定する。
しかしながら、図4は、いくつかのインタラプトが中央化されたAPIC状態202においてキューアップされることなく、入力ローカルメッセージキュー206から出力キュー208、210に直接的にバイパスされるかもしれないことを示す。これは、例えば、特定のプロセッサに具体的にはアドレス指定されていないブロードキャストメッセージについて起こるかもしれない。図4は、同様のバイパス処理が入力システムメッセージキュー204(後述される)からもまた行われることを示す。
キュー206について上述されたものと同様の処理がまた、入力インタラプトメッセージがシステムインターコネクト106を介し(他のダイ上のI/O装置又はシーケンサから)シーケンサ104(0)〜104(n)の1つを対象として投入されるときに行われるかもしれない。入力システムメッセージキュー204は、メッセージを受信し、それの送信先を決定する。キュー206は、インタラプトをキューアップし、何れか対象とされたシーケンサのスコアボードエントリ412を更新するため、対象とされる各シーケンサのアーキテクチャ状態エントリ410に書き込む。もちろん、入力メッセージは上述されるようにバイパスされてもよい。
メッセージキュー204、206、208、210の1以上が、入出力メッセージのファイアウォール機能を実装してもよい。このファイアウォール機能に関して、図2が図1と共に説明される。
入力メッセージに関して、入力システムメッセージキュー204は、中央化されたインタラプトコントローラ110に係るダイ150上のシーケンサを対象としないメッセージの不要な処理を回避するため、インタラプトファイアウォールとして機能するかもしれない。図1に示されるように、システム100は複数のマルチシーケンサダイ150(0)〜150(n)を有するかもしれない。特定のダイのシーケンサにより生成されるインタラプトは、システムインターコネクト106を介し他のダイに送信されるかもしれない。同様に、周辺装置114により生成されるインタラプトは、システムインターコネクト106を介しダイに送信されるかもしれない。
ダイ150の中央化されたインタラプトコントローラ110(及び入力システムメッセージキュー204)は、このようなメッセージの送信先アドレスがダイ150上の何れかのシーケンサ(コア又は論理プロセッサなど)を有しているか判断するかもしれない。メッセージが当該ダイに係るローカルインターコネクト102上の何れかのコア又は論理プロセッサを対象としていない場合、入力システムメッセージキュー204は、ローカルインターコネクト102上のシーケンサの何れかにメッセージを転送することを拒否する。このように、入力システムメッセージキューは、単に何れのアクションも不要であると決定するため、上記コア/スレッドの“ウェイキング(waking)”を回避する。これは、電力を節約し、ローカルインターコネクト102の帯域幅を節約する。なぜなら、それは複数の各シーケンサがメッセージがそれらを対象としたものでないことを決定するためだけに、パワーセービング状態からウェイクアップすることを不要にするためである。
1以上の論理プロセッサがパワーセービング状態にない場合でさえ、入力システムメッセージキュー204は、入力インタラプトメッセージがそれらの側でアクションを必要としないことを単に決定するため、論理プロセッサが現在実行している作業から論理プロセッサをインタラプトしないように、依然としてファイアウォール機能を実行するかもしれない。
少なくとも1つの実施例について、ファイアウォールはまた出力メッセージに対して実装されるかもしれない。これは、出力システムメッセージと共に、少なくとも1つの実施例については、出力ローカルメッセージについても成り立つかもしれない。少なくとも1つの実施例について、ローカルメッセージのファイアウォール構成は、ローカルインターコネクト102上の各メッセージがすべてのシーケンサに配信されることを要求するのでなく、対象とされるインタラプトメッセージが特定のシーケンサに提供されることを可能にする構成をサポートするローカルインターコネクト102を有するシステムについてのみ実現される。このようなケースでは、出力ローカルメッセージキュー208は、ローカルインターコネクト102を介し各インタラプトメッセージをユニキャスト又はマルチキャストメッセージとして、当該メッセージにより対象とされるシーケンサのみに送信するかもしれない。このように、対象とされていないシーケンサは、それらのアクションが当該インタラプトメッセージに必要とされていないことを決定するため、それらの処理をインタラプトする必要はない。出力システムメッセージは、それらが対象とされていないエンティティに不必要に送信されないように、同様に対象とされるかもしれない。
図2は、入力インタラプトメッセージが入力メッセージキュー204、206により中央化されたAPIC状態202に配置された後、インタラプトシーケンサブロック214が、システムのAPIC処理を実行するため、APICロジック212(図2を参照されたい)の1つのコピーへのシステムの各シーケンサ間への公平なアクセスを提供するかもしれないことを示す。インタラプトシーケンサブロック214は、実際には、APIC状態202をシーケンシャルにトラバースし、それをひつようとする次のシーケンスのAPICロジック212へのアクセスを提供することによって、この公平性スキームを実現するかもしれない。インタラプトシーケンサブロック214により実現される公平性スキームは、各シーケンサがインタラプト提供ブロックへの等しいアクセスを有することを許可するかもしれない。
少なくとも1つの実施例について、APIC状態202のエントリを介した上記概念的なシーケンシャルなステッピングは、スコアボード(図4の304を参照されたい)を利用することによってより効率的なものとなり、スコアボードは、何れのアクティブなシーケンサが次にAPICサービスを必要とするか決定するため、アトミックにクエリされるかもしれない。少なくとも1つの実施例について、図5に関連してより詳細に以下で説明される方法に従って、シーケンシャルなアクセスが制御可能である。
図5は、システムのAPIC処理を実行するために、APICロジック212(図2を参照されたい)の1つのコピーへのシステムの各シーケンサへの公平なアクセスを提供するため、インタラプトシーケンサブロック214(図2を参照されたい)の少なくとも1つの実施例により利用される方法500を示す状態図である。図5の以下の説明は、図2及び4を参照してなされる。
全体として、図5は、インタラプトシーケンサブロック214がアクティブなAPICインスタンスの中央化されたAPIC状態2020から現在状態を読み取り、現在状態に適したアクションをとり、保留中の作業を有する次のAPICインスタンスについて当該処理を繰り返すことを示す。
図5は、方法500が状態502でスタートすることを示す。状態502において、インタラプトシーケンサブロック214は、何れのAPICインスタンスが実行すべき作業を有しているか決定するため、スコアボード304を照会する。上述されるように、各APICインスタンスについてスコアボード304に1つのエントリ412が存在するかもしれない。エントリ412は、少なくとも1つの実施例では、1ビットエントリであるかもしれない。ビット412は、入力メッセージが当該APICインスタンスの中央化されたAPIC状態202に書き込まれるときに設定されるかもしれない。
もちろん、当業者は、スコアボード304がすべての実施例に必ずしも存在する必要がないパフォーマンスエンハンスメントであることを認識するであろう。少なくとも他の1つの実施例について、例えば、インタラプトシーケンサブロック214は、何れのアクティブなAPICインスタンスがサービスを必要としているか決定するため、順番に(シーケンシャルなど)中央化されたAPIC状態202の各エントリをトラバースするかもしれない。
スコアボード304の何れのビットも設定されていない場合、何れのシーケンサも保留中のAPICイベントを有していない。このようなケースでは、方法500は状態502から508に移行する。状態508において、方法500は、ロジック212が必要としない間、APICロジックブロック212の少なくとも一部を省電力にパワーダウンするかもしれない。パワーダウンが完了すると、方法500は、新たなAPIC動作が検出されるか判断するため、状態502に移行する。
状態502において、新たな動作が検出されず(すなわち、スコアボード304の何れのエントリも設定されていない)、APICロジック212がすでにパワーダウンされていた場合、方法500は、新たなAPIC動作を待機するため、状態502から506に移行するかもしれない。
待機状態506の期間中、方法500は、何れかのAPICインスタンスが保留中有のAPIC作業を取得したか決定するため、スコアボード304のコンテンツを定期的に評価するかもしれない。スコアボード304のコンテンツに反映されるような入力APICメッセージは、状態506から502への移行を引き起こす。入力ローカルメッセージキュー204及び入力システムメッセージキュー206の上記説明は、アーキテクチャAPIC状態302と、少なくとも一部の実施例では、スコアボード304のエントリが、保留中のAPIC作業をAPICインスタンスが取得したことを反映するようどのように更新されるか説明する。
方法500は、状態502において、スコアボード304の何れかのエントリ412が設定されている場合、少なくとも1つのAPICインスタンスが実行すべき保留中のAPIC作業を有していると判断するかもしれない。このようなエントリが複数設定されている場合、インタラプトシーケンサブロック214は、何れのAPICインスタンスがAPICロジック212によりサービスを次に受け付けるか決定する。少なくとも1つの実施例では、インタラプトシーケンサブロック214は、設定されている次のスコアボードエントリを選択することによって、上記決定を実行する。このように、インタラプトシーケンサブロック214は、APICロジック212へのアクセスのため、次にアクティブなAPICインスタンスをシーケンシャルに選択することによって、公平性スキームを課す。
状態502においてAPICインスタンスを選択すると、方法500はブロック502から504に移行する。ブロック504において、インタラプトシーケンサブロック214は、中央化されたAPIC状態302から選択されたバーチャルAPICのエントリ410を読み込む。このように、インタラプトシーケンサブロック214は、選択されたAPICインスタンスについて何れのAPICイベントが保留中であるか決定する。複数のAPICイベントが保留中であるかもしれず、APICエントリ410に反映されているかもしれない。状態504の各繰り返し中、APICインスタンスに1つの保留中のイベントしか処理されない。このため、ラウンドロビンタイプのシーケンシャルな公平性スキームが維持されるかもしれない。
同一のアクティブなAPICインスタンスについて複数の保留中のインタラプトイベントから選択するため、インタラプトシーケンサブロック214は、状態504において優先化処理を実行する。このような優先化処理は、従来システムの専用APICにより実行される優先化スキームをエミュレートするかもしれない。例えば、APICインタラプトは、重要性の各クラスに入るよう規定される。各APICインスタンスのアーキテクチャ状態エントリ410(図4)は、少なくとも1つの実施例では、論理プロセッサ毎に240までの保留中のインタラプトを保持するかもしれない。これらは、16の重要性のクラスに属することが可能であり、16の優先化されたグループに分類される。クラス16〜31のインタラプトは、クラス32〜47のものより高い優先度を有する。インタラプトクラス番号が低いほど、インタラプト優先度は高くなる。このため、インタラプトシーケンサブロック214は、APICインスタンスの240ビットを観察し、複数設定されている場合、状態504において1つのイベントのみを抽出する(APICの既存のアーキテクチャ優先化ルールに基づき)。少なくとも1つの実施例では、インタラプトシーケンサブロック214は、この優先化を実行するためAPICロジック212を呼び出す。
その後、方法500は、状態504において、選択されたイベントに適したアクションをスケジューリング又は実行する。例えば、このイベントは、出力メッセージキューの1つから以前に送信されたインタラプトメッセージに対するアクノリッジメントを待機していることであるかもしれない。あるいは、イベントは、出力インタラプトメッセージが送信される必要があることであるかもしれない。または、シーケンサの1つについて、入力インタラプトメッセージ又はアクノリッジメントがサービスされる必要があるかもしれない。インタラプトシーケンサブロック214は、状態504において、イベントのサービスルためAPICロジック212を起動するかもしれない。
アクノリッジメントが待機されている場合、インタラプトシーケンサブロック214は、このようなアクノリッジメントが待機されていることを判断するため、マイクロアーキテクチャ状態303に照会する。そうである場合、インタラプトシーケンサブロック214は、状態504においてアクノリッジメントが受信されたか判断するため、APIC状態202の適切なエントリを照会する。そうでない場合、次のシーケンサのイベントを処理するように、状態504から抜け出す。
アクノリッジメントが受信された場合、アクノリッジメントがもはや待機されていないことを反映するため、マイクロアーキテクチャ状態303が更新される。インタラプトシーケンサブロック214はまた、状態502に戻る前にAPICインスタンスのスコアボード304のエントリをクリアするかもしれない。少なくとも1つの実施例では、スコアボードのエントリ304は、現在サービスされているイベントがAPICインスタンスの保留中のイベントのみである場合に限ってクリアされる。
他の例では、状態504においてサービスされるイベントがインタラプトメッセージの送信である場合(ローカルインターコネクト102又はシステムインターコネクト106を介した)、そのようなイベントは状態504において以下のようにサービスされる。インタラプトシーケンサブロック214は、現在サービスされている論理プロセッサのAPICインスタンスから、上述した優先化処理が与えられた場合に何れの出力メッセージが提供される必要があるか判断する。その後、出力メッセージは、所望される送信先アドレスと共に、適切な出力メッセージキュー(出力ローカルメッセージキュー208又は出力システムメッセージキュー210)への送信のためスケジューリングされる。
出力メッセージが、アクノリッジメントの受信などの追加的なサービスをイベントが完全にサービスされる前に必要とする場合、中央化されたコントローラ110は、さらなるサービスが当該イベントに必要とされることを示すため、マイクロアーキテクチャ状態303を更新するかもしれない。(ローカルインターコネクト102又はシステムインターコネクト106を介した入力アクノリッジメントは、入力メッセージキュー204、206においてキューアップされ、最終的には、関連するAPICインスタンスの状態504の次の繰り返しで処理可能となるように、中央化されたAPIC状態202に更新されるかもしれない。その後、本方法は状態504から502に移行する。
図6は、開示された技術を実行可能なマルチスレッド計算システム900の少なくとも1つの実施例を示す。計算システム900は、少なくとも1つのプロセッサコア904(0)とメモリシステム940とを有する。システム900は、破線及び楕円により示されるような追加的なコア(〜904(n))を有するかもしれない。
メモリシステム940は、命令キャッシュ944及び/又はデータキャッシュ942などの1以上の小型で相対的に高速なキャッシュと共に、大型で相対的に低速なメモリストレージ902を有するかもしれない。メモリストレージ902は、プロセッサ904の動作を制御するための命令910とデータ912とを格納するかもしれない。
メモリシステム940は、メモリの一般化された表現として意図され、ハードドライブ、CD−ROM、RAM(Random Access Memory)、DRAM(Dynamic RAM)、SRAM(Static RAM)、フラッシュメモリ及び関連する回路などの各種形態のメモリを有するかもしれない。メモリシステム940は、プロセッサ904により実行可能なデータ信号により表される命令910及び/又はデータ912を格納するかもしれない。命令910及び/又はデータ912は、ここに記載された技術の何れか又はすべてを実行するためのコード及び/又はデータを有するかもしれない。
図6は、各プロセッサ904が中央化されたインタラプトコントローラ110に接続されていることを示す。各プロセッサ904は、命令情報を実行コア930に供給するフロントエンド920を有するかもしれない。フェッチされた命令情報は、実行コア930による実行を待機するため、キャッシュ225にバッファされるかもしれない。フロントエンド920は、命令情報を実行コア930にプログラム順に供給するかもしれない。少なくとも1つの実施例では、フロントエンド920は、実行される次の命令を決定するフェッチ/デコードユニット322を有する。システム900の少なくとも1つの実施例では、フェッチ/デコードユニット322は、単一の次命令ポインタフェッチロジック320を有するかもしれない。しかしながら、各プロセッサ904が複数のスレッドコンテクストをサポートする実施例では、フェッチ/デコードユニット322は、サポートされる各スレッドコンテクストについて異なる次命令ポインタフェッチロジック320を実装する。マルチプロセッサ環境において追加的な次命令ポインタフェッチロジック320の任意的な性質は、図6の破線により示される。
ここに記載された方法の各実施例は、ハードウェア、ハードウェアエミュレーションソフトウェア若しくは他のソフトウェア、ファームウェア又はこのような実現アプローチの組み合わせにより実現可能である。本発明の各実施例は、少なくとも1つのプロセッサ、データストレージシステム(揮発性及び不揮発性メモリ及び/又はストレージ要素を含む)、少なくとも1つの入力装置及び少なくとも1つの出力装置を有するプログラマブルシステムについて実現可能である。このアプリケーションのため、処理システムは、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、マイクロプロセッサなどのプロセッサを有する任意のシステムを含む。
プログラムは、汎用又は特定用途のプログラム可能な処理システムにより可読なストレージメディア又は装置(ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、ROM(Read Only Memory)、CD−ROM装置、フラッシュメモリ装置、DVD(Digital Versatile Disk)、又は他のストレージ装置など)に格納されてもよい。処理システムのプロセッサにアクセス可能な命令は、ストレージメディア又は装置がここに記載された手順を実行するため処理システムにより読み込まれると、処理システムを設定及び実行する。本発明の各実施例はまた、処理システムにより使用するため構成されたマシーン可読ストレージ媒体として実現されると考えられ、そのように構成されたストレージメディアは、処理システムにここに記載された機能を実行するため特定かつ所定の方法により実行させる。
一例となるシステム900は、他のシステム(他のマイクロプロセッサ、エンジニアリングワークステーション、携帯情報端末、他の携帯装置、セットトップボックスなどを含む)がまた利用可能であるが、インテルコーポレイションから利用可能なPentium(登録商標)、Pentium(登録商標)Pro、Pentium(登録商標)II、Pentium(登録商標)III、Pentium(登録商標)4、Itanium(登録商標)、Itanium(登録商標)2マイクロプロセッサ、Mobile Intel(登録商標)Pentium(登録商標)III Processor−M、Mobile Intel(登録商標)Pentium(登録商標)4 Processor−Mに基づく処理システムを表す。一実施例では、一例となるシステムは、他のオペレーティングシステム及びグラフィカルユーザインタフェースなどがまた利用可能であるが、マイクロソフトコーポレイションから利用可能なWindows(登録商標)オペレーティングシステムのバージョンを実行するかもしれない。
本発明の特定の実施例が図示及び説明されたが、添付した請求項の範囲から逸脱することなく各種変更及び改良が可能であることは当業者に明らかであろう。例えば、中央化されたAPIC状態202の少なくとも1つの実施例は、シングルリードポートとシングルライトポートのみを含むかもしれない。このような実施例では、入力システムメッセージキュー204、入力ローカルメッセージキュー206及びインタラプトシーケンサブロック214は、中央化されたAPIC状態202へのアクセスを取得するため、アービトレーションロジック(図示せず)を利用するかもしれない。
また、例えば、図5に示された方法500の少なくとも1つの実施例は状態508を排除するかもしれない。当業者は、状態508がパフォーマンスエンハンスメント(パワーセービング)を提供するだけであり、添付した請求項の発明の実施例には必要でないことを認識するであろう。
また、例えば、上述した中央化されたインタラプトコントローラ110の少なくとも1つの実施例は、スコアボード304を排除してもよいということが上述された。このような実施例では、インタラプトシーケンサ214は、APICロジック212からのサービスを受け取るための次のAPICインスタンスを決定するため、アーキテクチャAPIC状態302のエントリ410をシーケンシャルにトラバースするかもしれない。
このため、当業者は、本発明から逸脱することなくそれの最も広範な側面において各種変更及び改良が可能であることを認識するであろう。添付した請求項は、本発明の真の範囲内に属するそのようなすべての変更及び改良をその範囲内に含むものである。