(57)【要約】本発明は、単純なパス動作だけでなく、所望の量のレイテンシを導入する遅延パス動作も実行することができる機能ユニットを備えるという概念に基づく。したがって、並列プロセッサが提供され、このプロセッサは、上記プロセッサにおける処理を制御する制御手段ＣＴＲと、プログラム可能なレイテンシを有するプログラム可能な数のパス動作を実行する複数のパスユニットＰＵと、上記制御手段ＣＴＲおよび複数の機能ユニットＰＵを結合する通信ネットワークＣＮとを有する。
2006524859.tif 000002
【特許請求の範囲】
【請求項１】
並列プロセッサであって、
−  前記並列プロセッサにおける処理を制御する制御手段、
−  プログラム可能なレイテンシを有するプログラム可能な数のパス動作を実行する複数のパスユニット、および
−  前記制御手段および複数の第１の機能ユニットを結合する通信ネットワーク、
を有する並列プロセッサ。
【請求項２】
前記複数のパスユニットの各々が、プログラム可能な遅延を与える機能ユニットを有する、請求項１に記載の並列プロセッサ。
【請求項３】
前記複数の第１の機能ユニットの各々は、
−  所定の数のレジスタフィールドを有するレジスタ、および
−  入力データを受け取る前記第１の機能ユニットの入力部に結合され、前記制御手段から制御命令を受け取る前記通信ネットワークを通じて前記制御手段に結合されるマルチプレクサ、
を有し、
前記マルチプレクサは、前記制御手段から受け取る前記制御命令に従って、受け取ったデータを前記レジスタフィールドのうちの１つにパスする、請求項２に記載の並列プロセッサ。
【請求項４】
前記パスユニットの各々が、
−  １つのイシュースロットに一緒にグループ化される複数の機能ユニット、
を有し、
各機能ユニットは、所定のレイテンシを有するパス動作を実行する、請求項１に記載の並列プロセッサ。
【請求項５】
前記プロセッサはＶＬＩＷプロセッサである、請求項１、２又は４に記載の並列プロセッサ。
【請求項６】
並列プロセッサで並列処理をする方法であって、
−  前記並列プロセッサにおける処理を制御するステップ、
−  プログラム可能なレイテンシを有するプログラム可能な数のパス動作を実行するステップ、および
−  制御手段および複数の第１の機能ユニットを結合するステップ、
を有する方法。
【請求項７】
コンパイラプログラムをコンピュータシステムで実行するときに、請求項６による処理システムをプログラムする方法の全てのステップを実行するためのコンパイラプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理システム、並列処理方法、およびコンパイラプログラムプロダクトに関する。
【背景技術】
【０００２】
プログラマブルプロセッサは、命令に符号化されるプログラム情報に基づいて、入力データを出力データに変換するために使用される。結果として生じる出力データの値は、入力データ、プログラム情報に依存し、所与の瞬間におけるプロセッサの瞬間の状態に依存する。従来のプロセッサでは、この状態は、レジスタに記憶される一時的なデータ値からなる。
【０００３】
高性能コンピューティングの増加の継続的な需要により、幾つかのコンカレント処理の形式、即ち並列処理、をプロセッサアーキテクチャに導入した幾つかの解決策が導入されるに至った。２つの主な概念が採用された。１つは、プログラムの幾つかのスレッドが並列に実行されるマルチスレッディングの概念、もう一つは、Very Large Instruction Word（ＶＬＩＷ）の概念である。ＶＬＩＷプロセッサの場合、複数の命令は、１つの長い命令、いわゆるＶＬＩＷ命令にパッケージングされる。ＶＬＩＷプロセッサは、複数の独立した実行ユニット又は機能ユニットを使用して、これらの複数の命令を並列に実行する。このプロセッサは、プログラムの命令レベル並列性を利用することを可能とし、したがって一度に複数の命令を実行することを可能とする。この形式のコンカレント処理では、プロセッサの性能が向上する。ソフトウェアプログラムがＶＬＩＷプロセッサで動くためには、そのプログラムを一組のＶＬＩＷ命令に翻訳しなければならない。コンパイラは、並列処理を最適化することによってプログラムを実行するのに必要な時間を最小にしようとする。コンパイラは、単一ＶＬＩＷ命令に割り当てられる複数の命令を並列にデータ依存制約のもとで実行可能であるという制約のもとで、複数の命令を一つのＶＬＩＷ命令にまとめる。
【０００４】
プロセッサのデータパイプラインでの演算を制御するために、一般に、コンピュータアーキテクチャに、２つの異なるメカニズム、即ちデータステーショナリ・エンコーディングおよびタイムステーショナリ・エンコーディングが使用されており、これらのエンコーディングは、G. Goossens, J. van Praet, D. Lanneer, W. Geurts, A. Kifli, C. Liem および P. Paulinの“Embedded software in real-time signal processing systems: design technologies”（Proceedings of the IEEE, vol. 85, no. 3, March 1997）に開示されている。データステーショナリ・エンコーディングの場合、プロセッサの命令セットの一部の命令は、特定のデータ項目がデータパイプラインを横断するときに、その特定のデータ項目で実行されるべき一連の全演算を制御する。一旦命令がプログラムメモリからフェッチされ、復号されると、プロセッサコントローラ・ハードウェアは、構成演算が正しいマシンサイクルで実行されることを確認する。タイムステーショナリ・エンコーディングの場合、プロセッサの命令セットの一部の命令は、単一マシンサイクルで実行されるべき一組の全演算を制御する。命令は、プロセッサがその動作を実行するために所与の瞬間に必要な全ての情報を含むように符号化される。これらの演算は、データパイプラインを横断する幾つかの異なるデータ項目に適用することができる。この場合、データパイプラインをセットアップし維持するのは、プログラマー又はコンパイラの責任である。結果として得られるパイプラインスケジュールは、機械語プログラムにおいて充分に見やすいものである。タイムステーショナリ・エンコーディングは、特定用途向けプロセッサでしばしば使用される。その理由は、このエンコーディングが、コードサイズが大きいという犠牲を払って、命令に存在する制御情報を遅延させるの必要なハードウェアのオーバーヘッドを節約するからである。
【０００５】
ＶＬＩＷ命令での並列命令のエンコーディングは、コードサイズをかなり増加させる。大きいコードサイズは、必要なメモリサイズと必要なメモリバンド幅との両方に関して、プログラムメモリコストを増加させる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、本発明の目的は、並列プロセッサのためにコードサイズを削減することにある。
【課題を解決するための手段】
【０００７】
この目的は、請求項１による並列処理システムによって、請求項６による並列処理方法によって、および請求項７によるコンパイラプログラムプロダクトによって解決される。
【０００８】
本発明は、単純なパス動作だけでなく、所望の量のレイテンシを導入する遅延パス動作も実行することができる機能ユニットを備えるという概念に基づく。
【０００９】
したがって、並列プロセッサが提供され、このプロセッサは、上記プロセッサにおける処理を制御する制御手段ＣＴＲと、プログラム可能なレイテンシを有するプログラム可能な数のパス動作を実行する複数のパスユニットＰＵと、上記制御手段ＣＴＲおよび複数の機能ユニットＰＵを結合する通信ネットワークＣＮとを有する。
【００１０】
本発明によれば、構成可能パスユニットが実現され、これによって、パス動作を実行するカプセル化機能ユニットの量、したがって必要な資源、が削減される。更に、コントローラのオーバヘッドおよび命令語を削減することができる。プログラム可能なパスユニットの使用により、アーキテクチャのフレキシビリティが増加する。
【００１１】
本発明の一態様によれば、上記複数のパスユニットＰＵの各々が第１の機能ユニットＰＵを有する。この第１の機能ユニットは、入力データのプログラム可能な遅延を与えることが可能である。
【００１２】
本発明の他の態様によれば、上記複数の第１の機能ユニットＰＵの各々は、所定の数のレジスタフィールドを有するレジスタと、入力データを受け取る上記第１の機能ユニットＰＵの入力部に結合され、上記制御手段ＣＴＲから制御命令を受け取る上記通信ネットワークＣＮを通じて上記制御手段ＣＴＲに結合されるマルチプレクサＭＰとを有する。上記マルチプレクサＭＰは、上記制御手段ＣＴＲから受け取る上記制御命令に従って、受け取ったデータを上記レジスタフィールドのうちの１つにパスする。それぞれのレジスタフィールドを通過するのに入力データが必要とする時間は選択されたレジスタフィールドに依存するので、導入された遅延は選択されたレジスタフィールドに依存する。
【００１３】
本発明の別の態様によれば、上記パスユニットＰＵの各々が、１つのイシュースロットに一緒にグループ化される複数の機能ユニットＬ０、Ｌ１、Ｌ２を有し、各機能ユニットＬ０、Ｌ１、Ｌ２は、所定のレイテンシを有するパス動作を実行する。入力データは、命令コードにより示される必要な遅延、即ちレイテンシに従って、機能ユニットＬ０、Ｌ１、Ｌ２のうちの１つにパスされる。
【００１４】
本発明の他の態様によれば、上記プロセッサはＶＬＩＷプロセッとして実現される。
【００１５】
本発明の他の態様は、従属項に記載されている。
【００１６】
本発明は、図面を基準にして記載される。
【発明を実施するための最良の形態】
【００１７】
図１は、本発明による基本アーキテクチャの概略ブロック図を示す。このアーキテクチャは、プログラムメモリＰＭ、制御手段ＣＴＲ、メモリＭＥＭ、複数の機能ユニットＦＵ（２つだけが示されている）、複数のレジスタファイルＲＦ（２つだけが示されている）、パスユニット、および通信ネットワークＣＮを有する。通信ネットワークＣＮは、レジスタファイルＲＦ、パスユニットＰＵ、機能ユニットＦＵ、メモリＭＥＭ、および制御手段ＣＴＲを互いに接続する。コントローラＣＴＲは、プログラムメモリＰＭに接続されており、プログラムメモリＰＭのアドレスから命令を検索し、それぞれの命令を機能ユニットＦＵおよびパスユニットＰＵに転送する。パスユニットＰＵは、データ入力部ＤＩおよびデータ出力部ＤＯを有する。機能ユニットＦＵは、実行ユニット、算術論理ユニット（ＡＬＵ）等のような任意の種類の機能ユニットとすることができる。メモリＭＥＭは、幾つかの機能ユニットＦＵによって必要とされるデータを記憶するために使用される。レジスタファイルＲＦは、単一のセントラルレジスタとして、又は分配された複数のレジスタとして実現することができる。
【００１８】
図１にはパスユニットＰＵが１つだけ示されているが、複数のパスユニットＰＵを組み込むことも可能である。
【００１９】
図２は、本発明の第１の実施形態によるパスユニットの概略ブロック図を示す。パスユニットＰＵは、３つの機能ユニットＬ０、Ｌ１、Ｌ２、マルチプレクサＭＰ、およびデコーダーＤＥＣを有する。さらに、パスユニットはデータ入力部ＤＩ、およびデータ出力部ＤＯを有する。デコーダＤＥＣは３つの全ての機能ユニットＬ０、Ｌ１、Ｌ２に結合され、それらユニットはその入力側でデータ入力部ＤＩに結合され、その出力側でマルチプレクサＭＰに結合されている。マルチプレクサＭＰの出力部は、データ出力部ＤＯを形成する。３つの機能ユニットは１つのイシュースロットに一緒にグループ化されており、各ユニットは異なる演算をサポートする、即ち、ユニットＬ０はレイテンシの無いパス動作をサポートし、ユニットＬ１は１サイクルのレイテンシのパス動作をサポートし、ユニットＬ２は２サイクルのレイテンシのパス動作をサポートする。機能ユニットＬ１およびＬ２は、それぞれ２つおよび３つのレジスタフィールドにより実現され、これら機能ユニットはＦＩＦＯとして動作する。プログラムメモリＰＭ又はコントローラＣＴＲから受け取った命令によって、デコーダＤＥＣは機能ユニットＬ０、Ｌ１、Ｌ２のうちの１つを活性化し、入力データは選択されたユニットにより使用され、機能ユニットＬ０の場合はレイテンシ無しで、機能ユニットＬ１の場合は１サイクル後で、機能ユニットＬ２の場合は２サイクル後で、同じ値がその出力部に直に生成され、これによって、レイテンシが入力データに導入される。パスユニットは３個の機能ユニットで記載されているが、他の任意の個数の機能ユニットを使用することができる。そのとき、デコーダＤＥＣおよびマルチプレクサＭＰは、新たな個数のユニットに適応しなければならない。
【００２０】
図３は、本発明の第２の実施形態によるパスユニットの概略ブロック図を示す。パスユニットＰＵは、マルチプレクサＭＰと、３つのレジスタフィールドを持つレジスタとを有する。パスユニットＰＵはデータ入力部ＤＩおよびデータ出力部ＤＯを有し、このパスユニットＰＵはプログラムメモリＰＭ又は制御手段ＣＴＲに更に接続させることができる。このユニットは、第１の実施形態によるパスユニットとは対照的に、単一の機能資源又は機能ユニットとして実現される。パスユニットは、それぞれがレイテンシ０、１および２の３つのパス動作をサポートする。レイテンシは、例えばレジスタフィールドを用いて遅延ラインを導入することによって内的に実現される。遅延ラインの端部を形成するエレメント又はレジスタフィールドは、パスユニットのデータ出力部ＤＯを表す。３つの異なるパス動作は、このパスユニット、即ちpass_ＬＯ、pass_Ｌ１およびpassＬ_２内で可能である。「pass_Ｌ０」演算は、この最後のエレメント又はレジスタフィールドに直接書き、レイテンシを導入しない。「pass_Ｌ１」演算は最後から二番目のエレメントに書き、１のレイテンシを導入する。「pass_Ｌ２」演算は最後から三番目のエレメントに書き、１のレイテンシを導入する。パスユニットは３つのパス動作により記載されているが、レジスタフィールドおよびマルチプレクサの数に適合させることで他の任意の数のパス動作を使用することができる。
第２の実施形態によるパスユニットは、必要な領域に関して付加的に更に高価になる第１の実施形態によるパスユニットよりも、必要なハードウェアに関して簡単且つ効率的である。
【００２１】
図４はデータフローグラフを示し、破線の矢印はループのイタレーション（iteration）の中のフィードバック矢印であり、出力が生成されると、それは次のイタレーションで使用される。データフローグラフは、以下のコードフラグメントと一致する。
int a[1000], b[1000];
int i0 = 0, i1 = 0;
int sum = 0;
int out;
for (int i=1000;i!=0;i--) {
sum += a[i0] * b[i1];
i0++;i1++;
}
out = sum;
【００２２】
２つの変数「ａ」および「ｂ」が導入されている。ループ・インデックスｉ０、ｉ１および変数「ｓｕｍ」は、ゼロに設定される。変数「ｏｕｔ」は、この演算の出力を表す。１０００から始まり１つづつ減少するループが規定されている。「ｓｕｍ」の値は、インデックスとしてｉ０およびｉ１を有する「ａ」および「ｂ」の乗算に等しい。次いで、ｉ０、ｉ１はインクリメントされ、乗算が再び実行される。乗算の結果はループが１０００回実行されるまで前の結果に加えられる。全体の総和は、変数「ｏｕｔ」としての出力である。
【００２３】
プロセッサに十分に利用可能な資源がある場合、ループ本体のsum+=a[i0]*b[i1]およびi0++;i1++、即ち、インクリメントを１０００回実行される単一命令としてコード化することができる。
【００２４】
図５は、図４による第１のコードフラグメントのスケジュールを示す。「ｌｄ」はロード動作、「＋１」はインクリメント演算、「＊」は乗算演算、および「＋」加算演算を表す。プロセッサアーキテクチャに少なくとも６個のイシュースロット、資源、又は機能ユニットが存在し、各々が演算を実行することができる、即ち、別々に、好ましくは並列に制御可能であるとする。ばつ印は、特定のタイムスロットにおいてその資源上での斯かる演算の実行を表す。したがって、このループは、実行するのに１つのイタレーション毎に３サイクルを必要とすることが分かる。実際にはスケジュールの３分の１しか演算で満たされていないことも分かる。
【００２５】
図６は、図４による第１のコードフラグメントの改良スケジュールを示す。ループフォールディング又はソフトウエアパイプラインと呼ばれる技術を適用することによって、より能率的なスケジュールを得ることができる。この主な概念はできるだけ演算を繰り返すこと、即ち、タイムスロットが資源又は機能ユニットで利用可能であれば直ぐに、演算を繰り返すことである。
【００２６】
コンパイラ技術によって、ソースコードをプロセッサにマッピングすることが可能である。ソースコードは典型的には多くのループを含む。ループは、ループフォールディング（ソフトウェアパイプラインとしても知られている）と呼ばれる技術を使用して、プロセッサにマップされる。理想的には、プロセッサ上で、これらのループは単一命令に「折り畳まれる」。これは、ループ用の幾つかの初期化コード（プリアンブル）、ループ本体自体（単一命令）、幾つかのクリーンアップコード（ポストアンブル）をもたらす。プリアンブルおよびポストアンブルは一度だけ実行され、ループ本体は繰り返し実行される。結果として得られるループ本体は、１つの命令のみから成る。したがって、各イタレーションは、実行するのに１サイクルのみを必要とする。
【００２７】
図７は、第２のコードフラグメントの異なるデータフローグラフを示す。グラフは、以下のコードフラグメントのループに対応する。
int a[1000], b[1000];
int i0 = 0, i1 = 0;
for (int i=1000;i!=0;i--) {
int tmp = a[i0];
b[i1] = (tmp << 1) + tmp;
i0++;i1++;
}
【００２８】
新たな変数「ｔｍｐ」が導入されている。ループインデックス変数および幾つかの変数の初期化は、この考察には関係ないので、省略されている。「ａｓｌ」は、非対称シフトレフト演算を表し、「ｓｔ」は記憶演算である。変数ｂ（ｉ１）は変数「ｔｍｐ」とｔｍｐの非対称シフトレフト演算の結果（ｔｍｐ＜＜１）との和を表す。
【００２９】
図８は、図７による第２のコードフラグメントのスケジュールを示す。スケジューリングは簡単であり、１つのイタレーションにつき４サイクルを有するループになる。
【００３０】
図９は、図７による第２のコードフラグメントの２サイクルのスケジュールを示す。変数「ｔｍｐ」のライフタイム（即ち、２サイクル）が原因で、ループは２サイクルより少なく折り畳むことができない。
【００３１】
図１０は、図７による第２のコードフラグメントに基づく第３のコードフラグメントのデータフローグラフを示す。図７によるコードフラグメントおよびスケジュールの性能を向上させるために、新しい演算が導入されている。変数ｔｍｐを直接使う代わりに、パス動作又はコピー演算を加える。ライフタイムの問題は、結果としてループが折り畳まれたスケジュールから無くなった。
int a[1000], b[1000];
int i0 = 0, i1 = 0;
for (int i=1000;i!=0;i--) {
int tmp = a[i0];
b[i1] = (tmp << 1) + pass (tmp);
i0++;i1++;
}
【００３２】
結果として生じるスケジュールは、図１１に示されている。単一命令ループが９９７回繰り返されることに注意されたい。残りの３つのイタレーションは、プリアンブルおよびポストアンブルによってカバーされる。したがって、パス動作を導入することによって、ループの性能を向上させることができる。
【００３３】
しかし、プリアンブルおよびポストアンブルは、今のところ、折り畳まれたスケジュールのコードサイズを支配している。実際、アーキテクチャがパイプライン演算を必要とする場合、問題は更に悪くなるだろう。例えば、「記憶」演算は、完了するのに２サイクル必要とする場合がある。これは、簡単に８個の命令のプリアンブルおよび８個の命令のポストアンブルをもたらすことになるだろう。
【００３４】
図１２は、図１０による第３のコードフラグメントの他のスケジュールを示す。ここでは、演算が複製されポストアンブルを完全に満たす。これらの余分な演算の結果は決して使用されないので、その演算はこのスケジュールの結果を変えることができない。これは、７サイクルのコードサイズとなる。
【００３５】
図１３は、図１０による第３のコードフラグメントの他の改良スケジュールを示す。ループ性能を向上させる次のステップは、ポストアンブルからの演算とループ本体自体を実際にマージすることである。その場合、ループを１０００回繰り返すことができる。それ故に、コードサイズは、７サイクルから４サイクルに削減された。
【００３６】
図１４は、別の実施例を表わす第４のコードフラグメントのデータフローグラフを示す。データフローグラフは、以下のコードフラグメントのループに対応する。データフローグラフからの多くの無関係なディテールは、省略された。
int a[1000], b[1000], c[1000];
int i0 = 0, i1 = 0, i2 = 0;
for (int i=1000;i!=0;i--) {
int tmp = a[i0];
b[i1] = tmp;
c[i2] = tmp + 1;
i0++;i1++;i2++;
}
【００３７】
変数「ａ」、「ｂ」、および「ｃ」並びにループ変数ｉ０、ｉ１、およびｉ２が規定されている。さらに、変数「ｔｍｐ」はａ（ｉ０）の値に一致し、ｂ（ｉ１）は「ｔｍｐ」の値に一致し、ｃ（ｉ２）は「ｔｍｐ」の値に１を加えたものに一致する。
【００３８】
図１５は、図１４による第４のコードフラグメントのスケジュールを示す。データフローグラフとループ折畳みを含むコードフラグメントの対応するスケジュールは、５サイクルのコードサイズ、即ち、プリアンブルである最初の２サイクル、次いで９９８回繰り返される１サイクルおよびポストアンブルの２サイクル、となる。
【００３９】
したがって、プリアンブルおよびポストアンブルは一回だけ実行され、一方、ループ本体は９９８回繰り返される。
【００４０】
図１６は、図１２および図１３の中で説明された技術を図１４に適用した結果を示す。特に、図１６は、図１４による第４のコードフラグメントの改良スケジュールを示す。ポストアンブルを削減することは、前の実施例ほど有効ではない。単一命令の改良が達成されるだけである。これは、第１の「記憶」演算によって生じる。この演算を後にスケジューリングするのであれば、コードサイズを更に削減することができるだろう。
【００４１】
時には、ループを単一命令ループにマッピングできるようにコードに追加の演算を挿入する必要がある。
【００４２】
図１６および図１５は、どこで問題が発生するかをまさに示しており、この問題は図１７および１８によって解決される。
【００４３】
図１７は、図１４による第４のコードフラグメントに基づく第５のコードフラグメントのデータフローグラフを示す。違いは、パス動作の導入のみである。以下のコードフラグメントは、図１７のデータフローグラフに対応する。
int a[1000], b[1000], c[1000];
int i0 = 0, i1 = 0, i2 = 0;
for (int i=1000;i!=0;i--) {
int tmp = a[i0];
b[i1] = pass (tmp);
c[i2] = tmp + 1;
i0++;i1++;i2++;
}
【００４４】
コードフラグメントの唯一の違いは、ｂ（ｉ１）がまさに変数ｔｍｐのパス動作の結果に等しいことである。
【００４５】
図１８は、図１７による第５のコードフラグメントのスケジュールを示す。パス動作を導入し、これによって１サイクルのレイテンシを導入することによって、２つの記憶演算を同じサイクルで実行することができる。それ故に、ループの折畳みの後、ポストアンブルを完全に廃棄することができ、コードサイズが３サイクルに削減される。
【００４６】
図１９は、図７のデータフローグラフに基づくデータフローグラフを示す。「ａｓｌ」演算をサポートする資源の出力と加算演算をサポートする資源の入力との間が直に接続されない場合、代わりに、「パス」演算をサポートする資源を「ａｓｌ」演算をサポートする資源の出力と加算演算をサポートする資源の入力との間に備えてそれらを接続しなければならない。
【００４７】
これに適合したグラフは、図２０で示されている。ここで、パス動作は、上記のように、「ａｓｌ」演算をサポートする資源の出力と加算演算をサポートする資源の入力との間に挿入される。言い換えると、グラフは必要なパス動作で拡張された。しかし、このスケジュールを効率的に単一命令のループ本体に折り畳むことができるようにするために、図２１に示すように、２つ以上の演算を追加しなければならない。
【００４８】
図２１のデータフローグラフは、図７および図１０のグラフに対してデータフローの各分岐に１つのパス動作が追加されたものに基づいている点に注意すべきである。したがって、図２１は２つのパス動作のカスケードを１つ示している。本発明の原理によれば、カスケードにされた２つのパス動作は２サイクルのレイテンシを有する単一パス動作により置き換えることができ、そのため単一パス動作は第１および第２の実施形態に関して上に記載されたような１つの資源にマッピングされる。
【００４９】
図２２は、他のデータフローグラフである。ここでは、アーキテクチャに十分な資源が存在するのであれば、上記のように、カスケードの２つのパス動作を、より少ないレイテンシの単一命令に置き換えることができる。
【００５０】
更に、２つの資源の間に直接経路が存在しない場合があるので、パス動作は重要であろう。ある結果を作り出す演算が第１の資源に割り当てられ、この結果を使う演算が他の資源に割り当てられるとき、ユニットの間に間接経路が存在しなければ、スケジュールが存在しない。両方の資源に、「パス」演算を供給する資源を接続することができる。したがって、結果を作り出す資源からその結果を使う資源に結果を直に渡す代わりに、第３の資源、即ちパスユニットＰＵが別の経路を提供する。これは多くの資源を有する大きなアーキテクチャを考えるとき、特に重要である。資源の数およびプロセッサのサイズが増大すると、必要なパス動作の数も増大する。複数のパス動作が１つのループに加えられるときでも、結果として生じるループを単一命令ループにマッピングすることが望ましい。これは、１つの値が二度以上パスされなければならないことを必要とするだろう。しかし、これは、パス動作をサポートするのに必要な機能ユニットの数の増加させ、望ましくない。
【００５１】
第１および第２の実施形態によるプログラム可能なパスユニットは、この問題を解決する。
【００５２】
パス動作を導入する別の理由は、カスケードにできるからであり、この結果、パス動作の要求が高まる。例えば、直接経路が存在しないのでパス動作を導入することは、変数のライフタイムが別のパス動作により固定されることを必要とするような、変数のライフタイムによくない影響を有する。したがって、幾つかのパス動作が同じ値で実行される必要があることが生じる場合がある。
【００５３】
好ましくは、上記のプロセッサおよび処理システムは、ＶＬＩＷプロセッサ又はＶＬＩＷ処理システムである。しかし、上記のプロセッサおよび処理システムは、スーパスカラプロセッサ又はパイプラインプロセッサのような他のパラレルプロセッサ又はパラレル処理システムとすることもできる。
第１および第２の実施形態によるパス動作の実現に加えて、パス動作は、ロータブルレジスターファイル（rotable register file）に基づいて実現することもできる。
【００５４】
上記の実施形態は本発明を制限するよりものではなく、当業者は添付された特許請求の範囲から逸脱することなく多くの別の実施形態を設計することができる。単語「有する」は、請求項に挙げられている以外の要素又はステップの存在を排除しない。要素が単数であることは斯かる要素の複数の存在を排除するものではない。幾つかの手段を列挙している装置請求項では、これらの手段の幾つかを、同じ一つのハードウェアのアイテムで具体化することができる。特定の手段が相互に異なる従属請求項に挙げられている単なる事実は、これらの手段の組合せを有利に使用することができないことを示すものではない。
【図面の簡単な説明】
【００５５】
【図１】本発明による基本アーキテクチャの概略ブロック図を示す。
【図２】本発明の第１実施形態によるパスユニットの概略ブロック図を示す。
【図３】本発明の第２実施形態によるパスユニットの概略ブロック図を示す。
【図４】第１のコードフラグメントのデータフローグラフを示す。
【図５】図４による第１のコードフラグメントのスケジュールを示す。
【図６】図４による第１のコードフラグメントの改良スケジュールを示す。
【図７】第２のコードフラグメントのデータフローグラフを示す。
【図８】図７による第２のコードフラグメントのスケジュールを示す。
【図９】図７による第２のコードフラグメントの２サイクルのスケジュールを示す。
【図１０】図７による第２のコードフラグメントに基づく第３のコードフラグメントのデータフローグラフを示す。
【図１１】図１０による第３のコードフラグメントのスケジュールを示す、
【図１２】図１０による第３のコードフラグメントの他のスケジュールを示す。
【図１３】図１０による第３のコードフラグメントの他の改良スケジュールを示す。
【図１４】第４のコードフラグメントのデータフローグラフを示す、
【図１５】図１４による第４のコードフラグメントのスケジュールを示す、
【図１６】図１４による第４のコードフラグメントの改良スケジュールを示す。
【図１７】図１４による第４のコードフラグメントに基づく第５のコードフラグメントのデータフローグラフを示す。
【図１８】図１７による第５のコードフラグメントのスケジュールを示す。
【図１９】複数のレイテンシを有するパス動作を示すのデータフローグラフを示す。
【図２０】複数のレイテンシを有するパス動作を示すのデータフローグラフを示す。
【図２１】複数のレイテンシを有するパス動作を示すのデータフローグラフを示す。
【図２２】複数のレイテンシを有するパス動作を示すのデータフローグラフを示す。
【図１】
2006524859.tif 000003
【図２】
2006524859.tif 000004
【図３】
2006524859.tif 000005
【図４】
2006524859.tif 000006
【図５】
2006524859.tif 000007
【図６】
2006524859.tif 000008
【図７】
2006524859.tif 000009
【図８】
2006524859.tif 000010
【図９】
2006524859.tif 000011
【図１０】
2006524859.tif 000012
【図１１】
2006524859.tif 000013
【図１２】
2006524859.tif 000014
【図１３】
2006524859.tif 000015
【図１４】
2006524859.tif 000016
【図１５】
2006524859.tif 000017
【図１６】
2006524859.tif 000018
【図１７】
2006524859.tif 000019
【図１８】
2006524859.tif 000020
【図１９】
2006524859.tif 000021
【図２０】
2006524859.tif 000022
【図２１】
2006524859.tif 000023
【図２２】
2006524859.tif 000024
【国際調査報告】
2006524859.tif 000025
2006524859.tif 000026