JP3702789B2 - 条件付きベクトル演算方法および条件付きベクトル演算装置 - Google Patents
条件付きベクトル演算方法および条件付きベクトル演算装置 Download PDFInfo
- Publication number
- JP3702789B2 JP3702789B2 JP2000588702A JP2000588702A JP3702789B2 JP 3702789 B2 JP3702789 B2 JP 3702789B2 JP 2000588702 A JP2000588702 A JP 2000588702A JP 2000588702 A JP2000588702 A JP 2000588702A JP 3702789 B2 JP3702789 B2 JP 3702789B2
- Authority
- JP
- Japan
- Prior art keywords
- condition
- output
- processing
- data
- source data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
技術分野
本発明は、条件付きベクトル演算方法ならびに条件付きベクトル演算装置に関し、特に、マイクロプロセッサやディジタルシグナルプロセッサ(以下、DSPと称す)などと呼ばれるプロセッサやデータ処理装置に搭載される命令セットに用意された,ベクトル命令や条件付き演算命令を演算する演算方法、ならびにこの演算方法を用いて演算を行う演算装置の改良を図ったものに関する。
【0002】
背景技術
図4は、マイクロプロセッサやDSPといった汎用的な命令セットを備えたデータ処理装置、あるいはこの種のデータ処理装置を搭載した,システムLSIと呼ばれている半導体集積回路装置を用い、演算対象のデータについて、例えば演算対象のデータがゼロであるなどの,或る条件が成立するか否かによって演算対象のデータに対して行うべき処理が異なってくるような処理を行う場合のフローチャートを示している。
【0003】
この図4では、まずステップS401において演算対象のデータ402を取得する。次にステップS403では、先のステップS401において取得したデータ402がゼロか否かを確かめるためにゼロとデータS402との比較処理を行う。
【0004】
次のステップS404では前のステップS403の結果を受けて、その比較結果が不一致であった(No)場合にはステップS406に移り処理Bを行うが、ステップS404による判定結果が一致であった(Yes)場合には、ステップS405で演算対象のデータ402に対して処理Aを行った後、ステップS406に移る。
ここで処理Bとは、演算対象のデータ、あるいは演算対象のデータに対して処理Aの演算を施したデータを用いた処理であるとする。
このように、図4のフローチャートではステップS404の実行結果によって、以降の処理手順、即ちデータの処理の流れが異なってくる。
【0005】
ところで、一般的なマイクロプロセッサやDSPなどと呼ばれるプロセッサが汎用命令セットとして備えている命令の1つに条件分岐命令がある。条件分岐命令とは、実行すべき演算命令において演算結果の性質を示す情報をもったコンディション・コードと呼ばれるコードを前もって生成して保持しておき、このコンディション・コードが条件分岐命令の指定する条件と一致していれば条件成立として分岐を行い、一致していなければ条件不成立として分岐を行わないという命令である。従って、図4のフローチャートにおけるステップS404のような,条件判断後の処理フローの分岐という処理を実行するには、条件分岐命令を用いるのが一般的である。
【0006】
しかしながら、図4に示したような処理を行う場合に必要となる条件分岐命令は、データ処理には直接的に何ら寄与しない動作であるにもかかわらず、これをif〜then〜else文などで記述する必要があるが、この方法では1つの条件分岐に対応するif文を処理するマイクロコードの実行に数サイクルの実行サイクルを要し、これをデータの個数だけ繰り返す必要があり、さらにプログラムをパイプライン制御しているようなシステムLSIにおいてはパイプラインの流れが中断されてしまい、これによる処理のオーバーヘッドが増加してしまう。
【0007】
また、このような処理性能の低下を防ぐために、条件付き演算命令と呼ばれる命令を命令セットのなかに持つ機種がある。この条件付き演算命令は、様々な命令に分岐命令と同様な条件を付加し、指定された条件が成立したときのみその命令を実行し、不成立の場合は指定された動作を実行せずにそのまま次のステップに移るような命令である。このような命令をもつことによって、図4のステップ404のような条件分岐命令をプログラムから排除することができ、処理性能の低下を防ぐことが可能となる。
【0008】
しかしながら、この条件付き演算を或るまとまった量のデータに対し実行しようとする場合、予め、各データに関して条件を満足するか否かを算出しておき、これをフラグとして別途マスクレジスタに保持しておき、このフラグを参照しながら演算を実行するか否かを判定するようにしているが、この前処理としてのフラグ算出がオーバーヘッドとなってしまい、かつこのフラグを蓄えるマスクレジスタが別途必要になるという問題があった。
【0009】
さらに、この種の条件付き演算命令の改良を図ったものとして、例えば特開平8−305563号公報に示されたデータ処理装置のように、演算命令に、無条件でこれを実行するか、条件が「真」の時にこれを実行するか、条件が「偽」の時にこれを実行するか、を選択する少数のビットをデータに付加することにより、条件付き演算命令の命令の種類やオペランドの自由度の制限による性能低下を防止し、プログラムメモリの小容量化を可能にしたものもある。
【0010】
しかしながら、演算対象のデータがゼロであれば処理Aとして演算対象のデータに“1”を加算し、演算対象のデータがゼロでなければそのまま次の処理に移るような処理を、画像データのようなまとまったデータ数のデータに対して行いたい場合、従来の演算方法あるいは演算装置では、上述のように、図4のフローをif〜then〜else文などに相当するマイクロコードで記述しこれをデータの個数だけ繰り返すか、あるいは条件付き演算命令を用いてフローのなかからステップS404を排除したものをデータの数だけ繰り返すか、のいずれかの方法で対処しなければならないが、これらの方法では命令をベクトル演算処理することができないため、データの個数分だけループによる繰り返し処理が必要になり、その分処理のオーバーヘッドが増加する。
【0011】
また、一般的にいって、上述のような条件付き演算を実行するような処理モジュールが頻繁に現われるプログラムは少ないかもしれないが、例えば、画像CODECの信号処理のような処理モジュールでは、膨大なデータに対して一定の処理ルーチンを繰り返し実行することが多く、処理ルーチンに含まれるステップ数が1ステップでも増減することによる処理性能への影響は大きい。
【0012】
本発明はこうした事情に鑑みてなされたもので、あるまとまったデータ量に対して上述したような条件付き演算を含む処理ルーチンによる処理を行う際に、条件付き演算をベクトル演算処理可能とし、別途マスクレジスタを必要とせず、繰り返し処理に要する処理のオーバーヘッドを削減でき、処理性能を向上することができる,条件付きベクトル演算方法および条件付きベクトル演算装置を提供することを目的とする。
【0015】
発明の開示
上記目的を達成するために、本願の請求項1の発明にかかる条件付きベクトル演算方法は、ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行して実行され、前記ソースデータ供給処理工程によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第1のステージと、前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第2のステージと、前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第3のステージとを有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含む、ことを特徴とする。
【0016】
これらの処理工程によれば、ソースデータ供給処理によりベクトル命令形式で次々と供給されるデータに対して、パイプラインの第1ステージでデータの性質(例えばゼロかゼロでないか)を状態フラグとして出力し、第2ステージでは条件判定処理工程によりその状態フラグの出力と命令の発行する条件とを用いて条件判定を行い、判定結果を演算処理の制御に用いることが可能となる。つまり条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることによって、条件付き演算をベクトル演算形式で処理することができる。よって、この条件付きベクトル演算を図4に示した従来の処理フローに適用することで、ステップS401およびステップS403とステップS404さらにステップS405がパイプライン的に処理されることとなり、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタを要することもなく、事前のフラグ判定も必要としないものが得られる。
【0019】
また、上記目的を達成するために、本願の請求項2の発明にかかる条件付きベクトル演算装置は、ベクトル演算命令の発行によって第1ないし第Nのソースデータ(Nは2以上の整数)の供給を開始するソースデータ供給手段と、前記ソースデータ供給手段より供給される第1ないし第Nのソースデータを一時保存する第1ないし第Nのレジスタと、前記第1ないし第Nのレジスタの出力を用いて演算を行う演算手段と、前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、前記第1ないし第Nの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、前記ソースデータ供給手段がソースデータを供給し前記第1ないし第Nのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第1ステージ、前記演算手段が前記第1ないし第Nのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第2ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第3ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第1ないし第Nの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えた、ことを特徴とする。
【0020】
この構成によれば、ソースデータ供給手段からベクトル命令形式で次々と供給されるデータに対して、パイプラインの第1ステージでデータの性質(例えばゼロかゼロでないか)を状態フラグ保持手段に格納し、第2ステージでは条件判定手段によりその状態フラグ保持手段の出力を命令の発行する条件と条件判定を行い、判定結果を演算手段の制御に用いることが可能となる。つまり条件判定と条件分岐演算のパイプライン・ステージを別のパイプライン・ステージに分けることによって、条件付き演算をベクトル演算形式で処理することができる。よって、この条件付きベクトル演算を図4に示した従来の処理フローに適用することで、ステップS401およびステップS403とステップS404さらにはステップS405がパイプライン的に処理されることとなり、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタを要することなく、事前のフラグ判定に要するオーバーヘッドも存在しないものが得られる。
【0021】
発明を実施するための最良の形態
以下、本発明の実施の形態について、図1ないし図3を用いて説明する。
(実施の形態1)
この実施の形態1は、演算処理すべきデータの性質を判定して、このデータの性質に応じて演算を行うか否かを制御することにより、条件付き演算をパイプライン処理、即ち、一連の処理を複数のステージに分け、ある一連の処理の第1のステージを実行し終わり第2のステージの実行中に、これと並行して次の一連の処理の第1のステージを実行する…,という処理を間断なく繰り返すベクトル演算処理、に組み込むことを可能にし、これにより、処理性能の向上を図ったものである。
【0022】
図1(a)は本発明の実施の形態1による条件付きベクトル演算装置の概略構成を示すものである。
図1(a)において、10は演算処理を実行する演算手段、20は演算手段10が演算処理の対象となるデータを取得する際にこれと並行して当該演算を実行すべきか否かを算出し判定する演算判定手段、30は演算手段10がベクトル演算を実行するように演算制御を行う際に、演算判定手段20の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う演算制御手段である。
【0023】
そして、これら演算手段10,演算判定手段20,演算制御手段30は、演算手段10が、演算処理を実行する演算処理工程に、演算判定手段20が、演算処理の対象となるデータを取得する際に、これと並行して当該演算を実行すべきか否かを算出し判定する演算判定工程に、演算制御手段30が、演算処理工程がベクトル演算を実行するように演算制御を行う際に、演算判定工程の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う演算制御工程に、それぞれ相当する処理を行うものである。
【0024】
次に動作について説明する。演算手段10は図示しないメモリから演算の対象となるデータを取得し、これに演算命令に応じた演算処理を行おうとする。その際、演算判定手段20はこの演算の対象となるデータが演算処理すべきデータか否かを、演算手段10がデータを取得する際に、算出し判定する。
【0025】
そしてその判定結果に基づいて演算制御手段30は演算処理を行うか否かを決定し、演算を行うべきデータと判定した場合は当該データを命令に応じて処理し、また、否と判定した場合は、演算を実行せずにそのままデータを出力するように、演算手段10を制御する。
【0026】
演算制御手段30は、演算手段10がベクトル演算命令に対し、パイプライン処理を実行するように、即ち、データの供給、演算、演算結果の格納、の各ステージを時間的にずらせながら並行して実行することにより、ベクトル命令を処理するように制御を行っているが、上述のように、条件付き演算命令の条件判定を本来のパイプライン処理と並行して行い、かつ演算を行う場合も行わない場合もデータの流れが同一の経路を辿るようにしたので、条件付き演算をベクトル演算として処理することが可能となり、ベクトル演算化していない条件付き演算により大量のデータを繰り返し演算処理する場合のオーバーヘッドを軽減することが可能となる。
【0027】
図1(b)は、この実施の形態1による条件付きベクトル演算装置の構成をより具体的に示したものである。
図1(b)において、100は本発明を適用した条件付きベクトル演算装置において、その演算処理を実行するALUであり、図1(a)の演算手段10に対応する。また、101および102はソースデータ供給手段としてのメモリ、103および104はそれぞれメモリ101と102より供給されるソースデータを一時保存するレジスタ、105はALU100が出力する演算結果を一時的に保存するためのパイプライン・レジスタ、106はパイプライン・レジスタ105の出力を順次格納するための演算結果格納手段としてのメモリ、150はメモリ101から読み出されるソースデータの性質を表わす情報を逐次検出する状態フラグ検出手段、107は状態フラグ検出手段150が検出する状態フラグを逐次保持する状態フラグ保持手段、108は状態フラグ保持手段107が出力する状態フラグ、120はこれら状態フラグ検出手段150および状態フラグ保持手段107からなる演算判定手段であり、図1(a)の演算判定手段20に対応し、演算手段が演算処理の対象となるデータを取得する際にこれと並行して当該演算を実行すべきか否かを算出し判定する。
【0028】
また、109は状態フラグ108と後述する条件情報115を入力とし、条件判定を行って条件の成立/不成立を示す情報114を出力する条件判定手段、110はベクトル演算命令の発行を受けて本発明の演算装置全体をベクトル命令形式でパイプライン制御するように制御信号を生成する制御手段、130はこれら条件判定手段109および制御手段110からなる演算制御手段であり、図1(a)の演算制御手段30に対応し、演算手段がベクトル演算を実行するよう演算制御を行う際に、前記演算判定手段の判定結果に応じて、前記演算処理の対象となるデータに対し演算を実行しその結果を出力するか、あるいは当該データを演算を実行することなく出力するように演算制御を行う。ALU100はこの演算制御手段130の制御に応じて演算処理すべきデータに対し演算を実行して出力するかあるいは演算を実行することなく出力する演算手段140として動作する。111は制御手段110が出力するメモリ101,102,106のメモリ制御信号、112は制御手段110が出力するレジスタ103,104のライト・イネーブル信号、113は制御手段110が出力するALU100のモード選択信号、114は条件判定手段109が出力する条件成立/不成立を示す情報、115は制御手段110が出力する命令による条件情報である。
【0029】
ここで、本実施の形態1による条件付きベクトル演算装置の構成を用いた場合の動作を、図2にフローチャートを示した処理を行う場合を例にとって説明する。
図2では、まずステップS200においてjを“0”に初期化する。次にステップS201において、このjを“0”に初期化した状態から演算対象のデータX(j)をメモリ101から 取得する。このステップS201はソースデータ供給処理に対応する。次にステップS202では、前のステップS201において取得したデータX(j)がゼロか否かを確かめるために、ゼロとデータX(j)との比較処理を行い、その比較結果を保持する。このステップS202は状態フラグ保持処理工程に相当する。実際にはこれらステップS201およびステップS202は並行して処理がなされ、これらステップS201およびステップS202により図1(b)のメモリ101から演算対象となるデータを読み出す第1ステージ310が構成されている。この第1ステージ310は演算判定工程に相当するものである。
【0030】
次に、ステップS203では条件付き演算命令を用い、前のステップS202において決定したコンディション・フラグよりその比較結果が不一致であった(No)場合には、ステップS204によりX(j)をそのままY(j)として出力し、比較結果が一致した(Yes)場合には、ステップS205によりX(j)に“1”を加算したものをY(j)として出力し、ステップS210に移る。実際にはこれらステップS203およびステップS204 ,S205は並行して処理がなされ、これらステップS203およびステップS204 ,S205により演算処理を行う第2ステージ311が構成されている。この第2ステージ311は演算処理工程と演算制御工程に相当するものであり、ステップS203は条件判定処理工程に、ステップS204およびステップS205は演算処理工程にそれぞれ相当する。
【0031】
次に、ステップS210ではこのようにして得られた演算結果をメモリ106に格納し、ステップS206に移る。このステップS210により演算結果をメモリ106に書き込む第3ステージ312が構成されており、これは演算結果格納処理工程に相当する。
ステップS206は演算対象のデータである8個のデータの処理が終わるまで、ステップS201ないしステップS205の処理を繰り返すためのものであり、ステップS206においてjが“8”未満の(Yes)場合には、ステップS207においてjに“1”を加算し、ステップS201以降の処理を繰り返す。これらS206およびステップS207により、第1ステージ310ないし第3ステージ312を有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程が実現されている。また、jが“8”以上の値となった(No)場合には、ステップS208においてY(0)ないし Y(7)の値の累算を行う。
【0032】
このフローチャートは、X(j)で表わされた演算対象データについて、その値が“0”であるか否かによる条件分岐を行い、“0”以外であった場合(No)には演算結果Y(j)としてはX(j)そのものを、“0”であった場合(Yes)にはY(j)としてはX(j)+1を、それぞれ採用し、以上の処理をjが“8”になるまでの間繰り返すことによって、8個の演算対象データに対し同様の条件付き演算を施す場合を示している。
【0033】
以上の処理に、本実施の形態1の構成を用いて、条件付きベクトル演算を実行したときのタイミング・チャートを図3に示した。
図3において、301は第1のソースデータとしての,メモリ101からのリードデータ、302は第2のソースデータとしての,レジスタ104に設定した固定値“1”、303はレジスタ103の出力、304は状態フラグ保持手段107の出力としての状態フラグ108、305は命令による条件情報115を示す値、306は条件判定手段109の出力としての条件成立/不成立を示す情報114、307はALU100のモード選択信号113、308はALU100の出力、309はパイプライン・レジスタ105の出力である。
【0034】
また、310,311,312は前述した通りの第1,第2,第3ステージである。即ち、310はベクトル演算命令の発行によってソースデータの供給を開始するソースデータ供給処理としての第1ステージ、311は前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理としての第2ステージ、312は前記演算結果を順に格納する演算結果格納処理としての第3ステージであり、図1の制御手段110はこれら第1ステージ310, 第2ステージ311,第3ステージ312をパイプライン処理として実行するように、制御信号を生成している。
【0035】
ここで図3における状態フラグ304は、第1のソースデータ301のデータの性質の情報であり、データがゼロの場合には“1”の値を、データがゼロ以外の場合には“0”の値を、それぞれ出力するものとする。また、命令による条件情報305としては、“ゼロである”という条件のコンディション・コードは“1”であるものとする。またALU100のモード選択信号が、演算処理を行わない“スルー”のときにはALU100の出力306には第1のソースデータ301を、“ADD”演算を行うときには第1のソースデータ301と第2のソースデータ302の値を加算した結果を出力するものとする。
【0036】
即ち、図3のサイクル1において、制御手段110は図1のレジスタ104に値“1”を設定するとともに、命令による条件情報305として値“1”を設定する。次に、サイクル2において、制御手段110はメモリ101よりデータX(0)として値“1”を読み出し、これをレジスタ103および状態フラグ検出手段150に転送する。状態フラグ保持手段107はこの状態フラグ検出手段150による検出結果“0”を保持する。次に、サイクル3において、条件判定手段109はこの状態フラグ保持手段107に保持されている値108が“0”であり、かつ制御手段110が出力する,命令による条件情報115の値が“1”であるため、これらを比較し、条件が不成立である旨の条件成立/不成立情報114を制御手段110に出力する。これにより、制御手段110はALU100に対しスルーを選択する旨のALUのモード選択信号113を出力する。これにより、ALU100は、第1のソースデータとしてのレジスタ103の出力に対し何ら演算を行うことなくその値“1”をそのまま出力する。次に、このサイクル4において、ALU100の出力“1” は、制御手段110によりパイプライン・レジスタ105に転送され、このパイプライン・レジスタ105の出力は、メモリ106に書き込まれる。
【0037】
これらサイクル2ないし4において、データX(0)がスルー処理されるのと並行して、値“2”を有するデータX(1)がこれらより1サイクルずつずれたサイクル3ないし5において、同様に処理される。この場合も条件が不成立であるので、ALU100は、その値“2”をそのまま出力する。
【0038】
次に、サイクル4において、制御手段110はメモリ101よりデータX(2)として値“0”を読み出し、これをレジスタ103および状態フラグ検出手段150に転送する。状態フラグ保持手段107はこの状態フラグ検出手段150による検出結果“1”を保持する。次にサイクル5において、条件判定手段109はこの状態フラグ保持手段107に保持されている値108が“1”であり、かつ制御手段110が出力する,命令による条件情報115の値が“1”であるため、これらを比較し、条件が成立している旨の条件成立/不成立情報114を制御手段110に出力する。これにより、制御手段110はALU100に対し加算演算を選択する旨のALUのモード選択信号113を出力する。これにより、ALU100は、第1のソースデータとしてのレジスタ103の出力“0”に対し“1”を加える演算を行ってその加算値“1”を出力する。次に、サイクル6において、このALU100の出力“1” は、制御手段110によりパイプライン・レジスタ105に転送され、このパイプライン・レジスタ105の出力は、メモリ106に書き込まれる。
【0039】
以下、このようなパイプライン動作が値“1”,“2”,“3”,“0”,“5”を有するデータX(3),X(4),X(5),X(6),X(7)に対しても同様に行われ、パイプラインレジスタ105の出力として、値“1”,“2”,“3”,“1”,“5”がそれぞれ得られる。
【0040】
これらの動作を処理の流れに着目して述べると、第1ステージ310では、メモリ101から第1のソースデータとしてのリードデータ301を得るとともに、第2のソースデータとして、レジスタ104に固定値“1”を設定し、かつベクトル演算命令による条件情報115の値“1”を設定する。そして、メモリ101から第1のソースデータとしてのリードデータ301をレジスタ103に転送するとともに、その値を状態フラグ検出手段150で“0”か否かを判定し、“0”以外であれば“0”を、“0”であれば“1”を、それぞれ状態フラグとして状態フラグ保持手段107で保持する。これらの処理において、メモリ101からのリードデータ301の転送はソースデータ供給処理工程に相当し、状態フラグ検出手段150および状態フラグ保持手段107の処理は演算判定工程あるいは状態フラグ保持処理工程に相当する。
【0041】
次に、第2ステージ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の処理は演算制御工程に相当する。
【0042】
そして、第3ステージ312では、ALU100の出力を一時格納したパイプラインレジスタ105の出力を、累算値を得るためのメモリ106に書き込む。このメモリ106への書き込みは演算結果格納処理工程に相当する。
【0043】
この図3に示したタイミング・チャートにより、データに対し演算を行う場合も行わない場合もデータの流れが同じ経路を辿るので、条件付き演算を,パイプライン処理の流れを中断することなく実行できることが明らかとなり、従って、図2のフローチャートで述べた処理のうちステップS201ないしステップS207を8回繰り返す分のステップがベクトル演算で実現できることが明らかとなった。このため、条件付き演算をベクトル演算に含めることができ、これに通常のベクトル演算と同様、1命令を割り当てることができ、従って、これらサイクル1ないしサイクル11に相当するパイプライン処理を1命令で実現でき、しかもその処理を、(8サイクル)+(パイプライン遅延段数)という処理量で実現できる。
【0044】
このように、本実施の形態1によれば、処理ルーチン中に演算対象のデータの性質によって処理すべき演算内容が変わってくるような条件付き演算が含まれ、その演算対象が多数のデータにわたる場合に、条件付き演算を、条件の判定と条件分岐および演算のパイプライン・ステージを分けることにより、即ち、ALUにより条件付き演算を行う際に、演算を実行するサイクルとは別に、演算のソースとなる第1のソースデータに基づき、演算を行う条件が成立しているか否かを判定し、この判定結果に基づいて演算を実行するか否かを決定することにより、条件付き演算を、処理の流れを中断することなくベクトル演算形式で実行することが可能となり、これにより、演算対象データを連続的に処理することが可能となり、処理ステップ数の削減によるプロセッサの性能向上を図ることができる。また、別途マスクレジスタ等のハードウエアも不要であり、消費電力に制約のある機器にプロセッサを組み込む場合にはその分有利となる。さらに、事前にフラグを算出することによるオーバーヘッドも生じない。
【0045】
なお、以上の説明では、ソースデータ供給手段としてメモリ101,102を用いたが、ソースデータ供給手段の一方をレジスタで構成した固定値としても同様の条件付きベクトル演算装置が実現可能である。
【0046】
また、演算手段としてのALU100を累算回路で構成し、演算結果格納手段としてのメモリ106を削除し、パイプライン・レジスタ105をアキュームレート・レジスタとして構成することにより、条件付きベクトル演算の累算装置を実現することも可能である。
【0047】
また、ソースデータの性質を表わす情報を逐次保持する状態フラグ保持手段107に保持する状態フラグとしては、メモリ101または102のいずれか一方がゼロかゼロ以外かを表わすゼロ・フラグの他、正,負を表わすサイン・フラグ、メモリ101,102からの読み出しデータが一致しているか否かを表す一致フラグ、メモリ101,102からの読み出しデータの大小関係を表すフラグ、即ち、メモリ101からの読み出しデータとメモリ102からの読み出しデータとの大小関係が“≧”,“≦”,“>”,“<”のいずれの状態になっているかを示すフラグなどを保持し、分岐の条件とすることが可能である。
【0048】
また、図5に示すように、状態フラグ検出手段150を、設定レジスタ150aおよび比較手段150bにより構成し、設定レジスタ150aに所望の設定値Aを入力可能とし、かつ比較手段150bによりこの設定レジスタ150aの設定値Aと、メモリ101,102のいずれか一方から読み出したデータとを比較するように構成することにより、これらの大小関係を表すフラグ、即ち、設定値Aと、メモリ101,102のいずれか一方から読み出したデータとの大小関係が“≧”,“≦”,“>”,“<”,“=”のいずれの状態になっているかを示すフラグなどを保持し、条件分岐の条件とすることも可能である。
【0049】
さらに第1ステージの処理時間に収まる範囲で処理可能であれば、比較のロジックをより複雑な演算にすることにより、より複雑な分岐の条件に対応することも可能である。
【0050】
また、図6に示すメモリ101aないし101n、あるいは102aないし102nのように、メモリ101,102の少なくとも一方を、複数のメモリから構成し、これらメモリ101,102をソースデータ供給手段としてその出力を演算する場合、メモリ101,102のいずれか一方のメモリの出力と他方のメモリの出力とを比較して、上述のような各種のフラグを保持し、条件分岐の条件とすることも可能である。この場合、レジスタ103,104およびALU100の入力はメモリの増加に対応させて増設する必要がある。また、メモリ101,102の出力はいずれか一方の1つの出力を第1のソースデータとし、他方の複数の出力を第2ないし第N(Nは2以上の整数)のソースデータとしてこれらを比較する必要がある。
【0051】
さらに、膨大なデータに対して一定の処理ルーチンを繰り返し実行する処理モジュールであれば、画像データ以外のデータに対しても、その処理に使用することが可能である。
【0053】
このように、請求項1の条件付きベクトル演算方法によれば、ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行に実行され、前記ソースデータ供給処理工程によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第1のステージと、前記ソースデータ供給処理によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第2のステージと、前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第3のステージとを有するパイプライン処理を備え、前記パイプライン処理を実行することによりベクトル演算処理により実行するための制御に加えて、前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含むようにしたので、条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることができ、条件付き演算をベクトル演算形式で処理することができる。このため、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタ等のハードウエアも不要であり、事前にフラグを算出することによるオーバーヘッドも生じない。
【0054】
また、請求項2の条件付きベクトル演算装置によれば、ベクトル演算命令の発行によって第1ないし第Nのソースデータ(Nは2以上の整数)の供給を開始するソースデータ供給手段と、前記ソースデータ供給手段より供給される第1ないし第Nのソースデータを一時保存する第1ないし第 N のレジスタと、前記第1ないし第Nのレジスタの出力を用いて演算を行う演算手段と、前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、前記第1ないし第Nの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、前記ソースデータ供給手段がソースデータを供給し前記第1ないし第Nのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第1ステージ、前記演算手段が前記第1ないし第Nのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第2ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第3ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第1ないし第Nの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えるようにしたので、条件付き演算を、条件判定と条件分岐演算のパイプライン・ステージとに分けることができ、条件付き演算をベクトル演算形式で処理することができる。このため、多数のデータを連続で処理した場合には繰り返しのルーチンが不要となり、処理性能が向上する。また、別途マスクレジスタ等のハードウエアも不要であり、事前にフラグを算出することによるオーバーヘッドも生じない。
【0055】
産業上の利用可能性
以上のように、本発明は、条件付演算命令を命令セット中に有するとともにベクトル演算を行うプロセッサやデータ処理装置において、条件付演算命令をベクトル演算形式で処理できるため、条件付演算命令のオーバーヘッドを軽減し、処理性能を向上するうえで有用である。
【図面の簡単な説明】
【図1】本発明の実施の形態1による条件付きベクトル演算装置の構成図であり、(a)は本願の請求項3に対応する構成を示す図であり、(b)は本発明の実施の形態1による条件付きベクトル演算装置のブロック構成を示す図である。
【図2】本発明の実施の形態1による処理のフローチャートを示す図である。
【図3】本発明の第1の実施の形態にかかる図2のフローチャートに示した処理を本発明の第1の実施の形態の条件付きベクトル演算装置を用いて処理した場合のタイミングチャートを示す図である。
【図4】従来の条件付き演算を含む処理のフローチャートを示す図である。
【図5】図1(b)における状態フラグ検出手段の構成例を示す図である。
【図6】図1(b)に示す本発明の実施の形態1による条件付きベクトル演算装置のブロック構成の他の例を示す図である。
Claims (2)
- ベクトル演算命令の発行によってデータの供給を開始するソースデータ供給処理工程と、これと並行して実行され、前記ソースデータ供給処理によって供給されるデータのうち所定のソースに供給されるデータについて逐次その状態を保持し、状態フラグとして出力する状態フラグ保持処理工程と、を有する第1のステージと、
前記ソースデータ供給処理工程によって供給されるデータを用いて演算を行い演算結果を出力する演算処理工程と、これと並行して実行され、前記状態フラグと前記ベクトル演算命令によって発行される条件との条件判断を行い、条件成立または不成立の情報を制御処理工程に提供する条件判定処理工程と、を有する第2のステージと、
前記演算処理工程による演算結果を順に格納する演算結果格納処理工程を有する第3のステージとを有するパイプライン処理を備え、
前記パイプライン処理を実行することによりベクトル演算処理を実行するための制御を行うとともに、
前記条件判定処理の出力する情報が条件成立のときには前記演算処理を実行し、条件不成立のときには前記演算処理の演算結果として前記ソースデータ供給処理工程によって供給されるデータのうち前記所定のソースに供給されるデータをそのまま出力するように制御を行う制御処理工程を含む、
ことを特徴とする条件付きベクトル演算方法。 - ベクトル演算命令の発行によって第1ないし第Nのソースデータ(Nは2以上の整数)の供給を開始するソースデータ供給手段と、
前記ソースデータ供給手段より供給される第1ないし第Nのソースデータを一時保存する第1ないし第Nのレジスタと、
前記第1ないし第Nのレジスタの出力を用いて演算を行う演算手段と、
前記演算手段の出力する演算結果を一時保存するパイプライン・レジスタと、
前記パイプライン・レジスタの出力を順次格納する演算結果格納手段と、
前記第1ないし第Nの中の所定のソースデータの性質を表わす状態フラグ情報を逐次保持する状態フラグ保持手段と、
前記状態フラグ保持手段の出力と前記ベクトル演算命令によって指定される条件情報より、前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力する条件判定手段と、
前記ソースデータ供給手段がソースデータを供給し前記第1ないし第Nのレジスタに格納するとともに、これと並行して前記状態フラグ保持手段が状態フラグ情報を保持し出力するまでを第1ステージ、前記演算手段が前記第1ないし第Nのレジスタの出力に対する演算処理結果を前記パイプライン・レジスタに出力するとともに、これと並行して前記条件判定手段が前記ベクトル演算命令の条件が成立か不成立かを示す情報を出力するまでを第2ステージ、前記パイプライン・レジスタの出力を前記演算結果格納手段に格納するまでを第3ステージとしたパイプライン処理により、前記ベクトル演算命令を実行するための制御信号を生成するとともに、
前記条件判定手段の出力する情報を受けて、条件不成立のときには前記演算手段の出力として前記第1ないし第Nの中の所定のソースデータの値をそのまま出力し、また条件成立のときには前記演算手段による演算結果を選択して出力するようなモード選択信号を生成する制御手段とを備えた、
ことを特徴とする条件付きベクトル演算装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35779698 | 1998-12-16 | ||
PCT/JP1999/007052 WO2000036527A1 (fr) | 1998-12-16 | 1999-12-15 | Methode d'operation conditionnelle de vecteur et dispositif correspondant |
Publications (1)
Publication Number | Publication Date |
---|---|
JP3702789B2 true JP3702789B2 (ja) | 2005-10-05 |
Family
ID=18455974
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000588702A Expired - Fee Related JP3702789B2 (ja) | 1998-12-16 | 1999-12-15 | 条件付きベクトル演算方法および条件付きベクトル演算装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7062633B1 (ja) |
EP (1) | EP1197875B1 (ja) |
JP (1) | JP3702789B2 (ja) |
CN (1) | CN100428223C (ja) |
DE (1) | DE69930544T2 (ja) |
WO (1) | WO2000036527A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9069547B2 (en) * | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
JP5240196B2 (ja) * | 2007-07-12 | 2013-07-17 | 富士通株式会社 | 計算装置、計算方法および計算プログラム |
US9501276B2 (en) * | 2012-12-31 | 2016-11-22 | Intel Corporation | Instructions and logic to vectorize conditional loops |
CN111651205B (zh) * | 2016-04-26 | 2023-11-17 | 中科寒武纪科技股份有限公司 | 一种用于执行向量内积运算的装置和方法 |
CN106775593B (zh) * | 2016-12-30 | 2019-12-31 | 智车优行科技(北京)有限公司 | 去除循环处理流程中条件判断语句的方法和装置、应用单元 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4128880A (en) * | 1976-06-30 | 1978-12-05 | Cray Research, Inc. | Computer vector register processing |
JPH0616287B2 (ja) * | 1982-09-29 | 1994-03-02 | 株式会社日立製作所 | マスク付きベクトル演算処理装置 |
JPH0634205B2 (ja) * | 1984-03-31 | 1994-05-02 | 株式会社東芝 | ベクトル演算処理装置 |
US4924422A (en) * | 1988-02-17 | 1990-05-08 | International Business Machines Corporation | Method and apparatus for modified carry-save determination of arithmetic/logic zero results |
US5247696A (en) * | 1991-01-17 | 1993-09-21 | Cray Research, Inc. | Method for compiling loops having recursive equations by detecting and correcting recurring data points before storing the result to memory |
JPH0685747B2 (ja) * | 1991-10-08 | 1994-11-02 | キロニー産業株式会社 | 排泄部洗浄器 |
AU7802194A (en) * | 1993-09-30 | 1995-04-18 | Apple Computer, Inc. | Continuous reference adaptation in a pattern recognition system |
JP3454393B2 (ja) | 1995-05-11 | 2003-10-06 | 株式会社日立製作所 | データ処理装置 |
-
1999
- 1999-12-15 US US09/868,048 patent/US7062633B1/en not_active Expired - Fee Related
- 1999-12-15 EP EP99959835A patent/EP1197875B1/en not_active Expired - Lifetime
- 1999-12-15 WO PCT/JP1999/007052 patent/WO2000036527A1/ja active IP Right Grant
- 1999-12-15 DE DE69930544T patent/DE69930544T2/de not_active Expired - Lifetime
- 1999-12-15 CN CNB998145904A patent/CN100428223C/zh not_active Expired - Fee Related
- 1999-12-15 JP JP2000588702A patent/JP3702789B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE69930544T2 (de) | 2007-01-25 |
EP1197875B1 (en) | 2006-03-22 |
CN1330787A (zh) | 2002-01-09 |
EP1197875A4 (en) | 2004-12-08 |
US7062633B1 (en) | 2006-06-13 |
WO2000036527A1 (fr) | 2000-06-22 |
DE69930544D1 (de) | 2006-05-11 |
CN100428223C (zh) | 2008-10-22 |
EP1197875A1 (en) | 2002-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0269980B1 (en) | Data processor for parallelly executing conflicting instructions | |
KR100681199B1 (ko) | 코어스 그레인 어레이에서의 인터럽트 처리 방법 및 장치 | |
KR20100132032A (ko) | 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법 | |
JP2008071130A (ja) | Simd型マイクロプロセッサ | |
US20100095091A1 (en) | Processor, Method and Computer Program | |
US9152418B2 (en) | Apparatus and method of exception handling for reconfigurable architecture | |
US7543014B2 (en) | Saturated arithmetic in a processing unit | |
JPH0581016A (ja) | プログラム実行制御方式 | |
US7080239B2 (en) | Loop control circuit and loop control method | |
JP2001027945A (ja) | Simd演算を実行するために標準macユニットを利用する浮動小数点ユニット | |
JP3702789B2 (ja) | 条件付きベクトル演算方法および条件付きベクトル演算装置 | |
JP2002055814A (ja) | 適切な発行先に命令を発行する命令発行装置 | |
US5590359A (en) | Method and apparatus for generating a status word in a pipelined processor | |
US6484256B1 (en) | Apparatus and method of branch prediction utilizing a comparison of a branch history table to an aliasing table | |
US20020078333A1 (en) | Resource efficient hardware loops | |
US20200356372A1 (en) | Early instruction execution with value prediction and local register file | |
JP3759729B2 (ja) | スペキュレーティブ・レジスタの調整 | |
CN111209039B (zh) | 指令处理方法及装置 | |
JP3310316B2 (ja) | 演算装置 | |
US20040260912A1 (en) | Arrangement and a method in processor technology | |
KR100924383B1 (ko) | 하드웨어/소프트웨어 통합 설계 기반의 스케줄링 시스템 및방법 | |
JP2002182904A (ja) | データ処理装置 | |
US20040128482A1 (en) | Eliminating register reads and writes in a scheduled instruction cache | |
JP2000305782A (ja) | 演算装置 | |
JP2001075778A (ja) | 演算装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050405 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050603 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050705 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050711 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090729 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090729 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100729 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110729 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110729 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120729 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120729 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130729 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |