(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-23
(54)【発明の名称】アドレス変換回路及びアドレス変換を実行するための方法
(51)【国際特許分類】
G06F 12/109 20160101AFI20241016BHJP
【FI】
G06F12/109 110
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024518155
(86)(22)【出願日】2022-08-31
(85)【翻訳文提出日】2024-04-16
(86)【国際出願番号】 GB2022052221
(87)【国際公開番号】W WO2023062332
(87)【国際公開日】2023-04-20
(32)【優先日】2021-10-11
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ダル、クリストファー
(72)【発明者】
【氏名】ラトランド、マーク サリング
(72)【発明者】
【氏名】ストックウェル、ギャレス リス
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM36
5B205RR05
(57)【要約】
アドレス変換を実行するためのアドレス変換回路及び方法に関する。アドレス変換回路は、第1のアドレス及び識別子の受信に応答して、第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、第1のアドレスから第2のアドレスへのアドレス変換を実行する。アドレス変換回路は、メタデータテーブルウォークを実行して、識別子に固有であり、アドレス変換に関連付けられたメタデータを決定するように更に構成される。メタデータテーブルウォークは、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、1つ以上のメタデータルックアップの各々は、1つ以上の変換ルックアップのうちの1つに対応し、その変換と同じ第1のアドレスの部分に基づいてインデックス付けされる。
【特許請求の範囲】
【請求項1】
第1のアドレス及び識別子の受信に応答して、
前記第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、前記第1のアドレスから第2のアドレスへのアドレス変換と、
前記識別子に固有であり、前記アドレス変換に関連付けられたメタデータを決定するためのメタデータテーブルウォークであって、前記メタデータテーブルウォークが、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、前記1つ以上のメタデータルックアップの各々が、前記1つ以上の変換ルックアップのうちの1つに対応し、前記変換ルックアップと同じ前記第1のアドレスの部分に基づいてインデックス付けされる、メタデータテーブルウォークとを実行する、アドレス変換回路。
【請求項2】
前記変換テーブルウォーク及び前記メタデータテーブルウォークを並行して実行するように構成された、請求項1に記載のアドレス変換回路。
【請求項3】
前記変換テーブルウォーク及び前記メタデータテーブルウォークを順次実行するように構成され、前記変換テーブルウォーク及び前記メタデータテーブルウォークが各々、同じ機能回路を使用して実行される、請求項1に記載のアドレス変換回路。
【請求項4】
前記1つ以上の変換ルックアップが、複数の順次変換ルックアップであり、
前記1つ以上のメタデータルックアップが、複数の順次メタデータルックアップである、請求項1から3のいずれか一項に記載のアドレス変換回路。
【請求項5】
前記順次メタデータルックアップのうちの順次最終メタデータルックアップから返されたデータに基づいて、前記識別子に固有の前記メタデータを決定するように構成され、前記順次最終メタデータルックアップから返された前記データが、複数の識別子を対応するメタデータに関連付ける、請求項4に記載のアドレス変換回路。
【請求項6】
前記識別子に固有の前記メタデータが、許可メタデータである、請求項5に記載のアドレス変換回路。
【請求項7】
前記アドレス変換からデフォルト許可メタデータを決定し、
前記順次最終メタデータルックアップから返された前記データを取得したことに応答して、前記デフォルト許可メタデータを前記順次最終メタデータルックアップから返された前記データと組み合わせることによって前記許可メタデータを決定する、
ように構成された、請求項6に記載のアドレス変換回路。
【請求項8】
前記デフォルト許可メタデータが、前記アドレス変換に関連付けられた最大許可のセットを定義し、前記順次最終メタデータルックアップから返された前記データが、前記最大許可のセットの制限を定義する、請求項7に記載のアドレス変換回路。
【請求項9】
前記デフォルト許可メタデータが、前記アドレス変換に関連付けられた最小許可のセットを定義し、前記順次最終メタデータルックアップから返された前記データが、前記最小許可のセットの拡張を定義する、請求項7に記載のアドレス変換回路。
【請求項10】
前記順次メタデータルックアップのうちの1つから返された、前記順次メタデータルックアップの残りの部分が未定義であるという指示に応答して、前記デフォルト許可メタデータに基づいて前記識別子に固有の前記メタデータを設定するように構成された、請求項5から9のいずれか一項に記載のアドレス変換回路。
【請求項11】
前記識別子が前記複数の識別子の各々と異なるという決定に応答して、障害表示をトリガするように構成された、請求項5から10のいずれか一項に記載のアドレス変換回路。
【請求項12】
前記第1のアドレスと前記第2のアドレスとの間のアドレス変換と、そのアドレス変換に関連付けられた対応するメタデータとを記憶するための変換索引バッファを備える、請求項1から11のいずれか一項に記載のアドレス変換回路。
【請求項13】
前記識別子が、所定の数の識別子のうちの1つであり、前記変換索引バッファが、前記対応するメタデータとして、前記所定の数の識別子の各々に固有のメタデータを記憶するように構成される、請求項12に記載のアドレス変換回路。
【請求項14】
前記第1のアドレスが中間物理アドレスであり、前記第2のアドレスが物理アドレスである、請求項1から13のいずれか一項に記載のアドレス変換回路。
【請求項15】
前記識別子が、前記アドレス変換回路に関連付けられたデータ処理回路上でホストされる複数の仮想マシンのうちの1つの仮想マシンを識別し、前記複数の仮想マシンが、第2のアドレスの同じセットを共有する、請求項1から14のいずれか一項に記載のアドレス変換回路。
【請求項16】
前記複数の変換テーブルのうちの順次第1の変換テーブルを示すベース変換テーブルアドレスと、
前記複数のメタデータルックアップテーブルのうちの順次第1のメタデータルックアップテーブルを示すベースメタデータルックアップテーブルアドレスとを記憶する記憶回路を備える、請求項4に従属する場合の請求項1から15のいずれか一項に記載のアドレス変換回路。
【請求項17】
前記記憶回路が、前記ベース変換テーブルアドレスを記憶するベース変換レジスタと、前記ベースメタデータルックアップテーブルアドレスを記憶するベースメタデータレジスタとを備える、請求項16に記載のアドレス変換回路。
【請求項18】
請求項1から17のいずれか一項に記載のアドレス変換回路を製造するためのコンピュータ可読コードを記憶するコンピュータ可読媒体。
【請求項19】
第1のアドレス及び識別子の受信に応答してアドレス変換回路を使用してアドレス変換を実行するための方法であって、
前記第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、前記第1のアドレスから第2のアドレスへの前記アドレス変換を実行することと、
前記識別子に固有であり、前記アドレス変換に関連付けられたメタデータを決定するためにメタデータテーブルウォークを実行することであって、前記メタデータテーブルウォークが、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、前記1つ以上のメタデータルックアップの各々が、前記1つ以上の変換ルックアップのうちの1つに対応し、前記変換ルックアップと同じ前記第1のアドレスの部分に基づいてインデックス付けされる、メタデータテーブルウォークを実行することとを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、アドレス変換を実行するためのアドレス変換回路及び方法に関する。
【0002】
アドレス変換回路は、第1のアドレスと第2のアドレスとの間の変換を実行するために提供される。変換テーブルウォークは、第1のアドレスの一部に基づいてインデックス付けされた複数の変換テーブルにおいて一連の変換ルックアップを実行することを含む。
【0003】
いくつかの構成では、第1のアドレス及び識別子の受信に応答して、第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、第1のアドレスから第2のアドレスへのアドレス変換と、識別子に固有であり、アドレス変換に関連付けられたメタデータを決定するメタデータテーブルウォークであって、メタデータテーブルウォークが、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、1つ以上のメタデータルックアップの各々が、1つ以上の変換ルックアップのうちの1つに対応し、その変換ルックアップと同じ第1のアドレスの部分に基づいてインデックス付けされる、メタデータテーブルウォークとを実行するアドレス変換回路が提供される。
【0004】
いくつかの構成では、第1のアドレス及び識別子の受信に応答してアドレス変換回路を使用してアドレス変換を実行するための方法であって、第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、第1のアドレスから第2のアドレスへのアドレス変換を実行することと、識別子に固有であり、アドレス変換に関連付けられたメタデータを決定するためにメタデータテーブルウォークを実行することであって、メタデータテーブルウォークが、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、1つ以上のメタデータルックアップの各々が、1つ以上の変換ルックアップのうちの1つに対応し、その変換ルックアップと同じ第1のアドレスの部分に基づいてインデックス付けされる、メタデータテーブルウォークを実行することとを含む、方法が提供される。
【0005】
いくつかの構成では、任意の先行する請求項のアドレス変換回路の製造のためのコンピュータ可読コードを記憶するためのコンピュータ可読媒体が提供される。
【0006】
いくつかの構成では、コンピュータ可読媒体は、非一時的コンピュータ可読媒体である。
【図面の簡単な説明】
【0007】
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技法を更に説明する。
【0008】
【
図1】本技術の様々な構成によるデータ処理装置を概略的に示す図である。
【
図2】本技術の様々な構成によるアドレス変換回路を概略的に示す図である。
【
図3】本技術の様々な構成によるアドレス変換回路の更なる詳細を概略的に示す図である。
【
図4a】本技法の様々な構成によるアドレス変換回路の更なる詳細を概略的に示す。
【
図4b】本技法の様々な構成によるアドレス変換回路の更なる詳細を概略的に示す。
【
図5a】メモリ管理の典型的な例によるメモリ内の変換テーブルの配置を概略的に示す。
【
図5b】メモリ管理の典型的な例によるメモリ内の変換テーブルの配置を概略的に示す。
【
図5c】本技法の様々な構成によるメモリ内の変換テーブルの配置を概略的に示す。
【
図6】本技法の様々な構成によるアドレス変換回路を使用する変換プロセスを概略的に示す。
【
図7a】本技法の様々な構成による変換テーブル階層を概略的に示す。
【
図7b】本技法の様々な構成によるメタデータテーブル階層を概略的に示す。
【
図8】本技法の様々な構成によるデフォルト許可メタデータから許可メタデータを決定する方法を概略的に示す。
【
図9】本技法の様々な構成による変換索引バッファのレイアウトを概略的に示す。
【
図10】本技法の様々な構成によるアドレス変換回路によって実行される一連のステップを概略的に示す。
【
図11】本技法の様々な構成によるアドレス変換回路の製造を概略的に示す。
【0009】
いくつかの構成では、第1のアドレス及び識別子の受信に応答して、変換テーブルウォークを実行することによって第1のアドレスから第2のアドレスへのアドレス変換を実行するアドレス変換回路が提供される。変換テーブルウォークは、第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む。加えて、アドレス変換回路は、第1のアドレスの受信に応答して、メタデータテーブルウォークを実行して、識別子に固有でありアドレス変換に関連付けられたメタデータを決定するように構成される。メタデータテーブルウォークは、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、1つ以上のメタデータルックアップの各々は、1つ以上の変換ルックアップのうちの1つに対応し、その変換ルックアップと同じ第1のアドレスの部分に基づいてインデックス付けされる。
【0010】
アドレス変換回路は、第1のアドレスと第2のアドレスとの間の変換を実行するために提供されることが多い。いくつかのシステムでは、第1のアドレスのセット及び対応する第2のアドレスのセットが複数のプロセス間で共有され、変換を要求しているプロセスが識別子を使用して識別される。しかしながら、プロセスの各々が、第2のアドレスに固有であり、典型的には変換テーブルウォークの最終変換テーブルによって定義される異なるメタデータを有する場合が多い。このような場合、識別子に応じて異なる変換テーブルウォークを実行するアドレス変換回路が典型的には提供されている。本発明者らは、この手法が複数の欠点を有することを認識した。第1に、1つ以上の変換テーブルの完全なセットが、複数のプロセスの各々に対して必要とされ、変換テーブルを記憶するために必要とされる空間が倍増する。第2に、メモリを制御するオペレーティングシステムが、アドレス変換が再マッピングを必要とすると決定した場合、再マッピングは、異なる変換テーブルの各々に対して1回実行されなければならず、その結果、処理負担が増大し、待ち時間が増加する。したがって、第1のアドレスと第2のアドレスとの間のアドレス変換を決定するための変換テーブルウォークと、実行されたアドレス変換に関連付けられ、識別子に固有のメタデータを決定するためのメタデータテーブルウォークの両方を実行するための変換テーブルウォークが提供される。言い換えれば、メタデータは、識別子と、変換テーブルウォークの一部として決定された第2のアドレスとの両方に固有である。メタデータテーブルウォーク及び変換テーブルウォークは各々、第1のアドレスを使用して決定される。特に、1つ以上の変換ルックアップの各々について、対応するメタデータルックアップが存在し、変換ルックアップ及びメタデータルックアップの両方が、第1のアドレスの同じ部分を使用してインデックス付けされる。変換テーブルウォークの結果は、第2のアドレスを記憶する変換テーブルエントリへのポインタであり、メタデータテーブルウォークの結果は、識別子に関連付けられたメタデータを記憶するメタデータテーブルへのポインタである。このようにして、1つ以上の変換テーブルの単一のセットのみが必要とされ、その結果、変換テーブル再マッピングが必要とされるときの処理負担が低減される。いくつかの構成では、複数のメタデータテーブルは、複数の変換テーブルとは異なる。言い換えれば、変換テーブルとして使用されるテーブルのセットとメタデータテーブルとして使用されるテーブルのセットとの間に重複はない。
【0011】
変換テーブルウォーク及びメタデータテーブルウォークが実行されるタイミングは、様々に定義することができる。いくつかの構成では、アドレス変換回路は、変換テーブルウォーク及びメタデータテーブルウォークを並行して実行するように構成される。そのような構成では、アドレス変換回路が変換テーブルウォーク及びメタデータテーブルウォークを同時に追跡することができるように、アドレス変換回路の少なくとも一部が複製される。そのような構成は、最小限の追加の回路を犠牲にして、2つのテーブルウォークを実行することに関連付けられた待ち時間を低減する。代替的に、いくつかの構成では、アドレス変換回路は、変換テーブルウォーク及びメタデータテーブルウォークを順次実行するように構成され、変換テーブルウォーク及びメタデータテーブルウォークは各々、同じ機能回路を使用して実行される。そのような構成では、テーブルウォークを実行するための単一の回路のみが提供され、アドレス変換回路は、変換テーブルウォーク及びメタデータテーブルウォークのうちの一方を、変換テーブルウォーク及びメタデータテーブルウォークのうちの他方の前に順次実行するように構成される。いくつかの構成では、アドレス変換回路は、メタデータテーブルウォークの前に変換テーブルウォークを実行するように構成される。そのような構成では、メタデータが返される前に第2のアドレスに基づくアクセスを開始することができるように、第2のアドレスを返すことができる。アクセスの結果は、返されたメタデータに応じて使用又は破棄することができる。この手法は、メタデータテーブルウォークから生じ得る追加の待ち時間なしにデータアクセスを開始することができるという利点を有する。代替構成では、メタデータテーブルウォークは、最初に順次実行することができる。次いで、アドレス変換回路は、メタデータテーブルウォークの結果に応じて、変換テーブルウォークを実行するか、又は第1のアドレスを破棄して変換テーブルウォークを実行しないように構成される。有利なことに、この手法は、メタデータテーブルウォークの結果に応じて変換テーブルウォークのサブセットを実行する要件を除去する。例えば、メタデータが、アドレス変換に基づくアクセスが実行されるべきでないことを決定するメタデータである場合、変換テーブルウォークを実行する必要はない。
【0012】
変換テーブルウォーク及びメタデータテーブルウォークは各々、対応する複数のテーブルにおける1つ以上のルックアップに基づく。いくつかの構成では、単一の変換テーブルが変換テーブルウォークのために使用され、変換テーブルウォークにおいて単一の変換ルックアップをもたらし、単一のメタデータテーブルがメタデータテーブルウォークのために使用され、メタデータテーブルウォークにおいて単一のメタデータルックアップをもたらす。しかしながら、いくつかの代替構成では、1つ以上の変換ルックアップは、複数の順次変換ルックアップであり、1つ以上のメタデータルックアップは、複数の順次メタデータルックアップである。このようにして、変換テーブルに記憶された変換情報及びメタデータテーブルに記憶されたメタデータをメモリ全体に分散させることができ、変換テーブル及びメタデータテーブルを記憶するために提供された空間を動的に再構成する能力が高まる。
【0013】
いくつかの構成では、アドレス変換回路は、順次メタデータルックアップのうちの順次最終メタデータルックアップから返されたデータに基づいて、識別子に固有のメタデータを決定するように構成され、順次最終メタデータルックアップから返されたデータは、複数の識別子を対応するメタデータに関連付ける。順次最終メタデータルックアップから返されるデータのフォーマットは、様々に定義することができる。いくつかの構成では、順次最終メタデータルックアップから返されるデータは、識別子及び対応するメタデータを示す情報を記憶する。そのような構成では、アドレス変換回路は、対応するメタデータを決定するために、順次最終メタデータルックアップから返されたデータにおいて、識別子を使用してルックアップを実行するように構成される。他の構成では、返されたデータは、その識別子に関連付けられた固定ビット位置から始まる、各識別子に関連付けられた既知の長さのメタデータを記憶する。そのような構成では、アドレス変換回路は、その識別子に関連付けられた固定ビット位置で始まるメタデータから、その識別子に関連付けられたメタデータを決定するように構成される。
【0014】
いくつかの構成では、識別子に固有のメタデータは許可メタデータである。許可メタデータは、第2のアドレスにアクセスするときに使用される、識別子に固有のアクセス許可を決定する。いくつかの構成では、許可メタデータは、識別子を有するプロセスが第2のアドレスへの読取りアクセス、書込みアクセス、及び実行アクセスを実行することができるか否かを定義する読取り許可、書込み許可、及び実行許可のうちの少なくとも1つを示すデータを含む。
【0015】
許可メタデータは、様々な方法で順次最終メタデータルックアップから返されたデータから決定することができる。いくつかの構成では、返されるデータは、読取り、書込み、及び実行許可ビットのセットである。そのような構成では、許可は、メタデータテーブルウォークから完全に決定され、変換テーブルウォークから独立している。代替構成では、アドレス変換回路は、アドレス変換からデフォルト許可メタデータを決定し、順次最終メタデータルックアップから返されたデータを取得することに応答して、デフォルト許可メタデータを順次最終メタデータルックアップから返されたデータと組み合わせることによって許可メタデータを決定するように構成される。典型的には、変換テーブルは、許可ビットを示す情報を記憶する。したがって、この構成は、変換テーブルのフォーマットに対するいかなる修正も必要とせず、したがって、変換テーブルはレガシー構成によって読み取られる可能性もある。
【0016】
デフォルト許可メタデータと順次最終ルックアップから返されるデータとの組合せは、様々に定義することができる。いくつかの構成では、デフォルト許可メタデータは、アドレス変換に関連付けられた最大許可のセットを定義し、順次最終メタデータルックアップから返されたデータは、最大許可のセットの制限を定義する。そのような構成では、デフォルト許可は、より特権の高いプロセスに関連付けられた許可とすることができ、順次最終メタデータルックアップから返されるデータは、例えば、第2のアドレスの同じセットを共有するより特権の低いプロセスに関連付けられた更なる制限を定義することができる。いくつかの構成では、順次最終メタデータルックアップから返されるデータは、デフォルト許可データと同じフォーマットのものであり得、順次最終メタデータルックアップから返されるデータは、デフォルト許可データから減算され、許可の低減されたセットをもたらす。順次最終メタデータルックアップから返されるデータは、単一の許可ビット(読取り、書込み、又は実行のいずれか)に関連付けられ得る。代替的に、順次最終メタデータルックアップから返されたデータは、複数の許可又はすべての許可に関連付けられ得る。
【0017】
いくつかの代替構成では、デフォルト許可メタデータは、アドレス変換に関連付けられた最小許可のセットを定義し、順次最終メタデータルックアップから返されるデータは、最小許可のセットの拡張を定義する。そのような構成では、デフォルト許可は、より特権の低いプロセスに関連付けられた許可とすることができ、順次最終メタデータルックアップから返されるデータは、第2のアドレスの同じセットにアクセスするより特権の高いプロセスに関連付けられた高められた許可のセットを定義することができる。いくつかの構成では、順次最終メタデータルックアップから返されたデータは、デフォルト許可データと同じフォーマットであり得、順次最終メタデータルックアップから返されたデータは、デフォルト許可データに追加される。順次最終メタデータルックアップから返されるデータは、単一の許可ビット(読取り、書込み、又は実行のいずれか)に関連付けられ得る。代替的に、順次最終メタデータルックアップから返されたデータは、複数の許可又はすべての許可に関連付けられ得る。
【0018】
複数のメタデータテーブルは、複数の変換テーブルの各々についてメタデータテーブルが存在するテーブルの完全なセットとして定義することができる。そのような構成では、完全なメタデータテーブルウォークが常に可能である。しかしながら、いくつかの構成では、異なる識別子に関連付けられた許可データに差がある場合にのみメタデータテーブルが存在するメタデータテーブルが提供される。そのような構成では、アドレス変換回路は、順次メタデータルックアップのうちの1つから返された、順次メタデータルックアップの残りの部分が未定義であるという指示に応答して、デフォルト許可メタデータに基づいて識別子に固有のメタデータを設定するように構成される。したがって、メタデータルックアップが無効エントリを返す場合、アドレス変換回路は、依然として、第2のアドレスに関連付けられた許可メタデータを提供することができる。このように応答するアドレス変換回路を提供することによって、必要とされるメタデータテーブルのセットが低減され、その結果、メタデータテーブルに必要な記憶空間が低減される。
【0019】
いくつかの構成では、アドレス変換回路は、識別子が複数の識別子の各々と異なるという決定に応答して、障害表示をトリガするように構成される。特に、順次最終のメタデータ変換テーブルが可能な識別子のサブセットに関連付けられたメタデータを記憶する場合、アドレス変換回路は、識別子に関連付けられた許可データが存在しないことが、その識別子に関連付けられたプロセスが第2のアドレスに関連付けられていないプロセスであるという指示であると決定する。したがって、アドレス変換回路は、第2のアドレスを出力することなく障害表示を返す。
【0020】
いくつかの構成では、アドレス変換回路は、第1のアドレスと第2のアドレスとの間のアドレス変換と、そのアドレス変換に関連付けられた対応するメタデータとを記憶するための変換索引バッファを備える。したがって、変換索引バッファは、変換のためのキャッシュとして働き、第1のアドレスに関連して、変換テーブルウォークから返されたデータ及びメタデータテーブルウォークから返されたデータを記憶する。変換索引バッファは、様々な形態をとることができる。いくつかの構成では、変換索引バッファは、第2のアドレスと順次最終メタデータルックアップから返されるデータの両方を記憶するために各エントリの幅が増加される単一の変換索引バッファである。このようにして、変換索引バッファには最小限の余分な記憶装置を備えることができる。代替構成では、変換索引バッファは複数の領域を含み、各領域は異なる識別子に関連付けられる。この手法は、追加の回路を必要とするが、各識別子に対して異なる第1のアドレスのセットが記憶されることを可能にし、したがって、第2のアドレスのセットのより広いカバレッジをもたらす。
【0021】
いくつかの構成では、識別子は、所定の数の識別子のうちの1つであり、変換索引バッファは、対応するメタデータとして、所定の数の識別子の各々に固有のメタデータを記憶するように構成される。代替構成では、所定の数の識別子のサブセットに関連付けられたメタデータのみが変換索引バッファに記憶され、アドレス変換回路は、識別子を、その識別子に固有のメタデータに関連して変換索引バッファに記憶されたタグデータと比較するように構成される。
【0022】
アドレス変換回路は、アドレス変換の機能を提供する任意の構造であり得る。しかしながら、いくつかの構成では、アドレス変換回路は、第1のアドレスが中間物理アドレスであり、第2のアドレスが物理アドレスであるアドレス変換を実行するように構成される。中間物理アドレスは、例えば、仮想マシンによって、その仮想マシンに関連付けられた仮想アドレスと中間物理アドレスとの間で既に変換されたアドレスである。そのような構成では、アドレス変換は第2の状態アドレス変換である。
【0023】
いくつかの構成では、識別子は、アドレス変換回路に関連付けられたデータ処理回路上でホストされる複数の仮想マシンのうちの1つの仮想マシンを識別し、複数の仮想マシンは、第2のアドレスの同じセットを共有する。同じアドレスセットを共有する複数の仮想マシンは各々、それらに関連付けられた異なる許可を有し得る。特に、より特権の高い仮想マシンは、第2のアドレスの同じセットを共有するより特権の低い仮想マシンがアクセスすることを禁止されている第2のアドレスのセットへのアクセスを読取り、書込み、実行してもよい。そのようなシナリオでは、より特権の低い仮想マシンに関連付けられたメタデータは、許可の低減されたセットを定義する。特に、より特権の低い仮想マシンは、第2のアドレスの特定のセットを読取り、書込み、又は実行することができない場合がある。本明細書に記載の技法を使用して、メタデータ変換テーブルは、アドレス変換テーブル間のマッピングにおいて、より特権の低い仮想マシンに固有のホールを定義するように構成することができる。第2のアドレスのセットに記憶されたデータが第2のアドレスの異なるセットに移動される場合、マッピングを再定義するために更新を必要とするのは変換テーブルだけである。変換テーブルが再定義されると、メタデータテーブルが維持され、マッピングにおいて定義されたホールが残る。
【0024】
いくつかの構成では、アドレス変換回路は、複数の変換テーブルのうちの順次第1の変換テーブルを示すベース変換テーブルアドレスと、複数のメタデータルックアップテーブルのうちの順次第1のメタデータルックアップテーブルを示すベースメタデータルックアップテーブルアドレスとを記憶するための記憶回路を備える。メタデータテーブルウォーク及び変換テーブルウォークが並行して実行される構成では、記憶回路は、ベース変換アドレスを定義し、変換テーブルウォークを実行する機能回路に関連付けられたベース変換テーブル記憶装置を備える。加えて、記憶回路は、ベースメタデータルックアップテーブルアドレスを定義し、メタデータ変換テーブルウォークを実行する機能回路に関連付けられるベースメタデータ記憶装置を備える。変換テーブルウォーク及びメタデータテーブルウォークを順次実行するために単一の機能ユニットが提供される構成では、記憶回路は、単一の機能ユニットがベースメタデータルックアップテーブルアドレス及びベース変換テーブルアドレスにアクセスすることができるように提供される。いくつかの構成では、記憶回路は、ベース変換テーブルアドレスを記憶するためのベース変換レジスタと、ベースメタデータルックアップテーブルアドレスを記憶するためのベースメタデータレジスタとを備える。
【0025】
いくつかの構成では、上記の構成のいずれかによるアドレス変換回路の製造のためのコンピュータ可読コードを記憶するコンピュータ可読媒体が提供される。いくつかの構成では、コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用される。上記のコンピュータ可読コードは、追加的又は代替的に、本明細書に記載の概念を具現化する装置の定義、モデリング、シミュレーション、検証及び/又は試験を可能にすることができる。
【0026】
例えば、本明細書に記載の概念を具現化する装置を製造するためのコンピュータ可読コードは、概念のハードウェア記述言語(Hardware Description Language、HDL)表現を定義するコードで具現化することができる。例えば、コードは、概念を具現化する装置を定義するための1つ以上の論理回路のレジスタ転送レベル(Register-Transfer-Level、RTL)抽象化を定義することができる。コードは、Verilog、SystemVerilog、Chisel、又は超高速集積回路ハードウェア記述言語(Very High-Speed Integrated Circuit Hardware Description Language、VHDL)並びにFIRRTLのような中間表現を用いて、装置を具現化する1つ以上の論理回路のHDL表現を定義し得る。コンピュータ可読コードは、SystemC及びSystemVerilogなどのシステムレベルモデリング言語又は概念のシミュレーション、機能的及び/若しくは形式的な検証、及び試験を可能にするためにコンピュータによって解釈され得る概念の他の行動表現を使用して概念を具現化する定義を提供することができる。
【0027】
追加的又は代替的に、コンピュータ可読コードは、GDSIIなどの表現を含む、1つ以上のネットリスト又は集積回路レイアウト定義など、本明細書で説明する概念を具現化する集積回路構成要素の低レベル記述を定義し得る。集積回路構成要素の1つ以上のネットリスト又は他のコンピュータ可読表現は、1つ以上の論理合成プロセスをRTL表現に適用して、本発明を具現化する装置の製造に使用する定義を生成することによって生成し得る。代替的又は追加的に、1つ以上の論理合成プロセスは、記載された概念を具現化するようにフィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)を構成するためにFPGAにロードされるビットストリームをコンピュータ可読コードから生成することができる。FPGAは、集積回路での製造前に概念の検証及び試験の目的で展開されてもよく、又はFPGAは製品に直接展開されてもよい。
【0028】
コンピュータ可読コードは、例えば、本発明を具現化する装置を製造するための半導体設計及び製造プロセスで使用されるRTL表現、ネットリスト表現、又は別のコンピュータ可読定義のうちの1つ以上の混合を含む、装置の製造のためのコード表現の混合を含むことができる。代替的又は追加的に、概念は、装置を製造するために半導体設計及び製造プロセスで使用されるコンピュータ可読定義と、いったん製造されると定義された装置によって実行される命令を定義するコンピュータ可読コードとの組合せで定義されてもよい。
【0029】
そのようなコンピュータ可読コードは、任意の既知の一時的なコンピュータ可読媒体(ネットワークを介したコードの有線又は無線送信など)、又は半導体、磁気ディスク、若しくは光ディスクなどの非一時的コンピュータ可読媒体に配置することができる。コンピュータ可読コードを使用して製造された集積回路は、中央処理装置、グラフィック処理装置、ニューラル処理装置、デジタル信号プロセッサ、又は概念を個別に若しくは集合的に具現化する他の構成要素のうちの1つ以上などの構成要素を備えることができる。
【0030】
ここで、添付の図面を参照して、特定の例示的な構成を説明する。
【0031】
図1は、本技法の様々な構成によるアドレス変換回路40を利用するデータ処理装置2の一例を概略的に示す。データ処理装置2は、フェッチステージ6と、復号ステージ10と、リネームステージ12と、発行ステージ16と、実行ステージ18と、ライトバックステージ20とを含む複数のステージを含む。命令はパイプラインを通ってステージからステージへ移動し、一部の命令がパイプラインの1つのステージにあり、他の命令が別のステージで保留中であり得る。これは可能なパイプライン構成の単なる例であり、他の例は必要に応じて異なるステージ又はステージの組合せを有してもよいことが理解されるであろう。
【0032】
フェッチステージ6は、例えば命令キャッシュから命令をフェッチする。分岐予測器4は、分岐命令の結果を予測するために設けることができる。フェッチされた命令は復号ステージ10に渡され、復号ステージ10は命令を復号して、実行ステージ18をトリガして対応する処理動作を実行させるための制御信号を提供することができる復号された命令を生成する。フェッチステージ6によってフェッチされた一部の命令について、復号ステージ10は、パイプラインの後のステージによって見られる「命令」がキャッシュ8からフェッチされた命令とは異なる形態であり得るように、命令を2つ以上の復号された命令にマッピングし得る。復号された命令は、命令によって指定されたアーキテクチャレジスタ指定子を、命令に応答してアクセスされるべき対応する物理レジスタ14を識別する物理レジスタ指定子にマッピングするために、レジスタリネームステージ12に渡される。発行ステージ16は、実行のために発行を待っている命令をキューに入れる。実行ステージ18は、発行ステージ16によって発行された命令を実行し、命令に応答して、算術演算若しくは論理演算、又はデータキャッシュ30若しくは更なるレベルのキャッシュ32若しくはメモリ34へのロード/ストア動作などの様々なデータ処理動作を実行する。実行ユニット18は、いくつかの保留中のロード/ストア動作をキューに入れるためのロードストアユニット26を含むいくつかの実行ユニット22、24、21、25を有することができる。実行ユニットは、1つ以上の命令の投機的実行が可能であってもよく、投機的に実行された命令の実行を追跡するために投機制御ユニット35が設けられてもよい。ライトバックステージ20は、実行ステージ18によって実行された命令の結果を、述語レジスタ44及び条件ステータスレジスタ42を含む物理レジスタファイル14に書き込む。
【0033】
パイプラインはまた、第1のアドレスと第2のアドレスとの間の変換を実行するためのアドレス変換回路40を有する。アドレス変換回路40は、ロード/ストアユニット26及びフェッチステージ6から受信された第1のアドレスの変換を実行し、第1のアドレスが受信されたロード/ストアユニット26又はフェッチステージ6に第2のアドレスを返す。アドレス変換回路40は、L2キャッシュ32又はメモリ34に記憶されたページテーブルレベルにおいて所定の最大数の順次ルックアップを実行することによってアドレス変換を実行する。
【0034】
図2は、いくつかの例示的な構成によるアドレス変換回路40の更なる詳細を提供する。アドレス変換回路40は、第1のアドレス42及び識別子44の受信に応答して、アドレス変換を実行して第2のアドレス46を決定するように構成される。アドレス変換回路40は、複数の変換テーブル50を使用して変換テーブルウォークを実行することによって第2のアドレス46を決定する。特に、アドレス変換回路40は、変換テーブル50において一連のルックアップを実行する。一連のルックアップは、変換テーブル50における一連の中間ルックアップと、変換テーブル50のうちの1つにおける最終ルックアップとを含む。各中間ルックアップは、第1のアドレス42の一部に基づいてインデックス付けされ、変換テーブル50のうちの1つにおける後続のルックアップで使用されるアドレスを決定する。最終ルックアップは、アドレス変換回路40によって、第1のアドレス42の一部に基づいて定義された変換テーブル50のうちの1つのアドレスで実行され、第2のアドレス46を決定する。加えて、アドレス変換回路40は、メタデータ48を決定するために、複数のメタデータルックアップテーブル52において対応する一連のルックアップを実行する。特に、アドレス変換回路40は、メタデータルックアップテーブル52において一連のルックアップを実行する。一連のルックアップは、メタデータルックアップテーブル52における一連の中間ルックアップと、メタデータルックアップテーブル52のうちの1つにおける最終ルックアップとを含む。各中間ルックアップは、変換テーブル50における対応するルックアップで使用されたのと同じ第1のアドレス42の部分に基づいてインデックス付けされ、メタデータルックアップテーブル50のうちの1つにおける後続のルックアップで使用されるアドレスを決定する。最終メタデータテーブルルックアップは、アドレス変換回路40を使用することによって、変換テーブル50における最終ルックアップで使用された第1のアドレス42の同じ部分に基づいて定義されたメタデータルックアップテーブル52のうちの1つのアドレスで実行される。アドレス変換回路40は、メタデータテーブルウォークの最終ルックアップ及び識別子44に基づいてメタデータ48を決定するように構成される。
【0035】
図3は、いくつかの例示的な構成によるアドレス変換40回路の更なる詳細を提供する。アドレス変換回路40は、
図2に示すように、アドレス変換回路40に共通の複数の特徴を備える。これらの特徴は、
図2に関連して上述されている。アドレス変換回路40は、複数の変換テーブル50のうちの1つにおける第1の変換ルックアップを実行するためのベース変換アドレスを記憶し、複数のメタデータルックアップテーブル52のうちの1つにおける第1のメタデータテーブルルックアップのためのベースメタデータルックアップテーブルアドレスを記憶する記憶回路56を備える。アドレス変換回路40は、第1のアドレス42、第2のアドレス46、及びメタデータ48の間の対応関係を定義する複数のエントリを記憶するための変換索引バッファ58を更に備える。アドレス変換回路40は、第1のアドレス42の受信に応答して、変換索引バッファ58内でルックアップを実行して、第1のアドレス42がその中にキャッシュされているか否かを決定するように構成される。アドレス変換回路40が、第1のアドレス42が変換索引バッファ58内にキャッシュされていると決定した場合、アドレス変換回路は、変換索引バッファ58内でヒットしたエントリに基づいて、第2のアドレス46及びメタデータ48を決定する。一方、アドレス変換回路40が、第1のアドレス42が変換索引バッファ58にキャッシュされていないと決定した場合、アドレス変換回路40は、第2のアドレス46及びメタデータ48を決定するために、変換テーブル50を使用して変換テーブルウォークを実行し、メタデータルックアップテーブル52を使用してメタデータテーブルウォークを実行する。アドレス変換回路40が変換テーブルウォーク及びメタデータテーブルウォークを実行すると、アドレス変換回路40は、第1のアドレス42を第2のアドレス46及びメタデータ48に関連付ける新しいエントリを変換索引バッファ58内に生成することができる。変換索引バッファ58の新しいエントリの生成は、変換索引バッファ58の既存のエントリが追い出されることを必要とする場合がある。そのような場合、アドレス変換回路40は、変換索引バッファ58の既存のエントリのうちの1つを、標準キャッシュ置換ポリシーに従って追い出すことができる。アドレス変換回路40は、障害表示54を決定するための回路を更に備える。アドレス変換回路40は、識別子44に関連付けられたメタデータ48が存在しないと決定されたときに障害表示54を出力するように構成される。
【0036】
図4a及び
図4bは、様々な例示的な構成によるアドレス変換回路40の異なる構成を概略的に示す。
図4aは、アドレス変換回路40が、第2のアドレス46を決定するために第1のアドレス42に基づく変換テーブルウォークと、第2のアドレスに関連付けられたメタデータ48を決定するために第1のアドレス42及び識別子44に基づくメタデータテーブルウォークとの両方を実行するように構成された単一の順次変換回路60を備える配置を概略的に示す。
【0037】
図4bは、アドレス変換回路40が、第1のアドレス42に基づいて第2のアドレス46を生成するために変換テーブルウォークを実行する変換回路62を備える配置を概略的に示す。アドレス変換回路40はまた、メタデータ48を決定するために、第1のアドレス42及び識別子44に基づいてメタデータテーブルウォークを実行するように構成された第2の変換回路64を備える。アドレス変換回路40に第1の変換回路62及び第2の変換回路64を提供することによって、アドレス変換回路40は、メタデータ48を決定するためのメタデータテーブルウォークと並行して、第2のアドレス46を決定するための変換テーブルウォークを実行することができる。
【0038】
図5a~
図5cは、物理メモリにおける変換テーブル及びメタデータルックアップテーブルの配置を概略的に示す。
図5aは、ホスト処理装置74によってホストされる第1の仮想マシン70及び第2の仮想マシン72のために別個の変換テーブルが提供されるホスト処理装置74を概略的に示す。この構成は、変換テーブルを記憶する典型的な手法に対応する。ホスト処理装置74は、第1の仮想マシン70に関連付けられた第1の物理アドレス82及び第2の仮想マシン72に関連付けられた第2の物理アドレス84にデータを記憶するために、メモリ76にアクセスするように構成される。ホスト処理装置74が、第1の仮想マシン70に関連付けられた中間物理アドレスと第1の仮想マシン70に関連付けられた第1の物理アドレス82との間の変換を実行するために、ホスト処理装置74は、第1の変換テーブル78を記憶する。加えて、ホスト処理装置74が第2の仮想マシン72に関連付けられた中間物理アドレスと第2の仮想マシン72に関連付けられた第2の物理アドレス84との間の変換を実行するために、ホスト処理装置74は、第2の変換テーブル80を記憶する。そのような構成では、第1の仮想マシン70に関連付けられた第1の物理メモリ82と、第2の仮想マシン72に関連付けられた第2の物理メモリ84とは、互いに分離されている。したがって、各々はそれら自身の変換テーブルを必要とする。そのような構成では、変換に関連付けられたメタデータは、典型的には、変換テーブル自体に記憶される。この場合、第1の変換テーブル78は、第1の仮想マシン70に関連付けられた第1の物理アドレス空間82内の物理アドレスと、第1の物理アドレス空間82に関連付けられたメタデータとを決定する。加えて、第2の変換テーブル78は、第2の仮想マシン70に関連付けられた第2の物理アドレス空間82内の物理アドレスと、第2の物理アドレス空間84に関連付けられたメタデータとを決定する。
【0039】
図5bは、変換テーブルを記憶するための典型的な手法による、第1の仮想マシン及び第2の仮想マシンに関連付けられた物理メモリの代替構成を概略的に示す。この構成では、第1の仮想マシン70及び第2の仮想マシン72は、物理アドレス86の同じセットを共有するように構成される。第1の仮想マシン及び第2の仮想マシンが各々、物理アドレス86の同じセットにアクセスすることができ、更に、物理アドレス86のセットの各々に関連付けられた同じアクセス許可を有する場合、変換テーブルの同じセットを、第1の仮想マシン70及び第2の仮想マシン72の各々に提供することができる。しかしながら、典型的な使用要件は、第1の仮想マシン70及び第2の仮想マシン72の一方が、第1の仮想マシン70及び第2の仮想マシン72の他方よりも高い特権レベルを有し得ることである。したがって、より高い特権レベルを有する仮想マシンは、物理アドレス空間86にアクセスするときに、アクセス許可の高められたセットを有することが望ましい場合がある。これらのアクセス許可が尊重されることを保証するために、典型的な構成では、第1の仮想マシン70に関するアドレス変換のために第1の変換テーブルセット81が提供され、第1の変換テーブルセット81は、第1の仮想マシン70に関連付けられた中間物理アドレスから物理アドレスへの変換を定義し、第1の変換テーブルセット81は、変換が提供される各物理アドレスに関連付けられた許可メタデータを定義する。加えて、典型的な構成では、変換テーブル83の第2のセットが、第2の仮想マシン72に関するアドレス変換のために提供され、変換テーブル83の第2のセットは、第2の仮想マシン70に関連付けられた中間物理アドレスから物理アドレスへの変換を定義し、変換テーブル83の第2のセットは、変換が提供される各物理アドレスに関連付けられた許可メタデータを定義する。このような構成では、ホスト処理装置74が第1の仮想マシン70及び第2の仮想マシン72に関連付けられた物理アドレス86を修正する場合、第1の変換テーブル81及び第2の変換テーブル83の両方が書き換えを必要とし、その結果、ホスト処理装置74の処理オーバーヘッドが大きくなる。
【0040】
対照的に、
図5cは、本技法によるアドレス変換回路40を備えるホスト処理装置94を概略的に示す。特に、ホスト処理装置94は、第1の仮想マシン90及び第2の仮想マシン92をホストする。第1の仮想マシン90及び第2の仮想マシン92は、ホスト処理装置94に関連付けられたメモリ96に記憶された物理アドレス102の同じセットにアクセスするように構成される。
図5bに関連して説明したように、第1の仮想マシン90及び第2の仮想マシン92が物理アドレス102の同じセットを共有する場合、典型的には、第1の仮想マシン90及び第2の仮想マシン92に関連付けられた許可メタデータが異なることが必要とされる。本技法によれば、ホスト処理装置94は、第1の仮想マシン90及び第2の仮想マシン92の各々によって使用される中間物理アドレスと、第1の仮想マシン90と第2の仮想マシン92との間で共有される対応する物理アドレス102との間の変換を定義する変換テーブルのセットを記憶する。ホスト処理装置94はまた、メモリ96内に、第1の仮想マシン90及び第2の仮想マシン92の各々に関連付けられた許可を定義するメタデータルックアップテーブル98のセットを記憶する。ホスト処理装置94が、第1の仮想マシン90及び第2の仮想マシン92に関連付けられた物理アドレス102を修正する場合、1セットの変換テーブル、変換テーブル100のみが修正を必要とする。したがって、処理オーバーヘッドが低減される。ホスト処理装置94は、本技法によるアドレス変換回路40を備える。第1の仮想マシン90及び第2の仮想マシン92のうちの1つに関連付けられた中間物理アドレス(第1のアドレス)の受信に応答して、アドレス変換回路40は、メモリ96に記憶された変換テーブル100を使用して変換テーブルウォークを実行する。更に、アドレス変換回路40は、変換テーブルウォークから決定された物理アドレスに関連付けられた許可メタデータを決定するために、メタデータルックアップテーブル98内でメタデータテーブルルックアップを実行するために、中間物理アドレスを、第1の仮想マシン90及び第2の仮想マシン92のどちらから中間物理アドレスが発信されたかを指定する識別子と組み合わせて使用する。このようにして、
図5bに示されるのと同じ機能が提供されるが、物理アドレス102が再マッピングされる場合、変換テーブルの単一のセット、すなわち変換テーブル100のみを書き換える必要があるという利点を有する。
【0041】
図6は、様々な例示的な構成による、第1のアドレスと第2のアドレスとの間の変換、及び第1のアドレスとその第2のアドレスに関連付けられたメタデータとの間の変換を概略的に示す。アドレス変換回路40は、第1のアドレス116を受信する。アドレス変換回路40は、第2のアドレス132を決定するために、変換テーブル110における一連のルックアップに基づいて変換テーブルウォークを実行する。特に、アドレス変換回路40は、ベース変換レジスタ120からベース変換アドレスを決定する。ベース変換アドレスは、変換テーブル110(A)における順次最初のルックアップ(L0ルックアップ)のアドレスである。変換テーブル110(A)におけるルックアップは、第1のアドレス116のビット47:39(ビット47から39まで)を使用して実行される。変換テーブル110(A)におけるルックアップの結果は、順次第2のルックアップ(L1ルックアップ)において使用される第2の変換テーブル110(B)のアドレスを提供する。変換テーブル110(B)におけるL1ルックアップは、第1のアドレス116のビット38:30を使用してインデックス付けされる。変換テーブル110(B)におけるルックアップの結果は、順次第3のルックアップ(L2ルックアップ)において使用される第3の変換テーブル110(C)のアドレスを提供する。変換テーブル110(C)におけるL2ルックアップは、第1のアドレス116のビット29:21を使用してインデックス付けされる。変換テーブル110(C)におけるルックアップの結果は、順次第4のルックアップ(L3ルックアップ)において使用される第4の変換テーブル110(D)のアドレスを提供する。変換テーブル110(D)におけるL3ルックアップは、第1のアドレス116のビット20:12を使用してインデックス付けされる。変換テーブル110(D)におけるルックアップの結果は、第2のアドレス132を生成するために、組合せユニット118を使用して、第1のアドレス116のビット11:0と組み合わされる。
【0042】
加えて、アドレス変換回路40は、メタデータ124を決定するために、メタデータテーブル112における一連のメタデータルックアップに基づいてメタデータテーブルウォークを実行する。特に、アドレス変換回路40は、ベースメタデータレジスタ122からベースメタデータアドレスを決定する。ベースメタデータアドレスは、メタデータテーブル112(A)における順次最初のルックアップ(L0ルックアップ)のアドレスである。メタデータテーブル112(A)におけるルックアップは、第1のアドレス116のビット47:39を使用して実行される。メタデータテーブル112(A)におけるルックアップの結果は、順次第2のルックアップ(L1ルックアップ)において使用される第2のメタデータテーブル112(B)のアドレスを提供する。メタデータテーブル112(B)におけるL1ルックアップは、第1のアドレス116のビット38:30を使用してインデックス付けされる。メタデータテーブル112(B)におけるルックアップの結果は、順次第3のルックアップ(L2ルックアップ)において使用される第3のメタデータテーブル112(C)のアドレスを提供する。メタデータテーブル112(C)におけるL2ルックアップは、第1のアドレス116のビット29:21を使用してインデックス付けされる。メタデータテーブル112(C)におけるルックアップの結果は、順次第4のルックアップ(L3ルックアップ)において使用される第4のメタデータテーブル112(D)のアドレスを提供する。メタデータテーブル112(D)におけるL3ルックアップは、第1のアドレス116のビット20:12を使用してインデックス付けされる。メタデータテーブル112(D)におけるルックアップの結果は、組合せユニット130を使用して、第1のアドレス116のビット11:0と組み合わされて、メタデータ124を生成する。メタデータ124は、第2のアドレス132に関連付けられた識別子固有メタデータ128を決定するために、識別子114に基づいてルックアップを実行するルックアップユニット126に提供される。識別子固有メタデータ128及び第2のアドレス132は、アドレス変換回路40によって返される。
【0043】
代替構成では、レベルルックアップの各々に使用される第1のアドレスの部分は、異なる数のビットを使用する。例えば、L0ルックアップは、L1ルックアップとは異なる数のビットを使用し得る。しかしながら、変換テーブルにおけるL0ルックアップとメタデータテーブルにおけるL0ルックアップの両方は、同じビットセットを使用し、その結果、変換テーブル階層及びメタデータテーブル階層の構造が同じになる。
【0044】
図7a及び
図7bは、変換テーブル(TT)及びメタデータテーブル(MT)のレイアウトを概略的に示す。
図7aは、本技法に関連付けられた変換テーブルのレイアウトを概略的に示す。変換テーブルの各々は、アドレス変換回路40によって実行される異なるレベルのルックアップに関連付けられる。レベル0(L0)変換テーブル142は、ベース変換レジスタ140に記憶されたアドレスに基づいて決定される。
図6に関連して説明したように、アドレス変換回路40は、複数のレベル1(L1)変換テーブル144のうちのどれがL1ルックアップに使用されるべきかを決定するために、L0変換テーブル142においてルックアップを実行する。次に、アドレス変換回路は、複数のレベル2(L2)変換テーブル146のうちのどれがL2ルックアップのために使用されるべきかを決定するために、L1変換テーブルにおいてL1ルックアップを実行する。次に、アドレス変換回路は、L2ルックアップを実行して、レベル3(L3)変換テーブル148のうちのどれがL3ルックアップのために使用されるべきかを決定する。最後に、L3ルックアップは、第2のアドレスが決定されるアドレス部分と、メタデータルックアップから決定された許可ビットと組み合わされるデフォルト読取り、書込み、及び実行ビットのセットとを返す。
【0045】
図7bは、
図7aに示される変換テーブルレイアウトに対応するメタデータテーブルのレイアウトを概略的に示す。メタデータテーブルの各々は、アドレス変換回路40によって実行される異なるレベルのルックアップに関連付けられる。レベル0(L0)メタデータテーブル152は、ベースメタデータレジスタ150に記憶されたアドレスに基づいて決定される。
図6に関連して説明したように、アドレス変換回路40は、複数のレベル1(L1)メタデータテーブル154のうちのどれがL1ルックアップに使用されるべきかを決定するために、L0メタデータテーブル152においてルックアップを実行する。次に、アドレス変換回路は、複数のレベル2(L2)メタデータテーブル156のうちのどれがL2ルックアップのために使用されるべきかを決定するために、L1メタデータテーブルにおいてL1ルックアップを実行する。次に、アドレス変換回路は、L2ルックアップを実行して、レベル3(L3)メタデータテーブル158のうちのどれがL3ルックアップのために使用されるべきかを決定する。最後に、L3ルックアップは、可能な識別子のセットに関連付けられた許可ビットのセットを返す。アドレス変換回路は、第1のアドレスとともに受信された識別子に基づいてルックアップを実行して、その識別子に関連付けられた許可ビットを決定する。アドレス変換回路は、その識別子に関連付けられた許可ビットとデフォルト許可ビットとの組合せに基づいて許可を決定する。
【0046】
図8は、許可データが加法的に(デフォルト許可が許可の最小セットを定義し、許可メタデータが許可の最小セットの上昇を定義する)、減法的に(デフォルト許可が許可の最大セットを定義し、許可メタデータが許可の最大セットの制限を定義する)、及び決定的に(許可メタデータがデフォルト許可とは独立して決定される)決定される場合について、識別子に関連付けられた許可データが、デフォルト許可データ及び順次最終メタデータルックアップから返される許可メタデータからどのように決定されるかを概略的に示す。
【0047】
許可データが加法的に決定される場合、許可メタデータは、順次最終メタデータルックアップからの許可メタデータがデフォルト許可メタデータより許容的である場合、デフォルト許可を高めることによって、許可ビットごとに定義される。この場合には2つの可能性がある。第1に、デフォルト許可メタデータが1(特定の許可が許可されることを示す)である場合、結果として得られる許可メタデータは、順次最終メタデータルックアップから返される許可メタデータとは無関係に1である。第2に、デフォルト許可メタデータが0(特定の許可が許可されないことを示す)である場合、結果として生じる許可メタデータは、順次最終メタデータルックアップからの許可メタデータによって決定される。したがって、順次最終メタデータルックアップからの許可メタデータがX(ここで、X=1又はX=0)である場合、許可メタデータもXに等しい(すなわち、X=1又はX=0の同じ値)。加法的な場合における許可メタデータを決定する第1の例は、デフォルト許可メタデータRWX=100と、RWX=XXXの順次最終メタデータルックアップからの許可メタデータとを有する。この状況では、デフォルト許可データが1であるとき、許可メタデータは1に等しく、デフォルト許可メタデータが0であるとき、許可メタデータは順次最終メタデータルックアップからの許可メタデータによって決定されるので、許可メタデータはRWX=1XXである。同様に、デフォルト許可メタデータがRWX=XX0であり、順次最終メタデータルックアップからの許可メタデータがRWX=101である場合、許可メタデータはRWX=1X1である。
【0048】
許可データが減法的に決定される場合、順次最終メタデータルックアップからの許可メタデータがデフォルト許可メタデータよりも制限的である場合、デフォルト許可を制限することによって、許可ビットごとに許可メタデータが定義される。この場合、2つの可能性がある。第1に、デフォルト許可メタデータが0(特定の許可が許可されないことを示す)である場合、結果として得られる許可メタデータは、順次最終メタデータルックアップから返される許可メタデータとは無関係に0である。第2に、デフォルト許可メタデータが1(特定の許可が許可されることを示す)である場合、結果として得られる許可メタデータは、順次最終メタデータルックアップからの許可メタデータによって決定される。したがって、順次最終メタデータルックアップからの許可メタデータがX(ここで、X=1又はX=0)である場合、許可メタデータもXに等しい(すなわち、X=0又はX=1の同じ値)。減法的な場合における許可メタデータを決定する第1の例は、デフォルト許可メタデータRWX=100と、RWX=XXXの順次最終メタデータルックアップからの許可メタデータとを有する。この状況では、デフォルト許可データが0であるとき、許可メタデータは0に等しく、デフォルト許可メタデータが1であるとき、許可メタデータは順次最終メタデータルックアップからの許可メタデータによって決定されるので、許可メタデータはRWX=X00である。同様に、デフォルト許可メタデータがRWX=XX0であり、順次最終メタデータルックアップからの許可メタデータがRWX=101である場合、許可メタデータはRWX=X00である。
【0049】
許可データが絶対的に決定される場合、許可メタデータは、デフォルト許可データとは独立した順次最終メタデータルックアップからの許可メタデータによって、許可ビットごとに定義される。絶対的な場合において許可メタデータを決定する第1の例は、デフォルト許可メタデータRWX=100と、RWX=XXXの順次最終メタデータルックアップからの許可メタデータとを有する。この状況では、許可メタデータはRWX=XXXである。同様に、デフォルト許可メタデータがRWX=XX0であり、順次最終メタデータルックアップからの許可メタデータがRWX=101である場合、許可メタデータはRWX=101である。
【0050】
図示の実施形態では、許可は、許可が許可されていることを示す論理1と、許可が許可されていないことを示す論理0とによって定義される。代替構成では、許可は、許可が許可されることを示す論理0と、許可が許可されないことを示す論理1とを使用して符号化される。許可を符号化するための他の代替案が提供され得ることは、当業者には容易に明らかであろう。
【0051】
図9は、本技法の様々な構成による変換索引バッファを概略的に示す。変換索引バッファは、中間物理アドレスの一部が物理アドレスの一部に関連付けられた複数の行と、特定の識別子に対する一連の許可ビットとを含む。図示された実施形態では、許可ビットは、2つの識別子(識別子00及び識別子01)に提供される。特に、中間物理アドレスIPA0の一部は、物理アドレスPA0の一部に関連付けられ、許可ビットRWX=111は識別子00に関連付けられ、許可ビットRWX=111は識別子01に関連付けられる。したがって、物理アドレスPA0は、識別子00に関連付けられた仮想マシンによってアクセスすることができ、読取り、書込み、及び実行アクセスのために、識別子01に関連付けられた仮想マシンによってアクセスすることができる。加えて、中間物理アドレスIPA1の一部は、物理アドレスPA1の一部に関連付けられ、許可ビットRWX=111は識別子00に関連付けられ、許可ビットRWX=100は識別子01に関連付けられる。したがって、物理アドレスPA1は、読取り、書込み、及び実行アクセスのために、識別子00に関連付けられた仮想マシンによってアクセスすることができ、読取りアクセスのみのために、識別子01に関連付けられた仮想マシンによってアクセスすることができる。最後に、中間物理アドレスIPANの一部は、物理アドレスPANの一部に関連付けられ、許可ビットRWX=110は識別子00に関連付けられ、許可ビットRWX=000は識別子01に関連付けられる。したがって、物理アドレスPANは、読取りアクセス及び書込みアクセスのために、識別子00に関連付けられた仮想マシンによってアクセスすることができ、任意のタイプのアクセスのために、識別子01に関連付けられた仮想マシンによってアクセスすることはできない。
【0052】
図10は、本技法の様々な構成によるアドレス変換回路40によって実行される一連のステップを概略的に示す。フローはステップS2で始まり、第1のアドレス及び第1のアドレスに関連付けられた識別子が受信されたか否かが決定される。「いいえ」の場合、フローはステップS2に留まる。ステップS2において、第1のアドレス及び識別子が受信されたと決定された場合、フローはステップS4に進む。ステップS4において、アドレス変換回路30は、第1のアドレスに対応する第2のアドレスを決定するために、一連の変換テーブルにおいて変換テーブルウォークを実行する。変換テーブルウォークは、第1のアドレスに基づいてインデックス付けされる。次に、フローはステップS6に進み、識別子に固有のアドレス変換に関連付けられたメタデータを決定するために、メタデータテーブルウォークが実行される。メタデータテーブルウォークは、変換ルックアップと同じ第1のアドレスの部分に基づいてインデックス付けされた一連の変換ルックアップを使用して実行される。いくつかの構成では、ステップS4及びステップS6は並行して実行される。
【0053】
図11は、本技法の様々な構成によるアドレス変換回路40の製造を概略的に示す。製造は、非一時的コンピュータ可読媒体1000に記憶されたコンピュータ可読コード1002に基づいて実行される。コンピュータ可読コードは、概念を具現化する装置を備える集積回路を製造するために、電子設計自動化(EDA)ステージを含む半導体設計及び製造プロセスの1つ以上のステージで使用することができる。製造プロセスは、コンピュータ可読コード1002を、フィールドプログラマブルゲートアレイ(FPGA)などの1つ以上のプログラマブルハードウェアユニットに直接適用して、上述した構成を具現化するようにFPGAを構成すること、或いは1つ以上の集積回路として実装される装置又は上述した構成を具現化する装置の製造を容易にすることを含む。製造された設計1004は、集積回路の全体又は一部として製造することができるアドレス変換回路40を含む。
【0054】
要約すると、アドレス変換を実行するためのアドレス変換回路及び方法に関する。アドレス変換回路は、第1のアドレス及び識別子の受信に応答して、第1のアドレスの対応する部分に基づいてインデックス付けされた複数の変換テーブルにおける1つ以上の変換ルックアップを含む変換テーブルウォークを実行することによって、第1のアドレスから第2のアドレスへのアドレス変換を実行する。アドレス変換回路は、メタデータテーブルウォークを実行して、識別子に固有であり、アドレス変換に関連付けられたメタデータを決定するように更に構成される。メタデータテーブルウォークは、複数のメタデータルックアップテーブルにおける1つ以上のメタデータルックアップを含み、1つ以上のメタデータルックアップの各々は、1つ以上の変換ルックアップのうちの1つに対応し、その変換ルックアップと同じ第1のアドレスの部分に基づいてインデックス付けされる。
【0055】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配設又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0056】
本明細書では例示的な実施形態について添付の図面を参照して詳細に説明してきたが、理解されるように、本発明はそれらと寸分違わない実施形態に制限されるのではなく、また、添付の特許請求の範囲に定める本発明の範囲及び精神から逸脱することなく、当業者によって様々な変更、追加、及び修正を行うことができる。例えば、従属請求項の特徴の様々な組合せは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
【国際調査報告】