TOP > 国内特許検索 > 連想メモリ > 明細書

明細書 :連想メモリ

発行国 日本国特許庁(JP)
公報種別 特許公報(B2)
特許番号 特許第6215726号 (P6215726)
公開番号 特開2015-149113 (P2015-149113A)
登録日 平成29年9月29日(2017.9.29)
発行日 平成29年10月18日(2017.10.18)
公開日 平成27年8月20日(2015.8.20)
発明の名称または考案の名称 連想メモリ
国際特許分類 G11C  15/04        (2006.01)
FI G11C 15/04 631F
請求項の数または発明の数 4
全頁数 17
出願番号 特願2014-022398 (P2014-022398)
出願日 平成26年2月7日(2014.2.7)
審査請求日 平成28年12月14日(2016.12.14)
特許権者または実用新案権者 【識別番号】504136568
【氏名又は名称】国立大学法人広島大学
発明者または考案者 【氏名】マタウシュ ハンスユルゲン
【氏名】赤澤 智信
【氏名】山崎 翔悟
個別代理人の代理人 【識別番号】110001427、【氏名又は名称】特許業務法人前田特許事務所
審査官 【審査官】後藤 彰
参考文献・文献 特開2013-101729(JP,A)
特開2002-288985(JP,A)
矢野 祐二,”全並列型最小マンハッタン距離検索連想メモリ”,電子情報通信学会技術研究報告 DC2002-34~71,日本,社団法人電子情報通信学会,2002年11月21日,第102巻,第479号,p.181-186
調査した分野 G11C 15/04
特許請求の範囲 【請求項1】
E×M次元(ただし、E,Mはいずれも2以上の整数である。)の検索データをM次元ずつE回に分けて保存する検索データ保存回路と、
R個(ただし、Rは2以上の整数である。)のE×M次元の参照データをR個のM次元ずつE回に分けて保存する参照データ保存回路と、
前記検索データ保存回路および前記参照データ保存回路に新たなデータが保存されるたびに、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の部分距離を計算する距離計算回路と、
前記検索データ保存回路および前記参照データ保存回路に新たなデータが保存されるたびに、個々の参照データごとに、前記距離計算回路によって計算された各次元の部分距離を累積加算する次元数拡張回路と、
前記E×M次元の検索データおよび前記R個のE×M次元の参照データがそれぞれE回に分けて前記検索データ保存回路および前記参照データ保存回路に保存された後に、個々の参照データごとに、前記次元数拡張回路によって累積加算された部分距離を合計して前記E×M次元の検索データと個々の前記E×M次元の参照データとの距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すタイミング信号を出力する距離/クロック数変換回路とを備えている
ことを特徴とする連想メモリ。
【請求項2】
前記次元数拡張回路が、第1および第2のマルチプレクサと、全加算器と、第1および第2のDフリップフロップとを有するものであり、
前記第1のマルチプレクサは、前記距離計算回路によって計算された第1の次元の部分距離および前記第1のDフリップフロップの出力がそれぞれ第1および第2の入力として与えられ、第1の制御信号によって前記第1および第2の入力のいずれか一方を選択的に出力するものであり、
前記第2のマルチプレクサは、前記距離計算回路によって計算された第2の次元の部分距離および前記第2のDフリップフロップの出力がそれぞれ第1および第2の入力として与えられ、前記第1の制御信号によって前記第1および第2の入力のいずれか一方を選択的に出力するものであり、
前記全加算器は、前記第1のマルチプレクサの出力と前記第2のマルチプレクサの出力とを全加算するものであり、
前記第1のDフリップフロップは、前記全加算器の出力がデータ入力され、第2の制御信号によって入力データの保存が制御されるものであり、
前記第2のDフリップフロップは、前記全加算器の出力がデータ入力され、前記第2の制御信号の反転である第3の制御信号によって入力データの保存が制御されるものである
ことを特徴とする請求項1に記載の連想メモリ。
【請求項3】
前記距離計算回路が、前記部分距離として、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の差分絶対値を計算する
ことを特徴とする請求項1または請求項2に記載の連想メモリ。
【請求項4】
前記距離計算回路が、前記部分距離として、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の差分二乗値を計算する
ことを特徴とする請求項1または請求項2に記載の連想メモリ。
発明の詳細な説明 【技術分野】
【0001】
本発明は、連想メモリに関し、特に、クロックカウント式の連想メモリの次元数を拡張する技術に関する。
【背景技術】
【0002】
近年、文字認識・画像認識などに代表されるパターンマッチングを必要とするアプリケーションが大変注目されている。特に、パターンマッチングをLSI(Large Scale Integrated circuit)上で実現することにより、将来、人工知能およびモバイル機器などの高機能アプリケーションに適用可能になり、この技術の実現は、非常に注目を浴びている。
【0003】
パターンマッチングでは、データベースに保存された複数の参照データの中から、完全に検索データと一致するパターンを検索する「完全一致検索処理」と、検索データと最も類似するパターンを検索する「最類似検索処理」とがある。
【0004】
前者は、CAM(Content Addressable Memory)と呼ばれ、ネットワークルータのIPアドレステーブルのルーティングおよびプロセッサのキャッシュなどの実現に用いられる。人間の脳のような柔軟な検索・比較をコンピュータに処理させるには、後者の最類似検索処理を実現することが必要不可欠である。このような柔軟な比較を実現する機能を持つメモリのことを特に連想メモリ(Associative Memory)と呼ぶ。
【0005】
連想メモリの例として、検索データと参照データとのマンハッタン距離またはユークリッド距離を用いて最類似検索処理を行うものが知られている(非特許文献1参照)。
【先行技術文献】
【0006】

