(57)【要約】スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法、デバイス及びシステムを説明する。仮想アドレス及び構成指標は、受信機回路を用いて受信される。ＴＬＢヒットが発生した場合、仮想アドレスに対応する物理アドレスが出力される。ＴＬＢの複数のウェイの第１サブセットは、第１ページサイズを保持するように構成されている。第１サブセットは、構成指標に基づくいくつかのウェイを含む。ＴＬＢミスが発生した場合、仮想アドレスに対応する物理アドレスがページテーブルから取得され、物理アドレスの少なくとも一部は、構成指示に基づく置換ポリシーに従って決定された、ＴＬＢの複数のウェイのサブセットの最長未使用時間ウェイにインストールされる。【選択図】図３
2020514859.tif 000002
【特許請求の範囲】
【請求項１】
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
第１ページサイズを保持するようにＴＬＢの複数のウェイの第１サブセットを構成することであって、前記第１サブセットは、前記構成指標に基づくいくつかのウェイを含む、ことと、
ＴＬＢヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力することと、を含む、
方法。
【請求項２】
前記複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されており、前記第２サブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項１の方法。
【請求項３】
前記第２サブセットに含まれるウェイの数に対する前記第１サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項２の方法。
【請求項４】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項１の方法。
【請求項５】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項４の方法。
【請求項６】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム又は構成レジスタから受信される、
請求項１の方法。
【請求項７】
仮想アドレス及び構成指標を受信するように構成された入力回路と、
複数のウェイであって、前記複数のウェイの第１サブセットは、第１ページサイズを保持するように構成されており、前記第１サブセットは、前記構成指標に基づくいくつかのウェイを含む、複数のウェイと、
ＴＬＢヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を備える、
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）。
【請求項８】
前記複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されており、前記第２サブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項９】
前記第２サブセットに含まれるウェイの数に対する前記第１サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項８のスキューアソシエイティブＴＬＢ。
【請求項１０】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項１１】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項１０のスキューアソシエイティブＴＬＢ。
【請求項１２】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項１３】
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
ＴＬＢミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得することと、
前記物理アドレスの少なくとも一部を、前記ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールすることと、を含み、
前記ＬＲＵウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
方法。
【請求項１４】
前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項１３の方法。
【請求項１５】
第２サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項１３の方法。
【請求項１６】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項１３の方法。
【請求項１７】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項１６の方法。
【請求項１８】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項１３の方法。
【請求項１９】
前記構成指標は、単一ビットを含む、
請求項１３の方法。
【請求項２０】
複数のウェイと、
仮想アドレス及び構成指標を受信するように構成された入力回路と、
ＴＬＢミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、
前記物理アドレスの少なくとも一部を、前記ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールするように構成された置換回路と、を備え、
前記ＬＲＵウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）。
【請求項２１】
前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２２】
第２サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２３】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２４】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項２３のスキューアソシエイティブＴＬＢ。
【請求項２５】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２６】
前記構成指標は、単一ビットを含む、
請求項２０のスキューアソシエイティブＴＬＢ。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１６年１２月２３日に出願された米国特許出願第１５／３８９，９５５号の利益を主張するものであり、この内容は参照により本明細書に完全に記載されているものとして援用される。
【背景技術】
【０００２】
変換索引バッファ（ＴＬＢ）は、仮想アドレスから物理アドレスへの変換及びオペレーティングシステム（ＯＳ）のページ粒度メタデータ（例えば、読み出し／書き込み権限）をキャッシュするためにコンピューティングシステムで使用されるハードウェア構造である。ＴＬＢは、全てのメモリアクセスで検索されるため、コンピューティングシステムのパフォーマンススケーラビリティにとって重要である。ＴＬＢは、メモリアクセス毎にアクセスされるため、クリティカルタイミングパスにあり、各プロセッサコア又はアクセラレータは、独自のＴＬＢを有することができる。
【０００３】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【０００４】
【図１】１つ以上の開示された実施形態を実施することができる例示的なデバイスのブロック図である。
【図２】さらなる詳細を示す図１のデバイスのブロック図である。
【図３】図１のデバイスに実装可能な、例示的な構成可能なスキューアソシエイティブ（skewed associative）ＴＬＢのブロック図である。
【図４】図３の構成可能なスキューアソシエイティブＴＬＢ内の仮想アドレスを検索する例示的な方法を示すフロー図である。
【図５】図３の構成可能なスキューアソシエイティブＴＬＢにおけるＴＬＢミスを処理する例示的な方法を示すフロー図である。
【発明を実施するための形態】
【０００５】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファを用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。仮想アドレス及び構成指標（configuration indication）は、受信機回路を用いて受信される。ＴＬＢヒットが発生した場合に、仮想アドレスに対応する物理アドレスが出力される。ＴＬＢの複数のウェイの第１サブセットは、第１ページサイズを保持するように構成されている。第１サブセットは、構成指標に基づくいくつかのウェイを含む。
【０００６】
いくつかの実施形態では、複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されている。第２サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対する第１サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数（skewing function）によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、基本入出力システム（ＢＩＯＳ）、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【０００７】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を提供する。ＴＬＢは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、ＴＬＢヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第１サブセットは、第１ページサイズを保持するように構成されている。第１サブセットは、構成指標に基づくいくつかのウェイを含む。
【０００８】
いくつかの実施形態では、複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されている。第２サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対する第１サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、ＢＩＯＳ、溶断ヒューズ、ＯＳ又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【０００９】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を含むアクセラレーテッド処理デバイス（ＡＰＤ）を提供する。ＴＬＢは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、ＴＬＢヒットが発生したことを条件として、仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を含む。ウェイの第１サブセットは、第１ページサイズを保持するように構成されている。第１サブセットは、構成指標に基づくいくつかのウェイを含む。
【００１０】
いくつかの実施形態では、複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されている。第２サブセットは、構成指標に基づくいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対する第１サブセットに含まれるウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、ＢＩＯＳ、溶断ヒューズ、ＯＳ又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【００１１】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法を提供する。方法は、受信機回路を用いて、仮想アドレス及び構成指標を受信することと、ＴＬＢミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得することであって、物理アドレスの少なくとも一部は、ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールされている、ことと、を含む。ＬＲＵウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【００１２】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、ＢＩＯＳ、溶断ヒューズ、ＯＳ又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【００１３】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を提供する。ＴＬＢは、複数のウェイと、仮想アドレス及び構成指標を受信し、ＴＬＢミスが発生したことを条件として、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、物理アドレスの少なくとも一部を、ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールするように構成された置換回路と、を含む。ＬＲＵウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【００１４】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力される。仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、ＢＩＯＳ、溶断ヒューズ、ＯＳ又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【００１５】
いくつかの実施形態は、スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を含むアクセラレーテッド処理デバイス（ＡＰＤ）を提供する。ＴＬＢは、複数のウェイと、仮想アドレス及び構成指標を受信するように構成された入力回路と、を含む。また、入力回路は、ＴＬＢミスが発生した場合に、仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成されている。また、ＴＬＢは、物理アドレスの少なくとも一部を、ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールするように構成された置換回路を含む。ＬＲＵウェイは、置換ポリシーに従って決定される。置換ポリシーは、構成指標に基づいている。
【００１６】
いくつかの実施形態では、ウェイのサブセットは、構成指標に基づく、複数のウェイのうちいくつかのウェイを含む。いくつかの実施形態では、第２サブセットに含まれるウェイの数に対するサブセットに含まれる複数のウェイの数の比率は、構成指標に基づいている。いくつかの実施形態では、複数のウェイに対するインデックスは、構成指標に基づいて、スキュー関数によって計算される。いくつかの実施形態では、仮想アドレスのビットのサブセットがスキュー関数に入力され、仮想アドレスの何れのビットがビットのサブセットに含まれるかは、構成指標に基づいて計算される。いくつかの実施形態では、構成指標は、ＢＩＯＳ、溶断ヒューズ、ＯＳ又は構成レジスタから受信される。いくつかの実施形態では、構成指標は、単一ビットを含む。
【００１７】
図１は、１つ以上の開示された実施形態を実施することができる例示的なデバイス１００のブロック図である。デバイス１００は、例えば、コンピュータ、ゲーム機、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータ等を含む。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージデバイス１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、オプションで、入力ドライバ１１２及び出力ドライバ１１４を含むことができる。デバイス１００は、図１に示されていない追加のコンポーネントを含むことができることを理解されたい。
【００１８】
プロセッサ１０２は、例えば、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアは、ＣＰＵ又はＧＰＵであってもよい。メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２とは別に配置されてもよい。メモリ１０４は、例えば、揮発性又は不揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ、キャッシュ等）を含む。
【００１９】
ストレージデバイス１０６は、固定又は着脱可能なストレージデバイス（例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等）を含む。入力デバイス１０８は、例えば、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリクススキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。出力デバイス１１０は、例えば、ディスプレイデバイス、スピーカ、プリンタ、触覚フィードバックデバイス、１つ以上のライト、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用の無線ローカルエリアネットワークカード）を含む。
【００２０】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信するのを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信するのを可能にする。入力ドライバ１１２及び出力ドライバ１１４がオプションのコンポーネントであることと、入力ドライバ１１２及び出力ドライバ１１４が存在しない場合であってもデバイス１００が同様に動作することと、に留意されたい。出力ドライバ１１６は、ディスプレイデバイス１１８に接続されたアクセラレーテッド処理デバイス（ＡＰＤ）１１６を含む。ＡＰＤは、プロセッサ１０２から計算コマンド及びグラフィックスレンダリングコマンドを受信し、これらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにディスプレイデバイス１１８にピクセル出力を提供するように構成されている。
【００２１】
以下でさらに詳細に説明するように、ＡＰＤ１１６は、単一命令複数データ（ＳＩＭＤ）パラダイムに従って計算を実行するように構成された１つ以上の並列処理ユニットを含む。したがって、本明細書では、様々な機能が、ＡＰＤ１１６によって又はＡＰＤ１１６と連動して実行されるものとして説明されているが、ＡＰＤ１１６によって実行されるものとして説明される機能は、ホストプロセッサ（例えば、プロセッサ１０２）によって駆動されず、ディスプレイデバイス１１８にグラフィカル出力を提供するように構成された同様の機能を有する他のコンピューティングデバイスによっても実行することができる。例えば、ＳＩＭＤパラダイムに従って処理タスクを実行する任意の処理システムが、本明細書で説明されている機能を実行するように構成され得ると考えられる。或いは、ＳＩＭＤパラダイムに従って処理タスクを実行しないコンピューティングシステムが、本明細書で説明されている機能を実行することができると考えられる。
【００２２】
図２は、ＡＰＤ１１６上の処理タスクの実行に関連するさらなる詳細を示すデバイス１００のブロック図である。プロセッサ１０２は、プロセッサ１０２による実行のために、１つ以上の制御論理モジュールをシステムメモリ１０４内に保有する。制御論理モジュールは、オペレーティングシステム１２０と、カーネルモードドライバ１２２と、アプリケーション１２６と、を含む。これらの制御論理モジュールは、プロセッサ１０２及びＡＰＤ１１６の動作の様々な態様を制御する。例えば、オペレーティングシステム１２０は、ハードウェアと直接通信し、プロセッサ１０２上で実行されている他のソフトウェア用のハードウェアへのインタフェースを提供する。カーネルモードドライバ１２２は、例えば、ＡＰＤ１１６の様々な機能にアクセスするために、プロセッサ１０２上で実行されるソフトウェア（例えば、アプリケーション１２６）に対してアプリケーションプログラミングインタフェース（ＡＰＩ）を提供することによって、ＡＰＤ１１６の動作を制御する。また、カーネルモードドライバ１２２は、ＡＰＤ１１６の処理コンポーネント（例えば、以下でさらに詳細に説明するＳＩＭＤユニット１３８等）による実行のためにプログラムをコンパイルするジャストインタイムコンパイラを含む。
【００２３】
ＡＰＤ１１６は、グラフィックス処理や並列処理に適した非グラフィックス処理等の、選択された機能のためのコマンド及びプログラムを実行する。ＡＰＤ１１６は、ピクセル演算、幾何学的計算等のグラフィックスパイプライン操作を実行し、プロセッサ１０２から受信したコマンドに基づいて画像をディスプレイデバイス１１８にレンダリングするために使用することができる。また、ＡＰＤ１１６は、プロセッサ１０２から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学又は他のタスクに関連する処理等のように、グラフィックス処理に直接関係しない計算処理動作を実行する。
【００２４】
ＡＰＤ１１６は、ＳＩＭＤパラダイムに従って、プロセッサ１０２の要求に応じて並列に動作を実行するように構成された１つ以上のＳＩＭＤユニット１３８を有する計算ユニット１３２を含む。ＳＩＭＤパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有することによって同じプログラムを実行するが、異なるデータを用いて当該プログラムを実行することができるパラダイムである。一例では、各ＳＩＭＤユニット１３８は、１６個のレーンを含んでおり、各レーンは、ＳＩＭＤユニット１３８内の他のレーンと同時に同じ命令を実行するが、異なるデータを用いて当該命令を実行することができる。全てのレーンが所定の命令を実行する必要がない場合には、レーンを予測によってオフにすることができる。予測を使用して、分岐制御フローを有するプログラムを実行することもできる。より具体的には、制御フローが個々のレーンによって実行される計算に基づく条件付き分岐又は他の命令を有するプログラムの場合、現在実行されていない制御フローパスに対応するレーンの予測、及び、異なる制御フローパスの連続実行は、任意の制御フローを可能にする。
【００２５】
計算ユニット１３２における実行の基本単位は、ワークアイテムである。各ワークアイテムは、特定のレーンで並列に実行されるプログラムの単一のインスタンス化（instantiation）を表す。ワークアイテムは、単一のＳＩＭＤユニット１３８上で「ウェーブフロント」として同時に実行することができる。複数のウェーブフロントは、同じプログラムを実行するように指定されたワークアイテムの集合を含む「ワークグループ」に含まれてもおい。ワークグループを構成するウェーブフロントの各々を実行することによって、ワークグループを実行することができる。ウェーブフロントは、単一のＳＩＭＤユニット１３８上で順次実行されてもよいし、異なるＳＩＭＤユニット１３８上で部分的に又は完全に並列に実行されてもよい。ウェーブフロントは、単一のＳＩＭＤユニット１３８上で同時に実行可能なワークアイテムの最大の集合と考えることができる。したがって、プロセッサ１０２から受信したコマンドが、特定のプログラムが単一のＳＩＭＤユニット１３８上で同時に実行できない程度に並列化されることを示す場合、当該プログラムは、２つ以上のＳＩＭＤユニット１３８で並列化され、又は、同じＳＩＭＤユニット１３８上で直列化（必要に応じて、並列化及び直列化の両方が行われる）されたウェーブフロントに分割される。スケジューラ１３６は、異なる計算ユニット１３２及びＳＩＭＤユニット１３８で様々なウェーブフロントをスケジュールすることに関連する動作を実行するように構成されている。
【００２６】
計算ユニット１３２によってもたらされる並列性は、例えば、ピクセル値計算、頂点変換及び他のグラフィックス処理等のグラフィック関連動作に適している。したがって、プロセッサ１０２からグラフィックス処理コマンドを受信するグラフィックス処理パイプライン１３４は、並列実行のために計算タスクを計算ユニット１３２に提供することができる。
【００２７】
また、計算ユニット１３２は、グラフィックスに関係しないか、グラフィックス処理パイプライン１３４の「通常」動作（例えば、グラフィックス処理パイプライン１３４の動作のために実行される処理を補足するのに実行されるカスタム操作）の一部として実行されない計算タスクを実行するために使用される。プロセッサ１０２で実行中のアプリケーション１２６又は他のソフトウェアは、係る計算タスクを定義するプログラムを、実行のためにＡＰＤ１１６に送信する。
【００２８】
プロセッサ１０２は、仮想メモリをサポートすることができ、メモリ１０４は、例えば、仮想ページ番号をメモリ内の物理ページ番号にマッピングするページテーブルエントリを有するページテーブルを含む。プロセッサ１０２は、最近使用された仮想アドレスのページテーブルから物理アドレスを取得するためにメモリ１０４にアクセスする必要がないように、ページテーブルエントリをキャッシュする変換索引バッファ（ＴＬＢ）を含むか、又は、当該バッファと動作可能に通信する。
【００２９】
アプリケーションの仮想メモリの動作に応じて、仮想ページのサイズが異なるとパフォーマンスも異なる場合がある。例えば、小さいページサイズを使用すると、未使用のデータ又は命令に対して物理メモリスペースを割り当てることを回避することができ、大きいページサイズを使用すると、大量のデータ及び／又は命令に影響を与える単一ページフォルトが発生する可能性がある。したがって、いくつかのアーキテクチャは、複数の仮想ページサイズをサポートする。
【００３０】
セットアソシエイティブＴＬＢは、単一プロセスで複数のページサイズを効率的にサポートすることができない。したがって、複数のページサイズの使用をサポートするアーキテクチャは、フルアソシエイティブ（fully associative）ＴＬＢを実装するか、ページサイズ毎に個別のＴＬＢを使用するかの何れかを実装している。フルアソシエイティブＴＬＢは、少数のエントリに制限されており、異なるページサイズに対して個別の部分アソシエイティブＴＬＢを使用するには、システムの使用目的に合わせたページサイズの分布に関する知識が必要である。これは、実際の使用が、予測されたページサイズの分布と異なる場合に、非効率になる可能性がある。
【００３１】
スキューアソシエイティブＴＬＢは、ＴＬＢのｎ個のウェイの一部又は全てにおいて異なるスキュー関数によって入力インデックスが変更される、ｎウェイセットアソシエイティブＴＬＢの変形である。また、スキューアソシエイティブＴＬＢは、複数のページサイズをサポートするために使用することができる。このような実装では、特定のページサイズをサポートするために、スキューアソシエイティブＴＬＢの固定数のウェイが使用される。例えば、１２個のウェイを有するスキューアソシエイティブＴＬＢでは、任意のＴＬＢ検索に対して、８個のウェイが、４キロバイトサイズのページを保持するために使用され、２個のウェイが、３２キロバイトサイズのページを保持するために使用され、２つのウェイが、２メガバイトサイズのページを保持するために使用される。何れのウェイが何れのページサイズを保持するかというマッピングは固定されておらず、仮想アドレスのビットによって決定される。
【００３２】
小さなページを頻繁に使用するワークロード等の一部のワークロードでは、１つのページサイズのウェイ構成が適切に機能することがある（例えば、３２キロバイト及び２メガバイトサイズのページ専用のウェイの数を少なくし、４キロバイトサイズのページ専用のウェイの数を多くする）。本明細書では、小さなページを処理するために、より多くのウェイが割り当てられている。大きなページを頻繁に使用するワークロード等の他のワークロードでは、別のページサイズのウェイ構成が適切に機能することがある（例えば、３２キロバイト及び２メガバイトサイズのページ専用のウェイの数を多くし、４キロバイトサイズのページ専用のウェイの数を少なくする）。
【００３３】
典型的なスキューアソシエイティブＴＬＢは、構成不可能であり、全てのワークロードに対して最適化することができない。これは、このようなＴＬＢの全てのウェイは、全てのページサイズを保持することができるが、このようなＴＬＢは、ページサイズの特定の分布に合わせて調整されるからである。非スキューアソシエイティブＴＬＢは、全てのウェイで全てのページサイズを保持できるわけではなく（したがって、一部のワークロードで使用されていないページサイズのストレージスペースを無駄にし、非効率的である）、さらに、特定のページサイズの分布に合わせて調整されるので、パフォーマンスがさらに低下する可能性がある。
【００３４】
図３は、例示的な構成可能なスキューアソシエイティブＴＬＢ３００のブロック図である。スキューアソシエイティブＴＬＢ３００の図は、わかりやすくするために簡略化されている。スキューアソシエイティブＴＬＢは、図示していない様々なコンポーネント（例えば、権原、追加のタグ付けビット、フラッシュ等に関する）を含むことができることに留意されたい。この例では、構成可能なスキューアソシエイティブＴＬＢ３００がデバイス１００に実装されているが、他の実装も可能であることが理解されよう。例えば、様々な実施形態では、ＴＬＢ３００は、プロセッサ１０２のコンポーネントとして、メモリ１０４のコンポーネントとして、又は、プロセッサ１０２及びメモリ１０４と動作可能に接続されたデバイス（例えば、メモリ管理ユニット（ＭＭＵ）等）で実装される。ＴＬＢ３００の他の様々な実施形態も、デバイス１００のコンテキストの内外で可能である。
【００３５】
この例では、ＴＬＢ３００は、連想（content-addressable）メモリ（ＣＡＭ）として実装され、検索キーは、（仮想メモリアドレスからの）仮想ページ番号であり、検索結果は、（例えば、メモリ１０４の）物理メモリアドレスの物理ページ番号である。ＴＬＢ３００は、１６個のウェイ３０５（わかりやすくするために、ウェイ０，１，１５に対応する３０５’，３０５’’，３０５’’’の３つのみを示し、全てのウェイをまとめて３０５と呼ぶ）を含む。ウェイ３０５の各々は１２８個のエントリを含み、各エントリは４８ビット幅である。ウェイ３０５の各エントリは、タグ及びペイロードを含み、タグは、仮想ページ番号との比較によるインデックス付けに使用され、ペイロードは、対応する物理ページ番号（又は、対応する物理ページ番号を含む）である。仮想アドレスのページオフセットは、物理アドレスのページオフセットと同一とすることができ、オフセットを物理ページ番号と組み合わせることによって物理メモリアドレスを構築するために使用することができる。
【００３６】
ＴＬＢ３００は、３つの異なる仮想ページサイズ（４キロバイト（４Ｋ）、３２キロバイト（３２Ｋ）及び２メガバイト（２Ｍ））をサポートする。ＴＬＢ３００における任意の検索に対して、各ウェイは、異なる仮想ページサイズのうち１つのみに関して定義される変換を保持し、ウェイ３０５間のサポートされるページサイズの分布が構成可能である。例えば、８−２−２構成では、８個のウェイ３０５が４Ｋページをサポートするように構成されており、２個のウェイ３０５が３２Ｋページをサポートするように構成されており、２個のウェイ３０５が２Ｍページをサポートするように構成されている。対照的に、６−３−３構成は、４Ｋページをサポートするように構成された６個のウェイ３０５と、３２Ｋページをサポートするように構成された３個のウェイ３０５と、２Ｍページをサポートするように構成された３個のウェイ３０５と、を有する。ウェイの数、ウェイエントリの数及び幅、サポートされる仮想ページの数及びサイズ、並びに、ウェイ構成の数及び分布は全て例示であり、これらのコンポーネントの任意の適切な構成を使用することができる。これは、任意の図に関して本明細書で説明される全ての実施形態に適用される。
【００３７】
サポートされているページサイズをウェイ３０５毎に構成する（すなわち、この例では、８−２−２と６−３−３との間で選択する）ために、構成ビット３１０が、各ウェイのスキュー関数に入力される。いくつかの実施形態では、構成ビット３１０は、サポートされている各ページサイズに割り当てられたウェイの数の比率を選択する。各ウェイは、そのウェイに対してスキュー関数を実施するそれ自体のスキュー関数ブロック（スキュー関数ブロック３１５’，３１５’’，３１５’’’のみが示されており、全てのスキュー関数ブロックをまとめて３１５と呼ぶ）を含むか、それ自体に動作可能に接続されている。各スキュー関数ブロック３１５には、同じ構成ビット３１０が入力される。構成ビット３１０は、任意の適切な方法で静的又は動的に設定することができる。例えば、構成ビット３１０は、ヒューズを切るか、ＴＬＢ３００（又は、ＴＬＢが実装されているか、ＴＬＢ３００が動作可能に接続されているプロセッサの他のコンポーネント）内の不揮発性メモリレジスタを設定することによって設定されてもよいし、ＴＬＢ３００をコンポーネントとするコンピュータシステムの基本入出力システム（ＢＩＯＳ）に設定されてもよい。また、構成ビット３１０は、代替として、オペレーティングシステムによって設定されてもよいし、そうでなければ、ＴＬＢ３００が実装されるかＴＬＢが動作可能に接続されるプロセッサのＴＬＢ３００又は他のコンポーネントのレジスタに設定されてもよい。
【００３８】
仮想アドレスを物理アドレスに変換するために、仮想アドレス３１０がＴＬＢ３００に入力される。ＴＬＢ３００がレベル２（Ｌ２）ＴＬＢである場合、仮想アドレス３１０は、例えば、Ｌ１  ＴＬＢミスの後にレベル１（Ｌ１）ＴＬＢから入力され得るが、他の適切な実施形態も可能である。仮想アドレス３１０は、仮想ページ番号と、仮想ページへのオフセットと、を含む。この例では、仮想アドレス３１０は４８ビット幅であるが、他の実施形態では、任意の適切な幅を使用することができる。図３では、４８ビットの仮想アドレス３１０は、［４７：０］として表されている。４８ビットのサブセットは仮想ページ番号に対応し、４８ビットの別のサブセットはオフセットに対応する。何れのビットが使用されるかは、仮想アドレス３０５に関連する仮想ページサイズによって異なる。
【００３９】
仮想アドレス３０５が４Ｋページを反映している場合、ビット［４７：１２］はページ番号であり、ビット［１１：０］はページへのオフセットである。仮想アドレス３０５が３２Ｋページを反映している場合、ビット［４７：１５］はページ番号であり、ビット［１４：０］はページへのオフセットである。仮想アドレス３０５が２Ｍページを反映している場合、ビット［４７：２１］はページ番号であり、ビット［２０：０］はページへのオフセットである。３つのページサイズ全てに共通の最下位ビットは［２１］である。したがって、ビット［２２：２１］は、［２２：２１］のその値について何れのページサイズを保持するために何れのウェイが使用されるかを決定するために使用され、各ウェイのスキュー関数ブロック３１５に入力される。範囲内で［２１］より下のビットは、この目的のために選択されない。これは、２Ｍページの場合には、これらのビットは、ページ番号ではなくオフセットの一部であり、（オフセットは物理アドレスに渡されるので）変換ハードウェアによって処理されないからである。ただし、いくつかの実施形態では、［２１］より上の他のビットが使用される場合がある。さらに、２つ又は３つよりも多いページサイズのみをサポートするウェイ構成が実装されている場合、１ビット又は２ビットを超えるビットをインデックス付けに使用することができる。
【００４０】
スキュー関数ブロック３１５の各々は、仮想アドレス３１０の構成ビット３１０及びビット［２２：２１］を入力し、スキュー関数３２０を入力に適用することによって生成された値を出力する。ウェイ毎のスキュー関数３２０（スキュー関数３２０’，３２０’’，３２０’’’のみが示されており、全てのスキュー関数をまとめて３２０と呼ぶ）は、異なっていてもよい。表１及び表２は、構成ビット３１０（８−２−２構成と６−３−３構成の何れかを選択）及び仮想アドレス３１０のビット［２２：２１］に基づいて、１６個のウェイ３０５のうち何れのウェイが、異なるページサイズの物理アドレスを記憶するのに使用されるかの例を列挙している。
【００４１】
【表１】
2020514859.tif 000003
【表２】
2020514859.tif 000004
【００４２】
各ウェイ３０５は、インデックスマルチプレクサ（３２５’，３２５’’，３２５’’’が示されており、全てのインデックスマルチプレクサをまとめて３２５と呼ぶ）によってインデックス付けされている。各インデックスマルチプレクサ３２５は、入力仮想アドレス３１０の可能なページサイズ毎に１つずつ、３つの可能なインデックスを入力する。インデックスは、仮想アドレス３１０の仮想ページ番号部分のビット範囲である。ビットの範囲は、ページサイズ毎に異なる。この例では、インデックスマルチプレクサ３２５は、仮想アドレス３０５が４Ｋページサイズを反映する場合には、仮想アドレス３１０のビット［１８：１２］を入力し、仮想アドレス３０５が３２Ｋページサイズを反映する場合には、仮想アドレス３１０のビット［２３，２０：１５］を入力し、仮想アドレス３０５が２Ｍのページサイズを反映する場合には、仮想アドレス３１０のビット［２９：２３］を入力する。各マルチプレクサ３２５は、各々のスキュー関数３２０に基づいて、３つの可能なインデックス（３３０’，３３０’’，３３０’’’が示されており、全てのインデックスをまとめて３３０と呼ぶ）のうち何れのインデックスを各ウェイに使用するかを選択する。
【００４３】
各ウェイ３０５は、マルチプレクサ３２５によって選択されたインデックスに対応するエントリのペイロードを読み出しデータ（読み出しデータ３３５’，３３５’’，３３５’’’が示されており、全ての読み出しデータをまとめて３３５と呼ぶ）として出力する。読み出しデータ３３５レジスタの各々は、比較回路３４０によってチェックされ、ＴＬＢヒットが発生したかどうか（すなわち、１つのウェイが検索アドレスと一致する変換を有するかどうか）を判別する。比較回路３４０は、エントリに保持された仮想アドレスタグが検索仮想アドレスと一致するかどうか、及び、（例えば、ページサイズがペイロードのページサイズフィールドによって示される場合）読み出しデータ３３５として読み出されたエントリのページサイズが、スキュー関数によって決定されたページサイズと一致するかどうかを判別することによって、ＴＬＢヒットが生じたかどうかを判別する。ヒットした場合は、ＴＬＢヒットとなった読み出しデータ３３５が選択され、仮想アドレス３１０に対応する物理アドレス３４５がＴＬＢから出力される。
【００４４】
図４は、図３の構成可能なスキューアソシエイティブＴＬＢ３００を用いて、仮想アドレスを物理メモリアドレスに変換する例示的な方法４００を示すフロー図である。
【００４５】
仮想アドレス３１０がＴＬＢに入力されるという条件４０５において、インデックスマルチプレクサ３２５は、ステップ４１０において、仮想アドレス３１０のビット（この例では、ビット［２２：２１］）のサブセットに基づいて、仮想アドレス３１０からのビットを使用して、ページサイズ毎に１つずつ、計３つの可能なインデックスのうち１つのインデックスを入力するように設定される。
【００４６】
ビットの範囲は、ページサイズ毎に異なる。ビット［２２：２１］が、仮想アドレス３１０が第１ページサイズ（この例では、４Ｋ）に対応することを示す条件４１５において、インデックスマルチプレクサ３２５は、ステップ４２０において、仮想アドレス３１０のビットの第１サブセット（この例では、ビット［１８：１２］）を入力する。ビット［２２：２１］が、仮想アドレス３１０が第２ページサイズ（この例では、３２Ｋ）に対応することを示す条件４２５において、インデックスマルチプレクサ３２５は、ステップ４３０において、仮想アドレス３１０のビットの第２サブセット（この例では、ビット［２３，２０：１５］）を入力する。ビット［２２：２１］が、仮想アドレス３１０が第３ページサイズ（この例では、２Ｍ）に対応することを示す条件４３５において、インデックスマルチプレクサ３２５は、ステップ４４０において、仮想アドレス３１０のビットの第３サブセット（この例では、ビット［２９：２３］）を入力する。
【００４７】
インデックスマルチプレクサ３２５が、仮想アドレス３１０の適切なビットを入力した後、各マルチプレクサ３２５は、各々のスキュー関数３２０に基づいて入力を１つ選択し、各ウェイ３０５に対するインデックス３３０を生成する（ステップ４４５）。何れかのインデックス３３０が何れかのウェイ３０５においてエントリとヒットした場合、対応する物理ページ番号が各々の読み出しデータ３３５レジスタに出力される（ステップ４５０）。結果がＴＬＢミスであるという条件４５５において、ＴＬＢ３００は、ステップ４６０においてページウォークを開始する。結果がＴＬＢヒットであれば、読み出しデータ３３５として出力された物理アドレス及び仮想アドレス３１０のページオフセットに基づいて、仮想アドレス３１０に対応する物理アドレス３４５がＴＬＢから出力される（ステップ４６５）。
【００４８】
ＴＬＢミスが発生した場合、ＴＬＢ３００は、ページテーブルをウォークする等の既知の方法を介して、対応する物理アドレス３４５を取得し、置換ポリシーに従って、取得した物理アドレス３４５を１つのウェイ３０５にインストールする。使用される置換ポリシーは、ウェイ３０５間でサポートされるページサイズの分布に依存することができる。例えば、４Ｋページが８ウェイアソシエイティブ構成（例えば、上述した８−２−２構成）で記憶されているか、又は、６ウェイアソシエイティブ構成（例えば、上述した６−３−３構成）で記憶されているかに応じて、４Ｋページに対して異なる置換ポリシーを使用することができる。
【００４９】
一例では、標準的な擬似最長未使用時間（擬似ＬＲＵ、すなわちｔｒｅｅ−ＬＲＵ）方式を実施して、インデックス３３０に対応するエントリのうち、８ウェイアソシエイティブ構成の４Ｋページについて最長未使用時間のエントリを含むウェイ３０５を判別する。６ウェイアソシエイティブ構成の４Ｋページに対するＬＲＵエントリを判別するために、ハイブリッドＬＲＵ方式を実施することができる。何れのＬＲＵ方式を使用するかは、構成ビット３１０を使用して選択することができる。
【００５０】
ＴＬＢ３００の各ラインは、当該ラインがどのくらい最近にアクセスされたかを追跡するための７ビット（ＬＲＵビットと呼ぶことができる）の関連シーケンスを有する。７つのＬＲＵビットは、全てのウェイで同じインデックスに適用されるため、この例では、ＬＲＵビットのグループが１２８個存在する。ＬＲＵビットの各セットは、ＴＬＢ３００の各々のインデックスに対して何れのウェイが最長未使用時間ウェイであるかを示す。ＬＲＵビットに適用するのに適切なＬＲＵ方式を選択することによって、同じＬＲＵビットを使用して、８−２−２構成又は６−３−３構成の最長未使用時間ウェイを追跡することができる。
【００５１】
図５は、ＴＬＢミスを処理する例示的な方法５００を示すフロー図である。ＴＬＢミスが発生したことを条件５１０として（例えば、図４のステップ４５５のように）、ＴＬＢ３００は、ステップ５２０において、既知の方法に従ってページウォークを開始して、物理アドレスを取得する。構成ビット３１０が、１６個のウェイ３０５のうち８個のウェイが４Ｋページをサポートするように構成されていることを示す（すなわち、上述した８−２−２構成）ことを条件５３０として、ステップ５４０において、４Ｋページ用に構成されたウェイ３０５のうち最長未使用時間ウェイが、ＬＲＵロジックを使用して判別される。いくつかの実施形態では、ＬＲＵロジックは、擬似ＬＲＵ（すなわち、「ｔｒｅｅ」ＬＲＵ）ロジックを含む。構成ビット３１０が、１６個のウェイ３０５のうち６個のウェイが４Ｋページをサポートするように構成されていることを示す（すなわち、上述した６−３−３構成）ことを条件５３０として、ステップ５５０において、４Ｋページ用に構成されたウェイ３０５のうち最長未使用時間ウェイが、ＬＲＵロジックを使用して判別される。いくつかの実施形態では、ステップ５５０のＬＲＵロジックは、「ｔｒｅｅ」ＬＲＵロジックと「ｔｒｕｅ」ＬＲＵロジックの両方を含むハイブリッド方式に従う。何れの場合でも、ページウォーク中に取得された物理アドレスは、ステップ５４０又はステップ５５０の何れかで判別されるように、４Ｋページ用に構成されたウェイ３０５のうち最長未使用時間ウェイにインストールされる（ステップ５６０）。対応する手順は、３２Ｋと２Ｍのページサイズにも使用される。
【００５２】
本明細書の開示に基づいて多くの変形が可能であることを理解されたい。機能及び要素を特定の組み合わせで上記のように説明されているが、各機能又は要素は、他の機能や要素なしに単独で使用されてもよいし、他の機能や要素を伴って若しくは伴わずに様々な組み合わせで使用されてもよい。
【００５３】
提供された方法には、汎用コンピュータ、プロセッサ又はプロセッサコアにおける実施が含まれる。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、任意の他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令、及び、ネットリストを含む他の中間データ（このような命令はコンピュータ可読媒体に記憶され得る）の結果を使用して製造プロセスを構成することによって製造されてもよい。このような処理の結果は、本実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００５４】
本明細書で提供される方法又はフロー図は、汎用コンピュータ若しくはプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア、ファームウェアにおいて実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、光磁気媒体、光学媒体（ＣＤ−ＲＯＭディスク等）、デジタル多用途ディスク（ＤＶＤ）等が含まれる。
【図１】
2020514859.tif 000005
【図２】
2020514859.tif 000006
【図３】
2020514859.tif 000007
【図４】
2020514859.tif 000008
【図５】
2020514859.tif 000009
【手続補正書】
【提出日】令和1年10月18日(2019.10.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
第１ページサイズを保持するようにＴＬＢの複数のウェイの第１サブセットを構成することであって、前記第１サブセットは、前記構成指標に基づく前記複数のウェイのサブセットを含む、ことと、
ＴＬＢヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力することと、を含む、
方法。
【請求項２】
前記複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されており、前記第２サブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項１の方法。
【請求項３】
前記第２サブセットに含まれるウェイの数に対する前記第１サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項２の方法。
【請求項４】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項１の方法。
【請求項５】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項４の方法。
【請求項６】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム又は構成レジスタから受信される、
請求項１の方法。
【請求項７】
仮想アドレス及び構成指標を受信するように構成された入力回路と、
複数のウェイであって、前記複数のウェイの第１サブセットは、前記構成指標に基づいて、第１ページサイズを保持するように構成されており、前記第１サブセットは、前記構成指標に基づく前記複数のウェイのサブセットを含む、複数のウェイと、
ＴＬＢヒットが発生したことを条件として、前記仮想アドレスに対応する物理アドレスを出力するように構成された出力回路と、を備える、
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）。
【請求項８】
前記複数のウェイの第２サブセットは、第２ページサイズを保持するように構成されており、前記第２サブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項９】
前記第２サブセットに含まれるウェイの数に対する前記第１サブセットに含まれるウェイの数の比率は、前記構成指標に基づいている、
請求項８のスキューアソシエイティブＴＬＢ。
【請求項１０】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項１１】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項１０のスキューアソシエイティブＴＬＢ。
【請求項１２】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項７のスキューアソシエイティブＴＬＢ。
【請求項１３】
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）を用いて、仮想アドレスに対応する物理メモリ内のアドレスを決定する方法であって、
受信機回路を用いて、仮想アドレス及び構成指標を受信することと、
ＴＬＢミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得することと、
前記物理アドレスの少なくとも一部を、前記ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールすることと、を含み、
前記ＬＲＵウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
方法。
【請求項１４】
前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項１３の方法。
【請求項１５】
第２サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項１３の方法。
【請求項１６】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項１３の方法。
【請求項１７】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項１６の方法。
【請求項１８】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項１３の方法。
【請求項１９】
前記構成指標は、単一ビットを含む、
請求項１３の方法。
【請求項２０】
複数のウェイと、
仮想アドレス及び構成指標を受信するように構成された入力回路と、
ＴＬＢミスが発生したことを条件として、前記仮想アドレスに対応する物理アドレスをページテーブルから取得するように構成された入力回路と、
前記物理アドレスの少なくとも一部を、前記ＴＬＢの複数のウェイのサブセットの最長未使用時間（ＬＲＵ）ウェイにインストールするように構成された置換回路と、を備え、
前記ＬＲＵウェイは、置換ポリシーに従って決定され、前記置換ポリシーは、前記構成指標に基づいている、
スキューアソシエイティブ変換索引バッファ（ＴＬＢ）。
【請求項２１】
前記複数のウェイのサブセットは、前記構成指標に基づくいくつかのウェイを含む、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２２】
第２サブセットに含まれるウェイの数に対する前記サブセットに含まれる前記複数のウェイの数の比率は、前記構成指標に基づいている、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２３】
前記複数のウェイに対するインデックスは、前記構成指標に基づいて、スキュー関数によって計算される、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２４】
前記仮想アドレスのビットのサブセットが前記スキュー関数に入力され、前記仮想アドレスの何れのビットが前記ビットのサブセットに含まれるかは、前記構成指標に基づいて計算される、
請求項２３のスキューアソシエイティブＴＬＢ。
【請求項２５】
前記構成指標は、基本入出力システム、溶断ヒューズ、オペレーティングシステム（ＯＳ）又は構成レジスタから受信される、
請求項２０のスキューアソシエイティブＴＬＢ。
【請求項２６】
前記構成指標は、単一ビットを含む、
請求項２０のスキューアソシエイティブＴＬＢ。
【国際調査報告】
2020514859.tif 000010
2020514859.tif 000011
2020514859.tif 000012