JP2001175536A - 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置 - Google Patents

仮想アドレスからページ・テーブル・インデックスを計算する方法および装置

Info

Publication number
JP2001175536A
JP2001175536A JP2000329869A JP2000329869A JP2001175536A JP 2001175536 A JP2001175536 A JP 2001175536A JP 2000329869 A JP2000329869 A JP 2000329869A JP 2000329869 A JP2000329869 A JP 2000329869A JP 2001175536 A JP2001175536 A JP 2001175536A
Authority
JP
Japan
Prior art keywords
page
address
hash
format
virtual
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
JP2000329869A
Other languages
English (en)
Other versions
JP4268332B2 (ja
JP2001175536A5 (ja
Inventor
William R Bryg
ウイリアム・アール・バイグ
Stephen G Burger
ステファン・ジー・バーガー
N Hammond Garry
ガリー・エヌ・ハモンド
James O Hays
ジェームス・オー・ハイズ
C Hack Jerome
ジェローム・シー・ハック
K Ross Jonathan
ジョナサン・ケー・ロス
Sunil Saxena
スニル・サクシーナ
Koichi Yamada
コウイチ・ヤマダ
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.)
EMERGING ARCHITECTURES LLC
Original Assignee
EMERGING ARCHITECTURES LLC
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 EMERGING ARCHITECTURES LLC filed Critical EMERGING ARCHITECTURES LLC
Publication of JP2001175536A publication Critical patent/JP2001175536A/ja
Publication of JP2001175536A5 publication Critical patent/JP2001175536A5/ja
Application granted granted Critical
Publication of JP4268332B2 publication Critical patent/JP4268332B2/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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】仮想アドレスからページ・テーブル・インデッ
クスを計算する方法および装置を提供する。 【解決手段】本発明は、2つの異なるハッシュ・ページ
・テーブル構成をサポートする複合型ハッシュ・アルゴ
リズムを用いる。本発明の方法は、ページ・テーブルの
エントリを参照するエントリ・アドレスを仮想アドレス
から形成する。仮想アドレスからハッシュ・ページ番号
が最初に形成される。ハッシュ・ページ番号および仮想
アドレスの領域部分から参照される領域識別子を組み合
わせてハッシュ・インデックスを形成し、ハッシュ・イ
ンデックスを左にシフトさせてテーブル・オフセットを
形成する。次にページ・テーブルのサイズに基づきマス
クが形成される。次いでページ・テーブルのベース・ア
ドレスおよびマスクを使用して第1アドレス部分が形成
され、テーブル・オフセットおよびマスクを使用して第
2アドレス部分が形成される。最後に第1、第2アドレ
ス部分を組み合わせてエントリ・アドレスが形成され
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はコンピュータ・シス
テム内のメモリ機構に関する。より詳細には、本発明
は、ハッシュ関数を介してアクセスされるページ・テー
ブルを有する仮想メモリ・システムに関する。
【0002】
【従来の技術】従来型のコンピュータ・システムは、実
際に存在するより多くの論理メモリをシミュレートし、
コンピュータがいくつかのプログラムをそのサイズに関
係なく同時に実行することを可能にする、仮想メモリと
呼ばれる技術を使用する。同時実行するユーザ・プログ
ラムは、オペレーティング・システムによって割り当て
られた仮想アドレスを介してメインメモリ・アドレスに
アクセスする。仮想アドレスからメインメモリの物理ア
ドレスへのマッピングは、仮想アドレス変換として知ら
れている処理である。仮想アドレス変換を達成する技術
は多数あり、それらによってプロセッサがメインメモリ
内の所要の情報にアクセスすることが可能になる。
【0003】仮想アドレスおよび物理アドレス空間は通
常、ページと呼ばれる等しいサイズのメモリ・ブロック
に分割され、ページ・テーブルが仮想アドレスと物理ア
ドレスの間の変換を提供する。各ページ・テーブル・エ
ントリは通常、仮想アドレスおよび/または物理アドレ
ス、ならびにそのページに関する保護およびステータス
情報を含む。ステータスは通常、そのページが受けたア
クセスのタイプについての情報を含む。例えばダーティ
・ビットは、そのページ内のデータに変更があったこと
を示す。通常、ページ・テーブルは大きいのでメモリ内
に格納される。従って通常のメモリ・アクセス毎に、変
換を獲得する第1のアクセスおよび物理メモリ位置にア
クセスする第2のアクセスという、少なくとも2つのア
クセスが実際には必要とされ得る。
【0004】仮想アドレス変換をサポートする多数のコ
ンピュータ・システムは、変換索引バッファ(TLB)
を使用する。TLBは通常、小型で高速な連想記憶であ
り、普通はプロセッサ・ユニット上または近傍に置か
れ、最近使用された仮想アドレスおよび物理アドレスの
対を格納する。TLBはページ・テーブル内の変換のサ
ブセットを含み、はるかに速くアクセスすることができ
る。処理ユニットは、メインメモリからの情報を必要と
するとき、TLBに対して仮想アドレスを送る。TLB
は仮想アドレス・ページ番号を受け取り、物理ページ番
号を返す。物理ページ番号は、メインメモリ内の所要の
バイトまたはワードにアクセスするために下位アドレス
情報と組み合わされる。
【0005】ほとんどの場合、TLBはページ・テーブ
ル全体を含むことができないので、TLBを更新する手
順を実装する必要がある。TLB内に変換がない仮想ペ
ージがアクセスされるとき、この仮想ページ番号から物
理ページ番号への変換を決定するためにページ・テーブ
ルがアクセスされ、この情報がTLB内に入れられる。
ページ・テーブルに対するアクセスは、TLBに対する
アクセスより20倍長くかかる可能性があり、したがっ
てTLB内で変換を利用し続けることでプログラムの実
行速度が最適化される。
【0006】今日のコンピュータ・システムの大半は、
コンピュータ内の物理ランダム・アクセス・メモリ(R
AM)を増強するためにある種の大量記憶、通常はディ
スクを使用する。このメインメモリの増強により、メイ
ンメモリだけが利用可能な場合より大きなプログラムを
実施することができる。さらにディスク・メモリはRA
Mよりかなり廉価であるが、数桁低速でもある。プログ
ラムの長さおよびメインメモリに対する他のプログラム
との競合次第で、任意の特定時点においてプログラムの
一部がメインメモリ内にあり、一部がディスク上にある
可能性がある。直ちにアクセスする必要のあるプログラ
ムの一部はメインメモリ内に移動されるが、現在使用さ
れていない部分はディスク上に残される。
【0007】例えば1メガバイトのメインメモリを有す
るコンピュータ上で実行される2メガバイト長の単一プ
ログラムを考慮されたい。このプログラムは2メガバイ
トの仮想アドレス空間を必要とする。メインメモリが1
メガバイトしか保有できないので、所与のいかなる時に
もメインメモリ内にはせいぜいプログラムの半分しか存
在することができず、仮想アドレス空間の残りはディス
ク上に格納される。メインメモリ内の情報に対するアク
セスは通常どおり行われる。すなわち変換を有するかど
うかを見るためにTLBが最初に調べられ、TLBにな
い場合、ページ・テーブルからの情報を用いてTLBが
更新され、次いで希望する変換情報を得るためにTLB
が再度参照される。
【0008】メインメモリにない情報に対するアクセス
が発生する場合には、その変換を求めてTLBが最初に
アクセスされるが、そこにはないことになる。次いでT
LBを更新する変換情報を得るためにページ・テーブル
が参照される。しかしページ・テーブルにはメインメモ
リ内の情報に対する変換しかないので、必要な変換情報
はないことになる。この状態はページ・フォルトと呼ば
れる。ページ・フォルトに応答して、ページ・フォルト
・ハンドラが空き物理ページを見つけ、その物理ページ
にディスク上に格納されている必要な仮想ページをロー
ドし、その変換をページ・テーブルに挿入する。全ての
物理ページが他の仮想ページに既に関連付けられている
場合、ページ・フォルト・ハンドラは、現在物理メモリ
内に格納されているどの仮想ページをディスクにスワッ
プ・アウトするかを選択する必要がある。このタスクを
実行する、先入れ先出し、LRU(least-recentry-use
d)アルゴリズムなど多数のアルゴリズムがある。当技
術分野でよく知られているように、TLB更新処理がハ
ードウェアまたはソフトウェアのいずれかによって処理
されるのに対し、ページ・フォルト・ハンドラは通常ソ
フトウェアに実装される。
【0009】図1は上述の処理を示す。ステップ112
において、TLBに仮想アドレスが提示される。この仮
想アドレスに対する変換がTLB内にある場合には(T
LBヒット)、関連付けられた物理アドレスがTLBか
ら得られ、物理メモリにアクセスするために利用される
(ステップ114)。この仮想アドレスに対する変換が
TLBにない場合には(TLBミス)、その変換を求め
てページ・テーブルがアクセスされる(ステップ11
6)。その変換がページ・テーブルにある場合には、こ
の情報がTLBに挿入され(ステップ118)、仮想ア
ドレスが再び提示される(ステップ112)。今度はT
LBヒットになり、得られた物理アドレスが物理メモリ
にアクセスするために使用される。
【0010】仮想アドレスが、物理アドレス・ページが
関連付けられていない仮想アドレス・ページ内にある場
合には、ページ・テーブル内にこのページに対するエン
トリがないことになり、ページ・フォルトが発生する。
この状況では、ソフトウェアのページ・フォルト・ハン
ドラ(ステップ120)が仮想ページに物理ページを割
り当て、ディスクから物理ページにページをコピーし、
ページ・テーブルを更新する。次いでTLBに仮想アド
レスが再び提示される。TLBにまだ変換がないので、
もう1度TLBミスが起こりページ・テーブルからTL
Bが更新される。その後、仮想アドレスがTLBに再び
提示され、今度はTLBヒットが確実で、得られた物理
アドレスが物理メモリにアクセスするために使用され
る。
【0011】図2は、仮想アドレスの提示に応答してバ
ッファ(TLB)内のエントリにアクセスする方法を単
純化して示したものである。普通ならTLBにはより多
数のエントリがあるが、例を単純化するために、例示し
たTLBには1つしかエントリがない。仮想アドレスが
レジスタ201にロードされる。この仮想アドレスは2
つの部分、仮想ページ番号203および物理オフセット
205からなる。物理オフセットはページ・サイズに対
応する。4キロバイトのページ・サイズを有するコンピ
ュータ・システムの場合、物理オフセット205はアド
レスの下位12ビット(ビット11〜0)であり、ペー
ジ内の特定バイトを示す。レジスタ内の残りのビットは
仮想ページ番号を指す。用語「ページ・オフセット」は
当業界でしばしば使用される用語であり、用語「物理オ
フセット」と同義である。仮想アドレスは、「アドレス
空間識別子」ビット、「領域(region)識別子」ビット
など、物理ページ番号に対する変換を一意に指定する際
に使用される他のビットを含むことがある。
【0012】図に示した例の場合、仮想ページ番号はT
LB比較器207に対して一入力を与える仮想タグにな
る。TLB209は、2つの連結した部分、TLBタグ
211および関連付けられた物理ページ番号213を有
する。TLBタグ211はTLB比較器207に第2の
入力を与え、比較器はTLBタグと仮想タグを比較す
る。タグが一致する場合には、比較器はTLBヒットを
示し、物理(実)メモリ・アドレスを与えるために物理
ページ番号213と物理オフセット205が組み合わさ
れる。タグが一致しない場合には、TLBミスが起こっ
ており、TLBを更新するために、図1に関連して述べ
たTLBミス処理が用いられる。
【0013】図3は、TLBミスの後にTLBを更新す
るために必要となる、仮想ページ番号が与えられた物理
ページ情報を取り出す処理を示す。上述のようにページ
・テーブル内で仮想から物理へのマッピングが維持され
る。所与の仮想アドレスを物理アドレスに変換する場
合、一つの方法は、ページ・テーブルへのインデックス
を形成するために仮想アドレスに対して多対一(ハッシ
ュ)関数を実行することである。これはリンクされたエ
ントリ・リストに対するポインタを与える。次いでこれ
らのエントリから一致するものが検索される。一致を判
定するためには、仮想ページ番号とページ・テーブル内
のエントリ(仮想タグ)が比較される。両者が等しい場
合、そのページ・テーブル・エントリが物理アドレス変
換を与える。
【0014】図に示した例では、インデックスを形成す
るために仮想ページ番号203に対してハッシュ関数3
01が実行される。このインデックスはページ・テーブ
ル303へのオフセットである。図に示すように、イン
デックスは0、すなわちインデックスはページ・テーブ
ル内の第1のエントリ305を指す。ページ・テーブル
内の各エントリは、複数の部分からなるが、通常少なく
とも仮想タグ307、物理ページ309およびポインタ
311を含む。仮想ページ番号203が仮想タグ307
に等しい場合、物理ページ309は所要の物理(実)メ
モリ・ページ・アドレスを与える。仮想タグが一致しな
い場合、ポインタ311は、仮想から物理への変換情報
を含むメモリ内のエントリのチェイン(連鎖)を指す。
同じページ・テーブル・エントリに2つ以上の仮想ペー
ジ番号が付与される(ハッシュされる)可能性があると
きは、そのチェインに含まれる別の情報が必要である。
【0015】図に示すように、ポインタ311は連鎖セ
グメント313を指す。このチェイン・セグメントは、
最初のページ・テーブル・エントリと同じタイプの情報
を含む。前と同様に、一致するかどうかを見るために仮
想ページ番号203と次の仮想タグ315が比較され
る。一致する場合には、関連付けられた物理ページ31
7が所要の物理メモリ・ページのアドレスを与える。一
致しない場合には、もしあれば次のチェイン・セグメン
トを見つけるためにポインタ319が検査される。図に
示すようにポインタ319が他のチェイン・セグメント
を指さない場合には、ページ・フォルトが起こってい
る。その場合、図1に関連して述べたように、ページ・
テーブルを更新するためにページ・フォルト・ソフトウ
ェア・プログラムが使用される。
【0016】上述の方法は、仮想タグがコンピュータの
基本データ・パス・サイズ以下のシステムに対してはよ
く機能する。しかし仮想タグがそのデータ・パス・サイ
ズより大きい場合には、仮想タグと仮想ページ番号が同
じであるかどうかをテストするために2度比較する必要
がある。
【0017】「Computer Memory Address Control Appa
ratus Utilizing Hashed Address Tags in Page Tables
Which Are Compared to a Combined Address Tag and
Index Which Are Longer than the Basic Data Width o
f the Associated Computer」という名称で、本明細書
に参照により組み込まれたDale Morris等の米国特許第
5,724,538号は、仮想タグのサイズを減らし、それによ
って仮想タグと仮想ページ番号がおなじであるかどうか
をテストするのに必要な比較の回数を減らす方式を開示
している。基本的に、Morris等は、仮想アドレスの一部
は既にハッシュ・インデックスによって表されており、
したがってアドレスのその部分は仮想タグによって表さ
れる必要がないことを認識した。
【0018】図4は、Dale Morris等によって開示され
た実施形態の単純化されたブロック図を示す。図4にお
いてページ・テーブル413は、「ハッシュ・タグ」4
21、423を含む。ハッシュ・インデックス409
は、仮想ページ番号ビット401を取り、そのビットに
対してインデックス・ハッシュ関数405を実行するこ
とによって形成され、その結果は、コンピュータの基本
データ幅より大きくない。同様にハッシュ・タグは、仮
想ページ番号ビット401を取り、タグ・ハッシュ関数
427を実行することによって形成され、その結果得ら
れたハッシュ・タグは、コンピュータの基本データ幅よ
り大きくない。図4はタグ・ハッシュ関数427とハッ
シュ・タグ421、423の間の明示的な関係を示して
はいないが、タグ・ハッシュ関数427によって表され
るアルゴリズムが、ハッシュ・タグ421、423が生
成され、ページ・テーブル413に挿入されるときに使
用されることに留意されたい。
【0019】インデックス・ハッシュ関数405および
タグ・ハッシュ関数427は、所与の仮想ページ番号に
対して、得られたハッシュ・インデックスおよび得られ
たハッシュ・タグの組合せが一意であるという範囲にお
いて望ましい(complimentary)。したがって仮想ペー
ジがアクセスされるときには、ページ・テーブル413
内の(ハッシュ・タグ421、423などの)ハッシュ
・タグを指すハッシュ・インデックスを生成するため
に、仮想ページ番号401がインデックス・ハッシュ関
数405に与えられる。テーブル413から与えられた
ハッシュ・タグは比較関数429に回される。同時に仮
想ページ番号401は、ハッシュ・タグ425を生成す
るためにハッシュ関数427にも与えられる。ハッシュ
・タグ425とページ・テーブル413のハッシュ・タ
グが一致する場合には、(エントリ317、417に格
納された物理ページなどの)物理ページがメモリ・アク
セス動作を完了するために使用される。タグが一致しな
い場合、チェイン・セグメントが存在するかどうかを見
るために、ページ・テーブル・エントリの(ポインタ3
19、419などの)ポインタがアクセスされる。チェ
イン・セグメントがないか、または全てのチェイン・セ
グメントを検索して一致するものが見つからない場合に
は、上述のようにオペレーティング・システムのページ
・フォルト・ハンドラが呼び出される。
【0020】インデックス・ハッシュ関数405および
タグ・ハッシュ関数427はハードウェアおよびソフト
ウェアの両方からアクセスされることに留意されたい。
ハードウェアは、仮想ページ番号を物理ページ番号に変
換するときにこのハッシュ関数にアクセスしなければな
らず、ソフトウェアは、ページ・テーブルを初期化する
とき、およびページ・フォルトに対応するときに必要と
なるような、ページ・テーブルにアクセスし変更すると
きに、このハッシュ関数にアクセスしなければならな
い。従来の技術においてハッシュ・アルゴリズムは、本
質的に2つの形態で提供された。コンピュータ・ハード
ウェアは、仮想から物理への変換を迅速に進められるよ
うにハードウェアに基づくバージョンのハッシュ・アル
ゴリズムを有し、オペレーティング・システムは、ペー
ジ・テーブルの初期化、アクセスまたは変更時に仮想か
ら物理への変換を生成するためにソフトウェアに基づく
バージョンのハッシュ・アルゴリズムを有した。
【0021】いくつかのコンピュータは、領域(regio
n)をサポートすることによって仮想アドレッシングの
概念を拡大した。領域は、仮想アドレス空間を等しいサ
イズの領域に分割することにより、仮想アドレス空間内
で独立したローカル・アドレス空間、共用アドレス空間
およびグローバル・アドレス空間を効果的に作り出す機
能を可能にする。通常任意の時点では、領域の1サブセ
ットだけが活動化される。各領域には、所与の領域のア
ドレス変換に一意にタグを付ける領域識別子が関連付け
られる。ある領域の領域識別子が特定の処理に割り当て
られる場合、この領域空間は、その処理に対してローカ
ルになる。ある領域の領域識別子が処理間で共用される
場合、この領域空間は共用になる。ある領域の領域識別
子が全ての処理によって共用される場合、この領域はグ
ローバルになる。ローカル領域に対する領域識別子の変
更により、仮想アドレスは1つの処理のローカル空間か
ら別の処理のローカル空間に効果的にスワップされる。
したがって領域は、処理を交換するときにTLBをフラ
ッシュする必要を実質的になくし、それによってシステ
ム性能全体が改善される。
【0022】
【発明が解決しようとする課題】本発明は、仮想アドレ
スからページ・テーブル・インデックスを計算する方法
および装置である。本発明は、単一のコンピュータ・ア
ーキテクチャにおいて構成レジスタおよび事前定義定数
を介して2つの異なるハッシュ・ページ・テーブル構成
をサポートする複合型ハッシュ・アルゴリズムによって
実施される。
【0023】
【課題を解決するための手段】本発明は例えば、上位3
ビットが仮想領域部分を形成する64ビット仮想アドレ
スを有する仮想アドレス指定方式と共に使用することが
できる。したがって所与の任意の時点で仮想アドレスに
よって8領域を指定することができる。仮想アドレスの
残りの61ビットは、各領域内でメモリをアドレス指定
するために使用され、それによって各領域に261バイ
トの仮想メモリを提供する。各メモリ・ページには24
ビットの領域識別子が関連付けられる。したがってオペ
レーティング・システムは、個々の仮想アドレス空間を
24まで割り当てることができる。メモリ・ページ
は、サイズが4キロバイトから256メガバイトの範囲
を取ることができる。
【0024】第1のハッシュ・ページ・テーブル構成
は、領域に基づく直線的ページ・テーブルをサポート
し、本明細書において「ショート・フォーマット」ペー
ジ・テーブルと呼ばれる。ショート・フォーマット・ペ
ージ・テーブルは、各仮想領域に提供され、直線的(lin
ear)であり、領域内の各変換に対して直線的エントリを
有する。ショート・フォーマット・ページ・テーブルは
チェイン・セグメントを必要とせず、ショート・フォー
マット・ページ・テーブルはハッシュ・タグ・エントリ
を含まない。第2のハッシュ・ページ・テーブル構成
は、コンピュータ・システム全体のための単一ページ・
テーブルをサポートし、本明細書において「ロング・フ
ォーマット」ページ・テーブルと呼ばれる。ロング・フ
ォーマット・ページ・テーブルはチェイン・セグメント
をサポートし、ロング・フォーマット・ページ・テーブ
ル・エントリはハッシュ・タグ・フィールドを含む。
【0025】一実施形態において本発明の方法は、仮想
アドレスからエントリ・アドレスを形成し、このエント
リ・アドレスはページ・テーブルのエントリを参照す
る。エントリ・アドレスを形成するために、最初に仮想
アドレスをJビット右にシフトすることによって仮想ア
ドレスからハッシュ・ページ番号が形成され、ここで仮
想アドレスの領域部分に関連付けられた領域の好ましい
ページ・サイズは、2バイトである。
【0026】コンピュータ・システムがロング・フォー
マット・ページ・テーブルで動作している場合、次のス
テップは、ハッシュ・ページ番号と仮想アドレスの領域
部分から参照される領域識別子とを組み合わせることに
よってハッシュ・インデックスを形成すること、および
ハッシュ・インデックスをKビット左にシフトすること
によってテーブル・オフセットを形成することであり、
ここでロング・フォーマット・ページ・テーブル・エン
トリはそれぞれ、2バイト長である。
【0027】しかしコンピュータ・システムがショート
・フォーマット・ページ・テーブルで動作している場
合、次のステップは、ハッシュ・インデックスをハッシ
ュ・ページ番号に等しく設定することによってハッシュ
・インデックスを形成すること、およびハッシュ・イン
デックスをLビット左にシフトすることによってテーブ
ル・オフセットを形成することであり、ここでショート
・フォーマット・ページ・テーブル・エントリはそれぞ
れ、2バイト長である。
【0028】次にページ・テーブルのサイズに基づきマ
スクが形成される。次いでページ・テーブルのベース・
アドレスおよびマスクを使用して第1アドレス部分が形
成され、テーブル・オフセットおよびマスクを使用して
第2アドレス部分が形成される。最後に第1、第2アド
レス部分を組み合わせることによってエントリ・アドレ
スが形成される。
【0029】他の実施形態では、領域部分がエントリ・
アドレス内に挿入される。フォーマットがロングに設定
される場合、領域部分はページ・テーブルのベース・ア
ドレスの領域部分から得られる。しかし領域がショート
に設定される場合、領域部分は仮想アドレスの領域部分
から得られる。
【0030】他の実施形態では、フォーマットがロング
に設定されるときに仮想アドレスの領域部分をハッシュ
・ページ番号に挿入することによって、ロング・フォー
マット・ページ・テーブルの最大サイズが増やされる。
【0031】本発明は、ある実施依存パラメータに基づ
き本発明を実施するために使用されるロジック量を減ら
すいくつかの実施形態もまた含む。ロングおよびショー
ト・フォーマット・ページ・テーブル双方のためのペー
ジ・テーブル・エントリを生成することのできる単一の
アルゴリズムを提供することにより、本発明は、実行ス
ピードに重大な影響を与えることなく、両方のページ・
テーブル・フォーマットにアクセスするのに必要なロジ
ック量を減らす。
【0032】
【発明の実施の形態】本発明は、仮想アドレスからペー
ジ・テーブル・インデックスおよびハッシュ・タグを計
算する方法および装置である。本発明は、単一のコンピ
ュータ・アーキテクチャにおいて構成レジスタを介して
2つの異なるハッシュ・テーブル構成をサポートする複
合型(combined)ハッシュアルゴリズム、および仮想ア
ドレスからハッシュ・タグを生成するアルゴリズムによ
って実施される。
【0033】本発明をより詳細に議論する前に、本発明
を実施することのできるアーキテクチャの枠組みを最初
に考慮されたい。Stephen Burger等による「A Method a
nd Appratus for Exposing a Hardware-based Virtual
Memory Hash Scheme to Software」という名称の係属中
の米国特許出願を参照により本明細書に組み込む。この
出願は、本発明と同じ譲受人に譲渡され、1998年1
0月12日に出願され、米国出願番号09/170,143が割り
当てられている。Burger等は、ページ・テーブルにアク
セスするためにハードウェアによって使用されるハッシ
ュ・アルゴリズムをソフトウェアに公開する2つの命令
を開示している。第1の命令は、THASH(Translat
ion Hashed Entry Address)命令であり、ページ・テー
ブル内のエントリを指すハッシュ・インデックスを仮想
アドレスから生成する。第2の命令は、TTAG(Tran
slation Hashed Entry Tag)命令であり、ハッシュ・イ
ンデックスから参照されるページ・テーブルのエントリ
内に格納されるハッシュ・タグを仮想アドレスから生成
する。この2つの命令を提供することによりBurge
r等は、コンピュータ・オペレーティング・システム
(または他のシステム・ソフトウェア)がコンピュータ
・ハードウェアによって使用されるハッシュ・アルゴリ
ズムをコードする必要がないことを教示した。より正確
には、THASHおよびTTAG命令は、ハードウェア
によって使用されるハッシュ・アルゴリズムにソフトウ
ェアがアクセスすることを可能にするインタフェースを
提供する。本発明は、THASH命令によって使用する
ことのできる可能な1アルゴリズムを本発明が提供する
という点で上記出願に関係する。さらにTTAG命令に
よって使用することのできる可能な1アルゴリズムが以
下に開示される。
【0034】本発明は、図5に示す仮想アドレス指定方
式501をサポートする。仮想アドレス502は64ビ
ット・アドレスである。上位3ビットは仮想領域番号
(VRN)503を形成する。したがって仮想アドレス
により、随時8領域を指定することができる。仮想アド
レス502の残り61ビットは、各領域内でメモリをア
ドレス指定するために使用され、それによって各領域に
61バイトの仮想メモリを提供する。(ページ504
などの)各メモリ・ページには24ビットの領域識別子
(RID)が関連付けられている。したがってオペレー
ティング・システムは、個々の仮想アドレス空間を2
24まで割り当てることができる。以下により詳述する
ように、メモリ・ページはサイズが4キロバイトから2
56メガバイトの範囲を取ることができる。Stephen Bu
rger等による同時係属中の「A Methodand Apparatus fo
r Pre-validating Regions in a Virtual Addressing S
cheme」という名称の米国特許出願の中に仮想領域を説
明する追加情報が見られる。この出願は参照により本明
細書に組み込まれ、本発明と同じ譲受人に譲渡され、1
998年10月12日に出願され、米国出願番号09/17
0,140が割り当てられている。
【0035】本発明は、2つのページ・テーブル・フォ
ーマットを提供するアーキテクチャをサポートする。第
1のフォーマットは、領域に基づく直線的(linear)ペ
ージ・テーブルであり、本明細書において「ショート・
フォーマット」ページ・テーブルと呼ばれる。ショート
・フォーマット・ページ・テーブルは、図5に示すよう
に各仮想領域に対して提供される。ショート・フォーマ
ット・ページ・テーブルは直線的であり、領域内の各変
換のための直線的エントリを有する。したがってショー
ト・フォーマット・ページ・テーブルはチェイン・セグ
メントを必要とせず、ショート・フォーマット・ページ
・テーブルはハッシュ・タグ・エントリを含まない。
【0036】第2のフォーマットは、コンピュータ・シ
ステム全体のための単一の大きなページ・テーブルをサ
ポートし、本明細書において「ロング・フォーマット」
ページ・テーブルと呼ばれる。ロング・フォーマット・
ページ・テーブルは、チェイン・セグメントをサポート
し、ロング・フォーマット・ページ・テーブル・エント
リは、ハッシュ・タグ・フィールドを含む。
【0037】図6はショート・フォーマット・ページ・
テーブル・エントリ601を示す。ショート・フォーマ
ット・エントリ601は単一の64ビットのワードであ
り、したがって合計サイズ8バイトを有することに留意
されたい。ショート・フォーマット・エントリ601内
のフィールドを以下のテーブル1に述べる。
【0038】
【表1】
【0039】領域内の各ページに対してショート・フォ
ーマット・エントリが存在し、仮想ハッシュ・ページ・
テーブル(VHPT)内のショート・フォーマット・エ
ントリの位置によって変換の仮想ページ番号(vpn)
が暗示されることに留意されたい。ページ・サイズが領
域内で一定であることにも留意されたい。
【0040】したがって以下に述べるように、ページ・
サイズは、領域に関連付けられた構成レジスタのprefer
red_page_sizeフィールドにアクセスすることによって
入手可能である。
【0041】図7はロング・フォーマット・ページ・テ
ーブル・エントリ701を示す。ロング・フォーマット
・エントリ701は4つの64ビット・ワードを含み、
したがって合計サイズが32バイトであることに留意さ
れたい。ロング・フォーマット・エントリ701の第1
ワードはショート・フォーマット・エントリ601と同
一であり、したがって第1ワード内のフィールドは上記
テーブル1に述べられている。以下のテーブル2はロン
グ・フォーマット・エントリ701の残りのフィールド
を記載する。
【0042】
【表2】
【0043】全ての仮想アドレスに対して単一のロング
・フォーマット・ページ・テーブルが使用されること、
エントリは共にチェインすることができること、通常必
ずしも全てのページに対して最初のエントリがあるわけ
ではないことに留意されたい。したがってロング・フォ
ーマット・ページ・テーブル・エントリは、ページ・サ
イズ(ps)、タグなどの追加情報を含む。VPNはハ
ッシュ・インデックスおよびタグによって一意に表され
る。
【0044】本発明のアルゴリズムを以下に議論する前
に、次のフィールドが本発明のアルゴリズムに利用可能
であることを最後に述べる。これらのフィールドのいく
つかは構成レジスタに格納されるプログラム可能変数を
表し、したがって特定のコンピュータ・システム上で動
作するソフトウェアによって変更することができること
に留意されたい。他のフィールドは、コンピュータ・シ
ステムの特定の実施態様中で変化しない定数を表し、し
たがって本発明のアルゴリズムの特定の実施態様中にハ
ード・コード化されてよい。これらのフィールドを以下
のテーブル3に示す。
【0045】
【表3】
【0046】上述のように領域に基づくショート・フォ
ーマットにおいて、各領域に対する直線的ページ・テー
ブルは、参照される領域自体の中にある。結果としてシ
ョート・フォーマットVHPTは、各領域内でpage_tab
le_baseのビット{60:min_pt_size}によって固定さ
れる別々の領域毎のページ・テーブルからなる。VHP
Tが利用できる領域に対してオペレーティング・システ
ムは、領域毎の直線的ページ・テーブルを維持する必要
がある。以下のショート・フォーマット・アルゴリズム
において定義するように、ショート・フォーマットVH
PTへの直線的インデックスを計算するために、変換す
べき仮想アドレス(VA)、領域のpreferred_page_siz
e、page_table_baseおよびpage_table_sizeが使用され
る。
【0047】ショート・フォーマットVHPTのサイズ
(page_table_size)は、マッピングされた仮想アドレ
ス空間のサイズを定義する。ショート・フォーマットに
おいてアーキテクチャに適合する最大テーブル・サイズ
は、領域毎に252バイトである。4キロバイトのペー
ジを使用して領域全体(261バイト)をマッピングす
るには、2(61−12)(あるいは249)のページ
がマップ可能でなければならない。ショート・フォーマ
ットVHPTエントリは8バイト(あるいは2 バイ
ト)大である。結果として最大テーブル・サイズは、領
域毎に2(61− 12+3)(あるいは252)バイト
である。261より小さいアドレス空間をマッピングす
るためにショート・フォーマットが使用される場合、よ
り小さいショート・フォーマット・テーブル(page_tab
le_size<52)を使用することができる。4キロバイ
トのページで2のアドレス空間をマッピングするに
は、(N−9)の最小page_table_sizeが必要である。
【0048】ショート・フォーマットVHPTを使用す
るとき、(上述の)THASH命令は領域に基づくショ
ート・フォーマット・インデックスを返す。TTAG命
令は、これもまた上述したが、ショート・フォーマット
では使用されない。以下のショート・フォーマット・ハ
ッシング・アルゴリズムでは、VHPTエントリ・アド
レスの要求されている仮想アドレス(VA)が関数tlb_
vhpt_hash_shortに渡される。この関数は、仮想アドレ
スに対応するエントリのアドレス(vhpt_addr)を返
す。
【0049】
【表4】
【0050】ショート・フォーマット・ハッシング・ア
ルゴリズムのライン1において、関数tlb_vhpt_hash_sh
ortが呼び出され、仮想アドレス(VA)がこの関数に
渡される。ライン3では、preferred_page_sizeによっ
てVAを除することによりhash_page_numberが計算され
る。(定数impl_va_msbによって定義されるように)V
Aのうち特定のコンピュータ・システムの実施によって
使用されるビットだけしか使用されないことに留意され
たい。除算演算は、VAをNビット右にシフトすること
によって達成され、ここで、ページ・サイズは2であ
る。右へのシフトは符号なしである。上述のように一実
施形態では、ページ・サイズが4キロバイトと256メ
ガバイトの間で変化する可能性があるので、VAは12
ビットないし28ビット右にシフトされる。
【0051】ライン4において、hash_indexがhash_pag
e_numberに等しく設定される。ショート・フォーマット
・アルゴリズムにおいてこのステップは多少冗長である
が、以下に見られるようにショート・フォーマットとロ
ング・フォーマットのアルゴリズムを調和させるために
含められている。上記の議論のように、ショート・フォ
ーマットVHPT内の各エントリは8バイト幅である。
したがってライン5において、ページ・テーブルへのオ
フセット(vhpt_offset)がhash_page_numberに8をか
けることによって計算される。これはhash_indexを3ビ
ット位置だけ左にシフトすることによって実行される。
【0052】ライン6ではVHPTの領域(vhpt_regio
n)が計算される。上記で議論したように、ショート・
フォーマットVHPTを使用するとき各領域がそれ自体
のVHPTを含むので、VHPTの領域はVAの領域と
同じである。したがってVHPTの領域は、単純にVA
のビット{63:61}である。
【0053】ライン7では、page_table_sizeに対応す
るビット数だけ2を累乗し、1を引くことによってマス
ク(pmask)が形成される。例えば最小4キロバイトのp
referred_page_sizeを用いて領域全体(261バイト)
をマッピングするには、2 61−12)(あるいは2
49)ページがマッピング可能でなければならない。各
ショート・フォーマットVHPTエントリが8(あるい
は2)バイトなので、最大page_table_sizeは252
である。この第1の例では、pmaskの上位12ビットが
「0」であり、下位52ビットが「1」である。同様に
最大256メガバイトのpreferred_page_sizeを用いて
領域全体(261バイト)をマッピングするには、2
(61−28)(あるいは233)ページがマッピング
可能でなければならない。各ショート・フォーマットV
HPTエントリが8(あるいは2)バイトなので、
(全領域をマッピングするときの)最小page_table_siz
eは2 である。この第2の例では、pmaskの上位28
ビットが「0」であり、下位36ビットが「1」であ
る。もちろん261バイトの領域全体より少ないバイト
をマッピングすることもまた可能であり、preferred_pa
ge_size次第で236より小さいpage_table_sizeになる
可能性がある。以下に述べるように、マスクは、VAに
対応する得られたVHPTエントリのアドレスを形成す
る構成要素を選択するために使用される。
【0054】ライン8〜11では、いくつかの構成要素
を合わせて論理和を取ることにより、VAに対応するV
HPTのエントリのアドレス(vhpt_addr)が計算され
る。最初にライン8において、vhpt_regionを61ビッ
ト左にシフトすることによって領域構成要素が計算さ
れ、それによってvhpt_regionをvhpt_addrの適切な位置
に位置付ける。
【0055】ライン9〜11を議論する前に、min_pt_s
izeがコンピュータ・システムの各実施態様に対して定
義される定数であることを考慮されたい。この定数min_
pt_sizeはNと表され、ここでページ・テーブルの最小
サイズは2バイトである。したがってvhpt_addrのビ
ット{min_pt_size−1:0}がvhpt_offsetによって提
供されることが常に分かる。しかしビット{60:min_
pt_size}は、page_table_sizeに基づきpage_table_bas
eまたはvhpt_offsetのいずれかによって提供される。し
たがってライン7で計算されたpmaskは、page_table_si
zeに基づきpage_table_baseおよびvhpt_offsetの適切な
ビットを選択するために使用される。
【0056】最小ページ・テーブル・サイズを定義する
ことは、本発明によるコンピュータ・システムを実施す
るのに必要なロジック量を(ある程度)減らす。例えば
各page_table_baseを保有するレジスタは、ビット{6
3:min_pt_size}しか格納する必要がない。ライン
9、10を参照して以下に議論する論理積および論理和
演算の幅もまたmin_pt_sizeビットだけ減らすことがで
きる。一実施形態においてmin_pt_sizeは15であり、
その結果、最小ページ・テーブル・サイズは32キロバ
イトとなる。
【0057】したがってライン9において、page_table
_baseのビット{60:min_pt_size}は、pmaskのビッ
ト{60:min_pt_size}の反転との論理積を取られ、
ライン10において、vhpt_offsetのビット{60:min
_pt_size}は、pmaskのビット{60: min_pt_size}
との論理積を取られる。この2つの論理積演算の結果を
合わせて論理和が取られ、その結果がmin_pt_sizeビッ
ト位置だけ左にシフトされる。したがってライン9、1
0は、このvhpt_addrの構成要素を形成するためにpmask
およびmin_pt_sizeを使用し、この構成要素はVHPT
のサイズに基づき変化し、min_pt_sizeに基づきvhpt_of
fsetだけからは与えられないことが分かる。この構成要
素がライン8で計算された領域構成要素との論理和を取
られることに留意されたい。
【0058】最後にライン11において、vhpt_offset
(ビット{min_pt_size−1:0})だけに基づくvhpt_
addrの構成要素は、vhpt_addrを形成するために上記で
計算された他の2つの構成要素との論理和を取られる。
ライン12において、関数tlb_vhpt_hash_shortが終了
し、vhpt_addrを呼び出しルーチンに返す。
【0059】ショート・フォーマットVHPTにおいて
各VHPTエントリは、仮想アドレスに一意に対応す
る。しかしロング・フォーマットVHPTでは、複数の
仮想アドレスがVHPTへの第1エントリを共用する可
能性があり、オペレーティング・システムによって第1
エントリにチェインされたVHPTエントリにその後の
変換が格納される。第1エントリがアクセスされた後
に、仮想から物理への変換に対応する(図7に示す)タ
グを見つけるために、第1エントリおよびリンクされた
エントリを検索することにより、仮想から物理への適切
な変換が見つけられる。ロング・フォーマット・アルゴ
リズムを以下に説明する。混乱を避けるために、全ての
アルゴリズムに対して一意のライン番号が使用されてい
ることに留意されたい。
【0060】
【表5】
【0061】ロング・フォーマット・ハッシングアルゴ
リズムのライン14において、関数tlb_vhpt_hash_long
が呼び出され、その関数に仮想アドレス(VA)および
24ビットのregion_idが渡される。ライン16におい
て、VAをpreferred_page_sizeで除することによりhas
h_page_numberが計算される。(impl_va_msbによって定
義されるように)VAのうち特定のコンピュータ・シス
テムの実施によって使用されるビットだけしか使用され
ないことに留意されたい。除算演算は、VAをNビット
右にシフトすることによって達成され、ここでページ・
サイズは2である。右のシフトは符号なしである。上
述のように、一実施形態においてページ・サイズは、4
キロバイトと256メガバイトの間で変化する可能性が
あるので、VAは12ビットないし28ビット右にシフ
トされる。
【0062】ライン17においてhash_indexが形成され
る。上述のように、hash_page_numberはVAを少なくと
も12ビット右にシフトすることによって形成される。
したがってhash_page_numberの最大値は252であり、
hash_page_numberのビット{64:52}は「0」であ
る。ライン17の最初の部分は、VAのビット{63:
61}(VAの領域部分)を52ビット左にシフトし、
その結果とhash_page_numberとの論理和を取る。これに
より、ロング・フォーマットVHPTの最大可能サイズ
が252エントリ(hash page numbersの最大値)か
ら255エントリに増える。最後にhash_indexを形成す
るために、ライン17の最初の部分の結果と24ビット
のregion_idとの排他的論理和が取られる。
【0063】上述のように、ロング・フォーマットVH
PTエントリは32(あるいは2)バイトである。し
たがってライン18では、hash_indexを5ビット位置だ
け左にシフトすることによってvhpt_offsetが形成され
る。ライン19では、page_table_baseのビット{6
3:61}を取り出すことによってvhpt_regionが形成
される。各領域内に存在するショート・フォーマットV
HPTとは対照的に、ロング・フォーマットVHPTは
システム全体に対して1つしか定義されない。
【0064】ライン17〜19においてhash_index、vh
pt_offset、vhpt_regionを計算したのち、ライン20〜
24ではpmaskおよびvhpt_addrが計算される。ロング・
フォーマット・アルゴリズムのライン20〜24は、シ
ョート・フォーマット・アルゴリズムのライン7〜11
と同一であることに留意されたい。したがってvhpt_add
rは、ショート・フォーマット・アルゴリズムを参照し
ながら上に述べたのと同じ方法で形成される。最後にラ
イン25において、関数tlb_vhpt_hash_longが終了し、
vhpt_addrを呼び出しルーチンに返す。
【0065】ロング・フォーマットVHPTを使用する
ときにvhpt_addrは、ロング・フォーマットVHPTエ
ントリ内に格納されたタグと組み合わせて、仮想から物
理への変換を一意に識別することに留意されたい。ロン
グ・フォーマット・ハッシングアルゴリズムで一意性を
保証するタグ・アルゴリズムを以下に説明する。
【0066】
【表6】
【0067】本発明にしたがって設計されたコンピュー
タ・システムは、ロングおよびショート・フォーマット
VHPTの両方をサポートする。上に議論したように、
ロングおよびショート・フォーマット・ハッシングアル
ゴリズムはハードウェアにて実施されることが好まし
い。当技術分野で知られているように、特定の関数を実
施するのに必要なトランジスタの数を最小化しながら関
数の実行スピードを最小化することが常に望ましい。
【0068】ロングおよびショート・フォーマット・ア
ルゴリズムを検査すると、アルゴリズム間の多数の類似
点が注目されよう。本発明によれば、組み合わされたシ
ョートおよびロング・フォーマット・アルゴリズムは以
下に与えられる。ショートおよびロング・フォーマット
・アルゴリズムを組み合わせることにより両方のアルゴ
リズムを実施するのに必要なトランジスタ数は、どちら
のアルゴリズムの実行スピードにも大きな影響を与える
ことなく最小化される。複合型ハッシングアルゴリズム
を以下に説明する。
【0069】
【表7】
【0070】基本的に、複合型ハッシングアルゴリズム
は、ロングおよびショート・フォーマット・ハッシング
アルゴリズムの共通要素を組合わせ、アルゴリズムの異
なる部分は、page_table_formatが「ロング」に設定さ
れているかどうをテストするIF-THEN-ELSEブロック内で
与えられる。したがって複合型ハッシングアルゴリズム
のライン34において、関数tlb_vhpt_hash_combinedが
呼び出され、その関数に仮想アドレス(VA)および2
4ビットのregion_idが渡される。page_table_formatが
「ロング」に設定されていない場合、region_idが使用
されないことに留意されたい。ライン36では、ショー
ト・フォーマット・ハッシングアルゴリズムのライン3
およびロング・フォーマット・ハッシングアルゴリズム
のライン16と同様に、VAをprefferd_page_sizeで割
ることによってhash_page_numberが計算される。
【0071】ライン37ではpage_table_formatが、
「ロング」に設定されているかどうかを見るためにテス
トされる。設定されている場合には、ロング・フォーマ
ット・ハッシングアルゴリズムのライン17、18、1
9とそれぞれ同様に、hash_index、vhpt_offset、vhpt_
regionがライン38、39、40においてそれぞれ計算
される。page_table_formatが「ロング」に設定されて
いない場合、ショート・フォーマット・ハッシングアル
ゴリズムのライン4、5、6とそれぞれ同様に、hash_i
ndex、vhpt_offset、vhpt_regionがライン43、44、
45においてそれぞれ計算される。その後、pmaskおよ
びvhpt_addrが計算され、ライン47〜52において
(呼び出しルーチンにvhpt_addrを返して)関数が終了
する。ライン47〜52が、ショート・フォーマット・
ハッシング・アルゴリズムのライン7〜12と同一であ
り、またロングフォーマット・ハッシングアルゴリズム
のライン20〜25と同一であることに留意されたい。
【0072】したがって本発明は、(各VHPTエント
リが仮想から物理への変換を一意に識別する)ショート
・フォーマットVHPT、または(格納されたタグと組
み合わされた各最初のVHPTが仮想から物理への変換
を一意に識別する)ロングフォーマットVHPTのいず
れかに対するインデックスを生成することのできる、複
合型ハッシングアルゴリズムを提供する。本発明の複合
型アルゴリズムを実施する者はまた、ロングおよびショ
ート・フォーマットに対して別々に実行される複合型ハ
ッシングアルゴリズムの一部に別の共通点を見つけるで
あろう。例えばライン39、44で実行される左のシフ
トは、page_table_formatが「ロング」に設定されてい
る場合にさらに2ビット位置左にシフトする単一のシフ
ト回路によって実施することができる。同様にライン4
0、45のvhpt_regionの計算は、page_table_base、ま
たはpage_table_formatに基づくVAから、ビット63
〜61を選択するためにマルチプレクサを使用すること
ができる。本発明の複合型ハッシングアルゴリズムを実
施するために論理回路を設計する者は、本発明の実施に
必要なロジックを最小化する他の方法にも気付くであろ
う。
【0073】好ましい実施形態を参照しながら本発明を
述べて来たが、本発明の精神および範囲を逸脱すること
なく、形態および詳細において変更を加えることができ
ることを当業者なら認識するであろう。
【0074】本発明は例として以下の実施態様を含む。
【0075】(1)ページ・テーブルのエントリを参照
するエントリ・アドレスを仮想アドレスから形成する方
法であって、前記仮想アドレスが、領域を識別する活動
領域識別子を参照する領域部分を含み、前記ページ・テ
ーブルが、ロング・フォーマットおよびショート・フォ
ーマットを仮定することができ、前記仮想アドレスをJ
ビット右にシフトすることによって前記仮想アドレスか
らハッシュ・ページ番号を形成するステップであって、
前記仮想アドレスの前記領域部分に関連付けられた領域
の好ましいベージ・サイズが2バイトであるステップ
と、前記ページ・テーブルの前記フォーマットがロング
に設定されている場合に、前記仮想アドレスの前記領域
部分によって参照される前記領域識別子および前記ハッ
シュ・ページ番号を組み合わせることによりハッシュ・
インデックスを形成するステップと、前記ページ・テー
ブルの前記フォーマットがロングに設定されている場合
に、前記ハッシュ・インデックスをKビット左にシフト
することによってテーブル・オフセットを形成するステ
ップであって、各ロング・フォーマット・ページ・テー
ブル・エントリが2バイト長であるステップと、前記
ページ・テーブルの前記フォーマットがショートに設定
されている場合に、前記ハッシュ・インデックスを前記
ハッシュ・ページ番号に等しく設定することによりハッ
シュ・インデックスを形成するステップと、前記ページ
・テーブルの前記フォーマットがショートに設定されて
いる場合に、前記ハッシュ・インデックスをLビット左
にシフトすることによってテーブル・オフセットを形成
するステップであって、各ショート・フォーマット・ペ
ージ・テーブル・エントリが2バイト長であるステッ
プと、前記ページ・テーブルのサイズに基づきマスクを
形成するステップと、前記ページ・テーブルのベース・
アドレスおよび前記マスクを使用して第1アドレス部分
を形成するステップと、前記テーブル・オフセットおよ
び前記マスクを使用して第2アドレス部分を形成するス
テップと、前記第1アドレス部分および前記第2アドレ
ス部分を組み合わせることによって前記エントリ・アド
レスを形成するステップと、を含む方法。
【0076】(2)前記ページ・テーブルの前記フォー
マットがロングに設定されている場合に、前記ページ・
テーブルの前記ベース・アドレスから前記領域部分を抽
出することによってページ・テーブル領域を形成するス
テップと、前記ページ・テーブルの前記フォーマットが
ショートに設定されている場合に、前記仮想アドレスか
ら前記領域部分を抽出することによってページ・テーブ
ル領域を形成するステップとをさらに含む方法であっ
て、前記ページ・テーブル領域、前記第1アドレス部分
および第2アドレス部分を組み合わせることによって前
記エントリ・アドレスを形成するステップであって、前
記ページ・テーブル領域が前記エントリ・アドレスの領
域部分に挿入されるステップを含む前記(1)に記載の
方法。
【0077】(3)前記仮想アドレスからハッシュ・ペ
ージ番号を形成するステップが、前記仮想アドレスの実
装された部分だけをJビット右にシフトすることによっ
て前記仮想アドレスからハッシュ・ページ番号を形成す
るステップであって前記仮想アドレスの前記領域部分に
関連付けられた領域の好ましいページ・サイズが2
イトであるステップを含む前記(1)に記載の方法。
【0078】(4)前記ページ・テーブルの前記フォー
マットがロングに設定されている場合に、前記仮想アド
レスの前記領域部分から参照される前記領域識別子およ
び前記ハッシュ・ページ番号を組み合わせることによっ
てハッシュ・インデックスを形成するステップが、前記
仮想アドレスの前記領域部分と前記ハッシュベージ番号
を組み合わせるステップを含む前記(1)に記載の方
法。
【0079】(5)前記仮想アドレスの前記領域部分と
前記ハッシュ・ページ番号を組み合わせるステップが、
前記仮想アドレスの前記領域部分のビットを前記ハッシ
ュ・ページ番号内に、前記仮想アドレスをJビット右に
シフトすることに基づき空いていると分かっている前記
ハッシュ・ページ番号のビット位置に挿入するステップ
を含む前記(4)に記載の方法。
【0080】(6)前記ページ・テーブルの前記サイズ
に基づきマスクを形成するステップが、前記マスクを2
−1に等しく設定するステップであって、2が前記
ページ・テーブルの前記サイズであるステップを含む前
記(1)に記載の方法。
【0081】(7)前記ページ・テーブルのベース・ア
ドレスおよび前記マスクを使用して第1アドレス部分を
形成するステップが、前記ページ・テーブルの前記ベー
ス・アドレスおよび前記マスクの反転に対して論理積演
算を実行することによって第1アドレス部分を形成する
ステップを含み、前記テーブル・オフセットおよび前記
マスクを使用して第2アドレス部分を形成するステップ
が、前記テーブル・オフセットおよび前記マスクに対し
て論理積演算を実行することによって第2アドレス部分
を形成するステップを含む前記(6)に記載の方法。
【0082】(8)前記第1アドレス部分および前記第
2アドレス部分を組み合わせることによって前記エント
リ・アドレスを形成するステップが、前記第1アドレス
部分および前記第2アドレス部分に対して論理和演算を
実行することによって前記エントリ・アドレスを形成す
るステップを含む前記(1)に記載の方法。
【0083】(9)2バイトの最小ページ・テーブル
・サイズが定義されており、前記ページ・テーブルのベ
ース・アドレスおよび前記マスクを使用して第1アドレ
ス部分を形成するステップが、前記ページ・テーブルの
前記ベース・アドレスの下位Nビットを含まない前記ペ
ージ・テーブルの前記ベース・アドレス、および前記マ
スクの下位Nビットを含まない前記マスクを使用して第
1アドレス部分を形成するステップを含み、前記テーブ
ル・オフセットおよび前記マスクを使用して第2アドレ
ス部分を形成するステップが、前記テーブル・オフセッ
トの下位Nビットを含まない前記テーブル・オフセッ
ト、および前記マスクの下位Nビットを含まない前記マ
スクを使用して第2アドレス部分を形成するステップを
含み、前記第1アドレス部分および前記第2アドレス部
分を組み合わせることによって前記エントリ・アドレス
を形成するステップが、前記第1アドレス部分および前
記第2アドレス部分を組み合わせて結果を形成し、その
結果をNビット左にシフトし、その結果と前記テーブル
・オフセットの下位Nビットを組み合わせることにより
前記エントリ・アドレスを形成するステップを含む前記
(1)に記載の方法。
【0084】(10)ページ・テーブルのエントリを参
照するエントリ・アドレスを仮想アドレスから形成する
方法であって、前記仮想アドレスが、領域を識別する活
動領域識別子を参照する領域部分を含み、前記ページ・
テーブルの最小サイズが2バイトであり、前記ページ
・テーブルが、ロング・フォーマットおよびショート・
フォーマットを仮定することができ、前記仮想アドレス
の実装された部分だけをJビット右にシフトすることに
よって前記仮想アドレスからハッシュ・ページ番号を形
成するステップであって、前記仮想アドレスの前記領域
部分に関連付けられた前記領域の好ましいページ・サイ
ズが2バイトであるステップと、前記ページ・テーブ
ルの前記フォーマットがロングに設定されている場合
に、前記ハッシュ・ページ番号、前記仮想アドレスの前
記領域部分、および前記仮想アドレスの前記領域部分か
ら参照される前記領域識別子を組み合わせることによっ
てハッシュ・インデックスを形成するステップであっ
て、前記仮想アドレスをJビット右にシフトすることに
基づき空いていることが分かっている前記ハッシュ・ペ
ージ番号のビット位置に前記仮想アドレスの前記領域部
分が組み合わされて挿入されるステップと、前記ページ
・テーブルの前記フォーマットがロングに設定されてい
る場合に、前記ハッシュ・インデックスをKビット左に
シフトすることによってテーブル・オフセットを形成す
るステップであって、各ロング・フォーマット・ページ
・テーブル・エントリが2バイト長であるステップ
と、前記ページ・テーブルの前記フォーマットがロング
に設定されている場合に、前記ページ・テーブルのベー
ス・アドレスから前記領域部分を抽出することによって
ページ・テーブル領域を形成するステップと、前記ペー
ジ・テーブルの前記フォーマットがショートに設定され
ている場合に、前記ハッシュ・インデックスを前記ハッ
シュ・ページ番号に等しく設定することによってハッシ
ュ・インデックスを形成するステップと、前記ページ・
テーブルの前記フォーマットがショートに設定されてい
る場合に、前記ハッシュ・インデックスをLビット左に
シフトすることによってテーブル・オフセットを形成す
るステップであって、各ショート・フォーマット・ペー
ジ・テーブル・エントリが2バイト長であるステップ
と、前記ページ・テーブルの前記フォーマットがショー
トに設定されている場合に、前記仮想アドレスから前記
領域部分を抽出することによってページ・テーブル領域
を形成するステップと、2をM乗し1を引いてマスクを
形成するステップであって、2が前記テーブルのサイ
ズであるステップと、前記ページ・テーブルの前記ベー
ス・アドレスの下位Nビットを含まない前記ページ・テ
ーブルの前記ベース・アドレス、および前記マスクの反
転の下位Nビットを含まない前記マスクの反転に対して
論理積演算を実行することによって第1アドレス部分を
形成するステップと、前記テーブル・オフセットの下位
Nビットを含まない前記テーブル・オフセット、および
前記マスクの下位Nビットを含まない前記マスクに対し
て論理積演算を実行することによって第2アドレス部分
を形成するステップと、前記第1アドレス部分および前
記第2アドレス部分に対して論理積演算を実行して第1
の結果を形成し、この第1の結果をNビット左にシフト
して第2の結果を形成し、前記ページ・テーブル領域、
前記第2の結果、および前記テーブル・オフセットの下
位Nビットに対して論理和演算を実行することによって
前記エントリ・アドレスを形成するステップであって、
前記ページ・テーブル領域が前記エントリ・アドレスの
領域部分に挿入されるステップと、を含む方法。
【0085】(11)領域を識別する活動領域識別子を
参照する領域部分を含む仮想アドレスによってアドレス
指定される仮想アドレス空間を定義するアーキテクチャ
を有するコンピュータ・システムであって、ページ・テ
ーブル・ベース・アドレスによって固定されたページ・
テーブルを含むメモリ・ユニットであって、ページ・テ
ーブルがロング・フォーマットおよびショート・フォー
マットを仮定できるメモリ・ユニットと、命令を実行す
るプロセッサであって、仮想アドレスから前記ページ・
テーブルにエントリ・アドレスを生成することができる
ページ・テーブル・エントリ・アドレス生成ユニットで
あるプロセッサと、を有し、前記エントリ・アドレス生
成ユニットは、前記仮想アドレスをJビット右にシフト
することによって前記仮想アドレスからハッシュ・ペー
ジ番号を形成するハッシュ・ページ番号生成回路であっ
て、前記仮想アドレスの前記領域部分に関連付けられた
前記領域の好ましいページ・サイズが2バイトである
ハッシュ・ページ番号生成回路と、前記ページ・テーブ
ルの前記フォーマットがロングに設定されている場合
に、前記ハッシュ・ページ番号と前記仮想アドレスの前
記領域部分から参照される前記領域識別子を組み合わせ
ることによってハッシュ・インデックスを形成し、前記
ページ・テーブルの前記フォーマットがショートに設定
されている場合に、前記ハッシュ・インデックスを前記
ハッシュ・ページ番号に等しく設定することによってハ
ッシュ・インデックスを形成するハッシュ・インデック
ス生成回路と、前記ページ・テーブルの前記フォーマッ
トがロングに設定されている場合に、前記ハッシュ・イ
ンデックスをKビット左にシフトすることによってテー
ブル・オフセットを形成し、ここで各ロング・フォーマ
ット・ページ・テーブル・エントリが2バイト長であ
り、前記ページ・テーブルの前記フォーマットがショー
トに設定されている場合に、前記ハッシュ・インデック
スをLビット左にシフトすることによってテーブル・オ
フセットを形成し、ここで各ショート・フォーマット・
ページ・テーブル・エントリが2バイト長であるテー
ブル・オフセット生成回路と、前記ページ・テーブルの
前記サイズに基づきマスクを形成するマスク生成回路
と、前記ページ・テーブル・ベース・アドレスおよび前
記マスクを使用して第1アドレス部分を形成する第1ア
ドレス部分生成回路と、前記テーブル・オフセットおよ
び前記マスクを使用して第2アドレス部分を形成する第
2アドレス部分生成回路と、前記第1アドレス部分およ
び前記第2アドレス部分を組み合わせることによって前
記エントリ・アドレスを形成するエントリ・アドレス生
成回路と、を含むコンピュータ・システム。
【0086】(12)前記ページ・テーブルの前記フォ
ーマットがロングに設定されている場合に、前記ページ
・テーブル・ベース・アドレスから前記領域部分を抽出
することによってページ・テーブル領域を形成し、前記
ページ・テーブルの前記フォーマットがショートに設定
されている場合に、前記仮想アドレスから前記領域部分
を抽出することによってページ・テーブル領域を形成す
るページ・テーブル領域生成回路と、前記ページ・テー
ブル領域、前記第1アドレス部分および前記第2アドレ
ス部分を組み合わせることによって前記エントリ・アド
レスを形成する前記エントリ・アドレス生成回路であっ
て、前記ページ・テーブル領域が前記エントリ・アドレ
スの領域部分に挿入されるエントリ・アドレス生成回路
とを、前記プロセッサの前記ページ・テーブル・エント
リ・アドレス生成ユニットがさらに備える前記(11)
に記載のコンピュータ・システム。
【0087】(13)前記ハッシュ・ページ番号生成回
路が、前記仮想アドレスの実装されている部分だけをJ
ビット右にシフトすることによって前記仮想アドレスか
ら前記ハッシュ・ページ番号を形成するコンピュータ・
システムであって、前記仮想アドレスの前記領域部分に
関連付けられた前記領域の前記好ましいサイズが2
イトである前記(11)に記載のコンピュータ・システ
ム。
【0088】(14)前記ページ・テーブルの前記フォ
ーマットがロングに設定されている場合に、前記ハッシ
ュ・インデックス生成ユニットが前記ハッシュ・ページ
番号、前記仮想アドレスの前記領域部分から参照される
前記領域識別子、および前記仮想アドレスの前記領域部
分を組み合わせることによって前記ハッシュ・インデッ
クスを形成する前記(11)に記載のコンピュータ・シ
ステム。
【0089】(15)前記ハッシュ・インデックス生成
ユニットが、前記ハッシュ・ページ番号に前記仮想アド
レスの前記領域部分のビットを、前記仮想アドレスをJ
ビット右にシフトすることに基づき空いていることが分
かっている前記ハッシュ・ページ番号のビット位置に挿
入もする前記(14)に記載のコンピュータ・システ
ム。
【0090】(16)前記マスク生成ユニットが、前記
マスクを2−1に等しく設定することによって前記マ
スクを形成するコンピュータ・システムであって、2
が前記ページ・テーブルのサイズである前記(15)に
記載のコンピュータ・システム。
【0091】(17)前記第1アドレス部分生成回路が
前記ページ・テーブル・ベース・アドレスと前記マスク
の反転に対して論理積演算を実行することによって前記
第1アドレス部分を形成し、前記第2アドレス部分生成
回路が前記テーブル・オフセットと前記マスクに対して
論理積演算を実行することによって前記第2アドレス部
分を形成する前記(16)に記載のコンピュータ・シス
テム。
【0092】(18)前記エントリ・アドレス生成回路
が前記第1アドレス部分および前記第2アドレス部分に
対して論理和演算を実行することによって前記エントリ
・アドレスを形成する前記(11)に記載のコンピュー
タ・システム。
【0093】(19)2バイトの最小ページ・テーブ
ル・サイズが定義され、前記第1アドレス部分生成回路
が、前記ページ・テーブル・ベース・アドレスの下位N
ビットを含まない前記ページ・テーブル・ベース・アド
レスおよび前記マスクの下位Nビットを含まない前記マ
スクを使用して前記第1アドレス部分を形成し、前記第
2アドレス生成回路が、前記テーブル・オフセットの下
位Nビットを含まない前記テーブル・オフセット、およ
び前記マスクの下位Nビットを含まない前記マスクを使
用して前記第2アドレス部分を形成し、前記エントリ・
アドレス生成回路が、前記第1アドレス部分および前記
第2アドレス部分を組み合わせて結果を形成し、前記結
果をNビット左にシフトし、前記結果と前記テーブル・
オフセットの下位Nビットを組み合わせることによって
前記エントリ・アドレスを形成する前記(11)に記載
のコンピュータ・システム。
【0094】(20)領域を識別する活動領域識別子を
参照する領域部分を含む仮想アドレスによってアドレス
指定される仮想アドレス空間を定義するアーキテクチャ
を有するコンピュータ・システムであって、ページ・テ
ーブル・ベース・アドレスによって固定されたページ・
テーブルを含むメモリ・ユニットであって、ページ・テ
ーブルがロング・フォーマットおよびショート・フォー
マットを仮定でき、最小サイズが2ビットであるメモ
リ・ユニットと、命令を実行するプロセッサであって、
仮想アドレスからページ・テーブルにエントリ・アドレ
スを生成することができるページ・テーブル・エントリ
・アドレス生成ユニットであるプロセッサとを含み、前
記エントリ・アドレス生成ユニットは、前記仮想アドレ
スの実装されている部分だけをJビット右にシフトする
ことによって前記仮想アドレスからハッシュ・ページ番
号を形成するハッシュ・ページ番号生成回路であって、
前記仮想アドレスの前記領域部分に関連付けられた領域
の好ましいページ・サイズが2バイトであるハッシュ
・ページ番号生成回路と、前記ページ・テーブルの前記
フォーマットがロングに設定されている場合に、前記ハ
ッシュ・ページ番号、前記仮想アドレスの前記領域部
分、および前記仮想アドレスの前記領域部分から参照さ
れる前記領域識別子を組み合わせることによってハッシ
ュ・インデックスを形成し、ここで前記仮想アドレスの
前記領域部分が、前記仮想アドレスをJビット右にシフ
トすること基づき空いていることが分かっている前記ハ
ッシュ・ページ番号のビット位置に組み合わされて挿入
され、前記ページ・テーブルの前記フォーマットがショ
ートに設定されている場合に、前記ハッシュ・インデッ
クスを前記ハッシュ・ページ番号に等しく設定すること
によってハッシュ・インデックスを形成するハッシュ・
インデックス生成回路と、前記ページ・テーブルの前記
フォーマットがロングに設定されている場合に、前記ハ
ッシュ・インデックスをKビット左にシフトすることに
よってテーブル・オフセットを形成し、ここで各ロング
・フォーマット・ページ・テーブル・エントリが2
イト長であり、前記ページ・テーブルの前記フォーマッ
トがショートに設定されている場合に、前記ハッシュ・
インデックスをLビット左にシフトすることによってテ
ーブル・オフセットを形成し、ここで各ショート・フォ
ーマット・ページ・テーブル・エントリが2バイト長
であるテーブル・オフセット生成回路と、前記ページ・
テーブルの前記フォーマットがロングに設定されている
場合に、前記ページ・テーブル・ベース・アドレスから
前記領域部分を抽出することによってページ・テーブル
領域を形成し、ページ・テーブルのフォーマットがショ
ートに設定されている場合に、前記仮想アドレスから前
記領域部分を抽出することによってページ・テーブル領
域を形成するページ・テーブル領域生成回路と、2をM
乗し1を引くことによってマスクを形成するマスク生成
回路であって、2が前記テーブルのサイズであるマス
ク生成回路と、前記ページ・テーブル・ベース・アドレ
スの下位Nビットを含まない前記ページ・テーブル・ベ
ース・アドレス、および前記マスクの反転の下位Nビッ
トを含まない前記マスクの反転に対して論理積演算を実
行することによって第1アドレス部分を形成する第1ア
ドレス部分生成回路と、前記テーブル・オフセットの下
位Nビットを含まない前記テーブル・オフセット、およ
び前記マスクの下位Nビットを含まない前記マスクに対
して論理積演算を実行することによって第2アドレス部
分を形成する第2アドレス部分生成回路と、前記第1ア
ドレス部分および前記第2アドレス部分に対して論理積
演算を実行して第1の結果を形成し、前記第1の結果を
Nビット左にシフトして第2の結果を形成し、前記ペー
ジ・テーブル領域、前記第2の結果、および前記テーブ
ル・オフセットの下位Nビットに対して論理和演算を実
行することによって前記エントリ・アドレスを形成する
エントリ生成回路であって、前記ページ・テーブル領域
が前記エントリ・アドレスの領域部分に挿入されるエン
トリ生成回路と、を含むコンピュータ・システム。
【図面の簡単な説明】
【図1】プログラムの実行中に提示される仮想アドレス
に応答する従来技術の手順を示す図。
【図2】変換索引バッファ(TLB)内のエントリにア
クセスする従来技術の方法を示す図。
【図3】TLBミスの後に、TLBを更新するための物
理ページ情報を取り出す従来技術の方法を示す図。
【図4】ページ・テーブル内にハッシュ・タグが格納さ
れる従来技術のページ・テーブル指定方式を示す図。
【図5】本発明によってサポートされる仮想アドレス指
定方式を示す図。
【図6】本発明のハッシュ関数の適用によってアクセス
することのできる「ショート・フォーマット」仮想ハッ
シングページ・テーブルのエントリを示す図。
【図7】本発明のハッシュ関数の適用によってアクセス
することのできる「ロング・フォーマット」仮想ハッシ
ングページ・テーブルのエントリを示す図。
【符号の説明】
501 仮想アドレス指定方式 502 仮想アドレス 503 仮想領域番号 504 ページ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウイリアム・アール・バイグ アメリカ合衆国95070カリフォルニア州サ ラトガ、ペレゴ・ウェイ 18630 (72)発明者 ステファン・ジー・バーガー アメリカ合衆国95050カリフォルニア州サ ンタ・クララ、フォーブス・アベニュー 2257 (72)発明者 ガリー・エヌ・ハモンド アメリカ合衆国80525コロラド州フォー ト・コリンズ、ソウグラス・コート 5101 (72)発明者 ジェームス・オー・ハイズ アメリカ合衆国95125カリフォルニア州サ ン・ノゼ、キャンベル・アベニュー 1722 (72)発明者 ジェローム・シー・ハック アメリカ合衆国94303カリフォルニア州パ ロ・アルト、タリスマン・ドライブ 851 (72)発明者 ジョナサン・ケー・ロス アメリカ合衆国94087カリフォルニア州サ ニーヴェイル、ローン・ウェイ 974 (72)発明者 スニル・サクシーナ アメリカ合衆国94087カリフォルニア州サ ニーヴェイル、カーロウ・コート 156 (72)発明者 コウイチ・ヤマダ アメリカ合衆国95134カリフォルニア州サ ン・ノゼ、エラン・ヴィレッジ・レーン 371、ナンバー116

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ページ・テーブルのエントリを参照する
    エントリ・アドレスを仮想アドレスから形成する方法で
    あって、前記仮想アドレスが、領域を識別する活動領域
    識別子を参照する領域部分を含み、前記ページ・テーブ
    ルが、ロング・フォーマットおよびショート・フォーマ
    ットを仮定することができ、 前記仮想アドレスをJビット右にシフトすることによっ
    て前記仮想アドレスからハッシュ・ページ番号を形成す
    るステップであって、前記仮想アドレスの前記領域部分
    に関連付けられた領域の好ましいベージ・サイズが2
    バイトであるステップと、 前記ページ・テーブルの前記フォーマットがロングに設
    定されている場合に、前記仮想アドレスの前記領域部分
    によって参照される前記領域識別子および前記ハッシュ
    ・ページ番号を組み合わせることによりハッシュ・イン
    デックスを形成するステップと、 前記ページ・テーブルの前記フォーマットがロングに設
    定されている場合に、前記ハッシュ・インデックスをK
    ビット左にシフトすることによってテーブル・オフセッ
    トを形成するステップであって、各ロング・フォーマッ
    ト・ページ・テーブル・エントリが2バイト長である
    ステップと、 前記ページ・テーブルの前記フォーマットがショートに
    設定されている場合に、前記ハッシュ・インデックスを
    前記ハッシュ・ページ番号に等しく設定することにより
    ハッシュ・インデックスを形成するステップと、 前記ページ・テーブルの前記フォーマットがショートに
    設定されている場合に、前記ハッシュ・インデックスを
    Lビット左にシフトすることによってテーブル・オフセ
    ットを形成するステップであって、各ショート・フォー
    マット・ページ・テーブル・エントリが2バイト長で
    あるステップと、 前記ページ・テーブルのサイズに基づきマスクを形成す
    るステップと、 前記ページ・テーブルのベース・アドレスおよび前記マ
    スクを使用して第1アドレス部分を形成するステップ
    と、 前記テーブル・オフセットおよび前記マスクを使用して
    第2アドレス部分を形成するステップと、 前記第1アドレス部分および前記第2アドレス部分を組
    み合わせることによって前記エントリ・アドレスを形成
    するステップと、を含む方法。
