(57)【要約】【課題】消費電力が少なくかつ高速な検索処理が可能な半導体装置を提供する。【解決手段】半導体装置５において、複数のメモリ空間Ｍ１〜Ｍ４は、同一の有効ビット長の検索対象データごとに構成された複数のグループにそれぞれ対応する。各メモリ空間において、対応するグループに属する各検索対象データの有効ビット部分をアドレスとしたときに特定される領域には、各検索対象データに対応した所定のコードが予め格納される。サブ検索キー生成部は、各メモリ空間を特定するアドレスの長さに等しいビット数分のデータを検索キーの最上位ビット側から抽出することによって複数のサブ検索キーを生成する。複数のサブ検索キーを読出アドレスとして複数のメモリ空間からそれぞれ読み出されたコードのうち、最も空間サイズの大きいメモリ空間から読み出されたものが最終的に選択される。【選択図】図３
2013038536.tif 000002
【特許請求の範囲】
【請求項１】
入力されたＮビット（Ｎ≧２）の検索キーを用いて、Ｎビット以下の有効ビット長を有する所定の複数の検索対象データに対して検索を行ない、検索結果を出力するための半導体装置であって、
複数のメモリ空間を有する記憶部を備え、
前記複数のメモリ空間は、同一の有効ビット長の検索対象データごとに構成された複数のグループにそれぞれ対応し、各メモリ空間は、対応のグループに属する検索対象データの有効ビット長に等しいビット長のアドレスによって特定され、
前記複数のメモリ空間の各々において、対応するグループに属する各検索対象データの有効ビット部分をアドレスとしたときに特定される領域には、各検索対象データに対応した所定のコードが予め格納され、
さらに、前記複数のメモリ空間の各々を特定するアドレスの長さに等しいビット数分のデータを前記検索キーの最上位ビット側から抽出することによって複数のサブ検索キーを生成し、生成した前記複数のサブ検索キーを前記複数のメモリ空間の読出アドレスとして前記記憶部に出力するサブ検索キー生成部と、
前記複数のサブ検索キーを読出アドレスとして前記複数のメモリ空間から読み出された各読出データについて、前記複数の検索対象データのいずれかに対応した所定のコードを含む有効な読出データであるか否かを判定する判定回路と、
前記判定回路によって有効と判定された読出データのうち、最も空間サイズの大きいメモリ空間から読み出された読出データを選択し、選択した読出データに含まれる所定のコードを出力する選択回路とを備えた半導体装置。
【請求項２】
前記複数のメモリ空間の各々において、各アドレスによって特定される領域ごとに、前記複数の検索対象データのいずれかに対応した所定のコードが格納されている有効な領域であるか否かを示すバリッドビットがさらに格納され、
前記複数のサブ検索キーを読出アドレスとして前記複数のメモリ空間から読み出された各読出データには、バリッドビットの情報が含まれ、
前記判定回路は、前記各読出データに含まれるバリッドビットが有効か否かによって、前記各読出データが有効であるか否かを判定する、請求項１に記載の半導体装置。
【請求項３】
前記記憶部と前記判定回路との間に設けられ、前記複数のメモリ空間から読み出された各読出データを並行して伝送する複数本のデータバスをさらに備える、請求項１または２に記載の半導体装置。
【請求項４】
前記記憶部は、１〜Ｎビットの各ビット長のアドレスによってそれぞれ特定されるＮ個のメモリ空間を有し、
前記サブ検索キー生成部は、１〜Ｎビットの各ビット長をそれぞれ有するＮ個のサブ検索キーを生成する、請求項１〜３のいずれか１項に記載の半導体装置。
【請求項５】
前記半導体装置は、パケット交換方式のネットワーク用のルータに設けられ、
前記検索キーは、前記ルータに入力されたパケットのヘッダに含まれる宛先アドレスであり、
前記複数の検索対象データは、パケットの転送先の候補となる隣接ルータのアドレスに関係する情報であり、
前記複数の検索対象データにそれぞれ対応する所定のコードは、前記ルータに入力されたパケットを送信する出力ポートに関係する情報である、請求項１〜４のいずれか１項に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力された検索キーに全体一致または部分一致するデータを検索するための半導体装置に関するものであり、特にパケット交換方式が適用されたネットワーク上のルータで用いられる半導体装置に関する。
【背景技術】
【０００２】
インターネットなど、ＴＣＰ／ＩＰ（Transmission  Control  Protocol／Internet  Protocol）が適用されたネットワークに設けられたルータでは、他のホストから受取ったパケットを別の経路に転送するフォワーディングが行なわれる。各ルータは、ＩＰアドレスと転送先の経路との関係を定める検索テーブル（フォワーディング・テーブル）を格納しており、この検索テーブルに従ってパケットの転送経路が決定される。具体的には、受取ったパケットに含まれる宛先のＩＰアドレスを検索キー（Key）として検索テーブルに記載された次ホップＩＰアドレスが最長一致検索（longest  prefix  match  search）によって検索される。
【０００３】
フォワーディングを高速に行なうには、検索テーブル内での次ホップＩＰアドレスの検索を高速化する必要があり、このための専用ハードウェアとして連想メモリ（ＣＡＭ：Content  Addressable  Memory）がしばしば用いられる。
【０００４】
特開２００６−５６３６号公報（特許文献１）は、ＴＣＡＭ（Ternary  CAM）を用いて検索テーブルを構成する例を開示する。具体的に、この文献のＴＣＡＭは、ＩＰアドレス条件の上位ビットを設定する第１のＣＡＭエントリと、ＩＰアドレス条件の下位ビットを設定する第２ＣＡＭエントリとを含む。そして、受取ったパケットの宛先アドレスの上位ビットと、第１のＣＡＭエントリとが比較され、次に、パケットの宛先アドレス下位ビットと第２のＣＡＭエントリとが比較される。なお、この文献において、ＩＰアドレス条件とは、プリフィックスを上位ビットとし、ＩＰアドレスの残りのビットをマスクとした情報として定義される。
【０００５】
特開２００３−１４３１９８号公報（特許文献２）は、ＴＣＡＭを使用しない検索テーブルの例が示される。この文献では、フォワーディングの時間を短縮するために、ＩＰアドレスを複数ビットずつまとめて参照する方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−５６３６号公報
【特許文献２】特開２００３−１４３１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＴＣＡＭを用いた検索方法では検索キーと検索テーブルとを比較する回数は少なくなるが、ＴＣＡＭデバイスを用いているために消費電力が大きくなるという欠点がある。
【０００８】
一方、ＴＣＡＭを用いない検索方法では、検索キーと検索テーブルとの比較は極めて少ない消費電力で実行できるが、検索回数が増加するためにフォワーディングに時間を要するという欠点がある。たとえば、検索テーブル内のデータを１つずつ読み出して検索キーとの比較を行なうリニア検索では、検索テーブル内のデータと検索キーとが最初に一致する場合と、最後まで一致しない場合とがあるので、平均的に検索テーブルの半分のデータに対して、データ読出しと、読出したデータと検索キーとの比較を行なう必要がある。
【０００９】
したがって、この発明の目的は、消費電力が少なくかつ高速な検索動作が可能な半導体装置を提供することである。
【課題を解決するための手段】
【００１０】
この発明の一実施の形態による半導体装置は、汎用メモリセル構造を用いて検索システムを構築する。汎用メモリセルにおいて、検索対象データの有効ビット長ごとにそれぞれ異なるメモリ空間を対応付ける。また、各メモリ空間専用のデータバスを介して、各メモリ空間から並行かつ独立してデータを読み出す。
【発明の効果】
【００１１】
上記の実施の形態によれば、ＴＣＡＭでなく汎用のメモリセル構造を用いて半導体装置を構成できるので、低消費電力化が実現できる。さらに、複数のメモリ空間に並行してアクセスできるので、検索動作の高速化が可能になる。
【図面の簡単な説明】
【００１２】
【図１】この発明の実施の一形態による検索ＬＳＩ５が実装されたルータ１の構成を示すブロック図である。
【図２】この実施の形態の比較例としての検索ＬＳＩ１００の構成を模式的に示すブロック図である。
【図３】図１の検索ＬＳＩ５の構成を模式的に示すブロック図である。
【発明を実施するための形態】
【００１３】
以下、この発明の実施の形態について図面を参照して詳しく説明する。以下の説明では、ルータにおいてネットワークアドレスを検索する場合を例に挙げて説明するが、この発明の用途はルータに限られるものではない。なお、以下の説明において、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない場合がある。
【００１４】
［ルータの構成］
図１は、この発明の実施の一形態による検索ＬＳＩ５が実装されたルータ１の構成を示すブロック図である。検索ＬＳＩ（Large  Scale  Integration）５は、１または複数の半導体基板上に集積化された半導体装置として構成される。
【００１５】
図１を参照して、ルータ１は、インターネットなど、パケット交換方式が適用されたネットワークに設けられ、たとえば、ＴＣＰ／ＩＰに従った通信が行なわれる。ルータ１は、パケット処理部２と、バッファメモリ３と、検索エンジン部４とを含む。ルータ１には、さらに、パケットが入出力されるポートＰ１〜Ｐ４が設けられる。
【００１６】
ルータの基本処理は、任意のポートから受信したパケットを、そのパケットのヘッダに含まれる宛先アドレスに対応したポートから出力することである。各ポートから受信したパケット（図１の場合、ポートＰ１から受信されたパケット８Ａ）は、一旦バッファメモリ３内に格納される。宛先アドレス情報を含むヘッダ部分は、別途、検索エンジン部４に送られる。
【００１７】
検索エンジン部４は、検索ＬＳＩ５と、検索制御部６と、対応ポートテーブル７とを含む。まず、検索ＬＳＩ５は、受信パケットに含まれる宛先アドレス情報を検索キーとして、検索ＬＳＩ５内に格納している隣接ルータのアドレス情報に対して最長一致検索を行なう。これによって、宛先アドレスに到達するためには、次にどの隣接ルータ（次ホップのルータ）にパケットを転送すればよいかが判明する。検索制御部６は、検索ＬＳＩ５の検索結果を受けて、対応ポートテーブル７を参照することによって、転送先の隣接ルータのアドレスに対応する出力ポートを決定する。
【００１８】
検索エンジン部４による出力ポートの決定後、バッファメモリ３内から、先に格納されたパケットが読み出され、読み出されたパケットが、決定した出力ポートから出力される（図１の場合、ポートＰ４からパケット８Ｂが出力される）。パケット処理部２は、パケットの受信から送出に至る一連の動作をコントロールする。
【００１９】
［検索ＬＳＩをＴＣＡＭで構成した場合（比較例）］
以下、この実施の形態の比較例として、図１の検索ＬＳＩ５をＴＣＡＭで構成した場合について説明する。以下の例では、説明を簡単にするために、宛先アドレスに対応する検索キーが４ビットの場合が示されているが、検索キーのビット数Ｎは、当然ながら４ビットには限られない。たとえば、ＩＰｖ４（Internet  Protocol  Version  4）用のＩＰアドレスの検索に用いる場合には検索キーのビット数Ｎは３２ビットである。インターネットと直接接続されていない、閉じたＬＡＮ（Local  Area  Network）内で用いられるＩＰアドレスを検索する場合には、ＬＡＮの規模に応じたビット数（たとえば１６ビットなど）がＩＰアドレスのビット数として用いられる。
【００２０】
図２は、この実施の形態の比較例としての検索ＬＳＩ１００の構成を模式的に示すブロック図である。検索ＬＳＩ１００は、ＴＣＡＭ１０１とプライオリティ・エンコーダ１０２とを含む。
【００２１】
図２では、検索テーブルとなるＴＣＡＭ１０１のメモリ空間に、６つの検索対象データが格納された状態が例示されている。ここで、“＊”は、Don't  careビットを表わし、“＊”を除くビット（ｂｉｔ）の数が有効ビット長となる。具体的に、データ［０１０１］，［１０１０］の有効ビット長は４であり、データ［０１０＊］，［１０１＊］の有効ビット長は３であり、データ［１０＊＊］の有効ビット長は２であり、データ［０＊＊＊］の有効ビット長は１である。
【００２２】
Don't  careビットがあることにより、１つの検索キーに対して複数のデータが一致する場合があるので、最長一致検索（longest  prefix  match  search）が用いられる。最長一致検索は、より有効ビット長の長いデータを、検索キーに最も一致したデータとして判断する検索方法である。
【００２３】
検索動作は、検索キー［０１０１］の入力により開始される。ＴＣＡＭ１０１は、検索テーブルであるメモリ空間全てを一括でチェックし、検索キー［０１０１］に一致した全ての検索対象データに対応するアドレス情報をプライオリティ・エンコーダ１０２に通知する。図２の場合、［０１０１］，［０１０＊］，［０＊＊＊］の３つのデータが、検索キー［０１０１］に一致したと判断され、それぞれに対応するアドレス情報［００１１］，［０１１０］，［１１０１］がプライオリティ・エンコーダ１０２に通知される。
【００２４】
プライオリティ・エンコーダ１０２は、優先順位が最も高い、すなわち、有効ビット長が最も長いデータ［０１０１］に対応するアドレス［００１１］を出力する。ただし、実際上は、プライオリティ・エンコーダ１０２は、上記のように、検索キーに一致したデータのアドレス情報を入手することはできるが、各アドレス情報に対応するデータの有効ビット長を知る術がない。そこで、予めＴＣＡＭ１０１に検索対象データを格納する際に有効ビット長が長いデータほどアドレスが若くなるようにしておく。プライオリティ・エンコーダ１０２は、より若いアドレスを優先的に出力する。図２の場合、検索ＬＳＩ１００は、検索結果としてアドレス［００１１］を出力して、検索動作を終了する。以上により、検索キー［０１０１］に対して紐付けされた所定の処理を表すコード［００１１］が得られたことになる。
【００２５】
このように、ＴＣＡＭは、特殊なメモリセルを使用することで、検索時に、全検索テーブル空間を一括して活性化させ、検索キーに一致するデータを探す方式である。このため、検索速度は高速であるが、極めて消費電力が大きくなる問題がある。さらに、最長一致検索を実行するためには、検索テーブルの作成時に有効ビット長の長いデータほど若いアドレスに格納する必要があり、アドレスの割当て制御が複雑になる。
【００２６】
［検索ＬＳＩの構成（本発明）］
図３は、図１の検索ＬＳＩ５の構成を模式的に示すブロック図である。図３では、図２の比較例の場合と同様に、６つの検索対象データ［０１０１］，［０１０＊］，［０＊＊＊］，［１０１０］，［１０１＊］，［１０＊＊］に対して、入力された検索キー［０１０１］を用いた検索が行なわれる例が示される。そして、検索キー［０１０１］に一致するデータ［０１０１］，［０１０＊］，［０＊＊＊］のうち、最も有効ビット長の長い［０１０１］に対応するコード［００１１］が出力される例が示される。図２の場合と同様に検索キーのビット数Ｎを４としているが、実際にはより多ビットの検索キーおよび検索対象データが用いられる。検索動作は、検索キー［０１０１］の入力によって開始される。
【００２７】
図３を参照して、検索ＬＳＩ（半導体装置）５は、記憶部１１と、サブ検索キー生成部１２と、判定回路１３と、選択回路１４とを含む。以下、各構成要素の構成および動作について説明する。
【００２８】
（１．記憶部）
記憶部１１は、互いに空間サイズの異なる複数のメモリ空間を含む。通常、検索キーのビット数Ｎ（Ｎ≧２）に応じて、互いに空間サイズの異なる１〜Ｎビットの各アドレス長のＮ個のメモリ空間が設けられる。図３では、Ｎ＝４として、１〜４ビット長のアドレスによってそれぞれ特定可能なメモリ空間Ｍ１〜Ｍ４が設けられる。
【００２９】
検索テーブルは、この複数のメモリ空間を用いて構築される。検索テーブルを構築するために、まず、検索対象データが有効ビット長を基準にして複数のグループに分類される。図３に示す例の場合には、有効ビット長が１のデータ［０＊＊＊］によって第１グループが構成され、有効ビット長が２のデータ［１０＊＊］によって第２グループが構成され、有効ビット長が３のデータ［０１０＊］，［１０１＊］によって第３グループが構成され、有効ビット長が４のデータ［０１０１］，［１０１０］によって第４グループが構成される。
【００３０】
記憶部１１には、これらの複数のグループにそれぞれ対応する複数のメモリ空間が設けられる。各グループに属する検索対象データの有効ビット長は、対応するメモリ空間を特定するアドレスの長さに等しい。図３の場合には、上記の第１〜第４のグループが、１〜４ビットの各ビット長のアドレスによって特定されるメモリ空間Ｍ１〜Ｍ４にそれぞれ対応する。
【００３１】
各メモリ空間において、各検索対象データの有効ビット部分（Don't  careビットを除く部分）をアドレスとしたときに特定される領域には、各検索対象データに対応する所定のコードが格納される。ここで、所定のコードとは、図１のルータ１の出力ポートに関係付けられた情報であり、図２の場合にはＴＣＡＭのアドレスに相当する。
【００３２】
具体的に説明すると、図２の検索対象データ［０１０１］，［１０１０］にそれぞれ対応するアドレス［００１１］，［０１００］が、図３では、メモリ空間Ｍ４内のアドレス［０１０１］，［１０１０］によって特定される領域にそれぞれ格納される。図２の検索対象データ［０１０＊］，［１０１＊］にそれぞれ対応するアドレス［０１１０］，［１０００］が、図３では、メモリ空間Ｍ３内のアドレス［０１０］，［１０１］によって特定される領域にそれぞれ格納される。図２の検索対象データ［１０＊＊］に対応するアドレス［１０１１］が、図３では、メモリ空間Ｍ２内のアドレス［１０］によって特定される領域に格納される。図２の検索対象データ［０＊＊＊］に対応するアドレス［１１０１］が、図３では、メモリ空間Ｍ１内のアドレス［０］によって特定される領域に格納される。つまり、図２ではＴＣＡＭ内に格納されていた隣接ルータのアドレス情報の有効ビット部分（Don't  careビットを除く部分）が、図３ではアドレスとして用いられ、図２ではＴＣＡＭのアドレスであったものが、図３ではメモリ空間に格納される所定のコードとして用いられることになる。
【００３３】
なお、図３に示すように、各メモリ空間において、各アドレスによって特定される領域ごとに、所定のコードのいずれかが格納された有効な領域であるか、所定のコードがいずれも格納されていない無効な領域であるかを示すバリッドビット（Valid  bit）をさらに格納しておくのが好ましい。
【００３４】
具体的に図３の場合、アドレス［０１０１］，［０１０］，［０］によって特定される領域には、それぞれデータ［００１１］，［０１１０］，［１１０１］が格納されるとともに、バリッドビット「１」（「有効」を表わす）が格納される。同様に、アドレス［１０１０］，［１０１］，［１０］によって特定される領域には、それぞれデータ［０１００］，［１０００］，［１０１１］が格納されるとともに、バリッドビット「１」が格納される。その他の領域には、バリッドビット「０」（「無効」を表わす）が格納される。
【００３５】
（２．サブ検索キー生成部）
サブ検索キー生成部１２は、Ｎ個のメモリ空間の各々を特定するアドレスの長さに等しいビット数分のデータを検索キーの最上位ビット側から抽出することによって、Ｎ個のサブ検索キーを生成する。Ｎ個のサブ検索キーは、１〜Ｎビットの各ビット長をそれぞれ有する。サブ検索キー生成部１２は、生成したＮ個のサブ検索キーをＮ個のメモリ空間の読出アドレスとして記憶部１１に出力する。
【００３６】
具体的に図３の場合には、サブ検索キー生成部１２は、検索キー［０１０１］の上位４ビット［０１０１］をメモリ空間Ｍ４の読出アドレスとして記憶部１１に出力し、検索キーの上位３ビット［０１０］をメモリ空間Ｍ３の読出アドレスとして記憶部１１に出力する。サブ検索キー生成部１２は、さらに、検索キーの上位２ビット［０１］をメモリ空間Ｍ２の読出アドレスとして記憶部１１に出力し、検索キーの上位１ビット［０］をメモリ空間Ｍ１の読出アドレスとして記憶部１１に出力する。
【００３７】
メモリ空間Ｍ１〜Ｍ４から読み出された読出データは、それぞれデータバスＢ１〜Ｂ４を通って判定回路１３に送信される。データバスＢ１〜Ｂ４をそれぞれメモリ空間Ｍ１〜Ｍ４専用に設けることによって、各メモリ空間からのデータの読出しを並行して独立に行なうことができる。
【００３８】
（３．判定回路）
判定回路１３は、Ｎ個のサブ検索キーを読出アドレスとしてＮ個のメモリ空間からそれぞれ読み出されたＮ個の読出データの各々が、所定のコードを含む有効な読出データであるか否かを判定する。具体的には、判定回路１３は、各読出データに含まれるバリッドビットが有効（「１」）であるか否かによって、各読出データが有効であるか否かを判定する。
【００３９】
具体的に図３の場合、メモリ空間Ｍ１〜Ｍ４からは、それぞれデータ［１／１１０１］，［０／−］，［１／０１１０］，「１／００１１」が読み出される。ここで、読出データは「バリッドビット／所定のコード］の順に並んでいるとする。判定回路１３は、メモリ空間Ｍ２から読み出されたデータに含まれるバリッドビットは「０」であるので、この読出データは無効であると判定する。そして、判定回路１３は、有効と判定したデータ［１／１１０１］，［１／０１１０］，「１／００１１」のみを選択回路１４に出力する。
【００４０】
（４．選択回路）
選択回路１４は、判定回路１３によって有効と判定された読出データのうち、最も優先順位が高い、すなわち最も空間サイズの大きいメモリ空間から読み出された読出データを選択し、選択した読出データに含まれる所定のコードを出力する。図３の場合、メモリ空間Ｍ４から読み出されたデータ「１／００１１」に含まれるコード［００１１］が、検索ＬＳＩ５による検索結果として出力される。
【００４１】
以上によって、図２の場合と同様に、検索キー［０１０１］に対して紐付けされた所定の処理を表すコード［００１１］（検索結果）を得ることができる。
【００４２】
［まとめ］
上記のように、この実施の形態によれば、ＴＣＡＭという特殊なメモリセル構造を使用することなく、汎用メモリセル構造のみで検索システムを構築することができる。この場合、検索キーから、各メモリ空間の読出アドレス（サブ検索キー）が一意に定まるので、記憶部１１で動作しているのは、読出アドレスによってアクセスされている領域のみである。したがって、全検索テーブル空間をチェックして、検索キーに一致する検索対象データを探すＴＣＡＭに比べて低消費電力化が実現できる。
【００４３】
さらに、各メモリ空間専用のデータバスを介して、各メモリ空間から並行かつ独立してデータを読み出すことによって、高速検索が可能になる。
【００４４】
検索対象データ（隣接ルータのアドレス情報）の有効ビット長に応じて異なるメモリ空間を対応付けることによって、各メモリ空間のサイズを有効ビット長に応じて異ならせることができる。この結果、システムの小型化が可能になる。
【００４５】
最長一致検索の実装において、従来のＴＣＡＭを用いた検索やリニア検索の場合には、若いアドレスに格納されるデータほど有効ビット長が長くなるように検索テーブルを作成する必要があり、アドレスの割当て制御が複雑であった。これに対して、この実施の形態の場合には、検索対象データの有効ビット長に応じて異なるメモリ空間に割当てるだけでよいので、アドレスの割当て制御が簡単になる。
【００４６】
なお、上記の実施の形態では、各メモリ空間から読出データが並行して独立に読み出される場合について説明したが、各メモリ空間からパイプライン方式で順次データが読み出されるようにしてもよい。
【００４７】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００４８】
１  ルータ、２  パケット処理部、３  バッファメモリ、４  検索エンジン部、５  検索ＬＳＩ（半導体装置）、６  検索制御部、７  対応ポートテーブル、１１  記憶部、１２  サブ検索キー生成部、１３  判定回路、１４  選択回路、１０１  ＴＣＡＭ、１０２  エンコーダ、Ｍ１〜Ｍ４  メモリ空間、Ｐ１〜Ｐ４  ポート。
【図１】
2013038536.tif 000003
【図２】
2013038536.tif 000004
【図３】
2013038536.tif 000005