(57)【要約】   プロセッサ内でのアドレス変換性能は、メモリの中の異なるページの間の境界クロシングの原因となるアドレスを識別し、両方のメモリページと関連するアドレス変換情報をリンクすることによって改善される。プロセッサの１つの態様によれば、プロセッサは、第１及び第２のメモリページの間のページ境界をクロスするメモリ領域へのアクセスを認識するように構成される回路を備える。回路は、また、第１及び第２のメモリページと関連するアドレス変換情報をリンクするように構成される。このように、同一のメモリ領域へのその後のアクセスに応答して、第１及び第２のメモリページと関連するアドレス変換情報は、１つのアドレス変換に基づいて検索可能である。
2010518519.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２のメモリページの間のページ境界をクロスするメモリの中の領域へのアクセスを認識することと、
前記第１及び第２のメモリページと関連するアドレス変換情報をリンクすることと
を具備し、
メモリの中の前記同一の領域へのその後のアクセスに応答して、前記第１及び第２のメモリページと関連するアドレス変換情報は、１つのアドレス変換に基づいて検索可能である、
プロセッサの中において整列されていないメモリアクセスを取り扱う方法。
【請求項２】
前記アクセスを認識することは、メモリアクセスの間にページ境界クロシングの原因となるように構成されたアドレスを識別することを具備する、請求項１に記載の方法。
【請求項３】
前記第１及び第２のメモリページと関連するアドレス変換情報をリンクすることは、前記アドレスを前記第２のメモリページと関連する前記アドレス変換情報とリンクすることを具備する、請求項２に記載の方法。
【請求項４】
アドレスを提示した命令を複製することを更に具備し、
前記命令の実行は、第１のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第２のメモリページと関連する物理アドレスに基づいて完了する、請求項２に記載の方法。
【請求項５】
前記第１及び第２のメモリページと関連するアドレス変換情報をリンクすることは、
変換索引バッファエントリの中に、第１のメモリページと関連する物理アドレス情報及び仮想アドレス情報を格納することと、
前記変換索引バッファエントリを前記第２のメモリページと関連する物理アドレス情報とリンクすることと
を具備する、請求項１に記載の方法。
【請求項６】
前記変換索引バッファエントリを前記第２のメモリページと関連する物理アドレス情報とリンクすることは、前記変換索引バッファエントリを識別する情報及び前記第２のメモリページと関連する物理アドレス情報を格納することを具備する、請求項５に記載の方法。
【請求項７】
前記変換索引バッファエントリを前記第２のメモリページと関連する物理アドレス情報をリンクすることは、
前記変換索引バッファエントリの中に、前記第２のメモリページと関連する物理アドレス情報及び前記第１のメモリページと関連する仮想及び物理アドレス情報を格納することと、
前記ページ境界クロシングの原因となる前記第１のメモリページと関連する仮想アドレスを示すために変換索引バッファエントリの中に１または複数のビットを設定することと
を具備する、請求項５に記載の方法。
【請求項８】
前記第１及び第２のメモリページと関連する前記アドレス変換情報の間のリンクを遮断することを更に具備する、請求項１に記載の方法。
【請求項９】
前記リンクを遮断することは、前記第２のメモリページと関連する物理アドレス情報を前記第１のメモリページと関連する仮想アドレス情報とリンクする情報を無効にすることを具備する、請求項８に記載の方法。
【請求項１０】
第１及び第２のメモリページの間のページ境界をクロスするメモリ領域へのアクセスを認識し、
前記第１及び第２のメモリページと関連するアドレス変換情報をリンクし、前記同一のメモリ領域へのその後のアクセスに応答して、前記第１及び第２のメモリページと関連するアドレス変換情報は、１つのアドレス変換に基づいて検索可能である
ように構成された回路を具備するプロセッサ。
【請求項１１】
前記回路は、メモリアクセスの間の前記ページ境界クロシングの原因となるように構成されたアドレスを識別するように構成される、請求項１０に記載のプロセッサ。
【請求項１２】
前記回路は、前記アドレスを前記第２のメモリページと関連するアドレス変換情報とリンクするように構成される、請求項１１に記載のプロセッサ。
【請求項１３】
前記回路は、前記アドレスを提示する命令を複製するように更に構成され、
前記命令の実行は、前記第１のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第２のメモリページと関連する物理アドレスに基づいて完了する、請求項１１に記載のプロセッサ。
【請求項１４】
前記回路は、変換索引バッファエントリの中に、前記第１のメモリページと関連する物理アドレス情報及び仮想アドレス情報を格納するように構成される、請求項１０に記載のプロセッサ。
【請求項１５】
前記回路は、前記変換索引バッファエントリを識別する情報及び前記第２のメモリと関連する物理アドレス情報を格納するように構成される、請求項１４記載のプロセッサ。
【請求項１６】
前記回路は、前記変換索引バッファエントリの中に、前記第２のメモリページと関連する物理アドレス情報及び前記第１のメモリページと関連する前記仮想及び物理アドレスを格納し、前記ページ境界クロシングの原因となる前記第１のメモリページと関連する仮想アドレスを示すために前記変換索引バッファエントリの中に１または複数のビットを設定するように構成される、請求項１４に記載のプロセッサ。
【請求項１７】
前記回路は、前記第１及び第２のメモリページと関連する前記アドレス変換情報の間の前記リンクを遮断するように更に構成される、請求項１０に記載のプロセッサ。
【請求項１８】
前記回路は、前記第２のメモリページと関連する物理アドレス情報を前記第１のメモリページと関連する仮想アドレス情報とリンクする情報を無効にするように構成される、請求項１７に記載のプロセッサ。
【請求項１９】
第１及び第２のメモリページの間のページ境界をクロスするメモリの中の領域にアクセスするように構成された命令を認識することと、
前記命令によって提示された仮想アドレスを前記第１のメモリページと関連する物理アドレスに変換することと、
前記仮想アドレスを前記第２のメモリページと関連する前記物理アドレスとリンクする予め設定された情報に基づいて前記第２のメモリページと関連する物理アドレスを検索することと
を具備する、プロセッサにおいてアドレス変換を実行する方法。
【請求項２０】
前記命令を複製することを更に具備し、
前記命令の実行は、前記第１のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第２のメモリページと関連する物理アドレスに基づいて完了する、請求項１９に記載の方法。
【請求項２１】
前記仮想アドレスを変換することは、
前記仮想アドレスに対応する変換索引バッファエントリを識別することと、
前記変換索引バッファエントリから前記第１のメモリページと関連する物理アドレスを検索することと
を更に具備する、請求項１９に記載の方法。
【請求項２２】
前記第２のメモリページと関連する物理アドレスを検索することは、
前記予め設定された情報が前記変換索引バッファエントリに格納された対応する情報と一致するかどうかを決定することと、
前記情報の一致に応答してアドレス変換情報を検索することと
を具備する、請求項２１に記載の方法。
【請求項２３】
前記第２のメモリページと関連する物理アドレスを検索することは、
前記変換索引バッファエントリの中の１または複数のビットが前記第１及び第２のメモリページの間のリンクを示すかどうかを決定することと、
前記第１及び第２のメモリページの間のリンクを示す前記１または複数のビットに応答して前記第１のメモリページと関連する前記物理アドレスを含む前記変換索引バッファエントリからアドレス変換情報を検索することと
を具備する、請求項２１に記載の方法。
【請求項２４】
第１及び第２のメモリページの間のページ境界をクロスするメモリの中の領域にアクセスするように構成された命令を認識し、
前記命令によって提示された仮想アドレスを前記第１のメモリページと関連する物理アドレスに変換し、
前記仮想アドレスを前記第２のメモリページと関連する前記物理アドレスとリンクする予め設定された情報に基づいて前記第２のメモリページと関連する物理アドレスを検索する
ように構成された回路を具備するプロセッサ。
【請求項２５】
前記回路は、前記命令を複製するように更に構成され、
前記命令の実行は、前記第１のメモリページと関連する前記物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第２のメモリページと関連する前記物理アドレスに基づいて完了する、請求項２４に記載のプロセッサ。
【請求項２６】
前記回路は、前記仮想アドレスに対応する変換索引バッファエントリを識別し、前記変換索引バッファエントリから前記第１のメモリページと関連する前記物理アドレスを検索するように構成される、請求項２４に記載のプロセッサ。
【請求項２７】
前記回路は、前記予め設定された情報が前記変換索引バッファエントリに格納された対応する情報と一致するかどうかを決定し、前記情報の一致に応答してアドレス変換情報を検索するように構成される、請求項２６に記載のプロセッサ。
【請求項２８】
前記回路は、前記変換索引バッファエントリの中の１または複数のビットが前記第１及び第２のメモリページの間のリンクを示すかどうかを決定し、前記第１及び第２のメモリページの間のリンクを示す前記１または複数のビットに応答して前記第１のメモリページと関連する前記物理アドレスを含む前記変換索引バッファエントリからアドレス変換情報を検索するように構成される、請求項２６に記載のプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にアドレス変換に関し、特にメモリページの境界クロシング条件（boundary crossing conditions）を生成する仮想アドレスを変換することに関する。
【背景技術】
【０００２】
仮想メモリは、メモリ管理技術である。それによって、ことによると、非連続的な物理メモリ（物理アドレス空間）は、連続的なメモリ（仮想アドレス空間）としてプロセス（ソフトウェア）に提示される。割り当てられた物理メモリは常に連続的に組織されていないけれども（例えばＳＤＲＡＭ及びＲＯＭのような同一のメディアの中でさえも）、連続的な仮想アドレス空間を処理するので、プロセスは線形シーケンスとしてメモリを見る。更に、プログラムは、通常、物理メモリがどのように割り当てられているかに気づいていない。その代わりとして、プロセッサまたは他の装置は、慣習的に、仮想メモリ割り当てを管理する。
【０００３】
メモリ管理は、物理的なメモリを複数のページ（またはセグメント）に分割して、メモリにアクセスするプロセスに透過的である現実の物理メモリページ上への仮想アドレスのマッピングを提供する。物理アドレス空間が対応するデータがメモリの中に現実に存する場所である間、プロセスは、仮想アドレス空間だけを見る。プロセッサは、慣習的に、アドレス変換を用いて物理アドレス空間上に仮想アドレス空間をマップする。アドレス変換は、与えられた仮想アドレスに基づいて物理アドレスを探索することを伴う。仮想アドレスは、慣習的に、少なくとも２つの部分、仮想ページ番号とページオフセットとに分割される。仮想ページ番号は、仮想メモリの特定のページを識別する。ページオフセットは、そのページの範囲内で望ましい領域（またはブロック）を識別する。
【０００４】
メインメモリの中で保持されたページテーブルは、慣習的に、仮想ページ番号及び対応する物理ページ番号のリストを格納する。ページテーブルは、仮想アドレスの仮想ページ番号部分を用いて探索される。もし、仮想ページ番号がページテーブルの中のエントリと一致するならば、対応する物理ページ番号がそのテーブルから検索される。さもなければ、ページテーブルエラーが発生する。検索された物理ページ番号は、ページオフセットと一緒に、メモリから情報を検索するために用いられる物理アドレスを形成する。ページ番号は、物理メモリの適切なページを識別する。そのページの範囲内で望ましいメモリ領域は、その時、ページオフセットを用いてアクセスされる。
【０００５】
性能を改善するために、しばしばアクセスされたページテーブルエントリは、プロセッサ、例えば変換索引バッファ（ＴＬＢ）に局所的に格納される。ＴＬＢは、ローカルキャッシュメモリのたった１つのレベルまたは多数のキャッシュレベル、例えば１次命令及びデータキャッシュ及び２次キャッシュを支援する。いずれにしても、ＴＬＢは、ページテーブルがするのと同様の同じ方法でアドレス変換を実行する。ＴＬＢが仮想ページ番号を用いて探索している間に一致が生じた場合、対応する物理ページ番号がＴＬＢから検索されて、物理的にタグ付きのキャッシュに、ページオフセットと共に提供される。物理アドレスがキャッシュの中でヒットした場合、その物理アドレスに対応するキャッシュライン（cache line）がそのキャッシュから検索される。別な方法では、より高いレベルのキャッシュ探索が発生する可能性がある。
【０００６】
仮想メモリは、全体のアドレスを物理メモリの中に常駐させる必要なくプログラムを実行することを可能にさせる。このように、プログラムは、現実に必要とされるより少ない物理メモリを用いて実行されることができる。更に、プログラムの仮想アドレス空間の各々はそのプログラムに排他的に割り当てられた物理メモリの１または複数のページに独立してマップされることができるので、仮想メモリは、複数のプログラムを互いに切り離す。また、アプリケーションプログラムは、メモリ管理に対して責任がないという点で簡単にされる。しかしながら、あるタイプのメモリアクセスは、首尾よく完了するために付加的なアドレス変換処理を必要とする。
【０００７】
例えば、整列されていないメモリアクセスが発生するとき、望ましい語が、１つのメモリ行の一部分及び他の一部分に位置される。２つの行が異なるメモリページに割り当てられている場合、ページ境界クロシング（page boundary crossing）が発生する。２つのメモリページの間の境界をクロスするメモリの中の領域を参照する命令は、慣習的に、複製されて、２つのパーツ（parts）において実行される。複製された命令の第１のページピース（first page piece）は、第１のメモリページと関連する物理アドレスに基づいて実行を完了し、複製された命令の第２のページピース（second page piece）は、第２のメモリページと関連するアドレスに基づいて実行を完了する。このように、異なるメモリページは、命令を複製することによって別々にアクセスされる。
【０００８】
多数のアドレス変換は、異なるメモリページと関連する物理メモリアドレスを得るために、慣習的に必要とされる。第１のアドレス変換は、第１のメモリページと関連する物理アドレスを検索するために実行され、第２のアドレス変換は、第２のメモリページと関連する物理アドレスを検索するために実行される。境界クロシング条件（boundary crossing condition）を生成する命令のために必要とされる付加的なアドレス変換処理は、特にメインメモリに保持されているページテーブルへのアクセスが必要とされる場合に、プロセッサ性能を低下させ、電力消費を増加させる。
【発明の概要】
【０００９】
ここに教示される装置及び方法によれば、プロセッサ内でのアドレス変換性能は、メモリの中の異なるページ間における境界クロシングが発生する物理または仮想アドレスを識別することによって改善される。すなわち、ページ境界をクロスもする非整列メモリアクセスを発生する場合、命令が識別される。このような条件が認識されると、両方のメモリページと関連するアドレス変換情報は、一緒にリンクされて、プロセッサの中に格納される。両方のページと関連するアドレス変換情報は、続いてアクセスされるメモリの中の同一のページクロシング（page-crossing）領域に反応する１つのアドレス変換を用いて得られることができる。このように、多数のアドレス変換は、避けられる。
【００１０】
プロセッサの１つの態様によれば、プロセッサは、第１及び第２のメモリページの間のページ境界をクロスするメモリの中の領域へのアクセスを認識するように構成された回路を備える。その回路は、また、第１及び第２のメモリページと関連するアドレス変換情報をリンクするように構成される。このように、同一のメモリ領域へのその後のアクセスに対して応答して、第１及び第２のメモリページと関連するアドレス変換情報は、１つのアドレス変換に基づいて検索されることが可能となる。
【００１１】
メモリの中の同一の領域が続いてアクセスされると、プロセッサ回路は、対応する命令を認識し、その命令によって提示される仮想アドレスを第１のメモリページと関連する物理的なアドレスに変換する。回路は、仮想アドレスを第２のメモリページと関連する物理アドレスとリンクしている予め設定された情報に基づいて、第２のメモリページと関連する物理アドレスを検索する。このように、第１及び第２のメモリページと関連するアドレス変換情報は、１つのアドレス変換に基づいて検索される。
【００１２】
もちろん、本発明は、上述の特徴及び長所に限られない。当業者は、以下の詳細な説明を読み、その伴う図面を見ることで、付加的な特徴及び長所を認識するであろう。
【図面の簡単な説明】
【００１３】
【図１】図１は、アドレス変換の間のページ境界クロシングをトラッキングするための回路を有するプロセッサの１つの態様を説明するブロック図。
【図２】図２は、図１のページクロシングトラッキング回路の１つの態様を説明するブロック図。
【図３】図３は、図１のページクロシングトラッキング回路の中のアドレス変換情報を格納するためのプログラム論理の１つの態様を説明する論理フロー図。
【図４】図４は、図１のページクロシングトラッキング回路からアドレス変換情報を検索するためのプログラム論理の１つの態様を説明する論理フロー図。
【図５】図５は、図１のページクロシングトラッキング回路の他の態様を説明するブロック図。
【発明を実施するための形態】
【００１４】
図１は、命令ユニット１２、実行ユニット１４、データ及び命令キャッシュ１６及び１８、２次キャッシュ２０及びバスインタフェースユニット２２を含むプロセッサ１０の１つの態様を説明する。命令ユニット１２は、実行ユニット１４に命令フロー（instruction flow）の集中制御を提供する。実行ユニット１４は、データキャッシュ１６の中においてロード及び格納されている情報を含む、命令ユニット１２によってディスパッチされた命令を実行する。データ及び命令キャッシュ１６及び１８は、それぞれ、データ及び命令を格納する。Ｌ２キャッシュ２０は、ＤＲＡＭ２４及び／または１つまたは１つ以上のハードディスクドライブ（ＨＤＤ）２６のようなプロセッサの外にあるメインメモリ及びデータ及び命令キャッシュ１６及び１８の間の高速メモリバッファを提供する。バスインタフェースユニット２２は、メインメモリ及び周辺装置２８のようなプロセッサの外にある装置及びプロセッサ１０の間で、データ、命令、アドレス及び制御信号を転送するための仕組みを提供する。
【００１５】
メインメモリは、プロセッサ１０上で実行するプロセスに対して仮想メモリとして表される。すなわち、メインメモリのページは、プログラム実行の間のプロセスによる使用のための仮想メモリとして割り当てられる。メモリ管理は、物理メモリをページに分割し、メモリにアクセスするプロセスに透過的である物理メモリページ上への仮想アドレスのマッピングを提供する。ページテーブル（図示せず）は、仮想及び物理メモリアドレス間のマッピングを可能にするためにメインメモリの中に保持される。メモリ管理ユニット（ＭＭＵ）３０またはプロセッサ１０の中に含まれる類似した装置は、アドレス変換性能を改善するために、度々または最近参照されたプロセッサ１０にローカルなページテーブルエントリを保持する。
【００１６】
この結果、ＭＭＵ３０と関連する、または含まれる変換索引バッファ（ＴＬＢ：Translation Lookaside Buffer）３２は、最も度々または最近アクセスされたページテーブルエントリを格納する。アドレス変換は、ＴＬＢ３２によってプロセッサ１０内で局所的に実行される。与えられた仮想ページ番号とＴＬＢエントリが一致する場合、対応する物理ページ番号はＴＬＢ３２によって提供される。さもなければ、より高いレベルのアドレス変換が、通常は、メインメモリに保持されているページテーブルを介してオペレーティングシステムソフトウェアによって、実行される。ＭＭＵ３０と関連する、または含まれるページクロシングトラッカー（page crossing tracker）３４は、メモリページ境界をクロスする整列されていないメモリアクセスを収容するために実行されたアドレス変換の数を減らすことによってアドレス変換性能を改善する。
【００１７】
ページクロシングトラッカー３４は、ページ境界クロシング条件（page boundary crossing condition）を生成する１つまたは複数の仮想または物理アドレスと関連するアドレス変換情報を格納する。すなわち、プロセッサ１０によって実行された命令が２つの物理メモリページの間の境界をクロスするメモリ領域を参照する場合、ページクロシングトラッカー３４は、第２のメモリページ、例えば第２のメモリページ及び仮想アドレスとのリンクを識別するページ番号または物理アドレスと関連するアドレス変換情報を格納する。このように、その後の命令が同一のアドレスを参照する場合、ページクロシングトラッカー３４は、そのアドレスを認識し、対応する物理アドレス情報を提供することが可能となる。したがって、ＴＬＢ３２は、第１のメモリページと関連する物理ページ番号を検索するためにただ１つのアドレス変換を実行する。第２のメモリページと関連する物理ページ番号は、ページクロシングトラッカー３４からノントランスレイショナリ（non-translationally）に検索される。すなわち、第２のメモリページと関連する物理ページ番号は、第２のアドレス変換を実行しなければならないことの代わりに、ページクロシングトラッカー３４から検索される。その命令は、複製されて、それぞれの物理アドレスに基づいて２つのパーツにおいて実行される。その命令がいくつかのキャッシュラインにキャッシュ１６、１８及び２２の１つにおいてクロスさせられる場合、その命令は、複数回、複製され得る。
【００１８】
図２は、プロセッサ１０に含まれるロード−ストアユニット（すなわち、実行ユニット１４の１つ）のいくつかのステージ及びページクロシングトラッカー３４の１つの態様を説明する。この態様によれば、ページクロシングトラッカー３４は、ページ境界クロシング条件（page boundary crossing condition）を生成するアドレスと関連するアドレス変換情報を格納するためのレジスタを備える。代わりに、ページクロシングトラッカー３４は、複数のエントリを持つテーブルであっても構わない。どちらにしても、ページクロシングトラッカー３４は、ページ境界クロシング（page boundary crossing）の原因となる少なくとも１つの仮想または物理アドレスと関連するアドレス変換情報を格納することによってアドレス変換処理を減らす。
【００１９】
ページクロシングトラッカー３４の動作は、ＴＬＢ３２の中のどのエントリとも最初は一致しない命令によって提示される仮想アドレス及び図３のプログラム論理に関連して次に記述される。そういうものとして、より高いレベルのアドレス変換は、仮想アドレスに対応する物理アドレスを得るために実行される。より詳細には、仮想アドレスは、仮想ページ番号及びオフセットを備えていても構わない。ページオフセットがそのページの範囲内の位置を識別する間、特定の仮想メモリを識別する。一致するＴＬＢエントリがこの例の中には最初は存在しないので、例えば図３のブロック１００によって説明されるように、第１のレベルのアドレス変換ステージ３６は、より高いレベルのアドレス変換が必要とされることを示す。より高いレベルのアドレス変換ステージ３８は、例えばメインメモリの中に保持されるページテーブルまたはプロセッサ１０に含まれるより高いレベルのＴＬＢ（図示せず）にアクセスすることによって、仮想アドレスの変換を要求する。どちらにしても、仮想アドレスと関連する物理アドレスは、結局は得られる。
【００２０】
例えば図３のブロック１０２によって説明されるように、アドレス変換情報は、ＴＬＢエントリの中に格納される。このように、アドレス変換情報は、同一の仮想アドレスがその後に要求されるという場合には、より容易に利用できる。１つの態様においては、例えば図３のブロック１０４によって説明されるように、マルチプレクサ回路（multiplexer circuitry）のような物理アドレス選択ステージ４０または仮想アドレスが知られている他のいずれかのステージは、仮想アドレスが２つのページの間の境界をクロスする物理メモリ領域に変換されるかどうかも決定する。例えば、仮想アドレスのページオフセット部分は、ページ境界クロシング（page boundary crossing）が発生するかどうかを決定するために、メモリページサイズ設定と比較される。そのアドレスがメモリの単一のページの範囲内に位置付けられたメモリ領域に変換される場合、例えば図３のブロック１０６によって説明されるように、命令実行は、変換された物理アドレスに基づいて完了される。例えば、キャッシュアクセスステージ４２は、データキャッシュ１６またはＬ２キャッシュ２０が物理アドレスによってタグが付けられたライン（line）を含むかどうかを決定する。もし、データキャッシュ１６またはＬ２キャッシュ２０が物理アドレスによってタグが付けられたラインを含まない場合、キャッシュステージ４２は外部のメモリから当該ラインを検索する。
【００２１】
しかしながら、仮想アドレスが複数のメモリページをまたがるメモリ領域を参照する場合、例えば図３のブロック１０８によって説明されるように、命令複製ステージ４４は、命令を複製する。例えば、そのアドレスが１つの物理メモリページの中に位置付けられている４バイト及び他のページの中に位置付けられている４バイトを持つクワドワード（quadword）を参照する場合、予め変換された物理アドレスは、第１のメモリページの中にある４バイトを検索するために用いられる。第２のメモリページの中に位置付けられた４バイトを検索するために、例えば図３のブロック１１０によって説明されるように、第２のページを識別する物理アドレスは、より高いレベルのアドレス変換ステージ３８によって得られる。例えば図３のブロック１１２によって説明されるように、複製された命令の第１のページピースは、第１のメモリページを識別する物理アドレスに基づいて実行を完了する。例えば図３のブロック１１４によって説明されるように、複製された命令の第２のページピースは、第２のメモリページを識別する物理アドレスに基づいて実行を完了する。ライトバックステージ４６は、命令実行結果の適切な記憶を確実にする。
【００２２】
ページ境界クロシングが検出されたので、第２のメモリページのために得られたアドレス変換情報は、その後の使用のために格納される。しかしながら、異なるＴＬＢエントリの中にその情報を格納する代わりに、例えば図３のブロック１１６によって説明されるように、それはページクロシングトラッカー（page crossing tracker）３４の物理アドレスフィールド４８の中に格納される。更に、インジケータ値は、インジケータフィールド５０の中に格納される。インジケータ値は、第２のページのアドレス変換情報を含むページクロシングトラッカーエントリ（page crossing tracker entry）を、第１のページのアドレス変換情報を含むＴＬＢエントリとリンクする。
【００２３】
１つの態様においては、インジケータフィールド５０は、第１のメモリページと関連するアドレス変換情報を含むＴＬＢエントリのインデックス値を格納する。他の態様においては、インジケータフィールド５０は、第１のメモリページと関連するページ番号または物理アドレスを格納する。更に他の態様においては、インジケータフィールド５０は、境界条件（boundary crossing condition）を生成する仮想アドレスを格納する。当業者は、第１のメモリページと関連するＴＬＢエントリと物理アドレス情報４８をリンクするために、一般の様々な値がインジケータフィールド５０の中に格納されることを容易に認識するであろう。更に、命令複製ステージ４４は、例えばページ境界クロシングの原因となる物理アドレスを識別することによって、物理アドレス選択ステージ４０の代わりにページ境界クロシングを識別しても構わない。それにもかかわらず、メモリの中の同一の領域がその後にアクセスされる場合、ページクロシングトラッカー３４は、インジケータフィールド５０を調査することによって境界クロシング条件（boundary crossing condition）を認識する。それに応じて、トラッカー３４は、第２のページと関連するアドレス変換情報を提供する。
【００２４】
ページクロシングトラッカー３４の動作は、前に論じられた境界クロシング条件（boundary crossing condition）の原因となった同一の仮想アドレスを提示するその後の命令及び図４のプログラム論理に関連して次に記述される。ＴＬＢ３２はこの例においては一致するエントリを含むので、例えば図４のブロック２００によって説明されるように、仮想アドレスと関連するページ番号または物理アドレスは、ＴＬＢ３２によって提供される。例えば図４のブロック２０２によって説明されるように、物理アドレス選択ステージ４０は、仮想アドレスがページ境界をクロスするメモリの中の領域を参照するかどうかを決定する。代わりに、命令複製ステージ４４は、対応する物理アドレスがページ境界クロシング条件（page boundary crossing condition）の原因となるかどうかを決定する。それにもかかわらず、境界クロシング条件（boundary crossing condition）が検出されない場合、例えば図４のブロック２０４によって説明されるように、命令は、ＴＬＢ３２によって提供される物理アドレス情報に基づいて実行を完了する。
【００２５】
しかしながら、本例において、仮想アドレスは、第１及び第２のメモリページの間でページ境界クロシングの原因となると知られている。このように、例えば図４のブロック２０６によって説明されるように、命令は前に記述されたように複製される。更に、ページクロシングトラッカー３４のインジケータフィールド５０は、リンクが仮想アドレスと共に形成されているかどうかを決定するために調査される。１つの態様においては、一致するＴＬＢエントリインデックスは、インジケータフィールド５０に格納される１つまたは複数の値と比較される。他の態様においては、ＴＬＢ３２によって提供される対応する物理アドレス（またはページ番号）または仮想アドレスは、インジケータフィールド５０に格納される１つまたは複数のアドレス値と比較される。
【００２６】
それにもかかわらず、インジケータフィールド５０に格納される情報は、トラッカー３４が望まれた物理アドレス情報を含むかどうかを示す。エントリが無効であることを有効フィールド５２が示さない限り、図４のブロック２０８によって説明されるように、第２のページと関連する物理アドレス情報は、ページクロシングトラッカー３４から検索される。ＴＬＢの中の対応するエントリが無効にされた場合、有効フィールド５２は、無効を示す。
【００２７】
例えば図４のブロック２１０によって説明されるように、複製された命令の第１のページピースは、ＴＬＢ３２によって提供されるように第１のメモリページを識別する物理アドレスに基づいて実行を完了する。例えば図４のブロック２１２によって説明されるように、複製された命令の第２のページピースは、ページクロシングトラッカー３４から検索されるように第２のメモリページを識別する物理アドレスに基づいて実行を完了する。ページクロシングトラッカー３４が第２のページのためのアドレス変換情報を含む場合、回路（図示せず）は、その後のアドレス変換が発生しないように防ぐ。このように、ページクロシングトラッカー３４がページ境界クロシング条件（page boundary crossing condition）を認識する場合、１つのアドレス変換のみが実行される。
【００２８】
図５は、ページクロシングトラッカー３４の他の態様を説明する。この態様によれば、トラッカー３４は、ＴＬＢ３２の一部として実現される。ＴＬＢ３２の中の各々のエントリは、有効フィールド５４、インジケータフィールド５６、インデックス５８、タグフィールド６０及び２つの物理アドレスフィールド６２及び６４を持つ。タグフィールド６０は、これらの仮想アドレスの仮想アドレス（またはページ番号）を格納し、これらの仮想アドレスの物理アドレス情報はＴＬＢ３２によって保持される。そういうものとして、タグフィールド６０は、与えられた仮想アドレスと一致するレコードがＴＬＢ３２に格納されているかどうかを決定するためにＴＬＢアクセスの間に検索される。
【００２９】
第１の物理アドレスフィールド６２は、ＴＬＢ３２によって保持されるレコードを持つ各々の仮想アドレスに対応する物理ページ番号または完全なアドレスのような物理アドレス情報を含む。特定の仮想アドレスが２つのメモリページの間で境界クロシングの原因となると知られている場合、そのときは第２の物理アドレスフィールド６４は、第２のメモリページと関連する物理アドレス情報を含む。対応するＴＬＢエントリが境界クロシング条件（boundary crossing condition）を生成する仮想アドレスと関連づけられている場合、インジケータフィールド５６は、物理アドレスフィールド６２及び６４をリンクしている１または複数のビットを含む。
【００３０】
ＴＬＢ３２の一部として実現されるページクロシングトラッカー３４の動作は、ＴＬＢ３２の中のいずれのエントリとも最初は一致しない命令によって提示される仮想アドレスに関連して次に記述される。例えば図３のブロック１００によって説明されるように、より高いレベルのアドレス変換は、仮想アドレスに対応する物理アドレスを得るために実行される。例えば図３のブロック１０２によって説明されるように、対応するＴＬＢエントリの中の物理アドレスフィールド６２は、変換結果によりアップデートされる。仮想アドレスがメモリアクセス中に２つのメモリページの間の境界クロシングの原因となるであろうことを物理アドレス選択ステージ４０が決定する場合に、第２のより高いレベルのアドレス変換は実行される。代わりに、命令複製ステージ４４は、対応する物理アドレスに基づいてページ境界クロシング条件（page boundary crossing condition）を検出しても構わない。それにもかかわらず、例えば図３のブロック１１０によって説明されるように、第２のメモリページを識別する物理アドレスは、第２のより高いレベルのアドレス変換の間に得られる。このように、両方のページのための物理アドレス情報は、命令実行の完了のために利用できる。
【００３１】
例えば図３のブロック１０８、１１２及び１１４によって説明されるように、命令は複製されて、実行は前に記述されたように２つの物理メモリアドレスを用いて完了される。更に、例えば図３のブロック１１６によって説明されるように、第２のメモリページと関連する物理アドレス情報は、第１のページと関連する物理アドレス情報を含む同一のＴＬＢエントリに格納される。すなわち、同一のＴＬＢエントリにおいて、第１のページと関連する物理アドレス情報は第１のアドレスフィールド６２に格納されて、第２のページと関連する物理アドレス情報は第２のアドレスフィールド６４に格納される。ＴＬＢエントリの中のインジケータフィールド５６は、２つの物理アドレスがリンクされて、ページ境界クロシング条件（page boundary crossing condition）を生成する仮想アドレスと関連付けられているということを示すために設定される。このように、その後の命令が同一の仮想または物理アドレスを参照する場合、１つのアドレス変換のみが第１及び第２のメモリページと関連する物理アドレス情報を得るために必要とされる。
【００３２】
ＴＬＢ３２の一部として実現されるページクロシングトラッカーの動作は、前に記述された境界クロシング条件（boundary crossing condition）を生成した同一の仮想アドレスをアクセスするその後の命令に関連して次に記述される。ＴＬＢ３２がアクセスされた場合、例えば図４のブロック２００によって説明されるように、一致するエントリは、仮想アドレスをＴＬＢ３２に格納されたタグ値と比較することによって識別される。本例において、仮想アドレスは、第１及び第２のメモリページの間のページ境界クロシングの原因となると知られている。このように、命令は、例えば図４のブロック２０６によって説明されるように、前に記述されたように複製される。更に、一致するＴＬＢエントリの第１のアドレスフィールド６２は、第１のメモリページと関連する物理アドレス情報を提供する。例えば図４のブロック２１０によって説明されるように、複製された命令の第１のページピースの実行は、第１のアドレスフィールド６２から得られる物理アドレス情報に基づいて完了する。
【００３３】
更に、一致するＴＬＢエントリの中のインジケータフィールド５６は、第１及び第２の物理アドレスフィールド６２及び６４がリンクされているということを示す。したがって、例えば図４のブロック２０８によって説明されるように、第２のアドレスフィールド６４に格納された物理アドレス情報は、検索される。第２のアドレスフィールド６４から検索された物理アドレス情報は、第２のメモリページを識別する。例えば図４のブロック２１２によって説明されるように、複製された命令の第２のページピースの実行は、第２のアドレスフィールド６４から得られた物理アドレス情報に基づいて完了する。このように、１つのアドレス変換のみがその後の命令の実行の間に実行される。
【００３４】
ＴＬＢエントリが無効にされたことを有効フィールド５４が示す場合、例えば図３のブロック１００及び１１０によって説明されるように、アドレス変換は実行されず、より高いレベルのアドレス変換ステージ３８は、また、前に記述されたように必要な物理アドレスを得る。更に、インジケータフィールド５６は、上書きされているＴＬＢエントリまたは更新されているアドレス変換に影響を与えるアーキテキクトされたレジスタに応答して２つのメモリページの間のリンクが無効にされることを示しても構わない。無効ページクロシングリンク（invalid page crossing link）に遭遇した場合、リンクされたページと関連するアドレス変換情報は用いられない。その代わりとして、その後のアドレス変換が実行される。
【００３５】
上記範囲の変形例及び応用例を考慮した場合、本発明は、上記説明によっても添付図面によっても限定されないことが理解されるべきである。本発明は、特許請求の範囲及びその法律上の均等物によってのみ限定される。
【図１】
2010518519.tif 000003
【図２】
2010518519.tif 000004
【図３】
2010518519.tif 000005
【図４】
2010518519.tif 000006
【図５】
2010518519.tif 000007
【国際調査報告】
2010518519.tif 000008
2010518519.tif 000009