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

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

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

特表2024-502812メモリの領域のコンテンツの修正を追跡するための技法
<>
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図1
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図2
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図3
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図4A
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図4B
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図5
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図6
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図7
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図8
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図9A
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図9B
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図10
  • 特表-メモリの領域のコンテンツの修正を追跡するための技法 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-23
(54)【発明の名称】メモリの領域のコンテンツの修正を追跡するための技法
(51)【国際特許分類】
   G06F 12/1009 20160101AFI20240116BHJP
   G06F 12/1027 20160101ALI20240116BHJP
【FI】
G06F12/1009
G06F12/1027
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023540122
(86)(22)【出願日】2021-12-08
(85)【翻訳文提出日】2023-07-28
(86)【国際出願番号】 GB2021053213
(87)【国際公開番号】W WO2022148943
(87)【国際公開日】2022-07-14
(31)【優先権主張番号】2100128.4
(32)【優先日】2021-01-06
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】スウェイン, アンドリュー ブルックフィールド
(72)【発明者】
【氏名】ウーレンホルト, オロフ ヘンリク
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205MM51
5B205NN43
5B205NN45
5B205RR05
(57)【要約】
アドレス変換回路(20)は、中間レベル及び最終レベルのページテーブルを参照して仮想アドレスを物理アドレスに転換する。最終レベルページテーブル内の最終レベル記述子は、メモリの関連領域のアドレス変換データを識別する。中間レベルページテーブル内の中間レベル記述子は、ページテーブルの次のレベルで関連ページテーブルを識別するために使用される中間アドレス変換データを識別する。ページテーブル更新回路(35)は、各最終及び中間レベル記述子内の状態情報を維持し、関連メモリ領域のコンテンツの修正が許可されることを示すように、最終レベル記述子において、中間レベル記述子において、中間レベル記述子を介してアクセスされている任意の最終レベル記述子の状態情報内のクリーン状態からダーティ状態への更新の発生を示すように、状態情報をクリーン状態からダーティ状態に更新する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換回路であって、前記ページテーブルの階層構成が中間レベルページテーブル及び最終レベルページテーブルであって、
各最終レベルページテーブルは、いくつかの最終レベル記述子を含み、各最終レベル記述子は、メモリの関連領域のための前記アドレス変換データを識別しており、
各中間レベルページテーブルは、いくつかの中間レベル記述子を含み、各中間レベル記述子は、前記階層構成内の次のレベルの関連ページテーブルを識別するために使用される中間アドレス変換データを識別している、中間レベルページテーブル及び最終レベルページテーブルの両方を含むアドレス変換回路と、
各最終レベル記述子内の状態情報を維持するページテーブル更新回路であって、所与の最終レベル記述子の前記状態情報をクリーン状態からダーティ状態に更新して、メモリの前記関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新回路と、を備え、
前記ページテーブル更新回路は、前記中間レベルページテーブルの少なくとも1つのサブセット内に提供される前記中間レベル記述子内の前記状態情報を維持するように更に構成されており、前記状態情報が維持されている所与の中間レベル記述子に対して、前記ページテーブル更新回路は、前記所与の中間レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新して、前記中間レベル記述子を介してアクセスされる任意の最終レベル記述子の前記状態情報内で前記クリーン状態から前記ダーティ状態への更新の発生を示すように構成されている、装置。
【請求項2】
ページテーブルの前記階層構成は、ページテーブルの複数のレベルを含み、前記ページテーブル更新回路が前記状態情報を維持するように構成されている前記中間レベルページテーブルの前記少なくとも1つのサブセットは、前記階層構成の少なくとも1つのレベルの前記中間レベルページテーブルを含む、請求項1に記載の装置。
【請求項3】
前記中間レベルページテーブルの前記少なくとも1つのサブセットは、前記階層構成の1つ以上の隣接するレベル内の前記中間レベルページテーブルを含む、請求項2に記載の装置。
【請求項4】
前記ページテーブル更新回路は、前記中間レベル記述子内の前記状態情報を維持して、前記所与の中間レベル記述子の前記状態情報内の前記ダーティ状態の識別が、前記階層構成内の前記次のレベルの前記関連ページテーブルのコンテンツの修正が許可されていることを示すように構成されており、
前記ページテーブル更新回路は、前記所与の最終レベル記述子を識別するために使用される、前記状態情報を維持させる各中間レベル記述子が、前記状態情報内の前記ダーティ状態を識別すると、前記所与の最終レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新して、メモリの前記関連領域のコンテンツの修正が許可されていることを示すように構成されている、
請求項1から3のいずれかに記載の装置。
【請求項5】
前記ページテーブル更新回路は、メモリの前記関連領域のコンテンツの修正が許可されていることを示すように前記所与の最終レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新したことに応じて、前記階層構成内の前記レベルを遡って追跡して、前記最終レベル記述子を識別するために使用される各中間レベル記述子を識別し、状態情報を維持させる識別された各中間レベル記述子に対して、前記ダーティ状態を示すように必要に応じて前記状態情報を更新するように構成されている、
請求項1から3のいずれかに記載の装置。
【請求項6】
ページテーブルの前記階層構成から取り出された1つ以上の記述子のコピーを記憶するためのアドレス変換キャッシュストレージを更に備え、
前記ページテーブル更新回路は、前記所与の最終レベル記述子に関連付けられた前記メモリ領域内のコンテンツを更新しようとする際に、どのページテーブル記述子が更新する必要があるかを判定するときに、前記アドレス変換キャッシュストレージを参照するように構成されている、
請求項1から5のいずれかに記載の装置。
【請求項7】
前記アドレス変換キャッシュストレージが、状態情報が前記ダーティ状態を示す前記所与の最終レベル記述子のコピーを記憶するとき、前記ページテーブル更新回路は、ページテーブルの前記階層構成内の前記ページテーブル記述子に対して更新が必要とされないと判定するように構成されている、請求項6に記載の装置。
【請求項8】
状態情報が前記ダーティ状態を示す前記所与の最終レベル記述子のコピーを記憶する前記アドレス変換キャッシュストレージがない場合、前記ページテーブル更新回路は、前記所与の最終レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新することに加えて、それらの中間レベル記述子のいずれかについて維持された状態情報を更新する必要があるかどうかを判定するために、前記所与の最終レベル記述子を識別するために使用される前記中間レベル記述子に関して分析動作が必要であると判定するように構成されている、請求項6又は7に記載の装置。
【請求項9】
前記アドレス変換キャッシュストレージは、1つ以上の最終レベル記述子のコピーを記憶するための変換索引バッファを含む、請求項6から8のいずれかに記載の装置。
【請求項10】
前記アドレス変換キャッシュストレージは、前記ページテーブルの階層構成内の1つ以上の中間レベルにあるページテーブルからの中間レベル記述子のコピーを記憶する中間記述子キャッシュを更に含む、請求項9に記載の装置。
【請求項11】
状態情報が前記ダーティ状態を示す前記所与の最終レベル記述子のコピーを記憶する前記変換索引バッファがない場合、前記ページテーブル更新回路は、前記所与の最終レベル記述子を識別するために使用される非クリーン状態中間レベル記述子のコピーが検出されるか、又は、中間レベル記述子が前記中間記述子キャッシュにキャッシュされている前記階層構成内のすべてのレベルに対して前記ルックアップ動作が実行され、非クリーン状態中間レベル記述子は、状態情報が非クリーン状態を示す中間レベル記述子であるまで、前記階層構成内の前記レベルを遡って追跡しようとするために、前記中間記述子キャッシュ内でルックアップ動作を実行するように構成されている、請求項10に記載の装置。
【請求項12】
前記非クリーン状態は、ダーティ状態又は非追跡状態のうちの1つである、請求項11に記載の装置。
【請求項13】
前記ルックアップ動作中に、前記所与の最終レベル記述子を識別するために使用される非クリーン状態中間レベル記述子のコピーが検出された場合には、前記ページテーブル更新回路は、前記非クリーン状態中間レベル記述子を含む前記レベルと前記所与の最終レベル記述子を含む前記最終レベルとの間のレベルに存在する前記所与の最終レベル記述子を識別するために使用される任意の中間レベル記述子を識別し、次いで、それらの識別された中間レベル記述子のいずれかによって維持された前記状態情報内の前記ダーティ状態を識別するように構成されている、請求項11又は請求項12に記載の装置。
【請求項14】
前記処理回路は、前記処理回路によって実行されるべきデータ処理動作を決定するときに、前記中間レベル記述子のうちの1つ以上の中に維持された前記状態情報を参照させるように構成されている、請求項1に記載の装置。
【請求項15】
前記処理回路は、メモリアドレス範囲によって識別されるデータのブロックに関してグラフィックスレンダリング動作を周期的に実行するように構成されており、
前記処理回路は、少なくとも現在のレンダリングサイクルが決定された基準を満たす場合に、前記アドレス変換回路に、前記メモリアドレス範囲によってカバーされるメモリの領域からなるセットを識別させ、前記メモリの領域からなるセットについての前記最終レベル記述子を識別するために使用される1つ以上の中間レベル記述子を決定させ、前記データのブロックに対する更新が前のレンダリングサイクル以降に発生したかどうかを判定するために、それらの決定された1つ以上の中間レベル記述子に記憶された前記状態情報を参照させる要求を前記アドレス変換回路に発行するように構成されており、
前記前のレンダリングサイクル以降に前記データのブロックの更新が発生していないと判定された場合に、前記処理回路は、前記グラフィックスレンダリング動作を再実行する代わりに、前記前のレンダリングサイクルにおける前記グラフィックスレンダリング動作の出力を使用するように構成されている、
請求項14に記載の装置。
【請求項16】
前記メモリの領域はメモリページである、請求項1から15のいずれかに記載の装置。
【請求項17】
各最終レベル記述子内の前記状態情報は、メモリの前記関連領域がアクセスされたことを示すように設定されているアクセスフラグを更に含み、前記所与の中間レベル記述子内に維持されている前記状態情報は、その中間レベル記述子を介してアクセスされる任意の最終レベル記述子が、メモリの前記関連領域へのアクセスを示すようにそれらのアクセスフラグを設定しているときはいつでも設定されるアクセスフラグを更に含む、請求項1から16のいずれかに記載の装置。
【請求項18】
前記状態情報を前記階層構成のどのレベルに維持するかを判定するために前記ページテーブル更新回路によって参照される制御情報を維持するストレージを更に備える、請求項3に従属する場合の請求項1から17のいずれかに記載の装置。
【請求項19】
メモリ領域のコンテンツの修正を追跡する方法であって、
ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換回路であって、前記ページテーブルの前記階層構成が中間レベルページテーブル及び最終レベルページテーブルの両方を含むアドレス変換回路を利用することと、
各最終レベルページテーブルを、いくつかの最終レベル記述子を含み、各最終レベル記述子はメモリの関連領域の前記アドレス変換データを識別するように構成することと、
各中間レベルページテーブルを、いくつかの中間レベル記述子を含み、各中間レベル記述子は、前記階層構成内の次のレベルにおける関連ページテーブルを識別するために使用される中間アドレス変換データを識別するように構成することと、
各最終レベル記述子内に状態情報を維持するページテーブル更新回路であって、所与の最終レベル記述子の前記状態情報をクリーン状態からダーティ状態に更新して、メモリの前記関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新回路を利用することと、
前記ページテーブル更新回路を、前記中間レベルページテーブルの少なくとも1つのサブセット内に提供される前記中間レベル記述子内に前記状態情報を更に維持するように構成することと、を含み、前記状態情報が維持されている所与の中間レベル記述子に対して、前記ページテーブル更新回路は、前記所与の中間レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新して、前記中間レベル記述子を介してアクセスされる任意の最終レベル記述子の前記状態情報内で前記クリーン状態から前記ダーティ状態への更新の発生を示すように構成されている、含む方法。
【請求項20】
ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換手段であって、ページテーブルの前記階層構成が中間レベルページテーブル及び最終レベルページテーブルであって、
各最終レベルページテーブルは、いくつかの最終レベル記述子を含み、各最終レベル記述子はメモリの関連領域の前記アドレス変換データを識別しており、
各中間レベルページテーブルは、いくつかの中間レベル記述子を含み、各中間レベル記述子は前記階層構成内の次のレベルにおける関連ページテーブルを識別するために使用される中間アドレス変換データを識別する、中間レベルページテーブル及び最終レベルページテーブルの両方を含むアドレス変換手段と、
各最終レベル記述子内に状態情報を維持するページテーブル更新手段であって、所与の最終レベル記述子の前記状態情報をクリーン状態からダーティ状態に更新して、メモリの前記関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新手段と、を備え、
前記ページテーブル更新手段は、前記中間レベルページテーブルの少なくとも1つのサブセット内に提供される前記中間レベル記述子内に前記状態情報を更に維持するように更に構成されており、前記状態情報が維持されている所与の中間レベル記述子に対して、前記ページテーブル更新手段は、前記所与の中間レベル記述子の前記状態情報を前記クリーン状態から前記ダーティ状態に更新して、前記中間レベル記述子を介してアクセスされている任意の最終レベル記述子の前記状態情報内で前記クリーン状態から前記ダーティ状態への更新の発生を示すように構成されている、装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書ではメモリの領域のコンテンツの修正を追跡する技法を説明する。
【0002】
データ処理動作を実行するときに、メモリのエリアに対して何らかの修正が行われたかどうかを判定することが有用であり得る多くの状況が存在する。例えば、処理回路は、メモリアドレスの範囲内に記憶されたデータに対して処理動作を実行することが要求される場合があり、当該処理動作がそのメモリアドレス範囲内のデータ値に対して最後に実行されてからデータが変更されていないと判定できる場合には、処理要件を大幅に低減することができる。
【0003】
具体的な例として、グラフィックス処理ユニット(GPU)は、メモリアドレス範囲によって識別されるデータのブロックに関してグラフィックスレンダリング動作を実行するように要求され得る。そのようなプロセスを使用して、関連するフレームバッファに記憶するための1つ以上の画像フレームを生成することができる。多くの場合、フレームはタイルに分割され、レンダリング動作は個々のタイルに対して実行される。タイルがレンダリングされると、レンダリングされたタイルが前のレンダリングサイクルでレンダリングされた対応するタイルと異なるかどうかを判定することが可能であり得る。異なる場合には、その新たにレンダリングされたタイルを関連するフレームバッファに書き込む必要性を回避することによって、多少の帯域幅節約を達成することができる。
【0004】
しかし、そのような手法は、依然として、入力データを各レンダリングサイクルにおいてレンダリングする必要があり、レンダリングの前に、前のレンダリングサイクル以降に入力データのいずれかが変化したかどうかを検出できることが非常に望ましい。特に、そのような判定を行うことができる場合、いくつかの状況では、レンダリングの実行を全く回避することが可能であり、したがって、著しい性能利益及び/又はエネルギー消費節約をもたらす。
【発明の概要】
【0005】
一例示的構成では、ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換回路であって、ページテーブルの階層構成が中間レベルページテーブル及び最終レベルページテーブルであって、各最終レベルページテーブルは、いくつかの最終レベル記述子を含み、各最終レベル記述子は、メモリの関連領域のためのアドレス変換データを識別しており、各中間レベルページテーブルは、いくつかの中間レベル記述子を含み、各中間レベル記述子は、階層構成内の次のレベルにおける関連ページテーブルを識別するために使用される中間アドレス変換データを識別している、中間レベルページテーブル及び最終レベルページテーブルの両方を含む、アドレス変換回路と、各最終レベル記述子内に状態情報を維持するページテーブル更新回路であって、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、メモリの関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新回路と、を備え、ページテーブル更新回路は、中間レベルページテーブルの少なくともサブセット内に提供される中間レベル記述子内に状態情報を維持するように更に構成されており、状態情報が維持されている所与の中間レベル記述子に対して、ページテーブル更新回路は、所与の中間レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、中間レベル記述子を介してアクセスされている任意の最終レベル記述子の状態情報内でクリーン状態からダーティ状態への更新の発生を示すように構成されている装置が提供される。
【0006】
別の例示的構成では、メモリの領域のコンテンツの修正を追跡する方法であって、ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換回路であって、ページテーブルの階層構成が中間レベルページテーブル及び最終レベルページテーブルの両方を含む、アドレス変換回路を利用することと、各最終レベルページテーブルを、いくつかの最終レベル記述子を含み、各最終レベル記述子は、メモリの関連領域のためのアドレス変換データを識別するように構成することと、各中間レベルページテーブルを、いくつかの中間レベル記述子を含み、各中間レベル記述子は、階層構成内の次のレベルにおける関連ページテーブルを識別するために使用される中間アドレス変換データを識別するように構成することと、各最終レベル記述子内に状態情報を維持するページテーブル更新回路であって、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、メモリの関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新回路を利用することと、ページテーブル更新回路を、中間レベルページテーブルの少なくともサブセット内に提供される中間レベル記述子内に状態情報を更に維持するように構成することと、を含み、状態情報が維持されている所与の中間レベル記述子に対して、ページテーブル更新回路は、所与の中間レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、中間レベル記述子を介してアクセスされている任意の最終レベル記述子の状態情報内でクリーン状態からダーティ状態への更新の発生を示すように構成されている、方法が提供される。
【0007】
更に別の例示的構成では、ページテーブルの階層構成から取得されたアドレス変換データを参照して、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換手段であって、ページテーブルの階層構成が中間レベルページテーブル及び最終レベルページテーブルであって、各最終レベルページテーブルは、いくつかの最終レベル記述子を含み、各最終レベル記述子は、メモリの関連領域のためのアドレス変換データを識別し、各中間レベルページテーブルは、いくつかの中間レベル記述子を含み、各中間レベル記述子は、階層構成内の次のレベルにおける関連ページテーブルを識別するために使用される中間アドレス変換データを識別する、中間レベルページテーブル及び最終レベルページテーブルの両方を含むアドレス変換手段と、各最終レベル記述子内に状態情報を維持するページテーブル更新手段であって、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、メモリの関連領域のコンテンツの修正が許可されていることを示すように構成されたページテーブル更新手段と、を備え、ページテーブル更新手段は、中間レベルページテーブルの少なくともサブセット内に提供される中間レベル記述子内に状態情報を更に維持するように更に構成されており、状態情報が維持されている所与の中間レベル記述子に対して、ページテーブル更新手段は、所与の中間レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、中間レベル記述子を介してアクセスされている任意の最終レベル記述子の状態情報内でクリーン状態からダーティ状態への更新の発生を示すように構成されている装置が提供される。
【図面の簡単な説明】
【0008】
本技法について、添付の図面に示す本技法の例を参照して、例示としてのみ更に説明する。
図1】例示的な一構成によるデータ処理システムを示す。
図2】仮想アドレスから物理アドレスへの変換プロセスを概略的に示す図である。
図3】単一ステージアドレス変換プロセスを含むマルチレベルページテーブルウォークを概略的に示す。
図4A】例示的な一実装形態による記述子内に提供され得る情報を概略的に示す。
図4B】かかる記述子内に提供され得る更新状態情報を詳細に示す。
図5】関連する最終レベル記述子がクリーン状態を示すメモリ内のページを更新する要求が受信されたときに、本明細書に記載の技法に従って実行されるプロセスを示すフロー図である。
図6図5の最終ステップを実施するために例示的な一実装形態において実行されるステップをより詳細に示すフロー図である。
図7図5の最終ステップを実施するために例示的な代替の実装形態で実行されるステップを詳細に示すフロー図である。
図8】例示的な一実装形態による図1のアドレス変換キャッシュ内に提供され得る異なるキャッシング構造を概略的に示す。
図9A】例示的な一実装形態による、アドレス変換キャッシュ内に提供される記述子のキャッシュされたコピーが、どの記述子を更新する必要があるかを判定するときにどのように使用され得るかを示すフロー図を提供する。
図9B】例示的な一実装形態による、アドレス変換キャッシュ内に提供される記述子のキャッシュされたコピーが、どの記述子を更新する必要があるかを判定するときにどのように使用され得るかを示すフロー図を提供する。
図10】例示的な一実装形態による、本明細書に記載の技法をどのように使用してグラフィックス処理ユニットのレンダリング作業負荷の低減を補助し得るかを示すフロー図である。
図11】例示的な一実装形態によるデータ処理システムの図である。
【発明を実施するための形態】
【0009】
例示的な一実装形態によれば、処理回路によって指定された仮想アドレスをメモリシステムの対応する物理アドレスに転換するためのアドレス変換回路を有する装置が提供される。アドレス変換回路は、ページテーブルの階層構成から得られるアドレス変換データを参照して、こうした転換を実行し、このページテーブルの階層構成は、中間レベルページテーブル及び最終レベルページテーブルの両方を含む。
【0010】
各最終レベルページテーブルは、いくつかの最終レベル記述子を含み、各最終レベル記述子は、メモリの関連領域のアドレス変換データを識別する。メモリの関連領域は、様々な方法で定義することができるが、例示的な一実装形態では、メモリの各領域は、メモリのページを含み得る。
【0011】
各中間レベルページテーブルは、いくつかの中間レベル記述子を含み、各中間レベル記述子は、階層構成内の次のレベルで関連付けられたページテーブルを識別するのに使用される中間アドレス変換データを識別する。
【0012】
したがって、供給された仮想アドレスを使用して、アドレス変換回路は、レベルL0と称されることが多い、最下位階層レベルのページテーブルから開始して、最終レベルページテーブルが識別されるまで継続する、ページテーブルの階層構成の複数の異なるレベルを横断するように構成することができる。仮想アドレスの一部は、その最終レベルページテーブル内の特定の最終レベル記述子を識別するのに使用され、その結果、メモリの特定の領域が識別される。
【0013】
本明細書で説明する技法によれば、ページテーブル更新回路は、各最終レベル記述子内で状態情報を維持するように構成されている。この状態情報は様々な形態をとり得るが、本明細書で記載の技法によれば、最終レベル記述子によって識別されるメモリの関連領域内のコンテンツに何らかの修正があったかどうかに関する情報を提供する。ページテーブル更新回路は、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、メモリの関連領域のコンテンツの修正が許可されていることを示すように構成されている。状態情報のダーティ状態への更新は、例えば、書込みがメモリの関連領域内で行われるのが許可されているときに実行されてもよく、また、クリーン状態からダーティ状態への更新の正確なタイミングは、実装に応じて変えてもよい。例えば、ダーティ状態への更新は、書込みを行う前に行われてもよいし、書込みを行った結果として行われてもよい。
【0014】
クリーン状態は様々な形態をとり得るが、例示的な一実装形態では、状態情報がクリーン状態を示す場合は、これは、メモリの関連領域が現在読取り専用であるが、処理回路からの要求に応じてメモリのその関連領域への書込みを許可するように変更され得ることを示す。したがって、そのような要求が受信されると、これを使用して、クリーン状態からダーティ状態への状態情報の遷移をトリガすることができる。
【0015】
メモリのブロック、例えば、画像フレームをレンダリングしようとするときにGPUによって参照され得るメモリのブロック内のコンテンツに対して修正がいつ行われたかを決定する方法の前述の問題に戻ると、原理的には、アドレス変換回路を利用してページテーブルの階層構成を横断して、対象となるアドレス全範囲内のメモリの領域に関連付けられた各最終レベル記述子を識別することが可能である。しかし、最終レベル記述子に達するためにページテーブルの階層構成全体を横断するのは時間がかかり、対象となる全アドレス範囲をカバーし、それらの最終レベル記述子のいずれかがダーティ状態を示す状態情報を有するかどうかを判定するためにアクセスされる必要があるかなりの多数の最終レベル記述子が存在する場合がある。
【0016】
しかし、本明細書で記載の技法によれば、ページテーブル更新回路は、中間レベルページテーブルの少なくとも1つのサブセット内に提供される中間レベル記述子内の状態情報を維持するように更に構成されている。特に、状態情報が維持されている所与の中間レベル記述子について、ページテーブル更新回路は、その所与の中間レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、その中間レベル記述子を介してアクセスされる任意の最終レベル記述子の状態情報内でクリーン状態からダーティ状態への更新が発生したことを示すように構成することができる。
【0017】
中間レベル記述子が階層構成において最後から2番目のレベルにあり、したがって、その最終レベル記述子を含む最終レベルページテーブルを識別する状況では、最終レベル記述子は中間レベル記述子を介してアクセスされ得ることが理解されよう。しかし、中間レベル記述子が1つ以上の介在レベルによって最終レベルとは別の階層内の別の下位レベルにあるときに、最終レベル記述子はまた、中間レベル記述子を介してアクセスされるものとみなすこともできる。単に例として、所与の下位レベルページテーブル内の所与の中間レベル記述子が、上位レベル中間ページテーブルを識別し、その上位レベル中間ページテーブルが、所与の最終レベル記述子を含む最終レベルページテーブルを識別する中間レベル記述子を提供する場合、依然として、その所与の最終レベル記述子は、ページテーブルの階層構成の1つ以上の介在レベルを介してではあるが、所与の中間レベル記述子を介してアクセスされる場合がある。
【0018】
この状態情報を1つ以上の中間レベル記述子を通して伝搬することによって、指定されたメモリアドレス範囲内の任意のデータが修正されたかどうかを判定するためにかかる状態情報を参照することができる速度が大幅に増大する。現在のレンダリングサイクル中に、GPUが1つ以上の画像フレームをレンダリングするのに必要な入力データを読み取ろうとしている先のGPUの例を検討すると、比較的広いアドレス範囲(メモリ内に複数のページを含む)を検討する必要があり得る。しかし、一定数の中間レベル記述子を通して状態情報を伝搬することによって、レビューを必要とする比較的少数の中間レベル記述子を識別することが可能であり得、特に、それらの識別された中間レベル記述子のいずれかの状態情報がクリーン状態を示さない場合、レンダリングが必要であると判定することができる。しかし、逆に、指定されたアドレス範囲をカバーする関連する中間レベル記述子のすべてがクリーン状態を示す場合、指定されたメモリアドレス範囲内で更新が実行されていないことが分かり、そのような場合は、レンダリング動作の実行を回避することが可能であり得る。
【0019】
したがって、1つ以上の中間レベル記述子を通して状態情報を伝搬することによって、これは、比較的広いアドレス範囲内のコンテンツが変更されたかどうかをチェックする効率的なメカニズムを提供でき、したがって、メモリアドレスの範囲内のコンテンツが変更されたか否かを検出しようとするとき、様々な例示的なシナリオにおいてそのような状態情報への参照を実用的な提案にすることを見出した。
【0020】
例示的な一実装形態では、ページテーブルの階層構成は、複数のレベルのページテーブルを含み、ページテーブル更新回路が状態情報を維持するように構成された中間レベルページテーブルの少なくとも1つのサブセットは、階層構成の少なくとも1つのレベルの中間レベルページテーブルを含む。したがって、そのような実装形態では、ページテーブル更新回路は、階層内の一定の中間レベルに状態情報を維持するように構成することができるが、必ずしもそのようなレベルすべてに状態情報を維持するように構成する必要はない。いくつかの例では、例えば、状態情報を最低レベル(すなわち、L0レベル)に維持することは適切でないと考えられる場合がある。それは、状態情報をそのレベルに維持する試みがなされた場合に、当該状態情報はダーティ状態に非常に迅速に遷移することになり、したがって有用な情報を提供しない場合があり得るからである。したがって、状態情報が維持されているレベルは、特定の実装形態に合わせて調整され得る。例えば、いくつかの実装形態では、状態情報を単一の中間レベルにのみ維持することが判定され得るが、他の実装形態では、状態情報を、必ずしもすべての中間レベルに維持することが判定される必要はないが、複数の中間レベルに維持することが判定され得る。状態情報が複数の中間レベルに維持されている場合、これらの複数の中間レベルは、階層構成内の隣接レベルであってもよいが、代替的に、非隣接レベルが選択されてもよい。
【0021】
ページテーブル更新回路が、中間レベル記述子内の状態情報をクリーン状態からダーティ状態にいつ遷移すべきか、特に、関連する最終レベル記述子がクリーン状態からダーティ状態にいつ更新されるかに対するタイミングに関して、決定し得るいくつかの異なる方法がある。トップダウン手法と称されることがある第1の例示的な実装形態によれば、ページテーブル更新回路は、所与の中間レベル記述子の状態情報内のダーティ状態の識別が、階層構成内の次のレベルで関連するページテーブルのコンテンツの修正が許可されることを示すように、中間レベル記述子内の状態情報を維持するように構成され得る。その結果、ページテーブル更新回路は、状態情報が維持させる所与の最終レベル記述子を識別するために使用される各中間レベル記述子が、その状態情報内のダーティ状態を識別すると、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新して、メモリの関連領域のコンテンツの修正が許可されることを示すように構成されている。したがって、かかる手法によれば、所与の中間レベル記述子内のダーティ状態の設定は、階層内の上位レベルの任意の記述子においてクリーン状態からダーティ状態への遷移を可能にするための前提条件であり、これは、関連する最終レベル記述子と、所与の中間レベル記述子とその最終レベル記述子との間の任意の介在レベル記述子と、を含むことが理解されよう。
【0022】
しかし、ボトムアップ手法と称されることがある代替実装形態によれば、ページテーブル更新回路は、メモリの関連領域のコンテンツの修正が許可されていることを示すように、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新したことに応じて、階層構成内のレベルを遡って追跡して、その最終レベル記述子を識別するために使用される各中間レベル記述子を識別し、状態情報を維持させる識別された各中間レベル記述子について、ダーティ状態を示すために必要に応じて状態情報を更新するように構成され得る。1つ以上の中間レベルにおいて、関連する中間レベル記述子がすでにダーティ状態を示している場合、更新は必要とされないことが理解されよう。
【0023】
例示的な一実装形態では、本装置は、ページテーブルの階層構成から検索された1つ以上の記述子のコピーを記憶するためのアドレス変換キャッシュストレージを更に備え得る。これは、関連する記述子がアドレス変換キャッシュストレージ内にすでにキャッシュされている状況において、アドレス変換動作を実行しようとするときの性能を改善でき、したがって、必要な記述子を識別するためにメモリ内でページテーブルウォークプロセスを実行する必要性を回避することができる。そのような実装形態では、ページテーブル更新回路は、所与の最終レベル記述子に関連付けられたメモリの領域内のコンテンツを更新しようとするときにどのページテーブル記述子が更新を必要とするかを判定する場合に、アドレス変換キャッシュストレージを参照するように構成され得る。
【0024】
例示的な一実装形態では、アドレス変換キャッシュストレージが、状態情報がダーティ状態を示す所与の最終レベル記述子のコピーを記憶する場合に、ページテーブル更新回路は、ページテーブルの階層構成内のページテーブル記述子に対して更新が必要ないと判定するように構成されている。特に、関連する中間レベル記述子内の状態情報に対する更新は、最終レベル記述子がクリーン状態からダーティ状態に遷移される時に実行され、したがって、すでにダーティ状態にある最終レベル記述子に遭遇したときは、更新は必要とされない。
【0025】
しかし、状態情報がダーティ状態を示す所与の最終レベル記述子のコピーを記憶するアドレス変換キャッシュストレージがない場合、ページテーブル更新回路は、所与の最終レベル記述子の状態情報をクリーン状態からダーティ状態に更新することに加えて、それらの中間レベル記述子のいずれかについて維持されている状態情報が更新される必要があるかどうかを判定するために、所与の最終レベル記述子を識別するために使用される中間レベル記述子に関して分析動作が必要であると判定するように構成され得る。
【0026】
状態情報がダーティ状態を示す所与の最終レベル記述子のコピーを記憶するアドレス変換キャッシュストレージがない様々な状況があることが理解されよう。例えば、所与の最終レベル記述子のキャッシュされたコピーが全くアドレス変換キャッシュストレージ内に記憶されていない場合がある。しかし、それに加えて、所与の最終レベル記述子のキャッシュされたコピーがあるが、その状態情報がクリーン状態を示す場合もあり得る。ページテーブル更新回路によって実行されるページテーブル更新プロセスを検討すると、必要な所与の最終レベル記述子のアドレス変換キャッシュストレージ内の存在は、その状態情報がクリーンとして示されているが、アドレス変換キャッシュストレージ内のミスとして効果的に扱われるので、上述の分析動作をトリガする。
【0027】
分析動作を実行するには、メモリ内の必要な中間レベル記述子にアクセスするためにページテーブルウォークプロセスを実行することが必要な場合がある。しかし、場合によっては、アドレス変換キャッシュストレージ内に維持された情報を使用して分析動作の少なくとも一部を実行することが可能である場合がある。
【0028】
例示的な一実装形態では、アドレス変換キャッシュストレージは、1つ以上の最終レベル記述子のコピーを記憶する変換索引バッファを備える。いくつかの実装形態では、最終レベル記述子のみがキャッシュされ得るが、代替実装形態では、アドレス変換キャッシュストレージは、ページテーブルの階層構成内の1つ以上の中間レベルにおいてページテーブルからの中間レベル記述子のコピーを記憶する中間記述子キャッシュ(ウォークキャッシュとも称される)を更に含み得る。アドレス変換キャッシュストレージが中間記述子キャッシュを含む場合、上述の分析動作の少なくとも一部は、アドレス変換キャッシュストレージのコンテンツを参照して実行され得る。
【0029】
特に、例示的な一実装形態では、状態情報がダーティ状態を示す所与の最終レベル記述子のコピーを記憶する変換索引バッファがない場合、ページテーブル更新回路は、所与の最終レベル記述子を識別するために使用される非クリーン状態中間レベル記述子のコピーが検出されるか、又は中間レベル記述子が中間記述子キャッシュにキャッシュされている階層構成内のすべてのレベルに対してルックアップ動作が実行されるまで、中間記述子キャッシュ内でルックアップ動作を実行して階層構成内のレベルを遡って追跡しようとするように構成されており、非クリーン状態中間レベル記述子は、状態情報が非クリーン状態を示す中間レベル記述子である。
【0030】
非クリーン状態は様々な形態をとることができるが、一例では、前述のダーティ状態又は非追跡状態のいずれかである。非追跡状態は、例えば、メモリ内のページが常に読み取り可能及び書込み可能の両方とマークされている場合に生じる場合があり、したがって、状態情報は、修正が実際に行われたかどうかを識別しない。特に、いかなる修正もステータス情報を変化させないので、関連メモリページが修正されたか否かを非追跡状態に基づいて推定することはできない。
【0031】
中間記述子キャッシュを参照して、その中間記述子キャッシュが関連する中間レベル記述子を非クリーン状態で記憶するかどうかを判定しようとすることによって、これは、どの中間レベル記述子がそれらの状態情報の更新を必要とするかを判定する際に考慮する必要があるレベルの数を低減するために使用されることができる。特に、ルックアップ動作中に、所与の最終レベル記述子を識別するために使用される非クリーン状態中間レベル記述子のコピーが検出された場合、ページテーブル更新回路は、非クリーン状態中間レベル記述子を含むレベルと所与の最終レベル記述子を含む最終レベルとの間のレベルに存在する所与の最終レベル記述子を識別するために使用される任意の中間レベル記述子を識別し、次いで、それらの識別された中間レベル記述子のいずれかによって維持されている状態情報内のダーティ状態を識別するように構成されている。
【0032】
最終レベル記述子に加えてどの中間レベル記述子を更新する必要があるかを識別しようとするために上記のように、アドレス変換キャッシュのコンテンツが使用されると、通常、状態情報が更新されている記述子のキャッシュされたコピーは、更新又は無効化され、アドレス変換回路がアドレス変換キャッシュのコンテンツに対する将来の参照の際に古い記述子情報を参照しないことを保証する。更に、既知のコヒーレンシ/同期技法も使用して、ページテーブル更新回路がそれらの記述子のステータス情報を更新する場合に、システム内の他の場所に維持されている関連する記述子のキャッシュされたコピーを更新又は無効化することを保証することもできる。1つの例示的な方式によれば、更新された各記述子のローカルキャッシュコピー(すなわち、ページテーブル更新回路によって参照されるアドレス変換キャッシュ内のコピー)が更新される。加えて、更新された各記述子はメモリに書き込まれ、システム内の他の場所に保持されている更新された各記述子の任意の他のキャッシュされたコピーは無効化されるので、その記述子が次に必要とされるときは、更新されたバージョンがメモリから読み出される。コヒーレンシプロトコルは、更新された記述子がすべてのインスタンスで使用されることを保証するために、ステップ間で厳密な順序付けを実施するように構成されている。
【0033】
前述したように、中間レベル記述子内のステータス情報を維持することによって、これは、それらの記述子へアクセスし得る任意の処理回路によって実行される動作に影響を与える際に有用であり得る。例示的な一実装形態では、処理回路によって実行されるべきデータ処理動作を決定するときに、処理回路は、中間レベル記述子のうちの1つ以上内に維持されている状態情報を参照させるように構成されている。
【0034】
特定の例として、処理回路は、メモリアドレス範囲によって識別されるデータブロックに関してグラフィックスレンダリング動作を周期的に実行するように構成されてもよい。そのような実装形態では、処理回路は、少なくとも現在のレンダリングサイクルが決定された基準を満たす場合に、アドレス変換回路にメモリアドレス範囲によってカバーされるメモリの領域からなるセットを識別させる要求を、アドレス変換回路に発行し、そのメモリの領域からなるセットについての最終レベル記述子を識別するために使用される1つ以上の中間レベル記述子を決定し、データのブロックに対する更新が前のレンダリングサイクル以降に行われたかどうかを判定するために、それらの決定された1つ以上の中間レベル記述子に記憶された状態情報を参照するように構成され得る。前のレンダリングサイクル以降にデータブロックの更新が行われていないと判定された場合、処理回路は、グラフィックスレンダリング動作を再実行する代わりに、前のレンダリングサイクルにおけるグラフィックスレンダリング動作の出力を使用するように構成されている。
【0035】
そのような手法は、著しい性能及びエネルギー消費利益をもたらすことができる。特に、グラフィックスレンダリング動作の実行を回避することが可能である場合に、著しい性能及びエネルギー消費の利益を実現できることが理解されよう。これはまた、例えば、そうでなければ現在のグラフィックスレンダリングサイクルに必要とされる入力データを読み取る必要性を回避することによって、追加の利益をもたらす。
【0036】
上述したように、いくつかの実装形態では、アドレス変換回路への要求は、現在のレンダリングサイクルが決定された特定の基準を満たす場合にのみ、処理回路によって発行され得る。例えば、処理される入力データは、処理回路によって直接知られておらず、レンダリングが行われ得る前にメモリから取り出されなければならないという点で、「間接状態」とみなされ得るが、現在のレンダリングサイクルについての他の入力は、処理回路に知られており、それらの入力は、「直接状態」と称され得る。そのような直接状態は、例えば、レンダリング動作をトリガしている入力コマンドによって指定されてもよく、かつ/又はレンダリングの開始前にレジスタ又はコマンドバッファに提供されてもよい。直接状態と間接状態との間の分割は、GPUアーキテクチャに応じて変わり得るが、例として、かかる直接状態は、どれくらい多くのレンダリングターゲットがあるか、ピクセルごとにどれくらい多くのサンプルがあるか、バッファへのポインタを含むリソーステーブルへのポインタなどを説明する情報であり得る。例示的な一実装形態では、この直接状態は、現在のレンダリングサイクルがレンダリング動作のスキップの候補になる前に、前のレンダリングサイクルにおける直接状態に一致する必要があり、したがって、上記で言及した決定された基準を満たすことは、この直接状態が前のレンダリングサイクルの直接状態に一致したことを判定することを伴う。
【0037】
上述した状態情報は、状態の追加項目を含むこともできる。例えば、各最終レベル記述子内の状態情報は、メモリの関連領域がアクセスされたことを示すように設定されたアクセスフラグを更に含むことができ、所与の中間レベル記述子内に維持されている状態情報は、その中間レベル記述子を介してアクセスされる最終レベル記述子が、メモリの関連領域へのアクセスを示すようにそれらのアクセスフラグを設定しているときはいつでも設定されるアクセスフラグを更に含むことができる。いくつかの例では、中間レベル記述子を通してかかるアクセスフラグ情報を伝搬することが有用であり得る。
【0038】
ページテーブルの階層構成のどのレベルが状態情報を維持するために使用されるかは、固定されてもよいし、設定可能であってもよい。例示的な一実装形態では、装置は、階層構成のどのレベルでステータス情報を維持するかを判定するために、ページテーブル更新回路によって参照される制御情報を維持するストレージを更に備える。したがって、これはメカニズムの構成可能性を可能にする。
【0039】
ここで、特定の例について、図を参照して説明する。
【0040】
図1は、仮想アドレスVAを使用してプログラム命令を実行し、データアクセス(命令フェッチ及び操作されるデータへのアクセスの両方)を実行するための処理回路10(例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)であり得る)を備えるデータ処理システムを概略的に示す。これらの仮想アドレスは、アドレス変換回路20によって物理アドレスPAへのアドレス変換を受ける。物理アドレスは、メモリシステム15内の命令及びデータへのアクセスを制御するために使用される。メモリシステム15は、複数レベルのキャッシュメモリ及びメインメモリ又は他の不揮発性ストレージなどのメモリ階層を備えることができる。
【0041】
図1に示すように、アドレス変換回路20はアドレス変換キャッシュ30を含み、アドレス変換キャッシュ30は、一例では、少なくとも変換索引バッファ(TLB)を含むことができる。アドレス変換キャッシュ30は、複数のエントリを有し、各エントリは、仮想アドレスをメモリシステムの対応する物理アドレスに転換する際に使用されるアドレス変換データを記憶する。アドレス変換データは、メモリシステム15内に記憶されたページテーブル35に関してページテーブルウォーク動作を実行することによって決定される。図3を参照して後述するように、マルチレベルページテーブルウォークプロセスは、最終レベル記述子を参照して、仮想アドレスを物理アドレスに転換することを可能にするフルアドレス変換データを取得するために使用されてもよく、そのフルアドレス変換データはアドレス変換キャッシュ30内に記憶され得る。アドレス変換キャッシュがTLBである例をとると、TLBは通常、そのようなフルアドレス変換データを記憶するために使用される。しかし、詳細に後述するように、アドレス変換キャッシュは、例示的な一実装形態では、1つ以上の中間レベル記述子を参照して取得された部分アドレス変換データ(本明細書では中間アドレス変換データとも称される)を記憶する更なるキャッシュ構造を含み得る。
【0042】
図1に概略的に示すように、処理回路10が仮想アドレスをアドレス変換回路20に発行する場合、制御回路25は、アドレス変換キャッシュ30内でルックアップ動作を実行して、アドレス変換キャッシュのエントリのうちの1つの中でヒットが検出されるかどうかを判定することができる。一実施形態では、アドレス変換キャッシュは、セットアソシアティブ構造を有し、セットを識別するために、仮想アドレスの特定のビットをアドレス変換キャッシュへのインデックスとして使用することができ、ヒットが検出されたかどうかを判定するために、そのセット内のエントリがレビューされる。ヒットが検出された場合、アドレス変換キャッシュ内のヒット・エントリ内に記憶された物理アドレスビット及び関連する属性を含む変換応答をプロセッサ・コア10に直接返すことができる。次いで、この情報に基づいて、コアは、必要な命令又は操作されるデータにアクセスするために、物理アドレスを生成し、メモリシステム15に出力することができる。アドレス変換キャッシュ内でヒットが検出されない場合、アドレス変換回路20は、ページテーブルウォークプロセスを開始して、メモリシステム内の関連するページテーブル35にアクセスし、最終レベル記述子が得られるまで記述子のシーケンスをウォークスルーし、最終レベル記述子が得られた時点で、フルアドレス変換データを決定でき、適切な変換応答をコアに返すことができる。このプロセス中に、アドレス変換キャッシュ30内の1つ以上のエントリを、アクセスされた記述子から導出されたアドレス変換データを記憶するために割り当てることができる。これは、後に発行される仮想アドレスがアドレス変換キャッシュ内でヒットされることを可能にし、それによってアクセス時間を短縮する可能性が高い。
【0043】
図2は、アドレス変換プロセスを概略的に示す図である。仮想アドレス50は、仮想ページ番号を識別するビット数55と、ページオフセットを識別するいくつかの他のビット60と、を含むと考えることができる。仮想ページ番号を形成するビット数とページオフセットを形成するビット数は、ページサイズに依存する。アドレス変換回路20によって実行されるアドレス変換動作は、図2に示す要素65によって概略的に示され、仮想ページ番号ビット55を、物理ページ番号を識別する物理アドレス80の等価ビット70に変換できるように十分なアドレス変換情報を取得するように機能する。ページオフセットビットは変更されず、それに応じて、ページオフセットビット75は仮想アドレス内のページオフセットビット60から直接決定される。
【0044】
図3は、使用されている単一ステージアドレス変換メカニズムが存在すると仮定したページテーブルウォーク動作を概略的に示す図である。本例では、仮想アドレスは48ビットであると仮定され、したがって、仮想アドレス100は、ページテーブルウォークプロセスの異なるレベルに関連付けられた一連の9ビット部分を有し、12個の最下位ビットがページオフセットを示す。
【0045】
ページテーブルウォークプロセスの開始時に、ベースレジスタがアクセスされ、ページテーブル115を識別するために使用されるベースアドレス110を識別する。ページテーブルウォークプロセスのレベル0に関連付けられた9ビット105を使用して、そのページテーブル115へのインデックスを識別し、したがって中間レベル記述子117を識別する。この中間レベル記述子117は、更なるページテーブル130を識別するために使用されるベースアドレス120を提供し、レベル1の仮想アドレスビット125は、そのテーブルへのインデックスを識別するために使用される。これは、ページテーブル145を識別するための更なるベースアドレス135を提供する中間レベル記述子132を識別する。次いで、レベル2の仮想アドレスビット140は、中間レベル記述子147を識別するために、そのテーブル145へのインデックスを提供するために使用され、次いで、中間レベル記述子は、最終ページテーブル160を識別するベースアドレス150を提供する。次いで、レベル3の仮想アドレスビット155は、そのテーブル160へのインデックスを提供し、それは、ページ記述子又はリーフ記述子とも称される最終レベル記述子162を識別する。ページ記述子によって提供される情報を用いて、TLB30のエントリの1つに記憶するためのアドレス変換データを生成することが可能であり、これは、仮想ページ番号55を物理ページ番号70に転換することを可能にし、したがって、メモリ内の必要なページを識別することが可能である。これにより、仮想アドレスに対応する特定のデータ項目(又は命令)が、必要な物理アドレスをメモリシステム15に発行するコア10によってアクセスされることが可能になる。
【0046】
いくつかの実装形態では、最終レベル記述子を、ページテーブルウォークプロセス中のより初期のレベルで指定することができることに留意されたい。例えば、記述子147は、ブロックフィールドを有することができ、それは、設定されると、その記述子が、中間レベル記述子ではなく、最終レベル記述子のタイプであるブロック記述子であることを示す。したがって、そのような状況では、記述子147内の情報を使用して、フルアドレス変換データを生成することができる。
【0047】
上記の説明から、ページテーブルは階層構成で編成され、レベル0のページテーブル内の中間レベル記述子はレベル1のページテーブルを識別するために使用され、レベル1のページテーブル内の中間レベル記述子はレベル2のページテーブルを識別するために使用され、以下同様に続き、最後から2番目のレベルでは、そのレベルのページテーブル内の中間レベル記述子は最終レベルのページテーブルを識別するために使用されることが分かるだろう。次いで、そのような最終レベルページテーブル内の最終レベル記述子は、関連するメモリ領域、例えばメモリ内のページを識別する。
【0048】
図4Aは、記述子内に提供され得る情報を示す。特に、記述子200は、記述子のコンテンツが有効であるか否かを識別する有効フィールド205と、様々な属性フィールド210と、アドレス変換データフィールド230とを含むことができる。最終レベル記述子の場合には、アドレス変換データ230は、メモリ内の関連領域、例えば、メモリ内の関連するページを識別する。中間レベル記述子の場合には、アドレス変換データは、その代わりに、ページテーブルの階層内の次のレベルで関連付けられたページテーブルを識別するために使用され得る中間アドレス変換データである。
【0049】
最終レベル記述子内では、例示的な一実装形態における属性210は、更新状態情報215、アクセス状態指示又はフラグ220、及び1つ以上の他の属性225、例えば、アクセス許可、メモリタイプ属性などを含む。例示的な一実装形態では、属性225は、最終レベル記述子においてのみ提供されてもよいし、それらのサブセットのみが中間レベル記述子において複製されてもよい。加えて、本明細書で説明する技法によれば、ページテーブルの階層構成内の中間ページテーブルの少なくとも1つのサブセット内で、例えば、1つ以上の中間レベルにおけるページテーブル内で提供される中間レベル記述子内において、少なくとも更新状態情報、また、所望であればアクセス状態指示も維持することができるページテーブル更新回路35(図1参照)が提供される。特に、ページテーブル更新回路は、最終レベル記述子内のその状態情報内で特定の変更が行われたときに、その変更が、その状態情報を維持するように構成されており、また、最終レベル記述子にアクセスするときに使用される任意の中間レベル記述子にも反映されることを保証するように構成されている。
【0050】
したがって、単なる例として、ページテーブル更新回路が、最終レベル記述子162内の特定の状態情報を更新することが適切であると判定した場合、中間レベル記述子147、132のいずれか又は両方がその状態情報を維持するように構成されている場合、ページテーブル更新回路は、それらの中間レベル記述子内に保持された対応する状態に対して何らかの更新が必要であったかどうかを判定するであろう。このプロセスは、原則として、中間レベル記述子117などのレベル0の中間レベル記述子までずっと繰り返され得るが、いくつかの実装形態では、階層内のそのような下位レベルでそのような状態情報を複製しようとするのは不適切であると考えられる場合がある。
【0051】
図4Bは、特定の例示的な一実装形態で使用される更新状態情報215の形態を示す。図示するように、更新状態情報215は2ビットフィールドを含み、第1のビットはダーティビット修正(DBM)ビットと称され、第2のビットは許可ビットと称される。DBMビットが論理0値であり、許可ビットが論理0値である場合、これは、その更新状態情報を含む最終レベル記述子によって指し示される関連メモリ領域が読取り専用であることを意味する。逆に、許可ビットが設定され(すなわち、この例示的な実装形態では論理1値)、DBMビットがクリアである(すなわち、この例示的な実装形態では論理0値)場合、これは、メモリの関連領域が読取り可能かつ書込み可能であるが、書込みが実際に実行されたかどうかに関して追跡が実行されないことを意味する。
【0052】
次に、DBMビットが設定されている状況を検討すると、許可ビットが0である場合、これは、関連するメモリ領域が読取り専用であり、クリーン状態にあると考えられることを意味する。特に、更新状態情報がこの形態を有する場合、関連するメモリ領域のコンテンツが書き込まれていないことを意味する。しかし、更新状態情報の「00」読取り専用状態とは対照的に、クリーン状態は、例えば、関連するメモリ領域への書込みを求めている処理回路によって発行される要求によって、読取り書込み状態に遷移するための適切な要求に応じて、関連するメモリ領域を読取り書込み状態に遷移することが許可されている状態を示す。この場合、DBMビットはセットされたままであるが、許可ビットはクリア状態から設定された状態に遷移し、それによってメモリページが現在ダーティ状態にあることを示し、メモリページは読取り可能かつ書込み可能である。したがって、クリーン状態からダーティ状態への遷移は、メモリの関連領域のコンテンツの修正が現在許可されていることを示し、関連するメモリ領域がダーティ状態にあるとき、そのコンテンツが修正されていると想定される。
【0053】
上記の説明は、最終レベル記述子に関連して提供されるときの更新状態情報の意味を参照して行われる。前述したように、本明細書で説明する技法によれば、最終レベル記述子内の更新状態情報を管理するために使用されるページテーブル更新回路は、ページテーブル階層の中間レベルのうちの少なくとも1つに提供される中間レベル記述子内の対応する状態情報を維持することもできる。特に着目されるのは、クリーン状態及びダーティ状態であり、特に、ページテーブル更新回路は、所与の中間レベル記述子内の状態情報をクリーン状態からダーティ状態に更新して、その中間レベル記述子を介してアクセスされる任意の最終レベル記述子の状態情報内でクリーン状態からダーティ状態への更新の発生を示すように構成されている。
【0054】
したがって、ページテーブル160を指し示すために使用され、したがって、そのページテーブル160内の最終レベル記述子のいずれかにアクセスするときに使用される中間レベル記述子147を例として検討すると、ページテーブル160内の最終レベル記述子のいずれかが、それらの状態情報をクリーン状態からダーティ状態に変更させた場合、ページテーブル147内の対応する更新状態情報は、ダーティ状態を示すように更新される。
【0055】
このプロセスは、階層構成内の任意の所望のレベル全体にわたって繰り返すことができる。したがって、中間レベル記述子132を検討すると、これは、ページテーブル145を識別するために使用され、したがって、ページテーブル145内の中間レベル記述子のいずれかの状態情報が、クリーン状態からダーティ状態に更新された場合、中間レベル記述子132のその更新状態情報も、まだダーティ状態にないと仮定して、クリーン状態からダーティ状態に変更されるであろう。
【0056】
最終レベル記述子に関連して維持され得るアクセス状態フラグ220を検討すると、このアクセス状態フラグは、メモリの関連領域がアクセスされたことを示すように設定され得る。必要に応じて、この状態情報は、1つ以上の中間レベルの中間レベル記述子内で維持され得、また、更新状態情報を参照して先に説明した方法と類似の方法で、所与の中間レベル記述子内のアクセスフラグは、その中間レベル記述子を介してアクセスされる任意の最終レベル記述子が、メモリの関連領域へのアクセスを示すアクセスフラグを設定したときはいつでも、設定することができる。いくつかの例では、更新状態情報に加えて中間レベル記述子内にアクセス状態情報を維持することが有用であり得るが、他の実装形態では、更新状態情報のみが中間レベル記述子内で複製される場合がある。以下の説明は、更新状態情報が中間レベル記述子内でどのように維持されているかをより詳細に説明するが、そのような中間レベル記述子内のアクセス状態情報の維持を管理するために類似の技法を使用することもできることが理解されよう。
【0057】
図1に戻ると、アドレス変換回路20は、ページテーブルコンテンツに対する更新を実行するために使用される前述のページテーブル更新回路35を含み、その更新は、更新状態情報、また任意選択で、アクセス状態情報に対する更新を含む。アクセス状態情報は、最終レベル記述子内で、また、そのような情報が複製される任意のレベルの中間レベル記述子内に維持されている。例示的な一実装形態では、更新状態情報が複製される中間レベルは固定してもよいが、他の例では、この中間レベルは、例えば、ページテーブル更新回路がどの中間レベルで更新状態情報を維持すべきかを識別する、システム内に記憶された制御情報40を参照して構成可能であってもよい。
【0058】
本明細書における説明上、ページテーブル更新回路35はアドレス変換回路20内に設けられた構成要素であると仮定しているが、代替実装形態では、ページテーブル更新回路をアドレス変換回路とは別個の構成要素として設けることが可能であり得る。しかし、ページテーブル更新回路35をアドレス変換回路20内に設けることがより効率的であり得る。なぜなら、通常、ページテーブル更新回路はページへの書込み動作に応じて起動され、アドレス変換回路20は、ページテーブル更新回路35の起動をトリガするために使用され得る書込み動作に関連する処理回路10からの要求を受信するからである。
【0059】
図5は、本明細書で説明する技法に従って実行される状態情報更新プロセスを示すフロー図である。ステップ250で、関連する最終レベル記述子がクリーン状態を示すページを更新しようとしている処理回路から要求が受信されたかどうかを検出する。そのような要求は、例えば、処理回路上で実行されるソフトウェアに起因して発行されてもよく、アドレス変換回路20によって処理回路10から要求が最初に受信された時点では、通常は、どの更新状態値が関連する最終レベル記述子に記憶されているかは分からない。したがって、アドレス変換キャッシュ30内のルックアップと、それに続く、アクセスされている関連ページの最終レベル記述子を取得するために必要なページテーブルウォークプロセスとが実行され得る。最終レベル記述子がアクセスされると、最終レベル記述子がクリーン状態を示すかどうかを判定するために、更新状態情報がチェックされ得る。
【0060】
受信した書込み要求が、識別されたメモリページに関連して続行することが許可されていることをチェックするために、したがって、例えば、現在の実行モードにある処理回路が、識別されたメモリアドレスにアクセスすることが許可されていることをチェックするために、他のチェックもこの段階で実行することができることにも留意されたい。しかし、以下の説明の目的上、そのような追加のチェックがすべてパスされていると想定し、ステップ250では、関連するページの最終レベル記述子がクリーン状態を示すかどうかを判定する。
【0061】
最終レベル記述子がクリーン状態を示す状況では、プロセスはステップ260に進む。本技法の前には、そのような更新状態情報は、典型的には、最終レベル記述子内にのみ存在し、ページテーブル更新回路は、その最終レベル記述子内で状態をクリーン状態からダーティ状態に変更するように構成されているであろう。しかし、ステップ260で示すように、最終レベル記述子に対するかかる更新に加えて、ページテーブル更新回路はまた、その最終レベル記述子を識別するために使用される中間レベル記述子を識別するように構成されている。状態情報を維持するように構成されているそれらの中間レベル記述子の各々については、ページテーブル更新回路は、その状態情報がダーティ状態を示すように設定されることを保証する。これは、いくつかの中間レベル記述子に関して、状態をクリーン状態からダーティ状態に遷移させることを伴い得るが、いくつかの中間レベル記述子に関して、更新が必要とされ得ないことが理解されるであろう。なぜなら、それらは、クリーン状態からダーティ状態に以前に遷移したその中間レベル記述子を使用してアクセスされる異なる最終レベル記述子に起因して、ダーティ状態をすでに示し得るからである。
【0062】
図5のステップ260を実施できるいくつかの方法があり、特に、最終レベル記述子に対して行われる更新に対して中間レベル記述子が更新される相対的タイミングは変更してもよい。
【0063】
図6は、トップダウン手法とも称され得る、図5の最終ステップを実施するための第1のオプションを示すフロー図である。ステップ300では、パラメータiを0に等しく設定し、次にステップ305では、レベルiのページテーブル記述子を識別する。先に説明した図3から明らかなように、このページテーブル記述子の識別は、レベルiのページテーブルのベースアドレスと、図5のステップ250で受信した要求によって指定された提供された仮想アドレスの一部と、を使用して実行される。
【0064】
その後、ステップ310では、識別された記述子が更新状態情報を追跡するように構成されているかどうかを判定する。例示的な一実装形態では、典型的には、そのような追跡がレベルL0で行われず、その代わりに、より上位レベルのうちの1つ以上でのみ行われる場合があり得る。更に、識別された記述子が最終レベル記述子である場合、更新状態情報を追跡するように構成されているが、様々な中間レベルについては、これは、ページテーブル階層の所定の構成に依存してもよく、あるいは、図1に示す制御情報40によって指定されるような制御データに依存してもよいことが理解されよう。
【0065】
ステップ310において、識別された記述子が更新状態情報を追跡するように構成されていると判定された場合、ステップ315において、更新状態情報が現在クリーン状態を示しているか否かを判定する。クリーン状態を示す場合、ステップ320において、更新状態情報は、ダーティ状態を示すように更新される。逆に、更新状態情報が現在クリーン状態を示さず、したがって、例えば、すでにダーティとしてマークされているか、又は非追跡状態にある場合、状態は変更されず、ステップ320は迂回される。同様に、ステップ310において、識別された記述子が更新状態情報を追跡していないと判定された場合、ステップ315及び320は迂回される。
【0066】
ステップ325において、検討すべきレベルが更に存在するかどうかが判定され、存在する場合、ステップ330においてパラメータiを1だけ増分し、プロセスはステップ305に戻る。
【0067】
全てのレベルが検討されると、ステップ335において、ページテーブル記述子更新プロセスが完了したと判定される。例示的な一実装形態では、ページテーブル記述子のすべてが更新されると、メモリ内のページを更新するための元の要求が続行することを許可される。いくつかの実装形態では、競合状態の発生を回避するために、ページ更新が完了したとみなされる前にページテーブル記述子の更新が完了することを保証しながら、メモリ内のページの更新をより早い段階で開始することが可能であり得る。
【0068】
図7は、図5の最終ステップを実施するために使用され得る代替手法を示すフロー図であり、この手法は、本明細書ではボトムアップ手法とも称される。ステップ350では、最終レベル記述子内の状態をクリーン状態からダーティ状態に更新する。
【0069】
ステップ350に続いて、ステップ355では、最終レベル記述子が現在の記述子であると考えられる。ステップ360では、ページテーブル更新回路は、次に、現在の記述子を含むページテーブルを指す次の最下位レベルの記述子を識別するように構成されている。したがって、例として、ステップ350で状態がクリーン状態からダーティ状態に変更された最終レベル記述子が記述子162である場合、ステップ360は、最終レベル記述子162を含むページテーブル160を指す中間レベル記述子147を識別するために使用される。
【0070】
ステップ365では、識別された記述子が更新状態情報を追跡するように構成されているかどうかを判定し、そのように構成されている場合には、ステップ370で、その記述子内の更新状態情報が現在クリーン状態を示しているかどうかを判定する。そうである場合、ステップ375で、状態をダーティ状態に更新する。先に説明した図6と同様に、ステップ370で、(例えば、すでにダーティ状態又は非追跡状態にあるため)更新状態情報が現在クリーン状態を示していないと判定された場合、ステップ375は迂回される。同様に、識別された記述子が更新状態情報を追跡するように構成されていないと判定された場合、ステップ370及びステップ375は迂回される。
【0071】
ステップ380では、識別された記述子がレベル0のページテーブルにあるかどうかを判定し、そうでない場合、ステップ385では、識別された記述子が現在の記述子であると考えられ、その後、プロセスはステップ360に戻る。しかし、ステップ380で、現在識別されている記述子がレベル0のページテーブル内にあると判定されると、プロセスはステップ390に進み、ページテーブル記述子更新プロセスが完了したとみなされる。代替実装形態では、構成情報が、ダーティ/クリーン状態情報を追跡している最低レベルを示すように利用可能である場合、これをステップ380で参照でき、識別された記述子がその最低レベルにあると、ステップ380からのyesの経路を辿ることができ、それによって、かかる実装形態において図7のプロセスからより早く抜けることが可能になる。
【0072】
図6の説明と同様に、ページテーブル記述子のすべてが更新されると、メモリ内のページを更新する元の要求を続行することが可能になる。いくつかの実装形態では、競合状態の発生を回避するために、ページ更新が完了したとみなされる前にページテーブル記述子更新が完了することを保証しながら、メモリ内のページの更新をより早い段階で開始することが可能であり得る。
【0073】
図8は、例示的な一実装形態における図1のアドレス変換キャッシュ30の形態を示す。図8に示すように、アドレス変換キャッシュは、メモリシステム15内のページテーブル35から取得された最終レベル記述子をキャッシュするために使用されるTLB400を含む。しかし、任意選択的に、アドレス変換キャッシュ30は、メモリシステム15内のページテーブル35から取り出された中間レベル記述子をキャッシュするために使用される、本明細書ではウォークキャッシュとも称される中間記述子キャッシュ410を含むこともできる。先に論じたように、アドレス変換キャッシュ30の使用は、処理回路10からの要求に応じて仮想アドレスから物理アドレスへの変換を実行するプロセスを高速化することができる。加えて、図9A及び9Bを参照してより詳細に説明するように、アドレス変換キャッシュはまた、どの記述子がそれらの状態情報更新を必要とするかを判定しようとするときに、ページテーブル更新回路35によって使用され得る。
【0074】
図9Aに示すように、ページテーブル更新回路35は、アドレス変換キャッシュ内、特にTLB400内でルックアップを実行させて、識別された最終レベル記述子、すなわち処理回路から発行された要求によってアクセスされることを求めているメモリページを指し示す最終レベル記述子に対するヒットがあるかどうかを判定することができる。ヒットがある場合、ステップ425では、そのキャッシュされたコピーのステータス情報がダーティを示すかどうかが判定される。そうである場合、プロセスはステップ430に進み、ページテーブル記述子の更新が必要でないと判定される。特に、最終レベル記述子はすでにダーティ状態にあるので、中間レベル記述子に対する必要な更新はすでに実行されていると想定することができる。
【0075】
しかし、キャッシュされたコピーがステップ425でダーティ状態を示さないと判定されるか、又はステップ420で検出されたTLB内にヒットがない場合には、プロセスはステップ435に進む。特にステップ425からの「no」経路に関しては、最終レベル記述子のキャッシュされたコピーが検出されるが、その状態がクリーン状態を示す場合、最終レベル記述子に関して実行される更新に加えて、どの中間レベル記述子もダーティ状態への状態情報の更新を必要とする可能性があるかを判定する必要があるので、これはページテーブル更新プロセスのためにミスとして効果的に扱われることに留意されたい。
【0076】
ステップ435では、ウォークキャッシュが存在するかどうかが判定され、存在しない場合、プロセスはステップ440に進み、そこで、最終レベル記述子の状態の更新だけでなく、中間レベル記述子を分析し、適宜その状態も更新するために、前述したページテーブルウォークプロセスが使用される。ステップ440を実施するとき、図6又は図7を参照して先に論じた手法のいずれかを使用することができる。
【0077】
しかし、ステップ435で、ウォークキャッシュが存在すると判定された場合、ステップ445では、最終レベル記述子が現在の記述子として扱われる。次に、ステップ450では、現在の記述子を含むページテーブルを指し示す次の最下位レベルの記述子のコピーがあるかどうかを調べるために、ウォークキャッシュ内でルックアップが実行される。次の最下位レベルのこの記述子は、本明細書では識別された記述子と称される。
【0078】
ステップ450に続いて、図9Bに示すように、ステップ455では、ステップ450でヒットがあったか否かが判定され、ヒットがある場合には、その識別された記述子がダーティ状態又は非追跡状態を示すステータスを有するか否かが判定される。そうである場合、プロセスはステップ460に進むことができ、ここで、下位レベル記述子を検討する必要がないと判定される。その代わりに、ページテーブルウォークプロセスを使用して、最終レベル記述子の状態の更新だけでなく、識別された記述子と最終レベル記述子との間の任意の中間レベル記述子を分析し、適宜それらの状態を更新することもできる。ステップ440と同様に、先に説明した図6又は図7のプロセスをこの時点で使用することができる。
【0079】
ステップ455において、識別された記述子がダーティ状態又は非追跡状態を示す状態を有さない場合、ステップ465では、識別された記述子がレベル0のページテーブル内にあるかどうかが判定され、そうでない場合、ステップ470では、識別された記述子が現在の記述子であるとみなされ、その後、プロセスはステップ450に戻る。
【0080】
しかし、識別された記述子がレベル0のページテーブルにある場合、プロセスはステップ475に進み、そこでプロセスは図9Aのステップ440に進む。特に、この時点で、中間レベル記述子を分析し、適宜それらの状態を更新するために、フルページテーブルウォーク(full page table walk)が必要とされる。
【0081】
上記の説明から、アドレス変換キャッシュを参照することによって、ページテーブル更新回路35は、どの中間レベル記述子を更新する必要があるかを判定するために必要な分析量を低減でき、したがって、関連する記述子を更新するためにページテーブルウォーク中に横断する必要があるレベル数を低減できることが分かる。
【0082】
最終レベル記述子に加えて、どの中間レベル記述子を更新する必要があるかを識別しようとするために、このようにアドレス変換キャッシュコンテンツが使用されると、例示的な一実装形態では、アドレス変換回路が将来のアドレス変換を実行するときに誤って古い記述子情報を参照しないことを保証し、また、ページテーブル更新回路35が後続のページテーブル記述子の必要な更新を決定しようとするときに古いキャッシュ情報を参照しないことを保証するために、状態情報が更新されている記述子のキャッシュされたコピーを更新又は無効化することができる。
【0083】
更に、いくつかのシステムでは、かかるアドレス変換情報は、システム内の複数のエンティティによってキャッシュされてもよく、そのような状況では、ページテーブル更新回路がそれらの記述子のステータス情報を更新するときに、システム内の他の場所に記憶され得る関連する記述子のキャッシュされたコピーが更新又は無効化されることを保証するために、任意の好適なコヒーレンシ技法を使用することができることが理解されるであろう。
【0084】
中間レベル記述子内にステータス情報を維持することによって、コヒーレンシ技法は、実行中の特定の動作に影響を及ぼすために、処理回路によって使用されることができる。1つの特定の例示的な使用事例は、グラフィックスレンダリング動作の使用事例であり、この場合、処理回路がGPUである場合があり、また、メモリアドレス範囲によって識別されるデータのブロックに関してグラフィックスレンダリング動作を周期的に実行するように構成され得る。メモリアドレス範囲は、比較的広いことがあり、特に、かなりの数のメモリページに及ぶこともある。したがって、ページテーブルウォーク動作を実行して各最終レベル記述子を識別し、最終レベル記述子内に維持されているステータス情報を参照して、メモリアドレス範囲内のデータのいずれかが修正されたものとして示されているかどうかを判定しようとすることは実用的でないと考えられる場合がある。しかし、このような情報を本明細書で説明する方法で中間レベル記述子内に維持することによって、グラフィックス処理ユニットがその情報を判定しようとするためにアドレス変換回路20に要求を発行することは経済的に実行可能になる。特に、アドレス変換回路は、対象のアドレス範囲をカバーする比較的少数の中間レベル記述子を識別し、それらの中間レベル記述子内に維持されている更新状態情報をチェックすることが可能であり得る。すべての関連する中間記述子内の更新状態情報がクリーン状態を示す場合、更新が実行されていないことが分かり、いくつかの例では、これにより、前のレンダリングサイクルからのレンダリング出力を利用する代わりに、レンダリング動作を回避することが可能になる。
【0085】
図10は、新しいグラフィックスレンダリングサイクルに遭遇したときに例示的な一実装形態において実行され得る処理を示すフロー図である。ステップ500では、新しいグラフィックスレンダリングサイクルに遭遇すると、グラフィックス処理ユニットは、ステップ505で、新しいグラフィックスレンダリングサイクルの直接状態が、最後のレンダリングサイクルに使用された直接状態と同じであるかどうかを判定する。直接状態は、例えば、レンダリングが開始する前に1つ以上のレジスタ又はコマンドバッファに提供され得るような、GPUに直接利用可能な状態である。そのような直接状態の例は、どれくらい多くのレンダリングターゲットがあるか、ピクセルごとにどれくらい多くのサンプルがあるかなどを記載する情報であり得る。
【0086】
新しいグラフィックスレンダリングサイクルの直接状態が最後のサイクルの直接状態と一致しない場合、処理されるべき入力データが異なるか否かにかかわらず、代わりに、プロセスはステップ530に進み、そこで、対象となるメモリアドレス範囲について現在のグラフィックスレンダリングサイクルにおいてレンダリングが実行される必要があると判定される。したがって、必要なデータがメモリから読み込まれ、次いで、実行される動作を制御するために直接状態を使用してそのデータに対してレンダリングが実行される。
【0087】
しかし、新しいグラフィックスレンダリングサイクルの直接状態が最後のサイクルと同じである場合、処理されるべきデータが何も最後のレンダリングサイクル以降に変化していないと判定し得る場合、新しいグラフィックスレンダリングサイクルは、レンダリングを回避する候補になる。
【0088】
したがって、ステップ505で直接状態が一致する場合、GPUは、メモリアドレス範囲を指定する要求をアドレス変換回路20に発行することができる。ステップ510では、アドレス変換回路20は、次いで、メモリアドレス範囲をカバーするメモリの領域からなるセットを識別することができる。例示的な一実装形態では、グラフィックスレンダリングサイクルにおいて使用される唯一の入力バッファが存在し得るが、いくつかの実装形態では、複数の入力バッファが存在し得ることに留意されたい。通常、連続したアドレス範囲が各入力バッファに関連付けられ、したがって、ステップ510は、各入力バッファに関連付けられたメモリアドレス範囲に対して実行され得る。
【0089】
ステップ515では、アドレス変換回路20は、識別された領域からなるセットをカバーする中間レベル記述子を決定することができ、特に、状態情報を維持し、識別された領域からなるセットをカバーする最低レベルの中間レベル記述子を探すことができる。次に、ステップ520では、中間レベル記述子を取り出し、それらの状態情報を参照することができる。次に、ステップ525では、これらの中間レベル記述子の状態情報のいずれかが、ダーティ又は非追跡としてマークされているかどうかを判定することができる。マークされている場合には、プロセスはステップ530に進み、関連するメモリアドレス範囲について現在のグラフィックスレンダリングサイクルにおいてレンダリングを実行する必要があると判定される。しかし、代わりに、関連する中間レベル記述子の状態情報のすべてが、クリーンとしてマークされている場合には、ステップ535では、対象となるメモリアドレス範囲の現在のグラフィックスレンダリングサイクルにおいてレンダリングが必要ないと判定される。これは、集中的なレンダリングタスクを実行する必要性を回避することによって、著しい性能利益をもたらすことができる。これはまた、エネルギー消費の利益をもたらす。更に、そのような状況におけるレンダリングの回避に加えて、データがメモリから読み出される必要がない場合もあり、更なる効率の節約を提供する。
【0090】
各レンダリングサイクルで処理されるフレーム数は、実装に応じて変わり得ることに留意されたい。例えば、各レンダリングサイクルは、1つのフレームに関してレンダリングを実行することができるが、現代のオペレーティングシステムは、ディスプレイ出力のダブルバッファリング又はトリプルバッファリングを可能にすることができるので、レンダリングサイクルは、ダブルバッファリングシステムでは2つのフレームを処理することができ、トリプルバッファリングシステムでは3つのフレームを処理することができる。更に、各フレーム内で多くのレンダリングパス(標準化グラフィカルAPIコンセプト)を使用するのも一般的である。
【0091】
図11は、いくつかのCPU600、615及びGPU620を備える1つの例示的なシステムを示すブロック図である。これらのコンポーネントは、相互接続635を介して、先に言及されたページテーブル650を含み得るメモリ645に結合され得る。先に言及されたアドレス変換回路20は、システム内の1つ又はいくつかの位置に設けられたメモリ管理ユニット(MMU)の形態をとることができる。例えば、CPU600を考慮すると、これは、処理回路の代わりにアドレス変換を実行するための関連するMMU610を有する処理回路605を含み得る。CPU615も同様に構成されてもよいが、簡略化のために、CPU615の内部詳細は省略されている。一方、GPU620は、システムMMU(SMMU)625を利用することができ、この場合も、SMMUは、前述したページテーブル更新機能を組み込むように構成され得る。いくつかの実装形態では、GPUはまた、それ自体の内部MMU630を含むことができ、そのMMU630は、GPUの代わりにアドレス変換を実行するためにSMMU625と組み合わせて使用され得る。例えば、GPUは、各ステージが複数のレベルを含むマルチステージアドレス変換プロセスを使用してもよく、この場合、仮想アドレスを中間物理アドレスに転換するために、ステージ1アドレス変換がMMU630によって実行されてもよく、次いで、中間物理アドレスをメモリ645内の最終物理アドレスに変換するために、ステージ2アドレス変換を実行するためにSMMU625を使用してもよい。
【0092】
また、図11に示すように、コンポーネントのうちのいくつかは、それぞれ、CPU600、615に関連付けられたキャッシュ612、617などのそれら自体のローカルキャッシュを有してもよく、加えて、1つ以上の共有キャッシュ640もまた、例えば、相互接続635内に設けられてもよい。相互接続はまた、スヌープ回路を含むことができ、スヌープ回路は、例示的な一実装形態では、システムの様々なキャッシュ内のキャッシュコンテンツ間のコヒーレンシを維持するために、共有キャッシュ640の一部を形成すると考えることができる。
【0093】
先に述べたように、ページテーブル650内の様々な中間レベル記述子及び最終レベル記述子内に維持されている状態情報に対して更新が行われるとき、MMUのいずれかのアドレス変換キャッシュコンポーネント内のそれらの関連する記述子の任意のキャッシュされたコンテンツは、古い記述子情報が誤って参照されないことを確実にするために、無効化又は更新される必要があり得る。任意の適切なコヒーレンシメカニズムを使用して、そのような機能を実装することができる。
【0094】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配設又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0095】
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されてきたが、本発明はそれらの正確な実施形態に限定されないこと、及び添付の特許請求の範囲によって規定される本発明の範囲及び趣旨から逸脱することなく、当業者によって様々な変更、追加、及び修正が当業者によって実施され得ることが理解されるであろう。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2
図3
図4A
図4B
図5
図6
図7
図8
図9A
図9B
図10
図11
【国際調査報告】