(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-06
(45)【発行日】2024-03-14
(54)【発明の名称】変換索引バッファにおける構成可能なスキューアソシエイティビティ
(51)【国際特許分類】
G06F 12/1027 20160101AFI20240307BHJP
G06F 12/123 20160101ALI20240307BHJP
G06F 12/128 20160101ALI20240307BHJP
【FI】
G06F12/1027
G06F12/123
G06F12/128
(21)【出願番号】P 2019533456
(86)(22)【出願日】2017-11-27
(86)【国際出願番号】 US2017063337
(87)【国際公開番号】W WO2018118345
(87)【国際公開日】2018-06-28
【審査請求日】2020-11-26
(32)【優先日】2016-12-23
(33)【優先権主張国・地域又は機関】US
【前置審査】
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ジョン エム. キング
(72)【発明者】
【氏名】マイケル ティー. クラーク
【審査官】酒井 恭信
(56)【参考文献】
【文献】米国特許出願公開第2016/0342523(US,A1)
【文献】米国特許出願公開第2011/0153949(US,A1)
【文献】国際公開第2016/097813(WO,A1)
【文献】米国特許出願公開第2016/0357680(US,A1)
【文献】Andre Seznec,Concurrent Support of Multiple Page Sizes on a Skewed Associative TLB,IEEE TRANSACTIONS ON COMPUTERS,米国,IEEE,2004年07月,Vol.53, No.7,pp.924-927
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10 - 12/109
G06F 12/12 - 12/128
(57)【特許請求の範囲】
【請求項1】
複数のウェイを含むスキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
前記スキューアソシエイティブTLBが、仮想アドレスと、前記仮想アドレスの部分ではない構成指標と、を受信することと、
前記スキューアソシエイティブTLBが、前記仮想アドレスの第1の部分に基づいて、第1ページサイズに関して物理アドレスをインデックス付け、第2ページサイズに関して物理アドレスをインデックス付けないように複数のウェイの第1サブセットを構成することであって、前記第1ページサイズ
に割り当てられるウェイの数の比率は、前記構成指標に基づいて選択される、ことと、を含む、
方法。
【請求項2】
前記スキューアソシエイティブTLBが、前記仮想アドレスの前記第1の部分に基づいて、前記第2ページサイズに関して物理アドレスをインデックス付け、前記第1ページサイズに関して物理アドレスをインデックス付けないように前記複数のウェイの第2サブセットを構成することであって、前記第2ページサイズ
に割り当てられるウェイの数の比率は、前記構成指標に基づいて選択される、ことをさらに含む、
請求項1の方法。
【請求項3】
前記第2サブセットに含まれるウェイの数に対する前記第1サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項2の方法。
【請求項4】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項1の方法。
【請求項5】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記複数のウェイに対するインデックスに含まれるかは、前記構成指標に基づいて計算される、
請求項4の方法。
【請求項6】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム又は構成レジスタから受信される、
請求項1の方法。
【請求項7】
複数のウェイを含むスキューアソシエイティブ変換索引バッファ(TLB)であって、
仮想アドレスと、前記仮想アドレスの部分ではない構成指標と、を受信するように構成された入力回路と、
前記複数のウェイの第1サブセットを、前記仮想アドレスの第1の部分に基づいて、第1ページサイズに関して物理アドレスをインデックス付け、第2ページサイズに関して物理アドレスをインデックス付けないように構成する回路であって、前記
第1ページサイズに割り当てられるウェイの数の比率は、前記構成指標に基づいている、回路と、を備える、
スキューアソシエイティブTLB。
【請求項8】
前記複数のウェイの第2サブセットは、前記仮想アドレスの第2の部分に基づいて、前記第2ページサイズに関して物理アドレスをインデックス付け、前記第1ページサイズに関して物理アドレスをインデックス付けないように構成されており、前記
第2ページサイズに割り当てられるウェイの数の比率は、前記構成指標に基づいている、
請求項7のスキューアソシエイティブTLB。
【請求項9】
前記第2サブセットに含まれるウェイの数に対する前記第1サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項8のスキューアソシエイティブTLB。
【請求項10】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項7のスキューアソシエイティブTLB。
【請求項11】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記複数のウェイに対するインデックスに含まれるかは、前記構成指標に基づいて計算される、
請求項10のスキューアソシエイティブTLB。
【請求項12】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
請求項7のスキューアソシエイティブTLB。
【請求項13】
複数のウェイを含むスキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
前記スキューアソシエイティブTLBが、仮想アドレスと、前記仮想アドレスの部分ではない構成指標と、を受信することと、
前記スキューアソシエイティブTLBが、TLBミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得することと、
前記スキューアソシエイティブTLBが、前記物理アドレスの少なくとも一部を、前記TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールすることであって、前記サブセットは、前記仮想アドレスの第1の部分に基づいて、第1ページサイズに関して物理アドレスをインデックス付け、第2ページサイズに関して物理アドレスをインデックス付けないように構成されたいくつかのウェイを含み、前記第1ページサイズ
に割り当てられるウェイの数の比率は、前記構成指標に基づいて選択される、ことと、を含み、
前記LRUウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記複数のウェイ間でサポートされるページサイズの分布に基づいて決定される、
方法。
【請求項14】
第2サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項13の方法。
【請求項15】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項13の方法。
【請求項16】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記複数のウェイに対するインデックスに含まれるかは、前記構成指標に基づいて計算される、
請求項
15の方法。
【請求項17】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
請求項13の方法。
【請求項18】
前記構成指標は、単一ビットを含む、
請求項13の方法。
【請求項19】
複数のウェイと、
入力回路と、
置換回路と、を備え、
前記入力回路は、
仮想アドレスと、前記仮想アドレスの部分ではない構成指標と、を受信することと、
TLBミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得することと、
を行うように構成されており、
前記置換回路は、
前記物理アドレスの少なくとも一部を、前記TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールすることであって、前記サブセットは、前記仮想アドレスの第1の部分に基づいて、第1ページサイズに関して物理アドレスをインデックス付け、第2ページサイズに関して物理アドレスをインデックス付けないように構成されたいくつかのウェイを含み、前記第1ページサイズ
に割り当てられるウェイの数の比率は、前記構成指標に基づいて選択される、ことを行うように構成されており、
前記LRUウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記複数のウェイ間でサポートされるページサイズの分布に基づいて決定される、
スキューアソシエイティブ変換索引バッファ(TLB)。
【請求項20】
第2サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項
19のスキューアソシエイティブTLB。
【請求項21】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項
19のスキューアソシエイティブTLB。
【請求項22】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記複数のウェイに対するインデックスに含まれるかは、前記構成指標に基づいて計算される、
請求項
21のスキューアソシエイティブTLB。
【請求項23】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される、
請求項
19のスキューアソシエイティブTLB。
【請求項24】
前記構成指標は、単一ビットを含む、
請求項
19のスキューアソシエイティブTLB。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2016年12月23日に出願された米国特許出願第15/389,955号の利益を主張するものであり、この内容は参照により本明細書に完全に記載されているものとして援用される。
【背景技術】
【0002】
変換索引バッファ(TLB)は、仮想アドレスから物理アドレスへの変換及びオペレーティングシステム(OS)のページ粒度メタデータ(例えば、読み出し/書き込み権限)をキャッシュするためにコンピューティングシステムで使用されるハードウェア構造である。TLBは、全てのメモリアクセスで検索されるため、コンピューティングシステムのパフォーマンススケーラビリティにとって重要である。TLBは、メモリアクセス毎にアクセスされるため、クリティカルタイミングパスにあり、各プロセッサコア又はアクセラレータは、独自のTLBを有することができる。
【0003】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0004】
【
図1】1つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。
【
図2】さらなる詳細を示す
図1のデバイスのブロック図である。
【
図3】
図1のデバイスに実装可能な、例示的な構成可能なスキューアソシエイティブ(skewed associative)TLBのブロック図である。
【
図4】
図3の構成可能なスキューアソシエイティブTLB内の仮想アドレスを検索する例示的な方法を示すフロー図である。
【
図5】
図3の構成可能なスキューアソシエイティブTLBにおけるTLBミスを処理する例示的な方法を示すフロー図である。
【発明を実施するための形態】
【0005】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファを用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。仮想アドレス及び構成指標(configuration indication)は、受信機回路を用いて受信される。TLBヒットが発生した場合に、仮想アドレスに対応する物理アドレスが出力される。TLBの複数のウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
【0006】
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数(skewing function)によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、基本入出力システム(BIOS)、溶断ヒューズ、オペレーティングシステム(OS)又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0007】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、TLBヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
【0008】
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0009】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を含むアクセラレーテッド処理デバイス(APD)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、TLBヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第1サブセットは、第1ページサイズを保持するように構成されている。第1サブセットは、構成指標に基づくいくつかのウェイを含む。
【0010】
いくつかの実施形態では、複数のウェイの第2サブセットは、第2ページサイズを保持するように構成されている。第2サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対する第1サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0011】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。方法は、受信機回路を用いて、仮想アドレス及び構成指標を受信することと、TLBミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得することであって、物理アドレスの少なくとも一部は、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールされている、ことと、を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【0012】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0013】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信し、TLBミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、物理アドレスの少なくとも一部を、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールするように構成された置換回路と、を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【0014】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0015】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ(TLB)を含むアクセラレーテッド処理デバイス(APD)を提供する。TLBは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、を含む。また、入力回路は、TLBミスが発生した場合に、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成されている。また、TLBは、物理アドレスの少なくとも一部を、TLBの複数のウェイのサブセットの最長未使用時間(LRU)ウェイにインストールするように構成された置換回路を含む。LRUウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【0016】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第2サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力され、仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、BIOS、溶断ヒューズ、OS又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【0017】
図1は、1つ以上の開示された実施形態を実施することができる例示的なデバイス100のブロック図である。デバイス100は、例えば、コンピュータ、ゲーム機、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータ等を含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージデバイス106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、オプションで、入力ドライバ112及び出力ドライバ114を含むことができる。デバイス100は、
図1に示されていない追加のコンポーネントを含むことができることを理解されたい。
【0018】
プロセッサ102は、例えば、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUであってもよい。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM、キャッシュ等)を含む。
【0019】
ストレージデバイス106は、固定又は着脱可能なストレージデバイス(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等)を含む。入力デバイス108は、例えば、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。出力デバイス110は、例えば、ディスプレイデバイス、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号の送信及び/若しくは受信用の無線ローカルエリアネットワークカード)を含む。
【0020】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信するのを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信するのを可能にする。入力ドライバ112及び出力ドライバ114がオプションのコンポーネントであることと、入力ドライバ112及び出力ドライバ114が存在しない場合であってもデバイス100が同様に動作することと、に留意されたい。出力ドライバ116は、ディスプレイデバイス118に接続されたアクセラレーテッド処理デバイス(APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受信し、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにディスプレイデバイス118にピクセル出力を提供するように構成されている。
【0021】
以下でさらに詳細に説明するように、APD116は、単一命令複数データ(SIMD)パラダイムに従って計算を実行するように構成された1つ以上の並列処理ユニットを含む。したがって、本明細書では、様々な機能が、APD116によって又はAPD116と連動して実行されるものとして説明されているが、APD116によって実行されるものとして説明される機能は、ホストプロセッサ(例えば、プロセッサ102)によって駆動されず、ディスプレイデバイス118にグラフィカル出力を提供するように構成された同様の機能を有する他のコンピューティングデバイスによっても実行することができる。例えば、SIMDパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明されている機能を実行するように構成され得ると考えられる。或いは、SIMDパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明されている機能を実行することができると考えられる。
【0022】
図2は、APD116上の処理タスクの実行に関連するさらなる詳細を示すデバイス100のブロック図である。プロセッサ102は、プロセッサ102による実行のために、1つ以上の制御論理モジュールをシステムメモリ104内に保有する。制御論理モジュールは、オペレーティングシステム120と、カーネルモードドライバ122と、アプリケーション126と、を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な態様を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行されている他のソフトウェア用のハードウェアへのインタフェースを提供する。カーネルモードドライバ122は、例えば、APD116の様々な機能にアクセスするために、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)に対してアプリケーションプログラミングインタフェース(API)を提供することによって、APD116の動作を制御する。また、カーネルモードドライバ122は、APD116の処理コンポーネント(例えば、以下でさらに詳細に説明するSIMDユニット138等)による実行のためにプログラムをコンパイルするジャストインタイムコンパイラを含む。
【0023】
APD116は、グラフィックス処理や並列処理に適した非グラフィックス処理等の、選択された機能のためのコマンド及びプログラムを実行する。APD116は、ピクセル演算、幾何学的計算等のグラフィックスパイプライン操作を実行し、プロセッサ102から受信したコマンドに基づいて画像をディスプレイデバイス118にレンダリングするために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する処理等のように、グラフィックス処理に直接関係しない計算処理動作を実行する。
【0024】
APD116は、SIMDパラダイムに従って、プロセッサ102の要求に応じて並列に動作を実行するように構成された1つ以上のSIMDユニット138を有する計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータを用いて当該プログラムを実行することができるパラダイムである。一例では、各SIMDユニット138は、16個のレーンを含んでおり、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、異なるデータを用いて当該命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、レーンを予測によってオフにすることができる。予測を使用して、分岐制御フローを有するプログラムを実行することもできる。より具体的には、制御フローが個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
【0025】
計算ユニット132における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列に実行されるプログラムの単一のインスタンス化(instantiation)を表す。ワークアイテムは、単一のSIMDユニット138上で「ウェーブフロント」として同時に実行することができる。複数のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれてもおい。ワークグループを構成するウェーブフロントの各々を実行することによって、ワークグループを実行することができる。ウェーブフロントは、単一のSIMDユニット138上で順次実行されてもよいし、異なるSIMDユニット138上で部分的に又は完全に並列に実行されてもよい。ウェーブフロントは、単一のSIMDユニット138上で同時に実行可能なワークアイテムの最大の集合と考えることができる。したがって、プロセッサ102から受信したコマンドが、特定のプログラムが単一のSIMDユニット138上で同時に実行できない程度に並列化されることを示す場合、当該プログラムは、2つ以上のSIMDユニット138で並列化され、又は、同じSIMDユニット138上で直列化(必要に応じて、並列化及び直列化の両方が行われる)されたウェーブフロントに分割される。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138で様々なウェーブフロントをスケジュールすることに関連する動作を実行するように構成されている。
【0026】
計算ユニット132によってもたらされる並列性は、例えば、ピクセル値計算、頂点変換及び他のグラフィックス処理等のグラフィック関連動作に適している。したがって、プロセッサ102からグラフィックス処理コマンドを受信するグラフィックス処理パイプライン134は、並列実行のために計算タスクを計算ユニット132に提供することができる。
【0027】
また、計算ユニット132は、グラフィックスに関係しないか、グラフィックス処理パイプライン134の「通常」動作(例えば、グラフィックス処理パイプライン134の動作のために実行される処理を補足するのに実行されるカスタム操作)の一部として実行されない計算タスクを実行するために使用される。プロセッサ102で実行中のアプリケーション126又は他のソフトウェアは、係る計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
【0028】
プロセッサ102は、仮想メモリをサポートすることができ、メモリ104は、例えば、仮想ページ番号をメモリ内の物理ページ番号にマッピングするページテーブルエントリを有するページテーブルを含む。プロセッサ102は、最近使用された仮想アドレスのページテーブルから物理アドレスを取得するためにメモリ104にアクセスする必要がないように、ページテーブルエントリをキャッシュする変換索引バッファ(TLB)を含むか、又は、当該バッファと動作可能に通信する。
【0029】
アプリケーションの仮想メモリの動作に応じて、仮想ページのサイズが異なるとパフォーマンスも異なる場合がある。例えば、小さいページサイズを使用すると、未使用のデータ又は命令に対して物理メモリスペースを割り当てることを回避することができ、大きいページサイズを使用すると、大量のデータ及び/又は命令に影響を与える単一ページフォルトが発生する可能性がある。したがって、いくつかのアーキテクチャは、複数の仮想ページサイズをサポートする。
【0030】
セットアソシエイティブTLBは、単一プロセスで複数のページサイズを効率的にサポートすることができない。したがって、複数のページサイズの使用をサポートするアーキテクチャは、フルアソシエイティブ(fully associative)TLBを実装するか、ページサイズ毎に個別のTLBを使用するかの何れかを実装している。フルアソシエイティブTLBは、少数のエントリに制限されており、異なるページサイズに対して個別の部分アソシエイティブTLBを使用するには、システムの使用目的に合わせたページサイズの分布に関する知識が必要である。これは、実際の使用が、予測されたページサイズの分布と異なる場合に、非効率になる可能性がある。
【0031】
スキューアソシエイティブTLBは、TLBのn個のウェイの一部又は全てにおいて異なるスキュー関数によって入力インデックスが変更される、nウェイセットアソシエイティブTLBの変形である。また、スキューアソシエイティブTLBは、複数のページサイズをサポートするために使用することができる。このような実装では、特定のページサイズをサポートするために、スキューアソシエイティブTLBの固定数のウェイが使用される。例えば、12個のウェイを有するスキューアソシエイティブTLBでは、任意のTLB検索に対して、8個のウェイが、4キロバイトサイズのページを保持するために使用され、2個のウェイが、32キロバイトサイズのページを保持するために使用され、2つのウェイが、2メガバイトサイズのページを保持するために使用される。何れのウェイが何れのページサイズを保持するかというマッピングは固定されておらず、仮想アドレスのビットによって決定される。
【0032】
小さなページを頻繁に使用するワークロード等の一部のワークロードでは、1つのページサイズのウェイ構成が適切に機能することがある(例えば、32キロバイト及び2メガバイトサイズのページ専用のウェイの数を少なくし、4キロバイトサイズのページ専用のウェイの数を多くする)。本明細書では、小さなページを処理するために、より多くのウェイが割り当てられている。大きなページを頻繁に使用するワークロード等の他のワークロードでは、別のページサイズのウェイ構成が適切に機能することがある(例えば、32キロバイト及び2メガバイトサイズのページ専用のウェイの数を多くし、4キロバイトサイズのページ専用のウェイの数を少なくする)。
【0033】
典型的なスキューアソシエイティブTLBは、構成不可能であり、全てのワークロードに対して最適化することができない。これは、このようなTLBの全てのウェイは、全てのページサイズを保持することができるが、このようなTLBは、ページサイズの特定の分布に合わせて調整されるからである。非スキューアソシエイティブTLBは、全てのウェイで全てのページサイズを保持できるわけではなく(したがって、一部のワークロードで使用されていないページサイズのストレージスペースを無駄にし、非効率的である)、さらに、特定のページサイズの分布に合わせて調整されるので、パフォーマンスがさらに低下する可能性がある。
【0034】
図3は、例示的な構成可能なスキューアソシエイティブTLB300のブロック図である。スキューアソシエイティブTLB300の図は、わかりやすくするために簡略化されている。スキューアソシエイティブTLBは、図示していない様々なコンポーネント(例えば、権原、追加のタグ付けビット、フラッシュ等に関する)を含むことができることに留意されたい。この例では、構成可能なスキューアソシエイティブTLB300がデバイス100に実装されているが、他の実装も可能であることが理解されよう。例えば、様々な実施形態では、TLB300は、プロセッサ102のコンポーネントとして、メモリ104のコンポーネントとして、又は、プロセッサ102及びメモリ104と動作可能に接続されたデバイス(例えば、メモリ管理ユニット(MMU)等)で実装される。TLB300の他の様々な実施形態も、デバイス100のコンテキストの内外で可能である。
【0035】
この例では、TLB300は、連想(content-addressable)メモリ(CAM)として実装され、検索キーは、(仮想メモリアドレスからの)仮想ページ番号であり、検索結果は、(例えば、メモリ104の)物理メモリアドレスの物理ページ番号である。TLB300は、16個のウェイ305(わかりやすくするために、ウェイ0,1,15に対応する305’,305’’,305’’’の3つのみを示し、全てのウェイをまとめて305と呼ぶ)を含む。ウェイ305の各々は128個のエントリを含み、各エントリは48ビット幅である。ウェイ305の各エントリは、タグ及びペイロードを含み、タグは、仮想ページ番号との比較によるインデックス付けに使用され、ペイロードは、対応する物理ページ番号(又は、対応する物理ページ番号を含む)である。仮想アドレスのページオフセットは、物理アドレスのページオフセットと同一とすることができ、オフセットを物理ページ番号と組み合わせることによって物理メモリアドレスを構築するために使用することができる。
【0036】
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と、を有する。ウェイの数、ウェイエントリの数及び幅、サポートされる仮想ページの数及びサイズ、並びに、ウェイ構成の数及び分布は全て例示であり、これらのコンポーネントの任意の適切な構成を使用することができる。これは、任意の図に関して本明細書で説明される全ての実施形態に適用される。
【0037】
サポートされているページサイズをウェイ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又は他のコンポーネントのレジスタに設定されてもよい。
【0038】
仮想アドレスを物理アドレスに変換するために、仮想アドレス310がTLB300に入力される。TLB300がレベル2(L2)TLBである場合、仮想アドレス310は、例えば、L1 TLBミスの後にレベル1(L1)TLBから入力され得るが、他の適切な実施形態も可能である。仮想アドレス310は、仮想ページ番号と、仮想ページへのオフセットと、を含む。この例では、仮想アドレス310は48ビット幅であるが、他の実施形態では、任意の適切な幅を使用することができる。
図3では、48ビットの仮想アドレス310は、[47:0]として表されている。48ビットのサブセットは仮想ページ番号に対応し、48ビットの別のサブセットはオフセットに対応する。何れのビットが使用されるかは、仮想アドレス305に関連する仮想ページサイズによって異なる。
【0039】
仮想アドレス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ビットを超えるビットをインデックス付けに使用することができる。
【0040】
スキュー関数ブロック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のうち何れのウェイが、異なるページサイズの物理アドレスを記憶するのに使用されるかの例を列挙している。
【0041】
【0042】
各ウェイ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と呼ぶ)のうち何れのインデックスを各ウェイに使用するかを選択する。
【0043】
各ウェイ305は、マルチプレクサ325によって選択されたインデックスに対応するエントリのペイロードを読み出しデータ(読み出しデータ335’,335’’,335’’’が示されており、全ての読み出しデータをまとめて335と呼ぶ)として出力する。読み出しデータ335レジスタの各々は、比較回路340によってチェックされ、TLBヒットが発生したかどうか(すなわち、1つのウェイが検索アドレスと一致する変換を有するかどうか)を判別する。比較回路340は、エントリに保持された仮想アドレスタグが検索仮想アドレスと一致するかどうか、及び、(例えば、ページサイズがペイロードのページサイズフィールドによって示される場合)読み出しデータ335として読み出されたエントリのページサイズが、スキュー関数によって決定されたページサイズと一致するかどうかを判別することによって、TLBヒットが生じたかどうかを判別する。ヒットした場合は、TLBヒットとなった読み出しデータ335が選択され、仮想アドレス310に対応する物理アドレス345がTLBから出力される。
【0044】
図4は、
図3の構成可能なスキューアソシエイティブTLB300を用いて、仮想アドレスを物理メモリアドレスに変換する例示的な方法400を示すフロー図である。
【0045】
仮想アドレス310がTLBに入力されるという条件405において、インデックスマルチプレクサ325は、ステップ410において、仮想アドレス310のビット(この例では、ビット[22:21])のサブセットに基づいて、仮想アドレス310からのビットを使用して、ページサイズ毎に1つずつ、計3つの可能なインデックスのうち1つのインデックスを入力するように設定される。
【0046】
ビットの範囲は、ページサイズ毎に異なる。ビット[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])を入力する。
【0047】
インデックスマルチプレクサ325が、仮想アドレス310の適切なビットを入力した後、各マルチプレクサ325は、各々のスキュー関数320に基づいて入力を1つ選択し、各ウェイ305に対するインデックス330を生成する(ステップ445)。何れかのインデックス330が何れかのウェイ305においてエントリとヒットした場合、対応する物理ページ番号が各々の読み出しデータ335レジスタに出力される(ステップ450)。結果がTLBミスであるという条件455において、TLB300は、ステップ460においてページウォークを開始する。結果がTLBヒットであれば、読み出しデータ335として出力された物理アドレス及び仮想アドレス310のページオフセットに基づいて、仮想アドレス310に対応する物理アドレス345がTLBから出力される(ステップ465)。
【0048】
TLBミスが発生した場合、TLB300は、ページテーブルをウォークする等の既知の方法を介して、対応する物理アドレス345を取得し、置換ポリシーに従って、取得した物理アドレス345を1つのウェイ305にインストールする。使用される置換ポリシーは、ウェイ305間でサポートされるページサイズの分布に依存することができる。例えば、4Kページが8ウェイアソシエイティブ構成(例えば、上述した8-2-2構成)で記憶されているか、又は、6ウェイアソシエイティブ構成(例えば、上述した6-3-3構成)で記憶されているかに応じて、4Kページに対して異なる置換ポリシーを使用することができる。
【0049】
一例では、標準的な擬似最長未使用時間(擬似LRU、すなわちtree-LRU)方式を実施して、インデックス330に対応するエントリのうち、8ウェイアソシエイティブ構成の4Kページについて最長未使用時間のエントリを含むウェイ305を判別する。6ウェイアソシエイティブ構成の4Kページに対するLRUエントリを判別するために、ハイブリッドLRU方式を実施することができる。何れのLRU方式を使用するかは、構成ビット310を使用して選択することができる。
【0050】
TLB300の各ラインは、当該ラインがどのくらい最近にアクセスされたかを追跡するための7ビット(LRUビットと呼ぶことができる)の関連シーケンスを有する。7つのLRUビットは、全てのウェイで同じインデックスに適用されるため、この例では、LRUビットのグループが128個存在する。LRUビットの各セットは、TLB300の各々のインデックスに対して何れのウェイが最長未使用時間ウェイであるかを示す。LRUビットに適用するのに適切なLRU方式を選択することによって、同じLRUビットを使用して、8-2-2構成又は6-3-3構成の最長未使用時間ウェイを追跡することができる。
【0051】
図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のページサイズにも使用される。
【0052】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素を特定の組み合わせで上記のように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
【0053】
提供された方法には、汎用コンピュータ、プロセッサ又はプロセッサコアにおける実施が含まれる。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、任意の他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令、及び、ネットリストを含む他の中間データ(このような命令はコンピュータ可読媒体に記憶され得る)の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0054】
本明細書で提供される方法又はフロー図は、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、ROM、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体(CD-ROMディスク等)、デジタル多用途ディスク(DVD)等が含まれる。