【非特許文献1】S.Sasaki et al., "Digital Associative Memory for Word-Parallel Manhattan-Distance-Based Vector Quantization," ESSCIRC'2012, 2012, pp.185-188
【発明の概要】
【発明が解決しようとする課題】
【0007】
本願発明者は、これまでに、検索に係るクロックカウント数を削減する機構(有効ビット設定部)とユークリッド距離検索のための二乗計算回路(距離演算回路)とを備えたクロックカウント式の連想メモリを発明し、特願2013-025465(以下、先願と称する)において開示した。これにより、データ規模が増大しても高速な検索が可能なユークリッド/マンハッタン距離検索連想メモリをエラーフリー、高電力効率に実現した。
【0008】
しかし、ハードウェアに実装可能なデータサイズには制約がある。先願発明に係る連想メモリは、原理的にはデータサイズに制約がないが、データサイズの増加により動作周波数が低下してしまう。この点において、小さなハードウェアによって大きな次元までの1NN(1-Nearest Neighbor)検索を実現することができれば効率が向上する。
【0009】
上記問題に鑑み、本発明は、アプリケーション上でより大きなデータサイズが要求される場合に次元数の拡張が可能な連想メモリを提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明の一局面に従った連想メモリは、E×M次元(ただし、E,Mはいずれも2以上の整数である。)の検索データをM次元ずつE回に分けて保存する検索データ保存回路と、R個(ただし、Rは2以上の整数である。)のE×M次元の参照データをR個のM次元ずつE回に分けて保存する参照データ保存回路と、前記検索データ保存回路および前記参照データ保存回路に新たなデータが保存されるたびに、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の部分距離を計算する距離計算回路と、前記検索データ保存回路および前記参照データ保存回路に新たなデータが保存されるたびに、個々の参照データごとに、前記距離計算回路によって計算された各次元の部分距離を累積加算する次元数拡張回路と、前記E×M次元の検索データおよび前記R個のE×M次元の参照データがそれぞれE回に分けて前記検索データ保存回路および前記参照データ保存回路に保存された後に、個々の参照データごとに、前記次元数拡張回路によって累積加算された部分距離を合計して前記E×M次元の検索データと個々の前記E×M次元の参照データとの距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すタイミング信号を出力する距離/クロック数変換回路とを備えているものである。
【0011】
これによると、E×M次元の検索データおよび参照データがM次元ずつE回に分けて検索データ保存回路および参照データ保存回路に保存され、検索データ保存回路および参照データ保存回路に新たなデータが保存されるたびに検索データと参照データの各次元の部分距離が計算され、さらに累積加算される。これにより、E×M次元のデータの次元数がM次元に圧縮され、最大でM次元のデータしか扱えない連想メモリにおいて実質的にE×M次元のデータの取り扱いが可能となる。
【0012】
上記の連想メモリにおいて、前記次元数拡張回路が、第1および第2のマルチプレクサと、全加算器と、第1および第2のDフリップフロップとを有するものであってもよく、前記第1のマルチプレクサは、前記距離計算回路によって計算された第1の次元の部分距離および前記第1のDフリップフロップの出力がそれぞれ第1および第2の入力として与えられ、第1の制御信号によって前記第1および第2の入力のいずれか一方を選択的に出力するものであってもよく、前記第2のマルチプレクサは、前記距離計算回路によって計算された第2の次元の部分距離および前記第2のDフリップフロップの出力がそれぞれ第1および第2の入力として与えられ、前記第1の制御信号によって前記第1および第2の入力のいずれか一方を選択的に出力するものであってもよく、前記全加算器は、前記第1のマルチプレクサの出力と前記第2のマルチプレクサの出力とを全加算するものであってもよく、前記第1のDフリップフロップは、前記全加算器の出力がデータ入力され、第2の制御信号によって入力データの保存が制御されるものであってもよく、前記第2のDフリップフロップは、前記全加算器の出力がデータ入力され、前記第2の制御信号の反転である第3の制御信号によって入力データの保存が制御されるものであってもよい。
【0013】
これによると、距離計算回路によって計算された各次元の部分距離を2次元分まとめて累積加算することができ、データ信号線を削減することができる。
【0014】
前記距離計算回路が、前記部分距離として、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の差分絶対値を計算してもよい。
【0015】
これによると、検索データと参照データとの間のマンハッタン距離を計算することができる。
【0016】
前記距離計算回路が、前記部分距離として、前記検索データ保存回路に保存された検索データと前記参照データ保存回路に保存された個々の参照データとの各次元の差分二乗値を計算してもよい。
【0017】
これによると、検索データと参照データとの間のユークリッド距離を計算することができる。
【発明の効果】
【0018】
本発明によると、連想メモリで取り扱い可能なデータ次元数を任意に拡張することができる。これにより、大きなデータサイズが要求されるアプリケーションにもクロックカウント式の連想メモリを適用できるようになる。
【図面の簡単な説明】
【0019】
【図1】本発明の一実施形態に係る連想メモリにおける次元数拡張を説明する模式図
【図2】本発明の一実施形態に係る連想メモリの概略構成図
【図3】一例に係るタイミング信号のタイミングチャート
【図4】一例に係る次元数拡張回路の構成図
【図5A】図4の次元数拡張回路の動作例を示す図
【図5B】図4の次元数拡張回路の動作例を示す図5Aに続く図
【図6】一例に係る制御回路の構成図
【図7】図6の制御回路の入出力信号のタイミングチャート
【図8】一例に係るDC制御回路の構成図
【図9】図8のDC制御回路の入出力信号のタイミングチャート
【図10】一例に係るDEC制御回路の構成図
【図11】図10のDEC制御回路の入出力信号のタイミングチャート
【発明を実施するための形態】
【0020】
以下、図面を参照しながら本発明を実施するための形態について説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰り返さない。また、本発明は、下記の実施形態に限定されるものではない。

【0021】
≪次元数拡張の概要≫
本発明の一実施形態に係る連想メモリは、先願発明に係る連想メモリにおいて検索データおよび参照データの次元数を拡張可能にしたものである。すなわち、先願発明に係る連想メモリは最大で設計時に指定したM次元(Mは2以上の整数)のデータしか扱えなかったのに対して、本実施形態に係る連想メモリは、データの次元数をE×M次元(Eは2以上の整数)にまで拡張することができる。

【0022】
図1は、本発明の一実施形態に係る連想メモリにおける次元数拡張を説明する模式図である。データの次元数がE×M次元の場合において、検索データと参照データとの間のa=hかつj次元目の二乗計算結果(部分距離)をdh,(h-1)M+jとすると、検索データと参照データとの間の距離(例えば、ユークリッド距離)Dは次式(1)のように計算される。

【0023】
【数1】
JP0006215726B2_000002t.gif

【0024】
ここで、式(1)においてΣa=1の計算を先に行う。すなわち、図1に示したように、E×M次元のデータをE行×M列の行列形式で表した場合において、先に列方向(図中の破線枠)の累積加算を行う。これにより、E×M次元のデータの次元数がM次元に圧縮され、最大でM次元のデータしか扱えない先願発明に係る連想メモリにおいて実質的にE×M次元のデータの取り扱いが可能となる。

【0025】
本実施形態に係る連想メモリは、先願発明に係る連想メモリに、E×M次元のデータの次元数を上記のように圧縮してM次元のデータにする機能を追加したものである。以下、本実施形態に係る連想メモリの詳細について説明する。

【0026】
≪本実施形態に係る連想メモリの構成例≫
図2は、本発明の一実施形態に係る連想メモリの概略構成を示す。本実施形態に係る連想メモリ100は、メモリアレイ部10と、Winner検出器20とを備える。

【0027】
メモリアレイ部10は、メモリ部1、行デコーダ2、列デコーダ3、読出/書込回路4、および検索データ保存回路5を含む。

【0028】
メモリ部1は、参照データ保存回路(Storage Cell)SC11~SC1M,SC21~SC2M,…,SCR1~SCRMと、距離計算回路(Distance Calculator)DC11~DC1M,DC21~DC2M,…,DCR1~DCRMと、次元数拡張回路(Dimensional Extension Circuit)DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2と、距離/クロック数変換回路(Distance Evaluator)DE~DEとを含む。なお、MおよびRは、いずれも2以上の整数である。

【0029】
行デコーダ2は、メモリ部1の行方向のアドレスを指定する。列デコーダ3は、メモリ部1の列方向のアドレスを指定する。読出/書込回路4は、参照データを行デコーダ2および列デコーダ3によって指定された参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMに書き込むとともに、検索データを検索データ保存回路5に書き込む。

【0030】
距離計算回路DC11~DC1Mは、それぞれ、参照データ保存回路SC11~SC1Mに対応して設けられる。また、距離計算回路DC21~DC2Mは、それぞれ、参照データ保存回路SC21~SC2Mに対応して設けられる。以下、同様にして、距離計算回路DCR1~DCRMは、それぞれ、参照データ保存回路SCR1~SCRMに対応して設けられる。

【0031】
次元数拡張回路DEC11~DEC1M/2は、それぞれ、距離計算回路DC11~DC1Mの隣り合う2個に対応して1個設けられる。また、次元数拡張回路DEC21~DEC2M/2は、それぞれ、距離計算回路DC21~DC2Mの隣り合う2個に対応して1個設けられる。以下、同様にして、次元数拡張回路DECR1~DECRM/2は、それぞれ、距離計算回路DCR1~DCRMの隣り合う2個に対応して1個設けられる。

【0032】
距離/クロック数変換回路DEは、次元数拡張回路DEC11~DEC1M/2に対応して設けられる。また、距離/クロック数変換回路DEは、次元数拡張回路DEC21~DEC2M/2に対応して設けられる。以下、同様にして、距離/クロック数変換回路DEは、次元数拡張回路DECR1~DECRM/2に対応して設けられる。

【0033】
参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMは、行デコーダ2、列デコーダ3、および読出/書込回路4によって書き込まれた参照データを保存する。この場合、参照データ保存回路SC11~SC1Mは、N×M(Nは1以上の整数)ビットの参照データ1を保存する。また、参照データ保存回路SC21~SC2Mは、N×Mビットの参照データ2を保存する。以下、同様にして、参照データ保存回路SCR1~SCRMは、N×Mビットの参照データRを保存する。すなわち、参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMは、R個のM次元の参照データ(各次元はNビットデータ)を保存する。

【0034】
検索データ保存回路5は、N×Mビットの検索データを保存する。すなわち、検索データ保存回路5は、M次元の検索データ(各次元はNビットデータ)を保存する。

【0035】
上記のように、検索データ保存回路5および参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMが保存可能な検索データおよび参照データの次元数はM次元であるため、E×M次元の検索データおよび参照データをE回に分けてこれらデータ保存回路に保存する。具体的には、検索データ保存回路5は、E×M次元の検索データをM次元ずつE回に分けて保存する。一方、参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMは、R個のE×M次元の参照データをR個のM次元ずつE回に分けて保存する。

【0036】
なお、E×M次元の検索データおよびR個のE×M次元の参照データは、図示しないメモリに保存されており、図示しない制御回路によってE回に分けて当該メモリからM次元ずつ読み出される。そして、当該メモリから読み出されたM次元の検索データおよびR個のM次元の参照データは、行デコーダ2、列デコーダ3、および読出/書込回路4によって検索データ保存回路5および参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMにそれぞれ書き込まれる。

【0037】
距離計算回路DC11~DC1Mは、それぞれ、検索データ保存回路5および参照データ保存回路SC11~SC1Mに新たなデータが保存されるたびに、検索データ保存回路5に保存されたN×Mビットの検索データと参照データ保存回路SC11~SC1Mに保存されたN×Mビットの参照データ1との各次元の部分距離を計算する。また、距離計算回路DC21~DC2Mは、それぞれ、検索データ保存回路5および参照データ保存回路SC21~SC2Mに新たなデータが保存されるたびに、検索データ保存回路5に保存されたN×Mビットの検索データと参照データ保存回路SC21~SC2Mに保存されたN×Mビットの参照データ2との各次元の部分距離を計算する。以下、同様にして、距離計算回路DCR1~DCRMは、それぞれ、検索データ保存回路5および参照データ保存回路SCR1~SCRMに新たなデータが保存されるたびに、検索データ保存回路5に保存されたN×Mビットの検索データと参照データ保存回路SCR1~SCRMに保存されたN×Mビットの参照データRとの各次元の部分距離を計算する。これら距離計算回路DC11~DC1M,DC21~DC2M,…,DCR1~DCRMによる部分距離の計算は並列に行われる。

【0038】
なお、部分距離は、検索データと参照データとの各次元の差分絶対値および差分二乗値のいずれでもよい。検索データと参照データとの間の距離をマンハッタン距離で評価する場合、差分距離として差分絶対値を用いるとよい。検索データと参照データとの間の距離をユークリッド距離で評価する場合、差分距離として差分二乗値を用いるとよい。距離計算回路の具体的な回路構成については先願の明細書および図面に詳しく説明されている。以下では、便宜上、部分距離として差分二乗値を用いるものとして説明する。

