(57)【特許請求の範囲】
【請求項１】
与えられた単調減少、あるいは単調増加の関数に対して、上記関数の値がある与えられた制限値よりも小さな、あるいは大きな値をとるような制約条件を満たす変数の最小値、あるいは最大値を求める、という問題の解を二分探索法で求めるために、ｎ段のステージ（ｎ：自然数）でパイプライン処理する信号処理装置において、
上記ステージのそれぞれは、
入力されたデータを、前段の上記ステージまでに決定した解を格納するヘッダと上記関数を求める際に用いるパラメータとに分離する分離手段と、
上記関数の関数値と上記制限値との大小関係に応じて上記分離手段により分離された上記ヘッダの内容を更新する更新手段と、
上記更新手段により更新された上記ヘッダと上記分離手段より分離された上記パラメータを多重化する多重化手段と、
上記多重化手段により多重化されたデータを出力する出力手段と
を備える信号処理装置。
【請求項２】
請求項１に記載の信号処理装置において、
上記分離手段により分離された上記パラメータを上記更新手段で要する処理時間分遅延させる遅延手段をさらに備える信号処理装置。
【請求項３】
与えられた単調減少、あるいは単調増加の関数に対して、上記関数の値がある与えられた制限値よりも小さな、あるいは大きな値をとるような制約条件を満たす変数の最小値、あるいは最大値を求める、という問題の解を二分探索法で求めるために、ｎ段のステージ（ｎ：自然数）でパイプライン処理する信号処理方法において、
上記ステージのそれぞれは、
入力されたデータを、前段の上記ステージまでに決定した解を格納するヘッダと上記関数を求める際に用いるパラメータとに分離する分離ステップと、
上記関数の関数値と上記制限値との大小関係に応じて上記分離ステップにより分離された上記ヘッダの内容を更新する更新ステップと、
上記更新ステップにより更新された上記ヘッダと上記分離ステップにより分離された上記パラメータを多重化する多重化ステップと、
上記多重化ステップにより多重化されたデータを出力する出力ステップと
を備える信号処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、二分探索法を実現するための信号処理装置および処理方法に関する。
【０００２】
【従来の技術】
ソフトウェアの世界において最適解を求めるアルゴリズムとして二分探索法と呼ばれる手法がある。従来はＩＣの集積度があまり高くできない等の要因により二分探索法をハードウェアで実現することは困難であった。しかし、昨今の半導体技術の急速な進歩にともないハードウェアでの実現の可能性が生じつつある。
【０００３】
先ず、二分探索法について説明する。いま、「与えられた単調関数にたいして、関数の値がある与えられた値よりも小さな（あるいは大きな）値をとるような条件を満たす変数の最小値（あるいは最大値）をもとめる」という問題を考える。この問題は、より実際的な例として、例えば、与えられた伝送路の伝送レート以下に、画像データを圧縮符号化（例えばＤＣＴおよび可変長符号化）して発生した符号化データの伝送レートを制限する、ビットリダクションにおける量子化器制御などがあてはまる。この例では、変数が量子化ステップ（あるいは量子化インデックス）であり、関数はその量子化ステップに対する符号長であり、条件が伝送路のレートを超えない、またはバッファメモリがあふれないようにするということである。また、関数のパラメータとして量子化されるデータがある。このような問題を解くための方法の一つとして二分探索法がある。
【０００４】
二分探索法では解の範囲を２つにわけ、条件を満足する方を選択し、さらにこれを２つに分け・・・という処理を繰り返すことにより解の範囲を狭めていき、最終的に解を求めるものである。例として図１に示す関数ｆ(x) においてｆ(x) の値が４５０（制限値）を超えない最小値ｘを求めることにする。この場合、解の範囲として０，１，・・・，１４，１５とする。二分探索法では以下のようにして解を求める。
【０００５】
ステップ１：まず、解が存在するであろう０から１５の中間であるｘ＝７のｆ（  ）の値を調べる。ｆ(7) ＝４７８であり、この関数は単調減少関数であるので、４５０以下になるｘの最小値は８以上１５以下であることが分かる。
【０００６】
ステップ２：次に解が存在するであろう８から１５の中間であるｘ＝１１のｆ（  ）を調べる。ｆ(11)＝３１４であるから４５０以下になるｘの最小値は８以上１１以下であることが分かる。
【０００７】
ステップ３：次に解が存在するであろう８から１１の中間であるｘ＝９のｆ（）を調べる。ｆ(9) ＝３８７であるから４５０以下になるｘの最小値は８以上９以下であることが分かる。
【０００８】
ステップ４：次に解が存在するであろう８と９の中でまだ調べていないｘ＝８のｆ（  ）を調べる。ｆ(8) ＝４３０であるから４５０以下という条件を満たしている。したがって関数ｆ(x) において４５０となるｘの最小値は８であることが分かる。
【０００９】
以上のようにして最適解を求めることができた。これにさらに一般性を持たせてみる。今、解の範囲を０以上２n −１以下とする。そして与えられた関数をｆ(x) とし、単調減少関数であるとする。そして条件として関数の値が与えられた制限値tgt を超えないような変数ｘの最小値を求めるものとする。このとき、図２のフローチャートで示されるアルゴリズムで解が求められる。
【００１０】
図２のフローチャートを説明する。ステップ１では、初期値として、２n −１を解（xtmp）、ｎをループ回数（ntmp）とする。次のステップ２では、ループ回数を−１し、次の決定のステップへ移る。ステップ３では、ntmp＜０ならば終了し、ntmp≧０ならば次のステップ４へ移る。ステップ４では、xtmp−２ntmpを解xtmpとし、決定のステップ５において、この解が制限値tgt と比較される。このステップ５において、ｆ（xtmp）≦tgt ならばステップ２に戻る。ｆ（xtmp）＞tgt ならば、次のステップ６において、xtmp＋２ntmpをxtmpとしてから、ステップ２に戻る。
【００１１】
いま、問題を「単調減少関数」「制限値tgt を超えないような変数ｘの最小値」という限定事項があったが、この限定事項の変更は、図２のフローチャートを少し変更するだけで対処できる。例えば、解の範囲を０以上２n −１以下とし、そして与えられた関数ｆ(x) が単調増加関数であるとする。そして条件として、関数の値が与えられた制限値tgt 以下でない最大値を求めるものとすれば、図３のフローチャートで示されるアルゴリズムで解が求められる。
【００１２】
図３のステップ１１において、解（xtmp）およびループ回数（ntmp）の初期値として、それぞれ０およびｎが設定される。ステップ１２、１３および１４は、図２におけるステップ２、３および４と同様である。そして、決定のステップ１５において、関数の値ｆ（xtmp）と制限値tgt が比較される。このステップ１５において、ｆ（xtmp）＞tgt ならばステップ２に戻る。ｆ（xtmp）≦tgt ならば、次のステップ１６において、xtmp−２ntmpをxtmpとしてから、ステップ１２に戻る。このように、問題の差異は基本的なアルゴリズムに大きく作用しないので、これ以降、先に挙げた方の問題を図２のアルゴリズムによって解くものとする。
【００１３】
このアルゴリズムをハードウェアで実現することについて考えてみる。例えば、図４のようにループ制御の形で実現することもできる。図４の回路の動作について説明する。制御回路２１は、全体の動作を制御する。レジスタ２２とシフト回路２３により、２ntmpが作られる。ループのたびにこの値はシフトされていく。レジスタ２５はxtmpが保存される。このレジスタの入力として、ループの始めでは初期値が、それ以外は一つ前のループで決まった値が入るように、セレクタ２４が切り換えられる。xtmp−２ntmpの演算が減算器２６で行われ、その値に対する関数の値を関数発生器２７で計算する。この関数値と制限値tgt を比較器２８で比較し、その結果に応じてセレクタ２９を制御して次のxtmpを求める。このループを２ntmpが０になるまで繰り返す。
【００１４】
【発明が解決しようとする課題】
関数発生器２７には、必要に応じてパラメータが印加されるが、ループ中同じパラメータを印加するために外部にメモリを持つ必要がある。このループ制御では問題を解くのにループ回数の分だけ時間を要するので、継続的に演算をするには、クロック周波数を上げる等の工夫が必要となる。また、制御も複雑なため設計が難しくなる、などの問題点がある。
【００１５】
従って、この発明の目的は、継続的な演算が可能で、回路設計が簡単で、回路規模の増大を抑えることが可能な信号処理装置および処理方法を提供することにある。
【００１６】
【課題を解決するための手段】
この発明は、与えられた単調減少、あるいは単調増加の関数に対して、関数の値がある与えられた制限値よりも小さな、あるいは大きな値をとるような制約条件を満たす変数の最小値、あるいは最大値を求める、という問題の解を二分探索法で求めるために、ｎ段のステージ（ｎ：自然数）でパイプライン処理する信号処理装置において、
ステージのそれぞれは、
入力されたデータを、前段のステージまでに決定した解を格納するヘッダと関数を求める際に用いるパラメータとに分離する分離手段と、
関数の関数値と制限値との大小関係に応じて分離手段により分離されたヘッダの内容を更新する更新手段と、
更新手段により更新されたヘッダと分離手段より分離されたパラメータを多重化する多重化手段と、
多重化手段により多重化されたデータを出力する出力手段と
を備える信号処理装置である。
【００１７】
【作用】
パイプライン結合によって、パラメータを印加するためのメモリを省略でき、クロック周波数が高くなる問題を回避することができる。さらに、パラメータデータと、前段までで決定した解とを共通のバスを介して伝送するので、バスの本数が増大することを防止でき、回路規模の削減を可能とできる。
【００１８】
【実施例】
以下、この発明の一実施例について図面を参照して説明する。この一実施例では、二分探索法を実現するためのハードウエアとして、パイプライン演算の構成を用いる。二分探索法では、常にループ回数が一定になるので、パイプライン演算の方が継続的な演算にも適し、また設計も非常に簡単になる。
【００１９】
二分探索法をパイプライン演算で実現した場合を図５に示す。パイプラインは、ｎ個のステージ３０1 、３０2 、・・・３０n-1 、３０n からなる。各ステージは、図６に示す構成を有している。パイプラインのｉステージは、図２のループ回数を示すntmpが（ｎ−ｉ）である時の処理となる。前ステージからのxtmpがレジスタ４１に供給され、レジスタ４１の出力と２n-i が減算回路４２に供給され、xtmp−２n-i が減算回路４２から得られる。
【００２０】
減算回路４２の出力が関数発生器４３に供給され、関数値が求められ、比較器４４において、関数値と制限値tgｔが比較される。この比較回路４４の出力によって制御されるセレクタ４５が設けられ、セレクタ４５によって、前ステージからのxtmpと減算回路４２の出力とが選択される。セレクタ４５からの決定されたxtmpが次のステージ（ｉ＋１）へ送られる。
【００２１】
図５におけるＦＩＦＯ３１1 〜３１n-1 は、それぞれのステージに印加されるパラメータの時間合わせのためのものである。このようなパイプラインにxtmpの初期値とパラメータを印加すると、ｎステージの出力として解を得ることができる。
【００２２】
上述のパイプライン構成において、実際上、関数を求める時に用いるパラメータがかなりのデータ量となることが多い問題が生じる。例えば、ビットリダクションの量子化コントロールでは数マクロブロック（１マクロブロックは、コンポーネントビデオデータの各コンポーネントのＤＣＴブロックを合わせたもの）のデータになることもある。また、ＩＣ内部ではバスのような多ビットの配線が走り回ると面積の無駄が多い。特にパイプライン結合では多数のバスを使うためかなり大きな無駄となる。
【００２３】
この発明の一実施例では、パイプラインにおけるかかる問題点を解決するものである。そのために、データ構造として、図７に示すように、パラメータのデータの並びの先頭にヘッダをつけ、このヘッダに現在までに決定した解を入れる。そして、データの先頭を表すsync（同期信号）をつける。このようなデータ構造を用いることにより、図５および図６の回路構成は、それぞれ図８および図９に示すものとなる。
【００２４】
図５の構成と同様に、ｎ段のステージ５０1 〜５０n からなるパイプラインが構成されるが、図８の構成では、パラメータのバスとxtmpのバスを共通にし、また、時間合わせ用のＦＩＦＯは、各ステージ内に取り込まれている。図９は、ｉ段のステージの構成を示し、図６の構成と同様に、前ステージからのxtmpがレジスタ５１に供給され、レジスタ５１の出力と２n-i が減算回路５２に供給され、xtmp−２n-i が減算回路５２から得られる。
【００２５】
減算回路５２の出力が関数発生器５３に供給され、関数値が求められ、比較器５４において、関数値と制限値tgｔが比較される。この比較器５４の出力によって制御されるセレクタ５５が設けられ、セレクタ５５によって、前ステージからのxtmpと減算回路５２の出力とが選択される。セレクタ５５からの決定されたxtmpが次のステージ（ｉ＋１）へ送られる。
【００２６】
そして、図６の構成に対して、パラメータとヘッダ(xtmp)を分けるためのセレクタ５６と、その逆の処理を行なうマルチプレクサ５９と、時間合わせ用のＦＩＦＯ５８と、これらを制御する制御回路５７とが追加されている。制御回路５７は、syncによってデータの始まりを検出し、データからヘッダとパラメータを取り出すタイミング等をつくり出している。
【００２７】
この発明が提案するところのパイプラインによる二分探索法は、１ステージで解の範囲を２分していたが、これを４分、８分しても構わない。このときには、図９中の減算回路５２、関数発生器５３、比較器５４を並列に構成することで実現できる。
【００２８】
上述の一実施例では、データの同期用にsync信号を用いていたが、データ内に特殊な同期用のsyncデータを多重化しても良い。
【００２９】
上述の一実施例では、解を０以上２n −１以下としたが必ずしもそうである必要はない。例えば解の範囲が１００以上３００以下の場合はｎ＝８として、xtmpの初期値を３５５とする。そして、xtmp＞300 のときは、ｘ＝３００とすれば良い。
【００３０】
【発明の効果】
この発明は、二分探索法をパイプライン処理によって実現することによって、ループ制御の構成と異なり、パラメータを供給するためのメモリを必要とせず、ループ回数の分だけ時間を要することを回避することができる。さらに、パイプライン結合において、パラメータと２n-1 とを共通のバスを介して伝送できるので、パラメータのような多ビットのバスの配線がＩＣ内部で走り回ることを防止できる。その結果、ＩＣ内の回路規模の削減を果たすことができる。
【図面の簡単な説明】
【図１】関数ｆ(x) と制限値tgt の関係の一例を示す略線図である。
【図２】単調減少関数時における二分探索法の一例のフローチャートである。
【図３】単調増加関数時における二分探索法の一例のフローチャートである。
【図４】ループ制御による二分探索法の実現回路の一例のブロック図である。
【図５】パイプライン結合による二分探索法の実現回路の一例のブロック図である。
【図６】パイプライン結合による二分探索法の実現回路のｉ番目ステージの一例のブロック図である。
【図７】この発明の一実施例におけるパラメータのデータ構造のブロック図である。
【図８】この発明の一実施例のブロック図である。
【図９】この発明の一実施例のｉ番目ステージの一例のブロック図である。
【符号の説明】
５２  減算回路
５３  関数発生器
５４  比較器
５５、５６、５９  セレクタ
５７  制御回路
【図１】
0003677788.tif 000002
【図２】
0003677788.tif 000003
【図３】
0003677788.tif 000004
【図４】
0003677788.tif 000005
【図５】
0003677788.tif 000006
【図６】
0003677788.tif 000007
【図７】
0003677788.tif 000008
【図８】
0003677788.tif 000009
【図９】
0003677788.tif 000010