(57)【要約】  仮想メモリプリフェッチ要求が仮想メモリおよびマルチポートメモリ管理ユニット（ＭＭＵ）回路（１１４）に対して生成される。ＭＭＵ回路（１１４）の特定のポート（１２４，１２６，１２８）に送信される仮想メモリアクセス要求がモニタリングされる。トリガ条件の充足に応じて、仮想メモリプリフェッチ要求が生成され、特定のポート（１２４，１２６，１２８）を用いてＭＭＵ回路（１１４）に送信される。仮想メモリプリフェッチ要求に対応する物理アドレスに対する、ＭＭＵ回路（１１４）からの物理アクセス要求がモニタリングされる。仮想メモリプリフェッチ要求に対応する物理アクセス要求がフィルタリングされる。
2019517081.tif 000002
【特許請求の範囲】
【請求項１】
仮想メモリおよびマルチポートメモリ管理ユニット（ＭＭＵ）回路に対する仮想メモリプリフェッチ要求を生成する方法であって、前記方法は、
前記ＭＭＵ回路の特定のポートに送信される仮想メモリアクセス要求をモニタリングするステップと、
前記仮想メモリアクセス要求に基づく少なくとも１つのトリガ条件の充足を検出するステップと、
前記トリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成するステップと、
前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するステップと、
前記仮想メモリプリフェッチ要求に対応する物理アドレスに対する、前記ＭＭＵ回路からの物理アクセス要求を、モニタリングするステップと、
前記仮想メモリプリフェッチ要求に対応する前記物理アクセス要求をフィルタリングするステップとを含む、方法。
【請求項２】
前記仮想メモリのページサイズの表示を受け、前記表示に応じて前記少なくとも１つのトリガ条件を調整するステップをさらに含む、請求項１に記載の方法。
【請求項３】
生成する仮想メモリプリフェッチ要求の数の表示を受け、前記表示に応じて別のトリガ条件を調整するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ＭＭＵ回路の前記特定のポートのアイドル状態を検出するステップをさらに含み、  前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するステップは、前記アイドル状態の検出に応じて実行される、請求項１〜３のいずれかに記載の方法。
【請求項５】
対応する表示を受けたことに応じて、前記アイドル状態の検出に対する反応性を無効にするステップをさらに含む、請求項４に記載の方法。
【請求項６】
仮想メモリプリフェッチ要求生成の発行レートの表示を受け、前記表示に応じて、前記仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するステップをさらに含む、請求項１〜５のいずれかに記載の方法。
【請求項７】
システムであって、
複数のポートを含むメモリ管理ユニット（ＭＭＵ）回路を備え、前記ポートは各々、それぞれの変換ルックアサイドバッファ（ＴＬＢ）を用いて仮想メモリアドレスを物理メモリアドレスに変換するように構成されており、
少なくとも１つのＴＬＢプリフェッチ回路を備え、前記少なくとも１つのＴＬＢプリフェッチ回路は、前記複数のポートのうちの特定のポートについて、
前記ＭＭＵ回路の前記特定のポートに送信される仮想メモリアクセス要求をモニタリングし、
前記仮想メモリアクセス要求について、少なくとも１つのトリガ条件の充足を検出し、
前記少なくとも１つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成し、
前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するように、構成され、前記システムはさらに、
少なくとも１つのＴＬＢプリフェッチフィルタ回路を備え、前記少なくとも１つのＴＬＢプリフェッチフィルタ回路は、
前記仮想メモリプリフェッチ要求に対応する物理アドレスに対する、前記ＭＭＵ回路からの物理アドレス要求を、モニタリングし、
前記仮想メモリプリフェッチ要求に対応する前記物理アドレスをフィルタリングするように、構成されている、システム。
【請求項８】
前記少なくとも１つのＴＬＢプリフェッチフィルタ回路はさらに、前記フィルタリングした物理アドレスに関するトランザクション完了表示を生成し、前記トランザクション完了表示を前記ＭＭＵ回路に与えるように構成されている、請求項７に記載のシステム。
【請求項９】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、前記システムの仮想メモリのページサイズの表示を受け、前記表示に応じて前記少なくとも１つのトリガ条件を調整するように構成されている、請求項７または８に記載のシステム。
【請求項１０】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、生成する仮想メモリプリフェッチ要求の数の表示を受け、前記表示に応じて別のトリガ条件を調整するように構成されている、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、前記特定のポートのアイドル状態を検出し、前記アイドル状態の検出に応じて前記仮想メモリプリフェッチ要求を送信するように構成されている、請求項７〜１０のいずれかに記載のシステム。
【請求項１２】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、対応する表示を受けたことに応じて、前記アイドル状態の検出に対する反応性を無効にするように構成されている、請求項１１に記載のシステム。
【請求項１３】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、前記表示に応じて、前記仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するように構成されている、請求項１０に記載のシステム。
【請求項１４】
前記少なくとも１つのＴＬＢプリフェッチ回路は、前記ＭＭＵ回路の前記特定のポートに送信される前記仮想メモリアクセス要求が書込要求か読出要求かを判断し、書込要求の場合は仮想メモリプリフェッチ要求を書込要求として構成し読出要求の場合は仮想メモリプリフェッチ要求を読出要求として構成するように、構成されている、請求項１０〜１３のいずれかに記載のシステム。
【請求項１５】
前記ＭＭＵ回路、前記少なくとも１つのＴＬＢプリフェッチ回路、および前記少なくとも１つのＴＬＢプリフェッチフィルタ回路各々を含む集積回路チップをさらに備える、請求項１０〜１４のいずれかに記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概してメモリプリフェッチに関し、より具体的には仮想メモリ変換のためにキャッシュをポピュレートするためのメモリプリフェッチに関する。
【背景技術】
【０００２】
背景
プログラマブル集積回路、プログラマブルロジックデバイス（ＰＬＤ）、およびシステムオンチップ（ＳｏＣ）デバイスを含むがこれらに限定されないメモリ回路を使用できる多種多様なアプリケーションが存在する。ＳｏＣデバイスの中には、さまざまなＰＬＤが提供するプログラマブルロジックと同様のプログラマブルロジックを含むものがある。ＰＬＤは、指定された論理機能を実行するようにプログラムできる一種のプログラマブル集積回路（ＩＣ）である。ＰＬＤの一種であるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は、プログラマブルタイルのアレイを含み得る。これらのプログラマブルタイルは、さまざまな種類の論理ブロックを含み、これらの論理ブロックは、たとえば、入出力ブロック（ＩＯＢ）、コンフィギュラブル論理ブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）、バスまたはネットワークインターフェイス（周辺コンポーネントインターコネクト（ＰＣＩ）、ＰＣＩエクスプレス（ＰＣＩｅ）およびイーサネット（登録商標）など）などを、含み得る。デバイスの中には、単一のＩＣチップ上の全コンピュータシステムとして有効に機能するのに十分な構成要素と機能とを含むデバイスがある。このような機能を有するデバイスはＳｏＣと呼ばれることがある。
【０００３】
ＳｏＣは、複数のマスタが共通の物理メモリおよびＩ／Ｏを共有し得る一種のアプリケーションである。マスタがメモリを共有できるようにするための１つの方法は、仮想メモリを使用することである。各マスタは、物理アドレス空間にマッピングされた自身の仮想アドレス空間の中で動作することができる。メモリ管理ユニット（ＭＭＵ）回路を、仮想アドレスを物理アドレスに変換するように構成することができる。この変換は効率の大きな妨げになることがある。
【０００４】
これらおよびその他の問題は、ＩＣの設計およびその使用における課題になり得る。
【発明の概要】
【課題を解決するための手段】
【０００５】
概要
いくつかの実装例は、仮想メモリ変換のためにキャッシュをポピュレートするためのメモリプリフェッチを対象とする。このプリフェッチは、各々がＭＭＣ回路の異なるポートのうちの１つに対応する複数のプリフェッチ生成回路間で分散させることができる。
【０００６】
特定の実装例は、仮想メモリおよびマルチポートメモリ管理ユニット（ＭＭＵ）回路に対する仮想メモリプリフェッチ要求を生成する方法を対象とする。ＴＬＢプリフェッチ回路は、ＭＭＵ回路の特定のポートに送信される仮想メモリアクセス要求をモニタリングし、仮想メモリアクセス要求に基づく少なくとも１つのトリガ条件の充足を検出する。ＴＬＢプリフェッチ回路は、上記少なくとも１つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成する。仮想メモリプリフェッチ要求は、特定のポートを用いてＭＭＵ回路に送られる。仮想メモリプリフェッチ要求に対応する物理アドレスに対する、ＭＭＵ回路からの物理アクセス要求が、モニタリングされる。仮想メモリプリフェッチ要求に対応する物理アクセス要求がフィルタリングされる。
【０００７】
特定の実装例は、ＭＭＵ回路を備えるシステムを対象とする。ＭＭＵ回路は複数のポートを含む。各ポートは、それぞれの変換ルックアサイドバッファ（ＴＬＢ）を用いて仮想メモリアドレスを物理メモリアドレスに変換するように構成されている。このシステムは少なくとも１つのＴＬＢプリフェッチ回路を含む。ＴＬＢプリフェッチ回路は、複数のポートのうちの特定のポートについて、ＭＭＵ回路のこの特定のポートに送信される仮想メモリアクセス要求をモニタリングし、この仮想メモリアクセス要求について、少なくとも１つのトリガ条件の充足を検出し、この少なくとも１つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成し、仮想メモリプリフェッチ要求を上記特定のポートを用いてＭＭＵ回路に送るように、構成されている。このシステムは少なくとも１つのＴＬＢプリフェッチフィルタ回路を含む。このＴＬＢプリフェッチフィルタ回路は、仮想メモリプリフェッチ要求に対応する物理アドレスに対する、ＭＭＵ回路からの物理アドレス要求を、モニタリングし、仮想メモリプリフェッチ要求に対応する物理アドレスをフィルタリングするように、構成されている。
【０００８】
その他の特徴は、以下の詳細な説明および請求項の検討を通して理解されるであろう。
方法、装置、およびシステムの各種側面および特徴は、以下の詳細な説明の検討および図面の参照によって明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】本開示の各種実装例に従う、マルチポートＭＭＵに対する仮想メモリプリフェッチ要求を生成するためのシステムのブロック図である。
【図２】本開示の実装例に従う、ＴＬＢプリフェッチ回路およびＴＬＢプリフェッチフィルタ回路の特定の側面を示すブロック図である。
【図３】本開示の実装例に従う、仮想メモリプリフェッチ要求の生成のフロー図である。
【図４】本開示の実装例に従う、トリガ条件の構成および使用のフロー図である。
【図５】本開示の実装例に従う、仮想メモリプリフェッチ要求を使用するように構成された集積回路（ＩＣ）チップの一例を示す。
【発明を実施するための形態】
【００１０】
詳細な説明
以下の記載において、数多くの具体的詳細事項を述べることにより、本明細書に示す特定の実施例を説明する。しかしながら、１つ以上のその他の実施例および／またはこれらの実施例の変形は以下に示す具体的詳細事項すべてがなくても実施し得ることは明白である。その他の例において、周知の特徴は、本明細書における実施例の説明が不明瞭になることを避けるために、詳述していない。説明をし易くするために、各種図面において同一の参照番号を使用することにより同一要素または同一要素のその他の例を示している。
【００１１】
各種実装例は、変換ルックアサイドバッファ（ＴＬＢ）をポピュレートするためにプリフェッチ動作を用いることで仮想メモリアドレス変換を改善することを対象とする。たとえば、仮想メモリプリフェッチ要求は複数のプリフェッチ回路によって生成される。各プリフェッチ回路は、仮想メモリプリフェッチ要求のソースに対応する。各プリフェッチ回路は、結果としてそれぞれのＴＬＢをポピュレートするためのプリフェッチ要求を生成するように構成されている。このようにして、異なるＴＬＢを相対的に互いに独立して事前にポピュレートする。
【００１２】
特定の実装例は、プリフェッチ動作の生成および処理方法を制御するカスタマイズ可能なオプションを含む複数のプリフェッチ回路を含む。カスタマイズ可能なオプションは、各プリフェッチ回路を、それぞれの仮想メモリ空間および仮想メモリアドレス生成回路に関して異なるように構成することを可能にする。たとえば、各プリフェッチ回路を、それぞれの仮想メモリ空間のページサイズに対応する仮想アドレス範囲に含まれるデータブロックを要求するメモリプリフェッチ要求を発行するように構成することができる。各仮想メモリアドレス生成回路（たとえば、各中央処理装置（ＣＰＵ）またはグラフィックス処理装置（ＧＰＵ））は異なるページサイズを有し得るので、カスタマイズ可能なオプションを有する専用プリフェッチ回路を使用することにより、プリフェッチ動作の効率を改善することができる。カスタマイズ可能なオプションのさまざまな例を、本明細書においてより詳細に説明する。
【００１３】
オペレーティングシステム内で実行されるプロセスと比較すると、仮想メモリ空間は、複数の大きなメモリセクションが隣接しているように見える可能性があるが、データのための実際の物理的な場所は、メインメモリを提供する物理メモリ回路の異なる領域に分散させることができる。仮想メモリ空間を提供するように構成された処理回路は、メインメモリ内のデータの実際の場所を扱うことなく、仮想メモリアドレスを用いてデータアクセス要求を生成することができる。その代わりに、ＭＭＵ回路（または簡潔に「ＭＭＵ」）が、ページテーブルに格納されているマッピングに基づいて物理アドレスへの変換を処理してもよい。アドレス指定可能なマッピングは各々、ページテーブルエントリと呼ばれる。
【００１４】
各種実装例に従うと、仮想メモリ空間と物理（メイン）メモリ空間との間のアドレス変換は、ＭＭＵによって実行される。ページテーブルはメインメモリに格納することができ、ＭＭＵは、ページテーブルにアクセスすることにより、仮想メモリアクセス要求に対応する物理アドレスを取得することができる。このプロセスはページウォークと呼ばれることがある。ページウォークは、物理アドレスを計算するために、物理／メインメモリに格納されているページテーブルに複数回アクセスする必要がある場合がある。次に、取得した物理アドレスを、最初の仮想メモリアクセス要求に対応するデータを取り出すための別のメインメモリアクセスの一部として使用する。このように、仮想メモリアクセスは、結果としてメインメモリに多数回アクセスすることになり、そのため、一度メインメモリに直接アクセスすることに比べて、非常に遅くなる可能性がある。よって、ローカルキャッシュ回路が、メインメモリアクセスを回避できるよう、頻繁なページ変換を格納すればよい。この種のキャッシュ回路は変換ルックアサイドバッファ（ＴＬＢ）と呼ばれることがある。ＭＭＵは先ずＴＬＢの内容をチェックすることにより、仮想メモリアクセスとのマッチを発見することができる。マッチするエントリをキャッシュが含んでいる場合（ＴＬＢ「ヒット」）、適切な物理アドレス情報を用いて物理アドレスを計算する。ＭＭＵは次に、この物理アドレスを用いてメインメモリアクセス要求を発行することができる。マッチするエントリをキャッシュが含んでいない場合（ＴＬＢ「ミス」）、ＭＭＵは、ページテーブルにアクセスして所望の物理アドレスを取り出すことができる。結果として、上記ページウォークに遅延が生じる。
【００１５】
各種実装例に従うと、ＭＭＵは、仮想メモリアクセス要求の複数の異なるソースに対して複数のポートを有することができる。これらのソースを本明細書では仮想メモリアドレス生成回路またはマスタと呼ぶ。各ポートは、異なるＴＬＢおよび対応する制御回路を有し得る。ＴＬＢおよび制御回路をまとめて変換ルックアサイドバッファユニット（ＴＢＵ）と呼ぶ。単一の変換制御ユニット（ＴＣＵ）回路は、すべてのＴＢＵのアドレス変換を管理することができる。各種実装例は、ＴＬＢミスを低減するためにＴＬＢをエントリでポピュレートすることを目的とする仮想メモリアクセス要求の生成および処理を対象とする。これらの仮想メモリアクセス要求は、マスタが生成するのではなく、将来マスタが要求し得るものを予想して仮想メモリプリフェッチ回路（一時的にマスタとして動作し得る）が生成する。生成された仮想メモリアクセス要求はしたがって仮想メモリプリフェッチ要求と呼ばれる。より具体的な側面は、ＭＭＵのポートごとに、仮想メモリプリフェッチ回路を個別に調整することを可能にする。
【００１６】
多くのシステムにおけるメモリアクセスは、レイテンシが生じ易く予測不能である。ビデオまたはダイレクトメモリアクセス（ＤＭＡ）のような多くのアプリケーションは、大量の読取／書込データに関連する帯域幅要求と固定レイテンシ要求とを有し得る。仮想システム内で大量のデータを移動させるためには、多数のＭＭＵページ変換を実行する必要があり、これは多数のクロックサイクルを消費し得る。ＴＬＢにおけるＭＭＵページテーブルキャッシングは、変換オーバヘッドの低減において極めて重要な役割を果たし得る。ページテーブルサイズの一例は、４ＫＢ、１６ＫＢまたは６４ＫＢの間で変化し得る。ページテーブル変換は、ページごとに１度発生し、オフセットを用いて各ページ内に指標付けする。システムが４ＫＢページサイズ粒度を使用すると仮定すると、ＭＭＵは、アクセスしたアドレス空間の新たな４ＫＢごとに１度、ページテーブル変換を実行するであろう。先に述べたように、ページテーブルウォークは、法外な時間を消費する可能性があり、限定されたメモリリソースを使用する可能性がある。
【００１７】
各種実装例は、ＳｏＣとしてまたはそれ以外の処理システムとして構成することができるＩＣチップのメモリシステム内での効率的なデータ移動を提供する、コンフィギュラブルなプリフェッチ手法を対象とする。多くのＳｏＣにおけるＭＭＵは、プリフェッチ機能が大幅に制限されている。その原因は、たとえば、利用できるリソースに対する制限、および、最終的にエンドユーザがＳｏＣをどのように使用するかが不確定であることにある。各種実装例は、プリフェッチ動作を扱う方法を柔軟に設定またはプログラムできるようにする。その例は、実行しなければならないプリフェッチ要求の数を設定すること、および、プリフェッチ要求の支援において実行されるメインメモリアクセスの数を制限することによってプリフェッチのオーバヘッドを低減することとを含む。
【００１８】
また、いくつかの実装例は、プリフェッチ生成を、ＭＭＵおよびそのＴＢＵの上流で実現することにより、メモリシステムの効率を考慮する。プリフェッチ生成の制御を、仮想メモリアクセス要求のソースにより近づけることによって、（たとえば複数のＴＢＵおよび対応するポートからのトランザクションを扱うＴＣＵを用いて）プリフェッチ要求を中央で生成する手法と比較して、制御を一層個別化する（たとえばポートごと）ことができる。
【００１９】
次に図面を参照すると、図１は、本開示の各種実装例に従う、マルチポートＭＭＵに対する仮想メモリプリフェッチ要求を生成するためのシステムのブロック図を示す。示されているこのシステムの構成要素はＩＣチップ１００の上にあり、これは、対応する入力ポート１２４、１２６、および１２８ならびに対応する出力ポート１３８、１４０、および１４２に対する仮想メモリアクセス要求を生成する複数のマスタ１０２、１０４、および１０６を含む。これらのマスタは１つ以上の処理回路を含み、各処理回路はこのシステムの１つ以上の機能を提供する。このような回路の非限定的ないくつかの例は、ＣＰＵすなわち処理コア、ＧＰＵ、およびＤＭＡを用いて動作するように構成された回路を含む。
【００２０】
マルチポートＭＭＵ１１４は、マスタからの仮想メモリアクセス要求を、対応するポート上で受けるように構成される。これらのポートはそれぞれＴＢＵ１３２、１３４、および１３６を有し、各ＴＢＵは、対応付けられたマスタの異なる仮想メモリ空間に対応する。ＴＣＵ１３０は、ポートおよびその対応するＴＢＵごとに、アドレス変換を制御し管理する。これは、ＴＢＵおよびＴＢＵそれぞれのＴＬＢ回路を管理することによりＴＬＢヒットまたはＴＬＢミスがあるか否かを判断することを含む。また、ＴＣＵ１３０は、アドレス変換を制御し、次にメインメモリ１２２への対応するアクセスを生成する。
【００２１】
ＴＬＢプリフェッチ回路１０８、１１０、および１１２を、それぞれの対応するポートに対する仮想メモリプリフェッチ要求を生成するように構成することにより、それぞれのポートのプリフェッチ生成を互いに分離している。具体的な実装例において、ＴＬＢプリフェッチ回路１０８、１１０、および１１２は、プリフェッチ要求をいつどのようにして生成するかを決定するために使用するパラメータをマスタ１０２、１０４、および１０６が調整することを可能にするように設計されている。この調整機能は、制御（Ｃｔｒｌ）矢印で示されている。たとえば、コンフィギュレーションレジスタ１４４、１４６、１４８の１つ以上のセットを設けることにより、回路各々をカスタマイズすることができる。コンフィギュレーションレジスタに対しては、示されているマスタ１０２、１０４、および１０６、または、十分な権利を有するその他のマスタが、アクセスできる。コンフィギュレーションレジスタの内容には、これらのレジスタに格納されている値に従って構成されたＴＬＢプリフェッチ回路がアクセスできる。いくつかの実装例において、上記マスタは、構成の設定を指定するデータを送信するために、ＴＬＢプリフェッチ回路に直接アクセスする。
【００２２】
ＴＬＢプリフェッチ回路はプログラマブルロジックで実装してもよく、エンドユーザはパラメータのうちの１つ以上を設計ファイルに設定することができる。パラメータの設定および調整が可能な方法は、これらの例に限定される訳ではなく、異なる解決策をさまざまに組み合わせたものを使用することができる。上記分離および構成機能（configurability）は各々、個別のマスタ各々の異なる特徴に合わせたやり方でＴＢＵをポピュレートするのに特に有用である。これらの特徴の例は、仮想メモリ空間（たとえばページサイズ）および予測されるメモリアクセスプロファイル（たとえばデータアクセス頻度およびサイズ）の構成を含む。
【００２３】
いくつかの実装例に従うと、ＴＬＢプリフェッチフィルタ回路１１６、１１８、および１２０は、メインメモリ１２２へのアクセスをフィルタリングするために含まれている。具体的には、これらのフィルタ回路は、プリフェッチ要求から生成された物理アクセス要求をフィルタリングするように構成されている。たとえば、プリフェッチ回路１０８が仮想メモリアドレスＸに対するプリフェッチ要求を生成する場合がある。次に、ＭＭＵ１１４およびＴＣＵ１３０は、仮想メモリアドレスＸに対するエントリをＴＢＵ１３２は含んでいないと判断する。それに応じて、ＴＣＵ１３０は、メインメモリ１２２に格納されているページテーブルにアクセスすることによってページウォークを実行する。プリフェッチフィルタ回路１１６は、メインメモリへの物理アクセス要求をモニタリングし、ページテーブルへのアクセス要求がメインメモリに到達できるようにする。ＴＣＵ１３０がページウォークを終えると、ＴＢＵ１３２内のＴＬＢが、仮想メモリアドレスＸおよび対応する物理メモリアドレスＹに対応する変換エントリを格納することによって更新される。次に、ＭＭＵ１１４は、物理アドレスＹに対する物理メモリアクセス要求を送信することにより、仮想メモリアドレスＸに対するプリフェッチを完了しようと試みる。プリフェッチフィルタ回路１１６は、アドレスＹに対する物理メモリアクセス要求を、仮想メモリアドレスＸに対する最初のプリフェッチに相当すると認識し、この要求がメインメモリ１２２に到達しないようにする（フィルタリングする）。特定の実装例に従うと、プリフェッチフィルタ回路１１６はまた、ＴＬＢプリフェッチ回路１０８に対してトランザクション完了通知を生成するように構成されている。この通知は、プリフェッチ要求は完了し未処理ではないことを示すことができる。
【００２４】
プリフェッチフィルタ回路１１６のフィルタ機能は、処理および意思決定の負担をＭＭＵ１１４から取り除くのに特に有用である。具体的な実装例において、ＭＭＵ１１４の機能は、ＴＬＢプリフェッチ回路またはＴＬＢプリフェッチフィルタ回路を含まないシステムで使用されるＭＭＵ１１４と区別できない。
【００２５】
図２は、本開示の実装例に従う、ＴＬＢプリフェッチ回路およびＴＬＢプリフェッチフィルタ回路の具体的な側面を示すブロック図である。図２は１つのＴＬＢプリフェッチ回路２０４を示すが、（たとえば図１に示すように）ＭＭＵ２１４のその他のポートに対応するその他のＴＬＢプリフェッチ回路が含まれ得る。限定される訳ではないが、図２の各種構成要素の説明は、概ね図１および本開示のその他の部分に記載される同様の構成要素と一致する。アクセス要求生成器２０２は、アクセスレスポンス生成器２２６が提供する物理メモリ空間にマッピングされた仮想メモリ空間内で動作する。特定の実施形態において、図２のシステムは、ＡＭＢＡ（アドバンスドマイクロコントローラバスアーキテクチャ（Advanced Microcontroller Bus Architecture）拡張可能インターフェイス（eXtensible Interface）ＡＸＩ）相互接続／バスといったマスタ−スレーブ相互接続ソリューションを使用するＳｏＣの一部である。その他の相互接続およびバスのソリューションも可能である。
【００２６】
特定の実装例に従うと、ＴＬＢプリフェッチ回路２０４は、ＭＭＵ２１４の特定のポートに送信される仮想メモリアクセス要求をモニタリングするように構成されている。たとえば、プリフェッチトランザクション生成器モジュール２０６をアドレス要求バスに接続することができる。プリフェッチトランザクション生成器モジュール２０６は、アドレス要求バス上に現れた仮想メモリアクセス要求のアドレスを識別し追跡する。次に、プリフェッチトランザクション生成器モジュール２０６は、トリガ条件が充足されたか否かを判断することができる。具体的実装例において、プリフェッチトランザクション生成器モジュール２０６にとってのトリガ条件は、１つ以上のコンフィギュラブルパラメータに基づいて設定される。たとえば、プリフェッチトランザクション生成器モジュール２０６を、仮想メモリアドレスをＴＬＢの現在の内容と比較するトリガ条件で構成してもよい。ある具体的なトリガ条件は、現在の仮想メモリアドレスと比較して未来の連続仮想メモリアドレスの設定数をカバーするのに十分なエントリをＴＬＢが含むか否かに基づくものであってもよい。たとえば、現在の仮想メモリアドレスがＸでありトリガ条件がそれに続く３つのアドレス要求であってもよい。プリフェッチトランザクション生成器モジュール２０６は、Ｘ＋１、Ｘ＋２、およびＸ＋３に対するエントリをＴＬＢが含むか否かを判断する。含まなければ、このトリガ条件は充足されており、欠落しているエントリに対して１つ以上のプリフェッチ要求を生成すればよい。
【００２７】
プリフェッチトランザクション生成器モジュール２０６は、生成されたプリフェッチ要求をＭＭＵ２１４に送信する。特定の実装例において、プリフェッチトランザクション生成器モジュール２０６は、この送信の表示を制御ロジック２１０に与える。マルチプレクサ回路２０８は、ＭＭＵ２１４が仮想メモリアクセス要求をアクセス要求生成器２０２から受けるのかまたはプリフェッチトランザクション生成器２０６から受けるのかを制御し、プリフェッチトランザクション生成器モジュール２０６が、アクセス要求生成器２０２との複雑な調停を要することなく、一時的にマスタとして機能できるようにする。たとえば、アクセス要求生成器２０２は、プリフェッチトランザクション生成器２０６に関する明確な知識がないままで動作することができる。
【００２８】
トリガ条件の別の例として、プリフェッチトランザクション生成器２０６を、（ＡＸＩ）相互接続／バスがアイドル状態になったことが検出されるまで、プリフェッチ要求の送信を遅延させるように構成してもよい。プリフェッチ要求をアイドル状態／時間に限定することは、プリフェッチ要求によるさらなるメモリアクセスの悪影響を緩和するのに有用であろう。特定の実施形態において、アイドル状態に対する反応性を無効にすることにより、プリフェッチ要求を、バスのアイドル状態とは関係なく送信することができる。
【００２９】
ＭＭＵ２１４は、仮想メモリプリフェッチ要求を受けると、この要求を、通常は、ＴＢＵ２１６および含まれているＴＬＢの、仮想メモリアクセス要求に対応するエントリを調べることによって処理する。通常、ＴＢＵを調べた結果はＴＬＢミスとなるであろう。なぜなら、プリフェッチトランザクション生成器２０６は、ＴＬＢの中に存在しないと予測されるエントリに対する仮想メモリプリフェッチ要求を生成するからである。ＴＬＢミスが生じると、アクセスレスポンス生成器２２６を通してアクセス可能なメモリ回路に格納されているページテーブルのページウォークが行われる。所望の物理アドレス情報が発見されると、ＭＭＵ２１４はＴＬＢを対応するエントリを含むように更新する。
【００３０】
各種実装例に従うと、ＭＭＵ２１４は、アクセス要求生成器２０２で生成された仮想メモリアクセス要求と、プリフェッチトランザクション生成器モジュール２０６で生成された仮想メモリプリフェッチアクセス要求とを区別しない。このため、ＭＭＵ２１４は次に、物理アクセス要求をアクセスレスポンス生成器２２６に送ることによってこの仮想メモリアクセス要求を完了しようと試みることになる。プリフェッチフィルタ回路２１８は、ＭＭＵからアクセスレスポンス生成器２２６への物理アクセス要求をモニタリングするように構成されている。プリフェッチアクセス要求に由来する物理アクセス要求の存在が検出されると、フィルタ／ブロッキングモジュール２２０は、この物理アクセス要求をフィルタリングしてアクセスレスポンス生成器２２６に到達しないようブロックする。具体的実装例は、フィルタリングすべき物理アクセス要求を識別するために、物理アクセス要求内の識別子（ＩＤＥ）を使用する。たとえば、プロセス固有のＩＤが、仮想メモリ（プリフェッチ）アクセス要求および対応する物理メモリアクセス要求に添付されていてもよい。プリフェッチトランザクション生成器モジュール２０６に、プリフェッチフィルタ回路２１８が認識する特定のＩＤＥを割り当てることにより、対応する物理アクセス要求をフィルタリングしてもよい。
【００３１】
各種実装例に従うと、アクセスレスポンス生成器２２６は、物理アクセス要求が完了すると、アクセス要求生成器２０２に対する通知を生成する。アクセスレスポンス生成器２２６は、フィルタリングされた物理アクセス要求については通知を生成しない。これは、ＭＭＵもプリフェッチトランザクション生成器モジュール２０６もプリフェッチ動作がいつ完了したかわからないことを意味し得る。このため、レスポンス生成器２２２を、フィルタリングされたプリフェッチに関して完了通知を生成するように構成してもよい。マルチプレクサ回路２２４は、レスポンス生成器２２２が、レスポンスの径路を設定するのに使用される通信バスに一時的にアクセスできるようにする。プリフェッチレスポンスフィルタ２１２は、ＭＭＵを通ってプリフェッチトランザクション生成器モジュール２０６に至る、レスポンス生成器からの通知の径路を定めるように構成されている。
【００３２】
図３は、本開示の実装例に従う、仮想メモリプリフェッチ要求の生成のフロー図である。ブロック３０２で、ＴＬＢプリフェッチ回路は仮想メモリ（ＶＭ）アクセス要求をモニタリングする。たとえば、ＴＬＢプリフェッチ回路は、マスタとＭＭＵとの間のアドレスバスに接続すればよい。よって、ＴＬＢプリフェッチ回路は、モニタリング作業の一部として、仮想メモリアクセスの仮想メモリアドレス値にアクセスすることができる。
【００３３】
各種実装例に従うと、ブロック３０４で、ＴＬＢプリフェッチ回路は、モニタリングした情報を用いて、トリガ条件がいつ充足したかを判断する。トリガ条件が充足していなければ、ＴＬＢプリフェッチ回路は仮想メモリアクセスのモニタリングを続ける。トリガ条件が充足している場合、ブロック３０６で、ＴＬＢプリフェッチ回路は１つ以上の仮想メモリプリフェッチ要求を生成する。場合によっては、ＴＬＢプリフェッチ回路がプリフェッチ要求の生成を開始する前に、複数のトリガ条件を調べることがある。たとえば、ＴＬＢプリフェッチ回路を、（現在の仮想メモリ要求のアドレスとの比較における）ＴＬＢ内のプリフェッチ要求の深さに対応する第１のトリガイベントで構成することができる。第２のトリガイベントは、マスタとＭＭＵとの間のデータバスのアイドル状態に対応し得る。第１および第２のトリガイベント双方が充足すると、ＴＬＢプリフェッチ回路はプリフェッチの生成を開始する。本明細書ではトリガ条件の各種例についてより詳細に説明する。
【００３４】
ブロック３０８で、ＴＬＢプリフェッチ回路は、生成したプリフェッチ要求をＭＭＵに送信する。特定の実装例において、この送信は、マルチプレクサ回路を用いてＴＬＢプリフェッチ回路がメモリシステムにおいて一時的にマスタとして機能できるようにすることを含む。プリフェッチ要求の一部として、ＴＬＢプリフェッチ回路はまた、プリフェッチ要求にフラグを立てる表示を含み得る。このフラグを用いることで、この特定の仮想メモリアクセスがマスタに由来しないプリフェッチであると判断することができる。このようなフラグの具体例は、マスタが使用するプロセスＩＤに対し、ＴＬＢプリフェッチ回路を一意的に特定するＩＤである。
【００３５】
ブロック３１０で、プリフェッチフィルタ回路は、ＭＭＵと物理／メインメモリとの間の相互接続バス上にある物理アクセス要求をモニタリングする。特定の実装例において、プリフェッチフィルタ回路は、物理アクセス要求を、各アクセス要求から、このアクセス要求のソースを特定する固有ＩＤを取り出すことにより、モニタリングすることができる。ブロック３１２で、プリフェッチフィルタ回路は、この情報を用いることにより、アクセス要求が、プリフェッチによって推進されたプリフェッチ推進アクセス要求であるか否かを判断することができる。たとえば、プリフェッチフィルタ回路は、ＴＬＢプリフェッチ回路に対応する固有ＩＤを含むアクセス要求を探す。アクセス要求がプリフェッチ推進アクセス要求でなければ、ブロック３１０において、プリフェッチフィルタ回路は物理アクセス要求のモニタリングを続ける。アクセス要求がプリフェッチ推進アクセス要求の場合、ブロック３１４において、プリフェッチフィルタ回路は対応するアクセス要求をフィルタリングする。たとえば、プリフェッチフィルタ回路は、アクセス要求において受けたＩＤを、ＴＬＢプリフェッチ回路に対応する予め格納されている固有ＩＤと比較する比較器回路を含むことができる。マッチしている場合、プリフェッチフィルタ回路は、たとえば、受けたアクセス要求をメインメモリに転送する出力ドライバを無効にすることにより、アクセス要求をフィルタリングする。
【００３６】
アクセス要求のフィルタリングは、メインメモリへのアクセスを提供するスレーブ回路がアクセス要求を受けることはないことを意味する。よって、スレーブ回路がアクセス要求について完了通知を生成することはない。特定の実装例に従うと、プリフェッチフィルタ回路は、ブロック３１６においてこのような完了の表示または通知を生成するように設計されている。この完了通知はＴＬＢプリフェッチ回路に与えることができる。ＴＬＢプリフェッチ回路は次に、ブロック３１８において、追加のプリフェッチ要求を生成するか否かを判断することができる。ブロック３１８における判断の一例は、最後のプリフェッチの仮想メモリアドレスを、ＴＬＢの所望の深さと比較することである。たとえば、最後の仮想メモリアドレスがアドレスＸに対するアドレスでありプリフェッチがアドレスＸ＋２に対するものである場合、ＴＬＢプリフェッチ回路は、深さが３以上に設定されていれば追加のプリフェッチ要求を生成することになる。
【００３７】
図４は、本開示の実装例に従う、トリガ条件の構成および使用のフロー図である。このフローは、各種構成入力４２０を用いることにより、ＴＬＢプリフェッチ回路のさまざまなトリガ条件および機能を設定できることを示す。このフローは、ブロック４０２においてＴＬＢプリフェッチ回路が仮想メモリアクセス要求を検出したときに開始される。ＴＬＢプリフェッチ回路はまた、ブロック４０４において、仮想メモリアクセス要求のＶＭアドレスを求める。ＴＬＢプリフェッチ回路は、ブロック４０６において、求めた仮想メモリアドレスを用いることにより、ＴＬＢの現在の内容が十分であるか否かを判断することができる。特定の実装例に従うと、ブロック４０６における判断は、プリフェッチ数または深さに基づいていてもよい。たとえば、プリフェッチ深さ３は、ＴＬＢが、求めた仮想メモリアドレスに対し、後続の３つのエントリを含むはずであることを示す。より具体的には、求めた仮想メモリアドレスが「Ｘ」である場合、ＴＬＢプリフェッチ回路は、ＴＬＢがＸ＋１、Ｘ＋２、およびＸ＋３に対するエントリを含むか否かを判断する。Ｘ＋１は、仮想メモリ空間におけるＸの次の連続ページを表す。
【００３８】
内容が十分であると判断した場合、ＴＬＢプリフェッチ回路は、ブロック４０２において、仮想メモリアクセスのモニタリングおよび検出を続ける。内容が十分でない場合、ＴＬＢプリフェッチ回路は、ブロック４０８において、仮想メモリプリフェッチアドレスを求める。たとえば、メモリアドレスが「Ｘ」で深さが３である先の例において、ＴＬＢプリフェッチ回路は、Ｘ＋１、Ｘ＋２、およびＸ＋３のうち最も低いものに対するアドレスを生成する。より具体的には、ＴＬＢは、Ｘ＋１に対するエントリは含むかもしれないがＸ＋２またはＸ＋３に対するエントリを含まないであろう。このため、ＴＬＢプリフェッチ回路は、Ｘ＋２に対応するプリフェッチアドレスを生成する。
【００３９】
特定の実装例に従うと、ＴＬＢプリフェッチ回路を、さまざまな仮想メモリページサイズを考慮するように構成してもよい。ページサイズは、エントリごとにアドレスサイスを決めることができる。なぜなら、仮想アドレスの低次のビットは仮想−物理変換に影響しないからである。低次のビットは所望のページ内におけるオフセットとして使用される。このオフセットに使用されるビットの数は、仮想メモリ空間のページサイズによって決めることができる。たとえば、４ＫＢページは、オフセットに使用される１２ビットを有する。ページサイズ設定の非限定的な例は、４ＫＢ、１６ＫＢ、または６４ＫＢである。このように、ＴＬＢプリフェッチ回路は、ページサイズ構成入力４２０を使用することにより、ブロック４０８において、適切なプリフェッチアドレスを求めることができる。
【００４０】
いくつかの実装例において、ＴＬＢプリフェッチ回路は、プリフェッチ要求を送信する前にアドレスバスがアイドルになるのを待つように構成することができる。このため、ＴＬＢプリフェッチ回路は、ブロック４１０においてアイドル基準（またはトリガ条件）が充足されているか否かを判断するように構成される。最初の検討は、アイドル判断が有効にされるか否かであってもよい。有効にされなければ、ＴＬＢプリフェッチ回路は、ブロック４１４において、バスのアイドル状態を考慮することなく、仮想メモリプリフェッチ要求を送信する。アイドル判断が有効にされている場合、ＴＬＢプリフェッチ回路は、バスがアイドルであるか否かを判断する。バスがアイドルであれば、ＴＬＢプリフェッチ回路は、ブロック４１４において、仮想メモリプリフェッチ要求を送信する。バスがアイドルでなければ、ＴＬＢプリフェッチ回路は引き続きバスがアイドルになるのを待つ。待っている間に、新たな仮想メモリアクセスを受けることが発生する可能性がある。したがって、ＴＬＢプリフェッチ回路は、ブロック４１２においてこの発生を識別するように構成される。新たなアクセス要求を検出すると、ＴＬＢプリフェチ回路は、ブロック４０４から始まるフローを繰り返す。
【００４１】
ＴＬＢプリフェッチ回路は、仮想メモリプリフェッチ要求の送信後、ブロック４１６において、その結果ＴＬＢの内容が十分であるか否かを判断する。本明細書に記載のように、特定の深さは、設定可能な量とすることができる。たとえば、上記深さ３の例において、ＴＬＢプリフェッチ回路は、ＴＬＢがＸ＋１、Ｘ＋２およびＸ＋３を含むか否かを判断する。深さが４の場合、ＴＬＢプリフェッチ回路は、ＴＬＢがＸ＋１、Ｘ＋２、Ｘ＋３、およびＸ＋４を含むか否かを判断する。ＴＬＢの内容が十分であれば、ＴＬＢプリフェッチ回路は、ブロック４０２においてさらなる仮想メモリアクセスが検出されるまではさらなるプリフェッチ要求を生成しない。ＴＬＢの内容が十分でない場合、ＴＬＢプリフェッチ回路は追加のプリフェッチ要求を生成することができる。
【００４２】
特定の実装例において、ＴＬＢプリフェッチ回路は、ブロック４１８において、プリフェッチ要求を発行できるレートを制限するように構成することができる。たとえば、発行レートは、所定の時点で未処理であり得るプリフェッチ要求の総数として表すことができる。ページウォークの完了に要する時間の長さは、複数のプリフェッチ要求を生成して送信するのに十分であることが多い。追加の各プリフェッチ要求は、メモリシステムのより多くのリソースを消費し得る。同時に、マスタが、プリフェッチ要求が依然として未処理である間に追加の仮想メモリアクセス要求の発行を開始してもよく、追加の要求を、未処理のプリフェッチ要求によって遅延させてもよい。所定の時間に未処理であり得るプリフェッチ要求の総数を制限することは、プリフェッチ要求の使用によって導入される可能性がある遅延量を制限するのに役立ち得る。
【００４３】
いくつかの実装例において、ＴＬＢプリフェッチ回路は、プリフェッチ要求を常に、利用できる「Ｎ」アドレスバスサイクルに制限するように構成される。ここで、１バスサイクルは、アドレスバス上に発行された後続のアドレス要求間のタイミングに相当する。よって、値が４の場合、４バスサイクルの完了後にレート基準が満たされることになる。結果として生じる遅延は、プリフェッチ要求の発行によって生じる潜在的なオーバヘッドを制限するのに役立ち得る。
【００４４】
いくつかの実装例に従うと、ＴＬＢプリフェッチ回路は、読出要求として構成されたプリフェッチ要求を生成するように構成される。読出要求を使用することにより、適切にフィルタリングされていない書込要求で発生し得るデータ破壊のリスクを緩和することができる。たとえば、書込要求でありメインメモリに到達することが許可された書込要求は、メインメモリ内のデータを上書きする可能性がある。
【００４５】
特定の実装例は、書込要求として構成されたプリフェッチ要求の使用を可能にする。たとえば、メモリシステムおよびそのＭＭＵは、書込チャネルと読出チャネルとが別々になるように構成される。ＴＬＢプリフェッチ回路は、プリフェッチ要求を書込および読出双方としてフォーマットすることにより、各チャネルの帯域幅を使用する。たとえば、ＴＬＢプリフェッチ回路は、アイドル基準を有効にしてもよい。アイドル基準を有効にした状態で、ＴＬＢプリフェッチ回路は、アイドル状態になった第１のチャネルでプリフェッチ要求を送信する。プリフェッチフィルタ回路は、書込要求が確実にメインメモリに到達しないようにする。特定の実装例において、プリフェッチ書込要求は、要求がメインメモリに達したとしてもデータが書込まれないよう、すべてのバイトイネーブルがデアサートされるように構成することができる。
【００４６】
いくつかの例において、ＴＬＢプリフェッチ回路は、マスタからの仮想メモリアクセス要求が読出要求なのか書込要求なのかを判断するように構成される。ＴＬＢプリフェッチ回路は、仮想メモリアクセス要求によってトリガされたプリフェッチ要求をフォーマットすることにより、判断した読出または書込タイプと一致するようにする。このようにして、プリフェッチ要求は、元の仮想メモリアクセスのアクセスタイプ（読出または書込）に一致することになる。
【００４７】
本明細書に記載の各種実装例に従うと、ＴＬＢプリフェッチ回路は、ＭＭＵ内に位置する対応するＴＬＢの内容に関する知識を使用するように構成されている。したがって、ＴＬＢプリフェッチ回路は、ＴＬＢの内容のローカルコピーを保持する。ローカルコピーはＴＬＢデータまたは機能をすべて含んでいる必要はない。特に、ローカルコピーは、実際のＴＬＢ内の現在のエントリに対する仮想メモリアドレスを含んでいればそれで十分であってもよい（たとえば、物理アドレスを格納する必要はない）。
【００４８】
各種実装例は、ＴＬＢプリフェッチ回路が連続するページおよび対応するアドレスを用いて仮想メモリプリフェッチ要求を生成するという文脈で説明している。連続するアドレスは、最後に受けた仮想メモリアクセスのアドレスを基準とする。その他の実装例では、ＴＬＢプリフェッチ回路を、不連続アドレス生成アルゴリズムを使用してプリフェッチアドレスを生成するように構成し得る。たとえば、特定のマスタが、大抵は仮想ページの１ページおきにメモリにアクセスするという機能を果たしてもよい。したがって、ＴＬＢプリフェッチ回路を、仮想ページの１ページおきにプリフェッチアドレスを生成するように構成することができる。所望の深さパラメータに対してＴＬＢの内容が十分であるか否かを判断することについて、同様の調整を行ってもよい。その他のより複雑なアドレス生成アルゴリズムを使用することもできる。
【００４９】
図５は、本開示の実装例に従う、仮想メモリプリフェッチ要求を使用するように構成された集積回路（ＩＣ）チップの一例を示す。ＩＣチップ５０２は、仮想メモリアクセス要求の複数のソースを含む（いくつかの相互接続ソリューションではマスタとも呼ばれる）。示されている例は、１つ以上のＣＰＵ５０６および５０８を有するマイクロコントローラ回路５０４と、ＧＰＵ５１０と、カスタマイズ可能な設計資産（ＩＰ）コア５１２とを含む。限定されないが、アクセス要求ソースのその他いくつかの例は、入出力回路、ＩＰコア、またはその他の回路にリンクさせることができるＤＳＰおよびＤＭＡ回路を含む。
【００５０】
本明細書に記載の各種実装例は必ずしもそれに限定されないが、ＩＣチップはプログラマブルＩＣチップであってもよい。たとえば、プログラマブルＩＣは、プログラマブルリソース（たとえば論理ブロックおよび相互接続）を含むＳｏＣであってもよい。プログラマブルリソースは、アレイ内に種類が異なるいくつかのプログラマブルロジックブロックを含むフィールドプログラマブルゲートアレイロジック（ＦＰＧＡ）であってもよい。プログラマブルＩＣが記載されているものの、開示されている方法およびシステムは、特定用途向け集積回路（ＡＣＩＳ）を対象としプログラマブル集積回路（ＩＣ）に限定されない回路設計に適用し得ることを、当業者は理解するであろう。
【００５１】
記載されているＩＣチップは、各々が本明細書に記載の実装例のうちの１つ以上に従う、ＭＭＵ５１６と、プリフェッチ生成回路５１４と、プリフェッチフィルタ回路５１８とを含む。ＭＭＵは、オフチップで示されているメインメモリ５２０へのアクセスを制御する。メインメモリ５２０はチップ上に位置していてもよい。
【００５２】
示されている構成要素のうちの１つ以上をプログラマブルロジックで実装してもよい。たとえば、影が付けられた構成要素５１０、５１２、５１４、および５１８をプログラマブルロジック内で実装してもよい。プログラマブルロジックを使用することにより、エンドユーザにとっての柔軟性をより高くすることができる。たとえば、プリフェッチ生成回路５１４およびプリフェッチフィルタ回路５１８を、ＩＣチップ製造者が開発したＩＰコアのライブラリの一部として提供することができる。そうすると、エンドユーザは、これらの回路に対してＩＰコアを実装するか否かを決定することができる。本明細書に記載のように、ＭＭＵは、プリフェッチ生成回路５１４およびプリフェッチフィルタ回路５１８から実質的に独立して動作するように設計することができる。たとえば、ＭＭＵは、すべての仮想メモリ要求を、プリフェッチ要求であろうと専用マスタからの要求であろうと、同じように扱うことができる。よって、ＩＰコアを、ＭＭＵの構成に影響をほとんどまたは全く与えることなく、選択的に設計に追加したり設計から削除したりすることができる。
【００５３】
プログラマブルＩＣ５０２は、異なるプログラマブルタイルを多数含み得る。簡潔にするためにこれらのタイルは明示していない。プログラマブルタイルのいくつかの例は、マルチギガビットトランシーバ（ＭＧＴ）、コンフィギュラブルロジックブロック（ＣＬＢ）、ランダムアクセスメモリブロック（ＢＲＡＭ）、入出力ブロック（ＩＯＢ）、コンフィギュレーションおよびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫ）、デジタル信号処理ブロック（ＤＳＰ）、専用入出力ブロック（Ｉ／Ｏ）、たとえば、クロックポート、および、デジタルクロックマネージャ、アナログデジタル変換器、システムモニタリングロジックなどといったその他のプログラマブルロジックを含む。図５は、（プログラマブル）ＩＣチップアーキテクチャの非限定的な例を示すことを意図している。
【００５４】
本明細書に示されるさまざまなフロー図に関して、ブロックおよびそれに対応する機能の特定の順序は、例として与えられている。この順序は必ずしも限定的な順序ではなく、各種実装例に応じて変更し得る。
【００５５】
プログラムコードを用いて構成されたメモリ構成および１つ以上のプロセッサを含むさまざまな計算構成の代替例が、本明細書に開示される機能を実行し得るデータ構造およびプロセスをホストするのに好適であろうことを、当業者は理解するであろう。加えて、これらのプロセスは、コンピュータ読取可能な多様な記憶媒体または配信チャネル、たとえば磁気もしくは光ディスクもしくはテープ、電子記憶装置、またはネットワークを介したアプリケーションサービス等を介して提供し得るものである。
【００５６】
場合によっては側面および特徴が個々の図面に記載されていることがあるが、１つの図面の特徴と別の部面の特徴との組み合わせは、組み合わせとして明確に示されていないまたは説明されていないものの、可能であることが、理解されるであろう。
【００５７】
一例において、仮想メモリおよびマルチポートメモリ管理ユニット（ＭＭＵ）回路に対する仮想メモリプリフェッチ要求を生成する方法を提供することができる。このような方法は、ＭＭＵ回路の特定のポートに送信される仮想メモリアクセス要求をモニタリングするステップと、仮想メモリアクセス要求に基づく少なくとも１つのトリガ条件の充足を検出するステップと、トリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成するステップと、仮想メモリプリフェッチ要求を上記特定のポートを用いてＭＭＵ回路に送信するステップと、仮想メモリプリフェッチ要求に対応する物理アドレスに対する、ＭＭＵ回路からの物理アクセス要求を、モニタリングするステップと、仮想メモリプリフェッチ要求に対応する物理アクセス要求をフィルタリングするステップとを含み得る。
【００５８】
このような方法は、フィルタリングした物理アドレスについてトランザクション完了表示を生成し、このトランザクション完了表示をＭＭＵ回路に与えるステップをさらに含み得る。
【００５９】
このような方法は、仮想メモリのページサイズの表示を受け、この表示に応じて上記少なくとも１つのトリガ条件を調整するステップをさらに含み得る。
【００６０】
このような方法は、生成する仮想メモリプリフェッチ要求の数の表示を受け、この表示に応じて別のトリガ条件を調整するステップをさらに含み得る。
【００６１】
このような方法は、ＭＭＵ回路の上記特定のポートのアイドル状態を検出するステップをさらに含み得る。上記仮想メモリプリフェッチ要求を特定のポートを用いてＭＭＵ回路に送信するステップは、アイドル状態の検出に応じて実行されてもよい。
【００６２】
このような方法は、対応する表示を受けたことに応じて、アイドル状態の検出に対する反応性を無効にするステップをさらに含み得る。
【００６３】
このような方法は、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、この表示に応じて、仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するステップさらに含み得る。
【００６４】
あるこのような方法において、仮想メモリプリフェッチ要求は各々読出要求であってもよい。
【００６５】
あるこのような方法において、仮想メモリプリフェッチ要求は書込要求を含み得る。
別の例において、システムを提供することができる。このようなシステムは、複数のポートを含むメモリ管理ユニット（ＭＭＵ）回路を備え、各ポートは、それぞれの変換ルックアサイドバッファ（ＴＬＢ）を用いて仮想メモリアドレスを物理メモリアドレスに変換するように構成されている。システムはさらに、少なくとも１つのＴＬＢプリフェッチ回路を備え、少なくとも１つのＴＬＢプリフェッチ回路は、複数のポートのうちの特定のポートについて、ＭＭＵ回路の上記特定のポートに送信される仮想メモリアクセス要求をモニタリングし、仮想メモリアクセス要求について、少なくとも１つのトリガ条件の充足を検出し、少なくとも１つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成し、仮想メモリプリフェッチ要求を上記特定のポートを用いてＭＭＵ回路に送信するように構成し得る。システムはさらに、少なくとも１つのＴＬＢプリフェッチフィルタ回路を備え、少なくとも１つのＴＬＢプリフェッチフィルタ回路は、仮想メモリプリフェッチ要求に対応する物理アドレスに対する、ＭＭＵ回路からの物理アドレス要求を、モニタリングし、仮想メモリプリフェッチ要求に対応する物理アドレスをフィルタリングするように、構成し得る。
【００６６】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチフィルタ回路はさらに、フィルタリングした物理アドレスに関するトランザクション完了表示を生成し、トランザクション完了表示をＭＭＵ回路に与えるように構成し得る。
【００６７】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路はさらに、システムの仮想メモリのページサイズの表示を受け、この表示に応じて上記少なくとも１つのトリガ条件を調整するように構成し得る。
【００６８】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路はさらに、生成する仮想メモリプリフェッチ要求の数の表示を受け、この表示に応じて別のトリガ条件を調整するように構成し得る。
【００６９】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路はさらに、上記特定のポートのアイドル状態を検出し、アイドル状態の検出に応じて仮想メモリプリフェッチ要求を送信するように構成し得る。
【００７０】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路はさらに、対応する表示を受けたことに応じて、アイドル状態の検出に対する反応性を無効にするように構成し得る。
【００７１】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路はさらに、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、この表示に応じて、仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するように構成し得る。
【００７２】
あるこのようなシステムにおいて、仮想メモリプリフェッチ要求は各々読出要求であってもよい。
【００７３】
あるこのようなシステムにおいて、仮想メモリプリフェッチ要求は書込要求を含み得る。
【００７４】
あるこのようなシステムにおいて、上記少なくとも１つのＴＬＢプリフェッチ回路は、ＭＭＵ回路の上記特定のポートに送信される仮想メモリアクセス要求が書込要求か読出要求かを判断し、書込要求の場合は仮想メモリプリフェッチ要求を書込要求として構成し読出要求の場合は仮想メモリプリフェッチ要求を読出要求として構成するように、構成し得る。
【００７５】
あるこのようなシステムは、上記ＭＭＵ回路、上記少なくとも１つのＴＬＢプリフェッチ回路、および上記少なくとも１つのＴＬＢプリフェッチフィルタ回路各々を含む集積回路チップをさらに備えていてもよい。
【００７６】
上記方法およびシステムは、ＲＡＭ回路を使用するさまざまなシステムに適用できると考えられる。当業者にとって、その他の側面および特徴は、本明細書の検討を通して明らかになるであろう。上記方法およびシステムの一部は、ソフトウェアを実行するように構成された１つ以上のプロセッサとして、または、特定用途向け集積回路（ＡＳＩＣ）として、または、プログラマブルロジックデバイス上のロジックとして、実装してもよい。加えて、本明細書において特定される各種回路は、共通のコンピュータ処理ユニットまたはデジタル処理ユニットを使用するのと同様に、ハードウェア回路を共有してもよい。明細書および図面は専ら例とみなされ本発明の真の範囲は以下の請求項によって示されることが意図されている。
【図１】
2019517081.tif 000003
【図２】
2019517081.tif 000004
【図３】
2019517081.tif 000005
【図４】
2019517081.tif 000006
【図５】
2019517081.tif 000007
【手続補正書】
【提出日】平成31年1月24日(2019.1.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
仮想メモリおよびマルチポートメモリ管理ユニット（ＭＭＵ）回路に対する仮想メモリプリフェッチ要求を生成する方法であって、前記方法は、
前記ＭＭＵ回路の特定のポートに送信される仮想メモリアクセス要求をモニタリングするステップと、
前記仮想メモリアクセス要求に基づく少なくとも１つのトリガ条件の充足を検出するステップと、
前記トリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成するステップと、
前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するステップと、
変換ルックアサイドバッファ（ＴＬＢ）プリフェッチフィルタ回路が、前記仮想メモリプリフェッチ要求に対応する物理アドレスに対する、前記ＭＭＵ回路からの物理アクセス要求を、モニタリングするステップと、
前記ＴＬＢプリフェッチフィルタ回路が、前記仮想メモリプリフェッチ要求に対応する前記物理アクセス要求がメモリに到達しないようにするステップとを含む、方法。
【請求項２】
前記仮想メモリのページサイズの表示を受け、前記表示に応じて前記少なくとも１つのトリガ条件を調整するステップをさらに含む、請求項１に記載の方法。
【請求項３】
生成する仮想メモリプリフェッチ要求の数の表示を受け、前記表示に応じて別のトリガ条件を調整するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記ＭＭＵ回路の前記特定のポートのアイドル状態を検出するステップをさらに含み、  前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するステップは、前記アイドル状態の検出に応じて実行される、請求項１〜３のいずれかに記載の方法。
【請求項５】
対応する表示を受けたことに応じて、前記アイドル状態の検出に対する反応性を無効にするステップをさらに含む、請求項４に記載の方法。
【請求項６】
仮想メモリプリフェッチ要求生成の発行レートの表示を受け、前記表示に応じて、前記仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するステップをさらに含む、請求項１〜５のいずれかに記載の方法。
【請求項７】
システムであって、
複数のポートを含むメモリ管理ユニット（ＭＭＵ）回路を備え、前記ポートは各々、それぞれの変換ルックアサイドバッファ（ＴＬＢ）を用いて仮想メモリアドレスを物理メモリアドレスに変換するように構成されており、
少なくとも１つのＴＬＢプリフェッチ回路を備え、前記少なくとも１つのＴＬＢプリフェッチ回路は、前記複数のポートのうちの特定のポートについて、
前記ＭＭＵ回路の前記特定のポートに送信される仮想メモリアクセス要求をモニタリングし、
前記仮想メモリアクセス要求について、少なくとも１つのトリガ条件の充足を検出し、
前記少なくとも１つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成し、
前記仮想メモリプリフェッチ要求を前記特定のポートを用いて前記ＭＭＵ回路に送信するように、構成され、前記システムはさらに、
少なくとも１つのＴＬＢプリフェッチフィルタ回路を備え、前記少なくとも１つのＴＬＢプリフェッチフィルタ回路は、
前記仮想メモリプリフェッチ要求に対応する物理アドレスに対する、前記ＭＭＵ回路からの物理アドレス要求を、モニタリングし、
前記仮想メモリプリフェッチ要求に対応する前記物理アドレスがメモリに到達しないようにするように、構成されている、システム。
【請求項８】
前記少なくとも１つのＴＬＢプリフェッチフィルタ回路はさらに、前記フィルタリングした物理アドレスに関するトランザクション完了表示を生成し、前記トランザクション完了表示を前記ＭＭＵ回路に与えるように構成されている、請求項７に記載のシステム。
【請求項９】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、前記システムの仮想メモリのページサイズの表示を受け、前記表示に応じて前記少なくとも１つのトリガ条件を調整するように構成されている、請求項７または８に記載のシステム。
【請求項１０】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、生成する仮想メモリプリフェッチ要求の数の表示を受け、前記表示に応じて別のトリガ条件を調整するように構成されている、請求項９に記載のシステム。
【請求項１１】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、前記特定のポートのアイドル状態を検出し、前記アイドル状態の検出に応じて前記仮想メモリプリフェッチ要求を送信するように構成されている、請求項７〜１０のいずれかに記載のシステム。
【請求項１２】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、対応する表示を受けたことに応じて、前記アイドル状態の検出に対する反応性を無効にするように構成されている、請求項１１に記載のシステム。
【請求項１３】
前記少なくとも１つのＴＬＢプリフェッチ回路はさらに、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、前記表示に応じて、前記仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するように構成されている、請求項１０に記載のシステム。
【請求項１４】
前記少なくとも１つのＴＬＢプリフェッチ回路は、前記ＭＭＵ回路の前記特定のポートに送信される前記仮想メモリアクセス要求が書込要求か読出要求かを判断し、書込要求の場合は仮想メモリプリフェッチ要求を書込要求として構成し読出要求の場合は仮想メモリプリフェッチ要求を読出要求として構成するように、構成されている、請求項１０〜１３のいずれかに記載のシステム。
【請求項１５】
前記ＭＭＵ回路、前記少なくとも１つのＴＬＢプリフェッチ回路、および前記少なくとも１つのＴＬＢプリフェッチフィルタ回路各々を含む集積回路チップをさらに備える、請求項１０〜１４のいずれかに記載のシステム。
【国際調査報告】
2019517081.tif 000008
2019517081.tif 000009
2019517081.tif 000010