【0039】
次元数拡張回路DEC11~DEC1M/2は、それぞれ、検索データ保存回路5および参照データ保存回路SC11~SC1Mに新たなデータが保存されるたびに、距離計算回路DC11~DC1Mによって計算された各次元の部分距離を2次元分まとめて累積加算する。また、次元数拡張回路DEC21~DEC2M/2は、それぞれ、検索データ保存回路5および参照データ保存回路SC21~SC2Mに新たなデータが保存されるたびに、距離計算回路DC21~DC2Mによって計算された各次元の部分距離を2次元分まとめて累積加算する。以下、同様にして、次元数拡張回路DECR1~DECRM/2は、それぞれ、検索データ保存回路5および参照データ保存回路SCR1~SCRMに新たなデータが保存されるたびに、距離計算回路DCR1~DCRMによって計算された各次元の部分距離を2次元分まとめて累積加算する。これら次元数拡張回路DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2による部分距離の累積加算は並列に行われる。

【0040】
距離計算回路DC11~DC1M,DC21~DC2M,…,DCR1~DCRMに1対1に対応するように次元数拡張回路を配置してもよいが、Eが2の冪乗で表される場合、logEだけ余分にビット数が必要となる。E=64の場合、ハードウェア上に用意された次元の64倍の次元まで処理できるが、1次元当たり6ビット余分に用意しておく必要がある。そこで、データ信号線を削減するために、本実施形態のように、各次元数拡張回路において2次元分の部分距離の累積加算を行うようにするとよい。

【0041】
距離計算回路DC11~DC1M,DC21~DC2M,…,DCR1~DCRMからは、それぞれ、2Nビットの部分距離(差分二乗値)が出力される。したがって、2個の距離計算回路から出力される2次元分の部分距離は4Nビットとなる。このとき、各距離計算回路から出力される各次元の部分距離を逐次的にa=1からa=Eまで累積加算する場合、各次元数拡張回路の出力ビット幅は2次元当たり4N+2logEビット必要となる。これに対して、本実施形態のように、2個の距離計算回路から出力される2次元分の部分距離をまとめて累積加算を行うことで、各次元数拡張回路の出力ビット幅は(2N+1)+logEビットに削減することができる。例えば、E=22N-1倍の次元拡張を行う場合、次元数拡張回路DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2の出力ビット幅は4Nビットとなり、2個の距離計算回路から出力される2次元分の部分距離である4Nビットと等しくすることができる。また、例えば、N=8ビット、すなわち、E=32768倍の次元数拡張を行う場合、次元数拡張回路DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2の出力ビット幅は4N=32ビットとなる。ここで、M=16次元とすると、本実施形態に係る連想メモリ100は、約50万次元まで拡張したデータを取り扱うことができる。

【0042】
距離/クロック数変換回路DEは、E×M次元の検索データおよびR個のE×M次元の参照データがそれぞれE回に分けて検索データ保存回路5および参照データ保存回路SC11~SC1Mに保存された後に、次元数拡張回路DEC11~DEC1M/2によって累積加算された部分距離を合計してE×M次元の検索データとE×M次元の参照データ1との距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すタイミング信号Cを出力する。また、距離/クロック数変換回路DEは、E×M次元の検索データおよびR個のE×M次元の参照データがそれぞれE回に分けて検索データ保存回路5および参照データ保存回路SC21~SC2Mに保存された後に、次元数拡張回路DEC21~DEC2M/2によって累積加算された部分距離を合計してE×M次元の検索データとE×M次元の参照データ2との距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すタイミング信号Cを出力する。以下、同様にして、距離/クロック数変換回路DEは、E×M次元の検索データおよびR個のE×M次元の参照データがそれぞれE回に分けて検索データ保存回路5および参照データ保存回路SCR1~SCRMに保存された後に、次元数拡張回路DECR1~DECRM/2によって累積加算された部分距離を合計してE×M次元の検索データとE×M次元の参照データRとの距離を計算し、当該距離に応じたクロック数をカウントしたタイミングを示すタイミング信号Cを出力する。これら距離/クロック数変換回路DE~DEによる、距離に応じたクロック数のカウントは並列に行われる。

【0043】
Winner検出器20は、距離/クロック数変換回路DE~DEからそれぞれタイミング信号C~Cを受ける。図3は、一例に係るタイミング信号のタイミングチャートである。そして、Winner検出器20は、その受けたタイミング信号C~Cのうち、一致タイミングが早い順にk(kは1≦k≦Rを満たす整数)個のタイミング信号を検出し、その検出したk個のタイミング信号を検索データと参照データとの類似度を示すマッチ信号M~Mとして出力する。

【0044】
≪次元数拡張回路の構成例≫
上述したように2個の距離計算回路から出力される2次元分の部分距離をまとめて累積加算を行う場合、式(1)は次式(2)のように変形される。

【0045】
【数2】
JP0006215726B2_000003t.gif

【0046】
次元数拡張回路DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2は、それぞれ、式(2)におけるΣa=1の計算を行う。

【0047】
図4は、次元数拡張回路の構成例を示す。次元数拡張回路は、二つのマルチプレクサ(MUX)11a,11bと、全加算器(Full Adder)12と、二つのDフリップフロップ(DFF)13a,13bとを含む。

