(57)【特許請求の範囲】
【請求項１】
ハードウェアテーブルウォーク(HWTW)を実行することに関連する処理オーバーヘッドを低減するコンピュータシステムであって、
ホストオペレーティングシステム(OS)およびハイパーバイザを実行する少なくとも1つの中央処理装置(CPU)であって、前記ハイパーバイザは、CPU上の少なくとも第1のゲストOSの実行を制御し、前記ハイパーバイザは、前記第1のゲストOSに関連付けられた少なくとも第1の仮想マシン(VM)を実行する、CPUと、
前記CPUと通信状態にある物理メモリであって、前記物理メモリは、物理アドレス(PA)によってアドレス指定可能である物理メモリロケーションを有し、少なくとも1つのページテーブルが、物理メモリの物理メモリロケーションに記憶され、前記ページテーブルは、中間物理アドレス(IPA)を、物理メモリの実際のPAにマップするためのマッピングに対応するページテーブルエントリを備える、物理メモリと、
前記ページテーブルエントリのサブセットを記憶する少なくとも1つの変換ルックアサイドバッファ(TLB)と、
前記CPU、前記物理メモリ、および前記TLBと通信状態にある少なくとも1つのメモリ管理ユニット(MMU)と
を備え、
前記MMUは、IPAに関連するページテーブルエントリが前記TLBの中に記憶されているか否かを判定し、
前記IPAに関連するページテーブルエントリが前記TLBの中に記憶されていない場合、TLBミスが生じており、
TLBミスが生じた場合、前記MMUは、読み取られるべきページテーブルデータが記憶されている前記物理メモリのPAを予測し、
前記MMUは、PA=f(IPA)である前記IPAの関数fとして前記PAを予測し、かつ、前記関数fは、IPAの範囲にわたって前記IPAと前記予測されるPAの間の1対1マッピングをもたらし、
前記ハイパーバイザは、少なくとも第2のVMを実行しており、前記関数fは、f = IPA + Offset_function(VMID)であり、ここで、VMIDは、前記第1のVMおよび前記第2のVMにわたる一意識別子であり、かつ、Offset_functionは、前記VMIDに関連する特定のオフセット値に基づいて選択された出力を有する関数である、コンピュータシステム。
【請求項２】
モバイルデバイスの一部である請求項1に記載のコンピュータシステム。
【請求項３】
前記モバイルデバイスは、モバイル電話機である請求項2に記載のコンピュータシステム。
【請求項４】
前記モバイル電話機は、スマートフォンである請求項3に記載のコンピュータシステム。
【請求項５】
ハードウェアテーブルウォーク(HWTW)を実行することに関連する処理オーバーヘッドを低減する方法であって、
少なくとも1つの中央処理装置(CPU)、少なくとも1つの物理メモリ、少なくとも1つの変換ルックアサイドバッファ(TLB)、および少なくとも1つのメモリ管理ユニット(MMU)を提供するステップであって、前記CPU、前記物理メモリ、前記TLB、および前記MMUは、互いに通信状態にあり、前記CPUは、ホストオペレーティングシステム(OS)およびハイパーバイザを実行しており、前記ハイパーバイザは、前記CPU上の少なくとも第1のゲストOSの実行を制御しており、前記ハイパーバイザは、前記第1のゲストOSに関連付けられた少なくとも第1の仮想マシン(VM)を実行しており、前記物理メモリは、物理アドレス(PA)によってアドレス指定可能である物理メモリロケーションを有し、少なくとも1つのページテーブルが、前記物理メモリの物理メモリロケーションに記憶され、前記ページテーブルは、中間物理アドレス(IPA)を、前記物理メモリの実際のPAにマップするためのマッピングに対応するページテーブルエントリを備え、前記TLBは、前記ページテーブルエントリのサブセットを記憶する、ステップと、
前記MMUにおいて、
IPAに関連するページテーブルエントリが前記TLBの中に記憶されているか否かを判定するステップと、
前記IPAに関連するページテーブルエントリが前記TLBの中に記憶されていないという判定が行われた場合、TLBミスが生じたと決定するステップと、
TLBミスが生じたという決定が行われた場合、読み取られるべきページテーブルデータが記憶されている前記物理メモリのPAを予測するステップと
を備え、
前記MMUは、PA=f(IPA)である前記IPAの関数fとして前記PAを予測し、かつ、前記関数fは、IPAの範囲にわたって前記IPAと前記予測されるPAの間の1対1マッピングをもたらし、
前記ハイパーバイザは、少なくとも第2のVMを実行しており、前記関数fは、f = IPA + Offset_function(VMID)であり、ここで、VMIDは、前記第1のVMおよび前記第2のVMにわたる一意識別子であり、かつ、Offset_functionは、前記VMIDに関連する特定のオフセット値に基づいて選択された出力を有する関数である、方法。
【請求項６】
前記ハイパーバイザは、前記CPU上の少なくとも第1のゲストOSおよび第2のゲストOSの実行を制御し、前記ハイパーバイザは、前記第2のゲストOSに関連付けられた少なくとも第2のVMを実行することもしており、PAを予測するのに前記MMUによって使用される前記関数fは、前記第1のVMに関連するミスに関するPAの第1の範囲内にあるPAを予測し、かつ前記第2のVMに関連するミスに関するPAの第2の範囲内にあるPAを予測し、PAの前記第1の範囲と前記第2の範囲は、互いに異なる請求項5に記載の方法。
【請求項７】
モバイルデバイスのコンピュータシステムによって実行される請求項5に記載の方法。
【請求項８】
前記モバイルデバイスは、モバイル電話機である請求項7に記載の方法。
【請求項９】
前記モバイル電話機は、スマートフォンである請求項8に記載の方法。
【請求項１０】
コンピュータに請求項5乃至9のいずれか1項に記載の方法を実行させるための命令を含むコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムに関し、より詳細には、ハードウェアテーブルウォーク(hardware table walk: HWTW)を実行するのに要求される時間およびコンピューティングリソースの量を低減するためのコンピュータシステム、およびコンピュータシステムにおいて使用するための方法に関する。
【背景技術】
【０００２】
最新のコンピュータシステムは、メモリ管理ユニット(MMU)を使用して、たとえば、ソリッドステートメモリデバイスなどの1つまたは複数の物理メモリデバイスにデータを書き込むこと、およびそのような物理メモリデバイスからデータを読み取ることを管理する。コンピュータシステムのMMUは、コンピュータシステムの中央処理装置(CPU)に、CPUが、アプリケーションプログラムのすべてに、しばしば、断片化した、または不連続である物理メモリアドレス空間を共有させるのではなく、CPU自らの専用の連続的な仮想メモリアドレス空間内で各アプリケーションプログラムを実行することを許す仮想メモリを提供する。MMUの目的は、仮想メモリアドレス(VA)を、CPUのための物理メモリアドレス(PA)に変換することである。CPUは、MMUに対してVAを直接に読み取ること、および書き込むことを行うことによってPAを間接的に読み取ること、および書き込むことを行い、MMUが、それらのVAをPAに変換し、次に、PAを書き込む、または読み取る。
【０００３】
これらの変換を実行するために、MMUは、システムメインメモリの中に記憶されたページテーブルにアクセスする。ページテーブルは、ページテーブルエントリから構成される。ページテーブルエントリは、VAをPAにマップするのにMMUによって使用される情報である。MMUは、最近、使用されたマッピングをキャッシュするのに使用されるキャッシュメモリ要素である、変換ルックアサイドバッファ(TLB:Translation lookaside buffer)を、通常、含む。MMUが、VAをPAに変換する必要がある場合、MMUはまず、TLBを調べて、そのVAに対するマッチが存在するかどうかを判定する。存在する場合、MMUは、TLBの中で見出されたマッピングを使用して、PAを計算し、次に、そのPAにアクセスする(すなわち、そのPAを読み取る、または書き込む)。このことは、TLB「ヒット」として知られている。MMUが、TLBの中でマッチを見出さない場合、このことは、TLB「ミス」として知られている。
【０００４】
TLBミスが生じた場合、MMUは、ハードウェアテーブルウォーク(HWTW)として知られていることを実行する。HWTWは、MMUの中で対応するページテーブルを見出す「テーブルウォーク」を実行し、次に、そのページテーブルの中の複数のロケーションを読み取って、対応するVA-PAアドレスマッピングを見出すことを含む、時間がかかり、計算コストが高いプロセスである。MMUは、次に、そのマッピングを使用して、対応するPAを計算し、そのマッピングをTLBに返すように書き込む。
【０００５】
オペレーティングシステム(OS)仮想化を実施するコンピュータシステムにおいて、一般にハイパーバイザとも呼ばれる仮想メモリモニタ(VMM)が、コンピュータシステムのハードウェアとコンピュータシステムのシステムOSの間に介在させられる。ハイパーバイザは、特権モードで実行され、1つまたは複数のゲスト高レベルOSをホストすることができる。そのようなシステムにおいて、OS上で実行されるアプリケーションプログラムは、仮想メモリの第1の層のVAを使用してメモリをアドレス指定し、ハイパーバイザ上で実行されるOSは、仮想メモリの第2の層の中間物理アドレス(IPA)を使用してメモリをアドレス指定する。MMUにおいて、ステージ1(S1)変換が、各VAをIPAに変換するのに実行され、ステージ2(S2)変換が、各IPAをPAに変換するのに実行される。
【０００６】
そのような変換を実行している際にTLBミスが生じた場合、マルチレベルの2次元(2D)HWTWが、対応するIPAおよびPAを計算するのに必要とされるテーブルエントリを得るように実行される。これらのマルチレベルの2D HWTWを実行することは、パフォーマンス上のペナルティを、通常、もたらす、MMUに関する相当な量の計算オーバーヘッドをもたらし得る。
【０００７】
図1は、読取り変換を実行している間にTLBミスが生じた場合に実行される、知られている3レベルの2D HWTWの絵画的例示である。図1に示されるHWTWは、データが物理メモリの中に記憶されているPAを獲得するのに15回のテーブルルックアップの実行を要求する3レベルの2D HWTWに関する最悪シナリオを表す。この例に関して、コンピュータシステムのMMUは、少なくとも1つのゲスト高レベルOS(HLOS)をホストしているハイパーバイザを実行しており、このHLOSは、少なくとも1つのアプリケーションプログラムを実行している。そのような構成において、ゲストHLOSによって割り当てられているメモリは、システムの実際の物理メモリではなく、代わりに、前述した中間物理メモリである。ハイパーバイザが、実際の物理メモリを割り当てる。したがって、各VAは、IPAに変換され、このIPAが、次に、読み取られるデータが実際に記憶される実際の物理メモリのPAに変換される。
【０００８】
このプロセスは、MMUが、S1ページグローバルディレクトリ(PGD)IPA2を受け取ることから始まる。この最悪シナリオ例に関して、MMUが、マッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、HWTWを実行しなければならない。このHWTWは、IPA2をPAにコンバートするのに必要とされるマッピングを獲得する3回のS2テーブルルックアップ3、4、および5、ならびにそのPAを読み取る1回のさらなるルックアップ6を実行することを含む。テーブルルックアップ3、4、および5は、それぞれ、S2 PGD、S2 ページミドルディレクトリ(PMD)、およびS2 ページテーブルエントリ(PTE)を読み取ることを含む。ルックアップ6でPAを読み取ることは、MMUにS1 PMD IPA7をもたらす。この最悪シナリオ例に関して、MMUが、S1 PMD IPA7とのマッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、別のHWTWを実行しなければならない。このHWTWは、S1 PMD IPA7をPAにコンバートするのに必要とされるマッピングを獲得する3回のS2テーブルルックアップ8、9、および11、ならびにそのPAを読み取る1回のさらなるルックアップ12を実行することを含む。テーブルルックアップ8、9、および11は、それぞれ、S2 PGD、S2 PMD、およびS2 PTEを読み取ることを含む。ルックアップ12でPAを読み取ることは、MMUにS1 PTE IPA13をもたらす。
【０００９】
この最悪シナリオ例に関して、MMUが、S1 PTE IPA13とのマッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、別のHWTWを実行しなければならない。このHWTWは、S1 PTE IPA13をPAにコンバートするのに必要とされるマッピングを獲得する3回のS2テーブルルックアップ14、15、および16、ならびにそのPAを読み取る1回のさらなるルックアップ17を実行することを含む。テーブルルックアップ14、15、および16は、それぞれ、S2 PGD、S2 PMD、およびS2 PTEを読み取ることを含む。ルックアップ17でPAを読み取ることは、MMUに実際のIPA18をもたらす。この最悪シナリオ例に関して、MMUが、実際のIPA18とのマッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、別のHWTWを実行しなければならない。このHWTWは、実際のIPA18をPAにコンバートするのに必要とされるマッピングを獲得する3回のS2テーブルルックアップ19、21、および22を実行することを含む。テーブルルックアップ19、21、および22は、それぞれ、S2 PGD、S2 PMD、およびS2 PTEを読み取ることを含む。次に、そのPAが読み取られて、対応する読取りデータが獲得される。ルックアップ18でPAを読み取ることは、MMUにS1 PTE IPA13をもたらす。
【００１０】
このため、3レベルの2D HWTWに関する最悪シナリオにおいて、大量の時間を消費し、パフォーマンス上のペナルティをもたらす大量の計算オーバーヘッドである、12回のS2テーブルルックアップ、および3回のS1テーブルルックアップが実行されることが分かる。たとえば、TLBのサイズを大きくすること、複数のTLBを使用すること、フラットなネストされたページテーブルを使用すること、シャドウページングもしくは投機的シャドウページングを使用すること、およびページウォークキャッシュを使用することを含め、様々な技法およびアーキテクチャが、HWTWを実行することに関与する時間および処理オーバーヘッドの量を低減するのに使用されてきた。これらの技法およびアーキテクチャのすべては、HWTWを実行することに関連する処理オーバーヘッドを低減することができる一方で、しばしば、コンピュータシステムのどこか別の所で処理オーバーヘッドの増加をもたらす。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
したがって、HWTWを実行するのに要求される時間およびコンピューティングリソースの量を低減するコンピュータシステムおよび方法の必要性が存在する。
【課題を解決するための手段】
【００１２】
本発明は、HWTWを実行するのに要求される時間およびコンピューティングリソースの量を低減するためのコンピュータシステム、およびコンピュータシステムにおいて使用するための方法を対象とする。このコンピュータシステムは、少なくとも1つの中央処理装置(CPU)と、少なくとも1つの物理メモリと、少なくとも1つのTLBと、少なくとも1つのMMUとを備える。CPUは、ホストOSおよびハイパーバイザを実行する。ハイパーバイザは、CPU上の少なくとも第1のゲストOSの実行を制御する。ハイパーバイザは、第1のゲストOSに関連付けられた少なくとも第1のVMを実行する。物理メモリは、PAによってアドレス指定可能である物理メモリロケーションを有する。少なくとも1つのページテーブルが、物理メモリの物理メモリロケーションに記憶される。このページテーブルは、IPAを、物理メモリの実際のPAにマップするためのマッピングに対応するページテーブルエントリを備える。TLBは、ページテーブルエントリのサブセットを記憶する。メモリアクセスが実行されている際、MMUが、IPAに関連するページテーブルエントリがTLBの中に記憶されているか否かを判定する。そのIPAに関連するページテーブルエントリがTLBの中に記憶されていない場合、TLBミスが生じている。TLBミスが生じた場合、MMUは、そのIPAに関連するデータが記憶されている物理メモリのPAを予測し、これにより、HWTWを実行してそのPAを計算する必要性をなくす。
【００１３】
この方法は、
MMUにおいて、
IPAに関連するページテーブルエントリがTLBの中に記憶されているか否かを判定すること、
そのIPAに関連するページテーブルエントリがTLBの中に記憶されていないという判定が行われた場合、TLBミスが生じたと決定すること、および
TLBミスが生じたという決定が行われた場合、そのIPAに関連するデータが記憶されている物理メモリのPAを予測することを備える。
【００１４】
また、本発明は、HWTWを実行することに関連する処理オーバーヘッドを低減するための、1つまたは複数のプロセッサによって実行されるためのコンピュータコードを記憶するコンピュータ可読媒体(CRM)も提供する。このコンピュータコードは、第1のコード部分と、第2のコード部分とを備える。第1のコード部分は、IPAに関連するページテーブルエントリがTLBの中に記憶されているか否かを判定する。そのIPAに関連するページテーブルエントリがTLBの中に記憶されていないという判定が行われた場合、第1のコード部分は、TLBミスが生じたと決定する。第2のコード部分は、第1のコード部分が、TLBミスが生じたと決定した場合、そのIPAに関連するデータが記憶されている物理メモリのPAを予測する。
【００１５】
これら、および他の特徴および利点は、後段の説明、図面、および特許請求の範囲から明白となろう。
【図面の簡単な説明】
【００１６】
【図１】本発明の例示的な実施形態によるコンピュータシステムを示すブロック図である。
【図２】HWTWを実行するのに要求される時間およびコンピューティングリソースの量を低減するための方法を実行するように構成された例示的な、または例としての実施形態によるコンピュータシステムを示すブロック図である。
【図３】HWTW読取りトランザクションを実行するのに要求される時間および処理オーバーヘッドの量を低減するように図2に示されるハイパーバイザによって実行される、例示的な実施形態による方法を表すフローチャートである。
【図４】例示的な実施形態による図3に示される流れ図によって表される方法を使用してHWTW読取りトランザクションが実行される様態を示す絵画的図である。
【図５】図3に示される流れ図によって表される方法を実行する例示的な実施形態によるハードウェアプレディクタを示すブロック図である。
【図６】図2に示されるコンピュータシステムが組み込まれたモバイルスマートフォンを示すブロック図である。
【発明を実施するための形態】
【００１７】
本明細書で説明される例示的な実施形態によれば、HWTWを実行するのに要求される時間およびコンピューティングリソースの量を低減するためのコンピュータシステム、およびコンピュータシステムにおいて使用するための方法が提供される。本明細書で説明される実施形態によれば、S1ページテーブルが記憶されているPAを見出すようにS2 HWTWを実行している際にTLBミスが生じた場合、MMUが、IPAを使用して対応するPAを予測し、これにより、S2テーブルルックアップのいずれを実行する必要性も回避する。このことは、これらのタイプのHWTW読取りトランザクションを実行している際に実行される必要があるルックアップの回数を大幅に減らし、このことが、これらのタイプのトランザクションを実行することに関連する処理オーバーヘッドおよびパフォーマンス上のペナルティを大幅に低減する。
【００１８】
図2は、S1ページテーブルが記憶されているPAを見出すようにS2 HWTWを実行するのに要求される時間およびコンピューティングリソースの量を低減するための方法を実行するように構成された例示的な、または例としての実施形態によるコンピュータシステム100のブロック図を示す。図2に示されるコンピュータシステム100の例は、CPUクラスタ110、メインメモリ120、ビデオカメラディスプレイ130、グラフィックス処理装置(GPU)140、ペリフェラルコネクトインターフェースエクスプレス(PCIe:peripheral connect interface express)入出力(IO)デバイス150、複数のIO TLB(IOTLB)160、およびシステムバス170を含む。CPUクラスタ110は、MMU110bを各々が有する複数のCPUコア110aを有する。各CPUコア110aは、マイクロプロセッサまたは他の任意の適切なプロセッサであり得る。ビデオカメラディスプレイ130は、システムMMU(SMMU)130aを有する。GPU140は、GPU140自らのSMMU140aを有する。同様に、PCIe IOデバイス150は、PCIe IOデバイス150自らのSMMU150aを有する。
【００１９】
プロセッサコア110aのMMU110bは、VAをIPAに変換するタスク、およびIPAをPAに変換するタスクを実行するように構成される。ページテーブルは、メインメモリ120の中に記憶される。MMU110b、ならびにSMMU130a、140a、および150aの各々は、メインメモリ120の中に記憶されるページテーブルのサブセットを記憶する各々の自らのTLB(簡明のため図示せず)を有する。この例示的な実施形態によれば、TLBミスが生じた後、MMU110bが、IPAを処理してPAを予測する予測アルゴリズムを実行する。この予測アルゴリズムは、次のように数学的に表される。
PA=f(IPA) (式1)
ただし、fは、数学関数である。この目的で使用され得る関数fは、図5を参照して詳細に説明される。「予測する」という句は、本明細書でその句が使用される際、「決定する」を意味して、確率的決定も確率論的決定も暗示しないが、確率的決定または確率論的決定が、本発明の範囲から必ずしも除外されるわけではない。予測アルゴリズムによって行われる予測は、通常、ただし、必然的にではなく、決定論的である。
【００２０】
CPUクラスタ110は、システムOS200および仮想マシンモニタ(VMM)、つまり、ハイパーバイザ210を実行する。ハイパーバイザ210は、変換を実行することに加えて、MMU110b、ならびにSMMU130a、140a、および150aの中に記憶されたページテーブルを更新することを含む変換タスクを管理する。また、ハイパーバイザ210は、ゲストHLOS220および/またはゲストデジタル権利マネージャ(DRM)230も実行する。HLOS220は、ビデオカメラディスプレイ130に関連付けられることが可能であり、DRM230は、GPU140に関連付けられることが可能である。ハイパーバイザ210は、HLOS220およびDRM230を管理する。
【００２１】
TLBミスが生じた後、ハイパーバイザ210が、予測アルゴリズムを実行してIPAをPAにコンバートするようにMMU110b、ならびにSMMU130a、140a、および150aを構成する。そのような事例において、TLBミスに関連するVAに対する開始IPAは、S1変換が通常、始まる通常の様態でCPUクラスタ110のハードウェアベースレジスタ(簡明のため図示せず)から獲得される。次に、予測アルゴリズムが、後段でより詳細に説明されるように式1によりPAを予測する。SMMU130a、140a、および150aを管理し、更新するのに、CPU MMU110bが、バス170を介してSMMU130a、140a、および150aに分散仮想メモリ(DVM)メッセージを送信する。MMU110b、ならびにSMMU130a、140a、および150aは、メインメモリ120にアクセスしてHWTWを実行する。
【００２２】
例示的な実施形態によれば、CPU MMU110bが、MMUトラフィックを3つのトランザクションクラス、すなわち、(1)S1ページテーブルが記憶されているPAを見出すS2 HWTW読取りトランザクション、(2)クライアントトランザクション、および(3)アドレス障害(AF)/ダーティフラグ書込みトランザクションに分類する。この例示的な実施形態によれば、予測アルゴリズムは、クラス1トランザクション、すなわち、HWTW読取りトランザクションに関してIPAをPAにコンバートするにすぎない。他のすべてのクラスのトランザクションに関しては、この例示的な実施形態によれば、MMU110b、ならびにSMMU130a、140a、および150aが、通常の様態で他のすべての変換(たとえば、S1変換およびクライアントトランザクションS2変換)を実行する。
【００２３】
図3は、HWTW読取りトランザクションを実行するのに要求される時間および処理オーバーヘッドの量を低減するようにCPU MMU110bによって実行される、例示的な実施形態による方法を表す流れ図である。ブロック301は、CPUクラスタ110が起動し、システムOS200およびハイパーバイザ210を実行することを開始すると、通常、生じる方法開始を表す。MMU110bは、ブロック302によって示されるように、トラフィックを前述したトランザクションクラス(1)、(2)、および(3)に分類する。この分類プロセスは、トランザクションを、これら3つよりも多くのクラス、または少ないクラスに分類することも可能であるが、分類のうちの少なくとも1つは、クラス(1)トランザクション、すなわち、S1ページテーブルが記憶されているPAを見出すS2 HWTW読取りトランザクションである。ブロック303によって表されるステップで、クラス(1)トランザクションを実行している際にTLBミスが生じたかどうかの判定が行われる。生じていない場合、方法は、ブロック306に進み、ブロック306で、MMU110b、またはSMMU130a、140a、もしくは150aが、通常の様態でHWTWを実行する。
【００２４】
ブロック303によって表されるステップで、CPU MMU110bが、クラス(1)トランザクションを実行している際にミスが生じたと判定した場合、方法は、ブロック305によって表されるステップに進む。ブロック305によって表されるステップで、前述した予測アルゴリズムが実行されてIPAをPAにコンバートする、または変換する。
【００２５】
図4は、例示的な実施形態によりHWTW読取りトランザクションが実行される様態を示す絵画的図である。この例示的な実施形態に関して、例として、ページテーブルは、3レベルページテーブルであり、HWTWは、2D HWTWであるものと想定される。また、この例は、TLBミス最悪シナリオも想定する。このプロセスは、MMUがVAを受け取り、次に、制御レジスタ(簡明のために図示せず)からS1 PGD IPA401を取り出すことから始まる。次に、MMUが、S1 PGD IPA401とのマッチがないかTLBを調べる。この最悪シナリオ例に関して、MMUが、マッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、予測アルゴリズムを実行して、S1 PGD IPA401を、S1 PMD IPA403が記憶されているPA402にコンバートする。このため、S1 PGD IPA401をPA402にコンバートするのに単一のルックアップが使用される。
【００２６】
この最悪シナリオ例に関して、MMUが、S1 PMD IPA403とのマッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、予測アルゴリズムを実行して、S1 PMD IPA403を、S1 PTE IPA405が記憶されているPA404にコンバートする。このため、S1 PMD IPA403をPA404にコンバートするのに単一のルックアップが使用される。この最悪シナリオ例に関して、MMUが、S1 PTE IPA405とのマッチがないかTLBを調べる際にTLBミスが生じるものと想定される。このミスのため、MMUは、予測アルゴリズムを実行して、S1 PTE IPA405を、IPA1 407が記憶されているPA406にコンバートする。IPA1 407が獲得されると、3回のルックアップ408、409、および411が実行されて、読み取られるべきデータが記憶されている最終的なPA412が獲得される。
【００２７】
このため、この実施形態によれば、ルックアップの合計回数が、15回(図1)から6回に減らされており、このことは、処理オーバーヘッドの60%低減であることが分かる。もちろん、本発明は、特定の数のレベル、または特定の数のHWTW次元を有するMMU構成に限定されない。本発明の概念および原理は、ページテーブルの構成にかかわらず適用されることが、当業者には理解されよう。また、この方法およびシステムは、IPA-PAコンバートに関して本明細書で説明されているものの、IPAを使用しないシステムにおける直接のVA-PAコンバートにも同様に適用可能である。
【００２８】
図5は、予測アルゴリズムを実行するプレディクタ500の例示的な実施形態のブロック図である。プレディクタ500は、通常、MMU110b、ならびにSMMU130a、140a、および150aにおいて実装される。前述したように、例示的な実施形態によれば、予測アルゴリズムは、クラス1読取りトランザクションを実行する際に限って実行される。図5に示されるプレディクタ500の構成は、プレディクタ500が、クラス1トランザクションに関してイネーブルにされ、クラス2トランザクションおよびクラス3トランザクションを含む他のすべてのクラスのトランザクションに関してディセーブルにされることを許す1つの構成の例である。
【００２９】
また、図5に示されるプレディクタ500の構成は、プレディクタ500が、IPAに基づいてPAを計算するのに前述の式1において使用される関数fを選択することも許す。各仮想マシン(VM)は、異なるセットの関数fを使用していることが可能であり、したがって、使用されるセットの関数が、IPAの範囲にわたってIPAとPAの間で1対1マッピングが存在することを確実にすることが重要である。ハイパーバイザ210は、ハイパーバイザ210において実行されている対応するVMを各々が有することになる複数のHLOSまたはDRMを管理していることが可能である。使用されるセットの関数は、予測されるPAが、別のVMに割り当てられた予測されるPAと重なり合わないことを確実にする。
【００３０】
関数fの例は、次のとおりである、すなわち、
PA=IPA、
PA=IPA+Offset_function(VMID)、ただし、VMIDは、HWTW読取りトランザクションに関連付けられたVMを識別するすべてのVMにわたる一意識別子であり、Offset_functionは、VMIDに関連付けられた特定のオフセット値に基づいて選択された出力を有する関数である、
PA=IPA XOR Extended_VMID、ただし、XORは、排他的OR演算を表し、Extended_VMIDは、拡張されたVMIDである。ハイパーバイザ210は、VM間の衝突が回避されるように関数fを選択する。
【００３１】
図5で、関数fは、多項式であり、かつハイパーバイザ210は、複数の多項式から関数fとして使用されるべき多項式を選択するものと想定される。選択される多項式は、たとえば、HWTW読取りトランザクションが実行されているVMのVMIDに基づくことが可能である。プレディクタ500の構成レジスタ510が、1つまたは複数の予測イネーブルビット510aと、1つまたは複数の多項式選択ビット510bとを保持する。プレディクタ500の多項式計算ハードウェア520が、レジスタ510から受け取られた多項式選択ビット510bの値に基づいて多項式関数を選択するハードウェアを備える。また、多項式計算ハードウェア520は、IPA-PA変換要求を受け取り、選択された多項式関数によりその要求を処理して、予測されるPAをもたらすこともする。
【００３２】
予測イネーブルビット510aおよびクラス1イネーブルビットは、ANDゲート530の入力で受け取られる。クラス1イネーブルビットは、クラス1読取りトランザクションを実行している際にミスが生じると、アサートされる。プレディクタ500のマルチプレクサ(MUX)540が、MUX540のセレクタポートでANDゲート530の出力を受け取り、予測されるPA、および通常の様態で獲得されたIPA-PA変換結果を受け取る。予測イネーブルビット510aとクラス1イネーブルビットがともにアサートされた場合、S2ウォーク制御ロジックおよび状態マシン550が、ディセーブルにされ、MUX540は、予測されるPAがMUX540から出力されるように選択する。
【００３３】
予測イネーブルビット510aおよび/またはクラス1イネーブルビットがディアサートされた場合、S2ウォーク制御ロジックおよび状態マシン550が、イネーブルにされる。S2ウォーク制御ロジックおよび状態マシン550がイネーブルにされた場合、他のタイプのS2ウォーク(たとえば、クラス2およびクラス3)は、S2ウォーク制御ロジックおよび状態マシン550によってメインメモリ120の中で実行されることが可能である。このため、S2ウォーク制御ロジックおよび状態マシン550がイネーブルにされた場合、MUX540は、S2ウォーク制御ロジックおよび状態マシン550から出力されたIPA-PA変換結果を出力する。
【００３４】
プレディクタ500は、多くの異なる構成を有し得ることに留意されたい。図5に示されるプレディクタ500の構成は、予測アルゴリズムを実行するための多くの適切な構成のうちの1つにすぎない。図5に示される以外の多くの構成が、予測アルゴリズムを実行するのに使用されてもよいことが、当業者には理解されよう。
【００３５】
図2に示されるコンピュータシステム100は、たとえば、デスクトップコンピュータ、サーバ、およびモバイルスマートフォンを含め、メモリ仮想化が実行される任意のタイプのシステムにおいて実施され得る。図6は、コンピュータシステム100が組み込まれたモバイルスマートフォン600のブロック図を示す。スマートフォン600は、本明細書で説明される方法を実行することができなければならないことを除いて、いずれの特定のタイプのスマートフォンであることにも、いずれの特定の構成を有することにも限定されない。また、図6に示されるスマートフォン600は、本明細書で説明される方法を実行するためのコンテキスト認識および処理能力を有するセルラー電話機の簡略化された例であることを意図している。スマートフォンの動作および構造は、当業者には理解され、このため、実装の詳細は、省略されている。
【００３６】
例示的な実施形態によれば、スマートフォン600は、システムバス612を介して一緒に接続されたベースバンドサブシステム610および無線周波数(RF)サブシステム620を含む。システムバス612は、前述した要素を一緒に結合し、それらの要素の相互運用性を可能にする物理接続および論理接続を、通常、備える。RFサブシステム620は、ワイヤレストランシーバであり得る。詳細は、簡明のため示していないものの、RFサブシステム620は、当業者に知られているように、一般に、送信のためにベースバンド情報信号を準備するための変調回路、アップコンバージョン回路、および増幅回路を有する送信(Tx)モジュール630を含み、RF信号を受信し、ベースバンド情報信号にダウンコンバートしてデータを回復するための増幅回路、フィルタリング回路、およびダウンコンバージョン回路を有する受信(Rx)モジュール640を含み、ダイプレクサ回路、デュプレクサ回路、もしくは受信信号から送信信号を分離することができる他の任意の回路を含むフロントエンドモジュール(FEM)650を含む。アンテナ660が、FEM650に接続される。
【００３７】
ベースバンドサブシステム610は、一般に、システムバス612を介して一緒に電気的に結合されたコンピュータシステム100、アナログ回路要素616、およびデジタル回路要素618を含む。システムバス612は、前述した要素を一緒に結合し、それらの要素の相互運用性を可能にする物理接続および論理接続を、通常、備える。
【００３８】
入出力(I/O)要素621が、接続624を介してベースバンドサブシステム610に接続される。I/O要素621は、たとえば、マイクロフォン、キーパッド、スピーカ、ポインティングデバイス、ユーザインターフェース制御要素、ならびにユーザが、スマートフォン600に入力コマンドを与え、スマートフォン600から出力を受け取ることを可能にする他の任意のデバイスもしくはシステムを、通常、含む。メモリ628が、接続629を介してベースバンドサブシステム610に接続される。メモリ628は、任意のタイプの揮発性メモリまたは不揮発性メモリであり得る。メモリ628は、スマートフォン600に永久に組み込まれることが可能であり、またはリムーバブルメモリカードなどのリムーバブルメモリ要素であることが可能である。
【００３９】
アナログ回路616およびデジタル回路618は、I/O要素621によって与えられた入力信号を、送信されるべき情報信号に変換する信号処理、信号コンバート、およびロジックを含む。同様に、アナログ回路616およびデジタル回路618は、受信された信号から、回復された情報を包含する情報信号を生成するのに使用される信号処理要素を含む。デジタル回路618は、たとえば、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、または他の任意の処理デバイスを含み得る。ベースバンドサブシステム610は、アナログ要素とデジタル要素をともに含むため、混合信号デバイス(MSD)と呼ばれ得る。
【００４０】
スマートフォン600は、たとえば、カメラ661、マイクロフォン662、全地球測位システム(GPS)センサ663、加速度計665、ジャイロスコープ667、およびデジタルコンパス668などの様々なセンサのうちの1つまたは複数を含み得る。これらのセンサは、バス612を介してベースバンドサブシステム610と通信する。
【００４１】
スマートフォン600に組み込まれたコンピュータシステム100を有することは、複数のOS、およびそれぞれの複数のVMがスマートフォン600上で実行されることを可能にする。この環境において、コンピュータシステム100のハイパーバイザ210(図2)が、スマートフォン600のハードウェアとVMによって実行されているアプリケーションソフトウェアの間のセキュリティ保護された分離をもたらす。
【００４２】
図3を参照して前述した方法は、もっぱらハードウェアとして実施されても、ハードウェアとソフトウェアの組合せとして、またはハードウェアとファームウェアの組合せとして実施されてもよい。同様に、図2に示されるコンピュータシステム100の構成要素の多くも、もっぱらハードウェアとして実施されても、ハードウェアとソフトウェアの組合せとして実施されても、ファームウェアとして実施されてもよい。たとえば、ハイパーバイザ210は、もっぱらハードウェアとして実施されても、ハードウェアとソフトウェアの組合せとして実施されても、ファームウェアとして実施されてもよい。方法またはコンピュータシステム100の構成要素が、ソフトウェアまたはファームウェアとして実施される事例において、対応するコードは、コンピュータ可読媒体であるメインメモリ120(図2)の中に記憶される。メインメモリ120は、通常、不揮発性ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)デバイス、プログラマブルROM(PROM)、消去可能なPROM(EPROM)などのソリッドステートコンピュータ可読媒体である。しかし、たとえば、磁気記憶デバイスおよび光記憶デバイスなどの他のタイプのコンピュータ可読媒体が、コードを記憶するために使用されてもよい。
【００４３】
また、本発明の範囲を逸脱することなく、図2〜図6を参照して前述した方法に多くの変更が行われ得ることにも留意されたい。たとえば、図2に示されるコンピュータシステム100の構成は、当業者によって理解されるように、多くの様態で変形され得る。また、図6に示されるスマートフォン600は、この方法を実行するための適切な構成および機能を有するモバイルデバイスの一例にすぎない。本明細書で与えられる説明に鑑みて、本発明の範囲を逸脱することなく、図6に示されるスマートフォン600に多くの変更が行われ得ることが当業者には理解されよう。これら、および他の変更は、本発明の範囲に含まれる。本明細書で説明される例示的な実施形態は、本発明の原理および概念を示すことを意図しているが、本発明は、当業者によって理解されるように、これらの実施形態に限定されない。
【符号の説明】
【００４４】
100  コンピュータシステム
110  CPUクラスタ
110a  CPUコア
110b、130a、140a、150a  メモリ管理ユニット(MMU)
120、628  メモリ
130  ビデオカメラディスプレイ
140  グラフィックス処理装置(GPU)
150  PCIe入出力(IO)デバイス
160  IO変換ルックアサイドバッファ(IOTLB)
170、612  システムバス
200  システムオペレーティングシステム(OS)
210  ハイパーバイザ
220  高レベルOS(HLOS)
230  デジタル権利マネージャ(DRM)
500  プレディクタ
510  構成レジスタ
520  多項式計算ハードウェア
530、710、730  ゲート
540、760  マルチプレクサ(MUX)
550  S2ウォーク制御ロジックおよび状態マシン
600  スマートフォン
610  ベースバンドサブシステム
616  アナログ回路要素
618  デジタル回路要素
620  無線周波数(RF)サブシステム
621  入出力(I/O)要素
624、629  接続
630  送信(Tx)モジュール
640  受信(Rx)モジュール
650  フロントエンドモジュール(FEM)
660  アンテナ
661、662、663、665、667、668  センサ
【図１】
0006298083.tif 000002
【図２】
0006298083.tif 000003
【図３】
0006298083.tif 000004
【図４】
0006298083.tif 000005
【図５】
0006298083.tif 000006
【図６】
0006298083.tif 000007