説明

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

【課題】メモリの中の異なるページの間の境界クロシングの原因となるアドレスを識別し、プロセッサ内でのアドレス変換性能を改善する。
【解決手段】プロセッサは、第1及び第2のメモリページの間のページ境界をクロスするメモリ領域へのアクセスを認識するように構成される回路を備える。回路は、また、第1及び第2のメモリページと関連するアドレス変換情報をリンクするように構成される。このように、同一のメモリ領域へのその後のアクセスに応答して、第1及び第2のメモリページと関連するアドレス変換情報は、1つのアドレス変換に基づいて検索可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般にアドレス変換に関し、特にメモリページの境界クロシング条件(boundary crossing conditions)を生成する仮想アドレスを変換することに関する。
【背景技術】
【0002】
仮想メモリは、メモリ管理技術である。それによって、ことによると、非連続的な物理メモリ(物理アドレス空間)は、連続的なメモリ(仮想アドレス空間)としてプロセス(ソフトウェア)に提示される。割り当てられた物理メモリは常に連続的に組織されていないけれども(例えばSDRAM及びROMのような同一のメディアの中でさえも)、連続的な仮想アドレス空間を処理するので、プロセスは線形シーケンスとしてメモリを見る。更に、プログラムは、通常、物理メモリがどのように割り当てられているかに気づいていない。その代わりとして、プロセッサまたは他の装置は、慣習的に、仮想メモリ割り当てを管理する。
【0003】
メモリ管理は、物理的なメモリを複数のページ(またはセグメント)に分割して、メモリにアクセスするプロセスに透過的である現実の物理メモリページ上への仮想アドレスのマッピングを提供する。物理アドレス空間が対応するデータがメモリの中に現実に存する場所である間、プロセスは、仮想アドレス空間だけを見る。プロセッサは、慣習的に、アドレス変換を用いて物理アドレス空間上に仮想アドレス空間をマップする。アドレス変換は、与えられた仮想アドレスに基づいて物理アドレスを探索することを伴う。仮想アドレスは、慣習的に、少なくとも2つの部分、仮想ページ番号とページオフセットとに分割される。仮想ページ番号は、仮想メモリの特定のページを識別する。ページオフセットは、そのページの範囲内で望ましい領域(またはブロック)を識別する。
【0004】
メインメモリの中で保持されたページテーブルは、慣習的に、仮想ページ番号及び対応する物理ページ番号のリストを格納する。ページテーブルは、仮想アドレスの仮想ページ番号部分を用いて探索される。もし、仮想ページ番号がページテーブルの中のエントリと一致するならば、対応する物理ページ番号がそのテーブルから検索される。さもなければ、ページテーブルエラーが発生する。検索された物理ページ番号は、ページオフセットと一緒に、メモリから情報を検索するために用いられる物理アドレスを形成する。ページ番号は、物理メモリの適切なページを識別する。そのページの範囲内で望ましいメモリ領域は、その時、ページオフセットを用いてアクセスされる。
【0005】
性能を改善するために、しばしばアクセスされたページテーブルエントリは、プロセッサ、例えば変換索引バッファ(TLB)に局所的に格納される。TLBは、ローカルキャッシュメモリのたった1つのレベルまたは多数のキャッシュレベル、例えば1次命令及びデータキャッシュ及び2次キャッシュを支援する。いずれにしても、TLBは、ページテーブルがするのと同様の同じ方法でアドレス変換を実行する。TLBが仮想ページ番号を用いて探索している間に一致が生じた場合、対応する物理ページ番号がTLBから検索されて、物理的にタグ付きのキャッシュに、ページオフセットと共に提供される。物理アドレスがキャッシュの中でヒットした場合、その物理アドレスに対応するキャッシュライン(cache line)がそのキャッシュから検索される。別な方法では、より高いレベルのキャッシュ探索が発生する可能性がある。
【0006】
仮想メモリは、全体のアドレスを物理メモリの中に常駐させる必要なくプログラムを実行することを可能にさせる。このように、プログラムは、現実に必要とされるより少ない物理メモリを用いて実行されることができる。更に、プログラムの仮想アドレス空間の各々はそのプログラムに排他的に割り当てられた物理メモリの1または複数のページに独立してマップされることができるので、仮想メモリは、複数のプログラムを互いに切り離す。また、アプリケーションプログラムは、メモリ管理に対して責任がないという点で簡単にされる。しかしながら、あるタイプのメモリアクセスは、首尾よく完了するために付加的なアドレス変換処理を必要とする。
【0007】
例えば、整列されていないメモリアクセスが発生するとき、望ましい語が、1つのメモリ行の一部分及び他の一部分に位置される。2つの行が異なるメモリページに割り当てられている場合、ページ境界クロシング(page boundary crossing)が発生する。2つのメモリページの間の境界をクロスするメモリの中の領域を参照する命令は、慣習的に、複製されて、2つのパーツ(parts)において実行される。複製された命令の第1のページピース(first page piece)は、第1のメモリページと関連する物理アドレスに基づいて実行を完了し、複製された命令の第2のページピース(second page piece)は、第2のメモリページと関連するアドレスに基づいて実行を完了する。このように、異なるメモリページは、命令を複製することによって別々にアクセスされる。
【0008】
多数のアドレス変換は、異なるメモリページと関連する物理メモリアドレスを得るために、慣習的に必要とされる。第1のアドレス変換は、第1のメモリページと関連する物理アドレスを検索するために実行され、第2のアドレス変換は、第2のメモリページと関連する物理アドレスを検索するために実行される。境界クロシング条件(boundary crossing condition)を生成する命令のために必要とされる付加的なアドレス変換処理は、特にメインメモリに保持されているページテーブルへのアクセスが必要とされる場合に、プロセッサ性能を低下させ、電力消費を増加させる。
【発明の概要】
【0009】
ここに教示される装置及び方法によれば、プロセッサ内でのアドレス変換性能は、メモリの中の異なるページ間における境界クロシングが発生する物理または仮想アドレスを識別することによって改善される。すなわち、ページ境界をクロスもする非整列メモリアクセスを発生する場合、命令が識別される。このような条件が認識されると、両方のメモリページと関連するアドレス変換情報は、一緒にリンクされて、プロセッサの中に格納される。両方のページと関連するアドレス変換情報は、続いてアクセスされるメモリの中の同一のページクロシング(page-crossing)領域に反応する1つのアドレス変換を用いて得られることができる。このように、多数のアドレス変換は、避けられる。
【0010】
プロセッサの1つの態様によれば、プロセッサは、第1及び第2のメモリページの間のページ境界をクロスするメモリの中の領域へのアクセスを認識するように構成された回路を備える。その回路は、また、第1及び第2のメモリページと関連するアドレス変換情報をリンクするように構成される。このように、同一のメモリ領域へのその後のアクセスに対して応答して、第1及び第2のメモリページと関連するアドレス変換情報は、1つのアドレス変換に基づいて検索されることが可能となる。
【0011】
メモリの中の同一の領域が続いてアクセスされると、プロセッサ回路は、対応する命令を認識し、その命令によって提示される仮想アドレスを第1のメモリページと関連する物理的なアドレスに変換する。回路は、仮想アドレスを第2のメモリページと関連する物理アドレスとリンクしている予め設定された情報に基づいて、第2のメモリページと関連する物理アドレスを検索する。このように、第1及び第2のメモリページと関連するアドレス変換情報は、1つのアドレス変換に基づいて検索される。
【0012】
もちろん、本発明は、上述の特徴及び長所に限られない。当業者は、以下の詳細な説明を読み、その伴う図面を見ることで、付加的な特徴及び長所を認識するであろう。
【図面の簡単な説明】
【0013】
【図1】図1は、アドレス変換の間のページ境界クロシングをトラッキングするための回路を有するプロセッサの1つの態様を説明するブロック図。
【図2】図2は、図1のページクロシングトラッキング回路の1つの態様を説明するブロック図。
【図3】図3は、図1のページクロシングトラッキング回路の中のアドレス変換情報を格納するためのプログラム論理の1つの態様を説明する論理フロー図。
【図4】図4は、図1のページクロシングトラッキング回路からアドレス変換情報を検索するためのプログラム論理の1つの態様を説明する論理フロー図。
【図5】図5は、図1のページクロシングトラッキング回路の他の態様を説明するブロック図。
【発明を実施するための形態】
【0014】
図1は、命令ユニット12、実行ユニット14、データ及び命令キャッシュ16及び18、2次キャッシュ20及びバスインタフェースユニット22を含むプロセッサ10の1つの態様を説明する。命令ユニット12は、実行ユニット14に命令フロー(instruction flow)の集中制御を提供する。実行ユニット14は、データキャッシュ16の中においてロード及び格納されている情報を含む、命令ユニット12によってディスパッチされた命令を実行する。データ及び命令キャッシュ16及び18は、それぞれ、データ及び命令を格納する。L2キャッシュ20は、DRAM24及び/または1つまたは1つ以上のハードディスクドライブ(HDD)26のようなプロセッサの外にあるメインメモリ及びデータ及び命令キャッシュ16及び18の間の高速メモリバッファを提供する。バスインタフェースユニット22は、メインメモリ及び周辺装置28のようなプロセッサの外にある装置及びプロセッサ10の間で、データ、命令、アドレス及び制御信号を転送するための仕組みを提供する。
【0015】
メインメモリは、プロセッサ10上で実行するプロセスに対して仮想メモリとして表される。すなわち、メインメモリのページは、プログラム実行の間のプロセスによる使用のための仮想メモリとして割り当てられる。メモリ管理は、物理メモリをページに分割し、メモリにアクセスするプロセスに透過的である物理メモリページ上への仮想アドレスのマッピングを提供する。ページテーブル(図示せず)は、仮想及び物理メモリアドレス間のマッピングを可能にするためにメインメモリの中に保持される。メモリ管理ユニット(MMU)30またはプロセッサ10の中に含まれる類似した装置は、アドレス変換性能を改善するために、度々または最近参照されたプロセッサ10にローカルなページテーブルエントリを保持する。
【0016】
この結果、MMU30と関連する、または含まれる変換索引バッファ(TLB:Translation Lookaside Buffer)32は、最も度々または最近アクセスされたページテーブルエントリを格納する。アドレス変換は、TLB32によってプロセッサ10内で局所的に実行される。与えられた仮想ページ番号とTLBエントリが一致する場合、対応する物理ページ番号はTLB32によって提供される。さもなければ、より高いレベルのアドレス変換が、通常は、メインメモリに保持されているページテーブルを介してオペレーティングシステムソフトウェアによって、実行される。MMU30と関連する、または含まれるページクロシングトラッカー(page crossing tracker)34は、メモリページ境界をクロスする整列されていないメモリアクセスを収容するために実行されたアドレス変換の数を減らすことによってアドレス変換性能を改善する。
【0017】
ページクロシングトラッカー34は、ページ境界クロシング条件(page boundary crossing condition)を生成する1つまたは複数の仮想または物理アドレスと関連するアドレス変換情報を格納する。すなわち、プロセッサ10によって実行された命令が2つの物理メモリページの間の境界をクロスするメモリ領域を参照する場合、ページクロシングトラッカー34は、第2のメモリページ、例えば第2のメモリページ及び仮想アドレスとのリンクを識別するページ番号または物理アドレスと関連するアドレス変換情報を格納する。このように、その後の命令が同一のアドレスを参照する場合、ページクロシングトラッカー34は、そのアドレスを認識し、対応する物理アドレス情報を提供することが可能となる。したがって、TLB32は、第1のメモリページと関連する物理ページ番号を検索するためにただ1つのアドレス変換を実行する。第2のメモリページと関連する物理ページ番号は、ページクロシングトラッカー34からノントランスレイショナリ(non-translationally)に検索される。すなわち、第2のメモリページと関連する物理ページ番号は、第2のアドレス変換を実行しなければならないことの代わりに、ページクロシングトラッカー34から検索される。その命令は、複製されて、それぞれの物理アドレスに基づいて2つのパーツにおいて実行される。その命令がいくつかのキャッシュラインにキャッシュ16、18及び22の1つにおいてクロスさせられる場合、その命令は、複数回、複製され得る。
【0018】
図2は、プロセッサ10に含まれるロード−ストアユニット(すなわち、実行ユニット14の1つ)のいくつかのステージ及びページクロシングトラッカー34の1つの態様を説明する。この態様によれば、ページクロシングトラッカー34は、ページ境界クロシング条件(page boundary crossing condition)を生成するアドレスと関連するアドレス変換情報を格納するためのレジスタを備える。代わりに、ページクロシングトラッカー34は、複数のエントリを持つテーブルであっても構わない。どちらにしても、ページクロシングトラッカー34は、ページ境界クロシング(page boundary crossing)の原因となる少なくとも1つの仮想または物理アドレスと関連するアドレス変換情報を格納することによってアドレス変換処理を減らす。
【0019】
ページクロシングトラッカー34の動作は、TLB32の中のどのエントリとも最初は一致しない命令によって提示される仮想アドレス及び図3のプログラム論理に関連して次に記述される。そういうものとして、より高いレベルのアドレス変換は、仮想アドレスに対応する物理アドレスを得るために実行される。より詳細には、仮想アドレスは、仮想ページ番号及びオフセットを備えていても構わない。ページオフセットがそのページの範囲内の位置を識別する間、特定の仮想メモリを識別する。一致するTLBエントリがこの例の中には最初は存在しないので、例えば図3のブロック100によって説明されるように、第1のレベルのアドレス変換ステージ36は、より高いレベルのアドレス変換が必要とされることを示す。より高いレベルのアドレス変換ステージ38は、例えばメインメモリの中に保持されるページテーブルまたはプロセッサ10に含まれるより高いレベルのTLB(図示せず)にアクセスすることによって、仮想アドレスの変換を要求する。どちらにしても、仮想アドレスと関連する物理アドレスは、結局は得られる。
【0020】
例えば図3のブロック102によって説明されるように、アドレス変換情報は、TLBエントリの中に格納される。このように、アドレス変換情報は、同一の仮想アドレスがその後に要求されるという場合には、より容易に利用できる。1つの態様においては、例えば図3のブロック104によって説明されるように、マルチプレクサ回路(multiplexer circuitry)のような物理アドレス選択ステージ40または仮想アドレスが知られている他のいずれかのステージは、仮想アドレスが2つのページの間の境界をクロスする物理メモリ領域に変換されるかどうかも決定する。例えば、仮想アドレスのページオフセット部分は、ページ境界クロシング(page boundary crossing)が発生するかどうかを決定するために、メモリページサイズ設定と比較される。そのアドレスがメモリの単一のページの範囲内に位置付けられたメモリ領域に変換される場合、例えば図3のブロック106によって説明されるように、命令実行は、変換された物理アドレスに基づいて完了される。例えば、キャッシュアクセスステージ42は、データキャッシュ16またはL2キャッシュ20が物理アドレスによってタグが付けられたライン(line)を含むかどうかを決定する。もし、データキャッシュ16またはL2キャッシュ20が物理アドレスによってタグが付けられたラインを含まない場合、キャッシュステージ42は外部のメモリから当該ラインを検索する。
【0021】
しかしながら、仮想アドレスが複数のメモリページをまたがるメモリ領域を参照する場合、例えば図3のブロック108によって説明されるように、命令複製ステージ44は、命令を複製する。例えば、そのアドレスが1つの物理メモリページの中に位置付けられている4バイト及び他のページの中に位置付けられている4バイトを持つクワドワード(quadword)を参照する場合、予め変換された物理アドレスは、第1のメモリページの中にある4バイトを検索するために用いられる。第2のメモリページの中に位置付けられた4バイトを検索するために、例えば図3のブロック110によって説明されるように、第2のページを識別する物理アドレスは、より高いレベルのアドレス変換ステージ38によって得られる。例えば図3のブロック112によって説明されるように、複製された命令の第1のページピースは、第1のメモリページを識別する物理アドレスに基づいて実行を完了する。例えば図3のブロック114によって説明されるように、複製された命令の第2のページピースは、第2のメモリページを識別する物理アドレスに基づいて実行を完了する。ライトバックステージ46は、命令実行結果の適切な記憶を確実にする。
【0022】
ページ境界クロシングが検出されたので、第2のメモリページのために得られたアドレス変換情報は、その後の使用のために格納される。しかしながら、異なるTLBエントリの中にその情報を格納する代わりに、例えば図3のブロック116によって説明されるように、それはページクロシングトラッカー(page crossing tracker)34の物理アドレスフィールド48の中に格納される。更に、インジケータ値は、インジケータフィールド50の中に格納される。インジケータ値は、第2のページのアドレス変換情報を含むページクロシングトラッカーエントリ(page crossing tracker entry)を、第1のページのアドレス変換情報を含むTLBエントリとリンクする。
【0023】
1つの態様においては、インジケータフィールド50は、第1のメモリページと関連するアドレス変換情報を含むTLBエントリのインデックス値を格納する。他の態様においては、インジケータフィールド50は、第1のメモリページと関連するページ番号または物理アドレスを格納する。更に他の態様においては、インジケータフィールド50は、境界条件(boundary crossing condition)を生成する仮想アドレスを格納する。当業者は、第1のメモリページと関連するTLBエントリと物理アドレス情報48をリンクするために、一般の様々な値がインジケータフィールド50の中に格納されることを容易に認識するであろう。更に、命令複製ステージ44は、例えばページ境界クロシングの原因となる物理アドレスを識別することによって、物理アドレス選択ステージ40の代わりにページ境界クロシングを識別しても構わない。それにもかかわらず、メモリの中の同一の領域がその後にアクセスされる場合、ページクロシングトラッカー34は、インジケータフィールド50を調査することによって境界クロシング条件(boundary crossing condition)を認識する。それに応じて、トラッカー34は、第2のページと関連するアドレス変換情報を提供する。
【0024】
ページクロシングトラッカー34の動作は、前に論じられた境界クロシング条件(boundary crossing condition)の原因となった同一の仮想アドレスを提示するその後の命令及び図4のプログラム論理に関連して次に記述される。TLB32はこの例においては一致するエントリを含むので、例えば図4のブロック200によって説明されるように、仮想アドレスと関連するページ番号または物理アドレスは、TLB32によって提供される。例えば図4のブロック202によって説明されるように、物理アドレス選択ステージ40は、仮想アドレスがページ境界をクロスするメモリの中の領域を参照するかどうかを決定する。代わりに、命令複製ステージ44は、対応する物理アドレスがページ境界クロシング条件(page boundary crossing condition)の原因となるかどうかを決定する。それにもかかわらず、境界クロシング条件(boundary crossing condition)が検出されない場合、例えば図4のブロック204によって説明されるように、命令は、TLB32によって提供される物理アドレス情報に基づいて実行を完了する。
【0025】
しかしながら、本例において、仮想アドレスは、第1及び第2のメモリページの間でページ境界クロシングの原因となると知られている。このように、例えば図4のブロック206によって説明されるように、命令は前に記述されたように複製される。更に、ページクロシングトラッカー34のインジケータフィールド50は、リンクが仮想アドレスと共に形成されているかどうかを決定するために調査される。1つの態様においては、一致するTLBエントリインデックスは、インジケータフィールド50に格納される1つまたは複数の値と比較される。他の態様においては、TLB32によって提供される対応する物理アドレス(またはページ番号)または仮想アドレスは、インジケータフィールド50に格納される1つまたは複数のアドレス値と比較される。
【0026】
それにもかかわらず、インジケータフィールド50に格納される情報は、トラッカー34が望まれた物理アドレス情報を含むかどうかを示す。エントリが無効であることを有効フィールド52が示さない限り、図4のブロック208によって説明されるように、第2のページと関連する物理アドレス情報は、ページクロシングトラッカー34から検索される。TLBの中の対応するエントリが無効にされた場合、有効フィールド52は、無効を示す。
【0027】
例えば図4のブロック210によって説明されるように、複製された命令の第1のページピースは、TLB32によって提供されるように第1のメモリページを識別する物理アドレスに基づいて実行を完了する。例えば図4のブロック212によって説明されるように、複製された命令の第2のページピースは、ページクロシングトラッカー34から検索されるように第2のメモリページを識別する物理アドレスに基づいて実行を完了する。ページクロシングトラッカー34が第2のページのためのアドレス変換情報を含む場合、回路(図示せず)は、その後のアドレス変換が発生しないように防ぐ。このように、ページクロシングトラッカー34がページ境界クロシング条件(page boundary crossing condition)を認識する場合、1つのアドレス変換のみが実行される。
【0028】
図5は、ページクロシングトラッカー34の他の態様を説明する。この態様によれば、トラッカー34は、TLB32の一部として実現される。TLB32の中の各々のエントリは、有効フィールド54、インジケータフィールド56、インデックス58、タグフィールド60及び2つの物理アドレスフィールド62及び64を持つ。タグフィールド60は、これらの仮想アドレスの仮想アドレス(またはページ番号)を格納し、これらの仮想アドレスの物理アドレス情報はTLB32によって保持される。そういうものとして、タグフィールド60は、与えられた仮想アドレスと一致するレコードがTLB32に格納されているかどうかを決定するためにTLBアクセスの間に検索される。
【0029】
第1の物理アドレスフィールド62は、TLB32によって保持されるレコードを持つ各々の仮想アドレスに対応する物理ページ番号または完全なアドレスのような物理アドレス情報を含む。特定の仮想アドレスが2つのメモリページの間で境界クロシングの原因となると知られている場合、そのときは第2の物理アドレスフィールド64は、第2のメモリページと関連する物理アドレス情報を含む。対応するTLBエントリが境界クロシング条件(boundary crossing condition)を生成する仮想アドレスと関連づけられている場合、インジケータフィールド56は、物理アドレスフィールド62及び64をリンクしている1または複数のビットを含む。
【0030】
TLB32の一部として実現されるページクロシングトラッカー34の動作は、TLB32の中のいずれのエントリとも最初は一致しない命令によって提示される仮想アドレスに関連して次に記述される。例えば図3のブロック100によって説明されるように、より高いレベルのアドレス変換は、仮想アドレスに対応する物理アドレスを得るために実行される。例えば図3のブロック102によって説明されるように、対応するTLBエントリの中の物理アドレスフィールド62は、変換結果によりアップデートされる。仮想アドレスがメモリアクセス中に2つのメモリページの間の境界クロシングの原因となるであろうことを物理アドレス選択ステージ40が決定する場合に、第2のより高いレベルのアドレス変換は実行される。代わりに、命令複製ステージ44は、対応する物理アドレスに基づいてページ境界クロシング条件(page boundary crossing condition)を検出しても構わない。それにもかかわらず、例えば図3のブロック110によって説明されるように、第2のメモリページを識別する物理アドレスは、第2のより高いレベルのアドレス変換の間に得られる。このように、両方のページのための物理アドレス情報は、命令実行の完了のために利用できる。
【0031】
例えば図3のブロック108、112及び114によって説明されるように、命令は複製されて、実行は前に記述されたように2つの物理メモリアドレスを用いて完了される。更に、例えば図3のブロック116によって説明されるように、第2のメモリページと関連する物理アドレス情報は、第1のページと関連する物理アドレス情報を含む同一のTLBエントリに格納される。すなわち、同一のTLBエントリにおいて、第1のページと関連する物理アドレス情報は第1のアドレスフィールド62に格納されて、第2のページと関連する物理アドレス情報は第2のアドレスフィールド64に格納される。TLBエントリの中のインジケータフィールド56は、2つの物理アドレスがリンクされて、ページ境界クロシング条件(page boundary crossing condition)を生成する仮想アドレスと関連付けられているということを示すために設定される。このように、その後の命令が同一の仮想または物理アドレスを参照する場合、1つのアドレス変換のみが第1及び第2のメモリページと関連する物理アドレス情報を得るために必要とされる。
【0032】
TLB32の一部として実現されるページクロシングトラッカーの動作は、前に記述された境界クロシング条件(boundary crossing condition)を生成した同一の仮想アドレスをアクセスするその後の命令に関連して次に記述される。TLB32がアクセスされた場合、例えば図4のブロック200によって説明されるように、一致するエントリは、仮想アドレスをTLB32に格納されたタグ値と比較することによって識別される。本例において、仮想アドレスは、第1及び第2のメモリページの間のページ境界クロシングの原因となると知られている。このように、命令は、例えば図4のブロック206によって説明されるように、前に記述されたように複製される。更に、一致するTLBエントリの第1のアドレスフィールド62は、第1のメモリページと関連する物理アドレス情報を提供する。例えば図4のブロック210によって説明されるように、複製された命令の第1のページピースの実行は、第1のアドレスフィールド62から得られる物理アドレス情報に基づいて完了する。
【0033】
更に、一致するTLBエントリの中のインジケータフィールド56は、第1及び第2の物理アドレスフィールド62及び64がリンクされているということを示す。したがって、例えば図4のブロック208によって説明されるように、第2のアドレスフィールド64に格納された物理アドレス情報は、検索される。第2のアドレスフィールド64から検索された物理アドレス情報は、第2のメモリページを識別する。例えば図4のブロック212によって説明されるように、複製された命令の第2のページピースの実行は、第2のアドレスフィールド64から得られた物理アドレス情報に基づいて完了する。このように、1つのアドレス変換のみがその後の命令の実行の間に実行される。
【0034】
TLBエントリが無効にされたことを有効フィールド54が示す場合、例えば図3のブロック100及び110によって説明されるように、アドレス変換は実行されず、より高いレベルのアドレス変換ステージ38は、また、前に記述されたように必要な物理アドレスを得る。更に、インジケータフィールド56は、上書きされているTLBエントリまたは更新されているアドレス変換に影響を与えるアーキテキクトされたレジスタに応答して2つのメモリページの間のリンクが無効にされることを示しても構わない。無効ページクロシングリンク(invalid page crossing link)に遭遇した場合、リンクされたページと関連するアドレス変換情報は用いられない。その代わりとして、その後のアドレス変換が実行される。
【0035】
上記範囲の変形例及び応用例を考慮した場合、本発明は、上記説明によっても添付図面によっても限定されないことが理解されるべきである。本発明は、特許請求の範囲及びその法律上の均等物によってのみ限定される。

【特許請求の範囲】
【請求項1】
第1及び第2のメモリページの間のページ境界をクロスするメモリの中の領域へのアクセスを認識することと、
前記第1及び第2のメモリページと関連するアドレス変換情報をリンクすることと
を具備し、
メモリの中の前記同一の領域へのその後のアクセスに応答して、前記第1及び第2のメモリページと関連するアドレス変換情報は、1つのアドレス変換に基づいて検索可能である、
プロセッサの中において整列されていないメモリアクセスを取り扱う方法。
【請求項2】
前記アクセスを認識することは、メモリアクセスの間にページ境界クロシングの原因となるように構成されたアドレスを識別することを具備する、請求項1に記載の方法。
【請求項3】
前記第1及び第2のメモリページと関連するアドレス変換情報をリンクすることは、前記アドレスを前記第2のメモリページと関連する前記アドレス変換情報とリンクすることを具備する、請求項2に記載の方法。
【請求項4】
アドレスを提示した命令を複製することを更に具備し、
前記命令の実行は、第1のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第2のメモリページと関連する物理アドレスに基づいて完了する、請求項2に記載の方法。
【請求項5】
前記第1及び第2のメモリページと関連するアドレス変換情報をリンクすることは、
変換索引バッファエントリの中に、第1のメモリページと関連する物理アドレス情報及び仮想アドレス情報を格納することと、
前記変換索引バッファエントリを前記第2のメモリページと関連する物理アドレス情報とリンクすることと
を具備する、請求項1に記載の方法。
【請求項6】
前記変換索引バッファエントリを前記第2のメモリページと関連する物理アドレス情報とリンクすることは、前記変換索引バッファエントリを識別する情報及び前記第2のメモリページと関連する物理アドレス情報を格納することを具備する、請求項5に記載の方法。
【請求項7】
前記変換索引バッファエントリを前記第2のメモリページと関連する物理アドレス情報をリンクすることは、
前記変換索引バッファエントリの中に、前記第2のメモリページと関連する物理アドレス情報及び前記第1のメモリページと関連する仮想及び物理アドレス情報を格納することと、
前記ページ境界クロシングの原因となる前記第1のメモリページと関連する仮想アドレスを示すために変換索引バッファエントリの中に1または複数のビットを設定することと
を具備する、請求項5に記載の方法。
【請求項8】
前記第1及び第2のメモリページと関連する前記アドレス変換情報の間のリンクを遮断することを更に具備する、請求項1に記載の方法。
【請求項9】
前記リンクを遮断することは、前記第2のメモリページと関連する物理アドレス情報を前記第1のメモリページと関連する仮想アドレス情報とリンクする情報を無効にすることを具備する、請求項8に記載の方法。
【請求項10】
第1及び第2のメモリページの間のページ境界をクロスするメモリ領域へのアクセスを認識し、
前記第1及び第2のメモリページと関連するアドレス変換情報をリンクし、前記同一のメモリ領域へのその後のアクセスに応答して、前記第1及び第2のメモリページと関連するアドレス変換情報は、1つのアドレス変換に基づいて検索可能である
ように構成された回路を具備するプロセッサ。
【請求項11】
前記回路は、メモリアクセスの間の前記ページ境界クロシングの原因となるように構成されたアドレスを識別するように構成される、請求項10に記載のプロセッサ。
【請求項12】
前記回路は、前記アドレスを前記第2のメモリページと関連するアドレス変換情報とリンクするように構成される、請求項11に記載のプロセッサ。
【請求項13】
前記回路は、前記アドレスを提示する命令を複製するように更に構成され、
前記命令の実行は、前記第1のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第2のメモリページと関連する物理アドレスに基づいて完了する、請求項11に記載のプロセッサ。
【請求項14】
前記回路は、変換索引バッファエントリの中に、前記第1のメモリページと関連する物理アドレス情報及び仮想アドレス情報を格納するように構成される、請求項10に記載のプロセッサ。
【請求項15】
前記回路は、前記変換索引バッファエントリを識別する情報及び前記第2のメモリと関連する物理アドレス情報を格納するように構成される、請求項14記載のプロセッサ。
【請求項16】
前記回路は、前記変換索引バッファエントリの中に、前記第2のメモリページと関連する物理アドレス情報及び前記第1のメモリページと関連する前記仮想及び物理アドレスを格納し、前記ページ境界クロシングの原因となる前記第1のメモリページと関連する仮想アドレスを示すために前記変換索引バッファエントリの中に1または複数のビットを設定するように構成される、請求項14に記載のプロセッサ。
【請求項17】
前記回路は、前記第1及び第2のメモリページと関連する前記アドレス変換情報の間の前記リンクを遮断するように更に構成される、請求項10に記載のプロセッサ。
【請求項18】
前記回路は、前記第2のメモリページと関連する物理アドレス情報を前記第1のメモリページと関連する仮想アドレス情報とリンクする情報を無効にするように構成される、請求項17に記載のプロセッサ。
【請求項19】
第1及び第2のメモリページの間のページ境界をクロスするメモリの中の領域にアクセスするように構成された命令を認識することと、
前記命令によって提示された仮想アドレスを前記第1のメモリページと関連する物理アドレスに変換することと、
前記仮想アドレスを前記第2のメモリページと関連する前記物理アドレスとリンクする予め設定された情報に基づいて前記第2のメモリページと関連する物理アドレスを検索することと
を具備する、プロセッサにおいてアドレス変換を実行する方法。
【請求項20】
前記命令を複製することを更に具備し、
前記命令の実行は、前記第1のメモリページと関連する物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第2のメモリページと関連する物理アドレスに基づいて完了する、請求項19に記載の方法。
【請求項21】
前記仮想アドレスを変換することは、
前記仮想アドレスに対応する変換索引バッファエントリを識別することと、
前記変換索引バッファエントリから前記第1のメモリページと関連する物理アドレスを検索することと
を更に具備する、請求項19に記載の方法。
【請求項22】
前記第2のメモリページと関連する物理アドレスを検索することは、
前記予め設定された情報が前記変換索引バッファエントリに格納された対応する情報と一致するかどうかを決定することと、
前記情報の一致に応答してアドレス変換情報を検索することと
を具備する、請求項21に記載の方法。
【請求項23】
前記第2のメモリページと関連する物理アドレスを検索することは、
前記変換索引バッファエントリの中の1または複数のビットが前記第1及び第2のメモリページの間のリンクを示すかどうかを決定することと、
前記第1及び第2のメモリページの間のリンクを示す前記1または複数のビットに応答して前記第1のメモリページと関連する前記物理アドレスを含む前記変換索引バッファエントリからアドレス変換情報を検索することと
を具備する、請求項21に記載の方法。
【請求項24】
第1及び第2のメモリページの間のページ境界をクロスするメモリの中の領域にアクセスするように構成された命令を認識し、
前記命令によって提示された仮想アドレスを前記第1のメモリページと関連する物理アドレスに変換し、
前記仮想アドレスを前記第2のメモリページと関連する前記物理アドレスとリンクする予め設定された情報に基づいて前記第2のメモリページと関連する物理アドレスを検索する
ように構成された回路を具備するプロセッサ。
【請求項25】
前記回路は、前記命令を複製するように更に構成され、
前記命令の実行は、前記第1のメモリページと関連する前記物理アドレスに基づいて完了し、前記複製された命令の実行は、前記第2のメモリページと関連する前記物理アドレスに基づいて完了する、請求項24に記載のプロセッサ。
【請求項26】
前記回路は、前記仮想アドレスに対応する変換索引バッファエントリを識別し、前記変換索引バッファエントリから前記第1のメモリページと関連する前記物理アドレスを検索するように構成される、請求項24に記載のプロセッサ。
【請求項27】
前記回路は、前記予め設定された情報が前記変換索引バッファエントリに格納された対応する情報と一致するかどうかを決定し、前記情報の一致に応答してアドレス変換情報を検索するように構成される、請求項26に記載のプロセッサ。
【請求項28】
前記回路は、前記変換索引バッファエントリの中の1または複数のビットが前記第1及び第2のメモリページの間のリンクを示すかどうかを決定し、前記第1及び第2のメモリページの間のリンクを示す前記1または複数のビットに応答して前記第1のメモリページと関連する前記物理アドレスを含む前記変換索引バッファエントリからアドレス変換情報を検索するように構成される、請求項26に記載のプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2013−65325(P2013−65325A)
【公開日】平成25年4月11日(2013.4.11)
【国際特許分類】
【外国語出願】
【出願番号】特願2012−247186(P2012−247186)
【出願日】平成24年11月9日(2012.11.9)
【分割の表示】特願2009−549240(P2009−549240)の分割
【原出願日】平成20年2月7日(2008.2.7)
【出願人】(595020643)クゥアルコム・インコーポレイテッド (7,166)
【氏名又は名称原語表記】QUALCOMM INCORPORATED
【Fターム(参考)】