JP2009026437A - 連想メモリ装置におけるドントケア格納、検索方法 - Google Patents
連想メモリ装置におけるドントケア格納、検索方法 Download PDFInfo
- Publication number
- JP2009026437A JP2009026437A JP2008158723A JP2008158723A JP2009026437A JP 2009026437 A JP2009026437 A JP 2009026437A JP 2008158723 A JP2008158723 A JP 2008158723A JP 2008158723 A JP2008158723 A JP 2008158723A JP 2009026437 A JP2009026437 A JP 2009026437A
- Authority
- JP
- Japan
- Prior art keywords
- search
- symbol
- don
- care
- word
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
【課題】2値を扱う連想メモリ装置を用いて、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索ができるようにする。
【解決手段】任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納する。特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について同様の検索を行う。
【選択図】図2
【解決手段】任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納する。特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について同様の検索を行う。
【選択図】図2
Description
本発明は、2値データの記憶、検索が可能な連想メモリ装置におけるドントケアデータの格納、検索方法に関するものである。
連想メモリ装置は、検索ワードを入力してこれと一致する記憶ワードを検索し、そのアドレスを出力する装置である。連想メモリ装置には、検索ワードの全ビット一致検索機能およびビットマスク付きデータ検索機能をもつBCAM(Binary CAM)と、BCAMの機能に加えて、記憶ワードの一部に一致検索のマスク情報(ドントケアデータ)を持たせて検索データの部分一致機能を実現するTCAM(Ternary CAM)がある。
図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に記載がある。
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).
このように、TCAMでは、ドントケアデータを格納、検索するために必要となるRAMセル数がBCAMの場合の2倍となり、ハードウェアの増大あるいは集積可能な記憶容量の減少といった課題がある。また、検索の対象とするワードが記号列の場合、すなわち複数のビット単位で検索を行い、またドントケアの設定を行う場合においても、従来のTCAMを用いる場合は、全ビットを3値化する必要があり、ハードウェアの増大を避けることができない。
本発明の目的は、2値データの記憶、検索が可能な連想メモリ装置を用いて、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索ができるようにすることである。
上記目的を達成するために、請求項1にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とする。
請求項2にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とする。
請求項2にかかる発明は、マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とする。
本発明によれば、任意のビット数で構成される記号を複数直列に並べて特定のワードを構成するとき、該ワードの一部を構成する確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加するので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウェアの増大を招くことなく、ドントケアデータの格納、検索および最長一致検索ができるようになる。
本発明ではワードを複数の記号を直列に並べた構造とし、ドントケア格納方法として、ワードの一部を構成する記号が確定記号の場合は、たとえば、データ末尾に0を付加して、記法は<コード|0>とする。「コード」は確定記号である。また、記号がドントケアの場合は、たとえば、データ末尾に1を付加して、記法は<XXXX|1>とする。「XXXX」は任意の記号(ドントケア)を取り得ることを示す。なお、確定記号、ドントケアのいずれに0又は1を付与するかは任意である。また、その付加位置はデータ末尾に限られるものではない。
ドントケアを含むエントリーデータの検索方法では、検索対象のワードには、検索対象フラグ(たとえば先頭に1)を付与する。その記法は、たとえば、1である。なお、フラグの値や位置は一例である。また、検索は記号の直列並びの順に行う。さらに、1つの記号フィールドについての検索は、検索対象フラグを先頭に付け加えた<1>、<|コード|0>で第1の検索を行い、<1>、<−|1>で第2の検索を行い、両検索結果をORで求め、且つ非選択データの検索対象フラグに、たとえば、0を書き込む。記号が複数直列並びであるときは、最終の記号のOR検索を終了した時点で得られた結果が、最終検索結果となる。この検索方法についての詳細は後記の第1の実施例で説明する。
また、最長一致(LPM)検索方法では、ドントケア格納方法、検索を記号の直列並びの順に行うことは前記のと同じである。1つの記号フィールドについての検索は、検索対象フラグを付け加えた<1>、<−|0>で第1の検索を行い、一致ワードが存在する場合は、その検索結果をワークフィールドに格納する。次に、<1>、<コード|1>で第2の検索を行い、一致ワードが存在する場合は、その検索結果の一致したワードのみを後の検索対象とするよう検索対象フラグに格納する。複数直列並びの記号を順次検索を行う際、最終記号に到達したとき、あるいは到達する前に第2検索の結果一致ワードが存在しない場合は、その際にワークフィールドに格納されている検索結果で示されるワードが最終の最長一致検索結果となる。また、最終記号に到達した後、第2の検索の結果一致ワードが存在した場合は、その検索結果が最終の最長一致検索結果となる。この最長一致検索方法についての詳細は後記の第2〜第4の実施例で説明する。
<第1の実施例>
図1は、本発明の第1の実施例に使用する連想メモリ装置を説明するための図であり、2値データを記憶、検索できる複数個のワード(アドレス#0〜#F)をもち、マスク検索機能と、並列部分書き込み機能とを有している。
図1は、本発明の第1の実施例に使用する連想メモリ装置を説明するための図であり、2値データを記憶、検索できる複数個のワード(アドレス#0〜#F)をもち、マスク検索機能と、並列部分書き込み機能とを有している。
マスク検索機能とは、検索マスクにより検索対象とするビット位置(記号位置)を指定して、対象とするビット位置に相当する検索データを与えて、全ワードに対する一斉検索を実行する機能である。図1は、検索の対象とするビット位置の検索マスクを0に、ドントケアにするビット位置の検索マスクを1とした一例を示す。
並列部分書き込み機能とは、事前の検索結果に基づき、選択ワード若しくは非選択ワードに対して、書き込みマスクによりマスクされていないビット位置(記号位置)のセルに対して、書き込みデータを一斉に書き込む機能である。図1に示す書き込みマスクは、書き込みを許可するビット位置を0に、禁止するビット位置を1に設定した場合の一例である。
図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を付与する。ただし、識別子の位置、識別子の値は一例である。
図3Aは、ドントケアを含めた記号列が格納された状態の一例を示しており、記号フィールドが確定記号の場合は識別子が0、ドントケアの場合(Xで表記)は識別子が1となっている。また、それぞれのワードの初期の検索対象フラグ10は、1となっている。ここでは、1つのワードを3個の記号を直列に並べて構成する場合を示しているが、これは一例である。
次に、図3Aに示すデータが格納された連想メモリ装置におけるドントケア検索方法について、「滋賀県 草津市 笠山」を検索するときの動作を例に説明する。検索は記号の直列並びの順、この場合では、「滋賀県」、「草津市」、「笠山」の順に行う。つまり、記号フィールド21、記号フィールド22、記号フィールド23と順に検索を実行する。
以降の説明においては、検索マスクおよび検索データの記述の簡単化のため、ドントケアにするビット(複数ビットも含む)位置を「−」に、確定記号もしくは確定ビットデータの部分はそのまま表現した検索キーとして記述する。
(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に示す結果となる。
(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に示す結果となる。
(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に示す結果となる。
(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に示す結果となる。
(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に示す結果となる。
(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に示す結果となる。
(4)記号フィールド23に対する検索終了後、検索対象フラグ10が1で残ったワードが選択されたワードであり、「滋賀県 草津市 笠山」の検索結果は、#3、#4、#Fとなる。本手順によって、ドントケアを含み格納された検索テーブルヘの検索が実現できることがわかる。
以上のように、第1の実施例によれば、マスク検索可能な特定のデータを構成するとき、確定記号には確定記号であることを示す識別子を付加し、ドントケアにはドントケアであることを示す識別子を付加すればよいので、記憶素子は0,1の2状態を記憶できればよく、従来の2値のBCAMを利用することができ、ハードウエアの増大を招くことなく、ドントケアデータの格納、検索ができる。
<第2の実施例>
次に、図4Aに示す検索テーブルデータ(エントリデータ)が格納された連想メモリ装置において、「滋賀県 草津市 野路東」を検索キーとする最長一致(LPM)検索の例を図4B〜図4Gにより説明する。検索は、記号直列で行う。この場合では、「滋賀県」、「草津市」、「野路東」の順に行う。つまり、第1の実施例と同様に、記号フィールド21、記号フィールド22、記号フィールド23の順に検索を実行する。なお、検索テーブルは、図4Aに示すように、予め検索対象フラグ10が全て1に初期化され、ワークフィールド40が全て0に初期されている。
次に、図4Aに示す検索テーブルデータ(エントリデータ)が格納された連想メモリ装置において、「滋賀県 草津市 野路東」を検索キーとする最長一致(LPM)検索の例を図4B〜図4Gにより説明する。検索は、記号直列で行う。この場合では、「滋賀県」、「草津市」、「野路東」の順に行う。つまり、第1の実施例と同様に、記号フィールド21、記号フィールド22、記号フィールド23の順に検索を実行する。なお、検索テーブルは、図4Aに示すように、予め検索対象フラグ10が全て1に初期化され、ワークフィールド40が全て0に初期されている。
(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のワードが引き続き検索の対象とされる。
(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のワードが引き続き検索の対象とされる。
(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のワードが引き続き検索の対象とされる。
(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のワードが引き続き検索の対象とされる。
(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の実施例>
(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の実施例>
同様に、「滋賀県 草津市 笠山」を検索キーとする最長一致検索の動作の例を図5により説明する。記号フィールド21,22に対する検索は、図4B〜図4Eに示した第2の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド23に対する検索以降を説明する。
(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を最長一致検索結果として、終了する。
(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を最長一致検索結果として、終了する。
<第4の実施例>
同様に、「滋賀県 大津市 京町」を検索キーとする最長一致検索の動作の例を図6により説明する。記号フィールド21に対する検索は、図4B〜図4Cに示す第1の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド22に対する検索以降を説明する。
同様に、「滋賀県 大津市 京町」を検索キーとする最長一致検索の動作の例を図6により説明する。記号フィールド21に対する検索は、図4B〜図4Cに示す第1の実施例の場合と同様であるため、その詳細説明は省略し、記号フィールド22に対する検索以降を説明する。
(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のワードが引き続き検索の対象とされる。
(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のワードが引き続き検索の対象とされる。
(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を最長一致検索結果として、終了する。
(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を最長一致検索結果として、終了する。
以上のように、第2〜第4の実施例によれば、第1の実施例の作用効果に加えて、記号列の検索を行う際に、記号列を構成する複数の記号を直列に順次検索を行いながら、確定記号に対する第2の検索の結果が不一致になる前のドントケアに対して一致検出した第1の検索結果を選択するか、又は、全記号列に対して一致検出した第2の検索を選択すれば、検索結果は自ずと最長一致したものとなるので、エントリーデータのプレソーイングや、プライオリティエンコーダ等の付加ハードウエアは必要なく、最長一致検索が可能となる。
10:検索対象フラグ
21〜23:記号フィールド
31〜33:識別子
40:ワークフィールド
50:BCAMセル、51:RAMセル
60:TCAMセル、61,62:RAMセル
21〜23:記号フィールド
31〜33:識別子
40:ワークフィールド
50:BCAMセル、51:RAMセル
60:TCAMセル、61,62:RAMセル
Claims (2)
- マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを検索するに際し、検索すべき記号位置の確定記号と該確定記号に対応する識別子とを合わせて検索した第1の検索結果と、前記記号位置がドントケアを示す識別子かどうかを検索した第2の検索結果との論理和をとって検索結果とし、
該検索結果で選択された1又は2以上のワードを引き続き検索対象として、順次検索すべき記号位置について前記と同様の検索を行うことを特徴とするドントケア格納、検索方法。 - マスク検索機能と、並列部分書き込み機能とを有する連想メモリ装置におけるドントケア格納、検索方法であって、
任意のビット数で構成される記号を複数直列に並べて構成した複数個のワードを格納するに際し、前記記号の内の確定記号を格納する場合は、該確定記号の所定位置に確定記号であることを示す識別子を付加して格納し、前記記号の内のドントケアを格納する場合は、該ドントケアの所定位置にドントケアであることを示す識別子を付加して格納し、
特定のワードを最長一致検索するに際し、検索すべき記号位置がドントケアを示す識別子であるかどうかの第1の検索を行い、一致するワードが存在する場合は、該一致するワードをワークフィールドに記録し、
次に、前記記号位置の検索すべき確定記号と該確定記号に対応する識別子とを合わせた第2の検索を行い、一致するワードが存在する場合は、該一致するワードを以後の検索対象とし、
該検索対象のワードについて、次の記号位置について前記第1の検索を行い、一致するワードが存在する場合は、該一致するワードを前記ワークフィールドに更新して記録し、
前記第2の検索の結果一致するワードが存在しなくなるか、又は、検索すべき最後の記号位置まで、引き続き順次、前記第1の検索および前記第2の検索を行い、
前記第2の検索で一致するワードが存在しなくなった場合には、その時点でワークフィールドに記録されているワードを最長一致検索結果とし、検索すべき最後の記号位置まで一致した場合には、その一致するワードを最長一致検索結果とすることを特徴とするドントケア格納、検索方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008158723A JP2009026437A (ja) | 2007-06-21 | 2008-06-18 | 連想メモリ装置におけるドントケア格納、検索方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007163595 | 2007-06-21 | ||
JP2008158723A JP2009026437A (ja) | 2007-06-21 | 2008-06-18 | 連想メモリ装置におけるドントケア格納、検索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009026437A true JP2009026437A (ja) | 2009-02-05 |
Family
ID=40398110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008158723A Pending JP2009026437A (ja) | 2007-06-21 | 2008-06-18 | 連想メモリ装置におけるドントケア格納、検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2009026437A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101093426B1 (ko) | 2010-10-04 | 2011-12-14 | 경희대학교 산학협력단 | 무정값 검색이 가능한 바이너리 내용 주소화 메모리 |
JP2017070335A (ja) * | 2015-10-05 | 2017-04-13 | 日立マクセル株式会社 | 送風装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59116991A (ja) * | 1982-12-23 | 1984-07-06 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリ装置 |
JPH09320281A (ja) * | 1996-06-03 | 1997-12-12 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリへのデータの格納方法および連想メモリからのデータの取り出し方法 |
JP2000215678A (ja) * | 1999-01-18 | 2000-08-04 | Nec Corp | 連想記憶装置及び連想メモリ検索方法 |
JP2007048411A (ja) * | 2005-08-12 | 2007-02-22 | Kyoto Univ | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
-
2008
- 2008-06-18 JP JP2008158723A patent/JP2009026437A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS59116991A (ja) * | 1982-12-23 | 1984-07-06 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリ装置 |
JPH09320281A (ja) * | 1996-06-03 | 1997-12-12 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリへのデータの格納方法および連想メモリからのデータの取り出し方法 |
JP2000215678A (ja) * | 1999-01-18 | 2000-08-04 | Nec Corp | 連想記憶装置及び連想メモリ検索方法 |
JP2007048411A (ja) * | 2005-08-12 | 2007-02-22 | Kyoto Univ | 連想メモリシステム、連想メモリシステムの制御方法、およびデータ処理装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101093426B1 (ko) | 2010-10-04 | 2011-12-14 | 경희대학교 산학협력단 | 무정값 검색이 가능한 바이너리 내용 주소화 메모리 |
JP2017070335A (ja) * | 2015-10-05 | 2017-04-13 | 日立マクセル株式会社 | 送風装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10489455B2 (en) | Scoped search engine | |
JP5731179B2 (ja) | 半導体記憶装置 | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
US20120137060A1 (en) | Multi-stage TCAM search | |
US7565482B1 (en) | Method and device for scalable multiple match extraction from search data | |
JP2008015872A5 (ja) | ||
EP2288092A1 (en) | Method and device for improving scalability of longest prefix match | |
US9865350B2 (en) | Content addressable memory, an index generator, and a registered information update method | |
JP2009026437A (ja) | 連想メモリ装置におけるドントケア格納、検索方法 | |
CN109933584B (zh) | 一种多级无序索引方法与系统 | |
JP2007034878A5 (ja) | ||
Kuo et al. | A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update | |
US8626688B2 (en) | Pattern matching device and method using non-deterministic finite automaton | |
JP6238306B2 (ja) | 不揮発性連想メモリを利用した全文検索システム及びこれに用いる文字列比較方法 | |
US10747775B2 (en) | Data conversion device, search system, and method | |
US9851902B2 (en) | Searching memory for a search key | |
JP5041003B2 (ja) | 検索装置および検索方法 | |
JP4850403B2 (ja) | マグニチュード内容参照可能メモリ | |
JP5631278B2 (ja) | 内容参照メモリ | |
JP5143797B2 (ja) | ビット列データソート装置、ソート方法及びプログラム | |
RU72771U1 (ru) | Устройство для параллельного поиска и обработки данных | |
JP2016021264A (ja) | メモリシステムのデータ管理方法 | |
RU2789997C1 (ru) | Способ и матричное устройство параллельно-конвейерного поиска по образцу | |
CN115633097B (zh) | 一种访问控制列表acl压缩方法及装置 | |
RU2762781C1 (ru) | Матричное устройство для параллельного поиска вхождений и обработки данных |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110509 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110509 |
|
A131 | Notification of reasons for refusal |
Effective date: 20120712 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Effective date: 20121102 Free format text: JAPANESE INTERMEDIATE CODE: A02 |