JP6411914B2 - 再構成可能なk近傍法連想メモリ - Google Patents
再構成可能なk近傍法連想メモリ Download PDFInfo
- Publication number
- JP6411914B2 JP6411914B2 JP2015034716A JP2015034716A JP6411914B2 JP 6411914 B2 JP6411914 B2 JP 6411914B2 JP 2015034716 A JP2015034716 A JP 2015034716A JP 2015034716 A JP2015034716 A JP 2015034716A JP 6411914 B2 JP6411914 B2 JP 6411914B2
- Authority
- JP
- Japan
- Prior art keywords
- circuit
- signal
- class
- match
- counter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、連想メモリに関し、特に、k近傍法を効果的に実現する連想メモリに保存される参照データの次元数および個数を拡縮する技術に関する。
近年、文字認識・画像認識などに代表されるパターンマッチングを必要とするアプリケーションが大変注目されている。特に、パターンマッチングをLSI(Large Scale Integrated Circuit)上で実現することにより、将来、人工知能およびモバイル機器などの高機能アプリケーションに適用可能になり、この技術の実現は、非常に注目を浴びている。
パターンマッチングでは、データベースに保存された複数の参照データの中から、完全に検索データと一致するパターンを検索する「完全一致検索処理」と、検索データと最も類似するパターンを検索する「最類似検索処理」とがある。
前者は、CAM(Content Addressable Memory)と呼ばれ、ネットワークルータのIPアドレステーブルのルーティングおよびプロセッサのキャッシュなどの実現に用いられる。人間の脳のような柔軟な検索・比較をコンピュータに処理させるには、後者の最類似検索処理を実現することが必要不可欠である。このような柔軟な比較を実現する機能を持つメモリのことを特に連想メモリ(Associative Memory)と呼ぶ。
連想メモリの例として、検索データと参照データとのマンハッタン距離またはユークリッド距離を用いて最類似検索処理を行うものが知られている(非特許文献1参照)。また、連想メモリにk近傍探索を取り入れたものが知られている(非特許文献2参照)。
また、本願発明者は、検索に係るクロックカウント数を削減する機構(有効ビット設定部)とユークリッド距離検索のための二乗計算回路(距離演算回路)とを備えたクロックカウント式の連想メモリを発明している(特許文献1参照)。当該発明によれば、データ規模が増大しても高速な検索が可能なユークリッド/マンハッタン距離検索連想メモリをエラーフリー、高電力効率に実現することができる。
一方、パターン認識の分野において機械学習アルゴリズムとしてk近傍法がよく用いられる。本願発明者は、連想メモリを用いてk近傍法を効果的に実現することができるk近傍法連想メモリを発明している(特許文献2参照)。
S.Sasaki et al., "Digital Associative Memory for Word-Parallel Manhattan-Distance-Based Vector Quantization," ESSCIRC'2012, 2012, pp.185-188
M.A.Abedin et al., "Realization of K-Nearest-Matches Search Capability in Fully-Parallel Associative Memories," IEICE Trans. on Fundamentals, vol. E90-A, No.6, 2007, pp.1240-1243
連想メモリが利用される分野として、コードブックベース画像圧縮のデータ検索やBoW(Bag of Words)などが挙げられる。前者では比較的少ない次元数の大量の参照データの検索が行われ、後者では膨大な次元数の少量の参照データの検索が行われる。しかし、従来の連想メモリでは回路構成が固定されているため、アプリケーションに応じて参照データの次元数および個数を拡縮することが困難である。
この問題に関して、本願発明者は、参照データの次元数および個数の拡縮が可能な連想メモリを発明し、特願2014−36698(以下、先願という)に当該発明を開示した。
一方、先行文献2に開示されたk近傍法連想メモリでは参照データの次元数および個数が固定されているが、k近傍法連想メモリについても先願の連想メモリと同様に参照データの次元数および個数の拡縮を可能にすることが求められる。
上記問題に鑑み、本発明は、参照データの次元数および個数の拡縮が可能なk近傍法連想メモリを提供することを目的とする。
本発明の一局面に従った再構成可能なk近傍法連想メモリは、それぞれが、参照データを保存する参照データ保存回路と、検索データと前記参照データ保存回路に保存されている前記参照データとの距離を計算する距離計算回路と、トリガー信号を受けてクロック信号のカウント動作を開始し、前記距離に応じたクロック数をカウントしたタイミングを示すマッチ信号を出力する距離/クロック数変換回路とを有する、複数のエレメント回路と、前記複数のエレメント回路のそれぞれに対応して設けられ、それぞれが、与えられた回路構成信号に応じて、前段のエレメント回路から出力される前記マッチ信号を次段のエレメント回路に前記トリガー信号として供給するか否かを制御する、複数のスイッチ回路と、k近傍法に従って前記検索データのクラスを判定するk近傍クラスタリング回路とを備え、前記スイッチ回路でカスケード接続された複数の前記エレメント回路によって、個別の参照データを保存し、当該参照データと前記検索データとの距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すマッチ信号を出力する複数の参照データ検索回路からなる再構成可能なクロックカウント式連想メモリが構成され、前記k近傍クラスタリング回路は、前記再構成可能なクロックカウント式連想メモリから出力される複数のマッチ信号のうちいずれかk個のマッチ信号がアクティブになるまでの間、前記複数のマッチ信号の少なくとも一つがアクティブになるごとに、前記複数の参照データ検索回路のそれぞれが保存する参照データのクラスを表す複数のクラスデータから当該アクティブになった少なくとも一つのマッチ信号のそれぞれに対応するクラスデータを選択し、当該選択した全部でk個のクラスデータをクラス別に分類した場合においてデータ数が最大となるクラスを判定するように構成されているものである。
これによると、再構成可能なクロックカウント式連想メモリによって検索データと各参照データとの距離がクロック数に変換されて、距離に応じたタイミングで各参照データに対応するマッチ信号がアクティブとなり、k近傍クラスタリング回路によって、より先にアクティブになったk個のマッチ信号に対応するk個のクラスデータをクラス別に分類した場合にデータ数が最大となるクラスが判定される。このようにして、k近傍法に基づいた検索データのクラス分けが実現される。また、複数のスイッチ回路のそれぞれを適宜制御することにより、エレメント回路の接続形態を任意に変更して、任意の次元数の参照データを保存する任意の個数の参照データ検索回路を構成することができる。
本発明によると、k近傍法連想メモリにおいて参照データの次元数および個数を拡縮することができる。これにより、アプリケーションに応じてk近傍法連想メモリを最適に再構成して、k近傍法連想メモリに割り当てられたリソースを最大限利用することができる。
以下、図面を参照しながら本発明を実施するための形態について説明する。なお、本発明は、以下の実施形態に限定されるものではない。
≪クロックカウント式連想メモリの基本構成例≫
まず、本発明に係る再構成可能なk近傍法連想メモリの前提となるクロックカウント式連想メモリの基本構成について説明する。
まず、本発明に係る再構成可能なk近傍法連想メモリの前提となるクロックカウント式連想メモリの基本構成について説明する。
図1は、一例に係るクロックカウント式連想メモリの概略構成を示す。一例に係るクロックカウント式連想メモリ10’は、メモリ部11、行デコーダ12、列デコーダ13、読出/書込回路14、および検索データ保存回路15を含む。
メモリ部11は、参照データ保存回路(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は、行デコーダ12、列デコーダ13、および読出/書込回路14によって書き込まれた参照データを保存する。この場合、参照データ保存回路SC11〜SC1Wは、M×W(Mは1以上の整数)ビットの参照データ1を保存し、参照データ保存回路SC21〜SC2Wは、M×Wビットの参照データ2を保存し、以下、同様にして、参照データ保存回路SCR1〜SCRWは、M×Wビットの参照データRを保存する。つまり、参照データ保存回路SC11〜SC1W,SC21〜SC2W,…,SCR1〜SCRWのそれぞれは、参照データのM×Wビットを保存する。
距離演算回路DP11〜DP1Wは、参照データ保存回路SC11〜SC1Wに保存されたM×Wビットの参照データ1と、検索データ保存回路15に保存されたM×Wビットの検索データとの距離を後述する方法によって演算する。また、距離演算回路DP21〜DP2Wは、参照データ保存回路SC21〜SC2Wに保存されたM×Wビットの参照データ2と、検索データ保存回路15に保存されたM×Wビットの検索データとの距離を後述する方法によって演算する。以下、同様にして、距離演算回路DPR1〜DPRWは、参照データ保存回路SCR1〜SCRWに保存されたM×Wビットの参照データRと、検索データ保存回路15に保存された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)は、参照データと検索データとの距離(絶対値差)を表す。nMrは、参照データと検索データとのマンハッタン距離を示している。また、式(1)において、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を受け、各距離信号D1jの二乗値の和に相当するクロック信号CLKのクロック数CN_total1を後述する方法によってカウントする。そして、そのクロック数CN_total1をカウントしたタイミングを示すマッチ信号M1を出力する。
距離/クロック数変換回路DC2は、距離演算回路DP21〜DP2WからW個の距離信号D2jを受け、各距離信号D2jの二乗値の和に相当するクロック信号CLKのクロック数CN_total2を後述する方法によってカウントする。そして、そのクロック数CN_total2をカウントしたタイミングを示すマッチ信号M2を出力する。
以下、同様にして、距離/クロック数変換回路DCRは、距離演算回路DPR1〜DPRWからW個の距離信号DRjを受け、各距離信号DRjの二乗値の和に相当するクロック信号CLKのクロック数CN_totalRを後述する方法によってカウントする。そして、そのクロック数CN_totalRをカウントしたタイミングを示すマッチ信号MRを出力する。
行デコーダ12は、メモリ部11の行方向のアドレスを指定する。列デコーダ13は、メモリ部11の列方向のアドレスを指定する。読出/書込回路14は、参照データを行デコーダ12および列デコーダ13によって指定された参照データ保存回路SC11〜SC1W,SC21〜SC2W,…,SCR1〜SCRWに書き込むとともに、検索データを検索データ保存回路15に書き込む。
検索データ保存回路15は、読出/書込回路14によって書き込まれた検索データ(M×Wビットのデータ)を保存する。
図2は、一例に係る距離/クロック数変換回路DC1の概略構成を示す。なお、距離/クロック数変換回路DC2〜DCRのそれぞれも、図2に示す距離/クロック数変換回路DC1と同様の構成を有する。距離/クロック数変換回路DC1は、バッファ121〜12Wと、カウンタ一致検出回路131〜13Wとを含む。
バッファ121は、クロックカウント式連想メモリの制御回路(図示せず)から検索開始信号SBを受け、クロックカウント式連想メモリに内蔵されたクロック発生回路(図示せず)からクロック信号CLKを受ける。そして、バッファ121は、検索開始信号SBがLレベルからHレベルに遷移すると、その受けたクロック信号CLKをバッファ122およびカウンタ一致検出回路131へ出力する。バッファ122は、クロック信号CLKをバッファ121から受け、カウンタ一致検出回路131から、後述するHレベルの一致信号(DETECT1)を受けると、クロック信号CLKをバッファ123(図示せず)およびカウンタ一致検出回路132へ出力する。以下、同様にして、バッファ12Wは、クロック信号CLKをバッファ12W−1(図示せず)から受け、カウンタ一致検出回路13W−1(図示せず)から、後述するHレベルの一致信号(DETECTW−1)を受けると、クロック信号CLKをカウンタ一致検出回路13Wへ出力する。
カウンタ一致検出回路131〜13Wは、それぞれ、距離演算回路DP11〜DP1Wに対応して設けられる。そして、カウンタ一致検出回路131〜13Wは、直列に接続される。ここで、カウンタ一致検出回路131〜13Wの概略構成について説明する。
図3は、一例に係るカウンタ一致検出回路131〜13Wの概略構成を示す。本例は、W=2の場合を示している。カウンタ一致検出回路131は、クロック数変換回路131aと、カウンタ131bと、一致検出回路131cとを含む。カウンタ一致検出回路132は、クロック数変換回路132aと、カウンタ132bと、一致検出回路132cとを含む。以下、各構成の機能について説明する。
クロック数変換回路131aは、距離演算回路DP11からMビットのビット長を有する距離信号D11と、バッファ121からのクロック信号CLKとを受ける。クロック数変換回路131aは、クロック信号CLKのクロック数をカウントし、距離信号D11が示す距離と一致するクロック数を検出したタイミングで、カウンタ131bにHレベルの一致検出信号を出力する処理を行う。クロック数変換回路131aは、後述の一致検出回路131cからHレベルの一致信号(DETECT1)が出力されるまで、この処理を繰り返し行い、Hレベルの一致信号(DETECT1)が出力されると動作を停止する。
カウンタ131bは、クロック数変換回路131aからの一致検出信号が立ち上がるごとにカウンタ値をカウントアップさせ、そのカウント値を一致検出回路131cへ出力する。
一致検出回路131cは、カウンタ131bからカウンタ値を受け、距離演算回路DP11からMビットのビット長を有する距離信号D11を受ける。一致検出回路131cは、距離信号D11が示す距離とカウンタ値とを比較し、距離信号D11が示す距離とカウンタ値とが一致するときに、Hレベルの一致信号(DETECT1)をクロック数変換回路131aとバッファ122へ出力する。一致検出回路131cは、距離信号D11が示す距離とカウンタ値とが一致しないときは、Lレベルの一致信号(DETECT1)をクロック数変換回路131aとバッファ122へ出力する。
クロック数変換回路132aは、バッファ122からクロック信号CLKを受けると駆動する。クロック数変換回路132aは、距離演算回路DP12からMビットのビット長を有する距離信号D12を受ける。クロック数変換回路131aと同様、クロック数変換回路132aは、クロック信号CLKのクロック数をカウントし、距離信号D12が示す距離と一致するクロック数を検出したタイミングで、カウンタ132bにHレベルの一致検出信号を出力する処理を行う。クロック数変換回路132aは、後述の一致検出回路132cからHレベルの一致信号(DETECT2)が出力されるまで、この処理を繰り返し行う。クロック数変換回路132aは、Hレベルの一致信号(DETECT2)が出力されると動作を停止する。
カウンタ132bは、クロック数変換回路132aからの一致検出信号が立ち上がるごとにカウンタ値をカウントアップさせ、そのカウント値を一致検出回路132cへ出力する。
一致検出回路132cは、カウンタ132bからカウンタ値を受け、距離演算回路DP12からMビットのビット長を有する距離信号D12を受ける。一致検出回路132cは、距離信号D12が示す距離とカウンタ値とを比較し、距離信号D12が示す距離とカウンタ値とが一致するときに、Hレベルの一致信号(DETECT2)をクロック数変換回路132aとバッファ122へ出力するとともに、Hレベルの一致信号(DETECT2)をマッチ信号M1として出力する。また、一致検出回路132cは、距離信号D12が示す距離とカウンタ値とが一致しないときは、Lレベルの一致信号(DETECT2)をクロック数変換回路132aに出力する。
ここで、例えば、距離演算回路DP11から距離「2」を示すMビットの距離信号D11が出力され、距離演算回路DP12から距離「3」を示すMビットの距離信号D12が出力された場合の動作例について説明する。
クロック数変換回路131aは、距離「2」を示すMビットの距離信号D11を受け、バッファ121からのクロック信号CLKのクロックに同期して、距離「2」に一致するクロック数をカウントする。クロック数変換回路131aは、カウントしたクロック数と距離とが一致すると、Hレベルの一致検出信号を出力する。カウンタ131bは、一致検出信号が立ち上がると、カウント値をカウントアップし、「1」を示すカウンタ値を一致検出回路131cに出力する。このとき、距離信号D11が示す距離「2」とカウント値「1」とが一致しないため、一致検出回路131cからLレベルの一致信号(DETECT1)が出力される。
クロック数変換回路131aは、出力した一致検出信号がLレベルになると、カウントしたクロック数をリセットする。そして、クロック数変換回路131aは、再びクロック信号CLKのクロック数をカウントし、カウントしたクロック数が距離「2」と一致すると、カウンタ131bにHレベルの一致検出信号を出力する。カウンタ131bは、一致検出信号が立ち上がると、カウンタ値をカウントアップさせ、一致検出回路131cに「2」を示すカウンタ値を出力する。一致検出回路131cは、距離信号D11が示す距離「2」とカウンタ値「2」とが一致するため、一致信号(DETECT1)をバッファ122とクロック数変換回路131aに出力する。つまり、検索開始からのクロック数が「4」となるタイミングで、Hレベルの一致信号(DETECT1)が出力される。そして、クロック数変換回路131aは、Hレベルの一致信号(DETECT1)に応じて動作を停止する。
バッファ122は、一致検出回路131cからHレベルの一致信号(DETECT1)を受けて、クロック数変換回路132aにクロック信号CLKを出力する。クロック数変換回路132aは、バッファ122からのクロック信号CLKのクロックに同期して、クロック信号CLKのクロック数をカウントする。クロック数変換回路132aは、距離「3」を示すMビットの距離信号D12を受け、カウントしたクロック数が距離「3」と一致するタイミングで、Hレベルの一致検出信号をカウンタ132bに出力する。カウンタ132bは、クロック数変換回路132aからの一致検出信号が立ち上がると、カウンタ値をカウントアップさせ、一致検出回路132cに「1」を示すカウンタ値を出力する。このとき、距離「3」とカウンタ値「1」とが一致しないため、一致検出回路132cからLレベルの一致信号(DETECT2)が出力される。
クロック数変換回路132aは、出力した一致検出信号がLレベルになると、カウントしたクロック数をリセットする。そして、クロック数変換回路132aは、再びクロック信号CLKのクロック数をカウントし、カウントしたクロック数が距離「3」と一致すると、カウンタ132bにHレベルの一致検出信号を出力する。カウンタ132bは、クロック数変換回路132aからの一致検出信号が立ち上がると、カウンタ値をカウントアップさせ、一致検出回路132cに「2」を示すカウンタ値を出力する。このとき、距離「3」とカウンタ値「2」とが一致しないため、一致検出回路132cからLレベルの一致信号(DETECT2)が出力される。
クロック数変換回路132aは、一致検出信号がLレベルになると、再びカウントしたクロック数をリセットしてクロック信号CLKをカウントし、カウントしたクロック数が距離「3」と一致すると、カウンタ132bにHレベルの一致検出信号を出力する。そして、クロック数変換回路132aは、Hレベルの一致信号(DETECT2)に応じて動作を停止する。カウンタ132bは、クロック数変換回路132aからの一致検出信号が立ち上がると、カウンタ値をカウントアップさせ、一致検出回路132cに「3」を示すカウンタ値を出力する。一致検出回路132cは、距離「3」とカウント値「3」とが一致するため、Hレベルの一致信号(DETECT2)をクロック数変換回路132aに出力するとともに、マッチ信号M1を出力する。つまり、クロック数変換回路132aにおいてカウントされたクロック数は「9(=3+3+3)」であり、検索開始からクロック数「13(=4+9)」のタイミングでマッチ信号M1が出力される。
カウンタ一致検出回路131,132全体でカウントされるクロック数CN_total1「13」は、カウンタ一致検出回路131においてカウントするクロック数「4(=2+2)」と、カウンタ一致検出回路132においてカウントするクロック数「9(=3+3+3)」とを加算したものである。つまり、カウンタ一致検出回路131,132によって、距離「2」の二乗値と距離「3」の二乗値との和に一致するクロック数をカウントすることに相当する。
距離/クロック数変換回路DC1は、一般的に、W個の距離信号D11〜D1Wを受ける。そして、W個の距離信号D11〜D1Wのそれぞれは、Mビットのビット長を有する。したがって、距離/クロック数変換回路DC1は、M×Wビットのビット長を有する距離信号D11D12…D1Wを受ける。カウンタ一致検出回路131において、距離信号D11が示す距離に一致する回数分だけ、その距離に一致するクロック数を繰り返しカウントする。また、カウンタ一致検出回路132〜13Wは、それぞれ、カウンタ一致検出回路131〜13W−1から一致信号を受けた後に、距離信号D12〜D1Wにそれぞれ一致するクロック数を、その距離に一致する回数だけ繰り返しカウントする。その結果、距離/クロック数変換回路DC1においてカウントされる全体のクロック数CN_total1は、カウンタ一致検出回路131〜13Wのそれぞれにおいてカウントされたクロック数の和に等しい。カウンタ一致検出回路131〜13Wのそれぞれにおいてカウントされたクロック数は、それぞれ、距離信号D11〜D1Wが示す各距離の二乗値に相当するため、距離/クロック数変換回路DC1においてカウントされる全体のクロック数CN_totalRは、各距離信号D11〜D1Wの二乗値の和を表している。
ここで、ユークリッド距離nErは、次式によって表される。
式(2)の右辺の|Inj−Rerj|2は、式(1)の右辺の|Inj−Rerj|において、検索データと参照データとの距離の二乗値に一致する。したがって、ユークリッド距離nErの演算は、上述したように、式(1)によって演算したW個の各距離について、距離に一致するクロック数をカウントする処理を距離に一致する回数だけ繰り返し行うことで実現される。そうすると、図3の例において、カウンタ一致検出回路132が、カウンタ一致検出回路131,132全体でカウントしたクロック数のタイミングを示すマッチ信号M1を出力することは、ユークリッド距離nErによって検索データに類似する参照データを検索し、検索データに類似する参照データを検出したことを示す信号を出力することに相当する。なお、距離/クロック数変換回路DC2〜DCRのそれぞれも、距離/クロック数変換回路DC1の動作と同じ動作によって、それぞれ、マッチ信号M2〜MRを出力する。
図4は、一例に係るマッチ信号のタイミングチャートである。距離/クロック数変換回路DC1〜DCRは、図4に示すように、例えばマッチ信号M1〜MRをそれぞれクロック信号CLKに同期して出力する。
≪再構成可能なクロックカウント式連想メモリの再構成例≫
次に、本発明に係る再構成可能なk近傍法連想メモリの前提となる再構成可能なクロックカウント式連想メモリについて説明する。再構成可能なクロックカウント式連想メモリは、例えば上記構成のクロックカウント式連想メモリ10’において参照データの次元数および個数を任意に拡縮できるように構成したものである。図5、図6、および図7は、再構成可能なクロックカウント式連想メモリのさまざまな再構成例を示す。
次に、本発明に係る再構成可能なk近傍法連想メモリの前提となる再構成可能なクロックカウント式連想メモリについて説明する。再構成可能なクロックカウント式連想メモリは、例えば上記構成のクロックカウント式連想メモリ10’において参照データの次元数および個数を任意に拡縮できるように構成したものである。図5、図6、および図7は、再構成可能なクロックカウント式連想メモリのさまざまな再構成例を示す。
再構成可能なクロックカウント式連想メモリ10において、複数のエレメント回路70がR行×C列(ただし、R,Cはいずれも2以上の整数である。)のマトリクス状に配置されている。なお、便宜のため、以下では、再構成可能なクロックカウント式連想メモリ10において4行×4列の計16個のエレメント回路70がマトリクス状に配置されているものとして説明する。また、行デコーダ2、列デコーダ3、読出/書込回路4、検索データ保存回路5などの周辺回路の図示は省略する。
各エレメント回路70は、1組以上の上記の参照データ保存回路SCおよび距離計算回路DPの対応するペア、ならびにそれら距離計算回路DCから出力される距離信号が入力される上記の距離/クロック数変換回路DCを含む。各エレメント回路70から出力されるMN(Match Next)信号は、各エレメント回路70における距離/クロック数変換回路DCから出力されるマッチ信号に相当する。すなわち、各エレメント回路70は、Q次元(Qは2以上の整数)の参照データを保存し、当該Q次元の参照データとQ次元の検索データとの距離を計算し、その距離に応じたクロック数をカウントしたタイミングを示すマッチ信号(MN信号)を出力する。
後述する図示しないスイッチ回路によってエレメント回路70どうしが任意に接続および切断可能となっている。エレメント回路70どうしが接続された場合、前段のエレメント回路70から出力されるMN信号は、次段のエレメント回路70における距離/クロック数変換回路DCのトリガー信号として次段のエレメント回路70に供給される。
図5の再構成例では、図示しないスイッチ回路によって4個のエレメント回路70がカスケード接続されて4個の参照データ検索回路40が構成されている。図5の再構成例において、4個の参照データ検索回路40は、それぞれ、4Q(=4×Q)次元の参照データを保存し、当該4Q次元の参照データと4Q次元の検索データとの距離を計算し、その距離に応じたクロック数をカウントしたタイミングを示すマッチ信号(MN信号)を出力する。
図6の再構成例では、図示しないスイッチ回路によって2個のエレメント回路70がカスケード接続されて8個の参照データ検索回路40が構成されている。図6の再構成例において、8個の参照データ検索回路40は、それぞれ、2Q(=2×Q)次元の参照データを保存し、当該2Q次元の参照データと2Q次元の検索データとの距離を計算し、その距離に応じたクロック数をカウントしたタイミングを示すマッチ信号(MN信号)を出力する。すなわち、図6の再構成例は、図5の再構成例に対して、参照データの次元数を半分にする代わりに個数を倍にしたものである。
図7の再構成例では、図示しないスイッチ回路によって8個のエレメント回路70がカスケード接続されて2個の参照データ検索回路40が構成されている。図7の再構成例において、2個の参照データ検索回路40は、それぞれ、8Q(=8×Q)次元の参照データを保存し、当該8Q次元の参照データと8Q次元の検索データとの距離を計算し、その距離に応じたクロック数をカウントしたタイミングを示すマッチ信号(MN信号)を出力する。すなわち、図7の再構成例は、図5の再構成例に対して、参照データの個数を半分にする代わりに次元数を倍にしたものである。
≪再構成可能なk近傍法連想メモリの実施形態≫
次に、本発明の一実施形態に係る再構成可能なk近傍法連想メモリについて説明する。図8は、本発明の一実施形態に係る再構成可能なk近傍法連想メモリ100の概略構成を示す。本実施形態に係る再構成可能なk近傍法連想メモリ100は、上記の再構成可能なクロックカウント式連想メモリ10と、制御回路20と、k近傍クラスタリング回路30とを備えている。
次に、本発明の一実施形態に係る再構成可能なk近傍法連想メモリについて説明する。図8は、本発明の一実施形態に係る再構成可能なk近傍法連想メモリ100の概略構成を示す。本実施形態に係る再構成可能なk近傍法連想メモリ100は、上記の再構成可能なクロックカウント式連想メモリ10と、制御回路20と、k近傍クラスタリング回路30とを備えている。
再構成可能なクロックカウント式連想メモリ10は、複数の参照データ(例えば、参照データ1,参照データ2,…,参照データR)を保持しており、これら複数の参照データのそれぞれについて、与えられた検索データとの距離に応じたクロック数の経過後にアクティブとなるマッチ信号を出力する回路である。なお、上述したように、再構成可能なクロックカウント式連想メモリ10は、再構成することで、保持する参照データの個数と次元数を任意に変更することができる。なお、「距離」とはマンハッタン距離、ユークリッド距離などを含む。また、「アクティブ」とは、正論理では信号がLレベルからHレベルへと遷移することをいい、負論理では信号がHレベルからLレベルへと遷移することをいう。便宜のため、以下では正論理を前提に説明する。
制御回路20は、再構成可能なクロックカウント式連想メモリ10およびk近傍クラスタリング回路30の動作を制御する回路である。
k近傍クラスタリング回路30は、エレメント回路70の総数(例えば、n個)に等しい複数の参照データのそれぞれのクラスを表す複数のクラスデータ(例えば、クラスデータ1,クラスデータ2,…,クラスデータn)から、クロックカウント式連想メモリ10から出力されるアクティブのk個のマッチ信号のそれぞれに対応するk個のクラスデータを選択し、これらk個のクラスデータをクラス別に分類した場合においてデータ数が最大となるクラスを判定する回路である。
再構成可能なk近傍法連想メモリ100は、上記3つの回路を備えることで、k近傍法に基づいて、与えられた検索データがいずれのクラスに分類されるかを判定することができる。以下、各回路の構成例について説明する。
≪再構成可能なクロックカウント式連想メモリ10の構成例≫
図9は、一例に係る再構成可能なクロックカウント式連想メモリ10の概略構成を示す。各エレメント回路70に対応してスイッチ回路50が設けられており、上述したように、スイッチ回路50によってエレメント回路70どうしが任意に接続および切断可能となっている。各スイッチ回路50がエレメント回路70どうしを接続するか否かは、各スイッチ回路50に入力される回路構成信号SRによって決まる。
図9は、一例に係る再構成可能なクロックカウント式連想メモリ10の概略構成を示す。各エレメント回路70に対応してスイッチ回路50が設けられており、上述したように、スイッチ回路50によってエレメント回路70どうしが任意に接続および切断可能となっている。各スイッチ回路50がエレメント回路70どうしを接続するか否かは、各スイッチ回路50に入力される回路構成信号SRによって決まる。
また、各スイッチ回路50に対応してk近傍法(k−NN)ユニット80が設けられている。各k−NNユニット80は、制御回路20の構成要素であるマッチ信号アクティブ検出回路(不図示)ならびにk近傍クラスタリング回路30の構成要素であるマッチ信号検出回路(不図示)およびクラスデータ保存回路(不図示)を有している。各k−NNユニット80には対応するスイッチ回路50が回路構成信号SRに応じて選択的に出力するマッチ信号が入力される。すべてのk−NNユニット80はカスケード接続されており、初段のk−NNユニット80にはマッチ信号アクティブ検出信号MDが入力され、最終段のk近傍法k−NNユニット80から終了信号endが出力される。これら信号については後述する。
各スイッチ回路50に入力される回路構成信号SRは、メモリ(回路構成情報記憶回路)60に記憶されている。メモリ60は、SRAM(Static Random Access Memory)、フラッシュメモリ、EEPROM(Electrically Erasable Programmable Read-Only Memory)などの不揮発性メモリやシフトレジスタなどで構成することができる。メモリ60の記憶内容を書き換えるだけで、再構成可能なk近傍法連想メモリ100を任意に再構成することができる。
図10は、一例に係るスイッチ回路50の回路構成を示す。スイッチ回路50は、例えば、二つのマルチプレクサ(MUX)51および52を備えている。
マルチプレクサ51は、検索開始信号SBが入力in0として、前段のエレメント回路70から出力されるMN信号(MNin)が入力in1としてそれぞれ与えられ、回路構成信号SRによってin0およびin1のいずれか一方を選択的に出力する。MUX51から出力されるMN信号(MNout)は、次段のエレメント回路70における距離/クロック数変換回路DCのトリガー信号となる。具体的には、MUX51は、回路構成信号SRがHレベル(SR=1)のとき、in1を出力する。この場合、前段のエレメント回路70における距離/クロック数変換回路DCから出力されるマッチ信号(MN信号)が次段のエレメント回路70における距離/クロック数変換回路DCのトリガー信号として供給される。一方、MUX51は、回路構成信号SRがLレベル(SR=0)のとき、in0を出力する。この場合、次段のエレメント回路70における距離/クロック数変換回路DCに検索開始信号SBが供給される。すなわち、この場合の次段のエレメント回路70は、参照データ検索回路40における初段のエレメント回路70に相当する。
MUX52は、前段のエレメント回路70から出力されるMN信号(MNin)が入力in0として、固定値“0”が入力in1としてそれぞれ与えられ、回路構成信号SRによってin0およびin1のいずれか一方を選択的に出力する。MUX52から出力されるマッチ信号Mは、対応するk−NNユニット80に入力される。
例えば、回路構成信号SRがHレベルのとき、MUX52はin1を出力する。この場合、対応するk−NNユニット80にはマッチ信号Mとして固定値“0”が入力される。したがって、当該k−NNユニット80に入力されるマッチ信号Mはアクティブになることはなく、当該k−NNユニット80に含まれるマッチ信号アクティブ検出回路およびマッチ信号検出回路は動作しない。一方、回路構成信号SRがLレベルのとき、MUX52はin0を出力する。回路構成信号SRがLレベルということは、上述したように、次段のエレメント回路70が参照データ検索回路40における初段のエレメント回路70に相当し、当該スイッチ回路50に対応するエレメント回路70は参照データ検索回路40における最終段のエレメント回路70に相当する。この場合、対応するk−NNユニット80にはマッチ信号MとしてMUX51から出力されるMN信号、すなわち、参照データ検索回路40における最終段のエレメント回路70における距離/クロック数変換回路DCから出力されるマッチ信号(MN信号)が入力される。したがって、当該k−NNユニット80に入力されるマッチ信号Mは、参照データ検索回路40において検索データと参照データとの距離が計算され、その距離に応じたクロック数がカウントされたタイミングでアクティブになり、当該k−NNユニット80に含まれるマッチ信号アクティブ検出回路およびマッチ信号検出回路は当該マッチ信号Mがアクティブになることで所期の動作を行う。この動作については後述する。
図11は、別例に係るスイッチ回路50の回路構成を示す。当該構成は、図10の構成と異なり、MUX52の入力in0として、前段のエレメント回路70から出力されるMN信号(MNin)ではなくMUX51の出力信号が与えられる。なお、このような構成の場合、MUX52には次段のスイッチ回路50に入力される回路構成信号SRを与える必要がある。このような構成のスイッチ回路50でも、図10の構成と同様の動作をすることができる。
≪制御回路20の構成例≫
図12は、一例に係る制御回路20の概略構成を示す。制御回路20は、複数の(具体的にはエレメント回路70の総数であり、例えば、n個とする)マッチ信号アクティブ検出回路21と、n個のマッチ信号アクティブ検出回路21から出力される検出信号MD1〜MDnの論理和を演算してマッチ信号アクティブ検出信号MDを出力するORゲート22とを含む。なお、上述したように、各マッチ信号アクティブ検出回路21は各k−NNユニット80内に配置されている。マッチ信号アクティブ検出回路21は、対応するマッチ信号Mi(iは1からnまでの整数)と後述するクラス識別回路33によるクラス識別動作の終了を表す終了信号endとの論理積を演算するANDゲート211と、Hレベル信号がデータ入力(D)されるとともにANDゲート211の出力信号がクロック入力(CLK)されるDフリップフロップ212と、マッチ信号MiとDフリップフロップの反転出力との論理積を演算して検出信号MDiを出力するANDゲート213とを含む。なお、図示していないが、各Dフリップフロップ212はリセット信号を受けることで初期状態にリセットされる。
図12は、一例に係る制御回路20の概略構成を示す。制御回路20は、複数の(具体的にはエレメント回路70の総数であり、例えば、n個とする)マッチ信号アクティブ検出回路21と、n個のマッチ信号アクティブ検出回路21から出力される検出信号MD1〜MDnの論理和を演算してマッチ信号アクティブ検出信号MDを出力するORゲート22とを含む。なお、上述したように、各マッチ信号アクティブ検出回路21は各k−NNユニット80内に配置されている。マッチ信号アクティブ検出回路21は、対応するマッチ信号Mi(iは1からnまでの整数)と後述するクラス識別回路33によるクラス識別動作の終了を表す終了信号endとの論理積を演算するANDゲート211と、Hレベル信号がデータ入力(D)されるとともにANDゲート211の出力信号がクロック入力(CLK)されるDフリップフロップ212と、マッチ信号MiとDフリップフロップの反転出力との論理積を演算して検出信号MDiを出力するANDゲート213とを含む。なお、図示していないが、各Dフリップフロップ212はリセット信号を受けることで初期状態にリセットされる。
このような回路構成によれば、マッチ信号アクティブ検出回路21から出力される検出信号MDiは、マッチ信号Miがアクティブ(Hレベル)になるとアクティブ(Hレベル)になり、その後、終了信号endが立ち上がってDフリップフロップ211がデータ入力(D)を取り込んで反転出力(Qバー)がLレベルに変化することで非アクティブ(Lレベル)になる。ここで、Dフリップフロップ211のデータ入力(D)はHレベル信号の固定値であるため、Dフリップフロップ211が一度データ入力(D)を取り込んだ後は、Dフリップフロップ211がリセットされるまで、Dフリップフロップ211の反転出力(Qバー)はLレベルに維持される。このため、ANDゲート213においてマッチ信号Miがマスクされ、検出信号MDiは非アクティブ(Lレベル)を維持する。すなわち、マッチ信号アクティブ検出回路21から出力される検出信号MDiは、マッチ信号Miがアクティブになってから終了信号endが出力されるまでの間だけアクティブになり、それ以外の期間は非アクティブになる。したがって、マッチ信号アクティブ検出信号MDの出力に寄与したマッチ信号は、その後のマッチ信号アクティブ検出信号MDの出力に影響を及ぼさずに、別のマッチ信号がアクティブになることでマッチ信号アクティブ検出信号MDが再び出力される。このように、制御回路20は、任意のマッチ信号がアクティブになるごとにそれを検出してマッチ信号アクティブ検出信号MDを出力する。
マッチ信号アクティブ検出信号MDは、再構成可能なクロックカウント式連想メモリ10およびクラス識別回路33の動作制御に使用される。より詳細には、制御回路20は、マッチ信号アクティブ検出信号MDを用いて再構成可能なクロックカウント式連想メモリ10およびクラス識別回路33を排他的に動作させる。例えば、再構成可能なクロックカウント式連想メモリ10において、マッチ信号アクティブ検出信号MDが非アクティブのときにクロック信号CLKが供給されるように構成するとよい。クラス識別回路33の構成例については後述する。
≪k近傍クラスタリング回路30の構成例≫
図8に戻り、k近傍クラスタリング回路30は、クラスデータメモリ31と、X個のクラスカウンタ32と、クラス識別回路33と、最大カウンタ検出回路34と、k−マッチ信号数一致検出回路35とを含む。
図8に戻り、k近傍クラスタリング回路30は、クラスデータメモリ31と、X個のクラスカウンタ32と、クラス識別回路33と、最大カウンタ検出回路34と、k−マッチ信号数一致検出回路35とを含む。
クラスデータメモリ31は、エレメント回路70の総数に等しいn個の参照データのそれぞれのクラスを表すn個のクラスデータ(クラスデータ1,クラスデータ2,…,クラスデータn)を保持する回路である。
各クラスカウンタ32は、対応するクラスのデータ数をカウントするための回路である。クラス数は、全部でX個(Xは2以上の整数)である。
クラス識別回路33は、再構成可能なクロックカウント式連想メモリ10から出力されるアクティブのマッチ信号を順次選択し、当該選択したマッチ信号に対応するクラスデータをクラスデータメモリ31から読み出し、当該読み出したクラスデータによって表されるクラスに対応するクラスカウンタ32をカウントアップする回路である。
k−マッチ信号数一致検出回路35は、クラス識別回路33がアクティブになったマッチ信号を一つ選択するごとにカウントアップし、カウント値がkに一致したことを検出する回路である。
図13は、一例に係るクラスデータメモリ31、クラスカウンタ32、クラス識別回路33、およびk−マッチ信号数一致検出回路35の概略構成を示す。
クラスデータメモリ31は、メモリ部311、行選択回路312、列デコーダ313、および読出/書込回路314を含む。
メモリ部311は、SRAMなどで構成されるクラスデータ保存回路S11〜S1Q,S21〜S2Q,…,Sn1〜SnQを含む。なお、Qは、2以上の整数である。
クラスデータ保存回路S11〜S1Q,S21〜S2Q,…,Sn1〜SnQは、行選択回路312、列デコーダ313、および読出/書込回路314によって書き込まれたクラスデータを保存する。この場合、クラスデータ保存回路S11〜S1Qは、N×Q(Nは1以上の整数)ビットのクラスデータ1を保存し、クラスデータ保存回路S21〜S2Qは、N×Qビットのクラスデータ2を保存し、以下、同様にして、クラスデータ保存回路Sn1〜SnQは、N×QビットのクラスデータRを保存する。つまり、クラスデータ保存回路S11〜S1Q,S21〜S2Q,…,Sn1〜SnQのそれぞれは、クラスデータのNビットを保存する。なお、上述したように、各クラスデータ保存回路は各k−NNユニット80内に配置されている。
行選択回路312は、メモリ部311の行方向のアドレスを指定する。列デコーダ313は、メモリ部311の列方向のアドレスを指定する。読出/書込回路314は、行選択回路312および列デコーダ313によって指定されたクラスデータ保存回路S11〜S1Q,S21〜S2Q,…,Sn1〜SnQに対してクラスデータを読み書きする。
クラス識別回路33は、n個のマッチ信号検出回路331と、デマルチプレクサ332と、二つのバッファ333,334とを含む。クラス識別回路33には、直列に接続されたバッファ3315とバッファ3316を介してクロック信号CLKが接続されている。制御回路20から出力されるマッチ信号アクティブ検出信号MDがHレベルに遷移することで、バッファ333およびバッファ334を介してクラス識別回路33にクロック信号CLKが供給される。これにより、クラス識別回路33は動作を開始する。また、クラス識別回路33によるクラス識別動作が終了すると終了信号endがHレベルに遷移する。終了信号endがHレベルに遷移することで、バッファ334がクラス識別回路33へのクロック信号CLKの供給を遮断する。これにより、クラス識別回路33は動作を停止する。
n個のマッチ信号検出回路331は、n個のスイッチ回路50から出力されるn個のマッチ信号のそれぞれに対応して設けられている。各マッチ信号検出回路331は、対応するマッチ信号がアクティブであることを検出してクラスデータメモリ31に当該マッチ信号に対応するクラスデータを選択する選択信号actを出力する回路である。なお、上述したように、各マッチ信号検出回路331は各k−NNユニット80内に配置されている。
図9に示したように、すべてのk−NNユニット80はカスケード接続されている。すなわち、n個のマッチ信号検出回路331は、動作開始信号を伝搬するように直列に接続されている。すなわち、マッチ信号検出回路331は動作開始信号を次々に受けて順次動作するようになっている。初段のマッチ信号検出回路331は、マッチ信号アクティブ検出信号MDを動作開始信号next0として受けて動作を開始し、動作が終了すると次段(2段目)のマッチ信号検出回路331へ動作開始信号next1を出力する。2段目のマッチ信号検出回路331は、動作開始信号next1を受けて動作を開始し、動作が終了すると次段(3段目)のマッチ信号検出回路331へ動作開始信号next2を出力する。以下、同様にして、最終段(n段目)のマッチ信号検出回路331は、動作開始信号nextn−1を受けて動作を開始し、動作が終了すると動作開始信号nextnを出力する。動作開始信号nextnは終了信号endに相当する。
マッチ信号M1が入力されるマッチ信号検出回路331から出力される選択信号act1によって、クラスデータメモリ31においてクラスデータ1が選択され、出力される。マッチ信号M2が入力されるマッチ信号検出回路331から出力される選択信号act2によって、クラスデータメモリ31においてクラスデータ2が選択され、出力される。以下、同様にして、マッチ信号Mnが入力されるマッチ信号検出回路331から出力される選択信号actnによって、クラスデータメモリ31においてクラスデータRが選択され、出力される。
図14は、一例に係るマッチ信号検出回路331の概略構成を示す。マッチ信号検出回路331は、一致検出回路3311と、レジスタ3312とを含む。一致検出回路3311は、レジスタ3312が保持する1ビット値とマッチ信号Miとの一致を検出して一致信号matchを出力する回路である。両者が一致する場合、一致信号matchはHレベルとなり、両者が一致しない場合、一致信号matchはLレベルとなる。一致信号matchおよびマッチ信号検出回路331に入力される動作開始信号nexti−1はANDゲート3313に入力されて論理積が演算される。ANDゲート3313の出力が、次段のマッチ信号検出回路331に供給される動作開始信号nextiとなる。また、一致信号matchの論理反転および動作開始信号nexti−1はANDゲート3314に入力されて論理積が演算される。ANDゲート3314の出力が、クラスデータの選択信号actiとなる。
レジスタ3312には初期値として“0”が保持されている。したがって、マッチ信号Miが非アクティブのとき、両者は一致して一致信号matchがHレベルとなる。このとき、ANDゲート3313の出力がHレベルとなり、次段のマッチ信号検出回路331に動作開始信号nexti−1が供給される。また、ANDゲート3314の出力はLレベルとなる。すなわち、クラスデータの選択信号actiは出力されない。このように、マッチ信号Miが非アクティブのとき、マッチ信号検出回路331は、クラスデータの選択信号を出力せずに、入力された動作開始信号をすぐさま次段のマッチ信号検出回路331に伝達する。
一方、マッチ信号Miがアクティブのとき、両者が一致しないため一致信号matchがLレベルとなる。このとき、ANDゲート3313の出力がLレベルとなり、Hレベルの動作開始信号nexti−1が入力されることで、ANDゲート3314からHレベルの選択信号actiが出力される。
レジスタ3312には、直列に接続されたバッファ3315とバッファ3316を介してクロック信号CLKが接続されている。動作開始信号nexti−1がHレベルになると、バッファ3315はクロック信号CLKをバッファ3316へ供給する。さらに、一致信号matchの反転がHレベルになるとバッファ3316はクロック信号CLKをレジスタ3312へ供給する。レジスタ3312はクロック信号CLKを受けると保持値を1に変更する。これにより、アクティブのマッチ信号Miとレジスタ3312の保持値とが一致して一致信号matchがLレベルとなる。このとき、ANDゲート3313の出力がHレベルとなり、次段のマッチ信号検出回路331に動作開始信号nexti−1が供給される。また、ANDゲート3314の出力はLレベルとなる。すなわち、クラスデータの選択信号actiがLレベルに遷移する。このように、マッチ信号Miがアクティブのとき、マッチ信号検出回路331は、クラスデータの選択信号を出力してから1クロック周期後に、入力された動作開始信号を次段のマッチ信号検出回路331に伝達する。このとき出力されるクラスデータの選択信号は1クロック周期だけHレベルとなる。
図13に戻り、デマルチプレクサ332にはバッファ333およびバッファ334を介して供給されるクロック信号CLKが入力され、出力先はクラスデータメモリ31から出力されたQビットのクラスデータclsによって決定される。すなわち、クラスデータclsはX個のクラスカウンタ32の中のいずれか一つを選択する信号として用いられる。そして、1クロック周期ごとにクラスデータが選択され、当該選択されたクラスデータに対応するクラスカウンタ32にクロック信号CLKが入力されることで、当該クラスカウンタ32のカウント値がカウントアップされる。
k−マッチ信号数一致検出回路35は、カウンタ351および比較器352を含む。カウンタ351には、クラス識別回路33へのクロック信号CLKの供給と同じ条件でクロック信号CLKが入力されてパルス数をカウントアップする。すなわち、カウンタ351は、クラス識別回路33がアクティブになったマッチ信号を一つ選択するごとにカウントアップする。比較器352は、外部から与えられる数値kとカウンタ351のカウント値とを比較する回路である。両者が一致すると比較器352から停止信号stopが出力される。なお、図示していないが、カウント回路351はリセット信号を受けることで初期状態にリセットされる。
停止信号stopは再構成可能なクロックカウント式連想メモリ10の動作を停止させる制御信号として利用することができる。例えば、再構成可能なクロックカウント式連想メモリ10において、停止信号stopを受けたときにクロック信号CLKの供給を遮断するように構成するとよい。これにより、再構成可能なクロックカウント式連想メモリ10から出力される複数のマッチ信号のいずれかk個がアクティブになったとき、再構成可能なクロックカウント式連想メモリ10の動作が停止してそれ以上マッチ信号がアクティブになるのが抑制される。すなわち、アクティブになるマッチ信号の数をk個に制限することができる。
X個のクラスカウンタ32のカウント値Cn1〜CnXは、各クラスの近傍の数を示している。すなわち、カウント値Cn1〜CnXを参照することで各クラスの票数(データ数)がわかる。最大カウンタ検出回路34は、X個のクラスカウンタ32の中からカウント値が最大のクラスカウンタを見つける回路である。
図15は、一例に係る最大カウンタ検出回路34の概略構成を示す。最大カウンタ検出回路34は、ダウンカウンタ341と、X個の一致検出回路342とを含む。ダウンカウンタ341は、クロック信号CLKを受けて、初期値からカウント値をカウントダウンする回路である。ダウンカウンタ341へはバッファ343を介してクロック信号CLKが供給される。バッファ343は、k−マッチ信号数一致検出回路35から出力される停止信号stopを受けて、ダウンカウンタ341へクロック信号CLKを供給する。
X個の一致検出回路342は、X個のクラスカウンタ32のそれぞれに対応して設けられている。各一致検出回路342は、対応するクラスカウンタ32のカウント値とダウンカウンタ341のカウント値との一致を検出して、一致信号C1〜CXを出力する回路である。各一致検出回路342は、一致を検出すると、一致信号C1〜CXをHレベルに遷移させる。
X個の一致検出回路342の出力信号はORゲート344に入力され、これらの論理和が演算される。ダウンカウンタ341に入力されるクロック信号CLKは、ORゲート344の出力の論理反転によってマスクされるようになっている。すなわち、ダウンカウンタ341のカウント値がカウントダウンされている間に、X個の一致検出回路342のうちのいずれか一つによってダウンカウンタ341のカウント値と対応するクラスカウンタ32のカウント値との一致が検出されたとき、ダウンカウンタ341のカウント動作を停止させるようになっている。これにより、最大のカウント値を保持するクラスカウンタ32のみを検出することができる。一致信号C1〜CXのうちHレベルになっているものが、k近傍法に基づいて決定された検索データのクラスを表している。
図16は、別例に係る最大カウンタ検出回路34の概略構成を示す。最大カウンタ検出回路34は、複数の最大値選出回路345をツリー状に接続したトーナメント回路として構成することもできる。
図17は、一例に係る最大値選出回路345の概略構成を示す。最大値選出回路345は、比較回路346と、マルチプレクサ347とを含む。
最大値選出回路345には、あるクラスカウンタ32のカウント値Aとそのクラスカウンタ32の識別番号iを結合した信号A&iと、別のクラスカウンタ32のカウンタ値Bとそのクラスカウンタ32の識別番号jを結合した信号B&jが入力される。比較回路346は、カウンタ値Aおよびカウンタ値Bの大小を比較する。マルチプレクサ347は、信号A&iおよび信号B&jを受け、比較回路346の出力信号に応じて信号Cとして信号A&iおよび信号B&jのいずれか一方を出力する。具体的には、マルチプレクサ347は、A≧Bの場合、信号A&iを出力し、A<Bの場合、信号B&jを出力する。すなわち、信号Cとして、カウンタ値が大きい方のクラスカウンタ32のカウント値max(A,B)とそのクラスカウンタの識別番号index(i or j)を結合した信号が出力される。なお、マルチプレクサ347は、A>Bの場合、信号A&iを出力し、A≦Bの場合、信号B&jを出力してもよい。
図16に戻り、トーナメント回路のリーフノードにはX/2個の最大値選出回路345が配置される。リーフノードの各最大値選出回路345にはX個のクラスカウンタ32のうち隣り合う2個のクラスカウンタ32の各カウンタ値とそれら2個のクラスカウンタ32の各識別番号を結合した信号が入力される。
トーナメント回路の2段目にはX/22個の最大値選出回路345が配置される。2段目の各最大値選出回路345にはリーフノードの隣り合う2個の最大値選出回路345から出力される信号が入力される。
トーナメント回路のルートノードには1個の最大値選出回路345が配置される。そして、ルートノードの最大値選出回路345から、X個のクラスカウンタ32の最大カウント値max(Cn1,…,CnX)およびそのクラスカウンタ32の識別番号であるclass indexを結合した信号が出力される。
上記構成の最大カウンタ検出回路34によると、X個のクラスカウンタ32の最大値を1クロックサイクルで決定することができるため、特に高速処理に適している。
以上のように、本実施形態によると、再構成可能なクロックカウント式連想メモリ10によって検索データと各参照データとの距離がクロック数に変換されて、距離に応じたタイミングで各参照データに対応するマッチ信号がアクティブとなる。そして、k近傍クラスタリング回路30によって、より先にアクティブになったk個のマッチ信号に対応するk個のクラスデータをクラス別に分類した場合にデータ数が最大となるクラスが判定される。このようにして、k近傍法に基づいた検索データのクラス分けが実現される。また、複数のエレメント回路70をさまざまにつなぎ替えて参照データの次元数および個数を任意に拡縮することができる。これにより、アプリケーションに応じて再構成可能なk近傍法連想メモリ100を最適に再構成して、再構成可能なk近傍法連想メモリ100に割り当てられたリソースを最大限利用することができる。
なお、本実施形態では、再構成可能なクロックカウント式連想メモリ10から出力される複数のマッチ信号のいずれかがアクティブになるごとにクラス識別が行われるため、距離情報が欠落してしまう。そこで、例えば、クラス識別回路33にカウンタを設けて、各マッチ信号がアクティブになるまでの時間情報(すなわち時間換算した距離情報)を保持するようにしてもよい。その場合、時間情報を用いて、検索データにより距離の近い参照データの重みを大きくするようにクラスデータの重み付けを行って、より高度なクラス判別を行うことができる。また、アクティブとなったk個のマッチ信号に対応する参照データのうち、検索データとの距離が閾値以上のものは除外してk個以下でk近傍法を適用することも可能である。
また、先行文献2の発明に係るk近傍法連想メモリでは、複数の加算器をツリー状に接続してマッチ信号カウント回路を構成し、クロックカウント式連想メモリから出力されるR個のマッチ信号を当該マッチ信号カウント回路に接続して、より先にアクティブになったk個のマッチ信号をカウントしていた。これに対して、本実施形態に係る再構成可能なk近傍法連想メモリ100では、そのような加算器ツリーを使用せずにより先にアクティブになったk個のマッチ信号をカウントすることができるため、回路規模、消費電力、および遅延時間をより小さくすることができる。
100 再構成可能なk近傍法連想メモリ
10 再構成可能なクロックカウント式連想メモリ
20 制御回路
21 マッチ信号アクティブ検出回路
22 ORゲート
30 k近傍クラスタリング回路
31 クラスデータメモリ
32 クラスカウンタ
33 クラス識別回路
331 マッチ信号検出回路
34 最大カウンタ検出回路
341 ダウンカウンタ
342 一致検出回路
345 最大値選出回路
35 k−マッチ信号数一致検出回路
40 参照データ検索回路
50 スイッチ回路
60 メモリ(回路構成情報記憶回路)
70 エレメント回路
SC 参照データ保存回路
DP 距離計算回路
DC 距離/クロック数変換回路
10 再構成可能なクロックカウント式連想メモリ
20 制御回路
21 マッチ信号アクティブ検出回路
22 ORゲート
30 k近傍クラスタリング回路
31 クラスデータメモリ
32 クラスカウンタ
33 クラス識別回路
331 マッチ信号検出回路
34 最大カウンタ検出回路
341 ダウンカウンタ
342 一致検出回路
345 最大値選出回路
35 k−マッチ信号数一致検出回路
40 参照データ検索回路
50 スイッチ回路
60 メモリ(回路構成情報記憶回路)
70 エレメント回路
SC 参照データ保存回路
DP 距離計算回路
DC 距離/クロック数変換回路
Claims (8)
- それぞれが、参照データを保存する参照データ保存回路と、検索データと前記参照データ保存回路に保存されている前記参照データとの距離を計算する距離計算回路と、トリガー信号を受けてクロック信号のカウント動作を開始し、前記距離に応じたクロック数をカウントしたタイミングを示すマッチ信号を出力する距離/クロック数変換回路とを有する、複数のエレメント回路と、
前記複数のエレメント回路のそれぞれに対応して設けられ、それぞれが、与えられた回路構成信号に応じて、前段のエレメント回路から出力される前記マッチ信号を次段のエレメント回路に前記トリガー信号として供給するか否かを制御する、複数のスイッチ回路と、
k近傍法に従って前記検索データのクラスを判定するk近傍クラスタリング回路とを備え、
前記スイッチ回路でカスケード接続された複数の前記エレメント回路によって、個別の参照データを保存し、当該参照データと前記検索データとの距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すマッチ信号を出力する複数の参照データ検索回路からなる再構成可能なクロックカウント式連想メモリが構成され、
前記k近傍クラスタリング回路は、前記再構成可能なクロックカウント式連想メモリから出力される複数のマッチ信号のうちいずれかk個のマッチ信号がアクティブになるまでの間、前記複数のマッチ信号の少なくとも一つがアクティブになるごとに、前記複数の参照データ検索回路のそれぞれが保存する参照データのクラスを表す複数のクラスデータから当該アクティブになった少なくとも一つのマッチ信号のそれぞれに対応するクラスデータを選択し、当該選択した全部でk個のクラスデータをクラス別に分類した場合においてデータ数が最大となるクラスを判定するように構成されている
ことを特徴とする再構成可能なk近傍法連想メモリ。 - 前記k近傍クラスタリング回路が、
前記複数のクラスデータを保持するクラスデータメモリと、
X個のクラスのそれぞれに対応するX個のクラスカウンタと、
前記アクティブになった少なくとも一つのマッチ信号を順次選択し、当該選択したマッチ信号に対応するクラスデータを前記クラスデータメモリから読み出し、当該読み出したクラスデータによって表されるクラスに対応するクラスカウンタをカウントアップし、前記アクティブになった少なくとも一つのマッチ信号をすべて選択し終わると終了信号を出力するクラス識別回路と、
前記X個のクラスカウンタの中からカウント値が最大のクラスカウンタを見つける最大カウンタ検出回路と、
前記クラス識別回路がアクティブになったマッチ信号を一つ選択するごとにカウントアップし、カウント値がkに一致したことを検出するk−マッチ信号数一致検出回路とを有するものであり、
前記再構成可能なk近傍法連想メモリが、前記複数のマッチ信号の少なくとも一つがアクティブになると前記再構成可能なクロックカウント式連想メモリの動作を停止させて前記クラス識別回路を動作させ、前記クラス識別回路から前記終了信号が出力されると前記クラス識別回路の動作を停止させて前記再構成可能なクロックカウント式連想メモリを動作させる制御回路を備え、
前記再構成可能なクロックカウント式連想メモリが、前記k−マッチ信号数一致検出回路によって前記カウント値がkに一致したことが検出されたとき、動作を停止するように構成されている、請求項1に記載の再構成可能なk近傍法連想メモリ。 - 前記制御回路が、
前記複数のスイッチ回路のそれぞれに対応して設けられ、対応するスイッチ回路が前記回路構成信号に応じて選択的に出力する前段のエレメント回路のマッチ信号がアクティブになってから前記クラス識別回路から前記終了信号が出力されるまでの間だけアクティブになる検出信号を出力する複数のマッチ信号アクティブ検出回路と、
前記複数のマッチ信号アクティブ検知回路から出力される複数の検出信号の論理和を演算するORゲートとを有し、
前記ORゲートの出力信号で前記クラス識別回路および前記再構成可能なクロックカウント式連想メモリの動作を制御する、請求項2に記載の再構成可能なk近傍法連想メモリ。 - 前記クラス識別回路が、前記複数のスイッチ回路のそれぞれに対応して設けられ、対応するスイッチ回路が前記回路構成信号に応じて選択的に出力する前段のエレメント回路のマッチ信号がアクティブであることを検出して前記クラスデータメモリに当該マッチ信号に対応するクラスデータを選択する選択信号を出力する複数のマッチ信号検出回路を有し、
前記複数のマッチ信号検出回路が、動作開始信号を伝搬するように直列に接続されており、
前記複数のマッチ信号検出回路のそれぞれが、前記対応するスイッチ回路から出力されるマッチ信号が非アクティブのとき、入力された前記動作開始信号をすぐさま次段に伝達し、前記対応するスイッチ回路から出力されるマッチ信号がアクティブのとき、前記動作開始信号を受けて前記選択信号を出力してから前記動作開始信号を次段に伝達するように構成されている、請求項2および3いずれか一つに記載の再構成可能なk近傍法連想メモリ。 - 前記最大カウンタ検出回路が、
初期値からカウント値をカウントダウンするダウンカウンタと、
前記X個のクラスカウンタのそれぞれに対応して設けられ、対応するクラスカウンタのカウント値と前記ダウンカウンタのカウント値との一致を検出するX個の一致検出回路とを有し、
前記ダウンカウンタのカウント値がカウントダウンされている間に、前記X個の一致検出回路のうちのいずれか一つによって前記ダウンカウンタのカウント値と対応するクラスカウンタのカウント値との一致が検出されたとき、前記ダウンカウンタのカウント動作を停止させる、請求項2ないし4のいずれか一つに記載の再構成可能なk近傍法連想メモリ。 - 前記最大カウンタ検出回路が、2入力1出力の複数の最大値選出回路がツリー状に接続されてなり、リーフノードの複数の最大値選出回路に前記X個のクラスカウンタの各カウント値および各クラスカウンタの識別番号を結合した各信号が入力され、ルートノードの最大値選出回路から前記X個のクラスカウンタの最大カウント値およびそのクラスカウンタの識別番号を結合した信号を出力するトーナメント回路であり、
前記最大値選出回路が、第1のクラスカウンタのカウント値および前記第1のクラスカウンタの識別番号を結合した第1の信号、および第2のクラスカウンタのカウント値および前記第2のクラスカウンタの識別番号を結合した第2の信号を受け、前記第1および第2のクラスカウンタのうちカウント値が大きい方のクラスカウンタのカウント値およびそのクラスカウンタの識別番号を結合した第3の信号を出力する、請求項2ないし4のいずれか一つに記載の再構成可能なk近傍法連想メモリ。 - 回路構成情報を記憶し、当該回路構成情報に基づいて前記複数のスイッチ回路のそれぞれに前記回路構成信号を出力する回路構成情報記憶回路を備えている
ことを特徴とする請求項1ないし請求項3のいずれかに記載の再構成可能なk近傍法連想メモリ。 - 前記回路構成情報記憶回路が不揮発性メモリで構成されている
ことを特徴とする請求項7に記載の再構成可能なk近傍法連想メモリ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015034716A JP6411914B2 (ja) | 2015-02-25 | 2015-02-25 | 再構成可能なk近傍法連想メモリ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015034716A JP6411914B2 (ja) | 2015-02-25 | 2015-02-25 | 再構成可能なk近傍法連想メモリ |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2016157496A JP2016157496A (ja) | 2016-09-01 |
JP6411914B2 true JP6411914B2 (ja) | 2018-10-24 |
Family
ID=56826203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015034716A Expired - Fee Related JP6411914B2 (ja) | 2015-02-25 | 2015-02-25 | 再構成可能なk近傍法連想メモリ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6411914B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10268948B2 (en) * | 2015-07-23 | 2019-04-23 | The Boeing Company | Data driven classification and troubleshooting system and method using associative memory and a machine learning algorithm to improve the accuracy and performance of the associative memory |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6085187B2 (ja) * | 2013-02-13 | 2017-02-22 | 国立大学法人広島大学 | 連想メモリ |
JP6327717B2 (ja) * | 2013-07-25 | 2018-05-23 | 国立大学法人広島大学 | k近傍法連想メモリ |
-
2015
- 2015-02-25 JP JP2015034716A patent/JP6411914B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2016157496A (ja) | 2016-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5440753A (en) | Variable length string matcher | |
US20160171045A1 (en) | Hierarchical in-memory sort engine | |
US10521366B2 (en) | System and method for individual addressing | |
US4095283A (en) | First in-first out memory array containing special bits for replacement addressing | |
EP3273390B1 (en) | Hardware implementation of a temporal memory system | |
US11475314B2 (en) | Learning device and learning method | |
KR102409615B1 (ko) | 연상 메모리에서의 최소값-최대값 계산 방법 | |
JP5800422B2 (ja) | 連想メモリ | |
US20230176999A1 (en) | Devices for time division multiplexing of state machine engine signals | |
CA3108047C (en) | Optimization device and method for executing annealing processes and replica exchange | |
CN115398545A (zh) | 模糊检索电路 | |
JP6215732B2 (ja) | 再構成可能連想メモリ | |
JP6327717B2 (ja) | k近傍法連想メモリ | |
US20180113951A1 (en) | Graph traversal using automata processor | |
JP6389438B2 (ja) | k近傍法連想メモリ | |
JP6411914B2 (ja) | 再構成可能なk近傍法連想メモリ | |
JP5916563B2 (ja) | 連想メモリ | |
US10929764B2 (en) | Boolean satisfiability | |
RU2294561C2 (ru) | Устройство аппаратной реализации вероятностных генетических алгоритмов | |
KR102154834B1 (ko) | 저전력 및 고속 연산을 위한 dram용 비트와이즈 컨볼루션 회로 | |
JP6085187B2 (ja) | 連想メモリ | |
RU2469425C2 (ru) | Ассоциативная запоминающая матрица маскированного поиска вхождений | |
EP1271548B1 (en) | Associative memory with AND gate match signal combining circuitry | |
JP2786364B2 (ja) | 連想メモリ装置 | |
JP2005165502A (ja) | Lut符号化方法及びlut符号化装置並びにlutカスケード論理回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20180223 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180828 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180927 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6411914 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |