JP2020514859A - 変換索引バッファにおける構成可能なスキューアソシエイティビティ - Google Patents

変換索引バッファにおける構成可能なスキューアソシエイティビティ Download PDF

Info

Publication number
JP2020514859A
JP2020514859A JP2019533456A JP2019533456A JP2020514859A JP 2020514859 A JP2020514859 A JP 2020514859A JP 2019533456 A JP2019533456 A JP 2019533456A JP 2019533456 A JP2019533456 A JP 2019533456A JP 2020514859 A JP2020514859 A JP 2020514859A
Authority
JP
Japan
Prior art keywords
ways
subset
tlb
skew
configuration
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.)
Granted
Application number
JP2019533456A
Other languages
English (en)
Other versions
JP7449694B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2020514859A publication Critical patent/JP2020514859A/ja
Application granted granted Critical
Publication of JP7449694B2 publication Critical patent/JP7449694B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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]
    • 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/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/303In peripheral interface, e.g. I/O adapter or channel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • 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/652Page size 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/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

Abstract

スキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法、デバイス及びシステムを説明する。仮想アドレス及び構成指標は、受信機回路を用いて受信される。TLBヒットが発生した場合、仮想アドレスに対応する物理アドレスが出力される。TLBの複数のウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。TLBミスが発生した場合、仮想アドレスに対応する物理アドレスがページテーブルから取得され、物理アドレスの少なくとも一部は、構成指示に基づく置換ポリシーに従って決定された、TLBの複数のウェイのサブセットの最長未使用時間ウェイにインストールされる。【選択図】図3

Description

