JPH07182240A - アドレス変換を行う装置及び方法 - Google Patents

アドレス変換を行う装置及び方法

Info

Publication number
JPH07182240A
JPH07182240A JP6279699A JP27969994A JPH07182240A JP H07182240 A JPH07182240 A JP H07182240A JP 6279699 A JP6279699 A JP 6279699A JP 27969994 A JP27969994 A JP 27969994A JP H07182240 A JPH07182240 A JP H07182240A
Authority
JP
Japan
Prior art keywords
translation
entry
block
virtual address
address
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
JP6279699A
Other languages
English (en)
Other versions
JP3577575B2 (ja
Inventor
Yousef A Khalidi
ユーゼフ・エイ・カーリディ
Madhusudhan Talluri
マドゥ−サドハン・タルーリ
Dock G Williams
ドック・ジイ・ウィリアムズ
Vikram P Joshi
ヴィクラム・ピイ・ジョシ
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH07182240A publication Critical patent/JPH07182240A/ja
Application granted granted Critical
Publication of JP3577575B2 publication Critical patent/JP3577575B2/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
    • 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)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】 仮想アドレスと物理アドレスとの間における
変換を行い、同時に複数ページ・サイズを支援する変換
メカニズムを実現するための方法及び装置を提供する。 【構成】 物理メモリの連続部分を記述するための少な
くとも1つのページ・フレーム記述子(PFD)と、仮
想メモリの連続部分を記述するための少なくとも1つの
変換ブロック(TB)と、ハッシュ・リストとを備えて
いる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ・システ
ムに関するものである。とりわけ、本発明は、仮想メモ
リ・コンピュータ・システムにおける仮想アドレスと物
理アドレスとの変換に関するものである。
【0002】
【従来の技術】仮想メモリは、アプリケーションに対し
て、該システムが、大形で、一様な一次メモリ(実際に
は、より小型で、断片化され、かつ、ハード・ディスク
のような二次記憶装置によって部分的にシミュレートさ
れるか、あるいは、そのいずれかである)を提供するも
のであるかのように思わせることが可能な技法である。
アプリケーションは、特殊なハードウェアによって物理
アドレスに変換(マッピング)される仮想アドレスを介
してメモリにアクセスする。ページング及びセグメンテ
ーションは、仮想メモリの一般的な2つの実施手段であ
る。
【0003】ページング技法を利用して仮想メモリを実
施する場合、仮想アドレス空間は、ページと呼ばれるい
くつかの固定サイズのブロックに分割され、各ページ
は、該システムにおいて利用可能な、同様のサイズの物
理ページのうち任意のページにマッピングすることが可
能である。一般に、メモリ管理ユニット(MMU)また
はページ式メモリ管理ユニット(PMMU)のような特
殊メモリ管理ハードウェアが、仮想アドレスから物理ア
ドレスへのアドレス変換を実施する。このタイプのメモ
リ管理では、物理(システム)メモリに存在しないデー
タにアクセスを試みると、PMMUが中央演算処理装置
(CPU)に対して割り込み信号を送り、オペレーティ
ング・システムは、アプリケーションには、「分からな
い」ようにして、他の記憶装置(ハード・ディスクのよ
うな)からのデータを転送する。
【0004】仮想メモリ案の1つでは、仮想メモリ空間
から物理メモリ空間へのマッピングは1回だけしか行わ
れない。一方、他の実施例では、いくつかのアドレス空
間が設けられ、それぞれ、物理アドレス空間に対してそ
れ自体のマッピングを行うことが可能である。従って、
第1のプロセスでは、第1の仮想アドレスを利用して所
定の物理アドレスを参照することが可能であり、マルチ
プロセッサ環境において、同じCPUまたは異なるCP
Uで実行される第2のプロセスでは、第2の仮想アドレ
スによって、前記所定の物理アドレスを参照することに
なる。こうした場合、同じ物理アドレスに対応する2つ
の仮想アドレスは、「エイリアス」と呼ばれる。
【0005】CPUには、2つ以上のサイズの仮想ペー
ジを利用して、操作可能なものもある。このため、マッ
ピングされる仮想アドレス空間の要求に最も良く合致す
るように、マッピングに利用される仮想ページ・サイズ
を選択することが可能になる。大きいページを利用する
場合、MMUにおける単一変換エントリを利用して、大
量の仮想メモリを変換することが可能である。従って、
MMUが必要とする資源が少なくなれば、結果として、
性能が向上することになる。しかし、大きいページを利
用すると、小さいページが用いられる場合には遭遇する
ことのない、メモリの断片化問題が生じることになる。
【0006】
【発明が解決しようとする課題】本発明の目的は、物理
メモリにマッピングされる仮想メモリを備えたコンピュ
ータ・システムのためにアドレス変換を行うための新規
な方法および装置を提供することにある。
【0007】
【課題を解決するための手段】その装置は、物理メモリ
の連続部分を記述するための少なくとも1つのページ・
フレーム記述子と、仮想メモリの連続部分を記述するた
めの少なくとも1つの変換ブロックと、ハッシュ・リス
トを備えている。
【0008】各ページ・フレーム記述子は、基底物理ア
ドレス、基底物理アドレスから始まる物理アドレス範
囲、及び、変換エントリ・ポインタを備えている。
【0009】各変換ブロックは、基底仮想アドレス、基
底仮想アドレスから始まる仮想アドレス範囲、及び、変
換ブロックの仮想アドレス範囲のマッピングに利用され
るページ・サイズを備えている。各変換ブロックは、さ
らに、ヘッダ、及び、少なくとも1つの変換エントリも
備えている。各ヘッダは変換ブロック・ポインタを備
え、各変換エントリは逆方向ポインタを備えている。変
換ブロックの各変換エントリは、変換ブロックの仮想ア
ドレス範囲における異なる等サイズの変換範囲に対応し
ている。
【0010】ある変換エントリの変換範囲が物理メモリ
・ページ・フレームによって指示される場合、変換エン
トリの逆方向ポインタが対応するページ・フレームを記
述したページ・フレーム記述子を指示し、このページ・
フレーム記述子の変換エントリ・ポインタが、変換エン
トリを指示する。
【0011】ハッシュ・リストは、複数のハッシュ・エ
ントリを備えている。各ハッシュ・エントリには、変換
ヘッダ・ポインタ、及び、ハッシュ・エントリに固有の
関連するハッシュ・インデックスが設けられている。少
なくとも1つの変換ブロックから成る仮想アドレス変換
連鎖が存在している場合、仮想アドレス変換連鎖の各変
換ブロック毎に仮想アドレス範囲があり、仮想アドレス
変換連鎖の変換ブロックにおける仮想アドレス範囲の各
仮想アドレスにハッシングを施すことによって、同じハ
ッシュ・エントリのハッシュ・インデックスを得ること
が可能になる。ハッシュ・インデックスが得られたハッ
シュ・エントリの変換ヘッダ・ポインタは、仮想アドレ
ス変換連鎖における第1の変換ブロックを指示する。仮
想アドレス変換連鎖の中に、2つ以上の変換ブロックが
ある場合、第1の変換ブロックの変換ブロック・ポイン
タが、仮想アドレス変換連鎖の第2の変換ブロックを指
示し、第1の変換ブロックを除く仮想アドレス変換連鎖
の全ての変換ブロックが、仮想アドレス変換連鎖におけ
る異なる変換ブロックの変換ブロック・ポインタによっ
て指示される。
【0012】
【実施例】仮想アドレスと物理アドレスとの間における
変換を行い、同時に複数ページ・サイズを支援する変換
メカニズムを実現するための方法及び装置が開示され
る。例えば、仮想アドレスが与えられると、変換メカニ
ズムは、対応する物理アドレス(存在すれば)を提供す
る。代わりに、物理アドレスが与えられると、変換メカ
ニズムは、対応する仮想アドレス(存在すれば)を提供
する。エイリアシングが可能な場合、変換メカニズム
は、特定の物理アドレスに対する全ての仮想アドレスを
提供する。変換メカニズムは、多様なサイズのページの
1つによって、物理メモリの一部をマッピングできるよ
うにすることによって、複数ページ・サイズを支援す
る。変換メカニズムは、また、さまざまなサイズのペー
ジによって、大きい物理ページの多重マッピングを行え
るようにすることによって、複数ページ・サイズを支援
する。
【0013】以下の解説では、説明のため、本発明の完
全な理解が得られるように、特定の数、材料、及び、構
成が示される。ただし、当該技術の熟練者には明らかな
ように、特定の細部にこだわらなくても、本発明の実施
は可能である。他の例においては、本発明が不必要に曖
昧にならないようにするため、周知のシステムは、略図
またはブロック図の形で示される。
【0014】ここで、図1を参照すると、複数ページ・
サイズを支援するアドレス変換メカニズムを利用した、
仮想メモリ・コンピュータ・システムの実施例が示され
ている。アドレス変換メカニズムは、変換すべき仮想ア
ドレス(VA)が与えられると、対応する物理アドレス
(PA)が存在する場合には、仮想アドレスを対応する
物理アドレスに変換する。アドレス変換メカニズムは、
変換すべき物理アドレスが与えられると、対応する仮想
アドレスが存在する場合には、物理アドレスを対応する
仮想アドレスに変換する。エイリアシングが可能な場
合、アドレス変換メカニズムは、与えられた物理アドレ
スに対応する全ての仮想アドレスを見つけることが可能
である。
【0015】図1のコンピュータ・システム100にお
いて、中央演算処理装置(CPU)110は、メモリ・
バス120のようなメモリ相互接続手段によって、一次
メモリ130及び二次メモリ140に結合されている。
コンピュータ・システム100の実施例の場合、中央演
算処理装置110は、二次メモリ140に対するアクセ
スよりも速く、一次メモリ130にアクセスすることが
可能である。しかし、二次メモリ140は、一次メモリ
130よりもはるかに大きい。従って、二次メモリ14
0は、一次メモリ130よりも多くのデータを保持する
ことが可能である。この実施例の場合、二次メモリ14
0は、ページに分割され、ページは、中央演算処理装置
110が必要とするところに応じて、一次メモリ130
に対してスワップ・インまたはスワップ・アウトされ
る。こうして、中央演算処理装置110は、あたかも、
一次メモリ130の速度で、二次メモリ140の全ての
メモリにアクセスできるかのように、ほぼ同じ速度で、
一次メモリ130において利用可能なメモリより多くの
メモリにアクセスすることが可能になる。
【0016】従って、中央演算処理装置110が、デー
タを必要とする場合、まず、一次メモリ130をチェッ
クして、一次メモリ130に、必要なデータを納めたペ
ージが含まれているか否かを確認する。一次メモリ13
0が必要なデータを備えていない場合、必要なデータを
納めたページは、二次メモリ140から一次メモリ13
0にコピーされるので、中央演算装置110によるアク
セスが可能になる。
【0017】中央演算処理装置110内において実行さ
れるプロセスがデータを必要とする場合、該プロセス
は、仮想アドレスを利用して、必要なデータを指定する
ことになる。アドレス変換バッファ(TLB)150
は、最近、または、頻繁に用いられる仮想アドレスの小
集合に関する仮想アドレス・物理アドレス変換を納めた
ハードウェア装置である。TLB150は、ハードウェ
アで実施されるので、要求された仮想アドレスの物理ア
ドレス変換を中央演算処理装置110に対して迅速に供
給することが可能である。ただし、TLB150には、
可能性のある仮想アドレスの小集合に関する変換だけし
か含まれていない。TLB150が、中央演算処理装置
110の要求するアドレス変換を提供することができな
い場合、別の変換メカニズムを利用して、要求されたア
ドレス変換を行うことになる。
【0018】保守のため、物理アドレスから対応する全
ての仮想アドレスに変換することも可能である。例え
ば、ページが物理メモリから消去された場合、消去され
たページを指示している全ての仮想アドレスを見つける
ことができるので、対応する全ての変換テーブル・エン
トリを無効にすることが可能である。また、物理アドレ
スから仮想アドレスに変換する計算ステップが不要にな
る場合もあるが、やはり、特定の物理ページを指示する
仮想ページの位置指定を行う必要はある。例えば、特定
の物理アドレスを納めた特定の物理ページを指示する、
1つ以上の仮想ページに関連した1つ以上の属性を検査
し、あるいは、変更することが必要になる可能性があ
る。
【0019】簡略化のため、今後明らかになるように、
物理アドレス・仮想アドレス変換を実施するための基準
を作成する毎に、該基準には、特定の物理アドレスを含
む特定の物理ページを指示する仮想ページの識別は行わ
れるが、特定の物理アドレスに対応する仮想アドレスを
実際に計算するステップは実施されない事例が含まれ
る。同様に、仮想アドレスから物理アドレスへの変換を
計算するステップは、不要であるが、特定の仮想アドレ
スを指示する変換エントリまたはページ・フレーム記述
子の位置を指定することは必要になる場合もある(例え
ば、1つ以上の属性を検査または変更するため)。やは
り、簡略化のため、今後明らかになるように、仮想アド
レス・物理アドレス変換を実施するための基準を作成す
る毎に、該基準には、特定の仮想アドレスに対応する物
理アドレスを含む物理ページの識別は行われるが、特定
の仮想アドレスに対応する物理アドレスを実際に計算す
るステップは実施されない事例が含まれる。
【0020】次に、図2を参照すると、本発明の実施例
の1つに関する階層構造が示されている。図2には、3
レベルの変換階層が示されている。CPUが、仮想アド
レスから物理アドレスへの変換を要求する毎に、レベル
Iによる変換が試みられる。図2において、レベルI
は、アドレス変換バッファ(TLB)220のようなメ
モリ管理ユニット(MMU)として示されている。上述
のように、レベルIは、一般に、ハードウェアで実施さ
れ、小数のアドレスについて高速変換を行うことを特徴
とする。レベルIにおいて変換可能なアドレス集合は、
必要とされる可能性の最も高い変換が、レベルIにおい
て確実に利用できるようにするため、変換集合の構成要
素が更新されるのに応じて、動的に変化する。
【0021】レベルIIの例としては、変換記憶バッフ
ァ(TSB)がある。本発明の実施例の場合、TSB
は、一次メモリによって実施される。従って、TLB2
20ほど速くはないが、TSBは、TLB220よりも
大きい変換構成要素の集合を保持することが可能であ
る。従って、TLB220が、変換を提供できない(T
LB「ミス」)場合、TSBをテストして、必要な変換
がTSBに記憶されているか否かが確認される。その変
換がTSBによって提供し得る(TSB「ヒット」)場
合には、該変換は、CPU及びアドレス変換バッファ2
20に提供される。一方、TSBが変換を提供できない
(TSB「ミス」)場合には、レベルIIIの変換が実
施される。
【0022】レベルIIIの変換は、レベルIIの変換
よりも遅く、総合的であることを特徴とする。一般に、
仮想メモリ・オペレーティング・システムは、データ記
憶装置に記憶された大形のソフトウェア変換テーブル
(BST)280を提供する。例えば、データ記憶装置
は、一次メモリ、二次メモリ、または、一次メモリと二
次メモリの組み合わせとして設けることが可能である。
BST280は、仮想アドレス空間から物理アドレス空
間への全ての存在する変換を含んでいる。従って、レベ
ルIIIの変換は、比較的長時間を要するが、存在すれ
ば、変換を見つけ出すことができる。レベルIIIの変
換を行うと、その結果は、CPU、変換記憶バッファ、
及び、アドレス変換バッファ220に提供される。
【0023】図2を要約すると、レベルIの変換は、C
PUがTLB220のようなレベルIのトランスレータ
に対する仮想アドレス要求(210)を発生すると実施
される。レベルIの変換がうまくゆけば、レベルIのト
ランスレータは、要求された仮想アドレス210に対応
する要求された物理アドレス(230)を提供する。
【0024】レベルIの変換が失敗すると、TSBのよ
うなレベルIIのトランスレータに対して、仮想アドレ
ス要求240が行われる。レベルIIの変換がうまくゆ
けば、仮想アドレス要求240に対応する物理アドレス
260が、レベルIのトランスレータに戻され、さらに
は、CPUに戻される(物理アドレス230)。
【0025】一方、レベルIIの変換が失敗すると、B
ST280のようなレベルIIIのトランスレータに仮
想アドレス要求270が送られる。BST280は、総
合的であるため、物理アドレス変換が存在すれば、物理
アドレス290としてレベルIIのトランスレータ(T
SB)に戻される。変換は、物理アドレス260として
レベルIのトランスレータ(TLB220)にも提供さ
れ、最終的には、物理アドレス230としてCPUに供
給される。
【0026】本発明の解説は、3レベルの変換を含む実
施例によって行っているが、よりレベルの多い、また
は、少ない変換を含む代替実施例も存在する。さらに、
本発明の解説は、BST280のようなレベルIIIの
大形ソフトウェア変換テーブルの実施例によって行って
いるが、本発明の代替実施例には、解説の変換メカニズ
ムが、レベルIのトランスレータとして、あるいは、よ
り可能性が高いのは、レベルIIのトランスレータとし
て利用されるものもある。
【0027】次に、図3を参照すると、物理アドレスと
仮想アドレスとの関係が示されている。図3には、さら
に、仮想アドレス・物理アドレス変換を実施する際に用
いられる、ハッシュ・インデックスの導出が示されてい
る。図3において、物理アドレス310は、物理ページ
・オフセット320と物理ページ数330から構成され
るものとして示されている。物理ページは物理メモリの
連続部分である。概念としては、物理ページは、「行」
の集合に分割されるものとみなすことが可能であり、こ
の場合、行は、個々にアドレス指定可能な最小のデータ
集合を表している。物理ページ・オフセット320は、
所定の物理ページ内においてアドレス指定されている行
を指定する。物理ページ数330は、物理ページ集合の
うちからどのページが選択されているかを指定する。
【0028】物理ページは、さまざまなサイズを有する
ことが可能である。大きいページは、小さいページより
も多くの行を備えることになる。このため、所定の量の
物理メモリは、小さいページに分割するよりも、大きい
ページに分割したほうがページ数を少なくすることがで
きる。従って、小さいページの場合より、大きいページ
のほうが、物理ページ・オフセット320に充当される
物理アドレス310のビット数が多くなる。相応じて、
小さいページの場合より、大きいページのほうが、物理
ページ数330に充当される物理アドレス310のビッ
ト数が少なくなる。
【0029】所定のページにおける行数が2の整数乗に
なるように制約が加えられており、所定のページ・サイ
ズに関する物理ページの総数も、やはり、2の整数乗に
なるように制約が加えられている場合、物理アドレス3
10は、K+Lビットの2進数として表すことができる
が、ここで、物理アドレス310のKビットは、物理ペ
ージ数330を指定するために利用され、物理アドレス
310のLビットは、物理ページ・オフセット320を
指定するために利用される。
【0030】物理アドレス範囲は、1つの大きいページ
またはいくつかの小さいページであるかのように取り扱
うことが可能である。実施例の1つでは、40ビットの
物理アドレス空間が用いられる。この物理アドレス空間
は、サイズが8KBの小さいページと、サイズが64K
Bの大きいページを利用して、マッピングされる。この
実施例の場合、物理アドレス310は40ビットの2進
数である。小さい(8KB)ページがアドレス指定され
ている場合、物理アドレス310の13の最下位ビット
(LSb)(213=8K)が、物理ページ・オフセット
320を表すことになる。物理アドレス310の27の
上位ビット(MSb)が、所定の小さいページに関する
物理ページ数330を表すことになる。一方、大きい
(64KB)のページが利用されている場合、物理アド
レス310の16の下位ビット(LSb)(216=64
K)が、大きいページに関する物理ページ・オフセット
320を提供するために利用されることになる。大きい
ページの場合、物理アドレス310の24のMSbを利
用して、所定の物理ページに関する所定の物理ページ数
が指定されることになる。
【0031】次に、仮想アドレス340に参照すると、
仮想アドレス340は、物理アドレス310の分割と同
様のやり方で、仮想ページ・オフセット350及び仮想
ページ数360に分割されることが分かる。仮想アドレ
ス340は、多くの異なるページ・サイズによってマッ
ピングすることが可能であるが、所定の仮想アドレスに
関するページ・サイズの選択が済むと、所定の仮想アド
レスは、いつでも、1つのページ・サイズだけでマッピ
ングすることが可能になる。所定のページ・サイズに関
して、仮想ページ・オフセット350は、対応する物理
ページ・オフセット320と等しくなる。仮想メモリ技
法は、一般に、大きい仮想アドレス空間から小さい物理
アドレス空間へのマッピングに利用されるので、所定の
ページ・サイズに関して、通常は、物理ページよりも仮
想ページのほうが多くなる。
【0032】実施例では、仮想アドレス340は264
サイズの仮想アドレス・スペースを表す64ビットの2
進数である。サイズが8KBの小ページが用いられる場
合は、仮想ページ・オフセット350は仮想アドレス3
40の13のLSbとなり、仮想ページ数360は仮想
アドレス340の51のMSbとなる。同様にして、サ
イズが64KBの大ページが用いられる場合は、仮想ペ
ージ・オフセット350は仮想アドレス340の16の
LSbとなり、仮想ページ数360は、仮想アドレス3
40の48のMSbとなる。以後の詳細な説明では、別
途の注記がなされていない限り、物理アドレス・スペー
スが40ビットであり、仮想アドレス・スペースが64
ビットであり、大小のページ・サイズがそれぞれ64K
Bと8KBである実施例を説明する。別の実施例では、
仮想アドレスと物理アドレス、及び大小のページについ
て異なるサイズのものを用いることができる。更に、別
の実施例では、2つ以上のサイズを用いることができ
る。その他に、更に別の実施例では、仮想アドレス・ス
ペースよりも物理アドレスのスペースの方が大きい。
【0033】一実施例では、図5を参照して後述する方
法で、仮想アドレス340のM+Nの最下位ビットから
Mの上位ビットを抜き出すことによってハッシュ・リス
ト・インデックスが作成される。その後、ハッシュ・リ
スト・インデックスは、仮想アドレス340を対応する
物理アドレス310に変換する場合に、ハッシュ・テー
ブルにインデックス付けするために使用される。
【0034】ここで図4を参照すると、サイズが異なる
3つのページの、メモリの一つの連続部分へのマッピン
グが示されている。図4では、大ページ412は物理メ
モリの連続部分をマッピングする。大ページ412は一
連の行から成っているものとみなすことができ、ページ
の各行は大ページ412の“上部”からのオフセットに
よって特定することができる。このような場合、大ペー
ジ・オフセット410は、ページ内の個々の行を特定す
るために用いられるフィールドである。すなわち、例え
ば、大ページ412が16Kの行から成っているものと
すると、大ページ・オフセット410は14ビットのフ
ィールド(214=16K)となろう。
【0035】あるいは、大ページ412によってマッピ
ングされたメモリの同一部分を、2つの中間サイズのペ
ージによってマッピングすることも可能であり、その場
合、各々の中間サイズのページは大ページ412の半分
のサイズである。これは中間ページ0 422と、中間
ページ1 424によって示されている。そこで、大ペ
ージ・オフセット410の残りの下位ビットが、参照中
の特定の中間サイズ・ページに中間ページ・オフセット
420を付与する。このように、中間ページ・オフセッ
ト420が0の値を有し、中間ページ選択ビット426
も0の値を有する場合は、中間ページ0 422の最初
の行がアドレス指定されることになる。これを大ページ
412及び大ページ・オフセット410と比較すると、
このような場合に大ページ412の最小の行も特定され
ることが理解されよう。
【0036】一方、中間ページ・オフセット・フィール
ドに1が記入され、中間ページ選択ビットフィールド4
26にも1が記入されている場合は、中間ページ1 4
24の最後の行が、アドレス指定されているメモリの行
となろう。ページ・オフセットが全ての1を含む大ペー
ジ・オフセット410であるとみなされる場合、これは
大ページ412の最終行と対応する。
【0037】従って、大ページ412が16K行のメモ
リをマッピングする実施例の場合、中間ページ0 42
2は大ページ412のメモリの最初の8Kの行をマッピ
ングし、中間ページ1 424が大ページ412の最後
の8Kの行をマッピングする。大ページ・オフセット4
10は依然として14ビットのフィールドである。中間
ページ・オフセット420、及び対応する中間ページ選
択ビット426とみなした場合、大ページ・オフセット
410の上位ビットは、中間ページ0 422、又は中
間ページ1 424のいずれがアドレス指定されている
かを特定する。そこで、大ページ・オフセット410の
13の下位ビット(213=8K)は選択ビット426に
よって特定された中間ページの中間ページ・オフセット
420を付与することになる。
【0038】同様にして、大ページ412は4つの小サ
イズのページに分割されるものとみることができる。こ
のことは、小ページ0 432、小ページ1 434、
小ページ2 436及び小ページ3 438によって示
されている。このような場合、大ページ・オフセット4
10は小ページ選択ビット440と、小ページ・オフセ
ット430に分割されるものとみなすことができる。大
ページ・オフセット410が16KBのページを特定す
る14ビットのフィールドである例を引き続き検討する
と、大ページを4分割することによって、各々が4KB
のサイズの4つの小ページが作成される。この例では、
大ページ・オフセット410の2つの上位ビット(22
=4)によって小ページ選択ビット440が得られ、大
ページ・オフセット410の12の下位ビット(212
4K)によって、小ページ選択ビット440により特定
された小ページに小ページ・オフセット430が付与さ
れる。
【0039】図4には示していないが、メモリの特定の
連続部分内で異なるサイズのページを組み合わせること
も可能である。すなわち、上記とは異なり、大ページ4
12が一つの中間ページと、2つの小ページに分割され
るものとみなすことができる。従って、例えば、大ペー
ジ412の最初の半分を、中間ページ0 422によっ
てマッピングし、大ページ412の後の半分を、小ペー
ジ2 436と、小ページ3 438によってマッピン
グすることができる。
【0040】図4の例はメモリの連続部分への、ページ
サイズ毎の3つのマッピングを示しているが、特定のメ
モリ部分にそれ以上、又はそれ以下のページ・サイズを
マッピングすることが可能である。更に、各ページが2
の整数乗である行数から成っている限り、より小さいペ
ージのマッピングはより大きいページのマッピングに常
に適合する。例えば、別の実施例では、2つのページ・
サイズだけがマッピングされる。この別の実施例では、
小ページのサイズは8KBであり、大ページのサイズは
64KBである。
【0041】仮想メモリ・コンピュータ・システムは1
つ以上のハードウェア・ページのサイズを有することが
できる。コンピュータ・システムが一つ、又は一つ以上
のハードウェア・ページのサイズのいずれを有するにせ
よ、コンピュータ・システムは最小限のハードウェア・
ページのサイズを有している。オペレーティング・シス
テムは最小限のハードウェア・ページ・サイズと少なく
とも同じサイズのページを用いる。オペレーティング・
システムがハードウェア・ページ・サイズよりも大きい
サイズの単数又は複数のページ・サイズを用いる場合、
これらのページは充分な数の連続する同サイズのハード
ウェア・ページを互いに結合することによって構成さ
れ、必要なオペレーティング・システムのページ・サイ
ズが作成される。オペレーティング・システムのページ
は代表的には、2の整数乗と、ハードウェア・ページ・
サイズのサイズとの積である。このように、例えば、物
理メモリは、コンピュータ・システムによって4KBの
サイズのハードウェア・ページへと分割されることがで
きる。ハードウェア・ページ・サイズで全ての仮想メモ
リ動作を実行するのではなく、仮想メモリのオペレーテ
ィング・システムは、ページをメモリに転送する際に実
際に使用されるより大きいページを有することができ
る。このように、実施例では、ハードウェア・ページの
サイズが4KBである場合でも、仮想メモリのオペレー
ティング・システムはサイズが8KBと64KBのペー
ジでの動作を実行可能である。このような場合、各々の
8KBのオペレーティング・システムのページは、2つ
の連続するハードウェア・ページから成っており、各々
の64KBのオペレーティング・システムのページは、
16の連続するハードウェア・ページから成っている。
このような実施例では、ハードウェア・サイズが4KB
の16の連続するページを、オペレーティング・システ
ムの8KBの8つの小ページ、又はオペレーティング・
システムの64KBの一つの大ページであるとみなすこ
とができる。
【0042】ここで図5を参照すると、仮想アドレスか
ら物理アドレスへの変換を可能にする機構が図示されて
いる。図5の同じ機構を、物理アドレスから仮想アドレ
スへの変換にも使用できる。一つ以上の仮想アドレスを
所定の物理アドレスにマッピングできる場合は、図5の
機構を、所定の物理アドレスの全ての別名の仮想アドレ
スを決定するために使用できる。更に、図5の機構によ
って、同時に一つ以上のページ・サイズについて、物理
アドレスを仮想アドレス・マッピングへとマップするこ
とができる。その上、図5の機構によって、一つ以上の
ページ・サイズを用いて物理メモリの特定の連続部分を
同時にマッピングすることができる。
【0043】説明を容易にするため、別途指摘されない
限り、図5の説明では一貫して主要な実施例を参照す
る。一実施例では、2つのハードウェア・ページ・サイ
ズがあり、それは8KBと64KBである。オペレーテ
ィング・システムのページ・サイズも2つあり、オペレ
ーティング・システムの小さいページ・サイズは、小さ
いハードウェア・ページ・サイズ(すなわち8KB)と
等しく、オペレーティング・システムの大きいページ・
サイズは、小さいハードウェア・ページ・サイズ(すな
わち64KB)と等しい。
【0044】図5では、PFD510、512及び51
4は、情報のオペレーティング・システム・ページ(ペ
ージ・フレーム)を記憶するために使用されている物理
メモリ内の特定の連続領域を記述するために、仮想メモ
リのオペレーティング・システムによって作成される各
々のページ・フレーム記述子である。ページ・フレーム
記述子は、それが記述するページ・フレーム用の物理ア
ドレス・ベースを特定するフィールドを有している。こ
のフィールドは記述されるページ・フレームを記憶する
ために使用される物理メモリ内の連続領域の始点での物
理アドレスを含んでいる。ページ・フレーム記述子は更
に、ページ・フレームの物理アドレス範囲を特定するフ
ィールドを有している。ページ・フレーム記述子内の変
換ポインタ・フィールドは、少なくとも一つの仮想アド
レス変換が存在する場合、所定のページフレームについ
て第1の仮想アドレス変換を指示する変換ポインタを含
んでいる。特定のページ・フレーム記述子に対応する仮
想アドレスが存在しない場合は、変換ポインタはその旨
を指示する。このような事態は、例えば、ページ・フレ
ーム記述子が、そこにロードされるべきデータを未だ有
している空いたメモリを記述する場合、又は、ページ・
フレーム記述子が、そこにロードされたデータを有する
が、起動中のプロセスが目下のところデータを使用して
いないページ・フレームを記述する場合に生ずる。
【0045】ここでブロック540、542、544及
び546を参照すると、各々のブロックは仮想メモリを
物理スペースへマッピングするための変換ブロックであ
る。従って、各ブロックは仮想アドレス・スペースの連
続部分を表す。ブロック内で、仮想アドレス・スペース
の連続部分は、一つの大ページ、又は幾つかのより小さ
いページとしてマッピングされる。各変換ブロックは関
連するハッシュ・インデックスを有している。各変換ブ
ロックはヘッダと、変換エントリの配列へと分割されて
いる。主要な実施例では、大ページを表す変換ブロック
は一つの変換エントリだけを有し、一方、小ページを表
す変換ブロックは、複数の、例えば8つの変換エントリ
を有する。従って、主要な実施例では、小ページに対応
する変換ブロックには、大ページに対応する変換ブロッ
クよりも多くの記憶スペースが割当てられる。何故なら
ば、小ページの変換ブロックは大ページの変換ブロック
よりも多くの変換エントリを有しているからである。
【0046】変換ブロックのヘッダは、変換ブロックに
よってマップされる仮想アドレス・スペースの連続部分
全体に関する情報を含んでいる。これには、マップされ
るメモリ部分の基底仮想アドレスや、ブロック内の変換
エントリの数や、有効な変換エントリの数や、ブロック
内の全ての変換エントリのページ・サイズや、ブロック
内の全ての変換エントリに共通のその他の属性等のよう
な情報が含まれる。一つ以上の変換ブロックが同じハッ
シュ・インデックスと関連する場合は、ヘッダには特定
のハッシュ・インデックスと関連する次の変換ブロック
へのポインタが含まれる。
【0047】各々の変換エントリは有効ビット、変換エ
ントリが利用するページのサイズを示すページ・サイズ
・インジケータ、逆方向ポインタ及び変換エントリに対
応するハードウェア・ページに特有の属性から成ってい
る。逆方向ポインタはページ・フレーム記述子を示す。
【0048】同じ実施例で、各々の仮想アドレスは、仮
想アドレスを使用している文脈を特定する関連する文脈
数を有する。文脈数は変換ブロックによってマップされ
る仮想アドレスの全てに共通であるので、この文脈数は
変換ブロックのヘッダに記憶されることができる。文脈
数が用いられる場合は、仮想アドレス変換は、変換ブロ
ックのヘッダに記憶された文脈数が、変換されるべき仮
想アドレスに関連する文脈と一致した場合だけ有効であ
る。この説明のため、文脈数は仮想アドレスの一部であ
るものと考えることができる。
【0049】従って、エイリアスが可能ではない場合、
特定の物理アドレス用に仮想アドレスが存在するなら
ば、特定の物理アドレスを含むページ・フレームを記述
するページ・フレーム記述子は、変換ブロック内の変換
エントリへのポインタを含む変換ポインタ・フィールド
を有する。一方、変換ポインタによって指示される変換
エントリ内の逆方向ポインタは、ページ・フレーム記述
子を指示する。
【0050】この構造によって、変換が存在する場合、
特定の物理アドレス用の所定の仮想アドレスが得られ
る。この変換は、変換される物理アドレスを含むページ
・フレームを記述するページ・フレーム記述子が検知さ
れるまで、ページ・フレーム記述子を検索することによ
って行われる。この動作が行われる理由は、全てのペー
ジ・フレーム記述子が物理アドレスの基底フィールドと
範囲フィールドを有しているからである。フレーム記述
子を有効に探索するには幾つかの公知の技術がある。こ
れらの技術は公知であるので、ここでは詳細には説明し
ないが、代表的には、いくつかの種類のルックアップ・
テーブル・データ構造を実施することが含まれる。
【0051】変換されるべき物理アドレスを含むページ
・フレームに対応するページ・フレーム記述子が一旦識
別されると、ページ・フレーム記述子の変換ポインタが
点検される。変換ポインタが、変換されるべき物理アド
レスに対応する仮想アドレスがないことを指示した場合
は、変換プロセスは(変換されるべきアドレスがないの
で)変換を行わずに終了する。そうではない場合は、変
換ブロック内の対応する変換エントリを検知するため
に、ページ・フレーム記述子の変換ポインタが用いられ
る。次に、変換されるべき物理アドレスに対応する仮想
アドレスを計算するのに利用される情報を導出するた
め、ブロックのヘッダをアクセスするのにヘッダインジ
ケータが利用される。例えば、主要な実施例では、ヘッ
ダは、変換ブロックが一つの大ページを記述し、一つの
変換エントリだけを有することを指示し、且つ、変換ブ
ロック用の基底仮想アドレスを供給する。変換されるべ
き物理アドレス用のページ・オフセットは、変換される
べき物理アドレスの適宜のLSb数を抜き出すことによ
って検知することができる。抜き出されるビット数は変
換エントリ用のページ・サイズによって左右される。ペ
ージ・オフセットを変換ブロックヘッダ内に記憶された
仮想基底アドレスに付加すると、変換される物理アドレ
スに対応する仮想アドレスが得られる。
【0052】変換ブロックが一つ以上の変換エントリを
有する場合は、変換の計算はやや複雑になる。変換ブロ
ック内の変換エントリの位置を計算するために、変換の
ヘッダインジケータを利用することができる。例えば、
ヘッダインジケータはブロックヘッダの始端へのポイン
タとして利用できる。変換エントリのメモリ・アドレス
が判明しており、ヘッダと各変換エントリのサイズも判
明しているので、変換ブロック内の変換エントリの位置
を計算することができる。あるいは、ヘッダインジケー
タは、変換ブロック内の変換エントリの位置を指示する
数であることができ、その場合は、ヘッダと各変換エン
トリのサイズが判明しているので、ヘッダの始端のメモ
リ・アドレスを計算することができる。変換されるべき
物理アドレス用のページ・オフセットは上記のように計
算することができる。しかし、この時点で、変換エント
リ数から1が減算され、その差が、単一の変換エントリ
でマップされたメモリのサイズと乗算される。次に積が
ページ・オフセットに加算され、次に、その和が変換ブ
ロックヘッダに記憶された仮想基底アドレスに加算され
て、変換されるべき物理アドレスに対応する仮想アドレ
スが算出される。
【0053】更に、エイリアスが可能である場合は、変
換エントリは別の変換ブロック(又は同じ変換ブロッ
ク)内の変換エントリに指示することができる順方向ポ
インタを有する。順方向ポインタによって指示された変
換エントリは、記述される物理ページ用の別名に対応す
る。このように、特定のページ・フレームが変換エント
リの連鎖を指示する。連鎖内の各変換エントリは、変換
されるべき物理アドレス用の一つの別名を記述する。こ
の連鎖構造によって、所定の物理アドレスに関して全て
の仮想アドレスの検索が可能になる。
【0054】物理アドレスから仮想アドレスへの変換方
式が図5に、PFD510で開始される連鎖で示されて
いる。このように、ページ・フレーム記述子510によ
って記述されるページ内に、変換されるべき物理アドレ
スがあるものと想定すると、PFD510内のページ・
フレーム・ポインタは、矢印520で示したように、ブ
ロック540の変換エントリTN1を指示していること
が判る。変換エントリTN1は、変換されるべき物理ア
ドレス用の第1の仮想アドレス変換を行う。更に、矢印
530によって示されるように、ブロック540の変換
エントリTN1は、ブロック542の変換エントリTN
3を指示するポインタを有している。矢印530をたど
ると、ページ・フレーム記述子510内の物理アドレス
をマップする第2の仮想アドレスが、ブロック542の
変換エントリTN3内に見い出される。第3の変換があ
る場合は、変換エントリTN3内のポインタは、その変
換を含む別のブロックを指示するであろう。しかし、こ
の場合は、変換エントリTN3から出る矢印はない。従
って、変換連鎖(TN3)の終了が明らかになり、変換
されるべき物理アドレスに対応する全てのエイリアスが
検索されたことになる。
【0055】同様にして、ブロック540の変換エント
リTN2へ向かう矢印522をたどることによって、次
にTN2から、ブロック546の変換エントリTN5へ
の矢印532を辿ることによって、PFD512内に含
まれる物理アドレスの変換が可能である。第3の例とし
て、ページ・フレーム記述子514内に含まれる物理ア
ドレスは、ブロック544の変換エントリTN4へ向か
う矢印524をたどることによって、次にブロック54
6の変換エントリTN6への矢印534をたどることに
よって変換可能である。
【0056】大ページを表すページ・フレーム記述子は
そのマッピング・リスト上の、より小さいサイズのペー
ジのマッピングを有することができることに留意された
い。一実施例では、ページ・フレーム記述子は、異なる
ページ・サイズの各々のページ・サイズがページ・フレ
ーム記述子によって表されるサイズ未満であるか、等し
い限り、異なるページ・サイズのマッピングを有するこ
とができる。このような場合、各々の対応する変換エン
トリは同じページ・フレーム記述子を再指示するが、異
なる変換エントリはページ・フレーム記述子内の異なる
領域を再指示することができる。
【0057】更に、別の実施例では、ページ・フレーム
記述子のページ・サイズよりも大きいページ・サイズの
マッピングが特定のページ・フレーム記述子のマッピン
グ・リストに存在することができる。この場合は、マッ
ピングはマッピング・リスト内のページ・サイズを上昇
せしめることによって記憶される。大きいマッピングは
第1のページ・フレーム記述子だけを再指示し、変換プ
ロセスはこの場合を処理するように修正される。
【0058】前述したように、図5の変換機構は、仮想
アドレスを物理アドレスに変換するためにも利用でき
る。これはハッシュ・リスト560によって行われる。
ハッシュ・リスト560はハッシュエントリ(HE0-F
)から成っている。各ハッシュエントリは空である
か、又は変換ブロックを指示するポインタを含んでい
る。
【0059】ハッシュ・リストは、充分に大きい数の変
換ブロックを指定するのに充分な大きさのものが選択さ
れる。図5の例では、ハッシュ・リスト560は16の
エントリを有しており、従って、ハッシュ・リストへの
インデックスは4ビット(24 =16)によって指定さ
れることになる。ほとんどの実施例で、より大きいハッ
シュ・リストが使用される。しかし、この例では、説明
を簡単にするために16のエントリを有するハッシュ・
リストが使用される。主要な実施例では、変換ブロック
は、一つのエントリを有する大ページ変換ブロックであ
れ、8つのエントリを有する小ページ変換ブロックであ
れ、64KBをマップする。64KBは16ビットの2
進数(216=64K)によって表すことができるので、
ハッシュ・インデックスは、変換されるべき仮想アドレ
スの20の(すなわち16プラス4の)下位ビットか
ら、4つの上位ビットを抜き出すことによって、変換さ
れるべき仮想アドレスから作成されることになる。この
ように、図3を簡単に参照すると、一実施例では、Nは
16に等しく、Mは4に等しいことが理解されよう。
【0060】図5を再び参照すると、ハッシュ・インデ
ックスは空である場合も、空でない場合もあるハッシュ
・エントリを含むハッシュ・リスト内にインデックス付
けする。ハッシュ・エントリのポインタが空である場合
は、変換されるべき仮想アドレスに対応する物理アドレ
スはない。そこで第1の変換ブロックが点検され、変換
されるべき仮想アドレスが第1の変換ブロック内に含ま
れているか否かが判定される。変換ブロックの範囲は、
(ヘッダ内に記憶された)基底仮想アドレスで始まり、
変換ブロックのエントリの最大数と、ブロック内の個々
の変換エントリによって記述されるメモリのサイズとの
乗算した値だけ継続する。変換されるべき仮想アドレス
がこの範囲内にある場合は、変換されるべき仮想アドレ
スを含むとみられる第1の変換ブロックの変換エントリ
が点検されて、それが有効な変換エントリであるか否か
が判定される。それが有効な変換エントリではない場合
は、変換は存在しない。しかし、変換エントリが有効で
ある場合は、変換されるべき仮想アドレス用の物理アド
レスは、第1変換ブロックのヘッダ、変換エントリ及び
変換エントリの逆方向ポインタによって指示されるペー
ジ・フレーム・エントリに含まれる情報から計算するこ
とができ、仮想アドレスから物理アドレスへの変換が達
成されていることになる。
【0061】一方、第1変換ブロック(すなわちハッシ
ュ・リスト・エントリによって指示された変換ブロッ
ク)が変換されるべき仮想アドレスに対応しない場合
は、第1変換ブロックのヘッダが点検されて、ヘッダが
空のポインタを含んでいるか、又は別の変換ブロックへ
のポインタを含んでいるかが判定される。他方、ヘッダ
が第2の変換ブロックへのポインタを含んでいる場合
は、第2の変換ブロックが点検されて、それが変換され
るべき仮想アドレスに対応するか否かが判定される。こ
のプロセスは、変換が達成され、有効ではない変換エン
トリ内で変換されるべき仮想アドレスを含む変換ブロッ
クが検知され、又は、変換連鎖を出るまで反復される。
【0062】仮想アドレスから物理アドレスへの変換プ
ロセスは、物理アドレスから仮想アドレスへの変換プロ
セスと相反形である。仮想アドレスを物理アドレスに変
換する場合、変換ブロックと、変換されるべき仮想アド
レスを含む仮想アドレス範囲を記述するブロック内の変
換エントリとを検知するために、変換ブロックのヘッダ
の情報が利用される。変換エントリに対応するページ・
フレーム記述子を位置決めするために、変換エントリの
逆方向ポインタが利用される。そこで、ページ・フレー
ムの物理基底アドレスを物理ページ・オフセットに加算
することによって、物理アドレスが作成される。
【0063】仮想アドレスから物理アドレスへの変換プ
ロセスが2つの例について図5に示されている。第1の
例では、変換されるべき仮想アドレスから抜き出された
ハッシュ・インデックスは、ハッシュ・リスト560の
ハッシュ・エントリHE4 である。HE4 を点検するこ
とによって、(矢印572で示すように)ブロック54
0のヘッダ550が検知される。次に、変換ブロック5
40のヘッダ550が点検されて、変換ブロック540
が変換中の仮想アドレスを含むアドレス・スペースに対
応するか否かが判定される。対応せず、適宜の変換エン
トリが有効である場合は、変換が検知され、適宜の変換
エントリからの逆方向ポインタを、変換されるべき仮想
アドレスの物理アドレスを含むPFDへと逆に指示する
ことができる。対応しており、適宜の変換エントリが有
効ではない場合は、変換は存在しない。このように、変
換されるべき仮想アドレスが変換エントリTN1と関連
するアドレス・スペース内に含まれている場合は、逆方
向ポインタ521がPFD510へと逆に指示しよう。
一方、変換されるべき仮想アドレスが、変換エントリT
N2と関連するアドレス・スペース内に含まれている場
合は、逆方向ポインタ523がPFD512へと逆に指
示しよう。変換ブロック550が、変換中の仮想アドレ
スを含むアドレス・スペースと対応しない場合は、ヘッ
ダ550内のポインタは変換ブロック544へと指示す
る。変換ブロック544は同じハッシュ・インデックス
を有する別の仮想アドレス・マッピングである。次に、
この仮想アドレス・マッピングが点検されて、このマッ
ピングが変換されるべき仮想アドレスを含むか否かが判
定される。再度、含んでおり、適宜の変換エントリが有
効である場合は、変換が検知されたことになる。含んで
いるが、適宜の変換エントリが有効ではない場合は、変
換は存在せず、逆方向ポインタ525はTN4から逆に
PFD514へと指示することができる。変換ブロック
544が、変換される仮想アドレスを含むアドレス・ス
ペースに対応しない場合は、ヘッダ554用のポインタ
が空であるので、検知されるべきその他の仮想アドレス
・マッピングは存在せず、変換されるべき所定の仮想ア
ドレスには変換は存在しない。
【0064】同様にして、変換されるべき第2の仮想ア
ドレスから抜き出されたハッシュ・インデックスは、ハ
ッシュ・リスト560のハッシュエントリHEc であ
る。ハッシュエントリHEc は(矢印574に示すよう
に)ヘッダ552を指示し、逆方向ポインタ531は変
換エントリTN3からPFD510を指示する。一方、
ブロック542のヘッダ552は、(矢印584で示す
ように)ブロック546のヘッダ556へのポインタを
含み、逆方向ポインタ533と535は、変換エントリ
TN5及びTN6から、PFD512と514をそれぞ
れ指示する。図5では逆方向ポインタは常に変換エント
リからPFDへと指示するものの、別の実施例では、変
換エントリTN3のポインタ531のような逆方向ポイ
ンタは、TN1のような変換エントリを指示できること
に留意されたい。このような場合、TN3からの逆方向
ポインタはTN1に指示し、次に、変換エントリTN1
の逆方向ポインタ521はPFD510を指示すること
になろう。
【0065】このように、図5に示した変換機構は2つ
の方法でアクセス可能なデータ構造を提示する。第1の
方法では、ハッシュ・リストへのインデックスで開始す
ることによって、データ構造をアクセスして、変換され
るべき仮想アドレス用の物理アドレス変換を行うことが
できる。第2の方法では、ページ・フレーム記述子で開
始することによって、データ構造をアクセスして、所定
の物理アドレスに対応する全ての仮想アドレス変換を行
うことができる。
【0066】一実施例では、変換ブロックは、仮想メモ
リのオペレーティング・システムによって用いられる全
てのページ・サイズをマッピングするのに充分な大きさ
であるように選択された。このような場合、変換が存在
する場合は、図5の変換機構は常に第1のハッシュで変
換を行う。所定の変換ブロックによってマップされるメ
モリのサイズが、各変換ブロックが有効な変換エントリ
で密集するように選択され、又、最も普及したページ・
サイズを変換ブロックでマッピングできる場合に、図5
の変換機構は最も効率よく動作する。別の実施例では、
多重のハッシュ機能が用いられる。このように、例え
ば、小ページ変換ブロックだけが、(8つではなく)4
つの変換変換エントリを有するように一実施例を変更し
たものと想定してみる。この別の実施例では、小ページ
変換ブロックは32KBの仮想アドレス・スペースをマ
ップすることができ、大ページ・アドレス・ブロックは
依然として64KBのアドレス・スペースをマップする
であろう。このように、大ページ変換ブロックのアドレ
ス・スペースは依然として16ビット2進数で表現され
るものの、小ページ変換ブロックのアドレス・スペース
は16ビット2進数で表現されよう。この別の実施例で
は、仮想アドレスから物理アドレスに変換する場合、2
つのハッシュ・インデックスと変換連鎖が横移動されな
ければならないことがある。第1のハッシュ・インデッ
クスは、仮想アドレスがより小さいページ・サイズに対
応するものと想定することによって、変換されるべき仮
想アドレスから抜き出される。従って、4ビットのハッ
シュ・インデックスがある図5の例では、第1のハッシ
ュ・インデックスは、変換されるべき仮想アドレスの1
9の下位ビットから、4つの上位ビットを抜き出すこと
によって作成されることになる。次に、第1ハッシュ・
インデックスのハッシュエントリで開始される変換連鎖
が点検される。アドレス・スペースの一部として、変換
されるべき仮想アドレスを含む変換ブロックが連鎖内で
検知されない場合は、変換されるべき仮想アドレスが大
ページ・サイズに対応するものと想定することによっ
て、変換されるべき仮想アドレスから第2のハッシュ・
インデックスが抜き出される。このように、4ビットの
ハッシュ・インデックスがある図5の例を継続して参照
すると、第2のハッシュ・インデックスは、変換される
べき仮想アドレスの20の下位ビットから4つの上位ビ
ットを抜き出すことによって作成されることになる。第
2のハッシュ・インデックスは第2変換連鎖の基底で第
2のハッシュエントリを提供する。このようにして、各
ハッシュ・リストに対応する変換ブロックを密集状態に
保つことができる。それによって、変換ブロック構造を
保持するのに必要なメモリの容量は最小限にされる。
【0067】別の実施例では、ハードウェアのページ・
サイズは一つしかない。(小ページ・サイズ)ハードウ
ェアのページ・サイズが一つの実施例では、小ページ変
換ブロックの個々の変換エントリを用いる場合、変換エ
ントリは物理メモリのハードウェア・ページ・サイズ部
分に対応する。大ページ変換ブロックの個々の変換エン
トリを用いる場合、変換エントリは物理メモリの8つの
連続するページ・サイズ部分に対応する。(8つのハー
ドウェア・サイズ・ページ×ハードウェア・サイズ・ペ
ージ当たりの8KBは、64KB、すなわち一つの大サ
イズのオペレーティング・システムのページに等し
い。)次に、オペレーティング・システムは変換エント
リを必要に応じて複数の変換エントリへと拡張すること
ができる。
【0068】一実施例では、各ハードウェア・ページ・
サイズは対応するオペレーティング・システムのページ
・サイズと同サイズであるものの、この限定性は保持す
る必要がないことに留意されたい。従って、例えば、別
の実施例では、最小限のハードウェア・ページ・サイズ
は4KBであり、一方、オペレーティング・システムの
小ページ・サイズは8KBでもよいであろう。このよう
な場合は、2つのアプローチが可能であろう。第1のア
プローチでは、小ページ変換ブロック内の各変換エント
リは最小限のサイズのハードウェア・ページに対応し、
オペレーティング・システムの小ページを記述するため
に2つの変換エントリが利用されることになる。第2の
アプローチでは、オペレーティング・システムの各々の
小ページ用に、小ページ変換ブロック内には変換エント
リは一つしかなく、その場合、仮想アドレスが物理アド
レスに変換中に、オペレーティング・システムは小ペー
ジ変換ブロックエントリを必要に応じた適宜の数の変換
エントリへと拡張することになる。
【0069】同様にして、ハードウェア・ページに複数
のサイズがあり、オペレーティング・ページの大ページ
・サイズがハードウェアの大ページ・サイズの倍数であ
る場合同じ問題が生ずる。従って、例えば2つのハード
ウェア・ページ・サイズ(8KBと32KB)があるよ
うに、一実施例を変更することが可能である。子の場合
は、オペレーティング・システムの大(64KB)ペー
ジ・サイズが大きい変換ブロックによって表現された場
合、第1のアプローチが採用されると、大ページ変換ブ
ロックは2つの変換エントリを有することになる。(3
2KBのハードウェア・ページ毎に一つ)第2のアプロ
ーチが採用される場合は、大ページ変換ブロックは一つ
の変換エントリだけを有し、変換エントリは、仮想アド
レスが物理アドレスに変換中に必要に応じて2つの変換
エントリに拡張されよう。
【0070】一般に、変換ブロックが(変換エントリに
よってマップされたアドレス・スペースのサイズと、変
換ブロック内の変換エントリの最大数との積に等しい)
アドレス・スペースのNビットのアドレス可能なセクシ
ョンをマップし、更に、ハッシュ・リスト・インデック
スがMビット数によって特定される場合、変換されるべ
き仮想アドレス用のハッシュ・リストへのインデックス
は、(図3に示すように)変換されるべき仮想アドレス
のNの下位ビットの上位に現れるMの下位ビットを抜き
出すことによって作成される。別の実施例ではハッシュ
・インデックスの別の計算方法を利用できる。すなわ
ち、別の実施例では例えば、ハッシュ・インデックス情
報は仮想アドレスと、仮想アドレスを用いている文脈を
識別する文脈数との関数である。
【0071】更に別の実施例では、大ページをマップす
る変換ブロックは一つ以上の有効な変換エントリを有す
ることができる。このような場合、仮想アドレスを可能
性として2つの位置で表現でき(ページ・サイズ毎に一
箇所)、一つの一だけが変換を行う。常に最小のページ
に対応するインデックスで先ず開始することによって、
各ページ・サイズ毎に異なるハッシュ・インデックスが
計算される場合は常に、変換されるべき仮想アドレスを
含む変換ブロックが最初に検知され、この変換ブロック
が検知されると探索は終結する。一方、一つ以上のペー
ジ・サイズについて同一であるハッシュ・インデックス
について連鎖の横移動が行われ、ハッシュ・インデック
スの最小サイズのページに対応しない有効ではない変換
エントリを含む変換ブロックが検知された場合、探索が
終了する前に、連鎖の残り部分を照合して、連鎖がより
小さいページ・サイズの変換ブロックを含んでいるか否
かを判定しなければならない。
【0072】ここで図6を参照すると、図5の機構を利
用した仮想アドレスから物理アドレスへの変換を図示し
た流れ図が示されている。図6では、仮想アドレスから
物理アドレスへの変換手順600は開始バブル610か
ら始まり、変換されるべき仮想アドレスからハッシュ・
インデックスが計算される処理ブロック620へと進
む。判断ブロック630で、ハッシュ・リストが点検さ
れ、変換されるべき仮想アドレスから計算されたハッシ
ュ・インデックスに対応するハッシュエントリが第1変
換ブロックを指示しているか、又は、それが空であるか
の判定が行われる。ハッシュ・リストが空である場合
は、判断経路632は手順ブロック670をたどり、そ
こでは手順が端末バブル690で終了する前に、変換が
存在しない状態が宣言される。複数のハッシュ・インデ
ックスがある場合には、次のハッシュ・インデックスが
計算され、手順は終了するのではなく判断ブロック63
0へと続くことに留意されたい。
【0073】再度判断ブロック630を参照すると、ハ
ッシュ・リストが空ではない場合、判断経路634は手
順ブロック640へと進み、そこでハッシュエントリに
よって指示された変換ブロックが点検される。次に、判
断ブロック650で、変換ブロックが変換されるべき仮
想アドレスを含んでいるか否かが判定される。変換が有
効ではない場合、判断経路656は手順ブロック670
に進み、そこで変換が存在しない状態が宣言される。複
数のハッシュ・インデックスがある場合、次のハッシュ
・インデックスが計算され、手順は終了するのではな
く、判断ブロック630に続くことに再度留意された
い。さらに、一つ以上のページ・サイズについて同一で
あるハッシュ・インデックスのために連鎖が横移動さ
れ、又、ハッシュ・インデックスの最小サイズのページ
に対応しない有効ではない変換エントリを含む変換ブロ
ックが検知された場合、探索が終了する前に、連鎖の残
り部分を照合して、連鎖がより小さいページ・サイズの
変換ブロックを含んでいるか否かを判定しなければなら
ないことに留意されたい。
【0074】一方、判断ブロック655で変換が有効で
あることが判明すると、判断経路658はブロック68
0に進み、そこで変換の検知状態が宣言される。次に、
手順が端末バブル690で終了する前に、物理アドレス
変換が計算される。
【0075】再度判断ブロック650を参照すると、点
検される変換ブロックが、変換されるべき仮想アドレス
を含んでいない場合、判断経路654は判断ブロック6
60に進み、そこで、点検される変換ブロックが変換ブ
ロック・リストの最後のブロックであるか否かを判定す
る検査が行われる。点検される変換ブロックのヘッダ内
のポインタが空である場合、同じハッシュ・インデック
スを有する、点検されるべき他の変換ブロックは存在せ
ず、判断経路664は手順ブロック670に進む。その
場合は、端末バブル690で手順が終了する前に、変換
が存在しない状態が宣言される。複数のハッシュ・イン
デックスがある場合、次のハッシュ・インデックスが計
算され、手順は終了するのではなく、判断ブロック63
0に続くことに再度留意されたい。
【0076】一方、判断ブロック660で変換ブロック
・リストが点検される際に、点検される変換ブロックの
ヘッダ内のポインタが、別の変換ブロックを指示してい
ることが判明すると、判断経路662は手順ブロック6
40に進み、そこで、指示されている変換ブロックが点
検される。このようにして、変換連鎖の点検は、変換さ
れるべき仮想アドレスを含む変換ブロッンクが検知され
るまで、又は、連鎖の最後のリンクの点検が終了するま
で継続される。
【0077】ここで図7を参照すると、物理アドレスか
ら仮想アドレスへの変換を示した流れ図が図示されてい
る。図7では、物理アドレスから仮想アドレスへの変換
手順700は、開始バブル710で始まり、変換される
べき物理アドレスを含むページ・フレームを記述するペ
ージ・フレーム記述子が存在するか否かを判定する検査
が行われる判断ブロック715に進む。判断ブロック7
15で、このようなページ・フレーム記述子が存在しな
いことが判定されると、判断経路716は端末バブル7
60に進み、そこで(変換が行われるべきアドレスが存
在しないので)変換が行われずに終了する。
【0078】一方、判断ブロック715で、変換される
べき物理アドレスを含むページ・フレームを記述するペ
ージ・フレーム記述子が存在することが判定されると、
判断経路718は手順ブロック720に進み、そこで、
変換されるべき物理アドレスを含むページ・フレームを
記述するページ・フレーム記述子が点検されて、それが
マッピング・リスト内に第1変換ブロックへのポインタ
を含んでいるか否かが判定される。判断ブロック730
で、変換されるべき物理アドレスを含むページ・フレー
ム記述子内のポインタが空であることが判定されると、
変換は存在せず、判断経路732は端末バブル760に
進み、そこで再び、手順は(変換が行われるべきアドレ
スが存在しないので)変換が行われずに終了する。
【0079】再度判断ブロック730を参照すると、ペ
ージ・フレーム記述子のマッピング・リストが空ではな
い場合には、第1変換ブロック内の変換エントリを判定
するために、ページ・フレーム記述子内の変換ポインタ
が用いられる。このような場合は、判断経路734は処
理ブロック740に進み、そこで、実際に仮想アドレス
が必要ならば、変換エントリに対応する仮想アドレスが
計算される。そうではない場合は、例えば、変換ブロッ
ク内の属性が点検、又は変更される。次に、判断ブロッ
ク750で、点検中の変換ブロックの変換エントリが点
検されて、その順方向ポインタが空であるか否かが判定
される。順方向ポインタが空である場合は、変換される
べき物理アドレスに対応する全ての仮想アドレスが識別
されたことになり、判断経路754は端末バブル760
に進み、そこで手順は終了する。
【0080】一方、判断ブロック750で、点検される
変換ブロックの変換エントリの順方向ポインタが別の
(又は同じ)変換ブロック内の別の変換エントリを指示
しているものと判定された場合は、判断経路752は手
順740に進む。手順ブロック740では、変換リスト
内の次の変換エントリが点検され、物理アドレス用の仮
想アドレスの別名が提供される。
【0081】変換プロセスは変換連鎖内の最後のリンク
が検知され、変換手順が端末バブル760で終了するま
で継続される。
【0082】これまで本発明の方法と装置を現段階で好
適な実施例、及び別の実施例に関連して説明してきた
が、本発明は添付の特許請求項の趣旨と範囲内で修正と
変更が可能であることが、専門家には理解されよう。従
って、本明細書と図面は、限定的なものではなく、説明
目的であるとみなされるべきものである。
【図面の簡単な説明】
【図1】 本発明の実施例を利用して、アドレス変換を
実施するコンピュータ・システムを示す図である。
【図2】 仮想アドレスを物理アドレスに変換するため
のマルチ・レベル・アプローチを示す図である。
【図3】 物理アドレスと仮想アドレスとの関係、及
び、仮想アドレスからハッシュ・インデックスを導き出
す方法を示す図である。
【図4】 物理メモリの連続部分に対する複数ページ・
サイズのマッピングを示す図である。
【図5】 アドレス変換メカニズムの実施例を示す図で
ある。
【図6】 図5の変換メカニズムを利用した、仮想アド
レスから物理アドレスへの変換を表したフロー・チャー
トである。
【図7】 図5の変換メカニズムを利用した、物理アド
レスから仮想アドレスへの変換を表したフロー・チャー
トである。
【符号の説明】
220…アドレス変換バッファ、250…二次変換機
構、280…大型ソフトウエア変換テーブル、560…
ハッシュ・リスト。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マドゥ−サドハン・タルーリ アメリカ合衆国 53705 ウィスコンシン 州・マディソン・プリンストン アヴェニ ュ・ナンバーケイ・304 (72)発明者 ドック・ジイ・ウィリアムズ アメリカ合衆国 94086 カリフォルニア 州・サニーヴェイル・チャールズ ストリ ート・174 (72)発明者 ヴィクラム・ピイ・ジョシ アメリカ合衆国 94538 カリフォルニア 州・フレモント・デブラム コモン・ 43309

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 物理メモリにマッピングされる仮想メモ
    リを備えたコンピュータ・システムのアドレス変換を行
    う装置において、 基底物理アドレス、その基底物理アドレスから始まる物
    理アドレス範囲、及び変換エントリ・ポインタを備え、
    物理メモリの連続部分を記述する少なくとも1つのペー
    ジ・フレーム記述子と、 基底仮想アドレス、基底仮想アドレスから始まる仮想ア
    ドレス範囲、変換ブロックの仮想アドレス範囲をマッピ
    ングするのに利用されるページ・サイズ、変換ブロック
    ・ポインタを備えるヘッダ、及びそれぞれが逆方向ポイ
    ンタを備える少なくとも1つの変換エントリを備える変
    換ブロックであって、変換ブロックの各変換エントリイ
    が仮想アドレス範囲における異なる等サイズの変換範囲
    に対応し、ある変換エントリの変換範囲が物理メモリ・
    ページ・フレームによって戻される場合、変換エントリ
    の逆方向ポインタが対応するページ・フレームを記述し
    たページ・フレーム記述子を指示し、このページ・フレ
    ーム記述子の変換エントリ・ポインタが変換エントリを
    指示するようになっている、仮想メモリの連続部分を記
    述するための少なくとも1つの変換ブロックと、 複数のハッシュ・エントリを備え、各ハッシュ・エント
    リには変換ヘッダ・ポインタ、及びハッシュ・エントリ
    に固有の関連するハッシュ・インデックスが設けられて
    おり、少なくとも1つの変換ブロックの仮想アドレス変
    換連鎖が存在して、仮想アドレス変換連鎖の各変換ブロ
    ック毎に仮想アドレス範囲があり、仮想アドレス変換連
    鎖の変換ブロックにおける仮想アドレス範囲の各仮想ア
    ドレスにハッシングを施すことによって、同じハッシュ
    ・エントリのハッシュ・インデックスを得ることが可能
    になる場合、ハッシュ・インデックスが得られたハッシ
    ュ・エントリの変換ヘッダ・ポインタは仮想アドレス変
    換連鎖における第1の変換ブロックを指示し、仮想アド
    レス変換連鎖の中に2つ以上の変換ブロックがある場
    合、第1の変換ブロックの変換ブロック・ポインタが仮
    想アドレス変換連鎖の第2の変換ブロックを指示し、第
    1の変換ブロックを除く仮想アドレス変換連鎖の全ての
    変換ブロックが、仮想アドレス変換連鎖における異なる
    変換ブロックの変換ブロック・ポインタによって指示さ
    れるハッシュ・リストから構成される、 アドレス変換装置。
  2. 【請求項2】 物理メモリにマッピングされる仮想メモ
    リを備えたコンピュータ・システムでアドレス変換を行
    う方法において、 (a)基底物理アドレス、基底物理アドレスから始まる
    物理アドレス範囲、及び変換エントリ・ポインタを備
    え、物理メモリの連続部分を記述する少なくとも1つの
    ページ・フレーム記述子を設けるステップと、 (b)基底仮想アドレス、基底仮想アドレスから始まる
    仮想アドレス範囲、変換ブロックの仮想アドレス範囲を
    マッピングするのに利用されるページ・サイズ、変換ブ
    ロック・ポインタを備えるヘッダ、及びそれぞれが逆方
    向ポインタを備える少なくとも1つの変換エントリを備
    える変換ブロックであって、変換ブロックの各変換エン
    トリイが仮想アドレス範囲における異なる等サイズの変
    換範囲に対応し、ある変換エントリの変換範囲が物理メ
    モリ・ページ・フレームによって戻される場合、変換エ
    ントリの逆方向ポインタが対応するページ・フレームを
    記述したページ・フレーム記述子を指示し、このページ
    ・フレーム記述子の変換エントリ・ポインタが変換エン
    トリを指示するようになっている、仮想メモリの連続部
    分を記述するための少なくとも1つの変換ブロックを設
    けるステップと、 (c)複数のハッシュ・エントリを備え、各ハッシュ・
    エントリには変換ヘッダ・ポインタ、及びハッシュ・エ
    ントリに固有の関連するハッシュ・インデックスが設け
    られており、少なくとも1つの変換ブロックの仮想アド
    レス変換連鎖が存在して、仮想アドレス変換連鎖の各変
    換ブロック毎に仮想アドレス範囲があり、仮想アドレス
    変換連鎖の変換ブロックにおける仮想アドレス範囲の各
    仮想アドレスにハッシングを施すことによって、同じハ
    ッシュ・エントリのハッシュ・インデックスを得ること
    が可能になる場合、ハッシュ・インデックスが得られた
    ハッシュ・エントリの変換ヘッダ・ポインタは仮想アド
    レス変換連鎖における第1の変換ブロックを指示し、仮
    想アドレス変換連鎖の中に2つ以上の変換ブロックがあ
    る場合、第1の変換ブロックの変換ブロック・ポインタ
    が仮想アドレス変換連鎖の第2の変換ブロックを指示
    し、第1の変換ブロックを除く仮想アドレス変換連鎖の
    全ての変換ブロックが、仮想アドレス変換連鎖における
    異なる変換ブロックの変換ブロック・ポインタによって
    指示されるハッシュ・リストを設けるステップと、 (d)変換すべき仮想アドレスを受けるステップと、 (e)変換すべき仮想アドレスから第1の変換ハッシュ
    ・インデックスを抽出するステップと、 (f)第1の変換ハッシュ・インデックスに対応するハ
    ッシュ・エントリが空でない場合、第1の変換ハッシュ
    ・インデックスに対応するハッシュ・エントリの変換ヘ
    ッダ・ポインタによって指示される変換ブロックを検査
    を受ける変換ブロックとし、検査を受けた変換ブロック
    の仮想アドレス範囲を検査して、変換すべき仮想アドレ
    スが、検査を受ける変換ブロックの仮想アドレス範囲内
    に含まれているか否かを判定するステップと、 (g)変換すべき仮想アドレスが、検査を受ける変換ブ
    ロックの仮想アドレス範囲内に含まれている場合、変換
    すべき仮想アドレスを含む変換範囲を備えた、検査を受
    ける変換ブロックの変換エントリを検査して、変換エン
    トリが有効か否かを判定し、その変換エントリが有効で
    あれば、変換エントリの逆方向ポインタを利用して、変
    換エントリによって指示されるページ・フレームを記述
    するページ・フレーム記述子の位置指定を行うステップ
    と、 (h)変換すべき仮想アドレスが、検査を受ける変換ブ
    ロックの仮想アドレス範囲内に含まれていなければ、検
    査を受ける変換ブロックの変換ブロック・ポインタを検
    査して、その変換ブロック・ポインタが空でなければ、
    検査を受ける変換ブロックの変換ブロック・ポインタに
    よって指示される変換ブロックを検査を受ける変換ブロ
    ックとし、ステップ(g)及び(h)を繰り返すステッ
    プから構成される、アドレス変換方法。
  3. 【請求項3】 さらに、 (i)変換すべき物理アドレスを受けるステップと (j)変換すべき物理アドレスを含む物理アドレス範囲
    を備えたページ・フレーム記述子が存在するか否かを判
    定するステップと、 (k)変換すべき物理アドレスを含む物理アドレス範囲
    を備えたページ・フレーム記述子が存在する場合、その
    ページ・フレーム記述子の変換エントリ・ポインタを検
    査して、その変換エントリ・ポインタが変換エントリを
    指示しているか否かを確認するステップと、 (l)変換エントリ・ポインタが変換エントリを指示し
    ている場合、変換エントリ・ポインタによって指示され
    る変換エントリを検査を受ける変換エントリとするステ
    ップと、 (m)検査を受ける変換エントリ、及び、検査を受ける
    変換エントリを含む変換ブロックのヘッダを利用して、
    変換される物理アドレスに対応する仮想アドレスを識別
    するステップが含まれていることを特徴とする、 請求項2に記載のアドレス変換方法。
  4. 【請求項4】 特定の物理ページが、2つ以上の仮想ペ
    ージによってマッピング可能であり、変換ブロックの変
    換エントリには、さらに、正方向ポインタが備わってい
    て、物理ページが2つ以上の仮想ページによってマッピ
    ングされる場合、少なくとも2つの変換エントリを備え
    た物理アドレス変換連鎖が存在し、物理アドレス変換連
    鎖の各変換エントリ毎に、ページ・フレーム記述子によ
    って記述される物理ページの物理アドレス範囲の少なく
    とも一部に対応する仮想アドレス範囲が設けられ、前記
    ページ・フレーム記述子の変換エントリ・ポインタが、
    物理アドレス変換連鎖の第1の変換エントリを指示し、
    第1の変換エントリの正方向ポインタが、物理アドレス
    変換連鎖における第2の変換エントリを指示し、第1の
    変換エントリを除く物理アドレス変換連鎖の全ての変換
    エントリが、物理アドレス変換連鎖における異なる変換
    エントリの変換エントリ・ポインタによって指示され、
    さらに、 (n)ステップ(l)で識別される変換エントリを含む
    物理アドレス変換連鎖における全ての変換エントリを、
    順次、検査を受ける変換エントリにして、ステップ
    (m)を繰り返すステップが含まれることを特徴とす
    る、 請求項3に記載のアドレス変換方法。
  5. 【請求項5】 物理メモリにマッピングされる仮想メモ
    リを備えたコンピュータ・システムでアドレス変換を行
    う方法において、 (a)基底物理アドレス、基底物理アドレスから始まる
    物理アドレス範囲、及び変換エントリ・ポインタを備
    え、物理メモリの連続部分を記述する少なくとも1つの
    ページ・フレーム記述子を設けるステップと、 (b)基底仮想アドレス、基底仮想アドレスから始まる
    仮想アドレス範囲、変換ブロックの仮想アドレス範囲を
    マッピングするのに利用されるページ・サイズ、変換ブ
    ロック・ポインタを備えるヘッダ、及びそれぞれが逆方
    向ポインタを備える少なくとも1つの変換エントリを備
    える変換ブロックであって、変換ブロックの各変換エン
    トリイが仮想アドレス範囲における異なる等サイズの変
    換範囲に対応し、ある変換エントリの変換範囲が物理メ
    モリ・ページ・フレームによって戻される場合、変換エ
    ントリの逆方向ポインタが対応するページ・フレームを
    記述したページ・フレーム記述子を指示し、このページ
    ・フレーム記述子の変換エントリ・ポインタが変換エン
    トリを指示するようになっている、仮想メモリの連続部
    分を記述するための少なくとも1つの変換ブロックを設
    けるステップと、 (c)複数のハッシュ・エントリを備え、各ハッシュ・
    エントリには変換ヘッダ・ポインタ、及びハッシュ・エ
    ントリに固有の関連するハッシュ・インデックスが設け
    られており、少なくとも1つの変換ブロックの仮想アド
    レス変換連鎖が存在して、仮想アドレス変換連鎖の各変
    換ブロック毎に仮想アドレス範囲があり、仮想アドレス
    変換連鎖の変換ブロックにおける仮想アドレス範囲の各
    仮想アドレスにハッシングを施すことによって、同じハ
    ッシュ・エントリのハッシュ・インデックスを得ること
    が可能になる場合、ハッシュ・インデックスが得られた
    ハッシュ・エントリの変換ヘッダ・ポインタは仮想アド
    レス変換連鎖における第1の変換ブロックを指示し、仮
    想アドレス変換連鎖の中に2つ以上の変換ブロックがあ
    る場合、第1の変換ブロックの変換ブロック・ポインタ
    が仮想アドレス変換連鎖の第2の変換ブロックを指示
    し、第1の変換ブロックを除く仮想アドレス変換連鎖の
    全ての変換ブロックが、仮想アドレス変換連鎖における
    異なる変換ブロックの変換ブロック・ポインタによって
    指示されるハッシュ・リストを設けるステップと、 (d)変換すべき仮想アドレスを受けて、ステップ
    (e)〜(h)を実施するステップと、 (e)変換すべき仮想アドレスから第1の変換ハッシュ
    ・インデックスを抽出するステップと、 (f)第1の変換ハッシュ・インデックスに対応するハ
    ッシュ・エントリが空でない場合、第1の変換ハッシュ
    ・インデックスに対応するハッシュ・エントリの変換ヘ
    ッダ・ポインタによって指示される変換ブロックを検査
    を受ける変換ブロックとし、検査を受けた変換ブロック
    の仮想アドレス範囲を検査して、変換すべき仮想アドレ
    スが検査を受ける変換ブロックの仮想アドレス範囲内に
    含まれているか否かを判定するステップと、 (g)変換すべき仮想アドレスが、検査を受ける変換ブ
    ロックの仮想アドレス範囲内に含まれている場合、変換
    すべき仮想アドレスを含む変換範囲を備えた、検査を受
    ける変換ブロックの変換エントリを検査して、変換エン
    トリが有効か否かを判定し、その変換エントリが有効で
    あれば、変換エントリの逆方向ポインタを利用して、変
    換エントリによって後指示れるページ・フレームを記述
    するページ・フレーム記述子の位置指定を行うステップ
    と、 (h)変換すべき仮想アドレスが、検査を受ける変換ブ
    ロックの仮想アドレス範囲内に含まれていなければ、検
    査を受ける変換ブロックの変換ブロック・ポインタを検
    査して、変換ブロック・ポインタが空でなければ、検査
    を受ける変換ブロックの変換ブロック・ポインタによっ
    て指示される変換ブロックを検査を受ける変換ブロック
    とし、ステップ(g)及び(h)を繰り返すステップ
    と、 (i)変換すべき物理アドレスを受けて、ステップ
    (j)〜(m)を実施するステップと (j)変換すべき物理アドレスを含む物理アドレス範囲
    を備えたページ・フレーム記述子が存在するか否かを判
    定するステップと、 (k)変換すべき物理アドレスを含む物理アドレス範囲
    を備えたページ・フレーム記述子が存在する場合、その
    ページ・フレーム記述子の変換エントリ・ポインタを検
    査して、変換エントリ・ポインタが変換エントリを指示
    しているか否かを確認するステップと、 (l)変換エントリ・ポインタが変換エントリを指示し
    ている場合、変換エントリ・ポインタによって指示され
    る変換エントリを検査を受ける変換エントリとするステ
    ップと、 (m)検査を受ける変換エントリ、及び、検査を受ける
    変換エントリを含む変換ブロックのヘッダを利用して、
    変換される物理アドレスに対応する仮想アドレスを識別
    するステップから構成される、 アドレス変換方法。
  6. 【請求項6】 特定の物理ページが、2つ以上の仮想ペ
    ージによってマッピング可能であり、変換ブロックの変
    換エントリには、さらに、正方向ポインタが備わってい
    て、物理ページが2つ以上の仮想ページによってマッピ
    ングされる場合、少なくとも2つの変換エントリを備え
    た物理アドレス変換連鎖が存在し、物理アドレス変換連
    鎖の各変換エントリ毎に、ページ・フレーム記述子によ
    って記述される物理ページの物理アドレス範囲に対応す
    る仮想アドレス範囲が設けられ、前記ページ・フレーム
    記述子の変換エントリ・ポインタが物理アドレス変換連
    鎖の第1の変換エントリを指示し、第1の変換エントリ
    の正方向ポインタが物理アドレス変換連鎖における第2
    の変換エントリを指示し、第1の変換エントリを除く物
    理アドレス変換連鎖の全ての変換エントリが、物理アド
    レス変換連鎖における異なる変換エントリの変換エント
    リ・ポインタによって指示され、さらに、 (n)ステップ(l)で識別される変換エントリを含む
    物理アドレス変換連鎖における全ての変換エントリを、
    順次、検査を受ける変換エントリにして、ステップ
    (m)を繰り返すステップが含まれることを特徴とす
    る、請求項5に記載のアドレス変換方法。
JP27969994A 1993-10-20 1994-10-20 アドレス変換を行う装置及び方法 Expired - Fee Related JP3577575B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US139,549 1993-10-20
US08/139,549 US5446854A (en) 1993-10-20 1993-10-20 Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes

Publications (2)

Publication Number Publication Date
JPH07182240A true JPH07182240A (ja) 1995-07-21
JP3577575B2 JP3577575B2 (ja) 2004-10-13

Family

ID=22487216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27969994A Expired - Fee Related JP3577575B2 (ja) 1993-10-20 1994-10-20 アドレス変換を行う装置及び方法

Country Status (5)

Country Link
US (1) US5446854A (ja)
EP (1) EP0650124B1 (ja)
JP (1) JP3577575B2 (ja)
KR (1) KR100343027B1 (ja)
DE (1) DE69427625T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221636A (ja) * 2005-02-07 2006-08-24 Samsung Electronics Co Ltd Run単位アドレスマッピングテーブル及びそれの構成方法
JP2011204247A (ja) * 2006-02-22 2011-10-13 Sony Computer Entertainment Inc 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置

Families Citing this family (134)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
DE69428881T2 (de) * 1994-01-12 2002-07-18 Sun Microsystems, Inc. Logisch adressierbarer physikalischer Speicher für ein Rechnersystem mit virtuellem Speicher, das mehrere Seitengrössen unterstützt
JP3604176B2 (ja) * 1994-09-14 2004-12-22 株式会社東芝 仮想空間管理方法及び分散処理システム
US5887190A (en) * 1995-05-15 1999-03-23 Nvidia Corporation System for determining from a command storing in a storage circuit an application program which has initiated the command to determine an input/output device address
US7577782B2 (en) * 1996-02-02 2009-08-18 Sony Corporation Application programming interface for data transfer and bus management over a bus structure
US6519268B1 (en) 1996-03-07 2003-02-11 Sony Corporation Asynchronous data pipe for automatically managing asynchronous data transfers between an application and a bus structure
US5873123A (en) * 1996-06-25 1999-02-16 International Business Machines Corporation Processor and method for translating a nonphysical address into a physical address utilizing a selectively nonsequential search of page table entries
US5855013A (en) * 1996-07-01 1998-12-29 Sun Microsystems, Inc. Method and apparatus for creating and maintaining a computer database utilizing a multi-purpose data format
US5930827A (en) * 1996-12-02 1999-07-27 Intel Corporation Method and apparatus for dynamic memory management by association of free memory blocks using a binary tree organized in an address and size dependent manner
AUPO648397A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Improvements in multiprocessor architecture operation
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
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
US6182201B1 (en) * 1997-04-14 2001-01-30 International Business Machines Corporation Demand-based issuance of cache operations to a system bus
US6289138B1 (en) 1997-04-30 2001-09-11 Canon Kabushiki Kaisha General image processor
US6195674B1 (en) 1997-04-30 2001-02-27 Canon Kabushiki Kaisha Fast DCT apparatus
US6414687B1 (en) 1997-04-30 2002-07-02 Canon Kabushiki Kaisha Register setting-micro programming system
AUPO647997A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6061749A (en) 1997-04-30 2000-05-09 Canon Kabushiki Kaisha Transformation of a first dataword received from a FIFO into an input register and subsequent dataword from the FIFO into a normalized output dataword
US6707463B1 (en) 1997-04-30 2004-03-16 Canon Kabushiki Kaisha Data normalization technique
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6282625B1 (en) 1997-06-25 2001-08-28 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6069638A (en) * 1997-06-25 2000-05-30 Micron Electronics, Inc. System for accelerated graphics port address remapping interface to main memory
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US6182089B1 (en) 1997-09-23 2001-01-30 Silicon Graphics, Inc. Method, system and computer program product for dynamically allocating large memory pages of different sizes
US6157398A (en) 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US7071946B2 (en) * 1997-12-30 2006-07-04 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US6108733A (en) * 1998-01-20 2000-08-22 Micron Technology, Inc. Method for extending the available number of configuration registers
US6243775B1 (en) 1998-01-20 2001-06-05 Micron Technology, Inc. System for extending the available number of configuration registers
US6272576B1 (en) 1998-01-20 2001-08-07 Micron Technology, Inc. Method for extending the available number of configuration registers
US6185655B1 (en) * 1998-01-22 2001-02-06 Bull, S.A. Computer system with distributed data storing
US6321276B1 (en) * 1998-08-04 2001-11-20 Microsoft Corporation Recoverable methods and systems for processing input/output requests including virtual memory addresses
US6594701B1 (en) 1998-08-04 2003-07-15 Microsoft Corporation Credit-based methods and systems for controlling data flow between a sender and a receiver with reduced copying of data
US6233667B1 (en) * 1999-03-05 2001-05-15 Sun Microsystems, Inc. Method and apparatus for a high-performance embedded memory management unit
US6535867B1 (en) * 1999-09-29 2003-03-18 Christopher J. F. Waters System and method for accessing external memory using hash functions in a resource limited device
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6480950B1 (en) * 2000-01-24 2002-11-12 Oracle International Corporation Software paging system
US6549997B2 (en) * 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6938144B2 (en) * 2001-03-22 2005-08-30 Matsushita Electric Industrial Co., Ltd. Address conversion unit for memory device
US7007152B2 (en) * 2001-12-28 2006-02-28 Storage Technology Corporation Volume translation apparatus and method
US20040024729A1 (en) * 2002-07-30 2004-02-05 Worley John S. Method and system for storing sparse data in memory and accessing stored sparse data
US7617249B2 (en) * 2003-09-06 2009-11-10 Oracle International Corporation Method and system of handling document operation requests on documents having large collections with constrained memory
US7076632B2 (en) * 2003-10-16 2006-07-11 International Business Machines Corporation Fast paging of a large memory block
US7278008B1 (en) 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
US7334108B1 (en) 2004-01-30 2008-02-19 Nvidia Corporation Multi-client virtual address translation system with translation units of variable-range size
US7296139B1 (en) 2004-01-30 2007-11-13 Nvidia Corporation In-memory table structure for virtual address translation system with translation units of variable range size
US7418582B1 (en) 2004-05-13 2008-08-26 Sun Microsystems, Inc. Versatile register file design for a multi-threaded processor utilizing different modes and register windows
US7739577B2 (en) * 2004-06-03 2010-06-15 Inphase Technologies Data protection system
US7937525B2 (en) * 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
US7571284B1 (en) 2004-06-30 2009-08-04 Sun Microsystems, Inc. Out-of-order memory transactions in a fine-grain multithreaded/multi-core processor
US7509484B1 (en) 2004-06-30 2009-03-24 Sun Microsystems, Inc. Handling cache misses by selectively flushing the pipeline
US7290116B1 (en) * 2004-06-30 2007-10-30 Sun Microsystems, Inc. Level 2 cache index hashing to avoid hot spots
US7519796B1 (en) 2004-06-30 2009-04-14 Sun Microsystems, Inc. Efficient utilization of a store buffer using counters
US7366829B1 (en) 2004-06-30 2008-04-29 Sun Microsystems, Inc. TLB tag parity checking without CAM read
US7543132B1 (en) 2004-06-30 2009-06-02 Sun Microsystems, Inc. Optimizing hardware TLB reload performance in a highly-threaded processor with multiple page sizes
US7616218B1 (en) * 2005-12-05 2009-11-10 Nvidia Corporation Apparatus, system, and method for clipping graphics primitives
US8156403B2 (en) 2006-05-12 2012-04-10 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
CN103258572B (zh) 2006-05-12 2016-12-07 苹果公司 存储设备中的失真估计和消除
WO2007132456A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Memory device with adaptive capacity
US20080028181A1 (en) * 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US8347064B1 (en) 2006-09-19 2013-01-01 Nvidia Corporation Memory access techniques in an aperture mapped memory space
US8352709B1 (en) 2006-09-19 2013-01-08 Nvidia Corporation Direct memory access techniques that include caching segmentation data
US8543792B1 (en) 2006-09-19 2013-09-24 Nvidia Corporation Memory access techniques including coalesing page table entries
US8601223B1 (en) 2006-09-19 2013-12-03 Nvidia Corporation Techniques for servicing fetch requests utilizing coalesing page table entries
US7546439B1 (en) * 2006-09-22 2009-06-09 Sun Microsystems, Inc. System and method for managing copy-on-write faults and change-protection
US7549035B1 (en) * 2006-09-22 2009-06-16 Sun Microsystems, Inc. System and method for reference and modification tracking
US7472253B1 (en) * 2006-09-22 2008-12-30 Sun Microsystems, Inc. System and method for managing table lookaside buffer performance
US8707011B1 (en) * 2006-10-24 2014-04-22 Nvidia Corporation Memory access techniques utilizing a set-associative translation lookaside buffer
US8700883B1 (en) 2006-10-24 2014-04-15 Nvidia Corporation Memory access techniques providing for override of a page table
US7975192B2 (en) 2006-10-30 2011-07-05 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US8504794B1 (en) 2006-11-01 2013-08-06 Nvidia Corporation Override system and method for memory access management
US8533425B1 (en) 2006-11-01 2013-09-10 Nvidia Corporation Age based miss replay system and method
US8347065B1 (en) * 2006-11-01 2013-01-01 Glasco David B System and method for concurrently managing memory access requests
US8607008B1 (en) 2006-11-01 2013-12-10 Nvidia Corporation System and method for independent invalidation on a per engine basis
US8706975B1 (en) 2006-11-01 2014-04-22 Nvidia Corporation Memory access management block bind system and method
US8700865B1 (en) 2006-11-02 2014-04-15 Nvidia Corporation Compressed data access system and method
WO2008068747A2 (en) 2006-12-03 2008-06-12 Anobit Technologies Ltd. Automatic defect management in memory devices
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US7957951B2 (en) * 2007-03-16 2011-06-07 Robert Bosch Gmbh Address translation system for use in a simulation environment
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
US8429493B2 (en) * 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
US20090006804A1 (en) * 2007-06-29 2009-01-01 Seagate Technology Llc Bi-level map structure for sparse allocation of virtual storage
US8259497B2 (en) * 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US8527819B2 (en) 2007-10-19 2013-09-03 Apple Inc. Data storage in analog memory cell arrays having erase failures
US8270246B2 (en) 2007-11-13 2012-09-18 Apple Inc. Optimized selection of memory chips in multi-chips memory devices
US8225181B2 (en) * 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) * 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US7930515B2 (en) * 2008-07-29 2011-04-19 International Business Machines Corporation Virtual memory management
US7995388B1 (en) 2008-08-05 2011-08-09 Anobit Technologies Ltd. Data storage using modified voltages
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
US8174857B1 (en) 2008-12-31 2012-05-08 Anobit Technologies Ltd. Efficient readout schemes for analog memory cell devices using multiple read threshold sets
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) * 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8677203B1 (en) 2010-01-11 2014-03-18 Apple Inc. Redundant data storage schemes for multi-die memory systems
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
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
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8645794B1 (en) 2010-07-31 2014-02-04 Apple Inc. Data storage in analog memory cells using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8493781B1 (en) 2010-08-12 2013-07-23 Apple Inc. Interference mitigation using individual word line erasure operations
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
KR20130014943A (ko) * 2011-08-01 2013-02-12 삼성전자주식회사 임의의 메모리 집합을 지원하는 메모리 구성 장치 및 방법
US10146545B2 (en) 2012-03-13 2018-12-04 Nvidia Corporation Translation address cache for a microprocessor
US9880846B2 (en) 2012-04-11 2018-01-30 Nvidia Corporation Improving hit rate of code translation redirection table with replacement strategy based on usage history table of evicted entries
US10241810B2 (en) 2012-05-18 2019-03-26 Nvidia Corporation Instruction-optimizing processor with branch-count table in hardware
US9058268B1 (en) 2012-09-20 2015-06-16 Matrox Graphics Inc. Apparatus, system and method for memory management
US20140189310A1 (en) 2012-12-27 2014-07-03 Nvidia Corporation Fault detection in instruction translations
US10108424B2 (en) 2013-03-14 2018-10-23 Nvidia Corporation Profiling code portions to generate translations
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60204048A (ja) * 1984-03-28 1985-10-15 Hitachi Ltd 仮想記憶方式
US4648033A (en) * 1984-09-07 1987-03-03 International Business Machines Corporation Look-aside buffer LRU marker controller
JPS6184754A (ja) * 1984-10-03 1986-04-30 Hitachi Ltd 拡張アドレス変換装置
US5247632A (en) * 1989-01-23 1993-09-21 Eastman Kodak Company Virtual memory management arrangement for addressing multi-dimensional arrays in a digital data processing system
JP2858795B2 (ja) * 1989-07-14 1999-02-17 株式会社日立製作所 実記憶割り当て方法
US5077826A (en) * 1989-08-09 1991-12-31 International Business Machines Corporation Cache performance in an information handling system employing page searching
US5319761A (en) * 1991-08-12 1994-06-07 International Business Machines Corporation Directory look-aside table for a virtual storage system including means for minimizing synonym entries

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006221636A (ja) * 2005-02-07 2006-08-24 Samsung Electronics Co Ltd Run単位アドレスマッピングテーブル及びそれの構成方法
JP2011204247A (ja) * 2006-02-22 2011-10-13 Sony Computer Entertainment Inc 独立論理アドレス空間とそれぞれに対するアクセス管理を提供する方法および装置
US8533426B2 (en) 2006-02-22 2013-09-10 Sony Corporation Methods and apparatus for providing independent logical address space and access management

Also Published As

Publication number Publication date
EP0650124B1 (en) 2001-07-04
JP3577575B2 (ja) 2004-10-13
KR950012220A (ko) 1995-05-16
DE69427625D1 (de) 2001-08-09
DE69427625T2 (de) 2002-05-08
KR100343027B1 (ko) 2002-11-23
EP0650124A1 (en) 1995-04-26
US5446854A (en) 1995-08-29

Similar Documents

Publication Publication Date Title
JPH07182240A (ja) アドレス変換を行う装置及び方法
US5956756A (en) Virtual address to physical address translation of pages with unknown and variable sizes
US7089398B2 (en) Address translation using a page size tag
US5313611A (en) Method and apparatus for maintaining a lookup table for storing function values
KR920005280B1 (ko) 고속 캐쉬 시스템
US5058003A (en) Virtual storage dynamic address translation mechanism for multiple-sized pages
US5426750A (en) Translation lookaside buffer apparatus and method with input/output entries, page table entries and page table pointers
US7809921B2 (en) Method and apparatus for translating a virtual address to a real address using blocks of contiguous page table entries
US4587610A (en) Address translation systems for high speed computer memories
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
CA1332984C (en) Dual cache memory
US6205531B1 (en) Method and apparatus for virtual address translation
EP0243724A2 (en) Multilevel storage hierarchy with a variable address mode
JP2005538465A (ja) ページ・サイズ指標に基づきハッシュされる部分的タグを用いる変換索引バッファ
KR100233212B1 (ko) 가상 기억장치 변환을 효율적으로 공용하기 위한 장치 및 방법
JPH04319747A (ja) アドレス変換機構
JPH0749812A (ja) ページテーブル中のハッシュアドレスタグを用いたメモリアドレス制御装置
JPH0247775B2 (ja)
JP2001175536A (ja) 仮想アドレスからページ・テーブル・インデックスを計算する方法および装置
JPH10254718A (ja) キャッシュ効果オブジェクトローダ
JPH04320553A (ja) アドレス変換機構
US4821171A (en) System of selective purging of address translation in computer memories
TW201710911A (zh) 選擇性預取實體接續快取線至包含被載入分頁表之快取線
US10884948B2 (en) Replacing pointers with hashing in tree-based page table designs
JP2008512758A (ja) 仮想アドレス・キャッシュに格納されたデータを共用する仮想アドレス・キャッシュ及び方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040224

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040519

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040629

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees