(57)【要約】  集積回路（ＩＣ）内のＤＰＥアレイ（１０５）のための例示的なデータ処理エンジン（ＤＰＥ）（１１０）は、コア（２０２）と、データメモリ（２０８）およびプログラムメモリ（２０６）を含むメモリ（２０４）とを含み、プログラムメモリはコアに結合され、データメモリはコアに結合されるとともに、ＤＰＥ外にある少なくとも１つの付加的コア（２０２）への少なくとも１つの接続（３１６）を含む。ＤＰＥ（１１０）はさらに、データメモリに結合されるハードウェア同期回路（２１８）およびダイレクトメモリアクセス（ＤＭＡ）回路（２２０）を含むサポート回路と、ＤＭＡ回路およびコアに結合されるストリーミング相互接続（２１０）と、コア、メモリ、およびサポート回路に結合されるメモリマップド相互接続（２１２）とを含む。
2021520542.tif 000002
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）内のＤＰＥアレイのためのデータ処理エンジン（ＤＰＥ）であって、
コアと、
データメモリおよびプログラムメモリを含むメモリとを含み、前記プログラムメモリは前記コアに結合され、前記データメモリは、前記コアに結合されるとともに、前記ＤＰＥ外にある少なくとも１つの付加的コアへの少なくとも１つの接続を含み、前記ＤＰＥはさらに、
前記データメモリに結合されたハードウェア同期回路およびダイレクトメモリアクセス（ＤＭＡ）回路を含むサポート回路と、
前記ＤＭＡ回路および前記コアに結合されたストリーミング相互接続と、
前記コア、前記メモリおよび前記サポート回路に結合されたメモリマップド相互接続とを含む、ＤＰＥ。
【請求項２】
前記サポート回路は、前記コアおよび前記メモリに結合されたデバッグ回路をさらに含む、請求項１に記載のＤＰＥ。
【請求項３】
前記データメモリは、１つ以上のランダムアクセスメモリ（ＲＡＭ）バンクと、前記１つ以上のＲＡＭバンクへのアクセスを調停するように構成されたアービトレーション論理とを含む、請求項１に記載のＤＰＥ。
【請求項４】
前記ハードウェア同期回路は、
前記コア、前記ＤＰＥアレイ内の別のＤＰＥ内のコア、および前記ＤＭＡ回路による前記１つ以上のＲＡＭバンクへのアクセスをロックし、
前記コアと、前記ＤＰＥアレイ内の少なくとも１つの他のＤＰＥ内の少なくとも１つの他のコアとの間に同期をもたらすように構成される、請求項３に記載のＤＰＥ。
【請求項５】
前記メモリマップド相互接続に結合された複数のレジスタをさらに含む、請求項１に記載のＤＰＥ。
【請求項６】
前記ストリーミング相互接続は、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有するストリームスイッチを含む、請求項１に記載のＤＰＥ。
【請求項７】
前記ストリームスイッチは、前記コアへの接続を含む、請求項６に記載のＤＰＥ。
【請求項８】
前記ストリーミング相互接続は複数のストリームスイッチを含み、前記複数のストリームスイッチの各々は、前記ＤＰＥアレイ内の異なるＤＰＥへの異なる方向への少なくとも１つの接続を有する、請求項１に記載のＤＰＥ。
【請求項９】
前記メモリマップド相互接続は、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有するメモリマップドスイッチを含む、請求項１に記載のＤＰＥ。
【請求項１０】
前記コアは、前記ＤＰＥアレイ内の別のＤＰＥに配置された別のコアへのカスケードインターフェイス、または、前記メモリマップド相互接続に結合された複数のレジスタを含む、請求項１に記載のＤＰＥ。
【請求項１１】
前記コアは、超長命令語（ＶＬＩＷ）プロセッサ、単一命令多重データ（ＳＩＭＤ）プロセッサ、またはＶＬＩＷ  ＳＩＭＤプロセッサを含む、請求項１に記載のＤＰＥ。
【請求項１２】
前記プログラムメモリは、前記コアに配置されるとともに、前記データメモリおよび前記サポート回路を有するメモリモジュールをさらに含み、前記メモリモジュールは、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥによって共有されるように構成された少なくとも１つのインターフェイスを含む、請求項１に記載のＤＰＥ。
【請求項１３】
前記ＤＭＡ回路は、前記ストリーミング相互接続に結合された出力および前記データメモリに結合された入力を有する第１のＤＭＡ回路と、前記ストリーミング相互接続に結合された入力および前記データメモリに結合された出力を有する第２のＤＭＡ回路とを含む、請求項１２に記載のＤＰＥ。
【請求項１４】
集積回路（ＩＣ）であって、
複数のデータ処理エンジン（ＤＰＥ）を有するＤＰＥアレイを含み、前記複数のＤＰＥの各々は、
コアと、
データメモリおよびプログラムメモリを含むメモリとを含み、前記プログラムメモリは前記コアに結合され、前記データメモリは、前記コアに結合されるとともに、前記ＤＰＥ外にある少なくとも１つの付加的コアへの少なくとも１つの接続を含み、前記複数のＤＰＥの各々はさらに、
前記データメモリに結合されたハードウェア同期回路およびダイレクトメモリアクセス（ＤＭＡ）回路を含むサポート回路と、
前記ＤＭＡ回路および前記コアに結合されたストリーミング相互接続と、
前記コア、前記メモリおよび前記サポート回路に結合されたメモリマップド相互接続とを含む、ＩＣ。
【請求項１５】
前記プログラムメモリは、前記コアに配置されるとともに、前記データメモリおよび前記サポート回路を有するメモリモジュールをさらに含み、前記メモリモジュールは、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥによって共有されるように構成された少なくとも１つのインターフェイスを含む、請求項１４に記載のＩＣ。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示の例は、概して電子回路に関し、特に、集積回路（integrated circuit：ＩＣ）のためのデータ処理エンジンタイルアーキテクチャに関する。
【背景技術】
【０００２】
背景
プロセッサ、システム・オン・チップ（system on a chip：ＳｏＣ）、および特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）は、演算動作の実行、たとえば、デジタル信号の処理、暗号法の実行、ソフトウェアアプリケーションの実行、グラフィックスのレンダリングなどのための複数のコアを含み得る。いくつかの例では、コア同士は、演算動作を実行する際に互いに対してデータを送信し得る。典型的には、コア間でデータを転送するには、データをコア間インターフェイスに通過させる必要があり、これにより、待ち時間が追加されるとともにメモリ使用が非効率になってしまう。
【発明の概要】
【課題を解決するための手段】
【０００３】
概要
集積回路（ＩＣ）のためのデータ処理エンジンタイルアーキテクチャに関する技術について説明する。一例では、集積回路（ＩＣ）内のＤＰＥアレイのためのデータ処理エンジン（data processing engine：ＤＰＥ）は、コアと、データメモリおよびプログラムメモリを含むメモリとを含み、当該プログラムメモリは当該コアに結合され、当該データメモリは、当該コアに結合されるとともに、当該ＤＰＥ外にある少なくとも１つの付加的コアへの少なくとも１つの接続を含み、当該ＤＰＥはさらに、当該データメモリに結合されたハードウェア同期回路およびダイレクトメモリアクセス（direct memory access：ＤＭＡ）回路を含むサポート回路と、当該ＤＭＡ回路および当該コアに結合されたストリーミング相互接続と、当該コア、当該メモリおよび当該サポート回路に結合されたメモリマップド相互接続とを含む。
【０００４】
いくつかの実施形態では、当該サポート回路はさらに、当該コアおよび当該メモリに結合されたデバッグ回路を含み得る。
【０００５】
いくつかの実施形態では、当該データメモリは、１つ以上のランダムアクセスメモリ（random access memory：ＲＡＭ）バンクと、当該１つ以上のＲＡＭバンクへのアクセスを調停するように構成されたアービトレーション論理とを含み得る。
【０００６】
いくつかの実施形態では、当該ハードウェア同期回路は、当該コア、当該ＤＰＥアレイ内の別のＤＰＥ内のコア、および当該ＤＭＡ回路による当該１つ以上のＲＡＭバンクへのアクセスをロックするように構成され得る。
【０００７】
いくつかの実施形態では、当該ハードウェア同期回路は、当該コアと、当該ＤＰＥアレイ内の少なくとも１つの他のＤＰＥ内の少なくとも１つの他のコアとの間に同期をもたらすように構成され得る。
【０００８】
いくつかの実施形態では、当該ＤＰＥはさらに、当該メモリマップド相互接続に結合された複数のレジスタを含み得る。
【０００９】
いくつかの実施形態では、当該ストリーミング相互接続は、当該ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有するストリームスイッチを含み得る。
【００１０】
いくつかの実施形態では、当該ストリームスイッチは、当該コアへの接続を含み得る。
いくつかの実施形態では、当該ストリーミング相互接続は複数のストリームスイッチを含み得る。当該複数のストリームスイッチの各々は、当該ＤＰＥアレイ内の異なるＤＰＥへの異なる方向への少なくとも１つの接続を有する。
【００１１】
いくつかの実施形態では、当該メモリマップド相互接続は、当該ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有するメモリマップドスイッチを含み得る。
【００１２】
いくつかの実施形態では、当該コアは、当該ＤＰＥアレイ内の別のＤＰＥに配置された別のコアへのカスケードインターフェイスを含み得る。
【００１３】
いくつかの実施形態では、当該コアは、当該メモリマップド相互接続に結合された複数のレジスタを含み得る。
【００１４】
いくつかの実施形態では、当該コアは、超長命令語（very long instruction word：ＶＬＩＷ）プロセッサ、単一命令多重データ（single instruction, multiple data：ＳＩＭＤ）プロセッサ、またはＶＬＩＷ  ＳＩＭＤプロセッサを含み得る。
【００１５】
いくつかの実施形態では、当該プログラムメモリは、当該コアに配置され得るとともに、当該データメモリおよび当該サポート回路を有するメモリモジュールをさらに含み得る。
【００１６】
いくつかの実施形態では、当該メモリモジュールは、当該ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥによって共有されるように構成された少なくとも１つのインターフェイスを含み得る。
【００１７】
いくつかの実施形態では、当該ＤＭＡ回路は、当該ストリーミング相互接続に結合された出力および当該データメモリに結合された入力を有する第１のＤＭＡ回路と、当該ストリーミング相互接続に結合された入力および当該データメモリに結合された出力を有する第２のＤＭＡ回路とを含み得る。
【００１８】
一例では、集積回路（ＩＣ）は、複数のデータ処理エンジン（ＤＰＥ）を有するＤＰＥアレイを含み、当該複数のＤＰＥの各々は、コアと、データメモリおよびプログラムメモリを含むメモリとを含み、当該プログラムメモリは当該コアに結合され、当該データメモリは、当該コアに結合されるとともに、当該ＤＰＥ外にある少なくとも１つの付加的コアへの少なくとも１つの接続を含み、当該ＤＰＥはさらに、当該データメモリに結合されたハードウェア同期回路およびダイレクトメモリアクセス（ＤＭＡ）回路を含むサポート回路と、当該ＤＭＡ回路および当該コアに結合されたストリーミング相互接続と、当該コア、当該メモリおよび当該サポート回路に結合されたメモリマップド相互接続とを含む。
【００１９】
いくつかの実施形態では、当該プログラムメモリは、当該コアに配置され得るとともに、当該データメモリおよび当該サポート回路を有するメモリモジュールをさらに含み得る。
【００２０】
いくつかの実施形態では、当該メモリモジュールは、当該ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥによって共有されるように構成された少なくとも１つのインターフェイスを含み得る。
【００２１】
いくつかの実施形態では、当該コアは、超長命令語（ＶＬＩＷ）プロセッサ、単一命令多重データ（ＳＩＭＤ）プロセッサ、またはＶＬＩＷ  ＳＩＭＤプロセッサを含み得る。
【００２２】
これらの局面および他の局面は、以下の詳細な説明を参照することによって理解され得る。
【００２３】
図面の簡単な説明
上述の特徴が詳細に理解され得るような態様で、そのいくつかが添付の図面において示される例示的な実現例を参照することによって、上で簡潔に概説されたより詳細な記載が提供され得る。しかしながら、添付の図面は、典型的な実現例を示しているに過ぎず、その範囲を限定するものと考えられるべきではないことに留意されたい。
【図面の簡単な説明】
【００２４】
【図１】一例に従ったシステム・オン・チップ（ＳｏＣ）を示すブロック図である。
【図２】一例に従ったタイル回路を示すブロック図である。
【図３】一例に従った図２のタイル回路をより詳細に示すブロック図である。
【図４】一例に従ったタイル相互接続回路を示すブロック図である。
【図５】別の例に従った処理回路３５０を示すブロック図である。
【図６】一例に従ったデータ処理エンジンを示すブロック図である。
【図７】一例に従ったベクトルプロセッサ内のパイプラインを示すブロック図である。
【図８】一例に従ったベクトルレジスタファイルの構成例を示すテーブルである。
【図９】一例に従った、図７に示されるベクトルプロセッサのためのパイプラインの論理図を示すブロック図である。
【図１０】一例に従ったストール回路の動作を示すフロー図である。
【図１１】図１に示されるＳｏＣの実現例として使用可能な、一例に従ったプログラマブルＩＣを示すブロック図である。
【図１２】一例に従った、図５のプログラマブルＩＣのフィールドプログラマブルゲートアレイ（field programmable gate array：ＦＰＧＡ）実現例を示す図である。
【発明を実施するための形態】
【００２５】
理解を容易にするために、可能であれば、添付の図面に共通の同一の要素を指定するのに同一の参照番号を用いる。１つの例の複数要素が他の例において有用に援用され得るよう企図されている。
【００２６】
詳細な説明
図を参照して、さまざまな特徴を以下に記載する。これらの図は、縮尺通りに描かれている場合もあればそうでない場合もあり、同様の構造または機能の要素は、これらの図全体にわたって同様の参照番号によって表わされていることに留意されたい。これらの図は特徴の説明を容易にすることを意図しているだけであることに留意されたい。これらの図は、請求される発明の網羅的な説明として、または、請求される発明の範囲に対する限定として意図されたものではない。さらに、図示される例は、示される局面または利点をすべて有する必要はない。特定の例に関連付けて説明される局面または利点は、必ずしもその例に限定されるものではなく、たとえそのように例示または明示的に記載されていなくても、他の任意の例において実施され得る。
【００２７】
図１は、一例に従った、データ処理エンジン（ＤＰＥ）アレイ１０５を含むデバイス１００のブロック図である。例において、デバイス１００は、システム・オン・チップ（ＳｏＣ）タイプのデバイスである。一般に、ＳｏＣは、互いとインタラクティブな２つ以上のサブシステムを含むＩＣを指す。一例として、ＳｏＣは、プログラムコードを実行するプロセッサと、１つ以上の他の回路とを含み得る。他の回路は、ハードワイヤード回路、プログラマブル回路、他のサブシステム、および／または、それらの任意の組み合わせとして実現され得る。回路は、互いに協働して、および／またはプロセッサと協働して動作し得る。ＤＰＥアレイ１０５は、デバイス１００内にグリッド、クラスタまたはチェッカー盤のパターンで配置され得る複数のデータ処理エンジン（ＤＰＥ）１１０を含む。図１は、行および列を成す２ＤアレイでのＤＰＥ１１０の配置を示すが、例はこの配置に限定されない。さらに、アレイ１０５は、如何なるサイズにも設定することができ、ＤＰＥ１１０によって形成される任意の数の行および列を有することができる。
【００２８】
一実施形態では、複数のＤＰＥ１１０は互いに同一である。すなわち、ＤＰＥ１１０（タイルまたはブロックとも称される）の各々は、同じハードウェア構成要素または回路を有し得る。さらに、本明細書中に記載の例はＤＰＥ１１０に限定されない。むしろ、デバイス１００は、任意の種類の処理要素またはデータ処理エンジンのアレイを含み得る。さらに、ＤＰＥ１１０は、１つ以上の特化したタスクを実行するための暗号エンジンまたは他の特化したハードウェアであってもよい。このため、ＤＰＥ１１０は、一般にデータ処理エンジンと称され得る。
【００２９】
図１では、アレイ１０５は、全て同じタイプ（たとえば、同種のアレイ）であるＤＰＥ１１０を含む。しかしながら、別の実施形態では、アレイ１０５は、異なる種類のエンジンを含み得る。たとえば、アレイ１０５は、ＤＰＥ１１０、暗号エンジン、および順方向誤り訂正（forward error correction：ＦＥＣ）エンジンなどを含み得る。アレイ１０５が同種であるか異種であるかに関わらず、ＤＰＥ１１０は、隣接するＤＰＥ１１０内にメモリモジュールへの接続を含み得ることで、以下でより詳細に説明するように、ＤＰＥ１１０がメモリモジュールを共有することを可能にする。
【００３０】
一実施形態では、ＤＰＥ１１０は、プログラム不可能な論理から形成される、すなわち、ハードウェア化される。これによる１つの利点は、ＤＰＥ１１０内にハードウェア要素を形成するためにプログラマブル論理を用いる場合と比較べて、ＤＰＥ１１０がデバイス１００内で占める空間がより少なくなり得ることである。すなわち、プログラムメモリなどのＤＰＥ１１０内のハードウェア要素を形成するためにハードウェア化された論理回路またはプログラム不可能な論理回路を用いることで、命令フェッチ／デコードユニット、固定小数点ベクトルユニット、浮動小数点ベクトルユニット、演算論理ユニット（arithmetic logic unit：ＡＬＵ）、乗算加算器（multiply accumulator：ＭＡＣ）などにより、デバイス１００内のアレイ１０５のフットプリントを大幅に減少させることができる。ＤＰＥ１１０はハードウェア化され得るが、これは、ＤＰＥ１１０がプログラム不可能であることを意味するものではない。すなわち、ＤＰＥ１１０は、異なる機能またはタスクを実行するためにデバイス１００が電源投入されるかまたはリブートされる場合に構成することができる。
【００３１】
ＤＰＥアレイ１０５はまた、ＤＰＥ１１０とデバイス１００内の他のハードウェア構成要素との間の通信インターフェイスとして機能するＳｏＣインターフェイスブロック１１５を含む。この例では、デバイス１００は、ＳｏＣインターフェイスブロック１１５に通信可能に結合されるネットワーク・オン・チップ（network on chip：ＮｏＣ）１２０を含む。図示されないが、ＮｏＣ１２０は、デバイス１００全体にわたって延在して、デバイス１００内のさまざまな構成要素が互いと通信することを可能にし得る。たとえば、物理的な実現例では、ＤＰＥアレイ１０５は、デバイス１００を形成する集積回路の右上部分に配置され得る。しかしながら、それにも関わらず、ＮｏＣ１２０を用いると、アレイ１０５は、さまざまなサブシステム、たとえば、デバイス１００全体にわたって別々の位置に配置され得るプログラマブル論理（programmable logic：ＰＬ）１２０、プロセッササブシステム（processor subsystem：ＰＳ）１３０、または入出力（input/output：Ｉ／Ｏ）１３５と通信することができる。
【００３２】
ＤＰＥ１１０とＮｏＣ１２０との間にインターフェイスを設けることに加えて、ＳｏＣインターフェイスブロック１１５はまた、ＰＬ１２２内の通信ファブリックへの直接的な接続を提供し得る。一実施形態では、ＳｏＣインターフェイスブロック１１５は、ＤＰＥ１１０をＮｏＣ１２０と、デバイス１００内のアレイ１０５付近に配置されたＰＬ１２２とに通信可能に結合するための別個のハードウェア構成要素を含む。
【００３３】
図１はＰＬ１２２の１つのブロックを示しているが、デバイス１００は、デバイス１００内の別々の位置に配置することができるＰＬ１２２の複数のブロック（構成論理ブロックとも称される）を含み得る。たとえば、デバイス１００は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を形成するハードウェア要素を含み得る。しかしながら、他の実施形態では、デバイス１００はＰＬ１２２をいずれも含まない可能性もあり、たとえば、デバイス１００はＡＳＩＣである。
【００３４】
図２は、一例に従ったＤＰＥ１１０を示すブロック図である。ＤＰＥ１１０は、上述されるとともに図１に示されるようにＤＰＥアレイにおいてＤＰＥを実現するために用いられ得る。ＤＰＥ１１０は、コア２０２、メモリ２０４、ＤＰＥ相互接続２０９、およびサポート回路２１４を含む。ＤＰＥ相互接続２０９は、ストリーミング相互接続２１０およびメモリマップド（memory-mapped：ＭＭ）相互接続２１２を含む。一例では、サポート回路２１４は、デバッグ／トレース／プロファイル回路２１６、ハードウェア（hardware：ＨＷ）同期回路（「ＨＷロック２１８」）、およびダイレクトメモリアクセス（ＤＭＡ）回路（「ＤＭＡ２２０」）を含む。メモリ２０４は、プログラムメモリ（「ＰＭ（program memory）２０６」）およびデータメモリ（「ＤＭ（data memory）２０８」）を含む。
【００３５】
コア２０２は、ＰＭ２０６に格納された命令に従ってデータを処理するための１つ以上の演算ユニットを含む。一例では、コア２０２は、超長命令語（ＶＬＩＷ）プロセッサ、単一命令多重データ（ＳＩＭＤ）もしくはベクトルプロセッサ、またはＶＬＩＷ  ＳＩＭＤ／ベクトルプロセッサを含む。一例では、ＰＭ２０６はコア２０２専用である（たとえば、ＰＭ２０６は、ＤＰＥ２００内のコア２０２によってのみ用いられる命令を格納する）。一例では、ＰＭ２０６は、シングルポートランダムアクセスメモリ（ＲＡＭ）を備える。ＰＭ２０６は、命令の構成およびロードのためにＭＭ相互接続２１２に結合され得る。一例では、ＰＭ２０６は、パリティ、誤り訂正符号（error-correcting code：ＥＣＣ）保護および報告、またはパリティとＥＣＣとの両方をサポートする。たとえば、ＰＭ２０６は、９ビットＥＣＣをサポートし得るとともに、プログラム命令（たとえば、１２８ビット）内の１ビットエラーまたは２ビットエラーを訂正することができる。
【００３６】
コア２０２は、入力ストリームの受信および／または出力ストリームの供給のために、ストリーミング相互接続２１０に直接結合され得る。加えて、コア２０２は、ＤＰＥ２００内のＤＭ２０８に対するデータの読出しおよび書込みを実行することができる。以下においてさらに説明するように、ＤＰＥ２００内のコア２０２はまた、１つ以上の隣接するタイル回路（たとえば、北側、南側、東側、西側に隣接するタイル回路）内のＤＭにアクセスすることができる。一例では、以下でさらに説明するように、コア２０２はまた、アキュムレータ出力（たとえば、入力および出力カスケード接続）を転送するための１つ以上の隣接タイル内のデータ処理エンジンとの直接接続を含み得る。一例では、コア２０２は、ＤＰＥ２００内のＤＭ２０８と隣接タイル内の他のＤＭとをメモリの１つの連続ブロックとみなす。コア２０２はまた、ＨＷロック２１８へのインターフェイスと、デバッグ／トレース／プロファイル回路２１６へのインターフェイスとを含み得る。デバッグ／トレース／プロファイル回路２１６は、トレース、デバッグ、および／またはプロファイル回路を含み得る。
【００３７】
ＭＭ相互接続２１２は、構成要素間のアドレストランザクションを用いてデータを送信するように構成されたＡＸＩメモリマップド相互接続などであり得る。一例では、ＭＭ相互接続２１２は、ＤＰＥ２００のための構成、制御およびデバッグ機能のために用いられる。ＭＭ相互接続２１２は、アドレスに基づいてトランザクションをルーティングする１つ以上のスイッチを含む。回路は、ＭＭ相互接続２１２を用いて、ＤＰＥ２００内のメモリ２０４、コア２０２、ＤＭＡ２２０、および構成レジスタにアクセスすることができる。
【００３８】
ストリーミング相互接続２１０は、構成要素間でストリーミングデータを送信するように構成された高度拡張可能相互接続（Advanced Extensible interconnect：ＡＸＩ）ストリーミング相互接続などであり得る。ストリーミング相互接続２１０は、ＤＰＥ２００と外部回路との間でデータを転送するために用いられる。ストリーミング相互接続２１０は、データおよび制御の両方のための回路切替えメカニズムおよびパケット切替えメカニズムの両方をサポートすることができる。
【００３９】
一例では、以下においてさらに説明するように、ＤＭ２０８は、１つ以上のメモリバンク（たとえば、ランダムアクセスメモリ（ＲＡＭ）バンク）を含み得る。ＤＭＡ２２０は、ストリーミング相互接続２１０とＤＭ２０８との間に結合される。ＤＭＡ２２０は、データをストリーミング相互接続２１０からＤＭ２０８に移動させるとともにデータをＤＭ２０８からストリーミング相互接続２１０に移動させるように構成される。このような態様で、外部回路（たとえば、プログラマブル論理内に構成された回路またはＩＣの埋込み処理システム内の回路）は、ＤＭＡを用いてストリーミング相互接続２１０を介してＤＭ２０８に対するデータの読出しおよび書込みを行なうことができる。ＤＭＡ２２０は、ＭＭ相互接続２１２および／またはストリーミング相互接続２１０を介して制御され得る。一例では、ＤＭ２０８は、パリティ、誤り訂正符号（ＥＣＣ）保護および報告、またはパリティおよびＥＣＣの両方、をサポートする。たとえば、ＤＭ２０８は、９ビットＥＣＣ（たとえば、１２８ビットデータ）をサポートすることができる。
【００４０】
ＨＷロック２１８は、コア２０２、別のタイル内の別のデータ処理エンジン、またはＤＭＡ２２０によるアクセスのためにＤＭ２０８の特定のメモリバンクをロックするために用いられてもよい。ＨＷロック２１８は、隣接し合うタイル内の隣接し合うデータ処理エンジン間、コア２０２とＤＭＡ２２０との間、およびコア２０２と外部回路（たとえば、外部プロセッサ）との間に同期をもたらす。ＨＷロック２１８はまた、１つ以上のメモリバンクに格納され得るかまたは単一のメモリバンクの一部分に格納され得る、ＤＭ２０８内の特定のバッファをロックするために用いられ得る。デバッグ／トレース／プロファイル回路２１６は、デバッグ機能、トレース機能およびプロファイル機能を提供するように構成される。デバッグ／トレース／プロファイル回路２１６は、ＤＰＥ２００内の回路によって生成されるイベントをトレースすることができる。デバッグ／トレース／プロファイル回路２１６は、プロファイル機能、たとえば、構成可能な性能カウンタを提供することができる。
【００４１】
図３は、一例に従ったＤＰＥ２００をより詳細に示すブロック図である。この例では、ＤＰＥ２００は、コア２０２、メモリモジュール３５１およびＤＰＥ相互接続２０９を含む。コア２０２は、演算回路２０３およびＰＭ２０６を含む。メモリモジュール３５１は、メモリインターフェイス３０２Ｎ、３０２Ｓ、３０２Ｅおよび３０２Ｗ（総称してメモリインターフェイスまたは個々に「メモリＩＦ」）、ＲＡＭバンク３１８、ＨＷロック２１８、レジスタ（「レジスタ３０４」）、ＤＭＡインターフェイス２０４Ａ、およびＤＭＡインターフェイス２２０Ｂを含む。演算回路２０３はレジスタ（「レジスタ３０６」）を含む。ＤＰＥ相互接続２０９は、ＭＭ相互接続２１２およびストリーミング相互接続２１０（図２に示す）を含む。ＭＭ相互接続２１２およびストリーミング相互接続２１０はともに、ＲＡＭバンク３１８にアクセスすることができる。ＲＡＭバンク３１８は、バンクごとにアービトレーション論理３１９を含む。アービトレーション論理３１９は、どのインターフェイス（北側、南側、東側、西側、ＤＭＡ、外部ＰＳなど）がどのバンクにアクセスするかを制御するように構成される。ＤＰＥ相互接続２０９のさらなる詳細を図４の例に関連付けて以下に説明する。
【００４２】
ＤＰＥ相互接続２０９は、西側タイルへのストリーミング接続３１４Ｗと、東側タイルへのストリーミング接続３１４Ｅと、北側タイルへのストリーミング接続３１４Ｎと、南側タイルへのストリーミング接続３１４Ｓとを含む。各々のストリーミング接続３１４は、１つ以上の独立したストリーミングインターフェイス（たとえばバス）を含んでおり、これらストリーミングインターフェイスの各々は特定のビット幅を有する。ＤＰＥ相互接続２０９はまた、南側タイルからのメモリマップド接続３１２Ｓと、北側タイルへのメモリマップド接続３１２Ｎとを含む。北側および南側のＭＭ接続だけが図示されているが、ＤＰＥ相互接続２０９が、ＭＭ相互接続のための他の構成（たとえば、西側から東側、東側から西側、北側から南側など）を含み得ることが理解されるはずである。ＤＰＥ相互接続２０９が、図３の例に示される以外のストリーミング接続およびメモリマップド接続の他の配置を含み得ることが理解されるはずである。概して、ＤＰＥ相互接続２０９は、少なくとも１つのストリーミング接続３１４と、少なくとも１つのメモリマップド接続３１２とを含む。
【００４３】
演算回路２０３は、西側タイル内のメモリ回路への接続３０８Ｗと、南側タイル内のメモリ回路への接続３０８Ｓと、北側タイル内のメモリ回路への接続３０８Ｎと、メモリモジュール３５１への接続３０８Ｅとを含む。演算回路２０３は、ＤＰＥ相互接続２０９へのストリーミングインターフェイスを含む。演算回路２０３はまた、西側タイル内のコアからの接続３１０Ａと、東側タイル内のコアへの接続３１０Ｂ（たとえば、カスケード接続）とを含む。ＤＰＥが、図３の例に示される以外のメモリ接続およびカスケード接続の他の配置を含み得ることが理解されるはずである。概して、演算回路２０３は、少なくとも１つのメモリ接続を含むとともに、少なくとも１つのカスケード接続を含み得る。
【００４４】
メモリＩＦ３０２Ｗは、演算回路２０３のメモリ接続３０８Ｅに結合される。メモリＩＦ３０２Ｎは、北側タイル内のデータ処理エンジンのメモリ接続に結合される。メモリＩＦ３０２Ｅは、東側タイル内のデータ処理エンジンのメモリ接続に結合される。メモリＩＦ３０２Ｓは、南側タイル内のデータ処理エンジンのメモリ接続に結合される。メモリＩＦ３０２Ｗ、３０２Ｎ、３０２Ｅ、および３０２ＳはＲＡＭバンク３１８に結合される。ＤＭＡ２２０Ａは、相互接続ストリームへのメモリを処理するためにＤＰＥ相互接続２０９に結合された出力を含む。ＤＭＡ２２０Ｂは、メモリストリームへの相互接続を処理するためにＤＰＥ相互接続２０９に結合された入力を含む。レジスタ３０４およびレジスタ３０６は、ＤＰＥ相互接続２０９に結合されて、（たとえば、メモリマップド相互接続を用いて）そこから構成データを受信する。
【００４５】
図４は、一例に従ったＤＰＥ相互接続２０９を示すブロック図である。ＤＰＥ相互接続２０９は、ストリームスイッチ４０２およびＭＭスイッチ４０４を含む。ストリームスイッチ４０２は、西側ストリームインターフェイス４０６Ｗ、北側ストリームインターフェイス４０６Ｎ、東側ストリームインターフェイス４０６Ｅ、および南側ストリームインターフェイス４０６Ｓに結合される。西側ストリームインターフェイス４０６Ｗは、ストリームを受信して西側タイルのＤＰＥ相互接続に供給する。北側ストリームインターフェイス４０６Ｎは、ストリームを受信して北側タイルのＤＰＥ相互接続に供給する。西側ストリームインターフェイス４０６Ｗは、ストリームを受信して西側タイルのＤＰＥ相互接続に供給する。南側ストリームインターフェイス４０６Ｓは、ストリームを受信して南側タイルのＤＰＥ相互接続に供給する。ＭＭスイッチ４０４は、北側ＭＭインターフェイス４０８Ｎおよび南側ＭＭインターフェイス４０８Ｓに結合される。北側ＭＭインターフェイス４０８Ｎは、北側タイル内のＤＰＥ相互接続に結合される。南側ＭＭインターフェイス４０８Ｓは、南側タイル内のＤＰＥ相互接続に結合される。
【００４６】
ストリームスイッチ４０２は、先入れ先出し（first-in-first-out：ＦＩＦＯ）回路（ＦＩＦＯ４１２）およびレジスタ（レジスタ４１０）を含む。ＦＩＦＯ４１２は、ストリームスイッチ４０２を通過するストリームをバッファするように構成される。レジスタ４１０は、ストリームスイッチを通るストリームのルーティングを制御するストリームスイッチ４０２のための構成データを格納する。レジスタ４１０は、ＭＭスイッチ４０４から構成データを受信し得る。ストリームスイッチ４０２は、演算回路２０３への付加的インターフェイスと、ＤＭＡ回路２２０への付加的インターフェイスとを含み得る。ストリームスイッチ４０２は、制御ストリームを送受信するとともに、（たとえば、デバッグ／トレース／プロファイル回路２１６から）トレースストリームを受信することができる。
【００４７】
図５は、別の例に従ったコア２０２を示すブロック図である。図５において、上述したものと同一または同様の要素は同一の参照番号で示されている。この例では、コア２０２はストール回路５０２をさらに含む。図１０は、一例に従ったストール回路５０２の動作を示すフロー図である。
【００４８】
図５および図１０を参照すると、ストール回路５０２は、演算回路２０３に結合されるとともに、ストール信号を供給するように構成される。ストール回路５０２はまた、ストール信号をメモリモジュール３５１に供給する。ストール回路５０２は、ストール信号をアサートして演算回路２０３をストールさせる（たとえば、データを処理しないように演算回路２０３の動作を一時停止させる）ことができる。ストール信号がデアサートされると、演算回路２０３はストールされず、データを処理する。ストール回路５０２は、ＤＰＥ２００内の回路またはＤＰＥ２００外の回路からのさまざまな入力に従ってストール信号の状態を設定する。加えて、ストール回路５０２が演算回路２０３を停止させると、ストール回路５０２はＤＰＥ２００の他の構成要素を停止させることができる。たとえば、ストール回路５０２は、演算回路２０３にデータを提供するメモリモジュール３５１内の特定のブロックを停止させることができる。すなわち、演算回路２０３が停止されるので、データ損失を避けるためにメモリモジュール３５１から送信中の（in-flight）データがストールされ得る。別の例では、ストール回路５０２は、プログラムメモリ２０６のために同様の機能を実行することができる。すなわち、演算回路２０３が停止されるので、命令ロスを避けるためにプログラムメモリ２０６から送信中の命令がストールされ得る。
【００４９】
一例では、ストール回路５０２は、入力５０４、５０６、５０８、５１０、５１２、および５１４を含む。入力５０４はアービトレーション論理３１９に結合されるとともに、メモリ衝突を示す信号を受信するように構成される（ステップ１００２）。たとえば、別のデータ処理エンジンは、ＤＰＥ２００内の特定のＲＡＭバンク３１８にアクセスすることができるが、これは、演算回路２０３にはアクセス不可能であるだろう。アービトレーション論理３１９はストール回路５０２に信号を送信し、ストール回路５０２がストール信号をアサートして、演算回路２０３をストールさせるとともに、競合下のＲＡＭバンク３１８に演算回路２０３がアクセスするのを防止する。
【００５０】
入力５０６はＰＳ１３０に結合されるとともに、演算回路２０３をストールさせるのに用いられる制御信号を受信するように構成される（ステップ１００４）。たとえば、ＰＳ１３０上で実行されるソフトウェアは、演算回路２０３をストールさせ、要求に応じて演算回路２０３を再開させることができる。
【００５１】
入力５０８は、ストリームスイッチ４０２に結合されるとともに、ＦＩＦＯ４１２の空の状態または満杯の状態を示す信号を受信するように構成される（ステップ１００６）。たとえば、ＦＩＦＯ４１２が満杯である場合、ＦＩＦＯ４１２は、演算回路２０３から出力される追加のデータを格納することができない。したがって、演算回路２０３は、ＦＩＦＯ４１２のオーバーフローを防止するためにストールされる。ＦＩＦＯ４１２がもはや満杯でなくなる（たとえば、空の状態である）と、演算回路２０３を再開させることができる。
【００５２】
入力５１０はレジスタ５１４に結合されるとともに、ストールまたは再開を示す信号を受信するように構成される（ステップ１００８）。一例では、レジスタ５１４は、ＭＭ相互接続２１２を通じてプログラムすることができ、アレイの構成を通じてユーザが演算回路２０３のストールまたは再開をプログラムすることを可能にする。
【００５３】
入力５１２はデバッグ／トレース／プロファイル回路２１６に結合されるとともに、演算回路２０３のストールを必要とする１つ以上のイベントを示す信号を受信するように構成される（ステップ１０１０）。イベントアクションは、イネーブル、ディセーブル、シングルステップデバッグなどを含み得るとともに、特定のイベントが発生するたびにトリガされるように構成することができる。
【００５４】
入力５１４は、ＨＷロック２１８に結合されるとともに、ＲＡＭバンク４１８が別の回路（たとえば、別のデータ処理エンジン）によるアクセスのためにロックされたかどうかを示す信号を受信するように構成される（ステップ１０１２）。このような場合、演算回路２０３は、アクセスされている特定のＲＡＭバンク４１８がフリーになるまでストールされる。
【００５５】
ステップ１０１４において、ストール回路５０２は、ストール信号のアサートを引き起こしたすべての条件が解消されるのに応じて、ストール信号をデアサートする。すなわち、ストール信号をアサートする各条件が解消されると、ストール回路５０２は、ストール信号をデアサートしてＤＰＥのフル稼働を再開させる。
【００５６】
図６は、一例に従ったコア２０２を示すブロック図である。コア２０２は、レジスタファイル６０２、演算回路２０３、およびサポート回路６０６を含む。レジスタファイル６０２は、スカラーレジスタファイル６０８およびベクトルレジスタファイル６１０を含む。スカラーレジスタファイル６０８は、汎用レジスタ、ポインタレジスタ、修飾子レジスタ、構成レジスタなどを含む。ベクトルレジスタファイル６１０は、ベクトルデータ経路についてのＳＩＭＤ命令をサポートする（スカラーレジスタと比べて）高幅のレジスタを含む。ベクトルレジスタファイル６１０は、ベクトルレジスタ、アキュムレータレジスタなどを含み得る。レジスタファイル６０２は、プログラムカウンタ、スタックポインタ、リンクレジスタ、さまざまな構成、制御およびステータスレジスタなどの他のタイプのレジスタを含み得る。
【００５７】
演算回路２０３は、スカラープロセッサ６１２およびベクトルプロセッサ６１４を含む。スカラープロセッサ６１２は、符号付きおよび符号なしの乗算、加算／減算、シフト、比較、および論理演算、基本関数、たとえば平方根、正弦／余弦などを含むスカラー演算を実行するように構成される。ベクトルプロセッサ６１４は、置換関数、前置加算関数、乗算関数、後置加算関数、累算関数、シフト、ラウンド関数および飽和関数、アップシフト関数などを含むベクトル演算を実行するように構成される。ベクトルプロセッサ６１４は、複素オペランドおよび実数オペランドについての多倍精度をサポートする。ベクトルプロセッサ６１４は、固定小数点データ経路および浮動小数点データ経路の両方を含み得る。
【００５８】
サポート回路６０６は、メモリインターフェイス６１６と、アドレス発生器６１８と、命令フェッチおよびデコード回路６２０と、１つ以上の付加的インターフェイス６２２とを含む。命令フェッチおよびデコード回路６２０は、ＰＭ２０６から命令をフェッチし、フェッチされた命令をデコードし、デコードされた命令に従ってその動作を制御するための制御信号をプロセッサ６０４に供給するように構成される。アドレス発生器６１８は、データメモリについてのアドレスを生成して、データメモリからデータをロードするかまたはまたはデータメモリにデータを格納するように構成される。メモリインターフェイス６１６は、デコードされた命令およびアドレス発生器６１８によって生成されたアドレスに従って、データメモリとの間でデータを送信および受信するためにデータメモリと通信するように構成される。他のインターフェイス６２２は、ＨＷロック２１８へのインターフェイス、ストリーミング相互接続２１０へのインターフェイス、他のデータ処理エンジンからカスケードストリームを受信するためのインターフェイス、デバッグ／トレース／プロファイル回路２１６へのインターフェイスなどを含み得る。
【００５９】
図７は、一例に従ったベクトルプロセッサ６１４内のパイプライン７００を示すブロック図である。パイプライン７００は、固定小数点ベクトル処理を実行するように構成されるとともに、積和演算（multiply-accumulate：ＭＡＣ）経路７０１およびアップシフト経路７０３を含む。ＭＡＣ経路７０１は、ベクトルレジスタから値を読出し、それら値をユーザ制御可能な方法で置換し、任意の前置加算を実行し、いくつかの後置加算の後にそれらを乗算し、それらを累算レジスタの以前の値に累算する。アップシフト経路７０３は、ＭＡＣ経路７０１と並列に動作するとともに、ベクトルを読出し、それらをアップシフトし、その結果をアキュムレータに供給するように構成される。パイプライン７００は、以下でさらに説明するように、ＭＡＣ経路７０１およびアップシフト経路７０３内のさまざまな回路を制御するように構成された制御回路７５０をさらに含む。
【００６０】
図８は、一例に従ったベクトルレジスタファイル６１０の例示的な構成を示すテーブル８００である。テーブル８００に示されるように、コア２０２は、Ｒ、Ｃ、およびＤで示される３つの別個のベクトルレジスタファイルを含み、接頭辞を追加してそれらの幅を指定している。この例では、基礎となるハードウェアレジスタは各々、１２８ビット幅である。ハードウェアレジスタは、（ベクトルとしての）文字「Ｖ」が接頭辞として付されている。２つの「Ｖ」レジスタを一緒にグループ化して２５６ビットレジスタを形成することができ、これは、（広いベクトルとして）「Ｗ」が接頭辞として付されている。さらに、ＷＲレジスタ、ＶＣレジスタおよびＷＤレジスタは、５１２ビット幅レジスタ（ＸＡ、ＸＢ、ＸＣ、およびＸＤ）を形成するようにペアにしてグループ化され得る。最後に、レジスタＸＡおよびＸＢは一緒に１０２４ビット幅ＹＡレジスタを形成する一方で、レジスタＸＤおよびＸＢは部分的に重なり合う１０２４ビット幅ＹＤレジスタを形成する。ＹＤにおいて、ＸＤレジスタはＬＳＢ部分であり、ＸＢレジスタはＭＳＢ部分である。
【００６１】
ベクトルレジスタファイル６１０内のベクトルレジスタは異なるフォーマットでデータを格納することができる。たとえば、１２８ビットレジスタは、１６レーンの８ビット符号付きデータ（ｖ１６ｉｎｔ８）、１６ラインの８ビット符号なし実数データ（ｖ１６ｕｉｎｔ８）、８レーンの１６ビット符号付きデータ（ｖ８ｉｎｔ１６）、４レーンの１６ビット複素データ（ｖ４ｃｉｎｔ１６）、および２レーンの３２ビット複素データ（ｖ２ｃｉｎｔ３２）を表すために用いられ得る。
【００６２】
図８に示すテーブル８００は、ベクトルレジスタファイル６１０の実現可能な一構成を示す。たとえば、ベクトルレジスタファイル６１０は、１６未満または１６を超えるハードウェアレジスタを含み得る。当該ハードウェアレジスタは、任意のビット幅を有し得るとともに、図示されるものとは異なるビット幅を有するより大型のレジスタにグループ化され得る。さまざまなレジスタファイルを組合わせて、たとえば、より少数のより大型のレジスタを提供することができる。代替的には、さまざまなレジスタをより多数のより小型のレジスタに分割することができる。
【００６３】
図７に戻ると、パイプライン７００は、（ＸＡとＸＢとを連結して形成される）レジスタファイル７０２、レジスタファイル７０４（ＸＣ）、およびレジスタファイル７０６（ＸＤ）を含む。図８の例では、レジスタファイル７０２は８個の１２８ビットハードウェアレジスタを含み、レジスタファイル７０４は４個の１２８ビットハードウェアレジスタを含み、レジスタファイル７０６は４個の１２８ビットハードウェアレジスタを含む。他の例では、レジスタファイル７０２、７０４および７０６は、異なるビット幅を有する他の数のレジスタを含み得る。レジスタファイル７０２、７０４および７０６の構成は一例である。別の例では、レジスタファイル７０２、７０４および７０６は、単一のレジスタファイルに統合され得る。他の例では、パイプライン７００は、４個以上のレジスタファイルを含み得る。
【００６４】
パイプライン７００はさらに、置換回路７０８（ＰＭＸＬ）と、置換回路７１０（ＰＭＸＲ）と、置換回路７１２（ＰＭＣ）と、前置加算器７１４と、特殊演算回路７１６（ＹＭＸ）と、乗算器７２０（ＭＰＹ）と、後置加算器７２３と、アキュムレータ７３０（ＡＣＣ）と、累算レジスタファイル７３２（ＡＭ）とを有するＭＡＣ経路７０１を含む。一例では、後置加算器７２３は、２つの別個の段、すなわち、後置加算器７２２および後置加算器７２４を含む。パイプライン７００は、マルチプレクサ７１８（ＭＵＸ）と、アップシフト回路７２６（ＵＰＳ）と、アキュムレータマルチプレクサ７３４（ＡＣＭ）とを有するアップシフト経路７０３を含む。この例では３つの置換回路７０８、７１０および７１２が示されているが、他の例では、パイプライン７００は、置換回路７０８、７１０および７１２の機能を組み込んだ単一の置換回路を含み得る。
【００６５】
置換回路７０８の入力はレジスタファイル７０２の出力に結合され、置換回路７１０の入力はレジスタファイル７０２の出力に結合され、置換回路７１２の入力はレジスタファイル７０４の出力に結合される。前置加算器７１４の第１の入力は置換回路７０８の出力に結合され、前置加算器７１４の第２の入力は置換回路７１０の出力に結合される。特殊演算回路７１６の第１の入力は置換回路７１０の出力に結合され、特殊演算回路７１６の第２の入力は置換回路７１２の出力に結合される。前置加算器７１４および特殊演算回路７１６の出力は乗算器７２０の入力に結合される。乗算器７２０の出力は後置加算器７２２の入力に結合される。後置加算器７２２の出力は後置加算器７２４の入力に結合される。後置加算器７２４の出力はアキュムレータ７３０の入力に結合される。アキュムレータ７３０の出力はレジスタファイル７３２の入力に結合される。
【００６６】
一例では、レジスタファイル７０２は、１０２４ビットベクトル（たとえば、各々が５１２ビットであるＸＡ：：ＸＢの連結）を含む。置換回路７０８および７１０への入力（ｐｍｘＡ）は５１２ビットであり得る。同様に、置換回路７０８および７１０への別の入力（ｐｍｘＢ）は５１２ビットであり得る。このため、置換回路７０８および７１０は各々、レジスタファイル７０２（たとえば、１０２４ビット）からｐｍｘＡ：：ｐｍｘＢの連結を受信する。
【００６７】
置換回路７０８は、前置加算器７１４の「左側」入力のためにレジスタファイル７０２からのデータを置換するように構成される。置換回路７１０は、前置加算器７１４の「右側」入力のために、または代替的には、特殊演算回路７１６の第１の入力のために、レジスタファイル７０２からのデータを置換するように構成される。置換回路７１２は、特殊演算回路７１６への入力のためにレジスタファイル７０４からのデータを置換するように構成される。一例では、置換回路７０８および７１０は機能的に同一である。ベクトルプロセッサ６１４のためのデータ選択ネットワークとしての置換回路７０８、７１０および７１２の動作を以下でさらに説明する。置換回路７０８は、５１２ビットであり得る出力（ｐｒａＸＬ）を含む。置換回路７１０は、５１２ビットでもあり得る出力（ｐｒａＸＲ）を含む。置換回路７１２は、５１２ビットでもあり得る出力ｐｍｃＲを含む。置換回路７０８、７１０および７１２の各々は、以下に説明するように、動作のための制御信号を制御回路７５０から受信することができる。
【００６８】
前置加算器７１４は、制御回路７５０からの制御信号に基づいて複数のモードで動作し得る。第１のモードでは、前置加算器７１４は、入力データ（ｐｒａＸＬ：：ｐｒａＸＲ）を乗算器７２０に供給する。第１のモードでは、前置加算は行われない。第２のモードでは、前置加算器７１４は、置換回路７０８の出力（ｐｒａＸＬ）と置換回路７１０の出力（ｐｒａＸＲ）との加算／減算を実行することができる。特殊演算回路７１６は複数のモードで動作することができる。第１のモードでは、特殊演算回路７１６は、入力データを乗算器７２０に供給する（ｐｒａＸＲ：：ｐｍｃＲ）。さらなるモードでは、特殊演算回路７１６は、一定の「１」値を出力し、入力データの符号拡張を実行し、入力データの同様のタイプの操作を実行することができる。
【００６９】
乗算器７２０は、前置加算器７１４の出力に特殊演算回路７１６の出力を乗ずる。乗算器７２０は、前置加算器７１４の出力の異なる部分を特殊演算回路７１６の出力の異なる部分で乗ずるように構成された乗算器回路のアレイを含み得る。乗算器７２０の動作は、コントローラ７５０からの制御信号によって決定される。後置加算器７２２は、特定のレーンを加算／減算することによって乗算器７２０の出力レーンを減らすように構成される。たとえば、後置加算器７２２は、隣接する偶数レーンおよび隣接する奇数レーンを選んで、それらを加算（または減算）し得る。後置加算器７２２は異なるモードで動作するように構成される。第１のモードでは、後置加算器７２２は、後置加算器７２２からの出力を通過させて、付加的な機能は実行しない。すなわち、後置加算器７２４は、パイプライン７００の処理に任意に含まれる。第２のモードでは、後置加算器７２４は、後置加算器７２２と同様の機能を実行する。たとえば、後置加算器７２４は、隣接する偶数レーンおよび隣接する奇数レーンを選んで、それらを加算（または減算）することができる。アキュムレータ７３０は、後置加算器７２４の出力を累算（たとえば、加算または減算）するように構成される。後置加算器７２２、後置加算器７２４、および（加算または減算のための）アキュムレータの機能は、制御回路７５０からの制御信号によって決定される。アキュムレータの出力はレジスタファイル７３２に格納される。
【００７０】
アップシフト経路７０３は、ＭＡＣ経路７０１と並列に動作する。アップシフト経路７０３は、マルチプレクサ７１８を介して、レジスタファイル７０６から、または置換回路７０８、７１０および７１２のいずれかからデータを読出すことができる。アップシフト回路７２６は、制御回路７５０の制御下でマルチプレクサ７１８の出力を選択可能な量だけシフト（たとえば、左側シフト）するように構成される。マルチプレクサ７３４は、アキュムレータ７３０への結合のためにアップシフト回路７２６の出力または後置加算器７２４の出力のいずれかを選択する。アップシフト経路７０３は、処理前の値でアキュムレータ７３０を初期化するために用いることができる。
【００７１】
図９は、一例に従ったベクトルプロセッサ６１４のためのパイプライン７００の論理図９００を示すブロック図である。論理図９００は、レジスタファイル９０２、置換回路９０４、および計算回路９０６を示す。レジスタファイル９０２は、置換回路９０４によって計算回路９０６に結合される。レジスタファイル９０２は、たとえば、図７および図８に示されるレジスタ構成（または任意の他のレジスタ構成）を含み得る。計算回路９０６は、レジスタファイル９０２内のデータを処理するように構成された前置加算器、特殊演算回路、乗算器、後置加算器、アキュムレータなどを含む。計算回路９０６の例を図７に示し、上で説明している（たとえば、ＭＡＣ経路７０１の回路）。置換回路９０４は、計算回路９０６のためのデータ選択ネットワークとして機能する。
【００７２】
一例では、レジスタファイル９０２は、上述したように、レジスタファイル７０２およびレジスタファイル７０４を含む。一例では、置換回路９０４は、上述の置換回路７０８、７１０および７１２を含む。各々のレジスタファイル７０２および７０４は、複数の出力レーンを提供する。各々のレーンはＭビットを含む（たとえば、３２個のレーンが各々３２ビットである）。置換回路７０８は、レジスタファイル７０２に結合されるとともに、レジスタファイル７０２によって提供される出力レーンのセットを選択することによってベクトルを生成するように構成される。置換回路７１０はまた、レジスタファイル７０２に結合されるとともに、レジスタファイル７０２によって提供される出力レーンのセット（たとえば、置換回路７０８によって選択されたセットとは異なる可能性のあるセット）を選択することによって別のベクトルを生成するように構成される。レジスタファイル７０２と同様に、レジスタファイル７０４は、複数（たとえば、レジスタファイル７０２とは異なる数）の出力レーンを提供するように構成される。置換回路７１２は、レジスタファイル７０４に結合されるとともに、その出力レーンのセットを選択することによって別のベクトルを生成するように構成される。置換回路９０４の出力は計算回路９０６に供給され、計算回路９０６がたとえばそこでＭＡＣ演算を実行する。
【００７３】
一例では、各々の置換回路７０８および７１０は、入力ベクトルの３２個の３２ビットレーンのうちの１つから、各々３２ビットのチャンクを１６個、選択するように構成される。３２ビットの１６個の出力レーンは各々、５１２ビットの出力ベクトルを形成する。各々の置換回路７０８および７１０は、フルマルチプレクサであり、任意の入力を選択することができる。一例では、各々の置換回路７０８および７１０は、３２ビット幅であるとともに３２の異なるソースレーンから選択される一連の１６個のマルチプレクサを用いて実現され得る。Ｂｅｎｅｓネットワークなどの代替的な構造を用いることができる。置換回路７１２は、置換回路７０８および７１０と機能的に類似しているが、一例では、幅２５６ビットの入力ベクトルからのみ選択する。選択粒度は１６ビットであり、このため、乗算器の各レーンは個々に選択することができる。置換回路７０８、７１０および７１２について上述した数、幅などは例示的なものであり、異なる幅を有する異なる数のレーンから選択するために、異なる幅で構成され得ることに留意されたい。
【００７４】
図１１は、図１に示すデバイス１００の実現例として使用できる一例に従ったプログラマブルＩＣ１を示すブロック図である。プログラマブルＩＣ１は、プログラマブル論理３、構成論理２５、および構成メモリ２６を含む。プログラマブルＩＣ１は、不揮発性メモリ２７、ＤＲＡＭ２８、他の回路２９などの外部回路に結合することができる。プログラマブル論理３は、論理セル３０、サポート回路３１、およびプログラマブル相互接続３２を含む。論理セル３０は、複数の入力の一般的な論理関数を実現するように構成され得る回路を含む。サポート回路３１は、トランシーバ、入出力ブロック、デジタル信号プロセッサ、メモリなどの専用回路を含む。論理セルおよびサポート回路３１は、プログラマブル相互接続３２を用いて相互接続することができる。論理セル３０をプログラムし、サポート回路３１のパラメータを設定し、プログラマブル相互接続３２をプログラムするための情報は、構成論理２５によって構成メモリ２６に格納される。構成論理２５は、不揮発性メモリ２７または他の任意のソース（たとえば、ＤＲＡＭ２８または他の回路２９からのソース）から構成データを取得することができる。いくつかの例では、プログラマブルＩＣ１は処理システム２を含む。処理システム２は、マイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含み得る。
【００７５】
図１２は、トランシーバ３７、構成可能な論理ブロック（configurable logic block：：ＣＬＢ）３３、ランダムアクセスメモリブロック（random access memory block：ＢＲＡＭ）３４、入出力ブロック（input/output block：ＩＯＢ）３６、構成およびクロック論理（configuration and clocking logic：ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）４２、デジタル信号処理ブロック（digital signal processing block：ＤＳＰ）３５、専用入出力ブロック（input/output block：Ｉ／Ｏ）４１（たとえば、構成ポートおよびクロックポート）、ならびに、他のプログラマブル論理３９、たとえば、デジタルクロックマネージャ、アナログ−デジタル変換器、システム監視論理などを含む多数のさまざまなプログラマブルタイルを含むプログラマブルＩＣ１のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）実現例を示す。ＦＰＧＡはまた、ＰＣＩｅインターフェイス４０、アナログ−デジタル変換器（analog-to-digital converter：ＡＤＣ）３８などを含み得る。
【００７６】
いくつかのＦＰＧＡでは、各々のプログラマブルタイルは、図１２の上部分に含まれる例によって示されるように、同じタイル内のプログラマブル論理要素の入出力端子４８への接続を有する少なくとも１つのプログラマブル相互接続要素（interconnect element：ＩＮＴ）４３を含み得る。各々のプログラマブル相互接続要素４３はまた、同じタイルまたは他のタイル内の隣接するプログラマブル相互接続要素の相互接続セグメント４９への接続を含み得る。各々のプログラマブル相互接続要素４３はまた、論理ブロック（図示せず）間の全体的なルーティングリソースの相互接続セグメント５０への接続を含み得る。全体的なルーティングリソースは、相互接続セグメント（たとえば、相互接続セグメント５０）のトラックを含む論理ブロック（図示せず）と、相互接続セグメントを接続するためのスイッチブロック（図示せず）との間のルーティングチャネルを含み得る。全体的なルーティングリソースの相互接続セグメント（たとえば、相互接続セグメント５０）は、１つ以上の論理ブロックに跨り得る。全体的なルーティングリソースとともに採用されるプログラマブル相互接続要素４３は、図示されるＦＰＧＡのためのプログラマブル相互接続構造（「プログラマブル相互接続」）を実現する。
【００７７】
一実現例では、ＣＬＢ３３は、ユーザ論理と単一のプログラマブル相互接続要素（「ＩＮＴ」）４３とを実現するようにプログラムされ得る構成可能な論理要素（configurable logic element：ＣＬＥ）４４を含み得る。ＢＲＡＭ３４は、１つ以上のプログラマブル相互接続要素に加えて、ＢＲＡＭ論理要素（BRAM logic element：ＢＲＬ）４５を含み得る。典型的には、或るタイルに含まれる相互接続要素の数は、そのタイルの高さに依存する。図示した例では、ＢＲＡＭタイルは、５つのＣＬＢと同じ高さを有するが、他の数（たとえば、４つ）のＣＬＢと同じ高さを有していてもよい。ＤＳＰタイル３５は、適切な数のプログラマブル相互接続要素に加えてＤＳＰ論理要素（DSP logic element：ＤＳＰＬ）４６を含み得る。ＩＯＢ３６は、たとえば、プログラマブル相互接続要素４３の１つのインスタンスに加えて、入出力論理要素（「ＩＯＬ」）４７の２つのインスタンスを含み得る。当業者に明らかになるように、たとえばＩ／Ｏ論理要素４７に接続される実際のＩ／Ｏパッドは、典型的には、入出力論理要素４７の領域に限定されない。
【００７８】
図示した例では、（図１２に示される）ダイの中心付近の水平領域が、構成、クロック、および他の制御論理に用いられる。この水平領域または水平列から延びる垂直列５１は、ＦＰＧＡの幅にわたってクロックおよび構成信号を分配するために用いられる。
【００７９】
図１２に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的な列状構造を乱す追加の論理ブロックを含む。追加の論理ブロックは、プログラマブルブロックおよび／または専用論理であってもよい。
【００８０】
図１２が単に例示的なＦＰＧＡアーキテクチャを示すよう意図されていることに留意されたい。たとえば、１行内の論理ブロックの数、行の相対幅、行の数および順序、行に含まれる論理ブロックの種類、論理ブロックの相対サイズ、および図１２の上部に含まれる相互接続／論理実現例は、単に例示的なものに過ぎない。たとえば、実際のＦＰＧＡでは、典型的には、ユーザ論理の効率的な実現を容易にするために、ＣＬＢの出現する箇所にはＣＬＢの隣接行が２つ以上含まれているが、隣接するＣＬＢ行の数はＦＰＧＡの全体的なサイズに応じて変化する。
【００８１】
上記は特定の例を対象としているが、その基本的な範囲から逸脱することなく他の例およびさらに他の例を考案することができ、その範囲は添付の特許請求の範囲によって決定される。
【図１】
2021520542.tif 000003
【図２】
2021520542.tif 000004
【図３】
2021520542.tif 000005
【図４】
2021520542.tif 000006
【図５】
2021520542.tif 000007
【図６】
2021520542.tif 000008
【図７】
2021520542.tif 000009
【図８】
2021520542.tif 000010
【図９】
2021520542.tif 000011
【図１０】
2021520542.tif 000012
【図１１】
2021520542.tif 000013
【図１２】
2021520542.tif 000014
【手続補正書】
【提出日】令和2年12月3日(2020.12.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
集積回路（ＩＣ）内のＤＰＥアレイのためのデータ処理エンジン（ＤＰＥ）であって、
コアと、
データメモリおよびプログラムメモリを含むメモリとを含み、前記プログラムメモリは前記コアに結合され、前記データメモリは、前記コアに結合されるとともに、前記ＤＰＥ外にある少なくとも１つの付加的コアへの少なくとも１つの接続を含み、前記ＤＰＥはさらに、
前記データメモリに結合されたハードウェア同期回路およびダイレクトメモリアクセス（ＤＭＡ）回路を含むサポート回路と、
前記ＤＭＡ回路および前記コアに結合されたストリームスイッチを含むストリーミング相互接続とを含み、前記ストリームスイッチは、前記ストリームスイッチ内の構成レジスタに格納された構成データに基づいて前記ストリームスイッチを通じてデータストリームをルーティングするように構成され、前記ＤＰＥはさらに、
前記コア、前記メモリ、前記サポート回路、および前記ストリームスイッチ内の前記構成レジスタに結合されたメモリマップドスイッチを含むメモリマップド相互接続を含み、前記メモリマップドスイッチは、アドレストランザクションを、それぞれの前記アドレストランザクションのメモリアドレスに基づいてルーティングするように構成される、ＤＰＥ。
【請求項２】
前記サポート回路は、前記コアおよび前記メモリに結合されたデバッグ回路をさらに含む、請求項１に記載のＤＰＥ。
【請求項３】
前記データメモリは、１つ以上のランダムアクセスメモリ（ＲＡＭ）バンクと、前記１つ以上のＲＡＭバンクへのアクセスを調停するように構成されたアービトレーション論理とを含む、請求項１に記載のＤＰＥ。
【請求項４】
前記ハードウェア同期回路は、
前記コア、前記ＤＰＥアレイ内の別のＤＰＥ内のコア、および前記ＤＭＡ回路による前記１つ以上のＲＡＭバンクへのアクセスをロックし、
前記コアと、前記ＤＰＥアレイ内の少なくとも１つの他のＤＰＥ内の少なくとも１つの他のコアとの間に同期をもたらすように構成される、請求項３に記載のＤＰＥ。
【請求項５】
前記ストリームスイッチは、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有する、請求項１に記載のＤＰＥ。
【請求項６】
前記ストリーミング相互接続は複数のストリームスイッチを含み、前記複数のストリームスイッチの各々は、前記ＤＰＥアレイ内の異なるＤＰＥへの異なる方向への少なくとも１つの接続を有する、請求項１に記載のＤＰＥ。
【請求項７】
前記メモリマップドスイッチは、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥへの少なくとも１つの接続を有する、請求項１に記載のＤＰＥ。
【請求項８】
前記コアは、前記ＤＰＥアレイ内の別のＤＰＥに配置された別のコアへのカスケードインターフェイス、または、前記メモリマップド相互接続に結合された複数のレジスタを含む、請求項１に記載のＤＰＥ。
【請求項９】
前記コアは、超長命令語（ＶＬＩＷ）プロセッサ、単一命令多重データ（ＳＩＭＤ）プロセッサ、またはＶＬＩＷ  ＳＩＭＤプロセッサを含む、請求項１に記載のＤＰＥ。
【請求項１０】
前記プログラムメモリは、前記コアに配置されるとともに、前記データメモリおよび前記サポート回路を有するメモリモジュールをさらに含み、前記メモリモジュールは、前記ＤＰＥアレイ内の少なくとも１つの付加的ＤＰＥによって共有されるように構成された少なくとも１つのインターフェイスを含む、請求項１に記載のＤＰＥ。
【請求項１１】
前記ＤＭＡ回路は、前記ストリーミング相互接続に結合された出力および前記データメモリに結合された入力を有する第１のＤＭＡ回路と、前記ストリーミング相互接続に結合された入力および前記データメモリに結合された出力を有する第２のＤＭＡ回路とを含む、請求項１０に記載のＤＰＥ。
【請求項１２】
前記データメモリは、前記ＤＰＥ外にある前記少なくとも１つの付加的コアのそれぞれへの直接接続を有する少なくとも１つのメモリインターフェイスを含む、請求項１に記載のＤＰＥ。
【請求項１３】
集積回路（ＩＣ）であって、
複数のデータ処理エンジン（ＤＰＥ）を有するＤＰＥアレイを含み、前記複数のＤＰＥの各々は、
プログラムメモリを含むコアと、
データメモリ、第１のメモリインターフェイスおよび第２のメモリインターフェイスを含むメモリモジュールとを含み、前記データメモリは前記第１のメモリインターフェイスおよび前記第２のメモリインターフェイスに結合され、前記第１のメモリインターフェイスは前記コアに接続され、前記第２のメモリインターフェイスは前記複数のＤＰＥうち隣接するＤＰＥのコアに接続され、前記複数のＤＰＥの各々はさらに、
前記データメモリに結合されたダイレクトメモリアクセス（ＤＭＡ）回路と、
前記データメモリに結合されたハードウェア同期回路と、
前記ＤＭＡ回路および前記コアに接続されたストリームスイッチとを含み、前記ストリームスイッチは１つ以上の構成レジスタを含み、前記１つ以上の構成レジスタは、前記ストリームスイッチを構成するための構成データを格納するように動作可能であり、前記ストリームスイッチは、前記構成データに基づいて前記ストリームスイッチを通じてデータストリームをルーティングするように構成され、前記複数のＤＰＥの各々はさらに、
前記コア、前記メモリモジュール、および前記ストリームスイッチの前記１つ以上の構成レジスタに結合されたメモリマップドスイッチを含み、前記１つ以上の構成レジスタは、前記メモリマップドスイッチを介して１つ以上のトランザクションによって書込み可能であり、
前記複数のＤＰＥの前記ストリームスイッチはともに結合されてストリーミング相互接続を形成し、
前記複数のＤＰＥの前記メモリマップドスイッチはともに結合されてメモリマップド相互接続を形成する、ＩＣ。
【国際調査報告】
2021520542.tif 000015
2021520542.tif 000016
2021520542.tif 000017