(57)【特許請求の範囲】
【請求項１】
集積回路であって、
プログラムコードを実行するように構成されるコアを有するコアコンプレックスを含むプロセッサシステムを含み、前記プロセッサシステムは、ハードワイヤードであり、かつ前記プロセッサシステム内に位置するプロセッサハードウェアリソースを含み、前記集積回路はさらに、
異なる物理的回路を実現するよう設定可能であり、かつ前記プロセッサシステムに結合されるプログラマブル回路を含み、
前記プログラマブル回路は前記コアコンプレックスと前記プロセッサハードウェアリソースの使用を共有するように構成され、
前記プロセッサハードウェアリソースは、インターフェイスを与えるとともに、前記プログラマブル回路および前記コアコンプレックスに割込信号を生成するように構成される入出力（Ｉ／Ｏ）装置であり、
前記割込信号に応答して、
前記コアコンプレックスがハードウェアロッキング機構により前記プロセッサハードウェアリソースに対する制御を許可されるときには、前記コアコンプレックスが前記割込信号を処理し、
前記プログラマブル回路が前記ハードウェアロッキング機構により前記プロセッサハードウェアリソースに対する制御を許可されるときには、前記プログラマブル回路が前記割込信号を処理する、集積回路。
【請求項２】
前記コアはレベル１キャッシュメモリを含み、前記プログラマブル回路は前記コアの前記レベル１キャッシュメモリに対する直接読出および書込アクセスを有する、請求項１に記載の集積回路。
【請求項３】
前記プロセッサハードウェアリソースは、前記プロセッサシステムまたは前記プログラマブル回路に専用の、前記集積回路の入出力（Ｉ／Ｏ）ピンに選択的に結合される、請求項１に記載の集積回路。
【請求項４】
前記プロセッサハードウェアリソースから生成されるデータは、前記プロセッサシステムに専用の、前記集積回路の入出力（Ｉ／Ｏ）ピンに与えられるとともに、前記プログラマブル回路に結合されるファブリック入出力マルチプレクサに結合されるデータ線上に生成される、請求項１に記載の集積回路。
【請求項５】
前記集積回路は、一回につき前記コアコンプレックスまたは前記プログラマブル回路の一方が前記プロセッサハードウェアリソースを制御することを許すように構成される前記ハードウェアロッキング機構を含む、請求項１〜請求項４のいずれか１項に記載の集積回路。
【請求項６】
前記ハードウェアロッキング機構は、レベル１キャッシュメモリまたはレベル２キャッシュメモリ内のメモリ位置である、請求項５に記載の集積回路。
【請求項７】
前記プロセッサシステムは、前記コアコンプレックスに接続されるレベル２キャッシュメモリを含み、
前記プログラマブル回路は、前記レベル２キャッシュメモリに対する直接読出および書込アクセスを有する、請求項１〜請求項５のいずれか１項に記載の集積回路。
【請求項８】
前記プログラマブル回路は、前記プロセッサハードウェアリソースを通して、前記集積回路の外部の処理ノードとの通信リンクを有するユーザ回路を含み、
前記コアコンプレックスは、前記プログラマブル回路の電源がオフにされると判断されることに応答して、前記プロセッサハードウェアリソースの制御を行なうように構成され、
前記コアコンプレックスは、前記プログラマブル回路の電源がオフにされた状態で、前記プロセッサハードウェアリソースを通した前記処理ノードとの前記通信リンクを維持する、請求項１〜請求項７のいずれか１項に記載の集積回路。
【請求項９】
前記プログラマブル回路はインターフェイスを介して前記プロセッサシステムに結合されるユーザ回路を含み、前記プロセッサシステムは標準Ｉ／Ｏ機能を実現するように構成され、前記プロセッサシステムは前記インターフェイスを介して受信される前記ユーザ回路からの要求に応じて前記ユーザ回路に前記標準Ｉ／Ｏ機能を与えるように構成される、請求項１〜請求項８のいずれか１項に記載の集積回路。
【請求項１０】
前記プロセッサハードウェアリソースは、前記コアコンプレックスによる使用に対し、前記プログラマブル回路による使用に対してとは異なるように構成され、
前記コアコンプレックスまたは前記プログラマブル回路のいずれかが前記プロセッサハードウェアリソースを制御することに応答して、前記プロセッサハードウェアリソースは再構成される、請求項１〜請求項９のいずれか１項に記載の集積回路。
【請求項１１】
前記プログラマブル回路は、前記プロセッサシステムとは独立して電源がオフにされるように構成され、
前記プロセッサシステムは前記プログラマブル回路の電源のオンおよびオフを制御する、請求項１〜請求項１０のいずれか１項に記載の集積回路。
【請求項１２】
集積回路のプロセッサハードウェアリソースを共有する方法であって、
ユーザ回路を実現するように前記集積回路のプログラマブル回路を設定するステップと、
プロセッサシステムの前記プロセッサハードウェアリソースの使用を共有するように前記プログラマブル回路を設定するステップとを含み、前記プロセッサシステムはハードワイヤードであり、かつプログラムコードを実行するように構成されるコアを有するコアコンプレックスを含み、
前記プロセッサハードウェアリソースは前記プロセッサシステム内に位置し、
前記プロセッサハードウェアリソースは、インターフェイスを与える入出力（Ｉ／Ｏ）装置であり、前記方法はさらに、
前記プロセッサハードウェアリソースから前記コアコンプレックスおよび前記プログラマブル回路に与えられる割込信号を生成するステップと、
前記割込信号を処理するステップとを含み、
前記割込信号は、前記コアコンプレックスがハードウェアロッキング機構により前記プロセッサハードウェアリソースに対する制御を許可されるときには、前記コアコンプレックスによって処理され、
前記割込信号は、前記プログラマブル回路が前記ハードウェアロッキング機構により前記プロセッサハードウェアリソースに対する制御を許可されるときには、前記プログラマブル回路内の前記ユーザ回路によって処理される、方法。
【請求項１３】
前記プロセッサシステムの前記プロセッサハードウェアリソースにアクセスする要求を受取るステップと、
要求されたプロセッサハードウェアリソースが利用可能かどうかを判断するステップとをさらに含み、
前記要求されたプロセッサハードウェアリソースが利用可能である場合には、
前記要求されたプロセッサハードウェアリソースへのアクセスを許可し、
前記要求されたプロセッサハードウェアリソースを設定し、
前記要求されたプロセッサハードウェアリソース上で動作を開始する、請求項１２に記載の方法。
【請求項１４】
前記ユーザ回路は、前記プロセッサハードウェアリソースを用いて、前記集積回路の外部の処理ノードとの通信リンクを有し、前記方法はさらに、
前記プログラマブル回路における電源オフ手順に応答して、前記コアコンプレックスが前記プロセッサハードウェアリソースの制御をとるステップと、
前記プログラマブル回路の電源がオフにされた状態で、前記コアコンプレックスが、前記プロセッサハードウェアリソースを通した前記処理ノードとの前記通信リンクを維持するステップとを含む、請求項１２に記載の方法。
【請求項１５】
前記ユーザ回路が、前記コアコンプレックスの前記コアのレベル１キャッシュメモリまたは前記プロセッサシステムのレベル２キャッシュに直接アクセスするステップをさらに含む、請求項１２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この明細書内において開示される１つ以上の実施例は、集積回路（ＩＣ）に関する。特に、１つ以上の実施例は、プログラマブル回路および埋込型プロセッサシステムを含むＩＣに関する。
【背景技術】
【０００２】
背景
集積回路（ＩＣ）は指定された機能を実行するように実現され得る。１つの種類のＩＣは、例えばフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラマブルＩＣである。ＦＰＧＡは典型的にはアレイプログラマブルなタイルを含む。これらのプログラマブルなタイルは、例えば、入出力ブロック（ＩＯＢ）、設定可能論理ブロック（ＣＬＢ）、専用のランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含み得る。
【０００３】
各プログラマブルなタイルは、典型的には、プログラマブル相互接続回路およびプログラマブル論理回路の両方を含む。プログラマブル相互接続回路は、典型的には、プログラマブル相互接続点（ＰＩＰ）によって相互接続される、長さの異なる多数の相互接続線を含む。プログラマブル論理回路は、例えば、関数発生器、レジスタ、算術論理などを含み得るプログラマブル素子を用いて、ユーザ設計の論理を実現する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
プログラマブル相互接続回路およびプログラマブル論理回路は、典型的には、プログラマブル素子がどのように構成されるかを定義する一連の設定データを内部の設定メモリセルにロードすることによってプログラミングされる。設定データは、メモリから（例えば、外部ＰＲＯＭから）読出され得るか、または外部装置によってＦＰＧＡに書込まれ得る。そして、個々のメモリセルの集団状態がＦＰＧＡの機能を決定する。
【０００５】
別の種類のプログラマブルＩＣとして、複合プログラマブル論理デバイス（complex programmable logic device）、すなわちＣＰＬＤが挙げられる。ＣＰＬＤは２つ以上の「機能ブロック」を含み、これらの２つ以上の「機能ブロック」は互いに接続され、相互接続スイッチマトリックスによって入出力（Ｉ／Ｏ）リソースに接続される。ＣＰＬＤの各機能ブロックは、プログラマブル論理アレイ（ＰＬＡ）およびプログラマブルアレイ論理（ＰＡＬ）デバイスにおいて使用されるものと同様の２レベルのＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいては、設定データは、典型的には、不揮発性メモリにおいてオンチップで記憶される。いくつかのＣＰＬＤにおいては、設定データは、不揮発性メモリにおいてオンチップで記憶され、次いで、初期設定（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【０００６】
これらのプログラマブルＩＣのすべてについて、デバイスの機能は、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（例えば、ＦＰＧＡおよびいくつかのＣＰＬＤにあるようなスタティックメモリセル）、不揮発性メモリ（例えば、いくつかのＣＰＬＤにあるようなＦＬＡＳＨメモリ）、または任意の他の種類のメモリセルに記憶され得る。
【０００７】
他のプログラマブルＩＣは、デバイス上でさまざまな素子をプログラマブルに相互接続する金属層などの処理層を適用することよってプログラミングされる。これらのプログラマブルＩＣはマスクプログラマブルデバイスとして公知である。プログラマブルＩＣは、さらに、例えば、ヒューズ技術またはアンチヒューズ技術を用いる他の態様でも実現され得る。「プログラマブルＩＣ」という語句は、これらのデバイスを含み得るが、それらに限定はされず、さらに、例えば、特定用途向け集積回路（ＡＳＩＣ）を含む、部分的にのみプログラマブルなデバイスも包含し得る。例えば、別の種類のプログラマブルＩＣは、ハードコード化されたトランジスタ論理と、ハードコード化されたトランジスタ論理をプログラマブルに相互接続するプログラマブルなスイッチファブリックとの組合せを含む。
【０００８】
上に論じられたＩＣの種類のいくつか含むいくつかの現代のＩＣは、プログラムコードを実行することが可能な埋込型プロセッサを含む。プロセッサは、ＩＣの「プログラマブル回路」とも総称される、プログラマブル論理回路およびプログラマブル相互接続回路を含む同じダイの一部として製造され得る。プロセッサ内におけるプログラムコードの実行は、ＩＣにおいて利用可能であってもよいプログラマブル回路を「プログラミング」または「設定」することから区別可能であることが十分に理解されるべきである。ＩＣのプログラマブル回路をプログラミングまたは設定する行為の結果、プログラマブル回路内における設定データによって指定される異なる物理的な回路が実現される。
【課題を解決するための手段】
【０００９】
概要
この明細書内に開示される１つ以上の実施例は、集積回路（ＩＣ）、およびより特定的には、プログラマブル回路と埋込型プロセッサシステムとを含むＩＣに関する。
【００１０】
ある実施例は、プログラムコードを実行するように構成されるプロセッサシステムを含むＩＣを含み得る。プロセッサシステムはハードワイヤードであり得、プロセッサハードウェアリソースを含み得る。ＩＣは、さらに、異なる物理的回路を実現するよう設定可能なプログラマブル回路を含み得る。プログラマブル回路はプロセッサシステムに結合され得る。プログラマブル回路は、さらに、プロセッサシステムのプロセッサハードウェアリソースの使用を共有するように構成され得る。
【００１１】
いくつかの実施例においては、プロセッサハードウェアリソースはプロセッサシステム内に位置する入出力（Ｉ／Ｏ）装置であり得る。
【００１２】
いくつかの実施例においては、プロセッサハードウェアリソースはプロセッサシステム内に位置するメモリであり得る。
【００１３】
いくつかの実施例においては、プロセッサハードウェアリソースは、プログラマブル回路およびプロセッサシステムに与えられる割込信号を生成するように構成され得る。
【００１４】
いくつかの実施例においては、プロセッサハードウェアリソースは、プロセッサシステムまたはプログラマブル回路に専用の、集積回路の入出力（Ｉ／Ｏ）ピンに選択的に結合され得る。
【００１５】
いくつかの実施例においては、プロセッサハードウェアリソースから生成されるデータは、プロセッサシステムに専用の、集積回路のＩ／Ｏピンに与えられるとともに、プログラマブル回路に結合されるファブリック入出力マルチプレクサに結合されるデータ線上に生成され得る。
【００１６】
いくつかの実施例においては、プロセッサハードウェアリソースは、プロセッサシステムまたはプログラマブル回路に専用の、集積回路の入出力（Ｉ／Ｏ）ピンに選択的に結合され得る。
【００１７】
いくつかの実施例においては、プロセッサハードウェアリソースから生成されるデータは、プロセッサシステムに専用の、集積回路のＩ／Ｏピンに与えられるとともに、プログラマブル回路に結合されるファブリック入出力マルチプレクサに結合されるデータ線上に生成され得る。
【００１８】
いくつかの実施例においては、プロセッサシステムは、プロセッサシステム内に分配される第１のクロック信号を生成するように構成されるクロックユニットを含み得、クロックユニットは、プログラマブル回路に第２のクロック信号を与えるように構成される。
【００１９】
いくつかの実施例においては、プロセッサシステムは、プロセッサシステム内に分配される第１のクロック信号を生成するように構成されるクロックユニットを含み得、クロックユニットは、プログラマブル回路に第２のクロック信号を与えるように構成される。
【００２０】
いくつかの実施例においては、集積回路は、一回につきプロセッサシステムまたはプログラマブル回路の一方がプロセッサハードウェアリソースを制御することを許すように構成されるハードウェアロッキング機構をさらに含み得る。
【００２１】
いくつかの実施例においては、プロセッサハードウェアリソースに対する制御を許可されると、プロセッサシステムまたはプログラマブル回路のみが、プロセッサハードウェアリソースにより生成される割込を処理する。
【００２２】
いくつかの実施例においては、プログラマブル回路は、プログラマブル回路による使用に対して専用のＩ／Ｏピンを介して集積回路の外部の処理ノードに通信可能にリンクされるユーザ回路を含み得、ユーザ回路は、プログラマブル回路をプロセッサシステムと結合するインターフェイスを介してＩ／Ｏ装置に通信可能にリンクされ得、処理ノードはユーザ回路を介してＩ／Ｏ装置にアクセスし得る。
【００２３】
いくつかの実施例においては、プログラマブル回路は、インターフェイスを介してプロセッサシステムに結合されるユーザ回路を含み、プロセッサシステムは標準Ｉ／Ｏ機能を実現するように構成され得、プロセッサシステムはインターフェイスを介して受信されるユーザ回路からの要求に応じてユーザ回路に標準Ｉ／Ｏ機能を与えるように構成され得る。
【００２４】
いくつかの実施例においては、プログラマブル回路は、プロセッサシステムの制御下で物理的回路を実現し得る。
【００２５】
いくつかの実施例においては、プロセッサシステムはプログラマブル回路の電源供給を制御し得る。
【００２６】
別の実施例は、プロセッサハードウェアリソースを共有する方法を含み得る。この方法は、異なる物理的回路を実現するようにプログラマブル回路を設定するステップと、プロセッサシステムのプロセッサハードウェアリソースの使用を共有するようにプログラマブル回路を設定するステップとを含み、プロセッサシステムはハードワイヤードであり、かつプログラムコードを実行するように構成される。
【００２７】
いくつかの実施例においては、この方法は、さらに、プロセッサシステムのプロセッサハードウェアリソースにアクセスする要求を受取るステップと、要求されたプロセッサハードウェアリソースが利用可能かどうかを判断するステップとを含み、要求されたプロセッサハードウェアリソースが利用可能である場合には、要求されたプロセッサハードウェアリソースへのアクセスを許可し、要求されたプロセッサハードウェアリソースを設定し、要求されたプロセッサハードウェアリソース上で動作を開始する。
【００２８】
別の実施例は、プログラムコードを実行するように構成されるプロセッサシステムを含むＩＣを含み得る。プロセッサシステムはハードワイヤードであり得る。ＩＣは、設定データによって指定される物理的回路を実現するよう設定可能なプログラマブル回路を含み得る。プログラマブル回路はプロセッサシステムに結合され得る。プログラマブル回路は、さらに、プロセッサシステムの制御下で物理的な回路を実現し得る。
【００２９】
いくつかの実施例においては、プロセッサシステムは、物理的回路を指定する設定データをプログラマブル回路の設定メモリにロードすることによって、プログラマブル回路内に物理的回路を実現するように構成され得る。
【００３０】
いくつかの実施例においては、プロセッサシステムは、設定データを設定メモリにロードする前に集積回路の外部のソースからプロセッサシステムの入出力（Ｉ／Ｏ）装置を介して設定データを受信するように構成され得る。
【００３１】
いくつかの実施例においては、プロセッサシステムは、通信リンクを通じて、集積回路の外部のソースとＩ／Ｏ装置を介して通信し、通信リンクを通じて設定データを得るように構成され得る。
【００３２】
他の実施例は、プログラムコードを実行するように構成されるプロセッサシステムを有するＩＣを含み得る。プロセッサシステムはハードワイヤードであり得る。ＩＣは、さらに、そこにロードされる設定データに従って異なる物理的回路を実現するよう設定可能なプログラマブル回路を含み得る。プログラマブル回路はプロセッサシステムに結合され得る。プログラマブル回路は、プロセッサシステムの制御下で、電源供給、例えば電源がオンおよび／またはオフにされ得る。
【００３３】
いくつかの実施例においては、プログラマブル回路は、プロセッサシステムの制御下で電源オフ状態から電源供給され得る。
【００３４】
いくつかの実施例においては、プログラマブル回路がブート処理を完了したと判断されたことに応答して、プロセッサシステムは、設定データをプログラマブル回路の設定メモリにロードし得る。
【００３５】
いくつかの実施例においては、プログラマブル回路は、プロセッサシステムの制御下で電源をオフにされ得る。
【００３６】
いくつかの実施例においては、集積回路は、プロセッサシステムおよびプログラマブル回路を結合する複数個のレベルシフタをさらに含み得、複数個のレベルシフタの各々は、プログラマブル回路がプロセッサシステムの制御下で電源がオフになることに応答して、既知の状態に置かれる。
【図面の簡単な説明】
【００３７】
【図１】この明細書内に開示される実施例に従う集積回路（ＩＣ）のためのアーキテクチャを示す第１のブロック図である。
【図２】この明細書内に開示される別の実施例に従って構成されるＩＣを示す第２のブロック図である。
【図３】この明細書内において開示される別の実施例に従う図２のＩＣを示す第３のブロック図である。
【図４】この明細書内において開示される別の実施例に従う図２のＩＣを示す第４のブロック図である。
【図５】この明細書内において開示される別の実施例に従う図２のＩＣを示す第５のブロック図である。
【図６】この明細書内において開示される実施例に従うプロセッサハードウェアリソースを共有する方法を示す第１のフローチャートである。
【図７】この明細書内において開示される別の実施例に従うシステムを示す第６のブロック図である。
【図８】この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法を示す第２のフローチャートである。
【図９】この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法を示す第３のフローチャートである。
【図１０】この明細書内において開示される別の実施例に従う図２のＩＣを示す第７のブロック図である。
【図１１】この明細書内において開示される別の実施例に従う図２のＩＣを示す第８のブロック図である。
【図１２】この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法を示す第４のフローチャートである。
【図１３】この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法を示す第５のフローチャートである。
【発明を実施するための形態】
【００３８】
図面の詳細な説明
この明細書は新規であるとして見なされる１つ以上の実施例の特徴を規定する請求項で終えているが、それら１つ以上の実施例は図面とあわせた記載の考察から一層よく理解されると考えられる。必要に応じて、１つ以上の詳細な実施例が、この明細書内において開示される。しかしながら、それら１つ以上の実施例は単に例示的であることが十分に理解されるべきである。したがって、この明細書内に開示される具体的な構造上および機能上の詳細は限定的に解釈されるべきではなく、単に、請求項に対する基礎、および事実上任意の適切に詳細な構造においてそれら１つ以上の実施例をさまざまに用いるよう当業者に教示することに対する代表的な基礎として解釈されるべきである。さらに、ここに用いられる用語および語句は、限定的であるようには意図されず、ここに開示されるそれら１つ以上の実施例の理解可能な記載を与えるよう意図される。
【００３９】
この明細書内に開示される１つ以上の実施例は、集積回路（ＩＣ）、およびより特定的には、プログラマブル回路と埋込型プロセッサシステムとを含むＩＣに関する。プログラマブル回路を、埋込型プロセッサシステムとともに、同じＩＣ内において、例えば、同じダイおよび／または基板上に組込むことは、プログラマブル回路とプロセッサシステムとの間のさまざまなプロセッサハードウェアリソースの共有を容易にし得る。プロセッサシステムのメモリや例えば入出力（Ｉ／Ｏ）装置のようなインターフェイスといった、プロセッサシステムのさまざまな構成要素および／またはサブシステムは、プログラマブル回路による使用のために利用可能とされ、かつ共有され得る。
【００４０】
この明細書内において開示される１つ以上の実施例は、さらに、プロセッサシステムおよびプログラマブル回路部分を含むＩＣ内における電力管理に関する。プログラマブル回路は、プロセッサシステムから独立して電源がオンおよび／またはオフされるように構成され得る。プロセッサシステムは、プログラマブル回路の電力サイクル化の管理を行ない、さらに、ＩＣおよびプログラマブル回路を制御する設定メモリ内への設定、例えば設定データのロードを制御し得る。プロセッサシステムとプログラマブル回路との間の電力の独立性は、プログラマブル回路の電源がオフのままでプロセッサシステムが動作してプログラムコードを実行することを可能にする。プロセッサハードウェアリソースがプログラマブル回路と共有される程度まで、そのようなリソースの電力管理もプロセッサシステムによって制御され得る。
【００４１】
図１は、この明細書内に開示される実施例に従うＩＣのためのアーキテクチャ１００を示す第１のブロック図である。例えば、アーキテクチャ１００はフィールドプログラマブルゲートアレイ（ＦＰＧＡ）タイプのＩＣ内において実現され得る。示されるように、アーキテクチャ１００はいくつかの異なる種類のプログラマブル回路、例えば、論理、ブロックを含む。例えば、アーキテクチャ１００は、マルチギガビットトランシーバ（ＭＧＴ）１０１、設定可能論理ブロック（ＣＬＢ）１０２、ランダムアクセスメモリブロック（ＢＲＡＭ）１０３、入出力ブロック（ｌＯＢ）１０４、設定およびクロック制御論理（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１０５、デジタル信号処理ブロック（ＤＳＰ）１０６、専用Ｉ／Ｏブロック１０７（例えば設定ポートおよびクロックポート）、およびデジタルクロックマネージャ、アナログ／デジタル変換器、システム監視論理などのような他のプログラマブル論理１０８などを含む、多数の異なるプログラマブルなタイルを含み得る。
【００４２】
いくつかのＩＣにおいては、各プログラマブルなタイルは、プログラマブルな相互接続素子（ＩＮＴ）１１１を含み、それは、各近接するタイルにおける対応するＩＮＴ１１１との標準化された接続を有する。したがって、ＩＮＴ１１１は、ともになると、示されたＩＣのためのプログラマブルな相互接続構造を実現する。図１の上部に含まれる例によって示されるように、各ＩＮＴ１１１は、さらに、同じタイル内におけるプログラマブル論理素子との接続を含む。
【００４３】
例えば、ＣＬＢ１０２は、ユーザ論理に単一のＩＮＴ１１１を加えたものを実現するようにプログラミングされ得る設定可能な論理素子（ＣＬＥ）１１２を含み得る。ＢＲＡＭ１０３は、１つ以上のＩＮＴ１１１に加えて、ＢＲＡＭ論理素子（ＢＲＬ）１１３を含み得る。典型的には、タイルに含まれるＩＮＴ１１１の数は、タイルの高さに依存する。図示された実施例においては、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（例えば４つ）を用いてもよい。ＤＳＰタイル１０６は適切な数のＩＮＴ１１１に加えてＤＳＰ論理素子（ＤＳＰＬ）１１４を含み得る。ＩＯＢ１０４は、例えば、ＩＮＴ１１１の１つのインスタンスに加えて、Ｉ／Ｏ論理素子（ＩＯＬ）１１５の２つのインスタンスを含み得る。当業者には明らかなように、例えばＩＯＬ１１５に接続される実際のＩ／Ｏパッドは、典型的にはＩＯＬ１１５の領域に限定されない。
【００４４】
図１に図示される例においては、ダイの中央の近くのコラム状領域（図１において影付きで示される）は、設定、クロックおよび他の制御論理のために用いられる。このコラムから延在する水平の領域１０９は、プログラマブルＩＣの幅にわたってクロックおよび設定信号を分配するために用いられる。
【００４５】
図１に示されるアーキテクチャを利用するいくつかのＩＣは、ＩＣの大部分を形成する、規則的なコラム状構造を分断するさらなる論理ブロックを含む。さらなる論理ブロックは、プログラマブルなブロックおよび／または専用回路であり得る。例えば、ＰＲＯＣ１１０として示されるプロセッサブロックは、ＣＬＢおよびＢＲＡＭからなるいくつかのコラムにわたる。
【００４６】
ＰＲＯＣ１１０は、ＩＣのプログラマブル回路を実現するダイの一部として製造されるハードワイヤードのプロセッサとして実現され得る。ＰＲＯＣ１１０は、個々のプロセッサ、例えばプログラムコードを実行可能な単一のコアから、１つ以上のコア、モジュール、コプロセッサ、インターフェイスなどを有する全体のプロセッサシステムまでの複雑性の範囲を有する、さまざまな異なるプロセッサタイプおよび／またはシステムの任意のものを表わし得る。
【００４７】
より複雑な構成においては、例えば、ＰＲＯＣ１１０は、ＩＣのＩ／Ｏピン、例えばＩ／Ｏパッドに直接結合する、および／またはＩＣのプログラマブル回路に結合するよう設定可能な１つ以上のコア、例えば中央処理装置、キャッシュメモリ、メモリコントローラ、一方向および／または双方向インターフェイスを含み得る。語句「プログラマブル回路」は、ＩＣ内におけるプログラマブル回路素子、例えばここに記載されるさまざまなプログラマブルもしくは設定可能な回路ブロックまたはタイル、ならびにＩＣにロードされる設定データに従うさまざまな回路ブロック、タイルおよび／または素子を選択的に結合する相互接続回路を指し得る。例えば、図１に示される、ＰＲＯＣ１１０の外部にある部分は、ＩＣのプログラマブル回路の一部またはＩＣのプログラマブル回路と見なされ得る。
【００４８】
図１は、例えばプログラマブルなファブリックなどのプログラマブル回路およびプロセッサシステムを含むＩＣを実現するために用いられ得る例示的なアーキテクチャを示すように意図される。例えば、コラムにおける論理ブロックの数、コラムの相対的な幅、コラムの数および順序、コラムに含まれる論理ブロックの種類、論理ブロックの相対的なサイズ、ならびに図１の上部に含まれる相互接続／論理実現例は、純粋に例示的である。実際のＩＣにおいては、例えば、ＣＬＢからなる１つより多い近接するコラムが、典型的には、ＣＬＢが現れるすべてのところに含まれて、ユーザ回線設計の効率的な実現を容易にする。しかしながら、近接するＣＬＢコラムの数は、ＩＣの全体的なサイズとともに変動し得る。さらに、ＩＣ内におけるＰＲＯＣ１１０のサイズおよび／または位置決めは、例示のためのみであり、この明細書内において開示される１つ以上の実施例の限定として意図されない。
【００４９】
図２は、この明細書内に開示される別の実施例に従って構成されるＩＣ２００を示す第２のブロック図である。ＩＣ２００は、プログラマブル回路２０４に結合されるプロセッサシステム（ＰＳ）２０２を含む、さまざまな異なるアーキテクチャのいずれかを用いて実現され得る。例えば、ＩＣ２００は図１のアーキテクチャ１００のそれと同じか、またはそれに類似したアーキテクチャを用いることによって実現され得るが、これは必ずあてはまらなくてもよい。概して、ＩＣ２００は、プログラマブル回路２０４内において実現される回路にＰＳ２０２を結合するように用いられ得るさまざまなインターフェイスをより詳しく示す。
【００５０】
図２に示される例においては、ＰＳ２０２はＩＣ２００のダイのおおよそ３分の２を占めるものとして示される一方、プログラマブル回路２０４は同じダイのおおよそ３分の１を占めるものとして示される。しかしながら、図２はＩＣ２００の縮尺表示であるようには意図されない。むしろ、図２は例示の目的に対して提供され、この明細書内において開示される１つ以上の実施例の限定として意図されない。
【００５１】
一般に、ＰＳ２０２はＩＣ２００内におけるハードワイヤードのシステムとして実現される。ＰＳ２０２内におけるさまざまな要素またはモジュールは、例えば信号または通信リンクなどの、矢印を有する線によって結合される限りにおいて、そのような矢印は、制御の方向または流れを示すように意図される。この点において、方向矢印を有する線として示される信号は、概して、信号に対する制御は、矢印が指す目標要素ではなく、矢印が出るソース要素によって行われることを示す。矢印は、概して、データの一方向の流れまたは信号の方向性を示すようには意図されない。信号は、方向矢印が存在しても、双方向信号または双方向通信リンクとして実現され得る。
【００５２】
この明細書内では、同じ参照符号は、端子、信号線、配線およびそれらの対応する信号を指すよう用いられる。この点において、用語「信号」、「配線」、「接続」、「端子」および「ピン」は、この明細書内において、時として、交換可能に用いられてもよい。用語「信号」、「配線」などは、１つ以上の信号、例えば単一配線を介する単一ビットの伝達または複数の平行な配線を介する複数の並列のビットの伝達を表わし得ることも、十分に理解されるべきである。さらに、各配線または信号は、注目されるように、場合に応じて信号または配線で接続される２つ以上の要素間の双方向通信を表わしてもよい。
【００５３】
示されるように、ＰＳ２０２はコアコンプレックス２０６を含み得る。コアコンプレックス２０６は、コア２０８および２１０と、浮動小数点ユニット（ＦＰＵ）２１２および２１４と、割込要求ユニット（ＩＲＱ）２１６と、スヌープ制御ユニット（ＳＣＵ）２１８とを含み得る。コア２０８および２１０の各々は、その中に埋込まれたレベル１（Ｌ１）キャッシュ（図示せず）を含み得る。プログラムコードを実行可能なさまざまな異なる種類のプロセッサコアおよび／またはＦＰＵ、例えば数値演算コプロセッサもしくはＤＳＰユニットが用いられ得る一方で、ここに開示される実施例においては、コア２０８および２１０は、各々、各々３２ＫＢの命令キャッシュおよび３２ＫＢのデータキャッシュを有する、ＡＲＭ  ＣｏｒｔｅｘＴＭ−Ａ９タイプのプロセッサコアとして実現され得る。ＦＰＵ２１２および２１４は、１２８ビットのベクトルに基いたＤＳＰ機能を提供可能なＮＥＯＮＴＭ媒体および／または浮動小数点処理エンジンの形式で実現され得る。ＡＲＭ  ＣｏｒｔｅｘＴＭ−Ａ９プロセッサコアならびにＮＥＯＮＴＭ媒体および／または浮動小数点処理エンジンは、英国ケンブリッジ（Cambridge）のＡＲＭホールディングス（ARM Holdings）（ＡＲＭ）から入手可能である。
【００５４】
デュアルコアまたはマルチコアシステムとして示されているが、別の実施例においては、コアコンプレックス２０６はプログラムコードを実行し得る単一のコアを含んでもよい。その場合、コアコンプレックス２０６は、ＩＲＱ２１６およびＳＣＵ２１８に結合される単一のコアまたはプロセッサを含み得る。さらに、ＦＰＵ２１２および２１４を含む必要はないが、所望の場合には、単一のＦＰＵユニットが含まれ得、単一のコアに結合され得る。
【００５５】
図２を再び参照して、コアコンプレックス２０６は、レベル２（Ｌ２）キャッシュ２２０およびオンチップメモリ（ＯＣＭ）２２２のようなさまざまなプロセッサハードウェアリソースに結合される。Ｌ２キャッシュ２２０は２５６ＫＢのメモリとして実現され得る。ＯＣＭ２２２も、２５６ＫＢのメモリとして実現され得る。コア２０８および２１０ならびにＦＰＵ２１２および２１４は、Ｌ２キャッシュ２２０およびＯＣＭ２２２に直接アクセスし得る。一般に、ＯＣＭ２２２は、ＰＳ２０２および／またはプログラマブル回路２０４、例えばプログラマブル回路２０４内において実現される回路に利用可能なローカルメモリを提供する。比較して、これもメモリであるＬ２キャッシュ２２０はＰＳ２０２のためのキャッシュとして機能する。したがって、Ｌ２キャッシュ２２０は、例えば実行メモリオフチップのような、事実上、ＲＡＭに記憶されるデータビットのコピーである、例えば２５６ビットの、データの小ブロックまたは小部分を記憶し得る。例えば、読込要求がＬ２キャッシュ２２０に記憶されるデータに対して出される場合、データは、ＲＡＭから検索されるのとは対照的に、Ｌ２キャッシュ２２０から読出され得る。
【００５６】
ＰＳ２０２は、リセットユニット２２４、クロックユニット２２６およびメモリコントローラ２２８のようなさらなるハードウェアプロセッサリソースを含み得る。リセットユニット２２４は、ＩＣ２００の外部のソースから生じる、例えば信号２３０などの、１つ以上の信号を受信し得る。信号２３０はＰＳ２０２および／またはＰＳ２０２内における１つ以上またはすべての要素をリセットするようにリセットユニット２２４に命令し得る。リセットユニット２２４は、さらに、プログラマブル回路２０４の電源のオンまたはオフを要求する信号を受信し得る。
【００５７】
クロックユニット２２６は、ＩＣ２００の外部のソースから、１つ以上の基準信号、例えば信号２３２を受信し得る。クロックユニット２２６は、例えば、受信される信号２３２に同期可能な位相同期ループ回路として実現され得るか、またはそれを含み得る。クロックユニット２２６は、ＰＳ２０２の全体にわたって分配され得る、１つ以上の異なる周波数を有する１つ以上のクロック信号を生成し得る（図示せず）。さらに、クロックユニット２２６は、プログラマブル回路２０４の中に実現される回路による使用のためにプログラマブル回路２０４に分配され得る、１つ以上の異なる周波数を有する１つ以上のクロック信号を生成し得る。
【００５８】
メモリコントローラ２２８は、ＩＣ２００の外部に、例えば「オフチップ」で位置する、１つ以上の異なる種類のＲＡＭと通信するように実現され得る。例えば、メモリコントローラ２２８は、１６ビット、３２ビット、ＥＣＣなどを伴う１６ビットなどであるかどうかにかかわらず、デュアルデータレート（ＤＤＲ）２、ＤＤＲ３および低電力（ＬＰ）ＤＤＲ２タイプのメモリを含むがこれらに限定されないさまざまな種類のメモリにアクセス、例えば読出しおよび／または書込みを行なうように実現され得る。メモリコントローラ２２８が通信できる、異なるメモリの種類のリストは、例示のみの目的に対して提供され、限定として意図されず、つまり網羅的であるよう意図される。
【００５９】
ＰＳ２０２は、さらに、コアスイッチ２３６およびプログラマブル回路２０４に結合されるダイレクトメモリアクセス（ＤＭＡ）インターフェイス２３４のようなハードウェアプロセッサリソースを含み得る。ＰＳ２０２は、この明細書内においてより詳しく記載されるインターフェイス２５６の１つ、つまりインターフェイス２５６Ｄと、ＯＣＭ２２２と、メモリコントローラ２２８とに結合するメモリスイッチ２３８タイプのハードウェアプロセッサリソースをさらに含む。
【００６０】
コアスイッチ２３６は、示されるようなＰＳ２０２のさまざまな要素の間で信号をルーティングし得る。ある実施例においては、コアスイッチ２３６は、ＰＳ２０２の内部バス（図示せず）に直接結合され得る。そのような実施例においては、コアスイッチ２３６と接続するＰＳ２０２内における各他の要素は、内部バスを通してコアスイッチ２３６に結合され得る。例えば、Ｉ／Ｏ装置（例えばインターフェイス）２４０、２４２、２４６および２４８のような他のプロセッサハードウェアリソースは、各々、内部バスを介してコアスイッチ２３６に結合し得る。内部バスは、例えば高性能周辺バス（ＡＰＢ）などのようなさまざまな異なるバスのいずれかとして実現され得る。
【００６１】
記載されたように、ＰＳ２０２は、１つ以上の異なる種類のＩ／Ｏ装置またはインターフェイスのようなハードウェアプロセッサリソースを含み得る。ＰＳ２０２はフラッシュメモリタイプのＩ／Ｏ装置、より高い性能のＩ／Ｏ装置、より低い性能のインターフェイス、デバッグＩ／Ｏ装置、および／またはＲＡＭ  Ｉ／Ｏ装置を提供し得る。ＲＡＭ  Ｉ／Ｏ装置、つまりメモリコントローラ２２８は、この明細書内において記載されている。
【００６２】
付加的な種類のＩ／Ｏ装置に関して、ＰＳ２０２は、２４０Ａおよび２４０Ｂとして示される１つ以上のフラッシュメモリインターフェイス２４０を含み得る。例えば、フラッシュメモリインターフェイス２４０の１つ以上は、４ビット通信に対して構成されるＱｕａｄ−シリアル周辺インターフェイス（ＱＳＰＩ）として実現され得る。フラッシュメモリインターフェイス２４０の１つ以上は、パラレル８ビットＮＯＲ／ＳＲＡＭタイプのインターフェイスとして実現され得る。フラッシュメモリインターフェイス２４０の１つ以上は、８ビットおよび／または１６ビットの通信に対して構成されるＮＡＮＤインターフェイスとして実現され得る。記載される特定のインターフェイスは限定ではなく例示の目的に対して提供されることが十分に理解されるべきである。異なるビット幅を有する他のインターフェイスも用いられ得る。
【００６３】
ＰＳ２０２は、Ｉ／Ｏ装置２４０より高いレベルの性能を提供するＩ／Ｏ装置２４２の１つ以上を含み得る。Ｉ／Ｏ装置２４２Ａ〜２４２Ｃの各々は、ＤＭＡコントローラ２４４Ａ〜２４４Ｃにそれぞれ結合され得る。例えば、Ｉ／Ｏ装置２４２の１つ以上は、ユニバーサルシリアルバス（ＵＳＢ）タイプのインターフェイスとして実現され得る。Ｉ／Ｏ装置２４２の１つ以上は、ギガビットイーサネットタイプのインターフェイスとして実現され得る。Ｉ／Ｏ装置２４２の１つ以上は、セキュアデジタル（ＳＤ）タイプのインターフェイスとして実現され得る。
【００６４】
ＰＳ２０２は、Ｉ／Ｏ装置２４２より低いレベルの性能を提供する、Ｉ／Ｏ装置２４６Ａ〜２４６Ｄのような１つ以上のＩ／Ｏ装置２４６を含み得る。例えば、Ｉ／Ｏ装置２４６の１つ以上は、汎用Ｉ／Ｏ（ＧＰＩＯ）タイプのインターフェイスとして実現され得る。Ｉ／Ｏ装置２４６の１つ以上は、ユニバーサル非同期送受信機（ＵＡＲＴ）タイプのインターフェイスとして実現され得る。Ｉ／Ｏ装置２４６の１つ以上は、シリアル周辺インターフェイス（ＳＰＩ）バスタイプのインターフェイスの形式で実現され得る。Ｉ／Ｏ装置２４６の１つ以上は、コントローラエリアネットワーク（ＣＡＮ）タイプのインターフェイスおよび／またはＩ２Ｃタイプのインターフェイスの形式で実現され得る。Ｉ／Ｏ装置２４６の１つ以上は、さらに、トリプルタイマカウンタ（ＴＴＣ）および／またはウォッチドッグタイマ（ＷＤＴ）タイプのインターフェイスの形式で実現され得る。
【００６５】
ＰＳ２０２は、プロセッサＪＴＡＧ（ＰＪＴＡＧ）ポートまたはインターフェイス２４８Ａおよびトレースインターフェイス２４８Ｂのような１つ以上のデバッグＩ／Ｏ装置２４８を含み得る。ＰＪＴＡＧポート２４８Ａは、ＰＳ２０２のための外部のデバッグインターフェイスを提供し得る。トレースインターフェイス２４８Ｂは、プログラマブル回路２０４からデバッグ情報、例えばトレース情報を受信するポート、プログラマブル回路２０４にＰＳ２０２のデバッグデータを送信するポート、およびクロストリガポートを提供し得る。クロストリガポートは、プログラマブル回路２０４内における回路がＰＳ２０２内においてトレースのようなデバッグ機能をトリガすることを可能にする。同様に、ＰＳ２０２は、プログラマブル回路２０４内において実現される回路内においてデバッグ機能を起動し得る。
【００６６】
示されるように、Ｉ／Ｏ装置２４０、２４２、２４６および２４８の各々は、マルチプレクサ２５０に結合され得る。マルチプレクサ２５０は、例えば、ＩＣ２００が配置されるパッケージのボールなどのような、ＩＣ２００の外部ピンに直接ルーティングされ得るかまたは結合され得る複数個の出力を提供する。例えば、ＩＣ２００の複数個のＩ／Ｏピン、例えば５３本のピンが、インターフェイス２４０、２４２、２４６および２４８間で共有され得る。ユーザは、インターフェイス２４０〜２４８のどれが用いられるか、したがって、マルチプレクサ２５０を介してＩＣ２００のＩ／Ｏピンに結合されるかを選択するよう、マルチプレクサ２５０をＰＳ２０２の一部として構成し得る。
【００６７】
示されるように、Ｉ／Ｏ装置２４２〜２４８をマルチプレクサ２５０に結合する信号は、さらに、ファブリックマルチプレクサ入出力（ＦＭＩＯ）インターフェイス２５２に結合され得る。したがって、ＩＣ２００および特にＰＳ２０２のユーザ設定に基いて、Ｉ／Ｏ装置２４２、２４６および／または２４８の任意の１つが、ＦＭＩＯインターフェイス２５２を介してＩＣ２００のプログラマブル回路２０４に結合され得る。ＦＭＩＯインターフェイス２５２は、例えば、それに結合される各信号線に対して設定可能なスイッチを含み得、信号線がそのスイッチの状態に依存してプログラマブル回路２０４に選択的に結合されることを可能にする。ＦＭＩＯインターフェイス２５２、およびその中に含まれるスイッチは、どの信号がＩ／Ｏ装置２４２〜２４８からプログラマブルなファブリック２０４へと通過するか判断するように、例えば制御レジスタ２５４を介して、ＰＳ２０２の一部として構成され得る。これは、インターフェイス２４２〜２４８の任意の１つから通信されているデータが、さらなる処理および／または監視のためにプログラマブル回路２０４内において回路にルーティングされることを可能にする。Ｉ／Ｏ装置２４２、２４６および２４８に結合されるＩ／Ｏピンの１つ以上を介して受信されたデータは、インターフェイス２５６の１つ以上を通るさらなる処理のためにプログラマブル回路２０４にルーティングされ得る。
【００６８】
ＦＭＩＯインターフェイス２５２は、Ｉ／Ｏ装置２４２、２４６および２４８から出力されるデータが、Ｉ／Ｏピンの１つ以上に、プログラマブル回路２０４内において実現される選択された回路、例えばユーザ回路２８０に、またはプログラマブル回路２０４内において実現される選択された回路と同時に１つ以上のＩ／Ｏピンの両方に、与えられることを可能にする。ＦＭＩＯインターフェイス２５２に結合するために、プログラマブル回路２０４内において実現される回路は、物理的な回路を形成または実現するように設定データのロードを介してそうするように構成されなければならないことが十分に理解されるべきである。
【００６９】
ある実施例においては、Ｉ／Ｏ装置２４０、２４２、２４６および２４８の各々は、信号２９０として示される割込信号を生成するように構成され得る。例えば、Ｉ／Ｏ装置２４０Ａ〜２４０Ｂ、２４２Ａ〜２４２Ｃ、２４６Ａ〜２４６Ｄ、および２４８Ａ〜２４８Ｂの各々は、信号２９０で割込を生成するように構成され得る。示されるように、信号２９０は、コアコンプレックス２０６のＩＲＱ２１６に結合し、プログラマブル回路２０４にも直接結合される。ＰＳ２０２内に配置される割込信号２９０は、ハードワイヤードであり、例えば固定された配線である。したがって、Ｉ／Ｏ装置２４０〜２４８のいずれかによって生成される割込は、コアコンプレックス２０６および／またはプログラマブル回路２０４に与えられ得、それによって、プログラマブル回路２０４および／またはコアコンプレックス２０６によるＩ／Ｏ装置２４０〜２４８の使用を容易にし得る。Ｉ／Ｏ装置２４０〜２４８の各々からの割込は、例えば、ＩＲＱ２１６およびプログラマブル回路２０４に同時に与えられ得る。
【００７０】
制御レジスタ２５４は、ＰＳ２０２の、大抵ではないとしても、さまざまな局面を制御するように構成され得る。１つ以上のコマンドを制御レジスタ２５４に書込んで、ＰＳ２０２の動作を制御または統制し得る。例えば、プログラマブル回路２０４内の回路が、ここにさらに詳細に記載される、インターフェイス２５６Ｂのようなインターフェイスを通して制御レジスタ２５４に書込み得る。制御レジスタ２５４は、知的財産（ＩＰ）イネーブルリセットを制御すること、クロックユニット２２６によって生成されるクロック周波数を設定すること、Ｉ／Ｏ駆動強度を指定すること、どの信号がプログラマブル回路２０４にルーティングされるかに関するＦＭＩＯインターフェイス２５２の状態、および他のシステムレベル機能などの機能を制御または統制し得る。制御レジスタ２５４は、ＰＳ２０２の電力を下げる、またはＰＳ２０２の特定のインターフェイスを独立して電力を下げるか非活性化するなどのような追加的機能を統制し得る。制御レジスタ２５４は、制御レジスタ２５４をコアスイッチ２３６に結合する、例えばＡＰＢ（図示せず）のようなバスを通してアクセスされ得る。
【００７１】
ＰＳ２０２は、さらに、インターフェイス２５６Ａ〜２５６Ｄとして示される、プログラマブル回路２０４と直接結合する１つ以上のインターフェイス２５６を含み得る。ある実施例においては、インターフェイス２５６の１つ以上またはすべてを、ＡＲＭによって公開されたようなＡＭＢＡ  ＡＸＩプロトコル規定（ＡＸＩ）に従って実現し得る。例えば、インターフェイス２５６の各々は、その全体がここに引用により援用されるＡＭＢＡ  ＡＸＩプロトコル規定ｖ．３．０に準拠して実現され得る。一般に、ＡＸＩは、サブミクロン相互接続のために好適な高性能高周波数インターフェイスである。
【００７２】
図２を再び参照すると、インターフェイス２５６Ａおよび２５６Ｂ、例えば、各々、プログラマブル回路２０４をコアスイッチ２３６と結合する２つの３２ビットチャネルを与えるように実現され得る。インターフェイス２５６Ａは汎用のマスタインターフェイスとして実現され得る。インターフェイス２５６Ａは、例えば、ＰＳ２０２および／またはその中のＤＭＡコントローラからのデータのプログラマブル回路２０４への汎用転送を実行するために用いられ得る。インターフェイス２５６Ｂは汎用スレーブインターフェイスとして実現され得る。例えば、インターフェイス２５６ＢはＰＳ２０２とプログラマブル回路２０４との間の汎用データ転送を実行するために用いられ得る。
【００７３】
インターフェイス２５６Ａ〜２５６Ｂおよびコアスイッチ２３６を通して、プログラマブル回路２０４内において実現される回路は、Ｉ／Ｏ装置２４０、２４２、２４６および２４８のさまざまなものにアクセスし得る。インターフェイス２５６Ａおよび／または２５６Ｂを通して、コアスイッチ２３６との組合せにおいて、プログラマブル回路２０４内の回路は、さらに、直接ＯＣＭ２２２に、およびメモリコントローラ２２８などを通してオフチップメモリに、アクセスし得る。
【００７４】
インターフェイス２５６Ｃは、プログラマブル回路２０４をコアコンプレックス２０６および特にＳＣＵ２１８と直接結合する、６４ビットのスレーブインターフェイスとして実現され得る。インターフェイス２５６ＣおよびＳＣＵ２１８を通して、プログラマブル回路２０４内において実現される回路は、コア２０８および２１０の各々内のＬ１キャッシュ、ＩＲＱ２１６、Ｌ２キャッシュ２２０、ならびにＯＣＭ２２２への直接アクセスを与えられる。したがって、プログラマブル回路２０４内の回路は、そのようなメモリに読出しおよび／または書込みを行ない、コアコンプレックス２０６内において生成またはアサートされる割込を検出し得る。例えば、インターフェイス２５６Ｃは、コプロセッサとして機能する回路による使用のために好適なコアコンプレックス２０６へのコヒーレントアクセスを与え得る。例示においては、ユーザ回路２８０の形式でプログラマブル回路２０４内において実現されるソフトプロセッサが、インターフェイス２５６Ｃを介してＰＳ２０２と通信し得る。
【００７５】
プログラマブル回路２０４は、割込をＩ／Ｏ装置２４０、２４２、２４６および２４８から直接検出するかまたは割込をＩＲＱ２１６から検出するように設定可能である。ＩＲＱ２１６によって、プログラマブル回路２０４は、コアコンプレックス２０６内において生じるプロセッサに特有の割込またはプロセッサにより生成された割込を検出することできることが十分に理解されるべきである。信号２９０は、さらに、ポートもしくは信号としてＩＲＱ２１６に与えられ得るプログラマブル回路２０４からの１つ以上の割込、および／またはポートもしくは信号としてプログラマブル回路２０４から与えられ得る、ＰＳ２０２からの、特にコアコンプレックス２０６からの１つ以上の割込コピーを表わし得る。
【００７６】
インターフェイス２５６Ｄは、複数の、例えば４つの６４ビットのスレーブインターフェイスを与えるために実現され得る。インターフェイス２５６Ｄは、ＰＳ２０２とプログラマブル回路２０４内において実現される回路との間で大きなデータ量を効率的に交換するのに用いられ得る。示されるように、インターフェイス２５６Ｄは、プログラマブル回路２０４内において実現される回路に、メモリスイッチ２３８を介したＯＣＭ２２２へのアクセス、ならびにメモリスイッチ２３８およびメモリコントローラ２２８を介したオフチップメモリへのアクセスを与える。
【００７７】
加えて、ＰＳ２０２はＰＳ電圧検出器２９２を含み得る。ＰＳ電圧検出器２９２は、信号２９４として示される電源から入来する電圧源を監視し得る。信号２９４の電圧が予め定められる電圧レベルを満たすと判断することに応答して、ＰＳ電圧検出器２９２は制御信号（図示せず）を発行することによって１つ以上の他の要素をイネーブルし得る。例えば、信号２９４の電圧が少なくとも最小電圧レベルであると判断することに応答して、ＰＳ電圧検出器２９２はＩＣ２００の１つ以上のＩＯＢをイネーブルし得る。別の例では、信号２９４の電圧が最小電圧レベルを満たすと判断することに応答して、ＰＳ電圧検出器２９２は、レベルシフティング回路２９６としてまとめて示される１つ以上のレベルシフタをイネーブルし得る。ＰＳ電圧検出器２９２のさらなる機能は残りの図を参照して記載される。
【００７８】
ＩＣ２００は、ＰＳ２０２とプログラマブル回路２０４との間での信号の転送を容易にするためにレベルシフティング回路２９６を含み得る。レベルシフティング回路２９６は、ＰＳ２０２をプログラマブル回路２０４から絶縁するのを助けるとともに、第１の電圧レベルの信号を第２の電圧レベルの信号に変換するように構成される。ある場合には、第１および第２の電圧レベルは異なる電圧値であり得る。例えば、ある場合には、ＰＳ２０２は、プログラマブル回路２０４に与えられる電力信号とは異なる電位を有する電力信号を用いて動作し得る。他の場合においては、ＰＳ２０２は、プログラマブル回路２０４に与えられる電力信号と同じ電位を有するかまたはそれを有するように意図される１つ以上の電力信号を受信し得る。しかしながら、電力信号は独立して制御され得、電力信号の電位の類似性または同一性にもかかわらず２つの異なるパワードメインをもたらし得る。電力信号の独立性は、プログラマブル回路２０４に与えられる電力信号と比較して、ＰＳ２０２に与えられる電力信号の電位における小さな変動を引起し得る。レベルシフティング回路２９６は、ＰＳ２０２が１つのパワードメインとして機能することを可能にし、プログラマブル回路２０４が異なる独立したパワードメインとして機能することを可能にし、それによって、例えば、ＰＳ２０２が電源をオンにされて動作可能である状態のままで、プログラマブル回路２０４がＰＳ２０２から独立して電源がオンおよびオフされることを可能する。
【００７９】
電力信号における電位変動を説明し、かつＰＳ２０２から独立してプログラマブル回路２０４の電力周期をなす能力をサポートするために、ＰＳ２０２とプログラマブル回路２０４との間で交差する信号は、レベルシフティング回路２９６を通して通過させられ得る。単一のブロックとして示されてはいるが、記載されるさまざまなインターフェイス、例えばＦＭＩＯインターフェイス２５２、トレースインターフェイス２４８Ｂ、インターフェイス２５６Ａ〜２５６Ｄ、プロセッサ設定アクセスポート（ＰＣＡＰ）２５８、ならびにクロック信号およびＤＭＡ信号のような他の信号の各々が、レベルシフティング回路２９６によって表されるレベルシフタを含み得るか、またはそれらを通って通過し得ることが十分に理解されるべきである。レベルシフティング回路２９６は、ＰＳ２０２とプログラマブル回路２０４との間で伝搬する信号のための電圧レベルが一致することを保証する。
【００８０】
ＩＣ２００は、レベルシフティング回路２９６内に１つ以上の異なるクラスのレベルシフタを含み得る。例えば、第１のクラスのレベルシフタは、例えば設定信号、境界走査信号および／または機能のようなシステムレベル信号などの信号を、直接、ＰＳ２０２から、ここにより詳しく記載されるシステムモニタ２６２のようなプログラマブル回路２０４内の要素に接続するように構成され得る。レベルシフティング回路２９６の第１のクラスに属するレベルシフタがイネーブルされ得るのは、ＰＳ２０２がリセット外であり、例えば、動作モードに入り、プログラマブル回路２０４への電力が動作のために十分であると判断されたときである。プログラマブル回路２０４の動作のために十分な電力は、プログラマブル回路２０４の設定が生じるのに十分な電力、および／またはプログラマブル回路２０４内において実現される任意の回路が一旦実現されると機能するのに十分な電力を含み得る。
【００８１】
第２のクラスのレベルシフタは、プログラマブル回路２０４からＰＳ２０２にテスト信号を接続するように構成され得る。第２のクラスのレベルシフタがイネーブルされ得るのは、ＰＳ２０２がリセット外であり、プログラマブル回路２０４が、十分な電力を有し、かつ回路を実現するように設定されるときである。ディスエーブルされると、第２のクラスのレベルシフタは、デフォルト論理をハイレベルで出力するように構成され得る。別の実施例においては、第２のクラスのレベルシフタは、ディスエーブルされると、デフォルト論理をローレベルで出力するように構成され得る。
【００８２】
第３のクラスのレベルシフタはＰＳ２０２とプログラマブル回路２０４との間でユーザ信号を接続するように構成されるかまたは利用可能であり得る。第３のクラスのレベルシフタがイネーブルされ得るのは、ＰＳ２０２がリセット外であり、プログラマブル回路２０４が、十分な電力を有し、かつ設定されるときである。ある実施例においては、第３のクラスのレベルシフタは、ディスエーブルされると、デフォルト論理をローレベルで出力するように構成され得る。別の実施例においては、第３のクラスのレベルシフタは、ディスエーブルされると、デフォルト論理をハイレベルで出力するように構成され得る。
【００８３】
第４のクラスのレベルシフタは、プログラマブル回路２０４とＰＳ２０２との間で１つ以上のシステムレベル信号を伝えるように構成され得る。第４のクラスのレベルシフタは、常にイネーブルされるように、つまり動作可能であるように構成され得る。
【００８４】
ＰＳ２０２はＰＣＡＰ２５８をさらに含む。図示されるように、ＰＣＡＰ２５８は、両方ともプログラマブル回路２０４内に位置する、設定コントローラ２６０およびシステムモニタブロック２６２に結合され得る。図示はされないが、ＰＣＡＰ２５８は、プログラマブル回路２０４の設定で使用するために、ＰＳ２０２がＩ／Ｏ装置２４０〜２４８および２２８のいずれかを介して設定データを受信することを可能にするコアスイッチ２３６に結合される。
【００８５】
プログラマブル回路２０４はプログラマブル相互接続回路を用いてともに結合され得る１つ以上のプログラマブル回路ブロックを含むように実現され得る。プログラマブル回路ブロックおよびプログラマブル相互接続回路は、ＩＣ２００にロードされる設定データに基いて、１つ以上の異なる物理的回路、例えばユーザ回路２８０を実現するように設定され得る。プログラマブル回路２０４は、その中に実現され、ここにさらに詳細に記載されるさまざまなハードワイヤードの回路を除き、設定データが設定メモリ内にロードされ、物理的な回路をプログラマブル回路２０４内に実現するまで、動作可能または機能可能ではないことが十分に理解されるべきである。記載されるように、ロードされる設定データは、ＦＭＩＯインターフェイス２５２、割込２９０、インターフェイス２５６などの１つ以上の信号へのユーザ回路２８０の接続性を指定する。
【００８６】
設定コントローラ２６０およびシステムモニタブロック２６２は、ハードワイヤードの回路の形式で実現され得る。設定コントローラ２６０は設定メモリセルへの設定データの書込みを担い、それによって、設定データによって指定される回路をプログラマブル回路２０４内に物理的に実現する。システムモニタブロック２６２は、ＡＤ変換、電圧監視、電流監視および／または温度監視のような機能を実行し得る。
【００８７】
記載されるように、プログラマブル回路２０４は、さらに、１つ以上のＩ／Ｏ装置をハードワイヤードの回路の形式で実現するように構成され得る。例えば、ＪＴＡＧインターフェイス２６４、１つ以上のＭＧＴ２６６Ａ〜２６６Ｄ、周辺構成要素相互接続エクスプレス（ＰＣＩｅ）インターフェイス２６８、内部設定アクセスポート（ＩＣＡＰ）２７０、およびセキュリティポート２７２は、ＩＣ２００のプログラマブル回路２０４内にあるにもかかわらず、ハードワイヤードの回路として含まれ得る。プログラマブル回路２０４内のさまざまなＩ／Ｏ装置は、実現され得る例示的なインターフェイスを示すが、この明細書内に開示される１つ以上の実施例に関して限定的であるようには意図されない。
【００８８】
例えば、設定データは、ＩＣ２００にロードされ得、設定コントローラ２６０によって受信され得る。ある実施例においては、設定データはＰＳ２０２を通して受信され得、それはＩＣ２００の設定処理を制御し得る。設定コントローラ２６０は、ＰＳ２０２からＰＣＡＰ２５８を介して受信された設定データを、ＩＣ２００の設定メモリ（図示せず）内においてロードし得る。ユーザ回路２８０のような異なる物理的回路は、ＩＣ２００の設定メモリにロードされる特定の設定データによって指定されるように、プログラマブル回路２０４内に実現または形成され得る。この態様における設定データのロードは、ハードワイヤードの回路の使用のため、プログラマブル回路２０４の初期設定を必要としないことが十分に理解されるべきである。プログラマブル回路２０４内に実現される回路は、設定データをロードする結果、物理的回路ではあるが、該回路が、ＩＣ２００内においてハードワイヤードまたは他の態様で固定されるのではなく、典型的には「ソフト」と呼ばれ、プログラマブル回路２０４内に形成されるという点において、ＰＳ２０２と区別されることになる。
【００８９】
図２に示されるＩＣアーキテクチャは、他の態様では達成できないさまざまな異なる形式でプログラマブル回路２０４およびＰＳ２０２をともに協働的に使用することを容易にする。ユーザ回路２８０は、記載されるさまざまなインターフェイスの任意のものを通してＰＳ２０２に結合され得る。直接アクセスはインターフェイス２５６を介して与えられ得、一方、ＰＳ２０２へのさらなるアクセスはＦＭＩＯインターフェイス２５２を通して容易にされ得る。一例においては、プログラマブル回路２０４は、規定されたインターフェイスを有する、例えばＩＣ２００に位置しない処理ノードのような、１つ以上の外部の処理ノードに結合し得る。プログラマブル回路２０４は、例えばプログラマブル回路２０４による使用に対して確保されるＩ／Ｏピンを通して外部の処理ノードにアクセスし得る。プログラマブル回路２０４は、さらに、インターフェイス２５６を介してＩ／Ｏ装置２４０〜２４８のような１つ以上のＩ／Ｏ装置および／またはメモリコントローラ２２８にアクセスし得る。
【００９０】
別の例においては、ＰＳ２０２は、プログラマブル回路２０４内に実現される回路に「標準Ｉ／Ｏ」機能を与えるように構成され得る。ＰＳ２０２は、例えば、コアコンプレックス２０６内で実行されるオペレーティングシステムの一部として利用可能になるように、標準入力（ｓｔｄｉｎ）機能、標準出力（ｓｔｄｏｕｔ）機能、および／または標準エラー（ｓｔｄｅｒｒ）機能のライブラリをロードおよび実行するように構成され得る。プログラマブル回路２０４内に実現されるユーザ回路２８０は、インターフェイス２５６の１つ以上を介してコアコンプレックス２０６によって与えられる標準入出力機能を呼び出すかまたはそれにアクセスするように構成され得る。プログラマブル回路２０４内の例えばソフトプロセッサなどの回路がＰＳ２０２から標準Ｉ／Ｏ機能にアクセスすることを可能にすることによって、典型的にはプログラマブル回路２０４内に標準Ｉ／Ｏ機能を実現することから引起されるオーバヘッドが、ＰＳ２０２内における標準Ｉ／Ｏ実施の維持によって克服され得る。これは、他の態様においてはそうであろうほど複雑ではない、能率化されたコントローラが、プログラマブル回路２０４内に実現されることを可能にする。
【００９１】
図３は、この明細書内において開示される別の実施例に従う図２のＩＣ２００を示す第３のブロック図である。図３は、選択されたプロセッサハードウェアリソースの動作を示すＩＣ２００の抽象化された図を示す。図３内において、Ｉ／Ｏ装置３０５および３１０は、Ｉ／Ｏ装置２４２〜２４８、例えば２４２Ａ〜２４２Ｃ、２４６Ａ〜２４６Ｄおよび／または２４８Ａ〜２４８Ｂのうちの任意の２つを表わすように意図される。さらに、例示の目的のために、Ｉ／Ｏ装置３０５および３１０はコアスイッチ２３６を介してコアコンプレックス２０６と結合するように示される。装置がデータを交換するＰＳ２０２のさまざまなメモリ、例えばＬ２キャッシュ２２０およびＯＣＭ２２２は、図示されない。同様に、インターフェイス２５６は、図２を参照して記載されるさまざまなインターフェイスの一般的な表現として示される。例えば、インターフェイス２５６は、インターフェイス２５６Ａ〜２５６Ｄの任意の１つまたはそれより多くを表わし得る。
【００９２】
図示されるように、ＰＳ２０２は、信号をＩ／Ｏ装置３０５および３１０からＩ／Ｏピン３２５またはＦＭＩＯインターフェイス２５２に選択的に結合し得る複数個のスイッチ３１５および３２０を含み得る。図示はされないが、図３に示されるように、ＰＳ２０２のＩ／Ｏ装置（Ｉ／Ｏ装置２４２〜２４８）をマルチプレクサ２５０と結合する各配線は切替可能であり得ることが十分に理解されるべきである。ある実施例においては、ＰＳ２０２に与えられる設定データ、例えば図２の制御レジスタ２５４にロードされるデータは、Ｉ／Ｏ装置３０５および／またはＩ／Ｏ装置３１０がＩ／Ｏピン３２５またはＦＭＩＯインターフェイス２５２に結合されるかどうかを決定し得る。Ｉ／Ｏ装置２４２〜２４８の各々は、Ｉ／Ｏピン３２５またはＦＭＩＯインターフェイス２５２に結合するように、独立して構成され得ることが十分に理解されるべきである。
【００９３】
スイッチ３１５および３２０は、例えばマルチプレクサなど、さまざまな公知のスイッチング回路の任意のものとして実現され得る。スイッチ３１５がＩ／Ｏ装置３０５をＩ／Ｏピン３２５に結合すると、Ｉ／Ｏ装置３０５は外部の処理ノード３３０に結合され得る。図３に示される例においては、Ｉ／Ｏピン３２５は、もっぱらＰＳ２０２による使用のために専用になり得る。この点において、Ｉ／Ｏピン３２５はマルチプレクサ２５０（図示せず）に結合され、プログラマブル回路２０４または例えばユーザ回路２８０による使用のためには利用可能ではない。スイッチ３１５がＩ／Ｏ装置３０５をＩ／Ｏピン３２５から結合解除すると、Ｉ／Ｏ装置３０５は、ＦＭＩＯインターフェイス２５２ならびに例えばプログラマブル回路２０４およびプログラマブル回路２０４内に実現される選択された回路、例えばユーザ回路２８０に結合される。
【００９４】
同様に、スイッチ３２０がＩ／Ｏ装置３１０をＩ／Ｏピン３２５に結合すると、Ｉ／Ｏ装置３１０は外部の処理ノード３３５に結合され得る。スイッチ３２０がＩ／Ｏ装置３１０をＩ／Ｏピン３２５から結合解除すると、Ｉ／Ｏ装置３１０は、ＦＭＩＯインターフェイス２５２ならびに例えばプログラマブル回路２０４およびプログラマブル回路２０４内に実現される選択された回路、例えばユーザ回路２８０に結合される。別の実施例においては、データが外部の処理ノード３３０および３３５に与えられると、データは、スイッチ３１５および３２０を通して再生成されて、ＦＭＩＯインターフェイス２５２を介してユーザ回路２８０に同時に与えられ得る。
【００９５】
スイッチ３１５および３２０は互いから独立して動作し得る。したがって、Ｉ／Ｏ装置３０５はＩ／Ｏピン３２５に結合され得る一方、Ｉ／Ｏ装置３１０はＦＭＩＯインターフェイス２５２に結合される。同様に、Ｉ／Ｏ装置３０５はＦＭＩＯインターフェイス２５２に結合され得る一方、Ｉ／Ｏ装置３１０はＩ／Ｏピン３２５に結合される。他の例においては、両方のＩ／Ｏ装置３０５および３１０がＩ／Ｏピン３２５に結合され得るか、または、両方ともＦＭＩＯインターフェイス２５２に結合され得る。
【００９６】
外部の処理ノード３３０および３３５は、特定のインターフェイスを用いて通信するように構成されるさまざまなシステム、回路または電算処理システムのうちの任意のものであり得る。例えば、外部の処理ノード３３０および／または３３５は、Ｉ２Ｃタイプのインターフェイス、ＣＡＮインターフェイス、シリアル周辺インターフェイス（ＳＰＩ）などを実現し得る。外部の処理ノード３３０および／または３３５のインターフェイスは、ピン３２５に結合され得る。注示されるように、ピン３２５は、マルチプレクサ２５０を介してＩ／Ｏ装置３０５および３１０の１つ以上に結合され得る。
【００９７】
ＰＳ２０２の適切な構成を介して、プログラマブル回路２０４内にインスタンス生成されるユーザ回路２８０は、ＦＭＩＯインターフェイス２５２を通して、Ｉ／Ｏ装置３０５および３１０の一方または両方に結合され得る。このように、ユーザ回路２８０は、データをＰＳ２０２に専用のＩ／Ｏピン間においてプログラマブル回路２０４に専用のＩ／Ｏピンを用いてプロセッサシステム２０２専用のＩ／Ｏピン間においてデータをルーティングするためにＩＣ２００の外部Ｉ／Ｏピン、例えば回路基板レベルトレースなどを結合することなく、Ｉ／Ｏ装置３０５および／または３１０と協働して用いられ得る。
【００９８】
ある実施例においては、ユーザ回路２８０はＦＭＩＯインターフェイス２５２に結合され得る。例えば、スイッチ３１５はＩ／Ｏ装置３０５をＦＭＩＯインターフェイス２５２に結合する状態になり得る。ユーザ回路２８０は、ＦＭＩＯインターフェイス２５２を介して、またはコアスイッチ２３６によりインターフェイス２５６を通して、Ｉ／Ｏ装置３０５に結合され得る。したがって、Ｉ／Ｏ装置３０５に入力され、および／またはＩ／Ｏ装置３０５から出力されるデータは、ユーザ回路２８０を通してルーティングされ、それによって処理され得る。ユーザ回路２８０は、さらに、Ｉ／Ｏピン３４０に結合され得る。Ｉ／Ｏピン３４０はプログラマブル回路２０４による使用に対して専用になり得、したがって、ＰＳ２０２による使用のためには利用可能ではない。例えば、データはＩ／Ｏピン３４０を介して受信され、ユーザ回路２８０内で処理され、Ｉ／Ｏ装置３０５に与えられ得る。同様に、Ｉ／Ｏ装置３０５から受信されたデータは、ユーザ回路２８０によって処理され、Ｉ／Ｏピン３４０に出力され得る。
【００９９】
例えばユーザ回路２８０によって実行されるようにデータを処理することは、受信データを修正し、その修正済のデータの出力すること、または受信データを特定の特性について評価し、その特定の特性が受信データ内に存在することを示す指示信号を出力することを指し得る。受信データを監視する場合においては、ユーザ回路２８０からの任意の指示信号に加えて、受信データも出力され得る。
【０１００】
一例においては、ユーザ回路２８０は、ＦＭＩＯインターフェイス２５２を介してＩ／Ｏ装置３０５から受信されるデータを、第１のフォーマットまたはプロトコルから第２のフォーマットまたはプロトコルに変換するように構成され得る。受信されるデータは、第１のプロトコルに従ってフォーマットされ、ユーザ回路２８０によって処理され、処理されたデータとして第２の異なるプロトコルで出力され得る。処理されたデータはピン３４０から出力され得る。
【０１０１】
別の例においては、ユーザ回路２８０内で受信されるデータは増補を介して修正され得る。例えば、ユーザ回路２８０は、Ｉ／Ｏピン３４０を介して、それに結合される処理ノード（図示せず）から受信されたデータに、タイミング情報、例えばタイムスタンプを追加するように構成され得る。例えば、処理ノードから受信されたイーサネットパケットは、タイムスタンプで増補され、ユーザ回路２８０から処理されたデータとして出力され得る。ユーザ回路２８０はＦＭＩＯインターフェイス２５２およびスイッチ３１５を介してＩ／Ｏ装置３０５にデータを出力し得る。別の例においては、ユーザ回路２８０は、インターフェイス２５６を介してＰＳ２０２に処理されたデータを出力し、コアスイッチ２３６によりＩ／Ｏ装置３０５にデータを与え得る。
【０１０２】
別の例においては、ユーザ回路２８０によって受信されたデータは、受信データ内の特定の予め定められた特性に対して処理、例えば評価され得る。予め定められた特性の検出に応答して、ユーザ回路２８０は、Ｉ／Ｏピン３４０またはインターフェイス２５６に出力され与えられ得る通知信号を生成し得る。ユーザ回路は、さらに、それぞれのスイッチ３１５および／または３２０を介して、ＦＭＩＯインターフェイス２５２にそれぞれ結合されるＩ／Ｏ装置３０５および３１０の一方または両方に、ＦＭＩＯインターフェイス２５２を通して、通知信号を出力するように構成され得る。
【０１０３】
図４は、この明細書内において開示される別の実施例に従う図２のＩＣ２００を示す第４のブロック図である。図４は、ＰＳ２０２のＩ／Ｏ装置３０５のようなプロセッサハードウェアリソースを、プログラマブル回路２０４内で実現されるユーザ回路２８０のような回路と共有することを示す、ＩＣ２００の抽象図を示す。図３に関して述べられたように、ＩＣ２００内における１つ以上の要素は、例示を明瞭かつ容易にするため、図示されていない。例えば、ＦＭＩＯインターフェイス２５２、スイッチ３１５および３２０、ならびにプログラマブル回路２０４内のさまざまな他の要素は、図４には示されない。
【０１０４】
図４に示される例においては、Ｉ／Ｏ装置３０５は、Ｉ／Ｏ装置２４０、２４２、２４６および／または２４８のいずれかを表わし得る。一般に、ＰＳ２０２とプログラマブル回路２０４との間でＩ／Ｏ装置３０５を共有することは、Ｉ／Ｏ装置３０５がいつ利用可能か、および、さらに、Ｉ／Ｏ装置３０５がいつ利用可能ではないか示すために、ロッキング機構の使用を必要とする。図４は、ハードウェアロッキング機構がプログラマブル回路２０４内で実現される例を示す。ユーザ回路２８０のＩ／Ｏ装置３０５に対する制御が認められると、ユーザ回路２８０は、コアスイッチ２３６との組合せでインターフェイス２５６を通してＩ／Ｏ装置３０５にアクセスし得る。コアコンプレックス２０６またはそこで実行される処理のＩ／Ｏ装置３０５に対する制御が認められると、コアコンプレックス２０６は、コアスイッチ２３６との組合せで１つ以上のメモリ（図示せず）を介して通信し得る。
【０１０５】
ロッキング回路４０５は、示されるように、プログラマブル回路２０４内で実現され得る。ロッキング回路４０５は、ユーザ回路２８０およびＰＳ２０２が通信し得る、定義されたインターフェイスを有し得る。コアコンプレックス２０６は、例えば、インターフェイス２５６を介してロッキング回路４０５と通信し得る。インターフェイス２５６をロッキング機構４０５と結合するよう、適切な信号リンクをプログラマブル回路２０４内で確立し得る。Ｉ／Ｏ装置３０５は、プログラマブル回路２０４とＰＳ２０２との間で共有されることになるが、ロッキング回路４０５内にある特定のレジスタ、例えばレジスタ４１０と関連付けられ得る。ロッキング回路４０５は、排他的アクセスを実現し、それによって、ただ１つのエンティティ、例えばプログラマブル回路２０４内の特定の回路、コアコンプレックス２０６内において実行される特定のスレッドまたは処理などに、Ｉ／Ｏ装置３０５へのアクセスまたは使用が認められ得るようにする。排他的アクセスは「ロードストア排他」機能とも称され得る。
【０１０６】
例示において、イーサネット（登録商標）、ＵＡＲＴなどのタイプのＩ／Ｏ装置３０５がコアコンプレックス２０６とユーザ回路２８０との間で共有されることになる場合を考える。ロッキング回路４０５は、共有されるＩ／Ｏ装置３０５の状態、例えば所有権または制御を追跡することに専用のレジスタ４１０を含み得る。レジスタ４１０に記憶される値は、例えば、Ｉ／Ｏ装置３０５が利用可能かまたは使用中かどうか示し得る。ある実施例においては、Ｉ／Ｏ装置３０５に対する制御が認められるエンティティに関連付けられる、および／またはそのエンティティを独自に識別する識別子も、レジスタ４１０内に記憶され得る。したがって、Ｉ／Ｏ装置３０５に対する制御がユーザ回路２８０またはコアコンプレックス２０６によって必要なときは常に、制御を必要とするエンティティはロッキング回路４０５からＩ／Ｏ装置３０５の制御を要求しなければならない。
【０１０７】
制御が要求され、Ｉ／Ｏ装置３０５が利用可能なときには、ロッキング回路４０５は、Ｉ／Ｏ装置３０５に対する制御を要求エンティティに認めることによって、要求するエンティティに応答する。ロッキング回路４０５は、例えば、要求エンティティがＩ／Ｏ装置３０５に対する制御を受取ったことを示す値または信号を、要求エンティティに返し得る。さらに、ロッキング回路４０５は、自動的に、および要求エンティティに応答して、Ｉ／Ｏ装置３０５に関連付けられるレジスタ４１０内に、Ｉ／Ｏ装置３０５がもはや利用可能ではないことを示す値を記憶し得る。述べられたように、制御が認められるエンティティを指定する識別子も、レジスタ４１０内に記憶され得る。したがって、２つのエンティティが同じリソース、例えば同じプロセッサハードウェアリソース、例えばＩ／Ｏ装置３０５を同時に要求するとき、１つの要求エンティティのみが、要求されたリソースにアクセスを認められる。
【０１０８】
ロッキング回路４０５が、さらに、ＰＳ２０２内であろうと、またはプログラマブル回路２０４内であろうと、他のエンティティからＩ／Ｏ装置３０５に対する制御を求める要求を受信し、Ｉ／Ｏ装置３０５に対するレジスタ４１０が、Ｉ／Ｏ装置３０５は利用可能ではないことを示すとき、ロッキング回路４０５は、エラー、またはＩ／Ｏ装置４０５は利用可能ではないという他の表示で応答する。Ｉ／Ｏ装置３０５に対する制御を有するエンティティがもはや制御を必要としないとき、そのエンティティはロッキング回路４０５に通知し得る。それに応答して、ロッキング回路４０５は、Ｉ／Ｏ装置３０５が利用可能であることを示す値をレジスタ４１０内に記憶し得、それによって、要求エンティティの制御からＩ／Ｏ装置３０５を解放する。さらに、同じくレジスタ４１０内に記憶されるエンティティに対するいかなる識別子もクリアまたは消去され得る。
【０１０９】
示されるように、割込信号は、信号２９０を介してＩ／Ｏ装置３０５からプログラマブル回路２０４に、およびコアコンプレックス２０６に伝えられる。Ｉ／Ｏ装置３０５は、特定のタイプのＩ／Ｏ装置３０５および実行されているトランザクションまたは動作に依ってさまざまなイベントに応答して信号２９０を介して割込をトリガするように構成され得る。述べられたように、Ｉ／Ｏ装置３０５は、コアコンプレックス２０６およびプログラマブル回路２０４に与えられ得る、信号２９０として示されるハードワイヤードの割込信号に結合され得る。Ｉ／Ｏ装置に割込を生成させ得るイベントの例は、Ｉ／Ｏ装置３０５が通信している外部の処理ノードからデータを受信すること、Ｉ／Ｏ装置３０５から外部の処理ノードへの要求が時間切れすることなど含み得る。
【０１１０】
Ｉ／Ｏ装置３０５が信号２９０で割込を生成するのに応答して、その時にＩ／Ｏ装置３０５に対する制御を有する特定のエンティティが、必要に応じて応答し得る。例えば、ユーザ回路２８０がＩ／Ｏ装置３０５に対する制御を有するとき、ユーザ回路２８０はその割込を処理し得る。コアコンプレックス２０６、例えばそこで実行される任意の処理は、その割込を無視し得る。同様に、コアコンプレックス２０６内で実行される処理がＩ／Ｏ装置３０５に対する制御を有するとき、その処理または別の処理がその割込を処理し得る。ユーザ回路２８０はその割込を無視し得る。
【０１１１】
図４は、ＰＳ２０２のＩ／Ｏ装置がプログラマブル回路２０４内で実現される回路と共有される場合を示す。別の実施例においては、プログラマブルなファブリック２０４、例えばユーザ回路２８０に、Ｉ／Ｏ装置３０５に対する排他的制御が与えられ得る。その場合、プログラマブル回路２０４がＩ／Ｏ装置３０５に対する排他的制御を有する場合には、ロッキング機構は必要ではない。ＰＳ２０２は、例えば、プログラマブル回路２０４が電源をオフにされることになるのでなければ、Ｉ／Ｏ装置３０５に対する制御を獲得しようとはしない。
【０１１２】
図５は、この明細書内において開示される別の実施例に従う図２のＩＣ２００を示す第５のブロック図である。図５は、ＰＳ２０２のＩ／Ｏ装置３０５として示されるプロセッサハードウェアリソースを、プログラマブル回路２０４内で実現されるユーザ回路２８０のような回路と共有することを示す、ＩＣ２００の抽象図を示す。ＩＣ２００内における１つ以上の要素は、例示を明瞭かつ容易にするため、図示されていない。例えば、ＦＭＩＯインターフェイス２５２、スイッチ３１５および３２０、ならびにプログラマブル回路２０４内のさまざまな他の要素は図５には示されない。
【０１１３】
図５は、メモリコントローラ２２８がＩ／Ｏ装置３０５に対する制御を認めるためのロッキング機構として利用され得るハードウェアロッキング機構の例を示す。メモリコントローラ２２８は、さらに、どのエンティティが、ＩＣ２００の外部にありかつメモリコントローラ２２８を介してＩＣ２００に結合されるメモリ、例えば外部に位置するＲＡＭデバイスなどにアクセスし得るかを判断するためのロッキング機構として機能し得る。
【０１１４】
メモリコントローラ２２８は、例えば、ロードストア排他機能を実現するように構成され得る。図４のロッキング回路の場合にあったように、プログラマブル回路２０４に位置するレジスタを利用するのではなく、メモリコントローラ２２８は、メモリコントローラ２２８それ自体を含む各Ｉ／Ｏ装置に対して、ＩＣ２００の外部に位置するメモリ内のメモリ位置を利用しＰＳ２０２とプログラマブル回路２０４との間で共有され得る。したがって、プログラマブル回路２０４内にあるロッキング回路に要求を出すのではなく、ユーザ回路２８０およびコアコンプレックス２０６は、Ｉ／Ｏ装置３０５および／またはメモリコントローラ２２８のようなプロセッサハードウェアリソースに対する制御を求める要求を、メモリコントローラ２２８に向け得る。
【０１１５】
ユーザ回路２８０およびコアコンプレックス２０６のような要求エンティティは、図４を参照して記載されるように、Ｉ／Ｏ装置３０５に対する制御を実質的に要求し得る。しかしながら、制御についての要求、および制御の解放の通知は、メモリコントローラ２２８に向けられ得る。上述のように、ある実施例においては、メモリコントローラ２２８が結合されるＩＣ２００の外部に位置するＲＡＭも、ＰＳ２０２とプログラマブル回路２０４との間で共有され得る。したがって、制御についての要求は、依然としてメモリコントローラ２２８に向けられ得る。上述のように、例えば、プログラマブル回路２０４にＩ／Ｏ装置３０５またはメモリコントローラ２２８への排他的アクセスが与えられるとき、ロッキング機構は利用される必要はなく、なぜならば、制御は、ＩＣ２００の動作中においてＰＳ２０２とプログラマブル回路２０４との間で動的に変更が行き来しないからである。
【０１１６】
別の実施例においては、コアコンプレックス２０６は、特定の要求エンティティに割当てられるＩ／Ｏ装置のロッキングを実行する。上述のように、インターフェイス２５６の１つ、例えば２５６Ｃは、ユーザ回路２８０のような回路にコアコンプレックス２０６へのコヒーレントアクセスを与え得る。インターフェイス２５６Ｃを通して、ユーザ回路２８０はＰＳ２０２の内部キャッシュ、例えばＬ１キャッシュ、Ｌ２キャッシュ２２０、およびＯＣＭ２２２を見る。コヒーレンシを与えるインターフェイス２５６Ｃを用いることによって、プログラマブル回路２０４、およびより特定的にはユーザ回路２８０は、Ｉ／Ｏ装置２４０を包含するＩ／Ｏ装置３０５および／またはメモリコントローラ２２８の共有のために用いられ得るハードウェアロッキング機構に内蔵されるとともに別の形式を与える、コアコンプレックス２０６のロードストア排他機能を利用し得る。例えば、Ｌ１キャッシュおよび／またはＬ２キャッシュ２２０内のメモリ位置は、Ｉ／Ｏ装置３０５および／またはメモリコントローラ２２８にかかわらず、Ｉ／Ｏ装置の利用可能性を追跡するように用いられ得る。
【０１１７】
図６は、この明細書内において開示される実施例に従うＩ／Ｏ装置を共有する方法６００を示す第１のフローチャートである。特に、方法６００は、Ｉ／Ｏ装置の粗粒度共有（coarse-grained sharing）が容易にされ得る実施例を示す。方法６００は、この明細書内に記載されるようなＩＣ、例えばプログラマブル回路に結合されるＰＳを含むものによって実施され得る。
【０１１８】
方法６００は、プログラマブル回路内に実現される１つ以上のユーザ回路が、ＰＳのプロセッサハードウェアリソースを、ＰＳのコアコンプレックス内で実行される１つ以上の処理と共有するように構成される実施例を示す。例えば、プログラマブル回路内では、カリフォルニア州サン・ホセのザイリンクス社（Xilinx, Inc.）から利用可能なMicroBlazeＴＭソフトプロセッサのようなソフトプロセッサを、例えばユーザ回路２８０として実現し得る。ソフトプロセッサは、プログラマブル回路内に実現されようと、ソフトプロセッサがコヒーレントアクセスを与えるインターフェイスを介して結合される状態でコアコンプレックスによって実現されようと、またはメモリコントローラによって実現されようと、ハードウェアロッキング機構に結合され得る。
【０１１９】
プロセッサハードウェアリソースは、ＰＳのＩ／Ｏ装置２４０〜２４８および／またはメモリコントローラ２２８を参照して記載されるもののうちの任意のものであり得る。例えば、共有されているプロセッサハードウェアリソースは、例えばＱＳＰＩなどのフラッシュタイプのインターフェイス、パラレルＮＯＲ／ＳＲＡＭタイプのインターフェイス、ＮＡＮＤインターフェイスなどであり得る。別の例においては、共有されているプロセッサハードウェアリソースは、ＵＳＢタイプのインターフェイス、イーサネットタイプのインターフェイス、ＳＤタイプのインターフェイス、ＵＡＲＴタイプのインターフェイスなどであり得る。図２のＩ／Ｏ装置２４０〜２４８を参照して記載されるさまざまなＩ／Ｏ装置の種類のうちの任意のものを共有し得る。さらに、メモリコントローラ２２８を共有して、ＰＳとプログラマブル回路との間でオフチップで位置するＲＡＭの共有を容易にし得る。
【０１２０】
したがって、方法６００は、ステップ６０５で開始し、ロッキング機構がさまざまなエンティティからＰＳのプロセッサハードウェアリソースについての制御に対する要求を監視し得る。要求を発行し得るエンティティは、プログラマブル回路内に実現される回路、例えば、ユーザ回路２８０および／もしくはソフトプロセッサ、またはＰＳのコアコンプレックス内で実行される処理を含み得る。ステップ６１０では、ロッキング機構は、要求エンティティから、選択されたプロセッサハードウェアリソースへのアクセスに対する要求を受信し得る。
【０１２１】
ステップ６１５では、ロッキング機構は、選択されたプロセッサハードウェアリソースが利用可能かどうか判断し得る。選択されたプロセッサハードウェアリソースが利用可能ではない、例えば使用中であると判断されたことに応答して、方法６００はステップ６２０に進み得る。ステップ６２０では、ロッキング機構は、要求エンティティに応答して、選択されたプロセッサハードウェアリソースは使用中であり、したがって利用可能ではないことを示し得る。ステップ６２０の後、方法６００は、ステップ６０５にループして戻り、ＰＳのプロセッサハードウェアリソースについての制御に対するさらなる要求を監視し続け得る。
【０１２２】
選択されたＩ／Ｏ装置が利用可能であると判断されることに応答して、方法６００はステップ６２５に続き得る。ステップ６２５では、ロッキング機構は、選択されたプロセッサハードウェアリソースは利用可能であると判断されたことに応答して、要求エンティティに対して、制御の許可により応答し得る。ロッキング機構は、要求エンティティに対して、選択されたプロセッサハードウェアリソースは利用可能であり、選択されたプロセッサハードウェアリソースに対する制御が要求エンティティに対して認められたことを通知し得る。さらに、ロッキング機構は、選択されたプロセッサハードウェアリソースを使用中としてマーキングし得る。ある実施例においては、ロッキング機構は、さらに、要求エンティティの識別情報またはその表示を記憶し得る。この点において、ロッキング機構は、制御の許可がタイムリミットなどのようなエラーを低減および／または除去するための確立された方針に反しなければ、選択されたプロセッサハードウェアリソースを要求エンティティから解放する要求に対してのみ応答するように構成され得る。
【０１２３】
ステップ６３０では、要求エンティティは、任意的に、選択されたプロセッサハードウェアリソースを構成し得る。ステップ６３０は、共有されるプロセッサハードウェアリソースが、プロセッサハードウェアリソースに対する制御を共有する２つ以上の異なるエンティティに対して異なるように構成されてもよい場合を示す。例えば、複数の異なるデータレートのいずれかで通信することができるＵＡＲＴの場合を考える。例えばコアコンプレックス内で実行される処理などの、第１の要求エンティティは、第１のデータレート、例えば９６００のボーレートで第１の外部の処理ノードと通信するために、ＵＡＲＴを利用し得る。ＩＣのプログラマブル回路内のソフトプロセッサは、第２の異なるデータレート、例えば１２００のボーレートで第２の外部の処理ノードと通信するために、同じＵＡＲＴを利用し得る。
【０１２４】
したがって、１つの局面において、要求エンティティは、まず、選択されたＩ／Ｏ装置が必要とされているように通信するように適切に構成されるかどうかを判断しなければならない。例えば、選択されたＩ／Ｏ装置は、制御が認められた要求エンティティによって必要されるのとは異なるデータレートを用いて通信するように構成されるかもしれない。その場合、要求エンティティは、所望のデータレートで通信するようにプロセッサハードウェアリソースを構成しなければならない。
【０１２５】
ステップ６３５では、プロセッサハードウェアリソースは適切に構成される状態であり、要求エンティティは、選択されたプロセッサハードウェアリソースで動作を開始し得る。ステップ６４０では、選択されたプロセッサハードウェアリソースは、要求エンティティに対してその動作を実行し得る。例えば、要求エンティティは、ＵＡＲＴに対して、目標宛先または処理ノードから特定のデータ量をフェッチするように命令し得る。ＵＡＲＴは、その要求に応答して、要求されたデータをフェッチし得る。ステップ６４５では、選択されたプロセッサハードウェアリソースは割込を生成し得る。割込は、要求エンティティに対して、動作が実行された旨、例えば、実行された動作に応答してデータが準備できている旨を表明する。
【０１２６】
ステップ６５０では、割込に応答して、要求エンティティは、選択されたプロセッサハードウェアリソースによる動作の実行からもたらされる任意のデータを検索し得る。例えば、要求エンティティがプログラマブル回路内のソフトプロセッサである場合、ソフトプロセッサは割込を処理し、データを検索し得る。その場合、コアコンプレックスは、選択されたプロセッサハードウェアリソースに対して要求がなされなかったこと、および／またはコアコンプレックス内で実行される処理は割込を出したプロセッサハードウェアリソースに対する制御を有さないことを知っている。したがって、コアコンプレックスは、生成される割込を無視し得、それによって、プログラマブル回路内の回路が割込を処理することを可能にする。同様に、コアコンプレックスまたはその中の処理が要求エンティティであるとき、コアコンプレックス内の処理は割込を処理し得、一方で、プログラマブル回路内のソフトプロセッサはその割込を無視し得る。ソフトプロセッサは、例えば、割込を出した特定のプロセッサハードウェアリソースに対してソフトプロセッサが制御を有していないことを承知し得る。
【０１２７】
ステップ６５５では、要求エンティティは選択されたプロセッサハードウェアリソースを解放し得る。例えば、要求エンティティは、ロッキング機構に対して解放要求を出し得る。ロッキング機構は、それに応答して、解放要求が、要求エンティティ、例えば選択されたプロセッサハードウェアリソースに対する制御を認められたエンティティから生じることを認識し、選択されたプロセッサハードウェアリソースを利用可能としてステップ６６０においてマーキングし得る。ステップ６６０の後、方法６００はステップ６０５にループして戻り、ＰＳのプロセッサハードウェアリソースに対する制御を獲得するさらなる要求に対して監視をし続け得る。
【０１２８】
上述のように、図６は、ＰＳとプログラマブル回路との間でのＰＳのプロセッサハードウェアリソースの共有に対する粗粒度アプローチを示す。別の実施例においては、共有は細粒度であり得る。例示において、コアコンプレックス内で実行される１つ以上の処理が、ＵＡＲＴインターフェイスまたはイーサネットインターフェイスのような選択されたプロセッサハードウェアリソースを介して特定の処理ノードと通信する場合を考える。例えばソフトプロセッサなどの、プログラマブル回路内で実現される回路は、さらに、同じ選択されたプロセッサハードウェアリソースを介して同じ処理ノードと通信するように構成され得る。
【０１２９】
その場合、実質的に同じ共有機構、例えば、ロッキング機構を利用し得る。選択されたプロセッサハードウェアリソースに対する制御が変化するたびごとに、選択されたプロセッサハードウェアリソースを再構成するのではなく、両方の要求エンティティが同じパラメータを用いて処理ノードと通信し得る。例えば、選択されたプロセッサハードウェアリソースの構成は、コアコンプレックス内で実行される処理およびプログラマブル回路によってアクセスされることから切り換わるとき、一定かまたは静的なままであり得る。プログラマブル回路とコアコンプレックス内で実行される処理との両方は、選択されたプロセッサハードウェアリソースを通して外部の処理ノードと同じデータレートで通信し得る。したがって、細粒度共有アプローチが実現されるとき、図６のステップ６３０を実行する必要はない。
【０１３０】
図６は、さらに、割込信号を利用して、プロセッサハードウェアリソースに対する制御を有する特定のエンティティに対して、プロセッサハードウェアリソースからのデータが準備できている旨または特定の動作が処理を完成した旨を通知する実施例について記載する。別の実施例においては、記載される割込機構の代わりに、ポーリングを利用し得る。例えば、プロセッサハードウェアリソースに対する制御が認められたエンティティは、例えば、通知または割込信号を待つのではなく、プロセッサハードウェアリソースのステータスをチェックするために、プロセッサハードウェアリソースをポーリングするように構成され得る。制御を有するエンティティは、実行されているトランザクションまたは動作のステータスを判断するために、周期的に、継続的に、または時々、プロセッサハードウェアリソースに問合せる。
【０１３１】
上述のように、１つ以上の実施例は、ＰＳとプログラマブル回路との間の電力独立を容易にする、複数の異なるパワードメインを有するＩＣを含む。図７〜図１０は、まとめて、プログラマブル回路が動作する第２のパワードメインと別個でありかつそれから独立した第１のパワードメインにおいてＰＳが動作するＩＣ内における電力管理のさまざまな局面を示す。したがって、プログラマブル回路はＰＳから独立して電源をオフにされ得る。ある実施例においては、ＰＳは、プログラマブル回路の電源オンおよび／またはオフ処理を制御し得る。
【０１３２】
ＰＳから独立してプログラマブル回路の電力サイクルを行なう能力に鑑み、電力管理機能は、プログラマブル回路の電源オンおよび電源オフの一方または両方のいずれかの間において、プロセッサハードウェアリソースの管理を含み得る。さらに、例えば、通信がプログラマブル回路を通してルーティングされるとき、電力管理機能は、外部の処理ノードと通信しているＰＳのプロセッサハードウェアリソース間において確立されてもよい任意の関係の管理を含み得る。
【０１３３】
図７は、この明細書内において開示される別の実施例に従うシステム７００を示す第６のブロック図である。図示されるように、システム７００は、ＩＣ７０５と、電源７３０と、スイッチ７３５、７４０および７４５として示される１つ以上のスイッチとを含み得る。ＩＣ７０５は、実質的に図１および図２において示されるＩＣを参照して記載されるように実現され得る。しかしながら、図７は、より明らかに電力管理機能を示すために、ＩＣ７０５の抽象化された図を示す。したがって、ＩＣ７０５はＰＳ７１０およびプログラマブル回路７１５を含み得る。ある実施例においては、プログラマブル回路７１５はＦＰＧＡの形式で実現され得る。ＰＳ７１０およびプログラマブル回路７１５は、７２０Ａ〜７２０Ｃとして示される１つ以上のレベルシフタ７２０によってともに結合され得る。
【０１３４】
電源７３０は、電力信号７５０、７５２および７５４のような複数個の電力信号を生成し得る。ある実施例においては、電力信号７５０〜７５４の各々は異なる電位を有し得る。示されるように、電力信号７５０〜７５４はＩＣ７０５のＰＳ７１０内においてＰＳ電圧検出器７１２に結合される。
【０１３５】
電力信号７５０〜７５４の各々は、さらに、それぞれ、スイッチ７３５〜７４５の１つに結合され得る。スイッチ７３５〜７４５は、電力信号７５０〜７５４をプログラマブル回路７１５内のファブリック電圧検出器７２５に選択的に通過させるように構成され得る。スイッチ７３５〜７４５の各々は、ＰＳ７１０によって生成された制御信号７５６に応答して、電力信号７５０〜７５４を選択的にファブリック電圧検出器７２５に通過させ得る。図７に示される実施例においては、ＰＳ電圧検出器７１２は制御信号７５６を生成し得る。スイッチ７３５〜７４５がオンにされると、電力信号７５０〜７５４はプログラマブル回路７１５に伝搬する。スイッチ７３５〜７４５は、オフにされると、電力信号７５０〜７５４をプログラマブル回路７１５から結合解除する。
【０１３６】
ＰＳ電圧検出器７１２は、電力信号７５０〜７５４を監視し、各電力信号７５０〜７５４がここにさらに詳細に記載される１つ以上の異なる電圧閾値をいつ満たすか判断するように構成され得る。示されるように、ＰＳ電圧検出器７１２は２つの位置において電力信号７５４に結合される。ＰＳ電圧検出器７１２は、電源７３０とスイッチ７４５との間の位置、およびスイッチ７４５とファブリック電圧検出器７２５との間の位置で、電力信号７５４に結合され得る。
【０１３７】
電力信号７５０は、ＩＣ７０５のｌ／Ｏに電力を与えるために用いられ得る１．２〜１．８ボルトの電力信号として実現され得る。電力信号７５２は、ＩＣ７０５に、プリドライバ電圧およびバイアス電圧を与えるために用いられ得る１．８ボルトの電力信号として実現され得る。電力信号７５４は、例えば、ＩＣ７０５の論理回路を供給するために用いられ得る１ボルトの電力信号として実現され得る。例示の目的ならびにそういうものとして記載される例および値は、この明細書内に開示される１つ以上の実施例の限定として意図されるものではない。
【０１３８】
レベルシフタ７２０は、図２のレベルシフティング回路２９６を参照して記載されるように実現され得る。図示されるように、レベルシフタ７２０は、２つの位置において、例えば、スイッチ７４５に先立って、およびスイッチ７４５から出力されるように、電力信号７５４に結合され得る。一般に、スイッチ７３５〜７４５の各々は、各それぞれのスイッチからの出力がそのスイッチに入力として与えられる電力信号未満である電圧を有するように電圧降下を引起すある抵抗を有する。したがって、２つのパワードメインが同じ電圧で動作するように意図される場合に、各パワードメインに与えられる電力信号上の電圧における変動が、スイッチ７３５〜７４５の抵抗および１つ以上の他の要因のために生じ得る。レベルシフタ７２０は、第１のパワードメインつまりＰＳ７１０と第２のパワードメインつまりプログラマブル回路７１５との間において信号を通過させるために電圧におけるこれらの変動の原因と成り得る。
【０１３９】
示されるように、プログラマブル回路７１５は、さらに、ファブリック電圧検出器７２５として示される電圧検出器を含み得る。ファブリック電圧検出器７２５は、信号７５０〜７５４の各々が予め定められる電圧レベルにいつ到達するか検出し、それに応答して、信号７５８を生成し得る。信号７５８はレベルシフタ７２０Ａを介してＰＳ７１０に与えられ得る。レベルシフタ７２０Ａは、例えば、第４のクラスのレベルシフタとして実現され得る。図示されないが、ＰＳ電圧検出器７１２または１つ以上の他の要素からＰＳ７１０の全体にわたって電力信号が分配され得ることが十分に理解されるべきである。同様に、電力信号は、ファブリック電圧検出器７２５または１つ以上の他の要素からプログラマブル回路７１５の全体にわたって分配され得る。加えて、ファブリック電圧検出器７２５は、プログラマブル回路７１５内に位置するにもかかわらず、ＩＣ７００の１つ以上の他のシステムレベル要素とともにハードワイヤードの回路として実現され得る。
【０１４０】
動作においては、ＩＣ７００は電源をオンにされ得る。電源７３０は、例えば、ＩＣ７００に電力を供給し始め得る。ＰＳ７１０は、プログラマブル回路７１５の電源をオンにすること、およびプログラマブル回路７１５の設定を助け得る。ＰＳ７１０に電力を供給すると直ちに、ＰＳ電圧検出器７１２は電力信号７５０〜７５４で電圧を監視し始め得る。電力信号７５０〜７５４上の電圧の１つ以上またはすべては、最小ＩＯＢ電圧とも称される、第１の所定の最小電圧レベルを満たすと判断されることに応答して、ＰＳ電圧検出器７１２は制御信号７６０を介してＩＯＢ７２８をイネーブルし得る。
【０１４１】
一般に、ＰＳ電圧検出器７１２がＩＯＢ７２８をイネーブルするとき、ＰＳ電圧検出器７１２は、電力信号７５０〜７５４の１つ以上またはすべてを介して受取られる電位は、ＩＯＢ７２８を駆動するように十分であり、例えば、最小ＩＯＢ電圧を満たしている、と判断している。例えば、ＩＯＢ７２８は、内部電力信号をＩＯＢ７２８に結合することによってイネーブルされ得る。最小ＩＯＢ電圧は、ＩＯＢ７２８が動作するのに十分に高くあり得るが、ＰＳ７１０の起動またはブートを開始するよう十分に高い必要はない。したがって、最小ＩＯＢ電圧は、動作モード内のＰＳ７１０の動作のための好ましいかまたは法的な電圧範囲より依然として低くあり得る。
【０１４２】
一旦活性状態になると、ＩＯＢ７２８は電力指示信号７６２を受信できる。電力指示信号７６２は電源７３０または他の外部ソースによって与えられ得る。電力指示信号７６２は、例えば、電源７３０が安定しているとき、および、したがって、電力信号７５０〜７５４が安定しており、ＰＳ７１０の起動が始まるのに必要な範囲内あるとき、ハイレベルにセットされ得る。したがって、ＰＳ７１０は、ＰＳ電圧検出器７１２を利用してＩＯＢ７２８をイネーブルするが、ＰＳ７１０は、電源７３０がいつ動作可能であり安定しているかを示すための電力指示信号７６２に依存する。
【０１４３】
電力指示信号７６２を受信したことに応答して、例えば信号がハイレベルになると、ＰＳ７１０はブートまたは起動処理を開始し得る。起動処理は、残りの図を参照して、より詳しく記載される。ある実施例においては、起動処理の一部として、ＰＳ電圧検出器７１２は、制御信号７５６を介してスイッチ７３５〜７４５をオンにし得、それによって、プログラマブル回路７１５を電力信号７５０〜７５４と結合する。
【０１４４】
スイッチ７３５〜７４５がオンにされているので、ＰＳ電圧検出器７１２は、電力信号７５４上の電圧をスイッチ７４５からの出力として監視し得る。ＰＳ電圧検出器７１２は、信号７５４上の電圧が、最小レベルシフタ電圧と呼ばれる第２の所定の最小電圧を満たす、と判断すると、ＰＳ電圧検出器７１２は、レベルシフタ７２０の１つ以上、例えばレベルシフタ７２０Ａをイネーブルし得る。最小レベルシフタ電圧は、プログラマブル回路７１５内の１つ以上の選択された装置、例えばレベルシフタ７２０Ａが動作するのに十分な電圧であり得る。
【０１４５】
ある実施例においては、最小レベルシフタ電圧は、プログラマブル回路および／またはレベルシフタ７２０の１つ以上、例えば相補型金属酸化物半導体（ＣＭＯＳ）装置を用いて実現される回路などが機能するのに十分に高い電圧であり得る。最小レベルシフタ電圧は、装置が機能するよう十分に大きい一方で、依然として、例えば設定機能およびプログラマブル回路７１５が一般に動作モードにあるようにサポートするようにプログラマブル回路７１５内の装置の動作にとって必要な好ましいかまたは法的な電圧範囲より低いような電圧であり得る。最小ＩＯＢ電圧は、最小レベルシフタ電圧と同じ、つまり等しくあり得るが、必ずしもその必要はない。
【０１４６】
さらに、スイッチ７３５〜７４５がイネーブルされた状態なので、ファブリック電圧検出器７２５は動作を開始し得る。ファブリック電圧検出器７２５は、電力信号７５０〜７５４の各々上の電圧の監視を開始し、電力信号７５０〜７５４の１つ以上またはすべての電圧が最小プログラマブル回路電圧と呼ばれるプログラマブル回路７１５の動作のために必要とされる第３の所定の最小電圧をいつ満たすかを判断し得る。
【０１４７】
ファブリック電圧検出器７２５は、電力信号７５０〜７５４の１つ以上またはすべての電圧が最小プログラマブル回路電圧を満たすと判断されることに応答して、ファブリック電圧検出器７２５は、ＰＳ７１０に、プログラマブル回路７１５の電源がオンにされることを示す信号７５８、例えばプログラマブル回路電力指示信号を生成し得る。例えば、電力信号７５０〜７５４の１つ以上またはすべてが最小プログラマブル回路電圧を満たすとき、ファブリック電圧検出器７２５は信号７５８をハイレベルにし得る。最小プログラマブル回路電圧は、プログラマブル回路７１５が適切に機能するために、例えば、動作モードのままでいるために、かつ設定を受けるために必要とされる最小の法的な電圧レベルである。最小プログラマブル回路電圧は、一般に、最小ＩＯＢ電圧および／または最小レベルシフタ電圧より高い。電力信号７５０〜７５４の１つ以上またはすべてが最小プログラマブル回路電圧を満たすとファブリック電圧検出器７２５が判断することに応じた信号７５８の生成は、プログラマブル回路７１５が設定に対して準備できていること、例えば、設定データが、物理的な回路をそこに実現するようロードされることに対して準備できていることを示す。
【０１４８】
ある実施例においては、ファブリック電圧検出器７２５は２つの異なるモードの１つにおいて動作し得る。ファブリック電圧検出器７２５が動作する特定のモードは、外部ソースから受信される制御信号７６４に応答して選択され得る。制御信号７６４の状態によって、ファブリック電圧検出器７２５は第１のモードまたは第２のモードで動作し得る。
【０１４９】
第１のモードにおいては、ファブリック電圧検出器７２５は、信号７５８を生成する前、例えば信号７５８をハイレベルにする前であって、電力信号７５０〜７５４の１つ以上またはすべてが最小プログラマブル回路電圧を満たすと判断された後、予め定められた量の時間を待機する。その時間量は、例えば、おおよそ５０ミリ秒であり得るが、他の時間期間も用いられ得る。第２のモードにおいては、ファブリック電圧検出器７２５は、電力信号７５０〜７５４の１つ以上またはすべてが最小プログラマブル回路電圧を満たすと判断されることに応答して、信号７５８を直ちに生成し得る。信号７５８は、プログラマブル回路７１５が機能可能であり、例えば動作モードにあり、１つ以上の異なる回路を実現するように構成され得ることを、ＰＳ７１０に示す。
【０１５０】
図７は、独立したパワードメインを達成するためにＰＳ７１０とプログラマブル回路７１５との間においてスイッチおよび共通の電力信号を用いることを記載しているが、同様の結果はさまざまな異なる態様で達成することができる。例えば、２つの完全に独立した電源が用いられ得る。その場合、外部スイッチに制御信号を与えるのではなく、制御信号７６４が、プログラマブル回路７１５に電力を与える電源に与えられて、プログラマブル回路７１５の電源をオンおよび／またはオフにし得る。他の例においては、スイッチをＩＣ７００内に含み得る。その場合、制御信号７５６を、ＩＣ７００内にあるスイッチに与えて、プログラマブル回路７１５の電源をオンおよび／またはオフにし得る。
【０１５１】
図８は、この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法８００を示す第２のフローチャートである。特に、方法８００は、ＩＣの電源をオンにする例示的な方法を示す。方法８００は、この明細書の図１〜図７を参照して記載されるようなＩＣによって実行され得る。
【０１５２】
したがって、ステップ８０５では、電力はＩＣのＰＳに印加または結合され得る。ステップ８１０では、ＰＳ電圧検出器は、ＰＳに供給される電力信号が、外部で生成された電力指示信号に結合されるＩＯＢを動作させるように、電圧要件、例えば最小ＩＯＢ電圧を満たす、と判断し得る。したがって、電力信号が最小ＩＯＢ電圧を満たすという判断に応答して、ステップ８１５では、ＰＳ電圧検出器は、電力指示信号に結合されるＩＯＢの電源をオンにし得る。ある実施例においては、ＩＯＢの動作のための必要な電圧レベルは、ＰＳの動作のために典型的に必要とされる電圧レベル未満であり得る。
【０１５３】
ステップ８２０では、ＰＳは、電力指示信号がハイレベルになり、電源が安定状態に到達したことを示すことを検出し得る。例えば、安定状態が達成されるまで、電力指示信号は、ＩＣの外部の電源によってローレベルに保持され得る。一旦安定状態が達成されると、電源は、電力指示信号をハイレベルにして、ＰＳの動作のために必要な電圧が電源から利用可能であることを示し得る。ＰＳ電圧検出器は、ステップ８１５で電力指示信号が結合されるＩＯＢの活性化により電力指示信号における状態変化を検出し得る。
【０１５４】
ステップ８２５では、電力指示信号の“ハイ”状態を検出することに応答して、ＰＳ電圧検出器はＰＳにおいてブートまたは起動処理を開始し得る。ステップ８３０〜８５０は、一般に、ＰＳによって実行され得る起動処理について記載する。ステップ８３０では、ＰＳは内部で生成された基準クロックを用いて動作を開始し得る。内部で生成された基準クロックは、例えば、図２のクロックユニット２２６によって生成され得る。一般に、内部基準クロックは、通常動作中、例えば動作モード中においてＰＳを最終的にクロック制御するように用いられるクロック信号の周波数未満である周波数で動作する。例えば、ある実施例においては、内部クロック信号は、約３０ＭＨｚの周波数を有し得る。
【０１５５】
ステップ８３５では、ＰＳは、バンドギャップ回路をイネーブルとし、またはその電源をオンにし得る。バンドギャップ回路は、例えば、ＰＳのクロックユニット内に位置し得、一般に、同じくクロックユニット内に位置するＰＬＬによる使用のための基準電圧を与える。したがって、ステップ８４０では、ＰＳは、ＰＬＬをイネーブルし、フルスピード動作を開始し得る。例えば、内部で生成された基準クロックを用いて動作するとき、クロックユニットのＰＬＬはバイパスされる。バンドギャップ回路およびＰＬＬがイネーブルされると、ＰＬＬはもはやバイパスされず、それによって、クロックユニットのＰＬＬが同期し得る外部から与えられるクロック信号に従って、ＰＳを、フルスピードで動作させることができる。上述のように、一旦動作可能になると、ＰＬＬによって出力されるクロック信号の周波数は、内部で生成された基準クロックより十分に高くなり得る。
【０１５６】
ステップ８４５では、ＰＳは、メモリコントローラを介してＰＳに結合されるＲＡＭをイネーブルし得る。ステップ８５０では、ＰＳは任意の終端較正手順（termination calibration procedure）および／または回路を活性化し得、それによって、ＲＡＭと同期する。一般に、ステップ８５０の後、ＰＳは動作モードにあると考えられ得る。ＰＳは、例えば、リセット状態を脱したプログラムコードを実行し得る。他の例においては、ＰＳは、さらに、プログラマブル回路のための電力を管理し始め得る。
【０１５７】
ステップ８５５では、ＰＳは、ＩＣのプログラマブル回路部分の電力オン手順の管理を開始する。例えば、ステップ８５５では、ＰＳは、ＩＣのプログラマブル回路に電力を供給するスイッチをオンにするか、またはそうでなければプログラマブル回路の電源をイネーブルし得る。例えば、ＰＳは、制御信号を介して、スイッチにオンするように命令し得、それによって、スイッチにより受取られた任意の電力信号がプログラマブル回路に出力および伝搬されるのを可能にする。
【０１５８】
ステップ８６０では、プログラマブル回路への電力信号が、プログラマブル回路電力指示信号に結合されるレベルシフタを動作させるための最小レベルシフタ電圧を満たす、とＰＳ電圧検出器は判断する。ステップ８６５では、プログラマブル回路は、電力信号は最小プログラマブル回路電圧を満たす、と判断し得る。ステップ８７０では、電力信号が最小プログラマブル回路電圧を満たすと判断されることに応答して、プログラマブル回路は、プログラマブル回路が設定に対して準備できている旨の信号をＰＳに送る。上述のように、プログラマブル回路は、ＰＳによってイネーブルされたシステムレベルシフタの１つに結合されるプログラマブル回路電力指示信号を通して、設定のための準備ができている旨を通信し得る。
【０１５９】
ステップ８７５では、ＰＳは、ＰＳとプログラマブル回路との間においてシステムレベル信号を通信するために用いられる任意のレベルシフタをイネーブルし得る。ある実施例においては、ＰＳは、プログラマブル回路の設定を必要としないレベルシフタをイネーブルし得る。ＰＳとプログラマブル回路との間で送られるクロック信号を伝搬する１つ以上のレベルシフタをさらにイネーブルし得る。
【０１６０】
ディスエーブルされると、各レベルシフタは、一定値、例えばハイレベルまたはローレベルのいずれかを出力するように構成され得る。一旦イネーブルされると、レベルシフタの出力はレベルシフタに与えられる入力に依存するようになる。ある実施例においては、レベルシフタは、論理ハイを受信すると、論理ハイを出力し得、論理ローを受信すると、論理ローを出力し得る。他の実施例においては、レベルシフタは相補的な値を出力するように構成され得る。例えば、レベルシフタは、論理ハイを入力として受信すると、論理ローを出力し得る。同様に、レベルシフタは、論理ローを入力信号として受信すると、論理ハイを出力するように構成され得る。いずれにせよ、ディスエーブルされると、レベルシフタは、一定の論理ハイまたは一定の論理ローを出力するように構成され得る。
【０１６１】
ステップ８８０では、ＰＳは、１つ以上の回路を実現するようにプログラマブル回路を構成し得る。ある実施例においては、動作可能なＰＳは、オフチップに位置される記憶位置からのプログラマブル回路のための設定データにアクセスし得る。例えば、ＰＳは、外部メモリから設定データを取出す／読出すか、または例えばイーサネット接続などの通信リンクを通じて設定データに対する要求を発行し得る。ＰＳによって受信される設定データは、ＰＣＡＰインターフェイスに与えられ、プログラマブル回路内の設定コントローラに送られ得る。設定コントローラは、次いで、設定データを設定メモリセル内にロードし、それによって、設定データによって指定される物理的な回路を実現する。
【０１６２】
ステップ８８５では、ＰＳは、ＰＳとプログラマブル回路との間においてユーザ信号を通過させるために利用可能なレベルシフタをイネーブルし得る。ステップ８８５の後、ＩＣ全体が動作可能である。上述のように、ＰＳは動作モードにあり、プログラムコードを実行する能力がある。さらに、プログラマブル回路は動作モードにある。ある実施例においては、プログラマブル回路は、ユーザ指定信号の生成を通した設定の後に続くリセットタイプの状態から解放され得る。ユーザ指定信号は、ステップ８８０を参照して記載されるような設定データのロードの結果においてプログラマブル回路内に実現される回路によって生成される信号であり得る。
【０１６３】
図９は、この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法９００を示す第３のフローチャートである。特に、方法９００は、この明細書の図１〜図８を参照して記載されるように構成されるＩＣのプログラマブル回路の電源をオフにするための１つの技術を示す。方法９００は、ＰＳによって、プログラマブル回路を含むＩＣの電力管理をどのように実行し得るかを示す。方法９００は、ＰＳおよびプログラマブル回路の両方が動作可能な状態、例えば動作モードにある状態において開始し得る。ＰＳはプログラムコードを実行しているところであり得、プログラマブル回路内に実現される回路は動作しているところであり得る。ある信号またはイベントに応答して、ＰＳは、プログラマブル回路の電源がオフされると判断し得、したがって、プログラマブル回路のための電源オフ手順を開始し得る。
【０１６４】
ステップ９０５で開始すると、ＰＳは、プログラマブル回路内において、電源オフ手順を起動し、プログラマブル回路内に実現される回路の状態が記憶され、少なくとも一部が、その後、プログラマブル回路の電源が再びオンにされると回復される。電源オフ手順は、プログラマブル回路に関連するので、一般にはステップ９０５〜９２５を含む。
【０１６５】
したがって、ステップ９０５において、ＰＳは、プログラマブル回路をアイドル状態に置き得る。例えば、ＰＳは、任意のさらなる、または新しいトランザクションにプログラマブル回路が入るのを防止しながら、進行中かまたはプログラマブル回路に与えられた任意の動作が完了することを可能にされる状態にプログラマブル回路を置く。プログラマブル回路への動作が完了すると、例えば、ＰＳはプログラマブル回路を停止させること、例えばプログラマブル回路などに与えられるさまざまなクロック信号をゲート制御し得る。したがって、プログラマブル回路は、もはや動作モードにはない。
【０１６６】
ステップ９１０において、ＰＳは任意的にプログラマブル回路に照会して、プログラマブル回路内に実現される回路、例えばユーザ回路のための状態情報を判断し得る。ある実施例においては、プログラマブル回路内に記憶されるデータは、ＰＳによって、設定読戻し機能、境界走査機能などを用いて、得られ得る。例えば、プログラマブル回路内において１つ以上のメモリに記憶されるデータが、ＰＳによって得られるかまたは読出され得る。そのようなデータは、プログラマブル回路内に実現される回路によって必要とされる係数のテーブルまたは他のデータを含み得る。他の例においては、ＭｉｃｒｏＢｌａｚｅＴＭのようなソフトプロセッサがプログラマブル回路内に実現されると、レジスタに記憶された値、およびプログラマブル回路内におけるソフトプロセッサのプログラムメモリの内容が、取得され得る。
【０１６７】
ステップ９１５において、ＰＳは、プログラマブル回路から得られた状態情報をメモリに任意的に記憶し得る。ある実施例においては、ＰＳは、オフチップに位置するメモリ内に状態情報を記憶し得る。例えば、ＰＳは、外部ＲＡＭ内に状態情報を記憶し得る。他の実施例においては、ＰＳは、内部メモリ内に状態情報を記憶し得る。例えば、ＰＳは、ＰＳ内に位置する、図２を参照して記載されるＯＣＭ内に状態情報を記憶し得る。
【０１６８】
ステップ９２０において、ＰＳ、例えばコアコンプレックスは、プログラマブル回路をＰＳと結合するレベルシフタを既知の状態に置き得る。例えば、レベルシフタは、論理０または論理１を維持するように、ある状態に置かれ得る。ある場合には、いくつかのレベルシフタは論理０を維持するように構成され得る一方、他のレベルシフタは論理１を維持するように構成される。レベルシフタを既知の状態に置くことは、擬似信号がＰＳ内においてイベントをトリガするのを防ぐ。例えば、擬似信号は、プログラマブル回路の電源がオフにされている間、レベルシフタに結合されるＰＳシステムまたは要素、例えばＦＭＩＯインターフェイスに結合されるＩ／Ｏ装置、プログラマブル回路と他のインターフェイスを通して結合される他のＰＳブロックなどに、割込のようなイベントを誤って生成させ得る。割込がプログラマブル回路によって処理されることになっていて、プログラマブル回路の電源がオフにされると、割込は処理されず、それによって、ＰＳ内において、未解決のイベントまたは他の問題を引起す。
【０１６９】
ステップ９２５において、ＰＳはプログラマブル回路の電源をオフにし得る。例えば、ＰＳは、制御信号を介して、プログラマブル回路を電力信号から結合解除するようにスイッチに命令し得る。一旦プログラマブル回路の電源がオフにされると、ＰＳは、動作し、プログラムコードを通常の動作状態において実行することを継続し得る。代替的に、プログラマブル回路の電源をオフにすることに引き続いて、ＰＳは、任意的に低電力モードに置かれてもよい。低電力モードにある間、ＰＳはプログラムコードを実行せず、システムクロックが例えばフルスピードで動作している動作モードのときより大幅により少ない電力を消費する。
【０１７０】
したがって、ステップ９３０〜９５０は本来オプションであり、低電力モード、例えばスリープモードにＰＳを置くためのステップを示し得る。ある実施例においては、例えば、ＰＳは、プログラマブル回路の電源をオフにすることに応答して低電力モードを開始するように構成され得る。他の実施例においては、ＰＳは、ＩＣの外部のソースから受信された信号または割込に応答して、低電力モードに入るように命令され得る。
【０１７１】
ステップ９３０において、ＰＳは、クロックユニット内で動作するＰＬＬをバイパスし得る。ＰＬＬがバイパスされると、ＰＳは内部で生成される基準クロックを用いて動作を開始し得る。ステップ９３５において、ＰＳはバンドギャップ回路の電源をオフにし得る。ステップ９４０において、ＰＳはＲＡＭをセルフリフレッシュモードに置き得る。ステップ９４５において、ＰＳは、ＲＡＭのための終端較正機能をディスエーブルし得る。ステップ９５０において、基準クロックはＰＳ内における電力消費をさらに低減するために分周され得る。例えば、約３０ＭＨｚの周波数を有する内部生成クロックは、約１ＭＨｚまで分周され得る。
【０１７２】
ステップ９５０〜３０を逆順で実行することによって、ＰＳを低電力モードから実質的に脱し得ることが十分に理解されるべきである。
【０１７３】
図１０は、この明細書内において開示される別の実施例に従う図２のＩＣ２００を示す第７のブロック図である。図１０は、プログラマブル回路２０４の電源が低減される場合のＰＳ２０２のＩ／Ｏ装置３０５の管理を示すためのＩＣ２００の抽象化された図を示す。ＩＣ２００内における１つ以上の要素は、説明を明瞭かつ容易にするため、図示されない。例えば、スイッチ３１５および３２０、ならびにプログラマブル回路２０４内におけるさまざまな他の要素は、図１０には示されない。
【０１７４】
図１０は、Ｉ／Ｏ装置３０５がＩ／Ｏピン３２５の１つ以上を通して外部の処理ノード（図示せず）に結合される実施例を示す。図示されるように、Ｉ／Ｏ装置３０５のために処理を行ないＩ／Ｏ装置３０５と相互に作用する主要なエンティティは、プログラマブル回路２０４内で実現されるユーザ回路２８０である。示される例においては、Ｉ／Ｏ装置３０５は、１００５と符号付けされる信号経路を介して、コアスイッチ２３６およびインターフェイス２５６を通して、ユーザ回路２８０と通信する。
【０１７５】
ある実施例においては、プログラマブル回路２０４の電源がオフにされることになると判断されることに応答して、コアコンプレックス２０６は、Ｉ／Ｏ装置３０５の制御を行なうように構成され得る。プログラマブル回路２０４の電源が図１０に示される構成においてオフにされると、この明細書内で記載されるように制御を変更せずには、Ｉ／Ｏ装置３０５はもはや処理ノードには利用可能ではない。
【０１７６】
コアコンプレックス２０６は、例えば、Ｉ／Ｏ装置３０５に対する制御を追跡するのに利用される特定のロッキング機構に対して、コアコンプレックス２０６がユーザ回路２８０から制御を奪っている旨を信号送信し得る。ある実施例においては、コアコンプレックス２０６は、ユーザ回路２８０によって実現される特定の機能のいくつかまたはすべてを与えるプログラムコードを含むかまたは実行し得る。したがって、ユーザ回路２８０の電源がオフにされると、コアコンプレックス２０６は少なくともＩ／Ｏ装置３０５に関してユーザ回路２８０によって前に実行された機能を引継ぎ得る。一例においては、コアコンプレックス２０６は、Ｉ／Ｏ装置３０５と外部の処理ノードとの間の通信リンクを維持し得る。
【０１７７】
図１１は、この明細書内において開示される別の実施例に従う図２のＩＣ２００を示す第８のブロック図である。図１１は、プログラマブル回路２０４の電源をオフにすることに引き続く、ＩＣ２００の状態を示す。プログラマブル回路２０４の電源がオフにされ、かつ利用可能ではないことを示すために、プログラマブル回路２０４は影付きで示される。示されるように、コアコンプレックス２０６はＩ／Ｏ装置３０５に対する制御を得ており、Ｉ／Ｏ装置３０５のために処理を開始している。通信は、今、１１００と符号付けされる信号経路を通して、コアコンプレックス２０６とＩ／Ｏ装置３０５との間で行われる。したがってＩ／Ｏ装置３０５からプログラマブル回路２０４に対して通信をルーティングし続けるのではなく、通信は処理のためにコアコンプレックス２０６に与えられる。
【０１７８】
例示において、Ｉ／Ｏ装置３０５が外部の処理ノードへのＵＳＢインターフェイスを実現する場合を考える。プログラマブル回路２０４内に実現されるユーザ回路２８０は、例えば、ＵＳＢ通信リンクを通じて搬送される映像を処理するように映像処理回路を実現し得る。プログラマブル回路２０４の電源がオフにされるときにＩ／Ｏ装置３０５に対する制御を変更しなければ、外部の処理ノードに与えられる映像は停止するだろう。Ｉ／Ｏ装置３０５に対する制御をコアコンプレックス２０６に与えることによって、コアコンプレックス２０６はＵＳＢ通信リンクを維持し得る。
【０１７９】
ある実施例においては、コアコンプレックス２０６は、プログラムコードの実行を通して、ユーザ回路２８０によって与えられたのと同じ機能を与え得る。例えば、この場合においては映像処理である機能は、コアコンプレックス２０６によって、プログラムコードの実行を通して実行されるので、ユーザ回路２８０と比較して、性能は低減されるかもしれない。他の実施例においては、コアコンプレックス２０６は、変動されるかまたは異なる機能を与え得る。例えば映像を処理し続けるのではなく、コアコンプレックス２０６は、映像処理が一時的に利用不可能である旨を述べる画像を指定する映像信号を出力し得る。他の形式の低減または限定された機能も与えられ得る。しかしながら、いずれの場合も、外部の処理ノードとの通信リンクは維持され、例えば、電気的通信チャネルが確保されている。
【０１８０】
図１２は、この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法１２００を示す第４のフローチャートである。方法１２００は、プログラマブル回路内に実現される回路に結合されてもよいＩ／Ｏ装置に対する制御を説明するＩＣ内における電力管理のための技術を示す。例えば、方法１２００は、この明細書の図１０〜図１１を参照して示され記載されるＩＣの電力管理のための技術を示す。
【０１８１】
方法１２００は、ＩＣの電源がオンにされ、十分に動作可能な状態において、開始し得る。例えば、少なくとも１つのＩ／Ｏ装置は、ＰＳによる使用に対して専用の１つ以上のＩ／Ｏピンを通して、外部の処理ノードに通信可能にリンクされ得る。Ｉ／Ｏ装置は、さらに、コアスイッチおよびインターフェイスを通してプログラマブル回路内に実現されるユーザ回路に結合され得る。ユーザ回路は、例えば、Ｉ／Ｏ装置のために処理を行なうように構成され得る。
【０１８２】
ステップ１２０５において、コアコンプレックスは、プログラマブル回路は電源がオフにされると判断し得る。論じられるように、ＰＳは、プログラマブル回路の電力機能を制御するように構成され得る。一例においては、コアコンプレックスは、それ自体が、例えば、プログラムコードの実行および特定のプログラムによって指定される論理の適用を通して、プログラマブル回路の電源がオフにされる、と判断し得る。他の例においては、ＩＣ、例えばコアコンプレックスは、プログラマブル回路の電源がオフにされることを要求する他の外部の処理ノードからの通知または信号を受信し得る。
【０１８３】
ステップ１２１０において、コアコンプレックスは、ＰＳ内に含まれているＩ／Ｏ装置のうちの任意のものが、ＰＳを通して、例えばインターフェイスの１つ以上を通して、プログラマブル回路に結合されるかどうかを判断し得る。コアコンプレックスは例えば、ＰＳ内に位置する制御レジスタを介して、Ｉ／Ｏ装置、インターフェイスおよびコアスイッチなどの構成をチェックして、もしある場合には、どのＩ／Ｏ装置がプログラマブル回路内においてユーザ回路により処理されるかを判断し得る。１つ以上のＩ／Ｏ装置がＰＳを通してプログラマブル回路に結合されると、方法はステップ１２１５に継続し得る。Ｉ／Ｏ装置のいずれもＰＳを通してプログラマブル回路に結合されないときは、方法はステップ１２２５に継続し得る。
【０１８４】
ステップ１２１５において、ＰＳはＩ／Ｏ装置に対する制御を獲得し得る。例えば、コアコンプレックスは図１０および図１１に関して示されるようにＰＳ内において通信リンクを再構成するように構成され得、Ｉ／Ｏ装置から受信された情報は、プログラマブル回路の代りに、コアコンプレックスに向けられる。ロッキング機構がＰＳ内において利用される場合、コアコンプレックスは、コアコンプレックスがＩ／Ｏ装置に対して排他的制御をとっていることをロッキング機構に命令し得る。例示の目的のため、方法１２００は、１つのＩ／Ｏ装置がＰＳを通してプログラマブル回路に結合されると考える。しかしながら、１つより多いＩ／Ｏ装置がプログラマブル回路に結合され得ること、および図１２を参照して記載されるステップがそのような場合に適用され得ることが、十分に理解されるべきである。
【０１８５】
ステップ１２２０において、ＰＳは、外部の処理ノードとＩ／Ｏ装置との間の通信リンクの維持を開始する。ＰＳは外部の処理ノードおよびＩ／Ｏ装置のために処理を行ない、さらに、プログラマブル回路内においてユーザ回路により一旦与えられた機能を実行し得る。上述のように、ＰＳはユーザ回路の全機能を与え得るか、またはユーザ回路により与えられる機能の制限部分集合を与え得る。
【０１８６】
ステップ１２２５において、ＰＳは、プログラマブル回路をアイドル状態に置き得る。ステップ１２３０において、ＰＳは任意的にプログラマブル回路に照会して、プログラマブル回路内に実現される回路、例えばユーザ回路についての状態情報を判断し得る。上述のように、プログラマブル回路内に記憶されるデータは、ＰＳによって、設定読戻し機能、境界走査機能などを用いて、取得され得る。ステップ１２３５において、ＰＳは、プログラマブル回路から得られた状態情報をメモリに任意的に記憶し得る。
【０１８７】
ステップ１２４０において、ＰＳ、例えばコアコンプレックスは、プログラマブル回路をＰＳと結合するレベルシフタを既知の状態に置き得る。ステップ１２４５において、ＰＳはプログラマブル回路の電源をオフにし得る。ステップ１２５０において、ＰＳは、例えばプログラムコードの実行などの動作を継続し、Ｉ／Ｏ装置３０５とそれに結合される外部の処理ノードとの間の通信リンクを維持し得る。ＰＳはＩ／Ｏ装置のために処理を行ない続け得る。
【０１８８】
図１３は、この明細書内において開示される別の実施例に従うＩＣのための電力管理の方法１３００を示す第５のフローチャートである。方法１３００は、プログラマブル回路内に実現される回路に結合されてもよいＩ／Ｏ装置に対する制御を説明するＩＣ内における電力管理のための技術を示す。特に、方法１３００は、プログラマブル回路の電源がオンにされ、Ｉ／Ｏ装置に対する制御がコアコンプレックスからプログラマブル回路に戻される例を示す。方法１３００は、この明細書の図１０〜図１２に関して示されるシステムを用いて実行され得る。
【０１８９】
方法１３００は、ＰＳが動作可能で、プログラマブル回路の電源がオフにされる状態において、開始され得る。特に、方法１３００は、図１２を参照して記載されるようなプログラマブル回路内に実現されるユーザ回路によりプログラマブル回路の電源をオフにする前に、制御されたＩ／Ｏ装置に対して、ＰＳのコアコンプレックスが制御を得た状態において始まり得る。
【０１９０】
したがって、ステップ１３０５では、ＰＳは、ＩＣのプログラマブル回路に電力を供給するスイッチをオンにするか、またはそうでなければプログラマブル回路の電源をイネーブルし得る。ステップ１３１０では、ＰＳ電圧検出器は、プログラマブル回路への電力信号は、プログラマブル回路電力指示信号に結合されるレベルシフタを動作させるための最小レベルシフタ電圧を満たす、と判断し得る。ステップ１３１５では、プログラマブル回路は、電力信号が最小プログラマブル回路電圧を満たす、と判断し得る。
【０１９１】
ステップ１３２０では、電力信号は最小プログラマブル回路電圧を満たすと判断されることに応じて、プログラマブル回路は、プログラマブル回路が設定に対して準備できている旨の信号を、ＰＳに送る。ステップ１３２５では、ＰＳは、ＰＳとプログラマブル回路との間においてシステムレベル信号を通信するために用いられる任意のレベルシフタをイネーブルし得る。ある実施例においては、ＰＳは、プログラマブル回路の設定を必要としないレベルシフタをイネーブルし得る。ＰＳとプログラマブル回路との間で送られるクロック信号を伝搬する１つ以上のレベルシフタをさらにイネーブルし得る。
【０１９２】
ステップ１３３０では、ＰＳは、１つ以上の回路を実現するようにプログラマブル回路を構成し得る。ある実施例においては、動作可能なＰＳは、オフチップに位置される記憶位置からプログラマブル回路のための設定データにアクセスし得る。例えば、ＰＳは、外部メモリから設定データを検索するか、または例えばイーサネット接続などの通信リンクを通じて設定データに対する要求を発行し得る。ＰＳによって受信される設定データは、ＰＣＡＰインターフェイスに与えられ、プログラマブル回路内において設定コントローラに送られ得る。設定コントローラは、次いで、設定データを設定メモリセル内にロードし、それによって、設定データによって指定される物理的な回路を実現する。
【０１９３】
一例においては、プログラマブル回路の電源がオフにされる前に存在した同じ回路設計、例えばユーザ回路に対する同じ設計を、プログラマブル回路内に再びロードし得る。他の例においては、電源オフ前にプログラマブル回路において実現されていたユーザ回路の修正バージョン、例えばアップグレードされたバージョンが、設定データのロードを介して実現され得る。さらなる他の例においては、完全に異なる回路設計を、プログラマブル回路の電源がオフにされる前にプログラマブル回路内に実現されていたユーザ回路とは大きく異なるユーザ回路としてプログラマブル回路内に実現されてもよい。
【０１９４】
ステップ１３３５において、ＰＳは、ＰＳとプログラマブル回路との間においてユーザ信号を通過させるために利用可能なレベルシフタをイネーブルし得る。ステップ１３４０において、任意の記憶された状態データを、プログラマブル回路内に実現されるユーザ回路内に、任意的に復元、例えば再びロードし得る。ステップ１３４０の後、ＩＣ全体が動作可能である。上述のように、ＰＳは動作モードにあり、プログラムコードを実行することができる。さらに、プログラマブル回路は動作モードである。ある実施例においては、プログラマブル回路は、ユーザ指定信号の生成を通した設定に引き続くリセットタイプの状態から解放され得る。ユーザ指定信号は、ステップ１３３０を参照して記載されるような設定データのロードの結果、プログラマブル回路内に実現される回路によって生成される信号であり得る。
【０１９５】
ステップ１３４５において、ＰＳ、例えばコアコンプレックスは、プログラマブル回路がリセット状態から解放されることに応じて、プログラマブル回路内において実現されるユーザ回路に、Ｉ／Ｏ装置に対する制御を渡し得る。図１２を参照して記載されるように、コアコンプレックスは、プログラマブル回路内において実現されるユーザ回路からＩ／Ｏ装置に対する制御を取得し得る。ロッキング機構がＰＳ内において利用される場合、コアコンプレックスは、コアコンプレックスがＩ／Ｏ装置に対する制御、例えば排他的制御をユーザ回路に渡したことをロッキング機構に命令し得る。コアコンプレックスは、Ｉ／Ｏ装置がコアスイッチおよびインターフェイスを通してユーザ回路と再び結合されるように、ＰＳ内において通信リンクを再構成するように構成され得る。例えば、データ経路は、図１１に示されるそれから図１０に示されるそれに変更され得、情報がコアスイッチおよびインターフェイスを介してＩ／Ｏ装置とユーザ回路との間を流れる。
【０１９６】
ステップ１３５０において、制御がコアコンプレックスからユーザ回路に渡されることに応答して、ユーザ回路はＩ／Ｏ装置のための処理を開始し得る。この点において、Ｉ／Ｏ装置とＩ／Ｏ装置に結合されるＩＣの外部の処理ノードとの間の通信リンクは切断されないかまたはそうでなければ失われない。コアコンプレックスがユーザ回路と比較して単に低減された機能を与える場合においては、全機能が回復され、Ｉ／Ｏ装置を介して処理ノードに対して利用可能になり得る。
【０１９７】
図１２に関して上述されたように、例示の目的のため、方法１３００は１つのＩ／Ｏ装置がＰＳを通してプログラマブル回路に結合されると考える。しかしながら、１つより多いＩ／Ｏ装置がプログラマブル回路に結合され得ること、および図１３を参照して記載されるステップがそのような場合に適用され得ることが、十分に理解されるべきである。
【０１９８】
図のフローチャートは、この明細書内において開示される１つ以上の実施例に従ってシステム、方法およびコンピュータプログラム製品の可能な実現例のアーキテクチャ、機能および動作を例示する。この点において、フローチャートにおける各ブロックは、コードのモジュール、セグメントまたは部分を表わし得、それは、指定された論理関数を実現する実行可能なプログラムコードの１つ以上の部分を含む。
【０１９９】
ある代替的な実現例においては、ブロックに記される機能は図に記される順序外で生じてもよいことが注記されるべきである。例えば、連続して示される２つのブロックは実際は実質的に同時に実行されてもよく、または、ブロックは、ときには、伴われる機能に依存して、逆の順序で実行されてもよい。さらに、フローチャート例示の各ブロック、およびフローチャート例示におけるブロックの組合せは、指定された機能もしくは行為を実行する特殊目的のハードウェアに基いたシステム、または特殊目的のハードウェアと実行可能な命令との組合せにより実現され得ることに注意すべきである。
【０２００】
１つ以上の実施例はハードウェアまたはハードウェアとソフトウェアとの組合せで実現されてもよい。１つ以上の実施例は、１つのシステムにおいて集中化された態様において、または異なる要素がいくつかの相互接続されたシステムにわたって広げられる分散された態様において、実現され得る。ここに記載される方法の少なくとも一部を実行するために適合されるどのような種類のデータ処理システムまたは他の装置も適している。
【０２０１】
１つ以上の実施例は、さらに、ここに記載される方法の実現例を可能にする特徴をすべて含むコンピュータプログラム製品のような装置に埋込まれ得る。装置は、メモリおよびプロセッサを含むシステムにおいてロードされ実行されると、この明細書内において記載される機能の少なくとも一部をシステムに実行させるプログラムコードを記憶する、例えば非一時的なコンピュータ使用可能またはコンピュータ読取可能媒体などのデータ記憶媒体を含み得る。データ記憶媒体の例は、光学的媒体、磁気媒体、磁気光媒体、ランダムアクセス記憶装置またはハードディスクのようなコンピュータメモリなどを含み得るが、それらに限定はされない。
【０２０２】
この文脈における「コンピュータプログラム」、「ソフトウェア」、「アプリケーション」、「コンピュータ使用可能プログラムコード」、「プログラムコード」、「実行可能コード」という用語、それらの変形および／または組合せは、任意の言語、コードまたは表記法において、情報処理能力を有するシステムに、特定の機能を、直接、またはａ）他の言語、コードまたは表記法への変換、ｂ）異なる材料形式における再生の一方もしくは両方の後に実行させるように意図される命令の集合の任意の表現を意味する。例えば、プログラムコードは、サブルーチン、関数、プロシージャ、オブジェクト方法、オブジェクト実現、実行可能なアプリケーション、アプレット、サーブレット、ソースコード、オブジェクトコード、共用ライブラリ／ダイナミックロードライブラリおよび／またはコンピュータシステム上での実行のために設計された命令の他のシーケンスを含み得るが、それらに限定はされない。
【０２０３】
ここで用いられる「或る（ａ／ａｎ）」という語は、１つまたは１つより多いものとして規定される。ここで用いられる「複数」という語は、２または２を超えるとして規定される。ここで用いられる「別の／他の（ａｎｏｔｈｅｒ）」という語は、少なくとも第２のものまたはそれよりより多くのものとして規定される。ここで用いられる「含む」および／または「有する」という語は、含むこととして、つまり開いた文言として規定される。ここで用いられる「結合される（ｃｏｕｐｌｅｄ）」という語は、特段の記載がなければ、いかなる介在要素もなしに直接接続されるか、または１つ以上の介在要素を伴って間接的に接続されるものとして規定される。２つの要素は、さらに、機械的または電気的に結合され、または通信チャネル、経路、ネットワークもしくはシステムを介して、通信でリンクされる。
【０２０４】
この明細書内に開示される１つ以上の実施例は、それらの精神または本質的な属性から逸脱せずに、他の形式で実施され得る。したがって、前述の明細書ではなく、特許請求の範囲が、１つ以上の実施例の範囲を示すとして参照されるべきである。
【図１】
0005826865.tif 000002
【図２】
0005826865.tif 000003
【図３】
0005826865.tif 000004
【図４】
0005826865.tif 000005
【図５】
0005826865.tif 000006
【図６】
0005826865.tif 000007
【図７】
0005826865.tif 000008
【図８】
0005826865.tif 000009
【図９】
0005826865.tif 000010
【図１０】
0005826865.tif 000011
【図１１】
0005826865.tif 000012
【図１２】
0005826865.tif 000013
【図１３】
0005826865.tif 000014