(関連出願の相互参照)
本願は、2016年12月23日に出願された米国特許出願第15/389,955号の利益を主張するものであり、この内容は参照により本明細書に完全に記載されているものとして援用される。
変換索引バッファ(TLB)は、仮想アドレスから物理アドレスへの変換及びオペレーティングシステム(OS)のページ粒度メタデータ(例えば、読み出し/書き込み権限)をキャッシュするためにコンピューティングシステムで使用されるハードウェア構造である。TLBは、全てのメモリアクセスで検索されるため、コンピューティングシステムのパフォーマンススケーラビリティにとって重要である。TLBは、メモリアクセス毎にアクセスされるため、クリティカルタイミングパスにあり、各プロセッサコア又はアクセラレータは、独自のTLBを有することができる。
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。 さらなる詳細を示す図1のデバイスのブロック図である。 図1のデバイスに実装可能な、例示的な構成可能なスキューアソシエイティブ(skewed associative)TLBのブロック図である。 図3の構成可能なスキューアソシエイティブTLB内の仮想アドレスを検索する例示的な方法を示すフロー図である。 図3の構成可能なスキューアソシエイティブTLBにおけるTLBミスを処理する例示的な方法を示すフロー図である。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファを用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。仮想アドレス及び構成指標(configuration indication)は、受信機回路を用いて受信される。TLBヒットが発生した場合に、仮想アドレスに対応する物理アドレスが出力される。TLBの複数のウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数(skewing function)によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、基本入出力システム(BIOS)、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、TLBヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を含むアクセラレーテッド処理デバイス(APD)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、TLBヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。方法は、受信機回路を用いて、仮想アドレス及び構成指標を受信することと、TLBミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得することであって、物理アドレスの少なくとも一部は、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールされている、ことと、を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信し、TLBミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、物理アドレスの少なくとも一部を、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールするように構成された置換回路と、を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を含むアクセラレーテッド処理デバイス(APD)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、を含む。また、入力回路は、TLBミスが発生した場合に、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成されている。また、TLBは、物理アドレスの少なくとも一部を、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールするように構成された置換回路を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力され、仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
図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は、プロセッサ102による実行のために、1つ以上の制御論理モジュールをシステムメモリ104内に保有する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な態様を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行されている他のソフトウェア用のハードウェアへのインタフェースを提供する。カーネルモードドライバ122は、例えば、APD116の様々な機能にアクセスするために、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)に対してアプリケーションプログラミングインタフェース(API)を提供することによって、APD116の動作を制御する。また、カーネルモードドライバ122は、APD116の処理コンポーネント(例えば、以下でさらに詳細に説明するSIMDユニット138等)による実行のためにプログラムをコンパイルするジャストインタイムコンパイラを含む。
APD116は、グラフィックス処理や並列処理に適した非グラフィックス処理等の、選択された機能のためのコマンド及びプログラムを実行する。APD116は、ピクセル演算、幾何学的計算等のグラフィックスパイプライン操作を実行し、プロセッサ102から受信したコマンドに基づいて画像をディスプレイデバイス118にレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する処理等のように、グラフィックス処理に直接関係しない計算処理動作を実行する。
APD116は、SIMDパラダイムに従って、プロセッサ102の要求に応じて並列に動作を実行するように構成された1つ以上のSIMDユニット138を有する計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータを用いて当該プログラムを実行することができるパラダイムである。一例では、各SIMDユニット138は、16個のレーンを含んでおり、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータを用いて当該命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、レーンを予測によってオフにすることができる。予測を使用して、分岐制御フローを有するプログラムを実行することもできる。より具体的には、制御フローが個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
計算ユニット132における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列に実行されるプログラムの単一のインスタンス化(instantiation)を表す。ワークアイテムは、単一のSIMDユニット138上で「ウェーブフロント」として同時に実行することができる。複数のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれてもおい。ワークグループを構成するウェーブフロントの各々を実行することによって、ワークグループを実行することができる。ウェーブフロントは、単一のSIMDユニット138上で順次実行されてもよいし、異なるSIMDユニット138上で部分的に又は完全に並列に実行されてもよい。ウェーブフロントは、単一のSIMDユニット138上で同時に実行可能なワークアイテムの最大の集合と考えることができる。したがって、プロセッサ102から受信したコマンドが、特定のプログラムが単一のSIMDユニット138上で同時に実行できない程度に並列化されることを示す場合、当該プログラムは、2つ以上のSIMDユニット138で並列化され、又は、同じSIMDユニット138上で直列化(必要に応じて、並列化及び直列化の両方が行われる)されたウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138で様々なウェーブフロントをスケジュールすることに関連する動作を実行するように構成されている。
計算ユニット132によってもたらされる並列性は、例えば、ピクセル値計算、頂点変換及び他のグラフィックス処理等のグラフィック関連動作に適している。したがって、プロセッサ102からグラフィックス処理コマンドを受信するグラフィックス処理パイプライン134は、並列実行のために計算タスクを計算ユニット132に提供することができる。
また、計算ユニット132は、グラフィックスに関係しないか、グラフィックス処理パイプライン134の「通常」動作(例えば、グラフィックス処理パイプライン134の動作のために実行される処理を補足するのに実行されるカスタム操作)の一部として実行されない計算タスクを実行するために使用される。プロセッサ102で実行中のアプリケーション126又は他のソフトウェアは、係る計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
プロセッサ102は、仮想メモリをサポートすることができ、メモリ104は、例えば、仮想ページ番号をメモリ内の物理ページ番号にマッピングするページテーブルエントリを有するページテーブルを含む。プロセッサ102は、最近使用された仮想アドレスのページテーブルから物理アドレスを取得するためにメモリ104にアクセスする必要がないように、ページテーブルエントリをキャッシュする変換索引バッファ(TLB)を含むか、又は、当該バッファと動作可能に通信する。
アプリケーションの仮想メモリの動作に応じて、仮想ページのサイズが異なるとパフォーマンスも異なる場合がある。例えば、小さいページサイズを使用すると、未使用のデータ又は命令に対して物理メモリスペースを割り当てることを回避することができ、大きいページサイズを使用すると、大量のデータ及び/又は命令に影響を与える単一ページフォルトが発生する可能性がある。したがって、いくつかのアーキテクチャは、複数の仮想ページサイズをサポートする。
セットアソシエイティブTLBは、単一プロセスで複数のページサイズを効率的にサポートすることができない。したがって、複数のページサイズの使用をサポートするアーキテクチャは、フルアソシエイティブ(fully associative)TLBを実装するか、ページサイズ毎に個別のTLBを使用するかの何れかを実装している。フルアソシエイティブTLBは、少数のエントリに制限されており、異なるページサイズに対して個別の部分アソシエイティブTLBを使用するには、システムの使用目的に合わせたページサイズの分布に関する知識が必要である。これは、実際の使用が、予測されたページサイズの分布と異なる場合に、非効率になる可能性がある。
スキューアソシエイティブTLBは、TLBのn個のウェイの一部又は全てにおいて異なるスキュー関数によって入力インデックスが変更される、nウェイセットアソシエイティブTLBの変形である。また、スキューアソシエイティブTLBは、複数のページサイズをサポートするために使用することができる。このような実装では、特定のページサイズをサポートするために、スキューアソシエイティブTLBの固定数のウェイが使用される。例えば、12個のウェイを有するスキューアソシエイティブTLBでは、任意のTLB検索に対して、8個のウェイが、4キロバイトサイズのページを保持するために使用され、2個のウェイが、32キロバイトサイズのページを保持するために使用され、2つのウェイが、2メガバイトサイズのページを保持するために使用される。何れのウェイが何れのページサイズを保持するかというマッピングは固定されておらず、仮想アドレスのビットによって決定される。
小さなページを頻繁に使用するワークロード等の一部のワークロードでは、1つのページサイズのウェイ構成が適切に機能することがある(例えば、32キロバイト及び2メガバイトサイズのページ専用のウェイの数を少なくし、4キロバイトサイズのページ専用のウェイの数を多くする)。本明細書では、小さなページを処理するために、より多くのウェイが割り当てられている。大きなページを頻繁に使用するワークロード等の他のワークロードでは、別のページサイズのウェイ構成が適切に機能することがある(例えば、32キロバイト及び2メガバイトサイズのページ専用のウェイの数を多くし、4キロバイトサイズのページ専用のウェイの数を少なくする)。
典型的なスキューアソシエイティブTLBは、構成不可能であり、全てのワークロードに対して最適化することができない。これは、このようなTLBの全てのウェイは、全てのページサイズを保持することができるが、このようなTLBは、ページサイズの特定の分布に合わせて調整されるからである。非スキューアソシエイティブTLBは、全てのウェイで全てのページサイズを保持できるわけではなく(したがって、一部のワークロードで使用されていないページサイズのストレージスペースを無駄にし、非効率的である)、さらに、特定のページサイズの分布に合わせて調整されるので、パフォーマンスがさらに低下する可能性がある。
図3は、例示的な構成可能なスキューアソシエイティブTLB300のブロック図である。スキューアソシエイティブTLB300の図は、わかりやすくするために簡略化されている。スキューアソシエイティブTLBは、図示していない様々なコンポーネント(例えば、権原、追加のタグ付けビット、フラッシュ等に関する)を含むことができることに留意されたい。この例では、構成可能なスキューアソシエイティブTLB300がデバイス100に実装されているが、他の実装も可能であることが理解されよう。例えば、様々な実施形態では、TLB300は、プロセッサ102のコンポーネントとして、メモリ104のコンポーネントとして、又は、プロセッサ102及びメモリ104と動作可能に接続されたデバイス(例えば、メモリ管理ユニット(MMU)等)で実装される。TLB300の他の様々な実施形態も、デバイス100のコンテキストの内外で可能である。
この例では、TLB300は、連想(content-addressable)メモリ(CAM)として実装され、検索キーは、(仮想メモリアドレスからの)仮想ページ番号であり、検索結果は、(例えば、メモリ104の)物理メモリアドレスの物理ページ番号である。TLB300は、16個のウェイ305(わかりやすくするために、ウェイ0,1,15に対応する305’,305’’,305’’’の3つのみを示し、全てのウェイをまとめて305と呼ぶ)を含む。ウェイ305の各々は128個のエントリを含み、各エントリは48ビット幅である。ウェイ305の各エントリは、タグ及びペイロードを含み、タグは、仮想ページ番号との比較によるインデックス付けに使用され、ペイロードは、対応する物理ページ番号(又は、対応する物理ページ番号を含む)である。仮想アドレスのページオフセットは、物理アドレスのページオフセットと同一とすることができ、オフセットを物理ページ番号と組み合わせることによって物理メモリアドレスを構築するために使用することができる。
TLB300は、3つの異なる仮想ページサイズ(4キロバイト(4K)、32キロバイト(32K)及び2メガバイト(2M))をサポートする。TLB300における任意の検索に対して、各ウェイは、異なる仮想ページサイズのうち1つのみに関して定義される変換を保持し、ウェイ305間のサポートされるページサイズの分布が構成可能である。例えば、8−2−2構成では、8個のウェイ305が4Kページをサポートするように構成されており、2個のウェイ305が32Kページをサポートするように構成されており、2個のウェイ305が2Mページをサポートするように構成されている。対照的に、6−3−3構成は、4Kページをサポートするように構成された6個のウェイ305と、32Kページをサポートするように構成された3個のウェイ305と、2Mページをサポートするように構成された3個のウェイ305と、を有する。ウェイの数、ウェイエントリの数及び幅、サポートされる仮想ページの数及びサイズ、並びに、ウェイ構成の数及び分布は全て例示であり、これらのコンポーネントの任意の適切な構成を使用することができる。これは、任意の図に関して本明細書で説明される全ての実施形態に適用される。
サポートされているページサイズをウェイ305毎に構成する(すなわち、この例では、8−2−2と6−3−3との間で選択する)ために、構成ビット310が、各ウェイのスキュー関数に入力される。いくつかの実施形態では、構成ビット310は、サポートされている各ページサイズに割り当てられたウェイの数の比率を選択する。各ウェイは、そのウェイに対してスキュー関数を実施するそれ自体のスキュー関数ブロック(スキュー関数ブロック315’,315’’,315’’’のみが示されており、全てのスキュー関数ブロックをまとめて315と呼ぶ)を含むか、それ自体に動作可能に接続されている。各スキュー関数ブロック315には、同じ構成ビット310が入力される。構成ビット310は、任意の適切な方法で静的又は動的に設定することができる。例えば、構成ビット310は、ヒューズを切るか、TLB300(又は、TLBが実装されているか、TLB300が動作可能に接続されているプロセッサの他のコンポーネント)内の不揮発性メモリレジスタを設定することによって設定されてもよいし、TLB300をコンポーネントとするコンピュータシステムの基本入出力システム(BIOS)に設定されてもよい。また、構成ビット310は、代替として、オペレーティングシステムによって設定されてもよいし、そうでなければ、TLB300が実装されるかTLBが動作可能に接続されるプロセッサのTLB300又は他のコンポーネントのレジスタに設定されてもよい。
仮想アドレスを物理アドレスに変換するために、仮想アドレス310がTLB300に入力される。TLB300がレベル2(L2)TLBである場合、仮想アドレス310は、例えば、L1 TLBミスの後にレベル1(L1)TLBから入力され得るが、他の適切な実施形態も可能である。仮想アドレス310は、仮想ページ番号と、仮想ページへのオフセットと、を含む。この例では、仮想アドレス310は48ビット幅であるが、他の実施形態では、任意の適切な幅を使用することができる。図3では、48ビットの仮想アドレス310は、[47:0]として表されている。48ビットのサブセットは仮想ページ番号に対応し、48ビットの別のサブセットはオフセットに対応する。何れのビットが使用されるかは、仮想アドレス305に関連する仮想ページサイズによって異なる。
仮想アドレス305が4Kページを反映している場合、ビット[47:12]はページ番号であり、ビット[11:0]はページへのオフセットである。仮想アドレス305が32Kページを反映している場合、ビット[47:15]はページ番号であり、ビット[14:0]はページへのオフセットである。仮想アドレス305が2Mページを反映している場合、ビット[47:21]はページ番号であり、ビット[20:0]はページへのオフセットである。3つのページサイズ全てに共通の最下位ビットは[21]である。したがって、ビット[22:21]は、[22:21]のその値について何れのページサイズを保持するために何れのウェイが使用されるかを決定するために使用され、各ウェイのスキュー関数ブロック315に入力される。範囲内で[21]より下のビットは、この目的のために選択されない。これは、2Mページの場合には、これらのビットは、ページ番号ではなくオフセットの一部であり、(オフセットは物理アドレスに渡されるので)変換ハードウェアによって処理されないからである。ただし、いくつかの実施形態では、[21]より上の他のビットが使用される場合がある。さらに、2つ又は3つよりも多いページサイズのみをサポートするウェイ構成が実装されている場合、1ビット又は2ビットを超えるビットをインデックス付けに使用することができる。
スキュー関数ブロック315の各々は、仮想アドレス310の構成ビット310及びビット[22:21]を入力し、スキュー関数320を入力に適用することによって生成された値を出力する。ウェイ毎のスキュー関数320(スキュー関数320’,320’’,320’’’のみが示されており、全てのスキュー関数をまとめて320と呼ぶ)は、異なっていてもよい。表1及び表2は、構成ビット310(8−2−2構成と6−3−3構成の何れかを選択)及び仮想アドレス310のビット[22:21]に基づいて、16個のウェイ305のうち何れのウェイが、異なるページサイズの物理アドレスを記憶するのに使用されるかの例を列挙している。
Figure 2020514859

