(57)【要約】  プロセッサは、レベル１−ＴＬＢおよび小型高速度レベル−０ＴＬＢを含む階層的変換索引バッファ（ＴＬＢ）を含む。Ｌ０  ＴＬＢ内のエントリーは、Ｌ１  ＴＬＢ内のエントリーを複写する。プロセッサはアドレス変換のときに最初にＬ０  ＴＬＢにアクセスし、もし仮想アドレスがＬ０  ＴＬＢにおいてミスをする場合は、Ｌ１  ＴＬＢにアクセスする。仮想アドレスがＬ１  ＴＬＢ内においてヒットする場合は、仮想アドレス、物理アドレスおよびページ属性は、もしＬ０  ＴＬＢがフルである場合は、現存するエントリーを置換してＬ０  ＴＬＢに書き込まれる。エントリーは、Ｌ１  ＴＬＢエントリー内のＬ０  Ｌｏｃｋ（Ｌ０Ｌ）インジケータに応答して、Ｌ０  ＴＬＢ内において置換に対してロックすることができる。同様にして、ハードウェア−管理されたＬ１  ＴＬＢにおいて、エントリーは対応するページテーブルエントリー内のＬ１  Ｌｏｃｋ（Ｌ１Ｌ）インジケータに応答して置換に対してロックすることができる。
2009506434.tif 000002
【特許請求の範囲】
【請求項１】
階層的変換索引バッファ（ＴＬＢ）を管理する方法であって、
エントリーを高レベルＴＬＢから低レベルＴＬＢへ複写し、そして
高レベルＴＬＢエントリー内のインジケータに応答して置換に対して低レベルＴＬＢ内にエントリーをロックすること
を含む方法。
【請求項２】
インジケータは上位レベルＴＬＢエントリー内のビットである請求項１記載の方法
【請求項３】
インジケータを含む、上位レベルＴＬＢエントリーは、ソフトウェアによってセットされる請求項１記載の方法
【請求項４】
インジケータはメモリページテーブル内のソフトウェアによってセットされ、そしてインジケータはハードウェアページテーブル拡張動作の期間中、上位レベルＴＬＢエントリー内にセットされる請求項１記載の方法
【請求項５】
下位レベルＴＬＢは命令ＴＬＢである請求項１記載の方法
【請求項６】
下位レベルＴＬＢはデータＴＬＢである請求項１記載の方法
【請求項７】
上位レベルＴＬＢエントリーを下位レベル命令ＴＬＢに複写し、そして低レベル命令ＴＬＢエントリーをインジケータに応じて置換に対してロッキングすることをさらに含む請求項６記載の方法
【請求項８】
プロセッサであって、
命令実行パイプラインと、
高レベル変換索引バッファ（ＴＬＢ）および低レベルＴＬＢを含む階層的ＴＬＢと、なお低レベルＴＬＢ内のエントリーは高レベルＴＬＢ内のエントリーを複写し、そして
アドレス変換において低レベルＴＬＢに最初にアクセスし、低レベルＴＬＢ内に調和するエントリーが見つからない場合は高レベルＴＬＢにアクセスするように動作するＴＬＢ制御器とを含み、なお該制御器は高レベルＴＬＢ内の対応するエントリー内のインジケータに応答して低レベルＴＬＢ内にエントリーをロックするためにさらに動作する
プロセッサ。
【請求項９】
プロセッサ内の仮想アドレスを物理アドレスに変換する方法であって、
仮想アドレスを発生するためにメモリアクセス命令を実行し、
仮想アドレスの一部を有するレベル−０変換索引バッファ（Ｌ０  ＴＬＢ）にアクセスし、
Ｌ０  ＴＬＢ内で仮想アドレスをミスした場合は、仮想アドレスの一部を有するレベル−１  ＴＬＢ（Ｌ１  ＴＬＢ）にアクセスし、そして
仮想アドレスがＬ１  ＴＬＢ内でヒットする場合は、
Ｌ１  ＴＬＢから物理アドレスおよびページ属性の一部を取得し、
Ｌ１  ＴＬＢエントリー内のレベル−０ロック（Ｌ０Ｌ）インジケータを検査し、
仮想アドレスの一部、物理アドレスの一部およびページ属性をエントリーとしてＬ０  ＴＬＢに書き込み、そして
Ｌ０  Ｌ０Ｌインジケータに応ずる置換に対してＴＬＢエントリーをロッキングすること
を含む方法。
【請求項１０】
仮想アドレスがＬ１  ＴＬＢ内においてミスした場合は、
仮想アドレスに関連する物理アドレスおよびページ属性を取得するために、ページテーブルトラバーサルを実行し、そして
Ｌ１  ＴＬＢおけるエントリーとして、仮想アドレスの一部、物理アドレスの一部、ページ属性そしてＬ０Ｌインジケータを書き込むこと
をさらに含む、請求項９記載の方法
【請求項１１】
変換索引バッファ（ＴＬＢ）を管理する方法であって、
ＴＬＢが仮想アドレスに対してミスした場合は、対応する物理アドレスおよびロックインジケータを取得するために、ページテーブルウオークを実行し、
少なくとも仮想および物理アドレスを含むＴＬＢにエントリーを書き込み、そして
ロックインジケータに応答する置換に対しＴＬＢ内にエントリーをロッキングする
ことを含む方法。
【請求項１２】
ＴＬＢはＬ１  ＴＬＢであり、そしてロックインジケータはＬ１  ＬＯＣＫ（Ｌ１Ｌ）インジケータである請求項１２記載の方法
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にプロセッサの分野にそして特に置換（replacement）に対して１つあるいはそれ以上の変換索引バッファ（Translation Lookaside Buffer）におけるエントリー(entry)をロッキング(locking)するシステムおよび方法に関する。
【０００２】
マイクロプロセッサは携帯用電子デバイスを含む広い範囲の応用分野において計算上のタスクを実行する。大部分の場合、携帯形電子デバイスおよび他の応用において実行されるべき付加的な機能および特性を可能とするためにプロセッサ特性の最大化が主要な設計目標である。そしてまた、多くの応用において、若干の計算機上のタスクは他に優る優先度を有しており、そしてシステムにとって計算機上の資源は優先度の高いタスクに対して保存されることを保証することがシステムに対して有利であろう。
【０００３】
多くのプログラムはあたかもそれを実行している計算機が非常に大きい（理想的には無限の）高速メモリ量を有して動作しているように書かれている。大部分の現代のプロセッサはメモリ形式の階層を利用することによって理想的条件をシミュレートしており、それぞれが異なった速度とコスト特性を有している。階層内のメモリ形式はトップにおける非常に高速度で、非常に高価なものから、次第に遅いしかし低いレベルにおいてはより経済的な保存形式まで変化する。典型的なプロセッサ記憶階層は、トップレベルにおいてプロセッサ内にレジスタ（ゲート）を含むことができ、１つあるいはそれ以上のオンチップキャッシュ（ＳＲＡＭ）、あるいは多分オフチップキャッシュ（ＳＲＡＭ）、主メモリ（ＤＲＡＭ）ディスク記憶装置（電気機械的アクセスを伴った磁気媒体）、および最低のレベルにおいてはテープあるいはＣＤ(磁気的あるいは光学的媒体)によって支持されている。大部分の電子デバイスは制限を有し、もしあれば、ディスク記憶装置、そして従って主メモリ、はしばしばサイズが制限され、メモリ階層において最も低いレベルである。
【０００４】
計算機メモリ階層において、各低レベルはより高いレイヤに存在するデータの完全な(しかし多分古い)コピーを維持する。このことは、より高いレベルに貯蔵されたデータは低レベルにおけるデータに複写される。より小さく高いレベルの記録は、より大きくより低いレベルのメモリにおける多数の場所にマップすることができるので、マッピング機構は階層レイヤの間におけるアドレスの変換をする（translate）ことが必要とされる。大部分のプロセッサは非常に大きく概念的に隣接する仮想アドレス空間（virtual address space）の中で動作する。主メモリはハードウェアおよびシステムパラメータによって制約される物理アドレス空間の中でアクセスされる。プロセッサコアと主メモリの間に挿入されたキャッシュ−高速メモリは、仮想アドレスによって、物理アドレスによって、またはこれらの結合によって完全にアクセスすることができる(仮想インデックスや物理タグを使用することによって）。しかしながら、キャッシュの構造かかわらず、アドレスは仮想アドレス空間から物理アドレス空間に変換されなければならない。
【０００５】
１つの限定された物理メモリアドレス空間(physical memory address)への多くの大きな仮想アドレス空間（動作しているプログラムまたはコンテクストについて）のマッピングおよび変換は、メモリマメージメントとして知られる。オペレーティングシステムによるメモリマネージメントは、プログラムが相互のデータを上書きすることを防止することによって、適切な実行を保証しており、あるユーザが他のデータにアクセスすることを許されないことによって安全性が与えられ、そしてオペレーティングシステムの割り当てテーブルやパラメータのような、管理者レベルのデータ構成にアクセスすることをユーザレベルプログラムに対し認めないことによって信頼性を促進する。
【０００６】
メモリはページといわれる一定したサイズのセグメント内で管理することができ、そしてそれはたとえば４Ｋバイトを含むことができる。上部のあるいは最も重要なアドレスの部分はページ番号（page number）と称され、個々の記憶ページを識別する。このページ番号は仮想から物理的アドレス空間に翻訳される。下部のあるいはアドレスの重要性の低い部分はページオフセットと呼ばれ、仮想のおよび物理アドレスに対して等しいページに中にオフセットされ、ページオフセットビットは変換されない。１つの例として、４Ｋページを有する３２ビットアドレスに対して、ページ番号はアドレスビット［３１；１２］を含み、ページオフセットは、ビット［１１；０］を含むであろう。
【０００７】
３１        ページ番号      １２    １１    ページオフセット      ０
表；１  アドレスのページフィールド（page field）
仮想から物理ページ番号へのマッピングは、動作システムソフトウェアによってページテーブル（page table）と呼ばれる１つあるいはそれ以上のデータ構造内で制御される。ページテーブルは単一のテーブルであるかも知れず、あるいは階層的なあるいはツリー状のテーブルの系列であるかも知れず、夫々は仮想ページ番号の部分またはセグメントを物理メモリの対応する範囲にマッピングする。ページテーブルはさらに、ページが共有されるかあるいは単一のプロセスに専用化されるか等にかかわらず、読み、書きそして認可を実行するような物理ページの属性を記憶する。最初に、新しい仮想のアドレスを対応している物理アドレスに変換するために、主メモリに（もしもそれが物理的にインデックスされ、またはタグ付けされる場合、キャッシュメモリに）アクセスするために、プロセッサはページテーブルを”ウォークする（walk）“か、あるいはトラバース（traverse）しなければならない。次のアドレス変換は、仮想的および物理的ページ番号およびページ属性（page attribute）をＴＬＢ内に記憶することによって、高速化される。ＴＬＢはデータおよび命令ページ（instruction page）の双方について、アドレス変換およびページ属性を記憶することができる。さらに、統一されたＴＬＢのサブセットを含むことのできる命令ＴＬＢ（ＩＴＬＢ;instruction TLB））は、命令に関するアドレス変換およびページ属性を分離して記憶することができる。
【０００８】
ＴＬＢは、コンテントアドレス可能メモリ(ＣＡＭ；Content Addressable Memory）およびそれぞれが例えば３２，６４あるいは１２８のように固定されたエントリー数を有する関連するランダムアクセスメモリ（ＲＡＭ）を含むことができる。ＣＡＭは翻訳のために示された仮想ページ番号の並行比較をすべての記憶された以前に変換された仮想ページ番号に対して実行する。ＣＡＭの出力は適用された仮想ページ番号に適合する記憶された仮想ページ番号の位置である。この位置は、ページ属性と同様に、仮想ページ番号に対応する記憶された物理的ページ番号を供給するＲＡＭを指示する。キャッシュおよび/あるいは主メモリに適用された物理アドレスは続いてＴＬＢから抽出された物理的ページ番号であり、仮想アドレスからのページオフセットと結びつけられる。
【０００９】
変換のために新しい仮想ページ番号が示される場合にＴＬＢミスが起こり、そしてプロセッサは変換を実行するためにページテーブルをトラバースしなければならない。ページテーブルのウォークが完了するとき、仮想および物理的ページ番号およびページ属性がＴＬＢ内の空いた位置に蓄えられる。もしもＴＬＢが満杯である場合は、現存するエントリーは新しいエントリーと置換されなければならない。種々の置換アルゴリズム（replacement algorithm）が当業界においては知られており、ランダム、ラウンドーロビン、最近は使用されないファーストインーファーストアウト（ＦＩＦＯ）、セカンドチャンスＦＩＦＯ、最近使用されるが頻繁には使用されないエージング等である。クリティカルタスクと組み合わせられたメモリページに関して、クリティカルタスクのために高速変換を実行するためエントリーが常にＴＬＢの中に置かれることを確実にするために、多くのＴＬＢ実行がオペレーティングシステムに１つあるいはそれ以上のＴＬＢを置換に対しロックする（lock）ことを可能にする。ロックされたＴＬＢエントリーはＴＬＢエントリーが置換されなければならない場合に置換アルゴリズムに加わらない。しかしながらすべてのプロセッサ命令セットは、ＴＬＢエントリーを置換に対してロックする命令（instruction）のような、ＴＬＢ管理命令を含まない。これらの場合ＴＬＢはハードウェアによって管理され、そしてオペレーティングシステムは、ＴＬＢエントリーを直接ロックするための何らかの方法を有しないかもしれない。
【００１０】
より高度の実行（performance）に関しては、プロセッサはより小さくより速い例えばレベル−０あるいはＬ０  ＴＬＢと呼ばれる（レベル−１あるいはＬ１  ＴＬＢとして参照される主ＴＬＢを有する）４，８あるいは１６エントリーを有するＴＬＢ含むことができる。Ｌ０  ＴＬＢはまた当業界においてはマイクロＴＬＢとして知られている。Ｌ０  ＴＬＢは、僅か最近使用されたアドレス変換、一時的な利用、そし大部分のプログラムの空間的な配置の原理を記憶し、最近アクセスされたメモリページからの命令又はデータが再び取り出されるであろう。仮想アドレスを変換するために、プロセッサはＬ０  ＴＬＢに対し最初に仮想ページ番号を示す。最初に仮想ページ番号がＬ０  ＴＬＢ内にヒット（hit）すると、対応する物理ページ番号およびページ属性が提供される。仮想ページ番号がＬ０  ＴＬＢ内でミス（miss）すると、仮想ページ番号は変換にためにＬ１  ＴＬＢに示される。
【００１１】
一般的にＬ０  ＴＬＢはソフトウェアによって認識されず直接に制御されないハードウェアで実行される。このことは、ソフトウェアは直接Ｌ０ＴＬＢエントリーを読んだり書いたりできず、Ｌ０ＴＬＢの管理はハードウェアによって実行される。この結果の１つは、オペレーティングシステムは置換に対してロックされるようにＬ０  ＴＬＢ内においてエントリーを指定することができないということである。置換に対して１つまたはそれ以上のＬ０  ＴＬＢエントリーをロックするための能力は、クリティカルタスクのために最速の変換が常に利用可能であることを確実にするであろうという利点があるであろう。
【発明の開示】
【００１２】
[概要]
１つの実施例において、Ｌ１  ＴＬＢにより管理されるハードウェアに関し、ページテーブルエントリーはＬ１  Ｌｏｃｋ（Ｌ１Ｌ）ビットのようなインジケータ（indicator）を含み、これはＬ１  ＴＬＢ内に記憶されたとき、対応するエントリーが置換に対してロックされるべきかあるかどうかを示す。Ｌ１  ＴＬＢがオペレーティングシステムによって管理され、（そしてエントリーをロックする機能を含む）他の実施例において、Ｌ１  ＴＬＢエントリーはＬ０  Ｌｏｃｋ（Ｌ０Ｌ）ビットのようなインジケータを含み、これはＬ０  ＴＬＢ内に記憶されたとき、エントリーが置換に対してロックされるべきであるかどうかを示す。この実施例において、仮想アドレスがＬ０  ＴＬＢ内でミスをし、そしてＬ１  ＴＬＢ内でヒットするとき、仮想アドレス、物理アドレスそしてページ属性はＬ０  ＴＬＢに書き込まれる。このエントリーは置換に対してＬ０ＴＬＢ内にロックされ、または、Ｌ１  ＴＬＢエントリー内のＬ０Ｌビットに応答して、ロックされない。
【００１３】
ある実施例は階層的変換索引バッファ（ＴＬＢ）を管理する方法に関する。上位レベルＴＬＢからのエントリーは下位レベルＴＬＢに複写される。低レベルＴＬＢにおけるエントリーは上位レベルＴＬＢエントリー内のインジケータに応答して置換に対してロックされる。
【００１４】
他の実施例はプロセッサに関する。プロセッサは命令実行パイプラインおよび高レベルＴＬＢおよび低レベルＴＬＢを含む階層的変換索引バッファ（ＴＬＢ）を含む。低レベルＴＬＢ内のエントリーはより高いレベル内のエントリーを複写する（replicate）。プロセッサはまた、アドレス変換において低レベルＴＬＢに最初にアクセスするために、そして低レベルＴＬＢの中に一致するエントリーが見つからない場合は、より高いレベルのＴＬＢをアクセスするために動作するＴＬＢ制御器を含む。制御器は、より高いレベルのＴＬＢ内における対応するエントリー内のインジケータに応答して、低レベルＴＬＢ内にエントリーをロックするようにさらに動作する。
【００１５】
他の実施例は、プロセッサ内で仮想アドレスを物理アドレスに変換する方法に関する。メモリアクセス命令は仮想アドレスを発生するために実行される。Ｌｅｖｅｌ−０変換索引バッファバッファ（Ｌ０  ＴＬＢ）は仮想アドレスの一部を用いてアクセスされる。もしＬ０  ＴＬＢ内で仮想アドレスがミスをすると、レベル１−ＴＬＢ（Ｌ１  ＴＬＢ）が仮想アドレスの一部を用いてアクスセされる。もし仮想アドレスがＬ１ＴＬＢ内でヒットすれば、仮想アドレスの一部とページ属性はＬ１  ＴＬＢから取得され、Ｌ１  ＴＬＢ内のレベル０ロック（Ｌ０Ｌ）インジケータは点検され、仮想アドレスの一部、物理アドレスの一部そしてページ属性はＬ０ＴＬＢ内にエントリーとして書き込まれ、そしてＬ０  ＴＬＢエントリーはＬ０Ｌインジケータに応答して置換に対してロックされる。
【００１６】
他の実施例は変換索引バッファ（ＴＬＢ）を管理する方法に関する。仮想アドレス関しＴＬＢがミスをすると、ページデータウォーク（page data walk）が対応する物理アドレスをおよびロックインジケータを取得するために実行され。少なくとも仮想および物理アドレスを含むエントリーがＴＬＢに書かれる。ＴＬＢ内のエントリーはインジケータに応答して置換に対してロックされる。
【００１７】
［詳細な記載］
図１はＬ０  ＴＬＢ１００、Ｌ１  ＴＬＢ１０２およびページテーブル１０４を示している機能的ブロック線図である。Ｌ０  ＴＬＢ１００およびＬ１  ＴＬＢ１０２はプロセッサ内の回路であり、そしてページテーブル１０４はメモリ内における論理的データ構造（logical data structure）である。ページ番号のような、仮想アドレスあるいは仮想アドレスの部分は、Ｌ０  ＴＬＢ１００に対して示される。もし仮想アドレスがヒットする場合には、Ｌ０  ＴＬＢ１００は対応する物理アドレスおよびページ属性を提供し、そしてキャッシュあるいは主メモリアクセスは継続することができる。これは最も早いアドレス変換であり、このことから高度の実行に関して推奨される。
【００１８】
もし仮想アドレスがＬ０  ＴＬＢ１００内においてミスすると、Ｌ１  ＴＬＢ１０２がアクセスされる。より大きなサイズのために、Ｌ１  ＴＬＢ１０２のアクセスはＬ０  ＴＬＢ１００アクセスよりも長くかかる。もし仮想アドレスがＬ１ＴＬＢ１０２内でヒットした場合は、対応する物理的アドレスおよびページ属性が提供され、そしてＬ０  ＴＬＢ１００がその下で動作するいずれの置換アルゴリズムにも従って、それは現存するＬ０  ＴＬＢ１００内のエントリーを置換してＬ０  ＴＬＢ１００内に書かれる。
【００１９】
もし仮想アドレスがＬ１  ＴＬＢ１０２内でミスした場合には、ページテーブル１０４が仮想対物理マッピングを確かめるためにアクセスされる。図１に単一機能ブロックとして示されるが、ページテーブル１０４は入れ子式（nested）のデータ構造内の複数のページテーブルを含むことができ、そしてフルページテーブル１０４トラバーサル（traversal）はいくつかの反復性アクセスを含むことができる。ページテーブル１０４トラバーサルが完了すると、物理的アドレスおよびページ属性は、もしも必要があれば現在動作可能な置換アルゴリズムに従って、現存するＬ１  ＴＬＢ１０２エントリーを置換し、Ｌ１  ＴＬＢ１０２に書き込まれる。もしアドレス変換情報がページテーブル104の中に見出せない場合は、エラー（error）が発生される。
【００２０】
ページテーブル１０４ウォークおよびＬ１  ＴＬＢ１０２へのエントリーの書き込みに続いて、アドレス変換を生成している命令を再実行することができ、そして仮想アドレスはＬ０  ＴＬＢ１００内ではミスをし、そしてＬ１  ＴＬＢ１０２内でヒットするであろう。Ｌ１  ＴＬＢ１０２は物理的アドレスおよびページ属性を提供し、それらはＬ０  ＴＬＢ１００へのエントリーとして仮想アドレスを用いて書き込まれる。いくつかの実行において、物理的アドレスおよびページ属性はページテーブルウォーク(page table walk)が完了すると、エントリーをＬ１  ＴＬＢに書き込むのと並行して、Ｌ０  ＴＬＢに直接書き込むことができる。これは図１において点線によって示されている。
【００２１】
仮想アドレスがＬ０  ＴＬＢ１００内でミスをし、そしてＬ１  ＬＴＢ１０２内でヒットする場合、エントリーはＬ０  ＴＬＢ１００に対して書き混まれる。もしＬ０  ＴＬＢ１００が満杯である場合は、エントリーは置き換えられなければならない。１つあるいはそれより多いエントリーをＬ０  ＴＬＢ１００内に置換に対してロックすることが可能なことは、あるクリティカルなタスクによって最大の実行を確実にするためには、有利なことであるかもしれない。しかしながら従来技術におけるプロセッサにおいては、オペレーティングシステムソフトウェアはＬ０  ＴＬＢ１００に対して直接のアクセスを有しておらず、そしてどの、あるいは何れかのＬ０  ＴＬＢ１００エントリーが置換に対してロックされるべきかを規定する方法がない。同様な状態はハードウェアで管理されたＬ１  ＴＬＢに対しても生じ、そしてそこではオペレーティングシステムは置換に対してＬ１  ＴＬＢエントリーをロックする方法がない。
【００２２】
１実施例に従えば、Ｌ０  ＬＯＣＫ、またはＬ０Ｌ、インジケータがＬ１  ＴＬＢ１０２エントリーに加えられる。Ｌ０Ｌインジケータは例えば１ビットを含むことができる。Ｌ０Ｌビットの状態は、Ｌ０  ＴＬＢ１００内における置換に対して、エントリーがロックされるべきか否かをプロセッサに通信する。Ｌ０Ｌビットはページテーブル１０４の中にページ属性とともに維持される。代わりに、オペレーティングシステムがエントリーを直接Ｌ１ＴＬＢ１０２に対して書き込む実行において、ソフトウェアはＬ０Ｌビットをセットすることができ、あるいは、Ｌ１  ＴＬＢ１０２が生成されそして記憶される場合はセットされない。仮想アドレスがＬ０  ＴＬＢ１００内でミスしそしてＬ１  ＴＬＢ１０２内でヒットする場合（ページテーブル１０４のトラバーサルに起因するＬ１  ＴＬＢ１０２の更新後を含む）、Ｌ０ＬビットはエントリーがＬ０  ＴＬＢ内にロックされるべきであるかを決定するために検査される。もしもＬ０Ｌビットがセットされている場合は、エントリーはＬ０ＴＬＢ１００に対して書き込まれ、そして置換に対してロックされる。
【００２３】
同様にして、ハードウェア管理されたＬ１  ＴＬB１０２、L1  ＬＯＣＫ、あるいはＬ１Ｌを有するプロセッサにおいて、インジケータはページテーブル内に保持され、そして対応するエントーがＬ１  ＴＬＢ１０２内にロックされるべきであるかどうかを示す。一般的に、この中のＬ０  ＴＬＢ１００エントリーが置換に対してロッキングすることに関するすべての議論は、ハードウェア管理されたＬ１  ＴＬＢ１０２の場合において、Ｌ１ＴＬＢ１０２エントリーを置換に対してロッキングすることに適用する。
【００２４】
図２は、１実施例に従い、Ｌ１  ＴＬＢ１０２エントリー内のＬ０Ｌビットによって示さる場合に、Ｌ０  ＴＬＢ１００エントリーをロッキングする手段を示す基本的なロック線図である。Ｌ０  ＴＬＢ１００は０からｎ−１と付番されたｎ個のエントリーを含む。フロアレジスタ（FLOOR register ）１０１は、Ｌ０ ＴＬＢ１００の”フロア”又は通常の割り当てに対して適用可能な最も低いＬ０ ＴＬＢ１００エントリーを表すエントリー番号を保持する。フロアより下にあるＬ０  ＴＬＢ１００エントリーは、置換に対して利用されず、そしてこのため“ロック”される。もし何れのエントリーもロックされない場合は、フロアレジスタ１０１は０を含み、そして置換アルゴリズムはＬ０  ＴＬＢ１００を通して動作する。もし図２に示したように、最低の2個のエントリーが対応するＬ１  ＴＬＢ１０２エントリー内のＬ０Ｌビットに応答してロックされる場合は、プロセッサはフロアレジスタ１０１を２にインクリメントし、第１のＬ０ ＴＬＢ１００エントリーは再分配のために利用可能である。この場合における通常のキャッシュ再配分アルゴリズムは、”フロア”または２から、Ｌ０  ＴＬＢ１００、ｎ−１のトップまでのＬ０  ＴＬＢ１００の部分において動作する。エントリーはフロアレジスタ１０１をデクリメントすることによってロックされないかも知れない。
【００２５】
ロックされたＬ０  ＴＬＢ１００エントリーを一箇所にグループ化することは置換アルゴリズムを単純化する。例えば、もしＬ０ＴＬＢ１００エントリーがラウンドーロビン基準（round-robin basis）で置換される場合は、”ロールオーバ（rollover）”ポイントのみがロックされたエントリーにより影響を受ける（即ち、インクリメンティングがｎー1を過ぎると、次のエントリーは０の代わりにフロアレジスタ１０１によってポイントされる）。非連続的なものは存在せず、ロックされたエントリーはラウンドロビン配分（round-robin allocation）によって“スッキプオーバー（skipped over）”されなければならないＬ０  ＴＬＢ１００空間を横切って分散する。Ｌ０ ＴＬＢ１００エントリーのグループ化およびロッキングのＦＬＯＯＲ方法は単に見本であって、そして限定されないことに留意されたい。Ｌ０  ＴＬＢ１００エントリーは広範囲の方法に従って再配分に対してロックされるかも知れない。同様に、エントリーは、この技術分野において知られているような、ソフトウェア制御の下に、あるいはページテーブル１０４において要求されるように、フロアレジスタを使用して、または他の方法によって、Ｌ１  ＴＬＢ１０２内にロックすることができる。
【００２６】
図３はパイプライン化されたアーキテクチャおよび階層的メモリ構造を使用した典型的なプロセッサ１０の機能的ブロック線図である。プロセッサ１０は制御論理１４に従って命令実行パイプライン１２において命令を実行する。パイプラインはパイプステージおよび１つあるいはそれ以上の算術論理装置１８（ＡＬＵ；Arithmetic Logic Units）に編成された種々のレジスタあるいはラッチ１６を含む。汎用レジスタ（ＧＰＲ；General Purpose Register）ファイル２０はメモリ階層のトップを含むレジスタを提供する。
【００２７】
パイプラインは、命令キャッシュ（Ｉ−キャッシュ）から、メモリアドレッシングおよびレベル０命令サイド  変換索引バッファ（Ｌ０  ＩＴＬＢ）２４およびＬ１  ＩＴＬＢ２５によって管理されている許可を有する命令を取り出す。データは、データキャッシュ（Ｄ−キャッシュ）２６から、メインＬ０  ＴＬＢ１００およびＬ１  ＴＬＢ１０２によって管理されているメモリアドレッシングおよび命令を用いてアクセスされる。種々の実施例において、Ｌ１  ＩＴＬＢ２４はＬ１  ＴＬＢ１０２の部分のコピーを含むことができる。代わりに、Ｌ１  ＩＴＬＢ２４およびＬ１  ＴＬＢ１０２は合体することができる。同様に、プロセッサ１０の種々の実施例において、Ｉ−キャッシュ２２およびＤ−キャッシュ２６は合体または一体化することができる。Ｉ−キャッシュ２２および/あるいはＤ−キャッシュ２６内におけるミスは、メモリインタヘース３０の制御のもとで、主メモリ（オフ−チップ  メモリ）３２ヘのアクセスの原因となる。ページテーブル１０４はメモリ３２内に記憶される。
【００２８】
プロセッサ１０は種々の周辺デバイス３６へのアクセスを制御する入力／出力（１／０）インタフェース３４を含むことができる。この技術分野において熟練した人は、プロセッサ１０の種々の変形が可能であることを認識するであろう。例えばプロセッサ１０はＩおよびＤキャッシュ２２，２６の何れかあるいは両者に関する第２レベルのキャッシュ（Ｌ２）を含むことができる。さらにプロセッサ１０において示された１つあるいはそれ以上の機能ブロックは特定実施例からは省略されるかも知れない。
【００２９】
図４は２００において一般的に示される１つの実施例に従うメモリアドレス変換プロセスを示しているフロー線図である。メモリアクセス命令は実行され（ブロック２０２）そして仮想アドレスあるいはそれらの部分はＬ０  ＴＬＢ１００に提供される（ブロック２０４）。もし仮想アドレスがＬ０  ＴＬＢ１００（ブロック２０６）内でヒットすれば、Ｌ０  ＴＬＢ１００は物理アドレスあるいはその部分を提供し、そしてページ属性（ブロック２０８）およびキャッシュ２２，２６あるいは主メモリ３２アクセスが続く（図示せず）。もし仮想アドレスがＬ０  ＴＬＢ１００（ブロック２０６に）内においてミスすると、仮想アドレスは変換のためＬ１  ＴＬＢ１０２に提供される。
【００３０】
もしも仮想アドレスがＬ１  ＴＬＢ１０２内でヒットすれば（ブロック２１２）、Ｌ１  ＴＬＢ１０２エントリー内のＬ０Ｌビットがチェックされる（ブロック２１４）。もしＬ０Ｌビットがセットされなければ、エントリーはＬ０  ＴＬＢ１００に加えられ（ブロック２１６、そして物理アドレスおよびページ属性が提供される（ブロック２０８）。もしＬ０Ｌビットがセットされていれば、エントリーはＬ０  ＴＬＢ１００に加えられ、そして置換に対してＬ０  ＴＬＢ１００内にロックされ（ブロック２１８）、そして物理アドレスおよびページ属性が提供される（ブロック２０８）。
【００３１】
もし仮想アドレスがＬ１  ＴＬＢ１０２（ブロック２１２）においてミスをした場合は、アドレス変換を得るためにページテーブル１０４がアドレスアクセスされる（ブロック２２０）。もし変換がページテーブル１０４のなかに見出せない場合（ブロック２２２）、そしてエラーが生成される（ブロック２２４）。もし変換がページテーブル１０４から得られる場合（ブロック２２２）には、変換はエントリーがＬ０  ＴＬＢ１００内の置換に対してロックされるべきかどうかを示しているＬ０Ｌビットを含むＬ１  ＴＬＢ１０２へのエントリーとして書き込まれる（ブロック２２６）。メモリアクセス命令２０２はそこでアドレス変換プロセスを再スタートするために再実行される。（ブロック２０２）。この時、仮想アドレスはＬ０  ＴＬＢ１００（ブロック２０６）内でミスし、そしてＬ１  ＴＬＢ１０２（ブロック２１２）内でヒットするであろう。エントリーはそこでＬ０  ＴＬＢ１００に書き込まれ、そしてＬ１  ＴＬＢ１０２エントリー内のＬ０Ｌビットの状態に従いロックされるかあるいはされないであろう（ブロック２１４，２１６，２１８）。図４のフロー線図はステップが連続的に起こることを示すが、１つの実施例においてはＬ０  ＴＬＢ１００およびＬ１  ＴＬＢ１０２は並行して起きる。
【００３２】
Ｌ１  ＴＬＢ１０２エントリー内において１あるいはそれより多いＬ０Ｌビットを定義することは、オペレーティングシステムに対して何れのエントリーがＬ０  ＴＬＢ１００において置換に対してロックされるべきであるかを指定する手段を与える。このことは、Ｌ０  ＴＬＢ１００に対し直接アクセスをすることなしに、特定のクリティカルタスクのための最速可能なメモリアドレス変換を確実にするオペレーションシステムを可能にする。同様に、ハードウェア管理されたＬ１  ＴＬＢ１０２の場合に、Ｌ１Ｌビットは対応するＬ１ＴＬＢ１０２エントリーが置換に対してロックされるべきであるかどうかを含むページテーブル１０４の中に維持することができる。
【００３３】
本発明はこの中で特定の特徴、概念および実施例に関して記述してきているが、本発明の広い範囲の中で種々の変形、修正および他の実施例が可能であり、従って、全ての変形、修正および実施例は本発明の範囲内にあるとみなされるべきであることは明らかである。それゆえに本実施例は実例となりそして限定されないすべての概念において解釈されるべきであり、添付された請求項の意味と等価な範囲内で生ずるすべての変化はここに含まれるべきであることを意図するものである。
【図面の簡単な説明】
【００３４】
【図１】図１はＬ０  ＴＬＢ，Ｌ１  ＴＬＢおよびページテーブルの機能的ブロック線図である。
【図２】図２はＬ０  ＴＬＢ内におけるエントリーロッキングを示している機能的ブロック線図である。
【図３】図３はプロセッサの機能的ブロック線図である。
【図４】図４は仮想から物理アドレス変換の流れ図である。
【図１】
2009506434.tif 000003
【図２】
2009506434.tif 000004
【図３】
2009506434.tif 000005
【図４】
2009506434.tif 000006
【国際調査報告】
2009506434.tif 000007
2009506434.tif 000008