(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-19
(45)【発行日】2024-09-30
(54)【発明の名称】仮想メモリ・ベース・システムにおいて仮想アドレスを変換する方法およびシステム
(51)【国際特許分類】
G06F 12/1009 20160101AFI20240920BHJP
G06F 12/1027 20160101ALI20240920BHJP
【FI】
G06F12/1009
G06F12/1027 115
(21)【出願番号】P 2022532005
(86)(22)【出願日】2020-11-13
(86)【国際出願番号】 IB2020060688
(87)【国際公開番号】W WO2021111217
(87)【国際公開日】2021-06-10
【審査請求日】2023-04-24
(32)【優先日】2019-12-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】カルベ、モヒト
(72)【発明者】
【氏名】トンプト、ブライアン
【審査官】田中 啓介
(56)【参考文献】
【文献】特表2018-503903(JP,A)
【文献】特表2015-500524(JP,A)
【文献】米国特許出願公開第2018/0239712(US,A1)
【文献】特表2019-506670(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/08-12/128
(57)【特許請求の範囲】
【請求項1】
情報処理システムであって、
データを処理するプロセッサと、
前記データを記憶する複数の位置を有する1つまたは複数のメモリ・デバイスであって、各位置が物理アドレスを有する、前記1つまたは複数のメモリ・デバイスと、
前記1つまたは複数のメモリ・デバイスへの読み取りおよび書き込みアクセスを制御するように構成される、メモリ・コントローラと、を備え、
前記プロセッサが、
第1の仮想アドレスを
物理アドレスである第2のアドレスに変換するための要求に応答して、
ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットを前記プロセッサから前記メモリ・コントローラへ送信するように構成され、前記複数のメモリ・オフセットが、少なくとも第1のレベルのメモリ・オフセットおよび第2のレベルのメモリ・オフセットを含み、
前記メモリ・コントローラが、
ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットを前記プロセッサから受信し、
前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットを用いて第1のレベルのページ・ディレクトリ・テーブルを前記1つまたは複数のメモリ・デバイスから読み取り、
前記第1のレベルのページ・ディレクトリ・テーブルを前記第2のレベルのメモリ・オフセットと結合し、
前記第1のレベルのページ・ディレクトリ・テーブルおよび前記第2のレベルのメモリ・オフセットを用いて第2のレベルのページ・ディレクトリ・テーブルを前記1つまたは複数のメモリ・デバイスから読み取る
ように構成され
、
前記メモリ・コントローラが、ページ・テーブル・エントリ(PTE)を前記プロセッサへ送信するように構成され、前記PTEが、前記第1の仮想アドレスの前記第2のアドレスへの前記変換を含み、
前記システムが、ページ・テーブル・エントリ(PTE)の前記第2のアドレスを含むメモリ・ラインを前記メモリ・コントローラから前記プロセッサへ送信するようにさらに構成され、前記プロセッサが、前記ページ・テーブル・エントリ(PTE)の前記第2のアドレスを含む前記メモリ・ラインから前記ページ・テーブル・エントリ(PTE)を抽出するようにさらに構成される、
情報処理システム。
【請求項2】
全ての前記複数のメモリ・オフセットが複数の
前記ページ・ディレクトリ・テーブルと結合されていると判断することに応答して、前記メモリ・コントローラが、ページ・テーブル・エントリ(PTE)を前記プロセッサへ送信するように構成される、請求項1に記載の情報処理システム。
【請求項3】
前記プロセッサが、前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットを結合し、結合された前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットと共に前記複数のメモリ・オフセットを前記メモリ・コントローラへ送信するように構成される、請求項1に記載の情報処理システム。
【請求項4】
前記メモリ・コントローラが、前記1つまたは複数のメモリ・デバイスにローカルであり、前記第1のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインを前記1つまたは複数のメモリ・デバイスからフェッチするようにさらに構成される、請求項1に記載の情報処理システム。
【請求項5】
前記メモリ・コントローラが、前記第1のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインから前記第1のレベルのページ・ディレクトリ・テーブルの前記アドレスを抽出するようにさらに構成される、請求項
4に記載の情報処理システム。
【請求項6】
前記システムが、前記第1のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインを前記メモリ・コントローラから前記プロセッサへ伝送するようにさらに構成され、前記プロセッサが、前記第1のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインから前記第1のレベルのページ・ディレクトリ・テーブルの前記アドレスを抽出するようにさらに構成される、請求項
4に記載の情報処理システム。
【請求項7】
前記メモリ・コントローラが、前記1つまたは複数のメモリ・デバイスにローカルであり、前記第2のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインを前記1つまたは複数のメモリ・デバイスからフェッチするようにさらに構成される、請求項1に記載の情報処理システム。
【請求項8】
前記メモリ・コントローラが、前記第2のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインから前記第2のレベルのページ・ディレクトリ・テーブルの前記アドレスを抽出するようにさらに構成される、請求項
7に記載の情報処理システム。
【請求項9】
前記システムが、前記第2のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインを前記メモリ・コントローラから前記プロセッサへ伝送するように構成され、前記プロセッサが、前記第2のレベルのページ・ディレクトリ・テーブルの前記アドレスを含む前記メモリ・ラインから前記第2のレベルのページ・ディレクトリ・テーブルの前記アドレスを抽出するようにさらに構成される、請求項
7に記載の情報処理システム。
【請求項10】
前記メモリ・コントローラが前記ページ・ディレクトリ・ベースおよび前記メモリ・オフセットを受信することに応答して、前記メモリ・コントローラが、メモリに記憶された複数の
前記ページ・ディレクトリ・テーブルについての全てのメモリ読み取り動作を制御するように構成され、前記システムが、メモリに記憶された複数の
前記ページ・ディレクトリ・テーブルについての全ての前記メモリ読み取り動作が前記メモリ・コントローラにおいて発生するように構成される、請求項1に記載の情報処理システム。
【請求項11】
前記システムが、全ての前記メモリ・オフセットが共に前記プロセッサから前記メモリ・コントローラへ伝送されるように構成される、請求項1に記載の情報処理システム。
【請求項12】
前記メモリ・コントローラが、前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットを結合するように構成される、請求項1に記載の情報処理システム。
【請求項13】
前記メモリ・コントローラが、第3のレベルのメモリ・オフセットを前記第2のレベルのページ・ディレクトリ・テーブルと結合し、前記第3のレベルのメモリ・オフセットおよび前記第2のレベルのページ・ディレクトリ・テーブルを用いて第3のレベルのページ・ディレクトリ・テーブルをメモリから読み取るようにさらに構成される、請求項1に記載の情報処理システム。
【請求項14】
前記システムが、変換するための前記要求に応答してページ・テーブル・エントリ(PTE)のアドレスを含むメモリ・ラインのみを前記プロセッサへ伝送するように構成され、前記ページ・ディレクトリ・テーブルのいずれも前記メモリ・コントローラから前記プロセッサへ伝送されない、請求項1に記載の情報処理システム。
【請求項15】
変換するための前記要求が、ゲスト仮想アドレスおよびホスト仮想アドレスを有するネスト型変換を含む、請求項1に記載の情報処理システム。
【請求項16】
コンピューティング・システムであって、
データを処理するプロセッサと、
前記データを記憶する複数の位置を有する1つまたは複数のメモリ・デバイスであって、各位置が物理アドレスを有する、前記1つまたは複数のメモリ・デバイスと、
前記1つまたは複数のメモリ・デバイスにローカルなメモリ・コントローラであって、前記メモリ・コントローラが、前記1つまたは複数のメモリ・デバイスへの読み取りおよび書き込みアクセスを制御する、前記メモリ・コントローラと、
コンピュータ可読記憶媒体であって、前記プロセッサによる実行時に、第1の仮想アドレスを
物理アドレスである第2のアドレスに変換するための要求に応答して、前記プロセッサに、
ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットを前記プロセッサから前記メモリ・コントローラへ送信させる、プログラム命令を含み、前記複数のメモリ・オフセットが、少なくとも第1のレベルのメモリ・オフセットおよび第2のレベルのメモリ・オフセットを含む、前記コンピュータ可読記憶媒体と、
前記コンピュータ可読記憶媒体が
さらに、前記メモリ・コントローラによる実行時に、前記第1の仮想アドレスを前記第2のアドレスに変換するための前記要求に応答して、前記メモリ・コントローラに、
ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットを前記プロセッサから受信させ、
前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットを用いて第1のレベルのページ・ディレクトリ・テーブルを前記1つまたは複数のメモリ・デバイスから読み取らせ、
前記第1のレベルのページ・ディレクトリ・テーブルを前記第2のレベルのメモリ・オフセットと結合させ、
前記第1のレベルのページ・ディレクトリ・テーブルおよび前記第2のレベルのメモリ・オフセットを用いて第2のレベルのページ・ディレクトリ・テーブルをメモリから読み取らせ、
前記メモリ・コントローラが、ページ・テーブル・エントリ(PTE)を前記プロセッサへ送信するように構成され、前記PTEが、前記第1の仮想アドレスの前記第2のアドレスへの前記変換を含み、
前記コンピューティング・システムが、ページ・テーブル・エントリ(PTE)の前記アドレスを含むメモリ・ラインを前記メモリ・コントローラから前記プロセッサへ送信するようにさらに構成され、前記プロセッサが、前記ページ・テーブル・エントリ(PTE)の前記アドレスを含む前記メモリ・ラインから前記ページ・テーブル・エントリ(PTE)を抽出するようにさらに構成される、
プログラム命令を含む、前記コンピュータ可読記憶媒体と、
を備える、コンピューティング・システム。
【請求項17】
前記メモリ・コントローラによる実行時に、前記メモリ・コントローラに、全ての前記複数のメモリ・オフセットが
複数のページ・ディレクトリ・テーブルと結合されていると判断することに応答して、前記ページ・テーブル・エントリ(PTE)を前記プロセッサへ送信させる、プログラム命令をさらに含む、請求項16に記載のコンピューティング・システム。
【請求項18】
前記プロセッサによる実行時に、前記プロセッサに、前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットを結合させ、結合された前記ページ・ディレクトリ・ベースおよび前記第1のレベルのメモリ・オフセットと共に前記複数のメモリ・オフセットを前記メモリ・コントローラへ送信させる、プログラム命令をさらに含む、請求項
16に記載のコンピューティング・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書における開示は、概して、データ処理に関し、より詳細には、コンピュータ・システムにおけるアドレス変換を最適化する方法、装置、およびシステムに関する。
【背景技術】
【0002】
タスクの中でも、メモリ管理は、コンピュータに記憶されたデータを管理し、コンピュータ内のメモリからのデータの検索および記憶を監督することを含む。メモリ管理は、コンピュータについてのシステム性能全体の鍵となる要因であることが多い。コンピュータ・システムは、多くの場合、アプリケーションおよびデータを記憶するために用いられる物理メモリを含む。最新のコンピュータは、典型的には、仮想メモリ管理として既知のメモリ管理技術に依拠して、性能を向上させ、コンピュータにおけるより大きな柔軟性および前提とされる基盤アーキテクチャ設計をもたらす。
【0003】
仮想メモリ・システムでは、コンピュータのメモリ・システムを実施する基盤ハードウェアが、コンピュータのソフトウェアから有効に隠されている。典型的には、比較的大きな仮想メモリ空間が、そのようなコンピュータに使用されて、コンピュータ上で実行するコンピュータ・プログラムは、仮想メモリ空間内の位置を指し示すアドレスを用いてメモリ・システムにアクセスする。しかしながら、コンピュータにおける物理メモリ・デバイスは、物理メモリ・デバイス内の特定メモリ位置に直接マッピングする「実」アドレスによってアクセスされる。コンピュータにおけるハードウェアまたはソフトウェアあるいはその両方は、「アドレス変換(address translation)」を実行して仮想化アドレス空間の仮想メモリ・アドレスを物理メモリ空間の実アドレスにマッピングするように提供される。したがって、コンピュータ上のコンピュータ・プログラムが仮想化アドレスを用いてメモリにアクセスしようとするたびに、コンピュータは、仮想化アドレスを対応する実アドレスに変換し、それによって、仮想化アドレスにマッピングされた適当な物理デバイス内の適当な位置に対してアクセスが行われ得る。
【発明の概要】
【0004】
本開示の概要は、コンピュータ・システムにおいて仮想アドレスを変換するコンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ・システム、および方法の理解を助けるために与えられ、本開示または本発明を限定する意図はない。本開示は、当業者を対象とするものである。本開示の様々な態様および特徴が、いくつかのインスタンスでは別々に、または他のインスタンスでは本開示の他の態様および特徴と組み合わせて、有利に使用され得ることを理解されたい。したがって、異なる効果を達成するためのコンピュータ・システム、アーキテクチャ構造、プロセッサ、およびそれらの動作方法に対して変形および修正が行われてもよい。
【0005】
1つまたは複数の実施形態では、情報処理システムが開示されている。ある実施形態における情報システムは、データを処理するプロセッサと、データを記憶する複数の位置を有する1つまたは複数のメモリ・デバイスであって、各位置が物理アドレスを有する、1つまたは複数のメモリ・デバイスと、好ましくはメモリ・デバイスにローカルであり、メモリ・デバイスへの読み取りおよび書き込みアクセスを制御するように構成されるメモリ・コントローラと、を含む。プロセッサは、ある態様では、第1の仮想アドレスを第2のアドレス(好ましくは物理アドレス)に変換するための要求に応答して、ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットをプロセッサからメモリ・コントローラへ送信するように構成され、複数のメモリ・オフセットは、少なくとも第1のレベルのメモリ・オフセットおよび第2のレベルのメモリ・オフセットを含む。1つまたは複数の態様におけるメモリ・コントローラは、ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットをプロセッサから受信し、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを用いて第1のレベルのページ・ディレクトリ・テーブルを1つまたは複数のメモリ・デバイスから読み取り、第1のレベルのページ・ディレクトリ・テーブルを第2のレベルのメモリ・オフセットと結合し、第1のレベルのページ・ディレクトリ・テーブルおよび第2のレベルのメモリ・オフセットを用いて第2のレベルのページ・ディレクトリ・テーブルを1つまたは複数のメモリ・デバイスから読み取るように構成される。
【0006】
1つまたは複数の実施形態におけるメモリ・コントローラは、ページ・テーブル・エントリ(PTE:page table entry)をプロセッサへ送信するように構成され、PTEは、第1の仮想アドレスの第2のアドレスへの変換を含む。ある実施形態におけるシステムは、ページ・テーブル・エントリ(PTE)のアドレスを含むメモリ・ラインをメモリ・コントローラからプロセッサへ送信するようにさらに構成され、プロセッサは、ページ・テーブル・エントリ(PTE)のアドレスを含むメモリ・ラインからページ・テーブル・エントリ(PTE)を抽出するようにさらに構成される。ある態様では、全ての複数のメモリ・オフセットが複数のページ・ディレクトリ・テーブルと結合されていると判断することに応答して、メモリ・コントローラは、ページ・テーブル・エントリ(PTE)をプロセッサへ送信するように構成される。ある実施形態におけるプロセッサは、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを結合し、結合されたページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットと共に複数のメモリ・オフセットをメモリ・コントローラへ送信するように構成される。
【0007】
ある態様におけるメモリ・コントローラは、第1のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインを1つまたは複数のメモリ・デバイスからフェッチするようにさらに構成される。メモリ・コントローラは、1つまたは複数の実施形態では、第1のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインから第1のレベルのページ・ディレクトリ・テーブルのアドレスを抽出するようにさらに構成される。ある実施形態におけるシステムは、第1のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインをメモリ・コントローラからプロセッサへ伝送するようにさらに構成され、プロセッサは、第1のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインから第1のレベルのページ・ディレクトリ・テーブルのアドレスを抽出するようにさらに構成される。1つまたは複数の実施形態では、メモリ・コントローラは、第2のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインを1つまたは複数のメモリ・デバイスからフェッチするようにさらに構成される。ある実施形態におけるメモリ・コントローラは、第2のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインから第2のレベルのページ・ディレクトリ・テーブルのアドレスを抽出するように構成される。1つまたは複数の態様におけるシステムは、第2のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインをメモリ・コントローラからプロセッサへ伝送するように構成され、プロセッサは、第2のレベルのページ・ディレクトリ・テーブルのアドレスを含むメモリ・ラインから第2のレベルのページ・ディレクトリ・テーブルのアドレスを抽出するように構成される。1つまたは複数の実施形態におけるメモリ・コントローラは、第3のレベルのメモリ・オフセットを第2のレベルのページ・ディレクトリ・テーブルと結合し、第3のレベルのメモリ・オフセットおよび第2のレベルのページ・ディレクトリ・テーブルを用いて第3のレベルのページ・ディレクトリ・テーブルをメモリから読み取るようにさらに構成される。
【0008】
1つまたは複数の実施形態では、メモリ・コントローラがページ・ディレクトリ・ベースおよびメモリ・オフセットを受信することに応答して、メモリ・コントローラは、メモリに記憶された複数のページ・ディレクトリ・テーブルについての全てのメモリ読み取り動作を制御するように構成され、システムは、メモリに記憶された複数のページ・ディレクトリ・テーブルについての全てのメモリ読み取り動作がメモリ・コントローラにおいて発生するように構成される。システムは、全てのメモリ・オフセットが共にプロセッサからメモリ・コントローラへ伝送されるように構成される。またある態様では、メモリ・コントローラは、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを結合するように構成される。システムは、ある実施形態では、変換するための要求に応答してPTEのアドレスを含むメモリ・ラインのみをプロセッサへ伝送するように構成され、ページ・ディレクトリ・テーブルのいずれもメモリ・コントローラからプロセッサへ伝送されない。1つまたは複数の実施形態において変換するための要求は、ゲスト仮想アドレスおよびホスト仮想アドレスを有するネスト型変換を含む。
【0009】
1つまたは複数の実施形態におけるコンピューティング・システムも開示される。コンピューティング・システムは、1つまたは複数の態様では、プロセッサと、データを記憶する複数の位置を有する1つまたは複数のメモリ・デバイスであって、各位置が物理アドレスを有する、1つまたは複数のメモリ・デバイスと、1つまたは複数のメモリ・デバイスにローカルなメモリ・コントローラであって、メモリ・コントローラが1つまたは複数のメモリ・デバイスへの読み取りおよび書き込みアクセスを制御する、メモリ・コントローラと、コンピュータ可読記憶媒体であって、プロセッサによる実行時に、第1の仮想アドレスを第2のアドレスに変換するための要求に応答して、プロセッサに、ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットをプロセッサからメモリ・コントローラへ送信させるプログラム命令を含み、複数のメモリ・オフセットが、少なくとも第1のレベルのメモリ・オフセットおよび第2のレベルのメモリ・オフセットを含む、コンピュータ可読記憶媒体と、を含む。ある実施形態では、コンピュータ・システムは、コンピュータ可読記憶媒体であって、メモリ・コントローラによる実行時に、第1の仮想アドレスを第2のアドレスに変換するための要求に応答して、メモリ・コントローラに、ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットをプロセッサから受信させ、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを用いて第1のレベルのページ・ディレクトリ・テーブルをメモリ・デバイスから読み取らせ、第1のレベルのページ・ディレクトリ・テーブルを第2のレベルのメモリ・オフセットと結合させ、第1のレベルのページ・ディレクトリ・テーブルおよび第2のレベルのメモリ・オフセットを用いて第2のレベルのページ・ディレクトリ・テーブルをメモリから読み取らせ、ページ・テーブル・エントリ(PTE)をプロセッサへ送信させる、プログラム命令を含むコンピュータ可読記憶媒体をさらに含む。
【0010】
コンピューティング・システムにおけるプログラム命令は、ある態様では、メモリ・コントローラによる実行時に、メモリ・コントローラに、全ての複数のメモリ・オフセットが複数のページ・ディレクトリ・テーブルと結合されていると判断することに応答して、ページ・テーブル・エントリ(PTE)をプロセッサへ送信させる。ある実施形態では、コンピューティング・システムのプログラム命令は、プロセッサによる実行時に、プロセッサに、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを結合させ、結合されたページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットと共に複数のメモリ・オフセットをメモリ・コントローラへ送信させる。プログラム命令は、1つまたは複数の態様では、プロセッサによる実行時に第1の仮想アドレスを第2のアドレスに変換するための要求に応答して、プロセッサに、全ての複数のメモリ・オフセットを共にプロセッサからメモリ・コントローラへ伝送させる。1つまたは複数の実施形態におけるコンピューティング・システムは、実行時に第1の仮想アドレスを第2のアドレスに変換するための要求に応答して、メモリ・コントローラに、PTEのアドレスを含むメモリ・ラインのみをプロセッサへ伝送させるプログラミング命令をさらに含み、ページ・ディレクトリ・テーブルのいずれもメモリ・コントローラからプロセッサへ伝送されない。
【0011】
メモリに記憶された複数のページ・ディレクトリ・テーブルを有するシステムによってアドレスを変換する方法も開示される。1つまたは複数の実施形態における方法は、第1のアドレスを第2のアドレスに変換するための要求に応答して、ページ・ディレクトリ・ベースおよび複数のメモリ・オフセットをプロセッサからメモリ・コントローラへ送信することであって、複数のメモリ・オフセットは、少なくとも第1のレベルのメモリ・オフセットおよび第2のレベルのメモリ・オフセットを含む、送信することと、メモリ・コントローラによって、ページ・ディレクトリ・ベースおよび第1のレベルのメモリ・オフセットを用いて第1のレベルのページ・ディレクトリ・テーブルをメモリから読み取ることと、メモリ・コントローラによって、かつメモリ・コントローラにおいて、第2のレベルのメモリ・オフセットおよび第1のレベルのページ・ディレクトリ・テーブルを結合することと、メモリ・コントローラによって、第1のレベルのページ・ディレクトリ・テーブルおよび第2のレベルのメモリ・オフセットを用いて第2のレベルのページ・ディレクトリ・テーブルをメモリから読み取ることと、ページ・テーブル・エントリ(PTE)をメモリ・コントローラからプロセッサへ送信することと、を含む。ある態様における方法は、全ての複数のメモリ・オフセットを共にプロセッサからメモリ・コントローラへ伝送することと、メモリ・コントローラからプロセッサにPTEのアドレスを含むメモリ・ラインのみを伝送し、ページ・ディレクトリ・テーブルのいずれも伝送しないことをさらに含む。ある実施形態では、方法は基数ページ変換(radix page translation)を対象とし、ある態様では、変換するための要求は、ページ・ディレクトリ・テーブルが基数木(radix tree)の一部を形成する基数ページ変換を対象とする。
【0012】
本発明の上記および他の目的、特徴、および利点は、添付図面に示されるような本発明の例示的実施形態の以下のより詳細な説明から明らかとなり、類似の参照番号は、概して本発明の例示的実施形態の類似部分を表す。
【0013】
コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ・システム、およびそれらの動作方法の様々な態様、特徴、および実施形態は、提供される図面と併せて読まれるときにより良く理解される。実施形態は、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、およびそれらの動作方法の態様、特徴、または様々な実施形態、あるいはそれらの組み合わせを例示する目的で図面に提供されているが、特許請求の範囲は、図示される正確な配列、構造、特徴、態様、アセンブリ、システム、回路、実施形態、またはデバイスに限定されるべきではなく、図示される配列、構造、サブアセンブリ、特徴、態様、方法、プロセス、回路、実施形態、およびデバイスは、単独で、または他の配列、構造、アセンブリ、サブアセンブリ、システム、特徴、態様、回路、実施形態、方法、およびデバイスと組み合わせて、用いられ得る。
【図面の簡単な説明】
【0014】
【
図1】本開示の実施形態による、コンピュータ・システムを示す機能ブロック図である。
【
図3B】高レベル変換テーブルのインデックス付与の一例を示す。
【
図4】本開示の実施形態による、階層型変換機構の別の例を示す。
【
図5】仮想アドレスを変換する実施形態を行っているプロセッサおよびメモリ・コントローラのブロック図を示す。
【
図6】仮想アドレスを変換する別の実施形態を行っているプロセッサおよびメモリ・コントローラのブロック図を示す。
【
図7】仮想アドレスを物理アドレスに変換する方法の実施形態のフローチャートを示す。
【発明を実施するための形態】
【0015】
以下の説明は、本発明の一般原則を示すために行われ、ここで特許請求される発明概念を限定することを意味しない。以下の詳細な説明において、コンピュータ・システムを含む情報処理システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ・システム、およびアドレス変換を実行する方法を含むそれらの動作方法の理解をもたらすために、多数の詳細が明示されているが、コンピュータ・システムを含む情報処理システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ・システム、ならびにアドレス変換を実行する方法および構造を含むそれらの動作方法の異なる、かつ多数の実施形態が、それらの具体的詳細なしに実施され得ることが当業者により理解され、特許請求の範囲および開示は、本明細書で具体的に説明され、図示される実施形態、サブアセンブリ、特徴、プロセス、方法、態様、特徴または詳細に限定されるべきではない。さらに、本明細書で説明される特定の特徴は、様々な可能性のある組み合わせおよび交換のそれぞれにおいて他の説明される特徴と組み合わせて使用され得る。
【0016】
本明細書において特段の定義がされない限り、全ての用語には、明細書から示唆される意味だけでなく、当業者によって理解される意味または辞書、論文などにおいて定義される意味あるいはその両方を含む、最も広範囲の可能な解釈を与えられるべきである。明細書および添付の特許請求の範囲において使用されるように、単数形「a」、「an」、および「the」が、特段の指定がされない限り複数の指示物を含み、「comprises(備える)」または「comprising(備えている)」という用語、あるいはその両方が、本明細書で使用されるとき、述べられた特徴、整数、ステップ、動作、要素、またはコンポーネント、あるいはそれらの組み合わせの存在を指定しているが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、コンポーネント、またはそれらの集合、あるいはそれらの組み合わせの存在または追加を排除するものではないことにも留意されなければならない。
【0017】
以下の説明は、プロセッサ、マイクロプロセッサ・システム、メモリ・システム、およびそれらのアーキテクチャを含む情報処理システムの従来の特徴を省略し、または簡潔にのみ説明し、それらは当業者には明らかである。当業者は、プロセッサの全体アーキテクチャ、ならびにメモリ・システムまたはデバイスあるいはその両方、およびそれらの動作に精通していると仮定される。採番された要素は、要素が導入される図面により採番され、後続の図面ではその番号によって参照され得ることに留意されたい。
【0018】
データおよび情報処理システムにおいて、メイン・メモリを含む様々なメモリ・システムに記憶されるデータへの多数のアクセスが存在する。仮想化メモリ・システム内のメモリへのアクセスは、典型的には、仮想アドレス(VA)から実アドレス(RA)へのアドレス変換を必要とする。コンピュータにおけるメモリ・アクセス要求の頻度により、アドレス変換は、システム性能全体に著しい影響を有し得る。したがって、アドレス変換をもたらす時間量を最小化することが望ましい。本開示は、アドレス変換をもたらす時間量を減少させるためのシステムおよび技術を通して、この問題に対処する。1つまたは複数の実施形態では、基数ページ変換(RPT:Radix Page Translations)を高速化する、特に、テーブル・ウォーク変換プロセスの間にプロセッサ(CPU)とメモリ・コントローラ(MC)を含むメモリとの間のデータ交換を減少させることによって、RPTテーブル・ウォークを高速化するシステムおよびプロセスが開示される。
【0019】
仮想アドレシングの1つの特徴は、コンピュータがコンピュータのメイン・メモリ内の物理メモリ・デバイスに全仮想メモリ空間のためのストレージを含む必要がないことである。その代わりに、ディスク・ドライブおよび他の大規模ストレージ・デバイスなどのより下位レベルのストレージが、補充ストレージとして使用されてもよく、メモリ・アドレスが、メイン・メモリと補充ストレージとの間で必要に応じて交換される「ページ」にグループ化される(「ページング」)。処理システムがページングを使用するとき、仮想アドレスの下位ビットは保持され、実際の物理アドレスの下位ビットとして直接使用される。一方、上位ビットは、物理アドレスに対応またはマッピングする1つまたは複数のアドレス変換テーブルへのキーまたはインデックスとして扱われ得る。そのような範囲によって参照されるメモリが、ページと呼ばれ得る。ページ・サイズは、大きさに幅があってもよく、例えば、4キロバイトから16ギガバイトであってもよい。
【0020】
仮想メモリ・システムにおけるアドレス変換は、典型的には、様々なアドレス変換データ構造にアクセスすることを組み込む。1つのそのような構造は、ページ・テーブルと呼ばれ、ページ単位で仮想アドレスを実アドレスにマッピングする複数のエントリを含み、1つまたは複数のページ・テーブル・エントリ(PTE)を含む。仮想アドレシングを用いると、プロセッサは、仮想アドレス(VA)を物理または実アドレス(RA)に変換することから生成される、物理アドレスを用いてメモリにアクセスし得る。
【0021】
コンピュータにより使用されているメモリ・アドレス空間の全てをマッピングするのに必要なページ・テーブル内のエントリの数は、著しく大きい場合があり、プロセッサに関連付けられた専用メモリではなくギガ/テラバイト・スケールのメイン・メモリ(ランダム・アクセス・メモリ)にエントリが記憶される必要があり、それによってメイン・ストレージに存在するエントリへのアクセスが低速になる、アドレス変換を加速し、アドレス変換を取得することでのレイテンシを低減するために、トランスレーション・ルックアサイド・バッファ(TLB:translation look-aside buffer)と呼ばれる、プロセッサに関連付けられた高速メモリが、コンピュータによる迅速アクセスのために、典型的には最近使用したエントリをキャッシュするために使用される。TLBは、仮想アドレス(VA)を物理アドレスまたは実アドレス(RA)にマッピングするページ・テーブル・エントリをキャッシュするために使用されるデータ構造である。各メモリ・アクセスでは、VAがTLBに提示され、TLBがヒットする場合、即ち、メモリ・アクセスのVAがTLB内のエントリに合致する場合に、TLBはプロセッサに実アドレス(RA)を提供する。所与のTLBにおいてマッピングまたは合致を見つけることによって、仮想アドレスと物理アドレスとの間の迅速な変換が提供される。
【0022】
所与のTLBにおいて仮想アドレスについてのマッピングまたは合致が見つからないことは、ページ・テーブルがチェックされるべきであることを示し、1つまたは複数の実施形態では、仮想アドレスを物理メモリの実アドレスに変換するために、複数テーブルおよびレベルを通したテーブル・ウォークが行われる必要があることを示す。アドレスがTLB内に見つからない場合、1つまたは複数の実施形態では、よりコストのかかるハードウェア・ハンドラまたはソフトウェア・ハンドラを伴う変換プロセスが呼び出されて変換をハンドリングし、ページ・テーブル・エントリをTLB内にロードおよび挿入し、よって、アドレスはTLBにおいてヒットし、メモリ・アクセスが進行し得る。TLBは、通常、プロセッサ(CPU)に関連付けられ、プロセッサ(CPU)にローカルであり得る。
【0023】
仮想アドレスを物理メモリの実アドレスに変換するいくつかの従来の手法が存在する。基数ページ変換(RPT)は、仮想メモリ・ベース・システムにおいて仮想アドレス(VA)を実アドレス(RA)に変換する基数木ベースの手法である。木構造のページ・テーブル(例えば、基数アドレス変換)の手法は、メモリにおいて木構造を使用する。木のルートは、メモリ内の物理アドレスによって識別され、ページ・テーブル・エントリが見つかるまで、仮想アドレスからのビットが木の各レベルにおけるインデックスとして使用される。木構造において見つかった最後のページ・テーブル・エントリ(PTE)はTLBにキャッシュされるが、各レベルの中間物は、典型的には、ページ・ウォーク・キャッシュ(PWC:page walk cache)にキャッシュされる。典型的なRPT変換において、変換された物理または実アドレス(RA)を得るために、基数木の複数レベルを通して「ウォーク(walk)」する必要がある。典型的な構成では、このウォーキング・プロセスは、プロセッサ(CPU)によって完全に管理され、プロセッサ(CPU)とメモリ・コントローラ(MC)との間の多数の交換のため長時間を要することがある。
【0024】
アドレス変換は、典型的には、データまたは情報処理環境において生じ、より具体的には、一般的にプロセッサ・ベース・システムまたはコンピュータ化環境あるいはその両方において生じる。
図1は、本開示の実施形態が実施され得るコンピュータ・システム150を示す機能ブロック図である。システム150は、コンピュータ152の形態の自動コンピューティング機械の実施例を含む。
【0025】
コンピュータ152は、少なくとも1つのプロセッサ156または中央処理装置(「CPU」)およびランダム・アクセス・メモリ168(「RAM」)を含んでもよく、RAM168は、高速メモリ・バス166およびバス・アダプタ158を介してプロセッサ156およびコンピュータ152の他のコンポーネントに接続される。
【0026】
プロセッサ156は、フロント・サイド・バス162、バス・アダプタ158、および高速メモリ・バス166を通してRAM168に連結されるように図示されているが、当業者であれば、そのような構成は単なる例示的な実施態様であり、プロセッサ156をシステム150の他のコンポーネントに連結する他の構成が利用され得ることを認識するであろう。いくつかの実施形態では、プロセッサ156は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)接続などの直接周辺接続をサポートし得る。
【0027】
オペレーティング・システム154は、コンピュータ152のRAM168に記憶され得る。プロセッサの動作用に構成されたコンピュータにおいて有用なオペレーティング・システムは、UNIX(R)、Linux(R)、Microsoft Windows(R)、AIX(R)、IBM(R)のz/OS(R)、および当業者に既知のその他のものを含み得る。オペレーティング・システム154がRAM168内に位置することに加えて、データ処理アプリケーションなどの他のコンポーネントが、RAM168に記憶され得る。さらに、ソフトウェアおよび他のコンポーネントが、ディスク・ドライブ170などの不揮発性メモリに記憶され得る。
【0028】
コンピュータ152は、拡張バス160およびバス・アダプタ158を通してプロセッサ156およびコンピュータ152の他のコンポーネントに連結されるディスク・ドライブ・アダプタ172を含み得る。ディスク・ドライブ・アダプタ172は、不揮発性データ・ストレージをディスク・ドライブ170の形態でコンピュータ152に接続し得る。ディスク・ドライブ・アダプタは、インテグレーティド・ドライブ・エレクトロニクス(「IDE」)・アダプタ、スモール・コンピュータ・システム・インターフェース(「SCSI」)・アダプタ、および当業者に既知のその他のものを含み得る。不揮発性コンピュータ・メモリは、また、光ディスク・ドライブ、電気的消去可能プログラマブル読み取り専用メモリ(いわゆる「EEPROM」または「フラッシュ」メモリ)、RAMドライブ、および当業者に既知のその他のものとして実施され得る。
【0029】
コンピュータ152は、1つまたは複数の入力/出力(「I/O」)アダプタ178を含み得る。I/Oアダプタ178は、例えば、コンピュータ・ディスプレイ・スクリーンなどのディスプレイ・デバイスへの出力、ならびにキーボードおよびマウスなどのユーザ入力デバイス181からのユーザ入力を制御するためのソフトウェア・ドライバおよびコンピュータ・ハードウェアを通してユーザ指向入力/出力を実施し得る。コンピュータ152は、ビデオ・アダプタ209を含んでもよく、ビデオ・アダプタ209は、ディスプレイ・スクリーンまたはコンピュータ・モニタなどのディスプレイ・デバイス180へのグラフィック出力用に特に設計されたI/Oアダプタの実施例である。ビデオ・アダプタ209は、高速ビデオ・バス164、バス・アダプタ158、およびフロント・サイド・バス162を通してプロセッサ156に接続され、フロント・サイド・バス162もまた、高速バスであってもよい。I/Oアダプタ178は、また、通信アダプタおよびドライブ・アダプタを含んでもよい。I/Oアダプタ178は、また、全てのI/Oが接続されるPCI Expressであってもよい。
【0030】
コンピュータ152は、他のコンピュータ182とのデータ通信およびデータ通信ネットワーク100とのデータ通信のための通信アダプタ167を含み得る。このようなデータ通信は、RS-232接続を通して、ユニバーサル・シリアル・バス(「USB」)などの外部バスを通して、IPデータ通信ネットワークなどのデータ通信ネットワークを通して、および当業者に既知の他の方法で、シリアルで行われ得る。通信アダプタ167は、1つのコンピュータがデータ通信を別のコンピュータに、直接またはデータ通信ネットワーク174を通して送信する、データ通信のハードウェア・レベルを実施し得る。通信アダプタ167の実施例は、有線ダイアルアップ通信用モデム、有線データ通信用イーサネット(IEEE802.3)アダプタ、および無線データ通信用802.11アダプタを含み得る。
【0031】
図1に示されるコンピュータおよび他のデバイスの構成は、説明のためのものであり、限定のためのものではない。本開示の様々な実施形態により有用なデータ処理システムは、追加サーバ、ルータ、他のデバイス、およびピアツーピア・アーキテクチャを含み得る。このようなデータ処理システムにおけるネットワークは、例えば、TCP(トランスミッション・コントロール・プロトコル)、IP(インターネット・プロトコル)、HTTP(ハイパー・テキスト・トランスファー・プロトコル)、WAP(ワイヤレス・アクセス・プロトコル)、HDTP(ハンドヘルド・デバイス・トランスポート・プロトコル)、および当業者に既知のその他のものを含む多くのデータ通信プロトコルをサポートし得る。本開示の様々な実施形態は、
図1に示されるものに加えて、多様なハードウェア・プラットフォーム上で実施され得る。
【0032】
変換ケイパビリティの1つまたは複数の態様を組み込み、使用するためのコンピューティング環境の一実施例が、
図2Aを参照して説明される。一実施例では、コンピューティング環境100は、少なくとも1つのメモリ管理ユニット(MMU)/トランスレーション・ルックアサイド・バッファ(TLB)部104およびキャッシュ106を含む、プロセッサ(中央処理装置-CPU)102を含む。プロセッサ102は、キャッシュ110を有するメモリ部108および入力/出力(I/O)部112に通信可能に連結される。I/O部112は、例えば、データ入力デバイス、センサ、またはディスプレイなどの出力デバイス、あるいはそれらの組み合わせを含み得る、外部I/Oデバイス114に通信可能に連結される。
【0033】
メモリ管理ユニット104は、メモリ部108を管理することに使用され、メモリへのアクセスを容易にすることを含む。アドレス変換を向上させるために、実施形態におけるメモリ管理ユニットは、トランスレーション・ルックアサイド・バッファ(TLB)を利用する。TLBは、以前変換されたアドレスのキャッシュである。したがって、変換されるべきアドレスを含むメモリ・アクセスについての要求が受信されるとき、TLBが最初にチェックされる。アドレスおよびその変換がTLB内にある場合、変換は必要ない。そうでない場合、受信した仮想アドレスが変換される。
【0034】
本発明の1つまたは複数の態様を組み込み、使用するコンピューティング環境のさらなる実施形態が、
図2Bに示されている。この実施例では、コンピューティング環境150は、例えば、1つまたは複数の仮想マシン154、1つまたは複数の中央プロセッサ(例えば中央処理装置)156、少なくとも1つのハイパバイザ158、および入力/出力サブシステム160を含むサーバ152を含む。仮想マシンおよびハイパバイザは、メモリ162に含まれる。
【0035】
この実施形態では、各仮想マシンは、ゲスト・オペレーティング・システム168をホストすることが可能であり、1つまたは複数のアプリケーション170を実行していてもよい。仮想マシンにおいて稼働するオペレーティング・システムまたはアプリケーションは、全システムにアクセス可能なように見えるが、実際には、その一部のみが利用可能である。
【0036】
中央プロセッサ156(例えば、中央処理装置)は、仮想マシンに割り当て可能な物理プロセッサ・リソースである。例えば、仮想マシン154は、1つまたは複数の論理プロセッサを含み、そのそれぞれが、仮想マシンに動的に割り当てられ得る物理プロセッサ156の全てまたは割り当てを表す。CPU102のような中央プロセッサ156は、少なくとも1つのMMU/TLB部および少なくとも1つのキャッシュを含む。仮想マシン154は、実施例として、インターナショナル・ビジネス・マシーンズ・コーポレーションにより提供されるPowerVM(R)などのハイパバイザ158によって管理される。
【0037】
入力/出力サブシステム160は、デバイスとメモリ(本明細書ではメイン・メモリまたはメイン・ストレージとも呼ばれる)との間の情報の流れを指示する。それは、サーバの一部またはサーバから別個のものであり得るという点において、サーバに連結される。I/Oサブシステムは、サーバに連結されたI/Oデバイスと直接通信するタスクを中央プロセッサから取り除き、データ処理がI/O処理と同時に進行することを可能にする。
【0038】
仮想メモリ・システムにおけるアドレス変換は、典型的には、様々なアドレス・データ構造にアクセスすることを組み込む。1つのそのような構造は、ページ・テーブルと呼ばれ、ページ単位で仮想アドレスを実アドレスにマッピングする複数のエントリを含む。フォーマットおよびページ・テーブル・エントリに含まれる情報は、システム構成のアーキテクチャまたは特定種類の変換あるいはその両方に依存する。階層型ページ・テーブルの典型を横断することによって位置特定されるページ・テーブル・エントリは、様々な情報を含み、物理メモリにアクセスするために使用される実アドレスの少なくとも一部を含む。
【0039】
変換のために受信されるアドレスは、仮想アドレス・ビットおよびページ・オフセットを含む1つまたは複数のオフセットを含み得る。仮想アドレス・ビットは、TLBへ伝送され、TLBは、仮想アドレス・ビットをTLBに記憶された実ページ番号と照合することを試みる。TLBが仮想アドレス・ビットに合致する実ページ番号を含むエントリを見つけた場合、それは、物理アドレスを提供する。物理アドレスは、物理メモリ内のページをアドレス指定するために使用される。ページ・ビットまたはページ・オフセットは、ページの始まりに対するアドレスにアクセスするために使用される。
【0040】
一実施形態では、合致が見つからない(TLBミス)場合、アドレス変換システムは、TLBミスの後でページ・ウォークを実行することによって、ページ・テーブルから物理アドレスをフェッチする。仮想アドレス解決システムは、また、フェッチされた物理アドレスをTLBのアレイの1つまたは複数にロードし得る。さらに、1つまたは複数の実施形態では、ページ・ウォークの1つまたは複数のステップは、また、ページ・ウォーク・キャッシュ(PWC)のアレイにインストールされる。即ち、ページ・ウォークが実行されるとき、ページ・ウォークの様々な中間エントリは、ページ・ディレクトリ・エントリとしてPWCに保存され得る。PWCアレイにキャッシュされたページ・ウォーク・ステップは、処理システムが後続のページ・ウォークをより高速に実行することを可能にする。これは、後続のページ・ウォークがページ・ウォークのキャッシュされたステップを実行しなくてもよいため、またはページ・ウォークが始まりから開始する必要がないため、あるいはその両方である。
【0041】
基数ページ変換(RPT)は、有効/仮想アドレス空間が基数木を用いて実アドレス/物理アドレスに変換される、メモリ仮想化の共通かつ一般的な方法である。RPTは、階層型変換テーブル機構の実施例である。テーブルの階層は、動的アドレス変換(DAT)テーブルと呼ばれ、RPTの場合、テーブルは、基数テーブルと呼ばれる。RPTプロセスの場合、基数木(即ち、基数テーブル)は、物理アドレス空間(例えば、メイン・メモリ)に記憶され、ページ・ディレクトリ・ベースとも呼ばれる木のルートは、プロセッサ(CPU)内のレジスタに記憶される。ある実施形態における基数ページ・テーブルは、仮想ページ番号と実ページ番号との間、仮想ページ番号と仮想化された実ページ番号との間、または仮想化された実ページ番号と実ページ番号との間のマッピングを指定する、例えば階層型のデータ構造である。
【0042】
基数ページ・テーブル・ウォーク(RPT)を実行して仮想アドレスを物理メモリ内の実アドレスに変換するために、プロセッサは、基数木のルートまたはベースにおいて開始し、仮想アドレスからのビットのセットをページ・ディレクトリ・エントリまたはテーブルへのオフセットとして使用する。指定されたオフセットにおけるページ・ディレクトリ・エントリが、次のレベルのページ・ディレクトリ・エントリまたはテーブルを指す。仮想アドレスからの別のビットのセットは、このエントリ/テーブルへのインデックスを付与し、使用される次のページ・ディレクトリ・エントリ/テーブルをピックするために使用される。このプロセスは、最後のビットのセットが、ページ・テーブル内のページ・テーブル・エントリ(PTE)を見つけるために使用されるまで、続行する。現行システムでは、テーブルを通したこのウォーキング・プロセスは、プロセッサCPUによって完全に管理され、CPUとメモリ・コントローラ(MC)との間の多数の交換のためにある程度長い時間を要することがある。
【0043】
テーブル・ウォーク・プロセスの間にメモリ・コントローラによって実行される責務および動作を増加させることにより、RPTテーブル・ウォークを高速化するための1つまたは複数の実施形態が、開示される。1つまたは複数の実施形態では、メモリ・コントローラ(MC)がテーブル・ウォーク全体を実行して、CPUとメモリ/メモリ・コントローラ(MC)との間の交換の回数を減少させる。ある実施形態では、メモリ・コントローラが、テーブル・ウォーク全体を実行し、最後のページ・テーブル・エントリ(PTE)および基数木変換における中間アドレスの全てが、メモリ・コントローラからプロセッサ(CPU)に伝送または返送される。この手法は、レイテンシを減少させ、プロセッサ(CPU)内の例えばページ・ウォーク・キャッシュ(PWC)に、基数木をキャッシュすることを可能にする。別の実施形態では、メモリ・コントローラ(MC)が、テーブル・ウォーク全体を実行し、最後のページ・テーブル・エントリ(PTE)のみが、メモリ・コントローラからプロセッサ(CPU)に返送される。この手法は、レイテンシを減少させ、かつページ・ウォーク・キャッシュ(PWC)を除去し、ある態様では、ホスト変換用のページ・ウォーク・キャッシュ(PWC)を除去する。1つまたは複数の実施形態では、所望の変換を含む最後のPTEエントリが、既存の手法が可能にするよりもはるかに早く、プロセッサ(CPU)において利用可能である。
【0044】
基数ページ変換の一実施例が、
図3Aを参照して説明される。この実施例では、変換テーブル404は、仮想メモリ402のアドレスを実アドレスに変換するために提供される。階層型変換テーブル404の最上位変換テーブルの起点は、例えば制御レジスタ(CR3)406によって提供される。有効または仮想アドレス408は、例えば、物理メモリ410のページのアドレス409を有するページ・テーブル・エントリ(PTE)が位置特定されるまで、階層型変換テーブル404の各テーブルへのインデックスを付与して、次のテーブルの起点アドレスを判断するために使用される。変換機構がDATテーブルを利用する一実施例では、有効アドレスは、変換テーブルへのインデックスを付与するために使用される複数のインデックスまたはオフセットを有する仮想アドレスである。
【0045】
図3Bは、RPTのさらなる実施例、例えば、基数テーブルを通したテーブル・ウォーク・プロセスを示す。基数テーブルにおいて、階層の最高レベルの変換テーブルは、有効または仮想アドレス408の上位部分408aによって「インデックス付与」されており、次の変換テーブル(テーブル2)を位置特定するために使用されるテーブル1のエントリ412aを位置特定する。即ち、テーブル1内のエントリ412aは、テーブル2の起点アドレスを含む。同様に、有効または仮想アドレス408の次の部分408bは、テーブル2へのインデックスを付与してテーブル3の起点アドレスを有するテーブル2のエントリ412bを見つけるために使用される。有効または仮想アドレス408の次の部分408cは、テーブル3へのインデックスを付与してページ・テーブル414aの起点アドレスを有するテーブル3のエントリ412cを見つけるために使用される。有効または仮想アドレス408の次の部分408dは、ページ・テーブル414aへのインデックスを付与して物理メモリ・ページ416のアドレスを有するページ・テーブル・エントリ412dを位置特定するために使用される。一実施形態では、変換テーブルの階層の起点は、変換を開始するために、変換テーブルのどの階層かを判断するためのテーブル・セレクタ・フィールドを含み得る。したがって、変換には、階層のサブセットのみを必要とし得る(有効アドレスはゼロ値を有する所定の数の最上位ビットを含むように制限される)。変換に使用するテーブルが少ないほど、変換により多くのテーブルを使用するよりも高速になる。
【0046】
図4は、基数木を用いて、例えば、基数木の複数レベルを通したテーブル・ウォークを実行して、仮想アドレス空間が物理アドレスに変換されるRPTプロセスの別の実施例のブロック図を示す。プロセッサ(CPU)156は、メモリ162から離れている。
図5および
図6は、プロセッサ(CPU)156およびメモリ162、ならびにプロセッサ156とメモリ・コントローラ161との間のデータ交換のブロック図を示し、メモリ・コントローラ161は、メモリ162に関連付けられ、かつメモリ162にローカルである。1つまたは複数の実施形態では、メモリ162は、1つまたは複数のメモリ・カード(図示せず)を含み、各メモリ・カードは、メモリ・コントローラ161およびデータを記憶する1つまたは複数のDRAM(図示せず)を有する。
図4、
図5、および
図6の実施例において、48ビット・アドレシングが、説明のための実施例として使用され、例示的実施形態に対する限定としてではない。変換プロセスは、本明細書で説明されるように任意のサイズ(ビット幅)のアドレシング・システムを用いて実施されてもよく、例示的実施形態の範囲内において考えられる。
【0047】
図4、
図5、および
図6の実施例において、48ビットの仮想アドレスの最下位16ビット408eは、ページ・オフセットであり(64KBのページと仮定して)、メモリ内のページ上の所望の変換された実アドレスを位置特定するためのアドレスを提供する。次の8ビット408dは、ページ・テーブルへのオフセットであり、次の3セットの8ビット408c、408b、および408aは、ページ・ディレクトリの異なるレベルへのオフセットである。テーブル・ウォークを実行するために、仮想アドレス408の一部は、ページ・ディレクトリ・ルート420とも呼ばれるページ・ディレクトリ・ベース420と共に、プロセッサ(CPU)156によってメモリ・コントローラ(MC)161へ送信される。特に、典型的には、ページ・オフセット・ビット、例えばページ・ビット408eを除く仮想アドレス408の全ての上位部分が、プロセッサ(CPU)156によってメモリ・コントローラ161へ送信される。
図4、
図5、および
図6の実施例において、ページ・ディレクトリ1-オフセット408a、ページ・ディレクトリ2-オフセット408b、ページ・ディレクトリ3-オフセット408c、およびページ・テーブル・オフセット408dは、
図5および
図6においてそれぞれ570および670により示されるように、ページ・ディレクトリ・ルートまたはベース420と共にメモリ・コントローラ161へ送信される。即ち、1つまたは複数の実施形態では、570および670によって示されるように、オフセット、例えば408b、408c、および408dと共に、ページ・ディレクトリ・ベース420+ページ・ディレクトリ1-オフセット408aと呼ばれるページ・ディレクトリ・エントリ1(PDE1)が、変換の発端において、CPU156によりメモリ・コントローラ161へ送信される。言い換えると、ある実施形態では、全てのオフセット(408a、408b、408c、および408d)は、全て一緒に、ある態様では、ページ・ディレクトリ・ベース420と共に、またはページ・ディレクトリ・ベース420と共に順次、プロセッサ156からメモリ・コントローラ161にプロセッサ(CPU)156とメモリ162との間のバスを経て送信される。以前の変換方法では、ページ・ディレクトリ1-オフセット408aおよびページ・ディレクトリ・ルートまたはベース420の両方が、他のオフセット408b、408c、または408dの前に、かつ他のオフセット408b、408c、または408dなしで、プロセッサ156によってメモリ・コントローラ161へ最初に伝送されていたため、ページ・ディレクトリ2-オフセット408b、ページ・ディレクトリ3-オフセット・ビット408c、およびページ・テーブル・オフセット408dを、ページ・ディレクトリ1-オフセット408aおよびページ・ディレクトリ・ベース420と共に伝送するために、新たな命令が使用される。
【0048】
ページ・ディレクトリ・ルートまたはベース420は、オペレーティング・システムによって提供され、ある態様では、ページ・ディレクトリ・ベース420は、変換されている仮想アドレスのスレッドに基づく。ある実施形態では、テーブル・ウォークを実行するために、ページ・ディレクトリ1-オフセット408aが、メモリ・コントローラ161において、かつメモリ・コントローラ161によりページ・ディレクトリ・ベース420に加えられ、
図4の425に示されるようにメモリ・アクセスが行われて、このメモリ位置を読み取る。ある態様では、メモリ・フェッチ425は、メモリ・コントローラ161を用いてメモリ・カード上に位置するDRAMから情報およびデータを取得する。ページ・ディレクトリ・ベース420は、テーブルまたはディレクトリのアドレスを識別する役割をし、ページ・ディレクトリ1-オフセット408aは、ページ・ディレクトリ・ベース420によって識別されるテーブルへのインデックスとしての役割をする。テーブル内のそのエントリ、例えば、テーブル内のそのエントリにおけるアドレスによって識別されるメモリ位置は、変換のためのレベル2のページ・ディレクトリ・エントリのベース、例えばページ・ディレクトリ・テーブル2のアドレス430を含む。1つまたは複数の実施形態におけるメモリ・フェッチ425は、変換テーブルへのインデックス付与されたエントリ以上をメモリから取得し、ある態様では、プロセッサに関連付けられた1つまたは複数のキャッシュ、例えばL2/L3キャッシュに記憶される情報を取得する。変換の中間物がプロセッサ156、ある態様では、プロセッサ156内のページ・ウォーク・キャッシュ(PWC)に記憶される実施形態によれば、
図5のPDE1応答572は、メモリ・コントローラ161からプロセッサ(CPU)156へ送信される。ある態様におけるPDE1応答572は、425においてメモリからフェッチされた情報を含み、さらなる態様では、ページ・ディレクトリ・テーブル2のアドレスを含む。1つまたは複数の実施形態では、ページ・ディレクトリ・テーブル2のアドレスは、PWCに記憶され、ある態様では、ページ・ディレクトリ・テーブル2のアドレスは、プロセッサ156によってPWCに記憶される。
【0049】
変換を続けると、ページ・ディレクトリ2-オフセット408bは、メモリ・コントローラ161において、かつメモリ・コントローラ161によりディレクトリ・ベース(ページ・ディレクトリ・テーブル2のアドレス)430に加えられ、
図4の435に示されるようにメモリ・アクセスが行われて、このメモリ位置を読み取る。ある態様では、メモリ・フェッチ435は、メモリ・コントローラ161を用いてメモリ・カード上に位置するDRAMから情報およびデータを取得する。ページ・ディレクトリ・テーブル2のアドレス430は、テーブルまたはディレクトリのアドレスを識別する役割をし、ページ・ディレクトリ2-オフセット408bは、ページ・ディレクトリ・ベース430によって識別されるテーブルへのインデックスとしての役割をする。このメモリ位置は、変換のためのレベル3のページ・ディレクトリ・エントリのベース、例えば、ページ・ディレクトリ・テーブル3のアドレス440を含む。1つまたは複数の実施形態におけるメモリ・フェッチ435は、変換テーブルへのインデックス付与されたエントリ以上をメモリから取得し、ある態様では、プロセッサに関連付けられた1つまたは複数のキャッシュ、例えばL2/L3キャッシュに記憶される情報を取得する。変換の中間物がプロセッサ、ある態様では、ページ・ウォーク・キャッシュ(PWC)に記憶される実施形態によれば、
図5のPDE2応答574は、メモリ・コントローラ161からプロセッサ(CPU)156へ送信される。ある態様におけるPDE2応答574は、435においてメモリからフェッチされた情報を含み、さらなる態様では、ページ・ディレクトリ・テーブル3のアドレスを含む。1つまたは複数の実施形態では、ページ・ディレクトリ・テーブル3のアドレスは、PWCに記憶され、ある態様では、プロセッサ156によってPWCに記憶される。
【0050】
変換をさらに続けると、変換されている仮想アドレス408が、メモリ・コントローラ161へ送信された追加オフセット・ビットを有する場合、ページ・ディレクトリ3-オフセット408cは、メモリ・コントローラ161において、かつメモリ・コントローラ161によりディレクトリ・ベース(ページ・ディレクトリ・テーブル3のアドレス)440に加えられ、
図4の445に示されるようにメモリ・アクセスが行われて、このメモリ位置を読み取る。ある態様では、メモリ・フェッチ445は、メモリ・コントローラ161を用いてメモリ・カード上に位置するDRAMから情報およびデータを取得する。ページ・ディレクトリ・テーブル3のアドレス440は、テーブルまたはディレクトリのアドレスを識別する役割をし、ページ・ディレクトリ3-オフセット408cは、ページ・ディレクトリ・ベース440によって識別されるテーブルへのインデックスとしての役割をする。このメモリ位置は、変換のためのページ・テーブル・オフセット・エントリのベース、例えば、ページ・テーブル・アドレス450を含む。1つまたは複数の実施形態におけるメモリ・フェッチ445は、変換テーブルへのインデックス付与されたエントリ以上をメモリから取得し、ある態様では、プロセッサに関連付けられた1つまたは複数のキャッシュ、例えばL2/L3キャッシュに記憶される情報を取得する。変換の中間物がプロセッサ、ある態様では、ページ・ウォーク・キャッシュ(PWC)に記憶される実施形態によれば、
図5のPDE3応答576は、メモリ・コントローラ161からプロセッサ(CPU)156へ送信される。ある態様におけるPDE3応答576は、445においてメモリからフェッチされた情報を含み、さらなる態様では、ページ・テーブル・アドレスを含む。1つまたは複数の実施形態では、ページ・テーブル・アドレスは、PWCに記憶され、ある態様では、プロセッサ156によってPWCに記憶される。
【0051】
ページ・テーブル・ウォークをさらに続けてアドレス変換を取得すると、ページ・テーブル・オフセット408dは、メモリ・コントローラ161において、かつメモリ・コントローラ161によりディレクトリ・ベース(ページ・テーブル・アドレス)450に加えられ、
図4の455に示されるようにメモリ・アクセスが行われて、ページ・テーブル・エントリ(PTE)を取得する。ある態様では、メモリ・フェッチ455は、メモリ・コントローラ161を用いてメモリ・カード上に位置するDRAMから情報およびデータを取得する。ページ・テーブル・アドレス450は、テーブルまたはディレクトリのアドレスを識別する役割をし、ページ・テーブル・オフセット408dは、ページ・テーブル・アドレス450によって識別されるテーブルへのインデックスとしての役割をする。このメモリ位置は、変換のためのページ・テーブル・エントリ460を含む。
図5のPTE応答578は、メモリ・コントローラ161からプロセッサ(CPU)156へ送信される。同様に、
図6の変換プロセスにおいて、PTE応答678は、メモリ・コントローラ161からプロセッサ(CPU)156へ送信される。ある態様におけるPDE応答578および678は、455においてメモリからフェッチされた情報を含み、さらなる態様において、ページ・テーブル・エントリ(PTE)460を含む。1つまたは複数の実施形態では、ページ・テーブル・エントリ(PTE)460は、TLBに記憶され、ある態様では、プロセッサ156によってTLBに記憶される。
【0052】
1つまたは複数の実施形態では、
図5および
図6に示されるように、ページ・ベース・ルート・ディレクトリを伴うディレクトリ・テーブルへの全てのオフセットが、好ましくはテーブル・ウォーク・プロセスの開始において、好ましくは一緒に、プロセッサからメモリ・コントローラへ送信される。1つまたは複数の実施形態ではプロセッサの代わりにメモリ・コントローラがテーブル・ウォークを実行し、例えば、メモリ・コントローラは、ベース・テーブル/ディレクトリにオフセットを加え、メモリ・アクセスはメモリ・コントローラから発出する。即ち、メモリ・コントローラは、メモリ、例えばDRAMを読み取り、オフセットを加える。
図5および
図6の両方の手法において、メモリ・コントローラは、プロセッサ(CPU)の代わりに変換の間、ポインタ追跡プロセスを実行する。
【0053】
図6の実施形態では、例えばページ・テーブル・エントリ(PTE)460を含む最後のメモリ・ライン・アクセスのみが、プロセッサに返送され、好ましくは、プロセッサ内のTLBに記憶される。
図6の実施形態では、例えば、中間ディレクトリ430、440、および450を含む中間メモリ・アクセスは、プロセッサに返送されず、中間ディレクトリは、ページ・ウォーク・キャッシュ(PWC)に記憶されない。
図5の実施形態では、例えば、
図4のページ・ディレクトリ・テーブル2のエントリ/アドレス430、ページ・ディレクトリ・テーブル3のエントリ/アドレス440、およびページ・ディレクトリ・テーブルのエントリ/アドレス450を含む中間メモリ・アクセスのうちの1つまたは複数、ならびに好ましくは全ての中間メモリ・アクセスが、ページ・テーブル・エントリ460に加えて、メモリ・コントローラ161からプロセッサ156へ伝送される。プロセッサに返送される中間メモリ・アクセスに含まれる中間ディレクトリ・エントリ430、440、および450は、1つまたは複数のページ・ウォーク・キャッシュ(PWC)に記憶されてもよく、ページ・テーブル・エントリ(PTE)は、TLBに記憶され得る。例えば、
図3Bに示される変換またはテーブル・ウォークの中間エントリ(412a、412b、および412c)は、プロセッサに返送され、好ましくはPWCに記憶される。一方、
図3Bに示される変換またはテーブル・ウォークからのページ・テーブル・エントリ412dが、プロセッサに返送され、TLBに記憶される。
図5の実施形態は、全ての中間変換、例えば、ベース・テーブルまたはディレクトリがプロセッサに返送されることを示しているが、中間メモリ・アクセス、例えば中間ディレクトリ・エントリの全てより少ないもの、および任意の組み合わせがプロセッサに返送され、ある態様では1つまたは複数のページ・ウォーク・キャッシュ(PWC)に記憶され得ると理解され得る。
【0054】
図6の実施形態では、PTE応答678のみがプロセッサに返送されるため、変換処理のレイテンシは、メモリ・コントローラが要求で飽和する状況にある
図5の実施形態よりも減少され得る。
図6の実施形態は、変換(テーブル・ウォーク)がより迅速に完了するはずであるが、しかしながら、プロセッサは、ページ・ウォーク・キャッシュ(PWC)に記憶された中間ページ・テーブル・ディレクトリの恩恵を有しない。したがって、中間変換がPWCに保存されるかどうかは、将来のテーブル・ウォーク・レイテンシを減少させることを目的として中間ディレクトリ変換を記憶するのに十分大きなキャッシュを含むかどうかを含む、設計上の選択の問題である。
【0055】
典型的な最新のマイクロプロセッサでは、プロセッサは、プロセッサ内のベース・ディレクトリにオフセットを加え、プロセッサは、ベースおよびオフセット、例えば、ベース420+オフセット408a、またはベース430+オフセット408bをメモリへ送信して、次のベースをフェッチし、応答、例えばメモリ・アクセス結果が、プロセッサに返送される。そのようなメモリ・アクセス交換は、およそ300サイクルであり、したがってそのようなシステム構成で
図4のテーブル・ウォークを通過するためには、およそ1200サイクルを要する。ゲスト・オペレーティング・システムがハイパバイザの基数ページ・テーブルの上位で基数ページ変換ツリーを実施する、
図2Bに示された仮想化環境では、単一のゲスト変換は、プロセッサとメモリとの間で多数のメモリ交換、例えば、合計7200サイクルの24のメモリ交換を必要とし得る。変換がメモリ・コントローラにおいて実行される実施形態では、プロセッサとメモリとの間のそれらのメモリ・アクセス交換が除去されて、テーブル・ウォーク・プロセスに関与するレイテンシを減少させる。メモリ内に存在する情報を取得するためのメモリ・アクセスが依然として存在するが、それらのメモリ・アクセスは、メモリ・デバイス、例えばDRAMと同一のカードにローカルであり、かつ同一カード上にあることが多いメモリ・コントローラによって制御される。言い換えると、メモリ・フェッチ要求は、プロセッサから発出されず、プロセッサとメモリとの間のバスを通過しなくてもよい。
【0056】
2つの手法の恩恵は、プロセッサとメモリ/メモリ・コントローラとの間を行き来する交換の回数が減少されることである。これらの実施形態によるシステムおよび変換プロセスは、プロセッサとメモリ/メモリ・コントローラとの間の多くの往復交換として発生せず、したがって、これらのメモリ・アクセスについてプロセッサ156とメモリ162との間のバスを通過することに関連するレイテンシを生じない。例えば、
図6の実施形態では、好ましくは、プロセッサ156によってメモリ・コントローラ161へ送信される1つのメモリ・アクセス要求670、およびメモリ・コントローラ161からプロセッサ156に返送される1つの応答678、例えばページ・テーブル・エントリを含むメモリ・アクセス・ラインが存在する。メモリ・コントローラが様々なテーブル/ディレクトリを通して変換をウォークするときにメモリに対する複数のアクセスが存在することとなるため、メモリ・コントローラによってプロセッサに返される単一の応答は、典型的な技術によれば、複数のメモリ・アクセスの1つよりも長い、例えば500サイクルを要すると考えられる。しかしながら、プロセッサとメモリ・コントローラとの間のその単一の交換によって、基数木をウォークするため、例えば、変換(PTE460)を取得するための総レイテンシが減少する。
【0057】
図5に示される変換プロセスは、1つまたは複数の実施形態では、既存のテーブル・ウォーク・プロセスと同一の帯域幅を消費し、かつ
図6の変換プロセスよりも長い時間を要し得るが、既存の技術よりも依然としてレイテンシを減少させると同時に、プロセッサ内のページ・ウォーク・キャッシュに記憶される中間アドレス(中間テーブル/ディレクトリ)の恩恵を有する。中間テーブルおよびディレクトリについての中間アドレスをメモリ・コントローラからプロセッサに返送することによって、
図6と比較して
図5の変換プロセスの速度は低下し得るが、おそらく著しくではない。実施形態では、中間応答、例えば、PDE応答572、PDE2応答574、およびPDE3応答576のそれぞれを伝送することは、約60~70サイクルかかるが、プロセッサとメモリとの間の各往復交換を実行するために300サイクル未満であると考えられる。1つまたは複数の実施形態では、メモリ・コントローラは、CPUキャッシュ、例えばページ・ウォーク・テーブル(PWC)内の中間アドレスの有無を意識し得る。1つまたは複数の態様では、メモリ・コントローラは、必要なメモリ・ラインのみを送信し得る。このやり方では、例えば、中間テーブル/ディレクトリについて、中間アドレスをページ・ウォーク・キャッシュ(PWC)にキャッシュすることの恩恵が維持されるが、最後のレベルのページ・ウォーク・キャッシュ(
図4のページ・ディレクトリ・テーブル3のアドレス440)においてヒットしない任意のテーブル・ウォークのレイテンシが、改善される。
【0058】
図5および
図6のアドレス変換プロセスの実施形態は、単一レベルの変換、例えば仮想アドレスから実アドレスへの単一レベルの変換を示しているが、
図5および
図6のアドレス変換プロセスおよびそれらの組み合わせが、ネスト型変換において使用され得る。例えば、
図2Bに示されるように仮想マシンがゲストをホストするネスト型変換では、ゲスト・プロセスが基数変換を実行するホスト上で実行している基数変換を使用し、複数レベルのRPTが存在することとなる。ゲスト変換は、中間変換、例えば、PDE2、PDE3、およびPTEアドレス、ならびにゲストについての各メモリ・アクセスに関連するPDE2、PDE3、およびPTEアドレス(ホスト・レベルについてのPDE2、PDE3、およびPTE)を有する。様々なゲストおよびホスト・レベルの変換に対して
図5および
図6の変換プロセスを利用することによって、変換におけるレイテンシのさらなる減少が達成され得る。ネスト型変換は、
図5および
図6のプロセスの組み合わせも使用し得る。例えば、ホスト変換についての中間情報、例えば、ページ・ウォーク・キャッシュまたはTLBあるいはその両方におけるエントリは、
図6のプロセスによって一部示されるように記憶されず、中間情報、例えば、ページ・ウォーク・キャッシュ内のエントリが、
図5のプロセスによって示されるようにゲストについて記憶される。即ち、ホスト変換メモリ・アクセスについては中間物が記憶されないが、ゲスト変換メモリ・アクセスについては中間物が記憶される。ネスト型アドレス変換に対してこのハイブリッド手法を利用することによって、ゲスト変換について中間情報を記憶する一方で、ホスト変換についてはいかなる中間情報も記憶しないこと、例えば中間ディレクトリ・アドレスを記憶しないことにより変換のレベルが1つだけであるように見せることによって、フットプリントが減少される。フットプリントの減少は、領域の減少、電力の減少、およびキャッシュされ続けるゲスト変換についてTLBがより良く利用されることを理由に、ホストについて中間アドレスを記憶しないことからのいかなる損失も相殺し得る。例えば、ゲストがホスト上で稼働する仮想化システムは、既存のプロセスの下では、1つのネスト型変換について18のPWCエントリおよび6のTLBエントリを記憶することが必要となり得るが、ハイブリッド(組み合わされた)手法を利用すると、3のPWCエントリおよび6のTLBだけが記憶され、したがって、プロセッサ領域の減少および電力の減少を保つ。
【0059】
図7は、ある実施形態において、アドレス変換、例えば本開示の1つまたは複数の実施形態による基数ページ変換(RPT)を処理することを含む、1つまたは複数のデータ処理方法を示し説明する1つの実施形態による、例示的フローチャートである。より具体的には、ある態様において開示される方法は、好ましくはメモリ・コントローラがテーブル・ウォークを実行して、アドレス変換を取得するためにテーブル・ウォークを実行することを目的とする。方法700は、一連のステップまたはいくつかのステップあるいはその両方を含むように、便宜上かつ本開示を限定する意図なしに説明されているが、プロセスが一連のステップとして実行される必要はなく、またはステップが
図7に関して示され説明される順序で実行される必要はなく、あるいはその両方であるが、プロセスが統合されてもよく、または1つもしくは複数のステップが共に同時に実行されてもよく、あるいはその両方であってもよく、あるいはステップが開示される順序または代替の順序で実行されてもよいことを理解されたい。
【0060】
図7の方法700は、情報処理システムにおいてデータを処理することに関し、より詳細には、実施形態においてネスト型アドレス変換を処理することを含む、アドレス変換、例えば仮想化メモリ・システム内の実アドレスに対して仮想アドレスを処理することに関する。情報処理システムにおいて、プロセッサは、データをメモリからロードするための要求を含む命令を処理する。データをメモリからロードするための要求または命令は、要求されたデータが位置するメモリ内の位置に対する仮想アドレスを含むことが多く、それらの仮想アドレスは、物理メモリ・デバイス内の実アドレスに変換される必要がある。705において、アドレス変換のための要求が行われる。アドレス変換のための要求は、復号された命令からであってもよく、プロセッサに対して発行されてもよい。710において、プロセッサは、ベース・ディレクトリおよび仮想アドレス・オフセットをメモリ・コントローラへ送信する。1つまたは複数の実施形態では、710において、プロセッサは、全ての仮想メモリ・オフセットを共に、好ましくはベース・ディレクトリと共に、メモリ・コントローラへ送信する。ある実施形態では、710において、プロセッサは、第1のレベルの仮想アドレスをベース・ディレクトリに加え、結合されたベース・ディレクトリおよび第1のレベルのオフセットを、残りの仮想メモリ・オフセットと共にメモリ・コントローラへ送信する。ページ・ビットを除く全ての仮想メモリ・オフセット、例えば、メモリのページ上の位置を指定するアドレス・ビットを除く全ての仮想アドレス・ビットが、プロセッサからメモリ・コントローラへ送信され得ると理解されたい。
【0061】
715において、一実施形態では、メモリ・コントローラは、プロセッサによって送信されたオフセットをベース・ディレクトリに加える。アドレス変換の第1のインスタンスでは、715において、第1のレベルのオフセットが、ベース・ディレクトリに加えられる。プロセッサが第1のレベルのオフセットをベース・ディレクトリに加えたインスタンスでは、メモリ・コントローラは、この結合を実行しない。720において、メモリ・コントローラは、ベースおよびオフセットによって示されるメモリ・ラインに対してメモリにアクセスする。1つまたは複数の実施形態では、メモリ・コントローラは、オフセットをディレクトリ・テーブルに結合または追加し、例えば、オフセットおよびカレント・ディレクトリ・テーブルまたはベースを用いて、次のディレクトリ・テーブルをルックアップし、フェッチする。これが第1のレベルのメモリ変換である場合、メモリ・コントローラは、ベースおよび第1のレベルのオフセットによって示されるメモリ・ラインについてメモリにアクセスする。上述の通り、ある態様におけるオフセット・ビットは、ディレクトリ・テーブルへのインデックスを表し、メモリ・コントローラは、ディレクトリ・テーブル内のエントリに対応するメモリ・ラインについて、720においてメモリにアクセスする。ある実施形態では、メモリ・コントローラによって読み取られるメモリ・ラインは、次のディレクトリ・テーブルについてのアドレスを含む。1つまたは複数の実施形態では、メモリから読み取られるメモリ・ラインが、単なるディレクトリ・テーブル・アドレス以上を含むデータのチャンクを含み得るとき、メモリ・コントローラは、次のディレクトリ・テーブルについてのアドレスを抽出する。
【0062】
730において、変換プロセスが中間ベース・ディレクトリ・アドレスを保存しているかどうかが判断される。システムが中間ディレクトリ・テーブル・アドレスを保存している場合(730:はい)、720においてメモリ・コントローラによりアクセスされたメモリ・ラインが、735においてプロセッサに返送される。ある態様では、735においてメモリ・ライン全体がプロセッサに返送され、または1つもしくは複数の実施形態では、中間ディレクトリ・テーブル・アドレスがプロセッサに返送される。740において、中間ディレクトリ・テーブル・アドレスが、プロセッサ内のページ・ウォーク・キャッシュに保存される。ある態様において、プロセッサに返送されるメモリ・ラインが、単なるディレクトリ・テーブル・アドレスより多くのデータを有する場合に、プロセッサは、ページ・ウォーク・キャッシュ内の中間ディレクトリ・テーブル・アドレスについてのアドレスを抽出し、保存する。740の後、プロセスは750に続く。
【0063】
730において、中間ディレクトリ・テーブルが保存されていないと判断される場合(730:いいえ)、プロセスは750に続く。750において、メモリ・コントローラによって受信される仮想アドレスに任意の追加オフセットがあるかどうかが判断される。したがって、変換プロセスが
図6の実施形態に従って動作している場合、プロセスは、ステップ735および740を飛ばして730から750に進む。750において仮想アドレスへの追加オフセットがあると判断される場合(750:はい)、プロセスは、ステップ715から戻って進行する。715において、メモリ・コントローラは、ディレクトリ・テーブルにオフセットを加える。プロセスが、プロセス・ステップ715に戻るインスタンスでは、次のレベルのオフセットが加えられる(インデックス付与される)ディレクトリ・テーブルは、720においてメモリ・アクセスから返されるアドレス、ある態様では、前のディレクトリ・テーブルにおいて識別されるエントリによって指定されるアドレスにあるディレクトリ・テーブルである。メモリ・コントローラは、その後720に進み、720において、メモリ・コントローラは、次のディレクトリ・テーブルを含むメモリ・ラインについて今回再びメモリにアクセスする(読み取る)。プロセスは、750において仮想アドレス・オフセットがもはやなくなるまで(750:いいえ)、ステップ715、720、730、735、および740を通して続く。言い換えると、プロセス700は、テーブル・ウォークが750において完了するまで続く。
【0064】
750において仮想アドレス・オフセットがもはやなくなると(750:いいえ)、テーブル・ウォークは完了し、755において、720におけるメモリ・アクセスからのメモリ・ラインが、プロセッサへ送信される。ある実施形態では、ページ・テーブル・エントリ(PTE)が、720において読み取られるメモリ・ラインから抽出されてもよく、PTEがプロセッサへ送信されてもよい。760において、PTEはプロセッサ内のTLBに保存される。755においてプロセッサに返送されるメモリ・ラインが単なるPTE以上を含む状況では、プロセッサは、760においてPTEを抽出し、それをTLBに記憶する。このアドレス変換に対する将来の要求は、TLBにおいてヒットするはずである。
【0065】
上述した例示的実施形態は、好ましくはプロセッサのユニットおよび回路などのハードウェアにおいて実施されるが、例示的実施形態の様々な態様は、ソフトウェアにおいても同様に実施され得る。例えば、
図7のフローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせが、コンピュータ・プログラム命令によって実施され得ると理解されたい。プロセッサまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャートの1つまたは複数のブロックにおいて指定される機能を実施する手段を生成するように、これらのコンピュータ・プログラム命令は、プロセッサまたは機械を製造するための他のプログラマブル・データ処理装置に提供されてもよい。コンピュータ可読メモリまたは記憶媒体に記憶される命令が、フローチャートの1つまたは複数のブロックにおいて指定される機能を実施する命令手段を含む製品を製造するように、これらのコンピュータ・プログラム命令は、また、プロセッサまたは他のプログラマブル・データ処理装置に特定の方法で機能するように指示することが可能な、コンピュータ可読メモリまたは記憶媒体に記憶されてもよい。
【0066】
したがって、フローチャート図のブロックは、指定された機能を実行する手段の組み合わせ、指定された機能を実行するステップの組み合わせ、および指定された機能を実行するプログラム命令手段をサポートする。フローチャート図の各ブロックおよびフローチャート図のブロックの組み合わせが、指定された機能もしくはステップを実行する専用ハードウェア・ベース・コンピュータ・システム、または専用ハードウェアおよびコンピュータ命令の組み合わせによって実施され得ることにも理解されたい。
【0067】
本開示の1つまたは複数の実施形態は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組み合わせであってもよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読記憶媒体を含み得る。
【0068】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶し得る有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、または前述したものの任意の適当な組み合わせであってもよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー・ディスク、パンチカードまたは命令をその上に記録させる溝内の隆起構造などの機械的に符号化されたデバイス、および前述したものの任意の適当な組み合わせを含む。本明細書で用いられるコンピュータ可読記憶媒体は、電波もしくは他の自由伝播する電磁波、導波管もしくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、または電線を通って伝送される電気信号などの、本来一過性信号であると解釈されるべきではない。
【0069】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスに、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、もしくは無線ネットワーク、またはそれらの組み合わせを介して外部コンピュータまたは外部記憶デバイスに、ダウンロードされ得る。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組み合わせを含み得る。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信し、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体の記憶用にコンピュータ可読プログラム命令を転送する。
【0070】
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、またはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、および「C」プログラミング言語もしくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つもしくは複数のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードのいずれかであってもよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に、ユーザのコンピュータ上で部分的に、スタンドアロン・ソフトウェア・パッケージとして、ユーザのコンピュータ上で部分的にかつリモート・コンピュータ上で部分的に、またはリモート・コンピュータもしくはサーバ上で完全に、実行してもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)もしくはワイド・エリア・ネットワーク(WAN)を含む任意の種類のネットワークを通してユーザのコンピュータに接続されてもよく、または、接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータに対して行われてもよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む電子回路は、本開示の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個別化することによって、コンピュータ可読プログラム命令を実行し得る。
【0071】
本開示の態様は、本開示の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して、本明細書で説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方のブロックの組み合わせが、コンピュータ可読プログラム命令によって実施され得ると理解されたい。
【0072】
コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段を生成するように、これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または機械を製造するための他のプログラマブル・データ処理装置のプロセッサに提供されてもよい。コンピュータ可読記憶媒体に記憶される命令を有するコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置、または他のデバイス、あるいはそれらの組み合わせに特定の方式で機能するように指示し得る、コンピュータ可読記憶媒体に記憶されてもよい。
【0073】
コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施するように、コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生み出すために、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされてもよい。
【0074】
図面内のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部を表し得る。いくつかの代替実施態様において、ブロック内に記載された機能は、図面中に記載された順序以外で発生してもよい。例えば、連続して示される2つのブロックが、実質的に同時に実行されてもよく、または、ブロックが、関係する機能性次第で逆の順序で実行されることがあってもよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせが、指定された機能もしくは動作を実行するか、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する、専用ハードウェア・ベース・システムによって実施され得ることにも留意されたい。
【0075】
さらに、様々な実施形態によるシステムは、プロセッサ、およびプロセッサに統合されたロジックまたはプロセッサにより実行可能なロジックあるいはその両方を含んでもよく、ロジックは、本明細書に列挙されるプロセス・ステップのうちの1つまたは複数を実行するように構成される。統合されるとは、プロセッサが、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)などのハードウェア・ロジックとしてそこで具現化されたロジックを有することを意味する。プロセッサにより実行可能とは、ロジックが、ハードウェア・ロジック、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのソフトウェア・ロジック、またはプロセッサによりアクセス可能であり、プロセッサによる実行時に何らかの機能性をプロセッサに実行させるように構成される、ハードウェア・ロジックおよびソフトウェア・ロジックの何らかの組み合わせであることを意味する。ソフトウェア・ロジックは、当技術分野において既知の任意のメモリ・タイプのローカル・メモリまたはリモート・メモリあるいはその両方の上に記憶され得る。ソフトウェア・プロセッサ・モジュールまたはASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィック処理ユニット(GPU)などのハードウェア・プロセッサ、あるいはその両方などの、当技術分野において既知の任意のプロセッサが使用され得る。
【0076】
下記の特許請求の範囲における全てのミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素の対応する構造、物質、動作、および均等物は、他の請求された要素と組み合わせて機能を実行するための任意の構造、物質、または動作を具体的に請求されるものとして含むことを意図するものである。本開示の実施形態の説明は、例示および説明の目的で提示されているが、網羅的であるように、または開示された形態での実施形態に限定されることを意図するものではない。本開示の範囲および思想から逸脱することなく、多くの修正および変形が当業者には明らかであろう。実施形態および実施例は、開示の原理および実際の適用を最もよく説明するため、ならびに、考えられる特定の用途に適するような様々な修正を伴う様々な実施形態についての開示を他の当業者が理解できるようにするために、選択され説明された。
【0077】
本明細書で説明されるプログラムは、それらが本開示の特定の実施形態において実施されるアプリケーションに基づいて識別される。しかしながら、本明細書における任意の特定プログラムの専門語は、単に便宜上使用され、したがって、本開示は、そのような専門語によって識別され、または示唆され、あるいはその両方である任意の特定のアプリケーションにおいてのみ使用するように限定されるべきでないと理解されたい。
【0078】
前述のシステムまたは方法論あるいはその両方の様々な特徴が、上記で提示された説明から複数の組み合わせを生成して、任意のやり方で組み合され得ることは明らかである。
【0079】
本開示の実施形態が、要求に応じてサービスを供給するための、顧客の代理として展開されるサービスの形態で提供され得ることをさらに理解されたい。
【0080】
本開示の様々な実施形態の説明は、例示の目的で提示されているが、網羅的であること、または開示される実施形態に限定することを意図したものではない。多くの修正および変形が、説明された実施形態の範囲および思想から逸脱することなく当業者には明らかであろう。本明細書で使用される専門用語は、実施形態の原理、実際の用途、もしくは市場で見出される技術に対する技術的改善を最もよく説明するため、または本明細書で開示された実施形態を他の当業者が理解可能にするために、選択された。