(57)【要約】本発明による連想記憶装置は、複数のインデックス生成部、出力部、制御部を備える。前記複数のインデックス生成部は、複数のハッシュ関数を用いて入力ベクトルの特徴量を生成し、前記特徴量に基づき登録ベクトルに関する登録情報を検索することにより前記入力ベクトルに対応したインデックスを生成する。前記複数のインデックス生成部は、前記インデックスが前記登録情報として存在するか否かを示す第１信号を生成すると共に、再生ベクトルを生成し、前記再生ベクトルが前記入力ベクトルと一致するか否かを示す第２信号を生成して前記制御部に供給する。前記出力部は、前記複数のインデックス生成部の各出力を結合してインデックスを出力する。制御部は、前記登録情報の更新を制御する。
2016027829.tif 000002
【特許請求の範囲】
【請求項１】
複数のハッシュ関数を用いて入力ベクトルの特徴量を生成し、前記特徴量に基づき登録ベクトルに関する登録情報を検索することにより前記入力ベクトルに対応したインデックスを生成する複数のインデックス生成部と、
前記複数のインデックス生成部の各出力を結合して前記入力ベクトルに対応したインデックスを出力する出力部と、
前記登録情報の更新を制御する制御部と、
を備え、
前記複数のインデックス生成部のそれぞれは、
前記特徴量に基づき生成されたインデックスが前記登録情報として存在するか否かを示す第１信号を生成して前記制御部に供給すると共に、前記特徴量に基づき生成されたインデックスを用いて前記入力ベクトルの再生ベクトルを生成し、前記再生ベクトルが前記入力ベクトルと一致するか否かを示す第２信号を生成して前記制御部に供給する、連想記憶装置。
【請求項２】
前記複数のインデックス生成部のそれぞれは、
前記入力ベクトルから前記入力ベクトルの特徴量を算出するためのハッシュ回路と、
前記登録ベクトルのインデックスが前記登録情報として格納された主記憶部を有し、前記主記憶部から前記特徴量に対応した仮のインデックスを読み出して出力する仮インデックス生成回路と、
前記仮インデックス生成回路から出力された仮のインデックスに基づいて前記第１信号を生成して出力する衝突信号生成回路と、
前記登録ベクトルが前記登録情報として格納された副記憶部を有し、前記副記憶部から前記仮のインデックスに対応したベクトルを読み出して前記再生ベクトルとして出力する再生ベクトル生成回路と、
前記再生ベクトルと前記入力ベクトルとを比較し、前記再生ベクトルと前記入力ベクトルとが一致するか否かを示す前記第２信号を出力する比較回路と、
前記第２信号が前記再生ベクトルと前記入力ベクトルとの一致を示す場合、前記仮のインデックスを前記入力ベクトルに対応した固有のインデックスとして出力し、前記第２信号が前記再生ベクトルと前記入力ベクトルとの不一致を示す場合、無効値を出力する出力回路と、
を備えた請求項１に記載の連想記憶装置。
【請求項３】
前記主記憶部と前記副記憶部が、１つのメモリに統合された、請求項２に記載の連想記憶装置。
【請求項４】
前記主記憶部は、前記特徴量を示すビット列がアドレス信号として入力されるメモリから構成された、請求項２または３に記載の連想記憶装置。
【請求項５】
前記副記憶部は、前記仮のインデックスを示すビット列がアドレス信号として入力されるメモリから構成された、請求項２から４の何れか１項に記載の連想記憶装置。
【請求項６】
前記複数のインデックス生成部のうちの一部のインデックス生成部に代えて、または、前記複数のインデックス生成部に加えて、ＣＡＭセルを有する連想メモリを備えた、請求項１から５の何れか１項に記載の連想記憶装置。
【請求項７】
前記制御部は、
前記登録情報として登録ベクトルとそのインデックスとを追加する場合、追加すべき登録ベクトルが前記登録情報として存在しない旨を示す前記第１信号を供給するインデックス生成部を選択し、選択した当該インデックス生成部の登録情報として、前記追加すべき登録ベクトルに対応するインデックスを追加する、請求項１から６の何れか１項に記載の連想記憶装置。
【請求項８】
前記制御部は、
前記登録情報として登録された登録ベクトルのインデックスを削除する場合、前記複数のインデックス生成部のうち、削除すべき登録ベクトルのインデックスを用いて生成された再生ベクトルが前記入力ベクトルと一致する旨を示す前記第２信号を供給するインデックス生成部を選択し、選択した当該インデックス生成部の登録情報から、前記登録ベクトルに対応するインデックスを削除する、請求項１から７の何れか１項に記載の連想記憶装置。
【請求項９】
入力ベクトルから前記入力ベクトルの特徴量を算出して出力するハッシュ回路と、
登録ベクトルに関する登録情報として前記登録ベクトルに対応するインデックスが格納された主記憶部を有し、前記主記憶部から前記特徴量に対応した仮のインデックスを読み出して出力する仮インデックス生成回路と、
前記仮インデックス生成回路から出力された仮のインデックスに基づいて、前記特徴量に対応した仮のインデックスが前記登録情報として存在するか否かを示す第１信号を生成して出力する信号生成回路と、
前記登録ベクトルに関する登録情報として前記登録ベクトルが格納された副記憶部を有し、前記副記憶部から前記仮のインデックスに対応したベクトルを読み出して再生ベクトルとして出力する再生ベクトル生成回路と、
前記再生ベクトルと前記入力ベクトルとを比較し、前記再生ベクトルと前記入力ベクトルとが一致するか否かを示す第２信号を出力する比較回路と、
前記第２信号が前記再生ベクトルと前記入力ベクトルとの一致を示す場合、前記仮のインデックスを前記入力ベクトルに対応した固有のインデックスとして出力する出力回路と、
を備えたインデックス生成器。
【請求項１０】
請求項１から８の何れか１項に記載の連想記憶装置の登録情報を更新する情報更新方法であって、
前記連想記憶装置は、動作モードとして、検索モードと更新モードとを備え、
前記連想記憶装置に備えられた制御部は、前記更新モードにおいて前記登録情報を更新するための制御を実施する、情報更新方法。
【請求項１１】
前記検索モードにおいて、前記複数のインデックス生成部と前記出力部とが連想メモリとして機能する、請求項１０に記載の情報更新方法。
【請求項１２】
前記更新モードにおいて、前記制御部は、前記登録情報として登録された登録ベクトルに対応するインデックスを削除した後、前記登録情報として追加すべき登録ベクトルに対応するインデックスを追加することにより、前記登録情報を更新する、請求項１０または１１に記載の情報更新方法。
【請求項１３】
前記更新モードにおいて、
削除すべき登録ベクトルを前記入力ベクトルとして前記連想記憶装置に備えられた複数のインデックス生成部に供給する第１段階と、
前記複数のインデックス生成部のそれぞれについて、前記制御部により、前記第２信号に基づき、前記削除すべき登録ベクトルに対応した固有のインデックスが前記登録情報として存在するか否かを判定する第２段階と、
前記複数のインデックス生成部の何れかにおいて、前記削除すべき登録ベクトルに対応した固有のインデックスが前記登録情報として存在する場合、前記制御部により、前記登録情報として存在する前記削除すべき登録ベクトルに対応するインデックスの値を有効値から無効値に変更する第３段階と、
を含む請求項１２に記載の情報更新方法。
【請求項１４】
前記更新モードにおいて、
追加すべき登録ベクトルを前記入力ベクトルとして前記複数のインデックス生成部に供給する第１段階と、
前記複数のインデックス生成部のそれぞれについて、前記制御部により、前記第１信号に基づき、前記追加すべき登録ベクトルに対応した仮のインデックスが前記登録情報として存在するか否かを判定する第２段階と、
前記複数のインデックス生成部の何れかにおいて、前記追加すべき登録ベクトルに対応した仮のインデックスが前記登録情報として存在しない場合、前記追加すべき登録ベクトルに対応したインデックスの値として有効値を設定する第３段階と、
を含む請求項１２または１３に記載の情報更新方法。
【請求項１５】
前記複数のインデックス生成部の何れかにおいて、前記追加すべき登録ベクトルに対応した仮のインデックスが前記登録情報として存在する場合、前記制御部により、前記追加すべき登録ベクトルに対応した仮のインデックスが存在しない他のインデックス生成部において、前記追加すべき登録ベクトルに対応したインデックスの値として有効値を設定する、請求項１４に記載の情報更新方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連想記憶装置、インデックス生成器、及び登録情報更新方法に関し、特に、連想記憶装置に備えられたインデックス生成器に登録された登録情報の更新を高速化するための技術に関する。
【背景技術】
【０００２】
通常のメモリは、与えられたアドレス（インデックス）に対して、そのアドレスに格納されている登録データを生成する。一方、ＣＡＭ(Content Addressable Memory)は、与えられた検索（入力）データに対して、それを格納するＣＡＭのアドレスを生成する（非特許文献１，２参照）。【０００３】
ＣＡＭは、パターン・マッチング、インターネットのルータ、プロセッサのキャッシュ、ＴＬＢ（Translation Lookaside Buffer）、データ圧縮、データベースのアクセラレータ、ニューラルネット、メモリパッチなど幅広い分野において利用されている。【０００４】
通常、ＣＡＭは、その機能から、２値ＣＡＭ（Binary CAM：以下「ＢＣＡＭ」という。）及び３値ＣＡＭ（Ternary CAM：以下「ＴＣＡＭ」という。）の二種類に分類される。ＢＣＡＭでは、各セルに０及び１を格納する。ＴＣＡＭでは各セルに０，１，及び＊を格納する。ここで、「＊」はドント・ケア（don't care）を表し、０と１の両方にマッチする。【０００５】
ＣＡＭの機能をソフトウェアで実現することも可能であるが、ソフトウェアで実現したものは大幅に低速である。そのため、専用のハードウェアを用いてＣＡＭを実現することが多い。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２９５９６７号公報
【非特許文献】
【０００７】
【非特許文献１】菅野卓雄監修，香山晋編，「超高速デバイス・シリーズ２ 超高速ＭＯＳデバイス」，初版，培風館，１９８６年２月，ｐｐ．３２４−３２５．
【非特許文献２】電子情報通信学会編，「ＬＳＩハンドブック」，第１版，オーム社，１９９４年１１月，ｐｐ．５２３−５２５．
【非特許文献３】Kostas Pagiamtzis and Ali Sheikholeslami, “A Low-Power Content-Addressable Memory (CAM) Using Pipelined Hierarchical Search Scheme”, IEEEJournal of Solid-State Circuits, Vol.39, No.9, Sept.2004, pp.1512-1519.
【非特許文献４】T.Sasao, M.Matsuura, and Y.Iguchi, “A cascade realization of multi-output function for reconfigurable hardware”, International Workshop on Logic and Synthesis (IWLS01), Lake Tahoe, CA, June 12-15, 2001, pp.225-230.
【非特許文献５】T.Sasao, “Memory-Based Logic Synthesis”, Springer 2011.
【非特許文献６】笹尾勤、“パターンマッチング用プログラマブル論理回路とその設計法”，電子情報通信学会誌，Vol. 96, No.2, pp.100-104，2013年2月．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来のＣＡＭは、ＲＡＭに比べると、並列に検索可能であるため高速であるが、デバイスの構成は複雑となる。そのため、ＣＡＭの１ビットあたりの価格（ビットコスト）は、ＲＡＭに比べると１０〜３０倍程度、高価なものになる。また、１ビットあたりの消費電力がＲＡＭに比べて遙かに大きい（非特許文献３参照）。これは、すべてのＣＡＭセルを同時にアクセスするためである。そのため、１ビットあたりの消費電力は、通常のＲＡＭの約５０倍程度にもなる。
従って、上記従来のＣＡＭによれば、ビットコスト及び消費電力の観点から記憶容量の大規模化は困難である。【０００９】
本発明は、上記事情に鑑みてなされたものであり、記憶容量の大規模化を可能としつつ、登録情報の更新を高速に行うことができる連想記憶装置、インデックス生成器、及び登録情報更新方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一態様による連想記憶装置は、複数のハッシュ関数を用いて入力ベクトルの特徴量を生成し、前記特徴量に基づき登録ベクトルに関する登録情報を検索することにより前記入力ベクトルに対応したインデックスを生成する複数のインデックス生成部と、前記複数のインデックス生成部の各出力を結合して前記入力ベクトルに対応したインデックスを出力する出力部と、前記登録情報の更新を制御する制御部と、を備え、前記複数のインデックス生成部のそれぞれは、前記特徴量に基づき生成されたインデックスが前記登録情報として存在するか否かを示す第１信号を生成して前記制御部に供給すると共に、前記特徴量に基づき生成されたインデックスを用いて前記入力ベクトルの再生ベクトルを生成し、前記再生ベクトルが前記入力ベクトルと一致するか否かを示す第２信号を生成して前記制御部に供給する、連想記憶装置の構成を有する。【００１１】
本発明の一態様によるインデックス生成器は、入力ベクトルから前記入力ベクトルの特徴量を算出して出力するハッシュ回路と、登録ベクトルに関する登録情報として前記登録ベクトルに対応するインデックスが格納された主記憶部を有し、前記主記憶部から前記特徴量に対応した仮のインデックスを読み出して出力する仮インデックス生成回路と、前記仮インデックス生成回路から出力された仮のインデックスに基づいて、前記特徴量に対応した仮のインデックスが前記登録情報として存在するか否かを示す第１信号を生成して出力する衝突信号生成回路と、前記登録ベクトルに関する登録情報として前記登録ベクトルが格納された副記憶部を有し、前記副記憶部から前記仮のインデックスに対応したベクトルを読み出して再生ベクトルとして出力する再生ベクトル生成回路と、前記再生ベクトルと前記入力ベクトルとを比較し、前記再生ベクトルと前記入力ベクトルとが一致するか否かを示す第２信号を出力する比較回路と、前記第２信号が前記再生ベクトルと前記入力ベクトルとの一致を示す場合、前記仮のインデックスを前記入力ベクトルに対応した固有のインデックスとして出力する出力回路と、を備えたインデックス生成器の構成を有する。【００１２】
本発明の一態様による情報更新方法は、前記連想記憶装置に登録された登録情報を更新する情報更新方法であって、前記連想記憶装置は、動作モードとして、検索モードと更新モードとを備え、前記連想記憶装置に備えられた制御部は、前記更新モードにおいて前記登録情報を更新するための制御を実施する、情報更新方法の構成を有する。
【発明の効果】
【００１３】
本発明の一態様によれば、記憶容量の大規模化を可能としつつ、登録情報の更新を高速に行うことができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態による連想記憶装置の構成例を示すブロック図である。
【図２】本発明の第１実施形態による連想記憶装置に備えられたインデックス生成部の構成例を示すブロック図である。
【図３Ａ】本発明の第１実施形態による連想記憶装置に備えられた第１のインデックス生成部のハッシュ回路の構成例を示す回路図である。
【図３Ｂ】本発明の第１実施形態による連想記憶装置に備えられた第２のインデックス生成部のハッシュ回路の構成例を示す回路図である。
【図３Ｃ】本発明の第１実施形態による連想記憶装置に備えられた第３のインデックス生成部のハッシュ回路の構成例を示す回路図である。
【図４Ａ】本発明の第１実施形態による連想記憶装置に備えられたインデックス生成部の比較回路の構成例を示す図である。
【図４Ｂ】本発明の第１実施形態による連想記憶装置に備えられたインデックス生成部の出力回路の構成例を示す図である。
【図４Ｃ】本発明の第１実施形態による連想記憶装置に備えられたインデックス生成部の衝突信号生成回路の構成例を示す図である。
【図５】本発明の第１実施形態による連想記憶装置に備えられた出力部の回路構成例を示す図である。
【図６】本発明の第１実施形態による連想記憶装置に登録される登録情報の一例を示す図である。
【図７】本発明の第１実施形態による連想記憶装置に備えられた１番目のインデックス生成部で実現される登録情報を説明するための図である。
【図８】本発明の第１実施形態による連想記憶装置に備えられた２番目のインデックス生成部で実現される登録情報を説明するための図である。
【図９】本発明の第１実施形態による連想記憶装置に備えられた３番目のインデックス生成部で実現される登録情報を説明するための図である。
【図１０】本発明の第２実施形態による連想記憶装置の構成例を示すブロック図である。
【図１１】本発明の第２実施形態による連想記憶装置に備えられた連想メモリの基本構成の一例を示すブロック図である。
【図１２】ＣＡＭセルの回路構成例を示す図である。
【図１３】本発明の第１実施形態による登録情報の削除方法の一例を示すフローチャートである。
【図１４】本発明の第１実施形態による新規情報の追加方法の一例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
本発明の実施形態を説明する前に、本明細書において使用するいくつかの用語を定義しておく。
〔定義１〕（登録ベクトル）
相異なるｋ個（ｋは自然数）のｎビット（ｎは自然数）のベクトルの集合を考える。このベクトルの集合を登録ベクトル集合（set of registered vectors）といい、登録ベクトル集合に属する各ベクトルを登録ベクトルという。
【００１６】
〔定義２〕（インデックス生成関数，インデックス生成器，入力ベクトル）
登録ベクトル集合の各要素と一致する入力に対して１からｋまでの固有インデックスに単射し、それ以外の入力に対して０となる関数をインデックス生成関数という。
即ち、関数ｆ（Ｘ）：Ｂｎ→｛０，１，…，ｋ｝（Ｂ＝｛０，１｝，ｋ∈自然数）において、ｋ個の異なる登録ベクトルａｉ∈Ｂｎ（ｉ＝１，２，…，ｋ）に対してｆ（ａｉ）＝ｉ（ｉ＝１，２，…，ｋ）が成立し、それ以外の（２ｎ−ｋ）個の入力ベクトルａｉに対しては、ｆ（ａｉ）＝０が成立するとき、ｆ（Ｘ）を重みｋのインデックス生成関数という。インデックス生成関数は、ｋ個の異なる２値ベクトルに対して、１からｋまでの固有インデックスを生成する。なお、本明細書においては、ｋの値は入力ベクトルの組み合わせ総数２ｎに比べて十分に小さい（ｋ＜＜２ｎ）と仮定する。
【００１７】
また、上記のインデックス生成関数の演算を行う回路をインデックス生成器という。インデックス生成器に入力されるベクトルを、入力ベクトルという。入力ベクトルがｎ次元ベクトルであるインデックス生成関数を、ｎ入力のインデックス生成関数という。また、ｎ入力のインデックス生成関数の演算を行う回路をｎ入力のインデックス生成器という。
【００１８】
〔定義３〕（ハッシュ関数）
ハッシュ関数とは、集合Ｓから整数の集合｛0,1,…,m-1｝への写像である。ここで、mは、集合Ｓの要素を超えない自然数である。
【００１９】
以下、図面を参照して、本発明の実施形態を説明する。
（第１実施形態）
１．構成の説明
図１は、本発明の第１実施形態による連想記憶装置１００の構成例を示すブロック図である。連想記憶装置１００は、検索対象のｎビット（ｎは自然数）の入力ベクトルＸ（ｘ１，ｘ２，…，ｘｎ）に対応した固有のインデックスＡを生成して出力するためのものであり、Ｎ個（Ｎは２以上の自然数）のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎ、出力部１２０、制御部１３０を備えている。以下では必要に応じて、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのうちの任意の一つを「インデックス生成部１１０−ｉ」（ｉは、１からＮまでの自然数）と表す。また、インデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのそれぞれは、インデックス生成器、インデックス生成装置等として単体で取り扱うことができる。
【００２０】
Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎは、入力ベクトルＸの特徴量を生成し、その特徴量から、入力ベクトルＸに対応した固有のインデックスＡ１，Ａ２，…，ＡＮをそれぞれ生成して出力するように構成されている。即ち、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎは、それぞれ、ハッシュ関数を用いて入力ベクトルＸの特徴量を生成し、この特徴量に基づいて、各インデックス生成部に登録された登録ベクトルに関する登録情報を検索することにより、入力ベクトルＸに対応した固有のインデックスＡ１，Ａ２，Ａ３，…，ＡＮを生成する。本実施形態では、後述するように、ハッシュ関数として、排他的論理和ゲート回路のみで構成された回路で実現できる線形関数を用いる。
なお、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎでそれぞれ用いられるＮ個のハッシュ関数は、上述の〔定義３〕に従う限り、相互に同一の関数であってもよく、相互に異なる関数であってもよい。即ち、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのそれぞれは、他のインデックス生成部で用いられるハッシュ関数と同一のハッシュ関数を用いてもよく、他のインデックス生成部で用いられるハッシュ関数とは異なるハッシュ関数を用いてもよい。
【００２１】
また、インデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのそれぞれは、上記の特徴量に基づき生成されたインデックスが上記の登録情報として存在するか否かを示す第１信号（以下、「衝突信号」と称す。）ＣＤ１，ＣＤ２，ＣＤ３，…，ＣＤＮを生成すると共に、上記の特徴量に基づき生成されたインデックスを用いて入力ベクトルＸの再生ベクトルを生成し、再生ベクトルが入力ベクトルＸと一致するか否かを示す第２信号（以下、「一致信号」と称す。）ＭＴ１，ＭＴ２，…，ＭＴＮを生成する。ここで、「再生ベクトル」とは、入力ベクトルＸの特徴量から得られるインデックスに基づいて元の入力ベクトルＸを再現したベクトルを指す。衝突信号ＣＤ（ＣＤ１，ＣＤ２，ＣＤ３，…，ＣＤＮ）と一致信号ＭＴ（ＭＴ１，ＭＴ２，…，ＭＴＮ）は制御部１３０に供給される。
【００２２】
出力部１２０は、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎの各出力（インデックスＡ１，Ａ２，Ａ３，…，ＡＮ）を結合して入力ベクトルＸに対応した固有のインデックスＡを出力するように構成されている。
制御部１３０は、Ｎ個のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのそれぞれに登録された上記の登録情報の更新を制御するためのものである。制御部１３０からインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎに対し、登録情報である登録ベクトルの書き込み動作を制御するためのライトイネーブル信号ＷＥと、登録ベクトルのインデックスＩＤＸと、登録情報を書き込むべきインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎの何れか指定するための選択信号ＳＥＬが供給される。
なお、制御部１３０は、指令信号ＵＰＤが供給された場合に、動作モードを更新モードに変更する。また、制御部１３０は、指令信号ＵＰＤとインデックスＩＤＸとが供給された場合に、新規な登録情報を追加する動作を行う。また、制御部１３０は、指令信号ＵＰＤのみが供給された場合に、既存の登録情報を削除する動作を行う。
また、制御部１３０は、例えば、更新モードなどの動作中に、動作中であることを示す信号ＢＳＹ（ビジー）を出力する。また、制御部１３０は、例えば、新規な登録情報を追加する動作が失敗した場合に、失敗したことを示す信号ＦＡＬ（フェイル）を出力する。
【００２３】
ここでは、説明の簡略化のため、Ｎ＝３とし、図１に示す連想記憶装置１００は、３個のインデックス生成部１１０−１，１１０−２，１１０−３を備えるものとして説明する。従って、ｉは、１，２，３のうちの任意の自然数を指し、インデックス生成部１１０−ｉは、インデックス生成部１１０−１，１１０−２，１１０−３のうちの一つを表す。ただし、この例に限定されず、インデックス生成部の個数Ｎは任意に設定し得る。また、ｎ＝６とし、インデックス生成部１１０−１，１１０−２，１１０−３には、それぞれ、６ビットの入力ベクトルＸ（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）が入力されるものとする。
【００２４】
次に、インデックス生成部１１０−ｉ、出力部１２０、制御部１３０の各構成の詳細について説明する。
図２は、本発明の第１実施形態による連想記憶装置１００に備えられたインデックス生成部１１０−ｉの構成例を示すブロック図である。インデックス生成部１１０−ｉは、ハッシュ回路１１１、仮インデックス生成回路１１２、再生ベクトル生成回路１１３、比較回路１１４、出力回路１１５、衝突信号生成回路１１６を備えている。このうち、ハッシュ回路１１１は、ハッシュ関数を用いて、ｎビットの入力ベクトルＸから、入力ベクトルＸの特徴量を表すｐビット（ｐはｎよりも小さい自然数）のベクトルＹ１を生成するためのものである。ここでは、ｐ＝３とする。ハッシュ関数は、異なる入力に対して同じ値を与える場合があり、それをハッシュ衝突(collision)と称す。本実施形態による連想記憶装置１００では、或るハッシュ関数でハッシュ衝突が発生した場合、別のインデックス生成部を用いることによりハッシュ衝突を回避する。その詳細については後述する。
【００２５】
仮インデックス生成回路１１２は、入力ベクトルＸの特徴量を表すｐビットのベクトルＹ１に対応したｑビットの仮のインデックスＡ’を生成するものである。ここで、ｑ＝「ｌｏｇ２（ｋｉ＋１）」であり、ｋｉは、このインデックス生成部１１０−ｉで実現される登録ベクトルの数を表し、「ｌｏｇ２（ｋｉ＋１）」は切り上げ関数を表す。仮インデックス生成回路１１２は、登録ベクトルのインデックスが登録情報として格納された主記憶部を有しており、主記憶部から入力ベクトルＸの特徴量に対応した仮のインデックスＡ’を読み出して出力する。上記の主記憶部は、上記の特徴量を示すビット列がアドレス信号として入力されるＤＲＡＭ(Dynamic Random Access Memory)やＳＲＡＭ(Static Random Access Memory)等の汎用の半導体メモリから構成されている。ただし、上記の主記憶部は、ＤＲＡＭ等の汎用メモリと同様に１回のアクセスでメモリセルアレイの一部のメモリセルを選択する方式を採用するメモリであれば、汎用メモリである必要はなく、専用に設計されたメモリであってもよい。
【００２６】
再生ベクトル生成回路１１３は、仮のインデックスＡ’に対応した入力ベクトルＸを再生するためのものであり、登録ベクトルが登録情報として格納された副記憶部を有している。再生ベクトル生成回路１１３は、副記憶部から仮のインデックスＡ’に対応した登録ベクトルを読み出して、（ｎ−ｐ）ビットの再生ベクトルＸ２’として出力する。（ｎ−ｐ）ビットの再生ベクトルＸ２’は、入力ベクトルＸ（Ｘ１，Ｘ２）のＸ２を再生した要素である。ここで、Ｘ１は入力ベクトルＸのビットｘ１，ｘ２，ｘ３を指し、Ｘ２は、入力ベクトルＸのビットｘ４，ｘ５，ｘ６を指す。上記の副記憶部は、上記の仮のインデックスＡ’を示すビット列がアドレス信号として入力されるＤＲＡＭやＳＲＡＭ(Static Random Access Memory)等の汎用の半導体メモリから構成されている。上記の副記憶部についても、上記の主記憶部と同様に、専用に設計されたメモリであってもよい。
なお、上記のハッシュ関数として非線形関数を用いた場合、再生ベクトル生成回路１１３は、入力ベクトルＸの全ビットに対応したｎビットの再生ベクトルＸ’を出力する。
【００２７】
比較回路１１４は、再生ベクトルＸ２’と入力ベクトルＸのＸ２（ｘ４，ｘ５，ｘ６）とが一致するか否かを検証するためのものである。再生ベクトルＸ２’と入力ベクトルＸのＸ２とが一致するか否かを検証することは、仮のインデックスＡ’が入力ベクトルＸに対応した固有のインデックスであるかどうかを検証することを意味する。比較回路１１４は、再生ベクトルＸ２’と入力ベクトルＸのＸ２とを比較し、この比較の結果に基づき、再生ベクトルＸ’と入力ベクトルＸのＸ２とが一致するか否かを示す一致信号ＭＴｉを出力する。
【００２８】
出力回路１１５は、一致信号ＭＴｉに基づき、入力ベクトルＸに対応した固有のインデックスＡｉまたは所定の無効値を出力するためのものである。即ち、出力回路１１５は、一致信号ＭＴｉが再生ベクトルＸ２’と入力ベクトルＸのＸ２との一致を示す場合、仮のインデックスＡ’を固有のインデックスＡｉとして出力し、一致信号ＭＴｉが再生ベクトルＸ２’と入力ベクトルＸのＸ２との不一致を示す場合、所定の無効値を出力する。本実施形態では、インデックスＡｉの全てのビットの値が‘０’である場合、インデックスＡｉは所定の無効値を示す。ただし、この例に限定されず、無効値の定義は任意である。例えば、全てのビットの値が‘１’であるインデックスＡｉを無効値としてもよい。
【００２９】
衝突信号生成回路１１６は、更新モードにおいて、仮インデックス生成回路１１２から出力される仮のインデックスＡ’に基づいて衝突信号ＣＤｉを生成して出力するためのものである。第１実施形態では、衝突信号生成回路１１６は、更新モードにおいて、新規な登録ベクトルを登録情報として追加する場合、仮インデックス生成回路１１２から出力される仮のインデックスＡ’に基づいて衝突信号ＣＤｉを出力する。ここで、衝突信号ＣＤｉは、更新モードでハッシュ衝突の有無を示す信号であり、更新対象の入力ベクトルＸに対して仮インデックス生成回路１１２から出力される仮のインデックスＡ’が無効値でない場合、即ちハッシュ衝突が発生した場合に値‘１’となる信号である。なお、ハッシュ衝突が発生した場合の衝突信号ＣＤｉの値は任意に設定し得る。
【００３０】
図３Ａ〜図３Ｃは、本発明の第１実施形態による連想記憶装置１００に備えられたインデックス生成部１１０−ｉに備えられたハッシュ回路１１１の構成例を示す回路図である。ここで、図３Ａは、インデックス生成部１１０−１に備えられたハッシュ回路１１１（ｉ＝１）の構成例を示し、図３Ｂは、インデックス生成部１１０−２に備えられたハッシュ回路１１１（ｉ＝２）の構成例を示し、図３Ｃは、インデックス生成部１１０−３に備えられたハッシュ回路１１１（ｉ＝３）の構成例を示している。図３Ａ〜図３Ｃでは、インデックス生成部１１０−ｉに入力される入力ベクトルＸとして、６ビット（ｎ＝６）の入力ベクトルＸ（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）を想定している。
【００３１】
図３Ａに示すハッシュ回路１１１（ｉ＝１）は、インデックス生成部１１０−１において入力ベクトルＸの特徴量を算出するためのハッシュ関数を実現する。図３Ａの例ではハッシュ回路１１１は、入力ベクトルＸの６ビット（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）のうち、Ｘ１（ｘ１，ｘ２，ｘ３）の３ビットを、入力ベクトルＸの特徴量を表す３ビット（ｐ＝３）のベクトルＹ１（ｙ１，ｙ２，ｙ３）に変換するハッシュ関数を実現する。具体的には、図３Ａに示すハッシュ回路１１１は、３個の排他的論理和ゲート回路から構成される。これら３個の排他的論理和ゲート回路の第１入力部には、Ｘ１（ｘ１，ｘ２，ｘ３）の各ビットがそれぞれ供給され、第２入力部には、値‘０’が共通に供給される。これにより、図３Ａのハッシュ回路１１１は、入力ベクトルＸのＸ１（ｘ１，ｘ２，ｘ３）を３ビットのベクトルＹ１（ｙ１，ｙ２，ｙ３）として出力する。
【００３２】
図３Ｂに示すハッシュ回路１１１（ｉ＝２）は、インデックス生成部１１０−２において入力ベクトルＸの特徴量を算出するためのハッシュ関数を実現する。図３Ｂの例ではハッシュ回路１１１は、入力ベクトルＸの６ビット（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）のうち、Ｘ２（ｘ４，ｘ５，ｘ６）の３ビットを、入力ベクトルＸの特徴量を表す３ビット（ｐ＝３）のベクトルＹ１（ｙ１，ｙ２，ｙ３）に変換するハッシュ関数を実現する。具体的には、図３Ｂに示すハッシュ回路１１１は、３個の排他的論理和ゲート回路から構成される。これら３個の排他的論理和ゲート回路の第１入力部には、Ｘ２（ｘ４，ｘ５，ｘ６）の各ビットがそれぞれ供給され、第２入力部には、値‘０’が共通に供給される。これにより、図３Ｂのハッシュ回路１１１（ｉ＝２）は、入力ベクトルＸのＸ２（ｘ４，ｘ５，ｘ６）を３ビットのベクトルＹ１（ｙ１，ｙ２，ｙ３）として出力する。
【００３３】
図３Ｃに示すハッシュ回路１１１（ｉ＝３）は、インデックス生成部１１０−３において入力ベクトルＸの特徴量を算出するためのハッシュ関数を実現する。図３Ｃの例ではハッシュ回路１１１は、入力ベクトルＸの６ビット（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）のうち、ビットｘ１とビットｘ６の排他的論理和を演算し、その演算結果を、入力ベクトルＸの特徴量を表す３ビット（ｐ＝３）のベクトルＹ１（ｙ１，ｙ２，ｙ３）として出力するハッシュ関数を実現する。
【００３４】
具体的には、図３Ｃに示すハッシュ回路１１１（ｉ＝３）は、３個の排他的論理和ゲート回路１１１−３１，１１１−３２，１１１−３３から構成される。排他的論理和ゲート回路１１１−３１の入力部には、入力ベクトルＸのビットｘ１とビットｘ６が供給される。排他的論理和ゲート回路１１１−３１によりビットｘ１とビットｘ６との排他的論理和が演算され、その演算結果はベクトルＹ１のビットｙ１の値とされる。また、排他的論理和ゲート回路１１１−３２の入力部には、入力ベクトルＸのビットｘ２とビットｘ５が供給される。排他的論理和ゲート回路１１１−３２によりビットｘ２とビットｘ５との排他的論理和が演算され、その演算結果はベクトルＹ１のビットｙ２の値とされる。
【００３５】
更に、排他的論理和ゲート回路１１１−３３の入力部には、入力ベクトルＸのビットｘ３とビットｘ４が供給される。排他的論理和ゲート回路１１１−３３によりビットｘ３とビットｘ４との排他的論理和が演算され、その演算結果はベクトルＹ１のビットｙ３の値とされる。
このように、３個のハッシュ回路１１１（ｉ＝１），１１１（ｉ＝２），１１１（ｉ＝３）は、それぞれ異なるハッシュ関数を実現している。
【００３６】
インデックス生成部１１０−１，１１０−２，１１０−３の各ハッシュ回路１１１で実現されるハッシュ関数は、入力ベクトルＸのビット数ｎよりも少ないビット数ｐで登録ベクトルを有意に識別し得る特徴量が得られるように、登録ベクトルの内容に応じて設定される。その詳細については後述する。
【００３７】
次に、図２に示すインデックス生成部１１０−ｉに備えられた仮インデックス生成回路１１２の構成を説明する。
仮インデックス生成回路１１２は、前述のように、ＤＲＡＭ等の汎用の半導体メモリから構成され、この汎用の半導体メモリは仮インデックス生成回路１１２の上記の主記憶部を形成する。データの書き込みと読み出しの両方が可能であることを限度に、仮インデックス生成回路１１２の主記憶部を形成するメモリとして、強誘電体メモリや磁性体メモリ等、任意の方式のメモリを用いることができる。仮インデックス生成回路１１２の主記憶部を形成するメモリには、登録ベクトルのインデックスに関する情報が登録情報として格納されている。仮インデックス生成回路１１２の主記憶部を形成する汎用メモリのアドレス入力端子には、ハッシュ回路１１１から出力されるｐビットのベクトルＹ１の各ビットがアドレス信号として供給される。
【００３８】
ここで、ベクトルＹ１の各ビットの値の組み合わせによって指定される上記の主記憶部を形成する汎用メモリのメモリセルには、登録ベクトルのインデックスに関する登録情報として、その特徴量に対応したインデックスを示すデータが格納されている。従って、ベクトルＹ１に基づいて上記の主記憶部を形成する汎用メモリをアクセスすることにより、上記の主記憶部から入力ベクトルＸの特徴量に対応したｑビットのインデックスが仮のインデックスＡ’として読み出される。
【００３９】
次に、図２に示すインデックス生成部１１０−ｉに備えられた再生ベクトル生成回路１１３の構成を説明する。
再生ベクトル生成回路１１３は、上述の仮インデックス生成回路１１２と同様に、ＤＲＡＭ等の汎用の半導体メモリから構成され、この汎用の半導体メモリは再生ベクトル生成回路１１３の上記の副記憶部を形成する。データの書き込みと読み出しの両方が可能であることを限度に、再生ベクトル生成回路１１３の副記憶部を形成するメモリとして、強誘電体メモリや磁性体メモリ等、任意の方式のメモリを用いることができる。再生ベクトル生成回路１１３の副記憶部を形成するメモリには、登録ベクトルのビットの値が登録情報として格納されている。再生ベクトル生成回路１１３の副記憶部を形成する汎用メモリのアドレス入力端子には、仮インデックス生成回路１１２から出力されたｑビットの仮のインデックスＡ’の各ビットがアドレス信号として供給される。
【００４０】
本実施形態では、ハッシュ回路１１１においてハッシュ関数として線形関数を用いていることから、後述の比較回路１１４において入力ベクトルと再生ベクトルとの一致を検証するのに一部のビットを比較すれば足りる。このため、仮のインデックスＡ’の各ビットの値の組み合わせによって指定される上記の副記憶部を形成する汎用メモリのメモリセルには、登録ベクトルに関する登録情報として、仮のインデックスＡ’に対応した登録ベクトルの一部のビットである（ｎ−ｐ）ビットの値が格納されている。ただし、上記のハッシュ関数として非線形関数を用いる場合、上記の副記憶部を形成するメモリには、登録ベクトルの全ビット（即ちｎビット）の値が登録情報として格納される。
【００４１】
ここで、仮のインデックスＡ’は、入力ベクトルＸに対応している。従って、仮のインデックスＡ’に基づいて再生ベクトル生成回路１１３の副記憶部を形成する汎用メモリをアクセスすることにより、上記の副記憶部から入力ベクトルＸのＸ２に対応した登録ベクトルの一部のビットが再生ベクトルＸ２’として読み出される。
【００４２】
なお、仮インデックス生成回路１１２の主記憶部と、再生ベクトル生成回路１１３の副記憶部は、ＤＲＡＭ等の１つの半導体メモリに統合されてもよい。これにより、構成部品数を低減するとともに、メモリアクセス時間を削減することができる。
【００４３】
次に、図２に示すインデックス生成部１１０−ｉに備えられた比較回路１１４の構成を説明する。
図４Ａは、本発明の第１実施形態による連想記憶装置１００に備えられたインデックス生成部１１０−ｉの比較回路１１４の構成例を示す図である。比較回路１１４は、一致ゲートである否定的排他的論理和ゲート回路１１４４，１１４５，１１４６から構成されている。否定的排他的論理和ゲート回路１１４４の入力部には、入力ベクトルＸのＸ２のビットｘ４と再生ベクトルＸ２’のビットｘ４’が供給される。また、否定的排他的論理和ゲート回路１１４５の入力部には、入力ベクトルＸのＸ２のビットｘ５と再生ベクトルＸ２’のビットｘ５’が供給される。更に、否定的排他的論理和ゲート回路１１４６の入力部には、入力ベクトルＸのＸ２のビットｘ６と再生ベクトルＸ２’のビットｘ６’が供給される。否定的排他的論理和ゲート回路１１４４，１１４５，１１４６の各出力部は論理積ゲート回路１１４７の入力部に接続され、論理積ゲート回路１１４７の出力信号は一致信号ＭＴｉとされる。
【００４４】
上記の比較回路１１４の構成によれば、入力ベクトルＸのＸ２のビットｘ４，ｘ５，ｘ６の各値と再生ベクトルＸ２’のビットｘ４’，ｘ５’，ｘ６’の各値が完全に一致した場合のみ、一致信号ＭＴｉとして値‘１’を示すハイレベルの論理信号が出力される。
【００４５】
次に、図２に示すインデックス生成部１１０−ｉに備えられた出力回路１１５の構成を説明する。
図４Ｂは、本発明の第１実施形態による連想記憶装置１００に備えられたインデックス生成部１１０−ｉの出力回路１１５の構成例を示す図である。この例では、ｋ＝１５を考慮して、仮のインデックスＡ’が４ビット（ａ１’，ａ２’，ａ３’，ａ４’）で表される場合を想定している。ただし、この例に限定されず、仮のインデックスＡ’のビット数は任意の値に設定し得る。
【００４６】
出力回路１１５は、仮のインデックスＡ’のビット数（４ビット）に対応する４個の論理積ゲート回路１１５１，１１５２，１１５３，１１５４から構成されている。論理積ゲート回路１１５１，１１５２，１１５３，１１５４の各第１入力部には、それぞれ、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’が供給される。また、論理積ゲート回路１１５１，１１５２，１１５３，１１５４の各第２入力部には一致信号ＭＴｉが共通に供給される。
【００４７】
上記の出力回路１１５の構成によれば、一致信号ＭＴｉの値が‘１’（ハイレベル）である場合、論理積ゲート回路１１５１，１１５２，１１５３，１１５４は、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’の値を、そのまま、固有のインデックスＡｉのビットａ１ｉ，ａ２ｉ，ａ３ｉ，ａ４ｉの値として出力する。また、一致信号ＭＴｉの値が‘０’（ローレベル）である場合、論理積ゲート回路１１５１，１１５２，１１５３，１１５４は、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’の値とは関係なく、値‘０’（ローレベル）の信号を出力し、固有のインデックスＡｉのビットａ１ｉ，ａ２ｉ，ａ３ｉ，ａ４ｉの値はすべて‘０’となる。これは無効値を示す信号である。
【００４８】
次に、図２に示すインデックス生成部１１０−ｉに備えられた衝突信号生成回路１１６の構成を説明する。
図４Ｃは、本発明の第１実施形態による連想記憶装置１００に備えられたインデックス生成部１１０−ｉの衝突信号生成回路１１６の構成例を示す図である。この例でも、ｋ＝１５を考慮して、仮のインデックスＡ’が４ビット（ａ１’，ａ２’，ａ３’，ａ４’）で表される場合を想定している。
【００４９】
衝突信号生成回路１１６は、仮のインデックスＡ’のビット数（４ビット）に対応する４入力の論理和ゲート回路１１６１から構成されている。論理和ゲート回路１１６１は、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’の論理和を演算し、その演算結果を衝突信号ＣＤｉとして出力する。衝突信号生成回路１１６は、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’の何れかに‘１’の値が含まれている場合、衝突信号ＣＤｉとして値‘１’を示すハイレベルの論理信号を出力する。この衝突信号ＣＤｉの値‘１’は、更新モードにおいてハッシュ衝突が発生していることを示す。これに対し、仮のインデックスＡ’のビットａ１’，ａ２’，ａ３’，ａ４’の全ての値が‘０’である場合、即ち、仮のインデックスＡ’が無効値を示す場合、衝突信号生成回路１１６は、衝突信号ＣＤｉとして値‘０’を示すローレベルの論理信号を出力する。この衝突信号ＣＤｉの値‘０’は、更新モードにおいてハッシュ衝突が発生していないことを示す。
以上で、図１に示す連想記憶装置１００に備えられたインデックス生成部１１０−ｉの構成を説明した。
【００５０】
次に、図１に示す連想記憶装置１００に備えられた出力部１２０の構成を説明する。
図５は、本発明の第１実施形態による連想記憶装置１００に備えられた出力部１２０の回路構成例を示す図である。
出力部１２０は、インデックス生成部１１０−１，１１０−２，１１０−３の個数に対応した３個の論理和ゲート回路１２０１，１２０２，１２０３から構成されている。論理和ゲート回路１２０１の入力部には、インデックス生成部１１０−１から出力されたインデックスＡ１のビットａ１と、インデックス生成部１１０−２から出力されたインデックスＡ２のビットａ１と、インデックス生成部１１０−３から出力されたインデックスＡ３のビットａ１とが供給される。論理和ゲート回路１２０１は、インデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ入力されたビットａ１の論理和を演算し、その演算結果を、インデックスＡのビットａ１の値として出力する。
【００５１】
また、論理和ゲート回路１２０２の入力部には、インデックス生成部１１０−１から出力されたインデックスＡ１のビットａ２と、インデックス生成部１１０−２から出力されたインデックスＡ２のビットａ２と、インデックス生成部１１０−３から出力されたインデックスＡ３のビットａ２とが供給される。論理和ゲート回路１２０２は、インデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ入力されたビットａ２の論理和を演算し、その演算結果を、インデックスＡのビットａ２の値として出力する。
【００５２】
更に、論理和ゲート回路１２０３の入力部には、インデックス生成部１１０−１から出力されたインデックスＡ１のビットａ３と、インデックス生成部１１０−２から出力されたインデックスＡ２のビットａ３と、インデックス生成部１１０−３から出力されたインデックスＡ３のビットａ３とが供給される。論理和ゲート回路１２０３は、インデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ入力されたビットａ３の論理和を演算し、その演算結果を、インデックスＡのビットａ３の値として出力する。
【００５３】
上記の論理演算を実施することにより、出力部１２０は、インデックス生成部１１０−１，１１０−２，１１０−３から出力されたインデックスＡ１，Ａ２，Ａ３の対応ビットを結合してインデックスＡを生成し出力する。ここで、上記論理演算の過程で、回路の構成法から、高々１個のインデックス生成部のみが有効値を生成し、他のインデックス生成部は無効値を生成する。従って、上記構成によれば、有効値のみが出力部１２０からインデックスＡとして出力される。
なお、全てのビットが‘１’からなる仮のインデックスＡ’を無効値として定義した場合、出力部１２０は、論理和ゲート回路１２０１，１２０２，１２０３に代えて、論理積演算を実施する論理積ゲート回路を備えればよい。
【００５４】
次に、図６から図１０を参照して、連想記憶装置１００で実現される登録情報を説明する。
図６は、本発明の第１実施形態による連想記憶装置１００に登録される登録情報の一例を示す図である。図６の登録情報は、ｎ＝６、ｋ＝１５、Ｘ１＝（ｘ１、ｘ２、ｘ３）、Ｘ２＝（ｘ４，ｘ５，ｘ６）としたときに、入力ベクトルＸ（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）の各値と、入力ベクトルＸの固有のインデックスＡを表すインデックスＩＤＸの値との対応関係を規定している。例えば、入力ベクトルＸ（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）の値（０，１，１，０，０，０）に対し、この入力ベクトルＸの値に固有のインデックスＡを表すインデックスＩＤＸの値として値「１」が対応付けられている。
【００５５】
前述したインデックス生成部１１０−１，１１０−２，１１０−３の各ハッシュ回路１１１で実現されるハッシュ関数は、入力ベクトルＸのビット数ｎよりも少ないｐビットのベクトルＹ１によって、登録情報に登録された登録ベクトルを有意に識別する特徴量を表現できるように、登録ベクトルの内容に応じて設定される。図６の例では、例えばＸ１のビットｘ１の値に着目した場合、インデックスＩＤＸの値「１」及び「２」にそれぞれ対応付けられている登録ベクトルのビットｘ１の値は共に‘０’である。従って、ビットｘ１のみに基づいて、インデックスＩＤＸの値「１」及び「２」にそれぞれ対応付けられている登録ベクトルを識別することはできない。そこで、ビットｘ２に着目すると、インデックスＩＤＸの値「１」及び「２」にそれぞれ対応付けられている登録ベクトルのビットｘ２の値は共に‘１’である。従って、ビットｘ１とビットｘ２の二つのビットに着目しても、インデックスＩＤＸの値「１」及び「２」にそれぞれ対応付けられている登録ベクトルを識別することはできない。
【００５６】
そこで、更にビットｘ３に着目すると、インデックスＩＤＸの値「１」に対応付けられている登録ベクトルのビットｘ３の値は‘１’であり、インデックスＩＤＸの値「２」に対応付けられている登録ベクトルのビットｘ３の値は‘０’である。従って、ビットｘ３に着目すれば、インデックスＩＤＸの値「１」及び「２」にそれぞれ対応付けられている登録ベクトルを識別することができる。即ち、インデックスＩＤＸの値「１」及び「２」に対応する登録ベクトルの特徴量は、Ｘ１のビットｘ１，ｘ２，ｘ３を用いて表現可能である。
ただし、この例では、ビットｘ２、ｘ３のみからインデックスＩＤＸの値「１」及び「２」に対応する登録ベクトルを識別することが可能であり、この場合の登録ベクトルの特徴量としてビットｘ２，ｘ３の値を用いることもできる。このようにして、Ｘ１によって識別可能な登録ベクトルに対応したインデックスＩＤＸの集合が得られる。
【００５７】
第１実施形態では、上述の図６に示す登録情報のうち、Ｘ１を用いて識別可能な登録ベクトルとインデックスＩＤＸとの対応を規定した登録情報は、３個のインデックス生成部１１０−１，１１０−２，１１０−３のうち、１番目のインデックス生成部１１０−１で実現される。
【００５８】
図７は、本発明の第１実施形態による連想記憶装置１００に備えられた１番目のインデックス生成部１１０−１で実現される登録情報を説明するための図である。
図７に示すように、インデックス生成部１１０−１で実現される登録情報は、上述の図６に示す登録情報のうち、インデックスＩＤＸの８個の値「４」、「５」、「２」、「１」、「１１」、「１０」、「１５」、「３」と、これらのインデックスＩＤＸの値に対応した８個の登録ベクトルのビット（ｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６）の値との対応関係を規定するように決定される。
【００５９】
このようにインデックス生成部１１０−１で実現すべき登録情報が決定されると、この登録情報の登録ベクトルを有意に識別するために必要なビットｘ１，ｘ２，ｘ３が入力ベクトルＸから得られるように、インデックス生成部１１０−１のハッシュ回路１１１で実現すべきハッシュ関数が設定される。そして、このようなハッシュ関数を実現するために、前述したように、インデックス生成部１１０−１のハッシュ回路１１１（ｉ＝１）は、入力ベクトルＸのビットｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６のうち、Ｘ１（ｘ１，ｘ２，ｘ３）をベクトルＹ１（ｙ１，ｙ２，ｙ３）として仮インデックス生成回路１１２に供給するように構成されている。
【００６０】
ここで、図７に示す登録情報のうち、登録ベクトルのビットｘ１，ｘ２，ｘ３に対応付けられているインデックスＩＤＸの各値は、インデックス生成部１１０−１の仮インデックス生成回路１１２の主記憶部に仮のインデックスＡ’として格納されている。この場合、インデックスＩＤＸを表す仮のインデックスＡ’は、そのインデックスＩＤＸに対応する登録ベクトルのビットｘ１，ｘ２，ｘ３によって指定されるメモリセルに格納されている。このように、登録ベクトルとインデックスＩＤＸとが対応付けられて登録情報として仮インデックス生成回路１１２の主記憶部に格納されている。
【００６１】
また、図７に示す登録情報のうち、登録ベクトルのビットｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６の各値は、再生ベクトル生成回路１１３の副記憶部に格納される。即ち、仮インデックス生成回路１１２からｑビットの仮のインデックスＡ’としてインデックスＩＤＸが再生ベクトル生成回路１１３に供給され、この仮のインデックスＡ’によって指定される副記憶部のメモリセルには、登録ベクトルのビットｘ１，ｘ２，ｘ３，ｘ４，ｘ５，ｘ６の各値が格納されている。このように、登録ベクトルの各ビットの値が、仮のインデックスＡ’に対応付けられた登録情報として再生ベクトル生成回路１１３の副記憶部に格納されている。ただし、前述したように、上記のハッシュ関数として線形関数を用いた場合、登録ベクトルの全ビットを再生ベクトル生成回路１１３の副記憶部に格納する必要はなく、登録ベクトルの一部のビットｘ４，ｘ５，ｘ６を再生ベクトル生成回路１１３の副記憶部に格納すれば足りる。
【００６２】
上述のインデックス生成部１１０−１は、検索モードにおいて、入力ベクトルＸが供給されると、入力ベクトルＸの全ビットのうち、ビットｘ４，ｘ５，ｘ６の値が、再生ベクトル生成回路１１３の副記憶部を構成するメモリに貯えられた値と一致する場合、比較回路１１４の一致信号ＭＴ１の値が‘１’となり、インデックスＩＤＸの値がインデックスＡ１として出力される。また、入力ベクトルＸのビットｘ４，ｘ５，ｘ６の値が上記の副記憶部を構成するメモリに貯えられた値と一致しない場合、比較回路１１４の一致信号ＭＴ１の値が‘０’となり、インデックスＩＤＸの値を表すインデックスＡ１として無効値が出力される。この場合、インデックス生成部１１０−１から出力されるインデックスＡ１の全ビットが‘０’となる。
【００６３】
上述したように、インデックス生成部１１０−１では、上述の図６に示す登録情報のうち、インデックスＩＤＸの８個の値「４」、「５」、「２」、「１」、「１１」、「１０」、「１５」、「３」と、これらのインデックスＩＤＸの値に対応した登録ベクトルとの対応関係を規定する登録情報が実現される。しかしながら、インデックスＩＤＸの残りの７個の値「７」、「９」、「１３」、「１４」、「１２」、「６」、「８」をインデックス生成部１１０−１では実現できない。
【００６４】
そこで、続いて、２番目のインデックス生成部１１０−２では、登録情報の登録ベクトルのビットｘ４，ｘ５，ｘ６に着目して、上述の図６に示す登録情報のうち、インデックスＩＤＸの５個の値「７」、「１３」、「１２」、「６」、「８」と、これらのインデックスＩＤＸの値に対応した登録ベクトルとの対応関係を規定する登録情報が実現される。
この場合、登録ベクトルのＸ２のビットｘ４，ｘ５，ｘ６を用いて、インデックス生成部１１０−２で実現する登録情報のインデックスＩＤＸが決定される。
【００６５】
図８は、本発明の第１実施形態による連想記憶装置１００に備えられた２番目のインデックス生成部１１０−２で実現される登録情報を説明するための図である。この例では、上述の図６に示す登録情報のうち、インデックスＩＤＸの５個の値「７」、「１３」、「１２」、「６」、「８」に関する登録情報が実現されている。しかしながら、インデックスＩＤＸの残りの２個の値「９」、「１４」をインデックス生成部１１０−２では実現できない。
なお、図８に示す例では、入力ベクトルＸの全ビットのうち、ビットｘ１，ｘ２，ｘ３の値が再生ベクトル生成回路１１３の副記憶部を構成するメモリに貯えられた値と一致する場合、比較回路１１４の一致信号ＭＴ２の値が‘１’となる。
【００６６】
そこで、最後に、３番目のインデックス生成部１１０−３では、図３Ｃを参照して説明したように、登録情報の登録ベクトルのビットｘ１，ｘ２，ｘ３とビットｘ４，ｘ５，ｘ６との排他的論理和の演算結果として得られるビットｙ１，ｙ２，ｙ３の値によって指定される上記の主記憶部及び副記憶部の各メモリセルに、残りのインデックスＩＤＸの値「９」、「１４」に関する登録情報が格納される。この場合、登録情報の登録ベクトルのビットｘ１，ｘ２，ｘ３とビットｘ４，ｘ５，ｘ６との排他的論理和の演算結果として得られるビットｙ１，ｙ２，ｙ３を用いて、インデックス生成部１１０−３で実現する登録情報のインデックスＩＤＸが決定される。
【００６７】
図９は、本発明の第１実施形態による連想記憶装置１００に備えられた３番目のインデックス生成部１１０−３で実現される登録情報を説明するための図である。
この例では、上述の図６に示す登録情報のうち、インデックスＩＤＸの５個の値「９」、「１４」に関する登録情報が実現されている。この場合、登録情報のうち、インデックスＩＤＸの値「９」、「１４」に関する情報は、ビットｙ１，ｙ２，ｙ３の値によって指定される仮インデックス生成回路１１２の主記憶部のメモリセルに格納される。また、インデックスＩＤＸの値「９」、「１４」に対応した登録ベクトルのビット（ｙ１，ｙ２，ｙ３，ｘ４，ｘ５，ｘ６）の各値は、インデックスＩＤＸの値「９」、「１４」を表す仮のインデックスＡ’によって指定される再生ベクトル生成回路１１３の副記憶部のメモリセルに格納される。
なお、図９に示す例では、入力ベクトルＸの全ビットのうち、ビットｘ４，ｘ５，ｘ６の値が再生ベクトル生成回路１１３の副記憶部を構成するメモリに貯えられた値と一致する場合、比較回路１１４の一致信号ＭＴ３の値が‘１’となる。
【００６８】
このように、３個のインデックス生成部１１０−１，１１０−２，１１０−３を用いることにより、それぞれにおいてハッシュ衝突が発生したとしても、図６に示す１５個のインデックスに関する登録情報の全てを実現することができる。
【００６９】
２．動作の説明
次に、第１実施形態による連想記憶装置１００の通常の検索モードでの動作を説明する。通常の検索モードでの動作時には、入力ベクトルＸに応答して、３個のインデックス生成部１１０−１，１１０−２，１１０−３のうち、一つのインデックス生成部１１０−ｉが有効値を示すインデックスＡｉを出力する。他の二つのインデックス生成部１１０−ｉは無効値を出力する。出力部１２０は、３個のインデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ出力されたインデックスＡ１，Ａ２，Ａ３を結合してインデックスＡを生成して出力する。このインデックスＡは、３個のインデックス生成部１１０−１，１１０−２，１１０−３から出力されたインデックスＡ１，Ａ２，Ａ３のうち、有効値を示すインデックスＡｉと同値になる。入力ベクトルＸがインデックス生成部１１０−１，１１０−２，１１０−３に設定された登録ベクトルのいずれとも一致しない場合は、すべてのインデックス生成部１１０−１，１１０−２，１１０−３が無効値を生成する。
【００７０】
以上により、通常の検索モードでは、３個のインデックス生成部１１０−１，１１０−２，１１０−３の何れかから、入力ベクトルＸに対応した固有のインデックスＡが得られ、このインデックスＡが出力部１２０から出力される。従って、検索モードにおいて、３個のインデックス生成部１１０−１，１１０−２，１１０−３と出力部１２０とが一体となって、一つの連想メモリとして機能する。
【００７１】
次に、連想記憶装置１００の更新モードでの動作を説明する。
更新モードでの動作として、既存の登録情報を削除する動作と、新規な登録情報を追加する動作がある。更新モードにおいて、制御部１３０は、登録情報として登録された既存の登録ベクトルが存在する場合、その既存の登録ベクトルに対応するインデックスを削除した後、登録情報として新規な登録ベクトルのインデックスを追加することにより、登録情報を更新する。更新モードにおいて登録情報を更新するための動作は制御部１３０により制御される。
【００７２】
２−１．既存の登録情報を削除する動作
ここでは、図１３を参照して、上述した制御部１３０による既存の登録情報を削除する動作の一例について説明する。
図１３は、本発明の第１実施形態による登録情報の削除方法の一例を示すフローチャートである。
既存の登録情報を削除する場合、連想記憶装置１００を管理するシステム（図示なし）から、連想記憶装置１００の制御部１３０に、更新モードの起動を示す指令信号ＵＰＤが供給される。そして、図１３に示すように、指令信号ＵＰＤが制御部１３０に供給されると、制御部１３０は、削除すべき登録ベクトルを入力ベクトルとして、複数のインデックス生成部１１０−ｉに供給する（ステップＳ１０１）。すなわち、３個のインデックス生成部１１０−１，１１０−２，１１０−３には、削除すべき登録ベクトルが入力ベクトルＸとして共通に供給される。
【００７３】
次に、各インデックス生成部１１０−ｉは、該当する登録ベクトルが存在すれば、一致信号ＭＴｉ＝‘１’を出力する。また、各インデックス生成部１１０−ｉは、該当する登録ベクトルが存在しなければ、一致信号ＭＴｉ＝‘０’を出力する（ステップＳ１０２）。すなわち、インデックス生成部１１０−１，１１０−２，１１０−３は、それぞれ、該当する登録情報が存在すれば、一致信号ＭＴ１，ＭＴ２，ＭＴ３として値‘１’の信号を制御部１３０に供給し、該当する登録情報が存在しなければ、一致信号ＭＴ１，ＭＴ２，ＭＴ３として値‘０’の信号を制御部１３０に供給する。
【００７４】
次に、制御部１３０は、一致信号ＭＴｉを参照して、削除すべき登録ベクトルが存在するインデックス生成部１１０−ｉを特定する（ステップＳ１０３）。すなわち、制御部１３０は、インデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ供給される一致信号ＭＴ１，ＭＴ２，ＭＴ３の値を参照して、削除すべき登録ベクトルが存在するインデックス生成部を特定する。
ここで、削除すべき登録ベクトルが存在すると、衝突が発生するので、衝突信号ＣＤｉおよび一致信号ＭＴｉが値‘１’を示す。この一致信号ＭＴｉから削除すべき登録ベクトルに対応するインデックス生成部を特定することができる。
【００７５】
次に、制御部１３０は、特定されたインデックス生成部１１０−ｉがあるか否かを判定する（ステップＳ１０４）。制御部１３０は、特定されたインデックス生成部１１０−ｉがある場合（ステップＳ１０４：ＹＥＳ）に、処理をステップＳ１０５に進める。また、制御部１３０は、特定されたインデックス生成部１１０−ｉがない場合（ステップＳ１０４：ＮＯ）に、処理を終了する。
【００７６】
ステップＳ１０５において、制御部１３０は、削除すべき登録ベクトルが存在するインデックス生成部１１０−ｉに対して、ＷＥ＝‘１’として、既存の登録ベクトルのインデックスの値を無効値に変更する。すなわち、制御部１３０は、書き込み動作を制御するためのライトイネーブル信号ＷＥにより、３個のインデックス生成部１１０−１，１１０−２，１１０−３のうち、削除すべき登録インデックスに対応するインデックス生成部の主記憶部及び副記憶部をライトモードに設定し、これらの記憶部に格納された登録情報を削除する。具体的には、削除すべき登録インデックスが格納されたインデックス生成部１１０−ｉの主記憶部に格納された仮のインデックスの値を有効値から無効値に書き換える。例えば、インデックス生成部１１０−１の登録ベクトル（ｘ１，ｘ２，ｘ３）＝（０，１，１）に対するインデックスＩＤＸを無効値に書き換える場合、インデックス生成部１１０−１の主記憶部を構成するメモリのアドレス（０，１，１）におけるインデックスＩＤＸの内容を（０，０，０）に書き換える。これにより、システムから制御部１３０に供給された登録ベクトルに関する登録情報が削除された状態になる。
【００７７】
上述の登録情報の削除に関する動作をまとめると、制御部１３０は、登録情報として登録された既存の登録ベクトルに対応するインデックスを削除する場合、複数のインデックス生成部１１０−１，１１０−２，１１０−３のうち、削除すべき登録ベクトルのインデックスを用いて生成された再生ベクトルＸ２’が入力ベクトルＸのＸ２と一致する旨を示す一致信号ＭＴｉを供給するインデックス生成部を選択する。制御部１３０は、選択した当該インデックス生成部の登録情報から、既存の登録ベクトルのインデックスを削除する。
【００７８】
更新モードにおいて登録情報を削除する場合、制御部１３０による制御は次の第１段階から第３段階を含む。
第１段階：更新モードにおいて、削除すべき既存の登録ベクトルを入力ベクトルＸとして複数のインデックス生成部１１０−１，１１０−２，１１０−３に供給する。
第２段階：複数のインデックス生成部１１０−１，１１０−２，１１０−３のそれぞれについて、制御部１３０は、一致信号ＭＴｉに基づき、削除すべき既存の登録ベクトルに対応した固有のインデックスが登録情報として存在するか否かを判定する。
第３段階：複数のインデックス生成部１１０−１，１１０−２，１１０−３の何れかにおいて、既存の登録ベクトルに対応した固有のインデックスが登録情報として存在する場合、制御部１３０は、登録情報として存在する既存の登録ベクトルのインデックスの値を有効値から無効値に変更する。
【００７９】
このように、既存の登録情報を削除する場合、制御部１３０が、一致信号ＭＴｉの値から、削除すべき既存の登録ベクトルが格納されているインデックス生成部を特定し、制御部１３０が各インデックス生成部の主記憶部と副記憶部を直接的にアクセスして登録情報を削除するので、登録情報を高速に削除することができる。従って、既存の登録情報の削除を伴う更新動作を高速に実施することが可能になる。
【００８０】
２−２．新規な登録情報を追加する動作
ここでは、図１４を参照して、上述した制御部１３０による新規な登録情報を追加する動作の一例について説明する。
図１４は、本発明の第１実施形態による新規情報の追加方法の一例を示すフローチャートである。
新規な登録ベクトルを追加する場合、連想記憶装置１００を管理するシステムから、連想記憶装置１００の制御部１３０に、更新モードの起動を示す指令信号ＵＰＤが供給される。また、同システムから、追加すべき登録ベクトルのインデックスＩＤＸが供給される。そして、図１４に示すように、指令信号ＵＰＤとインデックスＩＤＸとが制御部１３０に供給されると、制御部１３０は、追加登録ベクトルを入力ベクトルとして、複数のインデックス生成部１１０−ｉに供給する（ステップＳ２０１）。すなわち、３個のインデックス生成部１１０−１，１１０−２，１１０−３には、追加すべき登録ベクトルが入力ベクトルＸとして供給される。
【００８１】
次に、各インデックス生成部１１０−ｉは、該当する登録と衝突するベクトルが存在すれば、衝突信号ＣＤｉ＝‘１’を出力する。また、各インデックス生成部１１０−ｉは、該当する登録と衝突するベクトルが存在しなければ、衝突信号ＣＤｉ＝‘０’を出力する（ステップＳ２０２）。すなわち、インデックス生成部１１０−１，１１０−２，１１０−３は、それぞれ、該当する登録情報の仮のインデックスＡ’が存在すれば、衝突信号ＣＤ１，ＣＤ２，ＣＤ３として値‘１’の信号を制御部１３０に供給し、該当する登録情報が存在しなければ、衝突信号ＣＤ１，ＣＤ２，ＣＤ３として値‘０’の信号を制御部１３０に供給する。
【００８２】
次に、制御部１３０は、衝突信号ＣＤｉを参照して、追加登録すべきベクトルと衝突する登録ベクトルが存在しないインデックス生成部１１０−ｉを特定する（ステップＳ２０３）。すなわち、制御部１３０は、インデックス生成部１１０−１，１１０−２，１１０−３からそれぞれ供給される衝突信号ＣＤ１，ＣＤ２．ＣＤ３の値を参照して、追加すべき登録ベクトルを登録可能なインデックス生成部を特定する。ここで、追加すべき登録ベクトルと衝突する登録ベクトルが存在すると、ハッシュ衝突が発生するので、衝突信号ＣＤｉが値‘１’を示す。この衝突信号ＣＤｉの値から登録ベクトルを追加可能なインデックス生成部を特定することができる。
【００８３】
次に、制御部１３０は、特定されたインデックス生成部１１０−ｉがあるか否かを判定する（ステップＳ２０４）。制御部１３０は、特定されたインデックス生成部１１０−ｉがある場合（ステップＳ２０４：ＹＥＳ）に、処理をステップＳ２０５に進める。また、制御部１３０は、特定されたインデックス生成部１１０−ｉがない場合（ステップＳ２０４：ＮＯ）に、処理をステップＳ２０６に進める。
【００８４】
ステップＳ２０５において、制御部１３０は、追加登録すべきインデックス生成部１１０−ｉに対して、ＷＥ＝‘１’として、主記憶部に追加登録すべきベクトルのインデックスの値を書き込む。すなわち、制御部１３０は、ライトイネーブル信号ＷＥにより、３個のインデックス生成部１１０−１，１１０−２，１１０−３のうち、追加すべき登録ベクトルと衝突する登録ベクトルが存在しないインデックス生成部の主記憶部及び副記憶部をライトモードに設定し、これらの記憶部に新規な登録情報を追加する。具体的には、追加すべき登録ベクトルと衝突する登録ベクトルが存在しないインデックス生成部の主記憶部に仮のインデックスの有効値を書き込む。例えば、インデックス生成部１１０−３に追加すべき登録ベクトルと衝突する登録ベクトルが存在しない場合、インデックス生成部１１０−３の主記憶部を構成するメモリのアドレス（ｙ１，ｙ２，ｙ３）＝（１，１，０）にインデックスの有効値を書き込む。これにより、システムから制御部１３０に供給された登録ベクトルに関する登録情報が連想記憶装置１００に追加された状態になる。
【００８５】
また、ステップＳ２０６において、制御部１３０は、追加不可を示す信号ＦＡＬを出力する。すなわち、制御部１３０は、３個のインデックス生成部１１０−１，１１０−２，１１０−３の全てが、追加すべき登録ベクトルと衝突する登録ベクトルが存在する場合に、新規な登録情報の追加を行わない。そして、この場合、制御部１３０は、追加不可を示す信号ＦＡＬを出力する。
【００８６】
上述の登録情報の追加に関する動作をまとめると、制御部１３０は、登録情報として新規な登録ベクトルのインデックスを追加する場合、複数のインデックス生成部１１０−１，１１０−２，１１０−３のうち、新規な登録ベクトルが登録情報として格納されていない旨を示す衝突信号ＣＤｉを供給するインデックス生成部を選択する。制御部１３０は、選択した当該インデックス生成部の登録情報として、上記の追加すべき新規な登録ベクトルのインデックスを追加する。また、複数のインデックス生成部１１０−１，１１０−２，１１０−３の何れかにおいて、追加すべき新規な登録ベクトルに対応した仮のインデックスが登録情報として格納されている場合、制御部１３０は、新規な登録ベクトルに対応した仮のインデックスが存在しない他のインデックス生成部において、新規な登録ベクトルに対応したインデックスの値として有効値を設定する。
【００８７】
更新モードにおいて登録情報を追加する場合、制御部１３０による制御は次の第１段階から第３段階を含む。
第１段階：追加すべき新規な登録ベクトルを入力ベクトルＸとして複数のインデックス生成部１１０−１，１１０−２，１１０−３に供給する。
第２段階：複数のインデックス生成部１１０−１，１１０−２，１１０−３のそれぞれについて、制御部１３０により、衝突信号ＣＤｉに基づき、追加すべき新規な登録ベクトルに対応した仮のインデックスが登録情報として存在するか否かを判定する。
第３段階：複数のインデックス生成部１１０−１，１１０−２，１１０−３の何れかにおいて、新規な登録ベクトルに対応した仮のインデックスが登録情報として存在しない場合、新規な登録ベクトルに対応したインデックスの値として有効値を設定する。
【００８８】
このように、新規な登録情報を追加する場合、制御部１３０が、一致信号ＭＴｉの値から、追加すべき登録ベクトルと衝突しないインデックス生成部を特定し、制御部１３０が各インデックス生成部の主記憶部と副記憶部を直接的にアクセスして登録情報を追加するので、登録情報を高速に追加することができる。従って、新規な登録情報の追加を伴う更新動作を高速に実施することが可能になる。
【００８９】
上述したように、第１実施形態によれば、複数のインデックス生成部１１０−１，１１０−２，１１０−３において、複数のハッシュ関数を用いて入力ベクトルの特徴量を抽出し、この特徴量に基づいて仮のインデックスＡ’を生成するようにしたので、ハッシュ関数に起因したハッシュ衝突が発生しても、このハッシュ衝突を回避しつつ、汎用の半導体メモリを用いて登録情報を連想記憶装置１００上に実現することができる。
【００９０】
また、複数のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのそれぞれに備えられたハッシュ回路１１１が入力ベクトルＸのビット数ｎよりも小さいｐビットのベクトルＹ１を生成するようにしたので、ベクトルＹ１がアドレスとして入力される仮インデックス生成回路１１２の主記憶部を構成するメモリのアドレス空間を小さくすることができる。従って、上記の主記憶部を構成する半導体メモリの記憶容量を削減することができる。
【００９１】
更に、ハッシュ回路１１１がハッシュ関数として線形関数を用いて入力ベクトルＸの特徴量を抽出するようにしたので、再生ベクトル生成回路１１３の副記憶部には、登録ベクトルのビットの値として、登録ベクトルの一部の（ｎ−ｐ）ビットの値を格納しておけばよい。従って、再生ベクトル生成回路１１３の副記憶部を構成する半導体メモリの記憶容量を有効に削減することができる。
従って、第１実施形態によれば、ビットコストと消費電力の上昇を抑制しつつ、連想記憶装置１００の記憶容量を大規模化することが可能となる。
【００９２】
また、第１実施形態によれば、複数のインデックス生成部１１０−１，１１０−２，１１０−３のそれぞれにおいて、衝突信号ＣＤｉと一致信号ＭＴｉを発生させ、これらの信号を制御部１３０に供給するようにしたので、更新モードにおいて、制御部１３０は、衝突信号ＣＤｉと一致信号ＭＴｉを参照することにより、削除すべき登録情報が存在するインデックス生成部と、登録情報を追加可能なインデックス生成部とを直接的にアクセスすることにより登録情報を更新することができる。従って、登録情報の更新を高速化することが可能になる。
【００９３】
（第２実施形態）
次に、本発明の第２実施形態を説明する。
図１０は、本発明の第２実施形態による連想記憶装置２００の構成例を示すブロック図である。
【００９４】
連想記憶装置２００は、上述の第１実施形態による図１に示す連想記憶装置１００の構成において、複数のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎに加えて、または、複数のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎのうちの一部のインデックス生成部に代えて、連想メモリ１１０−Ｃを備えている。連想メモリ１１０−Ｃは、ＣＡＭセルを有する内容検索型の半導体メモリであり、例えば従来型のＣＡＭを用いることができる。連想メモリ１１０−Ｃの動作（検索モード及び更新モードでの動作）は、制御部１３０により制御される。
【００９５】
また、連想記憶装置２００は、出力結合部２２０を更に備えている。出力結合部２２０は、第１実施形態による連想記憶装置１００に備えられた出力部１２０から出力されるインデックスＡと、連想メモリ１１０−Ｃから出力されるインデックスＢとを結合して一つのインデックスＣとして出力するためのものである。出力結合部２２０は、出力部１２０から出力されるインデックスＡと、連想メモリ１１０−Ｃから出力されるインデックスＢとのいずれか一方のインデックスを出力する。出力結合部２２０は、例えば、図５に示す出力部１２０と同様に、論理和ゲート回路から構成されている。その他は、第１実施形態と同様である。
【００９６】
次に、図１１及び図１２を参照して、連想記憶装置２００に備えられた連想メモリ１１０−Ｃについて説明する。
図１１は、本発明の第２実施形態による連想記憶装置２００に備えられた連想メモリ１１０−Ｃとして用いられる従来型のＣＡＭ１０００の基本構成の一例を表すブロック図である（特許文献１参照）。ＣＡＭ１０００は、比較レジスタ１００１、検索ビット線ドライバ１００２、ｍ個のワードＷ１〜Ｗｍ、ｍ個の一致センス回路ＭＳＣ１〜ＭＳＣｍ、ｍ個の一致フラグレジスタＭＦＲ１〜ＭＦＲｍ、及びプライオリティ・エンコーダ（優先度付符号化回路）ＰＥを備えている。
【００９７】
比較レジスタ１００１は、ｎビットの検索データを格納するレジスタである。検索ビット線ドライバ１００２は、比較レジスタ１００１の各ビットを検索ビット線上にドライブする。各ワードＷ１〜Ｗｍは、それぞれｎビットのＣＡＭセルを備えている。
【００９８】
図１２は、図１１のＣＡＭセルの構成回路図である。図１２に例示したＣＡＭセル１００３は、不一致検出型のものである。ＣＡＭセル１００３は、メモリセル１００４及び一致比較回路１００５から構成される。メモリセル１００４は、１ビットのデータを記憶するＳＲＡＭ構成のメモリセルである。図１２においてＤがデータ、ＤＮが反転データを表す。一致比較回路１００５は、メモリセル１００４に記憶された１ビットのデータと検索ビット線対ＳＬ，ＳＬＮ上にドライブされる検索データとを比較し、その一致比較結果を一致線ＭＬ上に出力する。
【００９９】
一致比較回路１００５は、３つのｎＭＯＳトランジスタ（以下「ｎＭＯＳ」という。）１００６，１００７，１００８を備えている。ｎＭＯＳ１００６，１００７は、検索ビット線ＳＬＮと検索ビット線ＳＬとの間に直列に接続されている。ｎＭＯＳ１００６，１００７のゲートは、それぞれ、メモリセル１００４のデータＤ，反転データＤＮに接続されている。ｎＭＯＳ１００８は、一致線ＭＬとグランドとの間に接続されている。ｎＭＯＳ１００８のゲートは、ｎＭＯＳ１００６，１００７の間のノード１００９に接続されている。
【０１００】
まず、検索を行う前に、ＣＡＭ１０００のそれぞれのワードＷ１〜Ｗｍに、検索対象であるデータ（登録ベクトル）を記入する。各ワード内の各ＣＡＭセル１００３において、メモリセル１００４へのデータの書き込み及びメモリセル１００４からのデータの読み出しは、通常のＳＲＡＭと同様にして行われる。
【０１０１】
検索時には、まず、比較レジスタ１００１に検索データが格納される。検索データの各のビットは、検索ビット線ドライバ１００２により、各々対応する検索ビット線上にドライブされる。
【０１０２】
各々のワードＷ１〜Ｗｍでは、各ＣＡＭセルに予め記憶されているデータと検索ビット線上にドライブされた検索データとの一致検索が同時（並列）に実行され、その結果が一致線ＭＬ１〜ＭＬｍ上に出力される。これらの検索結果は、それぞれ一致センス回路ＭＳＣ１〜ＭＳＣｍに入力される。各一致センス回路ＭＳＣ１〜ＭＳＣｍは、各検索結果を増幅し、一致センス出力として一致センス出力線ＭＴ１〜ＭＴｍに出力する。各一致センス出力は、一致フラグレジスタＭＦＲ１〜ＭＦＲｍに格納され、一致フラグ出力として一致フラグ出力線ＭＦ１〜ＭＦｍに出力される。一致フラグは、‘１’が「一致あり」、‘０’が「一致なし」を表すものとする。
【０１０３】
各一致フラグ出力は、プライオリティ・エンコーダＰＥに入力される。プライオリティ・エンコーダＰＥでは、所定の優先順位付けに従って、一致が検出されたワードの中から最優先順位のワードのアドレス（最優先一致アドレス：ＨＭＡ）を選択し出力する。各ワードの優先順位は、ワードＷ１が最も高く、Ｗｍに向かうに従って順次優先順位が低くなるものとする。
【０１０４】
尚、各ワードＷ１〜Ｗｍ内の各ＣＡＭセル１００３における一致検索は、次のようにして実行される。
【０１０５】
まず、初期化動作を実行する。初期化動作では、検索ビット線対ＳＬ，ＳＬＮがともに‘Ｌ’（＝‘０’）とされる。一方、メモリセル１００４に記憶されているデータに応じて、一致比較回路１００５のｎＭＯＳ１００６，１００７のうち一方がオン状態、他方がオフ状態となる。従って、ｎＭＯＳ１００６，１００７のうちオン状態の方を介して、両者の間のノード１００９のレベルが‘Ｌ’となり、ｎＭＯＳ１００８はオフ状態となる。
この状態で、一致線ＭＬが‘Ｈ’（＝‘１’）状態にプリチャージされる。尚、一致線ＭＬは‘Ｈ’が「一致」を表す。
【０１０６】
次に、検索ビット線を介して比較レジスタ１００１に記憶された検索データの各ビットが各ＣＡＭセル１００３に入力される。これにより、検索データＳに応じて、検索ビット線対ＳＬ，ＳＬＮの何れか一方が‘Ｈ’、他方が‘Ｌ’となる。
【０１０７】
メモリセル１００４に記憶されているデータＤと検索データＳとが一致する場合、ノード１００９のレベルは‘Ｌ’であり、ｎＭＯＳ１００８はオフ状態に保持される。
【０１０８】
一方、データＤと検索データＳとが一致しない場合、ノード１００９のレベルは‘Ｈ’となり、ｎＭＯＳ１００８はオン状態になる。これにより、一致線ＭＬはディスチャージされて‘Ｌ’状態となる。
【０１０９】
ｎビットのＣＡＭセル１００３からなるＣＡＭワードの一致線ＭＬは、各ＣＡＭセル１００３のｎＭＯＳ１００８がパラレルに接続されたワイヤードＯＲ回路を構成している。
従って、１ワードを構成するｍビットのＣＡＭセル１００３のすべてにおいて一致が検出された場合に限り、一致線ＭＬは‘Ｈ’（「一致」）の状態に保持される。一方、１ビットでもＣＡＭセル１００３で不一致が検出されると、一致線ＭＬは‘Ｌ’（「不一致」）の状態となる。
【０１１０】
例えば、検索の結果、一致フラグレジスタＭＦＲ１〜ＭＦＲｍに、一致フラグとして‘０’，‘１’，‘１’，‘０’，…，‘１’，‘０’が格納されたとする。この場合、ワードＷ２，Ｗ３，…，Ｗｍ−１で一致が検出されている。従って、プライオリティ・エンコーダＰＥは、最も優先順位が高いワードＷ２のアドレスをＨＭＡとして出力する。また、一致フラグレジスタＭＦＲ２に格納された一致フラグを‘０’にクリアすることで、その次に優先順位が高いワードＷ３のアドレスをＨＭＡとして出力することができる。以下同様にして、一致が検出されたワードのアドレスを順次出力することができる。
【０１１１】
尚、ＴＣＡＭとして使用する場合、ドント・ケアのビットについては、検索ビット線対ＳＬ，ＳＬＮをともに‘Ｌ’（＝‘０’）としておけばよい。
以上で、第２実施形態による連想記憶装置２００に備えられた連想メモリ１１０−Ｃとして用いられる従来型のＣＡＭ１０００を説明した。
【０１１２】
上述した第２実施形態によれば、複数のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎと共に連想メモリ１１０−Ｃを備えたので、１１０−１，１１０−２，１１０−３，…，１１０−Ｎにおいてハッシュ衝突を回避することができない場合であっても、連想メモリ１１０−Ｃは、任意の登録ベクトルの登録を実現することができるので、ハッシュ衝突に関する問題を完全に解消することができる。また、登録ベクトルのほとんどは、複数のインデックス生成部１１０−１，１１０−２，１１０−３，…，１１０−Ｎで実現できるので、連想メモリ１１０−Ｃの記憶容量は小さくてもよい。このため、連想メモリ１１０−Ｃの消費電力を抑制することができる。従って、第２実施形態よれば、第１実施形態と同様に、ビットコストと消費電力の上昇を抑制しつつ、連想記憶装置２００の記憶容量の大規模化を実現することができると共に、ハッシュ関数に起因したハッシュ衝突を完全に回避することが可能になる。
【０１１３】
次に、参考として、第２実施形態の連想記憶装置２００による更新動作の実験結果を述べる。４個のインデックス生成部１１０−ｉと１個のＣＡＭとを組み合わせた場合、５個のインデックス生成部１１０−ｉと１個のＣＡＭとを組み合わせた場合のそれぞれについて、Ｃ言語で開発したシミュレータを用いて更新動作の実験を実施した。この実験では、ランダムなベクトルを１００万回更新するものとし、インデックス生成部１１０−ｉで発生したハッシュ衝突を回避するために必要なＣＡＭ（連想メモリ１１０−Ｃ）の記憶容量の大きさを求めた。この実験では、ｎ＝３２、ｋ＝１０００００とし、入力ベクトルを発生させる乱数の生成法としてメルセンヌツイスタ法を用いた。
【０１１４】
実験での更新手順は次の通りである。
（手順１）ｋ個の登録ベクトルを生成し、本発明による連想記憶装置１００の複数のインデックス生成部１１０−ｉとＣＡＭに格納する。
（手順２）複数の登録ベクトルの中からランダムに１つの登録ベクトルを取り出して、その登録ベクトルを連想記憶装置１００から削除する。
（手順３）新規な登録ベクトルを生成し、連想記憶装置１００に格納する。
【０１１５】
上記実験において、ＣＡＭに登録されたベクトルの個数の平均値と最大値を求める。上記実験によるシミュレーションの結果から得られた値と、確率計算により得られた値は、ほぼ一致した。連想記憶装置の実現に用いるＦＰＧＡ(Field Programmable Gate Array)の制約を考慮すると、３個のインデックス生成部１１０−ｉと１個のＣＡＭとの組み合わせの場合、ＣＡＭの語数が多くなり過ぎる。そのため、５個のインデックス生成部１１０−ｉと１個のＣＡＭとの組み合わせが望ましい。
上記の実験により、上述の実施形態による連想記憶装置の有効性を確認することができた。
【０１１６】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々の変形、変更、修正、置換等が可能である。
【符号の説明】
【０１１７】
１００，２００…連想記憶装置
１１０−１，１１０−２，１１０−３，１１０−ｉ，１１０−Ｎ…インデックス生成部
１１０−Ｃ…連想メモリ
１１１…ハッシュ回路
１１２…仮インデックス生成回路
１１３…再生ベクトル生成回路
１１４…比較回路
１１５…出力回路
１１６…衝突信号生成回路
１２０…出力部
１３０…制御部
１０００…ＣＡＭ
１００３…ＣＡＭセル
【図１】
2016027829.tif 000003
【図２】
2016027829.tif 000004
【図３Ａ】
2016027829.tif 000005
【図３Ｂ】
2016027829.tif 000006
【図３Ｃ】
2016027829.tif 000007
【図４Ａ】
2016027829.tif 000008
【図４Ｂ】
2016027829.tif 000009
【図４Ｃ】
2016027829.tif 000010
【図５】
2016027829.tif 000011
【図６】
2016027829.tif 000012
【図７】
2016027829.tif 000013
【図８】
2016027829.tif 000014
【図９】
2016027829.tif 000015
【図１０】
2016027829.tif 000016
【図１１】
2016027829.tif 000017
【図１２】
2016027829.tif 000018
【図１３】
2016027829.tif 000019
【図１４】
2016027829.tif 000020
【国際調査報告】
2016027829.tif 000021
2016027829.tif 000022