JP2012533135A - Tlbプリフェッチング - Google Patents

Tlbプリフェッチング Download PDF

Info

Publication number
JP2012533135A
JP2012533135A JP2012520704A JP2012520704A JP2012533135A JP 2012533135 A JP2012533135 A JP 2012533135A JP 2012520704 A JP2012520704 A JP 2012520704A JP 2012520704 A JP2012520704 A JP 2012520704A JP 2012533135 A JP2012533135 A JP 2012533135A
Authority
JP
Japan
Prior art keywords
block
page table
prefetch
mmu
tlb
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
JP2012520704A
Other languages
English (en)
Other versions
JP5580894B2 (ja
Inventor
ジェイムズ ワン
ゾンジャン チェン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2012533135A publication Critical patent/JP2012533135A/ja
Application granted granted Critical
Publication of JP5580894B2 publication Critical patent/JP5580894B2/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
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with 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/6022Using a prefetch buffer or dedicated prefetch cache
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main 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/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Abstract

一実施形態において、メモリマネージメントユニット(MMU)は、複数のページテーブルエントリーを含むデータのブロックを保持するように構成される。MMUは、TLBミスに応答してブロックをチェックし、ブロックに変換が見つかった場合には、その変換についてメモリ読み取りを発生せずにブロックから変換を供給するように構成される。ある実施形態では、MMUは、ブロックからの変換を使用したTLBミスの履歴も維持し、その履歴に基づいて第2ブロックのプリフェッチを発生する。例えば、その履歴は、最も最近使用されたQ個のページテーブルエントリーのリストであり、又、履歴は、ブロックの端に接近するアクセスのパターンを示す。別の実施形態では、履歴は、使用されたブロック内のページテーブルエントリーの数のカウントを含む。
【選択図】 図2

Description

本発明は、プロセッサの分野に係り、より詳細には、プロセッサのメモリマネージメントユニットに係る。
プロセッサは、典型的に、アドレス変換を実施する。アドレス変換がイネーブルされるときには、フェッチアドレス及びロード/記憶アドレスは、有効又はバーチャルアドレスである。有効/バーチャルアドレスは、アドレス変換メカニズムを経て変換されて、物理的アドレス(又はリアルアドレス)に到達する。ここで使用する物理的アドレス及びリアルアドレスという語は、同義語とする。物理的/リアルアドレスは、メモリをアドレスするために実際に使用されるアドレスである。有効アドレスは、インストラクションをフェッチするために発生されるアドレス(インストラクションのプログラムカウンタ即ちPCとも称される)であるか、又はロード/記憶インストラクションのアドレスオペランドから発生されるアドレスである。あるケースでは、有効アドレスは、バーチャルアドレスに等しい。他のケースでは、バーチャルアドレスは、有効アドレスに基づいて発生される(例えば、有効アドレスから変換されるか、又はある所定のオペレーションを有効アドレスに適用することにより発生される)。バーチャルアドレスは、次いで、物理的アドレスに変換される。
アドレス変換は、種々の理由で使用される。例えば、アドレス変換は、コンピュータシステムに含まれた物理的メモリでサポートできる量よりも大きな有効又はバーチャルアドレススペースを与えるのに使用することができる。低速の二次記憶装置(例えば、ディスク記憶装置)は、実行されているプログラムにより必要に応じてメモリへ及びメモリからページをスワップするためのページスワップ記憶装置として使用することができる。更に、アドレス変換は、マルチタスク環境において、あるタスクのメモリを別のタスクによるアクセス/更新から保護すると共に、どの物理的ページがタスクに割り当てられるかに関わらず、各タスクにそれ自身のアドレススペースを与えるために使用することもできる。又、タスクの全体的なメモリ使用がメモリサイズを越える場合にも、スワッピングを使用して、メモリのコンテンツを保持すると共に、現在使用中のページへアクセスを与えることができる。
システムメモリには典型的にページテーブルが設けられ、このページテーブルは、バーチャル/物理的変換マッピングを記憶する。従って、アドレス変換は、ページテーブルから変換を読み取るために1つ以上のメモリアクセスを含む。変換メカニズムを加速するために、多くのプロセッサは、トランスレーションルックアサイドバッファ(TLB)を実施する。TLBは、最近使用された変換のキャッシュである。従って、キャッシュミスと同様に、TLBミスは、ページテーブルから変換データをフェッチするための追加待ち時間を伴う。あるケースでは、TLBは、バーチャルアドレス範囲でプログラム可能である。バーチャルアドレス範囲における変換要求に応答して、TLBは、変換を与えると共に、次のバーチャルページの変換をTLBへプリフェッチすることもできる。
一実施形態では、メモリマネージメントユニット(MMU)は、複数のページテーブルエントリーを含むデータのブロックを保持するように構成される。MMUは、TLBミスに応答してブロックをチェックし、ブロックに変換が見つかった場合には、その変換についてメモリ読み取りを発生せずにブロックから変換を供給するように構成される。又、ある実施形態では、MMUは、ブロックからの変換を使用したTLBミスの履歴も維持し、その履歴に基づいて第2ブロックのプリフェッチを発生する。例えば、その履歴は、使用された最も最近のQ個のページテーブルエントリーの位置のリスト(例えば、ブロック内のエントリー番号)であり、そして履歴は、ブロックの端に接近するアクセスのパターンを示す。MMUは、接近しつつある端に隣接する次に続くブロックに対してプリフェッチを発生する。別の実施形態では、履歴は、使用されたページテーブルエントリーの数のカウントを含み、そのカウントがブロック内のページテーブルエントリーの全数に接近しつつある場合には、MMUがプリフェッチを発生する。
以下、添付図面を参照して、本発明を詳細に説明する。
1つ以上のメモリマネージメントユニットを含むシステムの一実施形態を示すブロック図である。 メモリマネージメントユニットの一実施形態のブロック図である。 バーチャルアドレススペース、ページテーブルエントリー及び物理的アドレススペースの一実施形態のブロック図である。 トランスレーションルックアサイドバッファミスに応答するメモリマネージメントユニットの一実施形態の動作を示すフローチャートである。 トランスレーションルックアサイドバッファミスに応答するメモリマネージメントユニットの別の実施形態の動作を示すフローチャートである。 図5に示されたフローチャートの一部分の一実施形態を示すフローチャートである。 図5に示されたフローチャートの一部分の別の実施形態を示すフローチャートである。 レベル2キャッシュアクセスに対する図1に示すシステムの一実施形態の動作を示すフローチャートである。 コントロールコードの一実施形態を示すフローチャートである。 システムの一実施形態のブロック図である。 コンピュータアクセス可能な記憶媒体の一実施形態の一実施形態のブロック図である。
本発明は、種々の変更を受けそして別の形態でも実施できるが、その特定の実施形態を一例として添付図面に示して以下に詳細に説明する。しかしながら、添付図面及び詳細な説明は、本発明を、ここに開示する特定の形態に限定するものではなく、本発明は、特許請求の範囲に規定される本発明の精神及び範囲内に入る全ての変更、等効物及び代替え物を網羅することを理解されたい。ここに使用する見出しは、編成上の目的に過ぎず、説明の範囲を限定するためのものではない。又、本出願全体にわたって使用される「〜してもよい(may)」という語は、許すという意味(即ち、〜の潜在性があるという意味)で使用されるもので、強制の意味(即ち、〜しなければならないという意味)ではない。同様に、「含む(include)」、「含んでいる(including)」及び「含む(includes)」という語は、含むことを意味するが、それに限定されない。
種々のユニット、回路又は他のコンポーネントは、1つ又は複数のタスクを遂行するように「構成される」ものとして述べる。この点について、「構成される」とは、動作中に1つ又は複数のタスクを遂行する「回路を有する」ことを一般的に意味する構造を広く表現するものである。従って、ユニット/回路/コンポーネントは、そのユニット/回路/コンポーネントが現在オンでなくても、タスクを遂行するように構成することができる。一般的に、「構成される」に対応する構造を形成する回路は、ハードウェア回路を含む。同様に、種々のユニット/回路/コンポーネントは、説明の便宜上、1つ又は複数のタスクを遂行するものとして説明されてもよい。そのような説明は、「構成される」という句を含むものと解釈されねばならない。1つ以上のタスクを遂行するように構成されたユニット/回路/コンポーネントを表現する場合に、そのユニット/回路/コンポーネントの解釈に関して35U.S.C.§112、第6節を引用しないことが明確に意図される。
図1は、システムの一実施形態のブロック図である。図1の実施形態において、このシステムは、メモリマネージメントユニット(MMU)16A−16Nを各々含む1つ以上のグラフィック処理ユニット(GPU)10A−10Nと、それに対応するレベル2(L2)キャッシュ12A−12Nと、マルチコアマネージメントブロック(MCMB)14Aと、を備えている。MCMB14Aは、L2キャッシュ12A−12Nに結合され、これらキャッシュは、各GPU10A−10Nに結合される。又、MCMB14Aは、メインメモリシステム20にも結合される。このシステムは、更に、MMU18A−18Mを各々含む1つ以上の中央処理ユニット(CPU)22A−22Mと、それに対応するレベル2(L2)キャッシュ24A−24Mと、マルチコアマネージメントブロック(MCMB)14Bと、を備えている。MCMB14Bは、L2キャッシュ24A−24Mに結合され、これらキャッシュは、各CPU22A−22Mに結合される。又、MCMB14Bは、メインメモリシステム20にも結合される。参照番号及びそれに続く文字で表されるコンポーネントは、同じ参照番号及び異なる文字を有する他のコンポーネントと同様である(必ずしも同一ではないが)。同じ参照番号及び異なる文字を有するコンポーネントは、その参照番号のみによって全体的に表される(例えば、GPU10A−10Nは、GPU10として全体的に表される)。
GPU10A−10Nは、グラフィック操作(例えば、画像をフレームバッファ、ピクセル操作、等へレンダリングする)について最適化されたインストラクションセットアーキテクチャーを実施する。GPU10A−10Nは、スカラー、スーパースカラー、パイプライン、スーパーパイプライン、順序ずれ、正しい順序、推論的、非推論的、等、又はその組み合わせを含むマイクロアーキテクチャーを実施する。GPU10A−10Nは、回路を含み、そして任意であるが、マイクロコーディング技術を実施する。GPU10A−10Nの各々は、アドレス変換を遂行するように構成されたMMU16A−16Nを含む。MMU16は、変換をキャッシュ記憶するためにトランスレーションルックアサイドバッファ(TLB)を備え、そして以下に詳細に述べるように、変換プリフェッチングを実施する。MMU16により使用される変換は、メインメモリシステム20に記憶されたページテーブル26に記憶される。同様に、CPU22A−22Mは、汎用インストラクションセットアーキテクチャーを実施し、そして上述した可能性のいずれかを含むマイクロアーキテクチャーを実施する。CPU22A−22Mは、MMU18A−18Mを実施し、これらも、以下に述べるように、変換プリフェッチングを実施する。他の実施形態では、MMU16のみが変換プリフェッチングを実施し、そして更に別の実施形態では、MMU18のみが変換プリフェッチングを実施する。MMU18A−18Mにより使用される変換もページテーブル26に記憶される。ページテーブル26は、CPU22とGPU10との間で共有され、又はページテーブル26は、CPU22及びGPU10に対して個別のデータ構造を含む。GPU10及びCPU22は、インストラクションを実行するように構成された回路であるプロセッサの一例である。プロセッサは、個別の集積回路、集積回路に一体化されたコア、等でよい。例えば、図1において、GPU10、L2キャッシュ12、及びMCMB14Aは、グラフィックチップに一体化され、そしてCPU22、L2キャッシュ24、及びMCMB14Bは、マルチコアCPUチップに一体化される。別の実施形態では、GPU10、CPU22、L2キャッシュ12及び24、及びMCMB14は、集積回路に一体化される。ある実施形態では、集積回路は、GPU/CPU及び関連回路と一体化される他のコンポーネントも含む。
ページテーブル26は、複数のページテーブルエントリーを記憶する。各ページテーブルエントリーは、バーチャルアドレススペースのページに対応し、ページ内のアドレスを物理的ページ内の対応アドレスにマップする。ページのサイズは、実施形態ごとに変化し得る。例えば、4キロバイト又は8キロバイトが使用されてもよい。1、2又は4メガバイトのような大きなページサイズが使用されてもよいし、或いはそれ以上のものが使用されてもよい。ある実施形態では、2つ以上のページサイズがサポートされてもよく、そして必要に応じて複数のページサイズが同時にサポートされてもよい。
GPU10及びCPU22は、L1キャッシュ(図示せず)を含み、従って、キャッシュ12及び24は、この実施形態では、L2キャッシュである。L2キャッシュは、任意のサイズ及び構成(例えば、セットアソシエーティブ、直接マップ、等)を有するものでよい。又、L2キャッシュは、任意のキャッシュブロックサイズ(例えば、32バイト又は64バイト、或いはそれ以上又はそれ以下)を実施するものでよい。キャッシュブロックサイズは、キャッシュにおける割り当て及び割り当て解除の単位である。
MCMB14は、一般的に、対応するプロセッサとメインメモリシステム20との間の相互接続を与えることができる。キャッシュコヒレンシーが実施される場合には、MCMB14は、プローブを発生する役割を果たす(例えば、あるプロセッサからの要求は、他のプロセッサへのプローブを生じさせて、他のプロセッサのL1又はL2キャッシュに変更されたデータを得、キャッシュされたコピーを更新要求に対して無効にし、等々を行う)。MCMBは、互いに通信し及び/又はメインメモリシステム20のメモリコントロールと通信する。一実施形態において、メモリコントローラは、MCMB14と共にオンチップで実施されてもよく、及び/又は1つのMCMB14の一部分でもよい。ある実施形態において、MCBM14は、このMCBM14に結合されたL2キャッシュ12又は24により共有されるレベル3(L3)キャッシュも実施する。
メインメモリシステム20は、任意の形式のメモリを含む。例えば、メモリは、ダイナミックランダムアクセスメモリ(DRAM)、同期DRAM(SDRAM)、倍データレート(DDR、DDR2、DDR3、等)SDRAM(SDRAMのモバイルバージョン、例えば、mDDR3を含む)、RAMBUS DRAM(RDRAM)、スタティックRAM(SRAM)、等を含む。上述したように、メインメモリシステム20は、メモリ紺とロー他も含む。
種々の実施形態における各コンポーネントの数は、変化し得ることに注意されたい。例えば、1つ以上のGPU10A−10Nが設けられてもよく、又、1つ以上のCPU22A−22Mが設けられてもよい。他の実施形態では、GPUが存在せず及び/又はCPUも存在しない。10N及び22Mで示されるように、あるプロセッサの数が他のプロセッサの数と異なってもよい。L2キャッシュ12及び24は、図1には、各プロセッサに関連して示されているが、他の実施形態では、プロセッサのサブセットにより共有されてもよい。更に別実施形態では、L2キャッシュがなくてもよい。
図2は、MMU16Aの一実施形態のブロック図である。他のMMU16及び/又はMMU18も同様である。図2の実施形態において、MMU16Aは、TLB30と、テーブルウオークユニット32と、プリフェッチバッファ34とを備えている。テーブルウオークユニット32は、TLB30及びプリフェッチバッファ34に結合される。TLB30及びテーブルウオークユニット32は、変換されるべきバーチャルアドレス(VA)を受け取るように結合され、そしてテーブルウオークユニット32は、更に、バーチャルアドレスのための対応する要求者識別子(RID)及び/又は対応する要求形式を受け取るように結合される。TLB30は、物理的アドレス(PA)及びヒット信号を要求者に与えるように結合され、そしてTLB30は、更に、ヒット信号をテーブルウオークユニット32に与えるように結合される。テーブルウオークユニット32は、変換充填及び無効化(図2の充填/無効化)もTLB30に通信するように結合される。テーブルウオークユニット32は、スヌープ型TLB無効化(図2のスヌープTLB無効化)の指示を受け取るように結合される。テーブルウオークユニット32は、更に、ページテーブルエントリー(PTE)読み取り要求を送出しそしてそれに対応するデータ(図2のPTE読み取り/データ)を受け取るように結合される。ここに示す実施形態では、テーブルウオークユニット32は、履歴レジスタ(1つ又は複数)36と、アドレス範囲レジスタ38A−38Rのセットとを含む。他の実施形態では、レジスタ36及び/又は38A−38Rの1つ以上が含まれなくてもよい。
MMU16Aは、変換されるべきバーチャルアドレスを任意のソース(例えば、インストラクションをフェッチするためのGPU10Aのフェッチロジック、又はロード/記憶動作を遂行するためのロード/記憶ロジック)から受け取る。TLB30は、バーチャルアドレスをルックアップし、そしてバーチャルアドレスに対するヒット又はミスを検出するように構成される。バーチャルアドレスから物理的アドレスへの変換がTLB30に記録される場合にはTLBヒットが検出され、そしてその変換がTLB30に記録されない場合にはミスが検出される。TLB30は、ヒット(ヒット信号アサート状態)又はミス(ヒット信号デアサート状態)をシグナリングするように構成され、そしてヒットエントリーに基づく物理的アドレス(PA)を送信するよう構成される。変換は、上述したように、ページベースでマネージされる。即ち、TLB30に記録される所与の変換は、バーチャルページ内のバーチャルアドレスを、変換により識別される物理的ページ内の対応する物理的アドレスへ変換する。ある実施形態では、TLB30へ入力されるVAは、VAのページ部分であり(例えば、ページオフセットビットを除いて)、そしてTLB30により出力されるPAも、物理的アドレスのページ部分であって、物理的ページ番号とも称される。完全な物理的アドレスは、ページオフセットビットと連結される物理的ページ番号である。
テーブルウオークユニット32は、ヒット信号を受信するように結合され、そしてTLB30においてミスとなるバーチャルアドレスに対する変換の位置付けを試みるよう構成される(「テーブルウオーク」と称される)。一実施形態において、テーブルウオークユニット32は、TLBミスに応答してページテーブル26から複数のページテーブルエントリーを含むデータのブロックを読み取るように構成されると共に、ブロック内のページテーブルエントリーの1つにおけるミスとなるVAの変換でTLB30を更新するのに加えて、プリフェッチバッファ34へデータのブロックを書き込むように構成される。複数のページテーブルエントリーを含むデータのブロックは、ここでは、簡単化のためにプリフェッチブロックと称される。後続のTLBミスについては、テーブルウオークユニット32は、ページテーブル26から別のプリフェッチブロックを読み取るための読み取り要求を発生する前にプリフェッチバッファ34をサーチする。テーブルウオークユニット32は、それがプリフェッチバッファ34においてバーチャルアドレスに対するページテーブルエントリーを位置付ける場合に、TLB30に変換を書き込み、読み取り要求を発生しないように構成される。バーチャルアドレスに対するページテーブルエントリーがプリフェッチバッファ34に位置されない場合には、テーブルウオークユニット32は、読み取り要求を開始するように構成される。テーブルウオークユニット32は、読み取り要求に応答して受け取ったプリフェッチブロックをプリフェッチバッファ34に書き込むと共に、上述したようにTLB30を更新するように構成される。
後続のTLBミスがプリフェッチバッファ34内のブロックにおいて変換を見出す程度まで、TLBミスを処理するための待ち時間が減少される。従って、ある実施形態では、対応するインストラクションフェッチ/データアクセスのための待ち時間も減少され、そして性能が高められる。プリフェッチブロックは、メモリシステム20のページテーブル26内の連続的メモリ位置からのページテーブルエントリーより成る。連続的エントリーに位置されたページテーブルエントリーは、典型的に、バーチャルアドレススペースの連続的ページにあるバーチャルアドレスをマップする。バーチャルアドレス(又は少なくともその一部分)は、ページテーブル26において変換をルックアップするためにページテーブル26のベースアドレスと共に使用される。従って、互いに数字的に接近したバーチャルアドレスは、ページテーブル26において互いに接近したページテーブルエントリーに記憶された変換を有する。従って、一実施形態では、通常の予想可能な形態でアクセスされるデータ構造は、プリフェッチバッファ34に記憶されるプリフェッチブロックから利益が得られる。
ある実施形態では、テーブルウオークユニット32は、プリフェッチブロックを読み取り、そしてバーチャルアドレスに対してプリフェッチバッファ34にプリフェッチブロックを記憶することを実施する。他の実施形態では、テーブルウオークユニット32は、プリフェッチバッファ34に記憶されたプリフェッチブロックからおそらく利益が得られるものとして識別されたバーチャルアドレス範囲で(範囲レジスタ38A−38Rにおいて)プログラム可能である。例えば、GPU10A−10Nのようなグラフィック装置により使用されるフレームバッファは、多くの場合に、ピクセル又はタイルの行が読み取り/書き込みされるときに規則的なパターンでアクセスされる。他の例は、入力データの大きなアレイにおいて働く科学的コードを含む。範囲レジスタ38A−38Bが実施される場合には、テーブルウオークユニット32は、プリフェッチブロックの読み取りを、1つの範囲内に入るバーチャルアドレスに制限する。その範囲外のアドレスについては、テーブルウオークユニット32は、変換に必要なページテーブルエントリーを読み取り、そして読み取り要求に応答して返送されるデータにおいて2つ以上のページテーブルエントリーを受け取るが、テーブルウオークユニット32は、受け取ったページテーブルエントリーをプリフェッチバッファ34に書き込むことはしない。
レジスタ38A−38Rは、範囲を望ましい形態で定義する。例えば、各レジスタは、ベースアドレス及び限界(又はサイズ)、又はベースアドレス及びエンドアドレスを記憶する。
ある実施形態では、変換要求は、要求のソースに関しより多くの情報を与える形式情報を含む。例えば、グラフィック実施形態では、形式は、テクスチャマップアクセス、フレームバッファアクセス、オブジェクトアクセス、等を指示する。ある形式のアクセスは、プリフェッチバッファ34にプリフェッチブロックを記憶することから利益が得られる見込みが高い(例えば、フレームバッファ又はテクスチャマップアクセス)。テーブルウオークユニット32は、プリフェッチバッファ34にプリフェッチブロックを保持するか、要求の形式に基づいてプリフェッチバッファ34にプリフェッチブロックを保持しないように構成される。他の実施形態は、異なる形式を有する(例えば、インストラクションフェッチ対データアクセス、又はバーチャルアドレスの発生に使用されるアドレッシングモードのようなデータアクセスの形式)。
プリフェッチバッファ34は、1つ以上の、任意の数のプリフェッチブロックを記憶するように構成される。一実施形態において、プリフェッチバッファ34は、1つのプリフェッチブロックを記憶し、そして現在のプリフェッチブロックは、テーブルウオークユニット32により読み取られるときに新たなプリフェッチブロックによってオーバーライトされる。他の実施形態では、若干のプリフェッチブロックが記憶される(例えば、2又は4)。ある実施形態では、希望の数のプリフェッチブロックに対する容量がプリフェッチバッファ34にあってもよい。プリフェッチバッファ34は、任意の記憶回路(例えば、スタティックランダムアクセスメモリ(SRAM)、レジスタ又はフロップのようなクロック型記憶装置、等)で実施されてもよい。
プリフェッチバッファ34内のプリフェッチブロック記憶エントリーが図2に示されている。このエントリーは、有効ビット(V)、プリフェッチブロックのベースアドレス(Addr)を識別するアドレスフィールド(Addr)、及びプリフェッチブロックデータ(Data)を含む。他の実施形態では、有効ビットは、フェッチブロックを部分的に有効化する有効フィールドである。例えば、プリフェッチブロックがサイズ的に複数のキャッシュブロックより成り、そしてキャッシュブロックがテーブルウオークユニット32に対して利用可能な最大の単一転送である場合には、プリフェッチブロックに対する読み取り要求は、複数の要求と、テーブルウオークユニット32へ返送されるキャッシュブロックとを伴う。従って、有効フィールドは、キャッシュブロックを、それらがプリフェッチバッファ34に書き込まれるときに有効化する。このような有効フィールドは、以下に詳細に述べるPTE無効化に関して実施される。
テーブルウオークユニット32は、要求者IDに基づいて複数のプリフェッチブロックを維持するように構成される(例えば、所与の要求者IDは、プリフェッチバッファ34内の所与のプリフェッチブロックに関連付けられる)。プリフェッチブロックが要求者IDに関連付けられ、そして新たなプリフェッチブロックがテーブルウオークユニット32によりプリフェッチバッファ34に書き込まれる場合には、新たなプリフェッチブロックが同じ要求者IDに関連した以前のプリフェッチブロックに置き換わる。従って、他の要求者IDに関連したブロックには影響がない。或いは又、2つ以上のプリフェッチブロックが所与の要求者に対して記憶されてもよい。例えば、2つのプリフェッチブロックが所与の要求者に対して記憶される場合には、現在プリフェッチブロックのページテーブルエントリーが尽きることに関して次のプリフェッチブロックが早期にプリフェッチされる。というのは、次のプリフェッチブロックがプリフェッチバッファ34内の現在プリフェッチブロックをオーバーライトしないからである。このような動作は、アクティブなプリフェッチングが実施される場合に、実施される。
以上の説明は、TLBミスに応答してプリフェッチブロックが読み取られ、そしてそのブロックが未使用のページテーブルエントリーを含むプリフェッチバッファ34に保持されるという受動的なプリフェッチ形態を言及するものである。プリフェッチブロックの未使用のページテーブルエントリーは、それらがTLBミスに応答して直接要求される前に効果的に読み取られ、従って、プリフェッチされたとみなされる。即ち、プリフェッチは、一般的に、まだ要求されていないが将来要求される見込みがある程度あるページテーブルエントリーを読み取る。他の実施形態は、テーブルウオークユニット32が、近い将来必要とされるページテーブルエントリーのブロックの予想を試み、そしてその予想されたエントリーを含むブロックをプリフェッチするというアクティブなプリフェッチを遂行する。一実施形態において、履歴レジスタ36は、アクティブなプリフェッチングのために設けられる。テーブルウオークユニット32は、最近使用されたページテーブルエントリーを表すデータを履歴レジスタ36に記憶し、そして履歴のパターンを検出してプリフェッチブロックを予想するよう試みる。テーブルウオークユニット32は、予想に応答してプリフェッチ要求を発生し、そしてプリフェッチブロックをプリフェッチバッファ34に書き込む。プリフェッチバッファ34に複数のプリフェッチブロックを記憶する実施形態は、ブロックごとに個別の履歴を記憶するために複数の履歴レジスタ36を含む(又はレジスタ36に複数のフィールドを含む)。
履歴データは、プリフェッチブロックからTLB30へロードされた最近のページテーブルエントリーを表す任意のデータでよい。即ち、履歴データは、ページテーブルエントリーの使用の履歴であるか、或いはTLBミスによるページテーブルエントリーの消費の履歴である。例えば、履歴は、最も最近ロードされたQ個のページテーブルエントリーを識別し、ここで、Qは、1以上の整数である。一実施形態において、プリフェッチブロック内のページテーブルエントリーには、プリフェッチブロック内の最低アドレスのページテーブルエントリーで始まってアドレスの増加と共に増加するエントリー番号が指定される。このエントリー番号は、履歴に記憶される。エントリー番号のパターンに基づいて、プリフェッチ予想が行われる。例えば、エントリー番号が単調に増加しそして最後のエントリー番号付近に来た(又はそれに到達した)場合には、次の続く(より上位アドレスの)ブロックのプリフェッチが発生される。同様に、エントリー番号が単調に減少しそして最初のエントリー番号付近に来た(又はそれに到達した)場合には、その手前(より下位アドレス)のブロックのプリフェッチが発生される。アドレスが他のアドレスより高い又は低いと称されるときには、アドレスの数値が参照されることに注意されたい。
別の実施形態において、履歴は、プリフェッチブロックからロードされた多数のページテーブルエントリーのカウントを含む。そのカウントと、プリフェッチブロック内のページテーブルエントリーの数とに基づいて、プリフェッチブロックがほぼ尽きる又は尽きるという予想がなされる。一実施形態では、最も最近のエントリー番号も記録され、次に続く又は手前のプリフェッチブロックの予想がなされる。
上述したように、プリフェッチブロックのサイズは、キャッシュブロックと同じサイズである必要はない。実際に、プリフェッチブロックは、キャッシュブロックより小さいか又はキャッシュブロックより大きいサイズを含めて、必要に応じていかなるサイズでもよい。プリフェッチブロックは、選択された数のページテーブルエントリーを記憶する。ページテーブルエントリーは、物理的アドレスのサイズに基づいてサイズが変化する。例えば、一実施形態において、32ビットの物理的アドレスは、4バイトのページテーブルエントリーで表され、そして64ビットの物理的アドレスは、8バイトのページテーブルエントリーで表される。エントリーで表されない物理的アドレスは、種々の属性を記憶する。バーチャルアドレスタグも含む実施形態は、前記サイズより大きい。
変換を切り換えるためにページテーブルエントリーをソフトウェアで変更するときに、ソフトウェアは、1つ以上のTLBエントリーを無効化することがある。無効化は、ソフトウェアがMMU16Aに取り付けられたプロセッサで実行される場合には要求インターフェイスを経て行われ、或いはソフトウェがどこかで実行される場合には外部インターフェイスからスヌープされる。TLB30内の指定のエントリー(1つ又は複数)を無効化するのに加えて、テーブルウオークユニット32は、プリフェッチバッファ34内の対応するページテーブルエントリーも無効化する。一実施形態では、テーブルウオークユニット32は、単に、プリフェッチバッファ34に記憶されたプリフェッチブロックを無効化する。或いは又、上述したように、プリフェッチブロックに対する有効な指示は、個々のページテーブルエントリー又はページテーブルエントリーのサブセットを無効化することができる。このような実施形態では、テーブルウオークユニット32は、更新されているページテーブルエントリーを決定し、そしてプリフェッチバッファ34においてページテーブルエントリー又はサブセットを無効化する。複数のプリフェッチブロックをプリフェッチバッファ34に記憶する実施形態では、テーブルウオークユニット32は、影響のあるプリフェッチブロックを無効にしながら、他のブロックを有効に保つ。
ある実施形態では、MMU16Aは、インストラクションフェッチを変換し及びアクセスをロード/記憶するために個別のインストラクション及びデータTLBを各々備えている。インストラクション及びデータTLBは、各々、インストラクションフェッチロジック及びロード/記憶ロジックの付近に物理的に配置される。更に、MMU16Aの実施形態は、非プロセッサコンポーネントとしても使用できる(例えば、直接メモリアクセス(DMA)コントローラ、入力/出力(I/O)装置、等)。
図3は、バーチャルアドレススペース40、ページテーブル26、及び物理的アドレススペース42を示すブロック図である。ページテーブル26は、物理的アドレススペース42にも記憶されるが、例示を助けるために図面中には別々に示されている。図3に示すように、VAスペース40及びPAスペース42のアドレス0は、図の最上部にあり、アドレスの増加と共に、下方に進む。
VAスペース40には、フレームバッファ44が示されている。このフレームバッファ44は、VAスペース40内の複数の隣接ページを占有する。それらのページは、図3の破線間に示されており、例えば、バーチャルページ46A、46B、46C、46Dである。フレームバッファ44により占有されるページの数は、ページサイズ及びフレームバッファ44のサイズに依存する。フレームバッファ44のサイズは、スクリーンの解像度の大きさ、表示解像度におけるピクセル当たりのデータビット数、等に依存する。
各バーチャルページ46は、ページテーブル26内のページテーブルエントリー(PTE)によって変換される。このPTEは、ソフトウェアにより割り当てられ、所与の時点ではページテーブル26において有効ではない。図3は、フレームバッファ44に対する全てのPTEがページテーブル26において有効である時点を示している。特に、図3には、PTE1ないしPが示されている。PTEの規範的コンテンツが図3のPTE1に示されている(参照番号48)。図示されたように、PTEは、バーチャルアドレスタグフィールド(VA)、物理的ページ数(PPN)、及び種々の他の属性(ATR)を含む。バーチャルアドレスタグは、ページテーブル26のルックアップにより完全なバーチャルアドレスが消費されないような実施形態のために含まれる。即ち、あるアドレス変換メカニズムは、各バーチャルアドレスビット(ページオフセットを除いて)をページテーブル26のベースアドレスと共に使用して、バーチャルアドレスのための変換を記憶するPTEを位置付ける。このようなメカニズムでは、各バーチャルアドレスが1つのPTEを独特に位置付け、VAタグは必要とされない。他の実施形態では、バーチャルアドレスのページ部分の少なくとも幾つかがルックアップに使用されず、従って、複数のバーチャルアドレスが変換について同じPTEに対するエイリアスとなる。VAタグは、未使用のバーチャルアドレスビットと比較され、ルックアップが遂行される特定のバーチャルアドレスに変換が対応することを確認する。物理的ページ番号は、ページ内のアクセスの物理的アドレスを形成するためにバーチャルアドレスのページオフセット部分に連結される物理的アドレスのページ部分である。属性は、ページの他のプロパティ、例えば、キャッシュ可能性及びキャッシュ関連コントロール、特権レベル制約(例えば、ユーザ又はスーパーバイザ)、変換の有効性を指示する有効ビット、ページに対する読み取る/書き込み許可、等を指定する。
バーチャルページ46A、46B及び46Cとページテーブル26のPTE1、2及び3との間の矢印で示されたように、隣接するバーチャルページがページテーブル26内の隣接するPTEを位置付ける。この振舞いは、隣接するバーチャルページがアドレスのページ部分において1つだけ互いに数字的に異なるために観察される。一般的に、ページ(又はブロック)は、隣接するページ(ブロック)間に他のページ(ブロック)がない場合には別のページ(又はブロック)に隣接する。又、隣接するページ(ブロック)は、連続とも称され、そして所与のページ(ブロック)に対して次に高い数字のアドレスにある隣接ページ(ブロック)は、次の連続ページ(ブロック)と称される。
物理的アドレス(PA)スペース42において、破線(例えば、物理的ページ50A、50B及び50C)間に種々の物理的ページが示されている。各PTEのPPNフィールドは、物理的ページの1つを指す。バーチャルページを物理的ページに指定することは、ソフトウェアのコントロールのもとで行われ、任意である。従って、PTE1は、バーチャルページ46Aを物理的ページ50Bへマップし、PTE2は、バーチャルページ46Bを物理的ページ50Aへマップし、そしてPTE3は、バーチャルページ46Cを物理的ページ50Cへマップする。他の実施形態では、ソフトウェアは、フレームバッファ44のようなデータ構造の連続的バーチャルページを、物理的アドレススペース42の連続する物理的ページへマップするように試みる。
上述したように、フレームバッファ44へのあるアクセスパターンは、かなり規則的である。例えば、表示のためにフレームバッファを読み取ることは、ディスプレイハードウェアによるディスプレイスクリーンのリフレッシュに一致させるため、通常、図3に示すように、上から下へと行われる。従って、フレームバッファ44内の1つのバーチャルページによるTLBミスがあると、その後、おそらく、連続的バーチャルページに対するより多くのTLBミスが生じ、ページテーブル26内の連続的PTEにアクセスすることになる。従って、テーブルウオークユニット32は、それがTLBミスに対してPTEをフェッチするときに、TLBミスに対してPTEを含むPTEのブロックをプリフェッチするように構成される。例えば、プリフェッチブロック52が図3に示されており、PTE1ないしPを含む(但し、Pは、図3に示すように、3より大きな正の整数である)。例えば、バーチャルページ46Aに対してTLBミスが生じる場合には、プリフェッチブロック52がプリフェッチされて、プリフェッチバッファ34に記憶される。バーチャルページ46B、46C及び/又は46Dに対して後続のTLBミスが生じる場合には、テーブルウオークユニット32は、プリフェッチバッファ34をチェックし、そしてプリフェッチバッファ34内のPTE2、3及び4(図3には示さず)を見出す。従って、これらTLBミスに対してメインメモリの読み取りを回避することができる。
範囲レジスタ38A−38Rを具現化する実施形態については、フレームバッファ44のバーチャルアドレス範囲は、範囲レジスタ38A−38Rの1つ(図3に「範囲1」と表された大括弧で示された範囲1レジスタ38A)へとプログラムされる。他の範囲レジスタ38B−38Rは、テクスチャマップ、等の他の範囲へとプログラムされる。
図4は、TLB30のTLBミスに応答するMMU16A(特に、テーブルウオークユニット32)の一実施形態の動作を示すフローチャートである。即ち、MMU16A/テーブルウオークユニット32は、図4に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、MMU16A/テーブルウオークユニット32内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図4のフローチャートは、TLBミスに応答する動作を示す。MMU16A/テーブルウオークユニット32は、2つ以上のTLBミスをパラレルに処理するように構成される。更に、パイプライン型の実施形態では、TLBミスは、パイプライン処理され、従って、種々の処理段階で複数のTLBミスが生じ得る。例えば、1つのTLBミスがメモリからのプリフェッチブロックの返送を待機する間に、別のTLBミスがプリフェッチバッファをチェックし、そしてヒットを検出することがある。
テーブルウオークユニット32は、ミスとなるバーチャルアドレス、及びページテーブル26をメインメモリシステム20に位置付けるページテーブルベースアドレスから、PTEのアドレスを形成するように構成される(ブロック60)。この実施形態では、ページテーブル26は、メインメモリシステム20の物理的アドレスに記憶され、PTEのアドレスは、物理的アドレスである。他の実施形態では、ページテーブル26は、バーチャルアドレススペースに位置付けられ、アドレスは、バーチャルである。ページテーブル26のアクセス性を保証しながらページテーブル26をバーチャルにアドレッシングするためのメカニズムが知られている(例えば、ページテーブルをマッピングする単体)。あるアドレス変換メカニズムは、ページテーブルにおける複数のルックアップをハイアラーキー形態で使用する(例えば、ページテーブルベースアドレス及びバーチャルアドレスの第1部分からPTEアドレスを形成し、PTEからPPNを読み取り、そしてバーチャルアドレスの各部分が使用されるまで、PPN及びバーチャルアドレスの第2部分等を使用して別のPTEアドレスを形成する)。このような実施形態では、ブロック60は、複数のルックアップを含む。テーブルウオークユニット32は、プリフェッチバッファ34内の各PTEエントリーをサーチする。各レベルのプリフェッチブロックがプリフェッチバッファ34に維持されるか、又は最後のレベルのプリフェッチブロックだけが記憶される。他の実施形態では、単一レベルルックアップが使用される(例えば、VAのページ部分をハッシュしてエントリーを選択し、VAタグを使用し、VAのページ部分の最下位ビットを使用し、VAの残り部分に対してVAタグを使用し、VAの一部分に基づいてエントリーのグループを選択し、そして複数の連続エントリーを読み取り、或いは他の任意の形態)。
テーブルウオークユニット32は、プリフェッチバッファ34をヒットについてチェックするように構成される(判断ブロック62)。ヒットのチェックは、プリフェッチブロックの粒度で行われる。即ち、PTEのアドレスが、プリフェッチバッファエントリーをタグ付けするアドレスと比較され、プリフェッチブロックとのオフセットを定義するビットをマスクオフする。PTEがプリフェッチバッファ34においてヒットである場合には(判断ブロック62の「イエス」岐路)、テーブルウオークユニット32は、PTEが首尾良く変換を与えるかどうか決定する(判断ブロック66)ように構成される。PTEが有効でない場合、又は要求者が希望のアクセスを行うことが許されないことを属性が指示する(例えば、特権レベル違反、読み取り/書き込み違反、等)場合には、変換が不首尾となる。変換が首尾良い場合には(判断ブロック66の「イエス」岐路)、テーブルウオークユニット32は、プリフェッチバッファ34からのPTEを使用して、変換をTLB30へ供給するように構成される(ブロック64)。即ち、PTEからの変換がTLB30へロードされる。TLB30における変換データのフォーマットは、PTEとは異なるものであり、テーブルウオークユニット32は、TLBエントリーをフォーマットしそしてそのフォーマットされたエントリーをTLB30に書き込むように構成される。TLBエントリーは、TLBエントリーからの属性(又は変換を使用するに必要なそのサブセット)、PPN、及び変換要求に対してマッチングするためのバーチャルアドレスのページ部分の一部又は全部を含む。変換が不首尾な場合には(判断ブロック66の「ノー」岐路)、テーブルウオークユニット32は、エラーを信号する(ブロック68)。エラーは、種々の実施形態において、望ましい形態(例えば、割り込み、例外、等)で信号される。その信号で、変換の欠如を取り扱うためのソフトウェアがコールされる。
他方、プリフェッチバッファ34においてPTEがヒットしない場合には(判断ブロック62の「ノー」岐路)、テーブルウオークユニット32は、PTE読み取り要求を送信する(ブロック70)。プリフェッチングを範囲又は形式に限定する実施形態では、PTE読み取り要求は、VAが範囲内にないか又は形式がプリフェッチ可能な形式の1つでなく、そしてテーブルウオークユニット32が、プリフェッチバッファ34へ返送されるデータを書き込まない場合には、単一PTEエントリーに対するものである。VAが範囲内にあるか、形式がプリフェッチ可能な形式の1つであるか、又はテーブルウオークユニット32がPTEをプリフェッチブロックとしてプリフェッチする場合には、PTE読み取り要求は、PTEを含むプリフェッチブロックに対する要求となる。テーブルウオークユニット32は、メモリシステムからのプリフェッチブロックの受け取りを待機し、そして返送プリフェッチブロックをプリフェッチバッファに書き込む(ブロック72)。テーブルウオークユニット32は、種々の実施形態において、現在プリフェッチブロックをプリフェッチバッファ34にオーバーライトするか、或いは要求者又は形式に関連した現在プリフェッチブロックをオーバーライトする。要求者/形式に対して複数のプリフェッチブロックを記憶する実施形態では、プリフェッチブロックがその要求者/形式に対する最も古いプリフェッチブロックにオーバーライトするか、最近最も使用しない(LRU)等の交換スキーム又はその変形形態が使用されるか、或いは他の交換スキームが使用される。又、テーブルウオークユニット32は、変換が首尾良いものであるかどうか決定し、そして適宜に、エラーを信号するか、又は変換をTLB30にロードする(ブロック66、64及び68)。
図4のフローチャートは、ブロック内のPTEを使用するTLBミスに応答してプリフェッチブロックが読み取られるという受動的なプリフェッチング実施形態を示す。他の実施形態は、プリフェッチブロック内にPTEの使用の履歴を維持し、そしてプリフェッチブロックに対するプリフェッチ要求を発生するために別のPTEが必要とされるときを予想する。即ち、プリフェッチブロック内のいずれかのPTEが必要となる前にプリフェッチブロックがプリフェッチされる。
図5は、能動的なプリフェッチスキームとしてTLB30におけるTLBミスに応答するMMU16A(特に、テーブルウオークユニット32)の一実施形態の動作を示すフローチャートである。即ち、MMU16A/テーブルウオークユニット32は、図5に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、MMU16A/テーブルウオークユニット32内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図5のフローチャートは、TLBミスに応答する動作を示す。MMU16A/テーブルウオークユニット32は、2つ以上のTLBミスをパラレルに処理するように構成される。更に、パイプライン型の実施形態では、TLBミスは、パイプライン処理され、従って、種々の処理段階で複数のTLBミスが生じ得る。例えば、1つのTLBミスがメモリからのプリフェッチブロックの返送を待機する間に、別のTLBミスがプリフェッチバッファをチェックし、そしてヒットを検出することがある。
図4と同様に、図5の実施形態は、PTEアドレスを形成し、プリフェッチバッファ34においてヒットをチェックし、プリフェッチバッファ34においてPTEアドレスがミスであった場合にPTE読み取り要求を発生し、受け取ったプリフェッチブロックをプリフェッチバッファ34に書き込み、変換が首尾良く行われたかどうか決定し、そして変換をTLB30へロードするか又はエラーを信号する(ブロック60、62、64、66、68、70及び72)。
更に、テーブルウオークユニット32は、プリフェッチブロックをプリフェッチバッファ34に書き込むときにプリフェッチブロックに対応する履歴を初期化するように構成される(ブロック80)。履歴は、維持される履歴データに基づいて異なる形態で初期化される。例えば、履歴がプリフェッチブロックへの最後のQ個のアクセスの指示(例えば、プリフェッチブロックの最初のエントリーに対するエントリー番号)である場合には、現在要求のエントリー番号を最も最近の要求として記録しそして他のエントリー番号をクリアすることにより履歴が初期化される。履歴がカウントの場合には、カウントがゼロにセットされる。或いは又、要求されたPTEがプリフェッチブロックの一端にない場合には、カウントがプリフェッチブロック内のPTEのエントリー番号に初期化される。そのような初期化は、例えば、プリフェッチブロックの最初の幾つかのPTEがTLBヒットである場合に有用であり、従って、要求されなくてもよい。別の実施形態では、初期化は、エントリー番号に依存する。エントリーがプリフェッチブロックの下位端に最も近い場合には、アドレスが数値的に増加する順に進行すると仮定すれば、カウントは、エントリー番号へ初期化される。エントリーがプリフェッチブロックの上位端に最も近い場合には、アドレスが数値的に減少する順に進行すると仮定すれば、カウントは、P−エントリー番号へ初期化される(Pは、プリフェッチブロックにおけるPTEの数である)。
プリフェッチバッファにおけるヒットに応答して、テーブルウオークユニット32は、履歴を更新するように構成される(ブロック82)。例えば、テーブルウオークユニット32は、PTEのエントリー番号を最も最近のアクセスとして挿入し、そしてQ個の最も最近のエントリー番号が履歴として記憶される場合には他のエントリー番号をリストに沿って下方に移動させる。履歴がカウントの場合には、テーブルウオークユニット32は、カウントを増加するように構成される。他の実施形態では、他の形態の履歴が実施されてもよい。
テーブルウオークユニット32は、更新された履歴を検査して、予想される次のブロックに対してプリフェッチ要求を発生すべきであることを履歴が指示するかどうか決定するように構成される(判断ブロック84)。予想される次のブロックは、PTEがブロック内で使用されている方向に基づいて現在ブロックから次に続くブロックであるか又はその直前のブロックである。プリフェッチ要求を発生すべきであるとテーブルウオークユニット32が決定する場合には、テーブルウオークユニット32は、プリフェッチ要求を発生するように構成される(ブロック86)。
図4及び5は、一般的に単一のプリフェッチブロックを参照した。複数のプリフェッチブロックがプリフェッチバッファ34に記憶される実施形態では、プリフェッチバッファヒットのサーチが全てのプリフェッチブロックにわたって適用される。或いは又、サーチが、同じ要求者又はアドレス範囲に関連したプリフェッチブロックのみに制約されてもよい。それに加えて、2つ以上のプリフェッチブロックが所与の要求者に関連される場合には、新たなプリフェッチブロックが、必要に応じて、所与の要求者に関連した最も古いプリフェッチブロック又は最近最も使用されないブロックにオーバーライトする。
図6及び7は、履歴の2つの実施形態について図5のブロック82、84及び86を更に詳細に示す。組み合わされたときに、ブロック82、84及び86の1つを実施するブロックは、それに対応する参照番号(82、84または86)の後に文字を付したもので表される。図6の実施形態は、TLB30へ変換を供給するのに使用されたQ個の最も最近のPTE(即ち、Q個の最も最近アクセスされたPTE)のリストとして履歴を具現化するものである。このリストは、プリフェッチブロック内の最下位アドレスのPTEを、エントリー番号により、エントリー0として番号付けし、そして数字的に増加するアドレスで、プリフェッチブロック内の最上位アドレスのエントリー(エントリーP−1)まで増加する。図7の実施形態は、TLB30へ変換を供給するのに使用されたPTEの数のカウントとして履歴を具現化する。図6及び7の理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、MMU16A/テーブルウオークユニット32内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。
図6において、規範的な履歴90が、PTEエントリー番号のリストとして示されている。PTEエントリー番号1は、最も古い(最近最もアクセスされない)PTEエントリー番号である。PTEエントリー番号2は、2番目に最も古いPTEエントリー番号であり、等々、PTEエントリー番号Qまで続く。履歴90は、リストの論理的ビューである。リストの物理的構成は、異なってもよい。例えば、新たなエントリー番号が追加されるときにリスト内のPTEエントリー番号をシフトするのではなく、新たなエントリー番号が最も古いエントリー番号に置き換わり、そして最も新しいエントリー番号を指すポインタが記憶される。
図6に示したように、履歴の更新(図5のブロック82)は、履歴90における最も古いPTEエントリー番号を、TLB30に現在ロードされているPTEのエントリー番号に置き換えることを含む(ブロック82A)。判断ブロック84を形成するブロックは、判断ブロック84A−84C及びブロック84D−84Eを含む。テーブルウオークユニット32は、最も最近のQ個のPTEアクセスにパターンが存在するかどうか決定する(判断ブロック84A)。認識できるパターンがない場合には(判断ブロック84Aの「ノー」岐路)、テーブルウオークユニット32は、プリフェッチ要求を発生しない。認識できるパターンがある場合には、そのパターンが単調に増加する(例えば、各エントリー番号がその手前のエントリー番号より大きい)か、又は単調に減少する(各エントリー番号がその手前のエントリー番号より小さい)ものである。パターンが単調に増加し(判断ブロック84Aの「イエス、増加」岐路)、そして現在エントリーがプリフェッチブロック内の最上位アドレスエントリー(例えば、エントリーP−1)の付近にある(判断ブロック84Bの「イエス」岐路)場合には、テーブルウオークユニット32は、プリフェッチされるべき次のブロックが現在プリフェッチブロック+1であることを予想する(ブロック84E)。即ち、プリフェッチされるべき次のブロックは、現在ブロックに対して次に続くプリフェッチブロックである(次に数字的に高いプリフェッチブロックアドレスにおける)。テーブルウオークユニット32は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される(ブロック86A)。現在エントリーが最上位アドレスエントリーの付近にない(判断ブロック84Bの「ノー」岐路)場合には、プリフェッチが予想されない。同様に、パターンが単調に減少し(判断ブロック84Aの「イエス、減少」岐路)、そして現在エントリーがプリフェッチブロック内の最下位アドレスエントリー(例えば、エントリー0)の付近にある(判断ブロック84Cの「イエス」岐路)場合には、テーブルウオークユニット32は、プリフェッチされるべき次のブロックが現在プリフェッチブロック−1であることを予想する(ブロック84D)。即ち、プリフェッチされるべき次のブロックは、現在ブロックに対して手前のプリフェッチブロックである(次に数字的に低いプリフェッチブロックアドレスにおける)。テーブルウオークユニット32は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される(ブロック86A)。現在エントリーが最下位アドレスエントリーの付近にない(判断ブロック84Cの「ノー」岐路)場合には、プリフェッチが予想されない。
判断ブロック84B及び84Cは、現在エントリーが最上位アドレスエントリー又は最下位アドレスエントリーの「付近」にあることをチェックし、次のブロックを早期に予想すると共に、ブロック内の最初のTLBミスの前にブロックをプリフェッチする。従って、「付近」にあるという決定は、メモリ内の次のプリフェッチブロックにアクセスするための待ち時間、及び現在ブロックの残りのPTEエントリーがTLBミスにより消費されるまでの待ち時間に依存する。ある実施形態では、必要とされるエントリーにオーバーライトするのを回避するために、テーブルウオークユニットは、現在ブロックのエントリーが消費されるまで(例えば、「付近」が「等しく」になるまで)プリフェッチ要求を発生しない。他の実施形態において、あるエントリーは、それがエントリー番号の1つ以上のエントリー内にある(例えば、1つ又は2つのエントリーだけ離れている)場合に別のエントリー「付近」にあるとされる。あるケースでは、パターンは、エントリーがスキップされる(例えば、1つおきのエントリーが読み取られる)ことを指示し、そして「付近」にあるとの決定は、パターンを考慮して行われる。それに加えて、同じ要求者に対して2つ以上のプリフェッチブロックが維持される(新たにプリフェッチされるブロックが現在ブロックに置き換わらないように)場合には、「付近」にあるとの決定が、より柔軟なものとなる。
エントリー0及びP−1は、プリフェッチブロックの「端」であると定義される。即ち、エントリー0より下のプリフェッチブロック内の下位アドレスにはそれ以上エントリーが存在せず、又、エントリーP−1を越えるプリフェッチブロック内の上位アドレスにもそれ以上のエントリーは存在しない。従って、現在エントリーがブロックの端付近にあるときには、テーブルウオークユニット32は、その端に隣接するブロック(例えば、エントリー0については手前のブロック又はエントリーP−1については次の続くブロック)に対してプリフェッチ要求を発生する。
全体的に、判断ブロック84A、84B及び84Cの「ノー」岐路は、図5の判断ブロック84の「ノー」岐路と同等である。ブロック84D及び84Eからの退出は、図5の判断ブロック84の「イエス」岐路と同等である。ブロック82A及び86Aは、各々、図5のブロック82及び86と同等である。
図7において、規範的履歴92は、カウントとして示されている。カウントは、図5を参照して上述したように初期化される。図7に示すように、履歴の更新(図5のブロック82)は、カウントを増加することを含む(ブロック82B)。判断ブロック84を形成するブロックは、判断ブロック84F−84G及びブロック84H−84Iを含む。テーブルウオークユニット32は、カウントがP−1に等しいかどうか決定し、これは、現在プリフェッチブロックのPTEエントリーが消費されたことを指示する(判断ブロック84F)。もしそうでない場合には(判断ブロック84Fの「ノー」岐路)、テーブルウオークユニット32は、プリフェッチ要求を発生しない。もしそうであれば(判断ブロック84Fの「イエス」岐路)、現在エントリーは、0の付近又はP−1の付近である。現在エントリーが0の付近である場合には(判断ブロック84Gの「イエス」岐路)、テーブルウオークユニット32は、プリフェッチされるべき次のブロックが現在プリフェッチブロック−1であることを予想する(ブロック84H)。テーブルウオークユニット32は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される(ブロック86B)。現在エントリーがエントリーP−1の付近である場合には(判断ブロック84Gの「ノー」岐路)、テーブルウオークユニット32は、プリフェッチされるべき次のブロックが現在プリフェッチブロック+1であることを予想する(ブロック84I)。テーブルウオークユニット32は、予想されるプリフェッチブロックに対してプリフェッチ要求を発生するように構成される(ブロック86B)。
図7の実施形態は、カウントがP−1に等しいことについてチェックするが、他の実施形態では、カウントがP−1付近にあることについてチェックされてもよい。この場合も、付近であることの測定は、前記説明と同様に、ブロックをプリフェッチするための待ち時間、及び現在プリフェッチブロックの残りのエントリーを消費するのに予想される待ち時間に依存する。
判断ブロック84Fの「ノー」岐路は、図5の判断ブロック84の「ノー」岐路と同等である。ブロック84H及び84Iからの退出は、図5の判断ブロック84の「イエス」岐路と同等である。ブロック82B及び86Bは、各々、図5のブロック82及び86と同等である。
ある実施形態では、特に、プリフェッチバッファ34が、プリフェッチされたPTEを記憶するので、PTEをキャッシュ(例えば、図1のL2キャッシュ12及び24、L1キャッシュ(図示せず)、等)にキャッシュ記憶することが効率的でない。従って、一実施形態では、キャッシュは、PTE読み取りに対するデータのキャッシュ記憶を禁止するが、一般に、他のデータはキャッシュ記憶する(それがキャッシュ不能とマークされない限り)。図8は、PTE読み取りのキャッシュ記憶を禁止するためのL2キャッシュ12の一実施形態の動作を示すフローチャートである。L2キャッシュ24、L1キャッシュ、L3キャッシュ、等を含む他のキャッシュも同様である。L2キャッシュ12は、図8に示す動作を実施するように構成される。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。ブロックは、L2キャッシュ12内の組み合わせロジックでパラレルに遂行される。ブロック、ブロックの組み合わせ、及び/又はフローチャート全体は、複数のクロックサイクルにわたってパイプライン処理される。図8のフローチャートは、キャッシュアクセスに応答する動作を示す。L2キャッシュ12は、2つ以上のアクセスをパラレルに処理するように構成される。更に、パイプライン型実施形態では、キャッシュアクセスがパイプライン処理され、従って、種々の処理段階で複数のキャッシュアクセスが生じ得る。
L2キャッシュは、要求アドレスにおけるヒットをチェックする(判断ブロック100)。要求がヒットである場合には(判断ブロック100の「イエス」岐路)、L2キャッシュは、ヒットであるキャッシュラインから要求者へデータを供給する(ブロック102)。要求がミスである場合には(判断ブロック100の「ノー」岐路)、L2キャッシュは、要求がPTE読み取りであるかどうか決定する(判断ブロック104)。ある実施形態では、要求と共にL2キャッシュへ供給される要求者IDは、要求がPTE読み取りであることを指示する。或いは又、要求形式情報又はサイドバンドシグナリングを使用して、要求がPTE読み取りであるかどうか指示してもよい。要求がPTE読み取りであること又はそうでないことを通信するための任意のメカニズムが使用されてもよい。要求がPTE読み取りである場合には(判断ブロック104の「イエス」岐路)、L2キャッシュは、キャッシュブロックを割り当てずに要求を次のレベルへパスし、データのキャッシュ記憶を禁止する(ブロック106)。要求がPTE読み取りでない場合には(判断ブロック104の「ノー」岐路)、L2キャッシュは、キャッシュブロック記憶位置を割り当てて、ミスを記憶し、次のレベルへ充填を発生する(ブロック108)。
図9は、プリフェッチ動作に対してMMU16Aをプログラムするコントロールコードの一実施形態の動作を示すフローチャートである。理解を容易にするためにブロックが特定の順序で示されているが、他の順序が使用されてもよい。コントロールコードを形成するためのインストラクションは、システムが図9に示す動作を遂行するようにさせるためにプロセッサにおいて実行される。
コントロールコードは、MMUプリフェッチングから利益が得られるメモリの領域を決定する(ブロック110)。例えば、コードは、フレームバッファ位置、テクスチャマップ位置、等を識別する。又、コードは、プリフェッチングから利益が得られる要求形式も識別し、そしてそれらの要求形式に関連したアドレス範囲を識別する。コントロールコードは、識別された範囲を範囲レジスタ38A−38Rに書き込む(ブロック112)。
システム及びコンピュータアクセス可能な媒体
図10は、システム150の一実施形態のブロック図である。このシステム150は、図1に示されたシステムの別の実施形態である。ここに示す実施形態では、システム150は、1つ以上の周辺装置154及び外部メモリ158に結合された集積回路152の少なくとも1つのインスタンスを含む。集積回路152は、一実施形態において、GPU10、L2キャッシュ12、MCMB14、CPU22、L2キャッシュ24、及びメインメモリシステム20のためのメモリコントローラを含む。外部メモリ158は、メインメモリシステム20からのメモリを含む。集積回路152へ供給電圧を供給すると共に、メモリ158及び/又は周辺装置154へ1つ以上の供給電圧を供給する電源156も設けられる。ある実施形態では、集積回路152の2つ以上のインスタンスが含まれる(そして2つ以上の外部メモリ158も含まれる)。
周辺装置154は、システム150の形式に基づいて望ましい回路を含む。例えば、一実施形態では、システム150は、移動装置(例えば、パーソナルデジタルアシスタント(PDA)、スマートホン、等)であり、そして周辺装置154は、WiFi、ブルーツース、セルラー、グローバルポジショニングシステム、等の種々の形式のワイヤレス通信のための装置を含む。又、周辺装置154は、RAM記憶装置、ソリッドステート記憶装置又はディスク記憶装置を含めて、付加的な記憶装置も含む。周辺装置154は、タッチディスプレイスクリーン又はマルチタッチディスプレイスクリーンを含むディスプレイスクリーン、キーボード又は他の入力装置、マイクロホン、スピーカ、等のユーザインターフェイス装置を含む。他の実施形態では、システム150は、任意の形式のコンピューティングシステム(例えば、デスクトップパーソナルコンピュータ、ラップトップ、ワークステーション、ネットトップ、等)でよい。
図11は、コンピュータアクセス可能な記憶媒体200のブロック図である。一般的に述べると、コンピュータアクセス可能な記憶媒体は、インストラクション及び/又はデータをコンピュータに与えるために使用中にコンピュータによってアクセスできる記憶媒体を含む。例えば、コンピュータアクセス可能な記憶媒体は、磁気又は光学媒体、例えば、ディスク(固定又は除去可能な)、テープ、CD−ROM、又はDVD−ROM、CD−R、CD−RW、DVD−R、DVD−RWのような記憶媒体を含む。記憶媒体は、更に、揮発性又は不揮発性メモリ媒体、例えば、RAM(例えば、同期ダイナミックRAM(SDRAM)、Rambus DRAM(RDRAM)、スタティックRAM(SRAM)、等)、ROM、フラッシュメモリ、又はユニバーサルシリアルバス(USB)インターフェイス、フラッシュメモリインターフェイス(FMI)、シリアル周辺インターフェイス(SPI)のような周辺インターフェイスを経てアクセス可能な不揮発性メモリ(例えば、フラッシュメモリ)、等を含む。記憶媒体は、マイクロエレクトロメカニカルシステム(MEMS)を含むと共に、ネットワーク及び/又はワイヤレスリンクのような通信媒体を経てアクセス可能な記憶媒体を含む。図11のコンピュータアクセス可能な記憶媒体200は、図9を参照して上述したコードを含むコントロールコード202を記憶する。一般的に、コンピュータアクセス可能な記憶媒体200は、実行時に、図9に示す動作の一部分又は全部を実施するインストラクションのセットを記憶する。キャリア媒体は、コンピュータアクセス可能な記憶媒体及び送信媒体、例えば、ワイヤード又はワイヤレス送信を含む。
前記開示が完全に明らかになると、種々の変更や修正が当業者に明らかであろう。そのような全ての変更や修正は、特許請求の範囲に包含されることが意図される。
10A−10N:グラフィック処理ユニット(GPU)
12A−12N:レベル2(L2)キャッシュ
14A、B:マルチコアマネージメントブロック(MCMB)
16A−16N:メモリマネージメントユニット(MMU)
18A−18M:MMU
20:メインメモリシステム
22A−22M:CPU
24A−24M:L2キャッシュ
26:ページテーブル
30:TLB
32:テーブルウオークユニット
34:プリフェッチバッファ
38A−38R:レジスタ
40:バーチャルアドレススペース
42:物理アドレススペース
44:フレームバッファ
46:バーチャルページ

Claims (15)

  1. 複数のバーチャル/物理的アドレス変換を記憶するように構成されたトランスレーションルックアサイドバッファ(TLB)と、
    前記TLBにおいてミスとなったバーチャルアドレスの変換中に以前に読み取られた第1のページテーブルエントリーを含めて複数のページテーブルエントリーを含むデータのブロックを記憶するように構成されたバッファと、
    前記TLB及び前記バッファに結合されたテーブルウオークユニットであって、前記TLBにおける第1のTLBミスの第1のバーチャルアドレスを受け取るように結合され、且つ変換のためのメモリ読み取りを開始する前に前記第1のバーチャルアドレスに対応する第2のページテーブルエントリーについて前記バッファをチェックするように構成されたテーブルウオークユニットと、
    を備えたメモリマネージメントユニット(MMU)。
  2. 前記テーブルウオークユニットは、前記バッファにおける第2のページテーブルエントリーを検出するように構成され、そして前記テーブルウオークユニットは、前記第2のページテーブルエントリーから前記TLBへ変換を書き込むように構成される、請求項1に記載のMMU。
  3. 前記テーブルウオークユニットは、前記第2のページテーブルエントリーが前記バッファに記憶されないことを検出するように構成され、そして前記テーブルウオークユニットは、前記第2のページテーブルエントリーを含むデータの第2ブロックに対するメモリ読み取りを発生するように構成される、請求項1に記載のMMU。
  4. 前記テーブルウオークユニットは、前記バッファに前記第2のブロックを書き込んで、前記バッファにおける前記第1のブロックをオーバーライトするように構成された、請求項3に記載のMMU。
  5. 前記バッファは、複数のブロックを記憶するように構成され、その各ブロックは、前記MMUへ送信される変換要求と共に与えられる異なる識別子に対応する、請求項4に記載のMMU。
  6. 前記ブロックは、サイズがキャッシュブロックより大きい、請求項1から5のいずれかに記載のMMU。
  7. 前記テーブルウオークユニットは、前記複数のページテーブルエントリーの使用履歴を追跡し、そしてその履歴に応答してデータの第2ブロックに対するプリフェッチ要求を発生するように構成される、請求項1から6にずれかに記載のMMU。
  8. 前記履歴は、前記ブロックから読み取られた最も最近のQ個のページテーブルエントリーの指示を含み、前記テーブルウオークユニットは、TLBミスのパターンがブロックの端の付近であることを前記履歴が指示する場合に前記プリフェッチ要求を発生するように構成され、そして前記Qは、1より大きな正の整数である、請求項7に記載のMMU。
  9. 前記履歴は、前記テーブルウオークユニットにより読み取られた複数のページテーブルエントリーの数のカウントを含み、そして前記テーブルウオークユニットは、そのカウントが前記複数のページテーブルエントリーの数に等しくなるのに応答して前記プリフェッチ要求を発生するように構成される、請求項7に記載のMMU。
  10. 前記履歴は、前記テーブルウオークユニットにより読み取られた複数のページテーブルエントリーの数のカウントを含み、そして前記テーブルウオークユニットは、そのカウントが前記複数のページテーブルエントリーの数に近付くのに応答して前記プリフェッチ要求を発生するように構成される、請求項7に記載のMMU。
  11. メモリから複数のページテーブルエントリーより成るデータのブロックを読み取る段階と、
    前記ブロックをメモリマネージメントユニット(MMU)に保持する段階と、
    前記MMUにおいてトランスレーションルックアサイドバッファ(TLB)ミスを検出する段階と、
    前記複数のページテーブルエントリーの1つを読み取って前記TLBミスに対する変換を決定する段階と、
    を備えた方法。
  12. 前記MMUにおいて第2のTLBミスを検出する段階と、
    前記第2のTLBミスに対応する第2のページテーブルエントリーが前記複数のページテーブルエントリーにないことを決定する段階と、
    前記メモリから前記第2のページテーブルエントリーを含めて第2の複数のページテーブルエントリーより成るデータの第2ブロックを読み取る段階と、
    前記MMUに前記第2のブロックを保持する段階と、
    を更に備えた請求項11に記載の方法。
  13. MMUに第2のブロックを保持する前記段階は、前記ブロックを前記第2のブロックでオーバーライトすることを含む、請求項12に記載の方法。
  14. 前記ブロックに複数のページテーブルエントリーの使用履歴を維持する段階と、
    前記履歴に応答して第2の複数のページテーブルエントリーを含むデータの第2ブロックのプリフェッチを発生する段階と、
    を更に備えた請求項11に記載の方法。
  15. トランスレーションルックアサイドバッファ(TLB)ミスの規則的パターンを経験することが予想される1つ以上のアドレス範囲を決定する段階と、
    前記アドレス範囲でメモリマネージメントユニット(MMU)の1つ以上のレジスタをプログラミングする段階と、
    を備え、前記MMUは、前記1つ以上のアドレス範囲におけるTLBミスに応答して、複数のページテーブルエントリーを各々含むページテーブルエントリーのブロックに対してプリフェッチ要求を発生するように構成され、そして前記MMUは、前記1つ以上の範囲以外のTLBミスに対してはプリフェッチ要求の発生を禁止するように構成される、請求項11に記載の方法。
JP2012520704A 2009-07-13 2010-07-12 Tlbプリフェッチング Expired - Fee Related JP5580894B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/501,643 US8397049B2 (en) 2009-07-13 2009-07-13 TLB prefetching
US12/501,643 2009-07-13
PCT/US2010/041728 WO2011008702A1 (en) 2009-07-13 2010-07-12 Tlb prefetching

Publications (2)

Publication Number Publication Date
JP2012533135A true JP2012533135A (ja) 2012-12-20
JP5580894B2 JP5580894B2 (ja) 2014-08-27

Family

ID=42782105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012520704A Expired - Fee Related JP5580894B2 (ja) 2009-07-13 2010-07-12 Tlbプリフェッチング

Country Status (6)

Country Link
US (1) US8397049B2 (ja)
EP (1) EP2454669A1 (ja)
JP (1) JP5580894B2 (ja)
KR (1) KR101379596B1 (ja)
CN (1) CN102498477B (ja)
WO (1) WO2011008702A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507042A (ja) * 2011-03-03 2014-03-20 クアルコム,インコーポレイテッド 事前充填能力を有するメモリ管理ユニット
JP2014175017A (ja) * 2013-03-11 2014-09-22 Samsung Electronics Co Ltd システムオンチップ及びその動作方法
JP2018536219A (ja) * 2015-10-28 2018-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、コンピューティング・システム、およびコンピュータ・プログラム
JP2019212167A (ja) * 2018-06-07 2019-12-12 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Families Citing this family (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2527972A3 (en) 2006-11-14 2014-08-06 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
JP5428617B2 (ja) * 2009-07-28 2014-02-26 富士通株式会社 プロセッサ及び演算処理方法
JP5377182B2 (ja) * 2009-09-10 2013-12-25 株式会社東芝 制御装置
US9569348B1 (en) * 2009-09-22 2017-02-14 Nvidia Corporation Method for automatic page table compression
JP5488225B2 (ja) * 2010-06-09 2014-05-14 富士通株式会社 データ管理システム、データ管理方法、及びデータ管理プログラム
WO2012037491A2 (en) 2010-09-17 2012-03-22 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
EP2689327B1 (en) 2011-03-25 2021-07-28 Intel Corporation Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
KR101620676B1 (ko) 2011-03-25 2016-05-23 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트
KR101826121B1 (ko) 2011-03-25 2018-02-06 인텔 코포레이션 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
EP2710480B1 (en) 2011-05-20 2018-06-20 Intel Corporation An interconnect structure to support the execution of instruction sequences by a plurality of engines
KR20120129695A (ko) * 2011-05-20 2012-11-28 삼성전자주식회사 메모리 관리 유닛, 이를 포함하는 장치들 및 이의 동작 방법
CN107729267B (zh) 2011-05-20 2022-01-25 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
US20120317377A1 (en) * 2011-06-09 2012-12-13 Alexander Palay Dual flash translation layer
JP2013008094A (ja) * 2011-06-22 2013-01-10 Sony Corp メモリ管理装置、メモリ管理方法、制御プログラム、および、記録媒体
US9009445B2 (en) 2011-10-20 2015-04-14 Apple Inc. Memory management unit speculative hardware table walk scheme
CN104040490B (zh) 2011-11-22 2017-12-15 英特尔公司 用于多引擎微处理器的加速的代码优化器
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US9378150B2 (en) * 2012-02-28 2016-06-28 Apple Inc. Memory management unit with prefetch ability
US8930674B2 (en) 2012-03-07 2015-01-06 Soft Machines, Inc. Systems and methods for accessing a unified translation lookaside buffer
US9710399B2 (en) 2012-07-30 2017-07-18 Intel Corporation Systems and methods for flushing a cache with modified data
US9229873B2 (en) 2012-07-30 2016-01-05 Soft Machines, Inc. Systems and methods for supporting a plurality of load and store accesses of a cache
US9916253B2 (en) 2012-07-30 2018-03-13 Intel Corporation Method and apparatus for supporting a plurality of load accesses of a cache in a single cycle to maintain throughput
US9740612B2 (en) 2012-07-30 2017-08-22 Intel Corporation Systems and methods for maintaining the coherency of a store coalescing cache and a load cache
US9430410B2 (en) 2012-07-30 2016-08-30 Soft Machines, Inc. Systems and methods for supporting a plurality of load accesses of a cache in a single cycle
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9218289B2 (en) * 2012-08-06 2015-12-22 Qualcomm Incorporated Multi-core compute cache coherency with a release consistency memory ordering model
KR20160122278A (ko) 2012-08-18 2016-10-21 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9678882B2 (en) 2012-10-11 2017-06-13 Intel Corporation Systems and methods for non-blocking implementation of cache flush instructions
US20140108766A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetching tablewalk address translations
US10585801B2 (en) 2012-11-26 2020-03-10 Advanced Micro Devices, Inc. Prefetch kernels on a graphics processing unit
KR102002900B1 (ko) * 2013-01-07 2019-07-23 삼성전자 주식회사 메모리 관리 유닛을 포함하는 시스템 온 칩 및 그 메모리 주소 변환 방법
KR101946455B1 (ko) * 2013-03-14 2019-02-11 삼성전자주식회사 시스템 온-칩 및 이의 동작 방법
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9086813B2 (en) * 2013-03-15 2015-07-21 Qualcomm Incorporated Method and apparatus to save and restore system memory management unit (MMU) contexts
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
EP2972845B1 (en) 2013-03-15 2021-07-07 Intel Corporation A method for executing multithreaded instructions grouped onto blocks
WO2014151043A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for emulating a guest centralized flag architecture by using a native distributed flag architecture
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
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
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
CN104239236B (zh) * 2013-06-17 2018-02-13 华为技术有限公司 旁路转换缓冲缺失的处理方法及旁路转换缓冲
CN107608912B (zh) * 2013-08-20 2020-10-16 华为技术有限公司 内存物理地址查询方法和装置
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
US20150134933A1 (en) * 2013-11-14 2015-05-14 Arm Limited Adaptive prefetching in a data processing apparatus
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
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
US9990305B2 (en) 2014-09-19 2018-06-05 Nxp Usa, Inc. Memory management component having multiple memory management modules and method therefor
US20160133087A1 (en) * 2014-11-10 2016-05-12 Rising Digital Corp. Gaming machine with bonus feature
JP6636526B2 (ja) * 2015-03-27 2020-01-29 ホアウェイ・テクノロジーズ・カンパニー・リミテッド データ処理方法、メモリ管理ユニット、およびメモリ制御デバイス
US9792215B2 (en) 2015-03-28 2017-10-17 Qualcomm Incorporated Command-driven translation pre-fetch for memory management units
WO2016171866A1 (en) 2015-04-24 2016-10-27 Optimum Semiconductor Technologies, Inc. Computer processor with separate registers for addressing memory
US9898418B2 (en) * 2015-05-21 2018-02-20 Via Alliance Semiconductor Co., Ltd. Processor including single invalidate page instruction
US10037280B2 (en) * 2015-05-29 2018-07-31 Qualcomm Incorporated Speculative pre-fetch of translations for a memory management unit (MMU)
KR102026877B1 (ko) * 2015-06-16 2019-09-30 한국전자통신연구원 메모리 관리 유닛 및 그 동작 방법
US20160378684A1 (en) 2015-06-26 2016-12-29 Intel Corporation Multi-page check hints for selective checking of protected container page versus regular page type indications for pages of convertible memory
US20170161194A1 (en) * 2015-12-02 2017-06-08 Advanced Micro Devices, Inc. Page-based prefetching triggered by tlb activity
KR102429903B1 (ko) * 2015-12-03 2022-08-05 삼성전자주식회사 비휘발성 메인 메모리 시스템의 페이지 폴트 처리 방법
US10261916B2 (en) * 2016-03-25 2019-04-16 Advanced Micro Devices, Inc. Adaptive extension of leases for entries in a translation lookaside buffer
GB2551756B (en) * 2016-06-29 2019-12-11 Advanced Risc Mach Ltd Apparatus and method for performing segment-based address translation
US9972065B2 (en) * 2016-09-23 2018-05-15 Apple Inc. Resource layout randomization for GPU execution
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
US10565676B2 (en) * 2017-04-17 2020-02-18 Intel Corporation Thread prefetch mechanism
US10387320B2 (en) 2017-05-12 2019-08-20 Samsung Electronics Co., Ltd. Integrated confirmation queues
US10552042B2 (en) * 2017-09-06 2020-02-04 Samsung Electronics Co., Ltd. Effective transaction table with page bitmap
US10733688B2 (en) * 2017-09-26 2020-08-04 Intel Corpoation Area-efficient implementations of graphics instructions
CN109710544B (zh) * 2017-10-26 2021-02-09 华为技术有限公司 内存访问方法、计算机系统以及处理装置
US20190163641A1 (en) * 2017-11-27 2019-05-30 Intel Corporation Page translation prefetch mechanism
CN109461113B (zh) * 2018-10-11 2021-07-16 中国人民解放军国防科技大学 一种面向数据结构的图形处理器数据预取方法及装置
US11334387B2 (en) 2019-05-28 2022-05-17 Micron Technology, Inc. Throttle memory as a service based on connectivity bandwidth
US11100007B2 (en) * 2019-05-28 2021-08-24 Micron Technology, Inc. Memory management unit (MMU) for accessing borrowed memory
US11438414B2 (en) 2019-05-28 2022-09-06 Micron Technology, Inc. Inter operating system memory services over communication network connections
US11194575B2 (en) * 2019-11-07 2021-12-07 International Business Machines Corporation Instruction address based data prediction and prefetching
US11314445B2 (en) * 2019-11-19 2022-04-26 Western Digital Technologies, Inc. Pattern tracking for efficiently predicting control pages
US11429535B1 (en) 2021-07-09 2022-08-30 Apple Inc. Cache replacement based on traversal tracking
US20230058863A1 (en) * 2021-08-10 2023-02-23 Baidu Usa Llc Countermeasures against side-channel attacks on secure encrypted virtualization (sev)-secure nested paging (sev-snp) processors
US11663132B2 (en) * 2021-10-13 2023-05-30 Arm Limited Prefetching
JP2023072396A (ja) * 2021-11-12 2023-05-24 富士通株式会社 メモリ管理ユニット、メモリ管理方法、及び、情報処理装置
EP4283476A1 (en) * 2022-05-24 2023-11-29 Samsung Electronics Co., Ltd. Input output memory management unit and electronic device having the same
WO2024030707A1 (en) * 2022-08-01 2024-02-08 Qualcomm Incorporated Using retired pages history for instruction translation lookaside buffer (tlb) prefetching in processor-based devices

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62151958A (ja) * 1985-12-25 1987-07-06 Matsushita Electric Ind Co Ltd 仮想アドレス変換装置
JPH04232551A (ja) * 1990-05-24 1992-08-20 Internatl Business Mach Corp <Ibm> 多重仮想アドレス変換方法及び装置
JPH0588983A (ja) * 1991-09-30 1993-04-09 Fujitsu Ltd チヤネル装置の動的アドレス変換方法
JPH06149680A (ja) * 1992-11-12 1994-05-31 Nec Corp アドレス変換装置
JPH08161230A (ja) * 1994-12-05 1996-06-21 Oki Electric Ind Co Ltd オンデマンドページングにおける先読み方法
JP2005108262A (ja) * 1994-09-09 2005-04-21 Renesas Technology Corp データ処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6175898B1 (en) 1997-06-23 2001-01-16 Sun Microsystems, Inc. Method for prefetching data using a micro-TLB
US7103748B2 (en) * 2002-12-12 2006-09-05 International Business Machines Corporation Memory management for real-time applications
US7099999B2 (en) * 2003-09-30 2006-08-29 International Business Machines Corporation Apparatus and method for pre-fetching data to cached memory using persistent historical page table data
US20060136696A1 (en) 2004-12-16 2006-06-22 Grayson Brian C Method and apparatus for address translation
US20060194529A1 (en) 2005-02-25 2006-08-31 Smith Richard S Retractable abrasive sharpener and carrying case
US7660964B2 (en) * 2005-08-02 2010-02-09 International Business Machines Corporation Windowing external block translations
US20070094476A1 (en) * 2005-10-20 2007-04-26 Augsburg Victor R Updating multiple levels of translation lookaside buffers (TLBs) field
US20080276067A1 (en) 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62151958A (ja) * 1985-12-25 1987-07-06 Matsushita Electric Ind Co Ltd 仮想アドレス変換装置
JPH04232551A (ja) * 1990-05-24 1992-08-20 Internatl Business Mach Corp <Ibm> 多重仮想アドレス変換方法及び装置
JPH0588983A (ja) * 1991-09-30 1993-04-09 Fujitsu Ltd チヤネル装置の動的アドレス変換方法
JPH06149680A (ja) * 1992-11-12 1994-05-31 Nec Corp アドレス変換装置
JP2005108262A (ja) * 1994-09-09 2005-04-21 Renesas Technology Corp データ処理装置
JPH08161230A (ja) * 1994-12-05 1996-06-21 Oki Electric Ind Co Ltd オンデマンドページングにおける先読み方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014507042A (ja) * 2011-03-03 2014-03-20 クアルコム,インコーポレイテッド 事前充填能力を有するメモリ管理ユニット
US9092358B2 (en) 2011-03-03 2015-07-28 Qualcomm Incorporated Memory management unit with pre-filling capability
JP2015164047A (ja) * 2011-03-03 2015-09-10 クアルコム,インコーポレイテッド 事前充填能力を有するメモリ管理ユニット
JP2014175017A (ja) * 2013-03-11 2014-09-22 Samsung Electronics Co Ltd システムオンチップ及びその動作方法
JP2018536219A (ja) * 2015-10-28 2018-12-06 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 仮想マシンのページ・テーブル・キャッシュ・ラインをプリロードする方法、コンピューティング・システム、およびコンピュータ・プログラム
JP2019212167A (ja) * 2018-06-07 2019-12-12 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法
US10929306B2 (en) 2018-06-07 2021-02-23 Fujitsu Limited Arithmetic processor, information processing apparatus, and control method of arithmetic processor
JP7155629B2 (ja) 2018-06-07 2022-10-19 富士通株式会社 演算処理装置、情報処理装置、及び演算処理装置の制御方法

Also Published As

Publication number Publication date
WO2011008702A1 (en) 2011-01-20
US20110010521A1 (en) 2011-01-13
US8397049B2 (en) 2013-03-12
KR101379596B1 (ko) 2014-04-01
CN102498477A (zh) 2012-06-13
KR20120037975A (ko) 2012-04-20
CN102498477B (zh) 2015-02-11
EP2454669A1 (en) 2012-05-23
JP5580894B2 (ja) 2014-08-27

Similar Documents

Publication Publication Date Title
JP5580894B2 (ja) Tlbプリフェッチング
US10776022B2 (en) Combined transparent/non-transparent cache
EP2452265B1 (en) Block-based non-transparent cache
US8392658B2 (en) Cache implementing multiple replacement policies
CN107111455B (zh) 电子处理器架构以及缓存数据的方法
US9208084B2 (en) Extended main memory hierarchy having flash memory for page fault handling
US9251095B2 (en) Providing metadata in a translation lookaside buffer (TLB)
US20040117583A1 (en) Apparatus for influencing process scheduling in a data processing system capable of utilizing a virtual memory processing scheme
KR100343940B1 (ko) 트랜슬레이션 룩어헤드 버퍼 예측 비트를 이용한 쓰기동작시의 캐쉬 얼리어싱 방지

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131029

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131105

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140226

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140522

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140611

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140616

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: 20140707

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140711

R150 Certificate of patent or registration of utility model

Ref document number: 5580894

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees