特許第6234048号(P6234048)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許6234048ハッシュ衝突低減システム、方法及びプログラム
<>
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000002
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000003
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000004
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000005
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000006
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000007
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000008
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000009
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000010
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000011
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000012
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000013
  • 特許6234048-ハッシュ衝突低減システム、方法及びプログラム 図000014
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6234048
(24)【登録日】2017年11月2日
(45)【発行日】2017年11月22日
(54)【発明の名称】ハッシュ衝突低減システム、方法及びプログラム
(51)【国際特許分類】
   G09C 1/00 20060101AFI20171113BHJP
   H04L 9/16 20060101ALI20171113BHJP
【FI】
   G09C1/00 650Z
   H04L9/00 643
【請求項の数】15
【全頁数】14
(21)【出願番号】特願2013-81290(P2013-81290)
(22)【出願日】2013年4月9日
(65)【公開番号】特開2013-242539(P2013-242539A)
(43)【公開日】2013年12月5日
【審査請求日】2016年3月15日
(31)【優先権主張番号】13/475990
(32)【優先日】2012年5月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
(74)【代理人】
【識別番号】100108501
【弁理士】
【氏名又は名称】上野 剛史
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】キャシマー・エム.・デクサティス
(72)【発明者】
【氏名】ファブリス・ジャン・ヴェルプランカン
(72)【発明者】
【氏名】ジャン・エル.・カルヴィニャック
(72)【発明者】
【氏名】ダニエル・ヴァン
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特開2002−334114(JP,A)
【文献】 米国特許出願公開第2008/0235488(US,A1)
【文献】 米国特許出願公開第2008/0229056(US,A1)
【文献】 米国特許第07069268(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
H04L 9/00− 9/38
(57)【特許請求の範囲】
【請求項1】
コンピュータ・プロセッサを含むコントローラと
複数のテーブルであって、バケットあたり複数のキーが使用される前記複数のテーブルと
前記複数のキーを前記複数のテーブルにマップするための、前記コントローラと交信するハッシュ装置であって、前記ハッシュ装置は、単一のハッシュ・ロジックを用い、前記単一のハッシュ・ロジックが前記複数のテーブルの各々に対する直交ハッシュ関数を実行することで前記複数のテーブルの並列テーブル・ルックアップを設ける、前記ハッシュ装置と、を含むシステムであって
前記コントローラは、前記コントローラに新規コンポーネントが導入されるときの(1)ハッシューテーブルへのエントリ挿入時間と(2)ハッシュ衝突との少なくとも一つを、前記複数のテーブルの前記並列テーブル・ルックアップを用いて低減する、
前記システム。
【請求項2】
前記単一のハッシュ・ロジックはCuckooアルゴリズムに基づく、請求項1に記載のシステム。
【請求項3】
前記単一のハッシュ・ロジックは更新設定可能な巡回冗長検査多項式を含む、請求項1に記載のシステム。
【請求項4】
前記単一のハッシュ・ロジックの各ビット出力は、前記キーのビットの絞り込み結果を含む、請求項に記載のシステム。
【請求項5】
前記絞り込み結果はXOR関数によって生成される、請求項に記載のシステム。
【請求項6】
前記複数のテーブルは更新設定可能である、請求項1に記載のシステム。
【請求項7】
前記複数のテーブルの全体負荷は、前記単一のハッシュ・ロジックの出力に対するビットの数を制御することによって更新設定可能である、請求項に記載のシステム。
【請求項8】
コンピュータ・プロセッサを含むコントローラがハッシュ装置と交信するステップであって、前記ハッシュ装置は、バケットあたり複数のキーが使用される複数のテーブルに複数のキーをマップするためのものである、前記交信するステップと、
前記ハッシュ装置が、単一のハッシュ・ロジックを用いて前記複数のテーブルの各々に対する直交ハッシュ関数を実行することで前記複数のテーブルの並列テーブル・ルックアップを設けるステップと、及び
前記コントローラが、前記コントローラに新規コンポーネントが導入されるときの(1)ハッシューテーブルへのエントリ挿入時間と(2)ハッシュ衝突との少なくとも一つを、前記複数のテーブルの前記並列テーブル・ルックアップを用いることで低減するステップと、
を含む方法。
【請求項9】
前記単一のハッシュ・ロジックの各ビット出力は、前記キーのビットの絞り込み結果を含む、請求項に記載の方法。
【請求項10】
前記複数のテーブルは更新設定可能である、請求項に記載の方法。
【請求項11】
前記複数のテーブルの全体負荷は、前記単一のハッシュ・ロジックの出力に対するビットの数を制御することによって更新設定可能である、請求項10に記載の方法。
【請求項12】
コンピュータ・プログラムであって
コンピュータ・プロセッサを含むコントローラに、ハッシュ装置と交信するステップであって、前記ハッシュ装置は、バケットあたり複数のキーが使用される複数のテーブルに複数のキーをマップするためのものである、前記交信するステップを実行させ、
前記ハッシュ装置に、単一のハッシュ・ロジックを用いて前記複数のテーブルの各々に対する直交ハッシュ関数を実行することで前記複数のテーブルの並列テーブル・ルックアップを設けるステップを実行させ、及び
前記コントローラに、前記コントローラに新規コンポーネントが導入されるときの(1)ハッシューテーブルへのエントリ挿入時間と(2)ハッシュ衝突との少なくとも一つを、前記複数のテーブルの前記並列テーブル・ルックアップを用いることで低減するステップを実行させる、
前記コンピュータ・プログラム。
【請求項13】
前記単一のハッシュ・ロジックの各ビット出力は、前記キーのビットの絞り込み結果を含む、請求項12に記載のコンピュータ・プログラム。
【請求項14】
前記複数のテーブルを更新設定可能である、請求項12に記載のコンピュータ・プログラム。
【請求項15】
前記複数のテーブルの全体負荷は、前記単一のハッシュ・ロジックの出力に対するビットの数を制御することによって更新設定可能である、請求項14に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はコンピュータ・システムの分野に関し、さらに具体的には、非常に大きなテーブルおよび非常に高いスループットのための、コンピュータ実装のパケット・ルックアップ・メカニズムに関する。
【背景技術】
【0002】
イーサネット(R)ポートは、コンピュータとコンピュータ・ネットワークとの間の接続を提供することができる。100Gbpsのイーサネット(R)ポートに対し、最小の64バイト・パケットの継続時間は6.7ナノ秒であり、ロジックが検索を行うために与えられるのは、500Mhzでたったの3クロック・サイクルである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
例えば、100Gbpsのイーサネット(R)アプリケーション中で使われている、結合数の少ないテーブル・ルックアップにおいて、「Cuckooアルゴリズム」などの連鎖法を用いる従来式のハッシュ法を使って検索を行うことは可能であるが、これの欠点は、非常に大きなテーブル中に多くのハッシュ衝突が存在する場合の挿入時間が長いことである。
【課題を解決するための手段】
【0004】
本発明の一つの実施形態によれば、改良されたコンピュータ・システムには、コンピュータ・プロセッサを有するコントローラを含めることができ、該コントローラは、コントローラに導入される新規コンポーネントとインターフェースをとるときの挿入時間もしくはハッシュ衝突またはその両方を低減する。また、本システムには、複数のテーブルおよびバケットあたり複数のキーを使うことによってハッシュ衝突を低減する衝突回避装置も含めることができる。本システムには、複数のキーを複数のテーブルにマップするための、コントローラと交信するハッシュ装置をさらに含めることができ、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジックを用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。
【0005】
この単一のハッシュ・ロジックはCuckooアルゴリズムに基づくものとすることができる。該単一のハッシュ・ロジックには、更新設定可能な巡回冗長検査多項式を含めることが可能である。ハッシュ装置は、雪崩効果に基づいて複数のテーブルの並列テーブル・ルックアップを設けることができる。
【0006】
雪崩効果は、複数のテーブルの各々に対する直交ハッシュ関数列に基づくものとすることができ、単一のハッシュ・ロジックが各直交ハッシュ関数を実行する。単一のハッシュ・ロジックの各ビット出力には、キーのビットの絞り込み結果(funneled results)を含めることができる。
【0007】
この絞り込み結果はXOR関数によって生成することが可能である。これら複数のテーブルは更新設定可能にすることができる。複数のテーブルの全体負荷は、単一のハッシュ・ロジックの出力に対するビットの数を制御することで設定できるようにすることができる。
【0008】
本発明の別の態様は、コンピュータ・システムを改良するための方法である。本方法には、コンピュータ・プロセッサを包含するコントローラに新規コンポーネントが導入されるときの挿入時間もしくはハッシュ衝突またはその両方を低減するステップを含めることができる。また、本方法には、衝突回避装置を介し、複数のテーブルおよびバケットあたり複数のキーを使うことによってハッシュ衝突を低減するステップも含めることができる。本方法には、コントローラと交信するハッシュ装置を使って、複数のキーを複数のテーブルにマップするステップをさらに含めることができ、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジックを用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。
【0009】
本方法には、ハッシュ装置を介し雪崩効果に基づいて、複数のテーブルの並列テーブル・ルックアップを設けるステップを追加して含めることができる。また、本方法には、雪崩効果を、複数のテーブルの各々に対する直交ハッシュ関数列に基づくものとするステップをさらに含めることができ、単一のハッシュ・ロジックが各直交ハッシュ関数を実行する。
【0010】
本方法には、単一のハッシュ・ロジックの各ビット出力に対する、キーのビットの結果を絞り込むステップをさらに含めることができる。本方法には、複数のテーブルを更新設定可能にするステップを追加して含めることが可能である。また、本方法には、単一のハッシュ・ロジック出力に対するビットの数を制御することによって、これら複数のテーブルの全体負荷を更新設定可能にするステップも含めることができる。
【0011】
本発明の別の態様は、有形の媒体と組み合わされた、コンピュータ・システムを改良するためのコンピュータ可読プログラム・コードである。本コンピュータ可読プログラム・コードは、新規コンポーネントが、コンピュータ・プロセッサを包含するコントローラに導入されるとき、プログラムに、挿入時間もしくはハッシュ衝突またはその両方を低減させるように構成することが可能である。また、本コンピュータ可読プログラム・コードは、衝突回避装置を介し、複数のテーブルおよびバケットあたり複数のキーを使うことによってハッシュ衝突を低減することができる。本コンピュータ可読プログラム・コードは、さらに、コントローラと交信するハッシュ装置を使って、複数のキーを複数のテーブルにマップすることができ、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジックを用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。
【0012】
加えて、本コンピュータ可読プログラム・コードは、ハッシュ装置を介し、雪崩効果に基づいて複数のテーブルの並列テーブル・ルックアップを設けることができる。また、本コンピュータ可読プログラム・コードは、雪崩効果を、複数のテーブルの各々に対する直交ハッシュ関数列に基づくものとすることができ、単一のハッシュ・ロジックが各直交ハッシュ関数を実行する。
【0013】
本コンピュータ可読プログラム・コードは、さらに、単一のハッシュ・ロジックの各ビット出力に対するキーのビットの結果を絞り込むことができる。加えて、本コンピュータ可読プログラム・コードは、該複数のテーブルを更新設定可能にすることができる。また、本コンピュータ可読プログラム・コードは、単一のハッシュ・ロジックの出力に対するビットの数を制御することによって、これら複数のテーブルの全体負荷を更新設定可能にすることができる。
【図面の簡単な説明】
【0014】
図1】本発明による、データベース改良システムを示すブロック図である。
図2】本発明による、方法の諸態様を示すフローチャートである。
図3図2の方法による、方法の諸態様を示すフローチャートである。
図4図2の方法による、方法の諸態様を示すフローチャートである。
図5図4の方法による、方法の諸態様を示すフローチャートである。
図6図2の方法による、方法の諸態様を示すフローチャートである。
図7図6の方法による、方法の諸態様を示すフローチャートである。
図8】本発明による、CCBテーブル・ルックアップ・エンジンのハイ・レベルの構造を示す。
図9】本発明による、5モードプログラム可能ハッシュ・ロジックのハイ・レベルの構造を示す。
図10】本発明による、4対2の例を示す。
図11】本発明による、XORマトリックスの例を示す。
図12】本発明による、遠隔ルックアップ要求のタイミングを示す。
図13】本発明による、「オン・ザ・フライ」比較エンジンを示す。
【発明を実施するための形態】
【0015】
以降において、本発明の好適な実施形態が示されている添付の図面を参照しながら、本発明を詳述する。図面全体を通して、同様の番号は同様のエレメントを表す。
【0016】
ここで図1を参照すると、最初に、改良されたコンピュータ・システム10が表されている。ある実施形態において、システム10は、コンピュータ・プロセッサ14を包含するコントローラ12を含む。コントローラ12は、該コントローラに導入される新規コンポーネント16とインターフェースをとるときの挿入時間もしくはハッシュ衝突またはその両方を低減する。また、システム10は、複数のテーブルおよびバケットあたり複数のキーを使ってハッシュ衝突を低減する衝突回避装置18も含む。システム10は、複数のキーを複数のテーブルにマップするための、コントローラ12と交信するハッシュ装置20をさらに含み、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジック22を用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。システム10のコンポーネント群は、当業者ならよく理解しているように、通信ネットワーク21によって繋がれている。
【0017】
一つの実施形態において、この単一のハッシュ・ロジック22はCuckooアルゴリズムに基づいている。別の実施形態では、この単一のハッシュ・ロジック22は、更新設定可能な巡回冗長検査(CRC:cyclic redundancy check)多項式を含む。別の実施形態では、ハッシュ装置20は、雪崩効果に基づいて複数のテーブルの並列テーブル・ルックアップを設ける。
【0018】
一つの実施形態において、雪崩効果は、複数のテーブルの各々に対する直交ハッシュ関数列に基づき、単一のハッシュ・ロジック22が各直交ハッシュ関数を実行する。別の実施形態において、単一のハッシュ・ロジック22の各ビット出力は、キーのビットの絞り込み結果を含む。
【0019】
一つの実施形態において、この絞り込み結果はXOR関数によって生成される。別の実施形態において、該複数のテーブルは更新設定可能である。別の実施形態では、これら複数のテーブルの全体負荷は、単一のハッシュ・ロジック22の出力に対するビット数を制御することによって更新設定が可能である。
【0020】
本発明の別の態様は、コンピュータ・システムを改良するための方法であって、これについて図2のフローチャート24を参照しながら以下に説明する。この方法はブロック26で開始され、ブロック28で、該方法には、コンピュータ・プロセッサを包含するコントローラに新規コンポーネントが導入されるときの挿入時間もしくはハッシュ衝突またはその両方を低減するステップを含めることができる。また、本方法には、ブロック30で、衝突回避装置を介し、複数のテーブルおよびバケットあたり複数のキーを使うことによってハッシュ衝突を低減するステップも含めることができる。ブロック32で、本方法には、コントローラと交信するハッシュ装置を使って、複数のキーを複数のテーブルにマップするステップをさらに含めることができ、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジックを用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。本方法はブロック34で終了する。
【0021】
図3のフローチャート36を参照しながら以下に説明する別の方法の実施形態では、方法はブロック38で開始される。本方法には、図2のブロック28、30、および32のステップを含めることができる。ブロック40で、本方法には、ハッシュ装置を介し雪崩効果に基づいて複数のテーブルの並列テーブル・ルックアップを設けるステップを、追加して含めることができる。本方法はブロック42で終了する。
【0022】
図4のフローチャート44を参照しながら以下に説明する別の方法の実施形態では、方法はブロック46で開始される。本方法には、図2のブロック28、30、および32のステップを含めることができる。また、ブロック48で、本方法には、雪崩効果を複数のテーブルの各々に対する直交ハッシュ関数列に基づくものとするステップをさらに含めることができ、単一のハッシュ・ロジックが各直交ハッシュ関数を実行する。本方法はブロック50で終了する。
【0023】
図5のフローチャート52を参照しながら以下に説明する別の方法の実施形態では、方法はブロック54で開始される。本方法には、図4のブロック28、30、32、および48のステップを含めることができる。ブロック56で、本方法には、単一のハッシュ・ロジックの各ビット出力に対するキーのビットの結果を絞り込むステップをさらに含めることができる。本方法はブロック58で終了する。
【0024】
図6のフローチャート60を参照しながら以下に説明する別の方法の実施形態では、方法はブロック62で開始される。本方法には、図2のブロック28、30、および32のステップを含めることができる。ブロック64で、本方法には、複数のテーブルを更新設定可能にするステップを追加して含めることができる。本方法はブロック66で終了する。
【0025】
図7のフローチャート68を参照しながら以下に説明する別の方法の実施形態では、方法はブロック70で開始される。本方法には、図6のブロック28、30、32、および64のステップを含めることができる。また、ブロック72で、本方法には、単一のハッシュ・ロジックの出力に対するビットの数を制御することによって、これら複数のテーブルの全体負荷を更新設定可能にするステップも含めることができる。本方法はブロック74で終了する。
【0026】
本発明の別の態様は、有形の媒体と組み合わされた、コンピュータ・システムを改良するためのコンピュータ可読プログラム・コードである。本コンピュータ可読プログラム・コードは、コンピュータ・プロセッサ14を包含するコントローラ12に新規コンポーネント16が導入されるときプログラムに挿入時間もしくはハッシュ衝突またはその両方を低減させるように構成することが可能である。また、本コンピュータ可読プログラム・コードは、衝突回避装置18を介し、複数のテーブルおよびバケットあたり複数のキーを使うことによってハッシュ衝突を低減することができる。本コンピュータ可読プログラム・コードは、さらに、コントローラ12と交信するハッシュ装置20を使って、複数のキーを複数のテーブルにマップすることができ、該ハッシュ装置は、一つのキーが変更されたとき、単一のハッシュ・ロジック22を用いて雪崩効果を施し、これは複数のテーブル中のビットのほぼ半数の変更をもたらす。
【0027】
加えて、本コンピュータ可読プログラム・コードは、ハッシュ装置20を介し、雪崩効果に基づいて複数のテーブルの並列テーブル・ルックアップを設けることができる。また、本コンピュータ可読プログラム・コードは、雪崩効果を複数のテーブルの各々に対する直交ハッシュ関数列に基づくものとすることができ、単一のハッシュ・ロジック22が各直交ハッシュ関数を実行する。
【0028】
さらに、本コンピュータ可読プログラム・コードは、単一のハッシュ・ロジック22の各ビット出力に対するキーのビットの結果を絞り込むことが可能である。加えて、本コンピュータ可読プログラム・コードは、複数のテーブルを更新設定可能にすることができる。また、本コンピュータ可読プログラム・コードは、単一のハッシュ・ロジック22の出力に対するビットの数を制御することによって、これら複数のテーブルの全体負荷を更新設定可能にすることができる。
【0029】
前述を踏まえ、システム10は改良されたコンピュータ・システムを提供する。例えば、100Gbpsのイーサネット(R)アプリケーション中で使われている、結合数の少ないテーブル・ルックアップにおいて、「Cuckooアルゴリズム」などの連鎖法を用いる従来式のハッシュ法を使って検索を行うことは可能であるが、これの欠点は、非常に大きなテーブル中に、多くのハッシュ衝突が存在する場合の長い挿入時間にある。これと対照的に、システム10は、検索と同じ時間範囲内での挿入を可能にし、これは、プラグ・アンド・プレイ・ネットワークにおけるパケット学習などで、実行中に新規テーブル挿入を行う場合には重要である。
【0030】
システム10は、衝突回避および挿入時間低減のため、効率的なハッシュ法もしくはアルゴリズムまたはその両方の選択を用いる。システム10は、非常に大きなテーブルおよび高いスループットに対するパケット・ルックアップを提供する。
【0031】
一つの実施形態において、システム10は、任意の数のロジック・テーブルに対し任意の型のCRC多項式の除算を使うことが可能な、単一のハッシュ方法のハードウェア実装を提供し、これによりキャッシュ衝突を低減する。システム10のパケット・ルックアップ機能のハードウェア実装は、大きなキーの非常に多くの数(数億)と非常に高いスループット(100Gbpsイーサネット(R))をサポートする。別の実施形態において、システム10は、システム10が任意の型のCRC多項式を設定できる単一のロジック22に基づいている。別の実施形態において、システム10は、複数のハッシュ演算子に対して直交性および高い雪崩効果を用い、これによりいくつかのテーブルを並行して検索することを可能にして衝突を低減する。
【0032】
一つの実施形態において、各異なるテーブルに対し、効率的な相直交するハッシュ演算子が使われる。別の実施形態において、効率的処理ために、ハッシュ演算子は、例えば、キーのたった一つのビットが変更された場合でもハッシュ結果のビットの約半数が変更されるといった、高い雪崩効果を施す必要がある。
【0033】
これは、キーの除算または乗算によって可能であるが、100Gbpsの総量スループットに対する非常に限られたクロック・サイクルでは、このような乗算のハードウェア実装は困難である。XOR折り畳みを、ハードウェア中に実装することは可能であるが、これらは良好な雪崩効果を提供しない。CRCは、良好な雪崩効果を提供し、XOR絞り込み法を使いハードウェア中に実装できるので効果的であるが、数多くのロジックXOR回路を必要とし、相異なるテーブルに対する大きなロジック回路をもたらすことになる。
【0034】
一つの実施形態において、システム10は、衝突を低減するために、4つの異なるテーブルおよびバケットあたり8つのキーを用いる。別の実施形態において、単一のプログラム可能ハッシュ機能22が使われ、そのハッシュ演算結果の各ビットはキーの全ビットの絞り込み結果であり、これは任意の型のCRC多項式の実装を可能にする。これは、多数のXOR回路を必要とするが、4つの異なるテーブルに対する単一のロジック22の共用によって、十分に対応が可能である。
【0035】
一つの実施形態において、ルックアップ・テーブルによる処理法を最適化するための、このフレキシブルなハードウェア実装には、2〜5個に更新設定可能なハッシュ・テーブルの数を備えることが含まれる(基本的設定は、4つを作動中+1つの予備とすることができよう)。別の実施形態において、5つのハッシュ演算関数は、全面的に更新設定が可能なXORマトリックスである。このマトリックスが各種の型のハッシュ設定を可能にするものであっても、CRCハッシュ関数が望ましい選択肢である。
【0036】
一つの実施形態において、全体のテーブル負荷は、ハッシュ結果に対するビット数の設定を定めることにより更新設定可能となろう(ハードウェアは、テーブルあたり、19bハッシュ値の4Mエントリまでサポートすることができる)。別の実施形態において、「オン・ザ・フライ」のキー比較は、折り返しのDMA要求および応答を最適化する助力となる。
【0037】
さらに図8を参照すると、CCBテーブル・ルックアップ・エンジンのハイ・レベル構造が示されている。一つの実施形態において、ルックアップ処理は、受信されたルックアップ要求と、ハッシュ関数を使ってメモリ・アドレスを計算することと、DMA読み取り要求と、DMA読み取り応答と、読み取りデータを元のキーと比較することと、ルックアップ応答を要求元に送信することと、を含む。
【0038】
さらに図9〜10を参照すると、図9には、5モードのプログラム可能ハッシュ・ロジックのハイ・レベル構造が示されている。図10には、本発明の4対2の例示的実施形態が開示されている。
【0039】
おそらくはシステム10の最もフレキシブルな実装である、一つの実施形態においては、キーの全ビットが任意のハッシュ・ビットに参加することが可能である。この実装では、ハッシュ・ロジック22中に「インテリジェンス」があるので、ハードウェアと、アルゴリズムの改新およびテーブルの最大数とはほとんど無関係になる。
【0040】
一つの実施形態において、64bのキー、19bのハッシュ、および5つのハッシュ関数にサイズ形成することによって、
64*19*5=6080の設定ラッチと、
設定を選択するための(64*19)の5対1のマルチプレクサと、
(64*19)の2対1のANDゲートと、
19*(32+16+8+4+2+1)=1197の2対1のXORゲートと、
が設けられる。
【0041】
45nm実装の大まかな面積見積もりは、
ラッチ:6080*10μm=60800μm
XOR2:1197*4μm=4788μm
AND2:64*19*3μm=3648μm
AO22:3*64*19*4μm=14592μm
合計=(60800+4788+3648+14592)*1.4(60%の配線余裕度を想定)=117359μm、約0.12mmとなる。
【0042】
図11は、本発明による、XORマトリックスの例を示す。この例では、64bのキーは16bハッシュ値にハッシュされる。
【0043】
図12は、遠隔ルックアップ要求のタイミングを示す。この例では、4つのハッシュ・テーブルのケースが示されている。図13は、「オン・ザ・フライ」比較エンジンを示す。
【0044】
一つの実施形態において、システム10は、テーブル・ルックアップのための方法を備えている。この方法には、数億のキーの一つを、テーブル内の例えばバケットなどのスロットにマップするための単一のハッシュ関数を実行する、ハードウェア手段を含めることができ、それによって、該ハッシュ関数は、あるキー中のただ一つのビットが変更されたときでも高い雪崩効果を生成する。また、本方法には、4つの異なるテーブルとバケットあたり8つのキーを実装することによってハッシュ衝突を最少化するための手段を含めることもできる。
【0045】
一つの実施形態において、システム10は、任意の型のCRC多項式に設定することが可能な単一のロジック22に基づいて、いくつかのテーブルを並行してルックアップができるように、複数のハッシュ演算子に対し直交性および高雪崩効果を用いて衝突を低減しながら、例えば数億といった非常に多くの数の大きなキー、および例えば100Gbpsイーサネット(R)といった非常に高いスループットをサポートする、パケット・ルックアップ機能のハードウェア実装を提供する。
【0046】
一つの実施形態において、システム10は、単一のハッシュ・ロジック22を実行し、高い雪崩効果によって、キーの非常に大きなセットを、例えばバケットなどのスロットにマップするための方法およびシステムを提供する。別の実施形態において、システム10は、単一のハッシュ・ロジック22を4つの異なるテーブルおよびスロット当たり8つのキーに対し共用することによってハッシュ衝突を低減する。
【0047】
一部の別の実装においては、フローチャートのブロック中に記載された機能が、図に記載された順序を外れて行われ得ることに留意すべきである。本明細書に示されたフロー図は単なる例であるので、例えば、連続して示された2つのブロックが、関与する機能によって実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。本明細書に記載されたこれらの図またはステップ(またはオペレーション)に対し、本発明の趣旨から逸脱しない多くの変形があり得る。例えば、これらのステップは、同時にもしくは異なった順序でまたはその双方で実施することができ、あるいは、ステップを追加、削除、もしくは修改、またはこれらの組み合わせを実施することが可能である。これら変形の全ては、請求対象の発明の一部と見なされる。
【0048】
本発明の好適な実施形態を説明してきたが、現在のまたは将来の当業者は、添付の特許請求の範囲に含まれる、さまざまな改良および増強を行うことができよう。これらの請求項は、前述で説明した本発明に対し、適正な保護を保持すると解釈すべきである。
【符号の説明】
【0049】
10 コンピュータ・システム
12 コントローラ
14 コンピュータ・プロセッサ
16 新規コンポーネント
18 衝突回避装置
20 ハッシュ装置
21 通信ネットワーク
22 単一のハッシュ・ロジック
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13