【0048】
MUX11aは、距離計算回路DCi(2j-1)(iは1≦i≦Rを満たす整数、jは1≦j≦M/2を満たす整数)によって計算された部分距離di(2j-1)が入力in0として、DFF13aの出力が入力in1としてそれぞれ与えられ、制御信号SDDによってin0およびin1のいずれか一方を選択的に出力する。部分距離di(2j-1)は差分二乗値であり、そのビット幅は2Nビットである。

【0049】
MUX11bは、距離計算回路DCi(2j)によって計算された部分距離di(2j)が入力in0として、DFF13bの出力が入力in1としてそれぞれ与えられ、制御信号SDDによってin0およびin1のいずれか一方を選択的に出力する。部分距離di(2j)は差分二乗値であり、そのビット幅は2Nビットである。

【0050】
MUX11aおよびMUX11bは、いずれも、SDDが“0”のときはin0を出力し、SDDが“1”のときはin1を出力する。

【0051】
全加算器12は、MUX11aの出力が入力Aとして、MUX11bの出力が入力Bとしてそれぞれ与えられ、AとBの全加算を行う2Nビットの全加算器である。CB(Carry Before)、CN(Carry Next)は、それぞれ、前のビットからの桁上げ信号、および次のビットへの桁上げ信号である。

【0052】
DFF13aは、全加算器12の出力OUTがデータ入力され、制御信号SDによって入力データの保存が制御される。具体的には、DFF13aは、SDの立ち上がりエッジのタイミングで入力データを保存する。

【0053】
DFF13bは、全加算器12の出力OUTがデータ入力され、制御信号SDQによって入力データの保存が制御される。SDQはSDの反転信号である。具体的には、DFF13bは、SDQの立ち上がりエッジのタイミングで入力データを保存する。

【0054】
図5Aおよび図5Bは、図4の次元数拡張回路の動作例を示す図である。図5Aおよび図5Bを参照しながら上記構成の次元数拡張回路の動作例について説明する。なお、図中の矢印はデータの流れを表す。

【0055】
step1:a=1で連想メモリ100にM次元の検索データおよびR個のM次元の参照データが保存され、これら検索データと個々の参照データとの間の各次元の部分距離が計算される。SDDが“0”であるため、全加算器12に2次元分のdi(2j-1)およびdi(2j)が入力されて加算される。全加算器12の加算結果がDFF13aおよびDFF13bにデータ入力されるが、この時点ではそのどちらにも取り込まれない。

【0056】
step2:SDが“0”から“1”へ変化し、SDQが“1”から“0”へ変化する。SDが立ち上がることで、DFF13aが全加算器12の加算結果を保存し、DFF13aから保存値が出力される。

【0057】
step3:a=2で連想メモリ100に新たなM次元の検索データおよびR個のM次元の参照データが保存され、これら検索データと個々の参照データとの間の各次元の部分距離が計算される。SDDが“0”であるため、全加算器12に更新された2次元分のdi(2j-1)およびdi(2j)が入力されて加算される。全加算器12の加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDが“1”のまま、SDQが“0”のままであるため、DFF13aおよびDFF13bに全加算器12の加算結果は取り込まれない。

【0058】
step4:SDが“1”から“0”へ変化し、SDQが“0”から“1”へ変化する。SDQが立ち上がることで、DFF13bが全加算器12の加算結果を保存し、DFF13bから保存値が出力される。

【0059】
step5:SDDが“0”から“1”へ変化し、全加算器12にDFF13aの出力およびDFF13bの出力が入力されて加算される。これにより、a=1のときのdi(2j-1)およびdi(2j)の加算結果と、a=2のときのdi(2j-1)およびdi(2j)の加算結果とが加算される。すなわち、a=1からa=2までの2次元分の部分距離が累積加算される。全加算器12の加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDが“0”のまま、SDQが“1”のままであるため、DFF13aおよびDFF13bに全加算器12の加算結果は取り込まれない。

【0060】
step6:SDが“0”から“1”へ変化し、SDQが“1”から“0”へ変化する。SDが立ち上がることで、DFF13aが全加算器12の加算結果、すなわち、a=1からa=2までの2次元分の部分距離の累積加算値を保存し、DFF13aから保存値が出力される。このとき、全加算器12においてDFF13bの出力とDFF13aの更新された出力とが加算され、新たな加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDおよびSDQがいずれも立ち上がらないため、DFF13aおよびDFF13bに全加算器12の更新された加算結果は取り込まれない。

【0061】
step7:a=3で連想メモリ100に新たなM次元の検索データおよびR個のM次元の参照データが保存され、これら検索データと個々の参照データとの間の各次元の部分距離が計算される。SDDが“1”から“0”へ変化し、全加算器12に更新された2次元分のdi(2j-1)およびdi(2j)が入力されて加算される。全加算器12の加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDが“1”のまま、SDQが“0”のままであるため、DFF13aおよびDFF13bに全加算器12の加算結果は取り込まれない。

