(57)【要約】  データプロセッサは、処理素子の少なくとも一つに対してローカルに設けられたメモリ３を有する、複数の処理素子（ＰＥ）１と、処理素子とメモリとを相互接続し、任意のＰＥからのメモリへのアクセスを可能とするデータパケット交換ネットワークを含んでいる。ＰＥとそれらのローカルメモリを共通コントローラ１０に接続するために、ネットワークは、線形状又はＳＩＭＤ配列などの格子状に配置されたノード２から構成されている。トランザクション可能なＰＥとノードは、フラグ“Ｅ”又は“Ｔ”を設定し、それらの値は、トランザクションが終了するまで保持され、例えば、一連のＯＲゲート１３を経由して、コントローラに対して状態を通知する。プロセッサは、コントローラからメモリに送られた制御信号に応じて、メモリに格納されたデータに対してメモリアクセスを実行する。ローカルメモリは、同一のメモリマップ又はメモリ空間を共有する。例えば、キャッシュを設けるために、ネットワークとの接続を行なう外部メモリを、“終端”ノードに接続することも可能である。全てのプロセッサからのＰＥメモリが同一のメモリマップ又はメモリ空間を共有できるように、一つあるいはそれ以上の数の別のプロセッサを、同様に、ネットワークに接続してもよい。パケット交換ネットワークは、ＰＥとメモリとの間の、複数の並列伝送を提供する。メモリアクセスには、ブロック及び／又はブロードキャストによる読込み／書込み操作が含まれており、その操作では、データがノード内で複製され、操作に応じて、共有メモリあるいはローカルＰＥメモリに書き込まれる。
2008509493.tif 000002
【特許請求の範囲】
【請求項１】
マルチスレッドのコントローラと、複数の処理素子と、前記複数の処理素子の少なくとも一つに対してローカルに設けられたメモリ手段と、前記処理素子と前記メモリとを相互接続するデータパケット交換ネットワークであって、前記処理素子のいずれかをメモリ手段にアクセス可能とするデータパケット交換ネットワークと、スレッド交換が起こっているかもしれないことを、前記ネットワークの活動とは独立してコントローラに通知する手段とを含むことを特徴とするデータプロセッサ。
【請求項２】
請求項１記載のデータプロセッサにおいて、前記メモリ手段は、前記各処理素子の一つに付属したローカルメモリを含み、ローカルメモリ１つ当たり処理素子１つを割当てたことを特徴とするデータプロセッサ。
【請求項３】
請求項１又は２記載のデータプロセッサにおいて、各処理素子は、配列プロセッサ中の処理素子の配列の一つであることを特徴とするデータプロセッサ。
【請求項４】
請求項３記載のデータプロセッサにおいて、前記プロセッサ配列は、単一命令多重データ処理（ＳＩＭＤ）プロセッサであることを特徴とするデータプロセッサ。
【請求項５】
請求項１記載のデータプロセッサにおいて、前記メモリ手段は、複数の処理素子の間で共有される単一のローカルメモリを含むことを特徴とするデータプロセッサ。
【請求項６】
請求項１から５のいずれかに記載のデータプロセッサにおいて、さらに、データパケット交換ネットワークにも接続された外部メモリを含み、外部メモリが前記処理素子のどれかから利用できるようになっていることを特徴とするデータプロセッサ。
【請求項７】
請求項１から６のいずれかに記載のデータプロセッサにおいて、前記パケット交換ネットワークは、複数のノードを含み、各ノードは、各処理素子と、前記メモリ手段に接続された少なくとも一つのノードとに接続されていることを特徴とするデータプロセッサ。
【請求項８】
請求項７記載のデータプロセッサにおいて、前記ノードは、線形ネットワークで接続されていることを特徴とするデータプロセッサ。
【請求項９】
請求項７記載のデータプロセッサにおいて、前記ノードは、格子を構成する配列状で接続されていることを特徴とするデータプロセッサ。
【請求項１０】
請求項１から９のいずれかに記載のデータプロセッサにおいて、前記パケット交換ネットワークは、前記処理素子と前記メモリ手段との間の複数の並列伝送をサポートするように構成されていることを特徴とするデータプロセッサ。
【請求項１１】
請求項７記載のデータプロセッサにおいて、前記ノードは、前記コントローラに接続されており、前記処理素子に対して命令を発行し、前記メモリ手段に対してメモリ制御信号を発行するように構成されていることを特徴とするデータプロセッサ。
【請求項１２】
請求項１１記載のデータプロセッサにおいて、さらに、前記コントローラへの通信のために、各処理素子からの状態信号を組合せ、各ノードからの状態信号を組み合わせる手段を含むことを特徴とするデータプロセッサ。
【請求項１３】
請求項６に従属した場合の請求項７記載のデータプロセッサにおいて、前記パケット交換ネットワークの前記ノードの一つは、前記ノードのいずれかと前記外部メモリとの間のインターフェース。
【請求項１４】
請求項２記載のデータプロセッサにおいて、前記ローカルメモリ手段は、処理素子のいずれかによるアクセスのために、単一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１５】
請求項１４及び６記載のデータプロセッサにおいて、前記外部メモリもまた、処理素子のいずれかによるアクセスのために、単一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１６】
請求項１４又は１５記載のデータプロセッサにおいて、さらに、少なくとも一つ別のデータプロセッサを含み、前記別のデータプロセッサの各々は、各メモリ手段を有し、各前記メモリ手段は、前記データプロセッサの前記メモリ手段と同一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１７】
請求項１４から１６のいずれかに記載のデータプロセッサにおいて、前記メモリ手段は、前記メモリマップ又はメモリ空間の連続したアドレス範囲にマッピングされることを特徴とするデータプロセッサ。
【請求項１８】
請求項１４から１７のいずれかに記載のデータプロセッサにおいて、前記メモリ手段は、各処理素子が、付属している物理的なメモリよりも大容量のローカルメモリを有するかのように見えるように、前記メモリマップ又はメモリ空間の不連続のアドレス範囲にマッピングされることを特徴とし、付加されたメモリは、前記外部メモリの位置に設けられることを特徴とするデータプロセッサ。
【請求項１９】
請求項１４から１７のいずれかに記載のデータプロセッサにおいて、前記メモリマップ又はメモリ空間内の各アドレスは、少なくとも各処理素子の識別番号と、各ローカルメモリ内のアドレスとを組み合せることにより決定されることを特徴とするデータプロセッサ。
【請求項２０】
請求項１６及び１９に記載のデータプロセッサにおいて、各アドレスは、さらに、各別のデータプロセッサの識別番号により決定されることを特徴とするデータプロセッサ。
【請求項２１】
請求項１から２０のいずれかに記載のデータプロセッサにおいて、前記メモリ手段の少なくとも一部は、さらに、データパケット交換ネットワークにも接続されたキャッシュメモリを含み、キャッシュメモリが前記処理要素のいずれかに利用可能とされていることを特徴とするデータプロセッサ。
【請求項２２】
請求項１から２１のいずれかに記載のデータプロセッサにおいて、前記プロセッサは、少なくとも一つの他の命令を実行している間に、一つあるいはそれ以上の数の命令を発行するように構成され、命令の変化する待ち時間がユーザに対して隠蔽されていることを特徴とするデータプロセッサ。
【請求項２３】
請求項１から２２のいずれかに記載のデータプロセッサにおいて、前記プロセッサは、少なくとも一つの他の命令を実行している間に、一つあるいはそれ以上の数の命令を発行するように構成され、トランザクションの変化する待ち時間がユーザに対して隠蔽されていることを特徴とするデータプロセッサ。
【請求項２４】
請求項１１記載のデータプロセッサにおいて、前記コントローラは、他の操作と独立、並行して、メモリアクセス操作を実行するように構成されていることを特徴とするデータプロセッサ。
【請求項２５】
請求項２２記載のデータプロセッサにおいて、前記プロセッサは、前記コントローラから前記メモリ手段に送られた制御信号に応じて、前記メモリ手段に格納されたデータへのメモリアクセスを実行するように構成され、前記アクセスは、対応するノードからトランザクションを受信した前記メモリ手段のブロックに対してのみ可能であることを特徴とするデータプロセッサ。
【請求項２６】
請求項１２記載のデータプロセッサにおいて、各処理素子は、処理素子がメモリアクセスに関与していることを示すフラグを設定、保持するように構成され、前記状態信号は、フラグから生成され、コントローラに送られ、フラグは、メモリアクセスが終了した時点で解除されることを特徴とするデータプロセッサ。
【請求項２７】
請求項１２又は２６に記載のデータプロセッサにおいて、ノードは、ノードがトランザクションに関与していることを示すフラグを設定、保持するように構成され、前記状態信号は、フラグから生成され、コントローラに送られ、フラグは、トランザクションが終了した時点で解除されることを特徴とするデータプロセッサ。
【請求項２８】
請求項２５記載のデータプロセッサにおいて、前記プロセッサは、前記制御信号を発行し、システムクロックの１サイクルに一度、前記メモリアクセスを実行するように構成されていることを特徴とするデータプロセッサ。
【請求項２９】
請求項２５記載のデータプロセッサにおいて、前記プロセッサは、各トランザクションパケットが、その宛先メモリに到着するまで待機し、その後、メモリ制御信号を一度だけ発行するように構成されていることを特徴とするデータプロセッサ。
【請求項３０】
請求項２５記載のデータプロセッサにおいて、前記プロセッサは、全てのトランザクションパケットが、その宛先メモリに到着するまで待機し、その後、メモリ制御信号を一度だけ発行するように構成されていることを特徴とするデータプロセッサ。
【請求項３１】
請求項２５記載のデータプロセッサにおいて、前記プロセッサは、複数のメモリアクセスをまとめておき、前記メモリアクセスのまとまりを同時に実行するように構成されていることを特徴とするデータプロセッサ。
【請求項３２】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、書込みトランザクションが終了したことの確認を処理素子が待たないような、送りっぱなしの書込み操作であることを特徴とするデータプロセッサ。
【請求項３３】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、書込み操作が終了した際に確認パケットが生成され、それが要求元の処理素子に返送されるような、確認付き書き込み操作であることであることを特徴とするデータプロセッサ。
【請求項３４】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、トランザクション可能となっている処理素子から読込みトランザクションが起動され、データがメモリ位置から読み出され、各ノードで複製された後に、各処理素子のレジスタファイルに入力されるような、ブロードキャスト読込みであることを特徴とするデータプロセッサ。
【請求項３５】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、メモリアドレスとカウント値を含むブロック複写コマンドがコントローラにより生成されたことに応じ、各処理素子が書込み操作のシーケンスを生成するように構成され、ブロック内の全ての書込み操作を終了させることが可能となるような、ブロック書込みであることを特徴とするデータプロセッサ。
【請求項３６】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、メモリアドレスとカウント値を含むブロック読込みコマンドがコントローラにより生成されたことに応じ、各処理素子が読込み操作のシーケンスを生成するように構成され、ブロック内の全ての読込み操作を終了させることが可能となるような、ブロック読込みであることを特徴とするデータプロセッサ。
【請求項３７】
請求項２８から３１のいずれかに記載のデータプロセッサにおいて、前記メモリアクセスは、トランザクション可能となっている処理素子から書込みトランザクションが起動され、データが各ノードで複製され、各処理素子のローカルメモリに複写されるような、ブロードキャスト書込みであることを特徴とするデータプロセッサ。
【請求項３８】
請求項１記載のデータプロセッサにおいて、コントローラに示す前記手段は、処理素子に共通で、ネットワーク上の活動が停止した際にコントローラに通知するように構成された共有ロード／ストアユニットを含むことを特徴とするデータプロセッサ。
【請求項３９】
請求項３８記載のデータプロセッサにおいて、さらに、ネットワークから離れ、ネットワークに戻るトランザクション数を数え続ける計数手段を含むことを特徴とするデータプロセッサ。
【請求項４０】
請求項３９記載のデータプロセッサにおいて、計数手段は、前記パケット交換ネットワーク内の終端ノードを含み、前記終端ノードは、ネットワークから離れ、ネットワークに戻るトランザクション数を数え続けるように構成されていることを特徴とするデータプロセッサ。
【請求項４１】
請求項４０記載のデータプロセッサにおいて、前記終端ノードは、ネットワークを離れるトランザクション数と、ネットワークに戻るトランザクション数とを比較し、ネットワークから離れ、ネットワークに戻る全てのトランザクションが終了したことを共有ロード／ストアユニットに通知するように構成されていることを特徴とするデータプロセッサ。
【請求項４２】
請求項４１記載のデータプロセッサにおいて、前記共有ロード／ストアユニットは、前記終端ノードからの前記通知に応じて、ネットワーク上の活動が終了したことをコントローラに対して通知することを特徴とするデータプロセッサ。
【請求項４３】
添付図面中で実質的に記述されているデータプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の背景
本発明は、拡張された内部通信とメモリ配置を有する（例えば、データプロセッサなどの）プロセッサシステムに関するものである。
【背景技術】
【０００２】
従来のＳＩＭＤプロセッサの実装では、各処理素子（ＰＥ）に対して、ローカルメモリが設けられている。このメモリは、通常、各ＰＥに対して個別のものである。データを共有するためには、共通の共有メモリ中のデータにアクセスしなければならないか、ＰＥ間で何らかの通信手段を用いる必要がある。このような異なる種類のメモリを用いると、プログラムモデルが複雑化する。共有メモリへのデータの移動や、ＰＥ間でのデータの移動が必要になることは、性能上のオーバーヘッドとなる。
【０００３】
本発明の目的は、これらの問題又は他の問題を解決することにある。
【０００４】
従来技術
共有メモリを有するＳＩＭＤアーキテクチャを含む、様々な種類のアーキテクチャが、既に知られている。これらのいくつかについては、ｈｔｔｐ：／／ｗｗｗ．ｔｏｐ．ｏｒｇ／ＯＲＳＣ／２００３／ａｒｃｈｉｔｅｃｔｕｒｅ．ｈｔｍｌに概要が示されている。特に、下記の二つの種類がある。
【０００５】
分散メモリシステム：この場合、各ＰＥは、それ自身に付属したメモリを有している。ＰＥ間は、なんらかのネットワークによって接続され、必要に応じて、それらの各メモリ間でデータを交換する。（下記の）共有メモリシステムと比較すると、ユーザは、ローカルメモリ中でのデータの位置を意識する必要があり、必要に応じて、これらのデータの移動あるいは分配を明示的に行う必要がある。発明者の従来のアーキテクチャ（および、多くのＳＩＭＤアーキテクチャ）は、この種類のものである。
【０００６】
共有メモリシステム：共有メモリシステムは、複数のＰＥを有し、それら全てが、同一のアドレス空間を共有する。すなわち、全てのＰＥが同一のバイアスの元で一つだけのメモリにアクセスするため、データがどこに格納されているかを知ることは、ユーザにとって必要がなくなる。単一ＣＰＵのベクトルプロセッサは、このようなシステムの一例である。
【０００７】
以下の論文は、ルーティングを行なうＡＬＵ間ネットワークに関して記載したものである。このネットワークは、分散したＡＬＵに命令を配布し、レジスタファイルとの間でデータを交換するための相互接続を行うものである。
【非特許文献１】クラスタ化したマイクロアーキテクチャのための効率的な相互接続著者：ホアン・マニュエル  パルセリサ（Ｊｏａｎ−Ｍａｎｕａｌ  Ｐａｒｃｅｒｉｓａ）、ユリオ  サウキロ（Ｊｕｌｉｏ  Ｓａｈｕｑｕｉｌｌｏ）、アントニオ  ゴンザレ（Ａｎｔｏｎｉｏ  Ｇｏｎｚａｌｅｚ）、ホセ  ディアト（Ｊｏｓｅ  Ｄｕｏａｔｏ）
【非特許文献２】ＩＬＰ拡張性と性能のための経路をもつＡＬＵ間ネットワーク著者：カルシケイアン  サンカラリンガム（Ｋａｒｔｈｉｋｅｙａｎ  Ｓａｎｋａｒａｌｉｎｇａｍ）、ビンセント  アジェイ  シン（Ｖｉｎｃｅｎｔ  Ａｊａｙ  Ｓｉｎｇｈ）、ステファン  Ｗ．ケックラー（Ｓｔｅｐｈｅｎ  Ｗ．  Ｋｅｃｋｌｅｒ）、デゥグ  バーガー（Ｄｏｕｇ  Ｂｕｒｇｅｒ）所属：テキサス大学オースチン校  電気及び計算機工学科  コンピュータ科学学科  コンピュータアーキテクチャ技術研究室
【非特許文献３】多様なＴＲＩＰＳアーキテクチャを有するＩＬＰ，ＴＬＰ及びＤＬＰの開発著者：カルシケイアン  サンカラリンガム（Ｋａｒｔｈｉｋｅｙａｎ  Ｓａｎｋａｒａｌｉｎｇａｍ）、ラマダス  ナガラヤン（Ｒａｍａｄａｓｓ  Ｎａｇａｒａｊａｎ、ハイミン  リウ（Ｈａｉｍｉｎｇ  Ｌｉｕ）、チャンギュ  キム（Ｃｈａｎｇｋｙｕ  Ｋｉｍ）、ジェイユク  フウ（Ｊａｅｈｙｕｋ  Ｈｕｈ）、デゥグ  バーガー（Ｄｏｕｇ  Ｂｕｒｇｅｒ）、ステファン  Ｗ．ケックラー（Ｓｔｅｐｈｅｎ  Ｗ．  Ｋｅｃｋｌｅｒ）、チャールズ  Ｒ．ムーア（Ｃｈａｒｌｅｓ  Ｒ．  Ｍｏｏｒｅ）所属：テキサス大学オースチン校  電気及び計算機工学科  コンピュータ科学学科  コンピュータアーキテクチャ技術研究室ｃａｒｔ＠ｃｓ．ｕｔｅｘａｓ．ｅｄｕ  −  ｗｗｗ．ｃｓ．ｕｔｅｘａｓ．ｅｄｕ／ｕｓｅｒｓ／ｃａｒｔ
【発明の開示】
【発明が解決しようとする課題】
【０００８】
これらのネットワークは、分散したレジスタファイルを介して、複数のファンクションユニットを接続する。ファンクションユニットとレジスタファイル間の操作は、このネットワークを用いて、命令コマンドによって、データの始点と宛先にたどり着けるようになっている。したがって、ネットワークは、クラスタ化されたＡＬＵプロセッサのファンクションユニットをまとめて、ファンクションユニットをレジスタファイルに接続する。
【０００９】
このアプローチは、本明細書で説明するものとは異なり、出願人のクリアコネクトバス（ＣＣＢ）によって、命令の配布や、ファンクションユニットのレジスタファイルへの接続は行わない。また、始点および宛先アドレスは、ＳＬＵによって駆動されるが、命令ストリームによって静的に扱われることはない。
【００１０】
共有メモリＳＩＭＤの従来の実装方法では、以下のような問題が発生する。
・複雑で、拡張性のないクロスバー又はマルチポートのメモリシステムを必要とする。
・メモリアクセスに関して、集中したアービトレーションを用いるため、遅延と複雑度が増す。
・許されるアクセスの種類に制限が加えられることがある。例えば、全てのＰＥが固定したオフセットでアクセスするなど。
【００１１】
本発明の特徴に関する背景と情報に関連した、出願人の過去の特許と特許出願のいくつかを引用する。
・英国特許番号２３４８９７４（ロード／格納）、特許番号２３４８９８４（マルチタスク）、特許番号２３４８９７３（スコアボード）
・英国特許出願番号０３２１１８６．９（クリアコネクト）、出願番号０４００８９３．４（マルチタスク）、出願番号０４０９８１５．３（統合ＳＩＭＤ）
【課題を解決するための手段】
【００１２】
発明の概要
好ましい実施例において、上記の問題点に着目し、本発明は、ＰＥの全てのローカルメモリと、グローバル共有メモリとを含む単一の均一なアドレス空間を有する共有ＰＥメモリを提供するものである。
【００１３】
本発明は、ＳＩＭＤアレイ内のプロセッサ間通信を簡素化し、さらに、単一メモリと複数メモリとを、単一のアドレス空間に統合するものである。これにより、プログラマにとってのメモリ利用を簡素化し、コンパイラ最適化の能力を向上させる。また、本発明は、ローカルＰＥメモリの性能が得られるという利点と、共有メモリの使い勝手とを併せて実現するものである。さらに、本発明は、プログラムの中にＰＥ間通信と処理とが混在する場合に、ＳＩＭＤプロセッサの処理効率を向上させるものである。
【００１４】
本発明は、複数の処理素子と、前記複数の処理素子の少なくとも一つに対して限定されたメモリ手段と、前記処理素子と前記メモリとを相互接続するデータパケット交換ネットワークとを含み、前記処理素子のいずれかがメモリ手段にアクセス可能となるデータプロセッサを提供する。
【００１５】
本発明の好ましい実施例に関しては、以下の構成が考えられる。
【００１６】
メモリ手段は、前記処理素子の各々の一つに対応したローカルメモリを含み、一つの処理素子は一つのローカルメモリに対応している。
【００１７】
各処理素子は、アレイプロセッサの処理素子の配列の一つとして構成されている。
【００１８】
プロセッサアレイは、単一命令多重データ処理（ＳＩＭＤ）プロセッサとして構成されている。
【００１９】
メモリ手段は、複数の処理素子の間で共有される、単一のローカルメモリを含んでいる。
【００２０】
外部メモリが、前記処理素子のいずれかに利用可能となるように、外部メモリは、データパケット交換ネットワークに接続されている。
【００２１】
パケット交換ネットワークは、好ましくは、複数のノードを含み、各ノードは、各処理素子に接続され、少なくとも一つのノードは、前記メモリ手段に接続されている。
【００２２】
ノードは、線形のネットワーク状又は格子を構成する配列状に接続されている。
【００２３】
パケット交換ネットワークは、好ましくは、前記処理素子と前記メモリ手段との間の複数の同時伝送をサポートするように構成されている。
【００２４】
ノードは、好ましくは、前記処理素子に命令を発行し、前記メモリ手段にメモリ制御信号を発行するように構成された共通コントローラに接続されており、この場合、共通制御への通信のために、各ＯＲゲートなどの他の手段が、各処理素子からの状態信号を組み合わせ、各ノードからの状態信号を組み合わせる。
【００２５】
前記パケット交換ネットワーク中の前記ノードの一つは、前記ノードのいずれかと前記外部メモリとの間のインターフェースとして動作するように構成されている。
【００２６】
メモリ手段は、前記ローカルメモリの複数のインスタンスを含み、前記インスタンスの全ては、処理素子のいずれかによるアクセスのために、単一のメモリマップ又はメモリ空間に現れる。
【００２７】
また、外部メモリは、処理素子のいずれかによるアクセスのために、前記単一のメモリマップ又はメモリ空間に現れる。
【００２８】
さらに、少なくとも一つの別のデータプロセッサを含み、前記別のデータプロセッサの各々は、各メモリ手段を有し、前記各メモリ手段の各々は、前記データプロセッサの前記メモリ手段として、同一のメモリマップ又はメモリ空間に現れる。
【００２９】
各処理素子が、物理的に割り当てられたローカルメモリよりも多くのメモリを有し、追加されたメモリが、前記外部メモリ中のアドレスによって設けられるように見えるように、メモリ手段は、好ましくは、前記メモリマップ又はメモリ空間内の連続したアドレス範囲にマッピングされるか、前記メモリマップ又はメモリ空間内の不連続なアドレス範囲にマッピングされる。
【００３０】
前記メモリマップ又はメモリ空間内の各アドレスは、好ましくは、少なくとも、各処理素子の識別番号と、各ローカルメモリ内のアドレスとを組み合わせることにより決定される。データプロセッサが、一つあるいはそれ以上の数の別のデータプロセッサに付属する場合には、このアドレスは、好ましくは、プロセッサの識別番号を含んでいる。
【００３１】
好ましくは、前記メモリ手段の少なくとも一部は、データパケット交換ネットワークに接続されたキャッシュメモリを含んでおり、キャッシュメモリは、前記処理素子のいずれかに対して利用可能となるように構成されている。
【００３２】
プロセッサは、好ましくは、少なくとも一つの他の命令が終了するまでの間に、一つあるいはそれ以上の数の命令を実行するように構成され、これにより、メモリアクセスの変動する待ち時間が出ないようになる。
【００３３】
共通コントローラは、他の動作と独立、並行して、メモリアクセス操作を行うように構成されている。
【００３４】
プロセッサは、前記共通コントローラから前記メモリ手段に送られた制御信号に応じて、前記メモリ手段に格納されたデータへのメモリアクセスを実行するが、前記メモリアクセスは、対応したノードからのトランザクションを受信した前記メモリ手段のブロックに対してのみ可能となっている。
【００３５】
各処理素子は、処理素子がメモリアクセスに関与している状態を示すフラグを設定しその値を維持する。前記状態信号は、このフラグにより生成され、共通コントローラに送られる。このフラグは、メモリアクセスが終了した時点でクリアされる。
【００３６】
同様に、各ノードは、ノードがトランザクションに関与している状態を示すフラグを設定しその値を維持する。前記状態信号は、このフラグにより生成され、共通コントローラに送られる。このフラグは、トランザクションが終了した時点でクリアされる。
【００３７】
データプロセッサは、前記制御信号を発行し、システムクロックの１サイクルに一度、前記メモリアクセスを行う。
【００３８】
プロセッサは、各トランザクションパケットが、その宛先となるメモリに到着するまで待機し、その後、１サイクル分の前記メモリ制御信号を発行するか、全てのトランザクションパケットが、その宛先となるメモリに到着するまで待機し、その後、１サイクル分の前記メモリ制御信号を発行する。
【００３９】
プロセッサは、複数のメモリアクセスをまとめて実施し、前記メモリアクセスのバッチ処理を同時に行うことも可能である。
【００４０】
メモリアクセスは、処理素子が、書込みトランザクションの終了確認を待つことのない、確認なし書込み操作であってもよい。
【００４１】
メモリアクセスは、書込み操作の終了に応じて確認パケットが発行され、要求元の処理素子に返送されるような、確認付き書込み操作であってもよい。
【００４２】
メモリアクセスは、トランザクション可能な処理素子により読込みトランザクションが起動され、メモリ位置からデータが読み込まれ、各ノードで複製され、各処理素子のレジスタに入力されるような、ブロードキャスト読込み操作であってもよい。
【００４３】
メモリアクセスは、メモリアドレスとカウント値を含むブロック複写コマンドを共通コントローラが生成することに応じて、各処理素子が、書込み操作のシーケンスを生成するように構成され、これにより、ブロック内の全ての書込み操作を終了させることが可能となるような、ブロック書込み操作であってよい。
【００４４】
また、メモリアクセスは、メモリアドレスとカウント値を含むブロック読込みコマンドを共通コントローラが生成することに応じて、各処理素子が、読込み操作のシーケンスを生成するように構成され、これにより、ブロック内の全ての読込み操作を終了させることが可能となるような、ブロック読込み操作であってもよい。
【００４５】
さらに、メモリアクセスは、トランザクション可能な処理素子により書込みトランザクションが起動され、データが各ノードで複製され、各処理素子のローカルメモリに複写されるような、ブロードキャスト書込み操作であってもよい。
【実施例】
【００４６】
実施例の詳細な説明
一般論
好ましい実施例にあるように、本発明は、全システムの（外部メモリを含む）全てのメモリ素子に対して、利用可能なメモリ帯域とプロセッサ性能を最大化しながら、自然で一貫性をもつ方法でアクセスできるように、各ＳＩＭＤ処理素子（ＰＥ）に付属したメモリ素子を接続するものである。プロセッサアレイ中でＰＥを接続するネットワークは、新規な考え方ではないが、本発明は、発明を独自なものとするため、いくつかの有利な特徴を有している。
【００４７】
ロード／ストアメモリコントローラと、双方向パケット伝送ネットワークとを緊密に組合わせることにより、従来のレジスタ／ファイルプロセッサモデルを有するメモリに対して、プログラマからは見えない、ＰＥ間、さらにプロセッサ間の通信を行なうための複雑な機構が提供される。これらのデータ伝送が潜在的に長い待ち時間を伴うという計算処理上の非効率性は、マルチスレッドで動作可能なプロセッサを用いることにより解消される。このように、本発明は、従来のレジスタ／ファイルプロセッサモデルを有するメモリによって、コンパイラが、アプリケーションを最適化することが容易となるようにする。従って、プログラマは、システムでデータ移動を明示に行なうという責任から解放される。
【００４８】
本発明は、ハードウェアで利用可能となるような並行処理と帯域を最大限利用する。交換ネットワークの分割構造と非ブロック化構造とを利用し、並列して行なう多数のメモリ操作が実行可能となる。
【００４９】
本発明は、内部リソースの枠組みを越えて、メモリシステムを拡張することを可能とするものである。また、ネットワーク内でのトランザクションを扱うために用いられるアドレスは、グローバルメモリマップで用いられるアドレスと同一である。
【００５０】
本発明の単純さと、以下で説明する特徴により、本発明は、ソフトウェアアプリケーションが、直接、リソースを効率的に活用できるようにするものである。
【００５１】
この特徴は、任意のＳＩＭＤプロセッサに適用可能であり、任意の種類の処理素子（あるいはプロセッサ）の配列に対して、潜在的に適用できる可能性がある。
【００５２】
詳細
従来のＳＩＭＤプロセッサの概略を図１に示す。本図は、各ＰＥにメモリが付属した、ＰＥの配列である。命令をフェッチし、ＰＥ配列に命令を発行するコントローラも含まれている。本コントローラは、異なる種類の命令の実行を管理するための複数のユニットに、論理的に分割されている。例えば、アレイ制御ユニットは、演算および論理処理及びプログラム制御、並びに、レジスタ間でデータを交換するための命令など、ＰＥ内で全てが実行される命令を発行する。ロード／ストア（ＬＳ）ユニットは、ＰＥとそれらのメモリとの間でデータを交換するための命令を発行する。入力／出力（Ｉ／Ｏ）ユニットは、プロセッサとの間でデータを交換するための命令を発行する。これらのユニットの各々は、ＰＥ配列内の異なるハードウェアを用いるため、各ユニットによって制御される操作は、同時に実行される。
【００５３】
図１に概略を示すように、通常、従来のＳＩＭＤアーキテクチャは、各ＰＥに付属したメモリを備えている。すなわち、外部／共有メモリ（“単一”メモリ）と、ＰＥメモリ（“複数”メモリ）に対して、分離したアドレス空間を備えている。この構成を、図２のメモリマップに示す。
【００５４】
従来例の構成では、もし、データが、他のＰＥで共有されている場合や、外部メモリとの間で転送されている場合には、ＰＥに付属したローカルメモリを、プログラマが直接管理する必要がある。データは、各ＰＥに付属したメモリ内の作業空間位置との間で直接伝送する必要がある。このメモリマップは、ＰＥによって個別に保持され、他からは見えないものとなっている。この状況により、プログラマは、これらの分離したメモリ空間の間でなされるデータ交換を、明示的に管理する必要が生じる。
【００５５】
本発明は、図３に示すように、全てのＰＥのメモリを、一意的にアドレス指定可能な範囲をもつ単一のアドレス空間にマッピングすることにより、他のＰＥのメモリへのアクセスを可能とするものである。データを、配列内のＰＥ間で転送する必要がある場合には、直接メモリ複写を行なう操作が用いられる。
【００５６】
最も簡単な場合では、ＰＥメモリへのアクセスに用いられるメモリアドレスは、データを格納したＰＥ（図４の左側）のｉｄ番号と、そのＰＥのメモリ（図４の右側）のアドレスとを連結したものである。図示したように、これは、全てのＰＥメモリを、アドレス空間内の連続したブロックにマッピングするものである。しかし、この簡単なモデルは、ＰＥメモリのサイズが、１０の二乗のオーダであることを前提としている。従って、コンパイラは、データ効果命令を直接実行することなく、ＰＥと外部メモリとの間で自然にデータを交換することができる。これらの処理は、従来のＣ言語を用いて実装することが可能である。プログラマは、この機構が実際に存在していることや、それがどのように実装されているかを知ることなく、これらの特徴を利用できる。
【００５７】
さらに複雑なメモリマッピングを用いて、ＰＥメモリのブロックが不連続である場合に対応したり、１０の二乗のオーダでないメモリサイズのものを扱うことができる。これにより、各ＰＥの物理的なローカルメモリの範囲を越えて、それらのアドレスにアクセスすることにより、ＰＥメモリを効率的に“可視化”することが可能である。図５に示すように、このアクセスは、グローバルメモリに対するものであるが、各ＰＥにローカルに付属したものであるかのように扱われるメモリ領域に対するものである。各ＰＥへのアクセスと異なる唯一の点は、ＰＥのローカルなメモリに対応したアドレスへのアクセスの方が高速になるという点である。
【００５８】
他のアドレスマッピングを用いることも可能である。例えば、各ＰＥのメモリからワードをインターリーブすることが、ベクトル処理では有用となる。Ｎ個のＰＥがあり、個々のＰＥにメモリが付属する場合には、メモリマップ中の最初のＮワードが、各ＰＥの最初のワードに対応し、次のＮ個のワードは、各ＰＥの次のワードに対応する。この考え方の変形は、特に、マッピングが動的に変更され、例えば、ＦＦＴの“蝶”アドレスを生成する場合のような、ＤＳＰや画像処理のアプリケーションで有用である。
【００５９】
実装
図６に示すように、本発明の好ましい実施例では、双方向クリアコネクト“バス”（ＣＣＢ）を用いる。しかし、単に、言葉の上で“バス”と称されるものよりも、このバスは、実質的に、データパケットを交換する相互接続されたネットワークとなっている。クリアコネクトバスの詳細は、出願人の英国特許出願０３２１１８６．９（英国特許番号２３４８９７４）に記載されている。“バス”に沿って、ノード２が配置されており、各ＰＥ１が、対応したメモリ３のブロックと、他のＰＥのメモリブロック又は他のメモリブロックによらず、他の各メモリブロックに接続されるようになっている。ＣＣＢの最終端のノード４は、外部インターフェース又は他のＣＣＢネットワークに接続している。以上の全体構成を、図６に示す。
【００６０】
本例に好適となるように構成されたクリアコネクトの特徴を、以下に列挙する。
・モジュール構成となっており、任意の数のノードに対して拡張可能である。
・アドレスのデコード、ルーティング、アービトレーション、制御の全てが、分散しており、各ノードで、局所的に独立して行われる。
・モジュール構成により、各バスセグメントで発生する複数を並列して伝送することが可能である。
・さらに、各ノード内で、ノードを通る各経路が、並列伝送をサポートしている。
・バスは、ブロックされていない。すなわち、各ノードには、バッファリング機能が備えられており、常に、ノードがデータを受信できることが保証されている。
・データ到達性が保証されている。すなわち、データパケットが送信されたら、送信元に対し、データパケットが（最終的に）宛先に到達することが保証されている。
【００６１】
ＣＣＢがモジュラー構成となっており、独立した複数の同時伝送をサポートしていることから、全てのＰＥは、他のものと競合せずに、それら自身のメモリにアクセスすることが可能である。しかし、このアーキテクチャは、長い待ち時間があるとはいえ、いずれのＰＥ１からも、他のＰＥのメモリ３にアクセスを可能とする。図７に概略を示すように、メモリアクセスは、適切なＰＥの適切な位置と要求元のＰＥユニットのレジスタファイル５とを始点、終点としてルーティングされる。レジスタアドレスフィールドは、処理結果のデータの宛先を指定するために用いられ、ＰＥｉｄフィールドは、要求元のＰＥに処理結果を返送するために用いられる。これらの２つのフィールドは、ともに、図７において符号６で記されている。同様に、ＰＥｉｄフィールドは、トランザクションを宛先メモリにルーティングするために用いられ、メモリアドレスフィールドは、データの読込み、書込みに応じて、それらの位置を指定するために用いられる。これは、図７において、符号８でまとめて記されている。図７では、ＰＥ間のトランザクションの代表例として、３つのノード２を経由して、上列左側のＰＥから下列右側のメモリを結ぶものを、破線によって示している。
【００６２】
クリアコネクトバスを利用する他の利点として、図８に概略を示すように、バスの並列性により、ＰＥメモリとレジスタファイル間の伝送帯域を最大化できることがあげられる。図８では、ＰＥとＰＥメモリ間の様々なトランザクションの例を示すために、破線と一点鎖線を用いている。
【００６３】
メモリ３にデータを書き込む前に、データは、クリアコネクトノード２に一時的に保存される。ここで、十分な一時保存容量を持たせることにより、複数のトランザクションが、単一のメモリへアクセスした際に、バスが渋滞することがないことを保証する。この一時的なデータ保存は、各ノードでのメモリ間データ伝送の同期にも用いられる。これにより、各ノードがデータ書込みを行う際に、多数サイクルでメモリ間データ伝送を行う代わりに、メモリ間データ伝送を単一サイクルで行うことが可能となる。メモリ間データ伝送は、“サイクルスチール”を行なうことが可能となる。すなわち、メモリがアイドル状態以外の時に、メモリ間伝送を行なわれるようになっている。データがＰＥレジスタに返送される際にも、同様のことが行なわれる。説明を簡単化するために、この詳細は、以下の説明では省略する。
【００６４】
連鎖状にカスケード接続されたノード配置に代えて、格子状にノードを配置することも可能である。ここでは、ノードが、カスケード接続された配置に関して説明したような方法で動作可能となっている場合には、物理的なノード配置がどうのようになっているかは、プロセッサにとって問題にはならない。
【００６５】
離れた位置にあるメモリブロックへの伝送では、待ち時間が長くなるため、他のＰＥ動作と独立、並行して、これらの伝送を扱うために、変更されたロード／ストアユニット、すなわち、共有ロード／ストア（ＳＬＳ）ユニットを設ける。これにより、メモリ動作が進行している間に、ＰＥメモリへのアクセス競合を調停するＳＬＳユニットにより、ＰＥの動作を継続させることが可能となる。なお、この機構は、各ＰＥのそのローカルメモリに対する、既存のロード／ストア機構と置き換えることが可能であり、あるいは、既存の機構に付加することも可能である。後者の場合は、両者のロード／ストア機構を並行して用いることが可能となる。
【００６６】
ＰＥ間の伝送と他の非ローカルな伝送が続いている間に、プロセッサは、他のスレッドからの命令を実行することが可能である。マルチタスクが実装されている構成では、伝送が続いている間に、新たなスレッドに切替えることは、効率的ではない。しかし、スレッドからの命令が実行されている間に、それと同一のスレッドからの命令が実行可能となるように、コンパイラは、伝送をスケジューリングすることが可能である。ＳＭＴ実装構成では、伝送が続いている間に、任意の利用可能なスレッドからの命令を実行することが可能である。
【００６７】
ＰＥとメモリブロックとの間には、一対一のマッピングを行なう必要はない。図９に示すように、２つのＰＥがある場合、複数のＰＥによって共有された１つのメモリブロックが存在する。１つの大きなメモリブロックのほうが、複数の小さなブロックよりも、より効率的であるため、このようにするほうが好ましい。しかし、複数の小さなブロックを用いるほうが、より高速なアクセスを実現できる。本発明がもたらす柔軟性により、メモリ容量と性能との間の最適なトレードオフが可能となる。
【００６８】
図９のノード９のような、いわゆる“終端ノード”は、配列中の任意の位置に設けることができ、これにより、アクセスの待ち時間を最適化できる。終端ノードは、外部メモリ又は他の小さなプロセッサに対するインターフェースとして用いられる。二つあるいはそれ以上の数の終端ノードを設けることにより、複数のプロセッサを接続し、マルチプロセッサシステムを構成することができる。共通アドレス方式を用いることにより、ＰＥメモリであるか外部メモリであるかにかかわらず、システム内の全てのメモリは、任意のＰＥからアクセス可能となる。マルチプロセッサシステムでは、グローバルメモリアドレスは、宛先メモリの物理位置と、ＰＥ識別番号と、プロセッサ識別番号とによって構成されている。
【００６９】
バスに付属するいくつかのメモリブロックは、データキャッシュとして実装することが可能である。キャッシュが、データを掃き出し又は取り出す際には、ＳＬＳユニットのみが停止し、他のＰＥの動作は継続する。この時点で、スレッドの切替えが行なわれ、配列がビジー状態に保持される。
【００７０】
大きな配列では、一端から他端へのデータ伝送の待ち時間は、ノード間に余分にコネクションを付加することにより、減少させることができる。格子状、ツリー状又はハイパーキューブ状のネットワークで、ルーティングを行なうための様々な既知の方法がある。
【００７１】
冗長なＣＣＢノード、ＰＥ及びメモリを付加する方法は、効率を向上させるために用いられる。各アドレスを、近隣のノードに再割当し、故障したＰＥの修復されていないＣＣＢノードを通る全てのトラヒックをルーティングすることにより、損傷したＰＥ又はメモリ、あるいは両者を回避することが可能となる。
【００７２】
ＳＬＳ（共有ロード／ストアユニット）
【００７３】
従来は、標準的なロード／ストア（ＬＳ）ユニットは、命令シーケンスを制御することにより、メモリと各ＰＥのレジスタファイルとの間のデータ転送を扱う。
【００７４】
ＬＳユニットは、制御信号と、レジスタファイルアドレスと、メモリアドレスとを、全てのＰＥに対して発行する。出願人の標準的なロード／ストアコントローラの詳細については、出願人の英国特許番号２３４８９７４に記載されている。
【００７５】
共有ロード／ストア（ＳＬＳ）ユニットは、共有メモリ処理を管理する機能を有するものと同様である。図１０は、ＳＬＳ１０が、ＰＥ１と“バス”ＣＣノード２とやりとりする方法を、概略的に示したものである。共有ロード／ストアコントローラ１０は、“トランザクション可能”（Ｅ）フラグ値１１を各ＰＥから受け取り、“トランザクション進行中”（Ｔ）フラグ値１２を各バスノード２から受け取る。共有ロード／ストアコントローラは、（メモリ及びレジスタアドレスを含む）制御信号を全てのＰＥに送る。一実装例では、共有ロード／ストアコントローラは、メモリ制御信号をメモリブロック３に送る。また、他の実装例では、メモリ制御信号は、各バスノード２によって生成される。各メモリ（及び書込みのためのデータ）により用いられるアドレスは、バスノードから得られる。ＯＲゲート１３の連鎖により、各ＰＥ２及び各ノード２は、それらの状態値を、ＳＬＳ１０に返送することが可能となっている。
【００７６】
ＳＬＳが従来のロード／ストアユニットと異なる特徴は、共有処理のための所要時間が、始点ＰＥと終点ＰＥとの間の距離に依存している点にある。この値は、変動し、多分に未知の値である。また、この値は、各ＰＥによって異なる。従って、共有ロード又はストア処理が終了するまでの時間は、事前に知ることはできない。
【００７７】
データパケットは、各サイクルで、メモリの１つに到着するため、ＳＬＳユニットに関して可能となる実装の１つとしては、制御信号を送出して、各サイクルでのメモリアクセス（読込み又は書込み）を実行するものがある。対応するＣＣノードからの処理を受信したメモリのみが、実際にメモリ処理を実行する。この方法の利点は、簡単な点にある。一方、その欠点は、メモリ書込みが、複数のサイクルにまたがってしまい、メモリアクセスを行なっている他のメモリと干渉を起す可能性があるという点にある。ＳＬＳに関して、より効率的な方法は、全ての処理パケットがそれらの宛先メモリに到着するまで待機し、到着した時点でメモリ制御信号を一度だけ発行することである。さらに、これら二つの方法を組合わせることも可能であり、その場合は、所定の回数のメモリアクセスを“まとめて”おき、同時に一括実行する。
【００７８】
ＳＬＳは、トランザクションが発生したかどうか、あるいは未処理のトランザクションがあるかどうかを判定するために、ＰＥとバスノードのグローバル状態に関する情報を受信する必要がある。全てのＰＥが、トランザクションに関与するものとして判定された際には、ＳＬＳは、共有ロード／ストア処理を停止する。この動作は、全てのＰＥの“トランザクション可能”フラグとＣＣＢ活動フラグとによって判定する。グローバル状態は、任意の構成をもつ論理ネットワークを介して収集され、バス構成自身によって返信するか、又は、状態信号をＯＲ演算する独立したネットワークを介して返信する。各ＰＥは、共有メモリ処理に関与することを希望するかどうか示すローカルトランザクション可能フラグを設定する。
【００７９】
ＳＬＳユニットは、アレイコントローラ内の、レジスタ・インタロックなど他の制御機構や、他のロード／ストアユニット及び標準のＬＳユニットと同様のセマフォ機構とやりとりする必要がある。共通資源へのアクセスをサイクル毎に調停することにより、ＳＬＳユニットとＬＳユニットは、同時に動作することが可能となる。
【００８０】
トランザクションを制御するため、ＳＬＳは、全てのトランザクションが終了するまで、グローバルレジスタファイルとメモリに対する制御信号を継続して発行する。
【００８１】
通常、ＳＬＳユニットは、トランザクションのためのレジスタファイルアドレスを提供し、メモリアドレスは、各ＰＥでローカルに生成される。いくつかの伝送については、ＰＥが、レジスタアドレスをローカルに発行するか、メモリアドレスについては、ＳＬＳユニットにより発行されることが好ましい。
【００８２】
メモリアドレスは、標準のアドレス指定方法のいくつかを用いて、ＰＥにより提供することが可能である。これらのアドレスは、（上記のアドレスマッピングに依存し）暗示的に他のＰＥを指す。一方、プログラマが、明示的にＰＥ番号を引用してもよく、この場合は、ｉｄとメモリアドレスは、共有メモリアドレスを構成するためにローカルに組み合せられる。また、ＳＬＳが、ＰＥにより提供されたメモリアドレスに付加される基準アドレス又はオフセットを提供することも可能である。生成された共有メモリアドレスは、ＣＣＢを介して、データとして伝送され、ＣＣＢから宛先ＰＥへのトランザクションを実行するために用いられる。宛先ＰＥにおいて、メモリアドレスフィールドが抽出され、メモリに対するデータの読取り、書込みを制御することに用いられる。
【００８３】
特定の操作
本セクションでは、いくつかの特定の操作について説明する。
【００８４】
共有書込み
共有書込みは、“送りっぱなし”又は非送りっぱなし（確認付き）操作のいずれかを用いる。送りっぱなし書込みとは、ＰＥが、書込み処理が終了したことを確認する応答を待たないことである。すなわち、一旦、書込み処理がＰＥ処理バッファを離れると、ＣＣＢ上の活動のみがその処理の進行状態を示すものとなる。ＣＣＢ上の全ての活動が終了すると、全ての書込みが終了する。
【００８５】
送りっぱなし書込みについて、以下、詳細する。書込み操作を起動するために、ＳＬＳユニットは、全てのＰＥに対して、レジスタファイルアドレスをブロードキャストする。トランザクション可能なＰＥのみが、書込み処理に関与することができる。次に、ＳＬＳユニットは、アドレスと書き込まれるデータとを、トランザクション可能な各ＰＥからＣＣＢインターフェースに伝送する。ＣＣＢの“トランザクション進行中”信号が発行され、ＰＥは他の処理のために停止する。
【００８６】
ＣＣＢは、宛先ＰＥへのアドレスとデータとを含むパケットを、そのアドレスのｉｄフィールドを用いて回送する。データがＣＣＢを介して送られる距離に依存して、この伝送に要するサイクル数は、可変となる。ＣＣＢは、自律的に動作し、ＰＥ配列内でトランザクションをルーティングする。全てのＰＥは、同時にトランザクションを活動させることが可能であり、これにより、ＣＣＢの並列伝送機能が活用できる。
【００８７】
データがその宛先に到着すると、そのデータは、パケットから抽出されたメモリアドレスを用いて、ＰＥメモリに書き込まれる。各サイクルで、パケットは宛先ＰＥのメモリに到着し、これにより、ＣＣＢ上の全ての活動が停止するまで、ＳＬＳユニットは、継続してＳＲＡＭ制御を行なう。そして、ＳＬＳユニットは、書込み終了信号を、命令／スレッドシーケンサユニットに発行する。同一のＰＥメモリに対して複数の書込みが行なわれる場合には、その書込み順序はあらかじめ保証されてはいないが、書込み終了まで、その処理は続く。
【００８８】
確認付き書込み
書込みに対して、書込みを確認する必要がある場合には、以下に示すような、読込みと同様の操作を行なう。書込みデータが送信された際でも、ＰＥは、“トランザクション可能”フラグをクリアしない。書込み結果を戻すことができるように、始点となるＰＥのｉｄが、処理パケット中に含まれている。データがメモリ中に書き込まれた際に、応答パケットが生成される（これは、読込み応答と同様の方法であるが、この読込み応答にはデータは含まれない）。ＰＥは、結果パケットを受け取ると、トランザクション可能フラグを下げる。
【００８９】
共有読込み処理と同様に、プロセッサは、確認を行う書込みを待ちながら、他のスレッドからの命令を実行する。
【００９０】
ブロック書込み
ＰＥは、ＳＬＳが発行する‘ブロック複写’コマンドを用いて、共有書込みのシーケンスを生成することが可能である。これにより、ベースレジスタとメモリのアドレスと、カウント値が与えられる。その後の操作により、連続したレジスタファイルと連続したメモリアドレスを用いて、ブロック操作を実現する。各ＰＥは、トランザクションが発行される際に、その数をカウントし、所定の要求された数が送信されると、トランザクション可能フラグがクリアされる。ブロック中の全てのＰＥによる全ての書込みが終了するまで、ＳＬＳは動作を継続する。
【００９１】
ブロードキャスト書込み
また、共有書込み機構を用いて、ＰＥからのデータを全てのメモリに書き込むことも可能である。特別な“ブロードキャスト”複数共有書込み処理が、全ての関与可能なＰＥから発行される。各ＰＥは、異なるデータを、異なるメモリアドレスに対してブロードキャストすることが可能である。ＣＣＢは、このモードを検知し、各ＣＣＢノードにおいて、ローカルに付属したメモリにパケットを複写し、それを次のノードに伝送することにより、トランザクションを複製する。ＣＣＢの終端に到達したトランザクションがあれば、それは棄却されるか、他のプロセッサが接続されている場合には、そこへ伝送される。
【００９２】
以上の操作の間、ＳＬＳは、全てのＣＣＢ活動が停止するまで待機し、ブロードキャストが終了したことを判定する。全てのＰＥが動作可能状態である場合、すなわち、全てのＰＥが全てのメモリに書込み中である場合には、相当数のトランザクションが発行されることになる。
【００９３】
共有読込み
共有読込みは、２つに分かれたフェーズからなるトランザクション操作を有している。読込みトランザクションフェーズは、メモリに向けられた要求を生成する。読込みトランザクションが到着すると、その要求の中に組み込まれた返送アドレスを用いて、その始点に返送される。従って、共有読込みの操作は、共有書込みのトランザクションよりも長く続く。
【００９４】
読込み操作を開始させるために、ＬＳユニットは、レジスタファイルアドレスを全てのＰＥに対してブロードキャストする。トランザクション可能なＰＥのみが、読込み操作に関与することになる。次に、ＳＬＳユニットが、共有メモリアドレスと、要求元のＰＥのｉｄと宛先レジスタアドレスとを、トランザクション可能な各ＰＥからＣＣＢインターフェースに送る。ＣＣＢ“トランザクション進行中”信号が、オン状態になる。ＰＥのｉｄとレジスタアドレスが、読込みデータの返送先アドレスとして利用されるために、バス上のパケットに格納される。
【００９５】
ＣＣＢは、共有メモリアドレス中の宛先のＰＥのｉｄを用いて、パケットを宛先のＰＥに回送する。これには、データがＣＣＢを介して到達する距離に応じて変化するサイクル数を要する。ＣＣＢは、自律的に動作し、ＰＥ配列内でトランザクションを配信する。全てのＰＥは、トランザクションを活性化することが可能であり、これにより、ＣＣＢの並列伝送機能が実現されることとなる。
【００９６】
パケットが宛先ＰＥに到着すると、パケットから抽出したメモリアドレスを参照して、データがメモリから読み込まれる。データと、返送先のＰＥのｉｄとレジスタアドレスとが、ＣＣＢパケットに搭載される。返送ＣＣＢトランザクションが生成され、データがその始点に向けて送られる。パケットが始点のＰＥに戻ると、パケット中に含まれたレジスタアドレスを参照して、データがＰＥレジスタファイルに書き込まれる。そして、ＰＥが動作不可状態となり、次のトランザクションに備える。
【００９７】
ＣＣＢ上の全ての活動が終了し、全てのトランザクション可能フラグがオフとなるまで、ＳＬＳユニットは、ＳＲＡＭとレジスタの書込み制御信号を継続して送り出す。そして、読込み終了信号をシーケンサユニットに送る。
【００９８】
単一のＰＥメモリから複数の読込みが発生した場合には、その読込み順序は保証されないが、それらの読込みは全てが終了するまで続けられる。
【００９９】
ブロードキャスト読込み
ブロードキャスト書込みと同様に、単一の読込み操作によって、全てのＰＥの同一のレジスタに、データを戻す。この場合、各ＣＣＢノードは、メモリアクセスから戻されたデータを複製し、このデータは全てのＰＥに複写される。
【０１００】
ブロック読込み
ＰＥは、ＳＬＳによって与えられたブロック書込みコマンドにより、一連の共有読込みを生成する。ＳＬＳブロックコマンドは、ベースレジスタファイルとメモリのアドレスと、カウント値を与える。次に、ブロック操作のために、連続したレジスタファイルと連続したメモリアドレスを送出する操作を行う。ＰＥは、全てのトランザクションが終了するまで、動作する。
【０１０１】
外部トランザクション
上記と同一の基本的な機構を拡張することにより、外部メモリへのアクセスが可能となり、あるいは、異なるプロセッサのＰＥ配列間でのアクセスが可能となる。外部装置は、適切なインターフェースを有するバスの終端ノード（ＣＣＢＥＮ）を介して接続されている。配列中の任意のＰＥの指定範囲を超えるようなアドレスがあれば、それが実質的な終端ノードとなる。これらのアクセスは、同一のチップ上のメモリ／プロセッサに対するもの、あるいは、チップ外部の装置に対するものとなる。
【０１０２】
外部書込み
上述したように、共有書込みは、“送りっぱなし”の形態で用いられる。すなわち、共有書込みのいずれかが、ＣＣＢＥＮに対して送り出されるようにアドレス設定がなされた場合には、トランザクションは、バス上から実質的に消滅し、ＳＬＳから見て、書込みトランザクションは終了したと判断するような形態である。共有書込みをプロセッサに送ったならば、それ以降は、その活動についてフィードバックを必要としない形態である。
【０１０３】
しかし、分離した複数のプロセッサを同期化させたり、データの健全性を保証するためには、書込み確認を待つことが望ましい場合もある。書込み確認は、書込みトランザクションと確認トランザクションの、２段階のトランザクションから構成されている。書込みトランザクションの段階では、データアドレスフィールドを用いて、それらの宛先まで送達される書込み要求を生成する。書込み要求が、その宛先に到着すると、受信側は、確認トランザクションパケットを生成し、要求に埋め込まれていた返送アドレスフィールドを参照して、その始点、本例ではＣＣＢＥＮに返送する。
【０１０４】
ＣＣＢＥＮは、トランザクションの送信／返信時にカウントすることにより、このように変換された全てのトランザクションを数える。全ての確認が受信されると、ＳＬＳに対して、全ての確認付き書き込みトランザクションが終了したこと示す信号が発行される。個々のＰＥは、このプロセスには関与しない。
【０１０５】
プロセッサは、全ての書込みに対して確認が得られるのを待つ間に、他のスレッドからの命令を実行することが可能である。
【０１０６】
外部読込み
共有読込みは、２段階のトランザクションから構成されている。
【０１０７】
共有読込みが、ＣＣＢＥＮを介して、外部装置へアドレス設定されている場合には、ＳＬＳユニットは活動を継続して、通常の共有読込み操作が起こったかのように見せかけるが、外部に送られたトランザクションは、ローカルの共有読込みよりも多くの回数のサイクルを経て終了する。このように、ＣＣＢの活動がなくなったとしても、いくつかのトランザクション可能フラグの数はリセットされることはない。ＳＬＳユニットは、この状態を用いて、配列コントローラに対して、スレッド切替えが今起こっていることを示すことができる。
【０１０８】
その後に、返送トランザクションが、ＣＣＢＥＮに現れる。その時は、スレッド切替えが必要である状態を示す信号が、配列コントローラに送られ、全てのＰＥがその状態に復帰する。スレッド状態が復帰すると、ＳＬＳユニットは、再活性化され、トランザクションは進行可能となる。その後、動作は、通常の共有書込みとして継続する。
【０１０９】
到着トランザクション
トランザクションが、外部の始点（通常は、他のＰＥ配列）からＣＣＢＥＮに到着すると、トランザクションが開始したことを表す信号が、ＳＩＳに送られる。ＳＬＳは、トランザクションでアドレス指定されたＰＥメモリの読込み又は書込みに必要となる制御信号を生成する。読込みデータの返送トランザクションは、上述した方法により生成されるが、唯一違う点は、トランザクションの宛先は、配列の外部にあるという点である。バス上の全ての活動が終了すると、ＳＬＳは、停止する（すなわち、トランザクション可能ＰＥは存在しなくなる）。
【０１１０】
もし、ローカルの共有メモリアクセスが起こっている間に、外部トランザクションが到着した場合には、ローカルトランザクションが終了するまで、到着したトランザクションは停止する。同一の機構により、（ホスト／デバッグプロセッサなどの）任意の外部装置がＰＥメモリにアクセス可能となる。
【０１１１】
結論
上述した内容は、本発明の主たる特徴を示すものであり、クレームは、本発明の必須要件を定義するものであるが、以下の利点と特徴に関するリストは、好ましい実施様態によって本発明を実現することができる重要な特徴の概要を示すものである。
・ＭＴＡＰがマルチスレッド固有の特徴を有することにより、共有ロード／ストアの待ち時間を隠蔽できる。
・ＰＥメモリのグローバル化と統一したアドレス方式により、プログラミングモデルを簡単化できる。
・プログラマにとって、全ての種類のメモリへのアクセスが統一的に行える。従って、バルクでオンチップ用途ＳＲＡＭに対して、トランスペアレントな広帯域のトランザクションが可能となる。
・コンパイラに対して、様々なアドレス範囲と伝送の種類の、待ち時間に関する情報を与えられる。これにより、コンパイラが、（標準的な既知の方法を用いて）データ転送をスケジューリングし、最適化することが可能となる。
・ＰＥメモリを仮想化することができる。すなわち、各ＰＥに搭載された物理的なメモリ容量よりも大きな容量を有するが如くに扱える。
・プロセッサがトランスペアレントであるという性質が、異なるプロセッサのＰＥ配列間のアクセスをサポートする。
・異なるＰＥとメモリとの間の伝送を（異なるノードの）バス上で同時に行えるため、自動的にメモリのトランザクション帯域を最大に生かすことができる。
・多対一及び一対多の（ブロードキャストのような）トランザクションが可能となる。
・トランザクションは、ＣＣＢの待ち行列に自然に入る。
・並列処理される共有ロード／ストア及び‘通常の’複数ロード／ストア並びにＡＬＵ動作が提供されている。
・共有トランザクションは、多数回のサイクルを必要とするため、コンパイラは、事前にこれらをスケジューリングして、活動を重ね合わすことができる。
・メモリのブロックの、より効率的な区分けと、ＰＥへの割当てが可能となる。
・ＣＣＢノードアドレスを変更し、冗長なＰＥを付加することにより、故障部分を修復することができる。
・メモリはキャッシュ機能を備えることができる。
【図面の簡単な説明】
【０１１２】
本発明を、以下の図面を引用して説明する。
【図１】図１は、従来のＳＩＭＤアーキテクチャを示す図である。
【図２】図２は、単一及び複数メモリマップの概略図である。
【図３】図３は、２Ｋワードメモリ（１１ビットアドレス）と６４個のＰＥ（６ビットＰＥ数）を例にとり、ＰＥｉｄとメモリアドレスから共有メモリアドレスを生成する方法を示す、統合メモリのアドレスマップの概略図である。
【図４】図４は、ＰＥＩＤとメモリアドレスとから、共有メモリアドレスを生成する方法を示す図。
【図５】図５は、仮想化されたＰＥメモリのアドレスマップを示す図。
【図６】図６は、ＣＣＢ相互接続ＰＥメモリの概略図。
【図７】図７は、ＰＥレジスタとメモリの間で要求を配送するＰＥ間伝送の動作を示す図。
【図８】図８は、同時伝送の動作を示す図。
【図９】図９は、中間終端ノードを利用する本発明の一例を示す図。
【図１０】図１０は、本発明によるメモリ配置で用いられる共有ロード／ストアユニットを示す図。
【図１】
2008509493.tif 000003
【図２】
2008509493.tif 000004
【図３】
2008509493.tif 000005
【図４】
2008509493.tif 000006
【図５】
2008509493.tif 000007
【図６】
2008509493.tif 000008
【図７】
2008509493.tif 000009
【図８】
2008509493.tif 000010
【図９】
2008509493.tif 000011
【図１０】
2008509493.tif 000012
【手続補正書】
【提出日】平成19年4月10日(2007.4.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチスレッドのコントローラと、複数の処理素子の配列と、前記複数の処理素子の各々に対してローカルに設けられたメモリ手段と、前記処理素子と前記メモリとを相互接続するデータパケット交換ネットワークであって、前記処理素子のいずれかをメモリ手段にアクセス可能とするデータパケット交換ネットワークと、スレッド交換が起こっているかもしれないことを、前記ネットワークの活動とは独立してコントローラに通知する手段とを含むことを特徴とするデータプロセッサ。
【請求項２】
請求項１記載のデータプロセッサにおいて、前記プロセッサ配列は単一命令多重データ処理（ＳＩＭＤ）プロセッサであることを特徴とするデータプロセッサ。
【請求項３】
請求項１記載のデータプロセッサにおいて、前記メモリ手段は、複数の処理素子の間で共有される単一のローカルメモリを含むことを特徴とするデータプロセッサ。
【請求項４】
請求項１記載のデータプロセッサにおいて、さらに、データパケット交換ネットワークにも接続された外部メモリを含み、外部メモリが前記処理素子のどれかから利用できるようになっていることを特徴とするデータプロセッサ。
【請求項５】
請求項１記載のデータプロセッサにおいて、前記パケット交換ネットワークは、複数のノードを含み、各ノードは、各処理素子と、前記メモリ手段に接続された少なくとも一つのノードとに接続されていることを特徴とするデータプロセッサ。
【請求項６】
請求項５記載のデータプロセッサにおいて、前記ノードは、線形ネットワークで接続されていることを特徴とするデータプロセッサ。
【請求項７】
請求項５記載のデータプロセッサにおいて、前記ノードは、格子を構成する配列状で接続されていることを特徴とするデータプロセッサ。
【請求項８】
請求項１記載のデータプロセッサにおいて、前記パケット交換ネットワークは、前記処理素子と前記メモリ手段との間の複数の並列伝送をサポートするように構成されていることを特徴とするデータプロセッサ。
【請求項９】
請求項７記載のデータプロセッサにおいて、前記ノードは、前記コントローラに接続されており、前記処理素子に対して命令を発行し、前記メモリ手段に対してメモリ制御信号を発行するように構成されていることを特徴とするデータプロセッサ。
【請求項１０】
請求項７記載のデータプロセッサにおいて、さらに、前記コントローラへの通信のために、各処理素子からの状態信号を組合せ、各ノードからの状態信号を組み合わせる手段を含むことを特徴とするデータプロセッサ。
【請求項１１】
請求項５記載のデータプロセッサにおいて、請求項６に従属した場合、前記パケット交換ネットワークの前記ノードの一つは、前記ノードのいずれかと前記外部メモリとの間のインターフェース。
【請求項１２】
請求項１記載のデータプロセッサにおいて、前記ローカルメモリ手段は、処理素子のいずれかによるアクセスのために、単一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１３】
請求項４及び１２に記載のデータプロセッサにおいて、前記外部メモリもまた、処理素子のいずれかによるアクセスのために、単一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１４】
請求項１２記載のデータプロセッサにおいて、さらに、少なくとも一つ別のデータプロセッサを含み、前記別のデータプロセッサの各々は、各メモリ手段を有し、各前記メモリ手段は、前記データプロセッサの前記メモリ手段と同一のメモリマップ又はメモリ空間に現れることを特徴とするデータプロセッサ。
【請求項１５】
請求項１２記載のデータプロセッサにおいて、前記メモリ手段は、前記メモリマップ又はメモリ空間の連続したアドレス範囲にマッピングされることを特徴とするデータプロセッサ。
【請求項１６】
請求項１２記載のデータプロセッサにおいて、前記メモリ手段は、各処理素子が、付属している物理的なメモリよりも大容量のローカルメモリを有するかのように見えるように、前記メモリマップ又はメモリ空間の不連続のアドレス範囲にマッピングされることを特徴とし、付加されたメモリは、前記外部メモリの位置に設けられることを特徴とするデータプロセッサ。
【請求項１７】
請求項１２記載のデータプロセッサにおいて、前記メモリマップ又はメモリ空間内の各アドレスは、少なくとも各処理素子の識別番号と、各ローカルメモリ内のアドレスとを組み合せることにより決定されることを特徴とするデータプロセッサ。
【請求項１８】
請求項１４及び１７に記載のデータプロセッサにおいて、各アドレスは、さらに、各別のデータプロセッサの識別番号により決定されることを特徴とするデータプロセッサ。
【請求項１９】
請求項１記載のデータプロセッサにおいて、前記メモリ手段の少なくとも一部は、さらに、データパケット交換ネットワークにも接続されたキャッシュメモリを含み、キャッシュメモリが前記処理要素のいずれかに利用可能とされていることを特徴とするデータプロセッサ。
【請求項２０】
請求項１記載のデータプロセッサにおいて、前記プロセッサは、少なくとも一つの他の命令を実行している間に、一つあるいはそれ以上の数の命令を発行するように構成され、命令の変化する待ち時間がユーザに対して隠蔽されていることを特徴とするデータプロセッサ。
【請求項２１】
請求項１記載のデータプロセッサにおいて、前記プロセッサは、少なくとも一つの他の命令を実行している間に、一つあるいはそれ以上の数の命令を発行するように構成され、トランザクションの変化する待ち時間がユーザに対して隠蔽されていることを特徴とするデータプロセッサ。
【請求項２２】
請求項９記載のデータプロセッサにおいて、前記コントローラは、他の操作と独立、並行して、メモリアクセス操作を実行するように構成されていることを特徴とするデータプロセッサ。
【請求項２３】
請求項２０記載のデータプロセッサにおいて、前記プロセッサは、前記コントローラから前記メモリ手段に送られた制御信号に応じて、前記メモリ手段に格納されたデータへのメモリアクセスを実行するように構成され、前記アクセスは、対応するノードからトランザクションを受信した前記メモリ手段のブロックに対してのみ可能であることを特徴とするデータプロセッサ。
【請求項２４】
請求項１０記載のデータプロセッサにおいて、各処理素子は、処理素子がメモリアクセスに関与していることを示すフラグを設定、保持するように構成され、前記状態信号は、フラグから生成され、コントローラに送られ、フラグは、メモリアクセスが終了した時点で解除されることを特徴とするデータプロセッサ。
【請求項２５】
請求項１０記載のデータプロセッサにおいて、ノードは、ノードがトランザクションに関与していることを示すフラグを設定、保持するように構成され、前記状態信号は、フラグから生成され、コントローラに送られ、フラグは、トランザクションが終了した時点で解除されることを特徴とするデータプロセッサ。
【請求項２６】
請求項２３記載のデータプロセッサにおいて、前記プロセッサは、前記制御信号を発行し、システムクロックの１サイクルに一度、前記メモリアクセスを実行するように構成されていることを特徴とするデータプロセッサ。
【請求項２７】
請求項２３記載のデータプロセッサにおいて、前記プロセッサは、各トランザクションパケットが、その宛先メモリに到着するまで待機し、その後、メモリ制御信号を一度だけ発行するように構成されていることを特徴とするデータプロセッサ。
【請求項２８】
請求項２３記載のデータプロセッサにおいて、前記プロセッサは、全てのトランザクションパケットが、その宛先メモリに到着するまで待機し、その後、メモリ制御信号を一度だけ発行するように構成されていることを特徴とするデータプロセッサ。
【請求項２９】
請求項２３記載のデータプロセッサにおいて、前記プロセッサは、複数のメモリアクセスをまとめておき、前記メモリアクセスのまとまりを同時に実行するように構成されていることを特徴とするデータプロセッサ。
【請求項３０】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、書込みトランザクションが終了したことの確認を処理素子が待たないような、送りっぱなしの書込み操作であることを特徴とするデータプロセッサ。
【請求項３１】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、書込み操作が終了した際に確認パケットが生成され、それが要求元の処理素子に返送されるような、確認付き書き込み操作であることであることを特徴とするデータプロセッサ。
【請求項３２】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、トランザクション可能となっている処理素子から読込みトランザクションが起動され、データがメモリ位置から読み出され、各ノードで複製された後に、各処理素子のレジスタファイルに入力されるような、ブロードキャスト読込みであることを特徴とするデータプロセッサ。
【請求項３３】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、メモリアドレスとカウント値を含むブロック複写コマンドがコントローラにより生成されたことに応じ、各処理素子が書込み操作のシーケンスを生成するように構成され、ブロック内の全ての書込み操作を終了させることが可能となるような、ブロック書込みであることを特徴とするデータプロセッサ。
【請求項３４】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、メモリアドレスとカウント値を含むブロック読込みコマンドがコントローラにより生成されたことに応じ、各処理素子が読込み操作のシーケンスを生成するように構成され、ブロック内の全ての読込み操作を終了させることが可能となるような、ブロック読込みであることを特徴とするデータプロセッサ。
【請求項３５】
請求項２６記載のデータプロセッサにおいて、前記メモリアクセスは、トランザクション可能となっている処理素子から書込みトランザクションが起動され、データが各ノードで複製され、各処理素子のローカルメモリに複写されるような、ブロードキャスト書込みであることを特徴とするデータプロセッサ。
【請求項３６】
請求項１記載のデータプロセッサにおいて、コントローラに示す前記手段は、処理素子に共通で、ネットワーク上の活動が停止した際にコントローラに通知するように構成された共有ロード／ストアユニットを含むことを特徴とするデータプロセッサ。
【請求項３７】
請求項３６記載のデータプロセッサにおいて、さらに、ネットワークから離れ、ネットワークに戻るトランザクション数を数え続ける計数手段を含むことを特徴とするデータプロセッサ。
【請求項３８】
請求項３７記載のデータプロセッサにおいて、計数手段は、前記パケット交換ネットワーク内の終端ノードを含み、前記終端ノードは、ネットワークから離れ、ネットワークに戻るトランザクション数を数え続けるように構成されていることを特徴とするデータプロセッサ。
【請求項３９】
請求項３８記載のデータプロセッサにおいて、前記終端ノードは、ネットワークを離れるトランザクション数と、ネットワークに戻るトランザクション数とを比較し、ネットワークから離れ、ネットワークに戻る全てのトランザクションが終了したことを共有ロード／ストアユニットに通知するように構成されていることを特徴とするデータプロセッサ。
【請求項４０】
請求項３９記載のデータプロセッサにおいて、前記共有ロード／ストアユニットは、前記終端ノードからの前記通知に応じて、ネットワーク上の活動が終了したことをコントローラに対して通知することを特徴とするデータプロセッサ。
【国際調査報告】
2008509493.tif 000013
2008509493.tif 000014
2008509493.tif 000015
2008509493.tif 000016
2008509493.tif 000017
2008509493.tif 000018