(57)【特許請求の範囲】
【請求項１】
外部メモリと、
制御プロセッサと、
各々が、複数のベクトル処理装置（ＶＰＵ）と、複数のＶＰＵ制御装置（ＶＣＵ）と、直接メモリアクセス（ＤＭＡ）コントローラと、前記複数のＶＰＵ、前記複数のＶＣＵ、前記ＤＭＡコントローラ及び前記制御プロセッサの間にデータ転送パスを与えるＶＰＥメッセージ装置（ＶＭＵ）とを備える複数の並列接続ベクトル処理エンジン（ＶＰＥ）と、
前記外部メモリ、前記制御プロセッサ及び前記複数のＶＰＥの間にデータ転送パスを与える外部メモリ装置（ＥＭＵ）と、
を備え、
各ＶＰＥ内の前記ＶＭＵは、
複数のメッセージセンダーからのメッセージを記憶するように適応された第１のメモリと、
前記第１のメモリからメッセージをデキューし、前記デキューされたメッセージを複数のレシーバーへ送る順序を決定するように適応された第１のスケジューラと、
各レシーバーと関連付けられており入力メッセージが記憶される第２のメモリと、
を備える集積回路。
【請求項２】
前記第１のメモリは、対応するＶＰＵからのメッセージを受け取るように適応された第１の複数の仮想キューへと分割されており、
前記第１のスケジューラは、前記第１の複数の仮想キューからメッセージをデキューする順序を決定するように適応されており、
前記第２のメモリは、対応するＶＰＵからのメッセージを受け取るように適応された第２の複数の仮想キューへと分割されており、
前記集積回路は、更に、前記第２の複数の仮想キューからメッセージをデキューする順序を決定するように適応された第２のスケジューラを備える、
請求項１に記載の集積回路。
【請求項３】
各ＶＰＥ内の前記ＶＰＵ及びＶＣＵの各々は、
前記第１の複数の仮想キューからデキューされたメッセージを受け取るように適応された第１の受信キューと、
前記第２の複数の仮想キューからデキューされたメッセージを受け取るように適応された第２の受信キューと、
を備える、請求項２に記載の集積回路。
【請求項４】
少なくとも物理データを記憶する外部メモリと、
プログラマブルＰＰＵ制御装置（ＰＣＵ）を備えるＰＰＵ制御エンジン（ＰＣＥ）と、
各々が、物理シミュレーションのための物理データに関する計算を行うように適応された数学／論理演算装置のグループを各々備える複数のベクトル処理装置（ＶＰＵ）と、複数のＶＰＵ制御装置（ＶＣＵ）と、ＤＭＡコントローラを備える直接メモリアクセス（ＤＭＡ）サブシステムと、前記複数のＶＰＵ、前記複数のＶＣＵ、前記ＤＭＡサブシステム及び前記ＰＣＥの間にデータを転送するように適応されたＶＰＥメッセージ装置（ＶＭＵ）とを備える複数の並列接続ベクトル処理エンジン（ＶＰＥ）と、
前記外部メモリ、前記ＰＣＥ及び前記複数のＶＰＥの間にデータ転送パスを与える外部メモリ装置（ＥＭＵ）と、
を備え、
各ＶＰＥ内の前記ＶＭＵは、
読出しポート及び書込みポートを有し、複数の通信メッセージ仮想キューへと分割された第１のメモリと、
前記複数の通信メッセージ仮想キューからメッセージをデキューする順序を決定するように適応された第１のスケジューラと、
読出しポート及び書込みポートを有し、複数のＤＭＡ要求メッセージ仮想キューへと分割された第２のメモリと、
前記複数のＤＭＡ要求メッセージ仮想キューからメッセージをデキューする順序を決定するように適応された第２のスケジューラと、
を備える物理処理装置（ＰＰＵ）。
【請求項５】
各メッセージは、１つ以上の命令、ポインタ、アドレス、或いは計算のオペランド又は結果を表すデータのユニットを含む、請求項４に記載のＰＰＵ。
【請求項６】
前記ＤＭＡサブシステムは、更に、
前記ＤＭＡ要求メッセージ仮想キューからＤＭＡ要求メッセージを受け取り、前記ＤＭＡ要求メッセージを前記ＤＭＡコントローラへ転送するように適応された複数のＤＭＡ要求キューと、
前記ＤＭＡコントローラからＤＭＡ完了通知を受け取り、前記ＤＭＡ完了通知を前記ＶＣＵ及びＶＰＵへ転送するように適応されたＤＭＡ完了通知キューと、
を含む、請求項５に記載のＰＰＵ。
【請求項７】
外部メモリと、各々が複数のベクトル処理装置（ＶＰＵ）、複数のＶＰＵ制御装置（ＶＣＵ）及びＶＰＥメッセージ装置（ＶＭＵ）を備える複数の並列接続ベクトル処理エンジン（ＶＰＥ）と、前記外部メモリ及び前記複数のＶＰＥの間にデータ転送パスを与える外部メモリ装置（ＥＭＵ）とを備える集積回路を動作する方法において、
前記複数のＶＰＥのうちの第１のＶＰＥにおけるＶＰＵから通信メッセージを前記第１のＶＰＥの前記ＶＭＵにおける通信メッセージ仮想キューへと転送するステップと、
前記第１のＶＰＥの前記ＶＭＵが有する第１のスケジューラが、前記通信メッセージ仮想キューから前記通信メッセージを前記第１のＶＰＥのＶＰＵ又はＶＣＵに設けられたデスティネーション通信メッセージ受信キューへと転送する順序を決定するステップと、
前記第１のスケジューラで決定された順序に従って、前記通信メッセージ仮想キューから前記通信メッセージを前記デスティネーション通信メッセージ受信キューへと転送するステップと、
を備える方法。
【請求項８】
前記第１のＶＰＥにおけるＶＰＵから直接メモリアクセス（ＤＭＡ）要求メッセージを前記第１のＶＰＥの前記ＶＭＵにおけるＤＭＡ要求メッセージ仮想キューへと転送するステップと、
前記第１のＶＰＥの前記ＶＭＵが有する第２のスケジューラが、前記ＤＭＡ要求メッセージ仮想キューから前記ＤＭＡ要求メッセージをＤＭＡ要求キューへと転送する順序を決定するステップと、
前記第２のスケジューラで決定された順序に従って、前記ＤＭＡ要求メッセージ仮想キューから前記ＤＭＡ要求メッセージを前記ＤＭＡ要求キューへと転送するステップと、
前記ＤＭＡ要求キューから前記ＤＭＡ要求メッセージをＤＭＡコントローラへと転送するステップと、
前記ＤＭＡ要求メッセージに基づいて前記ＤＭＡコントローラの制御の下でＤＭＡトランザクションを行うステップと、
を更に備える、請求項７に記載の方法。
【請求項９】
前記ＤＭＡ要求メッセージに関連付けられたＤＭＡ完了通知をＤＭＡ完了通知キューへと転送するステップと、
前記ＤＭＡ完了通知キューから前記ＤＭＡ完了通知を前記第１のＶＰＥに設けられたＶＰＵ又はＶＣＵへと転送するステップと、
を更に備える、請求項８に記載の方法。
【請求項１０】
前記通信メッセージ仮想キューから前記通信メッセージを前記デスティネーション通信メッセージ受信キューへと転送する前に、前記通信メッセージ受信キューの占有度レベルをチェックするステップを更に備える、請求項７に記載の方法。
【発明の詳細な説明】
【発明の分野】
【０００１】
[0001]本発明の実施形態は、一般的に、超並列計算を行うための回路及び方法に係る。より詳細には、本発明の実施形態は、実時間物理シミュレーションを生成するように適応された集積回路アーキテクチャー及びそれに関連した方法に係る。
【関連技術の説明】
【０００２】
[0002]コンピュータゲームにおける最近の開発のため、複雑な実時間物理シミュレーションに対する要求が膨らんできている。何年もの間、幾つかの従来のコンテキストにおける比較簡単な物理ベースのシミュレーションが存在している。しかしながら、現在では、最先端のコンピュータゲームが、複雑な実時間物理ベースシミュレーションの開発のための主たる商業的動機付けとなっている。
【０００３】
[0003]物理的制約（このような物理的制約は、現実的であるか又は非現実的である）の定められたセットに従って相互作用するオブジェクト及び／又は環境のどのような可視表示も、一般的に、「物理ベース」シミュレーションであると考えることができる。アニメーション環境及びオブジェクトには、通常、物理的特性（例えば、質量、サイズ、位置、摩擦、移動属性等）が指定されており、それらは、その後、その定められた物理的制約に従って可視的に相互作用することができるようにされている。全てのアニメーションオブジェクトは、指定された物理的特性及び定められたセットの物理的制約から導出され定期的に更新される一連のデータを使用してホストシステムによって可視的に表示される。このような一連のデータのことを、以下、「物理データ」として総称する。
【０００４】
[0004]歴史的には、コンピュータゲームは、ゲームアプリケーション内に幾つかの制限された物理ベースシミュレーション能力を組み込んでいる。このようなシミュレーションは、ソフトウエアベースであって、ペンティアム（登録商標）の如きホストシステムの中央処理装置（ＣＰＵ）にて実行される特化した物理ミドルウエアを使用して実施される。「ホストシステム」は、例えば、パーソナルコンピュータ（ＰＣ）及びコンソールゲームシステムを含む。
【０００５】
[0005]あいにく、従来のＣＰＵの汎用設計では、従来の物理シミュレーションの規模及び性能が非常に限られてしまっている。種々な他の処理要求に対して、従来のＣＰＵは、物理シミュレーションの基礎となる数学的及び論理的演算を解くのに要する複雑なアルゴリズムを実行するために必要とされる処理時間に関して不十分なものである。即ち、物理ベースシミュレーションは、物理データから生ずる複雑な数学的及び論理的問題を解くことによって生成される。ある「物理問題」に、典型的な量の物理データ並びに数学的及び論理的演算の複雑さ及び数が含まれる場合には、効率的に解くことが重要になってくる。
【０００６】
[0006]利用しうるＣＰＵ処理時間の一般的不足は、従来のＣＰＵを形成する汎用回路におけるハードウエア限界によって、より悪化される。このようなハードウエア限界としては、数学／論理実行装置及びデータレジスタの数が不十分なこと、数学／論理演算のための並列実行能力が不足していること、及び外部メモリに対する帯域幅が比較的に制限されていること、がある。手短に言えば、従来のＣＰＵのアーキテクチャー及び動作能力は、複雑な物理ベースシミュレーションの計算及びデータ転送要求に十分に見合ったものではない。このことは、多くの従来のＣＰＵの速度及びスーパースケーラ特性でも言えることである。従来のＣＰＵの複数の論理回路及びルックアヘッド能力では、実行装置及びデータレジスタの比較的に限られた数、並列性の不足、及び不十分なメモリ帯域幅といったアーキテクチャーの欠点を克服できない。
【０００７】
[0007]通常のＣＰＵと比べて、クレイ（登録商標）によって製造されているような、いわゆるスーパーコンピュータは、超並列性によって特徴付けられている。その上、通常のＣＰＵでは、プログラムは、一般的に、単一命令単一データ（ＳＩＳＤ）動作を使用して実行されるが、スーパーコンピュータは、典型的に、単一命令多重データ（ＳＩＭＤ）動作を実行する多数のベクトルプロセッサを含んでいる。しかしながら、超並列実行能力の効果を達成するには、スーパーコンピューティングのコンテキスト内では、非常に大きなサイズとなり且つ非常にコストがかかるものとなってしまうという犠牲を払わなければならない。実際的で商業的な観点からすれば、従来のスーパーコンピュータをそのまま実施するような解決法をとることは非常に考えにくい。
【０００８】
[0008]従って、「コンシューマー向け」ホストシステムにて実行されるアプリケーション内に複雑な実時間物理ベースシミュレーションを組み入れる問題は、未解決のままである。最も簡単な物理問題を除いて、全ての物理問題の解決に対するソフトウエアベースの解決法は、不十分であると分かった。その結果として、実時間物理ベースシミュレーションの生成及び組み入れに対するハードウエアベースの解決法が、幾つかの関連しており同一人へ譲渡されている、いずれも２００３年１１月１９日に出願された米国特許出願第１０／７１５，４５９号、第１０／７１５，３７０号及び第１０／７１５，４４０号明細書において提案されている。これらの出願の主題は、ここに援用される。
【０００９】
[0009]前述した出願明細書に記載されているように、そのホストシステムディスプレイのフレームレートは、必然的に、物理ベースシミュレーションの基礎となる物理問題のサイズ及び複雑さを、それら物理問題が解かれる速度に関して、制約してしまっている。従って、あるシミュレーションを実時間にて可視的に表現するに十分なフレームレートとするためには、その設計の主眼点を、データ処理速度を増大することにおかなければならなくなる。データ処理速度は、データ転送能力と、数学／論理演算が実行される速度との組合せによって決定される。数学／論理演算が行われる速度は、それらの演算をより速いレートで順次実行することにより、及び／又はそれらの演算をサブセットへ分割し、その後、選択されたサブセットを並列にて実行することにより、増大することができる。従って、実時間にて物理ベースシミュレーションを生成するように適応されたシステムのアーキテクチャーは、主として、データ帯域幅を考慮することにより且つ実行速度要求により定められる。処理すべき物理データの特性もまた、効率のよいシステムアーキテクチャーを定めるための条件となる。
【００１０】
[0010]複雑な実時間物理シミュレーションによって必要とされる高いデータ帯域幅及び高い実行速度を与えるための幾つかの典型的なアーキテクチャー解決法は、関連しており同一人に譲渡されている、２００４年５月６日に出願された米国特許第１０／８３９，１５５号明細書に開示されており、この出願の主題は、ここに援用される。これら解決法の１つが、一例として、添付図面の図１に例示されている。特に、図１は、物理ベースシミュレーションのため非常に多くの並列計算を行うように適応された物理処理装置（ＰＰＵ）１００を示している。
【００１１】
[0011]ＰＰＵ１００は、通常、ホストシステムにて並列に実行される主アプリケーションに結合された二次アプリケーションの部分として物理ベース計算を実行する。例えば、主アプリケーションは、可視オブジェクトの集まりのための「ワールドステート」（例えば、位置、制約等）を定める対話型ゲームプログラムを含むことができる。主アプリケーションは、ゲームプログラムのためのユーザ入力／出力（Ｉ／Ｏ）を調整し、ワールドステートの継続的な更新を行う。また、主アプリケーションは、ユーザ入力に基づいてデータを二次アプリケーションへ送り、二次アプリケーションは、物理ベース計算を行ってワールドステートを変更する。二次アプリケーションがワールドステートを変更するとき、この二次アプリケーションは、定期的に且つ非同期的に、その変更されたワールドステートを主アプリケーションへ送る。
【００１２】
[0012]二次アプリケーションと主アプリケーションとの間の様々な対話は、ホストシステムに設けられた又はホストシステムの近くに設けられた主メモリ及びＰＰＵアーキテクチャーにおける種々なメモリからデータを読み取ったり、それらメモリへデータを書き込んだりすることにより、実施されるのが通常である。従って、適切なメモリ管理は、物理ベースシミュレーションを作り出す上でこの方法の一つの重要な側面である。
【００１３】
[0013]二次アプリケーションが主アプリケーションと並列に且つ非同期的に実行されるように主アプリケーションと二次アプリケーションとの間のワークロード（workload）を区分編成することにより、ＰＰＵの実現及びプログラミング並びに両アプリケーションは、実質的に簡単化される。例えば、このように区分編成することにより、主アプリケーションは、ワールドステートに対する更新についてのチェックを、二次アプリケーションのタイミングに従うように強制されるのでなく、都合の良いときに行うことができるようになる。
【００１４】
[0014]システムレベルの観点からは、ＰＰＵ１００は、種々の異なる仕方で実現することができる。例えば、これは、従来のＣＰＵの如きホストシステムに接続されるコプロセッサチップとして実現することができる。同様に、これは、デュアルコアプロセッサにおける１つのプロセッサコアの部分として実現することができる。実際に、当業者であれば、ＰＰＵ１００の機能をハードウエアにて実施するための多くの種々な方法を認識できるであろう。その上、当業者であれば、ハードウエア能力はソフトウエアにて実施することができ、又は、その逆にソフトウエア能力はハードウエアにて実施することができるので、ハードウエアとするかソフトウエアとするのかは比較的に任意的なものであることを認識できるであろう。
【００１５】
[0015]図１に例示されたＰＰＵは、高帯域幅外部メモリ１０２、データ移動エンジン（ＤＭＥ）１０１、ＰＰＵ制御エンジン（ＰＣＥ）１０３及び複数のベクトル処理エンジン（ＶＰＥ）１０５を備えている。ＶＰＥ１０５の各々は、一次（Ｌ１）メモリを各々有する複数のベクトル処理装置（ＶＰＵ）１０７と、二次（Ｌ２）メモリを有するＶＰＵ制御装置（ＶＣＵ）１０６とを備えている。ＤＭＥ１０１は、外部メモリ１０２（及び／又はホストシステム１０８）とＶＰＥ１０５との間のデータ転送パスを与えている。ＰＣＥ１０３は、ＰＰＵの全体制御及び／又はＰＰＵ１００とホストシステム１０８との間のデータ通信処理を集中化するように適応されている。ＰＣＥ１０３は、典型的に、ＰＣＥ制御及び通信プログラミングを記憶し実行するためのプログラマブルＰＰＵ制御装置（ＰＣＵ）１０４を備えている。例えば、ＰＣＵ１０４は、ＭＩＰＳテクノロジー社によるＭＩＰＳ６４  ５Ｋｆプロセッサコアを備えることができる。
【００１６】
[0016]ＶＰＵ１０７の各々は、一般的に、浮動小数点プロセッサ及び／又はスカラープロセッサの如き数学／論理実行装置のより低いレベルのグループである「データ処理装置」と考えることができる。各ＶＰＵ１０７の一次メモリＬ１は、一般的に、種々な数学／論理演算を実行するための命令及びデータを記憶するのに使用される。これら命令及びデータは、典型的に、ＶＣＵ１０６の対応するものによる制御の下で各ＶＰＵ１０７へ転送される。各ＶＣＵ１０６は、ＰＰＵの全メモリ制御機能のうちの１つ以上の機能態様を実施する。例えば、各ＶＣＵ１０６は、種々のＶＰＵ１０７のためのＰＰＵメモリ１０２からデータをフェッチするためＤＭＥ１０１へコマンドを発することができる。
【００１７】
[0017]米国特許第１０／８３９，１５５号明細書に記載されているように、図１に例示したＰＰＵは、任意数のＶＰＥ１０５を含むことができ、各ＶＰＥ１０５は、任意数のＶＰＵ１０７を含むことができる。しかしながら、ＰＰＵ１００の全計算能力は、ＶＰＥ及びＶＰＵの数によってのみ限定されるものではない。例えば、ＶＰＥ及びＶＰＵの数に関係なく、メモリバス帯域幅及びデータ依存性によっても、各ＶＰＥが行うことのできるワークの量は限定されるものである。更にまた、ＶＰＥ当たりのＶＰＵの数が増すにつれて、各ＶＰＥ内のＶＣＵは、ＶＰＵと外部メモリ１０２及び／又はＰＣＵ１０４との間で行わねばならない非常に多くのメモリアクセスコマンドによってオーバーロードとされてしまうことがある。その結果、ＶＰＵ１０６は、閉じてしまって、それらの対応するＶＣＵからの応答をアイドリングして待機することとなり、従って、貴重な計算リソースを浪費することとなってしまう。
【００１８】
[0018]要するに、ＰＰＵアーキテクチャーの複雑さを増すことによりＰＰＵの性能をそれだけ増大することが可能となるかもしれないが、その増大の程度と同じぐらい、リソース割当て及びタイミング問題のような他のファクタのため、そのようなより複雑なアーキテクチャーにおける性能は損なわれてしまうのである。
【発明の概要】
【００１９】
[0019]本発明の一実施形態によれば、集積回路は、外部メモリと、制御プロセッサと、複数の並列接続ＶＰＥとを備える。それらＶＰＥの各々は、好ましくは、複数のＶＰＵと、複数のＶＣＵと、ＤＭＡコントローラと、複数のＶＰＵ、複数のＶＣＵ、ＤＭＡコントローラ及び制御プロセッサの間にデータ転送パスを与えるＶＰＥメッセージ装置（ＶＭＵ）とを備える。この集積回路は、更に、外部メモリ、制御プロセッサ及び複数のＶＰＥの間にデータ転送パスを与える外部メモリ装置（ＥＭＵ）を備える。
【００２０】
[0020]本発明の別の実施形態によれば、ＰＰＵは、少なくとも物理データを記憶する外部メモリと、プログラマブルＰＣＵを含むＰＣＥと、複数の並列接続ＶＰＥとを備える。これらＶＰＥの各々は、物理シミュレーションのための物理データに関する計算を行うように適応された数学／論理演算装置のグループを各々が含む複数のＶＰＵと、複数のＶＣＵと、ＤＭＡコントローラを含むＤＭＡサブシステムと、複数のＶＰＵ、複数のＶＣＵ、ＤＭＡサブシステム及びＰＣＥの間にメッセージを転送するように適応されたＶＭＵとを備える。ＰＰＵは、更に、外部メモリ、ＰＣＥ及び複数のＶＰＥの間にデータ転送パスを与えるＥＭＵを備える。
【００２１】
[0021]本発明の更に別の実施形態によれば、集積回路を動作する方法が提供される。この集積回路は、外部メモリと、各々が複数のＶＰＵ、複数のＶＣＵ及びＶＭＵを含む複数の並列接続ＶＰＥと、外部メモリ及び複数のＶＰＥの間にデータ転送パスを与えるＥＭＵとを備える。この方法は、通信メッセージを、複数のＶＰＥのうちの第１のＶＰＥにおけるＶＰＵからその第１のＶＰＥのＶＭＵにおける通信メッセージ仮想キューへと転送し、その通信メッセージを、その通信メッセージ仮想キューから第１のＶＰＥのＶＰＵ又はＶＣＵに配設されたデスティネーション通信メッセージ受信先入れ先出しキュー（ＦＩＦＯ）へ転送することを含む。
【００２２】
[0022]以下、添付図面に例示した幾つかの実施形態に関して、本発明を説明する。図面を通じて、同様の典型的要素、構成部分又はステップについては、同様の参照符号を付して示している。
【典型的な実施形態の説明】
【００２３】
[0035]本発明の典型的な実施形態について、対応する図面を参照して、以下説明する。これらの実施形態は、実施例を教示するものとして提示されている。本発明の実際の範囲は、特許請求の範囲の記載により定められる。
【００２４】
[0036]一般的に、本発明の実施形態は、並列計算のコンテキストにおいて生ずる問題に対処するように設計されている。例えば、本発明の幾つかの実施形態は、並列に動作するデータ処理装置の集合と外部メモリとの間の非常に多くの同時メモリトランザクションを管理するための機構を提供する。本発明の更に他の実施形態は、データ処理装置の間の効率のよい通信手段を提供する。
【００２５】
[0037]本発明の実施形態は、高度に特化されたハードウエアプラットフォームにおいて種々な設計、実施、性能及びプログラミングトレードオフの間のバランスを取る必要があることを認識している。例えば、プラットフォームにおいて並列に接続されたコンポーネント、例えば、ベクトル処理装置の数が増大するにつれて、それらコンポーネントの動作と、それらコンポーネントの間のデータ転送とを調整するのに必要とされるネットワーキングの程度も増大する。このようなネットワーキングの要求により、プログラミングの複雑性が増すことになる。その上、超長命令語（ＶＬＩＷ）、マルチスレッドデータ転送及び多重スレッド実行の使用によっても、プログラミングの複雑性が増大されてしまう。更にまた、コンポーネントの数が増大するにつれて、付加されたコンポーネントにより、リソース（例えば、バス）の競合が生ずる。付加的なコンポーネントによりハードウエアプラットフォームの全スループットが増大されるとしても、個々のコンポーネントについての応答時間（例えば、メモリレイテンシー）が減少させられる場合がある。従って、本発明の実施形態は、これらの種々なトレードオフの間のバランスを取るように適応されている。
【００２６】
[0038]実時間物理シミュレーションのための数学／論理演算を行うように適応されており特化されたハードウエアプラットフォームのコンテキストにおいて、以下、本発明を説明する。しかしながら、ここに説明する発明の概念は、種々な他のコンテキストにも容易に適用できるものである。例えば、ここに説明する種々なデータ転送、スケジューリング及び通信機構は、ほんの２、３例をあげると、グラフィック処理及び画像処理の如き他の並列コンピューティングコンテキストに容易に適用できる。
【００２７】
[0039]図２は、本発明の１つの典型的な実施形態による物理ベースシミュレーションを実行するように適応されたＰＰＵ２００のブロックレベル図である。このＰＰＵ２００は、外部メモリ装置（ＥＭＵ）２０１、ＰＣＥ２０３及び複数のＶＰＥ２０５を備える。ＶＰＥ２０５の各々は、複数のＶＣＵ２０６、複数のＶＰＵ２０７及びＶＰＥメッセージ装置（ＶＭＵ）２０９を備える。ＰＣＥ２０３は、ＰＣＵ２０４を備える。例示として、ＰＰＵ２００は、各々が２つのＶＣＵ２０６及び８つのＶＰＵ２０７を含む８つのＶＰＥ２０５を含む。
【００２８】
[0040]ＥＭＵ２０１は、ＰＣＥ２０３、ＶＰＥ２０５、ホストシステム２０８及び外部メモリ２０２の間に接続されている。このＥＭＵ２０１は、典型的に、それに接続された種々なコンポーネントの間でデータ転送を行うように適応されたスイッチを備える。例えば、ＥＭＵ２０１は、１つのＶＰＥから別のＶＰＥへのデータ転送、ＰＣＥ２０３とＶＰＥ２０５との間のデータ転送、及び外部メモリ２０２とＶＰＥ２０５との間のデータ転送を行えるようにする。
【００２９】
[0041]ＥＭＵ２０１は様々な仕方で実現される。例えば、ある実施形態では、ＥＭＵ２０１は、クロスバースイッチを備える。他の実施形態では、ＥＭＵ２０１は、マルチプレクサを備える。更に別の実施形態では、ＥＭＵ２０１は、複数のマルチプレクサによって実施されるクロスバースイッチを備える。ＥＭＵを通してＶＰＥへ転送されるデータは、いずれも、ここでの説明では、ＥＭＵデータと称される。更に、ＥＭＵを介してＰＰＵに接続される外部メモリは、いずれも、ここでの説明では、ＥＭＵメモリと称される。
【００３０】
[0042]用語「直接メモリアクセス（ＤＭＡ）動作」又は「ＤＭＡトランザクション」は、ＶＰＥが関わるが、ＰＣＥ２０３又はホストシステム２０８のプロセッサが関わらないようないずれかのデータアクセス動作を意味している。例えば、外部メモリ２０２とＶＰＥとの間又は２つのＶＰＥの間の読取り又は書込み動作は、ＤＭＡ動作と称される。ＤＭＡ動作は、典型的に、ＶＣＵ２０６、ＶＰＵ２０７又はホストシステム２０８により開始される。ＤＭＡ動作を開始するため、イニシエータ（例えば、ＶＣＵ又はＶＰＵ）が、一般的に、キューのシーケンスを通して、ＤＭＡコマンドをＤＭＡコントローラ（図示していない）へ送る。それから、ＤＭＡコントローラは、種々のメモリの間のデータ転送を制御するため、そのＤＭＡコマンドに基づいて、ＶＰＥ２０５における種々のメモリ及び外部メモリ２０２又はホストシステム２０８と通信する。ＶＰＥ２０５の各々は、典型的に、それ自身のＤＭＡコントローラを含み、メモリ転送は、一般的に、ＶＰＥ内で又はＥＭＵ２０１を通して行われる。
【００３１】
[0043]ＶＰＥ２０５の各々は、ＶＣＵ２０６及びＶＰＵ２０７へのＤＭＡ転送及びＶＣＵ２０６及びＶＰＵ２０７からのＤＭＡ転送を行うように適応されたＶＰＥメッセージ装置（ＶＭＵ）を含む。各ＶＭＵは、典型的に、ＤＭＡコマンドを記憶するのに使用される複数のＤＭＡ要求キューと、ＤＭＡ要求キューからＤＭＡコマンドを受け取り、そのＤＭＡコマンドをＶＰＥ２０５における種々のメモリ及び／又は外部メモリ２０２へと送るように適応されたスケジューラとを含む。各ＶＭＵは、典型的に、更に、ＶＣＵ２０６及びＶＰＵ２０７の間で通信メッセージを送るのに使用される複数の通信メッセージキューを含む。
【００３２】
[0044]ＶＰＥ２０５の各々は、ＰＰＵ２００において独立の「計算レーン」を確立する。換言すると、独立の並列計算及びデータ転送が、ＶＰＥ２０５の各々を通して実施される。ＰＰＵ２００は、全部で８つの計算レーンを有する。
【００３３】
[0045]ＶＰＥ２０５を通して行われるメモリ要求及び他のデータ転送は、一般的に、各ＶＰＥに関連した一連のキュー及び他のハードウエアを通して管理される。例えば、図３は、メモリ要求及び他のデータ転送を管理するための複数のキュー及び関連ハードウエアを含む典型的なＶＰＥ２０５を示すブロック図である。これらキュー及び関連ハードウエアは、まとめて図２に示した如きＶＭＵの一実施形態として見ることができる。
【００３４】
[0046]図３に示した実施形態では、ＶＰＥ２０５は、複数のＶＰＵ２０７及び複数のＶＣＵ２０６を備える。各ＶＰＵ２０７は、ローカルメモリ５０１としてまとめて表される命令メモリ及びデータメモリを備える。好ましくは、複数のＶＰＵ２０７は、同じ命令メモリを共用する対として編成される。ＶＣＵ２０７の各々もまた、ローカルメモリ５０２としてまとめて表されるデータメモリ及び命令メモリを備える。
【００３５】
[0047]ＶＰＥ２０５は、更に、ＶＰＥ２０５におけるメモリのうちのいずれかと外部メモリ２０２の如き外部メモリとの間のデータ転送を行うように適応されたＤＭＡコントローラ５０３を備える。ＶＰＥ２０５は、更に、ローカルメモリ５０１及び５０２に比べて比較的に大量のデータを記憶するように適応された中間記憶メモリ（ＩＳＭ）５０５を備える。その構造及び機能の点から言うと、ＩＳＭ５０５は、従来のメモリ階層における「レベル２」メモリとして考えられ、ローカルメモリ５０１及び５０２は、従来のメモリ階層における「レベル１」メモリとして考えられる。ＤＭＡコントローラ５０３は、一般的に、ＥＭＵ２０１を通してＥＭＵデータブロックをフェッチし、そのＥＭＵデータをＩＳＭ５０５に記憶する。それから、ＩＳＭ５０５におけるＥＭＵデータは、種々の計算を行うため、ＶＰＵ２０７及び／又はＶＣＵ２０６へと転送され、ＶＰＵ２０７又はＶＣＵ２０６によって変更されたＥＭＵデータは、一般的に、ＥＭＵ２０１を通して外部メモリ２０２の如きメモリへと転送し戻される前に、ＩＳＭ５０５へとコピーし戻される。
【００３６】
[0048]ＶＰＥ２０５は、更にまた、ＶＰＵメッセージキュー５０８、ＶＰＵスケジューラ５０９、ＶＣＵメッセージキュー５０７及びＶＣＵスケジューラ５０６を含む。ＶＰＵメッセージキュー５０８は、スケジューラ５０９を通してＶＰＵ２０７からＶＣＵ２０６へとメッセージを転送する。同様に、ＶＣＵメッセージキュー５０７は、スケジューラ５０６を通してＶＣＵ２０６からＶＰＵ２０７へとメッセージを転送する。用語「メッセージ」は、ここでは、単に、データのユニット、好ましくは１２８バイトを指している。例えば、メッセージは、命令、ポインタ、アドレス、又はある計算のためのオペランド若しくは結果を含むことができる。
【００３７】
[0049]図４は、ＶＣＵからＶＰＵへ送られるメッセージの簡単な実施例を示している。図４を参照するに、図３のＶＣＵメッセージキュー５０７におけるメッセージは、データタイプ、ローカルメモリ５０１における出力アドレスへのポインタ、第１及び第２の入力データについての各サイズ、及びＩＳＭ５０５における第１及び第２の入力データへのポインタを含む。ＶＰＵがこのメッセージを受け取るとき、このＶＰＵは、このメッセージデータを使用して、ＩＳＭ５０５からローカルメモリ５０１における出力アドレスへ第１及び第２の入力データを転送するためのＤＭＡコマンドを生成することができる。
【００３８】
[0050]図３に示したＶＰＥ２０５は、複数のＶＰＵ２０７に対して１つのキュー及びスケジューラを含み、複数のＶＣＵ２０６に対して１つのキュー及びスケジューラを含むが、これらキュー及びスケジューラの数及び配置は変えることができる。例えば、各ＶＰＵ２０７又はＶＣＵ２０６は、それ自身のキュー及びスケジューラを有することができるし、或いは、更に多くのキュー及びスケジューラを有することさえできる。その上、１つより多いキューからのメッセージを、各スケジューラへ入力することもできる。
【００３９】
[0051]図５は、図３に示したスケジューラ５０６の典型的な実施形態を示している。図５に示した実施形態は、好ましくは、ＶＣＵからＶＰＵへのメッセージの送りを速めるようにハードウエアにて実現することができる。しかしながら、これは、ソフトウエアにおいても実現することができる。
【００４０】
[0052]図５を参照すると、スケジューラ５０６は、論理回路７０２及びＶＰＵ２０７に対応する複数のキュー７０３を含む。スケジューラ５０６は、ＶＣＵメッセージキュー５０７からメッセージを受け取り、論理回路７０２において実施される論理に基づいてそのメッセージをキュー７０３へ挿入する。それから、キュー７０３におけるメッセージは、ＶＰＵ２０７へ送られる。
【００４１】
[0053]図６は、ＥＭＵ２０１を通して受け取られたＥＭＵデータに関する計算を行うときに、図３に示したＶＰＥ２０５により行われる動作の典型的なシーケンスを例示するフローチャートである。図６に示す典型的な方法ステップは、以下においては、図１から図５に示したような典型的なシステム要素と区別するため、括弧を用いて（ＸＸＸ）として示す。
【００４２】
[0054]図６を参照すると、ＶＣＵ２０６のうちの１つが、ＥＭＵデータ要求コマンドをＤＭＡコントローラ５０３へ送り、ＤＭＡコントローラ５０３は、ＥＭＵデータをＩＳＭ５０５へコピーする（８０１）。それから、ＶＣＵ２０６は、ワークメッセージをそのメッセージキュー５０７へ挿入する。そのメッセージは、スケジューラによりＶＰＵ２０７のインバウンドキューへ送られる。このメッセージの受信時に、ＶＰＵは、ＥＭＵデータをＩＳＭ５０５からローカルメモリ５０１へロードするため、コマンドをＤＭＡコントローラ５０３へ送るように命令される（８０２）。次に、ＶＰＵ２０７は、ＩＳＭ２０５からロードされたデータを使用して計算を行う（８０３）。それから、ＶＣＵ２０６は、ローカルメモリ５０１から計算の結果をＩＳＭ５０５へと戻すため、ＤＭＡ５０３へコマンドを送る（８０４）。全てのワークメッセージが処理されたとき、ＶＣＵ２０６は、ＩＳＭ２０５から計算の結果をＥＭＵ２０１へ移すため、ＤＭＡコントローラ５０３へコマンドを送る（８０５）。
【００４３】
[0055]図７は、図３に示したＶＰＥ２０５において使用される代替的なスケジューラ及びキュー構成を示している。特に、図７Ａは、ＶＣＵ９０１とキュー及びスケジューラ９０２及び９０３との間に１対１の対応関係があるような構成を示している。スケジューラ９０３は、キュー９０２からのメッセージを２つのＶＰＵ９０４へ送り、そして、ＶＰＵ９０４は、キュー及びスケジューラ９０５及び９０６を通して、メッセージを他のＶＰＵ及びＶＣＵへと送る。図７Ｂは、ＶＣＵ９１１と複数のキュー及びスケジューラ９１２及び９１３との間に１対多数の対応関係があるような構成を示している。図７Ｂにおいて、各スケジューラ９１３は、メッセージを複数のＶＰＵ９１４のうちの１つへ送り、ＶＰＵ９１４の各々は、各キュー及びスケジューラ９１５及び９１６を通して、メッセージをＶＣＵ９１１へと送り返す。
【００４４】
[0056]図７に示したキュー及びスケジューラは、一般的に、通信及びデータ転送の目的で使用される。しかしながら、これら及び他のキュー及びスケジューラは、デバッグメッセージの記憶及び検索の如き他の目的にも使用できるものである。
【００４５】
[0057]図８は、本発明の更に別の実施形態によるＶＰＥを示している。この図８に示すＶＰＵは、ＶＰＥにおいてメッセージキューシステムを実施する仕方を例示しようとしているものであり、従って、ＶＰＵにおいて計算を行うのに使用されるような種々の処理要素は、例示を簡単化するため省略されている。
【００４６】
[0058]図８のＶＰＥは、その種々のコンポーネントの間に２つのタイプのメッセージを通すように適応されている。これらの２つのタイプのメッセージは、「通信メッセージ」及び「ＤＭＡ要求メッセージ」と称される。通信メッセージは、ＶＰＥにおける２つのＶＰＵの間又はＶＰＵとＶＣＵとの間に通されるユーザ定義データのユニットを含む。通信メッセージは、例えば、命令、データ要求、ポインタ又は任意のタイプのデータを含むことができる。一方、ＤＭＡ要求メッセージは、ＤＭＡトランザクションがＶＰＥにおけるＤＭＡコントローラによって行われることを要求するため、ＶＰＵ又はＶＣＵによって使用されるデータのユニットを含む。例示のため、図８に関して説明された各通信及びＤＭＡ要求メッセージは、データの１２８ビットを含むと仮定される。
【００４７】
[0059]図８のＶＰＥは、複数のＶＰＵ２０７、複数のＶＣＵ２０６、ＶＭＵ２０９及びＤＭＡサブシステム１０１０を備える。メッセージは、ＶＭＵ２０９を通して、ＶＣＵ２０６、ＶＰＵ２０７及びＤＭＡサブシステム１０１０の間に通される。
【００４８】
[0060]ＶＭＵ２０９は、通信メッセージをキューイングするための第１のメモリ１００１及びＤＭＡ要求メッセージをキューイングするための第２のメモリ１００２を備える。第１及び第２のメモリは両方とも、２５６ｘ１２８ビットメモリであり、各々は１つの読出しポートと１つの書込みポートとを有している。第１及び第２のメモリの各々は、１６の仮想キューへと細分割されている。第１のメモリ１００１における仮想キューは、通信メッセージ仮想キューと称され、第２のメモリ１００２における仮想キューは、ＤＭＡ要求仮想キューと称される。
【００４９】
[0061]これら仮想キューの構成及び使用法は、ユーザ定義される。しかしながら、各仮想キューが他のどの仮想キューとも独立して動作することを、ＶＭＵ２０９が保証するのが好ましい。２つの仮想キューは、一方の仮想キューの使用法又はコンテンツにより他方の仮想キューの進行が停止させられるようなことが決して起こらない場合には、互いに独立して動作するといえる。
【００５０】
[0062]第１及び第２のメモリ１００１及び１００２における各仮想キューは、ある容量及びスタートアドレスを有するように構成されている。その容量及びスタートアドレスは、典型的に、１２８ビットのユニット、即ち、１つのメッセージのサイズにて特定されている。例えば、２の容量を有する仮想キューは、２つのメッセージ、又は２５６ビットを記憶することができる。仮想キューの容量が０に設定されている場合には、このキューは、インアクティブであると考えられる。しかしながら、全てのアクティブキューは、一般的に、２と２５６との間の容量を有している。
【００５１】
[0063]各仮想キューは、１と、この仮想キューの容量から１を引いたものとの間で変えることができる「高水位(high-water)」占有度しきい値を有するようにも構成されている。仮想キューに記憶されたデータの量がその高水位占有度しきい値を越える場合には、その仮想キューは、その仮想キューの挙動の変化を示す信号を発生することができる。例えば、その仮想キューは、その占有度がその高水位占有度しきい値より下に下がるまでは、データを受け入れないことを指示するため、ＰＣＥ２０３へインタラプトを送ることができる。
【００５２】
[0064]各仮想キューは、「通常」モード又は「リングバッファ」モードにて動作するように構成することもできる。リングバッファモードにおいては、高水位占有度しきい値は無視され、その仮想キューに記憶されていた古いデータを新しいデータで上書きしてでも、新しいデータは、常に、その仮想キューにエンキューされていく。仮想キューにおける古いデータが新しいデータにより上書きされる場合には、その仮想キューにおける読出しポインタ及び書込みポインタは、典型的に、その読出しポインタがその仮想キューにおける最も古いデータを指し、その書込みポインタがデータを書き込む次のアドレスを指すように、移動される。
【００５３】
[0065]各通信メッセージ仮想キューは、デスティネーションのセットを有するように構成される。例えば、図８に示すＶＰＥでは、ありうるデスティネーションとしては、８つのＶＰＵ２０７、２つのＶＣＵ２０５及びＰＣＥ２０３があり、全部で１１個のデスティネーションがある。これら１１個のデスティネーションは、一般的に、各仮想キューがそれら１１個のデスティネーションのうちの任意のサブセットへメッセージを送れるように構成されるように、１１ビットのビットストリングとしてエンコードされる。
【００５４】
[0066]仮想キューの種々な特性をコンフィギュレーションするための１つの方法として、その仮想キューの各々に対するコンフィギュレーション情報をメモリマップコンフィギュレーションレジスタに記憶させるものがある。メモリマップコンフィギュレーションレジスタは、典型的に、ＰＣＥ２０３のメモリアドレス空間及びＶＣＵ２０６のメモリアドレス空間へマッピングされている。ＶＣＵ２０６は、そこに記憶されたコンフィギュレーション情報にアクセスすることができるが、仮想キューは、ＰＣＥ２０３によってのみコンフィギュレーションされるのが好ましい。
【００５５】
[0067]ＶＰＵ２０７及びＶＣＵ２０６の各々は、ＶＭＵ２０９からメッセージを受け取るための２つの先入れ先出しキュー（ＦＩＦＯ）を含む。これら２つのＦＩＦＯは、まとめて「受信ＦＩＦＯ」と称され、これらは、通信メッセージ受信ＦＩＦＯ及びＤＭＡ完了通知受信ＦＩＦＯを含む。各通信メッセージ受信ＦＩＦＯは、好ましくは、８エントリー−１２８ビットキューを含み、各ＤＭＡ完了通知受信ＦＩＦＯは、好ましくは、３２エントリー−３２ビットキューを含む。
【００５６】
[0068]ＶＰＥ２０７及びＶＣＵ２０６の両者は、ＶＭＵ２０９へメッセージを送るためストア命令ＳＴＱを使用し、それら各受信ＦＩＦＯからメッセージを読み出すためロード命令ＬＤＱを使用する。
【００５７】
[0069]図３を参照して前述したように、ＶＰＵ２０７の対は、単一の物理メモリを共用することができる。従って、ＶＰＵ２０７の各対のための受信ＦＩＦＯは、同じ物理メモリにて実施することができる。ＶＰＵ２０７の対に対する受信ＦＩＦＯが同じ物理メモリにて実施される場合には、それらＶＰＵ２０７の間でロード命令及びストア命令をそのメモリへ送ろうとするメモリ競合が生ずることがある。このようなタイプのメモリ競合に対処する簡単な方法は、それらＶＰＵの対のうちの一方に、その対のうちの他方のＶＰＵに対する絶対優先を与えることである。
【００５８】
[0070]ＶＭＵ２０９における仮想キューと同様に、各ＶＰＵにおける受信ＦＩＦＯは、互いに独立して動作する。換言すると、一方の受信ＦＩＦＯの使用法又はコンテンツにより、他方の受信ＦＩＦＯの進行が停止されるようなことはない。
【００５９】
[0071]また、ＶＭＵ２０９における仮想キューと同様に、通信メッセージ受信ＦＩＦＯは、コンフィギュレーションできる高水位占有度しきい値を有する。通信メッセージ受信ＦＩＦＯの占有度がその高水位占有度しきい値に達するとき、その通信メッセージ受信ＦＩＦＯは、更なるメッセージがそのＦＩＦＯへ送られないようにするため、バックプレッシャー指示を発生する。通信メッセージ受信ＦＩＦＯに対する高水位占有度しきい値は、典型的には、１と５の間であり、デフォルト値は５である。
【００６０】
[0072]特定の通信メッセージ仮想キューに対するデスティネーションとしてコンフィギュレーションされた全ての通信メッセージ受信ＦＩＦＯがそれらの各高水位占有度しきい値に達する場合には、その通信メッセージ仮想キューは、それらのデスティネーションへいかなる通信メッセージも送らないようにされる。結果として、その通信メッセージ仮想キューは、一杯となり、その仮想キューへデータをエンキューしようとするその後の試みは失敗となる。
【００６１】
[0073]その通信メッセージ仮想キュー内の全ての通信メッセージは、ＦＩＦＯの順序にて、対応する通信メッセージ受信ＦＩＦＯへと転送される資格がある。しかしながら、ＶＭＵ２０９は、クロックサイクル当たり１つの通信メッセージを受信ＦＩＦＯへ転送することができるだけである。従って、それら通信メッセージ仮想キューの間の公平を保つため、スケジューラ１００３がＶＭＵ２０９に設けられている。
【００６２】
[0074]スケジューラ１００３は、典型的には、ラウンドロビンスケジュール技法を使用して、通信メッセージ仮想キューと通信メッセージ受信ＦＩＦＯとの間のデータ転送のスケジュールを行う。この技法によれば、スケジューラは、ラウンドロビン順序にて各通信メッセージ仮想キューを審査する。審査している仮想キューが空でなく、その仮想キューにおける次の通信メッセージが高水位占有度しきい値を越えていないデスティネーション通信メッセージ受信ＦＩＦＯを有する場合には、スケジューラは、そのデスティネーション通信メッセージ受信ＦＩＦＯへとその通信メッセージを送る。通信メッセージ仮想キューの審査を効率良く行うため、スケジューラ１００３は、各通信メッセージ仮想キューにおける次のメッセージに対するデスティネーション通信メッセージ受信ＦＩＦＯの指示を維持する。こうすることにより、スケジューラ１００３は、そのデスティネーション通信メッセージ受信ＦＩＦＯがそれらの各高水位占有度しきい値を越えていないかを効率よくチェックすることができるようになる。
【００６３】
[0075]通信メッセージ仮想キューの全てが空であるか又は対応するデスティネーション通信メッセージ受信ＦＩＦＯの全てがそれらの各高水位占有度しきい値を越えている場合には、それら通信メッセージ仮想キューと通信メッセージ受信ＦＩＦＯとの間のデータ転送は行われない。そうでない場合には、スケジューラ１００３によって選択された通信メッセージは、通信メッセージ仮想キューのうちの１つのヘッドから通信メッセージ受信ＦＩＦＯのうちの１つのテールへと移される。
【００６４】
[0076]第２のメモリ１００２におけるＤＭＡ要求メッセージ仮想キューは、ＶＰＵ２０７及びＶＣＵ２０６からＤＭＡ要求メッセージを受け取る。各ＤＭＡ要求メッセージは、典型的には、任意の３２ビットのＤＭＡ完了通知と共に、１２８ビットの情報を含む。ＤＭＡ要求メッセージは、ＤＭＡ要求メッセージ仮想キューによりＤＭＡ要求ＦＩＦＯ１００７のセットへと転送される。メッセージがＤＭＡ要求メッセージ仮想キューから転送される順序は、スケジューラ１００４によって決定される。
【００６５】
[0077]ＤＭＡ要求ＦＩＦＯ１００７におけるＤＭＡ要求メッセージは、ＤＭＡコントローラ１００８へ転送され、ＤＭＡコントローラ１００８は、ＤＭＡ要求メッセージに基づいてＤＭＡトランザクションを行う。典型的なＤＭＡトランザクションは、例えば、ＶＰＵ２０７及び／又はＶＣＵ２０６に関連した種々のメモリへのデータの移動及び／又はそれらメモリからのデータの移動を含む。ＤＭＡトランザクションが完了するとき、そのＤＭＡトランザクションを開始させたＤＭＡ要求メッセージに関連したＤＭＡ完了通知のいずれも、ＤＭＡコントローラ１００８からＤＭＡ完了通知ＦＩＦＯ１００９へと転送される。それから、そのＤＭＡ完了通知は、ＶＰＵ２０７又はＶＣＵ２０６のうちの１つにおけるＤＭＡ完了通知受信ＦＩＦＯへと転送される。
【００６６】
[0078]ＤＭＡ要求メッセージに加えて、ＤＭＡ要求メッセージ仮想キューは、拡張完了通知（ＥＣＮ）メッセージを含むことができる。ＥＣＮメッセージは、ＤＭＡ要求メッセージ仮想キューにおいてＤＭＡ要求メッセージの直ぐ後に挿入される１２８ビットのメッセージである。このＥＣＮメッセージは、典型的には、３２ビットの完了通知の代わりに使用される。このＥＣＮメッセージは、そのＤＭＡ要求メッセージがＤＭＡコントローラ１００８へ送られたことを示すため、通信メッセージ仮想キューのうちの１つにより通信メッセージ受信ＦＩＦＯへと送られる。典型的なＥＣＮメッセージが、図８において破線矢印にて示されている。
【００６７】
[0079]ＥＣＮメッセージは、ＤＭＡ要求メッセージにおける「フェンス」指示の値に従って、ＤＭＡ要求メッセージをＤＭＡコントローラ１００８へ送る時に、又はＤＭＡ要求メッセージによって開始されたＤＭＡトランザクションの完了時に、通信メッセージ仮想キューへ送ることができる。もし、そのフェンス指示が第１の値に設定されている場合には、ＥＣＮメッセージは、ＤＭＡ要求メッセージをＤＭＡコントローラ１００８へ送る時に、通信メッセージ仮想キューへ送られる。そうでない場合には、ＥＣＮメッセージは、ＤＭＡトランザクションの完了時に、通信メッセージ仮想キューへ送られる。
【００６８】
[0080]スケジューラ１００４は、好ましくは、ＤＭＡ要求メッセージがＤＭＡ要求メッセージ仮想キューからＤＭＡ要求ＦＩＦＯ１００７へ転送される順序を決定するため、ラウンドロビンスケジュールアルゴリズムを使用する。ラウンドロビンスケジュールアルゴリズムに従って、スケジューラ１００４は、現クロックサイクル中に空でないＤＭＡ要求メッセージ仮想キューから次のＤＭＡ要求メッセージを読み出す。前記次のＤＭＡ要求メッセージは、ラウンドロビン順序にて連続するクロックサイクルで上記空でないＤＭＡ要求メッセージ仮想キューを循環させることにより、選択される。
【００６９】
[0081]上記次のＤＭＡ要求メッセージは、次の条件、即ち、ＤＭＡ要求ＦＩＦＯ１００７が全て一杯であること、上記次のＤＭＡ要求メッセージが、一杯であるか又はその高水位占有度しきい値を越えているＤＭＡ完了通知受信ＦＩＦＯに対して宛てられたＤＭＡ完了通知を有すること、又は、ＤＭＡ要求メッセージが関連するＥＣＮメッセージを有し、ＥＣＮメッセージのデスティネーション通信メッセージＦＩＦＯが一杯であること、のうちの１つ以上の条件が満足されない限り、現クロックサイクル中にＤＭＡ要求ＦＩＦＯへ転送される。
【００７０】
[0082]仮想キューの間に真の独立性を与えるため、ＶＭＵ２０９は、ＤＭＡ完了通知ＦＩＦＯ１００９がＤＭＡコントローラ１００８の進行を妨げないようにしなければならない。ＤＭＡ完了通知ＦＩＦＯ１００９は、例えば、ＶＣＵ２０６又はＶＰＵ２０７が遅くてそれらの各ＤＭＡ完了通知受信ＦＩＦＯを使い果たし、ＤＭＡ完了通知が一杯とさせられるような場合に、ＤＭＡコントローラ１００８をブロックしてしまう。ＤＭＡ完了通知ＦＩＦＯ１００９によりＤＭＡコントローラ１００９の進行を妨げてしまうのを、ＶＭＵ２０９が阻止できるようにする１つの方法としては、３２ビットのＤＭＡ完了通知を含むいずれのＤＭＡ要求メッセージも、そのＤＭＡ完了通知が向けられているＤＭＡ完了通知受信ＦＩＦＯがその高水位占有度しきい値より下でない限り、そのＤＭＡ要求仮想キューからデキューされないようにすることがある。
【００７１】
[0083]ＤＭＡコントローラ１００８は、異なるＤＭＡ要求メッセージに応答して、種々の異なるタイプのＤＭＡトランザクションを行うことができる。例えば、あるＤＭＡトランザクションは、１つのＶＰＵの命令メモリから別のＶＰＵの命令メモリへとデータを移すものである。他のトランザクションは、ＶＰＵ２０７のうちの幾つか又は全て、例えば、図２及び図８において接尾辞「Ａ」を付したＶＰＵのデータメモリにおける特定のアドレスへＩＳＭ１０１１からデータを送信するものである。更に他のトランザクションは、ＶＰＵ２０７のうちの幾つか又は全ての命令メモリへＩＳＭ１０１１からデータを送信するものである。
【００７２】
[0084]ＤＭＡ要求メッセージによって開始される別のタイプのＤＭＡトランザクションは、アトミックＥＭＵ  ＤＭＡトランザクションである。アトミックＥＭＵ  ＤＭＡトランザクションでは、ＤＭＡコントローラ１００８は、「ロードロック」及び「ストア条件付き」セマンティクスを使用して、ＩＳＭ１０１１とＥＭＵメモリ１０１２との間でデータを移す。より具体的には、ロードロックセマンティクスは、ＥＭＵメモリ１０１２からＩＳＭ１０１１へデータを転送するときに使用され、ストア条件付きセマンティクスは、ＩＳＭ１０１１からＥＭＵメモリ１０１２へデータを転送するときに使用される。
【００７３】
[0085]ロードロックセマンティクス及びストア条件付きセマンティクスは両方とも、ＥＭＵメモリ１０１２におけるアドレスを複数のＶＰＥ２０５のうちの１つのＶＰＥ内の特定の仮想キューの識別子に関連付けることにより、そのアドレスが「ロック」されるような機構に頼るものである。識別子がアドレスと関連付けられた仮想キューは、そのアドレスに関する「ロック」を有すると称される。また、仮想キューがアドレスに関するロックを有するときには、そのアドレスは、「ロックされている」と称される。もし、別の識別子がそのアドレスに関連付けられるようになる場合には、その仮想キューは、そのロックを「失う」又は「解除する」と称される。
【００７４】
[0086]仮想キューは、典型的に、その仮想キューからのＤＭＡ要求メッセージがＤＭＡコントローラ１００８にＩＳＭ１０１１に対してＥＭＵメモリ１０１２からの読出し動作を行うように命令するとき、ＥＭＵメモリ１０１２におけるアドレスのロックを得る。アドレスのロックを得ることを含む読出し動作は、「ロードロック」動作と称される。仮想キューがロックを有するとき、ＥＭＵメモリ１０１２におけるＥＭＵコントローラ（図示していない）は、タイマーを始動させる。このタイマーは、典型的には、ある限定された持続時間を有するように構成されている。もし、その持続時間が零に設定されている場合には、そのタイマーは使用されない。このタイマーが作動している間は、ＥＭＵメモリ１０１２におけるアドレスに対するいかなるその後の読出し動作によっても、いずれのアドレスもアンロックされないし又はロックされない。このタイマーの使用により、１つのＶＰＥからのＤＭＡトランザクションによりロックされたアドレスが別のＶＰＥからのＤＭＡトランザクションによってアクセスされる可能性を減少させることができる。
【００７５】
[0087]このタイマーが作動していない間は、そのアドレスに対するその後の読出し動作は、古いロックを解除し、新しいロックを生成する。換言すると、別の仮想キュー識別子がそのアドレスと関連付けられるようになる。
【００７６】
[0088]「ストア条件付き」動作は、ＩＳＭ１０１１に対するＥＭＵメモリからの書込み動作であって、それがその書込み動作のデスティネーションアドレスのロックを有する仮想キューから発せられている場合にのみ首尾良く行われるような書込み動作である。
【００７７】
[0089]他のＤＭＡトランザクションの場合のように、アトミックＥＭＵ  ＤＭＡトランザクションは、３２ビットのＤＭＡ完了通知を有するＤＭＡ要求メッセージによって開始される。しかしながら、もし、ストア条件付き動作が首尾良く行われない場合には、対応するＤＭＡ完了通知におけるあるビットは、ＶＰＵ２０７又はＶＣＵ２０６のうちの１つに対する失敗を示すため、所定の値に設定される。
【００７８】
[0090]図９及び図１０は、図８に示したＶＰＥの如き回路においてメッセージを送る方法を例示するフローチャートである。特に、図９は、本発明の一実施形態による、ＶＰＥにおけるあるＶＰＵ又はＶＣＵから別のＶＰＵ又はＶＣＵへ通信メッセージを転送する方法を例示しており、図１０は、本発明の一実施形態による、ＤＭＡ要求メッセージに基づいてＶＰＥにおいてＤＭＡ動作を行う方法を例示している。
【００７９】
[0091]図９を参照すると、ＶＰＥにおいてあるＶＰＵ又はＶＣＵから別のＶＰＵ又はＶＣＵへ通信メッセージを転送する方法は、次のようなステップを含む。先ず、ステップ１１０１において、ＶＰＵ又はＶＣＵは、複数の通信メッセージキューのうちの１つへ通信メッセージを書き込む。次に、ステップ１１０２において、スケジューラは、その通信メッセージについてデスティネーション受信ＦＩＦＯの占有度をチェックする。最後に、ステップ１１０３にて、もし、そのデスティネーション受信ＦＩＦＯの占有度が所定の高水位占有度しきい値より下である場合には、その通信メッセージは、そのデスティネーション受信ＦＩＦＯへ転送される。
【００８０】
[0092]図１０を参照すると、ＶＰＥにおいてＤＭＡ動作を行う方法は、次のようなステップを含む。先ず、ステップ１２０１において、ＶＰＵ又はＶＣＵは、複数のＤＭＡ要求メッセージキューのうちの１つへＤＭＡ要求メッセージを書き込む。次に、ステップ１２０２において、そのＤＭＡ要求メッセージは、そのＤＭＡ要求メッセージキューからＤＭＡ要求ＦＩＦＯへと転送される。それから、ステップ１２０３にて、そのＤＭＡ要求メッセージは、ＤＭＡコントローラへ転送され、そのＤＭＡコントローラは、そのＤＭＡ要求メッセージに基づいてＤＭＡ動作を行う。最後に、ステップ１２０４にて、そのＤＭＡ要求メッセージに関連付けられたＤＭＡ完了通知が、そのＶＰＥ内の１つ以上のＶＰＵ及び／又はＶＣＵにおけるＤＭＡ完了通知受信ＦＩＦＯへ送られる。
【００８１】
[0093]前述の好ましい実施形態は、実施例を教示するものである。当業者には、特許請求の範囲の記載により定められる本発明の範囲から逸脱せずに、これら典型的な実施形態に対して構成及び細部について種々の変形がなされ得ることを理解されたい。
【図面の簡単な説明】
【００８２】
【図１】従来の物理処理装置（ＰＰＵ）を例示するブロック図である。
【図２】本発明の一実施形態によるＰＰＵを例示するブロック図である。
【図３】本発明の一実施形態によるＶＰＥのブロック図である。
【図４】図３に示したＶＰＥにおけるメッセージの例示である。
【図５】図３に示したＶＰＥにおけるメッセージキューイングシステムのためのスケジューラのブロック図である。
【図６】外部メモリ装置を通して受信されたデータに関する計算を行うときに、図３に示したＶＰＥ２０５によって行われる動作の典型的なシーケンスを例示するフローチャートである。
【図７Ａ】図３に示したＶＰＥにおいて使用される種々の代替的なスケジューラ及びキュー構成を示している。
【図７Ｂ】図３に示したＶＰＥにおいて使用される種々の代替的なスケジューラ及びキュー構成を示している。
【図８】本発明の更に別の実施形態によるＶＰＥのブロック図である。
【図９】本発明の一実施形態による図８に示したＶＰＥにおけるＶＰＵ又はＶＣＵの間で通信メッセージを転送する方法を例示するフローチャートである。
【図１０】本発明の一実施形態によるＤＭＡ要求メッセージに基づくＶＰＥにおけるＤＭＡ動作を行う方法を例示するフローチャートである。
【符号の説明】
【００８３】
１００…物理処理装置（ＰＰＵ）、１０１…データ移動エンジン（ＤＭＥ）、１０２…高帯域…外部メモリ、１０３…ＰＰＵ制御エンジン（ＰＣＥ）、１０４…プログラマブルＰＰＵ制御装置（ＰＣＵ）、１０５…ベクトル処理エンジン（ＶＰＥ）、１０６…ＶＰＵ制御装置（ＶＣＵ）、１０７…ベクトル処理装置（ＶＰＵ）、１０８…ホストシステム、２００…物理処理装置（ＰＰＵ）、２０１…外部メモリ装置（ＥＭＵ）、２０２…外部メモリ、２０３…ＰＰＵ制御エンジン（ＰＣＥ）、２０４…プログラマブルＰＰＵ制御装置（ＰＣＵ）、２０５…ベクトル処理エンジン（ＶＰＥ）、２０６…ＶＰＵ制御装置（ＶＣＵ）、２０７…ベクトル処理装置（ＶＰＵ）、２０８…ホストシステム、２０９…ＶＰＥメッセージ装置（ＶＭＵ）、５０１…ローカルメモリ、５０２…ローカルメモリ、５０３…ＤＭＡコントローラ、５０４…メッセージ、５０５…中間記憶メモリ（ＩＳＭ）、５０６…ＶＣＵスケジューラ、５０７…ＶＣＵメッセージキュー、５０８…ＶＰＵメッセージキュー、５０９…ＶＰＵスケジューラ、７０２…論理回路、７０３…キュー、９０１…ＶＣＵ−１、９０２…キュー１、９０３…スケジューラ１、９０４…ＶＰＵ０，１、９０５…キュー２、９０６…スケジューラ２、９１１…ＶＣＵ−１、９１２…キュー１，２，３、９１３…スケジューラ１，２，３、９１４…ＶＰＵ０、１、２、９１５…キュー４，５、６、９１６…スケジューラ４，５，６、１００１…第１のメモリ、１００２…第２のメモリ、１００３…スケジューラ、１００４…スケジューラ、１００７…ＤＭＡ要求ＦＩＦＯ、１００８…ＤＭＡコントローラ、１００９…ＤＭＡ完了通知ＦＩＦＯ、１０１０…ＤＭＡサブシステム、１０１１…ＩＳＭ、１０１２…ＥＭＵメモリ
【図１】
0004428485.tif 000002
【図２】
0004428485.tif 000003
【図３】
0004428485.tif 000004
【図４】
0004428485.tif 000005
【図５】
0004428485.tif 000006
【図６】
0004428485.tif 000007
【図７Ａ】
0004428485.tif 000008
【図７Ｂ】
0004428485.tif 000009
【図８】
0004428485.tif 000010
【図９】
0004428485.tif 000011
【図１０】
0004428485.tif 000012