【0062】
step8:SDが“1”から“0”へ変化し、SDQが“0”から“1”へ変化する。SDQが立ち上がることで、DFF13bが全加算器12の加算結果を保存し、DFF13bから保存値が出力される。

【0063】
step9:SDDが“0”から“1”へ変化し、全加算器12にDFF13aの出力およびDFF13bの出力が入力されて加算される。これにより、a=1からa=2までのdi(2j-1)およびdi(2j)の累積加算結果と、a=3のときのdi(2j-1)およびdi(2j)の加算結果とが加算される。すなわち、a=1からa=3までの2次元分の部分距離が累積加算される。全加算器12の加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDが“0”のまま、SDQが“1”のままであるため、DFF13aおよびDFF13bに全加算器12の加算結果は取り込まれない。

【0064】
step10:SDが“0”から“1”へ変化し、SDQが“1”から“0”へ変化する。SDが立ち上がることで、DFF13aが全加算器12の加算結果、すなわち、a=1からa=3までの2次元分の部分距離の累積加算値を保存し、DFF13aから保存値が出力される。このとき、全加算器12においてDFF13bの出力とDFF13aの更新された出力とが加算され、新たな加算結果がDFF13aおよびDFF13bにデータ入力されるが、SDおよびSDQがいずれも立ち上がらないため、DFF13aおよびDFF13bに全加算器12の更新された加算結果は取り込まれない。

【0065】
以後、同様の処理をa=Eまで繰り返すことで、DFF13aにa=1からa=Eまでの2次元分の部分距離の累積加算値が保存され、DFF13aから累積加算値Di(2j-1)が出力される。このように、次元数拡張回路によってE×M次元のデータの次元数がM次元に圧縮される。これにより、一度に最大でM次元のデータしか扱えないメモリアレイ部10を有する連想メモリ100において、処理可能なデータの次元数を任意に拡張することができる。

【0066】
≪制御回路の構成例≫
次に、メモリアレイ部10へのデータ書き込み、距離計算回路DC11~DC1M,DC21~DC2M,…,DCR1~DCRMの制御、および次元数拡張回路DEC11~DEC1M/2,DEC21~DEC2M/2,…,DECR1~DECRM/2の制御について説明する。

【0067】
図6は、制御回路の構成例を示す。本例に係る制御回路200は、DC制御回路(距離計算回路の制御回路)210と、DEC制御回路(次元数拡張回路の制御回路)220とを含む。図中の「D-FF」は、ネガティブエッジ型のDフリップフロップを表す。図7は、制御回路200の入出力信号のタイミングチャートである。

【0068】
図8は、DC制御回路210の構成例を示す。図中の「FDIV」は分周回路(2分周)を表す。図9は、DC制御回路210の入出力信号のタイミングチャートである。DC制御回路210において、SQGが立ち上がるとCLKの反転信号としてRSTDQが立ち下がる。そして、1クロックカウントされることで、分周回路FDVIの出力が“1”になる。SQGも“1”なのでSQDはSQGの1クロック後に“1”になる。

【0069】
図10は、DEC制御回路220の構成例を示す。図中の「FDIV」は分周回路(2分周)を、「SRFF」はSRフリップフロップを表す。図11は、DEC制御回路220の入出力信号のタイミングチャートである。DEC制御回路220において、SQGが1回目に立ち下がると、分周回路FDVIの出力が“1”になる。これにより、その後はSQGとSDのタイミングが等しくなり、また、SDDはSDの反転信号となる。なお、厳密には、SDDはCLKに同期した信号である。

【0070】
次に、図7のタイミングチャートを参照しながら制御回路200の動作例について説明する。

【0071】
step I:R個のE×M次元の参照データの部分データであるR個のM次元の参照データ(a=1のときの参照データ)が参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMに保存される(処理A)。また、E×M次元の検索データの部分データであるM次元の検索データ(a=1のときの検索データ)が検索データ保存回路5に保存される(処理B)。処理Aおよび処理Bは、行デコーダ2および列デコーダ3を1クロックずつ切り替えながら行われる。処理Aおよび処理Bが終了するとSQが立ち上がる。SQは図示しないCPUから出力される。以後、SQは、a=Eまで、すなわち、E×M次元のデータ検索によってwinnerが検出されるまで立ち上げ続ける。

【0072】
step II:SQが立ち上がると、SQとGCLKQの論理積であるSQGが立ち上がる。GCLKQは、GCLKの反転信号であり、GCLKは、距離計算回路において二乗計算(部分距離の計算)が終了すると“1”となる信号である。SQGは、距離計算回路において、検索データと参照データとの各次元の差分絶対値ADをラッチ回路で保存するためのラッチ信号として使用される。SQGをクロック信号CLKに同期させたのがSQGSYである。SQGSYが立ち上がってから1クロックでRSTDが立ち上がることで距離計算回路における図示しない二乗計算用のDフリップフロップをリセットする。そして、RSTDが再び立ち上がるタイミングでSQDが立ち上がる。SQDは、距離計算回路における図示しないマルチプレクサの切り替えに使用される。つまり、絶対値差計算から二乗計算に切り替わり、クロックが入力されるごとに逐次的に部分積の加算が行われる。SQDが立ち上がってからNクロックで二乗計算が終了し、GCLKが立ち上がる。なお、二乗計算を行う距離計算回路の具体的な構成については先願の明細書および図面に詳しく説明されている。

【0073】
step III:GCLKの立ち上がりを受けて再び処理Aおよび処理Bが開始される。処理Aおよび処理Bが終了するとRSTDCが立ち上がる。つまり、本ステップでは、a=2のときのデータの書き込みと絶対値差計算が行われる。

【0074】
step IV:RSTDCが立ち上がると、GCLKが立ち下がる。GCLKの立ち下がりによりSQGが立ち上がるため、距離計算回路において絶対値差がラッチされる。距離計算回路に関するRSTD、SQD、SQGについては以上の動作を繰り返す。a=2からSQGSYとSDの信号変化のタイミングは等しくなる。a=2でSQGSYが立ち上がることでSDも立ち上がり、次元数拡張回路におけるDFF13aにa=1のときの計算結果が保存される。

【0075】
step V:前ステップでa=2の場合の部分距離の計算が終了する。そして、GCLKが立ち上がることでSQGが立ち下がる。SQGSYもCLKに同期して立ち下がり、SDも立ち下がる。SDが立ち下がることでSDQが立ち上がり、次元数拡張回路におけるDFF13bにa=2のときの計算結果が保存される。そして、a=2からSDQのクロック同期信号としてSDDが動作する。SDDが立ち上がることで、次元数拡張回路におけるMUX11aおよび11bが切り替わり、a=1とa=2の場合の部分距離が累積加算される。本ステップでは、同時にa=3の場合の処理Aおよび処理Bが行われる。その処理が終わり、RSTDCが立ち上がることでSDが立ち上がるため、次元数拡張回路におけるDFF13aにa=1からa=2までの累積加算結果が保存される。そして、その1クロック後にSDDが立ち上がる。

【0076】
以上の動作を繰り返すことで、E×M次元の検索データがM次元ずつE回に分けて検索データ保存回路5に保存されるとともに、R個のE×M次元の参照データがR個のM次元ずつE回に分けて参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMに保存され、さらに、距離計算回路および次元数拡張回路における処理がパイプライン化される。

【0077】
以上、本実施形態によると、連想メモリ100で取り扱い可能なデータ次元数を任意に拡張することができる。これにより、大きなデータサイズが要求されるアプリケーションにもクロックカウント式の連想メモリを適用できるようになる。

【0078】
なお、データの次元数を拡張すると検索データと参照データとの距離も大きくなるため、距離/クロック数変換回路における処理時間(クロック数カウント)が増大することが予想される。そこで、先願に開示されているように、距離/クロック数変換回路における有効ビットを設定する有効ビット設定部を設けることで、クロックカウント数を削減することができる。

【0079】
本実施形態に係る連想メモリ100では、E×M次元のデータが図示しないメモリからM次元ずつE回に分けて検索データ保存回路5および参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMに保存されるが、変形例として、連想メモリ100の容量を拡張してE×M次元の検索データおよびR個のE×M次元の参照データのすべてを連想メモリ100に格納しておいてもよい。例えば、E×M次元のデータからM次元の部分データを選択して距離計算回路DC11~DC1M,DC21~DC2M,…,DCR1~DCRMに入力するための選択回路を設けるか、または、検索データ保存回路5および参照データ保存回路SC11~SC1M,SC21~SC2M,…,SCR1~SCRMをFIFO(First-In First Out)型のスタックメモリなどで構成することでそのような変形例が可能である。そのような変形例では、R個のM次元のデータの並列処理が可能となる。
【産業上の利用可能性】
【0080】
本発明に係る連想メモリは、パターン認識・学習、類似検索処理、知能情報処理、インテリジェント家電、監視システム、セキュリティ認証などの分野で利用することができる。
【符号の説明】
【0081】
100 連想メモリ
5 検索データ保存回路
SC 参照データ保存回路
DC 距離計算回路
DEC 次元数拡張回路
DE 距離/クロック数変換回路
11a MUX(第1のマルチプレクサ)
11b MUX(第2のマルチプレクサ)
12 全加算器
13a DFF(第1のDフリップフロップ)
13b DFF(第2のDフリップフロップ)
図面
【図1】
0
【図2】
1
【図3】
2
【図4】
3
【図5A】
4
【図5B】
5
【図6】
6
【図7】
7
【図8】
8
【図9】
9
【図10】
10
【図11】
11