(57)【要約】【課題】制御部に与える負荷を低減することが可能な連想メモリ機能付き集積回路を得る。【解決手段】検索用ペイロードデータ・シフト部９は、各々が１バイトのラッチデータが格納可能なｎ個のラッチ部ＬＴ１〜ＬＴｎ（ｎ≧２）を有し、外部より得られるクロックＣＬＫに同期して、入力端子Ｐ１より入力されるペイロードデータを１バイト単位にシフトさせながらｎバイト長の検索用ペイロードデータＤＰを得る。この検索用ペイロードデータＤＰに関連したデータが検索対象データＤＳとしてＣＡＭアレイ１１に与えられ、ＣＡＭアレイ１１のエントリデータＤＥと検索対象データＤＳとが一致した場合に、一致を指示するヒット信号ｈｉｔがＣＡＭアレイ１１より出力される。【選択図】        図２
2005018942.tif 000002
【特許請求の範囲】
【請求項１】
ペイロードデータを含む入力データを受け、所定ビット単位に前記ペイロードデータを取り込み、前記所定ビット単位にシフトさせながら、前記所定ビット×所定長からなる検索用ペイロードデータを得るペイロードデータシフト部と、
少なくとも一つのエントリデータを格納し、前記検索用ペイロードデータに関連したデータである検索対象データと前記少なくとも一つのエントリデータとを比較して一致の有無を指示する比較結果信号を出力する連想メモリ部と、
を備える連想メモリ機能付き集積回路。
【請求項２】
請求項１記載の連想メモリ機能付き集積回路であって、
前記入力データはヘッダーデータをさらに含み、
前記ヘッダーデータと前記検索用ペイロードデータとを組み合わせて組合せ検索用データを得る検索データ組合せ部と、
前記組合せ検索用データを選択的に有効として前記検索対象データを得る検索データマスク部とを、
さらに備える連想メモリ機能付き集積回路。
【請求項３】
請求項１あるいは請求項２記載の連想メモリ機能付き集積回路であって、
前記比較結果信号は、前記検索用ペイロードデータのシフト状況を指示するオフセット情報を含む、
連想メモリ機能付き集積回路。
【請求項４】
入力データを所定長のエントリデータとして格納可能な連想メモリ部と、
前記エントリーデータを複数の分割データに分割し、前記複数の分割データのチェックサム演算結果を得るチェックサム演算部と、
前記エントリデータ及び前記チェックサム演算結果のうち一方を選択的に出力可能なセレクタと、
を備える連想メモリ機能付き集積回路。
【請求項５】
請求項４記載の連想メモリ機能付き集積回路であって、
前記連想メモリ部は複数の部分連想メモリ部を含み、
前記チェックサム演算部は前記複数の部分連想メモリ部に対応した複数の部分チェックサム演算部を含み、前記複数の部分チェックサム演算部は複数の部分チェックサム演算結果を出力し、
前記チェックサム演算結果は、前記複数の部分チェックサム演算結果の集合体を含む、
連想メモリ機能付き集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明はＣＡＭ（Ｃｏｎｔｅｎｔ−Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ）等の連想メモリを内蔵した連想メモリ機能付き集積回路に関する。
【０００２】
【従来の技術】
ネットワークにおけるルーターにおいて、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスを記述したルーティングテーブルとして、ＣＡＭと呼ばれる連想メモリが一般的に用いられている。ＣＡＭは例えば特許文献１に開示されている。ＣＡＭ特有の検索動作によって高速検索を可能としている。
【０００３】
【特許文献１】
米国特許第６５４２３９１号明細書
【０００４】
【発明が解決しようとする課題】
しかしながら、ＣＡＭは単に検索すべきものが存在するか否かを高速に検知する機能を有するメモリに過ぎないため、ルーターにおける大半の処理はＮＰＵ（Ｎｅｔｗｏｒｋ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔ：ネットワークプロセッサ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等の制御部で実行されており、制御部の動作占有率が極めて大きく制御部に負荷がかかりすぎるため、優先度合を考慮したキューイング（Ｑｕｅｕｉｎｇ）処理やパケットのロギングと統計の作成等の処理であるアカウンティング（Ａｃｃｏｕｎｔｉｎｇ）処理などの制御部が実行する処理の性能に悪影響を及ぼすという問題点があった。
【０００５】
この発明は上記問題点を解決するためになされたもので、ＮＰＵ，ＡＳＩＣ等の制御部に与える負荷を低減することが可能な連想メモリ機能付き集積回路を得ることを目的とする。
【０００６】
【課題を解決するための手段】
この発明に係る請求項１記載の連想メモリ機能付き集積回路は、ペイロードデータを含む入力データを受け、所定ビット単位に前記ペイロードデータを取り込み、前記所定ビット単位にシフトさせながら、前記所定ビット×所定長からなる検索用ペイロードデータを得るペイロードデータシフト部と、少なくとも一つのエントリデータを格納し、前記検索用ペイロードデータに関連したデータである検索対象データと前記少なくとも一つのエントリデータとを比較して一致の有無を指示する比較結果信号を出力する連想メモリ部とを備えている。
【０００７】
この発明に係る請求項４記載の連想メモリ機能付き集積回路は、入力データを所定長のエントリデータとして格納可能な連想メモリ部と、前記エントリーデータを複数の分割データに分割し、前記複数の分割データのチェックサム演算結果を得るチェックサム演算部と、前記エントリデータ及び前記チェックサム演算結果のうち一方を選択的に出力可能なセレクタとを備えている。
【０００８】
【発明の実施の形態】
＜実施の形態１＞
（原理）
パケットデータにおける情報格納部分に該当するペイロードデータはネットワーク層が第４層以上のアプリケーション層のデータに相当するが、このペイロードデータにはファイアウォールなどのによって検知すべき文字列が含まれる場合がある。この文字列をいち早く発見しパケットの通過を禁止することが重要である。しかしながら、従来は、ファイアウォール等のＩＤＳ（Ｉｎｔｒｕｓｉｏｎ  Ｄｅｔｅｃｔｉｏｎ  Ｓｙｓｔｅｍ：浸入検知システム）機能はＮＰＵやＡＳＩＣ等の制御部が担当しており、すべてのペイロードデータから検知すべき文字列を検索するシグネチャマッチング検索は制御部にとって多大な負荷となっていた。そこで、このＩＤＳ機能を連想メモリ機能付き集積回路に持たせたのが実施の形態１である。
【０００９】
図１はこの発明の実施の形態１である連想メモリ機能付き集積回路の概念を模式的に示すブロック図である。
【００１０】
同図に示すように、１文字が１バイト（８ビット）で表現される文字Ａ，Ｂ，Ｃ，Ｄ，…が１バイト単位でシリアルに入力端子Ｐ１に入力され、ラッチ部２１に１文字毎にラッチされる。
【００１１】
検索用ペイロードデータ・シフト部１９は、各々が１バイトのラッチデータが格納可能な４個のラッチ部１９ａ〜１９ｄを有している。ラッチ部１９ａ〜１９ｄは、図示しないクロックに同期して、ラッチ部２１のラッチデータをラッチ部１９ａが取り込み、ラッチ部１９ａ〜１９ｃのラッチデータをラッチ部１９ｂ〜１９ｄがそれぞれ取り込むシフト動作を実行する。検索用ペイロードデータ・シフト部１９内のラッチ部１９ａ〜１９ｄにラッチされた４バイト（１バイト（＝８ビット）（所定ビット）×４（所定長））のデータが検索用ペイロードデータＤＰとなる。
【００１２】
一方、ＣＡＭアレイ１１は少なくとも４バイトのエントリデータＤＥが複数個格納可能であり、この例では、エントリデータＤＥの一つであるエントリデータＤＥｘが“ＥＦＧＨ”という文字列であったとする。
【００１３】
図１に示すように、入力端子Ｐ１にＡ，Ｂ，Ｃ，Ｄ，Ｅ，Ｆ，Ｇ，Ｈ…の順にペイロードデータが入力されると、文字“Ａ”がラッチ部１９ｄにラッチされた時刻ｔ０で検索用ペイロードデータＤＰは文字列“ＡＢＣＤ”となる。以降、クロックに同期して時刻ｔ１〜ｔ６と経過すると、時刻ｔ４のとき、検索用ペイロードデータＤＰが“ＥＦＧＨ”となり、エントリデータＤＥｘと一致する（ＨＩＴ）。この一致したという情報を比較結果信号ｒｅｓｕｌｔに含ませて外部に出力させることにより、連想メモリ機能付き集積回路自体にシグネチャマッチング（Ｓｉｇｎａｔｕｒｅ  Ｍａｔｃｈｉｎｇ）検索機能を持たせたのが実施の形態１である。
【００１４】
（構成）
図２は実施の形態１の連想メモリ機能付き集積回路であるＣＡＭ内蔵集積回路の構成を示すブロック図である。同図に示すように、１バイト単位に入力可能な入力端子Ｐ１を介して、パケットデータにおけるヘッダー部分に相当するヘッダーデータＤ１１の全部もしくは一部が第１ヘッダー部１７及び第２ヘッダー部１８それぞれに格納される。例えば、第１ヘッダー部１７にはネットワーク層の第２層〜第４層のヘッダーデータが格納され、第２ヘッダー部１８には第２層のヘッダーデータが格納される。
【００１５】
さらに、入力端子Ｐ１を介して、パケットデータにおけるペイロード部分（ユーザー情報部分）に相当するペイロードデータＤ１２がラッチ部２１に、ペイロードデータＤ１２のシフト状況を示すオフセットデータＤ１３がオフセット情報出力部２０にそれぞれ与えられる。また、必要に応じて、入力端子Ｐ１からマスクレジスタ１４への設定データＤ１４が与えられる。
【００１６】
図３はＣＡＭ内蔵集積回路１０とＡＳＩＣ１との関係を示す説明図である。同図に示すように、ＡＳＩＣ１はパケットデータＤ１を受け、パケットデータＤ１からヘッダーデータＤ１１及びペイロードデータＤ１２を分類し、ヘッダーデータＤ１１の全部あるいは一部を第１ヘッダー部１７及び第２ヘッダー部１８に与え、検索用ペイロードデータ・シフト部９の前段にあるラッチ部２１にペイロードデータＤ１２を与えている。
【００１７】
さらに、ＡＳＩＣ１はＣＡＭ内蔵集積回路１０の動作制御用の制御信号ＳＣ（オペコードＯＰ．ｃｏｄｅ等を含む）を出力するとともに、ペイロードデータＤ１２の一文字入力に同期して、初期値“０”から１インクリメントしながらオフセットデータＤ１３をオフセット情報出力部２０に出力する。また、必要に応じて、マスクレジスタ１４のデータ設定用の設定データＤ１４を与える。
【００１８】
一方、ＣＡＭ内蔵集積回路１０は、ＣＡＭアレイ１１内のエントリデータとの一致／不一致に関する情報を示すヒット信号ｈｉｔとその時のシフト状況を示すオフセット信号ｏｆｆｓｅｔとを含む比較結果信号ｒｅｓｕｌｔをＡＳＩＣ１に出力する。なお、図３ではＡＳＩＣ１を示したが、上記したＡＳＩＣ１の働きをもう一つの制御部であるＮＰＵに行わせても良い。
【００１９】
図２において、第１ヘッダー部１７及び第２ヘッダー部１８から出力される第１ヘッダーデータＤＨ１１及び第２ヘッダーデータＤＨ１２はセレクタ１６に取り込まれ、セレクタ１６によりヘッダーデータＤＨ１１，ＤＨ１２のうち一方のデータがヘッダーデータＤＨとして出力される。セレクタ１６の選択内容はＡＳＩＣ１からの制御信号ＳＣに含まれるオペコードＯＰ．ｃｏｄｅによって制御される。
【００２０】
検索用ペイロードデータ・シフト部９は、各々が１バイトのラッチデータが格納可能なｎ個のラッチ部ＬＴ１〜ＬＴｎ（ｎ≧２）を有している。
【００２１】
ラッチ部ＬＴ１〜ＬＴｎは、外部より得られるクロックＣＬＫに同期して、ラッチ部２１に格納されたラッチデータをラッチ部ＬＴ１が取り込み、ラッチ部ＬＴ１〜ＬＴ（ｎ−１）のラッチデータをラッチ部ＬＴ２〜ＬＴｎがそれぞれ取り込むシフト動作を実行する。検索用ペイロードデータ・シフト部９内のラッチ部ＬＴ１〜ＬＴｎにラッチされたｎバイト（８ビット（所定ビット）×ｎ（所定長））のデータが検索用ペイロードデータＤＰとなる。
【００２２】
検索用データ組合せ部１５のヘッダー部１５ａはヘッダーデータＤＨを取り込み、ペイロード部１５ｂは検索用ペイロードデータＤＰを取り込み、両データを結合して組合せ検索用データＤ１５（ＤＨ＋ＤＰ）として出力する。
【００２３】
複数のＡＮＤゲートＧ１から構成されるＡＮＤゲート群１３において、複数のＡＮＤゲートＧ１の一方入力に組合せ検索用データＤ１５が付与される。一方、ＡＮＤゲート群１３の複数のＡＮＤゲートＧ１それぞれの他方入力にはマスクレジスタ１４に格納されたマスクデータが与えられる。そして、ＡＮＤゲート群１３の各ＡＮＤゲートＧ１から出力されるデータが検索対象データＤＳとなる。
【００２４】
ＣＡＭアレイ１１は。検索対象データＤＳと比較可能な複数のエントリデータＤＥを格納している。すなわち、各エントリデータＤＥが検索対象データＤＳに対応するバイト数以上で構成される。
【００２５】
そして、ＣＡＭアレイ１１は、複数のエントリデータＤＥのいずれかと検索対象データＤＳとが一致したとき、一致したことを示す情報及び一致したエントリデータＤＥをアドレス等で指示する情報を含むヒット信号ｈｉｔを出力し、いずれのエントリデータＤＥとも一致しないとき、全てが一致していないことを指示する情報を含むヒット信号ｈｉｔを出力する。また、ヒット信号ｈｉｔには一致したエントリデータＤＥが２以上存在したか否かを示す情報も含まれている。
【００２６】
例えば、ＣＡＭアレイ１１のメモリサイズが１Ｍビットでルックアップ長が１４４ｂ（ビット）×８Ｋのエントリと２８８ｂ×４Ｋのエントリと２種類のプログラムが可能な場合、１４４ｂ×８Ｋのエントリの場合、１３ビットの出力情報（８Ｋエントリのいずれかを指示する情報）、検索結果がヒット（一致）かミス（不一致）かを指示するフラグ、検索結果が２箇所以上存在したことを示すフラグからなる総計１５ビットの情報をヒット信号ｈｉｔとして出力する。
【００２７】
なお、ＣＡＭアレイ１１に対して、エントリデータＤＥの読み出し及び書き込み処理、並びに検索対象データＤＳとエントリデータＤＥとの検索処理のいずれの動作を行うかは、オペコードＯＰ．ｃｏｄｅによる指示によって制御することができる。
【００２８】
プライオリティエンコーダ１２は、ヒット信号ｈｉｔが２以上のエントリデータＤＥでの一致を指示する場合に、予め定められた優先度に従い一のエントリデータＤＥを選択し、当該一のエントリデータＤＥでのみ一致を指示するヒット信号ｈｉｔを出力バス２２に出力する。なお、図２では、ヒット信号ｈｉｔが一のエントリデータＤＥでの一致を指示する場合を模式的に示しており、ＣＡＭアレイ１１でのヒット信号ｈｉｔがそのまま出力バス２２に出力されている。
【００２９】
オフセット情報出力部２０は検索用ペイロードデータ・シフト部９に格納された検索用ペイロードデータＤＰの比較結果が比較結果信号ｒｅｓｕｌｔとして現れるタイミングに同期して、上記検索用ペイロードデータＤＰ設定の際のオフセットデータＤ１３をオフセット信号ｏｆｆｓｅｔとして出力バス２２上に出力する。
【００３０】
その結果、出力バス２２上に出力されたヒット信号ｈｉｔ及びオフセット信号ｏｆｆｓｅｔが比較結果信号ｒｅｓｕｌｔとして出力端子Ｐ１２を介して外部のＡＳＩＣ１に出力される。
【００３１】
なお、クロックＣＬＫ及びリセット信号ＲＳＴによるＣＡＭ内蔵集積回路１０の各構成部（ＣＡＭアレイ１１等）への接続関係は図示していないが各構成部に与えられ、各構成部はクロックＣＬＫに同期して動作し、活性状態のリセット信号ＲＳＴの入力時に初期化される。
【００３２】
（動作）
図４は実施の形態１のＣＡＭ内蔵集積回路１０のシグネチャマッチング検索動作を模式的に示す説明図である。なお、図４の例では、検索用ペイロードデータ・シフト部９のラッチ部ＬＴのラッチ数ｎ＝“８”の場合を例に示している。
【００３３】
同図に示すように、パケットデータＤ１中のヘッダーデータＤ１１が第１ヘッダー部１７あるいは第２ヘッダー部１８、セレクタ１６、ヘッダー部１５ａ、マスクレジスタ１４及びＡＮＤゲート群１３を介して、検索対象データＤＳのヘッダーデータＤＨ（ＤＨ０〜ＤＨ９）として設定される。図４に示すように、クロックＣＬＫに同期して時間経過とともにヘッダーデータＤＨ０〜ＤＨ９と変化するが、実際には第１ヘッダーデータＤＨ１１，あるいは第２ヘッダーデータＤＨ１２のいずれかに固定される。
【００３４】
一方、ペイロードデータＤ１２（“ＡＢｃｄＥｆＧＨ…”）は最初の８文字“ＡＢｃｄＥｆＧＨ”から１文字（１バイト）ずつシフトさせながら、検索用ペイロードデータＤＰは、クロックＣＬＫに同期して時間経過とともに検索用ペイロードデータＤＰ０〜ＤＰ９として変化する。すなわち、検索用ペイロードデータＤＰ０＝“ＡＢｃｄＥｆＧＨ”（シフト（オフセット）無し（ｏｆｆｓｅｔ０））、ＤＰ１＝“ＢｃｄＥｆＧＨＷ”（シフト１回（ｏｆｆｓｅｔ１））、ＤＰ２＝“ｃｄＥｆＧＨＷａ”（シフト２回（ｏｆｆｓｅｔ２））…と変化する。
【００３５】
ここで、ＣＡＭアレイ１１のエントリデータＤＥとして検索用ペイロードデータＤＰに対応する部分に”Ｗａｒｎｉｎｇ！”が登録されていた場合、検索用ペイロードデータＤＰ８＝”Ｗａｒｎｉｎｇ！”（シフト８回（ｏｆｆｓｅｔ８））のとき、ヒット信号ｈｉｔが活性状態（図４では大文字の”ＨＩＴ”で示す）となる。
【００３６】
その結果、比較結果信号ｒｅｓｕｌｔとして、ペイロードデータＤ１２中に文字列”Ｗａｒｎｉｎｇ！”が含まれたことを検索するシグネチャマッチング検索が行える。
【００３７】
図５は実施の形態１のＣＡＭ内蔵集積回路１０の動作の詳細を示すタイミング図である。なお、図５の例も、図４同様、検索用ペイロードデータ・シフト部９のラッチ部ＬＴのラッチ数ｎ＝“８”の場合を例に示している。図５の例では、ペイロードデータＤ１２が“ＡＢＣＤＥＦＧＨＩＪＫＬＭＮＯＰＱ…”の場合を示している。
【００３８】
同図に示すように、クロックＣＬＫの“Ｈ”立ち上がりあるいは“Ｌ”立ち下がりに同期して各動作が実行される。制御信号ＳＣに含まれるオペコードＯＰ．ｃｏｄｅはセレクタ１６の制御に用いられ、図５の例では、１〜４回目及び７〜９回目の検索（Ｓｅａｒｃｈ）実行時に第１ヘッダーデータＤＨ１１を選択し、５，６回目の検索実行時に第２ヘッダーデータＤＨ１２を選択した例を示している。ここでは、ｉ（ｉ≧１）回目のシフト動作実行後の検索用ペイロードデータＤＰに対する検索動作時をｉ回目の検索動作時としている。
【００３９】
オフセットデータＤ１３は検索回数ｉに同期して“１”ずつ増加してオフセット情報出力部２０に出力される。すなわち、検索用ペイロードデータＤＰの最下位バイトＬＳＢが“Ｉ”のとき、“１”（０００００００１）とし、以降、クロックＣＬＫに同期して“１”ずつインクリメントした内容のオフセットデータＤ１３がオフセット情報出力部２０に与えられる。
【００４０】
クロックＣＬＫの“Ｌ”立ち下がりに同期して検索用ペイロードデータ・シフト部９内に取り込まれ、次のクロックＣＬＫの“Ｈ”立ち上がりに同期してペイロード部１５ｂに入力される。
【００４１】
その後、検索用データ組合せ部１５、マスクレジスタ１４、ＡＮＤゲート群１３、ＣＡＭアレイ１１及びプライオリティエンコーダ１２それぞれのパイプライン処理による時間（レイテンシー）遅延した後、プライオリティエンコーダ１２からヒット信号ｈｉｔが出力される。図５では、上記レイテンシーが４クロックの場合を示している。すなわち、ｉ回目の検索処理（Ｓｅａｒｃｈ−ｉ）の結果が、４クロック遅れたヒット信号（ｈｉｔ−ｉ）として出力される。
【００４２】
オフセット情報出力部２０は、オフセットデータＤ１３を４クロック分、遅延させてオフセット信号ｏｆｆｓｅｔとして出力する。その結果、ｉ回目のヒット信号（ｈｉｔ−ｉ）に同期して、シフト状況ｉを指示するオフセット信号ｏｆｆｓｅｔが出力されるため、ヒット信号ｈｉｔに対応する検索処理時のシフト状況をオフセット信号ｏｆｆｓｅｔがら正確に認識することができる。
【００４３】
このように、実施の形態１のＣＡＭ内蔵集積回路１０は、ヘッダーデータＤ１１及びペイロードデータＤ１２に対するシグネチャマッチング検索機能を有するため、ＡＳＩＣ１あるいはＮＰＵ等の制御部がシグネチャマッチング検索処理を行う必要がなくなる分、制御部にかかる負担を軽減することができる。
【００４４】
また、実施の形態１では、検索用ペイロードデータ・シフト部９が１バイト単位に入力されるため、１回の検索時にデータピン上で消費されるバンド比は、１バイト／１サーチとなる。一方、従来は、検索対象となるデータ列を全てデータピン入力から行うのが一般的であったため、ｎバイト／１サーチとなる。したがって、実施の形態１のＣＡＭ内蔵集積回路１０はバンドをｎ分の１に節約できる効果も奏する。
【００４５】
加えて、ＡＮＤゲート群１３及びマスクレジスタ１４により、組合せ検索用データＤ１５に対して任意にマスク設定して、検索対象データＤＳを決定することができる。なお、マスクレジスタ１４への書き込みは、入力端子Ｐ１から入力される設定データＤ１４によって設定することができる。
【００４６】
例えば、ＡＮＤゲート群１３及びマスクレジスタ１４によって、検索用ペイロードデータＤＰを全てマスク処理すれば、ヘッダーデータＤＨに基づく通常のルーターの機能であるアドレス検索用途として用いることができる。また、ヘッダーデータＤＨ及び検索用ペイロードデータＤＰを共に有効にすれば、通常のルーター機能に加え、シグネチャマッチング機能によるＩＤＳとして用いることができる。したがって、ルーター機能に加えＩＤＳにも適用可能な分、用途が広範化するに伴い大量生産が実現する。その結果、数量による製造コストの低減が図れるという効果も奏する。
【００４７】
なお、検索用データ組合せ部１５、マスクレジスタ１４及びＡＮＤゲート群１３により、検索対象データＤＳにおけるヘッダーデータ部分のビット長（ヘッダー長）と、ペイロードデータ部分のビット長（ペイロード長）とを可変設定することができる。例えば、検索対象データＤＳのビット長が２８８ビットの場合、ヘッダー長を３２ビット、ペイロード長を２５６ビットにした第１の組合せ、ヘッダー長を１２８ビット、ペイロード長を１６０ビットにした第２の組合せ、ヘッダー長を０ビット、ペイロード長を２８８ビットにした第３の組合せに変更可能である。ただし、第１〜第３の組合せを実現可能にするには、第１ヘッダー部１７，第２ヘッダー部１８の少なくとも一つ及びヘッダー部１５ａの格納ビット数を１２８ビット以上、検索用ペイロードデータ・シフト部９及びペイロード部１５ｂの格納ビット数を２８８ビット以上に設定する必要がある。
【００４８】
上述したようにヘッダー長及びペイロード長を可変にしたのは、検索対象のネットワーク層が第３層Ｌ３の場合はヘッダー長３２ビットで十分であるが、第４層Ｌ４等ではさらに長いヘッダー長を必要とする等、検索対象のネットワーク層によって必要とするヘッダー長が異なる場合等にも対応するためである。
【００４９】
＜実施の形態２＞
（原理）
図６はパケットデータ構造を示す説明図である。同図に示すように、パケットデータは、プリアンブル（Ｐｒｅ−ａｎｂｌｅ）情報６１、ＳＦＤ（Ｓｔａｒｔ  Ｆｒａｍｅ  Ｄｅｌｉｍｉｔｅｒ）情報６２、送信元（ｄｅｓｔｉｎａｔｉｏｎ）情報６３、送信先（Ｓｏｕｒｃｅ）情報６４、タイプ・長さ（Ｔｙｐｅ／Ｌｅｎｇｔｈ）情報６５、トランスミッティングメッセージ６６、ＰＡＤ（Ｐａｄｉｎｇ）データ６７及びＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）情報６８で構成される。なお、図６におけるｏｃｔｔｅｔは８ビット（１バイト）を１単位としたデータ長を意味する。
【００５０】
ネットワーク層の第２層Ｌ２のデータとして、送信元情報６３及び送信先情報６４が該当し、これらの情報に基づきクラシファイ（ｃｌａｓｓｉｆｙ）処理（パケットのフロー識別、クラス識別等の処理）を行う。
【００５１】
トランスミッティングメッセージ６６の第３層データ６６ａに対しクラシファイ処理、チェックサムフィルタリング（Ｃｈｅｃｋ  Ｓｕｍ  ｆｉｌｔｅｒｉｎｇ）処理等が行われ、第４層用データ６６ｂに対しクラシファイ処理、チェックサムフィルタリング処理等が行われ、第５〜第７層用データ６６ｃに対し実施の形態１のＣＡＭ内蔵集積回路１０が実行したシグネチャマッチング処理、チェックサムフィルタリング処理等が行われる。
【００５２】
ＦＣＳ情報６８には４バイトの誤り検出符号が設定されているため、ＦＣＳ情報６８に基づきパケットが正常に受信されたか否かを検知することができる。
【００５３】
さらに、トランスミッティングメッセージ６６の各ネットワーク層に対応する部分にも正常に受信されたか否かを検知するためのチェックサム機能を有している。すなわち、トランスミッティングメッセージ６６の各ネットワーク層において、１６ビット毎に複数のチャンク（ｃｈｕｎｋ：固まり）に分割し、それぞれのチャンクについて加算を行い、加算結果の下位１６ビット以下をトランスミッティングメッセージ６６の情報の一部のチェックサム情報として格納しておく機能を有している。したがって、ネットワーク層の階層毎に送信側でチェックサム情報を付加してトランスミッティングメッセージ６６を生成すれば、受信側で階層毎のチェックサム計算を行い、チェックサム結果とチェックサム情報とを比較することにより、受信側においてどの階層でエラーが発生したことを検知することができる。
【００５４】
図７は従来のチェックサム演算を実現する具体的構成を示す説明図である。同図に示すように、ＣＡＭ内蔵集積回路２５はＣＡＭアレイ４を有し、ＣＡＭアレイ４のエントリデータＤＥを専用バス６，共通バス７等を介して、出力端子Ｐ３０から読み出しデータＲＤを出力する。そして、１４４ビット長の信号線Ｌ１１を介してＡＳＩＣ２６の入力部Ｐ１１に読み出しデータＲＤが入力される。
【００５５】
ＡＳＩＣ２６は内部のチェックサム加算機能１ａ（ハードでもソフトでも実現可）により、第ｋ層（ｋ＝３〜７のいずれか）のデータを読み出しデータＲＤとして読み出し、１６ビット単位（［１５：０］，［３１：１６］，［４７：３２］，［６３：４８］，…，［１２７：１１２］，［１４３：１２８］）のチャンク毎の和の下位１６ビットを求めることにより、最終チェックサム結果ｓｕｍ［１５：０］を得ることができ、ＳＲＡＭ２に保存しておいた第ｋ層のチェックサム情報を１６ビットの信号線Ｌ１２及び入出力端子Ｐ１２を介して取り込み、第ｋ層の最終チェックサム結果ｓｕｍ［１５：０］と第ｋ層のチェックサム情報との比較結果により、第ｋ層の受信が正常に行われたか否かを検出することができる。
【００５６】
しかし、このようにＡＳＩＣ２６に全面的にチェックサム演算処理を行わせるのは前述したように、ＡＳＩＣ２６に負荷がかかってしまう。
【００５７】
そこで、パケットデータのヘッダー部分とペイロード部分がＣＡＭアレイに入力される実施の形態１のＣＡＭ内蔵集積回路１０のように、ペイロード部分をＣＡＭアレイ内に取り込み可能なＣＡＭ内蔵集積回路において、トランスミッティングメッセージ６６の第３層用データ６６ａ〜第５ないし第７層用データ６６ｃそれぞれをＣＡＭアレイ内に取り込んだ後、さらに、これらのデータ６６ａ〜６６ｃそれぞれのチェックサム計算結果をＣＡＭ内蔵集積回路内で計算するようにして上述したチェックサムフィルタリング機能を実現可能にしたのが実施の形態２である。
【００５８】
（構成）
図８及び図９は実施の形態２のＣＡＭ内蔵集積回路３の読み出しデータ出力機能を示す説明図である。
【００５９】
同図に示すように、４つのバンク（Ｂａｎｋ＝０〜３）に分類された部分連想メモリ部に相当するＣＡＭアレイ４０〜４３が設けられ、ＣＡＭアレイ４０〜４３のセンスアンプ４０ａ〜４３ａから７２ビットの読み出しデータＲＤ０〜ＲＤ３が専用バス４４〜４７に読み出される。
【００６０】
例えば、図９に示すように、ＣＡＭアレイ４０が２８８ビットのエントリデータ長を有している場合は、センスアンプ４０ａの出力２８８ビットを７２ビットに絞り込むためのセレクタ５がセンスアンプ４０ａの出力部に設けられ、セレクタ５から７２ビットの読み出しデータＲＤ０が出力される。セレクタ５はＡＳＩＣ１から出力される制御信号ＳＣの一部である選択信号Ｓ５によって制御される。なお、セレクタ５の図示は図８では省略している。また、ＣＡＭアレイ４１〜４３が２８８ビットのエントリデータ長を有する場合も図９で示した構成と同様となる。
【００６１】
専用バス４４〜４７は２８８ビットの共通バス４８に接続され、読み出しデータＲＤ０〜ＲＤ３がセレクタ４９に入力される。セレクタ４９はＡＳＩＣ１等の制御信号ＳＣの一部である選択信号Ｓ４９に基づき、読み出しデータＲＤ０〜ＲＤ３のうちいずれかを読み出しデータＲＤ７２として出力端子Ｐ３０から出力する。
【００６２】
図１０は実施の形態２のＣＡＭ内蔵集積回路３におけるチェックサム演算結果出力機能を示す説明図である。
【００６３】
同図に示すように、ＣＡＭアレイ４０〜４３のセンスアンプ４０ａ〜４３ａの出力部には、４つの部分チェックサム演算部に相当するチェックサム演算部５０〜５３が設けられる。チェックサム演算部５０〜５３はセンスアンプ４０ａ〜４３ａの出力データをそれぞれ１６ビット毎に複数のチャンクに分類し、複数のチェックの１６ビットデータの総和の下位１６ビットをチェックサム演算結果ＤＣＳ０〜ＤＣＳ３として求めて専用バス５４〜５７に出力する。上述したチェックサム演算結果ＤＣＳ０〜ＤＣＳ３が複数の部分チェックサム演算結果に相当する。
【００６４】
なお、チェックサム演算結果対象なる各ネットワーク層のデータ入力は、例えば、ＡＳＩＣ１の制御下で通常の書き込み同様に行うことで対応可能である。各ネットワーク層のデータ出力は、例えば、通常の読み出し時同様、書き込み済みのチェックサム演算対象のデータをセンスアンプから読み出すことにより対応可能である。
【００６５】
専用バス５４〜５７は６４ビットの共通バス５８に合成され、出力端子Ｐ３０から６４ビットのチェックサム演算結果ＤＣＳ６４として出力される。すなわち、チェックサム演算結果ＤＣＳ６４は下位からチェックサム演算結果ＤＣＳ０〜ＤＣＳ３の順に設定される。すなわち、チェックサム演算結果ＤＣＳ６はチェックサム演算結果ＤＣＳ０〜ＤＣＳ３の集合体である。なお、出力端子Ｐ３０からは７２ビット出力可能であるため、上位８ビットは適当な値に固定された予備（ｒｅｓｅｒｅｖｅｄ）のデータとされる。
【００６６】
図１１は実施の形態２のＣＡＭ内蔵集積回路３におけるＣＡＭアレイ４０周辺を示す説明図である。実施の形態２のＣＡＭ内蔵集積回路３は図８及び図９で示した通常のデータ読み出し機能と図１０で示したチェックサム演算結果出力機能とを併せもっており、この構成を具体的に示したの図１１である。
【００６７】
同図に示すように、ＣＡＭアレイ４０のセンスアンプ４０ａから２８８ビットのデータがチェックサム演算部５０に読み出される。チェックサム演算部５０は１６ビット毎に１８個のチャンクＣＳ０〜ＣＳ１７に分類され、対応するセンスアンプ４０ａからの１６ビットのデータ出力を受ける。例えば、チャンクＣＳ０はセンスアンプ４０ａの０〜１５ビットの情報を読み込み、チャンクＣＳ１６はセンスアンプ４０ａの２５６〜２７１ビットの情報を読み込み、チャンクＣＳ１７はセンスアンプ４０ａの２７２〜２８７ビットの情報を読み込む。
【００６８】
チェックサム演算部５０はチャンクＣＳ０〜ＣＳ１７に格納した１６ビットデータの総和の下位１６ビットを、ＣＡＭアレイ４０のチェックサム演算結果ＤＣＳ０として専用バス５４に出力する。なお、ＣＡＭアレイ４１〜４３のチェックサム演算結果ＤＣＳ１〜ＤＣＳ３も同様にして専用バス５５〜４７に出力され、共通バス５８から６４ビットのチェックサム演算結果ＤＣＳ６４がセレクタ３５に入力される。
【００６９】
一方、センスアンプ４０ａの２８８ビット出力はチェックサム演算部５０に加えセレクタ５にも入力され、図９に示したように、セレクタ５から７２ビットの読み出しデータＲＤ０として共通バス４８に出力される。なお、ＣＡＭアレイ４１〜４３の読み出しデータＲＤ１〜ＲＤ３も同様にして専用バス４５〜４７に出力され、共通バス４８で２８８ビットに合成され、読み出しデータＲＤ０〜ＲＤ３のいずれかがセレクタ４９により選択され７２ビットの読み出しデータＲＤ７２としてセレクタ３５に出力される。
【００７０】
セレクタ３５は制御信号ＳＣに含まれるオペコードＯＰ．ｃｏｄｅに基づき通常の読み出し時には読み出しデータＲＤ７２を出力し、チェックサム演算時にはチェックサム演算結果ＤＣＳ６４を出力する。
【００７１】
このように、実施の形態２のＣＡＭ内蔵集積回路３はチェックサム演算機能を有するため、ＡＳＩＣ１，ＮＰＵ等の制御部が、各ネットワーク層のデータの正常受信を検出するためのチェックサム演算処理の大半を実行する必要がなくなる。その結果、制御部の負担を大幅に軽減することができる。
【００７２】
また、実施の形態２では４つのＣＡＭアレイ４０〜４３それぞれのチェックサム演算結果ＤＣＳ０〜ＤＣＳ３を一括して出力可能な構成を呈しているため、ＣＡＭアレイ４０〜４３それぞれのチェックサムを独立して求める場合に比べ、４倍の実行性能を発揮することができる。
【００７３】
また、当然ながら、実施の形態１及び実施の形態２とを組み合わせることにより、シグネチャマッチング機能及びチェックサム演算機能双方が実行可能なＣＡＭ内蔵集積回路を得ることができる。
【００７４】
【発明の効果】
以上説明したように、この発明に係る請求項１記載の連想メモリ機能付き集積回路は、検索対象データと少なくとも一つのエントリデータとを比較して一致の有無を指示する比較結果信号を出力することにより、ペイロードデータに含まれる所定の文字列を検出するというシグネチャマッチング処理を実行することができる。
【００７５】
その結果、請求項１記載の連想メモリ機能付き集積回路を制御する制御部は、シグネチャマッチング処理を行う必要がなくなるため、制御部にかかる負荷を軽減することができる。
【００７６】
この発明に係る請求項４記載の連想メモリ機能付き集積回路はチェックサム演算処理を実行することができるため、請求項４記載の連想メモリ機能付き集積回路を制御する制御部は、その分、負荷が軽減される効果を奏する。
【図面の簡単な説明】
【図１】この発明の実施の形態１である連想メモリ機能付き集積回路の概念を模式的に示すブロック図である。
【図２】実施の形態１のＣＡＭ内蔵集積回路の構成を示すブロック図である。
【図３】ＣＡＭ内蔵集積回路とＡＳＩＣとの関係を示す説明図である。
【図４】実施の形態１のＣＡＭ内蔵集積回路のシグネチャマッチング検索動作を模式的に示す説明図である。
【図５】実施の形態１のＣＡＭ内蔵集積回路の動作の詳細を示すタイミング図である。
【図６】パケットデータ構造を示す説明図である。
【図７】従来のチェックサム演算を実現する具体的構成を示す説明図である。
【図８】実施の形態２のＣＡＭ内蔵集積回路の読み出しデータ出力機能を示す説明図である。
【図９】実施の形態２のＣＡＭ内蔵集積回路の読み出しデータ出力機能を示す説明図である。
【図１０】実施の形態２のＣＡＭ内蔵集積回路におけるチェックサム演算結果出力機能を示す説明図である。
【図１１】実施の形態２のＣＡＭ内蔵集積回路におけるＣＡＭアレイ周辺を示す説明図である。
【符号の説明】
１  ＡＳＩＣ（ＮＰＵ）、２  ＳＲＡＭ、３，１０  ＣＡＭ内蔵集積回路、９，１９  検索用ペイロードデータ・シフト部、１１，４０〜４３  ＣＡＭアレイ、１２  プライオリティエンコーダ、１３  ＡＮＤゲート群、１４  マスクレジスタ、１５  検索用データ組合せ部、１５ａ  ヘッダー部、１５ｂ  パイロード部、５，１６，３５，４９  セレクタ、１７  第１ヘッダー部、１８  第２ヘッダー部、２０  オフセット情報出力部、５０〜５３  チェックサム演算部。
【図１】
2005018942.tif 000003
【図２】
2005018942.tif 000004
【図３】
2005018942.tif 000005
【図４】
2005018942.tif 000006
【図５】
2005018942.tif 000007
【図６】
2005018942.tif 000008
【図７】
2005018942.tif 000009
【図８】
2005018942.tif 000010
【図９】
2005018942.tif 000011
【図１０】
2005018942.tif 000012
【図１１】
2005018942.tif 000013