(57)【要約】全文検索システムは、不揮発性連想メモリとインデックス記憶部を含む文字列検索部を備える。転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶される。上記文字列検索部は、上記不揮発性連想メモリにおいて、入力部から入力された検索語に一致する索引語のコードが検出されると、その番地を基に上記インデックス記憶部を参昭して文書ＩＤをはじめとする関連情報を取り出す。
2014038306.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性連想メモリとインデックス記憶部を含む文字列検索部を含む全文検索システムであって、
定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶され、
上記文字列検索部は、上記不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書ＩＤをはじめとする関連情報を取り出すことを特徴とする全文検索システム。
【請求項２】
請求項１に記載の全文検索システムにおいて、
上記不揮発性連想メモリは、少なくとも２つの抵抗変化素子を含む基本セルを複数具備し、
索引語の文字列コードの各々のビットが、この基本セルに割りつけられ、
上記抵抗変化素子の抵抗値の組み合わせによって、索引語の文字列データのビット値「０」、「１」の他に、少なくともビット比較による評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）であることを示す情報が割りつけられることを特徴とする全文検索システム。
【請求項３】
請求項２に記載の全文検索システムにおいて、上記不揮発性連想メモリに入力される検索語の文字列コードの一部をビット比較による評価対象外にする機能を有し、
ビット比較による評価対象外に指定されたビットに関連する全ての基本セルの電源がオフの状態になることを特徴とする全文検索システム。
【請求項４】
請求項２に記載の全文検索システムにおいて、上記抵抗変化素子が磁気抵抗素子、または相変化素子、または原子移動型素子、または酸素欠損型抵抗変化素子、または金属架橋形成型抵抗変化素子であることを特徴とする全文検索システム。
【請求項５】
請求項１に記載の全文検索システムにおいて、上記不揮発性連想メモリは、検索語、及び索引語の文字列コードを生成する文字列コード生成部を具備し、
索引語を書き込む場合には、索引語の文字列の末尾以降を第１の特殊文字で補間し、
検索語を入力する場合には、検索対象の文字範囲の末尾に第２の特殊文字を追加し、残りの文字列は上記第１の特殊文字で補間することを特徴とする全文検索システム。
【請求項６】
請求項５に記載の全文検索システムにおいて、
上記文字列コード生成部は、ある特定の文字のコードに対して、その文字コードと上記第１の特殊文字のコードとのハミング距離が１になるようにコーディングする機能を有することを特徴とする全文検索システム。
【請求項７】
請求項５に記載の全文検索システムにおいて、
上記文字列コード生成部は、索引語、及び検索語の文字コードにおいて任意のビット単位で評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）にコーディングする機能を有する全文検索システム。
【請求項８】
請求項２に記載の全文検索システムにおいて、
上記不揮発性連想メモリには、索引語の文字コードが複数のセグメントに分割されて記憶され、
セグメント毎に逐次的に文字列比較され、
最初に評価されるセグメントに先頭文字が配置され、
先に評価されたセグメントの評価結果が、次のセグメントの評価に引き継がれることを特徴とする全文検索システム。
【請求項９】
請求項８に記載の全文検索システムにおいて、
先に評価されるセグメントにおいて一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオンにし、不一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオフにする電源制御が実施されることを特徴とする全文検索システム。
【請求項１０】
請求項８に記載の全文検索システムにおいて、
少なくとも先頭文字のコードが、ビットの並びを入れ替えるようにビットスクランブルされ、その一部が最初に評価されるセグメントにビットアサインされることを特徴とする全文検索システム。
【請求項１１】
不揮発性連想メモリを含む文字列検索部を含む全文検索システムの文字列比較方法であって、
上記不揮発性連想メモリに格納される索引語の文字列コードは、索引語の文字列の末尾以降を第１の特殊文字で補間され、
上記不揮発性連想メモリに入力される検索語の文字列コードは、検索対象の文字範囲の末尾に第２の特殊文字を追加し、残りの文字列は上記第１の特殊文字で補間されるように文字列コードを作成し、
この作成した文字列コードを用いて検索語と索引語の文字列を比較する文字列比較方法。
【請求項１２】
請求項１１に記載の全文検索システムの文字列比較方法であって、
ある特定の文字コードが、上記第１の特殊文字のコードとのハミング距離が１になるように文字列コードを変換し、
この変換した文字列コードを用いて検索語と索引語の文字列を比較する文字列比較方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連想メモリを利用した検索システム及びこれに用いる文字列比較方法に関する。
【背景技術】
【０００２】
Ｗｅｂ検索に代表されるように、ＩＣＴ（Ｉｎｆｏｒｍａｔｉｏｎ  ａｎｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）の普及により文字列（ワード）検索の機会が激増している。文字列の検索には、順次検索方式、転置検索方式がある。単一もしくは少数の文書の文字列を検索するような場合は主に順次検索方式が用いられる。大量の文書からキーワード（文字列）が含まれる文書を探し出すような検索を行う場合は主に転置検索方式が用いられる。
転置検索方式による文書検索については、例えば非特許文献１に開示されている。非特許文献１によると、転置検索方式では前処理として被検索（蓄積される）文書のインデックスを作成する。単純な検索においてはこの前処理の手間は無駄になるが、大量の文書から必要な文書を、キーワードを基に検索するシステムにおいてはインデックスの作成の手間は問題にならない。
これは、図１を参照して説明すると、例えば、１０００語で構成される文書でも、キーワードとなりえない語（例えば「。」、「、」のような句読点）はインデックスから排除でき、何度も使われる名詞（例えば風力発電に関連する文書中の「プロペラ」という語）は、インデックスのなかでは一つの索引語と出現文書ＩＤにまとめられるからである。図１は、転置検索方式による全文ワード検索における、索引語と文書ＩＤとインデックス及び入力キーワード（検索語）の関係を示す。
転置検索方式の場合、文書が更新されるたびにインデックスも改訂する必要があり、そのたびに前処理を行う必要があるなどの色々な制限や余分な手間が存在するものの、インデックスに格納された索引語をキーワードで検索する処理は、順次検索方式に比べて大幅に軽減される。
しかしながら、これらは全てソフトウェアで実現されていたので、多大の処理時間を要していた。これは、図２の検索システムを参照して説明すると、インデックスファイルが既にメインメモリ２２上に展開されていたとしても、この中から索引語をＣＰＵ２１にロード（図２のステップｂ）しレジスタに保存して、既にＣＰＵ２１内のレジスタに保存している検索語と比較（図２のステップｃ）する、という行為を索引語の数だけ繰り返すことになるためである。最終的に比較の結果、索引語と検索語が同一（図２のステップｄ）であれば、文書番号をロード（図２のステップｅ）し、それを基に何等かの処理（アブストラクトの表示など）をソフトウェア上で行うことになる。今般のコンピュータシステムは、実データ処理に必要な動的電力と同等の静的電力、即ち電源を入れておくだけで必要な待機電力があり、この遅い処理時間は問題であった。
一方、ハードウェアで単語を検索することについては、例えば辞書チップのようなもので、高速処理が可能であることが既に知られている。このような場合、連想メモリが使用される。連想メモリ（ＣＡＭ：Ｃｏｎｔｅｎｔ−Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）は、入力データと記憶データとの比較を行い、一致した記憶データの場所を出力する。
図３に示すように、例えば、日本語の単語「川」をＣＡＭに入力するとＨｉｔ０の信号が出力される。そのＨｉｔ信号がワード線として入力されるメモリアレイには翻訳語が格納されているので、「Ｒｉｖｅｒ」が出力される。このようにすると、日本語の入力から英語の出力が、ハードウェア上で得られることになり、ソフトウェアを介さないため、非常に高速であり、低消費電力で処理を実現できることがわかっていた。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ｇｏｏｇｌｅを支える技術〜巨大システムの内側の世界〜、西田圭祐著、技術評論社
【発明の概要】
【発明が解決しようとする課題】
【０００４】
文字列検索も専用ハードウェア化すれば、高速、且つ低消費電力で検索することが可能と考えられる。そこで、転置検索方式のハードウェア化を試みたいと考えるが、以下の課題があり実現されてこなかった。
一般的なハードウェア化に使われる連想メモリ、データ保持に静的メモリ（ＳＲＡＭ）が使われる一般的な連想メモリセル（ＣＡＭセル）は消費電力や面積が非常に大きく、大量のワードを登録するには難があった。また、ハードウェア化の一般的な欠点である柔軟性の欠如を防止する適切なインデックスの記憶方式やＣＡＭセルに適した記憶方式などが存在していなかった。
【課題を解決するための手段】
【０００５】
本発明の態様に係る全文検索システムは、不揮発性連想メモリとインデックス記憶部を含む文字列検索部を備える。本全文検索システムにおいては、定期的に作成される転置インデックスに対して、索引語の文字列コードが上記不揮発性連想メモリに記憶される。上記文字列検索部は、上記不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基に上記インデックス記憶部を参照して文書ＩＤをはじめとする関連情報を取り出す。
本発明の別の態様によれば、不揮発性連想メモリを含む文字列検索部を含む全文検索システムの文字列比較方法が提供される。本方法においては、上記不揮発性連想メモリに格納される索引語の文字列コードは、索引語の文字列の末尾以降を第１の特殊文字で補間され、上記不揮発性連想メモリに入力される検索語の文字列コードは、検索対象の文字範囲の末尾に第２の特殊文字を追加し、残りの文字列は上記第１の特殊文字で補間されるように文字列コードを作成し、この作成した文字列コードを用いて検索語と索引語の文字列を比較する。
【発明の効果】
【０００６】
本発明によれば、文字列検索が専用ハードウェア化されても柔軟性のある文字列検索が実施可能で、高速、且つ、低消費電力の全文検索システムが提供できる。
【図面の簡単な説明】
【０００７】
図１は、現状の転置検索方式による全文ワード検索を説明するための図であり、索引語と文書ＩＤとインデックス及び入力キーワード（検索語）の関係を示した図である。
図２は、現状のソフトウェアによる全文検索システムの処理の概略を説明するための図である。
図３は、現状の連想メモリを利用したワード検索の一例を説明するための図である。
図４は、本発明の実施形態に係る、不揮発性連想メモリを利用した全文検索システムの基本構成を示した図である。
図５は、図４に示した不揮発性連想メモリの基本構成を示した図である。
図６は、本発明の実施形態に係る、抵抗変化素子を利用した不揮発性連想メモリセルの一例を示した図である。
図７は、図６の不揮発性連想メモリセルにおける真理値表を示した図である。
図８は、図５の不揮発性連想メモリについて、索引コードをセグメント０〜セグメント３に４分割し、セグメント０から順次、ビット比較動作させた場合の電源制御の状況を示したイメージ図である。
図９は、本発明の第１の実施例に係る文字列検索方法の一例を説明するための図であり、「ＪＡＰＡＮ」の文字列を検索する場合の一例を説明するための図である。
図１０は、本発明の第２の実施例に係る文字列検索方法の一例を説明するための図である。
図１１は、本発明の第２の実施例に係る不揮発性連想メモリの別の形態を示した図である。
図１２は、本発明の第２の実施例に係る文字コード変換の一例を説明するための図である。
図１３は、本発明の第２の実施例に係る文字列検索方法の一例を説明するための図である。
図１４は、本発明の第３の実施例に係る文字列コードとセグメント割り付けの一例を説明するための図である。
【発明を実施するための形態】
【０００８】
後で詳しく説明されるように、本発明は、不揮発性連想メモリとインデックス記憶部を含む文字列検索部を備える全文検索システムに適用され得る。本全文検索システムにおいては、定期的に作成される転置インデックスに対して、索引語の文字列コードが不揮発性連想メモリに記憶される。文字列検索部は、不揮発性連想メモリにおいて、入力部から入力された検索語の文字列コードに一致する索引語が検出されると、その番地を基にインデックス記憶部を参照して文書ＩＤをはじめとする関連情報を取り出す。
後述される説明で明らかになるように、本全文検索システムは、以下のような態様で実現され得る。
不揮発性連想メモリは、少なくとも２つの抵抗変化素子を含む基本セルを複数具備し、索引語の文字列コードの各々のビットが、この基本セルに割りつけられ、抵抗変化素子の抵抗値の組み合わせによって、索引語の文字列データのビット値「０」、「１」の他に、少なくともビット比較による評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）であることを示す情報が割りつけられても良い。ここで、ビット比較による評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）であることを示す情報が割り付けられるというのは、３つ以上の状態を記憶できるＴＣＡＭセル内の抵抗変化素子の状態の一つがＤｏｎ‘ｔ  Ｃａｒｅに割りつけられることを意味する。
また、不揮発性連想メモリに入力される検索語の文字列コードの一部をビット比較による評価対象外にする機能を有しても良く、ビット比較による評価対象外に指定されたビットに関連する全ての基本セルの電源がオフの状態になるようにしても良い。
また、不揮発性連想メモリは、検索語、及び索引語の文字列コードを生成する文字列コード生成部を具備しても良く、索引語を書き込む場合には、索引語の文字列の末尾以降を第１の特殊文字で補間し、検索語を入力する場合には、検索対象の文字範囲の末尾に第２の特殊文字を追加し、残りの文字列は上記第１の特殊文字で補間するようにしても良い。
また、文字列コード生成部は、ある特定の文字のコードに対して、その文字コードと上記第１の特殊文字のコードとのハミング距離が１になるようにコーディングする機能を有しても良い。
また、上記文字列コード生成部は、索引語、及び検索語の文字コードにおいて任意のビット単位で評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）にコーディングする機能を有しても良い。ここで、評価対象外（Ｄｏｎ‘ｔ  Ｃａｒｅ）にコーディングするというのは、文字列コード生成部がＤｏｎ‘ｔ  Ｃａｒｅを含むコードを生成することを意味する。
また、不揮発性連想メモリは、索引語の文字コードが複数のセグメントに分割されて記憶され、セグメント毎に逐次的に文字列比較されることが望ましく、最初に評価されるセグメントに先頭文字が配置され、先に評価されたセグメントの評価結果が、次のセグメントの評価に引き継がれることが望ましい。
また、先に評価されるセグメントにおいて一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオンにし、不一致と判定されたワードに対しては、次に評価されるセグメントの基本セルの電源をオフにする電源制御が実施されることが望ましい。
また、少なくとも先頭文字のコードが、ビットの並びを入れ替えるビットスクランブルされ、その一部が最初に評価されるセグメントにビットアサインされることが望ましい。
以下、図面を参照しながら本発明の実施形態について説明する。
図４は、本発明の実施形態に係る、不揮発性連想メモリを利用した全文検索システムの基本構成図である。ＣＰＵ（制御部）４１は、キーボード等の入力部４０から入力された検索語を、文字列データのまま、全文検索専用にハードウェア化されたアクセラレータ４２に渡す。アクセラレータ（文字列検索部）４２は、インデックス情報を格納しており、入力された検索語がどの文書に含まれるかを検索する機能を有する。インデックスは、索引語、文書ＩＤ、索引語の位置や重要度等の関連情報を含むテーブルである。インデックスは、定期的に更新され、バックアップのためにストレージ４３に蓄えられると共に、アクセラレータ４２に転送される。
アクセラレータ４２は、索引語を記憶する不揮発性連想メモリ（ＣＡＭ）４２−１と、文書ＩＤや関連情報等を記憶するメモリ（インデックス記憶部）４２−２を具備している。索引語にバイナリコードのＩＤを付与する従来の方法と異なり、ＣＡＭ４２−１には、大量の索引語が文字列データのまま記憶されている。ここでは、説明の便宜上、索引語の文字列データが半角（英数字）のＡＳＣＩＩコードで扱われると仮定して説明を行う。
ＣＡＭ４２−１は、ＡＳＣＩＩコードで入力された検索語と、ＣＡＭ４２−１に登録される索引語とを一括で照合し、その検索語が見つかった（ヒットした）ワードＩＤを返す。このワードＩＤを使ってメモリ４２−２を読み出すことで、アクセラレータ４２により、入力された検索語を含む文書ＩＤや関連情報を瞬時に取り出すことができる。この実施形態による全文検索システムによれば、メインメモリ４４を照合しながらＣＰＵ４１で検索する一般的な方法に比べて格段に高速な検索動作を実現することが可能である。さらに、不揮発性のＣＡＭ４２−１を利用することで、消費電力と面積コストも大幅に削減することが期待できる。
図５は、本実施形態に係る不揮発性ＣＡＭ（図４のＣＡＭ４２−１に対応）の基本構成を示している。不揮発性ＣＡＭ５０は、例えば、図６に示すようなＣＡＭセル６０がマトリックス状に配置されたセルアレイ（ＴＣＡＭアレイ）５１を形成している。セルアレイ５１周辺には、検索動作やＣＡＭセルに索引語を書き込む動作を制御するワードドライブ５２、カラムドライブ５３、アドレスエンコーダ５４がさらに具備されている。また、セルアレイ５１において、複数のＣＡＭセルから構成される一行はワード回路と呼ばれ、索引語のＡＳＣＩＩコードが格納される。また、セルアレイ５１は複数のセグメントに分割されており、セグメント毎に独立して検索動作を実行することが可能である。
不揮発性ＣＡＭ５０はまた、カラムドライブ５３の入力側に、文字コードの入力を受けて検索語、及び索引語の文字列コードを生成する文字列コード生成部５５を具備する。後で説明されるように、文字列コード生成部５５は、索引語を書き込む場合には、索引語の文字列の末尾以降を第１の特殊文字で補間し、検索語を入力する場合には、検索対象の文字範囲の末尾に第２の特殊文字を追加し、残りの文字列は上記第１の特殊文字で補間する機能を持つ。
図６に示すＣＡＭセル６０は、２値の抵抗値を取りうる抵抗変化素子が組み込まれている。ここでは、抵抗変化素子としてＭＴＪ（Ｍａｇｎｅｔｉｃ  Ｔｕｎｎｅｌ  Ｊｕｎｃｔｉｏｎ）素子と呼ばれる磁気抵抗素子（Ｒｊ、Ｒｊｂ）が使用されると仮定して説明する。
ＣＡＭセル６０は、磁気抵抗素子Ｒｊ、Ｒｊｂのペアを含む比較回路、比較結果をマッチ線ＭＬに伝送する伝送部、磁気抵抗素子Ｒｊ、Ｒｊｂに書き込み電流を供給するための電流スイッチから構成される。比較回路は、トランジスタＭ１、Ｍ２、Ｍ５と、磁気抵抗素子Ｒｊ、Ｒｊｂから構成される。伝送部はダイオード接続されたトランジスタＭ６で構成される。電流スイッチはトランジスタＭ３、Ｍ４で実現される。
上記比較回路は、トランジスタＭ１のゲートにサーチ線ＳＬが接続され、トランジスタＭ２のゲートにサーチ線／ＳＬ（／はＳＬの反転を意味する）が接続されている。また、トランジスタＭ１のソース端子ｎ２に磁気抵抗素子Ｒｊの一方の端子が接続され、トランジスタＭ２のソース端子ｎ３に磁気抵抗素子Ｒｊｂの一方の端子が接続されている。また、トランジスタＭ５は、そのゲートにバイアス電圧Ｖｂが印加される定電流源であり、トランジスタＭ５のソース端子は電圧Ｖ＿Ｖｄｄ、ドレイン端子ｎ１は、トランジスタＭ１、Ｍ２のドレイン端子が共通に接続されている。また、磁気抵抗素子Ｒｊのもう一方の端子と、磁気抵抗素子Ｒｊｂのもう一方の端子とが共にプレート線ＰＬに接続されている。
上記伝送部であるダイオード接続されたトランジスタＭ６は、そのソース端子が端子ｎ１に、ドレイン端子とゲート端子がマッチ線ＭＬに接続されている。
上記電流スイッチであるトランジスタＭ３及びＭ４のゲートにワード線ＷＬが接続されている。また、トランジスタＭ３のソース端子がビット線ＢＬに接続され、ドレイン端子が端子ｎ２に接続されている。一方、トランジスタＭ４のソース端子がビット線／ＢＬに接続され、ドレイン端子が端子ｎ３に接続されている。磁気抵抗素子に被検索データを書き込む際に、ワード線ＷＬを活性化してトランジスタＭ３、Ｍ４をオンの状態にすることで、ビット線ＢＬ、／ＢＬあるいはプレート線ＰＬから磁気抵抗素子に書き込み電流を供給可能とする。
２つの磁気抵抗素子Ｒｊ、Ｒｊｂには、索引語コードの１ビットの情報が格納される。索引語コードのビットの値が「０」の時、磁気抵抗素子Ｒｊは低抵抗状態（ＲＬ）で、磁気抵抗素子Ｒｊｂは高抵抗状態（ＲＨ）にする。索引語コードのビットの値が「１」の時は、磁気抵抗素子Ｒｊは高抵抗状態で、磁気抵抗素子Ｒｊｂは低抵抗状態にする。このように、検索語コードを抵抗値で記憶するため、電源を切断しても一旦登録した検索語を失うことの無い不揮発性ＣＡＭを実現できる。
検索動作時において、サーチ線ＳＬと／ＳＬには検索語コードの１ビットの値に対応した電圧がカラムドライブ５３（図５）によって印加される。検索語コードのビットの値が「０」の時、サーチ線ＳＬにローレベルＬ、サーチ線／ＳＬにハイレベルＨの電圧が印加される。一方、索引語コードのビットの値が「１」の時は、サーチ線ＳＬにハイレベルＨ、サーチ線／ＳＬにローレベルＬの電圧が印加される。従って、この不揮発性ＣＡＭセル６０の真理値表は図７のようになる。
図７を参照して、検索語コードのあるビットが「０」（検索情報「０」）で、そのビットに対応する索引語コードのビットも「０」（記憶情報「０」）であれば、トランジスタＭ２がオンになって磁気抵抗素子Ｒｊｂの抵抗値が評価され、磁気抵抗素子Ｒｊｂは高抵抗状態ＲＨであるからマッチ線ＭＬはハイレベルＨになる。この状態を「一致」、あるいは「ヒットした」（Ｈｉｔ）と言う。検索語のビットが「０」で、索引語のビットが「１」（記憶情報「１」）の時は、磁気抵抗素子Ｒｊｂの抵抗値が低抵抗状態ＲＬなのでマッチ線ＭＬはローレベルＬになる。この状態を「不一致」、あるいは「ミスした」（Ｍｉｓｓ）と言う。検索語のビットが「１」（検索情報「１」）で、索引語のビットが「０」の時は、トランジスタＭ１がオンになって磁気抵抗素子Ｒｊの抵抗値が評価され、磁気抵抗素子Ｒｊは低抵抗状態ＲＬであるから不一致となる。検索語のビットが「１」で、索引語のビットも「１」の時は、磁気抵抗素子Ｒｊの抵抗値が高抵抗状態ＲＨなので一致となる。
本ＣＡＭセルの更なる特徴としては、磁気抵抗素子としてＭＴＪ素子を２つ備えることを利用して、ビットの値「０」、「１」以外の状態を格納することが可能である。例えば、磁気抵抗素子ＲｊとＲｊｂの両方を高抵抗状態ＲＨにすれば、サーチ線ＳＬ、／ＳＬの状態に依らず常に「一致」を出力する。この状態は索引語コードの該当ビットを評価しないことを意味し（”Ｄｏｎ‘ｔ  Ｃａｒｅ”と言う）、図７では”Ｘ”で記載している。逆に、磁気抵抗素子ＲｊとＲｊｂの両方を低抵抗状態ＲＬにすれば、サーチ線ＳＬ、／ＳＬの状態に依らずＳＬ、／ＳＬのどちらか一方がハイレベルであれば強制的に「不一致」を出力する。サーチ線側も同様で、サーチ線ＳＬと／ＳＬの両方をローレベルにすると、磁気抵抗素子ＲｊとＲｊｂの記憶状態に依らず常に「一致」を出力する。すなわち、検索語コードの該当ビットを評価しないことを意味する。検索語コードの”Ｄｏｎ’ｔ  Ｃａｒｅ”を、サーチ線ＳＬと／ＳＬの両方をローレベルに割りつけることは、消費電力の観点から重要な意味を持つ。この時、トランジスタＭ１とＭ２の両方がオフの状態になり、ビット比較動作に必要な電流パスを遮断する。これは、評価する必要の無いビットに対してビット比較動作を停止することと等価であり、無駄な消費電力を削減できる。
このように、本実施形態に係る不揮発性ＣＡＭセルは、３つ以上の状態を記憶できる。これは、２つの状態を記憶できるＣＡＭセルと区別して、ＴＣＡＭ（Ｔｅｒｎａｒｙ  ＣＡＭ）セルと呼ばれる。従来のＴＣＡＭセルは、２つのＳＲＡＭセルを含む１４〜１６個のトランジスタで構成される。一方、本実施形態に係るＴＣＡＭセルは、６つのトランジスタと２つのＭＴＪ素子で構成できる。ＭＴＪ素子はトランジスタの上の配線層に形成可能であり、実質的な面積コストは６個のトランジスタ分のみで済む。
さらに、本実施形態に係る不揮発性ＴＣＡＭにおいては、セルの電源を切断しても索引語が失われずに残るメリットがある。これは、検索動作が不要な時に、全索引語データをストレージに退避することなく、こまめに電源をオフすることが容易になる利点がある。さらに、検索動作時においても、一旦、不一致と判定されたビット以降の残りビットに対してはビット比較する必要はない。よって、残りのビットの電源をオフにして動作電力と静的電力（待機電力）の両方を削減することができる。
例えば、索引語コードを複数のセグメントに分割し、セグメント毎に時分割でビット比較動作させ、先のセグメントの比較動作で不一致と判定されたワードに対しては、次のセグメントの電源を切断し、比較動作を停止させる制御を実施できる。
図８は、本実施形態に係る不揮発性連想メモリについて、索引コードをセグメント０〜セグメント３に４分割し、セグメント０から順次、ビット比較動作させた場合の電源制御の状況を示したイメージ図である。ここで、索引語、及び検索語は、文字列の先頭がセグメント０に割りつけられる。ワード０に着目すると、セグメント０のビット比較動作で不一致となったため、セグメント１以降は電源が切断され、ビット比較動作が省略される。本実施形態のように、ＡＳＣＩＩコードで直接ビット比較を行えば、この電力削減効果を最大限に活かすことができる。なぜなら、検索語の索引語の語長の違いによって、検索語の末尾の文字より以降に文字がある索引語に対しては必ず不一致となり、その位置のセグメントの電源をオフにすることができるからである。
以下に、本発明のいくつかの実施例について説明する。
【実施例１】
【０００９】
第１の実施例では、先述の不揮発性ＴＣＡＭの特徴を活かしつつ、文字列検索をハードウェア化することで生じる柔軟性の欠如を防止するための検索語や索引語のコード化の方法について説明する。ここでは、説明の便宜上、英数字等の半角文字のＡＳＣＩＩコードを用いる場合を例として説明を行う。
文字列検索を行う際に、異なる語長の文字列をどう取り扱うかといった課題が考えられる。例えば、索引語に「ＪＡＰ」と「ＪＡＰＡＮ」と「ＪＡＰＡＮＥＳＥ」が登録される場合を考える。検索語として、「ＪＡＰＡＮ」と入力される場合、「ＪＡＰＡＮ」の索引語のみを一致（ヒット）と判断するか（完全一致検索）、語長が異なるが「ＪＡＰ」や「ＪＡＰＡＮＥＳＥ」も一致と見なすか（あいまい検索）の柔軟性を持たせることは重要である。また、検索語や索引語の最終文字を定義し、これら最終文字以降のコード（ビット）についてはビット比較を行わないようにして電力を削減する方式の提案も重要である。
これらの観点から、本第１の実施例によると、不揮発性ＴＣＡＭに入力する検索語のコード、及び登録する索引語のコードは、以下のルールに従う。なお、以下の説明や図面において、具体的に例示するコードの末尾に”ｂ”が付与される場合は２進表示、”ｈ”が付与される場合は１６進表示とする。検索語は、最終文字以降の空き文字に対して、最初の文字をＮＵＬＬコード（００ｈ）とし、次の文字を全て”Ｄｏｎ‘ｔ  Ｃａｒｅ”で埋める。索引語は、最終文字以降の空き文字に対して、全ての文字をＮＵＬＬコードで埋める。
図９は、上記ルールに従って「ＪＡＰＡＮ」の文字列を検索する場合の一例を示す。ここで、不揮発性ＴＣＡＭには、索引語１「ＪＡＰ」、索引語２「ＪＡＰＡＮ」、索引語３「ＪＡＰＡＮＥＳＥ」が登録されていると仮定する。空白文字は「ＮＵＬＬ」（第１の特殊文字）を表し、「＊」（第２の特殊文字）は「Ｄｏｎ’ｔ  Ｃａｒｅ」を表わす。これは、”Ｄｏｎ’ｔ  Ｃａｒｅ”される検索語の文字に対して、サーチ線ＳＬと／ＳＬの両方にローレベルの電圧を印加することに対応する。また、各索引語で網掛けの文字（例えば図９（ａ）の索引語３の６文字目Ｅ）は不一致と判定される部分である。
図９（ａ）は、検索語「ＪＡＰＡＮ」に対して、６文字目を「ＮＵＬＬ」とし、７文字目以降を全て”Ｄｏｎ’ｔ  Ｃａｒｅ”で埋めている。索引語２は語長も文字列パターンも完全に等しいので一致となる。索引語１と索引語３は、文字列パターンは類似しているものの、語長が異なるため不一致と判定される。例えば、索引語１では、４文字目と５文字目で不一致となる。これは、４文字目の「Ａ」と「ＮＵＬＬ」が不一致であり、５文字目の「Ｎ」と「ＮＵＬＬ」も不一致であることが明白である。索引語３も、６文字目の「ＮＵＬＬ」と「Ｅ」が不一致である。７文字目以降は、検索語が「Ｄｏｎ‘ｔ  Ｃａｒｅ」で埋められているため評価されず、一致扱いになる。
しかしながら、検索語「ＪＡＰＡＮ」に対して、「ＪＡＰＡＮ」だけでなく、その形容詞である「ＪＡＰＡＮＥＳＥ」も一致させたい場合がある。これに対応させた例を、図９（ｂ）に示している。ここでは、検索語「ＪＡＰＡＮ」に対し、６文字目から８文字目を「Ｄｏｎ’ｔ  Ｃａｒｅ」とし、９文字目を「ＮＵＬＬ」とし、１０文字目以降を「Ｄｏｎ’ｔ  Ｃａｒｅ」としている。この時、索引語３の６文字目の「Ｅ」、７文字目の「Ｓ」、８文字目の「Ｅ」は評価されず一致扱いとなり、９文字目の「ＮＵＬＬ」が一致し、１０文字目以降は評価されず一致扱いである。最終的に、不一致の文字は検出されずに一致と判定される。
検索語の末尾に「ＮＵＬＬ」文字を追加することで、その前の文字が最終文字であることを示している。すなわち、検索語の末尾に「ＮＵＬＬ」文字を追加することで、検索対象の文字列の範囲をフレキシブルに指定できる。また、その「ＮＵＬＬ」文字の次の文字列を「Ｄｏｎ‘ｔ  Ｃａｒｅ」で埋める理由は、検索語の語長を超える範囲の文字列は、ＡＳＣＩＩコードのビット比較を行う必要がないためである。先に述べたとおり、サーチ線ＳＬ、／ＳＬはローベルのまま保持され、そのビットに該当する不揮発性ＴＣＡＭセルは実質的に電源がオフのままであるから電力を消費しない利点がある。
次に、図９の例において、セグメントとの関係を説明する。図９では、検索語、及び索引語として登録できる文字列は１６文字までと仮定している。すなわち、ワードあたり、１６文字×８ビット＝１２８ビットの不揮発性ＴＣＡＭセルで構成される。１２８ビットのワードが、セグメント０からセグメント３の４つのセグメントに分割されていると仮定する。ここでは、説明の便宜上、文字単位（８ビット毎）にセグメントが分割されると仮定する。例えば、１文字目がセグメント０、２〜４文字目がセグメント１、５〜８文字目がセグメント２、９〜１６文字目がセグメント３とする。最初に、全てのワードに対して、セグメント０の文字（１文字目）が評価される。
図９の例では、索引語１〜３において、１文字目が一致する。次にセグメント１（２〜４文字目）が評価される。索引語１〜３では先のセグメント０の文字が一致していたので評価される。もし、１文字目が「Ｊ」でない文字で始まる索引語があれば（不一致）、その検索語においてはセグメント１のＴＣＡＭセルの電源はオフのままで評価されず不一致のままである。さて、索引語１において、セグメント１に位置する文字は不一致となり、索引語２と３は一致である。次に、セグメント２（５〜８文字目）が評価される。索引語１のセグメント１は不一致であったので、セグメント２のＴＣＡＭセルの電源はオフのままで評価されず不一致のままである。索引語２と３のセグメント１は一致であったので、評価される。
図９（ａ）の例では、索引語２は一致、索引語３は不一致となる。次にセグメント３（９〜１６文字）が評価される。索引語２のセグメント２は一致であったので、セグメント３のＴＣＡＭセルの電源はオンになる。一方、索引語３のセグメント２は不一致であったので、セグメント３のＴＣＡＭセルの電源はオフのままである。すなわち、セグメント３において、索引語２は評価され、索引語３は評価されない状態となる。しなしながら、セグメント３における検索語の文字は「Ｄｏｎ’ｔ  Ｃａｒｅ」であり、索引語２のセグメント３は評価が省略される。このような電源制御が効率的に行われ、最終的に、索引語２のみが一致となり、索引語１と３が不一致と判断される。
以上説明した第１の実施例によれば、不揮発性ＴＣＡＭを利用して、ＡＳＣＩＩコードのまま文字列検索を行うことで、動作電力を大幅に削減でき、高速に検索することが可能となる。尚、本第１の実施例は、要旨を逸脱しない範囲で当業者により適宜変更され得る。例えば、図９の例では、文字列の末尾に「ＮＵＬＬ」文字を付与したが、「ＮＵＬＬ」文字以外の特殊文字を付与しても実質的に同様の機能と効果を実現できる。
【実施例２】
【００１０】
本発明の第２の実施例では、文字列検索のハードウェア化による柔軟性の欠如を防止するため、索引語や検索語の文字コードをさらにコーディングする手法を組み込む点が第１の実施例と異なる。
例えば、英文検索を行う場合、大文字と小文字を区別せずに検索する場面が圧倒的に多い。本第２の実施例によれば、図９（ａ）に示す方法で、大文字／小文字の区別をしない検索が実現される。幸いなことに、英文字のＡＳＣＩＩコードにおいて、大文字と小文字のコードは、最下位ビットから６ビット目が異なるだけである。例えば、「Ａ」のＡＳＣＩＩコードは４１ｈであり、「ａ」のＡＳＣＩＩコードは６１ｈである。この性質を使って、検索語、あるいは索引語において、大文字／小文字の区別をしない文字の最下位ビットから６ビット目のみを「Ｄｏｎ‘ｔ  Ｃａｒｅ」にすれば良い。
例えば、索引語に「ＪＡＰＡＮ」、「ｊａｐａｎ」、「Ｊａｐａｎ」が登録されていると仮定する。図１０（ａ）のように、検索語の文字コードを「０１＊０１０１０ｂ＿０１＊００００１ｂ＿０１＊１００００ｂ＿０１＊００００１ｂ＿０１＊０１１１０ｂ＿００００００００ｂ」のようにすれば大文字／小文字を区別しない検索が実行可能である（「ｂ」は２進表示、「＊」は「Ｄｏｎ’ｔ  Ｃａｒｅ」のビットを表わす）。または、「Ｄｏｎ’ｔ  Ｃａｒｅ」ビットを含むコードを索引語に適用しても大文字／小文字を区別しない検索が実行可能である（ただし、後者の場合は、予め大文字／小文字を区別せずに転置インデックスを作成しておく必要がある。）。
数字に対しても同様の方法で、正規表現的な検索を実施することが可能である。図１０（ｂ）は、「２０００」、「２００１」、・・・、「２００７」の文字列のいずれにもヒットさせたい場合の検索語（あるいは索引語）の文字コードを示した例である。
さらに、英文においては、単語には複数形、過去形、過去分詞形を区別しないで検索する場面も圧倒的に多い。例えば、「ＣＡＲ」を検索する場合に、たまたま複数形の「ＣＡＲＳ」が含まれる文書もヒットすることが実用上、望ましい。一手法として、検索語を「ＣＡＲ＊」として検索することが考えられる。しかしながら、もし索引語に「ＣＡＲＤ」が登録されていると、これもヒットしてしまう。
図１１は、検索精度を向上させるため、ＴＣＡＭ１１０の前段にコード変換部１２０を設けている。コード変換部１２０は、特定の文字のコードを、検索に都合の良いように変換する機能を有する。例えば、英単語の変形を考えると、複数形の典型的な変形は、語尾に「ｓ」、あるいは「ｅｓ」がつくことである。さらに、過去形の典型的な変形は、語尾に「ｅｄ」がつくことである。これより、図１２では、「ｓ」、「ｅ」、「ｄ」とその大文字（特定の文字）を独自コードに変換したコーディング表を示している。語尾が「ＮＵＬＬ」、すなわち単語が原形であってもヒットするように、独自コードは、「ＮＵＬＬ」文字コードとのハミング距離が１であることが望ましい。例えば、文字「Ｓ」のＡＳＣＩＩコードは５３ｈであるが、これを０１ｈに変換する。そして、検索語、あるいは索引語の末尾に加える文字コードとして、「００００＿０００＊」を付加する。
図１３は、検索語「ＬＯＯＫ」に対し、「ＬＯＯＫ」だけでなく、「ＬＯＯＫＳ」、「ＬＯＯＫＥＤ」の索引語もヒットするように、図１２のコーディング表に基づいてコーディングした例を示している。ここで、大文字／小文字の区別をしないよう、検索語の文字列コードに「Ｄｏｎ’ｔ  Ｃａｒｅ」のビットを取り入れている。索引語には「ｌｏｏｋ」の文字列コードが登録されるが、このコードは図１３のようになる。すなわち、「ｌｏｏｋ」の末尾の５文字目は、「ＮＵＬＬ」と、「ｓ」と「ｅ」がヒットするように、「００００＿００＊＊ｂ」のコードを登録する。６文字目は、「ＮＵＬＬ」と「ｄ」がヒットするように、「００００＿０＊００ｂ」のコードを登録する。この結果、原形の「ＬＯＯＫ／ｌｏｏｋ」だけでなく、その複数形、あるいは、三人称単数形の「ＬＯＯＫＳ／ｌｏｏｋｓ」や、過去形、過去分詞形の「ＬＯＯＫＥＤ／ｌｏｏｋｅｄ」もヒットさせることができる。
本第２の実施例によれば、検索精度を向上させる効果が得られる。さらに、１ワードあたりに表現できる文字列パターンを実質的に増やすことができるので、索引語に登録効率を向上させる効果も得られる。
【実施例３】
【００１１】
本発明の第３の実施例では、セグメント分割による低消費電力効果を最大限にする様に、索引語や検索語の文字コードをビットスクランブル（シャッフル）する手法を組みこむ点が第１の実施例と異なる。
英文文書に含まれる単語は、アルファベット文字から始まる単語が圧倒的に多い。例えば、ＡＳＣＩＩコードにおいて、文字「Ａ」から「Ｚ」は４１ｈから５Ａｈに割りつけられており、また、「ａ」から「ｚ」は６１ｈから７Ａｈに割りつけられている。すなわち、ＡＳＣＩＩコードの上位４ビットに注目すると、上記５２文字のビットパターンに対して４値しかとらない。一方、下位４ビットは１６値をとる。
このようなＡＳＣＩＩコードの特徴に着目して、本第３の実施例によれば、最初にビット比較が行われるセグメント０の領域にＡＳＣＩＩコードの下位ビットをアサインする。この様子を説明する図面が図１４である。図１４の例において、ＴＣＡＭアレイ５１’は左からセグメント０、セグメント１、セグメント２、・・・のように分割される。また、文字列検索はセグメント０から開始され、次にセグメント１、さらにセグメント２のビット比較が順次実行される。検索語、及び、索引語の文字列コードは、１文字目から左詰め、すなわちセグメント０から順にアサインされる。ここで、１文字目のコードに対しては、下位４ビットはセグメント０、上位４ビットはセグメント１に割り付けられる。２文字目の８ビットはセグメント２に割り付けられ、３文字目以降はセグメント３に割り付けられる。
１文字目の下位４ビットをセグメント０に割りつけることにより、最初のビット比較の段階でヒットする確率は、１／１６程度にすることが期待できる。これは、上位４ビットをセグメント０に割りつけた場合に期待できるヒット確率１／４よりも小さいため、次のセグメント１の領域でビット比較をすべきワード数を削減できる効果がある。
以上のビットスクランブルは、ＡＳＣＩＩコードに対してサーチ線やビット線の割り付けを論理的にスクランブルすることで容易に実現できる。あるいは、第２の実施例で備えるコード変換部１２０（図１１）によっても容易に実現可能である。
本第３の実施例によれば、索引語や検索語の文字コードをビットスクランブルすることで、不揮発性ＴＣＡＭのセグメント分割による低消費電力効果を最大化する効果が得られる。尚、矛盾しない限りにおいて、本第３の実施例と既出の実施例とを組み合わせることも可能である。
以上、本発明をその実施形態及びいくつかの実施例に基づいて説明したが、本発明は、上述の実施形態及び実施例に限定されず、要旨を逸脱しない範囲で適宜変更され得る。
例えば、抵抗変化素子として磁気抵抗素子を例示して説明したが、抵抗変化素子は、相変化素子、原子移動型素子、酸素欠損型抵抗変化素子、または金属架橋形成型抵抗変化素子で実現されても良い。
この出願は、２０１２年９月６日に出願された日本出願特願第２０１２−１９６０３１号を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【符号の説明】
【００１２】
２１，４１    ＣＰＵ
２２，４４    メインメモリ
４０    入力部
４２    アクセラレータ
４２−１    ＣＡＭ
４２−２    メモリ
４３    ストレージ
５１    ＴＣＡＭアレイ
５２    ワードドライブ
５３    カラムドライブ
５４    アドレスエンコーダ
５５    文字列コード生成部
【図１】
2014038306.tif 000003
【図２】
2014038306.tif 000004
【図３】
2014038306.tif 000005
【図４】
2014038306.tif 000006
【図５】
2014038306.tif 000007
【図６】
2014038306.tif 000008
【図７】
2014038306.tif 000009
【図８】
2014038306.tif 000010
【図９】
2014038306.tif 000011
【図１０】
2014038306.tif 000012
【図１１】
2014038306.tif 000013
【図１２】
2014038306.tif 000014
【図１３】
2014038306.tif 000015
【図１４】
2014038306.tif 000016
【国際調査報告】
2014038306.tif 000017
2014038306.tif 000018
2014038306.tif 000019
2014038306.tif 000020