(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6238306
(24)【登録日】2017年11月10日
(45)【発行日】2017年11月29日
(54)【発明の名称】不揮発性連想メモリを利用した全文検索システム及びこれに用いる文字列比較方法
(51)【国際特許分類】
G06F 17/30 20060101AFI20171120BHJP
G11C 15/04 20060101ALI20171120BHJP
【FI】
G06F17/30 350D
G06F17/30 414B
G11C15/04 601
【請求項の数】15
【全頁数】17
(21)【出願番号】特願2014-534240(P2014-534240)
(86)(22)【出願日】2013年7月19日
(86)【国際出願番号】JP2013070254
(87)【国際公開番号】WO2014038306
(87)【国際公開日】20140313
【審査請求日】2016年7月14日
(31)【優先権主張番号】特願2012-196031(P2012-196031)
(32)【優先日】2012年9月6日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】504157024
【氏名又は名称】国立大学法人東北大学
(74)【代理人】
【識別番号】100137800
【弁理士】
【氏名又は名称】吉田 正義
(74)【代理人】
【識別番号】100148253
【弁理士】
【氏名又は名称】今枝 弘充
(74)【代理人】
【識別番号】100148079
【弁理士】
【氏名又は名称】梅村 裕明
(74)【代理人】
【識別番号】100188581
【弁理士】
【氏名又は名称】堀切 康平
(74)【代理人】
【識別番号】100158241
【弁理士】
【氏名又は名称】吉田 安子
(72)【発明者】
【氏名】崎村 昇
(72)【発明者】
【氏名】根橋 竜介
(72)【発明者】
【氏名】杉林 直彦
(72)【発明者】
【氏名】松永 翔雲
(72)【発明者】
【氏名】羽生 貴弘
(72)【発明者】
【氏名】大野 英男
【審査官】
山本 俊介
(56)【参考文献】
【文献】
特開2011−215835(JP,A)
【文献】
特開昭64−013622(JP,A)
【文献】
Shoun Matsunaga他3名,Design of a Low-Energy Nonvolatile Fully-Parallel Ternary CAM Using a Two-Level Segmented Match-Line,Multiple-Valued Logic (ISMVL), 2011 41st IEEE International Symposium on,米国,IEEE,2011年 5月23日,p.99-104
【文献】
Shoun Matsunaga他6名,Fully Parallel 6T-2MTJ Nonvolatile TCAM with Single-Transistor-Based Self Match-Line Discharge Control,2011 Synposium on VLSI Circuits Digest of Technical Papers,米国,IEEE,2011年 8月15日
【文献】
勝俣翠他3名,完全並列形不揮発TCAM向けワード回路の構成,平成22年度電気関係学会東北支部連合大会講演論文集,日本,2011年 6月10日,p.285
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
G11C 15/04
(57)【特許請求の範囲】
【請求項1】
不揮発性連想メモリとインデックス記憶部を含む文字列検索部を含む全文検索システムであって、
定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶され、
上記不揮発性連想メモリは、
2つの端子を有する第1及び第2の抵抗変化素子を含む複数の不揮発性連想メモリセルがマトリックス状に配置され、
上記複数の不揮発性連想メモリセルの各々は、
第1、第2、第3及び第4のトランジスタと、
カラムドライブに接続されカラム方向に延在する第1及び第2のサーチ線と、上記カラム方向に延在する第1及び第2のビット線と、
ロウ方向に延在するワード線及びプレート線とを含み、
上記第1のトランジスタのゲートに上記第1のサーチ線が接続され、且つ、上記第1のトランジスタのソース端子に上記第1の抵抗変化素子の第1端子が接続され、
上記第2のトランジスタのゲートに上記第2のサーチ線が接続され、且つ、上記第2のトランジスタのソース端子に上記第2の抵抗変化素子の第1端子が接続され、
上記第3及び第4のトランジスタのゲートに上記ワード線が共通接続され、
上記第3のトランジスタのソース端子に上記第1のビット線が接続され、且つ、上記第3のトランジスタのドレイン端子に上記第1のトランジスタのソース端子が接続され、
上記第4のトランジスタのソース端子に上記第2のビット線が接続され、且つ、上記第4のトランジスタのドレイン端子に上記第2のトランジスタのソース端子が接続され、
上記第1及び第2の抵抗変化素子の第2端子が共に上記プレート線に接続されており、
上記複数の不揮発性連想メモリセルのうち、上記ロウ方向に一行に配列される複数の不揮発性連想メモリセルは、ワード回路を構成し、
上記文字列検索部は、上記不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書IDをはじめとする関連情報を取り出すことを特徴とする全文検索システム。
【請求項2】
請求項1に記載の全文検索システムにおいて、
索引語の文字列コードの各々のビットが、上記不揮発性連想メモリセルに割りつけられ、
上記抵抗変化素子の抵抗値の組み合わせによって、索引語の文字列コードのビット値「0」、「1」の他に、少なくともビット比較による評価対象外(Don‘t Care)であることを示す情報が割りつけられることを特徴とする全文検索システム。
【請求項3】
請求項1に記載の全文検索システムにおいて、上記不揮発性連想メモリに入力される検索語の文字列コードの一部をビット比較による評価対象外にする機能を有し、
ビット比較による評価対象外に指定されたビットに関連する全ての上記不揮発性連想メモリセルの電源がオフの状態になることを特徴とする全文検索システム。
【請求項4】
請求項1に記載の全文検索システムにおいて、上記抵抗変化素子が磁気抵抗素子、または相変化素子、または原子移動型素子、または酸素欠損型抵抗変化素子、または金属架橋形成型抵抗変化素子であることを特徴とする全文検索システム。
【請求項5】
請求項1に記載の全文検索システムにおいて、上記不揮発性連想メモリは、検索語、及び索引語の文字列コードを生成する文字列コード生成部を具備し、
索引語を書き込む場合には、索引語の文字列の末尾以降を第1の特殊文字で補間し、
検索語を入力する場合には、検索対象の文字範囲の末尾に上記第1の特殊文字を追加し、残りの文字列は第2の特殊文字で補間することを特徴とする全文検索システム。
【請求項6】
請求項5に記載の全文検索システムにおいて、
上記文字列コード生成部は、ある特定の文字のコードに対して、その文字コードと上記第1の特殊文字のコードとのハミング距離が1になるようにコーディングする機能を有することを特徴とする全文検索システム。
【請求項7】
請求項5に記載の全文検索システムにおいて、
上記文字列コード生成部は、索引語、及び検索語の文字コードにおいて任意のビット単位で評価対象外(Don‘t Care)にコーディングする機能を有する全文検索システム。
【請求項8】
請求項1に記載の全文検索システムにおいて、
上記不揮発性連想メモリには、索引語の文字コードが複数のセグメントに分割されて記憶され、
セグメント毎に逐次的に文字列比較され、
最初に評価されるセグメントに先頭文字が配置され、
先に評価されたセグメントの評価結果が、次のセグメントの評価に引き継がれることを特徴とする全文検索システム。
【請求項9】
請求項8に記載の全文検索システムにおいて、
先に評価されるセグメントにおいて一致と判定されたワードに対しては、次に評価されるセグメントの不揮発性連想メモリセルの電源をオンにし、不一致と判定されたワードに対しては、次に評価されるセグメントの不揮発性連想メモリセルの電源をオフにする電源制御が実施されることを特徴とする全文検索システム。
【請求項10】
請求項8に記載の全文検索システムにおいて、
少なくとも先頭文字のコードが、ビットの並びを入れ替えるようにビットスクランブルされ、その一部が最初に評価されるセグメントにビットアサインされることを特徴とする全文検索システム。
【請求項11】
不揮発性連想メモリとインデックス記憶部を含む文字列検索部を含む全文検索システムであって、
定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶され、
上記不揮発性連想メモリは、検索語、及び索引語の文字列コードを生成する文字列コード生成部を具備し、
上記文字列コード生成部は、索引語を書き込む場合には、索引語の文字列の末尾以降を第1の特殊文字で補間し、検索語を入力する場合には、検索対象の文字範囲の末尾に上記第1の特殊文字を追加し、残りの文字列は第2の特殊文字で補間するとともに、ある特定の文字のコードに対して、その文字コードと上記第1の特殊文字のコードとのハミング距離が1になるようにコーディングする機能を有し、
上記文字列検索部は、上記不揮発性連想メモリにおいて、検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書IDをはじめとする関連情報を取り出すことを特徴とする全文検索システム。
【請求項12】
不揮発性連想メモリとインデックス記憶部を含む文字列検索部を含む全文検索システムであって、
索引語の文字コードが複数のセグメントに分割され、少なくとも先頭文字のコードがビットの並びを入れ替えるようにビットスクランブルされ、その一部が最初に評価されるセグメントにビットアサインされて、定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶され、
セグメント毎に逐次的に文字列比較され、
先に評価されたセグメントの評価結果が、次のセグメントの評価に引き継がれ
上記文字列検索部は、上記不揮発性連想メモリにおいて、検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書IDをはじめとする関連情報を取り出すことを特徴とする全文検索システム。
【請求項13】
不揮発性連想メモリを含む文字列検索部を含む全文検索システムの文字列比較方法であって、
上記不揮発性連想メモリは、
2つの端子を有する第1及び第2の抵抗変化素子を含む複数の不揮発性連想メモリセルがマトリックス状に配置され、
上記複数の不揮発性連想メモリセルの各々は、
第1、第2、第3及び第4のトランジスタと、
カラムドライブに接続されカラム方向に延在する第1及び第2のサーチ線と、上記カラム方向に延在する第1及び第2のビット線と、
ロウ方向に延在するワード線及びプレート線とを含み、
上記第1のトランジスタのゲートに上記第1のサーチ線が接続され、且つ、上記第1のトランジスタのソース端子に上記第1の抵抗変化素子の第1端子が接続され、
上記第2のトランジスタのゲートに上記第2のサーチ線が接続され、且つ、上記第2のトランジスタのソース端子に上記第2の抵抗変化素子の第1端子が接続され、
上記第3及び第4のトランジスタのゲートに上記ワード線が共通接続され、
上記第3のトランジスタのソース端子に上記第1のビット線が接続され、且つ、上記第3のトランジスタのドレイン端子に上記第1のトランジスタのソース端子が接続され、
上記第4のトランジスタのソース端子に上記第2のビット線が接続され、且つ、上記第4のトランジスタのドレイン端子に上記第2のトランジスタのソース端子が接続され、
上記第1及び第2の抵抗変化素子の第2端子が共に上記プレート線に接続されており、
上記複数の不揮発性連想メモリセルのうち、上記ロウ方向に一行に配列される複数の不揮発性連想メモリセルは、ワード回路を構成し、
上記不揮発性連想メモリに格納される索引語の文字列コードは、索引語の文字列の末尾以降を第1の特殊文字で補間され、
上記不揮発性連想メモリに入力される検索語の文字列コードは、検索対象の文字範囲の末尾に上記第1の特殊文字を追加し、残りの文字列は第2の特殊文字で補間されるように文字列コードを作成し、
この作成した文字列コードを用いて検索語と索引語の文字列を比較する文字列比較方法。
【請求項14】
請求項13に記載の全文検索システムの文字列比較方法であって、
ある特定の文字コードが、上記第1の特殊文字のコードとのハミング距離が1になるように文字列コードを変換し、
この変換した文字列コードを用いて検索語と索引語の文字列を比較する文字列比較方法。
【請求項15】
不揮発性連想メモリを含む文字列検索部を含む全文検索システムの文字列比較方法であって、
上記不揮発性連想メモリに格納される索引語の文字列コードは、索引語の文字列の末尾以降を第1の特殊文字で補間され、
上記不揮発性連想メモリに入力される検索語の文字列コードは、検索対象の文字範囲の末尾に第2の特殊文字が追加され、残りの文字列は上記第1の特殊文字で補間されるように文字列コードが作成され、
ある特定の文字コードが、上記第1の特殊文字のコードとのハミング距離が1になるように文字列コードを変換し、
この変換した文字列コードを用いて検索語と索引語の文字列を比較する文字列比較方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、連想メモリを利用した検索システム及びこれに用いる文字列比較方法に関する。
【背景技術】
【0002】
Web検索に代表されるように、ICT(Information and Communication Technology)の普及により文字列(ワード)検索の機会が激増している。文字列の検索には、順次検索方式、転置検索方式がある。単一もしくは少数の文書の文字列を検索するような場合は主に順次検索方式が用いられる。大量の文書からキーワード(文字列)が含まれる文書を探し出すような検索を行う場合は主に転置検索方式が用いられる。
転置検索方式による文書検索については、例えば非特許文献1に開示されている。非特許文献1によると、転置検索方式では前処理として被検索(蓄積される)文書のインデックスを作成する。単純な検索においてはこの前処理の手間は無駄になるが、大量の文書から必要な文書を、キーワードを基に検索するシステムにおいてはインデックスの作成の手間は問題にならない。
これは、
図1を参照して説明すると、例えば、1000語で構成される文書でも、キーワードとなりえない語(例えば「。」、「、」のような句読点)はインデックスから排除でき、何度も使われる名詞(例えば風力発電に関連する文書中の「プロペラ」という語)は、インデックスのなかでは一つの索引語と出現文書IDにまとめられるからである。
図1は、転置検索方式による全文ワード検索における、索引語と文書IDとインデックス及び入力キーワード(検索語)の関係を示す。
転置検索方式の場合、文書が更新されるたびにインデックスも改訂する必要があり、そのたびに前処理を行う必要があるなどの色々な制限や余分な手間が存在するものの、インデックスに格納された索引語をキーワードで検索する処理は、順次検索方式に比べて大幅に軽減される。
しかしながら、これらは全てソフトウェアで実現されていたので、多大の処理時間を要していた。これは、
図2の検索システムを参照して説明すると、インデックスファイルが既にメインメモリ22上に展開されていたとしても、この中から索引語をCPU21にロード(
図2のステップb)しレジスタに保存して、既にCPU21内のレジスタに保存している検索語と比較(
図2のステップc)する、という行為を索引語の数だけ繰り返すことになるためである。最終的に比較の結果、索引語と検索語が同一(
図2のステップd)であれば、文書番号をロード(
図2のステップe)し、それを基に何等かの処理(アブストラクトの表示など)をソフトウェア上で行うことになる。今般のコンピュータシステムは、実データ処理に必要な動的電力と同等の静的電力、即ち電源を入れておくだけで必要な待機電力があり、この遅い処理時間は問題であった。
一方、ハードウェアで単語を検索することについては、例えば辞書チップのようなもので、高速処理が可能であることが既に知られている。このような場合、連想メモリが使用される。連想メモリ(CAM:Content−Addressable Memory)は、入力データと記憶データとの比較を行い、一致した記憶データの場所を出力する。
図3に示すように、例えば、日本語の単語「川」をCAMに入力するとHit0の信号が出力される。そのHit信号がワード線として入力されるメモリアレイには翻訳語が格納されているので、「River」が出力される。このようにすると、日本語の入力から英語の出力が、ハードウェア上で得られることになり、ソフトウェアを介さないため、非常に高速であり、低消費電力で処理を実現できることがわかっていた。
【先行技術文献】
【非特許文献】
【0003】
【非特許文献1】Googleを支える技術〜巨大システムの内側の世界〜、西田圭祐著、技術評論社
【発明の概要】
【発明が解決しようとする課題】
【0004】
文字列検索も専用ハードウェア化すれば、高速、且つ低消費電力で検索することが可能と考えられる。そこで、転置検索方式のハードウェア化を試みたいと考えるが、以下の課題があり実現されてこなかった。
一般的なハードウェア化に使われる連想メモリ、データ保持に静的メモリ(SRAM)が使われる一般的な連想メモリセル(CAMセル)は消費電力や面積が非常に大きく、大量のワードを登録するには難があった。また、ハードウェア化の一般的な欠点である柔軟性の欠如を防止する適切なインデックスの記憶方式やCAMセルに適した記憶方式などが存在していなかった。
【課題を解決するための手段】
【0005】
本発明の態様に係る全文検索システムは、不揮発性連想メモリとインデックス記憶部を含む文字列検索部を備える。本全文検索システムにおいては、定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶される。上記文字列検索部は、上記不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書IDをはじめとする関連情報を取り出す。
本発明の別の態様によれば、不揮発性連想メモリを含む文字列検索部を含む全文検索システムの文字列比較方法が提供される。本方法においては、上記不揮発性連想メモリに格納される索引語の文字列コードは、索引語の文字列の末尾以降を第1の特殊文字で補間され、上記不揮発性連想メモリに入力される検索語の文字列コードは、検索対象の文字範囲の末尾に第2の特殊文字を追加し、残りの文字列は上記第1の特殊文字で補間されるように文字列コードを作成し、この作成した文字列コードを用いて検索語と索引語の文字列を比較する。
【発明の効果】
【0006】
本発明によれば、文字列検索が専用ハードウェア化されても柔軟性のある文字列検索が実施可能で、高速、且つ、低消費電力の全文検索システムが提供できる。
【図面の簡単な説明】
【0007】
図1は、現状の転置検索方式による全文ワード検索を説明するための図であり、索引語と文書IDとインデックス及び入力キーワード(検索語)の関係を示した図である。
図2は、現状のソフトウェアによる全文検索システムの処理の概略を説明するための図である。
図3は、現状の連想メモリを利用したワード検索の一例を説明するための図である。
図4は、本発明の実施形態に係る、不揮発性連想メモリを利用した全文検索システムの基本構成を示した図である。
図5は、
図4に示した不揮発性連想メモリの基本構成を示した図である。
図6は、本発明の実施形態に係る、抵抗変化素子を利用した不揮発性連想メモリセルの一例を示した図である。
図7は、
図6の不揮発性連想メモリセルにおける真理値表を示した図である。
図8は、
図5の不揮発性連想メモリについて、索引コードをセグメント0〜セグメント3に4分割し、セグメント0から順次、ビット比較動作させた場合の電源制御の状況を示したイメージ図である。
図9は、本発明の第1の実施例に係る文字列検索方法の一例を説明するための図であり、「JAPAN」の文字列を検索する場合の一例を説明するための図である。
図10は、本発明の第2の実施例に係る文字列検索方法の一例を説明するための図である。
図11は、本発明の第2の実施例に係る不揮発性連想メモリの別の形態を示した図である。
図12は、本発明の第2の実施例に係る文字コード変換の一例を説明するための図である。
図13は、本発明の第2の実施例に係る文字列検索方法の一例を説明するための図である。
図14は、本発明の第3の実施例に係る文字列コードとセグメント割り付けの一例を説明するための図である。
【発明を実施するための形態】
【0008】
後で詳しく説明されるように、本発明は、不揮発性連想メモリとインデックス記憶部を含む文字列検索部を備える全文検索システムに適用され得る。本全文検索システムにおいては、定期的に作成される転置インデックスに対して、索引語の文字列コードが不揮発性連想メモリに記憶される。文字列検索部は、不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基にインデックス記憶部を参照して文書IDをはじめとする関連情報を取り出す。
後述される説明で明らかになるように、本全文検索システムは、以下のような態様で実現され得る。
不揮発性連想メモリは、少なくとも2つの抵抗変化素子を含む基本セルを複数具備し、索引語の文字列コードの各々のビットが、この基本セルに割りつけられ、抵抗変化素子の抵抗値の組み合わせによって、索引語の文字列データのビット値「0」、「1」の他に、少なくともビット比較による評価対象外(Don‘t Care)であることを示す情報が割りつけられても良い。ここで、ビット比較による評価対象外(Don‘t Care)であることを示す情報が割り付けられるというのは、3つ以上の状態を記憶できるTCAMセル内の抵抗変化素子の状態の一つがDon‘t Careに割りつけられることを意味する。
また、不揮発性連想メモリに入力される検索語の文字列コードの一部をビット比較による評価対象外にする機能を有しても良く、ビット比較による評価対象外に指定されたビットに関連する全ての基本セルの電源がオフの状態になるようにしても良い。
また、不揮発性連想メモリは、検索語、及び索引語の文字列コードを生成する文字列コード生成部を具備しても良く、索引語を書き込む場合には、索引語の文字列の末尾以降を第1の特殊文字で補間し、検索語を入力する場合には、検索対象の文字範囲の末尾に第2の特殊文字を追加し、残りの文字列は上記第1の特殊文字で補間するようにしても良い。
また、文字列コード生成部は、ある特定の文字のコードに対して、その文字コードと上記第1の特殊文字のコードとのハミング距離が1になるようにコーディングする機能を有しても良い。
また、上記文字列コード生成部は、索引語、及び検索語の文字コードにおいて任意のビット単位で評価対象外(Don‘t Care)にコーディングする機能を有しても良い。ここで、評価対象外(Don‘t Care)にコーディングするというのは、文字列コード生成部がDon‘t Careを含むコードを生成することを意味する。
また、不揮発性連想メモリは、索引語の文字コードが複数のセグメントに分割されて記憶され、セグメント毎に逐次的に文字列比較されることが望ましく、最初に評価されるセグメントに先頭文字が配置され、先に評価されたセグメントの評価結果が、次のセグメントの評価に引き継がれることが望ましい。
また、先に評価されるセグメントにおいて一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオンにし、不一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオフにする電源制御が実施されることが望ましい。
また、少なくとも先頭文字のコードが、ビットの並びを入れ替えるビットスクランブルされ、その一部が最初に評価されるセグメントにビットアサインされることが望ましい。
以下、図面を参照しながら本発明の実施形態について説明する。
図4は、本発明の実施形態に係る、不揮発性連想メモリを利用した全文検索システムの基本構成図である。CPU(制御部)41は、キーボード等の入力部40から入力された検索語を、文字列データのまま、全文検索専用にハードウェア化されたアクセラレータ42に渡す。アクセラレータ(文字列検索部)42は、インデックス情報を格納しており、入力された検索語がどの文書に含まれるかを検索する機能を有する。インデックスは、索引語、文書ID、索引語の位置や重要度等の関連情報を含むテーブルである。インデックスは、定期的に更新され、バックアップのためにストレージ43に蓄えられると共に、アクセラレータ42に転送される。
アクセラレータ42は、索引語を記憶する不揮発性連想メモリ(CAM)42−1と、文書IDや関連情報等を記憶するメモリ(インデックス記憶部)42−2を具備している。索引語にバイナリコードのIDを付与する従来の方法と異なり、CAM42−1には、大量の索引語が文字列データのまま記憶されている。ここでは、説明の便宜上、索引語の文字列データが半角(英数字)のASCIIコードで扱われると仮定して説明を行う。
CAM42−1は、ASCIIコードで入力された検索語と、CAM42−1に登録される索引語とを一括で照合し、その検索語が見つかった(ヒットした)ワードIDを返す。このワードIDを使ってメモリ42−2を読み出すことで、アクセラレータ42により、入力された検索語を含む文書IDや関連情報を瞬時に取り出すことができる。この実施形態による全文検索システムによれば、メインメモリ44を照合しながらCPU41で検索する一般的な方法に比べて格段に高速な検索動作を実現することが可能である。さらに、不揮発性のCAM42−1を利用することで、消費電力と面積コストも大幅に削減することが期待できる。
図5は、本実施形態に係る不揮発性CAM(
図4のCAM42−1に対応)の基本構成を示している。不揮発性CAM50は、例えば、
図6に示すようなCAMセル60がマトリックス状に配置されたセルアレイ(TCAMアレイ)51を形成している。セルアレイ51周辺には、検索動作やCAMセルに索引語を書き込む動作を制御するワードドライブ52、カラムドライブ53、アドレスエンコーダ54がさらに具備されている。また、セルアレイ51において、複数のCAMセルから構成される一行はワード回路と呼ばれ、索引語のASCIIコードが格納される。また、セルアレイ51は複数のセグメントに分割されており、セグメント毎に独立して検索動作を実行することが可能である。
不揮発性CAM50はまた、カラムドライブ53の入力側に、文字コードの入力を受けて検索語、及び索引語の文字列コードを生成する文字列コード生成部55を具備する。後で説明されるように、文字列コード生成部55は、索引語を書き込む場合には、索引語の文字列の末尾以降を第1の特殊文字で補間し、検索語を入力する場合には、検索対象の文字範囲の末尾に第2の特殊文字を追加し、残りの文字列は上記第1の特殊文字で補間する機能を持つ。
図6に示すCAMセル60は、2値の抵抗値を取りうる抵抗変化素子が組み込まれている。ここでは、抵抗変化素子としてMTJ(Magnetic Tunnel Junction)素子と呼ばれる磁気抵抗素子(Rj、Rjb)が使用されると仮定して説明する。
CAMセル60は、磁気抵抗素子Rj、Rjbのペアを含む比較回路、比較結果をマッチ線MLに伝送する伝送部、磁気抵抗素子Rj、Rjbに書き込み電流を供給するための電流スイッチから構成される。比較回路は、トランジスタM1、M2、M5と、磁気抵抗素子Rj、Rjbから構成される。伝送部はダイオード接続されたトランジスタM6で構成される。電流スイッチはトランジスタM3、M4で実現される。
上記比較回路は、トランジスタM1のゲートにサーチ線SLが接続され、トランジスタM2のゲートにサーチ線/SL(/はSLの反転を意味する)が接続されている。また、トランジスタM1のソース端子n2に磁気抵抗素子Rjの一方の端子が接続され、トランジスタM2のソース端子n3に磁気抵抗素子Rjbの一方の端子が接続されている。また、トランジスタM5は、そのゲートにバイアス電圧Vbが印加される定電流源であり、トランジスタM5のソース端子は電圧V_Vdd、ドレイン端子n1は、トランジスタM1、M2のドレイン端子が共通に接続されている。また、磁気抵抗素子Rjのもう一方の端子と、磁気抵抗素子Rjbのもう一方の端子とが共にプレート線PLに接続されている。
上記伝送部であるダイオード接続されたトランジスタM6は、そのソース端子が端子n1に、ドレイン端子とゲート端子がマッチ線MLに接続されている。
上記電流スイッチであるトランジスタM3及びM4のゲートにワード線WLが接続されている。また、トランジスタM3のソース端子がビット線BLに接続され、ドレイン端子が端子n2に接続されている。一方、トランジスタM4のソース端子がビット線/BLに接続され、ドレイン端子が端子n3に接続されている。磁気抵抗素子に被検索データを書き込む際に、ワード線WLを活性化してトランジスタM3、M4をオンの状態にすることで、ビット線BL、/BLあるいはプレート線PLから磁気抵抗素子に書き込み電流を供給可能とする。
2つの磁気抵抗素子Rj、Rjbには、索引語コードの1ビットの情報が格納される。索引語コードのビットの値が「0」の時、磁気抵抗素子Rjは低抵抗状態(R
L)で、磁気抵抗素子Rjbは高抵抗状態(R
H)にする。索引語コードのビットの値が「1」の時は、磁気抵抗素子Rjは高抵抗状態で、磁気抵抗素子Rjbは低抵抗状態にする。このように、検索語コードを抵抗値で記憶するため、電源を切断しても一旦登録した検索語を失うことの無い不揮発性CAMを実現できる。
検索動作時において、サーチ線SLと/SLには検索語コードの1ビットの値に対応した電圧がカラムドライブ53(
図5)によって印加される。検索語コードのビットの値が「0」の時、サーチ線SLにローレベルL、サーチ線/SLにハイレベルHの電圧が印加される。一方、索引語コードのビットの値が「1」の時は、サーチ線SLにハイレベルH、サーチ線/SLにローレベルLの電圧が印加される。従って、この不揮発性CAMセル60の真理値表は
図7のようになる。
図7を参照して、検索語コードのあるビットが「0」(検索情報「0」)で、そのビットに対応する索引語コードのビットも「0」(記憶情報「0」)であれば、トランジスタM2がオンになって磁気抵抗素子Rjbの抵抗値が評価され、磁気抵抗素子Rjbは高抵抗状態R
Hであるからマッチ線MLはハイレベルHになる。この状態を「一致」、あるいは「ヒットした」(Hit)と言う。検索語のビットが「0」で、索引語のビットが「1」(記憶情報「1」)の時は、磁気抵抗素子Rjbの抵抗値が低抵抗状態R
Lなのでマッチ線MLはローレベルLになる。この状態を「不一致」、あるいは「ミスした」(Miss)と言う。検索語のビットが「1」(検索情報「1」)で、索引語のビットが「0」の時は、トランジスタM1がオンになって磁気抵抗素子Rjの抵抗値が評価され、磁気抵抗素子Rjは低抵抗状態R
Lであるから不一致となる。検索語のビットが「1」で、索引語のビットも「1」の時は、磁気抵抗素子Rjの抵抗値が高抵抗状態R
Hなので一致となる。
本CAMセルの更なる特徴としては、磁気抵抗素子としてMTJ素子を2つ備えることを利用して、ビットの値「0」、「1」以外の状態を格納することが可能である。例えば、磁気抵抗素子RjとRjbの両方を高抵抗状態R
Hにすれば、サーチ線SL、/SLの状態に依らず常に「一致」を出力する。この状態は索引語コードの該当ビットを評価しないことを意味し(”Don‘t Care”と言う)、
図7では”X”で記載している。逆に、磁気抵抗素子RjとRjbの両方を低抵抗状態R
Lにすれば、サーチ線SL、/SLの状態に依らずSL、/SLのどちらか一方がハイレベルであれば強制的に「不一致」を出力する。サーチ線側も同様で、サーチ線SLと/SLの両方をローレベルにすると、磁気抵抗素子RjとRjbの記憶状態に依らず常に「一致」を出力する。すなわち、検索語コードの該当ビットを評価しないことを意味する。検索語コードの”Don’t Care”を、サーチ線SLと/SLの両方をローレベルに割りつけることは、消費電力の観点から重要な意味を持つ。この時、トランジスタM1とM2の両方がオフの状態になり、ビット比較動作に必要な電流パスを遮断する。これは、評価する必要の無いビットに対してビット比較動作を停止することと等価であり、無駄な消費電力を削減できる。
このように、本実施形態に係る不揮発性CAMセルは、3つ以上の状態を記憶できる。これは、2つの状態を記憶できるCAMセルと区別して、TCAM(Ternary CAM)セルと呼ばれる。従来のTCAMセルは、2つのSRAMセルを含む14〜16個のトランジスタで構成される。一方、本実施形態に係るTCAMセルは、6つのトランジスタと2つのMTJ素子で構成できる。MTJ素子はトランジスタの上の配線層に形成可能であり、実質的な面積コストは6個のトランジスタ分のみで済む。
さらに、本実施形態に係る不揮発性TCAMにおいては、セルの電源を切断しても索引語が失われずに残るメリットがある。これは、検索動作が不要な時に、全索引語データをストレージに退避することなく、こまめに電源をオフすることが容易になる利点がある。さらに、検索動作時においても、一旦、不一致と判定されたビット以降の残りビットに対してはビット比較する必要はない。よって、残りのビットの電源をオフにして動作電力と静的電力(待機電力)の両方を削減することができる。
例えば、索引語コードを複数のセグメントに分割し、セグメント毎に時分割でビット比較動作させ、先のセグメントの比較動作で不一致と判定されたワードに対しては、次のセグメントの電源を切断し、比較動作を停止させる制御を実施できる。
図8は、本実施形態に係る不揮発性連想メモリについて、索引コードをセグメント0〜セグメント3に4分割し、セグメント0から順次、ビット比較動作させた場合の電源制御の状況を示したイメージ図である。ここで、索引語、及び検索語は、文字列の先頭がセグメント0に割りつけられる。ワード0に着目すると、セグメント0のビット比較動作で不一致となったため、セグメント1以降は電源が切断され、ビット比較動作が省略される。本実施形態のように、ASCIIコードで直接ビット比較を行えば、この電力削減効果を最大限に活かすことができる。なぜなら、検索語の索引語の語長の違いによって、検索語の末尾の文字より以降に文字がある索引語に対しては必ず不一致となり、その位置のセグメントの電源をオフにすることができるからである。
以下に、本発明のいくつかの実施例について説明する。
【実施例1】
【0009】
第1の実施例では、先述の不揮発性TCAMの特徴を活かしつつ、文字列検索をハードウェア化することで生じる柔軟性の欠如を防止するための検索語や索引語のコード化の方法について説明する。ここでは、説明の便宜上、英数字等の半角文字のASCIIコードを用いる場合を例として説明を行う。
文字列検索を行う際に、異なる語長の文字列をどう取り扱うかといった課題が考えられる。例えば、索引語に「JAP」と「JAPAN」と「JAPANESE」が登録される場合を考える。検索語として、「JAPAN」と入力される場合、「JAPAN」の索引語のみを一致(ヒット)と判断するか(完全一致検索)、語長が異なるが「JAP」や「JAPANESE」も一致と見なすか(あいまい検索)の柔軟性を持たせることは重要である。また、検索語や索引語の最終文字を定義し、これら最終文字以降のコード(ビット)についてはビット比較を行わないようにして電力を削減する方式の提案も重要である。
これらの観点から、本第1の実施例によると、不揮発性TCAMに入力する検索語のコード、及び登録する索引語のコードは、以下のルールに従う。なお、以下の説明や図面において、具体的に例示するコードの末尾に”b”が付与される場合は2進表示、”h”が付与される場合は16進表示とする。検索語は、最終文字以降の空き文字に対して、最初の文字をNULLコード(00h)とし、次の文字を全て”Don‘t Care”で埋める。索引語は、最終文字以降の空き文字に対して、全ての文字をNULLコードで埋める。
図9は、上記ルールに従って「JAPAN」の文字列を検索する場合の一例を示す。ここで、不揮発性TCAMには、索引語1「JAP」、索引語2「JAPAN」、索引語3「JAPANESE」が登録されていると仮定する。空白文字は「NULL」(第1の特殊文字)を表し、「*」(第2の特殊文字)は「Don’t Care」を表わす。これは、”Don’t Care”される検索語の文字に対して、サーチ線SLと/SLの両方にローレベルの電圧を印加することに対応する。また、各索引語で網掛けの文字(例えば
図9(a)の索引語3の6文字目E)は不一致と判定される部分である。
図9(a)は、検索語「JAPAN」に対して、6文字目を「NULL」とし、7文字目以降を全て”Don’t Care”で埋めている。索引語2は語長も文字列パターンも完全に等しいので一致となる。索引語1と索引語3は、文字列パターンは類似しているものの、語長が異なるため不一致と判定される。例えば、索引語1では、4文字目と5文字目で不一致となる。これは、4文字目の「A」と「NULL」が不一致であり、5文字目の「N」と「NULL」も不一致であることが明白である。索引語3も、6文字目の「NULL」と「E」が不一致である。7文字目以降は、検索語が「Don‘t Care」で埋められているため評価されず、一致扱いになる。
しかしながら、検索語「JAPAN」に対して、「JAPAN」だけでなく、その形容詞である「JAPANESE」も一致させたい場合がある。これに対応させた例を、
図9(b)に示している。ここでは、検索語「JAPAN」に対し、6文字目から8文字目を「Don’t Care」とし、9文字目を「NULL」とし、10文字目以降を「Don’t Care」としている。この時、索引語3の6文字目の「E」、7文字目の「S」、8文字目の「E」は評価されず一致扱いとなり、9文字目の「NULL」が一致し、10文字目以降は評価されず一致扱いである。最終的に、不一致の文字は検出されずに一致と判定される。
検索語の末尾に「NULL」文字を追加することで、その前の文字が最終文字であることを示している。すなわち、検索語の末尾に「NULL」文字を追加することで、検索対象の文字列の範囲をフレキシブルに指定できる。また、その「NULL」文字の次の文字列を「Don‘t Care」で埋める理由は、検索語の語長を超える範囲の文字列は、ASCIIコードのビット比較を行う必要がないためである。先に述べたとおり、サーチ線SL、/SLはローベルのまま保持され、そのビットに該当する不揮発性TCAMセルは実質的に電源がオフのままであるから電力を消費しない利点がある。
次に、
図9の例において、セグメントとの関係を説明する。
図9では、検索語、及び索引語として登録できる文字列は16文字までと仮定している。すなわち、ワードあたり、16文字×8ビット=128ビットの不揮発性TCAMセルで構成される。128ビットのワードが、セグメント0からセグメント3の4つのセグメントに分割されていると仮定する。ここでは、説明の便宜上、文字単位(8ビット毎)にセグメントが分割されると仮定する。例えば、1文字目がセグメント0、2〜4文字目がセグメント1、5〜8文字目がセグメント2、9〜16文字目がセグメント3とする。最初に、全てのワードに対して、セグメント0の文字(1文字目)が評価される。
図9の例では、索引語1〜3において、1文字目が一致する。次にセグメント1(2〜4文字目)が評価される。索引語1〜3では先のセグメント0の文字が一致していたので評価される。もし、1文字目が「J」でない文字で始まる索引語があれば(不一致)、その検索語においてはセグメント1のTCAMセルの電源はオフのままで評価されず不一致のままである。さて、索引語1において、セグメント1に位置する文字は不一致となり、索引語2と3は一致である。次に、セグメント2(5〜8文字目)が評価される。索引語1のセグメント1は不一致であったので、セグメント2のTCAMセルの電源はオフのままで評価されず不一致のままである。索引語2と3のセグメント1は一致であったので、評価される。
図9(a)の例では、索引語2は一致、索引語3は不一致となる。次にセグメント3(9〜16文字)が評価される。索引語2のセグメント2は一致であったので、セグメント3のTCAMセルの電源はオンになる。一方、索引語3のセグメント2は不一致であったので、セグメント3のTCAMセルの電源はオフのままである。すなわち、セグメント3において、索引語2は評価され、索引語3は評価されない状態となる。しなしながら、セグメント3における検索語の文字は「Don’t Care」であり、索引語2のセグメント3は評価が省略される。このような電源制御が効率的に行われ、最終的に、索引語2のみが一致となり、索引語1と3が不一致と判断される。
以上説明した第1の実施例によれば、不揮発性TCAMを利用して、ASCIIコードのまま文字列検索を行うことで、動作電力を大幅に削減でき、高速に検索することが可能となる。尚、本第1の実施例は、要旨を逸脱しない範囲で当業者により適宜変更され得る。例えば、
図9の例では、文字列の末尾に「NULL」文字を付与したが、「NULL」文字以外の特殊文字を付与しても実質的に同様の機能と効果を実現できる。
【実施例2】
【0010】
本発明の第2の実施例では、文字列検索のハードウェア化による柔軟性の欠如を防止するため、索引語や検索語の文字コードをさらにコーディングする手法を組み込む点が第1の実施例と異なる。
例えば、英文検索を行う場合、大文字と小文字を区別せずに検索する場面が圧倒的に多い。本第2の実施例によれば、
図9(a)に示す方法で、大文字/小文字の区別をしない検索が実現される。幸いなことに、英文字のASCIIコードにおいて、大文字と小文字のコードは、最下位ビットから6ビット目が異なるだけである。例えば、「A」のASCIIコードは41hであり、「a」のASCIIコードは61hである。この性質を使って、検索語、あるいは索引語において、大文字/小文字の区別をしない文字の最下位ビットから6ビット目のみを「Don‘t Care」にすれば良い。
例えば、索引語に「JAPAN」、「japan」、「Japan」が登録されていると仮定する。
図10(a)のように、検索語の文字コードを「01*01010b_01*00001b_01*10000b_01*00001b_01*01110b_00000000b」のようにすれば大文字/小文字を区別しない検索が実行可能である(「b」は2進表示、「*」は「Don’t Care」のビットを表わす)。または、「Don’t Care」ビットを含むコードを索引語に適用しても大文字/小文字を区別しない検索が実行可能である(ただし、後者の場合は、予め大文字/小文字を区別せずに転置インデックスを作成しておく必要がある。)。
数字に対しても同様の方法で、正規表現的な検索を実施することが可能である。
図10(b)は、「2000」、「2001」、・・・、「2007」の文字列のいずれにもヒットさせたい場合の検索語(あるいは索引語)の文字コードを示した例である。
さらに、英文においては、単語には複数形、過去形、過去分詞形を区別しないで検索する場面も圧倒的に多い。例えば、「CAR」を検索する場合に、たまたま複数形の「CARS」が含まれる文書もヒットすることが実用上、望ましい。一手法として、検索語を「CAR*」として検索することが考えられる。しかしながら、もし索引語に「CARD」が登録されていると、これもヒットしてしまう。
図11は、検索精度を向上させるため、TCAM110の前段にコード変換部120を設けている。コード変換部120は、特定の文字のコードを、検索に都合の良いように変換する機能を有する。例えば、英単語の変形を考えると、複数形の典型的な変形は、語尾に「s」、あるいは「es」がつくことである。さらに、過去形の典型的な変形は、語尾に「ed」がつくことである。これより、
図12では、「s」、「e」、「d」とその大文字(特定の文字)を独自コードに変換したコーディング表を示している。語尾が「NULL」、すなわち単語が原形であってもヒットするように、独自コードは、「NULL」文字コードとのハミング距離が1であることが望ましい。例えば、文字「S」のASCIIコードは53hであるが、これを01hに変換する。そして、検索語、あるいは索引語の末尾に加える文字コードとして、「0000_000*」を付加する。
図13は、検索語「LOOK」に対し、「LOOK」だけでなく、「LOOKS」、「LOOKED」の索引語もヒットするように、
図12のコーディング表に基づいてコーディングした例を示している。ここで、大文字/小文字の区別をしないよう、検索語の文字列コードに「Don’t Care」のビットを取り入れている。索引語には「look」の文字列コードが登録されるが、このコードは
図13のようになる。すなわち、「look」の末尾の5文字目は、「NULL」と、「s」と「e」がヒットするように、「0000_00**b」のコードを登録する。6文字目は、「NULL」と「d」がヒットするように、「0000_0*00b」のコードを登録する。この結果、原形の「LOOK/look」だけでなく、その複数形、あるいは、三人称単数形の「LOOKS/looks」や、過去形、過去分詞形の「LOOKED/looked」もヒットさせることができる。
本第2の実施例によれば、検索精度を向上させる効果が得られる。さらに、1ワードあたりに表現できる文字列パターンを実質的に増やすことができるので、索引語に登録効率を向上させる効果も得られる。
【実施例3】
【0011】
本発明の第3の実施例では、セグメント分割による低消費電力効果を最大限にする様に、索引語や検索語の文字コードをビットスクランブル(シャッフル)する手法を組みこむ点が第1の実施例と異なる。
英文文書に含まれる単語は、アルファベット文字から始まる単語が圧倒的に多い。例えば、ASCIIコードにおいて、文字「A」から「Z」は41hから5Ahに割りつけられており、また、「a」から「z」は61hから7Ahに割りつけられている。すなわち、ASCIIコードの上位4ビットに注目すると、上記52文字のビットパターンに対して4値しかとらない。一方、下位4ビットは16値をとる。
このようなASCIIコードの特徴に着目して、本第3の実施例によれば、最初にビット比較が行われるセグメント0の領域にASCIIコードの下位ビットをアサインする。この様子を説明する図面が
図14である。
図14の例において、TCAMアレイ51’は左からセグメント0、セグメント1、セグメント2、・・・のように分割される。また、文字列検索はセグメント0から開始され、次にセグメント1、さらにセグメント2のビット比較が順次実行される。検索語、及び、索引語の文字列コードは、1文字目から左詰め、すなわちセグメント0から順にアサインされる。ここで、1文字目のコードに対しては、下位4ビットはセグメント0、上位4ビットはセグメント1に割り付けられる。2文字目の8ビットはセグメント2に割り付けられ、3文字目以降はセグメント3に割り付けられる。
1文字目の下位4ビットをセグメント0に割りつけることにより、最初のビット比較の段階でヒットする確率は、1/16程度にすることが期待できる。これは、上位4ビットをセグメント0に割りつけた場合に期待できるヒット確率1/4よりも小さいため、次のセグメント1の領域でビット比較をすべきワード数を削減できる効果がある。
以上のビットスクランブルは、ASCIIコードに対してサーチ線やビット線の割り付けを論理的にスクランブルすることで容易に実現できる。あるいは、第2の実施例で備えるコード変換部120(
図11)によっても容易に実現可能である。
本第3の実施例によれば、索引語や検索語の文字コードをビットスクランブルすることで、不揮発性TCAMのセグメント分割による低消費電力効果を最大化する効果が得られる。尚、矛盾しない限りにおいて、本第3の実施例と既出の実施例とを組み合わせることも可能である。
以上、本発明をその実施形態及びいくつかの実施例に基づいて説明したが、本発明は、上述の実施形態及び実施例に限定されず、要旨を逸脱しない範囲で適宜変更され得る。
例えば、抵抗変化素子として磁気抵抗素子を例示して説明したが、抵抗変化素子は、相変化素子、原子移動型素子、酸素欠損型抵抗変化素子、または金属架橋形成型抵抗変化素子で実現されても良い。
この出願は、2012年9月6日に出願された日本出願特願第2012−196031号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【符号の説明】
【0012】
21,41 CPU
22,44 メインメモリ
40 入力部
42 アクセラレータ
42−1 CAM
42−2 メモリ
43 ストレージ
51 TCAMアレイ
52 ワードドライブ
53 カラムドライブ
54 アドレスエンコーダ
55 文字列コード生成部