JP2010198610A - データ処理装置および方法 - Google Patents

データ処理装置および方法 Download PDF

Info

Publication number
JP2010198610A
JP2010198610A JP2010022201A JP2010022201A JP2010198610A JP 2010198610 A JP2010198610 A JP 2010198610A JP 2010022201 A JP2010022201 A JP 2010022201A JP 2010022201 A JP2010022201 A JP 2010022201A JP 2010198610 A JP2010198610 A JP 2010198610A
Authority
JP
Japan
Prior art keywords
cache
memory
data
streaming
reuse
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.)
Pending
Application number
JP2010022201A
Other languages
English (en)
Inventor
Dominic Hugo Symes
ドミニク・ヒューゴ・サイムス
Jonathan Sean Callan
ジョナサン・ショーン・カラン
Hedley James Francis
ヘドリー・ジェームス・フランシス
Paul Gilbert Meyer
ポール・ギルバート・メイヤー
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2010198610A publication Critical patent/JP2010198610A/ja
Pending legal-status Critical Current

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/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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • G06F12/127Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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

Landscapes

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

Abstract

【課題】データをキャッシュメモリのキャッシュラインにプレロードし、キャッシュラインを再利用するためのキャッシュ維持動作を制御するためのデータ処理装置および方法を提供する。
【解決手段】一連の命令を実行するように動作可能なプロセッサと、該一連の命令を実行する際の該プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、を備える。キャッシュコントローラもまた提供され、主メモリから該キャッシュメモリの1つ以上のキャッシュラインにデータ値を格納するように、該プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路を備える。該キャッシュコントローラはまた、優先的な再利用のために、該キャッシュメモリの1つ以上のキャッシュラインを識別するように、該ストリーミングプレロード命令に応じて動作可能な識別回路を備える。
【選択図】図1

Description

