本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
図1は、この発明の実施の形態による連想メモリの構成を示す概略ブロック図である。図1を参照して、この発明の実施の形態1による連想メモリ100は、メモリアレイ部10と、Winner検出器20とを備える。
メモリアレイ部10は、メモリ部1と、行デコーダ2と、列デコーダ3と、読出/書込回路4と、検索データ保存回路5とを含む。
メモリ部1は、参照データ保存回路(Storage Cell:SC)SC11〜SC1W,SC21〜SC2W,・・・,SCR1〜SCRWと、距離演算回路(Distance Processor:DP)DP11〜DP1W,DP21〜DP2W,・・・,DPR1〜DPRWと、距離/クロック数変換回路DC1〜DCRとを含む。なお、WおよびRの各々は、2以上の整数である。
距離演算回路DP11〜DP1Wは、それぞれ、参照データ保存回路SC11〜SC1Wに対応して設けられる。また、距離演算回路DP21〜DP2Wは、それぞれ、参照データ保存回路SC21〜SC2Wに対応して設けられる。以下、同様にして、距離演算回路DPR1〜DPRWは、それぞれ、参照データ保存回路SCR1〜SCRWに対応して設けられる。
距離/クロック数変換回路DC1は、距離演算回路DP11〜DP1Wに対応して設けられる。距離/クロック数変換回路DC2は、距離演算回路DP21〜DP2Wに対応して設けられる。以下、同様にして、距離/クロック数変換回路DCRは、距離演算回路DPR1〜DPRWに対応して設けられる。
参照データ保存回路SC11〜SC1W,SC21〜SC2W,・・・,SCR1〜SCRWは、行デコーダ2、列デコーダ3および読出/書込回路4によって書き込まれた参照データを保存する。この場合、参照データ保存回路SC11〜SC1Wは、M×W(Mは1以上の整数)ビットの参照データ1を保存し、参照データ保存回路SC21〜SC2Wは、M×Wビットの参照データ2を保存し、以下、同様にして、参照データ保存回路SCR1〜SCRWは、M×Wビットの参照データRを保存する。つまり、参照データ保存回路SC11〜SC1W,SC21〜SC2W,・・・,SCR1〜SCRWの各々は、参照データのMビットを保存する。
距離演算回路DP11〜DP1Wは、参照データ保存回路SC11〜SC1Wに保存されたM×Wビットの参照データ1と、検索データ保存回路5に保存されたM×Wビットの検索データとの距離を後述する方法によって演算する。また、距離演算回路DP21〜DP2Wは、参照データ保存回路SC21〜SC2Wに保存されたM×Wビットの参照データ2と、検索データ保存回路5に保存されたM×Wビットの検索データとの距離を後述する方法によって演算する。以下、同様にして、距離演算回路DPR1〜DPRWは、参照データ保存回路SCR1〜SCRWに保存されたM×Wビットの参照データRと、検索データ保存回路5に保存されたM×Wビットの検索データとの距離を後述する方法によって演算する。そして、距離演算回路DP11〜DP1W、距離演算回路DP21〜DP2W、・・・、および距離演算回路DPR1〜DPRWにおける参照データと検索データとの距離の演算は、並列に行なわれる。
そして、距離演算回路DP11〜DP1Wは、参照データ1と検索データとの距離をM×Wビットの距離信号として距離/クロック数変換回路DC1へ出力し、距離演算回路DP21〜DP2Wは、参照データ2と検索データとの距離をM×Wビットの距離信号として距離/クロック数変換回路DC2へ出力し、以下、同様にして、距離演算回路DPR1〜DPRWは、参照データRと検索データとの距離をM×Wビットの距離信号として距離/クロック数変換回路DCRへ出力する。
距離演算回路DP11〜DP1Wの各々は、参照データ1と検索データとの距離を次式を用いて演算する。
式(1)において、Drj(r=1〜R,j=1〜W)は、参照データと検索データとの距離であり、Injは、検索データであり、Rerjは、参照データである。そして、各データInj,Rerjの各々は、Mビットからなる。
このように、距離演算回路DP11〜DP1Wは、M×Wビットの参照データ1と、M×Wビットの検索データとの距離をMビットづつ演算し、各々がMビットのビット長を有するW個の距離信号D1jを距離/クロック数変換回路DC1へ出力する。
距離演算回路DP21〜DP2W、・・・および距離演算回路DPR1〜DPRWも、それぞれ、式(1)を用いて参照データ2〜Rと検索データとの距離を演算する。そして、距離演算回路DP21〜DP2W、・・・および距離演算回路DPR1〜DPRWも、各々がMビットのビット長を有するW個の距離信号D2j〜DRjをそれぞれ距離/クロック数変換回路DC2〜DCRへ出力する。
距離/クロック数変換回路DC1は、距離演算回路DP11〜DP1WからW個の距離信号D1jを受け、その受けたW個の距離信号D1jの和に一致するクロック信号CLKのクロック数CN_total1を後述する方法によってカウントし、そのクロック数CN_total1をカウントしたタイミングを示すタイミング信号C1をWinner検出器20へ出力する。そして、このクロック数CN_total1をカウントしたタイミングは、検索データと参照データ1との距離に一致する一致タイミングである。
また、距離/クロック数変換回路DC2は、距離演算回路DP21〜DP2WからW個の距離信号D2jを受け、その受けたW個の距離信号D2jの和に一致するクロック信号CLKのクロック数CN_total2を後述する方法によってカウントし、そのクロック数CN_total2をカウントしたタイミングを示すタイミング信号C2をWinner検出器20へ出力する。このクロック数CN_total2をカウントしたタイミングは、検索データと参照データ2とが一致する一致タイミングである。
以下、同様にして、距離/クロック数変換回路DCRは、距離演算回路DPR1〜DPRWからW個の距離信号DRjを受け、その受けたW個の距離信号DRjの和に一致するクロック信号CLKのクロック数CN_totalRを後述する方法によってカウントし、そのクロック数CN_totalRをカウントしたタイミングを示すタイミング信号CRをWinner検出器20へ出力する。このクロック数CN_totalRをカウントしたタイミングは、検索データと参照データRとが一致する一致タイミングである。
行デコーダ2は、メモリ部1の行方向のアドレスを指定する。列デコーダ3は、メモリ部1の列方向のアドレスを指定する。読出/書込回路4は、参照データを行デコーダ2および列デコーダ3によって指定された参照データ保存回路SC11〜SC1W,SC21〜SC2W,・・・,SCR1〜SCRWに書き込むとともに、検索データを検索データ保存回路5に書き込む。
検索データ保存回路5は、読出/書込回路4によって書き込まれた検索データ(M×Wビットのデータ)を保存する。
Winner検出器20は、タイミング信号C1〜CRをそれぞれ距離/クロック数変換回路DC1〜DCRから受け、その受けたタイミング信号C1〜CRのうち、一致タイミングが早い順にk(kは1≦k<Rを満たす整数)個のタイミング信号を検出し、その検出したk個のタイミング信号を検索データと参照データとの類似度を示すマッチ信号M1〜Mkとして出力する。
図2は、図1に示す距離/クロック数変換回路DC1の構成を示す概略図である。図2を参照して、距離/クロック数変換回路DC1は、増幅器21〜2Wと、カウンタ一致検出回路31〜3Wとを含む。
増幅器21は、連想メモリ100に内蔵されたクロック発生回路(図示せず)からクロック信号CLKを受け、その受けたクロック信号CLKを増幅して増幅器22およびカウンタ一致検出回路31へ出力する。
増幅器22は、クロック信号CLKを増幅器21から受け、その受けたクロック信号CLKを増幅器23(図示せず)およびカウンタ一致検出回路32へ出力する。
以下、同様にして、増幅器2Wは、クロック信号CLKを増幅器2W−1(図示せず)から受け、その受けたクロック信号CLKをカウンタ一致検出回路3Wへ出力する。
カウンタ一致検出回路31〜3Wは、それぞれ、距離演算回路DP11〜DP1Wに対応して設けられる。そして、カウンタ一致検出回路31〜3Wは、直列に接続される。
カウンタ一致検出回路31は、増幅器21からクロック信号CLKを受け、連想メモリ100の制御回路(図示せず)から検索開始信号SBを受け、距離演算回路DP11からMビットのビット長を有する距離信号D11を受ける。カウンタ一致検出回路31は、検索開始信号SBがL(論理ロー)レベルからH(論理ハイ)レベルに切り替わると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントする。そして、カウンタ一致検出回路31は、そのクロック数をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してカウンタ一致検出回路32へ出力する。カウンタ一致検出回路31は、一致信号MTH1を出力すると、動作を停止する。
カウンタ一致検出回路32は、増幅器22からクロック信号CLKを受け、カウンタ一致検出回路31から一致信号MTH1を受け、距離演算回路DP12からMビットのビット長を有する距離信号D12を受ける。カウンタ一致検出回路32は、カウンタ一致検出回路31から一致信号MTH1を受けるまで動作を停止している。カウンタ一致検出回路32は、カウンタ一致検出回路31から一致信号MTH1を受けると駆動され、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントする。そして、カウンタ一致検出回路32は、そのクロック数をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してカウンタ一致検出回路33(図示せず)へ出力する。カウンタ一致検出回路32は、一致信号MTH2を出力すると、動作を停止する。
以下、同様にして、カウンタ一致検出回路3Wは、増幅器2Wからクロック信号CLKを受け、カウンタ一致検出回路3W−1から一致信号MTHW−1を受け、距離演算回路DP1WからMビットのビット長を有する距離信号D1Wを受ける。カウンタ一致検出回路3Wは、カウンタ一致検出回路3W−1から一致信号MTHW−1を受けるまで動作を停止している。カウンタ一致検出回路3Wは、カウンタ一致検出回路3W−1から一致信号MTHW−1を受けると駆動され、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D1Wに一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントする。そして、カウンタ一致検出回路3Wは、そのクロック数をカウントしたタイミングを示す一致信号MTHWをタイミング信号C1としてクロック信号CLKに同期してWinner検出器20へ出力する。カウンタ一致検出回路3Wは、タイミング信号C1を出力すると、動作を停止する。
なお、図1に示す距離/クロック数変換回路DC2〜距離/クロック数変換回路DCRの各々も、図2に示す距離/クロック数変換回路DC1と同じ構成からなる。
図3は、図2に示すカウンタ一致検出回路31の構成を示す概略図である。図3を参照して、カウンタ一致検出回路31は、カウンタ311と、一致検出回路312とを含む。
カウンタ311は、増幅器21からクロック信号CLKを受け、連想メモリ100の制御回路(図示せず)からリセット信号RSTを受ける。カウンタ311は、リセット信号RSTを受けると、カウンタ値をリセットし、Mビットのビット値をクロック信号CLKに同期して昇順にカウントする。そして、カウンタ311は、そのカウントしたカウンタ値CV11をクロック信号CLKに同期して一致検出回路312へ順次出力する。
一致検出回路312は、増幅器21からクロック信号CLKを受け、連想メモリ100の制御回路(図示せず)から検索開始信号SBを受け、カウンタ311からカウンタ値CV11を順次受け、距離演算回路DP11から距離信号D11を受ける。
一致検出回路312は、検索開始信号SBがLレベルからHレベルに切り替わると、距離信号D11に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数をカウントする。そして、一致検出回路312は、そのクロック数をカウントしたタイミングを示す一致信号MTH1をカウンタ一致検出回路32へ出力する。
一致検出回路312は、一致信号MTH1を出力すると、動作を停止する。
なお、図2に示すカウンタ一致検出回路32〜3Wの各々も、図3に示すカウンタ一致検出回路31と同じ構成からなる。この場合、カウンタ一致検出回路32〜3Wの一致検出回路312は、それぞれ、カウンタ一致検出回路31〜3W−1の一致検出回路312から一致信号MTH1〜MTHW−1を受けるまで動作を停止し、一致信号MTH1〜MTHW−1を受けると駆動され、動作を開始する。
図4は、図3に示すカウンタ一致検出回路31の動作を説明するための図である。なお、図4においては、カウンタ値CV11および距離信号D11の各々が3ビットである場合を例にしてカウンタ一致検出回路31の動作を説明する。また、距離信号D11は、“011”からなるものとする。
図4を参照して、カウンタ一致検出回路31のカウンタ311は、連想メモリ100の制御回路からリセット信号RSTを受けると、カウント数をリセットし、クロック信号CLKの連続する周期T1,T2,T3,T4に同期して、それぞれ、“000”,“001”,“010”,“011”のビット値を順次カウントし、そのカウントした“000”,“001”,“010”,“011”のカウンタ値CV11を一致検出回路312へ順次出力する。
そして、一致検出回路312は、距離演算回路DP11から“011”の距離信号D11を受け、クロック信号CLKの周期T1に同期して“000”のカウンタ値CV11をカウンタ311から受けると、タイミングt1において“0”のクロック数をカウントし、“0”のクロック数において、“000”のカウンタ値CV11が“011”の距離信号D11に一致しないことを検出する。
そして、一致検出回路312は、クロック信号CLKの周期T1の次の周期T2に同期して“001”のカウンタ値CV11をカウンタ311から受けると、タイミングt2において“1”のクロック数をカウントし、“1”のクロック数において、“001”のカウンタ値CV11が“011”の距離信号D11に一致しないことを検出する。
また、一致検出回路312は、クロック信号CLKの周期T2の次の周期T3に同期して“010”のカウンタ値CV11をカウンタ311から受けると、タイミングt3において“2”のクロック数をカウントし、“2”のクロック数において、“010”のカウンタ値CV11が“011”の距離信号D11に一致しないことを検出する。
更に、一致検出回路312は、クロック信号CLKの周期T3の次の周期T4に同期して“011”のカウンタ値CV11をカウンタ311から受けると、タイミングt4において“3”のクロック数をカウントし、“3”のクロック数において、“011”のカウンタ値CV11が“011”の距離信号D11に一致することを検出する。そして、一致検出回路312は、“011”の距離信号D11に一致する“011”のカウンタ値CV11が得られるときのクロック信号CLKのクロック数(=“3”)をカウントしたタイミングt4を示す一致信号MTH1をカウンタ一致検出回路32および連想メモリ100の制御回路へ出力する。その後、一致検出回路312は、図4において、“4”,“5”のクロック数において、“011”のカウンタ値が保持されているように、動作を停止する。
この場合、カウンタ一致検出回路31は、タイミングt1において“0”のクロック数をカウントしてからタイミングt4において“3”のクロック数をカウントして一致信号MTH1を出力するまでに、タイミングt1からタイミングt4までの時間(=t4−t1)を要する。
なお、図2に示すカウンタ一致検出回路32〜3W−1の各々において、カウンタ311は、連想メモリ100の制御回路からリセット信号RSTを受けるまで動作を停止し、連想メモリ100の制御回路からリセット信号RSTを受けると、“000”,“001”,“010”,“011”,・・・のビット値を順次カウントし、そのカウントした“000”,“001”,“010”,“011”,・・・のカウンタ値(=各カウンタ値CV12〜CV1W−1)を一致検出回路312へ順次出力する。
カウンタ一致検出回路32〜3W−1の一致検出回路312は、それぞれ、カウンタ一致検出回路31〜3W−2の一致検出回路312から一致信号MTH1〜MTHW−2を受けるまで動作を停止し、一致信号MTH1〜MTHW−2を受けると、カウンタ値CV12〜CV1W−1がそれぞれ距離信号D12〜D1W−1に一致するときのクロック信号CLKのクロック数をカウントし、そのクロック数をカウントしたタイミングを示す一致信号MTH2〜MTHW−1をそれぞれカウンタ一致検出回路33〜3Wおよび連想メモリ100の制御回路へ出力する。そして、カウンタ一致検出回路32〜3W−1の一致検出回路312は、動作を停止する。
また、カウンタ一致検出回路3Wのカウンタ311は、連想メモリ100の制御回路からリセット信号RSTを受けるまで動作を停止し、連想メモリ100の制御回路からリセット信号RSTを受けると、“000”,“001”,“010”,“011”,・・・のビット値を順次カウントし、そのカウントした“000”,“001”,“010”,“011”,・・・のカウンタ値CV1Wを一致検出回路312へ順次出力する。
カウンタ一致検出回路3Wの一致検出回路312は、カウンタ一致検出回路3W−1の一致検出回路312から一致信号MTHW−1を受けるまで動作を停止し、一致信号MTHW−1を受けると、カウンタ値CV1Wが距離信号D1Wに一致するときのクロック信号CLKのクロック数をカウントし、そのクロック数をカウントしたタイミングを示すタイミング信号(各タイミング信号C1〜CR)をWinner検出器20および連想メモリ100の制御回路へ出力する。そして、カウンタ一致検出回路3Wの一致検出回路312は、動作を停止する。
連想メモリ100の制御回路は、カウンタ一致検出回路31〜3W−1からそれぞれ一致信号MTH1〜MTHW−1を受けると、リセット信号RSTをそれぞれカウンタ一致検出回路32〜3Wへ出力する。また、連想メモリ100の制御回路は、カウンタ一致検出回路3Wからタイミング信号C1を受けると、リセット信号RSTをカウンタ一致検出回路31〜3Wへ出力する。
図5は、図1に示す距離/クロック数変換回路DC1の動作を説明するための図である。なお、図5においては、距離/クロック数変換回路DC1が2つのカウンタ一致検出回路31,32からなる場合を例にして距離/クロック数変換回路DC1の動作を説明する。また、距離信号D11が“3”からなり、距離信号D12が“5”からなることを前提とする。
図5を参照して、距離演算回路DP11は、検索データと参照データSC11との距離を式(1)に従って演算し、距離信号D11(=“011”)をカウンタ一致検出回路31へ出力する。また、距離演算回路DP12は、検索データと参照データSC12との距離を式(1)に従って演算し、距離信号D12(=“101”)をカウンタ一致検出回路32へ出力する。
カウンタ一致検出回路31は、距離演算回路DP11から距離信号D11(=“011”)を受け、連想メモリ100の制御回路からリセット信号RSTおよび検索開始信号SBを受けると、上述した方法によって、カウンタ値CV11が距離信号D11(=“011”)に一致するときのクロック信号CLKのクロック数(=“3”)をカウントし、“3”のクロック数をカウントしたタイミングを示す一致信号MTH1をカウンタ一致検出回路32および連想メモリ100の制御回路へ出力する。そして、カウンタ一致検出回路31は、動作を停止する。
カウンタ一致検出回路32は、距離演算回路DP12から距離信号D12(=“101”)を受け、連想メモリ100の制御回路からリセット信号RSTを受ける。そして、カウンタ一致検出回路32は、“3”のクロック数が得られたタイミングでカウンタ一致検出回路31から一致信号MTH1を受けると、動作を開始し、距離信号D12(=“101”)に一致するカウンタ値CV12(=“101”)が得られるときのクロック信号CLKのクロック数(=“5”)をカウントし、“5”のクロック数をカウントしたタイミングでカウンタ値CV12(=“101”)が距離信号D12(=“101”)に一致することを検出する。
そうすると、カウンタ一致検出回路32は、“5”のクロック数をカウントしたタイミングを示すタイミング信号C1をWinner検出器20および連想メモリ100の制御回路へ出力する。そして、カウンタ一致検出回路32は、動作を停止する。
このように、カウンタ一致検出回路32は、カウンタ一致検出回路31による“3”のクロック数のカウントが完了した後に、“5”のクロック数をカウントしたタイミングで“5”のクロック数をカウントしたタイミングを示すタイミング信号C1を出力する。従って、カウンタ一致検出回路32は、カウンタ一致検出回路31によるクロック数のカウント開始から“3”+“5”=“8”のクロック数をカウントするまでの時間が経過したタイミングで“5”のクロック数をカウントしたタイミングを示すタイミング信号C1を出力する。即ち、カウンタ一致検出回路32は、“3”の距離信号と“5”の距離信号との和である“8”の距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントし、そのクロック数をカウントしたタイミングを示すタイミング信号C1を出力する。
2つのカウンタ一致検出回路31,32が全体でカウントする“8”のクロック数は、カウンタ一致検出回路31がカウントする“3”のクロック数と、カウンタ一致検出回路32がカウントする“5”のクロック数とを加算したものである。このことは、カウンタ一致検出回路32が、カウンタ一致検出回路31において“3”のクロック数がカウントされたタイミングでカウンタ一致検出回路31から一致信号MTH1を受けると、距離信号D12に一致するカウンタ値CV12が得られるときのクロック数をカウントする動作を開始することからも明らかである(図5参照)。
その結果、2つのカウンタ一致検出回路31,32が全体で“8”のクロック数をカウントすることは、距離“3”と距離“5”との和(=“8”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントすることに相当する。
距離/クロック数変換回路DC1は、一般的に、W個の距離信号D11〜D1Wを受ける。そして、W個の距離信号D11〜D1Wの各々は、Mビットのビット長を有する。従って、距離/クロック数変換回路DC1は、M×Wビットのビット長を有する距離信号D11D12・・・D1Wを受ける。
そして、距離/クロック数変換回路DC1において、カウンタ一致検出回路31〜3Wは、それぞれ、距離信号D11〜D1Wにそれぞれ一致するカウンタ値CV11〜CV1Wが得られるときのクロック信号CLKのクロック数CN1〜CNWをカウントする。また、カウンタ一致検出回路32〜3Wは、それぞれ、カウンタ一致検出回路31〜3W−1から一致信号MTH2〜MTHW−1を受けた後に、距離信号D12〜D1Wにそれぞれ一致するカウンタ値CV12〜CV1Wが得られるときのクロック信号CLKのクロック数CN2〜CNWのカウントを開始する。
その結果、距離/クロック数変換回路DC1がカウントするクロック数CN_totalは、クロック数CN1〜CNWの和に等しい。そうすると、クロック数CN1〜CNWは、それぞれ、距離信号D11〜D1Wを表わすので、クロック数CN_totalは、距離信号D11〜D1Wの和を表わす。
一方、マンハッタン距離nMは、次式によって表わされる。
式(2)の右辺の|Inj−Rej|は、式(1)の右辺の|Inj−Rerj|において、1つの行(rによって表わされる)における検索データと参照データとの距離|Inj−Rej|に一致する。
従って、マンハッタン距離nMは、式(1)によって演算した距離をW個の距離について加算したものに等しい。
そうすると、距離/クロック数変換回路DC1がクロック数CN_totalをカウントしたタイミングを示すタイミング信号C1を出力することは、マンハッタン距離nMによって検索データに類似する参照データを検索し、検索データに類似する参照データを検出したことを示すWinner信号を出力することに相当する。
なお、距離/クロック数変換回路DC2〜DCRの各々も、図5において説明した距離/クロック数変換回路DC1の動作と同じ動作によって、それぞれ、タイミング信号C2〜CRを出力する。
図6は、図1に示すWinner検出器20の動作を説明するための図である。図6を参照して、距離/クロック数変換回路DC1〜DCRは、それぞれ、タイミング信号C1〜CRをクロック信号CLKに同期してWinner検出器20へ出力する。
Winner検出器20は、タイミング信号C1〜CRを受け、その受けたタイミング信号C1〜CRの立ち上がりタイミングt1〜tRを検出する。そして、Winner検出器20は、立ち上がりタイミングt1〜tRが早い順にk個のタイミング信号C’1〜C’kを検出する。そうすると、Winner検出器20は、タイミング信号C’1〜C’kをマッチ信号M1〜Mkとして出力する。
例えば、2個のマッチ信号M1,M2を検出する場合、Winner検出器20は、タイミング信号C1〜CRのうち、立ち上がりタイミングが早い順に2個のタイミング信号C1,C3を検出し、その検出したタイミング信号C1,C3をマッチ信号M1,M2として出力する。
なお、k=2以外のk個のタイミング信号C’1〜C’kを検出する場合も、Winner検出器20は、同様にして、k個のタイミング信号C’1〜C’kを検出し、その検出したk個のタイミング信号C’1〜C’kをマッチ信号M1〜Mkとして出力する。
k=1である場合、Winner検出器20は、検索データに最も類似する参照データに対応するタイミング信号(タイミング信号C1〜CRのいずれか)をマッチ信号M1として出力する。
また、k≠1である場合、Winner検出器20は、検索データに類似するk個の参照データに対応するk個のタイミング信号C’1〜C’kをマッチ信号M1〜Mkとして出力する。この場合、k個のタイミング信号C’1〜C’kにおいて、k個の立ち上がりタイミングは、相互に、少なくともクロック信号CLKの1周期分だけ異なるので、立ち上がりタイミングの早い順にk個のタイミング信号C’1〜C’kを正確に検出できる。つまり、連想メモリ100は、検索データに類似するk個の参照データを正確に検索できる。
また、距離/クロック数変換回路DC1〜DCRの動作は、クロック信号CLKに同期して実行されるので、クロック信号CLKの周波数を高くすることによって、連想メモリ100の動作を高速にできる。
従って、連想メモリ100は、マンハッタン距離を用いた場合にも、正確、かつ、高速に類似検索を行うことができる。
図7は、図3に示すカウンタ311の好ましい構成を示す概略図である。この発明の実施の形態においては、カウンタ311は、好ましくは、図7に示すカウンタ311Aからなる。
図7を参照して、カウンタ311Aは、分周器311−1〜311−Mを含む。分周器311−1は、Mビットの距離信号(=距離信号D11〜D1W,D21〜D2W,・・,DR1〜DRWの各々)の最下位ビットに対応して設けられる。分周器311−2は、Mビットの距離信号(=距離信号D11〜D1W,D21〜D2W,・・,DR1〜DRWの各々)の第2位ビットに対応して設けられる。以下、同様にして、分周器311−Mは、Mビットの距離信号(=距離信号D11〜D1W,D21〜D2W,・・,DR1〜DRWの各々)の最上位ビットに対応して設けられる。
分周器311−1は、クロック信号CLKを20回分周し、その分周した分周信号DV1を一致検出回路312へ出力する。分周器311−2は、クロック信号CLKを21回分周し、その分周した分周信号DV2を一致検出回路312へ出力する。以下、同様にして、分周器311−Mは、クロック信号CLKを2M−1回分周し、その分周した分周信号DVMを一致検出回路312へ出力する。
図8は、図7に示すカウンタ311Aの動作を説明するための図である。なお、図8においては、カウンタ311Aが4個の分周器311−1〜311−4からなる場合を例にしてカウンタ311Aの動作を説明する。
図8を参照して、分周器311−1は、クロック信号CLKを20回分周し、その分周した分周信号DV1を一致検出回路312へ出力する。分周器311−2は、クロック信号CLKを21回分周し、その分周した分周信号DV2を一致検出回路312へ出力する。分周器311−3は、クロック信号CLKを22回分周し、その分周した分周信号DV3を一致検出回路312へ出力する。分周器311−4は、クロック信号CLKを23回分周し、その分周した分周信号DV4を一致検出回路312へ出力する。
その結果、4個の分周器311−1〜311−4は、最初に、“0000”のカウンタ値を出力し、2番目に、“0001”のカウンタ値を出力し、3番目に、“0010”のカウンタ値を出力し、以下、同様にして、15番目に、“1110”のカウンタ値を出力し、最後に、“1111”のカウンタ値を出力する。
カウンタ311Aは、4ビット以外のカウンタ値を出力する場合も、M個の分周器311−1〜311−Mによって構成され、M個の分周器311−1〜311−Mは、図8に示す態様と同じ態様で、それぞれ、クロック信号CLKを20回、21回、22回、・・・、2M−1回分周し、その分周した分周信号DV1〜DVMを出力する。その結果、カウンタ311Aは、Mビットのカウンタ値を“010203・・・0M”,“010203・・・1M”,・・・,“111213・・・1M”の順で出力する。
従って、分周器311−1〜311−Mのうち、Mビットのカウンタ値の最下位ビットから最上位ビットへ向かう方向において第m(mは1≦m≦Mを満たす整数)位のビット値を出力する分周器は、クロック信号CLKを2m−1回に分周した信号を出力する。
このように、カウンタ311Aを分周器311−1〜311−Mによって構成することによって、通常のカウンタに比べて、回路サイズを小さくでき、消費電力を低減できる。
カウンタ一致検出回路31〜3Wのカウンタ311が図7に示すカウンタ311Aからなっている場合も、距離/クロック数変換回路DC1〜DCRは、上述した方法によって、それぞれ、M×Wビットのビット長を有する距離信号D11〜D1W,D21〜D2W,・・・,DR1〜DRWの和にそれぞれ一致するクロック数CN_total1〜CN_totalRをカウントしたタイミングを示すタイミング信号C1〜CRをWinner検出器20へ出力する。
上述したように、距離/クロック数変換回路DC1〜DCRの各々は、図2に示すように、直列に接続されたW個のカウンタ一致検出回路31〜3Wからなる。
W=2である場合、距離/クロック数変換回路DC1〜DCRの各々は、カウンタ一致検出回路31,32からなる。この場合、距離演算回路DP11〜DP1Wは、距離演算回路DP11,DP12からなり、距離信号D11〜D1Wは、距離信号D11,D12からなる。
そして、カウンタ一致検出回路31は、距離信号D11,D12を一列に配列したときの一方端の距離信号である1番目の距離信号D11に対応して設けられ、1番目の距離信号D11を距離演算回路DP11から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けた1番目の距離信号D11に一致するカウンタ値が得られるときのクロック数CN1をカウントし、クロック数CN1をカウントしたタイミングを示す一致信号MTH1を出力する。
また、カウンタ一致検出回路32は、距離信号D11,D12を一列に配列したときの一方端からW番目(=2番目)の距離信号であるW番目(=2番目)の距離信号D12に対応して設けられ、カウンタ一致検出回路31から一致信号MTH1を受けると駆動されるとともにW番目(=2番目)の距離信号D12を距離演算回路DP12から受け、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けたW番目(=2番目)の距離信号D12に一致するカウンタ値が得られるときのクロック数CN2をカウントし、クロック数CN2をカウントしたタイミングを示すタイミング信号C1をWinner検出器20へ出力する。
この場合、カウンタ一致検出回路31は、「第1のカウンタ一致検出回路」を構成し、カウンタ一致検出回路32は、「第2のカウンタ一致検出回路」を構成する。
また、W=3以上である場合、距離/クロック数変換回路DC1〜DCRの各々は、カウンタ一致検出回路31〜3Wからなる。
そして、カウンタ一致検出回路31は、距離信号D11〜D1Wを一列に配列したときの一方端の距離信号である1番目の距離信号D11に対応して設けられ、1番目の距離信号D11を距離演算回路DP11から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けた1番目の距離信号D11に一致するカウンタ値が得られるときのクロック数CN1をカウントし、クロック数CN1をカウントしたタイミングを示す一致信号MTH1を出力する。
また、カウンタ一致検出回路32〜3W−1は、2番目の距離信号D12からW−1番目の距離信号D1W−1までのW−2個の距離信号D12〜D1W−1に対応して設けられる。そして、カウンタ一致検出回路32〜3W−1の各々は、カウンタ一致検出回路31またはw−1(wは2≦w≦W−1を満たす整数)番目の距離信号に対応して設けられたカウンタ一致検出回路32〜3W−2から1番目またはw−1番目の距離信号に対応して設けられたカウンタ一致検出回路31〜3W−2から1番目またはw番目の距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントしたタイミングを示す一致信号MTH1〜MTH3W−2を受けると駆動されるとともにw番目の距離信号(=距離信号D12〜D1W−1のいずれか)を受け、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、w番目の距離信号(=距離信号D12〜D1W−1のいずれか)に一致するカウンタ値が得られるときのクロック数CN3をカウントし、クロック数CN3をカウントしたタイミングを示す一致信号(=一致信号MTH2〜MTHW−1のいずれか)を出力する。
更に、カウンタ一致検出回路3Wは、W番目の距離信号D1Wに対応して設けられ、W−1番目の距離信号に対応して設けられたカウンタ一致検出回路3W−1から一致信号MTHW−1を受けると駆動されるとともにW番目の距離信号D1Wを受け、カウンタ一致検出回路3W−1から一致信号MTH3W−1を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、W番目の距離信号D1Wに一致するカウンタ値が得られるときのクロック数CN4をカウントし、クロック数CN4をカウントしたタイミングを示すタイミング信号C1をWinner検出器20へ出力する。
この場合、カウンタ一致検出回路31は、「第1のカウンタ一致検出回路」を構成し、カウンタ一致検出回路32〜3W−1は、「W−2個の第3のカウンタ一致検出回路」を構成し、カウンタ一致検出回路3Wは、「第4のカウンタ一致検出回路」を構成する。
図9は、図1に示す距離/クロック数変換回路DC1〜DCRの別の構成を示す概略図である。
この発明の実施の形態においては、距離/クロック数変換回路DC1〜DCRの各々は、図9に示す距離/クロック数変換回路DC’1からなっていてもよい。この場合、W=2i(iは2以上の整数)である。
図9を参照して、距離/クロック数変換回路DC’1は、増幅器41〜4Lと、カウンタ一致検出回路51〜5Lとを含む。ここで、L=W/s(sは、W以下の2xを満たす整数、xは、正の整数)である。
増幅器41は、連想メモリ100に内蔵されたクロック発生回路(図示せず)からクロック信号CLKを受け、その受けたクロック信号CLKを増幅して増幅器42およびカウンタ一致検出回路51へ出力する。
増幅器42は、クロック信号CLKを増幅器41から受け、その受けたクロック信号CLKを増幅して増幅器43(図示せず)およびカウンタ一致検出回路52へ出力する。
以下、同様にして、増幅器4Lは、クロック信号CLKを増幅器4L−1(図示せず)から受け、その受けたクロック信号CLKを増幅してカウンタ一致検出回路5Lへ出力する。
カウンタ一致検出回路51,52,・・・,5Lは、それぞれ、s個の距離演算回路DP11,DP1(1+L),・・・,DP1(1+(u−1)L)、s個の距離演算回路DP12,DP1(2+L),・・・,DP1(2+(u−1)L)、・・・、s個の距離演算回路DP1L,DP1(L+L),・・・,DP1(L+(u−1)L)に対応して設けられる。なお、uは、1,2,3,・・・,sである。
そして、カウンタ一致検出回路51〜5Lは、直列に接続される。また、カウンタ一致検出回路51〜5Lの各々は、図3に示すカウンタ一致検出回路31と同じ構成からなる。この場合、カウンタ一致検出回路51〜5Lの各々は、図3に示すカウンタ311または図7に示すカウンタ311Aを含む。
カウンタ一致検出回路51は、増幅器41からクロック信号CLKを受け、連想メモリ100の制御回路(図示せず)から検索開始信号SBを受け、距離演算回路DP11,DP1(1+L),・・・,DP1(1+(u−1)L)からそれぞれ距離信号D11,D1(1+L),・・・,D1(1+(u−1)L)を受ける。
カウンタ一致検出回路51は、距離信号D11,D1(1+L),・・・,D1(1+(u−1)L)を受け、検索開始信号SBがLレベルからHレベルに切り替わると、上述した方法によって、距離信号D11,D1(1+L),・・・,D1(1+(u−1)L)の和に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントする。そして、カウンタ一致検出回路51は、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してカウンタ一致検出回路52へ出力する。その後、カウンタ一致検出回路51は、動作を停止する。
また、カウンタ一致検出回路52は、増幅器42からクロック信号CLKを受け、カウンタ一致検出回路51から一致信号MTH1を受け、距離演算回路DP12,DP1(2+L),・・・,DP1(2+(u−1)L)からそれぞれ距離信号D12,D1(2+L),・・・,D1(2+(u−1)L)を受ける。
カウンタ一致検出回路52は、距離信号D12,D1(2+L),・・・,D1(2+(u−1)L)を受け、一致信号MTH1を受けると、上述した方法によって、距離信号D12,D1(2+L),・・・,D1(2+(u−1)L)の和に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントする。そして、カウンタ一致検出回路52は、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してカウンタ一致検出回路53へ出力する。その後、カウンタ一致検出回路52は、動作を停止する。
以下、同様にして、カウンタ一致検出回路5Lは、増幅器4Lからクロック信号CLKを受け、カウンタ一致検出回路5L−1から一致信号MTHL−1を受け、距離演算回路DP1L,DP1(L+L),・・・,DP1(L+(u−1)L)からそれぞれ距離信号D1L,D1(L+L),・・・,D1(L+(u−1)L)を受ける。
カウンタ一致検出回路5Lは、距離信号D1L,D1(L+L),・・・,D1(L+(u−1)L)を受け、一致信号MTHL−1を受けると、上述した方法によって、距離信号D1L,D1(L+L),・・・,D1(L+(u−1)L)の和に一致するカウンタ値CV1Lが得られるときのクロック信号CLKのクロック数CN_Lをカウントする。そして、カウンタ一致検出回路5Lは、クロック数CN_Lをカウントしたタイミングを示すタイミング信号C1をクロック信号CLKに同期してWinner検出器20へ出力する。その後、カウンタ一致検出回路5Lは、動作を停止する。
なお、距離信号D11,D1(1+L),・・・,D1(1+(u−1)L),D12,D1(2+L),・・・,D1(2+(u−1)L),・・・,D1L,D1(L+L),・・・,D1(L+(u−1)L)の各々は、Mビットのビット値からなる。
従って、距離/クロック数変換回路DC1〜DCR(=距離/クロック数変換回路DC’1)の各々は、L(=W/s)個の距離信号に対応して設けられ、各々がMビットのビット長を有するW個の距離信号に基づいて、タイミング信号(タイミング信号C1〜CRのいずれか)を出力するL(=W/s)個のカウンタ一致検出回路を含み、L(=W/s)個のカウンタ一致検出回路は、各々がL(=W/s)個の距離信号からなるs組の距離信号を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けたs組の距離信号に含まれるW個の距離信号の和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントし、そのクロック数をカウントしたタイミングを示すタイミング信号(タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
カウンタ一致検出回路51〜5L−1の各々は、s個の距離信号の和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(=クロック数CN_1〜CN_L−1のいずれか)をカウントしたタイミングを示す一致信号(=一致信号MTH1〜MTHL−1のいずれか)を出力し、カウンタ一致検出回路5Lは、s個の距離信号の和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_Lをカウントしたタイミングを示すタイミング信号(タイミング信号C1〜CRのいずれか)を出力し、L=W/sであるので、L(=W/s)個のカウンタ一致検出回路51〜5Lは、結局、(W/s)×s=W個の距離信号の和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントしたタイミングを示すタイミング信号(タイミング信号C1〜CRのいずれか)を出力することになる。
図10は、図1に示す距離/クロック数変換回路DC1〜DCRの更に別の構成を示す概略図である。
この発明の実施の形態においては、距離/クロック数変換回路DC1〜DCRの各々は、図10に示す距離/クロック数変換回路DC”1からなっていてもよい。この場合も、W=2i(iは2以上の整数)である。
図10を参照して、距離/クロック数変換回路DC”1は、図9に示す距離/クロック数変換回路DC’1にスイッチング制御回路60およびマルチプレクサ61〜6Lを追加したものであり、その他は、距離/クロック数変換回路DC’1と同じである。
距離/クロック数変換回路DC”1においては、増幅器41〜4Lは、クロック信号CLKを増幅し、その増幅したクロック信号CLKをそれぞれカウンタ一致検出回路51〜5Lへ出力するとともに、その増幅したクロック信号CLKをスイッチング制御回路60へ出力する。
また、距離/クロック数変換回路DC”1においては、マルチプレクサ61,62,・・・,6Lは、それぞれ、s個の距離演算回路DP11,DP1(1+L),・・・,DP1(1+(u−1)L)、s個の距離演算回路DP12,DP1(2+L),・・・,DP1(2+(u−1)L)、・・・、s個の距離演算回路DP1L,DP1(L+L),・・・,DP1(L+(u−1)L)に対応して設けられる。そして、カウンタ一致検出回路51〜5Lは、それぞれ、マルチプレクサ61〜6Lに対応して設けられる。
スイッチング制御回路60は、連想メモリ100の制御回路から検索開始信号SBおよびリセット信号RSTを受け、カウンタ一致検出回路51〜5Lからそれぞれ一致信号MTH1〜MTHLを受ける。
そして、スイッチング制御回路60は、検索開始信号SBおよびリセット信号RSTを受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
また、スイッチング制御回路60は、一致信号MTHLをカウンタ一致検出回路5Lから受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。スイッチング制御回路60は、この処理をs−1回実行する。
更に、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。スイッチング制御回路60は、この処理をs回実行する。
更に、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路53へ出力するとともに出力信号OUT3をマルチプレクサ63へ出力する。スイッチング制御回路60は、この処理をs回実行する。
以下、同様にして、スイッチング制御回路60は、一致信号MTHL−1をカウンタ一致検出回路5L−1から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路5Lへ出力するとともに出力信号OUTLをマルチプレクサ6Lへ出力する。スイッチング制御回路60は、この処理をs回実行する。
マルチプレクサ61は、s個の距離信号D11,D1(1+L),・・・,D1(1+(u−1)L)を受ける。そして、マルチプレクサ61は、1回目の出力信号OUT1をスイッチング制御回路60から受けると、距離信号D11をカウンタ一致検出回路51へ出力し、2回目の出力信号OUT1をスイッチング制御回路60から受けると、距離信号D1(1+L)をカウンタ一致検出回路51へ出力し、以下、同様にして、s回目の出力信号OUT1をスイッチング制御回路60から受けると、距離信号D1(1+(u−1)L)をカウンタ一致検出回路51へ出力する。
マルチプレクサ62は、s個の距離信号D12,D1(2+L),・・・,D1(2+(u−1)L)を受ける。そして、マルチプレクサ62は、1回目の出力信号OUT2をスイッチング制御回路60から受けると、距離信号D12をカウンタ一致検出回路52へ出力し、2回目の出力信号OUT2をスイッチング制御回路60から受けると、距離信号D1(2+L)をカウンタ一致検出回路52へ出力し、以下、同様にして、s回目の出力信号OUT2をスイッチング制御回路60から受けると、距離信号D1(2+(u−1)L)をカウンタ一致検出回路52へ出力する。
以下、同様にして、マルチプレクサ6Lは、s個の距離信号D1L,D1(L+L),・・・,D1(L+(u−1)L)を受ける。そして、マルチプレクサ6Lは、1回目の出力信号OUTLをスイッチング制御回路60から受けると、距離信号D1Lをカウンタ一致検出回路5Lへ出力し、2回目の出力信号OUTLをスイッチング制御回路60から受けると、距離信号D1(L+L)をカウンタ一致検出回路5Lへ出力し、以下、同様にして、s回目の出力信号OUTLをスイッチング制御回路60から受けると、距離信号D1(L+(u−1)L)をカウンタ一致検出回路5Lへ出力する。
カウンタ一致検出回路51は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路51は、距離信号D11をマルチプレクサ61から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。カウンタ一致検出回路51は、この処理をs個の距離信号D11,D1(1+L),・・・,D1(1+(u−1)L)の全てについて実行する。
また、カウンタ一致検出回路52は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路52は、距離信号D12をマルチプレクサ62から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。カウンタ一致検出回路52は、この処理をs個の距離信号D12,D1(2+L),・・・,D1(2+(u−1)L)の全てについて実行する。
以下、同様にして、カウンタ一致検出回路5Lは、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路5Lは、距離信号D1Lをマルチプレクサ6Lから受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D1Lに一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_Lをカウントし、クロック数CN_Lをカウントしたタイミングを示す一致信号MTHLをスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路5Lは、動作を停止する。カウンタ一致検出回路5Lは、この処理をs−1個の距離信号D12,D1(2+L),・・・,D1(2+(u−1)L−1)の全てについて実行する。
そして、カウンタ一致検出回路5Lは、s回目のリセット信号RSTをスイッチング制御回路60から受けると駆動されるとともに距離信号D1(L+(u−1)L)をマルチプレクサ6Lから受け、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D1(L+(u−1)L)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_Lをカウントし、クロック数CN_Lをカウントしたタイミングを示すタイミング信号C1をWinner検出器20へ出力する。
距離/クロック数変換回路DC1〜DCR(=距離/クロック数変換回路DC”1)の各々においては、検索データに類似する参照データの検索が開始されると、スイッチング制御回路60は、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
そして、マルチプレクサ61は、スイッチング制御回路60からの1回目の出力信号OUT1に応じて、距離信号D11をカウンタ一致検出回路51へ出力する。
カウンタ一致検出回路51は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路51は、距離信号D11をマルチプレクサ61から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路51からの一致信号MTH1に応じて、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、スイッチング制御回路60からの1回目の出力信号OUT2に応じて、距離信号D12をカウンタ一致検出回路52へ出力する。
カウンタ一致検出回路52は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路52は、距離信号D12をマルチプレクサ62から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
以下、同様にして、スイッチング制御回路60は、カウンタ一致検出回路5L−1からの一致信号MTHL−1に応じて、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路5Lへ出力するとともに出力信号OUTLをマルチプレクサ6Lへ出力する。
そして、マルチプレクサ6Lは、スイッチング制御回路60からの1回目の出力信号OUTLに応じて、距離信号D1Lをカウンタ一致検出回路5Lへ出力する。
カウンタ一致検出回路5Lは、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路5Lは、距離信号D1Lをマルチプレクサ6Lから受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D1Lに一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_Lをカウントし、クロック数CN_Lをカウントしたタイミングを示す一致信号MTHLをスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路5Lは、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路5Lからの一致信号MTHLに応じて、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
その後、カウンタ一致検出回路51〜5L−1、スイッチング制御回路60およびマルチプレクサ61〜6L−1は、上述した動作をs−1回繰り返し実行し、カウンタ一致検出回路5Lおよびマルチプレクサ6Lは、上述した動作をs−2回繰り返し実行する。
そして、カウンタ一致検出回路5Lは、s回目のリセット信号RSTをスイッチング制御回路60から受け、距離信号D1(L+(u−1)L)をマルチプレクサ6Lから受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D1(L+(u−1)L)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_Lをカウントし、クロック数CN_Lをカウントしたタイミングを示すタイミング信号C1をWinner検出器20へ出力する。そして、カウンタ一致検出回路5Lは、動作を停止する。
L(=W/s)個のカウンタ一致検出回路51〜5Lを1個のカウンタ一致検出回路MDCと考えた場合、カウンタ一致検出回路MDCは、1回目、L(=W/s)個の距離信号D11〜D1Lを受ける。そして、カウンタ一致検出回路51〜5Lがそれぞれ距離信号D11〜D1Lに一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1〜CN_Lをカウントし、クロック数CN_1〜CN_Lをカウントしたタイミングを示す一致信号MTH1〜MTHLを出力することは、カウンタ一致検出回路MDCが距離信号D11〜D1Lの和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(CN_1+CN_2+・・・+CN_L)をカウントし、そのクロック数(CN_1+CN_2+・・・+CN_L)をカウントしたタイミングを示す一致信号を出力することに相当する。また、カウンタ一致検出回路MDCは、この処理をs−1回繰り返し実行する。そして、カウンタ一致検出回路MDCは、s−1回目の一致信号を出力すると、L(=W/s)個の距離信号D1(1+(u−1)L),D1(2+(u−1)L),・・・,D1(L+(u−1)L)の和に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(CN_1+CN_2+・・・+CN_L)をカウントし、そのクロック数(CN_1+CN_2+・・・+CN_L)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
従って、距離/クロック数変換回路DC”1においては、L(=W/s)個のカウンタ一致検出回路51〜5Lは、L(=W/s)個の距離信号D11〜D1Lを受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けたL(=W/s)個の距離信号D11〜D1Lの和に一致するカウンタ値が得られるときのクロック信号CLKの第1のクロック数をカウントし、第1のクロック数をカウントしたタイミングを示す第1の一致信号を出力する処理をs−1回繰り返し実行し、前記第1の一致信号をs−1回出力し、かつ、s回目にL(=W/s)個の距離信号を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、その受けたL(=W/s)個の距離信号に一致するカウンタ値が得られるときのクロック信号CLKの第2のクロック数をカウントし、前記第2のクロック数をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
図11は、図9に示す距離/クロック数変換回路DC’1の具体的な構成を示す概略図である。
図11を参照して、W=2i=23=8からなり、s=2x=21=2からなる場合、L=W/s=8/2=4であり、距離/クロック数変換回路DC’1−1は、増幅器41〜44と、カウンタ一致検出回路51〜54とを含む。
また、W個の距離信号D11〜D1Wは、8個の距離信号D11〜D18からなり、W個の距離演算回路DP11〜DP1Wは、8個の距離演算回路DP11〜DP18からなる。ここで、距離信号D11〜D18は、それぞれ、D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”であるものとする。
そして、カウンタ一致検出回路51は、2個の距離演算回路DP11,DP15に対応して設けられ、カウンタ一致検出回路52は、2個の距離演算回路DP12,DP16に対応して設けられ、カウンタ一致検出回路53は、2個の距離演算回路DP13,DP17に対応して設けられ、カウンタ一致検出回路54は、2個の距離演算回路DP14,DP18に対応して設けられる。
図12は、図11に示す距離/クロック数変換回路DC’1−1の動作を説明するための図である。
距離/クロック数変換回路DC1〜DCRの各々は、図11に示す距離/クロック数変換回路DC’1−1からなる。そして、距離/クロック数変換回路DC1〜DCRの各々(=距離/クロック数変換回路DC’1−1)において、検索データに類似する参照データの検索が開始されると、カウンタ一致検出回路51は、距離演算回路DP11,DP15からそれぞれ距離信号D11(=“3”),D15(=“2”)を受け、カウンタ一致検出回路52は、距離演算回路DP12,DP16からそれぞれ距離信号D12(=“2”),D16(=“4”)を受け、カウンタ一致検出回路53は、距離演算回路DP13,DP17からそれぞれ距離信号D13(=“5”),D17(=“2”)を受け、カウンタ一致検出回路54は、距離演算回路DP14,DP18からそれぞれ距離信号D14(=“1”),D18(=“3”)を受ける。
そうすると、カウンタ一致検出回路51は、距離信号D11(=“3”),D15(=“2”)の和(=“5”=“101”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN1(=“5”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN1(=“5”)をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してカウンタ一致検出回路52へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
カウンタ一致検出回路52は、一致信号MTH1をカウンタ一致検出回路51から受けると、距離信号D12(=“2”),D16(=“4”)の和(=“6”=“110”)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN2(=“6”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN2(=“6”)をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してカウンタ一致検出回路53へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
カウンタ一致検出回路53は、一致信号MTH2をカウンタ一致検出回路52から受けると、距離信号D13(=“5”),D17(=“2”)の和(=“7”=“111”)に一致するカウンタ値CV13が得られるときのクロック信号CLKのクロック数CN4(=“7”)をカウントする。そして、カウンタ一致検出回路53は、クロック数CN4(=“7”)をカウントしたタイミングを示す一致信号MTH3をクロック信号CLKに同期してカウンタ一致検出回路54へ出力する。そして、カウンタ一致検出回路53は、動作を停止する。
カウンタ一致検出回路54は、一致信号MTH3をカウンタ一致検出回路53から受けると、距離信号D14(=“1”),D18(=“3”)の和(=“4”=“100”)に一致するカウンタ値CV14が得られるときのクロック数CN4(=“4”)をカウントする。そして、カウンタ一致検出回路54は、クロック数CN4(=“4”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をクロック信号CLKに同期してWinner検出器20へ出力する。そして、カウンタ一致検出回路54は、動作を停止する。
このように、カウンタ一致検出回路51〜54の各々は、2つの距離信号の和に一致するカウンタ値が得られるときのクロック数をカウントし、2つの距離信号の和に一致するカウンタ値が得られるときのクロック数をカウントすると、それぞれ、一致信号MTH1〜MTH3およびタイミング信号(=タイミング信号C1〜CRのいずれか)を出力する。
距離/クロック数変換回路DC1〜DCRの各々が距離/クロック数変換回路DC’1−1からなる場合、距離/クロック数変換回路DC1〜DCRの各々は、距離信号D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”の和(=“22”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(=“22”)をカウントし、クロック数(=“22”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
図13は、図9に示す距離/クロック数変換回路DC’1の別の具体的な構成を示す概略図である。
図13を参照して、W=2i=23=8からなり、s=2x=22=4からなる場合、L=W/s=8/4=2であり、距離/クロック数変換回路DC’1−2は、増幅器41,42と、カウンタ一致検出回路51,52とを含む。
また、W個の距離信号D11〜D1Wは、8個の距離信号D11〜D18からなり、W個の距離演算回路DP11〜DP1Wは、8個の距離演算回路DP11〜DP18からなる。また、距離信号D11〜D18の各々は、4ビットのビット値からなる。ここで、距離信号D11〜D18は、それぞれ、D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”であるものとする。
そして、カウンタ一致検出回路51は、4個の距離演算回路DP11,DP13,DP15,DP17に対応して設けられ、カウンタ一致検出回路52は、4個の距離演算回路DP12,DP14,DP16,DP18に対応して設けられる。
なお、カウンタ一致検出回路51,52の各々において、カウンタ311または311Aは、4ビットのカウンタ値を一致検出回路312へ出力する。
図14は、図13に示す距離/クロック数変換回路DC’1−2の動作を説明するための図である。
距離/クロック数変換回路DC1〜DCRの各々は、図13に示す距離/クロック数変換回路DC’1−2からなる。そして、距離/クロック数変換回路DC1〜DCRの各々(=距離/クロック数変換回路DC’1−2)において、検索データに類似する参照データの検索が開始されると、カウンタ一致検出回路51は、距離演算回路DP11,DP13,DP15,DP17からそれぞれ距離信号D11(=“3”),D13(=“5”),D15(=“2”),D17(=“2”)を受け、カウンタ一致検出回路52は、距離演算回路DP12,DP14,DP16,DP18からそれぞれ距離信号D12(=“2”),D14(=“1”),D16(=“4”),D18(=“3”)を受ける。
そうすると、カウンタ一致検出回路51は、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11(=“3”),D13(=“5”),D15(=“2”),D17(=“2”)の和(=“12”=“1100”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN1(=“12”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN1をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してカウンタ一致検出回路52へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
カウンタ一致検出回路52は、一致信号MTH1をカウンタ一致検出回路51から受けると駆動され、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12(=“2”),D14(=“1”),D16(=“4”),D18(=“3”)の和(=“10”=“1010”)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN2(=“10”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN2(=“10”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をクロック信号CLKに同期してWinner検出器20へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
このように、カウンタ一致検出回路51,52の各々は、4つの距離信号の和に一致するカウンタ値が得られるときのクロック数をカウントし、4つの距離信号の和に一致するカウンタ値が得られるときのクロック数をカウントすると、それぞれ、一致信号MTH1およびタイミング信号(=タイミング信号C1〜CRのいずれか)を出力する。
距離/クロック数変換回路DC1〜DCRの各々が距離/クロック数変換回路DC’1−2からなる場合も、距離/クロック数変換回路DC1〜DCRの各々は、距離信号D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”の和(=“22”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(=“22”)をカウントし、クロック数(=“22”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
図15は、図10に示す距離/クロック数変換回路DC”1の具体的な構成を示す概略図である。
図15を参照して、W=2i=23=8からなり、s=2x=21=2からなる場合、L=W/s=8/2=4であり、距離/クロック数変換回路DC”1−1は、増幅器41〜44と、カウンタ一致検出回路51〜54と、スイッチング制御回路60と、マルチプレクサ61〜64とを含む。
また、W個の距離信号D11〜D1Wは、8個の距離信号D11〜D18からなり、W個の距離演算回路DP11〜DP1Wは、8個の距離演算回路DP11〜DP18からなる。ここで、距離信号D11〜D18は、それぞれ、D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”であるものとする。
距離/クロック数変換回路DC”1−1においては、マルチプレクサ61は、2個の距離演算回路DP11,DP15に対応して設けられ、マルチプレクサ62は、2個の距離演算回路DP12,DP16に対応して設けられ、マルチプレクサ63は、2個の距離演算回路DP13,DP17に対応して設けられ、マルチプレクサ64は、2個の距離演算回路DP14,DP18に対応して設けられる。
カウンタ一致検出回路51〜54は、それぞれ、マルチプレクサ61〜64に対応して設けられる。
距離/クロック数変換回路DC”1−1においては、増幅器41〜44は、クロック信号CLKを増幅し、その増幅したクロック信号CLKをそれぞれカウンタ一致検出回路51〜54へ出力するとともに、その増幅したクロック信号CLKをスイッチング制御回路60へ出力する。
スイッチング制御回路60は、連想メモリ100の制御回路から検索開始信号SBおよびリセット信号RSTを受け、カウンタ一致検出回路51〜54からそれぞれ一致信号MTH1〜MTH4を受ける。
そして、スイッチング制御回路60は、検索開始信号SBおよびリセット信号RSTを受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
また、スイッチング制御回路60は、一致信号MTH4をカウンタ一致検出回路54から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。スイッチング制御回路60は、この処理を1(=s−1=2−1)回実行する。
更に、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。スイッチング制御回路60は、この処理を2(=s=2)回実行する。
更に、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路53へ出力するとともに出力信号OUT3をマルチプレクサ63へ出力する。スイッチング制御回路60は、この処理を2(=s=2)回実行する。
更に、スイッチング制御回路60は、一致信号MTH3をカウンタ一致検出回路53から受けると、クロック信号CLKに同期して、リセット信号RSTをカウント一致検出回路54へ出力するとともに出力信号OUT4をマルチプレクサ64へ出力する。スイッチング制御回路60は、この処理を2(=s=2)回実行する。
マルチプレクサ61は、2個の距離信号D11,D15を受ける。そして、マルチプレクサ61は、1回目の出力信号OUT1をスイッチング制御回路60から受けると、距離信号D11をカウンタ一致検出回路51へ出力し、2回目の出力信号OUT1をスイッチング制御回路60から受けると、距離信号D15をカウンタ一致検出回路51へ出力する。
マルチプレクサ62は、2個の距離信号D12,D16を受ける。そして、マルチプレクサ62は、1回目の出力信号OUT2をスイッチング制御回路60から受けると、距離信号D12をカウンタ一致検出回路52へ出力し、2回目の出力信号OUT2をスイッチング制御回路60から受けると、距離信号D16をカウンタ一致検出回路52へ出力する。
マルチプレクサ63は、2個の距離信号D13,D17を受ける。そして、マルチプレクサ63は、1回目の出力信号OUT3をスイッチング制御回路60から受けると、距離信号D13をカウンタ一致検出回路53へ出力し、2回目の出力信号OUT3をスイッチング制御回路60から受けると、距離信号D17をカウンタ一致検出回路53へ出力する。
マルチプレクサ64は、2個の距離信号D14,D18を受ける。そして、マルチプレクサ64は、1回目の出力信号OUT4をスイッチング制御回路60から受けると、距離信号D14をカウンタ一致検出回路54へ出力し、2回目の出力信号OUT4をスイッチング制御回路60から受けると、距離信号D18をカウンタ一致検出回路54へ出力する。
カウンタ一致検出回路51は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路51は、距離信号D11をマルチプレクサ61から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。カウンタ一致検出回路51は、この処理を2個の距離信号D11,D15の全てについて実行する。
また、カウンタ一致検出回路52は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路52は、距離信号D12をマルチプレクサ62から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。カウンタ一致検出回路52は、この処理を2個の距離信号D12,D16の全てについて実行する。
更に、カウンタ一致検出回路53は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路53は、距離信号D13をマルチプレクサ63から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D13に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_3をカウントし、クロック数CN_3をカウントしたタイミングを示す一致信号MTH3をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路53は、動作を停止する。カウンタ一致検出回路53は、この処理を2個の距離信号D13,D17の全てについて実行する。
更に、カウンタ一致検出回路54は、リセット信号RSTをスイッチング制御回路60から受けると駆動される。そして、カウンタ一致検出回路54は、距離信号D14をマルチプレクサ64から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D14に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_4をカウントし、クロック数CN_4をカウントしたタイミングを示す一致信号MTH4をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路54は、動作を停止する。
そして、カウンタ一致検出回路54は、2回目のリセット信号RSTをスイッチング制御回路60から受け、距離信号D18をマルチプレクサ64から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D18に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_4をカウントし、クロック数CN_4をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。そして、カウンタ一致検出回路54は、動作を停止する。
図16は、図15に示す距離/クロック数変換回路DC”1−1の動作を説明するための図である。
距離/クロック数変換回路DC1〜DCR(=距離/クロック数変換回路DC”1−1)の各々において、検索データに類似する参照データの検索が開始されると、スイッチング制御回路60は、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
そして、マルチプレクサ61は、スイッチング制御回路60からの1回目の出力信号OUT1に応じて、距離信号D11(=“3”)をカウンタ一致検出回路51へ出力する。
カウンタ一致検出回路51は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路51は、距離信号D11(=“3”)をマルチプレクサ61から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D11(=“3”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1(=“3”)をカウントし、クロック数CN_1(=“3”)をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路51から一致信号MTH1を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、スイッチング制御回路60からの1回目の出力信号OUT2に応じて、距離信号D12(=“2”)をカウンタ一致検出回路52へ出力する。
カウンタ一致検出回路52は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路52は、距離信号D12(=“2”)をマルチプレクサ62から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D12(=“2”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2(=“2”)をカウントし、クロック数CN_2(=“2”)をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路52から一致信号MTH2を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路53へ出力するとともに出力信号OUT3をマルチプレクサ63へ出力する。
マルチプレクサ63は、スイッチング制御回路60からの1回目の出力信号OUT3に応じて、距離信号D13(=“5”)をカウンタ一致検出回路53へ出力する。
カウンタ一致検出回路53は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路53は、距離信号D13(=“5”)をマルチプレクサ63から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D13(=“5”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_3(=“5”)をカウントし、クロック数CN_3(=“5”)をカウントしたタイミングを示す一致信号MTH3をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路53は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路53から一致信号MTH3を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路54へ出力するとともに出力信号OUT4をマルチプレクサ64へ出力する。
マルチプレクサ64は、スイッチング制御回路60からの1回目の出力信号OUT4に応じて、距離信号D14(=“1”)をカウンタ一致検出回路54へ出力する。
カウンタ一致検出回路54は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路54は、距離信号D14(=“1”)をマルチプレクサ64から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D14(=“1”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_4(=“1”)をカウントし、クロック数CN_4(=“1”)をカウントしたタイミングを示す一致信号MTH4をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路54は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路54から一致信号MTH4を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
マルチプレクサ61は、スイッチング制御回路60からの2回目の出力信号OUT1に応じて、距離信号D15(=“2”)をカウンタ一致検出回路51へ出力する。
カウンタ一致検出回路51は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路51は、距離信号D15(=“2”)をマルチプレクサ61から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D15(=“2”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1(=“2”)をカウントし、クロック数CN_1(=“2”)をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路51から一致信号MTH1を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、スイッチング制御回路60からの2回目の出力信号OUT2に応じて、距離信号D16(=“4”)をカウンタ一致検出回路52へ出力する。
カウンタ一致検出回路52は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路52は、距離信号D16(=“4”)をマルチプレクサ62から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D16(=“4”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2(=“4”)をカウントし、クロック数CN_2(=“4”)をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路52から一致信号MTH2を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路53へ出力するとともに出力信号OUT3をマルチプレクサ63へ出力する。
マルチプレクサ63は、スイッチング制御回路60からの2回目の出力信号OUT3に応じて、距離信号D17(=“2”)をカウンタ一致検出回路53へ出力する。
カウンタ一致検出回路53は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路53は、距離信号D17(=“2”)をマルチプレクサ63から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D17(=“2”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_3(=“2”)をカウントし、クロック数CN_3(=“2”)をカウントしたタイミングを示す一致信号MTH3をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路53は、動作を停止する。
その後、スイッチング制御回路60は、カウンタ一致検出回路53から一致信号MTH3を受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路54へ出力するとともに出力信号OUT4をマルチプレクサ64へ出力する。
マルチプレクサ64は、スイッチング制御回路60からの2回目の出力信号OUT4に応じて、距離信号D18(=“3”)をカウンタ一致検出回路54へ出力する。
カウンタ一致検出回路54は、スイッチング制御回路60からのリセット信号RSTに応じて駆動される。そして、カウンタ一致検出回路54は、距離信号D18(=“3”)をマルチプレクサ64から受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、距離信号D18(=“3”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_4(=“3”)をカウントし、クロック数CN_4(=“3”)をカウントしたタイミングを示す一致信号MTH4をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路54は、動作を停止する。
そうすると、スイッチング制御回路60は、カウンタ一致検出回路54からの2回目の一致信号MTH4に応じて、2回目の一致信号MTH4によって示されるタイミングと同じタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
このように、カウンタ一致検出回路51〜54は、それぞれ、距離信号D11〜D14に一致するカウンタ値が得られたときのクロック信号CLKのクロック数CN_1〜CN_4をカウントし、クロック数CN_1〜CN_4をカウントしたタイミングを示す一致信号MTH1〜MTH4を出力した後に、それぞれ、距離信号D15〜D18に一致するカウンタ値が得られたときのクロック信号CLKのクロック数CN_1〜CN_4をカウントし、クロック数CN_1〜CN_4をカウントしたタイミングを示す一致信号MTH1〜MTH4を出力する。
つまり、カウンタ一致検出回路51〜54の各々は、距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数をカウントし、そのクロック数をカウントしたタイミングを示す一致信号を出力する処理を2回繰り返し実行する。
距離/クロック数変換回路DC1〜DCRの各々が距離/クロック数変換回路DC”1−1からなる場合も、距離/クロック数変換回路DC1〜DCRの各々は、距離信号D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”の和(=“22”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(=“22”)をカウントし、クロック数(=“22”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
図17は、図10に示す距離/クロック数変換回路DC”1の更に別の具体的な構成を示す概略図である。
図17を参照して、W=2i=23=8からなり、s=2x=22=4からなる場合、L=W/s=8/4=2であり、距離/クロック数変換回路DC”1−2は、増幅器41,42と、カウンタ一致検出回路51,52と、スイッチ制御回路60と、マルチプレクサ61,62とを含む。
マルチプレクサ61は、4個の距離演算回路DP11,DP13,DP15,DP17に対応して設けられ、マルチプレクサ62は、4個の距離演算回路DP12,DP14,DP16,DP18に対応して設けられる。
カウンタ一致検出回路51は、マルチプレクサ61に対応して設けられ、カウンタ一致検出回路52は、マルチプレクサ62に対応して設けられる。
スイッチング制御回路60は、連想メモリ100の制御回路から検索開始信号SBおよびリセット信号RSTを受ける。また、スイッチング制御回路60は、増幅器41,42からクロック信号CLKを受ける。更に、スイッチング制御回路60は、カウンタ一致検出回路51から一致信号MTH1を受け、カウンタ一致検出回路52から一致信号MTH2を受ける。
そして、スイッチング制御回路60は、検索開始信号SBおよびリセット信号RSTを受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
また、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
更に、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに出力信号OUT2をマルチプレクサ62へ出力する。
そして、スイッチング制御回路60は、s回目の一致信号MTH2をカウンタ一致検出回路52から受けると、s回目の一致信号MTH2によって示されるタイミングと同じタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
マルチプレクサ61は、距離演算回路DP11,DP13,DP15,DP17からそれぞれ距離信号D11,D13,D15,D17を受け、出力信号OUT1をスイッチング制御回路60から受ける。
そして、マルチプレクサ61は、1回目の出力信号OUT1を受けると、距離信号D11をカウンタ一致検出回路51へ出力し、2回目の出力信号OUT1を受けると、距離信号D13をカウンタ一致検出回路51へ出力し、3回目の出力信号OUT1を受けると、距離信号D15をカウンタ一致検出回路51へ出力し、4回目の出力信号OUT1を受けると、距離信号D17をカウンタ一致検出回路51へ出力する。
また、マルチプレクサ62は、距離演算回路DP12,DP14,DP16,DP18からそれぞれ距離信号D12,D14,D16,D18を受け、出力信号OUT2をスイッチング制御回路60から受ける。
そして、マルチプレクサ62は、1回目の出力信号OUT2を受けると、距離信号D12をカウンタ一致検出回路52へ出力し、2回目の出力信号OUT2を受けると、距離信号D14をカウンタ一致検出回路52へ出力し、3回目の出力信号OUT2を受けると、距離信号D16をカウンタ一致検出回路52へ出力し、4回目の出力信号OUT2を受けると、距離信号D18をカウンタ一致検出回路52へ出力する。
カウンタ一致検出回路51は、マルチプレクサ61から距離信号D11を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D11に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
また、カウンタ一致検出回路51は、マルチプレクサ61から距離信号D13を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D13に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
更に、カウンタ一致検出回路51は、マルチプレクサ61から距離信号D15を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D15に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
更に、カウンタ一致検出回路51は、マルチプレクサ61から距離信号D17を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D17に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
このように、カウンタ一致検出回路51は、距離信号とリセット信号とを受けるごとに、距離信号(=距離信号D11から奇数番目の距離信号D11,D13,D15,D17のいずれか)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1をスイッチング制御回路60へ出力し、その後、動作を停止する。
カウンタ一致検出回路52は、マルチプレクサ62から距離信号D12を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D12に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
また、カウンタ一致検出回路52は、マルチプレクサ62から距離信号D14を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D14に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
更に、カウンタ一致検出回路52は、マルチプレクサ62から距離信号D16を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D16に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
更に、カウンタ一致検出回路52は、マルチプレクサ62から距離信号D18を受け、リセット信号RSTをスイッチング制御回路60から受けると、上述した方法によって、距離信号D18に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
このように、カウンタ一致検出回路52は、距離信号とリセット信号とを受けるごとに、距離信号(=距離信号D11から偶数番目の距離信号D12,D14,D16,D18のいずれか)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2をスイッチング制御回路60へ出力し、その後、動作を停止する。
図18は、図17に示す距離/クロック数変換回路DC”1−2の動作を説明するための図である。
図18を参照して、スイッチング制御回路60は、連想メモリ100の制御回路からの検索開始信号SBおよびリセット信号RSTに応じて、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに出力信号OUT1をマルチプレクサ61へ出力する。
マルチプレクサ61は、距離演算回路DP11,DP13,DP15,DP17からそれぞれ距離信号D11,D13,D15,D17を受ける。そして、マルチプレクサ61は、1回目の出力信号OUT1に応じて、距離信号D11をカウンタ一致検出回路51へ出力する。
そうすると、カウンタ一致検出回路51は、距離信号D11(=“3”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1(=“3”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN_1(=“3”)をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
その後、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに、出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、距離演算回路DP12,DP14,DP16,DP18からそれぞれ距離信号D12,D14,D16,D18を受ける。そして、マルチプレクサ62は、1回目の出力信号OUT2に応じて、距離信号D12(=“2”)をカウンタ一致検出回路52へ出力する。
そうすると、カウンタ一致検出回路52は、距離信号D12(=“2”)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2(=“2”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN_2(=“2”)をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
引き続いて、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに、出力信号OUT1をマルチプレクサ61へ出力する。
マルチプレクサ61は、2回目の出力信号OUT1に応じて、距離信号D13(=“5”)をカウンタ一致検出回路51へ出力する。
そうすると、カウンタ一致検出回路51は、距離信号D13(=“5”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1(=“5”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN_1(=“5”)をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに、出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、2回目の出力信号OUT2に応じて、距離信号D14(=“1”)をカウンタ一致検出回路52へ出力する。
そうすると、カウンタ一致検出回路52は、距離信号D14(=“1”)に一致するカウンタ値CV12が得られるときのクロック数CN_2(=“1”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN_2(=“1”)をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
そして、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに、出力信号OUT1をマルチプレクサ61へ出力する。
マルチプレクサ61は、3回目の出力信号OUT1に応じて、距離信号D15(=“2”)をカウンタ一致検出回路51へ出力する。
そうすると、カウンタ一致検出回路51は、距離信号D15(=“2”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1(=“2”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN_1(=“2”)をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
そして、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに、出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、3回目の出力信号OUT2に応じて、距離信号D16(=“4”)をカウンタ一致検出回路52へ出力する。
そうすると、カウンタ一致検出回路52は、距離信号D16(=“4”)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2(=“4”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN_2(=“4”)をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
そして、スイッチング制御回路60は、一致信号MTH2をカウンタ一致検出回路52から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路51へ出力するとともに、出力信号OUT1をマルチプレクサ61へ出力する。
マルチプレクサ61は、4回目の出力信号OUT1に応じて、距離信号D17(=“2”)をカウンタ一致検出回路51へ出力する。
そうすると、カウンタ一致検出回路51は、距離信号D17(=“2”)に一致するカウンタ値CV11が得られるときのクロック信号CLKのクロック数CN_1(=“2”)をカウントする。そして、カウンタ一致検出回路51は、クロック数CN_1(=“2”)をカウントしたタイミングを示す一致信号MTH1をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51は、動作を停止する。
その後、スイッチング制御回路60は、一致信号MTH1をカウンタ一致検出回路51から受けると、クロック信号CLKに同期して、リセット信号RSTをカウンタ一致検出回路52へ出力するとともに、出力信号OUT2をマルチプレクサ62へ出力する。
マルチプレクサ62は、4回目の出力信号OUT2に応じて、距離信号D18(=“3”)をカウンタ一致検出回路52へ出力する。
そうすると、カウンタ一致検出回路52は、距離信号D18(=“3”)に一致するカウンタ値CV12が得られるときのクロック信号CLKのクロック数CN_2(=“3”)をカウントする。そして、カウンタ一致検出回路52は、クロック数CN_2(=“3”)をカウントしたタイミングを示す一致信号MTH2をクロック信号CLKに同期してスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路52は、動作を停止する。
そうすると、スイッチング制御回路60は、カウンタ一致検出回路52からの4回目の一致信号MTH2に応じて、4回目の一致信号MTH2によって示されるタイミングと同じタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
このように、カウンタ一致検出回路51,52は、交互に、それぞれ、距離信号(=距離信号D11から奇数番目の距離信号D11,D13,D15,D17のいずれか)および距離信号(=距離信号D11から偶数番目の距離信号D12,D14,D16,D18のいずれか)に一致するカウンタ値CV11,CV12が得られるときのクロック信号CLKのクロック数CN_1,CN_2をカウントし、クロック数CN_1,CN_2をカウントしたタイミングを示す一致信号MTH1,MTH2をスイッチング制御回路60へ出力する。そして、カウンタ一致検出回路51,52は、この処理を4(=s)回繰り返し実行する。
距離/クロック数変換回路DC1〜DCRの各々が距離/クロック数変換回路DC”1−2からなる場合も、距離/クロック数変換回路DC1〜DCRの各々は、距離信号D11=“3”,D12=“2”,D13=“5”,D14=“1”,D15=“2”,D16=“4”,D17=“2”,D18=“3”の和(=“22”)に一致するカウンタ値が得られるときのクロック信号CLKのクロック数(=“22”)をカウントし、クロック数(=“22”)をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
上記においては、W=8である場合について説明したが、Wは、2iを満たせば、8以外の値であってもよい。
そして、Wが2iを満たす8以外の値であるときも、距離/クロック数変換回路DC1〜DCRは、それぞれ、上述した動作と同じ動作によってタイミング信号C1〜CRをWinner検出器20へ出力する。
また、上記においては、s=2,4の場合について説明したが、sは、W以下の2xを満たす整数であれば、2,4以外の値からなっていてもよく、その場合も、距離/クロック数変換回路DC1〜DCRは、それぞれ、上述した動作と同じ動作によってタイミング信号C1〜CRをWinner検出器20へ出力する。
上述したように、図13および図17においては、距離/クロック数変換回路DC1〜DCR(=距離/クロック数変換回路DC’1−2,DC”1−2)の各々が2つのカウンタ一致検出回路51,52からなる場合について説明した。
そして、距離/クロック数変換回路DC1〜DCRの各々が図13に示す距離/クロック数変換回路DC’1−2または図17に示す距離/クロック数変換回路DC”1−2からなる場合、カウンタ一致検出回路51は、W個の距離信号(=距離信号D11〜D1W等)を一列に配列したときの一方端からp(pは1≦p<Wを満たす奇数)番目の距離信号を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、p番目の距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_1をカウントし、クロック数CN_1をカウントしたタイミングを示す一致信号MTH1を出力する一致処理をW/2回繰り返し実行する。
また、カウンタ一致検出回路52は、W個の距離信号(=距離信号D11〜D1W等)を一列に配列したときの一方端からq(qは1<q≦Wを満たす偶数)番目の距離信号を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、q番目の距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示す一致信号MTH2を出力する一致処理を((W/2)−1)回繰り返し実行し、一致信号MTH1をW/2回受け、かつ、W番目の距離信号を受けると、カウンタ値をクロック信号CLKに同期して昇順にカウントしたときに、W番目の距離信号に一致するカウンタ値が得られるときのクロック信号CLKのクロック数CN_2をカウントし、クロック数CN_2をカウントしたタイミングを示すタイミング信号(=タイミング信号C1〜CRのいずれか)をWinner検出器20へ出力する。
この場合、カウンタ一致検出回路51は、「第1のカウンタ一致検出回路」を構成し、カウンタ一致検出回路52は、「第2のカウンタ一致検出回路」を構成する。
また、カウンタ一致検出回路51のカウンタ311(またはカウンタ311A)は、「第1のカウンタ」を構成し、カウンタ一致検出回路51の一致検出回路312は、「第1の一致検出回路」を構成する。
更に、カウンタ一致検出回路52のカウンタ311(またはカウンタ311A)は、「第2のカウンタ」を構成し、カウンタ一致検出回路52の一致検出回路312は、「第2の一致検出回路」を構成する。
図13および図17に示すように、距離/クロック数変換回路DC1〜DCR(=距離/クロック数変換回路DC’1−2,DC”1−2)の各々を2個のカウンタ一致検出回路51,52によって構成することによって、距離/クロック数変換回路DC1〜DCRの回路面積を削減でき、消費電力を低減できる。
図19は、最短検索時間の比較を示す図である。図19における周波数マッピング型とは、検索データと参照データとの距離を周波数に変換して検索データに類似する参照データを検索する連想メモリを意味する。
また、図19の(a)は、M×W=16ビット×8ユニット=128ビットの参照データを64個用いた場合の最短検索時間の比較を示す。更に、図19の(b)は、M×W=16ビット×16ユニット=256ビットの参照データを64個用いた場合の最短検索時間の比較を示す。
図19の(a)を参照して、M×W=16ビット×8ユニット=128ビットの参照データを64個用いた場合、周波数マッピング型の連想メモリにおいては、最短検索時間が1280(ns)であるのに対し、本発明の連想メモリ100においては、最短検索時間が20(ns)である。
図19の(b)を参照して、M×W=16ビット×16ユニット=256ビットの参照データを64個用いた場合、周波数マッピング型の連想メモリにおいては、最短検索時間が210000(ns)であるのに対し、本発明の連想メモリ100においては、最短検索時間が40(ns)である。
このように、この発明の実施の形態による連想メモリ100は、従来の周波数マッピング型の連想メモリよりも2桁以上短い時間で検索データに類似する参照データを検索できることが実験的に実証された。
また、この発明の実施の形態による連想メモリ100は、参照データのビット数が多くなるに従って、検索時間を飛躍的に短くできることが実験的に実証された。
図20は、消費電力の比較を示す図である。図20において、従来例の連想メモリは、非特許文献3に記載された連想メモリである。
図20を参照して、従来例の連想メモリにおいては、64個の参照データが用いられ、本発明の連想メモリ100においては、128個の参照データが用いられた。
そして、従来例の連想メモリにおいては、消費電力は、321(mW)であるのに対し、本発明の連想メモリ100においては、消費電力は、2.13(mW)である。
このように、この発明の実施の形態による連想メモリ100は、参照データ数が2倍多いにも拘わらず、従来例の連想メモリよりも2桁以上消費電力を低減できることが実験的に実証された。
従って、この発明の実施の形態による連想メモリ100を用いれば、低消費電力で高速に検索データに類似する参照データを検索できることが明らかである。
なお、上記においては、マンハッタン距離を用いて検索データに類似するk個の参照データを検索すると説明したが、この発明の実施の形態においては、これに限らず、ハミング距離を用いて検索データに類似するk個の参照データを検索してもよい。
この場合、Mビットは、1ビットからなり、参照データ保存回路SC11〜SC1W,SC21〜SC2W,・・・,SCR1〜SCRWの各々は、1ビットの参照データを保存する。また、距離演算回路DP11〜DP1W,DP21〜DP2W,・・・,DPR1〜DPRWの各々は、検索データの1ビットと参照データの1ビットとの距離を式(1)に従って演算する。
そして、連想メモリ100は、上述した動作に従って、ハミング距離を用いて検索データに類似するk個の参照データを検索する。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。