(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-02-28
(54)【発明の名称】統一メモリ・アドレス変換
(51)【国際特許分類】
G06F 12/10 20160101AFI20240220BHJP
G06F 12/1009 20160101ALI20240220BHJP
G06F 12/1018 20160101ALI20240220BHJP
【FI】
G06F12/10
G06F12/1009
G06F12/1018
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023540042
(86)(22)【出願日】2022-02-24
(85)【翻訳文提出日】2023-06-29
(86)【国際出願番号】 EP2022054650
(87)【国際公開番号】W WO2022189159
(87)【国際公開日】2022-09-15
(32)【優先日】2021-03-11
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】ウェイト、チャールズ
(72)【発明者】
【氏名】キャンベル、ディヴィッド
(72)【発明者】
【氏名】トゥルーラヴ、ジェイク
(72)【発明者】
【氏名】ジョイナー、ジョディ
(72)【発明者】
【氏名】クリーゲル、ジョン
(72)【発明者】
【氏名】キンケード、グレン
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205RR02
5B205RR05
5B205RR23
(57)【要約】
統一メモリ・アドレス変換システムは、物理メモリの実アドレス(RA)について異なるモードの変換要求を受信するように構成される変換キュー・モジュールを含む。変換キャッシュ(XLTC)インタフェースは、RAのための前の要求についての成功裏の変換結果を受信し、前の成功裏の変換結果を変換キュー・モジュールに提供するように構成される。複数のページ・テーブル・エントリ・グループ(PTEG)検索モジュールは、変換キュー・モジュールに結合される。統一変換ウォーク・アドレス生成(UTWAG)モジュールは、異なるモードの変換要求の各モードのために変換サポートを提供するように構成される。メモリ・インタフェースは、UTWAGモジュールと物理メモリとの間に結合される。
【特許請求の範囲】
【請求項1】
統一メモリ・アドレス変換システムであって、
物理メモリの実アドレス(RA)について異なるモードの変換要求を受信するように構成される変換キュー・モジュールと、
RAのための前の要求についての成功裏の変換結果を受信し、前記前の成功裏の変換結果を前記変換キュー・モジュールに提供するように構成される変換キャッシュ(XLTC)インタフェースと、
前記変換キュー・モジュールに結合されたページ・テーブル・エントリ・グループ(PTEG)検索モジュールまたはセグメント・テーブル・エントリ・グループ(STEG)検索モジュールの少なくとも一方と、
前記異なるモードの変換要求の各モードのために変換サポートを提供するように構成される統一変換ウォーク・アドレス生成(UTWAG)モジュールと、
前記UTWAGモジュールと前記物理メモリとの間に結合されたメモリ・インタフェースと
を備える、システム。
【請求項2】
前記XLTCインタフェース、前記PTEG検索モジュール、前記STEG検索モジュール、および前記変換キュー・モジュールは、全ての変換モードによって共有される、請求項1に記載のシステム。
【請求項3】
前記異なるモードの変換要求は、
ハッシュ化ページ・テーブル(HPT)要求、
セグメント・テーブル要求、
非入れ子式ラディックス要求、および、
入れ子式ラディックス要求
のうちの少なくとも1つを含む、請求項1または請求項2に記載のシステム。
【請求項4】
前記変換要求のそれぞれは、前記変換キュー・モジュールのシーケンス・モジュールによって処理される、請求項3に記載のシステム。
【請求項5】
前記変換キュー・モジュールの前記シーケンス・モジュールは、前記変換要求どうしの間でラウンド・ロビン調停を提供するように構成される、請求項4に記載のシステム。
【請求項6】
前記UTWAGモジュールの前記変換サポートは、
パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN)、
有効アドレス(EA)から仮想アドレス(VA)への変換を提供するように作動するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN)、
中間仮想アドレス(STEG VA)ツー実アドレス(RA)変換を定義するように作動するセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN)、
ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN)、
ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN)、または、
ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN)
のうちの少なくとも1つを含む、請求項1ないし5のいずれかに記載のシステム。
【請求項7】
前記変換キュー・モジュールの各変換キュー・エントリに結合された有限状態マシンをさらに備える、請求項1ないし6のいずれかに記載のシステム。
【請求項8】
前記状態マシンは、前記UTWAGモジュールの全ての変換サポートによって共有される、請求項7に記載のシステム。
【請求項9】
統一メモリ・アドレス変換を提供する方法であって、
変換キュー・モジュールによって、物理メモリの実アドレス(RA)について複数の変換要求を受信すること、
前記複数の変換要求のそれぞれを、前記変換キュー・モジュールの変換ウォーク・キュー・エントリに割り振ること、
各変換ウォーク・キュー・エントリについて、
対応する変換要求から開始仮想アドレス(VA)および変換モードを決定すること、
前記VAおよび変換モードを、異なる変換モードに対処する複数の変換サポートを含む統一変換ウォーク・アドレス生成(UTWAG)モジュールに提供すること、および、
前記変換モードに基づいて、前記UTWAGモジュールによって、前記VAをRAに変換すること
を含む、方法。
【請求項10】
前記複数の変換要求は、一様なモードでない、請求項9に記載の方法。
【請求項11】
前記複数の変換要求は、
ハッシュ化ページ・テーブル(HPT)要求、
セグメント・テーブル要求、
非入れ子式ラディックス要求、または、
入れ子式ラディックス要求
のうちの少なくとも1つを含む、請求項9または請求項10に記載の方法。
【請求項12】
前記複数の変換要求のうちの1つの変換要求は、1つまたは複数の前の成功裏の変換結果を記憶するように動作する変換キャッシュ(XLTC)から変換キャッシュ(XLTC)インタフェースによって受信される、請求項9ないし11のいずれかに記載の方法。
【請求項13】
前記XLTCインタフェース、1つまたは複数のページ・テーブル・エントリ・グループ(PTEG)検索モジュール、および前記変換キュー・モジュールは、全ての変換モードによって共有される、請求項12に記載の方法。
【請求項14】
前記複数の変換ウォーク・キュー・エントリのうちの1つの変換ウォーク・キュー・エントリに対する各変換要求の割り振りは、一致する前の結果が前記XLTC内に見出されないと判定すると行われる、請求項12に記載の方法。
【請求項15】
各変換ウォーク・キュー・エントリは、プロセッサの各クロック・サイクルについて異なる、請求項9に記載の方法。
【請求項16】
前記複数の変換ウォーク・キュー・エントリの間でラウンド・ロビン調停を提供することをさらに含む、請求項9に記載の方法。
【請求項17】
前記UTWAGモジュールの前記変換サポートは、
パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN)、
有効アドレス(EA)ツー仮想アドレス(VA)変換を提供するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN)、
中間仮想アドレス(STEG VA)ツー実アドレス(RA)変換を定義するセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN)、
ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN)、
ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN)、または、
ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN)
のうちの少なくとも1つを提供する、請求項9に記載の方法。
【請求項18】
有限状態マシンを前記変換キュー・モジュールの各変換キュー・エントリに結合することをさらに含む、請求項9ないし17のいずれかに記載の方法。
【請求項19】
前記状態マシンは、全ての変換モードによって共有される、請求項18に記載の方法。
【請求項20】
コンピューティング・デバイスであって、
プロセッサと、
前記プロセッサに結合されたメモリと、
請求項1ないし8のいずれかに記載の統一メモリ・アドレス変換システムとを備え、前記UTWAGモジュールは前記メモリに記憶され、前記プロセッサによる前記UTWAGモジュールの実行は、前記異なるモードの変換要求の各モードのために前記変換サポートを提供するように前記コンピューティング・デバイスを構成する、コンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、複数のオペレーティング・システムをサポートする処理システム内のメモリ・テーブルを管理することに関する。
【背景技術】
【0002】
近年、コンピューティング・プラットフォームのオペレーティング・システムは、時として仮想アドレスと呼ばれる、プログラムによって使用されるメモリ・アドレスをコンピュータのメモリ内の物理アドレスにマッピングするために、ハードウェアおよびソフトウェアの組合せを使用する。こうして、主ストレージは、連続アドレス空間において一様なセグメントとして見える。オペレーティング・システムは、仮想アドレス空間および仮想メモリに対する実(物理)メモリの割り当て(assignment)を管理する。時としてメモリ管理ユニット(MMU:memory management unit)と呼ばれる、プロセッサ内のアドレス変換ハードウェアは、仮想アドレスを物理アドレスに変換する。オペレーティング・システム内のソフトウェアは、実メモリの容量より大きい仮想アドレス空間を提供することができ、それにより、コンピューティング・プラットフォーム内に物理的に存在するより多くのメモリを参照する。仮想メモリを使用することによって、ソフトウェアは、物理的に利用可能であるよりも多くのメモリを使用することができる。仮想メモリは、物理メモリの断片化を覆い隠すことによってアプリケーション・プログラミングを簡略化する。
【0003】
今日のコンピューティング・システムは、使用されるオペレーティング・システムの型に基づいて異なるアドレス変換機構を使用する。複数のコンピュータ・システム環境をサポートするために、アドレス変換ハードウェアは、有効アドレス(EA:effective address)から実アドレス(RA:Real Address)に変換するときに複数のアドレス指定モードをサポートすべきである。本明細書で使用されるように、有効アドレス(EA)は、プログラムが見るアドレスであり;仮想アドレス(VA:virtual address)は、OSによって使用されるアドレスであり;そして、実アドレス(RA)は、実際のメモリ・ハードウェアのアドレスである。EAを最終的にRAに変換するとき、プロセッサは、典型的には、適切なメモリ・アドレスがアクセスされ得るよう正しいアドレスを生成するために、変換テーブルをウォークする時間集約的なプロセスを実施する。ページ・テーブルは、オペレーティング・システムが物理アドレスに対する仮想アドレス(VA)のそのマッピングを記憶する場所であり、各マッピングは、ページ・テーブル・エントリ(PTE:page table entry)としても知られる。EAからVAにそして最終的にはRAに変換する時間集約的なプロセスは、多くのメモリ読み出し(memory read)、キャッシュ・アクセスを必要とする場合があり、ハードウェア・スレッドの進行またはプロセッサ・コア全体を停止させる場合がある。
【発明の概要】
【0004】
本発明の一態様によれば、統一メモリ・アドレス変換システムは、物理メモリの実アドレス(RA)について異なるモードの変換要求を受信するように構成される変換キュー・モジュールを含む。変換キャッシュ(XLTC)インタフェースは、RAのための前の要求についての成功裏の変換結果を受信し、前の成功裏の変換結果を変換キュー・モジュールに提供するように構成される。複数のページ・テーブル・エントリ・グループ(PTEG)検索モジュール(例えば、ページおよび/またはセグメント・エントリ・テーブル・グループPTEGおよびSTEG)は、変換キュー・モジュールに結合される。統一変換ウォーク・アドレス生成(UTWAG:unified translation walk address generation)モジュールは、異なるモードの変換要求の各モードのために変換サポートを提供するように構成される。メモリ・インタフェースは、UTWAGモジュールと物理メモリとの間に結合される。
【0005】
一実施形態において、XLTCインタフェース、PTEG検索モジュール、および変換キュー・モジュールは、UTWAGモジュールの全ての変換サポートによって共有される。
【0006】
一実施形態において、変換要求のモードは、ハッシュ化ページ・テーブル(HPT:hashed page table)要求、セグメント・テーブル要求、非入れ子式ラディックス(radix)要求、または、入れ子式ラディックス要求のうちの少なくとも1つを含む。
【0007】
一実施形態において、変換要求のそれぞれは、変換キュー・モジュールのシーケンス・モジュールによって処理される。
【0008】
一実施形態において、変換キュー・モジュールのシーケンス・モジュールは、変換要求どうしの間でラウンド・ロビン調停(arbitration)を提供するように構成される。
【0009】
一実施形態において、UTWAGモジュールの変換サポートは、パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN:partition table entry real address generation)、有効アドレス(EA)から仮想アドレス(VA)への変換を提供するように作動するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN:segment table entry group virtual address generation)、中間仮想アドレス(STEG VA)ツー実アドレス(RA)変換を定義するように作動するセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN:segment table entry group real address generation)、ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN:page table entry group real address generation)、ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN:radix host real address generation)、または、ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN:radix guest real address generation)のうちの少なくとも1つを含む。
【0010】
一実施形態において、有限状態マシンは、各変換キュー・エントリに結合される。
【0011】
一実施形態において、状態マシンは、UTWAGモジュールの全ての変換サポートによって共有される。
【0012】
本発明の別の態様によれば、統一メモリ・アドレス変換を提供する方法は、変換キュー・モジュールによって、物理メモリの実アドレス(RA)について複数の変換要求を受信することを含む。複数の変換要求のそれぞれは、変換キュー・モジュールの変換ウォーク・キュー・エントリに割り振られる(allocate)。各変換ウォーク・キュー・エントリについて、開始仮想アドレス(VA)および変換モードが対応する変換要求から決定される。VAおよび変換モードは、異なる変換モードに対処する複数の変換サポートを含む統一変換ウォーク・アドレス生成(UTWAG)モジュールに提供される。VAは、変換モードに基づいて、UTWAGモジュールによって、RAに変換される。UTWAGは、それ自身によってVAからRAに変換せず;むしろ、HPT要求に基づくHPT変換フローが後に続く。EAツーVAは、「セグメント・テーブル変換(Segment Table Translation)」の目標である。「HPT変換(HPT Translation)」が始まると、XLTCは、前のEAツーVA変換を見出すためにアクセスされ、その後、変換ウォーク・キュー・エントリは、その「開始VA(starting VA)」を用いてRAを見出すためにテーブル・ウォークを実行する。
【0013】
一実施形態において、複数の変換要求は、一様なモードでない。
【0014】
一実施形態において、複数の変換要求は、ハッシュ化ページ・テーブル(HPT:hashed page table)要求、セグメント・テーブル要求、非入れ子式ラディックス要求、または、入れ子式ラディックス要求のうちの少なくとも1つを含む。
【0015】
一実施形態において、複数の変換要求のうちの1つの変換要求は、1つまたは複数の前の成功裏の変換結果を記憶するように動作する変換キャッシュ(XLTC)から変換キャッシュ(XLTC)インタフェースによって受信される。
【0016】
一実施形態において、XLTCインタフェース、1つまたは複数のページ・テーブル・エントリ・グループ(PTEG)検索モジュール、および変換キュー・モジュールは、UTWAGモジュールの全ての変換サポートによって共有される。
【0017】
一実施形態において、複数の変換ウォーク・キュー・エントリのうちの1つの変換ウォーク・キュー・エントリに対する各変換要求の割り振りは、一致する前の結果がXLTC内に見出されないと判定すると行われる。
【0018】
一実施形態において、各変換ウォーク・キュー・エントリは、プロセッサの各クロック・サイクルについて異なる。
【0019】
一実施形態において、ラウンド・ロビン調停は、複数の変換ウォーク・キュー・エントリの間で提供される。
【0020】
一実施形態において、UTWAGモジュールの変換サポートは、パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN)、有効アドレス(EA)ツー仮想アドレス(VA)変換を提供するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN)、STEG VAのVAツーRA変換を定義するセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN)、ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN)、ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN)、または、ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN)のうちの少なくとも1つを提供する。
【0021】
一実施形態において、有限状態マシンは、各変換キュー・エントリに結合される。
【0022】
一実施形態において、状態マシンは、UTWAGモジュールの全ての変換サポートによって共有される。
【0023】
本発明の別の態様によれば、コンピューティング・デバイスは、プロセッサと、物理メモリの実アドレス(RA)について異なるモードの変換要求を受信するように構成される変換キュー・モジュールと、RAのための前の要求についての成功裏の変換結果を受信し、前の成功裏の変換結果を変換キュー・モジュールに提供するように構成される変換キャッシュ(XLTC)インタフェースと、変換キュー・モジュールに結合された複数のページ・テーブル・エントリ・グループ(PTEG)検索モジュールとを含む。プロセッサに結合されたメモリが存在する。統一変換ウォーク・アドレス生成(UTWAG)ソフトウェア・モジュールは、メモリに記憶され、プロセッサによるUTWAGモジュールの実行は、異なるモードの変換要求の各モードのために変換サポートを提供するようにコンピューティング・デバイスを構成する。UTWAGモジュールと物理メモリとの間に結合されたメモリ・インタフェースが存在する。
【0024】
一実施形態において、XLTCインタフェース、PTEG検索モジュール、および変換キュー・モジュールは、UTWAGモジュールの全ての変換サポートによって共有される。
【0025】
一実施形態において、変換要求のモードは、ハッシュ化ページ・テーブル(HPT)要求、セグメント・テーブル要求、非入れ子式ラディックス要求、または、入れ子式ラディックス要求のうちの少なくとも1つを含む。
【0026】
一実施形態において、UTWAGモジュールの変換サポートは、パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN)、有効アドレス(EA)ツー仮想アドレス(VA)変換を提供するように作動するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN)、中間仮想アドレス(STEG VA)ツーRA変換を定義するように作動するセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN)、ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN)、ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN)、または、ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN)のうちの少なくとも1つを含む。
【0027】
一実施形態において、有限状態マシンは、各変換キュー・エントリに結合される。
【0028】
一実施形態において、状態マシンは、UTWAGモジュールの全ての変換サポートによって共有される。
【0029】
種々の変換モードによる種々のハードウェア構成要素または種々のソフトウェア構成要素あるいはその両方の共有によって、改善された面積および電力効率が、アドレス変換のために提供される。実際には、変換ウォーク・キューの反復プロセスとUTWAGとの組合せは、チップ・リアル・エステート(chip real estate)の効率的使用、電力消費の低減、および変換要求についての性能の改善をもたらす。これらのおよび他の特徴は、添付図面に関連して読まれるその例証的な実施形態の以下の詳細な説明から明らかになるであろう。
【0030】
図面は例証的な実施形態である。図面は全ての実施形態を示さない。他の実施形態は、さらにまたは代わりに使用され得る。明らかであるかまたは不必要であるとすることができる詳細は、空間を節約するためにまたはより効果的な例証のために省略され得る。幾つかの実施形態は、さらなる構成要素またはステップを用いて、および/または、示される全ての構成要素またはステップなしで、実施され得る。同じ数字は、異なる図面において現れるとき、同じまたは同様の構成要素またはステップを指す。
【図面の簡単な説明】
【0031】
【
図1】例証的な実施形態と矛盾しない、複数の変換モードをサポートする統一メモリ・アドレス変換システムの概念的ブロック図である。
【
図2】例証的な実施形態と矛盾しない、複数の変換モードをサポートする統一メモリ・アドレス変換システムのより詳細なブロック図である。
【
図3】
図2の統一変換システムの種々の構成要素を共有しながら、ハッシュ化ページ・テーブル(HPT)要求およびセグメント・テーブル要求に対処する例のプロセス・フローである。
【
図4】入れ子式および非入れ子式ラディックス要求の両方に対処する例のプロセス・フローである。
【
図5】統一変換ウォーク・アドレス生成(UTWAG)モジュールをホストするために使用され得るコンピュータ・ハードウェア・プラットフォームの機能ブロック図の例である。
【
図6】例証的な実施形態と矛盾しない、クラウド・コンピューティング環境を示す図である。
【
図7】例証的な実施形態と矛盾しない、抽象化モデル・レイヤを示す図である。
【発明を実施するための形態】
【0032】
以下の詳細な説明において、多数の特定の詳細が、関連する教示の徹底的な理解を提供するために例として述べられる。しかしながら、本教示が、そのような詳細なしで実施され得ることが認識されるべきである。他の例において、よく知られている方法、プロシージャ、構成要素、または回路構成、あるいはその組合せは、本教示の態様を不必要に曖昧にすることを回避するために、比較的高いレベルで詳細なしで説明された。
【0033】
本開示は、一般に、複数のオペレーティング・システムをサポートする処理システム内のメモリ・テーブルを管理するシステムおよび方法に関する。今日、異なる動作環境および仮想マシンをサポートすることができるプロセッサ・コアが開発されている。例えば、コンピューティング・システムの一部は、その特定のオペレーティング・システム(OS:operating system)用のページ・テーブル・エントリを見出すために、単一の大きいハッシュ化テーブルの代わりに一連の入れ子式テーブルを使用するラディックス・モードの変換を実行することができ、一方、システムの別の部分は、その対応するOSのために異なるモードの変換を使用するPowerPC(R)を実行する。例えば、時として仮想マシン・モニタ(VMM:virtual machine monitor)と呼ばれるハイパーバイザは、ハイパーバイザ・オペレーティング・システムとリソースを仮想マシン(VM:virtual machine)から隔離することによって仮想マシンを作成し実行することができ、同じハードウェアを共有しながら、異なるOSに基づくことができるそのようなマシンの作成および管理を可能にする。各オペレーティング・システムは、異なるページ・テーブルに基づく異なるアドレス変換を含むことができる。プロセスが、そのメモリ内のデータに対するアクセスを要求するとき、それは、プロセスによって提供される仮想アドレス(VA)をデータが記憶される実際のメモリの物理アドレスにマッピングするOSの担当である。ページ・テーブルは、オペレーティング・システムが仮想アドレスから物理アドレスへのそのマッピングを記憶する場所であり、各マッピングはページ・テーブル・エントリ(PTE:page table entry)としても知られる。異なるオペレーティング・システムが使用されるため、時として本明細書で変換モードと呼ばれる異なる変換ユニットが存在することができる。
【0034】
PTEは、典型的には、アプリケーション・プログラムの命令を処理するために、オペレーティング・システムによって見られる仮想アドレスをハードウェアによって使用される物理アドレスに変換するために使用される。そのような変換を実施するハードウェアは、時としてメモリ管理ユニット(MMU:memory management unit)と呼ばれる。ページ・テーブル内の各エントリは、対応するページが物理メモリ内に存在するか否かの指示を含む。対応するページが物理メモリ内に存在する場合、ページ・テーブル・エントリは、ページがそこに記憶される実際のメモリ・アドレスを含むことになる。参照が、ハードウェアによってページに対して行われるとき、そのページが、現在、物理メモリ内に存在しないことを、そのページについてのページ・テーブル・エントリが指示する場合、ハードウェアは、ページ・フォールト例外を発生させ、後でより詳細に論じるオペレーティング・システムのページング・スーパーバイザ構成要素を呼び出す。
【0035】
典型的な実装態様は、各モードの独自性のせいで各アドレス変換モードのためにハードウェア・テーブル・ウォーク・ロジックを専用にする。プロセッサ内に別個のユニットが存在し、ユニットのそれぞれは、メモリ・アクセス、ロード/ストア・データ変換要求、および命令フェッチ・アドレス変換要求を取り扱うユニット自身のインタフェースを有する。
【0036】
種々のシナリオにおいて、システムは、全体システム用の1つのページ・テーブル、各アプリケーション用の別個のページ・テーブル、大きいセグメント用のページ・テーブルのツリー、またはその組合せを有することができる。1つのページ・テーブルのみが存在する場合、同時に実行される異なるアプリケーションは、仮想アドレスの単一範囲の異なる部分を使用する。複数のページまたはセグメント・テーブルが存在する場合、複数の仮想アドレス空間が存在し、別個のページ・テーブルを有する並行(concurrent)アプリケーションは、異なる実際のアドレスにリダイレクトする。
【0037】
複数の変換ユニットは、複数のインタフェースに対処するために複雑さおよびチップ面積の増加を導入する。要求元ユニット(requesting unit)が各変換ユニットの独自の態様を取り扱うため、アドレス変換レイテンシおよび性能も影響を受ける。例えば、セグメント・テーブル変換は、要求元ユニットによる取り扱いを要求する可能性がある中間ハッシュ化ページ・テーブル(HPT)、変換ユニット間の別個のサイドバンド・インタフェース、またはさらに悪いことに、HPT変換ロジックのレプリケーション(replication)を含み得る。同様に、ラディックス変換は、EAツーRA変換を定義するページ・テーブル・エントリ(PTE)を見出すために単一の大きいハッシュ化テーブルの代わりに一連の入れ子式テーブルを使用する点でHPTと全く異なる。知られているコンピューティング・システムは、複数の変換モードをサポートせず、ましてや、効率的な方法ではサポートできない。
【0038】
したがって、本明細書の教示は、コンピュータ・システムおよび方法において、複数のアドレス変換モード、複数の要求をサポートする変換ウォーク・キューであって、各変換ウォークが、異なるモードにありかつ変換フロー内の異なるステージにあることができる、変換ウォーク・キュー、および、複数の変換モードによって共有され、変換のために使用される全ての中間アドレスを提供する統一変換ウォーク・アドレス生成器をサポートするプロセッサを提供する。種々の変換モードによる種々のハードウェア構成要素またはソフトウェア構成要素あるいはその両方の共有によって、改善された面積および電力効率が、アドレス変換のために提供される。本明細書で説明する技術は、複数の方法で実装され得る。例の実装態様は、以下の図を参照して以下で提供される。
【0039】
例のアーキテクチャ
ここで、参照が
図1に対して行われ、
図1は、例証的な実施形態と矛盾しない、複数の変換モードをサポートする統一メモリ・アドレス変換システム100の概念的ブロック図である。統一メモリ・アドレス変換システム100は、ロジックおよびハードウェアの1つまたは複数の構成要素をレプリケートすることなく、種々の変換ブロックの共有を容易にする。システム100は、データを受信し、物理メモリ114で示されるレジスタ内にデータを書き込むように作動するプロセッサ・コア内のユニットに関連する、ブロック102および104で示される複数のロード/ストア・ユニットを含む。そのため、これらのユニット102および104は、時として本明細書で(物理)メモリ114の実アドレス(RA)と呼ばれる物理アドレスに変換される有効アドレス(EA)を有する。対応するロード/ストア・ユニット102または104の使用されるオペレーティング・システム(OS)に基づいて、複数の変換ユニット106~112によって示される、EAからRAに変換する異なる方法が存在することができる。種々のシナリオにおいて、ハッシュ化ページ・テーブル(HPT)変換106、セグメント・テーブル変換108、非入れ子式であるラディックス変換110、または入れ子式であるラディックス変換テーブル112が使用され得る。
【0040】
ロード/ストア・ユニットに対応する一部のプロセッサ・アーキテクチャは、仮想メモリ・アドレスを物理メモリ・アドレスに動的にマッピングするためにハッシュ化ページ・テーブル(HPT)を使用することができる。例えば、HPTにおいて、仮想アドレス内の仮想ページ番号は、ハッシュ・テーブル内にハッシュ化される。HPTは、例えば、32ビットより高いアドレス空間を取り扱うために使用され得る。ハッシュ・テーブル内の各エントリは、PTEG(group of PTE‘s)、すなわち各PTEがVAおよび対応するRAを含むPTEのグループである。VAがPTE VAにマッチするとき、対応するRAは、HPTがメモリ114内のRAを提供することができるようにアクセスされる。
【0041】
一部のプロセッサ・アーキテクチャは、仮想メモリ・アドレスを物理メモリ・アドレスに動的にマッピングするためにラディックス・ツリー・ページ・テーブル(例えば、110または112)を使用することができる。OSは、OSによって決定され、ラディックス・ツリー・ページ・テーブルに記憶されたアドレス変換を用いて、固定のページサイズ割り振りユニットにおいて物理リソースを管理する。OSによって使用される仮想アドレスをメモリ114の物理アドレス(すなわち、RA)にマッピングすることは、複数回のメモリ・アクセスを含むことができる、時として本明細書で「ページ・テーブルをウォークすること(walking the page table)」と呼ばれる、ラディックス・ツリーをトラバースする(traverse)ことを含む。例えば、変換およびデータ・フェッチのための数回のメモリ・アクセスが、単一ロード操作のために含まれ得る。
【0042】
4つのアドレス変換ユニット(すなわち、106~112)が、混乱を回避するために
図1に示されるが、さらなるアドレス変換ユニットが本明細書の教示によってサポートされることが理解されるであろう。典型的には、アドレス変換ユニット106~112のそれぞれは、独立でありかついずれの構成要素も共有しないことになり、それにより、さらなる複雑さ、チップ面積、および電力消費をもたらす。対照的に、本明細書の教示は、以下の
図2の議論の文脈でよりよく理解されるように、ロジックおよびハードウェア構成要素をレプリケートすることなく、変換システムの種々の変換ブロックの共有を容易にする。
【0043】
図2は、例証的な実施形態と矛盾しない、複数の変換モードをサポートする統一メモリ・アドレス変換システム200のより詳細なブロック図である。任意のモードであるとすることができるアドレス変換要求を受信するように構成される変換キュー・モジュール230が存在する。例えば、変換要求は、ハッシュ化ページ・テーブル(HPT)変換要求、セグメント・テーブル変換要求、非入れ子式ラディックス要求、入れ子式ラディックス要求等とすることができる。変換キャッシュ204から変換済みキャッシュ要求を受信し、それを変換キュー・モジュール230に提供するように構成される変換キャッシュ(XLTC)インタフェース206が存在する。変換キャッシュ(XLTC)204は、前の成功裏の変換結果を記憶するように動作する。例えば、XLTC204は、EAツーVA、VAツーRA、およびEAツーRA、等の異なる型の前の変換を含むことができる。変換キュー・モジュール230に結合されたページ・テーブル・エントリ・グループ(PTEG)検索モジュール208またはセグメント・テーブル・エントリ・グループ(STEG)検索モジュール210あるいはその両方が存在する。STEGはSTEのグループである。セグメント・テーブル変換は、同様な方法でSTEについてSTEGを検索する。例えば、セグメント・テーブル・エントリは、EAからVAに変換するために使用される。
【0044】
変換モジュール240は、複数の変換要求の変換要求の各モードについて変換サポートを提供するように構成される統一変換ウォーク・アドレス生成(UTWAG)モジュール260を含む。UTWAGモジュールの変換サポートは、パーティション・テーブル・エントリ実アドレス生成(PATE RA GEN)262、EAツーVAアドレス変換を提供するセグメント・テーブル・エントリ・グループ仮想アドレス生成(STEG VA GEN)264、マッチングSTEがEAツーVAアドレス変換を提供するSTEのグループを読み出すセグメント・テーブル・エントリ・グループ実アドレス生成(STEG RA GEN)266、ページ・テーブル・エントリ・グループ実アドレス生成(PTEG RA GEN)268、ラディックス・ホスト実アドレス生成(RADIX HOST RA GEN)270、または、ラディックス・ゲスト実アドレス生成(RADIX GUEST RA GEN)272のうちの少なくとも1つを含む。HPT PTE(ブロック208によって提供され得る)はVAツーRA変換を定義する。
【0045】
UTWAGモジュール260は、物理メモリ214と通信するように作動するメモリ・アクセス・インタフェース212に結合される。幾つかの実施形態において、変換モジュール240は、有限状態マシン次状態生成モジュール220を含む。有限状態マシンは、2つの部分:マシンの現在の状態を定義するラッチのセットおよびマシンの次状態を決定するように作動するロジック・ブロックを有するものと考えられ得る。変換キュー・モジュール230において、各変換キュー・エントリは、それ自身の独立したFSMを必然的に有する。なぜなら、各エントリが、その現在の状態を定義するラッチのセットを有するからである。所与のプロセッサ・サイクルにおいて、調停239は、どのキュー・エントリが、共有されるFSM次状態生成ロジック・ブロック220にアクセスできるかを決定する。
【0046】
メモリ・アクセス・インタフェース212、変換キャッシュ(XLTC)204、読み出し/書き込みインタフェース206、およびXLTCインタフェース206は、UTWAGモジュール260の全ての変換サポート262~272によって全て共有され、それにより、統一メモリ・アドレス変換システム200の複雑さを低減しながら、電力またはチップ・リアル・エステートあるいはその両方を節約する。
【0047】
限定としてではなく例として、
図2のアーキテクチャ200は、4つのエントリ変換ウォークに対処する変換キュー・モジュール230を示すが、本明細書の教示が、変換キュー・モジュール230内の任意の数の変換ウォーク・キューをサポートすることが理解されるであろう。変換キュー・モジュール230内への各エントリは、時として本明細書で変換モジュールと呼ばれるアーキテクテッド(architected)変換エントリ232~238のうちの任意のエントリを利用して、変換要求に独立に対処することが可能である。例えば、変換ウォーク・モードは、HPT変換232、セグメント・テーブル変換234、非入れ子式であるラディックス変換236、入れ子式であるラディックス変換238等を含むことができる。一実施形態において、変換キュー・モジュール230は、異なる変換ウォーク・キュー・エントリ232~238の間でラウンド・ロビン調停を提供するように作動するシーケンス・モジュール239を含む。これらの変換ウォーク・キュー・エントリ232~238のそれぞれは、異なる型とすることができる。例えば、変換ウォーク・キュー・エントリ232はセグメント・テーブル・ウォークを実施することができる、変換ウォーク・キュー・エントリ234は入れ子式ラディックス・ウォークを実施することができる、変換ウォーク・キュー・エントリ236は非入れ子式ラディックス・ウォークを実施することができる、等である。したがって、アーキテクチャ200は異なるモードのスレッドを自動的にサポートする。
【0048】
キュー・エントリ232~238に加えて、アーキテクチャ200は、RAを最終的に達成するために適切である全ての中間アドレスを生成するように作動する統一変換ウォーク・アドレス生成(UTWAG)モジュール260を含む。意味深いことに、UTWAGは、メモリ・アクセス・インタフェース212、変換キャッシュ(XLTC)204、XLTCインタフェース206、時として本明細書でXLTCインタフェース206と呼ばれる読み出し/書き込みインタフェース、および変換要求インタフェース202が、全ての変換サポート262~272によって共有されるように構成される。UTWAGモジュール260は、変換モードが、後でより詳細に説明される1つのモードの変換機能を別のモードの変換機能と共有する能力も提供する。各プロセッサ・サイクルは、完全に異なるスレッド・モードとすることができる。変換ウォーク・キュー・エントリ232~238の反復プロセスとUTWAGとの組合せは、チップ・リアル・エステートの効率的使用、電力消費の低減、および変換要求についての性能の改善をもたらす。
【0049】
例えば、ロード/ストア・ユニットまたは命令フェッチ・ユニット202が、有効アドレス(EA)が変換されることを要求するときのPower10(P10)プロセッサを考える。この要求は、前の変換結果を含む変換キャッシュ(XLTC)204に送信され得る。これらの前の変換は、アドレス変換モードに応じて、EAツー仮想アドレス(VA)変換、VAツーRA変換、またはEAツーRA直接変換とすることができる。前の結果がXLTC204内に見出されない場合、変換要求202は、変換ウォーク・キュー・エントリ232~238のうちの1つに割り振られる。要求の一部として、変換モードを定義するコンテキスト情報は開始EAと共に提供される。例えば、PowerPC(R)アーキテクチャにおいて、これは、セグメント・テーブルEAツー仮想アドレス変換、ハッシュ化ページ・テーブル仮想アドレスツー実アドレス変換、またはラディックスEAツーRA変換である可能性がある。
【0050】
各変換要求は、コンテキスト情報(例えば、要求のモード)と共にアドレス(例えば、EAまたはVA)を含む。コンテキスト情報を利用して、変換ウォーク・キュー・エントリが始まる。全ての変換モードは、個々の変換テーブル(セグメント・テーブル、ハッシュ化ページ・テーブル、またはラディックス(レベル1)テーブル)のベース・アドレスを定義する「パーティション・テーブル・エントリ(Partition Table Entry)」(PATE)262を含む。UTWAGモジュール260は、各モードについてのPATEのアドレスおよびメモリ214内のRAを生成することによってこの共通機能を効率的に提供する。
【0051】
例のプロセス
例のアーキテクチャ100および200の上記概要によって、例のプロセスの高レベルの議論をここで考えることが役立つ場合がある。そのため、
図3および4は、例証的な実施形態と矛盾しない、異なるモードを有するメモリ・アドレスを変換する例証的なプロセス300および400を提示する。プロセス300および400は、ハードウェア、ソフトウェア、またはその組合せで実装され得る操作のシーケンスを示すロジカル・フロー・チャート内のブロックの集合体としてそれぞれ示される。ソフトウェアの文脈で、ブロックは、1つまたは複数のプロセッサによって実行されると、列挙した操作を実施するコンピュータ実行可能命令を示す。一般に、コンピュータ実行可能命令は、機能を実施するかまたは抽象データ型を実装する、ルーチン、プログラム、オブジェクト、構成要素、データ構造、および同様なものを含むことができる。各プロセスにおいて、操作が説明される順序は、限定と解釈されることを意図されず、任意の数の説明されるブロックは、プロセスを実装するために、任意の順序で組み合わされ得る、および/または、並列に実施され得る。議論のために、プロセス300および400は、
図2のアーキテクチャを参照して説明される。
【0052】
図3は、
図2の統一変換システム200の種々の構成要素を共有しながら、HPT要求およびセグメント・テーブル要求に対処する例のプロセスである。例えば、メモリ・アクセス・インタフェース212、変換キャッシュ(XLTC)204、XLTCインタフェース206、読み出し/書き込みインタフェース、および変換要求インタファース202は、HPT要求302およびセグメント・テーブル要求304に応答して使用される全ての変換モードによって共有される。
【0053】
ブロック303にて、仮想アドレス(VA)および変換要求のモードを指示するコンテキストを含むHPTが受信される。ブロック310にて、仮想アドレスは、ページ・テーブル・エントリ(PTE:page table entry)グループ実アドレスにハッシュ化され(GEN PTEG RA)、メモリ214に送信される。ブロック312にて、システムは、メモリからPTEGを受信するために、所定の期間、待つ。
【0054】
ブロック314にて、PTEGは、PTEヒットを検索される。PTEヒットが存在しない(すなわち、「ミス(MISS)」が存在する)場合、変換キュー・モジュール230は、アドレス(例えば、変換要求によって提供されるVA)を例外として識別する。例えば、FSM次状態生成モジュール220は、「例外(exception)」状態に移行することになる。しかしながら、PTE「ヒット(HIT)」が存在する場合、プロセスは、ブロック324を継続し、変換キャッシュ(XLTC)204はRAによって更新される。
【0055】
プロセス300は、セグメント・テーブル要求301で示す別のエントリ・ポイントも示す。ブロック302にて、有効アドレス(EA)を含むセグメント・テーブル要求を受信すると、パーティション・テーブル・エントリが、提供された変換要求コンテキストに基づいて生成される(GEN PATE)。ブロック304にて、システムは、パーティション・テーブル・エントリが生成されるまで、所定の期間、待つ。ブロック306にて、セグメント・テーブル・エントリ・グループ仮想アドレス(STEG VA)が生成される。換言すれば、中間仮想アドレス(VA)が提供される。仮想アドレスであるセグメント・テーブル・エントリ・グループ(STEG)はそれ自体の変換を必要とする(すなわち、実アドレスの中間変換であるため)。
【0056】
ブロック308にて、一実施形態において、変換キャッシュ(XLTC)204は、この仮想アドレス(VA)が以前に変換されたか否かを判定するためにチェックされる。この仮想アドレス(VA)が以前に変換されず、したがって、変換キャッシュ(XLTC)204において利用可能でない(すなわち、判定ブロック308にて「ミス(MISS)」である)場合、プロセスは、上記で論じたHPT要求303とシームレスに統合されるブロック310~314を継続する。換言すれば、HPT要求303に関して既に使用されているロジックまたはハードウェアあるいはその両方は、セグメント・テーブル要求ウォーク301のために成功裏に再使用され得る。
【0057】
より具体的には、ブロック310にて、仮想アドレスは、ページ・テーブル・エントリ(PTE)グループ実アドレス内にハッシュ化され(GEN PTEG RA)、メモリ214に送信される。ブロック312にて、システムは、メモリからPTEGを受信するために、所定の期間、待つ。ブロック314にて、PTEGは、PTE「ヒット」を検索される。PTE「ヒット」が存在しない(すなわち、判定ブロック314にて「ミス(MISS)」が存在する)場合、システムは、アドレスを例外として識別する。しかしながら、PTE「ヒット」が存在する場合、プロセスはブロック316を継続し、変換キャッシュ(XLTC)204は実アドレス(RA)によって更新される。この実アドレス(RA)は、メモリ214に送信され、プロセスは、ブロック318を継続し、セグメント・テーブル・エントリ・グループ実アドレスが提供され(GEN STEG RA)メモリ214に送信される。ブロック320にて、システムは、メモリ214からセグメント・テーブル・エントリ・グループ(STEG)データを受信するために、所定の期間、待つ。
【0058】
ブロック322にて、セグメント・テーブル・エントリ・グループ検索が実施される(SEARCH STEG)。検索が成功である(すなわち、判定ブロック322にて「ヒット」である)場合、プロセスは、ブロック324を継続し、変換キャッシュ(XLTC)204はVAによって更新される。セグメント・テーブル変換要求の目標は、セグメント・テーブル・エントリ(STE)を使用することによってEAからVAに変換することである。より具体的には、STEにおいて見出されるEA部分および対応する仮想アドレスは、同じEAページに対するさらなるアクセスが、次の検索における「ミス」を回避するために「ヒット」であることになるようにXLTC204に記憶される。
【0059】
しかしながら、SEARCH STEGが成功でない(すなわち、判定ブロック322にて「ミス」である)場合、プロセスは、ブロック306に戻り、反復プロセスが継続する。例えば、この反復ループ機能は、4つの別個の反復を含む可能性がある。
【0060】
ブロック308に戻ると、仮想アドレスが以前に変換された(すなわち、判定ブロック308にて「ヒット」である)場合、プロセスは、実質的に簡略化され、ブロック318に直接行き、プロセスは、上記で論じたように継続する。
【0061】
要求コンテキスト情報202に含まれるアドレス・モードが、ラディックスEAツーRA変換のためのものである場合、異なるフローが続き、そのフローは同様に、XLTCインタフェース206およびメモリ・アクセス・インタフェース212を効率的に共有する。例えば、一部のプロセッサは、ネイティブ・アプリケーションにおいて有効ツー物理変換のために深度4のラディックス・ツリーを使用する。ツリー内に4つのレイヤが存在することができ、第4のレイヤL4はツリーのルートである。ツリー内の各ノードは、ツリーの後続するレベルでノードを示すテーブルを含む。ノードは、単一物理メモリ・フレームに入力する。各テーブル・エントリは、子ノードの物理フレーム番号(例えば、ポインタ)およびサブツリー全体についてのOSが課した許可を維持する。時として本明細書でページ・テーブル・ウォークと呼ばれる変換プロセスは、反復的であり、ルートから葉ノードまでの経路をトラバースする。各ステップにて、ソース有効アドレス(EA)からの後続のビット・セットは、経路に沿って後続のノードにおいてテーブルを索引付けするために使用される。
【0062】
これに関して、ここで
図4に対して参照が行われ、
図4は、入れ子式および非入れ子式ラディックス要求の両方に対処する例のプロセス・フローである。混乱を回避するために、プロセス400は、
図3のプロセス300から分離されており、一方、これらのプロセスが統合され得ることが理解されるであろう。プロセス400にて、入れ子式ラディックス・フローは、実線によって提供され、一方、非入れ子式は破線によって提供される。
【0063】
ブロック401Aにて、有効アドレスおよび要求のモードを指示するコンテキスト(すなわち、非入れ子式ラディックス)を含む非入れ子式ラディックス要求が受信される。ブロック402にて、非入れ子式ラディックス要求を受信すると、パーティション・テーブル・エントリが、受信された変換コンテキストに基づいて生成される(GEN PATE)。ブロック404にて、システムは、パーティション・テーブル・エントリが生成されるまで、所定の期間、待つ。
【0064】
プロセスは、その後、ブロック410に進み、最初にL1について、ホスト実アドレスが生成される(GEN HOST RA)。ラディックスは、連続的に参照される一連のテーブルを調べる。L1がアクセスされると、L1は、L2ホスト・テーブルに対するポインタ等を含む。4つのそのようなテーブルは、正しいページ・テーブル・エントリPTEが識別されるまで、ブロック410~416で指示するように、ウォークされる。プロセスは、その後、ブロック424を継続し、変換キャッシュ(XLTC)204がRAによって更新される。
【0065】
上記で述べたように、プロセス400は、入れ子式ラディックス要求に対処することもできる。例えば、ブロック401Bにて、有効アドレスおよび要求のモードを指示するコンテキスト(すなわち、入れ子式ラディックス)を含む入れ子式ラディックス要求が受信される。ブロック402にて、入れ子式ラディックス要求が受信されると、パーティション・テーブル・エントリが、受信された変換コンテキストに基づいて生成される(GEN PATE)。ブロック404にて、システムは、パーティション・テーブル・エントリ生成が終了するまで、所定の期間、待つ。
【0066】
プロセスは、その後、ブロック406を継続し、4つのラディックス・レベルL1からL4のそれぞれについて、ゲスト実アドレスが生成される(GEN GUEST RA)。換言すれば、有効アドレスは、以下でより詳細に論じるように、アドレスがメモリに送信され得る前にさらに洗練されるゲスト・レベル・アドレスを生成する。
【0067】
ブロック408にて、一実施形態において、変換キャッシュXLTC204は、このゲスト実アドレスが以前に変換されたか否かを判定するためにチェックされる。このゲスト実アドレスが以前に変換されなかった(すなわち、判定ブロック308にて「ミス」である)場合、プロセスは、ブロック410を継続し、最初にL1について、ホスト・アドレスが生成される(GEN HOST RA)。上記で論じた非入れ子式の場合と同様に、ラディックスは、正しいページ・テーブル・エントリPTEが識別されるまで、ブロック410~416で指示するように、連続的に参照される一連のテーブルを調べる。プロセスは、その後、ブロック418を継続し、変換キャッシュ(XLTC)204はRAによって更新される。
【0068】
ブロック420にて、ホスト実アドレスが生成される(GEN HOST RA)。これに関して、入れ子式ラディックスの場合、EAツーRA変換がゲストL4エントリに含まれることに留意されたい。各ゲスト・エントリ(L1、L2、L3、L4)は、ゲストRAによって最初にアドレス指定される。しかしながら、ゲストRAは、上記で論じたように、メモリ214に送信され得ず、したがって、ホストRAに変換される。ブロック420は、ゲストRA(ブロック406)から変換されたホストRAである。
【0069】
ブロック422にて、システムは、主題ラディックス・レベル(例えば、L1)についてゲスト・テーブル・エントリの終了を待つ。反復プロセスは、ゲスト・テーブル・エントリについて全てのラディックス・レベル(すなわち、本例においてL1~L4)が評価されるまで、ブロック406に戻ることによって継続する。プロセスは、ブロック424を継続し、変換キャッシュ(XLTC)204はRAによって更新される。
【0070】
ブロック408に戻ると、ゲスト・アドレスが以前に変換された(すなわち、判定ブロック408にて「ヒット」である)場合、プロセスは、実質的に簡略化され、ブロック420に直接行き、プロセスは、上記で論じたように継続する。
【0071】
例のコンピュータ・プラットフォーム
一実施形態において、統一メモリ・アドレス変換システムを提供することに関連する機能は、1つまたは複数のコンピューティング・デバイスの使用によって実施され得る。
図5は、統一変換ウォーク・アドレス生成(UTWAG)モジュール540をホストするために使用され得るコンピュータ・ハードウェア・プラットフォーム500の機能ブロック図の例を提供する。
【0072】
コンピュータ・プラットフォーム500は、システム・バス502に接続される、中央処理ユニット(CPU:central processing unit)504、ハード・ディスク・ドライブ(HDD:hard disk drive)506、ランダム・アクセス・メモリ(RAM:randomaccess memory)および/または読み出し専用メモリ(ROM:read only memory)508、キーボード510、マウス512、ディスプレイ514、および通信インタフェース516を含むことができる。
【0073】
一実施形態において、HDD506は、本明細書で説明した方法で、UTWAGエンジン540等の種々のプロセスを実行することができるプログラムを記憶することを含む能力を有する。UTWAGエンジン540は、
図2および他の図の文脈で論じた機能等の異なる機能を実施するように構成される種々のモジュールを有することができる。例えば、本明細書で論じた機能を実施する、PATE RA GEN542、STEG VA GEN544、STEG RA GEN546、PTEG RA GEN548、RADIX HOST RA GEN550、およびRADIX GUEST RA GEN552モジュールが存在することができる。モジュール542~552は、HDD506の一部であるように
図5に示されるが、幾つかの実施形態において、これらのモジュールの1つまたは複数は、コンピューティング・デバイス500のハードウェアで実装され得る。例えば、本明細書で論じるモジュールは、部分的なハードウェアおよび部分的なソフトウェアの形態で実装され得る。すなわち、
図5に示すUTWAGエンジン540の構成要素の1つまたは複数は、トランジスタ(複数可)、ダイオード(複数可)、キャパシタ(複数可)、抵抗器(複数可)、インダクタ(複数可)、バラクタ(複数可)、またはメモリスタ(複数可)あるいはその組合せを有する電子回路の形態で実装され得る。換言すれば、UTWAGエンジン540は、CPUの構成要素またはRAM/ROM508のモジュールあるいはその両方によって、本明細書で説明した特定のタスクおよび機能を実施する1つまたは複数の特別に設計された電子回路によって実装され得る。
【0074】
例のクラウド・プラットフォーム
上記で論じたように、統一メモリ・アドレス変換システムを提供することに関連する機能は、クラウドの場合と同様に、分散コンピューティング・アーキテクチャまたは分散ストレージ・アーキテクチャあるいはその両方を含むことができる。本開示が、クラウド・コンピューティングに関する詳細な説明を含むが、本明細書で列挙する教示の実装態様が、クラウド・コンピューティング環境に限定されないことが理解される。むしろ、本開示の実施形態は、現在知られているかまたは後に開発される任意の他の型のコンピューティング環境と併せて実装されることが可能である。
【0075】
クラウド・コンピューティングは、最小限の管理努力またはサービスのプロバイダとのやり取りによって迅速に供給され(provision)開放され得る、構成可能コンピューティング・リソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、およびサービス)の共有プールに対する簡便でオンデマンドのネットワーク・アクセスを可能にするためのサービス・デリバリのモデルである。このクラウド・モデルは、少なくとも5つの特性、少なくとも3つのサービス・モデル、および少なくとも4つの展開モデルを含むことができる。
【0076】
特性は、以下の通りである。
【0077】
オンデマンドセルフサービス:クラウド・コンシューマは、サービスのプロバイダとの人的やり取りを必要とすることなく、必要に応じて自動的に、サーバ時間およびネットワーク・ストレージ等のコンピューティング能力を一方的に供給することができる。
【0078】
ブロード・ネットワーク・アクセス:能力は、ネットワークを通じて利用可能であり、異機種のシンまたはシック・クライアント・プラットフォーム(例えば、携帯電話、ラップトップ、およびPDA)による使用を促進する標準的な機構を通してアクセスされる。
【0079】
リソース・プーリング:プロバイダのコンピューティング・リソースは、プールされて、マルチテナント・モデルを使用して複数のコンシューマに供され、異なる物理的なおよび仮想のリソースが、需要に応じて動的に割り当てられ、再度割り当てられる。コンシューマは概ね、提供されるリソースの正確な場所に対する制御または知識を全く持たないが、より高いレベルの抽象化で場所(例えば国、国家、またはデータセンタ)を指定することができる場合があるという点で、場所独立性の感覚が存在する。
【0080】
迅速な融通性:能力は、迅速にかつ柔軟に供給されて、幾つかの場合、自動的に、急速にスケールアウトし、また、迅速に開放されて急速にスケールインすることができる。コンシューマにとって、供給のために利用可能な能力は、しばしば、無制限であるように見え、任意の時間に任意の量で購入され得る。
【0081】
測定されるサービス:クラウド・システムは、サービスの型(例えば、ストレージ、処理、帯域幅、およびアクティブ・ユーザ・アカウント)に適切なあるレベルの抽象化での計測能力を活用することによって、リソース使用を自動的に制御および最適化する。リソース使用は、モニタし、制御し、報告することができ、プロバイダと利用されるサービスのコンシューマの両方のために透明性を提供する。
【0082】
サービス・モデルは、以下の通りである。
【0083】
サービスとしてのソフトウェア(SaaS:Software as a Service):コンシューマに提供される能力は、クラウド・インフラストラクチャ上で実行されるプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブ・ブラウザ等のシン・クライアント・インタフェース(例えば、ウェブベース電子メール)を通して種々のクライアント・デバイスからアクセス可能である。コンシューマは、限定されたユーザ特有のアプリケーション構成設定の考えられる例外がある状態で、ネットワーク、サーバ、オペレーティング・システム、ストレージ、またはさらに個々のアプリケーション能力を含む基礎クラウド・インフラストラクチャを管理または制御しない。
【0084】
サービスとしてのプラットフォーム(PaaS:Platform as a Service):コンシューマに提供される能力は、プログラミング言語およびプロバイダによってサポートされるツールを使用して作成される、クラウド・インフラストラクチャのコンシューマが作成または取得するアプリケーション上に展開することである。コンシューマは、ネットワーク、サーバ、オペレーティング・システム、またはストレージを含む基礎クラウド・インフラストラクチャを管理または制御するのではなく、展開されたアプリケーション、そしておそらくはアプリケーション・ホスティング環境構成に対する制御を有する。
【0085】
サービスとしてのインフラストラクチャ(IaaS:Infrastructure as a Service):コンシューマに提供される能力は、処理、ストレージ、ネットワーク、およびコンシューマが任意のソフトウェアを展開および実行することができる他の基本的コンピューティング・リソースを供給することであり、そのリソースは、オペレーティング・システムおよびアプリケーションを含むことができる。コンシューマは、基礎クラウド・インフラストラクチャを管理または制御するのではなく、オペレーティング・システム、ストレージ、展開されたアプリケーションに対する制御、そしておそらくは、精選されたネットワーキング構成要素(例えば、ホスト・ファイアウォール)の制限された制御を有する。
【0086】
展開モデルは以下の通りである。
【0087】
プライベート・クラウド:このクラウド・インフラストラクチャは、組織化のためにのみ働く。これは、組織または第三者によって管理されてもよく、オンプレミスで(on-premises)またはオフプレミスで存在してもよい。
【0088】
コミュニティ・クラウド:このクラウド・インフラストラクチャは、幾つかの組織によって共有され、共通懸念(例えば、使命、セキュリティ要件、ポリシ、およびコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。これは、組織または第三者によって管理されてもよく、オンプレミスでまたはオフプレミスで存在してもよい。
【0089】
パブリック・クラウド:このクラウド・インフラストラクチャは、一般大衆または大きい産業グループに利用可能にされ、クラウド・サービスを販売する組織によって所有される。
【0090】
ハイブリッド・クラウド:このクラウド・インフラストラクチャは、2つ以上のクラウド(プライベート、コミュニティ、またはパブリック)の構成体であり、それらのクラウドは、固有のエンティティのままであるが、データおよびアプリケーションの携帯性を可能にする標準化されたまたは専有の技術によって、共に結び付けられている(例えば、クラウド間のロード・バランシングのためのクラウド・バースティング)。
【0091】
クラウド・コンピューティング環境は、ステートレスネス(statelessness)、低結合、モジュール性、およびセマンティックな相互運用性に重きを置いたサービス指向型である。クラウド・コンピューティングの心臓部には、相互接続されたノードのネットワークを含むインフラストラクチャがある。
【0092】
ここで
図6を参照すると、例証的なクラウド・コンピューティング環境600が示される。図示のように、クラウド・コンピューティング環境600は、1つまたは複数のクラウド・コンピューティング・ノード610を含み、それらと、例えば、携帯情報端末(PDA:personal digital assistant)または携帯電話654A、デスクトップ・コンピュータ654B、ラップトップ・コンピュータ654C、または自動車コンピュータ・システム654N、あるいはその組合せ等のクラウド・コンシューマによって使用されるローカル・コンピューティング・デバイスが通信することができる。ノード610は、互いに通信することができる。それらは、上記で説明したプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、またはハイブリッド・クラウド、あるいはその組合せ等の1つまたは複数のネットワークにおいて、物理的にまたは仮想的にグループ化され得る(図示せず)。これは、クラウド・コンピューティング環境650が、サービスとしてのインフラストラクチャ、サービスとしてのプラットフォーム、またはサービスとしてのソフトウェア、あるいはその組合せを提供することを可能にし、クラウド・コンシューマは、ローカル・コンピューティング・デバイス上でリソースを維持する必要がない。
図6に示すコンピューティング・デバイス654A~Nの型が、例証に過ぎないことを意図されること、およびコンピューティング・ノード610およびクラウド・コンピューティング環境650が、任意の型のネットワークまたは任意の型のネットワーク・アドレス指定可能接続あるいはその両方を通じて、任意の型のコンピュータ化デバイスと(例えば、ウェブ・ブラウザを使用して)通信することができることが理解される。
【0093】
ここで
図7を参照すると、クラウド・コンピューティング環境650(
図6)によって提供される機能抽象化レイヤのセットが示される。
図7に示される構成要素、レイヤ、および機能が、例証に過ぎないことを意図され、本開示の実施形態が、それに限定されないことが予め理解されるべきである。図示のように、以下のレイヤおよび対応する機能が提供される。
【0094】
ハードウェアおよびソフトウェアレイヤ760は、ハードウェアおよびソフトウェアの構成要素を含む。ハードウェア構成要素の例は、メインフレーム761、RISC(Reduced Instruction Set Computer:縮小命令セットコンピュータ)アーキテクチャ・ベース・サーバ762、サーバ763、ブレード・サーバ764、ストレージ・デバイス765、ならびにネットワークおよびネットワーキング構成要素を含む。幾つかの実施形態において、ソフトウェア構成要素は、ネットワーク・アプリケーション・サーバ・ソフトウェア767およびデータベース・ソフトウェア768を含む。
【0095】
仮想化レイヤ770は、抽象化レイヤを提供し、抽象化レイヤから、以下の例の仮想のエンティティ、すなわち、仮想サーバ771、仮想ストレージ772、仮想プライベート・ネットワークを含む仮想ネットワーク773、仮想アプリケーションおよびオペレーティング・システム774、ならびに仮想クライアント775が提供され得る。
【0096】
一例において、管理レイヤ780は、以下で説明する機能を提供することができる。リソース供給781は、コンピューティング・リソース、および、クラウド・コンピューティング環境内でタスクを実施するために利用される他のリソースの動的調達を可能にする。計測および価格設定782は、クラウド・コンピューティング環境内でリソースが利用されるときの費用追跡、および、これらのリソースの消費についての請求またはインボイス発行を可能にする。一例において、これらのリソースは、アプリケーション・ソフトウェア・ライセンスを含むことができる。セキュリティは、クラウドのコンシューマおよびタスクについてのアイデンティティ検証、ならびに、データおよび他のリソースのための保護を提供する。ユーザ・ポータル783は、コンシューマおよびシステム管理者のために、クラウド・コンピューティング環境に対するアクセスを提供する。サービス・レベルの管理784は、要求されるサービス・レベルに見合うように、クラウド・コンピューティング・リソース割り振りおよび管理を提供する。サービス・レベル合意(SLA:Service Level Agreement)の立案および遂行785は、クラウド・コンピューティング・リソースのための事前の取り決めおよびその調達を可能にし、そのリソースについての将来の要件は、SLAに従って予期される。
【0097】
ワークロード・レイヤ790は、クラウド・コンピューティング環境が、そのために利用され得る機能の例を提供する。このレイヤから提供され得るワークロードおよび機能の例は、本明細書で論じるように、マッピングおよびナビゲーション791、ソフトウェア開発およびライフサイクル管理792、仮想教室教育配信793、データ解析処理794、トランザクション処理795、および統一変換エンジン796を含む。
【0098】
本教示の種々の実施形態の説明は、例証のために提示されたが、網羅的であるかまたは開示される実施形態に限定されることを意図されない。多くの変更および変形は、説明される実施形態の範囲から逸脱することなく当業者に明らかになるであろう。本明細書で使用される用語は、本発明の原理、実用的な適用、または市場で見出される技術に勝る技術的改善を最もよく説明するために、または、当業者が本明細書で開示される実施形態を理解することを可能にするために選択された。
【0099】
上記は、最良の状態または他の例あるいはその両方であると考えられるものを説明したが、種々の変更がそこで行われ得ること、および、本明細書で開示する主題が種々の形態および例で実装され得ること、および、教示が、その一部のみが本明細書で説明された多数の適用において適応され得ることが理解される。本教示の真の範囲内に入る任意のおよび全ての適用形態、変更形態、および変形形態を特許請求することが、添付請求項によって意図される。
【0100】
本明細書で論じられた構成要素、ステップ、特徴、オブジェクト、利益、および利点は、例証に過ぎない。それらも、それらに関連する議論も、保護の範囲を限定することを意図されない。種々の利点が本明細書で論じられたが、全ての実施形態が全ての利点を必ずしも含むわけではないことが理解されるであろう。別段に述べられない限り、全ての測定値、値、等級、位置、大きさ、サイズ、および、添付請求項において、を含んで、本明細書において述べられる他の仕様は、厳密ではなく概算である。それらは、それらが関連する機能、および、それらが属する技術分野で慣例的であるものと矛盾しない合理的範囲を有することを意図される。
【0101】
多数の他の実施形態も企図される。これらは、より少数の、さらなる、および/または、異なる構成要素、ステップ、特徴、オブジェクト、利益、および利点を有する実施形態を含む。これらは、構成要素またはステップあるいはその両方が、異なるように配置および/または順序付けされる実施形態も含む。
【0102】
本開示の態様は、本開示の実施形態による、方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート例証またはブロック図あるいはその両方を参照して本明細書で説明される。フローチャート例証またはブロック図あるいはその両方の各ブロック、および、フローチャート例証またはブロック図あるいはその両方内のブロックの組合せがコンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0103】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するための手段を作成するように、適切に構成されたコンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを生成するものであってもよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に記憶されることで、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作の態様を実装する命令を含む製造品を含むような方法で、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはそれらの組合せが機能するように指示することができるものであってもよい。
【0104】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実装するように、コンピュータ実装プロセスを生成すべく、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【0105】
本明細書の図のコールフロー、フローチャート、およびブロック図は、本開示の種々の実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装態様のアーキテクチャ、機能、および操作を示す。これに関して、フローチャートまたはブロック図内の各ブロックは、指定された論理機能(複数可)を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または一部分を表すことができる。幾つかの代替の実装態様において、ブロックで言及された機能は、図で言及された順序から外れて行われ得る。例えば、連続して示される2つのブロックは、関係する機能に応じて、実際には、実質的に並行に実行され得る、またはブロックは時として逆順で実行され得る。ブロック図またはフローチャート例証あるいはその両方の各ブロック、および、ブロック図またはフローチャート例証あるいはその両方内のブロックの組合せが、指定された機能または動作を実施するかまたは専用ハードウェア命令とコンピュータ命令の組合せを実行する専用ハードウェア・ベース・システムによって実装され得ることも留意されるであろう。
【0106】
上記は例示的な実施形態と併せて説明されたが、用語「例示的な(exemplary)」が、最良または最適ではなく、単なる一例として意味されていることが理解される。前述の点を除いて、述べられたまたは例証されたものはいずれも、請求項内にあっても、請求項内で列挙されなくても、任意の構成要素、ステップ、特徴、オブジェクト、利益、利点、または均等物の公衆に対する提供をもたらすことを意図されない、または、もたらすと解釈されるべきでない。
【0107】
本明細書で使用される用語および表現が、特定の意味が本明細書で普通なら述べられる場合を除いて、調査および研究のそれらの対応するそれぞれの領域に関してそのような用語および表現に与えられる通常の意味を有することが理解されるであろう。第1、第2、および同様なもの等の関係する用語は、1つのエンティティまたは動作を別のエンティティまたは動作から区別するだけのために、そのようなエンティティまたは動作間に実際のそのような関係または順序を必ずしも必要とすることなく、または、それを示唆することなく、使用され得る。用語「備える(comprises)」、「備えている(comprising)」、またはその任意の他の変形は、要素のリストを構成するプロセス、方法、物品、または装置が、それらの要素を含むだけでなく、明示的に挙げられないか、またはそのようなプロセス、方法、物品、または装置に固有の他の要素も含むことができるように、非網羅的包含をカバーすることを意図される。「1つの(a)」または「1つの(an)」が先行する要素は、その要素を備えるプロセス、方法、物品、または装置におけるさらなる同一の要素の存在を、さらなる制約なしで、排除しない。
【0108】
本開示の要約は、読者が、技術的開示の特質を素早く確認することを可能にするために提供される。要約は、請求項の範囲または意味を解釈または限定するために要約が使用されないという理解の下に提出される。さらに、上記詳細な説明において、本開示を簡素化するために種々の実施形態において種々の特徴が共にグループ化されることが見られ得る。開示のこの方法は、特許請求される実施形態が、各請求項で明示的に列挙されるよりも多い特徴を有するという意図を反映するものと解釈されない。むしろ、添付請求項が反映するように、本発明の主題は、開示される単一の実施形態の全ての特徴より少ない特徴に存在する。そのため、添付の特許請求の範囲は、各請求項が、別々に特許請求された主題として独立に成立するように、詳細な説明に組み込まれている。
【国際調査報告】