(57)【要約】散財配置で結合されているプロセッサと動的構成可能通信要素を備える処理システム。プロセッサはそれぞれ、少なくとも１つの算術論理演算ユニット、１つの命令処理ユニット、複数のプロセッサ・ポートを備える。動的構成可能通信要素はそれぞれ、複数の通信ポート、第１のメモリ、ルーティング・エンジンを備える。プロセッサのそれぞれについて、複数の動的構成可能通信要素の第１の部分集合に結合するように複数のプロセッサ・ポートが構成される。各動的構成可能通信要素について、複数の通信ポートは、複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第１の部分集合と複数の動的構成可能通信要素の第２の部分集合に結合するように構成された通信ポートの第２の部分集合を備える。
2005531089.tif 000002
【特許請求の範囲】
【請求項１】
それぞれ少なくとも１つの算術論理演算ユニット、１つの命令処理ユニット、複数のプロセッサ・ポートを備える複数のプロセッサと、
それぞれ複数の通信ポート、第１のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記プロセッサのそれぞれについて、前記複数の動的構成可能通信要素の第１の部分集合に結合するように前記複数のプロセッサ・ポートが構成され、
前記動的構成可能通信要素のそれぞれについて、前記複数の通信ポートは、前記複数の前記プロセッサからなる部分集合に結合するように構成された通信ポートの第１の部分集合と、前記複数の動的構成可能通信要素の第２の部分集合に結合するように構成された通信ポートの第２の部分集合とを備えるシステム。
【請求項２】
前記プロセッサはそれぞれ、前記複数のプロセッサ・ポートのそれぞれの１つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合され、
前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第１の部分集合のそれぞれの１つを介して複数の近隣のプロセッサに結合され、
前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第２の部分集合のそれぞれの１つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合される請求項１に記載のシステム。
【請求項３】
前記プロセッサはそれぞれ、前記複数のプロセッサ・ポートのそれぞれの１つを介して４つの近隣の動的構成可能通信要素のそれぞれに結合され、
前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第１の部分集合のそれぞれの１つを介して４つの近隣のプロセッサのそれぞれに結合され、
前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第２の部分集合のそれぞれの１つを介して４つの近隣の動的構成可能通信要素のそれぞれに結合される請求項１に記載のシステム。
【請求項４】
前記複数のプロセッサと前記複数の動的構成可能通信要素は、実質的に同質な方法で分散される請求項１に記載のシステム。
【請求項５】
前記プロセッサのそれぞれについて、前記命令処理ユニットは、前記少なくとも１つの算術論理演算ユニットを制御するように結合され、
前記プロセッサはそれぞれ、複数のアドレス指定可能なロケーションを含む少なくとも第２のメモリをさらに備え、前記第２のメモリは前記少なくとも１つの命令処理ユニットに結合され、
前記プロセッサのそれぞれについて、前記複数のプロセッサ・ポートは、前記少なくとも１つの算術論理演算ユニットに結合されたプロセッサ・ポートの第１の部分集合と前記命令処理ユニットに結合されたプロセッサ・ポートの第２の部分集合とを備える請求項１に記載のシステム。
【請求項６】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリが複数の前記プロセッサ間で共有される請求項１に記載のシステム。
【請求項７】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリが複数の近隣のプロセッサ間で共有される請求項１に記載のシステム。
【請求項８】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリが４つの近隣のプロセッサ間で共有される請求項１に記載のシステム。
【請求項９】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリがその近隣のプロセッサのレジスタ・ファイルの少なくとも一部として動作する請求項１に記載のシステム。
【請求項１０】
前記プロセッサはそれぞれ、前記動的構成可能通信要素のうちの異なるいくつかの要素の前記第１のメモリからデータを取得するように動的に構成可能である請求項１に記載のシステム。
【請求項１１】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリは、命令実行時にプロセッサにより直接アクセス可能なデータを格納する請求項１に記載のシステム。
【請求項１２】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリは、命令実行時に複数の近隣のプロセッサのそれぞれにより直接アクセス可能なデータを格納する請求項１に記載のシステム。
【請求項１３】
前記プロセッサはそれぞれ、複数の近隣の動的構成可能通信要素のうちのどれかの要素の第１のメモリからデータを取得するように動作可能である請求項１に記載のシステム。
【請求項１４】
第１のプロセッサは、第１の期間に第１の動的構成可能通信要素の第１のメモリから第１のデータを取得するように動作可能であり、前記第１のプロセッサは、第２の期間に第２の動的構成可能通信要素の第１のメモリから第２のデータを取得するように動作可能である請求項１に記載のシステム。
【請求項１５】
第１のプロセッサは、前記複数の動的構成可能通信要素のそれぞれの部分集合から複数のデータ値を実質的に同時に取得するように動作可能である請求項１に記載のシステム。
【請求項１６】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリは、前記複数のプロセッサのそれぞれの部分集合に複数のデータ値を実質的に同時に供給するように構成される請求項１に記載のシステム。
【請求項１７】
前記動的構成可能通信要素のそれぞれについて、前記第１のメモリは、複数のアクセス・ポートを介して前記複数の通信ポートに結合され、かつ、複数のアドレス指定可能なロケーションを含み、
前記動的構成可能通信要素のそれぞれについて、前記ルーティング・エンジンは、前記複数の通信ポートに結合され、かつ、前記複数の通信ポートの間でデータの経路選択を行うように構成される請求項１に記載のシステム。
【請求項１８】
前記複数の動的構成可能通信要素はそれぞれ、前記複数の通信ポートに結合された直接メモリ・アクセス・エンジンをさらに備え、前記第１のメモリと前記複数の通信ポートの間でデータを転送するように構成される請求項１に記載のシステム。
【請求項１９】
前記動的構成可能通信要素の異なる部分集合の間でデータ転送を行うための異なる経路を作成するように動作可能である請求項１に記載のシステム。
【請求項２０】
前記プロセッサの少なくとも部分集合のそれぞれは、前記動的構成可能通信要素の異なる部分集合の間でデータ転送を行うための異なる経路を動的に作成するように動作可能である請求項１９に記載のシステム。
【請求項２１】
前記動的構成可能通信要素の少なくとも部分集合のそれぞれは、前記動的構成可能通信要素の異なる部分集合の間で経路を動的に作成するように動作可能である請求項１９に記載のシステム。
【請求項２２】
第１の経路は第１の複数の動的構成可能通信要素を備え、
前記第１の経路内の前記第１の複数の動的構成可能通信要素のそれぞれについて、前記第１の経路は、データ転送を開始する前に前記第１の経路の一部を実装するように前記動的構成可能通信要素の前記ルーティング・エンジンを構成することにより動的に作成される請求項１９に記載のシステム。
【請求項２３】
所定の経路は、前記動的構成可能通信要素の前記部分集合のそれぞれについて、ルーティング情報を含む、データ転送の第１の部分を受信したことに対する応答として前記経路を実装するように前記ルーティング・エンジンを構成することで動的に作成される請求項１９に記載のシステム。
【請求項２４】
それぞれの経路は破壊させるように操作可能であり、所定の経路は、破壊されるまでデータ転送に使用できる状態を保つ請求項１９に記載のシステム。
【請求項２５】
それぞれの経路は、それぞれの経路上のメッセージ・データの転送に関係なく、使用できる状態を保つように動作可能である請求項１９に記載のシステム。
【請求項２６】
第１のプロセッサは、近隣の第２の動的構成可能通信要素にデータを直接供給するように第１の動的構成可能通信要素を構成するように動作可能であり、
前記第１の動的構成可能通信要素と遠隔の第３の動的構成可能通信要素との間で経路を作成して、前記第１の動的構成可能通信要素が経路を通して前記遠隔の第３の動的構成可能通信要素にデータを供給できるように、前記第１のプロセッサが動作可能である請求項１９に記載のシステム。
【請求項２７】
前記プロセッサのうちの１つは、前記複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
前記転送元デバイスが前記中間部分集合を通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送先デバイスまたは前記中間部分集合のうちの１つがストールしすると、そのストールしたデバイスが、前記中間部分集合の１つまたは複数を通してストール情報を前記転送元デバイスに伝搬するように動作可能であり、
前記転送元デバイスは、前記ストール情報を受信した後前記第１の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第１の複数のデータの一部は、前記中間部分集合の少なくとも１つにバッファされる請求項１に記載のシステム。
【請求項２８】
前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の１つまたは複数を通して前記転送元デバイスに伝搬するように動作可能であり、
前記中間部分集合の前記少なくとも１つは、前記ストールしたデバイスが通信に使用可能になった後、前記第１の複数のデータの前記部分を前記転送先デバイスに伝送し、
前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの転送を再開する請求項２７に記載のシステム。
【請求項２９】
前記第１の複数のデータは、複数のデータ信号を介して伝達され、
前記ストール情報は、ブロッキング信号のアサートを介して伝達され、
前記通信に使用可能であることを示す情報は、ブロッキング信号のデアサートを介して伝達され、
前記ブロッキング信号は、前記複数のデータ信号と並行して経路選択される請求項２８に記載のシステム。
【請求項３０】
前記プロセッサのうちの１つは、前記複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
前記転送元デバイスが前記中間部分集合を通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスまたは前記中間部分集合のうちの１つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の１つまたは複数を通してストール情報を前記転送先デバイスに伝搬するように動作可能であり、
前記転送先デバイスは、前記ストール情報を受信した後前記第１の複数のデータの処理を一時停止するように動作可能である請求項１に記載のシステム。
【請求項３１】
前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の１つまたは複数を通して前記転送先デバイスに伝搬するように動作可能であり、
前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの処理を再開する請求項３０に記載のシステム。
【請求項３２】
前記第１の複数のデータは、複数のデータ信号を介して伝達され、
前記ストール情報は、アイドル信号のアサートを介して伝達され、
前記通信に使用可能であることを示す情報は、前記アイドル信号のデアサートを介して伝達され、
前記アイドル信号は、前記複数のデータ信号と並行して経路選択される請求項３１に記載のシステム。
【請求項３３】
前記プロセッサのうちの１つは、前記複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
前記転送元デバイスが前記中間部分集合を通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスの１つ、前記中間部分集合の１つ、または前記転送先デバイスがストールした場合、前記ストールしたデバイスは、前記中間部分集合の１つまたは複数を通してストール情報を前記転送元デバイスと前記転送先デバイスの１つまたは複数に伝搬するように動作可能であり、
前記転送元デバイスは、前記ストール情報を受信した後前記第１の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第１の複数のデータの一部は、前記中間部分集合の少なくとも１つにバッファされ、
前記転送先デバイスは、前記ストール情報を受信した後前記第１の複数のデータの処理を一時停止するように動作可能である請求項１に記載のシステム。
【請求項３４】
前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の１つまたは複数を通して前記転送元デバイスと前記転送先デバイスの１つまたは複数に伝搬するように動作可能であり、
前記中間部分集合の前記少なくとも１つは、前記ストールしたデバイスが通信に使用可能になった後、前記第１の複数のデータの前記部分を前記転送先デバイスに伝送し、
前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの転送を再開し、
前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの処理を再開する請求項３３に記載のシステム。
【請求項３５】
前記第１の複数のデータは、複数のデータ信号を介して伝達され、
前記ストール情報は、ブロッキング信号とアイドル信号を介して伝達され、
前記ブロッキング信号と前記アイドル信号は、前記複数のデータ信号と並行して経路選択される請求項３４に記載のシステム。
【請求項３６】
前記動的構成可能通信要素のそれぞれは、
複数の入力ポートと、
複数の出力レジスタと、
前記複数の入力ポートの１つまたは複数からデータを受信し、前記複数の出力レジスタの選択された１つまたは複数にデータを送信するように結合されたクロスバーとをさらに備え、
それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作する請求項１に記載のシステム。
【請求項３７】
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造される請求項１に記載のシステム。
【請求項３８】
前記プロセッサの少なくとも部分集合のそれぞれは、消費電力を低減するために必要に応じて有効／無効を設定するように動作可能な請求項１に記載のシステム。
【請求項３９】
前記プロセッサの少なくとも部分集合のそれぞれは、同期方式で動作するように動作可能な請求項１に記載のシステム。
【請求項４０】
前記動的構成可能通信要素のそれぞれの前記第１のメモリは、アキュムレータ、ステータス・レジスタ、オペランド・バッファ、１つまたは複数のアドレス・ジェネレータ制御回路のみを備える請求項１に記載のシステム。
【請求項４１】
複数のプロセッサと、
それぞれ複数の通信ポート、第１のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記プロセッサのうちの１つは、前記複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
前記転送元デバイスが前記中間部分集合を通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送先デバイスまたは前記中間部分集合のうちの１つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の１つまたは複数を通してストール情報を前記転送元デバイスに伝搬するように動作可能であり、
前記転送元デバイスは、前記ストール情報を受信した後前記第１の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第１の複数のデータの一部は、前記中間部分集合の少なくとも１つにバッファされるシステム。
【請求項４２】
前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の１つまたは複数を通して前記転送元デバイスに伝搬するように動作可能であり、
前記中間部分集合の前記少なくとも１つは、前記ストールしたデバイスが通信に使用可能になった後、前記第１の複数のデータの前記部分を前記転送先デバイスに伝送し、
前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの転送を再開する請求項４１に記載のシステム。
【請求項４３】
複数のプロセッサと、
それぞれ複数の通信ポート、第１のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記プロセッサのうちの１つは、前記複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
前記転送元デバイスが前記中間部分集合を通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスまたは前記中間部分集合のうちの１つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の１つまたは複数を通してストール情報を前記転送先デバイスに伝搬するように動作可能であり、
前記転送先デバイスは、前記ストール情報を受信した後前記第１の複数のデータの処理を一時停止するように動作可能であるシステム。
【請求項４４】
前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の１つまたは複数を通して前記転送先デバイスに伝搬するように動作可能であり、
前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの処理を再開する請求項４３に記載のシステム。
【請求項４５】
複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから前記転送先デバイスにデータを転送する方法であって、
前記複数の中間デバイスを通して第１の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
前記転送元デバイスが前記複数の中間デバイスを通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始することと、
前記中間デバイスの少なくとも１つまたは前記転送先デバイスが前記転送開始後にストールすることと、
前記ストール後、前記中間デバイスの１つまたは複数を通してストール情報を前記転送元デバイスに伝搬することと、
を含み、前記転送元デバイスは前記ストール情報を受信した後に前記第１の複数のデータの転送を一時停止し、前記ストール後と前記一時停止前に送信された前記第１の複数のデータの部分集合は前記中間デバイスの１つまたは複数にバッファされる方法。
【請求項４６】
前記中間デバイスの前記少なくとも１つまたは前記転送先デバイスが通信に使用可能になることと、
前記使用可能になった後に、通信に使用可能であることを示す情報を前記転送元デバイスに伝搬することと、
前記使用可能になった後、前記中間デバイスの前記部分集合が前記第１の複数のデータの前記部分集合を前記転送先デバイスに伝送することと、
前記転送元デバイスが前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの転送を再開することとをさらに含む請求項４５に記載の方法。
【請求項４７】
前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造され、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記転送元デバイスは、前記プロセッサのうちの１つを備え、
前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項４５に記載の方法。
【請求項４８】
前記複数のプロセッサのそれぞれは、少なくとも１つの算術論理演算ユニット、少なくとも１つの命令処理ユニット、複数のプロセッサ・ポートを備え、
前記複数の動的構成可能通信要素はそれぞれ、複数の通信ポート、少なくとも１つのメモリ、ルーティング・エンジンを備える請求項４７に記載の方法。
【請求項４９】
複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから前記転送先デバイスにデータを転送する方法であって、
前記複数の中間デバイスを通して第１の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
前記転送元デバイスが前記複数の中間デバイスを通して前記第１の複数のデータを前記転送先デバイスに転送する動作を開始することと、
前記中間デバイスの少なくとも１つまたは前記転送元デバイスが前記転送開始後にストールすることと、
前記ストール後、前記中間デバイスの１つまたは複数を通してストール情報を前記転送先デバイスに伝搬することと、
前記転送先デバイスが前記ストール情報を受信した後前記第１の複数のデータの処理を一時停止することとを含む方法。
【請求項５０】
前記中間デバイスの前記少なくとも１つまたは前記転送元デバイスが通信に使用可能になることと、
前記使用可能になった後に、通信に使用可能であることを示す情報を前記転送先デバイスに伝搬することと、
前記転送先デバイスが前記通信に使用可能であることを示す情報を受信した後前記第１の複数のデータの処理を再開することとをさらに含む請求項４９に記載の方法。
【請求項５１】
前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造され、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記転送元デバイスは、前記プロセッサのうちの１つを備え、
前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項４９に記載の方法。
【請求項５２】
それぞれ少なくとも１つの算術論理演算ユニット、少なくとも１つの命令処理ユニット、複数のプロセッサ・ポートを備える複数のプロセッサと、
それぞれ複数の通信ポート、少なくとも第１のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上に製造され、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記動的構成可能通信要素はそれぞれ、
複数の入力ポートと、
複数の出力レジスタと、
前記複数の入力ポートの１つまたは複数からデータを受信し、前記複数の出力レジスタの選択された１つまたは複数にデータを送信するように結合されたクロスバーとを備え、
それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作するシステム。
【請求項５３】
前記プロセッサのそれぞれについて、前記少なくとも１つの命令処理ユニットは、前記少なくとも１つの算術論理演算ユニットを制御するように結合され、
前記プロセッサはそれぞれ、複数のアドレス指定可能なロケーションを含む少なくとも第２のメモリをさらに備え、前記第２のメモリは前記少なくとも１つの命令処理ユニットに結合され、
前記複数のプロセッサ・ポートは、前記少なくとも１つの算術論理演算ユニットに結合されたプロセッサ・ポートの第１の部分集合と前記少なくとも１つの命令処理ユニットに結合されたプロセッサ・ポートの第２の部分集合とを備える請求項５２に記載のシステム。
【請求項５４】
前記複数の通信ポートは、前記複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第１の部分集合と、前記複数の動的構成可能通信要素の部分集合に結合するように構成された通信ポートの第２の部分集合とを備え、
前記少なくとも第１のメモリは、複数のアクセス・ポートを介して前記複数の通信ポートに結合され、複数のアドレス指定可能ロケーションを含み、
前記ルーティング・エンジンは、前記複数の通信ポートに結合され、前記複数の通信ポートの間でデータの経路選択を行うように構成される請求項５２に記載のシステム。
【請求項５５】
前記複数の動的構成可能通信要素はそれぞれ、前記複数の通信ポートに結合された直接メモリ・アクセス・エンジンをさらに備え、前記少なくとも第１のメモリと前記複数の通信ポートの間でデータを転送するように構成される請求項５２に記載のシステム。
【請求項５６】
相互接続ネットワークと、
データ交換を行うように構成された複数の動的構成可能通信要素とを備え、それぞれの前記要素は、
前記相互接続ネットワークに結合された複数の入力ポートと、
前記相互接続ネットワークに結合された複数の出力レジスタと、
前記複数の入力ポートの１つまたは複数からデータを受信し、前記複数の出力レジスタの選択された１つまたは複数にデータを送信するように結合されたクロスバーとを備え、
それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作するシステム。
【請求項５７】
複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから関転送先デバイスにデータを転送する方法であって、
前記複数の中間デバイスを通して第１の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
同期データ転送モードまたはトランスペアレト・データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
単一のマスタ・クロック・サイクルで単一の中間デバイスを通して、前記単一の中間デバイスが同期データ転送モードで動作するように構成されたことに応じて、前記第１の複数のデータを転送することと、
単一のマスタ・クロック・サイクルで複数の中間デバイスを通して、前記複数の中間デバイスのそれぞれがトランスペアレト・データ転送モードで動作するように構成されたことに応じて、前記第１の複数のデータを転送することとを含む方法。
【請求項５８】
前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造される請求項５７に記載の方法。
【請求項５９】
前記転送元デバイスは、前記プロセッサのうちの１つを備え、
前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項５８に記載の方法。
【請求項６０】
前記複数のプロセッサのそれぞれは、少なくとも１つの算術論理演算ユニット、少なくとも１つの命令処理ユニット、複数のプロセッサ・ポートを備え、
前記複数の動的構成可能通信要素はそれぞれ、複数の通信ポート、少なくとも１つのメモリ、ルーティング・エンジンを備える請求項５８に記載の方法。
【請求項６１】
複数の中間デバイスを通して転送先デバイスのそれぞれに結合されている、１つの転送元デバイスから複数の転送先デバイスにデータを転送する方法であって、
１つまたは複数の中間デバイスを通して第１の複数のデータを第１の転送先デバイスに転送するように前記転送元デバイスを構成することと、
同期データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
１つまたは複数のマスタ・クロック・サイクルを含む第１の期間に、それぞれの前記マスタ・クロック・サイクルで前記第１の複数のデータを単一の中間デバイスを通して転送することを含む、前記転送元デバイスから前記第１の転送先デバイスに前記第１の複数のデータを転送することと、
前記複数の中間デバイスを通して第２の複数のデータを第２の転送先デバイスに転送するように前記転送元デバイスを構成することと、
トランスペアレト・データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
単一のマスタ・クロック・サイクルで複数の中間デバイスを通して前記転送元デバイスから前記第２の転送先デバイスに前記第２の複数のデータを転送することとを含む方法。
【請求項６２】
集積回路を製造する方法であって、
プロセッサと動的構成可能通信要素を備えるユニットを作製することを含み、
前記プロセッサは、算術論理演算ユニット、命令処理ユニット、複数のプロセッサ・ポートを備え、
前記動的構成可能通信要素は、複数の通信ポート、第１のメモリ、ルーティング・エンジンを備え、
複数の前記ユニットを基板に配置し相互接続することを含み、前記複数のプロセッサと前記複数の動的構成可能通信要素は散在配置で結合され、
前記プロセッサのそれぞれについて、前記複数の動的構成可能通信要素の第１の部分集合に結合するように前記複数のプロセッサ・ポートが構成され、
前記動的構成可能通信要素のそれぞれについて、前記複数の通信ポートは、前記複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第１の部分集合と前記複数の動的構成可能通信要素の第２の部分集合に結合するように構成された通信ポートの第２の部分集合を備える方法。
【請求項６３】
複数のプロセッサであって、それぞれ、
少なくとも１つの算術論理演算ユニットと、
前記算術論理演算ユニットを制御するように結合され、複数のアドレス指定可能なロケーションを含む少なくとも第１のメモリを備える少なくとも１つの命令処理ユニットと、
前記算術論理演算ユニットに結合された第１の部分集合と前記命令処理ユニットに結合された第２の部分集合を含む、複数のプロセッサ・ポートとを備えるプロセッサと；
複数の動的構成可能通信要素であって、それぞれ、
前記複数のプロセッサの部分集合に結合するように構成された第３の部分集合と前記複数の動的構成可能通信要素の部分集合に結合するように構成された第４の部分集合を含む複数の通信ポートと、
複数のアクセス・ポートを介して前記複数の通信ポートに結合され、複数のアドレス指定可能ロケーションを含む少なくとも第２のメモリと、
前記複数の通信ポートに結合され、前記複数の通信ポートの間でデータの経路選択を行うように構成されているルーティング・エンジンと、
前記複数の通信ポートに結合され、前記第２のメモリと前記複数の通信ポートとの間でデータ転送を行うように構成された直接メモリ・アクセス・エンジンとを備える動的構成可能通信要素とを備え；
前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・システムに関し、より詳細には、パラレル・プロセッサ・システムに関する。
【背景技術】
【０００２】
レーダ、ソナー、ビデオ、映画、医用画像処理、通信などの応用分野では、複数の複合信号を高速に処理する必要があるため、並列計算が必要とされる。さらに、並列計算は計算処理効率を高め、逐次計算手法のいくつかの限界を克服することができる。システムの能力は、所定のコストまたは物理的サイズに対する性能を測定基準として記述することができる。当初、コンピュータの性能を測定する単位として重要なのは、１秒当たりの計算回数であった。電池式機器の利用が増えるにつれ、エネルギー単位当たりの計算性能が好ましい測定単位として使用されることが多くなってきている。
【０００３】
高性能計算を実現する従来手法は以下のとおりである。
【０００４】
１．汎用マイクロコンピュータ（ＧＰＭＣ）。ＧＰＭＣ（Ｉｎｔｅｌ社のＰｅｎｔｉｕｍ製品ラインや、Ｍｏｔｏｒｏｌａ社とＩＢＭ社のＰｏｗｅｒＰＣシリーズ）は、これまで待ち時間を代償に処理効率の最大化を進めてきた。待ち時間とは、１回のオペレーションに対するデータ入力からデータ出力までのＧＰＭＣチップ内の遅延時間のことである。データはチップ内を出入りする他のデータとひとまとめにされ、オペレーションは他のオペレーションの多数の処理段とともに１つのパイプラインに埋め込まれるため、待ち時間は長くなる。ほとんどすべてのコンピュータはメモリ階層を有し、例えば、階層最上位に少量の高速ＳＲＡＭレジスタ、階層中位に比較的低速な中程度の量のシステム・メモリ、階層最下位に大量のかなり低速なディスク・ドライブを使用する記憶装置を配する。ＧＰＭＣでは、各プロセッサは、データ用のレジスタ・ファイル、命令発行ユニット、レベル１（Ｌ１）キャッシュを備えていることが多い。Ｌ１キャッシュは、命令とデータとに分割することも、また１つにすることもできる。ほとんどのコンピュータ・プログラムでは参照に局所性があるため、つまり、次に実行されるオペレーションは最後に参照されたメモリ・ロケーション付近のメモリ・ロケーションを参照する傾向があるため、キャッシュを使用すると性能が向上する。レベル２（Ｌ２）キャッシュは、通常、メイン・メモリ（大容量、低速、安価なダイナミックＲＡＭチップ）とインターフェースする必要がある。多くのＧＰＭＣチップは、複数の実行ユニットを通じて単一命令複数データ（ＳＩＭＤ）並列処理をサポートし、最も大きなチップのうちいくつかは、ＭＩＭＤ動作の複数の命令ストリームをサポートする。複数の実行ユニットを有するＧＰＭＣでは、Ｌ２キャッシュは、通常、実行ユニット間で共有されるが、何らかの「キャッシュ・コヒーレンス」方式によりこの共有メモリへの書き込み時のデータの喪失を防止する。Ｌ３キャッシュは、メイン・メモリが比較的かなり遅い場合に使用される。同じチップ上にメモリおよびＩ／Ｏチャネル用のコントローラを追加集積化することができる。ＧＰＭＣのプログラム機能は汎用的であり大市場向けであるので、大量生産し、安い単位原価で販売できる。ＧＰＭＣおよびキャッシュとパイプラインの複合体の欠点は、消費電力が比較的大きいこと、データがＣＰＵに入った時点から結果が出力されるまでの待ち時間が前述のように比較的長いという点である。
【０００５】
２．デジタル・シグナル・プロセッサ（ＤＳＰ）。ＤＳＰは、ＡＬＵが固定小数点数を使用するのか、浮動小数点数を使用するのか、またＩＣチップ１個当たりのＡＬＵの個数により、いくつかの種類に分類することができる。ＤＳＰのオペレーション１回当たりの消費電力は、通常、ＧＰＭＣに比べて小さいが、それは、専用命令を使って信号処理を効率よく行えるからである。ＤＳＰは、比較するとキャッシュ・レイヤが少なく、パイプラインが短いため、所定のオペレーションについてＧＰＭＣよりも待ち時間が短い。ＧＰＭＣ内の自動／推測的並列実行に比べて、命令ワードは長く、明示的並列実行が可能である。高性能ＤＳＰ実装では、複数の実行ユニットによる並列処理をサポートすることができ、一般に、ＤＳＰはＧＰＭＣに比べてサポート・チップが少なくて済む。ＤＳＰ向けの大市場では、大量生産しコストを低くできる。ＤＳＰ市場には、固定小数点算術演算のみを実行するＩＣだけでなく、固定小数点演算と浮動小数点演算の両方をサポートするＩＣについても需要がある。ＤＳＰの欠点は、プログラミングがより難しいことと、特定の種類のアルゴリズムについては性能が劣るという点が挙げられる。
【０００６】
３．フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）。ＦＰＧＡはデジタルＩＣであり、ウェハ加工時にプログラムまたはカスタマイズするのではなく、「現場」でユーザがプログラムまたはカスタマイズすることができる。ＦＰＧＡは、含まれる論理ゲートの個数で分類され、最近の最も大きなバージョンでは、ＩＣ上のＡＬＵとメモリの個数で分類することができる。理論的には、すべてのＦＰＧＡ  ＡＬＵは、ＳＩＭＤまたはＭＩＭＤまたは混合制御の理論的枠組みに従って並列計算できる。ＦＰＧＡのカスタマイズは、ＤＳＰ／ＧＰＭＣをプログラムするのと似ているが、目的のプログラムに到達するのはそれらに比べて難しく、一般に、論理設計に精通している技術者と専用の設計自動化ツールを必要とする。しかし、消費電力よりも速度が重視される場合には、ＦＰＧＡのほうがＤＳＰ／ＧＰＭＣよりも高速な処理になることが多い。大量生産されるとはいえ、大きなＦＰＧＡは、同じゲート数のＧＰＭＣチップより数倍高価である。
【０００７】
４．特定用途向け集積回路（ＡＳＩＣ）。ＡＳＩＣは、フルカスタムの回路からライブラリ・モジュールの階層別集積化にいたる特定の回路レイアウトを設計することにより特定のアプリケーションに合わせてカスタマイズされる。ライブラリ・モジュールは、個別論理ゲートとＩ／Ｏセルからメモリ・アレイやマイクロプロセッサ・コアに及ぶ可能性がある。ＡＳＩＣハードウェアはアプリケーションに必要なアルゴリズムに合わせて手直しされるため、性能はＧＰＭＣ／ＤＳＰ／ＦＰＧＡ手法よりも高くなる可能性がある。また、速度についても、コンフィギュレーション回路をなくすことができるためＦＰＧＡよりも高速にすることができ、寄生容量の低いよりコンパクトなレイアウトにできる。ＡＳＩＣの開発コストは、他の手法に比べてかなり高く、数百万ドルから数千万ドルに達する（そして、複合ビデオ・チップであればさらに高い）。高い開発費の元を取るために、特定の設計のチップを数百万個は販売する必要があるであろう。
【０００８】
要約書で考察されている並列プロセッサ・コンピュータは、プロセッサ、メモリ、相互接続ネットワーク（ＩＮ）で構成されている。これらのコンポーネントは、これまで、並列プロセッサ・コンピューティングに関する文献で説明されている、多くの異なるトポロジによる組み合わせであった。これらのコンポーネントはすべて、内部遅延のため待ち時間が生じ、これらの待ち時間は、コンポーネントのサイズやそのコンポーネントの入力／出力ポートの個数とともに長くなる。ＩＮとメモリの平均待ち時間は、システムに追加されるプロセッサとメモリが増えるほど長くなる。
【０００９】
多くの並列プロセッサ・アレイには、相互接続ネットワークを使用して複数のプロセッサ間で共有される大規模メモリがある。性能上の理由から、共有メモリは、通常、スタンドアロン・プロセッサ・システムのＬ２キャッシュに類似している。次に高いレベルの（つまり、より高速な）キャッシュ、またはＬ１キャッシュは、多くの場合、並列アレイの各プロセッサに対しプライベートかつローカルである。その後、プロセッサ内には、通常、データ用のレジスタ・ファイルと命令用の独立のキャッシュがある。このような並列アーキテクチャでは、２つ以上のプロセッサが同じタスクを実行している場合にいくつかの問題が生じる。データの大きなベクトルを伝達するためには、一方のプロセッサはＬ１キャッシュからＬ２キャッシュへライト・スルーしてから、フラグをセットしなければならない（Ｌ２キャッシュでも）。第２のプロセッサは、値が変化したことを検出するまでフラグを連続的に読み出し、検出したら、データ・ベクトルをＬ１キャッシュに読み込んでそれを操作する必要がある。したがって、新しく計算した結果については、通信速度はＬ２キャッシュの速度により設定されるので、プロセッサの増加に合わせてＬ２の容量を増やすと速度は低下する。Ｌ２キャッシュの帯域幅と待ち時間は両方とも、容量増大の悪影響を受ける。
【００１０】
相互接続ネットワークは、完全接続型でも交換型でもよい。完全接続ネットワークでは、すべての入力ポートはすべての出力ポートに配線される。しかし、完全接続ネットワーク内の線の本数は、Ｎをポート数とすると、Ｎ2／２で増大するので、完全接続ネットワークは、中規模のシステムでもたちまち非現実的なものとなる。
【００１１】
交換ネットワークは、リンクとスイッチング・ノードからなる。リンクは、配線、伝送線路、導波路（光導波路を含む）、または無線受信器−送信器のペアなどを含む。スイッチング・ノードは、時間範囲内でのバスへの接続といった単純なものでも、多数のポートとバッファ・キューを備えるクロスバーといった複雑なものでもよい。単段ネットワークは、入力ポートと出力ポートすべてが１つの大きなスイッチング・ノード上に置かれているネットワークである。多段ネットワークは、出力ポートに到達するまでにデータ移動が第１のスイッチング・ノード、第１のリンク、第２のスイッチング・ノード、場合によってはさらに多くのリンク／ノードのペアをトラバースしなければならないネットワークである。例えば、電話システムは多段ネットワークである。
【００１２】
並列コンピュータの相互接続ネットワークは、規模、帯域幅、制御方法に関してさまざまなものがある。ネットワークが入力から出力へのデータ経路つまり回路を備え、それを破棄する要求があるまで残しておく場合、それを「回路交換」と呼ぶことができる。ネットワークが１パケット分のデータを入力から出力まで送れるだけの長さの経路を備える場合、「パケット交換」と呼ぶことがある。制御方法は、完全決定論的（マスタ・クロックに同期するすべてのステップをプログラムすることにより達成できる）から完全反応的（ポート入力でのデータ移動要求に非同期的に応答することにより達成できる）までさまざまである。
【００１３】
単段ネットワークでは、要求／受理プロトコルはスイッチを制御するためのふつうの手段である。要求信号は、入力ポートに送られ、競合検出回路内の他のすべての入力ポートからの要求信号と比較される。競合がなければ、ＩＮは受理信号で応答する。ポートはアドレスを送出し、ＩＮは入力を出力に接続するようにスイッチを設定する。競合が検出された場合、アービトレーション回路（または「アービタ」）は要求ポートのうちのどれが受理信号を受けるかを決定する。受理信号のないポートは、待たなければならない。１サイクルで成功しなかったポートは、その後のサイクルで再び試みることができる。すべてのポートが少なくとも何らかのサービスを受けられるようにするため、アービタではさまざまな優先度／ローテーション方式が使用される。
【００１４】
多段ネットワークでは、「ワームホール・ルーティング」と呼ばれる特定のプロトコルが使用される場合がある。ワームホール・ルーティングは、メッセージは、ナビゲーション用のヘッダ、ペイロード・データを伝達するための本文と、経路を閉じるためのテールを含む単語の連鎖にまとめることができるという考え方に基づいている。メッセージは、以下のように、ネットワーク内を「ワームのようにじわじわと」進む。ネットワークはデカルト格子としてレイアウトされ、スイッチング・ノードとメモリは格子の各接合部に配置されるものと仮定する。ヘッダは、ワームがネットワーク内で出くわす各ノードからどこへ行くべきかを指示する単純なステアリング命令（ｇｏ−ｓｔｒａｉｇｈｔ−ａｈｅａｄ、ｔｕｒｎ−ｌｅｆｔ、ｔｕｒｎ−ｒｉｇｈｔ、またはｃｏｎｎｅｃｔ−ｔｏ−ｌｏｃａｌ  ｍｅｍｏｒｙなど）のシーケンスを含む。これらのステアリング命令は、ほとんど回路らしきものもなくノード側で復号化し、スイッチの非常に高速な設定を行えるくらい単純なものである。ヘッダでセットアップされた経路、つまり「穴」により、コードワード「テール」が見つかりノードがそのテールの後の穴を閉じるまでペイロード・データ、つまり「本文」を通すようにできる。経路を閉じると、リンクとノードが解放され、同じワームホール・ルーティング・プロトコルで他の経路を作成できるようになる。ＩＮの帯域幅は、単位時間当たり発生する成功したデータ移動の回数として定義することができる。交換されるＩＮの帯域幅を推測することは難しいが、それは、ＩＮの詳細やそこに出されるデータ移動要求の特徴における多くの要因に依存しているからである。測定とシミュレーションの結果から、データ移動要求率が高くなると、実際にうまくＩＮを通りぬけるデータ移動の割合は減じることがわかる。そして結局、１秒当たりの完了したデータ移動の回数は、飽和するか、またはピークに達し、これがＩＮの帯域幅とみなされる。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
上記のシステムは、異なるアプリケーションに対しさまざまなレベルの性能を提供する。しかし、アプリケーションの中には、現行システムを使用した場合に可能なレベルをはるかに超える性能または計算処理効率を必要とするものがある。したがって、電力要件を低減する一方で計算処理効率を高めたシステムが望ましい。
【課題を解決するための手段】
【００１６】
処理システムのさまざまな実施態様を開示する。一実施態様は、システムは複数のプロセッサと複数の動的構成可能通信要素を備える。各プロセッサは、少なくとも１つの算術論理演算ユニット、１つの命令処理ユニット、複数のプロセッサ・ポートを備えている。それぞれの動的構成可能通信要素は、複数の通信ポート、第１のメモリ、ルーティング・エンジンを備えている。複数のプロセッサと複数の動的構成可能通信要素は、散在配置で結合されている。一実施態様では、プロセッサのそれぞれについて、複数の動的構成可能通信要素の第１の部分集合に結合するように複数のプロセッサ・ポートを構成することができる。また、各動的構成可能通信要素について、複数の通信ポートは、複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第１の部分集合と、複数の動的構成可能通信要素の第２の部分集合に結合するように構成された通信ポートの第２の部分集合とを備えることができる。一実施態様では、複数のプロセッサと複数の動的構成可能通信要素は単一集積回路で製造することができる。
【００１７】
特定の一実装では、各プロセッサは、複数のプロセッサ・ポートのそれぞれの１つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合されている。動的構成可能通信要素はそれぞれ、複数の通信ポートの第１の部分集合のそれぞれの１つを介して複数の近隣プロセッサに結合され、また複数の通信ポートの第２の部分集合のそれぞれの１つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合されている。
【００１８】
一実施態様では、これらのプロセッサのうちの１つは、複数の動的構成可能通信要素の中間部分集合を通して第１の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能なものでよい。転送元デバイスが転送を開始した後、転送先デバイスまたは中間部分集合のうちの１要素がストールした場合、ストールしているデバイスは、ストール情報を中間部分集合のうちの１つまたは複数の要素を通して転送元デバイスに伝搬するように動作可能なものとすることができる。転送元デバイスは、ストール情報を受信した後第１の複数のデータの転送を一時停止するように動作可能であり、ストール後や一時停止前に送信された第１の複数のデータの一部を中間部分集合の少なくとも１つの要素内にバッファすることができる。それとは別に、転送元デバイスが中間部分集合を通して第１の複数のデータを転送先デバイスに転送する動作を開始した後、転送元デバイスまたは中間部分集合のうちの１つの要素がストールした場合に、そのストールしたデバイスは、中間部分集合の１つまたは複数の要素を通してストール情報を転送先デバイスに伝搬するように動作可能なものとすることができる。転送先デバイスは、ストール情報を受信した後第１の複数のデータの処理を一時停止するように動作可能なものとすることができる。
【００１９】
一実施態様では、動的構成可能通信要素のそれぞれは、複数の入力ポート、複数の出力レジスタ、複数の入力ポートのうちの１つまたは複数からデータを受信し、複数の出力レジスタのうちの選択された１つまたは複数にデータを送信するように結合されたクロスバーを備えることができる。それぞれの出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的動作が可能である。
【発明を実施するための最良の形態】
【００２０】
本発明はさまざまな修正を加えることができ、また他の形態も可能であるが、特定の実施形態を図面の実施例を用いて示しており、これらについて以下で詳述する。ただし、図面および詳細な説明は本発明を開示されている特定の形態に制限する意図はなく、むしろその反対に、付属の請求項によって定義されているように、本発明の精神と範囲にあるすべての修正形態、均等物、代替形態を対象とするものとすることを理解されたい。
【００２１】
図１−ＭＭＡＰブロック図と概要
図１は、処理システムの一実施形態を例示するブロック図である。本明細書では、処理システムは、数学的マトリックス・アルゴリズム・プロセッサ（ＭＭＡＰ）と呼ばれるものであるが、この名称を使用していても、決して本発明の範囲を制限する意図はない。例示されている実施形態では、ＭＭＡＰ  １０は、複数の動的構成可能プロセッサ（ＤＣＰ）と、互いにデータや命令をやり取りするため結合されている「動的構成可能通信要素」とも呼ばれる複数の動的構成可能コミュニケータ（ＤＣＣ）を備えている。本明細書では、ＤＣＰはＤＣＰノードとも呼ばれ、ＤＣＣはＤＣＣノードとも呼ばれることもある。
【００２２】
処理システム１０は、現在ＧＰＭＣ、ＤＳＰ、ＦＰＧＡ、またはＡＳＩＣが使用されているさまざまなシステムとアプリケーションにおいて使用することができる。したがって、例えば、処理システム１０は、さまざまなタイプのコンピュータ・システムまたは計算を必要とするその他のデバイスで使用することができる。企図されている一実施形態では、処理システム１０は２００２年７月１８日に出願された「Ｆｒｅｑｕｅｎｃｙ  Ｄｏｍａｉｎ  Ｅｑｕａｌｉｚａｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ」という表題の米国仮特許出願６０／３９６，８１９で教示されているようなデジタル・テレビジョン・システムの信号処理デバイスとして使用されている。
【００２３】
一実施形態では、ＤＣＰは、データを操作するように構成された１つまたは複数の算術論理演算ユニット（ＡＬＵ）、そのＡＬＵを制御するように構成された１つまたは複数の命令処理ユニット（ＩＰＵ）、命令またはデータを保持するように構成された１つまたは複数のメモリ、さらに各種のマルチプレクサとデコーダを備えることができる。このような実施形態は、多数のポート（「プロセッサ・ポート」）を備え、その一部はＤＣＣに接続するように構成することができ、また残りは他のＤＣＰに接続するように構成することができる。図３は、ＤＣＰの一実施形態のブロック図であり、以下で詳述する。
【００２４】
一実施形態では、ＤＣＣは、データと命令を保持するように構成された１つまたは複数のランダム・アクセス・メモリ（ＲＡＭ）、構成可能なコントローラ、クロスバー・スイッチなどのネットワーク・スイッチ、レジスタ、マルチプレクサなどを備える。このような実施形態は、複数のポートを備え、その一部はＤＣＰに接続するように構成され（本明細書ではＤＣＰタイプのポートと呼ぶ）、残りはＤＣＣに接続するように構成される（本明細書ではＤＣＣタイプのポートと呼ぶ）。図４は、ＤＣＣの一実施形態のブロック図であり、以下で詳述する。任意の与えられたポートについて、ＤＣＣまたはＤＣＰに、あるいはＤＣＣまたはＤＣＰから接続するように構成するかどうかに関係なく、特定のクロック・サイクルでそのような与えられたポートを通して転送可能なデータの量は、さまざまな実施形態において変わりうることに留意されたい。例えば、一実施形態では、所定のポートを、１クロック・サイクル当たり１ワードのデータを転送するように構成することができるが、他の実施形態では、所定のポートを１クロック・サイクル当たり複数ワードのデータを転送するように構成することができる。さらに他の実施形態では、所定のポートでは、時分割多重化などの手法を使用して、複数のクロック・サイクルで１ワードのデータを転送し、それにより、ポートを含む物理的接続の数を減らすことができる。
【００２５】
ＭＭＡＰ  １０の一実施形態では、各ＤＣＰは、命令用に予約されている小さなローカル・メモリを備え、また非常に小さなローカル・データ記憶装置を備えることができる。そのような実施形態では、各ＤＣＰの近隣のＤＣＣは、所定のＤＣＰにオペランドを供給するように構成される。特定の実施形態では、多数のＤＣＰ命令について、所定のＤＣＰが近隣のＤＣＣからオペランドを読み込み、ＡＬＵオペレーションを実行し、ＡＬＵの結果を所定の近隣のＤＣＣに１クロック・サイクルで格納することができる。これにより、１つのＤＣＰからのＡＬＵの結果は、実行直後のクロック・サイクルで他のいくつかのＤＣＰから利用できるようにすることができる。このようにして結果を出力すると、近隣のＤＣＰの実行について密接な調整をする、つまり「密結合」することができる。本明細書ではこのような調整は、協同処理と呼ばれる。
【００２６】
本明細書では、所定のＤＣＣまたはＤＣＰの観点から、近隣のＤＣＣまたはＤＣＰは、特定の待ち時間の範囲内で所定のＤＣＣまたはＤＣＰからアクセス可能なＤＣＣまたはＤＣＰを参照する。いくつかの実施形態では、近隣関係の範囲を定める待ち時間は、例えばクロック速度などの要因により異なることがある。さらに、いくつかの実施形態では、近隣の複数の度合いを定義することができ、この度数は異なるアクセス待ち時間に対応してもよい。例えば、一実施形態では、「最も近い近傍は」、要求されたときのと同じクロック・サイクルでデータを供給できるデバイスとして定義することができ、「次に近い近傍」は、要求された後１クロック・サイクルの範囲内でデータを供給できるデバイスとして定義することができるといったように続く。他の実施形態では、他の測定単位を使用して近隣関係を定量化することができることが企図されている。
【００２７】
所定のＭＭＡＰの実施形態では、いくつかのＤＣＣとＤＣＰは、他のＤＣＣとＤＣＰに対し論理的に隣接することができる。本明細書では、「論理的に隣接する」は、１つのＤＣＣともう１つのＤＣＣ、または１つのＤＣＣと１つのＤＣＰなどの２つのデバイス間の関係であって、１つのデバイスの１つまたは複数のポートが介在するＤＣＣまたはＤＣＰを通さずに他のデバイスの各ポートに直結されるような関係を指す。さらに、所定のＭＭＡＰの実施形態では、いくつかのＤＣＣとＤＣＰは、他のＤＣＣとＤＣＰに対し物理的に隣接することができる。本明細書では、「物理的に隣接する」は、１つのＤＣＣともう１つのＤＣＣ、または１つのＤＣＣと１つのＤＣＰなどの２つのデバイス間の関係であって、それら以外のＤＣＣまたはＤＣＰはいっさいその２つのデバイスの間に物理的に配置されないような関係を指す。
【００２８】
いくつかのＭＭＡＰの実施形態では、論理的にかつ／または物理的に隣接するＤＣＣとＤＣＰなどのデバイスは近隣または近傍デバイスでもある。しかし、いくつかの実施形態では、所定のデバイス間の論理的かつ／または物理的隣接性は、必ずしも所定のデバイス間の近隣関係、または特定の度合いの近隣関係を伴わないことに留意されたい。例えば、一実施形態では、１つのＤＣＣは、相当距離を隔てて配置されているもう１つのＤＣＣに直接接続できる。そのようなペアは、論理的に隣接するが、物理的には隣接せず、一方のＤＣＣから他方のＤＣＣへの信号伝搬時間は長すぎて、近傍の待ち時間要件を満たさないことがある。同様に、一実施形態では、１つのＤＣＣはもう１つのＤＣＣに物理的に隣接できるが、直接は接続されず、したがって、論理的に隣接しない。一方のＤＣＣから他方のＤＣＣへのアクセスは、１つまたは複数の中間ノードをトラバースすることができ、その結果生じる横断遅延が大きすぎて、近傍の待ち時間要件を満たすことができない。
【００２９】
ＭＭＡＰ  １０の所定の実施形態の技術および実装方法に応じて、ＤＣＣの複数のポートの具体的個数だけでなくＤＣＣ  ＲＡＭのサイズも、ＤＣＣの所望の実行速度とサイズ全体についてバランスをとることができる。例えば、ＤＣＣの一実施形態では、４つのＤＣＰタイプのポート、４つのＤＣＣタイプのポート、４Ｋワードのメモリを備える。そのようなＤＣＣの実施形態は、直接メモリ・アクセス（ＤＭＡ）メカニズムを備えるように構成することができる。ＤＭＡメカニズムを使用すれば、ＤＣＰが結果を計算している間に、所定のＤＣＣと他のＤＣＣとの間で、またはＭＭＡＰ  １０の外部のロケーションとの間でデータを効率よくコピーすることができる。
【００３０】
ＭＭＡＰ  １０の一実施形態では、いくつかの異なる方法のうちの１つによりデータと命令をＤＣＣ間で転送することができる。ＭＭＡＰ  １０のすべてのメモリにシリアル・バスを備え、そのようなバスを使用することにより、外部メモリからＭＭＡＰ  １０を初期化したり、ＭＭＡＰデータ構造のテスト機能をサポートすることができる。短距離の転送の場合、データを近傍ＤＣＣに直接移動させる、または近傍ＤＣＣから直接移動させるように所定のＤＣＰをプログラムすることができる。長い距離にわたってデータまたは命令を転送するために、ＤＣＣのネットワーク内で通信経路が動的に生成されかつ破壊される。
【００３１】
そのような長い距離のデータ転送を行うために、ＭＭＡＰ  １０内の相互接続されたＤＣＣのネットワークは通信経路用に交換ルーティング・ファブリック（ＳＲＦ）を構成することができる。そのような実施形態では、ＳＲＦ内の通信経路を管理する方法が少なくとも２つある。第１の方法は、グローバル・プログラミングによるものであり、ソフトウェア制御により（例えば、人間のプログラマまたはルーティング機能を有するコンパイラにより）経路を選択することができ、またＤＣＣ構成コントローラにクロスバーを適宜プログラムする命令コードを書き込むことができる。経路を生成するには、その経路に沿ったすべてのＤＣＣを、特定のルーティング機能により明示的にプログラムすることができる。経路の生成と破壊が頻繁に行われる動的環境では、多数のクロスバー構成コードが必要になることがあり、そのための記憶領域で潜在的に限られるＤＣＣ  ＲＡＭリソースが消費される可能性がある。
【００３２】
通信経路を管理する第２の方法は、「ワームホール・ルーティング」と呼ばれる方法である。ワームホール・ルーティングを実装するために、各ＤＣＣはＳＲＦを通してワームと呼ばれる一連のワードの進行の停止と再開を行う一組のステアリング機能やメカニズムを備える。ステアリング機能はすべての通信経路でふつうに使用し再利用できるため、ＤＣＣ  ＲＡＭを占有する構成コードの量は上述のグローバル・プログラミング法に比べてかなり小さくなると考えられる。ワームホール・ルーティング法では、そのままソフトウェア制御を使用して、経路により使用される特定のリンクを選択することができるが、経路生成（本明細書ではセットアップと呼ぶ）および破壊／リンク解放（本明細書では破棄とも呼ぶ）のプロセスは、ソフトウェアによる介入を最小限に抑えてハードウェアで実装することができる。
【００３３】
経路上のデータ・ワードの潜在的喪失を防ぐため、ＭＭＡＰ  １０の一実施形態では、経路に沿った受信器と送信器との間のフロー制御を実装することができる。フロー制御とは、対応する受信器がもはやデータを受信できなくなった場合に送信器を停止し、対応する受信器がデータ受信可能状態になったときに送信器を再開させることができるメカニズムのことである。経路上のデータの流れの停止と再開は多くの点でワームホール・ルーティング内のワームの進行の停止と再開に似ているため、これら２つを組み合わせて１つの統合されたスキームとすることができる。
【００３４】
一実施形態では、ＭＭＡＰ  １０は、一様なアレイに一緒に接続されている複数のＤＣＰとＤＣＣを備えている。それらのＤＣＰは同一であってもよく、またＤＣＣも同一であってもよい。一様なアレイでは、ＤＣＰの大半は同一であり、ＤＣＰの大半のそれぞれは、ＤＣＣに対し同じ接続数を有することができる。また、一様なアレイでは、ＤＣＣの大半は同一であり、ＤＣＣの大半のそれぞれは、他のＤＣＣとＤＣＰに対し同じ接続数を有することができる。ＭＭＡＰの一実施形態におけるＤＣＰとＤＣＣは、実質的に同質の方法で散在させることができる。本明細書では、実質的に同質な散在とは、ＤＣＰとＤＣＣとの比がアレイの下位領域の大半にまたがって整合している配列を意味する。
【００３５】
実質的に同質な方法で配置された一様なアレイは、予測可能な相互接続パターンが得られる、アレイ間でソフトウェア・モジュールを使い回せるなどのいくつかの有利な特徴を持つことができる。一実施形態では、一様なアレイにより、ＤＣＰとＤＣＣの少数のインスタンスを設計しテストすることができる。その後、ＤＣＣとＤＣＰを含むユニットを加工してから、そのようなユニットを複数回、反復する、つまり「タイリング」を行うことによりシステムを組み立てることができる。そのような手法を採用すると、共通システム要素を再利用することにより設計とテストのコストを低減させることができる。
【００３６】
また、ＤＣＰとＤＣＣの構成可能な性質から、プログラムされる多様な非一様な動作を物理的に一様なアレイ上で実行させることができることにも留意されたい。しかし、他の実施形態では、ＭＭＡＰ  １０は、非一様なＤＣＣとＤＣＰユニットで形成することもでき、規則正しいアレイまたは不規則なアレイ内で、あるいはさらにはランダムに、接続することができる。一実施形態では、ＤＣＰとＤＣＣ相互接続は、回路トレースとして、例えば、集積回路（ＩＣ）、セラミック基板、またはプリント基板（ＰＣＢ）上に実装することができる。しかし、他の実施形態では、そのような相互接続は、例えば、電磁エネルギー（つまり、無線または光エネルギー）の導波路、無線（つまり、導かれない）エネルギー、粒子（電子ビームなど）、または分子の電位など、さまざまな小型の通信リンクのうちのどれかとしてよい。
【００３７】
ＭＭＡＰ  １０は、単一集積回路上に実装することができる。一実施形態では、複数のＭＭＡＰ集積回路を組み合わせて、１つのさらに大きなシステムを作成することができる。ＭＭＡＰ  １０の所定の実施形態は、シリコン集積回路（Ｓｉ−ＩＣ）技術を使用して実装することができ、そのような技術の具体的特徴を示すさまざまな機能を採用することができる。例えば、Ｓｉ−ＩＣチップ上の回路は、薄い平面に限ることができる。それに応じて、ＭＭＡＰ  １０の所定の実施形態では、図１に例示されているようなＤＣＰとＤＣＣの２次元アレイを採用することができる。しかし、異なる配置のＤＣＰとＤＣＣを含む他のＭＭＡＰの実施形態も企図されている。
【００３８】
さらに、Ｓｉ−ＩＣチップ上の利用可能な配線密度は、そのようなチップ間の密度よりもかなり高くすることができ、それぞれのチップは、オンチップ信号とオフチップ信号をインターフェースする特別な入力／出力（Ｉ／Ｏ）回路を周辺に配置することができる。それに応じて、ＭＭＡＰ  １０の所定の実施形態では、チップのコア内でＤＣＰとＤＣＣの一様なアレイからなるわずかに一様性のないアレイ、およびチップの周辺に沿って並べるように変形されたＤＣＰ／ＤＣＰユニットを採用することができる。しかし、異なる配置や組み合わせの一様な、および変形されたＤＣＰ／ＤＣＣユニットを含む他のＭＭＡＰの実施形態も企図されている。
【００３９】
さらに、Ｓｉ−ＩＣ回路により計算オペレーションが実行されると、熱が発生するが、これは、ＩＣパッケージングにより除去することができる。ＩＣパッケージングを大きくするには空間を増やす必要があり、そのためＩＣパッケージングを通過する相互接続部およびＩＣ周辺の相互接続部では経路長に比例する遅延が生じる。したがって、上述のように、非常に大きなＭＭＡＰは、複数のチップを相互接続することにより構成させることができる。このような複数チップＭＭＡＰの実施形態をプログラムするには、チップ間信号遅延がチップ内遅延よりもかなり長くなることを考慮すべきである。
【００４０】
所定のＳｉ−ＩＣ  ＭＭＡＰ  １０の実施形態では、単一チップ上に実装できるＤＣＰとＤＣＣの最大個数は、所定のＳｉ−ＩＣ技術で利用可能な小型化技術と各ＤＣＰとＤＣＣの複雑度により決まる。このようなＭＭＡＰの実施形態では、ＤＣＰとＤＣＣの回路の複雑度は、目標レベルの計算処理効率を達成することを条件として最小限度に抑えるべきである。ＤＣＰとＤＣＣのそのような最小化を、本明細書では合理化と呼ぶ。ＭＭＡＰ  １０の一実施形態では、ＤＣＰの目標レベルの処理効率は、同じＳｉ−ＩＣ技術で製作される最良のデジタル・シグナル・プロセッサ（ＤＳＰ）の算術演算実行ユニットの処理効率に匹敵する。しかし、目標のＤＣＰ処理効率に対する他の参照を使用できる他のＭＭＡＰの実施形態も企図されている。
【００４１】
いくつかの実施形態では、ＭＭＡＰ  １０は、ＤＳＰとＦＰＧＡのアーキテクチャの最もよい機能を採用することができる。ＤＳＰのように、ＭＭＡＰ  １０は、複数の処理ユニットとオンチップ・メモリを備えるプログラム可能なチップとすることができる。しかし、ＤＳＰに関して、ＭＭＡＰ処理ユニットは合理化することができ、それらのユニットのさらに多くがあってもよく、それらの間のデータ移動だけでなくチップ上、チップ外のデータ移動についても帯域幅を最大にする新規な方法で相互接続することができる。ＤＳＰよりも処理ユニットを増やすと、ＭＭＡＰ  １０は、単位時間当たりの乗算回数を増やすことができ、処理ユニットの合理化で使用エネルギーを最小限に抑えることができる。内部並列処理機能を備える多くのＤＳＰはバス指向アーキテクチャであろう。いくつかの実施形態では、ＭＭＡＰ  １０はバスを備えず、むしろ、バス指向アーキテクチャよりも帯域幅全体が著しく高いＳＲＦに埋め込まれた近隣共有ローカル・メモリをＤＣＣなどに備えることができる。
【００４２】
ＦＰＧＡ手法と比べて、いくつかのＭＭＡＰの実施形態は粒度が粗いであろう。例えば、ＭＭＡＰの一実施形態では、オペレーションは自然なワード長（例えば、１６ビット）を有し、計算は、自然なワード長の倍数であるデータを使用して実行した場合に最も効率がよくなることがある。いくつかのＭＭＡＰの実施形態では、ＤＣＰとＤＣＣは、ＦＰＧＡで実現される同等の構造よりも密度を高くすることができ、その結果平均配線長が短く、配線容量が低く、そして使用エネルギーが小さくなる。ＦＰＧＡの実装とは対照的に、いくつかのＭＭＡＰの実施形態では、ＭＭＡＰ内のすべてのＡＬＵをプロセッサ（つまり、ＤＣＰ）の一部とすることができ、オペランドのセットアップおよび結果のＤＣＣ内の周辺高速メモリへの送出が簡単になる。
【００４３】
ＭＭＡＰトポロジおよび通信
図１に例示されているＭＭＡＰ  １０は、図に示されているように、ＤＣＰ間にＤＣＣを散在させることにより、高速メモリへ多数の接続を備えたＤＣＰを設けることができる。このような配置を使用すれば、所定のＤＣＰがＤＣＣ内のメモリにアクセスするのに要する時間を、隔離（つまり、非散在）配置と比べて短くすることができ、このことを本明細書では散在格子配置と呼ぶ。図１の実施形態では、ＤＣＰ対ＤＣＣの比は１：１である。しかし、ＤＣＰ対ＤＣＣの比が異なる他のＭＭＡＰの実施形態も企図されている。
【００４４】
ＤＣＣとＤＣＰとの間の接続は、多数の接続スキームが可能なため図１には明示されていない。所定のＭＭＡＰ実施形態に対するいくつかの可能な接続スキームは以下のものを含むことができる。
【００４５】
１．ＰｌａｎａｒＡ−このスキームでは、各ＤＣＰはそれぞれのそのような近傍ＤＣＣ上のＤＣＰタイプのポートを介してその４つの近傍ＤＣＣに接続することができる。また、各ＤＣＣはそれぞれのそのような近傍ＤＣＣ上のＤＣＣタイプのポートを介してその４つの近傍ＤＣＣに接続することができる。各接続タイプは、一組の並列回路トレースまたは配線で構成することができる。一様なアレイでは、接続タイプ内の配線の数は、アレイ全体にわたって一様なものとすることができる。
【００４６】
２．ＰｌａｎａｒＢ−このスキームは、シリアル・メモリからの初期状態をロードするためにシリアル・バスでＤＣＣとＤＣＰとの間に接続を追加できることを除き、ＰｌａｎａｒＡスキームと同じである。
【００４７】
３．ＰｌａｎａｒＣ−このスキームは、アレイの多数の行と列により区切られたＤＣＣ間に並列接続を追加できることを除き、ＰｌａｎａｒＢと同じである。そのような追加接続により、帯域幅を高め、かつ遠くのＤＣＣとの間の待ち時間を短縮することができる。
【００４８】
４．ＰｌａｎａｒＤ−このスキームは、各ＤＣＣが同じ超立方体の頂点である超立方体の辺を追加接続が表すようにしたＰｌａｎａｒＣの部分集合である。
【００４９】
５．ＰｌａｎａｒＥ−この方式は、多数の接続で第１のものに結合された第２のチップに対し追加接続を行い、２つのアレイが緊密に結合されるようにできるＰｌａｎａｒＣの部分集合である。
【００５０】
６．ＳｔａｃｋｅｄＡ−このスキームは、追加接続で３次元マトリックスをサポートすることができるようなＰｌａｎａｒＣの部分集合である。
【００５１】
異なるタイプと個数の接続を使用してＤＣＣとＤＣＰを異なるトポロジで接続できる追加接続スキームが企図されていることに留意されたい。
【００５２】
図２−ＭＭＡＰ接続スキーム
図２は、ＭＭＡＰ接続スキームの一実施形態を例示するブロック図である。ＭＭＡＰ接続スキーム２０は、複数のＤＣＣとＤＣＰを含み、図１のＭＭＡＰの一部として示すことができる。ＭＭＡＰ接続スキーム２０では、各ＤＣＰは、４つの近傍ＤＣＣに接続されるが、各ＤＣＣは４つの近傍ＤＣＰだけでなく４つの近傍ＤＣＣにも接続される。したがって、ＭＭＡＰ接続スキーム２０は、上述のＰｌａｎａｒＡ接続スキームを図示したものである。
【００５３】
ＭＭＡＰ接続スキーム２０で高帯域幅ポートをサポートするために、ポート間（ＤＣＰとＤＣＣ、またはＤＣＣとＤＣＣ）の接続は、短く（つまり、近傍に限られる）かつワード・ワイドとすることができる、つまり、接続のデータ部内の導電体（線）の数はＡＬＵオペランドで使用されるビットの数と同じである。ＤＣＰとＤＣＣとの接続はアドレス線を含む。ＤＣＣとＤＣＣとの接続は、必ずしもアドレス線を含まないが、フロー制御用の線を備える。
【００５４】
ＤＣＰノードを単純にしておくことにより、大きなアレイ（例えば、ＭＭＡＰの一実施形態では、１６行×１６列＝２５６個のＤＣＰ）を妥当なコストで単一ＶＬＳＩ  ＩＣ上に配置することができる。適当なＶＬＳＩ技術として、シリコンまたはその他の半導体によるバイポーラ・トランジスタを含むまたは含まない相補形金属酸化膜半導体（ＣＭＯＳ）電界効果トランジスタがあるが、これに限定されない。
【００５５】
いくつかのＭＭＡＰの実施形態では、ノード間の通信はプログラマ側の制御下に置くことができる。ＭＭＡＰでは、各ＤＣＰは、データ／命令を近隣ＤＣＣに伝達し、任意選択により、それらのＤＣＣを通して他のＤＣＣとＤＣＰにさらに伝達することができる。小さなブロックのデータの移動に対して、ＤＣＰは連携動作により、アレイを横断してデータを一連−ＤＣＰ毎に一度に１ワードずつ−の転送で移動させることができる。このような方法では、転送元ノードから転送先ノードへの経路内の第１のＤＣＰは、１クロック・サイクルのリード・フェーズで近傍ＤＣＣメモリから読み込み、１クロック・サイクルの書き込みフェーズで他の近傍ＤＣＣに書き込むことができる。経路内の第２のＤＣＰも、同様に、データの読み書きを行うことができ、このプロセスを、データが転送先ノードに到着するまで継続することができる。データは、さらに、経路に沿って転送先ノードに伝搬するときに所定のＤＣＰによりスケーリングまたは正規化することもできる。この方法を使用すると、プログラミングは、必要な場合にデータを移動させるために、アレイを横切る形でバケツ・ブリゲート・ラインとツリーをセットアップすることができる。しかし、距離が長くなり、データ量が増えると、データを搬送するのに何回もの移動が必要になり、したがって多数のＤＣＰが有用な算術演算を実行するのではなく単にデータを移動するだけに大半のサイクルを使ってしまうことがある。
【００５６】
距離の長いブロック移動については、いくつかのＭＭＡＰの実施形態は、ＤＣＰを伴わないＤＣＣ間のメモリ−メモリ転送を行う手段を備えることができる。ＤＣＰは、近傍ＤＣＣ内のＤＣＣタイプのポートに、そのようなポートに関連付けられた特別なＲＡＭアドレスを通して間接的にアクセスすることができる。これにより、ＤＣＰはワームを送出するための新しい経路を作成し、後からそのような経路を破棄するか、またはそれとは別にワームを受け取るようにすることができる。ＤＣＰは、さらに、転送される１ブロック分のデータを近傍ＤＣＣ内のＲＡＭに保存し、その後、近傍ＤＣＣがＤＭＡオペレーションをそのようなオペレーションに関連付けられている特別なＲＡＭアドレスを通して開始するよう指示することもできる。これにより、ＤＣＰは、近傍ＤＣＣがデータのＤＭＡ転送を調整している間に他のタスクを続行することができる。
【００５７】
ＭＭＡＰのさまざまな実施形態は、有用なアルゴリズムを実行するための有利な環境を提供することができる。注目するアルゴリズム（例えば、画像データを分析する）は、ＡＬＵのいくつかの流れ図に分解することができる。それぞれの流れ図は、ＭＭＡＰアレイ上に、複数のフィードバック／フィードフォワード経路を含む、ツリー、ラティス、または任意のネットワークとしてマッピングすることができる。１つのＡＬＵの有限な精度を拡張し、複数のＤＣＰとＤＣＣを組み合わせることにより多ワード長の精度との高い結果を得ることができる。流れ図をＭＭＡＰにマッピングする場合、ノード間の距離に比例するＤＣＰ／ＤＣＣノード間の通信遅延が生じうる。また、マッピングは、通信キューが大きい場合に、または再構成が頻繁な場合に、各ノードにさらに多くのメモリを必要とすることがある。これらの要因は、通信遅延、キュー処理、再構成を考慮する慎重なプログラミングにより補正することができる。
【００５８】
シストリック・アルゴリズムは、ＭＭＡＰのさまざまな実施形態に特に効率よくマッピングできるアルゴリズムの１クラスを表す。シストリック・アルゴリズムは、行列演算、画像処理、信号処理におけるさまざまなアプリケーション向けにすでに開発されている。シストリック・アルゴリズムでは、多数のプロセッサが同期方式で連携し、難しい計算を実行することができる。理想的なアルゴリズム実装では、それぞれのプロセッサは、同じオペレーション（またはオペレーションの小さなループ）をアルゴリズムで必要とするだけ何度も繰り返して実行することができ、データは、データ・ワードの生成と消費がバランスする近隣接続部によりプロセッサのネットワーク内を流れる。生成されるそれぞれの中間結果データ・ワードが後続の計算によりすぐに消費される場合、必要なメモリ容量は最小限で済む。シストリック・アルゴリズムの利点として、合理化されたプロセッサを使用できること、必要メモリ容量を最小限に抑えられること、標準の廉価なＶＬＳＩ技術を使用して算術演算オペレーションを高速化できることが挙げられる。
【００５９】
ＭＭＡＰの一実施形態は、チップごとに多数のプロセッサを有し、かつＭＩＭＤアーキテクチャを採用しており、これは、ＳＩＭＤシステムと分散ＭＩＭＤシステムなどの他の種類のシステムのオペレーションをエミュレートするように構成されている。いくつかの実施形態では、ＭＭＡＰは、チップの異なる領域内で異なるアルゴリズムを同時に実行できる。また、いくつかの実施形態では、節電のため、プログラマ側で少なくとも一部のＤＣＰとＤＣＣに供給するクロックの有効、無効の設定を選択することができ、これにより、未使用のＤＣＰとＤＣＣを無効にすることができる。
【００６０】
動的構成可能プロセッサ
図３は、動的構成可能プロセッサ（ＤＣＰ）の一実施形態を例示するブロック図である。ＤＣＰ  ３００は、図１、図２に示されているＤＣＰの詳細である。ＤＣＰ  ３００は、少なくとも１つの算術論理演算ユニット（ＡＬＵ）３２０を制御するために結合されている命令処理ユニット（ＩＰＵ）  ３１０を備える。ＤＣＰ  ３００は、さらに、複数のマルチプレクサ（本明細書ではｍｕｘとも書く）に結合された複数のデータ入力ポート３０１を備え、さらに、これらのマルチプレクサは、ＡＬＵ  ３２０の少なくとも第１、第２のオペランド入力を選択するためだけでなく、命令処理ユニット３１０のプログラム・ロード経路データを選択するために結合されている。ＤＣＰ  ３００は、さらに、ＡＬＵ  ３２０から結果データを受信するためｍｕｘを介して結合された複数のデータ出力ポート３０２を備えるとともに、命令処理ユニット３１０からアドレス・データを受信するために結合された複数のアドレス・ポート３０３を備える。
【００６１】
アドレス・ポート３０３を、近隣の動的構成可能コミュニケータ（ＤＣＣ）に含まれるＲＡＭデータを読み書きするためのアドレスを伝達するように構成することができる。データ入力ポート３０１とデータ出力ポート３０２を、近隣ＤＣＣとの間でデータの伝達を行うように構成することができる。同期動作モードでは、１クロック・サイクルでデータ出力ポート３０２を介して近隣ＤＣＣに書き込まれたデータが、さらに遅延または調整のオーバーヘッドを生じることなく、直後のクロック・サイクルで近隣ＤＣＰ  ３００のデータ入力ポート３０１を介して読み込まれる。
【００６２】
ＤＣＰ  ３００の例示されている実施形態では、データ入力ポート３０１、データ出力ポート３０２、アドレス・ポート３０３はそれぞれ、４つのポートを備える。さらに、単一のＡＬＵ  ３２０が示されている。しかし、それ以外の個数のデータ入力ポート、データ出力ポート、またはアドレス・ポートを備え、異なる個数のＡＬＵを備えることができる他の実施形態も企図されている。図１に例示されているＭＭＡＰの実施形態などの矩形アレイ内のＤＣＰ  ３００の複数のインスタンスを含むＭＭＡＰの一実施形態では、さまざまなポートを各ＤＣＰノードの４つの辺の回りに均等に分散することができる。
【００６３】
ＤＣＰ  ３００は、データ・ワードに対し算術演算／論理演算ユニットのオペレーションを実行するように構成される。その場合、選択されたオペレーションはＩＰＵ  ３１０により処理中の現在の命令に依存する。自由度の高いプログラミングを可能にするため、ＩＰＵ  ３１０は、それぞれさまざまな相互接続メカニズムを介して相互接続される、複数のアドレス指定可能なロケーション、命令デコーダ３１４、アドレス・ジェネレータ３１６を含む、少なくとも１つの命令メモリ３１２を備える。他の実施形態では、ＩＰＵ  ３１０は複数の命令メモリを備えるか、または追加機能を備えることができることが企図されている。さらに、他の実施形態では、ＩＰＵ  ３１０に例示されている機能は、異なる種類の機能ユニットに分割するか、または単一機能ユニットで実装することができることが企図されている。
【００６４】
ＩＰＵ  ３１０は、プログラム・データを受信し、データ入力ポート３１０に結合されているプログラム・ロード経路を介して命令メモリ３１２内に格納するように構成されてもよい。命令メモリ３１２は、さらに、グローバル・シリアル・バス（図には示されていない）を通して読み書きすることもできる。ＩＰＵ  ３１０は、命令デコーダ３１２により特定の命令の復号化に応じて、データ入力ポート３０１やデータ出力ポート３０２に結合されたさまざまなｍｕｘを制御し、データを近隣ＤＣＣへ、また近隣ＤＣＣから誘導するように構成されてもよい。ＩＰＵ  ３１０は、さらに、アドレス・ジェネレータ３１６により生成されたアドレスをアドレス・ポート３０３を介して近隣ＤＣＣに伝達するように、例えば、そこに配置されているＲＡＭの読み書きを行うように構成されてもよい。アドレス・ジェネレータ３１６は、さらに、命令メモリ３１２からフェッチされ、命令デコーダ３１４により復号化される次の命令アドレスを生成するように構成されたプログラム・カウンタ・レジスタ（図に示されていない）を備えることもできる。
【００６５】
一実施形態では、ＤＣＰ  ３００は、データ・レジスタ・ファイル、データ・キャッシュ、またはデータ・オペランドまたは結果データ用の任意のローカル記憶領域を備えていなくてもよい。このような実施形態では、ＤＣＰ  ３００は、ＤＣＰ  ３００の直の接続先であるＤＣＣに備えられているメモリをデータ・オペランドの読み込み元および結果データの書き込み先の高速記憶媒体として使用するように構成されることができる。いくつかの実施形態では、所定のＤＣＰは、異なる近傍ＤＣＣから同時にまたは異なる時刻に異なるデータを取得することができる。以下で詳しく説明するように、いくつかの実施形態では、所定のＤＣＰは、さらに、所定のＤＣＰの直の接続先でないＤＣＣ内のデータを読み書きするように構成されることもでき、そのために、そのようなリモートＤＣＣから所定のＤＣＰの近隣ＤＣＣへの経路を確立する。
【００６６】
ＤＣＰ  ３００により実装される命令は、算術演算と論理演算オペレーションだけでなく、メタ命令もサポートすることができる。ＤＣＰ命令は十分なビット長を有し、２つのオペランドと１つの結果に対しメモリをアドレス指定し、１クロック・サイクルでそれらの値を読み書きすることができる。一実施形態では、ＤＣＰ  ３００は以下の命令を実装できる。
【００６７】
加算（オペランド・アドレス、オペランド・アドレス、結果アドレス）
減算（オペランド・アドレス、オペランド・アドレス、結果アドレス）
乗算（オペランド・アドレス、オペランド・アドレス、結果アドレス）
乗算して最後の結果に加算（オペランド・アドレス、結果アドレス）
乗算して最後の結果から減算（オペランド・アドレス、結果アドレス）
否定（型、オペランド・アドレス、結果アドレス）
絶対値（型、オペランド・アドレス、結果アドレス）
シフト（型、オペランド・アドレス、結果アドレス）
ＸＯＲ（マスク・アドレス、オペランド・アドレス、結果アドレス）
反転（マスク・アドレス、オペランド・アドレス、結果アドレス）
ジャンプ（条件、ストライド、ＰＣ移動先）
繰り返し（開始、停止、ストライド）
ループ（回数、ＰＣブロックの開始）
条件分岐（検査、移動先）
【００６８】
前命令は、アドレス・ジェネレータ内のインデックス・レジスタを設定するための特殊な命令である。
【００６９】
インデックス格納（インデックス名、値）
ストライド・インデックス（インデックス名、値）
【００７０】
ＤＣＰ  ３００で追加命令、または異なる命令セットを実装することができる他の実施形態も企図されていることに留意されたい。いくつかの実施形態では、１つまたは複数のデータ・オペランドを必要とする所定の命令の実行時に、近隣ＤＣＣ内のメモリに直接アクセスして必要なオペランドにアクセスするように所定のＤＣＰを構成できる。
【００７１】
ＤＣＰ  ３００を、メタ命令を実行するように構成できる。本明細書では、メタ命令とは、命令メモリ３１２などのＤＣＰ命令メモリに格納されている命令に対しオペレーションを実行できる命令のことである。基本メタ命令は、近隣ＤＣＣ内のＲＡＭから命令メモリ３１２をロード（つまり、オーバーレイをロード）することとすることができる。ＤＣＣメモリから命令メモリをロードすることにより、ソフトウェアのプログラミングによりデータと命令との間のメモリの分割を決定することができる。したがって、アプリケーション・プログラマは、利用可能なメモリを最も有効に利用できるように使用しているソフトウェアを最適化することができる。いくつかの実施形態では、ＤＣＰ  ３００は、ＩＰＵ命令メモリを修正する、または例えば検査、エラー分析、および／またはエラー・リカバリのため命令メモリをＤＣＣメモリに保存することができる他のメタ命令を備えることができる。
【００７２】
ＡＬＵ  ３２０を、特定のＤＣＰ  ３００の実施形態でサポートされている命令により定義されたオペレーションを含む、少なくとも固定小数点数体系に対する算術演算を実行するように構成できる。例えば、一実施形態では、ＡＬＵ  ３２０は、固定小数点数の加算、減算、乗算、積和、論理、シフトのオペレーションを実行するように構成される。いくつかの実施形態では、ＡＬＵ  ３２０は、拡張精度算術演算をサポートするため、前の計算から生じるキャリー・ビットを保持するように構成される。他の実施形態では、ＡＬＵ  ３２０は、特定のアルゴリズムを実装するため選択された浮動小数点算術演算または専用オペレーションを実行するように構成させることができる。
【００７３】
動的構成可能コミュニケータ
図４は、動的構成可能コミュニケータ（ＤＣＣ）の一実施形態を例示するブロック図である。「動的構成可能コミュニケータ」と「動的構成可能通信要素」という用語は、本明細書では同義であることに留意されたい。ＤＣＣ  ４００は、図１、図２に示されているＤＣＣの詳細である。ＤＣＣ  ４００は、ＳＲＡＭ制御回路４１５に結合された複数のｍｕｘを介してマルチポート・スタティックＲＡＭ（ＳＲＡＭ）４２５に結合されている複数のＤＣＰ入力ポート４０１を備える。マルチポートＳＲＡＭ  ４２５は、複数のアドレス・デコーダ４２０に結合されるとともにＳＲＡＭ制御回路４１５と複数のＤＣＰ出力ポート４０２にも結合される。アドレス・デコーダ４２０は、複数のＤＣＣポート・デコーダ４１０とＳＲＡＭ制御回路４１５に結合された複数のｍｕｘを介してＳＲＡＭアドレスを受け取るように結合されている。ＤＣＣポート・デコーダ４１０は、複数のＤＣＰアドレス・ポート４０３からＳＲＡＭアドレスを受け取るように結合されている。
【００７４】
ＤＣＣ  ４００は、さらに、複数のｍｕｘと複数の入力レジスタ４５４を介してクロスバー４５０と、ルーティング論理回路４３５に結合された複数のＤＣＣ入力ポート４０４を備える。クロスバー４５０は、ルーティング論理回路４３５に結合され、ルーティング論理回路は通信コントローラ４３０に結合される。通信コントローラ４３０は、複数のｍｕｘを介してアドレス・デコーダ４２０に、プログラム・ロード経路を介してマルチポートＳＲＡＭ  ４２５に結合される。クロスバー４５０は、さらに、複数の出力レジスタ４５５を介して複数のＤＣＣ出力ポート４０５に結合される。
【００７５】
出力レジスタ４５５は、複数のｍｕｘを介してマルチポートＳＲＡＭ  ４２５に結合される。ＤＣＰ入力ポート４０１とマルチポートＳＲＡＭ  ４２５は、それぞれ、入力レジスタ４５４によりルーティング論理回路４３５に結合された複数のｍｕｘを介してクロスバー４５０にそれぞれ結合されている。ルーティング論理回路４３５は、さらに、ＤＣＣポート・デコーダ４１０と出力レジスタ４５５に結合される。
【００７６】
ＤＣＰ入力ポート４０１とＤＣＰ出力ポート４０２を、それぞれ、データをＤＣＣ  ４００の近隣ＤＣＰから受信し、データをそこへ送信するように構成することができる。ＤＣＰアドレス・ポート４０３は、ＤＣＣ  ４００の近隣ＤＣＰからアドレスを受信するように構成することができる。ＤＣＣ入力ポート４０４とＤＣＣ出力ポート４０５を、それぞれ、データをＤＣＣ  ４００の近隣ＤＣＣから受信し、データをそこへ送信するように構成することができる。ＤＣＣ  ４００の例示されている実施形態では、ＤＣＰ入力ポート４０１、ＤＣＰ出力ポート４０２、アドレス・ポート４０３、ＤＣＣ入力ポート４０４、ＤＣＣ出力ポート４０５はそれぞれ、４つのポートを備える。しかし、他の個数のＤＣＰ入力ポート、ＤＣＰ出力ポート、アドレス・ポート、ＤＣＣ入力ポート、またはＤＣＣ出力ポートを備える他の実施形態も企図されている。
【００７７】
マルチポートＳＲＡＭ  ４２５は複数のアドレス指定可能なロケーションを含み、かつ近傍ＤＣＰへの高帯域幅データ転送を行えるように構成される。マルチポートＳＲＡＭ  ４２５は、これにより、ＤＣＣ  ４００に結合されている近傍ＤＣＰのそれぞれについて共有レジスタ・ファイルとして効果的に使用することができる。マルチポートＳＲＡＭ  ４２５は、さらに、複数のリード・ポート、ライト・ポート、アドレス・ポートを介して複数の同時実行リード・アクセスとライト・アクセスをサポートするように構成される。特定の一実施形態では、マルチポートＳＲＡＭ  ４２５は、複数のアドレス指定可能なロケーション内に格納されている複数の値をほとんど同時に複数の近傍ＤＣＰに供給し、複数の近傍ＤＣＰから受け取った複数の値をほとんど同時に複数のアドレス指定可能なロケーションに書き込むように構成される。
【００７８】
アドレス・デコーダ４２０は、所定のアクセスのアドレスを、例えば、完全に復号化された行および列アドレスなど、高速でマルチポートＳＲＡＭ  ４２５とインターフェースするのに好適な形式に復号化することができる。ＳＲＡＭ制御回路４１５は、例えば、適切なリード・ポートおよびライト・ポートを有効にする方法などにより、読み込みおよび書き込み時にマルチポートＳＲＡＭ  ４２５の動作を制御するようになっている。ＳＲＡＭ制御回路４１５は、さらに、マルチポートＳＲＡＭ  ４２５に送られるアドレスとデータの送信元を制御するようにもなっている。ＳＲＡＭ制御回路４１５では、マルチポートＳＲＡＭ  ４２５の所定のアドレス・ポートに関し、ＤＣＣポート・デコーダ４１０を介してアドレス・ポート４０３により供給されるアドレスまたは通信コントローラ４３０により供給されるアドレスを使用するようにアドレス・デコーダ４２０に指令することができる。同様に、マルチポートＳＲＡＭ  ４２５の所定のライト・ポートに対し、ＳＲＡＭ制御回路４１５では、ＤＣＰ入力ポート４０１または出力レジスタ４５５から書き込みデータを選択するようマルチポートＳＲＡＭ  ４２５に指令することができる。
【００７９】
例示されている実施形態では、ＤＣＣ  ４００は、単一のマルチポートＳＲＡＭ  ４２５を備える。他の実施形態では、複数のマルチポートＳＲＡＭを備えること、さらに、スタティックＲＡＭ以外のメモリ技術を採用できることをも企図されている。さまざまな実施形態において、多数のメモリ構造編成のどれかを使用することによりマルチポートＳＲＡＭの機能を実現できる。例えば、一実施形態では、複数のメモリ・バンクを採用することができ、各バンクは１つまたは複数のポートを備えることができる。他の実施形態では、複数のＳＲＡＭメモリをＤＣＣ内で採用することができ、それぞれのＳＲＡＭは異なる数のポートを備えることができる。一実施形態では、ＤＣＣ  ４００は、さらに、マルチポートＳＲＡＭ  ４２５をロードまたはアンロードするようになっている低帯域幅のシリアル・ポート（図には示されていない）を備えることもできる。このようなシリアル・ポートは、例えば、フード・ローダ、検査、デバッグに使用することができる。
【００８０】
クロスバー４５０は、複数の入力ポートと複数の出力ポートを備えることができ、入力ボードから１つまたは複数の出力ポートへのデータの経路を選択できるようになっている。クロスバー４５０により実行される特定のデータ・ルーティングは、含まれるクロスバー構成レジスタ（ＣＣＲ）４５１の状態によって決まり、実際に所定の時刻において特定のルーティング機能に応じてルーティング論理回路４３５によりプログラムすることができる。通信コントローラ４３０は、ルーティング論理回路４３５に特定のルーティング機能をプログラムするようになっている。通信コントローラ４３０とルーティング論理回路４３５の機能は、本明細書では、ルーティング・エンジンと総称することができる。例示されている実施形態のようにルーティング・エンジンを階層として実装すると、ルーティング論理回路４３５により実行されるルーティング機能は高速動作が可能になるが（例えば、１クロック・サイクルの一部分以内）、その一方で通信コントローラ４３０を利用することで、ルーティング・パラメータを複数のクロック・サイクルにまたがって自由に変更することができる。
【００８１】
一実施形態では、ＣＣＲ  ４５１を、クロスバー４５０の出力ポート毎に１グループとして、ビットの複数のグループに分割することができる。グループ内のビットの個数は、少なくとも、クロスバー入力ポートのうちの１つを十分選択できる数であればよい。選択された出力レジスタ４５０がマルチプレクサを通過する場合（例えば、複数のＤＣＣリンクのうちから選択するために）、マルチプレクサを構成するために１グループ毎に追加のビットが必要がある（つまり、特定のリンクを選択するために）。グループ毎の少なくとも１つの追加ビットを設け、出力レジスタ４５５のトランスペアレンシを設定することができる。図７の説明とともに以下で詳しく説明するように、出力レジスタ４５５のトランスペアレンシは、ルーティング論理回路４３５から出力レジスタ４５５に伝達される出力ラッチ信号により制御することができ、これを使用して、ＤＣＣ  ４００内を伝搬するデータ・ワードの遅延を短くすることができる。また、図９の説明とともに以下で詳しく説明するように、入力レジスタ４５４のトランスペアレンシは、ルーティング論理回路４３５から入力レジスタ４５４に伝達される入力ラッチ信号により制御することができ、これを使用して、ＭＭＡＰ内のフロー制御を行うための方法を実現することができる。一実施形態では、ＣＣＲ  ４５１は、出力レジスタ４５５毎に１つのトランスペアレンシ・ビットを含むことができる。このような実施形態では、ＣＣＲ  ４５１は、それぞれの出力レジスタ４５５を入力レジスタ４５４のうちの各１つにマッピングし、各出力レジスタ４５５のトランスペアレンシ状態をそのそれぞれの入力レジスタ４５４に関連付けることができる。
【００８２】
ＣＣＲ  ４５１は、１クロック・サイクルのすべてのフェーズ毎に更新される。ＣＣＲ  ４５１は通信コントローラ４３０を通して決定論的プログラミングされる。その通信コントローラはプログラム・ロード経路を通してマルチポートＳＲＡＭ  ４２５に結合されている。それとは別に、ＣＣＲ  ４５１のプログラミングは、ルーティング論理回路４３５に結合されている、ＤＣＣ入力ポート４０４を通して届いた特別な制御ワードにより決定されてもよい。制御ワードはルーティング論理回路４３５により解釈され、ルーティング論理回路４３５は制御ワードを通信コントローラ４３０にも送る。
【００８３】
通信コントローラ４３０は、ＤＣＣ入力ポート４０４のうちの１つまたは複数からＤＣＣ出力ポート４０５のうちの１つまたは複数へのデータの経路選択を行うようにクロスバー４５０に指令することができ、それにより、ＭＭＡＰアレイを通る経路に沿ってデータを中継することができる。ＤＣＣ  ４００は、データ用の追加通信経路を用意することができる。例示されている実施形態では、マルチポートＳＲＡＭ  ４２５は、複数のｍｕｘつまりマルチプレクサを介してＤＣＰ入力ポート４０１または出力レジスタ４５５からライト・ポートでデータを受け取ることができる。これらのマルチプレクサがあるため、通信コントローラ４３０は、マルチポートＳＲＡＭ  ４２５が他の何らかの手段によりアイドル状態にされている間にマルチポートＳＲＡＭ  ４２５にアクセスすることができる。通信コントローラ４３０のプログラミングにより、データがマルチポートＳＲＡＭ  ４２５からＤＣＣ出力ポート４０２のうちの１つに送られるように指令するか、または汎用マイクロコンピュータ（ＧＰＭＣ）の直接メモリ・アクセス（ＤＭＡ）機能と似た方法で、ＤＣＣ入力ポート４０４のうちの１つから読み込まれたデータがクロスバー４５０を通して経路選択され、マルチポートＳＲＡＭ  ４２５に書き込まれるように指令することができる。プログラム・ロード経路により、通信コントローラ４３０は、プログラム・オーバーレイをマルチポートＳＲＡＭ  ４２５から通信コントローラ４３０の内部の命令用ＲＡＭ（図に示されていない）に動的にロードすることができる。
【００８４】
さらに、例示されている実施形態では、ＤＣＣポート・デコーダ４１０を使用することにより、ＤＣＰがＤＣＣ出力ポート・アクセス要求をルーティング論理回路４３５に書き込んだことを検出することができる。ＤＣＣ出力ポート４０５のうちの１つが要求された場合、ルーティング論理回路４３５は、ＤＣＰ入力ポート４０１を介して要求側ＤＣＰから受け取ったデータ・ワードを複数のマルチプレクサを介してクロスバー４５０に送ることができる。この機能により、所定のＤＣＰは、最初にデータ・ワードをマルチポートＳＲＡＭ  ４２５に格納せずにＤＣＣ出力ポート４０５を介してデータを他のＤＣＣに送信することができる。
【００８５】
ＭＭＡＰのクロック同期
いくつかの実施形態では、ＭＭＡＰはマスタ・クロックを備え、これをＭＭＡＰアレイ内のすべてのＤＣＰとＤＣＣノードに分配することができる。所定のＤＣＰまたはＤＣＣノード内でのマスタ・クロックの使用は、ＭＭＡＰプログラマ側で構成可能である。マスタ・クロックは、従来の方法で、同期データ転送とノード・オペレーションのシーケンス動作のための共通基準として使用できる。同期データ転送は、プログラマは信号伝搬タイミングの詳しい内容を無視できるという点で都合のよい動作モードといえる。同期データ転送では、すべての信号が許容可能な立ち上がりおよび立ち下がりの制限時間内およびノイズ・マージンの範囲内でその転送先に到達し、正しい回路オペレーションが行われるように、マスタ・クロックのクロック周期を十分に長く設定する必要がある。ＭＭＡＰ回路の設計とテスト時に、回路内の最長の信号遅延を決定し、それにより、回路が信頼できる動作をする最高のクロック周波数を決定することができる。
【００８６】
ＭＭＡＰの一実施形態では、各ＤＣＰまたはＤＣＣノードによるマスタ・クロックの使用は、クロック制御レジスタ（図に示されていない）で指定されているようなそれぞれのノードの個別構成により決定することができる。そのようなクロック制御レジスタは、ＤＣＰノードの命令処理ユニット内に配置され、特別な命令により書き込むことができる。基本クロック構成の１つの選択肢は、特定のソフトウェア・プログラムの実行時に使用されないＤＣＰとＤＣＣに供給されるクロックをオフにして、消費電力を節約することができる。また、ＤＣＣの一部はトランスペアレト・モードの一組のレジスタで操作するようになっているため、クロックなしでも動作可能である。いくつかのＭＭＡＰの実施形態では、チップ上のノードの一部または全部を純粋な組み合わせ論理回路のように動作するようにすることも可能である。このような実施形態では、節電のため、ソフトウェア・プログラムは、全ノードの初期化が済んだ後マスタ・クロックをオフにするようになっている。このプログラミングとオペレーションのモードはＦＰＧＡと同様のものであり、プログラマは、例えばデータ喪失、競合状態、行き詰まりの停止状態に対する対策をさらに講じる必要があるであろう。
【００８７】
同期ＭＭＡＰ動作モードでは、ＤＣＰとＤＣＣへのデータ転送ならびにＤＣＰとＤＣＣからのデータ転送は、マスタ・クロック・サイクルと同期し、これも、本明細書ではクロック・サイクルと呼ぶことがある。クロック・サイクルは、多数のフェーズに編成することができる。一実施形態では、クロック・サイクルは、４つのフェーズに編成することができ、それにより、ＤＣＣ  ４００内のマルチポートＳＲＡＭ  ４２５のメモリ・アクセス制御論理回路を簡素化することができる。マルチポートＳＲＡＭ  ４２５は、ＤＣＰリード、ＤＣＰライト、ＤＣＣリード、およびＤＣＣライトという４種類のメモリ・アクセスに対応できる。ＤＣＣリードおよびライトは、クロスバー４５０を通してデータを渡すことができるので、Ｘバー・リードおよびＸバー・ライトとそれぞれ表される。１つのメモリ・アクセス・タイプがそれぞれのフェーズに割り当てられる場合に合理化された制御回路が得られる。他の実施形態では、異なる数およびタイプのメモリ・アクセスを使用する、クロック・サイクルを異なる数のフェーズに分ける、または複数のメモリ・アクセス・タイプを所定のフェーズに割り当てることができることも企図されていることに留意されたい。さらに、他の実施形態では、複数のマスタ・クロック信号を用意し、そのようなそれぞれのマスタ・クロック信号を異なるフェーズに分け、それを異なる機能に関連付けることができることも企図されている。
【００８８】
図５−メモリ・アクセス・タイプの割り当てのタイミング図
図５は、メモリ・アクセス・タイプを１クロック・サイクルに割り当てることの一実施形態を例示するタイミング図である。クロック・サイクル５００は、それぞれフェーズＡからフェーズＤで表される４つの順次的なフェーズを含む。図３から図５をまとめて参照すると、クロック・サイクル５００では、ＤＣＰ  ３００などのＤＣＰは、リード・アクセスのみについてはフェーズＡで、ライト・アクセスのみについてはフェーズＤで、マルチポートＳＲＡＭ  ４２５などのメモリに対する排他的アクセス権を有することができる。これらの割り当ては、図５では「ＳＲＡＭからのＤＣＰリード」および「ＳＲＡＭへのＤＣＰライト」とそれぞれ表されている。クロスバー４５０などのＤＣＣクロスバーは、ライト・アクセスのみについてはフェーズＢ、リード・アクセスのみについてはフェーズＣで、マルチポートＳＲＡＭ  ４２５などのメモリへの排他的アクセス権を有することができる。これらの割り当ては、図５では「ＳＲＡＭへのＸバー・ライト」および「ＳＲＡＭからのＸバー・リード」とそれぞれ表されている。異なるタイプの機能に割り当てられたクロック・サイクルの異なる数のフェーズを含むことができる他の実施形態も企図されていることに留意されたい。
【００８９】
フェーズＢとＣの間、ＤＣＰは、図５でそれぞれ「ＤＣＰ  ＡＬＵフェーズ１」および「ＤＣＰ  ＡＬＵフェーズ２」と表されるＡＬＵオペレーションを実行することができる。フェーズＤとＡの間、データはＤＣＣ間で転送することができる。メモリは同じフェーズで読み込みと書き込みを行えないので、リード・アクセス用のアドレス復号化論理回路を、アドレス・デコーダ４２０でライト・アクセス用のアドレス復号化論理回路と時分割することができる。また、ＤＣＰとＤＣＣも同じフェーズでメモリにアクセスできないので、ＤＣＰアクセス用のアドレス復号化論理回路を、アドレス・デコーダ４２０でＤＣＣアクセス用のアドレス復号化論理回路と時分割することができる。このタイミング関係により、それぞれのＤＣＣ  ４００内のアドレス・デコーダ４２０のサイズと複雑度を最小限に抑えることができ、このためＩＣの面積と消費電力を低減することができる。異なるタイミング関係やそれに対応して異なるアドレス・デコーダの実装を含むことができる他の実施形態も企図されている。
【００９０】
２つ以上のＤＣＰが所定のマルチポートＳＲＡＭ  ４２５の同じロケーションに書き込もうとした場合（つまり、所定のＤＣＣ  ４００が同時にアドレス・ポート４０３のうちの少なくとも２つで同じアドレス値を受け取った場合）、メモリ・アクセス・エラーが発生する可能性があることに留意されたい。多数のＳＲＡＭ実装において、メモリ・アクセス・エラーは、同じロケーションが同時に読み書きされた場合にも発生しうる。クロスバー４５０がマルチポートＳＲＡＭ  ４２５に書き込んでいるときに、類似のエラーが発生することがある。一実施形態では、メモリ・アクセス・エラーは、ソフトウェアのプログラミングだけで防止できるが、他の実施形態では、ハードウェアを追加実装してそのようなエラーを防止することができる。ソフトウェアによるプログラミングの実施形態では、そのＳＲＡＭにアクセスするプログラムすべてが決定論的であり、開始の仕方が同期している場合、特定のマルチポートＳＲＡＭ  ４２５のメモリ・アクセス・エラーを回避することができる。本明細書では、決定論的プログラムとは、任意の命令に到達するのに必要な正確なサイクル数で予測可能なプログラムのことである。プログラムは、実行に必要なサイクルの数が割り込みまたはデータ依存関係の影響を受けない場合に決定論的である。ソフトウェア・プログラミングの一実施形態では、同期を外れた可能性のあるそれぞれのプログラム・スレッド（例えば、特定のＤＣＰ上で実行されるプログラム）に対し共有メモリの次のアクセスの前に再同期処理が行われた場合に、厳格なプログラム決定論的メカニズムがなくても、メモリ・アクセス・エラーを回避することができる。
【００９１】
いくつかのＭＭＡＰの実施形態では、すべてのプログラム・スレッドがソフトウェアの設計により同期を保つ完全決定論的プログラミングは、同期処理、アービトレーション処理、またはインターロック処理（ハンドシェイク）のステップまたは回路が必要ないため、非常に効率がよい。しかし、アプリケーションのソフトウェアのすべてを単一のＩＣで実行すると効率が高いが、他のＭＭＡＰの実施形態ではこれを活かすことができる。このような単一ＩＣの実施形態では、ＤＣＰの一部のサブセットによりプログラム・スレッドの脱同期化を引き起こすおそれのある割り込みおよびデータ依存関係を採用し、特定のアプリケーション・ソフトウェアとインターフェース機能の要件を緩和することができる。しかし、ソフトウェアとハードウェアの設計により、そのような脱同期化の可能性を考慮し、脱同期化を生じそうなプログラム・スレッドが他のプロセスとハンドシェイク・ステップを十分に実行させられる命令帯域幅を備えることができる。
【００９２】
交換ルーティング・ファブリック内の通信経路
いくつかのＭＭＡＰの実施形態では、距離が長い通信（つまり、隣接するＤＣＰとＤＣＣを超える距離の通信）は、本質的に論理的チャネルとすることができる経路によりサポートすることができる。それぞれの経路は、一方向にのみデータを搬送することができ、双方向通信が必要な場合には、第２の経路を反対方向に確立することができる。一般に、ＭＭＡＰの実施形態は、複数の物理的接続を空間分割多重化または時分割多重化することにより形成されたＤＣＣのペアの間の複数の接続リンクを備えることができる。経路は、このような接続リンク上に確立することができる。しかし、経路は、いったん確立されてしまうと、それが使用する接続リンクまたは存続している間の結合先であるＤＣＣを変更することはできない。したがって、それぞれの経路は、ＤＣＣと接続リンクの順序列として、例えば、第１のまたは転送元のＤＣＣ、第１の接続リンク、第２のＤＣＣ、第２の接続リンク、第３のＤＣＣ、第３の接続リンク、．．．、最後のまたは転送先ＤＣＣという列として、一意に定義することができる。一実施形態では、ＭＭＡＰ内のすべての経路の集合は、図４のＣＣＲ  ４５１などのすべてのＤＣＣ内のすべてのクロスバー構成レジスタの状態により一意に定義することができる。
【００９３】
ＭＭＡＰの動的構成をサポートするために、経路を素早く生成し素早く破壊することができる。いくつかの実施形態では、経路の生成と破壊は、所定のＤＣＰまたは所定のＤＣＣのいずれかにより開始することができる。例えば、所定のＤＣＣを、ＤＣＰの介入なしで他のＤＣＣへのＤＭＡ転送を実行するように構成することができ、したがって、経路の生成と破壊を行うように構成できる。動的な経路生成と破壊を実行する２つの方法は、グローバル・プログラミングとワームホール・ルーティングを含む。グローバル・プログラミングによる経路の生成について説明し、その後、多くのＭＭＡＰ経路に共通のモードとフロー制御機能について説明する。ワームホール・ルーティング法の説明は、モードとフロー制御の説明の後に行う。
【００９４】
グローバル・プログラミング法を使用した経路の生成またはセットアップでは、ＭＭＡＰ内のすべての経路をソフトウェア制御により定義する必要があり、またそのような各経路は、データ転送のために使用される前に構成しておく必要がある。これは、プログラマが手動で行うか、または自動的に、例えば、ルーティング・コンパイラまたは補助ソフトウェアにより、あるいは機能コードがすでに経路セットアップを含んでいるライブラリ関数を選択することにより行うことができる。ＭＭＡＰ内で経路全体を同時に使用する場合、プログラマ側で、ハードウェアで利用できる以上の通信リンク・リソースを使用しないようにする必要がある。それとは別に、ソフトウェア・ツールを使用して、リンク・リソースの使用度を明らかにすることもできる。
【００９５】
グローバル・プログラミングにより単一の経路を生成するために、複数の命令を、経路に沿って存在するＤＣＣ内の図４の通信コントローラ４３０などの通信コントローラにロードすることができる。これらの命令は、経路内の各リンクに関連付けられている適切なクロスバー構成レジスタ４５１のビット・グループをロードすることができる。いくつかの実施形態では、これらの命令は、この作業を即座に実行するか、または順次実行するが、他の実施形態では、何らかの種類のトリガ信号の到着を待つことができる。さまざまな実施形態において、経路がいったん確立された後に中断されないようにハードウェアで保護することができる場合もできない場合もある。したがって、一度に１つの経路のみが所定のリンクに割り当てられるようにするのはプログラマまたはルーティング・ソフトウェア側の役目であるとしてよい。すべてその経路に沿って存在するＤＣＣ内のクロスバー構成レジスタ４５１が設定された後、通信経路は完全であり、データ転送に使える状態になっている。経路は、もはや必要でなくなったら、経路に含まれるすべてのＤＣＣのクロスバー構成レジスタ内の関連するビット・グループを変更することにより破壊することができる。それとは別に、既存の経路をいつまでも手を加えずそのままにしておくこともでき、既存の経路が必要がなくなった後必要に応じて単純に新しい経路で経路のＣＣＲビット・グループを上書きすることができる。
【００９６】
いくつかのＭＭＡＰの実施形態では、経路に沿ったデータ伝送に対し少なくとも２つのモード、つまり完全同期モードと部分的トランスペアレト・モードを備えることができる。いくつかの実施形態では、図４のＤＣＣ  ４００などの特定のＤＣＣで使用しているモードは、図４のＣＣＲ  ４５１などのＤＣＣクロスバー構成レジスタに含まれるトランスペアレンシ・ビットによりプログラムすることができる。他の実施形態では、データ伝送モードを他の手段によりプログラムできることも企図されている。
【００９７】
図６−同期データ伝送モードのタイミング図
図６は、同期データ伝送モードの一実施形態のオペレーションを例示するタイミング図である。図６で、多数のマルチ・フェーズ・クロック・サイクルが横軸に沿って例示されている。例示されているクロック・サイクルは、図５のクロック・サイクル５００の実施例となっている。ＭＭＡＰ内のＤＣＣの選択されたサブユニットは、縦軸に沿って例示されており、タイミング図の本体の中に、選択されたサブユニットを通るデータの進行が例示されている。
【００９８】
図４から図６をまとめて参照すると、完全同期データ伝送モードでは、出力レジスタ４５５は、ルーティング論理回路４３５から伝達された出力ラッチ信号によってクロック・サイクル毎にクロックされるようになっている。データ・ワードは、転送元ノードから転送先ノードへの経路内の各ＤＣＣのそれぞれの出力レジスタ４５５内にバッファすることができる。さらにこの経路を下って条件の阻止がなければ、ルーティング論理回路４３５は、経路内の各ＤＣＣの入力レジスタ４５４をトランスペアレトにしている。本明細書では、トランスペアレトなレジスタ・オペレーションとは、レジスタへの入力が、クロックまたはその他の信号によりゲートされずに、またはそれらの信号と同期せずに、直接そのレジスタの出力に渡されるオペレーション・モードを意味する。トランスペアレト・モードで動作する場合、レジスタの入力での信号の変化は、レジスタ回路内を伝搬した直後にそのレジスタの出力に反映されるようにできる。
【００９９】
例えば、上述のグローバル・プログラミング法により完全同期伝送経路がセットアップされた後、データは次のように経路をトラバースすることが可能である。まず、転送元ＤＣＰが、Ｗ１と表されている第１のワードを近隣ＤＣＣ  ４００のマルチポートＳＲＡＭ  ４２５内のＳＲＡＭ  １転送元メモリ・ロケーションに書き込むことができる。図６では、この書き込みは、クロック・サイクル１のフェーズＤで実行するが、簡単にするため示していない。第１のワードＷ１は、フェーズＡ、Ｂ、Ｃを通してロケーションＳＲＡＭ  １に保持することができる。近隣ＤＣＣのクロスバー４５０は、図６ではＸバー１と表されている。Ｘバー１は、クロック・サイクル２のフェーズＣでデータ・ワードＷ１を読み込み、第２のＤＣＣへの伝送を行うフェーズＤ、Ａ、Ｂ、Ｃで出力レジスタ４５５のうちの１つに保持することができる。第２のＤＣＣのクロスバー４５０は、図６ではＸバー２と表されている。Ｘバー２は、クロック・サイクル３のフェーズＣでデータ・ワードＷ１をラッチし、さらに下流への伝送を行うフェーズＤ、Ａ、Ｂ、Ｃで出力レジスタ４５５のうちの１つに保持することができる。
【０１００】
図６で、各Ｘバーについて示されている波形は、それぞれの出力レジスタの出力での変化を反映する。伝送時のデータ・ワードは、所定のフェーズＣで所定の出力レジスタ４５５にバッファすることができるため、経路は、すでに受け取っているデータ・ワードを失わずにＳＲＡＭ転送元メモリ・ロケーションを介して前のＤＣＣから、またはＤＣＰから次のデータ・ワードを受け取ることができる。データ・ワードは、経路に沿った出力レジスタ４５５内にバッファすることができる。転送先ＤＣＣのクロスバー４５０は、図６ではＸバー４と表されている。伝送時のデータ・ワードが転送先ＤＣＣに到達した場合、Ｘバー４は、サイクル６のフェーズＢで転送先マルチポートＳＲＡＭ  ４２５のＳＲＡＭ  ４転送先メモリ・ロケーションにデータ・ワードＷ１を書き込むことができる。ＳＲＡＭ  ４は、フェーズＣ、Ｄ、Ａでデータ・ワードＷ１を保持し、転送先ＤＣＰがサイクル７のフェーズＡでＳＲＡＭ  ４からデータ・ワードＷ１を読み込めるようにできる。この経路を使い、次のクロック・サイクルで次のデータ・ワードを送出することができ、これはいつまでも繰り返すことができる。転送元のロケーションＳＲＡＭ１と転送先のロケーションＳＲＡＭ  ４との間のデータ転送では４つの介入するクロスバーが例示されているが、所定のデータ転送は任意の個数のＤＣＣ内の任意の個数のクロスバーをトラバースできることに留意されたい。
【０１０１】
図７−トランスペアレト・モードのデータ転送
図６に例示されているデータ転送の実施例を参照すると、通信経路内のいくつかのＤＣＣの入力レジスタ４５４および出力レジスタ４５５をトランスペアレト・モードにした場合、データの送出を高速に行えるように経路をセットアップすることができる。
【０１０２】
図７は、トランスペアレト・データ伝送モードのいくつかの実施形態のオペレーションを例示するタイミング図である。図７で、多数のマルチ・フェーズ・クロック・サイクルが横軸に沿って例示されている。例示されているクロック・サイクルは、図５のクロック・サイクル５００の実施例となっている。ＭＭＡＰ内のＤＣＣの選択されたサブユニットは、縦軸に沿って例示されており、タイミング図の本体の中に、選択されたサブユニットを通るデータの進行が例示されている。
【０１０３】
図７は、図６に示されているように、トランスペアレトレジスタ構成の２つの他の場合について、転送元のロケーションＳＲＡＭ  １と転送先のロケーションＳＲＡＭ  ４との間の同じデータ転送の経路の実施例を示している。図４および図７をまとめて参照すると、第１の場合では、Ｘバー１に関連付けられている出力レジスタ４５５は、同期または「クロック同期」として構成され、Ｘバー２から４に関連付けられている入力レジスタ４５４と出力レジスタ４５５はトランスペアレトになっている。図６の完全同期の実施例とは異なり、図７は、第１の場合について、データ・ワードＷ１は、Ｘバー１の出力レジスタ４５５から開始した後、Ｘバー２から４の出力レジスタ４５５内をトランスペアレトに伝搬し、所要時間はＤＣＣ論理回路と相互接続部内を伝搬するのに必要な時間のみであることを例示している。図７は、第１の場合について、データ・ワードＷ１は非常に短い時間でＸバー４のトランスペアレト出力レジスタ４５５に届き、クロック・サイクル３のフェーズＢでセットアップが行われ、そこで、ロケーションＳＲＡＭ  ４に書き込まれることを例示している。プログラマは、この場合にタイミング・マージンが適切であり、エラーなしでデータ転送を完了できるかを判別することができる。
【０１０４】
第２の場合、Ｘバー４と関連する出力レジスタ４５５は、トランスペアレトではなく同期的として構成されている。この場合、図７は、データ・ワードＷ１はサイクル３のフェーズＣでＸバー４の出力レジスタ４５５により捕捉され、サイクル３のフェーズＤからサイクル４のフェーズＣまでそれらのレジスタの出力に保持されることができることを例示している。この構成では、サイクル４のフェーズＢ内のロケーションＳＲＡＭ  ４にデータ・ワードＷ１を書き込むのに十分なマージンを設けることができる。第２の場合であっても、データ・ワードＷ１は、図５に例示されている完全同期の場合の６番目のサイクルとは対照的に、４番目のサイクルでロケーションＳＲＡＭ  ４に書き込むことができる。長い経路では、トランスペアレト・データ伝送モードのデータ転送により得られる時間の節約はさらに大きくなる。
【０１０５】
図８−構成可能モード・データ伝送
図８は、ＭＭＡＰの構成可能モード・データ伝送の一実施形態のオペレーションを例示する流れ図である。図１、４、７、８をまとめて参照すると、オペレーションは転送元ノードから転送先ノードヘの経路が構成されるブロック８００から始まる。一実施形態では、転送元ノードをＤＣＰとすることができるが、他の実施形態では、転送元ノードを、例えばＤＭＡ転送を実行するように構成されているＤＣＣとすることができる。一実施形態では、経路は、上述のグローバル・プログラミング法を使用するように構成されているが、他の実施形態では、ワームホール・ルーティングまたは他の構成法を使用するように構成されている。
【０１０６】
経路が構成された後、転送元ノードから転送先ノードヘの経路に沿った各ＤＣＰ  ４００の出力レジスタ４５５は、同期データ転送モードまたはトランスペアレト・データ転送モード（ブロック８０２）のいずれかで動作するように構成されている。他の実施形態では、このステップは、ブロック８００で実行される経路構成と同時に実行することができる。
【０１０７】
転送モード構成が完了した後、転送元ノードはデータ・ワードを転送先ノードに伝送することができる（ブロック８０４）。伝送されるそれぞれのデータ・ワードは、ブロック８０６から流れ図に従って継続し、転送元ノード・オペレーションは、ブロック８１６から継続することができる。ブロック８０６を参照すると、転送元ノードから転送先ノードヘの経路内の所定の中間のＤＣＣノードの出力レジスタ４５５は、同期モードまたはトランスペアレト・モードで動作するように構成される。同期モードの場合、データ・ワードは、出力レジスタ４５５のうちの１つに捕捉され、経路内の次のＤＣＣに進む前（ブロック８１０）の次のクロック・サイクルまで（ブロック８０８）保持される。トランスペアレト・モードの場合、データ・ワードは、クロック信号によるゲート動作なしで経路内の次のＤＣＣに直接伝搬することができる（ブロック８１０）。経路内の次のＤＣＣが転送先ＤＣＣを表す場合（ブロック８１２）、転送先ＤＣＣは次に利用可能なライト・フェーズでデータをマルチポートＳＲＡＭ  ４２５に書き込むことができる（ブロック８１４）。この時点で、データ・ワードの転送は完了することができる。そうでない場合、オペレーションはブロック８０６から継続することができ、現在のＤＣＣのデータ転送モードが決定される。
【０１０８】
ブロック８１６を参照すると、転送元ノードは、データ・ワードを送信した後、現在のデータ転送が完了しているかどうかを判別する。完了していない場合、転送元ノードは、次のデータ・ワードを転送先ノードに伝送する（ブロック８０４）。それ以外の場合、転送元ノードは、現在の転送先に対し開始するデータ転送がほかにあるかどうかを判別する（ブロック８１８）。もしそうならば、転送元ノードは、経路に沿ってそれぞれのＤＣＣ  ４００のデータ転送モード構成を再構成する（ブロック８０２）。他の実施形態では、転送元ノードは、データ転送モード構成と経路を同時に構成することができ、同じ転送先への全データ転送においてデータ転送モード構成を保持し、ブロック８０８をなくすことができる。
【０１０９】
ブロック８１８を参照すると、転送元ノードに現在の転送先に転送すべきデータがもうない場合、別の転送先に対し開始すべき他の転送があるかどうかを判別する（ブロック８２０）。もしそうならば、経路は新しい転送先に構成される（ブロック８００）。それ以外の場合、転送元ノードはアイドル状態に入ることができる（ブロック８２２）。
【０１１０】
いくつかのＤＣＣまたＭＭＡＰの実施形態では、複数の転送先ノードに対し複数のデータ転送が同時に実行されるように構成されていることに留意されたい。
【０１１１】
アドレス順序付けおよびＤＭＡ
データ転送に関する上の説明において、転送元または転送先ＳＲＡＭメモリ・ロケーションのアドレスは固定することも、指定された順序ですべてのクロック・サイクルを変更することもできる。アドレスが固定の場合、ＤＣＣまたは隣接するＤＣＰは、到着するワードまたは出て行くワードについて指定メモリ・ロケーションを直接処理することができる。アドレスが順序正しく１ステップずつ進められる場合、マルチポートＳＲＡＭ  ４２５はワード・トラフィックに対するバッファとして機能するが、それに対しＤＣＣ通信コントローラ４３０から、または隣接するＤＣＰからアドレスを供給することができる。例えば、通信コントローラ４３０のＤＭＡ機能により、適切なアドレス生成を実行できる。ＤＭＡオペレーションでは、マルチポートＳＲＡＭ  ４２５のバッファ・アレイにアクセスするために開始アドレス、停止アドレス、ストライドが必要である。隣接するＤＣＰのプロセスによりバッファ・アレイにアクセスすることができる。バッファは有限なので、ＤＣＰがデータを消費する前にバッファが満杯になるとオーバーフローが発生する可能性があり、データの到着前にＤＣＰがデータを消費しようとするとアンダフローが発生する可能性がある。したがって、ＤＭＡと隣接するＤＣＰ上で実行中のプロセスとの相互作用をソフトウェア制御により制御する必要がある。さらに、ＤＣＣは、次に説明する、経路上のデータ・ワードのフロー制御を管理する何らかのハードウェア補助機能を備えることができる。
【０１１２】
フロー制御
通常、経路内のすべてのワードは、クロック・サイクル毎にその転送先に向かって進行することができる。しかし、転送元と転送先ＤＣＣによるデータの生成と消費はむらがある。こうした状況に対し、ＤＣＣは経路内のワード列を開始、停止するフロー制御手段を備えることができる。
【０１１３】
フロー制御をサポートするために、追加回路が必要になる場合がある。マルチポートＳＲＡＭ  ４２５は、一部または全部のメモリ・ロケーション・アドレスに対する追加ビットを含む。この付加ビットは、「ハンドシェイク・ビット」と呼ばれ、それを含むように構成されているメモリ・ロケーションを通してワード転送を調整するためＤＣＰにより読み書きすることができる。ハンドシェイク・ビットがアサートされた場合、これは、転送元ＤＣＰの生産者プロセスは転送先ＤＣＰ内の消費者プロセスがデータを読み込み、そのビットをクリアするまで待機することができることを示すことができる。ハンドシェイク・ビットがデアサートされた場合、生産者プロセスはロケーションに１ワードを書き込むことができる。これと同じメカニズムを使用して、ＤＣＣによるワードのメモリ間転送を調整することができる。いくつかの実施形態では、信号をアサートするとは、その信号を論理１にすることであり、信号をデアサートするとは、その信号を論理０にすることであるが、他の実施形態では、アサートとデアサートに関して、所定の信号の極性を反転することができることに留意されたい。
【０１１４】
複数のＤＣＣを伴う距離の長い経路でフロー制御をサポートするためにはさらに回路を必要とする場合がある。ＤＣＣからＤＣＣへのそれぞれの接続リンクは、受信側ＤＣＣに向かうリンクに沿って送出される「アイドル」（ＩＤＬとも表す）線と、送信側ＤＣＣに向かうリンクに沿って送り返される「ブロック」（ＢＬＫとも表す）線とを含む。経路全体を見ると、アイドル線の信号は、最終的には、ＳＲＡＭ転送元ロケーション内のハンドシェイク・ビットから導かれ、ブロック線の信号は、ＳＲＡＭ転送先ロケーション内のハンドシェイク・ビットから導かれる。
【０１１５】
ＭＭＡＰの一実施形態で、例えば、転送先ノードで、または中間ノードでストールしたため、メッセージ（ワードの順序列）がブロックされている場合、ブロックされたメッセージは、経路内のＤＣＣの入力レジスタ４５４と出力レジスタ４５５に格納することができる。メッセージを停止するプロセスは、データ転送元ノードに向かうＢＬＫ信号のアサートの逆伝搬を含む。ＢＬＫ信号は、所定のＤＣＣの出力レジスタ４５５がトランスペアレト・モードで動作するように構成されていない限り、クロック・サイクル毎に１つのＤＣＣをトラバースすることができ、構成されている場合は、所定の１クロック・サイクルで複数のＤＣＣをトラバースすることができる。同期モードで動作するように構成されている各ＤＣＣ出力レジスタ４５５に、ＢＬＫ信号が到着すると、出力レジスタ４５５の更新が禁止され、その結果「フリーズ」するか、またはその中のメッセージのワードを捕捉し、保持することができる。メッセージの次のワードは出力レジスタ４５５がフリーズされたのと同じサイクルで入力レジスタ４５４に到着できるため、ＢＬＫ信号が到着した場合も、同じサイクルで入力レジスタ４５４内に入力ワードを捕捉し、保持することができる。ＢＬＫ信号がデータ転送元に伝搬すると、経路内のデータ・ワード、つまりＤＣＣ１つ当たり２つのワード、要するに入力レジスタ４５４内のデータ・ワードと、出力レジスタ４５５内のデータ・ワードをフリーズすることができる。第１のＢＬＫ信号の原因が取り除かれた場合、ＢＬＫ信号のデアサートは、ＢＬＫアサート伝搬と同様にしてデータ転送元に向かって伝搬することができる。この場合、初期データのフリーズに対応する「メルティング・フロント」は、転送先のノードに最も近いフリーズされたレジスタから始まり、ＢＬＫデアサートによりワードが放出され１ワード／サイクルの速度で転送先に向かって移動する場合を除き、データ転送元に向かって伝搬する。
【０１１６】
上述のように、転送先ノードまたは中間ノードのストールが生じると、転送元ノードはストールし、それにより、転送元ノードが転送先ノードをデータでオーバーフローさせないように保護する（つまり、転送元ノードが転送先が消費できる以上の速さでデータを生成しないように防止する）。転送元ノードがデータ転送の生成時にストールした場合、同様の条件が成立する。例えば、転送元ノードは、転送先ノードへの経路をセットアップし、一定量のデータを送信し、その後、第３のノードから追加データの届くのを待ちながらアイドル状態に入る。同様に、中間ノードでブロッキングが発生すると、追加データが転送元ノードから転送先ノードへ送られなくなる。このような場合、転送先ノードは、データ到着が停止したという通知を受けていないと、間違って処理を続ける可能性がある。例えば、所定のＤＣＣ内で構成されたバッファの内容を連続的にループして辿るように転送先ノードをプログラムし、バッファは新規データで連続的に更新されると仮定する。しかし、転送元ノードがストールし、転送先ノードがバッファの内容の処理を継続していると、転送先ノードは古いデータを新しいデータであるかのように間違って処理することもありうる。そのような状態は、アンダフローと呼ぶことができる。
【０１１７】
一実施形態では、例えば、転送元ノードまたは中間ノードでストールが生じたため転送元ノードから転送先ノードへのデータ・フローが停止した場合、ストールしているノードは、転送元ノードから転送先ノードへの経路を実装する接続リンクに関連付けられているＩＤＬ信号をアサートする。ＩＤＬ信号のアサートは、転送先ノードに向かって前方へ伝搬する。転送先ノードは、ＩＤＬ信号のアサートを受信すると、応答で事前に定義されたアクションを実行する。例えば、一実施形態では、転送先ノードは特定の接続リンクに関連するＩＤＬ信号のアサートを受信したことに対する応答としてアイドル状態に入る。いくつかの実施形態では、ＩＤＬ信号のアサートに対する転送先ノードの応答は、ハードウェアの設計で決定することができるが、他の実施形態では、応答はソフトウェアでプログラム可能である。
【０１１８】
一実施形態では、データ転送が実行されていなくても、ＩＤＬ信号を使用することにより、確立されている経路を開いたままにできる。そのような実施形態では、転送元ノードは転送先ノードヘの経路を生成し、それを使用して、一定期間にわたって複数のデータ・ワードを転送することができ、その際に所定の転送データ・ワード間に任意の長さのアイドル期間（「ギャップ」ともいう）を挿入できる。そのような実施形態では、所定の量のデータを転送することに関連する経路の生成と破壊オペレーションの回数を減らせるため、より効率的なデータ転送を行うことができる。
【０１１９】
図９は、ＭＭＡＰのフロー制御の一実施形態のオペレーションを例示する流れ図である。図９に示されているオペレーションは、上述のように、転送先ノードから転送元ノードへの「ブロックされた」ストール情報の伝搬または転送元ノードから転送先ノードヘの「アイドル状態の」ストール情報の伝搬のいずれかを表す。図９に示されているオペレーションについては、まず、転送先ノードから転送元ノードへのストール情報の伝搬に関して説明する。図１、４、９をまとめて参照すると、オペレーションは転送元ノードから転送先ノードヘの経路が構成されるブロック９００から始まる。一実施形態では、転送元ノードをＤＣＰとすることができるが、他の実施形態では、転送元ノードを、例えばＤＭＡ転送を実行するように構成されているＤＣＣとすることができる。一実施形態では、経路は、上述のグローバル・プログラミング法を使用するように構成されているが、他の実施形態では、ワームホール・ルーティングまたは他の構成法を使用するようになっている。
【０１２０】
経路が構成された後、転送元ノードは、その経路を介して転送先へのデータの転送を開始することができる（ブロック９０２）。転送中、転送先ノードまたは転送元ノードと転送先ノードとの間の中間ノードの１つまたは複数がストールすると、ストール状態を検出することができる（ブロック９０４）。例えば、転送先ノードは、他の処理タスクがあるためデータ転送を消費できなかったり、あるいは転送が中間ノードで中断することがある。ストールが検出されなかった場合、転送先ノードは、例えば、ワームのテールを受け取ったかどうかを検出することにより（以下のワームホール・ルーティングに関する節で説明されているように）、または経路の破棄を命令する制御メッセージを検出することにより、完全なデータ転送を受け取ったかどうかを判別する（ブロック９０６）。データ転送が完了している場合、転送先ノードは、アイドル状態に入り、次のデータ転送または他のタスクが来るのを待つ（ブロック９０８）。データ転送がまだ完了していなかった場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける（ブロック９１０）。データが転送されている間に、ストールの監視と検出を続ける（ブロック９０４）。
【０１２１】
ストールが検出された場合、ストール情報は、ストールしているデバイスから上流へ経路を通り転送元ノードへ伝搬する。一実施形態では、そのようなストール情報は、経路に関連付けられたＢＬＫ信号のアサートを介して伝搬される。ストール情報が伝搬すると、搬送中のデータ・ワードは、経路に沿ったそれぞれのノード内に捕捉できる。一実施形態では、データ・ワードはストールしているＤＣＣまたはストールしているＤＣＰに結合されているＤＣＣの入力レジスタ４５４内に捕捉することができ、ストール情報は第１の上流のＤＣＣに伝搬される。経路は、１つの出力レジスタ４５５および１つの入力レジスタ４５４を通してＤＣＣをトラバースする。第１の上流のＤＣＣの割り当てられた出力レジスタ４５５と、割り当てられた入力レジスタ４５４のそれぞれに１つのデータ・ワードを捕捉することができ、ストール情報は次の上流のＤＣＣに伝搬される。特に、一実施形態では、所定のＤＣＣのルーティング論理回路４３５の構成により、伝搬されたストール情報を受信するように、またそれぞれの出力ラッチと入力ラッチ信号を使用してデータを捕捉するように出力レジスタ４５５と入力レジスタ４５４を構成する。一実施形態では、データ捕捉とストール伝搬は、転送元ノードに達するまで上で述べたように続けられる。このような実施形態では、転送元ノードは、伝搬されたストール情報を受信したことに対する応答としてデータ転送を一時停止するように構成されている（ブロック９１２）。
【０１２２】
ストールが検出された後、ストールしているノードは、通信可能な状態になっていると判断し、ストールされたデータ転送を再開する（ブロック９１４）。ストールされたノードが通信可能な状態になっていなかった場合、有効になるまで待ち（ブロック９１６）、検査を続けて使用可能になったかどうかを判別する（ブロック９１４）。ストールされたノードが通信可能な状態になっている場合、使用可能であることを示す情報をストールしているデバイスから上流へ経路を通り転送元ノードへ伝搬させる。一実施形態では、そのような使用可能であることを示す情報は、経路に関連付けられたＢＬＫ信号のデアサートを介して伝搬される。使用可能であることを示す情報が伝搬されると、ストール情報の伝搬により転送中に捕捉されたデータ・ワードは解放され、引き続き転送先に向けて経路を辿る。一実施形態では、ストールしているＤＣＣまたはストールしているＤＣＰに結合されているＤＣＣの入力レジスタ４５４内に捕捉されているデータ・ワードは、解放することができ、使用可能であることを示す情報が第１の上流のＤＣＣに伝搬される。第１の上流のＤＣＣの出力レジスタ４５５内に捕捉されているデータ・ワードが解放されると、その後、第１の上流のＤＣＣの入力レジスタ４５４内に捕捉されているデータ・ワードが解放されることが可能であり、使用可能であることを示す情報が次の上流のＤＣＣに伝搬される。特に、一実施形態では、所定のＤＣＣのルーティング論理回路４３５の構成により、伝搬された使用可能であることを示す情報を受信するように、またそれぞれの出力ラッチと入力ラッチ信号を使用してデータを解放するように出力レジスタ４５５と入力レジスタ４５４を構成する。このような実施形態では、データの解放と使用可能であることを示す伝搬は、転送元ノードに達するまで上述のようにして続けられ、転送元ノードは、伝搬された使用可能であることを示す情報を受信したことに対する応答としてデータ転送を再開するようになっている（ブロック９１８）。使用可能であることを示す情報が経路を通して完全に伝搬した場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける（ブロック９１０）。
【０１２３】
図９に示されているオペレーションについては、転送元ノードから転送先ノードへのストール情報の伝搬に関して説明する。ここでも図１、４、９をまとめて参照すると、ブロック９００で実行される経路構成は、上述のように行う。経路が構成された後、転送元ノードは、その経路を介して転送先へのデータの転送を開始する（ブロック９０２）。転送中、転送元ノードまたは転送元ノードと転送先ノードとの間の中間ノードの１つまたは複数がストールすると、ストール状態を検出する（ブロック９０４）。例えば、転送元ノードは、他の処理タスクがあるためデータ転送を継続できなかったり、あるいは転送が中間ノードで中断することがある。
【０１２４】
ストールが検出されなかった場合、転送元ノードは、例えば、ワームのテールを送信したかどうかを検出することにより（以下のワームホール・ルーティングに関する節で説明されているように）、または経路の破棄を命令する制御メッセージを送信することにより、完全なデータ転送を伝送したかどうかを判別する（ブロック９０６）。データ転送が完了している場合、転送元ノードは、アイドル状態に入り、次のデータ転送または他のタスクが来るのを待つ（ブロック９０８）。データ転送がまだ完了していなかった場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける（ブロック９１０）。データが転送されている間に、ストールの監視と検出を続ける（ブロック９０４）。
【０１２５】
ストールが検出された場合、ストール情報は、ストールしているデバイスから下流へ経路を通り転送先ノードへ伝搬する。一実施形態では、そのようなストール情報は、経路に関連付けられたＩＤＬ信号のアサートを介して伝搬されるようにできる。ストール情報が転送先ノードへ伝搬すると、ストールしているデバイスから下流へ転送中のデータ・ワードは、転送先ノードに向かって伝搬し続ける。一実施形態では、ストール伝搬は、転送先ノードに達するまで上で述べたように続けられる。このような実施形態では、転送先ノードは、伝搬されたストール情報を受信したことに対する応答としてデータ処理を一時停止するようになっている（ブロック９１２）。
【０１２６】
ストールが検出された後、ストールしているノードは、通信可能な状態になっていると判断し、ストールされたデータ転送を再開する（ブロック９１４）。ストールされたノードが通信可能な状態になっていなかった場合、有効になるまで待ち（ブロック９１６）、検査を続けて使用可能になったかどうかを判別する（ブロック９１４）。ストールされたノードが通信可能な状態になっている場合、使用可能であることを示す情報をストールしているデバイスから下流へ経路を通り転送先ノードへ伝搬する。一実施形態では、そのような使用可能であることを示す情報は、経路に関連付けられたＩＤＬ信号のデアサートを介して伝搬される。このような実施形態では、使用可能であることを示す伝搬は、転送先ノードに達するまで上述のようにして続けられ、転送先ノードは、伝搬された使用可能であることを示す情報を受信したことに対する応答としてデータ処理を再開するようになっている（ブロック９１８）。使用可能であることを示す情報が経路を通して完全に伝搬した場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける（ブロック９１０）。
【０１２７】
簡単にするため、図９では、１回のストールが検出され、伝搬された後に、そのストールに対応する使用可能であることを示す情報の伝搬が続くように例示している。しかし、一実施形態では、同じタイプの複数回のストール（例えば、ＢＬＫまたはＩＤＬ）がデータ転送中に発生することがあることが企図されている。例えば、このような実施形態では、新しいストール情報がストールしているデバイスから上流へ、転送元ノードに向かって伝搬し、その後、前回のストールが解消された結果の使用可能であることを示す情報が上流へ、転送元ノードに向かって完全に伝搬していることが企図されている。ストール情報と使用可能であることを示す情報の伝搬順序が保持される（つまり、第２のストール情報は第１のストール情報または第１の使用可能であることを示す情報よりも先に上流へ伝搬しない）場合、ストールし、使用可能になる各状況を、図９の関連する部分に関して理解する。さらに、異なるタイプの複数回のストール（例えば、ＢＬＫまたはＩＤＬ）がデータ転送中に発生することがあることが企図されている。例えば、転送元ノードと転送先ノードが両方ともストールすると、それぞれのストール情報を互いに向けて伝搬する。このような実施形態では、それぞれのストールしているノードは、データ転送続行を再開する前に、それぞれの使用可能であることを示す情報を伝搬する必要がある。
【０１２８】
一実施形態では、図９のフロー制御オペレーションを図８の構成可能モード・データ伝送と組み合わせることに留意されたい。このような実施形態では、転送元ノードから転送先ノードへ進むデータは、所定のクロック・サイクルで複数の中間ノードを次々にわたって伝搬して行くが、ただしそのような中間ノードが上述のようにトランスペアレト・データ転送モードで動作するように構成されている場合である。同様に、このような実施形態では、ストール情報と使用可能であることを示す情報は、所定のクロック・サイクルで複数の中間ノードを次々にわたって伝搬して行くが、ただしそのような中間ノードがトランスペアレト・データ転送モードで動作するように構成されている場合である。図９のフロー制御オペレーションと図８の構成可能モード・データ伝送を含む一実施形態では、所定の中間ＤＣＣノードが上述のように伝搬されたストール情報を受信する場合、データは、入力レジスタ４５４と出力レジスタ４５５内に捕捉されるが、ただしそれらの出力レジスタが同期データ転送モードで動作するように構成されている場合のみに限る。
【０１２９】
ワームホール・ルーティング
ワームホール・ルーティングによる経路セットアップをサポートするために、一部のＭＭＡＰの実施形態ではいくつかの回路を追加する。これらは、ＤＣＣタイプのポート毎に、制御／データ・ステータスを示す、Ｃ／Ｄで表される追加制御線を含み、これは、ＤＣＣ間のすべての接続リンクに含めることができ、また各ＤＣＣ内のルーティング論理回路４３５に結合する。接続リンクの信号線の最大本数は、名目上、Ｃ／Ｄ、ＩＤＬ、ＢＬＫについてそれぞれ１本の信号線を加えた１データ・ワード当たりのビット数の合計に対応する。しかし、いくつかのＭＭＡＰの実施形態では、これらの信号をさまざまな異なる方法で多重化し、信号線の総数を減らす。
【０１３０】
一方のＤＣＣに他方のＤＣＣからデータ・ワードが届くと、受信側ＤＣＣではＣ／Ｄビットを使用して、ワームのヘッダ、本文、テールのワードを区別する。Ｃ／Ｄビットがデアサートされた場合、これは、受信されたワードが本文のワードであることを示す。本文のワードは、データ・ワードに制御ビットを加えたものに対応し、これを変更せずに経路に沿って渡す。Ｃ／Ｄビットがアサートされた場合、これは、受信されたワードが制御ワードであることを示す。制御ワードを使用することにより、ワードのデータ部分がルーティング論理回路４３５による解釈を受けるルーティング・コードを含む。
【０１３１】
ルーティング・コードの重要な特徴の１つは、制御ワードがヘッダであるかテールであるかを示す指標であり、そこで制御ワードのヘッダ／テール・ステータスを示すＨ／Ｔビットを与える。一実施形態では、Ｈ／Ｔビットは、Ｃ／Ｄビットに隣接するが、他の実施形態では他のビット位置に割り当てられまたは特定のマルチビット・コードに割り当てられる。制御ワードがテール・ワードの場合、これは経路に沿って伝搬され、他の何らかの経路により使用できるようにＤＣＣ出力ポートを順次解放する。
【０１３２】
制御ワードがヘッダ・ワードである場合、受信側ＤＣＣの入力レジスタ４５４内に制御ワードをラッチし、ルーティング論理回路４３５内の組み合わせ論理回路により復号化する。ルーティング論理回路４３５では、ヘッダ・ワードの一番右の数個のビットとともにヘッダの出所であるポートを調べ、表１に示されているような出力ポートのクロスバー４５０の要求を発行する。出力ポートを要求するためにルーティング論理回路４３５により調べられる数個のビットを、ナビゲーション単位またはＮＵＮＩＴと呼ぶ。表１に示されているように、ＤＣＣ１個当たり４つのＤＣＣタイプの出力ポートを備えるＤＣＣの実施形態に対し、ＮＵＮＩＴは２ビット・コードを使用して、４つの方向オプションを指定する。同じ数のまたは異なる数のＤＣＣタイプのポートを備える他の実施形態では、他のＮＵＮＩＴコードを使用する。ＮＵＮＩＴ毎に２ビット使用するコードを以下で説明する。出力ポートがすでに確立されている経路によりブロックされていない場合、ルーティング論理回路４３５では、ＮＵＮＩＴを評価し、ワームを進行させる。例えば、ヘッダ・ワードがＮＵＮＩＴコード１０とともにＳＲＡＭから届いた場合、ルーティング論理回路４３５は、クロスバー４５０からのＥａｓｔ出力ポートに、このワームのヘッダ・ワードと後続のワードを要求する。
【０１３３】
【表１】
2005531089.tif 000003
【０１３４】
図１０は、ヘッダ・ワードに関するルーティング論理回路の一実施形態のオペレーションを例示している。図１０は、ヘッダ・ワードが転送元ノードから転送先ノードへの経路上の複数のＤＣＣノードを進んで行くところを示している。場合（ａ）は、転送元ＤＣＣから出た初期状態のヘッダ・ワードを例示する。この状態では、ヘッダ・ワードは、Ｃ／ＤビットとＨ／Ｔビットを含み、さらにＨＮ０からＨＮ４までの番号が振られ、ＨＮ０がヘッダ・ワードの最下位ビットを占有する複数のヘッダＮＵＮＩＴフィールドを含む。
【０１３５】
転送元と転送先ＤＣＣを含む各ＤＣＣで、ヘッダ・ワードは、以下のように修正されるとともにクロスバーの出力に渡される。ヘッダ・ワードは、ＮＵＮＩＴ１個分右シフトし、左からゼロを詰める。その後、Ｃ／ＤおよびＨ／Ｔビットを元の位置に戻す。図１０の場合（ｂ）から（ｅ）は、それぞれ１から４個までのＤＣＣによりヘッダが処理された後実行されるヘッダの修正を例示する。場合（ｅ）に示されているように、ＤＣＣを通過する毎に、ヌル・コードが一番右のＮＵＮＩＴ内に現れるまで先頭ヘッダ・ワードにゼロを詰めてゆく。ヘッダ・ワードが同じＤＣＣ（コントローラまたは近傍ＤＣＰ）からのものではないときにヌル・コードが一番右のＮＵＮＩＴであり、次のワーム・ワードが制御ワードではない場合、ヘッダ・ワードはそのワームに対して転送先ＤＣＣにある。
【０１３６】
転送先ＤＣＣに到着したことをチェックするのに、複数クロックを要することがある。まず、先頭ヘッダ・ワードを入力レジスタ４５４のうちの１つに移動し、ルーティング論理回路４３５により、一番右のＮＵＮＩＴ内にヌル・コードが入っていないか検査する。ヌル・コードが見つかった場合、次のクロック・サイクルで、ワームの次のワードにより先頭ヘッダ・ワードを上書きし、Ｃ／ＤおよびＨ／Ｔビットを検査する。次のワードが他のヘッダ・ワードの場合、それが新しい先頭ヘッダ・ワードになり、一番右のＮＵＮＩＴを使用することにより次のＤＣＣに対する出力ポートを選択する。大きなアレイ上で経路選択するために１ワーム当たりのヘッダ・ワードの個数が多くなる場合がある。次のワードがヘッダ・ワードではなく本文のワードの場合、ワームはその転送先ＤＣＣにある。この場合、本文のワードは、ＤＣＣ内のプリセットされたＳＲＡＭロケーションに書き込む。本文のワードがあるロケーションに届くと、通信コントローラ４３０のＤＭＡ論理回路、またはＤＣＰによりその到着が検出され、そのいずれかで後続の本文のワードの到着を処理する。ワームの処理方法に関する情報は、転送先ノードに予めロードしておくか、またはヘッダのすぐ後ろのワームに入れる。
【０１３７】
図１１は、ＭＭＡＰの一部を通る経路の実施例を示すブロック図である。図１１は、「クロスバーＡ」から「クロスバーＨ」で表される８個のクロスバーを示している。示されているそれぞれのクロスバーは、図４のクロスバー４５０の実施例である。簡単にするため追加論理回路は示されていないが、それぞれの示されているクロスバーは図４のＤＣＣ  ４００などの各ＤＣＣに含めることができ、それぞれのそのようなＤＣＣは、図２に例示されている実施形態などのＭＭＡＰの一実施形態内の他のＤＣＣに結合される。
【０１３８】
図１１の例示されている実施形態では、クロスバーＡ〜Ｈのそれぞれは、クロスバーの左辺にＮ、Ｓ、Ｅ、Ｗと表されている４つの入力ポート、およびクロスバーの右辺にＮ、Ｓ、Ｅ、Ｗと表されている４つの出力ポートを含む。それぞれのクロスバーの入力ポートは、それぞれのＤＣＣのＤＣＣ入力ポート４０４に結合され、それぞれのクロスバーの出力ポートは、それぞれのＤＣＣのＤＣＣ出力ポート４０５に結合される。さらに、クロスバーＡ〜Ｈのそれぞれは、入力接続部と、図４のマルチポートＳＲＡＭ  ４２５などのメモリへの出力接続部を備え、その接続部はそれぞれクロスバーの左辺と右辺にＭで表されちる。
【０１３９】
例示されている実施形態では、それぞれクロスバーＡ〜Ｈは、各ＤＣＣを介して複数の近隣クロスバーに結合され、各クロスバーのそれぞれの出力ポートＮ、Ｓ、Ｅ、Ｗは複数の近隣のクロスバーのそれぞれの各入力ポートＳ、Ｎ、Ｗ、Ｅに結合される。したがって、例示されている実施形態では、それぞれのクロスバーは、４つの近隣のクロスバーから入力を受け取り、４つの近隣のクロスバーに出力を送るように結合される。他の実施形態では、異なる数のクロスバーを備え、それぞれが異なる数の入力ポート、出力ポート、メモリ接続部を備えることも企図されていることに留意されたい。
【０１４０】
図１１では、クロスバーＡを含む転送元ＤＣＣからクロスバーＨを含む転送先ＤＣＣへの経路を例示しており、この経路はクロスバーＢ、Ｆ、Ｇを含むＤＣＣをトラバースする。図１０、図１１をまとめて参照すると、表１に従って定義されている２ビットのＮＵＮＩＴコードは、次のように例示されている経路を実装するために使用される。経路は入力メモリ接続部Ｍを介してクロスバーＡに結合されているＳＲＡＭから始まり、出力ポートＥを介してクロスバーＡから出る。表１によれば、クロスバーＡのＮＵＮＩＴは１０でなければならない。クロスバーＡの出力Ｅは、クロスバーＢの入力Ｗに結合され、例示されている経路は出力ポートＳを介してクロスバーＢから出る。表１によれば、クロスバーＢのＮＵＮＩＴは０１でなければならない。クロスバーＢの出力Ｓは、クロスバーＦの入力Ｎに結合され、例示されている経路は出力ポートＥを介してクロスバーＦから出る。表１によれば、クロスバーＦのＮＵＮＩＴは１０でなければならない。クロスバーＦの出力Ｅは、クロスバーＧの入力Ｗに結合され、例示されている経路は出力ポートＥを介してクロスバーＧから出る。表１によれば、クロスバーＧのＮＵＮＩＴは１１でなければならない。最後に、クロスバーＧの出力Ｅは、クロスバーＨの入力Ｗに結合され、例示されている経路は、出力メモリ接続部Ｍを介してクロスバーＨに結合されているＳＲＡＭで終わる。表１によれば、クロスバーＨのＮＵＮＩＴは００でなければならない。
【０１４１】
そのため、図１１に例示されている経路に対して図１０の形式のワームホール・ルーティングを実装するヘッダ制御ワードは、制御ワードを示すアサートされたＣ／Ｄビット、ヘッダ・ワードを示すアサートされたＨ／Ｔビットを含み、さらにそれぞれフィールドＨＮ４からＨＮ０に対応する値００、１１、１０、０１、１０を含む。例示されている経路は、ＭＭＡＰの一実施形態で可能な多数の経路のうちの１つにすぎないことに留意されたい。ワームホール・ルーティングまたは他の経路選択方法を使用して他の経路を構成することができ、また他の実施形態は異なる方法で相互接続された異なる数のクロスバーとポートを含むことも企図されている。
【０１４２】
各ＮＵＮＩＴは、経路に沿った特定のＤＣＣにより消費されるので、１つまたは複数のビットを各ＮＵＮＩＴに追加して、個々のＤＣＣで特定の動作を要求する。例えば、一実施形態では、ＮＵＮＩＴ毎に１つ追加されたビットを使用して、所定のＤＣＣが上述のようにトランスペアレト・データ転送モードまたは同期データ転送モードで動作することを指定する。そのような実施形態では、ワームホール・ルーティングにより選択された経路は、ヘッダ・ワード内のトランスペアレンシ・ビットのプログラミングに応じて、完全同期または部分的トランスペアレトとする。
【０１４３】
他の実施形態では、ＤＣＰは、図４のＤＣＣ  ４００などの近隣のＤＣＣのクロスバー入力にヘッダ・ワードを直接送る。ＤＣＰでは、そのために、そのＤＣＣのＤＣＰアドレス・ポート４０３を介して近隣のＤＣＣに特定のアドレスを指定し、そのＤＣＣのＤＣＰ入力ポート４０１を介してヘッダ・ワードを送信する。ルーティング論理回路４３５は、その後、マルチポートＳＲＡＭ  ４２５を使用せずにその転送先への途上でワームを送信する。この手法は、ＤＣＰ間のメッセージ受け渡し機能を実現する。
【０１４４】
衝突処理
ワームホール・ルーティングによりセットアップされる経路は、既存の経路あるいは同時に所定のＤＣＣを通して経路選択されたワームホールである１つまたは複数の他の経路と衝突する場合がある。衝突は、１つまたは複数のヘッダ・ワードで同時に同じクロスバー出力ポートを要求した場合、またはその出力ポートがすでに経路により占有されている場合に生じる。ルーティング論理回路４３５は、衝突が発生した場合に競合している出力ポートへのアクセス権をどの経路が受け取るかを調停するように構成された論理回路を含む。ルーティング論理回路４３５は、衝突を検出すると、競合している出力ポートへのアクセスを１つのワームだけに許可できる。さまざまな優先度／ローテーション方式（例えば、ラウンドロビン方式）を使用して、トラフィック分布の形を整え、どの入力ポートも要求された出力ポートへのアクセスを常に拒絶されることのないようにできる。
【０１４５】
ワームホール・ルーティングにより最初にセットアップされる経路がブロックされた場合、ブロックされたワームの前進を破棄せずに停止すると都合がよい。この場合、上述のフロー制御メカニズムを使用する。例えば、ワームのヘッダをブロックしているＤＣＣの入力レジスタ４５４内にラッチし、ＢＬＫ信号を経路内の次の上流のＤＣＣに送り、次の上流のＤＣＣの入力レジスタ４５４内のワームの他のセグメントをラッチする。このプロセスは、ワームのテール・ワードを含むＤＣＣに、またはテール・ワードがまだ送信されていなかった場合には転送元ＤＣＣに繰り返し戻す。ワーム内のデータは、同期データ転送モードで動作するように構成されている経路内のＤＣＣの入力レジスタ４５４と出力レジスタ４５５で捕捉する。上述のように、２つのワードは、ＤＣＣ毎に格納することができ、その結果、ストールされているワームは「しわくちゃに押しつぶされた」状態または「望遠鏡のように重なって縮んだ」状態になる。ワームは、ブロック状態が解消するまでいつまでもフリーズ状態のままにでき、ブロック状態が解消した後、ＢＬＫ信号のデアサートの伝搬により前進移動が自動的に再開する。
【０１４６】
ＭＭＡＰ機能を例示する複数のアプリケーション実施例について以下で説明する。このような実施例は、ＭＭＡＰまたはそのコンポーネントの構造、機能、または範囲を制限する意図はなく、前述の説明を理解しやすくすることのみを目的としていることに留意されたい。これらの実施例の数多くの変更形態を採用できること、また後述のアプリケーションの代替えアプリケーションが多数ありえることも企図されている。
【０１４７】
実施例１−高速フーリエ変換
この実施例では、複素高速フーリエ変換（ＦＦＴ）を使用して時間領域内の複素波形を周波数領域に変換する。この実施例により、ＤＣＰが完全同期モードで決定論的プログラムにより緊密に結合されている協同処理を説明する。
【０１４８】
波形は、クロック・サイクルの倍数で一様な周期性を持つ時間領域サンプル列により表す。波形の位相情報を保存するために、各サンプルを複素数として処理するとよい。複素数は、コンピュータでは、実数の固定小数点数または浮動小数点数の対として表すことができ、この対は、複素数の実数成分と虚数成分からなる。この実施例では、それぞれの実数を１ワードに格納する。
【０１４９】
ＦＦＴの長さは、フーリエ領域内の出力値を求めるためにまとめて処理される、サンプリングされた時間領域内のサンプルの個数として定義できる。ＦＦＴの長さは、さらに、出力スペクトル内の離散周波数の個数も定義できる。コンピュータでは、サンプルは、データ配列内に格納する。この実施例では、８個のサンプルがデータ配列内に配置され、その後、長さ８のＦＦＴアルゴリズムが実行され、周波数毎に１つの出力値、合計８つの出力値が得られる。最後に、８つの出力値をＭＭＡＰから順番に取り出す。
【０１５０】
高速フーリエ変換（ＦＦＴ）は、数段から多段で構成され、各段がデータ配列に対して複素数の乗算、加算、減算を実行する。基数２のＦＦＴは、２Nを入力値の個数として、Ｎ段で構成される。例えば、長さ８のＦＦＴは８つの入力値がある。８＝２3なので、Ｎ＝３、したがって、長さ８のＦＦＴは３段となる。ＦＦＴアルゴリズムの一実装では、これらの段のそれぞれが、合計３２回の計算を必要とする。これらの計算は、４回の複素乗算、４回の複素加算、４回の複素減算からなる。それぞれの複素加算と減算は、加算または減算の計算を２回必要とするが、それは、各複素数の実部と虚部は別々に評価されるからである。同様に、それぞれの複素乗算は、４回の乗算／多重累積オペレーションを必要とするが、それは、乗算器の実部と虚部が被乗数の実部と虚部に対し乗算されるからである。したがって、１つのＦＦＴ段では、８回の加算、８回の減算、１６回の乗算／多重累積オペレーションが必要になる。
【０１５１】
長さ８のＦＦＴの３段すべてについて、全部で９６回の計算を実行しなければならないであろう。しかし、第１段で使用される複素乗算器は実数値１と虚数値０を持つので、第１段の複素乗算は、この乗算値については複素数の積が被乗数に等しいため、実行しなくてよい。この特性を考慮すると、実行しなければならないのは合計８０回の計算である。
【０１５２】
長さ８のＦＦＴでは、８つの複素データ点がある。各ＦＦＴ段で、複素データの対に対し計算を実行することができ、この計算をバタフライ計算と呼ぶ。例えば、各段で、複素数データ点と複素係数の対の一方に対し複素乗算を実行できる。その結果が、その段の複素加算と減算に使用できる複素数の積である。
【０１５３】
そこで図１２を参照すると、バタフライ計算の一実施形態のデータ・フローを例示する流れ図が示されている。図１２のバタフライ計算では、２つの複素入力値Ａ、Ｂを受け取るとともに、複素係数Ｗを受け取り、２つの複素出力値Ａ’、Ｂ’を出力する。バタフライ計算では、複素入力値Ｂと複素係数Ｗとの複素乗算を実行して、中間結果である複素数の積Ｙを出力する。その後、バタフライ計算は、複素和と、複素入力値Ａと複素数の積Ｙの間の複素数の差の計算を実行して、複素出力値Ａ’、Ｂ’をそれぞれ出力する。
【０１５４】
上述の複素算術演算オペレーションは、それぞれのオペランドの実部と虚部のオペレーションとして次のように表す。
Y_real = (B_real * W_real)-(B_imag * W_imag)
Y_imag = (B_real * W_imag) + (B_imag * W_real)
A’_real = A_real + Y_real
A’_imag = A_i mag + Y_imag
B’_real = A_real - Y_real
B’_imag = A_imag - Y_imag
【０１５５】
ＭＭＡＰの一実施形態では、２つの隣接するＤＣＰが同じデータを共有しながら同時に複素計算を実行するようになっている。第１のＤＣＰは、複素乗算を実行して、積Ｙ＿ｒｅａｌの実部を生成し、第２ＤＣＰは、複素乗算を実行して、虚部Ｙ＿ｉｍａｇを生成する。その後、第１のＤＣＰは、複素加算を実行して、Ａ’＿ｒｅａｌおよびＡ’＿ｉｍａｇを生成し、第２のＤＣＰは複素減算を実行して、Ｂ’＿ｒｅａｌ、Ｂ’＿ｉｍａｇを生成する。結果をＤＣＰ間の共有メモリ内に置くことにより、それぞれの結果の値を、結果生成の後の次のクロック・サイクルで他のＤＣＰから利用できるようにする。
【０１５６】
図１３は、データ共有を例示するＭＭＡＰの実施形態の一部のブロック図である。図１３は、それぞれ図３のＤＣＰ  ３００の実施例とするＤＣＰ１、ＤＣＰ２を含むＭＭＡＰの実施形態の一部を示している。ＤＣＰ１とＤＣＰ２はそれぞれ、ＤＣＣ１とＤＣＣ２に結合されるとともに、複数の他のＤＣＣにも結合されており、それぞれは図４のＤＣＣ  ４００の例である。簡単にするため、接続の一部しか図１３に示されていない。
【０１５７】
ＤＣＰ１は、ＤＣＰ１からＤＣＣ１の接続により示されているように、上述のバタフライ計算の複素乗算の実部を実行し、その結果をＤＣＣ１に格納するように構成されている。同様に、ＤＣＰ２は、ＤＣＰ２からＤＣＣ２の接続により示されているように、上述の複素乗算の虚部を実行し、その結果をＤＣＣ２に格納するように構成されている。ＤＣＰ１とＤＣＰ２は、複素乗算のそれぞれの部分を同時に実行し、複素数の結果の各部が次のサイクルでＤＣＰ１とＤＣＰ２の両方から読み込めるように構成されている。これが使用可能であることは、ＤＣＣ１とＤＣＣ２のそれぞれからＤＣＰ１とＤＣＰ２のそれぞれへの接続により示される。
【０１５８】
その後、ＤＣＰ１は上述のバラフライ計算の複素加算を実行するように構成され、その後、ＤＣＰ２は上述のバタフライ計算の複素減算を実行するように構成される。ＤＣＰ１とＤＣＰ２は、それぞれの加算または減算を同時に実行するように構成されている。
【０１５９】
図１３は、ＤＣＰが完全同期モードで決定論的プログラムにより緊密に結合されている協同処理を例示する。例示されている実施形態では、ＤＣＰのそれぞれが、同じ数の算術演算オペレーションを実行する。ＤＣＰは両方とも同じマスタ・クロックにより駆動できるため、ＦＦＴ計算の間中、ロック・ステップでの動作が可能である。したがって、データ値は、最小限度の通信または同期オーバーヘッドで、各ＤＣＰ間で共有する。
【０１６０】
ＭＭＡＰの一実施形態では、長さ８のＦＦＴ計算は８つのＤＣＰの配列で実装する。このような実施形態では、長さ８のＦＦＴの複素計算は１１サイクルで実行できる。８個のＤＣＰでの長さ８のＦＦＴの計算に対する理論上の最小待ち時間は、算術演算オペレーションを８０回実行するものとして、１０サイクルである。この実施形態では、１１番目のサイクルは、ＦＦＴの第３段でリモート・データ転送を実行することにより発生させる。しかし、第１の２段では、通信オーバーヘッドによる待ち時間の追加は生じえない。
【０１６１】
実施例２−ベクトル算術演算
ＭＭＡＰは、所定のＤＣＰに対するレジスタ・ファイルと一次キャッシュ（つまり、Ｌ１キャッシュ）の両方の役割を完遂するＤＣＣ内の共通メモリ構造を備える。ＤＣＣに結合されている各ＤＣＰは、このメモリに対する即時かつ直接的アクセスを行える。２つの隣接するＤＣＰの協同処理でプロセス間でレジスタの内容を直接共有することによりこのメモリ・リソースを効率よく使用できる方法を実施例１は例示していた。さらに、各ＤＣＣが柔軟にデータをアドレスし、伝達できることにより他の利点も得られることに留意されたい。これらの機能により、データのベクトルとストリームのきわめて効率のよい処理が可能になる。非常に単純な実施例として、２つのベクトルを加算するタスクを考察する。各ベクトルがｎ個の成分を有する場合、ベクトル和もｎ個の成分を有し、ベクトル和の各成分は２つの元のベクトルのそれぞれから１つの成分を加算した結果である。このタスクを実行するには、最低でもｎ回の算術演算オペレーションが必要である。ＭＭＡＰでは、このタスクは、ｎの大きさに関係なく、またタスクに使用されるＤＣＰの個数と無関係に、付加的通信オーバーヘッドを実質的にいっさい発生せずに完了する。
【０１６２】
一実施形態では、ベクトル加算タスクを実行するように単一のＤＣＰを構成される。ｎが比較的大きい場合、最も実用的な手法は、単純ループを使用してオペレーションをコーディングすることであろう。ＭＭＡＰでは、このループをｎ回繰り返されるであろう単一命令で実装する。ループの各繰り返しで、入力ベクトルのそれぞれから異なるソース成分を使用し、出力ベクトルに対し異なる結果の成分を出力する。ＭＭＡＰアーキテクチャの一実施形態では、このループをｎサイクルで完了する。従来のプロセッサだと、キャッシュとレジスタ・ファイルとの間でデータを移動するロードとストア命令のために追加命令（場合によっては、追加サイクルも）を必要とすることがある。
【０１６３】
他の実施形態では、複数のＤＣＰを使用してベクトル加算タスクを実行できる。このような実施形態では、使用されるＤＣＰの数に直接比例して計算のスピードを高められる。ｐ個のＤＣＰを使用する場合、各ＤＣＰは、Ｎをｎ／ｐ以上の最小の整数としてＮ回の繰り返しを有するループを実行するように構成される。各ＤＣＰで必要なデータが隣接ＤＣＣ内で利用可能な限り、単一命令ループで計算を十分に実行できる。隣接ＤＣＣ内でデータが利用できない場合、ＤＣＣの通信機能を使用して、隣接ＤＣＣに格納されたデータの出所からデータを「ストリーミングで流す」。いくつかのＭＭＡＰの実施形態では、データ通信は計算と同じ速度で実行する（例えば、マスタ・クロックの１サイクル当たり１ワードの速さ）。ＭＭＡＰ通信アーキテクチャは効率が非常に高いため、ループの内側で通信および命令をセットアップすることが可能であり、ストリーミング・データとの同期またはロードのために命令を追加する必要がない。プロセッサは、上述の統合されたフロー制御メカニズムを使用して入力データ・ストリームと自動的に同期をとる。これにより、データは計算の実行速度と同じ速度で到着し、ｎ成分のベクトル全体をＮサイクルで処理する。
【０１６４】
本発明のシステムおよび方法は、好ましい実施形態に関して説明されているが、本明細書に記載されている特定の形態に制限する意図はなく、それどころか、付属の請求項で定められている本発明の精神および範囲内に含めても妥当であると思われるような代替え形態、修正形態、および等価物を対象とすることが意図されている。
【図面の簡単な説明】
【０１６５】
【図１】本明細書で数学的マトリックス・アルゴリズム・プロセッサ（ＭＭＡＰ）と呼ばれる、処理システムの一実施形態を例示するブロック図である。
【図２】ＭＭＡＰ接続スキームの一実施形態を例示するブロック図である。
【図３】動的構成可能プロセッサ（ＤＣＰ）とも呼ばれる、プロセッサの一実施形態を例示するブロック図である。
【図４】動的構成可能通信要素（ＤＣＣ）の一実施形態を例示するブロック図である。
【図５】メモリ・アクセス・タイプを１クロック・サイクルに割り当てることの一実施形態を例示するタイミング図である。
【図６】同期データ伝送モードの一実施形態のオペレーションを例示するタイミング図である。
【図７】トランスペアレト・データ伝送モードのいくつかの実施形態のオペレーションを例示するタイミング図である。
【図８】ＭＭＡＰの構成可能モード・データ伝送の一実施形態のオペレーションを例示する流れ図である。
【図９】ＭＭＡＰのフロー制御の一実施形態のオペレーションを例示する流れ図である。
【図１０】ヘッダ・ワードに関するルーティング論理回路の一実施形態のオペレーションを例示する図である。
【図１１】ＭＭＡＰの一部を通る経路の実施例を示すブロック図である。
【図１２】バタフライ計算の一実施形態のデータ・フローを例示する流れ図である。
【図１３】データ共有を例示するＭＭＡＰの実施形態の一部のブロック図である。
【図１】
2005531089.tif 000004
【図２】
2005531089.tif 000005
【図３】
2005531089.tif 000006
【図４】
2005531089.tif 000007
【図５】
2005531089.tif 000008
【図６】
2005531089.tif 000009
【図７】
2005531089.tif 000010
【図８】
2005531089.tif 000011
【図９】
2005531089.tif 000012
【図１０】
2005531089.tif 000013
【図１１】
2005531089.tif 000014
【図１２】
2005531089.tif 000015
【図１３】
2005531089.tif 000016
【国際調査報告】
2005531089.tif 000017
2005531089.tif 000018
2005531089.tif 000019
2005531089.tif 000020
2005531089.tif 000021
2005531089.tif 000022
2005531089.tif 000023