(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-29
(54)【発明の名称】同時アドレス変換テーブルウォークのためのスリープ/ウェイクアップ性能強化
(51)【国際特許分類】
G06F 12/1009 20160101AFI20240822BHJP
【FI】
G06F12/1009
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024501476
(86)(22)【出願日】2022-07-11
(85)【翻訳文提出日】2024-01-10
(86)【国際出願番号】 CN2022104829
(87)【国際公開番号】W WO2023029756
(87)【国際公開日】2023-03-09
(32)【優先日】2021-08-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(74)【復代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ウェイト、チャールズ ディー.
(72)【発明者】
【氏名】トゥルーラブ、ジェイク
(72)【発明者】
【氏名】キャンベル、デイビッド
(72)【発明者】
【氏名】ジョイナー、ジョディ
(72)【発明者】
【氏名】クリーゲル、ジョン ケイ.
(72)【発明者】
【氏名】キンケイド、グレン オ.
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM51
5B205RR04
5B205RR05
(57)【要約】
メモリアドレス変換システムは、仮想アドレスから物理メモリの実アドレスへの変換要求を提供するように構成された変換リクエスタモジュールを含む。変換キャッシュモジュールは、変換リクエスタモジュールから変換要求を受信するように構成されている。スリープ及びウェイク制御モジュールは、受信したVAを、テーブルウォークマシンの全ての現在アクティブなテーブルウォークのVA'と比較するように構成されている。所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、変換要求は、スリープ状態に置くために、識別番号(ID)とともに変換リクエスタモジュールに送信される。各テーブルウォークマシンは、その変換レベルの完了の際に、IDを有するウェイクアップ信号を変換リクエスタモジュールに提供し、それによって、現在スリープ中の変換要求のウェイクアップ及び処理をトリガし、並列した変換テーブルウォークを提供するように構成されている。
【特許請求の範囲】
【請求項1】
仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を受信する段階;
前記受信したVAを、テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較する段階;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに変換リクエスタモジュールに送信する段階;
前記所与のテーブルウォークマシンがその変換レベルを完了したと判定する際に、前記IDを有するウェイクアップ信号を前記変換リクエスタモジュールに送信して、前記スリープ状態に置く変換要求のウェイクアップ及び処理をトリガする段階;及び
前記IDを有する前記変換要求の前記VAのテーブルウォークを、前記テーブルウォークマシンのグループの他の変換要求の1又は複数の他のテーブルウォークと並列に提供する段階
を備える、複数のページサイズ環境におけるメモリアドレス変換を提供する方法。
【請求項2】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して:前記受信したVAの仮想アドレスビットを前記現在アクティブなテーブルウォークの変換レベルにおけるアドレスの範囲と比較する段階を備える、請求項1に記載の方法。
【請求項3】
各アクティブテーブルウォークについて、前記テーブルウォークの変換レベルを、アドレス衝突が存在するかどうかを判定するために比較するべきアドレスビットの数を判定するのに使用する段階をさらに備える、請求項1に記載の方法。
【請求項4】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して、前記アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズのビット境界まで比較する段階を含む、請求項1に記載の方法。
【請求項5】
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在しないと判定する際に、処理されるべき前記変換要求を、前記テーブルウォークマシンのグループのテーブルウォークマシンによって直接送信する段階をさらに備える、請求項1に記載の方法。
【請求項6】
前記変換要求を受信する際に、変換キャッシュモジュールによって、前記VAの前記変換要求が以前に成功裏に処理されたかどうかを判定する段階;及び
前記VAの前記変換要求が以前に成功裏に処理されていないと判定した際に、前記変換要求を、1又は複数のテーブルウォークマシンに直接送信する段階
をさらに備える、請求項1に記載の方法。
【請求項7】
前記変換要求は、
ハッシュされたページテーブル(HPT)要求;
セグメントテーブル要求;
ネストされていない基数要求;又は
ネストされた基数要求
のうちの少なくとも1つを備える、請求項1に記載の方法。
【請求項8】
前記完了した変換レベルは、レベル1の基数木ディレクトリベース(RTDB)であり、これは、第1基数変換テーブルのベースアドレスとして使用される、請求項1に記載の方法。
【請求項9】
次のレベルの前記所与のテーブルウォークマシンは、ページテーブルエントリ(PTE)であり、これは、次の範囲の変換を定義するために使用される、請求項1に記載の方法。
【請求項10】
メモリアドレス変換システムであって、
仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を提供するように構成されている変換リクエスタモジュール;
前記変換リクエスタモジュールに連結され且つ前記変換リクエスタモジュールから前記変換要求を受信するように構成されている変換キャッシュモジュール;
前記変換キャッシュモジュール及び前記変換リクエスタモジュールに連結され且つテーブルウォークを実行するように構成されているテーブルウォークマシンのグループ;及び
前記変換リクエスタモジュール、変換キャッシュモジュール、及び前記テーブルウォークマシンモジュールに連結されたスリープ及びウェイク制御モジュール
を備え、前記スリープ及びウェイク制御モジュールは:
前記受信したVAを、前記テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較すること;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに前記変換リクエスタモジュールに送信すること
を行うように構成され;
ここで、各テーブルウォークマシンは、その変換レベルの完了の際に、識別番号(ID)を有するウェイクアップ信号を前記変換リクエスタモジュールに提供し、それによって、対応するIDを有する現在スリープ中の変換要求のウェイクアップ及び処理をトリガし、前記テーブルウォークマシンのグループ内において並列した変換テーブルウォークを提供するように構成されている
システム。
【請求項11】
前記システムは、複数のページサイズをサポートする、請求項10に記載のシステム。
【請求項12】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と前記比較することは、各現在アクティブなテーブルウォークに対して、前記受信したVAの仮想アドレスビットを前記現在アクティブなテーブルウォークの変換レベルにおけるアドレスの範囲と比較することを含む、請求項10に記載のシステム。
【請求項13】
前記スリープ及びウェイク制御モジュールは、各アクティブテーブルウォークについて、前記テーブルウォークの変換レベルを、アドレス衝突が存在するかどうかを判定するために比較するべきアドレスビットの数を判定するのに使用するように構成されている、請求項10に記載のシステム。
【請求項14】
前記受信したVAの、前記現在アクティブなテーブルウォークの前記VA'との前記スリープ及びウェイク制御モジュールによる前記比較は、各現在アクティブなテーブルウォークに対して、前記アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズのビット境界まで比較することを含む、請求項10に記載のシステム。
【請求項15】
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在しないと判定する際に、処理されるべき前記変換要求を、前記テーブルウォークマシンのグループの前記所与のテーブルウォークマシンによって直接送信することをさらに備える、請求項10に記載のシステム。
【請求項16】
前記変換キャッシュモジュールは、
前記変換要求を受信する際に、前記VAの前記変換要求が以前に成功裏に処理されたかどうかを判定すること;及び
前記VAの前記変換要求が以前に成功裏に処理されていないと判定した際に、前記変換要求を、1又は複数のテーブルウォークマシンに直接送信すること
を行うようにさらに構成されている、請求項10に記載のシステム。
【請求項17】
前記変換リクエスタモジュールは、以下の変換要求、すなわち:
ハッシュされたページテーブル(HPT)要求;
セグメントテーブル要求;
ネストされていない基数要求;又は
ネストされた基数要求
のうちの少なくとも1つを提供するように構成されている、請求項10に記載のシステム。
【請求項18】
前記完了した変換レベルは、レベル1の基数木ディレクトリベース(RTDB)であり、これは、第1基数変換テーブルのベースアドレスとして使用される;及び
前記スリープ及びウェイク制御モジュールは、前記レベル1のRTDBを第1基数変換テーブルのベースアドレスとして使用するように構成されている、請求項10に記載のシステム。
【請求項19】
プロセッサ;
前記プロセッサに連結された物理メモリ;
前記プロセッサに連結され、且つ
仮想アドレス(VA)から前記物理メモリの実アドレス(RA)への変換要求を受信すること;
前記受信したVAを、テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較すること;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに変換リクエスタモジュールに送信すること;
前記所与のテーブルウォークマシンがその変換レベルを完了したと判定する際に、前記IDを有するウェイクアップ信号を前記変換リクエスタモジュールに送信して、前記スリープ状態に置く変換要求のウェイクアップ及び処理をトリガすること;及び
前記IDを有する前記変換要求の前記VAのテーブルウォークを、前記テーブルウォークマシンのグループの他の変換要求の1又は複数の他のテーブルウォークと並列に提供すること
を行うように構成されているメモリアドレス変換システム
を備える、コンピューティングデバイス。
【請求項20】
前記メモリアドレス変換システムは、複数のページサイズをサポートする、請求項19に記載のコンピューティングデバイス。
【請求項21】
情報処理システムによって実行されたとき、請求項1から9のいずれかの方法の段階を実行する、コンピュータプログラムコードを備えるコンピュータ可読記憶媒体に格納されたコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は一般的に、コンピュータシステムに関し、より具体的には、処理システムにおけるメモリテーブルの管理に関する。
【背景技術】
【0002】
近年では、コンピューティングプラットフォームのオペレーティングシステムは、ハードウェア及びソフトウェアの組み合わせを使用することで、場合によっては仮想アドレスと称される、プログラムによって使用されるメモリアドレスを、コンピュータのメモリ内の物理アドレスにマッピングする。このように、メインストレージは、連続的なアドレス空間における一様なセグメントとして現れる。オペレーティングシステムは、仮想アドレス空間、及び仮想メモリへの実(物理)メモリの割り当てを管理する。場合によってはメモリ管理ユニット(MMU)と称される、プロセッサにおけるアドレス変換ハードウェアは、仮想アドレスを物理アドレスに変換する。オペレーティングシステム内のソフトウェアは、実メモリの容量より大きい仮想アドレス空間を提供し、それによって、コンピューティングプラットフォームに物理的に存在するものより多くのメモリを参照し得る。仮想メモリを使用することによって、ソフトウェアは、物理的に利用可能であり得るものより多くのメモリを使用し得る。仮想メモリは、物理メモリの断片化を偽装することによって、アプリケーションプログラミングを簡略化する。
【0003】
現在のコンピューティングシステムは、使用されているオペレーティングシステムのタイプに基づいて異なるアドレス変換メカニズムを使用する。複数のコンピュータシステム環境をサポートするために、アドレス変換ハードウェアは、仮想アドレス(VA)から実(すなわち、物理)アドレス(RA)に変換を行うとき、複数のページサイズをサポートするべきである。本明細書において使用されるように、有効アドレス(EA)はプログラムが見るアドレスであり;仮想アドレス(VA)はOSによって使用されるアドレスであり;実アドレス(RA)は実際のメモリハードウェアのアドレスである。
【0004】
EA又はVAを最終的にRAに変換するとき、プロセッサは、典型的には、適切なメモリアドレスにアクセスできるように、正しいアドレスを生成するために、変換テーブルをウォークする時間集約的プロセスを実行する。ページテーブルは、オペレーティングシステムが仮想アドレス(VA)から物理アドレスへのそのマッピングを格納する場所であり、各マッピングはまた、ページテーブルエントリ(PTE)として既知である。変換ウォークの結果は通常、後で使用するためにキャッシュされる。しかしながら、時間集約的テーブルウォークプロセスがまず実行され、多くのメモリ読み取り、キャッシュアクセスを伴い、ハードウェアスレッド、又はプロセッサコア全体の進行を停止し得る。
【発明の概要】
【0005】
様々な実施形態において、複数のページサイズ環境におけるメモリアドレス変換を提供するための方法、システム及びコンピューティングデバイスは、仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を受信する手順を含む。前記受信したVAは、テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較される。前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求は、スリープ状態に置かれるために、識別番号(ID)とともに変換要求元モジュールに送信される。前記所与のテーブルウォークマシンがその変換レベルを完了したと判定する際に、前記IDを有するウェイクアップ信号が前記変換要求元モジュールに送信され、前記スリープ状態に置く変換要求(put to sleep translation request)のウェイクアップ及び処理をトリガする。前記IDを有する前記変換要求の前記VAのテーブルウォークは、前記テーブルウォークマシンのグループの他の変換要求の1又は複数の他のテーブルウォークと並列に提供される。
【0006】
1つの実施形態において、前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して:前記受信したVAの仮想アドレスビットを前記現在アクティブなテーブルウォークの変換レベルにおけるアドレスの範囲と比較する段階を含む。
【0007】
1つの実施形態において、各アクティブテーブルウォークについて、前記テーブルウォークの状態(すなわち、変換レベル)は、アドレス衝突が存在するかどうかを判定するために比較するべきアドレスビットの数を判定するのに使用される。
【0008】
1つの実施形態において、前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して、前記アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズの前記ビット境界まで比較する段階を含む。
【0009】
1つの実施形態において、比較に基づいて、テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在しないと判定する際に、処理されるべき変換要求は、テーブルウォークマシンのグループのテーブルウォークマシンによって直接送信される。
【0010】
1つの実施形態において、前記変換要求を受信する際に、変換キャッシュモジュールは、前記VAの前記変換要求が以前に成功裏に処理されたかどうかを判定する。VAの変換要求が以前に成功裏に処理されていないと判定した際に、変換要求は、1又は複数のテーブルウォークマシンに直接送信される。
【0011】
1つの実施形態において、前記変換要求は、ハッシュされたページテーブル(HPT)要求、セグメントテーブル要求、ネストされていない基数要求又はネストされた基数要求のうちの少なくとも1つを含む。
【0012】
1つの実施形態において、前記完了した変換レベルは、レベル1の基数木ディレクトリベース(RTDB)であり、これは、第1基数変換テーブルのベースアドレスとして使用される。
【0013】
1つの実施形態において、次のレベルの前記所与のテーブルウォークマシンは、ページテーブルエントリ(PTE)であり、これは、次の範囲の変換を定義するために使用される。次のレベルは、ページディレクトリエントリ(PDE)でもあり得る。一方、PTEは変換の物理アドレスを含み、PDEは基数木ディレクトリベース(RTDB)を含み、これは次の基数テーブルへのベースポインタである。両方は、比較のためにアドレス範囲を定義するのに使用され得る。
【0014】
本明細書の教示により、変換要求の並列処理を提供するより効率的なメモリアドレス変換が提供される。これら及び他の特徴は、その例示的な実施形態の以下の詳細な説明から明らかになり、これは、添付図面に関連して読まれるものである。
【図面の簡単な説明】
【0015】
図面は例示的な実施形態のものである。これらの図面は、全ての実施形態を図示するものではない。他の実施形態が追加で又は代わりに使用されてもよい。空間の節約又はより効果的な図示のために、明らか又は不要であり得る詳細は省略されることがある。いくつかの実施形態は、追加的なコンポーネント又は段階を使用して、もしくは図示されている全てのコンポーネント又は段階を使用せずに、又はその組み合わせで実施され得る。同じ数字が異なる図面に表示されている場合、それは同じ又は同様のコンポーネント又は段階を指す。
【0016】
【
図1】例示的な実施形態と一致する、複数の並列テーブルウォークをサポートするメモリアドレス変換システムの概念的ブロック図である。
【0017】
【
図2】例示的な実施形態と一致する、複数のページサイズ環境におけるメモリアドレス変換の概念的プロセスフロー図である。
【0018】
【
図3A】例示的な実施形態と一致する、例示的なスリープ/ウェイク並列テーブルウォークである。
【0019】
【
図3B】例示的な実施形態と一致する、システムによって処理される2つの仮想アドレス変換要求のテーブルである。
【0020】
【
図4】例示的な実施形態と一致する、複数のページサイズ環境におけるメモリアドレス変換のための例示的なプロセスフローである。
【0021】
【
図5】メモリアドレス変換システムをホストするのに使用され得るコンピュータハードウェアプラットフォームの機能ブロック図の図示を提供する。
【0022】
【
図6】例示的な実施形態と一致する、クラウドコンピューティング環境を示す。
【0023】
【
図7】例示的な実施形態と一致する抽象化モデル層を示す。
【発明を実施するための形態】
【0024】
[概要]
以下の詳細な説明では、関連する教示の十分な理解を提供するために、多数の具体的な詳細を例として挙げている。しかしながら、本教示はそのような詳細なしで実施され得ることは明らかであるはずである。他の事例において、周知の方法、手順、コンポーネント、及び/又は回路が、本教示の態様を不必要に不明瞭にすることを回避するために、詳細なしで、比較的高いレベルで説明されている。
【0025】
本開示は、一般的に、処理システムにおけるメモリテーブルを管理するシステム及び方法に関する。現在、異なる動作環境及び仮想マシンをサポートし得るプロセッサコアが開発されている。例えば、コンピューティングシステムの一部は変換の基数モードを実行し得、これは、単一の大きいハッシュされたテーブルの代わりに、一連のネストされたテーブルを使用することで、その特定のオペレーティングシステム(OS)のためのページテーブルエントリを発見し、その一方、システムの別の部分は、パワーPCを実行し、これは、その対応するOSのために異なる変換モードを使用する。例えば、場合によっては仮想マシンモニタ(VMM)と称されるハイパーバイザは、仮想マシンからのハイパーバイザオペレーティングシステム及びリソースを隔離することによって仮想マシン(VM)を作成及び実行して、そのようなマシンの作成及び管理を可能とし得、これは、同じハードウェアを共有しながら異なるOSに基づき得る。各オペレーティングシステムは、異なるページテーブルに基づいて異なるアドレス変換を伴い得る。プロセスがそのメモリ内のデータへのアクセスを要求したとき、OSの役割は、プロセスによって提供された仮想アドレス(VA)を、そのデータが格納された実際のメモリの物理アドレスにマッピングすることである。ページテーブルは、オペレーティングシステムが仮想アドレスから物理アドレスへのそのマッピングを格納する場所であり、各マッピングはまた、ページテーブルエントリ(PTE)として既知である。異なるオペレーティングシステムが使用されているので、本明細書場合によっては変換モードと称される、異なる変換ユニットが存在し得る。
【0026】
PTEは、典型的には、オペレーティングシステムによって発見された仮想アドレスを、アプリケーションプログラムの命令を処理するハードウェアによって使用される物理アドレスに変換するために使用される。そのような変換を実行するハードウェアは、場合によっては、メモリ管理ユニット(MMU)と称される。ページテーブル内の各エントリは、対応するページが物理メモリ内にあるか否かの指示を含む。物理メモリ内にある場合、ページテーブルエントリは、ページが格納された実際のメモリアドレスを含む。ハードウェアがページを参照したとき、ページに対するページテーブルエントリが、それが現在物理メモリ内にないことを指示する場合、ハードウェアはページフォールト例外を立ち上げ、オペレーティングシステムのページスーパーバイザコンポーネントを起動する。
【0027】
現在、ハイエンドコンピュータシステムは複数のページサイズをサポートし得、これは、性能強化同時テーブルウォークを実装するときの問題を提示する。ハードウェアの設計が複数のテーブルウォークエンジンを有するとき、新たな変換要求は、仮想アドレス衝突のために、現在のアクティブテーブルウォークエンジンをチェックする。アドレス衝突は、2つのVA'の変換が同じページに行われるときに発生する。
【0028】
典型的には、新たなVA変換要求が、アクティブな変換テーブルウォークと同じページに存在する可能性があり得る場合、それは、同じページに対する変換キャッシュにおける複数のエントリを回避するためにストールされる。そのようなストールは、複数のハードウェアテーブルウォークエンジンの性能強化利点を破壊する。
【0029】
本明細書における教示は、スリープ及び/又はウェイクアップインタフェースを提供すること、ならびに、変換要求元及び複数の変換テーブルウォーク(TW)エンジンの間のハードウェアロジックをサポートすることで、同時にテーブルウォークが重複できるようにする。新たな変換要求が受信されたとき、システムは、アクティブテーブルウォークエンジンの進行状態を使用して、比較するべきVAビットの数を判定する。複数のアクティブTWエンジンを用いて、各エンジンは、その個別の変換ウォーク進行に基づいて、VAビットのその独自の範囲を生成する。比較の結果は、新たな変換が「スリープ状態に置く」ことになるかを判定する。新たな変換は、アクティブTWエンジンが次の変換レベルに進行して同時の重複を可能にしたときに「ウェイクアップ」を受信する。
【0030】
本開示の1つの態様において、新たな要求は、新たな要求が同じページを共有しないことをアクティブTWエンジンが保証できるまで、一時的に「スリープ状態に置く」のみである。この時点で、アクティブテーブルウォークは新たな要求を「ウェイクアップ」させ、それによって、それが並列に動作するのみならず、現在の(すなわち、アクティブ)変換ウォーク進行を利用することを可能にする。例えば、新たな要求は、アクティブウォークが中間結果を変換キャッシュに格納した場合、アクティブ変換ウォーク進行を利用し得る。いくつかのシナリオにおいて、別個のページウォークキャッシュ(PWC)が、これらの中間結果に使用される。
【0031】
複数のページサイズがサポートされる実施形態において、アドレス衝突ロジックは、アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズのビット境界まで比較する。本明細書における教示なしで、新たな要求は、アドレス衝突を引き起こすアクティブ変換が解決するまでストールされ、それによって、コンピューティングシステムを実質的に減速させる。
【0032】
それに応じて、本明細書における教示は、複数のページサイズ及び同時テーブルウォークをサポートするプロセッサのためのコンピュータシステム及び方法を提供する。本明細書において説明された技術は、多くの方法で実装され得る。次の図を参照して、例示的な実装を以下に示す。
[例示的なアーキテクチャ]
【0033】
ここで、例示的な実施形態と一致する、場合によってはメモリ管理ユニット(MMU)と称される、複数の並列テーブルウォークをサポートするメモリアドレス変換システム100の概念的ブロック図である
図1を参照する。システム100は、VAに基づいてRAの要求を提供するように構成された変換リクエスタ102を含む。例えば、変換要求は、ハッシュされたページテーブル(HPT)変換要求、セグメントテーブル変換要求、ネストされていない基数要求、ネストされた基数要求などであり得る。
【0034】
変換キャッシュ‐トランスレーションルックアサイドバッファ(TLB)インタフェース110が存在しており、それは、変換リクエスタモジュール102からキャッシュ要求を受信するとともに、TLB内にアドレス「ミス」126が存在するかどうかに応じて、1又は複数のテーブルウォーク(TW)マシン130から136及びスリープ及びウェイク制御モジュール120に要求を提供するように構成されている。TLBは、ユーザメモリ位置へのアクセスにかかる時間を低減するために動作可能であるメモリキャッシュである。TLB110は、以前の成功した変換結果を格納する。例えば、TLB110は、EAからVA、VAからRA、及びEAからRA等の、異なるタイプの以前の変換を含み得る。同様の要求に対して以前に成功した変換要求がTLB110によって発見された場合(すなわち、TLB「ヒット」)、要求は、物理RAを有する変換リクエスタに返される。しかしながら、変換リクエスタモジュール102からの新たな変換要求104がTLB110を見逃した場合(すなわち、以前に成功した変換要求が現在のアドレスに関して識別されていない、したがって、TLBミス)、新たな要求VA104が、スリープ及びウェイク及び制御モジュール120に転送される。
【0035】
スリープ及びウェイク制御モジュール120は、受信した仮想アドレスを、現在アクティブなテーブルウォーク(例えば、130から136)を有する仮想アドレスと比較する。アドレス範囲は、テーブルウォークの状態によって構成されている。本明細書において使用されるように、テーブルウォークの状態は、アクティブテーブルウォークが現在動作している基数木のレベルに関する。例えば、アクティブウォークがレベル2で動作している場合、次に、比較されるアドレス範囲は、12:33であり、レベル3の場合は、12:42であり、以下同様である。
【0036】
現在アクティブなテーブルウォーク内にアドレス一致が存在すると判定した際に、新たな変換要求は、スリープ要求変換リクエスタモジュール102に返される106(例えば、アクティブTW(Req_ID)に対する「put-to-sleep」)。それに応じて、変換リクエスタモジュール102は、新たな変換要求を、対応する要求識別(ID)番号を有するスリープ要求(例えば、103)として格納する。しかしながら、アドレス一致が存在しない場合、新たな変換要求は、TWマシン(例えば、130から136)に割り当てられる122。1つの実施形態において、変換キャッシュ110からテーブルウォークマシン130から136への直接経路が存在する。この経路124は、テーブルウォークマシン130から136にVAを直接供給するように構成されている。アクティブTWからの中間結果が変換キャッシュ110に格納された場合、経路124は、それらを新たな変換要求にも提供し得る。
【0037】
アクティブなテーブルウォークマシンは、対応する基数変換レベル(例えば、L1、L2、L3、L4など)を完了し、その対応するIDを有する「ウェイクアップ」信号140を変換リクエスタモジュール102に送信し、これは、受信したIDに基づいて、変換リクエスタモジュール102が現在スリープ中の変換要求を再送することをトリガする。新たな変換要求を「スリープ状態に置く」ことにしたとき、それは、アドレス衝突が関連付けられたアクティブTW IDである。それに応じて、アクティブTWが基数レベルを完了したとき、それは、そのID140を変換リクエスタ102に送信し、これは次に、同じIDを有する任意のスリープ中の「新たな」要求103をウェイクアップさせる。1つの実施形態において、1つより多くのスリープ要求が単一のIDによってアクティブ化される(すなわち、ウェイクアップされる)ことができる。
【0038】
ここで、例示的な実施形態と一致する、複数のページサイズ環境におけるメモリアドレス変換についての概念的プロセスフロー図である
図2を参照する。限定ではなく例としてのみ、64ビットのVA'の2つの基数変換要求を考慮し、ここで、サポートされた可能なページサイズは、1G、2M及び4Kである。本明細書における教示なしで、同じ1Gアドレス範囲におけるあらゆる変換要求であるVA(0:33)<big endian>は、その範囲内に1つのアクティブテーブルウォークが存在する場合に、実際(不明)のページサイズにかかわらず、ストールされる。実際のページサイズが4kである場合、次に(250,000-1)の他の可能な4kページ変換が突然ストールされ、それによって、任意のテーブルウォーク重複が防止される。
【0039】
ここで、例示的な実施形態と一致する、例示的なスリープ/ウェイク並列テーブルウォークを提供する
図3A及び
図3Bを参照する。例えば、基数変換ウォーク中に、変換テーブルのセットが各変換ウォークレベルにおいてアクセスされる。VAは別個のアドレスビットグループに分轄され、ここで、各グループは、所与の変換レベル(例えば、
図3AにおけるL1からL4)において変換テーブルにインデックスするのに使用される。変換テーブルエントリは、次の変換ウォークレベルにおける変換テーブルのベースアドレスを含み、これは、次に、次のVAビットグループによってインデックスされる。
【0040】
図3Bは、例示的な実施形態と一致する、システムによって処理される2つの仮想アドレス変換要求のテーブルである。VA'は、テーブルウォークエンジンによって現在処理されている第1(例えば、既存の)変換要求を表しており、その一方、VA''は、第1変換要求の後に受信された第2の(すなわち、新たな)変換要求を表す。
図3Bの例に示されているように、レベル1(すなわち、(12:24))において、アドレスは同じ(すなわち、X017)であり、それによって、変換衝突に潜在的につながる。これに関して、VA''は、VA'のためのレベル1のアクティブテーブルウォークが完了するまでスリープ状態に置かれる。同様に、レベル2(すなわち、(25:33))において、アドレスは同じ(すなわち、X29)である。結果的に、VA''は、対応するテーブルウォークエンジンによってVA'に対してこのレベル2が完了するまで、ストールされる(例えば、スリープ状態に置かれる)。
【0041】
これに対して、レベル3の場合、VA'及びVA''の間の比較は、その変換レベルに対するアドレスが異なる(すなわち、X1E vs. X07)ことを指示し、それによって、VA'及びVA''が、同じテーブルウォークエンジンによって同時に(例えば、並列して)処理されることを可能にする。それに応じて、ページサイズが異なる場合であっても、本明細書における教示は、処理の並列化を最大化するアドレス変換要求の効率的な処理を容易にして、それによって、メモリアドレス変換のスループットを大幅に強化させる。
【0042】
図2に戻ると、例えば、VA(12:63)202の基数テーブルウォークが考慮される。最も小さいページサイズが4k(
図3A)におけるL4を参照されたい)なので、VA(12:51)は、実(アドレス)ページ数(Real(Address)Page Number)、RPN(12:51)に変換され得る。
【0043】
レベル1の基数木ディレクトリベース(RTDB)は、RAに提供された第1基数変換テーブル及びシステムのベースアドレスである。VA(12:24)204は、この変換テーブルへのインデックスに使用され、アクセスされたエントリは、レベル2のRTDBを含む。VA(25:33)206は、レベル2のテーブルをインデックスして、レベル3のRTDBを発見する。VA(34:42)208は、レベル3のテーブルをインデックスして、レベル4のRTDBを発見する。最後に、VA(43:51)210は、レベル4のテーブルをインデックスして、ページテーブルエントリ(PTE)を発見し、これは、VA(12:51)からRPN(12:51)への変換を定義する。
【0044】
1つの実施形態において、アクティブウォークは変換キャッシュ内に中間結果を格納する。別個のページウォークキャッシュ(PWC)が、中間結果のために使用され得る。例えば、206は、アクティブウォークによって発見されたRTDBを指す。キャッシュされた場合、それは新たな「起動された」変換要求によって使用され得、それによって、現在のアクティブテーブルウォークのステータスを利用する。
【0045】
変換テーブルのベースアドレスとしてのRTDBは、限定ではなく例として提供されることに留意されたい。他のポインタも使用され得る。例えば、1つの実施形態において、レベル2のテーブルエントリは、RTDBの代わりにPTEであり得る。この実施形態において、ページサイズは1Gであり得る。同様に、レベル3のテーブルエントリはPTEであり得、この場合、
図3Aのテーブルに示されたように、ページサイズは2Mである。
【0046】
1つの実施形態において、木の各レベルにおいて、VAからRTDBへのマッピングは、後続のテーブルウォークを加速させるために、ページウォークキャッシュ(PWC)に保存される。例えば、VA(12:42)のPWCエントリは、レベル4のRTDBを提供する。
【0047】
新たな変換要求がテーブルウォーク(TW)エンジンのグループによって受信されたとき、システムは、アクティブTWエンジンとのアドレス衝突比較を実行する。アクティブTWエンジン(1G境界)のVA(12:33)が新たな要求とマッチングし且つTWエンジンがまだL2変換テーブルエントリにアクセスいていない場合、次に、新たな要求は、1G PTE(L2)が存在しないとアクティブTWエンジンが判定するまで、一時的に「スリープ状態に置く」ことになる。言い換えると、新たな要求は、アクティブTWエンジンがレベル2のテーブルエントリにアクセスするまで一時的に「スリープ状態に置く」ことになり、PTEでない場合、レベル3の動作に進む。本例においてサポートされる最も大きいページサイズは1Gであるので、それは、基数木のレベル2に対応しており、そして次に、(12:33)に対応する。
【0048】
このシナリオにおいて、アクティブTWエンジンがウェイクアップ信号を送信するまで、変換リクエスタは、その要求をストールする。TWエンジンは、L2テーブルエントリにアクセスした後にウェイクアップ信号を送信し、L3エントリへのアクセスを開始する。
【0049】
この時点で、新たな変換要求は1又は複数のTWエンジンのグループに再度送信され、VA(12:33)は再度比較される。しかし今度は、アクティブTWエンジンはL2変換テーブルを超えて進行されるので、この比較によってはスリープ信号が生成されない。
【0050】
しかしながら、アクティブTWエンジンがL3変換テーブルにまだアクセスしていない場合、次に、VA比較はVA(12:42)まで拡大される。VAの比較ミスの場合、新たな要求はアイドル状態の(例えば、利用可能な)TWエンジンに割り当てられ、2つの変換ウォークが弱まることなく並列に動作し得る。
【0051】
新たな変換要求が受信されたとき、システムは、アクティブTWエントリの進行状態(すなわち、変換レベル)を使用して、比較するべきVAビットの数を判定する。複数のアクティブTWエンジンを用いて、各エンジンが、その個別の変換ウォーク進行に基づいて、VAビットのその独自の範囲を生成することに留意されたい。
【0052】
1つの実施形態において、変換ウォークを並列に動作することに加えて、アクティブTWエンジンが「ウェイクアップ」信号を送信したとき、それはレベル3のRTDBを含むVA(12:33)のPWCも書き込み、これは、新たな要求がすぐに活用できるものである。明示的に説明されていないが、本明細書における教示はまた、まだL3のRTDB(2M境界/潜在的なPTE)並びにより高いレベルにアクセスしていないアクティブTWエンジンとのVA(12:42)の衝突があったとき、「スリープ/ウェイクアップ」フローをサポートする。
[例示的なプロセス]
【0053】
例示的なシステム100及び200の前述の概要を用いると、例示的なプロセスの高レベルの説明を考慮することがここで役立つ可能性がある。そのために、
図4は、例示的な実施形態と一致する、並列したテーブルウォークをサポートしながらメモリアドレスを変換する例示的なプロセス400を提示する。プロセス400は論理フローチャート内のブロックの集合として示されており、これは、ハードウェア、ソフトウェア、又はそれらの組み合わせにおいて実装され得る動作の順序を表す。ソフトウェアの文脈において、当該ブロックは、1又は複数のプロセッサによって実行されたときに、述べられたオペレーションを実行するコンピュータ実行可能命令を表す。一般的に、コンピュータ実行可能命令は、機能を実行する又は抽象的なデータタイプを実装するルーチン、プログラム、対象物、コンポーネント、データ、及び構造などを含み得る。各処理において、オペレーションが説明された順序は、限定として解釈されることを意図するものではなく、任意の数の説明されたブロックは、当該処理を実装するために、任意の順序で組み合わされることもしくは並列に実行されること又はその組み合わせを行い得る。説明の目的のために、プロセス400は、
図1のアーキテクチャを参照して説明される。
【0054】
ブロック402において、変換キャッシュ110は、仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を受信する。
【0055】
ブロック404において、変換キャッシュ110は、受信したVAを、テーブルウォークマシン130から136のグループの全ての現在アクティブなテーブルウォークのVA'と比較する。
【0056】
比較に基づいて、テーブルウォークマシンのグループの所与のテーブルウォークマシンにおけるアドレス一致が存在しない(すなわち、判定ブロック406における「いいえ」)と判定する際に、要求は、テーブルウォークマシン(例えば、テーブルウォークマシンのグループ130から136のうち130)が変換要求を処理するブロック414に転送される。
【0057】
しかしながら、テーブルウォークマシンのグループの所与のテーブルウォークマシンにおいてアドレス一致が存在する(すなわち、判定ブロック406における「はい」)と判定する際に、プロセスはブロック408で続行し、変換要求は、識別番号(ID)とともに、スリープ状態に置くべき変換リクエスタモジュールに返される。言い換えると、変換要求は一時的にストールされる。
【0058】
ブロック410において、所与のテーブルウォークマシンがその変換レベルを完了したかどうかが判定される。もしそうであれば(すなわち、判定ブロック410における「はい」)、プロセスはブロック412で続行し、ここで、ID140を有するウェイクアップ信号は変換リクエスタモジュール102に送信され、スリープ状態に置く(put to sleep)変換要求(例えば、103)のウェイクアップ及び処理414をトリガする。1つの実施形態において、「スリープ状態に置く」要求がウェイクアップ信号を受信したとき、プロセスはブロック404で続行し、ここで、変換キャッシュ110は、受信したVAを、テーブルウォークマシンのグループ130から136の全ての現在アクティブなテーブルウォークのVA'と比較する。アクティブTWがレベルを完了したので、次のアドレス比較は、より多くのビットを含む。このように、IDを有する変換要求のVAのテーブルウォークは、テーブルウォークマシンのグループ(例えば、130から136)の他の変換要求の1又は複数の他のテーブルウォークと並列に容易にされる。
[コンピュータプラットフォームの例]
【0059】
1つの実施形態において、最大の並列性を容易にするメモリアドレス変換システムの提供に関する機能は、1又は複数のコンピューティングデバイスの使用とともに実行され得る。
図5は、メモリアドレス変換ユニット540をホストするのに使用され得るコンピュータハードウェアプラットフォーム500の機能ブロック図の図示を提供する。
【0060】
コンピュータプラットフォーム500は、システムバス502に接続された、中央処理ユニット(CPU)504、ハードディスクドライブ(HDD)506、ランダムアクセスメモリ(RAM)又は読み取り専用メモリ(ROM)あるいはその両方508、キーボード510、マウス512、ディスプレイ514、及び通信インタフェース516を含んでもよい。
【0061】
1つの実施形態において、HDD506は、本明細書に説明された方式で、メモリアドレス変換ユニット540等のように様々なプロセスを実行し得るプログラムの格納を含む能力を有する。メモリアドレス変換ユニット540は、異なる機能を実行するように構成された様々なモジュールを有し得、そのようなものは
図1及び
図2の文脈において説明されている。例えば、VAからRAへの変換要求を提供するように動作可能な変換リクエスタが存在し得る。現在アクティブなテーブルウォークマシンのステータスを判定するとともにそれに従ってその要求のスリープ及びウェイクステータスを制御するように動作可能なスリープ及びウェイク制御モジュール544が存在し得る。変換リクエスタモジュール542からキャッシュ要求を受信して、アドレス「ヒット」があるか又はアドレス「ミス」が存在するかに応じて、それを、1又は複数のテーブルウォーク(TW)マシン(例えば、548から552)又はスリープ及びウェイク制御モジュール546に提供するように構成された変換キャッシュが存在し得る。これらのモジュールは、本明細書に説明された全ての機能及びその他を実行し得る。
【0062】
モジュール542から552は
図5においてHDD506の一部として示されているが、いくつかの実施形態において、これらのモジュールのうちの1又は複数は、コンピューティングデバイス500のハードウェアにおいて実装され得る。例えば、本明細書に説明されたモジュールは、部分的にハードウェア形態、部分的にソフトウェア形態で実装され得る。すなわち、
図5に示されたメモリアドレス変換ユニット540のコンポーネントのうちの1又は複数は、トランジスタ、ダイオード、キャパシタ、抵抗器、インダクタ、バラクタ及び/又はメモリスタを有する電子回路の形態で実装され得る。言い換えれば、メモリアドレス変換ユニット540は、本明細書に説明された特定のタスク及び機能を実行する1又は複数の特別に設計された電子回路で、CPUのコンポーネント及び/又はRAM/ROM508のモジュールによって実装され得る。
[クラウドプラットフォームの例]
【0063】
上述のように、一体化されたメモリアドレス変換システムを提供することに関する機能は、クラウド同様、分散コンピューティング及び/又はストレージアーキテクチャを含み得る。本開示はクラウドコンピューティングに関する詳細な説明を含むが、本明細書に記載された教示の実装がクラウドコンピューティング環境に限定されないことを理解されたい。むしろ、本開示の実施形態は、現在既知の、又は今後開発される任意の他のタイプのコンピューティング環境と併せて実装することができる。
【0064】
クラウドコンピューティングは、最小の管理労力又はサービスプロバイダとのインタラクションで迅速にプロビジョニング及びリリースすることができる構成可能コンピューティングリソース(例えば、ネットワーク、ネットワーク帯域幅、サーバ、処理、メモリ、ストレージ、アプリケーション、仮想マシン、及びサービス)の共有プールへの簡便なオンデマンドネットワークアクセスを可能にするためのサービス提供のモデルである。本クラウドモデルは、少なくとも5つの特性、少なくとも3つのサービスモデル、及び少なくとも4つの展開モデルを含んでよい。
【0065】
特性は、以下の通りである。
【0066】
オンデマンドセルフサービス:クラウド消費者は、サービスプロバイダとの人的対話を必要とすることなく、必要に応じて自動的に、サーバ時間及びネットワークストレージ等のコンピューティング能力を一方的にプロビジョニングすることができる。
【0067】
幅広いネットワークアクセス:この能力は、ネットワークを介して利用可能であり、異種のシン又はシッククライアントプラットフォーム(例えば、携帯電話、ラップトップ、及びPDA(登録商標))による使用を促す標準メカニズムを通してアクセスされる。
【0068】
リソースプーリング:プロバイダのコンピューティングリソースは、マルチテナントモデルを使用して複数の消費者に役立つようプールされ、異なる物理リソース及び仮想リソースが、需要に従って動的に割り当て及び再割り当てされる。消費者は、概して、提供されたリソースの正確な位置に対して制御又は知識を有していないが、より高いレベルの抽象化(例えば、国、州、又はデータセンタ)において位置を指定することが可能であり得るという点で、一種の位置独立性がある。
【0069】
迅速な弾力性:この能力は、迅速かつ弾力的に、いくつかの事例では自動的にプロビジョニングして、早急にスケールアウトし、かつ迅速にリリースして早急にスケールインすることができる。消費者にとって、多くの場合、プロビジョニングのために利用可能な能力は無制限に見え、任意の時点において任意の量で購入され得る。
【0070】
測定されるサービス:クラウドシステムは、サービスのタイプ(例えば、ストレージ、処理、帯域幅及びアクティブユーザアカウント)に適切な或るレベルの抽象化における計測能力を活用することによって、自動的にリソース使用を制御及び最適化する。リソース使用率が、モニタリング、制御、及び、報告され、こうすることで、利用されるサービスのプロバイダ及び消費者の両方に透明性を提供することができる。
【0071】
サービスモデルは、以下の通りである。
【0072】
ソフトウェアアズアサービス(SaaS):消費者に提供される能力は、クラウドインフラストラクチャ上で稼働するプロバイダのアプリケーションを使用することである。アプリケーションは、ウェブブラウザ(例えば、ウェブベースの電子メール)などのシンクライアントインタフェースを通じて様々なクライアントデバイスからアクセス可能である。消費者は、限定されたユーザ固有のアプリケーション構成設定を考え得る例外として、ネットワーク、サーバ、オペレーティングシステム、ストレージ又はさらには個々のアプリケーション能力を含む、基礎をなすクラウドインフラストラクチャを管理又は制御しない。
【0073】
プラットフォームアズアサービス(PaaS):消費者に提供される能力は、クラウドインフラストラクチャ上に、プロバイダによってサポートされるプログラミング言語及びツールを使用して作成される、消費者が作成又は取得したアプリケーションを展開することである。消費者は、ネットワーク、サーバ、オペレーティングシステム、又はストレージを含む、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、展開されたアプリケーション、及び場合によってはアプリケーションホスティング環境構成に対して制御を有する。
【0074】
インフラストラクチャアズアサービス(IaaS):消費者に提供される能力は、処理、ストレージ、ネットワーク及び他の基本的なコンピューティングリソースをプロビジョニングすることであり、ここで消費者は、オペレーティングシステム及びアプリケーションを含むことができる任意のソフトウェアを展開及び稼働することが可能である。消費者は、基礎をなすクラウドインフラストラクチャを管理又は制御しないが、オペレーティングシステム、ストレージ、展開されたアプリケーションに対する制御及び、場合によっては、選択されたネットワーキングコンポーネント(例えば、ホストファイアウォール)に対する限定的な制御を有する。
【0075】
展開モデルは、以下の通りである。
【0076】
プライベートクラウド:このクラウドインフラストラクチャは、或る組織のためにのみ動作する。それは、当該組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0077】
コミュニティクラウド:このクラウドインフラストラクチャは、いくつかの組織によって共有され、共有される関心事項(例えば、ミッション、セキュリティ要件、ポリシー及びコンプライアンス考慮事項)を有する特定のコミュニティをサポートする。それは、当該組織又はサードパーティによって管理されてよく、オンプレミス又はオフプレミスで存在してよい。
【0078】
パブリッククラウド:このクラウドインフラストラクチャは、一般大衆又は大規模な業界団体に利用可能とされ、クラウドサービスを販売する組織によって所有される。
【0079】
ハイブリッドクラウド:このクラウドインフラストラクチャは、2つ又はそれよりも多くのクラウド(プライベート、コミュニティ、又はパブリック)の複合体であり、2つ又はそれよりも多くのクラウドは、独自のエンティティのままであるが、データ及びアプリケーションのポータビリティ(例えば、クラウド間の負荷分散のためのクラウドバースト)を可能にする標準技術又は独自技術によってともに結合される。
【0080】
クラウドコンピューティング環境は、ステートレス性、低結合性、モジュール性及びセマンティック相互運用性に焦点を当てたサービス指向である。クラウドコンピューティングの中核には、相互接続されたノードからなるネットワークを含むインフラストラクチャが存在する。
【0081】
ここで
図6を参照すると、例示的なクラウドコンピューティング環境600が示されている。図示のように、クラウドコンピューティング環境600は、例えば、携帯情報端末(PDA)もしくは携帯電話654A、デスクトップコンピュータ654B、ラップトップコンピュータ654C、又は自動車コンピュータシステム654Nあるいはその組合せなどのクラウド消費者によって使用されるローカルコンピューティングデバイスが通信することができる1又は複数のクラウドコンピューティングノード610を含む。ノード610は、互いに通信してもよい。それらは、上述したようなプライベートクラウド、コミュニティクラウド、パブリッククラウド、又はハイブリッドクラウド、又はその組み合わせなどの、1又は複数のネットワークにおいて物理的に又は仮想的にグループ化(図示せず)されてよい。これにより、クラウドコンピューティング環境650は、インフラストラクチャ、プラットフォーム、又はソフトウェア、あるいはその組合せを、クラウド消費者がローカルコンピューティングデバイス上にリソースを保持する必要のないサービスとして提供することが可能になる。
図6に示されるコンピューティングデバイス654A-Nのタイプは、単なる例示を意図したものであり、コンピューティングノード610及びクラウドコンピューティング環境650は、任意のタイプのネットワーク及び/又はネットワークアドレス可能接続を介して(例えば、ウェブブラウザを使用して)、任意のタイプのコンピュータ化デバイスと通信し得るが理解される。
【0082】
ここで
図7を参照すると、クラウドコンピューティング環境650(
図6)によって提供される機能抽象化層のセットが示されている。
図7に示す構成要素、層、及び機能は、例示のみを意図し、本開示の実施形態はこれらに限定されないことを予め理解されたい。図示の通り、以下の層及び対応する機能が提供されている。
【0083】
ハードウェア及びソフトウェア層760は、ハードウェアコンポーネント及びソフトウェアコンポーネントを含む。ハードウェアコンポーネントの例には、メインフレーム761、RISC(Reduced Instruction Set Computer)アーキテクチャベースのサーバ762、サーバ763、ブレードサーバ764、ストレージデバイス765、及び、ネットワークならびにネットワークコンポーネント766が含まれる。いくつかの実施形態において、ソフトウェアコンポーネントは、ネットワークアプリケーションサーバソフトウェア767及びデータベースソフトウェア768を含む。
【0084】
仮想化層770は、抽象化層を提供し、この層から仮想エンティティの以下の例、すなわち、仮想サーバ771、仮想ストレージ772、仮想プライベートネットワークを含む仮想ネットワーク773、仮想アプリケーション及びオペレーティングシステム774、ならびに仮想クライアント775が提供されてもよい。
【0085】
一例では、管理層780は、以下に記載の機能を提供することができる。リソースプロビジョニング781は、コンピューティングリソースと、クラウドコンピューティング環境の中でタスクを実行するために利用される他のリソースとを動的に調達することを提供する。計測及び価格設定782は、クラウドコンピューティング環境内でリソースが利用されるのにしたがったコスト追跡と、これらのリソースの消費についての請求書作成又はインボイスの作成とを提供する。1つの例において、これらのリソースは、アプリケーションソフトウェアライセンスを含んでよい。セキュリティは、クラウド消費者及びタスクのアイデンティティ検証、ならびに、データ及び他のリソースの保護を提供する。ユーザポータル783は、消費者及びシステム管理者のために、クラウドコンピューティング環境へのアクセスを提供する。サービスレベル管理784は、必要とされるサービスレベルが満たされるように、クラウドコンピューティングリソース割り当て及び管理を提供する。サービスレベルアグリーメント(SLA)計画及び履行785は、SLAに従って将来の要件が予想されるクラウドコンピューティングリソースの事前準備及び調達を提供する。
【0086】
ワークロード層790は、クラウドコンピューティング環境が利用され得る機能の例を提供する。この層から提供され得るワークロード及び機能の例は、本明細書に説明されたように、マッピング及びナビゲーション791;ソフトウェア開発及びライフサイクル管理792;仮想教室教育配信793;データ分析処理794;トランザクション処理795;及び変換エンジン796を含む。
[結論]
【0087】
本教示の様々な実施形態の説明を例示の目的で提示してきたが、網羅的であることも、開示された実施形態に限定されることも意図されていない。説明されている実施形態の範囲及び主旨から逸脱することのない多くの修正及び変形が、当業者には明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の適用例、又は市場で見られる技術を超える技術的な改良を最もよく説明するように、又は本明細書で開示される実施形態を他の当業者が理解することが可能になるように選択されたものである。
【0088】
上記では最良の状態又は他の例あるいはその両方であると考えられるものについて説明したが、その中で様々な修正を加えることができること、本明細書に開示された主題が様々な形式及び例で実装され得ること、及び教示を多くの用途に適用することができ、本明細書にはその用途の一部のみが記載されていることが理解される。以下の特許請求の範囲は、本教示の真の範囲内にありとあらゆる用途、修正、及び変形を特許請求することを意図している。
【0089】
本明細書で説明したコンポーネント、ステップ、特徴、対象物、利益、及び利点は、単なる例示にすぎない。それらのいずれも、それらに関連する説明も、保護の範囲を限定することを意図したものではない。本明細書において様々な利点を説明してきたが、全ての実施形態が必ずしも全ての利点を含むわけではないことが理解されよう。別様に明記しない限り、以下の特許請求の範囲を含め、本明細書に記載されている全ての測定値、値、定格、位置、大きさ、サイズ、及び他の仕様は概算であり、正確ではない。それらは、それらが関連する機能及びそれらが関連する技術分野において慣習的であるものと一致する合理的な範囲を有することを意図している。
【0090】
他の多くの実施形態もまた企図される。これらには、より少ない、追加の、又は異なる、あるいはその組合せのコンポーネント、段階、特徴、対象物、利益、及び利点を有する実施形態が含まれる。これらには、コンポーネント又はステップあるいはその両方が、別々に構成されるか、又は順序付けされるか、あるいはその両方である実施形態も含まれる。
【0091】
本開示の態様は、本開示の実施形態に係る方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図もしくはブロック図又はその組み合わせを参照しながら本明細書で説明される。フローチャート図及び/又はブロック図の各ブロック、及びフローチャート図及び/又はブロック図におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得ることが理解されるであろう。
【0092】
これらのコンピュータ可読プログラム命令は、機械を生成するために適切に構成されたコンピュータ、専用コンピュータ又は他のプログラマブルデータ処理装置のプロセッサに提供され得、その結果、コンピュータ又は他のプログラマブルデータ処理装置のプロセッサを介して実行される当該命令は、フローチャートもしくはブロック図の単数又は複数のブロック又はその組み合わせにおいて指定された機能/動作を実装するための手段を作成する。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラマブルデータ処理装置、もしくは他のデバイス又はその組み合わせに、特定の方式で機能するよう指示できるコンピュータ可読記憶媒体に保存され得る。それにより、命令を保存したコンピュータ可読記憶媒体は、フローチャートもしくはブロック図又はその組み合わせの単数又は複数のブロックにおいて指定された機能/動作の態様を実装する命令を含む、製品を含む。
【0093】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブルデータ処理装置、又は他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、又は他のデバイス上で一連の動作ステップを実行させて、コンピュータ実装プロセスを生成し得て、その結果、コンピュータ、他のプログラマブル装置、又は他のデバイス上で実行される命令が、フローチャート及び/又はブロック図の単数又は複数のブロックで指定された機能/動作を実装する。
【0094】
本明細書の図面内のコールフロー、フローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法及びコンピュータプログラム製品の考えられる実装のアーキテクチャ、機能及び動作を示す。これに関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1又は複数の実行可能命令を含んだ命令のモジュール、セグメント、又は一部を表し得る。いくつかの代替的な実装形態において、ブロックに記されている機能は、図面に記されている順序とは異なる順序で行われ得る。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行され得るか、又は、関連する機能に応じてブロックが逆の順序で実行されることもあり得る。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図におけるブロックの組み合わせが、指定された機能又は動作を行うか、又は特殊目的ハードウェア及びコンピュータ命令の組み合わせを実行する、特殊目的ハードウェアベースのシステムによって実装され得ることにも留意されたい。
【0095】
前述の内容を例示的な実施形態と併せて説明してきたが、「例示的」という用語は、最良又は最適ではなく単なる例を意味するものであることが理解される。すぐ上に述べた場合を除き、記載又は図示されているものは、特許請求の範囲に記載されているかどうかにかかわらず、任意のコンポーネント、ステップ、特徴、対象物、利益、利点、又は均等物を公衆へ提供することを意図するものではなく、そのように解釈されるべきではない。
【0096】
本明細書で使用される用語及び表現は、本明細書に特定の意味について別段の記載がある場合を除いて、対応するそれぞれの調査及び研究の分野に関してそのような用語及び表現に与えられる通常の意味を有することが理解されよう。第1及び第2などの関係語は、あるエンティティ又はアクションを、そのようなエンティティ間又はアクション間の任意の実際のそのような関係性もしくは順序を必ずしも要求又は暗示することなく、別のエンティティ又はアクションと区別するためにのみ使用されることがある。「含む(comprises)」、「含む(comprising)」という用語、又は任意のそれらの他の変形は、要素のリストを含むプロセス、方法、物品、又は装置が、それらの要素だけを含むのではなく、そのようなプロセス、方法、物品、又は装置に固有ではない、又は明示的に記載されていない他の要素を含み得るように、非排他的な包含を対象とすることを意図している。「a」又は「an」が先行する要素は、さらなる制約がない場合、その要素を含むプロセス、方法、物品、又は装置における追加の同一の要素の存在を排除するものではない。
【0097】
読者が技術的開示の性質を迅速に確認できるようにするために、本開示の要約書が提供されている。要約書は、特許請求の範囲の範囲又は意味を解釈又は限定するためには使用されないとの理解に基づいて提出されるものである。また、前述の発明を実施するための形態では、本開示を簡素化する目的で、様々な実施形態において様々な特徴がともにグループ化されていることが分かる。この開示方法は、特許請求された実施形態が各請求項に明示的に記載されているよりも多くの特徴を有するという意図を反映していると解釈されるべきではない。むしろ、以下の特許請求の範囲が表しているように、発明の主題は、開示された単一の実施形態の全ての特徴より少ないところにある。したがって、以下の特許請求の範囲は、ここで発明を実施するための形態に組み込まれ、各請求項は別個に特許請求される主題として独立している。
【手続補正書】
【提出日】2024-03-12
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を受信する段階;
前記受信したVAを、テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較する段階;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに変換リクエスタモジュールに送信する段階;
前記所与のテーブルウォークマシンがその変換レベルを完了したと判定する際に、前記IDを有するウェイクアップ信号を前記変換リクエスタモジュールに送信して、前記スリープ状態に置く変換要求のウェイクアップ及び処理をトリガする段階;及び
前記IDを有する前記変換要求の前記VAのテーブルウォークを、前記テーブルウォークマシンのグループの他の変換要求の1又は複数の他のテーブルウォークと並列に提供する段階
を備える、複数のページサイズ環境におけるメモリアドレス変換を提供する方法。
【請求項2】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して:前記受信したVAの仮想アドレスビットを前記現在アクティブなテーブルウォークの変換レベルにおけるアドレスの範囲と比較する段階を備える、請求項1に記載の方法。
【請求項3】
各アクティブテーブルウォークについて、前記テーブルウォークの変換レベルを、アドレス衝突が存在するかどうかを判定するために比較するべきアドレスビットの数を判定するのに使用する段階をさらに備える、請求項1に記載の方法。
【請求項4】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と比較する前記段階は、各現在アクティブなテーブルウォークに対して
、アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズのビット境界まで比較する段階を含む、請求項1に記載の方法。
【請求項5】
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在しないと判定する際に、処理されるべき前記変換要求を、前記テーブルウォークマシンのグループのテーブルウォークマシンによって直接送信する段階をさらに備える、請求項1に記載の方法。
【請求項6】
前記変換要求を受信する際に、変換キャッシュモジュールによって、前記VAの前記変換要求が以前に成功裏に処理されたかどうかを判定する段階;及び
前記VAの前記変換要求が以前に成功裏に処理されていないと判定した際に、前記変換要求を、1又は複数のテーブルウォークマシンに直接送信する段階
をさらに備える、請求項1に記載の方法。
【請求項7】
前記変換要求は、
ハッシュされたページテーブル(HPT)要求;
セグメントテーブル要求;
ネストされていない基数要求;又は
ネストされた基数要求
のうちの少なくとも1つを備える、請求項1に記載の方法。
【請求項8】
前記完了した変換レベルは、レベル1の基数木ディレクトリベース(RTDB)であり、これは、第1基数変換テーブルのベースアドレスとして使用される、請求項1に記載の方法。
【請求項9】
次のレベルの前記所与のテーブルウォークマシンは、ページテーブルエントリ(PTE)であり、これは、次の範囲の変換を定義するために使用される、請求項1に記載の方法。
【請求項10】
メモリアドレス変換システムであって、
仮想アドレス(VA)から物理メモリの実アドレス(RA)への変換要求を提供するように構成されている変換リクエスタモジュール;
前記変換リクエスタモジュールに連結され且つ前記変換リクエスタモジュールから前記変換要求を受信するように構成されている変換キャッシュモジュール;
前記変換キャッシュモジュール及び前記変換リクエスタモジュールに連結され且つテーブルウォークを実行するように構成されているテーブルウォークマシンのグループ;及び
前記変換リクエスタモジュール
、前記変換キャッシュモジュール、及び前記テーブルウォークマシ
ンのグループに連結されたスリープ及びウェイク制御モジュール
を備え、前記スリープ及びウェイク制御モジュールは:
前記受信したVAを、前記テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較すること;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに前記変換リクエスタモジュールに送信すること
を行うように構成され;
ここで、各テーブルウォークマシンは、その変換レベルの完了の際に、識別番号(ID)を有するウェイクアップ信号を前記変換リクエスタモジュールに提供し、それによって、対応するIDを有する現在スリープ中の変換要求のウェイクアップ及び処理をトリガし、前記テーブルウォークマシンのグループ内において並列した変換テーブルウォークを提供するように構成されている
システム。
【請求項11】
前記システムは、複数のページサイズをサポートする、請求項10に記載のシステム。
【請求項12】
前記受信したVAを前記現在アクティブなテーブルウォークの前記VA'と前記比較することは、各現在アクティブなテーブルウォークに対して、前記受信したVAの仮想アドレスビットを前記現在アクティブなテーブルウォークの変換レベルにおけるアドレスの範囲と比較することを含む、請求項10に記載のシステム。
【請求項13】
前記スリープ及びウェイク制御モジュールは、各アクティブテーブルウォークについて、前記テーブルウォークの変換レベルを、アドレス衝突が存在するかどうかを判定するために比較するべきアドレスビットの数を判定するのに使用するように構成されている、請求項10に記載のシステム。
【請求項14】
前記受信したVAの、前記現在アクティブなテーブルウォークの前記VA'との前記スリープ及びウェイク制御モジュールによる前記比較は、各現在アクティブなテーブルウォークに対して
、アドレスの最上位ビット(MSB)を、サポートされている最も大きいページサイズのビット境界まで比較することを含む、請求項10に記載のシステム。
【請求項15】
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在しないと判定する際に、処理されるべき前記変換要求を、前記テーブルウォークマシンのグループの前記所与のテーブルウォークマシンによって直接送信することをさらに備える、請求項10に記載のシステム。
【請求項16】
前記変換キャッシュモジュールは、
前記変換要求を受信する際に、前記VAの前記変換要求が以前に成功裏に処理されたかどうかを判定すること;及び
前記VAの前記変換要求が以前に成功裏に処理されていないと判定した際に、前記変換要求を、1又は複数のテーブルウォークマシンに直接送信すること
を行うようにさらに構成されている、請求項10に記載のシステム。
【請求項17】
前記変換リクエスタモジュールは、以下の変換要求、すなわち:
ハッシュされたページテーブル(HPT)要求;
セグメントテーブル要求;
ネストされていない基数要求;又は
ネストされた基数要求
のうちの少なくとも1つを提供するように構成されている、請求項10に記載のシステム。
【請求項18】
前記完了した変換レベルは、レベル1の基数木ディレクトリベース(RTDB)であり、これは、第1基数変換テーブルのベースアドレスとして使用される;及び
前記スリープ及びウェイク制御モジュールは、前記レベル1のRTDBを第1基数変換テーブルのベースアドレスとして使用するように構成されている、請求項10に記載のシステム。
【請求項19】
プロセッサ;
前記プロセッサに連結された物理メモリ;
前記プロセッサに連結され、且つ
仮想アドレス(VA)から前記物理メモリの実アドレス(RA)への変換要求を受信すること;
前記受信したVAを、テーブルウォークマシンのグループの全ての現在アクティブなテーブルウォークのVA'と比較すること;及び
前記比較に基づいて、前記テーブルウォークマシンのグループの所与のテーブルウォークマシン内にアドレス一致が存在すると判定する際に、前記変換要求を、スリープ状態に置くために、識別番号(ID)とともに変換リクエスタモジュールに送信すること;
前記所与のテーブルウォークマシンがその変換レベルを完了したと判定する際に、前記IDを有するウェイクアップ信号を前記変換リクエスタモジュールに送信して、前記スリープ状態に置く変換要求のウェイクアップ及び処理をトリガすること;及び
前記IDを有する前記変換要求の前記VAのテーブルウォークを、前記テーブルウォークマシンのグループの他の変換要求の1又は複数の他のテーブルウォークと並列に提供すること
を行うように構成されているメモリアドレス変換システム
を備える、コンピューティングデバイス。
【請求項20】
前記メモリアドレス変換システムは、複数のページサイズをサポートする、請求項19に記載のコンピューティングデバイス。
【請求項21】
情報処理システム
に、請求項1から9のいずれ
か一項に記載の方
法を実
行させるためのコンピュータプログラ
ム。
【国際調査報告】