IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アーム・リミテッドの特許一覧

<>
  • 特許-ページテーブル構造 図1
  • 特許-ページテーブル構造 図2
  • 特許-ページテーブル構造 図3
  • 特許-ページテーブル構造 図4
  • 特許-ページテーブル構造 図5
  • 特許-ページテーブル構造 図6
  • 特許-ページテーブル構造 図7
  • 特許-ページテーブル構造 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-05-28
(45)【発行日】2024-06-05
(54)【発明の名称】ページテーブル構造
(51)【国際特許分類】
   G06F 12/1009 20160101AFI20240529BHJP
【FI】
G06F12/1009
【請求項の数】 21
(21)【出願番号】P 2021556779
(86)(22)【出願日】2020-01-03
(65)【公表番号】
(43)【公表日】2022-06-14
(86)【国際出願番号】 GB2020050002
(87)【国際公開番号】W WO2020188233
(87)【国際公開日】2020-09-24
【審査請求日】2022-12-27
(31)【優先権主張番号】1903901.5
(32)【優先日】2019-03-21
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】サンドバーグ、アンドレアス ラース
(72)【発明者】
【氏名】ディエストロホースト、ステファン
【審査官】北村 学
(56)【参考文献】
【文献】特開平04-021047(JP,A)
【文献】特開2018-181162(JP,A)
【文献】特表2019-506670(JP,A)
【文献】米国特許出願公開第2017/0212844(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
装置であって、
メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造内に定義されたページテーブルエントリに基づいてメモリアドレスを変換するためのメモリ管理回路と、
前記メモリ管理回路によって使用されるために前記ページテーブル構造から前記ページテーブルエントリを取得するためのページテーブルウォーク回路であって、各ページテーブルエントリは、変換されたアドレス、及び前記ページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォーク回路と、
を備え、
所与のページテーブルエントリが、前記所与のページテーブルエントリについて決定された基準点ベースアドレスに対する前記アドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、前記ページテーブルウォーク回路は、前記基準点ベースアドレス及び前記相対オフセット値から前記アドレスポインタを決定するように構成され
前記所与のページテーブルエントリが、前記アドレスポインタを直接指定する絶対アドレス値を指定するページテーブルエントリの絶対タイプである場合、前記ページテーブルウォーク回路は、前記絶対アドレス値から前記アドレスポインタを決定するように構成され、
前記ページテーブルウォーク回路は、前記ページテーブル構造の前のレベルの親ページテーブルエントリで指定されたタイプインジケータに基づいて、前記所与のページテーブルエントリが前記相対タイプ又は前記絶対タイプであるかを決定するように構成される、装置。
【請求項2】
前記ページテーブルウォーク回路は、前記所与のページテーブルエントリが前記相対タイプである場合に、前記所与のページテーブルエントリの子ページテーブルエントリが絶対タイプであることを検出することに応答して、障害を通知するように構成される、請求項に記載の装置。
【請求項3】
前記ページテーブル構造のトップレベルのページテーブルエントリは、ページテーブルエントリの前記絶対タイプであるように制限される、請求項1又は2に記載の装置。
【請求項4】
前記アドレスポインタが前記変換されたアドレスを識別するリーフページテーブルエントリは、ページテーブルエントリの相対タイプであることが許可される、請求項1からのいずれか一項に記載の装置。
【請求項5】
前記ページテーブルウォーク回路は、前記所与のページテーブルエントリの前記基準点ベースアドレスとして、前記所与のページテーブルエントリを含むページテーブルのアドレスを、前記所与のページテーブルエントリの親ページテーブルエントリによって前記所与のページテーブルエントリに対して指定されたサイズパラメータに基づいて選択されるアドレスサイズ境界に整合させた結果に対応するサイズ整合アドレスを決定するように構成される、請求項1からのいずれか一項に記載の装置。
【請求項6】
前記ページテーブルウォーク回路は、ブロックテーブルの選択されたエントリから前記所与のページテーブルエントリの前記基準点ベースアドレスを取得するように構成され、前記ブロックテーブルの前記選択されたエントリは、前記所与のページテーブルエントリの親ページテーブルエントリで指定されたブロックテーブルエントリ識別子に基づいて選択される、請求項1からのいずれか一項に記載の装置。
【請求項7】
ページテーブルエントリの前記相対タイプは、サイズパラメータに関連付けられ、前記基準点ベースアドレス及び前記サイズパラメータは、ページテーブルエントリの前記相対タイプによって指定された前記アドレスポインタに対する境界アドレス領域を一緒に識別する、請求項1からのいずれか一項に記載の装置。
【請求項8】
前記所与のページテーブルエントリがページテーブルエントリの前記相対タイプである場合、前記ページテーブルウォーク回路は、前記所与のページテーブルエントリの子孫ページテーブルエントリによって指定された前記アドレスポインタが、前記所与のページテーブルエントリについて識別された前記境界アドレス領域の外側にあるときに障害を通知するように構成される、請求項に記載の装置。
【請求項9】
前記サイズパラメータは、ページテーブルエントリの前記相対タイプの親ページテーブルエントリで直接指定される、請求項及びのいずれか一項に記載の装置。
【請求項10】
前記サイズパラメータはブロックテーブルの選択されたエントリで指定され、前記ブロックテーブルの前記選択されたエントリは、ページテーブルエントリの前記相対タイプの親ページテーブルエントリで指定されたブロックテーブルエントリ識別子に基づいて選択される、請求項及びのいずれか一項に記載の装置。
【請求項11】
前記所与のページテーブルエントリがページテーブルエントリの前記相対タイプである場合、前記ページテーブルウォーク回路は、前記所与のページテーブルエントリの子ページテーブルエントリについて識別された前記サイズパラメータが、前記所与のページテーブルエントリに関連付けられた前記サイズパラメータより大きいサイズを示すときに障害を通知するように構成される、請求項に記載の装置。
【請求項12】
方法であって、
ページテーブルウォーク回路が、メモリアドレスの変換に使用するために、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためにページテーブルウォークを実行することであって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、実行すること、
を備え、
所与のページテーブルエントリが、前記所与のページテーブルエントリについて決定された基準点ベースアドレスに対する前記アドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、前記ページテーブルウォーク回路が、前記基準点ベースアドレス及び前記相対オフセット値から前記アドレスポインタを決定
前記所与のページテーブルエントリが、前記アドレスポインタを直接指定する絶対アドレス値を指定するページテーブルエントリの絶対タイプである場合、前記ページテーブルウォーク回路が、前記絶対アドレス値から前記アドレスポインタを決定し、
前記ページテーブルウォーク回路が、前記ページテーブル構造の前のレベルの親ページテーブルエントリで指定されたタイプインジケータに基づいて、前記所与のページテーブルエントリが前記相対タイプ又は前記絶対タイプであるかを決定する、方法。
【請求項13】
コンピュータプログラムであって、
複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークプログラム論理であって、各ページテーブルエントリは、変換されたアドレス、及び前記ページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォークプログラム論理、
を備え、
所与のページテーブルエントリが、前記所与のページテーブルエントリについて決定された基準点ベースアドレスに対する前記アドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、前記ページテーブルウォークプログラム論理は、前記基準点ベースアドレス及び前記相対オフセット値から前記アドレスポインタを決定するように構成され
前記所与のページテーブルエントリが、前記アドレスポインタを直接指定する絶対アドレス値を指定するページテーブルエントリの絶対タイプである場合、前記ページテーブルウォークプログラム論理は、前記絶対アドレス値から前記アドレスポインタを決定するように構成され、
前記ページテーブルウォークプログラム論理は、前記ページテーブル構造の前のレベルの親ページテーブルエントリで指定されたタイプインジケータに基づいて、前記所与のページテーブルエントリが前記相対タイプ又は前記絶対タイプであるかを決定するように構成される、コンピュータプログラム。
【請求項14】
請求項13に記載の前記コンピュータプログラムを記憶する、記憶媒体。
【請求項15】
装置であって、
メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造内に定義されたページテーブルエントリに基づいてメモリアドレスを変換するためのメモリ管理回路と、
前記メモリ管理回路によって使用されるために前記ページテーブル構造から前記ページテーブルエントリを取得するためのページテーブルウォーク回路であって、各ページテーブルエントリは、変換されたアドレス、及び前記ページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォーク回路と、
を備え、
所与のページテーブルエントリが子孫エントリ制限インジケータを指定する場合、前記ページテーブルウォーク回路は、前記所与のページテーブルエントリの子孫ページテーブルエントリが、前記所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したときに障害を通知するように構成される、装置。
【請求項16】
前記境界アドレス領域は、基準点ベースアドレスから始まる指定されたサイズの領域を含み、
前記所与のページテーブルエントリは、前記指定されたサイズを示すサイズパラメータを指定する、請求項15に記載の装置。
【請求項17】
前記基準点ベースアドレスは、前記サイズパラメータに基づいて選択されたアドレスサイズ境界に前記所与のページテーブルエントリの子ページテーブルエントリを含むページテーブルのアドレスを整合させた結果に対応するサイズ整合アドレスを含む、請求項16に記載の装置。
【請求項18】
前記所与のページテーブルエントリは、基準点ベースアドレス及び前記境界アドレス領域のサイズを指定するブロックテーブルのエントリを識別するブロックテーブルエントリ識別子を指定する、請求項15に記載の装置。
【請求項19】
方法であって、
ページテーブルウォーク回路が、メモリアドレスの変換に使用するために、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためにページテーブルウォークを実行することであって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、実行することと、
所与のページテーブルエントリが子孫エントリ制限インジケータを指定し、所与のページテーブルエントリの子孫ページテーブルエントリが、所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したことを検出したことに応答して、前記ページテーブルウォーク回路が障害を通知することと、を含む、方法。
【請求項20】
コンピュータプログラムであって、
複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークプログラム論理であって、各ページテーブルエントリは、変換されたアドレス、及び前記ページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォークプログラム論理、
を備え、
所与のページテーブルエントリが子孫エントリ制限インジケータを指定する場合、前記ページテーブルウォークプログラム論理は、前記所与のページテーブルエントリの子孫ページテーブルエントリが、前記所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したときに障害を通知するように構成される、コンピュータプログラム。
【請求項21】
請求項20に記載の前記コンピュータプログラムを記憶する、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、データ処理分野に関するものである。より具体的には、アドレス変換のためのページテーブル構造に関する。
【発明の概要】
【発明が解決しようとする課題】
【0002】
データ処理システムは、アドレス変換を実行するためのメモリ管理ユニットを有してもよい。MMUは、プログラムコードによって指定された仮想アドレスを、メモリ内の記憶場所を識別する物理アドレスに変換してもよい。変換は、ページテーブル構造内に指定されたアドレスマッピング情報に基づいてもよい。
【0003】
少なくともいくつかの実施例は装置を提供し、装置は、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造内に定義されたページテーブルエントリに基づいてメモリアドレスを変換するためのメモリ管理回路と、メモリ管理回路によって使用されるページテーブル構造からページテーブルエントリを取得するためのページテーブルウォーク回路であって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォーク回路と、を備え、所与のページテーブルエントリが、所与のページテーブルエントリについて決定された基準点ベースアドレスに対するアドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、ページテーブルウォーク回路は、基準点ベースアドレス及び相対オフセット値からアドレスポインタを決定するように構成される。
【0004】
少なくともいくつかの実施例は方法を提供し、方法は、メモリアドレスの変換に使用するために、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためにページテーブルウォークを実行することであって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、実行することを含み、所与のページテーブルエントリが、所与のページテーブルエントリについて決定された基準点ベースアドレスに対するアドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、アドレスポインタは、基準点ベースアドレス及び相対オフセット値から決定される。
【0005】
少なくともいくつかの実施例はコンピュータプログラムを提供し、コンピュータプログラムは、複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークプログラム論理であって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォークプログラム論理を備え、所与のページテーブルエントリが、所与のページテーブルエントリについて決定された基準点ベースアドレスに対するアドレスポインタのオフセットを示す相対オフセット値を指定する、ページテーブルエントリの相対タイプである場合、ページテーブルウォークプログラム論理は、基準点ベースアドレス及び相対オフセット値からアドレスポインタを決定するように構成される。
【0006】
少なくともいくつかの実施例は装置を提供し、装置は、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造内に定義されたページテーブルエントリに基づいてメモリアドレスを変換するためのメモリ管理回路と、メモリ管理回路によって使用されるページテーブル構造からページテーブルエントリを取得するためのページテーブルウォーク回路であって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォーク回路と、を備え、所与のページテーブルエントリが子孫エントリ制限インジケータを指定する場合、ページテーブルウォーク回路は、所与のページテーブルエントリの子孫ページテーブルエントリが、所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したときに障害を通知するように構成される。
【0007】
少なくともいくつかの実施例は方法を提供し、方法は、メモリアドレスの変換に使用するために、メモリシステムに記憶された複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためにページテーブルウォークを実行することであって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、実行することと、所与のページテーブルエントリが子孫エントリ制限インジケータを指定し、所与のページテーブルエントリの子孫ページテーブルエントリが、所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したことを検出したことに応答して、障害を通知することと、を含む。
【0008】
少なくともいくつかの実施例はコンピュータプログラムを提供し、コンピュータプログラムは、複数レベルのページテーブルを含むページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークプログラム論理であって、各ページテーブルエントリは、変換されたアドレス、及びページテーブル構造の次のレベルの子ページテーブルのアドレスのうちの1つを識別するためのアドレスポインタを識別する、ページテーブルウォークプログラム論理を備え、所与のページテーブルエントリが子孫エントリ制限インジケータを指定する場合、ページテーブルウォークプログラム論理は、所与のページテーブルエントリの子孫ページテーブルエントリが、所与のページテーブルエントリによって識別された境界アドレス領域の外側にあるアドレスポインタを識別したときに障害を通知するように構成される。
【0009】
上述のコンピュータプログラムは、非一時的記憶媒体又は一時記憶媒体であってもよいコンピュータ可読記憶媒体に記憶することができる。
【図面の簡単な説明】
【0010】
本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれるべき以下の実施例の説明から明らかとなるであろう。
図1】アドレス変換を処理するための少なくとも1つのメモリ管理ユニットを含むデータ処理システムの例を概略的に示す。
図2図2は、ページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークの例を概略的に示す。
図3図3は、相対ページテーブルポインタをサポートする、ページテーブル構造のページテーブルエントリの例示的なフォーマットを示す。
図4図4は、ページテーブルエントリの相対タイプに基づいてアドレスポインタを計算する例を示す。
図5図5は、ページテーブルウォークを実行する方法を示すフロー図である。
図6図6は、ブロックテーブルが、境界アドレス領域のベースアドレス及びサイズを示すために使用される第2の例を示す。
図7図7は、子孫エントリ制限インジケータを含むページテーブルエントリの例を示す。
図8図8は、命令を実行するための命令実行環境を提供するようにホストデータ処理装置を制御するためのシミュレータプログラムの例を示す。
【発明を実施するための形態】
【0011】
装置は、メモリシステムに記憶されたページテーブル構造内に定義されたページテーブルエントリ(PTE)に基づいてメモリアドレスを変換するためのメモリ管理回路を有することができる。ページテーブル構造は、2つ以上のレベルのページテーブルを含んでもよい。ページテーブルウォーク回路は、メモリ管理回路による使用のために、ページテーブル構造からPTEを取得するために提供されてもよい。各PTEは、変換されたアドレス又はページテーブル構造の次のレベルの子ページテーブルのアドレスのいずれかを識別するためのアドレスポインタを識別してもよい。変換されたアドレスを指定するエントリは、ブロックエントリ又はリーフエントリと呼ばれてもよい。変換されたアドレスは、中間の物理アドレス又は物理アドレスであり得る。ページテーブル構造の次のレベルの子ページテーブルを指すアドレスポインタを有するPTEは、テーブルエントリ又は分岐エントリと呼ばれてもよい。所与の子ページテーブルを指すPTEは、その子ページテーブルの親PTEと呼ばれてもよく、子ページテーブル内の子PTEの全ての親PTEとも呼ばれてもよい。所与のPTEの子PTE、並びに子PTE内のアドレスポインタを介してアクセスされる後続のレベルのページテーブルの任意の孫又は更なる世代のPTEは、所与のPTEの子孫PTEと呼ばれてもよい。
【0012】
ページテーブルウォークを実行するとき、変換対象のターゲットアドレスの部分を使用して、ページテーブル構造の各レベルのページテーブルからPTEのうちの1つを選択してもよい。ターゲットアドレスの第1の部分を使用して、レベル0ページテーブルからPTEを選択する。選択されたレベル0 PTEは、レベル1ページテーブルへのアドレスポインタを提供し、ターゲットアドレスの第2の部分を使用して、レベル1ページテーブルから特定のPTEを選択し、ターゲットアドレスに対応する変換されたアドレスを決定するために使用されるアドレスポインタを提供するブロックエントリに達するまで、後続の各レベルについて同様に続く。マルチレベルページテーブル構造を使用することは、(単一の線形インデックス付きテーブル構造とは異なり)、ページテーブル構造の記憶のために、マッピングされているアドレス空間の全体サイズに比例するサイズのメモリの単一の連続ブロックを割り当てる必要がないため、メモリ効率を向上させるのに有用であり得る。
【0013】
典型的なページテーブル構造では、変換されたアドレス又は子ページテーブルのアドレスを識別するためのアドレスポインタは、絶対アドレスとして指定される。したがって、所与のPTEは、アドレスポインタを直接識別するアドレス値を指定してもよい。
【0014】
対照的に、以下で論じられる手法では、ページテーブルウォーク回路は、相対タイプのPTEを含むページテーブル構造をサポートする。相対タイプのPTEは、所与のPTEについて決定された基準点ベースアドレスに対するアドレスポインタのオフセットを識別する相対オフセット値を指定する。したがって、所与のPTEが相対タイプのPTEとして定義される場合、ページテーブルウォーク回路は、基準点ベースアドレス及び所与のPTEに定義されている相対オフセット値からそのエントリのアドレスポインタを決定してもよい。
【0015】
ベースアドレスに対する相対オフセットとして指定されたアドレスポインタを使用することにより、アドレス空間の再マッピングのオーバーヘッドを低減することができる。監視プロセス(例えば、オペレーティングシステム又はハイパーバイザ)は、ページテーブル構造を定義することによってアドレス変換を管理する役割を担ってもよい。相対タイプのPTEを使用してページテーブル構造のセクションを定義する場合、所与のPTEに対する基準点ベースアドレスを変更するだけで、その基準点ベースアドレスに対して計算された後続のアドレスポインタを、メモリの異なる領域に自動的に再配置することができるので、監視プロセスが多くのPTEで絶対ポインタを個別に更新する必要がなくなる。
【0016】
これは、不揮発性メモリ内に永続ページテーブル断片を記憶することが望ましい場合がある、不揮発性メモリを使用するシステムに特に有用であり得る。例えば、不揮発性メモリに記憶された実行可能プログラムコードは、相対タイプのPTEを含む1つ以上の相対ページテーブルを含むことができる。これは、実行可能ファイルをメモリにマッピングするために、オペレーティングシステムが、不揮発性メモリ内の相対ページテーブルを指すPTEを単に設定してもよいことを意味し、そのページテーブル内の相対タイプのPTEは、次いで、オペレーティングシステムが絶対ポインタを使用して各子孫エントリを個別に指定する必要なしに、実行可能ファイルをメモリ内に自動的にマップしてもよい。不揮発性メモリが後にアドレス空間の新しい領域にマッピングされる必要がある場合、オペレーティングシステムが、ページテーブル構造の対応する部分内の全てのPTEを更新する必要はなく、これは、それらの相対ポインタが導出されるベースアドレスを更新するだけで、ページテーブルの相対部分全体を再マッピングするのに十分であり得るからである。
【0017】
また、相対タイプのPTEに加えて、ページテーブルウォーク回路は、絶対タイプのPTEをサポートしてもよい。所与のPTEが、アドレスポインタを直接指定する絶対アドレス値を指定する絶対タイプのPTEである場合、ページテーブルウォーク回路は、絶対アドレス値からアドレスポインタを決定してもよい。この場合、基準点ベースアドレスを決定する必要はない。
【0018】
PTEが相対タイプであるか絶対タイプであるかどうかにかかわらず、テーブルPTEについては、アドレスポインタは、ページ構造の次のレベルでの子ページテーブルのベースアドレスを識別してもよく、また、次のレベルの子ページテーブル内にアクセスするための特定の子PTEのアドレスは、変換対象のターゲットアドレスのアドレスポインタ及び次のレベルのインデックス部分の合計に対応してもよい。したがって、アドレスポインタはページサイズ境界にサイズ整合されてもよく、その結果、アドレスポインタのビットの最下位部分は常に0であり、PTEにおいて明示的に指定される必要はない(「常に0」部分のビット数はシステム構成に依存してもよい)。一方、ブロックPTEについて、アドレスポインタは、変換されたアドレスのビットの最上位部分を指定することができ、変換されたアドレスのビットの最下位部分は、変換されているターゲットアドレスの対応するビットから直接マッピングされてもよい。絶対タイプのPTEについては、絶対タイプのPTEで直接指定される絶対値として、子PTEアドレスの最上位部分又は変換されたアドレスの最上位部分が指定される。相対タイプのPTEの場合、子PTEアドレスの最上位部分又は変換されたアドレスの最上位部分は、その相対タイプのPTEに対して決定された基準点ベースアドレスに追加又は付加される、相対タイプのPTEにおいて指定された相対オフセット値を使用して指定される。相対タイプのPTEに関連する基準点ベースアドレスは、相対タイプのPTEを含むページテーブルのベースアドレスと同じであっても異なっていてもよい。
【0019】
所与のPTEが相対タイプであるか絶対タイプであるかは、ページテーブル構造の前のレベルの親PTEに指定されたタイプインジケータに基づいて決定することができる。したがって、PTEのタイプはPTE自体でなく、PTEの親エントリで指定される。これは、ページテーブル構造の所与のレベルを担当する監視プロセスが、後続のレベルが相対アドレスポインタを使用できるかどうかを制御できることを意味するため、セキュリティを向上させることができ、これは、セキュリティを維持しながら、後続のレベルに対する応答性を別のプロセス又は当事者に委譲することを可能にするのに有用であり得る。例えば、監視プロセスは、その委譲されたプロセスに割り当てられたアドレス空間の領域を超えて拡張することができる任意の絶対ポインタを指定することができる委譲されたプロセス(ページテーブル構造の後続のレベルの管理が委譲される)を回避するために、後続のレベルが相対ポインタを使用しなければならないことを強制することを望んでもよい。
【0020】
ページテーブルウォーク回路は、所与のPTEが相対タイプである場合に、所与のPTEの子PTEが絶対タイプであることを検出したことに応答して、障害を通知してもよい。したがって、ページテーブル構造の特定のレベルが、次のレベルが相対タイプであることを指定すると、相対タイプのPTEの任意の子孫もまた相対タイプである必要がある。これにより、監視プロセスが、相対タイプのPTEの最も早いレベルに関連付けられた基準点ベースアドレスを再マッピングするときに、後続のアドレスポインタが絶対タイプであるかのように全ての後続の子孫エントリのアドレスポインタも再マッピングすることが確実になり、その結果、それらは障害を引き起こし、有効なメモリアクセスをもたらすことができない。
【0021】
いくつかの実施態様では、ページテーブル構造のトップレベルのPTEは、絶対タイプのPTEであるように制限されてもよい。したがって、相対タイプであり得る第1のレベルのPTEは、テーブル構造の第2のレベルであってもよい。
【0022】
あるいは、他の例では、トップレベルのPTEはまた、相対タイプのPTEとすることも可能である。例えば、トップレベルのPTEのアドレスを提供する変換テーブルベースレジスタは、トップレベルのPTEが絶対タイプ又は相対タイプであるかどうかの指示を指定することができる。
【0023】
相対タイプのPTEは、テーブルPTE(分岐PTE)及びブロックPTE(リーフPTE)の両方に使用されてもよい。したがって、アドレスポインタが変換されたアドレスを識別するリーフPTEであっても、そのようなPTEは相対タイプのPTEであることが許容される。
【0024】
基準点ベースアドレスは、相対タイプの所与のPTEについて異なる方法で決定することができる。基準点ベースアドレスは、相対タイプのPTEについて非ゼロであってもよい。1つの手法では、ページテーブルウォーク回路は、所与のエントリの基準点ベースアドレスとして、所与のPTEを含むページテーブルのアドレスを、所与のPTEの親PTEによって指定されるサイズパラメータに基づいて選択されるアドレスサイズ境界に整合させた結果に対応するサイズ整合アドレスを決定することができる。したがって、この手法では、基準点ベースアドレスは、PTEにおいて明示的に識別される必要はないが、親PTEによって指定されたサイズと、所与のPTEを含むページテーブルのアドレスとに基づいて暗黙的に決定することができる。親PTEによって指定されるサイズは、所与のPTEを含むページテーブルのサイズと一致する可能性があり、この場合、基準点ベースアドレスは、所与のPTEを含むページテーブルのベースアドレスと同じであってもよい。あるいは、親PTEによって指定されるサイズは、所与のPTEを含むページテーブルのサイズよりも大きい可能性があり、この場合、基準点ベースアドレスは、所与のPTEを含むページテーブルのベースアドレスと異なってもよい。ベースアドレスのサイズ整合は、ベースアドレスのある特定の数の最下位ビットを0にクリアすることに対応してもよく、0にクリアされるビットの数は、指定されたサイズに依存する。
【0025】
基準点ベースアドレスとしてサイズ整合アドレスを使用することにより、これは、相対オフセット値を、サイズ整合基準点ベースアドレスの最下位の非クリアビットの右に単に付加することができるので、基準点ベースアドレス及び相対オフセット値から相対アドレスポインタを計算するための加算器が不要であることを意味する。桁上がり伝播加算器では、計算されている合計の最下位端から最上位端までの桁上がりの伝わりに遅れが生じ得るため、加算器の必要性を排除することにより、性能を向上させることができる。
【0026】
所与のページテーブルエントリを含むページテーブルのアドレスのサイズ整合から、基準点ベースアドレスを暗黙的に決定することの別の利点は、これにより、所与の相対PTEの子孫PTEを介してアクセス可能なアドレス空間の領域が、所与のPTEに対する基準点ベースアドレス及びサイズによって定義される領域内にあることを制限するための制御を簡素化できることである。これは、監視プロセスが、相対タイプのPTEを使用してページテーブル構造の後続のレベルに対する制御を別のプロセスに指定するときに、委譲されたプロセスがアドレス空間の定義された領域の外側にアドレスポインタを定義できないという確信を有することができることを意味するので、重ねてセキュリティに有用であり得る。
【0027】
あるいは、基準点ベースアドレスを決定する別の方法は、所与のPTEが、ページテーブル構造から別個のテーブル構造であるブロックテーブルの選択されたエントリを指すブロックテーブルエントリ識別子を指定することであってもよい。ブロックテーブルの選択されたエントリは、基準点ベースアドレスを指定してもよい。したがって、本実施例では、ページテーブルウォーク回路は、所与のPTEの親PTEに指定されたブロックテーブルエントリ識別子によって識別されるブロックテーブルの選択されたエントリから、所与のPTEに対する基準点ベースアドレスを取得する。この手法は、アドレス空間を再マッピングする際にわずかにより多くのオーバーヘッドを必要とする場合があるが、相対ページテーブルで使用するためにマッピングされたアドレス領域を定義するための監視プロセスの柔軟性を高めることができる。基準点ベースアドレスが、ベースアドレスをサイズ整合させることによって暗黙的に決定されるか、ブロックテーブルが使用される明示的な手法によって決定されるかにかかわらず、親PTEは、その親PTEの子PTEの相対指定アドレスポインタが指定されることが許可される領域を制御することができ、これは、ページテーブルの後続レベルを管理する責任を別のプロセス又は当事者に委譲するときのセキュリティに有用であり得る。
【0028】
相対アドレスポインタの計算を単純化するために、基準点ベースアドレスは、サイズ整合アドレスであるように制約されてもよい(そのために、最下位ビットの数はゼロである。これらのゼロビットは、基準点ベースアドレスの任意の記憶された表現において明示的に識別される必要はなくてもよいことに留意されたい。これは記憶オーバーヘッドを低減するために、ゼロであることが知られているビットを省略し、暗黙的なビットのまま残すことができるからである)。サイズ整合制約は、構成(例えば、基準点ベースアドレスが、上述のように対応するページテーブルのベースアドレスを整合することによって計算される場合)、又は関連するブロックテーブルエントリ内に指定されたベースアドレスが、サイズ整合されていないアドレスとして指定されている場合に障害を通知することによって実施され得る。
【0029】
相対タイプのPTEによって指定されるアドレスポインタは、特定の境界アドレス領域内にあるように限定されてもよく、この特定のアドレス領域は、相対タイプのPTEに関連付けられた基準点ベースアドレス及びサイズパラメータを介して指定されてもよい。上述したように、基準点ベースアドレス及びサイズは、所与のPTEの親PTEにより識別されたブロックテーブルの選択されたエントリ内に指定され得るか、あるいは、所与のPTEのサイズパラメータは、所与のPTEの親PTEによって指定することができ、基準点ベースアドレスは、所与のPTEを含むページテーブルのサイズ整合アドレスから暗黙的であり得る。
【0030】
ページテーブルウォーク回路は、所与のPTEが相対タイプのPTEである場合、所与のPTEの子孫PTEによって指定されたアドレスポインタが所与のPTEについて識別された境界アドレス領域の外側にあるときに、障害を通知してもよい。これにより、相対タイプのPTEの子孫PTEが、定義された境界アドレス領域の外側に延在するアドレスポインタを指定することができないという確信を有することを可能にするため、セキュリティを向上させることができる。これは、相対タイプのPTEを使用することの1つの利益が、これにより、管理プロセスがページテーブルの相対部分の管理を他者に委譲することができること、例えば、ページテーブルの相対的な断片を指定する不揮発性メモリに記憶される実行可能ファイルの開発者に責任を委譲することができることであり得るため、有用である。しかしながら、場合によっては、オペレーティングシステム又は他の管理プロセスは、特定の不揮発性メモリデバイス又はソフトウェアプロセスが適切に挙動することを信頼できない場合がある。アドレスマッピングが相対PTEの子孫PTEに定義されているときに障害を通知することにより、その結果、管理プロセスによって指定された境界アドレス領域の外側にアドレスポインタが延在し、これにより、ページテーブル構造の相対的な断片を制約して、限定された領域内にアドレスポインタを定義することによってセキュリティが向上し、その結果、委譲されたプロセスは、アドレス空間の他の領域にある不適切なメモリアドレスにアクセスできない。
【0031】
基準点ベースアドレスが、所与のページテーブルエントリを含むページテーブルのアドレスを整合させることによって得られるサイズ整合アドレスとして決定される上記の実施例では、境界アドレス領域のそのような確認は、親PTEによって指定されたサイズパラメータを、その子PTEによって指定されたサイズパラメータと比較することによって実施することができる。所与の子PTEがその親PTEより大きいサイズパラメータを指定する場合、障害がトリガされてもよい。相対タイプのPTEの連続する各子孫が、その親と同じサイズ又はその親よりも小さいサイズのいずれかを指定する場合、ページテーブルアドレスの指定されたサイズ境界へのサイズ整合による基準点ベースアドレスの計算は、子孫PTE内の任意の後続アドレスポインタが所与のPTEについて識別される境界アドレス領域内で定義されることを保証するのに十分であり得る。これにより、以前の祖先PTEについて識別された境界アドレス領域を追跡する追跡データを記録して、テーブル構造の数レベル下のアドレスポインタが許容可能かどうかを確認する必要がなくなり、代わりに、境界アドレス領域の強制は、テーブルの下の各ステップで、(親PTE及び子PTEの)2つのサイズパラメータの比較によって簡単に達成することができる。所与のレベルにある場合、子PTEはサイズ確認に合格していることが確認され(子PTEは、親PTEにより指定されたサイズ以下のサイズを指定する)、親PTEサイズの表示は、ページテーブル構造の後続のレベルでのサイズ確認に必要とされないので、破棄することができる。
【0032】
一方、例えば上述のようにブロックテーブルに基づいて、基準点ベースアドレスのより任意の定義が許可される場合、所与のページテーブルエントリの子孫ページテーブルエントリによって指定されたアドレスポインタが、所与のページテーブルエントリについて識別された境界アドレス領域の外側にあるかどうかの確認は、ページテーブルウォーク内を横断した以前の祖先PTEに基づいて記録された追跡情報に基づくことができる。例えば、所与のPTEに遭遇すると、そのPTEについて定義された境界アドレス領域は追跡情報に示されてもよく、その後、ページテーブルウォークにおいて遭遇する子孫PTEの後続アドレスポインタを追跡情報と比較して、障害をトリガするかどうかを決定することができる。この手法は、追跡情報を記憶し、アドレス比較器を提供する際により多くのオーバーヘッドを必要とする場合があるが、上述のサイズ整合手法よりも、テーブルの後続のエントリに対するアドレスマッピングを定義する際に、より柔軟性を提供してもよい。
【0033】
サイズ整合ベースアドレス及び親/子PTEによって指定されたサイズの比較を伴う相対タイプのPTEの使用は、祖先PTEに定義された境界アドレス領域の外側のアドレスポインタを、子孫PTEが有効に指定できない1つの方法である。
【0034】
しかしながら、絶対タイプのPTEを使用する場合、子孫アドレスポインタが指定され得る境界上にそのような制限を適用できることも有用であり得る。したがって、より一般的には、所与のPTEは、子孫エントリ制限インジケータを指定することができ、ページテーブルウォーク回路は、所与のPTEの子孫PTEが所与のPTEによって識別された境界アドレス領域の外側にあるアドレスポインタを識別する場合に、障害を通知することができる。いくつかの例では、子孫エントリ制限インジケータは単に、所与のPTEが絶対タイプであるか相対タイプであるかを指定するタイプインジケータであってもよく、それにより、相対タイプのPTEは、定義により子孫エントリ制限であると見なされ得る一方で、絶対タイプのPTEは、子孫エントリ制限されていなくてもよい。
【0035】
しかしながら、他の実施例では、子孫エントリ制限インジケータは、子孫エントリが絶対タイプ又は相対タイプであるかどうかのインジケータに対する別個のインジケータであってもよい。したがって、その子ページテーブル内のエントリが絶対タイプであることを指定する親PTEは、絶対子PTEが特定の境界内のアドレスポインタを定義するように制約されていることを示すために子孫エントリ制限インジケータを指定することができ、それらの子PTEがそれらの境界の外側のアドレスポインタを指定する場合、障害が通知されてもよい。
【0036】
また、場合によっては、相対タイプのPTEを全くサポートしていないシステムは、子孫PTE内の全ての後続アドレスポインタが特定の境界アドレス領域内になければならないかどうかを示すために、子孫エントリ制限インジケータを依然として使用することができる。相対タイプのエントリがサポートされていない場合であっても、子孫エントリに対する制限は、所与のPTEがアドレス空間の所与の境界領域を指定すると、そのエントリから降順の全ての後続のエントリもその境界アドレス領域内にあるアドレスポインタを指定する必要があるという信頼性を提供するのに有用であり得、これは、テーブル構造の特定の部分の管理を、潜在的に信頼できない可能性がある他のプロセスに委譲することを可能にするのに有用であり得る。
【0037】
ここでも、境界アドレス領域は、異なる方法で指定することができる。一例では、境界アドレス領域は、基準点ベースアドレスで開始する指定されたサイズの領域であり、所与のPTEは、指定されたサイズを示すサイズパラメータを指定してもよい。この場合、境界アドレス領域の基準点ベースアドレスは、所与のPTEによって指定されたサイズパラメータに基づいて、子PTEを含むページテーブルのアドレスをアドレスサイズに整合した結果に対応するサイズ整合アドレスと決定することができる。したがって、この手法では、境界アドレス領域の決定は、相対タイプのPTEに対する基準点ベースアドレスの計算のために上述した手法と同様であり得る。
【0038】
あるいは、境界アドレス領域のベースアドレス及びサイズは、所与のPTEに指定されたブロックテーブルエントリ識別子によって識別されるブロックテーブルのエントリ内で指定することができる。
【0039】
上述の技術は、メモリ管理回路及びページテーブルウォーク回路を定義するための特定の回路がハードウェアに設けられている装置に実装することができる。
【0040】
しかしながら、命令を実行するための命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラム内で、ソフトウェア内のページテーブルウォーク回路の機能をエミュレートすることも可能である。コンピュータプログラムは、相対タイプのPTE及び/又は上述の子孫エントリ制限インジケータを指定するPTEをサポートして、上述のページテーブルウォーク回路に対応する方法で機能するページテーブルウォークプログラム論理を備えてもよい。このようなプログラムは、ホストデータ処理装置自体が上述のページテーブル構造のタイプのためのネイティブハードウェアサポートを有していないホストデータ処理装置に、これらの機能をサポートするプロセッサアーキテクチャと共に使用するために書かれたプログラムコードの実行を許可するのに有用であり得る。
【0041】
図1は、いくつかのプロセッサコア4を備えるデータ処理システム2の一例を概略的に示している。各コアは、メモリから命令をフェッチし、命令を復号し、復号された命令に応答してデータ処理動作を実行するための処理パイプライン6を含む。レジスタ8は、データ処理動作のための動作を記憶するために設けられる。処理動作の結果は、レジスタ8に書き戻される。コア4は、コアによるより速いアクセスのためにメモリシステムからのデータをキャッシュするための少なくとも1つのキャッシュ10を含んでもよい。
【0042】
コア4はまた、パイプライン6によって処理された命令によって指定された仮想アドレスと、メモリシステム内の位置を識別するために使用される物理アドレスとの間のアドレス変換を管理するためのメモリ管理ユニット12を有する。アドレス変換は、メモリシステムに記憶された少なくとも1つのページテーブル構造に基づいて制御される。いくつかの実施例では2ステージ変換が使用されてもよく、アドレス変換の第1のステージにおいて仮想アドレスが中間物理アドレスに変換され、次いで、第2のステージアドレス変換において中間物理アドレスが対応するメモリ位置を直接識別する物理アドレスに変換される。これは、仮想化オペレーティングシステムが存在する唯一のオペレーティングシステムであると仮定して、また、ステージ1の変換で生成された中間物理アドレスは実際には物理アドレスであるが、同じ物理プラットフォーム上のそれぞれのオペレーティングシステムの仮想化を管理するハイパーバイザは、異なるオペレーティングシステムによって定義された中間物理アドレスを物理アドレス空間の異なる部分にマッピングするためのアドレス変換の第2のステージを定義することができると考えると、仮想化オペレーティングシステムがアドレス変換の第1のステージに関連付けられたアドレスマッピングを定義することができる仮想化をサポートするのに有用であり得る。したがって、ステージ1の変換は、2つ以上のレベルのページテーブルエントリを含むステージ1ページテーブル構造に基づいて制御されてもよく、ステージ2の変換は、2つ以上のレベルのページテーブルエントリを含むステージ2ページテーブル構造に基づいて制御されてもよい。
【0043】
MMU12は、ページテーブル構造の一部のページテーブルエントリのキャッシュである、変換ルックアサイドバッファ(TLB)14を含んでもよい。MMUはまた、アドレス変換で使用するために、メモリに記憶されたページテーブル構造からPTEを取得するためのページテーブルウォーク動作を実行するためのページテーブルウォーク回路16を含んでもよい。ページテーブルウォークで取得されたPTE、又はPTEから得られた情報は、TLB14に割り当てることができ、その結果、同じメモリアドレスへの将来のアクセス時に、変換をより高速に実行することができる。
【0044】
プロセッサコア4は、それぞれのプロセッサコアのそれぞれのキャッシュ10とTLB14との間のコヒーレンシを管理してもよい相互接続20を介して通信してもよい。相互接続20を介して、コアは、様々な周辺デバイス22、ダイナミックランダムアクセスメモリ(DRAM)などの揮発性メモリ24の1つ以上のモジュール、及びフラッシュメモリなどの不揮発性メモリ26の1つ以上のモジュールを含んでもよい、基礎となるメモリシステムへのアクセスを要求することができる。
【0045】
システム2はまた、1つ以上のマスタデバイス30を含むことができ、これは、メモリへのアクセスを要求することができるが、プロセッサコア4とは異なり、それ自体は内部メモリ管理ユニット(MMU)12を有さなくてもよい。このようなデバイス30の例としては、ディスプレイコントローラ、ネットワークインタフェースコントローラ、グラフィック処理ユニット(GPU)などが挙げられる。システムMMU32は、マスタデバイス30と相互接続20との間に提供されて、コア4内のMMU12によって提供されるものと同様のアドレス変換機能を有するマスタデバイス30を提供することができる。MMU12と同様に、システムMMU32は、TLB34及びページテーブルウォーク回路36を含んでもよい。
【0046】
図2に示すように、MMU12、32は、メモリシステムに記憶されたページテーブル構造に基づいてアドレス変換を制御してもよく、このページテーブルは、いくつかのレベルのページテーブル40を含み、各ページテーブル40は、いくつかの数のページテーブルエントリ(PTE)を含む。各ページテーブル40は、ページテーブル構造を使用してマッピングされるアドレス空間の所与のページに記憶される。各ページテーブル40は、ページテーブル構造の所与のレベルに関連付けられ、1つのレベルのPTE42は、ページテーブル構造の次のレベルのページテーブル40へのアドレスポインタ48を含んでもよい。後続のページテーブルを示すPTE42は、テーブルエントリ又は分岐エントリとして知られている。ページテーブル構造の所与の分岐のためのページテーブルの最終レベルは、ブロックエントリ又はリーフエントリを含んでもよく、これは、変換が要求されたターゲットアドレスに対応する変換されたメモリアドレスを識別するためのアドレスポインタを指定する。図2に示す例では、レベル0、1及び2の示されたPTE42-0、42-1、42-2はテーブルエントリであり、レベル3のPTE42-3はブロックエントリである。
【0047】
メモリアクセス要求が、プロセッサコア4の処理パイプライン6によって、又は所与のマスタデバイス30によって発行され、特定のターゲットアドレス46に関連付けられたメモリ位置への読み取り又は書き込みアクセスを要求すると、対応するMMU12、32は、アドレス変換を実行して、ターゲットアドレス46を変換されたアドレス52に変換する。関連するアドレスマッピングが、TLB14、34内に既にキャッシュされている場合、変換されたメモリアドレスは比較的迅速に返され得るが、そうでなければ、ページテーブルウォークの少なくとも一部を実行することができる。
【0048】
図2は、アドレス変換の単一のステージに関連付けられたページテーブル構造を横断するためのフルページテーブルウォーク動作を示す。
・ 変換テーブルベースアドレスは、MMU12、32の変換テーブルベースレジスタ(TTBR)に記憶され、ページテーブル構造のレベル0のページテーブル40-0のベースアドレスを指す。
・ ターゲットアドレス46のレベル0のインデックス部分44-0は、レベル0のページテーブル40-0の選択されたPTE42-0にインデックスするために使用される。
・ 選択されたレベル0のPTE40-0は、ページテーブル構造の特定のレベル1のページテーブル40-1のベースアドレスを識別するアドレスポインタ48を含む。
・ ターゲットアドレス46のレベル1のインデックス部分44-1は、レベル1のページテーブル40-1からレベル1のPTE42-1を選択するために使用される。
・ 選択されたレベル1のPTE42-1は、レベル2のページテーブル40-2のベースアドレスを識別するアドレスポインタを指定する。
・ レベル2のPTE42-2は、ターゲットアドレス46のレベル2のインデックス部分44-2に基づいて、レベル2のページテーブル40-2から選択される。
・ レベル2のPTE44-2は、レベル3のページテーブル40-3のベースアドレスを識別するアドレスポインタを含む。
・ レベル3のPTE42-3は、ターゲットアドレス46のレベル3のインデックス部分44-3に基づいて、レベル3のページテーブル40-3から選択される。
・ レベル3のPTE42-3は、アドレスポインタが変換されたアドレス52の最上位部分50を提供するブロックPTEである。変換されたアドレス52の最上位部分50は、インデックス部分44-0~44-3に対応するターゲットアドレス46のビットを置き換える。ターゲットアドレス54の残りのビット54は、変更なしに、変換されたアドレス52の対応するビット54に直接マッピングされる。
【0049】
図2は、アドレス変換の単一のステージを示すが、2つのステージのアドレス変換を実装するMMUでは、アドレス変換の第1のステージは、仮想アドレスを中間物理アドレスに変換してもよく、アドレス変換の第2のステージは、中間物理アドレスを物理アドレスに変換することができる。しかしながら、アドレス変換の第1のステージ内のPTEによって提供されるアドレスポインタ48の各々は、それ自体が中間の物理アドレス(IPA)として指定されてもよく、したがって、ステージ1のページテーブル構造の次のレベルにアクセスできるようになる前に、アドレス変換の第2のステージにおける物理アドレス(PA)への変換を必要とする場合がある。また、TTBR内の変換テーブルベースアドレスは、IPAとして指定されてもよく、したがって、ステージ1のレベル0のページテーブルにアクセスできるようになる前に、ステージ2において変換する必要もあり得る。したがって、実際には、レベル1のページテーブル構造を通る各連続するステップは、ステージ2のページテーブル構造を通る複数レベルのページテーブルウォークによって分離されてもよい。すなわち、2ステージのアドレス変換にフルページテーブルウォーク動作が必要とされる場合、シーケンスは以下のとおりであってもよい。
・ ステージ2レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3(TTBR内のステージ1レベル0ベースアドレスをIPAからPAに変換するため);
・ ステージ1レベル0(IPAとして指定されたステージ1レベル1のベースアドレスを取得するため);
・ ステージ2レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3(ステージ1レベル1ベースアドレスをIPAからPAに変換するため)
・ ステージ1レベル1(IPAとして指定されたステージ1レベル2のベースアドレスを取得するため);
・ ステージ2レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3(ステージ1レベル2ベースアドレスをIPAからPAに変換するため)
・ ステージ1レベル2(IPAとして指定されたステージ1レベル3のベースアドレスを取得するため);
・ ステージ2レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3(ステージ1レベル3ベースアドレスをIPAからPAに変換するため)
・ ステージ1レベル3(IPAとして指定された変換されたアドレスを取得するため);
・ ステージ2レベル0;ステージ2レベル1;ステージ2レベル2;ステージ2レベル3(IPAからPAに変換されたアドレスを変換するため)。
【0050】
実際には、TLBが任意のレベルからPTEをキャッシュすることができるため、これらのページテーブルルックアップの全てがページテーブルウォークごとに必要とされるわけではないので、対応するPTEがTLBで既に利用可能である場合、一部のステップをスキップすることができる。
【0051】
図2は、ブロックエントリが3レベルのページテーブル40-3にある実施例を示しているが、単一の連続アドレスマッピングがアドレス空間のより大きな部分に使用される場合、ページテーブル構造のより高いレベルでブロックエントリを定義することも可能である。例えば、レベル1又はレベル2のPTEはブロックエントリであってもよく、この場合、ページテーブル構造のページテーブルウォークは、レベル1又はレベル2のルックアップ後に終了してもよく、レベルの全てを通過する必要はない場合がある。
【0052】
図2で58とラベル付けされた点線に関して示されているように、レベル0インデックス部分44-0について異なる値を有する異なるアドレスは、異なるアドレスポインタ48を有するレベル0のページテーブル40-0の異なるレベル0のPTE42-0にマッピングすることができ、その結果、それらは異なるレベル1のページテーブル40-1を指し、したがって、異なるアドレス46は、変換されたアドレスを暗示する最終的なブロックエントリに到達するために、ページテーブル構造を通る異なる分岐の別個の横断を必要とする場合がある。異なるページテーブル内のいくつかのエントリが後続のレベルで同じエントリへのポインタを含む場合、一部の分岐が再収束することが可能である。
【0053】
通常、ページテーブルは、テーブルがメモリ内のどこに存在するかを記述するために、絶対物理アドレス又は中間物理アドレスを使用する。しかしながら、不揮発性メモリ(NVM)26の場合、不揮発性メモリに永続ページテーブル断片を記憶することが有用であり得る。例えば、NVM26に記憶された実行可能ファイルは、相対ページテーブルの断片を含むことができる。実行可能ファイルをメモリにマップするために、OSは、NVM内の相対ページテーブルを指すページテーブルエントリ、例えば、L0エントリをセットアップすることができる。この動作は、実行可能ファイル全てのセクションをメモリに自動的にマップすることができる。絶対アドレスを有する従来のページテーブルとは異なり、OSは、NVMが新しいベースアドレスでマッピングされる場合、(例えば、それを異なるシステムに移動させることによって)ページテーブルを再配置する必要はない。
【0054】
図3は、このような相対アドレスポインタを実装するために使用することができるPTE42の例示的な構造を示す。テーブルPTE(分岐エントリ)のフォーマットを図3の上部に示し、ブロックPTE(リーフエントリ)のフォーマットを図3の下部に示す。両方のタイプのPTEは、PTE内の情報が有効であるかどうかを指定する有効ビット60を含む。したがって、オペレーティングシステムは、所与のページテーブル40内のPTEの全てをマッピングする必要はない。無効なPTEに対応するターゲットアドレスにアクセスが行われると、これはアドレス変換障害をトリガする可能性があり、これは例外をトリガする可能性があり、これは、管理プロセス(例えば、オペレーティングシステム又はハイパーバイザ)にアドレス空間を再マッピングさせて、アクセスされたアドレス領域のマッピングを提供させてもよい。
【0055】
PTE42は、PTEがテーブルPTE又はブロックPTEであるかどうかを示すテーブル/ブロックフラグ62を含んでもよい。図3の例では、テーブル/ブロックフラグ62が1の場合、PTEはテーブルPTEであり、テーブル/ブロックフラグ62が0である場合、PTEはブロックPTEである。
【0056】
両方のタイプのPTEは、このPTEに対応するアドレス空間の領域に関連付けられたメモリ属性64を指定してもよい。レベル0のPTEの場合、アドレス空間の対応する部分は、所与の値を有するレベル0のインデックス部分44-0を共有する全てのアドレスからなる領域である。レベル1のPTEの場合、対応するアドレス領域は、レベル0のインデックス部分44-0及びレベル1のインデックス部分44-1に対する所与の値のセットを共有する全てのアドレスから形成された領域である。レベル2のPTEの場合、対応するアドレス領域は、レベル0、レベル1及びレベル2のインデックス部分44-0、44-1、44-2の各々に対する所与の値のセットを有するアドレスで形成された領域である。レベル3のPTEの場合、アドレス領域は、レベル0からレベル3のインデックス部分44-0、44-1、44-2、44-3の全てに対する所与の値のセットを有するアドレスで形成される。対応するアドレス領域に定義された属性64は、例えば、領域が読み取り専用であるか、又は読み取り可能及び書き込み可能であるかどうかを指定することができる。属性はまた、領域が、それらが発行された順序と比較してメモリアクセスの再順序付けが許可されないデバイスタイプのメモリ領域であるかどうかを指定することもできる。また、メモリ属性64は、プロセッサコア4のどの特権レベルが対応するアドレス領域にアクセスすることを許可されるか、又はメモリの対応する領域がどのようにアクセスされることを許可されるかを制御するための他の情報を指定することができる。図3の例では、ブロックPTEは、テーブルPTEよりも大量の属性情報を指定することができるが、これは必須ではない。
【0057】
図3に示すように、テーブルPTEは、ページテーブル構造の次のレベルのページテーブル40内のPTEが絶対タイプ又は相対タイプであるかどうかを示す、次のレベルのPTEタイプインジケータ66(Rn+1)を含んでもよい。この例では、タイプインジケータ66が0である場合、次のレベルPTEが絶対タイプであることを示し、タイプインジケータ66が1の場合、次のレベルのPTEが相対タイプであることを示す。タイプインジケータ66のこのマッピングを使用することは、通常は0であると予想される予約ビットを、タイプインジケータ66を示すために再利用することができるので、相対タイプのPTEをサポートしないアーキテクチャのために書かれたレガシーソフトウェアとの互換性に有用であり得る。ブロックPTEは、ページテーブル構造のその分岐の最終レベルであるため、ブロックPTEについては次のレベルが存在しないため、ブロックPTEは、次のレベルのPTEタイプインジケータ66を指定しない。ブロックPTEでは、テーブルPTEのタイプインジケータ66と同じビット位置にあるビットは、将来の使用のために予約することができ、0に固定されるか、又は他の情報に使用することができる。
【0058】
以下に説明するR及びRn+1という表記では、ページテーブル構造のレベルnの所与のテーブルPTEについて、Rは、レベル-nのPTEが絶対タイプ(R=0)又は相対タイプ(R=1)であるかどうかを定義する、そのテーブルPTEの親PTEに指定されたタイプインジケータ66を指し、Rn+1は、ページ構造の次のレベルのレベル-(n+1)PTEが絶対タイプ(Rn+1=0)又は相対タイプ(Rn+1=1)であるかどうかを定義する、レベルnのPTEに指定されたタイプインジケータ66である。
【0059】
テーブル及びブロックの両方のPTEは、アドレスポインタ68、72を指定する。ページテーブル構造の前のレベルの親PTEがR=0と指定した場合、アドレスポインタは絶対値である。テーブルPTEの場合、アドレスポインタ68は、ページテーブル構造の次のレベルのページテーブル40のベースアドレスを決定するために使用される。現在のレベルのレベル-nのPTEが絶対タイプである場合、アドレスポインタは、次のレベルのページテーブルのベースアドレスを直接指定する絶対値である。アドレスポインタフィールド68をより短くするために、0に等しいビットの下部は、PTEのレベルから暗示され得るため、アドレスポインタフィールド68で明示的に指定される必要はない。絶対タイプのPTEとして識別されたブロックPTEの場合、絶対アドレスポインタ値72は、変換されたアドレスの最上位ビットを識別し、変換されたアドレス52の最下位ビット54は、図2に示すように、ターゲットアドレス46の対応するビット54から直接マッピングされている。
【0060】
次のレベルのPTEが相対タイプ(Rn+1=1)であることを指定するテーブルPTEはまた、相対タイプの次のレベルのPTEに適用される領域サイズを定義するサイズパラメータ70(BSn+1)を指定する。領域サイズBSn+1は、相対タイプの次のレベルのPTEによって指定される相対アドレスオフセットの基準として使用される基準点ベースアドレスBn+1を計算するために使用することができる。
【0061】
領域サイズは、サイズを明示的に示さないが、以下のようにサイズを計算するために使用することができる記憶されたパラメータBSを使用して、2の累乗サイズとして定義することができる。以下に説明するBS及びBSn+1という表記では、ページテーブル構造のレベルnの所与のテーブルPTEについて、BSは、そのテーブルPTEの親PTEに指定されたサイズパラメータ70を指し、BSn+1は、レベル-(n+1)のPTEを定義する、レベルnのPTEで指定されたサイズパラメータ70である。記憶されたサイズパラメータBSは、関係
【数1】
に従って対応するアドレス領域サイズSにマッピングすることができ、「bias」は、0以上の整数である任意のバイアス定数である。所与のベースアドレスBは、(S-1)の逆数に従って計算されたビットマスクに従って、最下位ビットを0にクリアすることによってサイズ整合され得る。例えば、バイアスが0である場合、異なる領域サイズ及び対応するビットマスクを識別するいくつかの例は、以下のとおりである。
【0062】
【表1】
【0063】
実際には、サポートされる必要がある最小領域サイズは、2バイトを超える場合があるため、最小サイズ未満の領域サイズを符号化するための符号化空間を提供する必要を回避することにより、バイアスを使用してサイズインジケータをより少ないビットに圧縮することができる。例えば、必要とされる最小領域サイズが1kB(1024バイト)である場合、必要とされるSの最小値は10であり、よってバイアスを10に設定して、最小領域サイズをBS=0を使用して定義することができる。
【0064】
【表2】
【0065】
この手法は、必要とされる最小サイズと最大サイズとの間の領域サイズを符号化するために使用されるビットをより少なくすることができる。
【0066】
図4に示すように、相対タイプのPTEの場合、(サイズパラメータに基づいて決定された)ビットマスクをレベルnのPTEを含むページテーブルのベースアドレスTAとビット単位のAND演算で組み合わせることによって、相対タイプの所与のレベル-nのPTEに対する基準点ベースアドレスBを計算して、TAの最下位ビットを0にクリアすることができ、クリアされるビットの数は指定されたサイズに依存する。これにより、テーブル構造のレベル(n-1)の親PTE内のパラメータBSに指定されたサイズに対応するサイズ境界に整合されたサイズ整合基準点ベースアドレスBが生成される。
【0067】
相対タイプのレベル-nのテーブルPTEの場合、ページテーブル構造のレベルn+1の子ページテーブルのベースアドレスTAn+1は、レベル-nのPTEのアドレスポインタフィールド68に指定された基準点ベースアドレスBと相対オフセット値rTAn+1との和に相当して取得される。これは、加算器を使用して計算することができるが、相対オフセット値rTAn+1を基準点ベースアドレスBの非クリア部分の最下位端に単に付加する、又はrTAn+1でBをOR演算することでより効率的になってもよく、Bがサイズ整合されたときに加算と同じ結果を達成する。
【0068】
オフセットを基準点ベースアドレスと組み合わせる前に、相対オフセット値は、基準点ベースアドレスBとオフセットとの和がサイズSの領域の終わりをマークするアドレスB+Sを超えて延在できないことを保証するために、(S-1)のバイナリ表現に対応するマスクでAND演算することによってその上位ビットを有することができる(このマスクは、基準点ベースアドレスBを生成するために適用されるビットマスクの逆数である)。また、アクセスされたページテーブルの端部も領域B+Sの端部を超えて延在できないことを確実にするために、マスクを適用することによってオフセットの特定の数の最下位ビットを0にクリアすることもでき、クリアされるビットの数は、グラニュルサイズ(1つのページテーブルのサイズ)及び/又はテーブル構造内のページテーブルのレベルに依存する。これらは、以下のステップ114に関してより詳細に論じられる。いくつかの実施態様では、(オフセットの上端又は下端のいずれかで)マスクされたビットのいずれかが非ゼロである場合、これは無効に定義されたPTEを示し得るため、障害がトリガされてもよい。
【0069】
同様に、相対タイプのレベル-nのブロックPTEは、アドレスポインタフィールド72における相対オフセット値を指定し、この相対オフセット値から、変換されたアドレスの上部を、ベースアドレスBとブロックPTEのアドレスポインタフィールド72に指定された相対オフセット値rPAとの和に相当して算出することができる(前述したように同じくオフセット値をマスクすることによって)。ここでも、これは必ずしも加算を必要とするわけではなく、シフタ及び/又はOR論理で行うことができる。
【0070】
この例では、0 PTEのレベルを含む任意のテーブルPTEとして、現在のPTEにおいて絶対/相対タイプフラグ66を1に設定することにより、次のレベルが相対アドレスを提供することを指定してもよく、これは、任意の相対アドレスポインタを含むことができる第1のレベルがレベル1のページテーブルであり、レベル0のページテーブルがデフォルトで絶対PTEであってもよいことを意味する。しかしながら、他の実施例では、TTBRは、レベル0のページテーブルが絶対であるか相対であるかを示すタイプインジケータを指定して、レベル0のページテーブル内に相対タイプのPTEも提供することを可能にすることができる。
【0071】
特定のレベルのPTEが次のレベルが相対であることを指定すると、その後の任意のレベルも相対タイプである必要があり、相対PTEの子孫PTEが絶対PTEとなることは許容されない。したがって、図4に示すように、0テーブルエントリのレベルで指定されたアドレスポインタTA1は、常に、絶対ポインタであり、ページテーブル構造内の特定のレベルの1のページテーブル40-1を指す。
【0072】
図4の例では、レベル0のPTEは、レベル1のページテーブルが相対タイプであると指定し、図4に示されるような特定の領域サイズS1に対応するサイズパラメータ70を指定すると仮定する。基準点ベースアドレスB1は、レベル1のページテーブル40-1のテーブルアドレスTA1をサイズS1に関連付けられたサイズ境界にサイズ整合することによって形成される。なお、図4では、40-1の網掛け部分は、レベル1のページテーブル自体に対応し、基準点ベースアドレスB1から始まるサイズS1の網掛けされていない領域80は、レベル1のPTEによって指定されたアドレスポインタ及びそれらのPTEのいずれかの子孫エントリが定義されることが許容される境界アドレス領域であることに留意されたい。PTEは、ターゲットアドレスのレベル1のインデックス部分44-1に基づいて、レベル1のページテーブル40-1から選択される。レベル1のページテーブルのインデックス付けされたエントリで指定されたベースアドレスB1及び相対オフセットrTA2の合計は、ページテーブル構造の次のレベルのレベル2のページテーブル40-2のテーブルアドレスTA2を提供する。レベル1のPTEは、レベル2の子のPTEの境界領域のサイズS2を識別するサイズパラメータBS2を指定する。ここでも、サイズS2のサイズ境界にTA2をサイズ整合させることにより、レベル2のページテーブル40-2で指定された相対アドレスポインタ72の基準点であるベースアドレスB2を生成する。この例では、レベル2のPTEはブロックPTEであり、相対オフセットrPAを使用して指定されたアドレスポインタは、変換されたアドレスPAを与えるため、ページテーブル構造の更なる横断はない。
【0073】
したがって、要約すると、ページテーブルウォークは、TTBR及びL0ページテーブル内の絶対ポインタで開始する。L0を含む任意のテーブルは、現在のページテーブル内の相対的な次のビットを設定することによって、次のレベルが相対アドレスを提供することを指定してもよい。レベルが、次のレベルが相対的であることを指定すると、任意の後続レベルもまた相対的でなければならない。
【0074】
次のレベルが相対アドレスを提供することを指定する場合、現在のレベルはまた、次のレベルがアドレス指定できる許容メモリ領域のサイズSを指定する。次のレベルへのポインタTAn+1及びレベルのサイズSn+1に基づいて、そのレベルの境界メモリ領域を定義する。境界メモリ領域は、自然に整合され、ベースアドレス、Bn+1、及びサイズSn+1を有する。ベースは、テーブルアドレスを整合することによって計算される:B=TA&~(S-1)。相対ポインタは、現在のテーブルが存在する領域のベースに対して解決される。例えば、TAn+1=B|rTAn+1である。相対ブロックエントリは、相対テーブルポインタと同じ方法で解決される。
【0075】
MMUは、相対アドレスポインタを使用して定義されたページテーブル構造の断片を確実に不揮発性メモリ26に記憶されるようにするために有用であり得るいくつかの安全確認を実装することができ、その結果、断片は、ページテーブル構造をより高いレベルで定義するオペレーティングシステム又はハイパーバイザの開発者以外の潜在的に信頼できないソフトウェア開発者によって書かれた実行可能なコード内に埋め込まれてもよい。これらの確認は、以下のとおりであってよい。
・ レベルnにおける境界メモリ領域80は、レベルn-1のサブセットであるべきである。そうでない場合、CPUは障害を起こすことになる。これは、テーブルエントリ及びブロックエントリの両方に当てはまる。レベルnにおけるブロックの開始及び終了の両方は、レベルn-1の領域内に入るべきである。
・ レベルnのテーブルエントリは、レベルn-1が相対としてフラグ付けされている場合、相対としてフラグ付けされるべきである。そうでない場合、CPUは障害を起こすことになる。
【0076】
これらの確認の組み合わせは、所与のPTEがページテーブル構造の次のレベルを相対としてマークすると、そのPTEの全ての後続の子孫もまた相対であることを確実にするので、オペレーティングシステムは、絶対アドレスポインタを絶対PTEを含む最後のレベルで変更するだけで、ページテーブル構造のその分岐によって指し示されるアドレス空間の全体部分を再マッピングすることができる。また、それは、PTEの後続のレベルで定義された任意の相対アドレスポインタが、相対タイプのPTEとして定義された最高レベルのPTEで指定された、境界アドレス領域80の外側の任意のアドレスを指すことができないことが保証され得ることを意味する。
【0077】
図4に示される手法では、子エントリのサイズパラメータ70がその親エントリのサイズパラメータ以下である限り、子PTE及び子孫PTEのアドレス領域は常に、最上位の相対タイプのPTEによって定義される境界アドレス領域エントリ内にあり、これは、ページテーブル構造の相対的な断片が信頼されていないデバイスである、又はページテーブルのその断片に関連付けられたソフトウェアの開発者が信頼できない場合であっても、オペレーティングシステム又はハイパーバイザなどのより高い特権プロセスは、アドレス空間の所与の領域80が相対ページテーブルの使用に適したものとしてマッピングされると、ページテーブル構造の後続のレベル内で別の当事者によって提供される全てのマッピングは、領域80の外側に延在せず、したがってアドレス空間全体の他の領域内のアドレスは、不適切なアクセスから安全であり得ることを依然として信頼できることを意味する。これは、相対オフセットのベースアドレスを計算するためのサイズ整合の結果として、レベル2に対して定義された領域B2からB2+S2のポインタが、レベル1の境界領域として定義される領域80内にあるように制限されている図4で見ることができる。
【0078】
図5は、MMU12によって使用されるエントリを見つけるためのページテーブルウォークを実行する方法を示すフロー図である。図5は、ページテーブル構造の所与のレベル、レベルnに達するときに実行されるステップを示す。次いで、この方法は、親PTEから子PTEまでアドレスポインタを横断することによって到達される各レベルに対して繰り返されてもよいことが理解されよう。図2の例では、nは0~3であってもよく、すなわち、ページテーブルレベルの最大数は4であるが、他の実施例は、4よりも小さい又はより大きい最大数のレベルをサポートすることができる。
【0079】
また、全てのメモリアクセスがページテーブルウォークを必要とするわけではないことが理解されよう。ターゲットアドレスと変換されたアドレスとの間の完全な変換マッピングが既にTLBにキャッシュされている場合、ページテーブルウォークは必要とされない。
【0080】
また、ページテーブルウォークが必要とされる場合、PTEのレベルの全てを横断する必要はない。いくつかのTLBは、部分的な変換(例えば、VAからツリー構造の特定のレベルのPTEのアドレスへのマッピング、例えばVAからレベル2へのマッピング)をキャッシュすることができる。この場合、TLB内のキャッシュされた情報を使用してレベル2から関連PTEを取得し、次にレベル3でアクセスされるべき次のレベルのPTEの識別に進むことができるため、レベル0及び1でページテーブル構造をウォークする必要はない。
【0081】
したがって、図5は、ページテーブル構造の特定のレベルnに対してページテーブルアクセスが必要である場合に実行されるステップを示す。ステップ100において、ページテーブルウォーク回路16、36は、ページテーブル構造のレベルnで関連PTEを取得する。必要なPTEのアドレスを識別するために、ページテーブルウォーク回路16、36は、ターゲットアドレスのレベル-nのインデックス部分44-nから決定されたオフセットにレベル-nのページテーブルベースアドレスを追加する(ここでも、ベースアドレスがサイズ整合されている場合、シフタ又はORゲートによって同等の結果が得られ得るため、加算器は不要であってもよい)。n=0の場合、レベル0のベースアドレスは、変換テーブルベースレジスタ(TTBR)から取得され、n>0である場合、レベル-nのページテーブルのベースアドレスは、レベルn-1の親PTEのアドレスポインタに基づいて識別される。いずれの方法でも、必要なPTEのアドレスが識別される。ページテーブルウォークの現在のレベルが、仮想アドレスから物理アドレスに直接変換する1ステージMMU、又は中間物理アドレス(IPA)から物理アドレス(PA)に変換する2ステージMMUのステージ2に関連付けられる場合、レベル-nのベースアドレスTn及びレベル-nのインデックス部分44-nから得られたアドレスは、メモリシステムから必要なPTEを読み出すためのメモリアクセス要求において指定され得る物理アドレスである。一方、変換プロセスのこのステップが2ステージMMUのステージ1に関連する場合、PTEの取得されたアドレスはIPAであり、これは必要なPTEの物理アドレスを取得するために更なるステージ2の変換を必要としてもよい。
【0082】
このため、ターゲットアドレス46のレベル-nのインデックス部分44-nに対応するPTEは、ステップ100で、TLB14、34から、又はメモリシステムのいずれかから得られる。ステップ102において、ページテーブルウォーク回路16、36は、ページテーブル構造の前のレベルn-1において、親PTEによってどのタイプのPTEが示されたかを識別する。例えば、図2を参照すると、レベル2のPTE42-2について、親PTEは、レベル2のPTE42-2を含むレベル2のページテーブル40-2へのアドレスポインタを含むレベル1のPTE42-1であろう。親PTE内のタイプインジケータ66が、レベルnのPTEが絶対タイプであることを示した場合、ステップ104において、そのPTEに直接指定された絶対アドレス68、72から、レベルnのPTEに対するアドレスポインタが決定される。レベルnのPTEがブロックPTEである場合、これはページテーブル構造の横断を終了する(ただし、変換されたアドレスがIPAである場合、ステージ2のページテーブル構造の更なる横断が依然として必要となり得る)。レベルnのPTEがテーブルPTEである場合、アドレスポインタ68は、次のレベルのページテーブルのアドレスを識別し、これはその後、図5の方法の更なるパスで取得することができる。
【0083】
ステップ102において、レベルn-1の親PTEによって、レベルnのPTEが相対タイプ(R=1)であることが示された場合、ステップ106において、ページテーブルウォーク回路16、36は、レベル-nのPTEが、レベルn+1のその子PTEが絶対タイプ(Rn+1=0)であることを示すタイプインジケータ66を指定しているかどうかを決定する。指定している場合、ステップ108において、障害がトリガされる。したがって、相対PTEは、更なる相対PTEを子として指定するのみであり得る。これにより、ページテーブルの相対部分における全ての後続のPTE内のアドレスポインタを個別に再マッピングすることなく、ページテーブル構造内のその祖先のうちの1つに定義された最後の絶対ポインタを単に更新することによって、アドレステーブルの相対断片を再マッピングできることが確実になる。
【0084】
ステップ110において、レベルn-1においてその親PTEによって指定されたサイズパラメータ70(BS)よりも大きいサイズを示すサイズパラメータ70(BSn+1)をレベル-nのPTEが指定しているかどうかを決定するために、第2の安全確認が実行され得る。レベルn-1の親PTEによって指定されたサイズが、レベル-nの子PTEによって指定されたサイズよりも大きい場合、ステップ108で再び障害が通知される。レベルnにおける相対オフセットのベースアドレスは、レベル-nのページテーブルのテーブルアドレスのサイズ整合バージョンであり、親から子へのサイズ増加を防止することにより、ページテーブルの相対部分内の任意の後続のオフセットが、ページテーブル構造を通る現在の分岐で遭遇する最初の相対PTEについて定義された境界領域内にあることが保証される。
【0085】
ステップ106及び110における確認は、どちらの順序で実行されてもよく、互いと並行して実行されてもよい。
【0086】
ステップ106、110のいずれも障害をトリガしない場合、すなわち、レベルnの子PTEが、レベルn+1が相対であることを指定し、その親PTEで指定されたサイズ以下のサイズを指定する場合、方法はステップ112に進む。ステップ112において、レベル-nのPTEに対する基準点ベースアドレスBは、現在のレベル-nのページテーブル40-n(そこから読み取り中のレベル-nのPTEが抽出された)のテーブルアドレスTAを、レベルn-1の親PTEで指定されたサイズパラメータBSによって識別されたサイズSに対応する自然アドレス境界に整合させることに対応する、サイズ整合アドレスとして決定される。自然アドレス境界は、サイズの整数倍に対応する境界である(例えば、4kBサイズでは、アドレス境界は4kB、8kB、12kBなどである)。ベースアドレスB及びサイズSは共に、レベルnの現在のPTE及び後続の子孫PTEの相対に指定されたアドレスポインタが定義される境界アドレス領域を定義する。
【0087】
ステップ114において、レベルnのPTEのアドレスポインタフィールド68、72で指定された相対アドレスオフセットにマスキングが適用される。マスキングでは、マスク(S-1)に基づくマスキングによってオフセットの一部の上位ビットがゼロにクリアされ、マスキングによって一部の下部ビットがゼロにクリアされる。テーブルエントリの場合、下位ビットは、マスク~(G-1)に基づいてクリアされ、Gはページテーブル構造のグラニュルサイズである。ブロックエントリの場合、クリアされる下位ビットは、ブロックエントリを含むレベルよりも大きい全てのXのフィールド54及び44-Xに対応するビットである(すなわち、オフセットは、ページテーブル構造のそのレベルのブロックエントリについてVAから直接マッピングされるビットに影響しない)。これらのマスキング動作は、アドレスポインタを使用してアクセスされるページテーブル又はグラニュルの開始及び終了の両方が、ベースアドレスBで始まるサイズSの領域内にあることを確実にする。いくつかの実施例では、マスクされたビットのいずれかが元の(マスクされていない)相対アドレスオフセットにおいて非ゼロであった場合、障害がトリガされてもよい。ステップ114において、アドレスポインタは、ステップ112で決定された基準点ベースアドレスBn及びマスクされた相対アドレスオフセットから、基準点ベースアドレスと相対アドレスオフセットとの和に相当する結果を生成することによって決定される。次に、アドレスポインタを使用して、ページテーブルの次のレベルn+1の子PTEのアドレス(レベル-nのPTEがテーブルPTEである場合)、又は変換されたアドレス(レベル-nのPTEがブロックPTEである場合)のいずれかを形成することができる。
【0088】
レベル-nのPTEがブロックPTEである場合、ページテーブル構造を通る更なるステップは必要とされない(前述したように、返されたアドレスがIPAである場合、アドレス変換の第2のステージが必要となり得る)。レベル-nのPTEがテーブルPTEである場合、nは1だけ増分され、ページテーブル構造の次のレベルについて図5の方法が再び繰り返される。
【0089】
上記の実施例では、サイズパラメータBSn+1は、親PTE内で明示的に指定され、ページテーブル構造の次のレベルにおける子PTEの境界アドレス領域のサイズを示す。また、上記の実施例では、相対アドレスオフセットを用いて相対アドレスポインタが計算されるベースアドレスBは、その親PTEによって指定されたサイズパラメータBSに基づいて決定されたサイズ境界に、レベルnのページテーブルのアドレスをサイズ整合することによって暗黙的に決定される。
【0090】
しかしながら、図6に示すように、別の手法は、テーブルPTEがサイズパラメータ70の代わりにブロック識別子90を指定できることであり得る。ブロック識別子90は、ページテーブル構造とは別個のテーブル構造であるブロックテーブル94内の特定のブロックエントリ92を識別する。各ブロックエントリ92は、ページテーブル構造の次のレベル(n+1)における子PTEのアドレスポインタを決定するために使用するベースアドレスBn+1及びサイズパラメータBSn+1として使用してことができるベースアドレス96及びサイズパラメータ98を指定することができる。アドレスポインタ68は、依然として前述のような相対オフセットを更に指定することができ、他の全てのフィールド60、62、66、64は、図3の例と同じであり得る。
【0091】
したがって、図6に示されるように、ベースアドレス又はサイズパラメータがPTE自体に明示的に示されることは必須ではない。
【0092】
図6に示される手法が使用される場合、子PTEが親からブロック仕様を「継承する」ことを可能にする機構が提供されてもよい。これは、「親によって定義されたブロックに留まる」ことを意味するために所定のブロック識別子(例えば、ブロックID 0)を予約することによって、又はブロック仕様を更新しない限り、後続の相対タイプインジケータ66(又は以下の図7の例における子孫エントリ制限フラグ)が子エントリに設定されない(その場合、親からのプロパティを単に継承する)という規則を有することによって実施することができる。このような継承メカニズムを提供することは、子エントリ自体がブロックテーブル上の情報を指定する必要がないことを意味するため有用であり、これは、ブロックテーブルがOS/ハイパーバイザによって管理されてもよく、ページテーブル断片が取り外し可能な(不揮発性)媒体上に存在してもよいためセキュリティを向上させ、その結果、取り外し可能な媒体上のブロックテーブルからの情報は符号化しないことが望ましい。
【0093】
上述の実施例では、PTEが相対タイプとしてマークされると、これはまた、相対タイプのPTEの子孫PTEが、相対PTEの最初のレベルに対して定義された特定の境界アドレス領域80内にあるアドレスポインタを指定するように制約されることを暗示する。したがって、相対/絶対タイプインジケータ66はまた、PTEの子孫エントリが特定の境界アドレス領域内のアドレスポインタを定義するように制限されているかどうかを示す子孫エントリ制限インジケータであると考えることができる。しかしながら、他の手法では、ページテーブル構造内の後続のレベルのアドレスポインタ上のそのような境界を、絶対タイプのPTEに適用することが望ましい場合がある。
【0094】
したがって、いくつかの実施態様では、図7に示されるPTEフォーマットを使用してもよい。PTEのフィールド64、66、68、70又は90、62及び60は、図3又は図6と同様であってもよい。しかしながら、図7において、PTEはまた、任意の子孫エントリが、定義された境界アドレス領域80内のポインタを指定することのみに制限される(Dn+1=1)か、又は境界領域80の外側のポインタを指定することを許可される(Dn+1=0)かを示す子孫エントリ制限フラグ120を含んでもよい。境界アドレス領域は、図6に示すように、ブロックテーブル内のベースアドレス及びサイズのいずれかを介して(したがって、境界領域の比較的恣意的な定義を可能にする)、又は図4に示されるように、ページテーブルの親PTEによって指定されたサイズに基づいて、ページテーブルの現在のレベルのベースアドレスをサイズ整合することによって定義することができる。
【0095】
相対PTEを含むテーブル構造の分岐について、サイズ整合されたベースアドレスからの相対オフセットを使用したアドレスポインタの計算、及び相対アドレスオフセットに適用されるマスキングは、(ステップ110に関して論じたように、親から子へサイズを増やすことができない場合)、子孫PTEが、以前のPTEに対して定義された境界領域の外側にアドレスポインタを定義できないことを保証してもよい。
【0096】
しかしながら、ページテーブルの絶対部分について、又はブロックテーブル内の任意のベースアドレス及びサイズを使用して境界領域が定義される相対PTEの場合、所与のレベルnのアドレスポインタ68は、ページテーブル構造の同じ分岐内の以前の領域に対して定義された境界アドレス領域の外側の点に定義され得る。例えば、図7では、レベル0のページテーブル40-0内のPTEは、その子孫を「子孫エントリ制限」として定義するためにDn+1=1を定義する。レベル0のPTEは、レベル1のその子PTEのための境界アドレス領域80を定義する。この実施例では、境界領域は、ベースアドレスB1で始まり、サイズS1を有する。レベル1のPTEで指定されたアドレスポインタがその領域内にある間、この例におけるレベル2の子PTEは、レベル1に定義された境界アドレス領域80の外側の場所を指す絶対アドレスポインタ68を指定し、それにより、ページテーブルウォーク回路16、36がトリガされて障害を通知する。対照的に、L0 PTE及びL1 PTEの両方の子孫エントリ制限フラグ120が0であった場合、L2 PTE内のアドレスポインタが、以前のL0 PTEの境界領域80の外側に延在する場合であっても、(少なくとも絶対タイプのPTEについて)障害は生成されない。
【0097】
いくつかの実施形態では、所与のレベルのPTEについて定義された境界アドレス領域を追跡するために、いくつかの追跡情報は、例えば、境界アドレス領域のベースアドレス及びサイズ、又は境界アドレス領域の開始及び終了アドレスを定義するページテーブルウォーク回路16、36によって記録されてもよい。後続のレベルで子孫PTEに遭遇すると、ページテーブルウォーク回路16、36は、そのPTEのアドレスポインタを、その祖先PTEによって定義された境界アドレス領域と比較して、障害を通知するかどうかを決定することができる。ページテーブル構造の異なるレベルのPTEについて、複数の追跡情報セットを維持することができる。
【0098】
あるいは、境界アドレス領域が、上述のようにページテーブルアドレスのサイズ整合バージョンとして定義される場合、この場合、親及び子エントリのサイズパラメータの単純な比較は、後続のアドレスポインタの境界確認を実装するのに十分であり得るため、この追跡情報を記憶する必要はない。これは、ページテーブルウォーク回路16、36がアドレスを比較し、ページテーブルウォーク内の以前のPTEによって定義される境界アドレス領域に関する追跡情報を記憶するための、より少ないハードウェアを有し得るため、より効率的であり得る。
【0099】
アドレスポインタが絶対PTE及び相対PTEの特定の領域境界によって制限されることを可能にすることにより、これにより、オペレーティングシステム又はハイパーバイザは、ページテーブル構造の特定のサブ部分の管理を他のソフトウェアプロセス又は不揮発性メモリ26に記憶される特定の永続的な許容可能コードのソフトウェア開発者に委譲することができ、アドレス空間の特定の領域80へのマッピングとして特定のレベルのPTEを定義したことを確信して、子孫エントリによって生成される任意の後続のマッピングもその領域内にあることが保証されるので、悪意のある者が子孫PTEを不適切なアドレスを指すように変更できないことが保証される。
【0100】
いくつかの実施例では、相対タイプのような後のPTEの指示によってDn+1=0の表示を上書きすることができ、すなわち、相対タイプのPTEは、デフォルトでは「子孫エントリ制限」と見なされ得るが、絶対タイプのPTEは、「子孫エントリ制限」(Dn+1=1)又はそうでない(Dn+1=0)のいずれかであってもよい。
【0101】
他の実施例はまた、相対タイプのPTEを「子孫エントリ制限付き」(Dn+1=1)又はそうでない(Dn+1=0)のいずれかとして区別することができる。これにより、監視プロセスがページテーブル構造の上位レベルを制御して、ページテーブル構造の後のレベルを定義するデバイスが信頼できるかどうかを決定することができ、それに応じて子孫エントリ制限フラグ120を設定することができる(信頼できない場合はDn+1=1、信頼できる場合はDn+1=0)。
【0102】
図7は、絶対/相対タイプインジケータ66と、子孫エントリが制限されているかどうかのインジケータ120とを組み合わせたPTEフォーマットを示しているが、子孫エントリ制限インジケータ120は、相対タイプのPTEを全くサポートしないPTEフォーマットで提供することもでき、この場合、絶対/相対タイプインジケータ66を省略することができる。
【0103】
図8は、使用され得るシミュレータの実装形態を示している。先に説明した実施形態は、当該技術をサポートする特定の処理ハードウェアを動作するための装置及び方法の観点から本発明を実装するものであるが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態に従った命令実行環境を提供することも可能である。このようなコンピュータプログラムは、ハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、シミュレータと呼ばれることが多い。シミュレータコンピュータプログラムの種類には、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータが含まれる。典型的には、シミュレータの実装形態は、シミュレータプログラム210をサポートする、任意選択的にホストオペレーティングシステム220を実行するホストプロセッサ230上で実行されてもよい。いくつかの構成では、ハードウェアと提供される命令実行環境との間に複数のシミュレーション層が存在してもよく、及び/又は、同じホストプロセッサ上で提供される複数の異なる命令実行環境が存在してもよい。歴史的に、合理的な速度で実行するシミュレータの実装形態を提供するためには、強力なプロセッサが必要とされてきたが、互換性又は再利用の理由から別のプロセッサにネイティブなコードを実行したい場合など、特定の状況では、そのようなアプローチが正当化される場合がある。例えば、シミュレータの実装形態では、ホストプロセッサのハードウェアではサポートされていない追加機能を備えた命令実行環境を提供すること、又は異なるハードウェアアーキテクチャに典型的に関連する命令実行環境を提供することができる。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
【0104】
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、同等の機能を適切なソフトウェア構成又は機能によって提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、ソフトウェアのデータ構造としてシミュレーションされた実施形態で実装することができる。先に説明した実施形態で参照されるハードウェア要素の1つ以上がホストハードウェア(例えば、ホストプロセッサ230)上に存在する構成では、いくつかのシミュレートされた実施形態は、適切な場合にはホストハードウェアを利用してもよい。
【0105】
シミュレータプログラム210は、コンピュータ読み取り可能な記憶媒体(非一時的媒体であってもよい)に記憶されてもよく、シミュレータプログラム210によってモデル化されているハードウェアアーキテクチャのアプリケーションプログラムインタフェースと同じであるプログラムインタフェース(命令実行環境)をターゲットコード200(アプリケーション、オペレーティングシステム、及びハイパーバイザを含んでもよい)に提供する。したがって、上述のプロパティを有するページテーブル構造を定義する命令を含むターゲットコード200のプログラム命令は、シミュレータプログラム210を使用する命令実行環境内から実行されてもよく、それによって、上述した装置2のハードウェア機能を実際には有していないホストコンピュータ230は、これらの機能をエミュレートすることができる。
【0106】
シミュレータプログラム210は、ターゲットコード200によって指定された命令を、ホストハードウェア230によってサポートされるネイティブ命令を使用して定義された対応する機能にマッピングする命令デコードプログラムロジック212を含んでもよい。シミュレータプログラム210はまた、上述の装置2のMMU12、32及びページテーブルウォーク回路16、36の機能をエミュレートするホストハードウェア230によってサポートされるネイティブ命令を使用して定義されたメモリ管理プログラム論理214及びページテーブルウォークプログラム論理216を含む。メモリ管理プログラム論理214は、シミュレータプログラム210がシミュレートされたアドレス空間218の存在をシミュレートすることを可能にしてもよい。ターゲットコード200の観点から、データ及び命令は、シミュレートされたアドレス空間218に基づいてアドレス指定されたメモリに記憶されるが、メモリ管理プログラム論理214は、上述のようにページテーブル構造219の制御下で、シミュレートされた仮想アドレスのシミュレートされた物理アドレスへのアドレス変換、続いて、シミュレートされた物理アドレスのホストハードウェアによって使用されるアドレスへの更なるマッピングを制御することができる(この更なるマッピングは、ホストハードウェア230のメモリに関連データを実際に記憶する物理アドレスを取得するために、ホストハードウェア230のMMUによるネイティブアドレス変換を含んでもよい)。したがって、シミュレートされたアドレス変換を実行するとき、ページテーブル構造219は、上述したのと同じ方法で絶対又は相対アドレスポインタを使用してページテーブルウォークプログラム論理216によってウォークされてもよい。これにより、上述の特徴をサポートする装置用に設計されたソフトウェアが、それらの特徴をサポートしないホストプラットフォーム上で実行することが可能になる。これは、欠けている機能が、シミュレータプログラム210によってソフトウェア内でエミュレートされ得るためである。
【0107】
ターゲットプログラムの命令を実行するための命令実行環境を提供するようにホストデータ処理装置を制御する、図8に示されるシミュレータプログラム210は、上述したタイプのページテーブル構造に基づいてページテーブルウォークのソフトウェアサポートを提供することができるコンピュータプログラムの一例である。
【0108】
しかしながら、ページテーブルウォークプログラム論理216を有することができるが、命令デコードプログラムロジック212、メモリ管理プログラム論理214又はシミュレートされたアドレス空間218のエミュレーションを提供しなくてもよい他のソフトウェア実施例が提供されてもよい。
【0109】
例えば、ソフトウェア制御されたページテーブルウォークの第2の実施例では、ホスト装置は、それ自体のTLBハードウェア及びメモリ管理ハードウェアを有してもよいが、TLBのデータ記憶は、オペレーティングシステムなどのソフトウェアによって少なくとも部分的に管理されてもよい。したがって、この場合、ページテーブル構造は、シミュレートされたアドレス空間内ではなく、ホスト装置のホストアドレス空間に記憶される。ホスト装置は、TLBにおけるアドレス変換ミスの要求時にページテーブルウォークをトリガするためのハードウェアを有することができるが、更に、TLBはソフトウェア管理されてもよく、その結果、オペレーティングシステムは、指定されたターゲットアドレスに基づいてページテーブル構造から特定のPTEのフェッチを要求するためのページテーブルウォークプログラム論理216を含んでもよく、フェッチされたPTEに基づいた情報は、その後TLBにロードされる。このようなページテーブルウォークプログラム論理216は、上述のように、子孫エントリ内のポインタに対する制限を有する相対ページテーブル又はページテーブルの使用をサポートすることができる。
【0110】
第3の実施例では、ホスト装置は、子孫エントリがポインタを定義する領域に対する制限を許可しない絶対ページテーブル又はページテーブルに対してのみハードウェアサポートを有してもよいが、相対ページテーブル又は子孫エントリ制限PTEのためのハードウェアサポートを提供するシステムに対して書き込まれたソフトウェアをホスト装置が実行できるようにすることが望ましい場合がある。この場合、ホスト装置上で実行するソフトウェア(例えばオペレーティングシステム)は、ソフトウェア制御下で相対ページテーブルのページテーブルウォークを実行し、識別されたアドレス変換マッピング及びページテーブルエントリを、アドレス空間の異なる部分に記憶されたシャドウページテーブル構造内に定義された対応する絶対タイプのPTEにマッピングすることができる。次いで、ホストハードウェアのTTBRは、実行されるターゲットソフトウェアによって使用される実際の(相対)ページテーブル構造の代わりに、シャドウ(絶対)ページテーブル構造を指すことができる。したがって、これもまた、上述のような相対アドレスポインタ及び/又は子孫エントリ制限インジケータの使用に基づいて、ページテーブル構造からページテーブルエントリを取得するためのページテーブルウォークプログラム論理216を含むコンピュータプログラムの一例であってもよい。
【0111】
本出願において、「~ように構成される(configured to)」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味するために使用される。このコンテキストにおいて、「構成」は、ハードウェア又はソフトウェアの相互接続の構成又は方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスは、機能を実行するようにプログラムされてもよい。「~ように構成される」は、定義された動作を提供するために、装置要素を任意の方法で変更する必要を意味しない。
【0112】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更及び修正を行うことができることを理解されたい。
図1
図2
図3
図4
図5
図6
図7
図8