(57)【特許請求の範囲】
【請求項１】
システムであって、
第１のプロセッサと、
前記第１のプロセッサとは異なるプロセッサタイプの第２のプロセッサと、
前記第１のプロセッサおよび前記第２のプロセッサに結合されたプロセッサ間割込（ＩＰＩ）回路とを備え、前記ＩＰＩ回路は、
前記第１のプロセッサに関連付けられた第１のレジスタと、
前記第２のプロセッサに関連付けられた第２のレジスタとを含み、
前記第１のレジスタおよび前記第２のレジスタの各々は、
第１のビット位置を含み、前記第１のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第１のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第１のビット位置は、前記第１のレジスタと前記第２のレジスタとで同じビット位置であり、
前記第１のレジスタおよび前記第２のレジスタの各々は、
第２のビット位置を含み、前記第２のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第２のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第２のビット位置は、前記第１のレジスタと前記第２のレジスタとで同じビット位置である、システム。
【請求項２】
前記ＩＰＩ回路は、
前記第１のプロセッサに関連付けられた第３のレジスタと、
前記第２のプロセッサに関連付けられた第４のレジスタとをさらに含み、
前記第３のレジスタおよび前記第４のレジスタの各々は、
第３のビット位置を含み、前記第３のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第１のプロセッサにより割込されたか否かを表わすビットを格納するように構成されており、
前記第３のレジスタおよび前記第４のレジスタの各々は、
第４のビット位置を含み、前記第４のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第２のプロセッサにより割込されたか否かを表わすビットを格納するように構成されている、請求項１に記載のシステム。
【請求項３】
前記ＩＰＩ回路は、
前記第１のプロセッサに関連付けられた第５のレジスタと、
前記第２のプロセッサに関連付けられた第６のレジスタとをさらに含み、
前記第５のレジスタおよび前記第６のレジスタの各々は、
第５のビット位置を含み、前記第５のビット位置は、前記第５のレジスタまたは前記第６のレジスタのそれぞれが関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方に関連付けられる、前記第３のレジスタおよび前記第４のレジスタの各一方の前記第３のビット位置に格納されたビットをクリアすべきか否かを表わすビットを格納するように構成されており、
前記第５のレジスタおよび前記第６のレジスタの各々は、
第６のビット位置を含み、前記第６のビット位置は、前記第５のレジスタまたは前記第６のレジスタのそれぞれが関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方に関連付けられる、前記第３のレジスタおよび前記第４のレジスタの各一方の前記第４のビット位置に格納されたビットをクリアすべきか否かを表わすビットを格納するように構成されている、請求項２に記載のシステム。
【請求項４】
前記ＩＰＩ回路に結合された第３のプロセッサをさらに備え、
前記第１のレジスタおよび前記第２のレジスタの各々は、
第３のビット位置を含み、前記第３のビット位置は、それぞれのレジスタが関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第３のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されている、請求項１に記載のシステム。
【請求項５】
前記ＩＰＩ回路は論理ゲートを含み、前記論理ゲートは、前記第１のレジスタおよび前記第２のレジスタにおける、それぞれの前記第３のビット位置に格納されたそれぞれの前記ビットの間に論理和演算を適用して、前記第３のプロセッサに対する割込信号を生成する、請求項４に記載のシステム。
【請求項６】
１つ以上の追加のプロセッサをさらに備え、
前記第１のレジスタは１つ以上の追加のビットを含み、前記１つ以上の追加のビットは、前記１つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を前記第１のプロセッサが要求しているか否かを表わし、
前記第２のレジスタは１つ以上の追加のビットを含み、前記１つ以上の追加のビットは、前記１つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を前記第２のプロセッサが要求しているか否かを表わす、請求項１に記載のシステム。
【請求項７】
前記第１のレジスタにおける前記１つ以上の追加のビットの少なくとも一部と、前記第２のレジスタにおける前記１つ以上の追加のビットの少なくとも一部とを予備とする、請求項６に記載のシステム。
【請求項８】
前記第１のプロセッサはハードワイヤードプロセッサを含み、
前記第２のプロセッサは異なる物理回路を実現するように構成可能なプログラマブル回路を含む、請求項１に記載のシステム。
【請求項９】
前記第２のプロセッサは前記第１のプロセッサに直接割込することができず、
前記第１のプロセッサは前記第２のプロセッサに直接割込することができない、請求項１に記載のシステム。
【請求項１０】
前記ＩＰＩ回路は、
前記第１のレジスタの更新を許可する前に前記第１のプロセッサの識別子をチェックするように構成されるとともに、
前記第２のレジスタの更新を許可する前に前記第２のプロセッサの識別子をチェックするように構成されている、請求項１に記載のシステム。
【請求項１１】
前記ＩＰＩ回路は、インターコネクトを介して前記第１のプロセッサおよび前記第２のプロセッサに結合されている、請求項１に記載のシステム。
【請求項１２】
方法であって、
第１のプロセッサからの、第２のプロセッサに割込するという要求をプロセッサ間割込（ＩＰＩ）回路で受信するステップを含み、前記第２のプロセッサは前記第１のプロセッサとは異なるプロセッサタイプであり、
前記ＩＰＩ回路は、前記第１のプロセッサに関連付けられた第１のレジスタと、前記第２のプロセッサに関連付けられた第２のレジスタとを含み、
前記第１のレジスタおよび前記第２のレジスタの各々は、
第１のビット位置を含み、前記第１のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第１のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第１のビット位置は、前記第１のレジスタと前記第２のレジスタとで同じビット位置であり、
前記第１のレジスタおよび前記第２のレジスタの各々は、
第２のビット位置を含み、前記第２のビット位置は、それぞれのレジスタに関連付けられる前記第１のプロセッサおよび前記第２のプロセッサの各一方が前記第２のプロセッサに割込することを要求しているか否かを表わすビットを格納するように構成されており、前記第２のビット位置は、前記第１のレジスタと前記第２のレジスタとで同じビット位置であり、
前記方法はさらに、
前記受信された要求に基づき、前記第１のレジスタの前記第２のビット位置におけるビットを更新するステップと、
前記更新に基づき、前記ＩＰＩ回路から前記第２のプロセッサへ割込信号を送信するステップとを含む、方法。
【請求項１３】
前記ＩＰＩ回路により前記第１のプロセッサの識別子をチェックするステップと、
前記第１のプロセッサの前記識別子が正しい場合にのみ、前記第１のレジスタの前記第２のビット位置における前記ビットを更新するステップとをさらに含む、請求項１２に記載の方法。
【請求項１４】
いずれのプロセッサが前記第２のプロセッサに割込することを要求したかを識別せよという、前記第２のプロセッサからの要求を前記プロセッサ間割込（ＩＰＩ）回路で受信するステップと、
第３のレジスタの第３のビット位置におけるビットを、前記ＩＰＩ回路により読出すステップとをさらに含み、前記第３のレジスタは、前記第２のプロセッサに関連付けられ、前記第３のレジスタの前記第３のビット位置における前記ビットは、前記第２のプロセッサが前記第１のプロセッサにより割込されたことを表わす、請求項１２に記載の方法。
【請求項１５】
前記ＩＰＩ回路により、前記第３のレジスタの前記第３のビット位置における前記ビットに基づく指標を前記第２のプロセッサに送信するステップと、
前記ＩＰＩ回路により前記第２のプロセッサの識別子をチェックして、前記第２のプロセッサの前記識別子が正しい場合にのみ、前記第３のレジスタの前記第３のビット位置における前記ビットに基づく前記指標を送信するステップとをさらに含む、請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示の例は、概してプロセッサ割込に関し、より特定的には、ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込に関する。
【背景技術】
【０００２】
背景
集積回路（ＩＣ：integrated circuit）は、特定の機能を果たすように実現され得る。１つのタイプのＩＣは、ＦＰＧＡ（field programmable gate array）などのプログラマブルＩＣである。ＦＰＧＡは、典型的にはプログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入出力ブロック（ＩＯＢ：input/output block）、構成可能論理ブロック（ＣＬＢ：configurable logic block）、専用ランダムアクセスメモリブロック（ＢＲＡＭ：dedicated random access memory block）、乗算器、デジタル信号処理ブロック（ＤＳＰ：digital signal processing block）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ：delay lock loop）などを含み得る。
【０００３】
各プログラマブルタイルは、典型的には、プログラマブル・インターコネクト回路およびプログラマブル論理回路の両方を含む。プログラマブル・インターコネクト回路は、典型的には、プログラマブル・インターコネクト・ポイント（ＰＩＰ：programmable interconnect point）により相互接続された異なる長さの多数のインターコネクト線を含む。プログラマブル論理回路は、たとえば関数発生器、レジスタ、算術論理などを含み得るプログラマブル要素を用いてユーザ設計の論理を実現する。
【０００４】
プログラマブル・インターコネクト回路およびプログラマブル論理回路は、典型的には、プログラマブル素子をどのように構成するかを規定する内部構成メモリセルの中に構成データストリームをロードすることによりプログラミングされる。構成データは、メモリから（たとえば外部ＰＲＯＭから）読出されるか、または外部デバイスによりＦＰＧＡに書込まれ得る。個別のメモリセルの集合的な状態がＦＰＧＡの機能を決定する。
【０００５】
別のタイプのプログラマブルＩＣは、複合プログラマブル論理デバイス（complex programmable logic device）、すなわちＣＰＬＤである。ＣＰＬＤは２つ以上の「機能ブロック」を含み、これらの「機能ブロック」は、互いに接続されるとともに、インターコネクト・スイッチマトリックスにより入力／出力（Ｉ／Ｏ）リソースに接続されている。ＣＰＬＤの各機能ブロックは、プログラマブル論理アレイ（ＰＬＡ：programmable logic array）およびプログラマブルアレイ論理（ＰＡＬ：programmable array logic）デバイスで使用されるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤでは、構成データは、典型的には不揮発性メモリにおいてチップ上に格納される。いくつかのＣＰＬＤでは、構成データは不揮発性メモリにおいてチップ上に格納され、その後、初期構成（プログラミング）シーケンスの一環として揮発性メモリにダウンロードされる。
【０００６】
これらのプログラマブルＩＣのすべてについて、デバイスの機能性は、その目的のためにデバイスに提供されるデータビットにより制御される。データビットは、揮発性メモリ（たとえば、ＦＰＧＡおよびいくつかのＣＰＬＤにおけるようなスタティックメモリセル）、不揮発性メモリ（たとえば、いくつかのＣＰＬＤにおけるようなＦＬＡＳＨメモリ）、または他の任意のタイプのメモリセルに格納され得る。
【０００７】
他のプログラマブルＩＣは、デバイス上のさまざまな素子をプログラマブルに相互接続する、金属層などの処理層を適用することにより、プログラミングされる。これらのプログラマブルＩＣは、マスクプログラマブルデバイスとして公知である。プログラマブルＩＣは、他のやり方で、たとえばヒューズまたはアンチヒューズ技術を使用して実現することもできる。「プログラマブルＩＣ」という用語は、これらのデバイスを含み得るが、これらに限定されず、たとえば特定用途向け集積回路（ＡＳＩＣ：application specific integrated circuit）を含む、部分的にのみプログラマブルなデバイスもさらに包含し得る。たとえば、別のタイプのプログラマブルＩＣは、ハードコード化されたトランジスタ論理と、ハードコード化されたトランジスタ論理をプログラマブルに相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【０００８】
上述したさまざまなＩＣのうちいくつかを含むいくつかの近頃のＩＣは、プログラムコードを実行可能な組込プロセッサを含む。プロセッサは、プログラマブル論理回路およびプログラマブル・インターコネクト回路（まとめてＩＣの「プログラマブル回路」とも称される）を含む同じダイの一部として作製され得る。プロセッサ内でのプログラムコードの実行は、ＩＣ上で利用可能であり得るプログラマブル回路を「プログラミングすること」または「構成すること」から区別されることを理解すべきである。ＩＣのプログラマブル回路をプログラミングまたは構成するという行為の結果、プログラマブル回路内の構成データによって特定されるような異なる物理回路が実現される。
【発明の概要】
【課題を解決するための手段】
【０００９】
概要
本開示の例は、概して、ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込の管理に関する。
【００１０】
本開示の１つの例は、システムである。このシステムは、概して、第１のプロセッサと、第１のプロセッサとは異なるプロセッサタイプの第２のプロセッサと、第１のプロセッサおよび第２のプロセッサに結合されたプロセッサ間割込（ＩＰＩ）回路とを備える。ＩＰＩ回路は、典型的には、第１のプロセッサに関連付けられた第１のレジスタを含み、第１のレジスタにおける第１のビットは、第１のプロセッサが第２のプロセッサに割込することを要求しているか否かを表わす。ＩＰＩ回路はさらに、第２のプロセッサに関連付けられた第２のレジスタを含み、第２のレジスタにおける第２のビットは、第２のプロセッサが第１のプロセッサに割込することを要求しているか否かを表わす。
【００１１】
本開示の別の例は、集積回路（ＩＣ）である。このＩＣは、概して、１つ以上のハードワイヤードプロセッサを有する処理システム（ＰＳ）部と、物理的に構成可能な回路を含む１つ以上のソフトプロセッサを有するプログラマブル論理（ＰＬ）部と、１つ以上のプロセッサ間割込（ＩＰＩ）回路とを備える。各ＩＰＩ回路は、典型的には、異なるプロセッサ間の１つ以上の割込信号を生成するように構成され、割込信号のうち少なくとも１つが、ＰＳ部におけるハードワイヤードプロセッサのうちの１つと、ＰＬ部におけるソフトプロセッサのうちの１つとの間のものである。
【００１２】
本開示のさらに別の例は、ＩＰＩを処理するための方法である。この方法は、概して、第１のプロセッサからの、第２のプロセッサに割込するという要求をＩＰＩ回路で受信するステップを含む。第２のプロセッサは第１のプロセッサとは異なるプロセッサタイプである。上記方法はさらに、受信された要求に基づき、第１のプロセッサに関連付けられた第１のレジスタにおける第１のビットを更新するステップを含む。第１のビットは、第１のプロセッサが第２のプロセッサに割込することを要求していることを表わす。上記方法はさらに、上記更新に基づき、ＩＰＩ回路から第２のプロセッサへ割込信号を送信するステップを含む。
【００１３】
上述した本開示の特徴を詳細に理解できるような態様で、上で概要を述べた実現例のより特定的な説明が、例を参照することにより得られるであろう。これらの例のうちいくつかは添付図面中に示される。しかしながら、添付図面は本開示の典型例を示すに過ぎず、したがって、その範囲を限定するものとして考慮すべきではないことに留意されたい。その理由は、本開示は他の同等に効果的な例を含む余地があるからである。
【図面の簡単な説明】
【００１４】
【図１Ａ】本開示の例に係るヘテロジニアスマルチプロセッサシステムの例を示す図である。
【図１Ｂ】本開示の例に係る、インターコネクトを用いた、図１Ａのヘテロジニアスマルチプロセッサシステムの例を示す図である。
【図２】本開示の例に係る、図１Ａおよび図１Ｂのシステムにおけるプロセッサ間割込（ＩＰＩ）コントローラにおけるレジスタの例を示す図である。
【図３】本開示の例に係る、図２のレジスタの内容に基づいて割込を発生させるための、ＩＰＩコントローラにおける論理の例を示す図である。
【図４】本開示の例に係る、ハードワイヤード処理システム（ＰＳ：processing system）と、異なる物理回路を実現するように構成可能なプログラマブル論理（ＰＬ：programmable logic）とを有する集積回路（ＩＣ）の例を示す図である。
【図５】本開示の例に係る、図４のシステムにおけるＩＰＩコントローラのうちの１つにおけるレジスタの例を示す図である。
【図６】本開示の例に係る、図５のレジスタの内容に基づいて割込を発生させるための、ＩＰＩコントローラのうちの１つにおける論理の例を示す図である。
【図７】本開示の例に係る、ヘテロジニアスマルチプロセッサシステムにおける割込を処理するための動作例のフロー図である。
【発明を実施するための形態】
【００１５】
詳細な説明
本開示の例は、ヘテロジニアスマルチプロセッサシステムにおいてプロセッサ間割込を処理するための技術および装置を提供する。このシステムにおいて、プロセッサのうち少なくともいくつかは異なる性質のものであり、互いに直接割込することができない場合もある。本明細書で説明されるプロセッサ間割込（ＩＰＩ）メカニズムは、さまざまなプロセッサ間のＩＰＩインターフェイスとしてのＩＰＩコントローラを提供する。ＩＰＩコントローラは、ＩＰＩソース毎のトリガレジスタと、ＩＰＩ宛先毎の状態レジスタと、ＩＰＩ宛先毎のクリアレジスタとを含み、これらのレジスタはシステムにおけるプロセッサの数に応じてスケール変更される。このスケーラブルＩＰＩメカニズムにより、アプリケーションプロセッサ、リアルタイムプロセッサ、およびＦＰＧＡ（field programmable gate array）アクセラレータなどの多様なプロセッサが、割込を介して互いに通信することが可能になる。ＩＰＩメカニズムは、論理領域およびプログラマブルな複雑さの両方の観点から低コストでもある。
【００１６】
包括的なヘテロジニアスマルチプロセッサシステムにおけるＩＰＩメカニズムの例
複数のプロセッサを含むシステムでは、さまざまなプロセッサが互いに割込することが望ましいであろう。ＩＰＩメカニズムは、典型的には、たとえばキャッシュコヒーレンシ同期点、通信チャネル、またはメールボックスを実現するために用いられる。しかしながら、マルチプロセッサシステムは、同期のための内蔵された特徴を有さず互いに直接割込することができない、異なる性質のさまざまなプロセッサを含む場合がある。本明細書で用いられる「直接割込する」という表現は、概して、中間物を介さずに１つのプロセッサが別のプロセッサに割込可能である（たとえば、１つのプロセッサから別のプロセッサへ割込信号を送信することにより割込可能である）ことを指す。
【００１７】
図１Ａは、本開示の例に係るヘテロジニアスマルチプロセッサシステム１００の例を示す。本明細書で用いられるヘテロジニアスマルチプロセッサシステムは、概して、複数のプロセッサのうちの少なくとも２つが異なるプロセッサタイプである（たとえば、異なる種類または性質である）ような複数のプロセッサを含む処理システムを指す。あるいくつかの場合には、ヘテロジニアスマルチプロセッサシステムは、複数のプロセッサのうち少なくとも２つが（プロセッサタイプが同一であろうと異なるものであろうと）異なるプロセッサクラスタにあるような、複数のプロセッサを含む処理システムも指し得る。例として、システム１００は３つの異なる処理ユニット１０２、１０４、１０６を含む。すなわち、プロセッサタイプＡである処理ユニット０、プロセッサタイプＢである処理ユニット１、およびプロセッサタイプＣである処理ユニット２である。これらのヘテロジニアス処理ユニットが互いに割込するために、ＩＰＩコントローラ１０８が処理ユニット１０２、１０４、１０６の各々に接続されている。その結果、たとえば処理ユニット０が処理ユニット１または処理ユニット２に割込可能である。後述するように、ＩＰＩコントローラ１０８は、レジスタ１１０と、レジスタ内容を処理するための論理１１２とを含み得る。
【００１８】
図２および図３は、ＩＰＩコントローラ１０８の実現例を示す。本明細書で用いられるＩＰＩの用語に関して、割込するプロセッサは、ソース、ソースプロセッサ、またはＩＰＩソースと称され、割込されるプロセッサは、宛先、宛先プロセッサ、またはＩＰＩ宛先と称される。処理ユニット１０２、１０４、１０６のうちいずれも、ソースまたは宛先として機能し得る。本明細書で説明されるＩＰＩメカニズムはモジュール方式で設計されてもよい。これにより、メカニズムが将来容易に拡張可能になる。最も小さいモジュールユニットは「セット」と呼ばれ、ＩＰＩソース１つにつき（または、レジスタのタイプによってはＩＰＩ宛先１つにつき）１つのレジスタを含む。図１Ａのシステム１００の例では、１セットは３つのレジスタを含む。
【００１９】
図２は、本開示の例に係る、ＩＰＩコントローラ１０８におけるレジスタの例を示す。ＩＰＩコントローラ１０８は、１セットの３つのトリガレジスタ２０２０〜２０２２（まとめて「レジスタ２０２」または「トリガレジスタ２０２」）と、１セットの３つの状態レジスタ２０４０〜２０４２（まとめて「レジスタ２０４」または「状態レジスタ２０４」）と、１セットの３つのクリアレジスタ２０６０〜２０６２（まとめて「レジスタ２０６」または「クリアレジスタ２０６」）とを含む。レジスタ２０２、２０４、および２０６は、少なくとも、マルチプロセッサシステム１００における可能性のある宛先（またはソース）の数をカバーするのに十分なビットを有し、（もしあれば）残りのビットは将来的な拡張のための予備としてもよい。たとえば、トリガレジスタ２０２、状態レジスタ２０４、およびクリアレジスタ２０６は８ビットレジスタであってもよく、５最上位ビット（ＭＳＢ：most significant bit）を予備とし、３最下位ビット（ＬＳＢ：least significant bit）をマルチプロセッサシステム１００における処理ユニットに関連付けてもよい。
【００２０】
ＩＰＩコントローラ１０８は、トリガレジスタ２０２のうち特定の１つに関連付けられたソースのみに、そのレジスタへのアクセスを許可してもよい。たとえばＩＰＩコントローラ１０８は、処理ユニット１のみに、トリガレジスタ２０２１へのアクセスを許可してもよい。他の如何なるソースによってアクセスされた場合にも、アドレス復号エラーが発生し得る。この態様では、ＩＰＩコントローラ１０８がさまざまなレジスタへのアクセスを制御することにより、保護メカニズムを提供する。１セット中の３つすべてのトリガレジスタ２０２は、各ＩＰＩ宛先に１ビット、全部で３ビット（たとえば３ＬＳＢ）割当てる同一フォーマットを有する。これらのビットのうちいずれかに論理「１」を書込むことにより、トリガレジスタ２０２のうち特定の１つに関連付けられたソースは、そのビットによって表わされた宛先において割込を発生させ得る。たとえば、処理ユニット１が処理ユニット２に割込することを要求していることを表わすために、ＩＰＩコントローラ１０８は、処理ユニット１に、トリガレジスタ２０２１のＩＰＩ宛先ビット２に対して論理「１」を書込ませる。ＩＰＩソースは、その関連付けられたトリガレジスタから読出しを行ない、そのトリガの状態を得てもよい（たとえば、処理ユニット１はトリガレジスタ２０２１から読出しを行ない、そのトリガの状態を得てもよい）。
【００２１】
特定のＩＰＩ宛先について割込を発生させるために、１セット中のトリガレジスタ２０２毎の特定のＩＰＩ宛先ビットは、ＩＰＩコントローラ１０８において論理的に合算され得る（たとえば、論理１１２のＯＲゲート３０２により論理和演算されるか、または排他的論理和演算され得る）。図３に示すような他の例では、ＯＲゲート３０２（または他の論理ゲート）は、１セット中のトリガレジスタ２０２毎の特定のＩＰＩ宛先ビットを論理和演算（または他の方法で合算）してもよい。ただし、割込されるべき当該特定のＩＰＩ宛先と同じ処理ユニットであるＩＰＩソースに関連付けられた特定のトリガレジスタを除く（たとえば、所与の処理ユニットがＩＰＩコントローラ１０８を介して自分自身に割込しない場合）。たとえば、処理ユニット０に関連付けられたトリガレジスタ２０２０のビット１が論理「１」である場合、または、処理ユニット２に関連付けられたトリガレジスタ２０２２のビット１が論理「１」である場合、ＩＰＩコントローラ１０８は処理ユニット１に関して割込を発生させてもよい。ＩＰＩコントローラ１０８における論理１１２は、同様に構成されたＯＲゲート（または他の論理ゲート）を可能性のあるＩＰＩ宛先毎に含んでもよく、このＩＰＩコントローラ１０８の例では全部で３つの別々の割込―発生ＯＲゲートを含んでもよい。ＩＰＩコントローラ１０８における論理１１２は、他の処理ユニット（たとえば、処理ユニット０および処理ユニット２）に関して同様の論理構成を含んでもよい。
【００２２】
図２に戻ると、宛先プロセッサが割込されたとき、当該宛先プロセッサは、その宛先に割当てられた読出し専用状態レジスタ２０４のうちの関連付けられた１つから読出しを行ない、いずれのＩＰＩソースが当該割込に寄与したかを判断し得る。たとえば処理ユニット２は、割込された後、状態レジスタ２０４２のビット１を読出して、処理ユニット１が当該割込に関与したと判断し得る。１セット中の３つすべての状態レジスタ２０４は、各ＩＰＩソースに１ビット、全部で３ビット（たとえば、３ＬＳＢ）割当てる同一のフォーマットを有する。書込み専用のクリアレジスタ２０６のうち同様の１つを用いて、状態レジスタ２０４のうち対応する１つにおけるＩＰＩソースからの要求をクリアする。論理「１」が所与のクリアレジスタ２０６におけるいずれかのビットに対して書込まれた場合、そのソースに関連付けられた割込の要求がクリアされる。この場合、論理「０」を書込んでも何の影響も及ぼさない。１セット中には、各ＩＰＩ宛先に関連付けられた個別の状態レジスタ２０４と個別のクリアレジスタ２０６とがある。同じ宛先に関連付けられた状態レジスタおよびクリアレジスタは、同じアドレスにマッピングされる。状態レジスタにもクリアレジスタにも関連付けられていない如何なるＩＰＩ宛先によってアクセスされた場合にも、アドレス復号エラーが発生し得る。
【００２３】
いくつかの例では、トリガレジスタ２０２は状態レジスタ２０４に直接書込みし得る。この場合、図２に示すように、実際の格納はトリガレジスタ２０２においてではなく、状態レジスタ２０４において行なわれ得る。この場合、トリガレジスタ２０２からのビットの代わりに、状態レジスタ２０４の対応するビットがＩＰＩコントローラ１０８において論理的に合算（たとえば論理和演算）されることで割込が発生し得る。
【００２４】
図１Ａはヘテロジニアスマルチプロセッサシステムの論理の実現例を示すことを意図しているが、いくつかの例では、さまざまな処理ユニット１０２、１０４、１０６が別々の専用ポートを介してＩＰＩコントローラ１０８に接続されてもよい。図１Ｂのヘテロジニアスマルチプロセッサシステム１５０の例で示すような他の例では、さまざまな処理ユニット１０２、１０４、１０６とＩＰＩコントローラ１０８との間のアクセスが、別々のポートを介してではなく、インターコネクト１５２（たとえばバス）を介して行なわれ得る。インターコネクト１５２から入ってくる共有ポートを用いるために、ＩＰＩコントローラ１０８はソース識別子（ＩＤ：identifier）または宛先ＩＤをチェックし、いずれのＩＰＩソースまたはＩＰＩ宛先がさまざまなレジスタ２０２、２０４、２０６にアクセスしようとしているかを判断し得る。ＩＰＩソースＩＤまたはＩＰＩ宛先ＩＤをチェックすることにより、ＩＰＩコントローラ１０８は、特定のＩＰＩソースを当該ＩＰＩソースに関連付けられたレジスタのみへのアクセスに制限し、このＩＰＩソースが他のレジスタにアクセスすることを防止し得る。この制限されたアクセスにより、上述した保護メカニズムが提供される。
【００２５】
ハードワイヤードプロセッサおよびソフトプロセッサを有するＩＣにおけるＩＰＩメカニズムの例
２０１１年２月２８日に出願され、「プログラマブル回路と組込プロセッサシステムとを含む集積回路（Integrated Circuit with Programmable Circuitry and an Embedded Processor System）」と題された米国特許第８，６６７，１９２号（Allaire等）に記載されるように、集積回路（ＩＣ）は組込プロセッサシステムとプログラマブル回路とを含み得る。プロセッサシステムは、プログラムコードを実行するように構成されており、ハードワイヤードであってもよく、プロセッサハードウェアリソースを含んでもよい。プログラマブル回路は、異なる物理回路を実現するように構成可能であるとともに、プロセッサシステムに結合され得る。プログラマブル回路は、プロセッサシステムのプロセッサハードウェアリソースの使用を共有するように構成可能であり得る。プロセッサシステムは、電源オンおよび／またはオフなどの、プログラマブル回路の局面を制御し得るとともに、プログラマブル回路における１つ以上の異なる物理回路を実現するための、プログラマブル回路の構成を制御し得る。組込プロセッサシステムにおけるハードワイヤードプロセッサと、プログラマブル回路におけるソフトプロセッサとの両方により、上記ＩＣはヘテロジニアスマルチプロセッサシステムとして認められるとともに、本明細書で説明するＩＰＩメカニズムを実現し得る。
【００２６】
図４は、本開示の例に係る、ハードワイヤード処理システム（ＰＳ）４０２と、異なる物理回路を実現するように構成可能なプログラマブル論理（ＰＬ）４０４とを有するＩＣ４００の例を示す。ＰＳ４０２は、特定用途向け集積回路（ＡＳＩＣ）部とも称されるが、アプリケーションおよび処理ユニット（ＡＰＵ：Application and Processing Unit）サブシステムにおける４つのプロセッサ４０６０〜４０６３（ＡＰＵ＿０、ＡＰＵ＿１、ＡＰＵ＿２、およびＡＰＵ＿３、まとめて「ＡＰＵプロセッサ４０６」と呼ぶ）と、リアルタイム処理ユニット（ＲＰＵ：Real-time Processing Unit）サブシステムにおける２つのプロセッサ４０８０および４０８１（ＲＰＵ＿０およびＲＰＵ＿１、まとめて「ＲＰＵプロセッサ４０８」と呼ぶ）と、１つのパワーマネージメントユニット（ＰＭＵ：Power Management Unit）プロセッサ４１０と、１つの構成およびセキュリティユニット（ＣＳＵ：Configuration and Security Unit）プロセッサ４１２とを含み得る。ＰＬ４０４はＦＰＧＡ部としても公知であり、４つのソフトプロセッサ４１４１〜４１４３（ＰＬ＿０、ＰＬ＿１、ＰＬ＿２、およびＰＬ＿３、まとめて「ソフトプロセッサ４１４」と呼ぶ）を含み得る。ＡＰＵサブシステムにおけるＡＰＵプロセッサ４０６と、ＲＰＵサブシステムにおけるＲＰＵプロセッサ４０８と、ＰＭＵプロセッサ４１０と、ＣＳＵプロセッサ４１２と、ソフトプロセッサ４１４とは、明確に異なるプロセッサタイプである。中間物を介さずに、特定のサブシステムにおける（または、あるプロセッサタイプの）プロセッサは、異なるサブシステムにおける（または、異なるプロセッサタイプの）プロセッサに割込することができない場合がある。
【００２７】
これらのヘテロジニアスプロセッサが互いに割込するために、ＩＰＩコントローラ４１６０は、プロセッサ４０６、４０８、４１０、４１２、４１４の各々に接続されている。その結果、たとえばＰＬ＿２がＡＰＵ＿３に割込可能となる。図示のように、ＩＰＩコントローラ４１６０はＰＳ４０２内に置かれてもよい。いくつかの例では、さまざまなプロセッサ４０６、４０８、４１０、４１２、４１４とＩＰＩコントローラ４１６０との間のアクセスは、別々の線を介してではなく、バスを介して行なわれ得る。
【００２８】
いくつかの例では、異なる割込タイプまたは割込「クラス（class）」が作成されてもよく、ＩＣは割込クラス１つにつき１つのＩＰＩコントローラを含んでもよい。割込クラスは、たとえば優先度または排他性に従って区別され得る。このように、同一グループのプロセッサに対して、２つ以上のＩＰＩコントローラが例示され得る。たとえば、クラスは、リナックス（登録商標）・ベース（Linux-based）の割込クラスまたはパワー関連割込クラスを含み得る。図４のＩＣ４００の例では４つの異なる割込クラスがあるため、このＩＣは４つの異なるＩＰＩコントローラ４１６０〜４１６３（ＩＰＩ＿０、ＩＰＩ＿１、ＩＰＩ＿２、およびＩＰＩ＿３、まとめて「ＩＰＩコントローラ４１６」と呼ぶ）を含む。（図５および図６に示されるような）ＩＰＩコントローラ４１６０の実現例は、各ＩＰＩコントローラにおいて複製され得る。
【００２９】
図５および図６はＩＰＩコントローラ４１６０の実現例を示す。上述したように、割込するプロセッサはＩＰＩソースと称され、割込されるプロセッサはＩＰＩ宛先と称される。プロセッサ４０６、４０８、４１０、４１２、４１４のうちいずれも、ソースまたは宛先として機能し得る。本明細書で説明するＩＰＩメカニズムはモジュール方式で設計されたものである。これにより、将来的なＩＣ４００の型においてメカニズムが容易に拡張可能になるとともに、メカニズムが現行のＩＣの型とのコード互換性を保つことが可能になる。最も小さいモジュールユニットは「セット」と呼ばれ、ＩＰＩソース１つにつき（またはＩＰＩ宛先１つにつき）１つのレジスタを含む。図４のＩＣ４００の例では、１セットが１２個のレジスタを含む。
【００３０】
図５は、本開示の例に係るＩＰＩコントローラ４１６０におけるレジスタの例を示す。ＩＰＩコントローラ４１６０は、１セットの１２個のトリガレジスタ５０２と、１セットの１２個の状態レジスタ５０４と、１セットの１２個のクリアレジスタ５０６とを含む。レジスタ５０２、５０４、および５０６は、少なくとも、ＩＣ４００における可能性のある宛先（またはソース）の数をカバーするのに十分なビットを有し、（もしあれば）残りのビットは将来的な拡張のための予備としてもよい。たとえば、トリガレジスタ５０２、状態レジスタ５０４、およびクリアレジスタ５０６は３２ビットレジスタであってもよく、２０最上位ビット（ＭＳＢ）１２〜３１を予備としてもよい。
【００３１】
ＩＰＩコントローラ４１６０は、トリガレジスタ５０２のうち特定の１つに関連付けられたＩＰＩソースのみに、そのレジスタへのアクセスを許可してもよい。たとえばＩＰＩコントローラ４１６０は、ＰＬ＿３のみに、トリガレジスタ５０２１１へのアクセスを許可してもよい。他の如何なるソースによってアクセスされた場合にも、アドレス復号エラーが発生し得る。１セット中の１２個すべてのトリガレジスタ５０２は、各ＩＰＩ宛先に１ビット、全部で１２ビット（たとえばＬＳＢ０〜１１）割当てる同一フォーマットを有する。トリガレジスタ５０２のうち特定の１つにおいて、これらのビットのうちいずれかに論理「１」を書込むことにより、関連付けられたソースは、そのビットによって表わされた宛先において割込を発生させ得る。たとえば、ＰＬ＿１をＡＰＵ_３に割込させるために、ＩＰＩコントローラ４１６０は、ＰＬ＿１に、トリガレジスタ５０２９のＩＰＩ宛先ビット５に対して論理「１」を書込ませ得る。トリガレジスタ５０２が、そのレジスタに関連付けられたＩＰＩソースにより読出された場合、当該ソースは、そのトリガの状態を逆に読出し（read back）てもよい。
【００３２】
図６に示すように、特定のＩＰＩ宛先について割込を発生させるために、１セット中のトリガレジスタ５０２毎の特定のＩＰＩ宛先ビットは、ＩＰＩコントローラ４１６０のＯＲゲート６０２により論理和演算され得る。たとえば、ＰＬ＿１に関連付けられたトリガレジスタ５０２９のビット５が論理「１」である場合、または、ＲＰＵ_０に関連付けられたトリガレジスタ５０２０のビット５が論理「１」である場合、ＡＰＵ_３に関して割込が発生し得る。ＩＰＩコントローラ４１６０は、同様に構成されたＯＲゲートを可能性のあるＩＰＩ宛先毎に含んでもよく、このＩＰＩコントローラ４１６０の例では全部で１２個の別々の割込―発生ＯＲゲートを含んでもよい。ＩＰＩコントローラ４１６０は、他の処理ユニットに関して同様の論理構成を含んでもよい。
【００３３】
図５に戻ると、宛先プロセッサが割込されたとき、当該宛先プロセッサは、その宛先に割当てられた読出し専用状態レジスタ５０４のうちの関連付けられた１つから読出しを行ない、いずれのＩＰＩソースが当該割込に寄与したかを判断し得る。たとえば、ＡＰＵ_３は、割込された後、それに関連付けられた状態レジスタ５０４５のビット９を読出して、ＰＬ＿１が当該割込に関与したと判断し得る。１セット中の１２個すべての状態レジスタ５０４は、各ＩＰＩソースに１ビット、全部で１２ビット（たとえば、１２ＬＳＢ）割当てる同一のフォーマットを有する。同様の書込み専用のクリアレジスタ５０６（たとえば、ＡＰＵ_３に関する５０６５）を用いて、対応する状態レジスタ５０４（ＡＰＵ_３に関する５０４５）におけるＩＰＩソースからの要求をクリアする。論理「１」がクリアレジスタ５０６のうち特定の１つにおけるいずれかのビットに対して書込まれた場合、そのソースに関連付けられた割込の要求がクリアされる。この場合、論理「０」を書込んでも何の影響も及ぼさない。１セット中には、各ＩＰＩ宛先に関連付けられた個別の状態レジスタ５０４と個別のクリアレジスタ５０６とがある。同じ宛先に関連付けられた状態レジスタおよびクリアレジスタは、同じアドレスにマッピングされる。状態レジスタにもクリアレジスタにも関連付けられていない如何なるＩＰＩ宛先によってアクセスされた場合にも、アドレス復号エラーが発生し得る。
【００３４】
いくつかの例によれば、ＩＣ４００はペイロードレジスタも含み得る。ペイロードレジスタは、ＩＣ４００のメモリ内に保持されてもよいし、またはＩＰＩコントローラ内に置かれてもよい。メモリ内に格納される場合、ペイロードレジスタはメモリマップにおける固定アドレスを有し得る。ペイロードレジスタは、１セットの汎用レジスタであり得る。いくつかの例では、ＩＰＩコントローラ４１６の各々は、関連付けられたペイロードレジスタを有し得る。ペイロードレジスタは、１つのプロセッサが別のプロセッサに（たとえばＩＰＩコントローラを介して）割込する場合に読出されるデータを格納し得る。いくつかの例では、このデータは、ＩＰＩコントローラからの割込信号受信時に何をすべきかを特定のプロセッサに指示し得る。
【００３５】
トリガレジスタ、状態レジスタ、およびクリアレジスタに関する保護メカニズムと同様に、ペイロードレジスタへのアクセスもソースＩＤ（または宛先ＩＤ）の使用によって制限され得る。このメカニズムは、あるペイロードレジスタへの書込みを特定のＩＰＩソースのみに許可し得るとともに、特定のペイロードレジスタの読出しを特定のＩＰＩ宛先のみに許可し得る。
【００３６】
ＩＰＩ動作の例
図７は、ヘテロジニアスマルチプロセッサシステムにおける割込を処理するための動作７００の例のフロー図である。動作７００は、ＩＰＩコントローラ１０８、またはＩＰＩコントローラ４１６のうちの１つなどの、ＩＰＩ回路により行なわれ得る。
【００３７】
７０２において、第１のプロセッサからの、第２のプロセッサに割込するという要求をＩＰＩ回路が受信することで、動作７００は開始し得る。第２のプロセッサは第１のプロセッサとは異なるプロセッサタイプである。
【００３８】
７０４において、ＩＰＩ回路は、７０２で受信された要求に基づき、第１のプロセッサに関連付けられた第１のレジスタにおける第１のビットを更新し得る。第１のビットは、第１のプロセッサが第２のプロセッサに割込することを要求していることを表わす。たとえば、第１のレジスタはＩＰＩ回路内に置かれてもよく、トリガレジスタであってもよい。第１のビットを更新することは、論理「１」を第１のビットに書込むことを含んでもよい。
【００３９】
７０６において、ＩＰＩ回路は、７０４における更新に基づき、第２のプロセッサへ割込信号を送信し得る。
【００４０】
いくつかの例によれば、ＩＰＩ回路は、第１のプロセッサの識別子をチェックして、第１のプロセッサの識別子が正しい場合にのみ、第１のビットを更新し得る。
【００４１】
いくつかの例によれば、動作７００は、いずれのプロセッサが第２のプロセッサに割込することを要求したかを判断せよという、第２のプロセッサからの要求をＩＰＩ回路が受信することをさらに含んでもよい。この場合、ＩＰＩ回路は、第２のプロセッサに関連付けられた第２のレジスタにおける第２のビットを読出し得る。第２のビットは、
第２のプロセッサが第１のプロセッサにより割込されたことを表わす。たとえば、第２のレジスタはＩＰＩ回路内に置かれてもよく、状態レジスタであってもよい。第２のプロセッサからの要求を受信した後、ＩＰＩ回路は、第２のビットに基づく指標（indication）を第２のプロセッサに送信し得る。いくつかの例では、ＩＰＩ回路は、第２のプロセッサの識別子をチェックして、第２のプロセッサの識別子が正しい場合にのみ、第２のビットに基づく指標を送信し得る。
【００４２】
ヘテロジニアスマルチプロセッサシステムにおけるプロセッサ間割込のためのメカニズムを説明してきた。１つの例では、上記システムは、概して、第１のプロセッサと、第１のプロセッサとは異なるプロセッサタイプの第２のプロセッサと、第１のプロセッサおよび第２のプロセッサに結合されたプロセッサ間割込（ＩＰＩ）回路とを備える。ＩＰＩ回路は、典型的には、第１のプロセッサに関連付けられた第１のレジスタを含み、第１のレジスタにおける第１のビットは、第１のプロセッサが第２のプロセッサに割込することを要求しているか否かを表わす。ＩＰＩ回路はさらに、第２のプロセッサに関連付けられた第２のレジスタを含み、第２のレジスタにおける第２のビットは、第２のプロセッサが第１のプロセッサに割込することを要求しているか否かを表わす。
【００４３】
いくつかの例によれば、ＩＰＩ回路は、第１のプロセッサに関連付けられた第３のレジスタをさらに含み、第３のレジスタにおける第３のビットは、第１のプロセッサが第２のプロセッサにより割込されたか否かを表わす。ＩＰＩ回路はさらに、第２のプロセッサに関連付けられた第４のレジスタを含み、第４のレジスタにおける第４のビットは、第２のプロセッサが第１のプロセッサにより割込されたか否かを表わす。いくつかの例では、ＩＰＩ回路は、第１のプロセッサに関連付けられた第５のレジスタをさらに含み、第５のレジスタにおける第５のビットは、第３のレジスタにおける第３のビットをクリアすべきか否かを表わす。ＩＰＩ回路はさらに、第２のプロセッサに関連付けられた第６のレジスタを含み、第６のレジスタにおける第６のビットは、第４のレジスタにおける第４のビットをクリアすべきか否かを表わす。
【００４４】
いくつかの例によれば、上記システムは、ＩＰＩ回路に結合された第３のプロセッサをさらに備え、第１のレジスタにおける第３のビットは、第１のプロセッサが第３のプロセッサに割込することを要求しているか否かを表わし、第２のレジスタにおける第４のビットは、第２のプロセッサが第３のプロセッサに割込することを要求しているか否かを表わす。第３のプロセッサは、第１のプロセッサと同じプロセッサタイプであってもよい。いくつかの例では、ＩＰＩ回路は論理ゲートを含み、この論理ゲートは、第１のレジスタにおける第３のビットと、第２のレジスタにおける第４のビットとの間に論理和演算を適用して、第３のプロセッサに対する割込信号を生成する。
【００４５】
いくつかの例によれば、上記システムは、１つ以上の追加のプロセッサをさらに備える。第１のレジスタは１つ以上の追加のビットを含み、当該１つ以上の追加のビットは、上記１つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を第１のプロセッサが要求しているか否かを表わす。この場合、第２のレジスタは１つ以上の追加のビットを含んでもよく、当該１つ以上の追加のビットは、上記１つ以上の追加のプロセッサに割込するための、対応する割込信号の生成を第２のプロセッサが要求しているか否かを表わす。いくつかの例では、第１のレジスタにおける上記１つ以上の追加のビットの少なくとも一部と、第２のレジスタにおける上記１つ以上の追加のビットの少なくとも一部とを（たとえば、現在はシステム内に存在しない１つ以上のプロセッサへの割込みに備えて）予備とする。
【００４６】
いくつかの例によれば、上記システムは、第１のプロセッサと、第２のプロセッサと、ＩＰＩ回路とを含む集積回路（ＩＣ）をさらに備える。いくつかの例では、ＩＣは、処理システム（ＰＳ）部とプログラマブル論理（ＰＬ）部とを含む。この場合、第１のプロセッサはＰＳ部内に置かれてもよく、第２のプロセッサはＰＬ部内に配置されてもよい。
【００４７】
いくつかの例によれば、第１のプロセッサはハードワイヤードプロセッサであり、第２のプロセッサは、異なる物理回路（たとえば、ソフトプロセッサ）を実現するように構成可能なプログラマブル回路を含む。
【００４８】
いくつかの例によれば、第２のプロセッサは第１のプロセッサに直接割込することができず、第１のプロセッサは第２のプロセッサに直接割込することができない。
【００４９】
いくつかの例によれば、ＩＰＩ回路は、第１のレジスタの更新を許可する前に第１のプロセッサの識別子をチェックするように構成されるとともに、第２のレジスタの更新を許可する前に第２のプロセッサの識別子をチェックするように構成されている。
【００５０】
いくつかの例によれば、ＩＰＩ回路は、インターコネクトを介して第１のプロセッサおよび第２のプロセッサに結合されている。
【００５１】
本発明の別の例は、集積回路（ＩＣ）である。このＩＣは、概して、１つ以上のハードワイヤードプロセッサを有する処理システム（ＰＳ）部と、物理的に構成可能な回路を含む１つ以上のソフトプロセッサを有するプログラマブル論理（ＰＬ）部と、１つ以上のプロセッサ間割込（ＩＰＩ）回路とを備える。各ＩＰＩ回路は、典型的には、異なるプロセッサ間の１つ以上の割込信号を生成するように構成され、割込信号のうち少なくとも１つが、ＰＳ部におけるハードワイヤードプロセッサのうちの１つと、ＰＬ部におけるソフトプロセッサのうちの１つとの間のものである。
【００５２】
いくつかの例によれば、各ＩＰＩ回路は第１のセットのレジスタを含む。第１のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第１のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第１のセット中の特定のレジスタにおいて、各ビットは、上記特定のプロセッサが、ハードワイヤードプロセッサおよびソフトプロセッサのうち異なる１つに割込することを要求しているか否かを表わす。
【００５３】
いくつかの例では、各ＩＰＩ回路は第２のセットのレジスタを含む。第２のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第２のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第２のセット中の特定のレジスタにおいて、各ビットは、上記特定のプロセッサが、ハードワイヤードプロセッサおよびソフトプロセッサのうち異なる１つにより割込されたか否かを表わす。
【００５４】
いくつかの例によれば、各ＩＰＩ回路は第３のセットのレジスタを含む。第３のセット中の各レジスタは、ハードワイヤードプロセッサおよびソフトプロセッサのうちの各プロセッサに関連付けられている。第３のセット中の各レジスタは、集積回路におけるハードワイヤードプロセッサおよびソフトプロセッサの数以上のビット数を有する。ハードワイヤードプロセッサおよびソフトプロセッサのうち特定のプロセッサに関連付けられた第３のセット中の特定のレジスタにおいて、各ビットは、第２のセットのレジスタにおける対応するビットをクリアすべきか否かを表わす。第１のセットのレジスタは読出し／書込みレジスタであってもよく、第２のセットのレジスタは読出し専用レジスタであってもよく、第３のセットのレジスタは書込み専用レジスタであってもよい。いくつかの例では、ハードワイヤードプロセッサは、４つのアプリケーション処理ユニット（ＡＰＵ）と、２つのリアルタイム処理ユニット（ＲＰＵ）と、構成およびセキュリティユニット（ＣＳＵ）と、パワーマネージメントユニット（ＰＭＵ）とを含み、ＰＬ部は４つのソフトプロセッサを含み、全部で１２個のプロセッサがある。第１、第２、および第３のセットのレジスタ中の各レジスタは、上記全部で１２個のプロセッサに対応する１２ビットのみを用いた３２ビットレジスタである。
【００５５】
いくつかの例によれば、各ＩＰＩ回路は、異なる割込クラスに関連付けられている。
いくつかの例によれば、ＩＰＩ回路はＰＳ部内に配置されている。
【００５６】
いくつかの例によれば、集積回路はペイロードレジスタをさらに含む。このペイロードレジスタは、異なるプロセッサ間の割込信号のうちの１つを、ＩＰＩ回路のうちの１つが生成する場合に読出されるデータを格納するように構成されている。
【００５７】
本発明のさらに別の例は、ＩＰＩを処理するための方法である。この方法は、概して、第１のプロセッサからの、第２のプロセッサに割込するという要求をＩＰＩ回路で受信するステップを含む。第２のプロセッサは第１のプロセッサとは異なるプロセッサタイプである。上記方法はさらに、受信された要求に基づき、第１のプロセッサに関連付けられた第１のレジスタにおける第１のビットを更新するステップを含む。第１のビットは、第１のプロセッサが第２のプロセッサに割込することを要求していることを表わす。上記方法はさらに、上記更新に基づき、ＩＰＩ回路から第２のプロセッサへ割込信号を送信するステップを含む。
【００５８】
上述したものは、本開示の例に向けられているが、本開示の基本的な範囲から逸脱せずに、本開示の他の例およびさらなる例が考案され得る。本開示の範囲は、以下の特許請求の範囲により規定される。
【図１Ａ】
0006785222.tif 000002
【図１Ｂ】
0006785222.tif 000003
【図２】
0006785222.tif 000004
【図３】
0006785222.tif 000005
【図４】
0006785222.tif 000006
【図５】
0006785222.tif 000007
【図６】
0006785222.tif 000008
【図７】
0006785222.tif 000009