本発明は、キャッシュメモリを制御するためのデータ処理装置および方法に関する。より具体的には、本発明の実施形態は、データを、キャッシュメモリのキャッシュラインにプレロードし、キャッシュメモリのキャッシュラインを再利用するためのキャッシュ維持動作を制御するための装置および方法に関する。
データ処理動作を実行するには、プロセッサは、メモリに格納されたデータ値へのアクセスを必要とする。しかしながら、データ処理装置の主メモリは、比較的遅く、したがって、プロセッサによる主メモリへの直接アクセスは実用的ではない。データ値へのより高速なアクセスを可能とするためには、プロセッサはしばしば、主メモリのコンテンツの一部のコピーを保存し、かつプロセッサによってはるかに高速にアクセスすることができる、キャッシュメモリを具備する。新しいデータ値は、必要に応じて、および必要なときに、キャッシュメモリに格納され、これらのデータ値がキャッシュメモリに存在すると、例えば、上書きされるまで、今後より迅速にこれらにアクセスすることができる。キャッシュメモリの動作は、プロセッサが新しいデータ値にアクセスするよりも、最近のデータ値を再利用する可能性が統計的により高いという事実に依存する。
キャッシュメモリは、プロセッサによるアクセスのためのデータ値を格納するようにそれぞれ動作可能である、複数のキャッシュライン(列としても知られる)を備える。データ値は、キャッシュライン単位で、主メモリからキャッシュメモリにロードされる。キャッシュメモリが主メモリと比べて比較的小さいという事実の結果、新しいデータ値がキャッシュメモリにロードされる際は、頻繁にキャッシュラインを再利用する必要があるということが理解されよう。例えば、ランダムに取り替える方策または最も以前に使用されたものを取り替える方策といった、新しいデータ値がキャッシュにロードされる場合に、再利用のためのキャッシュラインの選択に適用し得るいくつかのスキームが存在する。
ある種のプロセッサ動作は、キャッシュメモリの有効性を妨害する可能性がある。例えば、ストリーミングデータ(データがロングストリームとして扱われ、ほぼすべてのデータアクセスが、データがストリーミングされる際に着実に進むストリームの現在の位置に局所的である)の場合、キャッシュメモリは、データ値のストリームによって迅速に上書きされ得る。これは、今後再利用されるかもしれない非ストリーミングデータが、再利用される可能性の低いストリーミングされたデータ値によって上書きされてしまうので、データ値のストリームが1回のみ使用される際(通常のストリーミングデータの場合のように)、不利である。この種のデータストリーミングを伴い得る動作の例としては、コーデックス、通信プロトコル、およびブロックメモリ動作がある。
一部のプロセッサアーキテクチャ(例えば、IA−32/SSE、Hitachi SR8000、3DNow!)は、ストリーミングされたデータのためにキャッシュメモリをバイパスする、修正されたロードおよび格納命令を使用して、この問題に対処している。一部のアーキテクチャ(例えば、IA−32/SSE)は、マルチレベルキャッシュ構造を有し、キャッシュのレベルまでデータをプレロードするべきかを特定する、プレロード命令を提供する。
先の特許文献1において、本出願者により、キャッシュ管理方法が提唱されたが、ここでは、データトラフィックが監視され、キャッシュ内のデータが、トラフィック監視に基づき、キャッシュからの優先的な追い出しのために標識される。
キャッシュ追い出し最適化技術は、特許文献2に説明されており、ここでは、プログラム命令により、ソフトウェア設計者が、さらなるプログラム実行中に使用される可能性が低いデータを識別するソフトウェア割当解除のヒントを提供することができる。
ストリーミングデータのためのキャッシングスキームは、非特許文献1に記載されており、標準データキャッシュが上書きされるのを防止するために、ストリーミングデータに利用されるべき個別のキャッシュを提供する。
国際出願公開第2007/096572号 米国特許第6,766,419号明細書
本発明の一態様によると、データ処理装置が提供され、
前記データ処理装置は、
一連の命令を実行するように動作可能なプロセッサと、
一連の命令を実行する際に、プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、
キャッシュコントローラと
を備え、
前記キャッシュコントローラは、
主メモリから前記キャッシュメモリの1つ以上のキャッシュラインにデータ値を格納するように、前記プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路と、
優先的な再利用のために前記キャッシュメモリの1つ以上のキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能な識別回路と、
キャッシュメモリのキャッシュラインのための前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のための1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能なキャッシュ維持回路と、を備える。
このように、単一のストリーミングプレロード命令を使用して、キャッシュメモリへのデータ値の1つ以上のキャッシュラインのプレロードをトリガし、また優先的な再利用のためにキャッシュメモリの1つ以上のキャッシュラインを標識することができる。次いで、新しいデータ値がキャッシュメモリにロードされる際、優先的な再利用のために標識されたキャッシュラインは、再利用の候補ラインとして見なされ、よって、それらは、今後要求される可能性があるデータ値を含み得るキャッシュラインの代わりに優先的に上書きされる。効果的には、ストリーミングプレロード命令により、プログラマは、一時的に(すなわち短期間キャッシュされ破棄される)データを標識することができる。例えば、一実施形態において、ストリーミングプレロード命令は、CPUに次のキャッシュラインをプレロードさせ、前のキャッシュラインを追い出し可能として標識させる、キャッシュヒントとして機能し得る。別の実施形態において、ストリーミングプレロード命令は、CPUに次のキャッシュラインをプレロードさせ、追い出し可能として標識させる、キャッシュヒントとして機能し得る。
好適には、CPUが現在のキャッシュラインのデータへのアクセスを終了していないかもしれず、したがって、現在のキャッシュラインに格納されたデータ値が依然として要求され得るという事実により、現在のキャッシュラインではなく、前のキャッシュラインが、再利用に好適または追い出し可能として標識される。
キャッシュ維持動作は、例えば、ラインフィル動作であり得、これによって、主メモリ内のデータ値の行は、キャッシュメモリの行にコピーされる。
この命令はまた、CPUに前のキャッシュラインを追い出し可能として標識させる(同時にプレロード動作をトリガすることなく)、キャッシュヒントである、ストリーミング追い出し命令と併せて使用することもできる。したがって、ストリーミング追い出し動作は、ストリーミングプロセスの終了時、例えば、処理のためにプレロードされることが要求される、ストリーム内のさらなるデータ値が無い場合、有用であり得る。
ストリーミングプレロード命令は、ストリーミングコードに挿入されるべき新しい命令の要求、およびキャッシュの複雑性の増加という犠牲を払うが、再利用されるであろうデータのためにデータキャッシュにスペースを保ち、同様にパフォーマンスを増大させ、かつ電力消費を減少させ得る。
典型的なストリーミングアプリケーションは、以下のように構築され得る。
ループ:
アドレスAからデータを読み込む
データを処理する
データをアドレスBに書き込む
AおよびBをインクリメントする
さらなるデータの間、ループへ移動する
これは、数千回反復した後、データキャッシュ全体を上書きする可能性が高いことが理解されよう。
しかしながら、新しい命令の追加は以下のように行われる。
ループ:
ストリーミングデータ(アドレスA)をプレロードする
データをアドレスAから読み込む
データを処理する
ストリーミングデータ(アドレスB)を前追い出しする
データをアドレスBに書き込む
AおよびBをインクリメントする
さらなるデータの間、ループへ移動する
この修正されたコードは、キャッシュ全体ではなく、データキャッシュの一部のみが上書きされることを規定する。
ストリーミングプレロード命令は、プロセッサによって現在処理されているキャッシュメモリ内の現在のキャッシュラインに対応するメモリアドレスを特定し得る。この場合、プレロード回路は、現在のキャッシュラインのデータ値を追従する、主メモリ内のデータ値をキャッシュメモリの1つ以上のキャッシュラインに格納するように動作可能であり、識別回路は、優先的な再利用のために、現在のキャッシュラインのデータ値に先行する主メモリからのデータ値を含むキャッシュメモリの1つ以上のキャッシュラインを識別するように動作可能である。このように、ストリーミングプレロード命令は、単一のメモリアドレスを特定するだけでよく、次いで、キャッシュコントローラは、単一のメモリアドレスに基づいて、優先的な再利用動作のためにプレロードおよび標識を参照的に適用することができる。これは、好適な追い出しのために、あるキャッシュラインをプレロードし、別のキャッシュラインを標識するよう、個別の命令およびそれぞれの標的アドレスが提供される配置と比較して、単純性を提供する。従来のプレロード命令は、プレロードされるべきキャッシュラインのアドレスを特定するが、本発明の実施形態は、データストリーム内の現在の位置のメモリアドレスを特定し、好適な利用のためにプレロードおよび標識するための標的アドレスが、該現在の位置から参照的に生成される。
代替的に、ストリーミングプレロード命令は、現在処理されているデータ値のメモリアドレスへのポインタを格納するプロセッサレジスタを指摘し得、次いで、プロセッサレジスタに格納されたメモリアドレスは、優先的な再利用のためにプレロードおよび標識されるべきキャッシュラインを参照的に決定するための参照点を特定するために使用することができる。
ストリーミングプレロード命令は、キャッシュメモリで利用可能となるストリーミングデータの量を特定し得る。この場合、プレロード回路は、ストリーミングプレロード命令で特定されるストリーミングデータの量に従って決定される主メモリからのデータの量を、キャッシュメモリにプレロードするように動作可能である。例えば、ストリーミングプレロード命令は、データ値の複数のキャッシュラインが、主メモリからキャッシュにプレロードされるべきことを特定することができる。同様に、この場合、識別回路は、優先的な再利用のために、ストリーミングプレロード命令で特定されたストリーミングデータの量に従って決定される、いくかのキャッシュラインを識別するように動作可能であり得る。
換言すると、例えば、メモリ待ち時間、またはメモリシステムがサポートする未処理のメモリ要求の数に応じて、ストリーミングプレロード命令で所望のデータの量を要求することによって、再利用のためにプレロードおよび標識されるデータの量に柔軟性を提供することができる。
優先的な再利用のために、キャッシュ内のデータ値を標識するためのいくつかの可能な方法が存在する。例えば、キャッシュメモリのキャッシュラインは、典型的に、それに関連付けられた、キャッシュラインが有効データを含むかどうかを示すために使用される有効ビットを有する。識別回路は、あるキャッシュラインが再利用に好適である場合、該キャッシュラインが有効データを含まないことを示すように、キャッシュラインの有効ビットを設定するように動作可能であり得る。次いで、キャッシュ維持回路は、再利用のために、該キャッシュラインが有効データを含まないことを示すように設定される有効ビットを有するキャッシュラインを優先的に選択するべく動作可能である。この配置は、キャッシュメモリの既存のフラグを利用し、したがって、キャッシュのキャッシュラインにいかなる付加的なフラグの追加も必要としないので、有利である。
代替的な配置において、キャッシュメモリのキャッシュラインの各々は、それに関連付けられた、識別回路によって生成される再利用に好適な識別に応じて設定される、(有効ビットに追加的な)再利用に好適な領域を有する。この場合、キャッシュ維持回路は、再利用のために、該キャッシュラインが再利用に好適であることを示すように設定される、再利用に好適な領域を有するキャッシュラインを優先的に選択するように動作可能である。(有効ビットを利用するのではなく)専用の再利用に好適なフラグを提供することの利点は、データが、再利用に好適であると標識されるのと同時に、有効なままで(したがって、キャッシュでアクセス可能で)あり得る、ということである。
キャッシュメモリは、nウェイセットアソシエイティブキャッシュメモリであり得る。この場合、キャッシュ維持回路は、キャッシュメモリのn個の対応するキャッシュラインのうち1つ以上のいずれかのラインに対する、識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のために、それぞれのnウェイのn個の対応するキャッシュライン間で選択するように動作可能である。
ストリーミングデータルックアップテーブルが提供され得、これは、ストリーミングプレロード命令に応じて先にキャッシュされたデータ値の行と、nウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。この場合、プレロード回路は、キャッシュメモリのどのウェイに、プレロードされたデータ値が格納されたかを示すためのストリーミングルックアップテーブルにエントリを追加するように、動作可能である。さらに、識別回路は、ストリーミングデータルックアップテーブルを使用して、キャッシュメモリ内のデータ値のキャッシュラインを検索し、優先的な再利用のために、検出されたキャッシュラインを識別するように、ストリーミングプレロード命令に応じて動作可能である。この配置は、適切なエントリを求めてキャッシュの各ウェイを検索する必要がないので、優先的な再利用のためにキャッシュラインを標識するプロセスを簡略化する。
代替的な配置において、ルックアップテーブルが提供されない場合、識別回路は、キャッシュメモリの各ウェイでキャッシュラインに格納された1つ以上のデータ値のアドレスに対応するキャッシュラインを検索することにより、キャッシュメモリ内のデータ値のキャッシュラインを検出するように動作可能である。
異なる形態のストリーミングデータルックアップテーブルもまた提供され得、これは、先にキャッシュされたデータ値の行と、nウェイのうちのどれにデータ値の行がキャッシュされたかの指示との間の関連性を格納する。この場合、(プレロード回路ではなく)識別回路は、キャッシュメモリのどのウェイに、プレロードされたデータ値が格納されたかを示すためのストリーミングルックアップテーブルにエントリを追加するように動作可能である。次いで、キャッシュ維持回路は、キャッシュ維持動作を行う際、キャッシュメモリのn個の対応するキャッシュラインのうちの1つ以上のいずれかの好適な再利用を示すストリーミングルックアップテーブルの任意のエントリを考慮して、再利用のために、それぞれのnウェイのn個の対応するキャッシュライン間で選択するように動作可能である。換言すると、この形態のストリーミングデータルックアップテーブルは、キャッシュの最近使用されたウェイを検出するための識別回路への近道を提供するのではなく、再利用に好適な識別を提供するために使用される。
この技術に伴う1つの潜在的な問題は、ストリーミングデータルックアップテーブルのキャッシュラインが、プロセッサがそれを終了する前に、新しいデータによって上書きされる可能性があるということである。これが生じる可能性を低減するには、キャッシュ維持回路は、再利用のために、それぞれのnウェイのn個の対応するキャッシュライン間で選択する上で、ストリーミングルックアップテーブルに最も新しく追加されたエントリを考慮することが可能である。このように、最も新しく追加されたエントリ(依然として使用中の可能性が高いもの)は、再利用に好適であるとして見なされず、それによって、現在処理されているデータ値が上書きされる可能性を低減する。
プレロード回路は、キャッシュメモリに、以下のアドレス
add=Acurr+x×C
を含む主メモリの一部に対応するデータ値を格納するように動作可能であり得、
識別回路は、優先的な再利用のために、以下のアドレスを含むメモリの一部に対応するデータ値を含む該キャッシュメモリの1つ以上のキャッシュラインを識別するように動作可能であり得、
add=Acurr−y×C
式中、Paddは、プレロード動作において、キャッシュメモリにプレロードされるべき主メモリの一部内のメモリアドレスを表し、Raddは、再利用識別動作において、再利用のために識別されるべきキャッシュラインに対応するメモリアドレスを表し、Acurrは、ストリーミングプレロード命令で特定されるメモリアドレスを表し、Cは、キャッシュメモリ内の各キャッシュラインの長さを表し、xおよびyは、整数である。
xおよび/またはyという値は既定の定数であり得、複数の値を取り得、そこでは、複数のキャッシュラインが、優先的な再利用のために、格納および/または標識される。例えば、xという値は、1および2(現在処理されているキャッシュラインの直後の2つのキャッシュラインが、プレロードされるべきことを示す)であり得る。同様に、yという値は、1および2(現在処理されているキャッシュラインの直後の2つのキャッシュラインが、優先的な再利用のために標識されるべきことを示す)であり得る。
代替的に、xおよび/またはyという値は、ストリーミングプレロード命令自体で特定され得、プログラマに、どれくらいの、およびどのストリーミングデータが、キャッシュにプレロードされるべきか、またはキャッシュからの可能な追い出しのために標識されるべきかを判断する能力を与える。
一部のアーキテクチャにおいて、キャッシュメモリの階層は、まず、最初にアクセスされるより小さく高速のキャッシュメモリ、およびデータが該より小さなキャッシュメモリに存在しない場合にアクセスされる、より大きく低速の(しかし、主メモリよりは依然として速い)キャッシュメモリを具備する。本発明の実施形態に照らして、さらなるキャッシュメモリを、主メモリとキャッシュメモリとの間に提供することができ、該さらなるキャッシュメモリは、キャッシュメモリと実質的に同一の構造を有することを理解されよう。具体的には、さらなるキャッシュメモリは、キャッシュメモリへの転送、および一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを備え得る。ストリーミングプレロード命令は、この場合、キャッシュメモリおよびさらなるキャッシュメモリのどれで、プレロード動作および追い出し識別動作が行われるべきかに関して特定し得る。
この場合、キャッシュコントローラは、ストリーミングプレロード命令が、プレロード動作および再利用識別動作がキャッシュメモリに関して行われるべきことを特定する場合、データ値をキャッシュメモリのキャッシュラインにプレロードし、優先的な再利用のために、キャッシュメモリの1つ以上のキャッシュラインを標識するように動作可能であり得る。また、キャッシュコントローラは、前記ストリーミングプレロード命令が、プレロード動作および再利用識別動作がさらなるキャッシュメモリに関して行われるべきことを特定する場合、データ値をさらなるキャッシュメモリのキャッシュラインにプレロードし、再利用のためにさらなるキャッシュメモリの1つ以上のキャッシュラインを標識するように動作可能であり得る。
単一のキャッシュコントローラを使用して、キャッシュメモリおよびさらなるキャッシュメモリの両方を制御することが可能であること、または代替的に、キャッシュメモリのそれぞれが、それ自身の専用キャッシュ制御回路を具備することが可能であることが理解されよう。
ストリーミングプレロード命令は、データ処理システムにおいて非特権モードで作動するアプリケーションソフトウェアによって実行可能であり得る。典型的には、プロセッサは、特権および非特権モードの両方を有する。多くのキャッシュ維持プログラム命令は、通常、特権モードでのみ行うことができる。ストリーミングプレロード命令の利点は、非特権モードでアップリケーションによって使用され得ることである。
本発明の別の態様によると、データ処理装置であって、
一連の命令を実行するための処理手段と、
一連の命令を実行する際の処理手段によるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリ手段と、
キャッシュコントロール手段と
を含み、
前記キャッシュコントロール手段は、
前記処理手段で受信されるストリーミングプレロード命令に応じて、主メモリから、前記キャッシュメモリ手段の1つ以上のキャッシュラインにデータ値を格納するためのプレロード手段と、
前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリ手段の1つ以上のキャッシュラインを識別するための識別手段と、
キャッシュメモリ手段のキャッシュラインに対して、前記識別手段によって生成される、任意の再利用に好適な識別を考慮して、再利用のために1つ以上のキャッシュラインの選択が行われる間に、キャッシュ維持動作を実施するためのキャッシュ維持手段と、を備える、データ処理装置が提供される。
本発明の別の態様によると、一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリを動作させる方法であって、
前記プロセッサで受信されるストリーミングプレロード命令に応じて、主メモリから前記キャッシュメモリの1つ以上のキャッシュラインに、データ値を格納するステップと、
前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリの1つ以上のキャッシュラインを識別するステップと、
キャッシュメモリのキャッシュラインに対する前記識別ステップによって生成される、任意の再利用に好適な識別を考慮して、再利用のための1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するステップと、を含む方法が提供される。
本発明の種々の他の態様および特徴は、請求項で定義され、コンピュータプログラム製品を含む。
本発明の上記および他の目的、特徴、および利点は、添付の図面と併せて読まれるべきである、以下の例示的な実施形態の詳細な説明から明らかとなろう。
以下、本発明の実施形態を、ほんの一例として、添付の図面を参照して、説明する。
主メモリとレベル1およびレベル2のキャッシュメモリとを有するデータ処理装置の概略図である。 プロセッサによってキャッシュおよび処理されるデータのストリームの概略図である。 キャッシュメモリの概略図である。 代替的なキャッシュメモリの概略図である。 データ値をキャッシュメモリにプレロードし、好適な再利用のためにキャッシュメモリのキャッシュラインを標識するためのプロセスを図示する、概略的なフローチャートである。 データ値がプロセッサによってアクセスされる際の、キャッシュラインの更新を行うためのプロセスを図示する、概略的なフローチャートである。
図1を参照すると、データ処理装置1が概略的に図示されている。データ処理装置1は、データ処理命令を実行するための中央処理装置10と、データを格納するための主メモリ20と、中央処理装置10による利用のためにデータ値を一時的に格納するためのキャッシュメモリ30、40と、を備える。主メモリ20は、大容量だが、低速アクセス、小容量ストレージである。データへの高速アクセスを可能にするために、主メモリ20に格納されたデータのサブセットのコピーを、レベル2のキャッシュ40に格納する。レベル2のキャッシュ40は、主メモリ20よりもはるかに小さい容量のストレージを提供するが、はるかに迅速にアクセスすることができる。さらに、レベル1のキャッシュ30もまた、この場合提供され、同様に、レベル2のキャッシュ40よりも小さな容量のストレージを提供するが、アクセス時間はより高速である。
中央処理装置10が特定のデータ値を要求する場合、レベル1のキャッシュ30が最初にチェックされ(データ値が実際にレベル1のキャッシュ30に存在する場合、データ値への最も高速の可能なアクセスを提供するので)、レベル1のキャッシュ30に存在する場合(レベル1のキャッシュヒット)、データ値は、中央処理装置10によって読み取りおよび使用される。この場合、レベル2のキャッシュ40または主メモリ20のいずれにもアクセスする必要はない。しかしながら、データ値がレベル1のキャッシュ30に存在しない場合(レベル1のキャッシュミス)、レベル2のキャッシュ40がチェックされ、データ値が存在する場合(レベル2のキャッシュヒット)、中央処理装置10によって読み取りおよび使用される。この場合、レベル1のキャッシュ30およびレベル2のキャッシュ40の両方にアクセスする必要があるが、主メモリ20にアクセスする必要はない。要求されたデータ値が、レベル1キャッシュ30にもレベル2キャッシュ40にも存在しない場合(レベル2のキャッシュミス)にのみ、主メモリ20にアクセスして、データ値を取得する必要がある。
レベル1のキャッシュ30は、キャッシュライン単位でデータ値を格納するキャッシュメモリ32と、中央処理装置10によるキャッシュメモリ32へのアクセスを制御するキャッシュコントローラ34と、を備える。キャッシュコントローラ34は、中央処理装置10によって実行されているストリーミングプレロード命令に応答して、主メモリ20からキャッシュメモリ32の1つ以上のキャッシュラインにデータ値の行を格納する、プレロード回路35を備える。キャッシュコントローラ34はまた、ストリーミングプレロード命令に応答して、優先的な再利用のためにキャッシュメモリ32の1つ以上のキャッシュラインを識別する識別回路36と、キャッシュメモリ32のキャッシュラインに対して前記識別回路36によって生成される、任意の好適な再利用の識別を考慮して、再利用のために1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能であるキャッシュ維持回路37と、を備える。
レベル1のキャッシュ30と同様に、レベル2のキャッシュ40は、キャッシュライン単位でデータ値を格納するキャッシュメモリ42と、中央処理装置10によるキャッシュメモリ42へのアクセスを制御するキャッシュコントローラ44と、を備える。キャッシュコントローラ44は、中央処理装置10によって実行されているストリーミングプレロード命令に応答して、主メモリ20からキャッシュメモリ42の1つ以上のキャッシュラインにデータ値を格納する、プレロード回路45を備える。キャッシュコントローラ44はまた、ストリーミングプレロード命令に応答して、優先的な再利用のためにキャッシュメモリ42の1つ以上のキャッシュラインを識別する識別回路46と、キャッシュメモリ42のキャッシュラインに対して識別回路46によって生成される、任意の好適な再利用の識別を考慮して、再利用のために1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能であるキャッシュ維持回路47と、を備える。
このように、ストリーミングプレロード命令を含むプログラムコードを使用して、主メモリ20からレベル1のキャッシュ30およびレベル2のキャッシュ40の両方にデータ値をプレロードさせ、また、優先的な再利用のために、レベル1のキャッシュ30およびレベル2のキャッシュ40のそれぞれのキャッシュメモリ32、42のキャッシュラインを標識させることができ、これによって、ストリーミングデータが、キャッシュ内の有用なデータを上書きするという問題を低減する。この技術の変形を応用して、レベル1のキャッシュ30およびレベル2のキャッシュ40のうちのどちらかにのみ関して、優先的な再利用のためにプレロードおよび標識することが可能であることが理解されよう。
キャッシュメモリは、nウェイセットアソシエイティブキャッシュメモリであり得る。これは、キャッシュメモリは、n個(nは、例えば、4といった正の整数)のセクション、またはウェイに論理的に分割されることを意味する。キャッシュメモリの各ウェイは、1組のキャッシュラインを備え、各ウェイの各キャッシュラインは、インデックス値を有し、他方のウェイのそれぞれの対応するキャッシュラインに関連付けられる。各ウェイの関連付けられたキャッシュラインは、それぞれ、同一のインデックス値を有する。主メモリからのデータ値がキャッシュメモリに格納される際、それらは、格納されるべきデータ値の主メモリ内の場所に対応するメモリアドレスに応じて、キャッシュラインに割り当てられる。主メモリからのデータ値のいかなる所与の行も、特定のインデックス値を有するキャッシュラインに格納することができ、したがって、キャッシュメモリのnウェイのうちの任意の1つの特定のキャッシュラインに格納することができる。nの値が大きくなればなるほど、キャッシュミスの可能性は低くなるが、キャッシュ内のデータ値にアクセスするために必要な処理の量が多くなる(データ値の特定の行を、より多くのキャッシュラインに格納することができ、所与のデータ値に対してキャッシュのより多くのキャッシュラインのチェックを余儀なくさせるため)。
キャッシュエントリの一般形態は以下のとおりである。
Figure 2010198610
データ値は、主メモリからフェッチされたもの、または主メモリにその後保存する前にプロセッサによってキャッシュメモリに格納されたものである。インデックスおよびディスプレースメントを伴うタグは、データ値が対応する、主メモリのメモリアドレスを定義する。具体的には、メモリアドレスの最上位ビット(MSB)がタグを形成し、真中のビットがインデックスを形成し、最下位ビットがディスプレースメントを形成する。例えば、32ビットメモリの場合、タグはメモリアドレスの最初の20ビットから成り得、インデックスはメモリアドレスの次の7ビットから成り得、ディスプレースメントはメモリアドレスの最後の5ビットから成り得る。最終的に、有効ビットは、キャッシュラインが有効データを含むかどうかを示す。
効果的には、実際にキャッシュに格納される値は、データ値、タグアドレス、有効ビット、および任意選択で(以下に述べるとおり)再利用に好適なフラグである。インデックスは、キャッシュメモリのウェイを構成するキャッシュラインの配列内のキャッシュラインの位置によって表され、よって、キャッシュの単一の行(各ウェイ)に一意的であり、したがって、この値は、データが入れられた、または入れられる、キャッシュの行を表す。ディスプレースメントは、格納されたキャッシュライン内の位置を表す(通常、キャッシュライン内のデータ値のいくつかのブロックのうちのどれが要求されるかを示すために使用される)。タグアドレスは、データ値に関連してキャッシュラインに格納され、キャッシュでは、メモリアドレスのMSBに対してアクセスをチェックして、所望のデータ値がキャッシュ内に存在するかどうかを判断する。具体的には、タグを使用して、キャッシュのどのウェイ(もしあれば)に、データ値の特定の行が格納されたかを判断する。
図2を参照すると、代表的なデータ値のストリームが概略的に図示される。中央処理装置10による処理が現在行われている、データストリーム内の位置210は、アドレスAcurrを有し、このアドレスは、中央処理装置10のレジスタRに格納される。アドレスAcurrにおいてデータ値を含むデータ値のキャッシュラインは、レベル1のキャッシュ30に存在する。プレロード回路35は、ストリーミングプレロード命令に応答して、プロセッサレジスタRに格納された現在のアドレスAcurrに基づき、レベル1のキャッシュ30にプレロードされるデータ値のキャッシュラインを計算する。本例において、プレロードされるキャッシュラインは、以下のメモリアドレスを含み、
add=Acurr+x×C (式1)
式中、Paddは、プレロード動作において、キャッシュメモリにプレロードされる主メモリの一部内のメモリアドレスを表し、Acurrは、ストリーミングプレロード命令で特定され得る、処理が現在行われているデータストリーム内の現在のアドレスを表し、Cは、キャッシュメモリ内の各キャッシュラインの長さを表し、xは整数である。
具体的には、プレロード回路35は、1つ以上のキャッシュライン(キャッシュラインの数はxの値に依存する)のサイズを現在のアドレスに加算することによって、プレロードされるデータ値の行のメモリアドレスを決定し、このように計算されたアドレスを含むメモリの一部からのデータ値の行をプレロードする。この決定はいくつかの方法で行われ得ることが理解されよう。例えば、現在のアドレスは、現在処理されているキャッシュラインの開始アドレス、または現在処理されているキャッシュラインの終了アドレス、または現在処理されているキャッシュライン内の任意の他のアドレスを表す場合もある。現在のアドレスが現在処理されているキャッシュラインの開始位置を示す場合、上の式(式1)は、プレロードされるデータ値の行の開始アドレスを直接決定する。現在のアドレスが現在処理されているキャッシュライン内の別の位置を示す場合、上の式(式1)は、プレロードされるデータ値の行内の位置のメモリアドレスを提供し、プレロードされるデータ値の行の開始位置を決定するために追加の動作が必要となる。
さらに、識別回路36は、ストリーミングプレロード命令に応答して、プロセッサレジスタRに格納された現在のアドレスAcurrに基づき、好適な再利用のために標識される、レベル1のキャッシュ30内のキャッシュラインのメモリアドレスを計算する。本例において、好適な再利用のために標識されるキャッシュラインは、以下のメモリアドレスを含み、
add=Acurr−y×C (式2)
式中、Raddは、再利用識別動作において、優先的な再利用のために識別されるキャッシュラインに対応するメモリアドレスを表し、Acurrは、ストリーミングプレロード命令で特定され得る、処理が現在行われているデータストリーム内の現在のアドレスを表し、Cは、キャッシュメモリ内の各キャッシュラインの長さを表し、yは整数である。
具体的には、プレロード回路35は、現在のアドレスから1つ以上のキャッシュライン(キャッシュラインの数はyの値に依存する)のサイズを減算することによって、優先的な再利用のために標識されるキャッシュラインを決定し、優先的な再利用のために、このように計算されたアドレスに関連付けられたデータ値を含むキャッシュラインを標識する。上述のプレロードアドレスの決定と同様に、好適な再利用のためのキャッシュラインの決定は、いくつかの方法で行われ得ることが理解されよう。例えば、現在のアドレスは、現在処理されているキャッシュライン内のデータ値の開始アドレス、または現在処理されているキャッシュライン内のデータ値の終了アドレス、または現在処理されているキャッシュラインの中間のデータ値のアドレスを表す場合もある。現在のアドレスが現在処理されているキャッシュラインの開始位置を示す場合、上の式(式2)は、好適な使用のために標識されるキャッシュラインの開始アドレスを直接決定する。現在のアドレスが現在処理されているキャッシュライン内の別の位置を示す場合、上の式(式2)は、好適な再利用のために標識されるキャッシュライン内のメモリアドレスを提供し、キャッシュラインの開始位置を決定するために追加の動作が必要となる。
このように、現在のメモリアドレスAcurrは、プレロードされるデータ、および破棄されるデータを定義するために使用される。
キャッシュラインが、キャッシュラインに存在する、または配置されるデータ値のメモリアドレスの最初の27ビット(タグ+インデックス)によって識別することができる、ならびに、したがってメモリアドレスの最初の27ビットが、キャッシュライン内に提供されるすべてのデータ値に対して同一であるという事実により、キャッシュラインの開始アドレス、ひいてはキャッシュラインの識別を、プレロード開始アドレスおよび優先的な再利用の標識開始アドレスに対して、それぞれPaddおよびRaddの最初の27ビットのみを採用することによって、導くことができることが理解されよう。他のアーキテクチャにおいて、採用されるビットの数は異なる場合があるが、動作の原理は依然として適用される。
図3を参照すると、例示的なキャッシュメモリ構造が概略的に図示されている。キャッシュメモリは、上述のとおり、4つのキャッシュウェイ320、340、360、380と、ストリーミングプレロード命令に応じて最近キャッシュされたデータ値の行が、キャッシュメモリのどのウェイに格納されたかを識別するためのルックアップテーブル310と、を備える。
キャッシュメモリの第1のウェイ(ウェイ0)320は、第1の複数のキャッシュラインを備え、それぞれが、タグ部分322、データ部分324、有効フラグ326、および任意選択で再利用に好適なフラグ328を有する。キャッシュメモリの第2のウェイ(ウェイ1)340は、第2の複数のキャッシュラインを備え、それぞれが、タグ部分342、データ部分344、有効フラグ346、および任意選択で再利用に好適なフラグ348を有する。キャッシュメモリの第3のウェイ(ウェイ2)360は、第3の複数のキャッシュラインを備え、それぞれが、タグ部分362、データ部分364、有効フラグ366、および任意選択で再利用に好適なフラグ368を有する。最後に、キャッシュメモリの第4のウェイ(ウェイ3)380は、第4の複数のキャッシュラインを備え、それぞれが、タグ部分382、データ部分384、有効フラグ386、および任意選択で再利用に好適なフラグ388を有する。ライトバックキャッシュの場合、各ウェイの各キャッシュラインは、キャッシュラインに格納された値が変更されたが、主メモリには上書きされていないことを示すための、ダーティフラグ(図示せず)も有する。
第1、第2、第3、および第4の複数のキャッシュラインの各々は、同一の数のキャッシュラインを備え、各ウェイの各行は、他のウェイの各々対応する行のインデックスと同一の、関連付けられたインデックスを有する。タグ部分は、データ部分に格納されたデータ値に対応するメモリアドレスのMSBを格納し、キャッシュ内のデータ値を検出するために使用される。各キャッシュラインの有効ビットは、有効データがデータ部分に格納されたかどうかを識別する。上述のとおり、有効フラグは、データのキャッシュラインを有効、ひいては再利用に好適であると標識するように、ストリーミングプレロード命令に応じて設定することができる。任意選択で、(有効ビットを使用する代わりに)再利用に好適なフラグを、キャッシュラインが再利用に好適であることを明示的に示すように提供することができ、該再利用に好適なフラグは、ストリーミングプレロード命令に応じて設定される。
ストリーミングデータルックアップテーブル310は、先にキャッシュされたデータ値の行(具体的には、ストリーミングプレロード命令に応じてキャッシュされたもの)と、nウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。具体的には、ストリーミングデータルックアップテーブル310は、複数の列を備え、それぞれが、参照部分312と、ウェイ指示部分314と、を有する。データ値が、ストリーミングプレロード命令に応じて、例えば、第1のウェイ320のキャッシュラインにプレロードされる場合、ストリーミングデータルックアップテーブル310は更新され、参照部分312にキャッシュラインの識別を示し、ウェイ指示部分314に、該キャッシュラインの格納されたデータ値が第1のウェイ320に見出され得ることを示す。同一のプロセスを使用して、第2、第3、および第4のウェイの各々においてプレロードされたデータ値の場所の記録を保持することができる。参照部分312に提供されたキャッシュラインの識別は、例えば、キャッシュラインのインデックス、およびキャッシュラインに格納されたタグ値のいくつかのビットであり得る。
キャッシュラインが、ストリーミングプレロード命令に応じて、優先的な再利用のために標識される際、識別回路は、好適な再利用のために標識されるキャッシュラインに対応するメモリアドレスの一部と、ストリーミングデータルックアップテーブル310の参照部分312とを比較することができる。このように、ストリーミングデータが該キャッシュラインに最近格納されたかどうか、また格納された場合、キャッシュのどのウェイに、ストリーミングデータが格納されたかを判断する。次いで、ストリーミングデータルックアップテーブル310に示されるウェイのキャッシュラインを、有効ビットもしくは上述の再利用に好適なフラグを設定することにより、識別回路によって追い出しに好適なものとして、標識することができる。
上述のストリーミングデータルックアップテーブルは、識別回路が4つのウェイの各々を確認して、再利用に好適な標識をするためのキャッシュラインを見出す必要性を回避(または少なくとも低減)するための、任意選択的な(しかし有利な)メカニズムであることが理解されよう。ルックアップテーブル310は、最も最近のエントリの小さなキャッシュに過ぎず、概して、キャッシュウェイ320〜380よりもはるかに小さいことに留意されたい。また、所要のキャッシュラインがストリーミングデータルックアップテーブルに存在しない場合、識別回路は、任意選択で、キャッシュの各ウェイをチェックして、どのウェイに、好適な再利用のために標識されるキャッシュラインが格納されたかを判断し得ることを理解されよう。
同様に、上に説明するストリーミングデータルックアップテーブルが提供されない場合、識別回路は単に、好適な再利用のために標識されるキャッシュラインに対応するインデックスを決定し、該インデックスに先に格納され、現在上書きすることができる、データ値のメモリアドレスのタグ部分に対して、キャッシュの各ウェイのタグ部分をチェックする。整合が見出される場合、整合するキャッシュラインが好適な再利用のために標識される。
図4を参照すると、代替的な形態のストリーミングデータルックアップテーブルを利用するキャッシュ構造が概略的に図示されている。図3と同様に、図4のキャッシュメモリは、上述のとおり、4つのキャッシュウェイ420、440、460、480と、キャッシュメモリのどのウェイに、ストリーミングプレロード命令に応じて最近キャッシュされたデータ値の行が格納されたかを識別するためのルックアップテーブル410を備える。
キャッシュメモリの第1のウェイ(ウェイ0)420は、第1の複数のキャッシュラインを備え、それぞれ、タグ部分422、データ部分424、および有効フラグ426を有する。キャッシュメモリの第2のウェイ(ウェイ1)440は、第2の複数のキャッシュラインを備え、それぞれ、タグ部分442、データ部分444、および有効フラグ446を有する。キャッシュメモリの第3のウェイ(ウェイ2)460は、第3の複数のキャッシュラインを備え、それぞれ、タグ部分462、データ部分464、および有効フラグ466を有する。最後に、キャッシュメモリの第4のウェイ(ウェイ3)480は、第4の複数のキャッシュラインを備え、それぞれ、タグ部分482、データ部分484、および有効フラグ486を有する。図3と同様に、ライトバックキャッシュの場合、各ウェイの各キャッシュラインは、キャッシュラインに格納された値が変更されたが、主メモリに書き込まれていないことを示すためのダーティフラグ(図示せず)も有する。キャッシュラインの各々のタグ部分、データ部分、および有効ビットの構造および動作は、図3を参照して上に説明したとおりである。しかしながら、図4においては、有効ビットも任意選択的な再利用に好適なフラグのいずれも、キャッシュラインが再利用に好適であることを示すために使用されない。代わりに、ストリーミングデータルックアップテーブル410が、この機能を果たす。
図3と同様に、ストリーミングデータルックアップテーブル410は、先にキャッシュされたデータ値の行(具体的には、ストリーミングプレロード命令に応じてキャッシュされたもの)と、nウェイのうちのどれにそれらのデータ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能である。具体的には、ストリーミングデータルックアップテーブル410は、複数の列を備え、それぞれが、ストリーミングプレロードデータが該インデックス位置でキャッシュに格納されたことを示すために使用されるインデックス部分412と、キャッシュのどのウェイに(該インデックスで)ストリーミングプレロードデータが格納されたかを示すために使用されるウェイ指示部分414と、を有する。データ値が、ストリーミングプレロード命令に応じて、例えば、第1のウェイ420のキャッシュラインにプレロードされる場合、ストリーミングデータルックアップテーブル410は更新され、インデックス部分412に、キャッシュラインのインデックスがプレロードされていること(ひいてはデータ値の行がプレロードされるキャッシュ内の列位置)を示し、ウェイ指示部分414に、格納されたデータ値を第1のウェイ420に見出し得る指示を示す。同一のプロセスを使用して、第2、第3、および第4のウェイの各々においてプレロードされたデータ値の場所の記録を保持することができる。
キャッシュラインがキャッシュ維持回路によって再利用される際、キャッシュ維持回路は、ストリーミングデータルックアップテーブル410を参照して、再利用のために考慮される(各ウェイの)キャッシュラインのインデックスが、テーブル内に存在するかどうかを判断し、存在する場合、該インデックス位置でキャッシュのどのウェイが再利用に好適であるかを判断する。したがって、図4のストリーミングデータルックアップテーブルは、有効ビットもしくは図3の再利用に好適なフラグの代わりに再利用に好適な識別として機能する。
任意選択で、ストリーミングデータルックアップテーブル410の最も最近に追加されたエントリは、再利用に好適となるキャッシュラインを決定する目的で無視され、プロセッサによって現在使用中である可能性が高いキャッシュラインに関係する、最近追加されたエントリが、キャッシュ維持動作によって上書きされる可能性を低減することができる。これを実施することが可能ないくつかの方法が存在する。例えば、ルックアップテーブル内のエントリは、古い順のリスト形態である可能性があり、リストのある位置のエントリ(具体的には、新しいエントリが追加される、リストの最後またはその近く)は、再利用のためにキャッシュラインを選択する目的で無視される可能性がある。
図4のストリーミングデータルックアップテーブル内のエントリが、キャッシュラインを選択および再利用するように、キャッシュ維持回路によって使用されている場合、(実際にはストリーミングされたデータをもはや含まない場合)該キャッシュラインが、今後、優先的に再利用される可能性を低減するために、このエントリをテーブルから削除することが望ましい。エントリは、完全に削除されるか、またはストリーミングデータルックアップテーブル内で使用されなくなったものとして標識され得る。
ストリーミングルックアップテーブル410は、インデックス部分およびウェイ部分を各々有する複数の行を格納するテーブルとして図示されているが、インデックスによって配置されたウェイ値の単純な配列を使用することも可能である。
図5を参照すると、ストリーミングプレロード命令の発行に応じた、キャッシュコントローラの動作例が概略的に図示されている。最初に、ステップS1において、現在実行しているプログラムコード内に提供されるストリーミングプレロード命令が、プロセッサによって発行および実行される。ステップS2において、プロセッサは、主メモリからキャッシュメモリへのデータ値のプレロードを制御するため、および優先的な再利用のためのキャッシュメモリ内のキャッシュラインの標識を制御するためのストリーミングプレロード命令に基づいて、制御信号を生成する。ステップS3において、キャッシュコントローラは、図4においてステップS4、S5、S6、およびS7で表されるプレロードシーケンス、ならびに図4においてステップS8、S9、およびS10で表される再利用識別シーケンスを開始する。
具体的には、ステップS4において、キャッシュコントローラのプレロード回路は、プロセッサによって生成される制御信号から、キャッシュメモリにプレロードされる主メモリ(またはより低レベルのキャッシュ)の一部を決定する。上に説明するとおり、プレロードされるデータ値のメモリアドレスは、現在処理されているデータ値のストリーム内の現在のメモリアドレスに基づいて、参照的に決定される。次いで、ステップS5において、主メモリ(またはより低レベルのキャッシュ)の決定された一部は、キャッシュメモリにプレロードされる。次いで、ステップS6において、ステップS5でプレロードされたキャッシュラインを示すように、ストリーミングデータルックアップテーブル(LUT)が更新される。プレロードシーケンスは、ステップS7で終了する。
再利用識別シーケンスは、プレロードシーケンスと並行して行われるか、または代替的に、プレロードシーケンスの前もしくは後に行われ得る。いずれの場合においても、再利用識別シーケンスおよびプレロードシーケンスの両方は、ストリーミングプレロード命令によってトリガされる。再利用識別シーケンスでは、ステップS8において、識別回路は、プロセッサによって生成された制御信号から、再利用に好適であるキャッシュメモリ内の1つ以上のキャッシュラインを決定する。上述のとおり、好適な再利用のために標識されるデータ値のメモリアドレスは、現在処理されているデータ値のストリーム内の現在のメモリアドレスに基づいて、参照的に決定される。次いで、ステップS9において、識別されたキャッシュラインは、優先的な再利用のために標識される。この標識は、キャッシュラインの再利用に好適な領域でのフラグを設定する形態、またはキャッシュラインの有効フラグを設定する形態を採って、該キャッシュラインが有効データを含んでいない(したがって、再利用することができる)ことを示し得る。さらに、再利用に好適な識別を提供するためにストリーミングデータルックアップテーブルを使用する際、該テーブルは、好適な再利用のために標識されるキャッシュライン(プレロードされているキャッシュラインであり得る)に対応するエントリによって更新される。再利用識別シーケンスは、ステップS10で終了する。
図6を参照すると、キャッシュメモリが新しいデータによって更新される際の、キャッシュコントローラの動作例が概略的に図示されている。ステップS11において、キャッシュコントローラは、キャッシュラインの更新が必要であることを判断する。これは、プロセッサがキャッシュメモリ内のデータ値にアクセスしようとした際のキャッシュミスによるか、またはプロセッサによって生成されたデータ値のキャッシュメモリへの書き込み命令に応じて生じ得る。ステップS12において、キャッシュメモリに格納されるデータ値に対応するキャッシュラインインデックスが取得される。上述のとおり、キャッシュインデックスは、データ値に対応するメモリアドレスの特定の部分(つまり、データ値が主メモリ内に格納されている、または格納されるべきメモリアドレス)に対応する。図3に示される4ウェイセットアソシエイティブキャッシュメモリの場合、特定のインデックスを有するデータ値の行は、4つのキャッシュライン(キャッシュウェイにつき1つの適格なキャッシュライン)のどれにも格納することができる。ステップS13において、キャッシュの各ウェイをチェックし、再利用に好適な指示が、特定のインデックスを有するキャッシュラインに適用されたかどうかを判断する。代替として、ストリーミングデータルックアップテーブルが、どのキャッシュラインが再利用に好適かを示す機能を提供している場合、ストリーミングデータルックアップテーブルは、キャッシュの特定のウェイが、該インデックスに関して再利用に好適であるかどうかを判断するために、参照される。次いで、データ値の行が格納されるキャッシュウェイ、ひいてはキャッシュラインが、ステップS13において下された判断に基づいて、ステップS14で選択される。具体的には、再利用に好適な指示が適用されたキャッシュウェイのキャッシュラインは、再利用に好適な指示が何も適用されていないものよりも優先的に選択される。
ステップS14において、データ値が格納されるべきキャッシュラインが選択されると、ステップS15において、選択されたキャッシュラインに現在格納されているデータ値に関して、主メモリへのライトバックが必要かどうかが判断される。ライトバックキャッシュにおいて、データ値は、それらがキャッシュメモリから追い出された際に主メモリに戻るだけで、この理由によりステップS15が必要となる。このステップは、キャッシュメモリ内のデータ値の更新が主メモリ内のデータ値も更新することによって、主メモリにも反映される、ライトスルーキャッシュには必要ではない。
ステップS15は、ダーティフラグが、追い出されるべきキャッシュラインに関して設定されたかどうかを判断することによって行われる。ダーティフラグは、キャッシュライン内のデータ値が変更された際に、キャッシュコントローラによって設定され、それらの変更を、キャッシュラインの再利用の際に主メモリに反映する必要があることを示す。ステップS15において、ダーティフラグが設定されたと判断された場合、該プロセスは、ステップS16に移動し、ここで、再利用されるべきキャッシュラインに現在存在するデータ値の行が主メモリに格納される。ステップS17において、データ値の新しい行が選択されたキャッシュラインに書き込まれ、キャッシュラインのタグ部分がそれに従って更新される。キャッシュライン更新プロセスは、ステップS18で終了する。
本明細書において、添付の図面を参照して、本発明の例示的な実施形態を詳細に記載してきたが、本発明は、これらの正確な実施形態に限定されず、添付の請求項によって定義される本発明の範囲および精神から逸脱することなく、当業者によって種々の変更および修正を実施することができることを理解されたい。
1 データ処理装置
10 中央処理装置
20 主メモリ
30、32、40、42 キャッシュメモリ
34、44 キャッシュコントローラ
35、45 プレロード回路
36、46 識別回路
37、47 キャッシュ維持回路

