JP2018010505A - 検索装置および半導体装置 - Google Patents

検索装置および半導体装置 Download PDF

Info

Publication number
JP2018010505A
JP2018010505A JP2016139220A JP2016139220A JP2018010505A JP 2018010505 A JP2018010505 A JP 2018010505A JP 2016139220 A JP2016139220 A JP 2016139220A JP 2016139220 A JP2016139220 A JP 2016139220A JP 2018010505 A JP2018010505 A JP 2018010505A
Authority
JP
Japan
Prior art keywords
search
associative memory
memory
generation unit
data
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
Application number
JP2016139220A
Other languages
English (en)
Inventor
武夫 三木
Takeo Miki
武夫 三木
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 JP2016139220A priority Critical patent/JP2018010505A/ja
Priority to US15/590,081 priority patent/US10191839B2/en
Priority to CN201710575752.4A priority patent/CN107622077B/zh
Publication of JP2018010505A publication Critical patent/JP2018010505A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0215Addressing or allocation; Relocation with look ahead addressing means
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/01Modifications for accelerating switching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • H03K19/21EXCLUSIVE-OR circuits, i.e. giving output if input signal exists at only one input; COINCIDENCE circuits, i.e. giving output only if all input signals are identical
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction

Landscapes

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

Abstract

【課題】メモリ消費量が少ない検索装置を提供する。
【解決手段】検索装置1は、第1検索キーによって検索される第1連想メモリ11と、第2検索キーによって検索される第2連想メモリ12と、第1連想メモリのマルチヒットを含むヒット情報に基づいて第1検索情報を生成する連結サーチデータ生成部13と、検索データの一部を第1検索キーとして生成する第1検索キー生成部、及び、第1検索情報と検索データの他の一部とを第2検索キーとして生成する第2検索キー生成部と、を有する検索キー生成部14と、を備える。
【選択図】図7A

Description

