(57)【要約】【課題】ＮＡＰＴ処理などギガビット単位の処理スピードに対応できない。【解決手段】鍵となるデータをハッシュ関数を用いてハッシュ値を算出し、算出されたハッシュ値を用いて、テーブルに格納されているデータを読み出し、もしデータが空で無いならばポインタ発生回路において発生する値をアドレスとして、その指定するテーブルのロケーションにデータを格納し、ポインタ発生回路のポインタを１つ増加する。【選択図】  図２
2008085866.tif 000002
【特許請求の範囲】
【請求項１】
鍵となるデータをハッシュ関数を用いてハッシュ値を算出し、
前記算出されたハッシュ値を用いて、テーブルに格納されているデータを読み出し、
もしデータが空で無いならばポインタ発生回路において発生する値をアドレスとして、その指定するテーブルのロケーションにデータを格納し、
前記ポインタ発生回路のポインタを１つ増加するデータ格納方法。
【請求項２】
鍵となるデータをハッシュ関数を用いてハッシュ値を算出し、
前記算出されたハッシュ値を用いて、テーブルに格納されているデータを読み出し、
もしデータが所望のデータで無いならばポインタ発生回路において発生する値をアドレスとして、その指定するテーブルのロケーションにデータを読み出し、
前記ポインタ発生回路のポインタを１つ増加するデータ検索方法。
【請求項３】
ハッシュ関数を使用したテーブル検索回路において、ハッシュ衝突により使用するハッシュ検索を行うポインタテーブルとは別の逐次検索を行うポインタテーブルを持ち、
その逐次検索を行うポインタテーブルの値を読み出すときにそのポインタデータ及びアドレスを遅延させて、アドレスを１ずらしながらポインタテーブルに書き込むことを特徴とするテーブル検索回路。
【請求項４】
ハッシュ関数を使用したテーブル検索回路において、ハッシュ衝突により使用するハッシュ検索を行うポインタテーブルとは別の逐次検索を行うポインタテーブルを持ち、
その逐次検索を行うポインタテーブルの値を読み出すときにそのポインタデータ及びアドレスを遅延させ、アドレスを１ずらしながらポインタテーブルに書き込み，Keyが一致した場合に逐次検索の最初にKeyが一致したポインタデータを書き込むことを特徴とするテーブル検索回路。
【請求項５】
ハッシュ関数を使用したテーブル検索回路において、ハッシュ衝突により使用するハッシュ検索を行うポインタテーブルとは別の逐次検索を行うポインタテーブルを持ち、
その逐次検索を行うポインタテーブルの値を削除する場合、Keyが一致を調査するために読み出されるポインタデータ及びアドレスを遅延させ、アドレスを１ずらしながらポインタテーブルに書き込み、Keyが一致した場合に逐次検索をする先頭番地を１加算することで逐次検索の場所をずらすことを特徴とするデータ削除回路。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、テーブルのデータ格納方法、データ検索方法、データ検索回路及びデータ削除回路に関し、特に、ハッシュ関数を用いたデータ格納方法、データ検索方法、データ検索回路及びデータ削除回路に関する。
【背景技術】
【０００２】
特許文献１は、ハッシュ関数の結果をテーブルに格納する従来の格納方法及びそのテーブルから所定の値を検索する従来の検索方法を開示している。
【０００３】
従来のデータ格納方法は、ハッシュ関数により得られたハッシュ値をアドレスとして、そのアドレスにより指定されるテーブルのロケーションに既にデータが格納されているか否か判断する。そして、もし既にデータが格納されている場合には、アドレスを一つ増加し、再度、その指定するアドレスにデータが格納されているか否か判断し、その指定するアドレスにデータが格納されていないロケーションを見つけるまでアドレスを一つずつ増加する。もし、指定するアドレスにデータが格納されていなければ、そのロケーションにデータを格納する。
【０００４】
また、従来のデータ検索方法は、ハッシュ関数により得られたハッシュ値をアドレスとして、そのアドレスにより指定されるテーブルのロケーションに格納されているデータが所望のデータか否か判断する。そして、もし所望のデータでない場合には、アドレスを一つ増加し、再度、その指定するアドレスにより指定されるテーブルのロケーションに格納されているデータが所望のデータか否か判断する。従来のデータ検索方法は、その指定するアドレスにデータが格納されていないロケーションを見つけるまでアドレスを一つずつ増加する。
【０００５】
また、従来のデータ削除方法によれば、ハッシュ関数により得られたハッシュ値をアドレスとして、そのアドレスにより指定されるテーブルのロケーションに格納されているデータが所望のデータか否か判断する。そして、もし、所望のデータである場合には、その指定するアドレスにより指定されるテーブルのロケーションに格納されているデータを削除する。所望のデータでない場合には、アドレスを一つ増加し、再度、その指定するアドレスにより指定されるテーブルのロケーションに格納されているデータが所望のデータか否か判断する。従来のデータ削除方法は、その指定するアドレスに所望のデータが格納されているロケーションを見つけるまでアドレスを一つずつ増加する。
【０００６】
【特許文献１】米国特許番号６，７９５，８１６号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
従来のデータ格納方法によれば、ハッシュ関数で得られたロケーションが既に使用されていた場合、空きロケーションを見つけるまで、演算されたハッシュ値を一つずつ増加していかなければならない。また、従来のデータ検索方法及び削除方法によれば、所望のデータを見つけるまで、演算されたハッシュ値を一つずつ増加していかなければならない。これは、この手法をＮＡＰＴ（Ｎｅｔｗｏｒｋ  Ａｄｄｒｅｓｓ  Ｐｏｒｔ  Ｔｒａｎｓｌａｔｉｏｎ）処理に用いてギガビット単位の処理する場合に、その処理速度に対応できないことを意味する。例えば、所望のデータが常にＲＡＭの最後のロケーションに格納されている場合には、いつもハッシュ値を一つずつ増加していかなくてはならない。そのため、常にハッシュ値を一つずつ増加しては対象物を探す作業が必要となり、ギガビット単位の処理スピードに対応できない。
そこで、本発明は、ＮＡＰＴ処理などギガビット単位の処理スピードを要求された場合でも、その処理スピードに対応できるためのデータ格納方法、データ検索方法及びデータ検索回路及びデータ削除方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のデータ格納方法は、鍵となるデータをハッシュ関数を用いてハッシュ値を算出し、算出されたハッシュ値を用いてテーブルに格納されているデータを読み出し、もしデータが空で無いならばポインタ発生回路において発生する値をアドレスとしてその指定するテーブルのロケーションにデータを格納し、ポインタ発生回路のポインタを１つ増加することを特徴とする。
【０００９】
また、本発明のデータ検索方法は、鍵となるデータをハッシュ関数を用いてハッシュ値を算出し、算出されたハッシュ値を用いてテーブルに格納されているデータを読み出し、もしデータが所望のデータで無いならばポインタ発生回路において発生する値をアドレスとして、その指定するテーブルのロケーションにデータを読み出し、ポインタ発生回路のポインタを１つ増加することを特徴とする。
【００１０】
また、本発明のデータ検索回路は、ハッシュ衝突により使用するハッシュ検索を行うポインタテーブルとは別の逐次検索を行うポインタテーブルを持ち、  その逐次検索を行うポインタテーブルの値を読み出すときにそのポインタデータ及びアドレスを遅延させて、アドレスを１ずらしながらポインタテーブルに書き込むことを備える。
【００１１】
また、本発明のデータ削除回路は、ハッシュ関数を使用したテーブル検索回路において、ハッシュ衝突により使用するハッシュ検索を行うポインタテーブルとは別の逐次検索を行うポインタテーブルを持ち、その逐次検索を行うポインタテーブルの値を削除する場合、Keyが一致を調査するために読み出されるポインタデータ及びアドレスを遅延させ、アドレスを１ずらしながらポインタテーブルに書き込み、Keyが一致した場合に逐次検索をする先頭番地を１加算することで逐次検索の場所をずらすことを備える。
【発明の効果】
【００１２】
本発明のデータ格納方法、データ検索方法、データ検索回路及びデータ削除回路によれば、ギガビット単位の処理スピードに対応したＮＡＰＴ処理を行うことが可能になる。
【００１３】
また、本発明のデータ検索回路は、ハッシュ衝突によって逐次検索を行う場合、ある鍵の検索時間が固定されることなく、直前に検索した鍵は高速に検索可能としている。また、テーブル値削除を行った場合も逐次検索順序が保護される。
【００１４】
また、本発明のデータ検索方法は、ハッシュ衝突によって逐次検索を行う場合でも検索履歴に応じた（過去に遡り検索された順に高速である検索）検索を実現している。また、テーブル値削除時の逐次検索順序保護と過去に遡り検索された順に高速である検索は同一のハードで実現され、小さな回路で実現可能である。
【発明を実施するための最良の形態】
【００１５】
初めに、図１を用いて、ＮＡＰＴ処理について説明する。NAPT処理はルータが行う処理で、インターネット接続時のプライベートIP（＝ローカルIP）とグローバルIPを変換する処理である。この処理によって1個のグローバルIPを使用して複数のPCが同時にインターネット接続することを可能としている。ルータ内のNAPTはＡのIPパケットのソースアドレスを“ローカル１IP：20”から“自分IP：220”に変更している。Ａのパケットへの返信であるＣのパケットでは送り先アドレスを“自分IP：220”から“ローカル１IP：20”に変更している。これにより1つのグローバルIPを複数のPCが使用することを可能としている。
【００１６】
以下、図面を用いて、本発明のデータ格納方法、データ検索方法及びデータ検索回路を説明する。
図２は、本発明のデータ検索回路の構成を示すブロック図である。本発明のデータ検索回路は、ハッシュ回路２００と、ポインタ・テーブルＲＡＭ２０１、２０２と、Ｅｘｔポインタ発生回路２０３と、Ｎｅｘｔポインタ発生回路２０４と、チェック・選択回路２０５と、テーブルＲＡＭ２０６と、ポインタ遅延レジスタ２０７とにより構成される。
【００１７】
次に、ＮＡＰＴデータ格納方法について説明する。初めに、鍵となるデータ（Ｋｅｙ）をハッシュ回路２００に入力し、ハッシュ値を得る。次に、ハッシュ値をポインタテーブルＲＡＭ２０１のアドレスとしてポインタテーブルＲＡＭのデータを読み出し、空ならばＮｅｘｔポインタ発生回路２０４の発生する値をそのアドレスに入れる。一方、空で無いならばＥｘｔポインタ発生回路２０３の発生する値をポインタテーブルＲＡＭ２０２のアドレスとしてＮｅｘｔポインタ発生回路２０４の発生する値をポインタテーブルＲＡＭ２０２に入力する。その後、Ｎｅｘｔポインタ発生回路２０４のポインタを１つ増加する。
【００１８】
次に、ＮＡＰＴデータ検索方法について説明する。初めに、鍵となるデータ（Ｋｅｙ）をハッシュ回路２００に入力し、ハッシュ値を得る。次に、ハッシュ値をポインタテーブルＲＡＭ２０１のアドレスとしてポインタテーブルＲＡＭのデータを読み出し、読み出された値をテーブルＲＡＭ２０６のアドレスとしてテーブルＲＡＭからデータを読み出す。読み出されたデータが鍵に対応するデータである場合、処理を終了する。一方、読み出されたデータが鍵に対応するデータでない場合、アドレス０（ゼロ）から順に、ポインタテーブルＲＡＭ２０２を読み出した上で、テーブルＲＡＭからデータを読み出す。
【００１９】
次に、ＮＡＰＴデータ削除方法について説明する。初めに、鍵となるデータ（Ｋｅｙ）をハッシュ回路２００に入力し、ハッシュ値を得る。次に、ハッシュ値をポインタテーブルＲＡＭ２０１のアドレスとしてポインタテーブルＲＡＭのデータを読み出す。読み出されたデータが鍵に対応するデータである場合、ハッシュ値がアドレスのポインタテーブルＲＡＭ２０１若しくはポインタテーブルＲＡＭ２０２のデータ及び、そのポインタテーブルＲＡＭ２０１若しくはポインタテーブルＲＡＭ２０２の内容がアドレスのテーブルＲＡＭのデータを削除する。一方、読み出されたデータが鍵に対応するデータでない場合、アドレス０（ゼロ）から順に、ポインタテーブルＲＡＭ２０２のデータを読み出した上で、テーブルＲＡＭからデータを読み出す。
次に、本発明のＥｘｔポインタ発生回路２０３について、詳細に説明する。
【実施例１】
【００２０】
以下、図３を用いて、実施例１のＥｘｔポインタ発生回路２０３を説明する。図３は、実施例１のＥｘｔポインタ発生回路２０３を示すブロック図である。実施例１のＥｘｔポインタ発生回路２０３は、Ｅｘｔスタートポイントレジスタ３００と、＋１インクリメンタ３０１と、Ｅｘｔアドレスレジスタ３０２と、Ｅｘｔアドレス遅延レジスタ３０３とにより構成される。
【００２１】
図４は、Ｅｘｔアドレスレジスタ３０２、ポインタ・テーブルＲＡＭ２０２、テーブルＲＡＭ２０６、チェック・選択回路２０５の動作を示す表である。図４に示されるように、ポインタ・テーブルＲＡＭ２０２の値を順次読み出しながら、アドレスは２サイクル、データは１サイクル遅延させて、ポインタ・テーブルＲＡＭ２０２にデータを書き込んでいる。この例では、ＭＴ  ａｄｒ  Ｅが鍵に一致する検索データである。図４からわかるように、６サイクル目でアドレスｎにＭＴ  ａｄｒ  Ｅが書き込まれている。ここで、図５に、動作開始時、検索時、終了時のポインタ・テーブルＲＡＭ２０２の状態を示す。図５に示されるように、終了時のポインタ・テーブルＲＡＭ２０２の状態から明らかなように、鍵と一致したデータあるＭＴ  ａｄｒ  Ｅがテーブルの先頭アドレスｎに移動され、それまでのデータが１ずつ繰り下げられている状態となっている。これは、次回の検索では、ＭＴ  ａｄｒ  Ｅが最初に検索されることを意味する。従って、実施例１の本発明によれば、一度使用した鍵検索は、次回から高速に検索することができる。また、ＭＴ  ａｄｒ  Ｅが入る前の検索順（この例では、ＭＴ  ａｄｒ  Ａ、ＭＴ  ａｄｒ  Ｂ、ＭＴ  ａｄｒ  Ｃ、ＭＴ  ａｄｒ  Ｄ）が検索終了時も保護されている。そのため、実施例１の本発明によれば、使用頻度に応じてテーブルにデータが格納され、処理スピードを向上することができる。
【実施例２】
【００２２】
以下、図６を用いて、実施例２のＥｘｔポインタ発生回路２０３を説明する。図６は、実施例２のＥｘｔポインタ発生回路２０３を示すブロック図である。実施例２のＥｘｔポインタ発生回路２０３は、Ｅｘｔスタートポイントレジスタ３００と、＋１インクリメンタ３０１、６００と、Ｅｘｔアドレスレジスタ３０２と、Ｅｘｔアドレス遅延レジスタ３０３とにより構成される。
【００２３】
図７は、Ｅｘｔアドレスレジスタ３０２、ポインタ・テーブルＲＡＭ２０２、テーブルＲＡＭ２０６、チェック・選択回路２０５の動作を示す表である。図４に示されるように、ポインタ・テーブルＲＡＭ２０２の値を順次読み出しながら、アドレスは２サイクル、データは１サイクル遅延させて、ポインタ・テーブルＲＡＭ２０２にデータを書き込んでいる。この例では、ＭＴ  ａｄｒ  Ｅが鍵に一致する検索データである。図７からわかるように、６サイクル目でアドレスｎにＭＴ  ａｄｒ  Ｅが書き込まれている。ここで、図８に、動作開始時、検索時、終了時のポインタ・テーブルＲＡＭ２０２及びＥｘｔスタートポイントレジスタ３００の状態を示す。図８に示されるように、終了時のポインタ・テーブルＲＡＭ２０２の状態から明らかなように、鍵と一致したデータあるＭＴ  ａｄｒ  Ｅが削除され、それまでのデータが１つずつ繰り下げられている。Ｅｘｔスタートポイントレジスタ３００は１つ加算されているため、以後の検索はｎ＋１から開始される。これは、次回の検索もＭＴ  ａｄｒ  Ａから検索されることを示しており、ポインタ・テーブルＲＡＭ２０２の順番が維持されている。
なお、実施例に示した回路の遅延レジスタはRAM等のパイプライン段数によって異なる。
【図面の簡単な説明】
【００２４】
【図１】ＮＡＰＴ処理を示すブロック図である。
【図２】本発明のデータ検索回路を示すブロック図である。
【図３】本発明の実施例１のＥｘｔポインタ発生回路２０３を示すブロック図である。
【図４】本発明の実施例１のデータ遷移を示す表である。
【図５】本発明の実施例１のポインタテーブルＲＡＭの状態を示す表である
【図６】本発明の実施例２のＥｘｔポインタ発生回路２０３を示すブロック図である。
【図７】本発明の実施例２のデータ遷移を示す表である。
【図８】本発明の実施例２のポインタテーブルＲＡＭ及びＥｘｔポインタレジスタの状態を示す表である。
【符号の説明】
【００２５】
２００  ハッシュ回路
２０１、２０２  ポインタ・テーブルＲＡＭ
２０３  Ｅｘｔポインタ発生回路
２０４  Ｎｅｘｔポインタ発生回路
２０５  チェック・選択回路
２０６  テーブルＲＡＭ
２０７  ポインタ遅延レジスタ
３００  Ｅｘｔスタートポイントレジスタ
３０１、６００  ＋１インクリメンタ
３０２  Ｅｘｔアドレスレジスタ
３０３  Ｅｘｔアドレス遅延レジスタ
【図１】
2008085866.tif 000003
【図２】
2008085866.tif 000004
【図３】
2008085866.tif 000005
【図４】
2008085866.tif 000006
【図５】
2008085866.tif 000007
【図６】
2008085866.tif 000008
【図７】
2008085866.tif 000009
【図８】
2008085866.tif 000010