(57)【要約】  例示的な集積回路（ＩＣ）パッケージは、基板（１１８）上に配設される処理システム（１０４）およびプログラマブルＩＣ（１０６）を含み、処理システムは、基板の配線（１１２）を通じてプログラマブルＩＣに結合され、処理システムは、リング配線（２１０）に結合される構成要素（２０２・・・２０８）を含み、構成要素は、プロセッサ（２０２）およびインターフェイスコントローラ（２１４）を含む。プログラマブルＩＣは、配線を通じてインターフェイスコントローラに結合されるインターフェイス終点（２１８）と、インターフェイス終点に結合されかつインターフェイス終点およびインターフェイスコントローラを通じての処理システムのリング配線との通信のために構成される少なくとも１つの周辺機器（２３０）とを含む。
2020535659.tif 000002
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）パッケージであって、
基板上に配設される処理システムおよびプログラマブルＩＣを備え、前記処理システムは、前記基板の配線を通じて前記プログラマブルＩＣに結合され、
前記処理システムはリング配線に結合される構成要素を含み、前記構成要素はプロセッサおよびインターフェイスコントローラを含み、
前記プログラマブルＩＣは、前記配線を通じて前記インターフェイスコントローラに結合されるインターフェイス終点と、前記インターフェイス終点に結合されかつ前記インターフェイス終点および前記インターフェイスコントローラを通じての前記処理システムの前記リング配線との通信のために構成される少なくとも１つの周辺機器とを含む、集積回路（ＩＣ）パッケージ。
【請求項２】
前記プログラマブルＩＣはプログラマブルファブリックを含む、請求項１に記載のＩＣパッケージ。
【請求項３】
前記プログラマブルＩＣは、前記プログラマブルファブリックに結合される埋込処理システムを含む、請求項２に記載のＩＣパッケージ。
【請求項４】
前記少なくとも１つの周辺機器は前記プログラマブルファブリック中にプログラムされる、請求項２に記載のＩＣパッケージ。
【請求項５】
前記インターフェイスコントローラおよび前記インターフェイス終点は、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含む、請求項１に記載のＩＣパッケージ。
【請求項６】
前記基板はパッケージインターフェイスを含み、前記プログラマブルＩＣは前記パッケージインターフェイスに結合される、請求項１に記載のＩＣパッケージ。
【請求項７】
前記処理システムおよび前記プログラマブルＩＣに結合される１つ以上の他のＩＣをさらに備える、請求項１に記載のＩＣパッケージ。
【請求項８】
集積回路（ＩＣ）パッケージであって、
半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを備え、
前記処理システムはリング配線に結合される構成要素を含み、前記構成要素はプロセッサおよびインターフェイス回路を含み、
前記プログラマブルＩＣは、前記リング配線に結合されかつ前記リング配線との通信のために構成される少なくとも１つの周辺機器を含む、集積回路（ＩＣ）パッケージ。
【請求項９】
前記プログラマブルＩＣはプログラマブルファブリックを含む、請求項８に記載のＩＣパッケージ。
【請求項１０】
前記プログラマブルＩＣは、前記プログラマブルファブリックに結合される埋込処理システムを含む、請求項９に記載のＩＣパッケージ。
【請求項１１】
前記少なくとも１つの周辺機器は前記プログラマブルファブリック中にプログラムされる、請求項９に記載のＩＣパッケージ。
【請求項１２】
前記プロセッサおよび前記プログラマブルＩＣは、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含む、請求項８に記載のＩＣパッケージ。
【請求項１３】
集積回路（ＩＣ）パッケージであって、
半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを備え、
前記処理システムはリング配線に結合される構成要素を含み、前記構成要素は、プロセッサ、インターフェイス回路、およびメモリを含み、
前記プログラマブルＩＣは、前記リング配線に結合されかつ前記リング配線および少なくとも１つのメモリとの通信のために構成される少なくとも１つの周辺機器を含む、集積回路（ＩＣ）パッケージ。
【請求項１４】
前記プログラマブルＩＣの前記少なくとも１つのメモリは前記リング配線に結合されない、請求項１３に記載のＩＣパッケージ。
【請求項１５】
前記プログラマブルＩＣの前記少なくとも１つのメモリは前記リング配線に結合される、請求項１３に記載のＩＣパッケージ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、概して、電子回路、ならびに特に集積回路（ＩＣ）パッケージへのプログラマブルデバイスおよび処理システムの集積に関する。
【背景技術】
【０００２】
背景
最近の中央処理装置（ＣＰＵ）は、単一の半導体ダイ上に複数のマイクロプロセッサコア、グラフィックスエンジン、および他の固定機能を集積する複雑なシステムオンチップ（ＳｏＣ）デバイスである。ＣＰＵは、周辺構成要素相互接続エクスプレス（Peripheral Component Interconnect Express）（ＰＣＩｅ）インターフェイスなどの拡張バスインターフェイスを含むことができる。典型的な構成では、ＣＰＵを有する集積回路（ＩＣ）パッケージは、プリント回路基板（ＰＣＢ）に搭載される。固定されたまたは着脱可能な態様で、さまざまな周辺機器がＣＰＵ  ＩＣパッケージの外部のＰＣＢに搭載される。周辺機器は、ＰＣＢおよびＣＰＵ  ＩＣパッケージのピンを通じてＣＰＵのＰＣＩｅインターフェイスに結合される。そのような構成は、少なくともＰＣＢ上に搭載される複数個のＩＣと最悪の場合は周辺機器を有する他のＰＣＢを挿入可能な拡張ポートのための空間とを必要とする大きな設置面積を有する。
【０００３】
プログラマブル集積回路（ＩＣ）はしばしば、ユーザが構成可能な入力に応じてデジタル論理演算を実現するのに用いられる。例示的なプログラマブルＩＣは、コンプレックスプログラマブル論理デバイス（ＣＰＬＤ）およびフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含む。ＣＰＬＤは、積和論理を有するプログラマブル論理アレイ（ＰＬＡ）アーキテクチャに基づくいくつかの機能ブロックを含むことが多い。コンフィギュラブル相互接続マトリックスは、機能ブロック同士の間で信号を伝送する。
【０００４】
ある種類のＦＰＧＡはプログラマブルタイルのアレイを含む。プログラマブルタイルは、さまざまな種類の論理ブロックを備え、これは、たとえば、入出力ブロック（ＩＯＢ）、コンフィギュラブル論理ブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）、バス、または周辺構成要素相互接続エクスプレス（ＰＣＩｅ）およびイーサネット（登録商標）などのネットワークインターフェイスを含むことができる。各々のプログラマブルタイルは典型的に、プログラマブル配線とプログラマブル論理との両方を含む。プログラマブル配線は典型的に、プログラマブルインターコネクトポイント（ＰＩＰ）によって相互接続される異なる長さの多数の相互接続線を含む。プログラマブル論理は、たとえば、関数生成器、レジスタ、算術論理などを含み得るプログラマブル素子を用いてユーザ設計の論理を実現する。
【０００５】
プログラマブルＩＣを用いて、ハードウェアアクセラレータとしての使用のためなど、ＣＰＵによる使用のための周辺機器を実現することができる。ハードウェアアクセラレーションは、汎用ＣＰＵ上で実行されるソフトウェアよりも効率的にある機能を実行するためのハードウェアの使用に係る。ハードウェアアクセラレータは、何らかのアプリケーションのためのハードウェアアクセラレーションを実現するように設計される専用用途ハードウェアである。例示的なアプリケーションは、ニューラルネットワーク、映像の符号化、復号、コード変換など、ネットワークデータ処理などを含む。そのようなハードウェアアクセラレータは典型的に、マザーボード上のスロットに挿入されるＰＣＩｅカードとして実現される。ＣＰＵおよびプログラマブルＩＣは、マザーボード上の構成要素によって物理的に分離される２つの別個のＩＣである。周辺機器として用いられるプログラマブルＩＣおよびＣＰＵを有するコンピューティングシステムのより効率的な実現例を提供することが望まれる。
【発明の概要】
【課題を解決するための手段】
【０００６】
要約
集積回路（ＩＣ）パッケージ中へのプログラマブルデバイスおよび処理システムの集積を説明する。ある例では、ＩＣパッケージは、基板上に配設される処理システムおよびプログラマブルＩＣを含み、処理システムは、基板の配線を通じてプログラマブルＩＣに結合され、処理システムは、リング配線に結合される構成要素を含み、構成要素は、プロセッサおよびインターフェイスコントローラを含む。プログラマブルＩＣは、配線を通じてインターフェイスコントローラに結合されるインターフェイス終点と、インターフェイス終点に結合されかつインターフェイス終点およびインターフェイスコントローラを通じての処理システムのリング配線との通信のために構成される少なくとも１つの周辺機器とを含む。
【０００７】
ある実施形態では、プログラマブルＩＣはプログラマブルファブリックを含み得る。
ある実施形態では、プログラマブルＩＣは、プログラマブルファブリックに結合される埋込処理システムを含み得る。
【０００８】
ある実施形態では、少なくとも１つの周辺機器はプログラマブルファブリック中にプログラムされ得る。
【０００９】
ある実施形態では、インターフェイスコントローラおよびインターフェイス終点は、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含み得る。
【００１０】
ある実施形態では、基板はパッケージインターフェイスを含み得、プログラマブルＩＣはパッケージインターフェイスに結合され得る。
【００１１】
ある実施形態では、ＩＣパッケージは、処理システムおよびプログラマブルＩＣに結合される１つ以上の他のＩＣをさらに含み得る。
【００１２】
別の例では、ＩＣパッケージでは、半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含み、処理システムはリング配線に結合される構成要素を含み、構成要素はプロセッサおよびインターフェイス回路を含み、プログラマブルＩＣは、リング配線に結合されかつリング配線との通信のために構成される少なくとも１つの周辺機器を含む。
【００１３】
ある実施形態では、プログラマブルＩＣはプログラマブルファブリックを含み得る。
ある実施形態では、プログラマブルＩＣは、プログラマブルファブリックに結合される埋込処理システムを含み得る。
【００１４】
ある実施形態では、少なくとも１つの周辺機器はプログラマブルファブリック中にプログラムされ得る。
【００１５】
ある実施形態では、プロセッサおよびプログラマブルＩＣは、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含み得る。
【００１６】
別の例では、ＩＣパッケージは、半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含み、処理システムはリング配線に結合される構成要素を含み、構成要素は、プロセッサ、インターフェイス回路、およびメモリを含み、プログラマブルＩＣは、リング配線に結合されかつリング配線および少なくとも１つのメモリとの通信のために構成される少なくとも１つの周辺機器を含む。
【００１７】
ある実施形態では、プログラマブルＩＣの少なくとも１つのメモリは、リング配線に結合されなくてもよい。
【００１８】
ある実施形態では、プログラマブルＩＣの少なくとも１つのメモリは、リング配線に結合されてもよい。
【００１９】
ある実施形態では、ＩＣパッケージはパッケージインターフェイスをさらに含み得、プログラマブルＩＣはパッケージインターフェイスに結合され得る。
【００２０】
ある実施形態では、プログラマブルＩＣはプログラマブルファブリックを含み得る。
ある実施形態では、プログラマブルＩＣは、プログラマブルファブリックに結合される埋込処理システムを含み得る。
【００２１】
ある実施形態では、少なくとも１つの周辺機器はプログラマブルファブリック中にプログラムされ得る。
【００２２】
ある実施形態では、プロセッサおよびプログラマブルＩＣは、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含み得る。
【００２３】
別の例では、ＩＣパッケージは、半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含み、処理システムはリング配線に結合される構成要素を含み、リング配線は、リング間コネクタを通じて第２のサブリングに結合される第１のサブリングを含み、構成要素はプロセッサおよびインターフェイス回路を含み、プログラマブルＩＣは、第１のサブリングに結合されかつ第１のサブリングとの通信のために構成される少なくとも１つの周辺機器を含む。
【００２４】
ある実施形態では、構成要素は、第２のサブリングに結合されるグラフィックス処理装置（ＧＰＵ）をさらに含み得る。
【００２５】
ある実施形態では、プログラマブルＩＣはプログラマブルファブリックを含み得る。
ある実施形態では、プログラマブルＩＣは、プログラマブルファブリックに結合される埋込処理システムを含み得る。
【００２６】
ある実施形態では、少なくとも１つの周辺機器はプログラマブルファブリック中にプログラムされ得る。
【００２７】
ある実施形態では、プロセッサおよびプログラマブルＩＣは、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含み得る。
【００２８】
以下の詳細な説明を参照して、これらおよび他の局面を理解し得る。
以上に記載の特徴を詳細に理解できるように、そのいくつかを添付の図面に示す例示的実現例を参照することによって、以上に簡単に要約した説明のより特定的な説明を有し得る。しかしながら、添付の図面は、典型的な例示的実現例のみを示すもので、したがって図面をその範囲の限定と考えてはならないことに留意すべきである。
【図面の簡単な説明】
【００２９】
【図１】一例に従う集積回路（ＩＣ）パッケージを描くブロック図である。
【図２】図１のＩＣパッケージ中の処理システムおよびプログラマブルＩＣの例を描くブロック図である。
【図３】一例に従うプログラマブルＩＣ中の周辺回路構成を描くブロック図である。
【図４】一例に従う図３の周辺回路構成をより詳細に描くブロック図である。
【図５】一例に従うコンピューティングシステムを描くブロック図である。
【図６】一例に従うプログラマブルＩＣを描くブロック図である。
【図７】一例に従うプログラマブルＩＣのシステムオンチップ（ＳｏＣ）実現例を描くブロック図である。
【図８】プログラマブルＩＣのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）実現例を示す図である。
【図９】一例に従うＩＣパッケージ中のプログラマブルＩＣを動作させる方法を描くフロー図である。
【図１０】別の例に従うＩＣパッケージを描くブロック図である。
【図１１】図１０のＩＣパッケージ中の処理システムの例示的実現例を描くブロック図である。
【図１２】図１０のＩＣパッケージ中の処理システムのまた別の例示的実現例を描くブロック図である。
【図１３】図１０のＩＣパッケージ中の処理システムのまた別の例示的実現例を描くブロック図である。
【図１４】ストリーミングインターフェイスを用いた通信のために構成される図１のＩＣパッケージの例示的実現例を描くブロック図である。
【図１５】ストリーミングインターフェイスを用いた通信のために構成される図１０のＩＣパッケージの例示的実現例を描くブロック図である。
【図１６】一例に従う周辺回路構成をより詳細に描くブロック図である。
【図１７】一例に従う処理システム中のプログラマブルＩＣを動作させる方法を描くフロー図である。
【発明を実施するための形態】
【００３０】
詳細な説明
理解を容易にするため、可能な場合、図に共通の同一の要素を示すのに同一の参照番号を用いる。有用な場合には、１つの例の要素を他の例に組入れ得ることが企図される。
【００３１】
図を参照して以下にさまざまな特徴を説明する。図は、縮尺通りに描かれていることも描かれていないこともあり、かつ同様の構造または機能の要素を図を通じて同じ参照番号で表わすことに留意すべきである。図は、特徴の説明を容易にすることしか意図していないことに留意すべきである。それらは、請求される発明の網羅的な説明として、または請求される発明の範囲に対する限定として意図されるものではない。加えて、示される例は、示されるすべての局面または利点を有する必要はない。特定の例に関連して説明される局面または利点は、必ずしもその例に限定されるわけではなく、そのように描かれていなくてもまたはそのように明示的に記載されていなくても、任意の他の例で実践可能である。
【００３２】
集積回路（ＩＣ）パッケージ中へのプログラマブルデバイスおよび処理システムの集積が記載される。本明細書中に記載される例示的な技術は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）ファブリックなどのプログラマブルファブリックをリング配線を有する高性能処理システムに集積する。１つの例では、ＩＣパッケージは、基板上に配設される処理システムおよびプログラマブルＩＣを含む。処理システムおよびプログラマブルＩＣは、基板の配線を通じて結合される。処理システムはプロセッサおよびインターフェイスコントローラを含み、リング配線に結合される構成要素を含む。プログラマブルＩＣは、基板上の配線を通じてインターフェイスコントローラに結合されるインターフェイス終点を含む。プログラマブルＩＣは、インターフェイス終点に結合されかつ配線終点およびインターフェイスコントローラを通じての処理システムのリング配線との通信のために構成される周辺機器も含む。一例では、プログラマブルＩＣは、周辺構成要素インターフェイスエクスプレス（ＰＣＩｅ）接続を通じて処理システムのリング配線に接続される。例では、プログラマブルＩＣと処理システムとの間のＰＣＩｅ接続の物理層を、プログラマブルＩＣと処理システムとの間の基板配線の公知の特徴に基づいて最適化することができる。他の例では、ＰＣＩｅの代わりに、インテル（登録商標）クイックパス配線（Quickpath Interconnect）（ＱＰＩ）、オムニパス（Omnipath）、インフィニバンド（Infiniband）などの他のチップ間配線プロトコルの最適化版を用いることができる。このように、ＰＣＩｅソケットおよびＰＣＩｅコネクタを有するプログラマブルＩＣを有する付加的な基板のための付加的な基板空間を必要とすることなく、プログラマブルＩＣ中に実現される周辺機器を処理システムのためのアクセラレータとして用いることができる。
【００３３】
別の例では、ＩＣパッケージは、（同じパッケージ中に配設されるのに対して）半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含む。処理システムは、リング配線に結合される構成要素（たとえば、プロセッサおよびインターフェイス回路）を含む。プログラマブルＩＣはリング配線に結合され、かつリング配線との通信のために構成される周辺機器を含む。
【００３４】
別の例では、ＩＣパッケージは、（同じパッケージ中に配設されるのに対して）半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含む。処理システムは、リング配線に結合される構成要素（たとえば、プロセッサインターフェイス回路およびメモリ）を含む。プログラマブルＩＣはリング配線に結合され、リング配線およびメモリとの通信のために構成される周辺機器を含む。
【００３５】
別の例では、ＩＣパッケージは、（同じパッケージ中に配設されるのに対し）半導体ダイ上に配設される処理システムおよびプログラマブルＩＣを含む。処理システムは、リング配線に結合される構成要素を含む。リング配線は、リング間コネクタを通じて第２のサブリングに結合される第１のサブリングを含む。構成要素はプロセッサおよびインターフェイス回路を含む。プログラマブルＩＣは第１のサブリングに結合され、かつ第１のサブリングとの通信のために構成される少なくとも１つの周辺機器を含む。
【００３６】
図面を参照して、例示的な技術のこれらおよびさらなる局面を以下に説明する。
図１は、例に従う集積回路（ＩＣ）パッケージ１０２を描くブロック図である。ＩＣパッケージ１０２は、処理システム１０４およびプログラマブルＩＣ１０６を含む。処理システム１０４は半導体ダイ上に実現され、１つ以上の中央処理装置（ＣＰＵ）および周辺機器インターフェイスコントローラ（たとえば、周辺構成要素相互接続エクスプレス（ＰＣＩｅ）インターフェイスコントローラなど）を含む他の固定機能を含む。処理システム１０４の例示的な実現例を、図２を参照して以下に説明する。プログラマブルＩＣ１０６は別の半導体ダイ上に実現され、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コンプレックスプログラマブル論理デバイス（ＣＰＬＤ）、ＦＰＧＡ／ＣＰＬＤ機能性を有するシステムオンチップ（ＳｏＣ）、または他の種類のプログラマブルデバイスであることができる。処理システム１０４およびプログラマブルＩＣ１０６は、インターポーザ、パッケージ基板などの基板１１８に電気的かつ機械的に搭載される。基板１１８はＩＣパッケージ１０２中に配設され、これは蓋またはその上に半導体ダイを封入する何らかの他の形態の封入体を含むことができる。
【００３７】
処理システム１０４は、基板１１８上に形成される配線１１２を通じてまたは直接ダイ積層を通じてプログラマブルＩＣ１０６に電気的に結合され得る。以下にさらに記載するように、処理システム１０４は、配線１１２を通じてプログラマブルＩＣ１０６中のインターフェイス終点（たとえば、ＰＣＩｅ終点）に結合されるインターフェイスコントローラ（たとえば、ＰＣＩｅコントローラ）を含むことができる。ＩＣパッケージ１０２はパッケージインターフェイス１０８を含む。パッケージインターフェイス１０８は、はんだボール、はんだバンプ、金属ピンなどを含むことができる。パッケージインターフェイス１０８は、ＩＣパッケージ１０２を電気的かつ機械的に搭載するようにプリント回路基板（ＰＣＢ）などとインターフェイスするように構成される。処理システム１０４は、基板１１８上に形成される配線１１６を通じてパッケージインターフェイス１０８に結合される回路を含むことができる。プログラマブルＩＣ１０６は、基板１１８上に形成される配線１１４を通じてパッケージインターフェイス１０８に結合される回路を含むことができる。
【００３８】
パッケージインターフェイス１０８は、たとえば、ランダムアクセスメモリ（ＲＡＭ）１３２、不揮発性メモリ（ＮＶＭ）１３４、周辺機器１３６、およびサポート回路１３８を含む他の回路構成に結合可能である。ＲＡＭ１３２は、ダイナミックＲＡＭ（ＤＲＡＭ）（たとえば、ダブルデータレート（ＤＤＲ）ＲＡＭなど）、スタティックＲＡＭ（ＳＲＡＭ）などを含むことができる。ＮＶＭ１３４は、読出専用メモリ（ＲＯＭ）（たとえば、電子的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）など）および／または不揮発性ＲＡＭ（ＮＶＲＡＭ）（たとえば、フラッシュメモリ、固体状態記憶など）を含むことができる。周辺機器１３６は、当該技術分野で公知のコンピューティングシステムで用いられる任意の種類の周辺回路を含むことができる。サポート回路１３８は、電源と、ＩＣパッケージ１０２をサポートするための同種の回路とを含むことができる。ＲＡＭ１３２、ＮＶＭ１３４、および周辺機器１３６は、本明細書中にさらに記載するように、これらの回路をＩＣパッケージ１０２の内部で実現されるＲＡＭ、ＮＶＭ、および／または周辺機器から区別するために、「外部」ＲＡＭ、ＮＶＭ、および／または周辺機器と称されることがある。
【００３９】
プログラマブルＩＣ１０６は、周辺回路構成１１０を含む。周辺回路構成１１０は、インターフェイス（たとえば、ＰＣＩｅインターフェイス）を通じた処理システム１０４との通信のために構成される。周辺回路構成１１０は、ハード化回路、被プログラミング回路（programmed circuit）、またはその組合せを含む。
【００４０】
本明細書中で用いるように、「ハード化回路」はＩＣの一部として製造される。プログラマブル論理とは異なり、ハード化回路構成は、プログラマブルＩＣ中のプログラマブル論理の構成によって形成されるのではない。ハード化回路構成は一般的に、たとえば、特定の機能性を有しかつプログラマブルＩＣ１０６にコンフィギュレーションビットストリームをまずロードしなくても機能的である専用回路ブロックおよび配線を有すると考えられる。ハード化回路構成は、パラメータ設定に応じて設定または選択可能な１つ以上の動作モードを有することができる。パラメータ設定は、たとえば、プログラマブルＩＣ１０６内の１つ以上のメモリ素子（たとえば、レジスタ）中に値を記憶することによって実現可能である。動作モードは、たとえば、プログラマブルＩＣ１０６にコンフィギュレーションビットストリームをロードすることによって設定可能である。このようにできるにも拘わらず、ハード化回路構成は「プログラマブル論理」とは考えられない。ハード化回路に対し、被プログラミング回路は、コンフィギュレーションビットストリームのロードによってプログラマブルＩＣのプログラマブル論理中に構成される回路である。
【００４１】
ＩＣパッケージ１０２は、処理システム１０４が用いるための周辺回路構成１１０を含む。周辺回路構成１１０の一部は、プログラマブルＩＣ１０６のプログラマブル論理中に構成される被プログラミング回路構成であることができ、これにより、特定の種類および数の周辺機器が動的に経時変化できるようになる。周辺回路構成１１０の例を以下にさらに説明する。周辺回路構成１１０は、ＩＣパッケージ１０２の外部の周辺機器１３６に対して、オンチップまたは内部周辺機器を実現する。
【００４２】
一例では、ＩＣパッケージ１０２は１つ以上の他のＩＣ１２０を含むことができる。各々のＩＣ１２０は、機械的かつ電気的に基板１１８に結合される半導体ダイ上に実現される。他のＩＣ１２０は、基板１１８上の配線１２６を通じて処理システム１０４に、および／または基板１１８上の配線１３０を通じてプログラマブルＩＣ１０６に電気的に接続可能である。他のＩＣ１２０は、基板１１８上の配線１２８を通じてパッケージインターフェイス１０８に結合される回路を含むことができる。一例では、他のＩＣ１２０は、ＲＡＭ１２２および／または不揮発性メモリ（ＮＶＭ）１２４を含むことができる。ＲＡＭ１２２は、プログラマブルＩＣ１０６、処理システム１０４、またはプログラマブルＩＣ１０６と処理システム１０４との両方（たとえば、共有メモリ）に結合可能である。同様に、ＮＶＭ１２４は、プログラマブルＩＣ１０６、処理システム１０４、またはプログラマブルＩＣ１０６と処理システム１０４との両方に結合可能である。ＲＡＭ１２２および／またはＮＶＭ１２４は、パッケージインターフェイス１０８に結合可能である。ＲＡＭ１２２およびＮＶＭ１２４は、それぞれ、ＲＡＭ１３２およびＮＶＭ１３４と同様のデバイスであることができる。
【００４３】
以上の例では、処理システム１０４およびプログラマブルＩＣ１０６は、ＩＣパッケージ１０２内で基板１１８に搭載される２つの別個の半導体ダイを用いて実現される。代替例では、処理システム１０４およびプログラマブルＩＣ１０６は、ＩＣパッケージ１０２に配設される単一の半導体ダイを用いて実現される。そのような場合、単一の半導体ダイを基板１１８に搭載することができるか、または基板１１８を省略することができる。他のＩＣ１２０は、処理システム１０４およびプログラマブルＩＣ１０６とは別個の１つ以上のダイ上に実現可能である。代替的に、他のＩＣ１２０のうち１つ以上を、処理システム１０４および／またはプログラマブルＩＣ１０６と同じダイ上に実現することができる。
【００４４】
動作の際、処理システム１０４は、ＲＡＭ１３２および／またはＮＶＭ１３４中に記憶可能なソフトウェアコードを実行する。処理システム１０４は、ソフトウェアコードの実行に応答して、プログラマブルＩＣ１０６中の周辺回路構成１１０と通信することができる。たとえば、周辺回路構成１１０は、処理システム１０４の代わりにハードウェア（たとえば、ハードウェアアクセラレータ）中で１つ以上の機能を果たすことができる。ＩＣパッケージ１０２に電力が供給されると、プログラマブルＩＣ１０６は、ＮＶＭ１２４および／またはＮＶＭ１３４中に記憶されるコンフィギュレーションデータ（たとえば、コンフィギュレーションビットストリーム）を用いて周辺回路構成１１０の少なくとも一部を実現するように構成可能である。初期コンフィギュレーションの後、プログラマブルＩＣ１０６を、周辺回路構成１１０のすべてまたは一部の機能性を変更するように動的に（たとえば、部分的再構成を用いて）再構成可能である。一例では、処理システム１０４は、ソフトウェアコードを実行して（たとえば、ＰＣＩｅインターフェイスを通じて）プログラマブルＩＣ１０６を再構成する。
【００４５】
図２は、処理システム１０４およびプログラマブルＩＣ１０６の例を描くブロック図である。処理システム１０４は、１つ以上のＣＰＵ（たとえば、複数のＣＰＵ２０２が示される）、１つ以上のキャッシュメモリ（たとえば、複数のキャッシュメモリ２０４が示される）、およびインターフェイス回路２０６を含む。ＣＰＵ２０２は、１つ以上のコアと、関連の回路構成（たとえば、キャッシュメモリ、メモリ管理ユニット（ＭＭＵ）、割込コントローラなど）とを含むことができる。例では、処理システム１０４は、グラフィックス処理装置（ＧＰＵ）２０８、特定用途向け回路（たとえば、機械学習回路）などの付加的な構成要素を含むことができる。ＣＰＵ２０２、キャッシュメモリ、インターフェイス回路２０６、および他の構成要素（たとえば、ＧＰＵ２０８、テンソル処理装置（ＴＰＵ）２０９など）は、リング配線２１０に結合される。リング配線２１０は、それに結合されるさまざまな構成要素同士の間のオンダイバスである。各々の構成要素は、リング配線２１０へのローカルインターフェイスを含む。処理システム１０４のさまざまな構成要素は、リング配線２１０を通じて互いと通信することができる。インターフェイス回路２０６は、リング配線２１０に結合される他の構成要素（たとえば、ＣＰＵ２０２およびＧＰＵ２０８）へのオフダイインターフェイスを設ける。
【００４６】
一例では、リング配線２１０は、各々の接続される構成要素毎にインターフェイスを有するリングベーストポロジーを含む。リング配線２１０は、要求、スヌープ、および受信確認のための別個の線とともに特定の幅のデータバスを有する双方向リングであることができる。ＣＰＵ２０２の各々は、リング配線２１０上の一意の構成要素である。同様に、（存在する場合）ＧＰＵ２０８は、リング配線２１０上の一意の構成要素である。インターフェイス回路２０６がリング配線２１０へのインターフェイスを共有することができるか、またはインターフェイス回路２０６中の各々のインターフェイス構成要素がリング配線２１０へのそれ自身のインターフェイスを含むことができる。リング配線２１０は、さまざまなトポロジー（たとえば、リング、星、メッシュなど）を含むことができる。
【００４７】
キャッシュメモリ２０４は、リング配線２１０に接続される共有最終レベルキャッシュ（ＬＬＣ）を設けることができる。各々のＣＰＵ２０２には、共有ＬＬＣキャッシュのスライスを割当てることができる。キャッシュメモリ２０４によって実現されるＬＬＣキャッシュは、リング配線２１０上の他の構成要素（たとえば、ＧＰＵ２０８）によってもアクセス可能であり得る。
【００４８】
一例では、インターフェイス回路２０６は、ＰＣＩｅコントローラ２１４および１つ以上の他のコントローラ２１６を含む。他のコントローラ２１６は、リング配線２１０に結合される構成要素に応じて、メモリコントローラ、ディスプレイコントローラなどを含むことができる。ＣＰＵ２０２は、リング配線２１０を通じてＰＣＩｅコントローラ２１４に結合される。ＰＣＩｅコントローラ２１４は、ＣＰＵ２０２の代わりにＰＣＩｅルートコンプレックス（root complex）を実現する。
【００４９】
プログラマブルＩＣ１０６中の周辺回路構成１１０は、ＰＣＩｅ終点回路（「ＰＣＩｅ終点２１８」）および１つ以上の周辺機器２３０を含む。プログラマブルＩＣ１０６は他の回路構成２２４も含み得る。ＰＣＩｅ終点２１８は、配線１１２を通じてＰＣＩｅコントローラ２１４に結合される。ＰＣＩｅ終点２１８は、周辺機器２３０をＰＣＩｅコントローラ２１４に結合するスイッチを実現する。一例では、周辺機器２３０は、プログラマブルＩＣ１０６のプログラマブル論理の中に構成され、ＰＣＩｅ終点２１８は、プログラマブルＩＣ１０６内のハード化回路である。他の例では、プログラマブルＩＣ１０６のプログラマブル論理中にＰＣＩｅ終点２１８の少なくとも一部を構成することができる。他の例では、周辺機器２３０のうち１つ以上がプログラマブルＩＣ１０６中のハード化回路であることができる。他の回路構成２２４は、プログラマブルＩＣ１０６のプログラマブル論理中に構成される被プログラミング回路構成、プログラマブルＩＣ１０６内のハード化回路構成、またはその組合せを含むことができる。
【００５０】
他の例では、各々の周辺機器２３０は、周辺機器２３０同士の間で共有されかつプログラマブルＩＣ１０６中のスイッチとして機能する単一のＰＣＩｅ終点を含むよりもむしろ、それ自身のＰＣＩｅ終点を含むことができる。別の例では、プログラマブルＩＣ１０６は、複数のＰＣＩｅ終点を含むことができ、その各々は周辺機器２３０の群の間で共有される。
【００５１】
例では、ＰＣＩｅコントローラ２１４は、ＩＣパッケージ１０２のパッケージインターフェイス１０８に結合されるインターフェイス２２０を含む。これにより、処理システム１０４は、所望によりＩＣパッケージ１０２外部の付加的な周辺機器（たとえば、周辺機器１３６）と通信できるようになる。ある例では、インターフェイス２２０を省略することができ、ＰＣＩｅコントローラ２１４は、プログラマブルＩＣ１０６中のＰＣＩｅ終点のみと通信する。他のコントローラ２１６は、ＩＣパッケージ１０２および／または他のＩＣ１２０のパッケージインターフェイス１０８に結合されるインターフェイス２２２を含む。インターフェイス２２０および２２２は、処理システム１０４とパッケージインターフェイス１０８との間の配線１１６を用いて実現可能である。たとえば、他のコントローラ２１６は、ＲＡＭ１３２および／またはＲＡＭ１２２へのアクセスを制御するためのメモリコントローラを含むことができる。他のコントローラ２１６は、ＮＶＭ１３４および／またはＮＶＭ１２４からの読出およびそれらへの書込のための回路構成を含むことができる。
【００５２】
一例では、他の回路構成２２４はインターフェイス２２８を含む。インターフェイス２２８は、ＩＣパッケージ１０２のパッケージインターフェイス１０８に結合可能であるか、他のＩＣ１２０（たとえば、図１に示されるＮＶＭ１２４）に結合可能であるか、またはその組合せであることができる。例では、周辺回路構成１１０は、ＩＣパッケージ１０２のパッケージインターフェイス１０８に結合されるか、他のＩＣ１２０（たとえば、図１に示されるＲＡＭ１２２）に結合されるか、またはその組合せであるインターフェイス２２６を含む。これにより、プログラマブルＩＣ１０６の外部の回路は、周辺回路構成１１０と直接に通信できるようになる。ある例では、インターフェイス２２６を省略することができる。インターフェイス２２６および２２８は、プログラマブルＩＣ１０６とパッケージインターフェイス１０８との間の配線１１４および／またはプログラマブルＩＣ１０６と他のＩＣ１２０との間の配線１３０を用いて実現可能である。一例では、周辺回路構成１１０は、他の回路構成２２４へのインターフェイス２２９を含む。インターフェイス２２９は、プログラマブルＩＣ１０６中の専用の配線および／またはプログラマブル配線を用いて実現可能である。
【００５３】
示される例では、プログラマブルＩＣ１０６中の周辺回路構成１１０は、ＰＣＩｅコントローラ２１４およびＰＣＩｅ終点２１８によって実現されるＰＣＩｅインターフェイスを通じてリング配線２１０およびその上の構成要素に結合される。他の種類のインターフェイスを用いることができる。たとえば、ＰＣＩｅコントローラ２１４およびＰＣＩｅ終点２１８をクイックパス配線（ＱＰＩ）コントローラおよびＱＰＩ終点と置換えることができる。別の例では、ＰＣＩｅコントローラ２１４およびＰＣＩｅ終点２１８を、処理システム１０４とプログラマブルＩＣ１０６との間の通信をサポートするように特定的に設計されるカスタムインターフェイスコントローラおよびカスタムインターフェイス終点と置換えることができる。当業者は、プログラマブルＩＣ１０６中の周辺回路構成１１０とリング配線２１０上の処理システム１０４中の構成要素との間の通信を可能にするようにさまざまな種類のインターフェイスを用いることができることを認めるであろう。
【００５４】
図３は、一例に従う周辺回路構成１１０を描くブロック図である。周辺回路構成１１０は一般的に、静的領域３０２およびプログラマブル領域３０４を含む。静的領域３０２は、インターフェイス回路３０６（たとえば、図２に示されるＰＣＩｅ終点２１８）を含む。プログラマブル領域３０４は周辺機器２３０を含むことができる。ある例では、プログラマブル領域３０４は、いくつかのインターフェイス回路３０６Ａも含む。ある例では、周辺回路構成１１０は、１つよりも多くのプログラマブル領域３０４を含むことができ、その各々は、周辺機器２３０を用いて個別に構成可能である。
【００５５】
静的領域３０２は、その回路構成がプログラマブル領域３０４の再構成にわたって一定のままである点で「静的」である。一例では、インターフェイス回路３０６は、ＰＣＩｅ終点回路、直接メモリアクセス（ＤＭＡ）コントローラ、配線、メモリコントローラ、メモリインターフェイス回路（たとえば、ＤＤＲインターフェイス）、（部分再構成をサポートする）デカプラ回路、フラッシュプログラマー、デバッグ回路などを含む。ある例では、プログラマブル領域３０４は、インターフェイス回路３０６のいずれも含まない。他の例では、上述のインターフェイス回路のいくつか（たとえば、ＤＭＡコントローラ）を、（インターフェイス回路３０６Ａとして）プログラマブル領域３０４の中に実現することができる。
【００５６】
図４は、一例に従う周辺回路構成１１０をより詳細に描くブロック図である。周辺回路構成１１０は、インターフェイス回路３０６および周辺機器２３０を含む。当該例では、インターフェイス回路３０６は、ＰＣＩｅ終点２１８、ＤＭＡコントローラ４０４、配線回路（「配線４０６」）、メモリコントローラ４１０、メモリインターフェイス４１２、他のインターフェイス４１４を含む。インターフェイス回路３０６は他の回路を含むことができるが、明確さのためにこれら（たとえば、デカプラ回路、デバック回路など）を省略している。ＰＣＩｅ終点２１８は、周辺バスへの（たとえば、ＰＣＩｅコントローラ２１４への）物理的インターフェイスを設ける。ＰＣＩｅ終点２１８は、周辺機器２３０を実現するプログラマブル論理の再構成を制御するための媒体構成アクセスポート（media configuration access port）（ＭＣＡＰ）４０２を含むことができる。ＤＭＡコントローラ４０４は、処理システム１０４と周辺回路構成１１０との間のＤＭＡ動作を容易にする。
【００５７】
配線４０６は、ＤＭＡコントローラ４０４、周辺機器２３０、メモリコントローラ４１０、および他のインターフェイス４１４を結合する。メモリコントローラ４１０はメモリインターフェイス４１２に結合される。メモリインターフェイス４１２は、プログラマブルＩＣ１０６外部のＲＡＭ（たとえば、ＲＡＭ１２２および／またはＲＡＭ１３２）、プログラマブルＩＣ１０６内部のＲＡＭ（以下に記載される例）、またはその組合せに結合可能である。他のインターフェイス４１４は、プログラマブルＩＣ１０６中の他の回路構成２２４（たとえば、他のハード化回路および／または被プログラミング回路）に結合可能である。
【００５８】
例では、配線４０６は、ＡＲＭ（登録商標）アドバンストマイクロコントローラバスアーキテクチャ（Advanced Microcontroller Bus Architecture）（ＡＭＢＡ（登録商標））標準の一部として規定されるアドバンスト拡張可能インターフェイス（Advanced Extensible Interface）（ＡＸＩ）配線を用いて実現される。たとえば、配線４０６は、ＡＸＩ４、ＡＸＩ４−ライト（AXI4-Lite）、およびＡＸＩ４−ストリーム（AXI4-Stream）プロトコルをサポートすることができる。ＡＸＩ４プロトコルは、高性能メモリマップインターフェイスを規定する。ＡＸＩ４−ライトプロトコルは、低スループットメモリマップインターフェイスを規定する。ＡＸＩ−ストリームプロトコルは、高速ストリーミングインターフェイスを規定する。ＡＸＩ仕様は、単一のＡＸＩマスタと単一のＡＸＩスレーブとの間のインターフェイスを規定する。配線４０６は、ＡＸＩマスタをＡＸＩスレーブに結合する。ＡＸＩ４およびＡＸＩ４−ライトインターフェイスは、５つの異なるチャネル（すなわち、読出および書込アドレスチャネル、読出および書込データチャネル、ならびに書込応答チャネル）を含む。ＡＸＩ４−ストリームプロトコルは、マスタとスレーブとの間でのストリーミングデータの伝送のための単一のチャネルを規定する。メモリマップＡＸＩ（たとえば、ＡＸＩ４またはＡＸＩ４−ライト）において、すべてのトランザクションは、メモリ空間および転送すべきデータ内の目標アドレスに係る。ストリーミングＡＸＩ（たとえば、ＡＸＩ−ストリーム）では、アドレスの概念は存在しないか、または要件ではない。ＤＭＡコントローラ４０４、周辺機器２３０、他のインターフェイス４１４、およびメモリコントローラ４１０の各々は、互いの間での通信のために１つ以上のＡＸＩマスタおよび１つ以上のＡＸＩスレーブを含む。
【００５９】
動作の際、処理システム１０４は、ＰＣＩｅ終点２１８を通じて周辺回路構成１１０にアクセスする。処理システム１０４は、ＤＭＡコントローラ４０４によって取扱われるＤＭＡトランザクションを用いて周辺回路構成１１０にデータを移動し、データをそこから受信することができる。処理システム１０４は、周辺機器２３０に直接にデータを移動し、そこから直接にデータを受信することができる。処理システム１０４は、メモリコントローラ４１０にデータを移動し、そこからデータを受信することもできる。たとえば、直接に周辺機器２３０にデータを送り、そこから受信するよりもむしろ、処理システム１０４は、ＤＭＡトランザクションを用いてデータをメモリコントローラ４１０に移動してＲＡＭ中に記憶させることができる。周辺機器２３０は、ＲＡＭ中に記憶されるデータにアクセスし、これを処理することができる。処理システム１０４は次に、ＤＭＡトランザクションを用いてＲＡＭから処理済みデータを取出すことができる。他の例では、メモリコントローラ４１０のうち１つ以上は、処理システム１０４によってアクセス可能ではなく、周辺機器２３０にとって専用である。
【００６０】
処理システム１０４は、他のインターフェイス４１４に直接にデータを移動しそこから直接にデータを受信することもできる。これに代えて、直接に他のインターフェイス４１４にデータを送りそこから受信するよりもむしろ、処理システム１０４は、ＤＭＡトランザクションを用いてメモリコントローラ４１０にデータを移動してＲＡＭ中に記憶させることができる。他のインターフェイス４１４は、ＲＡＭ中に記憶されるデータにアクセスし、これを処理することができる。次に処理システム１０４は、ＤＭＡトランザクションを用いてＲＡＭから処理済みデータを取出すことができる。他の例では、他のインターフェイス４１４のうち１つ以上は、処理システム１０４によってアクセス可能ではなく、周辺機器２３０にとって専用である。
【００６１】
図５は、一例に従うコンピューティングシステム５００を描くブロック図である。コンピューティングシステム５００は、ハードウェア５０４およびハードウェア５０４上で実行されるソフトウェア５０６を含む。ハードウェア５０４は、処理システム１０４およびプログラマブルＩＣＤ１０６を少なくとも有するＩＣパッケージ１０２を含む（明確さのため、他のＩＣ１２０は図５から省略されている）。ハードウェア５０４は、ＲＡＭ１３２、ＮＶＭ１３４、サポート回路１３８、および周辺機器１３６などの、ＩＣパッケージ１０２に結合される回路構成も含む。ソフトウェア５０６はオペレーティングシステム（ＯＳ）５０８、ドライバスタック５１０、およびアプリケーション５１２を含む。処理システム１０４は、ＲＡＭ１３２または他の記憶デバイスに記憶可能なソフトウェア５０６を実行して、本明細書中に記載される１つ以上の動作を行なうように構成される。一実施形態では、ＩＣパッケージ１０２は、処理システム１０４とプログラマブルＩＣ１０６との間に配設されるＦＩＦＯバッファを含むことができる（たとえば、ＦＩＦＯバッファを、処理システム１０４および／またはプログラマブルＩＣ１０６のいずれかまたは両方の中に配設可能である）。
【００６２】
ＯＳ５０８は、リナックス（登録商標）、マイクロソフトウインドウズ（登録商標）、Ｍａｃ  ＯＳ（登録商標）などの当該技術分野で公知の任意の汎用オペレーティングシステムであることができる。ドライバスタック５１０は、指令およびその制御のための周辺回路構成１１０にアプリケーションプログラミングインターフェイス（ＡＰＩ）を設けるドライバおよびライブラリを含む。アプリケーション５１２は、何らかの作業を行なうようにドライバスタック５１０を通じて周辺回路構成１１０を呼出すソフトウェアを含む。アプリケーション５１２は、ニューラルネットワーク、映像処理、ネットワーク処理、または処理システム１０４から周辺回路構成１１０にいくつかの機能を肩代わりさせる同種のアプリケーションを含むことができる。アプリケーション５１２は、周辺回路構成１１０の機能性を変更するようにプログラマブルＩＣ１０６の構成を制御することもできる。
【００６３】
ドライバスタック５１０は、ＤＭＡドライバ、ハードウェア抽象化層（ＨＡＬ）ドライバ、およびランタイムライブラリなどの、さまざまなライブラリ、ドライバなどを含むことができる。ランタイムライブラリは、アプリケーション５１２による使用のためのＡＰＩを設ける。ランタイムライブラリは、アプリケーション５１２とＨＡＬドライバとの間のインターフェイスを設ける。同様に、ＨＡＬドライバは、ランタイムライブラリによる使用のためのＡＰＩを含む。ＨＡＬドライバは、ランタイムライブラリとＤＭＡドライバとの間のインターフェイスを設ける。ＤＭＡドライバは、周辺回路構成１１０を制御するためのＡＰＩを含む。特に、ＤＭＡドライバは、周辺機器２３０、メモリコントローラ４１０、および／または他のインターフェイス４１４にＤＭＡコントローラ４０４を通じてアクセスするためのＡＰＩを含む。
【００６４】
図６は、一例に従うプログラマブルＩＣ１０６を描くブロック図である。プログラマブルＩＣ１０６は、プログラマブル論理３、コンフィギュレーション論理２５、およびコンフィギュレーションメモリ２６を含む。プログラマブル論理３は、論理セル３０、サポート回路３１、およびプログラマブル配線３２を含む。論理セル３０は、複数の入力の一般的な論理機能を実現するように構成可能である。サポート回路３１は、トランシーバ、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。サポート回路３１は、論理セル３０への入力およびそれからの出力のためのＦＩＦＯバッファを含むことができる。論理セルおよびサポート回路３１は、プログラマブル配線３２を用いて相互接続可能である。論理セル３０をプログラムするため、サポート回路３１のパラメータを設定するため、およびプログラマブル配線３２をプログラムするための情報は、コンフィギュレーション論理２５によってコンフィギュレーションメモリ２６中に記憶される。コンフィギュレーション論理２５は、不揮発性メモリ２７または任意の他のソース（たとえば、ＤＲＡＭ２８または他の回路２９から）からコンフィギュレーションデータを取得することができる。ある例では、プログラマブルＩＣ１０６は処理システム２を含む。処理システム２は、マイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含むことができる。処理システム２は、ＩＣパッケージ１０２中の処理システム１０４からの区別のために「埋込」処理システムと称されることがある。
【００６５】
図７は、一例に従うプログラマブルＩＣ１０６のシステムオンチップ（ＳｏＣ）実現例を描くブロック図である。当該例では、プログラマブルＩＣ１０６は、処理システム２およびプログラマブル論理３を含む。処理システム２は、リアルタイム処理装置（ＲＰＵ）４、アプリケーション処理装置（ＡＰＵ）５、グラフィックス処理装置（ＧＰＵ）６、コンフィギュレーションおよびセキュリティユニット（ＣＳＵ）１２、プラットフォーム管理ユニット（ＰＭＵ）１２２などのさまざまな処理装置を含む。処理システム２は、オンチップメモリ（ＯＣＭ）１４、トランシーバ７、周辺機器８、配線１６、ＤＭＡ回路９、メモリコントローラ１０、周辺機器１５、および多重化ＩＯ（ＭＩＯ）回路１３などのさまざまなサポート回路も含む。処理装置およびサポート回路は配線１６によって相互接続される。ＰＬ３も配線１６に結合される。トランシーバ７は外部ピン２４に結合される。ＰＬ３は外部ピン２３に結合される。メモリコントローラ１０は外部ピン２２に結合される。ＭＩＯ１３は外部ピン２０に結合される。ＰＳ２は一般的に外部ピン２１に結合される。ＡＰＵ５は、ＣＰＵ１７、メモリ１８、およびサポート回路１９を含むことができる。
【００６６】
図７の例では、周辺回路構成１１０はＰＬ３中に配設される、被プログラミング回路、ハード化回路、またはその組合せであることができる。別の例では、周辺回路構成１１０のある部分をＰＳ２を用いて実現可能である。別の例では、ＰＳ２には、周辺回路構成１１０の他のインターフェイス４１４を通じてアクセス可能であり得る。そのような例では、処理システム１０４および／または周辺機器２３０は、ＰＳ２にアクセスすることができる。
【００６７】
ＰＳ２を参照して、処理装置の各々は、１つ以上のＣＰＵと、メモリ、割込コントローラ、ＤＭＡコントローラ、メモリ管理ユニット（ＭＭＵ）、浮動小数点ユニット（ＦＰＵ）などの関連回路とを含む。配線１６は、処理装置を相互接続し、またＰＳ２中の他の構成要素を処理装置に相互接続するように構成されるさまざまなスイッチ、バス、通信リンクなどを含む。
【００６８】
ＯＣＭ１４は、ＰＳ２を通じて分散可能な１つ以上のＲＡＭモジュールを含む。たとえば、ＯＣＭ１４は、バッテリバックアップ付きＲＡＭ（ＢＢＲＡＭ）、密結合メモリ（ＴＣＭ）などを含むことができる。メモリコントローラ１０は、外部ＤＲＡＭにアクセスするためのＤＲＡＭインターフェイスを含むことができる。周辺機器８，１５ぱ、ＰＳ２へのインターフェイスを設ける１つ以上の構成要素を含むことができる。たとえば、周辺機器１３６は、グラフィックス処理装置（ＧＰＵ）、ディスプレイインターフェイス（たとえば、ディスプレイポート、高精細度マルチメディアインターフェイス（ＨＤＭＩ（登録商標））ポートなど）、ユニバーサルシリアルバス（ＵＳＢ）ポート、イーサネット（登録商標）ポート、汎用非同期送受信機（ＵＡＲＴ）ポート、シリアル周辺機器インターフェイス（ＳＰＩ）ポート、汎用ＩＯ（ＧＰＩＯ）ポート、シリアルアドバンスト技術装着（serial advanced technology attachment）（ＳＡＴＡ）ポート、ＰＣＩｅポートなどを含むことができる。周辺機器１５はＭＩＯ１３に結合可能である。周辺機器８はトランシーバ７に結合可能である。トランシーバ７はシリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴなどを含むことができる。
【００６９】
図８は、プログラマブルＩＣ１０６のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）実現例を示す。図７に示されるプログラマブルＩＣ１０６のＳｏＣ実現例中のＰＬ３も、図８に示される構造を有することができる。ＦＰＧＡ実現例は、トランシーバ３７、コンフィギュレーション論理ブロック（「ＣＬＢ」）３３、ランダムアクセスメモリブロック（「ＢＲＡＭ」）３４、入出力ブロック（「ＩＯＢ」）３６、コンフィギュレーションおよびクロック発生論理（「ＣＯＮＦＩＧ／ＣＬＯＣＫＳ」）４２、デジタル信号処理ブロック（「ＤＳＰ」）３５、特化された入出力ブロック（「Ｉ／Ｏ」）４１（たとえば、コンフィギュレーションポートおよびクロックポート）、およびデジタルクロックマネージャ、アナログ−デジタル変換器、システム監視論理などの他のプログラマブル論理３９を含む多数の異なるプログラマブルタイルを含む。ＦＰＧＡは、ＰＣＩｅインターフェイス４０、アナログ−デジタル変換器（ＡＤＣ）３８なども含むことができる。
【００７０】
あるＦＰＧＡでは、各々のプログラマブルタイルは、図８のいちばん上に含まれる例に示されるように、同じタイル内にプログラマブル論理素子の入出力端子４８への接続を有する少なくとも１つのプログラマブル相互接続素子（「ＩＮＴ」）４３を含むことができる。各々のプログラマブル相互接続素子４３は、同じタイルまたは他のタイルの中に、隣接するプログラマブル相互接続素子の配線セグメント４９への接続も含むことができる。各々のプログラマブル相互接続素子４３は、論理ブロック（図示せず）同士の間の一般的なルーティングリソースの配線セグメント５０への接続も含むことができる。一般的なルーティングリソースは、配線セグメント（たとえば、配線セグメント５０）のトラックおよび配線セグメントを接続するためのスイッチブロック（図示せず）を備える論理ブロック（図示せず）同士の間のルーティングチャネルを含むことができる。一般的なルーティングリソース（たとえば、配線セグメント５０）の配線セグメントは１つ以上の論理ブロックに跨ることができる。一般的なルーティングリソースとともに、プログラマブル相互接続素子４３は、図示されるＦＰＧＡのためのプログラマブル配線構造（「プログラマブル配線」）を実現する。
【００７１】
例示的な実現例では、ＣＬＢ３３は、ユーザ論理プラス単一のプログラマブル相互接続素子（「ＩＮＴ」）４３を実現するようにプログラムされ得るコンフィギュラブル論理素子（「ＣＬＥ」）４４を含むことができる。ＢＲＡＭ３４は、１つ以上のプログラマブル相互接続素子に加えて、ＢＲＡＭ論理素子（「ＢＲＬ」）４５を含むことができる。典型的に、タイルに含まれる相互接続素子の数はタイルの高さに依存する。描かれる例では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（たとえば４）も用いることもできる。ＤＳＰタイル３５は、適切な数のプログラマブル相互接続素子に加えて、ＤＳＰ論理素子（「ＤＳＰＬ」）４６を含むことができる。ＩＯＢ３６は、プログラマブル相互接続素子４３の１つのインスタンスに加えて、たとえば入出力論理素子（「ＩＯＬ」）４７の２つのインスタンスを含むことができる。当業者には明らかなように、たとえば、Ｉ／Ｏ論理素子４７に接続される実際のＩ／Ｏパッドは典型的に、入出力論理素子４７の区域に閉じ込められるわけではない。
【００７２】
描かれる例では、（図８に示される）ダイの中心近くの水平方向区域をコンフィギュレーション、クロック、および他の制御論理のために用いる。この水平方向区域またはカラムから延在する垂直方向カラム５１は、ＦＰＧＡの幅にわたってクロックおよびコンフィギュレーション信号を分配するのに用いられる。
【００７３】
図８に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的なカラムナ構造を中断させる付加的な論理ブロックを含む。付加的な論理ブロックは、プログラマブルブロックおよび／または専用論理であり得る。
【００７４】
なお、図８は、例示的なＦＰＧＡアーキテクチャしか示さないことが意図される。たとえば、列中の論理ブロックの数、列の相対的な幅、列の数および順序、列に含まれる論理ブロックの種類、論理ブロックの相対的な大きさ、ならびに図８のいちばん上に含まれる相互接続／論理実現例は、純粋に例示的である。たとえば、実際のＦＰＧＡでは、ユーザ論理の効率的な実現を容易にするために、ＣＬＢが現われる場所にはどこにでも、１つよりも多くのＣＬＢの隣接する列が典型的に含まれるが、隣接するＣＬＢ列の数はＦＰＧＡの全体サイズによって異なる。
【００７５】
図９は、一例に従うＩＣパッケージ１０２中のプログラマブルＩＣ１０６を動作させる方法９００を描くフロー図である。方法９００の局面は、以上の図１−図８を参照して理解することができる。方法９００は３つの主な段階を含む。ブロック９０２で、ＩＣパッケージ１０２の起動の際に、プログラマブルＩＣ１０６が構成される。ブロック９０８で、デバイスはプログラマブルＩＣ１０６と通信する。ブロック９１６で、ＩＣパッケージ１０２の電源オンの間、プログラマブルＩＣ１０６が再構成される。プログラマブルＩＣ１０６を動作させる３つの主な段階の各々毎にさまざまな使用ケースが存在する。
【００７６】
ＩＣパッケージ１０２の電源オンの際、プログラマブルＩＣ１０６を構成するのに用いることができるいくつかの異なるプロセスが存在する。プログラマブルＩＣ１０６のコンフィギュレーション論理２５は、多数の異なるコンフィギュレーションモードを含み、これをマスタモードとスレーブモードとに分類可能である。マスタモードでは、コンフィギュレーション論理２５は構成プロセスを駆動する。例示的なマスタモードは、マスタシリアル周辺インターフェイス（ＳＰＩ）モード、マスタバイト周辺インターフェイス（ＢＰＩ）モード、マスタシリアルモード、およびマスタセレクトマップ（SelectMAP）モードを含む。マスタＳＰＩモードでは、コンフィギュレーション論理２５は、ＳＰＩプロトコルを用いてＮＶＭからコンフィギュレーションビットストリームをロードする。ＮＶＭは、ＩＣパッケージ１０２の内部のもの（たとえば、ＮＶＭ１２４）またはＩＣパッケージ１０２の外部のもの（たとえば、ＮＶＭ１３４）であることができる。マスタＢＰＩモードは同様に動作するが、ＳＰＩプロトコルの代わりにＢＰＩプロトコルを用いる。マスタシリアルは同様に動作するが、シリアルプロトコルを用いる。マスタセレクトマップモードは同様に動作するが、シリアルインターフェイスよりもむしろ、パラレルインターフェイスを用いる。スレーブモードでは、外部デバイスが構成プロセスを駆動する。例示的なスレーブモードは、スレーブシリアルモードおよびスレーブセレクトマップモード（パラレル）を含む。これらのスレーブモードのうちいずれかにおいて、外部デバイスは、処理システム１０４または何らかの他のマイクロプロセッサもしくはマイクロコントローラ（たとえば、ＩＣパッケージ１０２中の他のＩＣ１２０の一部またはＩＣパッケージ１０２の外部のサポート回路１３８）であることができる。外部デバイスは、コンフィギュレーションデータをメモリ（たとえば、ＮＶＭ１２４またはＮＶＭ１３４）から読出し、コンフィギュレーションデータをコンフィギュレーション論理２５に供給する。
【００７７】
ブロック９０４で、周辺回路構成１１０の少なくとも一部が、プログラマブルＩＣ１０６中に構成される。任意の他の回路構成２２４が存在すれば、ブロック９０４で、そのような他の回路構成２２４のすべてまたは一部を構成することもできる。たとえば、ブロック９０４で、周辺回路構成１１０の静的領域３０２を構成することができる。ブロック９０４で、マスタおよびスレーブモードのうち任意のものをプログラマブルＩＣ１０６の構成に用いることができる。ブロック９０４での構成は、典型的には、ハードウェア駆動であり、すなわち、電力がＩＣパッケージ１０２に印加されるものであり、構成プロセスは、コンフィギュレーション論理２５（マスタモード）または外部デバイス（スレーブモード）によって行なわれる。
【００７８】
ある場合、ブロック９０４では、周辺回路構成１１０の一部（たとえば、静的領域３０２）しか構成されない。そのような場合、ブロック９０６で、周辺回路構成１１０の残余の部分を構成することができる。ブロック９０６での構成は、上述のように、ハードウェア駆動またはソフトウェア駆動であることができる。ソフトウェア駆動プロセスでは、たとえば、プログラマブルＩＣ１０６を部分的に再構成して、処理システム１０４を用いてＭＣＡＰ４０２を通じて周辺機器２３０を実現することができる。
【００７９】
ブロック９０８で、プログラマブルＩＣ１０６との通信を３つの一般的なカテゴリに分けることができる。ブロック９１０で、通信は、処理システム１０４と周辺回路構成１１０との間で行なわれる。ブロック９１２で、通信は、外部デバイス（プログラマブルＩＣ１０６外部）と周辺回路構成１１０との間で行なわれる。ブロック９１４で、通信は、内部デバイス（プログラマブルＩＣ１０６内部）と周辺回路構成１１０との間で行なわれる。
【００８０】
ブロック９１０で、処理システム１０４は、ＰＣＩｅなどのインターフェイスを介して周辺回路構成１１０にデータを送るおよび／またはそれからデータを受信する。処理システム１０４は、ＤＭＡトランザクションを用いて、インターフェイスを介して周辺回路構成１１０におよびそれからデータを転送することができる。これに代えて、処理システム１０４は、インターフェイスを介して周辺回路構成１１０にデータをストリーミングすることができる。ある場合、処理システム１０４は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて周辺回路構成１１０におよびそれからデータを間接的に与えることができる。
【００８１】
ブロック９１２で、プログラマブルＩＣ１０６外部のデバイスが周辺回路構成１１０と通信する。たとえば、他のＩＣ１２０、サポート回路１３８、または周辺機器１３６の中の回路が周辺回路構成１１０と直接に通信することができる。これに代えて、そのような回路は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて周辺回路構成１１０と間接的に通信することができる。
【００８２】
ブロック９１４で、プログラマブルＩＣ１０６内部のデバイスが周辺回路構成１１０と通信する。たとえば、他の回路構成２２４中の回路が周辺回路構成１１０と直接に通信することができる。これに代えて、そのような回路は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて周辺回路構成１１０と間接的に通信することができる。そのような回路は、プログラマブルＩＣ１０６のプログラマブル論理中の被プログラミング回路またはプログラマブルＩＣ１０６中のハード化回路（たとえば、埋込処理システム）であることができる。
【００８３】
ブロック９１６で、電力がＩＣパッケージ１０２に印加されている間、プログラマブルＩＣ１０６を再構成することができる。たとえば、ブロック９１８で、ブロック９０２に記載したのと同様のプロセスを用いてプログラマブルＩＣ１０６を完全に再構成することができる。これに代えて、ブロック９２０で、プログラマブルＩＣ１０６を部分的に再構成することができる。たとえば、周辺回路構成１１０の１つ以上の周辺機器２３０を再構成して異なる機能性を実現することができる。
【００８４】
図１０は、別の例に従うＩＣパッケージ１００２を描くブロック図である。本例では、ＩＣパッケージ１００２は、単一の半導体ダイ上に形成される処理システム１０４およびプログラマブルＩＣ１０６を含む。プログラマブルＩＣ１０６は、上述のように、周辺回路構成１１０を含む。プログラマブルＩＣ１０６は、以下の例に記載されるように、１つ以上のリング配線を通じて処理システム１０４中の他の構成要素に結合される。処理システム１０４は、ＩＣパッケージ１００２中の配線１００３を通じてパッケージインターフェイス１００８に結合される。例では、ＩＣパッケージ１００２は、処理システム１０４に結合される１つ以上の他のＩＣ１０２０を含むことができる。このように、本例は、プログラマブルＩＣ１０６が、ＰＣＩｅ、ＱＰＩなどのインターフェイスを通じてよりもむしろ、処理システム１０４内の内部リング配線に結合される点で、図１とは異なっている。
【００８５】
図１１は、ＩＣパッケージ１００２中の処理システム１０４の例示的な実現例を描くブロック図である。本例では、処理システム１０４は、以上の例に記載したように、各々がリング配線２１０に結合される、ＣＰＵ２０２、キャッシュメモリ２０４、およびインターフェイス回路２０６を含む。この例に特定的に、プログラマブルＩＣ１０６もリング配線２１０に結合される。プログラマブルＩＣ１０６中のハード化回路として、プログラマブルＩＣ１０６のプログラマブル論理中の被プログラミング回路として、またはその組合せとして、周辺回路構成１１０を実現可能である。インターフェイス回路２０６は、上述のように、ＰＣＩｅコントローラ２１４および他のコントローラ２１６を含む。これに代えて、ＰＣＩｅコントローラ２１４を任意の他の同様のインターフェイスコントローラ（たとえば、ＱＰＩコントローラ）と置換えることができる。例では、処理システム１０４は、ＧＰＵ２０８などの、リング配線２１０に結合される他の構成要素を含むことができる。
【００８６】
本例では、プログラマブルＩＣ１０６は、リング配線２１０に結合される処理システム１０４中の任意の他の構成要素（たとえば、ＣＰＵ２０２、キャッシュメモリ２０４、インターフェイス回路２０６、ＧＰＵ２０８など）と通信することができる。プログラマブルＩＣ１０６には、インターフェイス回路２０６を通じて、処理システム１０４外部の回路からアクセス可能である。
【００８７】
図１２は、ＩＣパッケージ１００２中の処理システム１０４の別の例示的な実現例を描くブロック図である。本例では、プログラマブルＩＣ１０６は、図１１の例で上述したように、リング配線２１０に結合される。一例では、プログラマブルＩＣ１０６は、メモリ１２０２（たとえば、ランダムアクセスメモリ（ＲＡＭ））および／またはキャッシュ１２０４などの専用メモリを含む。専用メモリ１２０２，１２０４は、リング配線２１０を通じて直接にアクセス可能ではない。別の例では、プログラマブルＩＣ１０６中のメモリ１２０２，１２０４をリング配線２１０に結合することができ、これらにはリング配線２１０上の他の構成要素からアクセス可能である。いずれの場合も、プログラマブルＩＣ１０６は、処理システム１０４の外部の回路によるアクセス用の外部インターフェイス１２０６をさらに含むことができる。これにより、プログラマブルＩＣ１０６には、インターフェイス回路２０６のみを通じてよりもむしろ、外部インターフェイス１２０６を通じて直接にアクセス可能になる。たとえば、外部インターフェイス１２０６は、プログラマブルＩＣ１０６を構成するためのコンフィギュレーションインターフェイスを含むことができる。外部インターフェイス１２０６は、ＰＣＩｅ、ＱＰＩなどの任意の種類のインターフェイスを用いることができる。明確さの目的のため、オプションのＧＰＵ２０８を省略するが、図１１に示される処理システム１０４中にこれを含むことができる。
【００８８】
図１３は、ＩＣパッケージ１００２中の処理システム１０４のまた別の例示的な実現例を描くブロック図である。本例では、処理システム１０４は、リング間コネクタ１３０２によって結合される２つのサブリング２１０Ａおよび２１０Ｂを含む。リング間コネクタ１３０２は、ルータ、ブリッジなどであることができる。プログラマブルＩＣ１０６は、ＣＰＵ２０２、キャッシュメモリ２０４、およびインターフェイス回路２０６とともに、サブリング２１０Ｂに結合される。ＣＰＵ２０２およびキャッシュメモリ２０４は、サブリング２１０Ａに結合される。一例では、他の構成要素をサブリング２１０Ａおよび／または２１０Ｂに結合することができる。たとえば、ＧＰＵ２０８をサブリング２１０Ａに結合することができる。サブリング２１０Ａ，２１０Ｂを除き、図１３に示される構成は図１１の構成と同様である。本構成は、帯域幅が十分に大きいプログラマブルＩＣ１０６をサポートすることができ、その場合はリング配線２１０をサブリングに分割することが有利であろう。
【００８９】
処理システムをプログラマブルＩＣと組合せる場合、これら２つの間のストリーミングインターフェイスを用いた通信が、リアルタイムデータ処理などのさまざまな適用例におけるより優れた通信モードである。代替案は、支配的な通信パラダイムである直接メモリアドレシングである。例では、処理システム１０４とプログラマブルＩＣ１０６との間の配線は、メモリアドレシングモードに加えてストリーミングモードをサポートすることができる。
【００９０】
図１４は、ストリーミングインターフェイスを用いての通信のために構成されるＩＣパッケージ１０２の例示的な実現例を描くブロック図である。当該例では、ＰＣＩｅコントローラ２１４およびＰＣＩｅ終点２１８の各々は、１つ以上のポート１４０２を含む。１つのモードでは、メモリアドレシングを用いて通信するようにポート１４０２を構成することができる。別のモードでは、ストリーミングインターフェイスを用いて通信するようにポート１４０２を構成することができる。例示的なストリーミングインターフェイスは、ＡＭＢＡ（登録商標）ＡＸＩ４ストリーミングインターフェイスであるが、他のストリーミングインターフェイスを用いることができる。例では、ポート１４０２は、１つよりも多くのストリーミングインターフェイスをサポートすることができる。
【００９１】
図１５は、ストリーミングインターフェイスを用いての通信のために構成されるＩＣパッケージ１００２の例示的な実現例を描くブロック図である。当該例では、リング配線２１０に結合される各々の構成要素が１つ以上のポート１４０２を含むことができる。１つのモードでは、メモリアドレシングを用いて通信するようにポート１４０２を構成することができる。別のモードでは、ストリーミングインターフェイスを用いて通信するようにポート１４０２を構成することができる。例示的なストリーミングインターフェイスは、ＡＭＢＡ（登録商標）ＡＸＩ４ストリーミングインターフェイスであるが、他のストリーミングインターフェイスを用いることができる。例では、ポート１４０２は、１つよりも多くのストリーミングインターフェイスをサポートすることができる。
【００９２】
図１６は、一例に従う周辺回路構成１１０をより詳細に描くブロック図である。周辺回路構成１１０のこの例は、以上のさまざまな実施形態（たとえば、図１０−図１５）に記載されるように、プログラマブルＩＣ１０６が処理システム１０４と同じＩＣダイ上に配設される場合に用いることができる。周辺回路構成１１０は、インターフェイス回路１６０３および周辺機器２３０を含む。当該例では、インターフェイス回路１６０３は、リングインターフェイス１６０２、ＤＭＡコントローラ１６０４、配線回路（「配線１６０６」）、メモリコントローラ１６１０、メモリインターフェイス１６１２、他のインターフェイス１６１４を含む。インターフェイス回路１６０３は他の回路を含むことができ、これら（たとえば、デカプラ回路、デバッグ回路など）は明確さのために省略されている。リングインターフェイス回路１６０２は、リング配線２１０への物理的インターフェイスを設ける。リングインターフェイス回路１６０２は、リング配線２１０のプロトコルと配線１６０６のプロトコルとの間を変換する。ＤＭＡコントローラ１６０４は、処理システム１０４と周辺回路構成１１０との間のＤＭＡ動作を容易にする。ある例では、ＤＭＡコントローラ１６０４を省略することができ、リングインターフェイス回路１６０２を配線１６０６に結合することができる。
【００９３】
配線１６０６は、ＤＭＡコントローラ１６０４、周辺機器２３０、メモリコントローラ１６１０、および他のインターフェイス１６１４を結合する。メモリコントローラ４１０はメモリインターフェイス１６１２に結合される。メモリインターフェイス１６１２は、プログラマブルＩＣ１０６外部のＲＡＭ、プログラマブルＩＣ１０６内部のＲＡＭ（たとえば、メモリ１２０２および／またはキャッシュ１２０４）、またはその組合せに結合可能である。他のインターフェイス１６１４は、プログラマブルＩＣ１０６中の他の回路構成（たとえば、他のハード化回路および／または被プログラミング回路）に結合可能である。
【００９４】
例では、配線１６０６は、ＡＲＭ（登録商標）アドバンストマイクロコントローラバスアーキテクチャ（ＡＭＢＡ（登録商標））標準の一部として規定されるＡＸＩ配線を用いて実現される。たとえば、配線４０６は、ＡＸＩ４、ＡＸＩ４−ライト、およびＡＸＩ４−ストリームプロトコルをサポートすることができる。ＤＭＡコントローラ１６０４、周辺機器２３０、他のインターフェイス１６１４、およびメモリコントローラ１６１０の各々は、互いの間での通信のために１つ以上のＡＸＩマスタおよび１つ以上のＡＸＩスレーブを含む。
【００９５】
動作の際、処理システム１０４は、リングインターフェイス回路１６０２を通じて周辺回路構成１１０にアクセスする。処理システム１０４は、メモリマップトランザクションまたはストリーミングトランザクションを用いて周辺回路構成１１０にデータを移動し、そこからデータを受信することができる。処理システム１０４は、直接に周辺機器２３０にデータを移動し、そこからデータを受信することができる。処理システム１０４は、メモリコントローラ１６１０にデータを移動し、そこからデータを受信することもできる。たとえば、周辺機器２３０に直接にデータを送りそこから受信するよりもむしろ、処理システム１０４は、ＤＭＡトランザクションを用いてデータをメモリコントローラ１６１０に移動してＲＡＭ中に記憶させることができる。周辺機器２３０は、ＲＡＭ中に記憶されるデータにアクセスし、これを処理することができる。処理システム１０４は次に、ＲＡＭから処理済みデータを取出すことができる。他の例では、メモリコントローラ１６１０のうち１つ以上は、処理システム１０４によってアクセス可能ではなく、周辺機器２３０にとって専用である。
【００９６】
処理システム１０４は、直接に他のインターフェイス１６１４にデータを移動し、そこからデータを受信することもできる。これに代えて、直接に他のインターフェイス１６１４にデータを送り、そこから受信するよりもむしろ、処理システム１０４は、メモリコントローラ１６１０にデータを移動してＲＡＭ中に記憶させることができる。他のインターフェイス１６１４は、ＲＡＭ中に記憶されるデータにアクセスし、これを処理することができる。次に処理システム１０４は、ＲＡＭから処理済みデータを取出すことができる。他の例では、他のインターフェイス１６１４のうち１つ以上は、処理システム１０４によってアクセス可能ではなく、周辺機器２３０にとって専用である。
【００９７】
図１７は、一例に従う処理システム１０４中のプログラマブルＩＣ１０６を動作させる方法１７００を描くフロー図である。方法９００の局面は、以上の図１０−図１６を参照して理解することができる（すなわち、プログラマブルＩＣ１０６は、処理システム１０４と同じＩＣダイ上に配設される）。方法１７００は、３つの主な段階を含む。ブロック１７０２で、処理システム１０４の起動の際に、プログラマブルＩＣ１０６が構成される。ブロック１７０８で、デバイスはプログラマブルＩＣ１０６と通信する。ブロック１７１６で、ＩＣパッケージ１０２の電源オンの間、プログラマブルＩＣ１０６が再構成される。プログラマブルＩＣ１０６を動作させる３つの主な段階の各々毎にさまざまな使用ケースが存在する。
【００９８】
処理システム１０４の電源オンの際、プログラマブルＩＣ１０６を構成するのに用いることができるいくつかの異なるプロセスが存在する。マスタコンフィギュレーションモードを用いて、処理システム１０４中に配設されるまたは処理システム１０４の外部に配設されるＮＶＭを用いてプログラマブルＩＣ１０６を構成することができる。スレーブコンフィギュレーションモードを用いて、処理システム１０４上に配設されるＣＰＵ２０２もしくは他のデバイスを用いてまたは処理システム１０４外部のデバイスを用いて、プログラマブルＩＣ１０６を構成することができる。
【００９９】
ブロック１７０４で、周辺回路構成１１０の少なくとも一部がプログラマブルＩＣ１０６中に構成される。任意の他の回路構成が存在すれば、ブロック１７０４でそのような他の回路構成のすべてまたは一部を構成することもできる。ブロック１７０４で、マスタおよびスレーブモードのうち任意のものをプログラマブルＩＣ１０６の構成に用いることができる。ブロック１７０４での構成は典型的にハードウェア駆動であり、すなわち、電力が処理システム１０４に印加されるものであり、構成プロセスは、コンフィギュレーション論理２５（マスタモード）または外部デバイス（スレーブモード）によって行なわれる。
【０１００】
ある場合、ブロック１７０４では、周辺回路構成１１０の一部しか構成されない。そのような場合、ブロック１７０６で、周辺回路構成１１０の残余の部分を構成することができる。ブロック１７０６での構成は、上述のようにハードウェア駆動またはソフトウェア駆動であることができる。ソフトウェア駆動プロセスでは、たとえば、プログラマブルＩＣ１０６を部分的に再構成して、ＣＰＵ２０２を用いて内部構成アクセスポート（ＩＣＡＰ）１６１６（図１６）を通じて周辺機器２３０を実現することができる。
【０１０１】
ブロック１７０８で、プログラマブルＩＣ１０６との通信を３つの一般的なカテゴリに分けることができる。ブロック１７１０で、通信は、ＣＰＵ２０２と周辺回路構成１１０との間で行なわれる。ブロック１７１２で、通信は、外部デバイス（プログラマブルＩＣ１０６の外部）と周辺回路構成１１０との間で行なわれる。ブロック１７１４で、通信は、（プログラマブルＩＣ１０６内部の）内部デバイスと周辺回路構成１１０との間で行なわれる。
【０１０２】
ブロック１７１０で、ＣＰＵ２０２は、リング配線２１０を介して周辺回路構成１１０にデータを送るおよび／またはそれからデータを受信する。処理システム１０４は、メモリマップトランザクションまたはストリーミングトランザクションを用いて、リング配線２１０を介して周辺回路構成１１０におよびそれからデータを転送することができる。ある場合、処理システム１０４は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて、周辺回路構成１１０におよびそれからデータを間接的に与えることができる。
【０１０３】
ブロック１７１２で、プログラマブルＩＣ１０６外部のデバイスが周辺回路構成１１０と通信する。外部デバイスを処理システム１０４の内部（たとえばリング配線２１０の上）または処理システム１０４の外部に配設することができる。これに代えて、そのような回路は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて周辺回路構成１１０と間接的に通信することができる。
【０１０４】
ブロック１７１４で、プログラマブルＩＣ１０６内部のデバイスが周辺回路構成１１０と通信する。たとえば、プログラマブルＩＣ１０６中の被プログラミング回路またはハード化回路は、周辺回路構成１１０と直接に通信することができる。これに代えて、そのような回路は、プログラマブルＩＣ１０６内部またはプログラマブルＩＣ１０６外部に配設可能な共有メモリを通じて周辺回路構成１１０と間接的に通信することができる。
【０１０５】
ブロック１７１６で、電力が処理システム１０４に印加されている間、プログラマブルＩＣ１０６を再構成することができる。たとえば、ブロック１７１８で、ブロック１７０２において記載したのと同様のプロセスを用いて、プログラマブルＩＣ１０６を完全に再構成することができる。これに代えて、ブロック１７２０で、プログラマブルＩＣ１０６を部分的に再構成することができる。たとえば、周辺回路構成１１０の１つ以上の周辺機器２３０を再構成して異なる機能性を実現することができる。
【０１０６】
以上は具体例に向けられるが、その基本的範囲から逸脱することなく、他のおよびさらなる例を考案し得、その範囲は引続く請求項によって定められる。
【図１】
2020535659.tif 000003
【図２】
2020535659.tif 000004
【図３】
2020535659.tif 000005
【図４】
2020535659.tif 000006
【図５】
2020535659.tif 000007
【図６】
2020535659.tif 000008
【図７】
2020535659.tif 000009
【図８】
2020535659.tif 000010
【図９】
2020535659.tif 000011
【図１０】
2020535659.tif 000012
【図１１】
2020535659.tif 000013
【図１２】
2020535659.tif 000014
【図１３】
2020535659.tif 000015
【図１４】
2020535659.tif 000016
【図１５】
2020535659.tif 000017
【図１６】
2020535659.tif 000018
【図１７】
2020535659.tif 000019
【手続補正書】
【提出日】令和2年5月29日(2020.5.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）パッケージであって、
基板上に配設される処理システムおよびプログラマブルＩＣを備え、前記処理システムは、前記基板の配線を通じて前記プログラマブルＩＣに結合され、さらに
前記処理システムおよび前記プログラマブルＩＣのための外部インターフェイスを設けるように構成されるパッケージインターフェイスを備え、
前記処理システムはリング配線に結合される構成要素を含み、前記構成要素はプロセッサおよびインターフェイスコントローラを含み、
前記プログラマブルＩＣは、前記配線を通じて前記インターフェイスコントローラに結合されるインターフェイス終点と、前記インターフェイス終点に結合されかつ前記インターフェイス終点および前記インターフェイスコントローラを通じての前記処理システムの前記リング配線との通信のために構成される少なくとも１つの周辺機器とを含み、前記少なくとも１つの周辺機器は、パッケージインターフェイスに結合されるインターフェイスを含む、集積回路（ＩＣ）パッケージ。
【請求項２】
前記プログラマブルＩＣはプログラマブルファブリックを含む、請求項１に記載のＩＣパッケージ。
【請求項３】
前記プログラマブルＩＣは、前記プログラマブルファブリックに結合される埋込処理システムを含む、請求項２に記載のＩＣパッケージ。
【請求項４】
前記少なくとも１つの周辺機器は前記プログラマブルファブリック中にプログラミングされる、請求項２に記載のＩＣパッケージ。
【請求項５】
前記インターフェイスコントローラおよび前記インターフェイス終点は、各々、少なくとも１つのストリーミングインターフェイスを用いた通信のために構成される１つ以上のポートを含む、請求項１に記載のＩＣパッケージ。
【請求項６】
前記処理システムおよび前記プログラマブルＩＣに結合される１つ以上の他のＩＣをさらに備える、請求項１に記載のＩＣパッケージ。
【国際調査報告】
2020535659.tif 000020
2020535659.tif 000021
2020535659.tif 000022