Claims (19)

  1. データ処理装置であって、
    (i)一連の命令を実行するように動作可能なプロセッサと、
    (ii)前記一連の命令を実行する際に、前記プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有するキャッシュメモリと、
    (iii)キャッシュコントローラと
    を備え、
    前記キャッシュコントローラは、
    主メモリから前記キャッシュメモリの1つ以上のキャッシュラインにデータ値を格納するように、前記プロセッサで受信されるストリーミングプレロード命令に応じて動作可能なプレロード回路と、
    優先的な再利用のために前記キャッシュメモリの1つ以上のキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能な識別回路と、
    前記キャッシュメモリのキャッシュラインのための前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のための1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するように動作可能なキャッシュ維持回路と、を備える、データ処理装置。
  2. (i)前記ストリーミングプレロード命令は、前記プロセッサによって現在処理されているデータ値を含む前記キャッシュメモリ内の現在のキャッシュラインに対応するメモリアドレスを特定し、
    (ii)前記プレロード回路は、前記現在のキャッシュラインのデータ値を追従する、前記主メモリ内のデータ値を前記キャッシュメモリの1つ以上のキャッシュラインに格納するように動作可能であり、
    (iii)前記識別回路は、優先的な再利用のために、前記現在のキャッシュラインの前記データ値に先行する前記主メモリからのデータ値を含む前記キャッシュメモリの1つ以上のキャッシュラインを識別するように動作可能である、請求項1に記載のデータ処理装置。
  3. (i)前記ストリーミングプレロード命令は、前記キャッシュメモリで利用可能となるストリーミングデータの量を特定し、
    (ii)前記プレロード回路は、前記ストリーミングプレロード命令で特定される前記ストリーミングデータの量に従って決定される前記主メモリからのデータの量を、前記キャッシュメモリにプレロードするように動作可能である、請求項1に記載のデータ処理装置。
  4. (i)前記ストリーミングプレロード命令は、前記キャッシュメモリで利用可能となるストリーミングデータの量を特定し、
    (ii)前記識別回路は、優先的な再利用のために、前記ストリーミングプレロード命令で特定される前記ストリーミングデータの量に従って決定される、いくつかのキャッシュラインを識別するように動作可能である、請求項1に記載のデータ処理装置。
  5. (i)前記キャッシュメモリの前記キャッシュラインの各々は、それに関連付けられた、前記キャッシュラインが有効データを含むかどうかを示すために使用される有効ビットを有し、
    (ii)前記識別回路は、該キャッシュラインが再利用に好適な場合、キャッシュラインの前記有効ビットを、前記キャッシュラインが有効データを含まないことを示すべく設定するように動作可能であり、
    (iii)前記キャッシュ維持回路は、再利用のために、該キャッシュラインが有効データを含まないことを示すように設定される有効ビットを有するキャッシュラインを優先的に選択するように動作可能である、請求項1に記載のデータ処理装置。
  6. (i)前記キャッシュメモリの前記キャッシュラインの各々は、それに関連付けられた、前記識別回路によって生成される再利用に好適な識別に応じて設定される、再利用に好適な領域を有し、
    (ii)前記キャッシュ維持回路は、再利用のために、該キャッシュラインが再利用に好適であることを示すように設定される、再利用に好適な領域を有するキャッシュラインを優先的に選択するように動作可能である、請求項1に記載のデータ処理装置。
  7. (i)前記キャッシュメモリは、nウェイセットアソシエイティブキャッシュメモリであり、
    (ii)前記キャッシュ維持回路は、前記キャッシュメモリのn個の対応するキャッシュラインのうちの1つ以上のいずれに対しても、前記識別回路によって生成される任意の再利用に好適な識別を考慮して、再利用のためにそれぞれのnウェイの前記n個の対応するキャッシュライン間で選択するように動作可能である、請求項1に記載のデータ処理装置。
  8. (i)先にキャッシュされたデータ値の行と、前記nウェイのうちのどれに前記データ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能なストリーミングデータルックアップテーブルを備え、
    (ii)前記識別回路は、前記ストリーミングデータルックアップテーブルを使用して前記キャッシュメモリ内の前記データ値のキャッシュラインを検出し、優先的な再利用のための前記検出されたキャッシュラインを識別するように、前記ストリーミングプレロード命令に応じて動作可能であり、
    (iii)前記プレロード回路は、前記キャッシュメモリのどのウェイに、前記プレロードされたデータ値が格納されたかを示すための前記ストリーミングルックアップテーブルにエントリを追加するように動作可能である、請求項7に記載のデータ処理装置。
  9. 前記識別回路は、前記キャッシュメモリで前記キャッシュラインに格納された1つ以上のデータ値のアドレスに対応するキャッシュラインを検索することによって、前記キャッシュメモリ内の前記データ値のキャッシュラインを検出するように動作可能である、請求項7に記載のデータ処理装置。
  10. (i)先にキャッシュされたデータ値の行と、前記nウェイのうちのどれに前記データ値の行がキャッシュされたかの指示との間の関連性を格納するように動作可能なストリーミングデータルックアップテーブルを備え、
    (ii)前記識別回路は、前記キャッシュメモリのどのウェイに、前記プレロードされたデータ値が格納されたかを示すための前記ストリーミングルックアップテーブルにエントリを追加するように、動作可能であり、
    (iii)前記キャッシュ維持回路は、前記キャッシュメモリのn個の対応するキャッシュラインのうちの1つ以上のいずれかを示す前記ストリーミングルックアップテーブル内の任意のエントリを考慮して、再利用のためにそれぞれのnウェイの前記n個の対応するキャッシュライン間で選択するように動作可能である、請求項7に記載のデータ処理装置。
  11. 前記キャッシュ維持回路は、再利用のために、それぞれのnウェイの前記n個の対応するキャッシュライン間で選択する上で、前記ストリーミングルックアップテーブルの最も新しく追加されたエントリを考慮する、請求項10に記載のデータ処理装置。
  12. 前記プレロード回路は、前記キャッシュメモリに、以下のアドレス
    add=Acurr+x×C
    を含む主メモリの一部に対応するデータ値を格納するように動作可能であり、
    前記識別回路は、優先的な再利用のために、以下のアドレスを含むメモリの一部に対応するデータ値を含む前記キャッシュメモリの1つ以上のキャッシュラインを識別するように動作可能であり、
    add=Acurr−y×C
    式中、Paddは、プレロード動作において、前記キャッシュメモリにプレロードされるべき前記主メモリの一部内のメモリアドレスを表し、Raddは、再利用識別動作において、再利用のために識別されるべきキャッシュラインに対応するメモリアドレスを表し、Acurrは、前記ストリーミングプレロード命令で特定されるメモリアドレスを表し、Cは、前記キャッシュメモリ内の各キャッシュラインの長さを表し、xおよびyは、整数である、請求項2に記載のデータ処理装置。
  13. xおよび/またはyは、既定の定数である、請求項12に記載のデータ処理装置。
  14. xおよび/またはyは、前記ストリーミングプレロード命令で特定される、請求項12に記載のデータ処理装置。
  15. 前記データ処理装置は、
    (i)前記主メモリと前記キャッシュメモリとの間に提供される、さらなるキャッシュメモリを備え、
    前記さらなるキャッシュメモリは、前記キャッシュメモリへの転送、および前記一連の命令を実行する際の前記プロセッサによるアクセスのためのデータ値を格納するように動作可能な複数のキャッシュラインを有し、
    (ii)前記ストリーミングプレロード命令は、前記キャッシュメモリおよび前記さらなるキャッシュメモリのどれで、前記プレロード動作および追い出し識別動作が行われるべきかに関して特定し、
    (iii)前記キャッシュコントローラは、前記ストリーミングプレロード命令が、前記プレロード動作および再利用識別動作が前記キャッシュメモリに関して行われるべきことを特定する場合、データ値を前記キャッシュメモリのキャッシュラインにプレロードし、再利用のために前記キャッシュメモリの1つ以上のキャッシュラインを標識するように動作可能であるとともに、
    (iv)前記ストリーミングプレロード命令が、前記プレロード動作および前記再利用識別動作が前記さらなるキャッシュメモリに関して行われるべきことを特定する場合、データ値を前記さらなるキャッシュメモリのキャッシュラインにプレロードし、再利用のために前記さらなるキャッシュメモリの1つ以上のキャッシュラインを標識するように動作可能である、請求項1に記載のデータ処理装置。
  16. 前記ストリーミングプレロード命令は、非特権モードのデータ処理システムで作動するアプリケーションソフトウェアによって実行可能である、請求項1に記載のデータ処理装置。
  17. 前記キャッシュ維持動作は、ラインフィルである、請求項1に記載のデータ処理装置。
  18. データ処理装置であって、
    (i)一連の命令を実行するための処理手段と、
    (ii)前記一連の命令を実行する際の前記処理手段によるアクセスのためのデータ値を格納するための、複数のキャッシュラインを有するキャッシュメモリ手段と、
    (iii)キャッシュコントロール手段と
    を備え、
    前記キャッシュコントロール手段は、
    前記処理手段で受信されるストリーミングプレロード命令に応じて、主メモリから、前記キャッシュメモリ手段の1つ以上のキャッシュラインに、データ値を格納するためのプレロード手段と、
    前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリ手段の1つ以上のキャッシュラインを識別するための識別手段と、
    前記キャッシュメモリ手段のキャッシュラインに対して、前記識別手段によって生成される、任意の再利用に好適な識別を考慮して、再利用のために1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するためのキャッシュ維持手段と、を備える、データ処理装置。
  19. 一連の命令を実行する際のプロセッサによるアクセスのためのデータ値を格納するための複数のキャッシュラインを有するキャッシュメモリを動作させる方法であって、
    (i)前記プロセッサで受信されるストリーミングプレロード命令に応じて、主メモリから前記キャッシュメモリの1つ以上のキャッシュラインに、データ値を格納するステップと、
    (ii)前記ストリーミングプレロード命令に応じて、優先的な再利用のために、前記キャッシュメモリの1つ以上のキャッシュラインを識別するステップと、
    (iii)前記キャッシュメモリのキャッシュラインに対する前記識別するステップによって生成される、任意の再利用に好適な識別を考慮して、再利用のための1つ以上のキャッシュラインの選択が行われる間、キャッシュ維持動作を実施するステップと、を含む、方法。