Figure 2020514859
各ウェイ305は、インデックスマルチプレクサ(325’,325’’,325’’’が示されており、全てのインデックスマルチプレクサをまとめて325と呼ぶ)によってインデックス付けされている。各インデックスマルチプレクサ325は、入力仮想アドレス310の可能なページサイズ毎に1つずつ、3つの可能なインデックスを入力する。インデックスは、仮想アドレス310の仮想ページ番号部分のビット範囲である。ビットの範囲は、ページサイズ毎に異なる。この例では、インデックスマルチプレクサ325は、仮想アドレス305が4Kページサイズを反映する場合には、仮想アドレス310のビット[18:12]を入力し、仮想アドレス305が32Kページサイズを反映する場合には、仮想アドレス310のビット[23,20:15]を入力し、仮想アドレス305が2Mのページサイズを反映する場合には、仮想アドレス310のビット[29:23]を入力する。各マルチプレクサ325は、各々のスキュー関数320に基づいて、3つの可能なインデックス(330’,330’’,330’’’が示されており、全てのインデックスをまとめて330と呼ぶ)のうち何れのインデックスを各ウェイに使用するかを選択する。
各ウェイ305は、マルチプレクサ325によって選択されたインデックスに対応するエントリのペイロードを読み出しデータ(読み出しデータ335’,335’’,335’’’が示されており、全ての読み出しデータをまとめて335と呼ぶ)として出力する。読み出しデータ335レジスタの各々は、比較回路340によってチェックされ、TLBヒットが発生したかどうか(すなわち、1つのウェイが検索アドレスと一致する変換を有するかどうか)を判別する。比較回路340は、エントリに保持された仮想アドレスタグが検索仮想アドレスと一致するかどうか、及び、(例えば、ページサイズがペイロードのページサイズフィールドによって示される場合)読み出しデータ335として読み出されたエントリのページサイズが、スキュー関数によって決定されたページサイズと一致するかどうかを判別することによって、TLBヒットが生じたかどうかを判別する。ヒットした場合は、TLBヒットとなった読み出しデータ335が選択され、仮想アドレス310に対応する物理アドレス345がTLBから出力される。
図4は、図3の構成可能なスキューアソシエイティブTLB300を用いて、仮想アドレスを物理メモリアドレスに変換する例示的な方法400を示すフロー図である。
仮想アドレス310がTLBに入力されるという条件405において、インデックスマルチプレクサ325は、ステップ410において、仮想アドレス310のビット(この例では、ビット[22:21])のサブセットに基づいて、仮想アドレス310からのビットを使用して、ページサイズ毎に1つずつ、計3つの可能なインデックスのうち1つのインデックスを入力するように設定される。
ビットの範囲は、ページサイズ毎に異なる。ビット[22:21]が、仮想アドレス310が第1ページサイズ(この例では、4K)に対応することを示す条件415において、インデックスマルチプレクサ325は、ステップ420において、仮想アドレス310のビットの第1サブセット(この例では、ビット[18:12])を入力する。ビット[22:21]が、仮想アドレス310が第2ページサイズ(この例では、32K)に対応することを示す条件425において、インデックスマルチプレクサ325は、ステップ430において、仮想アドレス310のビットの第2サブセット(この例では、ビット[23,20:15])を入力する。ビット[22:21]が、仮想アドレス310が第3ページサイズ(この例では、2M)に対応することを示す条件435において、インデックスマルチプレクサ325は、ステップ440において、仮想アドレス310のビットの第3サブセット(この例では、ビット[29:23])を入力する。
インデックスマルチプレクサ325が、仮想アドレス310の適切なビットを入力した後、各マルチプレクサ325は、各々のスキュー関数320に基づいて入力を1つ選択し、各ウェイ305に対するインデックス330を生成する(ステップ445)。何れかのインデックス330が何れかのウェイ305においてエントリとヒットした場合、対応する物理ページ番号が各々の読み出しデータ335レジスタに出力される(ステップ450)。結果がTLBミスであるという条件455において、TLB300は、ステップ460においてページウォークを開始する。結果がTLBヒットであれば、読み出しデータ335として出力された物理アドレス及び仮想アドレス310のページオフセットに基づいて、仮想アドレス310に対応する物理アドレス345がTLBから出力される(ステップ465)。
TLBミスが発生した場合、TLB300は、ページテーブルをウォークする等の既知の方法を介して、対応する物理アドレス345を取得し、置換ポリシーに従って、取得した物理アドレス345を1つのウェイ305にインストールする。使用される置換ポリシーは、ウェイ305間でサポートされるページサイズの分布に依存することができる。例えば、4Kページが8ウェイアソシエイティブ構成(例えば、上述した8−2−2構成)で記憶されているか、又は、6ウェイアソシエイティブ構成(例えば、上述した6−3−3構成)で記憶されているかに応じて、4Kページに対して異なる置換ポリシーを使用することができる。
一例では、標準的な擬似最長未使用時間(擬似LRU、すなわちtree−LRU)方式を実施して、インデックス330に対応するエントリのうち、8ウェイアソシエイティブ構成の4Kページについて最長未使用時間のエントリを含むウェイ305を判別する。6ウェイアソシエイティブ構成の4Kページに対するLRUエントリを判別するために、ハイブリッドLRU方式を実施することができる。何れのLRU方式を使用するかは、構成ビット310を使用して選択することができる。
TLB300の各ラインは、当該ラインがどのくらい最近にアクセスされたかを追跡するための7ビット(LRUビットと呼ぶことができる)の関連シーケンスを有する。7つのLRUビットは、全てのウェイで同じインデックスに適用されるため、この例では、LRUビットのグループが128個存在する。LRUビットの各セットは、TLB300の各々のインデックスに対して何れのウェイが最長未使用時間ウェイであるかを示す。LRUビットに適用するのに適切なLRU方式を選択することによって、同じLRUビットを使用して、8−2−2構成又は6−3−3構成の最長未使用時間ウェイを追跡することができる。
図5は、TLBミスを処理する例示的な方法500を示すフロー図である。TLBミスが発生したことを条件510として(例えば、図4のステップ455のように)、TLB300は、ステップ520において、既知の方法に従ってページウォークを開始して、物理アドレスを取得する。構成ビット310が、16個のウェイ305のうち8個のウェイが4Kページをサポートするように構成されていることを示す(すなわち、上述した8−2−2構成)ことを条件530として、ステップ540において、4Kページ用に構成されたウェイ305のうち最長未使用時間ウェイが、LRUロジックを使用して判別される。いくつかの実施形態では、LRUロジックは、擬似LRU(すなわち、「tree」LRU)ロジックを含む。構成ビット310が、16個のウェイ305のうち6個のウェイが4Kページをサポートするように構成されていることを示す(すなわち、上述した6−3−3構成)ことを条件530として、ステップ550において、4Kページ用に構成されたウェイ305のうち最長未使用時間ウェイが、LRUロジックを使用して判別される。いくつかの実施形態では、ステップ550のLRUロジックは、「tree」LRUロジックと「true」LRUロジックの両方を含むハイブリッド方式に従う。何れの場合でも、ページウォーク中に取得された物理アドレスは、ステップ540又はステップ550の何れかで判別されるように、4Kページ用に構成されたウェイ305のうち最長未使用時間ウェイにインストールされる(ステップ560)。対応する手順は、32Kと2Mのページサイズにも使用される。
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素を特定の組み合わせで上記のように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
提供された方法には、汎用コンピュータ、プロセッサ又はプロセッサコアにおける実施が含まれる。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
本明細書で提供される方法又はフロー図は、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、ROM、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD−ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。