JP2000329869A 1999-10-31 2000-10-30 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置 Expired - Fee Related JP4268332B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/430793 1999-10-31
US09/430,793 US6393544B1 (en) 1999-10-31 1999-10-31 Method and apparatus for calculating a page table index from a virtual address

Publications (3)

Publication Number Publication Date
JP2001175536A true JP2001175536A (ja) 2001-06-29
JP2001175536A5 JP2001175536A5 (ja) 2007-08-16
JP4268332B2 JP4268332B2 (ja) 2009-05-27

Family

ID=23709057

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000329869A Expired - Fee Related JP4268332B2 (ja) 1999-10-31 2000-10-30 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置

Country Status (5)

Country Link
US (1) US6393544B1 (ja)
EP (1) EP1096385B1 (ja)
JP (1) JP4268332B2 (ja)
CN (1) CN1186729C (ja)
DE (1) DE60003273T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
JP2006350741A (ja) * 2005-06-16 2006-12-28 Nippon Telegr & Teleph Corp <Ntt> データベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラム

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725366B1 (en) * 2000-09-07 2004-04-20 International Business Machines, Corporation System and method for 32 bit code branching to 64 bit targets
US6947970B2 (en) * 2000-12-19 2005-09-20 Intel Corporation Method and apparatus for multilevel translation and protection table
US6671791B1 (en) * 2001-06-15 2003-12-30 Advanced Micro Devices, Inc. Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms
US6807616B1 (en) * 2001-08-09 2004-10-19 Advanced Micro Devices, Inc. Memory address checking in a proccesor that support both a segmented and a unsegmented address space
US6697276B1 (en) 2002-02-01 2004-02-24 Netlogic Microsystems, Inc. Content addressable memory device
US7382637B1 (en) 2002-02-01 2008-06-03 Netlogic Microsystems, Inc. Block-writable content addressable memory device
US6934796B1 (en) * 2002-02-01 2005-08-23 Netlogic Microsystems, Inc. Content addressable memory with hashing function
US7937554B2 (en) * 2002-11-12 2011-05-03 Broadcom Corporation System and method for managing memory
US7093099B2 (en) * 2002-12-12 2006-08-15 Alacritech, Inc. Native lookup instruction for file-access processor searching a three-level lookup cache for variable-length keys
US7143272B2 (en) * 2002-12-27 2006-11-28 Intel Corporation Using computation histories to make predictions
US7069268B1 (en) 2003-01-13 2006-06-27 Cisco Technology, Inc. System and method for identifying data using parallel hashing
US6983355B2 (en) * 2003-06-09 2006-01-03 International Business Machines Corporation Virtualization of physical storage using size optimized hierarchical tables
US7581010B2 (en) * 2003-07-14 2009-08-25 Microsoft Corporation Virtual connectivity with local connection translation
US7509473B2 (en) * 2003-08-27 2009-03-24 Adaptec, Inc. Segmented storage system mapping
US7720930B2 (en) * 2003-12-30 2010-05-18 Intel Corporation Systems and methods using NIC-based prefetching for host TCP context lookup
US7272654B1 (en) 2004-03-04 2007-09-18 Sandbox Networks, Inc. Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
US7266670B2 (en) * 2004-06-04 2007-09-04 Faraday Technology Corp. Method of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
US7685400B2 (en) * 2004-12-15 2010-03-23 International Business Machines Corporation Storage of data blocks of logical volumes in a virtual disk storage subsystem
US7886126B2 (en) 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7657725B2 (en) * 2005-06-24 2010-02-02 Sigmatel, Inc. Integrated circuit with memory-less page table
FR2902208B1 (fr) * 2006-06-12 2009-07-17 Touret Richard Procede de structuration polymorphe et systemique de la memoire associative via un gestionnaire tiers
US20080021865A1 (en) * 2006-07-20 2008-01-24 International Business Machines Corporation Method, system, and computer program product for dynamically determining data placement
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US9690790B2 (en) 2007-03-05 2017-06-27 Dell Software Inc. Method and apparatus for efficiently merging, storing and retrieving incremental data
CN101645043B (zh) * 2009-09-08 2012-01-04 成都市华为赛门铁克科技有限公司 写数据的方法、读数据的方法及存储设备
US8473684B2 (en) * 2009-12-22 2013-06-25 International Business Machines Corporation Delayed replacement of cache entries
US8862859B2 (en) * 2010-05-07 2014-10-14 International Business Machines Corporation Efficient support of multiple page size segments
US8745307B2 (en) 2010-05-13 2014-06-03 International Business Machines Corporation Multiple page size segment encoding
US8478740B2 (en) * 2010-12-16 2013-07-02 Microsoft Corporation Deriving document similarity indices
JP5496411B2 (ja) * 2011-02-25 2014-05-21 三菱電機株式会社 制御装置、制御システムおよび通信方法
GB2498571A (en) 2012-01-20 2013-07-24 Intellectual Ventures Holding 81 Llc Base station able to communicate with a second device type on a narrow subset frequency band contained within a first main band
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US9355032B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Supporting multiple types of guests by a hypervisor
US9280488B2 (en) 2012-10-08 2016-03-08 International Business Machines Corporation Asymmetric co-existent address translation structure formats
US9740624B2 (en) 2012-10-08 2017-08-22 International Business Machines Corporation Selectable address translation mechanisms within a partition
US9600419B2 (en) 2012-10-08 2017-03-21 International Business Machines Corporation Selectable address translation mechanisms
US9355040B2 (en) 2012-10-08 2016-05-31 International Business Machines Corporation Adjunct component to provide full virtualization using paravirtualized hypervisors
US9348757B2 (en) 2012-10-08 2016-05-24 International Business Machines Corporation System supporting multiple partitions with differing translation formats
US10216642B2 (en) * 2013-03-15 2019-02-26 International Business Machines Corporation Hardware-based pre-page walk virtual address transformation where the virtual address is shifted by current page size and a minimum page size
CN103942161B (zh) * 2014-04-24 2017-02-15 杭州冰特科技有限公司 只读缓存的去冗余系统及方法以及缓存的去冗余方法
JP6406283B2 (ja) * 2016-03-01 2018-10-17 日本電気株式会社 ストレージ装置およびストレージ方法
US10528353B2 (en) 2016-05-24 2020-01-07 International Business Machines Corporation Generating a mask vector for determining a processor instruction address using an instruction tag in a multi-slice processor
US10467008B2 (en) 2016-05-31 2019-11-05 International Business Machines Corporation Identifying an effective address (EA) using an interrupt instruction tag (ITAG) in a multi-slice processor
US10248555B2 (en) 2016-05-31 2019-04-02 International Business Machines Corporation Managing an effective address table in a multi-slice processor
US11341058B2 (en) * 2018-07-26 2022-05-24 Vmware Inc. Handling software page faults using data from hierarchical data structures
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US20200073822A1 (en) * 2018-08-30 2020-03-05 Micron Technology, Inc. Security Configuration for Memory Address Translation from Object Specific Virtual Address Spaces to a Physical Address Space
US11544069B2 (en) 2018-10-25 2023-01-03 Micron Technology, Inc. Universal pointers for data exchange in a computer system having independent processors
CN110365806B (zh) * 2019-06-06 2022-05-10 无线生活(杭州)信息科技有限公司 网址转换方法及装置
CN113726661B (zh) * 2021-08-27 2022-10-18 西安微电子技术研究所 一种高性能低功耗的路由哈希器及其控制方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5649142A (en) * 1991-10-24 1997-07-15 Intel Corporation Method and apparatus for translating addresses using mask and replacement value registers and for accessing a service routine in response to a page fault
US5826057A (en) * 1992-01-16 1998-10-20 Kabushiki Kaisha Toshiba Method for managing virtual address space at improved space utilization efficiency
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
DE4410060B4 (de) 1993-04-08 2006-02-09 Hewlett-Packard Development Co., L.P., Houston Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
US5630087A (en) * 1994-11-02 1997-05-13 Sun Microsystems, Inc. Apparatus and method for efficient sharing of virtual memory translations
US6079004A (en) * 1995-01-27 2000-06-20 International Business Machines Corp. Method of indexing a TLB using a routing code in a virtual address
US5946716A (en) * 1996-05-30 1999-08-31 Hewlett-Packard Company Sectored virtual memory management system and translation look-aside buffer (TLB) for the same
AUPO194696A0 (en) * 1996-08-28 1996-09-19 Canon Information Systems Research Australia Pty Ltd A method of efficiently updating hashed page tables
US5809563A (en) * 1996-11-12 1998-09-15 Institute For The Development Of Emerging Architectures, Llc Method and apparatus utilizing a region based page table walk bit
US5918251A (en) * 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US6088780A (en) * 1997-03-31 2000-07-11 Institute For The Development Of Emerging Architecture, L.L.C. Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US6012132A (en) * 1997-03-31 2000-01-04 Intel Corporation Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
US6557121B1 (en) 1997-03-31 2003-04-29 International Business Machines Corporation Method and system for fault isolation for PCI bus errors

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
JP2006350741A (ja) * 2005-06-16 2006-12-28 Nippon Telegr & Teleph Corp <Ntt> データベース管理装置、分散データベース管理システム、分散データベース管理方法および分散データベース管理プログラム
JP4573710B2 (ja) * 2005-06-16 2010-11-04 日本電信電話株式会社 データベース管理装置、データベース管理方法及びデータベース管理プログラム