JP2010022201A 2009-02-20 2010-02-03 データ処理装置および方法 Pending JP2010198610A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/379,440 US20100217937A1 (en) 2009-02-20 2009-02-20 Data processing apparatus and method

Publications (1)

Publication Number Publication Date
JP2010198610A true JP2010198610A (ja) 2010-09-09

Family

ID=41819235

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010022201A Pending JP2010198610A (ja) 2009-02-20 2010-02-03 データ処理装置および方法

Country Status (4)

Country Link
US (1) US20100217937A1 (ja)
JP (1) JP2010198610A (ja)
CN (1) CN101826056A (ja)
GB (1) GB2468007A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140477A (ja) * 2012-01-04 2013-07-18 Toyota Motor Corp 情報処理装置及びメモリアクセス管理方法

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2483903A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Instruction which specifies the type of the next instruction to be executed
JP2012203560A (ja) * 2011-03-24 2012-10-22 Toshiba Corp キャッシュメモリおよびキャッシュシステム
US8656137B2 (en) 2011-09-01 2014-02-18 Qualcomm Incorporated Computer system with processor local coherency for virtualized input/output
US9092345B2 (en) * 2013-08-08 2015-07-28 Arm Limited Data processing systems
US20150278981A1 (en) 2014-03-27 2015-10-01 Tomas G. Akenine-Moller Avoiding Sending Unchanged Regions to Display
CN104331377B (zh) * 2014-11-12 2018-06-26 浪潮(北京)电子信息产业有限公司 一种多核处理器系统的目录缓存管理方法
CN104850508B (zh) * 2015-04-09 2018-02-09 深圳大学 基于数据局部性的访存方法
EP3665580B1 (en) * 2017-08-08 2023-03-08 Continental Automotive Technologies GmbH Method of operating a cache
US10606752B2 (en) 2017-11-06 2020-03-31 Samsung Electronics Co., Ltd. Coordinated cache management policy for an exclusive cache hierarchy
CN111538677B (zh) * 2020-04-26 2023-09-05 西安万像电子科技有限公司 数据处理方法及装置
CN112380013B (zh) * 2020-11-16 2022-07-29 海光信息技术股份有限公司 缓存预载方法、装置、处理器芯片及服务器
CN113791989B (zh) * 2021-09-15 2023-07-14 深圳市中科蓝讯科技股份有限公司 基于cache的缓存数据处理方法、存储介质及芯片
CN114297100B (zh) * 2021-12-28 2023-03-24 摩尔线程智能科技(北京)有限责任公司 用于缓存的写策略调整方法、缓存装置及计算设备

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732242A (en) * 1995-03-24 1998-03-24 Silicon Graphics, Inc. Consistently specifying way destinations through prefetching hints
TW501011B (en) * 1998-05-08 2002-09-01 Koninkl Philips Electronics Nv Data processing circuit with cache memory
US6766419B1 (en) * 2000-03-31 2004-07-20 Intel Corporation Optimization of cache evictions through software hints
AU2001294856A1 (en) * 2000-09-29 2002-04-08 Sun Microsystems, Inc. System and method for identifying and managing streaming-data
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US20060090034A1 (en) * 2004-10-22 2006-04-27 Fujitsu Limited System and method for providing a way memoization in a processing environment
GB0603552D0 (en) * 2006-02-22 2006-04-05 Advanced Risc Mach Ltd Cache management within a data processing apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013140477A (ja) * 2012-01-04 2013-07-18 Toyota Motor Corp 情報処理装置及びメモリアクセス管理方法

