(57)【特許請求の範囲】
【請求項１】
複数のプロセッサコアを有するマルチコアプロセッサ内で割込みを処理するための方法であって、
割込みサービスルーチンと関連付けられた割込みを受け取るステップと、
前記複数のプロセッサコアのそれぞれを、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかとして指定するコア割込みマスクを評価して、前記複数のプロセッサコアの中から１つまたは複数の利用可能なプロセッサコアを識別するステップと、
前記受け取った割込みと関連付けられた前記割込みサービスルーチンを、前記１つまたは複数の利用可能なプロセッサコアのうちの少なくとも１つに割り当てるステップと、
前記複数のプロセッサコアを利用可能なプロセッサコアとして指定するように前記コア割込みマスクを初期設定するステップと、
１つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップであって、前記複数のプロセッサコアのうちの１つまたは複数と関連付けられた１つまたは複数の個々のキャッシュが相当量のデータを含むときに、前記プロセッサコアのうちの前記１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップ
を含む、方法。
【請求項２】
前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の１つに対応し、前記複数のビットのそれぞれが第１の値と第２の値のどちらかを記憶し、前記第１の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用可能なプロセッサコアのうちの１つであることを指定し、前記第２の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用不可能なプロセッサコアのうちの１つであることを指定する、請求項１に記載の方法。
【請求項３】
１つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの１つまたは複数が１つまたは複数の個々のバスに物理的に近接して位置決めされているときに、前記プロセッサコアのうちの前記１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項１に記載の方法。
【請求項４】
１つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの複数が相互に協働し合うときに、前記複数のプロセッサコアのうちの前記複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項１に記載の方法。
【請求項５】
１つまたは複数の設定基準に基づいて、前記複数のプロセッサコアのうちの１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップが、前記複数のプロセッサコアのうちの１つまたは複数がタスクを実行し始めているときに、前記複数のプロセッサコアのうちの前記１つまたは複数を利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定するステップを含む、請求項１に記載の方法。
【請求項６】
前記コア割込みマスクによって指定される利用不可能なプロセッサコアの数を監視するステップと、
利用不可能なプロセッサコアの数が閾値を超えるかどうか判定するステップと、
利用不可能なプロセッサコアの前記数が前記閾値を超えると判定されるときに、前記コア割込みマスクによって指定される前記利用不可能なプロセッサコアの前記数を低減するステップと
をさらに含む、請求項１に記載の方法。
【請求項７】
複数のプロセッサコアを含むマルチコアプロセッサ内で割込みを処理するためのシステムであって、
前記マルチコアプロセッサに割込み要求を伝えるように適合された割込み線と、
前記複数のプロセッサコアのそれぞれと関連付けられた、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応する状況を指定するように適合されたコア割込みマスクであって、
‐前記複数のプロセッサコアのうちの１つまたは複数と関連付けられたキャッシュが相当量のデータを含む場合、
‐前記複数のプロセッサコアのうちの１つまたは複数が特定のバスに物理的に近接して位置決めされている場合、
‐前記複数のプロセッサコアのうちの複数が互いに協働している場合、若しくは
‐前記複数のプロセッサコアのうちの１つまたは複数がタスクを実行し始める場合
のいずれかの場合に、それぞれの場合における、前記複数のプロセッサコアのうちの前記１つ又は複数、または、前記複数のプロセッサコアのうちの前記複数を、利用不可能と設定するように構成された、コア割込みマスクと、
前記割込み線を介して割込み要求を受け取り、
前記コア割込みマスクを評価して１つまたは複数の利用可能なプロセッサコアを識別し、
前記割込み要求の処理を前記利用可能なプロセッサコアのうちの１つに割り当てるように構成された割込み制御器と
を備える、システム。
【請求項８】
前記割込み線から受け取られる割込み要求が前記割込み制御器によって無視されるかどうか指定するように適合されている割込みマスクレジスタをさらに備える、請求項７に記載のシステム。
【請求項９】
前記割込み要求がマスク可能な割込みとマスク不可能な割込みとを含む、請求項７に記載のシステム。
【請求項１０】
前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の１つに対応し、前記複数のビットのそれぞれが第１の値と第２の値のどちらかを記憶するように構成され、前記第１の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用可能なプロセッサコアのうちの１つであることを指定するように構成され、前記第２の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用不可能なプロセッサコアのうちの１つであることを指定するように構成された、請求項７に記載のシステム。
【請求項１１】
前記コア割込みマスク内の前記複数のビットを前記第１の値に初期設定し、
１つまたは複数の設定基準に基づいて、前記複数のビットのうちの１つまたは複数を前記第１の値から前記第２の値に設定する
ように構成された制御モジュールをさらに備える、請求項１０に記載のシステム。
【請求項１２】
前記複数のプロセッサコアが、
前記コア割込みマスク内の前記複数のビットを前記第１の値に初期設定し、
１つまたは複数の設定基準に基づいて、前記複数のビットのうちの１つまたは複数を前記第１の値から前記第２の値に設定する
ように構成されている、請求項１０に記載のシステム。
【請求項１３】
前記複数のプロセッサコアが、
前記コア割込みマスク内の前記複数のビットを前記第２の値に初期設定し、
前記複数のビットのうちの１つまたは複数に対応する前記個々のプロセッサコアが利用可能であることを表明するときに、前記複数のビットのうちの前記１つまたは複数を前記第２の値から前記第１の値に設定する
ように構成されている、請求項１０に記載のシステム。
【請求項１４】
複数のプロセッサコアを備えるマルチコアプロセッサを含むコンピュータシステムによって実行されると、前記コンピュータシステムに、
前記複数のプロセッサコアのそれぞれと関連付けられた、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応する状況を指定するようにコア割込みマスクを構成させ、ここでプロセッサコアが前記マルチコアプロセッサの他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていないデータを含むキャッシュに関すると識別されるときに、前記コア割込みマスクが当該プロセッサコアを利用不可能なプロセッサコアと設定するように構成され、
割込みサービスルーチンと関連付けられた割込み要求を受け取らせ、
前記コア割込みマスクを評価して１つまたは複数の利用可能なプロセッサコアを識別させ、
前記受け取った割込み要求と関連付けられた前記割込みサービスルーチンを前記利用可能なプロセッサコアのうちの少なくとも１つに割り当てさせる
コンピュータ実行可能命令が記憶されているコンピュータ記憶媒体。
【請求項１５】
前記コア割込みマスクが複数のビットを有するレジスタを備え、前記複数のビットのそれぞれが前記複数のプロセッサコアのうちの個々の１つに対応し、前記複数のビットのそれぞれが第１の値と第２の値のどちらかを記憶するように構成され、前記第１の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用可能なプロセッサコアのうちの１つであることを指定するように構成され、前記第２の値が、前記複数のプロセッサコアのうちの前記対応する１つが前記利用不可能なプロセッサコアのうちの１つであることを指定するように構成された、請求項１４に記載のコンピュータ記憶媒体。
【請求項１６】
複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムにさらに、
前記マルチコアプロセッサ内の他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていないデータを含む関連付けられたキャッシュを有するプロセッサコアを識別させ、
前記識別されたプロセッサコアを前記利用不可能なプロセッサコアのうちの１つとして指定するように前記コア割込みマスクを設定させる
請求項１４に記載のコンピュータ記憶媒体。
【請求項１７】
複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムに、
前記マルチコアプロセッサ内の第２のプロセッサコアとの物理的近接性を有し、協働している第１のプロセッサコアを識別させ、
前記識別された第１のプロセッサコアと前記第２のプロセッサコアとを前記利用不可能なプロセッサコアとして指定するように前記コア割込みマスクを設定させる
請求項１４に記載のコンピュータ記憶媒体。
【請求項１８】
複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するようにコア割込みマスクを構成するために、前記コンピュータ実行可能命令が前記コンピュータシステムに、
前記マルチコアプロセッサ内の第１のプロセッサコアおよび第２のプロセッサコアであって、前記第１のプロセッサコアとバスの間の物理的近接性のほうが、前記第２のプロセッサコアと前記バスの間の物理的近接性よりも、より近いものである、前記第１のプロセッサコアおよび前記第２のプロセッサコアを識別させ、
前記識別された第１のプロセッサコアを前記利用不可能なプロセッサコアのうちの１つとして指定し、前記識別された第２のプロセッサコアを利用可能なプロセッサコアのうちの１つとして指定するように前記コア割込みマスクを設定させる
請求項１４に記載のコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
特に指示しない限り、本項に記載される資料は本出願における特許請求の範囲の先行技術ではなく、本項に含まれることにより先行技術であると認められるものではない。
【０００２】
割込み要求（「ＩＲＱ」）は、コンピューティングシステムに、割込みサービスルーチン（「ＩＳＲ」）とも呼ばれる割込みハンドラの実行によってサービスを受けるべきイベントを知らせることができる。ＩＲＱを受け取ったことに応答してコンピューティングシステムのプロセッサは、その現在のタスクの実行から受け取った割込み要求と関連付けられた割込みハンドラの実行へ遷移するためのコンテキスト切換えを行うことができる。現在のプロセッサタスクからの遷移は、現在のタスクの割込みとみなすことができる。受け取った割込み要求についてのＩＳＲを実行のためにマルチコアプロセッサ内の特定のプロセッサコアに割り振ることは、複雑な処理を発生し得る。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示では、複数のプロセッサコアを有するマルチコアプロセッサ内で割込みを処理するためのいくつかの方法を概説する。ある方法例は、以下の動作のうちの１つまたは複数を含む。割込みサービスルーチンと関連付けられた割込みが受け取られる。コア割込みマスクが評価されて、複数のプロセッサコアの中から１つまたは複数の利用可能なプロセッサコアが識別される。受け取った割込みと関連付けられた割込みサービスルーチンは、１つまたは複数の利用可能なプロセッサコアのうちの少なくとも１つに割り当てられる。
【０００４】
本開示では、複数のプロセッサコアを含むマルチコアプロセッサ内で割込みを処理するように構成されたいくつかのシステムを概説する。あるシステム例は、割込み要求を、マルチコアプロセッサ、コア割込みマスク、および割込み制御器に伝えるように適合された割込み線を含むように構成され得る。ある割込み線の例は、割込み要求をマルチコアプロセッサに伝えるように適合される。あるコア割込みマスクの例は、複数のプロセッサコアのそれぞれと関連付けられた状況を指定するように適合される。状況は、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応し得る。ある割込み制御器は、以下の動作のうちの１つまたは複数を実行するように構成される。割込み制御器は割込み線を介して割込み要求を受け取る。割込み制御器は、コア割込みマスクを評価して１つまたは複数の利用可能なプロセッサコアを識別する。割込み制御器は、割込み要求の処理を、利用可能なプロセッサコアのうちの１つに割り当てる。
【０００５】
本開示では、いくつかのコンピュータ記憶媒体を概説する。あるコンピュータ記憶媒体の例は、複数のプロセッサコアを含むコンピュータシステムによって実行されると、コンピュータシステムを、以下の動作のうちの１つまたは複数を実行するように適合させる方法のためのコンピュータ実行可能命令の記憶を含む。コンピュータシステムは、コア割込みマスクを、複数のプロセッサコアのそれぞれと関連付けられた状況を指定するように構成する。状況は、利用可能なプロセッサコアと利用不可能なプロセッサコアのどちらかに対応し得る。コンピュータシステムは、割込みサービスルーチンと関連付けられた割込み要求を受け取る。コンピュータシステムは、コア割込みマスクを評価して１つまたは複数の利用可能なプロセッサを識別する。コンピュータシステムは、受け取った割込み要求と関連付けられた割込みサービスルーチンを、利用可能なプロセッサコアのうちの少なくとも１つに割り当てる。
【０００６】
以上の概要は例示にすぎず、いかなる点においても限定のためのものではない。図面および以下の詳細な説明を参照すれば、前述の例示的態様、実施形態、および特徴に加えて、さらに別の態様、実施形態、および特徴も明らかになるであろう。
【０００７】
本開示の上記その他の特徴は、以下の説明および添付の特許請求の範囲を、添付の図面と併せて読めばより十分に明らかになるであろう。これらの図面は本開示によるいくつかの実施形態を示すものにすぎず、したがって、本開示の範囲を限定するものとみなすべきでないことを踏まえ、添付の図面を使用して、本開示をさらに具体的に詳細に説明する。
【図面の簡単な説明】
【０００８】
【図１】マルチコアプロセッサのための動作環境を示す機能ブロック図である。
【図２】割込み制御器を有するマルチコアプロセッサを示すブロック図である。
【図３】割込み制御器、コア割込みマスク（「ＣＩＭ」）、制御モジュール、および割込みマスクレジスタ（「ＩＭＲ」）を示すブロック図である。
【図４】ＣＩＭと関連付けられたマスクビットを示すブロック図である。
【図５】ＣＩＭを有するマルチコア・プロセッサ・コンピューティング・システムにおいて割込みを処理するためのプロセスを示す流れ図である。
【図６】コンピューティングシステムの例を示すブロック図である。
【図７】すべて本明細書で示す少なくともいくつかの実施形態に従って配置されたコンピュータプログラム製品を示す概略図である。
【発明を実施するための形態】
【０００９】
以下の詳細な説明では、本出願の一部を形成する添付の図面を参照する。図面では、文脈上他の意味に解される場合を除き、類似の記号は、通常、類似の構成要素を識別する。詳細な説明、図面、および特許請求の範囲に記載される例示的実施形態は、限定を意図するものではない。本出願で提示する主題の趣旨または範囲を逸脱することなく、他の実施形態が利用されてもよく、他の変更が加えられてもよい。本明細書において概説し、図に例示する本開示の態様は、多種多様な構成として配置し、置換し、結合し、分離し、設計することができ、それらすべてが本明細書において明確に企図されていることが容易に理解されるであろう。
【００１０】
本開示は一般に、とりわけ、マルチコアプロセッサに関連した方法、装置、システム、およびコンピュータプログラム製品を対象とするものである。マルチコアプロセッサ内の特定のプロセッサコアへの割込みの割当てに影響を及ぼすようにコア別の割込みマスク（「ＣＩＭ」）を構成するための技法が説明される。ＣＩＭは、特定のプロセッサコアに、割込みを処理するのに利用可能と利用不可能のどちらかであるというフラグを立てるように構成され得る。ＣＩＭが特定のプロセッサコアに利用可能というフラグを立てている場合には、マルチコアプロセッサの一部であるコンピュータシステムは、割込みサービス要求（「ＩＲＱ」）に対応する割込みサービスルーチン（「ＩＳＲ」）を当該の特定のプロセッサコアへ経路指定し得る。次いでこの特定のプロセッサコアはＩＳＲを実行し得る。ＣＩＭが特定のプロセッサコアに利用不可能というフラグを立てている場合には、コンピュータシステムは、ＩＳＲを当該の特定のプロセッサコアから離して別の利用可能なプロセッサコアへ経路指定し得る。コンピュータシステムは、ＩＳＲを実行するのに、全般的システム性能に最小限の影響しか及ぼさないプロセッサコアが選択され得るようにＣＩＭを構成し得る。
【００１１】
次に図１を見ると、機能ブロック図１００で、本明細書で提示する少なくともいくつかの実施形態に従って構成されたマルチコアプロセッサ１１０のための動作環境が示されている。マルチコアプロセッサ１１０は、第１のプロセッサコア１１５Ａ、第２のプロセッサコア１１５Ｂ、第３のプロセッサコア１１５Ｃ、第４のプロセッサコア１１５Ｄ、第Ｎのプロセッサコア１１５Ｅといった複数の内部プロセッサコアを組み込むことができる。これらのプロセッサコアをまとめて、または一般的に、プロセッサコア１１５と呼んでもよい。プロセッサコア１１５は一般に、並列処理、並列タスク、並列スレッド、別々の順次プロセス、またはこれらの任意の組み合わせをサポートすることができる。
【００１２】
メモリ１２０は、マルチコアプロセッサ１１０によるアクセスのために適合され得る。マルチコアプロセッサ１１０は、メモリ１２０からの読取りおよび／またはメモリ１２０への書込みを行うように構成することができる。そのような読取り動作および書込み動作は、マルチコアプロセッサ１１０の複数のコアの動作と関連付けられた命令とデータの両方に関連し得る。一般に、マルチコアプロセッサ１１０内の各プロセッサコアは、メモリ１２０に個々にアクセスするように構成され得る。メモリ１２０は、ランダム・アクセス・メモリ（「ＲＡＭ」）、スタティックＲＡＭ（「ＳＲＡＭ」）、ダイナミックＲＡＭ（「ＤＲＡＭ」）、シンクロナスダイナミックＲＡＭ（「ＳＤＲＡＭ」）、または他の任意の種類の揮発性または不揮発性メモリとすることができる。
【００１３】
マルチコアプロセッサ１１０の複数のプロセッサコア１１５上での動作と関連付けられた命令およびデータは、１つまたは複数の記憶媒体装置１３０に記憶され得る。記憶媒体装置１３０は、情報の不揮発性記憶をサポートし得る。記憶媒体１３０は、マルチコアプロセッサ１１０内の複数のプロセッサコアによるアクセスのために適合され得る。記憶媒体１３０は、マルチコアプロセッサ１１０内の複数のプロセッサコア１１５上で実行するためのソフトウェア１３２を記憶するように構成することができる。
【００１４】
例えば、それだけに限らないが、コンピュータ可読媒体には、コンピュータ記憶媒体と通信媒体とが含まれ得る。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、他のデータといった情報の記憶のための任意の方法または技術において実施される、揮発性、不揮発性、取り外し可能、および取り外し不能の媒体が含まれ得る。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、読取り専用メモリ（「ＲＯＭ」）、消去可能プログラム可能読取り専用メモリ（「ＥＰＲＯＭ」）、電気的ＥＰＲＯＭ（「ＥＥＰＲＯＭ」）、フラッシュメモリ、その他の固体メモリ技術、コンパクトディスクＲＯＭ（「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（「ＤＶＤ」）、高品位ＤＶＤ（「ＨＤ−ＤＶＤ」）、ブルーレイ、その他の光記憶、磁気カセット、磁気テープ、ハード・ディスク・ドライブ（「ＨＤＤ」）などの磁気ディスク記憶、その他の磁気記憶装置、あるいは所望の情報を記憶するのに使用することができ、マルチコアプロセッサ１１０によってアクセスされ得る他の任意の媒体が含まれ得る。
【００１５】
マルチコアプロセッサ１１０と関連付けられたソフトウェア１３２、または他の命令、コード、モジュール、もしくはプログラムには、割込みイベントに応答するように適合されたモジュールが含まれ得る。そのようなモジュールをＩＳＲ１３４と呼んでもよい。ＩＳＲ１３４は、それぞれ割込み要求をもたらし得る、特定の割込みイベント、特定の割込みの原因、割込みのソース、または特定の割込み信号線と関連付けられ得る。ＩＳＲ１３４は、割込み要求がマルチコアプロセッサ１１０において受け取られたことに応答して実行され得る。ＩＳＲ１３４は、マルチコアプロセッサ１１０と関連付けられた他の動作に割り込む、すなわちそれらの動作に取って代わるように構成され得る。そのような横取り（ｐｒｅｅｍｐｔｉｏｎ）は、マルチコアプロセッサ１１０における割込み要求の到着に迅速に応答したＩＳＲ１３４の実行をサポートし得る。迅速な応答は、様々なソフトウェアモジュールのリアルタイム、ハードリアルタイム、ソフトリアルタイム、または準リアルタイムの動作をサポートすることができる。
【００１６】
ＩＳＲ１３４は、デバイスドライバ、または他のソフトウェア、ファームウェア、もしくは外部機器のサポートと関連付けられたモジュールと関連付けられていてもよい。外部機器に加えて、そのようなモジュールは、割込み要求を提供することができる内部回路ブロックもサポートしてよい。サポートされる機器、すなわち関連付けられたインターフェース回路は、デバイスドライバまたはＩＳＲ１３４と関連付けられた割込みのソースとみなされ得る。割込み要求を受け取ると、関連付けられたＩＳＲ１３４は、即座に、特定の制限時間内に、またはＩＳＲ１３４および他の動作と関連付けられた優先度に従って実行され得る。
【００１７】
外部クロック（「ＣＬＫ」）１４０は、マルチコアプロセッサ１１０にクロック信号を提供することができる。ＣＬＫ１４０は、水晶発振器または他の任意のクロックまたは発振源（不図示）を含み得る。ＣＬＫ１４０はクロックドライバ回路（不図示）を含み得る。ＣＬＫ１４０と関連付けられたクロック信号は、マルチコアプロセッサ１１０内の様々な回路の時間を計測し、同期を取るのに使用され得る。またマルチコアプロセッサ１１０は、リアル・タイム・クロック（「ＲＴＣ」）１４５にもインターフェースし得る。ＲＴＣ１４５は、時刻、曜日、暦日付、年などといった時間を維持管理するのに使用することができる。ＲＴＣ１４５は、タイマ、アラーム、および／またはウォッチドッグ回路に関連したマルチコアプロセッサ１１０への割込みイベントを生成するように構成され得る。
【００１８】
マルチコアプロセッサ１１０にインターフェースすることのできる様々な機器を、割込み要求を生成するように構成することができる。そのような割込み要求は、マルチコアプロセッサ１１０に、機器によってサービスが要求されていることを知らせることができる。ＩＳＲ１３４は機器からの割込み要求に対応するために実行され得る。非限定的な例として、図１にいくつかの異なる機器が示されている。例えば、割込み側機器はネットワークインターフェース１５０とすることができる。ネットワークインターフェース１５０は、マルチコアプロセッサ１１０をネットワーク１５５に接続するのに使用され得る。ネットワークインターフェース１５０は、ネットワーク１５５からデータパケットが受信されるときに割込み要求を生成することができる。その場合、ネットワークインターフェース１５０からデータパケットを受信するために、ネットワークインターフェース１５０と関連付けられたＩＳＲ１３４などの割込みハンドラが実行され得る。同様に、アンテナ１６５を使用して無線ネットワークまたは移動通信システムに無線データパケットの送信および／または受信を行い得る無線インターフェース１６０も、ＩＳＲ１３４によって処理され得る割込み要求を生成することができる。
【００１９】
１つまたは複数のインターフェースバス１７０がマルチコアプロセッサ１１０とインターフェースするように適合され得る。インターフェースバスの例には、産業標準アーキテクチャ（「ＩＳＡ」）バス、周辺装置相互接続（「ＰＣＩ」）バス、ＰＣＩ−Ｅｘｐｒｅｓｓバス、アクセラレーテッド・グラフィックス・ポート（「ＡＧＰ」）バス、ユニバーサル・シリアル・バス（「ＵＳＢ」））、アドバンスド・テクノロジ・アタッチメント（「ＡＴＡ」）バス、シリアルＡＴＡ（「ＳＡＴＡ」）バス、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」）、ならびにコンピュータおよび埋め込みプロセッサシステムにおいて使用される他のそのようなバスおよびインターフェースが含まれ得る。バス、すなわちバスと関連付けられたインターフェース回路は、マルチコアプロセッサ１１０への割込み要求を生成するように適合された１つまたは複数の割込み機構を組み込んでいてよい。アナログインターフェース１８０がマルチコアプロセッサ１１０に結合されていてもよい。アナログインターフェース１８０は、デジタル／アナログ変換器（「ＤＡＣ」）、アナログ／デジタル変換器（「ＡＤＣ」）、またはその両方を含んでいてよい。アナログインターフェース１８０は、ビデオ信号、オーディオ信号、赤外線信号、無線周波数（「ＲＦ」）信号、センサ信号、または他の任意のアナログ信号に使用され得る。アナログインターフェース１８０、すなわちアナログインターフェース１８０をサポートする回路は、マルチコアプロセッサ１１０への割込み要求を生成するように適合され得る。
【００２０】
また、マルチコアプロセッサ１１０には１つまたは複数の人間・機械インターフェース１９０が結合されていてもよい。人間・機械インターフェース１９０には、ビデオディスプレイ、キーボード、マウス、ライトペン、プロジェクタ、音声認識、スイッチ、ボタン、表示器、または人間から入力を受け取り、もしくは人間に出力を提供するための他の任意の機構が含まれ得る。人間・機械インターフェース１９０、すなわち人間・機械インターフェース１９０と関連付けられた回路は、マルチコアプロセッサ１１０に割込み要求を提供するように適合され得る。
【００２１】
図１のブロック図１００は簡略化されており、マルチコアプロセッサ１１０に結合されたものとして図示されている構成要素のうちの１つまたは複数が、マルチコアプロセッサ１１０に間接的に結合されていてもよいことを理解すべきである。特に、当業者には予期され得るように、１つまたは複数の構成要素をマルチコアプロセッサ１１０に結合するのに様々な種類の中間機器が利用されてもよい。
【００２２】
次に図２を見ると、ブロック図で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、割込み制御器２００を有するマルチコアプロセッサ１１０が示されている。マルチコアプロセッサ１１０は、プロセッサコア１１５などの複数の内部プロセッサコアを有し得る。マルチコアプロセッサ１１０に届く割込み要求は、外部インターフェース２３０からもたらされる場合もある。外部インターフェース２３０と関連付けられた割込み要求は、図１に関連して論じたような外部機器から発せられ得る。同様に、マルチコアプロセッサ１１０の内部の機器も割込み要求を生成し得る。例えば、タイマ２４０、電源管理機構２４２、直接メモリアクセス（「ＤＭＡ」）制御器２４４、他のオンチップ周辺機器２４６などが、外部インターフェース２３０から発せられる割込み要求と同様の割込み要求を生成し得る。
【００２３】
内部機器と外部インターフェース２３０とからの様々な割込み信号は、個々に割込み線２２５上で割込み制御器２２０まで搬送され得る。各割込み線２２５が別々のＩＳＲと関連付けられてもよく、ＩＳＲが割込み線２２５のうちの複数と関連付けられてもよい。割込み制御器２２０は、割込みバス２１５上でプロセッサコア１１５とインターフェースすることができる。割込みバス２１５は、シリアルバスとすることもでき、パラレルバスとすることもでき、割込み制御器２２０と複数のプロセッサコア１１５との間で信号をやりとりするための任意の通信路とすることもできる。割込みバスは、汎用システムでも、入力／出力（「Ｉ／Ｏ」）でも、割込み制御器２２０と複数のプロセッサコア１１５との間で信号をやりとりするためにも使用することができるメモリバスでもよい。割込みバス２１５は、割込み制御器２２０とプロセッサコア１１５との間で割込み情報に関するメッセージ（例えば割込み要求など）を搬送することができる。割込みバス２１５上で伝えられるメッセージは、信号、パルス、論理レベル、パケット、フレーム、または当分野で公知の他の任意の表現として符号化することができる。さらに別の実施形態では、割込み制御器２２０、タイマ２４０、電源管理機構２４２、ＤＭＡ制御器２４４、および／またはその他のオンチップ周辺機器２４６は、マルチコアプロセッサ１１０の外部にあってもよい。
【００２４】
割込み要求は、プロセッサ実行リソースに取って代わることによって現在実行中のプロセスを遅延させることができる。現在のタスクからＩＳＲ１３４への交換はコンテキスト切換えによって行うことができる。コンテキスト切換えは、順序を変えて動作を完了させることができる。またコンテキスト切換えは動作を打ち切らせ、かつ／または再実行させてもよい。コンテキスト切換えはさらに、内部バッファをクリアさせ、かつ／またはキャッシュを変更させてもよい。またキャッシュ線および変換索引バッファ（「ＴＬＢ」）エントリが、ＩＳＲ１３４からのコードまたはデータによって無効化されてもよい。キャッシュは、最近アクセスされたデータまたはコードを後で高速でアクセスするためにより高速なキャッシュメモリに保持することができる。これは、反復アクセスおよび参照の局所性という考え方によれば、最近アクセスされたメモリ位置、またはその近くのメモリ位置は、近い将来において再度アクセスされる候補になる可能性が高いため、有益となり得る。割込み応答待ち時間および割込み処理時間は、ＩＳＲ１３４と関連付けられたコードまたはデータが別のプロセッサコア上で変更された状態でキャッシュされている場合に遅延され得る。
【００２５】
割込みが頻繁である場合、割込みサービスルーチンが相当量のコードもしくはデータを伴う場合、または相当量の全般的な計算処理時間が割込みに対応するために費やされるときには、システムにおいて分断による影響が増大し得る。そのような条件は、リアルタイムスケジュールに結び付けられた大量のデータを伴う複雑な計算処理タスクが生じる場合に、汎用と専用どちらのコンピューティングシステムにおいても発生し得る。類似の条件は、大量のネットワークトラフィックまたは記憶システムＩ／Ｏ動作を処理しているサーバコンピュータにおいても生じ得る。
【００２６】
割込みが割込み制御器２２０に届く（例えば割込み要求信号がアサートされる、割込み要求メッセージが送られるなどの）ときに、割込み制御器２２０は、割込みと関連付けられたＩＳＲ１３４を、プロセッサコア１１５の最初の利用可能なプロセッサコアに割り当ててもよい。例えば、プロセッサコア１１５のリストを含むプロセッサ待ち行列（不図示）が維持されていてもよい。割込み制御器２２０は、利用可能なプロセッサコアが見つかるまでプロセッサ待ち行列内の各プロセッサコア１１５をトラバースし得る。プロセッサコアは、現在動作を実行していない場合に、利用可能とみなされ得る。しかし、割込み制御器２２０がＩＳＲ１３４を最初の利用可能なプロセッサコアに割り当てるような手法はいくつかの欠点を有し得る。
【００２７】
第１の例としては、第１のプロセッサコア１１５Ａと第２のプロセッサコア１１５Ｂとは、物理的に近接しているため、１つのタスクを実行するために相互にやりとりし合うのにより適している場合である。割込み制御器２２０は、第１のプロセッサコア１１５Ａが利用可能であるため、ＩＳＲ１３４を第１のプロセッサコア１１５Ａに割り当てる。第１のプロセッサコア１１５ＡはＩＳＲ１３４で占有されているため、第２のプロセッサコア１１５Ｂは、第１のプロセッサコア１１５Ａよりも第２のプロセッサコア１１５Ｂからの物理的距離が大きいところにある、第Ｎのプロセッサコア１１５Ｅなどの別のプロセッサを用いてタスクを完了するよう制限される。第２のプロセッサコア１１５Ｂと第Ｎのプロセッサコア１１５Ｅとの間の距離の増加は、タスクを完了するための時間量を増加させ得る。
【００２８】
第２の例としては、第１のプロセッサコア１１５Ａが特定のバスに物理的近接性を有する場合である。よって、第１のプロセッサコア１１５Ａは、データがそのバス上で送信され、受信されるデータ集約的プロセスを実行するのにより適している。割込み制御器２２０がＩＳＲ１３４を第１のプロセッサコア１１５Ａに割り当てる場合には、別のプロセッサ、例えば第Ｎのプロセッサコア１１５Ｅがデータ集約的プロセスを実行し得る。しかし、第Ｎのプロセッサコア１１５Ｅはバスから物理的距離がより大きいところに位置決めされている。この距離の増加は、データ集約的プロセスを実行するための時間量を増加させ得る。
【００２９】
第３の例としては、第１のプロセッサコア１１５Ａがタスクを実行するためにキャッシュを利用し、キャッシュが相当量のデータを含む場合である。キャッシュは、他のプロセッサと共用されており、キャッシュ内のデータは他のキャッシュにおいてミラーリングされていない場合がある。第１のプロセッサコア１１５がＩＳＲ１３４を実行するときに、ＩＳＲ１３４は第１のプロセッサコア１１５Ａにキャッシュをフラッシュさせる。第１のプロセッサコア１１５Ａが高優先度のタスクの実行に戻るときに、前にキャッシュ内にあったデータにアクセスするとキャッシュミスを生じ、それによって、タスクを完了するための時間量が増加し得る。
【００３０】
第４の例としては、第１のプロセッサコア１１５Ａと第２のプロセッサコア１１５Ｂとが高優先度のタスクを実行している場合である。第１のプロセッサコア１１５Ａは、高優先度のタスクを実行している間に利用可能になり得る。特に、第１のプロセッサコア１１５Ａは、第２のプロセッサコア１１５Ｂからのデータを待っている間に遊休状態になる。第１のプロセッサコア１１５Ａが第２のプロセッサコア１１５Ｂからのデータを待っている間に、割込み制御器２２０はＩＳＲ１３４を第１のプロセッサコア１１５Ａに割り当てる。というのは、第１のプロセッサコア１１５Ａは遊休状態であり、よって、利用可能であるとみなされ得るからである。第１のプロセッサコア１１５ＡがＩＳＲ１３４を実行する際に、高優先度のタスクは、第１のプロセッサコア１１５ＡがＩＳＲ１３４の実行を完了するまで遅延され得る。また第２のプロセッサコア１１５Ｂも、第１のプロセッサコア１１５ＡがＩＳＲ１３４から戻って高優先度のタスクを実行するまで遊休状態のままになり得る。
【００３１】
いくつかの実施形態によれば、ＣＩＭは、以下でより詳細に説明するように、特定のプロセッサコアを、ＩＳＲ１３４を実行するために利用不可能であり、または利用可能であるものとして識別するように適合され得る。オペレーティングシステムまたは他の適切な制御機構が、ＣＩＭを、全般的システム性能に大きな影響を及ぼすプロセッサコアが利用不可能と指定されるように構成し得る。割込み制御器２２０内のＩＳＲ誘導論理２３５がＣＩＭを読み取るときに、ＩＳＲ誘導論理２３５はＩＳＲ１３４を利用不可能なプロセッサコアから離して、全般的システム性能に最小限の影響しか及ぼさないプロセッサコアに誘導し得る。
【００３２】
アムダールの法則によれば、全般的システム性能は、並列計算処理の割合が増加し、非並列（すなわち直列の）計算処理の割合が減少するに従って向上する。割込みを全般的システム性能に最小限の影響しか及ぼさないプロセッサコアに誘導することにより、ＣＩＭは、アムダールの法則に従って全般的システム性能を向上させ得る。例えば、第１のプロセッサコア１１５Ａが直列性の高いタスクを実行しているとする。アムダールの法則によれば、全般的システム性能は、第１のプロセッサコア１１５Ａが、ＩＳＲ１３４といったさらに別の直列計算処理を処理するために直列タスクの実行を遅延させる場合に低下し得る。ＩＳＲ１３４を、タスクを実行していない別のプロセッサコアに向ければ、割込み制御器２２０は、タスクを同時に実行しているプロセッサコアの数を増やすことにより、並列計算処理の割合を増加させ得る。
【００３３】
次に図３を見ると、ブロック図３００で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、割込み制御器２２０、ＣＩＭ３０５、制御モジュール３１０、および割込みマスクレジスタ（「ＩＭＲ」）３１５が示されている。図３には示されていないが、ＣＩＭ３０５および／またはＩＭＲ３１５は割込み制御器２２０内で実施されていてもよい。割込み制御器２２０は、１つまたは複数の割込み線２２５上で届くＩＲＱを受け取り、ラッチするように適合され得る。ＩＲＱに応答して、割込み制御器２２０は、ＩＲＱに応答するためのプロセッサコア１１５のうちの１つを識別し得る。特に、割込み制御器２２０は、ＣＩＭ３０５において表示される利用可能なプロセッサコアのうちの１つを識別し得る。
【００３４】
いくつかの実施形態によれば、ＣＩＭ３０５は、いくつかのビットを含むレジスタとして実施され得る。実施態様によっては、各ビットはプロセッサコア１１５のうちの１つまたは複数に対応していてもよい。実施態様によっては、１つまたは複数のビットが各プロセッサコア１１５に対応していてもよい。別の実施形態では、ＣＩＭ３０５は、別の種類のハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組み合わせとして実施されてもよい。
【００３５】
場合によっては、各ビットは、プロセッサコア１１５のうちの個々の１つに対応していてもよい。実施態様によっては、ビットの値「１」が、対応するプロセッサコアが利用可能であることを表示してもよく、ビットの値「０」が、対応するプロセッサコアが利用不可能であることを表示してもよい。他の実施態様では、対応するプロセッサコアに関する情報を表示するのに複数のビットが利用されてもよい。例えば、ビットの値「０」は、対応するプロセッサコアが利用不可能であることを表示し、ビットの値「１」は、対応するプロセッサコアが直前に利用可能になった（例えば、第１の閾値クロックサイクル数より少ないクロックサイクル数にわたって利用可能であったなど）ことを表示し、ビットの値「２」は、対応するプロセッサコアが第１の閾値クロックサイクル数より多いが、第２の閾値クロックサイクル数より少ないクロックサイクル数にわたって利用可能であったことを表示し、ビットの値「３」が、対応するプロセッサコアが第２の閾値クロックサイクル数より多いクロックサイクル数にわたって利用可能であったことを表示してもよい。さらに別の実施態様では、複数のプロセッサコア内のビットが符号化されてもよい。またＣＩＭ３０５内の各ビットは、当業者によって企図され得る他の情報も表示してよい。割込み制御器２２０内のＩＳＲ誘導論理２３５は、ＩＳＲ１３４を、利用不可能なプロセッサコアから離し、利用可能なプロセッサコアへ経路指定するように構成され得る。
【００３６】
いくつかの実施形態によれば、制御モジュール３１０内のＣＩＭビット制御論理３２５は、ＣＩＭ３０５内のビット４０５の値を設定するように適合させることができる。制御モジュール３１０は、オペレーティングシステム、監視システム、または他の適切な集中制御機構において実施され得る。また、いくつかのさらに別の実施形態では、第１のＣＩＭ設定モジュール３２０Ａ、第２のＣＩＭ設定モジュール３２０Ｂ、第ＮのＣＩＭ設定モジュール３２０ＥといったＣＩＭ設定モジュールも、プロセッサコア１１５のうちの１つまたは複数において実施され得る。第１のＣＩＭ設定モジュール３２０Ａ、第２のＣＩＭ設定モジュール３２０Ｂ、および第ＮのＣＩＭ設定モジュール３２０Ｅをまとめて、または一般的に、ＣＩＭ設定モジュール３２０と呼んでもよい。ＣＩＭ設定モジュール３２０は、プロセッサコア１１５のうちの１つまたは複数がＣＩＭ３０５内のそれぞれに対応するビットを直接設定することを可能にし得る。
【００３７】
制御モジュール３１０内のＣＩＭビット制御論理３２５は、様々なＣＩＭ設定基準３３５に従ってビット４０５を設定するように構成され得る。第１の実施態様の例において、制御モジュール３１０は、プロセッサコアがタスクを実行し始めるときに、プロセッサコアを利用不可能と設定し得る。動作中のプロセッサコアを利用不可能と設定することにより、制御モジュール３１０は、プロセッサコアがタスクの実行中に一時的に遊休状態になり得るときに、割込み制御器２２０がプロセッサコアにＩＳＲ１３４を割り当てる可能性を防止することができる。
【００３８】
第２の実施態様の例において、制御モジュール３１０は、プロセッサコアと関連付けられたキャッシュが相当量のデータを含むときに、プロセッサコアを利用不可能と設定するように構成され得る。例えば、制御モジュール３１０内のプロセッサキャッシュ使用論理３４０は、プロセッサコアと関連付けられたキャッシュが相当量のデータを含むかどうか判定し得る。キャッシュ内のデータは、他のプロセッサコアと関連付けられた他のキャッシュにおいてミラーリングされていない可能性がある。キャッシュが満杯であるプロセッサコアを利用不可能と設定することにより、制御モジュール３１０はＩＳＲ１３４を、より利用度の低いキャッシュを有するプロセッサコアに割り当てることができる。利用度の高いキャッシュと関連付けられたコアの割込み横取りを回避すれば、潜在的なキャッシュミスの件数を低減することができる。そのようなキャッシュミスは、利用度の高いキャッシュをフラッシュした後で生じ得る。
【００３９】
第３の実施態様の例において、制御モジュール３１０は、プロセッサコアが特定のバスに物理的に近接して位置決めされているときに、プロセッサコアを利用不可能と設定するように構成され得る。例えば、制御モジュール３１０内のプロセッサバス近接性論理３４５は、プロセッサコアが特定のバスに物理的に近接して位置決めされているかどうか判定し得る。バスの近くのプロセッサコアを利用不可能と設定することにより、制御モジュール３１０はＩＳＲ１３４をバスへの物理的近接性がより大きいプロセッサコアに割り当てることができ、それによって、バスに近いプロセッサコアを、バス上でのデータの送信および受信を伴うタスクを実行するために利用することができる。
【００４０】
第４の実施態様の例において、制御モジュール３１０は、第１のプロセッサコアが第２のプロセッサコアと物理的に近接しており、協働するときに、第１のプロセッサコアと第２のプロセッサコアとを利用不可能と設定するように構成され得る。例えば、協働プロセッサ論理３５０は、２つ以上のプロセッサコアが物理的に近接しており、相互に協働し合うかどうか判定し得る。協働するプロセッサコアを利用不可能と設定することにより、プロセッサコアは、割込みを処理する割込みなしで引き続き協働し得る。上記の実施態様は単なる例にすぎず、他の適切な基準も同様に利用され得ることを理解すべきである。
【００４１】
実施態様によっては、制御モジュール３１０は、最初に、ＣＩＭ３０５内の各ビット４０５を値「１」に設定（または変更／初期設定／リセット）し、各プロセッサコア１１５が利用可能であることを表示するように構成されてもよい。制御モジュール３１０は、ＣＩＭ３０５内のビット４０５のうちの１つまたは複数を、値「１」から値「０」に変更（または設定／切換え）し、１つまたは複数の対応するプロセッサコア１１５が利用不可能であることを表示するように構成されてもよい。これらの変更は、前述のように、ＣＩＭ設定基準３３５に基づくものとすることができる。ＣＩＭ設定基準３３５が満たされなくなると、制御モジュール３１０は、ＣＩＭ３０５内のビット４０５を値「０」から値「１」に戻す（または変更／再初期設定／リセットする）ように構成されてもよい。
【００４２】
実施態様によっては、ＣＩＭ設定モジュール３２０は、最初に、ＣＩＭ３０５内の各ビット４０５を値「１」に設定し、各プロセッサコア１１５が利用可能であることを表示するように構成されてもよい。ＣＩＭ設定モジュール３２０は、前述のように、ＣＩＭ設定基準３３５に基づいて、ＣＩＭ３０５内のビット４０５のうちの１つまたは複数を値「１」から値「０」に変更し、１つまたは複数の対応するプロセッサコア１１５が利用不可能であることを表示するように構成されてもよい。ＣＩＭ設定基準３３５が満たされなくなると、ＣＩＭ設定モジュール３２０は、ＣＩＭ３０５内のビット４０５を値「０」から値「１」に戻すように構成されてもよい。
【００４３】
実施態様によっては、制御モジュール３１０またはＣＩＭ設定モジュール３２０は、最初に、ＣＩＭ３０５内の各ビット４０５を値「０」に設定し、各プロセッサコア１１５が利用不可能であることを表示するように構成されてもよい。制御モジュール３１０は、プロセッサコア１１５のうちの１つまたは複数、特に、ＣＩＭ設定モジュール３２０のうちの１つまたは複数から、割込みの処理を引き受ける命令を受け取り得る。命令を受け取ったことに応答して、制御モジュール３１０は、引受先のプロセッサコア１１５に対応するＣＩＭ３０５内のビット４０５を値「０」から値「１」に変更し、個々のプロセッサコア１１５が利用可能であることを表示するように適合され得る。また制御モジュール３１０は、プロセッサコア１１５のうちの１つまたは複数から、割込みの処理の引受けを取り消し、それによって、制御モジュール３１０に、ＣＩＭ３０５内のビット４０５を値「１」から値「０」に戻させる命令を受け取るようにも構成され得る。あるいは、ＣＩＭ設定モジュール３２０は、引受先のプロセッサコア１１５に対応するビット４０５を値「０」から値「１」へ、また値「１」から値「０」へ直接変更するように構成されてもよい。
【００４４】
いくつかの実施形態によれば、制御モジュール３１０は、ＣＩＭ３０５のビット４０５を設定するときに、閾値を超える数のプロセッサコア１１５が利用不可能と指定されるのを防止するＣＩＭ設定規則３５５を実施し得る。制御モジュール３１０は、割込み制御器２２０が割込みを処理するのに十分な量のプロセッサ能力を有することを保証するようにＣＩＭ設定規則３５５を実施し得る。またＣＩＭ設定規則３５５は、第１のＣＩＭ設定モジュール３２０ＡのようなＣＩＭ設定モジュール３２０によっても実施され得る。例えば、第１のＣＩＭ設定モジュール３２０Ａが、第１のプロセッサコア１１５Ａが割込みを処理するのに利用不可能であると指定するビットを設定しようと試みるときに、ＣＩＭ設定規則３５５は、第１のＣＩＭ設定モジュール３２０Ａが当該ビットを設定するのを防止し得る。
【００４５】
また割込み制御器２２０は、ＣＩＭ３０５に加えて割込みマスクレジスタ（「ＩＭＲ」）３１５も実施し得る。ＩＭＲ３１５は、割込み線２２５のうちの１つまたは複数に対応する１組のビットを含み得る。ＩＭＲ３１５においてビットが設定されているときに、割込み制御器２２０は設定ビットに対応する割込み線から受け取られる割込みを無視し得る。ＩＭＲ３１５上に関連付けられたビットを有する割込みを、マスク可能な割込みと呼んでもよい。しかし、マスク不可能な割込みと呼ばれる割込みの中には、ＩＭＲ３１５上に関連付けられたビットのないものもある。よって、マスク不可能な割込みは、ＩＭＲ３１５の使用によって無視することができない。
【００４６】
いくつかの実施形態によれば、ＣＩＭ３０５は、マスク可能な割込みとマスク不可能な割込みとを区別しなくてもよい。例えば、第１のプロセッサコア１１５Ａが利用不可能であることを表示するＣＩＭ３０５内のビットが設定されている場合には、割込み制御器２２０は、マスク不可能な割込みについてでさえも、ＩＳＲ１３４を別のプロセッサコアに誘導する。ＣＩＭ３０５とＩＭＲ３１５の両方が実施されているときに、割込み制御器２２０は、ＩＭＲ３１５を読み取る前にＣＩＭ３０５を読み取ってもよい。あるいは、ＣＩＭ３０５とＩＭＲ３１５の両方が実施されているときに、割込み制御器２２０は、ＣＩＭ３０５を読み取る前にＩＭＲ３１５を読み取ってもよい。前述のように、割込み制御器２２０は、ＣＩＭ３０５を読み取ってプロセッサコア１１５のうちのどれが割込みを処理するのに利用可能であるか判定し得る。割込み制御器２２０は、ＩＭＲ３１５を読み取って、所与の割込みがマスク可能な割込みであるかそれともマスク不可能な割込みであるか判定し得る。割込み制御器２２０は、マスク可能な割込みは無視するが、マスク不可能な割込みは無視しないように構成されてもよい。
【００４７】
次に図４を見ると、ブロック図で、本明細書で提示する少なくともいくつかの実施形態に従って構成された、ＣＩＭ３０５と関連付けられたマスクビットが示されている。ＣＩＭ３０５は、第１のビット４０５Ａ、第２のビット４０５Ｂ、第３のビット４０５Ｃ、第４のビット４０５Ｄ、および第Ｎのビット４０５Ｅを含む。第１のビット４０５Ａ、第２のビット４０５Ｂ、第３のビット４０５Ｃ、第４のビット４０５Ｄ、および第Ｎのビット４０５Ｅは、それぞれ、第１のプロセッサコア１１５Ａ、第２のプロセッサコア１１５Ｂ、第３のプロセッサコア１１５Ｃ、第４のプロセッサコア１１５Ｄ、および第Ｎのプロセッサコア１１５Ｅに対応する。第１のビット４０５Ａ、第２のビット４０５Ｂ、第３のビット４０５Ｃ、第４のビット４０５Ｄ、および第Ｎのビット４０５Ｅを、まとめて、または一般的に、ＣＩＭビット４０５と呼んでもよい。さほど制限されないが、図４に示すＣＩＭ３０５は、各プロセッサコア１１５に対応する１つのＣＩＭビット４０５を有する。別の実施形態では、ＣＩＭビット４０５のうちの２つ以上が各プロセッサコア１１５に対応してもよい。さらに別の実施形態では、各ＣＩＭビット４０５がプロセッサコア１１５のうちの２つ以上に対応してもよい。
【００４８】
図４に示す例では、第１のビット４０５Ａ、第２のビット４０５Ｂ、第３のビット４０５Ｃ、第４のビット４０５Ｄ、および第Ｎのビット４０５Ｅは、それぞれ、値「０」、値「１」、値「０」、値「１」、および値「１」に設定されている。前述のように、実施態様によっては、ビットの値「１」は、対応するプロセッサコアが利用可能であることを表示し、ビットの値「０」は対応するプロセッサコアが利用不可能であることを表示し得る。そのような実施態様では、図４に示すＣＩＭ３０５は、第１のビット４０５Ａと第３のビット４０５Ｃとが値「０」に設定されているため、第１のプロセッサコア１１５Ａと第３のプロセッサコア１１５Ｃとが利用不可能であることを指定し得る。割込み制御器２２０は、ＩＲＱを受け取ると、ＣＩＭ３０５を確認し得る。割込み制御器２２０は、第１のビット４０５Ａと第３のビット４０５Ｃとが設定されていることを読み取ると、ＩＳＲ１３４を第１のプロセッサコア１１５Ａと第３のプロセッサコア１１５Ｃから離して、第２のプロセッサコア１１５Ｂ、第４のプロセッサコア１１５Ｃ、第Ｎのプロセッサコア１１５Ｅといった利用可能なプロセッサコアのうちの１つに経路指定し得る。
【００４９】
次に図５を参照して、マルチコアプロセッサにおける割込みマスクについて本明細書で提示する実施形態に関してさらに詳細に説明する。特に、図５は、本明細書で提示する少なくともいくつかの実施形態に従って構成された、ＣＩＭ３０５を有するマルチコア・プロセッサ・コンピューティング・システムにおいて割込みを処理するためのプロセス５００を示す流れ図である。
【００５０】
本明細書で説明する動作は、一連の動作もしくは製造行為として、一連のコンピュータによる動作もしくはコンピューティングシステム上で走るプログラムモジュールとして、または相互接続された機械論理回路もしくはコンピューティングシステム内の回路モジュールとして実施されることを理解すべきである。実施態様は、様々な実施形態の性能および他の要件に依存する選択の問題である。本明細書で説明する論理動作の中には、状態動作、構造的装置、作用、またはモジュールと、様々な名称で呼ばれるものがある。これらの動作、機能、構造的装置、作用、およびモジュールは、ソフトウェア、ファームウェア、専用デジタル論理として実施されても、これらの組み合わせとして実施されてもよい。また、各図に示され、本明細書に記載される動作よりも多い、または少ない動作が実施されてもよいことも理解すべきである。またこれらの動作は、順次に実施されても、並列に実施されても、本明細書に記載されるのとは異なる順序で実施されてもよい。
【００５１】
プロセス５００は、ブロック５０２、ブロック５０４および／またはブロック５０６のうちの１つまたは複数によって示される様々な動作、機能、または措置を含み得る。プロセス５００は、ブロック５０２（割込みサービスルーチンと関連付けられた割込みを受け取る）から開始してよく、そこで割込み制御器２２０は割込み線２２５からＩＲＱを受け取り得る。ＩＲＱはＩＳＲ１３４といったＩＳＲと関連付けられていてよい。ブロック５０２に続いてブロック５０４が行われ得る。
【００５２】
ブロック５０４（利用可能なプロセッサコアを決定する）で、割込み制御器２２０、特にＩＳＲ誘導論理２３５は、ＣＩＭ３０５を読み取る（すなわち評価する）ことによって利用可能なプロセッサコアを決定し得る。例えば、ＣＩＭ３０５は、プロセッサコア１１５における利用可能なプロセッサコアと利用不可能なプロセッサコアとを表示するビット値を記憶し得る。ブロック５０４に続いてブロック５０６が行われ得る。
【００５３】
ブロック５０６（割込みサービスルーチンを利用可能なプロセッサに割り当てる）で、割込み制御器２２０、特にＩＳＲ誘導論理２３５は、関連付けられたＩＳＲ１３４を、ＣＩＭ３０５によって指定される利用可能なプロセッサコアのうちの１つに割り当てることができる。また割込み制御器２２０は、ＩＲＱを、ＣＩＭ３０５によって指定される利用可能なプロセッサコアのうちの１つに割り当ててもよい。ブロック５０６の後で、プロセスは（例えば、周期的に、連続して、または必要に応じて要求時に）繰り返しても、終了してもよい。
【００５４】
図６は、本明細書で提示する少なくともいくつかの実施形態を実施することのできるコンピューティングシステムのための例示的なコンピュータ・ハードウェア・アーキテクチャを示すコンピュータアーキテクチャ図である。図６は、マルチコアプロセッサ１１０と、メモリ６２０と、１つまたは複数のドライブ６３０とを含むコンピュータ６００を含む。コンピュータ６００は、通常のコンピュータシステム、埋め込み制御コンピュータ、ラップトップとして、もしくはサーバコンピュータ、モバイル機器、セット・トップ・ボックス、キオスク、車両情報システム、携帯電話、カスタマイズマシン、または他のハードウェアプラットフォームとして実施されてよい。プロセッサ６１０は、汎用プロセッサ、プロセッサコア、マルチプロセッサ、マルチコアプロセッサ、グラフィックスプロセッサ、デジタル信号処理（「ＤＳＰ」）プロセッサ、特定用途向け集積回路（「ＡＳＩＣ」）内に実装されたカスタマイズ・コンピューティング・デバイス、フィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」）内に実装されたカスタマイズ・コンピューティング・デバイス、任意の種類のプログラマブル論理内に実装されたカスタマイズ・コンピューティング・デバイス、状態機械、再構成可能なプロセッサ、他の任意の処理装置、またはこれらの組み合わせもしくは複合とすることができる。いくつかの実施形態によれば、プロセッサ６１０は、前述のようなＣＩＭ３０５、割込み制御器２２０、ＩＭＲ３１５、および／またはＣＩＭ設定モジュール３２０を含み得る。
【００５５】
ドライブ６３０、および各ドライブと関連付けられたコンピュータ記憶媒体は、コンピュータ６００のためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶を提供することができる。ドライブ６３０は、オペレーティングシステム６４０、アプリケーションプログラム６５０、プログラムモジュール６６０、およびデータベース６８０を含むことができる。コンピュータ６００はさらに、ユーザがコマンドおよびデータを入力するためのユーザ入力機器６９０を含む。入力機器には、電子デジタイザ、マイクロホン、キーボードおよび一般にマウスと呼ばれるポインティングデバイス、トラックボールまたはタッチパッドが含まれ得る。他の入力機器には、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどが含まれ得る。
【００５６】
上記その他の入力機器は、システムバスに結合されたユーザ入力インターフェースを介してプロセッサ６１０に結合することができるが、パラレルポート、ゲームポート、ユニバーサル・シリアル・バス（「ＵＳＢ」）といった他のインターフェースおよびバス構造によって結合されてもよい。またコンピュータ６００などのコンピュータは、スピーカなどの他の周辺出力機器を含んでいてもよく、それらの出力機器は、出力周辺インターフェース６９４などを介して結合され得る。
【００５７】
コンピュータ６００は、ネットワークインターフェース６９６に結合されたリモートコンピュータなど、１つまたは複数のコンピュータへの論理接続を使用したネットワークで接続された環境において動作し得る。リモートコンピュータは、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の一般的なネットワークノードとすることができ、コンピュータ６００に関して上述した要素の多くまたは全部を含むことができる。ネットワーキング環境は、オフィス、企業の広域ネットワーク（「ＷＡＮ」）、ローカル・エリア・ネットワーク（「ＬＡＮ」）、イントラネットおよびインターネットにおいてよく見られる。
【００５８】
ＬＡＮまたはＷＬＡＮネットワーキング環境で使用されるときに、コンピュータ６００は、ネットワークインターフェース６９６またはアダプタを介してＬＡＮに結合される。ＷＡＮネットワーキング環境で使用されるときに、コンピュータ６００は通常、モデム、またはインターネットやネットワーク６０８などのＷＡＮ上での通信を確立するための他の手段を含む。ＷＡＮには、インターネット、図示のネットワーク６０８、他の様々なネットワーク、またはそれらの任意の組み合わせが含まれ得る。コンピュータ間の通信リンク、リング、メッシュ、バス、クラウド、またはネットワークを確立する他の機構が使用されてもよいことが理解されるであろう。
【００５９】
いくつかの実施形態によれば、コンピュータ６００は、プロセッサ６１０および／またはプログラムモジュール６６０が、本明細書の実施形態に従ってマルチコアプロセッサ内で割込みを処理することができるようにネットワーキング環境に結合され得る。コンピュータ６００は、ドライブ６３０または他の記憶装置と関連付けられた１つまたは複数の物理的なコンピュータ可読記憶媒体の１つまたは複数の例を含み得る。システムバスは、プロセッサ６１０がコンピュータ可読記憶媒体との間でコードおよび／またはデータを読み取ることを可能にし得る。媒体は、それだけに限らないが、半導体、磁性材料、光媒体、電気的記憶、電気化学的記憶、または他の任意のそのような記憶技術を含む任意の適切な技術を使用して実施された記憶素子としての装置を表し得る。媒体は、ＲＡＭ、ＲＯＭ、フラッシュ、または他の種類の揮発性もしくは不揮発性メモリ技術のいずれとして特徴付けられるにせよ、メモリ６２０と関連付けられた構成要素を表し得る。また媒体は、記憶ドライブ６３０として実施されるにせよ、別のやり方で実施されるにせよ、２次記憶も表し得る。ハードドライブ実装形態は、固体として特徴付けられてもよく、磁気的に符号化された情報を記憶する回転媒体を含んでいてもよい。
【００６０】
記憶媒体は、制御モジュール３１０および／またはＩＳＲ１３４といった１つまたは複数のプログラムモジュール６６０を含み得る。プログラムモジュール６６０は、プロセッサ６１０にロードされ、実行されると、汎用コンピューティングシステムを、本明細書で開示されるマルチコアプロセッサ内で割込みを処理するようにカスタマイズされた専用コンピューティングシステムに変換するソフトウェア命令を含み得る。本明細書を全体で詳述するように、プログラムモジュール６６０は、コンピュータ６００が、本明細書で論じるコンポーネント、論理フロー、および／またはデータ構造を使用して全般的なシステムまたは動作環境内で関与するための様々なツールまたは技法を提供し得る。
【００６１】
プロセッサ６１０は、任意の数のトランジスタまたは他の回路素子から構築されていてよく、これらのトランジスタまたは他の回路素子は、個々に、またはまとまって任意の数の状態を帯びることが可能である。より具体的には、プロセッサ６１０は、状態機械または有限状態機械として動作し得る。そのような機械は、プログラムモジュール６６０内に含まれる実行可能命令をロードすることにより第２の機械、または特定の機械に変換され得る。これらのコンピュータ実行可能命令は、プロセッサ６１０が状態間をどのように遷移するか指定することによってプロセッサ６１０を変換し、それによって、プロセッサ６１０を構成するトランジスタまたは他の回路素子を、第１の機械から第２の機械へと変換することができ、第２の機械は、マルチコアプロセッサにおける割込みを処理するように特に構成され得る。またどちらの機械の状態も、１つもしくは複数のユーザ入力機器６９０、ネットワークインターフェース６９６、他の周辺機器、他のインターフェース、または１名もしくは複数のユーザもしくは他の動作者から入力を受け取ることによっても変換され得る。またどちらの機械も、状態、すなわち、プリンタ、スピーカ、ビデオディスプレイなどといった様々な出力機器の様々な物理的特性も変換し得る。
【００６２】
また、プログラムモジュール６６０を符号化することにより、記憶媒体の物理的構造も変換され得る。物理的構造の特定の変換は、本明細書の様々な実体態様における様々な要因に左右され得る。そのような要因の例には、それだけに限らないが、記憶媒体を実施するのに使用される技術、記憶媒体が１次記憶として特徴付けられるかそれとも２次記憶として特徴付けられるかなどが含まれ得る。例えば、記憶媒体が半導体ベースのメモリとして実施される場合、プログラムモジュール６６０は、ソフトウェアがそこで符号化されるときに、半導体メモリ６２０の物理的状態を変換し得る。例えば、ソフトウェアは、半導体メモリ６２０を構成するトランジスタ、コンデンサ、または他のディスクリート回路素子の状態を変換し得る。
【００６３】
別の例として、記憶媒体は、ドライブ６３０などの磁気的技術または光学的技術を使用して実施されてもよい。そのような実施態様では、プログラムモジュール６６０は、ソフトウェアがそこで符号化されるときに、磁気媒体または光媒体の物理的状態を変換し得る。これらの変換は、所与の磁気媒体内の特定の位置の磁気特性を変更することを含み得る。またこれらの変換は、所与の光媒体内の特定の位置の物理的特徴または特性を変更して、それらの位置の光学的特性を変更することも含み得る。本明細書の範囲および趣旨を逸脱することなく、物理媒体の他の様々な変換も可能であることを理解すべきである。
【００６４】
次に図７を見ると、概略図に、本明細書で提示する少なくともいくつかの実施形態に従って構成されたコンピューティング機器上でコンピュータプロセスを実行するためのコンピュータプログラムを含むコンピュータプログラム製品７００の部分図が示されている。コンピュータプログラム製品例の例示的実施形態が、信号保持媒体７０２を使用して提供され、コンピュータプログラム製品は、以下の命令７０４のうちの少なくとも１つを含み得る。コア割込みマスクを、マルチコアプロセッサ上の複数のプロセッサコアにおける利用可能なプロセッサコアと利用不可能なプロセッサコアとを指定するように構成するための１つもしくは複数の命令；割込みサービスルーチンと関連付けられた割込みを受け取るための１つもしくは複数の命令；コア割込みマスクを読み取ることによって利用可能なプロセッサコアを識別するための１つもしくは複数の命令；または、割込みサービスルーチンを、利用不可能なプロセッサコアから離して利用可能なプロセッサコアのうちの少なくとも１つに割り当てるための１つもしくは複数の命令。１つまたは複数の命令は、例えば、コンピュータ実行可能命令および／または論理による命令とすることができる。実施形態によっては、１つまたは複数のコンピュータプログラム製品７００の信号保持媒体７０２は、コンピュータ可読媒体７０６、記録可能媒体７０８、および／または通信媒体７１０を含む。
【００６５】
本明細書で説明する主題は、コンピュータシステム上でオペレーティングシステムおよびアプリケーションプログラムの実行と併せて実行されるプログラムモジュールの一般的状況において提示されているが、当業者は、別の実施態様が別の種類のプログラムモジュールとの組み合わせで実施されてもよいことを理解するであろう。一般に、プログラムモジュールには、ルーチン、プログラム、コンポーネント、データ構造、および特定のタスクを実行し、または特定の抽象データ型を実施する別の種類の構造が含まれる。さらに、本明細書で説明する主題は、ハンドヘルド機器、マルチコア・プロセッサ・システム、マイクロプロセッサベースまたはプログラマブル家電製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成を用いて実施されてもよいことも当業者は理解するであろう。
【００６６】
本開示は、様々な態様の例示として意図されている本出願に記載される特定の実施形態だけに限定されるものではない。当業者には理解されるように、本開示の趣旨および範囲を逸脱することなく、多くの改変および変形を加えることができる。本明細書に記載されているもの以外の、本開示の範囲内の機能的に等価な方法および装置も、以上の説明を読めば当業者には明らかになるであろう。そのような改変および変形は、添付の特許請求の範囲の範囲内に含まれるべきである。本開示は、添付の特許請求の範囲の各項と、かかる特許請求の範囲の権利付与の対象となる全範囲の均等物とによってのみ限定されるべきである。本開示は、特定の方法、試薬、化合物、組成物、または生体系だけに限定されず、当然ながら多様であり得ることを理解すべきである。また、本明細書において使用される用語は特定の実施形態を説明するためのものにすぎず、限定的であることが意図されていないことも理解すべきである。
【００６７】
本明細書における実質的にいかなる複数形および／または単形数の用語の使用についても、当業者は、状況および／または用途に適するように、複数形から単数形に、かつ／または単数形から複数形に変換することができる。本明細書においては明確にするために様々な単数形／複数形の置換形が明示され得る。
【００６８】
一般に、本明細書において、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の本文など）において使用される語は、一般には、「非限定的な（ｏｐｅｎ）」語として意図されている（例えば、「ｉｎｃｌｕｄｉｎｇ（〜を含み）」という語は「それだけに限らないが〜を含み」と解釈すべきであり、「ｈａｖｉｎｇ（〜を有し）」という語は「少なくとも〜を有し」と解釈すべきであり、「ｉｎｃｌｕｄｅｓ（〜を含む）」という語は、「それだけに限らないが、〜を含む」と解釈すべきであるなど）ことが当業者には理解されるであろう。さらに、特定の数の導入請求項記載が意図される場合、そのような意図は当該請求項において明示的に記載され、そのような記載がない場合にはそのような意図が存在しないことも当業者には理解されるであろう。例えば、理解の一助として、添付の特許請求の範囲は、請求項記載を導入するために、「少なくとも１つの」および「１つまたは複数の」という導入句の使用を含み得る。しかし、そのような句の使用は、同じ請求項が「１つまたは複数の」あるいは「少なくとも１つの」という導入句および「ａ」や「ａｎ」といった不定冠詞を含むときでさえも、不定冠詞「ａ」または「ａｎ」による請求項記載の導入が、そのような導入請求項記載を含む任意の特定の請求項を、ただ１つのそのような記載を含む実施形態だけに限定することを意味するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は「少なくとも１つの」または「１つまたは複数の」を意味するものと解釈されるべきであるなど）。同じことが、請求項記載を導入するのに使用される定冠詞の使用についても当てはまる。加えて、特定の数の導入請求項記載が明示的に記載されている場合でさえも、そのような記載が、少なくとも記載される数を意味するものと解釈されるべきであることを当業者は理解するであろう（例えば、他の修飾語句を伴わない「２つの記載」という記載だけで、少なくとも２つの記載、または２つ以上の記載を意味するなど）。さらに、「Ａ、Ｂ、およびＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、およびＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。「Ａ、Ｂ、またはＣのうちの少なくとも１つなど」に類似した慣用表現が使用される場合、一般にそのような構造は、当業者が当該慣用表現を理解するはずの意味として意図されるものである（例えば、「Ａ、Ｂ、またはＣのうちの少なくとも１つを有するシステム」は、それだけに限らないが、Ａだけを、Ｂだけを、Ｃだけを、ＡとＢとを共に、ＡとＣとを共に、ＢとＣとを共に、かつ／またはＡ、Ｂ、およびＣを共に有するシステムを含むはずであるなど）。さらに、２つ以上の択一的項目を提示する事実上あらゆる選言的な語および／または句は、本明細書においてであれ、特許請求の範囲においてであれ、図面においてであれ、それらの項目のうちの１つ、それらの項目のうちのどちらか、またはそれらの項目の両方を含む可能性を企図するものと理解すべきであることも当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「Ａ」または「Ｂ」または「ＡおよびＢ」の可能性を含むものと理解されるであろう。
【００６９】
加えて、本開示の特徴または態様がマーカッシュグループとして記載される場合、本開示が、それによって、マーカッシュグループの任意の個々のメンバまたはメンバの下位グループとしても記載されるものであることを当業者は理解するであろう。
【００７０】
当業者には理解されるように、ありとあらゆる目的で、例えば明細書を提供することに関して、本明細書において開示されるあらゆる範囲は、そのありとあらゆる可能な下位範囲および下位範囲の組み合わせも包含するものである。あらゆる記載範囲は、その同じ範囲が、少なくとも２等分、３等分、４等分、５等分、１０等分などに分割されることを十分に説明し、可能にするものとして容易に理解され得るものである。非限定的例を挙げると、本明細書で論じる各範囲は、下３分の１、中３分の１および上３分の１に容易に分割することができる。またやはり当業者には理解されるように、「最大〜まで（ｕｐ  ｔｏ）」、「少なくとも（ａｔ  ｌｅａｓｔ）」「〜より大（ｇｒｅａｔｅｒ  ｔｈａｎ）」「〜より小（ｌｅｓｓ  ｔｈａｎ）」などといったすべての表現は、記載される数を含み、後で前述の下位範囲に分割され得る範囲を指し示すものである。最後に、当業者には理解されるように、範囲は個々の各メンバを含む。よって例えば、１〜３個の要素を有するグループは、１個、２個、または３個の要素を有するグループを指す。同様に、１〜５個の要素を有するグループは、１個、２個、３個、４個または５個の要素を有するグループを指し、以下同様である。
【００７１】
本明細書では様々な態様および実施形態が開示されているが、当業者には他の態様および実施形態も明らかであろう。本明細書で開示する様々な態様および実施形態は例示のためのものであり、限定を意図するものではなく、その真の範囲および趣旨は添付の特許請求の範囲によって指示される。
【図１】
0005492305.tif 000002
【図２】
0005492305.tif 000003
【図３】
0005492305.tif 000004
【図４】
0005492305.tif 000005
【図５】
0005492305.tif 000006
【図６】
0005492305.tif 000007
【図７】
0005492305.tif 000008