Also Published As

Publication number Publication date
US6393544B1 (en) 2002-05-21
JP4268332B2 (ja) 2009-05-27
DE60003273T2 (de) 2004-05-06
DE60003273D1 (de) 2003-07-17
EP1096385B1 (en) 2003-06-11
CN1296224A (zh) 2001-05-23
EP1096385A1 (en) 2001-05-02
CN1186729C (zh) 2005-01-26

Similar Documents

Publication Publication Date Title
JP4268332B2 (ja) 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置
JP3640978B2 (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
US5918251A (en) Method and apparatus for preloading different default address translation attributes
US6216214B1 (en) Apparatus and method for a virtual hashed page table
EP0642086B1 (en) Virtual address to physical address translation cache that supports multiple page sizes
US6088780A (en) Page table walker that uses at least one of a default page size and a page size selected for a virtual address space to position a sliding field in a virtual address
US6230248B1 (en) Method and apparatus for pre-validating regions in a virtual addressing scheme
US6012132A (en) Method and apparatus for implementing a page table walker that uses a sliding field in the virtual addresses to identify entries in a page table
EP0610618B1 (en) Method and apparatus for address translation
US7809921B2 (en) Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries
US5123101A (en) Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
US5230045A (en) Multiple address space system including address translator for receiving virtual addresses from bus and providing real addresses on the bus
US6145064A (en) Method of efficiently updating hashed page tables
US5918250A (en) Method and apparatus for preloading default address translation attributes
US7089398B2 (en) Address translation using a page size tag
US20140040529A1 (en) Translation table control
JPH04232551A (ja) 多重仮想アドレス変換方法及び装置
JPH0628262A (ja) ルックアサイドバッファおよび仮想から物理的へアドレスを高速に翻訳する方法
GB2395307A (en) Virtual to physical memory mapping in network interfaces
WO1995016963A1 (en) Variable page size translation lookaside buffer
JPH04320553A (ja) アドレス変換機構
JPH08212136A (ja) 仮想メモリ変換処理を効率的に共有する方法及び装置
JP2010134956A (ja) 状況切換え環境中におけるアドレス変換技術

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070629

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070629

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080917

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081203

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090114

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: 20090127

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: 20090220

R150 Certificate of patent or registration of utility model

Ref document number: 4268332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120227

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130227

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140227

Year of fee payment: 5

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees