JP7443344B2 - 外部メモリベースのトランスレーションルックアサイドバッファ - Google Patents

外部メモリベースのトランスレーションルックアサイドバッファ Download PDF

Info

Publication number
JP7443344B2
JP7443344B2 JP2021512943A JP2021512943A JP7443344B2 JP 7443344 B2 JP7443344 B2 JP 7443344B2 JP 2021512943 A JP2021512943 A JP 2021512943A JP 2021512943 A JP2021512943 A JP 2021512943A JP 7443344 B2 JP7443344 B2 JP 7443344B2
Authority
JP
Japan
Prior art keywords
translation
emtlb
tlb
mmu
memory address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021512943A
Other languages
English (en)
Other versions
JP2022501705A (ja
Inventor
ハルシャダク ラヴァル ニッポン
ン フィリップ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Original Assignee
ATI Technologies ULC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC filed Critical ATI Technologies ULC
Publication of JP2022501705A publication Critical patent/JP2022501705A/ja
Application granted granted Critical
Publication of JP7443344B2 publication Critical patent/JP7443344B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Description

(関連出願の相互参照)
本願は、2018年9月25日に出願された米国特許出願第16/141,603号の優先権を主張するものであり、その内容は、言及することにより本明細書に組み込まれる。
現代のマイクロプロセッサは、通常、メインメモリ内の物理アドレスを、プログラムが使用する仮想メモリアドレスに抽象化する。仮想メモリアドレスと物理メモリアドレスとの間の変換は、通常、メモリ管理ユニット(MMU)と呼ばれるプロセッサ上のハードウェアによって行われる。仮想メモリアドレスと物理メモリアドレスとの対応関係は、ページテーブルで管理される。MMUは、ページテーブルのルックアップを行うことによって、仮想メモリアドレスと物理メモリアドレスとの変換を取得することができる。ページテーブルのルックアップは、通常、ページテーブルウォークと呼ばれ、MMUのハードウェア(一般に、ページテーブルウォーカ(PTW)と呼ばれる)によって行われる。
ページテーブルウォークを使用して物理メモリアドレスを解決するのは、非常に時間がかかる場合がある。変換時間を短縮することによってメモリアクセスを高速化するために、仮想メモリアドレスと物理メモリアドレスとの最近の変換は、通常、トランスレーションルックアサイドバッファ(TLB)と呼ばれるMMUのメモリにキャッシュされる。TLBは、一般に、MMUの一部である。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
本開示の1つ以上の特徴を実装することができる例示的なデバイスのブロック図である。 追加の詳細を示す図1のデバイスのブロック図である。 一例による、図1及び図2のデバイスで使用可能な外部メモリトランスレーションルックアサイドバッファ(EMTLB)を含む例示的なシステムを示すブロック図である。 仮想アドレスから物理アドレスへの変換を実行するための例示的な手順を示すフロー図である。 仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。 仮想アドレスから物理アドレスへの変換を実行するための別の例示的な手順を示すフロー図である。
いくつかの実施形態は、メモリ管理ユニット(MMU)が、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信することと、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてトランスレーションルックアサイドバッファ(TLB)を検索することと、を含む、仮想アドレス変換の方法を含む。変換がTLBで見つからない場合に、外部メモリトランスレーションルックアサイドバッファ(EMTLB)で変換が検索され、ページテーブルウォーカ(PTW)がページテーブルウォークを実行して、ページテーブルから変換を取得する。変換がEMTLBで見つけられた場合に、ページテーブルウォークが中止され、物理メモリアドレスが返される。変換がEMTLBで見つからない場合、ページテーブルウォークに基づいて物理メモリアドレスが返される。
いくつかの実施形態では、仮想アドレス変換のためのMMUが提供される。MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路と、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてTLBを検索する回路と、変換がTLBで見つからない場合に、EMTLBで変換を検索し、PTWを用いてページテーブルウォークを実行して、変換を取得する回路と、物理メモリアドレスがEMTLBで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路と、変換がEMTLBで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路と、を含む。
いくつかの実施形態では、プロセッサと、プロセッサと通信するメモリと、を含むコンピューティングデバイスが提供される。プロセッサは、仮想アドレス変換のためのMMUを含む。MMUは、TLBと、PTWと、を含み、メモリは、EMTLBを含む。また、MMUは、仮想メモリアドレスを物理メモリアドレスに変換する要求を受信する回路を含む。さらに、MMUは、物理メモリアドレスに変換するために、仮想メモリアドレスに基づいてTLBを検索する回路を含む。さらにまた、MMUは、変換がTLBで見つからない場合に、EMTLBで変換を検索し、PTWを用いてページテーブルウォークを実行して、変換を取得する回路を含む。また、MMUは、変換がEMTLBで見つけられた場合に、ページテーブルウォークを中止して、物理メモリアドレスを返す回路を含む。さらに、MMUは、変換がEMTLB及びTLBで見つからない場合に、ページテーブルウォークに基づいて物理メモリアドレスを返す回路を含む。
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーミングデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレット型コンピュータを含むことができる。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含むことができる。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
様々な代替形態においては、プロセッサ102は、中央処理装置(CPU)、グラフィックスプロセッシングユニット(GPU)、同一のダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。様々な代替形態において、メモリ104は、プロセッサ102と同一のダイ上に配置されるか、プロセッサ102とは別に配置される。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ)を含む。
ストレージ106は、固定又はリムーバブルストレージ(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、限定されないが、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、限定されないが、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の照明、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信用及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
入力ドライバ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パラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明する機能を実行することが考えられる。
図2は、APD116上での処理タスクの実行に関連する更なる詳細を示す、デバイス100のブロック図である。プロセッサ102は、システムメモリ104内に、プロセッサ102が実行する1つ以上の制御論理モジュールを保持する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102で実行される他のソフトウェアに対してハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)に対してアプリケーションプログラミングインターフェース(API)を提供することによって、APD116の動作を制御し、APD116の様々な機能にアクセスする。また、カーネルモードドライバ122は、APD116の処理構成要素(以下により詳細に説明するSIMDユニット138等)によって実行されるプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、並列処理に適したグラフィックス操作及び非グラフィックス操作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、例えば、ピクセル操作、幾何学計算等のグラフィックスパイプライン操作を実行するために、及び、プロセッサ102から受信したコマンドに基づいて表示デバイス118に画像をレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する操作等のように、グラフィックス操作に直接関係しない計算処理動作を実行する。
APD116は、プロセッサ102の要求に応じて、SIMDパラダイムに従って並列的に動作を実行する1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータでそのプログラムを実行することができる。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータでその命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、予測を使用してレーンをオフにすることができる。予測は、分岐する制御フローを有するプログラムを実行するために使用することもできる。より具体的には、制御フローが、個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合には、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
計算ユニット132での実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列に実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上で「ウェーブフロント(wavefront)」として同時に実行され得る。1つ以上のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれる。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行される。代替的に、ウェーブフロントは、単一のSIMDユニット138上で順次実行され、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列に実行される。ウェーブフロントは、単一のSIMDユニット138で同時に実行されるワークアイテムの最大の集合と考えることができる。したがって、プロセッサ102から受信したコマンドが、特定のプログラムが単一のSIMDユニット138上で同時に実行できない程度に並列化されるべきであることを示している場合には、そのプログラムは、複数のSIMDユニット138上で並列化されるか、同じSIMDユニット138上で直列化される(又は、必要に応じて並列化及び直列化の両方が行われる)ウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上での様々なウェーブフロントのスケジュールに関連する操作を実行する。
計算ユニット132によって提供される並列性は、ピクセル値計算、頂点変換及び他のグラフィックス操作等のグラフィックス関連操作に適している。したがって、いくつかの例において、プロセッサ102からグラフィックスプロセッシングコマンドを受信するグラフィックスパイプライン134は、並列に実行するために計算タスクを計算ユニット132に提供する。
また、計算ユニット132は、グラフィックスに関係しないか、グラフィックスパイプライン134の「通常」操作の一部として実行されない計算タスク(例えば、グラフィックスパイプライン134の操作に対して実行される処理を補足するために実行されるカスタム操作)を実行するために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
プロセッサ102は、(例えば、メモリ104の)仮想メモリアドレスと物理メモリアドレスとを変換するために、MMU及びTLBを含む。いくつかの実施形態では、プロセッサ102内の複数の構成要素の各々が、MMU及びTLBを含むことに留意されたい。デバイス100のいくつかの例示的な実施形態では、プロセッサ102は、いくつかのx86CPUコアの各々にMMUを含み、APD116(例えば、GPU)にMMUを含み、ネットワークコントローラ等のI/Oデバイスに対応するI/O用MMUを含む。
コンピュータシステムが進化するにつれて、それらは、一般に、ますます大きな物理メモリストアを含むようになり、これらのシステムのプログラムは、一般に、このメモリの容量をますます多く利用し、多くの場合、参照局所性が低下する。参照局所性の低下とは、特定のメモリ位置に対して、より長い時間を隔ててアクセスすること(時間的)、又は、(例えば、物理メディア上の、又は、ストレージの組織構造に基づいて)ストレージ内のより離れた位置にある異なるメモリ位置にアクセスすることをいう。大きな記憶空間及び参照局所性の低下は、高いTLBミス率、又は、他の理由で望ましくないTLBミス率の一因となり、結果的に、仮想アドレスから物理アドレスへの変換のオーバーヘッドが高くなる可能性がある。一般的に、この理由は、TLBミス率が増加すると、TLBにキャッシュされていない仮想から物理への変換を取得するために、ページテーブルウォークの回数を増やす必要があるためである。ページテーブルウォークを使用して変換を解決すると、キャッシュされた変換をTLBから取得する場合よりも性能が著しく低下する(すなわち、大幅に時間がかかる)。
概念的な観点から、TLBのサイズを大きくすると、アドレス変換のオーバーヘッドが改善される可能性がある。しかし、プロセッサのMMUに実装されている一般的なTLBのオンチップハードウェアにおいて必要な増加量は、ダイ面積及び/又は費用の点で実用的ではない。ページサイズ、したがって変換の単位を変更すると、いくつかの実施形態では、TLBのサイズを増やすことなく、アドレス変換のオーバーヘッドが改善される可能性がある。例えば、x86プロセッサは、4KB、2MB及び1GBのページをサポートする。ただし、ソフトウェアがページサイズを制御し、デフォルトでは最小のサイズが使用されることが多い。そのため、いくつかの実施形態では、より大きなページを要求するために新たなOSインターフェースにアクセスするには、オペレーティングシステム(OS)の拡張機能又はアプリケーションの再コンパイルが必要である。大きなページを使用すると、例えばメモリをディスクにページアウトする際にメモリの大きな領域が移動されるので、メモリ効率に影響する。大きなページを使用すると、その大きなサイズのページ内の全てのメモリが、アプリケーションのアクティブなワーキングセット内で使用されない場合に、メモリ効率が低下する。さらに、ページサイズが大きくなると、メモリを割り当てるための最小の粒度が生成され、小規模なアプリケーションでメモリが非効率的に使用される場合がある。さらに、ソフトウェアの互換性によって、いくつかの実施形態では、より大きなページの使用が制限される場合がある。例えば、ページテーブルがx86プロセッサによって解釈される場合、既存のオペレーティングシステムソフトウェアとの互換性を維持するために、フォーマットが固定される。これにより、いくつかの実施形態でサポートされているページサイズも固定される。その結果、一般的な互換性を損なうことなくページテーブルツリーの基数を変更すること、及び/又は、基本的なページサイズを変更することができない場合がある。
ワーキングセットがオンチップTLB容量を超える場合に、メモリ内のページテーブル構造を変更する必要がなく、オペレーティングシステムが、既存のページテーブルフォーマット及びメモリ割り当てアルゴリズムを継続的に利用することができるような、改善されたアドレス変換を提供することが望まれる。したがって、本明細書では、オンチップTLBから外部メモリにエビクトされた仮想アドレス対物理アドレス変換をキャッシュする外部メモリトランスレーションルックアサイドバッファ(EMTLB)について説明する。
図3は、例示的なEMTLB360を含む例示的なシステム300を示すブロック図である。システム300は、プロセッサ302及びメモリ304を含む。プロセッサ302は、通信媒体350を介してメモリ304と通信する。EMTLB360は、メモリ304内に記憶されたEMTLBメモリ367と、MMU320に実装されたEMTLB制御ロジック365と、を含む。通信媒体350は、メモリバス等の任意の好適なコンピュータ相互接続又はコンピュータ相互接続の組み合わせを含むことができる。
いくつかの例では、システム300は、図1及び図2に関して図示及び説明するように、デバイス100を使用して実装される。例えば、そのような実施形態では、プロセッサ302は、プロセッサ102として実装され、メモリ304は、メモリ104として実装される。他の例では、他の好適なプロセッサ、メモリ及び他の構成要素が使用される。
プロセッサ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)等の任意の好適な非一時的なコンピュータ可読媒体を含む。
MMU320は、仮想アドレスを含むか、仮想アドレスを参照する変換要求を受信する。いくつかの例では、MMU320は、クライアントから変換要求を受信する。クライアントは、計算ユニット(CU)、表示エンジン、ビデオデコーダ、GPUコマンドプロセッサ等のように、プロセッサ302内の任意の好適なエンティティを含むことができる。いくつかの例では、MMU320は、内蔵ユニバーサルシリアルバス(USB)コントローラ、外部PCIe接続ネットワークコントローラ等のように、内蔵又は外部の入力/出力(IO)デバイスから変換要求を受信する。これに応じて、MMU320は、仮想アドレスに対応する物理アドレスを、要求を行ったエンティティに返す。物理アドレスは、メモリ304内の物理メモリアドレスのことを指し、本明細書に記載されている様々な手順のうち何れかを使用して取得される。この例では、MMU320が、仮想メモリアドレスを示す変換要求を受信した場合に、TLB330をチェックして、その内部に変換がキャッシュされている(すなわち、TLBヒット)かどうかを確認する。キャッシュされていない場合(すなわち、TLBミス)、MMU320は、EMTLB360をチェックして、その内部に変換がキャッシュされているかどうかを確認し、及び/又は、本明細書でさらに説明するように、PTW340を使用してページテーブルウォークを実行する。
いくつかの例では、ページテーブルウォークを実行する前に、TLB330にアクセスして、部分的な変換を取得しようとする。このような状況においては、部分的な変換は、ページテーブルウォークが、ページテーブルの基数ツリーのルートからではなく、中間レベルから開始されるようにする情報を提供する。このようにして部分的な変換を取得すると、ページテーブルウォークで必要とされるメモリアクセスの回数を減らすことができるという利点がある。いくつかの実施形態では、部分的な変換を使用して、ページテーブルの基数ツリーの途中までページテーブルウォークを開始することによって、メモリアクセスの削減が可能になる。部分的な変換もミスした場合には、ページテーブルウォークは、ページテーブルのルートからの完全なページテーブルウォークとして実行される。
いくつかの実施形態では、(例えば、部分的な変換を使用して、ページテーブルウォークの実行に必要な時間を短縮することにより)同時実行のEMTLBルックアップが完了する前にページテーブルウォークが完了した場合、EMTLBルックアップが中止される。場合によっては、TLBルックアップが完了した後に、EMTLBルックアップが中止される。場合によっては、TLBルックアップによる部分的な変換の結果に基づく、ページテーブルウォークを実行するのに必要なメモリアクセス数の予測に基づいて、EMTLBルックアップがプリエンプティブに中止される。このような場合には、ページテーブルウォークによって実行されることになる将来のメモリ要求の数は、正確には分からない。TLBから取得される部分的な変換の結果は、例えば、様々なページサイズ(したがって、ページテーブルのレベル)、潜在的な他のTLB構造等のために、ページテーブルウォークを完了するのに必要な追加のメモリアクセスの数を直接示すものではない。そのため、部分的な変換に基づいて、同時実行のEMTLBルックアップを予測的に中止するために、ページテーブルウォークに必要なメモリアクセスの数が不明な場合には、ヒューリスティックスキーム又は予測スキームが実施される。
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ルックアップを実行する。
PTW340は、仮想アドレスを物理アドレスに変換するために、例えば、このような変換がTLB330又はEMTLB360にキャッシュされていない場合に、ページテーブルウォークを実行する専用のハードウェアである。PTW340は、MMU320の一部としてプロセッサ302に実装される。ページテーブルウォークは、比較的時間がかかり、TLB又はEMTLBがヒットする場合よりも変換レイテンシが長くなる。いくつかの例では、この理由は、ページテーブルウォークが、1つの変換のために、複数のメモリに依存し、及び/又は、メモリへの順次アクセスを必要とするためである。
ページテーブルを生成するには、いくつかの方法がある。x86、ARM及び他のシステムで使用される例示的なページテーブルは、基数ツリーを使用して生成される。基数ツリーは、各レベルのノードが、次のレベルのノードへのいくつかのポインタを含むNレベルのツリー構造である。48ビットの仮想アドレスを持つx86ページテーブルの例では、各ノードは、次のレベルのノードへの512個のポインタを含む。
別の例のページテーブルは、ハッシュテーブルの形式を使用する。このようにしてハッシュテーブルを使用すると、いくつかの実施形態では、より高速な(例えば、1回のメモリアクセスを必要とする)ベストケースのルックアップが提供されるが、場合によっては、ソフトウェアへのフォールバック等のように、潜在的なハッシュの衝突を特別に処理する必要がある。
EMTLB360のハッシュテーブルは、例えば、ハッシュ衝突のための特別な場合の処理が、EMTLB360について簡略化され又は除かれている場合には、全てのページテーブルに比べて単純である。このような場合に、例えば、EMTLB360は、ハッシュの衝突を解決するために、二次検索に依存したり、ソフトウェアにフォールバックしたりするのではなく、完全な基数ツリーにフォールバックして変換を取得する。
EMTLB360は、TLB330からエビクトされた仮想から物理へのアドレス変換をキャッシュするために確保されたメモリ304の領域(図中のEMTLBメモリ367)を含み、TLB330を含むキャッシュ階層の下位レベルとして機能する。EMTLBメモリ367は、メモリ304内に配置され、オンチップTLB330の一部ではないので、ルックアップ要求に応答するEMTLBヒットは、TLBヒットよりも長い変換レイテンシを有することになる。ただし、EMTLB360のメモリは、TLB330と比べて非常に大きい。したがって、TLB330と比較して非常に多くの、場合によっては1000倍程度の変換がEMTLB360内に記憶される。このことは、変換要求に応じてTLB330がミスした場合に、EMTLBヒットが、その変換レイテンシがTLBヒットよりも長いとしても、ページテーブルウォークと比べて短い変換レイテンシを有するという点で有利である。
いくつかの実施形態では、EMTLBメモリ367は、システム300が初期化されるか「起動」されると、メモリ304内に割り当てられるか、メモリ304から「切り分けられる(carved out)」。メモリは、任意の好適な方法でEMTLB360に割り当てられる。例えば、いくつかの実施形態では、メモリは、ハイパーバイザ及び/又はオペレーティングシステム(OS)をロードする前に、基本入出力システム(BIOS)によって予約される。いくつかの実施形態では、EMTLB360のメモリは、ハイパーバイザ又はOSによって割り当てられる。EMTLB360の全てのエントリは、有効な変換を含まないように初期化される。場合によっては、EMTLB360は、複数のページサイズ(例えば、1ギガバイト、2メガバイト、4キロバイトのサイズ)をサポートする。場合によっては、EMTLB360内のエントリは、タグ及びデータ部分を含む。タグ部分は、仮想アドレスを含み、いくつかの例では、ドメインID、ページサイズ、及び/又は、プロセスアドレス空間識別子(PASID)を含むことができる。データ部分は、物理アドレスを含み、いくつかの例では、読み出し/書き込み/実行権限、及び/又は、ダーティビットを含むことができる。
EMTLB360は、任意の好適な構造を有することができる。いくつかの例では、EMTLB360は、セットアソシエイティブ/ウェイ(way)アソシエイティブである。いくつかの例では、EMTLB360のエントリは、任意のサイズであり、すなわち、ページテーブル内のエントリのストレージサイズ(例えば、x86では8バイト)によって制限されない。いくつかの例では、EMTLB360は、オンチップTLB(例えば、TLB330)よりも多くのエントリを含む。いくつかの例では、EMTLB360は、例えば、最長時間未使用(LRU)のエントリのエビクトを可能にするために、置換ポリシーを実装し、置換履歴を保持する。いくつかの例では、EMTLB360は、オフチップメモリ(例えば、DRAM304)内で置換ポリシーの状態を保持する。
いくつかの例では、例えばTLB330からのエビクトに続いて、EMTLBルックアップを実行するために又はEMTLB360を更新するために、読み出し-変更-書き込み(read-modify-write)のメモリ操作がMMU320によって実行される。
本明細書の例では、EMTLBルックアップは、この例ではMMU320の一部であるEMTLB制御ロジック365によって制御される。ただし、様々な実施形態では、EMTLBメモリ360は、専用ハードウェアを使用して、専用ファームウェアを実行する組み込みプロセッサを使用して、メインプロセッサ(例えば、プロセッサ302又はプロセッサ302のコア)で実行されるソフトウェアを使用して、及び/又は、他の任意の好適な方法で実施可能な制御ロジックを使用して実装可能な制御ロジックを用いて維持されることに留意されたい。いくつかのそのような実施形態では、EMTLB制御ロジック365は、EMTLBメモリ367をキャッシュするか否かを決定する。
いくつかの実施形態では、複数のEMTLB制御ロジックが、EMTLBメモリの共通のプール(例えば、EMTLBメモリ367)を共有する。いくつかのそのような実施形態では、あるEMTLB制御ロジックによる共有EMTLBメモリ367の一部に対する読み出し及び/又は書き込みアクセスが、別のEMTLB制御ロジックの読み出し及び/又は書き込みアクセスと競合するシナリオが生じる場合もある。このような場合には、EMTLBキャッシングが使用されないのであれば、いくつかの例では、アトミック操作を使用して、EMTLBメモリの共通プールを共有する複数のEMTLBコントローラ間を調整する。いくつかの実施形態では、1つのEMTLB制御ロジック(例えば、EMTLB制御ロジック365)が読み出しを行い、比較及びスワップ(compare-and-swap)アトミック操作を実行して、エントリを更新する。これらの操作によって、エントリが読み出された後に、他のEMTLB制御ロジックが、エントリに書き込みを行っていないか(すなわち、前の値との比較がパスする)、又は、比較及びスワップアトミック操作が失敗して、EMTLB制御ロジック365が修正動作を行ったか(例えば、比較及びスワップを再度試みるか、エントリを削除する)の何れかであることを確認することができる。これらの場合にEMTLBキャッシングを使用すると、いくつかの例では、このようなキャッシングは、同じEMTLBメモリを共有する全てのEMTLBコントローラ間でコヒーレントである。
いくつかの例では、ソフトウェア又はファームウェア、及び、ソフトウェア若しくはファームウェアを実行するプロセッサ又はコントローラは、特定の操作を使用して、x86ロックプレフィックス命令等のアトミック読み出し/変更/書き込み操作を実行する。このような場合には、EMTLBは、非コヒーレントハードウェアからのメモリ操作ではなく、プロセッサからのキャッシュコヒーレント操作を使用して変更可能である。いくつかの実施形態では、複数のEMTLB制御ロジックの各々が個別のEMTLBメモリにアクセスする。いくつかの実施形態では、このような場合には調整が必要ない。
いくつかの例では、EMTLB360は、新たなエントリがランダムに(又は、疑似ランダムに)書き込まれる方法を選択し、この目的のために置換履歴を維持する必要性を回避する。いくつかの例では、このランダム又は疑似ランダム選択は、方法を選択するために、線形フィードバックシフトレジスタ(LFSR)を使用して行われる。いくつかの例では、EMTLBへのエントリの書き込みをランダム又は擬似ランダムに行うことによって、置換履歴又は状態の維持が不要になる。
いくつかの例では、EMTLB360が直接マッピングされる。いくつかのこのような例では、EMTLBメモリ367に記憶されるエントリのタグは、EMTLB360の何れのエントリが書き込まれるかを決定するのに使用される。これにより、類似のタグが同じ場所にハッシュされる競合の問題が発生し、EMTLB360がある程度スラッシングされる場合がある。場合によっては、例えば、Nウェイアソシエイティブキャッシュ/TLB構造の同じインデックスに全てマッピングするN+1の変換を記憶するための要求が繰り返される場合に、EMTLB360のセットアソシエイティブの実施形態においてもスラッシングが発生することに留意されたい。
図4は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順400を説明するフロー図である。いくつかの実施形態では、手順400は、図3に関して示され、説明されるように、システム300とともに使用可能である。
ステップ410では、MMU(例えば、図3に関して示され、説明されたMMU320)は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む(又は、示す)。
MMUは、ステップ420において、そのTLB(例えば、図3に関して示され、説明されたTLBメモリ330)内でルックアップを実行する。いくつかの例では、TLBメモリは、MMUの一部であってもよいし、MMUと同じコアに存在してもよいし、MMUと同じチップ上に存在してもよい。このTLBメモリは、図4では「オンチップTLB」又はOCTLBと呼ばれる。様々な実施形態では、このTLBは、1つ以上のキャッシュレベルを含む。
条件430においてTLBルックアップがヒットした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかる)、ステップ440において、TLBに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、(例えば、変換がMMU TLBの下位レベルで見つかった場合)この時点でTLBに対する置換アルゴリズムが実行され、キャッシュが更新される。いくつかの例では、アルゴリズムは、TLBの置換状態を更新するが、変換情報を変更しない。
条件430において、TLBルックアップがミスする場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLB内に見つからない)、ステップ450において、MMUは、EMTLB(例えば、図3に関して示され、説明されたEMTLB360)内のルックアップを実行する。
条件460において、EMTLBルックアップがヒットした場合、ステップ440において、EMTLBに記憶された対応する物理アドレスがクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、EMTLBルックアップのヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
いくつかの実施形態では、物理アドレス変換は、この段階でTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、EMTLBメモリからTLBメモリへのエントリの書き込みに基づいて、TLBの置換状態を反映するように更新される(例えば、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが、必要に応じてEMTLBで実行される(例えば、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。
いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、(例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して)EMTLBに書き込まれない。このような置換アルゴリズムの1つの例では、現在の変換がTLBに記憶され、TLBが満杯になると、新たな変換のためのスペースを確保するために、TLBからエントリがエビクトされる。エビクトのために選択されるエントリは、置換アルゴリズムに依存する。選択されたエントリがTLBからエビクトされ、エビクトされたエントリがEMTLBに書き込まれる。EMTLBが満杯の場合には、TLBからエビクトされたエントリのためのスペースを確保するために、EMTLBからエントリがエビクトされる。EMTLBは、TLB構造の最下位レベルであるため、EMTLBからエビクトされた変換は、キャッシュされない。いくつかの実施形態では、最長時間未使用(LRU)のエントリが、EMTLBからエビクトされるために選択される。いくつかの実施形態では、これは、オンチップメモリが、LRUエントリを追跡するためのハードウェアを実装するのに十分な大きさではないTLB用の置換アルゴリズムと異なる。TLB及びEMTLBの置換には、様々な種類の置換アルゴリズムが可能であり、任意の好適な置換アルゴリズムを使用することができる。
条件460において、EMTLBルックアップがミスした場合、ステップ470において、MMUは、(例えば、図3に関して示され、説明されたPTW320を使用して)ページテーブルウォークを実行する。ページテーブルウォークによって取得された対応する物理アドレスが、ステップ440においてクライアントに返される。
いくつかの実施形態では、物理アドレス変換は、この段階でTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが必要に応じてEMTLBで実行される(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
手順400では、EMTLBで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。しかし、TLBルックアップ及びEMTLBルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生し、EMTLBルックアップのオーバーヘッドに追加される。これは、実行の初期段階や、TLB/EMTLBフラッシュの後等のように、変換が殆どキャッシュされていない様々なシナリオで発生する可能性がある。場合によっては、EMTLBの実施形態は、そのようなシナリオの間に性能の低下をもたらすことがある。
図5は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順500を説明するフロー図である。いくつかの実施形態では、手順500は、図3に関して示され、説明されているように、システム300とともに使用可能である。
ステップ510において、MMU(例えば、図3に関して示され、説明されているMMU320)は、仮想アドレスを変換する要求をクライアントから受信する。この要求は、メモリ内の物理アドレスに変換される仮想アドレスを含む(又は、示す)。MMUは、そのような要求を受信すると、ステップ520において、そのTLB(例えば、図3に関して示され、説明されているTLB330、MMU320の一部であるTLB、又は、MMUと同じコアに存在するか同じチップ上に存在するTLB等)内でルックアップを実行する。様々な実施形態では、このTLB(「TLB」、「MMU TLB」又は「オンチップTLB」)は、1つ以上のキャッシュレベルを含む。
条件530において、TLBルックアップがヒットする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかった場合、ステップ540において、TLBに記憶された対応する物理アドレスが、クライアントに返される。いくつかの実施形態では、例えば、変換がMMU TLBの下位レベルで見つかった場合には、この時点でTLBに対する置換アルゴリズムが実行されて、キャッシュが更新される。いくつかの例では、アルゴリズムは、TLBの置換状態を更新するが、変換情報を変更しない。
条件530において、TLBルックアップがミスする、言い換えれば、要求に含まれるか、要求によって示される仮想アドレスに対する変換がMMU TLB内に見つからない場合、ステップ550において、MMUは、EMTLB(例えば、図3に関して示され、説明されているEMTLB360)内でルックアップを実行する。ステップ550においてEMTLBルックアップを開始することに加えて、MMUは、ステップ570において、(例えば、図3に関して示され、説明されているPTW320を使用して)ページテーブルウォークを開始する。
ステップ570の間にページテーブルウォークが進行している間に、ステップ550のEMTLBルックアップがヒットしたかどうかが決定される。条件560において、EMTLBルックアップがヒットした場合、ステップ580においてページテーブルウォークが中止され、ステップ540において、EMTLBに記憶された対応する物理アドレス変換がクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
条件560において、EMTLBルックアップがミスした場合、ステップ590において、EMTLBルックアップが終了し、ステップ570において、ページテーブルウォークが継続される。ステップ540において、ページテーブルウォークによって取得された対応する物理アドレスがクライアントに返される。
いくつかの実施形態では、物理アドレス変換は、ステップ540においてTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、物理アドレス変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、物理アドレス変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、物理アドレス変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが必要に応じてEMTLBで実行される。(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、物理アドレス変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、物理アドレス変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
手順500は、手順400と同様に、EMTLBで変換が見つかった場合に、ページテーブルウォークと、その潜在的にコストのかかるオーバーヘッドと、が回避されるシナリオを説明している。TLBルックアップ及びEMTLBルックアップの両方がミスした場合には、ページテーブルウォークのオーバーヘッドが依然として発生するが、EMTLBルックアップがページテーブルウォークと並行して実行されるので、このオーバーヘッドは、EMTLBルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並列に(例えば、同時に、又は、共に)動作するEMTLBの実施形態は、そのようなシナリオの間に性能を大幅に低下させることがない。例えば、いくつかの実施形態では、ページテーブルウォークのレイテンシは、EMTLBの並列ルックアップのために、単一のEMTLBメモリアクセスによってのみ影響を受ける。
図6は、仮想アドレスから物理アドレスへの変換を実行するための例示的な手順600を説明するフロー図である。いくつかの実施形態では、手順600は、図3に関して示され、説明されているように、システム300とともに使用可能である。
手順600は、仮想化システムにおける仮想アドレスの多層変換に関連する詳細を含む。仮想化システムでは、仮想マシン(VM)に対して、物理メモリに対応する特定の仮想アドレス空間が割り当てられる。この例では、VMに割り当てられた仮想アドレス空間アドレスをゲスト物理アドレス(GPA)と呼び、物理メモリアドレスをシステム物理アドレス(SPA)と呼ぶ。また、VMのアドレス空間には、ドメイン識別(ドメインID)が割り当てられる。SPAを取得するためのGPAの変換を、ホスト層変換(host layer translation)と呼ぶ。
VM内で実行される各アプリケーションには、GPAに対応する仮想アドレス空間が割り当てられる。この例では、アプリケーションに割り当てられた仮想アドレス空間アドレスを、ゲスト仮想アドレス(GVA)と呼ぶ。また、各アプリケーションには、プロセスID(PASID)が割り当てられている。対応するGPAを取得するためのGVAの変換を、ゲスト層変換(guest layer translation)と呼ぶ。したがって、GVAからSPAへの完全な変換は、2つの変換(すなわち、GVAからGPA(ゲスト層)、及び、GPAからSPA(ホスト層))で構成されていると説明することができる。これは、ネストしたページテーブルウォークの例である。この例では、GVAからGPAへの変換を中間変換と呼ぶ場合がある。いくつかの実施形態では、3つ以上のレベルのネスティングが使用されてもよく、完全な変換は、2つ以上の中間変換を含む3つ以上の変換から構成され得ることに留意されたい。
手順600において、MMU TLBは、デバイステーブルエントリ、部分的なGVAからSPAへの変換、及び、最終的なGPAからSPAへの変換を記憶する。ドメインIDは、エントリタイプ毎にMMU TLBに記憶されている。EMTLBは、GVA又はGPA、ドメインID、及び、PASIDによってタグ付けされている。
ステップ605において、MMU(例えば、MMU320)は、物理アドレスに変換される仮想アドレスを含む要求を受信する。この場合、要求は、SPAに変換されるGVA又はGPA(仮想アドレス)を含む。
条件630において、TLBルックアップがヒットした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対する変換が、MMU TLBで見つかる)、ステップ640において、MMU TLBに記憶された対応するSPAが、クライアントに返される。いくつかの実施形態では、例えば、変換がMMU TLBの下位レベルで見つかった場合には、この時点でMMU TLBに対する置換アルゴリズムが実行されて、キャッシュが更新される。
TLBルックアップがミスした場合(すなわち、要求に含まれるか、要求によって示される仮想アドレスに対応するSPAが、MMU TLB内に見つからない)、要求された仮想アドレスのドメインIDがMMU TLB内に記憶されているかどうかが決定される。条件643において、ドメインIDがMMU TLBに記憶されていない場合、ステップ645において、要求された仮想アドレスのドメインIDがメモリからフェッチされ、それ以外の場合には、ステップ650において、MMU TLBから取得される。何れの場合も、ページテーブルウォーク及びEMTLBルックアップの両方が、ステップ655,660において、仮想アドレス及びドメインIDに基づいて実行される。
条件665において、EMTLBがヒットした場合、ページテーブルウォークが中止され、ステップ640において、対応するSPAがクライアントに返される。いくつかの実施形態では、EMTLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がEMTLBにおいて最近使用されたことが書き留められる)。
条件665において、EMTLBルックアップがミスした場合、EMTLBルックアップが単に終了し、ステップ655において、ページテーブルウォークが継続される。
ステップ655のページテーブルウォークは、この例ではステップ660のEMTLBルックアップよりも時間がかかり、ステップ670において、メモリからページディレクトリをフェッチすることと、ステップ675において、フェッチしたページディレクトリを使用して、仮想アドレスに対応するページテーブルエントリをフェッチすることと、を含む。ステップ640において、MMUは、フェッチされたページテーブルエントリから、対応するSPAをクライアントに返す。
いくつかの実施形態では、変換は、ステップ640においてTLBに記憶される。いくつかの実施形態では、TLBの置換状態は、ルックアップヒットを反映するように更新される(すなわち、物理アドレス変換がTLBにおいて最近使用されたことが書き留められる)。いくつかの実施形態では、変換が記憶される前にTLBが満杯になった場合には、置換アルゴリズムも実行されて、変換のためのスペースを確保するために、エビクトされるエントリが特定される。いくつかの実施形態では、変換のためのスペースを確保するためにエントリがTLBからエビクトされる場合に、エビクトされたエントリがEMTLBに書き込まれ、対応する置換アルゴリズムが、必要に応じてEMTLBで実行される(すなわち、必要に応じて、EMTLBからエビクトされるエントリを決定し、TLBからエビクトされてEMTLBに書き込まれたエントリの最新性を更新する)。いくつかの実施形態では、変換は、ページテーブルウォークに続いてTLBに書き込まれると同時にEMTLBに書き込まれ、TLBのエビクトは、例えば、変換がTLBに書き込まれたときに既にEMTLBに書き込まれていると仮定して、EMTLBに書き込まれない。
手順600は、手順400と同様に、EMTLBで変換が見つかった場合に、ページテーブルウォーク(及び、その潜在的にコストのかかるオーバーヘッド)が回避されるシナリオを説明している。TLBルックアップ及びEMTLBルックアップの両方がミスするシナリオでは、ページテーブルウォークのオーバーヘッドが依然として発生するが、EMTLBルックアップは、ページテーブルウォークと並行して実行されるので、このオーバーヘッドは、EMTLBルックアップのオーバーヘッドに追加されない。場合によっては、ページテーブルウォークと並行して動作するEMTLBの実施形態は、このようなシナリオの間に性能を低下させることがない。
状況によっては、TLBの特定の内容を無効にする必要がある。このような状況は、例えば、ソフトウェアがメモリ内のページテーブルに変更を加える場合に発生する(例えば、ページテーブルエントリの場合、有効なビット値の変更、アドレスの変更、属性の変更(例えば、読み出し/書き込みから読み出し専用等))。ソフトウェアは、メモリ内のページテーブルに変更を加える場合があり、この場合、例えば、メモリの割り当てが解除されて、新たなクライアントへの割り当てのためにメモリが解放される。メモリの割り当てが解除される例としては、アプリケーション又はデバイスドライバが、その使用のために割り当てられたメモリの使用を終了し、そのメモリを解放する場合がある。
このような場合、TLBの内容は、無効としてマークされるか、異なる実施形態では、消去又は「ゼロで埋められる(zeroed out)」。EMTLBを含む実施形態では、EMTLBの特定の内容も無効にする必要がある。しかし、そのサイズが大きい及びアクセスのレイテンシが長いために、EMTLBの各エントリをスキャンして無効化ターゲットを特定することができない場合がある。したがって、EMTLBエントリは、ドメインベースの無効化を容易にするために、ドメインIDを含んでもよい。例えば、特定のVMに対応するGPAの範囲を無効にする場合、そのVMのドメインIDに対応するEMTLBのエントリのみをスキャンして無効にする必要がある。
EMTLBエントリを無効にするには、いくつかの異なるオプションが考えられる。いくつかの実施形態では、遅延無効化を含む。遅延無効化は、EMTLBアクセスの前に適用されるフィルタとして実装することができる。フィルタには、処理のためにバッファリングされたが、EMTLBメモリ自体の更新が完了していない無効化に関する情報が含まれている。無効化がEMTLB制御ロジックによって(例えば、MMUを介してソフトウェアから)受信された場合には、これらは、(スペースがあれば)フィルタに記憶され、EMTLBメモリがチェックされる前、又は、場合によっては更新される前であっても、MMUによって「完了」として処理される。無効化を完了したものとして処理する場合、MMUは、ソフトウェアに信号を送り、無効化が完了したことを示す。ソフトウェアは、以前の変換のコピーがTLB/EMTLBから削除されているので、ページテーブルの無効化された部分を適切な方法で変更することができる。例示的な動作では、システム上で実行されているソフトウェアは、特定のページ変換を無効にする信号を(例えば、他の構成要素を介して)MMUに送る。信号がMMUによって受信された後に(例えば、好適な方法で確認応答された後に)、ソフトウェアは、無効化を完了したものとして処理する。これは、この時点以降に、MMUが無効化を完了するか無効化をバッファに記憶し(すなわち、遅延無効化)、これにより、無効化された変換がEMTLBで無効とマークされていなくても、無効化された変換がアクセスされないようにするためである。
変換ルックアップのためのEMTLB制御ロジックへの変換要求がフィルタでヒットした場合、変換が実際にEMTLBメモリに記憶されている場合であっても、その要求はEMTLBミスとして処理される。これは、EMTLBメモリ内の関連するエントリが、EMTLBメモリ内で物理的にエンコードされている場合であっても(すなわち、フィルタ内の無効化バッファがEMTLBメモリを未だ更新していない場合であっても)、無効化されることが意図されていたためである。いくつかの実施形態では、状態機械がEMTLBメモリを検索して、フィルタ内のバッファリングされた何れかの無効化に一致するエントリを探す。いくつかの実施形態では、これは、変換要求の待機及び受信と並行して行われる。フィルタにバッファリングされた何れかのエントリが無効化基準に一致する場合、対応するエントリがEMTLBメモリからエビクトされる。無効化に一致する可能性のある全てのエントリがスキャンされると、処理された無効化はフィルタから削除される。
フィルタが満杯の場合には、無効化を直ちに完了することができない。この場合、いくつかの実施形態では、無効化は、フィルタ内のスペースが解放されるのを待つか、(例えば、EMTLBロジック内の)別のスキャンロジックがEMTLBメモリをスキャンして、無効化基準に一致するエントリを探し出し、それらをエビクトする。スキャンが完了した場合に、EMTLBの観点からは無効化が完了したものと見なされる。
いくつかの実施形態は、無効化のための「メモリ書き込み/消去」スキームを含む。メモリ書き込み/消去スキームでは、スキャンロジックは、EMTLBメモリの内容を読み出さずに、無効にするエントリを決定する。むしろ、スキャンロジックは、無効化基準に一致する潜在的なエントリの全てを無効にするように、EMTLBメモリに単に書き込みを行う。このスキームでは、1つ以上のメモリ書き込みが必要になる場合がある。
いくつかの実施形態は、無効化のための「読み出し-変更-書き込み」スキームを含む。読み出し-変更-書き込みスキームでは、スキャンロジックが、EMTLBの潜在的なエントリを読み出して、無効化基準に一致するエントリを判別し、基準に一致するエントリのみを上書きして無効化する。
本明細書における開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素を特定の組み合わせで上述したが、特徴又は要素の各々は、他の特徴及び要素を伴わずに単独で、又は、他の特徴及び要素を伴うか伴わずに様々な組み合わせで使用することができる。
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサは、例えば、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタルシグナルプロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアと協働する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他の任意のタイプの集積回路(IC)、及び/又は、状態機械を含む。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令の結果と、ネットリストを含む他の中間データ(コンピュータ可読媒体に記憶することができる命令)と、を使用して製造プロセスを構成することによって、製造することができる。このような処理の結果は、本開示の特徴を実装するプロセッサを製造するための半導体製造プロセスで後に使用されるマスクワークとすることができる。
本明細書で提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによって実行されるために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実装することができる。非一時的なコンピュータ可読記憶媒体の例は、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、CD-ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体を含む。

Claims (32)

  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のコンピューティングデバイス。
JP2021512943A 2018-09-25 2019-07-30 外部メモリベースのトランスレーションルックアサイドバッファ Active JP7443344B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/141,603 2018-09-25
US16/141,603 US11243891B2 (en) 2018-09-25 2018-09-25 External memory based translation lookaside buffer
PCT/IB2019/056498 WO2020065418A1 (en) 2018-09-25 2019-07-30 External memory based translation lookaside buffer

Publications (2)

Publication Number Publication Date
JP2022501705A JP2022501705A (ja) 2022-01-06
JP7443344B2 true JP7443344B2 (ja) 2024-03-05

Family

ID=69883411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021512943A Active JP7443344B2 (ja) 2018-09-25 2019-07-30 外部メモリベースのトランスレーションルックアサイドバッファ

Country Status (6)

Country Link
US (1) US11243891B2 (ja)
EP (1) EP3857388B1 (ja)
JP (1) JP7443344B2 (ja)
KR (1) KR20210058877A (ja)
CN (1) CN112753024B (ja)
WO (1) WO2020065418A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11210233B2 (en) * 2020-01-07 2021-12-28 International Business Machines Corporation System and method for handling address translation invalidations using an address translation invalidation probe
US11422947B2 (en) * 2020-08-12 2022-08-23 International Business Machines Corporation Determining page size via page table cache
US11714766B2 (en) * 2020-12-29 2023-08-01 Ati Technologies Ulc Address translation services buffer
CN113612863B (zh) * 2021-07-12 2022-07-26 武汉理工大学 一种gpu中地址转换优化方法、系统、设备及存储介质
CN114153909A (zh) * 2021-11-26 2022-03-08 北京人大金仓信息技术股份有限公司 一种基于Velocity模板引擎的数据库表结构翻译方法和装置
US20230185731A1 (en) * 2021-12-13 2023-06-15 Microchip Technology Incorporated Verification of off-chip computer-readable instructions and related systems, methods, and apparatuses
CN113934655B (zh) * 2021-12-17 2022-03-11 北京微核芯科技有限公司 解决高速缓冲存储器地址二义性问题的方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149490A (ja) 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2009512943A (ja) 2005-10-20 2009-03-26 クゥアルコム・インコーポレイテッド 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2010170266A (ja) 2009-01-21 2010-08-05 Toshiba Corp 半導体集積回路及びアドレス変換方法
JP2013500525A (ja) 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減
US20140052917A1 (en) 2012-05-10 2014-02-20 Oracle International Corporation Using a shared last-level tlb to reduce address-translation latency
JP2016504686A (ja) 2012-12-21 2016-02-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated アドレス変換プロービングを用いる処理デバイスおよび方法
WO2018100363A1 (en) 2016-11-29 2018-06-07 Arm Limited Memory address translation

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60254345A (ja) * 1984-05-31 1985-12-16 Fujitsu Ltd アドレス変換方式
JPH04357542A (ja) * 1991-02-25 1992-12-10 Matsushita Electric Ind Co Ltd アドレス変換装置
EP1182568A3 (en) * 2000-08-21 2004-07-21 Texas Instruments Incorporated TLB operation based on task-id
US6925547B2 (en) * 2000-12-14 2005-08-02 Silicon Graphics, Inc. Remote address translation in a multiprocessor system
GB0415850D0 (en) * 2004-07-15 2004-08-18 Imagination Tech Ltd Memory management system
US20060224815A1 (en) 2005-03-30 2006-10-05 Koichi Yamada Virtualizing memory management unit resources
US7426626B2 (en) * 2005-08-23 2008-09-16 Qualcomm Incorporated TLB lock indicator
US7636800B2 (en) * 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8312468B2 (en) * 2009-06-09 2012-11-13 Open Kernel Labs Methods and apparatus for fast context switching in a virtualized system
CN102163320B (zh) * 2011-04-27 2012-10-03 福州瑞芯微电子有限公司 一种图像处理专用可配置的mmu电路
US9921967B2 (en) * 2011-07-26 2018-03-20 Intel Corporation Multi-core shared page miss handler
US8893267B1 (en) * 2011-08-17 2014-11-18 Applied Micro Circuits Corporation System and method for partitioning resources in a system-on-chip (SoC)
KR102002900B1 (ko) * 2013-01-07 2019-07-23 삼성전자 주식회사 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 메모리 주소 변환 방법
CN104239236B (zh) * 2013-06-17 2018-02-13 华为技术有限公司 旁路转换缓冲缺失的处理方法及旁路转换缓冲
CN104239237B (zh) * 2013-06-20 2017-07-14 华为技术有限公司 一种tlb管理方法及装置
EP2840504A1 (en) * 2013-08-23 2015-02-25 ST-Ericsson SA Enhanced pre-fetch in a memory management system
US10210096B2 (en) * 2013-10-01 2019-02-19 Ampere Computing Llc Multi-stage address translation for a computing device
US10114760B2 (en) * 2014-01-14 2018-10-30 Nvidia Corporation Method and system for implementing multi-stage translation of virtual addresses
US9697137B2 (en) * 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9858201B2 (en) * 2015-02-20 2018-01-02 Qualcomm Incorporated Selective translation lookaside buffer search and page fault
US9715459B2 (en) * 2015-12-22 2017-07-25 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US10223279B2 (en) * 2016-06-27 2019-03-05 Cavium, Llc Managing virtual-address caches for multiple memory page sizes
US20180067866A1 (en) * 2016-09-08 2018-03-08 Intel Corporation Translate on virtual machine entry
US10296465B2 (en) * 2016-11-29 2019-05-21 Board Of Regents, The University Of Texas System Processor using a level 3 translation lookaside buffer implemented in off-chip or die-stacked dynamic random-access memory
US10417140B2 (en) 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149490A (ja) 2000-11-06 2002-05-24 Fujitsu Ltd マイクロプロセッサ及びマイクロプロセッサのアドレス変換方法
JP2009512943A (ja) 2005-10-20 2009-03-26 クゥアルコム・インコーポレイテッド 多階層の変換索引緩衝機構(TLBs)フィールドの更新
JP2010170266A (ja) 2009-01-21 2010-08-05 Toshiba Corp 半導体集積回路及びアドレス変換方法
JP2013500525A (ja) 2009-07-24 2013-01-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減
US20140052917A1 (en) 2012-05-10 2014-02-20 Oracle International Corporation Using a shared last-level tlb to reduce address-translation latency
JP2016504686A (ja) 2012-12-21 2016-02-12 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated アドレス変換プロービングを用いる処理デバイスおよび方法
WO2018100363A1 (en) 2016-11-29 2018-06-07 Arm Limited Memory address translation

Also Published As

Publication number Publication date
CN112753024A (zh) 2021-05-04
EP3857388A1 (en) 2021-08-04
KR20210058877A (ko) 2021-05-24
JP2022501705A (ja) 2022-01-06
EP3857388B1 (en) 2024-01-10
US20200097413A1 (en) 2020-03-26
US11243891B2 (en) 2022-02-08
CN112753024B (zh) 2023-11-03
WO2020065418A1 (en) 2020-04-02
EP3857388A4 (en) 2022-07-06

Similar Documents

Publication Publication Date Title
JP7443344B2 (ja) 外部メモリベースのトランスレーションルックアサイドバッファ
KR102448124B1 (ko) 가상 주소들을 사용하여 액세스된 캐시
US11853226B2 (en) Address translation cache with use of page size information to select an invalidation lookup mode, or use of leaf-and-intermediate exclusive range-specifying invalidation request, or use of invalidation request specifying single address and page size information
US9251095B2 (en) Providing metadata in a translation lookaside buffer (TLB)
US6647466B2 (en) Method and apparatus for adaptively bypassing one or more levels of a cache hierarchy
JP6831788B2 (ja) キャッシュ保守命令
US7793070B2 (en) Processing system implementing multiple page size memory organization with multiple translation lookaside buffers having differing characteristics
US20150089150A1 (en) Translation Bypass In Multi-Stage Address Translation
US10019377B2 (en) Managing cache coherence using information in a page table
US9058284B1 (en) Method and apparatus for performing table lookup
JP7249272B2 (ja) キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
US20040117587A1 (en) Hardware managed virtual-to-physical address translation mechanism
US20160140042A1 (en) Instruction cache translation management
WO2018231898A1 (en) Cache devices with configurable access policies and control methods thereof
US11392508B2 (en) Lightweight address translation for page migration and duplication
KR102478766B1 (ko) 디스크립터 링 관리
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US20110167223A1 (en) Buffer memory device, memory system, and data reading method
US20040117591A1 (en) Data processing system having no system memory
US20040117590A1 (en) Aliasing support for a data processing system having no system memory
JP2022548219A (ja) 変換ルックアサイドバッファ無効化

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230718

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231226

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240110

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240123

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240221

R150 Certificate of patent or registration of utility model

Ref document number: 7443344

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150