JPWO2004032435A1 - ビットストリングの照合方法および装置 - Google Patents
ビットストリングの照合方法および装置 Download PDFInfo
- Publication number
- JPWO2004032435A1 JPWO2004032435A1 JP2004541281A JP2004541281A JPWO2004032435A1 JP WO2004032435 A1 JPWO2004032435 A1 JP WO2004032435A1 JP 2004541281 A JP2004541281 A JP 2004541281A JP 2004541281 A JP2004541281 A JP 2004541281A JP WO2004032435 A1 JPWO2004032435 A1 JP WO2004032435A1
- Authority
- JP
- Japan
- Prior art keywords
- matching
- search
- collation
- entry
- pattern
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 360
- 230000008569 process Effects 0.000 claims description 201
- 238000012545 processing Methods 0.000 claims description 191
- 230000007704 transition Effects 0.000 claims description 88
- 238000007726 management method Methods 0.000 claims description 65
- 239000011159 matrix material Substances 0.000 claims description 41
- 230000002457 bidirectional effect Effects 0.000 claims description 37
- 238000012795 verification Methods 0.000 claims description 27
- 238000011156 evaluation Methods 0.000 claims description 12
- 238000013523 data management Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 87
- 230000006870 function Effects 0.000 description 60
- 238000012217 deletion Methods 0.000 description 49
- 230000037430 deletion Effects 0.000 description 49
- 230000006835 compression Effects 0.000 description 37
- 238000007906 compression Methods 0.000 description 37
- 230000004044 response Effects 0.000 description 23
- 230000007246 mechanism Effects 0.000 description 18
- 230000008859 change Effects 0.000 description 10
- 238000001914 filtration Methods 0.000 description 10
- 230000009471 action Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 9
- 230000014509 gene expression Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 238000012790 confirmation Methods 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 230000003252 repetitive effect Effects 0.000 description 5
- 238000011144 upstream manufacturing Methods 0.000 description 5
- WBMKMLWMIQUJDP-STHHAXOLSA-N (4R,4aS,7aR,12bS)-4a,9-dihydroxy-3-prop-2-ynyl-2,4,5,6,7a,13-hexahydro-1H-4,12-methanobenzofuro[3,2-e]isoquinolin-7-one hydrochloride Chemical compound Cl.Oc1ccc2C[C@H]3N(CC#C)CC[C@@]45[C@@H](Oc1c24)C(=O)CC[C@@]35O WBMKMLWMIQUJDP-STHHAXOLSA-N 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000007717 exclusion Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000003379 elimination reaction Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 108090000248 Deleted entry Proteins 0.000 description 2
- 241000712062 Patricia Species 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 2
- 238000007418 data mining Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 101100464779 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CNA1 gene Proteins 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 244000309464 bull Species 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011143 downstream manufacturing Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/60—Router architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Mobile Radio Communication Systems (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本発明のビットストリングの照合方法においては,検索対象のビットストリングを複数の部分対象ビットストリングに分けて,登録されたビットパターンと多段階で照合する.多段階の一つの照合段階である現段階では,部分対象ビットストリングを取り得る全ての値と照合し,前記照合の結果と,部分登録ビットパターンが登録されたパターンテーブルとにより,少なくとも部分対象ビットストリングに一致する部分登録ビットパターンの有無を示す判定結果を得て,前記判定結果により,現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する.
Description
本発明は、IPアドレスなどのビットストリングを検索あるいは照合に適した装置および方法に関するものである。
インターネットなどのコンピュータネットワークを介してデータを送受信する際には種々のプロトコルが用いられる。その1つは、インターネットのネットワーク層におけるプロトコルであり、インターネットプロトコル(IP)と呼ばれている。このIPは、情報をパケット化して所定の目的地まで移動させるが、そのために、情報を格納したペイロードにIPヘッダをつけたパケットを、情報の送受信のために用いる。各々のパケットは、IPヘッダの情報に基づいて、所定のルートに配送され、受信先では、IPヘッダの情報に基づいてペイロードの情報が送信元の状態となるように組み立てられる。
IPヘッダの情報は、ルータおよびファイアウォールなどのネットワークを管理する装置あるいはソフトウェア(プログラムあるいはプログラム製品)で参照され、ルーティング、パケットフィルタリング、SPD(セキュリティ・ポリシーデータベース)、ポリシールーティング、QoSなどの様々な目的のために照合される。このように、IPヘッダの情報は、パケットの送受信あるいは転送については常に参照され、利用される。
今後、モバイルIPが実現されると、ルーティングテーブルは動的に変動する可能性がある。また、現状のIPv4(バージョン4)では、受信先アドレス(SIP)および送信元アドレス(DIP)は32ビットであるのに対し、IPv6(バージョン6)では128ビットに拡張される。したがって、IPアドレスの検索における処理速度をさらに向上させることが、インターネットなどのコンピュータネットワークを用いてデータ交換をする上で、今後、さらに重要な技術となる。
たとえば、特開平11−88427号公報には、ソートされた複数のエントリからなるルーティングテーブルに対して検索IPアドレスを大小比較しながら一致するIPアドレスを検索する技術が開示されている。この方法によりルーティングあるいはその他の目的のために128ビットのIPアドレスを複数含むビットストリングを検索しようとすると膨大な時間が必要になり、少なくとも、今後の情報伝達経路に用いるには適していない。
IPアドレスに限らず、検索対象となるビットストリング(ビットストリームあるいはビットパターン)の情報量は、今後、さらに増大する傾向にあり、光通信が本格化する場合は、G(ギガ)ビットクラスのビットストリングの検索機能が要求される。膨大なデータ量のビットストリングの検索方法は幾つか提案されている。
まず、ソフトウェア方式は、検索機能は十分だが、速度的には不十分である。ハードウェアを用いた方式では、CAM(Content−Addressable Memory)方式がある。1個のCAMを使った繰り返し検索により最長一致検索を行ったり、複数個のCAMを並列に使っての最長一致検索を行うことは現実的である。しかしながら、パケットフィルタリングやステートフルインスペクションに要求される多次元範囲、たとえば、ソースIP・デスティネーションIP・ソースポート・デスティネーションポート・プロトコルを含む範囲の一致検索を実現するのは非常に困難である。
また、最長一致検索の対象としてIPルーティングを考えた場合、CIDR(Classless Inter−Domain Routing)形式での可変プレフィックス長への対応は、繰り返し型の繰り返し回数を増やすか、多数個CAM並列型でおこなうことになるであろう。前者であればスループットやレイテンシ面での性能が不足することになる。後者であれば経路エントリの分布ばらつきにより、CAMエントリ利用率が悪くなるという問題点がある。
登録エントリ数の増加に対しては複数CAMチップのカスケード接続でしか対応できない。被検索キーのビット長の増加に対しては、チップ自体のスペック変更でしか対応できず、全エントリのCAMメモリビット増が必要である。多チップ構成で対応しようとすると、CAMは多数のエントリが並列に照合されるため、複数のチップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、CAMに求められる大量のエントリ数を考えると現実的ではない。
部分的にCAMを利用する方法もある。たとえば、CAMにより検索対象のエントリを絞り込み、その後、パトリシアツリー等をソフトウェアにより検索するという方式がある。この方式では、ツリー検索にソフトウェアを用いるため、完全ソフトウェア方式と同様の問題がある。また、ツリー検索部をハードウェア化した場合でも、例えばツリー構造がパトリシアであれば、エントリの登録および/または削除に複雑なツリー再構成が伴い、上位アプリケーションソフトウェアに過度なテーブル管理コストを強いることになる。
マスキングが可能で、階層型の検索を可能としたターナリーCAM(TCAM)方式がある。この場合、ハードウェアそのものが提供する検索機能は、完全一致(CAM)と最長一致である。TCAMは原理的にはエントリのDC(ドントケア)ビットをも一致と見なす完全一致であり、照合部からは複数の一致エントリが出力される。そのため、照合部の後段に、プレフィックス長あるいはエントリNo等による何らかのプライオリティエンコーダがないと、「複数ヒットから最長一致」の絞り込みをおこなえない。
従って、TCAMにおいてはエントリの登録および/または削除についての管理が煩雑となる。特に、エントリNoがプライオリティとなる方式のTCAMの場合、エントリの追加にともない、既存エントリの再配置を上位アプリケーションソフトウェア側が自発的に行わねばならない。この既存エントリの再配置はプレフィックス長をキーとしたソートであり、複数回のエントリ位置交換が要求される。プレフィックス長だけが問題なので通常のソートよりは低コストであるが、ソートそのものは排除できない。すなわち、TCAMで範囲一致は実現できるが、それはエントリ管理をおこなう上位アプリケーションソフトウェアによるものである。したがって、範囲表現を複数の最長一致表現へと分割し、最長一致へ還元して実現することになる。そのため、範囲一致のルール管理(削除・登録)が煩雑となる。つまり、TCAMにおける範囲一致は、静的なエントリからなる検索については実用性があったとしても、動的に変化するエントリからなる検索については、上位アプリケーションソフトウェアへの負荷がかなり高いといえる。あるいは、これら複雑なテーブル管理をおこなう専用のコプロセッサをTCAM自体とは別途用意することになる。
以上のことから、範囲一致は無論、最長一致であっても、登録エントリがダイナミックに追加削除されていく性質のある検索にはTCAMは向かないといえる。登録エントリ数の増加に対しては、複数のTCAMチップのカスケード接続でしか対応できないことはCAMと同様である。被検索キーのビット長の増加に対しても、チップ自体のスペック変更でしか対応できず、全エントリのTCAMメモリビットを増加する必要がある。多チップ構成で対応しようとすれば、TCAMは多エントリが並列に照合されるため、複数チップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、TCAMに求められる大量エントリ数を考えると現実的ではない。
そこで、本発明の目的の1つは、範囲一致を始め、完全一致および最長一致といった検索機能を提供可能であり、パケットフィルタリングやステートフルインスペクションにおいても、上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供するである。エントリの追加・削除にともなうエントリ移動により発生する、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できるビットストリングの照合方法および照合装置を提供することも本発明の目的の1つである。
さらに、メモリとして、SDRAM等の通常のDRAM(あるいはSRAM)を使用可能とし、十分な検索速度を提供しながら、CAM系の専用メモリよりもはるかに廉価で大容量を実現できる照合方法および装置を提供することも本発明の目的の1つである。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高い。また、メモリ管理が柔軟に行えるため、複数種の検索を単一のハードウェアセットで柔軟に行えるものになる。
また、検索対象となる被検索ビットストリング(キー)のビット長の増加に対しても、ハードウェア自体のアルゴリズム的な変更は不要で、ユニットを追加したり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の1つである。
IPヘッダの情報は、ルータおよびファイアウォールなどのネットワークを管理する装置あるいはソフトウェア(プログラムあるいはプログラム製品)で参照され、ルーティング、パケットフィルタリング、SPD(セキュリティ・ポリシーデータベース)、ポリシールーティング、QoSなどの様々な目的のために照合される。このように、IPヘッダの情報は、パケットの送受信あるいは転送については常に参照され、利用される。
今後、モバイルIPが実現されると、ルーティングテーブルは動的に変動する可能性がある。また、現状のIPv4(バージョン4)では、受信先アドレス(SIP)および送信元アドレス(DIP)は32ビットであるのに対し、IPv6(バージョン6)では128ビットに拡張される。したがって、IPアドレスの検索における処理速度をさらに向上させることが、インターネットなどのコンピュータネットワークを用いてデータ交換をする上で、今後、さらに重要な技術となる。
たとえば、特開平11−88427号公報には、ソートされた複数のエントリからなるルーティングテーブルに対して検索IPアドレスを大小比較しながら一致するIPアドレスを検索する技術が開示されている。この方法によりルーティングあるいはその他の目的のために128ビットのIPアドレスを複数含むビットストリングを検索しようとすると膨大な時間が必要になり、少なくとも、今後の情報伝達経路に用いるには適していない。
IPアドレスに限らず、検索対象となるビットストリング(ビットストリームあるいはビットパターン)の情報量は、今後、さらに増大する傾向にあり、光通信が本格化する場合は、G(ギガ)ビットクラスのビットストリングの検索機能が要求される。膨大なデータ量のビットストリングの検索方法は幾つか提案されている。
まず、ソフトウェア方式は、検索機能は十分だが、速度的には不十分である。ハードウェアを用いた方式では、CAM(Content−Addressable Memory)方式がある。1個のCAMを使った繰り返し検索により最長一致検索を行ったり、複数個のCAMを並列に使っての最長一致検索を行うことは現実的である。しかしながら、パケットフィルタリングやステートフルインスペクションに要求される多次元範囲、たとえば、ソースIP・デスティネーションIP・ソースポート・デスティネーションポート・プロトコルを含む範囲の一致検索を実現するのは非常に困難である。
また、最長一致検索の対象としてIPルーティングを考えた場合、CIDR(Classless Inter−Domain Routing)形式での可変プレフィックス長への対応は、繰り返し型の繰り返し回数を増やすか、多数個CAM並列型でおこなうことになるであろう。前者であればスループットやレイテンシ面での性能が不足することになる。後者であれば経路エントリの分布ばらつきにより、CAMエントリ利用率が悪くなるという問題点がある。
登録エントリ数の増加に対しては複数CAMチップのカスケード接続でしか対応できない。被検索キーのビット長の増加に対しては、チップ自体のスペック変更でしか対応できず、全エントリのCAMメモリビット増が必要である。多チップ構成で対応しようとすると、CAMは多数のエントリが並列に照合されるため、複数のチップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、CAMに求められる大量のエントリ数を考えると現実的ではない。
部分的にCAMを利用する方法もある。たとえば、CAMにより検索対象のエントリを絞り込み、その後、パトリシアツリー等をソフトウェアにより検索するという方式がある。この方式では、ツリー検索にソフトウェアを用いるため、完全ソフトウェア方式と同様の問題がある。また、ツリー検索部をハードウェア化した場合でも、例えばツリー構造がパトリシアであれば、エントリの登録および/または削除に複雑なツリー再構成が伴い、上位アプリケーションソフトウェアに過度なテーブル管理コストを強いることになる。
マスキングが可能で、階層型の検索を可能としたターナリーCAM(TCAM)方式がある。この場合、ハードウェアそのものが提供する検索機能は、完全一致(CAM)と最長一致である。TCAMは原理的にはエントリのDC(ドントケア)ビットをも一致と見なす完全一致であり、照合部からは複数の一致エントリが出力される。そのため、照合部の後段に、プレフィックス長あるいはエントリNo等による何らかのプライオリティエンコーダがないと、「複数ヒットから最長一致」の絞り込みをおこなえない。
従って、TCAMにおいてはエントリの登録および/または削除についての管理が煩雑となる。特に、エントリNoがプライオリティとなる方式のTCAMの場合、エントリの追加にともない、既存エントリの再配置を上位アプリケーションソフトウェア側が自発的に行わねばならない。この既存エントリの再配置はプレフィックス長をキーとしたソートであり、複数回のエントリ位置交換が要求される。プレフィックス長だけが問題なので通常のソートよりは低コストであるが、ソートそのものは排除できない。すなわち、TCAMで範囲一致は実現できるが、それはエントリ管理をおこなう上位アプリケーションソフトウェアによるものである。したがって、範囲表現を複数の最長一致表現へと分割し、最長一致へ還元して実現することになる。そのため、範囲一致のルール管理(削除・登録)が煩雑となる。つまり、TCAMにおける範囲一致は、静的なエントリからなる検索については実用性があったとしても、動的に変化するエントリからなる検索については、上位アプリケーションソフトウェアへの負荷がかなり高いといえる。あるいは、これら複雑なテーブル管理をおこなう専用のコプロセッサをTCAM自体とは別途用意することになる。
以上のことから、範囲一致は無論、最長一致であっても、登録エントリがダイナミックに追加削除されていく性質のある検索にはTCAMは向かないといえる。登録エントリ数の増加に対しては、複数のTCAMチップのカスケード接続でしか対応できないことはCAMと同様である。被検索キーのビット長の増加に対しても、チップ自体のスペック変更でしか対応できず、全エントリのTCAMメモリビットを増加する必要がある。多チップ構成で対応しようとすれば、TCAMは多エントリが並列に照合されるため、複数チップ間で連動した照合をおこなうには各エントリの照合状態をチップ間で継承しなければならない。したがって、TCAMに求められる大量エントリ数を考えると現実的ではない。
そこで、本発明の目的の1つは、範囲一致を始め、完全一致および最長一致といった検索機能を提供可能であり、パケットフィルタリングやステートフルインスペクションにおいても、上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供するである。エントリの追加・削除にともなうエントリ移動により発生する、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できるビットストリングの照合方法および照合装置を提供することも本発明の目的の1つである。
さらに、メモリとして、SDRAM等の通常のDRAM(あるいはSRAM)を使用可能とし、十分な検索速度を提供しながら、CAM系の専用メモリよりもはるかに廉価で大容量を実現できる照合方法および装置を提供することも本発明の目的の1つである。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高い。また、メモリ管理が柔軟に行えるため、複数種の検索を単一のハードウェアセットで柔軟に行えるものになる。
また、検索対象となる被検索ビットストリング(キー)のビット長の増加に対しても、ハードウェア自体のアルゴリズム的な変更は不要で、ユニットを追加したり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の1つである。
本発明のビットストリングの照合方法においては、検索対象のビットストリング(被検索ビットストリング)を複数ビットの部分対象ビットストリング(部分被検索対象ビットストリング)に分けて、予め登録された複数の登録ビットパターンと多段階で照合するプロセスを有する方法を採用する。多段階に含まれる1つの照合段階である現段階は、検索対象のビットストリングから、現段階の部分対象ビットストリングを選択し、その現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、現段階に先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程とを有する。この現段階のパターンテーブルは、現段階の部分対象ビットストリングに対して照合対象となる部分登録ビットパターンを示す。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段階の少なくとも1つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の1つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
また、本発明の照合方法および照合装置においては、多段階の照合の1つの段階(現段階)において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。その結果と、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン(以降ではエントリとも称する)を示す現段階のパターンテーブルとから完全一致または範囲一致を導く。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、1ビットで1エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテーブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理(全照合工程および手段)は、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては4から5ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング(以降ではキーとも称する)のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、特にマスクデータ、およびアドレステーブルを含み、メモリ上の記憶単位である照合テーブルのサイズとキャッシュラインのサイズが同一であることが好ましい。
さて、範囲一致検索においては、現段階では、一致する部分登録ビットパターンがあり、さらに、最大または最小の部分登録ビットパターンがあるときには、最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブル(範囲検索のパターンテーブル)のアドレスを候補アドレスとして記憶あるいは出力しておくことが望ましい。照合継続のときの現段階(候補アドレスを記憶した照合段階に対しては次の照合段階)において、一致する部分登録ビットパターンがなく、最大または最小の部分登録ビットパターンもないときには、最大または最小の部分登録ビットパターンが発生する段階まで遡るバックトラックが発生する。そのときに、候補アドレスが記憶されていれば、照合継続の現段階の出力工程において、先行する段階における候補アドレスを含む照合継続情報を出力することにより、バックトラックにより照合を継続する段階まで最短の処理時間で到達できる。
範囲一致検索において、最大または最小の部分登録ビットパターンに続く現段階のパターンテーブル(範囲検索のパターンテーブル)のアドレスを含む照合継続情報が与えられたときは、現段階のパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを辿ることにより、検索対象のビットストリングよりも値が小さくて最大の登録ビットパターン(最大の登録ビットパターン)、または、検索対象のビットストリングよりも値が大きくて最小の登録ビットパターン(最小の登録ビットパターン)に到達することができる。したがって、その状態、すなわち、範囲検索のパターンテーブルが得られた現段階では、全照合工程および判定工程をバイパスすることができる。そして、出力工程および出力手段により、範囲検索のパターンテーブルを現段階のパターンテーブルとし、それに対応するアドレステーブルから、そのパターンテーブルに示された最大または最小(パターンテーブルの中での最大または最小)の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する処理を繰り返せば良い。
このように段階毎のパターンテーブルの最大または最小を辿りながら最大または最小の登録ビットパターンにたどり着く処理は、エントリの登録、削除がない限りパターンテーブルが決まれば、たどり着く登録ビットパターンは同一になる。したがって、パターンテーブルと共に、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータをメモリに記憶しておくことが望ましい。最大または最小の部分登録ビットパターンに続く範囲検索のパターンテーブルのアドレスを含む照合継続情報が与えられたときは、全照合工程、パターンロード工程および判定工程をバイパスし、出力工程および出力手段において、範囲検索のパターンテーブルに対応するバイパスデータを含む最終照合情報を出力して検索対象のビットストリングの照合を終了することができる。したがって、中間の段階のパターンテーブルを辿る処理を省くことができる。
特に、上述したバックトラックが発生したときでも、その後の処理は候補アドレスに示されたパターンテーブルに対応するバイパスデータを出力するという処理で終了し、ほとんどバックトラックによるペナルティーは発生しない。
本発明の照合方法および照合装置は、さらに、検索対象となるビットストリングのビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、照合ユニット、すなわち、多段階の1あるいは複数段階を実行する照合装置を追加したり、上述した現段階の一連の工程を繰り返すことで対応できる。したがって、本発明において、複数の照合段階を直列および/または並列に行う分類過程を有する分類方法は、検索目的、検索対象のビットストリングの種類、および登録ビットパターンの種類などの条件に応じて極めてフレキシブルに設計できる。同様に、複数の照合装置を直列および/または並列に組み合わせた分類装置も目的に応じて極めてフレキシブルに設計できる。
これらの分類過程あるいは分類装置においては、複数の照合段階あるいは照合装置をパイプライン方式で接続することにより、検索時間の実質的な短縮を実現でき、この点でも、検索処理の高速化を図ることが容易である。すなわち、複数の照合段階または照合装置の間では、照合継続情報を含むデータをパケット化して伝達することにより、データフロー型の処理で検索処理を実行できる。
さらに、本発明の照合方法および照合装置においては、登録ビットパターンを追加あるいは削除する際に、エントリの移動は発生せず、単に、パターンテーブルおよびアドレステーブルを更新することにより、登録ビットパターンを追加または削除できる。したがって、そのような更新工程を実行する更新手段を設けておくことにより、更新するためのデータをパケットとして上流から下流に流して、エントリの追加削除を行うことができる。したがって、パイプライン方式で実行される、それぞれの照合段階の照合テーブルを更新する処理(更新過程)もパイプライン方式により照合段階と並列に行うことができる。すなわち、本発明においては、パイプライン方式で実行される、それぞれの照合段階の照合テーブル(パターンテーブルおよびアドレステーブルを含む)を更新することにより、登録ビットパターンを追加または削除する更新過程を有し、この更新過程は、照合段階と並列にパイプライン方式で実行できる。
照合テーブルが、パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータを有する場合は、下位の照合段階の照合テーブルが更新されないとバイパスデータが決定されない場合がある。したがって、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する際に、バイパスデータの更新が発生する可能性のある照合段階の照合テーブルの更新は、下位の照合段階の照合テーブルの更新を待ってから行う、待ち合わせ方式が採用できる。また、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する工程と、下位の照合テーブルの更新により上位の照合テーブルのバイパスデータの更新が発生した場合は、双方向リンクにより上位の照合テーブルの更新を行う工程とを有する、双方向リンク方式を採用することも可能である。
複数の照合装置を備えた分類装置により多段階の照合方法により検索を行うことができる。照合装置は1または複数の照合段階を実行するものであるが、1つの照合段階をそれぞれ実行する複数の照合装置(照合段階)をパイプライン方式などで接続する分類過程を用いた分類方法、および分類過程を実装した分類装置は、各照合段階の管理および制御が容易であり、本発明の好ましい形態の1つである。複数種類の検索対象のビットストリングを対象とする検索を実行する必要がある場合、照合装置を複数有する1つの分類装置において複数種類の検索を順番に実行することができる。複数の分類過程を有する分類方法、および複数の分類装置を備えた検索装置を提供することはさらに有用である。複数の分類過程および分類装置により分類処理を並列に実行することも可能である。複数種類の検索対象のビットストリングを連結して1つの検索対象のビットストリングとして照合を行うことも可能である。しかしながら、検索対象のビットストリングのデータ長が増えるほど、下流におけるパターンテーブルの数が膨大になる可能性がある。
登録ビットパターンが1つまたは複数の分類結果(ルール)を示している場合は、範囲検索により検索対象のビットストリングが属する範囲が決まれば、その検索対象のビットストリングの分類結果が決まる。複数の分類過程を備えた分類方法においては、複数の分類結果が得られる。したがって、複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程を設ける必要がある。この論理演算過程および論理演算手段においては、複数の分類結果の論理積を行列演算し、最終の分類結果を得ることができる。このような論理演算過程(論理演算工程)および手段により、処理速度を向上でき、構成を簡易にできる。複数の分類装置を備えた検索装置においても同様である。
分類装置において、さらに処理速度を向上するのに最も効果的であると考えられるのは、メモリに対してデータを入出力するキャッシュ装置である。そして、パターンテーブル、特にマスクデータおよびアドレステーブルを含む照合テーブルのサイズとキャッシュ装置のキャッシュラインサイズが同一であることが望ましい。さらに、異なる種類の検索を行う分類装置においては、最初の照合テーブルを指定する検索種別情報を受信する手段を設けることが望ましい。キャッシュ装置は、それぞれの検索種別および照合段階の単位でキャッシュラインを割り当て、検索種別および照合段階の単位でキャッシュラインを管理する管理手段を備えていることが望ましい。メモリの、それぞれの検索種別および照合段階の単位で割り当てられた個別アドレス領域に照合テーブルを記憶しておき、キャッシュ装置のキャッシュラインを、個別アドレス領域単位で割り当てることも可能である。
ビットストリングの検索においては、全体が同一または上位が同一のビットストリングが供給されることが多い。このため、従来のCPU用のキャッシュシステムのように、メモリ上のデータの局所性を期待したキャッシュシステムを採用するよりは、検索種別および段階に区分けして、その単位で過去の参照テーブルを保存するキャッシュ装置の方が、キャッシュヒット率が高く、検索あるいは照合処理速度の向上に効果がある。
また、キャッシュ装置としては、照合テーブルがオンキャッシュでなければ照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、要求応答型のデータキャッシュも有効である。照合テーブルがオンキャッシュでないときに、照合装置、データキャッシュおよびメモリが、そのアクセスに占有されてしまい、処理が遅れることを防止できる。パイプライン的に照合装置が接続されている場合は、1つ遅れると、その遅れは後段に影響するからである。また、検索対象のビットストリングに識別情報を付加することにより、入出力の順序が保障される必要はなくなるので、待ち行列で待機させても照合処理には影響がない。検索対象のビットストリングに識別情報を付加して照合する方法は、範囲一致検索において、バックトラックが発生したときにも有効である。
また、全体が同一の検索対象のビットストリングが供給される頻度も高い。したがって、分類装置の分類結果を記憶した履歴キャッシュ装置を設置することも有効である。検索対象のビットストリングを照合装置に供給する前に、当該分類装置の分類結果と検索対象のビットストリングとを比較する履歴キャッシュを設けることにより、検索あるいは照合処理速度を向上できる。
ビットストリングの検索あるいは照合を高速で処理することができる本発明は、デジタルデータを取り扱うすべての処理、アプリケーション、装置、システムにおいて有用である。本発明の適用範囲を限定するものではないが、その1つとしては、MPEGなどの画像データを示すビットストリームから特定のビットストリングを検索したり、膨大な文字データから特定の条件を検索するなどの多様なアプリケーションが考えられる。高速性が要求されるコンピュータネットワークを対象とするデータ管理装置の分野にも有効である。たとえば、分類装置や検索装置の照合あるいは検索により特定されたルートにパケットを送出する機能を備えた、高速ルーティングが可能なデータ管理装置あるいは管理方法を提供できる。また、ルータやサーバなどで必要となるパケットフィルタリングSPD検索、QoSといった範囲検索を高速で実行できるデータ管理装置を提供できる。さらに、TCPパケットのリアセンブルのように、データブロックの先頭アドレスおよび末尾アドレスが一致するだけでなく、前後および包含関係になることもあるフラグメント化されたデータブロックを再構成するアプリケーションにおいても有効である。
さらに、本発明の照合方法および照合装置は、大規模なデータベースから有用なルールあるいはパターンを高速に発見するデータマイニングと呼ばれる分野でも有効である。さらに、本発明の照合方法および照合装置を用いた検索がツリーの一方向遷移に限定される必要はない。このような視点はミクロ的なものであり、マクロ的な視点では双方向ネットワークの遷移先などを検索する方法および装置も本発明に含まれる。その1つは、状態遷移マシンであり、有限状態オートマトンである。したがって、本発明の照合方法により、状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合する工程と、その照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法を提供できる。
本発明により、状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、照合装置に対し、検索対象のビットストリングを供給する検索対象供給手段と、照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置を提供できる。このデータ処理装置は遷移状態マシンあるいはオートマトンプロセッサであり、分類器プロセッサとも称することができる。この場合、照合装置は、現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
1つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。QoSの検索などに本発明の状態遷移(オートマトン)プロセッサを用いると、QoSの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段階の少なくとも1つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の1つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
また、本発明の照合方法および照合装置においては、多段階の照合の1つの段階(現段階)において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。その結果と、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン(以降ではエントリとも称する)を示す現段階のパターンテーブルとから完全一致または範囲一致を導く。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、1ビットで1エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテーブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理(全照合工程および手段)は、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては4から5ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング(以降ではキーとも称する)のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、特にマスクデータ、およびアドレステーブルを含み、メモリ上の記憶単位である照合テーブルのサイズとキャッシュラインのサイズが同一であることが好ましい。
さて、範囲一致検索においては、現段階では、一致する部分登録ビットパターンがあり、さらに、最大または最小の部分登録ビットパターンがあるときには、最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブル(範囲検索のパターンテーブル)のアドレスを候補アドレスとして記憶あるいは出力しておくことが望ましい。照合継続のときの現段階(候補アドレスを記憶した照合段階に対しては次の照合段階)において、一致する部分登録ビットパターンがなく、最大または最小の部分登録ビットパターンもないときには、最大または最小の部分登録ビットパターンが発生する段階まで遡るバックトラックが発生する。そのときに、候補アドレスが記憶されていれば、照合継続の現段階の出力工程において、先行する段階における候補アドレスを含む照合継続情報を出力することにより、バックトラックにより照合を継続する段階まで最短の処理時間で到達できる。
範囲一致検索において、最大または最小の部分登録ビットパターンに続く現段階のパターンテーブル(範囲検索のパターンテーブル)のアドレスを含む照合継続情報が与えられたときは、現段階のパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを辿ることにより、検索対象のビットストリングよりも値が小さくて最大の登録ビットパターン(最大の登録ビットパターン)、または、検索対象のビットストリングよりも値が大きくて最小の登録ビットパターン(最小の登録ビットパターン)に到達することができる。したがって、その状態、すなわち、範囲検索のパターンテーブルが得られた現段階では、全照合工程および判定工程をバイパスすることができる。そして、出力工程および出力手段により、範囲検索のパターンテーブルを現段階のパターンテーブルとし、それに対応するアドレステーブルから、そのパターンテーブルに示された最大または最小(パターンテーブルの中での最大または最小)の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する処理を繰り返せば良い。
このように段階毎のパターンテーブルの最大または最小を辿りながら最大または最小の登録ビットパターンにたどり着く処理は、エントリの登録、削除がない限りパターンテーブルが決まれば、たどり着く登録ビットパターンは同一になる。したがって、パターンテーブルと共に、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータをメモリに記憶しておくことが望ましい。最大または最小の部分登録ビットパターンに続く範囲検索のパターンテーブルのアドレスを含む照合継続情報が与えられたときは、全照合工程、パターンロード工程および判定工程をバイパスし、出力工程および出力手段において、範囲検索のパターンテーブルに対応するバイパスデータを含む最終照合情報を出力して検索対象のビットストリングの照合を終了することができる。したがって、中間の段階のパターンテーブルを辿る処理を省くことができる。
特に、上述したバックトラックが発生したときでも、その後の処理は候補アドレスに示されたパターンテーブルに対応するバイパスデータを出力するという処理で終了し、ほとんどバックトラックによるペナルティーは発生しない。
本発明の照合方法および照合装置は、さらに、検索対象となるビットストリングのビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、照合ユニット、すなわち、多段階の1あるいは複数段階を実行する照合装置を追加したり、上述した現段階の一連の工程を繰り返すことで対応できる。したがって、本発明において、複数の照合段階を直列および/または並列に行う分類過程を有する分類方法は、検索目的、検索対象のビットストリングの種類、および登録ビットパターンの種類などの条件に応じて極めてフレキシブルに設計できる。同様に、複数の照合装置を直列および/または並列に組み合わせた分類装置も目的に応じて極めてフレキシブルに設計できる。
これらの分類過程あるいは分類装置においては、複数の照合段階あるいは照合装置をパイプライン方式で接続することにより、検索時間の実質的な短縮を実現でき、この点でも、検索処理の高速化を図ることが容易である。すなわち、複数の照合段階または照合装置の間では、照合継続情報を含むデータをパケット化して伝達することにより、データフロー型の処理で検索処理を実行できる。
さらに、本発明の照合方法および照合装置においては、登録ビットパターンを追加あるいは削除する際に、エントリの移動は発生せず、単に、パターンテーブルおよびアドレステーブルを更新することにより、登録ビットパターンを追加または削除できる。したがって、そのような更新工程を実行する更新手段を設けておくことにより、更新するためのデータをパケットとして上流から下流に流して、エントリの追加削除を行うことができる。したがって、パイプライン方式で実行される、それぞれの照合段階の照合テーブルを更新する処理(更新過程)もパイプライン方式により照合段階と並列に行うことができる。すなわち、本発明においては、パイプライン方式で実行される、それぞれの照合段階の照合テーブル(パターンテーブルおよびアドレステーブルを含む)を更新することにより、登録ビットパターンを追加または削除する更新過程を有し、この更新過程は、照合段階と並列にパイプライン方式で実行できる。
照合テーブルが、パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の登録ビットパターンを示すバイパスデータを有する場合は、下位の照合段階の照合テーブルが更新されないとバイパスデータが決定されない場合がある。したがって、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する際に、バイパスデータの更新が発生する可能性のある照合段階の照合テーブルの更新は、下位の照合段階の照合テーブルの更新を待ってから行う、待ち合わせ方式が採用できる。また、更新過程においては、上位の照合段階の照合テーブルから下位の照合段階の照合テーブルを更新する工程と、下位の照合テーブルの更新により上位の照合テーブルのバイパスデータの更新が発生した場合は、双方向リンクにより上位の照合テーブルの更新を行う工程とを有する、双方向リンク方式を採用することも可能である。
複数の照合装置を備えた分類装置により多段階の照合方法により検索を行うことができる。照合装置は1または複数の照合段階を実行するものであるが、1つの照合段階をそれぞれ実行する複数の照合装置(照合段階)をパイプライン方式などで接続する分類過程を用いた分類方法、および分類過程を実装した分類装置は、各照合段階の管理および制御が容易であり、本発明の好ましい形態の1つである。複数種類の検索対象のビットストリングを対象とする検索を実行する必要がある場合、照合装置を複数有する1つの分類装置において複数種類の検索を順番に実行することができる。複数の分類過程を有する分類方法、および複数の分類装置を備えた検索装置を提供することはさらに有用である。複数の分類過程および分類装置により分類処理を並列に実行することも可能である。複数種類の検索対象のビットストリングを連結して1つの検索対象のビットストリングとして照合を行うことも可能である。しかしながら、検索対象のビットストリングのデータ長が増えるほど、下流におけるパターンテーブルの数が膨大になる可能性がある。
登録ビットパターンが1つまたは複数の分類結果(ルール)を示している場合は、範囲検索により検索対象のビットストリングが属する範囲が決まれば、その検索対象のビットストリングの分類結果が決まる。複数の分類過程を備えた分類方法においては、複数の分類結果が得られる。したがって、複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程を設ける必要がある。この論理演算過程および論理演算手段においては、複数の分類結果の論理積を行列演算し、最終の分類結果を得ることができる。このような論理演算過程(論理演算工程)および手段により、処理速度を向上でき、構成を簡易にできる。複数の分類装置を備えた検索装置においても同様である。
分類装置において、さらに処理速度を向上するのに最も効果的であると考えられるのは、メモリに対してデータを入出力するキャッシュ装置である。そして、パターンテーブル、特にマスクデータおよびアドレステーブルを含む照合テーブルのサイズとキャッシュ装置のキャッシュラインサイズが同一であることが望ましい。さらに、異なる種類の検索を行う分類装置においては、最初の照合テーブルを指定する検索種別情報を受信する手段を設けることが望ましい。キャッシュ装置は、それぞれの検索種別および照合段階の単位でキャッシュラインを割り当て、検索種別および照合段階の単位でキャッシュラインを管理する管理手段を備えていることが望ましい。メモリの、それぞれの検索種別および照合段階の単位で割り当てられた個別アドレス領域に照合テーブルを記憶しておき、キャッシュ装置のキャッシュラインを、個別アドレス領域単位で割り当てることも可能である。
ビットストリングの検索においては、全体が同一または上位が同一のビットストリングが供給されることが多い。このため、従来のCPU用のキャッシュシステムのように、メモリ上のデータの局所性を期待したキャッシュシステムを採用するよりは、検索種別および段階に区分けして、その単位で過去の参照テーブルを保存するキャッシュ装置の方が、キャッシュヒット率が高く、検索あるいは照合処理速度の向上に効果がある。
また、キャッシュ装置としては、照合テーブルがオンキャッシュでなければ照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、要求応答型のデータキャッシュも有効である。照合テーブルがオンキャッシュでないときに、照合装置、データキャッシュおよびメモリが、そのアクセスに占有されてしまい、処理が遅れることを防止できる。パイプライン的に照合装置が接続されている場合は、1つ遅れると、その遅れは後段に影響するからである。また、検索対象のビットストリングに識別情報を付加することにより、入出力の順序が保障される必要はなくなるので、待ち行列で待機させても照合処理には影響がない。検索対象のビットストリングに識別情報を付加して照合する方法は、範囲一致検索において、バックトラックが発生したときにも有効である。
また、全体が同一の検索対象のビットストリングが供給される頻度も高い。したがって、分類装置の分類結果を記憶した履歴キャッシュ装置を設置することも有効である。検索対象のビットストリングを照合装置に供給する前に、当該分類装置の分類結果と検索対象のビットストリングとを比較する履歴キャッシュを設けることにより、検索あるいは照合処理速度を向上できる。
ビットストリングの検索あるいは照合を高速で処理することができる本発明は、デジタルデータを取り扱うすべての処理、アプリケーション、装置、システムにおいて有用である。本発明の適用範囲を限定するものではないが、その1つとしては、MPEGなどの画像データを示すビットストリームから特定のビットストリングを検索したり、膨大な文字データから特定の条件を検索するなどの多様なアプリケーションが考えられる。高速性が要求されるコンピュータネットワークを対象とするデータ管理装置の分野にも有効である。たとえば、分類装置や検索装置の照合あるいは検索により特定されたルートにパケットを送出する機能を備えた、高速ルーティングが可能なデータ管理装置あるいは管理方法を提供できる。また、ルータやサーバなどで必要となるパケットフィルタリングSPD検索、QoSといった範囲検索を高速で実行できるデータ管理装置を提供できる。さらに、TCPパケットのリアセンブルのように、データブロックの先頭アドレスおよび末尾アドレスが一致するだけでなく、前後および包含関係になることもあるフラグメント化されたデータブロックを再構成するアプリケーションにおいても有効である。
さらに、本発明の照合方法および照合装置は、大規模なデータベースから有用なルールあるいはパターンを高速に発見するデータマイニングと呼ばれる分野でも有効である。さらに、本発明の照合方法および照合装置を用いた検索がツリーの一方向遷移に限定される必要はない。このような視点はミクロ的なものであり、マクロ的な視点では双方向ネットワークの遷移先などを検索する方法および装置も本発明に含まれる。その1つは、状態遷移マシンであり、有限状態オートマトンである。したがって、本発明の照合方法により、状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合する工程と、その照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法を提供できる。
本発明により、状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、照合装置に対し、検索対象のビットストリングを供給する検索対象供給手段と、照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置を提供できる。このデータ処理装置は遷移状態マシンあるいはオートマトンプロセッサであり、分類器プロセッサとも称することができる。この場合、照合装置は、現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルをメモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
1つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。QoSの検索などに本発明の状態遷移(オートマトン)プロセッサを用いると、QoSの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
図1は、管理装置の例としてルータの概要を示す図である。
図2(a)〜図2(f)は、一致検索の照合状態を説明する図である。
図3は、バイナリビットツリー上の照合状態を示す図である。
図4(a)〜図4(f)は、右倒れ一致型の近似について説明する図である。
図5(a)〜図5(f)は、左倒れ一致型の近似について説明する図である。
図6は、バイナリビットツリーをテーブル分割した様子を示す図である。
図7(a)〜図7(c)は、照合テーブル(部分テーブル)を示す図である。
図8(a)および図8(b)は、MIN/MAXサーチを説明する図である。
図9(a)および図9(b)は、部分テーブルでMIN/MAXサーチを行う様子を示す図である。
図10は、圧縮テーブルでMIN/MAXサーチを行う様子を示す図である。
図11(a)および図11(b)は、バイパス処理を示す図である。
図12は、照合過程でバックトラックが発生する様子を示す図である。
図13は、バックトラックが発生した後に、バイパス処理を実行する様子を示す図である。
図14は、検索装置の概要を示す図である。
図15は、メモリ共用型の分類装置を示す図である。
図16は、メモリ分離型の分類装置を示す図である。
図17は、繰り返し型の分類装置を示す図である。
図18は、照合装置の概要を示す図である。
図19は、照合装置の処理を示すフローチャートである。
図20は、照合装置における処理の進行を説明する図である。
図21は、比較ユニットを示す図である。
図22は、比較器の論理を示す図である。
図23は、比較ユニットの異なる例を示す図である。
図24は、マスク器を示す図である。
図25は、マスク器の論理を示す図である。
図26は、選択回路の一致論理を示す図である。
図27(a)〜図27(c)は、選択回路の範囲検索(右倒れ)の論理を示す図である。
図28(a)〜図28(c)は、選択回路の範囲検索(左倒れ)の論理を示す図である。
図29(a)〜図29(g)は、比較ユニット、マスク器、選択回路の出力(右倒れ)を示す図である。
図30(a)〜図30(g)は、比較ユニット、マスク器、選択回路の出力(左倒れ)を示す図である。
図31は、コマンドの例を示す図である。
図32は、バイパス処理用のバスでバックトラックを処理する様子を示す図である。
図33は、メモリ共有型の分類装置でバックトラックを処理する様子を示す図である。
図34は、分類装置においてスルーを処理する様子を示す図である。
図35は、異なる方式でスルーを処理する様子を示す図である。
図36は、さらに異なる方式でスルーを処理する様子を示す図である。
図37は、さらに異なる方式でスルーを処理する様子を示す図である。
図38は、待ち合わせ方式でエントリを追加する処理を示す図である。
図39は、待ち合わせ方式でパイプラインに沿って処理を進める様子を示す図である。
図40は、待ち合わせ方式でエントリを追加する更新ユニットの機能を示す図である。
図41は、待機管理ユニットの機能を示す図である。
図42は、双方向リンク方式でエントリを追加する処理を示す図である。
図43は、双方向リンク方式でパイプラインに沿って処理を進める様子を示す図である。
図44は、双方向リンク方式でエントリを追加する更新ユニットの機能を示す図である。
図45は、待ち合わせ方式でエントリを削除する処理を示す図である。
図46は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELのとき)。
図47は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELUPDTのとき)。
図48は、待ち合わせ方式でコマンドがDELRDBPおよびDELWRBPの処理を示す図である。
図49は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELのとき)。
図50は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELUPDTのとき)。
図51は、双方向リンク方式でコマンドがDELRDBPおよびDELWRBPの処理を示す図である。
図52は、データキャッシュを備えた分類装置を示す図である。
図53は、データキャッシュのラインサイズを示す図である。
図54は、データキャッシュの管理を示す図である。
図55は、メモリの管理を示す図である。
図56は、空テーブル管理キューの応答を示す図である。
図57は、SDRAM共用型履歴キャッシュシステムを備えた分類装置を示す図である。
図58は、SDRAM共用型履歴キャッシュシステムの概要を示す図である。
図59は、履歴SRAMキャッシュ付き分類装置を示す図である。
図60は、履歴SRAMキャッシュの概要を示す図である。
図61は、行列演算の一例を示す図である。
図62は、行列演算の左行列を示す図である。
図63は、LSI化に適して行列演算の概要を示す図である。
図64は、AND化器のハードウェアを示す図である。
図65は、下位テーブルを省略する様子を示した図である。
図66は、要求応答方式のメモリアクセスを採用した照合装置の概要を示す図である。
図67は、要求応答方式のメモリアクセスを採用した照合装置の異なる例を示す図である。
図68(a)〜図68(c)は、照合テーブルの改良型を示す図である。
図69は、非リニアメモリアドレッシングを示す図である。
図70は、単純状態遷移を示す図である。
図71は、イベント連動型単純状態遷移を示す図である。
図72(a)〜図72(c)は、状態遷移の概要を示す図である。
図73(a)および図73(b)は、ネットワーク状の状態遷移の概要を示す図である。
図74は、分類装置を採用したプロセッサの概要を示す図である。
図75(a)および図75(b)は、QoSに適応する概要を示す図である。
図76は、検索ツリーとクラスツリーの対応を示す図である。
図77は、従来のCPUによる検索処理の概要を示す図である。
図78は、分類装置を採用したプロセッサによる検索処理の概要を示す図である。
図2(a)〜図2(f)は、一致検索の照合状態を説明する図である。
図3は、バイナリビットツリー上の照合状態を示す図である。
図4(a)〜図4(f)は、右倒れ一致型の近似について説明する図である。
図5(a)〜図5(f)は、左倒れ一致型の近似について説明する図である。
図6は、バイナリビットツリーをテーブル分割した様子を示す図である。
図7(a)〜図7(c)は、照合テーブル(部分テーブル)を示す図である。
図8(a)および図8(b)は、MIN/MAXサーチを説明する図である。
図9(a)および図9(b)は、部分テーブルでMIN/MAXサーチを行う様子を示す図である。
図10は、圧縮テーブルでMIN/MAXサーチを行う様子を示す図である。
図11(a)および図11(b)は、バイパス処理を示す図である。
図12は、照合過程でバックトラックが発生する様子を示す図である。
図13は、バックトラックが発生した後に、バイパス処理を実行する様子を示す図である。
図14は、検索装置の概要を示す図である。
図15は、メモリ共用型の分類装置を示す図である。
図16は、メモリ分離型の分類装置を示す図である。
図17は、繰り返し型の分類装置を示す図である。
図18は、照合装置の概要を示す図である。
図19は、照合装置の処理を示すフローチャートである。
図20は、照合装置における処理の進行を説明する図である。
図21は、比較ユニットを示す図である。
図22は、比較器の論理を示す図である。
図23は、比較ユニットの異なる例を示す図である。
図24は、マスク器を示す図である。
図25は、マスク器の論理を示す図である。
図26は、選択回路の一致論理を示す図である。
図27(a)〜図27(c)は、選択回路の範囲検索(右倒れ)の論理を示す図である。
図28(a)〜図28(c)は、選択回路の範囲検索(左倒れ)の論理を示す図である。
図29(a)〜図29(g)は、比較ユニット、マスク器、選択回路の出力(右倒れ)を示す図である。
図30(a)〜図30(g)は、比較ユニット、マスク器、選択回路の出力(左倒れ)を示す図である。
図31は、コマンドの例を示す図である。
図32は、バイパス処理用のバスでバックトラックを処理する様子を示す図である。
図33は、メモリ共有型の分類装置でバックトラックを処理する様子を示す図である。
図34は、分類装置においてスルーを処理する様子を示す図である。
図35は、異なる方式でスルーを処理する様子を示す図である。
図36は、さらに異なる方式でスルーを処理する様子を示す図である。
図37は、さらに異なる方式でスルーを処理する様子を示す図である。
図38は、待ち合わせ方式でエントリを追加する処理を示す図である。
図39は、待ち合わせ方式でパイプラインに沿って処理を進める様子を示す図である。
図40は、待ち合わせ方式でエントリを追加する更新ユニットの機能を示す図である。
図41は、待機管理ユニットの機能を示す図である。
図42は、双方向リンク方式でエントリを追加する処理を示す図である。
図43は、双方向リンク方式でパイプラインに沿って処理を進める様子を示す図である。
図44は、双方向リンク方式でエントリを追加する更新ユニットの機能を示す図である。
図45は、待ち合わせ方式でエントリを削除する処理を示す図である。
図46は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELのとき)。
図47は、待ち合わせ方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELUPDTのとき)。
図48は、待ち合わせ方式でコマンドがDELRDBPおよびDELWRBPの処理を示す図である。
図49は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELのとき)。
図50は、双方向リンク方式でエントリを削除する更新ユニットの機能を示す図である(コマンドがDELUPDTのとき)。
図51は、双方向リンク方式でコマンドがDELRDBPおよびDELWRBPの処理を示す図である。
図52は、データキャッシュを備えた分類装置を示す図である。
図53は、データキャッシュのラインサイズを示す図である。
図54は、データキャッシュの管理を示す図である。
図55は、メモリの管理を示す図である。
図56は、空テーブル管理キューの応答を示す図である。
図57は、SDRAM共用型履歴キャッシュシステムを備えた分類装置を示す図である。
図58は、SDRAM共用型履歴キャッシュシステムの概要を示す図である。
図59は、履歴SRAMキャッシュ付き分類装置を示す図である。
図60は、履歴SRAMキャッシュの概要を示す図である。
図61は、行列演算の一例を示す図である。
図62は、行列演算の左行列を示す図である。
図63は、LSI化に適して行列演算の概要を示す図である。
図64は、AND化器のハードウェアを示す図である。
図65は、下位テーブルを省略する様子を示した図である。
図66は、要求応答方式のメモリアクセスを採用した照合装置の概要を示す図である。
図67は、要求応答方式のメモリアクセスを採用した照合装置の異なる例を示す図である。
図68(a)〜図68(c)は、照合テーブルの改良型を示す図である。
図69は、非リニアメモリアドレッシングを示す図である。
図70は、単純状態遷移を示す図である。
図71は、イベント連動型単純状態遷移を示す図である。
図72(a)〜図72(c)は、状態遷移の概要を示す図である。
図73(a)および図73(b)は、ネットワーク状の状態遷移の概要を示す図である。
図74は、分類装置を採用したプロセッサの概要を示す図である。
図75(a)および図75(b)は、QoSに適応する概要を示す図である。
図76は、検索ツリーとクラスツリーの対応を示す図である。
図77は、従来のCPUによる検索処理の概要を示す図である。
図78は、分類装置を採用したプロセッサによる検索処理の概要を示す図である。
以下では、本発明に係るビットストリングの検索装置をルーティングテーブル検索に使用したルータ(ルーティング装置)について説明する。図1に示すルータ1は、ネットワーク上のパケットデータを管理する装置であり、パケットφpの入出力を制御および管理するパケット管理機能3と、パケットφpの転送先を判断するためのルーティング検索機能4と、パケットφpを転送する条件を判断する条件判断機能9とを備えている。ルーティング検索機能4は、入力されたパケットの経路を示すエントリ(登録ビットパターン)を複数備えたルーティングテーブルが記憶されたメモリ(SDRAM)11と、検索装置10と、検索装置10に対して検索種別を設定するなどの機能を備えた制御ユニット12とを備えている。ルーティング検索機能4では、パケットφpに含まれる検索対象のビットストリング(被検索ビットストリング)φo、たとえば、IPヘッダの受信先アドレス(DIP)をメモリ11に記録されたルーティングテーブルの各エントリと一致検索を行う。そして、その結果φrに基づき、パケット管理機能3が一致したエントリに設定された経路(インタフェース)へパケットデータを送出する。
条件判断機能9は、さらに幾つかの機能に分割されている。本例の条件判断機能9は、ネットワーク上のセキュリティーサービスを提供するIPセキュリティー(IPsec)機能8と、ネットワーク上のクオリティーサービスを提供するQoS機能7と、ファイアウォール機能6を備えている。これらの条件を判断する機能の多くは、パケットφpを管理するIPヘッダのビットストリングを検索対象のビットストリングφoとして、その検索対象のビットストリングφoが属する範囲を検索することが要求される。IPsec(SPD)機能8では、制御ユニット8cの制御のもと、検索対象として供給されたビットストリングφoと、メモリ8mに記憶されたSPDテーブルとを検索装置8sにより照合する。QoS機能7では、QoS制御ユニット7cの制御のもと、検索対象のビットストリングφoと、メモリ7mに記録されたフロー検索テーブルとを検索装置7sにより照合する。さらに、ファイアウォール機能6では、制御ユニット6cの制御のもと、検索対象のビットストリングφoと、メモリ6mに記録されたパケットフィルタリングテーブルとを検索装置6sにより照合する。
パケット管理機能3は、ネットワークを介してパケットφpを受信および/または送信可能な1つまたは複数のパケット入出力部2aと、受信したパケットφpをキューイングするメモリ2bとを備えている。キューイングされたパケットφpは、ルーティング検索機能4でルーティング先が決まる。さらに、SPD機能8、QoS機能7およびファイアウォール機能6などにおける処理が決定された後に、それらの機能で決定された適切なタイミングで、パケットφpは、パケット管理部3の何れかのパケット入出力部2aから適切なルートあるいはネクストホップに送出される。また、SPD機能8などの照合結果によってはキューイングされたパケットφpが出力されずに破棄されることもある。
本発明の照合方法を採用した検索装置は、これらの各機能4、6、7および8の検索装置10、6s、7sおよび8sとして適用可能であり、IPv6に基づいて検索対象のビットストリングφoのビット長が増した状況したでも、高速でサーチし、その結果φrをパケット管理部3に返すことができる。条件判定機能9に含まれる機能6、7および8の検索装置6s、7sおよび8sにおいては、検索対象のビットストリングφoが属するルールを見出すために、範囲一致検索あるいは照合が実行される。一方、ルーティング検索機能4においては、ルートを特定するために完全一致検索または最長一致検索が実行される。ルーティング検索機能4において、プレフィックス以降の最長一致の結果を得る最長一致検索は、プレフィックス以降のすべてのビットを最小側と最大側に展開した範囲一致検索に還元される。なお、本明細書において、バイナリビットツリーの「0」の方向を最小側(MIN)と呼び、「1」の方向を最大側(MAX)と呼ぶ。
検索装置の基本原理
以降においては、本発明に係る検索装置の概要を説明する。本発明の検索装置は複数種類の検索を単一のハードウェアで行えるものであり、いずれの機能の検索装置としてもほとんど構成を変えずに適用可能である。したがって、以降においては検索装置10を、完全一致検索および範囲一致検索が可能な装置として説明するが、範囲検索も同様のハードウェアで実行できる。
検索装置10は、バイナリビットツリーを構成するエントリ群と被検索キー(検索対象キー、検索対象のビットストリング、以降においてはターゲットキーあるいはキーと称することもある)の間の大小判定アルゴリズムを用い、エントリ(登録ビットパターン)群が表現する範囲(ルール)のどこに対象キーが属するかを判定するハードウェアである。バイナリビットツリーに基づく照合を実行するアルゴリズムをハードウェアで実現するにあたり、バイナリビットツリーを短いビット長のテーブルに分け、多段階で照合を行う。各照合段階では、各段のテーブル内の大小判定を並列ビット照合により行う。多段階の照合にすることにより、検索対象となるビットストリングのビット長の制限はなくなり、汎用的な利用が見込まれる。また、多段階の照合にすることにより、各段階で比較するビット長を限定でき、予めすべてのエントリが登録されているものとして並列に照合しても処理時間への影響はなく、ハードウェアが増大することも無い。そして、各段に登録されているエントリが含まれたパターンテーブルを示すデータ(以降ではマスクデータ)は圧縮することが可能であり、バイナリビットツリー作成(登録・削除)コストが軽減され、多段テーブルによる圧縮効果と相まって必要メモリ量も抑えられる。
照合過程の各段階における並列ビット照合は逐次実行プロセッサ上のソフトウェアでは実現不可能であり、並列処理ハードウェアあるいは並列実行型のプロセッサで実行することになる。並列ビット照合に必要とされるハードウェアは簡易なものであり、並列実行型のプロセッサを用いずに、経済的、コンパクトに実現することができる。
バイナリビットツリーによる同値および大小の判定
以下で述べる範囲検索において、右倒れ型近似ロジック、左倒れ型近似ロジックはハードウェア設計時にどちらかを選んで設計する。どちらを選んでも等価な範囲検索が可能である。両方式を切り替えられるよう設計することも可能である。一度に両方の近似で検索することも可能である。本明細書では、特に記載しない限り、右倒れ型近似ロジックに基づき設計された装置により説明する。
図2(a)から図2(f)に、バイナリビットツリー上での完全一致検索のロジックを示してある。ツリーの1段が1ビットに相当するバイナリビットツリーにおいては、上位から1ビットずつ被検索キーとエントリとの間で照合していく。この上位とは照合を開始するビットであり、必ずしも最上位のビット(MSB)でなくても良く、最下位のビット(LSB)であっても良い。バイナリビットツリーのあるノードから次ノードへの接続は「両方向あり」、「0方向のみあり」および「1方向のみあり」の3通りしかない。1ノードが1エントリを意味するバイナリツリー(2分木)とは異なり、バイナリビットツリーではノードはエントリの1ビットを意味するに過ぎない。エントリは全て等ビット長なのでツリー上でのノード段数も等しく、上位ノードからの接続が存在するノードを辿っていく途中で下位ノードに対する接続が「両方向なし」となることはありえない。
本明細書において、図2(a)および図2(b)に示すように、「検索対象キー21のビットとエントリ22のビットが一致」となるエントリは「照合候補」と定義する。また、図2(c)および図2(d)に示すように、「検索対象キー21のビットとエントリ22のビットとが不一致」となるエントリは「照合失格」と定義する。図2(e)および図2(f)に示すように、ノード接続が両方向である場合は、検索対象キー21のビットとエントリ22aのビットが一致」となるエントリ22aは照合候補で、「検索対象キー21のビットとエントリ22bのビットが不一致」となるエントリ22bは照合失格である。
完全一致ロジックにおいては、各ビット(各ノード)で照合をおこない、照合候補が存在する間、照合候補の次ノードを辿り、照合を継続する。照合候補が無くなればそこで照合は終了し、検索ミスヒットという最終照合結果が得られる。最終ビット(最終ノード)の照合完了後に照合候補があれば(状態が照合継続であれば)、それに対応するエントリが検索ヒットである。
図3は、バイナリビットツリーにおける完全一致検索の照合ロジックを表すものである。バイナリビットツリーに登録された4ビットのエントリ群22(値0,2,8,15)に対し、検索対象キー21aとして値8(「1000」)を投入し、値8に対応するエントリが完全一致検索ヒットと判定される例と、検索対象キー21bとして値4(「0100」)を投入し、検索ミスヒットと判定される例を示してある。最初のビットであるノードAで検索対象キー21aは1方向に進む。値0および2のエントリ22は0方向、値8および15のエントリ22は1方向なのでエントリ22は両方向に延び、前者のエントリ22は検索対象キー21のビットと異なるので照合失格、後者のエントリ22は検索対象キー21のビットと一致するので照合継続である。そして、このノードAでの照合後に照合候補エントリが存在するため、照合継続である。
次のノードEでは、検索対象キー21aは0方向に進み、値8のエントリ22が0方向、値15のエントリ22が1方向に延びている。したがって、ノードEでも照合候補が存在するので照合継続である。ノードFでは、検索対象キー21aは0方向に進み、エントリ22は片方向であるが、その値8のエントリ22が検索対象キー21aと同じく0方向なので照合候補が存在し、照合継続である。ノードGでも同様であり、最終ノードである。したがって、最終ノードGの照合後に照合候補があるので、完全一致検索は値8のエントリ22にヒットし終了する。
検索対象キー21bでは、ノードAでは照合候補があるため照合が継続する。ノードBでは、検索対象キー21bが1方向、値0および2のエントリ22は片方向で0方向に延びている。したがって、照合継続となっていた値0および2のエントリ22は照合失格となり、このノードでの照合後に照合候補が残らない。このため、検索ミスヒットとなる。
範囲検索でも完全一致検索同様にバイナリビットツリーを上位から1ビットずつ検索対象キーとエントリとの間で照合していくが、範囲検索の場合は「照合候補」に加え、「近似候補」および「近似失格」の概念がある。完全一致検索での「照合失格」が「近似候補」と「近似失格」に区別されることになる。また、ロジック上の必要性から「近似仮定」も定義する。
右倒れ近似(MAXサーチ)
図4(a)から図4(f)に右倒れ近似の類型を示してある。図4(a)および図4(b)に示すように、「検索対象キー21のビットとエントリ22のビットが一致」となるエントリは「照合候補」と定義する(これは完全一致検索と同様である)。この照合候補がある間、右倒れ型近似ロジックによる照合は継続する。また、図4(e)および図4(f)に示すように、「エントリ22が両方向あり」の場合も、「検索対象キー21のビットとエントリ22のビットが一致」である側のエントリ22は照合候補となり、照合継続である。
一方、図4(c)および図4(d)に示すように、「検索対象キー21のビットとエントリ22のビットが不一致」となるエントリは照合候補から外れる。完全一致検索ではいずれの場合も「照合失格」としていたが、右倒れ型近似の場合、図4(c)のように「検索対象キー21のビットが1でエントリ22のビットが0」となるエントリ22を「近似候補」と定義する。逆に、図4(d)のように「検索対象キー21のビットが0でエントリ22のビットが1」となるエントリ22を「近似失格」と定義する。近似ロジックでは、最新の近似候補を「近似仮定」として保持しておく。実際に「近似仮定」として保存が必要な値は、近似候補の指す次ノード位置である。近似候補でも近似失格でも、図4(c)および図4(d)に示すようにエントリ22が片方向で照合候補がなければ、照合過程は終了する。
図4(e)および図4(f)に示すように、エントリ22が「両方向あり」の場合は、「検索対象キー21のビットとエントリ22のビットが不一致」となる側のエントリ22も同様に、定義に従い近似失格あるいは近似候補となる。「両方向あり」なので「検索対象キー21のビットとエントリ22のビットが一致」側のエントリ22も存在し、それが照合候補となるので照合は継続する。それと共に、「近似候補」となるエントリ22、すなわち、図4(e)の「近似候補」のエントリ22が「近似仮定」となり、それまでの「近似仮定」の値は更新される。
最終ビットの後に照合継続(照合候補あり)ならば、そのエントリに完全一致したことになる。途中(あるいは最終ビット)で照合終了となった場合、保持してある近似仮定(最新の近似候補)を見て近似ヒットがありえるかどうかを判定する。近似仮定がなければ検索ミスヒットである。範囲検索の意味的には、定義された全ての範囲の外である。近似仮定があれば近似ヒットである。しかし、近似仮定が途中のノードを指す場合は、そのノードの下に複数のエントリ22が存在する可能性があるため、近似仮定のエントリ群22から近似決定をおこなわねばならない。この過程は、近似照合とは別のロジックで処理できる。右倒れ近似においては、以下で最大値検索(MAXサーチ)として説明している処理を行い、検索対象キー21の値以下の値のエントリの中から、最大の値のエントリ(検索対象キーに近い最大のエントリ)を選択して近似エントリとして確定する。
図3を、バイナリビットツリーにおける右倒れ型近似ロジックによる範囲検索を表すものとすると以下のようになる。値4の検索対象キー21bについては、ノードAで0方向の値0または2のエントリ22は照合候補、1方向の値8または15のエントリ22は近似失格となる。ノードAでは、照合候補が存在するため照合継続となる。次にノードBでは、0方向の値0または2のエントリが近似候補となり、近似候補なので近似仮定(最新の近似候補を保持)の更新を行い、近似候補の指す次ノードであるノードCを近似仮定として保持する。
ノードBの照合後に照合候補がなく、照合過程はいったん終了する。近似仮定があるので、近似ヒットである。従って、近似仮定となるエントリ群からMAXサーチにより近似確定をおこなう。この場合、値0と値2のエントリ22から値2のエントリを選択することになる。図3に示したように、検索対象キー21bは2≦キー値≦7の範囲の値であれば、同じ結果である値2のエントリ22を得ることができる。つまり、値2のエントリ22は(2〜7)という範囲を意味するエントリとなっている。このため右倒れ近似が範囲検索になるのである。
次に、値8の検索対象キー21aにおいては、ノードAでは、0方向のエントリ22(値0と2が属する)が近似候補となり、近似仮定(ノードBを指す)が更新される。1方向のエントリ22(値8と15が属する)が照合候補となり、照合候補も存在するため照合継続となる。ノードEでは、ビット値0方向のエントリ22が照合継続、ビット値1方向のエントリが近似失格となる。近似候補はないため、近似仮定は更新されない。ノードF以降は単方向で照合継続となり、近似候補が発生しないため、近似仮定は更新されない。そして、最終ビット後に照合継続(照合候補あり)なので、値8のエントリ22に完全一致するという最終照合結果が得られる。
さらに、値14の検索対象キー21cを投入した場合を考える。ノードAでは、ビット値0方向のエントリ22(値0と2が属する)が近似候補となるので、近似仮定(ノードBを指す)が更新される。また、ビット値1方向のエントリ(値8と15)が照合候補となり照合継続となる。ノードEでは、ビット値0方向の値8のエントリ22が近似候補となり、近似仮定は更新される(ノードFを指す)。また、1方向の値15のエントリ22が照合候補となるので、照合継続となる。ノードHでは、単方向で値15のエントリ22が照合候補となり、近似候補が発生しないので、近似仮定は更新しないで、照合継続となる。ノードIでは、単方向で照合失格となる。従って、いったん照合過程は終了する。
このとき、近似仮定はノードEでの更新でノードFを指している。近似確定のため、ノードF以下をMAXサーチし、値8に対応するエントリ22が近似ヒットと決定される。したがって、この検索対象キー21は、値8のエントリ22がカバーする範囲(8〜14)に属することが判明し、範囲一致検索が実行されたことになる。
左倒れ近似(MINサーチ)
図5(a)から図5(f)に、左倒れ近似における「照合候補」「近似候補」「近似失格」の定義を示してある。右倒れ近似と「近似候補」「近似失格」のビットが入れ替わっただけである。照合ロジックも、上記の入れ替わり以外は右倒れ近似と同様である。ただし、右倒れ型近似では近似確定するため近似仮定に対するMAXサーチをおこなうのに対し、左倒れ近似の場合、近似確定のために近似仮定に対するMINサーチをおこなう点が異なる。MINサーチでは、検索対象キー21の値以上の値のエントリの中から、最小の値のエントリ(検索対象キーに近い最小のエントリ)を選択して近似エントリとして確定する。
最終ビットまで「エントリのビットと検索対象キーのビットが一致」であった場合、つまり最終ビットの照合後に照合継続であった場合、これも範囲検索としてはヒットとする。つまり、右倒れ型近似による範囲検索とは、完全一致ヒットと近似一致ヒットを区別せず、「キー≧エントリ」となる最大エントリを検索するものである。ただし、検索の用途によっては「=」を含まない、「キー>エントリ」の右倒れ近似とすることもできる。また、「=」一致なのか「>」一致なのかを区別した結果とすることもできる。
範囲検索におけるエントリデータの形式
右倒れ型近似による範囲検索では、領域は右倒れ近似ロジックに適合するよう正規化されエントリ登録される。正規化とは、複数のルールが与えられたときに、相互に重複しない新たな範囲であって、その新たな範囲に属するルールの重複を許した、新たな範囲を設定することを言う。そして、検索対象ビットストリングが属する範囲を判断することにより検索対象ビットストリングに適用されるルールを発見する。また、検索対象のビットストリングが属する新たな範囲に複数のルールがあるときは、優先度の高いルールに基づき検索対象のビットストリングが属するパケットを管理するという方法でも用いられる。
さらに説明すると、ルールを正規化するとは、照合処理のために範囲の数値表現をFROM/TO表現からFROM/NEXT表現にすることを意味する。すなわち、ルールと範囲の関係を、ルールの重複は許し、範囲の重複は許さないで分割した領域表現に変換する。たとえば、Piを領域中の値とし、範囲[Pa,Pa′]と範囲[Px,Px′]が与えられたときに、Pa<Px<Pa′の関係があるときは、[Pa,Px−1]、[Px,Pa′]、[Pa′+1,Px′]の3つの新たな範囲を定義する。このような正規化により、新たな範囲のいずれかに属することが分かれば、それに対応するルール(優先するルール)を一義的に決定することができる。すなわち、範囲[Pa,Pa′]は、[Pa,Px−1]および[Px,Pa′]の2つの新たな範囲に分割される。従って、m個のルールが与えられたときは、領域数(新たな範囲の数)を最大で2m+1に分割することにより、重複することのない新たな範囲を設定することができる。最大となる条件は、すべてのルールの範囲のFROM/TOがユニークな場合であり、実際は、重複することが多いために新たな範囲の数はかなり少ない。
また、この新たな範囲には、ルールが与えられていない範囲も、ルールが与えられていない範囲として意味を持つことになる。したがって、FROM/TOによる範囲は[From,*]および[Next,*]という範囲に変換する必要がある。つまり、FROM/TOのペアで1範囲を表現していたものが、From値/Next値それぞれが独立領域を表現することになる。From値は元のルール範囲のFrom値と同値であり、ルール範囲の開始位置(左端点)を示す。Next値はルール範囲のTo(範囲終了位置)+1であり、ルール範囲の右側の範囲外領域の開始位置(左端点)である。これにより、From値/Next値は新たな範囲の端点として独立した存在となり、新たな範囲は常に左端点(下位のビットストリング)の1点で表現され、正規化された定義となる。すなわち、新たな範囲の右端点はNext領域左端点−1で暗黙に表現される。なお、ルール領域の右端点を中心に考えて、新たな範囲を上位のビットストリングの1点で表現することも可能である。その場合は、以下の説明を上位と下位を逆転させて考えれば良い。
正規化により、FROM/TOのルールエントリは、FROM/NEXTのエントリに変換される。この際、デフォルトのエントリとして[0,NA]を追加する。したがって、ルール数がnであれば、エントリはデフォルトも含めn+1エントリとなる。正規化する処理は、範囲により照合されるものがルールに限定されることはなく、範囲に対応して出力する値が特定される検索であれば全ての場合に応用することができる。
この正規化は領域を表す2値([FROM,TO])のうちTO(大値)側の補正ということができる。例えば[a,b]で表される領域Rは値「a」のエントリAと値「b+1」のエントリBとして登録される。エントリAは領域Rを表現し、エントリBは領域S[b+1,∞]を表現する。エントリAに右倒れ型近似ヒットすることは、領域Rに範囲検索ヒットすることである。エントリBに近似ヒットすることは、領域Sにヒット、つまり範囲検索ミスヒット(領域R外)を意味する。近似ミスヒットは領域Q[0,a−1]、つまり範囲検索ミスヒット(領域R外)を意味する。
一点を表す領域U[c,c]も定義可能であり、値「c」のエントリCと値「c+1」のエントリDとして登録される。エントリCは領域Uを表現し、エントリDは領域V[c+1,∞]を表現する。値「c」と値「c+1」の隣接するエントリが登録されるため、値「c」であるエントリCへのヒットは完全一致ヒットでしかありえず、点領域Uに範囲検索ヒットを意味する。エントリDへの近似ヒットは領域Vにヒット、つまり範囲検索ミスヒット(領域U外)である。近似ミスヒットは領域T[0,c−1]、つまり範囲検索ミスヒット(領域U外)を意味する。
左倒れ型近似でも領域の正規化はおこなわれる。ただし、右倒れ型とは逆にFROM(小値)側を補正する。
エントリと集合の関係を、エントリIは集合SET(I)[i,∞]を意味すると定義する。このとき、領域R[a,b]は、値「a」のエントリAすなわち集合SET(A)[a,∞]と、値「b+1」のエントリBすなわち集合SET(B)[b+1,∞]との差集合(SET(A)−SET(B))で表せる。エントリAに右倒れ近似ヒットするということは、エントリAにヒットし、エントリBにミスヒットということである。
照合方法
図6に分割テーブルを示してある。多ビットのバイナリビットツリー24は、多段階または多階層に分けて、さらに各段階を適当な数のエントリが表れるビット幅に分割することにより、パターンテーブル化できる。一定の短ビット長を単位とする分割テーブルまたは部分テーブル(パターンテーブル)25を規定することにより、多ビットのバイナリビットツリーを、上位の部分テーブル25から指定される各段階の部分テーブル25の組み合わせにより表現できる。固定ビット数の部分テーブルにすることで、並列処理対象エントリは有限固定となり、部分テーブル25に含まれるエントリをハードウェアにより並列照合することができる。さらには、部分テーブル25に含まれる最大エントリ数は有限固定になるので、実際に部分テーブル25に含まれるエントリの有無にかかわらず、検索対象キーが部分テーブル25に含まれ得るエントリのいずれと一致するかを、ある部分テーブル25が選択されると自動的にハードウェアで照合することも可能となる。
図6では、3ビットの部分テーブル25によりバイナリビットツリー24を表現している。各部分テーブル25に収容される部分エントリ26の最大値は、値0〜7の8エントリである。ハードウェア実装としては、メモリのワードのビット長や検索キーのビット長などを考慮し適切なテーブルビット長を決定する。テーブルビット長がnビットになると並列処理対象であるテーブル内のエントリ数が2nになるため、一般的には4ビットテーブル程度が適切である。
部分テーブル化することにより、各段の部分テーブルでの検索は有限固定エントリ数でのサーチになる。また、検索対象キーが固定ビット幅であれば、エントリを示すバイナリビットツリー24は固定長となり、それを表現する部分テーブル25の段数は予め定まった有限固定段数となる。このため、一致検索においてはバックトラックの発生しないバイナリビットツリー検索となる。したがって、検索に要するワースト時間はエントリ数にかかわらず一定時間となる。
図7(a)に、バイナリビットツリー24が部分テーブル化されている論理イメージを示す。図7(b)は、部分テーブル(パターンテーブル)25を汎用テーブル27として構成した様子を示してある。この汎用テーブル27では、1エントリはビットパターンの値27aと、それに対応する下位テーブル27へのポインタ27bで構成され、それが最大n個あるテーブル構造となる。さらに、図7(c)に、汎用テーブル27を圧縮したテーブル28で部分テーブル25を実現した様子を示してある。この圧縮テーブル28は、エントリの有効無効を示すビットフラグ(マスクデータ)28aと下位へのポインタ28bで1エントリが構成される。下位の圧縮テーブル28へ続くポインタ28bは、圧縮テーブル28が記憶されているRAMのアドレスなどになり、アドレステーブルを生成する。
汎用テーブル27と圧縮テーブル28の違いは、汎用テーブル27では登録ごとにエントリにビットパターンをセットしていくのに対し、圧縮テーブル28では、テーブルは固定ビット幅のテーブルであり、ビットパターンを省略している点である。部分テーブル25が固定ビット幅の場合、ビット幅に対応して上限エントリ数が決まる。したがって、例えば4ビットテーブルの場合、エントリNo0はビットパターン0000、エントリNo1はビットパターン0001というようにエントリNoとビットパターンの関係を一対一に固定できる。したがって、アクティブなエントリNoを示すことだけで、部分テーブル25に含まれる部分エントリ26を指定することができる。エントリNoを示すデータはいくつか考えられるが、図7(c)に示すようにエントリNoに対応したビット位置にオンオフのフラグとなるビットを配置したビットパターン(マスクパターン)28aはハードウェアで利用しやすい形態の情報である。また、マスクパターン28aにより部分エントリの有無を示すことにより、実際の部分エントリのビットパターンを登録する処理および登録するためのハードウェアおよびソフトウェアを省略できる。
この部分テーブル25をマスクパターンを用いた圧縮テーブル28とした最適化により、部分テーブル25をそれに対応する検索対象キーの部分(部分対象キー)と照合するハードウェアが単純化される。4ビットの部分テーブル25であれば、4ビットの部分エントリ、すなわち、値0から15までの部分エントリが取りうる値と部分対象キーとの照合を並列に行うハードウェアを採用することにより、照合作業およびハードウェアが単純化される。すなわち、全エントリハードウェア並列照合が可能となり、それが単純化される。また、エントリNoとビットパターンの関係が固定でソート済なので、エントリ(部分エントリ)の追加削除は、基本的にはマスクデータ28aを更新するだけで実現できる。そして、テーブル内でのMIN/MAXサーチはビットパターンの比較なしにエントリNoのみでおこなえる。したがって、範囲一致検索において、近似候補となる部分テーブル25までバックトラックが発生したとしても、その後は、エントリが有効か無効かのフラグ(マスクデータ)28aの参照だけでテーブル内におけるMIN/MAXサーチは終わることができるので、実質的にはバックトラックが発生しない照合方法ということも可能である。
MIN/MAXサーチとそのバイパス
MIN/MAXサーチの原理
バイナリビットツリーにおけるMIN/MAXサーチの原理は以下の通りである。図8(a)に、右倒れ近似におけるMAXサーチの概要を示してある。ビット位置(ノード)A1にて、検索対象キー21に対してエントリ22がなくなり、右倒れ型範囲検索の照合候補がなくなる。そのため、照合は途中で終了し、近似仮定エントリに対するMAXサーチを開始する。エントリ22が片方向しかない場合はその方向に辿る。ノードA2においては、0方向にしかエントリ22がないので、それを辿る。次のノードA3においては、エントリ22が0および1の両方向にあるので、大きい方向(0<1なので1の方向)を優先して辿る。各ノードに対して同様の処理を行い、最下段ビット位置A6まで辿り着き、得られるエントリ22がMAXエントリ(検索対象キーの値よりも小さくて最大の値をとるエントリであり、検索対象キーに近い最大のエントリ)である。
図8(b)は、左倒れ近似におけるMINサーチの概要を示してある。左倒れ型範囲検索の場合、同種のロジックで小さな方向(0の方向)を優先して辿り、MINエントリ(検索対象キーの値よりも大きくて最小の値をとるエントリであり、検索対象キーに近い最小のエントリ)を取得するMINサーチをおこなう。
テーブルにおけるMIN/MAXサーチ
バイナリビットツリーをテーブル化すると、MIN/MAXサーチのロジックもテーブル対応にしなければならない。図9(a)に汎用テーブルでのMIN/MAXサーチのうち、右倒れ型近似におけるMAXサーチを示してある。テーブルA1にて照合失格(キー値21と同値のエントリ22が無い状態)となる。テーブル内で「キー値>エントリ値」となるエントリの中から、最大値であるエントリ(「キー値>エントリ値」の中でエントリ値が最もキー値に近いエントリ)を選択し、近似候補エントリ22xとする。近似候補22xの指す次テーブルが近似仮定エントリ22yである。そして、その近似仮定エントリ22y以下に対するMAXサーチを開始する。
まず、近似仮定エントリ22yのテーブルであるテーブルA2に移る。テーブルA2内のエントリを調べ、最大値をもつエントリを選択する。そのエントリの次段テーブルに移り、以下、最大値を持つエントリ選択と下段への移動を繰り返し、最下段まで到達する。最下段でも最大値エントリを選択し、最大値エントリの登録データに辿りつき、MAXエントリを出力する。図9(b)は、左倒れ型範囲検索の場合であり、同種のロジックでMINサーチをおこなう。
図10に、圧縮テーブル28のMIN/MAXサーチのロジックのうち、右倒れ型近似に対応したMAXサーチのプロセスを示してある。まず、圧縮テーブル28ではマスクデータ28aにおいてエントリNoとビットパターンの関係が固定であり、ソート済の状態に等しいので、テーブル内での最小値/最大値エントリの選択はビットパターンの比較なしに、マスクデータ28aの対応するエントリNoにフラグを立てるだけで行うことができる。つまり、有効無効フラグの参照だけでテーブル内における最小値/最大値エントリの選択は終わる。そして、追加したエントリNoに対応するアドレステーブル28bのレコードにそのエントリNoに続く圧縮テーブル28のアドレスを記録することにより圧縮テーブル28をリストで繋ぐことが可能となり、リニアアドレス上のテーブルでなくてもバイナリビットツリーの多段階検索が可能となる。
右倒れ型範囲検索におけるMAXサーチを説明する。先の照合段階において、テーブルA1のマスクデータ28aにおいて照合候補がなくなり、照合が終了すると、次の現段階においては、近似仮定エントリに対するMAXサーチを開始する。近似候補の選択は、テーブルA1のマスクデータ28aの内で「キー値>エントリ値」となるエントリのうち最大値をもつエントリ(最大のエントリ)を選択することでおこなう。ビットマップによる圧縮テーブルなので、「エントリNo=エントリ値」であり、上記条件に合致するエントリはキー値エントリから左にみていって最初に1が立っているエントリが近似候補22xである。この例では照合が終了したのと同じテーブルA1に近似候補エントリ22xが存在する。近似候補エントリ22xの指す次テーブルが近似仮定エントリ22yである。
これにより、次の照合段階では、近似仮定エントリ22yであるテーブルA2に移動する。テーブルA2内で最大値をもつエントリを選択する。「エントリNo=エントリ値」なので、右端からみて最初に1の立つエントリが最大値エントリ22mである。最大値エントリ22mの指す次段テーブルA3に移り、エントリ選択と下段への移動を繰り返し、最下段エントリまで到達する。最下段でも同様に最大値エントリ22mを選択し、最下段での最大値エントリ22mの指すデータに到達する。これにより最大のエントリを得ることができる。左倒れ型範囲検索では、同種のロジックでMINサーチを行う。
MIN/MAXサーチのバイパス
圧縮テーブル28ではエントリNoとビットパターンの関係が固定でソート済なので、MIN/MAXサーチはビットパターンの比較なしにエントリNoのみでおこなえる。有効無効フラグの参照だけでテーブル内におけるMIN/MAXサーチは終わる。しかしながら、エントリの登録・削除がない限り、下位の部分テーブル28を辿って到達する最終的な最大のエントリあるいは最小のエントリは不変である。したがって、毎回、MIN/MAXサーチをするのは無駄であり、図11(a)および図11(b)に示すように、各テーブルにバイパスTAG(BP)を設け、そのテーブル28以下でMIN/MAXサーチした結果、すなわち、最大なエントリあるいは最小なエントリを記録しておくことによりMIN/MAXサーチを省略することが可能となる。これにより、最大のエントリ、あるいは最小のエントリを検索するプロセスは、近似仮定した圧縮テーブル28にアクセスするだけのプロセスに代わり、検索時間は大幅に短縮される。
したがって、近似仮定したエントリを近似確定させる際、近似仮定エントリ22yの指すアドレステーブル28bのアドレス(以降においてはTAG(次段テーブルを指すTAG)と称することがある)を使い、次段テーブルのバイパスTAG(BP)により近似確定する最大または最小のエントリを決定することができる。範囲検索の論理として右倒れ型でおこなう場合はバイパスBPには最大のエントリが記録され、左倒れ型でおこなう場合はバイパスBPには最少のエントリが記録される。複数の範囲検索系があった場合、照合のロジック構成としては右倒れ型か左倒れ型かのいずれかに統一する。バイパスBPに両値を記録することにより、テーブルに記録する情報量の増加、照合用のロジックの追加、エントリの登録削除用のロジックの追加などが発生するが、左右両方式を混在させることも可能である。
さらに、バイパスBPを記録することにより、MIN/MAXサーチにおけるバックトラックの遅延も解消することができる。MIN/MAXサーチとは、近似候補エントリ群から近似結果を確定させるための検索である。ところで、右倒れ型であっても左倒れ型であっても、テーブル型ビットツリーの場合、照合継続中に毎段で近似候補が更新されていくわけではない。ある段で近似候補が更新され、その後、数段の近似候補更新を伴わない照合継続があり、下段のほうで照合失敗となった段階で、上段で更新された近似候補を使い、結果を確定するためにさらにMIN/MAXサーチをおこなう必要がある場合がある。
図12に一例を示してある。上位のテーブル28から下位のテーブル28に照合継続し、照合失格となった段階で、近似仮定に基づき上位のテーブル28に戻り、別ロジック(MIN/MAXサーチ)で再びツリー状にテーブル28を降りていくことになる。これはバックトラックということができる。照合失敗によりMIN/MAXサーチでツリーを辿るロジックが変わるので、MIN/MAXサーチでは再度のバックトラックは発生しないが、照合失敗位置と近似仮定位置が離れている場合、バックトラックと目されるMIN/MAXサーチのコストは重い。
これに対し、図13に示すように、バイパスBPを記録しておけば、一度バイパスBPの値を読むことにより、最大または最小のエントリが確定するため、実質的にはサーチプロセスとなるような時間の係る処理は不要となり、実質的にはバックトラックの発生を抑えられる。図13は、右倒れ型の例であり、テーブルA1で近似仮定更新・照合継続となり、テーブルA2では近似仮定更新無し・照合継続となり、テーブルA3で近似仮定更新無し・照合失敗となる。このとき、テーブルA3での照合失敗で近似確定のため、MAXサーチに移行するが、最新の近似仮定はテーブルA2′であるため、テーブルA2′にアクセスする。そして、テーブルA2′にバイパスBPが記録されていれば、それにより直接、最下段の最大のエントリまで移動でき、照合過程は終了する。
検索装置、分類装置およびバイナリビットツリー照合器
図14に検索装置10の概要を示してある。この検索装置10は、各種の検索を行う分類器15を複数備えており、各種の検索を並列に行えるようになっている。したがって、検索装置10には、複数の分類器15により実現される複数の分類過程を有する分類方法が実装されている。1つの分類器15により各種の検索をシーケンシャルに行うことも可能であり、本発明の検索装置はこれに限定されるものではない。
この検索装置10に対しては上流のアプリケーション、たとえば、図1に示した制御ユニット12、8c、7c、6cから検索対象ビットストリングであるキー21と、その検索種別を示すルートTAG31と、検索ジョブを識別する情報(ID)32とが供給される。たとえば、SPD検索機能8であれば、1つのパケットデータφpを管理するために、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する必要がある。このような場合は、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングをそれぞれ異なる分類装置15に対して検索対象ビットストリング(検索対象キー)21として供給し、それぞれのビットストリングと比較するビットパターン(エントリ)22が登録されたバイナリビットツリーの最上位の部分テーブル25(28)を示すメモリ11あるいは8mのアドレスをルートタグ31として供給する。これにより各々の分類装置15においては、供給された検索対象キー21を、その検索対象キー21の範囲検索に用いるべく予め登録されているビットパターン(エントリ)22と照合することができる。
さらに、検索装置10は、複数の分類装置15に供給された検索対象キー21の照合結果により得られるルールの論理積を求めて最終結果を取得するための論理演算装置(AND化器)19を備えている。したがって、この検索装置10は、複数の分類器15により実現される複数の分類過程と、AND化器19により実現される論理演算過程とを有する分類方法が実装されている。各々の分類装置15における検索処理時間は、各々の分類装置15に供給される検索対象キー21のビット長により異なり、さらに、照合過程において上位の部分テーブル28に戻るバックトラックが発生するか否かによっても異なる。したがって、分類装置15から同期して検索結果が出力されない可能性がある。このため、分類装置15に供給される検索対象キー21にID32を付加することにより、論理演算装置19における論理演算を可能とし、さらに、パケット管理装置3において管理されるパケットデータφpとの関連付けも可能なようにしている。
本例の分類装置15は、パイプライン状に接続された複数の照合装置50を備えており、これらの照合装置50の間ではデータパケットとして標準化された照合継続情報(入出力パラメータ)33が伝達され、パケット駆動される構成となっている。したがって、分類装置15は、複数の照合装置50により形成されたデータフローを備えており、複数の照合段階を備えた分類過程を有する分類方法が実装されている。また、それぞれの照合装置50が各照合段階の処理を行うので、複数の照合段階により多段階の照合を行う照合方法が分類装置15に実装されているということもできる。この分類装置15は、クロック同期のハードウェアで実現することも可能であるし、データフロー型のハードウェアで実現することも可能である。分類装置15は、さらに、圧縮された部分テーブル28が記録されたメモリ11と照合装置50との間の入出力速度を向上するためのバースト転送バッファ16も備えている。
以下で説明する検索装置10、分類装置15および照合装置50の構成は、ソフトウェアで実現することも可能であるし、ソフトウェアを主体として部分的にハードウェアを用いて実現することも可能である。しかしながら、実行速度を考慮した場合、できるかぎりハードウェアで実現することが望ましい。本部分テーブル25あるいは28を用いた検索方法は、単一、あるいはほぼ単一な構成の照合装置(照合器)50をパイプライン状に接続することによりビット長の変化に対応でき、また、ルートタグ31といった検索種別を示す情報が提供されることにより単一な構成の照合装置50により多種類の検索を実行できるようになっている。したがって、この照合方法は、非常にハードウェア化しやすい照合方法であり、経済的で、処理速度の速い検索装置を提供できる。また、上位のソフトウェアあるいはアプリケーションからは、検索対象キー21と、検索種別情報31を提供するだけで、所望の検索を実行できるので、上位のアプリケーションの負荷も非常に小さい。
分類器の構成
図15に、8個の4ビット型の照合器50をパイプライン状に繋いで32ビットの検索対象キー21に対する検索を行う分類装置15の概略構成を示してある。この分類装置15は、複数の照合器50をハードウェアとして備えており、それらの照合器50をソフトウェアあるいはハードウェアで接続している構成である。照合継続情報33に含まれるルートタグ(RootTAG)31および照合タグ(NextTAG)34は、SDRAMメモリ11の上の圧縮テーブル28を指すポインタ(アドレス)である。それぞれが照合段階を実行する各照合装置50は、照合継続情報33に含まれる検索対象キー21から順番に4ビットずつを部分対象キー36として受け取り、ルートタグ31または照合タグ34により指定されるテーブル28からマスクデータ28aを読み取り、近似一致による比較を行う。比較によりヒットしたエントリ(部分エントリ)26に対応する次段の圧縮テーブル28のポインタ(NextTAG)34を、圧縮テーブル28のアドレステーブル28bから読み取り、照合継続情報33に含めて次の照合装置50に供給する。
検索対象キー21や照合タグ34などの照合継続情報33は、別々に供給されても良い。しかしながら、データパケットとしてまとめて入力することにより、データフロー化しやすい。また、検索対象となる部分対象キー36は、上位のプログラムにより予め分割された状態で照合装置50に供給されても良い。しかしながら、検索対象キー21の値は全ビットが照合継続情報33に含められ、シフトしながら必要なビット数ずつを部分対象キー36として使用していくことが望ましい。これは、照合器パイプライン構成の途中でパイプラインステージを逆流(バイパス等によるバックトラック)する可能性があり、検索対象キー21を照合器50の外部で切り分けたのでは、パイプラインの進行(クロック)同期で適切なステージ(段階)へ投入していくことができないためである。また、SDRAM11に対するアクセスの状態(競合・排他)や、データキャッシュをつけた場合のオンキャッシュかどうか等で各照合装置50における処理速度は変動する可能性が高い。したがって、照合器パイプラインの進行自体をクロック同期ではなく要求応答型(データフロー型)とした方が処理効率は高く、この点でも、検索対象キー21を照合継続情報33に含め、さらに、照合検索情報33をデータパケット化して次の段階の照合装置50に供給するメリットがある。
図16には、分類装置15の異なる例を示してある。この分類装置15はMAX/MINサーチを実行する際のバイパス用のバス(BPバス)39を備えており、照合装置50は、BPバス39に出力するインターフェイスを備えている。したがって、この分類装置15においては、各照合装置50が非同期でテーブル28にアクセスする頻度が上昇する。図15に示したように、各段のテーブル28を同一のSDRAM11におくと、パイプラインを構成する各照合器50のメモリアクセス競合があるため、パイプラインが有効に機能しない。従って、各段のテーブル28を個別のメモリ11aにおき、各照合器50のメモリアクセスを独立としたほうがパイプラインの有効性が高い。この照合装置パイプラインを備えた分類装置15では、1つの照合器50の処理に要する時間(メモリアクセスを含む)を「T」とし、32ビットの検索対象キー21が途切れなく入力されれば、検索のスループットは「T」(本当は1/T)となり、レイテンシは「8T」となる。
照合器50の構成は、SDRAM11を除いて処理時間が一定するので、パイプラインを組みやすい。データキャッシュ制御によりSDRAMアクセスを排除する履歴キャッシュ方式や専用SRAM型履歴キャッシュ方式を使えば、SRAM11に対する実質のアクセス時間を一定化でき、パイプラインをさらに構成しやすい。これに対し、共有型データキャッシュであれば、キャッシュのスループットと全パイプラインステージのスループットの合計が等しいか、あるいは共有型データキャッシュの方がスループットを高くする必要がある。
図17に、分類装置15のさらに異なる例を示してある。上記の例では、複数の照合器50を処理パイプラインとして並べた構成であるが、省リソースを優先した場合は、図17に示したように、1個の照合器50を繰り返し使う構成も可能である。この場合、照合器50からのメモリアクセスはある時点では常に1アクセスとなるので、テーブル28を全て同一のSDRAM11に置くことで処理速度の優劣はない。
照合装置の構成
図18に照合装置50の構成を示してある。この照合装置50は、検索対象ビットストリング(検索対象キー)21を複数ビットの部分対象ビットストリング(部分対象キー)36に分けて、予め登録された複数の登録ビットパターン(エントリ)22と多段階で照合するための1つの照合段階を実行する照合装置である。照合装置50は、照合継続情報33に含まれるコマンド37をデコードして照合装置50における処理を制御するコマンドデコードユニット51と、検索対象キー21から、現段階の部分対象キー36を選択し、その部分対象キー36が取り得る全ての値と照合する比較ユニット(全照合手段)52と、メモリ11からその照合段階の圧縮テーブル28のマスクデータ28aをロードするロードユニット(パターンロード手段)53とを備えている。ロードユニット53は、圧縮テーブル28をメモリ11からバッファ59に格納するテーブルロード部53aと、バッファ59に格納された圧縮テーブル28からマスクデータ28aを読み出すマスク読み出し部53bとを備えている。圧縮テーブル28にマスクデータ28aと共に格納されているアドレステーブル28bおよびバイパスデータBPは多くの処理で必要になる。このため、本例では圧縮テーブル28をバッファ59にロードしている。マスクデータ28aは、上述したように、エントリ22の部分ビットパターン26であって、先行する段階から得られる照合継続情報33により決まる、部分対象キー36に対応する段階(現段階)の部分登録ビットパターン(部分エントリ)26をフラグ(ビットパターン)により示すものである。
照合装置50は、さらに、比較ユニット52における全照合結果とマスクデータ28aにより、部分対象キー36に一致する部分エントリ26の有無、すなわち一致を含む照合結果を示すことができる判定ユニット54を備えている。また、照合装置50は、判定ユニット54の照合結果により、アドレステーブル28bから、照合により特定された部分エントリ26に続く次の段階のマスクデータ28aのアドレス(タグ(本例では圧縮テーブル28のアドレス))を照合タグ(照合候補)34として出力する出力ユニット55を備えている。この照合装置50は、一致検索のみではなく範囲検索も行えるように、判定ユニット54は、部分対象キー36に値が最も近い最大(右倒れ型近似について記載し、左倒れ型近似については、最大を最小に変更することによりほぼ対応できる)の部分エントリ26の有無を示すことが可能である。本例の判定ユニット54は、比較ユニット52の出力をマスクデータ28aによりマスク処理するマスク器(VLD、VaLiDation)54aと、マスク器54aの出力から状態を選択する選択器54bとを備えている。
出力ユニット55は、判定ユニット54により一致と判断された部分エントリ26に続く次の段階のマスクデータ28aのアドレス(圧縮テーブルのアドレス)を照合タグ34として出力する。さらに、出力ユニット55は、判定ユニット54において、最大の部分エントリ26が見つかったときは、その最大の部分エントリ26に続く次の段階のマスクデータ28aのアドレス(圧縮テーブル28のアドレス)を範囲検索のための候補アドレス(候補タグ、近似候補)35として出力し、照合継続情報33のパケットデータに保存する。したがって、一致する部分エントリ26があり照合継続の場合であっても、最大の部分エントリ26が見つかると範囲検索用の候補タグ35がパケットデータに保存される。このため、次の照合段階において、一致する部分エントリ26がなく、照合終了で、さらに、その照合段階では最大の部分エントリ26がないときに、候補タグ35を照合タグ34として照合継続情報33に出力することが可能となる。この照合タグ34によりMAXサーチに移行することができる。
さらに、照合装置50の出力ユニット54は、MAXサーチに移行したときに、圧縮テーブル28からバイパスデータBPを読み取って最終照合結果として出力することができる機能も備えている。したがって、出力ユニット55は、照合状態などを反映したコマンド37を生成するコマンド更新部55aと、照合タグ34を更新する照合タグ更新部55bと、候補タグ35を更新する候補タグ更新部55cと、バイパス読み出し出力部55dとを備えている。そして、出力インターフェイス56からは、出力ユニット55により更新されるパラメータ34、35および37と、入力された照合継続情報33に含まれるID32と、検索対象キー21とを含むデータパケットが照合継続情報33として、パイプラインの下流に位置し、次の段階の照合を行う照合装置50に供給される。
圧縮テーブル28にバイパスデータBPが設定されていないときは、照合終了を示すコマンド37を受け取ると、出力ユニット55の照合タグ更新部55bがマスクデータ28の最大の部分エントリ26に続く次の段階のマスクデータのアドレスを照合タグ34として出力し、MAXサーチが継続される照合装置50のパイプラインを制御する。
さらに、本例の照合装置50は、マスクデータ28aおよびアドレステーブル28bを更新することにより、エントリを追加または削除する更新ユニット60と、更新されたテーブル28をメモリ11に書き込むテーブルライトユニット61とを備えている。更新ユニット60の動作については、以下でさらに詳しく説明する。
照合装置における処理
図19に、照合装置50における照合処理(照合方法)50mをフローチャートにより示してある。この照合装置50は、各々の照合装置50が1つの照合段階を受け持ち、図19に示す照合処理50mは1つの照合段階(現段階)の処理を示している。ステップ101で、コマンド37がエントリの追加削除を示しているときは、ステップ102で、更新ユニット60によりテーブル28を更新する(更新工程および更新過程)。ステップ103で、コマンド37から、現段階に先行する前段階の照合が近似で照合終了していることが判明すると、以下に説明する現段階の照合のステップ104、105および106をバイパスし、出力ステップ110に含まれるステップ111でバイパス読み出し出力部55dによりバイパスデータBPを図16に示したバイパスバス39に出力して照合を終了する(バイパスする工程)。
コマンド37より、現段階の照合を継続する場合は、ステップ104において、比較ユニット52により現段階の部分対象キー36を比較する(全照合工程)。ステップ105において、ロードユニット53により現段階のマスクデータ28aをロードし(パターンロード工程)、ステップ106において、判定ユニット(VLDユニット)54により現段階の照合結果を得る(判定工程またはVLD工程)。そして、ステップ107において、一致する部分エントリ26があれば照合継続なので、ステップ109において候補タグ更新部55cにより候補タグ35を更新し(候補アドレス記憶工程)、出力過程110のステップ114で照合タグ更新部55bにより照合タグ34を更新し、コマンド37をコマンド更新部55aにより照合継続にセットして出力する(出力工程)。
一致する部分エントリ26がない場合は原則としては照合終了である。しかしながら、ステップ108で、近似の部分エントリ(最大の部分エントリ)26がある場合は、出力ステップ110に含まれるステップ113において、照合タグ更新部55bが近似の部分エントリ26に続くタグアドレスを照合タグ34にセットして出力する。ステップ108で、近似の部分エントリ26がない場合は、出力ステップ110に含まれるステップ112において、照合タグ更新部55bが、上流の照合段階で得られ、照合継続情報33に含まれて伝達された候補タグ35を照合タグ34にセットしてバイパスバス39に出力する。これにより、MAXサーチが開始される。
これらの工程を備えた照合方法50mでは、実際には、独立して処理できる工程は並列に実行される。たとえば、コマンドを解釈する工程101および102、部分対象キー36を比較する工程104と、マスクデータをロードする工程105とは独立した処理であるので、並列に実行できる。テーブルをロードするフェーズはSDRAMアクセスであるため時間がかかり、比較フェーズなどとは並列に実行することによりメモリアクセスのオーバヘッドを緩和できる。したがって、読み出し速度が非常に速い特殊なメモリを用いなくても、本例の照合装置50においては十分な検索スピードを確保できる。また、出力ステップ110において異なるパラメータを更新するフェーズも相互独立であり、コマンド更新部55a、照合タグ更新部55bおよび候補タグ更新部55cも独立しており、これらにおける処理は並列に実行可能である。したがって、図20に示すように、通常の照合モードの場合、照合装置50においては、テーブルロード53と比較52などが並列で実行される。
本例のロードユニット53は、照合タグ34の指示により、SDRAMメモリ11の上の圧縮テーブル28を照合器50の内部のテーブルバッファ59にロードする。圧縮テーブル28のデータは、必ずしも全て利用されるものではないが、少なくともマスクデータ28aと、アドレステーブル28bの1個あるいは2個のアドレス(タグ)の値は参照される。したがって、各照合器50において共有資源であるSDRAM11に対し、2〜3回のリードが発生するよりは、バーストリードにより1回だけSDRAM11からリードし、照合器内部で必要値を読み出すほうが効率的である。上述したように、SDRAMからバーストリードするには時間がかかるため、このテーブルロードのフェーズからマスクデータ読み出しフェーズは、比較フェーズと並列に実行される。詳しくは後述するが、SDRAM11との間にデータキャッシュを置いた場合、照合器50に内蔵のテーブルバッファは不要であるが、その場合でも、共有資源たるデータキャッシュへのアクセスを複数回おこなうよりも、やはりローカルにコピーしてアクセスするほうが効率的な場合がありえる。
比較ユニットの構成
図21に、比較ユニット52をさらに詳しく示してある。この照合装置50においては、部分対象キー36のビット数が固定なので1テーブルのエントリ数は固定である。また、圧縮テーブルなのでエントリとビットパターンの対応も固定である。したがって、部分対象キー36の値と各エントリとの比較は固定論理回路により構成可能である。
この照合装置50は4ビットの比較を行う。このため、16個の比較器CMP0からCMP15を備えており、比較器CMP0(エントリNo.0)は入力検索対象キー36と値0との比較、比較器CMP1(エントリNo.1)は入力検索対象キー36と値1との比較、そして、比較器CMP15(エントリNo.15)は入力検索対象キー36と値15との比較を行う。このように各比較器CMPiで、入力値xと固有値iとの比較をおこなう。つまり、比較器CMPi(iは0〜15)はそれぞれのエントリに固有の論理回路である。
比較ユニット52は、比較器の代わりにルックアップテーブルLUTを用いたハードウェアなどの他のハードウェアで構成することも可能であり、本例に限定されるものではない。
図22に示すように、各比較器CMPiは入力値xとして対象キー4ビットを取り、それぞれのCMPiは、それぞれの固有値iとの比較を行う。各CMPiは、入力値xと固有値iとの比較結果「<」「=」「>」の3値(2ビット)をCMPi出力として出力する。各比較器CMPiは、この比較論理に基づき、比較結果を出力するよう比較器毎に論理圧縮され、最適化された回路で構成される。
図23は、比較ユニット52の異なる例を示している。並列に実行されるテーブルロードフェーズ〜マスク読み出しフェーズに時間がかかることを考えれば、必ずしも上記のように16個の比較器CMPiを並列する必要はない場合がある。図23は、1個の比較器CMPxにより比較動作を16回繰り返す構成である。他の処理との処理時間のバランスが取れるのであればハードウェアを削減できる。もちろん、テーブルロードフェーズ〜マスク読み出しフェーズの所要時間との兼ね合いで、比較ユニットに使用される比較器CMPiの必要個数は1個に限定されることはなく、2個以上であっても良い。
判定ユニットの構成
図24に、判定ユニット54のマスク器54aの構成を示してある。マスクフェーズではマスク器VLD54aにより無効エントリのマスク処理がおこなわれる。各エントリをマスクするマスクエレメント54eは、各エントリに対し同一の論理回路である。マスクデータ28aは、実際のエントリ(部分エントリ)26の有効・無効を各1ビットのマスク値で表現したものである。マスクデータ28aにより、比較フェーズでの各エントリ(仮想的なエントリ)の比較結果から、無効エントリの比較結果を取り除き、実際に登録されている各エントリ26との比較結果に変換する。
各マスクエレメント54eは、図25に示すように、比較フェーズのCMPi出力(2ビット)とマスク値(1ビット)の合計3ビットを入力とし、「×」「<」「=」「>」の4値(2ビット)を出力とする。ここで、「×」は無効エントリ、「<」「=」「>」は有効エントリである。
図26から図28に、判定ユニット54の選択回路54bの選択論理を示してある。マスクフェーズ後の各エントリのVLD出力は、「×」(無効)、「<」(キー36<エントリ26)、「=」(キー36=エントリ26)、「>」(キー36=エントリ26)の4状態である。選択フェーズでは、これらのVLD出力の中から完全一致検索、範囲一致検索の照合結果を得て、次段へ繋がるエントリを選択する。図26に示した選択論理は、完全一致検索の選択論理であり、マスク器VLD出力が「01」となるエントリを選択する。完全一致を示す出力関数Gf(i)、出力Gf(i)が1となるエントリがあったかどうかを意味する出力関数Sf、完全一致のエントリを示す関数Nfは以下の通りである。
図26に示したように、VLD出力が「01」のエントリのみの出力Gf(i)(完全一致を示す出力)が「1」となる。したがって、出力Gf(i)が1となったエントリNoを取得することにより、完全一致のエントリNfを得ることができる。バイナリビットツリー方式ではエントリとしての重複登録はありえない。従って、Gf(i)の16出力のうち、完全一致エントリがあれば、唯一であることは保証される。出力Gf(i)による「=」の選択は範囲検索においても照合継続処理で使用する。
図27(a)に右倒れ一致検索型の範囲検索の照合継続選択論理を示し、図27(b)および図27(c)に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。また、図28(a)に左倒れ一致検索型の範囲検索の照合継続選択論理を示し、図28(b)および図28(c)に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。右倒れ一致検索の場合の近似候補を示す出力Gr(i)、中間出力Fr(i)、漸化式Hr(i)、近似候補のエントリNoを示す出力Nr、出力Gr(i)が「1」となるエントリの有無を意味する出力Srは以下の通りである。
また、左倒れ一致検索の場合の近似候補を示す出力Gl(i)、中間出力Fl(i)、漸化式Hl(i)、近似候補のエントリNoを示す出力Nl、出力Gl(i)が「1」となるエントリの有無を意味する出力Slは以下の通りである。
範囲検索の場合、照合継続は完全一致同様の「キー36=エントリ26」の選択であり、照合終了の選択は、範囲検索を右倒れ一致型でおこなうのであれば「キー36>エントリ26」となる最大エントリを選択する。左倒れ一致型であれば、「キー36<エントリ26」となる最小エントリを選択する。したがって、右倒れ一致の場合はVLD出力が「11」のエントリのみの中間出力Fr(i)が「1」となり、左倒れ一致の場合はVLD出力が「10」のエントリのみが出力Fl(i)が「1」となる。
そして、範囲検索において、近似候補を示す出力Gr(i)では、出力Fr(i)が「1」のエントリのうち、最大値のエントリ(エントリ番号が最大のエントリ)のみが「1」となり、その近似候補のエントリNoを示す出力Nrが決定する。
同様に左倒れ一致型の場合は、出力Gl(i)では、出力Fl(i)が「1」のエントリのうち、最小値のエントリ(エントリ番号が最小のエントリ)のみが「1」となり、近似候補となるエントリNoを示す出力N1が決定する。
図29に、右倒れ一致型の場合の出力の変化を示してある。図29(a)は比較フェーズ後のCMPi出力であり、図29(b)は、テーブルより読み出したマスクデータ28aである。図29(c)はVLD出力を示し、ビット毎の(a)×(b)となる。図29(d)は「キー値>エントリ値」となるエントリ群の抽出(中間出力)Frであり、図29(e)の中間出力Hrは、出力Frから右エッジ(「キー値>エントリ値」となる最大エントリ)を抽出したものである。図29(f)は、最終出力Grであり、出力Hrを利用し、「キー値>エントリ値」となる最大エントリのみを出力する。これを見てもGr(i)が「1」となるエントリ、すなわち近似候補となるエントリは1箇所であることは明らかである。
図29(g)は一致検索の出力Gfを示しており、VLD出力をもとに「キー値=エントリ値(01)」となる一致エントリを抽出している。この照合方法においては、テーブル28への重複登録がない構造なので、この一致エントリの唯一性は自明である。出力Grでも出力Gfでも、演算の結果、該当エントリは存在しないか唯一存在のいずれかとなる。
図30(a)から図30(g)に、左倒れ一致型の場合の出力変化を示してある。右倒れ一致型の場合と同様にGlの16出力のうち、Gl(i)が「1」となる近似候補のエントリは唯一であることは保証される。
出力ユニットの構成
出力ユニット55においては、判定ユニット54から得られる上記の照合結果に基づいて各パラメータを更新する。照合タグ更新部54bにおいては、選択回路54bにより得られるエントリNo(出力Nf)に従い照合タグ34を更新する。選択回路54bより得られる出力Sfを見て、出力Sfが「0」であれば更新はおこなわない。照合継続となるエントリがなく候補が確定するからである。出力Sfが「1」であれば、照合器50にロード済みの現段階の圧縮テーブル28のアドレステーブル28bから、エントリNfに対応するタグ情報(アドレス)を読み出し、照合タグ34を更新する。圧縮テーブル28においては、「ワード位置+0」がマスクデータ28aであり、「ワード位置+1」からタグ情報28bが記録されている。
候補タグ更新部55cにおいては、選択回路54bにより得られるエントリNo(出力Nr)に従い候補タグ35を更新する。候補更新情報である出力Srを見て、出力Srが「0」であれば更新はおこなわない。新規候補となるエントリがないからである。候補更新情報Srが「1」であれば、照合器50にロード済みの現段階の圧縮テーブルから、エントリNrに対応するタグ情報を読み出し、候補タグ35を更新する。ここで候補タグ情報35には、タグ情報だけでなく、照合段階を示す候補段階情報も記録することが有効である。この候補段階情報は、候補タグに対応するテーブル段位置に設定する。つまり、候補タグがどのテーブル段であるかを示す情報である。この候補段階情報は、パイプラインが照合段数でフィックスされている分類装置15においては、候補確定後のバイパス処理で必要となるものである。
タグアドレスからテーブル段位置が一意に決定できるようにテーブル28が配置されている場合は、候補段階情報は候補タグ情報に含まれるため、別処理は不要である。そうではない場合、照合器50は自分がどのテーブル段数の処理を担当するのかの情報を保持し、その情報に従い、次段の情報を候補段階情報として候補タグ情報35の中にセットする。照合器50をパイプライン状に接続して利用する場合、テーブル段位置とはつまり照合器IDであるので、自器IDが分かり、自器に対しパイプライン次段にあたる照合器IDが分かればよい。パイプラインの次段の照合器との関係は固定なので、照合器IDは、照合器の初期化時に定めればよい。次段の照合器IDを使用するよりは、テーブルのタグアドレスに照合段階IDを含めてしまうほうが簡素である。データキャッシュを用い、データキャッシュのコントロールをおこなう場合、テーブルは段位置別にグループ化されたアドレスとなるので、それを流用できる。
コマンド更新部55aは、選択回路54bにより得られる照合継続情報である出力Sfに従い、次段に供給するコマンド37を更新する。照合継続情報である出力Sfが「0」であれば、照合継続がなくなり、候補が確定したことを意味するする。したがって、「CMD=MATCHRDBP」を出力する。これにより、次段の照合装置50では候補タグ35と一致している照合タグ情報34によるバイパス処理が行われ最終結果が出力される。照合継続情報Sfが「1」であれば、照合継続であるので、「CMD=MATCHEXEC」を出力する。これにより、次段の照合器装置でも照合タグ34により継続して照合が行われる。
出力ユニット55は、さらに、コマンド更新部55aにより決定した次のコマンド37の値に従い、出力先を決定する。次コマンド37が「CMD=MATCHEXEC」であれば、照合は継続するので次段の照合装置50にパケット化された照合継続情報33を出力する。次コマンド37が「CMD=MATCHFIN」であれば、バイパス読み出し後の出力処理であるから、出力をスルーとして最終段の小照合器50の次(出力器)に送り出す。スルー出力が照合器パイプラインを順次通過しながら出力されるのであれば、次の照合器50に最終出力を送り出す。バス39を使ってショートカットするのであれば、バス39に最終出力を出力する。
次コマンド37が「CMD=MATCHRDBP」であれば、照合は終了し候補が確定するので、候補タグ情報35によるバイパス処理をおこない、検索結果を決定する。この際、候補タグ情報35は必ずしも次段テーブルを指しているわけではなく、それ以前の段を指している場合がありうる。したがって、次段の照合装置50に出力できるとは限らず、候補段階情報により候補タグを扱える段階の照合装置50を特定し、照合継続情報33を出力する。
図31にコマンド37の一覧を示してある。なお、これは完全一致検索、1次元範囲検索に加え、後述する登録・削除も含めたものである。
バイパス処理とショートカット処理
図32に、図16に示した分類装置15においてバックトラックのあるバイパス処理を実行している様子を示してある。この分類装置15においては、バイパス用のバス39を備えており、バス39に照合継続情報33を出力することによりバックトラックを発生させている。図16に示した分類装置15はメモリアクセスタイムを改善するためにメモリ分離型にしている。このため、あるタグアドレスの指すテーブル28は、それに対応する段階の照合装置50からしかアクセスできない。ところが、バイパス処理移行(候補確定)時に得られる候補タグ情報35は、照合器パイプライン上の次段とは無関係に、自器より前のいずれかの照合器50に属するものである。従って、バイパスバス39により候補タグ35に従って処理パイプラインを逆行できるようにしている。
図33に、図15に示したメモリ共用型の照合器パイプラインを備えた分類装置15においてバイパス処理を実行する様子を示してある。メモリ共用型の照合器パイプラインを備えた分類装置15の場合、全ての照合器50がメモリ11に格納された任意のテーブル28にアクセスできるので、バックトラック用のバイパスバスは必要ない。メモリ共用型の照合器パイプラインでは、次段の照合器50がバイパス処理をおこなう。したがって、最終段での次段のバイパス処理発生に対応するため、最終段の照合器50の次にバイパス専用のバイパス処理器58を設ける。F番目の照合器50で照合失敗、すなわち、A〜F番目の照合器50のうち最後に更新された候補が確定することにより次段で候補タグバイパス処理が発生した場合、次のG番目の照合器50がバイパス処理をおこなう。G番目の照合器50は本来、ある段のテーブル28の処理パイプラインを構成しているが、メモリ共用型のため、任意の段のテーブル28にアクセスできる。従って、F番目の照合器50で照合失敗し、候補確定が発生し、G番目の照合器50にてバイパス処理をおこなう場合、テーブルB〜Gのどの位置の候補であっても、そのテーブルにアクセス可能である。
バイパス処理が完了し結果タグ情報(最終照合結果)が得られて以降の照合器50は、結果タグ情報のスルーのみを行う。最終段のG番目の照合器50では、照合継続が検索成功(完全一致エントリ)を意味し、照合失敗がテーブルB〜Gあるいは結果タグのいずれかを指す候補タグが得られる事を意味する。G番目の照合器50で照合継続により検索成功の場合、照合器50から出力されるタグ情報は結果タグ情報であり、それを受けた最終段バイパス処理器58では、検索終了としてステータスだけを更新し、バイパス処理は不要である。
一方、G番目の照合器50で照合失敗により候補確定の場合、候補タグ情報35がテーブルB〜Gのいずれかを指すタグ情報である可能性がある。したがって、バイパス処理器58はバイパス処理を行い、候補タグ情報35の指すエントリからテーブル28にアクセスしてバイパス値(BP)を読み取り、検索終了ステータスにする。G番目の照合器50で候補確定であり、候補タグ情報がG番目の照合器50で更新された場合は、テーブルGに記されたタグが結果タグ情報となる。このため、更新された候補タグ情報は結果タグ情報、すなわち最終照合結果となっている。従って、バイパス処理器58では「ステータス=検索完了」にするだけで、バイパス処理は不要である。
以上まとめると、バイパス処理器58は入力が結果タグ情報であればスルーする。そうでない場合は、テーブルB〜Gのいずれかを指すタグ情報が得られるので、バイパス処理器50はバイパス処理をおこなう。結果タグ情報か否かの識別は、タグアドレスの上位ビットを識別用の情報として使うか、パイプラインを流れるデータに情報を付与することで行うことができる。
図17に示した繰り返し型の分類装置15の場合は、全ての照合器が任意のテーブル28にアクセスできるので上記と同様にバイパス用のバスは必要ない。さらに、繰り返し型の場合、制御用のカウンタ値を、バイパス処理を意味する値にし、繰り返し処理の一環として自器にてバイパス処理をおこなうことができるので、バイパス処理器58も不要である。
ところで、バイパス処理にて得られるタグ情報は最終結果であり、バイパス処理以降の照合器パイプラインはスルーしてパイプライン最終段まで進み分類装置15の出力となる。また、完全一致検索での照合不一致(検索失敗)あるいは範囲検索での照合不一致または候補なし(検索失敗)の場合も同じく、検索失敗のステータスを持って自器以降の照合器パイプラインをスルーしていく。バイパス処理のためのバックトラックがなければ、分類装置15において、検索対象キー21を入力した順番と、それの照合結果が出力される順番とが保障されるが、バイパス処理のためのバックトラックを許容するので、入力の順番と出力の順番が同一であることは保障されない。このため、検索対象キー21にID32をセットにして供給するようにしている。したがって、スルーする場合も、図34に示すように、照合器パイプラインをスルーで進んでいく必要はなく、図35に示すように、バイパス用バス39を転用して照合器パイプラインをショートカットすることが可能となる。
さらには、ショートカット先は常に最終出力部なので、図36に示すように、バイパス用バス39とは別にショートカット用のバス38を設けてもよい。バイパス発生とほぼ同数ショートカットは発生するため、常に決まった宛先のためにバイパス用バス負荷を高める必要はない。バイパス用バス39のバイパス処理での利用率が50%以下であるなら、ショートカットもバイパス用バス39を使う方が、ハードウェアが増大しないというメリットがある。
メモリ共用型照合器パイプラインを備えた分類装置15においては、バイパス用バスは不要である。このため、図37に示すように、ショートカット用のバス38を新規に設けることが望ましい。繰り返し型の分類装置の場合は、制御用カウンタ値の判定でバイパス処理後は繰り返し終了としておけばよく、ショートカット経路は不要である。
検索テーブルの管理(更新処理)
以下では、照合装置50のテーブル更新ユニット60においてエントリ22を追加あるいは削除する処理(更新工程あるいは更新過程)について説明する。圧縮テーブル28はマスクデータ28aとアドレステーブル28bで構成される。したがって、マスクデータ28aにビットあるいはフラグで示された部分エントリを追加したり削除したりするだけで基本的には検索テーブル28の更新が可能であり、ソーティングや正規化などの複雑な処理は必要ない。このため、検索テーブルの管理は非常に簡略化され、高速に処理される。したがって、エントリの登録や削除といったテーブル28の管理を、検索対象キー21の照合処理と並列実行させることができる。つまり、本例の分類装置15においては、削除(登録)と検索が、照合装置50がパイプライン状に接続された照合器パイプラインで並列に実行させることが可能となる。ただし、エントリを追加することにより検索テーブルに用意されるバイパス値BPを更新する必要があるケースがあり、その判断に若干の処理が必要になる。新しい検索テーブルを生成するための処理も必要になる。しかしながら、バイパス値BPは、検索テーブル28にいったん設定すると、照合処理において、近似候補が決定された後の処理をショートカットできる。このため、更新に時間を要しても、検索テーブルの更新時にバイパス値BPを設定しておくことには意味がある。
まず、テーブル28の管理処理と検索処理が照合器パイプラインにおいて並列に実行される状況を想定すると、照合中の整合性を保つための排他管理が要求される。検索(照合)処理においても、処理対象のテーブル28を占有すれば整合性保持は容易になる。しかしながら、ツリー上位テーブルにおけるシリアル化がボトルネックとなり、照合処理の並列実行を阻害しかねない。したがって、検索処理においては「排他は確認するが、テーブルは占有しない」アクセスにより検索処理の間の並列性を生かす。それと共に、登録・削除処理の側、すなわちテーブル更新処理では「排他を確認し、さらに、テーブルを占有する」アクセスで整合性も維持する。なお、検索処理と登録(削除)処理の間では、先行する登録(削除)処理の占有に対し後続の検索処理が排他確認の待ちをおこなうことでシリアル化される。
検索処理は上記のように「排他は確認するがテーブルは占有しない」状態で並列に実行される。このため、登録・削除処理との関係では、検索処理は、先行する登録・削除処理に対しては排他管理により追い越しが発生しないようにする。後続する登録・削除処理については、検索処理の上位構造における並列性起因の問題であり、下位構造たる検索処理で対応できるものではないため対処しない。
登録処理は「排他を確認し、テーブルを占有する」状態でシリアル化されテーブル単位で逐次実行される。また、各テーブルのバイパス情報を更新する必要があり、その情報は下位から上位へと伝播するものであるため、登録処理の時に何らかの形で下位から上位への伝播をおこなわねばならない。考えられる方式としては、上位で待機し下位からフィードバックする待ち合わせ方式と、上位から下位に下り、双方向リンクにより下位から上位に戻る方式との2種ある。待ち合わせ方式の場合、何らかの待ち合わせ機構をハードウェア資源で実現しなければならず、その資源量により並列数やテーブル段数等が制約を受けるが、処理速度的には有利である。ハードウェアによる待ち合わせ機構ではなくメモリによる待ち合わせにすることも可能であるが、メモリアクセスが増えるため、処理速度面での有利性がなくなる可能性がある。双方向リンク方式の場合、資源量起因の制約はないものの、1テーブルのメモリ量増加やリンク読み出しによるメモリアクセス増加(処理速度に影響)など、メモリ周りに不利な点をかかえる。
待ち合わせ方式による登録処理
図38に、待ち合わせ方式による登録処理の概要を示してある。この方式では、テーブル化されたバイナリビットツリーを上から下に辿りながら更新する。その際、バイパスBPの更新が確定したテーブル28は「待ちなし(Wなし)」で更新処理をおこない、バイパスBPが未確定のテーブル28は各段で「待機中(Wあり)」にして待たせておく。新規のテーブル28nを作成する必要がある段階に到達した場合は、新規のテーブル28nを作成した後に、その段階以下の新規なテーブル28nとの連結と、上位で待機中(Wあり)(バイパスBPの確定待ち)となっているテーブル28へのフィードバックを並列におこなう。
図38において、テーブルAでは追加するエントリ22の部分エントリ26は既存(エントリが既存)であり、追加(登録)されるエントリの部分エントリ26がMAXエントリ(最大のエントリ)ではないとする。この場合、下位のテーブルに対するエントリの登録がどうなっても、このテーブルAでのバイパスBPの値に影響を与えずバイパス値BPを更新する必要はない。従って、「待ちなし(Wなし)」でBP更新も不要である。
テーブルBに追加するエントリ22の部分エントリ26は、既存(エントリが既存)であるが、その部分エントリ26はテーブルBのMAXエントリに該当するとする。この場合、下位での結果次第でバイパス値BPを更新する必要がありえる。このため、下位が確定するまでは、このテーブルBのバイパス値BPの更新が必要かどうか確定しないため、下位の更新待ちで「待機する(Wあり)」になる。
テーブルCでは、追加するエントリ22の部分エントリ26が新規(エントリが新規)であり、その新規エントリ26がMAXエントリとする。この場合、このテーブルではバイパス値BPの更新が必要になる。この段階で、バイパス値BPの更新が発生したので、上位のテーブル28へ通知する。「Wあり」状態となっているテーブルBでは下位からの通知を受けてバイパス値BPを更新し、更に上位の待ちがあればそこへ通知する。この例では、テーブルAは「Wなし」なので上位への通知は不要である。
テーブルCから下への流れは上記の上位フィードバックと並列に進む。テーブルCで次段が新規テーブル28nであると判明するので、空テーブル管理キュー69に要求し、応答としてテーブルDになるべきテーブルのタグアドレスを受け取る。そして、テーブルCのマスクデータ28aに新しい部分エントリ26のフラグを追加し、アドレステーブル28bに新しいエントリタグを書き込む。テーブルD以降のテーブルは常に新規なので、空テーブル管理キュー69に対して新たなテーブルのアドレスを要求し、マスクデータ28aおよびアドレステーブル28bにデータを書き込む。同時に、バイパス値BPも更新する。
図39に分類装置15における照合器パイプラインにおいて、待ち合わせ方式でエントリ22を登録する構成を示してある。エントリ22の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値BPの更新保留となったら、各照合装置50に対応する待機管理ユニット68に必要な情報を記録したパケットを投入し、次段以降に進む。次段へは、直接の上位段となる親テーブルでの「待機有無」の情報が伝えられる。バイパス値BPが確定した照合装置50においては、親テーブルで「待機有り」なら、上位フィードバック(FB)を発行する。この上位FBと並列に、下位へのエントリ登録のパイプライン処理はおこなわれていく。上位FBは待機管理ユニット68で待ち合わせたパケットと合流し、保留していたバイパス値BPを更新する。保留解除によるバイパス値BPを更新する処理とは並列に、必要であれば待機管理ユニット68から更に上位保留へのフィードバックを行う。
照合装置においてエントリを登録する処理
図40に、待ち合わせ方式でエントリを登録する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。「DTAG」は結果タグ(登録データTAG)を示し、「TTAG」はテーブルタグを示し、「PWF」は直接の上位段(親テーブル)での待機有無を示すフラグを示す。コマンド「ADD」は上位から下位への既存のエントリのタグを辿って伝播される。コマンド「ADDNEW」は途中段以降の新規テーブルを確保する。コマンド「ADDUPDT」は上位へのフィードでBPの更新を再開する。コマンド「ADDWCLR」は上位で待機している照合装置50に対するバイパス値BPが不変の通知であり、待機解除に繋がる。
照合継続情報33と同様の経路で更新用のデータパケットが照合装置50に伝達される。そして、ロードユニット53により照合タグ34で指示されたアドレスのテーブル28がテーブルバッファ59にロードされる(ステップ120)。コマンドデコーダ51はコマンド37をチェックし(ステップ121)、コマンド37は追加「ADD」から開始される。まず、ステップ122で、マスクを読み出し、ステップ123で、キー値とマスク値により次段が新規かどうかを判断する。次段が新規であれば、ステップ124で、空きテーブルキュー69に対してテーブル28nを要求し、応答を待つ間に、ステップ125で、マスクデータ28aの更新処理をおこなう。マスクデータ28aの読み出し値と、追加する部分エントリ26の値の論理和(OR)を演算し、追加エントリに該当するビット(フラグ)を1にする。
テーブルキュー69から空テーブルを確保した応答が得られると、ステップ126でその空テーブル28nのアドレスをアドレステーブル28bに書き込み、追加処理を伝播するための出力TTAGに空テーブル28nのアドレスをセットする。さらに、ステップ127で、出力するコマンドCMD37を「ADDNEW」にセットする。
コマンド37が「ADD」であり、次段が既存であった場合、ステップ128で自テーブル28のアドレステーブル28bから次段のテーブルアドレスを読み出し、出力TTAGにセットする。ステップ129で出力するコマンドCMD37は入力コマンドと同じく「ADD」のままである。
入力コマンド37が「ADDNEW」であった場合、その段のテーブル28nは前段処理により確保された新規テーブルなので、ステップ130でテーブル初期化をおこなう。これはマスクデータ28aだけの処理でよく、マスク値として該当するエントリビットを1に、他を0にする。初期化以降は、コマンド37が「ADD」で新規エントリであった場合と共通の処理である。エントリの登録を照合装置パイプラインに伝播する過程で、一度、コマンド37が「ADDNEW」、すなわち新規エントリになれば、それ以降の照合装置50に供給されるコマンド37は常に「ADDNEW」であり、上記の処理が繰り返される。また、上位のテーブル28にフィードバックされるバイパス値BPを更新する処理については、コマンド37が「ADDNEW」の場合は常におこなう。
コマンド37が「ADD」の場合、すなわち、現段階のテーブル28は既存のテーブルである場合は、ステップ131で、エントリの位置によって判断する。コマンド37が「ADD」で、該当(新規)のエントリ26が新規(次段TBLが新規)のエントリ22の部分エントリで、それが最大エントリであった場合(MAXエントリ更新)、バイパス値BPは更新が確定する。コマンド37が「ADD」で該当(新規)のエントリ26が新規のエントリ22の部分エントリで、最大エントリではない場合、バイパス値BPは不変で確定する。コマンド37が「ADD」で該当エントリ26が既存で最大エントリではない場合、バイパス値BPは不変で確定する。バイパス値BPが確定する場合、更新するのであればステップ132で更新し、ステップ133で出力PFWを「0」にセットする。一方、コマンド37が「ADD」で該当エントリ26が既存で最大エントリの場合、下位の状況によりバイパス値BPの更新が必要かどうか確定するため、待機管理ユニット68へパケットを登録し、バイパス値BP更新を保留する。更新を保留した場合、ステップ134で、出力PWFを「1」とする。
更新不要、更新確定の場合、状態が定まったので、入力PWFを参照し、上位待機があるかどうかを判断する。上位待機があれば、1段上の待機管理ユニット68へフィードバック出力する。更新確定なら、ステップ135でコマンド「ADDUPDT」、更新不要なら、ステップ136でコマンド「ADDWCLR」とし、上位の更新要不要を指示する。
図41に待機管理ユニット68の動作をさらに詳しく示してある。待機管理ユニット68は、待ち合わせ処理と、その後のバイパス値BPの更新再開および上位フィードの並列化をおこなう。コマンドを見て「ADDUPDT」なら下位の段でバイパス値BPが更新されたので、ステップ137で、バイパス値BPの更新を再開する。そのために照合器50のキューにパケットが投入される。コマンドが「ADDWCLR」なら下位でバイパス値BPの更新がなかったので、キューのパケットは破棄される。ただし、次の上位にフィードする処理は行う。また、コマンドによる処理とはまったく独立に、出力PWF(上位で待ちがあるかどうか)をみて、出力PWFが「1」なら上位へフィードする。そのとき、IDおよびCMDは下位から来たものをそのまま上位へフィードする。
照合装置50では、コマンド37が「ADDUPDT」なら待機していたバイパス値BPの更新処理を実行する。上位へのフィードは待機管理側がおこなうので、バイパス値BPを更新した後は照合器50ではパケットを破棄する。
双方向リンク方式による登録処理
図42に、双方向リンク方式による登録処理の概要を示してある。この方式でのバイパスへの対応は、上から下に辿りながらエントリ登録をおこない、その際にバイパス値BPの更新が確定したテーブルでは更新処理をおこなう。バイパス値BPの更新が未確定テーブルはそのまま下位へ移動し、待ち合わせ処理のような「待ち」は設けない。新規テーブル作成段に到達後、その段以下の新規テーブルの連結と、双方向リンクを辿りながらの上位のテーブルに対してバイパス値BPの確定待ちへのフィードバックを並列におこなう。
図42において、テーブルAでは、エントリが既存であり、MAXエントリではないため、下位がどうなっても、このテーブルAでのバイパス値BPの更新はない。テーブルBでは、エントリ既存であり、MAXエントリに該当する。従って、下位での結果次第でBP更新がありえる。下位が確定するまではこのテーブルBのバイパス値BPの更新が必要かどうか確定しないため保留する。テーブルCでは、エントリは新規であり、その新規エントリがMAXエントリとなる。従って、このテーブルCでバイパス値BPの更新が必要となる。バイパス値BPの更新が発生したので上位へ通知する(双方向リストを利用し上位テーブルBへ遡る)。遡ってきたテーブルBでは、下位からの通知を受けてバイパス値BPを更新し、更に上位へ遡っていく。バイパス値BPの更新の必要がなくなった段で遡りは打ち切りである。一方、テーブルCから下への流れは、待ち合わせ方式による登録と同様に処理待機上位への遡りとは並列に進んでいく。
図43に分類装置15における照合器パイプラインにおいて、双方リンク方式でエントリ22を登録する構成を示してある。双方リンクを辿って上位にフィードバックするので待機管理ユニットは設けられていない。上位フィードバック(FB)は、この図では専用経路であるが、バス効率に影響がなければ検索バイパス用バス39を共用してもよい。双方向リンクによる上位遡りは検索時のバイパス処理(任意の上位へ接続)とは異なり、常に直接繋がる上位テーブル(パイプライン前段の照合器50)へのフィードバックなので、ここでは専用経路による接続とした。エントリ22の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値BPの更新が確定した照合器50から双方リンクにより上位フィードバック(FB)を発行する。この際、待ち合わせ方式と同様に、上位FBとは並列に、下位テーブルへの辿り(新規テーブルの接続)はおこなっていく。
この双方向リンク方式においても、並列処理は下位への流れとバイパス値BP確定後の上位へのフィードバックの2並列である。また、上位フィードバックは完全な並列ではないがある程度、パイプライン並列化できる。フィードバックによるバイパス値BPを更新する時に、すぐに上位テーブルリンクを読み出して、バイパス値BPを更新する処理とは分岐して更に上位へのフィードバックを発行することができる。ただし、検索・検索バイパスとの関係で待ち行列数が増えるため、全体のパフォーマンスを検討した上で、上位フィードバックのパイプライン並列化の実装は検討すべきである。
照合装置においてエントリを登録する処理
図44に、双方向リンク方式でエントリを登録する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。ステップ120から132の処理は、待ち合わせ方式と共通するので説明を省略する。バイパス値BPの更新をおこなうのは、コマンド37が「ADDNEW」の場合と、コマンド37が「ADD」で新規エントリがMAXエントリの場合である。前者の場合は上位へのフィードバックは不要である。コマンド37が「ADD」から「ADDNEW」と切り替わる段のテーブルでフィードバック済のためである。したがって、ステップ140でコマンドをチェックし、後者の場合は、ステップ141で上位リンクを辿り、ステップ142で上位テーブルへ「ADDUPDTコマンドパケット」によるフィードバックを出力する。また、「ADDUPDTパケット」が得られると、ステップ143でマスクデータを読み込み、該当エントリがMAXエントリかどうかでバイパス値BPの更新を判断する。上位から下位への処理でエントリは登録済であり「ADDUPDT」を受け取った時点では常に既存エントリである。バイパス値BPの更新をおこなった場合、更に上位テーブルへのフィードバックをおこなう。最上位テーブルでは上位リンクがNULLであり、その場合、フィードバックは終了する。
待ち合わせ方式による削除処理
削除処理も更新処理であり、「排他を確認し、テーブルを占有する」状態でシリアル化されたツリーを構成するテーブルを、テーブル単位で逐次実行される処理である。検索処理との関係も上記と同様である。削除処理の場合、登録同様に下位から上位へ伝播するバイパス値BPの更新があり、この上位への遡りを登録同様に待ち合わせ管理機構でおこなうのが待ち合わせ方式による削除処理である。登録処理とは異なり削除処理の場合は上位から下位へのエントリ検索時点ではバイパス値BPの更新を確定できるケースはない。下位テーブルでエントリが0個になった場合にそのテーブルを開放し、上位へ通知し、上位テーブルのエントリを削除し、必要であればバイパス値BPを更新する処理の流れとなる。この処理は下位から上位へ伝播していく処理である。登録と比べるとバイパス値BPの更新は同じであるが、テーブル削除の上位伝播処理があるため、削除のほうが複雑になる。
図45に示すように、待ち合わせ方式では、コマンド37が削除「DEL」のときで上位から下位へ辿りながら各段で待機し、最下位から上位に向かってコマンド37を「DELUPDT」としてバイパス値BPを更新し、テーブルを削除した情報をフィードしていく。この基本的な流れは待ち合わせ方式の登録処理とほぼ同様である。削除処理の場合、下位でテーブルが空になり開放されると、上位でのエントリ削除とそれに伴うバイパス値BPの更新が発生する。たとえば、テーブルが空になると最終の照合装置50がパイプラインから切り離される。テーブルが空ではない場合は、下位でのバイパス値BPの更新情報を上位へ反映するだけでよい。テーブルが空になった場合、下位でのテーブル削除が上位でのエントリ削除につながり、上位でのエントリ削除の結果、バイパス値BPの更新のため新しいバイパス値BPを与えるエントリの下位への問い合わせするバイパス値問い合わせが発生する。自テーブル内の情報では新しいバイパス値BPを与えるエントリのバイパス値BPは得られないからである。このコマンドが「DELUPDT」のときの下位へのバイパス値問い合わせ(BP問い合わせ)は、登録処理にはなく、削除処理に特有の処理である。
下位へのBP問い合わせは以下の流れで行われる。ステップ151でエントリ削除にともなうバイパス値BPの更新の発生した段階で、下位ヘコマンド「DELRDBP」で問い合わせ、応答待ちのパケットを待機する。下位の照合器50では、コマンド「DELRDBP」を受けると自テーブルのバイパス値BPを読み出し、ステップ152で上位へコマンド「DELWRBP」を送ってフィードバックする。応答待ちとの間で発火し、コマンド「DELWRBP」の処理として問い合わせで得られた新しいバイパス値BPを書き込む。さらにステップ153で、バイパス値BPの更新情報を上位へコマンド「DELUPDT」でフィードバックする。
図46に、待ち合わせ方式でエントリを削除(コマンドが「DEL」)する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。ます、ステップ160で、入力パラメータTTAGで示されるテーブルをロードし、マスクデータ28aを読み込む。ステップ161で、マスクデータ28aと削除対象のエントリ(部分エントリ)をチェックし、対象のエントリが未登録ならステップ162でコマンド37を「DELERR」として削除結果を最終出力する。
ステップ163で次段のタグ情報を読み取り、ステップ164で自テーブルが最下段であるか否かを判断する。自テーブルが最下段ではなかった場合は、ステップ165で、下位からのフィードバック待ち合わせ用のパケット(ID,WID=1,TTAG(自テーブルTAG),KEY(自テーブルエントリKEY)を含む)を待機管理ユニット68に投入する。ステップ166で、次段の照合器50へコマンド「DEL」(ID,TTAG=NextTAG,KEY=SHIFTを含む)を出力する。
一方、自テーブルが最下段であった場合は、ステップ167で、エントリに対応するNextタグ、すなわち、結果タグを読み出し、削除結果として最終出力する。バイパス値BPの更新も含めた削除完了前に応答が戻るのがまずいようであれば、結果タグは上位フィードバックに載せてフローさせ、最上位まで戻りきったところで最終出力する。次に、ステップ168でエントリを削除する。テーブル28のマスクデータ28aのエントリを削除するだけでよい。エントリを削除した後のマスクデータ28aの積算(和集合)SUM−MASKが「0」ならばフラグCEFを1(テーブルが空エントリ)にセットし、SUM−MASKが「1」ならばフラグCEFを「0」(テーブルにまだエントリが残っている)にセットする。また、エントリ削除前のマスクデータ28aと、削除後のマスクデータ28aを比較し、フラグNBPを設定する。削除したエントリがバイパス値BPを与えるエントリであれば、フラグNBPを「1」すなわちBP更新有りにセットする。
ステップ169でフラグCEFが「1」であると判断すると、自テーブルが空エントリになるので、ステップ170で自テーブルを空きテーブル管理キュー69に返却し、パケットのフラグNBPとDTAGをDC(ドントケア)にセットする。
一方、フラグCEFが0の場合、ステップ171でフラグNBPをチェックし、ステップ172で、残ったエントリの中から新しいバイパス値BPを与えるエントリ(MAXエントリ)を選択し、ステップ173で、バイパス値BPを新しいBPエントリ対応するタグ情報(最終結果情報(結果タグ))に更新する。そして、パケットのフラグNBP(バイパス有効)を「1」にセットし、DTAGにバイパス値BP(新バイパスTAG値)をセットする。なお、ステップ171で自エントリがBPエントリでなかった場合、バイパス値BPの更新処理は不要である。そして、ステップ174で、コマンド「DELUPDT」により上位フィードバックの発火用パケットを出力する。
図47に、コマンド37が「DELUPDT」のときの照合装置50における更新ユニット60の処理を示してある。この処理は、コマンド「DEL」が上位から下位に流れたときに待ちに入った照合装置50が、最下段からのコマンド「DELUPDT」を受けたときに、それをトリガとして発火する。まず、ステップ180でテーブルをロードする。ステップ181で、下位からフィードバックされたフラグCEFが0ならば下位テーブルは消えていないので、自テーブルのエントリ削除は不要である。フラグCEFが「0」のときは、ステップ182で、下位からのフラグNBPをチェックし、下位テーブルのバイパス値BPが変更になっているときは、さらにステップ183で自テーブルのマスクデータ28aと削除対象のエントリに従い、自己のフラグNBPをセットする。そして、ステップ185において、自NBPが「1」、すなわち、自テーブルのエントリがBPエントリ(MAXエントリ)であれば、ステップ186でバイパス値BPを更新する。下位のフラグNBPが「0」であれば、ステップ184で自NBPも「0」にセットしてバイパス値BPの更新は行わない。そして、ステップ187で自段が最上位であるかチェックし、最上位でなければ、ステップ188で上位の待ちへフィードバックする。
一方、下位からのフィードバックされたフラグCEFが「1」ならば下位テーブルが消えたので、ステップ189で、自テーブルのエントリ削除をおこなう。フラグCEFが「1」のとき、下位テーブルが消えたのでNBPおよびDTAGはDCである。自テーブルのエントリ削除にともなうバイパス値BPを更新する。さらに、エントリ削除後に自テーブルが空(SUM−MASK=0)ならば、ステップ190でフラグCEFoutを「1」にセットし、ステップ191で自テーブルを開放し、ステップ192で最上位であるか確認後、ステップ193で上位の待ちへフィードバックする。ただし、自テーブルが最上位テーブル(ルートテーブル)である場合、テーブル削除はおこなわない。ルートテーブルは空でも削除しない。また、ルートに対して上位の待ちは存在しないためフィードバックは行われない。
エントリ削除後に自テーブルが空ではなかった場合、すなわちフラグCEFoutが「0」のときは、ステップ194で、新BPエントリ(MAXエントリ)を選択し、ステップ195および196で新BPエントリに対応する下位テーブルからのバイパス値BPの読み出しをおこなう。これは照合器パイプラインの都合により、次小照合器50によるバイパス値BP読み出しを待ち合わせ管理機構で待つ方式でおこなわれる。待機側は、待ち合わせパケット(ID,WID=2,TTAG,KEY)を投入し、下位への依頼側は、コマンド「DELRDBP」により発行する。MAXエントリでない場合は、ステップ197でルートであるか否かを確認し、ステップ198で上位へフィードバックする。
図48にコマンド「DELRDBP」と「DELWRBP」のときの処理を示してある。上位に対するコマンド「DELUPDT」からの指示で下位にコマンド「DELRBP」が送られてくる。コマンドが「DELRDBP」であれば、ステップ201でバイパス値BPを読み出し、ステップ202でDTAGにセットする。そして、上位はバイパス値BP読み出しを待っているので、上位の待機管理68に対して待ち合わせ発火用パケット(ID,CMD=DELWRBP,DTAG=BP,WID=2)を投入する。
自器のコマンド「DELUPDT」からの待機パケットと下位からのコマンド「DELRDBP」完了後のパケットにより発火するコマンド指示が「DELWRBP」である。下位からのDTAGにバイパス値BPが入っているので、ステップ203では、自テーブルを表すTTAGに従いDTAG値を書き込む。自テーブルにおいてバイパス値BPが確定したので、ステップ205で、コマンド「DELUPDT」による上位フィードバッグを再開する。ただし、コマンド「DELUPDT」と同様に、ステップ204でルートテーブルであるか否かをチェックし、ルートの場合は上位がないため、上位フィードバックはおこなわない。
双方向リンク方式による削除
この方式では、まず、コマンド「DEL」により上位から下位にエントリを完全一致型の検索で辿り、最下位まで降りていく点は変わりない。コマンド「DELUPDT」による最下位から上位へのバイパス値BPの更新、テーブル削除情報のフィードは双方向リストによるフィードでおこない、待ち合わせ方式のような待機機構は用いない。したがって、図45に示した待ち合わせ方式とほぼ同様のフローになるが、上位に対するコマンドは待機管理ユニットではなく照合装置50に供給される。
また、下位でのテーブル削除にともなう上位でのBP更新については、待ち合わせ方式の場合同様にコマンド「DELRDBP」および「DELWRBP」でおこなうが、この処理も待ち合わせではなく双方向リストによるフロー移動でおこなう。したがって、待ち合わせ方式であれば、自テーブルのKEY値(削除対象のエントリ)は待機パケットが保持していたため下位からのフィードバックはKEYを気にしなかったが、双方向リスト方式ではコマンド「DELUPDT」による上位フィードごとに該当段のKEYを再び使用できなければならない。従って、上位から下位へのコマンド「DEL」による移動でKEYを消費してしまう(消してしまう)のではなく、KEY値はSHIFTによる参照位置移動とし、コマンド「DELUPDT」のときには逆方向SHIFTで該当段KEY値を得られるようにしておく。つまり、KEY値は4ビット8段テーブルであれば、32(4×8)ビットのKEYフィールドを持ち、コマンド「DEL」では上位ビットから下位ビットへの参照位置移動、コマンド「DELUPDT」では下位ビットから上位ビットへの参照位置移動をおこなう。
したがって、コマンド「DELUPDT」のときは、双方向リストの上位リンクにより上位テーブルタグは得られる。前述のようにKEYは参照位置の移動により、常に該当段のキー値をアクセスできる構造である。コマンド「DELUPDT」のときの下位へのバイパス値BPの問い合わせの際も同様に、上位リンクによる上位テーブルタグの取得、KEY値の適切な参照位置移動がおこなえる。したがって、下位へのバイパス値の問い合わせは、双方向リンクを用いて待ち合わせ方式とほぼ同様に行われる。
図49に、双方向リンク方式でエントリを削除(コマンドが「DEL」)する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。待機管理ユニットを用いない方式なので、図46に示した制御系統図からステップ165が除かれた以外はほぼ同じ制御で処理は行われる。ステップ174で、コマンド「DELUPDT」で上位フィードパケットを出力する際、送出先のタグアドレスTTAGは上位リンクにより上位テーブルを指定し、エントリKEYは上位方向へ逆シフトし、テーブル段位置と整合させる。
図50に、コマンド37が「DELUPDT」のときの照合装置50における更新ユニット60の双方向リンク方式の処理を示してある。この処理においても、待機管理ユニットを用いない点を除けば、図47と同じ制御で処理は行われる。なお、フィードバックする際に、送出先のタグ情報TTAGは自テーブルの上位リンクにより上位テーブルを指定、エントリKEYは上位方向へ逆シフトしてテーブル段位置と整合させることは上記と同様である。
図51にコマンド「DELRDBP」と「DELWRBP」のときの双方向リンクによる処理を示してある。これらの処理においても、待機管理ユニットを用いない点を除けば、図48と同じ制御で処理は行われる。
上記のように、本発明においては、エントリの追加および削除に伴うテーブルの管理にソーティングや正規化などの処理が不要となるので、エントリの追加削除に伴う照合処理の遅延は従来に比べて非常に小さなものになる。範囲検索におけるエントリとルールの関係については、右倒れ近似および左倒れ近似の説明において詳述している。たとえば、既存エントリが[ai,無限大][bi+1,無限大]{iは複数}の時、新エントリ[a′,無限大][b′+1,無限大]を加えるとき(登録する前に)、[a′,無限大]のルールにはa′でヒットするエントリの(複数の)ルールを加え、[b′+1,無限大]のルールにはb′+1でヒットするエントリの(複数の)ルールを加える。既存エントリが[ai,無限大][bi+1,無限大]{iは複数}の時、[aj,無限大][bj+1,無限大]を削除するとき(削除した後で)[aj,bj]に含まれるエントリから該当ルールを除く。
データキャッシュ付き分類装置
図52に、データキャッシュ17を備えた分類装置15の概略構成を示してある。データキャッシュ17は、照合器パイプライン500を構成する各照合装置50とメモリであるSDRAM11の間に設置される。図53に示すように、本例のデータキャッシュ17は、Nウェイ・セット・アソシアティブ・キャッシュであり(Nウェイは2ウェイや4ウェイが一般的である)、キャッシュラインのサイズがSDRAM11のバースト転送サイズ、すなわち、照合テーブル28のサイズと一致するように構成されている。データキャッシュ17のキャッシュライン17aを1つのテーブルサイズとすることで、分類装置15におけるテーブルアクセスが効率的に行われる。
また、データキャッシュ内にライン単位のメモリ排他管理機構を導入することで、キャッシュメモリ上あるいはSDRAM上のテーブルデータの排他利用が可能となる。そのためには、キャッシュのラインサイズ、ライン数、セット数を適切に構成し、その構成に合わせてテーブルを割り当てれば良く、データキャッシュのヒット率を高めることができる。そして、キャッシュシステム17を採用することにより、汎用のSDRAM11を用いながらさらに高速な分類が可能となる。
図54に、データキャッシュ17を検索種別および照合段階で排他的に利用する例を示してある。本例のキャッシュシステムにおけるテーブル28のオンキャッシュ率を高めるために、照合テーブル28の各段(たとえば、テーブルA−1とA−2)を異なるキャッシュエントリに割り当てる。また異種の照合(たとえば、テーブルA群とテーブルB群)に対してもそれぞれ独立したキャッシュエントリを割り当てる。検索種別は、上流の制御ユニットあるいはアプリケーションから与えられるルートアドレス31により簡単に識別できる。また、照合段階は、パイプライン段数に相当するので、識別は容易である。そして、照合テーブルの新規登録においても、テーブルの確保が必要になった場合、テーブル段位置に対応するキャッシュエントリにマッピングされるSDRAM11のアドレスを持つ空きテーブルを割り当てていく。
また、照合テーブル28はツリー型テーブルの構造となるので、下位段でテーブル数が広がっていく。したがって、下位段テーブルには複数キャッシュエントリを割り当てておくことが望ましい。図54においては、Aタイプの照合用のテーブルAのグループとBタイプの照合用のテーブルBのグループがSDRAM11の上にある。Aタイプの照合処理の第1段テーブルA−1は0番目のキャッシュエントリにキャッシングされるアドレスに確保される。Bタイプの照合処理の第1段テーブルB−1も同様に0番目のエントリになるアドレスである。これらはキャッシュエントリが複数セットで多重化されているため、同時にオンキャッシュとなりうる。
同様にAタイプの照合処理の第2段テーブルA−1は1番目のキャッシュエントリ1、Bタイプの照合処理のB−2には2番目のキャッシュエントリが対応する。この場合、複数の照合がキャッシュエントリで多重化されず、それぞれ独立したキャッシュエントリが割り当てられている。キャッシュが4セットであれば、A−2であれば全16テーブルで1番目のキャッシュエントリの4セットを所有し、最新の4テーブルがオンキャッシュである。下位段、特に、最終段のテーブルA−8およびB−8は数が多くなるので、1段に対して複数エントリを割り当てることも有効である。
図55に、空テーブル管理キュー69が、メモリ11の上でテーブル28を管理する一例を示してある。検索種別毎にあるいはテーブル段毎にキャッシュエントリを分散配置させることでオンキャッシュ率を高める。そのためには、テーブル28を管理する側、すなわち管理キュー69が分類装置50のテーブル確保要求に応じて適切なテーブルを割り当てる必要がある。空きテーブルキュー69は空きテーブルを検索種別(レイヤー1)とそれに含まれるテーブル段位置(レイヤー2)の2階層に分類した個別キューで管理する。分類装置15の初期化時に、キャッシュエントリ毎にテーブル28をグループ化し、更にROM等に設定された(あるいは外部からコンフィグレーションとして与えられる)、(検索種別数×テーブル段数分の)空きテーブル個別キューとキャッシュエントリの対応に従い、テーブルをキューにつないでいく。
図56に空きテーブルキュー管理機構69の応答を示してある。空きテーブルキュー管理機構69は、検索テーブルツリーへのエントリ登録時に照合装置50から与えられるテーブル確保要求(ステップ211)に応じて、空きテーブルを取り出し応答する。この際、検索種別とテーブル段位置が必要となるため、要求情報としてそれらを要求パケットに持たせることとする。管理機構69は、要求情報の検索種別(レイヤー1)・テーブル段位置(レイヤー2)に対応するキューから空きテーブルを1個取り出し(ステップ212)、応答としてそのアドレス(タグ情報)を照合装置50に返す(ステップ213)。
図15に示したメモリ共有型の分類装置15において、SDRAM11と照合装置50の間にデータキャッシュ17がある場合、データキャッシュ17の一つがミスヒットするとデータキャッシュ17およびSDRAM11はこのアクセスに占有されて他のアクセスは待たされる。図16に示したメモリ分離型の分類装置15において、SDRAM11と照合装置50の間にデータキャッシュ17がある場合も、同様に、照合装置50、データキャッシュ17およびSDRAM11はこのアクセスに占有される。これらはデータキャッシュ17とSDRAM11が同期的(シリーズ)に接続しているためである。そのため、1つ遅れると、その遅れは後段に影響する。パイプラインの効率を上げるには、全てのステージにかかる時間を同一にしてやらねばならない。しかしながら、SDRAMアクセスが入ると難しい。
これに対し、要求応答方式のデータキャッシュ17を採用することができる。すなわち、検索対象キー21に対して入力順に照合結果が出力されるというパケット順序の維持はバックトラックが発生することを前提とした段階で不可能である。このため、識別情報(ID)32を導入することにより順序の問題はクリアしている。したがって、ある検索対象キー21の照合のためにテーブル28が要求されたときに、オンキャッシュでなければ照合装置50にその旨を通知する。照合装置50は、処理を中断し、待ち行列に戻し、次の検索対象キー21のパケット33を入れる。データキャッシュ17はSDRAM11へアクセスする。一方、照合装置50からテーブル28を要求されたときに、オンキャッシュならば照合装置50にテーブル28を渡し、照合装置50が処理を進める。さらに、照合装置50において、照合タグ情報34を先読みしてキャッシュシステム17に渡し、必要なテーブル28をプリロードするシステムは有効である。さらに、照合装置50が照合のためにテーブル28をバッファ59にロードした時点で、次の照合タグ34を入れてオンキャッシュを確認することも有効である。
このように、本例のキャッシュシステム17においては、検索種別および照合段階という要素でキャッシュラインの排他性を高めてオンキャッシュ率を高めている。従来のCPUでのデータキャッシュにおいては、キャッシュラインサイズをテーブルサイズに一致させるという発想はリニアアドレス空間を否定するので従来のキャッシュシステムからは得られないものである。さらに、照合テーブル各段を異なるキャッシュエントリに割り当てるという発想も、論理アドレス(のインデクス部分)とテーブルの割付決定を実行時に行うことであり、OSの元ではCPUで実行することは極めて難しい。CPUでは論理アドレスとテーブルの範囲割付決定をコンパイル時に行い、実行時には決められた範囲内から1テーブル分を確保するだけである。この実行時メモリ割付支援機構が認識するのは先頭論理アドレスとサイズである。動的メモリ割付は確保、開放を繰り返すとメモリに隙間を生じ、これをガベージコレクタで整理するというのが前提であった。従い、インデクス部分の衝突を避けて、キャッシュ効率を上げる仕組みを入れ込めなかった。
これに対して、ここで説明している照合方法および照合装置においては、テーブルビット長を固定化(上記の例では4ビット)することによってテーブルを標準化した。このため、テーブルサイズとキャッシュラインサイズとを一致させることが可能になった。そして、キャッシュメモリ17やSDRAM11に対して検索種別および照合段階で排他的なエリアを割り付けたとしても、テーブル同士は照合タグ情報によりリストでつながれている。このため、エントリの(実行時の)削除、登録に対応することができ、オンキャッシュ率を高めるために排他的な領域設定をすることが他の処理において障害となっていない。
履歴キャッシュ付き分類装置
図57に、履歴キャッシュ18を備えた分類装置15の概略構成を示してある。照合装置50の前に履歴キャッシュ18をおくことで、検索処理をさらに高速化でき、検索処理の遅延時間を短縮できる。説明してきたように、本発明の照合方法および照合装置、さらに、分類装置および検索装置は、簡易なハードウェアでビット長の増加にも対応でき、照合速度も早く、さらに、汎用メモリを利用して十分な処理速度が得られるといった多くのメリットがある。しかしながら、複数の照合装置をパイプライン状に接続するか、あるいは照合装置を繰り返して使用することにより照合結果を導く。このため、同一の検索対象ビットストリングが高頻度で表れるようなジョブにおいては、CAMあるいはTCAMと比べたときにレイテンシがあるという差がある。したがって、レイテンシが重要となる検索においては、履歴キャッシュ18を用いるメリットがある。
図57に示した履歴キャッシュシステム18は、SDRAM共用型履歴キャッシュシステムであり、照合テーブル28の置かれるSDRAM11を共用する構成である。図58に示すように、キャッシングアルゴリズムとして「8ビット化ハッシュ+LRU」を使用することができる。そのため、本例のキャッシュシステム18は、ハッシュテーブル検索器18aと、ハッシュ用のキー一括比較器18bとを備えている。ハッシュテーブル18cは照合装置50と同様に4ビット(16エントリ)×2段のツリー構造で構成し、照合装置50と履歴キャッシュ18の間でデータキャッシュ利用方法の整合性を取るようにしている。
履歴SRAMキャッシュ付き分類装置
図59に、履歴キャッシュ専用のSRAM13を備えた分類装置15の概略構成を示してある。履歴キャッシュ18のメモリを専用化した構成であり、テーブル28を記憶したSDRAM11と分離することにより、照合装置50との競合を防止して照合速度の向上を図る。それと共に、ZBL−RAMやZBT−RAM等の応答性のよい低遅延SRAMを、履歴キャッシュ用に占有し、履歴キャッシュ18の性能を向上する。キャッシングアルゴリズムは「8ビット化ハッシュ+LRU」を使用できるが、共用型の場合は照合テーブルとの整合性のあるメモリブロック構成が望ましかったのに対し、図60に示すように、専用SRAM型の場合は、メモリビット幅やエントリの構成を履歴キャッシュに合わせて最適化することができる。
論理演算装置(AND化器)の構成
上述した検索装置10あるいは分類装置15は論理演算装置(AND化器)19を備えている。この分類装置15は、汎用型なので、ルートタグ31により検索種別を上流の制御装置あるいはアプリケーションによって設定することができる。したがって、1つまたは複数の分類装置15による検索種別の異なる検索結果(1次元範囲の検索結果)を複数用いて、AND化器19で論理積を演算する。ことにより、多次元範囲の検索を行うことができる。本例のAND化器19においては、1次元範囲の検索結果を集合として取り扱い、行列演算により多次元範囲の検索結果を単純な操作で得られるようにしている。
その一例がSPD検索機能8である。1つのパケットデータφpを管理するために、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する際に、それらを示すビットストリングを検索対象のビットストリングとして、それぞれ異なる分類装置15において照合する。それぞれの分類装置15により得られる複数の分類結果は、範囲検索により複数のルールが含まれたものとなり、それらの分類結果をAND化器19において論理積を演算することにより、パケットデータφpを管理するルールを抽出することができる。
まず、集合Aが要素{A1,A2,・・・,An}で構成されるとする。要素Aiがバイナリ(0/1)のmbit列“ai1,ai2,・・・,aim”で表せるとする。同様に集合Bが要素{B1,B2,・・・,Bn}で構成されるとする。要素Biがバイナリ(0/1)のmbit列“b1i,b2i,・・・,bmi”で表せるとする。
このとき、集合A、Bの積(AND)集合A&Bは、行列におけるA、Bの積「A×B」で表せる。詳しい演算式は、以下の通りである。
ここで、Σ内はブール乗算(*)とブール加算(+)に展開される。ブール乗算・ブール加算の定義は、ブール乗算「*」はENOR(Exclusive NOR、非排他論理和)、ブール加算「+」はANDである。ブール加算は、(1+1=1 1+0=0 0+1=0 0+0=0)である。また、ブール乗算は、(1*1=1 1*0=0 0*1=0 0*0=1)である。ENORは比較回路の「=」のロジックと同じであるので、Ai*Bjは比較等号回路を「AND」で結んだものだと理解してもかまわない。行列で理解したほうが見通しは良い。
図61に、集合Aが2要素、集合Bが3要素、さらに各要素が3ビットで現れる例を具体的に示してある。左辺行列Aは集合Aの要素A1,A2が各行に並べられている。また、行列Bは集合Bの要素B1,B2,B3が各列に並べられている。右辺行列Zの1行1列は「a11*b11+a12*b21+a13*b31」であり、「A1×B1」である。これはAND化器19におけるブール演算の定義により、A1とB1のビット比較結果(1=一致/0=不一致)を意味する。同様に行列Zを列方向で見ると、1列目は「A1とB1の比較結果」と「A2とB1の比較結果」になっている。同様に行列Z2列目は「A1とB2」と「A2とB2」の比較結果である。つまり、行列Zの各列は行列A全体(集合A)と行列Bを構成する各列(集合B要素Bi)の比較結果である。
したがって、行列演算の結果、例えば、右辺行列Zが図62に示すようになっていれば、左辺行列Xの{a11 a12 a13}行(集合要素A1)が集合Aと集合Bの積集合A&Bである。つまり、行列Zの各行において行内に1つでも1が立つ行に対応する行列Xの行が積集合である。ここで「1つでも1が立つ行」を言い換えれば、行列Zの各行において行内の値の論理和ORを取った結果が1となる行に対応する行列Aの行が積集合である。
したがって、行列Aに対して、論理積を求める要素を掛け算し、1つでも1が立つ行が残れば、それらの要素の積集合が得られたことになる。図63にLSI化を念頭に行列演算を一般化したものを示してある。左辺の行列Xは行毎に集合Aの要素A1,A2,・・・である。左辺の行列Yは列毎に集合Bの要素B1,B2,・・・に加え、集合Cの要素Ci,・・・で構成される。列の数は限定されない。行列Zを列毎にみると、行列X全体と行列Yのある1列との演算となっている。行列Zは最終的には行毎に行内で論理和ORが演算され、A*B*C*・・・の積集合要素が決定される。従って、行列Zはその値全体を保持しておく必要はなく、列毎にブール行列演算した上で、累積結果としてOR演算していけばよい。
図64に、AND化器19のハードウェア構成の一例を示してある。AND化器19は、複数のブール行列演算レジスタ19aを有しており、集合Aの各要素が各レジスタ19aにセットされる。さらに、各々のレジスタ19aに対応して、レジスタ19aの演算結果の累積論理和(OR)を演算して結果を蓄積するアキュムレータ19bを備えている。各アキュムレータ19bは「0」に初期化される。このAND化器19に対し、入力要素19inとして、集合Bの要素Bi、集合Cの要素Ciなどの各列を順次に投入すると、入力列毎に以下の演算処理がおこなわれる。まず、ブール行列演算レジスタ19aと入力列による、ブール行列演算An×Yi(ENOR演算、AND演算となる)が行われる。次に、ブール行列演算の結果とアキュムレータ値によるOR演算が行われる。そして、OR演算の結果によりアキュムレータ19bの値が更新され、最終入力後にアキュムレータ19bに1が残る行に対応する集合Aの要素群が集合A,B,C,…の積(AND)集合、すなわち、A&B&C&‥である。
ブール行列演算はENOR論理によるビット比較をAND論理で繋いだものであり、回路的に見れば、各ブール行列演算レジスタはレジスタ値Anと入力値Yiとのmビット完全一致比較結果を出力し、その比較結果をアキュムレータで累積ORしていることになる。ブール行列演算レジスタの数やビット長にもよるが、ENOR論理およびAND論理を組み合わせて回路を作る事は極めて簡単である。そして、入力値1個とレジスタ値複数個が一度に比較できるので、レジスタ数分の並列性がある。したがって、本例のAND化器19は、単純な構成でありながら、短時間で多次元範囲検索の結果を導出することができる。あるいは、並列レジスタがコスト高という場合は、レジスタを1個あるいは数を減らして、レジスタ値はメモリにし、入力値に対して1行分ずつ繰り返しブール行列演算することによっても本例のAND化器19は実現できる。
レジスタ値をメモリに展開することにより、メモリの許す限り、ルールを入れることができるというメリットがある。このため、多数のルールあるいは要素を有する集合から論理積により要素を絞り込むのに適している。ただし、繰り返し処理でありメモリリードもあるため、処理時間は長くなる。ブール行列演算処理とメモリリードをパイプライン化することは可能であり、この構成によりメモリリード処理時間を隠蔽することも可能である。
さらに、AND化器19は内部にアキュムレータ19bを持ち、またレジスタ19aに最初の集合の要素を保持する構造である。このため、複数の多次元範囲検索の並列実行を考えるとそれらは共有資源である。したがって、何らかの資源排他占有が求められる。一方、分類装置15においては、複数検索の各次元の検索が並列におこなわれえるため、例えば、検索系S1,S2の各次元A,Bについて、分類器からの出力はS1A,S2B,S2A,S1Bのように検索系も同検索内の次元も順序性のない出力となりうる。先に分類装置15から出力された検索系がAND化器19を占有利用する方式でも、先に分類装置15からの全次元出力がそろった検索系が占有利用する方式でも、いずれにせよ分類装置15の出力が非同期・無順序であるため、AND化器19の利用率および多次元範囲検索としてのスループットを高効率でおこなうためには、AND化器19も並列化することが望ましい。AND化器19のレジスタおよびアキュムレータをメモリ化した場合は、メモリ上での並列化でも効果が得られる。
また、AND化器19の動作を考えたとき、初期設定「BEGIN(レジスタ設定・アキュムレータ初期化)」と終了処理「END(アキュムレータからの読み出し)」が必要であり、同系内でも分類器入力と出力の間での順序性がない。このため、次元Aだから初期設定処理、次元Bだから終了処理というように操作は固定的に決定できない。分類装置15からの出力を検索系ごとにキューイングし、全次元の分類器出力が完了したのち、明示的に初期設定と終了処理をコントロールする方式となる。結局、これらの制御もあるので、分類装置からの出力がそろった検索系がAND化器19を排他占有する制御方式が望ましいといえる。
AND化器19の並列利用のためには、速度を要求されるならAND化器19そのものを複数用意することで対応できる。次善策としては、レジスタ19aおよびアキュムレータ19bのメモリ保存によるメモリ上での並列化をおこなうことで対応できる。さらに、履歴キャッシュ18を導入している場合、多次元範囲検索における履歴キャッシュ18の使い方を工夫することで、AND化器19の使用率を下げることができ、AND化器19を並列利用しなくても十分な処理速度を維持することも可能である。例えば、32ビット5次元の多次元範囲検索であれば、160ビット(32ビット×5)のキーによる履歴キャッシュ18を採用し、履歴キャッシュ18のエントリデータとして、初回検索時にAND化器19を使って演算した5次元の積集合結果を登録する。つまり、履歴キャッシュ18には分類装置15の最長一致検索の履歴、完全一致検索の履歴、1次元範囲一致検索の履歴をエントリデータとして登録することも可能である。しかしながら、多次元範囲検索の場合は、各次元個別の履歴ではなく、全体としての多次元範囲検索の履歴をエントリデータとして取り扱うことによりAND化器19による処理がクリティカルパスになることを抑制できる。
上記に、幾つかの例を示しながら本発明について詳しく説明しているが、上記の例に本発明が限定されるものではない。
省略テーブル
以下では、照合テーブル28の数をさらに削減する方法を説明する。照合装置50を用いた検索においてはエントリビット列を4ビットずつの部分エントリに分割してテーブル化し、テーブル化ビットツリーにより登録し、検索していく。この方法では、ある段以降が1エントリしか存在しなくてもテーブルを生成し、検索においてもテーブルを辿る必要がある。これを改善し、ある段以降が1エントリであれば下位テーブルを省略するテーブル構造を導入することが可能である。
図65に下位テーブルを省略する例を示してある。テーブルBは本来のテーブル構成では「B−C−D」となる1エントリが存在するが、下位が1エントリであるため「C−D」を省略し、その代わりにテーブルBに省略情報(エントリの省略した下位ビット列、省略段数、省略マークなど)を記録しておく。テーブルEでは直接の下位接続はテーブルFの1個であるが、エントリとしては孫テーブルで分岐したGおよびHの2エントリ以上が存在するため、省略はされない。
テーブルBの下位に収容される2エントリ目の登録時に、省略された下位テーブルは展開(生成)される。上図では「B−C−X」と繋がるべきエントリXの登録が行われる際、テーブルBにて下位テーブルの省略情報を検出し、第一エントリに相当するテーブルCおよびテーブルDの生成し、第二エントリに相当するテーブルXの生成をおこなう。
ここで、第一エントリのテーブル生成と第二エントリのテーブル生成はシリーズにおこなうのではなく、テーブルBの次の段は同ビット列なので共通テーブルCを生成するという方法もある。テーブルCの次では異なるビット列なので分岐しテーブルDおよびテーブルXを生成するというように、2エントリが分岐する段までは統合的にエントリを生成することができる。したがって、エントリを登録する処理時間を短縮できる。
また、分岐の次段では再度それぞれの下位が1エントリになる。このため、そこで省略テーブル形式でテーブル生成することになる。例えば、上図においてテーブルDおよびテーブルXが最下段ではなく、さらに下位に延びているのであれば、テーブルCで分岐した次のテーブルDおよびテーブルXはその下位にそれぞれ1エントリしか存在しない。このため、下位テーブルは省略される。省略テーブル形式で生成されると、検索時は照合装置50がテーブル28の省略マークを見て、そのテーブル下位が省略されていることを検出する。したがって、照合装置50は、次段のテーブルを読み出さずに最終照合結果を得ることができるので、照合時間も短縮できる。
圧縮テーブル(照合テーブル)28が省略テーブルの場合には、4ビット×n段分のエントリ省略ビット列が記録される。したがって、照合装置50では、エントリビットをシフト読み出ししながら検索モードに応じた照合を行うことが可能となる。1エントリに対する完全一致・近似一致の照合であれば、上述した照合器50の比較部52を使う代わりに、専用化した比較器を実装したほうが効率的な場合がある。また、専用比較器を使用するのであれば、4ビット比較×n回でおこなう必要はなく、リソースのバランスを見た上で多ビットの比較器とすることが望ましい。
省略テーブルでは検索対象キー21と1エントリとの比較であるため、完全一致検索であれば完全一致照合、範囲検索であれば、大・同・小が判定できる比較照合が可能な比較器でよい。また、比較後のエントリ選択処理は不要であり、比較結果から検索結果を判定するだけである。完全一致であれば比較で一致なら検索成功、不一致なら検索失敗である。範囲一致であれば比較で大または一致であれば(右倒れ型)検索は成功、左倒れ型の場合も同様に比較が小または一致なら検索成功である。
削除については、削除の結果、1エントリとなる部分を検出し、その下位からエントリビット列を集約し再度の省略テーブル化を行わなければならない。テーブル管理の処理時間は増加する可能性がある。しかしながら、上述したように、照合時間を短縮できるので、メリットは大きい。各段のテーブル28に収容エントリ数カウンタを設け、上位から下位へ削除エントリを辿る際にカウンタを減算し、1エントリのみとなるテーブル位置を検出する。そのテーブルを省略テーブルに変更し、その下位の省略対象エントリのテーブル列を辿り、最下段から上位へと省略ビット列(=エントリNo)を合成しながら上位へと上げていき、省略テーブルに集約して省略ビット列として記録するという方法がある。削除によるテーブル再省略化は、上述した更新処理よりも複雑でありテーブルアクセスも増える(時間がかかる)。従って、登録時のみ省略・展開をおこない、削除では再省略化をおこなわない方式もありうる。検索頻度と登録・削除頻度とのバランスで、登録削除が一定以上多い場合、展開・省略の繰り返し、すなわち、テーブル確保・開放の繰り返しとなり、分類器全体の性能低下を招く可能性もある。
照合装置のパイプライン化
図66に、要求応答方式のメモリアクセスと照合装置の内部のパイプライン化の概要について示している。上記においても説明したが、照合装置50においてはマスクデータ28aの読み出しがボトルネックの1つである。マスクデータ28aがなければ、判定ユニット54から下流の処理(VLDからSELおよび出力ユニット55における処理)が実行できず、マスクデータ28aの読み出しと並列に実行できるのは主に比較ユニット52の処理だけである。従って、照合器50の内部処理もパイプライン構成とし、テーブルロード(マスク読み出し)フェーズにてキャッシュ(SDRAM)へメモリリード要求を出し、応答のあったものからVLD以降の処理をおこなうことが考えられる。そのために、VLDステージの前に待ち行列57があり、そこで応答の待ち合わせがおこなわれる。
図66に示した例では、メモリ要求〜応答の間にCMPステージ52を入れているため、待ち行列57に待ち合わせ機構が必要となる。データキャッシュなしの場合は、メモリアクセスはFIFOであり待ち行列57もFIFOによる待ち合わせでよいが、データキャッシュがあった場合、ヒット・ミスヒットにより順序性がなくなり、CAM等のFIFO型よりは高度な待ち合わせ機構が必要となる。データキャッシュなしの場合でも、メモリアクセスをともなわないモード(スルーなど)があるので、やはり単純なFIFO待ち合わせ型の行列では無理がある可能性がある。メモリアクセスを伴わない場合も、ダミーのアクセス要求を出してダミー応答を戻させ、応答数とFIFO待ち数を整合させればFIFO型で対応できる可能がある。
図67に異なる照合装置50の例を示してある。この例では、メモリアクセスを伴うものとそうではないものを分岐させ、メモリアクセスを伴うものは非順序の応答をVLD直前の合流待ち行列57に戻す。一方、メモリアクセスを伴わないものは、待ち行列57の前のステージ57pで必要な処理があればおこない、合流待ち行列57に入る。この場合、合流待ち行列57は単なる2方向からの合流のみであり待ち合わせは不要となる。この構成では、待ち合わせ機構を不要とするため、メモリアクセスとCMP処理52の(空間的な)並列化はなされないが、照合装置50の内部のパイプラインにより時間的な並列化には有効である。
マスクデータのプリフェッチ
図68に、マスクデータを先読み対応可能なテーブル化によるメモリアクセスストールを解消する例について示してある。マスクデータの読み出しに係るボトルネックを解消するためにテーブル28の構成を変更する。図68(a)に示すテーブル28は、そのテーブルのエントリ有無を示す情報としてマスクデータ28aがあり、次テーブルのアドレスを示すアドレステーブルを示すNextTAG×16エントリで構成されている。図68(b)に示す第1型の改良型テーブル281は次段のアドレス「NextTAG×16エントリ」28bの次に、次段のマスクデータ「NextMask×16エントリ」28pを配置したテーブル構成となっている。また、図68(c)に示す第2型の改良型テーブル282は、次段のマスクデータ「NextTAG」28bと次段のマスクデータ「NextMask」28pのペアが16エントリ登録されているテーブル構成である。いずれも、次段の照合テーブル28のアドレスだけではなく、マスクデータ28aも備えているので、次段のマスクデータ28aをプリフェッチすることができる。
ただし、改良型のテーブル281および282においても、テーブル管理や検索以外での利用のため、次段のマスクデータ「NextMask」と同じ値が、次段のアドレス「NextTAG」の指すテーブル28bに記録されていることが望ましい。したがって、あるテーブルにはそのテーブル自身のマスクデータと、次段のマスクデータの2種のマスクデータが存在することが望ましい。テーブル下位からエントリを辿っていく場合に、上位のテーブルにしかマスクデータがない場合、そのテーブルだけでは隣接エントリへの移動が不可能になってしまうからである。
次段のマスクデータをプリフェッチする構成にするのに伴い、照合装置50の間をフローする照合継続情報のデータパケット33にマスクデータ28aを追加する。この改良により、照合装置50の処理においては、入力パラメータ(照合継続情報)33としてその照合装置50で使用する照合テーブルのマスクデータ28aが与えられる。このため、マスクデータ28aを必要とする判定ユニット54から下流の処理と、ロードユニット53の処理とを並列に実行することが可能となる。
マスクデータ28aをリードすることに起因するストールを解消するという点では、分類装置15あるいは照合装置50に内部SRAMを設け、各テーブルのマスクデータ28を照合装置50の内部に配置することで並列度を向上することも可能である。
以上に説明した照合方法および照合装置は、IPヘッダのようなビットストリングを一致検索したり、範囲検索してルーティングするデータ管理方法を実現するのに好適である。すなわち、照合装置50、および照合装置50を備えた分類装置15は、データ管理装置1の検索機構10、8s、7sおよび6sとして好適なものである。しかしながら、本発明の照合方法および照合装置の適用範囲は、これらに限定されるものではない。
MIN検索・MAX検索
複数の照合装置50を備えた分類器15を様々に応用する場合、MIN検索・MAX検索があると便利である。バイパスをMAXバイパスとしていた場合に、検索対象キー{11・・・11}で右倒れ近似検索をおこなうことで、登録エントリの中からMAXエントリを検索することはできる。だが、MINエントリは検索できない。従って、この場合、MIN検索モードで検索することでMINエントリを取り出すことになる。ソートなどのように検索ではなく、登録&取り出しの処理において、分類器15を利用できる場面がある。このとき、MIN検索およびMAX検索の両方を備えていることはメリットがある。
照合器50において、比較ユニット52の処理を省略し、判定ユニット54からなる検索モードが実行できるようにすることも有効である。たとえば、比較ユニット52のCMPiからは常に「=」(01)が出力されるようにする。あるいはMIN検索・MAX検索モードになったときには、比較ユニット52をスルーして判定ユニット54のVLD54aに「01」が入力される回路としても良い。
この検索モードにおいては、VLD54aにより有効エントリのみ「01」となり、SEL部54bにて、MAX検索モードであれば比較結果が「01」のエントリの中から最もエントリNoの大きなエントリが選択される。また、MIN検索モードであれば最もエントリNoの小さいエントリが選択される。右倒れ・左倒れのGl・Gr関連部でエントリ選択論理を「>(11)・<(10)」から「=(01)」に変更することにより実現できる。テーブル乗り移り処理であるタグ更新部55bは完全一致検索モードに準じ、出力Sr・Slで指定されたエントリNoを次テーブルとした照合タグ情報34の更新をおこなう。以上により、各段のテーブルで最小エントリ・最大エントリを辿っていくMIN検索・MAX検索機能を提供できる。
次に、分類装置15をソートへ適用する場合、ソート後のデータ読み出しのための拡張が必要となる。昇順先頭読み出し・降順先頭読み出しはMIN検索・MAX検索で可能である。従って、昇順次読み出し・降順次読み出しのためのコマンドが必要となる。これを実現するためには、テーブルは双方向リンク型テーブルとする。また、昇順先頭読み出し(MIN検索あるいは{0・・・0}近似検索)・降順先頭読み出し(MAX検索あるいは{1・・・1})の出力パラメータとして、最下段テーブルのTAG+エントリNoを読み出しハンドラとして出力する。
さらに、コマンド「NEXT・PREV」を設け、読み出しハンドラ(最下段テーブルTAG+エントリNo)を入力パラメータとして受け取ると、次エントリの結果TAGと共に更新した読み出しハンドラ(最下段テーブルTAG+エントリNo)を出力する。照合器50の内部では、まず照合TAG(読み出しハンドラの最下段テーブルTAG)34に従い、テーブル28よりマスクデータ28aを読み出す。読み出しハンドラのエントリNoに基づき、次エントリNo(前エントリNo)を算出し、テーブル28から対応するエントリのアドレス「NextTAG」(最下段なので結果TAG)を読み出す。もし、次エントリNo(前エントリNo)が別のテーブルになる場合は、双方向リンクの上位リンクを使い1段上位テーブルに遡り、そこで隣接エントリに移る。1段上位にも自エントリしかなかった場合は更に上位に遡っていく。上位テーブルで隣接エントリに移ったら再び最下段まで降りなければいけないが、これはMIN検索・MAX検索モードによりおこなう。
データベース検索
この分類装置15は、リレーショナルデータベース(RDB)にも適用できる。バイナリビットツリーによる検索はデータベースではインデクスに相当する。したがって、複数のフィールドをバイナリビットツリー登録しておけば、これらをキーとしてデータベースを検索できる。検索の種類は最長一致でも、範囲一致でも、完全一致でも対応できる。この処理では、複数のフィールドを検索後のAND処理(積集合をとる処理)を高速で行うことが望ましい。つまり「A0<身長<A1」と「B0<体重<B1」を別々に検索できたときに、「A0<身長<A1」かつ「B0<体重<B1」の集合を高速に得られることが望ましい。予めフィールドが固定的に決定されているならば、そのフィールド群による複合(多次元)インデクスを生成しておくのが一般的である。対象フィールドが固定的に決定できず、複合インデクス(身長と体重の2次元インデクス)が生成できない場合、「CPU+OS」の検索システムではおそらく次の方法で論理積を演算する。すなわち、レコード名をRiとすれば、「A0<身長<A1」の集合{R1,・・・Rm}(個数はm個)と、「B0<体重<B1」の集合{R′1,・・・R′m}(個数はm′個)を求め、二つの集合のメンバを総当りで比較し両方に属するメンバを残す。これがAND集合になる。この場合、比較計算はm×m′回になる。
これに対し、分類装置を用いると、次のような操作が可能である。集合{R1、・・・Rm}を分類器15に登録し、集合{R′1,・・・R′m}を照合した時、前の集合で登録したメンバにヒットすればこれがAND集合のメンバになる。この場合、比較計算はm+m′回になり、処理速度が向上する。
この分類装置は、積集合(AND集合)だけでなく、和集合(OR集合)の演算も、ユニーク化も、また、ソートも簡単にできる。「CPU+OS」の検索システムで、データベースにテンポラリーな印をつけて良いならば、次の方法で論理積(AND)を演算できる。集合{R1,・・・Rm}の各メンバを検索の都度、印をつける。{R′1,・・・R′m}の各メンバを検索の都度、前の印があるものをあげる。この場合、比較計算はm+m′回になるが、不要な印の処理やディスク本体のデータベースへのアクセスなどの問題が起こり、時間がかかりすぎる。ビットマップ法は高速に論理積(AND化)できるがルール数に制約があるなど汎用化は難しい。
これに対し、上述した分類装置によるAND集合をとる方法は、パケットフィルタリング等の複数ルール集合のAND集合化にも使える。本分類器15では、例えば、5つのID(5種類のビットストリームに対する検索)に対応する5つのインスタンスを並列に動かし、ID毎にヒットするルールに印をつけていく。既に4つの印を確認したインスタンスはこれをANDインスタンスへ通知する。ANDインスタンスは通知される都度、今の最優先ルールと比較し、更新する。5つのインスタンスが全て終了した後、今の最優先ルールに決定する。
非リニアメモリアドレッシング
本発明の分類装置により、ツリー構造型の非リニアメモリアドレッシングの実現も可能となる。アドレスを検索対象のキーとし、本発明の分類器をメモリ管理機構に取り込むことで、上位層からみて柔軟なアドレッシングが行えるメモリ空間が実現できる。これは従来のリニアアドレス空間メモリに対し、上位層が明示的に構造化管理を行っていた部分をメモリ管理機構が隠蔽カプセル化し、メモリを抽象化オブジェクト化することに他ならない。
さらに、従来、CPUのコードでおこなっていたメモリのオブジェクト化アプローチとは異なり、ハードウェアベースのアプローチとなる。したがって、高速および効率的に、オブジェクト化を実現できる。特に、検索のためのメモリ利用の場合、分類器によるアドレッシング(=照合)が効果的に利用できる。
図69に、その一例を示してある。受信時、インターフェイス(I/F)230を経由してリニアアドレス(論理アドレス)の書き込みデータ(受信データ)239を受け付ける。分類器15は、受信データ239をSDRAMメモリ11へ書き込む。分類器15は、アドレス変換機能232を持っているので、論理アドレス(リニアアドレス)から実アドレス(リストやツリーなど何らかの構造をもった非リニアアドレス)へ変換し、SDRAM11に書き込む。一方、I/F230を介してデータを送信している方は、リニアアドレスで書き込むことができる。送信時も同様である。I/F230からリニアアドレスで読み出すときに、分類器15を経由することで、アドレス変換をおこなう。これにより、リニアアドレスから実アドレスへ変換し、非リニアなアドレスからの連続読み出しに対応できる。
CPU235も分類器15によるアドレッシングを利用できる。CPU235はデータフロー動作ではないため、分類器15が提供するアドレッシング配下のメモリ11だけではコード実行等に支障がある。従って、コード蓄積やデータ加工用として独自にメモリ236を持ち、分類器15の配下のメモリ11はパケットメモリとして利用する。ルータ等を考えた場合、CPU235は分類器15によるTCP/IP処理を補助するものとして、ルーティングエントリ管理やフィルタリングルール管理などのハードウェア処理ではカバーできない処理を肩代わりする。つまり、分類器15がメイン機能を担当し、CPUはサブとして動作する。
テーブルルックアップ駆動プロセッサ
分類装置15は、状態遷移によるテーブルルックアップ駆動のプロセッサにも適用可能である。図70は単純状態遷移を示しており、KEY(i)を検索し、その結果TAG(ルール)でKEY(i+1)を読み取れるようにしておけば、「KEY(1)−KEY(2)−・・・−KEY(j)−KEY(1)」のような単純ループ型の状態遷移ができる。
図71は、イベント連動型単純状態遷移を示しており、イベント(i)がトリガとなってKEY(i+1)に遷移し、イベント(i)以外でKEY(i)に戻る。KEY(i)はイベント(i)待ち行列でイベント(i)を待つ。イベント(i)が来たらKEY(i)にイベント(i)を直列につないで検索する。イベント(i)は1ビットで、正が{1}、誤が{0}としKEY(i)を「101・・・01」とすれば「101・・・011」でヒットし、「101…010」でミスヒットとなる。ヒットルールにはイベント(i+1)待ち行列アドレス、KEY(i+1)が書き込んである。ミスヒットルールにはイベント(i)待ち行列アドレス、KEY(i)が書き込んであり、戻ることになる。さらに、本発明の分類装置は、条件分岐を含む状態遷移にも適用可能である。
さらに詳しく説明する。本書において説明している分類器における検索とは、「検索対象のキーを入力とし、そのキーをタグ(ルートタグ)で示されるテーブルツリーのエントリと照合し、結果(結果タグ)を出力する」ことである。オートマトンのベースとなる状態遷移における検索は、「外部入力を現在状態からの遷移条件で評価し遷移先を決定する」と定義できる。ここで、「外部入力=検索対象キー」、「現在状態=現在タグ」、「遷移条件=照合ロジックとタグの指すテーブルのエントリ記述」、とすれば、「外部入力(キー)を現在状態(現在タグ)からの遷移条件(照合ロジックと現在タグの指すテーブルエントリ記述)で評価し遷移先を決定する」と定義でき、本発明によりオートマトンを実現できる。
上記においては、分類器あるいは照合器による検索は、ツリー状に組織化された構造(テーブル)における上位から下位への一方向の遷移として説明しているが、状態遷移のように、ネットワーク状に組織化された構造における双方向の遷移であっても良い。これらの相違は、比較スケールが異なるだけと言うことができる。すなわち、分類器の検索がツリーの一方向遷移であるというのはミクロの視点であり、状態遷移が双方向ネットワークであるというのはマクロの視点である。1つの検索対象キーに対する動作という同一スケールで見た場合、照合器および分類装置は、予め定められたルール(エントリ記述)に従って、検索対象キーを評価し、結果を出力する。したがって、状態遷移においては、ある状態における遷移条件を、分類装置で検索する際の、検索のツリー状エントリ記述によって表現すれば良い。言い換えれば、状態遷移を検索の連鎖と見て、その状態毎の検索を分類器検索により実現するアプローチにより、分類器を、状態遷移マシン、あるいはオートマトンに応用できる。
図72(a)に、状態遷移を、分類器を用いた検索により実現する例を示してある。状態S1から条件「a」で状態S2に遷移し、条件「b」で状態S3に遷移する状態遷移マシンを仮定する。図72(b)に示すように、状態S1における状態遷移条件「a」および「b」を登録ビットパターン(エントリ)とする状態S1の登録パターンテーブル(S1テーブル)321を生成することができる。したがって、図72(c)に示すように、S1テーブル321から、照合用のバイナリビットツリー324を形成する複数の部分パターンテーブル325を生成する。そして、分類装置15により、現状態である状態S1で得られた状態遷移の評価元(条件)を検索対象のキーとして、上述した照合処理を行い、一致検索により遷移先の状態を出力できる。
図73(a)に、ネットワーク状に状態が遷移する簡単な例を示してある。この例では、上記に加え、条件「c」で状態S2から状態S1に移行し、条件「d」で状態S2から状態S3に移行する。また、条件「e」で状態S3から状態S1に移行し、条件「f」で状態S3から状態S2に移行する。図73(b)に示すように、状態S2における状態遷移条件「c」および「d」をエントリとする状態S2の登録パターンテーブル(S2テーブル)322と、状態S3における状態遷移条件「e」および「f」をエントリとする状態S3の登録パターンテーブル(S3テーブル)323とを生成することができる。状態S2に移行したときは、その状態における評価元(条件)が検索対象のキーとし、S2テーブル322から生成された部分テーブル325を用いて分類装置15により照合処理が行われる。状態S3に移行したときは、その状態における評価元(条件)が検索対象のキーとし、S3テーブル323から生成された部分テーブル325を用いて分類装置15により照合処理が行われる。このように、移行した先で、照合する際に用いられる部分テーブル325を入れ替えることにより、ネットワーク状の状態遷移に対しても本発明を適応することができる。部分テーブル325の入れ替えは、部分テーブル325の最上位の部分テーブルのアドレスを示すルートタグを指定することで可能なことは説明した通りである。
図74に、分類装置15を用いたデータ処理装置300の一例を示してある。このデータ処理装置300は、状態により処理内容が決まるデータ処理回路301と、状態のそれぞれにおけるデータ処理回路301の処理内容(アクション)310を格納したRAM302と、データ処理回路301の状態遷移エンジンとなる分類装置15とを備えている。RAM302には、状態に応じて分類装置15の検索に用いられる複数種類のテーブルツリー324と、それを構成する部分テーブル325が記憶されている。このデータ処理装置300は、アクション実行部であるデータ処理回路301の状態が遷移する状態遷移マシンであり、分類装置15は、データ処理回路301から供給されたキー(検索キー)303を検索対象のビットストリングとし、ルートタグ(検索テーブルツリーTAG)304によりRAM302に記憶されたテーブルツリー324を検索し、結果タグ305を出力する。この状態遷移マシン300において、検索テーブルツリーTAG304は、遷移条件テーブルツリー324のルートタグであり、結果タグ305は、次状態タグである。また、検索キー303は、状態遷移の評価元となるデータである。したがって、このデータ処理装置300においては、データ処理回路301は分類装置15に対して検索キー303を供給する検索対象供給手段としても機能している。
次状態タグ305とは、その状態への遷移に伴い実行すべきアクション記述310と、その状態から別の状態への遷移条件記述を指すタグである。実装によってはアクション記述や条件記述を、次状態タグ305に関連して決まる間接ポインタで示すことも可能である。アクション記述310では、遷移条件の評価元となる検索キー303を、データ処理回路301の内部あるいは外部状態から取り込むプロセスも指示されている。また、次状態タグ305により、次の遷移条件を検索する遷移条件テーブルツリー324が決まるように、アクション記述310に、遷移条件テーブルツリー324を構成する照合テーブルの最上位を示すルートタグ304の情報を入れておくことも可能である。
したがって、このデータ処理装置300は、分類装置15において、照合装置50を用いた多段階の照合方法により状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合し(照合する工程)、その照合結果によりデータ処理回路301の状態を遷移する(遷移する工程)制御方法により制御されている。このため、分類装置15に搭載される各々の照合装置50においては、上記において説明した照合方法における現段階を現状態として照合処理が行われる。そして、現状態の次の状態を示す照合継続情報が出力される。分類装置15において、次の状態を検索するために、1つの照合段階を費やしても良く、複数の照合段階を費やしても良い。
アクション記述310をコード、キー303を分岐先アドレス、分類装置15よる遷移条件評価を分岐先メモリアドレス変換器と捉えることも可能である。したがって、データ処理装置300は、状態遷移ベースのプロセッサとして機能する。通常のプロセッサでは、CPUという状態遷移ハードウェア(チューリングマシン)の上にソフトウエアコードでアプリケーションとして状態遷移マシンを実現する。このデータ処理装置300は、分類装置15を用いて、直接的に状態遷移マシンを実現することができる。
さらに、この状態遷移マシン300により、有限状態オートマトン(FA)が実現できる。有限状態オートマトンは、入力により内部状態を変えていき、その結果として何らかの応答を出力する機械である。このデータ処理装置300においては、ルートタグ304を変更したり、アクション記述310の命令セットによりデータ処理回路301がRAM302の内容を書き換えたりすることにより、遷移条件テーブルツリー324(すなわち照合テーブル)を変えることができる。したがって、データ処理装置300は、内部状態の変更を、状態の遷移と状態ごとのアクションで定義した状態遷移マシンとして実現されている。
有限状態オートマトンには、決定性FA(DFA)と、非決定性FA(NFA)がある。決定性FAは、状態の遷移が一意に決まる有限状態オートマトンであり、非決定性FAは、遷移状態が一意に決まらない有限状態オートマトンである。理論的にはNFAはDFAに変換できるが、NFAをNFAとしてハードウェアとして実現できることには状態空間の節約などの点で有意義である。「遷移状態が一意に決まらない」ことは、「状態が並立する」ということである。したがって、データ処理装置300により、並列データフロー型のシステムを構築すれば、その状態マシンではNFAを実現することが可能となる。
通常のCPUでは、バックトラックなどにより、状態の並列を逐次方式で解決するため効率が良くない。しかしながら、並列データフロー型の分類器オートマトンでは効率的なDFAが実現できる。
QoSへの適用
分類装置15をクラス階層構造データへのQoSに適用することができる。したがって、図1に示したルーティング装置1のQoS機能7にも採用されている。IPルータ1におけるパケットφpのQoSに用いられるクラス検索を、IPアドレスを検索対象のビットストリングで行う場合、範囲検索を用い、検索テーブル7mへ登録するエントリを、クラス構造を反映したエントリとすることができる。
図75(a)に、クラス構造の一例を示してある。このクラス構造350に対し、図75(b)に示すような照合用のバイナリビットツリー354を形成することができる。このバイナリビットツリー354は、登録ビットストリングとして右倒れ型範囲検索用エントリが登録されている。したがって、図75(b)に破線で示すようなIPアドレス355を検索対象ビットストリングとし、分類装置15を用いた範囲検索により、そのIPアドレス355が該当する最下位クラスのエントリを得ることができる。この例では、IPアドレス355はクラス1.1に分類される。
分類装置15による検索で最下位クラスを分類する際に用いられるクラスツリー350も形式としてはテーブル型のツリー構造である。したがって、図76に示すように、クラスツリー350のテーブルと、検索ツリー354の部分テーブルとを関連付けすることが可能となる。このため、分類装置15においてテーブル照合を行う照合器50に、クラスツリー350に対する処理を行うハードウェアを追加することも可能である。例えば、自クラスの割り当てトークン消費、トークン不足の場合の上位クラスからの借り入れなどのために上位・下位ツリーを探索する機能を追加することが可能であり、クラスのトークン管理をハードウェア化することができる。
この管理は複雑になるが、上述した状態遷移(オートマトン)プロセッサを適用することができる。QoSのための検索やトークン管理のためのツリー探索などを、プロセッサとしてのアドレッシングとすることにより、データ構造そのものとデータへの処理コードが一体となったアーキテクチャが実現する。
図77に示すように、通常のCPU360では、メモリ361に格納された処理コード選択用検索テーブル362の検索処理がCPUコード363によりソフトウェア(アプリケーション)として実行される。このため、検索テーブルを検索するための検索コード(検索処理のソフトウェア)363と、処理コード(データ処理のためのソフトウェア)364が分離している。したがって、CPU360は、検索コード363のロード(i段階)、検索コード363による実行(ii段階)、コンテキストスイッチ(データ処理コード364のロード)(iii段階)、処理コード364の実行(iv段階)となる。処理コード364のアドレス解決は、照合用の検索キー空間をソフトウェア的に検索することにより行われ、処理コード364のアドレッシング(コード空間)と検索キーのアドレッシング(検索キー空間)とは一致しない。
これに対し、図78に示すように、分類装置15を用いたプロセッサ300においては、検索テーブル(データ構造あるいはデータ空間)362に対して照合器50によるハードウェア検索で、検索キーに対応する処理コード364のアドレスを得ることで、検索キーから直に(ハードウェア的に)処理コード364のアドレスを解決することができる。そして、そのアドレス解決により得られた処理コード364を処理回路301により直接実行できる。したがって、コンテキストスイッチは不要となり、コード空間と検索キー空間とを一致させることができる。
通常のCPUで分類装置を用いたプロセッサのように直接的なアドレス解決が行えないのは、CPUがリニアアドレッシングに基づくチューリングマシンであり、そのチューリングマシン上にソフトウェア的(仮想的)に状態遷移マシンやオートマトンを実装しなければならないためである。これに対し、分類装置を用いると、検索処理とアドレス解決とを結びつけ、状態遷移マシンあるいはオートマトンを直接的に実現することが可能となり、データ空間とコード空間を統合した効率的なシステムを実現することができる。また、この延長線上に、データとそのデータに対する処理手続きを統合したオブジェクト指向プロセッサのようなシステムも実現可能となる。
条件判断機能9は、さらに幾つかの機能に分割されている。本例の条件判断機能9は、ネットワーク上のセキュリティーサービスを提供するIPセキュリティー(IPsec)機能8と、ネットワーク上のクオリティーサービスを提供するQoS機能7と、ファイアウォール機能6を備えている。これらの条件を判断する機能の多くは、パケットφpを管理するIPヘッダのビットストリングを検索対象のビットストリングφoとして、その検索対象のビットストリングφoが属する範囲を検索することが要求される。IPsec(SPD)機能8では、制御ユニット8cの制御のもと、検索対象として供給されたビットストリングφoと、メモリ8mに記憶されたSPDテーブルとを検索装置8sにより照合する。QoS機能7では、QoS制御ユニット7cの制御のもと、検索対象のビットストリングφoと、メモリ7mに記録されたフロー検索テーブルとを検索装置7sにより照合する。さらに、ファイアウォール機能6では、制御ユニット6cの制御のもと、検索対象のビットストリングφoと、メモリ6mに記録されたパケットフィルタリングテーブルとを検索装置6sにより照合する。
パケット管理機能3は、ネットワークを介してパケットφpを受信および/または送信可能な1つまたは複数のパケット入出力部2aと、受信したパケットφpをキューイングするメモリ2bとを備えている。キューイングされたパケットφpは、ルーティング検索機能4でルーティング先が決まる。さらに、SPD機能8、QoS機能7およびファイアウォール機能6などにおける処理が決定された後に、それらの機能で決定された適切なタイミングで、パケットφpは、パケット管理部3の何れかのパケット入出力部2aから適切なルートあるいはネクストホップに送出される。また、SPD機能8などの照合結果によってはキューイングされたパケットφpが出力されずに破棄されることもある。
本発明の照合方法を採用した検索装置は、これらの各機能4、6、7および8の検索装置10、6s、7sおよび8sとして適用可能であり、IPv6に基づいて検索対象のビットストリングφoのビット長が増した状況したでも、高速でサーチし、その結果φrをパケット管理部3に返すことができる。条件判定機能9に含まれる機能6、7および8の検索装置6s、7sおよび8sにおいては、検索対象のビットストリングφoが属するルールを見出すために、範囲一致検索あるいは照合が実行される。一方、ルーティング検索機能4においては、ルートを特定するために完全一致検索または最長一致検索が実行される。ルーティング検索機能4において、プレフィックス以降の最長一致の結果を得る最長一致検索は、プレフィックス以降のすべてのビットを最小側と最大側に展開した範囲一致検索に還元される。なお、本明細書において、バイナリビットツリーの「0」の方向を最小側(MIN)と呼び、「1」の方向を最大側(MAX)と呼ぶ。
検索装置の基本原理
以降においては、本発明に係る検索装置の概要を説明する。本発明の検索装置は複数種類の検索を単一のハードウェアで行えるものであり、いずれの機能の検索装置としてもほとんど構成を変えずに適用可能である。したがって、以降においては検索装置10を、完全一致検索および範囲一致検索が可能な装置として説明するが、範囲検索も同様のハードウェアで実行できる。
検索装置10は、バイナリビットツリーを構成するエントリ群と被検索キー(検索対象キー、検索対象のビットストリング、以降においてはターゲットキーあるいはキーと称することもある)の間の大小判定アルゴリズムを用い、エントリ(登録ビットパターン)群が表現する範囲(ルール)のどこに対象キーが属するかを判定するハードウェアである。バイナリビットツリーに基づく照合を実行するアルゴリズムをハードウェアで実現するにあたり、バイナリビットツリーを短いビット長のテーブルに分け、多段階で照合を行う。各照合段階では、各段のテーブル内の大小判定を並列ビット照合により行う。多段階の照合にすることにより、検索対象となるビットストリングのビット長の制限はなくなり、汎用的な利用が見込まれる。また、多段階の照合にすることにより、各段階で比較するビット長を限定でき、予めすべてのエントリが登録されているものとして並列に照合しても処理時間への影響はなく、ハードウェアが増大することも無い。そして、各段に登録されているエントリが含まれたパターンテーブルを示すデータ(以降ではマスクデータ)は圧縮することが可能であり、バイナリビットツリー作成(登録・削除)コストが軽減され、多段テーブルによる圧縮効果と相まって必要メモリ量も抑えられる。
照合過程の各段階における並列ビット照合は逐次実行プロセッサ上のソフトウェアでは実現不可能であり、並列処理ハードウェアあるいは並列実行型のプロセッサで実行することになる。並列ビット照合に必要とされるハードウェアは簡易なものであり、並列実行型のプロセッサを用いずに、経済的、コンパクトに実現することができる。
バイナリビットツリーによる同値および大小の判定
以下で述べる範囲検索において、右倒れ型近似ロジック、左倒れ型近似ロジックはハードウェア設計時にどちらかを選んで設計する。どちらを選んでも等価な範囲検索が可能である。両方式を切り替えられるよう設計することも可能である。一度に両方の近似で検索することも可能である。本明細書では、特に記載しない限り、右倒れ型近似ロジックに基づき設計された装置により説明する。
図2(a)から図2(f)に、バイナリビットツリー上での完全一致検索のロジックを示してある。ツリーの1段が1ビットに相当するバイナリビットツリーにおいては、上位から1ビットずつ被検索キーとエントリとの間で照合していく。この上位とは照合を開始するビットであり、必ずしも最上位のビット(MSB)でなくても良く、最下位のビット(LSB)であっても良い。バイナリビットツリーのあるノードから次ノードへの接続は「両方向あり」、「0方向のみあり」および「1方向のみあり」の3通りしかない。1ノードが1エントリを意味するバイナリツリー(2分木)とは異なり、バイナリビットツリーではノードはエントリの1ビットを意味するに過ぎない。エントリは全て等ビット長なのでツリー上でのノード段数も等しく、上位ノードからの接続が存在するノードを辿っていく途中で下位ノードに対する接続が「両方向なし」となることはありえない。
本明細書において、図2(a)および図2(b)に示すように、「検索対象キー21のビットとエントリ22のビットが一致」となるエントリは「照合候補」と定義する。また、図2(c)および図2(d)に示すように、「検索対象キー21のビットとエントリ22のビットとが不一致」となるエントリは「照合失格」と定義する。図2(e)および図2(f)に示すように、ノード接続が両方向である場合は、検索対象キー21のビットとエントリ22aのビットが一致」となるエントリ22aは照合候補で、「検索対象キー21のビットとエントリ22bのビットが不一致」となるエントリ22bは照合失格である。
完全一致ロジックにおいては、各ビット(各ノード)で照合をおこない、照合候補が存在する間、照合候補の次ノードを辿り、照合を継続する。照合候補が無くなればそこで照合は終了し、検索ミスヒットという最終照合結果が得られる。最終ビット(最終ノード)の照合完了後に照合候補があれば(状態が照合継続であれば)、それに対応するエントリが検索ヒットである。
図3は、バイナリビットツリーにおける完全一致検索の照合ロジックを表すものである。バイナリビットツリーに登録された4ビットのエントリ群22(値0,2,8,15)に対し、検索対象キー21aとして値8(「1000」)を投入し、値8に対応するエントリが完全一致検索ヒットと判定される例と、検索対象キー21bとして値4(「0100」)を投入し、検索ミスヒットと判定される例を示してある。最初のビットであるノードAで検索対象キー21aは1方向に進む。値0および2のエントリ22は0方向、値8および15のエントリ22は1方向なのでエントリ22は両方向に延び、前者のエントリ22は検索対象キー21のビットと異なるので照合失格、後者のエントリ22は検索対象キー21のビットと一致するので照合継続である。そして、このノードAでの照合後に照合候補エントリが存在するため、照合継続である。
次のノードEでは、検索対象キー21aは0方向に進み、値8のエントリ22が0方向、値15のエントリ22が1方向に延びている。したがって、ノードEでも照合候補が存在するので照合継続である。ノードFでは、検索対象キー21aは0方向に進み、エントリ22は片方向であるが、その値8のエントリ22が検索対象キー21aと同じく0方向なので照合候補が存在し、照合継続である。ノードGでも同様であり、最終ノードである。したがって、最終ノードGの照合後に照合候補があるので、完全一致検索は値8のエントリ22にヒットし終了する。
検索対象キー21bでは、ノードAでは照合候補があるため照合が継続する。ノードBでは、検索対象キー21bが1方向、値0および2のエントリ22は片方向で0方向に延びている。したがって、照合継続となっていた値0および2のエントリ22は照合失格となり、このノードでの照合後に照合候補が残らない。このため、検索ミスヒットとなる。
範囲検索でも完全一致検索同様にバイナリビットツリーを上位から1ビットずつ検索対象キーとエントリとの間で照合していくが、範囲検索の場合は「照合候補」に加え、「近似候補」および「近似失格」の概念がある。完全一致検索での「照合失格」が「近似候補」と「近似失格」に区別されることになる。また、ロジック上の必要性から「近似仮定」も定義する。
右倒れ近似(MAXサーチ)
図4(a)から図4(f)に右倒れ近似の類型を示してある。図4(a)および図4(b)に示すように、「検索対象キー21のビットとエントリ22のビットが一致」となるエントリは「照合候補」と定義する(これは完全一致検索と同様である)。この照合候補がある間、右倒れ型近似ロジックによる照合は継続する。また、図4(e)および図4(f)に示すように、「エントリ22が両方向あり」の場合も、「検索対象キー21のビットとエントリ22のビットが一致」である側のエントリ22は照合候補となり、照合継続である。
一方、図4(c)および図4(d)に示すように、「検索対象キー21のビットとエントリ22のビットが不一致」となるエントリは照合候補から外れる。完全一致検索ではいずれの場合も「照合失格」としていたが、右倒れ型近似の場合、図4(c)のように「検索対象キー21のビットが1でエントリ22のビットが0」となるエントリ22を「近似候補」と定義する。逆に、図4(d)のように「検索対象キー21のビットが0でエントリ22のビットが1」となるエントリ22を「近似失格」と定義する。近似ロジックでは、最新の近似候補を「近似仮定」として保持しておく。実際に「近似仮定」として保存が必要な値は、近似候補の指す次ノード位置である。近似候補でも近似失格でも、図4(c)および図4(d)に示すようにエントリ22が片方向で照合候補がなければ、照合過程は終了する。
図4(e)および図4(f)に示すように、エントリ22が「両方向あり」の場合は、「検索対象キー21のビットとエントリ22のビットが不一致」となる側のエントリ22も同様に、定義に従い近似失格あるいは近似候補となる。「両方向あり」なので「検索対象キー21のビットとエントリ22のビットが一致」側のエントリ22も存在し、それが照合候補となるので照合は継続する。それと共に、「近似候補」となるエントリ22、すなわち、図4(e)の「近似候補」のエントリ22が「近似仮定」となり、それまでの「近似仮定」の値は更新される。
最終ビットの後に照合継続(照合候補あり)ならば、そのエントリに完全一致したことになる。途中(あるいは最終ビット)で照合終了となった場合、保持してある近似仮定(最新の近似候補)を見て近似ヒットがありえるかどうかを判定する。近似仮定がなければ検索ミスヒットである。範囲検索の意味的には、定義された全ての範囲の外である。近似仮定があれば近似ヒットである。しかし、近似仮定が途中のノードを指す場合は、そのノードの下に複数のエントリ22が存在する可能性があるため、近似仮定のエントリ群22から近似決定をおこなわねばならない。この過程は、近似照合とは別のロジックで処理できる。右倒れ近似においては、以下で最大値検索(MAXサーチ)として説明している処理を行い、検索対象キー21の値以下の値のエントリの中から、最大の値のエントリ(検索対象キーに近い最大のエントリ)を選択して近似エントリとして確定する。
図3を、バイナリビットツリーにおける右倒れ型近似ロジックによる範囲検索を表すものとすると以下のようになる。値4の検索対象キー21bについては、ノードAで0方向の値0または2のエントリ22は照合候補、1方向の値8または15のエントリ22は近似失格となる。ノードAでは、照合候補が存在するため照合継続となる。次にノードBでは、0方向の値0または2のエントリが近似候補となり、近似候補なので近似仮定(最新の近似候補を保持)の更新を行い、近似候補の指す次ノードであるノードCを近似仮定として保持する。
ノードBの照合後に照合候補がなく、照合過程はいったん終了する。近似仮定があるので、近似ヒットである。従って、近似仮定となるエントリ群からMAXサーチにより近似確定をおこなう。この場合、値0と値2のエントリ22から値2のエントリを選択することになる。図3に示したように、検索対象キー21bは2≦キー値≦7の範囲の値であれば、同じ結果である値2のエントリ22を得ることができる。つまり、値2のエントリ22は(2〜7)という範囲を意味するエントリとなっている。このため右倒れ近似が範囲検索になるのである。
次に、値8の検索対象キー21aにおいては、ノードAでは、0方向のエントリ22(値0と2が属する)が近似候補となり、近似仮定(ノードBを指す)が更新される。1方向のエントリ22(値8と15が属する)が照合候補となり、照合候補も存在するため照合継続となる。ノードEでは、ビット値0方向のエントリ22が照合継続、ビット値1方向のエントリが近似失格となる。近似候補はないため、近似仮定は更新されない。ノードF以降は単方向で照合継続となり、近似候補が発生しないため、近似仮定は更新されない。そして、最終ビット後に照合継続(照合候補あり)なので、値8のエントリ22に完全一致するという最終照合結果が得られる。
さらに、値14の検索対象キー21cを投入した場合を考える。ノードAでは、ビット値0方向のエントリ22(値0と2が属する)が近似候補となるので、近似仮定(ノードBを指す)が更新される。また、ビット値1方向のエントリ(値8と15)が照合候補となり照合継続となる。ノードEでは、ビット値0方向の値8のエントリ22が近似候補となり、近似仮定は更新される(ノードFを指す)。また、1方向の値15のエントリ22が照合候補となるので、照合継続となる。ノードHでは、単方向で値15のエントリ22が照合候補となり、近似候補が発生しないので、近似仮定は更新しないで、照合継続となる。ノードIでは、単方向で照合失格となる。従って、いったん照合過程は終了する。
このとき、近似仮定はノードEでの更新でノードFを指している。近似確定のため、ノードF以下をMAXサーチし、値8に対応するエントリ22が近似ヒットと決定される。したがって、この検索対象キー21は、値8のエントリ22がカバーする範囲(8〜14)に属することが判明し、範囲一致検索が実行されたことになる。
左倒れ近似(MINサーチ)
図5(a)から図5(f)に、左倒れ近似における「照合候補」「近似候補」「近似失格」の定義を示してある。右倒れ近似と「近似候補」「近似失格」のビットが入れ替わっただけである。照合ロジックも、上記の入れ替わり以外は右倒れ近似と同様である。ただし、右倒れ型近似では近似確定するため近似仮定に対するMAXサーチをおこなうのに対し、左倒れ近似の場合、近似確定のために近似仮定に対するMINサーチをおこなう点が異なる。MINサーチでは、検索対象キー21の値以上の値のエントリの中から、最小の値のエントリ(検索対象キーに近い最小のエントリ)を選択して近似エントリとして確定する。
最終ビットまで「エントリのビットと検索対象キーのビットが一致」であった場合、つまり最終ビットの照合後に照合継続であった場合、これも範囲検索としてはヒットとする。つまり、右倒れ型近似による範囲検索とは、完全一致ヒットと近似一致ヒットを区別せず、「キー≧エントリ」となる最大エントリを検索するものである。ただし、検索の用途によっては「=」を含まない、「キー>エントリ」の右倒れ近似とすることもできる。また、「=」一致なのか「>」一致なのかを区別した結果とすることもできる。
範囲検索におけるエントリデータの形式
右倒れ型近似による範囲検索では、領域は右倒れ近似ロジックに適合するよう正規化されエントリ登録される。正規化とは、複数のルールが与えられたときに、相互に重複しない新たな範囲であって、その新たな範囲に属するルールの重複を許した、新たな範囲を設定することを言う。そして、検索対象ビットストリングが属する範囲を判断することにより検索対象ビットストリングに適用されるルールを発見する。また、検索対象のビットストリングが属する新たな範囲に複数のルールがあるときは、優先度の高いルールに基づき検索対象のビットストリングが属するパケットを管理するという方法でも用いられる。
さらに説明すると、ルールを正規化するとは、照合処理のために範囲の数値表現をFROM/TO表現からFROM/NEXT表現にすることを意味する。すなわち、ルールと範囲の関係を、ルールの重複は許し、範囲の重複は許さないで分割した領域表現に変換する。たとえば、Piを領域中の値とし、範囲[Pa,Pa′]と範囲[Px,Px′]が与えられたときに、Pa<Px<Pa′の関係があるときは、[Pa,Px−1]、[Px,Pa′]、[Pa′+1,Px′]の3つの新たな範囲を定義する。このような正規化により、新たな範囲のいずれかに属することが分かれば、それに対応するルール(優先するルール)を一義的に決定することができる。すなわち、範囲[Pa,Pa′]は、[Pa,Px−1]および[Px,Pa′]の2つの新たな範囲に分割される。従って、m個のルールが与えられたときは、領域数(新たな範囲の数)を最大で2m+1に分割することにより、重複することのない新たな範囲を設定することができる。最大となる条件は、すべてのルールの範囲のFROM/TOがユニークな場合であり、実際は、重複することが多いために新たな範囲の数はかなり少ない。
また、この新たな範囲には、ルールが与えられていない範囲も、ルールが与えられていない範囲として意味を持つことになる。したがって、FROM/TOによる範囲は[From,*]および[Next,*]という範囲に変換する必要がある。つまり、FROM/TOのペアで1範囲を表現していたものが、From値/Next値それぞれが独立領域を表現することになる。From値は元のルール範囲のFrom値と同値であり、ルール範囲の開始位置(左端点)を示す。Next値はルール範囲のTo(範囲終了位置)+1であり、ルール範囲の右側の範囲外領域の開始位置(左端点)である。これにより、From値/Next値は新たな範囲の端点として独立した存在となり、新たな範囲は常に左端点(下位のビットストリング)の1点で表現され、正規化された定義となる。すなわち、新たな範囲の右端点はNext領域左端点−1で暗黙に表現される。なお、ルール領域の右端点を中心に考えて、新たな範囲を上位のビットストリングの1点で表現することも可能である。その場合は、以下の説明を上位と下位を逆転させて考えれば良い。
正規化により、FROM/TOのルールエントリは、FROM/NEXTのエントリに変換される。この際、デフォルトのエントリとして[0,NA]を追加する。したがって、ルール数がnであれば、エントリはデフォルトも含めn+1エントリとなる。正規化する処理は、範囲により照合されるものがルールに限定されることはなく、範囲に対応して出力する値が特定される検索であれば全ての場合に応用することができる。
この正規化は領域を表す2値([FROM,TO])のうちTO(大値)側の補正ということができる。例えば[a,b]で表される領域Rは値「a」のエントリAと値「b+1」のエントリBとして登録される。エントリAは領域Rを表現し、エントリBは領域S[b+1,∞]を表現する。エントリAに右倒れ型近似ヒットすることは、領域Rに範囲検索ヒットすることである。エントリBに近似ヒットすることは、領域Sにヒット、つまり範囲検索ミスヒット(領域R外)を意味する。近似ミスヒットは領域Q[0,a−1]、つまり範囲検索ミスヒット(領域R外)を意味する。
一点を表す領域U[c,c]も定義可能であり、値「c」のエントリCと値「c+1」のエントリDとして登録される。エントリCは領域Uを表現し、エントリDは領域V[c+1,∞]を表現する。値「c」と値「c+1」の隣接するエントリが登録されるため、値「c」であるエントリCへのヒットは完全一致ヒットでしかありえず、点領域Uに範囲検索ヒットを意味する。エントリDへの近似ヒットは領域Vにヒット、つまり範囲検索ミスヒット(領域U外)である。近似ミスヒットは領域T[0,c−1]、つまり範囲検索ミスヒット(領域U外)を意味する。
左倒れ型近似でも領域の正規化はおこなわれる。ただし、右倒れ型とは逆にFROM(小値)側を補正する。
エントリと集合の関係を、エントリIは集合SET(I)[i,∞]を意味すると定義する。このとき、領域R[a,b]は、値「a」のエントリAすなわち集合SET(A)[a,∞]と、値「b+1」のエントリBすなわち集合SET(B)[b+1,∞]との差集合(SET(A)−SET(B))で表せる。エントリAに右倒れ近似ヒットするということは、エントリAにヒットし、エントリBにミスヒットということである。
照合方法
図6に分割テーブルを示してある。多ビットのバイナリビットツリー24は、多段階または多階層に分けて、さらに各段階を適当な数のエントリが表れるビット幅に分割することにより、パターンテーブル化できる。一定の短ビット長を単位とする分割テーブルまたは部分テーブル(パターンテーブル)25を規定することにより、多ビットのバイナリビットツリーを、上位の部分テーブル25から指定される各段階の部分テーブル25の組み合わせにより表現できる。固定ビット数の部分テーブルにすることで、並列処理対象エントリは有限固定となり、部分テーブル25に含まれるエントリをハードウェアにより並列照合することができる。さらには、部分テーブル25に含まれる最大エントリ数は有限固定になるので、実際に部分テーブル25に含まれるエントリの有無にかかわらず、検索対象キーが部分テーブル25に含まれ得るエントリのいずれと一致するかを、ある部分テーブル25が選択されると自動的にハードウェアで照合することも可能となる。
図6では、3ビットの部分テーブル25によりバイナリビットツリー24を表現している。各部分テーブル25に収容される部分エントリ26の最大値は、値0〜7の8エントリである。ハードウェア実装としては、メモリのワードのビット長や検索キーのビット長などを考慮し適切なテーブルビット長を決定する。テーブルビット長がnビットになると並列処理対象であるテーブル内のエントリ数が2nになるため、一般的には4ビットテーブル程度が適切である。
部分テーブル化することにより、各段の部分テーブルでの検索は有限固定エントリ数でのサーチになる。また、検索対象キーが固定ビット幅であれば、エントリを示すバイナリビットツリー24は固定長となり、それを表現する部分テーブル25の段数は予め定まった有限固定段数となる。このため、一致検索においてはバックトラックの発生しないバイナリビットツリー検索となる。したがって、検索に要するワースト時間はエントリ数にかかわらず一定時間となる。
図7(a)に、バイナリビットツリー24が部分テーブル化されている論理イメージを示す。図7(b)は、部分テーブル(パターンテーブル)25を汎用テーブル27として構成した様子を示してある。この汎用テーブル27では、1エントリはビットパターンの値27aと、それに対応する下位テーブル27へのポインタ27bで構成され、それが最大n個あるテーブル構造となる。さらに、図7(c)に、汎用テーブル27を圧縮したテーブル28で部分テーブル25を実現した様子を示してある。この圧縮テーブル28は、エントリの有効無効を示すビットフラグ(マスクデータ)28aと下位へのポインタ28bで1エントリが構成される。下位の圧縮テーブル28へ続くポインタ28bは、圧縮テーブル28が記憶されているRAMのアドレスなどになり、アドレステーブルを生成する。
汎用テーブル27と圧縮テーブル28の違いは、汎用テーブル27では登録ごとにエントリにビットパターンをセットしていくのに対し、圧縮テーブル28では、テーブルは固定ビット幅のテーブルであり、ビットパターンを省略している点である。部分テーブル25が固定ビット幅の場合、ビット幅に対応して上限エントリ数が決まる。したがって、例えば4ビットテーブルの場合、エントリNo0はビットパターン0000、エントリNo1はビットパターン0001というようにエントリNoとビットパターンの関係を一対一に固定できる。したがって、アクティブなエントリNoを示すことだけで、部分テーブル25に含まれる部分エントリ26を指定することができる。エントリNoを示すデータはいくつか考えられるが、図7(c)に示すようにエントリNoに対応したビット位置にオンオフのフラグとなるビットを配置したビットパターン(マスクパターン)28aはハードウェアで利用しやすい形態の情報である。また、マスクパターン28aにより部分エントリの有無を示すことにより、実際の部分エントリのビットパターンを登録する処理および登録するためのハードウェアおよびソフトウェアを省略できる。
この部分テーブル25をマスクパターンを用いた圧縮テーブル28とした最適化により、部分テーブル25をそれに対応する検索対象キーの部分(部分対象キー)と照合するハードウェアが単純化される。4ビットの部分テーブル25であれば、4ビットの部分エントリ、すなわち、値0から15までの部分エントリが取りうる値と部分対象キーとの照合を並列に行うハードウェアを採用することにより、照合作業およびハードウェアが単純化される。すなわち、全エントリハードウェア並列照合が可能となり、それが単純化される。また、エントリNoとビットパターンの関係が固定でソート済なので、エントリ(部分エントリ)の追加削除は、基本的にはマスクデータ28aを更新するだけで実現できる。そして、テーブル内でのMIN/MAXサーチはビットパターンの比較なしにエントリNoのみでおこなえる。したがって、範囲一致検索において、近似候補となる部分テーブル25までバックトラックが発生したとしても、その後は、エントリが有効か無効かのフラグ(マスクデータ)28aの参照だけでテーブル内におけるMIN/MAXサーチは終わることができるので、実質的にはバックトラックが発生しない照合方法ということも可能である。
MIN/MAXサーチとそのバイパス
MIN/MAXサーチの原理
バイナリビットツリーにおけるMIN/MAXサーチの原理は以下の通りである。図8(a)に、右倒れ近似におけるMAXサーチの概要を示してある。ビット位置(ノード)A1にて、検索対象キー21に対してエントリ22がなくなり、右倒れ型範囲検索の照合候補がなくなる。そのため、照合は途中で終了し、近似仮定エントリに対するMAXサーチを開始する。エントリ22が片方向しかない場合はその方向に辿る。ノードA2においては、0方向にしかエントリ22がないので、それを辿る。次のノードA3においては、エントリ22が0および1の両方向にあるので、大きい方向(0<1なので1の方向)を優先して辿る。各ノードに対して同様の処理を行い、最下段ビット位置A6まで辿り着き、得られるエントリ22がMAXエントリ(検索対象キーの値よりも小さくて最大の値をとるエントリであり、検索対象キーに近い最大のエントリ)である。
図8(b)は、左倒れ近似におけるMINサーチの概要を示してある。左倒れ型範囲検索の場合、同種のロジックで小さな方向(0の方向)を優先して辿り、MINエントリ(検索対象キーの値よりも大きくて最小の値をとるエントリであり、検索対象キーに近い最小のエントリ)を取得するMINサーチをおこなう。
テーブルにおけるMIN/MAXサーチ
バイナリビットツリーをテーブル化すると、MIN/MAXサーチのロジックもテーブル対応にしなければならない。図9(a)に汎用テーブルでのMIN/MAXサーチのうち、右倒れ型近似におけるMAXサーチを示してある。テーブルA1にて照合失格(キー値21と同値のエントリ22が無い状態)となる。テーブル内で「キー値>エントリ値」となるエントリの中から、最大値であるエントリ(「キー値>エントリ値」の中でエントリ値が最もキー値に近いエントリ)を選択し、近似候補エントリ22xとする。近似候補22xの指す次テーブルが近似仮定エントリ22yである。そして、その近似仮定エントリ22y以下に対するMAXサーチを開始する。
まず、近似仮定エントリ22yのテーブルであるテーブルA2に移る。テーブルA2内のエントリを調べ、最大値をもつエントリを選択する。そのエントリの次段テーブルに移り、以下、最大値を持つエントリ選択と下段への移動を繰り返し、最下段まで到達する。最下段でも最大値エントリを選択し、最大値エントリの登録データに辿りつき、MAXエントリを出力する。図9(b)は、左倒れ型範囲検索の場合であり、同種のロジックでMINサーチをおこなう。
図10に、圧縮テーブル28のMIN/MAXサーチのロジックのうち、右倒れ型近似に対応したMAXサーチのプロセスを示してある。まず、圧縮テーブル28ではマスクデータ28aにおいてエントリNoとビットパターンの関係が固定であり、ソート済の状態に等しいので、テーブル内での最小値/最大値エントリの選択はビットパターンの比較なしに、マスクデータ28aの対応するエントリNoにフラグを立てるだけで行うことができる。つまり、有効無効フラグの参照だけでテーブル内における最小値/最大値エントリの選択は終わる。そして、追加したエントリNoに対応するアドレステーブル28bのレコードにそのエントリNoに続く圧縮テーブル28のアドレスを記録することにより圧縮テーブル28をリストで繋ぐことが可能となり、リニアアドレス上のテーブルでなくてもバイナリビットツリーの多段階検索が可能となる。
右倒れ型範囲検索におけるMAXサーチを説明する。先の照合段階において、テーブルA1のマスクデータ28aにおいて照合候補がなくなり、照合が終了すると、次の現段階においては、近似仮定エントリに対するMAXサーチを開始する。近似候補の選択は、テーブルA1のマスクデータ28aの内で「キー値>エントリ値」となるエントリのうち最大値をもつエントリ(最大のエントリ)を選択することでおこなう。ビットマップによる圧縮テーブルなので、「エントリNo=エントリ値」であり、上記条件に合致するエントリはキー値エントリから左にみていって最初に1が立っているエントリが近似候補22xである。この例では照合が終了したのと同じテーブルA1に近似候補エントリ22xが存在する。近似候補エントリ22xの指す次テーブルが近似仮定エントリ22yである。
これにより、次の照合段階では、近似仮定エントリ22yであるテーブルA2に移動する。テーブルA2内で最大値をもつエントリを選択する。「エントリNo=エントリ値」なので、右端からみて最初に1の立つエントリが最大値エントリ22mである。最大値エントリ22mの指す次段テーブルA3に移り、エントリ選択と下段への移動を繰り返し、最下段エントリまで到達する。最下段でも同様に最大値エントリ22mを選択し、最下段での最大値エントリ22mの指すデータに到達する。これにより最大のエントリを得ることができる。左倒れ型範囲検索では、同種のロジックでMINサーチを行う。
MIN/MAXサーチのバイパス
圧縮テーブル28ではエントリNoとビットパターンの関係が固定でソート済なので、MIN/MAXサーチはビットパターンの比較なしにエントリNoのみでおこなえる。有効無効フラグの参照だけでテーブル内におけるMIN/MAXサーチは終わる。しかしながら、エントリの登録・削除がない限り、下位の部分テーブル28を辿って到達する最終的な最大のエントリあるいは最小のエントリは不変である。したがって、毎回、MIN/MAXサーチをするのは無駄であり、図11(a)および図11(b)に示すように、各テーブルにバイパスTAG(BP)を設け、そのテーブル28以下でMIN/MAXサーチした結果、すなわち、最大なエントリあるいは最小なエントリを記録しておくことによりMIN/MAXサーチを省略することが可能となる。これにより、最大のエントリ、あるいは最小のエントリを検索するプロセスは、近似仮定した圧縮テーブル28にアクセスするだけのプロセスに代わり、検索時間は大幅に短縮される。
したがって、近似仮定したエントリを近似確定させる際、近似仮定エントリ22yの指すアドレステーブル28bのアドレス(以降においてはTAG(次段テーブルを指すTAG)と称することがある)を使い、次段テーブルのバイパスTAG(BP)により近似確定する最大または最小のエントリを決定することができる。範囲検索の論理として右倒れ型でおこなう場合はバイパスBPには最大のエントリが記録され、左倒れ型でおこなう場合はバイパスBPには最少のエントリが記録される。複数の範囲検索系があった場合、照合のロジック構成としては右倒れ型か左倒れ型かのいずれかに統一する。バイパスBPに両値を記録することにより、テーブルに記録する情報量の増加、照合用のロジックの追加、エントリの登録削除用のロジックの追加などが発生するが、左右両方式を混在させることも可能である。
さらに、バイパスBPを記録することにより、MIN/MAXサーチにおけるバックトラックの遅延も解消することができる。MIN/MAXサーチとは、近似候補エントリ群から近似結果を確定させるための検索である。ところで、右倒れ型であっても左倒れ型であっても、テーブル型ビットツリーの場合、照合継続中に毎段で近似候補が更新されていくわけではない。ある段で近似候補が更新され、その後、数段の近似候補更新を伴わない照合継続があり、下段のほうで照合失敗となった段階で、上段で更新された近似候補を使い、結果を確定するためにさらにMIN/MAXサーチをおこなう必要がある場合がある。
図12に一例を示してある。上位のテーブル28から下位のテーブル28に照合継続し、照合失格となった段階で、近似仮定に基づき上位のテーブル28に戻り、別ロジック(MIN/MAXサーチ)で再びツリー状にテーブル28を降りていくことになる。これはバックトラックということができる。照合失敗によりMIN/MAXサーチでツリーを辿るロジックが変わるので、MIN/MAXサーチでは再度のバックトラックは発生しないが、照合失敗位置と近似仮定位置が離れている場合、バックトラックと目されるMIN/MAXサーチのコストは重い。
これに対し、図13に示すように、バイパスBPを記録しておけば、一度バイパスBPの値を読むことにより、最大または最小のエントリが確定するため、実質的にはサーチプロセスとなるような時間の係る処理は不要となり、実質的にはバックトラックの発生を抑えられる。図13は、右倒れ型の例であり、テーブルA1で近似仮定更新・照合継続となり、テーブルA2では近似仮定更新無し・照合継続となり、テーブルA3で近似仮定更新無し・照合失敗となる。このとき、テーブルA3での照合失敗で近似確定のため、MAXサーチに移行するが、最新の近似仮定はテーブルA2′であるため、テーブルA2′にアクセスする。そして、テーブルA2′にバイパスBPが記録されていれば、それにより直接、最下段の最大のエントリまで移動でき、照合過程は終了する。
検索装置、分類装置およびバイナリビットツリー照合器
図14に検索装置10の概要を示してある。この検索装置10は、各種の検索を行う分類器15を複数備えており、各種の検索を並列に行えるようになっている。したがって、検索装置10には、複数の分類器15により実現される複数の分類過程を有する分類方法が実装されている。1つの分類器15により各種の検索をシーケンシャルに行うことも可能であり、本発明の検索装置はこれに限定されるものではない。
この検索装置10に対しては上流のアプリケーション、たとえば、図1に示した制御ユニット12、8c、7c、6cから検索対象ビットストリングであるキー21と、その検索種別を示すルートTAG31と、検索ジョブを識別する情報(ID)32とが供給される。たとえば、SPD検索機能8であれば、1つのパケットデータφpを管理するために、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する必要がある。このような場合は、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングをそれぞれ異なる分類装置15に対して検索対象ビットストリング(検索対象キー)21として供給し、それぞれのビットストリングと比較するビットパターン(エントリ)22が登録されたバイナリビットツリーの最上位の部分テーブル25(28)を示すメモリ11あるいは8mのアドレスをルートタグ31として供給する。これにより各々の分類装置15においては、供給された検索対象キー21を、その検索対象キー21の範囲検索に用いるべく予め登録されているビットパターン(エントリ)22と照合することができる。
さらに、検索装置10は、複数の分類装置15に供給された検索対象キー21の照合結果により得られるルールの論理積を求めて最終結果を取得するための論理演算装置(AND化器)19を備えている。したがって、この検索装置10は、複数の分類器15により実現される複数の分類過程と、AND化器19により実現される論理演算過程とを有する分類方法が実装されている。各々の分類装置15における検索処理時間は、各々の分類装置15に供給される検索対象キー21のビット長により異なり、さらに、照合過程において上位の部分テーブル28に戻るバックトラックが発生するか否かによっても異なる。したがって、分類装置15から同期して検索結果が出力されない可能性がある。このため、分類装置15に供給される検索対象キー21にID32を付加することにより、論理演算装置19における論理演算を可能とし、さらに、パケット管理装置3において管理されるパケットデータφpとの関連付けも可能なようにしている。
本例の分類装置15は、パイプライン状に接続された複数の照合装置50を備えており、これらの照合装置50の間ではデータパケットとして標準化された照合継続情報(入出力パラメータ)33が伝達され、パケット駆動される構成となっている。したがって、分類装置15は、複数の照合装置50により形成されたデータフローを備えており、複数の照合段階を備えた分類過程を有する分類方法が実装されている。また、それぞれの照合装置50が各照合段階の処理を行うので、複数の照合段階により多段階の照合を行う照合方法が分類装置15に実装されているということもできる。この分類装置15は、クロック同期のハードウェアで実現することも可能であるし、データフロー型のハードウェアで実現することも可能である。分類装置15は、さらに、圧縮された部分テーブル28が記録されたメモリ11と照合装置50との間の入出力速度を向上するためのバースト転送バッファ16も備えている。
以下で説明する検索装置10、分類装置15および照合装置50の構成は、ソフトウェアで実現することも可能であるし、ソフトウェアを主体として部分的にハードウェアを用いて実現することも可能である。しかしながら、実行速度を考慮した場合、できるかぎりハードウェアで実現することが望ましい。本部分テーブル25あるいは28を用いた検索方法は、単一、あるいはほぼ単一な構成の照合装置(照合器)50をパイプライン状に接続することによりビット長の変化に対応でき、また、ルートタグ31といった検索種別を示す情報が提供されることにより単一な構成の照合装置50により多種類の検索を実行できるようになっている。したがって、この照合方法は、非常にハードウェア化しやすい照合方法であり、経済的で、処理速度の速い検索装置を提供できる。また、上位のソフトウェアあるいはアプリケーションからは、検索対象キー21と、検索種別情報31を提供するだけで、所望の検索を実行できるので、上位のアプリケーションの負荷も非常に小さい。
分類器の構成
図15に、8個の4ビット型の照合器50をパイプライン状に繋いで32ビットの検索対象キー21に対する検索を行う分類装置15の概略構成を示してある。この分類装置15は、複数の照合器50をハードウェアとして備えており、それらの照合器50をソフトウェアあるいはハードウェアで接続している構成である。照合継続情報33に含まれるルートタグ(RootTAG)31および照合タグ(NextTAG)34は、SDRAMメモリ11の上の圧縮テーブル28を指すポインタ(アドレス)である。それぞれが照合段階を実行する各照合装置50は、照合継続情報33に含まれる検索対象キー21から順番に4ビットずつを部分対象キー36として受け取り、ルートタグ31または照合タグ34により指定されるテーブル28からマスクデータ28aを読み取り、近似一致による比較を行う。比較によりヒットしたエントリ(部分エントリ)26に対応する次段の圧縮テーブル28のポインタ(NextTAG)34を、圧縮テーブル28のアドレステーブル28bから読み取り、照合継続情報33に含めて次の照合装置50に供給する。
検索対象キー21や照合タグ34などの照合継続情報33は、別々に供給されても良い。しかしながら、データパケットとしてまとめて入力することにより、データフロー化しやすい。また、検索対象となる部分対象キー36は、上位のプログラムにより予め分割された状態で照合装置50に供給されても良い。しかしながら、検索対象キー21の値は全ビットが照合継続情報33に含められ、シフトしながら必要なビット数ずつを部分対象キー36として使用していくことが望ましい。これは、照合器パイプライン構成の途中でパイプラインステージを逆流(バイパス等によるバックトラック)する可能性があり、検索対象キー21を照合器50の外部で切り分けたのでは、パイプラインの進行(クロック)同期で適切なステージ(段階)へ投入していくことができないためである。また、SDRAM11に対するアクセスの状態(競合・排他)や、データキャッシュをつけた場合のオンキャッシュかどうか等で各照合装置50における処理速度は変動する可能性が高い。したがって、照合器パイプラインの進行自体をクロック同期ではなく要求応答型(データフロー型)とした方が処理効率は高く、この点でも、検索対象キー21を照合継続情報33に含め、さらに、照合検索情報33をデータパケット化して次の段階の照合装置50に供給するメリットがある。
図16には、分類装置15の異なる例を示してある。この分類装置15はMAX/MINサーチを実行する際のバイパス用のバス(BPバス)39を備えており、照合装置50は、BPバス39に出力するインターフェイスを備えている。したがって、この分類装置15においては、各照合装置50が非同期でテーブル28にアクセスする頻度が上昇する。図15に示したように、各段のテーブル28を同一のSDRAM11におくと、パイプラインを構成する各照合器50のメモリアクセス競合があるため、パイプラインが有効に機能しない。従って、各段のテーブル28を個別のメモリ11aにおき、各照合器50のメモリアクセスを独立としたほうがパイプラインの有効性が高い。この照合装置パイプラインを備えた分類装置15では、1つの照合器50の処理に要する時間(メモリアクセスを含む)を「T」とし、32ビットの検索対象キー21が途切れなく入力されれば、検索のスループットは「T」(本当は1/T)となり、レイテンシは「8T」となる。
照合器50の構成は、SDRAM11を除いて処理時間が一定するので、パイプラインを組みやすい。データキャッシュ制御によりSDRAMアクセスを排除する履歴キャッシュ方式や専用SRAM型履歴キャッシュ方式を使えば、SRAM11に対する実質のアクセス時間を一定化でき、パイプラインをさらに構成しやすい。これに対し、共有型データキャッシュであれば、キャッシュのスループットと全パイプラインステージのスループットの合計が等しいか、あるいは共有型データキャッシュの方がスループットを高くする必要がある。
図17に、分類装置15のさらに異なる例を示してある。上記の例では、複数の照合器50を処理パイプラインとして並べた構成であるが、省リソースを優先した場合は、図17に示したように、1個の照合器50を繰り返し使う構成も可能である。この場合、照合器50からのメモリアクセスはある時点では常に1アクセスとなるので、テーブル28を全て同一のSDRAM11に置くことで処理速度の優劣はない。
照合装置の構成
図18に照合装置50の構成を示してある。この照合装置50は、検索対象ビットストリング(検索対象キー)21を複数ビットの部分対象ビットストリング(部分対象キー)36に分けて、予め登録された複数の登録ビットパターン(エントリ)22と多段階で照合するための1つの照合段階を実行する照合装置である。照合装置50は、照合継続情報33に含まれるコマンド37をデコードして照合装置50における処理を制御するコマンドデコードユニット51と、検索対象キー21から、現段階の部分対象キー36を選択し、その部分対象キー36が取り得る全ての値と照合する比較ユニット(全照合手段)52と、メモリ11からその照合段階の圧縮テーブル28のマスクデータ28aをロードするロードユニット(パターンロード手段)53とを備えている。ロードユニット53は、圧縮テーブル28をメモリ11からバッファ59に格納するテーブルロード部53aと、バッファ59に格納された圧縮テーブル28からマスクデータ28aを読み出すマスク読み出し部53bとを備えている。圧縮テーブル28にマスクデータ28aと共に格納されているアドレステーブル28bおよびバイパスデータBPは多くの処理で必要になる。このため、本例では圧縮テーブル28をバッファ59にロードしている。マスクデータ28aは、上述したように、エントリ22の部分ビットパターン26であって、先行する段階から得られる照合継続情報33により決まる、部分対象キー36に対応する段階(現段階)の部分登録ビットパターン(部分エントリ)26をフラグ(ビットパターン)により示すものである。
照合装置50は、さらに、比較ユニット52における全照合結果とマスクデータ28aにより、部分対象キー36に一致する部分エントリ26の有無、すなわち一致を含む照合結果を示すことができる判定ユニット54を備えている。また、照合装置50は、判定ユニット54の照合結果により、アドレステーブル28bから、照合により特定された部分エントリ26に続く次の段階のマスクデータ28aのアドレス(タグ(本例では圧縮テーブル28のアドレス))を照合タグ(照合候補)34として出力する出力ユニット55を備えている。この照合装置50は、一致検索のみではなく範囲検索も行えるように、判定ユニット54は、部分対象キー36に値が最も近い最大(右倒れ型近似について記載し、左倒れ型近似については、最大を最小に変更することによりほぼ対応できる)の部分エントリ26の有無を示すことが可能である。本例の判定ユニット54は、比較ユニット52の出力をマスクデータ28aによりマスク処理するマスク器(VLD、VaLiDation)54aと、マスク器54aの出力から状態を選択する選択器54bとを備えている。
出力ユニット55は、判定ユニット54により一致と判断された部分エントリ26に続く次の段階のマスクデータ28aのアドレス(圧縮テーブルのアドレス)を照合タグ34として出力する。さらに、出力ユニット55は、判定ユニット54において、最大の部分エントリ26が見つかったときは、その最大の部分エントリ26に続く次の段階のマスクデータ28aのアドレス(圧縮テーブル28のアドレス)を範囲検索のための候補アドレス(候補タグ、近似候補)35として出力し、照合継続情報33のパケットデータに保存する。したがって、一致する部分エントリ26があり照合継続の場合であっても、最大の部分エントリ26が見つかると範囲検索用の候補タグ35がパケットデータに保存される。このため、次の照合段階において、一致する部分エントリ26がなく、照合終了で、さらに、その照合段階では最大の部分エントリ26がないときに、候補タグ35を照合タグ34として照合継続情報33に出力することが可能となる。この照合タグ34によりMAXサーチに移行することができる。
さらに、照合装置50の出力ユニット54は、MAXサーチに移行したときに、圧縮テーブル28からバイパスデータBPを読み取って最終照合結果として出力することができる機能も備えている。したがって、出力ユニット55は、照合状態などを反映したコマンド37を生成するコマンド更新部55aと、照合タグ34を更新する照合タグ更新部55bと、候補タグ35を更新する候補タグ更新部55cと、バイパス読み出し出力部55dとを備えている。そして、出力インターフェイス56からは、出力ユニット55により更新されるパラメータ34、35および37と、入力された照合継続情報33に含まれるID32と、検索対象キー21とを含むデータパケットが照合継続情報33として、パイプラインの下流に位置し、次の段階の照合を行う照合装置50に供給される。
圧縮テーブル28にバイパスデータBPが設定されていないときは、照合終了を示すコマンド37を受け取ると、出力ユニット55の照合タグ更新部55bがマスクデータ28の最大の部分エントリ26に続く次の段階のマスクデータのアドレスを照合タグ34として出力し、MAXサーチが継続される照合装置50のパイプラインを制御する。
さらに、本例の照合装置50は、マスクデータ28aおよびアドレステーブル28bを更新することにより、エントリを追加または削除する更新ユニット60と、更新されたテーブル28をメモリ11に書き込むテーブルライトユニット61とを備えている。更新ユニット60の動作については、以下でさらに詳しく説明する。
照合装置における処理
図19に、照合装置50における照合処理(照合方法)50mをフローチャートにより示してある。この照合装置50は、各々の照合装置50が1つの照合段階を受け持ち、図19に示す照合処理50mは1つの照合段階(現段階)の処理を示している。ステップ101で、コマンド37がエントリの追加削除を示しているときは、ステップ102で、更新ユニット60によりテーブル28を更新する(更新工程および更新過程)。ステップ103で、コマンド37から、現段階に先行する前段階の照合が近似で照合終了していることが判明すると、以下に説明する現段階の照合のステップ104、105および106をバイパスし、出力ステップ110に含まれるステップ111でバイパス読み出し出力部55dによりバイパスデータBPを図16に示したバイパスバス39に出力して照合を終了する(バイパスする工程)。
コマンド37より、現段階の照合を継続する場合は、ステップ104において、比較ユニット52により現段階の部分対象キー36を比較する(全照合工程)。ステップ105において、ロードユニット53により現段階のマスクデータ28aをロードし(パターンロード工程)、ステップ106において、判定ユニット(VLDユニット)54により現段階の照合結果を得る(判定工程またはVLD工程)。そして、ステップ107において、一致する部分エントリ26があれば照合継続なので、ステップ109において候補タグ更新部55cにより候補タグ35を更新し(候補アドレス記憶工程)、出力過程110のステップ114で照合タグ更新部55bにより照合タグ34を更新し、コマンド37をコマンド更新部55aにより照合継続にセットして出力する(出力工程)。
一致する部分エントリ26がない場合は原則としては照合終了である。しかしながら、ステップ108で、近似の部分エントリ(最大の部分エントリ)26がある場合は、出力ステップ110に含まれるステップ113において、照合タグ更新部55bが近似の部分エントリ26に続くタグアドレスを照合タグ34にセットして出力する。ステップ108で、近似の部分エントリ26がない場合は、出力ステップ110に含まれるステップ112において、照合タグ更新部55bが、上流の照合段階で得られ、照合継続情報33に含まれて伝達された候補タグ35を照合タグ34にセットしてバイパスバス39に出力する。これにより、MAXサーチが開始される。
これらの工程を備えた照合方法50mでは、実際には、独立して処理できる工程は並列に実行される。たとえば、コマンドを解釈する工程101および102、部分対象キー36を比較する工程104と、マスクデータをロードする工程105とは独立した処理であるので、並列に実行できる。テーブルをロードするフェーズはSDRAMアクセスであるため時間がかかり、比較フェーズなどとは並列に実行することによりメモリアクセスのオーバヘッドを緩和できる。したがって、読み出し速度が非常に速い特殊なメモリを用いなくても、本例の照合装置50においては十分な検索スピードを確保できる。また、出力ステップ110において異なるパラメータを更新するフェーズも相互独立であり、コマンド更新部55a、照合タグ更新部55bおよび候補タグ更新部55cも独立しており、これらにおける処理は並列に実行可能である。したがって、図20に示すように、通常の照合モードの場合、照合装置50においては、テーブルロード53と比較52などが並列で実行される。
本例のロードユニット53は、照合タグ34の指示により、SDRAMメモリ11の上の圧縮テーブル28を照合器50の内部のテーブルバッファ59にロードする。圧縮テーブル28のデータは、必ずしも全て利用されるものではないが、少なくともマスクデータ28aと、アドレステーブル28bの1個あるいは2個のアドレス(タグ)の値は参照される。したがって、各照合器50において共有資源であるSDRAM11に対し、2〜3回のリードが発生するよりは、バーストリードにより1回だけSDRAM11からリードし、照合器内部で必要値を読み出すほうが効率的である。上述したように、SDRAMからバーストリードするには時間がかかるため、このテーブルロードのフェーズからマスクデータ読み出しフェーズは、比較フェーズと並列に実行される。詳しくは後述するが、SDRAM11との間にデータキャッシュを置いた場合、照合器50に内蔵のテーブルバッファは不要であるが、その場合でも、共有資源たるデータキャッシュへのアクセスを複数回おこなうよりも、やはりローカルにコピーしてアクセスするほうが効率的な場合がありえる。
比較ユニットの構成
図21に、比較ユニット52をさらに詳しく示してある。この照合装置50においては、部分対象キー36のビット数が固定なので1テーブルのエントリ数は固定である。また、圧縮テーブルなのでエントリとビットパターンの対応も固定である。したがって、部分対象キー36の値と各エントリとの比較は固定論理回路により構成可能である。
この照合装置50は4ビットの比較を行う。このため、16個の比較器CMP0からCMP15を備えており、比較器CMP0(エントリNo.0)は入力検索対象キー36と値0との比較、比較器CMP1(エントリNo.1)は入力検索対象キー36と値1との比較、そして、比較器CMP15(エントリNo.15)は入力検索対象キー36と値15との比較を行う。このように各比較器CMPiで、入力値xと固有値iとの比較をおこなう。つまり、比較器CMPi(iは0〜15)はそれぞれのエントリに固有の論理回路である。
比較ユニット52は、比較器の代わりにルックアップテーブルLUTを用いたハードウェアなどの他のハードウェアで構成することも可能であり、本例に限定されるものではない。
図22に示すように、各比較器CMPiは入力値xとして対象キー4ビットを取り、それぞれのCMPiは、それぞれの固有値iとの比較を行う。各CMPiは、入力値xと固有値iとの比較結果「<」「=」「>」の3値(2ビット)をCMPi出力として出力する。各比較器CMPiは、この比較論理に基づき、比較結果を出力するよう比較器毎に論理圧縮され、最適化された回路で構成される。
図23は、比較ユニット52の異なる例を示している。並列に実行されるテーブルロードフェーズ〜マスク読み出しフェーズに時間がかかることを考えれば、必ずしも上記のように16個の比較器CMPiを並列する必要はない場合がある。図23は、1個の比較器CMPxにより比較動作を16回繰り返す構成である。他の処理との処理時間のバランスが取れるのであればハードウェアを削減できる。もちろん、テーブルロードフェーズ〜マスク読み出しフェーズの所要時間との兼ね合いで、比較ユニットに使用される比較器CMPiの必要個数は1個に限定されることはなく、2個以上であっても良い。
判定ユニットの構成
図24に、判定ユニット54のマスク器54aの構成を示してある。マスクフェーズではマスク器VLD54aにより無効エントリのマスク処理がおこなわれる。各エントリをマスクするマスクエレメント54eは、各エントリに対し同一の論理回路である。マスクデータ28aは、実際のエントリ(部分エントリ)26の有効・無効を各1ビットのマスク値で表現したものである。マスクデータ28aにより、比較フェーズでの各エントリ(仮想的なエントリ)の比較結果から、無効エントリの比較結果を取り除き、実際に登録されている各エントリ26との比較結果に変換する。
各マスクエレメント54eは、図25に示すように、比較フェーズのCMPi出力(2ビット)とマスク値(1ビット)の合計3ビットを入力とし、「×」「<」「=」「>」の4値(2ビット)を出力とする。ここで、「×」は無効エントリ、「<」「=」「>」は有効エントリである。
図26から図28に、判定ユニット54の選択回路54bの選択論理を示してある。マスクフェーズ後の各エントリのVLD出力は、「×」(無効)、「<」(キー36<エントリ26)、「=」(キー36=エントリ26)、「>」(キー36=エントリ26)の4状態である。選択フェーズでは、これらのVLD出力の中から完全一致検索、範囲一致検索の照合結果を得て、次段へ繋がるエントリを選択する。図26に示した選択論理は、完全一致検索の選択論理であり、マスク器VLD出力が「01」となるエントリを選択する。完全一致を示す出力関数Gf(i)、出力Gf(i)が1となるエントリがあったかどうかを意味する出力関数Sf、完全一致のエントリを示す関数Nfは以下の通りである。
図26に示したように、VLD出力が「01」のエントリのみの出力Gf(i)(完全一致を示す出力)が「1」となる。したがって、出力Gf(i)が1となったエントリNoを取得することにより、完全一致のエントリNfを得ることができる。バイナリビットツリー方式ではエントリとしての重複登録はありえない。従って、Gf(i)の16出力のうち、完全一致エントリがあれば、唯一であることは保証される。出力Gf(i)による「=」の選択は範囲検索においても照合継続処理で使用する。
図27(a)に右倒れ一致検索型の範囲検索の照合継続選択論理を示し、図27(b)および図27(c)に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。また、図28(a)に左倒れ一致検索型の範囲検索の照合継続選択論理を示し、図28(b)および図28(c)に、中間出力と漸化式により近似候補の出力が得られる論理を示してある。右倒れ一致検索の場合の近似候補を示す出力Gr(i)、中間出力Fr(i)、漸化式Hr(i)、近似候補のエントリNoを示す出力Nr、出力Gr(i)が「1」となるエントリの有無を意味する出力Srは以下の通りである。
また、左倒れ一致検索の場合の近似候補を示す出力Gl(i)、中間出力Fl(i)、漸化式Hl(i)、近似候補のエントリNoを示す出力Nl、出力Gl(i)が「1」となるエントリの有無を意味する出力Slは以下の通りである。
範囲検索の場合、照合継続は完全一致同様の「キー36=エントリ26」の選択であり、照合終了の選択は、範囲検索を右倒れ一致型でおこなうのであれば「キー36>エントリ26」となる最大エントリを選択する。左倒れ一致型であれば、「キー36<エントリ26」となる最小エントリを選択する。したがって、右倒れ一致の場合はVLD出力が「11」のエントリのみの中間出力Fr(i)が「1」となり、左倒れ一致の場合はVLD出力が「10」のエントリのみが出力Fl(i)が「1」となる。
そして、範囲検索において、近似候補を示す出力Gr(i)では、出力Fr(i)が「1」のエントリのうち、最大値のエントリ(エントリ番号が最大のエントリ)のみが「1」となり、その近似候補のエントリNoを示す出力Nrが決定する。
同様に左倒れ一致型の場合は、出力Gl(i)では、出力Fl(i)が「1」のエントリのうち、最小値のエントリ(エントリ番号が最小のエントリ)のみが「1」となり、近似候補となるエントリNoを示す出力N1が決定する。
図29に、右倒れ一致型の場合の出力の変化を示してある。図29(a)は比較フェーズ後のCMPi出力であり、図29(b)は、テーブルより読み出したマスクデータ28aである。図29(c)はVLD出力を示し、ビット毎の(a)×(b)となる。図29(d)は「キー値>エントリ値」となるエントリ群の抽出(中間出力)Frであり、図29(e)の中間出力Hrは、出力Frから右エッジ(「キー値>エントリ値」となる最大エントリ)を抽出したものである。図29(f)は、最終出力Grであり、出力Hrを利用し、「キー値>エントリ値」となる最大エントリのみを出力する。これを見てもGr(i)が「1」となるエントリ、すなわち近似候補となるエントリは1箇所であることは明らかである。
図29(g)は一致検索の出力Gfを示しており、VLD出力をもとに「キー値=エントリ値(01)」となる一致エントリを抽出している。この照合方法においては、テーブル28への重複登録がない構造なので、この一致エントリの唯一性は自明である。出力Grでも出力Gfでも、演算の結果、該当エントリは存在しないか唯一存在のいずれかとなる。
図30(a)から図30(g)に、左倒れ一致型の場合の出力変化を示してある。右倒れ一致型の場合と同様にGlの16出力のうち、Gl(i)が「1」となる近似候補のエントリは唯一であることは保証される。
出力ユニットの構成
出力ユニット55においては、判定ユニット54から得られる上記の照合結果に基づいて各パラメータを更新する。照合タグ更新部54bにおいては、選択回路54bにより得られるエントリNo(出力Nf)に従い照合タグ34を更新する。選択回路54bより得られる出力Sfを見て、出力Sfが「0」であれば更新はおこなわない。照合継続となるエントリがなく候補が確定するからである。出力Sfが「1」であれば、照合器50にロード済みの現段階の圧縮テーブル28のアドレステーブル28bから、エントリNfに対応するタグ情報(アドレス)を読み出し、照合タグ34を更新する。圧縮テーブル28においては、「ワード位置+0」がマスクデータ28aであり、「ワード位置+1」からタグ情報28bが記録されている。
候補タグ更新部55cにおいては、選択回路54bにより得られるエントリNo(出力Nr)に従い候補タグ35を更新する。候補更新情報である出力Srを見て、出力Srが「0」であれば更新はおこなわない。新規候補となるエントリがないからである。候補更新情報Srが「1」であれば、照合器50にロード済みの現段階の圧縮テーブルから、エントリNrに対応するタグ情報を読み出し、候補タグ35を更新する。ここで候補タグ情報35には、タグ情報だけでなく、照合段階を示す候補段階情報も記録することが有効である。この候補段階情報は、候補タグに対応するテーブル段位置に設定する。つまり、候補タグがどのテーブル段であるかを示す情報である。この候補段階情報は、パイプラインが照合段数でフィックスされている分類装置15においては、候補確定後のバイパス処理で必要となるものである。
タグアドレスからテーブル段位置が一意に決定できるようにテーブル28が配置されている場合は、候補段階情報は候補タグ情報に含まれるため、別処理は不要である。そうではない場合、照合器50は自分がどのテーブル段数の処理を担当するのかの情報を保持し、その情報に従い、次段の情報を候補段階情報として候補タグ情報35の中にセットする。照合器50をパイプライン状に接続して利用する場合、テーブル段位置とはつまり照合器IDであるので、自器IDが分かり、自器に対しパイプライン次段にあたる照合器IDが分かればよい。パイプラインの次段の照合器との関係は固定なので、照合器IDは、照合器の初期化時に定めればよい。次段の照合器IDを使用するよりは、テーブルのタグアドレスに照合段階IDを含めてしまうほうが簡素である。データキャッシュを用い、データキャッシュのコントロールをおこなう場合、テーブルは段位置別にグループ化されたアドレスとなるので、それを流用できる。
コマンド更新部55aは、選択回路54bにより得られる照合継続情報である出力Sfに従い、次段に供給するコマンド37を更新する。照合継続情報である出力Sfが「0」であれば、照合継続がなくなり、候補が確定したことを意味するする。したがって、「CMD=MATCHRDBP」を出力する。これにより、次段の照合装置50では候補タグ35と一致している照合タグ情報34によるバイパス処理が行われ最終結果が出力される。照合継続情報Sfが「1」であれば、照合継続であるので、「CMD=MATCHEXEC」を出力する。これにより、次段の照合器装置でも照合タグ34により継続して照合が行われる。
出力ユニット55は、さらに、コマンド更新部55aにより決定した次のコマンド37の値に従い、出力先を決定する。次コマンド37が「CMD=MATCHEXEC」であれば、照合は継続するので次段の照合装置50にパケット化された照合継続情報33を出力する。次コマンド37が「CMD=MATCHFIN」であれば、バイパス読み出し後の出力処理であるから、出力をスルーとして最終段の小照合器50の次(出力器)に送り出す。スルー出力が照合器パイプラインを順次通過しながら出力されるのであれば、次の照合器50に最終出力を送り出す。バス39を使ってショートカットするのであれば、バス39に最終出力を出力する。
次コマンド37が「CMD=MATCHRDBP」であれば、照合は終了し候補が確定するので、候補タグ情報35によるバイパス処理をおこない、検索結果を決定する。この際、候補タグ情報35は必ずしも次段テーブルを指しているわけではなく、それ以前の段を指している場合がありうる。したがって、次段の照合装置50に出力できるとは限らず、候補段階情報により候補タグを扱える段階の照合装置50を特定し、照合継続情報33を出力する。
図31にコマンド37の一覧を示してある。なお、これは完全一致検索、1次元範囲検索に加え、後述する登録・削除も含めたものである。
バイパス処理とショートカット処理
図32に、図16に示した分類装置15においてバックトラックのあるバイパス処理を実行している様子を示してある。この分類装置15においては、バイパス用のバス39を備えており、バス39に照合継続情報33を出力することによりバックトラックを発生させている。図16に示した分類装置15はメモリアクセスタイムを改善するためにメモリ分離型にしている。このため、あるタグアドレスの指すテーブル28は、それに対応する段階の照合装置50からしかアクセスできない。ところが、バイパス処理移行(候補確定)時に得られる候補タグ情報35は、照合器パイプライン上の次段とは無関係に、自器より前のいずれかの照合器50に属するものである。従って、バイパスバス39により候補タグ35に従って処理パイプラインを逆行できるようにしている。
図33に、図15に示したメモリ共用型の照合器パイプラインを備えた分類装置15においてバイパス処理を実行する様子を示してある。メモリ共用型の照合器パイプラインを備えた分類装置15の場合、全ての照合器50がメモリ11に格納された任意のテーブル28にアクセスできるので、バックトラック用のバイパスバスは必要ない。メモリ共用型の照合器パイプラインでは、次段の照合器50がバイパス処理をおこなう。したがって、最終段での次段のバイパス処理発生に対応するため、最終段の照合器50の次にバイパス専用のバイパス処理器58を設ける。F番目の照合器50で照合失敗、すなわち、A〜F番目の照合器50のうち最後に更新された候補が確定することにより次段で候補タグバイパス処理が発生した場合、次のG番目の照合器50がバイパス処理をおこなう。G番目の照合器50は本来、ある段のテーブル28の処理パイプラインを構成しているが、メモリ共用型のため、任意の段のテーブル28にアクセスできる。従って、F番目の照合器50で照合失敗し、候補確定が発生し、G番目の照合器50にてバイパス処理をおこなう場合、テーブルB〜Gのどの位置の候補であっても、そのテーブルにアクセス可能である。
バイパス処理が完了し結果タグ情報(最終照合結果)が得られて以降の照合器50は、結果タグ情報のスルーのみを行う。最終段のG番目の照合器50では、照合継続が検索成功(完全一致エントリ)を意味し、照合失敗がテーブルB〜Gあるいは結果タグのいずれかを指す候補タグが得られる事を意味する。G番目の照合器50で照合継続により検索成功の場合、照合器50から出力されるタグ情報は結果タグ情報であり、それを受けた最終段バイパス処理器58では、検索終了としてステータスだけを更新し、バイパス処理は不要である。
一方、G番目の照合器50で照合失敗により候補確定の場合、候補タグ情報35がテーブルB〜Gのいずれかを指すタグ情報である可能性がある。したがって、バイパス処理器58はバイパス処理を行い、候補タグ情報35の指すエントリからテーブル28にアクセスしてバイパス値(BP)を読み取り、検索終了ステータスにする。G番目の照合器50で候補確定であり、候補タグ情報がG番目の照合器50で更新された場合は、テーブルGに記されたタグが結果タグ情報となる。このため、更新された候補タグ情報は結果タグ情報、すなわち最終照合結果となっている。従って、バイパス処理器58では「ステータス=検索完了」にするだけで、バイパス処理は不要である。
以上まとめると、バイパス処理器58は入力が結果タグ情報であればスルーする。そうでない場合は、テーブルB〜Gのいずれかを指すタグ情報が得られるので、バイパス処理器50はバイパス処理をおこなう。結果タグ情報か否かの識別は、タグアドレスの上位ビットを識別用の情報として使うか、パイプラインを流れるデータに情報を付与することで行うことができる。
図17に示した繰り返し型の分類装置15の場合は、全ての照合器が任意のテーブル28にアクセスできるので上記と同様にバイパス用のバスは必要ない。さらに、繰り返し型の場合、制御用のカウンタ値を、バイパス処理を意味する値にし、繰り返し処理の一環として自器にてバイパス処理をおこなうことができるので、バイパス処理器58も不要である。
ところで、バイパス処理にて得られるタグ情報は最終結果であり、バイパス処理以降の照合器パイプラインはスルーしてパイプライン最終段まで進み分類装置15の出力となる。また、完全一致検索での照合不一致(検索失敗)あるいは範囲検索での照合不一致または候補なし(検索失敗)の場合も同じく、検索失敗のステータスを持って自器以降の照合器パイプラインをスルーしていく。バイパス処理のためのバックトラックがなければ、分類装置15において、検索対象キー21を入力した順番と、それの照合結果が出力される順番とが保障されるが、バイパス処理のためのバックトラックを許容するので、入力の順番と出力の順番が同一であることは保障されない。このため、検索対象キー21にID32をセットにして供給するようにしている。したがって、スルーする場合も、図34に示すように、照合器パイプラインをスルーで進んでいく必要はなく、図35に示すように、バイパス用バス39を転用して照合器パイプラインをショートカットすることが可能となる。
さらには、ショートカット先は常に最終出力部なので、図36に示すように、バイパス用バス39とは別にショートカット用のバス38を設けてもよい。バイパス発生とほぼ同数ショートカットは発生するため、常に決まった宛先のためにバイパス用バス負荷を高める必要はない。バイパス用バス39のバイパス処理での利用率が50%以下であるなら、ショートカットもバイパス用バス39を使う方が、ハードウェアが増大しないというメリットがある。
メモリ共用型照合器パイプラインを備えた分類装置15においては、バイパス用バスは不要である。このため、図37に示すように、ショートカット用のバス38を新規に設けることが望ましい。繰り返し型の分類装置の場合は、制御用カウンタ値の判定でバイパス処理後は繰り返し終了としておけばよく、ショートカット経路は不要である。
検索テーブルの管理(更新処理)
以下では、照合装置50のテーブル更新ユニット60においてエントリ22を追加あるいは削除する処理(更新工程あるいは更新過程)について説明する。圧縮テーブル28はマスクデータ28aとアドレステーブル28bで構成される。したがって、マスクデータ28aにビットあるいはフラグで示された部分エントリを追加したり削除したりするだけで基本的には検索テーブル28の更新が可能であり、ソーティングや正規化などの複雑な処理は必要ない。このため、検索テーブルの管理は非常に簡略化され、高速に処理される。したがって、エントリの登録や削除といったテーブル28の管理を、検索対象キー21の照合処理と並列実行させることができる。つまり、本例の分類装置15においては、削除(登録)と検索が、照合装置50がパイプライン状に接続された照合器パイプラインで並列に実行させることが可能となる。ただし、エントリを追加することにより検索テーブルに用意されるバイパス値BPを更新する必要があるケースがあり、その判断に若干の処理が必要になる。新しい検索テーブルを生成するための処理も必要になる。しかしながら、バイパス値BPは、検索テーブル28にいったん設定すると、照合処理において、近似候補が決定された後の処理をショートカットできる。このため、更新に時間を要しても、検索テーブルの更新時にバイパス値BPを設定しておくことには意味がある。
まず、テーブル28の管理処理と検索処理が照合器パイプラインにおいて並列に実行される状況を想定すると、照合中の整合性を保つための排他管理が要求される。検索(照合)処理においても、処理対象のテーブル28を占有すれば整合性保持は容易になる。しかしながら、ツリー上位テーブルにおけるシリアル化がボトルネックとなり、照合処理の並列実行を阻害しかねない。したがって、検索処理においては「排他は確認するが、テーブルは占有しない」アクセスにより検索処理の間の並列性を生かす。それと共に、登録・削除処理の側、すなわちテーブル更新処理では「排他を確認し、さらに、テーブルを占有する」アクセスで整合性も維持する。なお、検索処理と登録(削除)処理の間では、先行する登録(削除)処理の占有に対し後続の検索処理が排他確認の待ちをおこなうことでシリアル化される。
検索処理は上記のように「排他は確認するがテーブルは占有しない」状態で並列に実行される。このため、登録・削除処理との関係では、検索処理は、先行する登録・削除処理に対しては排他管理により追い越しが発生しないようにする。後続する登録・削除処理については、検索処理の上位構造における並列性起因の問題であり、下位構造たる検索処理で対応できるものではないため対処しない。
登録処理は「排他を確認し、テーブルを占有する」状態でシリアル化されテーブル単位で逐次実行される。また、各テーブルのバイパス情報を更新する必要があり、その情報は下位から上位へと伝播するものであるため、登録処理の時に何らかの形で下位から上位への伝播をおこなわねばならない。考えられる方式としては、上位で待機し下位からフィードバックする待ち合わせ方式と、上位から下位に下り、双方向リンクにより下位から上位に戻る方式との2種ある。待ち合わせ方式の場合、何らかの待ち合わせ機構をハードウェア資源で実現しなければならず、その資源量により並列数やテーブル段数等が制約を受けるが、処理速度的には有利である。ハードウェアによる待ち合わせ機構ではなくメモリによる待ち合わせにすることも可能であるが、メモリアクセスが増えるため、処理速度面での有利性がなくなる可能性がある。双方向リンク方式の場合、資源量起因の制約はないものの、1テーブルのメモリ量増加やリンク読み出しによるメモリアクセス増加(処理速度に影響)など、メモリ周りに不利な点をかかえる。
待ち合わせ方式による登録処理
図38に、待ち合わせ方式による登録処理の概要を示してある。この方式では、テーブル化されたバイナリビットツリーを上から下に辿りながら更新する。その際、バイパスBPの更新が確定したテーブル28は「待ちなし(Wなし)」で更新処理をおこない、バイパスBPが未確定のテーブル28は各段で「待機中(Wあり)」にして待たせておく。新規のテーブル28nを作成する必要がある段階に到達した場合は、新規のテーブル28nを作成した後に、その段階以下の新規なテーブル28nとの連結と、上位で待機中(Wあり)(バイパスBPの確定待ち)となっているテーブル28へのフィードバックを並列におこなう。
図38において、テーブルAでは追加するエントリ22の部分エントリ26は既存(エントリが既存)であり、追加(登録)されるエントリの部分エントリ26がMAXエントリ(最大のエントリ)ではないとする。この場合、下位のテーブルに対するエントリの登録がどうなっても、このテーブルAでのバイパスBPの値に影響を与えずバイパス値BPを更新する必要はない。従って、「待ちなし(Wなし)」でBP更新も不要である。
テーブルBに追加するエントリ22の部分エントリ26は、既存(エントリが既存)であるが、その部分エントリ26はテーブルBのMAXエントリに該当するとする。この場合、下位での結果次第でバイパス値BPを更新する必要がありえる。このため、下位が確定するまでは、このテーブルBのバイパス値BPの更新が必要かどうか確定しないため、下位の更新待ちで「待機する(Wあり)」になる。
テーブルCでは、追加するエントリ22の部分エントリ26が新規(エントリが新規)であり、その新規エントリ26がMAXエントリとする。この場合、このテーブルではバイパス値BPの更新が必要になる。この段階で、バイパス値BPの更新が発生したので、上位のテーブル28へ通知する。「Wあり」状態となっているテーブルBでは下位からの通知を受けてバイパス値BPを更新し、更に上位の待ちがあればそこへ通知する。この例では、テーブルAは「Wなし」なので上位への通知は不要である。
テーブルCから下への流れは上記の上位フィードバックと並列に進む。テーブルCで次段が新規テーブル28nであると判明するので、空テーブル管理キュー69に要求し、応答としてテーブルDになるべきテーブルのタグアドレスを受け取る。そして、テーブルCのマスクデータ28aに新しい部分エントリ26のフラグを追加し、アドレステーブル28bに新しいエントリタグを書き込む。テーブルD以降のテーブルは常に新規なので、空テーブル管理キュー69に対して新たなテーブルのアドレスを要求し、マスクデータ28aおよびアドレステーブル28bにデータを書き込む。同時に、バイパス値BPも更新する。
図39に分類装置15における照合器パイプラインにおいて、待ち合わせ方式でエントリ22を登録する構成を示してある。エントリ22の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値BPの更新保留となったら、各照合装置50に対応する待機管理ユニット68に必要な情報を記録したパケットを投入し、次段以降に進む。次段へは、直接の上位段となる親テーブルでの「待機有無」の情報が伝えられる。バイパス値BPが確定した照合装置50においては、親テーブルで「待機有り」なら、上位フィードバック(FB)を発行する。この上位FBと並列に、下位へのエントリ登録のパイプライン処理はおこなわれていく。上位FBは待機管理ユニット68で待ち合わせたパケットと合流し、保留していたバイパス値BPを更新する。保留解除によるバイパス値BPを更新する処理とは並列に、必要であれば待機管理ユニット68から更に上位保留へのフィードバックを行う。
照合装置においてエントリを登録する処理
図40に、待ち合わせ方式でエントリを登録する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。「DTAG」は結果タグ(登録データTAG)を示し、「TTAG」はテーブルタグを示し、「PWF」は直接の上位段(親テーブル)での待機有無を示すフラグを示す。コマンド「ADD」は上位から下位への既存のエントリのタグを辿って伝播される。コマンド「ADDNEW」は途中段以降の新規テーブルを確保する。コマンド「ADDUPDT」は上位へのフィードでBPの更新を再開する。コマンド「ADDWCLR」は上位で待機している照合装置50に対するバイパス値BPが不変の通知であり、待機解除に繋がる。
照合継続情報33と同様の経路で更新用のデータパケットが照合装置50に伝達される。そして、ロードユニット53により照合タグ34で指示されたアドレスのテーブル28がテーブルバッファ59にロードされる(ステップ120)。コマンドデコーダ51はコマンド37をチェックし(ステップ121)、コマンド37は追加「ADD」から開始される。まず、ステップ122で、マスクを読み出し、ステップ123で、キー値とマスク値により次段が新規かどうかを判断する。次段が新規であれば、ステップ124で、空きテーブルキュー69に対してテーブル28nを要求し、応答を待つ間に、ステップ125で、マスクデータ28aの更新処理をおこなう。マスクデータ28aの読み出し値と、追加する部分エントリ26の値の論理和(OR)を演算し、追加エントリに該当するビット(フラグ)を1にする。
テーブルキュー69から空テーブルを確保した応答が得られると、ステップ126でその空テーブル28nのアドレスをアドレステーブル28bに書き込み、追加処理を伝播するための出力TTAGに空テーブル28nのアドレスをセットする。さらに、ステップ127で、出力するコマンドCMD37を「ADDNEW」にセットする。
コマンド37が「ADD」であり、次段が既存であった場合、ステップ128で自テーブル28のアドレステーブル28bから次段のテーブルアドレスを読み出し、出力TTAGにセットする。ステップ129で出力するコマンドCMD37は入力コマンドと同じく「ADD」のままである。
入力コマンド37が「ADDNEW」であった場合、その段のテーブル28nは前段処理により確保された新規テーブルなので、ステップ130でテーブル初期化をおこなう。これはマスクデータ28aだけの処理でよく、マスク値として該当するエントリビットを1に、他を0にする。初期化以降は、コマンド37が「ADD」で新規エントリであった場合と共通の処理である。エントリの登録を照合装置パイプラインに伝播する過程で、一度、コマンド37が「ADDNEW」、すなわち新規エントリになれば、それ以降の照合装置50に供給されるコマンド37は常に「ADDNEW」であり、上記の処理が繰り返される。また、上位のテーブル28にフィードバックされるバイパス値BPを更新する処理については、コマンド37が「ADDNEW」の場合は常におこなう。
コマンド37が「ADD」の場合、すなわち、現段階のテーブル28は既存のテーブルである場合は、ステップ131で、エントリの位置によって判断する。コマンド37が「ADD」で、該当(新規)のエントリ26が新規(次段TBLが新規)のエントリ22の部分エントリで、それが最大エントリであった場合(MAXエントリ更新)、バイパス値BPは更新が確定する。コマンド37が「ADD」で該当(新規)のエントリ26が新規のエントリ22の部分エントリで、最大エントリではない場合、バイパス値BPは不変で確定する。コマンド37が「ADD」で該当エントリ26が既存で最大エントリではない場合、バイパス値BPは不変で確定する。バイパス値BPが確定する場合、更新するのであればステップ132で更新し、ステップ133で出力PFWを「0」にセットする。一方、コマンド37が「ADD」で該当エントリ26が既存で最大エントリの場合、下位の状況によりバイパス値BPの更新が必要かどうか確定するため、待機管理ユニット68へパケットを登録し、バイパス値BP更新を保留する。更新を保留した場合、ステップ134で、出力PWFを「1」とする。
更新不要、更新確定の場合、状態が定まったので、入力PWFを参照し、上位待機があるかどうかを判断する。上位待機があれば、1段上の待機管理ユニット68へフィードバック出力する。更新確定なら、ステップ135でコマンド「ADDUPDT」、更新不要なら、ステップ136でコマンド「ADDWCLR」とし、上位の更新要不要を指示する。
図41に待機管理ユニット68の動作をさらに詳しく示してある。待機管理ユニット68は、待ち合わせ処理と、その後のバイパス値BPの更新再開および上位フィードの並列化をおこなう。コマンドを見て「ADDUPDT」なら下位の段でバイパス値BPが更新されたので、ステップ137で、バイパス値BPの更新を再開する。そのために照合器50のキューにパケットが投入される。コマンドが「ADDWCLR」なら下位でバイパス値BPの更新がなかったので、キューのパケットは破棄される。ただし、次の上位にフィードする処理は行う。また、コマンドによる処理とはまったく独立に、出力PWF(上位で待ちがあるかどうか)をみて、出力PWFが「1」なら上位へフィードする。そのとき、IDおよびCMDは下位から来たものをそのまま上位へフィードする。
照合装置50では、コマンド37が「ADDUPDT」なら待機していたバイパス値BPの更新処理を実行する。上位へのフィードは待機管理側がおこなうので、バイパス値BPを更新した後は照合器50ではパケットを破棄する。
双方向リンク方式による登録処理
図42に、双方向リンク方式による登録処理の概要を示してある。この方式でのバイパスへの対応は、上から下に辿りながらエントリ登録をおこない、その際にバイパス値BPの更新が確定したテーブルでは更新処理をおこなう。バイパス値BPの更新が未確定テーブルはそのまま下位へ移動し、待ち合わせ処理のような「待ち」は設けない。新規テーブル作成段に到達後、その段以下の新規テーブルの連結と、双方向リンクを辿りながらの上位のテーブルに対してバイパス値BPの確定待ちへのフィードバックを並列におこなう。
図42において、テーブルAでは、エントリが既存であり、MAXエントリではないため、下位がどうなっても、このテーブルAでのバイパス値BPの更新はない。テーブルBでは、エントリ既存であり、MAXエントリに該当する。従って、下位での結果次第でBP更新がありえる。下位が確定するまではこのテーブルBのバイパス値BPの更新が必要かどうか確定しないため保留する。テーブルCでは、エントリは新規であり、その新規エントリがMAXエントリとなる。従って、このテーブルCでバイパス値BPの更新が必要となる。バイパス値BPの更新が発生したので上位へ通知する(双方向リストを利用し上位テーブルBへ遡る)。遡ってきたテーブルBでは、下位からの通知を受けてバイパス値BPを更新し、更に上位へ遡っていく。バイパス値BPの更新の必要がなくなった段で遡りは打ち切りである。一方、テーブルCから下への流れは、待ち合わせ方式による登録と同様に処理待機上位への遡りとは並列に進んでいく。
図43に分類装置15における照合器パイプラインにおいて、双方リンク方式でエントリ22を登録する構成を示してある。双方リンクを辿って上位にフィードバックするので待機管理ユニットは設けられていない。上位フィードバック(FB)は、この図では専用経路であるが、バス効率に影響がなければ検索バイパス用バス39を共用してもよい。双方向リンクによる上位遡りは検索時のバイパス処理(任意の上位へ接続)とは異なり、常に直接繋がる上位テーブル(パイプライン前段の照合器50)へのフィードバックなので、ここでは専用経路による接続とした。エントリ22の登録は上位から下位へ照合器パイプラインを進みながら、テーブルを辿っていく。バイパス値BPの更新が確定した照合器50から双方リンクにより上位フィードバック(FB)を発行する。この際、待ち合わせ方式と同様に、上位FBとは並列に、下位テーブルへの辿り(新規テーブルの接続)はおこなっていく。
この双方向リンク方式においても、並列処理は下位への流れとバイパス値BP確定後の上位へのフィードバックの2並列である。また、上位フィードバックは完全な並列ではないがある程度、パイプライン並列化できる。フィードバックによるバイパス値BPを更新する時に、すぐに上位テーブルリンクを読み出して、バイパス値BPを更新する処理とは分岐して更に上位へのフィードバックを発行することができる。ただし、検索・検索バイパスとの関係で待ち行列数が増えるため、全体のパフォーマンスを検討した上で、上位フィードバックのパイプライン並列化の実装は検討すべきである。
照合装置においてエントリを登録する処理
図44に、双方向リンク方式でエントリを登録する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。ステップ120から132の処理は、待ち合わせ方式と共通するので説明を省略する。バイパス値BPの更新をおこなうのは、コマンド37が「ADDNEW」の場合と、コマンド37が「ADD」で新規エントリがMAXエントリの場合である。前者の場合は上位へのフィードバックは不要である。コマンド37が「ADD」から「ADDNEW」と切り替わる段のテーブルでフィードバック済のためである。したがって、ステップ140でコマンドをチェックし、後者の場合は、ステップ141で上位リンクを辿り、ステップ142で上位テーブルへ「ADDUPDTコマンドパケット」によるフィードバックを出力する。また、「ADDUPDTパケット」が得られると、ステップ143でマスクデータを読み込み、該当エントリがMAXエントリかどうかでバイパス値BPの更新を判断する。上位から下位への処理でエントリは登録済であり「ADDUPDT」を受け取った時点では常に既存エントリである。バイパス値BPの更新をおこなった場合、更に上位テーブルへのフィードバックをおこなう。最上位テーブルでは上位リンクがNULLであり、その場合、フィードバックは終了する。
待ち合わせ方式による削除処理
削除処理も更新処理であり、「排他を確認し、テーブルを占有する」状態でシリアル化されたツリーを構成するテーブルを、テーブル単位で逐次実行される処理である。検索処理との関係も上記と同様である。削除処理の場合、登録同様に下位から上位へ伝播するバイパス値BPの更新があり、この上位への遡りを登録同様に待ち合わせ管理機構でおこなうのが待ち合わせ方式による削除処理である。登録処理とは異なり削除処理の場合は上位から下位へのエントリ検索時点ではバイパス値BPの更新を確定できるケースはない。下位テーブルでエントリが0個になった場合にそのテーブルを開放し、上位へ通知し、上位テーブルのエントリを削除し、必要であればバイパス値BPを更新する処理の流れとなる。この処理は下位から上位へ伝播していく処理である。登録と比べるとバイパス値BPの更新は同じであるが、テーブル削除の上位伝播処理があるため、削除のほうが複雑になる。
図45に示すように、待ち合わせ方式では、コマンド37が削除「DEL」のときで上位から下位へ辿りながら各段で待機し、最下位から上位に向かってコマンド37を「DELUPDT」としてバイパス値BPを更新し、テーブルを削除した情報をフィードしていく。この基本的な流れは待ち合わせ方式の登録処理とほぼ同様である。削除処理の場合、下位でテーブルが空になり開放されると、上位でのエントリ削除とそれに伴うバイパス値BPの更新が発生する。たとえば、テーブルが空になると最終の照合装置50がパイプラインから切り離される。テーブルが空ではない場合は、下位でのバイパス値BPの更新情報を上位へ反映するだけでよい。テーブルが空になった場合、下位でのテーブル削除が上位でのエントリ削除につながり、上位でのエントリ削除の結果、バイパス値BPの更新のため新しいバイパス値BPを与えるエントリの下位への問い合わせするバイパス値問い合わせが発生する。自テーブル内の情報では新しいバイパス値BPを与えるエントリのバイパス値BPは得られないからである。このコマンドが「DELUPDT」のときの下位へのバイパス値問い合わせ(BP問い合わせ)は、登録処理にはなく、削除処理に特有の処理である。
下位へのBP問い合わせは以下の流れで行われる。ステップ151でエントリ削除にともなうバイパス値BPの更新の発生した段階で、下位ヘコマンド「DELRDBP」で問い合わせ、応答待ちのパケットを待機する。下位の照合器50では、コマンド「DELRDBP」を受けると自テーブルのバイパス値BPを読み出し、ステップ152で上位へコマンド「DELWRBP」を送ってフィードバックする。応答待ちとの間で発火し、コマンド「DELWRBP」の処理として問い合わせで得られた新しいバイパス値BPを書き込む。さらにステップ153で、バイパス値BPの更新情報を上位へコマンド「DELUPDT」でフィードバックする。
図46に、待ち合わせ方式でエントリを削除(コマンドが「DEL」)する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。ます、ステップ160で、入力パラメータTTAGで示されるテーブルをロードし、マスクデータ28aを読み込む。ステップ161で、マスクデータ28aと削除対象のエントリ(部分エントリ)をチェックし、対象のエントリが未登録ならステップ162でコマンド37を「DELERR」として削除結果を最終出力する。
ステップ163で次段のタグ情報を読み取り、ステップ164で自テーブルが最下段であるか否かを判断する。自テーブルが最下段ではなかった場合は、ステップ165で、下位からのフィードバック待ち合わせ用のパケット(ID,WID=1,TTAG(自テーブルTAG),KEY(自テーブルエントリKEY)を含む)を待機管理ユニット68に投入する。ステップ166で、次段の照合器50へコマンド「DEL」(ID,TTAG=NextTAG,KEY=SHIFTを含む)を出力する。
一方、自テーブルが最下段であった場合は、ステップ167で、エントリに対応するNextタグ、すなわち、結果タグを読み出し、削除結果として最終出力する。バイパス値BPの更新も含めた削除完了前に応答が戻るのがまずいようであれば、結果タグは上位フィードバックに載せてフローさせ、最上位まで戻りきったところで最終出力する。次に、ステップ168でエントリを削除する。テーブル28のマスクデータ28aのエントリを削除するだけでよい。エントリを削除した後のマスクデータ28aの積算(和集合)SUM−MASKが「0」ならばフラグCEFを1(テーブルが空エントリ)にセットし、SUM−MASKが「1」ならばフラグCEFを「0」(テーブルにまだエントリが残っている)にセットする。また、エントリ削除前のマスクデータ28aと、削除後のマスクデータ28aを比較し、フラグNBPを設定する。削除したエントリがバイパス値BPを与えるエントリであれば、フラグNBPを「1」すなわちBP更新有りにセットする。
ステップ169でフラグCEFが「1」であると判断すると、自テーブルが空エントリになるので、ステップ170で自テーブルを空きテーブル管理キュー69に返却し、パケットのフラグNBPとDTAGをDC(ドントケア)にセットする。
一方、フラグCEFが0の場合、ステップ171でフラグNBPをチェックし、ステップ172で、残ったエントリの中から新しいバイパス値BPを与えるエントリ(MAXエントリ)を選択し、ステップ173で、バイパス値BPを新しいBPエントリ対応するタグ情報(最終結果情報(結果タグ))に更新する。そして、パケットのフラグNBP(バイパス有効)を「1」にセットし、DTAGにバイパス値BP(新バイパスTAG値)をセットする。なお、ステップ171で自エントリがBPエントリでなかった場合、バイパス値BPの更新処理は不要である。そして、ステップ174で、コマンド「DELUPDT」により上位フィードバックの発火用パケットを出力する。
図47に、コマンド37が「DELUPDT」のときの照合装置50における更新ユニット60の処理を示してある。この処理は、コマンド「DEL」が上位から下位に流れたときに待ちに入った照合装置50が、最下段からのコマンド「DELUPDT」を受けたときに、それをトリガとして発火する。まず、ステップ180でテーブルをロードする。ステップ181で、下位からフィードバックされたフラグCEFが0ならば下位テーブルは消えていないので、自テーブルのエントリ削除は不要である。フラグCEFが「0」のときは、ステップ182で、下位からのフラグNBPをチェックし、下位テーブルのバイパス値BPが変更になっているときは、さらにステップ183で自テーブルのマスクデータ28aと削除対象のエントリに従い、自己のフラグNBPをセットする。そして、ステップ185において、自NBPが「1」、すなわち、自テーブルのエントリがBPエントリ(MAXエントリ)であれば、ステップ186でバイパス値BPを更新する。下位のフラグNBPが「0」であれば、ステップ184で自NBPも「0」にセットしてバイパス値BPの更新は行わない。そして、ステップ187で自段が最上位であるかチェックし、最上位でなければ、ステップ188で上位の待ちへフィードバックする。
一方、下位からのフィードバックされたフラグCEFが「1」ならば下位テーブルが消えたので、ステップ189で、自テーブルのエントリ削除をおこなう。フラグCEFが「1」のとき、下位テーブルが消えたのでNBPおよびDTAGはDCである。自テーブルのエントリ削除にともなうバイパス値BPを更新する。さらに、エントリ削除後に自テーブルが空(SUM−MASK=0)ならば、ステップ190でフラグCEFoutを「1」にセットし、ステップ191で自テーブルを開放し、ステップ192で最上位であるか確認後、ステップ193で上位の待ちへフィードバックする。ただし、自テーブルが最上位テーブル(ルートテーブル)である場合、テーブル削除はおこなわない。ルートテーブルは空でも削除しない。また、ルートに対して上位の待ちは存在しないためフィードバックは行われない。
エントリ削除後に自テーブルが空ではなかった場合、すなわちフラグCEFoutが「0」のときは、ステップ194で、新BPエントリ(MAXエントリ)を選択し、ステップ195および196で新BPエントリに対応する下位テーブルからのバイパス値BPの読み出しをおこなう。これは照合器パイプラインの都合により、次小照合器50によるバイパス値BP読み出しを待ち合わせ管理機構で待つ方式でおこなわれる。待機側は、待ち合わせパケット(ID,WID=2,TTAG,KEY)を投入し、下位への依頼側は、コマンド「DELRDBP」により発行する。MAXエントリでない場合は、ステップ197でルートであるか否かを確認し、ステップ198で上位へフィードバックする。
図48にコマンド「DELRDBP」と「DELWRBP」のときの処理を示してある。上位に対するコマンド「DELUPDT」からの指示で下位にコマンド「DELRBP」が送られてくる。コマンドが「DELRDBP」であれば、ステップ201でバイパス値BPを読み出し、ステップ202でDTAGにセットする。そして、上位はバイパス値BP読み出しを待っているので、上位の待機管理68に対して待ち合わせ発火用パケット(ID,CMD=DELWRBP,DTAG=BP,WID=2)を投入する。
自器のコマンド「DELUPDT」からの待機パケットと下位からのコマンド「DELRDBP」完了後のパケットにより発火するコマンド指示が「DELWRBP」である。下位からのDTAGにバイパス値BPが入っているので、ステップ203では、自テーブルを表すTTAGに従いDTAG値を書き込む。自テーブルにおいてバイパス値BPが確定したので、ステップ205で、コマンド「DELUPDT」による上位フィードバッグを再開する。ただし、コマンド「DELUPDT」と同様に、ステップ204でルートテーブルであるか否かをチェックし、ルートの場合は上位がないため、上位フィードバックはおこなわない。
双方向リンク方式による削除
この方式では、まず、コマンド「DEL」により上位から下位にエントリを完全一致型の検索で辿り、最下位まで降りていく点は変わりない。コマンド「DELUPDT」による最下位から上位へのバイパス値BPの更新、テーブル削除情報のフィードは双方向リストによるフィードでおこない、待ち合わせ方式のような待機機構は用いない。したがって、図45に示した待ち合わせ方式とほぼ同様のフローになるが、上位に対するコマンドは待機管理ユニットではなく照合装置50に供給される。
また、下位でのテーブル削除にともなう上位でのBP更新については、待ち合わせ方式の場合同様にコマンド「DELRDBP」および「DELWRBP」でおこなうが、この処理も待ち合わせではなく双方向リストによるフロー移動でおこなう。したがって、待ち合わせ方式であれば、自テーブルのKEY値(削除対象のエントリ)は待機パケットが保持していたため下位からのフィードバックはKEYを気にしなかったが、双方向リスト方式ではコマンド「DELUPDT」による上位フィードごとに該当段のKEYを再び使用できなければならない。従って、上位から下位へのコマンド「DEL」による移動でKEYを消費してしまう(消してしまう)のではなく、KEY値はSHIFTによる参照位置移動とし、コマンド「DELUPDT」のときには逆方向SHIFTで該当段KEY値を得られるようにしておく。つまり、KEY値は4ビット8段テーブルであれば、32(4×8)ビットのKEYフィールドを持ち、コマンド「DEL」では上位ビットから下位ビットへの参照位置移動、コマンド「DELUPDT」では下位ビットから上位ビットへの参照位置移動をおこなう。
したがって、コマンド「DELUPDT」のときは、双方向リストの上位リンクにより上位テーブルタグは得られる。前述のようにKEYは参照位置の移動により、常に該当段のキー値をアクセスできる構造である。コマンド「DELUPDT」のときの下位へのバイパス値BPの問い合わせの際も同様に、上位リンクによる上位テーブルタグの取得、KEY値の適切な参照位置移動がおこなえる。したがって、下位へのバイパス値の問い合わせは、双方向リンクを用いて待ち合わせ方式とほぼ同様に行われる。
図49に、双方向リンク方式でエントリを削除(コマンドが「DEL」)する処理において、更新処理ユニット60が動作したときの照合装置50の制御的な構成を示してある。待機管理ユニットを用いない方式なので、図46に示した制御系統図からステップ165が除かれた以外はほぼ同じ制御で処理は行われる。ステップ174で、コマンド「DELUPDT」で上位フィードパケットを出力する際、送出先のタグアドレスTTAGは上位リンクにより上位テーブルを指定し、エントリKEYは上位方向へ逆シフトし、テーブル段位置と整合させる。
図50に、コマンド37が「DELUPDT」のときの照合装置50における更新ユニット60の双方向リンク方式の処理を示してある。この処理においても、待機管理ユニットを用いない点を除けば、図47と同じ制御で処理は行われる。なお、フィードバックする際に、送出先のタグ情報TTAGは自テーブルの上位リンクにより上位テーブルを指定、エントリKEYは上位方向へ逆シフトしてテーブル段位置と整合させることは上記と同様である。
図51にコマンド「DELRDBP」と「DELWRBP」のときの双方向リンクによる処理を示してある。これらの処理においても、待機管理ユニットを用いない点を除けば、図48と同じ制御で処理は行われる。
上記のように、本発明においては、エントリの追加および削除に伴うテーブルの管理にソーティングや正規化などの処理が不要となるので、エントリの追加削除に伴う照合処理の遅延は従来に比べて非常に小さなものになる。範囲検索におけるエントリとルールの関係については、右倒れ近似および左倒れ近似の説明において詳述している。たとえば、既存エントリが[ai,無限大][bi+1,無限大]{iは複数}の時、新エントリ[a′,無限大][b′+1,無限大]を加えるとき(登録する前に)、[a′,無限大]のルールにはa′でヒットするエントリの(複数の)ルールを加え、[b′+1,無限大]のルールにはb′+1でヒットするエントリの(複数の)ルールを加える。既存エントリが[ai,無限大][bi+1,無限大]{iは複数}の時、[aj,無限大][bj+1,無限大]を削除するとき(削除した後で)[aj,bj]に含まれるエントリから該当ルールを除く。
データキャッシュ付き分類装置
図52に、データキャッシュ17を備えた分類装置15の概略構成を示してある。データキャッシュ17は、照合器パイプライン500を構成する各照合装置50とメモリであるSDRAM11の間に設置される。図53に示すように、本例のデータキャッシュ17は、Nウェイ・セット・アソシアティブ・キャッシュであり(Nウェイは2ウェイや4ウェイが一般的である)、キャッシュラインのサイズがSDRAM11のバースト転送サイズ、すなわち、照合テーブル28のサイズと一致するように構成されている。データキャッシュ17のキャッシュライン17aを1つのテーブルサイズとすることで、分類装置15におけるテーブルアクセスが効率的に行われる。
また、データキャッシュ内にライン単位のメモリ排他管理機構を導入することで、キャッシュメモリ上あるいはSDRAM上のテーブルデータの排他利用が可能となる。そのためには、キャッシュのラインサイズ、ライン数、セット数を適切に構成し、その構成に合わせてテーブルを割り当てれば良く、データキャッシュのヒット率を高めることができる。そして、キャッシュシステム17を採用することにより、汎用のSDRAM11を用いながらさらに高速な分類が可能となる。
図54に、データキャッシュ17を検索種別および照合段階で排他的に利用する例を示してある。本例のキャッシュシステムにおけるテーブル28のオンキャッシュ率を高めるために、照合テーブル28の各段(たとえば、テーブルA−1とA−2)を異なるキャッシュエントリに割り当てる。また異種の照合(たとえば、テーブルA群とテーブルB群)に対してもそれぞれ独立したキャッシュエントリを割り当てる。検索種別は、上流の制御ユニットあるいはアプリケーションから与えられるルートアドレス31により簡単に識別できる。また、照合段階は、パイプライン段数に相当するので、識別は容易である。そして、照合テーブルの新規登録においても、テーブルの確保が必要になった場合、テーブル段位置に対応するキャッシュエントリにマッピングされるSDRAM11のアドレスを持つ空きテーブルを割り当てていく。
また、照合テーブル28はツリー型テーブルの構造となるので、下位段でテーブル数が広がっていく。したがって、下位段テーブルには複数キャッシュエントリを割り当てておくことが望ましい。図54においては、Aタイプの照合用のテーブルAのグループとBタイプの照合用のテーブルBのグループがSDRAM11の上にある。Aタイプの照合処理の第1段テーブルA−1は0番目のキャッシュエントリにキャッシングされるアドレスに確保される。Bタイプの照合処理の第1段テーブルB−1も同様に0番目のエントリになるアドレスである。これらはキャッシュエントリが複数セットで多重化されているため、同時にオンキャッシュとなりうる。
同様にAタイプの照合処理の第2段テーブルA−1は1番目のキャッシュエントリ1、Bタイプの照合処理のB−2には2番目のキャッシュエントリが対応する。この場合、複数の照合がキャッシュエントリで多重化されず、それぞれ独立したキャッシュエントリが割り当てられている。キャッシュが4セットであれば、A−2であれば全16テーブルで1番目のキャッシュエントリの4セットを所有し、最新の4テーブルがオンキャッシュである。下位段、特に、最終段のテーブルA−8およびB−8は数が多くなるので、1段に対して複数エントリを割り当てることも有効である。
図55に、空テーブル管理キュー69が、メモリ11の上でテーブル28を管理する一例を示してある。検索種別毎にあるいはテーブル段毎にキャッシュエントリを分散配置させることでオンキャッシュ率を高める。そのためには、テーブル28を管理する側、すなわち管理キュー69が分類装置50のテーブル確保要求に応じて適切なテーブルを割り当てる必要がある。空きテーブルキュー69は空きテーブルを検索種別(レイヤー1)とそれに含まれるテーブル段位置(レイヤー2)の2階層に分類した個別キューで管理する。分類装置15の初期化時に、キャッシュエントリ毎にテーブル28をグループ化し、更にROM等に設定された(あるいは外部からコンフィグレーションとして与えられる)、(検索種別数×テーブル段数分の)空きテーブル個別キューとキャッシュエントリの対応に従い、テーブルをキューにつないでいく。
図56に空きテーブルキュー管理機構69の応答を示してある。空きテーブルキュー管理機構69は、検索テーブルツリーへのエントリ登録時に照合装置50から与えられるテーブル確保要求(ステップ211)に応じて、空きテーブルを取り出し応答する。この際、検索種別とテーブル段位置が必要となるため、要求情報としてそれらを要求パケットに持たせることとする。管理機構69は、要求情報の検索種別(レイヤー1)・テーブル段位置(レイヤー2)に対応するキューから空きテーブルを1個取り出し(ステップ212)、応答としてそのアドレス(タグ情報)を照合装置50に返す(ステップ213)。
図15に示したメモリ共有型の分類装置15において、SDRAM11と照合装置50の間にデータキャッシュ17がある場合、データキャッシュ17の一つがミスヒットするとデータキャッシュ17およびSDRAM11はこのアクセスに占有されて他のアクセスは待たされる。図16に示したメモリ分離型の分類装置15において、SDRAM11と照合装置50の間にデータキャッシュ17がある場合も、同様に、照合装置50、データキャッシュ17およびSDRAM11はこのアクセスに占有される。これらはデータキャッシュ17とSDRAM11が同期的(シリーズ)に接続しているためである。そのため、1つ遅れると、その遅れは後段に影響する。パイプラインの効率を上げるには、全てのステージにかかる時間を同一にしてやらねばならない。しかしながら、SDRAMアクセスが入ると難しい。
これに対し、要求応答方式のデータキャッシュ17を採用することができる。すなわち、検索対象キー21に対して入力順に照合結果が出力されるというパケット順序の維持はバックトラックが発生することを前提とした段階で不可能である。このため、識別情報(ID)32を導入することにより順序の問題はクリアしている。したがって、ある検索対象キー21の照合のためにテーブル28が要求されたときに、オンキャッシュでなければ照合装置50にその旨を通知する。照合装置50は、処理を中断し、待ち行列に戻し、次の検索対象キー21のパケット33を入れる。データキャッシュ17はSDRAM11へアクセスする。一方、照合装置50からテーブル28を要求されたときに、オンキャッシュならば照合装置50にテーブル28を渡し、照合装置50が処理を進める。さらに、照合装置50において、照合タグ情報34を先読みしてキャッシュシステム17に渡し、必要なテーブル28をプリロードするシステムは有効である。さらに、照合装置50が照合のためにテーブル28をバッファ59にロードした時点で、次の照合タグ34を入れてオンキャッシュを確認することも有効である。
このように、本例のキャッシュシステム17においては、検索種別および照合段階という要素でキャッシュラインの排他性を高めてオンキャッシュ率を高めている。従来のCPUでのデータキャッシュにおいては、キャッシュラインサイズをテーブルサイズに一致させるという発想はリニアアドレス空間を否定するので従来のキャッシュシステムからは得られないものである。さらに、照合テーブル各段を異なるキャッシュエントリに割り当てるという発想も、論理アドレス(のインデクス部分)とテーブルの割付決定を実行時に行うことであり、OSの元ではCPUで実行することは極めて難しい。CPUでは論理アドレスとテーブルの範囲割付決定をコンパイル時に行い、実行時には決められた範囲内から1テーブル分を確保するだけである。この実行時メモリ割付支援機構が認識するのは先頭論理アドレスとサイズである。動的メモリ割付は確保、開放を繰り返すとメモリに隙間を生じ、これをガベージコレクタで整理するというのが前提であった。従い、インデクス部分の衝突を避けて、キャッシュ効率を上げる仕組みを入れ込めなかった。
これに対して、ここで説明している照合方法および照合装置においては、テーブルビット長を固定化(上記の例では4ビット)することによってテーブルを標準化した。このため、テーブルサイズとキャッシュラインサイズとを一致させることが可能になった。そして、キャッシュメモリ17やSDRAM11に対して検索種別および照合段階で排他的なエリアを割り付けたとしても、テーブル同士は照合タグ情報によりリストでつながれている。このため、エントリの(実行時の)削除、登録に対応することができ、オンキャッシュ率を高めるために排他的な領域設定をすることが他の処理において障害となっていない。
履歴キャッシュ付き分類装置
図57に、履歴キャッシュ18を備えた分類装置15の概略構成を示してある。照合装置50の前に履歴キャッシュ18をおくことで、検索処理をさらに高速化でき、検索処理の遅延時間を短縮できる。説明してきたように、本発明の照合方法および照合装置、さらに、分類装置および検索装置は、簡易なハードウェアでビット長の増加にも対応でき、照合速度も早く、さらに、汎用メモリを利用して十分な処理速度が得られるといった多くのメリットがある。しかしながら、複数の照合装置をパイプライン状に接続するか、あるいは照合装置を繰り返して使用することにより照合結果を導く。このため、同一の検索対象ビットストリングが高頻度で表れるようなジョブにおいては、CAMあるいはTCAMと比べたときにレイテンシがあるという差がある。したがって、レイテンシが重要となる検索においては、履歴キャッシュ18を用いるメリットがある。
図57に示した履歴キャッシュシステム18は、SDRAM共用型履歴キャッシュシステムであり、照合テーブル28の置かれるSDRAM11を共用する構成である。図58に示すように、キャッシングアルゴリズムとして「8ビット化ハッシュ+LRU」を使用することができる。そのため、本例のキャッシュシステム18は、ハッシュテーブル検索器18aと、ハッシュ用のキー一括比較器18bとを備えている。ハッシュテーブル18cは照合装置50と同様に4ビット(16エントリ)×2段のツリー構造で構成し、照合装置50と履歴キャッシュ18の間でデータキャッシュ利用方法の整合性を取るようにしている。
履歴SRAMキャッシュ付き分類装置
図59に、履歴キャッシュ専用のSRAM13を備えた分類装置15の概略構成を示してある。履歴キャッシュ18のメモリを専用化した構成であり、テーブル28を記憶したSDRAM11と分離することにより、照合装置50との競合を防止して照合速度の向上を図る。それと共に、ZBL−RAMやZBT−RAM等の応答性のよい低遅延SRAMを、履歴キャッシュ用に占有し、履歴キャッシュ18の性能を向上する。キャッシングアルゴリズムは「8ビット化ハッシュ+LRU」を使用できるが、共用型の場合は照合テーブルとの整合性のあるメモリブロック構成が望ましかったのに対し、図60に示すように、専用SRAM型の場合は、メモリビット幅やエントリの構成を履歴キャッシュに合わせて最適化することができる。
論理演算装置(AND化器)の構成
上述した検索装置10あるいは分類装置15は論理演算装置(AND化器)19を備えている。この分類装置15は、汎用型なので、ルートタグ31により検索種別を上流の制御装置あるいはアプリケーションによって設定することができる。したがって、1つまたは複数の分類装置15による検索種別の異なる検索結果(1次元範囲の検索結果)を複数用いて、AND化器19で論理積を演算する。ことにより、多次元範囲の検索を行うことができる。本例のAND化器19においては、1次元範囲の検索結果を集合として取り扱い、行列演算により多次元範囲の検索結果を単純な操作で得られるようにしている。
その一例がSPD検索機能8である。1つのパケットデータφpを管理するために、ソースIP、デスティネーションIP、ソースポート、デスティネーションポートおよびプロトコルを示すビットストリングを少なくとも照合して、それらの全てを満足するルールを検索する際に、それらを示すビットストリングを検索対象のビットストリングとして、それぞれ異なる分類装置15において照合する。それぞれの分類装置15により得られる複数の分類結果は、範囲検索により複数のルールが含まれたものとなり、それらの分類結果をAND化器19において論理積を演算することにより、パケットデータφpを管理するルールを抽出することができる。
まず、集合Aが要素{A1,A2,・・・,An}で構成されるとする。要素Aiがバイナリ(0/1)のmbit列“ai1,ai2,・・・,aim”で表せるとする。同様に集合Bが要素{B1,B2,・・・,Bn}で構成されるとする。要素Biがバイナリ(0/1)のmbit列“b1i,b2i,・・・,bmi”で表せるとする。
このとき、集合A、Bの積(AND)集合A&Bは、行列におけるA、Bの積「A×B」で表せる。詳しい演算式は、以下の通りである。
ここで、Σ内はブール乗算(*)とブール加算(+)に展開される。ブール乗算・ブール加算の定義は、ブール乗算「*」はENOR(Exclusive NOR、非排他論理和)、ブール加算「+」はANDである。ブール加算は、(1+1=1 1+0=0 0+1=0 0+0=0)である。また、ブール乗算は、(1*1=1 1*0=0 0*1=0 0*0=1)である。ENORは比較回路の「=」のロジックと同じであるので、Ai*Bjは比較等号回路を「AND」で結んだものだと理解してもかまわない。行列で理解したほうが見通しは良い。
図61に、集合Aが2要素、集合Bが3要素、さらに各要素が3ビットで現れる例を具体的に示してある。左辺行列Aは集合Aの要素A1,A2が各行に並べられている。また、行列Bは集合Bの要素B1,B2,B3が各列に並べられている。右辺行列Zの1行1列は「a11*b11+a12*b21+a13*b31」であり、「A1×B1」である。これはAND化器19におけるブール演算の定義により、A1とB1のビット比較結果(1=一致/0=不一致)を意味する。同様に行列Zを列方向で見ると、1列目は「A1とB1の比較結果」と「A2とB1の比較結果」になっている。同様に行列Z2列目は「A1とB2」と「A2とB2」の比較結果である。つまり、行列Zの各列は行列A全体(集合A)と行列Bを構成する各列(集合B要素Bi)の比較結果である。
したがって、行列演算の結果、例えば、右辺行列Zが図62に示すようになっていれば、左辺行列Xの{a11 a12 a13}行(集合要素A1)が集合Aと集合Bの積集合A&Bである。つまり、行列Zの各行において行内に1つでも1が立つ行に対応する行列Xの行が積集合である。ここで「1つでも1が立つ行」を言い換えれば、行列Zの各行において行内の値の論理和ORを取った結果が1となる行に対応する行列Aの行が積集合である。
したがって、行列Aに対して、論理積を求める要素を掛け算し、1つでも1が立つ行が残れば、それらの要素の積集合が得られたことになる。図63にLSI化を念頭に行列演算を一般化したものを示してある。左辺の行列Xは行毎に集合Aの要素A1,A2,・・・である。左辺の行列Yは列毎に集合Bの要素B1,B2,・・・に加え、集合Cの要素Ci,・・・で構成される。列の数は限定されない。行列Zを列毎にみると、行列X全体と行列Yのある1列との演算となっている。行列Zは最終的には行毎に行内で論理和ORが演算され、A*B*C*・・・の積集合要素が決定される。従って、行列Zはその値全体を保持しておく必要はなく、列毎にブール行列演算した上で、累積結果としてOR演算していけばよい。
図64に、AND化器19のハードウェア構成の一例を示してある。AND化器19は、複数のブール行列演算レジスタ19aを有しており、集合Aの各要素が各レジスタ19aにセットされる。さらに、各々のレジスタ19aに対応して、レジスタ19aの演算結果の累積論理和(OR)を演算して結果を蓄積するアキュムレータ19bを備えている。各アキュムレータ19bは「0」に初期化される。このAND化器19に対し、入力要素19inとして、集合Bの要素Bi、集合Cの要素Ciなどの各列を順次に投入すると、入力列毎に以下の演算処理がおこなわれる。まず、ブール行列演算レジスタ19aと入力列による、ブール行列演算An×Yi(ENOR演算、AND演算となる)が行われる。次に、ブール行列演算の結果とアキュムレータ値によるOR演算が行われる。そして、OR演算の結果によりアキュムレータ19bの値が更新され、最終入力後にアキュムレータ19bに1が残る行に対応する集合Aの要素群が集合A,B,C,…の積(AND)集合、すなわち、A&B&C&‥である。
ブール行列演算はENOR論理によるビット比較をAND論理で繋いだものであり、回路的に見れば、各ブール行列演算レジスタはレジスタ値Anと入力値Yiとのmビット完全一致比較結果を出力し、その比較結果をアキュムレータで累積ORしていることになる。ブール行列演算レジスタの数やビット長にもよるが、ENOR論理およびAND論理を組み合わせて回路を作る事は極めて簡単である。そして、入力値1個とレジスタ値複数個が一度に比較できるので、レジスタ数分の並列性がある。したがって、本例のAND化器19は、単純な構成でありながら、短時間で多次元範囲検索の結果を導出することができる。あるいは、並列レジスタがコスト高という場合は、レジスタを1個あるいは数を減らして、レジスタ値はメモリにし、入力値に対して1行分ずつ繰り返しブール行列演算することによっても本例のAND化器19は実現できる。
レジスタ値をメモリに展開することにより、メモリの許す限り、ルールを入れることができるというメリットがある。このため、多数のルールあるいは要素を有する集合から論理積により要素を絞り込むのに適している。ただし、繰り返し処理でありメモリリードもあるため、処理時間は長くなる。ブール行列演算処理とメモリリードをパイプライン化することは可能であり、この構成によりメモリリード処理時間を隠蔽することも可能である。
さらに、AND化器19は内部にアキュムレータ19bを持ち、またレジスタ19aに最初の集合の要素を保持する構造である。このため、複数の多次元範囲検索の並列実行を考えるとそれらは共有資源である。したがって、何らかの資源排他占有が求められる。一方、分類装置15においては、複数検索の各次元の検索が並列におこなわれえるため、例えば、検索系S1,S2の各次元A,Bについて、分類器からの出力はS1A,S2B,S2A,S1Bのように検索系も同検索内の次元も順序性のない出力となりうる。先に分類装置15から出力された検索系がAND化器19を占有利用する方式でも、先に分類装置15からの全次元出力がそろった検索系が占有利用する方式でも、いずれにせよ分類装置15の出力が非同期・無順序であるため、AND化器19の利用率および多次元範囲検索としてのスループットを高効率でおこなうためには、AND化器19も並列化することが望ましい。AND化器19のレジスタおよびアキュムレータをメモリ化した場合は、メモリ上での並列化でも効果が得られる。
また、AND化器19の動作を考えたとき、初期設定「BEGIN(レジスタ設定・アキュムレータ初期化)」と終了処理「END(アキュムレータからの読み出し)」が必要であり、同系内でも分類器入力と出力の間での順序性がない。このため、次元Aだから初期設定処理、次元Bだから終了処理というように操作は固定的に決定できない。分類装置15からの出力を検索系ごとにキューイングし、全次元の分類器出力が完了したのち、明示的に初期設定と終了処理をコントロールする方式となる。結局、これらの制御もあるので、分類装置からの出力がそろった検索系がAND化器19を排他占有する制御方式が望ましいといえる。
AND化器19の並列利用のためには、速度を要求されるならAND化器19そのものを複数用意することで対応できる。次善策としては、レジスタ19aおよびアキュムレータ19bのメモリ保存によるメモリ上での並列化をおこなうことで対応できる。さらに、履歴キャッシュ18を導入している場合、多次元範囲検索における履歴キャッシュ18の使い方を工夫することで、AND化器19の使用率を下げることができ、AND化器19を並列利用しなくても十分な処理速度を維持することも可能である。例えば、32ビット5次元の多次元範囲検索であれば、160ビット(32ビット×5)のキーによる履歴キャッシュ18を採用し、履歴キャッシュ18のエントリデータとして、初回検索時にAND化器19を使って演算した5次元の積集合結果を登録する。つまり、履歴キャッシュ18には分類装置15の最長一致検索の履歴、完全一致検索の履歴、1次元範囲一致検索の履歴をエントリデータとして登録することも可能である。しかしながら、多次元範囲検索の場合は、各次元個別の履歴ではなく、全体としての多次元範囲検索の履歴をエントリデータとして取り扱うことによりAND化器19による処理がクリティカルパスになることを抑制できる。
上記に、幾つかの例を示しながら本発明について詳しく説明しているが、上記の例に本発明が限定されるものではない。
省略テーブル
以下では、照合テーブル28の数をさらに削減する方法を説明する。照合装置50を用いた検索においてはエントリビット列を4ビットずつの部分エントリに分割してテーブル化し、テーブル化ビットツリーにより登録し、検索していく。この方法では、ある段以降が1エントリしか存在しなくてもテーブルを生成し、検索においてもテーブルを辿る必要がある。これを改善し、ある段以降が1エントリであれば下位テーブルを省略するテーブル構造を導入することが可能である。
図65に下位テーブルを省略する例を示してある。テーブルBは本来のテーブル構成では「B−C−D」となる1エントリが存在するが、下位が1エントリであるため「C−D」を省略し、その代わりにテーブルBに省略情報(エントリの省略した下位ビット列、省略段数、省略マークなど)を記録しておく。テーブルEでは直接の下位接続はテーブルFの1個であるが、エントリとしては孫テーブルで分岐したGおよびHの2エントリ以上が存在するため、省略はされない。
テーブルBの下位に収容される2エントリ目の登録時に、省略された下位テーブルは展開(生成)される。上図では「B−C−X」と繋がるべきエントリXの登録が行われる際、テーブルBにて下位テーブルの省略情報を検出し、第一エントリに相当するテーブルCおよびテーブルDの生成し、第二エントリに相当するテーブルXの生成をおこなう。
ここで、第一エントリのテーブル生成と第二エントリのテーブル生成はシリーズにおこなうのではなく、テーブルBの次の段は同ビット列なので共通テーブルCを生成するという方法もある。テーブルCの次では異なるビット列なので分岐しテーブルDおよびテーブルXを生成するというように、2エントリが分岐する段までは統合的にエントリを生成することができる。したがって、エントリを登録する処理時間を短縮できる。
また、分岐の次段では再度それぞれの下位が1エントリになる。このため、そこで省略テーブル形式でテーブル生成することになる。例えば、上図においてテーブルDおよびテーブルXが最下段ではなく、さらに下位に延びているのであれば、テーブルCで分岐した次のテーブルDおよびテーブルXはその下位にそれぞれ1エントリしか存在しない。このため、下位テーブルは省略される。省略テーブル形式で生成されると、検索時は照合装置50がテーブル28の省略マークを見て、そのテーブル下位が省略されていることを検出する。したがって、照合装置50は、次段のテーブルを読み出さずに最終照合結果を得ることができるので、照合時間も短縮できる。
圧縮テーブル(照合テーブル)28が省略テーブルの場合には、4ビット×n段分のエントリ省略ビット列が記録される。したがって、照合装置50では、エントリビットをシフト読み出ししながら検索モードに応じた照合を行うことが可能となる。1エントリに対する完全一致・近似一致の照合であれば、上述した照合器50の比較部52を使う代わりに、専用化した比較器を実装したほうが効率的な場合がある。また、専用比較器を使用するのであれば、4ビット比較×n回でおこなう必要はなく、リソースのバランスを見た上で多ビットの比較器とすることが望ましい。
省略テーブルでは検索対象キー21と1エントリとの比較であるため、完全一致検索であれば完全一致照合、範囲検索であれば、大・同・小が判定できる比較照合が可能な比較器でよい。また、比較後のエントリ選択処理は不要であり、比較結果から検索結果を判定するだけである。完全一致であれば比較で一致なら検索成功、不一致なら検索失敗である。範囲一致であれば比較で大または一致であれば(右倒れ型)検索は成功、左倒れ型の場合も同様に比較が小または一致なら検索成功である。
削除については、削除の結果、1エントリとなる部分を検出し、その下位からエントリビット列を集約し再度の省略テーブル化を行わなければならない。テーブル管理の処理時間は増加する可能性がある。しかしながら、上述したように、照合時間を短縮できるので、メリットは大きい。各段のテーブル28に収容エントリ数カウンタを設け、上位から下位へ削除エントリを辿る際にカウンタを減算し、1エントリのみとなるテーブル位置を検出する。そのテーブルを省略テーブルに変更し、その下位の省略対象エントリのテーブル列を辿り、最下段から上位へと省略ビット列(=エントリNo)を合成しながら上位へと上げていき、省略テーブルに集約して省略ビット列として記録するという方法がある。削除によるテーブル再省略化は、上述した更新処理よりも複雑でありテーブルアクセスも増える(時間がかかる)。従って、登録時のみ省略・展開をおこない、削除では再省略化をおこなわない方式もありうる。検索頻度と登録・削除頻度とのバランスで、登録削除が一定以上多い場合、展開・省略の繰り返し、すなわち、テーブル確保・開放の繰り返しとなり、分類器全体の性能低下を招く可能性もある。
照合装置のパイプライン化
図66に、要求応答方式のメモリアクセスと照合装置の内部のパイプライン化の概要について示している。上記においても説明したが、照合装置50においてはマスクデータ28aの読み出しがボトルネックの1つである。マスクデータ28aがなければ、判定ユニット54から下流の処理(VLDからSELおよび出力ユニット55における処理)が実行できず、マスクデータ28aの読み出しと並列に実行できるのは主に比較ユニット52の処理だけである。従って、照合器50の内部処理もパイプライン構成とし、テーブルロード(マスク読み出し)フェーズにてキャッシュ(SDRAM)へメモリリード要求を出し、応答のあったものからVLD以降の処理をおこなうことが考えられる。そのために、VLDステージの前に待ち行列57があり、そこで応答の待ち合わせがおこなわれる。
図66に示した例では、メモリ要求〜応答の間にCMPステージ52を入れているため、待ち行列57に待ち合わせ機構が必要となる。データキャッシュなしの場合は、メモリアクセスはFIFOであり待ち行列57もFIFOによる待ち合わせでよいが、データキャッシュがあった場合、ヒット・ミスヒットにより順序性がなくなり、CAM等のFIFO型よりは高度な待ち合わせ機構が必要となる。データキャッシュなしの場合でも、メモリアクセスをともなわないモード(スルーなど)があるので、やはり単純なFIFO待ち合わせ型の行列では無理がある可能性がある。メモリアクセスを伴わない場合も、ダミーのアクセス要求を出してダミー応答を戻させ、応答数とFIFO待ち数を整合させればFIFO型で対応できる可能がある。
図67に異なる照合装置50の例を示してある。この例では、メモリアクセスを伴うものとそうではないものを分岐させ、メモリアクセスを伴うものは非順序の応答をVLD直前の合流待ち行列57に戻す。一方、メモリアクセスを伴わないものは、待ち行列57の前のステージ57pで必要な処理があればおこない、合流待ち行列57に入る。この場合、合流待ち行列57は単なる2方向からの合流のみであり待ち合わせは不要となる。この構成では、待ち合わせ機構を不要とするため、メモリアクセスとCMP処理52の(空間的な)並列化はなされないが、照合装置50の内部のパイプラインにより時間的な並列化には有効である。
マスクデータのプリフェッチ
図68に、マスクデータを先読み対応可能なテーブル化によるメモリアクセスストールを解消する例について示してある。マスクデータの読み出しに係るボトルネックを解消するためにテーブル28の構成を変更する。図68(a)に示すテーブル28は、そのテーブルのエントリ有無を示す情報としてマスクデータ28aがあり、次テーブルのアドレスを示すアドレステーブルを示すNextTAG×16エントリで構成されている。図68(b)に示す第1型の改良型テーブル281は次段のアドレス「NextTAG×16エントリ」28bの次に、次段のマスクデータ「NextMask×16エントリ」28pを配置したテーブル構成となっている。また、図68(c)に示す第2型の改良型テーブル282は、次段のマスクデータ「NextTAG」28bと次段のマスクデータ「NextMask」28pのペアが16エントリ登録されているテーブル構成である。いずれも、次段の照合テーブル28のアドレスだけではなく、マスクデータ28aも備えているので、次段のマスクデータ28aをプリフェッチすることができる。
ただし、改良型のテーブル281および282においても、テーブル管理や検索以外での利用のため、次段のマスクデータ「NextMask」と同じ値が、次段のアドレス「NextTAG」の指すテーブル28bに記録されていることが望ましい。したがって、あるテーブルにはそのテーブル自身のマスクデータと、次段のマスクデータの2種のマスクデータが存在することが望ましい。テーブル下位からエントリを辿っていく場合に、上位のテーブルにしかマスクデータがない場合、そのテーブルだけでは隣接エントリへの移動が不可能になってしまうからである。
次段のマスクデータをプリフェッチする構成にするのに伴い、照合装置50の間をフローする照合継続情報のデータパケット33にマスクデータ28aを追加する。この改良により、照合装置50の処理においては、入力パラメータ(照合継続情報)33としてその照合装置50で使用する照合テーブルのマスクデータ28aが与えられる。このため、マスクデータ28aを必要とする判定ユニット54から下流の処理と、ロードユニット53の処理とを並列に実行することが可能となる。
マスクデータ28aをリードすることに起因するストールを解消するという点では、分類装置15あるいは照合装置50に内部SRAMを設け、各テーブルのマスクデータ28を照合装置50の内部に配置することで並列度を向上することも可能である。
以上に説明した照合方法および照合装置は、IPヘッダのようなビットストリングを一致検索したり、範囲検索してルーティングするデータ管理方法を実現するのに好適である。すなわち、照合装置50、および照合装置50を備えた分類装置15は、データ管理装置1の検索機構10、8s、7sおよび6sとして好適なものである。しかしながら、本発明の照合方法および照合装置の適用範囲は、これらに限定されるものではない。
MIN検索・MAX検索
複数の照合装置50を備えた分類器15を様々に応用する場合、MIN検索・MAX検索があると便利である。バイパスをMAXバイパスとしていた場合に、検索対象キー{11・・・11}で右倒れ近似検索をおこなうことで、登録エントリの中からMAXエントリを検索することはできる。だが、MINエントリは検索できない。従って、この場合、MIN検索モードで検索することでMINエントリを取り出すことになる。ソートなどのように検索ではなく、登録&取り出しの処理において、分類器15を利用できる場面がある。このとき、MIN検索およびMAX検索の両方を備えていることはメリットがある。
照合器50において、比較ユニット52の処理を省略し、判定ユニット54からなる検索モードが実行できるようにすることも有効である。たとえば、比較ユニット52のCMPiからは常に「=」(01)が出力されるようにする。あるいはMIN検索・MAX検索モードになったときには、比較ユニット52をスルーして判定ユニット54のVLD54aに「01」が入力される回路としても良い。
この検索モードにおいては、VLD54aにより有効エントリのみ「01」となり、SEL部54bにて、MAX検索モードであれば比較結果が「01」のエントリの中から最もエントリNoの大きなエントリが選択される。また、MIN検索モードであれば最もエントリNoの小さいエントリが選択される。右倒れ・左倒れのGl・Gr関連部でエントリ選択論理を「>(11)・<(10)」から「=(01)」に変更することにより実現できる。テーブル乗り移り処理であるタグ更新部55bは完全一致検索モードに準じ、出力Sr・Slで指定されたエントリNoを次テーブルとした照合タグ情報34の更新をおこなう。以上により、各段のテーブルで最小エントリ・最大エントリを辿っていくMIN検索・MAX検索機能を提供できる。
次に、分類装置15をソートへ適用する場合、ソート後のデータ読み出しのための拡張が必要となる。昇順先頭読み出し・降順先頭読み出しはMIN検索・MAX検索で可能である。従って、昇順次読み出し・降順次読み出しのためのコマンドが必要となる。これを実現するためには、テーブルは双方向リンク型テーブルとする。また、昇順先頭読み出し(MIN検索あるいは{0・・・0}近似検索)・降順先頭読み出し(MAX検索あるいは{1・・・1})の出力パラメータとして、最下段テーブルのTAG+エントリNoを読み出しハンドラとして出力する。
さらに、コマンド「NEXT・PREV」を設け、読み出しハンドラ(最下段テーブルTAG+エントリNo)を入力パラメータとして受け取ると、次エントリの結果TAGと共に更新した読み出しハンドラ(最下段テーブルTAG+エントリNo)を出力する。照合器50の内部では、まず照合TAG(読み出しハンドラの最下段テーブルTAG)34に従い、テーブル28よりマスクデータ28aを読み出す。読み出しハンドラのエントリNoに基づき、次エントリNo(前エントリNo)を算出し、テーブル28から対応するエントリのアドレス「NextTAG」(最下段なので結果TAG)を読み出す。もし、次エントリNo(前エントリNo)が別のテーブルになる場合は、双方向リンクの上位リンクを使い1段上位テーブルに遡り、そこで隣接エントリに移る。1段上位にも自エントリしかなかった場合は更に上位に遡っていく。上位テーブルで隣接エントリに移ったら再び最下段まで降りなければいけないが、これはMIN検索・MAX検索モードによりおこなう。
データベース検索
この分類装置15は、リレーショナルデータベース(RDB)にも適用できる。バイナリビットツリーによる検索はデータベースではインデクスに相当する。したがって、複数のフィールドをバイナリビットツリー登録しておけば、これらをキーとしてデータベースを検索できる。検索の種類は最長一致でも、範囲一致でも、完全一致でも対応できる。この処理では、複数のフィールドを検索後のAND処理(積集合をとる処理)を高速で行うことが望ましい。つまり「A0<身長<A1」と「B0<体重<B1」を別々に検索できたときに、「A0<身長<A1」かつ「B0<体重<B1」の集合を高速に得られることが望ましい。予めフィールドが固定的に決定されているならば、そのフィールド群による複合(多次元)インデクスを生成しておくのが一般的である。対象フィールドが固定的に決定できず、複合インデクス(身長と体重の2次元インデクス)が生成できない場合、「CPU+OS」の検索システムではおそらく次の方法で論理積を演算する。すなわち、レコード名をRiとすれば、「A0<身長<A1」の集合{R1,・・・Rm}(個数はm個)と、「B0<体重<B1」の集合{R′1,・・・R′m}(個数はm′個)を求め、二つの集合のメンバを総当りで比較し両方に属するメンバを残す。これがAND集合になる。この場合、比較計算はm×m′回になる。
これに対し、分類装置を用いると、次のような操作が可能である。集合{R1、・・・Rm}を分類器15に登録し、集合{R′1,・・・R′m}を照合した時、前の集合で登録したメンバにヒットすればこれがAND集合のメンバになる。この場合、比較計算はm+m′回になり、処理速度が向上する。
この分類装置は、積集合(AND集合)だけでなく、和集合(OR集合)の演算も、ユニーク化も、また、ソートも簡単にできる。「CPU+OS」の検索システムで、データベースにテンポラリーな印をつけて良いならば、次の方法で論理積(AND)を演算できる。集合{R1,・・・Rm}の各メンバを検索の都度、印をつける。{R′1,・・・R′m}の各メンバを検索の都度、前の印があるものをあげる。この場合、比較計算はm+m′回になるが、不要な印の処理やディスク本体のデータベースへのアクセスなどの問題が起こり、時間がかかりすぎる。ビットマップ法は高速に論理積(AND化)できるがルール数に制約があるなど汎用化は難しい。
これに対し、上述した分類装置によるAND集合をとる方法は、パケットフィルタリング等の複数ルール集合のAND集合化にも使える。本分類器15では、例えば、5つのID(5種類のビットストリームに対する検索)に対応する5つのインスタンスを並列に動かし、ID毎にヒットするルールに印をつけていく。既に4つの印を確認したインスタンスはこれをANDインスタンスへ通知する。ANDインスタンスは通知される都度、今の最優先ルールと比較し、更新する。5つのインスタンスが全て終了した後、今の最優先ルールに決定する。
非リニアメモリアドレッシング
本発明の分類装置により、ツリー構造型の非リニアメモリアドレッシングの実現も可能となる。アドレスを検索対象のキーとし、本発明の分類器をメモリ管理機構に取り込むことで、上位層からみて柔軟なアドレッシングが行えるメモリ空間が実現できる。これは従来のリニアアドレス空間メモリに対し、上位層が明示的に構造化管理を行っていた部分をメモリ管理機構が隠蔽カプセル化し、メモリを抽象化オブジェクト化することに他ならない。
さらに、従来、CPUのコードでおこなっていたメモリのオブジェクト化アプローチとは異なり、ハードウェアベースのアプローチとなる。したがって、高速および効率的に、オブジェクト化を実現できる。特に、検索のためのメモリ利用の場合、分類器によるアドレッシング(=照合)が効果的に利用できる。
図69に、その一例を示してある。受信時、インターフェイス(I/F)230を経由してリニアアドレス(論理アドレス)の書き込みデータ(受信データ)239を受け付ける。分類器15は、受信データ239をSDRAMメモリ11へ書き込む。分類器15は、アドレス変換機能232を持っているので、論理アドレス(リニアアドレス)から実アドレス(リストやツリーなど何らかの構造をもった非リニアアドレス)へ変換し、SDRAM11に書き込む。一方、I/F230を介してデータを送信している方は、リニアアドレスで書き込むことができる。送信時も同様である。I/F230からリニアアドレスで読み出すときに、分類器15を経由することで、アドレス変換をおこなう。これにより、リニアアドレスから実アドレスへ変換し、非リニアなアドレスからの連続読み出しに対応できる。
CPU235も分類器15によるアドレッシングを利用できる。CPU235はデータフロー動作ではないため、分類器15が提供するアドレッシング配下のメモリ11だけではコード実行等に支障がある。従って、コード蓄積やデータ加工用として独自にメモリ236を持ち、分類器15の配下のメモリ11はパケットメモリとして利用する。ルータ等を考えた場合、CPU235は分類器15によるTCP/IP処理を補助するものとして、ルーティングエントリ管理やフィルタリングルール管理などのハードウェア処理ではカバーできない処理を肩代わりする。つまり、分類器15がメイン機能を担当し、CPUはサブとして動作する。
テーブルルックアップ駆動プロセッサ
分類装置15は、状態遷移によるテーブルルックアップ駆動のプロセッサにも適用可能である。図70は単純状態遷移を示しており、KEY(i)を検索し、その結果TAG(ルール)でKEY(i+1)を読み取れるようにしておけば、「KEY(1)−KEY(2)−・・・−KEY(j)−KEY(1)」のような単純ループ型の状態遷移ができる。
図71は、イベント連動型単純状態遷移を示しており、イベント(i)がトリガとなってKEY(i+1)に遷移し、イベント(i)以外でKEY(i)に戻る。KEY(i)はイベント(i)待ち行列でイベント(i)を待つ。イベント(i)が来たらKEY(i)にイベント(i)を直列につないで検索する。イベント(i)は1ビットで、正が{1}、誤が{0}としKEY(i)を「101・・・01」とすれば「101・・・011」でヒットし、「101…010」でミスヒットとなる。ヒットルールにはイベント(i+1)待ち行列アドレス、KEY(i+1)が書き込んである。ミスヒットルールにはイベント(i)待ち行列アドレス、KEY(i)が書き込んであり、戻ることになる。さらに、本発明の分類装置は、条件分岐を含む状態遷移にも適用可能である。
さらに詳しく説明する。本書において説明している分類器における検索とは、「検索対象のキーを入力とし、そのキーをタグ(ルートタグ)で示されるテーブルツリーのエントリと照合し、結果(結果タグ)を出力する」ことである。オートマトンのベースとなる状態遷移における検索は、「外部入力を現在状態からの遷移条件で評価し遷移先を決定する」と定義できる。ここで、「外部入力=検索対象キー」、「現在状態=現在タグ」、「遷移条件=照合ロジックとタグの指すテーブルのエントリ記述」、とすれば、「外部入力(キー)を現在状態(現在タグ)からの遷移条件(照合ロジックと現在タグの指すテーブルエントリ記述)で評価し遷移先を決定する」と定義でき、本発明によりオートマトンを実現できる。
上記においては、分類器あるいは照合器による検索は、ツリー状に組織化された構造(テーブル)における上位から下位への一方向の遷移として説明しているが、状態遷移のように、ネットワーク状に組織化された構造における双方向の遷移であっても良い。これらの相違は、比較スケールが異なるだけと言うことができる。すなわち、分類器の検索がツリーの一方向遷移であるというのはミクロの視点であり、状態遷移が双方向ネットワークであるというのはマクロの視点である。1つの検索対象キーに対する動作という同一スケールで見た場合、照合器および分類装置は、予め定められたルール(エントリ記述)に従って、検索対象キーを評価し、結果を出力する。したがって、状態遷移においては、ある状態における遷移条件を、分類装置で検索する際の、検索のツリー状エントリ記述によって表現すれば良い。言い換えれば、状態遷移を検索の連鎖と見て、その状態毎の検索を分類器検索により実現するアプローチにより、分類器を、状態遷移マシン、あるいはオートマトンに応用できる。
図72(a)に、状態遷移を、分類器を用いた検索により実現する例を示してある。状態S1から条件「a」で状態S2に遷移し、条件「b」で状態S3に遷移する状態遷移マシンを仮定する。図72(b)に示すように、状態S1における状態遷移条件「a」および「b」を登録ビットパターン(エントリ)とする状態S1の登録パターンテーブル(S1テーブル)321を生成することができる。したがって、図72(c)に示すように、S1テーブル321から、照合用のバイナリビットツリー324を形成する複数の部分パターンテーブル325を生成する。そして、分類装置15により、現状態である状態S1で得られた状態遷移の評価元(条件)を検索対象のキーとして、上述した照合処理を行い、一致検索により遷移先の状態を出力できる。
図73(a)に、ネットワーク状に状態が遷移する簡単な例を示してある。この例では、上記に加え、条件「c」で状態S2から状態S1に移行し、条件「d」で状態S2から状態S3に移行する。また、条件「e」で状態S3から状態S1に移行し、条件「f」で状態S3から状態S2に移行する。図73(b)に示すように、状態S2における状態遷移条件「c」および「d」をエントリとする状態S2の登録パターンテーブル(S2テーブル)322と、状態S3における状態遷移条件「e」および「f」をエントリとする状態S3の登録パターンテーブル(S3テーブル)323とを生成することができる。状態S2に移行したときは、その状態における評価元(条件)が検索対象のキーとし、S2テーブル322から生成された部分テーブル325を用いて分類装置15により照合処理が行われる。状態S3に移行したときは、その状態における評価元(条件)が検索対象のキーとし、S3テーブル323から生成された部分テーブル325を用いて分類装置15により照合処理が行われる。このように、移行した先で、照合する際に用いられる部分テーブル325を入れ替えることにより、ネットワーク状の状態遷移に対しても本発明を適応することができる。部分テーブル325の入れ替えは、部分テーブル325の最上位の部分テーブルのアドレスを示すルートタグを指定することで可能なことは説明した通りである。
図74に、分類装置15を用いたデータ処理装置300の一例を示してある。このデータ処理装置300は、状態により処理内容が決まるデータ処理回路301と、状態のそれぞれにおけるデータ処理回路301の処理内容(アクション)310を格納したRAM302と、データ処理回路301の状態遷移エンジンとなる分類装置15とを備えている。RAM302には、状態に応じて分類装置15の検索に用いられる複数種類のテーブルツリー324と、それを構成する部分テーブル325が記憶されている。このデータ処理装置300は、アクション実行部であるデータ処理回路301の状態が遷移する状態遷移マシンであり、分類装置15は、データ処理回路301から供給されたキー(検索キー)303を検索対象のビットストリングとし、ルートタグ(検索テーブルツリーTAG)304によりRAM302に記憶されたテーブルツリー324を検索し、結果タグ305を出力する。この状態遷移マシン300において、検索テーブルツリーTAG304は、遷移条件テーブルツリー324のルートタグであり、結果タグ305は、次状態タグである。また、検索キー303は、状態遷移の評価元となるデータである。したがって、このデータ処理装置300においては、データ処理回路301は分類装置15に対して検索キー303を供給する検索対象供給手段としても機能している。
次状態タグ305とは、その状態への遷移に伴い実行すべきアクション記述310と、その状態から別の状態への遷移条件記述を指すタグである。実装によってはアクション記述や条件記述を、次状態タグ305に関連して決まる間接ポインタで示すことも可能である。アクション記述310では、遷移条件の評価元となる検索キー303を、データ処理回路301の内部あるいは外部状態から取り込むプロセスも指示されている。また、次状態タグ305により、次の遷移条件を検索する遷移条件テーブルツリー324が決まるように、アクション記述310に、遷移条件テーブルツリー324を構成する照合テーブルの最上位を示すルートタグ304の情報を入れておくことも可能である。
したがって、このデータ処理装置300は、分類装置15において、照合装置50を用いた多段階の照合方法により状態遷移の評価元となるデータを検索対象のビットストリングとし、複数の状態遷移条件を示すデータを複数の登録ビットパターンとして照合し(照合する工程)、その照合結果によりデータ処理回路301の状態を遷移する(遷移する工程)制御方法により制御されている。このため、分類装置15に搭載される各々の照合装置50においては、上記において説明した照合方法における現段階を現状態として照合処理が行われる。そして、現状態の次の状態を示す照合継続情報が出力される。分類装置15において、次の状態を検索するために、1つの照合段階を費やしても良く、複数の照合段階を費やしても良い。
アクション記述310をコード、キー303を分岐先アドレス、分類装置15よる遷移条件評価を分岐先メモリアドレス変換器と捉えることも可能である。したがって、データ処理装置300は、状態遷移ベースのプロセッサとして機能する。通常のプロセッサでは、CPUという状態遷移ハードウェア(チューリングマシン)の上にソフトウエアコードでアプリケーションとして状態遷移マシンを実現する。このデータ処理装置300は、分類装置15を用いて、直接的に状態遷移マシンを実現することができる。
さらに、この状態遷移マシン300により、有限状態オートマトン(FA)が実現できる。有限状態オートマトンは、入力により内部状態を変えていき、その結果として何らかの応答を出力する機械である。このデータ処理装置300においては、ルートタグ304を変更したり、アクション記述310の命令セットによりデータ処理回路301がRAM302の内容を書き換えたりすることにより、遷移条件テーブルツリー324(すなわち照合テーブル)を変えることができる。したがって、データ処理装置300は、内部状態の変更を、状態の遷移と状態ごとのアクションで定義した状態遷移マシンとして実現されている。
有限状態オートマトンには、決定性FA(DFA)と、非決定性FA(NFA)がある。決定性FAは、状態の遷移が一意に決まる有限状態オートマトンであり、非決定性FAは、遷移状態が一意に決まらない有限状態オートマトンである。理論的にはNFAはDFAに変換できるが、NFAをNFAとしてハードウェアとして実現できることには状態空間の節約などの点で有意義である。「遷移状態が一意に決まらない」ことは、「状態が並立する」ということである。したがって、データ処理装置300により、並列データフロー型のシステムを構築すれば、その状態マシンではNFAを実現することが可能となる。
通常のCPUでは、バックトラックなどにより、状態の並列を逐次方式で解決するため効率が良くない。しかしながら、並列データフロー型の分類器オートマトンでは効率的なDFAが実現できる。
QoSへの適用
分類装置15をクラス階層構造データへのQoSに適用することができる。したがって、図1に示したルーティング装置1のQoS機能7にも採用されている。IPルータ1におけるパケットφpのQoSに用いられるクラス検索を、IPアドレスを検索対象のビットストリングで行う場合、範囲検索を用い、検索テーブル7mへ登録するエントリを、クラス構造を反映したエントリとすることができる。
図75(a)に、クラス構造の一例を示してある。このクラス構造350に対し、図75(b)に示すような照合用のバイナリビットツリー354を形成することができる。このバイナリビットツリー354は、登録ビットストリングとして右倒れ型範囲検索用エントリが登録されている。したがって、図75(b)に破線で示すようなIPアドレス355を検索対象ビットストリングとし、分類装置15を用いた範囲検索により、そのIPアドレス355が該当する最下位クラスのエントリを得ることができる。この例では、IPアドレス355はクラス1.1に分類される。
分類装置15による検索で最下位クラスを分類する際に用いられるクラスツリー350も形式としてはテーブル型のツリー構造である。したがって、図76に示すように、クラスツリー350のテーブルと、検索ツリー354の部分テーブルとを関連付けすることが可能となる。このため、分類装置15においてテーブル照合を行う照合器50に、クラスツリー350に対する処理を行うハードウェアを追加することも可能である。例えば、自クラスの割り当てトークン消費、トークン不足の場合の上位クラスからの借り入れなどのために上位・下位ツリーを探索する機能を追加することが可能であり、クラスのトークン管理をハードウェア化することができる。
この管理は複雑になるが、上述した状態遷移(オートマトン)プロセッサを適用することができる。QoSのための検索やトークン管理のためのツリー探索などを、プロセッサとしてのアドレッシングとすることにより、データ構造そのものとデータへの処理コードが一体となったアーキテクチャが実現する。
図77に示すように、通常のCPU360では、メモリ361に格納された処理コード選択用検索テーブル362の検索処理がCPUコード363によりソフトウェア(アプリケーション)として実行される。このため、検索テーブルを検索するための検索コード(検索処理のソフトウェア)363と、処理コード(データ処理のためのソフトウェア)364が分離している。したがって、CPU360は、検索コード363のロード(i段階)、検索コード363による実行(ii段階)、コンテキストスイッチ(データ処理コード364のロード)(iii段階)、処理コード364の実行(iv段階)となる。処理コード364のアドレス解決は、照合用の検索キー空間をソフトウェア的に検索することにより行われ、処理コード364のアドレッシング(コード空間)と検索キーのアドレッシング(検索キー空間)とは一致しない。
これに対し、図78に示すように、分類装置15を用いたプロセッサ300においては、検索テーブル(データ構造あるいはデータ空間)362に対して照合器50によるハードウェア検索で、検索キーに対応する処理コード364のアドレスを得ることで、検索キーから直に(ハードウェア的に)処理コード364のアドレスを解決することができる。そして、そのアドレス解決により得られた処理コード364を処理回路301により直接実行できる。したがって、コンテキストスイッチは不要となり、コード空間と検索キー空間とを一致させることができる。
通常のCPUで分類装置を用いたプロセッサのように直接的なアドレス解決が行えないのは、CPUがリニアアドレッシングに基づくチューリングマシンであり、そのチューリングマシン上にソフトウェア的(仮想的)に状態遷移マシンやオートマトンを実装しなければならないためである。これに対し、分類装置を用いると、検索処理とアドレス解決とを結びつけ、状態遷移マシンあるいはオートマトンを直接的に実現することが可能となり、データ空間とコード空間を統合した効率的なシステムを実現することができる。また、この延長線上に、データとそのデータに対する処理手続きを統合したオブジェクト指向プロセッサのようなシステムも実現可能となる。
本発明に係る照合方法および装置は、完全一致検索、最長一致検索から多次元範囲一致検索までカバーでき、複数の照合装置を備えた分類装置は、パケットフィルタリング・SPD(Security Policy Database)検索、ステートフルインスペクションなどのルール検索に用いられることができる。さらに、データキャッシュ、履歴キャッシュを導入することにより、照合速度を向上することが可能であり、多種多様な検索を伴う処理に適用できる。検索以外の応用機能としては、集合抽出、集合演算、整列(ソート)・ユニーク化、メモリアドレッシング、状態遷移マシン、知的連想マシン、オートマトンへの応用(言語理論・オートマトン理論)、大規模なデータベースから有用なルールあるいはパターンを高速に発見するデータマイニングなどを例として挙げることができ、応用範囲はこれらに限られるものではない。
【0005】
たり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の1つである。
発明の開示
本発明のビットストリングの照合方法においては、検索対象のビットストリング(被検索ビットストリング)を複数ビットの部分対象ビットストリング(部分被検索対象ビットストリング)に分けて、予め登録された複数の登録ビットパターンと多段階で照合するプロセスを有する方法を採用する。多段階に含まれる1つの照合段階である現段階は、検索対象のビットストリングから、現段階の部分対象ビットストリングを選択し、その現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、現段階に先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、全照合工程とは独立に、全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程とを有する。この現段階のパターンテーブルは、現段階の部分対象ビットストリングが取り得る全ての値に対応した領域を持ち、現段階の部分対象ビットストリングに対して照合対象となる部分登録ビットパターンを示す。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段
たり、一連の処理を繰り返すことにより対応可能な照合方法および照合装置を提供することも本発明の目的の1つである。
発明の開示
本発明のビットストリングの照合方法においては、検索対象のビットストリング(被検索ビットストリング)を複数ビットの部分対象ビットストリング(部分被検索対象ビットストリング)に分けて、予め登録された複数の登録ビットパターンと多段階で照合するプロセスを有する方法を採用する。多段階に含まれる1つの照合段階である現段階は、検索対象のビットストリングから、現段階の部分対象ビットストリングを選択し、その現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、現段階に先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、全照合工程とは独立に、全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程とを有する。この現段階のパターンテーブルは、現段階の部分対象ビットストリングが取り得る全ての値に対応した領域を持ち、現段階の部分対象ビットストリングに対して照合対象となる部分登録ビットパターンを示す。
現段階は、さらに、全照合工程の結果と現段階のパターンテーブルとにより、現段階の部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、この照合結果により、現段階のパターンテーブルに対応するアドレステーブルから、現段階の次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力工程とを有する。アドレステーブルには、現段階のパターンテーブルに示された部分登録ビットパターンのそれぞれに続く次の段階のパターンテーブルのアドレスが示されている。このため、アドレステーブルの中から、現段階において一致する部分登録ビットパターンに続く、次の段階で照合する部分登録ビットパターンを示す次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することができる。
この照合方法を実現する照合装置として、本発明においては、検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するための照合装置であって、多段
【0006】
階の少なくとも1つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の1つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、この全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
階の少なくとも1つの照合する段階を実行する照合装置を提供する。この照合装置は、検索対象のビットストリングから、多段階の1つの現段階の部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、先行する段階から得られる照合継続情報により決まる現段階のパターンテーブルを、この全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現段階のパターンテーブルとにより、部分対象ビットストリングに一致する部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現段階のパターンテーブルに対応して記録されたアドレステーブルから、次の段階のパターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを有する。
これらの照合方法および照合装置は、現段階で一致する部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力することにより完全一致および最長一致の検索機能を提供する。さらに、判定工程および判定手段において、部分対象ビットストリングに値が最も近い最大または最小の部分登録ビットパターンの有無を含む照合結果が得られると、出力工程および出力手段では、一致する部分登録ビットパターンがないときに、アドレステーブルから、最大または最小の現段階の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む照合継続情報を出力できる。これにより、検索機能として範囲一致を含めた照合方法および照合装置を提供できる。
ここで、部分対象ビットストリングに値が最も近い最大の部分登録ビットパターンとは、部分対象ビットストリングより値が小さくて最大の部分登録ビットパターンを意味する。また、部分対象ビットストリングに値が最も近い最小の部分登録ビットパターンとは、部分対象ビットストリングより値が大きくて最小の部分登録ビットパターンを意味する。最大の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する右倒れの範囲検索が可能となる。また、最小の部分登録ビットパターンに続くパターンテーブルのアドレスが選択されることにより、以下で説明する左倒れの範囲検索が可能となる。したがって、右倒れ型の検索においては、以下で説明する最大の側が選択され、左倒れ型の検索においては、以下で説明する最小の側が選択される。
【0007】
また、本発明の照合方法および照合装置においては、多段階の照合の1つの段階(現段階)において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。そのため、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン(以降ではエントリとも称する)を示す現段階のパターンテーブルを、照合とは独立した処理でメモリよりロードし、完全一致または範囲一致を導くことができる。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、1ビットで1エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテー
また、本発明の照合方法および照合装置においては、多段階の照合の1つの段階(現段階)において、全照合工程および全照合手段により、部分対象ビットストリングが取り得る全ての値と照合する。そのため、現段階の部分対象ビットストリングと照合する対象となる、現段階の部分登録ビットパターン(以降ではエントリとも称する)を示す現段階のパターンテーブルを、照合とは独立した処理でメモリよりロードし、完全一致または範囲一致を導くことができる。
パターンテーブルは、部分エントリのビット列そのものである必要はなく、むしろ、部分エントリの値を直接またはビットパターンあるいはフラグなどにより部分エントリと対応するような形式で示すデータであることがデータ量の点から望ましい。本発明においては、部分対象ビットストリングが取り得る全ての値と照合する全照合工程あるいは全照合手段を備えている。したがって、全照合の際に照合の対象となる値の範囲において、パターンテーブルは、部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータで与えることができる。すなわち、全照合の際に、予め部分対象ビットストリングが取り得る値の範囲が決まっているので、そのようなマスクデータでメモリに記憶し、またメモリからロードすることが可能である。したがって、パターンロード工程および手段においては、マスクデータをメモリからロードする。
また、この照合方法および装置においては、部分対象ビットストリングが取り得る全ての値と照合するので、パターンテーブルの量あるいは領域としては、部分対象ビットストリングが取り得る全ての値をカバーできる量あるいは領域が予め確保される。したがって、エントリを追加する際は、基本的にはマスクパターンを更新するだけで良く、エントリの追加削除にともなうエントリ移動は発生しない。このため、上位アプリケーションによるテーブル管理のオーバヘッドを縮小または排除できる。したがって、パケットフィルタリングやステートフルインスペクションにおいても上位アプリケーションソフトウェアの負担が軽いビットストリングの照合方法および照合装置を提供できる。
特に、マスクデータの場合は、1ビットで1エントリを表現することも可能となるので、パターンテーブルの記憶容量は大幅に削減され、また、パターンテー
【0008】
ブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理(全照合工程および手段)は、独立した処理なので、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては4から5ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング(以降ではキーとも称する)のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とが独立した処理なので、これらを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、
ブルをロードする時間も短縮される。さらに、更新する際も、エントリの追加削除の処理に書き換えるビット量は大幅に少なくなり、処理は簡略化され、処理時間も短縮される。したがって、パターンテーブルをマスクデータ化することは有効である。
部分対象ビットストリングが取り得る全ての値と照合する処理(全照合工程および手段)は、独立した処理なので、比較器やルックアップテーブルを用いてハードウェアで高速に実行可能であり、多段階に分割することによりハードウェアの規模も大きくならない。部分対象ビットストリングのビット長は限定されるものではないが、ビット長が長くなればハードウェアは大きくなり、ビット長が短ければ照合段数が増加する。ハードウェアの適切な規模は、ハードウェアの目的、経済的な価値、実現可能な配線ルールなどに依存して変わる。現状では、部分対象ビットストリングのビット長としては4から5ビット程度が好ましいと考えられる。さらに、検索対象となる被検索ビットストリング(以降ではキーとも称する)のビット長増に対してもハードウェア自体のアルゴリズム的な変更は必要なく、ユニットを追加したり、一連の処理を繰り返すことで対応可能となる。
本発明の照合方法および照合装置は、簡易な構成で高速化できるという大きな効果を備えている。まず、全照合工程とパターンロード工程とが独立した処理なので、これらを並列に行うことが可能であり、多段階に分割することに伴い発生するメモリからパターンテーブルをロードするオーバヘッドの時間も大幅に削減できる。したがって、特殊な構造で高速なメモリを使わなくても、十分に速い検索速度を発揮でき、廉価で大容量の検索を高速に実行する照合方法および装置を提供できる。そのような照合装置は、収容可能なエントリ数はSDRAM容量にのみ規定されるため、スケーラブル性が高く、また、メモリ管理が柔軟に行える。したがって、複数種の検索を単一のハードウェアセットで柔軟におこなえるものになる。
メモリに対してデータを入出力するキャッシュ装置を設けることにより、パターンテーブルをロードする時間のオーバヘッドをさらに削減できる。キャッシュメモリの効率を向上し、ミスヒット率を低減するには、パターンテーブル、
【0015】
る全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、現状態の検索対象ビットストリングが取り得る全ての値に対応した領域を持ち、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルを、全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
1つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。QoSの検索などに本発明の状態遷移(オートマトン)プロセッサを用いると、QoSの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
図面の簡単な説明
図1は、管理装置の例としてルータの概要を示す図である。
図2(a)〜図2(f)は、一致検索の照合状態を説明する図である。
図3は、バイナリビットツリー上の照合状態を示す図である。
図4(a)〜図4(f)は、右倒れ一致型の近似について説明する図である。
図5(a)〜図5(f)は、左倒れ一致型の近似について説明する図である。
図6は、バイナリビットツリーをテーブル分割した様子を示す図である。
図7(a)〜図7(c)は、照合テーブル(部分テーブル)を示す図である。
図8(a)および図8(b)は、MIN/MAXサーチを説明する図である。
図9(a)および図9(b)は、部分テーブルでMIN/MAXサーチを行う様子を示す図である。
図10は、圧縮テーブルでMIN/MAXサーチを行う様子を示す図である。
る全照合手段と、複数の登録ビットパターンを示すためのパターンテーブルであって、現状態の検索対象ビットストリングが取り得る全ての値に対応した領域を持ち、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルを、全照合手段とは独立に、メモリよりロードするパターンロード手段と、全照合手段の結果と現状態のパターンテーブルより、現状態の検索対象ビットストリングに一致する現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、照合結果により、現状態のパターンテーブルに対応するアドレステーブルから、現状態の次の状態の前記パターンテーブルのアドレスを含む照合継続情報を出力する出力手段とを備えている。
1つの状態遷移を決定するのに、複数の照合装置を用いた設計も可能であり、その場合は、本発明の分類装置が遷移先の検索に用いられる。照合する内部状態、すなわち、状態遷移条件を外部条件や内部条件で変更することが可能であり、検索対象供給手段により、照合装置に供給される照合テーブルが指定されるようにしても良い。データ処理回路によりメモリの照合テーブルが書き換えられるようにしても良い。QoSの検索などに本発明の状態遷移(オートマトン)プロセッサを用いると、QoSの検索とプロセッサとしてのアドレッシングが一体となったアーキテクチャを実現することができる。
図面の簡単な説明
図1は、管理装置の例としてルータの概要を示す図である。
図2(a)〜図2(f)は、一致検索の照合状態を説明する図である。
図3は、バイナリビットツリー上の照合状態を示す図である。
図4(a)〜図4(f)は、右倒れ一致型の近似について説明する図である。
図5(a)〜図5(f)は、左倒れ一致型の近似について説明する図である。
図6は、バイナリビットツリーをテーブル分割した様子を示す図である。
図7(a)〜図7(c)は、照合テーブル(部分テーブル)を示す図である。
図8(a)および図8(b)は、MIN/MAXサーチを説明する図である。
図9(a)および図9(b)は、部分テーブルでMIN/MAXサーチを行う様子を示す図である。
図10は、圧縮テーブルでMIN/MAXサーチを行う様子を示す図である。
Claims (51)
- 検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合する過程を有するビットストリングの照合方法であって、
前記多段階に含まれる1つの照合段階である現段階は、
前記検索対象のビットストリングから、前記現段階の前記部分対象ビットストリングを選択し、前記現段階の部分対象ビットストリングが取り得る全ての値と照合する全照合工程と、
前記複数の登録ビットパターンの各々の部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルを、前記全照合工程と前後して、または並列に、メモリよりロードするパターンロード工程と、
前記全照合工程の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の前記部分登録ビットパターンの有無を少なくとも示す照合結果を得る判定工程と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力工程とを有する照合方法。 - 前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項1の照合方法。
- 前記出力工程では、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項1の照合方法。
- 前記判定工程では、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果が得られ、
前記出力工程では、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項1の照合方法。 - 前記一致する現段階の部分登録ビットパターンがあり、さらに、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検索のパターンテーブルのアドレスを候補アドレスとして記憶する候補アドレス記憶工程を有し、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときには、前記出力工程において、前記候補アドレスを含む前記照合継続情報を出力する、請求項4の照合方法。 - 前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程および判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項4の照合方法。 - 前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記範囲検索のパターンテープルのアドレスを含む前記照合継続情報が与えられたときは、前記全照合工程、前記パターンロード工程および前記判定工程をバイパスする工程を有し、
前記出力工程では、前記範囲検索のパターンテーブルに対応する前記バイパスデータを含む最終照合情報を出力して前記検索対象のビットストリングの照合を終了する、請求項4の照合方法。 - 前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有する、請求項1の照合方法。
- 前記全照合工程と前記パターンロード工程とを並列に行う、請求項1の照合方法。
- 複数の前記照合段階がパイプライン方式で実行される、請求項1の照合方法。
- それぞれの前記照合段階の前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルを更新することにより、前記登録ビットパターンを追加または削除する更新工程を有し、前記照合段階と並列にパイプライン方式で実行される、請求項10の照合方法。
- 前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新し、その際、前記バイパスデータの更新が発生する可能性のある前記照合段階の前記照合テーブルの更新は、前記下位の前記照合段階の前記照合テーブルの更新を待ってから行う、請求項11の照合方法。 - 前記照合テーブルは、前記パターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記更新工程においては、上位の前記照合段階の前記照合テーブルから下位の前記照合段階の前記照合テーブルを更新する工程と、前記下位の照合テーブルの更新により前記上位の照合テーブルの前記バイパスデータの更新が発生した場合は、双方向リンクにより前記上位の照合テーブルの更新を行う工程とを有する、請求項11の照合方法。 - 複数の前記照合段階の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項1の照合方法。
- 請求項4に記載の照合段階を複数備えた分類過程を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示している分類方法。
- 複数の前記分類過程と、
前記複数の分類過程により得られる複数の前記範囲に含まれる前記複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算過程とを有する、請求項15の分類方法。 - 前記論理演算過程では、前記複数の分類結果の論理積を行列演算し、前記最終の分類結果を得る、請求項16の分類方法。
- 請求項15に記載の分類方法により、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとし、前記検索対象のビットストリングが属する前記範囲を照合する工程と、
前記検索対象のビットストリングが属する前記範囲の前記分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する工程とを有するデータ管理方法。 - 請求項1に記載の照合方法により、前記検索対象のビットストリームを照合する工程と、
その照合する工程の照合結果に基づき前記検索対象のビットストリングを備えたデータを管理する工程とを有するデータ管理方法。 - 請求項1に記載の照合方法により、状態遷移の評価元となるデータを前記検索対象のビットストリングとし、複数の状態遷移条件を示すデータを前記複数の登録ビットパターンとして照合する工程と、
前記照合する工程の照合結果によりデータ処理回路の状態を遷移する工程とを有するデータ処理装置の制御方法。 - 検索対象のビットストリングを複数ビットの部分対象ビットストリングに分けて、予め登録された複数の登録ビットパターンと多段階で照合するために、前記多段階に含まれる少なくとも1つの段階を実行する照合装置であって、
前記検索対象のビットストリングから、前記多段階の1つの現段階の前記部分対象ビットストリングを選択し、その部分対象ビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンの部分登録ビットパターンを示すためのパターンテーブルであって、前記現段階に対して先行する段階から得られる照合継続情報により決まる、前記現段階のパターンテーブルをメモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現段階のパターンテーブルとにより、前記現段階の部分対象ビットストリングに一致する前記現段階の部分登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現段階のパターンテーブルに対応するアドレステーブルから、前記現段階の次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを有する照合装置。 - 前記パターンテーブルは、前記部分登録ビットパターンの有効無効を示すビットフラグからなるマスクデータである、請求項21の照合装置。
- 前記出力手段は、前記一致する現段階の部分登録ビットパターンに続く前記次の段階の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項21の照合装置。
- 前記判定手段は、前記部分対象ビットストリングに値が最も近い最大または最小の前記現段階の部分登録ビットパターンの有無を含む前記照合結果を出力し、
前記出力手段は、前記最大または最小の現段階の部分登録ビットパターンに続く前記次の段階の範囲検索のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項21の照合装置。 - 前記出力手段は、さらに、前記一致する部分登録ビットパターンがあり、前記最大または最小の現段階の部分登録ビットパターンがあるときに、前記範囲検索のパターンテーブルのアドレスを候補アドレスとして出力し、さらに、
前記一致する現段階の部分登録ビットパターンおよび前記最大または最小の現段階の部分登録ビットパターンがないときに、前記候補アドレスを含む前記照合継続情報を出力する、請求項24の照合装置。 - 前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記アドレステーブルから、そのパターンテーブルに示された最大または最小の部分登録ビットパターンに続く次の段階のパターンテーブルのアドレスを含む前記照合継続情報を出力する、請求項24の照合装置。
- 前記パターンテーブルは、そのパターンテーブルに示された最大また最小の部分登録ビットパターンに対応して決まる最大または最小の前記登録ビットパターンを示すバイパスデータを有し、
前記出力手段は、前記範囲検索のパターンテーブルのアドレスを含む前記照合継続情報が与えられたときは、前記範囲検索のパターンテーブルに対応する前記バイパスデータを最終照合情報として出力する、請求項24の照合装置。 - 前記パターンテーブルおよび前記アドレステーブルを更新することにより、前記登録ビットパターンを追加または削除する更新手段を有する、請求項21の照合装置。
- 前記全照合手段と、前記パターンロード手段とは並列に動作する、請求項21の照合装置。
- 請求項21に記載の照合装置を複数有する分類装置。
- 前記複数の照合装置はパイプラインで接続されている、請求項30の分類装置。
- 前記複数の照合装置の間では、前記照合継続情報を含むデータがパケット化されて伝達される、請求項30の分類装置。
- 前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項30の分類装置。
- 前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、前記キャッシュ装置のキャッシュラインのサイズが前記照合テーブルのサイズと同一である、請求項33の分類装置。
- 最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記キャッシュ装置は、それぞれの検索種別および前記照合段階の単位で前記キャッシュラインを割り当て、前記検索種別および照合段階の単位で前記キャッシュラインを管理する管理手段を備えている、請求項34の分類装置。 - 最初の照合テーブルを指定する検索種別情報を受信する手段を有し、
前記メモリには、それぞれの検索種別および前記照合段階の単位で割り当てられた個別アドレス領域に前記照合テーブルが記憶されており、
前記キャッシュ装置の前記キャッシュラインは、前記個別アドレス領域単位で割り当てられている、請求項34の分類装置。 - 前記キャッシュ装置は、照合テーブルがオンキャッシュでなければ前記照合装置にその旨を通知し、その照合装置の処理を中断して待ち行列に戻す、請求項33の分類装置。
- 当該分類装置の分類結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記照合装置に供給する前に、当該分類装置の分類結果と前記検索対象のビットストリングとを比較する履歴キャッシュ装置を有する、請求項30の分類装置。
- 請求項30に記載の分類装置を有し、前記登録ビットパターンは複数の分類結果を含む範囲を示しており、前記検索対象のビットストリングが属する分類結果を出力する検索装置。
- 複数の前記分類装置と、
前記複数の分類装置により得られる複数の前記範囲に含まれる複数の分類結果の論理積を演算し、最終の分類結果を得る論理演算装置を有する、請求項39の検索装置。 - 前記論理演算装置は、前記複数の分類結果の論理積を行列演算し、最終の分類結果を得る、請求項40の検索装置。
- 前記メモリに対してデータを入出力するキャッシュ装置を有する、請求項39の検索装置。
- 当該検索装置の検索結果を記憶した履歴キャッシュ装置であって、前記検索対象ビットストリングを前記分類装置に供給する前に、当該検索装置の検索結果と前記検索対象のビットストリングとを比較する履歴キャッシュを有する、請求項39の検索装置。
- 請求項40に記載の検索装置を有し、
前記検索装置に、IPアドレス、ポート番号およびプロトコルの少なくともいずれかを含むパケットを管理するためのビットストリングを前記検索対象のビットストリングとして供給する手段と、
前記検索装置から出力された分類結果に基づき前記検索対象のビットストリングを備えた前記パケットを管理する手段とを有するデータ管理装置。 - 請求項30に記載の分類装置と、
前記分類装置の出力に基づき前記検索対象のビットストリングを備えたデータを管理する手段とを有するデータ管理装置。 - 請求項30に記載の分類装置を有し、前記複数の登録ビットパターンは、複数の状態遷移条件を示すデータであり、
前記分類装置に対し、状態遷移の評価元となるデータを前記検索対象のビットストリングとして供給する検索対象供給手段と、
前記分類装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置。 - 前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記分類装置の出力または前記検索対象供給手段により、最初の前記照合装置に供給される前記照合テーブルが指定される、請求項46のデータ処理装置。 - 前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項47のデータ処理装置。 - 状態遷移の評価元となる現状態の検索対象のビットストリングを、予め登録された複数の状態遷移条件を示す登録ビットパターンと照合する照合装置と、
前記照合装置に対し、前記検索対象のビットストリングを供給する検索対象供給手段と、
前記照合装置の出力により状態が遷移するデータ処理回路とを有するデータ処理装置であって、
前記現状態の検索対象のビットストリングが取り得る全ての値と照合する全照合手段と、
前記複数の登録ビットパターンを示すためのパターンテーブルであって、先行する状態から得られる照合継続情報により決まる、現状態のパターンテーブルをメモリよりロードするパターンロード手段と、
前記全照合手段の結果と前記現状態のパターンテーブルとにより、前記現状態の検索対象ビットストリングに一致する前記現状態の登録ビットパターンの有無を少なくとも示す照合結果を出力する判定手段と、
前記照合結果により、前記現状態のパターンテーブルに対応するアドレステーブルから、前記現状態の次の状態の前記パターンテーブルのアドレスを含む前記照合継続情報を出力する出力手段とを備えている、データ処理装置。 - 前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記検索対象供給手段により、前記照合装置に供給される前記照合テーブルが指定される、請求項49のデータ処理装置。 - 前記メモリには、前記パターンテーブルおよび前記アドレステーブルを含む照合テーブルが記憶されており、
前記データ処理回路により前記メモリの照合テーブルが書き換えられる、請求項49のデータ処理装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002291708 | 2002-10-03 | ||
JP2002291708 | 2002-10-03 | ||
PCT/JP2003/012700 WO2004032435A1 (ja) | 2002-10-03 | 2003-10-03 | ビットストリングの照合方法および装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2004032435A1 true JPWO2004032435A1 (ja) | 2006-02-02 |
JP4091604B2 JP4091604B2 (ja) | 2008-05-28 |
Family
ID=32063896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004541281A Expired - Fee Related JP4091604B2 (ja) | 2002-10-03 | 2003-10-03 | ビットストリングの照合方法および装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20060059196A1 (ja) |
EP (1) | EP1548998A4 (ja) |
JP (1) | JP4091604B2 (ja) |
CN (1) | CN1324861C (ja) |
AU (1) | AU2003268754A1 (ja) |
WO (1) | WO2004032435A1 (ja) |
Families Citing this family (83)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949732B1 (en) | 2003-05-12 | 2011-05-24 | Sourcefire, Inc. | Systems and methods for determining characteristics of a network and enforcing policy |
US7685254B2 (en) * | 2003-06-10 | 2010-03-23 | Pandya Ashish A | Runtime adaptable search processor |
US7346059B1 (en) * | 2003-09-08 | 2008-03-18 | Cisco Technology, Inc. | Header range check hash circuit |
US7308505B2 (en) * | 2003-12-17 | 2007-12-11 | International Business Machines Corporation | Method, system and program product for facilitating forwarding of data packets through a node of a data transfer network using multiple types of forwarding tables |
US20050171937A1 (en) * | 2004-02-02 | 2005-08-04 | Hughes Martin W. | Memory efficient hashing algorithm |
KR100828038B1 (ko) * | 2004-04-19 | 2008-05-08 | 더 리전트 오브 더 유니버시티 오브 캘리포니아 | 딥 패킷 필터링을 위한 프로그램 가능 하드웨어 |
US7305383B1 (en) * | 2004-06-10 | 2007-12-04 | Cisco Technology, Inc. | Processing system using bitmap array to compress deterministic finite automation state table allowing direct indexing |
US7539681B2 (en) * | 2004-07-26 | 2009-05-26 | Sourcefire, Inc. | Methods and systems for multi-pattern searching |
US20070088717A1 (en) * | 2005-10-13 | 2007-04-19 | International Business Machines Corporation | Back-tracking decision tree classifier for large reference data set |
JP4878178B2 (ja) * | 2006-02-28 | 2012-02-15 | 株式会社日立製作所 | データ処理方法および装置並びにその処理プログラム |
US7526611B2 (en) * | 2006-03-22 | 2009-04-28 | International Business Machines Corporation | Unified processor cache model in multiprocessor system |
US7779016B2 (en) * | 2006-09-14 | 2010-08-17 | International Business Machines Corporation | Parallel execution of operations for a partitioned binary radix tree on a parallel computer |
US8032899B2 (en) | 2006-10-26 | 2011-10-04 | International Business Machines Corporation | Providing policy-based operating system services in a hypervisor on a computing system |
US8713582B2 (en) * | 2006-10-26 | 2014-04-29 | International Business Machines Corporation | Providing policy-based operating system services in an operating system on a computing system |
US8656448B2 (en) * | 2006-10-26 | 2014-02-18 | International Business Machines Corporation | Providing policy-based application services to an application running on a computing system |
US7643505B1 (en) * | 2006-11-30 | 2010-01-05 | Qlogic, Corporation | Method and system for real time compression and decompression |
JP4791347B2 (ja) * | 2006-12-29 | 2011-10-12 | 富士通株式会社 | エントリの圧縮伸長方法およびエントリの圧縮伸長を行う装置 |
US7676444B1 (en) * | 2007-01-18 | 2010-03-09 | Netlogic Microsystems, Inc. | Iterative compare operations using next success size bitmap |
JP5059461B2 (ja) * | 2007-03-28 | 2012-10-24 | 株式会社ノディック | データ駆動型データバッファ装置及びデータバッファリング方法 |
JP5115922B2 (ja) * | 2007-03-28 | 2013-01-09 | 株式会社ノディック | ツリー型分流路及び合流路を備えたデータ駆動型処理装置用通信路装置及びデータ駆動型処理装置用パケット転送方式 |
US20080288756A1 (en) * | 2007-05-18 | 2008-11-20 | Johnson Timothy J | "or" bit matrix multiply vector instruction |
US8954484B2 (en) | 2009-06-12 | 2015-02-10 | Cray Inc. | Inclusive or bit matrix to compare multiple corresponding subfields |
US7958274B2 (en) * | 2007-06-18 | 2011-06-07 | International Business Machines Corporation | Heuristic status polling |
US8296430B2 (en) | 2007-06-18 | 2012-10-23 | International Business Machines Corporation | Administering an epoch initiated for remote memory access |
US8438610B2 (en) * | 2007-09-28 | 2013-05-07 | Emc Corporation | Identity-based address normalization |
US9065839B2 (en) * | 2007-10-02 | 2015-06-23 | International Business Machines Corporation | Minimally buffered data transfers between nodes in a data communications network |
US20090113308A1 (en) * | 2007-10-26 | 2009-04-30 | Gheorghe Almasi | Administering Communications Schedules for Data Communications Among Compute Nodes in a Data Communications Network of a Parallel Computer |
US7984450B2 (en) * | 2007-11-28 | 2011-07-19 | International Business Machines Corporation | Dispatching packets on a global combining network of a parallel computer |
WO2009155253A1 (en) * | 2008-06-19 | 2009-12-23 | Marvell World Trade Ltd. | Cascaded memory tables for searching |
US8286171B2 (en) * | 2008-07-21 | 2012-10-09 | Workshare Technology, Inc. | Methods and systems to fingerprint textual information using word runs |
US7895260B2 (en) * | 2008-07-28 | 2011-02-22 | International Business Machines Corporation | Processing data access requests among a plurality of compute nodes |
US8555080B2 (en) * | 2008-09-11 | 2013-10-08 | Workshare Technology, Inc. | Methods and systems for protect agents using distributed lightweight fingerprints |
WO2010045089A1 (en) | 2008-10-08 | 2010-04-22 | Sourcefire, Inc. | Target-based smb and dce/rpc processing for an intrusion detection system or intrusion prevention system |
CN101388842B (zh) * | 2008-10-30 | 2012-04-04 | 华为技术有限公司 | 一种存储方法和装置 |
WO2010059747A2 (en) | 2008-11-18 | 2010-05-27 | Workshare Technology, Inc. | Methods and systems for exact data match filtering |
US8406456B2 (en) | 2008-11-20 | 2013-03-26 | Workshare Technology, Inc. | Methods and systems for image fingerprinting |
US7826458B2 (en) | 2009-03-05 | 2010-11-02 | Juniper Networks, Inc. | Tracking fragmented data flows |
JP2010211388A (ja) | 2009-03-09 | 2010-09-24 | Canon Inc | 検索装置及び検索方法 |
JP2010231272A (ja) * | 2009-03-25 | 2010-10-14 | Nodc:Kk | キーワード列検出方法及び装置 |
US8433883B2 (en) * | 2009-06-11 | 2013-04-30 | Cray Inc. | Inclusive “OR” bit matrix compare resolution of vector update conflict masks |
WO2011017084A2 (en) | 2009-07-27 | 2011-02-10 | Workshare Technology, Inc. | Methods and systems for comparing presentation slide decks |
US9049157B1 (en) * | 2009-08-16 | 2015-06-02 | Compass Electro-Optical Systems Ltd | Method and device for improving scalability of longest prefix match |
US8365186B2 (en) | 2010-04-14 | 2013-01-29 | International Business Machines Corporation | Runtime optimization of an application executing on a parallel computer |
US8630290B1 (en) * | 2010-04-15 | 2014-01-14 | ARRIS Enterprise, Inc. | Using a DFA unit for classification list processing |
WO2011130510A1 (en) | 2010-04-16 | 2011-10-20 | Sourcefire, Inc. | System and method for near-real time network attack detection, and system and method for unified detection via detection routing |
US8433790B2 (en) | 2010-06-11 | 2013-04-30 | Sourcefire, Inc. | System and method for assigning network blocks to sensors |
US8671182B2 (en) | 2010-06-22 | 2014-03-11 | Sourcefire, Inc. | System and method for resolving operating system or service identity conflicts |
US8504730B2 (en) | 2010-07-30 | 2013-08-06 | International Business Machines Corporation | Administering connection identifiers for collective operations in a parallel computer |
JP5238791B2 (ja) | 2010-11-10 | 2013-07-17 | 株式会社東芝 | 転送機能を有するメモリノードを相互に接続したストレージ装置及びデータ処理方法 |
US20120136862A1 (en) | 2010-11-29 | 2012-05-31 | Workshare Technology, Inc. | System and method for presenting comparisons of electronic documents |
US11030163B2 (en) | 2011-11-29 | 2021-06-08 | Workshare, Ltd. | System for tracking and displaying changes in a set of related electronic documents |
US10783326B2 (en) | 2013-03-14 | 2020-09-22 | Workshare, Ltd. | System for tracking changes in a collaborative document editing environment |
US8565120B2 (en) | 2011-01-05 | 2013-10-22 | International Business Machines Corporation | Locality mapping in a distributed processing system |
US9317637B2 (en) | 2011-01-14 | 2016-04-19 | International Business Machines Corporation | Distributed hardware device simulation |
US8601034B2 (en) | 2011-03-11 | 2013-12-03 | Sourcefire, Inc. | System and method for real time data awareness |
US10880359B2 (en) | 2011-12-21 | 2020-12-29 | Workshare, Ltd. | System and method for cross platform document sharing |
US10963584B2 (en) | 2011-06-08 | 2021-03-30 | Workshare Ltd. | Method and system for collaborative editing of a remotely stored document |
US10574729B2 (en) | 2011-06-08 | 2020-02-25 | Workshare Ltd. | System and method for cross platform document sharing |
US9613340B2 (en) | 2011-06-14 | 2017-04-04 | Workshare Ltd. | Method and system for shared document approval |
US9170990B2 (en) | 2013-03-14 | 2015-10-27 | Workshare Limited | Method and system for document retrieval with selective document comparison |
US9948676B2 (en) | 2013-07-25 | 2018-04-17 | Workshare, Ltd. | System and method for securing documents prior to transmission |
US8689228B2 (en) | 2011-07-19 | 2014-04-01 | International Business Machines Corporation | Identifying data communications algorithms of all other tasks in a single collective operation in a distributed processing system |
US9159420B1 (en) * | 2011-08-16 | 2015-10-13 | Marvell Israel (M.I.S.L) Ltd. | Method and apparatus for content addressable memory parallel lookup |
US9250948B2 (en) | 2011-09-13 | 2016-02-02 | International Business Machines Corporation | Establishing a group of endpoints in a parallel computer |
EP2782292B1 (en) * | 2011-11-15 | 2016-02-10 | Japan Science and Technology Agency | Packet data extraction device, control method for packet data extraction device, control program, and computer-readable recording medium |
US8681795B1 (en) * | 2011-12-28 | 2014-03-25 | Juniper Networks, Inc. | Fixed latency priority classifier for network data |
CN102736888B (zh) * | 2012-07-02 | 2016-02-17 | 江汉大学 | 与数据流同步的数据检索电路 |
US11567907B2 (en) | 2013-03-14 | 2023-01-31 | Workshare, Ltd. | Method and system for comparing document versions encoded in a hierarchical representation |
US10911492B2 (en) | 2013-07-25 | 2021-02-02 | Workshare Ltd. | System and method for securing documents prior to transmission |
US9697220B2 (en) * | 2013-12-13 | 2017-07-04 | Oracle International Corporation | System and method for supporting elastic data metadata compression in a distributed data grid |
JP6549704B2 (ja) | 2014-09-25 | 2019-07-24 | オラクル・インターナショナル・コーポレイション | 分散コンピューティング環境内でゼロコピー2進基数木をサポートするためのシステムおよび方法 |
US10133723B2 (en) | 2014-12-29 | 2018-11-20 | Workshare Ltd. | System and method for determining document version geneology |
US11182551B2 (en) | 2014-12-29 | 2021-11-23 | Workshare Ltd. | System and method for determining document version geneology |
JP6456162B2 (ja) * | 2015-01-27 | 2019-01-23 | 株式会社エヌ・ティ・ティ ピー・シー コミュニケーションズ | 匿名化処理装置、匿名化処理方法及びプログラム |
JP6540296B2 (ja) * | 2015-07-09 | 2019-07-10 | 富士通株式会社 | ネットワークプロセッサ、通信装置、パケット転送方法及びパケット転送プログラム |
US11763013B2 (en) | 2015-08-07 | 2023-09-19 | Workshare, Ltd. | Transaction document management system and method |
US20170242821A1 (en) * | 2016-02-22 | 2017-08-24 | HGST Netherlands B.V. | Acknowledgement-less canary-based completion protocol |
US10664346B2 (en) * | 2018-05-18 | 2020-05-26 | Microsoft Technology Licensing, Llc | Parity log with by-pass |
US10862485B1 (en) * | 2018-08-29 | 2020-12-08 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Lookup table index for a processor |
US11158364B2 (en) | 2019-05-31 | 2021-10-26 | Micron Technology, Inc. | Apparatuses and methods for tracking victim rows |
US11158373B2 (en) * | 2019-06-11 | 2021-10-26 | Micron Technology, Inc. | Apparatuses, systems, and methods for determining extremum numerical values |
JP2023047469A (ja) * | 2021-09-27 | 2023-04-06 | キヤノン株式会社 | 通信装置、通信装置の制御方法、通信システム、およびプログラム |
CN117609112A (zh) * | 2023-11-30 | 2024-02-27 | 中科驭数(北京)科技有限公司 | 数据流处理方法、装置及多核处理器 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3474394D1 (en) * | 1984-06-29 | 1988-11-03 | Ibm | Method and arrangement for detecting a particular bit configuration in a serial bit stream |
US5526298A (en) * | 1987-06-10 | 1996-06-11 | Hamamatsu Photonics K.K. | Optical associative memory |
FR2724512B1 (fr) * | 1994-09-14 | 1996-12-13 | Sgs Thomson Microelectronics | Dispositif d'identification d'une sequence predeterminee de signaux dans un modem |
US5570306A (en) * | 1994-11-01 | 1996-10-29 | Intel Corporation | Method and apparatus for recognizing a bit pattern in a string of bits, altering the string of bits, and removing the alteration from the string of bits |
JP3662618B2 (ja) * | 1995-02-01 | 2005-06-22 | 川崎マイクロエレクトロニクス株式会社 | マルチプロトコルアドレス検索用連想メモリおよびその検索方法 |
US5636369A (en) * | 1995-05-26 | 1997-06-03 | Datron/Transco, Inc. | Fast pattern-detection machine and method |
US5661763A (en) * | 1995-07-28 | 1997-08-26 | Adtran, Inc. | Apparatus and method for detecting programmable length bit pattern in serial digital data stream |
JP3520709B2 (ja) * | 1997-03-13 | 2004-04-19 | 三菱電機株式会社 | ネットワークアドレス検索方式 |
US5894427A (en) * | 1997-11-12 | 1999-04-13 | Intel Corporation | Technique for concurrent detection of bit patterns |
US6047283A (en) * | 1998-02-26 | 2000-04-04 | Sap Aktiengesellschaft | Fast string searching and indexing using a search tree having a plurality of linked nodes |
JP3250544B2 (ja) * | 1999-04-16 | 2002-01-28 | 日本電気株式会社 | 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体 |
US7107265B1 (en) * | 2000-04-06 | 2006-09-12 | International Business Machines Corporation | Software management tree implementation for a network processor |
JP2002016638A (ja) * | 2000-06-29 | 2002-01-18 | Mitsubishi Electric Corp | ルーチング情報検索装置およびルーチング情報検索制御データを記録したコンピュータ読み取り可能な記録媒体 |
-
2003
- 2003-10-03 JP JP2004541281A patent/JP4091604B2/ja not_active Expired - Fee Related
- 2003-10-03 CN CNB2003801009592A patent/CN1324861C/zh not_active Expired - Fee Related
- 2003-10-03 EP EP03748699A patent/EP1548998A4/en not_active Withdrawn
- 2003-10-03 AU AU2003268754A patent/AU2003268754A1/en not_active Abandoned
- 2003-10-03 WO PCT/JP2003/012700 patent/WO2004032435A1/ja not_active Application Discontinuation
- 2003-10-03 US US10/530,190 patent/US20060059196A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN1703880A (zh) | 2005-11-30 |
EP1548998A1 (en) | 2005-06-29 |
AU2003268754A1 (en) | 2004-04-23 |
CN1324861C (zh) | 2007-07-04 |
EP1548998A4 (en) | 2008-02-27 |
US20060059196A1 (en) | 2006-03-16 |
WO2004032435A1 (ja) | 2004-04-15 |
JP4091604B2 (ja) | 2008-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4091604B2 (ja) | ビットストリングの照合方法および装置 | |
US10466964B2 (en) | Engine architecture for processing finite automata | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
US8478736B2 (en) | Pattern matching accelerator | |
US7539032B2 (en) | Regular expression searching of packet contents using dedicated search circuits | |
US6434144B1 (en) | Multi-level table lookup | |
US7782853B2 (en) | Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine | |
US7539031B2 (en) | Inexact pattern searching using bitmap contained in a bitcheck command | |
US8799188B2 (en) | Algorithm engine for use in a pattern matching accelerator | |
US8086554B1 (en) | Pattern matching in a multiprocessor environment | |
US7644080B2 (en) | Method and apparatus for managing multiple data flows in a content search system | |
US8412722B2 (en) | Upload manager for use in a pattern matching accelerator | |
US8966182B2 (en) | Software and hardware managed dual rule bank cache for use in a pattern matching accelerator | |
US7565343B2 (en) | Search apparatus and search management method for fixed-length data | |
CN100418331C (zh) | 基于网络处理器的路由查找结果缓存方法 | |
US8495334B2 (en) | Address translation for use in a pattern matching accelerator | |
US8447749B2 (en) | Local results processor for use in a pattern matching accelerator | |
US20080071780A1 (en) | Search Circuit having individually selectable search engines | |
US20080192754A1 (en) | Routing system and method for managing rule entries of ternary content addressable memory in the same | |
US8423533B2 (en) | Multiple rule bank access scheme for use in a pattern matching accelerator | |
US8983891B2 (en) | Pattern matching engine for use in a pattern matching accelerator | |
US8635180B2 (en) | Multiple hash scheme for use in a pattern matching accelerator | |
Ma et al. | Leveraging parallelism for multi-dimensional packetclassification on software routers | |
US7924839B2 (en) | Mechanism to reduce lookup latency in a pipelined hardware implementation of a trie-based IP lookup algorithm | |
Nottingham et al. | GPU packet classification using OpenCL: a consideration of viable classification methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20080129 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20080228 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110307 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |