(57)【特許請求の範囲】
【請求項１】
複数の処理素子を有する処理システムであって、前記複数の処理素子が、処理素子の第１セット及び少なくとも処理素子の第２セットを有し、
前記第１セットの各処理素子が、１つのレジスタファイル及び少なくとも１つの命令発行スロットを有し、前記命令発行スロットが、少なくとも１つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
前記第２セットの各処理素子が、１つのレジスタファイル及び複数の命令発行スロットを有し、各命令発行スロットが、少なくとも１つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
前記第２セットの前記処理素子内の命令発行スロットの数が、前記第１セットの前記処理素子内の命令発行スロットの数より高く、
前記処理システムが更に、前記複数の処理素子の処理素子の間で通信するように構成されたプロセッサ間通信手段を有する、
処理システム。
【請求項２】
前記複数の処理素子の前記処理素子は、前記第１セットの処理素子が前記プロセッサ間通信手段を介して前記第２セットのみの処理素子と直接的に通信するように、かつ前記第２セットの処理素子が前記プロセッサ間通信手段を介して前記第１セットのみの処理素子と直接的に通信するようにネットワーク内に構成されることを特徴とする、請求項１に記載の処理システム。
【請求項３】
前記処理素子の第２セットの処理素子内で組織化された前記複数の発行スロットが、命令実行を制御する少なくとも１つの共通の制御信号を共用することを特徴とする、請求項１に記載の処理システム。
【請求項４】
前記処理素子の第１セットの前記処理素子が、サイクルごとに１つの演算のみを発行するように構成されることを特徴とする、請求項１に記載の処理システム。
【請求項５】
前記処理素子の第２セットの前記処理素子が、超長命令語プロセッサであり、前記レジスタファイルが、対応する前記機能ユニットにより前記処理素子にアクセス可能であり、前記処理素子が更に、前記レジスタファイル及び対応する前記機能ユニットを結合するローカル通信ネットワークを有することを特徴とする、請求項１に記載の処理システム。
【請求項６】
前記処理素子の第１セットの前記処理素子が、超長命令語プロセッサであり、前記レジスタファイルが、対応する前記機能ユニットにより前記処理素子にアクセス可能であり、前記処理素子が更に、前記レジスタファイル及び対応する前記機能ユニットを結合するローカル通信ネットワークを有することを特徴とする、請求項１に記載の処理システム。
【請求項７】
１つの処理素子に対応する前記レジスタファイルが、分散型レジスタファイルであることを特徴とする、請求項５又は６に記載の処理システム。
【請求項８】
１つの処理素子に対応する前記ローカル通信ネットワークが、部分的に接続された通信ネットワークであることを特徴とする、請求項５又は６に記載の処理システム。
【請求項９】
前記プロセッサ間通信手段が、データ駆動同期通信手段を有することを特徴とする、請求項１に記載の処理システム。
【請求項１０】
前記データ駆動同期通信手段が、ブロッキング先入れ先出しバッファを有することを特徴とする、請求項９に記載の処理システム。
【請求項１１】
前記複数の処理素子の前記処理素子が、前記プロセッサ間通信手段によりバイパスされるように構成されることを特徴とする、請求項１に記載の処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の技術分野は、プロセッサアーキテクチャであり、特にマルチプロセッサシステム、前記プロセッサをプログラムする方法及び前記方法を実施するコンパイラに関する。
【背景技術】
【０００２】
超長命令語（ＶＬＩＷ）プロセッサは、１クロックサイクル内に多くの演算を実行することができる。一般に、コンパイラは、プログラム命令を前記プロセッサが同時に実行することができる基本演算にリデュースする（reduce）。同時に実行されるべき演算は、超長命令語（ＶＬＩＷ）に結合される。ＶＬＩＷプロセッサの命令デコーダは、ＶＬＩＷに含まれる基本演算を復号し、それぞれを対応するプロセッサデータパス素子に発行する。代替的には、ＶＬＩＷプロセッサは命令デコーダを持たず、ＶＬＩＷに含まれる演算はそれぞれ対応するプロセッサデータパス素子に直接的に発行される。この後に、これらのプロセッサデータパス素子は、前記ＶＬＩＷの演算を並列に実行する。命令レベル並列性（ＩＬＰ）とも称されるこの種の並列性は、例えばメディア処理で見つけられることができるような多数の同一の計算を含むアプリケーションに特に適している。例えばサーボ制御を目的とする、より多くの制御指向演算を有する他のアプリケーションは、ＶＬＩＷプログラムとしてプログラムするのに適していない。しかしながら、しばしばこれらの種類のプログラムは、互いに独立に実行されることができる複数のプログラムスレッドにリデュースされることができる。このようなスレッドの並列の実行は、スレッドレベル並列性（ＴＬＰ）とも称される。しかしながら、ＶＬＩＷプロセッサは、スレッドレベル並列性を使用してプログラムを実行するのに適していない。後者のタイプの並列性の利用には、プロセッサデータパス素子のサブセットが独立な制御フローを有する、即ち互いに独立なシーケンスで特有のプログラムにアクセスすることができ、例えば条件付き分岐を独立に実行することができることを必要とする。しかしながらＶＬＩＷプロセッサにおけるデータパス素子は、全て同じ順番で命令のシーケンスを実行する。前記ＶＬＩＷプロセッサは、したがって、１つのスレッドのみを実行することができる。
【０００３】
ＶＬＩＷプロセッサのデータパイプラインにおいて演算を制御するために、２つの異なる機構、即ちデータ静止（data-stationary）及び時間静止（time-stationary）が一般に使用される。データ静止符号化の場合、前記プロセッサの命令セットの一部である命令は、前記データパイプラインを横断（traverse）しながら、特定のデータアイテムに関して実行されなければならない演算の完全なシーケンスを制御する。一度前記命令がプログラムメモリから取り出され、且つ復号されると、プロセッサコントローラハードウェアは、含まれる演算が正しいマシンサイクルで実行されることを確認する。時間静止符号化の場合、前記プロセッサの命令セットの一部である命令は、単一のマシンサイクルで実行されなければならない演算の完全なセットを制御する。これらの演算は、前記データパイプラインを横断する複数の異なるデータアイテムに対して使用されることができる。この場合、前記データパイプラインを設定し、維持するのは、プログラマ又はコンパイラの責任である。結果として生じるパイプラインスケジュールは、マシンコードプログラムにおいて完全に見ることができる。時間静止符号化は、大きなコードサイズを犠牲にして、前記命令に存在する制御情報を表示するのに必要なハードウェアのオーバーヘッドを減じる（save）ので、しばしばアプリケーション固有プロセッサで使用される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、アプリケーションの実行中に、命令レベル並列性及びスレッドレベル並列性の両方、又は両方の組み合わせを利用することができるプロセッサを提供することである。
【課題を解決するための手段】
【０００５】
この目的のため、本発明によるプロセッサは複数の処理素子を有し、前記複数の処理素子が、処理素子の第１セット及び少なくとも処理素子の第２セットを有し、
前記第１セットの各処理素子が、レジスタファイルと、少なくとも１つの機能ユニット（functional unit）を有する少なくとも１つの命令発行スロットとを有し、前記処理素子が、共通の制御スレッド（thread of control）下で命令を実行するように構成され、
前記第２セットの各処理素子が、レジスタファイルと、複数の命令発行スロットとを有し、各命令発行スロットが少なくとも１つの機能ユニットを有し、前記処理素子が、共通の制御スレッドの下で命令を実行するように構成され、
前記第２セットの前記処理素子内の命令発行スロットの数が前記第１セットの前記処理素子における命令発行スロットの数より高く、
前記処理システムが更に、前記複数の処理素子の処理素子間で通信するように構成されたプロセッサ間通信手段を有する。計算手段は、加算器、乗算器、例えばＡＮＤ、ＯＲ、ＸＯＲ等のような論理演算を実行する手段、ルックアップテーブル演算、メモリアクセス等を有することができる。
【０００６】
本発明によるプロセッサは、アプリケーションにおける命令レベル並列性及びスレッドレベル並列性の両方及び両方の組み合わせを利用することを可能にする。プログラムが高い命令レベル並列性を持つ場合、このアプリケーションは、前記処理素子の第２セットの１以上の処理素子にマッピングされることができる。これらの処理素子は、１つの制御スレッドの下で複数の命令の並列の実行を可能にする複数の発行スロットを持ち、したがって命令レベル並列性を利用するのに適している。プログラムが高いスレッドレベル並列性を持つが、低い命令レベル並列性を持つ場合、このアプリケーションは、前記処理素子の第１セットの処理素子にマッピングされることができる。これらの処理素子は、１つの制御スレッドの下で一連の命令のほとんど順次的な実行を可能にする比較的少数の発行スロットを持つ。各スレッドをこのような処理素子にマッピングすることにより、複数の制御スレッドが並列に存在することができる。プログラムが高いスレッドレベル並列性を持ち、１以上のスレッドが高い命令レベル並列性を持つ場合には、このアプリケーションは、前記処理素子の第１セット及び前記処理素子の第２セットの処理素子の組み合わせにマッピングされることができる。前記第１セットの処理素子は、主に順次的な一連の命令からなるスレッドの実行を可能にし、前記第２セットの処理素子は、並列に実行されることができる命令を持つスレッドの実行を可能にする。結果として、本発明による前記プロセッサは、実行されなければならないアプリケーションのタイプに応じて、命令レベル並列性及びスレッドレベル並列性の両方を利用することができる。
【０００７】
Proc. of Supercomputing 1990、第９１０−９１９頁のColwell他による“Architecture and Implementation of a VLIM Supercomputer”は、それぞれ対応するコントローラにより独立に制御される２つの１４演算幅プロセッサ（14-operations-wide processor）、又は１つのコントローラにより制御される１つの２８演算幅プロセッサのいずれかとして構成されることができるＶＬＩＷプロセッサを記載している。欧州特許公開公報ＥＰ０９６２８５６は、複数のプログラムカウンタを含み、第１モード又は第２モードのいずれかで選択的に動作する超長命令語プロセッサを記載している。前記第１モードにおいて、このデータプロセッサは、単一の命令ストリームを実行する。前記第２モードにおいて、前記データプロセッサは、２つの独立なプログラム命令ストリームを同時に実行する。この文書は、しかしながら、命令レベル並列性の無いものから高い命令レベル並列性を持つものまで多様なスレッドを並列に実行する複数の処理素子を持つプロセッサアレイの原理も、いかにしてこのようなプロセッサアレイが実現されることができるかも開示されていない。
【０００８】
本発明の実施例は、前記複数の処理素子の前記処理素子がネットワーク内に構成され、前記第１セットの処理素子が、前記プロセッサ間通信手段を介して前記第２セットのみの処理素子と直接的に通信するように構成され、前記第２セットの処理素子が、前記プロセッサ間通信手段を介して前記第１セットのみの処理素子と直接的に通信するように構成されることを特徴とする。実際のアプリケーションにおいて、高い命令レベル並列性を持つ機能（function）と、低い命令レベル並列性を持つ機能とは、交互に配置される（interleaved）。第１タイプの処理素子と第２タイプの処理素子とが同様に交互に配置されたアーキテクチャを選択することにより、前記処理システムへの前記アプリケーションの効率的なマッピングが可能にされる。
【０００９】
本発明の実施例は、前記プロセッサ間通信手段が、データ駆動同期通信手段を有することを特徴とする。前記処理素子全体の通信を管理するためにデータ駆動同期機構を使用することにより、データが通信中に失われないことが保証されることができる。
【００１０】
本発明の実施例は、前記複数の処理素子の前記処理素子が、前記プロセッサ間通信手段によりバイパスされるように構成されることを特徴とする。この実施例の利点は、前記アプリケーションの前記処理システムへのマッピングの適応性を増すことである。前記アプリケーションの命令レベル並列性及びタスクレベル並列性の程度に応じて、１以上の処理素子が、前記アプリケーションの実行中に使用されない可能性がある。
【００１１】
本発明の他の実施例は、従属請求項に記載される。本発明によると、前記処理システムをプログラムする方法、及びコンピュータシステム上で実行された場合に前記処理システムをプログラムする方法の全てのステップを実施するように構成されたコンパイラプログラムも同様に請求項に記載されている。
【発明を実施するための最良の形態】
【００１２】
図１は、本発明による処理システムを概略的に示す。前記処理システムは、処理素子の第１セットＰＥ１−ＰＥ１５及び処理素子の第２セットＰＥ１７−ＰＥ２３を有する複数の処理素子ＰＥ１−ＰＥ２３を有する。前記処理素子は、データパス接続ＤＰＣを介してデータを交換することができる。図１に示された好適な実施例において、前記処理素子は、前記第１セットの２つの処理素子の間に前記第２セットの１つの処理素子が存在し、その逆も同じであるように構成され、前記データパス接続は近接している処理素子の間でデータ交換を行う。近接していない処理素子は、相互に近接している処理素子のチェーンを介して転送することによりデータを交換することができる。代替的には、又はこれに加えて、前記プロセッサシステムは、前記複数の処理素子のサブセットに及ぶ１以上のグローバルバス、又は処理素子の対の間のポイントツーポイント（point-to-point）接続を有してもよい。代替的には、前記処理システムは、より多い又はより少ない処理素子を有してもよく、又は異なるセット内の処理素子が異なる数の発行スロットを有し、したがってセット毎に異なるレベルの命令レベル並列性をサポートするような２より多い異なるセットの処理素子を有してもよい。
【００１３】
図２は、前記処理素子の第２セットＰＥ１７−ＰＥ２３の１つの処理素子の例を詳細に示す。前記処理素子の第２セットの各処理素子は、２以上の発行スロット（ＩＳ）及び１以上のレジスタファイル（ＲＦ）を有し、各発行スロットは、１以上の機能ユニットを有する。図２の前記処理素子は、５つの発行スロットＩＳ１−ＩＳ５、及び６つの機能ユニット、即ち２つの算術及び論理ユニット（ＡＬＵ）と、２つの乗算累積ユニット（ＭＡＣ）と、１つのアプリケーション固有ユニット（ＡＳＵ）と、１つのロード／記憶ユニット（ＬＤ／ＳＴ）とを有する。前記処理素子は、５つのレジスタファイルＲＦ１−ＲＦ５をも有する。発行スロットＩＳ１は、２つの機能ユニット、即ち１つのＡＬＵ及び１つのＭＡＣを有する。共通の発行スロット内の機能ユニットは、レジスタファイルからの読み出しポート及び相互接続ネットワークＩＮに対する書き込みポートを共有する。代替実施例において、第２相互接続ネットワークが、レジスタファイルと演算発行スロットとの間で使用されることができる。１つの発行スロット内の機能ユニットは、当該発行スロットに関連付けられた少なくとも１つのレジスタファイルに対するアクセスを持つ。図２において、各発行スロットに関連付けられた少なくとも１つのレジスタファイルが存在する。代替的には、１より多い発行スロットが、単一のレジスタファイルに接続されることができる。更に他の可能性は、複数の独立なレジスタファイル、例えば当該発行スロット内の機能ユニットのそれぞれ別の読み出しポートに対する１つの異なるＲＦが、単一の発行スロットに接続されることができる。異なる処理素子の間のデータパス接続ＤＰＣは、好ましくは、処理素子全体の通信がメモリトランザクションとして管理されることができるように、それぞれの処理素子内のロード／記憶ユニット（ＬＤ／ＳＴ）から駆動される。好ましくは、異なるロード／記憶ユニット（ＬＤ／ＳＴ）が、前記処理素子を他の処理素子に接続する異なるデータパス接続（ＤＰＣ）と関連付けられて使用される。このようにして、前記処理素子が例えば４つの他の処理素子に直接的に接続される場合に、４つの異なるロード／記憶ユニットが、好ましくはこれらの処理素子と通信するために使用され、これは図２に示されていない。加えて、他のロード／記憶ユニットが、処理素子のデータパスに追加され、前記処理素子に対するローカル又はシステムレベルメモリのいずれかのデータメモリ（例えばＲＡＭ）に関連付けられることができ、これは図２に示されていない。前記機能ユニットは、命令メモリＩＭに対するアクセスを持つコントローラＣＴにより制御される。プログラムカウンタＰＣは、命令メモリＩＭ内の現在の命令アドレスを決定する。前記現在のアドレスにより示された命令は、まず前記コントローラ内の内部命令レジスタＩＲにロードされる。次いでコントローラＣＴは、命令レジスタＩＲに記憶された命令により示された演算を実行するようにデータパス素子（機能ユニット、レジスタファイル、相互接続ネットワーク）を制御する。こうするために、前記コントローラは、オペコードバスＯＢを介して前記機能ユニットと通信して、例えば前記機能ユニットにオペレーションコードを提供し、アドレスバスＡＢを介して前記レジスタファイルと通信して、例えば前記レジスタファイル内のレジスタを読み出す及び書き込むアドレスを提供し、ルーティングバスＲＢを介して相互接続ネットワークＩＮと通信して、例えば相互接続マルチプレクサにルーティング情報を提供する。前記第２セットの処理素子は、複数の発行スロットを有し、これは１スレッド内の命令レベル並列性を利用することを可能にする。例えば、高速フーリエ変換、離散コサイン変換及び有限インパルス応答フィルタのような内在する命令レベル並列性を持つアプリケーション機能は、前記第２セットの処理素子にマッピングされることができる。
【００１４】
図３は、前記処理素子の第１セットＰＥ１−ＰＥ１５の１つの処理素子の例を詳細に示す。前記処理素子の第１セットの１つの処理素子は、前記処理素子の第２セットの処理素子と比較して比較的少数の発行スロットを有する。前記第１セットの１つの処理素子は、更に１以上のレジスタファイル及び１つのコントローラを有する。前記発行スロットは、１以上の機能ユニット、例えば算術及び論理ユニット、乗算累積ユニット又はアプリケーション固有ユニットを有する。図３の前記処理素子は、２つの発行スロットＩＳ６及びＩＳ７並びに２つのレジスタファイルＲＦ６及びＲＦ７を有する。発行スロットＩＳ６は、２つの機能ユニット、即ちＡＬＵ及びＭＡＣを有する。共通の発行スロット内の機能ユニットは、レジスタフィルタからの読み出しポート及び相互接続ネットワークＩＮに対する書き込みポートを共有する。発行スロットＩＳ７は、前記処理素子を他の処理素子に接続するデータパス接続（ＤＰＣ）を駆動するロード／記憶ユニット（ＬＤ／ＳＴ）を有する。好ましくは、異なるロード／記憶ユニット（ＬＤ／ＳＴ）が、前記処理素子を他の処理素子に直接的に接続するデータパス接続（ＤＰＣ）に関連して使用される。このようにして、前記処理素子が例えば４つの他の処理素子に直接的に接続される場合に、４つの異なるロード／記憶ユニットは、好ましくはこれらの処理素子と通信するために使用され、これは図３に示されていない。加えて、更にロード／記憶ユニット（ＬＤ／ＳＴ）は、処理素子のデータパスに追加され、前記処理素子に対するローカル又はシステムレベルメモリのいずれかのデータメモリ（例えばＲＡＭ）に関連付けられることができ、これは図３に示されていない。代替実施例において、第２相互接続ネットワークがレジスタファイルと演算発行スロットとの間で使用されることができる。１つの発行スロット内の機能ユニットは、当該発行スロットに関連付けられた少なくとも１つのレジスタファイルに対するアクセスを持つ。図３において、発行スロットＩＳ６に関連付けられた１つのレジスタファイルと、発行スロットＩＳ７に関連付けられた他のレジスタファイルとが存在する。代替的には、独立なレジスタファイル、例えば前記発行スロット内の１つの機能ユニットのそれぞれ別の読み出しポートに対する１つの異なるＲＦが、前記発行スロットに接続される。前記機能ユニットは、命令メモリＩＭに対するアクセスを持つコントローラＣＴにより制御される。プログラムカウンタＰＣは、命令メモリＩＭ内の現在の命令アドレスを決定する。前記現在のアドレスにより示された命令は、まず前記コントローラ内の内部命令レジスタＩＲにロードされる。次いでコントローラＣＴは、命令レジスタＩＲに記憶された命令により示された演算を実行するようにデータパス素子（機能ユニット、レジスタファイル、相互接続ネットワーク）を制御する。こうするために、前記コントローラは、オペコードバスＯＢを介して前記機能ユニットに通信して、例えば前記機能ユニットにオペレーションコードを提供し、アドレスバスＡＢを介して前記レジスタファイルに通信して、例えば前記レジスタファイル内のレジスタを読み出す及び書き込むアドレスを提供し、ルーティングバスＲＢを介して相互接続ネットワークに通信して、例えば相互接続マルチプレクサにルーティング情報を提供する。前記第１セットの処理素子は、比較的少数の発行スロットを有し、したがって内在的に順次的な機能、例えばハフマンコーディング（Huffman coding）を計算するのに適している。
【００１５】
図４は、処理素子間のデータパス接続ＤＰＣの例を詳細に示す。好適な実施例において、前記データパス接続は、処理素子間の通信中にデータが失われるのを防ぐために、データ駆動同期機構を使用する。図４に示される処理素子ＰＥ２とＰＥ４との間のデータパス接続は、２つのブロッキング先入れ先出し（ＦＩＦＯ）バッファＢＦを有する。ＦＩＦＯバッファＢＦは、制御信号hold_w及びhold_rにより制御される。処理素子ＰＥ２又はＰＥ４が、満杯であるＦＩＦＯバッファＢＦにデータを書き込もうとする場合に、信号hold_wが駆動され、他の処理素子が当該ＦＩＦＯバッファから少なくとも１つのデータ要素を読み出して当該ＦＩＦＯバッファの記憶スペースを解放するまで、前記処理素子全体を停止する。前記解放の場合にhold_w信号が解除される。クロックゲーティング機構は、当該ＦＩＦＯバッファが満杯である限り、hold_w信号を使用して、前記処理素子が満杯のＦＩＦＯバッファにデータを書き込むことを停止するために使用されることができる。処理素子ＰＥ２又はＰＥ４が空のＦＩＦＯバッファから値を読み出そうとする場合には、hold_r信号が駆動され、他の処理素子が前記ＦＩＦＯバッファに少なくとも１つのデータ要素を書き込むまで、前記処理素子全体を停止する。前記書き込みの瞬間にhold_r信号が解除され、停止されていた前記処理素子は、再び前記ＦＩＦＯバッファからのデータの読み出しを開始することができる。クロックゲーティング機構は、当該ＦＩＦＯバッファが空である限り、hold_r信号を使用して、処理素子が空のＦＩＦＯバッファからデータを読み出すのを停止するために使用されることができる。
【００１６】
好適な実施例において、両方のセット内の処理素子はＶＬＩＷプロセッサであり、ここで前記第２セットの処理素子は広いＶＬＩＷプロセッサ、即ち多くの発行スロットを有するＶＬＩＷプロセッサであり、前記第１セットの処理素子は狭いＶＬＩＷプロセッサ、即ち少数の発行スロットを有するＶＬＩＷプロセッサである。代替実施例において、前記第２セットの処理素子は、多くの発行スロットを有する広いＶＬＩＷプロセッサであり、前記第１セットの処理素子は、単一発行スロットの縮小命令セットコンピュータ（ＲＩＳＣ）プロセッサである。多くの発行スロットを有する広いＶＬＩＷプロセッサは、当該プロセッサ上で実行されるスレッドにおける命令レベル並列性の利用を可能にし、単一発行スロットＲＩＳＣプロセッサ、又は少数の発行スロットを有する狭いＶＬＩＷプロセッサは、順次的に一連の命令を効率的に実行するように設計されることができる。実際に、アプリケーションはしばしば並列に実行されることができる一連のスレッドを有し、幾つかのスレッドは命令レベル並列性が非常に貧しく、幾つかのスレッドは内在的に高い命令レベル並列性を持つ。このようなアプリケーションのコンパイル中に、前記アプリケーションは解析され、並列に実行されることができる異なるスレッドが識別される。更に、スレッド内の命令レベル並列性の程度も同様に決定される。このアプリケーションは、本発明により以下のように処理システムにマッピングされることができる。高い命令レベル並列性を持つスレッドは、前記広いＶＬＩＷプロセッサにマッピングされ、命令レベル並列性が非常に貧しいスレッド又は全く命令レベル並列性を持たないスレッドは、前記単一発行スロットＲＩＳＣプロセッサ又は前記狭いＶＬＩＷプロセッサにマッピングされる。異なるスレッドの間の通信は、図１に示されるようにデータパス接続ＤＰＣにマッピングされる。結果として、前記アプリケーションの効率的な実行が可能にされ、即ち複数のスレッドが並列に実行され、同時にスレッド内の命令レベル並列性が利用されることができる。したがって、本発明による処理システムは、アプリケーション内のスレッドレベル並列性及び命令レベル並列性の両方を利用することができる。加えて、本発明は、スレッドの計算特性と、前記スレッドがマッピングされる前記処理素子の計算特性との間の適切な整合を可能にする利点を持つ。このようにして、ハフマン復号のような内在的に順次的な機能は、広いＶＬＩＷプロセッサにマッピングされて命令レベル並列性の欠如により役に立たないアーキテクチャリソースを無駄にすることはなく、代わりに計算パターンを適合する小さなＲＩＳＣプロセッサにマッピングされ、前記広いＶＬＩＷプロセッサは他の機能に対して利用可能なまま残される。
【００１７】
図５は、図１に示された処理システムにより実行されなければならないアプリケーションのアプリケーショングラフを示す。図５を参照すると、前記アプリケーションは、５つのスレッドＴＡ、ＴＢ、ＴＣ、ＴＤ及びＴＥを有する。これら５つのスレッドは、並列に実行されることができる。スレッドＴＡ、ＴＢ、ＴＣ及びＴＥは、高い命令レベル並列性を持ち、スレッドＴＤは命令レベル並列性を持たない。前記スレッドは、データストリームＤＳを介してデータを交換し、これらのデータストリームは、データバッファＤＢによりバッファされる。前記処理システムに前記アプリケーションをマッピングする場合に、スレッドＴＡ、ＴＢ、ＴＣ及びＴＥは、それぞれ処理素子ＰＥ１７−ＰＥ２３の１つにマッピングされ、スレッドＴＤは、処理素子ＰＥ１−ＰＥ１５の１つにマッピングされる。１つの代替例は、スレッドＴＡを処理素子ＰＥ１７に、スレッドＴＢを処理素子ＰＥ１９に、スレッドＴＣを処理素子ＰＥ２１に、スレッドＴＤを処理素子ＰＥ１５に、及びスレッドＴＥを処理素子ＰＥ２３にマッピングすることである。この場合、スレッドＴＣ、ＴＤ及びＴＥは、データパス接続ＤＰＣを介して直接的に接続されている処理素子にマッピングされる、即ち処理素子ＰＥ２１は処理素子ＰＥ１５と直接的に通信し、処理素子ＰＥ１５は処理素子ＰＥ２３と直接的に通信する。処理素子ＰＥ１７は、それぞれＰＥ７及びＰＥ９を介して間接的にＰＥ１７に結合されている処理素子ＰＥ１９及びＰＥ２１と通信しなければならないので、スレッドＴＡ及びＴＢに対しては、これは当てはまらない。同様に、処理素子ＰＥ１９は、ＰＥ１１を介してＰＥ１９に間接的に結合された処理素子ＰＥ２３と通信しなければならない。これらの場合、処理素子ＰＥ７、ＰＥ９及びＰＥ１１は、前記処理素子の間の直接的な通信を可能にするためにバイパスされることができる。データストリームＤＳはデータパス接続ＤＰＣにマッピングされ、データバッファＤＢは、図４に示されたＦＩＦＯバッファＢＦにマッピングされる。異なる実施例において、前記アプリケーショングラフは、より多くの又はより少ないスレッドを有してもよく、高い命令レベル並列性を持つスレッドと低い命令レベル並列性を持つスレッドとの間の異なる比を有してもよい。
【００１８】
図１に示された好適な実施例において、前記第１セットの前記処理素子及び前記第２セットの前記処理素子が交互に配置され、即ち前記第１セットの１つの処理素子は、前記第２セットのみの１つの処理素子と直接的に通信するように構成され、前記第２セットの１つの処理素子は、前記第１セットのみの１つの処理素子と直接的に通信するように構成される。結果として、異なる処理素子で実行する２つのスレッドの間の通信に対して１より多いバイパスされた処理素子の不利益は全く存在しない。
【００１９】
利用されることができる命令レベル並列性及びスレッドレベル並列性の程度は、アプリケーションごとに異なり、各スレッドが高い命令レベル並列性を持ち、低いスレッドレベル並列性を持つアプリケーションから、各スレッドが命令レベル並列性を持たず、高いスレッドレベル並列性を持つアプリケーションまで異なる。図１に示された処理システムの適応性は、スレッドがマッピングされることができない処理素子をバイパスすることにより、アプリケーションの全範囲を前記処理システムにマッピングすることを可能にする。
【００２０】
図２を参照すると、相互接続ネットワークＩＮが完全に接続されたネットワークであり、即ち全ての機能ユニットが全てのレジスタファイルＲＦ１、ＲＦ２、ＲＦ３、ＲＦ４及びＲＦ５に結合される。代替的には、相互接続ネットワークＩＮは部分的に接続されたネットワークであり、即ち全ての機能ユニットが全てのレジスタファイルに結合されているわけではない。多数の機能ユニットの場合、完全に接続されたネットワークのオーバーヘッドは、シリコン面積及び電力消費に関して考慮されるべきである。前記ＶＬＩＷプロセッサの設計中に、前記処理システムにより実行されなければならないアプリケーションの範囲に応じて、前記機能ユニットがレジスタファイルセグメントに結合される程度が決定される。
【００２１】
図２を再び参照すると、前記処理素子は、分散されたレジスタファイル、即ちレジスタファイルＲＦ１、ＲＦ２、ＲＦ３、ＲＦ４及びＲＦ５を有する。代替的には、前記処理素子は、全ての機能ユニットに対して単一のレジスタファイルを有してもよい。ＶＬＩＷプロセッサの機能ユニットの数が比較的小さい場合には、単一のレジスタファイルのオーバーヘッドも同様に比較的小さい。
【００２２】
代替実施例において、前記第２セットの前記処理素子は、スーパースカラプロセッサを有する。スーパースカラプロセッサは、ＶＬＩＷプロセッサの場合のように並列に複数の演算を実行することができる複数の実行ユニットを有する。しかしながら、プロセッサハードウェア自体は、リソース競合が生じないことを保証しながら、どのような演算依存性が存在するかを実行時間において決定し、これらの依存性に基づいてどの演算を並列に実行するかを決定する。このセクションに記載されたＶＬＩＷプロセッサに対する実施例の原理は、スーパースカラプロセッサにも当てはまる。一般に、ＶＬＩＷプロセッサは、スーパースカラプロセッサと比較してより多くの実行ユニットをもつことができる。ＶＬＩＷプロセッサのハードウェアは、スーパースカラプロセッサと比較してより複雑でなく、この結果としてより良いスケーラブルアーキテクチャを生じる。実行ユニットの数及び各実行ユニットの複雑性は、特に、本発明を使用して達成されることができる利点の量を決定する。
【００２３】
本発明による処理システムの他の実施例において、前記処理システムは、図１に示された前記処理システムより多い又は少ない処理素子を有することができる。代替的に、前記処理素子は、異なって構成されてもよく、例えば１次元ネットワークに構成されてもよく、又は交互配置ではない形式に構成されてもよく、即ち前記第１セットの２つの処理素子の間に前記第２セットの１より多い処理素子が配置され、その逆も同様である。前記処理システムのアーキテクチャは、前記処理システム上で実行されることが期待されるアプリケーションの範囲、例えばアプリケーションの範囲が命令レベル並列性の量に対して持つスレッドレベル並列性の量に依存してもよい。
【００２４】
上述の実施例は本発明を制限するのではなく説明し、当業者が添付の請求項の範囲から外れることなく多くの代替実施例を設計することができることに注意すべきである。請求項において、括弧の間に配置された参照符号は、前記請求項を制限するように解釈されるべきでない。単語“有する”は、請求項にリストされた要素又はステップ以外の要素又はステップの存在を除外しない。要素に先行する単語“１つの”は、複数のこのような要素の存在を除外しない。複数の手段を列挙する装置請求項において、これらの手段の幾つかは、ハードウェアの同一アイテムにより実施されることができる。特定の方策が相互に異なる従属請求項に記載されているという単なる事実は、これらの方策の組合せが有利に使用されることができないことを示さない。
【図面の簡単な説明】
【００２５】
【図１】本発明による処理システムの概略図を示す。
【図２】処理素子の第２セットの１つの処理素子の例を詳細に示す。
【図３】処理素子の第１セットの１つの処理素子の例を詳細に示す。
【図４】処理素子間のデータパス接続の例を詳細に示す。
【図５】本発明による処理システムにより実行されるべきアプリケーションのアプリケーショングラフを示す。
【図１】
0004589305.tif 000002
【図２】
0004589305.tif 000003
【図３】
0004589305.tif 000004
【図４】
0004589305.tif 000005
【図５】
0004589305.tif 000006