(57)【特許請求の範囲】
【請求項１】
第１及び第２のデータが入力し、前記第１のデータから前記第２のデータを減算した第１の演算結果と、前記第１の演算結果の符号を示す第１の符号フラグと、を出力する第１の演算器と、
第２及び第３のデータが入力し、前記第２のデータから前記第３のデータを減算した第２の演算結果と、前記第２の演算結果の符号を示す第２の符号フラグと、を出力する第２の演算器と、
第３及び第１のデータが入力し、前記第３のデータから前記第１のデータを減算した第３の演算結果と、前記第３の演算結果の符号を示す第３の符号フラグと、を出力する第３の演算器と、
前記第１乃至第３のデータが入力し、前記第１乃至第３のデータのいずれかを選択する第１および第２の選択回路と、
前記第１乃至第３の演算結果が入力し、前記第１乃至第３の演算結果のいずれかを選択する第３の選択回路と、
前記第１乃至第３の符号フラグが入力し、格納された第１の判定テーブルと前記第１乃至第３の符号フラグとを照合することにより前記第１乃至第３のデータの大小関係を判定し、判定結果に基づいて、前記第１の選択回路に前記第１乃至第３のデータの最大値を選択させ、前記第２の選択回路に前記第１乃至第３のデータの最小値を選択させ、前記第３の選択回路に、前記第１乃至第３の演算器のうちで前記第１乃至第３のデータの前記最大値が入力しないものから出力される前記第１乃至第３の演算結果のいずれかを選択させる判定器と、を備える、
演算回路。
【請求項２】
前記第３の選択回路には、前記第１乃至第３のデータが更に入力し、
前記第３の選択回路は、前記第１乃至第３のデータのいずれか、および、前記第１乃至第３の演算結果のいずれかを選択し、
前記判定器は、
格納された前記第１の判定テーブルとは異なる第２の判定テーブルと前記第１乃至第３の符号フラグとを照合することにより、前記第１乃至第３のデータの大小関係を判定し、
判定結果に基づいて、前記第１の選択回路に前記第１乃至第３のデータの前記最大値を選択させ、前記第２の選択回路に前記第１乃至第３のデータの前記最小値を選択させ、前記第３の選択回路に前記第１乃至第３のデータの前記最大値及び前記最小値以外の値を選択させることを特徴とする、
請求項１に記載の演算回路。
【請求項３】
前記判定器には、当該判定器の外部からの信号により、前記第１の判定テーブル又は前記第２の判定テーブルが択一的に設定されることを特徴とする、
請求項２に記載の演算回路。
【請求項４】
前記第１乃至第３のデータに対応する定数がそれぞれ格納された第１乃至第３のレジスタと、
前記第１乃至第３のレジスタに格納された定数のいずれかを選択する第４の選択回路と、を更に備え、
前記判定器は、格納された前記第１の判定テーブルとは異なる第３の判定テーブルと前記第１乃至第３の符号フラグとを照合することにより、前記第１乃至第３のデータの大小関係を判定し、
判定結果に基づいて、前記第１の選択回路に前記第１乃至第３のデータの前記最大値を選択させ、前記第２の選択回路に前記第１乃至第３のデータの前記最小値を選択させ、前記第３の選択回路に、前記第１乃至第３の演算器のうちで前記第１乃至第３のデータの前記最大値が入力しないものから出力される前記第１乃至第３の演算結果のいずれかを選択させ、前記第４の選択回路に、前記第１乃至第３のレジスタに格納された定数のうち、前記最大値である前記第１乃至第３のデータいずれかに対応する前記定数を選択させることを特徴とする、
請求項１に記載の演算回路。
【請求項５】
前記第１乃至第３のデータは、それぞれＲＧＢ色空間におけるＲ、Ｇ及びＢの値であることを特徴とする、
請求項１乃至４のいずれか一項に記載の演算回路。
【請求項６】
請求項１乃至５のいずれか一項に記載の前記演算回路を有することを特徴とする、
演算装置。
【請求項７】
前記第１乃至第３の演算器に前記第１乃至第３のデータを出力し、前記第１乃至第３の選択回路からの出力を受け取るレジスタファイルを備えることを特徴とする、
請求項６に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は演算回路及び演算装置に関し、特に並列演算処理を行う演算回路及び演算装置に関する。
【背景技術】
【０００２】
一般に、画像を構成する画素の色情報を表現する手段として、色空間が用いられる。ディスプレイなどに画像を表示する場合には、赤（Ｒｅｄ）、緑（Ｇｒｅｅｎ）及び青（Ｂｌｕｅ）による加法混色を表現するＲＧＢ方式が広く用いられている。一方、コンピューター上でイラストなどを描画するために描画色を選ぶ場合などでは、ユーザーである人間の感覚に親和性があるとの理由から、ＨＳＶ方式が用いられることが多い。ＨＳＶ方式では、色相（Ｈｕｅ）、彩度（Ｓａｔｕｒａｔｉｏｎ  ｖａｌｕｅ）及び明度（Ｖａｌｕｅ）の３要素を用いて色情報を表現する。
【０００３】
ＲＧＢ方式で表現された色情報（以下、ＲＧＢ色空間）とＨＳＶ方式で表現された色情報（以下、ＨＳＶ色空間）とを取り扱うには、２つの方式間の変換作業が必要となる。この変換作業は、画像処理プロセッサなどにより行われる。画像処理プロセッサのような一般的な命令セットプロセッサにおいては、２入力１出力命令が多く用いられている。また、演算性能を高めるために、ＶＬＩＷ（Ｖｅｒｙ  Ｌｏｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｗｏｒｄ：超長命令語）構成の命令語を利用するプロセッサも提案されている。
【０００４】
ＲＧＢ色空間からＨＳＶ色空間への変換を行う場合、色相Ｈ、彩度Ｓ及び明度Ｖは、以下のように表されることが知られている。なお、以下では、赤（Ｒ）、緑（Ｇ）及び青（Ｂ）の最小量を０、最大量を１とする。
【０００５】
色相Ｈは、Ｒ、Ｇ及びＢのいずれの値が最大であるかによって、算出式が異なる。まず、Ｒ、Ｇ及びＢのうち、Ｒの値が最大である場合には、色相Ｈは以下の式（１）で表される。但し、ＭＡＸは最大値であるＲの値を示す。また、ＭＩＮは、Ｒ、Ｇ及びＢの最小の値、すなわちＧ及びＢの小さい方の値を示す。
【数１】
0005763472.tif 000002
【０００６】
Ｒ、Ｇ及びＢのうち、Ｇの値が最大である場合には、色相Ｈは以下の式（２）で表される。但し、ＭＡＸは最大値であるＧの値を示す。また、ＭＩＮは、Ｒ、Ｇ及びＢの最小の値、すなわちＲ及びＢの小さい方の値を示す。
【数２】
0005763472.tif 000003
【０００７】
Ｒ、Ｇ及びＢのうち、Ｂの値が最大である場合には、色相Ｈは以下の式（３）で表される。但し、ＭＡＸは最大値であるＢの値を示す。また、ＭＩＮは、Ｒ、Ｇ及びＢの最小の値、すなわちＲ及びＧの小さい方の値を示す。
【数３】
0005763472.tif 000004
【０００８】
彩度Ｓは、以下の式（４）で表される。
【数４】
0005763472.tif 000005
【０００９】
彩度Ｖは、以下の式（５）で表される。
【数５】
0005763472.tif 000006
【００１０】
式（１）〜（５）に示すように、ＲＧＢ色空間からＨＳＶ色空間への変換作業では、色相Ｈを計算する際にＲ、Ｇ及びＢの３つの値を比較する条件分岐や、Ｒ、Ｇ及びＢの最大値ＭＡＸ及び最小値ＭＩＮを求める作業が必要である。また、最大値ＭＡＸ以外の２つの値の差分（式（１）〜（３）の右辺第１項の分数部の分子）を求める必要もある。
【００１１】
このような条件分岐や最大値及び最小値を算出するための演算プロセッサとして、例えばＶＬＩＷプロセッサが知られている。他にも、様々なプロセッサが提案されている。
【００１２】
例えば、複数のプロセッサエレメントによる並列処理を行うことにより、条件分岐を伴う処理を高速に行う手法が提案されている（特許文献１）。この手法では、分岐条件に応じて、選択器を用いてプロセッサエレメントの出力を選択することにより、最大値や最小値の算出などの条件分岐を伴う処理を実現している。
【００１３】
また、多くの命令サイクルにおいて、レジスタファイルの読み取りポートを無駄にしないため、多重化機能ユニット（プロセッサ）に対する命令を２以上の発行スロットに与える手法が提案されている（特許文献２）。これにより、多重化機能ユニットが用いられないサイクル中でも、他の機能ユニットが発行スロットを利用することができ、読み取りポートを効率的に利用することが可能となる。
【００１４】
さらに、演算処理によってアクセスすべきアドレスが変わる場合（すなわち、分岐処理）に対応可能な構成（特許文献３）や、比較対象データ内の最大値又は最小値を有するプロセッサを効率的かつ高速に検出できる手法（特許文献４）が提案されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００４−６２４０１号公報
【特許文献２】特表２００２−５２７８１２号公報
【特許文献３】特開２０１０−９７３５６号公報
【特許文献４】特開２０００−１６３３８４号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところが、発明者は、上述の手法には以下の問題点があることを見出した。通常、ＲＧＢ色空間からＨＳＶ色空間への変換処理では、Ｒ、Ｇ及びＢの３つの値の最大値、最小値及び最大値を除く２数の差分を計算する必要がある。例えば、３つの値ｒ１〜ｒ３の最大値を計算するには、以下の命令で示すように、２サイクルを要する。
第１サイクル  max r1, r2, r4
第２サイクル  max r4, r3, r4
第１サイクルでは、２つの値ｒ１及びｒ２のうちの最大値を、値ｒ４に格納する。第２サイクルでは、２つの値ｒ３及びｒ４のうちの最大値を、値ｒ４に格納する。つまり、第１のサイクルを実行した後に、値ｒ４を一時的にレジスタファイルに格納し、第２のサイクルで格納した値ｒ４を参照することとなる。これは、最小値を計算する場合も同様である。また、式（１）〜（３）による計算を行うためには、Ｒ、Ｇ及びＢの最大値が既知でなければいけないため、前もって最大値を算出しなければならない。
【００１７】
換言すれば、上述の手法では、３つ以上の値の大小関係を判定するには、２つの値の比較処理を繰り返して行う必要があり、比較処理の都度、比較結果をレジスタファイルなどの記憶手段に格納しなければならない。つまり、通常の手法では、３つ以上の値の比較演算を行うには複数のサイクルが必要であり、演算処理を高速化する上で妨げとなる。当然に、Ｒ、Ｇ及びＢの３つの値の比較演算を要するＲＧＢ色空間からＨＳＶ色空間への変換処理の高速化も妨げられる。
【課題を解決するための手段】
【００１８】
本発明の一態様である演算回路は、入力するデータに対して演算を行い、前記演算結果に基づいて生成したフラグ情報を出力する複数の演算器と、前記複数の演算器に入力する前記データのいずれかを選択する複数の選択回路と、前記複数の演算器からの前記フラグ情報が入力し、前記複数の選択回路のそれぞれの選択動作を制御する判定器と、を備えるものである。この演算回路では、演算回路に入力するデータの大小関係に基づいて選択回路の選択動作を制御し、選択回路に最大値、最小値及び３つの最大値以外の値の差分を選択させることができる。これにより、演算の途中経過においてデータをレジスタに格納することなく、単一のサイクルで最大値、最小値及び３つの最大値以外の値の差分を算出することができる。
【発明の効果】
【００１９】
本発明によれば、３つ以上の値の条件分岐処理を要する比較演算を高速に行うことができる演算回路及び演算装置を提供することができる。
【図面の簡単な説明】
【００２０】
【図１】実施の形態１にかかる演算装置１００の構成を模式的に示すブロック図である。
【図２】判定器４０に格納された判定テーブル４１を示す図である。
【図３】外部から判定テーブル４１を設定する場合の演算装置１００の構成を模式的に示すブロック図である。
【図４】判定テーブル４１の設定値を表示した図である。
【図５】実施の形態１にかかる判定情報設定命令ＳＥＴの値ｖａｌの構成例を示す図である。
【図６】判定情報設定命令ＳＥＴの値ｖａｌと判定テーブル４１の設定値との関係を示す図である。
【図７】実施の形態２にかかる演算装置２００の構成を模式的に示すブロック図である。
【図８】判定器４０に格納されたソート処理時の判定テーブル４２を示す図である。
【図９】外部から判定テーブル４２を設定する場合の演算装置２００の構成を模式的に示すブロック図である。
【図１０】実施の形態２にかかる判定情報設定命令ＳＥＴの値ｖａｌの構成例を示す図である。
【図１１】実施の形態３にかかる演算装置３００の構成を模式的に示すブロック図である。
【図１２】判定器４３に格納された判定テーブル４４を示す図である。
【発明を実施するための形態】
【００２１】
以下、図面を参照して本発明の実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【００２２】
実施の形態１
まず、実施の形態１にかかる演算装置１００について説明する。図１は、実施の形態１にかかる演算装置１００の構成を模式的に示すブロック図である。演算装置１００は、レジスタファイル１０１及び演算回路１０を有する。
【００２３】
レジスタファイル１０１は、演算回路１０の演算の用に供するデータや、演算回路１０による演算により算出されたデータが格納される。レジスタファイル１０１には、図１に示すように、データが入力するポートＩＮ１〜ＩＮ３が設けられる。また、レジスタファイル１０１は、演算回路１０にデータＤ０〜Ｄ２を出力する。なお、データＤ０〜Ｄ２は、それぞれ第１〜第３のデータに対応する。レジスタファイル１０１は、この他にもポートや出力するデータを有する場合が有るが、いずれのポートを使用するか、いずれのデータを出力するかは、例えば外部の制御回路（不図示）からの命令により指定することが可能である。
【００２４】
演算回路１０は、複数のスロット１１〜１３及び判定器４０を有する。スロット１１〜１３は、それぞれ加減算器ＣＡＬ１１〜ＣＡＬ１３及びセレクタＳＥＬ１１〜ＳＥＬ１３を有する。加減算器は演算器の一例であり、加減算器ＣＡＬ１１〜ＣＡＬ１３は、それぞれ第１〜第３の演算器に対応する。セレクタＳＥＬ１１〜ＳＥＬ１３は、３入力１出力のセレクタである。セレクタは、選択回路の一例であり、セレクタＳＥＬ１１〜ＳＥＬ１３は、それぞれ第１〜第３の選択回路に対応する。
【００２５】
スロット１１では、加減算器ＣＡＬ１１に、レジスタファイル１０１からデータＤ０及びＤ１が入力する。そして、加減算器ＣＡＬ１１は、セレクタＳＥＬ１３に演算結果Ｃ１を出力する。また、加減算器ＣＡＬ１１は、判定器４０に符号フラグＦ１を出力する。セレクタＳＥＬ１１の入力ポートｐｓ０〜ｐｓ２には、レジスタファイル１０１からデータＤ０〜Ｄ２がそれぞれ入力する。そして、セレクタＳＥＬ１１は、判定器４０からの制御信号ＣＯＮ１に基づき、レジスタファイル１０１のポートＩＮ１に、データＤ０〜Ｄ２のいずれかを最大値ＭＡＸとして出力する。
【００２６】
スロット１２では、加減算器ＣＡＬ１２に、レジスタファイル１０１からデータＤ１及びＤ２が入力する。そして、加減算器ＣＡＬ１２は、セレクタＳＥＬ１３に演算結果Ｃ２を出力する。また、加減算器ＣＡＬ１１は、判定器４０に符号フラグＦ２を出力する。セレクタＳＥＬ１２の入力ポートｐｓ０〜ｐｓ２には、レジスタファイル１０１からデータＤ０〜Ｄ２がそれぞれ入力する。そして、セレクタＳＥＬ１２は、判定器４０からの制御信号ＣＯＮ２に基づき、レジスタファイル１０１のポートＩＮ２に、データＤ０〜Ｄ２のいずれかを最小値ＭＩＮとして出力する。
【００２７】
スロット１３では、加減算器ＣＡＬ１３に、レジスタファイル１０１からデータＤ２及びＤ０が入力する。そして、加減算器ＣＡＬ１３は、セレクタＳＥＬ１３に演算結果Ｃ３を出力する。また、加減算器ＣＡＬ１３は、判定器４０に符号フラグＦ３を出力する。セレクタＳＥＬ１３の入力ポートｐｓ０〜ｐｓ２には、加減算器ＣＡＬ１１〜ＣＡＬ１３の演算結果Ｃ１〜Ｃ３がそれぞれ入力する。そして、セレクタＳＥＬ１３は、判定器４０からの制御信号ＣＯＮ３に基づき、レジスタファイル１０１のポートＩＮ３に、演算結果Ｃ１〜Ｃ３のいずれかを差分ＤＩＦＦとして出力する。
【００２８】
なお、符号フラグは、加減算器の演算結果に応じて出力されるフラグ情報であり、符号フラグＦ１〜Ｆ３は、それぞれ符号フラグに対応する。
【００２９】
判定器４０は、符号フラグＦ１〜Ｆ３に基づいて、格納されている判定テーブル４１を参照し、セレクタＳＥＬ１１〜ＳＥＬ１３に制御信号ＣＯＮ１〜ＣＯＮ３をそれぞれ出力する。なお、判定テーブル４１は、第１の判定テーブルに対応する。
【００３０】
続いて、演算装置１００の動作について説明する。演算装置１００では、演算回路１０がレジスタファイル１０１から、データＤ０〜Ｄ２を読み込む。そして、データＤ０〜Ｄ２の最大値ＭＡＸ、最小値ＭＩＮ及び最大値ＭＡＸを除く２数の差分ＤＩＦＦを検出する。そして、最大値ＭＡＸ、最小値ＭＩＮ及び最大値ＭＡＸを除く２数の差分ＤＩＦＦを、レジスタファイル１０１に出力する。データＤ０〜Ｄ２を、ＲＧＢ色空間における、Ｒ、Ｇ、Ｂのそれぞれに置き換えると、演算装置１００は、前述の式（１）〜（５）を用いたＲＧＢ色空間からＨＳＶ色空間への変換処理（以下、ＨＳＶ変換処理と称する）を行うことが可能となる。以下、演算装置１００のＨＳＶ変換処理を具体的に説明する。
【００３１】
スロット１１では、加減算器ＣＡＬ１１が、データＤ０の値からデータＤ１の値を減算し、減算結果を演算結果Ｃ１として出力する。また、加減算器ＣＡＬ１１は、減算結果に応じて、符号フラグＦ１を出力する。具体的には、加減算器ＣＡＬ１１は、演算結果Ｃ１の符号がマイナスである場合、すなわちＤ０＜Ｄ１である場合には、符号フラグＦ１として「１」を出力する。一方、演算結果Ｃ１の符号がマイナスではない場合、すなわちＤ０≧Ｄ１である場合には、符号フラグＦ１として「０」を出力する。
【００３２】
同様に、スロット１２では、加減算器ＣＡＬ１２が、データＤ１の値からデータＤ２の値を減算し、減算結果を演算結果Ｃ２として出力する。また、加減算器ＣＡＬ１２は、減算結果に応じて、符号フラグＦ２を出力する。具体的には、加減算器ＣＡＬ１２は、演算結果Ｃ２の符号がマイナスである場合、すなわちＤ１＜Ｄ２である場合には、符号フラグＦ２として「１」を出力する。一方、演算結果Ｃ２の符号がマイナスではない場合、すなわちＤ１≧Ｄ２である場合には、符号フラグＦ２として「０」を出力する。
【００３３】
同様に、スロット１３では、加減算器ＣＡＬ１３が、データＤ２の値からデータＤ０の値を減算し、減算結果を演算結果Ｃ３として出力する。また、加減算器ＣＡＬ１３は、減算結果に応じて、符号フラグＦ３を出力する。具体的には、加減算器ＣＡＬ１３は、演算結果Ｃ３の符号がマイナスである場合、すなわちＤ２＜Ｄ０である場合には、符号フラグＦ３として「１」を出力する。一方、演算結果Ｃ３の符号がマイナスではない場合、すなわちＤ２≧Ｄ０である場合には、符号フラグＦ３として「０」を出力する。
【００３４】
判定器４０は、符号フラグＦ１〜Ｆ３に基づいて、データＤ０〜Ｄ２の大小関係を判定する。そして、判定器４０は、データＤ０〜Ｄ２の大小関係に基づいて、制御信号ＣＯＮ１〜ＣＯＮ３を出力する。図２は、判定器４０に格納された判定テーブル４１を示す図である。
【００３５】
例えば、符号フラグＦ１〜Ｆ３が、それぞれ「０」、「０」、「１」であれば、命題「Ｄ０＜Ｄ１」及び「Ｄ１＜Ｄ２」は偽であり、命題「Ｄ２＜Ｄ０」は真である。この場合、データＤ０〜Ｄ２については、「Ｄ０≧Ｄ１≧Ｄ２」の大小関係が成立している。この場合、判定器４０は、制御信号ＣＯＮ１〜ＣＯＮ３として、それぞれ「０」、「２」、「１」を出力する。セレクタＳＥＬ１１〜ＳＥＬ１３のそれぞれは、制御信号ＣＯＮ１〜ＣＯＮ３に応じて、入力ポートｐｓ０〜ｐｓ２のいずれかを選択する。具体的には、セレクタＳＥＬ１１〜ＳＥＬ１３のそれぞれは、制御信号ＣＯＮ１〜ＣＯＮ３の値がｋ（ｋは０以上２以下の整数）である場合には、入力ポートｐｓｋを選択する。
【００３６】
セレクタＳＥＬ１１は、制御信号ＣＯＮ１の値「０」に応じて、入力ポートｐｓ０に入力するデータＤ０を選択する。これにより、データＤ０が最大値ＭＡＸとして特定される。つまり、セレクタＳＥＬ１１は、最大値選択セレクタとして機能する。そして、セレクタＳＥＬ１１は、最大値ＭＡＸであるデータＤ０を、レジスタファイル１０１のポートＩＮ１へ出力する。よって、レジスタファイル１０１のポートＩＮ１は、常に最大値ＭＡＸを受け取ることとなる。
【００３７】
セレクタＳＥＬ１２は、制御信号ＣＯＮ２の値「２」に応じて、入力ポートｐｓ２に入力するデータＤ２を選択する。これにより、データＤ２が最小値ＭＩＮとして特定される。つまり、セレクタＳＥＬ１２は、最小値選択セレクタとして機能する。そして、セレクタＳＥＬ１２は、最小値ＭＩＮであるデータＤ２を、レジスタファイル１０１のＩＮ２へ出力する。よって、レジスタファイル１０１のポートＩＮ２は、常に最小値ＭＩＮを受け取ることとなる。
【００３８】
セレクタＳＥＬ１３は、制御信号ＣＯＮ３の値「１」に応じて、入力ポートｐｓ１に入力する演算結果Ｃ２を選択する。これにより、演算結果Ｃ２、すなわち（Ｄ１−Ｄ２）が最大値ＭＡＸ（Ｄ０）を除く差分ＤＩＦＦとして特定される。換言すると、セレクタＳＥＬ１３は、制御信号ＣＯＮ３に応じて、最大値ＭＡＸ（Ｄ０）が入力しない加減算器ＣＡＬ１２の演算結果Ｃ２を、差分ＤＩＦＦとして選択する。つまり、セレクタＳＥＬ１３は、差分選択セレクタとして機能する。そして、セレクタＳＥＬ１３は、差分ＤＩＦＦである演算結果Ｃ２を、レジスタファイル１０１のポートＩＮ３へ出力する。よって、レジスタファイル１０１のポートＩＮ３は、常に差分ＤＩＦＦを受け取ることとなる。
【００３９】
以上では、符号フラグＦ１〜Ｆ３が、それぞれ「０」、「０」、「１」である場合を例としたが、符号フラグＦ１〜Ｆ３が他の場合でも、セレクタＳＥＬ１１〜ＳＥＬ１３は、最大値ＭＡＸ、最小値ＭＩＮ及び差分ＤＩＦＦをそれぞれ出力することは言うまでもない。
【００４０】
なお、演算装置１００を用いてＲＧＢ色空間をＨＳＶ色空間に変換する場合、演算装置１００に与える命令は、例えばＣ言語を用いると、以下の命令文で表される。
ＨＳＶ変換処理を表す命令文
vmax = (d0>d1)?((d0>d2)?d0:d2):((d1>d2)?d1:d2);
vmin = (d0<d1)?((d0<d2)?d0:d2):((d1<d2)?d1:d2);
if (vmax == d0){
vdiff = d1-d2;
}else if (vmax == d1){
Vdiff = d2-d0;
}else{
Vdiff = d0-d1;
【００４１】
上記の命令文において、ｖｍａｘは最大値ＭＡＸに、ｖｍｉｎは最小値ＭＩＮに、ｖｄｉｆｆは差分ＤＩＦＦに、ｄ０〜ｄ２はデータＤ０〜Ｄ２にそれぞれ対応する。第１文では、条件演算子を用いて、ｄ０〜ｄ２の最大値ｖｍａｘを算出する。第２文では、条件演算子を用いて、ｄ０〜ｄ２の最小値ｖｍｉｎを算出する。第３文以降では、ｉｆ文を用いて、ｄ０〜ｄ２のいずれが最大値であるかに応じて、差分ｖｄｉｆｆを計算する。
【００４２】
以上のように、演算回路１０は、判定器４０の判定結果を基に、最大値ＭＡＸ、最小値ＭＩＮ及び最大値ＭＡＸを除く２数の差分ＤＩＦＦを検出する。そして、最大値ＭＡＸ、最小値ＭＩＮ及び最大値ＭＡＸを除く２数の差分ＤＩＦＦを、レジスタファイル１０１の対応するポートＩＮ１〜ＩＮ３のそれぞれに出力することができる。つまり、演算回路１０は、レジスタファイル１０１からデータを読み込んでから、途中の演算結果をレジスタファイル１０１に一時的に格納することなく、１回のサイクルで最大値ＭＡＸ、最小値ＭＩＮを算出することができる。換言すれば、演算回路１０は、３つ以上の値を比較し、その最大値や最小値などを特定するために条件分岐処理を要する演算を、１サイクルで行うことができる。よって、複数のサイクルを経て３以上の値の最大値ＭＡＸや最小値ＭＩＮ及びを算出する場合に比べ、より高速な計算が可能である。従って、本構成によれば、３つ以上の値の条件分岐処理を要する比較演算を高速に行うことができる演算回路及び演算装置を実現することができる。
【００４３】
また、ＲＧＢ色空間からＨＳＶ色空間への変換処理では、Ｒ、Ｇ及びＢのいずれの値が最大であるかによって、式（１）〜（３）のいずれを用いるかが決定される。このため、条件分岐命令を用いた場合分けが必要となる。従って、通常の演算装置を用いると、条件分岐処理が必要となり、ＲＧＢ色空間からＨＳＶ色空間への変換処理の高速化が妨げられる。しかしながら、判定器４０は、符号フラグＦ１〜Ｆ３を参照することにより、データＤ０〜Ｄ２のいずれが最大値であるかを判定し、式（１）〜（３）のいずれを用いるかを知ることができる。従って、本構成によれば、ＲＧＢ色空間からＨＳＶ色空間への変換処理において条件分岐処理を高速に行うことができる演算回路及び演算装置をさらに実現することができる。
【００４４】
さらに、本構成によれば、上述のように式（１）〜（３）のいずれを用いるかを知ることができる。よって、判定器４０がセレクタＳＥＬ１３を制御することにより、ＲＧＢ色空間からＨＳＶ色空間への変換処理でいずれの式を用いる場合でも、適切な差分ＤＩＦＦを１サイクルで求めることが可能である。よって、演算装置１００及び演算回路１０によれば、ＲＧＢ色空間からＨＳＶ色空間への変換処理を高速かつ効率的に行うことが可能である。
【００４５】
なお、以上では、判定テーブル４１は、予め判定器４０に格納されていた。しかしながら、判定テーブル４１の内容は、外部から命令を与えることで設定することも可能である。以下では、外部からの命令により判定テーブル４１を設定する方法について説明する。図３は、外部から判定テーブル４１を設定する場合の演算装置１００の構成を模式的に示すブロック図である。
【００４６】
判定器４０には、演算装置１００の外部の制御回路１０２から、判定情報設定命令ＳＥＴが与えられる。判定情報設定命令ＳＥＴは、３２ｂｉｔの情報量を有する命令であり、判定テーブル４１を構成する制御信号ＣＯＮ１〜ＣＯＮ３の値を設定する命令である。図４は、判定テーブル４１の設定値を表示した図である。図４に示すように、制御信号ＣＯＮ１〜ＣＯＮ３には、設定値ｄ０１〜ｄ０３、ｄ１１〜ｄ１３、ｄ２１〜ｄ２３、ｄ３１〜ｄ３３、ｄ４１〜ｄ４３、ｄ５１〜ｄ５３、ｄ６１〜ｄ６３、ｄ７１〜ｄ７３が割り当てられる。但し、命題Ｄ０＜Ｄ１、Ｄ１＜Ｄ２及びＤ２＜Ｄ０が、全て真であることは有り得ないので、実際には、設定値ｄ０１〜ｄ０３、ｄ１１〜ｄ１３、ｄ２１〜ｄ２３、ｄ３１〜ｄ３３、ｄ４１〜ｄ４３、ｄ５１〜ｄ５３、ｄ６１〜ｄ６３に値を設定すればよい。
【００４７】
設定値のそれぞれは、３ｂｉｔの情報量が割り当てられる。従って３２ｂｉｔの判定情報設定命令ＳＥＴでは、一度に１０個の設定値を設定することが可能である。つまり、３２ｂｉｔの判定情報設定命令ＳＥＴを３回与えることにより、判定テーブル４１の設定値ｄ０１〜ｄ０３、ｄ１１〜ｄ１３、ｄ２１〜ｄ２３、ｄ３１〜ｄ３３、ｄ４１〜ｄ４３、ｄ５１〜ｄ５３、ｄ６１〜ｄ６３に具体的な値を設定することができる。この場合、判定情報設定命令ＳＥＴは、以下の命令文で表現することが可能である。
判定情報設定命令ＳＥＴを示す命令文
setfusion idx, val
【００４８】
ｉｄｘは、判定情報設定命令ＳＥＴの命令の順番を示し、判定情報設定命令ＳＥＴが３回与えられる場合には、０〜２のいずれかが割り充てられる。値ｖａｌは、設定値ｄ０１〜ｄ０３、ｄ１１〜ｄ１３、ｄ２１〜ｄ２３、ｄ３１〜ｄ３３、ｄ４１〜ｄ４３、ｄ５１〜ｄ５３、ｄ６１〜ｄ６３に割り当てる値を示す。以下では、値ｖａｌは、３２ｂｉｔ即値で表現するものとする。
【００４９】
図５は、実施の形態１にかかる判定情報設定命令ＳＥＴの値ｖａｌの構成例を示す図である。判定情報設定命令ＳＥＴの値ｖａｌは、例えば、２つの空きｂｉｔ５０と、それぞれ３ｂｉｔの値ｅ０〜ｅ９により構成される。図６は、判定情報設定命令ＳＥＴの値ｖａｌと判定テーブル４１の設定値との関係を示す図である。例えば、制御信号ＣＯＮ１〜ＣＯＮ３として、図２に示す値を設定する場合について検討する。
【００５０】
まず、ｉｄｘ＝０の場合、値ｅ０〜ｅ９は、それぞれ「０」、「２」、「１」、「０」、「２」、「１」、「２」、「１」、「０」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図５に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ００５１２０５０」となる。ｉｄｘ＝１の場合には、値ｅ０〜ｅ９は、それぞれ「０」、「１」、「１」、「１」、「０」、「２」、「１」、「２」、「２」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図５に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ０４８ａ０２４８」となる。ｉｄｘ＝２の場合には、値ｅ０〜ｅ９は、それぞれ「２」、「０」、「０」、「０」、「０」、「０」、「０」、「０」、「０」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図５に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ０００００００２」となる。この場合、判定情報設定命令ＳＥＴは、以下の命令文で表現することが可能である。
判定情報設定命令ＳＥＴを示す命令文
setfusion 0,  0x00512050
setfusion 1,  0x048a0248
setfusion 2,  0x00000002
【００５１】
以上のように、判定器４０に判定情報設定命令ＳＥＴを与えることで、判定テーブル４１内の値を具体的に設定することが可能である。
【００５２】
実施の形態２
次に、実施の形態２にかかる演算装置２００について説明する。演算装置２００は、実施の形態１にかかる演算装置１００で行うＨＳＶ変換処理に加えて、３つのデータＤ０〜Ｄ２のソート処理を行うことができる装置である。図７は、実施の形態２にかかる演算装置２００の構成を模式的に示すブロック図である。演算装置２００は、実施の形態１にかかる演算装置１００の構成転換例であり、具体的には演算回路の構成が異なる。演算装置２００は、レジスタファイル１０１及び演算回路２０を有する。レジスタファイル１０１については、実施の形態１と同様であるので、説明を省略する。
【００５３】
演算回路２０は、スロット１１、１２及び２３、判定器４０を有する。スロット１１では、加減算器ＣＡＬ１１は、セレクタＳＥＬ２３に演算結果Ｃ１を出力する。スロット１１のその他の構成は、実施の形態１と同様であるので説明を省略する。スロット１２では、加減算器ＣＡＬ１２は、セレクタＳＥＬ２３に演算結果Ｃ２を出力する。スロット１２のその他の構成は、実施の形態１と同様であるので説明を省略する。また、判定器４０は演算回路１０と同様であるので、説明を省略する。
【００５４】
スロット２３は、加減算器ＣＡＬ１３及びセレクタＳＥＬ２３を有する。セレクタＳＥＬ２３は、６入力１出力のセレクタであり、第３の選択回路に対応する。加減算器ＣＡＬ１３は、セレクタＳＥＬ２３に演算結果Ｃ３を出力する。セレクタＳＥＬ２３の入力ポートｐｓ０〜ｐｓ２には加減算器ＣＡＬ１１〜ＣＡＬ１３の演算結果Ｃ１〜Ｃ３がそれぞれ入力し、入力ポートｐｓ３〜ｐｓ５にはデータＤ０〜Ｄ２がそれぞれ入力する。そして、セレクタＳＥＬ２３は、判定器４０からの制御信号ＣＯＮ３に基づき、レジスタファイル１０１のポートＩＮ３に、データＤ０〜Ｄ２のいずれかを中間値ＭＩＤとして出力する。スロット２３のその他の構成は、スロット１３と同様であるので説明を省略する。
【００５５】
続いて、演算装置２００の動作について説明する。演算装置２００におけるＨＳＶ変換処理については実施の形態１にかかる演算装置１００と同様であるので説明を省略し、以下では、ソート処理について説明する。演算装置２００は、外部の制御回路１０２から判定器４０に入力する判定情報設定命令ＳＥＴで判定テーブルの設定値を変更することにより、ＨＳＶ変換処理及びソート処理のいずれの処理を行うかを切り替えることが可能である。以下、ソート処理について具体的に説明する。
【００５６】
スロット１１では、ＨＳＶ変換処理時と同様に、加減算器ＣＡＬ１１が、データＤ０の値からデータＤ１の値を減算し、減算結果を演算結果Ｃ１として出力する。また、加減算器ＣＡＬ１１は、減算結果に応じて、符号フラグＦ１を出力する。具体的には、加減算器ＣＡＬ１１は、演算結果Ｃ１の符号がマイナスである場合、すなわちＤ０＜Ｄ１である場合には、符号フラグＦ１として「１」を出力する。一方、演算結果Ｃ１の符号がマイナスではない場合、すなわちＤ０≧Ｄ１である場合には、符号フラグＦ１として「０」を出力する。
【００５７】
同様に、スロット１２では、ＨＳＶ変換処理時と同様に、加減算器ＣＡＬ１２が、データＤ１の値からデータＤ２の値を減算し、減算結果を演算結果Ｃ２として出力する。また、加減算器ＣＡＬ１２は、減算結果に応じて、符号フラグＦ２を出力する。具体的には、加減算器ＣＡＬ１２は、演算結果Ｃ２の符号がマイナスである場合、すなわちＤ１＜Ｄ２である場合には、符号フラグＦ２として「１」を出力する。一方、演算結果Ｃ２の符号がマイナスではない場合、すなわちＤ１≧Ｄ２である場合には、符号フラグＦ２として「０」を出力する。
【００５８】
同様に、スロット２３では、ＨＳＶ変換処理時と同様に、加減算器ＣＡＬ１３が、データＤ２の値からデータＤ０の値を減算し、減算結果を演算結果Ｃ３として出力する。また、加減算器ＣＡＬ１３は、減算結果に応じて、符号フラグＦ３を出力する。具体的には、加減算器ＣＡＬ１３は、演算結果Ｃ３の符号がマイナスである場合、すなわちＤ２＜Ｄ０である場合には、符号フラグＦ３として「１」を出力する。一方、演算結果Ｃ３の符号がマイナスではない場合、すなわちＤ２≧Ｄ０である場合には、符号フラグＦ３として「０」を出力する。
【００５９】
判定器４０は、符号フラグＦ１〜Ｆ３に基づいて、データＤ０〜Ｄ２の大小関係を判定する。そして、判定器４０は、データＤ０〜Ｄ２の大小関係に基づいて、制御信号ＣＯＮ１〜ＣＯＮ３を出力する。図８は、判定器４０に格納されたソート処理時の判定テーブル４２を示す図である。なお、判定テーブル４２は、第２の判定テーブルに対応する。
【００６０】
例えば、符号フラグＦ１〜Ｆ３が、それぞれ「０」、「０」、「１」であれば、命題「Ｄ０＜Ｄ１」及び「Ｄ１＜Ｄ２」は偽であり、命題「Ｄ２＜Ｄ０」は真である。この場合、データＤ０〜Ｄ２については、「Ｄ０≧Ｄ１≧Ｄ２」の大小関係が成立している。この場合、判定器４０は、制御信号ＣＯＮ１〜ＣＯＮ３として、それぞれ「０」、「２」、「４」を出力する。セレクタＳＥＬ１１及びＳＥＬ１２のそれぞれは、制御信号ＣＯＮ１及びＣＯＮ２に応じて、入力ポートｐｓ０〜ｐｓ２のいずれかを選択する。セレクタＳＥＬ２３は、制御信号ＣＯＮ３に応じて、入力ポートｐｓ０〜ｐｓ５のいずれかを選択する。具体的には、セレクタＳＥＬ１１及びＳＥＬ１２のそれぞれは、制御信号ＣＯＮ１及びＣＯＮ２の値がｋ（ｋは０以上２以下の整数）である場合には、入力ポートｐｓｋを選択する。セレクタＳＥＬ２３は、制御信号ＣＯＮ３の値がｊ（ｊは０以上５以下の整数）である場合には、入力ポートｐｓｊを選択する。
【００６１】
セレクタＳＥＬ１１は、ＨＳＶ変換処理時と同様に、制御信号ＣＯＮ１の値「０」に応じて、入力ポートｐｓ０に入力するデータＤ０を選択する。これにより、データＤ０が最大値ＭＡＸとして特定される。つまり、セレクタＳＥＬ１１は、最大値選択セレクタとして機能する。そして、セレクタＳＥＬ１１は、最大値ＭＡＸであるデータＤ０を、レジスタファイル１０１のポートＩＮ１へ出力する。よって、レジスタファイル１０１のポートＩＮ１は、常に最大値ＭＡＸを受け取ることとなる。
【００６２】
セレクタＳＥＬ１２は、ＨＳＶ変換処理時と同様に、制御信号ＣＯＮ２の値「２」に応じて、入力ポートｐｓ２に入力するデータＤ２を選択する。これにより、データＤ２が最小値ＭＩＮとして特定される。つまり、セレクタＳＥＬ１２は、最小値選択セレクタとして機能する。そして、セレクタＳＥＬ１２は、最小値ＭＩＮであるデータＤ２を、レジスタファイル１０１のＩＮ２へ出力する。よって、レジスタファイル１０１のポートＩＮ２は、常に最小値ＭＩＮを受け取ることとなる。
【００６３】
セレクタＳＥＬ２３は、制御信号ＣＯＮ３の値「４」に応じて、入力ポートｐｓ４に入力するデータＤ１を選択する。これにより、データＤ１が中間値ＭＩＤとして特定される。つまり、セレクタＳＥＬ２３は、中間値選択セレクタとして機能する。そして、セレクタＳＥＬ２３は、中間値ＭＩＤであるデータＤ１を、レジスタファイル１０１のポートＩＮ３へ出力する。よって、レジスタファイル１０１のポートＩＮ３は、常に中間値ＭＩＤを受け取ることとなる。
【００６４】
以上では、符号フラグＦ１〜Ｆ３が、それぞれ「０」、「０」、「１」である場合を例としたが、符号フラグＦ１〜Ｆ３が他の場合でも、セレクタＳＥＬ１１、ＳＥＬ１２及びＳＥＬ２３は、最大値ＭＡＸ、最小値ＭＩＮ及び中間値ＭＩＤをそれぞれ出力することは言うまでもない。
【００６５】
続いて、ソート処理用の判定テーブル４２を設定する方法について説明する。図９は、外部から判定テーブル４２を設定する場合の演算装置２００の構成を模式的に示すブロック図である。演算装置２００では、判定情報設定命令ＳＥＴにより、以下に示す要領で、判定テーブル４１を判定テーブル４２に置換することが可能である。なお、同様の要領で、判定テーブル４２を判定テーブル４１に置換することが可能であることは、言うまでもない。
【００６６】
判定器４０には、演算装置２００の外部の制御回路１０２から、判定情報設定命令ＳＥＴが与えられる。判定テーブル４２の設定値については、図４を用いて既述した判定テーブル４１と同様であるため説明を省略する。また、判定情報設定命令ＳＥＴの値ｖａｌの構成については、図５を用いて既述したため説明を省略する。判定情報設定命令ＳＥＴの値ｖａｌと判定テーブル４２の設定値との関係についても、図６を用いて既述したため説明を省略する。以下では、例えば、制御信号ＣＯＮ１〜ＣＯＮ３として、図８に示す値を設定する場合について検討する。図１０は、実施の形態２にかかる判定情報設定命令ＳＥＴの値ｖａｌの構成例を示す図である。
【００６７】
まず、ｉｄｘ＝０の場合、値ｅ０〜ｅ９は、それぞれ「０」、「２」、「４」、「０」、「２」、「４」、「２」、「１」、「３」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図１０に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ０６５４２１１０」となる。ｉｄｘ＝１の場合には、値ｅ０〜ｅ９は、それぞれ「０」、「１」、「５」、「１」、「０」、「５」、「１」、「２」、「３」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図１１に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ０６８ｄ０３４８」となる。ｉｄｘ＝２の場合には、値ｅ０〜ｅ９は、それぞれ「２」、「０」、「４」、「０」、「０」、「０」、「０」、「０」、「０」、「０」となる。よって、判定情報設定命令ＳＥＴの値ｖａｌは、２進数表示では、図１１に示す値となる。これを１６進数で表される３２ｂｉｔ即値に変換すると、「０ｘ０００００１０２」となる。この場合、判定情報設定命令ＳＥＴは、以下の命令文で表現することが可能である。
判定情報設定命令ＳＥＴを示す命令文
setfusion 0,  0x06542110
setfusion 1,  0x068d0348
setfusion 2,  0x00000102
【００６８】
以上のように、演算回路２０は、判定器４０の判定結果を基に、最大値ＭＡＸ、最小値ＭＩＮ及び中間値ＭＩＤを検出する。そして、最大値ＭＡＸ、最小値ＭＩＮ及び中間値ＭＩＤを、レジスタファイル１０１の対応するポートＩＮ１〜ＩＮ３のそれぞれに出力することができる。よって、演算回路２０は、ＨＳＶ変換処理のみならず、レジスタファイル１０１から読み込んだデータＤ０〜Ｄ２の大小関係を判定し、値をソートすることが可能である。換言すれば、演算回路１０は、３つ以上の値を比較し、その最大値や最小値などを特定するために条件分岐処理を要する演算、具体的にはソート処理を１サイクルで行うことができる。従って、本構成によれば、３つ以上の値の条件分岐処理を要する比較演算を高速に行うことができる演算回路及び演算装置を実現することができる。さらに、ソート処理が可能となったことで、演算装置１００及び演算回路１０よりも高機能かつ汎用性に優れる演算装置２００及び演算回路２０を提供することができる。
【００６９】
また、演算回路２０は、レジスタファイル１０１からデータを読み込んでから、途中の演算結果をレジスタファイル１０１に一時的に格納することなく、１回のサイクルで最大値ＭＡＸ、最小値ＭＩＮ及び中間値ＭＩＤを求めることが可能である。従って、演算回路２０は、ソート処理を高速に行うことが可能である。
【００７０】
実施の形態３
次に、実施の形態３にかかる演算装置３００について説明する。演算装置３００は、実施の形態１にかかる演算装置１００で行うＨＳＶ変換処理に加えて、ＲＧＢ色空間からＨＳＶ色空間への変換で用いる定数を同時に指定することができる装置である。図１１は、実施の形態３にかかる演算装置３００の構成を模式的に示すブロック図である。演算装置３００は、実施の形態１にかかる演算装置１００の構成転換例であり、具体的には演算回路の構成が異なる。演算装置３００は、レジスタファイル１０１及び演算回路３０を有する。レジスタファイル１０１については、ポートＩＮ４が追加された他は、実施の形態１と同様であるので説明を省略する。演算回路３０は、スロット１１〜１３及び３４、判定器４３を有する。スロット１１〜１３は、演算回路１０と同様であるので、説明を省略する。
【００７１】
スロット３４は、定数レジスタ３４１〜３４３、セレクタＳＥＬ３４を有する。セレクタＳＥＬ３４は、３入力１出力のセレクタであり、第４の選択回路に対応する。セレクタＳＥＬ３４の入力ポートｐｓ０〜ｐｓ２は、定数レジスタ３４１〜３４３から、定数データＣＤ０〜ＣＤ２がそれぞれ入力する。そして、セレクタＳＥＬ３４は、判定器４３からの制御信号ＣＯＮ４に基づき、レジスタファイル１０１のポートＩＮ４に、定数データＣＤ０〜ＣＤ２のいずれかを定数ＣＯＮＳＴとして出力する。
【００７２】
判定器４３は、符号フラグＦ１〜Ｆ３に基づいて、格納されている判定テーブル４３を参照し、セレクタＳＥＬ１１〜ＳＥＬ１３に制御信号ＣＯＮ１〜ＣＯＮ３をそれぞれ出力し、スロット３４のセレクタＳＥＬ３４に制御信号ＣＯＮ４を出力する。なお、判定テーブル４３は、第３の判定テーブルに対応する。
【００７３】
続いて、演算装置３００の動作について説明する。演算装置３００のうち、最大値ＭＡＸ、最小値ＭＩＮ及び差分ＤＩＦＦの算出を行う上述のＨＳＶ変換処理については、実施の形態１にかかる演算装置１００と同様であるので、説明を省略する。よって、以下では、定数ＣＯＮＳＴの算出方法について説明する。
【００７４】
データＤ０〜Ｄ２を、ＲＧＢ色空間における、Ｒ、Ｇ、Ｂのそれぞれに置き換えると、演算装置３００は、前述の式（１）〜（５）中のＭＡＸ、ＭＩＮ及び差分だけでなく、さらに式（１）〜（３）中の定数の値を算出することが可能である。ここで、定数とは、式（１）〜（３）の右辺第２項の値を意味し、式（１）における「０」、式（２）における「１２０」、式（３）における「２４０」を指す。
【００７５】
判定器４３は、符号フラグＦ１〜Ｆ３に基づいて、データＤ０〜Ｄ２の大小関係を判定する。そして、判定器４３は、データＤ０〜Ｄ２の大小関係に基づいて、制御信号ＣＯＮ１〜ＣＯＮ４を出力する。図１２は、判定器４３に格納された判定テーブル４４を示す図である。
【００７６】
例えば、符号フラグＦ１〜Ｆ３が、それぞれ「０」、「０」、「１」であれば、命題「Ｄ０＜Ｄ１」及び「Ｄ１＜Ｄ２」は偽であり、命題「Ｄ２＜Ｄ０」は真である。この場合、データＤ０〜Ｄ２については、「Ｄ０≧Ｄ１≧Ｄ２」の大小関係が成立している。この場合、判定器４３は、制御信号ＣＯＮ１〜ＣＯＮ４として、それぞれ「０」、「２」、「１」、「０」を出力する。
【００７７】
セレクタＳＥＬ３４は、制御信号ＣＯＮ４に応じて、入力ポートｐｓ０〜ｐｓ２のいずれかを選択する。具体的には、セレクタＳＥＬ３４は、制御信号ＣＯＮ４の値がｋ（ｋは０以上２以下の整数）である場合には、入力ポートｐｓｋを選択する。上述のように、制御信号ＣＯＮ４は「０」であるので、セレクタＳＥＬ３４は、入力ポートｐｓ０を選択する。セレクタＳＥＬ３４は、定数データＣＤ０を、定数ＣＯＮＳＴとして出力する。
【００７８】
このとき、データＤ０〜Ｄ２がＲＧＢ色空間のＲ、Ｇ及びＢにそれぞれ対応すると考えると、定数データＣＤ０〜ＣＤ２の値は、それぞれ「０」、「１２０」、「２４０」である。上述の例では、データＤ０が最大であるので、式（１）を用いた計算が行われる。従って、セレクタＳＥＬ３４は、式（１）の定数部分を示す定数データＣＤ０を、定数ＣＯＮＳＴとして選択する。同様に、Ｇ又はＢ、すなわちデータＤ１又はＤ２が最大である場合にも、判定器４３が判定テーブル４４を用いて判定を行うことにより、適切な定数を算出することが可能である。
【００７９】
なお、演算装置３００を用いてＨＳＶ変換処理及び定数の算出処理を行う場合、演算装置３００に与える命令は、例えばＣ言語を用いると、以下の命令文で表される。
ＨＳＶ変換処理及び定数の演算処理を表す命令文
vmax=(d0>d1)?((d0>d2)?d0:d2):((d1>d2)?d1:d2);
vmin = (d0<d1)?((d0<d2)?d0:d2):((d1<d2)?d1:d2);
if (vmax == d0){
vdiff = d1-d2;
vconst=0;
}else if (vmax == d1){
Vdiff = d2-d0;
vconst=120;
}else{
Vdiff = d0-d1;
vconst=240;
H  = (vdiff*60)/(vmax-vmin)+vconst
【００８０】
上記の命令文において、ｖｍａｘは最大値ＭＡＸに、ｖｍｉｎは最小値ＭＩＮに、ｖｄｉｆｆは差分ＤＩＦＦに、ｃｏｎｓｔは定数ＣＯＮＳＴに、ｄ０〜ｄ２はデータＤ０〜Ｄ２にそれぞれ対応する。第１文では、条件演算子を用いて、ｄ０〜ｄ２の最大値ｖｍａｘを算出する。第２文では、条件演算子を用いて、ｄ０〜ｄ２の最小値ｖｍｉｎを算出する。第３文以降では、ｉｆ文を用いて、ｄ０〜ｄ２のいずれが最大値であるかに応じて差分ｖｄｉｆｆを計算するとともに、式（１）〜（３）における定数の値を特定する。
【００８１】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、実施の形態３では、データＤ０〜Ｄ２のソート処理を行う例について説明したが、３つのレジスタに演算結果Ｃ１〜Ｃ３を入力させ、演算結果Ｃ１〜Ｃ３のソート処理を行う構成とすることも可能である。
【００８２】
図３及び図９では、制御回路１０２は演算装置１００及び２００の内部に設けられているが、演算装置１００及び２００の外部に設けることも可能である。
【００８３】
実施の形態２では、判定テーブル４１は、判定情報設定命令ＳＥＴにより書き換えられるが、これは例示に過ぎない。例えば、判定器４０に、ＨＳＶ変換処理用の判定テーブルとソート処理用の判定テーブルを予め格納しておき、制御回路からの選択信号により、用いる判定テーブルを指定することも可能である。
【００８４】
上述の実施の形態における判定情報設定命令ＳＥＴの構成はあくまで例示である。従って、判定情報設定命令ＳＥＴの値ｖａｌでの値ｅ０〜ｅ９は、別の順序で配置することも可能である。また、空きビットの位置も、別の位置とすることも可能である。さらに、判定テーブルの設定と値ｅ０〜ｅ９との対応関係も別の関係とすることもできる。なお、判定情報設定命令ＳＥＴの値ｖａｌを１６進法を用いて表現したが、他の進法を用いて表現してもよい。
【符号の説明】
【００８５】
１１〜１３、２３、３４  スロット
３４１〜３４３  定数レジスタ
１０、２０、３０  演算回路
４０、４３  判定器
４１、４２、４４  判定テーブル
１００、２００、３００  演算装置
１０１  レジスタファイル
１０２  制御回路
Ｃ１〜Ｃ３  演算結果
ＣＡＬ１１〜ＣＡＬ１３  加減算器
ＣＤ０  定数データ
ＣＤ０〜ＣＤ２  定数データ
ＣＯＮ１〜ＣＯＮ４  制御信号
ＣＯＮＳＴ  定数
Ｄ０〜Ｄ２  データ
ＤＩＦＦ  差分
Ｆ１〜Ｆ３  符号フラグ
ＩＮ１〜ＩＮ４  ポート
ＭＡＸ  最大値
ＭＩＤ  中間値
ＭＩＮ  最小値
ｐｓ０〜ｐｓ５  入力ポート
ＳＥＬ１１〜ＳＥＬ１３、ＳＥＬ２３、ＳＥＬ３４  セレクタ
ＳＥＴ  判定情報設定命令
【図１】
0005763472.tif 000007
【図２】
0005763472.tif 000008
【図３】
0005763472.tif 000009
【図４】
0005763472.tif 000010
【図５】
0005763472.tif 000011
【図６】
0005763472.tif 000012
【図７】
0005763472.tif 000013
【図８】
0005763472.tif 000014
【図９】
0005763472.tif 000015
【図１０】
0005763472.tif 000016
【図１１】
0005763472.tif 000017
【図１２】
0005763472.tif 000018