(57)【要約】  本明細書の実施形態は、異なるインターフェース通信プロトコルをサポートするように再構成され得るプログラマブルＮｏＣ（１０５）を含むＳｏＣについて説明する。一実施形態では、ＮｏＣは、ＳｏＣ（たとえば、プロセッサ（４１０）、メモリ（４１５）、プログラマブル論理ブロック（４０５）など）中のハードウェア要素が、ＮｏＣを使用してデータを送信し、受信することを可能にする、進入論理ブロック（１１５）および退出論理ブロック（１４０）を含む。進入論理ブロックおよび退出論理ブロックは、最初に、ハードウェア要素とインターフェースするための特定の通信プロトコルをサポートするように構成され得る。しかしながら、後で、ユーザは、異なる通信プロトコルをサポートするために進入論理ブロックおよび退出論理ブロックを再構成することを望み得る。それに応答して、ＳｏＣは、進入論理ブロックおよび退出論理ブロックが、ハードウェア要素によって使用される新しい通信プロトコルをサポートするようにＮｏＣを再構成することができる。このようにして、プログラマブルＮｏＣは、ＳｏＣ中の他のハードウェア要素とインターフェースするために使用される複数の通信プロトコルをサポートすることができる。【選択図】図１
2021515453.tif 000002
【特許請求の範囲】
【請求項１】
第１のハードウェア論理ブロックと、
第２のハードウェア論理ブロックと、
ネットワークオンチップ（ＮｏＣ）と
を備える、システムオンチップ（ＳｏＣ）であって、前記ネットワークオンチップ（ＮｏＣ）が、
前記第１のハードウェア論理ブロックに接続された進入論理ブロックと、
前記第２のハードウェア論理ブロックに接続された退出論理ブロックと
前記進入論理ブロックを前記退出論理ブロックに接続する複数の相互接続された交換機と
を備え、
前記進入論理ブロックが、第１のインターフェース通信プロトコルに適合する受信データを第１のパケットに変換するように構成された第１のエンコーダ、および第２のインターフェース通信プロトコルに適合する受信データを第２のパケットに変換するように構成された第２のエンコーダを備え、
前記退出論理ブロックが、前記第１のパケットを前記第１のインターフェース通信プロトコルに適合するデータに変換するように構成された第１のデコーダ、および前記第２のパケットを前記第２のインターフェース通信プロトコルに適合するデータに変換するように構成された第２のデコーダを備える、システムオンチップ（ＳｏＣ）。
【請求項２】
前記進入論理ブロックは、前記ＮｏＣが動作可能であるとき、前記第１のエンコーダおよび前記第２のエンコーダのうちの１つをアクティブ化し、他のエンコーダを非アクティブ化するように構成され、前記退出論理ブロックは、前記ＮｏＣが動作可能であるとき、前記第１のデコーダおよび前記第２のデコーダのうちの１つをアクティブ化し、他のデコーダを非アクティブ化するように構成された、請求項１に記載のＳｏＣ。
【請求項３】
前記第１のエンコーダが前記進入論理ブロック中でアクティブであるとき、前記第１のデコーダが前記退出論理ブロック中でアクティブであり前記第２のデコーダが非アクティブであり、前記第２のエンコーダが前記進入論理ブロック中でアクティブであるとき、前記第２のデコーダが前記退出論理ブロック中でアクティブであり前記第１のデコーダが非アクティブである、請求項２に記載のＳｏＣ。
【請求項４】
前記進入論理ブロック中の前記第１のエンコーダおよび前記第２のエンコーダ、ならびに前記退出論理ブロック中の前記第１のデコーダおよび前記第２のデコーダが強化回路を備える、請求項１から３のいずれか一項に記載のＳｏＣ。
【請求項５】
前記進入論理ブロックが、（ｉ）前記第１のハードウェア論理ブロックから前記進入論理ブロックにデータを転送するために使用されるインターフェースにおけるデータ幅と、（ｉｉ）前記インターフェースによってデータが送信される周波数とを調整するように構成された、請求項１から４のいずれか一項に記載のＳｏＣ。
【請求項６】
前記第１のパケットおよび前記第２のパケットが、両方とも、前記複数の交換機を通して前記第１のパケットおよび前記第２のパケットをルーティングするために使用されるＮｏＣパケットプロトコルに適合する、請求項１から５のいずれか一項に記載のＳｏＣ。
【請求項７】
前記第１のインターフェース通信プロトコルがメモリマップされた通信プロトコルであり、前記第２のインターフェース通信プロトコルがストリーミングプロトコルである、請求項１から６のいずれか一項に記載のＳｏＣ。
【請求項８】
前記第１のハードウェア論理ブロックおよび前記第２のハードウェア論理ブロックが、ユーザによって再構成され得るプログラマブル論理ブロックであり、前記第１のエンコーダおよび前記第２のエンコーダ、ならびに前記第１のデコーダおよび前記第２のデコーダが、前記プログラマブル論理ブロックに関連するプログラマブル論理ファブリックから独立してアクティブ化および非アクティブ化され得るか、または
前記第１のハードウェア論理ブロックおよび前記第２のハードウェア論理ブロックが、非プログラマブルである強化論理ブロックである、請求項１から７のいずれか一項に記載のＳｏＣ。
【請求項９】
前記ＳｏＣがフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を備える、請求項８に記載のＳｏＣ。
【請求項１０】
第１のインターフェース通信プロトコルを使用してＳｏＣ中の第１の論理ブロックと第２の論理ブロックとの間の通信を与えるようにＮｏＣを構成することであって、前記ＮｏＣ中の進入論理ブロック中の第１のエンコーダがアクティブであり、前記ＮｏＣ中の退出論理ブロック中の第１のデコーダがアクティブである、ＮｏＣを構成することと、
第２のインターフェース通信プロトコルを使用して前記第１の論理ブロックと前記第２の論理ブロックとの間の通信を与えるように前記ＮｏＣを再構成することを決定すると、
前記進入論理ブロック中の第２のエンコーダをアクティブ化し、前記第１のエンコーダを非アクティブ化することと、
前記退出論理ブロック中の第２のデコーダをアクティブ化し、前記第１のデコーダを非アクティブ化することと
を含む、方法。
【請求項１１】
前記進入論理ブロックにおいて前記第１の論理ブロックから第１のデータを受信することであって、前記第１のデータが前記第１のインターフェース通信プロトコルに適合する、第１のデータを受信することと、
前記第１のエンコーダを使用して前記第１のデータを第１のパケットに変換することと、
前記ＮｏＣ中の複数の交換機を使用して前記第１のパケットを前記退出論理ブロックにルーティングすることと、
前記第１のデコーダを使用して前記第１のパケットを前記第１のインターフェース通信プロトコルに適合する第２のデータに変換することと、
前記第２のデータを前記第２の論理ブロックに転送することと
をさらに含む、請求項１０に記載の方法。
【請求項１２】
前記ＮｏＣを再構成した後に、
前記進入論理ブロックにおいて前記第１の論理ブロックから第３のデータを受信することであって、前記第１のデータが前記第２のインターフェース通信プロトコルに適合する、第３のデータを受信することと、
前記第２のエンコーダを使用して前記第３のデータを第２のパケットに変換することと、
前記複数の交換機を使用して前記第２のパケットを前記退出論理ブロックにルーティングすることと、
前記第２のデコーダを使用して前記第２のパケットを前記第２のインターフェース通信プロトコルに適合する第４のデータに変換することと、
前記第４のデータを前記第２の論理ブロックに転送することと
をさらに含む、請求項１０または１１に記載の方法。
【請求項１３】
前記第２のインターフェース通信プロトコルを使用して前記ＳｏＣ中の第３の論理ブロックと第４の論理ブロックとの間の通信を与えるように前記ＮｏＣを構成することと、
前記第１のインターフェース通信プロトコルを使用して前記第１の論理ブロックと前記第２の論理ブロックとの間でデータを送信することと並行して、前記第２のインターフェース通信プロトコルを使用して前記第３の論理ブロックと前記第４の論理ブロックとの間でデータを送信することと、
前記第１のインターフェース通信プロトコルを使用して前記第３の論理ブロックと前記第４の論理ブロックとの間の通信を与えるように前記ＮｏＣを再構成することと、
前記第２のインターフェース通信プロトコルを使用して前記第１の論理ブロックと前記第２の論理ブロックとの間でデータを送信することと並行して、前記第１のインターフェース通信プロトコルを使用して前記第３の論理ブロックと前記第４の論理ブロックとの間でデータを送信することであって、前記第３の論理ブロックおよび前記第４の論理ブロック、ならびに前記第１の論理ブロックおよび前記第２の論理ブロックが、前記ＮｏＣ中の少なくとも１つの交換機を共有する、前記ＮｏＣを通るそれぞれの通信経路を有する、前記第３の論理ブロックと前記第４の論理ブロックとの間でデータを送信することと
をさらに含む、請求項１０から１２のいずれか一項に記載の方法。
【請求項１４】
前記第１の論理ブロックから前記進入論理ブロックにデータを転送するために使用されるインターフェースのデータ幅を調整することと、
前記インターフェースによってデータが送信される周波数を調整することと
をさらに含む、請求項１０から１３のいずれか一項に記載の方法。
【請求項１５】
前記第１の論理ブロックおよび前記第２の論理ブロック中のプログラマブル論理を再プログラムすることをさらに含み、前記第１の論理ブロックおよび前記第２の論理ブロックならびに前記ＮｏＣがＦＰＧＡ内に含まれている、請求項１０から１４のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般に、プログラマブルネットワークオンチップ（ＮｏＣ）に関し、特に、異なる通信プロトコルをサポートするようにＮｏＣ中のインターフェース要素を再構成することに関する。
【背景技術】
【０００２】
システムオンチップ（ＳｏＣ）（たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブル論理デバイス（ＰＬＤ）、または特定用途向け集積回路（ＡＳＩＣ））は、ＳｏＣ中の論理ブロック、たとえば、プログラマブル論理ブロック、プロセッサ、メモリなどの間でデータパケットをルーティングするためのネットワークオンチップ（ＮｏＣ）として知られているパケットネットワーク構造を含むことができる。ＮｏＣはプログラマブル論理から形成され得るが、これは、他の特徴または回路（たとえば、より多くのプロセッサ、メモリ、またはユーザのための利用可能なプログラマブル論理）のために使用され得る、ＳｏＣ上の多くのエリアを必要とする。（たとえば、非プログラマブル回路を使用して）ＮｏＣの全部または一部を強化することはＳｏＣ中のＮｏＣのフットプリントを著しく低減し得るが、ＮｏＣはその場合フレキシビリティを失う。すなわち、ＮｏＣ中の強化された構成要素は、異なる通信プロトコルをサポートするように再構成されることができない。
【発明の概要】
【０００３】
集積回路中のＮｏＣを構成するための技法について説明する。１つの例は、ＮｏＣと、第１のハードウェア論理ブロックと、第２のハードウェア論理ブロックとを含むＳｏＣである。ＮｏＣは、第１のハードウェア論理ブロックに接続された進入（ｉｎｇｒｅｓｓ）論理ブロックと、第２のハードウェア論理ブロックに接続された退出（ｅｇｒｅｓｓ）論理ブロックと、進入論理ブロックを退出論理ブロックに接続する複数の相互接続された交換機とを含む。その上、進入論理ブロックは、第１のインターフェース通信プロトコルに適合する受信されたデータを第１のパケットに変換するように構成された第１のエンコーダと、第２のインターフェース通信プロトコルに適合する受信されたデータを第２のパケットに変換するように構成された第２のエンコーダとを含む。さらに、退出論理ブロックは、第１のパケットを第１のインターフェース通信プロトコルに適合するデータに変換するように構成された第１のデコーダと、第２のパケットを第２のインターフェース通信プロトコルに適合するデータに変換するように構成された第２のデコーダとを含む。
【０００４】
いくつかの実施形態では、進入論理ブロックは、ＮｏＣが動作可能であるとき、第１および第２のエンコーダのうちの１つをアクティブ化し、他のエンコーダを非アクティブ化するように構成され得、退出論理ブロックは、ＮｏＣが動作可能であるとき、第１のデコーダおよび第２のデコーダのうちの１つをアクティブ化し、他のデコーダを非アクティブ化するように構成され得る。
【０００５】
いくつかの実施形態では、第１のエンコーダが進入論理ブロック中でアクティブであるとき、第１のデコーダは退出論理ブロック中でアクティブであり得第２のデコーダは非アクティブであり得、第２のエンコーダが進入論理ブロック中でアクティブであるとき、第２のデコーダは退出論理ブロック中でアクティブであり得第１のデコーダは非アクティブであり得る。
【０００６】
いくつかの実施形態では、進入論理ブロック中の第１のエンコーダおよび第２のエンコーダ、ならびに退出論理ブロック中の第１のデコーダおよび第２のデコーダは、強化回路を含み得る。
【０００７】
いくつかの実施形態では、進入論理ブロックは、（ｉ）第１のハードウェア論理ブロックから進入論理ブロックにデータを転送するために使用されるインターフェースにおけるデータ幅と、（ｉｉ）インターフェースによってデータが送信される周波数とを調整するように構成され得る。
【０００８】
いくつかの実施形態では、第１のパケットおよび第２のパケットは、両方とも、複数の交換機によって第１のパケットおよび第２のパケットをルーティングするために使用されるＮｏＣパケットプロトコルに適合し得る。
【０００９】
いくつかの実施形態では、第１のインターフェース通信プロトコルは、メモリマップされた通信プロトコルであり得、第２のインターフェース通信プロトコルはストリーミングプロトコルであり得る。
【００１０】
いくつかの実施形態では、第１のハードウェア論理ブロックおよび第２のハードウェア論理ブロックは、ユーザによって再構成され得るプログラマブル論理ブロックであり得る。第１のエンコーダおよび第２のエンコーダ、ならびに第１のデコーダおよび第２のデコーダは、プログラマブル論理ブロックに関連するプログラマブル論理ファブリックから独立してアクティブ化および非アクティブ化され得る。
【００１１】
いくつかの実施形態では、ＳｏＣはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を含み得る。
【００１２】
いくつかの実施形態では、第１のハードウェア論理ブロックおよび第２のハードウェア論理ブロックは、非プログラマブルである強化論理ブロックであり得る。
【００１３】
本明細書で説明する１つの例は、ＮｏＣ中の進入論理ブロック中の第１のエンコーダがアクティブであり、ＮｏＣ中の退出論理ブロック中の第１のデコーダがアクティブである場合に、第１の通信プロトコルを使用してＳｏＣ中の第１の論理ブロックと第２の論理ブロックとの間の通信を与えるようにプログラマブルＮｏＣを構成することを含む方法である。第２の通信プロトコルを使用して第１の論理ブロックと第２の論理ブロックとの間の通信を与えるようにＮｏＣを再構成することを決定すると、本方法は、進入論理ブロック中の第２のエンコーダをアクティブ化し、第１のエンコーダを非アクティブ化すること、ならびに退出論理ブロック中の第２のデコーダをアクティブ化し、第１のデコーダを非アクティブ化することを含む。
【００１４】
いくつかの実施形態では、本方法は、進入論理ブロックにおいて第１の論理ブロックから第１のデータを受信することをさらに含み得る。第１のデータは第１のインターフェース通信プロトコルに適合し得る。本方法は、第１のエンコーダを使用して第１のデータを第１のパケットに変換することと、ＮｏＣ中の複数の交換機を使用して第１のパケットを退出論理ブロックにルーティングすることと、第１のデコーダを使用して第１のパケットを第１のインターフェース通信プロトコルに適合する第２のデータに変換することと、第２のデータを第２の論理ブロックに転送することとをさらに含み得る。
【００１５】
いくつかの実施形態では、本方法は、ＮｏＣを再構成した後に、進入論理ブロックにおいて第１の論理ブロックから第３のデータを受信することであって、第１のデータが第２のインターフェース通信プロトコルに適合し得る、第３のデータを受信することと、第２のエンコーダを使用して第３のデータを第２のパケットに変換することと、複数の交換機を使用して第２のパケットを退出論理ブロックにルーティングすることと、第２のデコーダを使用して第２のパケットを第２のインターフェース通信プロトコルに適合する第４のデータに変換することと、第４のデータを第２の論理ブロックに転送することとをさらに含み得る。
【００１６】
いくつかの実施形態では、本方法は、第２のインターフェース通信プロトコルを使用してＳｏＣ中の第３の論理ブロックと第４の論理ブロックとの間の通信を与えるようにＮｏＣを構成することと、第１のインターフェース通信プロトコルを使用して第１の論理ブロックと第２の論理ブロックとの間でデータを送信することと並行して、第２のインターフェース通信プロトコルを使用して第３の論理ブロックと第４の論理ブロックとの間でデータを送信することとをさらに含み得る。本方法はまた、第１のインターフェース通信プロトコルを使用して第３の論理ブロックと第４の論理ブロックとの間の通信を与えるようにＮｏＣを再構成することと、第２のインターフェース通信プロトコルを使用して第１の論理ブロックと第２の論理ブロックとの間でデータを送信することと並行して、第１のインターフェース通信プロトコルを使用して第３の論理ブロックと第４の論理ブロックとの間でデータを送信することとを含み得る。第３の論理ブロックおよび第４の論理ブロック、ならびに第１の論理ブロックおよび第２の論理ブロックは、ＮｏＣ中の少なくとも１つの交換機を共有する、ＮｏＣを通るそれぞれの通信経路を有し得る。
【００１７】
いくつかの実施形態では、本方法は、第１の論理ブロックから進入論理ブロックにデータを転送するために使用されるインターフェースのデータ幅を調整することと、インターフェースによってデータが送信される周波数を調整することとをさらに含み得る。
【００１８】
いくつかの実施形態では、第１のパケットおよび第２のパケットは、両方とも、複数の交換機を通して第１のパケットおよび第２のパケットをルーティングするために使用されるＮｏＣパケットプロトコルに適合し得る。
【００１９】
いくつかの実施形態では、第１のインターフェース通信プロトコルは、メモリマップされた通信プロトコルであり得、第２のインターフェース通信プロトコルはストリーミングプロトコルであり得る。
【００２０】
いくつかの実施形態では、本方法は、第１の論理ブロックおよび第２の論理ブロック中のプログラマブル論理を再プログラムすることをさらに含み得る。第１の論理ブロックおよび第２の論理ブロックならびにＮｏＣはＦＰＧＡ内に含まれ得る。
【００２１】
本明細書で説明する１つの例は、第１のハードウェア論理ブロックと、第２のハードウェア論理ブロックと、ＮｏＣとを含む集積回路である。ＮｏＣは、第１のハードウェア論理ブロックに接続された進入論理ブロックを含む。その上、進入論理ブロックは第１のエンコーダと第２のエンコーダとを含み、ＮｏＣが動作可能であるとき、進入論理ブロックは、第１のエンコーダおよび第２のエンコーダのうちの１つをアクティブ化し、他のエンコーダを非アクティブ化するように構成される。ＮｏＣはまた、第２のハードウェア論理ブロックに接続された退出論理ブロックを含む。退出論理ブロックは第１のデコーダと第２のデコーダとを含み、ＮｏＣが動作可能であるとき、退出論理ブロックは、第１のデコーダおよび第２のデコーダのうちの１つをアクティブ化し、他のデコーダを非アクティブ化するように構成される。
【００２２】
いくつかの実施形態では、第１のエンコーダは、第１のインターフェース通信プロトコルに適合する受信されたデータを第１のパケットに変換するように構成され得、第２のエンコーダは、第２のインターフェース通信プロトコルに適合する受信されたデータを第２のパケットに変換するように構成され得る。第１のデコーダは、第１のパケットを第１のインターフェース通信プロトコルに適合するデータに変換するように構成され得、第２のデコーダは、第２のパケットを第２のインターフェース通信プロトコルに適合するデータに変換するように構成され得る。
【００２３】
上記の特徴が詳細に理解され得るように、上記で手短に要約された、より詳細な説明は、例示的な実装形態を参照することによって得られ得、例示的な実装形態のうちのいくつかは添付の図面に示されている。しかしながら、添付の図面は、一般的な例示的な実装形態のみを示しており、したがってそれの範囲を限定するものと考えられるべきでないことに留意されたい。
【図面の簡単な説明】
【００２４】
【図１】一例による、プログラマブルＮｏＣを含んでいるＳｏＣのブロック図である。
【図２】一例による、プログラマブルＮｏＣを再構成するためのフローチャートである。
【図３】一例による、プログラマブルＮｏＣを再構成するためのフローチャートである。
【図４】一例による、プログラマブルＮｏＣを含んでいるＳｏＣのブロック図である。
【図５】一例による、プログラマブルＮｏＣを含んでいるＳｏＣの例示的なレイアウトである。
【図６】一例による、プログラマブルＮｏＣを動作させるためのフローチャートである。
【発明を実施するための形態】
【００２５】
理解を促すために、可能な場合、図に共通である同一の要素を指定するために同一の参照番号が使用される。一例の要素は他の例に有益に組み込まれ得ることが企図される。
【００２６】
以下で、図を参照しながら様々な特徴について説明する。図は、一定の縮尺で描かれていることもあり、描かれていないこともあること、および同様の構造または機能の要素は図全体にわたって同様の参照番号によって表されることに留意されたい。図は特徴の説明を促すものにすぎないことに留意されたい。図は、説明の網羅的な記述として、または特許請求の範囲の限定として意図されていない。さらに、示されている例は、示されているすべての態様または利点を有する必要はない。特定の例に関して説明される態様または利点は、必ずしもその例に限定されるとは限らず、そのように示されていない場合でも、またはそのように明示的に説明されていない場合でも、任意の他の例において実施され得る。
【００２７】
本明細書の実施形態は、異なる通信プロトコルをサポートするようにブート時間または動作中のいずれかにおいて再構成され得るプログラマブルＮｏＣを含むＳｏＣについて説明する。一実施形態では、ＮｏＣは、ＳｏＣ（たとえば、プロセッサ、メモリ、プログラマブル論理ブロックなど）中のハードウェア要素がＮｏＣを使用してデータを送信および受信することを可能にする（本明細書で進入論理ブロックおよび退出論理ブロックと呼ぶ）インターフェース要素を含む。ＳｏＣが最初に電源投入されたとき、進入論理ブロックおよび退出論理ブロックは、ＳｏＣ中のハードウェア要素とインターフェースするための特定の通信プロトコルをサポートするように構成され得る。しかしながら、後で、ユーザは、異なる通信プロトコルをサポートするために進入論理ブロックおよび退出論理ブロックを再構成することを望み得る。たとえば、最初にＳｏＣをブートアップするとき、プログラマブル論理ブロックは、メモリマップされた通信プロトコルを使用してデータを送信および受信し得るが、後で、ストリーミング通信プロトコルを使用してデータを送信および受信するように再プログラムされる。応答して、ＳｏＣは、進入論理ブロックおよび退出論理ブロックが、プログラマブル論理ブロックによって使用されるストリーミング通信プロトコルをサポートするように、ＮｏＣを再構成し得る。このようにして、プログラマブルＮｏＣは、（ＳｏＣをリブートすることによって、またはオンザフライで）複数の通信プロトコルをサポートするように再構成され得る。
【００２８】
一実施形態では、プログラマブルＮｏＣを形成するためにプログラマブル論理を使用するのではなく、ＮｏＣを形成する構成要素の一部または全部が強化される、すなわち、非プログラマブル回路から形成される。たとえば、進入論理ブロックおよび退出論理ブロックは、複数の通信プロトコルをサポートすることができる非プログラマブル回路から形成され得る。一実施形態では、進入論理ブロックは、複数の通信プロトコルをサポートするための複数のエンコーダを含むことができる。たとえば、各進入論理ブロックは、メモリマップされた通信プロトコルをサポートするための第１のエンコーダと、ストリーミング通信プロトコルをサポートするための第２のエンコーダとを含むことができる。同様に、各退出論理ブロックは、メモリマップされた通信プロトコルをサポートするための第１のデコーダと、ストリーミング通信プロトコルをサポートするための第２のデコーダとを含むことができる。ＮｏＣはまた、進入論理ブロックと退出論理ブロックとの間でパケットを転送するためにＮｏＣパケットプロトコル（ＮＰＰ）を使用する（同じく強化回路から形成され得る）マルチプロトコルパケット転送ネットワークを含むことができる。進入論理ブロックおよび退出論理ブロックが第１の通信プロトコルまたは第２の通信プロトコルを使用するかどうかにかかわらず、転送ネットワークは、ＮｏＣによってパケットをＳｏＣ中の適切な宛先にルーティングすることができる。したがって、本明細書の実施形態は、プログラマブル論理を使用して実装されたＮｏＣを使用することのフレキシビリティを与えるが、ＮｏＣの一部または全部を形成する強化回路を使用することに起因する面積削減を伴う。
【００２９】
図１は、一例による、プログラマブルＮｏＣ１０５を含んでいるＳｏＣ１００のブロック図である。ＮｏＣ１０５に加えて、ＳｏＣ１００はまた、データを送信および受信するためにＮｏＣ１０５を使用する論理ブロック１１０Ａおよび１１０Ｂを含む。別の言い方をすると、論理ブロック１１０は、通信するためにＮｏＣ１０５に依拠する。論理ブロック１１０は、プログラマブル論理ブロック、プロセッサ、デジタル信号処理ブロック、メモリなど、ＳｏＣ１００中の任意のハードウェア要素であり得る。
【００３０】
論理ブロック１１０間の通信を可能にするために、プログラマブルＮｏＣ１０５は、論理ブロック１１０に結合された、（ＮｏＣマスタユニット（ＮＭＵ）とも呼ばれる）進入論理ブロック１１５と、（ＮｏＣスレーブユニットまたはＮｏＣサーバントユニット（ＮＳＵ）とも呼ばれる）退出論理ブロック１４０とを含む。進入論理ブロック１１５および退出論理ブロック１４０はＮｏＣ１０５と論理ブロック１１０との間のインターフェースとして働く（本明細書では一般に「インターフェース要素」と呼ぶ）。進入論理ブロック１１５は、論理ブロック１１０からデータを受信し、データをパケット化し、次いでパケットをマルチプロトコル転送ネットワーク１３０に転送する。交換機１３５を使用して、マルチプロトコル転送ネットワーク１３０は、進入論理ブロック１１５から受信したパケットを１つまたは複数の宛先退出論理ブロック１４０にルーティングする。退出論理ブロック１４０は、受信されたパケットをパケット化解除し、復号されたデータを論理ブロック１１０に転送する。
【００３１】
進入論理ブロック１１５の各々は、第１の通信プロトコル１２０のためのエンコーダと、第２の通信プロトコル１２５のためのエンコーダとを含む。一実施形態では、第１の通信プロトコルおよび第２の通信プロトコルは、論理ブロック１１０から進入論理ブロック１１５にデータを送信するために使用される。たとえば、第１のプロトコルはメモリマップされたプロトコルであり得、第２のプロトコルはストリーミングプロトコルである。一実施形態では、第１のプロトコルはアドバンストｅＸｔｅｎｓｉｂｌｅインターフェース４（ＡＸＩ４）であり、第２のプロトコルはＡＸＩ４ストリーミングである。しかしながら、本明細書の実施形態は、特定のプロトコルに限定されず、本明細書で詳細に述べられていないプロトコルを使用して、論理ブロック１１０とＮｏＣ１０５との間の通信を促すために使用され得る。その上、図１は、進入論理ブロック１１５が２つのエンコーダを含むことを示すが、ＮｏＣ１０５は、３つ、４つ、５つなど、異なる通信プロトコルをサポートし得、その場合、進入論理ブロック１１５は各通信プロトコルのためのそれぞれのエンコーダを含むことができる。
【００３２】
一実施形態では、エンコーダ１２０および１２５は異なる回路を含む。たとえば、ＡＸＩ４およびＡＸＩ４ストリーミング通信プロトコルは、異なるようにデータをフォーマットし、データを送信するための異なる技法を使用する。したがって、エンコーダ１２０および１２５は、それぞれのプロトコルから受信されるデータを符号化し、パケット化するための回路を含む。一実施形態では、エンコーダ１２０および１２５は、異なる機能をもつ別個のエンコーダである。しかしながら、いくつかの実施形態では、エンコーダ１２０および１２５は、共有される機能を有し得、したがって、同じ回路を共有し得る。たとえば、異なるプロトコルが、データをパケット化するときに同じである１つまたは複数の動作を有する場合、エンコーダ１２０および１２５は、各エンコーダ１２０および１２５が重複する回路を有するのではなく、それらの共通の動作を実行するために使用される回路を共有することができる。
【００３３】
一実施形態では、各進入論理ブロック１１５はエンコーダ１２０および１２５のうちの１つのみをアクティブ化する。たとえば、ＳｏＣ１００をブートするとき、制御信号に基づいて、進入論理ブロック１１５は、論理ブロック１１０がＮｏＣ１０５にデータを送信するために使用する通信プロトコルのタイプに応答して、エンコーダのうちの１つをアクティブ化し、他のエンコーダを非アクティブ化する。すなわち、論理ブロック１１０Ａがメモリマップされたプロトコルを使用する場合、進入論理ブロック１１５は、（エンコーダ１２０が、メモリマップされたプロトコルを使用して受信されたデータを符号化し、パケット化するように構成されていると仮定して）エンコーダ１２０をアクティブ化し得、ストリーミングデータを符号化し、パケット化し得るエンコーダ１２５を非アクティブ化し得る。
【００３４】
ＮｏＣ１０５中の進入論理ブロック１１５のすべては同じタイプのエンコーダ（たとえば、第１のプロトコル１２０のためのエンコーダ）をアクティブにさせることができるが、他の例では、異なる進入論理ブロック１１５は異なるエンコーダをアクティブにさせることができる。たとえば、論理ブロック１１０Ａが論理ブロック１１０Ｂにデータを送信する場合、両方の論理ブロック１１０は同じ通信プロトコル、たとえば、メモリマップされた通信プロトコルを使用し得る。しかしながら、ＳｏＣ中の２つの異なる論理ブロックはストリーミング通信プロトコルを使用し得る。その場合、それらの論理ブロックに結合された進入論理ブロックは、図１に示された論理ブロック１１０に結合された進入論理ブロック１１５とは異なるエンコーダをアクティブにさせる。したがって、ＮｏＣ１０５は、異なる通信プロトコルを並行して使用して受信されたデータの転送を促すことができる。すなわち、１つの論理ブロック１１０は、メモリマップされたプロトコルを使用してＮｏＣ１０５にデータを送信することができ、同時に、別の論理ブロックは、ストリーミングプロトコルを使用してＮｏＣ１０５にデータを送信する。
【００３５】
マルチプロトコル転送ネットワーク１３０は、ＮｏＣ１０５が、異なる通信プロトコルを使用して論理ブロックから受信されたデータをルーティングすることを可能にする。一実施形態では、受信したデータをパケット化するとき、進入論理ブロック１１５は、データをＮｏＣパケットプロトコル（ＮＰＰ）によって定義されたパケットに変換する。したがって、データを進入論理ブロック１１５に送るためにどの通信プロトコルが使用されたかにかかわらず、進入論理ブロック１１５はデータをＮＰＰに変換し、したがって、データは、転送ネットワーク１３０中の交換機１３５を使用して転送され得る。別の言い方をすると、進入スイッチ中のエンコーダ１２０および１２５は、データを進入論理ブロック１１５に送信するために論理ブロック１１０によって使用される固有のフォーマットにかかわらず、データがＮｏＣ１０５を横切ることができるように、受信されたデータを同じネットワークプロトコル、たとえば、ＮＰＰに変換する。
【００３６】
受信されると、退出論理ブロック１４０は、パケットをパケット化解除するかまたは復号し、復号されたデータを、ダウンストリーム論理ブロック１１０に適合する通信プロトコルを使用して転送する。進入論理ブロック１１５のように、退出論理ブロック１４０の各々は、第１のプロトコル１４５のためのデコーダと、第２のプロトコル１５０のための別個のデコーダとを含む。デコーダ１４５および１５０は、復号動作のうちの１つまたは複数が第１の通信プロトコルと第２の通信プロトコルの両方によって共有される場合、別個の回路を含むことができるか、またはいくつかの回路を共有することができる。その上、２つのデコーダが示されているが、各退出論理ブロック１４０は、プログラマブルＮｏＣ１０５によってサポートされる通信プロトコルの数に応じて、３つ、４つ、またはより多くの数の異なるデコーダを含むことができる。
【００３７】
一実施形態では、退出論理ブロック１４０は、退出論理ブロック１４０に結合されたダウンストリーム論理ブロック１１０によって使用される通信プロトコルに応じて、デコーダのうちの１つをアクティブ化し、他のデコーダを非アクティブ化する。たとえば、図１中の進入論理ブロック１１５および退出論理ブロック１４０は、論理ブロック１１０Ａおよび１１０Ｂによって使用される通信プロトコルに対応するエンコーダ／デコーダをアクティブにさせ得る。すなわち、論理ブロック１１０Ａが、ＮｏＣ１０５を使用して論理ブロック１１０Ｂにデータを送信すると仮定すると、進入論理ブロック１１５および退出論理ブロック１４０は、同じ通信プロトコルに対応するエンコーダおよびデコーダをアクティブ化する。
【００３８】
ＳｏＣ１００は、プログラマブルＮｏＣ１０５を構成するための構成レジスタ１６０と交換機１６５とを含むＮｏＣ構成ネットワーク（ＮＣＮ）１５５を含む。一実施形態では、ＮｏＣ１０５とＮＣＮ１５５の両方は、ＳｏＣ１００全体にわたって広がった複雑なパケットプロトコルネットワークである。一実施形態では、ＮＣＮ１５５は、ＮｏＣ１０５をプログラムするＮｏＣ１０５とは別個のスイッチングネットワークである。すなわち、ＮＣＮ１５５は、ＮｏＣ１０５がＳｏＣ１００中のエンドポイント、たとえば、論理ブロック１１０間の通信を与える様式を変更することができる。そうするために、ＮＣＮ１５５は、進入論理ブロック１１５および退出論理ブロック１４０ならびにここで説明されていないＮｏＣ１０５中の他の構成要素を構成するための構成情報を記憶する構成レジスタ１６０に結合することができる複数のポートをそれぞれ含む交換機１６５を含む。すなわち、ブート中に構成され得、ＳｏＣ１００の動作中に変更され得る、構成レジスタ１６０中に記憶されるデータは、エンコーダ１２０および１２５ならびにデコーダ１４５および１５０のどれをアクティブ化すべきか、どれを非アクティブ化すべきかを進入論理ブロック１１５および退出論理ブロック１４０に命令する。さらに、ＮＣＮ１５５を使用して進入論理ブロック１１５および退出論理ブロック１４０をプログラミングすることは、これらのブロック１１５および１４０がＳｏＣ中の任意のプログラマブル論理（ＰＬ）ファブリックをプログラミングすることから独立して（ＳｏＣがＰＬブロックと通信するためのそのようなファブリックを含むと仮定して）プログラムされ得ることを意味する。
【００３９】
図２は、一例による、プログラマブルＮｏＣを再構成するための方法２００のフローチャートである。ブロック２０５において、ＮＣＮは、第１の通信プロトコルを使用してＳｏＣ中の第１の論理ブロックと第２の論理ブロックとの間の通信を与えるようにプログラマブルＮｏＣを構成する。たとえば、図１に示されたＮＣＮ１５５は、論理ブロック１１０がＮｏＣ１０５にデータを送信し、ＮｏＣ１０５からデータを受信するために第１の通信プロトコル（たとえば、メモリマップされた通信プロトコルまたはストリーミング通信プロトコル）を使用するとき、論理ブロック１１０間の通信を可能にするようにＮｏＣ１０５を構成することができる。
【００４０】
しばらくした後、ユーザ（または論理ブロック自体）は、ＮｏＣにデータを転送し、ＮｏＣからデータを転送するために異なる通信プロトコルに切り換えることを希望し得る。たとえば、論理ブロックは、異なる通信プロトコルを使用するように再構成されるプログラマブル論理ブロックであり得る。別の例では、論理ブロックは、２つの異なる通信プロトコル間を切り換えることができるメモリ要素またはプロセッササブシステムであり得る。たとえば、ＮｏＣにデータを送信するためにＡＸＩ４を使用する代わりに、第１の論理ブロックおよび第２の論理ブロックは、次に、ＮｏＣと通信するためにＡＸＩ４ストリーミングを使用することを希望する。
【００４１】
ブロック２１０において、ＮＣＮは、第２の通信プロトコルを使用してＳｏＣ中の第１の論理ブロックと第２の論理ブロックとの間の通信を与えるようにプログラマブルＮｏＣを再構成する。たとえば、ＮＣＮは、第２の通信プロトコルを使用してＮｏＣがデータを受信および送信することを可能にするプログラマブルＮｏＣに関連する構成レジスタを更新するために、交換機を使用し得る。このようにして、プログラマブルＮｏＣは、強化インターフェース要素を含むことができ、依然として異なる通信プロトコル間を切り換えるフレキシビリティを有することができる。
【００４２】
一実施形態では、ＮＣＮは、ＳｏＣをリブートした後にプログラマブルＮｏＣを再構成する。すなわち、リブートするとき、ＮＣＮは、第２の通信プロトコルをサポートするようにＮｏＣをプログラムする構成レジスタを更新することができる。しかしながら、別の実施形態では、ＮＣＮは、ＳｏＣをリブートすることなしにプログラマブルＮｏＣを再構成することができる。この例では、再構成が行われるときに、ＮｏＣのいくつかの部分が利用不可能であり得るが、ＳｏＣは動作可能のままであり得る。たとえば、再構成プロセス中にアクティブ化／非アクティブ化されるエンコーダおよびデコーダを有する進入論理ブロックおよび退出論理ブロックを含んでいるＮｏＣの部分は、プロセスが完了するまで、ネットワークトラフィックを送信するために利用不可能であり得る。このようにして、ＮＣＮは、ＳｏＣをリブートした後に、またはオンザフライで、すなわち、ＳｏＣが動作可能な状態のままである間にＮｏＣを再構成することができる。
【００４３】
図３は、一例による、プログラマブルＮｏＣを再構成するための方法３００のフローチャートである。一実施形態では、方法３００は、プログラマブルＮｏＣが、異なる通信プロトコルを使用してデータを送信および受信するように再構成される、方法２００のブロック２１０をより詳細に記述する。
【００４４】
方法３００は、ＮＣＮがプログラマブルＮｏＣを再構成するための命令を受信するブロック３０５において開始する。この命令は、論理ブロックがＮｏＣとどのように通信するかを変更することを希望するユーザによって送られ得るか、またはＮｏＣと通信するための異なる通信プロトコルに切り換えることを決定した後に、論理ブロック自体によって送られ得る。
【００４５】
ブロック３１０において、ＮＣＮは、命令に対応するＮｏＣ中の進入論理ブロックおよび退出論理ブロックを識別する。すなわち、命令は、ＮｏＣ中のすべてのこれらのブロックではなく、進入論理ブロックおよび退出論理ブロックの部分のみに影響を及ぼし得る。たとえば、ＳｏＣ中のハードウェア論理ブロックの２つのみが、それらがＮｏＣとどのように通信するかを変更していることがあり、ＳｏＣ中の残りのハードウェア論理ブロックは、通信するために同じ通信プロトコル（または複数のプロトコル）を使用している。したがって、ＮＣＮは、それらの通信プロトコルを変更している論理ブロックに接続された進入論理ブロックおよび退出論理ブロックのみを変更更新し、残りの進入論理ブロックおよび退出論理ブロックは方法３００中不変である。たとえば、ＳｏＣ中の２つのプログラマブル論理ブロックは第２の通信プロトコルに切り換え得、ＮｏＣに結合されたプロセッササブシステム、メモリ、および他のプログラマブル論理ブロックは、通信するために同じ（すなわち、前の）通信プロトコルまたは複数のプロトコルを使用する。したがって、ＮＣＮは、２つのプログラマブル論理ブロックに接続された進入論理ブロックおよび退出論理ブロックを再構成するが、他の進入論理ブロックおよび退出論理ブロックは不変のままにする。
【００４６】
別の実施形態では、ＮＣＮは進入論理ブロックおよび退出論理ブロックのグループを再構成することができる。たとえば、第１のグループは最初に第１のインターフェース通信プロトコルを使用し得、第２のグループは第２のインターフェース通信プロトコルを使用する。異なるインターフェース通信プロトコルを使用するにもかかわらず、第１および第２のグループはＮｏＣを通して並行してデータを送信することができる。その上、第１および第２のグループは、１つまたは複数の交換機を共有することができる、ＮｏＣを通るそれぞれのデータ経路を有することができる。すなわち、ＮｏＣは、２つのグループ中の進入論理ブロック／退出論理ブロック間でデータをルーティングするために同じ交換機（または異なる交換機）を使用することができる。後で、ＮＣＮは、進入論理ブロックおよび退出論理ブロックの第１のグループを第２の通信プロトコルを使用するように再構成し、同時に第２のグループを第１の通信プロトコルを使用するように再構成することができる。再構成された後、第１および第２のグループは、この場合も、ＮｏＣ中でデータを同時に送信し、共通の交換機を有し得る通信経路を使用することができる。
【００４７】
ブロック３１５において、ＮＣＮは、識別された進入論理ブロック中で、第１のエンコーダを非アクティブ化し、第２のエンコーダをアクティブ化する。すなわち、ＮＣＮは、進入論理ブロックによって使用されるエンコーダを、新しい通信プロトコルに適合するエンコーダに切り換える。そうするために、一実施形態では、ＮＣＮは、適切なエンコーダをアクティブ化するように論理ブロックに命令する進入論理ブロックに対応する構成レジスタを更新する。
【００４８】
ブロック３２０において、ＮＣＮは、識別された退出論理ブロック中で、第１のデコーダを非アクティブ化し、第２のデコーダをアクティブ化する。別の言い方をすると、ＮＣＮは、新しい通信プロトコルに適合するデコーダをアクティブ化する。一実施形態では、ＮＣＮは、適切なデコーダをアクティブ化するように論理ブロックに命令する退出論理ブロックに対応する構成レジスタを更新する。
【００４９】
ブロック３２５において、ＮＣＮは、識別された進入論理ブロックおよび退出論理ブロックと、進入論理ブロックおよび退出論理ブロックに接続された対応する論理ブロックとの間のインターフェースのためのデータ幅を設定する。すなわち、論理ブロックと通信するためにＮｏＣによって使用される通信プロトコルを変更することに加えて、ＮＣＮはまた、ＮｏＣと論理ブロックとの間で転送されるデータの幅を変更することができる。たとえば、ユーザはインターフェース要素（すなわち、進入論理ブロックおよび退出論理ブロック）のためのデータ幅を３２〜５１２ビットから選択することができる。今度は、ＮＣＮは、設定されたデータ幅を使用してデータを受信または送信するように進入論理ブロックおよび退出論理ブロックに命令する。
【００５０】
さらに、一実施形態では、ＮＣＮは、論理ブロックからデータを受信するか、または論理ブロックにデータを送信するときに、進入論理ブロックおよび退出論理ブロックによって使用される周波数を調整または構成することができる。すなわち、ＮＣＮは、進入論理ブロックおよび退出論理ブロックが論理ブロックとともにデータを転送する速度を増加または低減することができる。このようにして、非プログラマブルＮｏＣとは異なり、プログラマブルＮｏＣは、ＮＣＮならびに進入論理ブロックおよび退出論理ブロックを使用して、インターフェース通信プロトコル、データ幅、および周波数を変更することができる。進入論理ブロックおよび退出論理ブロックは、面積を節約するために非プログラマブル回路から形成され得る（すなわち、強化される）が、他の実施形態では、進入論理ブロックおよび退出論理ブロックは何らかのプログラマブル論理を含むことができる。すなわち、本明細書の実施形態は、進入論理ブロックおよび退出論理ブロックによって実行される１つまたは複数の動作を変更するための何らかのプログラマブル論理を進入論理ブロックおよび退出論理ブロック（またはＮｏＣ中の他の構成要素）中に含み得る。
【００５１】
図４は、一例による、プログラマブルＮｏＣ１０５を含んでいるＳｏＣ１００のブロック図である。図示のように、ＮｏＣ１０５は、ＰＬブロック４０５Ａと、ＰＬブロック４０５Ｂと、プロセッサ４１０と、メモリ４１５と相互接続する。すなわち、ＮｏＣ１０５は、ＳｏＣ１００中の異なる強化回路要素およびプログラマブル回路要素が通信することを可能にするためにＳｏＣ１００中で使用され得る。たとえば、ＰＬブロック４０５Ａは、ＰＬブロック４０５Ｂと通信するために１つの進入論理ブロック１１５を使用し得、プロセッサ４１０と通信するために別の進入論理ブロック１１５を使用し得る。しかしながら、別の実施形態では、ＰＬブロック４０５Ａは、（エンドポイントが同じ通信プロトコルを使用すると仮定して）ＰＬブロック４０５Ｂとプロセッサ４１０の両方と通信するために同じ進入論理ブロック１１５を使用し得る。ＰＬブロック４０５Ａは、（メモリマップされたプロトコルを使用する場合）アドレスまたは（ストリーミングプロトコルを使用する場合）宛先ＩＤに基づいてデータがＰＬブロック４０５Ｂとプロセッサ４１０の両方に宛てられているかどうかを決定することができるＰＬブロック４０５Ｂとプロセッサ４１０の両方のためのデータをそれぞれの退出論理ブロック１４０に送信することができる。
【００５２】
ＰＬブロック４０５Ａは、ＰＬブロック４０５Ｂとプロセッサ４１０とによって送信されるデータを受信するための退出論理ブロック１４０を含み得る。一実施形態では、ハードウェア論理ブロックは、同じくＮｏＣ１０５に接続されたすべての他のハードウェア論理ブロックと通信することが可能であるが、他の実施形態では、ハードウェア論理ブロックは、ＮｏＣ１０５に接続された他のハードウェア論理ブロックのサブ部分のみと通信し得る。たとえば、メモリ４１５は、ＰＬブロック４０５Ａと通信することが可能であるが、ＰＬブロック４０５Ｂと通信することは可能ではないことがある。
【００５３】
上記で説明したように、進入論理ブロックおよび退出論理ブロックはすべて、ＰＬブロック４０５、プロセッサ４１０、およびメモリ４１５と通信するために同じ通信プロトコルを使用し得るか、または異なる通信プロトコルを使用することができる。たとえば、ＰＬブロック４０５Ａは、ＰＬブロック４０５Ｂと通信するためにメモリマップされたプロトコルを使用し得、プロセッサ４１０は、メモリ４１５と通信するためにストリーミングプロトコルを使用する。転送ネットワーク１３０は、（進入論理ブロックが受信されたデータを同じＮＰＰに変換するので）複数のプロトコルをサポートすることができるので、ＮｏＣ１０５は異なるインターフェース通信プロトコルを並行して使用することをサポートする。別の言い方をすると、進入論理ブロック１１５は、異なるインターフェース通信プロトコルを使用して受信されたデータを同じプロトコル（たとえば、ＮＰＰ）に適合するパケットに変換し、パケットは、次いで、転送ネットワーク１３０中の交換機によって退出論理ブロック１４０にルーティングされる。今度は、退出論理ブロック１４０がパケットをＮＰＰから、接続された論理ブロックによって使用されるインターフェース通信プロトコルに適合するデータに変換する。
【００５４】
一実施形態では、ＳｏＣ１００は、ユーザ設計に従ってＰＬブロック４０５を構成するＦＰＧＡである。すなわち、この例では、ＦＰＧＡはプログラマブル論理ブロックと強化論理ブロックの両方を含む。しかしながら、他の実施形態では、ＳｏＣ１００は、強化論理ブロックのみを含むＡＳＩＣであり得る。すなわち、ＳｏＣ１００はＰＬブロック４０５を含まないことがある。論理ブロックが非プログラマブルであるとしても、ＮｏＣ１０５は、上記で説明したように、依然としてプログラマブルであり得、したがって、強化論理ブロック、たとえば、プロセッサ４１０およびメモリ４１５は、異なる通信プロトコル間で切り換えること、インターフェースにおいてデータ幅を変更すること、または周波数を調整することができる。
【００５５】
図５は、一例による、プログラマブルＮｏＣ１０５を含んでいるＳｏＣ１００の例示的なレイアウトを示す。図４におけるように、図５は、ＰＬブロック４０５、プロセッサ４１０、メモリ４１５、進入論理ブロック１１５および退出論理ブロック１４０を示す。さらに、図５は、進入論理ブロック１１５と退出論理ブロック１４０との間でパケットをルーティングするためにＮｏＣ中のマルチプロトコル転送ネットワークによって使用される接続および（「Ｘ」が付いたボックスとして標示された）様々な交換機１３５を示す。
【００５６】
ＳｏＣ１００の物理的レイアウトにおけるＰＬブロック４０５、プロセッサ４１０およびメモリ４１５のロケーションは、これらのハードウェア要素を構成する１つの例にすぎない。さらに、ＳｏＣ１００は、示されているよりも多くのハードウェア要素を含むことができる。例として、ＳｏＣ１００は、ＳｏＣ１００上の異なるロケーションに配設される追加のＰＬブロック、プロセッサおよびメモリを含み得る。さらに、ＳｏＣ１００は、それぞれの進入論理ブロック１１５および退出論理ブロック１４０を使用してＮｏＣに結合されることもあり結合されないこともあるＩ／Ｏモジュールおよびメモリコントローラなど、他のハードウェア要素を含むことができる。たとえば、Ｉ／ＯモジュールはＳｏＣ１００の周囲の周りに配設され得る。
【００５７】
一実施形態では、（図５に示されていない）ＮＣＮは、ＮｏＣに結合されたハードウェア論理ブロックに対応するレジスタをプログラムする。すなわち、ＮｏＣ中の構成要素（たとえば、進入論理ブロック１１５および退出論理ブロック１４０）を構成することに加えて、ＮＣＮは、これらの論理ブロックがＮｏＣと通信することを可能にする対応するレジスタを使用して、ＮｏＣに接続されたハードウェア論理ブロックを構成することができる。
【００５８】
図６は、一例による、プログラマブルＮｏＣを動作させるための方法６００のフローチャートである。ブロック６０５において、進入論理ブロックは、第１のプロトコルまたは第２のプロトコルのうちの１つを使用してデータを受信する。すなわち、ＮｏＣは、ＳｏＣ中の他のハードウェア論理ブロックとインターフェースするために使用され得る複数の異なる通信プロトコルをサポートする。たとえば、論理ブロックは、進入論理ブロックおよび退出論理ブロックにおいて、ＡＸＩ４またはＡＸＩ４ストリーミングを使用してＮｏＣにデータを送信し得、ＮｏＣからデータを受信し得る。別の言い方をすると、ＮｏＣは、ＮｏＣにデータを転送するための、およびＮｏＣからデータを受信するための複数のインターフェース通信プロトコルをサポートする。
【００５９】
ブロック６１０において、進入論理ブロックは、受信されたデータをＮＰＰのためのパケットに変換する。一実施形態では、進入論理ブロック中のアクティブなエンコーダは、受信されたデータをＮＰＰに適合するパケットにパケット化する。したがって、受信されたデータは、次いで、ＮｏＣによってルーティングされるパケットを形成するように修正される。
【００６０】
アクティブなエンコーダを有することに加えて、進入論理ブロックは、ＮｏＣによってサポートされるが、現在、接続された論理ブロックによって進入論理ブロックにデータを転送するために使用されていない別のインターフェース通信プロトコル（または複数のプロトコル）に対応する、非アクティブなエンコーダ（または複数の非アクティブなエンコーダ）を含むことができる。一実施形態では、ＮｏＣが動作可能であるとき、進入論理ブロック中のただ１つのエンコーダがアクティブである。
【００６１】
ブロック６１５において、進入論理ブロックは、パケット中の指定されたアドレスのための宛先ＩＤを識別する。パケットのための宛先ＩＤは、ＮｏＣ中の転送ネットワーク（たとえば、相互接続された交換機）を通してパケットがどのようにルーティングされるかを決定する。別の言い方をすると、ＮｏＣ中でパケットをルーティングするために使用される交換機は、宛先ＩＤに基づいて選択される。
【００６２】
ブロック６２０において、マルチプロトコル転送ネットワークは、パケットを宛先ＩＤに対応する退出論理ブロックにルーティングする。たとえば、図５に示された相互接続および交換機１３５を使用して、ＮｏＣは、進入論理ブロック１１５から受信されたパケットを所望の退出論理ブロック１４０にルーティングすることができる。
【００６３】
ブロック６２５において、退出論理ブロックは、パケットをＮＰＰから第１のプロトコルまたは第２のプロトコルのうちの１つに適合するデータに変換する。一実施形態では、退出論理ブロックは、受信されたパケットをパケット化解除するためにデコーダを使用し、データを第１または第２のプロトコルに適合するフォーマットに変換する。一実施形態では、退出論理ブロックは、データを、接続された論理ブロックからデータを受信するためにブロック６０５において進入論理ブロックによって使用されたプロトコルと同じプロトコルに変換する。
【００６４】
ブロック６３０において、退出論理ブロックは、変換されたデータを退出論理ブロックに結合された論理ブロックに転送する。このようにして、進入論理ブロックおよび退出論理ブロックは、ＮｏＣに接続された論理ブロック間の通信を促進することができる。方法６００は、進入論理ブロックおよび退出論理ブロックが第１のプロトコルをサポートするように構成されているか、第２のプロトコルをサポートするように構成されているかにかかわらず、使用され得る。すなわち、ＮＣＮは、送信する（またはデータ幅もしくは周波数を変更する）ために進入論理ブロックおよび退出論理ブロックを変更し得るが、方法６００は実質的に不変のままである。
【００６５】
上記は具体例を対象とするが、他のおよびさらなる例が、それの基本的な範囲から逸脱することなく考案され得、それの範囲は以下の特許請求の範囲によって決定される。
【図１】
2021515453.tif 000003
【図２】
2021515453.tif 000004
【図３】
2021515453.tif 000005
【図４】
2021515453.tif 000006
【図５】
2021515453.tif 000007
【図６】
2021515453.tif 000008
【国際調査報告】
2021515453.tif 000009
2021515453.tif 000010