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

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

▶ エーティーアイ・テクノロジーズ・ユーエルシーの特許一覧

特許7443344外部メモリベースのトランスレーションルックアサイドバッファ
<>
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図1
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図2
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図3
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図4
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図5
  • 特許-外部メモリベースのトランスレーションルックアサイドバッファ 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-26
(45)【発行日】2024-03-05
(54)【発明の名称】外部メモリベースのトランスレーションルックアサイドバッファ
(51)【国際特許分類】
   G06F 12/1027 20160101AFI20240227BHJP
【FI】
G06F12/1027 120
G06F12/1027 115
【請求項の数】 32
(21)【出願番号】P 2021512943
(86)(22)【出願日】2019-07-30
(65)【公表番号】
(43)【公表日】2022-01-06
(86)【国際出願番号】 IB2019056498
(87)【国際公開番号】W WO2020065418
(87)【国際公開日】2020-04-02
【審査請求日】2022-07-21
(31)【優先権主張番号】16/141,603
(32)【優先日】2018-09-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ニッポン ハルシャダク ラヴァル
(72)【発明者】
【氏名】フィリップ ン
【審査官】北村 学
(56)【参考文献】
【文献】特開昭60-254345(JP,A)
【文献】特開平04-357542(JP,A)
【文献】特開2002-149490(JP,A)
【文献】特開2010-170266(JP,A)
【文献】特表2009-512943(JP,A)
【文献】特表2013-500525(JP,A)
【文献】特表2016-504686(JP,A)
【文献】米国特許出願公開第2014/0052917(US,A1)
【文献】国際公開第2018/100363(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
IPC G06F 12/08 - 12/128
(57)【特許請求の範囲】
【請求項1】
仮想アドレス変換の方法であって、
メモリ管理ユニット(MMU)が、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信することと、
前記MMUが、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換について、トランスレーションルックアサイドバッファ(TLB)を検索することと、
前記変換が前記TLBで見つからず、仮想マシンのアドレス空間を識別するドメイン識別子が前記TLBで見つかることに応じて、
前記ドメイン識別子を前記TLBからフェッチすることと、
前記MMUが、前記ドメイン識別子に基づいて、前記変換について、外部メモリトランスレーションルックアサイドバッファ(EMTLB)を検索することと、
ページテーブルウォーカ(PTW)が、ページテーブルから前記変換を取得するために、ページテーブルウォークを実行することと、
前記変換が前記EMTLBで見つかることに応じて、前記ページテーブルウォークを中止して前記物理メモリアドレスを返すことと、
前記変換が前記EMTLBで見つからないことに応じて、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すことと、を含む、
方法。
【請求項2】
前記EMTLBは、前記MMUの外部にあるメモリ領域を備える、
請求項1の方法。
【請求項3】
前記EMTLBは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項1の方法。
【請求項4】
前記EMTLBの状態は、前記MMUが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項1の方法。
【請求項5】
前記EMTLBのエントリは、タグと、データ部分と、前記EMTLBの状態と、を含む、
請求項1の方法。
【請求項6】
EMTLBエントリを無効にする要求を前記EMTLBに送信することであって、前記要求は、前記EMTLBの無効化フィルタにバッファリングされる、ことと、
無効化が完了したという確認応答を受信することであって、前記確認応答は、無効にする要求が前記無効化フィルタにバッファリングされていることを示す、ことと、をさらに含む、
請求項1の方法。
【請求項7】
前記変換が前記TLBで見つからず、前記変換が前記EMTLBで見つかることに応じて、前記変換を前記TLBに記憶することをさらに含む、
請求項1の方法。
【請求項8】
前記変換が前記TLBで見つからず、前記TLBが満杯であることに応じて、
前記TLBから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記EMTLBに書き込むことと、をさらに含む、
請求項1の方法。
【請求項9】
前記変換が前記TLB及び前記EMTLBで見つからないことに応じて、
前記ページテーブルウォークに基づいて、前記TLB及び前記EMTLBの両方に前記変換を書き込むことをさらに含む、
請求項1の方法。
【請求項10】
前記MMUは、
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索する、
請求項1の方法。
【請求項11】
仮想アドレス変換のためのメモリ管理ユニット(MMU)であって、
仮想メモリアドレスを物理メモリアドレスに変換する要求を受信するように構成された回路と、
前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換について、トランスレーションルックアサイドバッファ(TLB)を検索するように構成された回路と、
前記変換が前記TLBで見つからず、仮想マシンのアドレス空間を識別するドメイン識別子が前記TLBで見つかることに応じて、前記ドメイン識別子を前記TLBからフェッチするように構成された回路と、
前記変換が前記TLBで見つからないことに応じて、前記ドメイン識別子に基づいて、前記変換について、外部メモリトランスレーションルックアサイドバッファ(EMTLB)を検索することと、前記変換を取得するために、ページテーブルウォーカ(PTW)を使用して、ページテーブルウォークを実行することと、を行うように構成された回路と、
前記物理メモリアドレスが前記EMTLBで見つかることに応じて、前記ページテーブルウォークを中止して、前記物理メモリアドレスを返すように構成された回路と、
前記変換が前記EMTLBで見つからないことに応じて、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すように構成された回路と、を備える、
メモリ管理ユニット(MMU)。
【請求項12】
前記EMTLBは、前記MMUの外部にあるメモリ領域を備える、
請求項11のMMU。
【請求項13】
前記EMTLBは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項11のMMU。
【請求項14】
前記EMTLBの状態は、前記MMUが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項11のMMU。
【請求項15】
変換が、疑似ランダムエントリ位置で前記EMTLBに書き込まれる、
請求項11のMMU。
【請求項16】
前記EMTLBのエントリは、タグと、データ部分と、前記EMTLBの状態と、を含む、
請求項11のMMU。
【請求項17】
EMTLBエントリを無効にする要求を前記EMTLBに送信することであって、前記要求は、前記EMTLBの無効化フィルタにバッファリングされる、ことを行うように構成された回路と、
無効化が完了したという確認応答を前記EMTLBから受信することであって、前記確認応答は、無効にする要求が前記無効化フィルタにバッファリングされていることを示す、ことを行うように構成された回路と、をさらに備える、
請求項11のMMU。
【請求項18】
前記変換が前記TLBで見つからず、前記変換が前記EMTLBで見つかることに応じて、前記変換を前記TLBに記憶するように構成された回路をさらに備える、
請求項11のMMU。
【請求項19】
前記変換が前記TLBで見つからず、前記TLBが満杯であることに応じて、
前記TLBから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記EMTLBに書き込むことと、
を行うように構成された回路をさらに備える、
請求項11のMMU。
【請求項20】
前記変換が前記TLB及び前記EMTLBで見つからないことに応じて、前記ページテーブルウォークに基づいて、前記TLB及び前記EMTLBの両方に前記変換を書き込むように構成された回路をさらに備える、
請求項11のMMU。
【請求項21】
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索するように構成された回路をさらに備える、
請求項11のMMU。
【請求項22】
プロセッサと、前記プロセッサと通信するメモリと、を備え、
前記プロセッサは、仮想アドレス変換のためのメモリ管理ユニット(MMU)を備え、前記MMUが、トランスレーションルックアサイドバッファ(TLB)及びページテーブルウォーカ(PTW)を備え、
前記メモリは、外部メモリトランスレーションルックアサイドバッファ(EMTLB)を備え、
前記MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信するように構成された回路をさらに備え、
前記MMUは、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換について、前記TLBを検索するように構成された回路をさらに備え、
前記MMUは、前記変換が前記TLBで見つからず、仮想マシンのアドレス空間を識別するドメイン識別子が前記TLBで見つかることに応じて、前記ドメイン識別子を前記TLBからフェッチするように構成された回路をさらに備え、
前記MMUは、前記変換が前記TLBで見つからないことに応じて、前記ドメイン識別子に基づいて、前記変換について、前記EMTLBを検索することと、前記変換を取得するために、前記PTWを使用して、ページテーブルウォークを実行することと、を行うように構成された回路をさらに備え、
前記MMUは、前記変換が前記EMTLBで見つかることに応じて、前記ページテーブルウォークを中止して、前記物理メモリアドレスを返すように構成された回路をさらに備え、
前記MMUは、前記変換が前記TLB及び前記EMTLBで見つからないことに応じて、前記ページテーブルウォークに基づいて前記物理メモリアドレスを返すように構成された回路をさらに備える、
コンピューティングデバイス。
【請求項23】
前記EMTLBは、前記MMUの外部にあるメモリ領域を備える、
請求項22のコンピューティングデバイス。
【請求項24】
前記EMTLBは、前記ページテーブルウォークと並行して前記変換が検索される、
請求項22のコンピューティングデバイス。
【請求項25】
前記EMTLBの状態は、前記MMUが実装されているプロセッサとは別のメモリ領域に記憶される、
請求項22のコンピューティングデバイス。
【請求項26】
変換が、疑似ランダムエントリ位置で前記EMTLBに書き込まれる、
請求項22のコンピューティングデバイス。
【請求項27】
前記EMTLBのエントリは、タグと、データ部分と、前記EMTLBの状態と、を含む、
請求項22のコンピューティングデバイス。
【請求項28】
EMTLBエントリを無効にする要求を前記EMTLBに送信することであって、前記要求は、前記EMTLBの無効化フィルタにバッファリングされる、ことを行うように構成された回路と、
無効化が完了したという確認応答を前記EMTLBから受信することであって、前記確認応答は、無効にする前記要求が前記無効化フィルタにバッファリングされていることを示す、ことを行うように構成された回路と、をさらに備える、
請求項22のコンピューティングデバイス。
【請求項29】
前記変換が前記TLBで見つからず、前記変換が前記EMTLBで見つかることに応じて、前記変換を前記TLBに記憶するように構成された回路をさらに備える、
請求項22のコンピューティングデバイス。
【請求項30】
前記変換が前記TLBで見つからず、前記TLBが満杯であることに応じて、
前記TLBから変換エントリをエビクトすることと、
エビクトされた変換エントリを前記EMTLBに書き込むことと、
を行うように構成された回路をさらに備える、
請求項22のコンピューティングデバイス。
【請求項31】
前記変換が前記TLB及び前記EMTLBで見つからないことに応じて、前記ページテーブルウォークに基づいて、前記TLB及び前記EMTLBの両方に前記変換を書き込むように構成された回路をさらに備える、
請求項22のコンピューティングデバイス。
【請求項32】
前記仮想メモリアドレスから中間仮想メモリアドレスへの変換を検索することと、
前記中間仮想メモリアドレスから前記物理メモリアドレスへの変換を検索することと、
によって、前記仮想メモリアドレスに基づいて、前記物理メモリアドレスへの変換を検索するように構成された回路をさらに備える、
請求項22のコンピューティングデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2018年9月25日に出願された米国特許出願第16/141,603号の優先権を主張するものであり、その内容は、言及することにより本明細書に組み込まれる。
【背景技術】
【0002】
現代のマイクロプロセッサは、通常、メインメモリ内の物理アドレスを、プログラムが使用する仮想メモリアドレスに抽象化する。仮想メモリアドレスと物理メモリアドレスとの間の変換は、通常、メモリ管理ユニット(MMU)と呼ばれるプロセッサ上のハードウェアによって行われる。仮想メモリアドレスと物理メモリアドレスとの対応関係は、ページテーブルで管理される。MMUは、ページテーブルのルックアップを行うことによって、仮想メモリアドレスと物理メモリアドレスとの変換を取得することができる。ページテーブルのルックアップは、通常、ページテーブルウォークと呼ばれ、MMUのハードウェア(一般に、ページテーブルウォーカ(PTW)と呼ばれる)によって行われる。
【0003】
ページテーブルウォークを使用して物理メモリアドレスを解決するのは、非常に時間がかかる場合がある。変換時間を短縮することによってメモリアクセスを高速化するために、仮想メモリアドレスと物理メモリアドレスとの最近の変換は、通常、トランスレーションルックアサイドバッファ(TLB)と呼ばれるMMUのメモリにキャッシュされる。TLBは、一般に、MMUの一部である。
【0004】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0005】
図1】本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。
図2】追加の詳細を示す図1のデバイスのブロック図である。
図3】一例による、図1及び図2のデバイスで使用可能な外部メモリトランスレーションルックアサイドバッファ(EMTLB)を含む例示的なシステムを示すブロック図である。
図4】仮想アドレスから物理アドレスへの変換を実行するための例示的な手順を示すフロー図である。
図5】仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。
図6】仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。
【発明を実施するための形態】
【0006】
いくつかの実施形態は、メモリ管理ユニット(MMU)が、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信することと、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてトランスレーションルックアサイドバッファ(TLB)を検索することと、を含む、仮想アドレス変換の方法を含む。変換がTLBで見つからない場合に、外部メモリトランスレーションルックアサイドバッファ(EMTLB)で変換が検索され、ページテーブルウォーカ(PTW)がページテーブルウォークを実行して、ページテーブルから変換を取得する。変換がEMTLBで見つけられた場合に、ページテーブルウォークが中止され、物理メモリアドレスが返される。変換がEMTLBで見つからない場合、ページテーブルウォークに基づいて物理メモリアドレスが返される。
【0007】
いくつかの実施形態では、仮想アドレス変換のためのMMUが提供される。MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路と、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてTLBを検索する回路と、変換がTLBで見つからない場合に、EMTLBで変換を検索し、PTWを用いてページテーブルウォークを実行して、変換を取得する回路と、物理メモリアドレスがEMTLBで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路と、変換がEMTLBで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路と、を含む。
【0008】
いくつかの実施形態では、プロセッサと、プロセッサと通信するメモリと、を含むコンピューティングデバイスが提供される。プロセッサは、仮想アドレス変換のためのMMUを含む。MMUは、TLBと、PTWと、を含み、メモリは、EMTLBを含む。また、MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路を含む。さらに、MMUは、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてTLBを検索する回路を含む。さらにまた、MMUは、変換がTLBで見つからない場合に、EMTLBで変換を検索し、PTWを用いてページテーブルウォークを実行して、変換を取得する回路を含む。また、MMUは、変換がEMTLBで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路を含む。さらに、MMUは、変換がEMTLB及びTLBで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路を含む。
【0009】
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレット型コンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含むことができる。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0010】
様々な代替形態においては、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、同一のダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替形態において、メモリ104は、プロセッサ102と同一のダイ上に配置されるか、プロセッサ102とは別に配置される。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
【0011】
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の照明、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0012】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114がオプションの構成要素であり、入力ドライバ112及び出力ドライバ114が存在しない場合、デバイス100が同じように動作することに留意されたい。出力ドライバ116は、表示デバイス118に結合されたアクセラレーテッド処理デバイス(APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受信し、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のために表示デバイス118にピクセル出力を提供する。以下により詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行する1つ以上の並列処理ユニットを含む。よって、本明細書では、様々な機能がAPD116によって又はAPD116と協働して実行されるものとして説明しているが、様々な代替形態では、APD116によって実行されるものとして説明されている機能は、ホストプロセッサ(例えば、プロセッサ102)によって実行されず、表示デバイス118にグラフィック出力を提供する同様の機能を有する他のコンピューティングデバイスによって追加的又は代替的に実行される。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明する機能を実行してもよいと考えられる。或いは、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが考えられる。
【0013】
図2は、APD116上での処理タスクの実行に関連する更なる詳細を示す、デバイス100のブロック図である。プロセッサ102は、システムメモリ104内に、プロセッサ102が実行する1つ以上の制御論理モジュールを保持する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102で実行される他のソフトウェアに対してハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)に対してアプリケーションプログラミングインターフェース(API)を提供することによって、APD116の動作を制御し、APD116の様々な機能にアクセスする。また、カーネルモードドライバ122は、APD116の処理構成要素(以下により詳細に説明するSIMDユニット138等)によって実行されるプログラムをコンパイルするジャストインタイムコンパイラを含む。
【0014】
APD116は、並列処理に適したグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、例えば、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ102から受信したコマンドに基づいて表示デバイス118に画像をレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する操作等のように、グラフィックス操作に直接関係しない計算処理動作を実行する。
【0015】
APD116は、プロセッサ102の要求に応じて、SIMDパラダイムに従って並列的に動作を実行する1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータでそのプログラムを実行することができる。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測を使用してレーンをオフにすることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが、個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合には、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
【0016】
計算ユニット132での実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列に実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に実行され得る。1つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行される。代替的に、ウェーブフロントは、単一のSIMDユニット138上で順次実行され、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138で同時に実行されるワークアイテムの最大の集合と考えることができる。したがって、プロセッサ102から受信したコマンドが、特定のプログラムが単一のSIMDユニット138上で同時に実行できない程度に並列化されるべきであることを示している場合には、そのプログラムは、複数のSIMDユニット138上で並列化されるか、同じSIMDユニット138上で直列化される(又は、必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上での様々なウェーブフロントのスケジュールに関連する操作を実行する。
【0017】
計算ユニット132によって提供される並列性は、ピクセル値計算、頂点変換及び他のグラフィックス操作等のグラフィックス関連操作に適している。したがって、いくつかの例において、プロセッサ102からグラフィックスプロセッシングコマンドを受信するグラフィックスパイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
【0018】
また、計算ユニット132は、グラフィックスに関係しないか、グラフィックスパイプライン134の「通常」操作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の操作に対して実行される処理を補足するために実行されるカスタム操作)を実行するために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
【0019】
プロセッサ102は、(例えば、メモリ104の)仮想メモリアドレスと物理メモリアドレスとを変換するために、MMU及びTLBを含む。いくつかの実施形態では、プロセッサ102内の複数の構成要素の各々が、MMU及びTLBを含むことに留意されたい。デバイス100のいくつかの例示的な実施形態では、プロセッサ102は、いくつかのx86CPUコアの各々にMMUを含み、APD116(例えば、GPU)にMMUを含み、ネットワークコントローラ等のI/Oデバイスに対応するI/O用MMUを含む。
【0020】
コンピュータシステムが進化するにつれて、それらは、一般に、ますます大きな物理メモリストアを含むようになり、これらのシステムのプログラムは、一般に、このメモリの容量をますます多く利用し、多くの場合、参照局所性が低下する。参照局所性の低下とは、特定のメモリ位置に対して、より長い時間を隔ててアクセスすること(時間的)、又は、(例えば、物理メディア上の、又は、ストレージの組織構造に基づいて)ストレージ内のより離れた位置にある異なるメモリ位置にアクセスすることをいう。大きな記憶空間及び参照局所性の低下は、高いTLBミス率、又は、他の理由で望ましくないTLBミス率の一因となり、結果的に、仮想アドレスから物理アドレスへの変換のオーバーヘッドが高くなる可能性がある。一般的に、この理由は、TLBミス率が増加すると、TLBにキャッシュされていない仮想から物理への変換を取得するために、ページテーブルウォークの回数を増やす必要があるためである。ページテーブルウォークを使用して変換を解決すると、キャッシュされた変換をTLBから取得する場合よりも性能が著しく低下する(すなわち、大幅に時間がかかる)。
【0021】
概念的な観点から、TLBのサイズを大きくすると、アドレス変換のオーバーヘッドが改善される可能性がある。しかし、プロセッサのMMUに実装されている一般的なTLBのオンチップハードウェアにおいて必要な増加量は、ダイ面積及び/又は費用の点で実用的ではない。ページサイズ、したがって変換の単位を変更すると、いくつかの実施形態では、TLBのサイズを増やすことなく、アドレス変換のオーバーヘッドが改善される可能性がある。例えば、x86プロセッサは、4KB、2MB及び1GBのページをサポートする。ただし、ソフトウェアがページサイズを制御し、デフォルトでは最小のサイズが使用されることが多い。そのため、いくつかの実施形態では、より大きなページを要求するために新たなOSインターフェースにアクセスするには、オペレーティングシステム(OS)の拡張機能又はアプリケーションの再コンパイルが必要である。大きなページを使用すると、例えばメモリをディスクにページアウトする際にメモリの大きな領域が移動されるので、メモリ効率に影響する。大きなページを使用すると、その大きなサイズのページ内の全てのメモリが、アプリケーションのアクティブなワーキングセット内で使用されない場合に、メモリ効率が低下する。さらに、ページサイズが大きくなると、メモリを割り当てるための最小の粒度が生成され、小規模なアプリケーションでメモリが非効率的に使用される場合がある。さらに、ソフトウェアの互換性によって、いくつかの実施形態では、より大きなページの使用が制限される場合がある。例えば、ページテーブルがx86プロセッサによって解釈される場合、既存のオペレーティングシステムソフトウェアとの互換性を維持するために、フォーマットが固定される。これにより、いくつかの実施形態でサポートされているページサイズも固定される。その結果、一般的な互換性を損なうことなくページテーブルツリーの基数を変更すること、及び/又は、基本的なページサイズを変更することができない場合がある。
【0022】
ワーキングセットがオンチップTLB容量を超える場合に、メモリ内のページテーブル構造を変更する必要がなく、オペレーティングシステムが、既存のページテーブルフォーマット及びメモリ割り当てアルゴリズムを継続的に利用することができるような、改善されたアドレス変換を提供することが望まれる。したがって、本明細書では、オンチップTLBから外部メモリにエビクトされた仮想アドレス対物理アドレス変換をキャッシュする外部メモリトランスレーションルックアサイドバッファ(EMTLB)について説明する。
【0023】
図3は、例示的なEMTLB360を含む例示的なシステム300を示すブロック図である。システム300は、プロセッサ302及びメモリ304を含む。プロセッサ302は、通信媒体350を介してメモリ304と通信する。EMTLB360は、メモリ304内に記憶されたEMTLBメモリ367と、MMU320に実装されたEMTLB制御ロジック365と、を含む。通信媒体350は、メモリバス等の任意の好適なコンピュータ相互接続又はコンピュータ相互接続の組み合わせを含むことができる。
【0024】
いくつかの例では、システム300は、図1及び図2に関して図示及び説明するように、デバイス100を使用して実装される。例えば、そのような実施形態では、プロセッサ302は、プロセッサ102として実装され、メモリ304は、メモリ104として実装される。他の例では、他の好適なプロセッサ、メモリ及び他の構成要素が使用される。
【0025】
プロセッサ302は、MMU320を含む。MMU320は、TLB330及びPTW340を含む。MMU320は、プロセッサ302上のハードウェアに完全に実装されてもよく、プロセッサ302の内部の埋め込みプロセッサ上で実行されるファームウェアに実装されてもよく、又は、他の任意の好適な方法で実装されてもよい。MMU320は、TLB330を管理するための制御ロジックと、EMTLBメモリ367を管理するためのEMTLB制御ロジック365と、を含む。EMTLBメモリ367は、DRAM304内の生のメモリストレージ(raw memory storage)である。EMTLB制御ロジック365とEMTLBメモリ367との間で、限られた一連の操作(例えば、読み出し及び書き込み)が実施される。ただし、いくつかの実施形態では、EMTLB360は、より複雑な操作(例えば、アトミック操作)をサポートする。メモリ304は、システム300のメインメモリ又はメインメモリの一部であり、ダイナミックランダムアクセスメモリ(DRAM)等の任意の好適な非一時的なコンピュータ可読媒体を含む。
【0026】
MMU320は、仮想アドレスを含むか、仮想アドレスを参照する変換要求を受信する。いくつかの例では、MMU320は、クライアントから変換要求を受信する。クライアントは、計算ユニット(CU)、表示エンジン、ビデオデコーダ、GPUコマンドプロセッサ等のように、プロセッサ302内の任意の好適なエンティティを含むことができる。いくつかの例では、MMU320は、内蔵ユニバーサルシリアルバス(USB)コントローラ、外部PCIe接続ネットワークコントローラ等のように、内蔵又は外部の入力/出力(IO)デバイスから変換要求を受信する。これに応じて、MMU320は、仮想アドレスに対応する物理アドレスを、要求を行ったエンティティに返す。物理アドレスは、メモリ304内の物理メモリアドレスのことを指し、本明細書に記載されている様々な手順のうち何れかを使用して取得される。この例では、MMU320が、仮想メモリアドレスを示す変換要求を受信した場合に、TLB330をチェックして、その内部に変換がキャッシュされている(すなわち、TLBヒット)かどうかを確認する。キャッシュされていない場合(すなわち、TLBミス)、MMU320は、EMTLB360をチェックして、その内部に変換がキャッシュされているかどうかを確認し、及び/又は、本明細書でさらに説明するように、PTW340を使用してページテーブルウォークを実行する。
【0027】
いくつかの例では、ページテーブルウォークを実行する前に、TLB330にアクセスして、部分的な変換を取得しようとする。このような状況においては、部分的な変換は、ページテーブルウォークが、ページテーブルの基数ツリーのルートからではなく、中間レベルから開始されるようにする情報を提供する。このようにして部分的な変換を取得すると、ページテーブルウォークで必要とされるメモリアクセスの回数を減らすことができるという利点がある。いくつかの実施形態では、部分的な変換を使用して、ページテーブルの基数ツリーの途中までページテーブルウォークを開始することによって、メモリアクセスの削減が可能になる。部分的な変換もミスした場合には、ページテーブルウォークは、ページテーブルのルートからの完全なページテーブルウォークとして実行される。
【0028】
いくつかの実施形態では、(例えば、部分的な変換を使用して、ページテーブルウォークの実行に必要な時間を短縮することにより)同時実行のEMTLBルックアップが完了する前にページテーブルウォークが完了した場合、EMTLBルックアップが中止される。場合によっては、TLBルックアップが完了した後に、EMTLBルックアップが中止される。場合によっては、TLBルックアップによる部分的な変換の結果に基づく、ページテーブルウォークを実行するのに必要なメモリアクセス数の予測に基づいて、EMTLBルックアップがプリエンプティブに中止される。このような場合には、ページテーブルウォークによって実行されることになる将来のメモリ要求の数は、正確には分からない。TLBから取得される部分的な変換の結果は、例えば、様々なページサイズ(したがって、ページテーブルのレベル)、潜在的な他のTLB構造等のために、ページテーブルウォークを完了するのに必要な追加のメモリアクセスの数を直接示すものではない。そのため、部分的な変換に基づいて、同時実行のEMTLBルックアップを予測的に中止するために、ページテーブルウォークに必要なメモリアクセスの数が不明な場合には、ヒューリスティックスキーム又は予測スキームが実施される。
【0029】
TLB330は、MMUによって行われた最近の仮想メモリから物理メモリへの(又は、その逆の)メモリアドレス変換をキャッシュする専用のキャッシュメモリである。TLB330は、TLBエントリを記憶するためのオンチップメモリを含み、MMU320の一部としてプロセッサ302に実装される。いくつかの実施形態では、TLB330は、マルチレベルキャッシュである。いくつかの例では、TLB330は、L1TLBと、L2TLBと、を含み、L1TLBは、L2TLBよりも高速であるが、L2TLBよりも小さい。L1TLBの方が高速であるため、頻繁に使用される変換は、L1TLBのヒット時により迅速に実行される。ただし、L1TLBが小さいので、頻繁に使用されない変換は、L1TLBからエビクトされ、L2TLBに記憶される。L2TLBはL1TLBよりも大きいので、L2TLBのヒットの可能性が高くなる(EMTLB360又はPTW340への依存が回避される)ように、より多くの変換がL2TLBに記憶される。ただし、L2TLBはL1TLBよりも遅いため、変換のレイテンシ、したがって全体的なメモリアクセス性能は、L1TLBがヒットした場合と比較して若干低くなる。L1TLB及びL2TLBの両方がミスした場合、MMU320は、PTW340を使用してページテーブルウォークを実行し、及び/又は、EMTLB360でEMTLBルックアップを実行する。
【0030】
PTW340は、仮想アドレスを物理アドレスに変換するために、例えば、このような変換がTLB330又はEMTLB360にキャッシュされていない場合に、ページテーブルウォークを実行する専用のハードウェアである。PTW340は、MMU320の一部としてプロセッサ302に実装される。ページテーブルウォークは、比較的時間がかかり、TLB又はEMTLBがヒットする場合よりも変換レイテンシが長くなる。いくつかの例では、この理由は、ページテーブルウォークが、1つの変換のために、複数のメモリに依存し、及び/又は、メモリへの順次アクセスを必要とするためである。
【0031】
ページテーブルを生成するには、いくつかの方法がある。x86、ARM及び他のシステムで使用される例示的なページテーブルは、基数ツリーを使用して生成される。基数ツリーは、各レベルのノードが、次のレベルのノードへのいくつかのポインタを含むNレベルのツリー構造である。48ビットの仮想アドレスを持つx86ページテーブルの例では、各ノードは、次のレベルのノードへの512個のポインタを含む。
【0032】
別の例のページテーブルは、ハッシュテーブルの形式を使用する。このようにしてハッシュテーブルを使用すると、いくつかの実施形態では、より高速な(例えば、1回のメモリアクセスを必要とする)ベストケースのルックアップが提供されるが、場合によっては、ソフトウェアへのフォールバック等のように、潜在的なハッシュの衝突を特別に処理する必要がある。
【0033】
EMTLB360のハッシュテーブルは、例えば、ハッシュ衝突のための特別な場合の処理が、EMTLB360について簡略化され又は除かれている場合には、全てのページテーブルに比べて単純である。このような場合に、例えば、EMTLB360は、ハッシュの衝突を解決するために、二次検索に依存したり、ソフトウェアにフォールバックしたりするのではなく、完全な基数ツリーにフォールバックして変換を取得する。
【0034】
EMTLB360は、TLB330からエビクトされた仮想から物理へのアドレス変換をキャッシュするために確保されたメモリ304の領域(図中のEMTLBメモリ367)を含み、TLB330を含むキャッシュ階層の下位レベルとして機能する。EMTLBメモリ367は、メモリ304内に配置され、オンチップTLB330の一部ではないので、ルックアップ要求に応答するEMTLBヒットは、TLBヒットよりも長い変換レイテンシを有することになる。ただし、EMTLB360のメモリは、TLB330と比べて非常に大きい。したがって、TLB330と比較して非常に多くの、場合によっては1000倍程度の変換がEMTLB360内に記憶される。このことは、変換要求に応じてTLB330がミスした場合に、EMTLBヒットが、その変換レイテンシがTLBヒットよりも長いとしても、ページテーブルウォークと比べて短い変換レイテンシを有するという点で有利である。
【0035】
いくつかの実施形態では、EMTLBメモリ367は、システム300が初期化されるか「起動」されると、メモリ304内に割り当てられるか、メモリ304から「切り分けられる(carved out)」。メモリは、任意の好適な方法でEMTLB360に割り当てられる。例えば、いくつかの実施形態では、メモリは、ハイパーバイザ及び/又はオペレーティングシステム(OS)をロードする前に、基本入出力システム(BIOS)によって予約される。いくつかの実施形態では、EMTLB360のメモリは、ハイパーバイザ又はOSによって割り当てられる。EMTLB360の全てのエントリは、有効な変換を含まないように初期化される。場合によっては、EMTLB360は、複数のページサイズ(例えば、1ギガバイト、2メガバイト、4キロバイトのサイズ)をサポートする。場合によっては、EMTLB360内のエントリは、タグ及びデータ部分を含む。タグ部分は、仮想アドレスを含み、いくつかの例では、ドメインID、ページサイズ、及び/又は、プロセスアドレス空間識別子(PASID)を含むことができる。データ部分は、物理アドレスを含み、いくつかの例では、読み出し/書き込み/実行権限、及び/又は、ダーティビットを含むことができる。
【0036】
EMTLB360は、任意の好適な構造を有することができる。いくつかの例では、EMTLB360は、セットアソシエイティブ/ウェイ(way)アソシエイティブである。いくつかの例では、EMTLB360のエントリは、任意のサイズであり、すなわち、ページテーブル内のエントリのストレージサイズ(例えば、x86では8バイト)によって制限されない。いくつかの例では、EMTLB360は、オンチップTLB(例えば、TLB330)よりも多くのエントリを含む。いくつかの例では、EMTLB360は、例えば、最長時間未使用(LRU)のエントリのエビクトを可能にするために、置換ポリシーを実装し、置換履歴を保持する。いくつかの例では、EMTLB360は、オフチップメモリ(例えば、DRAM304)内で置換ポリシーの状態を保持する。
【0037】
いくつかの例では、例えばTLB330からのエビクトに続いて、EMTLBルックアップを実行するために又はEMTLB360を更新するために、読み出し-変更-書き込み(read-modify-write)のメモリ操作がMMU320によって実行される。
【0038】
本明細書の例では、EMTLBルックアップは、この例ではMMU320の一部であるEMTLB制御ロジック365によって制御される。ただし、様々な実施形態では、EMTLBメモリ360は、専用ハードウェアを使用して、専用ファームウェアを実行する組み込みプロセッサを使用して、メインプロセッサ(例えば、プロセッサ302又はプロセッサ302のコア)で実行されるソフトウェアを使用して、及び/又は、他の任意の好適な方法で実施可能な制御ロジックを使用して実装可能な制御ロジックを用いて維持されることに留意されたい。いくつかのそのような実施形態では、EMTLB制御ロジック365は、EMTLBメモリ367をキャッシュするか否かを決定する。
【0039】
いくつかの実施形態では、複数のEMTLB制御ロジックが、EMTLBメモリの共通のプール(例えば、EMTLBメモリ367)を共有する。いくつかのそのような実施形態では、あるEMTLB制御ロジックによる共有EMTLBメモリ367の一部に対する読み出し及び/又は書き込みアクセスが、別のEMTLB制御ロジックの読み出し及び/又は書き込みアクセスと競合するシナリオが生じる場合もある。このような場合には、EMTLBキャッシングが使用されないのであれば、いくつかの例では、アトミック操作を使用して、EMTLBメモリの共通プールを共有する複数のEMTLBコントローラ間を調整する。いくつかの実施形態では、1つのEMTLB制御ロジック(例えば、EMTLB制御ロジック365)が読み出しを行い、比較及びスワップ(compare-and-swap)アトミック操作を実行して、エントリを更新する。これらの操作によって、エントリが読み出された後に、他のEMTLB制御ロジックが、エントリに書き込みを行っていないか(すなわち、前の値との比較がパスする)、又は、比較及びスワップアトミック操作が失敗して、EMTLB制御ロジック365が修正動作を行ったか(例えば、比較及びスワップを再度試みるか、エントリを削除する)の何れかであることを確認することができる。これらの場合にEMTLBキャッシングを使用すると、いくつかの例では、このようなキャッシングは、同じEMTLBメモリを共有する全てのEMTLBコントローラ間でコヒーレントである。
【0040】
いくつかの例では、ソフトウェア又はファームウェア、及び、ソフトウェア若しくはファームウェアを実行するプロセッサ又はコントローラは、特定の操作を使用して、x86ロックプレフィックス命令等のアトミック読み出し/変更/書き込み操作を実行する。このような場合には、EMTLBは、非コヒーレントハードウェアからのメモリ操作ではなく、プロセッサからのキャッシュコヒーレント操作を使用して変更可能である。いくつかの実施形態では、複数のEMTLB制御ロジックの各々が個別のEMTLBメモリにアクセスする。いくつかの実施形態では、このような場合には調整が必要ない。
【0041】
いくつかの例では、EMTLB360は、新たなエントリがランダムに(又は、疑似ランダムに)書き込まれる方法を選択し、この目的のために置換履歴を維持する必要性を回避する。いくつかの例では、このランダム又は疑似ランダム選択は、方法を選択するために、線形フィードバックシフトレジスタ(LFSR)を使用して行われる。いくつかの例では、EMTLBへのエントリの書き込みをランダム又は擬似ランダムに行うことによって、置換履歴又は状態の維持が不要になる。
【0042】
いくつかの例では、EMTLB360が直接マッピングされる。いくつかのこのような例では、EMTLBメモリ367に記憶されるエントリのタグは、EMTLB360の何れのエントリが書き込まれるかを決定するのに使用される。これにより、類似のタグが同じ場所にハッシュされる競合の問題が発生し、EMTLB360がある程度スラッシングされる場合がある。場合によっては、例えば、Nウェイアソシエイティブキャッシュ/TLB構造の同じインデックスに全てマッピングするN+1の変換を記憶するための要求が繰り返される場合に、EMTLB360のセットアソシエイティブの実施形態においてもスラッシングが発生することに留意されたい。
【0043】
図4は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順400を説明するフロー図である。いくつかの実施形態では、手順400は、図3に関して示され、説明されるように、システム300とともに使用可能である。
【0044】
ステップ410では、MMU(例えば、図3に関して示され、説明されたMMU320)は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む(又は、示す)。
【0045】
MMUは、ステップ420において、そのTLB(例えば、図3に関して示され、説明されたTLBメモリ330)内でルックアップを実行する。いくつかの例では、TLBメモリは、MMUの一部であってもよいし、MMUと同じコアに存在してもよいし、MMUと同じチップ上に存在してもよい。このTLBメモリは、図4では「オンチップTLB」又はOCTLBと呼ばれる。様々な実施形態では、このTLBは、1つ以上のキャッシュレベルを含む。
【0046】
条件430においてTLBルックアップがヒットした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかる)、ステップ440において、TLBに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、(例えば、変換がMMU TLBの下位レベルで見つかった場合)この時点でTLBに対する置換アルゴリズムが実行され、キャッシュが更新される。いくつかの例では、アルゴリズムは、TLBの置換状態を更新するが、変換情報を変更しない。
【0047】
条件430において、TLBルックアップがミスする場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLB内に見つからない)、ステップ450において、MMUは、EMTLB(例えば、図3に関して示され、説明されたEMTLB360)内のルックアップを実行する。
【0048】
条件460において、EMTLBルックアップがヒットした場合、ステップ440において、EMTLBに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、EMTLBルックアップのヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
【0049】
いくつかの実施形態では、物理アドレス変換は、この段階でTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、EMTLBメモリからTLBメモリへのエントリの書き込みに基づいて、TLBの置換状態を反映するように更新される(例えば、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが、必要に応じてEMTLBで実行される(例えば、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。
【0050】
いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、(例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して)EMTLBに書き込まれない。このような置換アルゴリズムの1つの例では、現在の変換がTLBに記憶され、TLBが満杯になると、新たな変換のためのスペースを確保するために、TLBからエントリがエビクトされる。エビクトのために選択されるエントリは、置換アルゴリズムに依存する。選択されたエントリがTLBからエビクトされ、エビクトされたエントリがEMTLBに書き込まれる。EMTLBが満杯の場合には、TLBからエビクトされたエントリのためのスペースを確保するために、EMTLBからエントリがエビクトされる。EMTLBは、TLB構造の最下位レベルであるため、EMTLBからエビクトされた変換は、キャッシュされない。いくつかの実施形態では、最長時間未使用(LRU)のエントリが、EMTLBからエビクトされるために選択される。いくつかの実施形態では、これは、オンチップメモリが、LRUエントリを追跡するためのハードウェアを実装するのに十分な大きさではないTLB用の置換アルゴリズムと異なる。TLB及びEMTLBの置換には、様々な種類の置換アルゴリズムが可能であり、任意の好適な置換アルゴリズムを使用することができる。
【0051】
条件460において、EMTLBルックアップがミスした場合、ステップ470において、MMUは、(例えば、図3に関して示され、説明されたPTW320を使用して)ページテーブルウォークを実行する。ページテーブルウォークによって取得された対応する物理アドレスが、ステップ440においてクライアントに返される。
【0052】
いくつかの実施形態では、物理アドレス変換は、この段階でTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが必要に応じてEMTLBで実行される(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
【0053】
手順400では、EMTLBで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。しかし、TLBルックアップ及びEMTLBルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生し、EMTLBルックアップのオーバーヘッドに追加される。これは、実行の初期段階や、TLB/EMTLBフラッシュの後等のように、変換が殆どキャッシュされていない様々なシナリオで発生する可能性がある。場合によっては、EMTLBの実施形態は、そのようなシナリオの間に性能の低下をもたらすことがある。
【0054】
図5は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順500を説明するフロー図である。いくつかの実施形態では、手順500は、図3に関して示され、説明されているように、システム300とともに使用可能である。
【0055】
ステップ510において、MMU(例えば、図3に関して示され、説明されているMMU320)は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む(又は、示す)。MMUは、そのような要求を受信すると、ステップ520において、そのTLB(例えば、図3に関して示され、説明されているTLB330、MMU320の一部であるTLB、又は、MMUと同じコアに存在するか同じチップ上に存在するTLB等)内でルックアップを実行する。様々な実施形態では、このTLB(「TLB」、「MMU TLB」又は「オンチップTLB」)は、1つ以上のキャッシュレベルを含む。
【0056】
条件530において、TLBルックアップがヒットする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかった場合、ステップ540において、TLBに記憶された対応する物理アドレスが、クライアントに返される。いくつかの実施形態では、例えば、変換がMMU TLBの下位レベルで見つかった場合には、この時点でTLBに対する置換アルゴリズムが実行されて、キャッシュが更新される。いくつかの例では、アルゴリズムは、TLBの置換状態を更新するが、変換情報を変更しない。
【0057】
条件530において、TLBルックアップがミスする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換がMMU TLB内に見つからない場合、ステップ550において、MMUは、EMTLB(例えば、図3に関して示され、説明されているEMTLB360)内でルックアップを実行する。ステップ550においてEMTLBルックアップを開始することに加えて、MMUは、ステップ570において、(例えば、図3に関して示され、説明されているPTW320を使用して)ページテーブルウォークを開始する。
【0058】
ステップ570の間にページテーブルウォークが進行している間に、ステップ550のEMTLBルックアップがヒットしたかどうかが決定される。条件560において、EMTLBルックアップがヒットした場合、ステップ580においてページテーブルウォークが中止され、ステップ540において、EMTLBに記憶された対応する物理アドレス変換がクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
【0059】
条件560において、EMTLBルックアップがミスした場合、ステップ590において、EMTLBルックアップが終了し、ステップ570において、ページテーブルウォークが継続される。ステップ540において、ページテーブルウォークによって取得された対応する物理アドレスがクライアントに返される。
【0060】
いくつかの実施形態では、物理アドレス変換は、ステップ540においてTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが必要に応じてEMTLBで実行される。(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
【0061】
手順500は、手順400と同様に、EMTLBで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。TLBルックアップ及びEMTLBルックアップの両方がミスした場合には、ページテーブルウォークのオーバーヘッドが依然として発生するが、EMTLBルックアップがページテーブルウォークと並行して実行されるので、このオーバーヘッドは、EMTLBルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並列に(例えば、同時に、又は、共に)動作するEMTLBの実施形態は、そのようなシナリオの間に性能を大幅に低下させることがない。例えば、いくつかの実施形態では、ページテーブルウォークのレイテンシは、EMTLBの並列ルックアップのために、単一のEMTLBメモリアクセスによってのみ影響を受ける。
【0062】
図6は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順600を説明するフロー図である。いくつかの実施形態では、手順600は、図3に関して示され、説明されているように、システム300とともに使用可能である。
【0063】
手順600は、仮想化システムにおける仮想アドレスの多層変換に関連する詳細を含む。仮想化システムでは、仮想マシン(VM)に対して、物理メモリに対応する特定の仮想アドレス空間が割り当てられる。この例では、VMに割り当てられた仮想アドレス空間アドレスをゲスト物理アドレス(GPA)と呼び、物理メモリアドレスをシステム物理アドレス(SPA)と呼ぶ。また、VMのアドレス空間には、ドメイン識別(ドメインID)が割り当てられる。SPAを取得するためのGPAの変換を、ホスト層変換(host layer translation)と呼ぶ。
【0064】
VM内で実行される各アプリケーションには、GPAに対応する仮想アドレス空間が割り当てられる。この例では、アプリケーションに割り当てられた仮想アドレス空間アドレスを、ゲスト仮想アドレス(GVA)と呼ぶ。また、各アプリケーションには、プロセスID(PASID)が割り当てられている。対応するGPAを取得するためのGVAの変換を、ゲスト層変換(guest layer translation)と呼ぶ。したがって、GVAからSPAへの完全な変換は、2つの変換(すなわち、GVAからGPA(ゲスト層)、及び、GPAからSPA(ホスト層))で構成されていると説明することができる。これは、ネストしたページテーブルウォークの例である。この例では、GVAからGPAへの変換を中間変換と呼ぶ場合がある。いくつかの実施形態では、3つ以上のレベルのネスティングが使用されてもよく、完全な変換は、2つ以上の中間変換を含む3つ以上の変換から構成され得ることに留意されたい。
【0065】
手順600において、MMU TLBは、デバイステーブルエントリ、部分的なGVAからSPAへの変換、及び、最終的なGPAからSPAへの変換を記憶する。ドメインIDは、エントリタイプ毎にMMU TLBに記憶されている。EMTLBは、GVA又はGPA、ドメインID、及び、PASIDによってタグ付けされている。
【0066】
ステップ605において、MMU(例えば、MMU320)は、物理アドレスに変換される仮想アドレスを含む要求を受信する。この場合、要求は、SPAに変換されるGVA又はGPA(仮想アドレス)を含む。
【0067】
条件630において、TLBルックアップがヒットした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかる)、ステップ640において、MMU TLBに記憶された対応するSPAが、クライアントに返される。いくつかの実施形態では、例えば、変換がMMU TLBの下位レベルで見つかった場合には、この時点でMMU TLBに対する置換アルゴリズムが実行されて、キャッシュが更新される。
【0068】
TLBルックアップがミスした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対応するSPAが、MMU TLB内に見つからない)、要求された仮想アドレスのドメインIDがMMU TLB内に記憶されているかどうかが決定される。条件643において、ドメインIDがMMU TLBに記憶されていない場合、ステップ645において、要求された仮想アドレスのドメインIDがメモリからフェッチされ、それ以外の場合には、ステップ650において、MMU TLBから取得される。何れの場合も、ページテーブルウォーク及びEMTLBルックアップの両方が、ステップ655,660において、仮想アドレス及びドメインIDに基づいて実行される。
【0069】
条件665において、EMTLBがヒットした場合、ページテーブルウォークが中止され、ステップ640において、対応するSPAがクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
【0070】
条件665において、EMTLBルックアップがミスした場合、EMTLBルックアップが単に終了し、ステップ655において、ページテーブルウォークが継続される。
【0071】
ステップ655のページテーブルウォークは、この例ではステップ660のEMTLBルックアップよりも時間がかかり、ステップ670において、メモリからページディレクトリをフェッチすることと、ステップ675において、フェッチしたページディレクトリを使用して、仮想アドレスに対応するページテーブルエントリをフェッチすることと、を含む。ステップ640において、MMUは、フェッチされたページテーブルエントリから、対応するSPAをクライアントに返す。
【0072】
いくつかの実施形態では、変換は、ステップ640においてTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが、必要に応じてEMTLBで実行される(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
【0073】
手順600は、手順400と同様に、EMTLBで変換が見つかった場合に、ページテーブルウォーク(及び、その潜在的にコストのかかるオーバーヘッド)が回避されるシナリオを説明している。TLBルックアップ及びEMTLBルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生するが、EMTLBルックアップは、ページテーブルウォークと並行して実行されるので、このオーバーヘッドは、EMTLBルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並行して動作するEMTLBの実施形態は、このようなシナリオの間に性能を低下させることがない。
【0074】
状況によっては、TLBの特定の内容を無効にする必要がある。このような状況は、例えば、ソフトウェアがメモリ内のページテーブルに変更を加える場合に発生する(例えば、ページテーブルエントリの場合、有効なビット値の変更、アドレスの変更、属性の変更(例えば、読み出し/書き込みから読み出し専用等))。ソフトウェアは、メモリ内のページテーブルに変更を加える場合があり、この場合、例えば、メモリの割り当てが解除されて、新たなクライアントへの割り当てのためにメモリが解放される。メモリの割り当てが解除される例としては、アプリケーション又はデバイスドライバが、その使用のために割り当てられたメモリの使用を終了し、そのメモリを解放する場合がある。
【0075】
このような場合、TLBの内容は、無効としてマークされるか、異なる実施形態では、消去又は「ゼロで埋められる(zeroed out)」。EMTLBを含む実施形態では、EMTLBの特定の内容も無効にする必要がある。しかし、そのサイズが大きい及びアクセスのレイテンシが長いために、EMTLBの各エントリをスキャンして無効化ターゲットを特定することができない場合がある。したがって、EMTLBエントリは、ドメインベースの無効化を容易にするために、ドメインIDを含んでもよい。例えば、特定のVMに対応するGPAの範囲を無効にする場合、そのVMのドメインIDに対応するEMTLBのエントリのみをスキャンして無効にする必要がある。
【0076】
EMTLBエントリを無効にするには、いくつかの異なるオプションが考えられる。いくつかの実施形態では、遅延無効化を含む。遅延無効化は、EMTLBアクセスの前に適用されるフィルタとして実装することができる。フィルタには、処理のためにバッファリングされたが、EMTLBメモリ自体の更新が完了していない無効化に関する情報が含まれている。無効化がEMTLB制御ロジックによって(例えば、MMUを介してソフトウェアから)受信された場合には、これらは、(スペースがあれば)フィルタに記憶され、EMTLBメモリがチェックされる前、又は、場合によっては更新される前であっても、MMUによって「完了」として処理される。無効化を完了したものとして処理する場合、MMUは、ソフトウェアに信号を送り、無効化が完了したことを示す。ソフトウェアは、以前の変換のコピーがTLB/EMTLBから削除されているので、ページテーブルの無効化された部分を適切な方法で変更することができる。例示的な動作では、システム上で実行されているソフトウェアは、特定のページ変換を無効にする信号を(例えば、他の構成要素を介して)MMUに送る。信号がMMUによって受信された後に(例えば、好適な方法で確認応答された後に)、ソフトウェアは、無効化を完了したものとして処理する。これは、この時点以降に、MMUが無効化を完了するか無効化をバッファに記憶し(すなわち、遅延無効化)、これにより、無効化された変換がEMTLBで無効とマークされていなくても、無効化された変換がアクセスされないようにするためである。
【0077】
変換ルックアップのためのEMTLB制御ロジックへの変換要求がフィルタでヒットした場合、変換が実際にEMTLBメモリに記憶されている場合であっても、その要求はEMTLBミスとして処理される。これは、EMTLBメモリ内の関連するエントリが、EMTLBメモリ内で物理的にエンコードされている場合であっても(すなわち、フィルタ内の無効化バッファがEMTLBメモリを未だ更新していない場合であっても)、無効化されることが意図されていたためである。いくつかの実施形態では、状態機械がEMTLBメモリを検索して、フィルタ内のバッファリングされた何れかの無効化に一致するエントリを探す。いくつかの実施形態では、これは、変換要求の待機及び受信と並行して行われる。フィルタにバッファリングされた何れかのエントリが無効化基準に一致する場合、対応するエントリがEMTLBメモリからエビクトされる。無効化に一致する可能性のある全てのエントリがスキャンされると、処理された無効化はフィルタから削除される。
【0078】
フィルタが満杯の場合には、無効化を直ちに完了することができない。この場合、いくつかの実施形態では、無効化は、フィルタ内のスペースが解放されるのを待つか、(例えば、EMTLBロジック内の)別のスキャンロジックがEMTLBメモリをスキャンして、無効化基準に一致するエントリを探し出し、それらをエビクトする。スキャンが完了した場合に、EMTLBの観点からは無効化が完了したものと見なされる。
【0079】
いくつかの実施形態は、無効化のための「メモリ書き込み/消去」スキームを含む。メモリ書き込み/消去スキームでは、スキャンロジックは、EMTLBメモリの内容を読み出さずに、無効にするエントリを決定する。むしろ、スキャンロジックは、無効化基準に一致する潜在的なエントリの全てを無効にするように、EMTLBメモリに単に書き込みを行う。このスキームでは、1つ以上のメモリ書き込みが必要になる場合がある。
【0080】
いくつかの実施形態は、無効化のための「読み出し-変更-書き込み」スキームを含む。読み出し-変更-書き込みスキームでは、スキャンロジックが、EMTLBの潜在的なエントリを読み出して、無効化基準に一致するエントリを判別し、基準に一致するエントリのみを上書きして無効化する。
【0081】
本明細書における開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素を特定の組み合わせで上述したが、特徴又は要素の各々は、他の特徴及び要素を伴わずに単独で、又は、他の特徴及び要素を伴うか伴わずに様々な組み合わせで使用することができる。
【0082】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサは、例えば、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと協働する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他の任意のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データ(コンピュータ可読媒体に記憶することができる命令)と、を使用して製造プロセスを構成することによって、製造することができる。このような処理の結果は、本開示の特徴を実装するプロセッサを製造するための半導体製造プロセスで後に使用されるマスクワークとすることができる。
【0083】
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによって実行されるために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実装することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。
図1
図2
図3
図4
図5
図6