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

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

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

<>
  • 特表-装置及び方法 図1
  • 特表-装置及び方法 図2
  • 特表-装置及び方法 図3
  • 特表-装置及び方法 図4
  • 特表-装置及び方法 図5
  • 特表-装置及び方法 図6
  • 特表-装置及び方法 図7
  • 特表-装置及び方法 図8
  • 特表-装置及び方法 図9
  • 特表-装置及び方法 図10
  • 特表-装置及び方法 図11
  • 特表-装置及び方法 図12
  • 特表-装置及び方法 図13
  • 特表-装置及び方法 図14
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-06-23
(54)【発明の名称】装置及び方法
(51)【国際特許分類】
   G06F 12/1009 20160101AFI20230616BHJP
【FI】
G06F12/1009
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022571089
(86)(22)【出願日】2021-05-20
(85)【翻訳文提出日】2022-12-22
(86)【国際出願番号】 GB2021051213
(87)【国際公開番号】W WO2021240133
(87)【国際公開日】2021-12-02
(31)【優先権主張番号】2007936.4
(32)【優先日】2020-05-27
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】スウェイン、アンドリュー ブルックフィールド
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205RR04
(57)【要約】
装置は、順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備える。アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義される、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されている。アドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を含む。
【選択図】図8
【特許請求の範囲】
【請求項1】
順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備える装置であって、
前記アドレス処理回路は、前記順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、前記所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、かつ、
前記アドレス処理回路は、前記所与のテーブルレベルに適用可能な前記入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、前記オフセット要素は前記入力されたメモリアドレスの前記部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、前記選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、
前記アドレス処理回路は、前記選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、装置。
【請求項2】
前記順序付けされた複数の階層化テーブルレベルのうちの最後のテーブルレベルにおけるアドレス情報テーブルによって提供される、前記情報エントリの連鎖内の最後の情報エントリが、前記入力されたメモリアドレスに関する前記情報を定義する、請求項1に記載の装置。
【請求項3】
前記アドレス処理回路は、アドレス変換を実行するアドレス変換回路を含み、前記入力されたメモリアドレスに関する前記情報は、少なくとも、入力アドレス空間内の前記入力されたメモリアドレスと、出力アドレス空間内の、変換されて出力されたメモリアドレスとの間のアドレス変換を定義する、請求項1又は2に記載の装置。
【請求項4】
前記入力されたメモリアドレスは、仮想メモリアドレス及び中間物理アドレスのうちの1つであり、
前記出力されたメモリアドレスは、中間物理アドレス及び物理アドレスのうちの1つである、
請求項3に記載の装置。
【請求項5】
前記アドレス処理回路が許可回路を含み、入力されたメモリアドレスに関する前記情報が、少なくとも、前記入力されたメモリアドレスに関連付けられたアクセス許可を定義する、請求項1~4のいずれか一項に記載の装置。
【請求項6】
前記インジケータデータは、前記選択されたアドレス情報テーブル内の1つ以上の連続するテーブルエントリの前記グループが、前記順序付けされた複数の階層化テーブルレベルのうちの次のテーブルレベルにおいて、連続してアドレス指定されたアドレス情報テーブルのグループを示すそれぞれのベースアドレスを提供するか否かを示すように構成されている、請求項1~5のいずれか一項に記載の装置。
【請求項7】
前記アドレス処理回路によって前記アドレス情報テーブルから取り出された情報エントリを表すデータを記憶するキャッシュメモリを備え、
前記キャッシュメモリは、前記インジケータデータがセットされていることが検出された、1つ以上の連続してアドレス指定された情報エントリのグループに関する単一のベースアドレスを表すデータを記憶するように構成されている、
請求項6に記載の装置。
【請求項8】
前記インジケータデータは、前記選択されたアドレス情報テーブル内の情報エントリが、前記順序付けされた複数の階層化テーブルレベルのうちの前記次のテーブルレベルの後のテーブルレベルにおける複数のアドレス情報テーブルを含む連続してアドレス指定された領域を示すベースアドレスを提供するか否かを示すように構成されている、請求項1~5のいずれか一項に記載の装置。
【請求項9】
前記アドレス処理回路は、前記インジケータデータがセットされる前記選択されたテーブルレベルのうちの情報エントリにアクセスすることに応答して、前記順序付けされた複数の階層化テーブルレベルのうちの前記所与のレベルに続く前記次のテーブルレベルの後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを選択するように構成されている、請求項8に記載の装置。
【請求項10】
前記アドレス処理回路は、前記所与のテーブルレベル及び前記所与のテーブルレベルに続く前記テーブルレベルに関連付けられた前記入力されたメモリアドレスの少なくとも前記それぞれの部分に依存するオフセット要素に従って、前記所与のレベルに続く前記次のテーブルレベルの後のテーブルレベルにおけるアドレス情報テーブル内の前記情報エントリを選択するように構成されている、請求項9に記載の装置。
【請求項11】
順序付けされた複数の階層化テーブルレベルのうちのアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出することと、
所与のテーブルレベルにおける所与のアドレス情報テーブルについて、前記順序付けされた複数の階層化テーブルレベルにおける前記所与のレベルよりも後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを、前記所与のアドレス情報テーブル内の情報エントリに依存するベースアドレスと前記入力されたメモリアドレスの少なくとも一部に依存するオフセット要素とによって定義されたポインタであって、前記ポインタは、前記入力されたメモリアドレスの前記部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、ポインタによって選択することと、
より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域を指定するベースアドレスを、前記所与のアドレス情報テーブル内の1つ以上の連続するテーブルエントリのセットが提供するか否かを示すようにインジケータデータがセットされているか否かを検出することと、
を含む方法。
【請求項12】
入力されたメモリアドレスに関する情報を生成することと、
入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成することと、前記アドレス情報テーブルを前記メモリに記憶することと、を含む方法であって、
前記アドレス情報テーブルを生成することは、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、前記順序付けされた複数のテーブルレベルにおける前記所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、
選択されたアドレス情報テーブル内の情報エントリは、前記所与のテーブルレベルに適用可能な前記入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、前記入力されたメモリアドレスの前記一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義された前記オフセット要素、に従って選択可能であり、前記アドレス情報テーブルを生成するステップは、
入力されたメモリアドレスに関する前記情報を提供するために、前記順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出することと、
検出された前記メモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出することと、
同じテーブルレベルにおける複数のアドレス情報テーブルの前記セットが、前記連続してアドレス指定されたメモリ領域に記憶され得るとき、前記連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成することと、
を含む、方法。
【請求項13】
入力されたメモリアドレスに関する情報を生成し、かつ入力されたメモリアドレスに関する情報を提供するために、
順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成する、プロセッサ回路と、前記アドレス情報テーブルを記憶するメモリと、を備える装置であって、
所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、前記順序付けされた複数のテーブルレベルにおける前記所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、
選択されたアドレス情報テーブルにおける情報エントリは、前記所与のテーブルレベルに適用可能な前記入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、前記オフセット要素は、前記入力されたメモリアドレスの前記一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能であり、前記プロセッサ回路は、
入力されたメモリアドレスに関する前記情報を提供するために、前記順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出し、
検出された前記メモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出するように構成されており、かつ、
同じテーブルレベルにおける複数のアドレス情報テーブルの前記セットが、前記連続してアドレス指定されたメモリ領域に記憶され得るとき、前記連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成するように構成されている、装置。
【請求項14】
命令実行環境を提供するようにホストデータ処理装置を制御するコンピュータプログラムであって、前記命令実行環境は、
順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備え、
前記アドレス処理回路は、前記順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、前記所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、
前記アドレス処理回路は、前記所与のテーブルレベルに適用可能な前記入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、前記オフセット要素は前記入力されたメモリアドレスの前記部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、前記選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、かつ
前記アドレス処理回路は、前記選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、データ処理に関する。
【0002】
メモリ管理は、複数の仮想アドレスマップを有するデータ処理システムの構築を可能にし、その結果、オペレーティングシステム上で実行される各アプリケーションは、それ自体の仮想メモリマッピングを有することができる。各アプリケーションは、物理メモリ内の別個のアドレス空間に配置される。MMUは、仮想アドレスと呼ばれるアプリケーションによって使用されるメモリアドレスを、変換テーブルを使用してメモリ内の物理アドレスにマッピングする。変換テーブルは、例えば、メモリ内のソフトウェアによって作成されるツリー状の階層化テーブルデータ構造である。
【0003】
MMUハードウェアは一般に、仮想アドレス変換を達成するために変換テーブルをトラバースする。変換テーブルをトラバースすることは、変換テーブルを読み取るためにいくつかのメモリアクセスを実行することを伴い得る。
【0004】
変換データの代わりに、属性及び/又は許可データなどの類似の構造を使用して他の情報を提供することができる。
【発明の概要】
【0005】
順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備える装置であって、アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、かつ、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、アドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、装置が提供される。
【0006】
別の例示的な構成では、方法であって、順序付けされた複数の階層化テーブルレベルのうちのアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出することと、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、順序付けされた複数の階層化テーブルレベルにおける所与のレベルよりも後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを、所与のアドレス情報テーブル内の情報エントリに依存するベースアドレスと入力されたメモリアドレスの少なくとも一部に依存するオフセット要素とによって定義されたポインタであって、ポインタは、入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、ポインタによって選択することと、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域を指定するベースアドレスを、所与のアドレス情報テーブル内の1つ以上の連続するテーブルエントリのセットが提供するか否かを示すようにインジケータデータがセットされているか否かを検出することと、を含む方法が提供される。
【0007】
別の例示的な構成では、方法であって、入力されたメモリアドレスに関する情報を生成することと、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成することと、アドレス情報テーブルをメモリに記憶することと、を含む方法であって、アドレス情報テーブルを生成することは、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブル内の情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、入力されたメモリアドレスの一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されたオフセット要素に従って選択可能であり、アドレス情報テーブルを生成するステップは、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出することと、検出されたメモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出することと、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成することと、を含む、方法が提供される。
【0008】
別の例示的な構成では、装置であって、入力されたメモリアドレスに関する情報を生成し、かつ入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成するプロセッサ回路と、アドレス情報テーブルを記憶するメモリと、を備える装置であって、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブルにおける情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は、入力されたメモリアドレスの一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能であり、プロセッサ回路は、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出し、検出されたメモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出するように構成されており、かつ、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定される領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成するように構成されている、装置が提供される。
【0009】
別の例示的な構成では、命令実行環境を提供するホストデータ処理装置を制御するコンピュータプログラムであって、命令実行環境は、順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備え、アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、かつ、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、アドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、コンピュータプログラムが提供される。
【0010】
本技術の更なるそれぞれの態様及び特徴が、添付の特許請求の範囲によって定義される。
【図面の簡単な説明】
【0011】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技術を更に説明する。
【0012】
図1】データ処理装置を概略的に示す。
図2】2段階MMUを概略的に示す。
図3】メモリ管理ユニット(MMU)及び変換ルックアサイドバッファ(TLB)の使用を概略的に示す。
図4】方法を示す概略フローチャートである。
図5】いわゆるページテーブルウォーク(PTW)プロセスを概略的に示す。
図6】方法を示す概略フローチャートである。
図7】テーブルレベルのセットを概略的に示す。
図8】テーブルレベルのセットを概略的に示す。
図9】テーブルレベルのセットを概略的に示す。
図10】テーブルレベルのセットを概略的に示す。
図11】入力されたアドレスの一部を概略的に示す。
図12】それぞれの方法を示す概略フローチャートである。
図13】それぞれの方法を示す概略フローチャートである。
図14】エミュレータ実装形態を概略的に示す。
【発明を実施するための形態】
【0013】
添付図面を参照して実施形態を検討する前に、以下の実施形態を説明する。
【0014】
例示的な実施形態は、順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備える装置であって、アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、アドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、装置を提供する。
【0015】
本開示は、テーブル内の1つ以上のエントリの連続セットと、より後のテーブルレベルにおける連続領域との間のマッピングを示すために使用され得るインジケータデータの使用を提供することによって、上記で説明した種類のテーブルが生成されかつ/又は記憶され、かつ/又はアクセスされる方法の潜在的な改善を提供する。これは、例えば、複数のエントリに関する情報が、より少数(1つなど)のキャッシュエントリによってカバーされることを潜在的に可能にすることによって、テーブルアクセスに関する情報がキャッシュされ得る効率を改善するために使用され得る。いくつかの状況では、構成は、1つ以上のテーブルレベルが省略されることを可能とし得る。
【0016】
例示的な構成では、順序付けされた複数の階層化テーブルレベルのうちの最後のテーブルレベルにおけるアドレス情報テーブルによって提供される、情報エントリの連鎖内の最後の情報エントリが、入力されたメモリアドレスに関する情報を定義する。
【0017】
本開示は、テーブルの順序付けされた階層の形で表すことができる、入力されたメモリアドレスに関する様々なタイプの情報に適用可能である。一例は、アドレス処理回路がアドレス変換を実行するアドレス変換回路を含む状況であり、入力されたメモリアドレスに関する情報は、少なくとも、入力アドレス空間内のその入力されたメモリアドレスと、出力アドレス空間内の、変換されて出力されたメモリアドレスとの間のアドレス変換を定義する。メモリアドレス変換のコンテキストでは、本開示は、単一段階変換又は複数段階変換の任意の1つ以上の段階に適用可能であり得、例示的な構成において、入力されたメモリアドレスは仮想メモリアドレス及び中間物理アドレスのうちの1つであり、出力されたメモリアドレスは中間物理アドレス及び物理アドレスのうちの1つである。
【0018】
別の例は、アドレス処理回路が許可回路を含み、入力されたメモリアドレスに関する情報が、少なくとも入力されたメモリアドレスに関連付けられたアクセス許可を定義するものである。
【0019】
いくつかの例では、インジケータデータは、選択されたアドレス情報テーブル内の1つ以上の連続するテーブルエントリのグループが、順序付けされた複数の階層化テーブルレベルのうちの次のテーブルレベルにおいて連続してアドレス指定されるアドレス情報テーブルのグループを示す、それぞれのベースアドレスを提供するか否かを示すように構成され得る。これは、特にテーブルベースアドレスなどのアクセス情報がキャッシュされている場合に、潜在的により効率的なテーブルアクセスをもたらすことができる。
【0020】
したがって、本技術は、アドレス処理回路によってアドレス情報テーブルから取り出された情報エントリを表すデータを記憶するためのキャッシュメモリ(いわゆる「ウォークキャッシュ」など)を有する構成に特に適用可能であり、キャッシュメモリは、インジケータデータがセットされていることが検出された、1つ以上の連続してアドレス指定された情報エントリのグループに関する単一のベースアドレスを表すデータを記憶するように構成される。
【0021】
例えば、インジケータデータが、選択されたアドレス情報テーブル内の情報エントリが、順序付けされた複数の階層化テーブルレベルのうちの次のテーブルレベルの後のテーブルレベルにおける複数のアドレス情報テーブルを含む連続してアドレス指定された領域を示すベースアドレスを提供するか否かを示すように構成される構成において、インジケータデータの使用が1つ以上のテーブルレベルが省略されることを可能にする場合、テーブル記憶及び/又はアクセスにおける特段の改善が達成され得る。そのような例では、アドレス処理回路は、インジケータデータがセットされた選択されたテーブルレベルのうちの情報エントリにアクセスすることに応答して、順序付けされた複数の階層化テーブルレベルのうちの所与のレベルに続く次のテーブルレベルの後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを選択するように構成され得る。その、より後のレベルにおけるテーブルを適切にアドレス指定するために、例示的な構成では、アドレス処理回路は、所与のテーブルレベル及び所与のテーブルレベルに続くテーブルレベルに関連付けられた入力されたメモリアドレスの少なくともそれぞれの部分に依存するオフセット要素に従って、所与のレベルに続く次のテーブルレベルの後のテーブルレベルにおいてアドレス情報テーブル内の情報エントリを選択するように構成される。
【0022】
別の例示的実施形態は、順序付けされた複数の階層化テーブルレベルのうちのアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出することと、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、順序付けされた複数の階層化テーブルレベルにおける所与のレベルよりも後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを、所与のアドレス情報テーブル内の情報エントリに依存するベースアドレスと入力されたメモリアドレスの少なくとも一部に依存するオフセット要素とによって定義されたポインタであって、ポインタは、入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、ポインタによって選択することと、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域を指定するベースアドレスを、所与のアドレス情報テーブル内の1つ以上の連続するテーブルエントリのセットが提供するか否かを示すようにインジケータデータがセットされているか否かを検出することと、を含む方法を提供する。
【0023】
別の例示的実施形態は、方法であって、入力されたメモリアドレスに関する情報を生成することと、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成することと、アドレス情報テーブルをメモリに記憶することと、を含む方法であって、アドレス情報テーブルを生成することは、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブルにおける情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は、入力されたメモリアドレスの一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能であり、アドレス情報テーブルを生成するステップは、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出することと、検出されたメモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出することと、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成することと、を含む、方法を提供する。
【0024】
別の例示的な実施形態は、装置であって、入力されたメモリアドレスに関する情報を生成し、かつ入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルにおいてアドレス情報テーブルを生成するプロセッサ回路と、アドレス情報テーブルを記憶するメモリと、を備える装置であって、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブルにおける情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は、入力されたメモリアドレスの一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能であり、プロセッサ回路は、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出し、検出されたメモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出するように構成されており、かつ、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成するように構成されている、装置を提供する。
【0025】
別の例示的実施形態は、命令実行環境を提供するようにホストデータ処理装置を制御するコンピュータプログラムであって、命令実行環境は、順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備え、アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、かつ、アドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、コンピュータプログラムを提供する。
【0026】
メモリアドレス変換を用いたデータ処理
ここで図面を参照すると、図1は、データ処理システムを概略的に示す。ローカルキャッシュメモリ105を有する処理要素(PE)100は、メインメモリ110に記憶されたデータにインターコネクト120を介してアクセスするように構成される。メモリ管理ユニット(MMU)130は、メモリアドレス変換を処理するためにインターコネクト120に接続される。MMUは、変換テーブルベースアドレス(TTBR)レジスタ135、変換制御ユニット(TCU)132、及び以下で更に説明するウォークキャッシュ137に関連付けられる。
【0027】
PE100及び/又はMMUは、変換ルックアサイドバッファ(TLB)を利用する。本例では、TLB102がPE100の一部として設けられている。図1のシステムの動作中、システムメモリにアクセスすることが日常的に必要である。メモリアドレスは、PE100のモジュール内での内部処理の目的上、仮想アドレス(VA)として表現される。システムメモリへの実際のアクセスを進めるために、VAは物理アドレス(PA)に変換される必要があり、物理アドレスによってシステムメモリは電気的レベルにおいてアドレス指定される。この変換はTLBによって実行されるが、TLBが特定の変換のサービス提供ができない場合、TLBは以下で説明するようにMMUから情報を取得する。TLBの動作は、図2及び図3を参照して更に説明される。TLB102は、仮想アドレス空間と物理アドレス空間との間の1つ以上のアドレス変換を定義するデータを記憶するための変換バッファの一例を提供する。
【0028】
TLBは図1ではPE100の一部として示されているが、TLBは代わりにMMU130の一部として実装されてもよく、又は他の実施形態では、TLBの機能はPE100及びMMU130の両方において提供されてもよいことに留意されたい。いくつかの例では、PE100は、そのPEにローカルないわゆる「マイクロ」TLBに関連付けることができ、MMUは「メイン」TLBに関連付けることができる。
【0029】
レベル2キャッシュ140は、メインシステムメモリの選択された内容のため、ローカルかつ一般にある程度より高速の記憶領域を提供する。メインシステムメモリの最近アクセスされた部分又は頻繁にアクセスされる部分、あるいは最近アクセスされた部分に隣接する部分など、近い将来必要になると予想されるメインシステムメモリの部分は、レベル2キャッシュ140内で複製され、その結果、必要なときにこれらの部分に迅速にアクセスすることができる。要求された部分がレベル2キャッシュ50に現在保持されていない場合、その部分は、その部分へのアクセスが要求されたときにメインシステムメモリからフェッチされる。これらの点において、レベル2キャッシュ140は、そのようなキャッシュメモリに関連付けられた確立された原理に従って動作するので、その動作の詳細は、本説明に関連する場合を除いて説明しない。レベル2キャッシュメモリ140の内容は、それらの物理アドレスに従ってアクセスされることに留意されたい。
【0030】
図2に示されるように、MMU130は、(複数段階MMUの一例として)段階1MMU134と段階2MMU136とを含む2段階MMUであり得る。実行プログラム又はPE100などの他のシステムモジュールによって必要とされる仮想アドレス(VA)は、段階1MMUによって中間物理アドレス(IPA)に変換される。ページテーブルウォークなどを実行するためのメモリアクセスが概略的に示されている。IPAは、段階2MMUによって物理アドレス(PA)に変換される。マルチ段階変換が使用される1つの理由は、複数のオペレーティングシステム(OS)が、同じプロセッサ上で実行されているそれぞれの「仮想マシン」上で使用され得るときの情報処理のセキュリティのためである。特定のOSがVAからIPAへの変換にさらされる一方、ハイパーバイザ(仮想マシンの実行を監督するソフトウェア)のみが段階2(IPAからPA)の変換を監督する。
【0031】
図2は、2段階MMUがどのように動作するかを概念的に示すが、実際には、単一の回路構造(破線ボックス138によって表される)が、例えば、両方を処理することができるステートマシンを実装することによって、変換の両方の段階を実行することができることに留意されたい。
【0032】
いくつかの例(ここでは図示せず)では、ページテーブルベースの手法を使用して、変換されたアドレス又は他のアドレスに関連する許可データ、属性データ、又は他のデータを取得することができるという点で、第3の段階又は他の段階も、論じられるものと同様の技術を使用することができる。したがって、一般論として、本技術は、入力されたメモリアドレスに関する情報を検出するアドレス処理回路に関連すると考えることができ、「情報」は、完全な又は部分的な変換、あるいは許可データ、属性データ、又は他のデータなどの他の情報であり得、「入力されたメモリアドレス」は、PA、IPA、VA、又は他の入力されたアドレスであり得、(変換の場合)出力されたメモリアドレスは、IPA又はPAであり得る。
【0033】
MMU 130が必要とされる重要な理由は、それがTLB 102に現在記憶されていないアドレス変換を処理するからである。これが実行される方法は、以下で更に説明される。これらの事柄を処理する際に、図3を参照すると、MMU130は、TLBからインターコネクト120を介して要求222を受信し、再びインターコネクト120を介してTLBに応答232を返す。
【0034】
TLB102が関連付けられているPE100又は他の構成の動作の一部として、TLB102は、必要なメモリアクセスに関するVA200を受信する。これは、もちろん、読み出しメモリアクセスであっても又は書き込みメモリアクセスであってもよい。どのタイプのメモリアクセスが進行中であるかは、本説明にとって重要ではない。TCU132は、例えば、いわゆるページテーブルウォークを開始することによって、TLB102にない変換を取得することを処理する。
【0035】
図4(TLBの動作を示す概略フローチャートである)も参照すると、VA200のTLB102への供給が、対応するPA210に対する要求を形成する(ステップ400として図4に示される)。
【0036】
少なくとも例示的なシングル段階MMUのコンテキストでは、TLBは、VAとPAとの間の変換のキャッシュ又はストアを含む。TLBが特定のVAからPAへの変換を記憶する基準は、TLBの動作に関する既知の技術に従って確立することができる。キャッシュされた変換は、最近使用された変換、頻繁に使用される変換、及び/又はすぐに必要とされることが予想される変換(最近アクセスされたVAに近いVAに関連する変換など)を含み得る。全体として、状況は、TLBが、すべての可能なVAからPAへの変換のセットのサブセットのキャッシュを含んでおり、したがって、特定のVAからPAへの変換が必要とされるとき、その変換が既にTLBにおいてキャッシュに保持されていることがわかる場合もあれば、そうでない場合もある。2段階MMUでは、VAからPAへの変換、VAからIPAへの変換、及びIPAからPAへの変換のために1つ以上のTLBが存在し得ることに留意されたい。
【0037】
したがって、次のステップ410において、TLBは、要求された変換が実際に現在TLBによってキャッシュされている(「ヒット」)か否かを検出する。答えがYESであれば、制御はステップ440に移り、ここで要求されたメモリアクセスで使用するためにPAが返される。
【0038】
答えがNOである場合、制御はステップ420に移り、ここでTLB102は、要求されたVA222を含む要求をMMU130(TLB102がMMU130の外部にある場合)及び特にTCU132に送信する。TCU132は、必要とされるVAからPAへの変換を導出し(例えば、以下で説明するいわゆるページテーブルウォーク(PTW)技術を使用してメモリに記憶されたデータにアクセスすることによって)、少なくとも、VA222に対応するPA232をTLB102に送り返し、PA232はステップ430で、そこに記憶される。
【0039】
最後に、ステップ440において、TLB102は、TLB102に記憶された変換が適用されて、出力PA210を提供する。
【0040】
複数段階MMUのコンテキストでは、VAからPAへの全体としての変換に関して単一のTLBを設けることができ、かつ/又は各MMU段階に対して個々のTLBを設けることができる。これらの状況のいずれにおいても、TLBに関する動作は、変換のタイプ、又はTLBにキャッシュされる他の情報に関して図4に示されたものに対応し得る。
【0041】
したがって、これらの実施形態では、MMUは、アドレス変換を実行するアドレス変換回路を含む「アドレス処理回路」の一例を提供し、入力されたメモリアドレスに関する情報は、少なくとも、入力アドレス空間内のその入力されたメモリアドレスと、出力アドレス空間内の、変換されて出力されたメモリアドレスとの間のアドレス変換を定義する。他の例では、「アドレス処理回路」は、入力されたメモリアドレスに関する情報が、少なくとも、入力されたメモリアドレスに関連付けられたアクセス許可を定義する、許可回路を含んでもよい。
【0042】
ページテーブルウォーク
PTWプロセスは、特定のVAの変換に到達するために、いわゆるページテーブルの階層化されたセットをトラバースすることを含む。単一段階メモリ変換の場合、出力はPAであってもよい。多段階メモリアドレス変換の場合、プロセスはかなり複雑であり得る。ページテーブル自体にアクセスするにはPAが必要であるため、階層内の次のテーブルの各アクセスでは、次の必要なテーブルのPAを取得するために変換段階自体が必要になる場合がある。というわけで、図5は、段階1ページテーブルウォーク(PTW)プロセスの一例を概略的に示しており、図6は、PTWプロセスを示す概略的なフローチャートである。
【0043】
この例では、変換が必要なVA222は48ビットの値として形成されている。VA222の異なる部分がPTWプロセスの異なるレベルにおいて使用される。図5におけるこれらの部分の分割は、単に例示的な例として示されている。
【0044】
以下で説明されるプロセスのコンテキストでは、ウォークキャッシュ137は、ページテーブルアクセスの以前に実装されたインスタンスから取得された情報を記憶することができる(例えば、多段階MMUのその段階に適用可能である、すなわち、IPA、PAのいずれか、又は両方を記憶する)。したがって、任意の特定のページテーブルアクセスを開始する前に、ウォークキャッシュ(又はウォークキャッシュの一部、もしくは問題のページテーブルレベルに関連付けられた専用の個々のウォークキャッシュ)を参照することができ、そのページテーブルアクセスから取得されるであろう情報が既にウォークキャッシュ内にある場合、これは、メモリへのその特定のアクセスを実行する必要性を回避する。
【0045】
「レベル0テーブル」310において、ページテーブル階層内の第1のエントリを取得するために、図1のTTBR135に対応するベースアドレスレジスタ300(図5)に記憶されたベースアドレスが、ステップ600(図6)において取得される。(例えば)9つの最上位ビットであるVA222の第1の部分312が、ステップ610において、テーブル310内のエントリ314のIPAを提供するために、ベースアドレスにオフセットとして追加される。しかし、そのIPAによって示されるエントリ314にアクセスするためには、物理メモリ内のエントリの位置を示すPAが必要である。したがって、ステップ620において、ページテーブルエントリ314のIPAが段階2変換プロセスに供給されて、対応するPAに変換される。対応するPAが受信されると、ステップ630において、物理メモリ内、又はレベル2ウォークキャッシュ137内(関連するページがキャッシュされている場合)で関連するページテーブルエントリがルックアップされる。
【0046】
ステップ640において、ページテーブル階層が「レベル3」に達したか否かが検出される。この場合のように達していない場合、制御はステップ650に移り、取り出されたページテーブルエントリが階層内の次のテーブルのベースアドレスとして使用される。したがって、ページテーブルエントリ314は、階層内の次のレベルのテーブル、「レベル1テーブル」320にベースアドレスを提供する。制御はステップ610に戻る。
【0047】
ステップ610の2回目の反復において、例えばVA222の次の9ビット[38:30]であるVA222の更なる部分322が、テーブル320内のエントリ324のIPAを提供するために、テーブル320のベースアドレスからのオフセットを形成する。前と同じように、このIPAは段階2変換の対象とされて、PAを提供し、「レベル2テーブル」330のベースアドレスを取得するためにルックアップされることができる。そして今度は、(同じプロセスによって)「レベル3テーブル」340のベースアドレスを提供する。VAの部分332及び342は、それぞれレベル2テーブル及びレベル3テーブルへのオフセットを形成する。
【0048】
テーブル340内のIPA344によって定義されるページテーブルエントリに関するステップ630及び640が実行されるとき、ステップ640における検出に対する回答は「YES」である。IPA344によって示されるページテーブルエントリは、ページアドレス及び物理メモリページに関するアクセス許可を提供する。VA222の残りの部分352、例えば最下位12ビット[11:0]は、IPA344におけるページテーブルエントリによって定義されるメモリページ内の目標アドレス500へのページオフセット502を提供するが、連続する4バイト(例えば32ビット)の部分として情報を記憶する例示的なシステムでは、部分[11:2]が適切な32ビットワードのアドレスに必要なオフセットを提供することができる。したがって、VA222の最下位部分と(この場合、「レベル3テーブル」340からの)最後のページテーブルエントリとの(ステップ660における)組合せは、(ステップ670において)VA222の変換としてIPA250を提供する。PTWプロセスは、ここで一般的に説明されるように、段階1MMUによって実行されるPTWに関してIPAを返し、段階2MMUによって実行されるPTWに関してPAを別個に返すことに留意されたい。
【0049】
IPA344によって示されるページエントリは、順序付けされた複数の階層化テーブルレベルのうちの最後のテーブルレベルにおけるアドレス情報テーブルによって提供される、情報エントリの連鎖内の最後の情報エントリの一例を提供し、これは、入力されたメモリアドレスに関する情報(この例では変換)を定義する。
【0050】
以下で説明されるいくつかを含む例示的な実施形態では、第1のMMU段階は、ページテーブルの階層にアクセスするように構成され、その結果、階層内のより高いページテーブルは、第2段階MMUによるアドレス変換が階層内の次に低いページテーブルを指し示すための情報を提供し、階層内の最も低いページテーブルは、対応する中間メモリアドレスを含む2つ以上の中間メモリアドレスのセットを提供する。
【0051】
しかしながら、図5及び図6に示される数よりも多い又は少ないPTWレベルが使用され得ることが理解されるであろう。
【0052】
図7は、図5に示される階層化テーブルレベルの隣接レベルにおけるアドレス情報テーブルによって提供される情報エントリの連鎖の一部の概略図である。
【0053】
上記で説明したように、所与のテーブルレベルにおけるアドレス情報テーブル又はページテーブルは、順序付けされた複数のページテーブル内のより早い情報エントリに依存するベースアドレスに従って選択可能である。したがって、例えば、図5において、エントリ314によって与えられるアドレスは、テーブル320のベースアドレスを提供し、エントリ324によって与えられるアドレスは、テーブル330のベースアドレスを提供し、以下同様である。
【0054】
選択されたテーブル内で、情報エントリ又はページテーブルエントリは、入力されたメモリアドレスの少なくとも一部に依存する(ベースアドレスに対する)オフセット要素に従って選択可能である。その部分は、所与のテーブルレベルに適用可能であってもよく、例えば、部分312は、図5のレベル0テーブルに適用可能であり、部分322は、図5のレベル1テーブルに適用可能であり、以下同様である。オフセット要素は、入力されたメモリアドレスのその部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義される。ここで、情報エントリもしくはページテーブルエントリのアドレス指定は、(図5の例のように)そのページテーブルエントリの物理アドレスを参照してもよく、又はそれ自体が更なるレベルの変換を必要とするそのページテーブルエントリのIPAを参照してもよいことに留意されたい。
【0055】
図7の例を参照すると、特定のテーブルレベル(n)におけるテーブル700が示されている。式中、nは、例えば、4レベル(0~3)システムにおいて0、1、又は2であり得る。テーブル700内の各エントリ710は、次のレベル(n+1)におけるそれぞれのテーブルを指し、レベルn+1におけるそれぞれのテーブル730、732、734、736のベースアドレス720、722、724、726を(潜在的に段階2の変換対象である前提下で)提供する。図7では、図を明確にするために、エントリ710とベースアドレス720~726との間の、そのような関連付け4つのみが示されているが、実際はテーブル700内のエントリ710の各々がそれぞれの次のレベルのテーブルにリンクしている。
【0056】
オフセット要素712は、どのエントリ710が参照されるべきかをレベル(n)テーブルのベースアドレス705から決定する。オフセット要素は、レベル(n)に適用可能な入力されたメモリアドレスの少なくとも一部から導出される。同様に、テーブル730~736のいずれかにおけるエントリの選択に適用可能なオフセット740は、レベル(n+1)に適用可能な入力されたメモリアドレスの少なくとも一部から導出される。
【0057】
例-隣接テーブルレベルに関するインジケータデータを使用する
図8は、隣接するテーブルレベルのコンテキストにおいて、いわゆるインジケータデータが使用される例を概略的に示す。
【0058】
図8では、図7でと同じ4つのテーブル730~736が示されているが、ここでの違いは、それらがレベル(n)におけるテーブル700内の連続するテーブルエントリ800によって指し示されることである。また、レベル(n+1)におけるテーブル730~736は、ベースアドレス722がテーブル730の最後のエントリから続くように、連続的にアドレス指定され、以下同様である。
【0059】
テーブル700の各テーブルエントリ内のデータフィールド(所定のビット位置における1ビット又は複数ビットなど)として概略的に示されているインジケータデータ810は、この状況を示すようにセット可能である。ここで、「セット可能」は、インジケータデータが、条件が適用されることを示すために特定の状態にセットされ、条件が適用されないことを示すために別の状態にセットされ得ることを意味する。また、インジケータは、所定数のエントリが連続していることを示すための単一ビットであってもよく、あるいは、例えば、2の累乗、又は連続するエントリ数のカウントとして、いくつかの異なる連続範囲のうちの1つから選択してもよいことに留意されたい。したがって、一例では、テーブル700内の4つのテーブルエントリ800のグループを含むテーブルエントリは、少なくとも以下の情報を含み得る。周囲のテーブルエントリ801、804も示されており、これらのエントリは、図8に示すように垂直方向の順序で以下に与えられている。
【表1】
【0060】
それ自体、これは、テーブル700に提供されるエントリの数を必ずしも減少させない。しかし、考えられる利点は以下の通りである。
【0061】
インジケータデータの検出がない場合、テーブル700内のエントリの各々は、最初にアクセスされたときに、ウォークキャッシュ(又はレベル(n)に適用可能なウォークキャッシュ又はウォークキャッシュ部分)内のそれぞれのエントリを占有する。TCU132は、データをウォークキャッシュ137に書き込むことと、テーブルがアクセスされるときにウォークキャッシュ137の読取りを制御することとを担当することができる。例えば、テーブルエントリ800のうちの1つに適用可能なウォークキャッシュエントリは以下を示し得る。
【表2】
【0062】
その特定のオフセット部分に対してPTWが必要とされるとき、ウォークキャッシュ内のルックアップは、次のレベルテーブルの必要とされるベースアドレスを示す。
【0063】
しかしながら、インジケータデータの検出に応答して、エントリ800のグループは、例えば以下のように、ウォークキャッシュ内の単一のエントリによって表すことができる。
【表3】
【0064】
これは、キャッシュメモリ(この例では、ウォークキャッシュ)が、アドレス処理回路によってアドレス情報テーブルから取り出された情報エントリを表すデータを記憶するように構成される例を提供し、キャッシュメモリは、インジケータデータがセットされていることが検出された1つ以上の連続してアドレス指定された情報エントリのグループに関して単一のベースアドレスを表すデータを記憶するように構成される。
【0065】
したがって、エントリ800のいずれかに対してPTWウォークが必要とされるとき、エントリ800のいずれか1つにアクセスするオフセット要素の範囲に対して、レベル(n+1)におけるテーブルアドレスの対応する範囲が適用可能なことを、単一のウォークキャッシュエントリが示す。したがって、レベル(n)におけるテーブル内の連続するエントリ800のグループに対して、単一のウォークキャッシュエントリのみが必要とされる。
【0066】
ウォークキャッシュをより効率的に使用することによって、特定のサイズのウォークキャッシュに対するヒットの可能性を改善することができる。キャッシュヒットの可能性を改善することは、より多くの割合のPTW動作が、よりコストのかかるメモリアクセスからではなく、ウォークキャッシュから完了され得ることを意味し、したがって、全体的なシステム効率及び/又はスループット及び/又は電力消費が改善され得る。
【0067】
したがって、このコンテキストでは、これは、特定のテーブル700内の1つ以上の連続してアドレス指定された情報エントリのグループ800が、より後のテーブルレベル(この例では、レベル(n+1))において複数のアドレス情報テーブルを含む連続してアドレス指定された領域820内のロケーションを示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされ得る例を提供する。
【0068】
例-後のテーブルレベルを参照するインジケータデータ
次に図9を参照すると、レベル(m)における例示的なテーブル900は、次のレベル(m+1)のテーブル920のベースアドレス910を提供する例示的なエントリ905を含む。ここで、mは、例えば、4レベル(0~3)システムにおいて0又は1であり得る。
【0069】
テーブル920内の各エントリ925は、更に次のレベル(m+2)にあるそれぞれのテーブル930を指す。この構成は、連続するエントリ925が、テーブル930のそれぞれの連続してアドレス指定されたインスタンスを指すというものであり、かつ各エントリ925が、テーブル930のセットを包含するアドレス空間領域内のそれぞれのテーブル930を指すというものである。
【0070】
この構成の変形例を図10に関して説明するが、ここでは、インジケータデータは、選択されたアドレス情報テーブル内の情報エントリが、順序付けされた複数の階層化テーブルレベルのうちの次のテーブルレベルの後のテーブルレベルにおける複数のアドレス情報テーブルを含む連続してアドレス指定された領域を示すベースアドレスを提供するか否かを示すように構成される。
【0071】
特に、本技術は、レベル(m)のテーブル900において、単一のエントリ1000が、連続してアドレス指定されたテーブル930のすべてを含むレベル(m+2)の領域1030全体のベースアドレス1020へのポインタ1010を提供することができるという点で、このテーブル構造の合理化を提供することができる。
【0072】
ベースアドレス1020からのオフセット1040は、以下のように導出される。
オフセット=[レベル(m+1)に適用可能なアドレス部分]と連結された[レベル(m)に適用可能なアドレス部分]
【0073】
具体例が、以下に図11に関して提供され説明される。
【0074】
セット可能インジケータデータ1040を含むエントリ1000の例示的な内容は、以下の通りである。
【表4】
【0075】
ここで、インジケータデータは、(レベル(n)における)選択されたアドレス情報テーブル内の1つ以上の連続するテーブルエントリのグループが、順序付けされた複数の階層化テーブルレベルのうちの次のテーブルレベル(n+1)における連続してアドレス指定されるアドレス情報テーブルのグループを示すそれぞれのベースアドレスを提供するか否かを示すように構成される。
【0076】
これは、キャッシュメモリ(この例では、ウォークキャッシュ)が、アドレス処理回路によってアドレス情報テーブルから取り出された情報エントリを表すデータを記憶するように構成される別の例を提供し、キャッシュメモリは、インジケータデータがセットされていることが検出された1つ以上の連続してアドレス指定された情報エントリのグループに関して、単一のベースアドレスを表すデータを記憶するように構成される。
【0077】
したがって、エントリ1000に対してPTWウォークが必要とされるとき、単一ウォークキャッシュエントリは、次のレベル(m+1)テーブルが完全に省略されること、したがって、レベル(m+2)におけるすべてのテーブル1030のベースアドレスを提供するために、エントリ1000に関して単一のウォークキャッシュエントリだけが必要とされることを示す。言い換えれば、アドレス処理回路は、インジケータデータがセットされた選択されたテーブルレベルのうちの情報エントリにアクセスすることに応答して、順序付けされた複数の階層化テーブルレベルのうちの所与のレベルに続く次のテーブルレベルの後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを選択するように構成される。
【0078】
ウォークキャッシュをより効率的に使用することによって、特定のサイズのウォークキャッシュに対するヒットの可能性を改善することができる。キャッシュヒットの可能性を改善することは、より多くの割合のPTW動作が、よりコストのかかるメモリアクセスからではなく、ウォークキャッシュから完了され得ることを意味し、したがって、全体的なシステム効率及び/又はスループット及び/又は電力消費が改善され得る。
【0079】
したがって、この構成は、インジケータデータ1040が、テーブル900内の1つ以上の連続してアドレス指定された情報エントリのグループ(この例では単一エントリ1000)が、より後の(m+2)テーブルレベルで複数のアドレス情報テーブルを含む連続してアドレス指定された領域1030内の位置を示す少なくとも1つのベースアドレス1020を提供するか否かを示すようにセットされる例を提供する。
【0080】
また、例えば、連続するエントリのセットを特定し、また、1つ以上のテーブルレベルをスキップするインジケータデータによって、2つの技術が組み合わされ得ることに留意されたい。
【0081】
上述のオフセットアドレス指定の実施例として、図11は、入力されたアドレスの第1の部分312がレベル0テーブルへのインデックスを形成し、第2の部分322がレベル1テーブルへのインデックスを提供し、レベル1テーブルは、この例では図10のレベル(m)テーブルのエントリ1000として示されるものと同様のエントリを有する、図5の表現222によって示されるものと同様の表現を提供する。したがって、エントリ1000は、レベル1インデックス322によって提供されるオフセットによって指し示される。エントリ1000に対してセットされるインジケータデータ1040は、エントリ1000によって提供されるアドレスがレベル3テーブル(レベルm+2)のベースアドレス1020へのポインタ1010を提供するように、レベル2が省略されることを示す。
【0082】
これらの例では、アドレス処理回路は、所与のテーブルレベル及び所与のテーブルレベルに続くテーブルレベルに関連付けられた入力されたメモリアドレスの少なくともそれぞれの部分に依存するオフセット要素に従って、所与のレベル(m)に続く次のテーブルレベル(m+1)の後のテーブルレベル(m+2又は実際にはそれ以降など)におけるアドレス情報テーブル内の情報エントリを選択するように構成される。
【0083】
したがって、図5の別個の部分322、342の代わりに、部分346(すなわちビット[29:12])が、ポインタ1010によって定義される領域1030内のオフセット1040として使用され、これは、図5のレベル2及び3に関連付けられた部分332、342の連結である。
【0084】
この構成は、2つ以上のレベルをスキップ又は省略するために使用することができ、したがって(一例として4レベル(0~3)システムでは)レベル0におけるテーブルエントリが、(例えば)レベル3テーブルのアドレスを示すことを示すインジケータデータに随伴され得ることが理解されよう。このような場合、関連するオフセットは、TCUによって次のように形成される。
オフセット=[レベル(2)に適用可能なアドレス部分]と連結された[レベル(1)に適用可能なアドレス部分]と連結された[レベル(0)に適用可能なアドレス部分]
(又は、図5の表現におけるVAビット[47:21])
【0085】
図12は、上述したようなインジケータデータの任意選択の使用を伴うページテーブルデータの生成及び記憶に適用可能な例示的な方法を示す概略フローチャートである。図12を参照すると、ステップ1200は、入力されたメモリアドレスに関する情報を生成することを含む。この例では、情報はアドレスマッピングに関するが、ページテーブルの階層として表すことができる任意の他のデータが代替的に又は追加的に適用可能である。ステップ1200は、例えば、アドレス情報テーブルを順序付けされた複数の階層化テーブルレベルで生成して入力されたメモリアドレスに関する情報を提供することを伴う、テーブル表現を生成することをまた含み、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブルにおける情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は、入力されたメモリアドレスの当該一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能である。
【0086】
生成プロセスは、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリ量を検出することと、検出されたメモリの量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出することとを伴うステップ1220を含むことができる。
【0087】
ステップ1220の結果は「いいえ」であってもよく、その場合、制御はステップ1230に移り、ページテーブルが図7のフォーマットで生成される。
【0088】
しかしながら、ステップ1220における答えが「はい」である場合、ステップ1240及び1250の一方又は両方を、例えば、全体構造内の異なるそれぞれのテーブル及び/又はレベルのグループに適用することができる。これらのステップの各々は、インジケータデータの使用に関連し、ステップ1240は図8の技術を使用し、ステップ1250は図10の技術を使用する。それらは、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルにおける1つ以上の連続したテーブルエントリのセットを生成するという特徴を共通に有する。
【0089】
最後に、ステップ1260において、アドレス情報テーブルをメモリに記憶する。
【0090】
図12のプロセスは、例えばブート時に、例えばPE100によって実行され得る。この点に関して、メモリ110と共にPE100は、入力されたメモリアドレスに関する情報を生成し、かつ入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルでアドレス情報テーブルを生成するプロセッサ回路、及びアドレス情報テーブルを記憶するメモリの例であって、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、所与のテーブルレベルにおけるアドレス情報テーブルは、順序付けされた複数のテーブルレベルにおける所与のテーブルレベルよりも前のアドレス情報テーブルにおける、より前の情報エントリに依存するベースアドレスによって選択可能であり、選択されたアドレス情報テーブルにおける、情報エントリは、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は、入力されたメモリアドレスの一部の連続するインスタンスが、連続してアドレス指定された情報を示すように定義されているオフセット要素に従って選択可能であり、プロセッサ回路は、入力されたメモリアドレスに関する情報を提供するために、順序付けされた複数の階層化テーブルレベルを記憶するために利用可能なメモリの量を検出し、検出されたメモリ量の中に、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るか否かを検出し、同じテーブルレベルにおける複数のアドレス情報テーブルのセットが、連続してアドレス指定されたメモリ領域に記憶され得るとき、連続してアドレス指定された領域を指定するベースアドレスを提供するために、より高いテーブルレベルで1つ以上の連続したテーブルエントリのセットを生成するように構成されている、例を提供する。
【0091】
図13は、上記で説明した技術の、潜在的な組合せを含む適用例を示す概略フローチャートである。これは、順序付けされた複数の階層化テーブルレベルにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出する方法の一部を形成する。
【0092】
図8のインジケータデータは、インジケータデータ又は図10と共に使用されてもよいし、インジケータデータ又は図10なしで使用されてもよく、その結果、各構成は、他の構成が使用されることなく、それ自体で使用可能であることが理解されるであろう。図13の例では、両方のタイプのインジケータデータが、例えば、共通インジケータデータフィールドなどの異なるインジケータ値として提供される。
【0093】
図13では、ステップ1300において特定のテーブルエントリが検出される。これは、所与のテーブルレベルにおける所与のアドレス情報テーブルについて、順序付けされた複数の階層化テーブルレベルにおける所与のレベルよりも後のテーブルレベルにおけるアドレス情報テーブル内の情報エントリを、所与のアドレス情報テーブル内の情報エントリに依存するベースアドレスと入力されたメモリアドレスの少なくとも一部に依存するオフセット要素とによって定義されるポインタであって、ポインタは、入力されたメモリアドレスの当該部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義される、ポインタによって選択することを含んでよい。
【0094】
ステップ1310において、インジケータデータがセットされているか否かについて検出が行われる。ここでの結果は、インジケータデータが未セットであること(パス1312)、インジケータデータが連続エントリのグループを示すように設定されていること(結果1314)、又はインジケータデータが1つ以上のレベルのスキップ又は省略を示すように設定されていること(結果1316)である。これは、所与のアドレス情報テーブル内の1つ以上の連続するテーブルエントリのセットが、より後のテーブルレベルで複数のアドレス情報テーブルを含む連続してアドレス指定される領域を指定するベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する例を表す。
【0095】
結果1312の場合、ステップ1320で既知のタイプのエントリがウォークキャッシュに記憶され、ステップ1330で次のテーブルレベルがアクセスされる。
【0096】
結果1314に関して、上記の図8の説明を参照して論じたタイプの1つ以上のエントリが、ステップ1340においてウォークキャッシュに記憶され、制御はステップ1330に移る。
【0097】
結果1316はステップ1350に至り、そこでエントリが、現在のテーブルエントリ及びインジケータデータの状態を示すウォークキャッシュに記憶され、ステップ1360で、図10を参照して上述した技術を使用して、(次のテーブルレベルの先の)更なるテーブルレベルがアクセスされる。
【0098】
図14は、使用され得るシミュレータ実装を示す。上記の実施形態は、当該技術をサポートする特定の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムの使用を通して実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、シミュレータプログラム710をサポートするホストオペレーティングシステム720を任意選択で実行して、ホストプロセッサ1730で実行し得る。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数の層のシミュレーションがあってもよく、かつ/又は、同じホストプロセッサ上に提供された複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装を提供するために必要とされてきたが、そのような手法は、ある状況において、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときに、正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
【0099】
これまで、特定のハードウェア構成物又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成物又は機能によって同等の機能を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態で、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態で、ソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ1730)に存在する構成では、いくつかのシミュレーションされた実施形態は、適する場合、ホストハードウェアを使用してもよい。
【0100】
シミュレータプログラム1710は、(非一時的媒体であってもよい)コンピュータ読み取り可能な記憶媒体に記憶されてもよく、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)目標コード1700に対するプログラムインタフェース(命令実行環境)を提供する。これは、シミュレータプログラム1710によってモデル化されているハードウェアアーキテクチャのインタフェースと同じである。よって、上述した機能を含む、目標コード1700のプログラム命令は、シミュレータプログラム1710を使用する命令実行環境内から実行されてもよく、それによって、上で論じた装置のハードウェア機能を実際には有していないホストコンピュータ1730が、これらの機能をエミュレートすることができる。
【0101】
図14の構成は、それゆえ、命令実行環境を提供するようにホストデータ処理装置を制御するコンピュータプログラムであって、命令実行環境は、順序付けされた複数の階層化テーブルレベルのそれぞれにおけるアドレス情報テーブルによって提供される情報エントリのそれぞれの連鎖を参照して、入力されたメモリアドレスに関する情報を検出するアドレス処理回路を備え、アドレス処理回路は、順序付けされた複数のテーブルレベルの所与のテーブルレベルよりも前のアドレス情報テーブル内の、より前の情報エントリに依存するベースアドレスに従って、所与のテーブルレベルにおけるアドレス情報テーブルを選択するように構成されており、アドレス処理回路は、所与のテーブルレベルに適用可能な入力されたメモリアドレスの少なくとも一部に依存するオフセット要素であって、オフセット要素は入力されたメモリアドレスの部分の連続するインスタンスが連続してアドレス指定された情報エントリを示すように定義されている、オフセット要素に従って、選択されたアドレス情報テーブル内の情報エントリを選択するように構成されており、かつアドレス処理回路は、選択されたアドレス情報テーブル内の1つ以上の連続してアドレス指定された情報エントリのグループが、より後のテーブルレベルにおける複数のアドレス情報テーブルを含む、連続してアドレス指定された領域内の位置を示す少なくとも1つのベースアドレスを提供するか否かを示すようにインジケータデータがセットされているか否かを検出する検出器回路を備える、コンピュータプログラムの例を提供する。
【0102】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの構成又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサもしくは他の処理デバイスが、機能を実行するようにプログラムされてもよく、その場合、機能が実行されるソフトウェア又はプログラム命令、及びそのようなソフトウェア又はプログラム命令が提供される(例えば、記憶される)非一時的機械可読媒体などの提供媒体は、本開示の実施形態を表すと考えられる。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0103】
本技術の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本技術はそれらの正確な実施形態に限定されず、添付の特許請求の範囲によって定義される技術の範囲及び精神から逸脱することなく、当業者によって様々な変更、追加、及び修正を行うことができることを理解されたい。例えば、従属請求項の特徴の様々な組み合わせは、本技術の範囲から逸脱することなく、独立請求項の特徴によって作製され得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
【国際調査報告】