Also Published As

Publication number Publication date
GB2468007A (en) 2010-08-25
US20100217937A1 (en) 2010-08-26
GB201000473D0 (en) 2010-02-24
CN101826056A (zh) 2010-09-08

Similar Documents

Publication Publication Date Title
JP2010198610A (ja) データ処理装置および方法
US6226715B1 (en) Data processing circuit with cache memory and cache management unit for arranging selected storage location in the cache memory for reuse dependent on a position of particular address relative to current address
KR100389549B1 (ko) 템포럴 및 넌템포럴 명령어에 대한 공유 캐시 구조
KR101379596B1 (ko) Tlb 프리페칭
US8041897B2 (en) Cache management within a data processing apparatus
US7360015B2 (en) Preventing storage of streaming accesses in a cache
US9582282B2 (en) Prefetching using a prefetch lookup table identifying previously accessed cache lines
JPH0364893B2 (ja)
US8583874B2 (en) Method and apparatus for caching prefetched data
JP2005528695A (ja) キャッシュ置換ポリシーの簡略化した実施態様を用いたマルチスレッド化キャッシュのための方法および装置
US7386679B2 (en) System, method and storage medium for memory management
US20200250098A1 (en) Cache access detection and prediction
KR102478766B1 (ko) 디스크립터 링 관리
JP2017072982A (ja) 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
KR100987996B1 (ko) 메모리 액세스 제어 장치 및 메모리 액세스 제어 방법
US6959363B2 (en) Cache memory operation
US7356650B1 (en) Cache apparatus and method for accesses lacking locality
CN111406253A (zh) 基于存储器结构的一致性目录缓存
KR101689094B1 (ko) 스티키 제거 엔진을 구비한 시스템 캐시
US11036639B2 (en) Cache apparatus and method that facilitates a reduction in energy consumption through use of first and second data arrays
JP2004151962A (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
JP2017072981A (ja) 情報処理装置、キャッシュ制御方法およびキャッシュ制御プログラム
KR20210097345A (ko) 캐시 메모리 장치, 이를 포함하는 시스템 및 캐시 메모리 장치의 동작 방법
JP6451475B2 (ja) 演算処理装置、情報処理装置および演算処理装置の制御方法
US6874067B2 (en) Eliminating unnecessary data pre-fetches in a multiprocessor computer system