(57)【特許請求の範囲】
【請求項１】
１つの命令で複数のデータを並列に処理する演算処理装置であって、
命令レジスタに格納されている命令に基づいて、共通の演算を実行する複数のプロセッサ・エレメントと、
各プロセッサ・エレメントで保持されている条件フラグに対して論理演算、及び比較演算のいずれかを実行し、実行した結果を各プロセッサ・エレメントに転送し、実行した結果に前記条件フラグを更新する条件フラグ演算器と、
前記複数のプロセッサ・エレメントの個数と同じ数のビット幅を有し、各ビットが各プロセッサ・エレメントと１対１に対応する条件フラグマスクレジスタと、
前記条件フラグ演算器において実行される論理演算が論理和演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第１の論理値に変換し、前記条件フラグ演算器において実行される論理演算が論理積演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第２の論理値に変換する条件フラグ変換器と
を備えることを特徴とする演算処理装置。
【請求項２】
前記演算処理装置は、さらに、
前記条件フラグ演算器から転送される演算結果に基づいて、条件分岐を実行する機能を有する命令発行制御手段
を備えることを特徴とする請求項１に記載の演算処理装置。
【請求項３】
各プロセッサ・エレメントは、さらに、
前記条件フラグを保持する１つ以上の条件フラグレジスタと、
データを供給するデータ供給装置と、
前記データに対する演算結果を格納するデータ格納装置と、
前記データ供給装置から供給されるデータに対して所定の演算を実行し、前記データ格
納装置、及び前記条件フラグレジスタへ、実行した結果を転送する演算器と、
前記条件フラグ演算器から転送される結果、及び前記演算器から転送される結果のいずれかを選択し、選択した結果を前記条件フラグレジスタへ転送する第１のセレクタと、
前記１つ以上の条件フラグレジスタから１つのレジスタの値を選択し、前記データ格納装置、及び前記条件フラグ演算器へ、選択した値を転送する第２のセレクタと
を含むことを特徴とする請求項１に記載の演算処理装置。
【請求項４】
各プロセッサ・エレメントは、さらに、
前記条件フラグを保持する１つ以上の条件フラグレジスタと、
データを供給し、前記データに対する演算結果を格納するデータ記録装置と、
前記データ記録装置から供給されるデータに対して所定の演算を実行し、前記データ記録装置、及び前記条件フラグレジスタへ、実行した結果を転送する演算器と、
前記条件フラグ演算器から転送される結果、及び前記演算器から転送される結果のいずれかを選択し、選択した結果を前記条件フラグレジスタへ転送する第１のセレクタと、
前記１つ以上の条件フラグレジスタから１つのレジスタの値を選択し、前記データ記録装置、及び前記条件フラグ演算器へ、選択した値を転送する第２のセレクタと
を含むことを特徴とする請求項１に記載の演算処理装置。
【請求項５】
複数のプロセッサ・エレメント、及び条件フラグ演算器を有する装置において、１つの命令で複数のデータを並列に処理する演算処理方法であって、
複数のプロセッサ・エレメントは、命令レジスタに格納されている命令に基づいて、共通の演算を実行する演算ステップと、
条件フラグ演算器は、各プロセッサ・エレメントで保持されている条件フラグに対して論理演算、及び比較演算のいずれかを実行し、実行した結果を各プロセッサ・エレメントに転送し、実行した結果に前記条件フラグを更新する条件フラグ演算ステップと
前記複数のプロセッサ・エレメントの個数と同じ数のビット幅を有し、各ビットが各プロセッサ・エレメントと１対１に対応する条件フラグマスクレジスタに対する処理であって、前記条件フラグ演算ステップにおいて実行される論理演算が論理和演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第１の論理値に変換し、前記条件フラグ演算ステップにおいて実行される論理演算が論理積演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第２の論理値に変換する条件フラグ変換ステップと
を含むことを特徴とする演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置に関し、特に、条件フラグレジスタ備えたＳＩＭＤ（Single Instruction Multiple Data）型の演算処理装置に関する。
【背景技術】
【０００２】
従来、演算処理装置において、１つの命令で複数のデータを並列に処理するＳＩＭＤ（Single Instruction Multiple Data）型の演算処理装置がある。この演算処理装置を用いることで、１つの命令制御装置で、複数のデータを並列に処理することができ、処理実行時間を短縮し、データ処理能力を向上させることができる（例えば、特許文献１参照。）。
【０００３】
また、このような処理高速化とは別に、演算処理自体を時系列に複数のステージに分割し、複数の独立したステージが、夫々、直列的に演算処理を実行するパイプライン型演算処理装置がある。この演算処理装置は、命令語が直列的に並んでいる場合には、最大の性能を発揮できることが知られている。しかし、条件分岐等の命令がある場合には、パイプラインの制御が乱れ、一時的に処理性能が低下する。これに対して、条件分岐を減らすためプレディケイト（以下、条件フラグと呼称する。）を用いる方法がある。ここで、条件フラグは、命令語を修飾し、その命令語の処理を実行するか否かを選択することで、条件分岐命令の使用頻度を削減することができ、演算処理性能を向上させることができる（例えば、特許文献２参照。）。
【特許文献１】特開２０００−４７９９８号公報
【特許文献２】特開平１０−２７１０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、前記従来の技術においては、ＳＩＭＤ型の演算処理装置について、演算単位毎に異なるデータを取り扱うため、演算機能は同一であり、また、演算を実行するための命令語も全ての演算単位で同一のものであっても、演算単位毎に得られる演算結果は異なる。
【０００５】
例えば、比較命令を実行した場合には、演算単位毎に異なるデータを用いて演算を行うため、その演算結果である条件フラグも演算単位毎に異なる。そのため、条件フラグを用いて条件付き演算処理を実行する場合には、演算単位毎に独立した条件フラグを用いて演算の条件実行を行うことは容易である。
【０００６】
しかし、比較命令の結果を全ての演算単位で共通に用いるためには、共通の条件フラグ値を全ての演算単位で参照する必要がある。そのためには演算単位毎に、全ての演算単位の条件フラグ値の論理和、論理積を格納しておくレジスタも必要となり、多くのレジスタが必要となり実装面積が大きくなる。また、あくまで条件分岐命令で使用する条件フラグの生成方法の１つであり、条件分岐命令自体を削減はできないため、分岐命令発行によるペナルティが発生し、全体の演算処理性能が低下する。
【０００７】
また、ＳＩＭＤ型の演算処理装置においては、想定されるプログラムのうち、要求される演算処理性能が最大のものに合わせて演算単位の数が決定される。そのため、最大処理性能を必要としないプログラムを実行する場合には、一部の演算単位のみを使用し、残りの演算単位を使用しないようにすることもできる。
【０００８】
しかし、残りの演算単位を使用しないとすれば、使用しない演算単位は無効な演算を行う、又は低消費電力化を図るために演算動作そのものを停止する制御を実行し、このような場合において、比較命令を実行すると、不要な演算単位では有効でないデータを用いて比較命令が実行される、又は演算そのものが行われないため、その結果である条件フラグも有効でない値が格納される。そのため、演算単位間で条件フラグの演算を行う場合には、一部の演算単位にしか有効な条件フラグ値が格納されておらず、有効な値だけを選択する処理を追加する必要があり、演算単位間での条件フラグ演算を容易に行うことができない。
【０００９】
すなわち、ＳＩＭＤ型の演算処理装置において、演算処理装置全体で同一の条件フラグを用いて条件分岐を実行するときに、演算単位毎に生成された条件フラグを用いて共通に参照する条件フラグを生成する演算をできるだけ少ないステップ数で生成できないと高速化の効果を十分に得られないことがあるという問題がある。
【００１０】
そこで、本発明は、前記問題に鑑みてなされたものであり、演算単位毎に生成された条件フラグを用いて共通に参照する条件フラグを生成する演算をできるだけ少ないステップ数で生成できる演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
前記目的を達成するために、本発明に係る演算処理装置は、（ａ）１つの命令で複数のデータを並列に処理する演算処理装置であって、（ｂ）命令レジスタに格納されている命令に基づいて、共通の演算を実行する複数のプロセッサ・エレメントと、（ｃ）各プロセッサ・エレメントで保持されている条件フラグに対して論理演算、及び比較演算いずれかを実行し、実行した結果を各プロセッサ・エレメントに転送し、実行した結果に前記条件フラグを更新する条件フラグ演算器と、前記複数のプロセッサ・エレメントの個数と同じ数のビット幅を有し、各ビットが各プロセッサ・エレメントと１対１に対応する条件フラグマスクレジスタと、前記条件フラグ演算器において実行される論理演算が論理和演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第１の論理値に変換し、前記条件フラグ演算器において実行される論理演算が論理積演算である場合には、前記条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第２の論理値に変換する条件フラグ変換器とを備えることとする。
【００１２】
これによって、各プロセッサ・エレメントで保持されている条件フラグを１ステップで更新することができ、全てのプロセッサ・エレメントで共通の条件フラグを高速に準備することができる。そして、従来では必要であった条件分岐を削減し、分岐処理によって生じるペナルティを減らし、ペナルティによる性能低下を抑えることができる。
【００１３】
なお、本発明は、演算処理装置として実現されるだけではなく、演算処理装置を制御する方法（以下、演算処理方法と呼称する。）、演算処理方法をコンピュータシステム等にエミュレーションさせる演算処理プログラム、演算処理プログラムを記録した記録媒体等として実現されるとしてもよい。
【００１４】
また、演算処理装置を構成する１乃至２以上の機能（以下、演算処理機能と呼称する。）が組み込まれたシステムＬＳＩ、演算処理機能をＦＰＧＡ、ＣＰＬＤ等のプログラマブル・ロジック・デバイスに形成するＩＰコア（以下、演算処理コアと呼称する。）、演算処理コアを記録した記録媒体として実現されるとしてもよい。
【発明の効果】
【００１５】
以上、本発明に係る演算処理装置によれば、複数のプロセッサ・エレメントに含まれる条件フラグレジスタの値に対して演算を実行し、実行した結果を、各プロセッサ・エレメントに含まれる条件フラグレジスタに格納することが１ステップで可能となり、高速に全てのプロセッサ・エレメントで共通の条件フラグを準備することができる。そして、従来では必要であった条件分岐を削減し、分岐処理によるペナルティによる性能低下を抑えることができる。
【００１６】
さらに、条件フラグを更新し、さらに、条件分岐を実行する際に参照される条件フラグを生成する条件フラグ演算器を共用することで、プロセッサ・エレメント毎に実装する場合と比べると、実装面積を小さくすることが可能となる。
【００１７】
さらに、予め使用する条件フラグレジスタ情報をマスクレジスタに設定しておくことで、プログラム等の要因で使用する条件フラグレジスタ数が変わった場合でも全ての条件フラグレジスタを使用する場合から命令の発行方法を変更する必要がなくプログラムの記述が容易になる。
【発明を実施するための最良の形態】
【００１８】
（実施の形態１）
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。
【００１９】
実施の形態１における演算処理装置は、複数のプロセッサ・エレメントの夫々に、条件フラグレジスタを備え、条件フラグレジスタに保持されている条件フラグの値を演算した結果を、全てのプロセッサ・エレメント内に備わる条件フラグレジスタへ転送し、条件フラグレジスタに格納することを特徴とする。
【００２０】
これによって、全ての条件フラグレジスタを１ステップで更新することができ、全てのプロセッサ・エレメントで共通の条件フラグを高速に準備することができ、従来では必要であった条件分岐を削減し、分岐処理に必要なペナルティを減らし、ペナルティによる性能低下を抑えることができる。
【００２１】
「条件フラグ」とは、命令語を修飾し、その命令語の処理を実行するか否かを選択することで、条件分岐命令の使用頻度を削減することができ、演算処理性能を向上させることができるプレディケイトである。
【００２２】
以上の点を踏まえながら、実施の形態１における演算処理装置について説明する。
【００２３】
先ず、実施の形態１における演算処理装置の構成について説明する。
【００２４】
図１に示されるように、演算処理装置１００は、命令レジスタ１０１に格納されている命令語をプロセッサ・エレメント（以下、ＰＥと呼称する。）１０２，１０３に供給し、ひとつの命令で複数のデータの演算処理を並列に実行する装置である。
【００２５】
ここでは、一例として、演算処理装置１００は、命令レジスタ１０１、ＰＥ１０２，１０３、条件フラグ演算器１０４等を備えることとする。
【００２６】
また、命令語は、条件実行の有無、使用する条件フラグ番号が指定されている条件フラグ指定フィールド（以下、ＣＦフィールドと呼称する。）と、オペコードやオペランドが指定されているオペコード・オペランドフィールドとから構成される。
【００２７】
条件フラグ演算器１０４は、条件フラグのうち命令レジスタ１０１のＣＦフィールドに設定された条件フラグの値を、命令に基づいて、夫々、論理和演算、及び論理積演算のいずれかを実行する。そして、転送バス１０５を介して全てのＰＥに演算結果を転送する。以下、一例として、論理和演算についてのみ説明し、論理積演算については説明を省略する。
【００２８】
なお、プログラムが格納される命令キャッシュ、データが格納されるデータキャッシュ等の構成要素、及びＡＬＵによる演算方法については、周知の技術であるため、説明を省略する。
【００２９】
なお、ＰＥの数は、２つである必要はなく、より多く、例えば、４つであってもよい。
【００３０】
なお、条件フラグ演算器１０４は、論理和演算、及び論理積演算以外の論理演算、例えば、排他的論理和演算などを実行するとしてもよい。また、論理演算の代わりに、比較演算を実行するとしてもよい。さらに、比較演算を実行する場合には、各ＰＥから出力される複数ビットの条件フラグに対して比較演算を実行するとしてもよい。そして、例えば、各ＰＥから出力された複数ビットの条件フラグに対して比較演算を実行した結果、全ての条件フラグが同一の場合には、全ビットが１である演算結果を全てのＰＥに転送するとしてもよい。また、同一でない場合には、全ビットが０である演算結果を全てのＰＥに転送するとしてもよいし、何も転送しないとしてもよい。
【００３１】
続いて、実施の形態１における演算処理装置のプロセッサ・エレメントについて説明する。ここでは、ＰＥ１０２の構成について説明し、ＰＥ１０３の構成については、ＰＥ１０２と同一の構成により、説明を省略する。
【００３２】
また、プロセッサ・エレメントにおいて演算の対象となるデータを供給するデータ供給装置、および演算した結果であるデータを格納するデータ格納装置については、それぞれ異なるものであってもよいし、一つで兼用するものとしてもよい。ここでは、データ供給装置、およびデータ格納装置を一つで兼用するデータ記録装置、具体的には、レジスタファイルを例に説明する。
【００３３】
ＰＥ１０２は、レジスタファイル１２１、ＡＬＵ演算器１２２、セレクタ１２３、条件フラグレジスタ１２４、セレクタ１２５等を備える。
【００３４】
ＡＬＵ演算器１２２は、命令レジスタ１０１に基づいて、レジスタファイル１２１に格納されているデータや即値を用いて演算処理する。
【００３５】
セレクタ１２３は、ＡＬＵ演算器１２２から転送される演算結果、及び条件フラグ演算器１２４から条件フラグ転送信号線１０５を介して転送される演算結果のいずれかを選択し、選択した演算結果を条件フラグレジスタ１２４へ転送する。
【００３６】
条件フラグレジスタ１２４は、セレクタ１２３から転送された演算結果を保持する。
【００３７】
セレクタ１２５は、条件フラグレジスタ１２４が複数ある場合には、命令レジスタ１０１のＣＦフィールドの値に基づいて、いずれの条件フラグレジスタ１２４に保持されている条件フラグを転送するかを選択する。
【００３８】
レジスタ更新制御信号線１２６は、条件フラグの内容等に基づいて、レジスタファイル１２１、及び条件フラグレジスタ１２４のいずれかに、ＡＬＵ演算器１２２の演算結果を格納するか否かを選択的に実行させる制御信号線である。
【００３９】
なお、レジスタファイル１２１は、任意のデータ値を使用することができるように、複数のデータを格納する領域が設けられている。
【００４０】
例えば、４つのデータ領域が設けられている場合において、一般的に、識別するために、Ｒ０、Ｒ１、Ｒ２、Ｒ３等の番号を割り振ることが行われる。
【００４１】
これに伴い、条件フラグレジスタ１２４についても、一般的に、Ｃ０、Ｃ１、Ｃ２、Ｃ３といった番号を割り振ることが行われる。
【００４２】
例えば、レジスタファイルのＲ１〜Ｒ４にベクタデータを格納する際に、８ビット長の２つのデータに、夫々、条件フラグを対応させ、Ｃ０に、対応させた２つの条件フラグを保持させるとしてもよい。このとき、Ｃ１に、１６ビット長のデータに対応させた条件フラグを保持させ、Ｃ２に、１６ビット長の２つのデータに、夫々、条件フラグを対応させ、対応させた２つの条件フラグを保持させ、Ｃ３に、３２ビット長のデータに対応させた条件フラグを保持させるとしてもよい。
【００４３】
なお、条件フラグレジスタ１２４は、２つである必要はなく、より多く、例えば、４つとしてもよい。良く識別するためである。
【００４４】
続いて、実施の形態１における演算処理装置へ供給される命令列について説明する。
【００４５】
ここでは、図２Ａ、図２Ｂに示されるように、一例として、ソースコード１をコンパイルし、命令列１１が生成されるとする。
【００４６】
命令列１１は、第１の命令（００１）、第２の命令（００２）、第３の命令（００３）、第４の命令（００４）を含む。
【００４７】
第１の命令（００１）は、比較命令（ｃｍｐｇｔ）である。
【００４８】
第２の命令（００２）は、各ＰＥ間での条件フラグレジスタ値での論理積演算命令（ｃｆａｎｄ）である。
【００４９】
第３の命令（００３）は、条件実行の加算命令（［Ｃ０］  ａｄｄ）である。
【００５０】
第４の命令（００４）は、通常実行の加算命令（ａｄｄ）である。
【００５１】
なお、比較命令以外でも、移動命令、論理演算命令等のように、条件フラグを生成する命令において、同様に、各ＰＥ間での条件フラグレジスタ値での論理積演算命令が実行されるとしてもよい。
【００５２】
続いて、実施の形態１における演算処理装置の動作について説明する。ここでは、一例として、図２Ａ、図２Ｂに示されるソースコード１から生成された命令列１１を実行する場合について説明する。
【００５３】
演算処理装置１００は、第１の命令（００１）を実行し、レジスタファイル１２１のＲ０の値と即値”５”とを比較した結果、Ｒ０の値が即値”５”以上である場合には、第１の命令のＣＦフィールドに設定された各ＰＥの条件フラグレジスタのＣ０に、”真”を示す”１”を格納する。一方、Ｒ０の値が即値”５”未満である場合には、各ＰＥの条件フラグレジスタのＣ０に、”偽”を示す”０”を格納する。このとき、ＡＬＵ演算器１２２から転送される値を選択するようにセレクタ１２３を設定する。
【００５４】
続いて、演算処理装置１００は、第２の命令（００２）を実行し、各ＰＥの条件フラグレジスタＣ０の値を条件フラグ演算器１０４で論理積演算を実行する。実行した結果を、条件フラグ転送信号線１０５を介して各ＰＥの条件フラグのＣ０に格納する。このとき、使用する条件フラグレジスタ番号は、命令レジスタ１０１のオペランドで設定されており、条件フラグ転送信号線１０５を介して転送される値を選択するようにセレクタ１２３を設定する。
【００５５】
続いて、演算処理装置１００は、第３の命令（００３）を実行し、命令語のＣＦフィールドで条件実行あり、使用する条件フラグレジスタ番号としてＣ０が設定されている場合において、レジスタファイル１２１からＲ１の値とＲ２の値とを読み出し、読み出したＲ１の値とＲ２の値とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。このとき、条件フラグレジスタ１２４のＣ０の値が真”１”であれば、加算した結果が格納されるように、演算結果更新制御信号線１２６を介してレジスタファイル１２１へ、Ａｃｔｉｖｅ信号を供給する。一方、条件フラグレジスタ１２４のＣ０の値が偽”０”であれば、加算した結果が格納されないように、Ｎｅｇａｔｉｖｅ信号を供給する。
【００５６】
続いて、演算処理装置１００は、第４の命令（００４）を実行し、レジスタファイル１２１からＲ２の値を読み出し、読み出したＲ２の値と即値”１”とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【００５７】
以上、説明したように実施の形態１における演算処理装置１００は、第２の命令（００２）の各ＰＥの条件フラグレジスタの値に対する演算、及び更新が１ステップで完了し、他にＰＥ間で余計なデータ転送を必要とせず、また、条件分岐処理によるペナルティが発生しないため、条件分岐の実行が完了するまでのサイクル数を少なくすることが可能となる。
【００５８】
さらに、全ての条件フラグレジスタを１ステップで更新することができ、全てのプロセッサ・エレメントで共通の条件フラグを高速に準備することができる。そして、図３Ｂに示されるように、従来では必要であった条件分岐の命令（００２）を削減し、分岐処理によって生じるペナルティを減らし、ペナルティによる性能低下を抑えることができる。
【００５９】
ここで、図３Ｂに示される命令列２は、従来の演算処理装置に対して供給される命令列であり、図３Ａに示されるソースコード１をコンパイルして生成されたものである。
【００６０】
（実施の形態２）
次に、本発明に係わる実施の形態２について、図面を参照しながら説明する。
【００６１】
本発明に係る実施の形態２における演算処理装置は、条件フラグ演算器から転送される演算結果に基づいて、条件分岐を実行する機能を有する命令発行制御部を備えることを特徴とする。
【００６２】
以上の点を踏まえて、実施の形態２における演算処理装置について説明する。なお、実施の形態１における構成要素と同一の構成要素については、同一の符号を付して説明を省略する。
【００６３】
まず、実施の形態２における演算処理装置の構成について説明する。
【００６４】
図４に示されるように、演算処理装置２００は、演算処理装置１００と比べて、下記（１）〜（３）の点が異なる。
【００６５】
（１）命令レジスタ１０１の代わりに、命令レジスタ２０１を備える。
命令レジスタ２０１は、命令発行制御部２０６から転送される命令を保持する。
（２）条件フラグ演算器１０４の代わりに、条件フラグ演算器２０４を備える。
条件フラグ演算器２０４は、演算結果を命令発行制御部２０６にも転送する。
（３）新たに命令発行制御部２０６を備える。
命令発行制御部２０６は、条件分岐命令を含めた命令の発行を制御する。条件フラグ演算器２０４から転送される演算結果に基づいて、命令を発行し、発行した命令を命令レジスタ２０１へ転送する。
【００６６】
続いて、実施の形態２における演算処理装置へ供給される命令列について説明する。
【００６７】
ここでは、図５Ａ、図５Ｂに示されるように、一例として、ソースコード１をコンパイルし、命令列２１が生成されるとする。
【００６８】
命令列２１は、第１の命令（００１）、第２の命令（００２）、第３の命令（００３）、第４の命令（００４）を含む。
【００６９】
第１の命令（００１）は、比較命令（ｃｍｐｇｔ）である。
【００７０】
第２の命令（００２）は、各ＰＥ間での条件フラグレジスタ値での論理積演算命令（［Ｃ０］  ｂｒ．ａｌｌ）である。
【００７１】
第３の命令（００３）は、分岐処理を実行しなかった場合における加算命令（ａｄｄ）である。
【００７２】
第４の命令（００４）は、分岐処理を実行した場合における加算命令（ｌａｂｅｌ１：  ａｄｄ）である。
【００７３】
ここで、”ｂｒ．ａｌｌ”とは、全ＰＥの条件フラグが”１”であるときだけ、分岐系の命令”ｂｒ”を実行することを示す。
【００７４】
なお、これ以外にも、”ｊｕｍｐ”、”ｌｏｏｐ”等の分岐系の命令に対しても、全ＰＥの条件フラグが”１”のときだけ、分岐系の命令を実行することとしてもよい。
【００７５】
続いて、実施の形態２における演算処理装置の動作について説明する。ここでは、一例として、図５Ａ、図５Ｂに示されるソースコード１から生成された命令列２１を実行する場合について説明する。
【００７６】
演算処理装置２００は、第１の命令（００１）を実行し、レジスタファイル１２１のＲ０の値と即値”５”とを比較した結果、Ｒ０の値が即値”５”以上である場合には、第１の命令のＣＦフィールドに設定された各ＰＥの条件フラグレジスタのＣ０に、”真”を示す”１”を格納する。一方、Ｒ０の値が即値”５”未満である場合には、各ＰＥの条件フラグレジスタのＣ０に、”偽”を示す”０”を格納する。このとき、ＡＬＵ演算器１２２から転送される値を選択するようにセレクタ１２３を設定する。
【００７７】
続いて、演算処理装置２００は、第２の命令（００２）を実行し、各ＰＥの条件フラグレジスタの値を条件フラグ演算器２０４で論理積演算を実行する。実行した結果を、条件フラグ転送信号線１０５を介して各ＰＥの条件フラグレジスタのＣ０に格納する。
【００７８】
また、演算処理装置２００は、条件フラグ転送信号線１０５を介して命令発行制御部２０６へ転送する。そして、条件フラグ転送信号線１０５を介して命令発行制御部２０６へ転送された条件フラグの値が真”１”である場合には、分岐処理を実行し、命令発行制御部２０６から命令レジスタ２０１へ第４の命令（００４）を転送し、第４の命令（００４）を実行する。一方、条件フラグ転送信号線１０５を介して命令発行制御部２０６へ転送された条件フラグの値が偽”０”である場合には、分岐処理を実行せずに、命令発行制御部２０６から命令レジスタ２０１へ第３の命令（００３）を転送し、第３の命令（００３）を実行する。
【００７９】
続いて、演算処理装置２００は、第３の命令（００３）を実行し、各ＰＥのレジスタファイルからＲ１の値とＲ２の値とを読み出し、読み出したＲ１の値とＲ２の値とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【００８０】
続いて、演算処理装置２００は、第４の命令（００４）を実行し、各ＰＥのレジスタファイルからＲ２の値を読み出し、読み出したＲ２の値と即値”１”とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【００８１】
以上、説明したように実施の形態２における演算処理装置２００は、条件分岐を実行するときに、条件フラグ演算器２０４を共通に使用することによって、実装面積を小さくすることが可能となる。
【００８２】
また、演算処理装置２００は、論理積演算以外にも論理和演算を条件フラグ演算器２０４でおこなう命令（ｂｒ．ａｎｙ）等がある。
【００８３】
ここで、”ｂｒ．ａｎｙ”とは、全ＰＥの条件フラグのうち１つでも”１”であれば、分岐系の命令”ｂｒ”を実行することを示す。
【００８４】
なお、これ以外にも、”ｊｕｍｐ”、”ｌｏｏｐ”等の分岐系の命令に対しても、全ＰＥの条件フラグのうち１つでも”１”であれば、分岐系の命令を実行することとしてもよい。
【００８５】
（実施の形態３）
次に、本発明に係わる実施の形態３について、図面を参照しながら説明する。
【００８６】
本発明に係る実施の形態３における演算処理装置は、複数のプロセッサ・エレメントの個数と同じ数のビット幅を有し、各ビットが各プロセッサ・エレメントと１対１に対応する条件フラグマスクレジスタと、（ａ）条件フラグ演算器において論理和演算を実行する場合には、条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第１の論理値に変換し、（ｂ）条件フラグ演算器において論理積演算を実行する場合には、条件フラグマスクレジスタのビットの値と対応するプロセッサ・エレメントからの条件フラグの値を第２の論理値に変換する条件フラグ変換器を備えることを特徴とする。
【００８７】
以上の点を踏まえて、実施の形態３における演算処理装置について説明する。なお、実施の形態１における構成要素と同一の構成要素については、同一の符号を付して説明を省略する。
【００８８】
まず、実施の形態３における演算処理装置の構成について説明する。
【００８９】
図６に示されるように、演算処理装置３００は、演算処理装置１００と比べて、下記（１）の点が異なる。
【００９０】
（１）新たに条件フラグマスクレジスタ３０７、条件フラグ変換器３８１，３８２を備える。
条件フラグマスクレジスタ３０７は、設定値を保持する。
条件フラグ変換器３８１，３８２は、セレクタ１２５の出力値を”０”、及び”１”のいずれかに変換する。
【００９１】
続いて、実施の形態３における演算処理装置の動作について説明する。ここでは、一例として、図２Ａ、図２Ｂに示されるソースコード１から生成された命令列１１を実行する場合について説明する。
【００９２】
なお、演算処理装置３００は、予め、条件フラグマスクレジスタ３０７において、ＰＥ１０２に対応するビットが”０”に設定され、ＰＥ１０３に対応するビットが”１”に設定され、条件フラグマスクレジスタ３０７に値”１０”が格納されている。そして、命令列１１に対して、ＰＥ１０２のみを使用し、ＰＥ１０３を使用しないとする。
【００９３】
演算処理装置３００は、第１の命令（００１）を実行し、レジスタファイル１２１のＲ０の値と即値”５”とを比較した結果、Ｒ０の値が即値”５”以上である場合には、第１の命令のＣＦフィールドに設定された各ＰＥの条件フラグレジスタのＣ０に、”真”を示す”１”を格納する。一方、Ｒ０の値が即値”５”未満である場合には、各ＰＥの条件フラグレジスタのＣ０に、”偽”を示す”０”を格納する。このとき、ＡＬＵ演算器１２２から転送される値を選択するようにセレクタ１２３を設定する。
【００９４】
続いて、演算処理装置３００は、第２の命令（００２）を実行し、条件フラグマスクレジスタ３０７に基づいて、各条件フラグ変換器で変換し、変換後の各ＰＥの条件フラグレジスタの値を条件フラグ演算器３０４で論理積演算を実行する。実行した結果を、条件フラグ転送信号線１０５を介して各ＰＥの条件フラグレジスタのＣ０に格納する。このとき、使用する条件フラグレジスタ番号は、命令レジスタ１０１のオペランドに設定されており、条件フラグ転送信号線１０５を介して転送される値を選択するようにセレクタ１２３を設定する。
【００９５】
ここで、条件フラグマスクレジスタ３０７において、ＰＥ１０２に対応するビットが”０”に設定されているため、ＰＥ１０２の条件フラグレジスタ１２４の値が条件フラグ変換器３８１で変換されない。また、実行する命令が論理積演算命令であり、ＰＥ１０３に対応するビットが”１”に設定されているため、ＰＥ１０３の条件フラグ値が条件フラグ変換器３８２で”１”に変換される。
【００９６】
続いて、演算処理装置３００は、第３の命令（００３）を実行し、命令語のＣＦフィールドで条件実行あり、使用する条件フラグレジスタ番号としてＣ０が設定されている場合において、レジスタファイル１２１からＲ１の値とＲ２の値とを読み出し、読み出したＲ１の値とＲ２の値とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。このとき、条件フラグレジスタ１２４のＣ０の値が真”１”であれば、加算した結果が格納されるように、演算結果更新制御信号線１２６を介してレジスタファイル１２１へ、Ａｃｔｉｖｅ信号を供給する。一方、条件フラグレジスタ１２４のＣ０の値が偽”０”であれば、加算した結果が格納されないように、Ｎｅｇａｔｉｖｅ信号を供給する。
【００９７】
続いて、演算処理装置３００は、第４の命令（ａｄｄ）を実行し、レジスタファイル１２１からＲ２の値を読み出し、読み出したＲ２の値と即値”１”とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【００９８】
以上、説明したように実施の形態３における演算処理装置３００は、第２の命令（００２）を実行し、各ＰＥの条件フラグレジスタの値に対して論理積演算を実行する前に、条件フラグ変換器３８２が無効なデータであるＰＥ１０３の条件フラグレジスタ１３４の値を、論理積演算で結果に影響をおよぼさないフラグ値”１”に変換しておくことによって、有効な条件フラグ値のみで論理積演算が可能となる。
【００９９】
また、演算処理装置３００は、ＰＥ１０３の条件フラグ値が有効である場合と無効である場合とで、条件フラグマスクレジスタ３０７の値を予め設定しておくだけで、命令の発行方法を変更する必要がないため、プログラムの作成が容易になる。
【０１００】
（実施の形態４）
次に、本発明に係わる実施の形態４について、図面を参照しながら説明する。
【０１０１】
本発明に係る実施の形態４における演算処理装置は、条件フラグ演算器から転送される演算結果に基づいて、条件分岐を実行する機能を有する命令発行制御部を備えることを特徴とする。
【０１０２】
以上の点を踏まえて、実施の形態４における演算処理装置について説明する。なお、実施の形態３における構成要素と同一の構成要素については、同一の符号を付して説明を省略する。
【０１０３】
まず、実施の形態４における演算処理装置の構成について説明する。
【０１０４】
図７に示されるように、演算処理装置４００は、演算処理装置３００と比べて、下記（１）〜（３）の点が異なる。
【０１０５】
（１）命令レジスタ１０１の代わりに、命令レジスタ４０１を備える。
命令レジスタ４０１は、命令発行制御部４０６から転送される命令を保持する。
（２）条件フラグ演算器３０４の代わりに、条件フラグ演算器４０４を備える。
条件フラグ演算器４０４は、演算結果を命令発行制御部４０６にも転送する。
（３）新たに命令発行制御部４０６を備える。
命令発行制御部４０６は、条件付きの分岐系の命令を含めた命令の発行を制御する。条件フラグ演算器４０４から転送される演算結果に基づいて、命令を発行し、発行した命令を命令レジスタ４０１へ転送する。
【０１０６】
なお、命令発行制御部４０６の詳細な構成については、周知の技術であるため、説明を省略する。
【０１０７】
続いて、実施の形態４における演算処理装置の動作について説明する。ここでは、一例として、図５Ａ、図５Ｂに示されるソースコード１から生成された命令列２１を実行する場合について説明する。
【０１０８】
なお、演算処理装置４００は、予め、条件フラグマスクレジスタ３０７において、ＰＥ１０２に対応するビットが”０”に設定され、ＰＥ１０３に対応するビットが”１”に設定され、条件フラグマスクレジスタ３０７に値”１０”が格納されている。そして、命令列２１に対して、ＰＥ１０２のみを使用し、ＰＥ１０３を使用しないとする。
【０１０９】
演算処理装置４００は、第１の命令（００１）を実行し、レジスタファイル１２１のＲ０の値と即値”５”とを比較した結果、Ｒ０の値が即値”５”以上である場合には、第１の命令のＣＦフィールドに設定された各ＰＥの条件フラグレジスタのＣ０に、”真”を示す”１”を格納する。一方、Ｒ０の値が即値”５”未満である場合には、各ＰＥの条件フラグレジスタのＣ０に、”偽”を示す”０”を格納する。このとき、ＡＬＵ演算器１２２から転送される値を選択するようにセレクタ１２３を設定する。
【０１１０】
続いて、演算処理装置４００は、第２の命令（００２）を実行し、条件フラグマスクレジスタ３０７に基づいて、各条件フラグ変換器で変換し、変換後の各ＰＥの条件フラグレジスタの値を条件フラグ演算器４０４で論理積演算を実行する。実行した結果を、条件フラグ転送信号線１０５を介して各ＰＥの条件フラグレジスタのＣ０に格納する。このとき、使用する条件フラグレジスタ番号は、命令レジスタ１０１のオペランドに設定されており、条件フラグ転送信号線１０５を介して転送される値を選択するようにセレクタ１２３を設定する。
【０１１１】
ここで、条件フラグマスクレジスタ３０７において、ＰＥ１０２に対応するビットが”０”に設定されているため、ＰＥ１０２の条件フラグレジスタ１２４の値が条件フラグ変換器３８１で変換されない。また、実行する命令が論理積演算命令であり、ＰＥ１０３に対応するビットが”１”に設定されているため、ＰＥ１０３の条件フラグレジスタ１３４の値が条件フラグ変換器３８２で”１”に変換される。
【０１１２】
また、演算処理装置４００は、条件フラグ転送信号線１０５を介して命令発行制御部４０６へ転送する。そして、条件フラグ転送信号線１０５を介して命令発行制御部４０６へ転送された条件フラグの値が真”１”である場合には、分岐処理を実行し、命令発行制御部４０６から命令レジスタ１０１へ第４の命令（００４）を転送し、第４の命令（００４）を実行する。一方、条件フラグ転送信号線１０５を介して命令発行制御部４０６へ転送された条件フラグの値が偽”０”である場合には、分岐処理を実行せずに、命令発行制御部４０６から命令レジスタ１０１へ第３の命令（００３）を転送し、第３の命令（００３）を実行する。
【０１１３】
続いて、演算処理装置４００は、第３の命令（００３）を実行し、各ＰＥのレジスタファイルからＲ１の値とＲ２の値とを読み出し、読み出したＲ１の値とＲ２の値とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【０１１４】
続いて、演算処理装置４００は、第４の命令（００４）を実行し、各ＰＥのレジスタファイルからＲ２の値を読み出し、読み出したＲ２の値と即値”１”とをＡＬＵ演算器１２２で加算し、加算した結果をレジスタファイル１２１のＲ２に格納する。
【０１１５】
以上、説明したように実施の形態４における演算処理装置４００は、第２の命令（００２）を実行し、各ＰＥの条件フラグレジスタの値に対して論理積演算を実行する前に、条件フラグ変換器３８２が無効なデータであるＰＥ１０３の条件フラグレジスタ１３４の値を、論理積演算で結果に影響をおよぼさないフラグ値”１”に変換しておくことによって、有効な条件フラグ値のみで論理積演算が可能となる。
【０１１６】
また、演算処理装置４００は、ＰＥ１０３の条件フラグ値が有効である場合と無効である場合とで、条件フラグマスクレジスタ３０７の値を予め設定しておくだけで、命令の発行方法を変更する必要がなく、高速な条件分岐を実行することが可能となる。
【０１１７】
（その他）
なお、プロセッサ・エレメントは、ＡＬＵ演算器の代わりに、画素演算、所定の処理に特化した拡張演算器（ＸＵ演算器）等、その他の演算器を備えるとしてもよい。
【０１１８】
なお、命令発行制御部は、別途、分岐系の命令用のフラグを有し、命令発行時に、そのフラグに従って命令を発行するとしてもよい。
【０１１９】
なお、演算処理装置は、フルカスタムＬＳＩ（Large Scale Integration）によって実現されるとしてもよい。また、ＡＳＩＣ（Application Specific Integrated Circuit）等のようなセミカスタムＬＳＩによって実現されるとしてもよい。また、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）等のようなプログラマブル・ロジック・デバイスによって実現されるとしてもよい。また、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスとして実現されるとしてもよい。
【０１２０】
さらに、演算処理装置を構成する１以上の機能を、これ等のＬＳＩに形成する設計データは、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣ等のようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。
【０１２１】
さらに、設計データは、コンピュータシステム、組み込みシステム等のようなハードウェアシステムに読み出され得るように、光学記録媒体（例えば、ＣＤ−ＲＯＭ等。）、磁気記録媒体（例えば、ハードディスク等。）、光磁気記録媒体（例えば、ＭＯ等。）、半導体メモリ（例えば、ＲＡＭ等。）等のようなコンピュータ読み取り可能な記録媒体に記録しておくとしてもよい。そして、記録媒体を介して他のハードウェアタシステムに読み取られた設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてもよい。
【０１２２】
または、設計データは、ネットワーク等のような伝送路を経由して他のハードウェアシステムに取得され得るように、伝送路上のハードウェアシステムに保持しておくとしてもよい。さらに、ハードウェアシステムから伝送路を介して他のハードウェアタシステムに取得された設計データは、ダウンロードケーブルを介して、プログラマブル・ロジック・デバイスにダウンロードされるとしてよい。
【０１２３】
または、論理合成、配置、配線された設計データは、通電時にＦＰＧＡに転送され得るように、シリアルＲＯＭに記録しておくとしてもよい。そして、シリアルＲＯＭに記録された設計データは、通電時に、直接、ＦＰＧＡにダウンロードされるとしてもよい。
【０１２４】
または、論理合成、配置、配線された設計データは、通電時に、マイクロプロセッサによって生成されて、ＦＰＧＡにダウンロードされるとしてもよい。
【産業上の利用可能性】
【０１２５】
本発明は、条件フラグレジスタ、及び条件実行フラグ生成選択装置等を備え、複数のデータに対して同じ処理を高速にまた効率的に演算するＳＩＭＤ型の演算処理装置等として、特に、静止画、動画などの画像処理をおこなう場合に有用なＳＩＭＤ型の演算処理装置等として、利用することができる。
【図面の簡単な説明】
【０１２６】
【図１】図１は、実施の形態１における演算処理装置の概略構成を示す図である。
【図２Ａ】図２Ａは、実施の形態１における演算処理装置へ供給される命令列の一例を示す図である。
【図２Ｂ】図２Ｂは、実施の形態１における演算処理装置へ供給される命令列の一例を示す図である。
【図３Ａ】図３Ａは、従来の技術における演算処理装置へ供給する命令列の一例を示す図である。
【図３Ｂ】図３Ｂは、従来の技術における演算処理装置へ供給する命令列の一例を示す図である。
【図４】図４は、実施の形態２における演算処理装置の概略構成を示す図である。
【図５Ａ】図５Ａは、実施の形態２における演算処理装置へ供給される命令列の一例を示す図である。
【図５Ｂ】図５Ｂは、実施の形態２における演算処理装置へ供給される命令列の一例を示す図である。
【図６】図６は、実施の形態３における演算処理装置の概略構成を示す図である。
【図７】図７は、実施の形態４における演算処理装置の概略構成を示す図である。
【符号の説明】
【０１２７】
１００，２００，３００，４００  演算処理装置
１０１，２０１，４０１  命令レジスタ
１０２，１０３  プロセッサ・エレメント
１０４，２０４，３０４，４０４  条件フラグ演算器
１０５  条件フラグ転送信号線
１２１，１３１  レジスタファイル
１２２，１３２  ＡＬＵ演算器
１２３，１３３  セレクタ
１２４，１３４  条件フラグレジスタ
１２５，１３５  セレクタ
１２６，１３６  演算結果更新制御信号線
２０６，４０６  命令発行制御部
３０７  条件フラグマスクレジスタ
３８１，３８２  条件フラグ変換器
【図１】
0004277042.tif 000002
【図２Ａ】
0004277042.tif 000003
【図２Ｂ】
0004277042.tif 000004
【図３Ａ】
0004277042.tif 000005
【図３Ｂ】
0004277042.tif 000006
【図４】
0004277042.tif 000007
【図５Ａ】
0004277042.tif 000008
【図５Ｂ】
0004277042.tif 000009
【図６】
0004277042.tif 000010
【図７】
0004277042.tif 000011