(57)【要約】【課題】  【解決手段】  数値演算部におけるＡＬＵ部及びまたはデコード部に、第１の入力値の符号を反転する符号反転部１０１と、第２の入力値の符号を判定する符号判定部１０２と、前記符号反転部１０１の判定結果が正の場合、前記第１の入力値を選択して出力し、負の場合、前記符号反転手段より入力された値を選択して出力し、ゼロの場合、ゼロを出力する出力選択部１０３とを備えて構成される。【選択図】  図２
2005135090.tif 000002
【特許請求の範囲】
【請求項１】
フェッチされたデータをデコードするデコード部と、デコード結果に基づく演算を行う演算部とを備えた演算処理装置であって、
前記演算部または前記デコード部の少なくとも一方に、
第１の入力値の符号を反転する符号反転手段と、
第２の入力値の符号を判定する符号判定手段と、
前記符号反転手段の判定結果が正の場合、前記第１の入力値を選択して出力し、負の場合、前記符号反転手段より入力された値を選択して出力し、ゼロの場合、ゼロを出力する出力選択手段と、
を含むことを特徴とする演算処理装置。
【請求項２】
前記第１の入力値と第２の入力値が同一の値とされることにより、前記出力が前記同一の値の絶対値を出力することを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記第１の入力値と第２の入力値が同一の値とされ、それらの入力値に対する前記出力選択手段からの出力値と所定の値とを加算し、さらに、その加算結果が前記第１の入力値として入力され、さらに、前記同一の値が前記第２の入力値として入力されることにより、０を基準とする第１の入力値および第２の入力値の絶対値加算結果を出力することを特徴とする請求項１に記載の演算処理装置。
【請求項４】
前記出力選択手段からの出力値と、前記第２の入力値とを加算して第２の入力値を基準とする第１の入力値および第２の入力値の絶対値加算結果を出力する加算手段をさらに含むことを特徴とする請求項１に記載の演算処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置（プロセッサ）に係り、特にディジタルデータを高速で処理するＣＰＵ等に用いて好適な演算処理装置（プロセッサ）に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（central processing unit）等にて特殊な演算用途向け演算処理を高速で行う技術として、特開平５−３５４４５号公報にて開示されたものがある。
特開平５−３５４４５号公報には、絶対値判定に基づいて所定の演算を予め先行的に実施しておき、該複数の演算の中からひとつの演算を選んで実行する１サイクル命令を追加することで、演算時間を短縮する技術が開示されている。
【特許文献１】特開平５−３５４４５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、特開平５−３５４４５号公報に記載された技術は、ＭＰＥＧ（moving pictureexpert group）等、マルチメディアデータのディジタル信号処理にて頻繁に使用される対称値（０を中心として対称な値、或いは任意の数を中心として対称な値等）や、絶対値を高速且つ短いステップにて求めることができなかった。
そこで、本発明の課題は、ディジタル信号処理にて頻繁に使用される対称値や絶対値を高速、且つ短いステップで求めることが可能な演算処理装置（プロセッサ）を提供することにある。
【課題を解決するための手段】
【０００４】
以上の課題を解決するため、本発明の演算処理装置は、フェッチされたデータをデコードするデコード部と、デコード結果に基づく演算を行う演算部とを備えた演算処理装置であって、前記演算部または前記デコード部の少なくとも一方に、第１の入力値の符号を反転する符号反転手段（例えば、図２の符号反転部１０１）と、第２の入力値の符号を判定する符号判定手段（例えば、図２の符号判定部１０２）と、前記符号判定手段の判定結果が正の場合、前記第１の入力値を選択して出力し、負の場合、前記符号反転手段より入力された値を選択して出力し、ゼロの場合、ゼロを出力する出力選択手段（例えば、図２の出力選択部１０３）とを含んで構成されることを特徴とする。
【０００５】
このような構成により、従来、複数の演算処理（ステップ）が必要であったものを、１ステップ、クロック１サイクルにて処理（演算）することが可能となる。
また、本発明の演算処理装置は、前記第１の入力値と第２の入力値が同一の値とされることにより、前記出力が前記同一の値の絶対値を出力することを特徴とする。
これにより、従来、絶対値を求めるのに５命令必要であったものが、１命令にて実行でき、さらに、パイプラインの乱れを回避することができ、演算処理時間を短くすることができる。
【０００６】
また、本発明の演算処理装置は、前記第１の入力値と第２の入力値が同一の値とされ、それらの入力値に対する前記出力選択手段からの出力値と所定の値とを加算し、さらに、その加算結果が前記第１の入力値として入力され、さらに、前記同一の値が前記第２の入力値として入力されることにより、０を基準とする第１の入力値および第２の入力値の絶対値加算結果を出力することを特徴とする。
【０００７】
これにより、ディジタル信号処理にて頻出する処理（０を中心として対称な値を求める処理）を、短いアセンブラコードにて実現でき、条件分岐によるパイプラインの乱れを防止でき、演算処理時間を大幅に短くすることが可能となる。また、プログラムステップ数が少なくなること等により、画像処理やオーディオ処理等が早くなり、動作クロックを遅くすることが可能となり、消費電力を小さく抑えることができる。
【０００８】
また、本発明の演算処理装置は、前記出力選択手段からの出力値と、前記第２の入力値とを加算して第２の入力値を基準とする第１の入力値および第２の入力値の絶対値加算結果を出力する加算手段をさらに含むことを特徴とする。
これにより、ディジタル信号処理にて頻出する処理（任意の値を中心として対称な値を求める処理）を、短いアセンブラコードにて実現でき、条件分岐によるパイプラインの乱れを防止でき、演算処理時間を大幅に短くすることが可能となる。また、プログラムステップ数が少なくなること等により、演算処理が早くなり、動作クロックを遅くすることが可能となることから、消費電力を小さく抑えることが可能となる。
【発明を実施するための最良の形態】
【０００９】
以下、図を参照して本発明に係る演算処理装置の実施の形態について説明する。
（発明の実施の形態）
まず、構成を説明する。
図１は、本発明を適用した演算処理装置（プロセッサ）の構成を示したブロック図である。
【００１０】
図１において、演算処理装置２００は、フェッチ部２０１と、デコード部２０２と、ＡＬＵ（Arithmetic and Logical Unit）部２０３と、乗算部２０４と、加減算部２０５と、ロード部２０６と、ストア部２０７と、レジスタファイル部２０８と、プログラム制御部２０９とから構成される。
フェッチ部２０１は、図示しないメモリから命令コードをフェッチする。そして、フェッチ部２０１は、フェッチした命令コードを一時的に記憶した後、デコード部２０２に出力する。
【００１１】
デコード部２０２は、フェッチ部２０１から入力された命令コードをデコードし、デコード結果を、ＡＬＵ部２０３、乗算部２０４、加減算部２０５、ロード部２０６およびストア部２０７に出力する。また、デコード部２０２は、同様に、デコード結果をプログラム制御部２０９に出力する。
ＡＬＵ部２０３は、デコード部２０２から入力されたデコード結果が論理演算である場合に、デコード結果に基づいて、レジスタファイル部２０８から演算するデータを読み出す。そして、ＡＬＵ部２０３は、読み出したデータの論理演算を実行し、演算結果をレジスタファイル部２０８に出力する。また、ＡＬＵ部２０３には、ＣＲＥＶＷ演算部２１０（後述）が設けられており、デコード部２０２から入力されたデコード結果がＣＲＥＶＷ命令であった場合、ＣＲＥＶＷ演算部２１０にて所定の演算処理が実行され、演算結果をレジスタファイル部２０８に出力する。
【００１２】
乗算部２０４は、デコード部２０２から入力されたデコード結果が乗算である場合に、デコード結果に基づいて、レジスタファイル部２０８から乗算するデータを読み出す。そして、乗算部２０４は、読み出したデータの乗算を実行し、乗算結果をレジスタファイル部２０８に出力する。
加減算部２０５は、デコード部２０２から入力されたデコード結果が加算あるいは減算である場合に、デコード結果に基づいて、レジスタファイル部２０８から加算あるいは減算するデータを読み出す。そして、加減算部２０５は、読み出したデータの加算あるいは減算を実行し、加減算結果をレジスタファイル部２０８に出力する。
【００１３】
ロード部２０６は、デコード部２０２から入力されたデコード結果がロード命令である場合に、デコード結果に基づいて、ロード命令の対象となるアドレスをメモリに出力する。そして、ロード部２０６は、そのアドレスのデータがメモリから入力されると、入力されたデータをレジスタファイル部２０８に出力する。
ストア部２０７は、デコード部２０２から入力されたデコード結果がストア命令である場合に、デコード結果に基づいて、ストア命令の対象となるデータをレジスタファイル部２０８から読み出す。そして、ストア部２０７は、ストア命令の対象となるアドレスおよびレジスタファイル部２０８から読み出したデータをメモリに出力する。
【００１４】
レジスタファイル部２０８は、所定数のスカラレジスタおよびベクトルレジスタを備え、ＡＬＵ部２０３、乗算部２０４、加減算部２０５、ロード部２０６およびストア部２０７の演算対象となるデータを記憶する。また、レジスタファイル部２０８には、プログラム制御部２０９から、データの読み出しあるいは書き込みを行うための制御信号が入力される。
【００１５】
次に、本発明の要部であるＣＲＥＶＷ演算部２１０について説明する。
図２は、ＣＲＥＶＷ演算部２１０の構成を示したブロック図である。
図２において、ＣＲＥＶＷ演算部２１０は、符号反転部１０１と、符号判定部１０２と、出力選択部１０３とにより構成される。
ロード部２０６より供給されたロードデータｓｒｃ１は、符号反転部１０１及び出力選択部１０３の入力端ａに供給され、符号反転部１０１により符号反転されたロードデータｓｒｃ１は、出力選択部１０３の入力端ｂに供給される。
【００１６】
一方、ロード部２０６より供給されたロードデータｓｒｃ２は、符号判定部１０２に供給され、符号判定が為された後、該符号判定結果が、出力選択部１０３に供給される。
出力選択部１０３は、入力された符号判定結果が正の場合には、入力端ａより供給されたロードデータｓｒｃ１を選択して出力端ｃより出力して入力された符号判定結果が負の場合には、入力端ｂより供給されたデータ（符号反転された値）を選択し、出力端ｃより出力する。また、入力された符号判定結果が０の場合、出力端ｃより０を出力する。なお、この出力選択部１０３は、ＣＲＥＶＷ演算部全体で１サイクルで演算が実行されるという特徴を有する。
【００１７】
次に、本発明の要部であるこのＣＲＥＶＷ演算部２１０を用いて、いかに演算が高速化するかについて、以下に３つの例をとり説明する。なお、ＣＲＥＶＷ演算部２１０は、従来のアセンブラコードに以下のアセンブラコードを付加することで、従来のアセンブラコードと同様に使用可能であるものである。また、ＣＲＥＶＷ演算部２１０は、ＡＬＵ部２０３内に設けられるものとして説明したが、デコード部２０２内に設けるようにしても良い。
【００１８】
＜追加したアセンブラコード＞
ＣＲＥＶＷ  ％ｄｓｔ，％ｓｒｃ１，％ｓｒｃ２
説明：このアセンブラコードは、ソースレジスタ［ｓｒｃ２］が正の場合、ソースレジスタ［ｓｒｃ１］の内容をデスティネーションレジスタ［ｄｓｔ］に格納し、負の場合はソースレジスタ［ｓｒｃ１］の符号を反転し、結果をデスティネーションレジスタ［ｄｓｔ］に格納する。ソースレジスタ［ｓｒｃ２］が０の場合は、デスティネーションレジスタ［ｄｓｔ］に０を格納する。
（１命令で絶対値を求める場合）
先ず、１命令で絶対値を求める場合について説明する。
【００１９】
アセンブラコード、ＣＲＥＶＷを用いると、絶対値計算が
ＣＲＥＶＷ  ％ｙ，％ｘ，％ｘ
の１命令で実行できる。
図３は、１命令で絶対値を求める際における実行フローを示した図である。
入力ｓｒｃ１、ｓｒｃ２に、ｘ（同じ値）を指定すると、出力ｄｓｔは、｜ｘ｜となる。
【００２０】
これを従来のアセンブラコードで記述すると、以下の通りとなる。
ＡＤＤＩ  ％ｙ，％ｘ，＃０
ＢＧＥＺ  ％ｘ，ＬＡＢＥＬ
ＮＯＰ
ＳＵＢＩ  ％ｙ，＃０，％ｘ
ＬＡＢＥＬ；
以上のように、本発明では、従来、絶対値を求めるのに５命令必要であったものが、１命令にて実行できる。
【００２１】
また、従来のアセンブラコードで記述すると、“ＢＧＥＺ”命令のように、アセンブラコード中に条件分岐が含まれることになるが、これにより、プログラムカウンタの退避、復帰が発生し、パイプラインの乱れが発生することから、プログラムステップ以上のタイムロスが発生してしまうが、本発明ではこれを回避することができ、処理時間を短くすることができる。
（０を中心として対称な値を求める場合）
次に、０を中心として対称な値を求める場合、即ち、ｙ＝±（｜ｘ｜＋ｍ）を求める場合について説明する。
【００２２】
これは、ＤＣＴやバタフライ演算等でよく使われる、絶対値に対する加減算で、正の値ならさらに大きな、負の値ならさらに小さな値を求めるための演算（ｘが正のとき定数ｍを加算し、負のとき定数ｍを減算する）を高速化するものである。
図４は、０を中心として対称な値を求める際における実行フローを示した図である。
この場合のアセンブラコードは、
ＬＷ  ％ｘ                                      （１）
ＣＲＥＶＷ  ％ｙ，％ｘ，％ｘ                    （２）
ＡＤＤＩ  ％ｙ，％ｙ，＃ｍ                      （３）
ＣＲＥＶＷ  ％ｙ，％ｙ，％ｘ                    （４）
となる。
【００２３】
これは、（１）でメモリからｘの値をロードし、（２）でｘの絶対値を求め、（３）でｘの絶対値にｍを加算し、（４）で、ｘの絶対値にｍを加算した値の符号を決定する（ｘが正の時はプラスを、ｘが負のときはマイナス）ものである。
以上により、ディジタル信号処理にて頻出する処理を、短いアセンブラコードにて実現でき、条件分岐によるパイプラインの乱れを防止でき、演算処理時間を大幅に短くすることが可能となる。また、プログラムステップ数が少なくなること等により、画像処理やオーディオ処理等が早くなり、動作クロックを遅くすることが可能となり、消費電力を小さく抑えることができる。
（ｘを中心として対称な値を求める場合）
次に、ｘを中心として対称な値を求める場合、即ち、ｘが正，０，負である場合に応じて、ｙ＝ｘ＋ｍ，ｙ＝ｘ，ｙ＝ｘ−ｍを求める場合について説明する。
【００２４】
これも、ＤＣＴやバタフライ演算等でよく使われる、絶対値に対する加減算で、ｘが正の値ならさらに大きな、負の値ならさらに小さな値を求めるための演算（ｘが正のとき定数ｍを加算し、０のとき何もせず、負のとき定数ｍを減算する）を高速化するためのものである。
図５は、ｘを中心として対称な値を求める際における実行フローを示した図である。
【００２５】
この場合のアセンブラコードは、
ＬＷ  ％ｘ                                      （５）
ＬＩ  ％ａ，＃ｍ                                （６）
ＣＲＥＶＷ  ％ｙ，％ａ，％ｘ                    （７）
ＡＤＤ  ％ｙ，％ｙ，％ｘ                        （８）
となる。
【００２６】
これは、（５）でメモリからｘの値をロードし、（６）で定数ｍをアドレスａに格納し、（７）でａの符号を決定し（ｘが正の時はプラスを、ｘが０の時は０を、ｘが負のときはマイナス）（８）でｘとｍを加算する（ｘが正の時はｘ＋ｍ、ｘが負のときはｘ−ｍ、ｘが０の時は何もしない）ものである。
以上により、ディジタル信号処理にて頻出する処理を、短いアセンブラコードにて実現でき、条件分岐によるパイプラインの乱れを防止でき、演算処理時間を大幅に短くすることが可能となる。また、プログラムステップ数が少なくなること等により、画像処理やオーディオ処理等が早くなり、動作クロックを遅くすることが可能となり、消費電力を小さく抑えることができる。
【００２７】
以上述べたように、本発明によれば、ＭＰＥＧ等のマルチメディアデータのディジタル信号処理にて頻繁に使用される対称値（０を中心として対称な値、或いは任意の数を中心として対称な値等）や、絶対値を、高速且つ短いプログラムステップにて求めることができるので、携帯端末や電子カメラ等の情報処理機器を高速且つ低電力で駆動させることができる。
【図面の簡単な説明】
【００２８】
【図１】本発明を適用した演算処理装置の構成を示したブロック図である。
【図２】ＣＲＥＶＷ演算部２１０の構成を示したブロック図である。
【図３】１命令で絶対値を求める際における実行フローを示した図である。
【図４】０（ゼロ）を中心として対称な値を求める際における実行フローを示した図である。
【図５】ｘ（任意の値）を中心として対称な値を求める際における実行フローを示した図である。
【符号の説明】
【００２９】
１０１  符号反転部、１０２  符号判定部、１０３  出力選択部、２００  演算処理装置、２０１  フェッチ部、２０２  デコード部、２０３  ＡＬＵ部、２０４  乗算部、２０５  加減算部、２０６  ロード部、２０７  ストア部、２０８  レジスタファイル部、２０９  プログラム制御部、２１０  ＣＲＥＶＷ演算部
【図１】
2005135090.tif 000003
【図２】
2005135090.tif 000004
【図３】
2005135090.tif 000005
【図４】
2005135090.tif 000006
【図５】
2005135090.tif 000007