Claims (26)

  1. スキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
    受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
    第1ページサイズを保持するようにTLBの複数のウェイの第1サブセットを構成することであって、前記第1サブセットは、前記構成指標に基づくいくつかのウェイを含む、ことと、
    TLBヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力することと、を含む、
    方法。
  2. 前記複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されており、前記第2サブセットは、前記構成指標に基づくいくつかのウェイを含む、
    請求項1の方法。
  3. 前記第2サブセットに含まれるウェイの数に対する前記第1サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
    請求項2の方法。
  4. 前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
    請求項1の方法。
  5. 前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
    請求項4の方法。
  6. 前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム又は構成レジスタから受信される、
    請求項1の方法。
  7. 仮想アドレス及び構成指標を受信するように構成された入力回路と、
    複数のウェイであって、前記複数のウェイの第1サブセットは、第1ページサイズを保持するように構成されており、前記第1サブセットは、前記構成指標に基づくいくつかのウェイを含む、複数のウェイと、
    TLBヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を備える、
    スキューアソシエイティブ変換索引バッファ(TLB)。
  8. 前記複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されており、前記第2サブセットは、前記構成指標に基づくいくつかのウェイを含む、
    請求項7のスキューアソシエイティブTLB。
  9. 前記第2サブセットに含まれるウェイの数に対する前記第1サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
    請求項8のスキューアソシエイティブTLB。
  10. 前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
    請求項7のスキューアソシエイティブTLB。
  11. 前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
    請求項10のスキューアソシエイティブTLB。
  12. 前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
    請求項7のスキューアソシエイティブTLB。
  13. スキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
    受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
    TLBミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得することと、
    前記物理アドレスの少なくとも一部を、前記TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールすることと、を含み、
    前記LRUウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
    方法。
  14. 前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
    請求項13の方法。
  15. 第2サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
    請求項13の方法。
  16. 前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
    請求項13の方法。
  17. 前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
    請求項16の方法。
  18. 前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
    請求項13の方法。
  19. 前記構成指標は、単一ビットを含む、
    請求項13の方法。
  20. 複数のウェイと、
    仮想アドレス及び構成指標を受信するように構成された入力回路と、
    TLBミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、
    前記物理アドレスの少なくとも一部を、前記TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールするように構成された置換回路と、を備え、
    前記LRUウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
    スキューアソシエイティブ変換索引バッファ(TLB)。
  21. 前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
    請求項20のスキューアソシエイティブTLB。
  22. 第2サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
    請求項20のスキューアソシエイティブTLB。
  23. 前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
    請求項20のスキューアソシエイティブTLB。
  24. 前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
    請求項23のスキューアソシエイティブTLB。
  25. 前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
    請求項20のスキューアソシエイティブTLB。
  26. 前記構成指標は、単一ビットを含む、
    請求項20のスキューアソシエイティブTLB。
