JPH10269142A - システム性能を改善するためのハシュテーブルのハシュバケットにおけるコリジョンの再編成 - Google Patents
システム性能を改善するためのハシュテーブルのハシュバケットにおけるコリジョンの再編成Info
- Publication number
- JPH10269142A JPH10269142A JP9370218A JP37021897A JPH10269142A JP H10269142 A JPH10269142 A JP H10269142A JP 9370218 A JP9370218 A JP 9370218A JP 37021897 A JP37021897 A JP 37021897A JP H10269142 A JPH10269142 A JP H10269142A
- Authority
- JP
- Japan
- Prior art keywords
- bucket
- data
- entry
- chain
- buckets
- 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
- 230000008521 reorganization Effects 0.000 title description 3
- 238000000034 method Methods 0.000 claims description 38
- 230000006870 function Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 2
- 230000003247 decreasing effect Effects 0.000 abstract 2
- 230000007246 mechanism Effects 0.000 description 16
- 238000012545 processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000013459 approach Methods 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- 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/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99951—File or database maintenance
- Y10S707/99956—File allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
ルのハシュバケットにおけるコリジョンの再編成を提供
する。 【解決手段】 性能を改善するために今日の多くのプロ
セッサのキャッシュアーキテクチャの利点を得る改善さ
れたハッシュシステムを提供する。PENTIUMプロ
セッサのような今日の最新のプロセッサの幾らかは、1
次キャッシュと2次キャッシュを利用する2レベルキャ
ッシュスキームを有し、1次キャッシュに包含されたデ
ータは、メインメモリのデータよりも50乃至150倍
速くアクセスされ得る。改善されたハッシュシステム
は、バケットが多くのエントリを含むように衝突が起こ
ることを保証し、ランタイムで、バケットのエントリ
は、プロセッサの1次キャッシュが使用される回数を増
加させ、メインメモリが使用される回数を減少させるこ
とによって、ハッシュシステムの性能を改善するよう
に、リオーダーされる。
Description
処理システムに関し、特に、ハッシュテーブルのハッシ
ュバケットにおけるコリジョンの再編成に関する。
ので、メインメモリアクセスは、増加する性能全体にわ
たってボトルネックとなっている。従って、性能を改善
するために、メモリキャッシュスキームが、メインメモ
リボトルネックの影響を減少させるために採用されてき
た。PENTIUMプロセッサは、非常に高速な1次キ
ャッシュと高速2次キャッシュを使用する、かかるメモ
リキャッシュスキームを採用する。プロセッサがメモリ
からデータを読み取る必要があるとき、プロセッサは最
初に、データを位置決めするために1次キャッシュをチ
ェックする。要求されたデータが1次キャッシュに見つ
からないとき、次いで、2次キャッシュがチェックされ
るが、該2次キャッシュは、1次キャッシュよりも遅い
アクセス時間を有するが、メインメモリよりもまだ高速
である。データが2次キャッシュに配置されているなら
ば、データはプロセッサに戻され、データがストアされ
た2次キャッシュのライン(「キャッシュライン」)
が、1次キャッシュにコピーされる。データは、32バ
イトキャッシュラインに関して、1次キャッシュと2次
キャッシュの双方にストアされる。1次キャッシュは、
サイズが8KBであるので、256キャッシュラインを
ストアすることができる。2次キャッシュは、典型的に
は256KB乃至512KBであるので、8192と1
6384キャッシュラインの間をストアすることができ
る。
が依然として見つからないならば、2次キャッシュより
著しく遅いキャッシュ時間を有するメインメモリが、ア
クセスされる。メインメモリがアクセスされるとき、要
求されたデータだけでなく、32バイトの全体メモリラ
インも戻される。プロセッサは要求されたデータを受け
取り、1次及び2次キャッシュの双方は全体32バイト
メモリラインを受け取る。32バイトメモリラインは、
次回、プロセッサがデータをメモリから読み出す必要が
あることを希望して、キャッシュにストアされ、該デー
タは、このキャッシュライン内で見つけられるであろ
う。将来におけるコストを見積もるために、1次キャッ
シュへアクセスするために1プロセッササイクルを要
し、2次キャッシュへアクセスするために4乃至12プ
ロセッサを要し、メインメモリへアクセスするために典
型的には50プロセッササイクルを要する。従って、1
次キャッシュは、メインメモリに一度アクセスするのに
要する時間で、おそらく50回サーチされることができ
る。PENTIUMプロセッサのキャッシュスキーム
は、Anderson、及び、Shanley著、「P
entium Processor System A
rchitecture」、第2版、35乃至60頁、
Addison−Wesley(1995年) により詳
細に説明されており、参照によりここに組み込まれる。
テムにおいて重要な役割を演ずる。在来のハッシュ機構
は、ストアされたデータへの直接的なアクセスを提供す
るためのハッシュテーブルとして知られるデータ構造を
利用する。在来のハッシュ機構100のかかる一例を図
1に示す。ハッシュ機構100は、キー102、ハッシ
ュ関数104、ハッシュインデックス106、及び、ハ
ッシュテーブル108を含む。ハッシュテーブル108
は、多数のハッシュバケット110乃至130を含み、
かかるハッシュバケットは、キー102として作用する
レコードのフィールドのうちの1つを備えた、レコード
のようなデータを含む。ハッシュテーブル108へアク
セスするために、キー102は、特定のハッシュバケッ
ト(例えば、114)と称する、インデックス106
(又はハッシュアドレス)を生ずるハッシュ関数104
に入力される。ハッシュバケット114内に、キーを適
合するデータがある。ハッシュテーブルが、インデック
スの小さな範囲内に、キー値の大きな範囲をマッピング
することにより、データへの直接アクセスを提供するの
で、ハッシュテーブルは有用である。この方法では、例
えば、0乃至99999999のキー値の範囲を有する
8桁のキーが利用でき、10値以下が引き続き使用され
るならば、ハッシュ機構は、10バケットを包含するハ
ッシュテーブルと称する、1桁のインデックスにキーを
ハッシュするのに使用することができる。従って、バケ
ットの非常に制限された数だけが引き続き使用されてい
る、100,000,000 ハッシュバケットを有するハッシュテ
ーブルの使用の代わりに、10バケットだけのハッシュ
テーブルを、システムリソースをより有効に使用するの
に用いることができるが、データへの直接アクセスを依
然として行う。
インデックスにマップし、従って、同じキー値が一度以
上使用されたときはいつでも、ハッシュテーブル108
への同じインデックス106が生成される。しかしなが
ら、ときどき、データをハッシュテーブル108にスト
アしようとするとき、1キー値より大きなものが、同じ
インデックス106にハッシュされ得る。この状況で
は、「衝突」が発生している。衝突が生じるとき、デー
タは、インデックスによって示されたハッシュバケット
にストアされる必要があり、従って、1レコードより大
きなものが、このハッシュバケットにストアされ得る。
ハッシュバケット118は、衝突が生じ、1レコードよ
り大きなものがハッシュバケットにストアされた後の、
ハッシュバケットの状態を示す。ハッシュバケット11
8では、データ「データ3」の1レードが、データ「デ
ータ4」の第2のレコードにリンクされている。更なる
衝突が生じたとき、ハッシュバケットはより占領された
状態になり、従って、ハッシュバケット内の各レコード
がもはや直接アクセスできないので、ハッシュテーブル
の利益は小さくなりはじめる。その代わりに、キー値を
インデックス内にハッシュした後、インデックスは、互
いにリンクした多数のレコードを包含するハッシュバケ
ットを参照し、ハッシュバケットは、次いで、処理時間
に関してコストがかかる、正しいレコードを求めるため
にサーチされなければならない。従って、在来のハッシ
ュシステムは、衝突を回避するために設計されている。
データをストアする、ハッシュテーブルが、該データへ
の直接アクセスを提供するので、ハッシュテーブルは、
多くの既存のコンピュータシステムの重要な部分であ
る。従って、ハッシュ機構の性能を改良することが望ま
しい。しかし、在来のハッシュ機構は、今日のプロセッ
サのキャッシュアーキテクチャを利用するのに失敗して
きた。
日の多くのプロセッサのキャッシュアーキテクチャの利
点を得る改善されたハッシュシステムを提供する。PE
NTIUMプロセッサのような今日の最新のプロセッサ
の幾らかは、1次キャッシュと2次キャッシュを利用す
る2レベルキャッシュスキームを有し、1次キャッシュ
に包含されたデータは、メインメモリのデータよりも5
0乃至150倍速くアクセスされ得る。改善されたハッ
シュシステムは、バケットが多くのエントリを含むよう
に衝突が起こることを保証し、ランタイムで、バケット
のエントリは、プロセッサの1次キャッシュが使用され
る回数を増加させ、メインメモリが使用される回数を減
少させることによって、ハッシュシステムの性能を改善
するように、リオーダーされる。
するバケットを有するハッシュテーブルのデータにアク
セスするためのコンピュータシステムにおける方法を提
供する。複数のエントリが、データを包含する占領され
たエントリである。かかる方法は、入力データに対する
要求をハッシュテーブル内に受け、且つ、複数の占領さ
れたエントリが各バケットに包含されるように衝突を生
成するハッシュ機構を生成し、該方法は、ハッシュ機構
によってハッシュテーブルにアクセスするための複数の
要求を受ける。ハッシュ機構が、ハッシュテーブルにア
クセスするための複数の要求を処理する間、かかる方法
は、ハッシュ機構の性能を改善するために、バケットの
うちの少なくとも1つの占領されたエントリの少なくと
も1つのデータを、少なくとも1つのバケットの占領さ
れたエントリの間の新しい位置に再配置する。
セッサと、サイズを持ったキャッシュラインとを有する
コンピュータシステムを提供する。メモリは、ハッシュ
マネージャと、バケットのチェーンを有するハッシュテ
ーブルとを含む。各バケットは、データをストアするエ
ントリを包含し、各バケットはキャッシュラインサイズ
である。ハッシュマネージャは、ハッシュテーブルのデ
ータにアクセスするための要求と、ハッシュテーブルの
データへのアクセスと、チェーンがアクセスされた後
の、各チェーンの第1のバケットのMRUデータの位置
とを受ける。プロセッサはハッシュマネージャを走らせ
る。本発明の第3の態様では、データにアクセスするた
めのページを持ったメモリを有するコンピュータシステ
ムにおける方法を提供する。本方法は、データをストア
する複数のエントリを持った各バケットを備えるバケッ
トのチェーンを有するハッシュテーブルを生成する。各
チェーンのバケットは、第1のバケットから最後のバケ
ットへの連続を形成する。各バケットは、連続に関する
位置を有する。かかる方法は更に、シーケンスの等価の
相対位置を有するチェーンのバケットを、メモリの単一
のページにストアする。
能を改善するために多くの今日のプロセッサのキャッシ
ュアーキテクチャを利用する改善されたハッシュシステ
ムを提供する。PENTIUMプロセッサのような今日
の最新のプロセッサのいくつかは、1次キャッシュと2
次キャッシュとを利用する2レベルキャッシュスキーム
を有し、1次キャッシュに包含されたデータは、メイン
メモリのデータより50乃至150倍速くアクセスする
ことができる。改善されたハッシュシステムは、バケッ
トが多くのレコードを包含するように衝突を生じさせる
ようにし、ランタイムで、バケットのレコードは、プロ
セッサの1次キャッシュが使用される回数を増加させる
ように、且つ、メインメモリが使用される回数を減少さ
せるようにリオーダーされ、それによって、ハッシュシ
ステムの性能を改善する。
バケットを備えるハッシュテーブルを保持する。各ハッ
シュバケットは、実際には、長さが各々32バイトであ
る「バケット」のチェーン(メモリの全体ライン即ちキ
ャッシュライン)である。各バケットは、1レコードを
ストアする各エントリである、多くのエントリを有す
る。改善されたハッシュシステムは、性能を改善するた
めに、以下の原理を利用する。バケットのチェーンのエ
ントリが、要求されたレコードを見つけるために線形に
サーチされるので、要求されたレコードが、チェーンに
見つけられたときはいつでも、それが要求されたレコー
ドをストアするならば、求めるためにアクセスされてし
まっている前に、夫々を各バケットにエントリする。各
バケットの各エントリがアクセスされるので、その対応
するメモリラインは、それがもともと配置されていた場
所に関係なく、1次キャッシュ内に持ってこられる。従
って、要求されたレコードが見つけられたとき、事実
上、全ての先のバケット(即ち、キャッシュラインに対
応するもの)は、1次キャッシュにロードされるのが保
証される。従って、レコードの最適なリオーダーが少し
のプロセッシング時間を要求することを生じさせること
ができるが、1次キャッシュヒットの数を増加させ、メ
インメモリがアクセスされる回数を減少させることによ
って、チェーンの引き続き起こるアクセスに関して、本
質的な性能の利益を与え得る。
た後、エントリのレコードは、要求されたレコードが、
多の全てのレコードが1エントリに押し戻されて、チェ
ーンの第1のバケットの第1のエントリに現れるよう
に、リオーダーされる。この技術は、最も最近使用され
たレコードがすぐに再びアクセスされ得ることを仮定し
ている。この技術は、最も頻繁に使用されるレコードで
あると仮定されている、第1のバケットのキャッシュラ
インを占め、第1のバケットに関するキャッシュライン
が1次キャッシュに滞在するのを保証し、メインメモリ
の使用が減少する一方、1次キャッシュの使用は増加す
る。この技術は、レコードを第1のバケット内に挿入す
るための最高使用頻度(MRU)アルゴリズムに基づ
き、且つ、第1のバケットの外のレコードをとるための
最低使用頻度(LRU)アルゴリズムに基づく。第1の
バケットのチェーンのMRUレコードをおくことによ
り、第1のバケットは、1次キャッシュ内に滞在し、従
って、チェーンの殆どのアクセスは、減少されたアクセ
ス時間から利益を得る。MRUアルゴリズム及びLRU
アルゴリズムの代わりに使用することができる、他の多
くのアルゴリズムがあり、いくつかを以下で議論する。
システムは、衝突を助長し、速度を得るために衝突をリ
オーダーする。しかし、在来のハッシュシステムは衝突
を回避しようと試みる。かかる在来のハッシュシステム
では、衝突は、単にハッシュテーブルが大きくなりすぎ
ないように許容されている。即ち、少数の衝突を備える
ハッシュテーブルが散在しており、使用されていないバ
ケットを有する。本発明の別の態様は、発生するページ
フォルトの数を減少させるように、メモリの個々のペー
ジにハッシュテーブルのバケットを編成する。第1のバ
ケットが最も頻繁に使用されるレコードを包含するの
で、例えば、バケットのチェーンにおける全ての第1の
バケットは、同じページに配置され、従って、ページが
メインメモリの外に事実上スワップされないことを保証
する。各チェーンの第2のバケットは、同じページ等に
同様にストアされる。このスキームを使用して、最も頻
繁に使用されるバケットは、ページフォルトの数を減少
させるメモリの外にめったにスワップされないであろ
う。このストラテジに対する変形実施形態は、単一のペ
ージにおける第1の2つ又は3つのバケットの後に、チ
ェーンの最後のバケットをストアするものである。従っ
て、エントリが、第1の2つ又は3つのバケットを超え
てアクセスされるとき、各次のバケットをサーチするこ
とによって誘発されるページフォルトの数ではなく、せ
いぜい1つのページフォルトが生じる。
当であるコンピュータシステム200を示す。コンピュ
ータシステム200は、メモリ202と、2次記憶装置
204と、カリフォルニア州サンタクララのインテル
コーポレーションから入手可能なPENTIUMプロセ
ッサのような中央処理装置(CPU)と、入力デバイス
208と、ビデオディスプレィ210とを含む。メモリ
202は、2次記憶装置204のハッシュテーブル21
4を操作する責任があるハッシュマネージャ212を含
む。ハッシュテーブル214が2次記憶装置204にあ
るように示してあるけれども、ランタイムで、ハッシュ
テーブルがメモリ202にもってこられ、メモリにある
間、処理されることは、当業者には明らかであろう。C
PU206は、メモリ216を有する。
細に示す。ハッシュテーブル214は、バケット302
乃至312のチェーンを包含する。チェーン302乃至
312の各々は、互いにリンクした多くの個々のバケッ
ト(例えば、バケット314乃至324)である。各バ
ケットは、多くのエントリを有し、各エントリはデータ
又はレコードを包含する。図4Aは、各バケットチェー
ン302乃至312における、第1のバケット(例えば
314)のより詳細なダイアグラムである。バケット3
14は、1キャッシュライン内に適合させるために32
バイト長であり、5フィールドを包含し:多数のエント
リフィールド402は、4バイトであり、バケットの全
体チェーンにその数のエントリを含み、3つのエントリ
フィールド404、406及び408は、それぞれ8バ
イトであり、事実上、ハッシュテーブルにストアされた
レコードを含み、ポインタ410は4バイトであり、バ
ケットのチェーンに次のバケットを参照する。エントリ
404、406及び408は、図4Cに示したようなフ
ォーマットを有する。しかし、キーの部分がキーへのポ
インタを含んでいてもよく、データの部分がデータへの
ポインタを含んでいても良いことは、当業者には明らか
であろう。より良い性能が、更なるエントリをバケット
に適合することによって達成されることは、理解される
べきである。かかるように、データが大きいならば、デ
ータ自身をストアする代わりに、データへのポインタを
使用するのが望ましいであろう。第1のバケット(例え
ば、316乃至324)後の各次のバケットは、図4B
に示したようなフォーマットを有する。バケット412
は、キャッシュラインサイズに対応するように総数32
バイト長であり、3つの8ビットデータエントリ42
0、422、及び424と、バケットのチェーンにおけ
る次のバケットへの8バイトポインタ426(4バイト
のポインタが典型的には使用される)とを有する。
よるハッシュシステムを作成する際に実行されるステッ
プのフローチャートを示す。好ましい実施形態によるハ
ッシュ機構を作成する際に実行される第1のステップ
は、制限された数のインデックスが衝突を促進するよう
に生成されるようにハッシュ関数を選択し、この数のチ
ェーンを有するハッシュテーブルを作成する(ステップ
502)。改善されたハッシュシステム用に選択された
ハッシュ関数は、衝突を生成するような十分なインデッ
クスを生成するように選択され、ハッシュテーブル21
4は、ハッシュ関数によって生成されたインデックスを
収容するための十分なチェーンで構成される。例えば、
ハッシュ関数用のキーが8桁数であり、且つ、いかなる
特定の時間でも使用され得るおおよそ3000キー値が
あり、ハッシュ関数が、キー値の最後の2桁がハッシュ
インデックスとして選択されるようなものならば、バケ
ットの100チェーンだけに3000キーのマッピング
がされ、従って、平均で、バケットの各チェーンは30
エントリを含み得る。この方法では、改善されたハッシ
ュ機構は、衝突を促進するように構成される。従って、
このステップでは、ハッシュ関数は、ハッシュ関数に広
範囲のキー値入力があるように選択されるが、ハッシュ
関数は、ハッシュテーブル内に非常に制限された範囲の
インデックスを生成する。ハッシュテーブルは、次い
で、この制限された数のチェーンで実行される。ハッシ
ュ関数を選択し、ハッシュテーブルを作成した後、ハッ
シュテーブルは(ステップ504で)占められる。この
ステップでは、ランタイム前に、テーブルに加えられる
必要があるデータがありうる(例えば、最初のデー
タ)。このステップでは、各レコードのためのインデッ
クスは、レコードが属するバケットのチェーンを判断す
るためにハッシュされ、該レコードは、バケットのチェ
ーンの最初のバケットにおける、最初のエントリはいに
加えられる。このチェーンの一連のエントリにおける全
ての一連のレコードは、次いで、1つのエントリ又は位
置に押し戻される。レコードをハッシュテーブルに追加
するためのこの技術が、レコードが加えられるのに必要
なときに、ランタイムでまた、使用されることは明らか
である。レコードをバケットチェーンに挿入するための
他の方法が使用され得ることは当業者には明らかであろ
う。
けるとき、ランタイムでハッシュマネージャによって実
行されるステップのフローチャートを示す。ハッシュマ
ネージャによって実行される第1のステップは、データ
アクセス要求を受けることである(ステップ602)。
データアクセス要求は、データのキーを含む。次いで、
ハッシュマネージャは、キーをインデックス内にハッシ
ュする(ステップ604)。このステップでは、ハッシ
ュマネージャは、インデックスを求めるためににハッシ
ュ関数を使用する。該インデックス決定後、ハッシュマ
ネージャは、インデックスによって参照されたバケット
のチェーンにアクセスすることによって、キーが適合す
る要求されたレコードを見つけるまで各バケットの各エ
ントリを線形サーチすることによって、要求されたレコ
ードをハッシュテーブル内に配置する(ステップ60
6)。以前に述べたように、チェーンの各バケットがア
クセスされるとき、その対応するキャッシュラインは、
プロセッサによって1次キャッシュ内に持ってこられ
る。要求されたレコードを配置した後、ハッシュマネー
ジャは要求されたレコードをコーラに戻す(ステップ6
08)。レコードをコーラに戻した後、ハッシュマネー
ジャは、第1のバケットの第1のエントリと、要求され
たレコードが、このチェーンの一連のアクセスのシステ
ム性能を改善するために存在するエントリとの間のチェ
ーンにレコードをリオーダーする。この点で、リオーダ
ーされるべきレコードは、キャッシュラインが1次キャ
ッシュに現在ストアされている、バケットにストアさ
れ、従って、リオーダリングは名目処理時間を使用す
る。このリオーダリングはステップ610と612で実
行される。
1のステップは、要求されたレコードを第1のバケット
の第1のエントリ内に挿入するためのハッシュマネージ
ャに関するものである(ステップ610)。次いで、ハ
ッシュマネージャは、そのエントリに以前に包含された
レコードを移動させ、並びに、復帰されたレコードが検
索されるエントリに届くまで後ろのエントリである、そ
のエントリに続く全てのエントリに包含されているレコ
ードを移動させる。図7は、ステップ610及び612
に従ってリオーダされているバケットチェーン700を
示す。バケットチェーン700は、バケット708の第
2のエントリから検索される復帰したレコードを備え
る、5つのバケット702乃至710を含る。レコード
がバケット708から検索されるので、バケット702
の第1のエントリ内に挿入される。次いで、第1のバケ
ット702の第1のエントリに前もってストアされたレ
コード、並びに、バケット708の第1のエントリまで
の以下のエントリにおけるレコードは、ある位置まで戻
され、次のエントリにストアされる。従って、図7に示
すように、ハッシュマネージャは、データを第1のバケ
ットに挿入するためのMRUアルゴリズムと、第1のバ
ケットの外のデータをとるためのLRUアルゴリズムと
の両方が実行される。
帰後、バケットチェーン800のデータを再編成するた
めの第1の変形実施形態を示す。このシステムでは、バ
ケットの制限された数(「n」)が予め決定され(例え
ば、n=2)、データ要求を満たした後、再編成される
バケットのこの数だけである。例えば、チェーン800
は5つのバケット802乃至810を有する。バケット
808の第2のエントリに包含されたレコードの検索
で、復帰したレコードは第1のバケット802の第1の
エントリに挿入される。次いで、バケット802,80
4及び808は、バケット808の第1のエントリ内に
挿入されている、バケット804の最後のエントリにス
トアされたレコードを有する、あるエントリに各レコー
ドを押し戻すことによって、再編成される(が、806
はされない)。この方法で、バケットのチェーンを再編
成することは、データ要求を満足させることに応じて実
行されなければならない処理の量を減少させるが、1次
キャッシュヒットの数を最大にするように、且つ、1次
キャッシュミスの数を最小にするように、MRUデータ
を第1のバケット内に依然として配置する。
するために、位置指向性アプローチを採用する第2の変
形実施形態を示し、レコードは、レコードが来るエント
リとして、バケット内に同じ相対位置を有するエントリ
内に再配置される。バケットチェーン900では、5つ
のバケット902乃至910がある。この例では、コー
ラに戻されたレコードは、バケット908の第2のエン
トリに見られる。レコードをコーラに戻した後、戻され
たレコードは第1のバケット902の第2のエントリ
(「第2の位置」)内に挿入され、次いで、各続きのバ
ケットの第2の位置に包含されたレコードは、戻された
データが元々来たエントリに届くまで次のバケットの第
2の位置に押し戻される。この位置指向性アプローチを
使用して、再編成プロセスは、データ要求を満たした後
に最小にされるが、MRUデータは依然として、第1の
バケット内に挿入されている。他のエントリ再編成スキ
ームを使用することができることは、当業者には明らか
であろう。例えば、MRUデータは、2,3のバケット
をバケットチェーンに前進させるだけであるが、性能改
善は依然として生じ得る。
ランタイムで生じる、ページフォルトの数を減少させる
ことに関する。図10は、ハッシュテーブルにアクセス
するとき生ずるページフォルトの数を減少させるよう
に、図3のハッシュテーブルのバケットを多数のページ
1002乃至1012内にストアするための技術を示
す。バケット1002乃至1012の各グループは、メ
モリの単一ブロック(即ち、ページ)にストアされ、こ
の場合、そのページ内の全てのバケットは、互いにメモ
リ内に、及び、メモリ外にスワップされる。典型的なペ
ージサイズは通常は4K乃至16Kである。特定のオペ
レーティングシステムサービスを使用したページが割り
当てられる。改善されたハッシュシステムは、MRUレ
コードが、各チェーンの第1のバケットを包含するペー
ジ1002にストアされるのを保証するので、このペー
ジは、典型的には、常にメモリに常駐し、このページに
関してページフォルトはほとんど生じない。同様に、改
善されたハッシュシステムは、LRUデータが、チェー
ンの端付近であるバケットに見つけられることを保証す
る。従って、ページ1008内のそれらのように、めっ
たに使用されないデータエントリは、単一のページにス
トアされないので、この技術は、このページがメモリ内
にスワップされる回数の数を最小にするであろう。バケ
ットのグループ(例えば、1002)が、単一のページ
内に適合しないならば、それらは1又はそれ以上の追加
のページにストアされ得ることは、当業者には明らかで
あろう。
するための変形実施形態を図11に示す。図11では、
各チェーンのバケットの第1の所定の数(例えば、2)
だけが、同じページ(例えば、ページ1102及び11
04)にストアされている。バケットの所定の数が個々
のページにストアされた後、チェーンにおけるバケット
の残り(例えば、318,320,322,324)は
単一のページ(例えば、1106)に全てストアされ
る。この技術は、ハッシュ機構が、所定のレコードを探
すバケットのチェーンのエントリをスキャンするとき、
1つのページフォルトだけが、多数のページフォルトの
代わりに生ずることを保証する。例えば、チェーン30
2がスキャンされるならば、ハッシュ機構がバケット3
18のエントリをスキャンするとき、最悪の場合でも、
1つのページフォルトだけが、バケットのチェーンの残
りに関するエントリをスキャンすることを完成するため
に生じ得る。このように、ページフォルトの数が最小に
される。
実施形態では、1つのバケットより多くのものがページ
にストアされ得る。例えば、各チェーンの第1及び第2
のバケットは、単一のページにストアされ得る。他のバ
ケット編成を本発明に関して使用することができるとい
うことは、当業者には明らかであろう。本発明を好まし
い実施形態で説明したけれども、添付した特許請求の範
囲に定義した本発明の精神及び範囲から逸脱することな
く、形態及び詳細における種々の変化をすることができ
ることは、当業者には明らかであろう。
当なコンピュータシステムを示す。
イアグラムを示す。
ケットのより詳細なダイアグラムを示す。
ットに続く、バケットのより詳細なダイアグラムを示
す。
を示す。
を生成する際に実行されるステップのフローチャートを
示す。
ネージャによって実行されるステップのフローチャート
を示す。
れたバケットチェーンを示す。
れたバケットチェーンを示す。
れたバケットチェーンを示す。
成された図3のバケットを示す。
編成するための変形実施形態を示す。
Claims (26)
- 【請求項1】 キャッシュラインサイズを備えるキャッ
シュラインを含むキャッシュを有するプロセッサを持っ
たコンピュータシステムにおける方法であって、 データをストアするキャッシュラインサイズのバケット
を有するハッシュテーブルを、コンピュータシステムの
メモリに提供し、 1つのバケットが、キャッシュラインの1つに正確な適
合でストアされるように、プロセッサが1つのバケット
をキャッシュにロードする、ハッシュテーブルのバケッ
トのうちの1つにストアされたデータにアクセスする、 ステップを有する、前記方法。 - 【請求項2】 各バケットが、複数のレコードを含むエ
ントリを有し、各チェーンのバケットが、第1のバケッ
トから最後のバケットまで連続を形成し、データにアク
セスすることが、 キー値によって識別された、要求されレコードにアクセ
スするためにコーラからの要求を受け、 ハッシュ関数を使用するチェーンのうちの1つを参照す
るインデックスにキー値をハッシュし、 各アクセスされたたバケットは、キャッシュ内にロード
される、第1のバケットで始まる、順番にインデックス
が付けられたチェーンの各バケットにアクセスすること
によって、且つ、レコードが、要求されたレコードなら
ば、決定するために各アクセスされたバケットにおける
各レコードのキー値を調べることによって、要求された
レコードをサーチし、 要求されたレコードをコーラに戻し、 ロードされたバケットがキャッシュに保持されている
間、 インデックスが付けられたチェーンの連続アクセスの性
能を改善するために、キャッシュのロードされたバケッ
トのレコードを再配置する、 ことを含む、複数の値を持ったキーを有するレコードに
アクセスするための、請求項1に記載の方法。 - 【請求項3】 各バケットに関する複数のエントリが、
データをストアする占領されたエントリであり、データ
にアクセスすることが、 バケットの1つの占領されたエントリのうちの1つのデ
ータにアクセスするための要求を受け、 複数のキャッシュラインにストアされる、1つのバケッ
トにアクセスし、 1つのバケットへの前記アクセスに応答する1つのバケ
ットに対する、連続のアクセスの性能を改良するため
に、1つのバケットの占領されたエントリにストアされ
たデータにアクセスし、第1の占領されたエントリのデ
ータが第2の占領されたエントリに移動されるように再
配置が実行される、 ことを有する、 各バケットがエントリを有する、請求項1に記載の方
法。 - 【請求項4】 バケットがキャッシュラインサイズであ
り、1つのバケットにアクセスすることが、キャッシュ
ラインのうちの1つに正確な適合を有してストアされて
いる1つのバケットを含む、請求項3に記載の方法。 - 【請求項5】 チェーンのバケットのエントリが、第1
のバケットの第1のエントリから最後のバケットの最後
のエントリまでの連続を形成し、データのアクセスが、 選択されたエントリにストアされた要求されたデータに
アクセスするための要求を受け、 選択されたエントリを包含するチェーンのバケットにア
クセスし、バケットはキャッシュラインのうちの1つに
正確な適合を持ってストアされ、 要求されたデータを選択されたエントリから戻し、 第1のバケットの第1のエントリに包含されたデータ
と、第1のバケットの第1のエントリに続くエントリに
包含されたデータとを移動させるが、前記受け取りのス
テップに応答して、連続の次のエントリに対する選択さ
れたエントリの前に、アクセスし、復帰し、 要求されたデータをチェーンの第1のバケットの第1の
エントリに移動させる、 提供されたハッシュテーブルが、データをストアする複
数のエントリを持った各バケットを備えるバケットのチ
ェーンを有する、請求項1に記載の方法。 - 【請求項6】 チェーンのバケットが、第1のバケット
から最後のバケットまで連続を形成し、コンピュータシ
ステムは、キャッシュラインサイズをもったキャッシュ
ラインを備えるキャッシュを有し、バケットはキャッシ
ュラインサイズであり、データのアクセスが、 ハッシュテーブルにアクセスするための複数の要求を受
け、各要求は、チェーンのうちの1つのバケットのうち
の1つのエントリのうちの1つのデータを示し、 受けられた複数の要求の各々に関して、 1つのバケットが、キャッシュラインのうちの1つに正
確な適合を持ってストアされる、1つのチェーンの1つ
のバケットの1つのエントリの指示されたデータにアク
セスし、該指示されたデータにアクセスした後、該指示
されたデータを1つのチェーンの第1のバケットに移動
させる、 提供されたハッシュテーブルが、データをストアする複
数のエントリを持った各バケットを備えたバケットのチ
ェーンを有する、請求項1に記載の方法。 - 【請求項7】 指示されたデータの移動が、該指示され
たデータを、1つのチェーンの1つのバケットの第1の
エントリに移動することを含む、請求項6に記載の方
法。 - 【請求項8】 第1のバケットがLRUデータを有し、
指示されたデータの移動が、LRUデータを第1のバケ
ットの外に移動することを含む、請求項7に記載の方
法。 - 【請求項9】 LRUデータの移動が、LRUデータ
を、連続の第1のバケットに続くバケットに移動させる
ことを含む、請求項8に記載の方法。 - 【請求項10】 各チェーンの各バケットのエントリ
が、第1のバケットの第1のエントリから最後のバケッ
トの最後のエントリまで連続を形成し、データのアクセ
スが、 チェーンのうちの1つのバケットのうちの1つのエント
リのうちの1つのデータを示すハッシュテーブルにアク
セスするための要求を受け、 1つのチェーンの1つのバケットの1つのエントリの指
示されたデータにアクセスし、 1つのチェーンの第1のバケットの第1のエントリに含
まれたデータと、指示されたデータにアクセスする前記
ステップに連続に応答する次のエントリに対して、所定
の数のバケットのための第1のバケットの第1のエント
リに続くエントリに包含されているデータとを移動さ
せ、 1つのチェーンの第1のバケットの第1のエントリの指
示されたデータを移動させる、 提供されたハッシュテーブルが、データをストアする複
数のエントリを持った各バケットを備えるバケットのチ
ェーンを有する、請求項1に記載の方法。 - 【請求項11】 所定の数のバケットが、最後のエント
リを備える端のバケットを有し、更に、 所定の数のバケットの端バケットの最後のエントリのデ
ータを1つのバケットの第1のエントリに移動させ、 1バケットの次のエントリに対する1エントリの前の、
1バケットのエントリのデータを移動させる、請求項1
0に記載の方法。 - 【請求項12】 チェーンのバケットのエントリが、第
1のバケットの第1のエントリから、最後のバケットの
サイトのエントリまで連続を形成し、データのアクセス
が、 チェーンのうちの1つのバケットのうちの1つのエント
リのうちの1つのデータを指示するハッシュテーブルに
アクセスするための要求を受け、1つのエントリは、1
つのバケットの他のエントリに関するものである相対位
置を有し、 1つのチェーンの1つのバケットの1つのエントリの指
示されたデータにアクセスし、 第1のバケットと、第1のバケットに続くが、指示され
たデータにアクセスする前記ステップに対応する次のバ
ケットの相対位置でエントリ内の1つのバケットの前で
あるバケットとの相対位置で、エントリに包含されたデ
ータを移動させ、 1つのチェーンの第1のバケットの相対的な位置で、指
示されたデータをエントリに移動させる、 提供されたハッシュテーブルが、データをストアする複
数のエントリを持った各バケットを備えるバケットのチ
ェーンを有する、請求項1に記載の方法。 - 【請求項13】 コンピュータシステムが、ページフォ
ルトを減少させるためのページを備えるメモリを有し、 各チェーンの第1のバケットを第1のページにストア
し、 各チェーンの第2のバケットを第2のページにストアす
る、 ことを含む、請求項1に記載の方法。 - 【請求項14】 各チェーンに関して、 同じページ内に第2のバケットを続けるバケットをスト
アする、 ことを更に有する、請求項13に記載の方法。 - 【請求項15】 コンピュータシステムが、データにア
クセスするためのページを備えるメモリを有し、 データをストアする複数のエントリを有する各バケット
を備えるバケットのチェーンを有するハッシュテーブル
を生成し、各チェーンのバケットが、第1のバケットか
ら最後のバケットまで連続を形成し、各バケットは連続
に関する位置を有する有し、 連続における等価の相対位置を有するチェーンのバケッ
トをメモリの単一のページにストアする、 ことを含む、請求項1に記載の方法。 - 【請求項16】 各チェーンに関して、 所定の数のバケットの後のバケットをメモリの単一のペ
ージにストアする、 ことを更に含む、請求項15に記載の方法。 - 【請求項17】 キャッシュラインサイズを持ったキャ
ッシュラインを有するキャッシュと、 ハッシュマネージャを含むメモリと、バケットの複数の
チェーンを有するハッシュテーブルと、を有し、各バケ
ットは、データをストアするエントリを包含し、キャッ
シュラインサイズであり、ハッシュマネージャは、ハッ
シュテーブルのチェーンのバケットのデータにアクセス
するための要求を受け、データにアクセスするためのチ
ェーンのバケットにアクセスし、チェーンがアクセスさ
れた後に各チェーンの第1のバケットにMRUデータを
位置決めし、 ハッシュマネージャを走らせ、バケットがアクセスされ
た後に、正確な適合を備えるキャッシュラインのうちの
1つに各バケットをストアするためのプロセッサと、 を有する、コンピュータシステム。 - 【請求項18】 キャッシュがプロセッサに包含されて
いる、請求項17に記載のコンピュータシステム。 - 【請求項19】 各バケットが複数のレコードを含むエ
ントリを有し、各チェーンのバケットが、最初のバケッ
トから最後のバケットまで連続を形成し、バケットのア
クセスが、 キー値によって識別された、要求されたレコードにアク
セスするために、コーラから要求を受け、 ハッシュ関数を使用して、チェーンのうちの1つを参照
するインデックスにキー値をハッシュし、 各アクセスされたバケットがキャッシュにロードされ
る、第1のバケットではじまる連続にインデックスが付
けられたチェーンにおいて、各バケットにアクセスする
ことによって、且つ、レコードが要求されたレコードな
らば、決定するために各アクセスされたバケットの各レ
コードのキー値を調べることによって、要求されたレコ
ードを調べ、 要求されたレコードをコーラに戻し、 ロードされたバケットがキャッシュに保持されている
間、 インデックスが付けられたチェーンの一連のアクセスの
性能を改善するために、キャッシュのロードされたバケ
ットのレコードを再配置する、 複数の値を持ったキーを有するレコードにアクセスする
ための、請求項17に記載のコンピュータシステム。 - 【請求項20】 各バケットに関する複数のエントリ
が、データをストアする占領されたエントリであり、 バケットのアクセスが、 バケットのうちの1つの占領されたエントリのうちの1
つのデータにアクセスするためのリクエストを受け、 複数のキャッシュラインにストアされている、あるバケ
ットにアクセスし、 あるバケットへの前記アクセスに対応するあるバケット
への連続のアクセスの性能を改善するために、あるバケ
ットの占領されたエントリにストアされたデータを再配
置し、該再配置は、第1の占領されたエントリのデータ
を第2の占領されたエントリに移動するように実行され
る、 各バケットが前記エントリを有する、請求項17に記載
のコンピュータシステム。 - 【請求項21】 バケットがキャッシュラインサイズで
あり、あるバケットのアクセスが、キャッシュラインの
うちの1つに正確な適合を備えてストアされているある
バケットを含む、請求項20に記載のコンピュータシス
テム。 - 【請求項22】 チェーンのバケットのエントリが、第
1のバケットの第1のエントリから最後のバケットの最
後のエントリまで連続を形成し、バケットのアクセス
が、 選択されたエントリにストアされた、要求されたデータ
にアクセスするためのリクエストを受け、 選択されたエントリを包含するチェーンのバケットにア
クセスし、該バケットは、キャッシュラインのうちの1
つに正確な適合をもってストアされ、 要求されたデータを選択されたエントリから戻し、 第1のバケットの第1のエントリに包含されたデータ
と、前記ステップの受けに連続に対応する次のエントリ
に対する選択されたエントリの前であるが、第1のバケ
ットの第1のエントリに続くエントリに包含されるデー
タとを移動させ、 要求されたデータを、チェーンの第1のバケットの第1
のエントリに移動させる、 ことを含む、 ハッシュテーブルが、データをストアする複数のエント
リを有する各バケットを備えるバケットのチェーンを有
する、請求項17に記載のコンピュータシステム。 - 【請求項23】 チェーンの中のバケットが、第1のバ
ケットから最後のバケットまで連続を形成し、コンピュ
ータシステムが、キャッシュラインサイズを持ったキャ
ッシュラインを備えるキャッシュを有し、バケットがキ
ャッシュラインサイズであり、バケットのアクセスが、 ハッシュテーブルにアクセスするために複数の要求を受
け、各要求は、チェーンのうちの1つの中のバケットの
うちの1つの中のエントリのうちの1つの中のデータを
指示し、 受けられた複数の要求の各々に関し、 あるバケットがキャッシュラインのうちの1つに正確な
適合を持ってストアされる、あるチェーンの中のあるバ
ケットの中のあるエントリの中の指示されたデータにア
クセスし、指示されたデータへのアクセス後、指示され
たデータをあるチェーンの中の第1のバケットに移動す
る、 ことを含む、 ハッシュテーブルが、データをストアする複数のエント
リを持った各バケットを備えるバケットのチェーンを有
する、請求項17に記載のコンピュータシステム。 - 【請求項24】 指示されたデータの移動が、指示され
たデータを、あるチェーンの中の第1のバケットの中の
第1のエントリに移動させることを含む、請求項23に
記載のコンピュータシステム。 - 【請求項25】 第1のバケットが、LRUデータを有
し、指示されたデータの移動が、LRUデータを第1の
バケットの外に移動させることを含む、請求項24に記
載のコンピュータシステム。 - 【請求項26】 LRUデータの移動が、LRUデータ
を、連続の第1バケットに続くバケットの中に移動させ
ることを含む、請求項25に記載のコンピュータシステ
ム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/772,334 US6052697A (en) | 1996-12-23 | 1996-12-23 | Reorganization of collisions in a hash bucket of a hash table to improve system performance |
US08/772334 | 1996-12-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10269142A true JPH10269142A (ja) | 1998-10-09 |
JP4218997B2 JP4218997B2 (ja) | 2009-02-04 |
Family
ID=25094724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP37021897A Expired - Fee Related JP4218997B2 (ja) | 1996-12-23 | 1997-12-24 | システム性能を改善するためのハシュテーブルのハシュバケットにおけるコリジョンの再編成 |
Country Status (4)
Country | Link |
---|---|
US (2) | US6052697A (ja) |
EP (1) | EP0851354B1 (ja) |
JP (1) | JP4218997B2 (ja) |
DE (1) | DE69739743D1 (ja) |
Families Citing this family (63)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3251138B2 (ja) * | 1994-10-31 | 2002-01-28 | 富士通株式会社 | ハッシュ方式 |
US6920454B1 (en) | 2000-01-28 | 2005-07-19 | Oracle International Corporation | Techniques for DLM optimization with transferring lock information |
US7246120B2 (en) | 2000-01-28 | 2007-07-17 | Oracle International Corporation | Techniques for achieving higher availability of resources during reconfiguration of a cluster |
US6751616B1 (en) * | 2000-01-28 | 2004-06-15 | Oracle International Corp. | Techniques for DLM optimization with re-mapping responsibility for lock management |
US6529906B1 (en) | 2000-01-28 | 2003-03-04 | Oracle Corporation | Techniques for DLM optimization with re-mastering events |
US7454516B1 (en) * | 2000-08-03 | 2008-11-18 | Microsoft Corporation | Scalable virtual partitioning of resources |
US6567817B1 (en) * | 2000-09-08 | 2003-05-20 | Hewlett-Packard Development Company, L.P. | Cache management system using hashing |
US7702800B2 (en) | 2000-12-18 | 2010-04-20 | International Business Machines Corporation | Detecting and handling affinity breaks in web applications |
US6877025B2 (en) * | 2000-12-18 | 2005-04-05 | International Business Machines Corp. | Integrated JSP and command cache for web applications with dynamic content |
US6807606B2 (en) | 2000-12-18 | 2004-10-19 | International Business Machines Corp. | Distributed execution coordination for web caching with dynamic content |
US20020111992A1 (en) * | 2000-12-18 | 2002-08-15 | Copeland George P. | JSP composition in a cache for web applications with dynamic content |
US6823360B2 (en) * | 2000-12-18 | 2004-11-23 | International Business Machines Corp. | Cofetching in a command cache |
US7299243B2 (en) * | 2001-09-19 | 2007-11-20 | Bmc Software, Inc. | System and method for controlling free space distribution by key range within a database |
US7039764B1 (en) | 2002-01-17 | 2006-05-02 | Nokia Corporation | Near-perfect, fixed-time searching algorithm using hashing, LRU and cam-based caching |
CA2384185A1 (en) * | 2002-04-29 | 2003-10-29 | Ibm Canada Limited-Ibm Canada Limitee | Resizable cache sensitive hash table |
US6968428B2 (en) | 2002-06-26 | 2005-11-22 | Hewlett-Packard Development Company, L.P. | Microprocessor cache design initialization |
US7447786B2 (en) * | 2003-05-09 | 2008-11-04 | Oracle International Corporation | Efficient locking of shared data that is accessed for reads in a cluster database |
US7318219B2 (en) * | 2003-11-28 | 2008-01-08 | International Business Machines Corporation | System and method for performance monitoring |
US7379952B2 (en) * | 2004-01-30 | 2008-05-27 | Oracle International Corporation | Techniques for multiple window resource remastering among nodes of a cluster |
US7349926B2 (en) * | 2004-03-30 | 2008-03-25 | International Business Machines Corporation | Atomic renaming and moving of data files while permitting lock-free look-ups |
US7809888B1 (en) * | 2004-09-29 | 2010-10-05 | Emc Corporation | Content-aware caching techniques |
US7752181B2 (en) * | 2004-11-08 | 2010-07-06 | Oracle International Corporation | System and method for performing a data uniqueness check in a sorted data set |
US7624446B1 (en) * | 2005-01-25 | 2009-11-24 | Symantec Corporation | Efficient signature packing for an intrusion detection system |
US20060200469A1 (en) * | 2005-03-02 | 2006-09-07 | Lakshminarayanan Chidambaran | Global session identifiers in a multi-node system |
US7209990B2 (en) * | 2005-04-05 | 2007-04-24 | Oracle International Corporation | Maintain fairness of resource allocation in a multi-node environment |
US20080052488A1 (en) * | 2006-05-10 | 2008-02-28 | International Business Machines Corporation | Method for a Hash Table Lookup and Processor Cache |
US8266116B2 (en) * | 2007-03-12 | 2012-09-11 | Broadcom Corporation | Method and apparatus for dual-hashing tables |
US7890814B2 (en) * | 2007-06-27 | 2011-02-15 | Microsoft Corporation | Software error report analysis |
US8086860B2 (en) * | 2007-10-01 | 2011-12-27 | Tata Consultancy Services Limited | Method for preventing and detecting hash collisions of data during the data transmission |
US8949578B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Sharing of internal pipeline resources of a network processor with external devices |
US8873550B2 (en) | 2010-05-18 | 2014-10-28 | Lsi Corporation | Task queuing in a multi-flow network processor architecture |
US8515965B2 (en) | 2010-05-18 | 2013-08-20 | Lsi Corporation | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors |
US8874878B2 (en) | 2010-05-18 | 2014-10-28 | Lsi Corporation | Thread synchronization in a multi-thread, multi-flow network communications processor architecture |
US8910168B2 (en) | 2009-04-27 | 2014-12-09 | Lsi Corporation | Task backpressure and deletion in a multi-flow network processor architecture |
US9727508B2 (en) | 2009-04-27 | 2017-08-08 | Intel Corporation | Address learning and aging for network bridging in a network processor |
US8949582B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Changing a flow identifier of a packet in a multi-thread, multi-flow network processor |
US9461930B2 (en) | 2009-04-27 | 2016-10-04 | Intel Corporation | Modifying data streams without reordering in a multi-thread, multi-flow network processor |
US9152564B2 (en) | 2010-05-18 | 2015-10-06 | Intel Corporation | Early cache eviction in a multi-flow network processor architecture |
US8539199B2 (en) * | 2010-03-12 | 2013-09-17 | Lsi Corporation | Hash processing in a network communications processor architecture |
US8949838B2 (en) | 2009-04-27 | 2015-02-03 | Lsi Corporation | Multi-threaded processing with hardware accelerators |
US20100299362A1 (en) * | 2009-05-24 | 2010-11-25 | Roger Frederick Osmond | Method for controlling access to data containers in a computer system |
US8793257B2 (en) * | 2009-05-24 | 2014-07-29 | Roger Frederick Osmond | Method for improving the effectiveness of hash-based data structures |
US9015198B2 (en) * | 2009-05-26 | 2015-04-21 | Pi-Coral, Inc. | Method and apparatus for large scale data storage |
TWI412929B (zh) * | 2009-07-23 | 2013-10-21 | Ipanel Tv Inc | 散列表動態適應資料之方法及其裝置 |
JP2011188029A (ja) * | 2010-03-04 | 2011-09-22 | Fujitsu Ltd | 電子署名装置、電子署名方法及びコンピュータプログラム |
US8788543B2 (en) * | 2010-05-13 | 2014-07-22 | International Business Machines Corporation | Scalable, concurrent resizing of hash tables |
US8909781B2 (en) | 2010-05-24 | 2014-12-09 | Pi-Coral, Inc. | Virtual access to network services |
US10558705B2 (en) * | 2010-10-20 | 2020-02-11 | Microsoft Technology Licensing, Llc | Low RAM space, high-throughput persistent key-value store using secondary memory |
CN102736986A (zh) * | 2011-03-31 | 2012-10-17 | 国际商业机器公司 | 一种内容可寻址存储器及其检索数据的方法 |
US9230548B2 (en) * | 2012-06-06 | 2016-01-05 | Cypress Semiconductor Corporation | Hybrid hashing scheme for active HMMS |
US9317548B2 (en) | 2013-01-30 | 2016-04-19 | International Business Machines Corporation | Reducing collisions within a hash table |
US9311359B2 (en) | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10650011B2 (en) | 2015-03-20 | 2020-05-12 | International Business Machines Corporation | Efficient performance of insert and point query operations in a column store |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US10108653B2 (en) | 2015-03-27 | 2018-10-23 | International Business Machines Corporation | Concurrent reads and inserts into a data structure without latching or waiting by readers |
US10831736B2 (en) | 2015-03-27 | 2020-11-10 | International Business Machines Corporation | Fast multi-tier indexing supporting dynamic update |
KR20170065374A (ko) * | 2015-12-03 | 2017-06-13 | 영남대학교 산학협력단 | 버킷 단위의 정렬을 기반으로 하는 해시 충돌 처리 방법 |
CN108984431B (zh) * | 2017-06-01 | 2021-04-30 | 北京京东尚科信息技术有限公司 | 用于清空过期缓存的方法和装置 |
US10459810B2 (en) | 2017-07-06 | 2019-10-29 | Oracle International Corporation | Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery |
CN107766258B (zh) * | 2017-09-27 | 2021-11-16 | 恩亿科(北京)数据科技有限公司 | 内存存储方法与装置、内存查询方法与装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE37305E1 (en) * | 1982-12-30 | 2001-07-31 | International Business Machines Corporation | Virtual memory address translation mechanism with controlled data persistence |
US5339398A (en) * | 1989-07-31 | 1994-08-16 | North American Philips Corporation | Memory architecture and method of data organization optimized for hashing |
US5197002A (en) * | 1989-12-22 | 1993-03-23 | Bell Communications Research, Inc. | Methods and apparatus for dynamic hashing |
US5493660A (en) * | 1992-10-06 | 1996-02-20 | Hewlett-Packard Company | Software assisted hardware TLB miss handler |
GB2273798A (en) * | 1992-12-22 | 1994-06-29 | Ibm | Cache system for disk array. |
US5778430A (en) * | 1996-04-19 | 1998-07-07 | Eccs, Inc. | Method and apparatus for computer disk cache management |
-
1996
- 1996-12-23 US US08/772,334 patent/US6052697A/en not_active Expired - Lifetime
-
1997
- 1997-12-19 DE DE69739743T patent/DE69739743D1/de not_active Expired - Lifetime
- 1997-12-19 EP EP97122555A patent/EP0851354B1/en not_active Expired - Lifetime
- 1997-12-24 JP JP37021897A patent/JP4218997B2/ja not_active Expired - Fee Related
-
1999
- 1999-03-15 US US09/270,902 patent/US6052698A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP4218997B2 (ja) | 2009-02-04 |
EP0851354A3 (en) | 1999-01-20 |
EP0851354A2 (en) | 1998-07-01 |
US6052697A (en) | 2000-04-18 |
US6052698A (en) | 2000-04-18 |
EP0851354B1 (en) | 2010-01-20 |
DE69739743D1 (de) | 2010-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH10269142A (ja) | システム性能を改善するためのハシュテーブルのハシュバケットにおけるコリジョンの再編成 | |
KR100297454B1 (ko) | 컴퓨터장치 | |
KR100343027B1 (ko) | 다중페이지크기를지원하는가상메모리컴퓨터시스템의주소변환기구 | |
JP4242905B2 (ja) | キャッシュ効率的なオブジェクトローダ | |
US5956756A (en) | Virtual address to physical address translation of pages with unknown and variable sizes | |
US6145064A (en) | Method of efficiently updating hashed page tables | |
US7085911B2 (en) | Resizable cache sensitive hash table | |
US5983324A (en) | Data prefetch control method for main storage cache for protecting prefetched data from replacement before utilization thereof | |
US5991847A (en) | Data pattern caching for speeding up write operations | |
US5509135A (en) | Multi-index multi-way set-associative cache | |
EP0185867A2 (en) | A memory hierarchy and its method of operation | |
JP3096414B2 (ja) | ディレクトリ内にアドレス・タグを記憶するためのコンピュータ | |
WO1994003856A1 (en) | Column-associative cache | |
US7493464B2 (en) | Sparse matrix | |
EP1181639B1 (en) | Apparatus and method for providing a cyclic buffer | |
US6772299B2 (en) | Method and apparatus for caching with variable size locking regions | |
US6687807B1 (en) | Method for apparatus for prefetching linked data structures | |
US5897651A (en) | Information handling system including a direct access set associative cache and method for accessing same | |
CN107562806B (zh) | 混合内存文件系统的自适应感知加速方法及系统 | |
JP2788836B2 (ja) | ディジタルコンピュータシステム | |
EP0519685A1 (en) | Address translation | |
US7139879B2 (en) | System and method of improving fault-based multi-page pre-fetches | |
EP0173893B1 (en) | Computing system and method providing working set prefetch for level two caches | |
US6674441B1 (en) | Method and apparatus for improving performance of an accelerated graphics port (AGP) device | |
JPS60214060A (ja) | 外部記憶キヤツシユ制御方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041213 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20061121 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20061121 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20071205 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071220 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080321 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080326 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080421 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080424 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080520 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080523 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080620 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20080620 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080708 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081008 |
|
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: 20081020 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20081111 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111121 Year of fee payment: 3 |
|
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: 20111121 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121121 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131121 Year of fee payment: 5 |
|
LAPS | Cancellation because of no payment of annual fees |