本開示は検索装置に関し、例えば連想メモリを有する検索装置に適用可能である。
連想メモリは例えば内容検査メモリ(Content Addressable Memory:以下「CAM」という。)で構成される。CAMは与えられた検索(入力)データに対して、それを格納するCAMのインデックス(アドレス)を生成する。CAMは、パターン・マッチング、インターネットのルータ、プロセッサのキャッシュ、TLB(Translation Lookaside Buffer)、データ圧縮、データベースのアクセラレータ、ニューラルネット、メモリパッチなど幅広い分野において利用されている。通常、CAMは、その機能から、2値CAM(Binary CAM:以下「BCAM」という。)及び3値CAM(Ternary CAM:以下「TCAM」という。)の二種類に分類される。BCAMでは、各セルに0及び1を格納する。TCAMでは各セルに0,1,及び*を格納する。ここで、「*」はドント・ケア(don't care)を表し、0と1の両方にマッチする。
本開示に関連する先行技術として、例えば米国特許第6874016号明細書、米国特許第7024515号明細書がある。
米国特許第6874016号明細書 米国特許第7024515号明細書
例えば、タプル(tuple)の一例であるネットワーク機器に定義されるACL(Access Control List)のようなルールテーブルは、ネットワーク上に接続される機器間の接続情報が複雑化するにつれて、より詳細で、細分化かれた設定が必要となってくるため、長く、複雑な記述が増えてきている。また、接続される機器も、近年飛躍的に上昇しており、連想メモリに要求されている最大ルール格納数の急速な拡大が望まれている。
本開示の課題はメモリ消費量が少ない検索装置を提供することにある。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本開示のうち、代表的なものの概要を簡単に説明すれば、下記のとおりである。
すなわち、実施形態に係る検索装置は、テーブルを分割して第1連想メモリと第2連想メモリに格納し、第1連想メモリから出力されたマルチマッチ出力された結果を、あらかじめ設定しておいたルールに従って検索結果を分類または論理圧縮する機能を用いて、検索情報をマージし、その結果を第2連想メモリに引き継ぐ。
上記検索装置によれば、メモリを効率的に使用することができる。
ACLテーブルの一例を説明するための図 図1の[17-33]のレンジ表現とドント・ケア表現の関係を説明するための図 図1の[6-30]のレンジ表現とドント・ケア表現の関係を説明するための図 比較例に係る連想メモリへのデータ格納方法を説明するための図 比較例に係るネットワーク装置の検索動作時のデータの流れを説明するための図 図5Aの検索データおよび第1検索キーを示す図 図5Aの連想メモリを示す図 図5Aのアクションメモリ部を示す図 実施形態に係る連想メモリへのデータ格納方法を説明するための図 実施例に係るネットワーク装置の検索動作時のデータの流れを説明するための図 図7Aの検索データ、第1検索キー、第1検索情報および第2検索情報を示す図 図7Aの第1連想メモリおよび連結サーチデータ生成部を示す図 図7Aの第2連想メモリを示す図 図7Aのアクションメモリ部を示す図 図7Aの検索キー生成部の構成例を示すブロック図 図7Aの第1連想メモリの構成例を示す図 図7Aの第2連想メモリの構成例を示す図 図7Aの連結サーチデータ生成部の構成例を示す図 図7Aのアクションメモリ部の構成例を示す図 図11の連結サーチデータ生成部の第1例を示す図 図11の連結サーチデータ生成部の第2例を示す図 図11の連結サーチデータ生成部の第3例を示す図 図15Aのメモリ格子状レジスタの構成を示す図 図15Bのメモリ格子状レジスタの第1変形例を示す図 図15Bのメモリ格子状レジスタの第2変形例を示す図 第1の接続例に係る連想メモリ部を示す図 第2の接続例に係る連想メモリ部を示す図 第3の接続例に係る連想メモリ部を示す図 第4の接続例に係る連想メモリ部を示す図 第5の接続例に係る連想メモリ部を示す図 第6の接続例に係る連想メモリ部を示す図 第1の実装例に係る半導体装置を示す断面図 第2の実装例に係る半導体装置を示す断面図 第3の実装例に係る半導体装置を示す断面図 第4の実装例に係る半導体装置を示す断面図および分解平面図 ACLテーブルのレンジ表現とドント・ケア表現の関係を説明するための図 ACLテーブルの例を示す図 図29AのACLテーブルを比較例の連想メモリへ格納する例を示す図 変形例に係る第1連想メモリへのデータ格納方法を説明するための図 変形例に係る連結サーチデータ生成部に対する事前プログラムを説明するための図 変形例に係る第2連想メモリへのデータ格納方法を説明するための図 変形例に係るネットワーク装置の検索動作時のデータの流れを説明するための図 図33Aの検索データ、第1検索キー、第1検索情報および第2検索情報を示す図 図33Aの第1連想メモリおよび連結サーチデータ生成部を示す図 図33Aの第2連想メモリおよびアクションメモリ部を示す図
以下、比較例、実施形態、実施例および変形例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
まず、ACLテーブルについて図1〜3を用いて説明する。図1はACLテーブルの一例を示す図である。図2は図1の[17-33]のレンジ表現とドント・ケア表現の関係を示す図である。図3は図1の[6-30]のレンジ表現とドント・ケア表現の関係を示す図である。
図1に示すACLテーブル(ACL Table)には、送信元ポート番号(Src. Port)、宛先ポート番号(Dst. Port)、送信元IPアドレス(Src. Add)、宛先IPアドレス(Dst. Add)、プロトコルタイプ(Proto, Protocol)、アクション(Action)が格納される。ここで、宛先ポート番号(Dst. Port)の[17-33]はレンジ表現で、ドント・ケア(Don’t Care)表現(*)を使用すると図2に示すようになる。宛先ポート番号(Dst. Port)の[6-30]も、ドント・ケアを使用すると図3に示すようになる。「16’b」は16ビットの2進数表示を意味する。
次に、本願発明者らが検討した技術(以下、比較例という。)について図4、5A〜5Dを用いて説明する。図4は比較例に係る連想メモリへのデータ格納方法を説明する図である。図5Aは比較例に係るネットワーク装置の検索動作時のデータの流れを示す概念図である。図5Bは図5Aの検索データおよび第1検索キーを示す図である。図5Cは図5Aの連想メモリを示す図である。図5Dは図5Aのアクションメモリ部を示す図である。
比較例では、連想メモリ(Associative Memory)としてTCAMを使用する例を説明する。図4に示すように、比較例では、図1に示すACLテーブルを1つのデータベースとして格納して検索動作を行う。そのため、ACLテーブルにある5つのルールをTCAMに格納しようとすると、14エントリを消費する。それは、図2、3に示すように、[17-33]、[6-30]というレンジ(範囲)を持ったルール記述をTCAMに格納しようとすると、それぞれ、5エントリ、6エントリが必要となるからである。また、例えばIPv4の仕様では、送信元ポート番号(Src. Port)、宛先ポート番号(Dst. Port)で16ビットずつ、また、送信元IPアドレス(Src. Add)、宛先IPアドレス(Dst. Add)で32ビットずつ、プロトコルタイプ(Proto)で、8ビットとすると合計で、104ビット幅が1エントリに必要となる。したがって、合計で、メモリとして、104ビット×14=1,456ビット必要となる。
ここで、注目しなければいけない部分は、送信元IPアドレス(Src. Add)と宛先IPアドレス(Dst. Add)の部分で、1つのルールでレンジ表現を使用した全エントリに対して同一データを入れる必要があることである。そのため、レンジ表現によって、1ルールは複数行を使って表現するようなケースでは冗長なメモリ消費が起きる。なお、ACLテーブルのアクション(Action)はアクションメモリ(Action Memory)部に格納される。
図5Aの比較例に係るネットワーク装置は検索装置1Rとネットワーク制御装置2とを備える。検索装置1Rは連想メモリ部10Rとアクションメモリ部20とを備える。連想メモリ部10Rは連想メモリ11Rと検索キー生成部14Rとを備える。ネットワーク制御装置(NCU)2はNPU(ネットワークプロセッサ)やASIC等で構成される。
ここで、検索装置1Rの主な動作の流れについて説明をする。
(1)ネットワーク制御装置2は、図5Bに示すような検索対象となるデータ(検索データ)を検索装置1Rの連想メモリ部10R内の検索キー生成部14Rに送る。最初に、検索キー生成部14Rは送られてきた検索データから図5Bに示すような第1検索キー(1st Search Key)を生成する。検索データと第1検索キー(1st Search Key)は同じである。
(2)連想メモリ11Rは、検索キー生成部14Rで生成した第1検索キー(1st Search Key)を用いて、連想メモリ11R内のデータを検索する。この時、検索キーデータである第1検索キー(1st Search Key)に対して複数のデータが一致した場合は、一致した全てのマルチヒット情報(複数のデータでキーとの一致があった状態)をプライオリティエンコーダ(Priority Encoder:PE)112Rに伝達する。図5Cに示すように、連想メモリ11Rのエントリ#13にはすべてに「any」が格納されているので、すべての第1検索キーに対して一致し、マルチヒットが発生する。ここでは、連想メモリ11Rのエントリ#0、#13でマルチヒットが発生する。
(3)複数のデータで一致があった場合は、プライオリティエンコーダ(PE)112Rを接続している構成をとっているので、一致アドレスの中で最も優先度の高いアドレスのみを、最終の検索結果(ヒットインデックス(Index))として、アクションメモリ部20に検索結果を送る。プライオリティエンコーダ112RはLSBが最も優先度が高く、MSBが最も優先度が低い。よって、エントリ#0が出力される。
(4)アクションメモリ部20では、検索結果をもとに、検索装置1Rに入力されてきたデータ(例えば、IPアドレスや、ポート番号等)に対して、どのような処置(Action)を行うのかをあらかじめプログラムされている。アクションメモリ部20は、最終検索結果のアドレスに対応したデータの読み出し動作をし、その結果をネットワーク制御装置2に送信する。図5Dに示すように、エントリ#0のdenyがActionとして出力される。これにより、一連の検索動作が完了する。
図5Aに示すように、1つのACLテーブルを1つの連想メモリに格納することで、冗長なエリアを動作させることになり、メモリ消費量が増加するだけでなく、それに比例して消費電力も増加してしまう。連想メモリをTCAM等のCAMで構成した場合は、メモリの使用容量に応じて電力が増加してしまう特性があるため、電力増加による発熱対策や、電源設計に対する課題があり、単純にメモリ容量を増加させることが難しくなっている。そのため、メモリそのものの効率的な使用手法が必要である。比較例では、説明を簡単にするために、送信元ポート番号(Src. Port)部分にはレンジ表現のルールを使用しなかったが、この部分に、宛先ポート番号(Dst. Port)部分と同様なレンジ表現のルールを適用する場合、全組み合わせ分のエントリをTCAMに格納することが必要になるため、複雑なルール記述になればなるほどエントリ数は増大していく。
次に、実施形態に係る検索機構について図6を用いて説明する。図6は実施形態に係る連想メモリに対するデータ格納の方法を示す図である。
実施形態に係る検索装置は、テーブルを分割して第1連想メモリと第2連想メモリに格納し、第1連想メモリから出力されたマルチマッチ出力された結果を、あらかじめ設定しておいたルールに従って検索結果を、分類または論理圧縮する機能を用いて、検索情報(ヒット情報、ミス情報、ヒットアドレス等)をマージし、その結果を第2連想メモリに引き継ぐ。第2連想メモリに第1連想メモリとの連結をするために追加するデータ(例えばRule Flag)が格納されるが、第2連想メモリに1つのルールでレンジ表現を使用した全エントリに対して同一データを入れる必要がないため、レンジ表現によって、1ルールは複数行を使って表現するようなケースでも冗長なメモリ消費が起きない。よって、網掛け部分が不要となるのでメモリの消費を節約することができる。第1連想メモリのエントリ数をM、第2連想メモリのエントリ数をL、ルール数をNとすると、L<M、N<Mの関係にある。なお、ACLテーブルの検索でない場合はアクションメモリに相当するメモリは必ずしも必要ない。
実施形態によれば、比較例のように重複したデータを格納する必要がなくなるため、大幅なメモリの削減を行うことができる。この効果は、連想メモリにTCAMを使用する場合、メモリの低消費効果も期待できるだけでなく、ビット単価の効果なメモリリソースを効率的に利用できる。
実施形態は検索テーブルを連結して、マルチマッチ情報を伝達して検索を実現するものであるので、連結するための機構として、連想メモリと連結サーチデータ生成部のセットで、シリアル接続させて追加していくことで、テーブルサイズを自由に選択可能である。従来は、ツリー検索などのように1つの検索動作に対してレーテンシーが多く必要な検索手法でしか長い文字列の検索を実現することができなかったが、実施形態では直列に連想メモリをつなげていくことで実現可能となる。したがって、今まで実現が困難であった横幅の大きいテーブル(例えば、文字数、数字の桁数が大きいテーブル)に対しても検索可能となる。
さらに、実施形態は、分岐処理を作らずに、パイプライン構成を取ることが容易であるため、処理能力を上げやすく大量なデータ処理を行うのにも適した構成である。そのため、ネットワーク機器だけでなく、ワークステーションにおけるビッグデータ解析にも適用することができる。
実施形態の効果として、以下のようなものが挙げられる。
(1)長い文字列の検索が可能。
(2)同じ文字列の部分をテーブルごとに分割して纏めることができるため、メモリの消費量を削減可能。また、単位あたりのルール格納数の向上が可能。
(3)メモリ消費量を減らすことが可能でありので、電力も削減可能。
(4)ルールファイルが大きくなっても対応可能。
(5)テーブルメンテナンス動作の高速化が可能。
(6)分割動作が可能であり、不必要な検索動作を止めることができるようになるため、さらなる低消費電力化が可能。
連想メモリの形態は、ハードウエアのみで構成されるTCAMやBCAM等のCAMであっても、汎用的なRAM(DRAM、SRAM、FLashメモリ等)と木構造検索やハッシュテーブルを使って連想メモリの機能をエミュレートするような形態であっても、ソフトウエア(CPUとメモリ)を使用してエミュレートした形態であってもよい。
検索したマルチヒット情報を分類する仕組みやデータを圧縮する機能部分は、FPGAを用いて構成したものでもよい。また、マルチヒット情報を分類する仕組みは、CPUなどのプログラム可能な論理回路でも、メモリと論理回路を格子状にならべたもの行っても、ソフトウエアで分類する機能をエミュレートしてもよい。
以下に、上述の実施形態の一例である実施例を説明する。実施例は上述の実施形態の効果を奏する。
実施例に係る検索機構について図7A〜7Eを用いて説明する。図7Aは実施例に係るネットワーク装置の検索動作時のデータの流れを示す概念図である。図7Bは図7Aの検索データ、第1検索キー、第1検索情報、第2検索キーを示す図である。図7Cは図7Aの第1連想メモリ、連結サーチデータ生成部を示す図である。図7Dは図7Aの第2連想メモリを示す図である。図7Eは図7Aのアクションメモリを示す図である。
実施例に係るネットワーク装置は検索装置1とネットワーク制御装置(NCU)2とを備える。検索装置1は連想メモリ部10とアクションメモリ部20とを備える。連想メモリ部10は第1連想メモリ11と第2連想メモリ12と連結サーチデータ生成部13と検索キー生成部14とを備える。検索キー生成部14は、第1検索キー(1st Search Key)生成部と第2検索キー(2nd Search Key)生成部とを含む。ネットワーク制御装置2はNPU(ネットワークプロセッサ)やASIC等で構成される。実施例では、連想メモリとしてTCAMを使用する例を説明する。第1連想メモリのエントリ数(M)は15、第2連想メモリのエントリ数(L)は第1連想メモリのエントリ数よりも少ない5、ルール数(N)は5の例について説明する。
ここで、検索装置1の主な動作の流れについて説明をする。
(1)ネットワーク制御装置2は、図7Bに示すような検索対象となるデータ(検索データ)を検索装置1の連想メモリ部10内の検索キー生成部14に送る。最初に、検索キー生成部14は送られてきた検索データから図7Bに示すような第1検索キー(1st Search Key)を第1検索キー(1st Search Key)生成部により生成する。第1検索キー(1st Search Key)は検索データから一部を切り出したものであるので、容易に生成することができる。
(2)第1段目の検索では、第1連想メモリ11は検索キー生成部14の第1検索キー(1st Search Key)生成部で生成した第1検索キー(1st Search Key)を用いて第1連想メモリ11内のデータを検索する。この時、検索キーデータである第1検索キー(1st Search Key)に対して複数のデータが一致する場合は、一致する全てのマルチヒット情報(複数のデータでキーとの一致がある状態)を連結サーチデータ生成部13に伝達する。図7Cに示すように、第1連想メモリ11のエントリ#0、#6、#13には「any」が格納されているので、すべての第1検索キーに対して一致し、マルチヒットが発生する。
(3)次に、連結サーチデータ生成部13は、第1連想メモリ11にて検索された結果を分類、論理圧縮をした後、第2検索キー(2nd Search Key)を生成するため、図7Bに示すような第1検索(1st search)情報を検索キー生成部14に出力する。図7Cの楕円破線Aに示すように、ヒット(Hit)が発生したエントリ(Index)のマルチヒット情報が連結サーチデータ生成部13に送られて、検索情報の引継ぎが行われる。連結サーチデータ生成部13はエントリに対応するデータ(ルール番号(Rule #))が格納され、ルール数のデータに圧縮する。
(4)次に、検索キー生成部14の第2検索キー(2nd Search Key)生成部は、連結サーチデータ生成部13から供給された第1連想メモリ11での検索結果情報(1st search情報)と、最初に入ってきた検索データを使用して、図7Bに示すような第2段目の検索に使用する第2検索キー(2nd Search Key)を生成する。第2検索キー(2nd Search Key)は、検索結果情報(1st search情報)と検索データから第1検索キー(1st Search Key)を除いたとものを連結するので容易に生成することができる。
(5)第2連想メモリ12は、検索キー生成部14の第2検索キー(2nd Search Key)生成部で作られた第2検索キー(2nd Search Key)を使用して、第2連想メモリ12内のデータに、第2検索キー(2nd Search Key)が含まれているかどうかの検索を行う。図7Dに示すように、第2連想メモリ12のエントリ#0、#4でマルチヒットが発生する。なお、第2連想メモリ12の検索は第1連想メモリ11の検索の終了後に行われるので、1度に動作する連想メモリの容量を削減することができ、比較例よりも低消費電力化が可能である。
(6)複数のデータで一致がある場合は、本例では、第2連想メモリ12のメモリ部121に、プライオリティエンコーダ(Priority Encoder:PE)122を接続している構成をとっているので、一致アドレスの中で最も優先度の高いアドレスのみを、最終の検索結果(ヒットインデックス)として、アクションメモリ部20に検索結果を送る。プライオリティエンコーダ122ではLSBが最も優先度が高く、MSBが最も優先度が低い。よって、エントリ#0が出力される。
(7)アクションメモリ部20では、検索結果をもとに、検索装置1に入力されてきたデータ(例えば、IPアドレスや、ポート番号等)に対して、どのような処置(Action)を行うのかをあらかじめプログラムされる。アクションメモリ部20は、最終検索結果のアドレスに対応したデータの読み出し動作をし、その結果をネットワーク制御装置2に送信する。図7Eではエントリ#0のdenyがアクション(Action)として出力される。これにより、一連の検索動作が完了する。
次に、図7の検索キー生成部について図8を用いて説明する。図8は図7Aの検索キー生成部の構成例を示すブロック図である。
検索キー生成部14は、キーデータバッファ(Key Data Buffer)141、キーパーサ(Key Parser)部142、パーシング(Parsing)ルール管理部143、キーサイズ(Key Size)設定管理部144、第1検索キー(1st Search Key)生成部145、第2検索キー(2nd Search Key)生成部146、FIFO147で構成されている。
まず、入力される検索データは、キーデータバッファ141に貯められる。その後、第1検索キー生成部145は、パーシングルール管理部143にプログラムされる情報と、キーサイズ設定管理部144にプログラムされる情報をもとに、検索データを、第1連想メモリ11用に切り分けて第1検索キーを生成する。また、第2検索キー生成部146は、検索データから第1検索キーを除いたものに第1段目の検索によって得られた一致情報(1st Search 情報)を加えて、第2連想メモリ12用に対応する第2検索キーを生成する。1st Search 情報には、例えばマルチヒット情報、ヒットルール番号、タグ番号、ヒットインデックス(Hit Index)等が含まれる。
すなわち、第2検索キー(2nd Search Key)は、入力されてきた検索データに対する一致情報(1st Search 情報)によってリアルタイムに変化することになる。このリアルタイムに変化できる仕組みを利用して、第1段目の検索結果と第2段目の検索結果を連結することができる。
キーデータバッファ141は、検索データの一次記憶、レーテンシーの調整を行う部分である。FIFO構成や、2ポートSRAM等のメモリを利用して構成することが可能である。
パーシングルール管理部143は、検索キーを生成する際に、一部の検索キーのみ組み替えて複数の検索キーを生成して、複数の検索を同時に実行するためのデータを生成する。
キーサイズ設定管理部144では、第1検索キー、第2検索キーそれぞれのサイズを設定しておき、予め設定しておいたサイズにキーパーサ142で検索キーサイズを振り分ける情報を提供する機能を有する。
第1検索キー(1st Search Key)生成部145では、予め、パーシングルール管理部143やキーサイズ設定管理部144にプログラムされた情報を基に、第1連想メモリ11の検索テーブルサイズに合わせて、第1検索キーを生成する機能を有する。
第2検索キー生成部146では、第1段目の検索で得られたマルチヒット情報を含めた検索結果と、キーデータバッファ141に第1段目の検索の検索結果が確定するまで一時的に保持されていたオリジナルの検索データを基に、第2連想メモリ12の検索テーブルサイズに合わせた第2検索キーを生成する機能を持つ。
次に、連想メモリの機能について図9、10を用いて説明する。図9は第1連想メモリを示す図である。図10は第2連想メモリを示す図である。
第1連想メモリ11、第2連想メモリ12はそれぞれメモリ部111、121に対する検索機能の他に書き込み機能および読み出し機能を備えている。ネットワーク制御装置2はWrite系制御によって検索対象データを連想メモリ内にあらかじめ所定のデータ設定手順で格納することにより、第1連想メモリ11および第2連想メモリ12にデータベースを構成する。Write系制御には制御信号、アドレス、書き込みデータが含まれる。第1連想メモリ11および第2連想メモリ12はこのデータベースと検索データ(サーチキー)との比較一致を行い、検索データと一致するものがある場合は、一致したデータが格納されているアドレス情報(サーチ結果)を出力する機能を持っている。また、第1連想メモリ11および第2連想メモリ12は、ネットワーク制御装置2からのRead系制御によって記憶しているデータベースの内容を読み出して、その読み出しデータを出力する機能も持つ。Read系制御には制御信号、アドレスが含まれる。第1連想メモリ11の検索データは第1検索キーで、第2連想メモリ12の検索データは第2検索キーである。第1連想メモリ11のサーチ結果はマルチヒット情報、ヒットアドレス、ヒットカウンタ等で、第2連想メモリ12の検索結果はマルチヒット情報、ヒットアドレス、ヒットカウンタ等である。
第1連想メモリ11は、複数の一致情報が得られる場合、複数のヒット情報(マルチヒット情報)を出力する。第1連想メモリ11で得られるサーチ結果は、連結サーチデータ生成部13で圧縮して、検索キー生成部14に伝達して、第2検索キーの生成を行うのに用いられる。連結サーチデータ生成部13は複数のヒット情報を纏めて、次段の連想メモリに伝達する。これにより、伝達する際のデータ量が増大することを抑制することができ、複数の検索結果を連結するための多くの情報が必要なくなる。したがって、検索テーブルの更新があった際に検索結果を連結するためのデータを再構築する必要がなくなる。
第2連想メモリ12は、第1段目の検索結果の情報を基に検索キー生成部14が生成する第2検索キーを使用してデータの一致を検査する。1つの一致情報しか得られない場合には、そのアドレスをそのまま出力する。複数のアドレスでデータの一致がある場合には、プライオリティエンコーダ122を介して、最も優先度の高いアドレス(本実施例では、LSBアドレスの例を挙げている)を出力する。なお、第2連想メモリ12のエントリ数(L)は第1連想メモリ11のエントリ数(M)よりも少ない。
第2連想メモリ12で出力されるヒットアドレスは、最終的には、入力されたデータに対する処理を決定するために、アクションメモリ部20の読み出しアドレス(または、アドレス情報のベース)として使用され、アクションメモリ部20内にあらかじめプログラムしておく動作情報などのデータを読み出し、ネットワーク制御装置2に結果を送り、一連の動作を完了することができる。
次に、連結サーチデータ生成部の機能について図11を用いて説明する。図11は連結サーチデータ生成部を示す図である。
連結サーチデータ生成部13は、データ圧縮機能の他に書き込み機能および読み出し機能を備えている。ネットワーク制御装置2はWrite系制御によってルール番号をあらかじめ所定のデータ設定手順で記憶することにより、連結サーチデータ生成部13にデータ圧縮機能を構成する。Write系制御には制御信号、アドレス、書き込みデータが含まれる。連結サーチデータ生成部13は、第1連想メモリ11の出力(ヒット情報、インデックス)によってこのルール番号がアクセスされることにより、第1検索情報であるマルチマッチ情報(ヒットルールフラグ、ルール情報、分類情報、Hash値等)を出力する機能を持っている。また、連結サーチデータ生成部13は、ネットワーク制御装置2からのRead系制御をよって記憶しているルール番号を読み出して、その読み出しデータを出力する機能も持つ。Read系制御には制御信号、アドレスが含まれる。
次に、アクションメモリ部の機能について図12を用いて説明する。図12はアクションメモリ部を示す図である。
アクションメモリ部20は、書き込み機能および読み出し機能を備えている。ネットワーク制御装置2はWrite系制御によってアクションをあらかじめ所定のデータ設定手順で記憶する。Write系制御には制御信号、アドレス、書き込みデータが含まれる。アクションメモリ部20は、第2連想メモリ12の出力(ヒット情報、インデックス)によってこのアクションがアクセスされ次動作情報(Deny、Permit等)を出力する機能を持っている。また、アクションメモリ部20は、ネットワーク制御装置2からのRead系制御によって記憶しているアクションを読み出して、その読み出しデータを出力する機能も持つ。Read系制御には制御信号、アドレスが含まれる。アクションメモリ部20は連想メモリ内の内蔵メモリまたはQDR SRAMやDDR SDRAMの外部メモリ等に格納される。
次に、連結サーチデータ生成部13の構成例について図13〜17を用いて説明する。これらの構成例は説明を簡単にするために説明を省略するが、予め、プログラム可能にするための機構(Write回路や、レジスタ、ヒューズ回路、外部信号による設定回路等の機能)を備えている。
図13は連結サーチデータ生成部の第1の構成例を示す図である。第1の構成例に係る連結サーチデータ生成部13Aはメモリ部131と圧縮回路132Aを備える。第1連想メモリ11の各エントリに対応付け、第1連想メモリ11より出力されたサーチ結果を受けた場合に、予め何のルール番号を出力するかをメモリ部131にプログラムしておく構成で実現した例である。
出力データは、第1連想メモリ11の検索結果(Hit、Index)とメモリ部131に格納されるデータの関係でマルチヒットとなる場合がある。その場合は、マルチヒット情報は、予め設定しておいたルール数のデータに圧縮する。図13では、エントリ数が14あるので最大14個のマルチヒットの発生がありえるが、ルール数を5個に圧縮する。なお、エントリ数およびルール数はこれらの値に限定されるものではない。圧縮回路132Aでの圧縮する方法として、論理的にオア(OR)やノア(NOR)をとる方法、ワイヤード・オア(Wired-OR)やワイヤード・ノア(Wired-NOR)で実現する方法が適用できる。この例では、ルール番号が1(Rule #1)で複数のヒット情報があるが、1ビットに集約されていることがわかる。なお、圧縮回路をクロスバースイッチで構成し、クロスバースイッチを所望のスイッチ接続状態になるようにプログラムすることでもマルチヒットした情報のデータ圧縮することも可能である。
図14は連結サーチデータ生成部の第2の構成例を示す図である。第2の構成例に係る連結サーチデータ生成部13Bはメモリ部131と圧縮回路132Bを備える。圧縮回路132Bは、第1の構成例と同様にエントリ数が14あるので最大14個のマルチヒットの発生がありえるが、ルール数の5個に圧縮する。なお、エントリ数およびルール数はこれらの値に限定されるものではない。圧縮回路132Bは、キャッシュメモリ134を含むCPU132と、ワークメモリ135と、不揮発性メモリ136と、レジスタ(Register)137と、を備える。レジスタ137にあらかじめプログラムしておいたルールに従って、ヒットエントリに対応するルール単位でデータを圧縮して出力することを、CPU133と、プログラムを格納するキャッシュメモリ134およびデータを格納するワークメモリ135を使用したソフトウエア処理によって行う。このときの、ワークメモリ135は、内蔵型でも、外付け型でも構わない。また、CPU133での処理を行うのを容易化させるために、第1連想メモリ11より出力されたマルチヒット情報に適当な符号化処理(例えば、ハッシュ(Hash)関数やデコーダーを用いた符号化処理)を行ってもよい。さらに、不揮発性メモリ136を付加することで、予め設定する必要があるプログラムやルールをロードすることが可能な仕組みを構成することができる。このときの、ワークメモリ135、不揮発性メモリ136は、内蔵型でも、システムの外付け型でもよい。
図15Aは連結サーチデータ生成部の第3の構成例を示す図である。図15Bは図15Aのメモリ格子状レジスタの構成を示す回路図である。
第3の構成例に係る連結サーチデータ生成部13Cは、メモリ部131Cと、ライト回路(Write Circuit)138と、レジスタ(Register)139と、を備える。メモリ部131Cは、連想メモリ11のエントリに対応するサーチ結果と連結サーチデータ生成部13Cとを対応付けし、予めプログラムしておいたエントリに対応つけられたルール番号に対してヒットエントリに対応する部分のメモリ格子状レジスタ1311にフラグを立てておき、ルールに対応つけられたフラグ毎に論理的に圧縮する。論理的圧縮は、アレイ構成の縦方向をOR回路1312で数珠つなぎして構成している。メモリ格子状レジスタ1311は、最小の素子の単位として、D−フリップフロップ1313と、AND回路1314と、OR回路1312と、で構成し、連想メモリのエントリ毎に、対応するフラグをプログラムできるように構成している。メモリ格子状レジスタ1311のOR回路1312の入力には1つ上段のOR回路1312の出力信号が入力され、OR回路1312の出力信号は1つ下段のOR回路1312に入力される。なお、最上段のOR回路1312にはLowが入力される。この例では、横方向に、Nビット(N-bits)分、縦方向に、最大でMエントリ分(連想メモリのエントリ数と同じM個の場合)並べる。Nは分類するためのルール数やカテゴリの数を表している。Nの値は、2以上の数であれば可変であって構わない。マルチヒットは最大M個発生し、圧縮回路でN個に圧縮するので、ルール数やカテゴリの数(N)は連想メモリのエントリ数(M)よりも小さい値である。
メモリ部131CのRWL(Read Word Line)を連想メモリ11のマッチ出力(Match Out)信号と直接またはバッファ(Buffer)を介して接続する構成をとっている。予め、WWL(Write Word Line)をHighにしている時に、“1”をプログラムしておきたいときは、WD(Write Data)をHighに、“0”をプログラムする場合には、WD(Write Data)がLowになるようにWrite回路138を制御する。こうすることで、D−フリップフロップ1313にデータを記憶することができる。
対象のメモリ格子状レジスタ1311で、プログラムしたいルール番号に相当する箇所のフラグを活性するようにするために、“1”をD−フリップフロップ1313に記憶させておく。これにより、RWLがHigh、すなわち、接続されたマッチ出力(Match Out)信号が、High(Hit状態)になると、RD(Read Data)はHighになり、OR回路1312の出力もHighとなりフラグが生成され、レジスタ139に格納される。
エントリ毎でハードウエハの構成上接続が不可能であるケースまたは困難なケースにおいては、ブロックレベルに信号を纏めて、連想メモリのエントリ数をいくつかのブロックにまとめたものを、マッチ出力(Match Out)信号として連結サーチデータ生成部と接続しても構わない。この場合は、連想メモリへの格納方法で、ブロック単位で同じルールが固まるようにする等の処理をあらかじめ実施してデータの格納方法を接続方法に合わせておくことで本構成例を適用することができる。
また、連想メモリとしてTCAMを用いる場合、TCAMのマッチアンプ(Match Amp)出力または論理的に等価なものをパイプラインで、連結サーチデータ生成部に接続することにより、サーチのスループットはそのままで、検索動作を実行することが可能となる。この構成はロングキー検索の場合にも有効である。
図16は図15Bのメモリ格子状レジスタ1311の第1変形例を示す図である。第1変形例に係るメモリ格子状レジスタ1311Dは、図15Bのメモリ格子状レジスタ1311より素子数を削減して構成されたもので、レイアウト面積を小さくすることができる。
メモリ格子状レジスタ1311DのRWL(Read Word Line)を連想メモリ11のマッチ出力(Match Out)信号と直接またはバッファ(Buffer)を介して接続する構成をとっている。予め、WWL(Write Word Line)をHighにしている時に、“1”をプログラムしておきたいときは、WD(Write Data)をHighに、“0”をプログラムする場合には、/WD(Write Data Bar)がHighになるように制御する。こうすることで、トランジスタN1とトランジスタN2の間にあるインバータIN1とインバータIN2で構成されるラッチ部にデータを記憶することができる。
対象のメモリ格子状レジスタ1311Dで、プログラムしたいルール番号に相当する箇所のフラグを活性するようにするために、“1”をラッチに記憶させておく。これにより、RWLがHigh、すなわち、接続されたマッチ出力(Match Out)信号が、High(Hit状態)になると、RD(Read Data)はLowになる。RDを予めHigh電位にプリチャージしていれば、RDにつながるメモリ格子状レジスタ1311Dの中で、1つでもGNDへの引き抜くパス(トランジスタN3、N4が導通するもの)があれば、RDがLowになり、コンパレータCMPの出力信号(/ORing)はLowとなりフラグを生成することができる。この変形例では、データのマージ動作としては、ワイヤード・ノア(Wired-NOR)で実現している。
図17は図15Bのメモリ格子状レジスタの第2変形例を示す図である。第1変形例に係るメモリ格子状レジスタ1311Dは、RDのレベルを検知するために、データを比較する際のリファレンス電位である基準電位(Vref)という比較用のレベルを別途生成する必要があったが、第2変形例に係るメモリ格子状レジスタ1311Eは、RDと/RD(Read Data Bar)との相補バスのレベルを比較する構成をとることによって基準電位(Vref)生成回路を設ける必要がなくなる。なお、/RDはトランジスタN5、N6を介してGNDに接続される。
次に、図7Aの連想メモリ部10、すなわち、第1段目(先頭)の連想メモリ11と、連結サーチデータ生成部13と、第n段目(最終段)の連想メモリ12の接続例について図18〜23を用いて説明する。
図18は第1の接続例に係る連想メモリ部を示す図である。連想メモリ部10Fはアレイサイズの異なる複数の連想メモリ11F、12Fを直列に連結して構成される。連想メモリ部10Fは第1段目の連想メモリ11Fと最終段の連想メモリ12Fと連結サーチデータ生成部13Fと検索キー生成部14Fとを備える。最終段の連想メモリ12Fはプライオリティエンコーダ(PE)を有する。
第1段目の連想メモリ11Fには、ポート(Port)番号のようにレンジ表現で、3(Ternary)値を使用するデータを格納し、最終段の連想メモリ12Fのサーチでは、それ以外の検索を行う。第1段目の検索では、送信元ポート(Source Port)番号と、宛先ポート(Destination Port)番号で、それぞれ16ビット(16 bits)なので合計32ビット(32 bits)を使用して、検索を実行することで、メモリの使用量を抑えることができる。
さらには、アレイサイズを小さくした場合に、エントリ(Entry)数を比例して増やすことができる構成をとっておく(縦と横のバランスを切り替えることができる構成:例えば、32ビット×Mエントリ(32 bits × M entries)と、160ビット×Lエントリ(160 bits × L entries)が同じ大きさのメモリアレイブロックで構成しておく)ことで、レンジ展開をする部分のデータは、その他のレンジ展開を必要としない部分のデータ記述の部分よりもエントリ数を必要とするので、メモリ使用量でバランスがとりやすくなり、効率的にメモリを使用することが可能となる。なお、L<Mの関係にある。図18ではLがMより小さい場合の例について説明したが、これに限定されるものではなく、L≧Mであってもよい。この場合、第1段目の連想メモリ11Fの1エントリのビット数は最終段の連想メモリ12Fの1エントリのビット数以上になる。
図19は第2の接続例に係る連想メモリ部を示す図である。連想メモリ部10Gは3つのサーチ結果を直列に連結して構成される。連想メモリ部10Gは第1段目の連想メモリ11_1Gと第2段目の連想メモリ11_2Gと最終段の連想メモリ12Gと第1段目の連結サーチデータ生成部13_1Gと第2段目の連結サーチデータ生成部13_2Gと検索キー生成部14Gとを備える。最終段の連想メモリ12Gはプライオリティエンコーダ(PE)を有する。
このように、連想メモリを2つだけの接続ではなく、3つ以上つなげることで、従来実現できなかったロングキーサーチを実現することが可能となる。
図20は第3の接続例に係る連想メモリ部を示す図である。連想メモリ部10Hは最終段の連想メモリ12Hのテーブル内部にテーブルを連結させるためのデータ(フラグ)を埋め込んで構成される。第3の接続例は、連想メモリ部10の構成と同様である。
図21は第4の接続例に係る連想メモリ部を示す図である。連想メモリ部10Iは1つの連想メモリからの連結サーチデータを、複数の連想メモリに連結して構成される。連想メモリ部10Iは第1段目の連想メモリ11Iと最終段の連想メモリ12_1I、・・・、12_nIと連結サーチデータ生成部13Iと検索キー生成部14Iとプライオリティエンコーダ(PE)15Iとサーチイネーブル信号生成部16Iとテーブルデータ管理部17Iとを備える。最終段の連想メモリ12_1I、・・・、12_nIはそれぞれプライオリティエンコーダ(PE)を有する。
この方法を実現するために、連結サーチデータ生成部13Iからサーチイネーブル信号生成部16Iにヒットアドレスを送ることで、サーチイネーブル信号生成部16Iはテーブルデータ管理部17Iにヒットインデックスの属するテーブルの連結情報を問い合わせ、テーブルデータ管理部17Iはサーチイネーブル信号生成部16Iに連結情報を伝達する。サーチイネーブル信号生成部16Iは対象となるデータベースを格納している最終段の連想メモリをサーチイネーブル(Search Enable)信号で選択して活性化する。また、検索キー生成部14Iは第2検索キーを第1最終段の連想メモリ(最終1)12_1I、・・・、第n最終段の連想メモリ(最終n)12_nIに並行して送り、サーチイネーブル信号で活性化される連想メモリが検索動作を実行する。
その検索結果は、サーチイネーブル信号で活性化される連想メモリそれぞれにあるプライオリティエンコーダ(PE)に送られて最優先アドレスが選び出されたのち、さらに連想メモリ間での優先アドレスを次段のプライオリティエンコーダ(PE)15Iに送り最終的なヒットアドレスが確定する。この手法を用いることで、最終段の連想メモリのテーブルデータが大きくなって1つのメモリブロックで収まらなくなった場合の拡張が実現できる。サーチイネーブル信号で活性化されない連想メモリがあるので、低消費電力化が可能になる。なお、最終段の連想メモリが2個の場合は、サーチイネーブル信号(サーチイネーブル信号生成部16Iおよびテーブルデータ管理部17I)とプライオリティエンコーダ(PE)15Iのいずれか一方はなくてもよい。
図22は第5の接続例に係る連想メモリ部を示す図である。連想メモリ部10Jは複数のサーチ結果を複数ブロックに直列に連結して構成される。連想メモリ部10Jは第1段目の連想メモリ11_1J、・・・、11_nJと最終段の連想メモリ12_1J、・・・、12_nJと連結サーチデータ生成部13Jと検索キー生成部14Jとプライオリティエンコーダ(PE)15Jとサーチイネーブル信号生成部16Jとテーブルデータ管理部17Jとを備える。最終段の連想メモリ12_1J、・・・、12_nJはそれぞれプライオリティエンコーダ(PE)を有する。
第5の接続例と図21の第4の接続例との違いは、第1段目で複数連想メモリ(連想メモリ11_1J、・・・、11_nJ)の検索結果を纏めることを行うことである。連結サーチデータ生成部13Jは複数の1段目の連想メモリの検索結果を纏めて、2段目(最終段)の複数の連想メモリのための情報を検索キー生成部14Jに渡す。このような接続を実現することで、複数の連想メモリに対して連結サーチデータ生成部を共有化できることで面積削減や低消費電力効果が実現できる。
図23は第6の接続例に係る連想メモリ部を示す図である。連想メモリ部10Kは最初に複数のサーチ結果を纏めたのちに1つの連想メモリに連結して構成される。連想メモリ部10Kは第1段目の連想メモリ11_1K、・・・、11_nKと最終段の連想メモリ12Kと連結サーチデータ生成部13Kと検索キー生成部14Kとを備える。最終段の連想メモリ12Kはプライオリティエンコーダ(PE)を有する。各連想メモリに格納するデータは、ルールの記述する内容によって、レンジ表現が多く含まれているケースや、ルールの細分化状態等の条件によって先頭(1段目)のテーブルサイズのみが大きくなってしまうことがある。このような場合には、先頭の連想メモリのテーブルサイズのみ複数をまとめて引き継ぎ、2つ目(最終段)の連想メモリに連結させることで効率的にメモリを使用することが可能となる。
(実装例)
図24は第1の実装例に係る半導体装置を示す断面図である。半導体装置100Aは同一基板110A上に連想メモリ120Aと連結サーチデータ生成部130Aを実装している。連想メモリ120Aは第1連想メモリ11と第2連想メモリ12とを含んだ半導体チップであり、バンプ電極PEA1で基板110Aに電気的に接続されるとともに固定され、レジンREA1等の樹脂材料によって半導体チップの回路形成面はバンプ電極PEA1と共に封止されている。連結サーチデータ生成部130Aは連結サーチデータ生成部13を含んだ半導体チップであり、バンプ電極PEA2で基板110Aに電気的に接続されるとともに固定され、レジンREA2等の樹脂材料によって半導体チップの回路形成面はバンプ電極PEA2と共に封止されている。連想メモリ120Aおよび連結サーチデータ生成部130Aのそれぞれは既にレジン等で封止されたものであってもよい。検索キー生成部14は連結サーチデータ生成部130Aまたは連想メモリ120Aに含まれてもよい。
連結サーチデータ生成部13では、予めヒット情報を分類するためのルールを記憶しておくメモリが必要となるが、従来製品との互換性を保ちたいだけの顧客には本機能がコストアップにつながるケースがある。そのため、連想メモリ120Aのチップ外部に連結サーチデータ生成部13の機能を持ち出すことを実施し、必要に応じてパッケージのオプション化としてコストの最適化を図ることが可能となる。連結サーチデータ生成部130Aとしては、DRAMやSRAMなどの一般的なメモリ製品にロジックを加えた形態や、FPGAで、連結サーチデータ生成部の機能を実現した形態でも実現可能である。
図25は第2の実装例に係る半導体装置を示す断面図である。半導体装置100Bは連想メモリ120Bと連結サーチデータ生成部130Bを3D実装技術で基板110Bに実装している。連想メモリ120Bは第1連想メモリ11と第2連想メモリ12とを含んだ半導体チップであり、バンプ電極PEBで基板110Bに電気的に接続されるとともに固定され、レジンREB等の樹脂材料によって半導体チップの回路形成面はバンプ電極PECと共に封止されている。連結サーチデータ生成部130Bは連結サーチデータ生成部13を含んだ2つの半導体チップ130B_U、130B_LをTSV(Though Silicon Via)技術で(シリコン貫通ビア電極130B_Vによって)連想メモリ120Bに電気的に接続している。検索キー生成部14は連結サーチデータ生成部130Bまたは連想メモリ120Bに含まれてもよい。
連想メモリ120B上に、連結サーチデータ生成部130Bを配置すること実装面積を削減することができる。TSV技術に代えてPonP(Package on Package)技術を用いてもよい。TSV技術や、PonP技術を適用することで、連想メモリ120Bと、連結サーチデータ生成部130Bを低レーテンシーで接続できる上に、配線距離も短くできるため、信号を伝達するための電力も低減可能となる。
図26は第3の実装例に係る半導体装置を示す断面図である。半導体装置100Cは同一基板上に連想メモリ120Aと、連結サーチデータ生成部130Bを実装している。連想メモリ120Aは第1連想メモリ11と第2連想メモリ12とを含んだ半導体チップであり、バンプ電極PEC1で基板110Cに電気的に接続されるとともに固定され、レジンREC1等の樹脂材料によって半導体チップの回路形成面はバンプ電極PEC1と共に封止されている。連結サーチデータ生成部130Bは連結サーチデータ生成部13を含んだ2つの半導体チップ130B_U、130B_Lをシリコン貫通ビア電極130B_Vによってベースダイ200Cに電気的に接続している。ベースダイ200Cは半導体チップであり、バンプ電極PEC2で基板110Cに電気的に固定され、レジンREC2等での樹脂材料によってベースダイ200Cはバンプ電極PEC2と共に封止されている。検索キー生成部14は連結サーチデータ生成部130Bまたは連想メモリ120Aに含まれてもよい。
連結サーチデータ生成部130Bの部分の機能と連想メモリ120Aの機能の組み合わせをそれぞれの用途に合わせて選択できるため自由度が大きくすることが可能となる。
図27は第4の実装例に係る半導体装置を示す断面図および分解平面図である。図27の一番上は断面図、二番目は連結サーチデータ生成部の上面(矢印B)における平面図、三番目は連結サーチデータ生成部の下層の半導体チップの上面(矢印C)における平面図、一番下は連想メモリの上面(矢印D)における平面図である。半導体装置100Dは連想メモリ120D上に、2個の連結サーチデータ生成部130_1、130_2を実装している。連想メモリ120Dは第1連想メモリ11と第2連想メモリ12とを含んだ半導体チップであり、バンプ電極で基板110Dに固定され、レジン等で半導体チップの回路形成面はバンプ電極と共に封止されている。連結サーチデータ生成部130_1は連結サーチデータ生成部13を含んだ2つの半導体チップ130_1U、130_1Lをシリコン貫通ビア電極130_1Vで連想メモリ120Dに接続している。連結サーチデータ生成部130_2は連結サーチデータ生成部13を含んだ2つの半導体チップ13_2U、130_2Lをシリコン貫通ビア電極130_2Vで連想メモリ120Dに接続している。検索キー生成部14は連結サーチデータ生成部130_1、130_2または連想メモリ120Dに含まれてもよい。
図25の第2の実装例では、連想メモリのメモリ容量が大きくなってくると、チップサイズ大きくなるため、全連想メモリに対応できる連結サーチデータ生成部をのせることができない場合がでる可能性がある。そのため、連想メモリのメモリアレイ上に複数配置することで、連想メモリのパッケージサイズの増加を押さえつつ改善することができるようになる。例えば、TCAMのアレイ構成に合わせて最適な配置が可能となるため低レーテンシーと、低消費が実現可能になる。
第1〜第4の実装例における基板としては、パッケージ内で使用する基板やシステムボードの基板であってもよい。
<変形例>
実施例の変形例について説明する。
連結サーチデータ生成部へのデータ格納方法を有効に利用することで、さらに連想メモリ部分を効率的に使用することが可能となる。例えば、ネットワークの機器では、IPアドレスや、ポート(Port)番号などは、TCAMを連想メモリとして使用する場合には、1つのルールで多くのエントリに展開する必要があるが、ルール内で重複する部分をフラグ情報として共有化することができるため、メモリ使用量を減らすことを提案する。比較例の方法では、それぞれの組み合わせの積で増加してしまっていたが、フラグ方式では、実質的にフラグの和ですむようになるため大幅なメモリの節約が実現できる。
まず、変形例におけるACLテーブルのレンジ表現について図28を用いて説明する。図28はACLテーブルのレンジ表現とドント・ケアの関係を示す図である。
[2-9]をルールとして記述する場合は、No.1〜3の3つ([2-3][4-7][8-9])のレンジ表現を使用して表現することが可能である。[10-15]をルールとして記述する場合は、No.4とNo.5の2つ([10-11][12-15])のレンジ表現を使用して表現することが可能である。
次に、ACLテーブルを比較例の連想メモリに格納する一例について図29A、29Bを用いて説明する。図29AはACLテーブルの例を示す図である。図29Bは図29AのACLテーブルを比較例の連想メモリへ格納する例を示す図である。
図29Aに示すように、ACLテーブルとして3つのルールを記載している。図29Bに示すように、ルール#1では、送信元ポート番号(Src. Port)の[2-9]の部分で[2-3][4-7][8-9]の3種類の表現、宛先ポート番号(Dst. Port)の[10-15]部分で[10-11][12-15]の2種類の表現を必要とするため、これらの組み合わせをルールとして表現する際には、3×2、すなわち6エントリ分を使用して表現することが行われる。
同様に、図29Bに示すように、ルール#2では、送信元ポート番号(Src. Port)の[4-9]の部分で[4-7][8-9]の2種類の表現、宛先ポート番号(Dst. Port)の[12-17]部分で[12-15][16-17]の2種類の表現を必要とするため、これらの組み合わせをルールとして表現する際には、2×2、すなわち4エントリが必要となる。
一方で、図29Bに示すように、ルール#3では、送信元ポート番号(Src. Port)も宛先ポート番号(Dst. Port)も、各1種類の表現で実現できるため、組み合わせとしては、1×1で、結局のところ1でよいことになる。
したがって、3ルールを比較例の連想メモリに格納するのに、合計で11エントリ分のメモリ消費をする。例えば、送信元ポート番号(Src. Port)が16ビット、宛先ポート番号(Dst. Port)が16ビット、プロトコル(Protocol)が8ビット、送信元IPアドレス(Src. Add)が32ビット、宛先IPアドレス(Dst. Add)が32ビットであると、1エントリ当たり104ビット必要であり、11エントリ×104ビット=1,144ビットのメモリを消費する。
今回の例では、ルール#3のような組み合わせでルールの表現が膨れ上がらないものには効果はでないため比較例の表現方法を使用してもよいが、今回の表現方法でも実現可能であることを示すため、例としてあげた。
次に、変形例に係る連想メモリへのデータ格納方法について図30〜32を用いて説明する。図30は変形例に係る第1連想メモリ部へのデータ格納方法説明するための図である。図30の上段は図29Aと同じACLテーブルである。図30の下段は第1連想メモリである。変形例では、連想メモリとしてTCAMを使用する例を説明する。
変形例では、レンジ表現として同じものを、違うルールにおいても共通に使用することでメモリ消費を抑えることを行う。
そのために、まず、送信元ポート番号(Src. Port)部を連想メモリに格納する方法を説明する。ルール#1では、送信元ポート番号(Src. Port)の[2-9]を記載している。そのため、図28に示すように、[2-9]は、[2-3]と[4-7]と[8-9]の3つで表現できる。次に、ルール#2では、[4-9]を使用しているので、[4-7]と[8-9]の2つで表現できる。次に、ルール#3では、[4-7]を使用しているため、[4-7]の1つで表現できる。これらをまとめると、[2-3]、[4-7]、[8-9]の3種類で、3ルールの送信元ポート番号(Src. Port)部分に関しては表現可能となっていることが分かる。したがって、図30に示すように、第1連想メモリ11Lの左の列のような形でデータを格納する。
次に、宛先ポート番号(Dst. Port)の部分の説明をする。同様に、ルール#1の部分では、[10-15]を使用しているので、図28に示すように、[1-15]は、[10-11]と[12-15]の2つの種類で表現できる。次に、ルール#2では、[12-17]を使用しているので、[12-15]と[16-17]の2つで表現できる。最後にルール#3では、[0-15]を使用しているので、[0-15]の1つで表現できる。これらを、送信元ポート番号(Src. Port)のときと同様に、重複部分を除いてみると、[10-11]、[12-15]、[16-17]、[0-15]の4種類で表現される。したがって、図30に示すように、第1連想メモリ11Aの右の列のような形でデータを格納する。このときに、送信元ポート番号(Src. Port)のレンジ表現でデータを格納した部分の右側(宛先ポート番号(Dst. Port)部分に相当する箇所)に“*”を埋めているが、この部分を、“*”(ドント・ケア)にすることで、この後説明する連結サーチデータ生成部13L、第2の連想メモリ12Lへの検索データの連結を実現することができる。
ドント・ケアを利用することで、連結サーチデータ生成部13Lや第2連想メモリ12Lでは、フラグ方式でルールをテーブルに格納することができるためルールの重複分のメモリ消費量を抑えることができることになる。同様に、宛先ポート番号(Dst. Port)へデータ格納をしている部分で、送信元ポート番号(Src. Port)に相当する部分は“*”(ドント・ケア)にしている。
よって、第1連想メモリ11Lでは、合計で7エントリ×16ビット(送信元ポート番号(Src. Port)、宛先ポート番号(Dst. Port)をそれぞれ、IPv4、IPv6で一般的な16ビットと仮定した場合)で表現できることになる。
レンジ表現されたルールを、格納するために複数のエントリを使用してデータを格納するが、別ルールでも使うことができるレンジ表現を共有化する
次に、連結サーチデータ生成部でのフラグの管理方法、引き継ぎデータについて説明する。図31は変形例に係る連結サーチデータ生成部に対する事前プログラムを説明するための図である。図31の上段は図29Aと同じACLテーブルである。図31の下段左側は第1連想メモリ11Lである。図31の下段右側は連結サーチデータ生成部13Lである。
連結サーチデータ生成部13Lには、サーチ結果の引き継ぎを行うために予め、ルール情報(各ルール対応する場所に“1”)を検索を実行する前にプログラムしておく。連結サーチデータ生成部13Lは、第1連想メモリ11Lのぞれぞれのエントリに対応してメモリをアサインしておく。
まず、ルール番号が0(Rule#0)に対するデータ格納方法について説明する。連結サーチデータ生成部13Aの、送信元ポート番号(Src.Port)のブロックの左端にルール#0(Rule#0)のデータを格納する。第1連想メモリ11Lでは、それぞれのレンジ表現を重複しないように格納したためルール情報がなくなっている。そのためそれを表現しておく必要がある。前述したように、第1連想メモリ11Lと連結サーチデータ生成部13Lはエントリ単位で対応付けをさせておいて、各ルールに必要なレンジ表現をフラグ形式で使用する。ルール#0では、送信元ポート番号(Src. Port)の表現で、[2-3]、[4-7]、[8-9]の3つを使用するため、連結サーチデータ生成部13Aの#0と、#1と、#2とに“1”をプログラムする。#3−6は、宛先ポート番号(Dst. Port)に相当する部分であるので、“0”をプログラムする。同様に、ルール#2(Rule#2)、ルール#3(Rule#3)に相当する部分も、使用しているレンジ表現部分に“1”を立てる。
宛先ポート番号(Dst. Port)に関しては、本例では、第1連想メモリ11Lの#3−6を使用して表現したので、連結サーチデータ生成部13Aの、#3−6に送信元ポート番号(Src. Port)で行ったように各ルールで使用しているレンジ表現をフラグ形式で選択し、送信元ポート番号(Src. Port)で行った手順と同様にルール(Rule)毎に使用しているレンジ表現部分に“1”を立てる。宛先ポート番号(Dst. Port)のデータ領域で、#0−2には、対応する送信元ポート番号(Src. Port)に関するフラグは立てないで“0”としておく。送信元ポート番号(Src. Port)に3ビット、宛先ポート番号(Dst. Port)に3ビット使用される。
次に、第2連想メモリ12Lへのデータの格納方法について述べる。図32は変形例に係る第2連想メモリへのデータ格納方法を説明するための図である。図32の上段は図29Aと同じACLテーブルである。図32の下段は第2連想メモリである。この例では、連想メモリの一部(本例では6ビット分)をサーチ結果の連結を行うためのフラグとして使用している。
第2連想メモリ12Lの送信元ポート番号(Src. Port)と記載した箇所に各ルール(Rule)に相当するエントリに“1”を立てる。このとき、自己のルールと異なる箇所に関しては、“*”で埋める。この例では、送信元ポート番号(Src. Port)の[2-9]の列は、#0に“1”、#1と#2には“*”が埋められている。[4-9]の列は、#1に“1”を、#0と#2には“*”を埋める。[4-7]の列には、#0と#1には、“*”を、#2に“1”を埋める。同様に宛先ポート番号(Dst. Port)の部分でも、[10-15]の列には、#0に“1”、その他は、“*”、[12-17]の列は、#1に“1”、#0と#2は“*”を埋める。[0-15]の列は、#2に“1”、#0と#1には“*”を埋める。送信元ポート番号(Src. Port)に3ビット、宛先ポート番号(Dst. Port)に3ビット使用される。残り、プロトコル(Protocol)、送信元IPアドレス(Src. Add)、宛先IPアドレス(Dst. Add)は、そのままルール(Rule)のデータをコピーしてよい。この“*”を使用することで、第1連想メモリ11Lで複数のルールでヒットが起きているサーチ結果を引き継いでも第2連想メモリ12Lにて正しい結果を得ることができる。
次に、変形例に係る検索機構について図33A〜33Dを用いて説明する。図33Aは変形例に係る検索機構の概要を説明するための図である。図33Bは図33Aの検索データ、第1検索キー、第1検索情報および第2検索キーを示す図である。図33Cは図33Aの第1連想メモリおよび連結サーチデータ生成部を示す図である。図33Dは図33Aの第2連想メモリおよびアクションメモリを示す図である。
変形例に係るネットワーク装置は検索装置1Lとネットワーク制御装置(NCU)2Lとを備える。検索装置1Lは連想メモリ部10Lとアクションメモリ部20Lとを備える。連想メモリ部10Lは第1連想メモリ11Lと第2連想メモリ12Lと連結サーチデータ生成部13Lと検索キー生成部14Lとを備える。ネットワーク制御装置2LはNPU(ネットワークプロセッサ)やASIC等で構成される。実施例では、連想メモリとしてTCAMを使用する例を説明する。第1連想メモリのエントリ数は7、第2連想メモリのエントリ数は第1連想メモリのエントリ数よりも少ない3、ルール数は3の例について説明する。
ここで、検索装置1Lの主な動作の流れについて説明をする。
(1)ネットワーク制御装置2Lは、図33Bに示すような検索対象となるデータ(検索データ)を検索装置1Lの連想メモリ部10L内の検索キー生成部14Lに送る。最初に検索キー生成部14Lは送られてきた検索データから図33Bに示すような第1検索キー(1st Search Key)を生成する。
(2)第1段目の検索では、第1連想メモリ11Lは、検索キー生成部14Lで生成した第1検索キー(1st Search Key)を用いて、第1連想メモリ11L内のデータを検索する。この時、検索キーデータである第1検索キー(1st Search Key)に対して複数のデータが一致する場合は、一致する全てのマルチヒット情報(複数のデータでキーとの一致がある状態)を連結サーチデータ生成部13Lに伝達する。図33Cに示すように、第1連想メモリ11Lのエントリ#2、#3、#6では第1検索キーに対して一致し、マルチヒットが発生する。
(3)次に、第1連想メモリ11Lにて検索された結果は、連結サーチデータ生成部13Lで分類、論理圧縮をした後、第2検索キー(2nd Search Key)を生成するため、図33Bに示すような第1検索(1st search)情報として検索キー生成部14Lに出力される。図33Cに示すように、ヒット(Hit)が発生したエントリ(Index)のマルチヒット情報が連結サーチデータ生成部13Lに送られて、検索情報の引継ぎが行われる。連結サーチデータ生成部13Lはエントリに対応するデータ(ルール番号(Rule #))が格納され、ルール数のデータに圧縮する。より具体的には、連結サーチデータ生成部13Lに送られたデータは、事前に“1”にプログラムされた部分と、第1連想メモリ11Lでヒット(Hit)したエントリ#とANDした結果をマージし、第2連想メモリ12Lに引き継ぎを行う検索結果情報(サーチ結果フラグ)を生成する。この例では、連結サーチデータ生成部13Lにて、連結サーチデータとして、「6’b110101」のサーチ結果フラグを生成し、検索キー生成部14Lに送る。
(4)次に、検索キー生成部14Lは、連結サーチデータ生成部13Lから供給された第1連想メモリ11Lでの検索結果情報(1st search情報)と、最初に入ってきた検索データを使用して、図33Bに示すような第2段目の検索に使用する第2検索キー(2nd Search Key)を生成する。より具体的には、第2検索キー(2nd Search Key)は、検索キー生成部14Lで、ネットワーク制御装置2から送られてきたオリジナルの検索データの内、第1検索キー(1st Search Key)で使用しなかった残りキーと、サーチ結果フラグを合成した形で生成する。こうすることで、予め、第2連想メモリ12Lの部分にプログラムしておいたサーチ結果を連結させるためのフラグ部分を使用して検索動作を成立させることができる。検索キー生成部14Lは、サーチ結果フラグを、{Protocol, Src. Add, Dst. Add}={P1, S2, D1}と合成し、{6’b110101, P1, S2, D1}の形で第2検索キー(2nd Search Key)を生成する。
(5)第2連想メモリ12Lは、検索キー生成部14Lで作られた第2検索キー(2nd Search Key)を使用して、第2連想メモリ12L内のデータに、第2検索キー(2nd Search Key)が含まれているかどうかの検索を行う。図33Dに示すように、第2連想メモリ12Lのエントリ#0でヒットが発生する。
(6)複数のデータで一致がある場合は、本例では、第2連想メモリ12Lのメモリ部121Lに、プライオリティエンコーダ(PE)122Lを接続している構成をとっているので、一致アドレスの中で最も優先度の高いアドレスのみを、最終の検索結果(ヒットインデックス)として、アクションメモリ部20Lに検索結果を送る。
(7)アクションメモリ部20Lでは、検索結果をもとに、検索装置1に入力されてきたデータ(例えば、IPアドレスや、ポート番号等)に対して、どのような処置を行うのかをあらかじめプログラムしておき、最終検索結果のアドレスに対応した、アクションメモリ部20Lのデータの読み出し動作をした結果を、ネットワーク制御装置2に送信して一連の検索動作が完了する。図33Dではエントリ#0のdenyがアクション(Action)として出力される。
次に、比較例と変形例のメモリ消費量の比較をした結果について説明する。図29Aに示すACLテーブルに対して、比較例では、図29Bに示すように、
11エントリ×104ビット=1,144ビット
使用することが必要である。それに対して、変形例では、図30、31、32に示すように、
第1連想メモリ11Lで、7エントリ×16ビット×2=224ビット
連結サーチデータ生成部13Lで、7エントリ×6ビット=42ビット
第2連想メモリ12Aで、3エントリ×(6ビット+72ビット)=234ビット、
合計して、504ビットで実現ができる。したがって、504ビット/1,144ビット=44.1%、すなわち、変形例は比較例に比べて、約56%メモリ使用量が節約できる。
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
実施例および変形例ではプライオリティエンコーダを用いて最終的な検索結果を1つにして、アクションメモリ部内のデータを読み出すためのアドレス情報を生成する例を説明したが、第2段目のサーチ結果をそのままマルチマッチとして出力可能とする形態の方がアプリケーションとして適している場合(セキュリティ用途等)はプライオリティエンコーダを設けなくてもよい。
実施例および変形例では、連想メモリにTCAMを使用する例を説明したが、BCAMを使用してもよい。BCAMを使った場合は、3(Ternary)値は扱えないという制限はあるがロングキー検索は可能である。また、メモリ使用量の節約効果、消費電力の削減効果は実施例と同様に有効である。
実施例および変形例では、説明を簡単にするために、検索装置を1つだけの例で示したが、検索装置を複数個同時動作させることによって、並列処理を容易に実現することができ、処理能力を大きく改善することも可能となる。また、アクションメモリ部は、検索装置内に記載しているが、市販のDDRメモリをボード上に配置する等して、検索装置外のメモリとしてもよい。
1・・・検索装置
2・・・ネットワーク制御装置
10・・・連想メモリ部
11・・・第1連想メモリ
12・・・第2連想メモリ
13・・・連結サーチデータ生成部
14・・・検索キー生成部
20・・・アクションメモリ部

Claims (20)

  1. 検索装置は、
    第1検索キーによって検索される第1連想メモリと、
    第2検索キーによって検索される第2連想メモリと、
    前記第1連想メモリのマルチヒットを含むヒット情報に基づいて第1検索情報を生成する第1連結サーチデータ生成部と、
    検索データに基づいて前記第1検索キーを生成する第1検索キー生成部と、前記第1検索情報および前記検索データに基づいて前記第2検索キーを生成する第2検索キー生成部と、を有する検索キー生成部と、
    を備える。
  2. 請求項1の検索装置において、
    前記第1検索キーは前記検索データの一部で構成され、前記第2検索キーは前記第1検索情報と前記検索データから前記一部を除いたものとで構成される。
  3. 請求項1の検索装置において、
    前記第1連想メモリはM個のエントリを有し、
    前記第2連想メモリはL個のエントリを有し、
    前記第1連結サーチデータ生成部は前記第1連想メモリの複数のヒット情報を予め設定されるルール数のデータに圧縮して前記第1検索情報を生成し、
    前記ルール数はN個である。
  4. 請求項3の検索装置において、
    前記第1連結サーチデータ生成部は、
    前記第1連想メモリのエントリに対応するルール情報を格納するメモリと、
    前記メモリから読み出される前記第1連想メモリのヒットしたエントリのルール情報から前記Nビット長の前記第1検索情報を生成する圧縮回路と、
    を備える。
  5. 請求項4の検索装置において、
    前記メモリはエントリごとに前記Nビット長のルール情報を格納し、
    前記圧縮回路は前記メモリの出力データをビットごとにオアまたはノアまたはワイヤード・オアまたはワイヤード・ノアする回路を備える。
  6. 請求項4の検索装置において、
    前記メモリはエントリごとに前記Nビット長のルール情報を格納し、
    前記圧縮回路はCPUを備え、前記メモリの出力データに基づいて前記第1検索情報を生成する。
  7. 請求項1の検索装置において、
    前記第2連想メモリはプライオリティエンコーダを備え、マルチヒットする場合は予め決められた優先度に応じて1つのヒット情報を出力する。
  8. 請求項7の検索装置において、さらに、
    前記第2連想メモリの出力によるアクセスによって次動作情報を出力するアクションメモリを備える。
  9. 請求項1の検索装置において、
    前記第1連想メモリおよび前記第2連想メモリはTCAMで構成される。
  10. 請求項1の検索装置において、さらに、
    第3検索キーによって検索される第3連想メモリと、
    前記第3連想メモリのマルチヒットを含むヒット情報に基づいて第2検索情報を生成する第2連結サーチデータ生成部と、
    を備え、
    前記検索キー生成部は、さらに、前記第2検索情報および前記検索データに基づいて前記第3検索キーとして生成する第3検索キー生成部を有する。
  11. 請求項1の検索装置において、さらに、
    前記第2検索キーによって検索される第4連想メモリと、
    サーチイネーブル信号生成部と、
    ヒットインデックスの属するテーブルの連結情報を前記サーチイネーブル信号生成部に伝達するテーブルデータ管理部と、
    を備え、
    前記サーチイネーブル信号生成部は、前記連結情報に基づいて、前記第2連想メモリおよび前記第3連想メモリの少なくとも1つを活性化する信号を生成する。
  12. 請求項11の検索装置において、さらに、
    前記第2連想メモリの出力と前記第4連想メモリの出力との優先度を定めるプライオリティエンコーダを備える。
  13. 請求項1の検索装置において、さらに、
    前記第1検索キーによって検索される第5連想メモリを備え、
    前記第1連結サーチデータ生成部は、前記第1連想メモリのマルチヒットを含むヒット情報および前記第5連想メモリのマルチヒットを含むヒット情報に基づいて第1検索情報を生成する。
  14. 請求項3の検索装置において、
    前記Lは前記Mよりも小さい値であり、
    前記Nは前記Mよりも小さい値である。
  15. 半導体装置は、
    TCAMで構成され、第1検索キーによって検索される第1連想メモリと第2検索キーによって検索される第2連想メモリとを有する連想メモリ部と、
    前記第1連想メモリのマルチヒットを含むヒット情報に基づいて第1検索情報を生成する連結サーチデータ生成部と、
    検索データに基づいて前記第1検索を生成する第1検索キー生成部と、前記第1検索情報および前記検索データに基づいて前記第2検索キーを生成する第2検索キー生成部と、を有する検索キー生成部と、
    を備え、
    前記連想メモリ部は1つの半導体チップで形成され、
    前記連結サーチデータ生成部は前記連想メモリ部とは異なる半導体チップで形成される。
  16. 請求項15の半導体装置において、
    前記検索キー生成部は前記連想メモリ部の半導体チップまたは前記連結サーチデータ生成部の半導体チップに形成される。
  17. 請求項16の半導体装置において、さらに、
    前記連想メモリ部が実装される基板と、前記連想メモリが実装される面とは反対側の面にバンプ電極と、を備える。
  18. 請求項17の半導体装置において、
    前記連結サーチデータ生成部は前記基板に実装される。
  19. 請求項18の半導体装置において、
    前記連結サーチデータ生成部は複数の半導体チップをTSVで積層して形成される。
  20. 請求項17の半導体装置において、
    前記連結サーチデータ生成部は複数の半導体チップをTSVで積層して形成され、前記連結サーチデータ生成部の半導体チップと前記連想メモリ部の半導体チップはTSVで積層される。
JP2016139220A 2016-07-14 2016-07-14 検索装置および半導体装置 Pending JP2018010505A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2016139220A JP2018010505A (ja) 2016-07-14 2016-07-14 検索装置および半導体装置
US15/590,081 US10191839B2 (en) 2016-07-14 2017-05-09 Search device includes associative memory, search data generating unit for generating search information based on hit information and a search key generating unit generating search keys based on search information and the search data
CN201710575752.4A CN107622077B (zh) 2016-07-14 2017-07-14 检索装置和半导体装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016139220A JP2018010505A (ja) 2016-07-14 2016-07-14 検索装置および半導体装置

Publications (1)

Publication Number Publication Date
JP2018010505A true JP2018010505A (ja) 2018-01-18

Family

ID=60941075

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016139220A Pending JP2018010505A (ja) 2016-07-14 2016-07-14 検索装置および半導体装置

Country Status (3)

Country Link
US (1) US10191839B2 (ja)
JP (1) JP2018010505A (ja)
CN (1) CN107622077B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019008845A (ja) * 2017-06-22 2019-01-17 ルネサスエレクトロニクス株式会社 半導体装置
US10504595B1 (en) 2019-02-28 2019-12-10 Palo Alto Networks, Inc. Amortizing dissipated power and current demand in a ternary content addressable memory
US11232038B2 (en) 2019-06-05 2022-01-25 Samsung Electronics Co., Ltd. Ternary content addressable memory and operating method thereof
US11120874B2 (en) * 2019-11-01 2021-09-14 City University Of Hong Kong Electronic memory device and a method of manipulating the electronic memory device
US11175338B2 (en) * 2019-12-31 2021-11-16 Alibaba Group Holding Limited System and method for compacting test data in many-core processors

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658458B1 (en) 2000-06-22 2003-12-02 Cisco Technology, Inc. Cascading associative memory arrangement
CN100421106C (zh) * 2002-08-10 2008-09-24 思科技术公司 具有增强能力的关联存储器
US7103708B2 (en) * 2002-08-10 2006-09-05 Cisco Technology, Inc. Performing lookup operations using associative memories optionally including modifying a search key in generating a lookup word and possibly forcing a no-hit indication in response to matching a particular entry
JP4120000B2 (ja) * 2002-10-28 2008-07-16 株式会社アイピースクエア 情報処理装置及び情報処理方法
JP2004164060A (ja) * 2002-11-11 2004-06-10 Matsushita Electric Ind Co Ltd 検索処理システム及び検索処理方法
US7024515B1 (en) 2002-11-15 2006-04-04 Cisco Technology, Inc. Methods and apparatus for performing continue actions using an associative memory which might be particularly useful for implementing access control list and quality of service features
JP2006135660A (ja) * 2004-11-05 2006-05-25 Alaxala Networks Corp 連想メモリ及びパケット転送装置
JP4146479B2 (ja) * 2006-09-28 2008-09-10 株式会社東芝 構造化文書検索装置、構造化文書検索方法および構造化文書検索プログラム
US9189647B2 (en) * 2012-04-24 2015-11-17 Nec Corporation Encrypted database system, linking method, and medium
US9594702B2 (en) * 2014-07-08 2017-03-14 Netronome Systems, Inc. Multi-processor with efficient search key processing

Also Published As

Publication number Publication date
US10191839B2 (en) 2019-01-29
CN107622077B (zh) 2023-12-05
US20180018257A1 (en) 2018-01-18
CN107622077A (zh) 2018-01-23

Similar Documents

Publication Publication Date Title
CN107622077B (zh) 检索装置和半导体装置
US6389579B1 (en) Reconfigurable logic for table lookup
US7380053B2 (en) Method and system for emulating content-addressable memory primitives
Ullah et al. Z-TCAM: an SRAM-based architecture for TCAM
US6845024B1 (en) Result compare circuit and method for content addressable memory (CAM) device
US10091137B2 (en) Apparatus and method for scalable and flexible wildcard matching in a network switch
JPS60136097A (ja) 連想メモリ装置
US20030093616A1 (en) Low power, hash-content addressable memory architecture
US7516271B2 (en) Obtaining search results based on match signals and search width
WO2013071183A1 (en) Content addressable memory in integrated circuit
US7848128B2 (en) Apparatus and method for implementing matrix-based search capability in content addressable memory devices
US20180024841A1 (en) Adaptive routing to avoid non-repairable memory and logic defects on automata processor
US20140114995A1 (en) Scalable high speed relational processor for databases and networks
US11720492B1 (en) Algorithmic TCAM with compressed key encoding
JP2000353388A (ja) 内容参照可能メモリの改良
CN105830160B (zh) 用于将经屏蔽数据写入到缓冲器的设备及方法
US8874837B2 (en) Embedded memory and dedicated processor structure within an integrated circuit
JP2015225675A (ja) 連想メモリおよび半導体装置
US10593420B2 (en) Testing content addressable memory and random access memory
Le et al. Scalable high-throughput sram-based architecture for ip-lookup using FPGA
US7136960B2 (en) Hardware hashing of an input of a content addressable memory (CAM) to emulate a wider CAM
US20090043956A1 (en) Mapping an input data value to a resultant data value
JP4004847B2 (ja) 連想メモリ装置
JPH11102589A (ja) 連想メモリモジュール
US6189083B1 (en) Method and apparatus for accessing a cache memory utilization distingushing bit RAMs