JP2014507042A - 事前充填能力を有するメモリ管理ユニット - Google Patents

事前充填能力を有するメモリ管理ユニット Download PDF

Info

Publication number
JP2014507042A
JP2014507042A JP2013556676A JP2013556676A JP2014507042A JP 2014507042 A JP2014507042 A JP 2014507042A JP 2013556676 A JP2013556676 A JP 2013556676A JP 2013556676 A JP2013556676 A JP 2013556676A JP 2014507042 A JP2014507042 A JP 2014507042A
Authority
JP
Japan
Prior art keywords
tlb
address
stream
virtual
filling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013556676A
Other languages
English (en)
Other versions
JP5731020B2 (ja
Inventor
ボフスラフ・リフリク
トーマス・アンドリュー・ザルトリウス
マイケル・ウィリアム・モロー
レイモンド・ピー・パルマ
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2014507042A publication Critical patent/JP2014507042A/ja
Application granted granted Critical
Publication of JP5731020B2 publication Critical patent/JP5731020B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

将来における使用が予想されるアドレス変換(202、204)エントリによりトランスレーションルックアサイドバッファ(TLB)(206、208)を自動的に事前充填し、それにより、TLBミス率を低減してパフォーマンスを改善するように構成されたメモリ管理ユニット(MMU)のためのシステムおよび方法。TLBは変換エントリにより事前充填されてよく、事前充填に対応するアドレスが予測に基づいて選択され得る。予測は外部デバイス(214)から導出されるか、またはストライド値に基づいてよく、ストライド値は所定の定数であってよく、またはアクセスパターン(216)に基づいて動的に変更されてよい。TLBを事前充填することで、TLBミスの場合のアドレス変換を決定することに関わるレイテンシをクリティカルパスから効果的に除去することができる。

Description

米国特許法第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)

Claims (15)

  1. トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定する方法であって、
    前記TLBによって物理アドレス(204)に変換される第1の仮想アドレス(202)を受信する(502)ステップと、
    単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填する(504)ステップと
    を含む方法。
  2. 前記第1の仮想アドレスは、第1の外部デバイスから受信した第1のヒントアドレス値から導出される、請求項1に記載の方法。
  3. 1つまたは複数の事前充填仮想アドレスの前記第1のストリームは、第1のプログラム可能なストライド値に基づいて前記第1の仮想アドレスから導出された仮想アドレスを含む、請求項1に記載の方法。
  4. 前記第1のプログラム可能なストライド値は、ソフトウェアによって動的に決定される、請求項3に記載の方法。
  5. 前記第1のプログラム可能なストライド値は、所定の定数である、請求項3に記載の方法。
  6. 前記第1のプログラム可能なストライド値は、TLBミスのパターンを分析することによって決定される、請求項3に記載の方法。
  7. 前記第1のプログラム可能なストライド値は、外部デバイスから導出されたヒント値に基づく、請求項3に記載の方法。
  8. 1つまたは複数の事前充填仮想アドレスの前記第1のストリームは、前記第1の仮想アドレスに隣接する、請求項1に記載の方法。
  9. 1つまたは複数の事前充填仮想アドレスの前記第1のストリームの変換により前記TLBを事前充填するステップは、前記1つまたは複数の事前充填仮想アドレスに対応するアドレス変換の需要要求を前記TLBが受信する前に実行される、請求項1に記載の方法。
  10. 前記第1の仮想アドレスは前記TLB内でミスを生じさせる、請求項1に記載の方法。
  11. 前記TLBによって物理アドレスに変換される第2の仮想アドレスを受信するステップと、
    単一のバーストにおいて、前記第2の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第2のストリームの変換により前記TLBを事前充填するステップであって、前記第1のストリームの変換により前記TLBを事前充填するステップと同時にかつ/または並行して実行される、ステップと
    をさらに含む、請求項1に記載の方法。
  12. 前記第2の仮想アドレスは、第2の外部デバイスから受信した第2のヒントアドレス値から導出される、請求項11に記載の方法。
  13. トランスレーションルックアサイドバッファ(TLB)(206、208)をデータ設定するための装置であって、
    前記TLBによって物理アドレス(204)に変換される第1の仮想アドレス(202)を受信するように構成された論理と、
    単一のバーストにおいて、前記第1の仮想アドレスから導出された1つまたは複数の事前充填仮想アドレスの第1のストリームの変換により前記TLBを事前充填するように構成された論理(216、220)と
    を含む装置。
  14. 請求項1から12のいずれかに記載の方法を実行するための手段を含む装置。
  15. 請求項1から12のいずれかに記載の方法をコンピュータまたはプロセッサに実行させるための少なくとも1つの命令を含む、コンピュータプログラム。
JP2013556676A 2011-03-03 2012-03-05 事前充填能力を有するメモリ管理ユニット Expired - Fee Related JP5731020B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201161448839P 2011-03-03 2011-03-03
US61/448,839 2011-03-03
US13/371,506 US9092358B2 (en) 2011-03-03 2012-02-13 Memory management unit with pre-filling capability
US13/371,506 2012-02-13
PCT/US2012/027739 WO2012119148A1 (en) 2011-03-03 2012-03-05 Memory management unit with pre-filling capability

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015079036A Division JP6279508B2 (ja) 2011-03-03 2015-04-08 事前充填能力を有するメモリ管理ユニット

Publications (2)

Publication Number Publication Date
JP2014507042A true JP2014507042A (ja) 2014-03-20
JP5731020B2 JP5731020B2 (ja) 2015-06-10

Family

ID=46754040

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2013556676A Expired - Fee Related JP5731020B2 (ja) 2011-03-03 2012-03-05 事前充填能力を有するメモリ管理ユニット
JP2015079036A Expired - Fee Related JP6279508B2 (ja) 2011-03-03 2015-04-08 事前充填能力を有するメモリ管理ユニット

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015079036A Expired - Fee Related JP6279508B2 (ja) 2011-03-03 2015-04-08 事前充填能力を有するメモリ管理ユニット

Country Status (6)

Country Link
US (1) US9092358B2 (ja)
EP (1) EP2681661B1 (ja)
JP (2) JP5731020B2 (ja)
KR (1) KR101477086B1 (ja)
CN (1) CN103443777B (ja)
WO (1) WO2012119148A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019517081A (ja) * 2016-05-24 2019-06-20 ザイリンクス インコーポレイテッドXilinx Incorporated 仮想メモリのメモリプリフェッチ
JP2020508525A (ja) * 2017-02-24 2020-03-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストリーミングトランスレーションルックアサイドバッファ

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9092358B2 (en) * 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability
US8849731B2 (en) * 2012-02-23 2014-09-30 Microsoft Corporation Content pre-fetching for computing devices
US9378150B2 (en) * 2012-02-28 2016-06-28 Apple Inc. Memory management unit with prefetch ability
US8862764B1 (en) * 2012-03-16 2014-10-14 Google Inc. Method and Apparatus for providing Media Information to Mobile Devices
US10303618B2 (en) * 2012-09-25 2019-05-28 International Business Machines Corporation Power savings via dynamic page type selection
US9330026B2 (en) 2013-03-05 2016-05-03 Qualcomm Incorporated Method and apparatus for preventing unauthorized access to contents of a register under certain conditions when performing a hardware table walk (HWTW)
US9015400B2 (en) * 2013-03-05 2015-04-21 Qualcomm Incorporated Methods and systems for reducing the amount of time and computing resources that are required to perform a hardware table walk (HWTW)
KR102069273B1 (ko) * 2013-03-11 2020-01-22 삼성전자주식회사 시스템 온 칩 및 그 동작방법
WO2014143055A1 (en) 2013-03-15 2014-09-18 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems
US9606803B2 (en) * 2013-07-15 2017-03-28 Texas Instruments Incorporated Highly integrated scalable, flexible DSP megamodule architecture
US9645934B2 (en) * 2013-09-13 2017-05-09 Samsung Electronics Co., Ltd. System-on-chip and address translation method thereof using a translation lookaside buffer and a prefetch buffer
EP2849071A1 (en) * 2013-09-16 2015-03-18 ST-Ericsson SA Pre-fetch in a multi-stage memory management system
GB2528842B (en) 2014-07-29 2021-06-02 Advanced Risc Mach Ltd A data processing apparatus, and a method of handling address translation within a data processing apparatus
KR101757098B1 (ko) * 2014-12-14 2017-07-26 비아 얼라이언스 세미컨덕터 씨오., 엘티디. 메모리 액세스에 의한 효용성 기반 공격성 레벨 프리패칭
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
US9836410B2 (en) * 2015-04-15 2017-12-05 Qualcomm Incorporated Burst translation look-aside buffer
US10037280B2 (en) * 2015-05-29 2018-07-31 Qualcomm Incorporated Speculative pre-fetch of translations for a memory management unit (MMU)
GB2545398B (en) 2015-12-08 2020-02-19 Advanced Risc Mach Ltd Advance loading of memory page access data in data processing systems
CN107783912A (zh) * 2016-08-26 2018-03-09 北京中科寒武纪科技有限公司 一种支持多数据流的tlb装置和tlb模块的更新方法
US20180173631A1 (en) * 2016-12-21 2018-06-21 Qualcomm Incorporated Prefetch mechanisms with non-equal magnitude stride
US10090040B1 (en) 2017-03-29 2018-10-02 Qualcomm Incorporated Systems and methods for reducing memory power consumption via pre-filled DRAM values
US20190012265A1 (en) * 2017-07-06 2019-01-10 Qualcomm Incorporated Providing multi-socket memory coherency using cross-socket snoop filtering in processor-based systems
CN110389911A (zh) * 2018-04-23 2019-10-29 珠海全志科技股份有限公司 一种设备内存管理单元的预取方法、装置及系统
KR102518095B1 (ko) * 2018-09-12 2023-04-04 삼성전자주식회사 스토리지 장치 및 시스템
US11210232B2 (en) 2019-02-08 2021-12-28 Samsung Electronics Co., Ltd. Processor to detect redundancy of page table walk
US11860782B2 (en) * 2019-08-13 2024-01-02 Neuroblade Ltd. Compensating for DRAM activation penalties
US20230401160A1 (en) * 2022-06-09 2023-12-14 Microsoft Technology Licensing, Llc Address translation prefetching for input/output devices

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US20080276066A1 (en) * 2007-05-01 2008-11-06 Giquila Corporation Virtual memory translation with pre-fetch prediction
WO2011008702A1 (en) * 2009-07-13 2011-01-20 Apple Inc. Tlb prefetching

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628294B1 (en) 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6976147B1 (en) 2003-01-21 2005-12-13 Advanced Micro Devices, Inc. Stride-based prefetch mechanism using a prediction confidence value
JP4212521B2 (ja) * 2004-06-30 2009-01-21 株式会社東芝 先読み制御装置、プロセッサの一時記憶装置へデータの先読みを制御する先読み制御方法およびプログラム
US20060179236A1 (en) * 2005-01-13 2006-08-10 Hazim Shafi System and method to improve hardware pre-fetching using translation hints
US7395406B2 (en) 2005-05-12 2008-07-01 International Business Machines Corporation System and method of large page handling in a virtual memory system
CN100543770C (zh) * 2006-07-31 2009-09-23 辉达公司 用于gpu中的页映射的专门机制
US8032711B2 (en) * 2006-12-22 2011-10-04 Intel Corporation Prefetching from dynamic random access memory to a static random access memory
US7603526B2 (en) * 2007-01-29 2009-10-13 International Business Machines Corporation Systems and methods for providing dynamic memory pre-fetch
US8296547B2 (en) 2008-08-27 2012-10-23 International Business Machines Corporation Loading entries into a TLB in hardware via indirect TLB entries
JP5332721B2 (ja) * 2009-02-25 2013-11-06 富士通セミコンダクター株式会社 メモリアクセス制御回路、メモリアクセス制御方法および電子機器
US8347039B2 (en) * 2010-01-08 2013-01-01 International Business Machines Corporation Programmable stream prefetch with resource optimization
US9092358B2 (en) * 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007233615A (ja) * 2006-02-28 2007-09-13 Fujitsu Ltd アドレス変換装置
US20080276066A1 (en) * 2007-05-01 2008-11-06 Giquila Corporation Virtual memory translation with pre-fetch prediction
JP2008282396A (ja) * 2007-05-01 2008-11-20 Vivante Corp 先取り予測による仮想メモリ変換
WO2011008702A1 (en) * 2009-07-13 2011-01-20 Apple Inc. Tlb prefetching
JP2012533135A (ja) * 2009-07-13 2012-12-20 アップル インコーポレイテッド Tlbプリフェッチング

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019517081A (ja) * 2016-05-24 2019-06-20 ザイリンクス インコーポレイテッドXilinx Incorporated 仮想メモリのメモリプリフェッチ
JP2020508525A (ja) * 2017-02-24 2020-03-19 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated ストリーミングトランスレーションルックアサイドバッファ

Also Published As

Publication number Publication date
CN103443777A (zh) 2013-12-11
JP6279508B2 (ja) 2018-02-14
JP2015164047A (ja) 2015-09-10
KR20130127535A (ko) 2013-11-22
WO2012119148A1 (en) 2012-09-07
US9092358B2 (en) 2015-07-28
KR101477086B1 (ko) 2014-12-29
CN103443777B (zh) 2016-08-17
US20120226888A1 (en) 2012-09-06
JP5731020B2 (ja) 2015-06-10
EP2681661A1 (en) 2014-01-08
EP2681661B1 (en) 2015-05-13

Similar Documents

Publication Publication Date Title
JP6279508B2 (ja) 事前充填能力を有するメモリ管理ユニット
US8977819B2 (en) Prefetch stream filter with FIFO allocation and stream direction prediction
KR101483849B1 (ko) 계층적으로 캐싱되는 프로세서들에서의 조정된 프리페칭
US9274965B2 (en) Prefetching data
KR101361945B1 (ko) 컴퓨터 스레드들의 이종 리소스들로의 맵핑
US9824013B2 (en) Per thread cacheline allocation mechanism in shared partitioned caches in multi-threaded processors
US9141388B2 (en) High-performance cache system and method
KR20120024974A (ko) 스레드 이송 시의 캐시 프리필링
US9946652B2 (en) Pre-fetch in a multi-stage memory management system
US11301250B2 (en) Data prefetching auxiliary circuit, data prefetching method, and microprocessor
JP2018528532A (ja) 命令符号化に基づくプリフェッチ命令の決定
KR20150079408A (ko) 데이터 포워딩을 위한 프로세서, 그것의 동작 방법 및 그것을 포함하는 시스템
JP2017191503A (ja) 演算処理装置、および演算処理装置の制御方法
TWI805831B (zh) 用於減少由於位址轉譯未命中而引起的流水線停頓的方法、裝置和電腦可讀取媒體
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
CN115934170A (zh) 预取方法及装置、预取训练方法及装置、存储介质
CN114218132B (zh) 信息预取方法、处理器、电子设备
CN114281715A (zh) 缓存合成预取方法、装置、处理器以及电子设备
JP2006202346A (ja) 情報処理装置

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under section 34 (pct)

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20130913

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140724

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140811

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141111

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150309

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150408

R150 Certificate of patent or registration of utility model

Ref document number: 5731020

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees