連想メモリ装置におけるドントケア格納、検索方法
【課題】2値を扱う連想メモリ装置を用いて、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索ができるようにする。
【解決手段】任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納する。特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について同様の検索を行う。
【解決手段】任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納する。特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について同様の検索を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2値データの記憶、検索が可能な連想メモリ装置におけるドントケアデータの格納、検索方法に関するものである。
【背景技術】
【0002】
連想メモリ装置は、検索ワードを入力してこれと一致する記憶ワードを検索し、そのアドレスを出力する装置である。連想メモリ装置には、検索ワードの全ビット一致検索機能およびビットマスク付きデータ検索機能をもつBCAM(Binary CAM)と、BCAMの機能に加えて、記憶ワードの一部に一致検索のマスク情報(ドントケアデータ)を持たせて検索データの部分一致機能を実現するTCAM(Ternary CAM)がある。
【0003】
図7(a)にBCAMの記憶セルを示し、図7(b)にTCAMの記憶セルを示し、図7(c)にTCAMの検索内容を示す。図7(a)、(b)において、K,/Kはビット線、MLは一致線、50はBCAMの記憶セル、51はRAMセル、60はTCAMの記憶セル、61,62はRAMセルである。ワード線は省略した。図7(b)のTCAMでは、ドントケアデータの格納、検索を行うため、記憶素子に「0」、「1」、「ドントケア」の3状態を記憶する必要がある(図7(c)では「ドントケア」を「×」で示した)ため、図7(a)に示したBCAMの2ビット分に相当するRAMセル61,62が必要となる。つまり、「0」=「01」、「1」=「10」、「×」=「00」で記憶する必要がある。TCAMについては、非特許文献1に記載がある。
【0004】
【非特許文献1】Igor Arsovski,et al.,"A Ternary Content-Addressable Memory(TCAM) Based on 4T Static Storage and Including a Current-Race Sensing Scheme",IEEE Journal of Solid-State Circuit,Vol.38,No.1,pp.155-158(2003).
【発明の開示】
【発明が解決しようとする課題】
【0005】
このように、TCAMでは、ドントケアデータを格納、検索するために必要となるRAMセル数がBCAMの場合の2倍となり、ハードウェアの増大あるいは集積可能な記憶容量の減少といった課題がある。また、検索の対象とするワードが記号列の場合、すなわち複数のビット単位で検索を行い、またドントケアの設定を行う場合においても、従来のTCAMを用いる場合は、全ビットを3値化する必要があり、ハードウェアの増大を避けることができない。
【0006】
本発明の目的は、2値データの記憶、検索が可能な連想メモリ装置を用いて、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索ができるようにすることである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、請求項1にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とする。
請求項2にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とする。
【発明の効果】
【0008】
本発明によれば、任意のビット数で構成される記号を複数直列に並べて特定のワードを構成するとき、該ワードの一部を構成する確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加するので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索および最長一致検索ができるようになる。
【発明を実施するための最良の形態】
【0009】
本発明ではワードを複数の記号を直列に並べた構造とし、ドントケア格納方法として、ワードの一部を構成する記号が確定記号の場合は、たとえば、データ末尾に0を付加して、記法は<コード|0>とする。「コード」は確定記号である。また、記号がドントケアの場合は、たとえば、データ末尾に1を付加して、記法は<XXXX|1>とする。「XXXX」は任意の記号(ドントケア)を取り得ることを示す。なお、確定記号、ドントケアのいずれに0又は1を付与するかは任意である。また、その付加位置はデータ末尾に限られるものではない。
【0010】
ドントケアを含むエントリーデータの検索方法では、検索対象のワードには、検索対象フラグ(たとえば先頭に1)を付与する。その記法は、たとえば、1である。なお、フラグの値や位置は一例である。また、検索は記号の直列並びの順に行う。さらに、1つの記号フィールドについての検索は、検索対象フラグを先頭に付け加えた<1>、<|コード|0>で第1の検索を行い、<1>、<−|1>で第2の検索を行い、両検索結果をORで求め、且つ非選択データの検索対象フラグに、たとえば、0を書き込む。記号が複数直列並びであるときは、最終の記号のOR検索を終了した時点で得られた結果が、最終検索結果となる。この検索方法についての詳細は後記の第1の実施例で説明する。
【0011】
また、最長一致(LPM)検索方法では、ドントケア格納方法、検索を記号の直列並びの順に行うことは前記のと同じである。1つの記号フィールドについての検索は、検索対象フラグを付け加えた<1>、<−|0>で第1の検索を行い、一致ワードが存在する場合は、その検索結果をワークフィールドに格納する。次に、<1>、<コード|1>で第2の検索を行い、一致ワードが存在する場合は、その検索結果の一致したワードのみを後の検索対象とするよう検索対象フラグに格納する。複数直列並びの記号を順次検索を行う際、最終記号に到達したとき、あるいは到達する前に第2検索の結果一致ワードが存在しない場合は、その際にワークフィールドに格納されている検索結果で示されるワードが最終の最長一致検索結果となる。また、最終記号に到達した後、第2の検索の結果一致ワードが存在した場合は、その検索結果が最終の最長一致検索結果となる。この最長一致検索方法についての詳細は後記の第2〜第4の実施例で説明する。
【0012】
<第1の実施例>
図1は、本発明の第1の実施例に使用する連想メモリ装置を説明するための図であり、2値データを記憶、検索できる複数個のワード(アドレス#0〜#F)をもち、マスク検索機能と、並列部分書き込み機能とを有している。
【0013】
マスク検索機能とは、検索マスクにより検索対象とするビット位置(記号位置)を指定して、対象とするビット位置に相当する検索データを与えて、全ワードに対する一斉検索を実行する機能である。図1は、検索の対象とするビット位置の検索マスクを0に、ドントケアにするビット位置の検索マスクを1とした一例を示す。
【0014】
並列部分書き込み機能とは、事前の検索結果に基づき、選択ワード若しくは非選択ワードに対して、書き込みマスクによりマスクされていないビット位置(記号位置)のセルに対して、書き込みデータを一斉に書き込む機能である。図1に示す書き込みマスクは、書き込みを許可するビット位置を0に、禁止するビット位置を1に設定した場合の一例である。
【0015】
図2に、2値データを扱う連想メモリ装置へのドントケア格納方法及びワード構成例を示す。各ワード(アドレス#0〜#F)には、1ビットの検索対象フラグ10、確定記号あるいはドントケアを格納するNビットの記号フィールド21,22,23、その記号フィールド21,22,23の末尾に付加する各記号フィールド毎の1ビットの識別子31,32,33、および所要ビットのワークフィールド40が含まれる。記憶する記号が確定記号の場合は、識別子31,32,33のビットには、たとえば0を付与する。また、ドントケアの場合は、識別子31,32,33のビットには、たとえば1を付与する。ただし、識別子の位置、識別子の値は一例である。
【0016】
図3Aは、ドントケアを含めた記号列が格納された状態の一例を示しており、記号フィールドが確定記号の場合は識別子が0、ドントケアの場合(Xで表記)は識別子が1となっている。また、それぞれのワードの初期の検索対象フラグ10は、1となっている。ここでは、1つのワードを3個の記号を直列に並べて構成する場合を示しているが、これは一例である。
【0017】
次に、図3Aに示すデータが格納された連想メモリ装置におけるドントケア検索方法について、「滋賀県 草津市 笠山」を検索するときの動作を例に説明する。検索は記号の直列並びの順、この場合では、「滋賀県」、「草津市」、「笠山」の順に行う。つまり、記号フィールド21、記号フィールド22、記号フィールド23と順に検索を実行する。
【0018】
以降の説明においては、検索マスクおよび検索データの記述の簡単化のため、ドントケアにするビット(複数ビットも含む)位置を「−」に、確定記号もしくは確定ビットデータの部分はそのまま表現した検索キーとして記述する。
【0019】
(1)記号フィールド21に対する検索
(a)検索対象フラグ10を1、記号フィールド21および識別子31を<滋賀県|0>とし、記号フィールド22,23、識別子32,33はマスクして第1の検索を行う。検索キーは、(<1>,<滋賀県|0>,<−|−>,<−|−>)である。この結果、記号フィールド21が滋賀県、識別子31が0である、アドレス#0〜#4のワードが選択される。
(b)検索対象フラグ10を1、記号フィールド21をマスク、識別子31をドントケアに設定、すなわち、<−|1>とし、記号フィールド22,23、識別子32,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|1>,<−|>,<−|−>)である。この結果、識別子31が1である、アドレス#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィールド21の検索結果とする。この場合は、アドレス#0〜#4と#Fのワードが選択される。なお、この第1、第2の検索結果の論理和をとる処理は、ワークフィールド40への並列部分書込み機能を使って実現できる。さらに、過去の検索結果との論理和をとって検索結果を蓄積する機能をもつ連想メモリも存在するので、この機能を利用することもできる。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合は、#5〜#Eの検索対象フラグ10が0にクリアされ、その#5〜#Eのワードが引続く検索の対象から除外され、図3Bに示す結果となる。
【0020】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22および識別子32を<草津市|0>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<草津市|0>,<−|−>)である。この結果、アドレス#0、#2、#3のワードが選択される。
(b)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、アドレス#4,#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィルド22の検索結果とする。この場合は、アドレス#0、#2、#3、#4、#Fのワードが選択される。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合、アドレス#1のワードの検索対象フラグ10が0となり、その#1のワードが引続く検索の対象から除外され、図3Cに示す結果となる。
【0021】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23および識別子33を<笠山|0>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<笠山|0>)である。この結果、選択されるワードは存在しない。
(b)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、アドレス#3、#4、#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィールド23の検索結果とする。この場合は、ワード#3、#4、#Fが選択される。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合、アドレス#0、#2のワードの検索対象フラグ10が0となり、図3Dに示す結果となる。
【0022】
(4)記号フィールド23に対する検索終了後、検索対象フラグ10が1で残ったワードが選択されたワードであり、「滋賀県 草津市 笠山」の検索結果は、#3、#4、#Fとなる。本手順によって、ドントケアを含み格納された検索テーブルヘの検索が実現できることがわかる。
【0023】
以上のように、第1の実施例によれば、マスク検索可能な特定のデータを構成するとき、確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加すればよいので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウエアの増大を招くことなく、ドントケアデータの格納、検索ができる。
【0024】
<第2の実施例>
次に、図4Aに示す検索テーブルデータ(エントリデータ)が格納された連想メモリ装置において、「滋賀県 草津市 野路東」を検索キーとする最長一致(LPM)検索の例を図4B〜図4Gにより説明する。検索は、記号直列で行う。この場合では、「滋賀県」、「草津市」、「野路東」の順に行う。つまり、第1の実施例と同様に、記号フィールド21、記号フィールド22、記号フィールド23の順に検索を実行する。なお、検索テーブルは、図4Aに示すように、予め検索対象フラグ10が全て1に初期化され、ワークフィールド40が全て0に初期されている。
【0025】
(1)記号フィールド21に対する検索
(a)検索対象フラグ10を1、記号フィールド21をマスク、識別子31をドントケアに設定、すなわち、<−|1>とし、記号フィールド22,23、識別子32,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|1>,<−|−>,<−|−>)である。この結果、識別子31が1のワードである、ワード#Fが選択される。そして、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を、並列部分書き込みする。この場合は、#Fのワークフィールド40のみが1にセットされ、図4Bに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド21および識別子31を<滋賀県|0>とし、記号フィールド22,23、識別子32,33はマスクして第2の検索を行う。検索キーは、(<1>,<滋賀県|0>,<−|−>,<−|−>)である。この結果、記号フィールド21が滋賀県、識別子31が0のワードである、ワード#0〜#4が選択される。そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、#5〜#Fの検索対象フラグ10が0にクリアされ、図4Cに示す結果となり、その#0〜#4のワードが引き続き検索の対象とされる。
【0026】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、識別子32が1のワードである、ワード#4が選択され、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を並列部分書き込みする。この場合は、#4のワークフィールド40のみが1にセットされ、図4Dに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド22および識別子32を<草津市|0>、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<草津市|0>,<−|−>)である。この結果、記号フィールド22が草津市、識別子32が0のワードである、ワード#0、#2、#3が選択される。そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、新たに#1、#4の検索対象フラグ10が0にクリアされ図4Eに示す結果となり、その#0、#2、#3のワードが引き続き検索の対象とされる。
【0027】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、識別子33が1のワードである、ワード#3が選択され、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を、並列部分書き込みする。この場合は、#3のワークフィールド40のみが1にセットされ、図4Fに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<野路東|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<野路東|0>)である。この結果、記号フィールド23が野路東、識別子33が0のワードである、ワード#2が選択され、図4Gに示す結果となる。この記号フィールド23が最終フィールドであるため、この検索でヒットしたワード#2を最長一致(LPM)検索結果として、終了する。
<第3の実施例>
【0028】
同様に、「滋賀県 草津市 笠山」を検索キーとする最長一致検索の動作の例を図5により説明する。記号フィールド21,22に対する検索は、図4B〜図4Eに示した第2の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド23に対する検索以降を説明する。
【0029】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに翠定、すなわち、<−|1>とし、記号フィールド21,22、級別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、識別子33が1のワードである、ワード#3が選択され、選択されているワードのワークフィールド40に1を並列部分書き込みする。この場合は、#3のワークフィールド40のみが1にセットされる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<笠山|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<笠山|0>)である。この結果、記号フィールド23が笠山、識別子33が0のワードである、ワードが検索対象ワードの#0、#2、#3には存在しないため、ノーヒットとなる。したがって、このときのワークフィールド40に格納されている#3を最長一致検索結果として、終了する。
【0030】
<第4の実施例>
同様に、「滋賀県 大津市 京町」を検索キーとする最長一致検索の動作の例を図6により説明する。記号フィールド21に対する検索は、図4B〜図4Cに示す第1の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド22に対する検索以降を説明する。
【0031】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、識別子32が1のワードであるワード#4が選択され、選択されているワードのワークフィールド40に1を並列部分書き込みする。この場合は、#4のワークフィールド40のみが1にセットされる。
(b)検索対象フラグ10を1、記号フィールド22および識別子32を<大津市|0>、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<大津市|0>,<−|−>)である。この結果、記号フィールド22が大津市、識別子32が0のワードである、ワード#1が選択され、そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、新たに#0、#2〜#4の検索対象フラグ10が0にクリアされ、その#1のワードが引き続き検索の対象とされる。
【0032】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、ノーヒットとなるため、ワークフィールド40はそのまま維持され、ワード#4のワークフィールド40が1にセットされた状態となる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<京町|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<京町|0>)である。この結果、記号フィールド23が京町、識別子33が0である、ワードが検索対象ワードの#1には存在しないため、ノーヒットとなる。したがって、このときワークフィールド40に1が格納されている#4を最長一致検索結果として、終了する。
【0033】
以上のように、第2〜第4の実施例によれば、第1の実施例の作用効果に加えて、記号列の検索を行う際に、記号列を構成する複数の記号を直列に順次検索を行いながら、確定記号に対する第2の検索の結果が不一致になる前のドントケアに対して一致検出した第1の検索結果を選択するか、又は、全記号列に対して一致検出した第2の検索を選択すれば、検索結果は自ずと最長一致したものとなるので、エントリーデータのプレソーイングや、プライオリティエンコーダ等の付加ハードウエアは必要なく、最長一致検索が可能となる。
【図面の簡単な説明】
【0034】
【図1】本発明の第1の実施例の連想メモリの説明図である。
【図2】ドントケアを格納する同連想メモリ装置の説明図である。
【図3A】第1の実施例の「滋賀県 草津市 笠山」の検索のための検索テーブルの格納例(初期時)の説明図である。
【図3B】第1の実施例の検索テーブルの格納例(記号フィールド21の検索終了時)である。
【図3C】第1の実施例の検索テーブルの格納例(記号フィールド22の検索終了時)である。
【図3D】第1の実施例の検索テーブルの格納例(検索完了時)である。
【図4A】第2の実施例の「滋賀県 草津市 野路東」の最長一致検索のための検索テーブルの格納例(初期時)の説明図である。
【図4B】第2の実施例の検索テーブルの格納例(記号フィールド21に対する第1の検索終了時)である。
【図4C】第2の実施例の検索テーブルの格納例(記号フィールド21に対する第2の検索終了時)である。
【図4D】第2の実施例の検索テーブルの格納例(記号フィールド22に対する第1の検索終了時)である。
【図4E】第2の実施例の検索テーブルの格納例(記号フィールド22に対する第2の検索終了時)である。
【図4F】第2の実施例の検索テーブルの格納例(記号フィールド23に対する第1の検索終了時)である。
【図4G】第2の実施例の検索テーブルの格納例(記号フィールド23に対する第2の検索終了時)である。
【図5】第3の実施例の「滋賀県 草津市 笠山」の最長一致検索のための検索テーブルの格納例(初期時)である。
【図6】第4の実施例の「滋賀県 大津市 京町」の最長一致検索のための検索テーブルの格納例(初期時)である。
【図7】従来のBCAMとTCAMの説明図である。
【符号の説明】
【0035】
10:検索対象フラグ
21〜23:記号フィールド
31〜33:識別子
40:ワークフィールド
50:BCAMセル、51:RAMセル
60:TCAMセル、61,62:RAMセル
【技術分野】
【0001】
本発明は、2値データの記憶、検索が可能な連想メモリ装置におけるドントケアデータの格納、検索方法に関するものである。
【背景技術】
【0002】
連想メモリ装置は、検索ワードを入力してこれと一致する記憶ワードを検索し、そのアドレスを出力する装置である。連想メモリ装置には、検索ワードの全ビット一致検索機能およびビットマスク付きデータ検索機能をもつBCAM(Binary CAM)と、BCAMの機能に加えて、記憶ワードの一部に一致検索のマスク情報(ドントケアデータ)を持たせて検索データの部分一致機能を実現するTCAM(Ternary CAM)がある。
【0003】
図7(a)にBCAMの記憶セルを示し、図7(b)にTCAMの記憶セルを示し、図7(c)にTCAMの検索内容を示す。図7(a)、(b)において、K,/Kはビット線、MLは一致線、50はBCAMの記憶セル、51はRAMセル、60はTCAMの記憶セル、61,62はRAMセルである。ワード線は省略した。図7(b)のTCAMでは、ドントケアデータの格納、検索を行うため、記憶素子に「0」、「1」、「ドントケア」の3状態を記憶する必要がある(図7(c)では「ドントケア」を「×」で示した)ため、図7(a)に示したBCAMの2ビット分に相当するRAMセル61,62が必要となる。つまり、「0」=「01」、「1」=「10」、「×」=「00」で記憶する必要がある。TCAMについては、非特許文献1に記載がある。
【0004】
【非特許文献1】Igor Arsovski,et al.,"A Ternary Content-Addressable Memory(TCAM) Based on 4T Static Storage and Including a Current-Race Sensing Scheme",IEEE Journal of Solid-State Circuit,Vol.38,No.1,pp.155-158(2003).
【発明の開示】
【発明が解決しようとする課題】
【0005】
このように、TCAMでは、ドントケアデータを格納、検索するために必要となるRAMセル数がBCAMの場合の2倍となり、ハードウェアの増大あるいは集積可能な記憶容量の減少といった課題がある。また、検索の対象とするワードが記号列の場合、すなわち複数のビット単位で検索を行い、またドントケアの設定を行う場合においても、従来のTCAMを用いる場合は、全ビットを3値化する必要があり、ハードウェアの増大を避けることができない。
【0006】
本発明の目的は、2値データの記憶、検索が可能な連想メモリ装置を用いて、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索ができるようにすることである。
【課題を解決するための手段】
【0007】
上記目的を達成するために、請求項1にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とする。
請求項2にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とする。
【発明の効果】
【0008】
本発明によれば、任意のビット数で構成される記号を複数直列に並べて特定のワードを構成するとき、該ワードの一部を構成する確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加するので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索および最長一致検索ができるようになる。
【発明を実施するための最良の形態】
【0009】
本発明ではワードを複数の記号を直列に並べた構造とし、ドントケア格納方法として、ワードの一部を構成する記号が確定記号の場合は、たとえば、データ末尾に0を付加して、記法は<コード|0>とする。「コード」は確定記号である。また、記号がドントケアの場合は、たとえば、データ末尾に1を付加して、記法は<XXXX|1>とする。「XXXX」は任意の記号(ドントケア)を取り得ることを示す。なお、確定記号、ドントケアのいずれに0又は1を付与するかは任意である。また、その付加位置はデータ末尾に限られるものではない。
【0010】
ドントケアを含むエントリーデータの検索方法では、検索対象のワードには、検索対象フラグ(たとえば先頭に1)を付与する。その記法は、たとえば、1である。なお、フラグの値や位置は一例である。また、検索は記号の直列並びの順に行う。さらに、1つの記号フィールドについての検索は、検索対象フラグを先頭に付け加えた<1>、<|コード|0>で第1の検索を行い、<1>、<−|1>で第2の検索を行い、両検索結果をORで求め、且つ非選択データの検索対象フラグに、たとえば、0を書き込む。記号が複数直列並びであるときは、最終の記号のOR検索を終了した時点で得られた結果が、最終検索結果となる。この検索方法についての詳細は後記の第1の実施例で説明する。
【0011】
また、最長一致(LPM)検索方法では、ドントケア格納方法、検索を記号の直列並びの順に行うことは前記のと同じである。1つの記号フィールドについての検索は、検索対象フラグを付け加えた<1>、<−|0>で第1の検索を行い、一致ワードが存在する場合は、その検索結果をワークフィールドに格納する。次に、<1>、<コード|1>で第2の検索を行い、一致ワードが存在する場合は、その検索結果の一致したワードのみを後の検索対象とするよう検索対象フラグに格納する。複数直列並びの記号を順次検索を行う際、最終記号に到達したとき、あるいは到達する前に第2検索の結果一致ワードが存在しない場合は、その際にワークフィールドに格納されている検索結果で示されるワードが最終の最長一致検索結果となる。また、最終記号に到達した後、第2の検索の結果一致ワードが存在した場合は、その検索結果が最終の最長一致検索結果となる。この最長一致検索方法についての詳細は後記の第2〜第4の実施例で説明する。
【0012】
<第1の実施例>
図1は、本発明の第1の実施例に使用する連想メモリ装置を説明するための図であり、2値データを記憶、検索できる複数個のワード(アドレス#0〜#F)をもち、マスク検索機能と、並列部分書き込み機能とを有している。
【0013】
マスク検索機能とは、検索マスクにより検索対象とするビット位置(記号位置)を指定して、対象とするビット位置に相当する検索データを与えて、全ワードに対する一斉検索を実行する機能である。図1は、検索の対象とするビット位置の検索マスクを0に、ドントケアにするビット位置の検索マスクを1とした一例を示す。
【0014】
並列部分書き込み機能とは、事前の検索結果に基づき、選択ワード若しくは非選択ワードに対して、書き込みマスクによりマスクされていないビット位置(記号位置)のセルに対して、書き込みデータを一斉に書き込む機能である。図1に示す書き込みマスクは、書き込みを許可するビット位置を0に、禁止するビット位置を1に設定した場合の一例である。
【0015】
図2に、2値データを扱う連想メモリ装置へのドントケア格納方法及びワード構成例を示す。各ワード(アドレス#0〜#F)には、1ビットの検索対象フラグ10、確定記号あるいはドントケアを格納するNビットの記号フィールド21,22,23、その記号フィールド21,22,23の末尾に付加する各記号フィールド毎の1ビットの識別子31,32,33、および所要ビットのワークフィールド40が含まれる。記憶する記号が確定記号の場合は、識別子31,32,33のビットには、たとえば0を付与する。また、ドントケアの場合は、識別子31,32,33のビットには、たとえば1を付与する。ただし、識別子の位置、識別子の値は一例である。
【0016】
図3Aは、ドントケアを含めた記号列が格納された状態の一例を示しており、記号フィールドが確定記号の場合は識別子が0、ドントケアの場合(Xで表記)は識別子が1となっている。また、それぞれのワードの初期の検索対象フラグ10は、1となっている。ここでは、1つのワードを3個の記号を直列に並べて構成する場合を示しているが、これは一例である。
【0017】
次に、図3Aに示すデータが格納された連想メモリ装置におけるドントケア検索方法について、「滋賀県 草津市 笠山」を検索するときの動作を例に説明する。検索は記号の直列並びの順、この場合では、「滋賀県」、「草津市」、「笠山」の順に行う。つまり、記号フィールド21、記号フィールド22、記号フィールド23と順に検索を実行する。
【0018】
以降の説明においては、検索マスクおよび検索データの記述の簡単化のため、ドントケアにするビット(複数ビットも含む)位置を「−」に、確定記号もしくは確定ビットデータの部分はそのまま表現した検索キーとして記述する。
【0019】
(1)記号フィールド21に対する検索
(a)検索対象フラグ10を1、記号フィールド21および識別子31を<滋賀県|0>とし、記号フィールド22,23、識別子32,33はマスクして第1の検索を行う。検索キーは、(<1>,<滋賀県|0>,<−|−>,<−|−>)である。この結果、記号フィールド21が滋賀県、識別子31が0である、アドレス#0〜#4のワードが選択される。
(b)検索対象フラグ10を1、記号フィールド21をマスク、識別子31をドントケアに設定、すなわち、<−|1>とし、記号フィールド22,23、識別子32,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|1>,<−|>,<−|−>)である。この結果、識別子31が1である、アドレス#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィールド21の検索結果とする。この場合は、アドレス#0〜#4と#Fのワードが選択される。なお、この第1、第2の検索結果の論理和をとる処理は、ワークフィールド40への並列部分書込み機能を使って実現できる。さらに、過去の検索結果との論理和をとって検索結果を蓄積する機能をもつ連想メモリも存在するので、この機能を利用することもできる。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合は、#5〜#Eの検索対象フラグ10が0にクリアされ、その#5〜#Eのワードが引続く検索の対象から除外され、図3Bに示す結果となる。
【0020】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22および識別子32を<草津市|0>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<草津市|0>,<−|−>)である。この結果、アドレス#0、#2、#3のワードが選択される。
(b)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、アドレス#4,#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィルド22の検索結果とする。この場合は、アドレス#0、#2、#3、#4、#Fのワードが選択される。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合、アドレス#1のワードの検索対象フラグ10が0となり、その#1のワードが引続く検索の対象から除外され、図3Cに示す結果となる。
【0021】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23および識別子33を<笠山|0>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<笠山|0>)である。この結果、選択されるワードは存在しない。
(b)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、アドレス#3、#4、#Fのワードが選択される。
(c)上記第1、第2の検索結果の論理和をとって、記号フィールド23の検索結果とする。この場合は、ワード#3、#4、#Fが選択される。
(d)選択されていないワードの検索対象フラグ10に0を並列部分書込みする。この場合、アドレス#0、#2のワードの検索対象フラグ10が0となり、図3Dに示す結果となる。
【0022】
(4)記号フィールド23に対する検索終了後、検索対象フラグ10が1で残ったワードが選択されたワードであり、「滋賀県 草津市 笠山」の検索結果は、#3、#4、#Fとなる。本手順によって、ドントケアを含み格納された検索テーブルヘの検索が実現できることがわかる。
【0023】
以上のように、第1の実施例によれば、マスク検索可能な特定のデータを構成するとき、確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加すればよいので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウエアの増大を招くことなく、ドントケアデータの格納、検索ができる。
【0024】
<第2の実施例>
次に、図4Aに示す検索テーブルデータ(エントリデータ)が格納された連想メモリ装置において、「滋賀県 草津市 野路東」を検索キーとする最長一致(LPM)検索の例を図4B〜図4Gにより説明する。検索は、記号直列で行う。この場合では、「滋賀県」、「草津市」、「野路東」の順に行う。つまり、第1の実施例と同様に、記号フィールド21、記号フィールド22、記号フィールド23の順に検索を実行する。なお、検索テーブルは、図4Aに示すように、予め検索対象フラグ10が全て1に初期化され、ワークフィールド40が全て0に初期されている。
【0025】
(1)記号フィールド21に対する検索
(a)検索対象フラグ10を1、記号フィールド21をマスク、識別子31をドントケアに設定、すなわち、<−|1>とし、記号フィールド22,23、識別子32,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|1>,<−|−>,<−|−>)である。この結果、識別子31が1のワードである、ワード#Fが選択される。そして、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を、並列部分書き込みする。この場合は、#Fのワークフィールド40のみが1にセットされ、図4Bに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド21および識別子31を<滋賀県|0>とし、記号フィールド22,23、識別子32,33はマスクして第2の検索を行う。検索キーは、(<1>,<滋賀県|0>,<−|−>,<−|−>)である。この結果、記号フィールド21が滋賀県、識別子31が0のワードである、ワード#0〜#4が選択される。そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、#5〜#Fの検索対象フラグ10が0にクリアされ、図4Cに示す結果となり、その#0〜#4のワードが引き続き検索の対象とされる。
【0026】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、識別子32が1のワードである、ワード#4が選択され、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を並列部分書き込みする。この場合は、#4のワークフィールド40のみが1にセットされ、図4Dに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド22および識別子32を<草津市|0>、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<草津市|0>,<−|−>)である。この結果、記号フィールド22が草津市、識別子32が0のワードである、ワード#0、#2、#3が選択される。そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、新たに#1、#4の検索対象フラグ10が0にクリアされ図4Eに示す結果となり、その#0、#2、#3のワードが引き続き検索の対象とされる。
【0027】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、識別子33が1のワードである、ワード#3が選択され、選択されているワードのワークフィールド40に1を、選択されていないワードのワークフィールド40に0を、並列部分書き込みする。この場合は、#3のワークフィールド40のみが1にセットされ、図4Fに示す結果となる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<野路東|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<野路東|0>)である。この結果、記号フィールド23が野路東、識別子33が0のワードである、ワード#2が選択され、図4Gに示す結果となる。この記号フィールド23が最終フィールドであるため、この検索でヒットしたワード#2を最長一致(LPM)検索結果として、終了する。
<第3の実施例>
【0028】
同様に、「滋賀県 草津市 笠山」を検索キーとする最長一致検索の動作の例を図5により説明する。記号フィールド21,22に対する検索は、図4B〜図4Eに示した第2の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド23に対する検索以降を説明する。
【0029】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに翠定、すなわち、<−|1>とし、記号フィールド21,22、級別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、識別子33が1のワードである、ワード#3が選択され、選択されているワードのワークフィールド40に1を並列部分書き込みする。この場合は、#3のワークフィールド40のみが1にセットされる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<笠山|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<笠山|0>)である。この結果、記号フィールド23が笠山、識別子33が0のワードである、ワードが検索対象ワードの#0、#2、#3には存在しないため、ノーヒットとなる。したがって、このときのワークフィールド40に格納されている#3を最長一致検索結果として、終了する。
【0030】
<第4の実施例>
同様に、「滋賀県 大津市 京町」を検索キーとする最長一致検索の動作の例を図6により説明する。記号フィールド21に対する検索は、図4B〜図4Cに示す第1の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド22に対する検索以降を説明する。
【0031】
(2)記号フィールド22に対する検索
(a)検索対象フラグ10を1、記号フィールド22をマスク、識別子32をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,23、識別子31,33はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|1>,<−|−>)である。この結果、識別子32が1のワードであるワード#4が選択され、選択されているワードのワークフィールド40に1を並列部分書き込みする。この場合は、#4のワークフィールド40のみが1にセットされる。
(b)検索対象フラグ10を1、記号フィールド22および識別子32を<大津市|0>、記号フィールド21,23、識別子31,33はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<大津市|0>,<−|−>)である。この結果、記号フィールド22が大津市、識別子32が0のワードである、ワード#1が選択され、そして、選択されていないワードの検索対象フラグ10に0を並列部分書き込みする。この場合は、新たに#0、#2〜#4の検索対象フラグ10が0にクリアされ、その#1のワードが引き続き検索の対象とされる。
【0032】
(3)記号フィールド23に対する検索
(a)検索対象フラグ10を1、記号フィールド23をマスク、識別子33をドントケアに設定、すなわち、<−|1>とし、記号フィールド21,22、識別子31,32はマスクして第1の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<−|1>)である。この結果、ノーヒットとなるため、ワークフィールド40はそのまま維持され、ワード#4のワークフィールド40が1にセットされた状態となる。
(b)検索対象フラグ10を1、記号フィールド23および識別子33を<京町|0>、記号フィールド21,22、識別子31,32はマスクして第2の検索を行う。検索キーは、(<1>,<−|−>,<−|−>,<京町|0>)である。この結果、記号フィールド23が京町、識別子33が0である、ワードが検索対象ワードの#1には存在しないため、ノーヒットとなる。したがって、このときワークフィールド40に1が格納されている#4を最長一致検索結果として、終了する。
【0033】
以上のように、第2〜第4の実施例によれば、第1の実施例の作用効果に加えて、記号列の検索を行う際に、記号列を構成する複数の記号を直列に順次検索を行いながら、確定記号に対する第2の検索の結果が不一致になる前のドントケアに対して一致検出した第1の検索結果を選択するか、又は、全記号列に対して一致検出した第2の検索を選択すれば、検索結果は自ずと最長一致したものとなるので、エントリーデータのプレソーイングや、プライオリティエンコーダ等の付加ハードウエアは必要なく、最長一致検索が可能となる。
【図面の簡単な説明】
【0034】
【図1】本発明の第1の実施例の連想メモリの説明図である。
【図2】ドントケアを格納する同連想メモリ装置の説明図である。
【図3A】第1の実施例の「滋賀県 草津市 笠山」の検索のための検索テーブルの格納例(初期時)の説明図である。
【図3B】第1の実施例の検索テーブルの格納例(記号フィールド21の検索終了時)である。
【図3C】第1の実施例の検索テーブルの格納例(記号フィールド22の検索終了時)である。
【図3D】第1の実施例の検索テーブルの格納例(検索完了時)である。
【図4A】第2の実施例の「滋賀県 草津市 野路東」の最長一致検索のための検索テーブルの格納例(初期時)の説明図である。
【図4B】第2の実施例の検索テーブルの格納例(記号フィールド21に対する第1の検索終了時)である。
【図4C】第2の実施例の検索テーブルの格納例(記号フィールド21に対する第2の検索終了時)である。
【図4D】第2の実施例の検索テーブルの格納例(記号フィールド22に対する第1の検索終了時)である。
【図4E】第2の実施例の検索テーブルの格納例(記号フィールド22に対する第2の検索終了時)である。
【図4F】第2の実施例の検索テーブルの格納例(記号フィールド23に対する第1の検索終了時)である。
【図4G】第2の実施例の検索テーブルの格納例(記号フィールド23に対する第2の検索終了時)である。
【図5】第3の実施例の「滋賀県 草津市 笠山」の最長一致検索のための検索テーブルの格納例(初期時)である。
【図6】第4の実施例の「滋賀県 大津市 京町」の最長一致検索のための検索テーブルの格納例(初期時)である。
【図7】従来のBCAMとTCAMの説明図である。
【符号の説明】
【0035】
10:検索対象フラグ
21〜23:記号フィールド
31〜33:識別子
40:ワークフィールド
50:BCAMセル、51:RAMセル
60:TCAMセル、61,62:RAMセル
【特許請求の範囲】
【請求項1】
マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、
該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とするドントケア格納、検索方法。
【請求項2】
マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、
次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、
該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、
前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、
前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とするドントケア格納、検索方法。
【請求項1】
マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、
該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とするドントケア格納、検索方法。
【請求項2】
マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、
次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、
該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、
前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、
前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とするドントケア格納、検索方法。
【図1】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図4G】
【図5】
【図6】
【図7】
【図2】
【図3A】
【図3B】
【図3C】
【図3D】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図4F】
【図4G】
【図5】
【図6】
【図7】
【公開番号】特開2009−26437(P2009−26437A)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願番号】特願2008−158723(P2008−158723)
【出願日】平成20年6月18日(2008.6.18)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【出願人】(593006630)学校法人立命館 (359)
【公開日】平成21年2月5日(2009.2.5)
【国際特許分類】
【出願日】平成20年6月18日(2008.6.18)
【出願人】(000004226)日本電信電話株式会社 (13,992)
【出願人】(593006630)学校法人立命館 (359)
[ Back to top ]