JP2019533456A 2016-12-23 2017-11-27 変換索引バッファにおける構成可能なスキューアソシエイティビティ Active JP7449694B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/389,955 US11106596B2 (en) 2016-12-23 2016-12-23 Configurable skewed associativity in a translation lookaside buffer
US15/389,955 2016-12-23
PCT/US2017/063337 WO2018118345A2 (en) 2016-12-23 2017-11-27 Configurable skewed associativity in a translation lookaside buffer

Publications (2)

Publication Number Publication Date
JP2020514859A true JP2020514859A (ja) 2020-05-21
JP7449694B2 JP7449694B2 (ja) 2024-03-14

Family

ID=62627079

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019533456A Active JP7449694B2 (ja) 2016-12-23 2017-11-27 変換索引バッファにおける構成可能なスキューアソシエイティビティ

Country Status (6)

Country Link
US (1) US11106596B2 (ja)
EP (1) EP3559814A4 (ja)
JP (1) JP7449694B2 (ja)
KR (1) KR102543675B1 (ja)
CN (1) CN110073338B (ja)
WO (1) WO2018118345A2 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552338B2 (en) * 2017-02-21 2020-02-04 Arm Limited Technique for efficient utilisation of an address translation cache
US10372522B2 (en) * 2017-04-28 2019-08-06 Advanced Micro Devices, Inc. Memory protection in highly parallel computing hardware
US10915459B2 (en) 2018-10-29 2021-02-09 International Business Machines Corporation Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
CN113778520B (zh) * 2021-09-09 2022-09-30 海光信息技术股份有限公司 偏移预取方法、执行偏移预取的装置、计算设备和介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
WO2016097813A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US20160342523A1 (en) * 2015-05-18 2016-11-24 Imagination Technologies, Limited Translation lookaside buffer

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625715B1 (en) * 1999-12-30 2003-09-23 Intel Corporation System and method for translation buffer accommodating multiple page sizes
US6715057B1 (en) * 2000-08-31 2004-03-30 Hewlett-Packard Development Company, L.P. Efficient translation lookaside buffer miss processing in computer systems with a large range of page sizes
US6732238B1 (en) * 2001-06-08 2004-05-04 Tensilica, Inc. Set-associative cache memory having variable time decay rewriting algorithm
US6854046B1 (en) 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
US7284112B2 (en) * 2005-01-14 2007-10-16 International Business Machines Corporation Multiple page size address translation incorporating page size prediction
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US8239657B2 (en) * 2007-02-07 2012-08-07 Qualcomm Incorporated Address translation method and apparatus
US8364900B2 (en) * 2008-02-12 2013-01-29 Oracle America, Inc. Pseudo-LRU cache line replacement for a high-speed cache
US8386749B2 (en) * 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US20130097387A1 (en) 2011-10-14 2013-04-18 The Board Of Trustees Of The Leland Stanford Junior University Memory-based apparatus and method
US9208102B2 (en) * 2013-01-15 2015-12-08 Qualcomm Incorporated Overlap checking for a translation lookaside buffer (TLB)
CN105814549B (zh) * 2014-10-08 2019-03-01 上海兆芯集成电路有限公司 具有主高速缓存器和溢出fifo高速缓存器的高速缓存器系统
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10540290B2 (en) * 2016-04-27 2020-01-21 Ati Technologies Ulc Method and apparatus for translation lookaside buffer with multiple compressed encodings
US10037283B2 (en) * 2016-08-12 2018-07-31 Advanced Micro Devices, Inc. Updating least-recently-used data for greater persistence of higher generality cache entries

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110153949A1 (en) * 2009-12-22 2011-06-23 International Business Machines Corporation Delayed replacement of cache entries
WO2016097813A1 (en) * 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US20160357680A1 (en) * 2014-12-14 2016-12-08 Via Alliance Semiconductor Co., Ltd. Set associative cache memory with heterogeneous replacement policy
US20160342523A1 (en) * 2015-05-18 2016-11-24 Imagination Technologies, Limited Translation lookaside buffer

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ANDRE SEZNEC: "Concurrent Support of Multiple Page Sizes on a Skewed Associative TLB", IEEE TRANSACTIONS ON COMPUTERS, vol. 53, no. 7, JPN6021047902, July 2004 (2004-07-01), US, pages 924 - 927, XP011116174, ISSN: 0004897931, DOI: 10.1109/TC.2004.21 *

