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
Application number
JP9370218A
Other languages
English (en)
Other versions
JP4218997B2 (ja
Inventor
John G Bennett
ジー ベネット ジョン
Raja Krishnaswamy
クリシュナスワミー ラジャ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JPH10269142A publication Critical patent/JPH10269142A/ja
Application granted granted Critical
Publication of JP4218997B2 publication Critical patent/JP4218997B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99956File 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

(57)【要約】 【課題】 システム性能を改善するためのハシュテーブ
ルのハシュバケットにおけるコリジョンの再編成を提供
する。 【解決手段】 性能を改善するために今日の多くのプロ
セッサのキャッシュアーキテクチャの利点を得る改善さ
れたハッシュシステムを提供する。PENTIUMプロ
セッサのような今日の最新のプロセッサの幾らかは、1
次キャッシュと2次キャッシュを利用する2レベルキャ
ッシュスキームを有し、1次キャッシュに包含されたデ
ータは、メインメモリのデータよりも50乃至150倍
速くアクセスされ得る。改善されたハッシュシステム
は、バケットが多くのエントリを含むように衝突が起こ
ることを保証し、ランタイムで、バケットのエントリ
は、プロセッサの1次キャッシュが使用される回数を増
加させ、メインメモリが使用される回数を減少させるこ
とによって、ハッシュシステムの性能を改善するよう
に、リオーダーされる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は一般的に、データ
処理システムに関し、特に、ハッシュテーブルのハッシ
ュバケットにおけるコリジョンの再編成に関する。
【0002】
【従来の技術】プロセッサがより高速になってきている
ので、メインメモリアクセスは、増加する性能全体にわ
たってボトルネックとなっている。従って、性能を改善
するために、メモリキャッシュスキームが、メインメモ
リボトルネックの影響を減少させるために採用されてき
た。PENTIUMプロセッサは、非常に高速な1次キ
ャッシュと高速2次キャッシュを使用する、かかるメモ
リキャッシュスキームを採用する。プロセッサがメモリ
からデータを読み取る必要があるとき、プロセッサは最
初に、データを位置決めするために1次キャッシュをチ
ェックする。要求されたデータが1次キャッシュに見つ
からないとき、次いで、2次キャッシュがチェックされ
るが、該2次キャッシュは、1次キャッシュよりも遅い
アクセス時間を有するが、メインメモリよりもまだ高速
である。データが2次キャッシュに配置されているなら
ば、データはプロセッサに戻され、データがストアされ
た2次キャッシュのライン(「キャッシュライン」)
が、1次キャッシュにコピーされる。データは、32バ
イトキャッシュラインに関して、1次キャッシュと2次
キャッシュの双方にストアされる。1次キャッシュは、
サイズが8KBであるので、256キャッシュラインを
ストアすることができる。2次キャッシュは、典型的に
は256KB乃至512KBであるので、8192と1
6384キャッシュラインの間をストアすることができ
る。
【0003】2次キャッシュをチェックした後、データ
が依然として見つからないならば、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年) により詳
細に説明されており、参照によりここに組み込まれる。
【0004】ハッシュ機構は、多くのコンピュータシス
テムにおいて重要な役割を演ずる。在来のハッシュ機構
は、ストアされたデータへの直接的なアクセスを提供す
るためのハッシュテーブルとして知られるデータ構造を
利用する。在来のハッシュ機構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バケットだけのハッシュ
テーブルを、システムリソースをより有効に使用するの
に用いることができるが、データへの直接アクセスを依
然として行う。
【0005】関数「h」104は、各キー値を正確に1
インデックスにマップし、従って、同じキー値が一度以
上使用されたときはいつでも、ハッシュテーブル108
への同じインデックス106が生成される。しかしなが
ら、ときどき、データをハッシュテーブル108にスト
アしようとするとき、1キー値より大きなものが、同じ
インデックス106にハッシュされ得る。この状況で
は、「衝突」が発生している。衝突が生じるとき、デー
タは、インデックスによって示されたハッシュバケット
にストアされる必要があり、従って、1レコードより大
きなものが、このハッシュバケットにストアされ得る。
ハッシュバケット118は、衝突が生じ、1レコードよ
り大きなものがハッシュバケットにストアされた後の、
ハッシュバケットの状態を示す。ハッシュバケット11
8では、データ「データ3」の1レードが、データ「デ
ータ4」の第2のレコードにリンクされている。更なる
衝突が生じたとき、ハッシュバケットはより占領された
状態になり、従って、ハッシュバケット内の各レコード
がもはや直接アクセスできないので、ハッシュテーブル
の利益は小さくなりはじめる。その代わりに、キー値を
インデックス内にハッシュした後、インデックスは、互
いにリンクした多数のレコードを包含するハッシュバケ
ットを参照し、ハッシュバケットは、次いで、処理時間
に関してコストがかかる、正しいレコードを求めるため
にサーチされなければならない。従って、在来のハッシ
ュシステムは、衝突を回避するために設計されている。
データをストアする、ハッシュテーブルが、該データへ
の直接アクセスを提供するので、ハッシュテーブルは、
多くの既存のコンピュータシステムの重要な部分であ
る。従って、ハッシュ機構の性能を改良することが望ま
しい。しかし、在来のハッシュ機構は、今日のプロセッ
サのキャッシュアーキテクチャを利用するのに失敗して
きた。
【0006】
【課題を解決するための手段】性能を改善するために今
日の多くのプロセッサのキャッシュアーキテクチャの利
点を得る改善されたハッシュシステムを提供する。PE
NTIUMプロセッサのような今日の最新のプロセッサ
の幾らかは、1次キャッシュと2次キャッシュを利用す
る2レベルキャッシュスキームを有し、1次キャッシュ
に包含されたデータは、メインメモリのデータよりも5
0乃至150倍速くアクセスされ得る。改善されたハッ
シュシステムは、バケットが多くのエントリを含むよう
に衝突が起こることを保証し、ランタイムで、バケット
のエントリは、プロセッサの1次キャッシュが使用され
る回数を増加させ、メインメモリが使用される回数を減
少させることによって、ハッシュシステムの性能を改善
するように、リオーダーされる。
【0007】本発明の第1の態様では、エントリを包含
するバケットを有するハッシュテーブルのデータにアク
セスするためのコンピュータシステムにおける方法を提
供する。複数のエントリが、データを包含する占領され
たエントリである。かかる方法は、入力データに対する
要求をハッシュテーブル内に受け、且つ、複数の占領さ
れたエントリが各バケットに包含されるように衝突を生
成するハッシュ機構を生成し、該方法は、ハッシュ機構
によってハッシュテーブルにアクセスするための複数の
要求を受ける。ハッシュ機構が、ハッシュテーブルにア
クセスするための複数の要求を処理する間、かかる方法
は、ハッシュ機構の性能を改善するために、バケットの
うちの少なくとも1つの占領されたエントリの少なくと
も1つのデータを、少なくとも1つのバケットの占領さ
れたエントリの間の新しい位置に再配置する。
【0008】本発明の第2の態様では、メモリと、プロ
セッサと、サイズを持ったキャッシュラインとを有する
コンピュータシステムを提供する。メモリは、ハッシュ
マネージャと、バケットのチェーンを有するハッシュテ
ーブルとを含む。各バケットは、データをストアするエ
ントリを包含し、各バケットはキャッシュラインサイズ
である。ハッシュマネージャは、ハッシュテーブルのデ
ータにアクセスするための要求と、ハッシュテーブルの
データへのアクセスと、チェーンがアクセスされた後
の、各チェーンの第1のバケットのMRUデータの位置
とを受ける。プロセッサはハッシュマネージャを走らせ
る。本発明の第3の態様では、データにアクセスするた
めのページを持ったメモリを有するコンピュータシステ
ムにおける方法を提供する。本方法は、データをストア
する複数のエントリを持った各バケットを備えるバケッ
トのチェーンを有するハッシュテーブルを生成する。各
チェーンのバケットは、第1のバケットから最後のバケ
ットへの連続を形成する。各バケットは、連続に関する
位置を有する。かかる方法は更に、シーケンスの等価の
相対位置を有するチェーンのバケットを、メモリの単一
のページにストアする。
【0009】
【発明の実施の形態】本発明の好ましい実施形態は、性
能を改善するために多くの今日のプロセッサのキャッシ
ュアーキテクチャを利用する改善されたハッシュシステ
ムを提供する。PENTIUMプロセッサのような今日
の最新のプロセッサのいくつかは、1次キャッシュと2
次キャッシュとを利用する2レベルキャッシュスキーム
を有し、1次キャッシュに包含されたデータは、メイン
メモリのデータより50乃至150倍速くアクセスする
ことができる。改善されたハッシュシステムは、バケッ
トが多くのレコードを包含するように衝突を生じさせる
ようにし、ランタイムで、バケットのレコードは、プロ
セッサの1次キャッシュが使用される回数を増加させる
ように、且つ、メインメモリが使用される回数を減少さ
せるようにリオーダーされ、それによって、ハッシュシ
ステムの性能を改善する。
【0010】概観 改善されたされたハッシュシステムは、多数のハッシュ
バケットを備えるハッシュテーブルを保持する。各ハッ
シュバケットは、実際には、長さが各々32バイトであ
る「バケット」のチェーン(メモリの全体ライン即ちキ
ャッシュライン)である。各バケットは、1レコードを
ストアする各エントリである、多くのエントリを有す
る。改善されたハッシュシステムは、性能を改善するた
めに、以下の原理を利用する。バケットのチェーンのエ
ントリが、要求されたレコードを見つけるために線形に
サーチされるので、要求されたレコードが、チェーンに
見つけられたときはいつでも、それが要求されたレコー
ドをストアするならば、求めるためにアクセスされてし
まっている前に、夫々を各バケットにエントリする。各
バケットの各エントリがアクセスされるので、その対応
するメモリラインは、それがもともと配置されていた場
所に関係なく、1次キャッシュ内に持ってこられる。従
って、要求されたレコードが見つけられたとき、事実
上、全ての先のバケット(即ち、キャッシュラインに対
応するもの)は、1次キャッシュにロードされるのが保
証される。従って、レコードの最適なリオーダーが少し
のプロセッシング時間を要求することを生じさせること
ができるが、1次キャッシュヒットの数を増加させ、メ
インメモリがアクセスされる回数を減少させることによ
って、チェーンの引き続き起こるアクセスに関して、本
質的な性能の利益を与え得る。
【0011】チェーンに要求されたレコードが配置され
た後、エントリのレコードは、要求されたレコードが、
多の全てのレコードが1エントリに押し戻されて、チェ
ーンの第1のバケットの第1のエントリに現れるよう
に、リオーダーされる。この技術は、最も最近使用され
たレコードがすぐに再びアクセスされ得ることを仮定し
ている。この技術は、最も頻繁に使用されるレコードで
あると仮定されている、第1のバケットのキャッシュラ
インを占め、第1のバケットに関するキャッシュライン
が1次キャッシュに滞在するのを保証し、メインメモリ
の使用が減少する一方、1次キャッシュの使用は増加す
る。この技術は、レコードを第1のバケット内に挿入す
るための最高使用頻度(MRU)アルゴリズムに基づ
き、且つ、第1のバケットの外のレコードをとるための
最低使用頻度(LRU)アルゴリズムに基づく。第1の
バケットのチェーンのMRUレコードをおくことによ
り、第1のバケットは、1次キャッシュ内に滞在し、従
って、チェーンの殆どのアクセスは、減少されたアクセ
ス時間から利益を得る。MRUアルゴリズム及びLRU
アルゴリズムの代わりに使用することができる、他の多
くのアルゴリズムがあり、いくつかを以下で議論する。
【0012】以前に述べたように、改善されたハッシュ
システムは、衝突を助長し、速度を得るために衝突をリ
オーダーする。しかし、在来のハッシュシステムは衝突
を回避しようと試みる。かかる在来のハッシュシステム
では、衝突は、単にハッシュテーブルが大きくなりすぎ
ないように許容されている。即ち、少数の衝突を備える
ハッシュテーブルが散在しており、使用されていないバ
ケットを有する。本発明の別の態様は、発生するページ
フォルトの数を減少させるように、メモリの個々のペー
ジにハッシュテーブルのバケットを編成する。第1のバ
ケットが最も頻繁に使用されるレコードを包含するの
で、例えば、バケットのチェーンにおける全ての第1の
バケットは、同じページに配置され、従って、ページが
メインメモリの外に事実上スワップされないことを保証
する。各チェーンの第2のバケットは、同じページ等に
同様にストアされる。このスキームを使用して、最も頻
繁に使用されるバケットは、ページフォルトの数を減少
させるメモリの外にめったにスワップされないであろ
う。このストラテジに対する変形実施形態は、単一のペ
ージにおける第1の2つ又は3つのバケットの後に、チ
ェーンの最後のバケットをストアするものである。従っ
て、エントリが、第1の2つ又は3つのバケットを超え
てアクセスされるとき、各次のバケットをサーチするこ
とによって誘発されるページフォルトの数ではなく、せ
いぜい1つのページフォルトが生じる。
【0013】実施形態の詳細な説明 図2は、本発明の好ましい実施形態を実施するために適
当であるコンピュータシステム200を示す。コンピュ
ータシステム200は、メモリ202と、2次記憶装置
204と、カリフォルニア州サンタクララのインテル
コーポレーションから入手可能なPENTIUMプロセ
ッサのような中央処理装置(CPU)と、入力デバイス
208と、ビデオディスプレィ210とを含む。メモリ
202は、2次記憶装置204のハッシュテーブル21
4を操作する責任があるハッシュマネージャ212を含
む。ハッシュテーブル214が2次記憶装置204にあ
るように示してあるけれども、ランタイムで、ハッシュ
テーブルがメモリ202にもってこられ、メモリにある
間、処理されることは、当業者には明らかであろう。C
PU206は、メモリ216を有する。
【0014】図3は、ハッシュテーブル214をより詳
細に示す。ハッシュテーブル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バイト
のポインタが典型的には使用される)とを有する。
【0015】図5は、本発明による好ましい実施形態に
よるハッシュシステムを作成する際に実行されるステッ
プのフローチャートを示す。好ましい実施形態によるハ
ッシュ機構を作成する際に実行される第1のステップ
は、制限された数のインデックスが衝突を促進するよう
に生成されるようにハッシュ関数を選択し、この数のチ
ェーンを有するハッシュテーブルを作成する(ステップ
502)。改善されたハッシュシステム用に選択された
ハッシュ関数は、衝突を生成するような十分なインデッ
クスを生成するように選択され、ハッシュテーブル21
4は、ハッシュ関数によって生成されたインデックスを
収容するための十分なチェーンで構成される。例えば、
ハッシュ関数用のキーが8桁数であり、且つ、いかなる
特定の時間でも使用され得るおおよそ3000キー値が
あり、ハッシュ関数が、キー値の最後の2桁がハッシュ
インデックスとして選択されるようなものならば、バケ
ットの100チェーンだけに3000キーのマッピング
がされ、従って、平均で、バケットの各チェーンは30
エントリを含み得る。この方法では、改善されたハッシ
ュ機構は、衝突を促進するように構成される。従って、
このステップでは、ハッシュ関数は、ハッシュ関数に広
範囲のキー値入力があるように選択されるが、ハッシュ
関数は、ハッシュテーブル内に非常に制限された範囲の
インデックスを生成する。ハッシュテーブルは、次い
で、この制限された数のチェーンで実行される。ハッシ
ュ関数を選択し、ハッシュテーブルを作成した後、ハッ
シュテーブルは(ステップ504で)占められる。この
ステップでは、ランタイム前に、テーブルに加えられる
必要があるデータがありうる(例えば、最初のデー
タ)。このステップでは、各レコードのためのインデッ
クスは、レコードが属するバケットのチェーンを判断す
るためにハッシュされ、該レコードは、バケットのチェ
ーンの最初のバケットにおける、最初のエントリはいに
加えられる。このチェーンの一連のエントリにおける全
ての一連のレコードは、次いで、1つのエントリ又は位
置に押し戻される。レコードをハッシュテーブルに追加
するためのこの技術が、レコードが加えられるのに必要
なときに、ランタイムでまた、使用されることは明らか
である。レコードをバケットチェーンに挿入するための
他の方法が使用され得ることは当業者には明らかであろ
う。
【0016】図6は、アクセスデータに対する要求を受
けるとき、ランタイムでハッシュマネージャによって実
行されるステップのフローチャートを示す。ハッシュマ
ネージャによって実行される第1のステップは、データ
アクセス要求を受けることである(ステップ602)。
データアクセス要求は、データのキーを含む。次いで、
ハッシュマネージャは、キーをインデックス内にハッシ
ュする(ステップ604)。このステップでは、ハッシ
ュマネージャは、インデックスを求めるためににハッシ
ュ関数を使用する。該インデックス決定後、ハッシュマ
ネージャは、インデックスによって参照されたバケット
のチェーンにアクセスすることによって、キーが適合す
る要求されたレコードを見つけるまで各バケットの各エ
ントリを線形サーチすることによって、要求されたレコ
ードをハッシュテーブル内に配置する(ステップ60
6)。以前に述べたように、チェーンの各バケットがア
クセスされるとき、その対応するキャッシュラインは、
プロセッサによって1次キャッシュ内に持ってこられ
る。要求されたレコードを配置した後、ハッシュマネー
ジャは要求されたレコードをコーラに戻す(ステップ6
08)。レコードをコーラに戻した後、ハッシュマネー
ジャは、第1のバケットの第1のエントリと、要求され
たレコードが、このチェーンの一連のアクセスのシステ
ム性能を改善するために存在するエントリとの間のチェ
ーンにレコードをリオーダーする。この点で、リオーダ
ーされるべきレコードは、キャッシュラインが1次キャ
ッシュに現在ストアされている、バケットにストアさ
れ、従って、リオーダリングは名目処理時間を使用す
る。このリオーダリングはステップ610と612で実
行される。
【0017】レコードをリオーダする際に実行される第
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アルゴリズムと
の両方が実行される。
【0018】図8は、要求されたレコードをコーラに復
帰後、バケットチェーン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のバケット内に依然として配置する。
【0019】図9は、バケットチェーン900を再編成
するために、位置指向性アプローチを採用する第2の変
形実施形態を示し、レコードは、レコードが来るエント
リとして、バケット内に同じ相対位置を有するエントリ
内に再配置される。バケットチェーン900では、5つ
のバケット902乃至910がある。この例では、コー
ラに戻されたレコードは、バケット908の第2のエン
トリに見られる。レコードをコーラに戻した後、戻され
たレコードは第1のバケット902の第2のエントリ
(「第2の位置」)内に挿入され、次いで、各続きのバ
ケットの第2の位置に包含されたレコードは、戻された
データが元々来たエントリに届くまで次のバケットの第
2の位置に押し戻される。この位置指向性アプローチを
使用して、再編成プロセスは、データ要求を満たした後
に最小にされるが、MRUデータは依然として、第1の
バケット内に挿入されている。他のエントリ再編成スキ
ームを使用することができることは、当業者には明らか
であろう。例えば、MRUデータは、2,3のバケット
をバケットチェーンに前進させるだけであるが、性能改
善は依然として生じ得る。
【0020】ページフォルトの減少 本発明の一態様は、ハッシュテーブルが利用されている
ランタイムで生じる、ページフォルトの数を減少させる
ことに関する。図10は、ハッシュテーブルにアクセス
するとき生ずるページフォルトの数を減少させるよう
に、図3のハッシュテーブルのバケットを多数のページ
1002乃至1012内にストアするための技術を示
す。バケット1002乃至1012の各グループは、メ
モリの単一ブロック(即ち、ページ)にストアされ、こ
の場合、そのページ内の全てのバケットは、互いにメモ
リ内に、及び、メモリ外にスワップされる。典型的なペ
ージサイズは通常は4K乃至16Kである。特定のオペ
レーティングシステムサービスを使用したページが割り
当てられる。改善されたハッシュシステムは、MRUレ
コードが、各チェーンの第1のバケットを包含するペー
ジ1002にストアされるのを保証するので、このペー
ジは、典型的には、常にメモリに常駐し、このページに
関してページフォルトはほとんど生じない。同様に、改
善されたハッシュシステムは、LRUデータが、チェー
ンの端付近であるバケットに見つけられることを保証す
る。従って、ページ1008内のそれらのように、めっ
たに使用されないデータエントリは、単一のページにス
トアされないので、この技術は、このページがメモリ内
にスワップされる回数の数を最小にするであろう。バケ
ットのグループ(例えば、1002)が、単一のページ
内に適合しないならば、それらは1又はそれ以上の追加
のページにストアされ得ることは、当業者には明らかで
あろう。
【0021】個々のページにバケットを上記グループ化
するための変形実施形態を図11に示す。図11では、
各チェーンのバケットの第1の所定の数(例えば、2)
だけが、同じページ(例えば、ページ1102及び11
04)にストアされている。バケットの所定の数が個々
のページにストアされた後、チェーンにおけるバケット
の残り(例えば、318,320,322,324)は
単一のページ(例えば、1106)に全てストアされ
る。この技術は、ハッシュ機構が、所定のレコードを探
すバケットのチェーンのエントリをスキャンするとき、
1つのページフォルトだけが、多数のページフォルトの
代わりに生ずることを保証する。例えば、チェーン30
2がスキャンされるならば、ハッシュ機構がバケット3
18のエントリをスキャンするとき、最悪の場合でも、
1つのページフォルトだけが、バケットのチェーンの残
りに関するエントリをスキャンすることを完成するため
に生じ得る。このように、ページフォルトの数が最小に
される。
【0022】ページ内のバケットをグループ化する別の
実施形態では、1つのバケットより多くのものがページ
にストアされ得る。例えば、各チェーンの第1及び第2
のバケットは、単一のページにストアされ得る。他のバ
ケット編成を本発明に関して使用することができるとい
うことは、当業者には明らかであろう。本発明を好まし
い実施形態で説明したけれども、添付した特許請求の範
囲に定義した本発明の精神及び範囲から逸脱することな
く、形態及び詳細における種々の変化をすることができ
ることは、当業者には明らかであろう。
【図面の簡単な説明】
【図1】在来のハッシュ機構を示す。
【図2】本発明の好ましい実施形態を実施するために適
当なコンピュータシステムを示す。
【図3】図2に示したハッシュテーブルのより詳細なダ
イアグラムを示す。
【図4A】図3に示した、バケットチェーンの第1のバ
ケットのより詳細なダイアグラムを示す。
【図4B】図3のバケットチェーンにおける第1のバケ
ットに続く、バケットのより詳細なダイアグラムを示
す。
【図4C】図4Aのエントリのより詳細なダイアグラム
を示す。
【図5】本発明の好ましい実施形態によるハッシュ機構
を生成する際に実行されるステップのフローチャートを
示す。
【図6】データアクセス要求を受けたとき、ハッシュマ
ネージャによって実行されるステップのフローチャート
を示す。
【図7】本発明の好ましい実施形態によるリオーダーさ
れたバケットチェーンを示す。
【図8】本発明の第1変形実施形態によるリオーダーさ
れたバケットチェーンを示す。
【図9】本発明の第2変形実施形態によるリオーダーさ
れたバケットチェーンを示す。
【図10】メモリの個々のページ内に適合するように編
成された図3のバケットを示す。
【図11】図3のバケットをメモリの個々のページ内に
編成するための変形実施形態を示す。
【符号の説明】
102 キー 104 キー関数 106 インデックス 108 ハッシュテーブル 202 メモリ 212 ハッシュマネージャ 214 ハッシュテーブル 404−408 エントリ 410 ポインタ
フロントページの続き (72)発明者 ラジャ クリシュナスワミー アメリカ合衆国 ワシントン州 98005 ベルヴィュー ノースイースト ナインス プレイス 13702 アパートメント エ イ1−112

Claims (26)

    【特許請求の範囲】
  1. 【請求項1】 キャッシュラインサイズを備えるキャッ
    シュラインを含むキャッシュを有するプロセッサを持っ
    たコンピュータシステムにおける方法であって、 データをストアするキャッシュラインサイズのバケット
    を有するハッシュテーブルを、コンピュータシステムの
    メモリに提供し、 1つのバケットが、キャッシュラインの1つに正確な適
    合でストアされるように、プロセッサが1つのバケット
    をキャッシュにロードする、ハッシュテーブルのバケッ
    トのうちの1つにストアされたデータにアクセスする、 ステップを有する、前記方法。
  2. 【請求項2】 各バケットが、複数のレコードを含むエ
    ントリを有し、各チェーンのバケットが、第1のバケッ
    トから最後のバケットまで連続を形成し、データにアク
    セスすることが、 キー値によって識別された、要求されレコードにアクセ
    スするためにコーラからの要求を受け、 ハッシュ関数を使用するチェーンのうちの1つを参照す
    るインデックスにキー値をハッシュし、 各アクセスされたたバケットは、キャッシュ内にロード
    される、第1のバケットで始まる、順番にインデックス
    が付けられたチェーンの各バケットにアクセスすること
    によって、且つ、レコードが、要求されたレコードなら
    ば、決定するために各アクセスされたバケットにおける
    各レコードのキー値を調べることによって、要求された
    レコードをサーチし、 要求されたレコードをコーラに戻し、 ロードされたバケットがキャッシュに保持されている
    間、 インデックスが付けられたチェーンの連続アクセスの性
    能を改善するために、キャッシュのロードされたバケッ
    トのレコードを再配置する、 ことを含む、複数の値を持ったキーを有するレコードに
    アクセスするための、請求項1に記載の方法。
  3. 【請求項3】 各バケットに関する複数のエントリが、
    データをストアする占領されたエントリであり、データ
    にアクセスすることが、 バケットの1つの占領されたエントリのうちの1つのデ
    ータにアクセスするための要求を受け、 複数のキャッシュラインにストアされる、1つのバケッ
    トにアクセスし、 1つのバケットへの前記アクセスに応答する1つのバケ
    ットに対する、連続のアクセスの性能を改良するため
    に、1つのバケットの占領されたエントリにストアされ
    たデータにアクセスし、第1の占領されたエントリのデ
    ータが第2の占領されたエントリに移動されるように再
    配置が実行される、 ことを有する、 各バケットがエントリを有する、請求項1に記載の方
    法。
  4. 【請求項4】 バケットがキャッシュラインサイズであ
    り、1つのバケットにアクセスすることが、キャッシュ
    ラインのうちの1つに正確な適合を有してストアされて
    いる1つのバケットを含む、請求項3に記載の方法。
  5. 【請求項5】 チェーンのバケットのエントリが、第1
    のバケットの第1のエントリから最後のバケットの最後
    のエントリまでの連続を形成し、データのアクセスが、 選択されたエントリにストアされた要求されたデータに
    アクセスするための要求を受け、 選択されたエントリを包含するチェーンのバケットにア
    クセスし、バケットはキャッシュラインのうちの1つに
    正確な適合を持ってストアされ、 要求されたデータを選択されたエントリから戻し、 第1のバケットの第1のエントリに包含されたデータ
    と、第1のバケットの第1のエントリに続くエントリに
    包含されたデータとを移動させるが、前記受け取りのス
    テップに応答して、連続の次のエントリに対する選択さ
    れたエントリの前に、アクセスし、復帰し、 要求されたデータをチェーンの第1のバケットの第1の
    エントリに移動させる、 提供されたハッシュテーブルが、データをストアする複
    数のエントリを持った各バケットを備えるバケットのチ
    ェーンを有する、請求項1に記載の方法。
  6. 【請求項6】 チェーンのバケットが、第1のバケット
    から最後のバケットまで連続を形成し、コンピュータシ
    ステムは、キャッシュラインサイズをもったキャッシュ
    ラインを備えるキャッシュを有し、バケットはキャッシ
    ュラインサイズであり、データのアクセスが、 ハッシュテーブルにアクセスするための複数の要求を受
    け、各要求は、チェーンのうちの1つのバケットのうち
    の1つのエントリのうちの1つのデータを示し、 受けられた複数の要求の各々に関して、 1つのバケットが、キャッシュラインのうちの1つに正
    確な適合を持ってストアされる、1つのチェーンの1つ
    のバケットの1つのエントリの指示されたデータにアク
    セスし、該指示されたデータにアクセスした後、該指示
    されたデータを1つのチェーンの第1のバケットに移動
    させる、 提供されたハッシュテーブルが、データをストアする複
    数のエントリを持った各バケットを備えたバケットのチ
    ェーンを有する、請求項1に記載の方法。
  7. 【請求項7】 指示されたデータの移動が、該指示され
    たデータを、1つのチェーンの1つのバケットの第1の
    エントリに移動することを含む、請求項6に記載の方
    法。
  8. 【請求項8】 第1のバケットがLRUデータを有し、
    指示されたデータの移動が、LRUデータを第1のバケ
    ットの外に移動することを含む、請求項7に記載の方
    法。
  9. 【請求項9】 LRUデータの移動が、LRUデータ
    を、連続の第1のバケットに続くバケットに移動させる
    ことを含む、請求項8に記載の方法。
  10. 【請求項10】 各チェーンの各バケットのエントリ
    が、第1のバケットの第1のエントリから最後のバケッ
    トの最後のエントリまで連続を形成し、データのアクセ
    スが、 チェーンのうちの1つのバケットのうちの1つのエント
    リのうちの1つのデータを示すハッシュテーブルにアク
    セスするための要求を受け、 1つのチェーンの1つのバケットの1つのエントリの指
    示されたデータにアクセスし、 1つのチェーンの第1のバケットの第1のエントリに含
    まれたデータと、指示されたデータにアクセスする前記
    ステップに連続に応答する次のエントリに対して、所定
    の数のバケットのための第1のバケットの第1のエント
    リに続くエントリに包含されているデータとを移動さ
    せ、 1つのチェーンの第1のバケットの第1のエントリの指
    示されたデータを移動させる、 提供されたハッシュテーブルが、データをストアする複
    数のエントリを持った各バケットを備えるバケットのチ
    ェーンを有する、請求項1に記載の方法。
  11. 【請求項11】 所定の数のバケットが、最後のエント
    リを備える端のバケットを有し、更に、 所定の数のバケットの端バケットの最後のエントリのデ
    ータを1つのバケットの第1のエントリに移動させ、 1バケットの次のエントリに対する1エントリの前の、
    1バケットのエントリのデータを移動させる、請求項1
    0に記載の方法。
  12. 【請求項12】 チェーンのバケットのエントリが、第
    1のバケットの第1のエントリから、最後のバケットの
    サイトのエントリまで連続を形成し、データのアクセス
    が、 チェーンのうちの1つのバケットのうちの1つのエント
    リのうちの1つのデータを指示するハッシュテーブルに
    アクセスするための要求を受け、1つのエントリは、1
    つのバケットの他のエントリに関するものである相対位
    置を有し、 1つのチェーンの1つのバケットの1つのエントリの指
    示されたデータにアクセスし、 第1のバケットと、第1のバケットに続くが、指示され
    たデータにアクセスする前記ステップに対応する次のバ
    ケットの相対位置でエントリ内の1つのバケットの前で
    あるバケットとの相対位置で、エントリに包含されたデ
    ータを移動させ、 1つのチェーンの第1のバケットの相対的な位置で、指
    示されたデータをエントリに移動させる、 提供されたハッシュテーブルが、データをストアする複
    数のエントリを持った各バケットを備えるバケットのチ
    ェーンを有する、請求項1に記載の方法。
  13. 【請求項13】 コンピュータシステムが、ページフォ
    ルトを減少させるためのページを備えるメモリを有し、 各チェーンの第1のバケットを第1のページにストア
    し、 各チェーンの第2のバケットを第2のページにストアす
    る、 ことを含む、請求項1に記載の方法。
  14. 【請求項14】 各チェーンに関して、 同じページ内に第2のバケットを続けるバケットをスト
    アする、 ことを更に有する、請求項13に記載の方法。
  15. 【請求項15】 コンピュータシステムが、データにア
    クセスするためのページを備えるメモリを有し、 データをストアする複数のエントリを有する各バケット
    を備えるバケットのチェーンを有するハッシュテーブル
    を生成し、各チェーンのバケットが、第1のバケットか
    ら最後のバケットまで連続を形成し、各バケットは連続
    に関する位置を有する有し、 連続における等価の相対位置を有するチェーンのバケッ
    トをメモリの単一のページにストアする、 ことを含む、請求項1に記載の方法。
  16. 【請求項16】 各チェーンに関して、 所定の数のバケットの後のバケットをメモリの単一のペ
    ージにストアする、 ことを更に含む、請求項15に記載の方法。
  17. 【請求項17】 キャッシュラインサイズを持ったキャ
    ッシュラインを有するキャッシュと、 ハッシュマネージャを含むメモリと、バケットの複数の
    チェーンを有するハッシュテーブルと、を有し、各バケ
    ットは、データをストアするエントリを包含し、キャッ
    シュラインサイズであり、ハッシュマネージャは、ハッ
    シュテーブルのチェーンのバケットのデータにアクセス
    するための要求を受け、データにアクセスするためのチ
    ェーンのバケットにアクセスし、チェーンがアクセスさ
    れた後に各チェーンの第1のバケットにMRUデータを
    位置決めし、 ハッシュマネージャを走らせ、バケットがアクセスされ
    た後に、正確な適合を備えるキャッシュラインのうちの
    1つに各バケットをストアするためのプロセッサと、 を有する、コンピュータシステム。
  18. 【請求項18】 キャッシュがプロセッサに包含されて
    いる、請求項17に記載のコンピュータシステム。
  19. 【請求項19】 各バケットが複数のレコードを含むエ
    ントリを有し、各チェーンのバケットが、最初のバケッ
    トから最後のバケットまで連続を形成し、バケットのア
    クセスが、 キー値によって識別された、要求されたレコードにアク
    セスするために、コーラから要求を受け、 ハッシュ関数を使用して、チェーンのうちの1つを参照
    するインデックスにキー値をハッシュし、 各アクセスされたバケットがキャッシュにロードされ
    る、第1のバケットではじまる連続にインデックスが付
    けられたチェーンにおいて、各バケットにアクセスする
    ことによって、且つ、レコードが要求されたレコードな
    らば、決定するために各アクセスされたバケットの各レ
    コードのキー値を調べることによって、要求されたレコ
    ードを調べ、 要求されたレコードをコーラに戻し、 ロードされたバケットがキャッシュに保持されている
    間、 インデックスが付けられたチェーンの一連のアクセスの
    性能を改善するために、キャッシュのロードされたバケ
    ットのレコードを再配置する、 複数の値を持ったキーを有するレコードにアクセスする
    ための、請求項17に記載のコンピュータシステム。
  20. 【請求項20】 各バケットに関する複数のエントリ
    が、データをストアする占領されたエントリであり、 バケットのアクセスが、 バケットのうちの1つの占領されたエントリのうちの1
    つのデータにアクセスするためのリクエストを受け、 複数のキャッシュラインにストアされている、あるバケ
    ットにアクセスし、 あるバケットへの前記アクセスに対応するあるバケット
    への連続のアクセスの性能を改善するために、あるバケ
    ットの占領されたエントリにストアされたデータを再配
    置し、該再配置は、第1の占領されたエントリのデータ
    を第2の占領されたエントリに移動するように実行され
    る、 各バケットが前記エントリを有する、請求項17に記載
    のコンピュータシステム。
  21. 【請求項21】 バケットがキャッシュラインサイズで
    あり、あるバケットのアクセスが、キャッシュラインの
    うちの1つに正確な適合を備えてストアされているある
    バケットを含む、請求項20に記載のコンピュータシス
    テム。
  22. 【請求項22】 チェーンのバケットのエントリが、第
    1のバケットの第1のエントリから最後のバケットの最
    後のエントリまで連続を形成し、バケットのアクセス
    が、 選択されたエントリにストアされた、要求されたデータ
    にアクセスするためのリクエストを受け、 選択されたエントリを包含するチェーンのバケットにア
    クセスし、該バケットは、キャッシュラインのうちの1
    つに正確な適合をもってストアされ、 要求されたデータを選択されたエントリから戻し、 第1のバケットの第1のエントリに包含されたデータ
    と、前記ステップの受けに連続に対応する次のエントリ
    に対する選択されたエントリの前であるが、第1のバケ
    ットの第1のエントリに続くエントリに包含されるデー
    タとを移動させ、 要求されたデータを、チェーンの第1のバケットの第1
    のエントリに移動させる、 ことを含む、 ハッシュテーブルが、データをストアする複数のエント
    リを有する各バケットを備えるバケットのチェーンを有
    する、請求項17に記載のコンピュータシステム。
  23. 【請求項23】 チェーンの中のバケットが、第1のバ
    ケットから最後のバケットまで連続を形成し、コンピュ
    ータシステムが、キャッシュラインサイズを持ったキャ
    ッシュラインを備えるキャッシュを有し、バケットがキ
    ャッシュラインサイズであり、バケットのアクセスが、 ハッシュテーブルにアクセスするために複数の要求を受
    け、各要求は、チェーンのうちの1つの中のバケットの
    うちの1つの中のエントリのうちの1つの中のデータを
    指示し、 受けられた複数の要求の各々に関し、 あるバケットがキャッシュラインのうちの1つに正確な
    適合を持ってストアされる、あるチェーンの中のあるバ
    ケットの中のあるエントリの中の指示されたデータにア
    クセスし、指示されたデータへのアクセス後、指示され
    たデータをあるチェーンの中の第1のバケットに移動す
    る、 ことを含む、 ハッシュテーブルが、データをストアする複数のエント
    リを持った各バケットを備えるバケットのチェーンを有
    する、請求項17に記載のコンピュータシステム。
  24. 【請求項24】 指示されたデータの移動が、指示され
    たデータを、あるチェーンの中の第1のバケットの中の
    第1のエントリに移動させることを含む、請求項23に
    記載のコンピュータシステム。
  25. 【請求項25】 第1のバケットが、LRUデータを有
    し、指示されたデータの移動が、LRUデータを第1の
    バケットの外に移動させることを含む、請求項24に記
    載のコンピュータシステム。
  26. 【請求項26】 LRUデータの移動が、LRUデータ
    を、連続の第1バケットに続くバケットの中に移動させ
    ることを含む、請求項25に記載のコンピュータシステ
    ム。
JP37021897A 1996-12-23 1997-12-24 システム性能を改善するためのハシュテーブルのハシュバケットにおけるコリジョンの再編成 Expired - Fee Related JP4218997B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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