(57)【要約】典型的にＳＩＭＤ動作の間である共通のプログラムフローの制御下で命令が供給される、複数の処理エレメント１０を含む電子回路であり、同じ命令が全ての処理エレメントに与えられ、命令の異なるオペランドデータは、処理エレメント１０のそれぞれ１つに与えられる。命令の制御下で、それぞれの処理エレメント１０は、オペランドデータに依存する条件が生じたかを判定する。処理エレメントは、前記判定に依存して条件信号を出力する。条件信号は、合計信号を形成するために合計される。プログラムフローは、合計信号により表される値に依存して条件付きジャンプにより制御される。
2008530679.tif 000002
【特許請求の範囲】
【請求項１】
複数の並列命令処理エレメントと、それぞれの処理エレメントは、データに依存する条件が処理エレメントによる命令の実行の間に生じたかを示す条件信号を供給するフラグ出力を有し、
前記処理エレメントに結合される出力をもつ命令供給回路と、
前記フラグ出力に結合される入力と合計出力とを持つ加算回路と、
供給される命令のプログラムフローを制御するために前記命令供給回路に結合される制御回路とを有し、
前記制御回路は、前記合計出力に結合される条件入力を有し、
前記制御回路は、前記合計出力で供給される合計の値に依存して前記命令供給回路の条件付きのプログラム制御のジャンプに影響を及ぼすために構成される、
電子回路。
【請求項２】
前記処理エレメントのうちのマスクにより選択されたエレメントからのデータに依存する条件への条件信号の依存性を抑圧するために作用するマスキング回路を有する、
請求項１記載の電子回路。
【請求項３】
１よりも大きい数であって、処理エレメントの全体数から１を引いた数よりも小さい数に関して合計の結果の値に依存するプログラムジャンプを強制するジャンプ命令を含むプログラムでプログラムされる、
請求項１記載の電子回路。
【請求項４】
当該電子回路はＳＩＭＤアーキテクチャを有し、
前記命令供給回路は、全ての処理エレメントに共通の同じ命令の情報を供給するために構成される、
請求項１記載の電子回路。
【請求項５】
前記制御回路は、命令処理回路であり、前記命令供給回路は、前記処理回路への命令情報の供給と同期して、前記制御回路に前記処理エレメントのためのそれぞれの命令に関連する制御命令を供給するために構成され、前記制御回路の制御命令のセットは、条件付きのプログラム制御ジャンプに影響を及ぼすための条件付きジャンプ命令を含む、
請求項１記載の電子回路。
【請求項６】
前記加算回路により加えられる前記条件信号は、１ビット信号であり、前記合計は、多ビットの合計信号である、
請求項１記載の電子回路。
【請求項７】
前記処理エレメントの命令のセットは、前記データに依存する条件がどのように前記命令のオペランドデータに依存するかを定義する比較命令を含む、
請求項１記載の電子回路。
【請求項８】
前記制御回路は、前記合計の値が前記制御回路の制御命令で規定される閾値以下であるかに依存して、及び／又は前記合計の値が前記制御回路の制御命令で規定される閾値を超えるかに依存して、条件付きプログラム制御ジャンプに影響を及ぼすために構成される、
請求項１記載の電子回路。
【請求項９】
複数のオペランドを並列に処理する方法であって、
複数の並列処理エレメントに命令を供給するステップと、
前記命令のそれぞれのオペランドデータを前記処理エレメントのそれぞれ１つに供給するステップと、
それぞれ特定の処理エレメントで、オペランドデータに依存する条件が特定の処理エレメントによる命令の実行の間に生じたかを判定するステップと、
前記判定に依存してそれぞれ特定の処理エレメントから条件付き信号を出力するステップと、
合計信号を形成するために前記条件信号を合計するステップと、
命令を含むプログラムにおいて条件付きプログラム制御ジャンプを実施するステップとを含み、
前記ジャンプは、前記合計信号により表される値に依存して実施される、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の並列の命令処理エレメントを有する電子回路に関する。
【背景技術】
【０００２】
複数の並列の命令処理エレメントを持つプロセッサ回路の典型的な例は、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）プロセッサであり、全ての処理エレメントは、共通の命令サイクルを実行する。それぞれの命令サイクルにおいて、ＳＩＭＤ処理エレメントは、同じプログラムの命令を実行し、それぞれは、自身のオペランドデータを使用する。典型的に、かかるＳＩＭＤプロセッサは、セントラルプログラムカウンタを有し、このカウンタは、共通して、全ての処理エレメントに供給される命令をアドレスするために使用される。
【０００３】
コンピュータプログラムでは、非常に簡単なプログラムは、たとえば高水準プログラムからｉｆ−ｔｈｅｎ−ｅｌｓｅ構造を実現するために処理データの値に関する条件が合致した場合、あるプログラムの部分から別のプログラムの部分にジャンプするため、条件付きフロー制御の形式を含む。かかるジャンプは、プログラムカウンタの条件付きアップデートとして実現される。ＳＩＭＤプロセッサで条件付きの実行を実現することが望まれる。様々なアプローチが使用されている。欧州特許出願Ｎｏ００３５６４７は、それぞれの処理エレメントが全ての処理エレメントに共通に供給される命令を実行するか否かを記載する構造を記載している。代替的なソリューションは、ジャンプを使用することであり、全ての処理エレメントについて後続する命令の選択に集合的に影響を及ぼす。所定の条件を検出したことを全ての処理エレメントが合図するか、又は所定の条件を検出したことを処理エレメントが合図しないか、検出を含む係るジャンプについて、条件をジャンプすることが知られている。
【０００４】
典型的に、これは、ＯＲ回路又はＡＮＤ回路を使用して実現され、入力は処理エレメントのフラグ入力に結合され、このＯＲ／ＡＮＤ回路の出力は、ジャンプが実行されるか否かを制御するために使用される。選択可能な処理エレメントからフラグ信号をマスクすることが知られており、更に変わる条件を許容する。このタイプの条件付きジャンプは、プログラムフローにわたり非常に制限されたデータに依存する制御のみを与える。ジャンプは、“処理エレメントの何れにもそれらのフラグを設定させていない”又は“処理エレメントの全てにそれらのフラグを設定させる”のような条件でのみ可能である。これは、たとえば（データが雑音を含みかつ）統計的な条件に依存するジャンプが必要とされるときに、殆ど使用されない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、複数の処理エレメントが共通のプログラムフローをもつプログラムを実行するプロセッサ回路において更に複雑な条件でジャンプ命令を実行するのを可能にすることである。  
本発明の目的は、統計的な条件で集合的なプログラムジャンプをサポートする複数の並列処理エレメントをプロセッサ回路に設けることにある。
【課題を解決するための手段】
【０００６】
本発明に係る電子回路は、請求項１に記載される。本発明によれば、加算回路が使用され、入力が処理エレメントのフラグ出力に接続され、合計の出力は共通のフロー制御回路に結合される。このように、プログラムジャンプ条件は、それらのフラグを設定した処理エレメントの数のカウントに基づく。
【０００７】
本発明のこれらの目的及び利点、並びに他の目的及び利点は、以下の図を使用して限定するものではない例により説明される。
【発明を実施するための最良の形態】
【０００８】
図１は、複数の処理エレメント１０、オペランドストレージ回路１２、加算回路１４、制御プロセッサ１６、プログラムカウンタ１８及び命令供給回路１９を有する処理回路を示す。３つの処理エレメント１０のみが示されているが、実際に、非常に多くの数が存在する場合があることを理解されたい。処理エレメント１０は、オペランドストレージ回路１２に結合されるオペランド入力及び結果の出力、及び加算回路１４の入力に結合されるフラグ出力を有する。加算回路１４の合計出力は、制御プロセッサ１６に結合される。命令供給回路１９は、プログラムカウンタ１８に結合される入力と、処理エレメント１０、オペランドストレージ回路１２及び制御プロセッサ１６に結合される出力を有する。
【０００９】
制御プロセッサ１６は、プログラムカウンタ１８に結合される制御出力を有する。シンプルな実現では、命令供給回路１９は、命令メモリであり、このメモリは、プログラムカウンタによりアドレスされるメモリロケーションの内容をリターンするが、更に複雑な回路が使用される場合があり、たとえばキャッシュ、パイプライン及び／又は予備の命令のデコードの幾つかの形式を実現する。組織的に、プログラムカウンタ１８は、命令供給回路１９の一部と考えられるが、明確さのために個別に示されている。
【００１０】
動作において、プログラムカウンタ１８は、命令供給回路１９に命令のアドレスを供給する。通常の状況下で、プログラムカウンタ１８は、連続する命令サイクルで命令のアドレスをインクリメントし、連続するプログラムの命令は、連続する命令のサイクルにおいてアドレスされる。それぞれの命令のアドレスに応答して、命令供給回路１９は、処理エレメント１０、オペランド回路１２及び制御プロセッサ１６に命令情報を供給する。命令情報に応答して、オペランドストレージ回路１２は、オペランドデータを処理エレメント１０に出力し、処理エレメント１０は、命令により制御される演算を実行し、それぞれは、オペランドとしてオペランドデータの異なる部分を使用する。
【００１１】
実行処理エレメント１０の結果として、それぞれは結果を生成し、処理エレメント１０の結合された結果は、命令供給回路１９からの命令により制御されるアドレスにあるオペランドストレージ回路１２に書き込まれる。少なくとも１つのタイプの命令に応答して、処理エレメント１０は、それらフラグの出力でオペランドに依存するフラグデータを出力する。１つの例では、処理エレメント１０は、「比較」命令をサポートし、この命令の実行に応じて、それぞれの処理エレメント１０は、そのフラグ出力にあるその特定のオペランドのために取得される比較結果を出力する。別の例では、フラグ出力での信号は、結果の計算の副作用として生成され、たとえば結果がゼロよりも大きな数を表すか、オーバフローを表すか等を示す。
【００１２】
加算回路１４は、フラグ出力で信号を加算する。すなわち、フラグ信号が予め決定されたロジックレベルを有する、フラグ出力の数のカウントを形成する。したがって、処理エレメントのうちの１つのみが係るフラグ信号を出力した場合、加算回路１４は、数「１」を表す信号を出力し、処理エレメントのうち２つのみが係るフラグ信号を出力した場合、加算回路１４は、処理エレメントの数である数「２」〜「Ｎ」までを表す信号を出力する。
【００１３】
制御プロセッサ１６は、命令供給回路１９からのそれ自身のカウンタに依存する命令を受け、加算回路１４から合計信号を受ける。これらの命令に応答して、制御プロセッサ１６は、様々なタイプのアクションを実行する。命令は、条件付きジャンプ命令を含む（この用語は、本明細書での用語「ブランチ命令」と交換可能に使用される）。このタイプの命令に応答して、制御プロセッサ１６は、命令で規定される条件に合致するかをテストし、条件に合致する場合、制御プロセッサ１６は、命令のアドレスを変えるためにプログラムカウンタ１８に信号を送出する。必要とされる変化は、たとえば（プログラム選択アドレスに対して）絶対的な変化であるか、又は別の例として（古い命令のアドレスにプログラム選択オフセットを加えたものに対して）相対的な変化である。
【００１４】
実施の形態では、制御プロセッサ１６は、加算回路１４からの合計信号に依存する条件を使用することで少なくとも１つの命令のタイプに応答するために設計される。１実施の形態では、このタイプの命令は、閾値の観点で条件を規定し、制御プロセッサ１６は、プログラムカウンタ１８に、加算回路からの合計信号がこの閾値を超える（及び／又は任意にこの数に等しい）場合に、この命令に応答して相対的又は絶対的なジャンプに従って命令のアドレスを更新させる。
【００１５】
別の実施の形態では、制御プロセッサ１６は、加算回路からの合計信号がこの閾値に等しいか、又はこの閾値よりも低い場合に、この命令に応答してジャンプを生じさせる。好ましくは、制御プロセッサ１６は、加算回路からの合計信号がこの閾値よりも低い（及び／又は等しい）、及びこの閾値よりも高い（及び／又は等しい）場合にジャンプを生じさせるため、それぞれの命令をサポートするために設計される。
【００１６】
例では、このタイプの命令は、（処理エレメント１０は、それぞれのオーディオサンプルを処理するか、それぞれのフーリエ係数を処理するオーディオ信号の処理、及び／又は処理エレメント１０がそれぞれのピクセルサンプルを処理するか、それぞれのフーリエ係数を処理するビデオ信号の処理のような）信号処理の間の統計的な判定をなすために使用される（本明細書で使用されるように、「サンプル」は、直接的に測定された物理的な値を示すだけでなく、係る測定されたシリーズの処理から得られるシリーズを示す）。このタイプのタスクのためのプログラムでは、通常のプログラムフローは、たとえば最小を超えるサンプル値が閾値を超えるケースについて特別なプログラム部分と同様に供給される。このケースでは、プログラムは、特別なプログラム部分の一度だけジャンプするための命令を含み、すなわち５パーセントの処理エレメント１０が、そのオペランド値が閾値を超えることを検出する。
【００１７】
更なる実施の形態では、回路は、フラグをマスクするのをサポートするために構成され、加算回路１４は、処理エレメント１０のうちのプログラムで選択された１つからフラグ信号の合計を形成する。マスキングは、様々なやり方で実現することができる。１実施の形態では、マスキングは、処理エレメント１０でサポートされる。このケースでは、たとえば、特定の処理エレメント１０における命令の第一のオペランドに関する条件が合致せず、特定の処理エレメント１０における命令の第二のオペランドにおける制御フラグが予め決定された値を有する場合、それぞれの処理エレメント１０は、ゼロフラグ信号（すなわち合計に寄与しない信号）を出力するために命令に応答するように設計される。このケースでは、条件が合致し、制御フラグが予め決定された値を有さない場合、処理エレメント１０は、非ゼロのフラグ信号のみを出力する。
【００１８】
別の実施の形態では、マスキングは、命令供給回路１９により制御レジスタ（図示せず）に供給されるマスクベクトルによりサポートされる。このマスクベクトルは、命令供給回路１９から直接に供給されるか、又は制御プロセッサ１６を介して供給される。
【００１９】
図２は、処理エレメント１０と加算回路１４の間に設けられるＡＮＤゲート２０の形式で、処理エレメント１０の外側にマスキング回路が示される実施の形態を示す。それぞれの処理エレメント１０のフラグ出力は、それぞれのＡＮＤゲートの第一の入力に結合され、制御フラグは、マスクレジスタ２２からの第二の入力に供給される。ＡＮＤゲート２０の出力は、加算回路１４に結合される。この実施の形態では、制御レジスタ２２は、制御フラグを提供するためにＡＮＤゲート２０の入力へのそれぞれの出力を有する。
【００２０】
この実施の形態では、マスクベクトルは、制御プロセッサ１６を介して供給され、このプロセッサは、制御レジスタのそれぞれの部分を設定するために１以上の命令の形式で実現される。しかし、本発明は、この実施の形態に限定されるものではなく、たとえばＡＮＤゲートの機能に類似の機能が処理エレメント１０の内部にあり、そのケースでは、制御レジスタ２２は、処理エレメント１０に結合されるか、又は処理エレメント１０の一部である制御レジスタが使用される場合がある。同様に、制御フラグが命令供給回路１９から供給される場合、この回路は制御レジスタ２２に結合されるか、制御フラグがオペランドストレージ回路１２から到来する場合、制御レジスタ２２はその回路の一部である。
【００２１】
別の実施の形態では、処理エレメント１０は、（たとえば、オペランドが等しい、第一のオペランドが第二のオペランドよりも大きい及び第一のオペランドが第二のオペランドよりも小さい、又は演算結果がゼロよりも大きい、ゼロに等しい、ゼロよりも小さいといった、異なる条件を示す）複数の異なるフラグ信号を出力するために構築される。この実施の形態では、複数の加算回路１４は、処理エレメント１０と制御プロセッサ１６の間に設けられ、それぞれの回路は、それぞれのタイプのフラグ信号を合計する。このケースでは、制御プロセッサ１６は、異なるタイプの合計に応答してジャンプを実現する異なるタイプの命令に応答するために構成されることが好ましい。
【００２２】
別の実施の形態では、複数のタイプのフラグ信号について１つの加算回路１４が設けられ、マルチプレクサ（図示せず）は、それぞれの処理エレメント１０からのフラグ出力のグループと加算回路１４の対応する入力との間にそれぞれ結合され、制御プロセッサ１６は、制御プロセッサ１６の命令の制御下で合計される必要があるフラグ信号のタイプを選択するこれらマルチプレクサの制御入力に結合される出力を有し、代替的に、処理エレメントは、それらの命令の制御下でフラグのタイプを選択するために構成される。
【００２３】
１実施の形態では、加算回路１４は、飽和加算回路（ｓａｔｕｒａｔｉｎｇ  ａｄｄｅｒ  ｃｉｒｃｕｉｔ）であり、この回路は、予め決定された最大値にまで合計し、最大値を表す数、すなわち実際の合計が最大値を超える場合に実際の合計をモジュロとする数をリターンする。これは多くのケースで満足する。しかし、好ましくは、加算回路１４は、全ての可能性のある合計の値にまで加算するために設計される。様々なタイプの加算回路が使用される。好ましくは、ツリー構造の加算回路１４が使用され、それぞれのサブ加算器（図示せず）は、処理エレメントのサブセットからフラグ信号のそれぞれの部分的な合計を形成するために設けられ、１以上の後続する加算器は、部分的な合計を加算する。
【００２４】
これは、フラグ信号の生成とジャンプの実施の間で必要とされる遅延を低減する。何れのケースにおいても、パイプラインの形式が使用される場合があり、処理エレメント１０が１命令サイクルにおいて出力を有するフラグ信号の合計は、後の命令サイクルにおけるプログラムカウンタアドレスにおける変化を招くジャンプ、たとえばパイプライン化された加算回路１４で使用される多数のサイクルによるオリジナル命令サイクルに対するオフセットに影響を及ぼすことを理解されたい。
【００２５】
好ましくは、１ビットフラグが使用される。しかし、更なる実施の形態では、（たとえば、４つのレンジのうち、処理エレメント１０のオペランド間の比較が得られる、２ビットのフラグ）多ビットフラグが使用される場合がある。更なる実施の形態では、加算回路１４が設計され、数としてこれらマルチビットフラグを合計する。フラグの出力とジャンプの実行の間の大きな遅延を回避するため、使用される場合、係るマルチビットフラグのサイズは好ましくは小さく、典型的には処理エレメント１０のオペランドにおけるビット数よりも非常に小さい。
【００２６】
好ましくは、処理回路はＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）回路であり、この回路は、命令供給回路１９が、命令サイクル当たり同じ命令を全ての処理エレメント１０に供給することを意味する。このように、分別よく合計することができる、処理エレメント１０により比較しうるフラグ信号が出力される、シンプルなやり方で保証される。しかし、本発明は、ＳＩＭＤプロセッサに限定されない。本発明は、ＭＩＭＤプロセッサにも適用され、すなわち、命令供給回路１９が処理エレメント１０に相互に異なる命令を供給することができるプロセッサにも適用される。典型的に、このケースでは、フラグ信号の合計に関して条件付けされるジャンプ命令は、等しいか又は少なくとも類似の命令が全ての処理エレメント１０（又は合計においてマスクされていない少なくとも処理回路１０）に供給されるときに生成されるフラグ出力について使用される。
【００２７】
さらに、条件付きジャンプ（又はブランチ）命令の実行において加算回路１４の出力が使用される本発明は好適な実施の形態について記載されたが、更に又は代替的に本発明は割り込み又は例外プロセスに適用される場合があることを理解されたい。割り込みのケースでは、制御プロセッサ１６は、合計に依存する条件が生じるとき、予め決定されたアドレスへのジャンプを生じさせる。
【００２８】
条件及び／又は予め決定されたアドレスは、たとえばハードワイヤリングにより永続的に、又は「イネーブルインタラプト」命令に応答して、後続する命令よりも前もって設定される場合がある。このタイプのプロセッサでは、通常のプログラムフローの間の任意の１つの命令の実行後に合計が条件に合致しない場合に、プログラムカウンタ１８は、通常のプログラムフローに追従する。条件が合致する場合、制御は例外処理命令に転送される。
【００２９】
処理エレメント１０及び制御プロセッサ１６の両者について命令の選択を制御するプログラムカウンタを変えるジャンプ命令を含めて、処理エレメント１０によるステップにおける命令を実行するために制御プロセッサ１６が構築される実施の形態が記載された。典型的に、制御プロセッサ１６が構築され、オペランドストレージユニット１２への信号データの捕捉又は回路等からの結果の出力の更新を制御するため、他のタイプの命令も同様に実行することができる。
【００３０】
しかし、本発明は、この実施の形態に限定されるものではないことを理解されたい。異なる実施の形態では、制御プロセッサ１６は、条件を監視し、これらの条件に依存してプログラムカウンタのアップデートを実現する役割を果たす。このケースでは、制御プロセッサについて「命令」とは、ジャンプターゲットアドレス（又はオフセット）、及び、合計の閾値及び／又は合計が閾値を超えるか又は下回る場合にジャンプが必要とされるかといった、条件の任意の規定を含む。
【００３１】
さらに、フラグ信号の合計の使用のみがジャンプ条件を規定するために詳細に記載されたが、たとえばフラグ出力のうちの任意のマスクされた１つの論理関数が真であるかに依存して、他の条件に関しても同様にジャンプを生じさせるために更に制御プロセッサ１６が構築される。このため、対応する論理回路は、加算回路１４と並列に、フラグ出力と制御プロセッサ１６の間で接続される。このケースでは、制御プロセッサの命令は、ジャンプルを実現すべきかを判定するためにどの回路を使用すべきかを規定する。しかし、論理ＡＮＤ、論理ＯＲ及びパリティ機能のようなフラグ出力信号のシンプルな論理関数の結果に関してジャンプするため、加算回路１４の出力信号が使用される場合があり、合計がゼロよりも大きい場合に論理ＯＲは真であり、合計が最大の可能性のある値に等しい場合に論理ＡＮＤが真であり、パリティは、合計の最下位ビットに対応する。
【００３２】
選択されたグラグ信号のマスキングと組み合わせて、合計回路の出力は、誤り訂正シンドローム値のビットを計算するために使用される。典型的に、これは、複数の異なるマスク及び合計の最下位ビットの使用を含む。代替的に、複数の異なる合計回路（そのうちの幾つかは最下位ビットの出力のみを有する）、及び複数のマスクレジスタは、並列してシンドロームの異なるビットを計算するために並列に提供される。
【図面の簡単な説明】
【００３３】
【図１】処理回路を示す図である。
【図２】更なる処理回路を示す図である。
【図１】
2008530679.tif 000003
【図２】
2008530679.tif 000004
【国際調査報告】
2008530679.tif 000005
2008530679.tif 000006