Also Published As

Publication number Publication date
CN110073338B (zh) 2024-03-08
KR20190090389A (ko) 2019-08-01
WO2018118345A3 (en) 2018-08-02
EP3559814A2 (en) 2019-10-30
JP7449694B2 (ja) 2024-03-14
EP3559814A4 (en) 2020-07-29
KR102543675B1 (ko) 2023-06-14
US11106596B2 (en) 2021-08-31
US20180181496A1 (en) 2018-06-28
WO2018118345A2 (en) 2018-06-28
CN110073338A (zh) 2019-07-30

Similar Documents

Publication Publication Date Title
US7284112B2 (en) Multiple page size address translation incorporating page size prediction
JP6133896B2 (ja) 物理アドレスを用いる非割当てメモリアクセス
JP7249272B2 (ja) キャッシュ、キャッシュを有するプロセッサ、及び、キャッシュ制御方法
JP6724043B2 (ja) キャッシュタグ圧縮のための方法および装置
JP7449694B2 (ja) 変換索引バッファにおける構成可能なスキューアソシエイティビティ
CN112753024B (zh) 基于外部存储器的转换后备缓冲器
US10915459B2 (en) Methods and systems for optimized translation of a virtual address having multiple virtual address portions using multiple translation lookaside buffer (TLB) arrays for variable page sizes
US20230102891A1 (en) Re-reference interval prediction (rrip) with pseudo-lru supplemental age information
US20210311997A1 (en) Binary search procedure for control table stored in memory system
US10146698B2 (en) Method and apparatus for power reduction in a multi-threaded mode
KR20210037216A (ko) 이종 메모리를 이용하여 메모리 주소 변환 테이블을 관리하는 메모리 관리 유닛 및 이의 메모리 주소 관리 방법
US11494300B2 (en) Page table walker with page table entry (PTE) physical address prediction
US11704250B2 (en) Using request class and reuse recording in one cache for insertion policies of another cache
US20230101038A1 (en) Deterministic mixed latency cache
US11232034B2 (en) Method to enable the prevention of cache thrashing on memory management unit (MMU)-less hypervisor systems
KR20240067951A (ko) 다른 캐시의 삽입 정책에 대해 한 캐시의 요청 클래스 및 재사용 기록 사용
CN118020056A (en) Insertion strategy for using request class and reuse record in one cache for another cache

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191018

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201126

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211207

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220307

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20220509

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20221018

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230118

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20230317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230410

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20230725

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231124

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20231206

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: 20240116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240304

R150 Certificate of patent or registration of utility model

Ref document number: 7449694

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150