(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも1つのTLBプリフェッチフィルタ回路はさらに、前記フィルタリングした物理アドレスに関するトランザクション完了表示を生成し、前記トランザクション完了表示を前記MMU回路に与えるように構成されている、請求項7に記載のシステム。
前記少なくとも1つのTLBプリフェッチ回路はさらに、前記システムの仮想メモリのページサイズの表示を受け、前記表示に応じて前記少なくとも1つのトリガ条件を調整するように構成されている、請求項7または8に記載のシステム。
前記少なくとも1つのTLBプリフェッチ回路はさらに、生成する仮想メモリプリフェッチ要求の数の表示を受け、前記表示に応じて別のトリガ条件を調整するように構成されている、請求項9に記載のシステム。
前記少なくとも1つのTLBプリフェッチ回路はさらに、前記特定のポートのアイドル状態を検出し、前記アイドル状態の検出に応じて前記仮想メモリプリフェッチ要求を送信するように構成されている、請求項7〜10のいずれかに記載のシステム。
前記少なくとも1つのTLBプリフェッチ回路はさらに、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、前記表示に応じて、前記仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するように構成されている、請求項10に記載のシステム。
前記少なくとも1つのTLBプリフェッチ回路は、前記MMU回路の前記特定のポートに送信される前記仮想メモリアクセス要求が書込要求か読出要求かを判断し、書込要求の場合は仮想メモリプリフェッチ要求を書込要求として構成し読出要求の場合は仮想メモリプリフェッチ要求を読出要求として構成するように、構成されている、請求項10〜13のいずれかに記載のシステム。
前記MMU回路、前記少なくとも1つのTLBプリフェッチ回路、および前記少なくとも1つのTLBプリフェッチフィルタ回路各々を含む集積回路チップをさらに備える、請求項10〜14のいずれかに記載のシステム。
【発明を実施するための形態】
【0010】
詳細な説明
以下の記載において、数多くの具体的詳細事項を述べることにより、本明細書に示す特定の実施例を説明する。しかしながら、1つ以上のその他の実施例および/またはこれらの実施例の変形は以下に示す具体的詳細事項すべてがなくても実施し得ることは明白である。その他の例において、周知の特徴は、本明細書における実施例の説明が不明瞭になることを避けるために、詳述していない。説明をし易くするために、各種図面において同一の参照番号を使用することにより同一要素または同一要素のその他の例を示している。
【0011】
各種実装例は、変換ルックアサイドバッファ(TLB)をポピュレートするためにプリフェッチ動作を用いることで仮想メモリアドレス変換を改善することを対象とする。たとえば、仮想メモリプリフェッチ要求は複数のプリフェッチ回路によって生成される。各プリフェッチ回路は、仮想メモリプリフェッチ要求のソースに対応する。各プリフェッチ回路は、結果としてそれぞれのTLBをポピュレートするためのプリフェッチ要求を生成するように構成されている。このようにして、異なるTLBを相対的に互いに独立して事前にポピュレートする。
【0012】
特定の実装例は、プリフェッチ動作の生成および処理方法を制御するカスタマイズ可能なオプションを含む複数のプリフェッチ回路を含む。カスタマイズ可能なオプションは、各プリフェッチ回路を、それぞれの仮想メモリ空間および仮想メモリアドレス生成回路に関して異なるように構成することを可能にする。たとえば、各プリフェッチ回路を、それぞれの仮想メモリ空間のページサイズに対応する仮想アドレス範囲に含まれるデータブロックを要求するメモリプリフェッチ要求を発行するように構成することができる。各仮想メモリアドレス生成回路(たとえば、各中央処理装置(CPU)またはグラフィックス処理装置(GPU))は異なるページサイズを有し得るので、カスタマイズ可能なオプションを有する専用プリフェッチ回路を使用することにより、プリフェッチ動作の効率を改善することができる。カスタマイズ可能なオプションのさまざまな例を、本明細書においてより詳細に説明する。
【0013】
オペレーティングシステム内で実行されるプロセスと比較すると、仮想メモリ空間は、複数の大きなメモリセクションが隣接しているように見える可能性があるが、データのための実際の物理的な場所は、メインメモリを提供する物理メモリ回路の異なる領域に分散させることができる。仮想メモリ空間を提供するように構成された処理回路は、メインメモリ内のデータの実際の場所を扱うことなく、仮想メモリアドレスを用いてデータアクセス要求を生成することができる。その代わりに、MMU回路(または簡潔に「MMU」)が、ページテーブルに格納されているマッピングに基づいて物理アドレスへの変換を処理してもよい。アドレス指定可能なマッピングは各々、ページテーブルエントリと呼ばれる。
【0014】
各種実装例に従うと、仮想メモリ空間と物理(メイン)メモリ空間との間のアドレス変換は、MMUによって実行される。ページテーブルはメインメモリに格納することができ、MMUは、ページテーブルにアクセスすることにより、仮想メモリアクセス要求に対応する物理アドレスを取得することができる。このプロセスはページウォークと呼ばれることがある。ページウォークは、物理アドレスを計算するために、物理/メインメモリに格納されているページテーブルに複数回アクセスする必要がある場合がある。次に、取得した物理アドレスを、最初の仮想メモリアクセス要求に対応するデータを取り出すための別のメインメモリアクセスの一部として使用する。このように、仮想メモリアクセスは、結果としてメインメモリに多数回アクセスすることになり、そのため、一度メインメモリに直接アクセスすることに比べて、非常に遅くなる可能性がある。よって、ローカルキャッシュ回路が、メインメモリアクセスを回避できるよう、頻繁なページ変換を格納すればよい。この種のキャッシュ回路は変換ルックアサイドバッファ(TLB)と呼ばれることがある。MMUは先ずTLBの内容をチェックすることにより、仮想メモリアクセスとのマッチを発見することができる。マッチするエントリをキャッシュが含んでいる場合(TLB「ヒット」)、適切な物理アドレス情報を用いて物理アドレスを計算する。MMUは次に、この物理アドレスを用いてメインメモリアクセス要求を発行することができる。マッチするエントリをキャッシュが含んでいない場合(TLB「ミス」)、MMUは、ページテーブルにアクセスして所望の物理アドレスを取り出すことができる。結果として、上記ページウォークに遅延が生じる。
【0015】
各種実装例に従うと、MMUは、仮想メモリアクセス要求の複数の異なるソースに対して複数のポートを有することができる。これらのソースを本明細書では仮想メモリアドレス生成回路またはマスタと呼ぶ。各ポートは、異なるTLBおよび対応する制御回路を有し得る。TLBおよび制御回路をまとめて変換ルックアサイドバッファユニット(TBU)と呼ぶ。単一の変換制御ユニット(TCU)回路は、すべてのTBUのアドレス変換を管理することができる。各種実装例は、TLBミスを低減するためにTLBをエントリでポピュレートすることを目的とする仮想メモリアクセス要求の生成および処理を対象とする。これらの仮想メモリアクセス要求は、マスタが生成するのではなく、将来マスタが要求し得るものを予想して仮想メモリプリフェッチ回路(一時的にマスタとして動作し得る)が生成する。生成された仮想メモリアクセス要求はしたがって仮想メモリプリフェッチ要求と呼ばれる。より具体的な側面は、MMUのポートごとに、仮想メモリプリフェッチ回路を個別に調整することを可能にする。
【0016】
多くのシステムにおけるメモリアクセスは、レイテンシが生じ易く予測不能である。ビデオまたはダイレクトメモリアクセス(DMA)のような多くのアプリケーションは、大量の読取/書込データに関連する帯域幅要求と固定レイテンシ要求とを有し得る。仮想システム内で大量のデータを移動させるためには、多数のMMUページ変換を実行する必要があり、これは多数のクロックサイクルを消費し得る。TLBにおけるMMUページテーブルキャッシングは、変換オーバヘッドの低減において極めて重要な役割を果たし得る。ページテーブルサイズの一例は、4KB、16KBまたは64KBの間で変化し得る。ページテーブル変換は、ページごとに1度発生し、オフセットを用いて各ページ内に指標付けする。システムが4KBページサイズ粒度を使用すると仮定すると、MMUは、アクセスしたアドレス空間の新たな4KBごとに1度、ページテーブル変換を実行するであろう。先に述べたように、ページテーブルウォークは、法外な時間を消費する可能性があり、限定されたメモリリソースを使用する可能性がある。
【0017】
各種実装例は、SoCとしてまたはそれ以外の処理システムとして構成することができるICチップのメモリシステム内での効率的なデータ移動を提供する、コンフィギュラブルなプリフェッチ手法を対象とする。多くのSoCにおけるMMUは、プリフェッチ機能が大幅に制限されている。その原因は、たとえば、利用できるリソースに対する制限、および、最終的にエンドユーザがSoCをどのように使用するかが不確定であることにある。各種実装例は、プリフェッチ動作を扱う方法を柔軟に設定またはプログラムできるようにする。その例は、実行しなければならないプリフェッチ要求の数を設定すること、および、プリフェッチ要求の支援において実行されるメインメモリアクセスの数を制限することによってプリフェッチのオーバヘッドを低減することとを含む。
【0018】
また、いくつかの実装例は、プリフェッチ生成を、MMUおよびそのTBUの上流で実現することにより、メモリシステムの効率を考慮する。プリフェッチ生成の制御を、仮想メモリアクセス要求のソースにより近づけることによって、(たとえば複数のTBUおよび対応するポートからのトランザクションを扱うTCUを用いて)プリフェッチ要求を中央で生成する手法と比較して、制御を一層個別化する(たとえばポートごと)ことができる。
【0019】
次に図面を参照すると、
図1は、本開示の各種実装例に従う、マルチポートMMUに対する仮想メモリプリフェッチ要求を生成するためのシステムのブロック図を示す。示されているこのシステムの構成要素はICチップ100の上にあり、これは、対応する入力ポート124、126、および128ならびに対応する出力ポート138、140、および142に対する仮想メモリアクセス要求を生成する複数のマスタ102、104、および106を含む。これらのマスタは1つ以上の処理回路を含み、各処理回路はこのシステムの1つ以上の機能を提供する。このような回路の非限定的ないくつかの例は、CPUすなわち処理コア、GPU、およびDMAを用いて動作するように構成された回路を含む。
【0020】
マルチポートMMU114は、マスタからの仮想メモリアクセス要求を、対応するポート上で受けるように構成される。これらのポートはそれぞれTBU132、134、および136を有し、各TBUは、対応付けられたマスタの異なる仮想メモリ空間に対応する。TCU130は、ポートおよびその対応するTBUごとに、アドレス変換を制御し管理する。これは、TBUおよびTBUそれぞれのTLB回路を管理することによりTLBヒットまたはTLBミスがあるか否かを判断することを含む。また、TCU130は、アドレス変換を制御し、次にメインメモリ122への対応するアクセスを生成する。
【0021】
TLBプリフェッチ回路108、110、および112を、それぞれの対応するポートに対する仮想メモリプリフェッチ要求を生成するように構成することにより、それぞれのポートのプリフェッチ生成を互いに分離している。具体的な実装例において、TLBプリフェッチ回路108、110、および112は、プリフェッチ要求をいつどのようにして生成するかを決定するために使用するパラメータをマスタ102、104、および106が調整することを可能にするように設計されている。この調整機能は、制御(Ctrl)矢印で示されている。たとえば、コンフィギュレーションレジスタ144、146、148の1つ以上のセットを設けることにより、回路各々をカスタマイズすることができる。コンフィギュレーションレジスタに対しては、示されているマスタ102、104、および106、または、十分な権利を有するその他のマスタが、アクセスできる。コンフィギュレーションレジスタの内容には、これらのレジスタに格納されている値に従って構成されたTLBプリフェッチ回路がアクセスできる。いくつかの実装例において、上記マスタは、構成の設定を指定するデータを送信するために、TLBプリフェッチ回路に直接アクセスする。
【0022】
TLBプリフェッチ回路はプログラマブルロジックで実装してもよく、エンドユーザはパラメータのうちの1つ以上を設計ファイルに設定することができる。パラメータの設定および調整が可能な方法は、これらの例に限定される訳ではなく、異なる解決策をさまざまに組み合わせたものを使用することができる。上記分離および構成機能(configurability)は各々、個別のマスタ各々の異なる特徴に合わせたやり方でTBUをポピュレートするのに特に有用である。これらの特徴の例は、仮想メモリ空間(たとえばページサイズ)および予測されるメモリアクセスプロファイル(たとえばデータアクセス頻度およびサイズ)の構成を含む。
【0023】
いくつかの実装例に従うと、TLBプリフェッチフィルタ回路116、118、および120は、メインメモリ122へのアクセスをフィルタリングするために含まれている。具体的には、これらのフィルタ回路は、プリフェッチ要求から生成された物理アクセス要求をフィルタリングするように構成されている。たとえば、プリフェッチ回路108が仮想メモリアドレスXに対するプリフェッチ要求を生成する場合がある。次に、MMU114およびTCU130は、仮想メモリアドレスXに対するエントリをTBU132は含んでいないと判断する。それに応じて、TCU130は、メインメモリ122に格納されているページテーブルにアクセスすることによってページウォークを実行する。プリフェッチフィルタ回路116は、メインメモリへの物理アクセス要求をモニタリングし、ページテーブルへのアクセス要求がメインメモリに到達できるようにする。TCU130がページウォークを終えると、TBU132内のTLBが、仮想メモリアドレスXおよび対応する物理メモリアドレスYに対応する変換エントリを格納することによって更新される。次に、MMU114は、物理アドレスYに対する物理メモリアクセス要求を送信することにより、仮想メモリアドレスXに対するプリフェッチを完了しようと試みる。プリフェッチフィルタ回路116は、アドレスYに対する物理メモリアクセス要求を、仮想メモリアドレスXに対する最初のプリフェッチに相当すると認識し、この要求がメインメモリ122に到達しないようにする(フィルタリングする)。特定の実装例に従うと、プリフェッチフィルタ回路116はまた、TLBプリフェッチ回路108に対してトランザクション完了通知を生成するように構成されている。この通知は、プリフェッチ要求は完了し未処理ではないことを示すことができる。
【0024】
プリフェッチフィルタ回路116のフィルタ機能は、処理および意思決定の負担をMMU114から取り除くのに特に有用である。具体的な実装例において、MMU114の機能は、TLBプリフェッチ回路またはTLBプリフェッチフィルタ回路を含まないシステムで使用されるMMU114と区別できない。
【0025】
図2は、本開示の実装例に従う、TLBプリフェッチ回路およびTLBプリフェッチフィルタ回路の具体的な側面を示すブロック図である。
図2は1つのTLBプリフェッチ回路204を示すが、(たとえば
図1に示すように)MMU214のその他のポートに対応するその他のTLBプリフェッチ回路が含まれ得る。限定される訳ではないが、
図2の各種構成要素の説明は、概ね
図1および本開示のその他の部分に記載される同様の構成要素と一致する。アクセス要求生成器202は、アクセスレスポンス生成器226が提供する物理メモリ空間にマッピングされた仮想メモリ空間内で動作する。特定の実施形態において、
図2のシステムは、AMBA(アドバンスドマイクロコントローラバスアーキテクチャ(Advanced Microcontroller Bus Architecture)拡張可能インターフェイス(eXtensible Interface)AXI)相互接続/バスといったマスタ−スレーブ相互接続ソリューションを使用するSoCの一部である。その他の相互接続およびバスのソリューションも可能である。
【0026】
特定の実装例に従うと、TLBプリフェッチ回路204は、MMU214の特定のポートに送信される仮想メモリアクセス要求をモニタリングするように構成されている。たとえば、プリフェッチトランザクション生成器モジュール206をアドレス要求バスに接続することができる。プリフェッチトランザクション生成器モジュール206は、アドレス要求バス上に現れた仮想メモリアクセス要求のアドレスを識別し追跡する。次に、プリフェッチトランザクション生成器モジュール206は、トリガ条件が充足されたか否かを判断することができる。具体的実装例において、プリフェッチトランザクション生成器モジュール206にとってのトリガ条件は、1つ以上のコンフィギュラブルパラメータに基づいて設定される。たとえば、プリフェッチトランザクション生成器モジュール206を、仮想メモリアドレスをTLBの現在の内容と比較するトリガ条件で構成してもよい。ある具体的なトリガ条件は、現在の仮想メモリアドレスと比較して未来の連続仮想メモリアドレスの設定数をカバーするのに十分なエントリをTLBが含むか否かに基づくものであってもよい。たとえば、現在の仮想メモリアドレスがXでありトリガ条件がそれに続く3つのアドレス要求であってもよい。プリフェッチトランザクション生成器モジュール206は、X+1、X+2、およびX+3に対するエントリをTLBが含むか否かを判断する。含まなければ、このトリガ条件は充足されており、欠落しているエントリに対して1つ以上のプリフェッチ要求を生成すればよい。
【0027】
プリフェッチトランザクション生成器モジュール206は、生成されたプリフェッチ要求をMMU214に送信する。特定の実装例において、プリフェッチトランザクション生成器モジュール206は、この送信の表示を制御ロジック210に与える。マルチプレクサ回路208は、MMU214が仮想メモリアクセス要求をアクセス要求生成器202から受けるのかまたはプリフェッチトランザクション生成器206から受けるのかを制御し、プリフェッチトランザクション生成器モジュール206が、アクセス要求生成器202との複雑な調停を要することなく、一時的にマスタとして機能できるようにする。たとえば、アクセス要求生成器202は、プリフェッチトランザクション生成器206に関する明確な知識がないままで動作することができる。
【0028】
トリガ条件の別の例として、プリフェッチトランザクション生成器206を、(AXI)相互接続/バスがアイドル状態になったことが検出されるまで、プリフェッチ要求の送信を遅延させるように構成してもよい。プリフェッチ要求をアイドル状態/時間に限定することは、プリフェッチ要求によるさらなるメモリアクセスの悪影響を緩和するのに有用であろう。特定の実施形態において、アイドル状態に対する反応性を無効にすることにより、プリフェッチ要求を、バスのアイドル状態とは関係なく送信することができる。
【0029】
MMU214は、仮想メモリプリフェッチ要求を受けると、この要求を、通常は、TBU216および含まれているTLBの、仮想メモリアクセス要求に対応するエントリを調べることによって処理する。通常、TBUを調べた結果はTLBミスとなるであろう。なぜなら、プリフェッチトランザクション生成器206は、TLBの中に存在しないと予測されるエントリに対する仮想メモリプリフェッチ要求を生成するからである。TLBミスが生じると、アクセスレスポンス生成器226を通してアクセス可能なメモリ回路に格納されているページテーブルのページウォークが行われる。所望の物理アドレス情報が発見されると、MMU214はTLBを対応するエントリを含むように更新する。
【0030】
各種実装例に従うと、MMU214は、アクセス要求生成器202で生成された仮想メモリアクセス要求と、プリフェッチトランザクション生成器モジュール206で生成された仮想メモリプリフェッチアクセス要求とを区別しない。このため、MMU214は次に、物理アクセス要求をアクセスレスポンス生成器226に送ることによってこの仮想メモリアクセス要求を完了しようと試みることになる。プリフェッチフィルタ回路218は、MMUからアクセスレスポンス生成器226への物理アクセス要求をモニタリングするように構成されている。プリフェッチアクセス要求に由来する物理アクセス要求の存在が検出されると、フィルタ/ブロッキングモジュール220は、この物理アクセス要求をフィルタリングしてアクセスレスポンス生成器226に到達しないようブロックする。具体的実装例は、フィルタリングすべき物理アクセス要求を識別するために、物理アクセス要求内の識別子(IDE)を使用する。たとえば、プロセス固有のIDが、仮想メモリ(プリフェッチ)アクセス要求および対応する物理メモリアクセス要求に添付されていてもよい。プリフェッチトランザクション生成器モジュール206に、プリフェッチフィルタ回路218が認識する特定のIDEを割り当てることにより、対応する物理アクセス要求をフィルタリングしてもよい。
【0031】
各種実装例に従うと、アクセスレスポンス生成器226は、物理アクセス要求が完了すると、アクセス要求生成器202に対する通知を生成する。アクセスレスポンス生成器226は、フィルタリングされた物理アクセス要求については通知を生成しない。これは、MMUもプリフェッチトランザクション生成器モジュール206もプリフェッチ動作がいつ完了したかわからないことを意味し得る。このため、レスポンス生成器222を、フィルタリングされたプリフェッチに関して完了通知を生成するように構成してもよい。マルチプレクサ回路224は、レスポンス生成器222が、レスポンスの径路を設定するのに使用される通信バスに一時的にアクセスできるようにする。プリフェッチレスポンスフィルタ212は、MMUを通ってプリフェッチトランザクション生成器モジュール206に至る、レスポンス生成器からの通知の径路を定めるように構成されている。
【0032】
図3は、本開示の実装例に従う、仮想メモリプリフェッチ要求の生成のフロー図である。ブロック302で、TLBプリフェッチ回路は仮想メモリ(VM)アクセス要求をモニタリングする。たとえば、TLBプリフェッチ回路は、マスタとMMUとの間のアドレスバスに接続すればよい。よって、TLBプリフェッチ回路は、モニタリング作業の一部として、仮想メモリアクセスの仮想メモリアドレス値にアクセスすることができる。
【0033】
各種実装例に従うと、ブロック304で、TLBプリフェッチ回路は、モニタリングした情報を用いて、トリガ条件がいつ充足したかを判断する。トリガ条件が充足していなければ、TLBプリフェッチ回路は仮想メモリアクセスのモニタリングを続ける。トリガ条件が充足している場合、ブロック306で、TLBプリフェッチ回路は1つ以上の仮想メモリプリフェッチ要求を生成する。場合によっては、TLBプリフェッチ回路がプリフェッチ要求の生成を開始する前に、複数のトリガ条件を調べることがある。たとえば、TLBプリフェッチ回路を、(現在の仮想メモリ要求のアドレスとの比較における)TLB内のプリフェッチ要求の深さに対応する第1のトリガイベントで構成することができる。第2のトリガイベントは、マスタとMMUとの間のデータバスのアイドル状態に対応し得る。第1および第2のトリガイベント双方が充足すると、TLBプリフェッチ回路はプリフェッチの生成を開始する。本明細書ではトリガ条件の各種例についてより詳細に説明する。
【0034】
ブロック308で、TLBプリフェッチ回路は、生成したプリフェッチ要求をMMUに送信する。特定の実装例において、この送信は、マルチプレクサ回路を用いてTLBプリフェッチ回路がメモリシステムにおいて一時的にマスタとして機能できるようにすることを含む。プリフェッチ要求の一部として、TLBプリフェッチ回路はまた、プリフェッチ要求にフラグを立てる表示を含み得る。このフラグを用いることで、この特定の仮想メモリアクセスがマスタに由来しないプリフェッチであると判断することができる。このようなフラグの具体例は、マスタが使用するプロセスIDに対し、TLBプリフェッチ回路を一意的に特定するIDである。
【0035】
ブロック310で、プリフェッチフィルタ回路は、MMUと物理/メインメモリとの間の相互接続バス上にある物理アクセス要求をモニタリングする。特定の実装例において、プリフェッチフィルタ回路は、物理アクセス要求を、各アクセス要求から、このアクセス要求のソースを特定する固有IDを取り出すことにより、モニタリングすることができる。ブロック312で、プリフェッチフィルタ回路は、この情報を用いることにより、アクセス要求が、プリフェッチによって推進されたプリフェッチ推進アクセス要求であるか否かを判断することができる。たとえば、プリフェッチフィルタ回路は、TLBプリフェッチ回路に対応する固有IDを含むアクセス要求を探す。アクセス要求がプリフェッチ推進アクセス要求でなければ、ブロック310において、プリフェッチフィルタ回路は物理アクセス要求のモニタリングを続ける。アクセス要求がプリフェッチ推進アクセス要求の場合、ブロック314において、プリフェッチフィルタ回路は対応するアクセス要求をフィルタリングする。たとえば、プリフェッチフィルタ回路は、アクセス要求において受けたIDを、TLBプリフェッチ回路に対応する予め格納されている固有IDと比較する比較器回路を含むことができる。マッチしている場合、プリフェッチフィルタ回路は、たとえば、受けたアクセス要求をメインメモリに転送する出力ドライバを無効にすることにより、アクセス要求をフィルタリングする。
【0036】
アクセス要求のフィルタリングは、メインメモリへのアクセスを提供するスレーブ回路がアクセス要求を受けることはないことを意味する。よって、スレーブ回路がアクセス要求について完了通知を生成することはない。特定の実装例に従うと、プリフェッチフィルタ回路は、ブロック316においてこのような完了の表示または通知を生成するように設計されている。この完了通知はTLBプリフェッチ回路に与えることができる。TLBプリフェッチ回路は次に、ブロック318において、追加のプリフェッチ要求を生成するか否かを判断することができる。ブロック318における判断の一例は、最後のプリフェッチの仮想メモリアドレスを、TLBの所望の深さと比較することである。たとえば、最後の仮想メモリアドレスがアドレスXに対するアドレスでありプリフェッチがアドレスX+2に対するものである場合、TLBプリフェッチ回路は、深さが3以上に設定されていれば追加のプリフェッチ要求を生成することになる。
【0037】
図4は、本開示の実装例に従う、トリガ条件の構成および使用のフロー図である。このフローは、各種構成入力420を用いることにより、TLBプリフェッチ回路のさまざまなトリガ条件および機能を設定できることを示す。このフローは、ブロック402においてTLBプリフェッチ回路が仮想メモリアクセス要求を検出したときに開始される。TLBプリフェッチ回路はまた、ブロック404において、仮想メモリアクセス要求のVMアドレスを求める。TLBプリフェッチ回路は、ブロック406において、求めた仮想メモリアドレスを用いることにより、TLBの現在の内容が十分であるか否かを判断することができる。特定の実装例に従うと、ブロック406における判断は、プリフェッチ数または深さに基づいていてもよい。たとえば、プリフェッチ深さ3は、TLBが、求めた仮想メモリアドレスに対し、後続の3つのエントリを含むはずであることを示す。より具体的には、求めた仮想メモリアドレスが「X」である場合、TLBプリフェッチ回路は、TLBがX+1、X+2、およびX+3に対するエントリを含むか否かを判断する。X+1は、仮想メモリ空間におけるXの次の連続ページを表す。
【0038】
内容が十分であると判断した場合、TLBプリフェッチ回路は、ブロック402において、仮想メモリアクセスのモニタリングおよび検出を続ける。内容が十分でない場合、TLBプリフェッチ回路は、ブロック408において、仮想メモリプリフェッチアドレスを求める。たとえば、メモリアドレスが「X」で深さが3である先の例において、TLBプリフェッチ回路は、X+1、X+2、およびX+3のうち最も低いものに対するアドレスを生成する。より具体的には、TLBは、X+1に対するエントリは含むかもしれないがX+2またはX+3に対するエントリを含まないであろう。このため、TLBプリフェッチ回路は、X+2に対応するプリフェッチアドレスを生成する。
【0039】
特定の実装例に従うと、TLBプリフェッチ回路を、さまざまな仮想メモリページサイズを考慮するように構成してもよい。ページサイズは、エントリごとにアドレスサイスを決めることができる。なぜなら、仮想アドレスの低次のビットは仮想−物理変換に影響しないからである。低次のビットは所望のページ内におけるオフセットとして使用される。このオフセットに使用されるビットの数は、仮想メモリ空間のページサイズによって決めることができる。たとえば、4KBページは、オフセットに使用される12ビットを有する。ページサイズ設定の非限定的な例は、4KB、16KB、または64KBである。このように、TLBプリフェッチ回路は、ページサイズ構成入力420を使用することにより、ブロック408において、適切なプリフェッチアドレスを求めることができる。
【0040】
いくつかの実装例において、TLBプリフェッチ回路は、プリフェッチ要求を送信する前にアドレスバスがアイドルになるのを待つように構成することができる。このため、TLBプリフェッチ回路は、ブロック410においてアイドル基準(またはトリガ条件)が充足されているか否かを判断するように構成される。最初の検討は、アイドル判断が有効にされるか否かであってもよい。有効にされなければ、TLBプリフェッチ回路は、ブロック414において、バスのアイドル状態を考慮することなく、仮想メモリプリフェッチ要求を送信する。アイドル判断が有効にされている場合、TLBプリフェッチ回路は、バスがアイドルであるか否かを判断する。バスがアイドルであれば、TLBプリフェッチ回路は、ブロック414において、仮想メモリプリフェッチ要求を送信する。バスがアイドルでなければ、TLBプリフェッチ回路は引き続きバスがアイドルになるのを待つ。待っている間に、新たな仮想メモリアクセスを受けることが発生する可能性がある。したがって、TLBプリフェッチ回路は、ブロック412においてこの発生を識別するように構成される。新たなアクセス要求を検出すると、TLBプリフェチ回路は、ブロック404から始まるフローを繰り返す。
【0041】
TLBプリフェッチ回路は、仮想メモリプリフェッチ要求の送信後、ブロック416において、その結果TLBの内容が十分であるか否かを判断する。本明細書に記載のように、特定の深さは、設定可能な量とすることができる。たとえば、上記深さ3の例において、TLBプリフェッチ回路は、TLBがX+1、X+2およびX+3を含むか否かを判断する。深さが4の場合、TLBプリフェッチ回路は、TLBがX+1、X+2、X+3、およびX+4を含むか否かを判断する。TLBの内容が十分であれば、TLBプリフェッチ回路は、ブロック402においてさらなる仮想メモリアクセスが検出されるまではさらなるプリフェッチ要求を生成しない。TLBの内容が十分でない場合、TLBプリフェッチ回路は追加のプリフェッチ要求を生成することができる。
【0042】
特定の実装例において、TLBプリフェッチ回路は、ブロック418において、プリフェッチ要求を発行できるレートを制限するように構成することができる。たとえば、発行レートは、所定の時点で未処理であり得るプリフェッチ要求の総数として表すことができる。ページウォークの完了に要する時間の長さは、複数のプリフェッチ要求を生成して送信するのに十分であることが多い。追加の各プリフェッチ要求は、メモリシステムのより多くのリソースを消費し得る。同時に、マスタが、プリフェッチ要求が依然として未処理である間に追加の仮想メモリアクセス要求の発行を開始してもよく、追加の要求を、未処理のプリフェッチ要求によって遅延させてもよい。所定の時間に未処理であり得るプリフェッチ要求の総数を制限することは、プリフェッチ要求の使用によって導入される可能性がある遅延量を制限するのに役立ち得る。
【0043】
いくつかの実装例において、TLBプリフェッチ回路は、プリフェッチ要求を常に、利用できる「N」アドレスバスサイクルに制限するように構成される。ここで、1バスサイクルは、アドレスバス上に発行された後続のアドレス要求間のタイミングに相当する。よって、値が4の場合、4バスサイクルの完了後にレート基準が満たされることになる。結果として生じる遅延は、プリフェッチ要求の発行によって生じる潜在的なオーバヘッドを制限するのに役立ち得る。
【0044】
いくつかの実装例に従うと、TLBプリフェッチ回路は、読出要求として構成されたプリフェッチ要求を生成するように構成される。読出要求を使用することにより、適切にフィルタリングされていない書込要求で発生し得るデータ破壊のリスクを緩和することができる。たとえば、書込要求でありメインメモリに到達することが許可された書込要求は、メインメモリ内のデータを上書きする可能性がある。
【0045】
特定の実装例は、書込要求として構成されたプリフェッチ要求の使用を可能にする。たとえば、メモリシステムおよびそのMMUは、書込チャネルと読出チャネルとが別々になるように構成される。TLBプリフェッチ回路は、プリフェッチ要求を書込および読出双方としてフォーマットすることにより、各チャネルの帯域幅を使用する。たとえば、TLBプリフェッチ回路は、アイドル基準を有効にしてもよい。アイドル基準を有効にした状態で、TLBプリフェッチ回路は、アイドル状態になった第1のチャネルでプリフェッチ要求を送信する。プリフェッチフィルタ回路は、書込要求が確実にメインメモリに到達しないようにする。特定の実装例において、プリフェッチ書込要求は、要求がメインメモリに達したとしてもデータが書込まれないよう、すべてのバイトイネーブルがデアサートされるように構成することができる。
【0046】
いくつかの例において、TLBプリフェッチ回路は、マスタからの仮想メモリアクセス要求が読出要求なのか書込要求なのかを判断するように構成される。TLBプリフェッチ回路は、仮想メモリアクセス要求によってトリガされたプリフェッチ要求をフォーマットすることにより、判断した読出または書込タイプと一致するようにする。このようにして、プリフェッチ要求は、元の仮想メモリアクセスのアクセスタイプ(読出または書込)に一致することになる。
【0047】
本明細書に記載の各種実装例に従うと、TLBプリフェッチ回路は、MMU内に位置する対応するTLBの内容に関する知識を使用するように構成されている。したがって、TLBプリフェッチ回路は、TLBの内容のローカルコピーを保持する。ローカルコピーはTLBデータまたは機能をすべて含んでいる必要はない。特に、ローカルコピーは、実際のTLB内の現在のエントリに対する仮想メモリアドレスを含んでいればそれで十分であってもよい(たとえば、物理アドレスを格納する必要はない)。
【0048】
各種実装例は、TLBプリフェッチ回路が連続するページおよび対応するアドレスを用いて仮想メモリプリフェッチ要求を生成するという文脈で説明している。連続するアドレスは、最後に受けた仮想メモリアクセスのアドレスを基準とする。その他の実装例では、TLBプリフェッチ回路を、不連続アドレス生成アルゴリズムを使用してプリフェッチアドレスを生成するように構成し得る。たとえば、特定のマスタが、大抵は仮想ページの1ページおきにメモリにアクセスするという機能を果たしてもよい。したがって、TLBプリフェッチ回路を、仮想ページの1ページおきにプリフェッチアドレスを生成するように構成することができる。所望の深さパラメータに対してTLBの内容が十分であるか否かを判断することについて、同様の調整を行ってもよい。その他のより複雑なアドレス生成アルゴリズムを使用することもできる。
【0049】
図5は、本開示の実装例に従う、仮想メモリプリフェッチ要求を使用するように構成された集積回路(IC)チップの一例を示す。ICチップ502は、仮想メモリアクセス要求の複数のソースを含む(いくつかの相互接続ソリューションではマスタとも呼ばれる)。示されている例は、1つ以上のCPU506および508を有するマイクロコントローラ回路504と、GPU510と、カスタマイズ可能な設計資産(IP)コア512とを含む。限定されないが、アクセス要求ソースのその他いくつかの例は、入出力回路、IPコア、またはその他の回路にリンクさせることができるDSPおよびDMA回路を含む。
【0050】
本明細書に記載の各種実装例は必ずしもそれに限定されないが、ICチップはプログラマブルICチップであってもよい。たとえば、プログラマブルICは、プログラマブルリソース(たとえば論理ブロックおよび相互接続)を含むSoCであってもよい。プログラマブルリソースは、アレイ内に種類が異なるいくつかのプログラマブルロジックブロックを含むフィールドプログラマブルゲートアレイロジック(FPGA)であってもよい。プログラマブルICが記載されているものの、開示されている方法およびシステムは、特定用途向け集積回路(ACIS)を対象としプログラマブル集積回路(IC)に限定されない回路設計に適用し得ることを、当業者は理解するであろう。
【0051】
記載されているICチップは、各々が本明細書に記載の実装例のうちの1つ以上に従う、MMU516と、プリフェッチ生成回路514と、プリフェッチフィルタ回路518とを含む。MMUは、オフチップで示されているメインメモリ520へのアクセスを制御する。メインメモリ520はチップ上に位置していてもよい。
【0052】
示されている構成要素のうちの1つ以上をプログラマブルロジックで実装してもよい。たとえば、影が付けられた構成要素510、512、514、および518をプログラマブルロジック内で実装してもよい。プログラマブルロジックを使用することにより、エンドユーザにとっての柔軟性をより高くすることができる。たとえば、プリフェッチ生成回路514およびプリフェッチフィルタ回路518を、ICチップ製造者が開発したIPコアのライブラリの一部として提供することができる。そうすると、エンドユーザは、これらの回路に対してIPコアを実装するか否かを決定することができる。本明細書に記載のように、MMUは、プリフェッチ生成回路514およびプリフェッチフィルタ回路518から実質的に独立して動作するように設計することができる。たとえば、MMUは、すべての仮想メモリ要求を、プリフェッチ要求であろうと専用マスタからの要求であろうと、同じように扱うことができる。よって、IPコアを、MMUの構成に影響をほとんどまたは全く与えることなく、選択的に設計に追加したり設計から削除したりすることができる。
【0053】
プログラマブルIC502は、異なるプログラマブルタイルを多数含み得る。簡潔にするためにこれらのタイルは明示していない。プログラマブルタイルのいくつかの例は、マルチギガビットトランシーバ(MGT)、コンフィギュラブルロジックブロック(CLB)、ランダムアクセスメモリブロック(BRAM)、入出力ブロック(IOB)、コンフィギュレーションおよびクロッキングロジック(CONFIG/CLOCK)、デジタル信号処理ブロック(DSP)、専用入出力ブロック(I/O)、たとえば、クロックポート、および、デジタルクロックマネージャ、アナログデジタル変換器、システムモニタリングロジックなどといったその他のプログラマブルロジックを含む。
図5は、(プログラマブル)ICチップアーキテクチャの非限定的な例を示すことを意図している。
【0054】
本明細書に示されるさまざまなフロー図に関して、ブロックおよびそれに対応する機能の特定の順序は、例として与えられている。この順序は必ずしも限定的な順序ではなく、各種実装例に応じて変更し得る。
【0055】
プログラムコードを用いて構成されたメモリ構成および1つ以上のプロセッサを含むさまざまな計算構成の代替例が、本明細書に開示される機能を実行し得るデータ構造およびプロセスをホストするのに好適であろうことを、当業者は理解するであろう。加えて、これらのプロセスは、コンピュータ読取可能な多様な記憶媒体または配信チャネル、たとえば磁気もしくは光ディスクもしくはテープ、電子記憶装置、またはネットワークを介したアプリケーションサービス等を介して提供し得るものである。
【0056】
場合によっては側面および特徴が個々の図面に記載されていることがあるが、1つの図面の特徴と別の部面の特徴との組み合わせは、組み合わせとして明確に示されていないまたは説明されていないものの、可能であることが、理解されるであろう。
【0057】
一例において、仮想メモリおよびマルチポートメモリ管理ユニット(MMU)回路に対する仮想メモリプリフェッチ要求を生成する方法を提供することができる。このような方法は、MMU回路の特定のポートに送信される仮想メモリアクセス要求をモニタリングするステップと、仮想メモリアクセス要求に基づく少なくとも1つのトリガ条件の充足を検出するステップと、トリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成するステップと、仮想メモリプリフェッチ要求を上記特定のポートを用いてMMU回路に送信するステップと、仮想メモリプリフェッチ要求に対応する物理アドレスに対する、MMU回路からの物理アクセス要求を、モニタリングするステップと、仮想メモリプリフェッチ要求に対応する物理アクセス要求をフィルタリングするステップとを含み得る。
【0058】
このような方法は、フィルタリングした物理アドレスについてトランザクション完了表示を生成し、このトランザクション完了表示をMMU回路に与えるステップをさらに含み得る。
【0059】
このような方法は、仮想メモリのページサイズの表示を受け、この表示に応じて上記少なくとも1つのトリガ条件を調整するステップをさらに含み得る。
【0060】
このような方法は、生成する仮想メモリプリフェッチ要求の数の表示を受け、この表示に応じて別のトリガ条件を調整するステップをさらに含み得る。
【0061】
このような方法は、MMU回路の上記特定のポートのアイドル状態を検出するステップをさらに含み得る。上記仮想メモリプリフェッチ要求を特定のポートを用いてMMU回路に送信するステップは、アイドル状態の検出に応じて実行されてもよい。
【0062】
このような方法は、対応する表示を受けたことに応じて、アイドル状態の検出に対する反応性を無効にするステップをさらに含み得る。
【0063】
このような方法は、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、この表示に応じて、仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するステップさらに含み得る。
【0064】
あるこのような方法において、仮想メモリプリフェッチ要求は各々読出要求であってもよい。
【0065】
あるこのような方法において、仮想メモリプリフェッチ要求は書込要求を含み得る。
別の例において、システムを提供することができる。このようなシステムは、複数のポートを含むメモリ管理ユニット(MMU)回路を備え、各ポートは、それぞれの変換ルックアサイドバッファ(TLB)を用いて仮想メモリアドレスを物理メモリアドレスに変換するように構成されている。システムはさらに、少なくとも1つのTLBプリフェッチ回路を備え、少なくとも1つのTLBプリフェッチ回路は、複数のポートのうちの特定のポートについて、MMU回路の上記特定のポートに送信される仮想メモリアクセス要求をモニタリングし、仮想メモリアクセス要求について、少なくとも1つのトリガ条件の充足を検出し、少なくとも1つのトリガ条件の充足に応じて仮想メモリプリフェッチ要求を生成し、仮想メモリプリフェッチ要求を上記特定のポートを用いてMMU回路に送信するように構成し得る。システムはさらに、少なくとも1つのTLBプリフェッチフィルタ回路を備え、少なくとも1つのTLBプリフェッチフィルタ回路は、仮想メモリプリフェッチ要求に対応する物理アドレスに対する、MMU回路からの物理アドレス要求を、モニタリングし、仮想メモリプリフェッチ要求に対応する物理アドレスをフィルタリングするように、構成し得る。
【0066】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチフィルタ回路はさらに、フィルタリングした物理アドレスに関するトランザクション完了表示を生成し、トランザクション完了表示をMMU回路に与えるように構成し得る。
【0067】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路はさらに、システムの仮想メモリのページサイズの表示を受け、この表示に応じて上記少なくとも1つのトリガ条件を調整するように構成し得る。
【0068】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路はさらに、生成する仮想メモリプリフェッチ要求の数の表示を受け、この表示に応じて別のトリガ条件を調整するように構成し得る。
【0069】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路はさらに、上記特定のポートのアイドル状態を検出し、アイドル状態の検出に応じて仮想メモリプリフェッチ要求を送信するように構成し得る。
【0070】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路はさらに、対応する表示を受けたことに応じて、アイドル状態の検出に対する反応性を無効にするように構成し得る。
【0071】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路はさらに、仮想メモリプリフェッチ要求生成の発行レートの表示を受け、この表示に応じて、仮想メモリプリフェッチ要求の送信と送信との間に遅延を挿入するように構成し得る。
【0072】
あるこのようなシステムにおいて、仮想メモリプリフェッチ要求は各々読出要求であってもよい。
【0073】
あるこのようなシステムにおいて、仮想メモリプリフェッチ要求は書込要求を含み得る。
【0074】
あるこのようなシステムにおいて、上記少なくとも1つのTLBプリフェッチ回路は、MMU回路の上記特定のポートに送信される仮想メモリアクセス要求が書込要求か読出要求かを判断し、書込要求の場合は仮想メモリプリフェッチ要求を書込要求として構成し読出要求の場合は仮想メモリプリフェッチ要求を読出要求として構成するように、構成し得る。
【0075】
あるこのようなシステムは、上記MMU回路、上記少なくとも1つのTLBプリフェッチ回路、および上記少なくとも1つのTLBプリフェッチフィルタ回路各々を含む集積回路チップをさらに備えていてもよい。
【0076】
上記方法およびシステムは、RAM回路を使用するさまざまなシステムに適用できると考えられる。当業者にとって、その他の側面および特徴は、本明細書の検討を通して明らかになるであろう。上記方法およびシステムの一部は、ソフトウェアを実行するように構成された1つ以上のプロセッサとして、または、特定用途向け集積回路(ASIC)として、または、プログラマブルロジックデバイス上のロジックとして、実装してもよい。加えて、本明細書において特定される各種回路は、共通のコンピュータ処理ユニットまたはデジタル処理ユニットを使用するのと同様に、ハードウェア回路を共有してもよい。明細書および図面は専ら例とみなされ本発明の真の範囲は以下の請求項によって示されることが意図されている。