JP2014123936A - 検索システム - Google Patents

検索システム Download PDF

Info

Publication number
JP2014123936A
JP2014123936A JP2013092374A JP2013092374A JP2014123936A JP 2014123936 A JP2014123936 A JP 2014123936A JP 2013092374 A JP2013092374 A JP 2013092374A JP 2013092374 A JP2013092374 A JP 2013092374A JP 2014123936 A JP2014123936 A JP 2014123936A
Authority
JP
Japan
Prior art keywords
search
data
bit
read
memory
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.)
Granted
Application number
JP2013092374A
Other languages
English (en)
Other versions
JP6170718B2 (ja
JP2014123936A5 (ja
Inventor
Hisashi Iwamoto
久 岩本
Koji Yamamoto
耕次 山本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2013092374A priority Critical patent/JP6170718B2/ja
Priority to US14/085,596 priority patent/US9552881B2/en
Publication of JP2014123936A publication Critical patent/JP2014123936A/ja
Publication of JP2014123936A5 publication Critical patent/JP2014123936A5/ja
Application granted granted Critical
Publication of JP6170718B2 publication Critical patent/JP6170718B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
    • G11C15/04Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90339Query processing by using parallel associative memories or content-addressable memories
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/74591Address table lookup; Address filtering using content-addressable memories [CAM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C15/00Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】メモリ容量が比較的小さくて、高速かつ低消費電力の検索システムを提供する。
【解決手段】検索システム2は、TCAM20,22と、TCAMを用いない検索エンジン21とを組み合わせたものである。TCAMを用いない検索エンジン21は、汎用メモリセル構造を用いて構築され、被検索データの有効ビット長ごとに異なるメモリ空間が割り当てられる。
【選択図】図8

Description

この発明は、入力された検索キーに一致するデータワードを最長一致検索によって検索する検索システムに関し、たとえば、パケット交換網のルータで好適に用いられるものである。
インターネットなど、TCP/IP(Transmission Control Protocol/Internet Protocol)が用いられるネットワークに設置されたルータでは、他のホストから受取ったパケットを別の経路に転送するフォワーディングが行なわれる。各ルータは、IPアドレスと転送先の経路との関係を定める検索テーブル(フォワーディング・テーブル)を格納しており、この検索テーブルに従ってパケットの転送経路が決定される。具体的には、受取ったパケットに含まれる宛先のIPアドレスを検索キー(Key)として検索テーブルに記載された次ホップIPアドレスが最長一致検索(longest prefix match search)によって検索される。
フォワーディングを高速に行なうには、検索テーブル内での次ホップIPアドレスの検索を高速化する必要があり、このための専用ハードウェアとして連想メモリ(CAM:Content Addressable Memory)がしばしば用いられる。
特開2006−5636号公報(特許文献1)は、TCAM(Ternary CAM)を用いて検索テーブルを構成する例を開示する。具体的に、この文献のTCAMは、IPアドレスの上位ビットを設定する第1のCAMエントリと、IPアドレスの下位ビットを設定する第2のCAMエントリとを含む。そして、受取ったパケットの宛先アドレスの上位ビットと第1のCAMエントリとが比較され、次に、パケットの宛先アドレス下位ビットと第2のCAMエントリとが比較される。
特開2003−143198号公報(特許文献2)は、TCAMを使用しない検索テーブルの例が示される。具体的には、転送されたIPアドレスについて、上位から1ビットずつ順にフォワーディング・テーブル内に存在するか否かが判断される。特にこの文献では、フォワーディングの時間を短縮するために、IPアドレスを複数ビットずつまとめて参照する方法が提案されている。
特開2006−5636号公報 特開2003−143198号公報
上記の特開2006−5636号公報(特許文献1)のようにTCAMを用いた検索方法では検索キーと検索テーブルとを比較する回数は少なくなるが、TCAMデバイスを用いているために消費電力が大きくなるという欠点がある。一方、上記の特開2003−143198号公報(特許文献2)のようなTCAMを用いない検索方法では、検索キーと検索テーブルとの比較は極めて少ない消費電力で実行できるが、検索回数が増加するためにフォワーディングに時間を要するという欠点がある。
本願の出願人は、上記の各検索方法の欠点を克服した新たな検索システムについての発明を出願した(特願2011−171784参照)。ただし、この検索システムは、検索キーのビット長が増大するにつれてメモリ容量が指数関数的に増大するという問題がある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態による検索システムは、TCAMと、TCAMを用いない検索エンジンとを組み合わせたものである。好ましくは、TCAMを用いない検索エンジンは、汎用メモリセル構造を用いて構築され、被検索データの有効ビット長ごとに異なるメモリ空間が割り当てられる。
上記の一実施の形態によれば、メモリ容量が比較的小さくて、高速かつ低消費電力の検索システムを提供することができる。
TCAMの構成を模式的に示すブロック図である。 TCAMのメモリセルの一例を示す回路図である。 TCAMの詳細な構成を示すブロック図である。 省電力検索エンジンの構成を模式的に示すブロック図である。 実施の形態1による検索システムの構成を示すブロック図である。 IPv4用のIPアドレスにおいて、通常の場合の有効ビット長とエントリ数との関係を示す図である。 図5の検索システムにおけるデータの割り当てについて説明するための図である。 実施の形態2による検索システムの構成を示すブロック図である。 図8のプリサーチ用の小容量TCAMに割り当てられる特定ビットの例について説明するための図である。 図8のプリサーチ用の小容量TCAMに割り当てられる特定ビットの他の例について説明するための図である。 IPv4のIPアドレスを検索するための検索テーブルの作成について説明するための図である。 図11に対応する検索システムの例を示す図である。 実施の形態3による検索システムで用いられる省電力検索エンジンの構成を示すブロック図である。 図13の省電力検索エンジンの使用例を説明するための図である。 図13の省電力検索エンジンのその他の使用例を説明するための図である。
以下では、最初に、各実施の形態の前提となるTCAMと、TCAMを用いない検索エンジン(以下、「省電力検索エンジン」と称する)の構成について説明し、その後、各実施の形態について説明する。なお、以下の説明において同一または相当する部分には同一の参照符号を付して、その説明を繰り返さない。
<TCAMについて>
[TCAMの概略構成]
図1は、TCAMの構成を模式的に示すブロック図である。TCAM100は、メモリセルアレイ101と、プライオリティ・エンコーダ102とを含む。図1では、簡単のために、検索キーが4ビットであり、メモリセルアレイに4ビットのアドレスが割り当てられる場合(すなわち、格納可能なデータ数が16個)の場合が示されている。
図1を参照して、検索テーブルを構成するTCAM100のメモリセルアレイに、6つの被検索データが格納された状態が例示されている。ここで、“*”は、ドントケア(Don't care)ビットを表わし、“*”を除くビット(bit)の数が有効ビット長となる。具体的に、データ[0101],[1010]の有効ビット長は4であり、データ[010*],[101*]の有効ビット長は3であり、データ[10**]の有効ビット長は2であり、データ[0***]の有効ビット長は1である。各被検索データの最下位ビットから連続する1または複数のビットをドントケアビットに設定することができる。
ドントケアビットがあることにより、1つの検索キーに対して複数のデータが一致する場合がある。そこで、最長一致検索(longest prefix match search)が用いられる。最長一致検索は、より有効ビット長の長いデータを、検索キーに最も一致したデータと判定する検索方法である。
検索動作は、検索キー[0101]の入力により開始される。TCAM100は、検索テーブルであるメモリセルアレイ101全てを一括でチェックし、検索キー[0101]に一致した全ての被検索データに対応するアドレス情報をプライオリティ・エンコーダ102に通知する。図1の場合、[0101],[010*],[0***]の3つのデータが、検索キー[0101]に一致したと判断され、それぞれに対応するアドレス情報[0011],[0110],[1101]がプライオリティ・エンコーダ102に通知される。
プライオリティ・エンコーダ102は、優先順位が最も高い、すなわち、有効ビット長が最も長いデータ[0101]に対応するアドレス[0011]を出力する。ただし、実際上は、プライオリティ・エンコーダ102は、上記のように、検索キーに一致したデータのアドレス情報を入手することはできるが、各アドレス情報に対応するデータの有効ビット長を知る術がない。そこで、予めTCAM100に被検索データを格納する際に有効ビット長が長いデータほどアドレスが若くなるようにしておく。プライオリティ・エンコーダ102は、より若いアドレスを優先的に出力する。図1の場合、TCAM100は、検索結果としてアドレス[0011]を出力して、検索動作を終了する。以上により、検索キー[0101]に対して紐付けされた所定の処理を表すコード[0011]が得られたことになる。
[メモリセルの構成]
図2は、TCAMのメモリセルの一例を示す回路図である。図2を参照して、TCAMセルMCは、SRAM(Static Random Access Memory)によって構成される2つのサブメモリセルSMC1およびSMC2と、これらのサブメモリセルSMC1およびSMC2に格納されるビットデータと検索ビットデータを比較する比較部CMPを含む。
サブメモリセルSMC1は、インバータラッチを構成するインバータIV1およびIV2と、ワード線WL0上の信号に従ってインバータIV1の入力ノードおよび出力ノードをそれぞれビット線BLnおよび/BLnに結合するNチャネルMOSトランジスタNQ1およびNQ2とを含む。MOSトランジスタNQ1,NQ2の各ゲートはワード線WL0に接続される。記憶ノードND1およびND2には相補データが記憶される。
同様に、サブメモリセルSMC2は、インバータラッチを構成するインバータIV3およびIV4と、ワード線WL1上の信号に従ってインバータIV3の入力ノードおよび出力ノードをそれぞれビット線BLn+1および/BLn+1に結合するNチャネルMOSトランジスタNQ3およびNQ4を含む。MOSトランジスタNQ3,NQ4の各ゲートはワード線WL1に接続される。記憶ノードND3およびND4には相補データが記憶される。
比較部CMPは、マッチ線MLと接地ノードの間に直列に接続されるNチャネルMOSトランジスタNQ5およびNQ6と、マッチ線MLと接地ノードとの間に直列に接続されるNチャネルMOSトランジスタNQ7およびNQ8とを含む。MOSトランジスタNQ5のゲートは、サブメモリセルSMC1に設けられたインバータIV1の出力ノードND2(インバータIV2の入力ノード)に結合され、MOSトランジスタNQ6のゲートがサーチ線SLに結合される。MOSトランジスタNQ7のゲートが、サブメモリセルSMC2に設けられたインバータIV3の出力ノードND4(インバータIV4の入力ノード)に結合され、MOSトランジスタNQ8のゲートが補のサーチ線/SLに結合される。
サブメモリセルSMC1およびSMC2の記憶ノードND1およびND3に、それぞれビットデータ“1”が格納されている場合、比較部CMPにおいては、MOSトランジスタNQ5およびNQ7は常時オフ状態である。したがって、サーチ線SLおよび/SLを介して伝達される検索ビットデータの論理値にかかわらず、マッチ線MLはプリチャージ電位レベルに維持される。すなわちこの場合、CAMセルMCは、常時一致状態(ドントケア状態)を表現する。
サブメモリセルSMC1およびSMC2の記憶ノードND1およびND3に、それぞれビットデータ“0”が格納されている場合、比較部CMPにおいては、MOSトランジスタNQ5およびNQ7は常時オン状態である。この場合、サーチ線SLおよび/SLを介して伝達される検索ビットデータの論理値にかかわらず、MOSトランジスタNQ5およびNQ6の経路およびMOSトランジスタNQ7およびNQ8の経路の一方が、導通し、マッチ線MLが放電される。したがって、この場合には、TCAMセルは、常時不一致状態を表現する(通常、常時不一致状態は利用されない)。
サブメモリセルSMC1およびSMC2の記憶ノードND1およびND3に、それぞれビットデータ“1”および“0”が格納されている場合、MOSトランジスタNQ5は常時オフ状態になり、MOSトランジスタNQ7は常時オン状態になる。したがって、検索ビットデータが“0”のとき、すなわち、サーチ線/SLにHレベルの電位(“1”)のデータが伝達されたとき、マッチ線MLが放電され、TCAMセルは不一致状態を示す。逆に、検索ビットデータが“1”のとき、すなわち、サーチ線/SLにLレベルの電位(“0”)のデータが伝達されたとき、マッチ線MLはプリチャージ電位に保持され、TCAMセルは一致状態を示す。
サブメモリセルSMC1およびSMC2の記憶ノードND1およびND3に、それぞれビットデータ“0”および“1”が格納されている場合、MOSトランジスタNQ5が常時オン状態になり、MOSトランジスタNQ7は常時オフ状態になる。したがって、検索ビットデータが“1”のとき、すなわち、サーチ線SLにHレベルの電位(“1”)のデータが伝達されたとき、マッチ線MLが放電され、TCAMセルは不一致状態を示す。逆に、検索ビットデータが“0”のとき、すなわち、サーチ線SLにLレベルの電位(“0”)のデータが伝達されたとき、マッチ線MLはプリチャージ電位に保持され、TCAMセルは一致状態を示す。
なお、TCAMセルにおいて、図2に示すSRAMに代えて、DRAM(Dynamic Random Access Memory)セルまたはロジック回路を用いてもよい。
[TCAMの詳細構成]
図3は、TCAMの詳細な構成を示すブロック図である。図2、図3を参照して、TCAM100は、メモリセルアレイ101と、プライオリティ・エンコーダ102と、ワード線デコーダ104と、センスアンプ&ビット線ドライバ105_0〜105_nと、サーチ線ドライバ106と、プリチャージ電圧発生回路107とを含む。TCAM100は、さらに、メモリセルアレイ101の行にそれぞれ対応して設けられたワード線対WL0,WL1およびマッチ線MLと、列にそれぞれ対応して設けられたビット線対BL,/BLおよびサーチ線対SL,/SLとを含む。
メモリセルアレイ101に各行に設けられたn+1個のメモリセルMC_0〜MC_n(エントリ領域103)に対して1つのデータワードが格納される。したがって、図3のTCAM100には、メモリセルアレイ101の行数分のデータワードが格納可能である。
ワード線デコーダ104は、サブメモリセルSMC1またはSMC2からデータを読み出すときまたはサブメモリセルSMC1またはSMC2にデータを書き込むとき、対象となるサブメモリセルSMC1,SMC2に対応するワード線WL0またはWL1を活性化する。
センスアンプ105は、サブメモリセルSMC1またはSMC2からデータを読み出すときに、読み出し対象のサブメモリセルSMC1またはSMC2に対応するビット線対BL,/BLを介して記憶データを検出する。ビット線ドライバ105は、サブメモリセルSMC1またはSMC2にデータを書き込むときに、書き込み対象のサブメモリセルSMC1またはSMC2に対応するビット線対BL,/BLに書き込みデータに応じた電圧値を与える。
サーチ線ドライバ106は、データ検索時に検索キーの各ビットの論理レベルに対応した電圧をサーチ線SL,SL/を介して供給する。マッチ線MLは、データ検索時にプリチャージ電圧発生回路107によってプリチャージされる。検索キーに一致するデータワードが格納されている行のマッチ線MLは、プリチャージ電位がそのまま維持される。検索キーに不一致のデータワードが格納されている行のマッチ線MLは放電される。
[TCAMの問題点]
上記のように、TCAMは、特殊なメモリセルを使用することで、検索時に、全検索テーブル空間を一括して活性化させ、検索キーに一致するデータを検索する方式である。このため、検索速度は高速であるが、極めて消費電力が大きくなる問題がある。
さらに、最長一致検索を実行するためには、検索テーブルの作成時に有効ビット長の長いデータほど若いアドレスに格納する必要があり、アドレスの割当て制御が複雑になる。このため、新たな被検索データを格納する場合には、検索テーブルを作り直すメンテナンスに時間がかかる。
さらに、TCAMセルの専有面積が大きいために、全体の回路面積が大きくなってしまう。このため、図3のメモリセルアレイの行数が制限されることになり、格納可能なデータ数(エントリ数)が制限される。
<省電力検索エンジンについて>
[省電力検索エンジンの構成]
図4は、省電力検索エンジンの構成を模式的に示すブロック図である。図4では、図1のTCAMの場合と同様に、6つの被検索データ[0101],[010*],[0***],[1010],[101*],[10**]に対して、入力された検索キー[0101]を用いた検索が行なわれる例が示される。そして、検索キー[0101]に一致するデータ[0101],[010*],[0***]のうち、最も有効ビット長の長い[0101]に対応するコード[0011]が出力される例が示される。図1の場合と同様に検索キーのビット長Mを4としているが、実際には、よりビット長の長い検索キーおよび被検索データが用いられる。検索動作は、検索キー[0101]の入力によって開始される。
図4を参照して、省電力検索エンジン200は、記憶部201と、アドレス生成部202と、判定部203と、選択部204とを含む。以下、各構成要素の構成および動作について説明する。
1.記憶部
記憶部201は、DRAM、SRAMなどの汎用メモリによって構成される互いに空間サイズの異なる複数のメモリ空間を含む。検索テーブルは、これらのメモリ空間を用いて構築される。通常、検索キーのビット数M(M≧2)に応じて、互いに空間サイズの異なる1〜Mビットのアドレス長のM個のメモリ空間が設けられる。図4では、M=4として、1〜4ビット長のアドレスによってそれぞれ特定可能なメモリ空間P1〜P4が設けられる。さらに、検索キーに一致する被検索データが無かった場合に出力されるコードを格納するために、メモリP0(レジスタP0とも称する)が設けられる。メモリP0にはアドレスは振られていないが、以下では、便宜上、メモリP0をメモリ空間P0と称する場合がある。
被検索データは、その有効ビット長を基準にして複数のグループに分類される。図4に示す例の場合には、有効ビット長が1のデータ[0***]によって第1グループが構成され、有効ビット長が2のデータ[10**]によって第2グループが構成され、有効ビット長が3のデータ[010*],[101*]によって第3グループが構成され、有効ビット長が4のデータ[0101],[1010]によって第4グループが構成される。
記憶部201に設けられる複数のメモリ空間P1〜P4は、これらの複数のグループにそれぞれ対応する。各グループに属する被検索データの有効ビット長は、対応するメモリ空間を特定するアドレスの長さに等しい。各メモリ空間において、各被検索データの有効ビット部分(ドントケアビットを除く部分)をアドレスとしたときに特定される領域には、各被検索データに対応する所定のコードが格納される。ここで、所定のコードとは、ネットワークに設けられたルータの場合には出力ポートに関係付けられた情報に相当し、図1の場合にはTCAMのアドレスに相当する。
具体的に説明すると、図1の被検索データ[0101],[1010]にそれぞれ対応するアドレス[0011],[0100]が、図4では、メモリ空間P4内のアドレス[0101],[1010]によって特定される領域にそれぞれ格納される。図1の被検索データ[010*],[101*]にそれぞれ対応するアドレス[0110],[1000]が、図4では、メモリ空間P3内のアドレス[010],[101]によって特定される領域にそれぞれ格納される。図1の被検索データ[10**]に対応するアドレス[1011]が、図4では、メモリ空間P2内のアドレス[10]によって特定される領域に格納される。図1の被検索データ[0***]に対応するアドレス[1101]が、図4では、メモリ空間P1内のアドレス[0]によって特定される領域に格納される。つまり、図1ではTCAM内に格納されていた被検索データのうち、有効ビット部分(ドントケアビットを除く部分)が、図4ではアドレスとして用いられ、図1ではTCAMのアドレスであったものが、図4ではメモリに格納される所定のコードとして用いられている。
さらに、図4に示すように、各メモリ空間において、各アドレスによって特定される領域ごとに、所定のコードが格納された有効な領域であるか、所定のコードが格納されていない無効な領域であるかを示すバリッドビット(Valid bit)を設けておくのが好ましい。
具体的に図4の場合、アドレス[0101],[010],[0]によって特定される領域には、それぞれデータ[0011],[0110],[1101]が格納されるとともに、バリッドビット「1」(「有効」を表わす)が格納される。同様に、アドレス[1010],[101],[10]によって特定される領域には、それぞれデータ[0100],[1000],[1011]が格納されるとともに、バリッドビット「1」が格納される。メモリP0には、データ[1111]ともにバリッドビット「1」が格納される。その他の領域には、バリッドビット「0」(「無効」を表わす)が格納される。
2.アドレス生成部
アドレス生成部202は、M個のメモリ空間の各々を特定するアドレスの長さに等しいビット数のデータを検索キーの最上位ビット側から抽出することによって、M個の読出アドレスを生成する。M個の読出アドレスは、1〜Mビットの各ビット長をそれぞれ有する。アドレス生成部202は、生成したM個の読出アドレスを記憶部201に出力する。
具体的に図4の場合には、アドレス生成部202は、検索キー[0101]の上位4ビット[0101]をメモリ空間P4の読出アドレスとして記憶部201に出力し、検索キーの上位3ビット[010]をメモリ空間P3の読出アドレスとして記憶部201に出力する。アドレス生成部202は、さらに、検索キーの上位2ビット[01]をメモリ空間P2の読出アドレスとして記憶部201に出力し、検索キーの上位1ビット[0]をメモリ空間P1の読出アドレスとして記憶部201に出力する。
メモリ空間P1〜P4から読み出された読出データは、それぞれデータバスB1〜B4を通って判定部203に送信される。さらに、メモリP0に格納されたデータは、データバスB0を通って判定部203に送信される。データバスB0〜B4をそれぞれメモリ空間P0〜P4専用に設けることによって、各メモリ空間からのデータの読出しを並行して独立に行なうことができる。
3.判定部
判定部203は、M個の読出アドレスによってM個のメモリ空間からそれぞれ読み出されたM個の読出データの各々が、所定のコードを含む有効な読出データであるか否かを判定する。具体的には、判定部203は、各読出データに含まれるバリッドビットが有効(「1」)であるか否かによって、各読出データが有効であるか否かを判定する。
具体的に図4の場合、メモリ空間P0〜P4からは、それぞれデータ[1/1111],[1/1101],[0/−],[1/0110],「1/0011」が読み出される。ここで、読出データは「バリッドビット/所定のコード]の順に並んでいるとする。判定部203は、メモリ空間P2から読み出されたデータに含まれるバリッドビットは「0」であるので、この読出データは無効であると判定する。そして、判定部203は、有効と判定したデータ[1/1111],[1/1101],[1/0110],「1/0011」のみを選択部204に出力する。
4.選択部
選択部204は、判定部203によって有効と判定された読出データのうち、最も優先順位が高い、すなわち最も空間サイズの大きい(アドレスサイズが大きい)メモリ空間から読み出された読出データを選択し、選択した読出データに含まれる所定のコードを出力する。図4の場合、メモリ空間P4から読み出されたデータ「1/0011」に含まれるコード[0011]が、省電力検索エンジン200による検索結果として出力される。
以上によって、図1の場合と同様に、検索キー[0101]に対して紐付けされた所定の処理を表すコード[0011](検索結果)を得ることができる。
ここで、メモリP0は、いずれのメモリ空間P1〜P4よりも優先順位が低い。もし、メモリ空間P1〜P4から読み出された読出データがいずれも判定部203によって無効と判定された場合(記憶部201の格納データが検索キーに一致しなかった場合)、選択部204は、メモリP0の読出データ[1/1111]に含まれるコード[1111]を検索結果として出力する。この場合、メモリP0の読出データ[1/1111]が、有効と判定された読出データのうちで最も優先順位が高いメモリ空間P0から読み出されたことになる。
[省電力検索エンジンの特徴および問題点]
上記の省電力検索エンジンによれば、TCAMという特殊なメモリセル構造を使用することなく、汎用メモリセル構造のみで安価な検索システムを構築することができる。この場合、検索キーから、各メモリ空間の読出アドレス(読出アドレス)が一意に定まるので、記憶部201において動作しているのは、読出アドレスによってアクセスされている領域のみである。したがって、全検索テーブル空間をチェックして、検索キーに一致する被検索データを探すTCAMに比べて低消費電力化が実現できる。
さらに、各メモリ空間専用のデータバスを介して、各メモリ空間から並行かつ独立してデータを読み出すことによって、高速検索が可能になる。
最長一致検索の実装において、従来のTCAMを用いた検索やリニア検索の場合には、若いアドレスに格納されるデータほど有効ビット長が長くなるように検索テーブルを作成する必要があり、アドレスの割当てが複雑であった。これに対して、図4の省電力検索エンジンの場合には、被検索データの有効ビット長に応じて異なるメモリ空間に割当てるだけでよいので、テーブルの書換えが容易になる。エントリ数も多くできる。
図4の省電力検索エンジンの問題点は、検索キーのビット長を長くできないことである。これは検索テーブルのサイズが大きくなるため、メモリを搭載できる容量を超えてしまうからである。検索キーのビット長は23ビットが実際上の限界である。
たとえば、図4のようにバリッドビットに1ビット、検索テーブルに4ビットを割り当てた構成で、検索キーが4ビットの場合のメモリ容量は、
5×(2^1+2^2+2^3+2^4)=150
である(ただし、x^yは、xのy乗を表わす)。検索キーを1ビット増やして5ビットにすると、メモリ容量は、
5×(2^1+2^2+2^3+2^4+2^5)=310
に増加する。すなわち検索キーのビット長が増えると、メモリ容量は指数関数的に増加する。逆の考え方をすると検索キーのビット長が短いときは、省電力検索エンジンは非常に有効である。
以下の各実施の形態では、小容量のTCAMと省電力検索エンジンとを組み合わせることによって、検索キーのビット長が増えたときにメモリ容量の増大を抑えるようにしている。
<実施の形態1>
図5は、実施の形態1による検索システムの構成を示すブロック図である。図5では、IPv4(Internet Protocol Version 4)用のIPアドレスの検索に用いられる場合を想定し、検索キーのビット数Lを32ビットにしている。
図5を参照して、検索システム1は、ビット長L(L=32)の複数のデータワードを登録可能であり、ビット長Lの検索キーと一致するデータワードを検索する。ここで、各データワードの最下位ビット側から連続する1または複数ビットは、ドントケアビットに設定可能である。
具体的に、検索システム1は、ビット長M(M=23)のデータを格納可能な複数個(2個)の省電力検索エンジン(第1の検索部)11A,11Bと、ビット長L(L=32)のデータを格納可能な小容量TCAM(第2の検索部)10と、選択回路12とを含む。
省電力検索エンジン11Aは、最上位ビットが“0”かつ有効ビット長が24ビット以下のデータワードの登録に用いられ、省電力検索エンジン11Bは、最上位ビットが“1”かつ有効ビット長が24ビット以下のデータワードの登録に用いられる。一方、小容量TCAM10には、有効ビット長が25ビット以上のデータワードの登録に用いられる。
すなわち、省電力検索エンジン11A,11Bには、データワードからN個(N=9)の特定ビットを除いたデータワードの一部が格納されている。具体的に、省電力検索エンジン11A,11Bには、有効ビット長が24ビット以下の各データワードのうち、最上位ビットと最下位ビットから8ビット分とを特定ビットとして除いた23ビットのビット列が格納されている。
省電力検索エンジン11Aは、入力された検索キーの最上位ビットが“0”の場合に通常の検索結果を出力し、入力された検索キーの最上位ビットが“1”の場合には一致データ無しという結果を出力するように構成されている。省電力検索エンジン11Bは、入力された検索キーの最上位ビットが“1”の場合に通常の検索結果を出力し、入力された検索キーの最上位ビットが“0”の場合には一致データ無しという結果を出力するように構成されている。
選択回路12は、省電力検索エンジン11A,11Bおよび小容量TCAM10の検索結果に基づいて、いずれかの検索結果を出力する。具体的に、小容量TCAM10において検索キーに一致する格納データが検索された場合には、選択回路12は、この格納データに対応するアドレスを出力する。小容量TCAM10において検索キーに一致する格納データが検索されなかった場合には、選択回路12は、省電力検索エンジン11A,11Bのうちで一致する格納データが検索されたほうの検索結果を出力する。
図6は、IPv4用のIPアドレスにおいて、通常の場合の有効ビット長とエントリ数との関係を示す図である。図6に示すようにルータの検索テーブルの登録されたほとんどのIPアドレスの有効ビット長は24ビット以下であることがわかる。このため、図5の小容量TCAM10に登録されるデータワード数は少なくて済む。さらに、省電力検索エンジン11A,11Bに格納されるデータのビット数は23に抑えられている。したがって、実施の形態1によれば、低消費電力かつ高速の検索が可能であり、さらに、メモリ容量の比較的小さな検索システムを実現することができる。
図7は、図5の検索システムにおけるデータの割り当てについて説明するための図である。
図7(A)、図7(B)に示すデータワードは、ビット_31(最上位ビット)が“0”であり、ビット_7〜ビット_0がドントケアビット(*)である。したがって、これらの特定ビットを除く、ビット_30〜ビット_8のビット列が図5の省電力検索エンジン11Aに格納される。
図7(C)、図7(D)に示すデータワードは、ビット_31(最上位ビット)が“1”であり、ビット_7〜ビット_0がドントケアビット(*)である。したがって、これらの特定ビットを除く、ビット_30〜ビット_8のビット列が図5の省電力検索エンジン11Bに格納される。
図7(E)に示すデータワードは、有効ビット長が28ビットであり、24ビットを超えている。したがって、このデータワードの全ビットが小容量TCAM10に格納される。
<実施の形態2>
図8は、実施の形態2による検索システムの構成を示すブロック図である。実施の形態2の検索システム2は、ビット長Lの複数のデータワードを登録可能であり、入力されたビット長Lの検索キーと一致するデータワードを検索する。ここで、各データワードの最下位ビット側から連続する1または複数ビットは、ドントケアビットに設定可能である。
検索システム2では、ビット長LのデータワードをN個の特定ビットとM個の(M=L−N)の非特定ビットに区分する(Mは23以下であることが望ましい)。ここで、データワードのうちN個の特定ビットの部分の種類が少数(たとえば、10個程度以下)であれば、小容量TCAMでN個の特定ビットからなるビット列のプリサーチを行ない、プリサーチの結果に応じて省電力検索エンジンで残りの非特定ビットからなるビット列の検索を行なうように検索システムを構築することができる。以下、図面を参照して具体的に説明する。
図8を参照して、検索システム2は、ビット長Nのデータを格納可能な小容量TCAM(第3の検索部)20と、ビット長Mのデータを格納可能な複数個(p個)の省電力検索エンジン(第1の検索部)21_1〜21_pと、ビット長L(ただし、L=N+M)のデータを格納可能な小容量TCAM(第2の検索部)22と、選択回路23とを含む。
小容量TCAM20は、ビット長Lの検索キーのうちN個の特定ビットからなるビット列と一致する格納データを検索する。小容量TCAM20の検索結果は、省電力検索エンジン21_1〜21_p、小容量TCAM22、および選択回路23に出力される。
省電力検索エンジン21_1〜21_pは、小容量TCAM20に格納された複数のデータにそれぞれ対応して設けられる。各省電力検索エンジン21に格納されたMビットのデータのうち最下位ビット側から連続する1または複数ビットはドントケアビットに設定することができる。各省電力検索エンジン21は、検索キーに含まれるビット長Mの非特定ビット列と一致する格納データのうちで、有効ビット長が最長のものを検索する。各省電力検索エンジン21の検索結果は、選択回路23に出力される。
小容量TCAM22は、小容量TCAM20と省電力検索エンジン21_1〜21_pとによって構成される検索テーブルからあふれた例外的なデータワードを格納するために設けられている。通常、小容量TCAM22に格納されているビット長Lのデータのうち特定ビットからなるビット長Nのデータ列は、小容量TCAM20の格納データのいずれにも一致しない。小容量TCAM22に格納されたLビットのデータのうち最下位ビット側から連続する1または複数ビットはドントケアビットに設定することができる。小容量TCAM22は、検索キーと一致する格納データのうちで有効ビット長が最長のものを検索する。
選択回路23は、小容量TCAM20、省電力検索エンジン21_1〜21_p、および小容量TCAM22の各検索結果に基づいて、いずれかの検索結果を選択する。具体的に、小容量TCAM22において検索キーに一致する格納データが検索された場合には、選択回路23は、この格納データに対応するアドレスを出力する。小容量TCAM20において検索キーの特定ビット列に一致する格納データが検索され、省電力検索エンジン21_1〜21_pのうちの複数において検索キーの非特定ビット列に一致する格納データが検索された場合には、選択回路23は、小容量TCAM20で検索された格納データに対応する省電力検索エンジンの検索結果を選択する。
図9は、図8のプリサーチ用の小容量TCAMに割り当てられる特定ビットの例について説明するための図である。図9の場合、検索キーのビット長は20ビットである。このうち、最上位ビット(MSB:Most Significant Bit)側の10ビットが特定ビットとして図8の小容量TCAM20に割り当てられ、最下位ビット(LSB:Least Significant Bit)側の10ビットが非特定ビットとして図8の省電力検索エンジン21_1〜21_pに割り当てられる。小容量TCAM20に格納されているビット長が10ビットのデータ数は少数である必要がある。
図10は、図8のプリサーチ用の小容量TCAMに割り当てられる特定ビットの他の例について説明するための図である。図10の場合、検索キーのビット長は20ビットである。最上位ビットをビット_19とし、最下位ビットをビット_0とすると、ビット_19、ビット_18、ビット_17、ビット_16、ビット_13、およびビット_12が特定ビットとして図8の小容量TCAM20に割り当てられる。このように、特定ビットは不連続であっても構わない。
図11は、IPv4のIPアドレスを検索するための検索テーブルの作成について説明するための図である。図11の例では、図8のプリサーチ用の小容量TCAM20に割り当てられる特定ビットは、ビット_20〜ビット_25と、ビット_28〜ビット_31の10ビットである。残りの22ビット(ビット_0〜ビット_19、ビット_26、ビット_27)が非特定ビットとして省電力検索エンジン21に割り当てられる。
具体的に、図11(A)、図11(B)に示すデータワードは、特定ビットの値が一致しているので、共通の省電力検索エンジン21_1に割り当てられる。図11(A)に示すデータワードと図11(B)に示すデータワードの間の値を有するデータワード(ビット_0〜ビット_19が異なるもの)も同じ省電力検索エンジン21_1に割り当てることができる。
同様に、図11(C)、図11(D)に示すデータワードは、特定ビットの値が一致しているので、共通の省電力検索エンジン21_2に割り当てられる。図11(C)に示すデータワードと図11(D)に示すデータワードの間の値を有するデータワード(ビット_0〜ビット_19が異なるもの)も同じ省電力検索エンジン21_2に割り当てることができる。
図11(E)に示すデータワードは、特定ビットの値が図11(A)〜(D)に示すデータワードと異なり、さらに、非特定ビットからなるビット列の種類が少ない場合の例を示すものである。このように、検索テーブルに登録するデータワードのうち上位ビットの共通するものが少ない場合には、小容量TCAM22に割り当てるのが望ましい。
図12は、図11に対応する検索システムの例を示す図である。図12を参照して、小容量TCAM20に格納されるデータ(ビット長N=10)の種類は8種類であったとする。この場合、小容量TCAM20の格納データにそれぞれ対応して、ビット長M=22のデータを格納可能な8個の省電力検索エンジン21_1〜21_8が設けられる。
ここで、ビット長M=23の省電力検索エンジンは、ビット長M=22の2個の省電力検索エンジンとして使用することもできるし、ビット長M=21の4個の省電力検索エンジンとして使用することもできるし、ビット長M=20の8個の省電力検索エンジンとして使用することができる。したがって、非特定ビットのビット数に応じてビット長の異なる検索エンジンを準備しなくてもよい。
たとえば、図4に示すM=4の省電力検索エンジンは、アドレスの最上位ビットが0の場合と1の場合とに区分すれば、M=3の2個の省電力検索エンジンとして使用することができる。この場合、アドレス生成部202は、実際の3ビットの検索キーに最上位ビット(ヘッダ)として0および1がそれぞれ付加された仮想的な4ビットの検索キーに基づいて、メモリ空間P2〜P4を検索するためのアドレスを生成する。メモリ空間P1およびP0は用いられない。
図12の場合には、ビット長M=23の4個の省電力検索エンジンをビット長M=22の8個の省電力検索エンジンとして使用している。たとえば、省電力検索エンジン21_1,21_2によって1つのビット長M=23の省電力検索エンジンが構成されている。
上記のように、実施の形態2においても、低消費電力かつ高速の検索が可能であり、さらに、メモリ容量の比較的小さな検索システムを実現することができる。
<実施の形態3>
[省電力検索エンジン200Aの構成]
図13は、実施の形態3による検索システムで用いられる省電力検索エンジン200Aの構成を示すブロック図である。
実施の形態3による検索システムの全体構成は実施の形態1,2の場合と同様であるが、省電力検索エンジンの構成が図4で説明した省電力検索エンジン200と異なる。具体的には、図13の省電力検索エンジン200Aは、遮断部205をさらに含む点で図4の省電力検索エンジン200と異なる。図14、図15で後述するように、記憶部201を構成するメモリ空間P1〜P4およびメモリP0のうち一部のみを使用する場合に、使用しないメモリ空間からの読出データを無効にするために設けられている。
図13を参照して、遮断部205は、M個(M=4)のメモリ空間P1〜P4およびメモリP0から読み出されたM+1個の読出データのうち、判定部203による判定対象にしない読出データの転送を遮断する。これによって、判定部203による判定対象になる読出データのみが記憶部201から判定部203に転送され、転送された読出データが所定のコードを含む有効な読出データであるか否か(すなわち、バリッドビットが“1”であるか否か)が、判定部203によって判定される。
ここで、検索システム内には、レジスタまたはフューズ206が設けられる。メモリ空間P1〜P4およびメモリP0から読み出された読出データのうち、どの読出データの判定部203への転送を遮断するかは、このレジスタまたはフューズ206によって予め設定することができる。
具体的に図13の場合には、遮断部205は、メモリ空間P1およびメモリP0から読み出された読出データの転送を遮断する。判定部203は、遮断部205によって遮断されていないメモリ空間P2〜P4から読み出された読出データについて、バリッドビットが有効であるか否かを判定する。この結果、判定部203は、メモリ空間P4から読み出されたデータ[1/0011]とメモリ空間P3から読み出されたデータ[1/0110]を有効と判定し、メモリ空間P2から読み出されたデータ[0/−]を無効と判定する。選択部204は、判定部203によって有効と判定された読出データのうち、最も優先順位が高いメモリ空間P4から読み出されたデータに含まれるコード[0011]を出力する。
[省電力検索エンジン200Aの使用例1]
図14は、図13の省電力検索エンジン200Aの使用例を説明するための図である。図14では、4ビットの検索キーに対応した省電力検索エンジン200Aを、2ビットの検索キーに対応した4つの省電力検索エンジンとして使用する例が示されている。この場合、記憶部201は、4つの記憶部(検索テーブル)201_0,201_1,201_2,201_3に分割される。記憶部201_0〜201_3のうち、どの記憶部を検索対象にするかは、検索キーに付加する2ビットのヘッダによって区別される。図14の場合、記憶部201_0,201_1,201_2,201_3は、ヘッダ“00”,“01”,“10”,“11”によってそれぞれ区別される。
たとえば、記憶部201_1を検索対象として2ビットの検索キー“01”を用いた検索を実行する場合には、検索キー“01”にヘッダ“01”が付加された4ビットの検索キー“0101”がアドレス生成部202に入力される。アドレス生成部202は、メモリ空間P4用の読出アドレス[0101]、メモリ空間P3用の読出アドレス[010],メモリ空間P2用の読出アドレス[01]、およびメモリ空間P1用の読出アドレス[0]を生成する。各メモリ空間P1〜P4からは、対応の読出アドレスによって特定された領域の格納データが読み出される。ただし、メモリ空間P1,P0の読出データは検索結果として使用されない。
同様に、記憶部201_2を検索対象として2ビットの検索キー“01”を用いた検索を実行する場合には、検索キー“01”にヘッダ“10”が付加された4ビットの検索キー“1001”がアドレス生成部202に入力される。アドレス生成部202は、メモリ空間P4用の読出アドレス[1001]、メモリ空間P3用の読出アドレス[100],メモリ空間P2用の読出アドレス[10]、およびメモリ空間P1用の読出アドレス[1]を生成する。各メモリ空間P1〜P4からは、対応の読出アドレスによって特定される領域の格納データが読み出される。
上記の各例では、メモリ空間P1およびメモリP0からの読出データは検索結果として使用されない。このために、図13で説明した遮断部205が設けられている。メモリ空間P1およびメモリP0からの読出データは遮断部205によって遮断されるために、判定部203に転送されず、判定部203の判定対象とならない。
仮に遮断部205を設けていないとすると、メモリ空間P2〜P4までの検索結果がミスのときに、メモリ空間P1およびメモリP0の格納データが省電力検索エンジン200A全体の検索結果となる場合があり得る。この場合に、実際の検索には使用しないメモリ空間P1およびメモリP0に不良が存在すると、これらのメモリを使用していないにもかかわらず、省電力検索エンジン全体が不良品となってしまう。図13の遮断部205を設けることによって、このような不都合を避けることができ、製品の歩留まりを上げることができる。
[省電力検索エンジン200Aの使用例2]
図15は、図13の省電力検索エンジン200Aのその他の使用例を説明するための図である。図15では、4ビットの検索キーに対応した省電力検索エンジン200Aを、3ビットの検索キーに対応した1つの省電力エンジンとして使用する例が示されている。この場合、メモリ空間P3〜P1およびメモリP0が3ビットの検索キーに対応した省電力検索エンジン用の記憶部207(検索テーブル)として用いられ、メモリ空間P4は用いられない。
たとえば、3ビットの検索キー“010”を用いた検索を実行する場合には、検索キー“010”に1ビットのフッタ(フッタは“0”でも“1”でもよい)を付加した検索キー“0100”(または“0101”)がアドレス生成部202に入力される。アドレス生成部202は、メモリ空間P4用の読出アドレス[0100]、メモリ空間P3用の読出アドレス[010]、メモリ空間P2用の読出アドレス[01]、およびメモリ空間P1用の読出アドレス[0]を生成する。各メモリ空間P1〜P4からは、対応の読出アドレスによって特定される領域の格納データが読み出される。ただし、検索に用いられないメモリ空間P4からの読出データは遮断部205によって遮断されるために、判定部203に転送されない。判定部203は、メモリP0およびメモリ空間P1〜P3の各読出データが有効か否かを判定し、選択部204は、判定部203によって有効と判定された読出データのうち最も優先順位の高いメモリ空間P3に格納されているコード“0110”を検索結果として出力する。
なお、4ビットの検索キーに対応した省電力検索エンジン200Aを、3ビットの検索キーに対応した2つの省電力エンジンとして使用することもできる。この場合、メモリ空間P1〜P4が、2つの記憶部(検索テーブル)に分割される。第1の記憶部は、図14の記憶部201_0,201_1とメモリ空間P1のアドレス“0”の領域とによって構成される(対応するヘッダは“0”)。第2の記憶部は、図14の記憶部201_2,201_3とメモリ空間P1のアドレス“1”の領域とによって構成される(対応するヘッダは“1”)。メモリP0は使用されない。アドレス生成部202には、使用する記憶部に応じたヘッダ(“0”または“1”)を3ビットの検索キーに付加することによって得られる4ビットの検索キーが入力される。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
1,2 検索システム、11A,11B,21,200,200A 省電力検索エンジン、12,23 選択回路、10,20,22 小容量TCAM、100 TCAM、101 メモリセルアレイ、102 プライオリティ・エンコーダ、104 ワード線デコーダ、105 センスアンプ&ビット線ドライバ、106 サーチ線ドライバ、107 プリチャージ電圧発生回路、201 記憶部、202 アドレス生成部、203 判定部、204 選択部、BL,/BL ビット線、CMP 比較部、MC メモリセル(TCAMセル)、ML マッチ線、P1〜P4 メモリ空間、P0 メモリ(レジスタ)、SL,/SL サーチ線、SMC1,SMC2 サブメモリセル、WL0,WL1 ワード線。

Claims (9)

  1. 各々が、ビット長Mの複数のデータを格納可能であり、入力されたビット長L(ただし、L>M)の検索キーのうち予め定めるN個(ただし、N=L−M)の特定ビットを除くビット長Mの非特定ビット列と一致する格納データを第1の検索方式で検索する複数の第1の検索部と、
    ビット長Lの複数のデータを格納可能であり、前記検索キーと一致する格納データを前記第1の検索方式と異なる第2の検索方式で検索する第2の検索部と、
    前記複数の第1の検索部および前記の第2の検索部の各々の検索結果に基づいて、いずれか1つの検索部の検索結果を選択する選択回路とを備えた検索システム。
  2. 前記複数の第1の検索部および前記第2の検索部の各々は、
    最下位ビット側から連続する1または複数のドントケアビットを含むデータを格納可能であり、
    検索された格納データのうち、ドントケアビットを除く有効ビット長が最長の格納データに対応する情報を検索結果として出力するように構成されている、請求項1に記載の検索システム。
  3. ビット長Nの複数のデータを格納可能であり、前記検索キーのうち前記N個の特定ビットからなるビット列と一致する格納データを前記第2の検索方式で検索する第3の検索部をさらに備え、
    前記複数の第1の検索部は、前記第3の検索部に格納されている複数のデータにそれぞれ対応し、
    前記選択回路は、前記複数の第1の検索部から出力された複数の検索結果のうちの1つを選択する場合には、前記第3の検索部によって検索された格納データに対応する第1の検索部の検索結果を選択する、請求項2に記載の検索システム。
  4. 前記第2の検索部および前記第3の検索部はTCAM(Ternary Content Addressable Memory)を含み、
    前記複数の第1の検索部の各々はTCAMを含まない、請求項3に記載の検索システム。
  5. 前記第2の検索部はTCAM(Ternary Content Addressable Memory)を含み、
    前記複数の第1の検索部の各々はTCAMを含まない、請求項2に記載の検索システム。
  6. 各前記第1の検索部は、M個のメモリ空間を有する記憶部を含み、
    第i番目(ただし、1≦i≦M)のメモリ空間には、ビット数iのアドレスが割り当てられ、
    アドレスサイズの大きいメモリ空間ほど優先順位が高く、
    各前記第1の検索部において、各格納データの有効ビット部分をアドレスとして特定される前記メモリ空間の記憶領域には、各格納データに対応するコードが記憶され、
    各前記第1の検索部は、さらに、
    前記ビット長Mの非特定ビット列の最上位ビット側から、連続するj個(ただし、1≦j≦M)のビットを抽出することによって、前記M個のメモリ空間にそれぞれ対応するM個の読出アドレスを生成するアドレス生成部と、
    前記M個の読出しアドレスによって前記M個のメモリ空間からそれぞれ読み出された読出データが、前記コードを含む有効な読出データであるか否かを判定する判定部と、
    前記判定部によって有効と判定された読出データのうち、最も前記優先順位の高いメモリ空間から読み出された読出データに含まれるコードを選択して出力する選択部とを含む、請求項4または5に記載の検索システム。
  7. 前記M個のメモリ空間からそれぞれ読み出されたM個の読出データのうち予め定める1または複数を除く読出データは、前記判定部の判定対象として設定可能であり、
    前記判定部は、判定対象に設定された読出データについて有効か否かを判定する、請求項6に記載の検索システム。
  8. 各前記第1の検索部は、M個のメモリ空間およびレジスタを有する記憶部を含み、
    第i番目(ただし、1≦i≦M)のメモリ空間には、ビット数iのアドレスが割り当てられ、
    アドレスサイズの大きいメモリ空間ほど優先順位が高く、
    各前記第1の検索部において、各格納データの有効ビット部分をアドレスとして特定される前記メモリ空間の記憶領域には、各格納データに対応するコードが記憶され、
    前記レジスタには、いずれの前記格納データも前記ビット長Mの非特定ビット列に一致しなかったときに出力するためのコードが記憶され、
    前記レジスタは、前記M個のメモリ空間のいずれよりも優先順位が低く、
    各前記第1の検索部は、さらに、
    前記ビット長Mの非特定ビット列の最上位ビット側から、連続するj個(ただし、1≦j≦M)のビットを抽出することによって、前記M個のメモリ空間にそれぞれ対応するM個の読出アドレスを生成するアドレス生成部と、
    前記M個の読出しアドレスによって前記M個のメモリ空間からそれぞれ読み出された読出データおよび前記レジスタから読み出された読出データが、前記コードを含む有効な読出データであるか否かを判定する判定部と、
    前記判定部によって有効と判定された読出データのうち、最も前記優先順位の高いメモリ空間または前記レジスタから読み出された読出データに含まれるコードを選択して出力する選択部とを含む、請求項4または5に記載の検索システム。
  9. 前記M個のメモリ空間からそれぞれ読み出されたM個の読出データおよび前記レジスタから読み出された読出データのうち予め定める1または複数を除く読出データは、前記判定部の判定対象として設定可能であり、
    前記判定部は、判定対象に設定された読出データについて有効か否かを判定する、請求項8に記載の検索システム。
JP2013092374A 2012-11-21 2013-04-25 検索システム Active JP6170718B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2013092374A JP6170718B2 (ja) 2012-11-21 2013-04-25 検索システム
US14/085,596 US9552881B2 (en) 2012-11-21 2013-11-20 Search system comprising first and second search units with different search schemes that respectively use specific and non-specific bit strings of search key

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012254983 2012-11-21
JP2012254983 2012-11-21
JP2013092374A JP6170718B2 (ja) 2012-11-21 2013-04-25 検索システム

Publications (3)

Publication Number Publication Date
JP2014123936A true JP2014123936A (ja) 2014-07-03
JP2014123936A5 JP2014123936A5 (ja) 2016-03-24
JP6170718B2 JP6170718B2 (ja) 2017-07-26

Family

ID=50880813

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013092374A Active JP6170718B2 (ja) 2012-11-21 2013-04-25 検索システム

Country Status (2)

Country Link
US (1) US9552881B2 (ja)
JP (1) JP6170718B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017049753A (ja) * 2015-09-01 2017-03-09 ルネサスエレクトロニクス株式会社 半導体装置および情報処理システム

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778197B (zh) * 2014-12-30 2019-02-01 北京锐安科技有限公司 一种数据查找方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06261078A (ja) * 1993-03-03 1994-09-16 Hitachi Ltd テーブル検索方法及びルータ装置
JPH0823347A (ja) * 1994-07-08 1996-01-23 Nippon Telegr & Teleph Corp <Ntt> 方路選択方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6744652B2 (en) * 2001-08-22 2004-06-01 Netlogic Microsystems, Inc. Concurrent searching of different tables within a content addressable memory
JP3639553B2 (ja) 2001-10-23 2005-04-20 インターナショナル・ビジネス・マシーンズ・コーポレーション ルーティング処理装置およびルーティング方法
JP3936883B2 (ja) * 2002-04-08 2007-06-27 株式会社日立製作所 フロー検出装置およびフロー検出機能を備えたパケット転送装置
US6771525B2 (en) * 2002-05-31 2004-08-03 Mosaid Technologies Incorporated Method and apparatus for performing variable word width searches in a content addressable memory
JP4336625B2 (ja) 2004-06-17 2009-09-30 株式会社日立製作所 パケット転送装置
US7707217B2 (en) * 2005-01-24 2010-04-27 3Com Corporation Trie search engines and ternary CAM used as pre-classifier
JP2013038536A (ja) 2011-08-05 2013-02-21 Renesas Electronics Corp 半導体装置
WO2013071183A1 (en) * 2011-11-11 2013-05-16 Tabula, Inc. Content addressable memory in integrated circuit
US8619451B1 (en) * 2012-01-06 2013-12-31 Netlogic Microsystems, Inc. Power savings in a content addressable memory device using masked pre-compare operations
US9269411B2 (en) * 2012-03-14 2016-02-23 Broadcom Corporation Organizing data in a hybrid memory for search operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06261078A (ja) * 1993-03-03 1994-09-16 Hitachi Ltd テーブル検索方法及びルータ装置
JPH0823347A (ja) * 1994-07-08 1996-01-23 Nippon Telegr & Teleph Corp <Ntt> 方路選択方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017049753A (ja) * 2015-09-01 2017-03-09 ルネサスエレクトロニクス株式会社 半導体装置および情報処理システム

Also Published As

Publication number Publication date
US9552881B2 (en) 2017-01-24
US20140160825A1 (en) 2014-06-12
JP6170718B2 (ja) 2017-07-26

Similar Documents

Publication Publication Date Title
US6934796B1 (en) Content addressable memory with hashing function
US6697276B1 (en) Content addressable memory device
US6910097B1 (en) Classless interdomain routing using binary content addressable memory
US8462532B1 (en) Fast quaternary content addressable memory cell
US7602629B2 (en) Content addressable memory
US6751110B2 (en) Static content addressable memory cell
JP3599273B2 (ja) 内容参照可能メモリの改良
US7280379B2 (en) CAM device and method for repairing the same
US7057913B2 (en) Low-power search line circuit encoding technique for content addressable memories
US20030005210A1 (en) Intelligent CAM cell for CIDR processor
US7251707B1 (en) Content based content addressable memory block enabling using search key
US7525867B2 (en) Storage circuit and method therefor
US7219188B1 (en) Segmented content addressable memory array and priority encoder
JP6170718B2 (ja) 検索システム
US10545878B2 (en) Search memory
JP4850403B2 (ja) マグニチュード内容参照可能メモリ
US6898100B2 (en) Semiconductor memory device used for cache memory
JPH05198186A (ja) 連想メモリシステム
US11631459B2 (en) Dual compare ternary content addressable memory
US7894226B2 (en) Content addressable memory based on a ripple search scheme
JP5632797B2 (ja) 連想メモリ、およびネットワークアドレス検索装置
JP3908209B2 (ja) ダイナミック連想記憶セル
JP2004253023A (ja) 連想メモリ
JPH0235689A (ja) 連想メモリ装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160204

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161122

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170613

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170703

R150 Certificate of patent or registration of utility model

Ref document number: 6170718

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150