(57)【要約】【課題】処理時間を軽減可能なデータ比較回路及びデータ比較方法を提供すること。【解決手段】本発明にかかるデータ比較回路１は、比較器１１と、データ選択部１２と、最大値算出部１３と、を備える。比較器１１は、複数のデータの各々の上位ビットの値と第１の閾値とを比較する。データ選択部１２は、上位ビットの値が第１の閾値以上であるデータを、複数のデータの中から選択する。最大値算出部１３は、データ選択部１２により選択されたデータの中から最大値を算出する。【選択図】図１
2012146229.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータの各々の上位ビットの値と第１の閾値とを比較する比較手段と、
前記上位ビットの値が前記第１の閾値以上であるデータを、前記複数のデータの中から選択するデータ選択手段と、
前記データ選択手段により選択された前記データの中から最大値を算出する最大値算出手段と、
を備えるデータ比較回路。
【請求項２】
前記比較手段は、前記複数のデータの前記各々の上位ビットの値と前記第１の閾値及び第２の閾値とを比較し、
前記データ選択手段は、前記上位ビットの値が前記第１の閾値以上、かつ、前記第２の閾値以下であるデータを、前記複数のデータの中から選択する請求項１に記載のデータ比較回路。
【請求項３】
前記複数のデータを格納する複数のレジスタをさらに備え、
前記データは、前記最大値算出手段が読み出し可能なビット幅よりも大きいビット幅のデータであり、
前記レジスタが格納する１つの前記データに対して２以上のアドレスが割り当てられている請求項１または２に記載のデータ比較回路。
【請求項４】
前記比較手段の比較結果を、前記最大値算出手段が読み出し可能なビット幅に連結するビット連結手段をさらに備え、
前記最大値算出手段は、前記連結された比較結果に基づいて、最大値の算出対象となる前記データに対応する前記アドレスを、前記データ選択手段に出力し、
前記データ選択手段は、前記最大値算出手段から入力された前記アドレス応じて、当該アドレスに格納された前記データを前記最大値算出手段に出力する請求項３に記載のデータ比較回路。
【請求項５】
前記比較手段は、前記１つのデータに割り当てられた２以上のアドレスのうち、当該１つのデータの最上位ビットが格納されているアドレスのみを読み出し、当該１つのデータの上位ビットを取得する請求項３または４に記載のデータ比較回路。
【請求項６】
前記第１の閾値は、前記複数のデータの前記上位ビットの値の平均値に基づいて設定される請求項１〜５のいずれか一項に記載のデータ比較回路。
【請求項７】
複数のデータの各々の上位ビットの値と第１の閾値とを比較し、
前記上位ビットの値が前記第１の閾値以上であるデータを、前記複数のデータの中から選択し、
選択した前記データの中から最大値を算出するデータ比較方法。
【請求項８】
前記複数のデータの前記各々の上位ビットの値と前記第１の閾値及び第２の閾値とを比較し、
前記上位ビットの値が前記第１の閾値以上、かつ、前記第２の閾値以下であるデータを、前記複数のデータの中から選択する請求項７に記載のデータ比較方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ比較回路及びデータ比較方法に関する。
【背景技術】
【０００２】
複数のデータの中から最大値を特定するデータ比較回路が知られている（例えば、特許文献１、２）。データ比較回路が備えるレジスタの数や、データ比較回路が処理するデータのビット数が少ない場合、データ比較回路に用いられるＬＳＩ（Large Scale Integration）の規模はそれほど大きくはならない。したがって、複数のデータの中から最大値を特定する際に、データ比較回路のＣＰＵが全てのレジスタをリードしても、計算に多くの時間を必要としない。
【０００３】
しかし、近年、ＬＳＩに大規模なデータ処理が要求され、実装するレジスタ数が増加している。さらに、データ演算の精度向上のため、データのビット数も増加しており、レジスタのビット数がＣＰＵのデータバス幅より大きくなることがある。このように、ＬＳＩ規模が増大した場合でも、ＣＰＵは、全てのレジスタのデータをリードして、大小関係を比較し、最大値を特定していた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０４−２３９９１０号公報
【特許文献２】特開平０９−３０５３７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、レジスタ数の増加により、レジスタのリード回数が増え、リードにかかる時間が増加してしまう。さらに、全てのデータをリードして大小関係を比較すると、比較処理にも時間がかかってしまう。その結果、最大値の特定にかかる時間が増加し、データ比較回路のスループットが低下するという問題があった。
【０００６】
本発明は、このような問題を解決するためになされたものであり、計算時間を削減可能なデータ比較回路及びデータ比較方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明にかかるデータ比較回路は、複数のデータの各々の上位ビットの値と第１の閾値とを比較する比較手段と、前記上位ビットの値が前記第１の閾値以上であるデータを、前記複数のデータの中から選択するデータ選択手段と、前記データ選択手段により選択された前記データの中から最大値を算出する最大値算出手段と、を備えるものである。
【０００８】
本発明にかかるデータ比較方法は、複数のデータの各々の上位ビットの値と第１の閾値とを比較し、前記上位ビットの値が前記第１の閾値以上であるデータを、前記複数のデータの中から選択し、選択した前記データの中から最大値を算出するものである。
【発明の効果】
【０００９】
本発明により、計算時間を削減可能なデータ比較回路及びデータ比較方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１にかかるデータ比較回路のブロック図である。
【図２】実施の形態１にかかるデータ比較回路の動作を示すフローチャートである。
【図３】実施の形態２にかかるデータ比較回路のブロック図である。
【図４】実施の形態２にかかるレジスタマップである。
【図５】実施の形態２にかかるデータ比較回路の動作を示すフローチャートである。
【図６】実施の形態２にかかるデータとその比較結果とを示す表である。
【図７】実施の形態３にかかるデータ比較回路のブロック図である。
【図８】実施の形態３にかかるデータ比較回路の動作を示すフローチャートである。
【発明を実施するための形態】
【００１１】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるデータ比較回路１のブロック図である。データ比較回路１は、比較器１１と、データ選択部１２と、最大値算出部１３と、を備える。なお、データ比較回路１は、複数のデータＤ１〜Ｄｎの中から、最大値を特定する回路である。複数のデータＤ１〜Ｄｎのそれぞれは、"０"または"１"からなるビット列である。
【００１２】
比較器１１は、複数のデータＤ１〜Ｄｎの上位ビットの値が第１の閾値以上であるか否かを判定する。このとき、上位ビットとは、複数のデータＤ１〜Ｄｎのビット列における上位側のビットを意味する。当該上位ビットは、データの最上位ビットであってもよいし、最上位ビットを含む上位側の複数のビットであってもよい。また、上位ビットの値とは、上位ビットにより定まる値を意味する。例えば、"10010111"というデータの場合、上位ビットを４ビットとすると、上位ビットは、"1001"であり、上位ビットの値は、"9"である。
【００１３】
比較器１１は、複数のデータＤ１〜Ｄｎの各々の上位ビットの値と、第１の閾値との大小関係を比較し、比較結果をデータ選択部１２に出力する。ここで、比較結果とは、どのデータの上位ビットが第１の閾値以上であるかを示す情報である。第１の閾値は、１以上の任意の値であり、予め設定されている。
【００１４】
データ選択部１２には、複数のデータＤ１〜Ｄｎが入力される。データ選択部１２は、比較器１１の比較結果に基づいて、複数のデータＤ１〜Ｄｎからデータを選択する。具体的には、データ選択部１２は、複数のデータＤ１〜Ｄｎの中から、比較器１１により上位ビットの値が第１の閾値以上と判定されたデータを選択する。そして、データ選択部１２は、選択したデータを最大値算出部１３に出力する。最大値算出部１３は、入力されたデータの中から、最大値を算出する。
【００１５】
続いて、本実施の形態にかかるデータ比較回路１の動作例について、図２に示すフローチャートを参照して説明する。まず、比較器１１が、複数のデータＤ１〜Ｄｎの上位ビットを取得する（ステップＳ１０１）。なお、複数のデータＤ１〜Ｄｎの上位ビットの抽出は、比較器１１が行ってもよいし、比較器１１の前段に配置された他の回路（図示省略）が行ってもよい。
【００１６】
比較器１１は、取得した上位ビットの値と第１の閾値との大小関係を比較する（ステップＳ１０２）。比較器１１は、比較結果をデータ選択部１２に出力する（ステップＳ１０３）。
【００１７】
次に、データ選択部１２は、比較結果に基づいて、入力された複数のデータＤ１〜Ｄｎの中から、上位ビットの値が第１の閾値以上であるデータを選択する（ステップＳ１０４）。そして、データ選択部１２は、選択したデータを最大値算出部１３に対して出力する。なお、本実施の形態においては、データ選択部１２が、比較結果に基づいて選択したデータを最大値算出部１３に出力しているが、最大値算出部１３が、比較結果を参照して、データ選択部１２にデータを選択するように命令してもよい。
【００１８】
最大値算出部１３は、データ選択部１２が選択したデータの中から、最大値を算出する（ステップＳ１０５）。これにより、複数のデータＤ１〜Ｄｎの中の最大値が特定できる。
【００１９】
以上のように、本実施の形態にかかるデータ比較回路１の構成によれば、比較器１１において、複数のデータＤ１〜Ｄｎの上位ビットの値が、第１の閾値以上か否か判定される。そして、データ選択部１２により、上位ビットの値が第１の閾値以上であるデータが選択され、最大値算出部１３に出力される。言い換えると、上位ビットの値が第１の閾値未満のデータは、最大値算出部１３における最大値算出処理に用いられない。そのため、最大値算出部１３は、複数のデータＤ１〜Ｄｎの数以下のデータの中から最大値を算出する。さらに、最大値算出部１３に入力されるデータは、上位ビットの値が第１の閾値以上であり、複数のデータＤ１〜Ｄｎの中でも値が大きいデータである。そのため、最大値算出部１３に入力されるデータには、複数のデータＤ１〜Ｄｎの中の最大値が含まれる。したがって、最大値算出部１３は、複数のデータＤ１〜Ｄｎの全てをリードすることなく、複数のデータＤ１〜Ｄｎの中の最大値を特定できる。その結果、最大値算出部１３のリード回数及び比較処理時間が減少し、最大値の特定にかかる時間を削減することができる。
【００２０】
＜実施の形態２＞
本発明にかかる実施の形態２について説明する。図３は、本実施の形態にかかるデータ比較回路２のブロック図である。データ比較回路２は、比較器１１１〜１１ｎと、データ選択部１２と、機能ブロック１４１〜１４ｎと、レジスタ１５１〜１５ｎと、第１の閾値レジスタ１６と、ビット連結部１７と、ＣＰＵ１８と、を備える。なお、実施の形態１と同様の構成については、適宜説明を省略する。
【００２１】
機能ブロック１４１〜１４ｎは、ビット列からなるデータを生成する。レジスタ１５１〜１５ｎは、機能ブロック１４１〜１４ｎが生成したデータを格納する。
【００２２】
比較器１１１〜１１ｎは、レジスタ１５１〜１５ｎに格納されたデータの上位ビットを取得し、各々の上位ビットの値と第１の閾値レジスタ１６に格納された第１の閾値との大小関係を比較する。そして、比較器１１１〜１１ｎは、比較結果をビット連結部１７に出力する。このとき、比較結果は、"０"または"１"で示される。上位ビットの値が第１の閾値以上である場合、比較器１１１〜１１ｎは、"１"を出力する。一方、上位ビットの値が第１の閾値未満である場合、比較器１１１〜１１ｎは、"０"を出力する。
【００２３】
ビット連結部１７は、比較器１１１〜１１ｎから入力された比較結果を、ＣＰＵ１８のリードデータバス幅分連結する。リードデータバスとは、データ選択部１２からＣＰＵ１８へ向かう矢印を意味する。データ選択部１２は、複数のデータＤ１〜Ｄｎの中から上位ビットの値が第１の閾値以上であるデータを格納するレジスタを選択する。
【００２４】
ＣＰＵ１８は、実施の形態１における最大値算出部１３に対応する回路である。つまり、ＣＰＵ１８は、データ選択部１２が選択したレジスタからデータをリードし、リードしたデータの中から最大値を算出する。なお、本実施の形態においては、ＣＰＵ１８が、比較結果を参照し、選択すべきレジスタをデータ選択部１２に通知する。また、ＣＰＵ１８は、複数のデータＤ１〜Ｄｎの特性に見合った第１の閾値を、第１の閾値レジスタ１６に格納する。この第１の閾値レジスタ１６のビット幅が、比較器１１１〜１１ｎにおいて比較される上位ビットの数となる。そのため、第１の閾値レジスタ１６のビット幅が小さい程、比較器１１１〜１１ｎの回路規模も小さくなる。
【００２５】
ここで、本実施の形態にかかるレジスタマップの一例を図４に示す。図４においては、ＣＰＵ１８のリードデータバス幅が３２ビット、レジスタのビット幅が４０ビットであるものとする。つまり、レジスタ１つあたり２つのアドレスが割り当てられている。また、機能ブロック及びレジスタの個数が６４個（ｎ＝６４）、第１の閾値レジスタ１６のビット幅が４ビットであるとする。さらに、比較結果レジスタには２アドレス（レジスタが６４個であり、ＣＰＵ１８のリードデータバス幅が３２ビットであるため、全てのレジスタの比較結果を格納するためには、２アドレスが必要となる。）が割り当てられている。なお、比較結果レジスタは、データ選択部１２に設けられている。
【００２６】
図４に示すレジスタマップにおいては、レジスタ１にアドレス０、１が割り当てられ、アドレス０、１に４０ビットで示される１つのデータが格納されている。より詳細には、アドレス０にデータ１の下位から０〜３１番目のビット列が格納され、アドレス１にデータ１の３２〜３９番目のビット列が格納されている。そのため、レジスタ１〜６４に対応するアドレスは、アドレス０〜１２７となる。さらに、比較結果レジスタ１、２には、アドレス１２８、１２９が割り当てられている。第１の閾値レジスタ１６にはアドレス１３０が割り当てられている。
【００２７】
比較器は、各データの上位４ビットを取得して、第１の閾値レジスタ１６に格納された４ビットと比較する。このとき、比較器は、各レジスタの上位側のビットが格納されているアドレスのみをリードして、上位４ビットを取得する。言い換えると、比較器は、各レジスタに割り当てられた２つのアドレスのうち、最上位ビットが格納されているアドレスのみからデータ（上位４ビット）をリードする。
【００２８】
続いて、本実施の形態にかかるデータ比較回路２の動作例について、図５に示すフローチャートを参照して説明する。まず、比較器１１１〜１１ｎが、レジスタ１５１〜１５ｎからデータＤ１〜Ｄｎの上位ビット及び第１の閾値レジスタ１６に格納された第１の閾値をリードする（ステップＳ２０１）。
【００２９】
比較器１１１〜１１ｎは、リードした上位ビットの値と第１の閾値との大小関係を比較する（ステップＳ２０２）。比較器１１１〜１１ｎは、比較結果をビット連結部１７に対して出力する。
【００３０】
ビット連結部１７は、入力された比較結果をＣＰＵ１８のリードデータバス幅分連結する（ステップＳ２０３）。ビット連結部１７は、連結した比較結果をデータ選択部１２に出力する。
【００３１】
次に、ＣＰＵ１８は、最大値及び最大値ポインタをクリアする（ステップＳ２０４）。これにより、最大値及び最大値ポインタが初期化される。このとき、最大値ポインタとは、最大値を格納するレジスタの番号を意味する。そして、ＣＰＵ１８は、データ選択部１２の比較結果レジスタから比較結果をリードして保持する（ステップＳ２０５）。
【００３２】
ＣＰＵ１８は、連結された比較結果の先頭から順番に各ビットを参照し、比較結果が１であるか否かを判定する（ステップＳ２０６）。比較結果が１である場合（ステップＳ２０６：Ｙｅｓ）、ＣＰＵ１８は、当該比較結果に対応するレジスタをリードする（ステップＳ２０７）。具体的には、ＣＰＵ１８は、当該レジスタに割り当てられたアドレスをデータ選択部１２に出力し、データ選択部１２により選択されたレジスタに格納されたデータをリードする。
【００３３】
そして、ＣＰＵ１８は、ステップＳ２０７においてリードしたデータの値が現在の最大値よりも大きいか否かを判定する（ステップＳ２０８）。ステップＳ２０７においてリードしたデータの値の方が大きい場合（ステップＳ２０８：Ｙｅｓ）、ＣＰＵ１８は、最大値をステップＳ２０７においてリードしたデータに更新する。それに伴い、ＣＰＵ１８は、最大値ポインタも更新する（ステップＳ２０９）。
【００３４】
一方、比較結果が０である場合（ステップＳ２０６：Ｎｏ）、当該比較結果に対応するレジスタに格納されたデータは、上位ビットの値が第１の閾値未満である。そのため、ＣＰＵ１８は、当該比較結果に対応するレジスタを読み飛ばし、連結された比較結果の次のビットを参照し、１であるか否かを判定する（ステップＳ２０６）。
【００３５】
また、現在の最大値がステップＳ２０７においてリードしたデータの値よりも大きい場合（ステップＳ２０８：Ｎｏ）、ＣＰＵ１８は、連結された比較結果の次のビットを参照し、１であるか否かを判定する（ステップＳ２０６）。
【００３６】
このように、ＣＰＵ１８は、連結された比較結果のそれぞれについて、上記の処理（ステップＳ２０６〜Ｓ２０９）を行う。つまり、データ数がｎである場合、ＣＰＵ１８は、ステップＳ２０６〜２０９のループ処理をｎ回行う。これにより、ｎ回のループ処理が終了したときの最大値が、複数のデータＤ１〜Ｄｎの中の最大値となる。
【００３７】
ここで、図６に示すデータ及び比較結果の一例を参照して、データ比較回路２の動作を具体的に説明する。図６は、各レジスタに格納されたデータにおける上位４ビット（最下位から３６番目〜３９番目）の値と、下位３６ビット（最下位から０番目〜３５番目）の値と、当該データの比較結果と、を示す表である。なお、以下の説明では、レジスタ１〜６４には、比較器１〜６４がそれぞれ接続されているものとする。また、第１の閾値は８とする。
【００３８】
レジスタ１に格納されたデータの上位４ビットの値は６であり、第１の閾値である８よりも小さいため、比較器１は、比較結果を０とする。同様に、レジスタ２に格納されたデータの上位４ビットの値が７であるため、比較器２は、比較結果を０とする。一方、レジスタ３に格納されたデータの上位４ビットの値は８であり、第１の閾値以上であるため、比較器３は、比較結果を１とする。同様に、レジスタ４に格納されたデータの上位４ビットの値が９であるため、比較器４は、比較結果を１とする。レジスタ５〜６４についても同様に、比較器５〜６４は、各レジスタに格納されたデータの上位４ビットの値と、第１の閾値との大小関係を比較し、１ビットの比較結果を出力する。
【００３９】
図６においては、レジスタ３、４、５、６０、６１に格納されたデータの上位４ビットの値が第１の閾値以上である（図６の太線で囲った部分）。そのため、これらのレジスタに対応する比較結果は１であり、それ以外の比較結果は０である。
【００４０】
ＣＰＵ１８は、最大値と最大値ポインタとを初期化し、比較結果レジスタをリードする。なお、ＣＰＵ１８は、ＣＰＵ１８に設けられたタイマや、機能ブロック１４１〜１４ｎがレジスタ１５１〜１５ｎの値を更新したタイミング等をトリガとして処理を開始する。
【００４１】
ＣＰＵ１８は、レジスタ１の比較結果を参照する。図６に示すように、レジスタ１の比較結果は０であるため、ＣＰＵ１８は、レジスタ１を読み飛ばす。次に、ＣＰＵ１８は、レジスタ２の比較結果を参照する。レジスタ２の比較結果も０であるため、ＣＰＵ１８は、レジスタ２も読み飛ばす。
【００４２】
そして、ＣＰＵ１８は、レジスタ３の比較結果を参照する。レジスタ３の比較結果は１であるため、ＣＰＵ１８は、レジスタ３に格納されているデータをリードする。より詳細には、ＣＰＵ１８は、レジスタ３に対応するアドレス４、５をリードする（図４のレジスタマップ参照）。
【００４３】
次に、ＣＰＵ１８は、リードしたデータ値と現在の最大値との大小関係を比較する。最大値はクリアしてから更新されていないため、０である。そのため、ＣＰＵ１８は、リードしたデータの値"8222222222"の方が大きいと判定する。そして、ＣＰＵ１８は、最大値を"8222222222"、最大値ポインタを"3"に更新する。
【００４４】
同様に、ＣＰＵ１８は、レジスタ４の比較結果を参照する。レジスタ４の比較結果は１であるため、ＣＰＵ１８は、レジスタ４に格納されているデータをリードする。そして、ＣＰＵ１８は、レジスタ４に格納されているデータの値と現在の最大値との大小関係を比較する。リードしたデータの値は"9333333333"であり、現在の最大値である"8222222222"よりも大きいため、ＣＰＵ１８は、最大値を"9333333333"、最大値ポインタを"4"に更新する。
【００４５】
同様に、ＣＰＵ１８は、レジスタ５の比較結果を参照する。レジスタ５の比較結果は１であるため、ＣＰＵ１８は、レジスタ５に格納されているデータをリードする。そして、ＣＰＵ１８は、レジスタ５に格納されているデータの値と現在の最大値との大小関係を比較する。リードしたデータの値は"8444444444"であり、現在の最大値である"9333333333"よりも小さいため、ＣＰＵ１８は、最大値及び最大値ポインタの更新を行わず、次のレジスタ６の比較結果を参照する。
【００４６】
レジスタ６の比較結果は０であるため、ＣＰＵ１８は、レジスタ６を読み飛ばし、レジスタ７の比較結果を参照する。ＣＰＵ１８は、このような処理をレジスタ６４まで繰り返し行い、レジスタ１〜６４に格納されたデータの中から最大値を特定する。
【００４７】
なお、複数のデータＤ１〜Ｄｎのデータの特性が予めわかっている場合は、当該特性に応じて第１の閾値を設定すれば問題ない。しかし、複数のデータＤ１〜Ｄｎの特性が不明な場合は、複数のデータＤ１〜Ｄｎの上位ビットの値の平均値を第１の閾値として設定してもよい。具体的には、ＣＰＵ１８が、各レジスタに格納されたデータの上位４ビットの値（図６の最下位から３６番目〜３９番目の欄の値）を予め取得し、それらの平均値を算出し、当該平均値を第１の閾値として設定してもよい。全データのうち半分程度のデータの上位４ビットの値は、平均値未満であると考えられる。したがって、データの特性が不明な場合であっても、ＣＰＵ１８の最大値算出処理に用いるデータの数を減らすことができる。
【００４８】
以上のように、本実施の形態にかかるデータ比較回路２の構成によれば、比較器１１１〜１１ｎの比較結果に基づいて、ＣＰＵ１８は、複数のデータＤ１〜Ｄｎのうち、上位ビットの値が第１の閾値以上のデータのみをリードして最大値を算出する。そのため、ＣＰＵ１８が複数のレジスタの全てをリードする必要がなく、計算時間を削減することができる。
【００４９】
さらに、本実施の形態においては、１つのレジスタに２つのアドレスが割り当てられており、１つのレジスタに１つのアドレスが割り当てられている場合に比べて、ＣＰＵ１８のデータリードに要する処理負担が大きい。本発明によれば、このようにデータのビット数がリードデータバス幅より大きい場合においても、ＣＰＵ１８がリードするレジスタの数を減らすことができる。
【００５０】
加えて、比較器１１１〜１１ｎは、データの全ビットと第１の閾値とを比較せず、上位ビットのみを第１の閾値と比較している。そのため、比較器１１１〜１１ｎは、上位ビット及び第１の閾値のみ保持できる構成であればよく、データの全てを保持する必要はない。したがって、比較器１１１〜１１ｎの回路規模を抑えることができ、比較器１１１〜１１ｎの追加によるデータ比較回路２の規模増大を抑制できる。
【００５１】
＜実施の形態３＞
本発明にかかる実施の形態３について説明する。本実施の形態にかかるデータ比較回路３を図７に示す。データ比較回路３は、データ比較回路２の構成に加えて、第２の閾値レジスタ１９を備える。なお、その他の構成についてはデータ比較回路２と同様であるので、適宜説明を省略する。さらに、本実施の形態においては、ノイズ等により、想定外のデータが発生する場合について説明する。この場合、データ比較回路３は、複数のデータＤ１〜Ｄｎから想定外のデータを除いたデータの中の最大値（以下、最良値と称す）を特定する。
【００５２】
第２の閾値レジスタ１９には、第２の閾値が格納されている。ここで、第２の閾値とは、第１の閾値よりも大きな任意の値である。ＣＰＵ１８により、複数のデータＤ１〜Ｄｎの特性に見合った値が第２の閾値として設定される。上位ビットの値が第２の閾値以上である場合には、当該データは、データ比較回路３が想定している値の範囲を超えているデータとして、最良値の特定から除外される。
【００５３】
比較器１１１〜１１ｎは、リードした上位ビットの値と、第１及び第２の閾値と、を比較する。そして、比較器１１１〜１１ｎは、上位ビットの値が第１の閾値以上、かつ、第２の閾値以下である場合、比較結果として１を出力する。一方、比較器１１１〜１１ｎは、上位ビットの値が第１の閾値より小さい場合、または、第２の閾値よりも大きい場合には、比較結果として０を出力する。
【００５４】
続いて、本実施の形態にかかるデータ比較回路３の動作例について、図８に示すフローチャートを参照して説明する。まず、比較器１１１〜１１ｎが、上位ビットと、第１及び第２の閾値とをリードする（ステップＳ３０１）。そして、比較器１１１〜１１ｎは、リードした上位ビットの値と第１及び第２の閾値との大小関係を比較する（ステップＳ３０２）。比較器１１１〜１１ｎは、比較結果をビット連結部１７に出力する。ビット連結部１７は、入力された比較結果を、ＣＰＵ１８のリードデータバス幅分連結する（ステップＳ３０３）。
【００５５】
次に、ＣＰＵ１８が最良値及び最良値ポインタをクリアし（ステップＳ３０４）、連結された比較結果をリードして保持する（ステップＳ３０５）。ＣＰＵ１８は、各レジスタの比較結果を参照して、比較結果が１であるか否かを判定する（ステップＳ３０６）。ＣＰＵ１８は、比較結果が１である場合（ステップＳ３０６：Ｙｅｓ）、当該比較結果に対応するレジスタに格納されたデータをリードする（ステップＳ３０７）。そして、リードしたデータと最良値との大小関係を比較する（ステップＳ３０８）。リードしたデータが最良値よりも大きい場合（ステップＳ３０８：Ｙｅｓ）、最良値及び最良値ポインタを、リードしたデータ及びそのデータが格納されているレジスタ番号に更新する（ステップＳ３０９）。
【００５６】
一方、比較結果が０の場合（ステップＳ３０６：Ｎｏ）、または、リードしたデータが最良値以下である場合（ステップ３０８：Ｎｏ）、ＣＰＵ１８は、連結された比較結果の次のビットを参照して、比較結果が１であるか否かを判定する（ステップＳ３０６）。ＣＰＵ１８は、このような処理を全てのレジスタに対して行い、レジスタに格納されたデータの中から最良値を特定する。
【００５７】
以上のように、本実施の形態にかかるデータ比較回路３の構成によれば、比較器１１１〜１１ｎが、第１の閾値に加えて、第２の閾値と上位ビットの値との大小関係を比較する。そして、上位ビットの値が、第２の閾値よりも大きな値である場合、ＣＰＵ１８は、当該データを除外して、最良値を特定する。言い換えると、ＣＰＵ１８は上位ビットの値が第２の閾値よりも大きいデータをリードしない。そのため、ノイズ等の影響により、外れ値や異常値が発生した場合であっても、ＣＰＵ１８は、これらの値を除外したデータの中で最大値を特定する。そのため、ノイズ等が発生しても、正常なデータの中から最良値を特定することができる。
【００５８】
勿論、上述した実施の形態１、２と同様に、上位ビットの値が第１の閾値未満のデータも、最良値の特定の対象から除外されるため、ＣＰＵ１８がリードするデータの数を減らすことができる。その結果、最良値の特定にかかる時間を削減することができる。
【００５９】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更及び組み合わせをすることが可能である。
【符号の説明】
【００６０】
１〜３  データ比較回路
１１、１１１〜１１ｎ  比較器
１２  データ選択部
１３  最大値算出部
１４１〜１４ｎ  機能ブロック
１５１〜１５ｎ  レジスタ
１６  第１の閾値レジスタ
１７  ビット連結部
１８  ＣＰＵ
１９  第２の閾値レジスタ
【図１】
2012146229.tif 000003
【図２】
2012146229.tif 000004
【図３】
2012146229.tif 000005
【図４】
2012146229.tif 000006
【図５】
2012146229.tif 000007
【図６】
2012146229.tif 000008
【図７】
2012146229.tif 000009
【図８】
2012146229.tif 000010