JP2009284384A - 検索回路 - Google Patents

検索回路 Download PDF

Info

Publication number
JP2009284384A
JP2009284384A JP2008136307A JP2008136307A JP2009284384A JP 2009284384 A JP2009284384 A JP 2009284384A JP 2008136307 A JP2008136307 A JP 2008136307A JP 2008136307 A JP2008136307 A JP 2008136307A JP 2009284384 A JP2009284384 A JP 2009284384A
Authority
JP
Japan
Prior art keywords
read
address
search
memory
key value
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
JP2008136307A
Other languages
English (en)
Other versions
JP4992824B2 (ja
Inventor
Yoshinori Okuda
佳則 奥田
Daisuke Hirata
大介 平田
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2008136307A priority Critical patent/JP4992824B2/ja
Publication of JP2009284384A publication Critical patent/JP2009284384A/ja
Application granted granted Critical
Publication of JP4992824B2 publication Critical patent/JP4992824B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】二分岐検索を行うに際し、回路規模をあまり増やさず、かつ検索サイクル数に影響を与えない検索回路を提供する。
【解決手段】キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索回路であって、前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する手段と、前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える手段と、前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える手段と、前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する手段とを備える。
【選択図】図11

Description

本発明は、Ethernet(登録商標)網等の可変長パケットを扱うネットワークに配置されるパケット処理装置等において、パケットの転送先アドレス等を検索するために用いられる検索回路に関する。
Ethernet(登録商標)網のパケット転送において、受信したパケットの転送先MAC(Media Access Control)アドレス等を検索する場合、従来のパケット処理装置では、ボード上に配置されたCAM(Contents Addressable Memory)用のIC(Integrated
Circuit)チップの機能により検索処理を行うことで対応している。図1(a)はCAMのICチップがボード上に配置された状態を示している。
しかし、ボード実装上の問題により部品点数削減の必要がある場合、CAMによる検索処理部の機能をFPGA(Field Programmable Gate Array)等による開発チップ内部に取り込み、CAMのICチップを削減することが必要になる場合がある。図1(b)はCAMのICチップの機能を開発チップに取り込み、CAMのICチップを削減した状態を示している。
CAMによる検索処理部の機能を開発チップ内部に取り込むことで、検索処理部の基本設計から開発を行う必要があるとともに、高密度化されたFPGAにおいて十分な処理性能を維持するために考慮しなければならない点は多い。
チップ内部での検索処理において、入力されるパケットのヘッダ情報から、検索アルゴリズム等を用いて高速に出力ヘッダを求める方法がある。しかし、パケットデータは可変長であるため、その検索に多くの時間(サイクル)を必要とすると、短いパケットデータが連続で到着した場合など、検索処理中に次パケットが到着して前パケットを上書きしてしまう可能性がある。図2(a)はパケットが適度な間隔をもって到着するために、ヘッダ情報に基づいて出力ヘッダを求めるための処理が問題なく行われている状態を示している。これに対し、図2(b)では、短いパケットが連続して到着したことにより、処理の重複が生じ、処理が破綻してしまった状態を示している。
このような状況にならないための救済方法として、一般的に、パケットデータをバッファ等に溜めておき、必要なときに読み出して処理を行うという方法がある。しかし、同様に短パケットが延々と続いた場合には、バッファ内にパケットデータが溜まり続ける恐れがあり、バッファが溢れて処理が破綻しかねない。これに対しては、バッファの増加や読み出し側のクロック速度の向上で幾分救済可能となるが、実現性を考えるとバッファの増加・クロック速度の向上ともに、次第に物理設計の負担につながっていく。
これらを考慮すると、次のパケットデータが入力されるまでに、いかに早く検索処理を終了するかが重要となってくる。
特開平11−282852号公報
検索処理をチップ内部で高速に行うためのアルゴリズムとして、一般的に『二分岐検索』がよく用いられる(特許文献1等を参照。)。通常の『二分岐検索』の場合、RAM(Random Access Memory)等のメモリに記憶されたデータ群を中央のアドレスから読み出し、入力キー値(入力ヘッダ情報)と読み出したデータのキー部分との一致比較を行い、一致すればそこで処理を終了し、不一致であれば大小比較を行い、その結果に応じて次のメモリアドレスを生成し、比較データを再度メモリから読み出す。以降、入力キー値と一致するまでこれを繰り返す。一致したら、そのキー値に対するリザルト値をメモリデータから抽出し、最終的に求める値とする。
二分岐検索の簡単な例を図3に示す。RAMには、図の様なキー値(Key)とリザルト値(Result)が格納されているものとし、二分岐検索を使用する条件としてキー値は昇順で格納されているものとする。ここでは、例として、入力キー値「1000」に対するリザルト値を求める場合について示している。
先ず、検索1回目はアドレス「0」〜「7」の中央のアドレス「4」からデータを読み出し、キー値を比較する。ここでは入力キー値「1000」に対して読み出したキー値は「500」となり、1000>500となるため、比較結果は「大」となる。
検索2回目はアドレス「0」〜「3」の中央のアドレス「2」もしくはアドレス「5」〜「7」の中央のアドレス「6」にアクセスするが、前回(検索1回目)の比較結果が「大」であるため、アドレス「5」〜「7」の中央のアドレス「6」の方を選択してデータを読み出し、キー値を比較する。ここでは入力キー値「1000」に対して読み出したキー値は「2000」となり、1000<2000となるため、比較結果は「小」となる。
検索3回目は残りのアドレス「5」もしくはアドレス「7」にアクセスするが、前回(検索2回目)の比較結果が「小」であるため、アドレス「5」の方を選択してデータを読み出し、キー値を比較する。ここでは入力キー値「1000」に対して読み出したキー値は「1000」となり、1000=1000で比較結果が一致するため、検索は終了となり、キー値「1000」に対するリザルト値「YYYZ」を抽出する。
図4は二分岐検索を実行する検索回路の構成例を示す図である。図4において、検索回路1は、候補となる2つのアドレスを出力するレジスタ101、102と、このレジスタ101、102の出力を選択してRAM104に与えるセレクタ103と、セレクタ103の出力を一端に入力し、出力をレジスタ101に入力する減算器105と、セレクタ103の出力を一端に入力し、出力をレジスタ102に入力する加算器106と、減算器105および加算器106の他の入力に出力を与えるレジスタ107と、このレジスタ107の出力を2で割ってレジスタ107に入力する割算器108とを有している。また、検索回路1は、入力キー値とRAM104の読み出しデータとの一致および大小を比較し、その出力をセレクタ103の選択信号として与える比較器109と、比較器109の出力が一致を示す場合にRAM104の読み出しデータからリザルト値を抽出するリザルト抽出部110と、検索回数kを保持する検索回数カウンタ111とを有している。
動作に際し、検索1回目はレジスタ101、102、107には固定の初期値を与えることとする。検索1回目はこの初期値でRAM104からデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109で行う。ここで比較結果が一致すれば検索は終了し、不一致(「大」もしくは「小」)であれば検索2回目に移る。
検索2回目は、レジスタ101の方は「前回RAMアドレス−(レジスタ107の初期値/2)」、レジスタ102の方は「前回RAMアドレス+(レジスタ107の初期値/2)」となる。どちらを選択するかは前回の比較器109の大小比較結果により、「小」であればレジスタ101の方を、「大」であればレジスタ102の方をセレクタ103で選択し、そのアドレスによりRAM104からデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109で行う。比較結果が一致すれば検索は終了し、不一致であれば検索3回目に移る。
検索3回目は、レジスタ101の方は「前回RAMアドレス−(前回のレジスタ107の出力値/2)」、レジスタ102の方は「前回RAMアドレス+(前回のレジスタ107の出力値/2)」となり、前回の大小比較結果が「小」であればレジスタ101の方を、「大」であればレジスタ102の方をセレクタ103で選択し、そのアドレスによりRAM104からデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109で行う。
以降、比較結果が一致するまでこれらを繰り返し、一致したキー値に対するリザルト値をリザルト抽出部110にて抽出する。なお、検索回数カウンタ111で管理される検索回数kは、アドレスの上限値で決まる所定の値を超えることで、検索エラーを検出するために用いられる。
図5は二分岐検索のフローチャート(アドレス=0〜1023の場合)である。図5において、処理を開始すると、先ず検索回数kの初期値を「1」とする(ステップS1)。次いで、レジスタ101の出力を内部アドレス1、レジスタ102の出力を内部アドレス2として、検索1回目の内部アドレス1、2は「512」の固定値とし(ステップS2)、「512」をRAMアドレスとしてRAM104からデータ(D512)を読み出し(ステップS3)、読み出したデータ中のキー値と入力キー値との大小・一致比較を行う(ステップS4)。一致の場合はそこで検索完了とし(ステップS14)、不一致の場合はRAMデータ「D512」に対する「大」もしくは「小」の判定を行い(ステップS4)、次の検索処理に移る。
次の検索処理に移る際、検索回数kをカウントアップし(ステップS5、S9)、検索回数kが「11」になったか否か判断し(ステップS6、S10)、k=11となった時点で検索エラー(Miss Hit)として検索処理を中止する(ステップS15)。RAMアドレスが「0」〜「1023」の場合、正常な処理では検索回数kが10回を超えることはないためである。
検索2回目の内部アドレス1は「前回(検索1回目)RAMアドレス−512÷2k−1」、内部アドレス2は「前回RAMアドレス+512÷2k−1」となり(ステップS7、S11)、前回の比較結果が「小」であれば内部アドレス1をRAMアドレスとしてRAM104からデータを読み出し(ステップS8)、「大」であれば内部アドレス2をRAMアドレスとしてRAM104からデータを読み出し(ステップS12)、読み出したデータ中のキー値と入力キー値との大小・一致比較を行う(ステップS13)。一致の場合はそこで検索完了とし(ステップS14)、不一致の場合は次の検索処理(ステップS5、S9の手前)に移る。以降、比較結果が一致するまでこれらの処理を繰り返す。
次に、より具体的な例として、RAMアドレスが「0」〜「1023」で、入力キー値「D511」を検索する場合のタイムチャートを図6に示す。
先ず、「0」〜「1023」の中央のアドレス「512」を初期値として、アドレス「512」に対するデータ「D512」をRAM104から読み出し、入力キー値「D511」との大小・一致比較を行う。二分岐検索を使用する場合、比較するデータ(RAMデータ)は昇順が原則であるため、入力キー値「D511」とRAM104から読み出した「D512」との比較結果は「小」となり、次の検索処理に移る。
次にRAM104にアクセスするアドレスは、「0」〜「511」もしくは「513」〜「1023」の中央のアドレスとなるが、前回の比較結果が「小」であるため、「0」〜「511」の方の中央のアドレス「256」にアクセスする。大小・一致比較結果は、入力キー値「D511」とRAM104から読み出した「D256」との比較なので「大」となり、次の検索処理に移る。
次にRAM104にアクセスするアドレスは、「0」〜「255」もしくは「257」〜「511」の中央のアドレスとなるが、前回の比較結果が「大」であるため、「257」〜「511」の方の中央のアドレス「384」にアクセスする。大小・一致比較結果は、入力キー値「D511」とRAM104から読み出した「D384」との比較なので「大」となり、次の検索処理に移る。
以降、比較結果が一致するまでこれを繰り返し、入力キー値「D511」を検索する場合は、検索開始から比較結果が一致するまで10サイクルとなる。
図4に示した検索回路1は上述したように動作するものであるが、クロック(CLK)が高速になって来ると、RAMデータ読み出しでの遅延や大小・一致比較の演算回路による遅延などにより、セットアップ(SetUp)マージン不足が懸念され、その安定化のために途中にレジスタを1段設ける必要性が出てくる。
図7は二分岐検索で比較回路通過後にレジスタを設けた場合の構成例を示す図であり、比較器109の後段にレジスタ112を設けるとともに、レジスタ107の後段にサイクル幅拡張部113を設けた点が図4と異なる。この構成によれば、比較器109の後段にレジスタ112を設けることでセットアップマージン不足は解消方向に向かうが、今度は検索サイクル数が増大し、検索処理に時間がかかってしまうという問題が新たに発生する。
具体的な例として、レジスタ112を設ける前と同様、RAMアドレスが「0」〜「1023」で、入力キー値「D511」を検索する場合のタイムチャートを図8に示す。
先ず、「0」〜「1023」の中央のアドレス「512」を初期値として、アドレス「512」に対するデータ「D512」をRAM104から読み出し、入力キー値「D511」との大小・一致比較を行う。ここまでは同じだが、比較器109の後段にレジスタ112を設けているため、比較結果が出るまでに2サイクルかかる。つまり、比較器109の後段にレジスタ112を1段設けた場合は、検索1回につき2サイクルかかってしまうため、検索開始から比較結果が一致するまで10サイクルの倍の20サイクルかかってしまうことになる。
そこで、検索サイクル数を削減するためにRAM104を2分割した場合の構成を図9に示す。すなわち、RAM104をRAM104A(RAM1)とRAM104B(RAM2)とに分割し、それぞれにアドレスを生成する回路部とキー値を比較する回路部とを設けている。
また、この構成でRAMアドレスが「0」〜「1023」で、入力キー値「D511」を検索する場合のタイムチャートを図10に示す。なお、RAM104Aの方はアドレス「0」〜「511」に対して「D0−Key,Result」〜「D511−Key,Result」のデータが、RAM104Bの方はアドレス「0」〜「511」に対して「D512−Key,Result」〜「D1023−Key,Result」のデータが格納されていることとする。
先ず、「0」〜「511」の中央のアドレス「256」を初期値として、アドレス「256」に対するデータをRAM104Aからは「D256」、RAM104Bからは「D768」をそれぞれ読み出し、入力キー値「D511」との大小・一致比較を行う。比較結果は、RAM104Aの方は入力キー値「D511」>「D256」なので「大」、RAM104Bの方は入力キー値「D511」<「D768」なので「小」となる。
検索2回目は、RAM104Aの方はアドレス「128」(レジスタ101A)もしくは「384」(レジスタ102A)にアクセスするが、前回の比較結果が「大」なので、アドレス「384」に対するデータ「D384」を読み出す。RAM104Bの方もアドレス「128」(レジスタ101B)もしくは「384」(レジスタ102B)にアクセスするが、前回の比較結果が「小」なので、アドレス「128」に対するデータ「D640」を読み出す。入力キー値「D511」との大小・一致比較結果は、RAM104Aの方は入力キー値「D511」>「D384」なので「大」、RAM104Bの方は入力キー値「D511」<「D640」なので「小」となる。
以降、比較結果が一致するまでこれを繰り返す。比較結果が一致するのは、RAM104A側のアドレス「511」に対するデータ「D511」を読み出した時となり、リザルト抽出部110にて「D511」に対するリザルト値を抽出する。
検索サイクル数については、タイムチャートに示したとおり18サイクルとなり、20サイクルと比べると2サイクル削減されるが、図6に示した10サイクルからは程遠い。また、さらにRAM104を分割していけば検索サイクル数の削減が見込まれるが、RAMのアドレス数が増えるに従って、RAM周辺の大小一致比較演算回路やRAMアドレス生成回路、リザルト抽出部などの回路規模が増大してしまう。
上記の従来の問題点に鑑み、二分岐検索を行うに際し、セットアップマージン確保のために比較器の後段にレジスタを1段設けた場合でも、回路規模をあまり増やさず、かつ検索サイクル数に影響を与えない検索回路を提供することを目的とする。
この検索回路の一実施態様では、キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索回路であって、前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する手段と、前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える手段と、前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える手段と、前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する手段とを備える。
好ましくは、前記メモリは、前記第1もしくは第3の読み出しアドレスが与えられる第1のメモリと、前記第2もしくは第4の読み出しアドレスが与えられる第2のメモリとを含む。
好ましくは、前記メモリは、前記第1もしくは第3の読み出しアドレスならびに前記第2もしくは第4の読み出しアドレスが並行して与えられるデュアルポートメモリを含む。
好ましくは、前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを1組ずつ格納する。
好ましくは、前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを複数組ずつ格納する。
開示の検索回路にあっては、二分岐検索を行うに際し、セットアップマージン確保のために比較器の後段にレジスタを1段設けた場合でも、データの先読みを行うことにより、回路規模をあまり増やさず、かつ検索サイクル数に影響を与えないようにすることができる。
以下、本発明の好適な実施形態につき説明する。
図11は本発明の一実施形態にかかる検索回路100の第1の構成パターンを示す図である。図11において、検索回路100は、RAM104A(RAM1)およびRAM104B(RAM2)に対して候補となる4つのアドレスを出力するレジスタ101A、102A、101B、102Bと、レジスタ101A、101Bの出力を選択してRAM104Aに与えるセレクタ103Aと、レジスタ102A、102Bの出力を選択してRAM104Bに与えるセレクタ103Bとを備えている。RAM104A、104Bには、キー値とリザルト値とを対応付けた同じデータを格納しておく。
また、セレクタ103Aの出力を一端に入力し、出力をレジスタ101Aに入力する減算器105Aと、セレクタ103Aの出力を一端に入力し、出力をレジスタ102Aに入力する加算器106Aと、セレクタ103Bの出力を一端に入力し、出力をレジスタ101Bに入力する減算器105Bと、セレクタ103Bの出力を一端に入力し、出力をレジスタ102Bに入力する加算器106Bと、減算器105A、105Bおよび加算器106A、106Bの他の入力に出力を与えるレジスタ107と、このレジスタ107の出力を2で割ってレジスタ107に入力する割算器108とを備えている。
更に、検索回路100は、入力キー値とRAM104Aの読み出しデータとの一致および大小を比較する比較器109Aと、その後段で比較結果を保持するレジスタ112Aと、入力キー値とRAM104Bの読み出しデータとの一致および大小を比較する比較器109Bと、その後段で比較結果を保持するレジスタ112Bと、レジスタ112A、112Bの出力を選択し、セレクタ103A、103Bに選択信号を与えるセレクタ114と、セレクタ114の出力を入力してセレクタ114に選択信号を与えるレジスタ115と、セレクタ114の出力が一致を示す場合にRAM104A、104Bの読み出しデータからリザルト値を抽出するリザルト抽出部110と、検索回数kを保持する検索回数カウンタ111とを有している。
動作にあたり、先ず、レジスタ101A、102A、101B、102Bにより、RAMアドレスを生成する。検索1回目は、このレジスタ101A、102A、101B、102Bに初期値を与え、RAM104A、104Bからデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109A、109Bで行う。初期値を与える際は、レジスタ107にも与えることとする。最終的な比較結果として、セレクタ114にて、初回のみRAM104B側の比較結果(レジスタ112B)を選択し、一致であれば検索処理は終了し、不一致(「大」or「小」)であれば次の処理に移る。
検索2回目もレジスタ101A、102A、101B、102Bに初期値を与えることとし、RAM104A、104Bからデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109A、109Bで行う。最終的な比較結果は、前回の比較結果が「小」であればRAM104A側の比較結果(レジスタ112A)、「大」であればRAM104B側の比較結果(レジスタ112B)を選択する。
検索3回目は、レジスタ101Aは「前回RAM1アドレス−(レジスタ107初期値/2)」、レジスタ102Aは「前回RAM1アドレス+(レジスタ107初期値/2)」、レジスタ101Bは「前回RAM2アドレス−(レジスタ107初期値/2)」、レジスタ102Bは「前回RAM2アドレス+(レジスタ107初期値/2)」となり、どちらを選択するかは、前々回の比較結果が「小」であればレジスタ101A、102Aを選択し、「大」であればレジスタ101B、102Bを選択する。次に、選択されたアドレスにより、RAM104A、104Bからデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109A、109Bで行う。最終的な比較結果は、前回の比較結果が「小」であればRAM104A側の比較結果(レジスタ112A)、「大」であればRAM104B側の比較結果(レジスタ112B)を選択する。
検索4回目以降は、レジスタ101Aは「前回RAM1アドレス−(前回レジスタ107値/2)」、レジスタ102Aは「前回RAM1アドレス+(前回レジスタ107値/2)」、レジスタ101Bは「前回RAM2アドレス−(前回レジスタ107値/2)」、レジスタ102Bは「前回RAM2アドレス+(前回レジスタ107値/2)」となり、どちらを選択するかは、前々回の比較結果が「小」であればレジスタ101A、102Aを選択し、「大」であればレジスタ101B、102Bを選択する。次に、選択されたアドレスにより、RAM104A、104Bからデータを読み出し、読み出したデータ中のキー値と入力キー値との大小・一致比較を比較器109A、109Bで行う。最終的な比較結果は、前回の比較結果が「小」であればRAM104A側の比較結果(レジスタ112A)、「大」であればRAM104B側の比較結果(レジスタ112B)を選択する。比較結果が一致すれば、一致したキー値に対するリザルト値をリザルト抽出部110にて抽出する。
図12は本発明の一実施形態にかかる検索回路100の第2の構成パターンを示す図であり、比較器109Aとセレクタ114の間にあったレジスタ112Aと、比較器109Bとセレクタ114の間にあったレジスタ112Bとを除去し、レジスタ115からセレクタ103A、103BにRAMアドレスの選択信号を与えるようにして、同じ機能を実現するようにしたものである。セットアップマージン不足に関しても、レジスタ115があるため緩和される。
図13は本発明の一実施形態にかかる検索回路100の第3の構成パターンを示す図であり、図11におけるRAM104A、104Bをデュアルポート(Dual−Port)のRAM104で構成するようにしたものである。もともとRAM104A、104Bは同じデータが格納されるものであるため、デュアルポートのRAM104とすることでRAM104AもしくはRAM104Bの1個分のデータ量で済む利点がある。
図14は本発明の一実施形態にかかる検索回路100の第4の構成パターンを示す図であり、図12におけるRAM104A、104BをデュアルポートのRAM104で構成するようにしたものである。
次に、図11〜図14の実施形態において、RAMアドレスを「0」〜「1023」とした場合のフローチャートを図15Aおよび図15Bに示す。
図15Aおよび図15Bにおいて、処理を開始すると、先ず検索回数kの初期値を「1」とする(ステップS101)。次いで、レジスタ101Aの出力を内部アドレス1、レジスタ102Aの出力を内部アドレス2、レジスタ101Bの出力を内部アドレス3、レジスタ102Bの出力を内部アドレス4として、検索1回目の内部アドレス1、3は「0」、内部アドレス2、4は「512」(RAMアドレス「0」〜「1023」の中央のアドレス)のそれぞれ固定値とし(ステップS102)、これらをRAMアドレスとしてRAM104A、104B(RAM104のポートA、B)からそれぞれデータを読み出し(ステップS103)、読み出したデータ中のキー値と入力キー値との大小・一致比較を行う(ステップS104)。一致の場合はそこで検索完了とし(ステップS134)、不一致の場合はRAMデータ「D512」に対する「大」もしくは「小」の判定を行い(ステップS105)、次の検索処理に移る。次の検索処理に移る際、検索回数kをカウントアップする(ステップS106、S120)。
検索2回目の内部アドレス1、3は「256」、内部アドレス2、4は「768」のそれぞれ固定値とし(ステップS107、S121)、これらをRAMアドレスとしてRAM104A、104B(RAM104のポートA、B)からそれぞれデータを読み出し(ステップS108、S122)、読み出したデータ中のキー値と入力キー値との大小・一致比較を行う(ステップS109、S123)。一致の場合はそこで検索完了とし(ステップS134)、不一致の場合は、前回(検索1回目)の比較結果が「小」であればRAMデータ「D256」に対する「大」もしくは「小」の判定結果を最終的な比較結果とし、前回の比較結果が「大」であればRAMデータ「D768」に対する「大」もしくは「小」の判定結果を最終的な比較結果として次の検索処理に移る。
次の検索処理に移る際、検索回数kをカウントアップし(ステップS110、S115、S124、S129)、検索回数kが「11」になったか否か判断し(ステップS111、S116、S125、S130)、k=11となった時点で検索エラー(Miss Hit)として検索処理を中止する(ステップS135)。RAMアドレスが「0」〜「1023」の場合、正常な処理では検索回数kが10回を超えることはないためである。
検索3回目の内部アドレス1は「前回(検索2回目)RAM1アドレス−512÷2k−1」、内部アドレス2は「前回RAM1アドレス+512÷2k−1」、内部アドレス3は「前回RAM2アドレス−512÷2k−1」、内部アドレス4は「前回RAM2アドレス+512÷2k−1」となり(ステップS112、S117、S126、S131)、前々回(検索1回目)の比較結果が「小」であれば内部アドレス1と内部アドレス2をRAMアドレスとしてRAM104A、104B(RAM104のポートA、B)からデータを読み出し(ステップS113、S118)、「大」であれば内部アドレス3と内部アドレス4をRAMアドレスとしてRAM104A、104B(RAM104のポートA、B)からデータを読み出し(ステップS127、S132)、読み出したデータ中のキー値と入力キー値との大小・一致比較を行う(ステップS114、S119、S128、S133)。一致の場合はそこで検索完了とし(ステップS134)、不一致の場合は、前回(検索2回目)の比較結果が「小」であればRAM104A側のRAMデータに対する「大」もしくは「小」の判定結果を最終的な比較結果とし、前回の比較結果が「大」であればRAM104B側のRAMデータに対する「大」もしくは「小」の判定結果を最終的な比較結果として、次の検索処理(P1、P2、P3、P4)に移る。以降、比較結果が一致するまでこれらを繰り返す。
次に、より具体的な例として、RAMアドレスが「0」〜「1023」で、入力キー値「D511」を検索する場合のタイムチャートを図16に示す。
先ず、アドレス「0」と、「0」〜「1023」の中央のアドレス「512」を初期値として、アドレス「0」に対するデータ「D0」をRAM1から、アドレス「512」に対するデータ「D512」をRAM2から読み出し、入力キー値「D511」との大小・一致比較を行う。この場合、RAM1の方の比較結果(V5)はD511>D0なので「大」となり、RAM2の方の比較結果(V6)はD511<D512なので「小」となる。最終的な比較結果としては、一致した場合を除き、初回のみRAM2側を選択することとするため「小」となり、次の検索処理に移る。
検索2回目にRAMにアクセスするアドレスは、「0」〜「511」の中央のアドレス「256」と、「513」〜「1023」の中央のアドレス「768」として、アドレス「256」に対するデータ「D256」をRAM1から、アドレス「768」に対するデータ「D768」をRAM2から読み出し、入力キー値「D511」との大小・一致比較を行う。この場合、RAM1の方の比較結果はD511>D256なので「大」となり、RAM2の方の比較結果はD511<D768なので「小」となる。最終的な比較結果は、前回の比較結果が「小」なのでRAM1側が選択されるため、「大」となり、次の検索処理に移る。
検索3回目にRAMにアクセスするアドレスは、前回アドレス「256」、「768」に対して「±128」した「128」と「384」もしくは「640」と「896」とするが、前々回(検索1回目)の比較結果が「小」なので「128」と「384」が選択されるため、アドレス「128」に対するデータ「D128」をRAM1から、アドレス「384」に対するデータ「D384」をRAM2から読み出し、入力キー値「D511」との大小・一致比較を行う。この場合、RAM1の方の比較結果はD511>D128なので「大」となり、RAM2の方の比較結果もD511>D384なので「大」となる。最終的な比較結果は、前回の比較結果が「大」なのでRAM2側が選択されるため、「大」となり、次の検索処理に移る。
検索4回目にRAMにアクセスするアドレスは、前回アドレス「128」、「384」に対して「±64」した「64」と「192」もしくは「320」と「448」とするが、前々回(検索2回目)の比較結果が「大」なので「320」と「448」が選択されるため、アドレス「320」に対するデータ「D320」をRAM1から、アドレス「448」に対するデータをRAM2から読み出し、入力キー値「D511」との大小・一致比較を行う。この場合、RAM1の方の比較結果はD511>D320なので「大」となり、RAM2の方の比較結果もD511>D448なので「大」となる。最終的な比較結果は、前回の比較結果が「大」なのでRAM2側が選択されるため、「大」となり、次の検索処理に移る。
以降、比較結果が一致するまでこれらを繰り返し、入力キー値「D511」を検索する場合は、検索開始から比較結果が一致するまで11サイクルとなる。
更に検索を高速化する手法として、RAMに格納するデータを、1アドレス毎にキー値とリザルト値を複数組にすることができる。格納するデータを1アドレス毎に2組にした場合のタイムチャートを図17に示す。比較し易い様、RAMアドレスが「0」〜「1023」で、入力キー値「D511」を検索する場合について示した。RAMは1アドレス毎に2データ分のキー値とリザルト値を格納することとし、同じデータを格納したRAM1、RAM2の2個のRAMを持つ。この場合、「D0」〜「D1023」を格納するのに必要なアドレスは、「0」〜「1023」の半分の「0」〜「511」となる。なお、デュアルポートのRAMを1個としてもよい。
検索処理においては、検索1回目のアドレスを「0」と「256」、検索2回目のアドレスを「128」と「384」にする以外は図16と同様であり、入力キー値「D511」を検索する場合は、検索開始から比較結果が一致するまで10サイクルとなる。
以上の結果から、RAMに格納するデータを1アドレス毎に4組にした場合は、更に1サイクル少ない9サイクルとなることが予想される。同様の考えで、1アドレス毎に8データ分や16データ分を格納した場合は更なる検索の高速化が見込まれるが、今度は大小・一致比較の演算回路の論理が深くなってしまい、再びセットアップマージン確保が困難となってしまうため、クロック速度などに応じて、1〜4データ分ぐらいまでを格納するのが理想的であると考える。
以上の結果を踏まえ、従来技術(レジスタ1段有り/無し)と実施形態(1データ分構成/2データ分構成/4データ分構成)の検索サイクル数の比較を図18に示す。(a)はRAMアドレスが「0」〜「1023」の場合、(b)はRAMアドレスが「0」〜「2047」の場合、(c)はRAMアドレスが「0」〜「4095」の場合をそれぞれ示している。
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
(付記1)
キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索回路であって、
前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する手段と、
前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える手段と、
前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える手段と、
前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、
前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、
前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する手段と
を備えたことを特徴とする検索回路。
(付記2)
前記メモリは、前記第1もしくは第3の読み出しアドレスが与えられる第1のメモリと、前記第2もしくは第4の読み出しアドレスが与えられる第2のメモリとを含む
ことを特徴とする付記1に記載の検索回路。
(付記3)
前記メモリは、前記第1もしくは第3の読み出しアドレスならびに前記第2もしくは第4の読み出しアドレスが並行して与えられるデュアルポートメモリを含む
ことを特徴とする付記1に記載の検索回路。
(付記4)
前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを1組ずつ格納する
ことを特徴とする付記1乃至3のいずれか一項に記載の検索回路。
(付記5)
前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを複数組ずつ格納する
ことを特徴とする付記1乃至3のいずれか一項に記載の検索回路。
(付記6)
前記メモリからの読み出しデータと前記入力キー値との比較の後に、セットアップマージン確保のためのレジスタおよびセレクタを順次に介し、当該セレクタの出力で前記読み出しアドレスの選択を制御する
ことを特徴とする付記1乃至5のいずれか一項に記載の検索回路。
(付記7)
前記メモリからの読み出しデータと前記入力キー値との比較の後に、セレクタおよびレジスタを順次に介し、当該レジスタの出力で前記読み出しアドレスの選択を制御する
ことを特徴とする付記1乃至5のいずれか一項に記載の検索回路。
(付記8)
キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索方法であって、
前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する工程と、
前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える工程と、
前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える工程と、
前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する工程と、
前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する工程と、
前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する工程と
を備えたことを特徴とする検索方法。
(付記9)
前記メモリは、前記第1もしくは第3の読み出しアドレスが与えられる第1のメモリと、前記第2もしくは第4の読み出しアドレスが与えられる第2のメモリとを含む
ことを特徴とする付記8に記載の検索方法。
(付記10)
前記メモリは、前記第1もしくは第3の読み出しアドレスならびに前記第2もしくは第4の読み出しアドレスが並行して与えられるデュアルポートメモリを含む
ことを特徴とする付記8に記載の検索方法。
(付記11)
前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを1組ずつ格納する
ことを特徴とする付記8乃至10のいずれか一項に記載の検索方法。
(付記12)
前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを複数組ずつ格納する
ことを特徴とする付記8乃至10のいずれか一項に記載の検索方法。
(付記13)
前記メモリからの読み出しデータと前記入力キー値との比較の後に、セットアップマージン確保のためのレジスタおよびセレクタを順次に介し、当該セレクタの出力で前記読み出しアドレスの選択を制御する
ことを特徴とする付記8乃至12のいずれか一項に記載の検索方法。
(付記14)
前記メモリからの読み出しデータと前記入力キー値との比較の後に、セレクタおよびレジスタを順次に介し、当該レジスタの出力で前記読み出しアドレスの選択を制御する
ことを特徴とする付記8乃至12のいずれか一項に記載の検索方法。
CAM等の機能を開発チップ内に持たせる場合の概要を示す図である。 検索処理中に次のパケットが到着して前パケットを上書きしてしまう場合の動作例を示す図である。 二分岐検索の例を示す図である。 二分岐検索を実行する検索回路の構成例を示す図である。 二分岐検索のフローチャートである。 二分岐検索のタイムチャートである。 二分岐検索で比較回路通過後にレジスタを設けた場合の構成例を示す図である。 二分岐検索で比較回路通過後にレジスタを設けた場合のタイムチャートである。 メモリを2分割した場合の構成例を示す図である。 メモリを2分割した場合のタイムチャートである。 本発明の一実施形態にかかる検索回路の第1の構成パターンを示す図である。 本発明の一実施形態にかかる検索回路の第2の構成パターンを示す図である。 本発明の一実施形態にかかる検索回路の第3の構成パターンを示す図である。 本発明の一実施形態にかかる検索回路の第4の構成パターンを示す図である。 実施形態の動作例を示すフローチャート(その1)である。 実施形態の動作例を示すフローチャート(その2)である。 実施形態の動作例を示すタイムチャートである。 メモリに格納するキー値およびリザルト値のデータを2組とした場合の動作例を示すタイムチャートである。 各条件における検索サイクル数を示す図である。
符号の説明
100 検索回路
101A、101B、102A、102B レジスタ
103A、103B セレクタ
104、104A、104B RAM
105A、105B 減算器
106A、106B 加算器
107 レジスタ
108 割算器
109A、109B 比較器
110 リザルト抽出部
111 検索回数カウンタ
112A、112B レジスタ
114 セレクタ
115 レジスタ

Claims (6)

  1. キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索回路であって、
    前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する手段と、
    前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える手段と、
    前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える手段と、
    前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、
    前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する手段と、
    前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する手段と
    を備えたことを特徴とする検索回路。
  2. 前記メモリは、前記第1もしくは第3の読み出しアドレスが与えられる第1のメモリと、前記第2もしくは第4の読み出しアドレスが与えられる第2のメモリとを含む
    ことを特徴とする請求項1に記載の検索回路。
  3. 前記メモリは、前記第1もしくは第3の読み出しアドレスならびに前記第2もしくは第4の読み出しアドレスが並行して与えられるデュアルポートメモリを含む
    ことを特徴とする請求項1に記載の検索回路。
  4. 前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを1組ずつ格納する
    ことを特徴とする請求項1乃至3のいずれか一項に記載の検索回路。
  5. 前記メモリは、1つのアドレスに前記キー値と前記リザルト値とを複数組ずつ格納する
    ことを特徴とする請求項1乃至3のいずれか一項に記載の検索回路。
  6. キー値とリザルト値とを対応付けて複数記憶したメモリに対し、入力キー値と一致する前記キー値を二分岐検索により特定し、対応する前記リザルト値を出力する検索方法であって、
    前記メモリに対する次に読むべき候補となる第1〜第4の読み出しアドレスを先に生成する工程と、
    前記第1もしくは第3の読み出しアドレスの一方を選択して前記メモリに与える工程と、
    前記第2もしくは第4の読み出しアドレスの一方を選択して前記メモリに与える工程と、
    前記第1もしくは第3の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する工程と、
    前記第2もしくは第4の読み出しアドレスによる前記メモリからの読み出しデータと前記入力キー値とを比較する工程と、
    前記入力キー値との比較結果に応じ、前記読み出しアドレスの選択を制御する工程と
    を備えたことを特徴とする検索方法。
JP2008136307A 2008-05-26 2008-05-26 検索回路 Expired - Fee Related JP4992824B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008136307A JP4992824B2 (ja) 2008-05-26 2008-05-26 検索回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008136307A JP4992824B2 (ja) 2008-05-26 2008-05-26 検索回路

Publications (2)

Publication Number Publication Date
JP2009284384A true JP2009284384A (ja) 2009-12-03
JP4992824B2 JP4992824B2 (ja) 2012-08-08

Family

ID=41454333

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008136307A Expired - Fee Related JP4992824B2 (ja) 2008-05-26 2008-05-26 検索回路

Country Status (1)

Country Link
JP (1) JP4992824B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011074550A1 (ja) 2009-12-15 2011-06-23 三菱化学株式会社 有機電界発光素子の製造方法、有機電界発光素子、表示装置及び照明装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056600A (ja) * 2002-07-22 2004-02-19 Toyo Commun Equip Co Ltd 高速検索を用いたatmヘッダ変換方法及び回路
JP2007233554A (ja) * 2006-02-28 2007-09-13 National Institute Of Advanced Industrial & Technology 高速パターンマッチング装置の探索方法
WO2008004283A1 (fr) * 2006-07-04 2008-01-10 Duaxes Corporation Procédé et dispositif de régulation de communications

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004056600A (ja) * 2002-07-22 2004-02-19 Toyo Commun Equip Co Ltd 高速検索を用いたatmヘッダ変換方法及び回路
JP2007233554A (ja) * 2006-02-28 2007-09-13 National Institute Of Advanced Industrial & Technology 高速パターンマッチング装置の探索方法
WO2008004283A1 (fr) * 2006-07-04 2008-01-10 Duaxes Corporation Procédé et dispositif de régulation de communications

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011074550A1 (ja) 2009-12-15 2011-06-23 三菱化学株式会社 有機電界発光素子の製造方法、有機電界発光素子、表示装置及び照明装置

Also Published As

Publication number Publication date
JP4992824B2 (ja) 2012-08-08

Similar Documents

Publication Publication Date Title
US8780926B2 (en) Updating prefix-compressed tries for IP route lookup
KR102314619B1 (ko) 소프트웨어-규정된 네트워크 엔진에서 패킷 수정 및 포워딩을 위해서 룩업들을 생성하고 결정들을 수행하기 위한 장치 및 방법
US20030093646A1 (en) RAM-based range content addressable memory
US6600744B1 (en) Method and apparatus for packet classification in a data communication system
JP4120888B2 (ja) データ検索装置及び方法
US7499941B2 (en) Pipeline regular expression matching
US7596553B2 (en) String matching using data bit masks
US8972450B2 (en) Multi-stage parallel multi-character string matching device
WO2003036902A2 (en) Method and apparatus for a packet classifier using a two-step hash matching process
EP3145134B1 (en) Lookup device and lookup configuration method
US8935270B1 (en) Content search system including multiple deterministic finite automaton engines having shared memory resources
JP2002313086A (ja) 情報検索装置
US8874837B2 (en) Embedded memory and dedicated processor structure within an integrated circuit
JP4992824B2 (ja) 検索回路
JP2004194321A (ja) トライを基礎としたipルックアップアルゴリズムのパイプライン型ハードウエア実現におけるルックアップレイテンシーを減少させるメカニズム
CN114946167B (zh) 一种报文解析方法和装置
Kuo et al. A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update
US20040190512A1 (en) Processing packet information using an array of processing elements
US6961337B2 (en) Interleaved processing system for processing frames within a network router
JP2004046988A (ja) 連想メモリ装置及びそれを用いた中継装置
US8117384B2 (en) Searching a content addressable memory with modifiable comparands
JP5139335B2 (ja) データ検索装置、データ検索方法およびデータ検索プログラム
US8443102B1 (en) Pipeline of a packet processor programmed to extract packet fields
KR100590884B1 (ko) 네트워크 프로세서의 패킷을 처리 방법 및 그 장치
JP3700574B2 (ja) 検索成功信号先読み式出力データ選択装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110217

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120123

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: 20120410

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120423

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150518

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4992824

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees