(57)【特許請求の範囲】
【請求項１】
ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行して実行され、前記ソースデータ供給処理によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第１のステージと、
前記ソースデータ供給処理工程によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第２のステージと、
前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第３のステージとを有するパイプライン処理を備え、
前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、
前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含む、
ことを特徴とする条件付きベクトル演算方法。
【請求項２】
ベクトル演算命令の発行によって第１ないし第Nのソースデータ（Nは２以上の整数）の供給を開始するソースデータ供給手段と、
前記ソースデータ供給手段より供給される第１ないし第Nのソースデータを一時保存する第１ないし第Nのレジスタと、
前記第１ないし第Nのレジスタの出力を用いて演算を行う演算手段と、
前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、
前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、
前記第１ないし第Ｎの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、
前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、
前記ソースデータ供給手段がソースデータを供給し前記第１ないし第Nのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第１ステージ、前記演算手段が前記第１ないし第Ｎのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第２ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第３ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、
前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第１ないし第Ｎの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えた、
ことを特徴とする条件付きベクトル演算装置。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、条件付きベクトル演算方法ならびに条件付きベクトル演算装置に関し、特に、マイクロプロセッサやディジタルシグナルプロセッサ（以下、DSPと称す）などと呼ばれるプロセッサやデータ処理装置に搭載される命令セットに用意された，ベクトル命令や条件付き演算命令を演算する演算方法、ならびにこの演算方法を用いて演算を行う演算装置の改良を図ったものに関する。
【０００２】
背景技術
図４は、マイクロプロセッサやDSPといった汎用的な命令セットを備えたデータ処理装置、あるいはこの種のデータ処理装置を搭載した，システムLSIと呼ばれている半導体集積回路装置を用い、演算対象のデータについて、例えば演算対象のデータがゼロであるなどの，或る条件が成立するか否かによって演算対象のデータに対して行うべき処理が異なってくるような処理を行う場合のフローチャートを示している。
【０００３】
この図４では、まずステップS401において演算対象のデータ402を取得する。次にステップS403では、先のステップS401において取得したデータ402がゼロか否かを確かめるためにゼロとデータS402との比較処理を行う。
【０００４】
次のステップS404では前のステップS403の結果を受けて、その比較結果が不一致であった（No）場合にはステップS406に移り処理Bを行うが、ステップS404による判定結果が一致であった（Yes）場合には、ステップS405で演算対象のデータ402に対して処理Aを行った後、ステップS406に移る。
ここで処理Bとは、演算対象のデータ、あるいは演算対象のデータに対して処理Aの演算を施したデータを用いた処理であるとする。
このように、図４のフローチャートではステップS404の実行結果によって、以降の処理手順、即ちデータの処理の流れが異なってくる。
【０００５】
ところで、一般的なマイクロプロセッサやDSPなどと呼ばれるプロセッサが汎用命令セットとして備えている命令の１つに条件分岐命令がある。条件分岐命令とは、実行すべき演算命令において演算結果の性質を示す情報をもったコンディション・コードと呼ばれるコードを前もって生成して保持しておき、このコンディション・コードが条件分岐命令の指定する条件と一致していれば条件成立として分岐を行い、一致していなければ条件不成立として分岐を行わないという命令である。従って、図４のフローチャートにおけるステップS404のような，条件判断後の処理フローの分岐という処理を実行するには、条件分岐命令を用いるのが一般的である。
【０００６】
しかしながら、図４に示したような処理を行う場合に必要となる条件分岐命令は、データ処理には直接的に何ら寄与しない動作であるにもかかわらず、これをｉｆ〜ｔｈｅｎ〜ｅｌｓｅ文などで記述する必要があるが、この方法では１つの条件分岐に対応するｉｆ文を処理するマイクロコードの実行に数サイクルの実行サイクルを要し、これをデータの個数だけ繰り返す必要があり、さらにプログラムをパイプライン制御しているようなシステムLSIにおいてはパイプラインの流れが中断されてしまい、これによる処理のオーバーヘッドが増加してしまう。
【０００７】
また、このような処理性能の低下を防ぐために、条件付き演算命令と呼ばれる命令を命令セットのなかに持つ機種がある。この条件付き演算命令は、様々な命令に分岐命令と同様な条件を付加し、指定された条件が成立したときのみその命令を実行し、不成立の場合は指定された動作を実行せずにそのまま次のステップに移るような命令である。このような命令をもつことによって、図４のステップ404のような条件分岐命令をプログラムから排除することができ、処理性能の低下を防ぐことが可能となる。
【０００８】
しかしながら、この条件付き演算を或るまとまった量のデータに対し実行しようとする場合、予め、各データに関して条件を満足するか否かを算出しておき、これをフラグとして別途マスクレジスタに保持しておき、このフラグを参照しながら演算を実行するか否かを判定するようにしているが、この前処理としてのフラグ算出がオーバーヘッドとなってしまい、かつこのフラグを蓄えるマスクレジスタが別途必要になるという問題があった。
【０００９】
さらに、この種の条件付き演算命令の改良を図ったものとして、例えば特開平８−３０５５６３号公報に示されたデータ処理装置のように、演算命令に、無条件でこれを実行するか、条件が「真」の時にこれを実行するか、条件が「偽」の時にこれを実行するか、を選択する少数のビットをデータに付加することにより、条件付き演算命令の命令の種類やオペランドの自由度の制限による性能低下を防止し、プログラムメモリの小容量化を可能にしたものもある。
【００１０】
しかしながら、演算対象のデータがゼロであれば処理Aとして演算対象のデータに“１”を加算し、演算対象のデータがゼロでなければそのまま次の処理に移るような処理を、画像データのようなまとまったデータ数のデータに対して行いたい場合、従来の演算方法あるいは演算装置では、上述のように、図４のフローをｉｆ〜ｔｈｅｎ〜ｅｌｓｅ文などに相当するマイクロコードで記述しこれをデータの個数だけ繰り返すか、あるいは条件付き演算命令を用いてフローのなかからステップS404を排除したものをデータの数だけ繰り返すか、のいずれかの方法で対処しなければならないが、これらの方法では命令をベクトル演算処理することができないため、データの個数分だけループによる繰り返し処理が必要になり、その分処理のオーバーヘッドが増加する。
【００１１】
また、一般的にいって、上述のような条件付き演算を実行するような処理モジュールが頻繁に現われるプログラムは少ないかもしれないが、例えば、画像CODECの信号処理のような処理モジュールでは、膨大なデータに対して一定の処理ルーチンを繰り返し実行することが多く、処理ルーチンに含まれるステップ数が１ステップでも増減することによる処理性能への影響は大きい。
【００１２】
本発明はこうした事情に鑑みてなされたもので、あるまとまったデータ量に対して上述したような条件付き演算を含む処理ルーチンによる処理を行う際に、条件付き演算をベクトル演算処理可能とし、別途マスクレジスタを必要とせず、繰り返し処理に要する処理のオーバーヘッドを削減でき、処理性能を向上することができる，条件付きベクトル演算方法および条件付きベクトル演算装置を提供することを目的とする。
【００１５】
発明の開示
上記目的を達成するために、本願の請求項１の発明にかかる条件付きベクトル演算方法は、ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行して実行され、前記ソースデータ供給処理工程によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第１のステージと、前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第２のステージと、前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第３のステージとを有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含む、ことを特徴とする。
【００１６】
これらの処理工程によれば、ソースデータ供給処理によりベクトル命令形式で次々と供給されるデータに対して、パイプラインの第１ステージでデータの性質（例えばゼロかゼロでないか）を状態フラグとして出力し、第２ステージでは条件判定処理工程によりその状態フラグの出力と命令の発行する条件とを用いて条件判定を行い、判定結果を演算処理の制御に用いることが可能となる。つまり条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることによって、条件付き演算をベクトル演算形式で処理することができる。よって、この条件付きベクトル演算を図４に示した従来の処理フローに適用することで、ステップS401およびステップS403とステップS404さらにステップS405がパイプライン的に処理されることとなり、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタを要することもなく、事前のフラグ判定も必要としないものが得られる。
【００１９】
また、上記目的を達成するために、本願の請求項２の発明にかかる条件付きベクトル演算装置は、ベクトル演算命令の発行によって第１ないし第Nのソースデータ（Nは２以上の整数）の供給を開始するソースデータ供給手段と、前記ソースデータ供給手段より供給される第１ないし第Nのソースデータを一時保存する第１ないし第Nのレジスタと、前記第１ないし第Nのレジスタの出力を用いて演算を行う演算手段と、前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、前記第１ないし第Ｎの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、前記ソースデータ供給手段がソースデータを供給し前記第１ないし第Nのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第１ステージ、前記演算手段が前記第１ないし第Ｎのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第２ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第３ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第１ないし第Ｎの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えた、ことを特徴とする。
【００２０】
この構成によれば、ソースデータ供給手段からベクトル命令形式で次々と供給されるデータに対して、パイプラインの第１ステージでデータの性質（例えばゼロかゼロでないか）を状態フラグ保持手段に格納し、第２ステージでは条件判定手段によりその状態フラグ保持手段の出力を命令の発行する条件と条件判定を行い、判定結果を演算手段の制御に用いることが可能となる。つまり条件判定と条件分岐演算のパイプライン・ステージを別のパイプライン・ステージに分けることによって、条件付き演算をベクトル演算形式で処理することができる。よって、この条件付きベクトル演算を図４に示した従来の処理フローに適用することで、ステップS401およびステップS403とステップS404さらにはステップS405がパイプライン的に処理されることとなり、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタを要することなく、事前のフラグ判定に要するオーバーヘッドも存在しないものが得られる。
【００２１】
発明を実施するための最良の形態
以下、本発明の実施の形態について、図１ないし図３を用いて説明する。
（実施の形態１）
この実施の形態１は、演算処理すべきデータの性質を判定して、このデータの性質に応じて演算を行うか否かを制御することにより、条件付き演算をパイプライン処理、即ち、一連の処理を複数のステージに分け、ある一連の処理の第１のステージを実行し終わり第２のステージの実行中に、これと並行して次の一連の処理の第１のステージを実行する…，という処理を間断なく繰り返すベクトル演算処理、に組み込むことを可能にし、これにより、処理性能の向上を図ったものである。
【００２２】
図１（ａ）は本発明の実施の形態１による条件付きベクトル演算装置の概略構成を示すものである。
図１（ａ）において、１０は演算処理を実行する演算手段、２０は演算手段１０が演算処理の対象となるデータを取得する際にこれと並行して当該演算を実行すべきか否かを算出し判定する演算判定手段、３０は演算手段１０がベクトル演算を実行するように演算制御を行う際に、演算判定手段２０の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う演算制御手段である。
【００２３】
そして、これら演算手段１０，演算判定手段２０，演算制御手段３０は、演算手段１０が、演算処理を実行する演算処理工程に、演算判定手段２０が、演算処理の対象となるデータを取得する際に、これと並行して当該演算を実行すべきか否かを算出し判定する演算判定工程に、演算制御手段３０が、演算処理工程がベクトル演算を実行するように演算制御を行う際に、演算判定工程の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う演算制御工程に、それぞれ相当する処理を行うものである。
【００２４】
次に動作について説明する。演算手段１０は図示しないメモリから演算の対象となるデータを取得し、これに演算命令に応じた演算処理を行おうとする。その際、演算判定手段２０はこの演算の対象となるデータが演算処理すべきデータか否かを、演算手段１０がデータを取得する際に、算出し判定する。
【００２５】
そしてその判定結果に基づいて演算制御手段３０は演算処理を行うか否かを決定し、演算を行うべきデータと判定した場合は当該データを命令に応じて処理し、また、否と判定した場合は、演算を実行せずにそのままデータを出力するように、演算手段１０を制御する。
【００２６】
演算制御手段３０は、演算手段１０がベクトル演算命令に対し、パイプライン処理を実行するように、即ち、データの供給、演算、演算結果の格納、の各ステージを時間的にずらせながら並行して実行することにより、ベクトル命令を処理するように制御を行っているが、上述のように、条件付き演算命令の条件判定を本来のパイプライン処理と並行して行い、かつ演算を行う場合も行わない場合もデータの流れが同一の経路を辿るようにしたので、条件付き演算をベクトル演算として処理することが可能となり、ベクトル演算化していない条件付き演算により大量のデータを繰り返し演算処理する場合のオーバーヘッドを軽減することが可能となる。
【００２７】
図１（ｂ）は、この実施の形態１による条件付きベクトル演算装置の構成をより具体的に示したものである。
図１（ｂ）において、100は本発明を適用した条件付きベクトル演算装置において、その演算処理を実行するALUであり、図１（ａ）の演算手段10に対応する。また、101および102はソースデータ供給手段としてのメモリ、103および104はそれぞれメモリ101と102より供給されるソースデータを一時保存するレジスタ、105はALU100が出力する演算結果を一時的に保存するためのパイプライン・レジスタ、106はパイプライン・レジスタ105の出力を順次格納するための演算結果格納手段としてのメモリ、150はメモリ101から読み出されるソースデータの性質を表わす情報を逐次検出する状態フラグ検出手段、107は状態フラグ検出手段150が検出する状態フラグを逐次保持する状態フラグ保持手段、108は状態フラグ保持手段107が出力する状態フラグ、120はこれら状態フラグ検出手段150および状態フラグ保持手段107からなる演算判定手段であり、図１（ａ）の演算判定手段20に対応し、演算手段が演算処理の対象となるデータを取得する際にこれと並行して当該演算を実行すべきか否かを算出し判定する。
【００２８】
また、109は状態フラグ108と後述する条件情報115を入力とし、条件判定を行って条件の成立／不成立を示す情報114を出力する条件判定手段、110はベクトル演算命令の発行を受けて本発明の演算装置全体をベクトル命令形式でパイプライン制御するように制御信号を生成する制御手段、130はこれら条件判定手段109および制御手段110からなる演算制御手段であり、図１（ａ）の演算制御手段30に対応し、演算手段がベクトル演算を実行するよう演算制御を行う際に、前記演算判定手段の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う。ALU100はこの演算制御手段130の制御に応じて演算処理すべきデータに対し演算を実行して出力するかあるいは演算を実行することなく出力する演算手段140として動作する。111は制御手段110が出力するメモリ101,102,106のメモリ制御信号、112は制御手段110が出力するレジスタ103,104のライト・イネーブル信号、113は制御手段110が出力するALU100のモード選択信号、114は条件判定手段109が出力する条件成立／不成立を示す情報、115は制御手段110が出力する命令による条件情報である。
【００２９】
ここで、本実施の形態１による条件付きベクトル演算装置の構成を用いた場合の動作を、図２にフローチャートを示した処理を行う場合を例にとって説明する。
図２では、まずステップS200においてjを“0”に初期化する。次にステップS201において、このjを“0”に初期化した状態から演算対象のデータX(j)をメモリ101から 取得する。このステップS201はソースデータ供給処理に対応する。次にステップS202では、前のステップS201において取得したデータX(j)がゼロか否かを確かめるために、ゼロとデータX(j)との比較処理を行い、その比較結果を保持する。このステップS202は状態フラグ保持処理工程に相当する。実際にはこれらステップS201およびステップS202は並行して処理がなされ、これらステップS201およびステップS202により図１（ｂ）のメモリ101から演算対象となるデータを読み出す第１ステージ310が構成されている。この第１ステージ310は演算判定工程に相当するものである。
【００３０】
次に、ステップS203では条件付き演算命令を用い、前のステップS202において決定したコンディション・フラグよりその比較結果が不一致であった（No）場合には、ステップS204によりX(j)をそのままY(j)として出力し、比較結果が一致した（Yes）場合には、ステップS205によりX(j)に“1”を加算したものをY(j)として出力し、ステップS210に移る。実際にはこれらステップS203およびステップS204 ,S205は並行して処理がなされ、これらステップS203およびステップS204 ,S205により演算処理を行う第２ステージ311が構成されている。この第２ステージ311は演算処理工程と演算制御工程に相当するものであり、ステップS203は条件判定処理工程に、ステップS204およびステップS205は演算処理工程にそれぞれ相当する。
【００３１】
次に、ステップS210ではこのようにして得られた演算結果をメモリ106に格納し、ステップS206に移る。このステップS210により演算結果をメモリ106に書き込む第３ステージ312が構成されており、これは演算結果格納処理工程に相当する。
ステップS206は演算対象のデータである８個のデータの処理が終わるまで、ステップS201ないしステップS205の処理を繰り返すためのものであり、ステップS206においてjが“8”未満の（Yes）場合には、ステップS207においてjに“1”を加算し、ステップS201以降の処理を繰り返す。これらS206およびステップS207により、第１ステージ310ないし第３ステージ312を有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程が実現されている。また、jが“8”以上の値となった（No）場合には、ステップS208においてY(0)ないし Y(7)の値の累算を行う。
【００３２】
このフローチャートは、X(j)で表わされた演算対象データについて、その値が“0”であるか否かによる条件分岐を行い、“0”以外であった場合(No)には演算結果Y(j)としてはX(j)そのものを、“0”であった場合(Yes)にはY(j)としてはX(j)+1を、それぞれ採用し、以上の処理をjが“8”になるまでの間繰り返すことによって、８個の演算対象データに対し同様の条件付き演算を施す場合を示している。
【００３３】
以上の処理に、本実施の形態１の構成を用いて、条件付きベクトル演算を実行したときのタイミング・チャートを図３に示した。
図３において、301は第１のソースデータとしての，メモリ101からのリードデータ、302は第２のソースデータとしての，レジスタ104に設定した固定値“１”、303はレジスタ103の出力、304は状態フラグ保持手段107の出力としての状態フラグ108、305は命令による条件情報115を示す値、306は条件判定手段109の出力としての条件成立／不成立を示す情報114、307はALU100のモード選択信号113、308はALU100の出力、309はパイプライン・レジスタ105の出力である。
【００３４】
また、310，311，312は前述した通りの第１，第２，第３ステージである。即ち、310はベクトル演算命令の発行によってソースデータの供給を開始するソースデータ供給処理としての第１ステージ、311は前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理としての第２ステージ、312は前記演算結果を順に格納する演算結果格納処理としての第３ステージであり、図１の制御手段110はこれら第１ステージ310, 第２ステージ311，第３ステージ312をパイプライン処理として実行するように、制御信号を生成している。
【００３５】
ここで図３における状態フラグ304は、第１のソースデータ301のデータの性質の情報であり、データがゼロの場合には“1”の値を、データがゼロ以外の場合には“0”の値を、それぞれ出力するものとする。また、命令による条件情報305としては、“ゼロである”という条件のコンディション・コードは“1”であるものとする。またALU100のモード選択信号が、演算処理を行わない“スルー”のときにはALU100の出力306には第１のソースデータ301を、“ADD”演算を行うときには第１のソースデータ301と第２のソースデータ302の値を加算した結果を出力するものとする。
【００３６】
即ち、図３のサイクル１において、制御手段110は図１のレジスタ104に値“1”を設定するとともに、命令による条件情報305として値“1”を設定する。次に、サイクル２において、制御手段110はメモリ101よりデータX(0)として値“1”を読み出し、これをレジスタ103および状態フラグ検出手段150に転送する。状態フラグ保持手段107はこの状態フラグ検出手段150による検出結果“0”を保持する。次に、サイクル３において、条件判定手段109はこの状態フラグ保持手段107に保持されている値108が“0”であり、かつ制御手段110が出力する，命令による条件情報115の値が“1”であるため、これらを比較し、条件が不成立である旨の条件成立／不成立情報114を制御手段110に出力する。これにより、制御手段110はALU100に対しスルーを選択する旨のALUのモード選択信号113を出力する。これにより、ALU100は、第１のソースデータとしてのレジスタ103の出力に対し何ら演算を行うことなくその値“1”をそのまま出力する。次に、このサイクル４において、ALU100の出力“1” は、制御手段110によりパイプライン・レジスタ105に転送され、このパイプライン・レジスタ105の出力は、メモリ106に書き込まれる。
【００３７】
これらサイクル２ないし４において、データX(0)がスルー処理されるのと並行して、値“2”を有するデータX(1)がこれらより１サイクルずつずれたサイクル３ないし５において、同様に処理される。この場合も条件が不成立であるので、ALU100は、その値“2”をそのまま出力する。
【００３８】
次に、サイクル４において、制御手段110はメモリ101よりデータX(2)として値“0”を読み出し、これをレジスタ103および状態フラグ検出手段150に転送する。状態フラグ保持手段107はこの状態フラグ検出手段150による検出結果“1”を保持する。次にサイクル５において、条件判定手段109はこの状態フラグ保持手段107に保持されている値108が“1”であり、かつ制御手段110が出力する，命令による条件情報115の値が“1”であるため、これらを比較し、条件が成立している旨の条件成立／不成立情報114を制御手段110に出力する。これにより、制御手段110はALU100に対し加算演算を選択する旨のALUのモード選択信号113を出力する。これにより、ALU100は、第１のソースデータとしてのレジスタ103の出力“0”に対し“1”を加える演算を行ってその加算値“1”を出力する。次に、サイクル６において、このALU100の出力“１” は、制御手段110によりパイプライン・レジスタ105に転送され、このパイプライン・レジスタ105の出力は、メモリ106に書き込まれる。
【００３９】
以下、このようなパイプライン動作が値“1”，“2”，“3”，“0”，“5”を有するデータX(3)，X(4)，X(5)，X(6)，X(7)に対しても同様に行われ、パイプラインレジスタ105の出力として、値“1”，“2”，“3”，“1”，“5”がそれぞれ得られる。
【００４０】
これらの動作を処理の流れに着目して述べると、第１ステージ310では、メモリ101から第１のソースデータとしてのリードデータ301を得るとともに、第２のソースデータとして、レジスタ104に固定値“1”を設定し、かつベクトル演算命令による条件情報115の値“1”を設定する。そして、メモリ101から第１のソースデータとしてのリードデータ301をレジスタ103に転送するとともに、その値を状態フラグ検出手段150で“0”か否かを判定し、“0”以外であれば“0”を、“0”であれば“1”を、それぞれ状態フラグとして状態フラグ保持手段107で保持する。これらの処理において、メモリ101からのリードデータ301の転送はソースデータ供給処理工程に相当し、状態フラグ検出手段150および状態フラグ保持手段107の処理は演算判定工程あるいは状態フラグ保持処理工程に相当する。
【００４１】
次に、第２ステージ311では、条件判定手段109で状態フラグ保持手段107で保持している状態フラグの値と制御手段110から出力される，ベクトル演算命令による条件情報115の値“1”とを比較し、ALU100による演算を行うべきか否かを示す条件成立／不成立情報114を制御手段110に出力する。制御手段110はこの条件成立／不成立情報114に応じてALU100に対しALUのモード選択信号113を出力し、条件が成立した場合にALU100がレジスタ103の出力に対しレジスタ104の出力である固定値“1”を加える演算を行い、条件が不成立の場合にレジスタ103の出力に何も演算を行わず、これをスルーで出力するように制御を行い、このALU100の出力をパイプラインレジスタ105に出力する。これらの処理において、条件判定手段109による処理は条件判定処理工程に相当し、ALU100の処理は演算処理工程に相当し、条件判定手段109および制御手段110の処理は演算制御工程に相当する。
【００４２】
そして、第３ステージ312では、ALU100の出力を一時格納したパイプラインレジスタ105の出力を、累算値を得るためのメモリ106に書き込む。このメモリ106への書き込みは演算結果格納処理工程に相当する。
【００４３】
この図３に示したタイミング・チャートにより、データに対し演算を行う場合も行わない場合もデータの流れが同じ経路を辿るので、条件付き演算を,パイプライン処理の流れを中断することなく実行できることが明らかとなり、従って、図２のフローチャートで述べた処理のうちステップS201ないしステップS207を8回繰り返す分のステップがベクトル演算で実現できることが明らかとなった。このため、条件付き演算をベクトル演算に含めることができ、これに通常のベクトル演算と同様、１命令を割り当てることができ、従って、これらサイクル１ないしサイクル１１に相当するパイプライン処理を１命令で実現でき、しかもその処理を、（８サイクル）＋（パイプライン遅延段数）という処理量で実現できる。
【００４４】
このように、本実施の形態１によれば、処理ルーチン中に演算対象のデータの性質によって処理すべき演算内容が変わってくるような条件付き演算が含まれ、その演算対象が多数のデータにわたる場合に、条件付き演算を、条件の判定と条件分岐および演算のパイプライン・ステージを分けることにより、即ち、ALUにより条件付き演算を行う際に、演算を実行するサイクルとは別に、演算のソースとなる第１のソースデータに基づき、演算を行う条件が成立しているか否かを判定し、この判定結果に基づいて演算を実行するか否かを決定することにより、条件付き演算を、処理の流れを中断することなくベクトル演算形式で実行することが可能となり、これにより、演算対象データを連続的に処理することが可能となり、処理ステップ数の削減によるプロセッサの性能向上を図ることができる。また、別途マスクレジスタ等のハードウエアも不要であり、消費電力に制約のある機器にプロセッサを組み込む場合にはその分有利となる。さらに、事前にフラグを算出することによるオーバーヘッドも生じない。
【００４５】
なお、以上の説明では、ソースデータ供給手段としてメモリ101,102を用いたが、ソースデータ供給手段の一方をレジスタで構成した固定値としても同様の条件付きベクトル演算装置が実現可能である。
【００４６】
また、演算手段としてのALU100を累算回路で構成し、演算結果格納手段としてのメモリ106を削除し、パイプライン・レジスタ105をアキュームレート・レジスタとして構成することにより、条件付きベクトル演算の累算装置を実現することも可能である。
【００４７】
また、ソースデータの性質を表わす情報を逐次保持する状態フラグ保持手段107に保持する状態フラグとしては、メモリ１０１または１０２のいずれか一方がゼロかゼロ以外かを表わすゼロ・フラグの他、正，負を表わすサイン・フラグ、メモリ１０１，１０２からの読み出しデータが一致しているか否かを表す一致フラグ、メモリ１０１，１０２からの読み出しデータの大小関係を表すフラグ、即ち、メモリ１０１からの読み出しデータとメモリ１０２からの読み出しデータとの大小関係が“≧”，“≦”，“＞”，“＜”のいずれの状態になっているかを示すフラグなどを保持し、分岐の条件とすることが可能である。
【００４８】
また、図５に示すように、状態フラグ検出手段１５０を、設定レジスタ１５０ａおよび比較手段１５０ｂにより構成し、設定レジスタ１５０ａに所望の設定値Ａを入力可能とし、かつ比較手段１５０ｂによりこの設定レジスタ１５０ａの設定値Ａと、メモリ１０１，１０２のいずれか一方から読み出したデータとを比較するように構成することにより、これらの大小関係を表すフラグ、即ち、設定値Ａと、メモリ１０１，１０２のいずれか一方から読み出したデータとの大小関係が“≧”，“≦”，“＞”，“＜”，“＝”のいずれの状態になっているかを示すフラグなどを保持し、条件分岐の条件とすることも可能である。
【００４９】
さらに第１ステージの処理時間に収まる範囲で処理可能であれば、比較のロジックをより複雑な演算にすることにより、より複雑な分岐の条件に対応することも可能である。
【００５０】
また、図６に示すメモリ１０１ａないし１０１ｎ、あるいは１０２ａないし１０２ｎのように、メモリ１０１，１０２の少なくとも一方を、複数のメモリから構成し、これらメモリ１０１，１０２をソースデータ供給手段としてその出力を演算する場合、メモリ１０１，１０２のいずれか一方のメモリの出力と他方のメモリの出力とを比較して、上述のような各種のフラグを保持し、条件分岐の条件とすることも可能である。この場合、レジスタ１０３，１０４およびALU100の入力はメモリの増加に対応させて増設する必要がある。また、メモリ１０１，１０２の出力はいずれか一方の１つの出力を第１のソースデータとし、他方の複数の出力を第２ないし第Ｎ（Ｎは２以上の整数）のソースデータとしてこれらを比較する必要がある。
【００５１】
さらに、膨大なデータに対して一定の処理ルーチンを繰り返し実行する処理モジュールであれば、画像データ以外のデータに対しても、その処理に使用することが可能である。
【００５３】
このように、請求項１の条件付きベクトル演算方法によれば、ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行に実行され、前記ソースデータ供給処理工程によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第１のステージと、前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第２のステージと、前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第３のステージとを有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理により実行するための制御に加えて、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含むようにしたので、条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることができ、条件付き演算をベクトル演算形式で処理することができる。このため、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタ等のハードウエアも不要であり、事前にフラグを算出することによるオーバーヘッドも生じない。
【００５４】
また、請求項２の条件付きベクトル演算装置によれば、ベクトル演算命令の発行によって第１ないし第Ｎのソースデータ（Ｎは２以上の整数）の供給を開始するソースデータ供給手段と、前記ソースデータ供給手段より供給される第１ないし第Ｎのソースデータを一時保存する第１ないし第Nのレジスタと、前記第１ないし第Ｎのレジスタの出力を用いて演算を行う演算手段と、前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、前記第１ないし第Ｎの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、前記ソースデータ供給手段がソースデータを供給し前記第１ないし第Ｎのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第１ステージ、前記演算手段が前記第１ないし第Ｎのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第２ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第３ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第１ないし第Ｎの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えるようにしたので、条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることができ、条件付き演算をベクトル演算形式で処理することができる。このため、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタ等のハードウエアも不要であり、事前にフラグを算出することによるオーバーヘッドも生じない。
【００５５】
産業上の利用可能性
以上のように、本発明は、条件付演算命令を命令セット中に有するとともにベクトル演算を行うプロセッサやデータ処理装置において、条件付演算命令をベクトル演算形式で処理できるため、条件付演算命令のオーバーヘッドを軽減し、処理性能を向上するうえで有用である。
【図面の簡単な説明】
【図１】本発明の実施の形態１による条件付きベクトル演算装置の構成図であり、（ａ）は本願の請求項３に対応する構成を示す図であり、（ｂ）は本発明の実施の形態１による条件付きベクトル演算装置のブロック構成を示す図である。
【図２】本発明の実施の形態１による処理のフローチャートを示す図である。
【図３】本発明の第１の実施の形態にかかる図２のフローチャートに示した処理を本発明の第１の実施の形態の条件付きベクトル演算装置を用いて処理した場合のタイミングチャートを示す図である。
【図４】従来の条件付き演算を含む処理のフローチャートを示す図である。
【図５】図１（ｂ）における状態フラグ検出手段の構成例を示す図である。
【図６】図１（ｂ）に示す本発明の実施の形態１による条件付きベクトル演算装置のブロック構成の他の例を示す図である。
【図１】
0003702789.tif 000002
【図２】
0003702789.tif 000003
【図３】
0003702789.tif 000004
【図４】
0003702789.tif 000005
【図５】
0003702789.tif 000006
【図６】
0003702789.tif 000007