(57)【要約】      （修正有）【課題】TLBをデータ設定する方法を提供する。【解決手段】将来における使用が予想されるアドレス変換202、204エントリによりトランスレーションルックアサイドバッファ(TLB)206、208を自動的に事前充填し、それにより、TLBミス率を低減してパフォーマンスを改善するように構成されたメモリ管理ユニット(MMU)を備える。TLBは変換エントリにより事前充填され、事前充填に対応するアドレスが予測に基づいて選択される。予測は外部デバイス214から導出されるか又はストライド値に基づき、ストライド値は所定の定数又はアクセスパターンに基づいて動的に変更される。TLBを事前充填することで、TLBミスの場合のアドレス変換を決定することに関わるレイテンシをクリティカルパスから効果的に除去する。【選択図】図２Ａ
2015164047.tif 000002
【特許請求の範囲】
【請求項１】
トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定する方法であって、
前記TLBによって変換される第1の仮想アドレス(202)を受信する(502)ステップと、
単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填する(504)ステップと、
を含み、
前記第1の仮想アドレスは、第1の外部デバイスから受信した第1のヒントアドレス値から導出される、方法。
【請求項２】
トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定する方法であって、
前記TLBによって変換される第1の仮想アドレス(202)を受信する(502)ステップと、
単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填する(504)ステップと、
を含み、
前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの前記第1のストリームは、第1のプログラム可能なストライド値にさらに基づく、方法。
【請求項３】
前記TLBによって変換される第2の仮想アドレスを受信するステップと、
単一のバーストにおいて、前記第2の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第2のストリームの変換により前記TLBを事前充填するステップと、
を更に含み、
前記第2のストリームの前記変換により前記TLBを前記事前充填するステップは、前記第1のストリームの前記変換により前記TLBを前記事前充填するステップと同時に実行される、
請求項1または2に記載の方法。
【請求項４】
前記第1のプログラム可能なストライド値は、ソフトウェアによって動的に決定される、請求項2に記載の方法。
【請求項５】
前記第1のプログラム可能なストライド値は、所定の定数である、請求項2に記載の方法。
【請求項６】
前記第1のプログラム可能なストライド値は、TLBミスのパターンを分析することによって決定される、請求項2に記載の方法。
【請求項７】
前記第1のプログラム可能なストライド値は、外部デバイスから導出されたヒント値に基づく、請求項2に記載の方法。
【請求項８】
前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの前記第1のストリームは、前記第1の仮想アドレスに隣接することによってさらに特徴付けられる、請求項1または2に記載の方法。
【請求項９】
前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの前記第1のストリームの変換により前記TLBを前記事前充填するステップは、前記1つまたは複数の事前充填仮想アドレスに対応するアドレス変換の需要要求を前記TLBが受信する前に実行されることによってさらに特徴付けられる、請求項1または2に記載の方法。
【請求項１０】
前記第1の仮想アドレスは前記TLB内でミスを生じさせる、請求項1または2に記載の方法。
【請求項１１】
第1のレートで実行される前記第1のストリームの前記変換による前記TLBの前記事前充填、および第2のレートで実行される前記第2のストリームの前記変換による前記TLBの前記事前充填
をさらに含む、請求項3に記載の方法。
【請求項１２】
前記第1のレートおよび前記第2のレートの比率は、前記第1のストリームに関係する前記TLB内の事前充填エントリの数と前記第2のストリームに関係する前記TLB内の事前充填エントリの数との間の所望のバランスに基づいて決定される、請求項11に記載の方法。
【請求項１３】
トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定するための装置であって、
前記TLBによって物理アドレス(204)に変換される第1のクライアント(402a)からの第1の仮想アドレス(202)を受信するように構成された論理と、
単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填するように構成された論理(216、220)と
を含み、
前記第1の仮想アドレスは、第1の外部デバイスから受信した第1のヒントアドレス値から導出される、装置。
【請求項１４】
トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定するための装置であって、
前記TLBによって物理アドレス(204)に変換される第1のクライアント(402a)からの第1の仮想アドレス(202)を受信するように構成された論理と、
単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填するように構成された論理(216、220)と
を含み、
前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの前記第1のストリームは、第1のプログラム可能なストライド値にさらに基づく、装置。
【請求項１５】
請求項1から12のいずれか１項に記載の方法を実行するための手段を含む装置。
【請求項１６】
請求項1から12のいずれか１項に記載の方法をコンピュータまたはプロセッサに実行させるための少なくとも1つの命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
米国特許法第119条に基づく優先権の主張
本特許出願は、本出願の譲受人に譲渡され、参照により本明細書に明確に組み込まれる、2011年3月3日に出願された「MEMORY MANAGEMENT UNIT WITH PRE-FILLING CAPABILITY」と題する米国仮出願第61/448,839号の優先権を主張する。
【０００２】
開示する実施形態は、仮想アドレスから物理アドレスへのメモリアドレスの変換を管理するためのメモリ管理ユニット(MMU)を対象とする。より詳細には、例示的な実施形態は、仮想アドレスから物理アドレスへの変換に使用され得る変換キャッシュの管理のための事前充填のような効率的な技法を対象とする。
【背景技術】
【０００３】
現代のオペレーティングシステムはしばしば、プロセッサにおける物理記憶空間の使用を最大化するために仮想メモリ方式を使用する。仮想メモリは当技術分野でよく知られている。仮想メモリは、仮想アドレスによってアドレス指定され得る。プログラムに関係する仮想アドレス空間は通常、ページに分割される。ページは、連続する仮想メモリアドレスのブロックである。プログラムは仮想アドレスに関して記述され得るが、プロセッサによるプログラム命令の実行のために、物理アドレスへの変換が必要なことがある。仮想アドレスを対応する物理アドレスにマッピングするために、ページテーブルが採用され得る。
【０００４】
仮想アドレスから物理アドレスへの変換を処理するために、メモリ管理ユニット(MMU)が一般的に使用される。MMUは、変換を処理するために、仮想アドレスの物理アドレスへのマッピングを含むページテーブルエントリ(PTE)を参照することがある。物理メモリ空間は、物理メモリまたはデータバッファのブロックを動的に割り振り、解放することによって管理され得る。動的割振りおよび解放のこのプロセスでは、空いている物理メモリ空間が断片化され、不連続の空きブロックを含んでいるのが一般的である。それにより、仮想アドレスの連続する範囲が、物理メモリのいくつかの不連続ブロックにマッピングされることがある。したがって、連続する仮想アドレスが連続する物理アドレスに都合よくマッピングできない場合に、「ページテーブルウォーク」としても知られるページテーブル参照プロセスを頻繁に実行する必要があり得る。これらの頻繁なページテーブル参照は、パフォーマンスにかなりの影響を与えることがある。
【０００５】
頻繁なページテーブル参照に対処する従来型の一技法は、トランスレーションルックアサイドバッファ(TLB)としても知られる変換キャッシュの使用を含む。TLBは、タグ付きハードウェア参照用テーブルにおいて頻繁にアクセスされるページの変換をキャッシュすることができる。それにより、仮想アドレスがTLB内でヒットする場合、ページテーブルウォークに関連するコストを負担しなくても、対応する物理アドレス変換をTLBから再利用することができる。
【０００６】
図1を参照すると、TLBの従来型の実装形態が示されている。図示のように、TLB100は仮想アドレス(VA)102を物理アドレス(PA)104に変換するように構成される。仮想アドレスA、B、C、およびDは、連想メモリ(CAM)112に記憶される。仮想アドレスの一部分はタグ110を形成し、タグ110は、仮想アドレス102の変換がTLB100内に存在するかどうかを判断するために仮想アドレス102と比較される。ヒットがある場合、物理アドレス104を形成するために、デマルチプレクサ論理108を使用してランダムアクセスメモリ(RAM)106から対応する物理アドレスP、Q、R、またはSが読み出される。A、B、C、またはDのような仮想アドレスは、その対応する物理アドレス変換P、Q、R、またはSとともに、TLB100内のエントリと総称され得る。
【０００７】
TLB100のようなTLB内のエントリは、いくつかの方法でデータ設定され得る。TLBにおける充填または更新を評価するための一般的基準は、TLBエントリをいつ充填するか、新しいエントリをTLB内のどこに配置できるか、および、TLBの各更新中にTLBエントリを何個充填できるか、を含む。TLBエントリを更新または充填するための2つの従来型技法が当技術分野で知られている。
【０００８】
「ソフトウェア充填」と呼ばれる第1の技法は、次のようにTLBを充填するための上記の基準を満たす。ソフトウェアにおいて開始された充填コマンドに従って充填が実行される。ソフトウェアによって指定されたアドレスにおいて充填が実行される。そして通常は、TLB内の単一のエントリにソフトウェア充填が適用される。
【０００９】
中央処理装置(CPU)用のMMUにおいて、「需要充填」と呼ばれる第2の技法がたいてい採用される。需要充填は、次のようにTLBを充填するための基準を満たす。TLB内のミスに従って充填が実行される。ミスを生じさせたアドレスにおいて充填が実行される。そして通常は、ミスを生じさせたアドレスに対応するTLB内の単一のエントリに需要充填が適用される。需要充填の1つの利点は、ミスに従って必要なときにTLBエントリが充填されるにとどまることである。ただし、付随する不利点として、必要とされるTLBエントリが充填されるのをTLBが待つたびに、TLBユーザを立ち往生させることになる。
【００１０】
需要充填はCPUにとって適切なソリューションである場合があり、その理由は、プログラムが高度の時間的局所性を通常含む、すなわち、同じアドレスが時間的に近接してアクセスされることにある。しかしながら、ストリーミングアクセスは、時間的局所性を示さないことがある。ストリーミングアクセスは一般に、バーストで実行され得る1つまたは複数のアクセスからなるセットを含み得る。たとえば、高度の時間的局所性を示さないことがあるストリーミングアクセスは、マルチメディアアクセラレータ(たとえば、ディスプレイエンジン)からのアクセス、およびメモリコピー中のCPUからのアクセスを含み得る。同じアドレスを再利用するのとは対照的に、時間的局所性に欠けるそのようなストリーミングアクセスは毎回、新しいアドレスに向けられ得る。したがって、需要充填はTLBのパフォーマンスの劣化を生じさせることがある。そのような劣化は、システムMMUまたは入出力(I/O)MMUのようなCPU以外のデバイス用に設計されたMMUにおいて特に明白であり得る。
【００１１】
(「非ストリーミングアクセス」と呼ばれる)ストリーミングアクセス以外のアクセスに関しては、限定されたケースにおいてTLBのサイズを拡大して、TLBミスの低減を実現することができる。一方、ストリーミングアクセスの場合、TLBのサイズ拡大は同じ利益をもたらさない。実際、理論上、TLBのサイズが無限大に向かって拡大したとしても、ミスおよび付随する立ち往生によってTLBのパフォーマンスが著しく劣化し続け得ることが、いくつかのケースで認められ得る。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
したがって、特に時間的局所性のないアクセスに関して、高いミス率によって生じるパフォーマンス劣化に悩まされないTLB充填技法が当技術分野において必要である。
【課題を解決するための手段】
【００１３】
例示的な実施形態は、将来における使用が予想されるアドレス変換エントリによりトランスレーションルックアサイドバッファ(TLB)を自動的に事前充填し、それにより、TLBミス率を低減してパフォーマンスを改善するように構成されたメモリ管理ユニット(MMU)のためのシステムおよび方法を対象とする。
【００１４】
たとえば、一実施形態は、変換エントリによりTLBを自動的に事前充填するように構成されたMMUを対象とし、この場合、事前充填に対応するアドレスが予測に基づいて選択され得る。1つまたは複数の実施形態は、TLB内のミス発生エントリに対応するアドレス以外の所定数の隣接アドレスでTLBエントリを事前充填することができる。実施形態はまた、MMUの外部にあるエージェントから受信したヒントアドレス値から導出された予測に基づいて、TLBを事前充填することができる。
【００１５】
例示的な実施形態では、ストライド値によりミス発生エントリのアドレスを増分(または減分)することから形成されたアドレスからエントリがプリフェッチされるように、ストライド値に基づいてTLB事前充填を実行することができる。ストライド値は、あらかじめ決定されてよく、さらに、ソフトウェアにおいてプログラムされてよく、レジスタに記憶されてよい。ストライド値はまた、TLB内のミス発生エントリによって形成されたストライドパターンを分析するように構成されたストライド予測子論理を使用することによって、動的に計算され得る。
【００１６】
例示的な実施形態はまた、複数のストリーミングアクセスのためのTLB事前充填を対象とし得る。複数のストリーミングアクセスは、システムMMUにストリーミングアクセスを要求する複数の外部エージェントから導出されてよく、この場合に複数のストリーミングアクセスは、共通の属性またはストライド値を共有しなくてよい。複数のストリーミングアクセスのアドレス変換ニーズをサポートするために、複数のストライド予測子が採用され得る。
【００１７】
例示的な実施形態は、トランスレーションルックアサイドバッファ(TLB)をデータ設定する方法を対象とし、本方法は、TLBによって物理アドレスに変換される第1の仮想アドレスを受信するステップと、単一のバーストにおいて、第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換によりTLBを事前充填するステップとを含む。
【００１８】
別の例示的な実施形態は、トランスレーションルックアサイドバッファ(TLB)をデータ設定するための装置を対象とし、本装置は、TLBによって物理アドレスに変換される第1の仮想アドレスを生成するように構成された論理と、単一のバーストにおいて、第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換によりTLBを事前充填するように構成された論理とを含む。
【００１９】
別の例示的な実施形態は、トランスレーションルックアサイドバッファ(TLB)をデータ設定する方法を対象とし、本方法は、第1のレートで生成された仮想アドレスの第1のストリームのアドレス変換によりTLBの第1のエントリセットをデータ設定するステップと、第2のレートで生成された仮想アドレスの第2のストリームのアドレス変換によりTLBの第2のエントリセットをデータ設定するステップとを含む。
【００２０】
別の例示的な実施形態は、アドレス生成ユニット(AGU)を対象とし、AGUは、トランスレーションルックアサイドバッファ(TLB)において変換される仮想アドレスの第1のストリームを第1のレートで生成するように構成された論理と、TLBにおいて変換される仮想アドレスの第2のストリームを第2のレートで生成するように構成された論理とを含む。
【００２１】
別の例示的な実施形態は、トランスレーションルックアサイドバッファ(TLB)をデータ設定するためのシステムを対象とし、本システムは、TLBによって物理アドレスに変換される第1の仮想アドレスを受信するための手段と、単一のバーストにおいて、第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換によりTLBを事前充填するための手段とを含む。
【００２２】
別の例示的な実施形態は、トランスレーションルックアサイドバッファ(TLB)をデータ設定するためのシステムを対象とし、本システムは、第1のレートで生成された仮想アドレスの第1のストリームのアドレス変換によりTLBの第1のエントリセットをデータ設定するための手段と、第2のレートで生成された仮想アドレスの第2のストリームのアドレス変換によりTLBの第2のエントリセットをデータ設定するための手段とを含む。
【００２３】
別の例示的な実施形態は、プロセッサによって実行されたとき、トランスレーションルックアサイドバッファ(TLB)をデータ設定するための動作をプロセッサに実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、本非一時的コンピュータ可読記憶媒体は、TLBによって物理アドレスに変換される第1の仮想アドレスを受信するためのコードと、単一のバーストにおいて、第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換によりTLBを事前充填するためのコードとを含む。
【００２４】
別の例示的な実施形態は、プロセッサによって実行されたとき、トランスレーションルックアサイドバッファ(TLB)をデータ設定するための動作をプロセッサに実行させるコードを含む非一時的コンピュータ可読記憶媒体を対象とし、本非一時的コンピュータ可読記憶媒体は、第1のレートで生成された仮想アドレスの第1のストリームのアドレス変換によりTLBの第1のエントリセットをデータ設定するためのコードと、第2のレートで生成された仮想アドレスの第2のストリームのアドレス変換によりTLBの第2のエントリセットをデータ設定するためのコードとを含む。
【００２５】
添付の図面は、本発明の実施形態に関する説明において助けとなるように提示されており、実施形態の限定ではなく、実施形態の例示のみのために提供されている。
【図面の簡単な説明】
【００２６】
【図１】従来型のTLBを示す概略図である。
【図２Ａ】アクティブTLBおよび将来TLBの分類による例示的なMMUを示す概略図である。
【図２Ｂ】アクティブTLBおよび将来TLBの分類による例示的なMMUを示す概略図である。
【図３Ａ】例示的な実施形態によるTLBをデータ設定するためのアドレス生成ユニットを含むシステムを示す図である。
【図３Ｂ】例示的な実施形態によるTLBをデータ設定するためのアドレス生成ユニットを含むシステムを示す図である。
【図４】複数のクライアントが複数のストリーミングアクセスを送信する例示的なシステムMMUを示す図である。
【図５】例示的な実施形態によるTLBをデータ設定する方法のフロー図である。
【図６】例示的な実施形態によるマルチコアプロセッサを含むワイヤレスデバイスのブロック図である。
【発明を実施するための形態】
【００２７】
本発明の特定の実施形態を対象とする以下の説明および関連する図面で、本発明の態様を開示する。本発明の範囲から逸脱することなく代替的な実施形態を考案することができる。さらに、本発明の関連する詳細を不明瞭にしないように、本発明のよく知られている要素については詳細に説明しないか、または省略する。
【００２８】
「例示的な」という言葉は、「一例、実例または例として」を意味するために本明細書で使用される。「例示的」として本明細書で説明する任意の実施形態は、必ずしも他の実施形態よりも好ましいまたは有利であると解釈されるべきではない。同様に、「本発明の実施形態」という用語は、本発明のすべての実施形態が、論じられた特徴、利点または動作モードを含むことを必要としない。
【００２９】
本明細書で用いられる用語は、特定の実施形態の説明のみを目的とするものであり、本発明の実施形態を限定することは意図されない。本明細書で使用する単数形「a」、「an」、および「the」は、文脈が別段に明確に示すのでなければ、複数形をも含むものとする。さらに、本明細書で使用する「含む(comprises)」、「含んでいる(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、述べられた特徴、整数、ステップ、動作、要素、および/または構成要素の存在を明示するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことを理解されたい。
【００３０】
さらに、多くの実施形態が、たとえば、コンピューティングデバイスの要素によって実行すべき一連のアクションに関して説明される。本明細書で説明する様々なアクションは、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つもしくは複数のプロセッサによって実行されるプログラム命令によって、または両方の組合せによって実施できることを認識されよう。さらに、本明細書で説明するこれらの一連のアクションは、実行時に、関連するプロセッサに本明細書で説明する機能を実施させるコンピュータ命令の対応するセットを記憶した、任意の形式のコンピュータ可読記憶媒体内で全体として具現化されるものと見なすことができる。したがって、本発明の様々な態様は、すべてが特許請求する主題の範囲内に入ることが企図されているいくつかの異なる形式で具現化され得る。さらに、本明細書で説明する実施形態ごとに、そのような実施形態の対応する形式を、たとえば、記載のアクションを実施する「ように構成された論理」として本明細書で説明することがある。
【００３１】
例示的な実施形態は、従来型のTLB充填技法のいくつかの限界を克服するTLB充填技法を含む。そのような例示的なTLB充填は、メモリ管理ユニット(MMU)によって実行され得る。たとえば、ソフトウェア充填や需要充填などの従来型の技法と比較して、例示的なTLB充填技法は、高いミス率による影響を受けないことが可能である。例示的なTLB充填は、ソフトウェアコマンドまたはTLBミスを待つ必要はなく、前もってTLB充填を予測し、前もってTLBを事前充填することができる。このようにして、立ち往生を回避でき、将来のアクセスのためのページテーブルウォークに取られる時間を隠し、クリティカルパスから除去することができる。たとえば、ミスに従ってアドレスの要件が確立された後にTLB充填プロセスを開始することによって長い遅延が生じることのないように、TLB内の現在のエントリがアクセスされている間にTLB事前充填を実行することができる。そのようなTLB事前充填は、例示的な実施形態ではいくつかの方法で実行され得る。
【００３２】
一実施形態は、本明細書において「空間プリフェッチによる需要充填」と呼ぶ従来型の需要充填の修正を含む。この実施形態では、ミスに従ってTLB内で充填されるエントリの数が、ミス時にミスが発生している単一のエントリを超えて増加する。ミスに従って「N」個の隣接エントリが充填され得る。従来型の需要充填と比較して、例示的な実施形態における空間プリフェッチによる需要充填は、次のようにTLB内の充填を評価するための基準を満たすことができる。TLBミスに従って充填が実行され得る。ミスを生じさせたアドレスにおいて充填が実行され得る。そして、ミスに対応するアドレスに隣接する最大N個の隣接アドレスが充填され得る。明らかなように、従来型の需要充填に対する1つの改善点は、TLB内で前もって、将来の充填を予測してN個の隣接アドレスを充填することにある。
【００３３】
空間プリフェッチによる需要充填は、ストリーミングアクセスのアドレスにおける任意の既存の空間的局所性を利用することができる。本明細書で使用するストリーミングアクセスまたはストリームは一般に、単一のバーストで実行され得る1つまたは複数のアクセスまたはトランザクションからなるセットを指し得る。空間的局所性は一般に、アドレス空間において互いに近接したアドレスによって示される性質を指す。言い換えれば、隣接アドレスは空間的局所性を示す。したがって、ストリーミングアクセスが空間的局所性を示す可能性が高い場合、前もって隣接アドレスをプリフェッチすることで、確実に、プリフェッチされたデータが将来のアクセス中にTLB内でアクセスされ、それによりTLBヒットが生成されるようになる。
【００３４】
アドレスにおける空間的局所性を用いる方法は、従来型のデータキャッシュのキャッシュラインサイズを拡大することに類似することがあり、その理由は、キャッシュラインがたいてい隣接アドレスを含むことにある。したがって、TLB充填に関して、空間的プリフェッチによる需要充填は、1つのページテーブルエントリ(PTE)のサイズよりも大きいバス幅を利用することができる。たとえば、2つ以上のPTEが単一のサイクルでフェッチされ得る。例として、PTEが32ビット幅であると仮定する。PTE2が、128ビット幅のデータバスに対応する128ビットの直線上にある第3のエントリであり、PTE2が需要充填に対応すると仮定する。このシナリオでは、ページテーブルウォーク論理は、PTE2をフェッチするのに必要な同じ持続時間内に、PTE2に隣接する3つのさらなるPTEをフェッチするように構成され得る。したがって、単一のアクセスにおいて、PTE2のみがフェッチされる代わりに、隣接PTEからなるセット、すなわち{PTE0, PTE1, PTE2, PTE3}がフェッチされ得る。
【００３５】
別の実施形態は、本明細書において「ストリーム事前充填」と呼ぶTLB充填技法を含む。ストリーム事前充填は、ストリーミングアクセス内でアドレスストリームを識別し、アドレスストリーム内のエントリが必要とされるときよりも前にTLB充填を開始することができる。ストリーム事前充填の一態様は、従来型の需要充填に従った場合に充填されているはずの1つまたは複数のエントリからなるシーケンスそのものでTLBを充填することを実現することである。しかしながら、従来型の需要充填との差異は、ストリーム事前充填が、TLB充填を、需要充填が同じTLB充填を開始し得るときよりも前に開始するように構成され得ることにある。したがって、ストリーム事前充填は、従来型の需要充填におけるTLBミスに従ったページテーブルウォークによって生じるレイテンシを効果的に隠すことができる。
【００３６】
ストリーム事前充填は、次のようにTLB内の充填を評価するための基準を満たす。ページテーブルウォークによって生じるレイテンシを効果的に隠すのに必要な程度にTLBミスに先立ってTLB充填が実行される。潜在的にミスが予想されているアドレス、すなわち、従来型の需要充填の過程において遭遇してミスが発生したと思われるアドレスについて、TLB充填が実行される。ストリーム事前充填が、一度に1つのTLBエントリを充填する。
【００３７】
例示的な実施形態は、いくつかの方法のうちの1つにおいてストリーム事前充填のために、TLB内でミスが発生する可能性があるアドレスの予測を実行することができる。1つのそのような実施形態は、ストリーム事前充填を実施している例示的なMMUの外部にあるエージェントから予測を受信することを含む。外部エージェントによって事前充填のヒントが生成され得る。事前充填のヒントによって先入れ先出し(FIFO)機構がデータ設定され得る。MMUは、事前充填FIFOから事前充填のヒントを受信するように構成され得る。
【００３８】
例示として、ディスプレイユニットのディスプレイコントローラが、単調に増加するアドレス(仮想アドレス)にわたって連続的にスキャンするように構成され得る。ディスプレイコントローラのアドレス生成ユニットが、対応する単調に増加するページアドレスセットを同時に生成するように構成され得る。通常、ページサイズ(たとえば、4KB)はディスプレイコントローラの個々のアクセス(たとえば、128B)よりも大きい。その結果、アドレス生成ユニットによって生成されたいくつかのアドレスが同じページを共有することができ、それにより、新しいページ変換は個々のアクセスごとには必要ではなくなることがある。したがって、ストリーム事前充填は、アドレス生成ユニットが4KBのページの境界を横断する場合にのみ、ページアドレス変換に関係する新しい予測を生成する必要があり得る。
【００３９】
ディスプレイコントローラに関する上記のストリーム事前充填技法の一実装形態では、アドレス生成ユニットによって生成されたアドレスの1ビットが追跡され得る。たとえば、12番目の最下位ビットであるビット12は、4KB(4096Bまたは2^12B)の境界におけるアドレスの変化を示し得る。したがって、予測は、ビット12が4KBのストライドごとに変化し得る場合に、4KBのストライドに対してトリガされ得る。代替的に、予測は、外部エージェントが4KBを上回るストライドでアドレス空間を横断している場合に、4KBの倍数に対してトリガされるように構成され得る。そのような方法で、予測は、予測自体を行うことに関わるレイテンシを隠すために、十分に前もって行われ得る。随意の特徴として、事前充填FIFOに対するアドレスまたは事前充填のヒントの送信は、リソースを節約するために短縮され得る。したがって、上記の例では、4KBのページサイズの場合、(たとえば、最下位の12ビットを除外することによって)4KBの粒度に移行している32ビットのアドレスのうちの上位20ビットのみが送信される必要があり得る。このようにして、事前充填FIFOの幅が12ビットだけ縮小され得る。
【００４０】
例示的なMMUにおけるストリーム事前充填の別の実装形態として、ページサイズに限定されないストライド値が予測に使用され得る。たとえば、ストライド値がソフトウェアによってプログラムされてよく、さらにMMU内のレジスタに記憶されてよい。したがって、MMUの外部エージェントまたは他のクライアントが変換される特定のアドレスを要求した場合、MMUは、ストライド値によって増分(または減分)された特定のアドレスに等しいアドレスを内部的に生成することができる。この内部生成アドレスは、ストリーム事前充填に関する予測として使用でき、それにより、内部生成アドレスがTLB内に現在ない場合、MMUは、前もって内部生成アドレスの事前充填要求を生成することができる。このようにして、内部生成アドレスのためのページテーブルウォークに関連するいかなる遅延も隠され得る。
【００４１】
ストリーム事前充填のさらに別の実装形態は、ストライド予測子を使用してストライド値を動的に検出し変更するステップを伴う。たとえば、各TLBミスは、前回のミスからの固定したオフセットまたはストライド値で遭遇すると判断され得る。この判断は、ストライド予測子から取得され得る。ストライド予測子は、直近または現在のTLBミスのアドレス、デフォルト値に初期化され得る現在のストライド値、および予測子信頼性値に関連する随意の1つまたは複数のビットを記憶するように構成され得る。次のTLBミスに遭遇すると、次のTLBミスと記憶されている現在のTLBミスとの間のアドレスの差異によりストライド値を更新することができ、現在のTLBのアドレスを次のTLBミスにより置き換えることができ、信頼性値を増分することができる。現在記憶されているストライド値と実際のストライド値とを、現在記憶されているTLBミスのアドレスと遭遇した次のTLBミスのアドレスとの間のアドレスの差異に基づいて比較できるように、このプロセスを繰り返すことができる。ストライド値が合致した場合、現在記憶されているストライド値は将来のストライド値に関する良好な予測子であると確認でき、その分、信頼性値が増分され得る。信頼性レベルが所定のレベルに達すると、ストライド予測子は、現在記憶されているTLBミスのアドレスおよび現在記憶されているストライド値に基づいて予測されるアドレスの事前充填要求を生成することができる。
【００４２】
動的に決定されたストライド値によるストリーム事前充填の上記の実装形態では、MMUはさらに、需要充填に基づいて充填されたTLBエントリとストリーム事前充填によって充填されたTLBエントリとを区別するように構成され得る。たとえば、ストリーム事前充填によって充填されたTLBエントリは、事前充填インジケータビットによってマークされてよく、または「将来TLB」として指定されたTLBの被選択セクションにデータ設定されてよい。ストライド予測子は、(事前充填インジケータによってマークされたか、または将来TLB部分に位置する)事前充填ヒットと需要ミスの両方を監視するように構成され得る。ストライドを計算する目的で、事前充填ヒットと需要ミスの両方がミスとして扱われ得る。事前充填ヒットがそのような形で考慮されていない場合、ストライド予測子は正確でないことがあり、その理由として、事前充填されている潜在的需要ミスはヒットを生成し得るが、ヒットに遭遇しているとみられるのでストライド計算においてこの潜在的需要ミスをストライド予測子は見逃したとみられることが挙げられることが認識されよう。
【００４３】
実施形態はまた、動的に予測されるストライド値を使用するストリーム事前充填が、TLBミスによって生じるレイテンシを隠すのに十分に前もって事前充填を行うことと、TLBがあまりにも多くの未使用の事前充填エントリによりデータ設定される結果になるほど先立ちすぎてTLBを充填することをしないこととの間の所望のバランスを確実に達成するように構成された論理を含むことができる。所望のバランスを達成する例示的な一技法は、インジケータビットにより事前充填によってデータ設定されているTLB内の各エントリにタグを付けることを含み得る。そのようなタグ付きエントリが最初にアクセスされたとき、インジケータビットはクリアされてよく、予測されるストライド値に基づく次のアドレスに関する事前充填が開始され得る。随意の特徴として、事前充填によってデータ設定されるTLB内の最初のエントリは、ソフトウェアによって確立され得る。
【００４４】
ここで図2A〜図2Bを参照すると、バランスを達成するための別の例示的な技法がTLB200に関して示されており、TLB200は、仮想アドレス202を物理アドレス204に変換するように構成され得る。TLB200は、アクティブTLB206および将来TLB208に区分され得る。アクティブTLB206と将来TLB208の両方がアドレス変換要求に従ってアクセスされるが、将来TLB208のみが事前充填によりデータ設定される。アクティブTLB206および将来TLB208は、同時または順にアクセスされ得る。図2Aにおけるアクション210によって示されるように、アクティブTLB206内のミスにより、ミス発生エントリがないか将来TLB208をチェックすることができる。ページテーブルウォーカー220が、ミス発生エントリがないか探索するために、または将来TLB208を事前充填するためにアクティブ化され得る。さらに、外部ソース214からのヒントを潜在的TLB充填の予測に使用し、ページテーブルウォーカー220を前もってアクティブ化することで、対応するレイテンシを隠すこともできる。さらに、将来TLBにおけるヒットを発生させ得るアドレス要求が、(図2のアクション212によって示されるように)ヒット発生エントリをアクティブTLBに移動させることができる。
【００４５】
図2Bを参照すると、アクティブTLB206内のミスにより、ミス発生エントリがないか将来TLB208をチェックし、ストライド予測子216をアクティブ化し、それにより、将来TLB208にデータ設定される潜在的事前充填を開始することができるように、アクション210が変更され得る。
【００４６】
1つまたは複数の実施形態では、プログラマーが特定の適用のためにストライド値を動的に調整できるように、ストライド値はプログラム可能であり得る。さらに、実施形態はまた、マルチメディアデバイスのような外部デバイスから受信したヒントから導出されたストライド値を含むことができる。
【００４７】
次に、ストリーム事前充填に関係する他の実施形態について、図3A〜図3Bを参照して説明する。図示のように、たとえば図3A〜図3Bでは、デバイス302が、メモリ308に対応する物理アドレス(PA)に仮想アドレス(VA)を変換するためにTLB306にアクセスするように構成され得る。デバイス302は、TLB306において変換される仮想アドレスの需要ストリームを生成する任意のデバイスであってよい。たとえば、デバイス302は、ディスプレイデータを読み出すために隣接メモリアドレスを読み取るように構成されたディスプレイコントローラのようなプロセッサまたはストリーミングデバイスであってよい。このようにして、デバイス302は、そのような例においてメモリ308内の隣接アドレスに対応する需要ストリームを生成することができる。図示のように、デバイス302は、この需要ストリームを生成するためのアドレス生成ユニット(AGU)304を含むことができる。
【００４８】
例示的な実施形態では、AGU304は、需要ストリームに加えて仮想アドレスの事前充填ストリームも生成するようにさらに構成され得る。事前充填ストリームのためにAGU304によって生成される仮想アドレスは、事前充填ストリームが需要ストリームの前にあるアドレスを含むことができるように、需要ストリームからの所望の量によってオフセットされ得る。たとえば、事前充填ストリーム内のアドレスは、ページサイズに対応するオフセット値だけ、需要ストリーム内のアドレスの前にあり得る。所望のオフセット値は正または負であってよく、プログラム可能なレジスタから導出され得る。いくつかの実施形態では、AGU304はページ交差部分でのみ事前充填ストリームのための新しいアドレスを生成するように構成され得る。たとえば、ページサイズが4KBである場合、AGU304は、需要ストリームの12番目の最下位ビットがトグルするたびに、新しい事前充填アドレス要求を生成することができる。このようにして、AGU304は、2つの異なるレートで2つの別個のストリームを生成するように構成され得る。たとえば、第1のストリーム(たとえば、需要ストリーム)を(たとえば、クロックサイクルごとに生成され得る隣接メモリアドレスの要求に対応する)第1のレートで生成することができ、第2のストリーム(たとえば、事前充填ストリーム)を第2のレートで(たとえば、需要ストリームがページ境界を横断するたびに)生成することができる。このようにして、TLB306は、第1のストリームと第2のストリームの両方からの変換要求によって同時にデータ設定され得る。前述のように、第1および第2のストリームによってデータ設定されるTLB306のエントリを追跡するために、インジケータを含めることができ、それぞれの第1の生成レートおよび第2の生成レートを、TLB306における需要ベースのエントリと事前充填エントリとの間の所望のバランスに基づいて調整することができる。
【００４９】
いくつかの実施形態では、事前充填ストリームは、メモリ308の変更を回避するために、読取り専用要求である事前充填要求を含むものとして指定され得る。これらの実施形態では、デバイス302は、未解決の需要要求を追跡し、事前充填要求に関するメモリデバイス308から戻されたデータを無視するように構成され得る。いくつかの実施形態では、デバイス302は、事前充填要求から戻された事前充填データをキャッシュすることもでき、その理由は、将来の需要要求によって事前充填データが必要とされるにすぎないことが事前にわかっていることにある。
【００５０】
図3Aに示すように、需要ストリームと事前充填ストリームの両方が、共通の要求チャネルであるチャネル307により、デバイス302からTLB306に通信され得る。ただし、共通チャネルを伴うこの構成では、事前充填要求が、速度がより重視される需要要求の進行を阻むことがある。需要要求のそのような妨害を回避するために、事前充填要求をインジケータビットで区分し、それにより、TLB306がそれらとメモリ308への需要要求(読取り/書込み)とを区別することを可能にすることができる。TLB306はこのようにして、事前充填要求に対応して読取りデータが戻されることをデバイス302が予想していないと思われるときに、追加の読取りトランザクションをメモリ308に転送するのを回避することができる。
【００５１】
共通チャネル307を伴ういくつかの構成では、需要ストリームおよび事前充填ストリームは、下位レベルのリンクプロトコルを採用することによって、論理的に分離され得る。動作中、そのような構成は、論理的に、需要ストリームおよび事前充填ストリームのための別個のチャネルを構成することに等しいことがある。
【００５２】
さらなる実施形態では、別個のチャネルは実際に、需要ストリームおよび事前充填ストリームのために構成され得る。たとえば、図3Bを参照すると、別個のチャネルである需要要求チャネル309および事前充填要求チャネル310が、デバイス302とTLB306との間の通信用に図示のように提供され得る。そのような別個のチャネルは、共通チャネル307における需要要求の妨害などの影響を減らすことができる。別個のチャネルを構成することで、インジケータビットが事前充填要求を区分する必要を回避することもでき、その理由は、要求がどのチャネルから受信されるかに基づいてそのような指示が提供され得ることにある。
【００５３】
再び図2Aを参照すると、需要ストリームおよび事前充填ストリームのための別個のチャネルを含む別の構成が示されていることが認識されよう。仮想アドレス202を含むチャネルが需要ストリームを示す一方、前記のように予測を行うように構成された外部ソース214は事前充填ストリームを生成する。したがって、需要ストリームおよび事前充填ストリームは、別個のデバイスから生成可能であり、図3A〜図3Bに示すように同じデバイス302から生成される必要はないことがわかる。たとえば、ビデオ復号アプリケーションの場合、外部ソース214は、フルフレームデコーダによって生じるメモリページを判断するためのデータストリームに対する完全復号を実行することなく、高速でデータストリームを構文解析するように構成されたフレーム前処理デバイスであり得る。外部ソース214を構成する前処理デバイスは、フルフレームデコーダデバイスの前に実行でき、この場合に前処理デバイスは、フルフレームデコーダに代わって事前充填要求を生成することが可能であり得る。フルフレームデコーダがメモリページにアクセスする必要が生じるまで、これらのメモリページは早々にTLB(たとえば、将来TLB208)に事前充填されてよく、それにより、フルフレームデコーダがTLBミスの処理を待つ必要がなくなることを確実にする。
【００５４】
さらに別の実施形態は、本明細書において「空間プリフェッチによるストリーム事前充填」と呼ぶTLB充填技法を含む。基本的に、空間プリフェッチによるストリーム事前充填は、ストリーム事前充填の各充填に対して2つ以上のエントリをフェッチすることができる。空間プリフェッチによるストリーム事前充填は、次のようにTLB内の充填を評価するための基準を満たすことができる。ページテーブルウォークによって生じるレイテンシを隠すことができるように、予測されるTLBミスに十分に先立ってTLBは充填され得る。ミスが予測されるアドレスでTLB充填が開始され得る。そして、最大「N」個の隣接アドレスが充填され得る。したがって、ストリーム事前充填と比較して、空間プリフェッチによるストリーム事前充填は、アクセスごとにTLBにおいてN個の隣接アドレスを充填することができる。したがって、空間プリフェッチによるストリーム事前充填は、上記で説明したようにストリーム事前充填および空間プリフェッチによる充填の有利な態様を組み合わせることができる。
【００５５】
例示的な実施形態は、フィルタリング能力を有する改良されたストライド予測子によってサポートされる複数のストリーミングアクセスのためのTLB充填を含むこともできる。たとえば、例示的なMMUは、1つまたは複数のクライアントの要求に応え、それにより複数のアドレスストリームをサポートすることができる。MMUへのアクセスを生成するアドレスストリームのすべてが共通のストライド値を共有しなくてもよい。したがって、共有される共通ストライド予測子は、複数のアドレスストリームを適切にサポートすることが可能でなくてもよい。複数のアドレスストリームをサポートするために、複数のストライド予測子または複数のストライドレジスタを有するストライド予測子が用いられ得る。したがって、2つ以上のアドレスストリームが、アドレスストリーム内のいくつかの代表的ビットに基づいて2つ以上の予測子に導かれ得る。アドレスストリームが導かれる予測子論理を判断するために使用され得るアドレスストリーム内のビットの例として、所与のクライアントからの発信ストリームの論理マスタID(またはMID)、読取り/書込みインジケータビット、トランザクションサイズインジケータビットなどがある。
【００５６】
次に図4を参照すると、複数のストリーミングアクセスにTLB事前充填を用いる例示的なMMUシステムが示されている。複数のストリーミングアクセスは、並行かつ/または同時であり得る。図示のように、システムMMU(SMMU)400は、いくつかのマルチメディアクライアント402a〜nに変換サービスを提供する。クライアント402a〜nは、CPUを含む任意のデバイスであってよく、バス410などの共有バスを介してSMMU400と通信することができる。各クライアント402a〜nは、変換のためにSMMU400にアドレスストリームを供給することができる。複数のアドレスストリームは、同じストライド値を有さなくてよい。たとえば、(たとえば、クライアント402aからの)第1のストリームは第1のストライド値を有することがあり、この場合に第1のストリームは、(クライアント402aから受信され得る)第1の仮想アドレスに対応する第1のヒント値に基づく。同様に、(たとえば、クライアント402bからの)第2のストリームは第2のストライド値を有することがあり、この場合に第2のストリームは、(クライアント402bから受信され得る)第2の仮想アドレスに対応する第2のヒント値に基づく。SMMU400はTLB404を含むことができ、TLB404は第2のストリームと同時にかつ/または並行して第1のストリームで事前充填され得る。第1のストリームおよび第2のストリームに対応して、2つ以上の予測子に関する論理が、第1および第2のストリームのような複数のアドレスストリームの変換の際にTLB404を支援する図4の予測子406として指定されるブロックに存在し得る。ページテーブルウォーカー408はまた、(たとえば、第1および第2のストリームに対応する)変換を取得するための複数の同時動作および/または並行動作をサポートするように構成され得る。
【００５７】
したがって、本明細書で説明する例示的な実施形態は、例示的なMMUがパフォーマンスの改善をもたらし、リソースコストを節約し、消費電力を減らすことができるように、TLBを事前充填するように構成され得る。前に説明したように、従来型のTLBは、単にTLBサイズを拡大することによって非ストリーミングアクセスの場合にミス率を低減するように構成され得る。しかしながら、従来型のTLBは、TLBサイズが理論上は無限に拡大したとしても、ストリーミングアクセスの場合にミス率の低減を実現することができない。一方、例示的な実施形態は、ストリーミングアクセスの場合でも、TLBミス率を低減するように構成可能であり、TLBミスを効果的に消去することができる。
【００５８】
さらに、例示的な実施形態は、空間プリフェッチを使用することによって、複数のページテーブルウォークを単一のトランザクションに結合することができ、システム内の個別のメモリトランザクションの数を効果的に減らすことができる。このようにして、メモリ効率性を改善することができ、リソース競合を減らし、それにより、TLBアクセスを直接要求しないことのあるシステム構成要素のパフォーマンスを改善することもできる。
【００５９】
実施形態は、本明細書で開示されるプロセス、機能および/またはアルゴリズムを実行するための様々な方法を含むことが諒解されよう。たとえば、図5に示すように、一実施形態は、トランスレーションルックアサイドバッファ(TLB)(たとえば、アクティブTLB206および将来TLB208)をデータ設定する方法を含むことができ、本方法は、TLBによって物理アドレスに変換される第1の仮想アドレス(たとえば、仮想アドレス202および物理アドレス204)を受信するステップ(ブロック502)と、単一のバーストにおいて、第1の仮想アドレスから導出された事前充填仮想アドレスのストリームの変換によりTLBを事前充填する(たとえば、ストライド予測子216およびページテーブルウォーカー220によって将来TLB208を事前充填する)ステップ(ブロック504)とを含む。
【００６０】
情報および信号は、多種多様な技術および技法のいずれかを使用して表され得ることを当業者は諒解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁界または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表され得る。
【００６１】
さらに、本明細書で開示した実施形態に関連して説明した様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は諒解されよう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈すべきではない。
【００６２】
本明細書で開示した実施形態に関連して説明した方法、シーケンス、および/またはアルゴリズムは、直接的にハードウェアで、プロセッサによって実行されるソフトウェアモジュールで、またはその2つの組合せで実施され得る。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替として、記憶媒体はプロセッサと一体であり得る。
【００６３】
図6を参照すると、例示的な実施形態に従って構成されたマルチコアプロセッサを含むワイヤレスデバイスの特定の例示的な実施形態のブロック図が示され、全体的に600と表される。図示のように、デバイス600はデジタル信号プロセッサ(DSP)664を含み、DSP664は、図2のアクティブTLB206、将来TLB208、ページテーブルウォーカー220などの論理を含むことができ、メモリ632に結合され得る。仮想アドレス202および次の仮想ページ予測(ヒント値)が、以下で説明する外部デバイスから受信され得る。たとえば、図6は、DSP664とディスプレイ628とに結合されたディスプレイコントローラ626のような外部デバイスも示している。コーダ/デコーダ(コーデック)634(たとえば、オーディオおよび/またはボイスコーデック)のような外部デバイスも、DSP664に結合され得る。(モデムを含み得る)ワイヤレスコントローラ640などの他の構成要素/外部デバイスも示されている。スピーカー636およびマイクロフォン638が、コーデック634に結合され得る。図6は、ワイヤレスコントローラ640が、ワイヤレスアンテナ642に結合され得ることも示している。ある特定の実施形態では、DSP664、ディスプレイコントローラ626、メモリ632、コーデック634、およびワイヤレスコントローラ640は、システムインパッケージデバイスまたはシステムオンチップデバイス622に含まれる。
【００６４】
ある特定の実施形態では、入力デバイス630および電源644が、システムオンチップデバイス622に結合される。さらに、ある特定の実施形態では、図6に示すように、ディスプレイ628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644は、システムオンチップデバイス622の外部にある。ただし、ディスプレイ628、入力デバイス630、スピーカー636、マイクロフォン638、ワイヤレスアンテナ642、および電源644の各々は、インターフェースまたはコントローラのような、システムオンチップデバイス622の構成要素に結合され得る。
【００６５】
図6はワイヤレス通信デバイスを示しているが、DSP664およびメモリ632がセットトップボックス、音楽プレーヤ、ビデオプレーヤ、エンターテインメントユニット、ナビゲーションデバイス、携帯情報端末(PDA)、固定ロケーションデータユニット、またはコンピュータに統合されてもよいことに留意されたい。プロセッサ(たとえば、DSP664)がそのようなデバイスに統合されてもよい。
【００６６】
したがって、本発明の実施形態は、TLBを事前充填することによってTLBをデータ設定する方法を具現化するコンピュータ可読媒体を含み得る。したがって、本発明は図示の例に限定されず、本明細書で説明した機能を実行するためのいかなる手段も、本発明の実施形態中に含まれる。
【００６７】
上記の開示は本発明の例示的な実施形態を示すが、添付の特許請求の範囲によって規定される本発明の範囲から逸脱することなく、本明細書において様々な変更および修正を行えることに留意されたい。本明細書で説明した本発明の実施形態による方法クレームの機能、ステップおよび/またはアクションは、特定の順序で実行されなくてもよい。さらに、本発明の要素は、単数形で説明または特許請求されていることがあるが、単数形に限定することが明示的に述べられていない限り、複数形が企図される。
【符号の説明】
【００６８】
100  TLB
102  仮想アドレス(VA)
104  物理アドレス(PA)
106  ランダムアクセスメモリ(RAM)
108  デマルチプレクサ論理
110  タグ
112  連想メモリ(CAM)
200  TLB
202  仮想アドレス
204  物理アドレス
206  アクティブTLB
208  将来TLB
210  アクション
212  アクション
214  外部ソース
216  ストライド予測子
220  ページテーブルウォーカー
302  デバイス
304  アドレス生成ユニット(AGU)
306  TLB
307  チャネル、共通チャネル
308  メモリ、メモリデバイス
309  需要要求チャネル
310  事前充填要求チャネル
400  システムMMU(SMMU)
402a〜n  マルチメディアクライアント、クライアント
404  TLB
406  予測子
408  ページテーブルウォーカー
410  バス
600  デバイス
622  システムインパッケージデバイスまたはシステムオンチップデバイス
626  ディスプレイコントローラ
628  ディスプレイ
630  入力デバイス
632  メモリ
634  コーダ/デコーダ(コーデック)
636  スピーカー
638  マイクロフォン
640  ワイヤレスコントローラ
642  ワイヤレスアンテナ
644  電源
664  デジタル信号プロセッサ(DSP)
【図１】
2015164047.tif 000003
【図２Ａ】
2015164047.tif 000004
【図２Ｂ】
2015164047.tif 000005
【図３Ａ】
2015164047.tif 000006
【図３Ｂ】
2015164047.tif 000007
【図４】
2015164047.tif 000008
【図５】
2015164047.tif 000009
【図６】
2015164047.tif 000010
【外国語明細書】
2015164047000001.pdf